<?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>238128</bug_id>
          
          <creation_ts>2022-03-20 11:12:00 -0700</creation_ts>
          <short_desc>[IFC][Integration] Rename InlineIterator::Line to LineBox</short_desc>
          <delta_ts>2022-03-20 20:41:26 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="alan">zalan</reporter>
          <assigned_to name="alan">zalan</assigned_to>
          <cc>annulen</cc>
    
    <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fmalita</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kangil.han</cc>
    
    <cc>koivisto</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mifenton</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>pdr</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>schenney</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1853082</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2022-03-20 11:12:00 -0700</bug_when>
    <thetext>ssia</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1853083</commentid>
    <comment_count>1</comment_count>
      <attachid>455201</attachid>
    <who name="alan">zalan</who>
    <bug_when>2022-03-20 11:26:18 -0700</bug_when>
    <thetext>Created attachment 455201
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1853089</commentid>
    <comment_count>2</comment_count>
      <attachid>455205</attachid>
    <who name="alan">zalan</who>
    <bug_when>2022-03-20 15:03:23 -0700</bug_when>
    <thetext>Created attachment 455205
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1853091</commentid>
    <comment_count>3</comment_count>
      <attachid>455207</attachid>
    <who name="alan">zalan</who>
    <bug_when>2022-03-20 16:17:04 -0700</bug_when>
    <thetext>Created attachment 455207
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1853098</commentid>
    <comment_count>4</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-03-20 18:00:18 -0700</bug_when>
    <thetext>Committed r291548 (248654@main): &lt;https://commits.webkit.org/248654@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 455207.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1853099</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-03-20 18:01:18 -0700</bug_when>
    <thetext>&lt;rdar://problem/90545081&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>455201</attachid>
            <date>2022-03-20 11:26:18 -0700</date>
            <delta_ts>2022-03-20 15:03:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238128-20220320112616.patch</filename>
            <type>text/plain</type>
            <size>139095</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxNTM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTRkYmE4OWE2YmFkMDNk
ZmNhODkwYTI4NTcxNzliZDE2Yzc1YzIwMC4uMjRjZGY2ZmRkZTI0ODM2ZjdiYjQ5ZWRjY2FlODE2
NGEyNzQyYjNiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzMiBAQAorMjAyMi0wMy0yMCAgQWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0lGQ11bSW50ZWdyYXRpb25d
IFJlbmFtZSBJbmxpbmVJdGVyYXRvcjo6TGluZSB0byBMaW5lQm94CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzgxMjgKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGRvbS9Qb3NpdGlvbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpQb3NpdGlvbjo6dXBzdHJlYW0gY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6UG9zaXRpb246OmRvd25zdHJlYW0gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UG9zaXRp
b246OnJlbmRlcnNJbkRpZmZlcmVudFBvc2l0aW9uIGNvbnN0KToKKyAgICAgICAgKiBlZGl0aW5n
L1JlbmRlcmVkUG9zaXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcmVkUG9zaXRpb246
OmxpbmVCb3ggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyZWRQb3NpdGlvbjo6bGlu
ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogZWRpdGluZy9WaXNpYmxlUG9zaXRpb24uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6VmlzaWJsZVBvc2l0aW9uOjpsZWZ0VmlzdWFsbHlEaXN0aW5j
dENhbmRpZGF0ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpWaXNpYmxlUG9zaXRpb246OnJp
Z2h0VmlzdWFsbHlEaXN0aW5jdENhbmRpZGF0ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpW
aXNpYmxlUG9zaXRpb246OmFic29sdXRlU2VsZWN0aW9uQm91bmRzRm9yTGluZSBjb25zdCk6Cisg
ICAgICAgICogZWRpdGluZy9WaXNpYmxlVW5pdHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c3Rh
cnRUZXh0T3JMaW5lQnJlYWtCb3gpOgorICAgICAgICAoV2ViQ29yZTo6ZW5kVGV4dE9yTGluZUJy
ZWFrQm94KToKKyAgICAgICAgKFdlYkNvcmU6OmxvZ2ljYWxseVByZXZpb3VzQm94KToKKyAgICAg
ICAgKFdlYkNvcmU6OmxvZ2ljYWxseU5leHRCb3gpOgorICAgICAgICAoV2ViQ29yZTo6c3RhcnRQ
b3NpdGlvbkZvckxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6ZW5kUG9zaXRpb25Gb3JMaW5lKToK
KyAgICAgICAgKFdlYkNvcmU6OmFic29sdXRlTGluZURpcmVjdGlvblBvaW50VG9Mb2NhbFBvaW50
SW5CbG9jayk6CisgICAgICAgIChXZWJDb3JlOjpwcmV2aW91c0xpbmVQb3NpdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpuZXh0TGluZVBvc2l0aW9uKToKKyAgICAgICAgKiBodG1sL0hUTUxUZXh0
Rm9ybUNvbnRyb2xFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUZXh0Rm9ybUNv
bnRyb2xFbGVtZW50Ojp2YWx1ZVdpdGhIYXJkTGluZUJyZWFrcyBjb25zdCk6CisgICAgICAgICog
bGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yQm94LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OklubGluZUl0ZXJhdG9yOjpCb3g6OmxpbmVCb3ggY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5saW5lSXRlcmF0b3I6OkJveDo6c3R5bGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
SW5saW5lSXRlcmF0b3I6OkJveDo6bGluZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogbGF5
b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yQm94Lmg6CisgICAgICAgICogbGF5b3V0L2lu
dGVncmF0aW9uL0lubGluZUl0ZXJhdG9yTGluZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbmxp
bmVJdGVyYXRvcjo6TGluZUJveEl0ZXJhdG9yOjpMaW5lQm94SXRlcmF0b3IpOgorICAgICAgICAo
V2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OkxpbmVCb3hJdGVyYXRvcjo6YXRFbmQgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OkxpbmVCb3hJdGVyYXRvcjo6dHJhdmVy
c2VOZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpMaW5lQm94SXRlcmF0
b3I6OnRyYXZlcnNlUHJldmlvdXMpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6
OkxpbmVCb3hJdGVyYXRvcjo6b3BlcmF0b3I9PSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bmxpbmVJdGVyYXRvcjo6Zmlyc3RMaW5lQm94Rm9yKToKKyAgICAgICAgKFdlYkNvcmU6OklubGlu
ZUl0ZXJhdG9yOjpsYXN0TGluZUJveEZvcik6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVy
YXRvcjo6TGluZUJveDo6bmV4dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVy
YXRvcjo6TGluZUJveDo6cHJldmlvdXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5l
SXRlcmF0b3I6OkxpbmVCb3g6OmZpcnN0TGVhZkJveCBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbmxpbmVJdGVyYXRvcjo6TGluZUJveDo6bGFzdExlYWZCb3ggY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OmNsb3Nlc3RCb3hGb3JIb3Jpem9udGFsUG9zaXRpb24p
OgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OkxpbmVJdGVyYXRvcjo6TGluZUl0
ZXJhdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpMaW5l
SXRlcmF0b3I6OmF0RW5kIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklubGlu
ZUl0ZXJhdG9yOjpMaW5lSXRlcmF0b3I6OnRyYXZlcnNlTmV4dCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6TGluZUl0ZXJhdG9yOjp0cmF2ZXJzZVByZXZpb3Vz
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpMaW5lSXRlcmF0
b3I6Om9wZXJhdG9yPT0gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5saW5l
SXRlcmF0b3I6OmZpcnN0TGluZUZvcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbmxp
bmVJdGVyYXRvcjo6bGFzdExpbmVGb3IpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5s
aW5lSXRlcmF0b3I6OkxpbmU6Om5leHQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6SW5saW5lSXRlcmF0b3I6OkxpbmU6OnByZXZpb3VzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpMaW5lOjpmaXJzdExlYWZCb3ggY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OkxpbmU6Omxhc3RMZWFm
Qm94IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBsYXlvdXQvaW50ZWdyYXRpb24vSW5saW5l
SXRlcmF0b3JMaW5lLmg6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6TGluZUJv
eDo6aGVpZ2h0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpMaW5l
Qm94SXRlcmF0b3I6OkxpbmVCb3hJdGVyYXRvcik6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJ
dGVyYXRvcjo6TGluZUJveEl0ZXJhdG9yOjpvcGVyYXRvcisrKToKKyAgICAgICAgKFdlYkNvcmU6
OklubGluZUl0ZXJhdG9yOjpMaW5lQm94SXRlcmF0b3I6Om9wZXJhdG9yIT0gY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OkxpbmVCb3hJdGVyYXRvcjo6b3BlcmF0b3I9
PSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6TGluZUJveEl0ZXJh
dG9yOjpvcGVyYXRvciogY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6
OkxpbmVCb3hJdGVyYXRvcjo6b3BlcmF0b3ItPiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bmxpbmVJdGVyYXRvcjo6cHJldmlvdXNMaW5lQm94Q29udGVudEJvdHRvbU9yQm9yZGVyQW5kUGFk
ZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6Y29udGVudFN0YXJ0SW5C
bG9ja0RpcmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6TGluZUJv
eDo6TGluZUJveCk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6TGluZUJveDo6
Y29udGVudExvZ2ljYWxUb3AgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0
b3I6OkxpbmVCb3g6OmNvbnRlbnRMb2dpY2FsQm90dG9tIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OklubGluZUl0ZXJhdG9yOjpMaW5lQm94Ojpjb250ZW50TG9naWNhbFRvcEFkanVzdGVkRm9y
UHJlY2VkaW5nTGluZUJveCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRv
cjo6TGluZUJveDo6Y29udGVudExvZ2ljYWxCb3R0b21BZGp1c3RlZEZvckZvbGxvd2luZ0xpbmVC
b3ggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OkxpbmVCb3g6OnRv
cCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6TGluZUJveDo6Ym90
dG9tIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpMaW5lQm94Ojpj
b250ZW50TG9naWNhbExlZnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0
b3I6OkxpbmVCb3g6OmNvbnRlbnRMb2dpY2FsUmlnaHQgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5saW5lSXRlcmF0b3I6OkxpbmVCb3g6OmNvbnRlbnRMb2dpY2FsV2lkdGggY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OkxpbmVCb3g6OmlzSG9yaXpvbnRhbCBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6TGluZUJveDo6YmFzZWxp
bmVUeXBlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpMaW5lQm94
Ojpjb250YWluaW5nQmxvY2sgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0
b3I6OkxpbmVCb3g6OmNvbnRhaW5pbmdGcmFnbWVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbmxpbmVJdGVyYXRvcjo6TGluZUJveDo6aXNGaXJzdEFmdGVyUGFnZUJyZWFrIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpMaW5lQm94Ojppc0ZpcnN0IGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpMaW5lOjpsaW5lQm94SGVpZ2h0
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpMaW5l
SXRlcmF0b3I6OkxpbmVJdGVyYXRvcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbmxp
bmVJdGVyYXRvcjo6TGluZUl0ZXJhdG9yOjpvcGVyYXRvcisrKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpMaW5lSXRlcmF0b3I6Om9wZXJhdG9yIGJvb2wgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OkxpbmVJdGVy
YXRvcjo6b3BlcmF0b3IhPSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbmxp
bmVJdGVyYXRvcjo6TGluZUl0ZXJhdG9yOjpvcGVyYXRvcj09IGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpMaW5lSXRlcmF0b3I6Om9wZXJhdG9yKiBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6TGluZUl0
ZXJhdG9yOjpvcGVyYXRvci0+IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Oklu
bGluZUl0ZXJhdG9yOjpwcmV2aW91c0xpbmVDb250ZW50Qm90dG9tT3JCb3JkZXJBbmRQYWRkaW5n
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpMaW5lOjpMaW5l
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpMaW5lOjpjb250
ZW50TG9naWNhbFRvcCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJ
dGVyYXRvcjo6TGluZTo6Y29udGVudExvZ2ljYWxCb3R0b20gY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OkxpbmU6OmNvbnRlbnRMb2dpY2FsVG9wQWRq
dXN0ZWRGb3JQcmVjZWRpbmdMaW5lIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OklubGluZUl0ZXJhdG9yOjpMaW5lOjpjb250ZW50TG9naWNhbEJvdHRvbUFkanVzdGVkRm9yRm9s
bG93aW5nTGluZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVy
YXRvcjo6TGluZTo6bGluZUJveFRvcCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpJbmxpbmVJdGVyYXRvcjo6TGluZTo6bGluZUJveEJvdHRvbSBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6TGluZTo6Y29udGVudExvZ2ljYWxMZWZ0
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpMaW5l
Ojpjb250ZW50TG9naWNhbFJpZ2h0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OklubGluZUl0ZXJhdG9yOjpMaW5lOjpjb250ZW50TG9naWNhbFdpZHRoIGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpMaW5lOjppc0hvcml6b250YWwg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OkxpbmU6
OmJhc2VsaW5lVHlwZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJ
dGVyYXRvcjo6TGluZTo6Y29udGFpbmluZ0Jsb2NrIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpMaW5lOjpjb250YWluaW5nRnJhZ21lbnQgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OkxpbmU6OmlzRmly
c3RBZnRlclBhZ2VCcmVhayBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbmxp
bmVJdGVyYXRvcjo6TGluZTo6aXNGaXJzdCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogbGF5
b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yTGluZUxlZ2FjeVBhdGguaDoKKyAgICAgICAg
KFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpMaW5lQm94SXRlcmF0b3JMZWdhY3lQYXRoOjpMaW5l
Qm94SXRlcmF0b3JMZWdhY3lQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9y
OjpMaW5lQm94SXRlcmF0b3JMZWdhY3lQYXRoOjpjb250ZW50TG9naWNhbFRvcEFkanVzdGVkRm9y
UHJlY2VkaW5nTGluZUJveCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRv
cjo6TGluZUJveEl0ZXJhdG9yTGVnYWN5UGF0aDo6Y29udGVudExvZ2ljYWxCb3R0b21BZGp1c3Rl
ZEZvckZvbGxvd2luZ0xpbmVCb3ggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRl
cmF0b3I6OkxpbmVCb3hJdGVyYXRvckxlZ2FjeVBhdGg6OnRvcCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6TGluZUJveEl0ZXJhdG9yTGVnYWN5UGF0aDo6Ym90dG9t
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpMaW5lQm94SXRlcmF0
b3JMZWdhY3lQYXRoOjpvcGVyYXRvcj09IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklubGlu
ZUl0ZXJhdG9yOjpMaW5lSXRlcmF0b3JMZWdhY3lQYXRoOjpMaW5lSXRlcmF0b3JMZWdhY3lQYXRo
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpMaW5lSXRlcmF0
b3JMZWdhY3lQYXRoOjpjb250ZW50TG9naWNhbFRvcCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6TGluZUl0ZXJhdG9yTGVnYWN5UGF0aDo6Y29udGVu
dExvZ2ljYWxCb3R0b20gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5saW5l
SXRlcmF0b3I6OkxpbmVJdGVyYXRvckxlZ2FjeVBhdGg6OmNvbnRlbnRMb2dpY2FsVG9wQWRqdXN0
ZWRGb3JQcmVjZWRpbmdMaW5lIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Oklu
bGluZUl0ZXJhdG9yOjpMaW5lSXRlcmF0b3JMZWdhY3lQYXRoOjpjb250ZW50TG9naWNhbEJvdHRv
bUFkanVzdGVkRm9yRm9sbG93aW5nTGluZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpJbmxpbmVJdGVyYXRvcjo6TGluZUl0ZXJhdG9yTGVnYWN5UGF0aDo6bGluZUJveFRvcCBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6TGluZUl0
ZXJhdG9yTGVnYWN5UGF0aDo6bGluZUJveEJvdHRvbSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6TGluZUl0ZXJhdG9yTGVnYWN5UGF0aDo6Y29udGVu
dExvZ2ljYWxMZWZ0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0
ZXJhdG9yOjpMaW5lSXRlcmF0b3JMZWdhY3lQYXRoOjpjb250ZW50TG9naWNhbFJpZ2h0IGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpMaW5lSXRlcmF0
b3JMZWdhY3lQYXRoOjppc0hvcml6b250YWwgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6SW5saW5lSXRlcmF0b3I6OkxpbmVJdGVyYXRvckxlZ2FjeVBhdGg6OmJhc2VsaW5lVHlw
ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6TGlu
ZUl0ZXJhdG9yTGVnYWN5UGF0aDo6Y29udGFpbmluZ0Jsb2NrIGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpMaW5lSXRlcmF0b3JMZWdhY3lQYXRoOjpj
b250YWluaW5nRnJhZ21lbnQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5s
aW5lSXRlcmF0b3I6OkxpbmVJdGVyYXRvckxlZ2FjeVBhdGg6OmlzRmlyc3RBZnRlclBhZ2VCcmVh
ayBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6TGlu
ZUl0ZXJhdG9yTGVnYWN5UGF0aDo6dHJhdmVyc2VOZXh0KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OklubGluZUl0ZXJhdG9yOjpMaW5lSXRlcmF0b3JMZWdhY3lQYXRoOjp0cmF2ZXJzZVBy
ZXZpb3VzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpMaW5l
SXRlcmF0b3JMZWdhY3lQYXRoOjpvcGVyYXRvcj09IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpMaW5lSXRlcmF0b3JMZWdhY3lQYXRoOjphdEVuZCBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6TGluZUl0
ZXJhdG9yTGVnYWN5UGF0aDo6Zmlyc3RMZWFmQm94IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpMaW5lSXRlcmF0b3JMZWdhY3lQYXRoOjpsYXN0TGVh
ZkJveCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogbGF5b3V0L2ludGVncmF0aW9uL0lubGlu
ZUl0ZXJhdG9yTGluZU1vZGVyblBhdGguaDoKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJh
dG9yOjpMaW5lQm94SXRlcmF0b3JNb2Rlcm5QYXRoOjpMaW5lQm94SXRlcmF0b3JNb2Rlcm5QYXRo
KToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpMaW5lQm94SXRlcmF0b3JNb2Rl
cm5QYXRoOjp0b3AgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6Okxp
bmVCb3hJdGVyYXRvck1vZGVyblBhdGg6OmJvdHRvbSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbmxpbmVJdGVyYXRvcjo6TGluZUJveEl0ZXJhdG9yTW9kZXJuUGF0aDo6Y29udGVudExvZ2lj
YWxUb3BBZGp1c3RlZEZvclByZWNlZGluZ0xpbmVCb3ggY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5saW5lSXRlcmF0b3I6OkxpbmVCb3hJdGVyYXRvck1vZGVyblBhdGg6OmNvbnRlbnRMb2dp
Y2FsQm90dG9tQWRqdXN0ZWRGb3JGb2xsb3dpbmdMaW5lQm94IGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OklubGluZUl0ZXJhdG9yOjpMaW5lQm94SXRlcmF0b3JNb2Rlcm5QYXRoOjpvcGVyYXRv
cj09IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpMaW5lSXRlcmF0
b3JNb2Rlcm5QYXRoOjpMaW5lSXRlcmF0b3JNb2Rlcm5QYXRoKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpMaW5lSXRlcmF0b3JNb2Rlcm5QYXRoOjpjb250ZW50
TG9naWNhbFRvcCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVy
YXRvcjo6TGluZUl0ZXJhdG9yTW9kZXJuUGF0aDo6Y29udGVudExvZ2ljYWxCb3R0b20gY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OkxpbmVJdGVyYXRv
ck1vZGVyblBhdGg6OmxpbmVCb3hUb3AgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6SW5saW5lSXRlcmF0b3I6OkxpbmVJdGVyYXRvck1vZGVyblBhdGg6OmxpbmVCb3hCb3R0b20g
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OkxpbmVJ
dGVyYXRvck1vZGVyblBhdGg6OmNvbnRlbnRMb2dpY2FsVG9wQWRqdXN0ZWRGb3JQcmVjZWRpbmdM
aW5lIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpM
aW5lSXRlcmF0b3JNb2Rlcm5QYXRoOjpjb250ZW50TG9naWNhbEJvdHRvbUFkanVzdGVkRm9yRm9s
bG93aW5nTGluZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVy
YXRvcjo6TGluZUl0ZXJhdG9yTW9kZXJuUGF0aDo6Y29udGVudExvZ2ljYWxMZWZ0IGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpMaW5lSXRlcmF0b3JN
b2Rlcm5QYXRoOjpjb250ZW50TG9naWNhbFJpZ2h0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpMaW5lSXRlcmF0b3JNb2Rlcm5QYXRoOjppc0hvcml6
b250YWwgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6
OkxpbmVJdGVyYXRvck1vZGVyblBhdGg6OmJhc2VsaW5lVHlwZSBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6TGluZUl0ZXJhdG9yTW9kZXJuUGF0aDo6
Y29udGFpbmluZ0Jsb2NrIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklubGlu
ZUl0ZXJhdG9yOjpMaW5lSXRlcmF0b3JNb2Rlcm5QYXRoOjpjb250YWluaW5nRnJhZ21lbnQgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OkxpbmVJdGVy
YXRvck1vZGVyblBhdGg6OmlzRmlyc3RBZnRlclBhZ2VCcmVhayBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6TGluZUl0ZXJhdG9yTW9kZXJuUGF0aDo6
dHJhdmVyc2VOZXh0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9y
OjpMaW5lSXRlcmF0b3JNb2Rlcm5QYXRoOjp0cmF2ZXJzZVByZXZpb3VzKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpMaW5lSXRlcmF0b3JNb2Rlcm5QYXRoOjpv
cGVyYXRvcj09IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJh
dG9yOjpMaW5lSXRlcmF0b3JNb2Rlcm5QYXRoOjphdEVuZCBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6TGluZUl0ZXJhdG9yTW9kZXJuUGF0aDo6Zmly
c3RMZWFmQm94IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJh
dG9yOjpMaW5lSXRlcmF0b3JNb2Rlcm5QYXRoOjpsYXN0TGVhZkJveCBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6TGluZUl0ZXJhdG9yTW9kZXJuUGF0
aDo6c2V0QXRFbmQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6
OkxpbmVJdGVyYXRvck1vZGVyblBhdGg6OmxpbmVzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpMaW5lSXRlcmF0b3JNb2Rlcm5QYXRoOjpsaW5lIGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBsYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0
b3JMb2dpY2FsT3JkZXJUcmF2ZXJzYWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRl
cmF0b3I6Om1ha2VMaW5lTG9naWNhbE9yZGVyQ2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5s
aW5lSXRlcmF0b3I6OnVwZGF0ZUxpbmVMb2dpY2FsT3JkZXJDYWNoZUlmTmVlZGVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpmaXJzdExlYWZPbkxpbmVJbkxvZ2ljYWxPcmRl
cik6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6bGFzdExlYWZPbkxpbmVJbkxv
Z2ljYWxPcmRlcik6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6Zmlyc3RMZWFm
T25MaW5lSW5Mb2dpY2FsT3JkZXJXaXRoTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJ
dGVyYXRvcjo6bGFzdExlYWZPbkxpbmVJbkxvZ2ljYWxPcmRlcldpdGhOb2RlKToKKyAgICAgICAg
KiBsYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JMb2dpY2FsT3JkZXJUcmF2ZXJzYWwu
aDoKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpsZWFmQm94ZXNJbkxvZ2ljYWxP
cmRlcik6CisgICAgICAgICogbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yVGV4dEJv
eC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6VGV4dEJveDo6c2VsZWN0
aW9uUmVjdCBjb25zdCk6CisgICAgICAgICogbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVn
cmF0aW9uTGluZUxheW91dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlv
bjo6TGluZUxheW91dDo6Zmlyc3RMaW5lQm94IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Okxh
eW91dEludGVncmF0aW9uOjpMaW5lTGF5b3V0OjpsYXN0TGluZUJveCBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6TGluZUxheW91dDo6Zmlyc3RMaW5lIGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpMaW5lTGF5
b3V0OjpsYXN0TGluZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogbGF5b3V0L2ludGVncmF0
aW9uL0xheW91dEludGVncmF0aW9uTGluZUxheW91dC5oOgorICAgICAgICAqIGxheW91dC9pbnRl
Z3JhdGlvbi9MaW5lU2VsZWN0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpMaW5lU2VsZWN0aW9u
Ojpsb2dpY2FsVG9wKToKKyAgICAgICAgKFdlYkNvcmU6OkxpbmVTZWxlY3Rpb246OmxvZ2ljYWxC
b3R0b20pOgorICAgICAgICAoV2ViQ29yZTo6TGluZVNlbGVjdGlvbjo6bG9naWNhbFJlY3QpOgor
ICAgICAgICAoV2ViQ29yZTo6TGluZVNlbGVjdGlvbjo6cGh5c2ljYWxSZWN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkxpbmVTZWxlY3Rpb246OmxvZ2ljYWxUb3BBZGp1c3RlZEZvclByZWNlZGluZ0Js
b2NrKToKKyAgICAgICAgKFdlYkNvcmU6OkxpbmVTZWxlY3Rpb246OnNlbGVjdGlvblN0YXRlKToK
KyAgICAgICAgKiByZW5kZXJpbmcvQ2FyZXRSZWN0Q29tcHV0YXRpb24uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Y29tcHV0ZUNhcmV0UmVjdEZvckxpbmVQb3NpdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpjb21wdXRlQ2FyZXRSZWN0Rm9yVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpjb21wdXRl
Q2FyZXRSZWN0Rm9yTGluZUJyZWFrKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbXB1dGVDYXJldFJl
Y3RGb3JCb3gpOgorICAgICAgICAqIHJlbmRlcmluZy9JbmxpbmVCb3hQYWludGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OklubGluZUJveFBhaW50ZXI6OklubGluZUJveFBhaW50ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5saW5lQm94UGFpbnRlcjo6cGFpbnRNYXNrKToKKyAgICAgICAgKFdl
YkNvcmU6OklubGluZUJveFBhaW50ZXI6OnBhaW50RGVjb3JhdGlvbnMpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5saW5lQm94UGFpbnRlcjo6c3R5bGUgY29uc3QpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9JbmxpbmVCb3hQYWludGVyLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxv
dy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6OmFkanVzdEVuY2xvc2lu
Z1RvcEZvclByZWNlZGluZ0Jsb2NrIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJs
b2NrRmxvdzo6aW5saW5lU2VsZWN0aW9uR2Fwcyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJC
bG9ja0Zsb3c6OmNvbnRhaW5zTm9uWmVyb0JpZGlMZXZlbCBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJCbG9ja0Zsb3c6OmZpbmRDbG9zZXN0VGV4dEF0QWJzb2x1dGVQb2ludCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6OnBvc2l0aW9uRm9yUG9pbnRXaXRoSW5s
aW5lQ2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2tGbG93OjphZGRGb2N1
c1JpbmdSZWN0c0ZvcklubGluZUNoaWxkcmVuKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJFbGVtZW50OjpnZXRMZWFkaW5n
Q29ybmVyIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlcklubGluZTo6cGFpbnRPdXRsaW5lKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyUmVw
bGFjZWQ6OnBvc2l0aW9uRm9yUG9pbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHQ6OnBvc2l0aW9uRm9yUG9pbnQpOgor
ICAgICAgICAqIHJlbmRlcmluZy9UZXh0Qm94UGFpbnRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpUZXh0Qm94UGFpbnRlcjo6VGV4dEJveFBhaW50ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGV4
dEJveFBhaW50ZXI6OnBhaW50QmFja2dyb3VuZCk6CisgICAgICAgIChXZWJDb3JlOjp0ZXh0UG9z
aXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEJveFBhaW50ZXI6OmNvbXB1dGVQYWludFJl
Y3QpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHUm9vdElubGluZUJveC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdSb290SW5saW5lQm94OjpyZW9yZGVyVmFsdWVMaXN0c1RvTG9naWNh
bE9yZGVyKToKKyAgICAgICAgKiBzdHlsZS9JbmxpbmVUZXh0Qm94U3R5bGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6bWluTG9naWNhbFRvcEZvclRleHREZWNvcmF0aW9uTGluZSk6CisgICAgICAg
IChXZWJDb3JlOjptYXhMb2dpY2FsQm90dG9tRm9yVGV4dERlY29yYXRpb25MaW5lKToKKyAgICAg
ICAgKFdlYkNvcmU6OmNvbXB1dGVVbmRlcmxpbmVPZmZzZXQpOgorCiAyMDIyLTAzLTE5ICBBbGFu
IEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbSUZDXVtJbnRlZ3JhdGlvbl0g
UmVtb3ZlIHJlZHVuZGFudCBJbmxpbmVJdGVyYXRvcjo6TGluZTo6Y29udGVudExvZ2ljYWxUb3BB
ZGp1c3RlZEZvckhpdFRlc3RpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA5MDgyMWViMjFmMTNjN2M5MDRlYmE3MzFiNjUyZWJi
NDdhZmM2MDQ2Li4zNDE5OTcxYjk0Y2NiODY5MjIxYmNlNmIwMjVjN2Y1MjkzZTJiYzNmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
KysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBA
IC01NDMwLDkgKzU0MzAsOSBAQAogCQlFNEM5MUEwRTE4MDIzNDMxMDBBMTdGNkQgLyogVGV4dFBh
aW50U3R5bGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEU0QzkxQTBEMTgwMjM0MzEwMEExN0Y2RCAvKiBUZXh0UGFpbnRTdHlsZS5oICovOyB9OwogCQlF
NEM5MUExNjE4MDk5OUYxMDBBMTdGNkQgLyogUmVuZGVyVGV4dExpbmVCb3hlcy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTRDOTFBMTUxODA5OTlGMTAw
QTE3RjZEIC8qIFJlbmRlclRleHRMaW5lQm94ZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFNEQzM0YzQjI1MkFFRUNEMDA4MzdEMDUgLyogSW5s
aW5lUnVuQW5kT2Zmc2V0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBFNEQzM0YzOTI1MkFFRUNDMDA4MzdEMDUgLyogSW5saW5lUnVuQW5kT2Zmc2V0Lmgg
Ki87IH07Ci0JCUU0RDMzRjQxMjUyQzRCODMwMDgzN0QwNSAvKiBJbmxpbmVJdGVyYXRvckxpbmUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0RDMzRjNG
MjUyQzRCODIwMDgzN0QwNSAvKiBJbmxpbmVJdGVyYXRvckxpbmUuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQlFNEQzM0Y0NDI1MkM1MEUyMDA4MzdE
MDUgLyogSW5saW5lSXRlcmF0b3JMaW5lTGVnYWN5UGF0aC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTREMzNGNDMyNTJDNTBFMjAwODM3RDA1IC8qIElu
bGluZUl0ZXJhdG9yTGluZUxlZ2FjeVBhdGguaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwotCQlFNEQzM0Y0NjI1MkM1MEZDMDA4MzdEMDUgLyogSW5saW5l
SXRlcmF0b3JMaW5lTW9kZXJuUGF0aC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRTREMzNGNDUyNTJDNTBGQjAwODM3RDA1IC8qIElubGluZUl0ZXJhdG9y
TGluZU1vZGVyblBhdGguaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQlFNEQzM0Y0MTI1MkM0QjgzMDA4MzdEMDUgLyogSW5saW5lSXRlcmF0b3JMaW5l
Qm94LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNEQz
M0YzRjI1MkM0QjgyMDA4MzdEMDUgLyogSW5saW5lSXRlcmF0b3JMaW5lQm94LmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTREMzNGNDQyNTJDNTBF
MjAwODM3RDA1IC8qIElubGluZUl0ZXJhdG9yTGluZUJveExlZ2FjeVBhdGguaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0RDMzRjQzMjUyQzUwRTIwMDgz
N0QwNSAvKiBJbmxpbmVJdGVyYXRvckxpbmVCb3hMZWdhY3lQYXRoLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTREMzNGNDYyNTJDNTBGQzAwODM3
RDA1IC8qIElubGluZUl0ZXJhdG9yTGluZUJveE1vZGVyblBhdGguaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0RDMzRjQ1MjUyQzUwRkIwMDgzN0QwNSAv
KiBJbmxpbmVJdGVyYXRvckxpbmVCb3hNb2Rlcm5QYXRoLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTRENThFQjUxN0I0REJEQzAwQ0JEQ0E4IC8q
IFN0eWxlUmVzb2x2ZUZvckRvY3VtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBFNEQ1OEVCMzE3QjREQkRDMDBDQkRDQTggLyogU3R5bGVSZXNvbHZl
Rm9yRG9jdW1lbnQuaCAqLzsgfTsKIAkJRTRENThFQjkxN0I0RUQ4OTAwQ0JEQ0E4IC8qIFN0eWxl
Rm9udFNpemVGdW5jdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEU0RDU4RUI3MTdCNEVEODkwMENCRENBOCAvKiBTdHlsZUZvbnRTaXplRnVuY3Rp
b25zLmggKi87IH07CiAJCUU0RDU4RUJCMTdCOEYxMjgwMENCRENBOCAvKiBFbGVtZW50VHJhdmVy
c2FsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNEQ1
OEVCQTE3QjhGMTI4MDBDQkRDQTggLyogRWxlbWVudFRyYXZlcnNhbC5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xNzYxMywxMCArMTc2MTMsMTAg
QEAKIAkJRTRDOTFBMTUxODA5OTlGMTAwQTE3RjZEIC8qIFJlbmRlclRleHRMaW5lQm94ZXMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVyVGV4dExpbmVCb3hlcy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNEM5MUExNzE4MDk5OUZCMDBBMTdGNkQgLyog
UmVuZGVyVGV4dExpbmVCb3hlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBSZW5kZXJUZXh0TGluZUJveGVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRTREMzNGMzkyNTJBRUVDQzAwODM3RDA1IC8qIElubGluZVJ1bkFuZE9mZnNldC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbmxpbmVSdW5BbmRPZmZzZXQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRTREMzNGM0YyNTJDNEI4MjAwODM3RDA1IC8qIElubGlu
ZUl0ZXJhdG9yTGluZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbmxpbmVJ
dGVyYXRvckxpbmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTREMzNGM0YyNTJD
NEI4MjAwODM3RDA1IC8qIElubGluZUl0ZXJhdG9yTGluZUJveC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBJbmxpbmVJdGVyYXRvckxpbmVCb3guaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRTREMzNGNDIyNTJDNTBBODAwODM3RDA1IC8qIElubGluZUl0ZXJhdG9y
TGluZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbmxpbmVJdGVyYXRvckxpbmUuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlFNEQzM0Y0MzI1MkM1MEUyMDA4MzdEMDUgLyogSW5s
aW5lSXRlcmF0b3JMaW5lTGVnYWN5UGF0aC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBJbmxpbmVJdGVyYXRvckxpbmVMZWdhY3lQYXRoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCUU0RDMzRjQ1MjUyQzUwRkIwMDgzN0QwNSAvKiBJbmxpbmVJdGVyYXRvckxpbmVN
b2Rlcm5QYXRoLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElubGluZUl0ZXJh
dG9yTGluZU1vZGVyblBhdGguaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTREMzNG
NDMyNTJDNTBFMjAwODM3RDA1IC8qIElubGluZUl0ZXJhdG9yTGluZUJveExlZ2FjeVBhdGguaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5saW5lSXRlcmF0b3JMaW5lQm94TGVn
YWN5UGF0aC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFNEQzM0Y0NTI1MkM1MEZC
MDA4MzdEMDUgLyogSW5saW5lSXRlcmF0b3JMaW5lQm94TW9kZXJuUGF0aC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBJbmxpbmVJdGVyYXRvckxpbmVCb3hNb2Rlcm5QYXRoLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0RDU4RUIyMTdCNERCREMwMENCRENBOCAv
KiBTdHlsZVJlc29sdmVGb3JEb2N1bWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBTdHlsZVJlc29sdmVGb3JEb2N1bWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUU0RDU4RUIzMTdCNERCREMwMENCRENBOCAvKiBTdHlsZVJlc29sdmVGb3JE
b2N1bWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdHlsZVJlc29sdmVG
b3JEb2N1bWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNEQ1OEVCNjE3QjRF
RDg5MDBDQkRDQTggLyogU3R5bGVGb250U2l6ZUZ1bmN0aW9ucy5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdHlsZUZvbnRTaXplRnVuY3Rpb25zLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTMxNTI2LDkgKzMxNTI2LDkgQEAKIAkJCQlFNDE1RUIx
NDI3MEMzNTM3MDBFOERBMUIgLyogSW5saW5lSXRlcmF0b3JJbmxpbmVCb3guY3BwICovLAogCQkJ
CUU0MTVFQjExMjcwQzM1MTIwMEU4REExQiAvKiBJbmxpbmVJdGVyYXRvcklubGluZUJveC5oICov
LAogCQkJCUU0RDMzRjQyMjUyQzUwQTgwMDgzN0QwNSAvKiBJbmxpbmVJdGVyYXRvckxpbmUuY3Bw
ICovLAotCQkJCUU0RDMzRjNGMjUyQzRCODIwMDgzN0QwNSAvKiBJbmxpbmVJdGVyYXRvckxpbmUu
aCAqLywKLQkJCQlFNEQzM0Y0MzI1MkM1MEUyMDA4MzdEMDUgLyogSW5saW5lSXRlcmF0b3JMaW5l
TGVnYWN5UGF0aC5oICovLAotCQkJCUU0RDMzRjQ1MjUyQzUwRkIwMDgzN0QwNSAvKiBJbmxpbmVJ
dGVyYXRvckxpbmVNb2Rlcm5QYXRoLmggKi8sCisJCQkJRTREMzNGM0YyNTJDNEI4MjAwODM3RDA1
IC8qIElubGluZUl0ZXJhdG9yTGluZUJveC5oICovLAorCQkJCUU0RDMzRjQzMjUyQzUwRTIwMDgz
N0QwNSAvKiBJbmxpbmVJdGVyYXRvckxpbmVCb3hMZWdhY3lQYXRoLmggKi8sCisJCQkJRTREMzNG
NDUyNTJDNTBGQjAwODM3RDA1IC8qIElubGluZUl0ZXJhdG9yTGluZUJveE1vZGVyblBhdGguaCAq
LywKIAkJCQlFNDFBQ0MxMjI3MTczM0YzMDAzRTkxNTcgLyogSW5saW5lSXRlcmF0b3JMb2dpY2Fs
T3JkZXJUcmF2ZXJzYWwuY3BwICovLAogCQkJCUU0MUFDQzE1MjcxNzM0MDIwMDNFOTE1NyAvKiBJ
bmxpbmVJdGVyYXRvckxvZ2ljYWxPcmRlclRyYXZlcnNhbC5oICovLAogCQkJCUU0N0NFQkRFMjcw
OTkxNjQwMEI4RDhGNSAvKiBJbmxpbmVJdGVyYXRvclRleHRCb3guY3BwICovLApAQCAtMzUxMjIs
OSArMzUxMjIsOSBAQAogCQkJCUU0QTY2NENGMjUyMUQ0RTIwMDcwODFEQyAvKiBJbmxpbmVJdGVy
YXRvckJveExlZ2FjeVBhdGguaCBpbiBIZWFkZXJzICovLAogCQkJCUU0QTY2NENFMjUyMUQ0Qzkw
MDcwODFEQyAvKiBJbmxpbmVJdGVyYXRvckJveE1vZGVyblBhdGguaCBpbiBIZWFkZXJzICovLAog
CQkJCUU0MTVFQjEzMjcwQzM1MTMwMEU4REExQiAvKiBJbmxpbmVJdGVyYXRvcklubGluZUJveC5o
IGluIEhlYWRlcnMgKi8sCi0JCQkJRTREMzNGNDEyNTJDNEI4MzAwODM3RDA1IC8qIElubGluZUl0
ZXJhdG9yTGluZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJRTREMzNGNDQyNTJDNTBFMjAwODM3RDA1
IC8qIElubGluZUl0ZXJhdG9yTGluZUxlZ2FjeVBhdGguaCBpbiBIZWFkZXJzICovLAotCQkJCUU0
RDMzRjQ2MjUyQzUwRkMwMDgzN0QwNSAvKiBJbmxpbmVJdGVyYXRvckxpbmVNb2Rlcm5QYXRoLmgg
aW4gSGVhZGVycyAqLywKKwkJCQlFNEQzM0Y0MTI1MkM0QjgzMDA4MzdEMDUgLyogSW5saW5lSXRl
cmF0b3JMaW5lQm94LmggaW4gSGVhZGVycyAqLywKKwkJCQlFNEQzM0Y0NDI1MkM1MEUyMDA4MzdE
MDUgLyogSW5saW5lSXRlcmF0b3JMaW5lQm94TGVnYWN5UGF0aC5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJRTREMzNGNDYyNTJDNTBGQzAwODM3RDA1IC8qIElubGluZUl0ZXJhdG9yTGluZUJveE1vZGVy
blBhdGguaCBpbiBIZWFkZXJzICovLAogCQkJCUU0MUFDQzE2MjcxNzM0MDIwMDNFOTE1NyAvKiBJ
bmxpbmVJdGVyYXRvckxvZ2ljYWxPcmRlclRyYXZlcnNhbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
RTQ3Q0VCRTEyNzA5OTE2RDAwQjhEOEY1IC8qIElubGluZUl0ZXJhdG9yVGV4dEJveC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNkZBQUU3MTMyNkEyODE0QjAwRTA3NTAyIC8qIElubGluZUxldmVsQm94
LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlv
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uY3BwCmluZGV4IDFkMjA4NjczZjA3
MWZmNmE4YmJmMDViZjI0ZjI5ZDAyZDU0NmM2ZDguLjA0NzdhNTg0YjQ1N2QxYTczNDdiZDcwMWRm
NDBmYTE5ZWM1YmVlZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmNwcApAQCAtMzYsNyArMzYsNyBA
QAogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkhUTUxQYXJzZXJJZGlvbXMuaCIK
ICNpbmNsdWRlICJIVE1MVGFibGVFbGVtZW50LmgiCi0jaW5jbHVkZSAiSW5saW5lSXRlcmF0b3JM
aW5lLmgiCisjaW5jbHVkZSAiSW5saW5lSXRlcmF0b3JMaW5lQm94LmgiCiAjaW5jbHVkZSAiSW5s
aW5lSXRlcmF0b3JMb2dpY2FsT3JkZXJUcmF2ZXJzYWwuaCIKICNpbmNsdWRlICJJbmxpbmVJdGVy
YXRvclRleHRCb3guaCIKICNpbmNsdWRlICJJbmxpbmVSdW5BbmRPZmZzZXQuaCIKQEAgLTc2MCw3
ICs3NjAsNyBAQCBQb3NpdGlvbiBQb3NpdGlvbjo6dXBzdHJlYW0oRWRpdGluZ0JvdW5kYXJ5Q3Jv
c3NpbmdSdWxlIHJ1bGUpIGNvbnN0CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjdXJyZW50
UG9zaXRpb247CiAKICAgICAgICAgICAgICAgICBhdXRvIG5leHRCb3ggPSBJbmxpbmVJdGVyYXRv
cjo6bmV4dFRleHRCb3hJbkxvZ2ljYWxPcmRlcihib3gsIG9yZGVyQ2FjaGUpOwotICAgICAgICAg
ICAgICAgIGlmICh0ZXh0T2Zmc2V0ID09IGJveC0+ZW5kKCkgKyAxICYmIG5leHRCb3ggJiYgYm94
LT5saW5lKCkgIT0gbmV4dEJveC0+bGluZSgpKQorICAgICAgICAgICAgICAgIGlmICh0ZXh0T2Zm
c2V0ID09IGJveC0+ZW5kKCkgKyAxICYmIG5leHRCb3ggJiYgYm94LT5saW5lQm94KCkgIT0gbmV4
dEJveC0+bGluZUJveCgpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gY3VycmVudFBvc2l0
aW9uOwogCiAgICAgICAgICAgICAgICAgYm94ID0gbmV4dEJveDsKQEAgLTg2Niw3ICs4NjYsNyBA
QCBQb3NpdGlvbiBQb3NpdGlvbjo6ZG93bnN0cmVhbShFZGl0aW5nQm91bmRhcnlDcm9zc2luZ1J1
bGUgcnVsZSkgY29uc3QKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGN1cnJlbnRQb3NpdGlv
bjsKIAogICAgICAgICAgICAgICAgIGF1dG8gbmV4dEJveCA9IElubGluZUl0ZXJhdG9yOjpuZXh0
VGV4dEJveEluTG9naWNhbE9yZGVyKGJveCwgb3JkZXJDYWNoZSk7Ci0gICAgICAgICAgICAgICAg
aWYgKHRleHRPZmZzZXQgPT0gYm94LT5lbmQoKSAmJiBuZXh0Qm94ICYmIGJveC0+bGluZSgpICE9
IG5leHRCb3gtPmxpbmUoKSkKKyAgICAgICAgICAgICAgICBpZiAodGV4dE9mZnNldCA9PSBib3gt
PmVuZCgpICYmIG5leHRCb3ggJiYgYm94LT5saW5lQm94KCkgIT0gbmV4dEJveC0+bGluZUJveCgp
KQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gY3VycmVudFBvc2l0aW9uOwogCiAgICAgICAg
ICAgICAgICAgYm94ID0gbmV4dEJveDsKQEAgLTEwOTUsNyArMTA5NSw3IEBAIGJvb2wgUG9zaXRp
b246OnJlbmRlcnNJbkRpZmZlcmVudFBvc2l0aW9uKGNvbnN0IFBvc2l0aW9uJiBwb3NpdGlvbikg
Y29uc3QKICAgICBpZiAoIWJveDEgfHwgIWJveDIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAot
ICAgIGlmIChib3gxLT5saW5lKCkgIT0gYm94Mi0+bGluZSgpKQorICAgIGlmIChib3gxLT5saW5l
Qm94KCkgIT0gYm94Mi0+bGluZUJveCgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIGlm
IChuZXh0UmVuZGVyZWRFZGl0YWJsZShkZXByZWNhdGVkTm9kZSgpKSA9PSBwb3NpdGlvbi5kZXBy
ZWNhdGVkTm9kZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlbmRlcmVk
UG9zaXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVuZGVyZWRQb3NpdGlvbi5oCmlu
ZGV4IDU1NzFhNDczMmIwYTM3MjJmZmFmNThlNzM3NDc3NDQ1NDUyZmI0ZGUuLmQzNmU3ODgyODgz
ZDY2OGNjMGNiNDc4YTY0M2NjNDk2NTIzMGM1NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvUmVuZGVyZWRQb3NpdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
UmVuZGVyZWRQb3NpdGlvbi5oCkBAIC0zMiw3ICszMiw3IEBACiAKICNpbmNsdWRlICJDYXJldFJl
Y3RDb21wdXRhdGlvbi5oIgogI2luY2x1ZGUgIklubGluZUl0ZXJhdG9yQm94LmgiCi0jaW5jbHVk
ZSAiSW5saW5lSXRlcmF0b3JMaW5lLmgiCisjaW5jbHVkZSAiSW5saW5lSXRlcmF0b3JMaW5lQm94
LmgiCiAjaW5jbHVkZSAiVGV4dEFmZmluaXR5LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAg
LTUwLDcgKzUwLDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNFcXVpdmFsZW50KGNvbnN0IFJlbmRl
cmVkUG9zaXRpb24mKSBjb25zdDsKIAogICAgIGJvb2wgaXNOdWxsKCkgY29uc3QgeyByZXR1cm4g
IW1fcmVuZGVyZXI7IH0KLSAgICBJbmxpbmVJdGVyYXRvcjo6TGluZUl0ZXJhdG9yIGxpbmUoKSBj
b25zdCB7IHJldHVybiBtX2JveCA/IG1fYm94LT5saW5lKCkgOiBJbmxpbmVJdGVyYXRvcjo6TGlu
ZUl0ZXJhdG9yKCk7IH0KKyAgICBJbmxpbmVJdGVyYXRvcjo6TGluZUJveEl0ZXJhdG9yIGxpbmVC
b3goKSBjb25zdCB7IHJldHVybiBtX2JveCA/IG1fYm94LT5saW5lQm94KCkgOiBJbmxpbmVJdGVy
YXRvcjo6TGluZUJveEl0ZXJhdG9yKCk7IH0KIAogICAgIHVuc2lnbmVkIGNoYXIgYmlkaUxldmVs
T25MZWZ0KCkgY29uc3Q7CiAgICAgdW5zaWduZWQgY2hhciBiaWRpTGV2ZWxPblJpZ2h0KCkgY29u
c3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVQb3NpdGlvbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVQb3NpdGlvbi5jcHAKaW5kZXggMjYx
ODE0MjExNjFhMDQ5YjY1NGE4ZGUzYjY3NGFjOTM0NmViNDM3Mi4uMWY5NmJhMmZmM2E1MzNhYzk1
Nzg5MzQzNjRiMzM1YjJkZmU1MDIzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9WaXNpYmxlUG9zaXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJs
ZVBvc2l0aW9uLmNwcApAQCAtMzYsNyArMzYsNyBAQAogI2luY2x1ZGUgIkhUTUxIdG1sRWxlbWVu
dC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIklubGluZUl0ZXJhdG9yQm94
LmgiCi0jaW5jbHVkZSAiSW5saW5lSXRlcmF0b3JMaW5lLmgiCisjaW5jbHVkZSAiSW5saW5lSXRl
cmF0b3JMaW5lQm94LmgiCiAjaW5jbHVkZSAiSW5saW5lUnVuQW5kT2Zmc2V0LmgiCiAjaW5jbHVk
ZSAiTGluZVNlbGVjdGlvbi5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKQEAgLTE2MCw3ICsxNjAs
NyBAQCBQb3NpdGlvbiBWaXNpYmxlUG9zaXRpb246OmxlZnRWaXN1YWxseURpc3RpbmN0Q2FuZGlk
YXRlKCkgY29uc3QKICAgICAgICAgICAgICAgICBpZiAoIXByZXZpb3VzQm94KSB7CiAgICAgICAg
ICAgICAgICAgICAgIFBvc2l0aW9uIHBvc2l0aW9uT25MZWZ0ID0gcHJpbWFyeURpcmVjdGlvbiA9
PSBUZXh0RGlyZWN0aW9uOjpMVFIgPyBwcmV2aW91c1Zpc3VhbGx5RGlzdGluY3RDYW5kaWRhdGUo
bV9kZWVwUG9zaXRpb24pIDogbmV4dFZpc3VhbGx5RGlzdGluY3RDYW5kaWRhdGUobV9kZWVwUG9z
aXRpb24pOwogICAgICAgICAgICAgICAgICAgICBhdXRvIGJveE9uTGVmdCA9IHBvc2l0aW9uT25M
ZWZ0LmlubGluZUJveEFuZE9mZnNldChtX2FmZmluaXR5LCBwcmltYXJ5RGlyZWN0aW9uKS5ib3g7
Ci0gICAgICAgICAgICAgICAgICAgIGlmIChib3hPbkxlZnQgJiYgYm94T25MZWZ0LT5saW5lKCkg
PT0gYm94LT5saW5lKCkpCisgICAgICAgICAgICAgICAgICAgIGlmIChib3hPbkxlZnQgJiYgYm94
T25MZWZ0LT5saW5lQm94KCkgPT0gYm94LT5saW5lQm94KCkpCiAgICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gUG9zaXRpb24oKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHBvc2l0
aW9uT25MZWZ0OwogICAgICAgICAgICAgICAgIH0KQEAgLTE3OCw4ICsxNzgsOCBAQCBQb3NpdGlv
biBWaXNpYmxlUG9zaXRpb246OmxlZnRWaXN1YWxseURpc3RpbmN0Q2FuZGlkYXRlKCkgY29uc3QK
ICAgICAgICAgICAgIGlmIChib3gtPmRpcmVjdGlvbigpID09IHByaW1hcnlEaXJlY3Rpb24pIHsK
ICAgICAgICAgICAgICAgICBpZiAoIXByZXZpb3VzQm94KSB7CiAgICAgICAgICAgICAgICAgICAg
IGF1dG8gbG9naWNhbFN0YXJ0ID0gcHJpbWFyeURpcmVjdGlvbiA9PSBUZXh0RGlyZWN0aW9uOjpM
VFIKLSAgICAgICAgICAgICAgICAgICAgICAgID8gSW5saW5lSXRlcmF0b3I6OmZpcnN0TGVhZk9u
TGluZUluTG9naWNhbE9yZGVyV2l0aE5vZGUoYm94LT5saW5lKCksIG9yZGVyQ2FjaGUpCi0gICAg
ICAgICAgICAgICAgICAgICAgICA6IElubGluZUl0ZXJhdG9yOjpsYXN0TGVhZk9uTGluZUluTG9n
aWNhbE9yZGVyV2l0aE5vZGUoYm94LT5saW5lKCksIG9yZGVyQ2FjaGUpOworICAgICAgICAgICAg
ICAgICAgICAgICAgPyBJbmxpbmVJdGVyYXRvcjo6Zmlyc3RMZWFmT25MaW5lSW5Mb2dpY2FsT3Jk
ZXJXaXRoTm9kZShib3gtPmxpbmVCb3goKSwgb3JkZXJDYWNoZSkKKyAgICAgICAgICAgICAgICAg
ICAgICAgIDogSW5saW5lSXRlcmF0b3I6Omxhc3RMZWFmT25MaW5lSW5Mb2dpY2FsT3JkZXJXaXRo
Tm9kZShib3gtPmxpbmVCb3goKSwgb3JkZXJDYWNoZSk7CiAgICAgICAgICAgICAgICAgICAgIGlm
IChsb2dpY2FsU3RhcnQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGJveCA9IGxvZ2ljYWxT
dGFydDsKICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlcmVyID0gJmJveC0+cmVuZGVyZXIo
KTsKQEAgLTMyNiw3ICszMjYsNyBAQCBQb3NpdGlvbiBWaXNpYmxlUG9zaXRpb246OnJpZ2h0Vmlz
dWFsbHlEaXN0aW5jdENhbmRpZGF0ZSgpIGNvbnN0CiAgICAgICAgICAgICAgICAgaWYgKCFuZXh0
Qm94KSB7CiAgICAgICAgICAgICAgICAgICAgIFBvc2l0aW9uIHBvc2l0aW9uT25SaWdodCA9IHBy
aW1hcnlEaXJlY3Rpb24gPT0gVGV4dERpcmVjdGlvbjo6TFRSID8gbmV4dFZpc3VhbGx5RGlzdGlu
Y3RDYW5kaWRhdGUobV9kZWVwUG9zaXRpb24pIDogcHJldmlvdXNWaXN1YWxseURpc3RpbmN0Q2Fu
ZGlkYXRlKG1fZGVlcFBvc2l0aW9uKTsKICAgICAgICAgICAgICAgICAgICAgYXV0byBib3hPblJp
Z2h0ID0gcG9zaXRpb25PblJpZ2h0LmlubGluZUJveEFuZE9mZnNldChtX2FmZmluaXR5LCBwcmlt
YXJ5RGlyZWN0aW9uKS5ib3g7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChib3hPblJpZ2h0ICYm
IGJveE9uUmlnaHQtPmxpbmUoKSA9PSBib3gtPmxpbmUoKSkKKyAgICAgICAgICAgICAgICAgICAg
aWYgKGJveE9uUmlnaHQgJiYgYm94T25SaWdodC0+bGluZUJveCgpID09IGJveC0+bGluZUJveCgp
KQogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFBvc2l0aW9uKCk7CiAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBwb3NpdGlvbk9uUmlnaHQ7CiAgICAgICAgICAgICAgICAgfQpAQCAt
MzQ0LDggKzM0NCw4IEBAIFBvc2l0aW9uIFZpc2libGVQb3NpdGlvbjo6cmlnaHRWaXN1YWxseURp
c3RpbmN0Q2FuZGlkYXRlKCkgY29uc3QKICAgICAgICAgICAgIGlmIChib3gtPmRpcmVjdGlvbigp
ID09IHByaW1hcnlEaXJlY3Rpb24pIHsKICAgICAgICAgICAgICAgICBpZiAoIW5leHRCb3gpIHsK
ICAgICAgICAgICAgICAgICAgICAgYXV0byBsb2dpY2FsRW5kID0gcHJpbWFyeURpcmVjdGlvbiA9
PSBUZXh0RGlyZWN0aW9uOjpMVFIKLSAgICAgICAgICAgICAgICAgICAgICAgID8gSW5saW5lSXRl
cmF0b3I6Omxhc3RMZWFmT25MaW5lSW5Mb2dpY2FsT3JkZXJXaXRoTm9kZShib3gtPmxpbmUoKSwg
b3JkZXJDYWNoZSkKLSAgICAgICAgICAgICAgICAgICAgICAgIDogSW5saW5lSXRlcmF0b3I6OmZp
cnN0TGVhZk9uTGluZUluTG9naWNhbE9yZGVyV2l0aE5vZGUoYm94LT5saW5lKCksIG9yZGVyQ2Fj
aGUpOworICAgICAgICAgICAgICAgICAgICAgICAgPyBJbmxpbmVJdGVyYXRvcjo6bGFzdExlYWZP
bkxpbmVJbkxvZ2ljYWxPcmRlcldpdGhOb2RlKGJveC0+bGluZUJveCgpLCBvcmRlckNhY2hlKQor
ICAgICAgICAgICAgICAgICAgICAgICAgOiBJbmxpbmVJdGVyYXRvcjo6Zmlyc3RMZWFmT25MaW5l
SW5Mb2dpY2FsT3JkZXJXaXRoTm9kZShib3gtPmxpbmVCb3goKSwgb3JkZXJDYWNoZSk7CiAKICAg
ICAgICAgICAgICAgICAgICAgaWYgKGxvZ2ljYWxFbmQpIHsKICAgICAgICAgICAgICAgICAgICAg
ICAgIGJveCA9IGxvZ2ljYWxFbmQ7CkBAIC02NjksNyArNjY5LDcgQEAgRmxvYXRSZWN0IFZpc2li
bGVQb3NpdGlvbjo6YWJzb2x1dGVTZWxlY3Rpb25Cb3VuZHNGb3JMaW5lKCkgY29uc3QKICAgICBp
ZiAoIWJveCkKICAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgIGF1dG8gbGluZSA9IGJveC0+bGlu
ZSgpOworICAgIGF1dG8gbGluZSA9IGJveC0+bGluZUJveCgpOwogICAgIHJldHVybiBsaW5lLT5j
b250YWluaW5nQmxvY2soKS5sb2NhbFRvQWJzb2x1dGVRdWFkKEZsb2F0UmVjdCB7IExpbmVTZWxl
Y3Rpb246OnBoeXNpY2FsUmVjdCgqbGluZSkgfSkuYm91bmRpbmdCb3goKTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlVW5pdHMuY3BwIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9WaXNpYmxlVW5pdHMuY3BwCmluZGV4IDRmNTFmYjUyODNjMzA5YzlmN2E0
ZDlmNGMyZjRmNWNjMzdkNTczMGEuLjQ1MThhZDQzOTMxYzg1MjViOGVmZjIwYzQwOWJkMjYzYzgw
NzJlZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVVuaXRzLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVVbml0cy5jcHAKQEAgLTMyLDcg
KzMyLDcgQEAKICNpbmNsdWRlICJIVE1MRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5o
IgogI2luY2x1ZGUgIklubGluZUl0ZXJhdG9yQm94LmgiCi0jaW5jbHVkZSAiSW5saW5lSXRlcmF0
b3JMaW5lLmgiCisjaW5jbHVkZSAiSW5saW5lSXRlcmF0b3JMaW5lQm94LmgiCiAjaW5jbHVkZSAi
SW5saW5lSXRlcmF0b3JMb2dpY2FsT3JkZXJUcmF2ZXJzYWwuaCIKICNpbmNsdWRlICJJbmxpbmVS
dW5BbmRPZmZzZXQuaCIKICNpbmNsdWRlICJOb2RlVHJhdmVyc2FsLmgiCkBAIC0xNTAsMTcgKzE1
MCwxNyBAQCBzdGF0aWMgSW5saW5lSXRlcmF0b3I6OkxlYWZCb3hJdGVyYXRvciBuZXh0VGV4dE9y
TGluZUJyZWFrQm94KElubGluZUl0ZXJhdG9yOjpMZQogICAgIHJldHVybiB7IH07CiB9CiAKLXN0
YXRpYyBJbmxpbmVJdGVyYXRvcjo6TGVhZkJveEl0ZXJhdG9yIHN0YXJ0VGV4dE9yTGluZUJyZWFr
Qm94KElubGluZUl0ZXJhdG9yOjpMaW5lSXRlcmF0b3IgbGluZSwgSW5saW5lSXRlcmF0b3I6Okxp
bmVMb2dpY2FsT3JkZXJDYWNoZSYgb3JkZXJDYWNoZSkKK3N0YXRpYyBJbmxpbmVJdGVyYXRvcjo6
TGVhZkJveEl0ZXJhdG9yIHN0YXJ0VGV4dE9yTGluZUJyZWFrQm94KElubGluZUl0ZXJhdG9yOjpM
aW5lQm94SXRlcmF0b3IgbGluZUJveCwgSW5saW5lSXRlcmF0b3I6OkxpbmVMb2dpY2FsT3JkZXJD
YWNoZSYgb3JkZXJDYWNoZSkKIHsKLSAgICBhdXRvIGJveCA9IElubGluZUl0ZXJhdG9yOjpmaXJz
dExlYWZPbkxpbmVJbkxvZ2ljYWxPcmRlcihsaW5lLCBvcmRlckNhY2hlKTsKKyAgICBhdXRvIGJv
eCA9IElubGluZUl0ZXJhdG9yOjpmaXJzdExlYWZPbkxpbmVJbkxvZ2ljYWxPcmRlcihsaW5lQm94
LCBvcmRlckNhY2hlKTsKICAgICBpZiAoaXNUZXh0T3JMaW5lQnJlYWtCb3goYm94KSkKICAgICAg
ICAgcmV0dXJuIGJveDsKICAgICByZXR1cm4gbmV4dFRleHRPckxpbmVCcmVha0JveChib3gsIG9y
ZGVyQ2FjaGUpOwogfQogCi1zdGF0aWMgSW5saW5lSXRlcmF0b3I6OkxlYWZCb3hJdGVyYXRvciBl
bmRUZXh0T3JMaW5lQnJlYWtCb3goSW5saW5lSXRlcmF0b3I6OkxpbmVJdGVyYXRvciBsaW5lLCBJ
bmxpbmVJdGVyYXRvcjo6TGluZUxvZ2ljYWxPcmRlckNhY2hlJiBvcmRlckNhY2hlKQorc3RhdGlj
IElubGluZUl0ZXJhdG9yOjpMZWFmQm94SXRlcmF0b3IgZW5kVGV4dE9yTGluZUJyZWFrQm94KElu
bGluZUl0ZXJhdG9yOjpMaW5lQm94SXRlcmF0b3IgbGluZUJveCwgSW5saW5lSXRlcmF0b3I6Okxp
bmVMb2dpY2FsT3JkZXJDYWNoZSYgb3JkZXJDYWNoZSkKIHsKLSAgICBhdXRvIGJveCA9IElubGlu
ZUl0ZXJhdG9yOjpsYXN0TGVhZk9uTGluZUluTG9naWNhbE9yZGVyKGxpbmUsIG9yZGVyQ2FjaGUp
OworICAgIGF1dG8gYm94ID0gSW5saW5lSXRlcmF0b3I6Omxhc3RMZWFmT25MaW5lSW5Mb2dpY2Fs
T3JkZXIobGluZUJveCwgb3JkZXJDYWNoZSk7CiAgICAgaWYgKGlzVGV4dE9yTGluZUJyZWFrQm94
KGJveCkpCiAgICAgICAgIHJldHVybiBib3g7CiAgICAgcmV0dXJuIHByZXZpb3VzVGV4dE9yTGlu
ZUJyZWFrQm94KGJveCwgb3JkZXJDYWNoZSk7CkBAIC0xNzEsOSArMTcxLDkgQEAgc3RhdGljIGNv
bnN0IElubGluZUl0ZXJhdG9yOjpMZWFmQm94SXRlcmF0b3IgbG9naWNhbGx5UHJldmlvdXNCb3go
Y29uc3QgVmlzaWJsZVAKICAgICBpZiAoYXV0byBwcmV2aW91c0JveCA9IHByZXZpb3VzVGV4dE9y
TGluZUJyZWFrQm94KHN0YXJ0Qm94LCBvcmRlckNhY2hlKSkKICAgICAgICAgcmV0dXJuIHByZXZp
b3VzQm94OwogCi0gICAgaWYgKGF1dG8gcHJldmlvdXNMaW5lID0gc3RhcnRCb3gtPmxpbmUoKS0+
cHJldmlvdXMoKSkgeworICAgIGlmIChhdXRvIHByZXZpb3VzTGluZUJveCA9IHN0YXJ0Qm94LT5s
aW5lQm94KCktPnByZXZpb3VzKCkpIHsKICAgICAgICAgLy8gRklYTUU6IFdoeSBpc24ndCBwcmV2
aW91c0JveEluRGlmZmVyZW50TGluZSBzZXQgaGVyZT8KLSAgICAgICAgaWYgKGF1dG8gcHJldmlv
dXNCb3ggPSBlbmRUZXh0T3JMaW5lQnJlYWtCb3gocHJldmlvdXNMaW5lLCBvcmRlckNhY2hlKSkK
KyAgICAgICAgaWYgKGF1dG8gcHJldmlvdXNCb3ggPSBlbmRUZXh0T3JMaW5lQnJlYWtCb3gocHJl
dmlvdXNMaW5lQm94LCBvcmRlckNhY2hlKSkKICAgICAgICAgICAgIHJldHVybiBwcmV2aW91c0Jv
eDsKICAgICB9CiAKQEAgLTE4NywxOCArMTg3LDE4IEBAIHN0YXRpYyBjb25zdCBJbmxpbmVJdGVy
YXRvcjo6TGVhZkJveEl0ZXJhdG9yIGxvZ2ljYWxseVByZXZpb3VzQm94KGNvbnN0IFZpc2libGVQ
CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBSZW5kZXJlZFBvc2l0aW9uIHJlbmRlcmVk
UG9zaXRpb24ocG9zaXRpb24sIEFmZmluaXR5OjpEb3duc3RyZWFtKTsKLSAgICAgICAgYXV0byBw
cmV2aW91c0xpbmUgPSByZW5kZXJlZFBvc2l0aW9uLmxpbmUoKTsKLSAgICAgICAgaWYgKCFwcmV2
aW91c0xpbmUpCisgICAgICAgIGF1dG8gcHJldmlvdXNMaW5lQm94ID0gcmVuZGVyZWRQb3NpdGlv
bi5saW5lQm94KCk7CisgICAgICAgIGlmICghcHJldmlvdXNMaW5lQm94KQogICAgICAgICAgICAg
YnJlYWs7CiAKLSAgICAgICAgaWYgKHByZXZpb3VzTGluZSAhPSBzdGFydEJveC0+bGluZSgpKSB7
Ci0gICAgICAgICAgICBpZiAoYXV0byBwcmV2aW91c0JveCA9IGVuZFRleHRPckxpbmVCcmVha0Jv
eChwcmV2aW91c0xpbmUsIG9yZGVyQ2FjaGUpKSB7CisgICAgICAgIGlmIChwcmV2aW91c0xpbmVC
b3ggIT0gc3RhcnRCb3gtPmxpbmVCb3goKSkgeworICAgICAgICAgICAgaWYgKGF1dG8gcHJldmlv
dXNCb3ggPSBlbmRUZXh0T3JMaW5lQnJlYWtCb3gocHJldmlvdXNMaW5lQm94LCBvcmRlckNhY2hl
KSkgewogICAgICAgICAgICAgICAgIHByZXZpb3VzQm94SW5EaWZmZXJlbnRMaW5lID0gdHJ1ZTsK
ICAgICAgICAgICAgICAgICByZXR1cm4gcHJldmlvdXNCb3g7CiAgICAgICAgICAgICB9CiAgICAg
ICAgIH0KIAotICAgICAgICBzdGFydEJveCA9IElubGluZUl0ZXJhdG9yOjpmaXJzdExlYWZPbkxp
bmVJbkxvZ2ljYWxPcmRlcihwcmV2aW91c0xpbmUsIG9yZGVyQ2FjaGUpOworICAgICAgICBzdGFy
dEJveCA9IElubGluZUl0ZXJhdG9yOjpmaXJzdExlYWZPbkxpbmVJbkxvZ2ljYWxPcmRlcihwcmV2
aW91c0xpbmVCb3gsIG9yZGVyQ2FjaGUpOwogICAgIH0KICAgICByZXR1cm4geyB9OwogfQpAQCAt
MjA5LDkgKzIwOSw5IEBAIHN0YXRpYyBjb25zdCBJbmxpbmVJdGVyYXRvcjo6TGVhZkJveEl0ZXJh
dG9yIGxvZ2ljYWxseU5leHRCb3goY29uc3QgVmlzaWJsZVBvc2l0CiAgICAgaWYgKGF1dG8gbmV4
dEJveCA9IG5leHRUZXh0T3JMaW5lQnJlYWtCb3goc3RhcnRCb3gsIG9yZGVyQ2FjaGUpKQogICAg
ICAgICByZXR1cm4gbmV4dEJveDsKIAotICAgIGlmIChhdXRvIG5leHRMaW5lID0gc3RhcnRCb3gt
PmxpbmUoKS0+bmV4dCgpKSB7CisgICAgaWYgKGF1dG8gbmV4dExpbmVCb3ggPSBzdGFydEJveC0+
bGluZUJveCgpLT5uZXh0KCkpIHsKICAgICAgICAgLy8gRklYTUU6IFdoeSBpc24ndCBwcmV2aW91
c0JveEluRGlmZmVyZW50TGluZSBzZXQgaGVyZT8KLSAgICAgICAgaWYgKGF1dG8gbmV4dEJveCA9
IHN0YXJ0VGV4dE9yTGluZUJyZWFrQm94KG5leHRMaW5lLCBvcmRlckNhY2hlKSkKKyAgICAgICAg
aWYgKGF1dG8gbmV4dEJveCA9IHN0YXJ0VGV4dE9yTGluZUJyZWFrQm94KG5leHRMaW5lQm94LCBv
cmRlckNhY2hlKSkKICAgICAgICAgICAgIHJldHVybiBuZXh0Qm94OwogICAgIH0KIApAQCAtMjI1
LDE4ICsyMjUsMTggQEAgc3RhdGljIGNvbnN0IElubGluZUl0ZXJhdG9yOjpMZWFmQm94SXRlcmF0
b3IgbG9naWNhbGx5TmV4dEJveChjb25zdCBWaXNpYmxlUG9zaXQKICAgICAgICAgICAgIGJyZWFr
OwogCiAgICAgICAgIFJlbmRlcmVkUG9zaXRpb24gcmVuZGVyZWRQb3NpdGlvbihwb3NpdGlvbiwg
QWZmaW5pdHk6OkRvd25zdHJlYW0pOwotICAgICAgICBhdXRvIG5leHRMaW5lID0gcmVuZGVyZWRQ
b3NpdGlvbi5saW5lKCk7Ci0gICAgICAgIGlmICghbmV4dExpbmUpCisgICAgICAgIGF1dG8gbmV4
dExpbmVCb3ggPSByZW5kZXJlZFBvc2l0aW9uLmxpbmVCb3goKTsKKyAgICAgICAgaWYgKCFuZXh0
TGluZUJveCkKICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgIGlmIChuZXh0TGluZSAhPSBz
dGFydEJveC0+bGluZSgpKSB7Ci0gICAgICAgICAgICBpZiAoYXV0byBuZXh0Qm94ID0gc3RhcnRU
ZXh0T3JMaW5lQnJlYWtCb3gobmV4dExpbmUsIG9yZGVyQ2FjaGUpKSB7CisgICAgICAgIGlmIChu
ZXh0TGluZUJveCAhPSBzdGFydEJveC0+bGluZUJveCgpKSB7CisgICAgICAgICAgICBpZiAoYXV0
byBuZXh0Qm94ID0gc3RhcnRUZXh0T3JMaW5lQnJlYWtCb3gobmV4dExpbmVCb3gsIG9yZGVyQ2Fj
aGUpKSB7CiAgICAgICAgICAgICAgICAgbmV4dEJveEluRGlmZmVyZW50TGluZSA9IHRydWU7CiAg
ICAgICAgICAgICAgICAgcmV0dXJuIG5leHRCb3g7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0K
IAotICAgICAgICBzdGFydEJveCA9IElubGluZUl0ZXJhdG9yOjpsYXN0TGVhZk9uTGluZUluTG9n
aWNhbE9yZGVyV2l0aE5vZGUobmV4dExpbmUsIG9yZGVyQ2FjaGUpOworICAgICAgICBzdGFydEJv
eCA9IElubGluZUl0ZXJhdG9yOjpsYXN0TGVhZk9uTGluZUluTG9naWNhbE9yZGVyV2l0aE5vZGUo
bmV4dExpbmVCb3gsIG9yZGVyQ2FjaGUpOwogICAgIH0KICAgICByZXR1cm4geyB9OwogfQpAQCAt
NzM4LDggKzczOCw4IEBAIHN0YXRpYyBWaXNpYmxlUG9zaXRpb24gc3RhcnRQb3NpdGlvbkZvckxp
bmUoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBjLCBMaW5lRW5kcG9pCiAgICAgaWYgKGMuaXNOdWxs
KCkpCiAgICAgICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24oKTsKIAotICAgIGF1dG8gbGluZSA9
IFJlbmRlcmVkUG9zaXRpb24oYykubGluZSgpOwotICAgIGlmICghbGluZSkgeworICAgIGF1dG8g
bGluZUJveCA9IFJlbmRlcmVkUG9zaXRpb24oYykubGluZUJveCgpOworICAgIGlmICghbGluZUJv
eCkgewogICAgICAgICAvLyBUaGVyZSBhcmUgVmlzaWJsZVBvc2l0aW9ucyBhdCBvZmZzZXQgMCBp
biBibG9ja3Mgd2l0aG91dAogICAgICAgICAvLyBSb290SW5saW5lQm94ZXMsIGxpa2UgZW1wdHkg
ZWRpdGFibGUgYmxvY2tzIGFuZCBib3JkZXJlZCBibG9ja3MuCiAgICAgICAgIFBvc2l0aW9uIHAg
PSBjLmRlZXBFcXVpdmFsZW50KCk7CkBAIC03NTIsNyArNzUyLDcgQEAgc3RhdGljIFZpc2libGVQ
b3NpdGlvbiBzdGFydFBvc2l0aW9uRm9yTGluZShjb25zdCBWaXNpYmxlUG9zaXRpb24mIGMsIExp
bmVFbmRwb2kKICAgICBJbmxpbmVJdGVyYXRvcjo6TGluZUxvZ2ljYWxPcmRlckNhY2hlIG9yZGVy
Q2FjaGU7CiAKICAgICBOb2RlKiBzdGFydE5vZGUgPSBudWxscHRyOwotICAgIGF1dG8gc3RhcnRC
b3ggPSBtb2RlID09IFVzZUxvZ2ljYWxPcmRlcmluZyA/IElubGluZUl0ZXJhdG9yOjpmaXJzdExl
YWZPbkxpbmVJbkxvZ2ljYWxPcmRlcldpdGhOb2RlKGxpbmUsIG9yZGVyQ2FjaGUpIDogbGluZS0+
Zmlyc3RMZWFmQm94KCk7CisgICAgYXV0byBzdGFydEJveCA9IG1vZGUgPT0gVXNlTG9naWNhbE9y
ZGVyaW5nID8gSW5saW5lSXRlcmF0b3I6OmZpcnN0TGVhZk9uTGluZUluTG9naWNhbE9yZGVyV2l0
aE5vZGUobGluZUJveCwgb3JkZXJDYWNoZSkgOiBsaW5lQm94LT5maXJzdExlYWZCb3goKTsKICAg
ICAvLyBHZW5lcmF0ZWQgY29udGVudCAoZS5nLiBsaXN0IG1hcmtlcnMgYW5kIENTUyA6YmVmb3Jl
IGFuZCA6YWZ0ZXIgcHNldWRvZWxlbWVudHMpIGhhdmUgbm8gY29ycmVzcG9uZGluZyBET00gZWxl
bWVudCwKICAgICAvLyBhbmQgc28gY2Fubm90IGJlIHJlcHJlc2VudGVkIGJ5IGEgVmlzaWJsZVBv
c2l0aW9uLiBVc2Ugd2hhdGV2ZXIgZm9sbG93cyBpbnN0ZWFkLgogICAgIHdoaWxlICh0cnVlKSB7
CkBAIC04MTEsOCArODExLDggQEAgc3RhdGljIFZpc2libGVQb3NpdGlvbiBlbmRQb3NpdGlvbkZv
ckxpbmUoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBjLCBMaW5lRW5kcG9pbnQKICAgICBpZiAoYy5p
c051bGwoKSkKICAgICAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbigpOwogCi0gICAgYXV0byBs
aW5lID0gUmVuZGVyZWRQb3NpdGlvbihjKS5saW5lKCk7Ci0gICAgaWYgKCFsaW5lKSB7CisgICAg
YXV0byBsaW5lQm94ID0gUmVuZGVyZWRQb3NpdGlvbihjKS5saW5lQm94KCk7CisgICAgaWYgKCFs
aW5lQm94KSB7CiAgICAgICAgIC8vIFRoZXJlIGFyZSBWaXNpYmxlUG9zaXRpb25zIGF0IG9mZnNl
dCAwIGluIGJsb2NrcyB3aXRob3V0CiAgICAgICAgIC8vIFJvb3RJbmxpbmVCb3hlcywgbGlrZSBl
bXB0eSBlZGl0YWJsZSBibG9ja3MgYW5kIGJvcmRlcmVkIGJsb2Nrcy4KICAgICAgICAgUG9zaXRp
b24gcCA9IGMuZGVlcEVxdWl2YWxlbnQoKTsKQEAgLTgyNCw3ICs4MjQsNyBAQCBzdGF0aWMgVmlz
aWJsZVBvc2l0aW9uIGVuZFBvc2l0aW9uRm9yTGluZShjb25zdCBWaXNpYmxlUG9zaXRpb24mIGMs
IExpbmVFbmRwb2ludAogICAgIElubGluZUl0ZXJhdG9yOjpMaW5lTG9naWNhbE9yZGVyQ2FjaGUg
b3JkZXJDYWNoZTsKIAogICAgIE5vZGUqIGVuZE5vZGUgPSBudWxscHRyOwotICAgIGF1dG8gZW5k
Qm94ID0gbW9kZSA9PSBVc2VMb2dpY2FsT3JkZXJpbmcgPyBJbmxpbmVJdGVyYXRvcjo6bGFzdExl
YWZPbkxpbmVJbkxvZ2ljYWxPcmRlcihsaW5lLCBvcmRlckNhY2hlKSA6IGxpbmUtPmxhc3RMZWFm
Qm94KCk7CisgICAgYXV0byBlbmRCb3ggPSBtb2RlID09IFVzZUxvZ2ljYWxPcmRlcmluZyA/IElu
bGluZUl0ZXJhdG9yOjpsYXN0TGVhZk9uTGluZUluTG9naWNhbE9yZGVyKGxpbmVCb3gsIG9yZGVy
Q2FjaGUpIDogbGluZUJveC0+bGFzdExlYWZCb3goKTsKICAgICAvLyBHZW5lcmF0ZWQgY29udGVu
dCAoZS5nLiBsaXN0IG1hcmtlcnMgYW5kIENTUyA6YmVmb3JlIGFuZCA6YWZ0ZXIgcHNldWRvZWxl
bWVudHMpIGhhdmUgbm8gY29ycmVzcG9uZGluZyBET00gZWxlbWVudCwKICAgICAvLyBhbmQgc28g
Y2Fubm90IGJlIHJlcHJlc2VudGVkIGJ5IGEgVmlzaWJsZVBvc2l0aW9uLiBVc2Ugd2hhdGV2ZXIg
cHJlY2VkZXMgaW5zdGVhZC4KICAgICB3aGlsZSAodHJ1ZSkgewpAQCAtOTM2LDE1ICs5MzYsMTUg
QEAgYm9vbCBpc0xvZ2ljYWxFbmRPZkxpbmUoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBwKQogICAg
IHJldHVybiBwLmlzTm90TnVsbCgpICYmIHAgPT0gbG9naWNhbEVuZE9mTGluZShwKTsKIH0KIAot
c3RhdGljIGlubGluZSBJbnRQb2ludCBhYnNvbHV0ZUxpbmVEaXJlY3Rpb25Qb2ludFRvTG9jYWxQ
b2ludEluQmxvY2soSW5saW5lSXRlcmF0b3I6OkxpbmVJdGVyYXRvciYgbGluZSwgaW50IGxpbmVE
aXJlY3Rpb25Qb2ludCkKK3N0YXRpYyBpbmxpbmUgSW50UG9pbnQgYWJzb2x1dGVMaW5lRGlyZWN0
aW9uUG9pbnRUb0xvY2FsUG9pbnRJbkJsb2NrKElubGluZUl0ZXJhdG9yOjpMaW5lQm94SXRlcmF0
b3ImIGxpbmVCb3gsIGludCBsaW5lRGlyZWN0aW9uUG9pbnQpCiB7Ci0gICAgYXV0byYgY29udGFp
bmluZ0Jsb2NrID0gbGluZS0+Y29udGFpbmluZ0Jsb2NrKCk7CisgICAgYXV0byYgY29udGFpbmlu
Z0Jsb2NrID0gbGluZUJveC0+Y29udGFpbmluZ0Jsb2NrKCk7CiAgICAgRmxvYXRQb2ludCBhYnNv
bHV0ZUJsb2NrUG9pbnQgPSBjb250YWluaW5nQmxvY2subG9jYWxUb0Fic29sdXRlKEZsb2F0UG9p
bnQoKSkgLSB0b0Zsb2F0U2l6ZShjb250YWluaW5nQmxvY2suc2Nyb2xsUG9zaXRpb24oKSk7CiAK
ICAgICBpZiAoY29udGFpbmluZ0Jsb2NrLmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkpCi0gICAg
ICAgIHJldHVybiBJbnRQb2ludChsaW5lRGlyZWN0aW9uUG9pbnQgLSBhYnNvbHV0ZUJsb2NrUG9p
bnQueCgpLCBjb250ZW50U3RhcnRJbkJsb2NrRGlyZWN0aW9uKCpsaW5lKSk7CisgICAgICAgIHJl
dHVybiBJbnRQb2ludChsaW5lRGlyZWN0aW9uUG9pbnQgLSBhYnNvbHV0ZUJsb2NrUG9pbnQueCgp
LCBjb250ZW50U3RhcnRJbkJsb2NrRGlyZWN0aW9uKCpsaW5lQm94KSk7CiAKLSAgICByZXR1cm4g
SW50UG9pbnQoY29udGVudFN0YXJ0SW5CbG9ja0RpcmVjdGlvbigqbGluZSksIGxpbmVEaXJlY3Rp
b25Qb2ludCAtIGFic29sdXRlQmxvY2tQb2ludC55KCkpOworICAgIHJldHVybiBJbnRQb2ludChj
b250ZW50U3RhcnRJbkJsb2NrRGlyZWN0aW9uKCpsaW5lQm94KSwgbGluZURpcmVjdGlvblBvaW50
IC0gYWJzb2x1dGVCbG9ja1BvaW50LnkoKSk7CiB9CiAKIHN0YXRpYyBFbGVtZW50KiByb290RWRp
dGFibGVPckRvY3VtZW50RWxlbWVudChOb2RlJiBub2RlLCBFZGl0YWJsZVR5cGUgZWRpdGFibGVU
eXBlKQpAQCAtOTY4LDI5ICs5NjgsMjkgQEAgVmlzaWJsZVBvc2l0aW9uIHByZXZpb3VzTGluZVBv
c2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgdmlzaWJsZVBvc2l0aW9uLCBpbnQKICAgICBp
ZiAoIXJlbmRlcmVyKQogICAgICAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKCk7CiAKLSAgICBJ
bmxpbmVJdGVyYXRvcjo6TGluZUl0ZXJhdG9yIGxpbmU7CisgICAgSW5saW5lSXRlcmF0b3I6Okxp
bmVCb3hJdGVyYXRvciBsaW5lQm94OwogICAgIGlmIChhdXRvIGJveCA9IHZpc2libGVQb3NpdGlv
bi5pbmxpbmVCb3hBbmRPZmZzZXQoKS5ib3gpIHsKLSAgICAgICAgbGluZSA9IGJveC0+bGluZSgp
LT5wcmV2aW91cygpOworICAgICAgICBsaW5lQm94ID0gYm94LT5saW5lQm94KCktPnByZXZpb3Vz
KCk7CiAgICAgICAgIC8vIFdlIHdhbnQgdG8gc2tpcCB6ZXJvIGhlaWdodCBib3hlcy4KICAgICAg
ICAgLy8gVGhpcyBjb3VsZCBoYXBwZW4gaW4gY2FzZSBpdCBpcyBhIExlZ2FjeVJvb3RJbmxpbmVC
b3ggd2l0aCB0cmFpbGluZyBmbG9hdHMuCi0gICAgICAgIGlmICghbGluZSB8fCAhbGluZS0+bGlu
ZUJveEhlaWdodCgpIHx8ICFsaW5lLT5maXJzdExlYWZCb3goKSkKLSAgICAgICAgICAgIGxpbmUg
PSB7IH07CisgICAgICAgIGlmICghbGluZUJveCB8fCAhbGluZUJveC0+aGVpZ2h0KCkgfHwgIWxp
bmVCb3gtPmZpcnN0TGVhZkJveCgpKQorICAgICAgICAgICAgbGluZUJveCA9IHsgfTsKICAgICB9
CiAKLSAgICBpZiAoIWxpbmUpIHsKKyAgICBpZiAoIWxpbmVCb3gpIHsKICAgICAgICAgUG9zaXRp
b24gcG9zaXRpb24gPSBwcmV2aW91c0xpbmVDYW5kaWRhdGVQb3NpdGlvbihub2RlLCB2aXNpYmxl
UG9zaXRpb24sIGVkaXRhYmxlVHlwZSk7CiAgICAgICAgIGlmIChwb3NpdGlvbi5pc05vdE51bGwo
KSkgewogICAgICAgICAgICAgUmVuZGVyZWRQb3NpdGlvbiByZW5kZXJlZFBvc2l0aW9uKHBvc2l0
aW9uKTsKLSAgICAgICAgICAgIGxpbmUgPSByZW5kZXJlZFBvc2l0aW9uLmxpbmUoKTsKLSAgICAg
ICAgICAgIGlmICghbGluZSkKKyAgICAgICAgICAgIGxpbmVCb3ggPSByZW5kZXJlZFBvc2l0aW9u
LmxpbmVCb3goKTsKKyAgICAgICAgICAgIGlmICghbGluZUJveCkKICAgICAgICAgICAgICAgICBy
ZXR1cm4gcG9zaXRpb247CiAgICAgICAgIH0KICAgICB9CiAgICAgCi0gICAgaWYgKGxpbmUpIHsK
KyAgICBpZiAobGluZUJveCkgewogICAgICAgICAvLyBGSVhNRTogQ2FuIGJlIHdyb25nIGZvciBt
dWx0aS1jb2x1bW4gbGF5b3V0IGFuZCB3aXRoIHRyYW5zZm9ybXMuCi0gICAgICAgIGF1dG8gcG9p
bnRJbkxpbmUgPSBhYnNvbHV0ZUxpbmVEaXJlY3Rpb25Qb2ludFRvTG9jYWxQb2ludEluQmxvY2so
bGluZSwgbGluZURpcmVjdGlvblBvaW50KTsKLSAgICAgICAgYXV0byBib3ggPSBjbG9zZXN0Qm94
Rm9ySG9yaXpvbnRhbFBvc2l0aW9uKCpsaW5lLCBsaW5lLT5pc0hvcml6b250YWwoKSA/IHBvaW50
SW5MaW5lLngoKSA6IHBvaW50SW5MaW5lLnkoKSwgaXNFZGl0YWJsZVBvc2l0aW9uKHApKTsKKyAg
ICAgICAgYXV0byBwb2ludEluTGluZSA9IGFic29sdXRlTGluZURpcmVjdGlvblBvaW50VG9Mb2Nh
bFBvaW50SW5CbG9jayhsaW5lQm94LCBsaW5lRGlyZWN0aW9uUG9pbnQpOworICAgICAgICBhdXRv
IGJveCA9IGNsb3Nlc3RCb3hGb3JIb3Jpem9udGFsUG9zaXRpb24oKmxpbmVCb3gsIGxpbmVCb3gt
PmlzSG9yaXpvbnRhbCgpID8gcG9pbnRJbkxpbmUueCgpIDogcG9pbnRJbkxpbmUueSgpLCBpc0Vk
aXRhYmxlUG9zaXRpb24ocCkpOwogICAgICAgICBpZiAoIWJveCkKICAgICAgICAgICAgIHJldHVy
biBWaXNpYmxlUG9zaXRpb24oKTsKICAgICAgICAgYXV0byYgcmVuZGVyZXIgPSBib3gtPnJlbmRl
cmVyKCk7CkBAIC0xMDIxLDMyICsxMDIxLDMyIEBAIFZpc2libGVQb3NpdGlvbiBuZXh0TGluZVBv
c2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgdmlzaWJsZVBvc2l0aW9uLCBpbnQgbGluCiAg
ICAgaWYgKCFub2RlLT5yZW5kZXJlcigpKQogICAgICAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9u
KCk7CiAKLSAgICBJbmxpbmVJdGVyYXRvcjo6TGluZUl0ZXJhdG9yIGxpbmU7CisgICAgSW5saW5l
SXRlcmF0b3I6OkxpbmVCb3hJdGVyYXRvciBsaW5lQm94OwogICAgIGlmIChhdXRvIGJveCA9IHZp
c2libGVQb3NpdGlvbi5pbmxpbmVCb3hBbmRPZmZzZXQoKS5ib3gpIHsKLSAgICAgICAgbGluZSA9
IGJveC0+bGluZSgpLT5uZXh0KCk7CisgICAgICAgIGxpbmVCb3ggPSBib3gtPmxpbmVCb3goKS0+
bmV4dCgpOwogICAgICAgICAvLyBXZSB3YW50IHRvIHNraXAgemVybyBoZWlnaHQgYm94ZXMuCiAg
ICAgICAgIC8vIFRoaXMgY291bGQgaGFwcGVuIGluIGNhc2UgaXQgaXMgYSBMZWdhY3lSb290SW5s
aW5lQm94IHdpdGggdHJhaWxpbmcgZmxvYXRzLgotICAgICAgICBpZiAoIWxpbmUgfHwgIWxpbmUt
PmxpbmVCb3hIZWlnaHQoKSB8fCAhbGluZS0+Zmlyc3RMZWFmQm94KCkpCi0gICAgICAgICAgICBs
aW5lID0geyB9OworICAgICAgICBpZiAoIWxpbmVCb3ggfHwgIWxpbmVCb3gtPmhlaWdodCgpIHx8
ICFsaW5lQm94LT5maXJzdExlYWZCb3goKSkKKyAgICAgICAgICAgIGxpbmVCb3ggPSB7IH07CiAg
ICAgfQogCi0gICAgaWYgKCFsaW5lKSB7CisgICAgaWYgKCFsaW5lQm94KSB7CiAgICAgICAgIC8v
IEZJWE1FOiBXZSBuZWVkIGRvIHRoZSBzYW1lIGluIHByZXZpb3VzTGluZVBvc2l0aW9uLgogICAg
ICAgICBOb2RlKiBjaGlsZCA9IG5vZGUtPnRyYXZlcnNlVG9DaGlsZEF0KHAuZGVwcmVjYXRlZEVk
aXRpbmdPZmZzZXQoKSk7CiAgICAgICAgIG5vZGUgPSBjaGlsZCA/IGNoaWxkIDogbm9kZS0+bGFz
dERlc2NlbmRhbnQoKTsKICAgICAgICAgUG9zaXRpb24gcG9zaXRpb24gPSBuZXh0TGluZUNhbmRp
ZGF0ZVBvc2l0aW9uKG5vZGUsIHZpc2libGVQb3NpdGlvbiwgZWRpdGFibGVUeXBlKTsKICAgICAg
ICAgaWYgKHBvc2l0aW9uLmlzTm90TnVsbCgpKSB7CiAgICAgICAgICAgICBSZW5kZXJlZFBvc2l0
aW9uIHJlbmRlcmVkUG9zaXRpb24ocG9zaXRpb24pOwotICAgICAgICAgICAgbGluZSA9IHJlbmRl
cmVkUG9zaXRpb24ubGluZSgpOwotICAgICAgICAgICAgaWYgKCFsaW5lKQorICAgICAgICAgICAg
bGluZUJveCA9IHJlbmRlcmVkUG9zaXRpb24ubGluZUJveCgpOworICAgICAgICAgICAgaWYgKCFs
aW5lQm94KQogICAgICAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKICAgICAgICAgfQogICAg
IH0KICAgICAKLSAgICBpZiAobGluZSkgeworICAgIGlmIChsaW5lQm94KSB7CiAgICAgICAgIC8v
IEZJWE1FOiBDYW4gYmUgd3JvbmcgZm9yIG11bHRpLWNvbHVtbiBsYXlvdXQgYW5kIHdpdGggdHJh
bnNmb3Jtcy4KLSAgICAgICAgYXV0byBwb2ludEluTGluZSA9IGFic29sdXRlTGluZURpcmVjdGlv
blBvaW50VG9Mb2NhbFBvaW50SW5CbG9jayhsaW5lLCBsaW5lRGlyZWN0aW9uUG9pbnQpOwotICAg
ICAgICBhdXRvIGJveCA9IGNsb3Nlc3RCb3hGb3JIb3Jpem9udGFsUG9zaXRpb24oKmxpbmUsIGxp
bmUtPmlzSG9yaXpvbnRhbCgpID8gcG9pbnRJbkxpbmUueCgpIDogcG9pbnRJbkxpbmUueSgpLCBp
c0VkaXRhYmxlUG9zaXRpb24ocCkpOworICAgICAgICBhdXRvIHBvaW50SW5MaW5lID0gYWJzb2x1
dGVMaW5lRGlyZWN0aW9uUG9pbnRUb0xvY2FsUG9pbnRJbkJsb2NrKGxpbmVCb3gsIGxpbmVEaXJl
Y3Rpb25Qb2ludCk7CisgICAgICAgIGF1dG8gYm94ID0gY2xvc2VzdEJveEZvckhvcml6b250YWxQ
b3NpdGlvbigqbGluZUJveCwgbGluZUJveC0+aXNIb3Jpem9udGFsKCkgPyBwb2ludEluTGluZS54
KCkgOiBwb2ludEluTGluZS55KCksIGlzRWRpdGFibGVQb3NpdGlvbihwKSk7CiAgICAgICAgIGlm
ICghYm94KQogICAgICAgICAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbigpOwogICAgICAgICBh
dXRvJiByZW5kZXJlciA9IGJveC0+cmVuZGVyZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAKaW5kZXggMWZlNTlkZTQ2NDkyZGY2
NTA5ZjQ3MDgyOTRmNzYzMDdhYWNmZjgxZi4uYzEzZjQ1ZTMzY2VmNDM2N2M2M2RlMWM5OWRiOTE4
MGQzYjk0ZjY3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1D
b250cm9sRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1D
b250cm9sRWxlbWVudC5jcHAKQEAgLTQyLDcgKzQyLDcgQEAKICNpbmNsdWRlICJIVE1MTmFtZXMu
aCIKICNpbmNsdWRlICJIVE1MUGFyc2VySWRpb21zLmgiCiAjaW5jbHVkZSAiSW5saW5lSXRlcmF0
b3JCb3guaCIKLSNpbmNsdWRlICJJbmxpbmVJdGVyYXRvckxpbmUuaCIKKyNpbmNsdWRlICJJbmxp
bmVJdGVyYXRvckxpbmVCb3guaCIKICNpbmNsdWRlICJMYXlvdXREaXNhbGxvd2VkU2NvcGUuaCIK
ICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTm9kZVRyYXZlcnNhbC5oIgpAQCAtNzI3
LDIwICs3MjcsMjAgQEAgU3RyaW5nIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50Ojp2YWx1ZVdp
dGhIYXJkTGluZUJyZWFrcygpIGNvbnN0CiAKICAgICBOb2RlKiBzb2Z0TGluZUJyZWFrTm9kZSA9
IG51bGxwdHI7CiAgICAgdW5zaWduZWQgc29mdExpbmVCcmVha09mZnNldCA9IDA7Ci0gICAgYXV0
byBjdXJyZW50TGluZSA9IElubGluZUl0ZXJhdG9yOjpmaXJzdExpbmVGb3IoKnJlbmRlcmVyKTsK
LSAgICBpZiAoIWN1cnJlbnRMaW5lKQorICAgIGF1dG8gY3VycmVudExpbmVCb3ggPSBJbmxpbmVJ
dGVyYXRvcjo6Zmlyc3RMaW5lQm94Rm9yKCpyZW5kZXJlcik7CisgICAgaWYgKCFjdXJyZW50TGlu
ZUJveCkKICAgICAgICAgcmV0dXJuIHZhbHVlKCk7CiAKICAgICBhdXRvIHNraXBUb05leHRTb2Z0
TGluZUJyZWFrUG9zaXRpb24gPSBbJl0gewotICAgICAgICBmb3IgKDsgY3VycmVudExpbmU7IGN1
cnJlbnRMaW5lLnRyYXZlcnNlTmV4dCgpKSB7Ci0gICAgICAgICAgICBhdXRvIGxhc3RSdW4gPSBj
dXJyZW50TGluZS0+bGFzdExlYWZCb3goKTsKKyAgICAgICAgZm9yICg7IGN1cnJlbnRMaW5lQm94
OyBjdXJyZW50TGluZUJveC50cmF2ZXJzZU5leHQoKSkgeworICAgICAgICAgICAgYXV0byBsYXN0
UnVuID0gY3VycmVudExpbmVCb3gtPmxhc3RMZWFmQm94KCk7CiAgICAgICAgICAgICBBU1NFUlQo
bGFzdFJ1bik7CiAgICAgICAgICAgICBhdXRvJiByZW5kZXJlciA9IGxhc3RSdW4tPnJlbmRlcmVy
KCk7CiAgICAgICAgICAgICBhdXRvIGxpbmVFbmRzV2l0aEJSID0gaXM8UmVuZGVyTGluZUJyZWFr
PihyZW5kZXJlcikgJiYgIWRvd25jYXN0PFJlbmRlckxpbmVCcmVhaz4ocmVuZGVyZXIpLmlzV0JS
KCk7CiAgICAgICAgICAgICBpZiAoIWxpbmVFbmRzV2l0aEJSKSB7CiAgICAgICAgICAgICAgICAg
c29mdExpbmVCcmVha05vZGUgPSByZW5kZXJlci5ub2RlKCk7CiAgICAgICAgICAgICAgICAgc29m
dExpbmVCcmVha09mZnNldCA9IGxhc3RSdW4tPm1heGltdW1DYXJldE9mZnNldCgpOwotICAgICAg
ICAgICAgICAgIGN1cnJlbnRMaW5lLnRyYXZlcnNlTmV4dCgpOworICAgICAgICAgICAgICAgIGN1
cnJlbnRMaW5lQm94LnRyYXZlcnNlTmV4dCgpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgICAgIH0KICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRvckJveC5jcHAKaW5kZXggNzVlYWU1ZTBkNDFlNmM2
M2E3ODc0MGVmYjJmNzIxMDY2ZTdlZjY5Zi4uOWMyYWI5ODdiZGM0NmU3OTE2ZjlmNzFhZGY3MWRk
OTM0N2U1OGY3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9u
L0lubGluZUl0ZXJhdG9yQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdy
YXRpb24vSW5saW5lSXRlcmF0b3JCb3guY3BwCkBAIC0yNiw3ICsyNiw3IEBACiAjaW5jbHVkZSAi
Y29uZmlnLmgiCiAjaW5jbHVkZSAiSW5saW5lSXRlcmF0b3JCb3guaCIKIAotI2luY2x1ZGUgIklu
bGluZUl0ZXJhdG9yTGluZS5oIgorI2luY2x1ZGUgIklubGluZUl0ZXJhdG9yTGluZUJveC5oIgog
I2luY2x1ZGUgIklubGluZUl0ZXJhdG9yVGV4dEJveC5oIgogI2luY2x1ZGUgIkxheW91dEludGVn
cmF0aW9uTGluZUxheW91dC5oIgogI2luY2x1ZGUgIlJlbmRlckJsb2NrRmxvdy5oIgpAQCAtODEs
MTQgKzgxLDE0IEBAIExlYWZCb3hJdGVyYXRvciBCb3g6OnByZXZpb3VzT25MaW5lSWdub3JpbmdM
aW5lQnJlYWsoKSBjb25zdAogICAgIHJldHVybiBMZWFmQm94SXRlcmF0b3IoKnRoaXMpLnRyYXZl
cnNlUHJldmlvdXNPbkxpbmVJZ25vcmluZ0xpbmVCcmVhaygpOwogfQogCi1MaW5lSXRlcmF0b3Ig
Qm94OjpsaW5lKCkgY29uc3QKK0xpbmVCb3hJdGVyYXRvciBCb3g6OmxpbmVCb3goKSBjb25zdAog
ewogICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKG1fcGF0aFZhcmlhbnQsIFtdKGNvbnN0IEJveExl
Z2FjeVBhdGgmIHBhdGgpIHsKLSAgICAgICAgcmV0dXJuIExpbmVJdGVyYXRvcihMaW5lSXRlcmF0
b3JMZWdhY3lQYXRoKCZwYXRoLnJvb3RJbmxpbmVCb3goKSkpOworICAgICAgICByZXR1cm4gTGlu
ZUJveEl0ZXJhdG9yKExpbmVCb3hJdGVyYXRvckxlZ2FjeVBhdGgoJnBhdGgucm9vdElubGluZUJv
eCgpKSk7CiAgICAgfQogI2lmIEVOQUJMRShMQVlPVVRfRk9STUFUVElOR19DT05URVhUKQogICAg
ICwgW10oY29uc3QgQm94TW9kZXJuUGF0aCYgcGF0aCkgewotICAgICAgICByZXR1cm4gTGluZUl0
ZXJhdG9yKExpbmVJdGVyYXRvck1vZGVyblBhdGgocGF0aC5pbmxpbmVDb250ZW50KCksIHBhdGgu
Ym94KCkubGluZUluZGV4KCkpKTsKKyAgICAgICAgcmV0dXJuIExpbmVCb3hJdGVyYXRvcihMaW5l
Qm94SXRlcmF0b3JNb2Rlcm5QYXRoKHBhdGguaW5saW5lQ29udGVudCgpLCBwYXRoLmJveCgpLmxp
bmVJbmRleCgpKSk7CiAgICAgfQogI2VuZGlmCiAgICAgKTsKQEAgLTk2LDcgKzk2LDcgQEAgTGlu
ZUl0ZXJhdG9yIEJveDo6bGluZSgpIGNvbnN0CiAKIGNvbnN0IFJlbmRlclN0eWxlJiBCb3g6OnN0
eWxlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbGluZSgpLT5pc0ZpcnN0KCkgPyByZW5kZXJlcigp
LmZpcnN0TGluZVN0eWxlKCkgOiByZW5kZXJlcigpLnN0eWxlKCk7CisgICAgcmV0dXJuIGxpbmVC
b3goKS0+aXNGaXJzdCgpID8gcmVuZGVyZXIoKS5maXJzdExpbmVTdHlsZSgpIDogcmVuZGVyZXIo
KS5zdHlsZSgpOwogfQogCiBSZW5kZXJPYmplY3Q6OkhpZ2hsaWdodFN0YXRlIEJveDo6c2VsZWN0
aW9uU3RhdGUoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVn
cmF0aW9uL0lubGluZUl0ZXJhdG9yQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdy
YXRpb24vSW5saW5lSXRlcmF0b3JCb3guaAppbmRleCAzMjU4MmE3MGFjNTRmZmExODUwYzk2ZTVi
ZTAyNjZlNGQxMThjMDkxLi4xOTRkNTE4OWU0YWUxNDc3OWQ3NGExMjdiNTE5MTczMDQzMjY2MzJk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRl
cmF0b3JCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5saW5l
SXRlcmF0b3JCb3guaApAQCAtMzgsNyArMzgsNyBAQCBjbGFzcyBSZW5kZXJTdHlsZTsKIAogbmFt
ZXNwYWNlIElubGluZUl0ZXJhdG9yIHsKIAotY2xhc3MgTGluZUl0ZXJhdG9yOworY2xhc3MgTGlu
ZUJveEl0ZXJhdG9yOwogY2xhc3MgQm94SXRlcmF0b3I7CiBjbGFzcyBMZWFmQm94SXRlcmF0b3I7
CiBjbGFzcyBUZXh0Qm94SXRlcmF0b3I7CkBAIC05OCw3ICs5OCw3IEBAIHB1YmxpYzoKICAgICBM
ZWFmQm94SXRlcmF0b3IgbmV4dE9uTGluZUlnbm9yaW5nTGluZUJyZWFrKCkgY29uc3Q7CiAgICAg
TGVhZkJveEl0ZXJhdG9yIHByZXZpb3VzT25MaW5lSWdub3JpbmdMaW5lQnJlYWsoKSBjb25zdDsK
IAotICAgIExpbmVJdGVyYXRvciBsaW5lKCkgY29uc3Q7CisgICAgTGluZUJveEl0ZXJhdG9yIGxp
bmVCb3goKSBjb25zdDsKIAogcHJvdGVjdGVkOgogICAgIGZyaWVuZCBjbGFzcyBCb3hJdGVyYXRv
cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJ
dGVyYXRvckxpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0lubGlu
ZUl0ZXJhdG9yTGluZS5jcHAKaW5kZXggZGFmMmFiOGY1NmViMWU5ZGFhY2Q2YmU1ZTViNzE3N2Fl
OGY2MWQxYS4uMDk5NWMxYTk4ODVmNTlhYzI2OWE0YTNkYzFjMTkwYjVkZjkxZGYwZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yTGlu
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJh
dG9yTGluZS5jcHAKQEAgLTI0LDcgKzI0LDcgQEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgi
Ci0jaW5jbHVkZSAiSW5saW5lSXRlcmF0b3JMaW5lLmgiCisjaW5jbHVkZSAiSW5saW5lSXRlcmF0
b3JMaW5lQm94LmgiCiAKICNpbmNsdWRlICJJbmxpbmVJdGVyYXRvckJveC5oIgogI2luY2x1ZGUg
IkxheW91dEludGVncmF0aW9uTGluZUxheW91dC5oIgpAQCAtMzMsOTYgKzMzLDk2IEBACiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgSW5saW5lSXRlcmF0b3IgewogCi1MaW5lSXRlcmF0
b3I6OkxpbmVJdGVyYXRvcihMaW5lOjpQYXRoVmFyaWFudCYmIHBhdGhWYXJpYW50KQotICAgIDog
bV9saW5lKFdURk1vdmUocGF0aFZhcmlhbnQpKQorTGluZUJveEl0ZXJhdG9yOjpMaW5lQm94SXRl
cmF0b3IoTGluZUJveDo6UGF0aFZhcmlhbnQmJiBwYXRoVmFyaWFudCkKKyAgICA6IG1fbGluZUJv
eChXVEZNb3ZlKHBhdGhWYXJpYW50KSkKIHsKIH0KIAotTGluZUl0ZXJhdG9yOjpMaW5lSXRlcmF0
b3IoY29uc3QgTGluZSYgbGluZSkKLSAgICA6IG1fbGluZShsaW5lKQorTGluZUJveEl0ZXJhdG9y
OjpMaW5lQm94SXRlcmF0b3IoY29uc3QgTGluZUJveCYgbGluZUJveCkKKyAgICA6IG1fbGluZUJv
eChsaW5lQm94KQogewogfQogCi1ib29sIExpbmVJdGVyYXRvcjo6YXRFbmQoKSBjb25zdAorYm9v
bCBMaW5lQm94SXRlcmF0b3I6OmF0RW5kKCkgY29uc3QKIHsKLSAgICByZXR1cm4gV1RGOjpzd2l0
Y2hPbihtX2xpbmUubV9wYXRoVmFyaWFudCwgW10oYXV0byYgcGF0aCkgeworICAgIHJldHVybiBX
VEY6OnN3aXRjaE9uKG1fbGluZUJveC5tX3BhdGhWYXJpYW50LCBbXShhdXRvJiBwYXRoKSB7CiAg
ICAgICAgIHJldHVybiBwYXRoLmF0RW5kKCk7CiAgICAgfSk7CiB9CiAKLUxpbmVJdGVyYXRvciYg
TGluZUl0ZXJhdG9yOjp0cmF2ZXJzZU5leHQoKQorTGluZUJveEl0ZXJhdG9yJiBMaW5lQm94SXRl
cmF0b3I6OnRyYXZlcnNlTmV4dCgpCiB7Ci0gICAgV1RGOjpzd2l0Y2hPbihtX2xpbmUubV9wYXRo
VmFyaWFudCwgW10oYXV0byYgcGF0aCkgeworICAgIFdURjo6c3dpdGNoT24obV9saW5lQm94Lm1f
cGF0aFZhcmlhbnQsIFtdKGF1dG8mIHBhdGgpIHsKICAgICAgICAgcmV0dXJuIHBhdGgudHJhdmVy
c2VOZXh0KCk7CiAgICAgfSk7CiAgICAgcmV0dXJuICp0aGlzOwogfQogCi1MaW5lSXRlcmF0b3Im
IExpbmVJdGVyYXRvcjo6dHJhdmVyc2VQcmV2aW91cygpCitMaW5lQm94SXRlcmF0b3ImIExpbmVC
b3hJdGVyYXRvcjo6dHJhdmVyc2VQcmV2aW91cygpCiB7Ci0gICAgV1RGOjpzd2l0Y2hPbihtX2xp
bmUubV9wYXRoVmFyaWFudCwgW10oYXV0byYgcGF0aCkgeworICAgIFdURjo6c3dpdGNoT24obV9s
aW5lQm94Lm1fcGF0aFZhcmlhbnQsIFtdKGF1dG8mIHBhdGgpIHsKICAgICAgICAgcmV0dXJuIHBh
dGgudHJhdmVyc2VQcmV2aW91cygpOwogICAgIH0pOwogICAgIHJldHVybiAqdGhpczsKIH0KIAot
Ym9vbCBMaW5lSXRlcmF0b3I6Om9wZXJhdG9yPT0oY29uc3QgTGluZUl0ZXJhdG9yJiBvdGhlcikg
Y29uc3QKK2Jvb2wgTGluZUJveEl0ZXJhdG9yOjpvcGVyYXRvcj09KGNvbnN0IExpbmVCb3hJdGVy
YXRvciYgb3RoZXIpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fbGluZS5tX3BhdGhWYXJpYW50ID09
IG90aGVyLm1fbGluZS5tX3BhdGhWYXJpYW50OworICAgIHJldHVybiBtX2xpbmVCb3gubV9wYXRo
VmFyaWFudCA9PSBvdGhlci5tX2xpbmVCb3gubV9wYXRoVmFyaWFudDsKIH0KIAotTGluZUl0ZXJh
dG9yIGZpcnN0TGluZUZvcihjb25zdCBSZW5kZXJCbG9ja0Zsb3cmIGZsb3cpCitMaW5lQm94SXRl
cmF0b3IgZmlyc3RMaW5lQm94Rm9yKGNvbnN0IFJlbmRlckJsb2NrRmxvdyYgZmxvdykKIHsKICNp
ZiBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCkKICAgICBpZiAoYXV0byogbGluZUxh
eW91dCA9IGZsb3cubW9kZXJuTGluZUxheW91dCgpKQotICAgICAgICByZXR1cm4gbGluZUxheW91
dC0+Zmlyc3RMaW5lKCk7CisgICAgICAgIHJldHVybiBsaW5lTGF5b3V0LT5maXJzdExpbmVCb3go
KTsKICNlbmRpZgogCi0gICAgcmV0dXJuIHsgTGluZUl0ZXJhdG9yTGVnYWN5UGF0aCB7IGZsb3cu
Zmlyc3RSb290Qm94KCkgfSB9OworICAgIHJldHVybiB7IExpbmVCb3hJdGVyYXRvckxlZ2FjeVBh
dGggeyBmbG93LmZpcnN0Um9vdEJveCgpIH0gfTsKIH0KIAotTGluZUl0ZXJhdG9yIGxhc3RMaW5l
Rm9yKGNvbnN0IFJlbmRlckJsb2NrRmxvdyYgZmxvdykKK0xpbmVCb3hJdGVyYXRvciBsYXN0TGlu
ZUJveEZvcihjb25zdCBSZW5kZXJCbG9ja0Zsb3cmIGZsb3cpCiB7CiAjaWYgRU5BQkxFKExBWU9V
VF9GT1JNQVRUSU5HX0NPTlRFWFQpCiAgICAgaWYgKGF1dG8qIGxpbmVMYXlvdXQgPSBmbG93Lm1v
ZGVybkxpbmVMYXlvdXQoKSkKLSAgICAgICAgcmV0dXJuIGxpbmVMYXlvdXQtPmxhc3RMaW5lKCk7
CisgICAgICAgIHJldHVybiBsaW5lTGF5b3V0LT5sYXN0TGluZUJveCgpOwogI2VuZGlmCiAKLSAg
ICByZXR1cm4geyBMaW5lSXRlcmF0b3JMZWdhY3lQYXRoIHsgZmxvdy5sYXN0Um9vdEJveCgpIH0g
fTsKKyAgICByZXR1cm4geyBMaW5lQm94SXRlcmF0b3JMZWdhY3lQYXRoIHsgZmxvdy5sYXN0Um9v
dEJveCgpIH0gfTsKIH0KIAotTGluZUl0ZXJhdG9yIExpbmU6Om5leHQoKSBjb25zdAorTGluZUJv
eEl0ZXJhdG9yIExpbmVCb3g6Om5leHQoKSBjb25zdAogewotICAgIHJldHVybiBMaW5lSXRlcmF0
b3IoKnRoaXMpLnRyYXZlcnNlTmV4dCgpOworICAgIHJldHVybiBMaW5lQm94SXRlcmF0b3IoKnRo
aXMpLnRyYXZlcnNlTmV4dCgpOwogfQogCi1MaW5lSXRlcmF0b3IgTGluZTo6cHJldmlvdXMoKSBj
b25zdAorTGluZUJveEl0ZXJhdG9yIExpbmVCb3g6OnByZXZpb3VzKCkgY29uc3QKIHsKLSAgICBy
ZXR1cm4gTGluZUl0ZXJhdG9yKCp0aGlzKS50cmF2ZXJzZVByZXZpb3VzKCk7CisgICAgcmV0dXJu
IExpbmVCb3hJdGVyYXRvcigqdGhpcykudHJhdmVyc2VQcmV2aW91cygpOwogfQogCi1MZWFmQm94
SXRlcmF0b3IgTGluZTo6Zmlyc3RMZWFmQm94KCkgY29uc3QKK0xlYWZCb3hJdGVyYXRvciBMaW5l
Qm94OjpmaXJzdExlYWZCb3goKSBjb25zdAogewogICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKG1f
cGF0aFZhcmlhbnQsIFtdKGF1dG8mIHBhdGgpIC0+IExlYWZCb3hJdGVyYXRvciB7CiAgICAgICAg
IHJldHVybiB7IHBhdGguZmlyc3RMZWFmQm94KCkgfTsKICAgICB9KTsKIH0KIAotTGVhZkJveEl0
ZXJhdG9yIExpbmU6Omxhc3RMZWFmQm94KCkgY29uc3QKK0xlYWZCb3hJdGVyYXRvciBMaW5lQm94
OjpsYXN0TGVhZkJveCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIFdURjo6c3dpdGNoT24obV9wYXRo
VmFyaWFudCwgW10oYXV0byYgcGF0aCkgLT4gTGVhZkJveEl0ZXJhdG9yIHsKICAgICAgICAgcmV0
dXJuIHsgcGF0aC5sYXN0TGVhZkJveCgpIH07CiAgICAgfSk7CiB9CiAKLUxlYWZCb3hJdGVyYXRv
ciBjbG9zZXN0Qm94Rm9ySG9yaXpvbnRhbFBvc2l0aW9uKGNvbnN0IExpbmUmIGxpbmUsIGZsb2F0
IGhvcml6b250YWxQb3NpdGlvbiwgYm9vbCBlZGl0YWJsZU9ubHkpCitMZWFmQm94SXRlcmF0b3Ig
Y2xvc2VzdEJveEZvckhvcml6b250YWxQb3NpdGlvbihjb25zdCBMaW5lQm94JiBsaW5lQm94LCBm
bG9hdCBob3Jpem9udGFsUG9zaXRpb24sIGJvb2wgZWRpdGFibGVPbmx5KQogewogICAgIGF1dG8g
aXNFZGl0YWJsZSA9IFsmXShhdXRvIGJveCkgewogICAgICAgICByZXR1cm4gYm94ICYmIGJveC0+
cmVuZGVyZXIoKS5ub2RlKCkgJiYgYm94LT5yZW5kZXJlcigpLm5vZGUoKS0+aGFzRWRpdGFibGVT
dHlsZSgpOwogICAgIH07CiAKLSAgICBhdXRvIGZpcnN0Qm94ID0gbGluZS5maXJzdExlYWZCb3go
KTsKLSAgICBhdXRvIGxhc3RCb3ggPSBsaW5lLmxhc3RMZWFmQm94KCk7CisgICAgYXV0byBmaXJz
dEJveCA9IGxpbmVCb3guZmlyc3RMZWFmQm94KCk7CisgICAgYXV0byBsYXN0Qm94ID0gbGluZUJv
eC5sYXN0TGVhZkJveCgpOwogCiAgICAgaWYgKGZpcnN0Qm94ICE9IGxhc3RCb3gpIHsKICAgICAg
ICAgaWYgKGZpcnN0Qm94LT5pc0xpbmVCcmVhaygpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yTGluZS5oIGIvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yTGluZS5oCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCBlZDg5ZjkwMzhjOTZiMjNjMjA5NTNhZTk5ZWU4ZDY1NzBiZWIxZmEz
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRvckxpbmUuaAorKysgL2Rldi9u
dWxsCkBAIC0xLDI0NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0g
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNs
dWRlICJGb250QmFzZWxpbmUuaCIKLSNpbmNsdWRlICJJbmxpbmVJdGVyYXRvckxpbmVMZWdhY3lQ
YXRoLmgiCi0jaW5jbHVkZSAiSW5saW5lSXRlcmF0b3JMaW5lTW9kZXJuUGF0aC5oIgotI2luY2x1
ZGUgIlJlbmRlckJsb2NrRmxvdy5oIgotI2luY2x1ZGUgPHZhcmlhbnQ+Ci0KLW5hbWVzcGFjZSBX
ZWJDb3JlIHsKLQotY2xhc3MgTGluZVNlbGVjdGlvbjsKLQotbmFtZXNwYWNlIElubGluZUl0ZXJh
dG9yIHsKLQotY2xhc3MgTGluZUl0ZXJhdG9yOwotY2xhc3MgUGF0aEl0ZXJhdG9yOwotY2xhc3Mg
TGVhZkJveEl0ZXJhdG9yOwotCi1zdHJ1Y3QgRW5kTGluZUl0ZXJhdG9yIHsgfTsKLQotY2xhc3Mg
TGluZSB7Ci1wdWJsaWM6Ci0gICAgdXNpbmcgUGF0aFZhcmlhbnQgPSBzdGQ6OnZhcmlhbnQ8Ci0j
aWYgRU5BQkxFKExBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCi0gICAgICAgIExpbmVJdGVyYXRv
ck1vZGVyblBhdGgsCi0jZW5kaWYKLSAgICAgICAgTGluZUl0ZXJhdG9yTGVnYWN5UGF0aAotICAg
ID47Ci0KLSAgICBMaW5lKFBhdGhWYXJpYW50JiYpOwotCi0gICAgZmxvYXQgbGluZUJveFRvcCgp
IGNvbnN0OwotICAgIGZsb2F0IGxpbmVCb3hCb3R0b20oKSBjb25zdDsKLSAgICBmbG9hdCBsaW5l
Qm94SGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gbGluZUJveEJvdHRvbSgpIC0gbGluZUJveFRvcCgp
OyB9Ci0KLSAgICBmbG9hdCBjb250ZW50TG9naWNhbFRvcCgpIGNvbnN0OwotICAgIGZsb2F0IGNv
bnRlbnRMb2dpY2FsQm90dG9tKCkgY29uc3Q7Ci0gICAgZmxvYXQgY29udGVudExvZ2ljYWxMZWZ0
KCkgY29uc3Q7Ci0gICAgZmxvYXQgY29udGVudExvZ2ljYWxSaWdodCgpIGNvbnN0OwotICAgIGZs
b2F0IGNvbnRlbnRMb2dpY2FsV2lkdGgoKSBjb25zdDsKLQotICAgIGZsb2F0IGNvbnRlbnRMb2dp
Y2FsVG9wQWRqdXN0ZWRGb3JQcmVjZWRpbmdMaW5lKCkgY29uc3Q7Ci0gICAgZmxvYXQgY29udGVu
dExvZ2ljYWxCb3R0b21BZGp1c3RlZEZvckZvbGxvd2luZ0xpbmUoKSBjb25zdDsKLQotICAgIGNv
bnN0IFJlbmRlckJsb2NrRmxvdyYgY29udGFpbmluZ0Jsb2NrKCkgY29uc3Q7Ci0gICAgUmVuZGVy
RnJhZ21lbnRDb250YWluZXIqIGNvbnRhaW5pbmdGcmFnbWVudCgpIGNvbnN0OwotCi0gICAgYm9v
bCBpc0hvcml6b250YWwoKSBjb25zdDsKLSAgICBGb250QmFzZWxpbmUgYmFzZWxpbmVUeXBlKCkg
Y29uc3Q7Ci0KLSAgICBib29sIGlzRmlyc3QoKSBjb25zdDsKLSAgICBib29sIGlzRmlyc3RBZnRl
clBhZ2VCcmVhaygpIGNvbnN0OwotCi0gICAgTGVhZkJveEl0ZXJhdG9yIGZpcnN0TGVhZkJveCgp
IGNvbnN0OwotICAgIExlYWZCb3hJdGVyYXRvciBsYXN0TGVhZkJveCgpIGNvbnN0OwotCi0gICAg
TGluZUl0ZXJhdG9yIG5leHQoKSBjb25zdDsKLSAgICBMaW5lSXRlcmF0b3IgcHJldmlvdXMoKSBj
b25zdDsKLQotcHJpdmF0ZToKLSAgICBmcmllbmQgY2xhc3MgTGluZUl0ZXJhdG9yOwotCi0gICAg
UGF0aFZhcmlhbnQgbV9wYXRoVmFyaWFudDsKLX07Ci0KLWNsYXNzIExpbmVJdGVyYXRvciB7Ci1w
dWJsaWM6Ci0gICAgTGluZUl0ZXJhdG9yKCkgOiBtX2xpbmUoTGluZUl0ZXJhdG9yTGVnYWN5UGF0
aCB7IG51bGxwdHIgfSkgeyB9OwotICAgIExpbmVJdGVyYXRvcihjb25zdCBMZWdhY3lSb290SW5s
aW5lQm94KiByb290SW5saW5lQm94KSA6IG1fbGluZShMaW5lSXRlcmF0b3JMZWdhY3lQYXRoIHsg
cm9vdElubGluZUJveCB9KSB7IH07Ci0gICAgTGluZUl0ZXJhdG9yKExpbmU6OlBhdGhWYXJpYW50
JiYpOwotICAgIExpbmVJdGVyYXRvcihjb25zdCBMaW5lJik7Ci0KLSAgICBMaW5lSXRlcmF0b3Im
IG9wZXJhdG9yKysoKSB7IHJldHVybiB0cmF2ZXJzZU5leHQoKTsgfQotICAgIExpbmVJdGVyYXRv
ciYgdHJhdmVyc2VOZXh0KCk7Ci0gICAgTGluZUl0ZXJhdG9yJiB0cmF2ZXJzZVByZXZpb3VzKCk7
Ci0KLSAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gIWF0RW5kKCk7
IH0KLQotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBMaW5lSXRlcmF0b3ImKSBjb25zdDsKLSAg
ICBib29sIG9wZXJhdG9yIT0oY29uc3QgTGluZUl0ZXJhdG9yJiBvdGhlcikgY29uc3QgeyByZXR1
cm4gISgqdGhpcyA9PSBvdGhlcik7IH0KLQotICAgIGJvb2wgb3BlcmF0b3I9PShFbmRMaW5lSXRl
cmF0b3IpIGNvbnN0IHsgcmV0dXJuIGF0RW5kKCk7IH0KLSAgICBib29sIG9wZXJhdG9yIT0oRW5k
TGluZUl0ZXJhdG9yKSBjb25zdCB7IHJldHVybiAhYXRFbmQoKTsgfQotCi0gICAgY29uc3QgTGlu
ZSYgb3BlcmF0b3IqKCkgY29uc3QgeyByZXR1cm4gbV9saW5lOyB9Ci0gICAgY29uc3QgTGluZSog
b3BlcmF0b3ItPigpIGNvbnN0IHsgcmV0dXJuICZtX2xpbmU7IH0KLQotICAgIGJvb2wgYXRFbmQo
KSBjb25zdDsKLQotcHJpdmF0ZToKLSAgICBMaW5lIG1fbGluZTsKLX07Ci0KLUxpbmVJdGVyYXRv
ciBmaXJzdExpbmVGb3IoY29uc3QgUmVuZGVyQmxvY2tGbG93Jik7Ci1MaW5lSXRlcmF0b3IgbGFz
dExpbmVGb3IoY29uc3QgUmVuZGVyQmxvY2tGbG93Jik7Ci1MZWFmQm94SXRlcmF0b3IgY2xvc2Vz
dEJveEZvckhvcml6b250YWxQb3NpdGlvbihjb25zdCBMaW5lJiwgZmxvYXQgaG9yaXpvbnRhbFBv
c2l0aW9uLCBib29sIGVkaXRhYmxlT25seSA9IGZhbHNlKTsKLQotLy8gLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLWlubGluZSBmbG9hdCBwcmV2aW91c0xp
bmVDb250ZW50Qm90dG9tT3JCb3JkZXJBbmRQYWRkaW5nKGNvbnN0IExpbmUmIGxpbmUpCi17Ci0g
ICAgcmV0dXJuIGxpbmUuaXNGaXJzdCgpID8gbGluZS5jb250YWluaW5nQmxvY2soKS5ib3JkZXJB
bmRQYWRkaW5nQmVmb3JlKCkudG9GbG9hdCgpIDogbGluZS5jb250ZW50TG9naWNhbFRvcEFkanVz
dGVkRm9yUHJlY2VkaW5nTGluZSgpOyAKLX0KLQotaW5saW5lIGZsb2F0IGNvbnRlbnRTdGFydElu
QmxvY2tEaXJlY3Rpb24oY29uc3QgTGluZSYgbGluZSkKLXsKLSAgICBpZiAoIWxpbmUuY29udGFp
bmluZ0Jsb2NrKCkuc3R5bGUoKS5pc0ZsaXBwZWRCbG9ja3NXcml0aW5nTW9kZSgpKQotICAgICAg
ICByZXR1cm4gc3RkOjptYXgobGluZS5jb250ZW50TG9naWNhbFRvcCgpLCBwcmV2aW91c0xpbmVD
b250ZW50Qm90dG9tT3JCb3JkZXJBbmRQYWRkaW5nKGxpbmUpKTsKLSAgICByZXR1cm4gc3RkOjpt
aW4obGluZS5jb250ZW50TG9naWNhbEJvdHRvbSgpLCBsaW5lLmNvbnRlbnRMb2dpY2FsQm90dG9t
QWRqdXN0ZWRGb3JGb2xsb3dpbmdMaW5lKCkpOwotfQotCi1pbmxpbmUgTGluZTo6TGluZShQYXRo
VmFyaWFudCYmIHBhdGgpCi0gICAgOiBtX3BhdGhWYXJpYW50KFdURk1vdmUocGF0aCkpCi17Ci19
Ci0KLWlubGluZSBmbG9hdCBMaW5lOjpjb250ZW50TG9naWNhbFRvcCgpIGNvbnN0Ci17Ci0gICAg
cmV0dXJuIFdURjo6c3dpdGNoT24obV9wYXRoVmFyaWFudCwgW10oY29uc3QgYXV0byYgcGF0aCkg
ewotICAgICAgICByZXR1cm4gcGF0aC5jb250ZW50TG9naWNhbFRvcCgpOwotICAgIH0pOwotfQot
Ci1pbmxpbmUgZmxvYXQgTGluZTo6Y29udGVudExvZ2ljYWxCb3R0b20oKSBjb25zdAotewotICAg
IHJldHVybiBXVEY6OnN3aXRjaE9uKG1fcGF0aFZhcmlhbnQsIFtdKGNvbnN0IGF1dG8mIHBhdGgp
IHsKLSAgICAgICAgcmV0dXJuIHBhdGguY29udGVudExvZ2ljYWxCb3R0b20oKTsKLSAgICB9KTsK
LX0KLQotaW5saW5lIGZsb2F0IExpbmU6OmNvbnRlbnRMb2dpY2FsVG9wQWRqdXN0ZWRGb3JQcmVj
ZWRpbmdMaW5lKCkgY29uc3QKLXsKLSAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihtX3BhdGhWYXJp
YW50LCBbXShjb25zdCBhdXRvJiBwYXRoKSB7Ci0gICAgICAgIHJldHVybiBwYXRoLmNvbnRlbnRM
b2dpY2FsVG9wQWRqdXN0ZWRGb3JQcmVjZWRpbmdMaW5lKCk7Ci0gICAgfSk7Ci19Ci0KLWlubGlu
ZSBmbG9hdCBMaW5lOjpjb250ZW50TG9naWNhbEJvdHRvbUFkanVzdGVkRm9yRm9sbG93aW5nTGlu
ZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIFdURjo6c3dpdGNoT24obV9wYXRoVmFyaWFudCwgW10o
Y29uc3QgYXV0byYgcGF0aCkgewotICAgICAgICByZXR1cm4gcGF0aC5jb250ZW50TG9naWNhbEJv
dHRvbUFkanVzdGVkRm9yRm9sbG93aW5nTGluZSgpOwotICAgIH0pOwotfQotCi1pbmxpbmUgZmxv
YXQgTGluZTo6bGluZUJveFRvcCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIFdURjo6c3dpdGNoT24o
bV9wYXRoVmFyaWFudCwgW10oY29uc3QgYXV0byYgcGF0aCkgewotICAgICAgICByZXR1cm4gcGF0
aC5saW5lQm94VG9wKCk7Ci0gICAgfSk7Ci19Ci0KLWlubGluZSBmbG9hdCBMaW5lOjpsaW5lQm94
Qm90dG9tKCkgY29uc3QKLXsKLSAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihtX3BhdGhWYXJpYW50
LCBbXShjb25zdCBhdXRvJiBwYXRoKSB7Ci0gICAgICAgIHJldHVybiBwYXRoLmxpbmVCb3hCb3R0
b20oKTsKLSAgICB9KTsKLX0KLQotaW5saW5lIGZsb2F0IExpbmU6OmNvbnRlbnRMb2dpY2FsTGVm
dCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIFdURjo6c3dpdGNoT24obV9wYXRoVmFyaWFudCwgW10o
Y29uc3QgYXV0byYgcGF0aCkgewotICAgICAgICByZXR1cm4gcGF0aC5jb250ZW50TG9naWNhbExl
ZnQoKTsKLSAgICB9KTsKLX0KLQotaW5saW5lIGZsb2F0IExpbmU6OmNvbnRlbnRMb2dpY2FsUmln
aHQoKSBjb25zdAotewotICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKG1fcGF0aFZhcmlhbnQsIFtd
KGNvbnN0IGF1dG8mIHBhdGgpIHsKLSAgICAgICAgcmV0dXJuIHBhdGguY29udGVudExvZ2ljYWxS
aWdodCgpOwotICAgIH0pOwotfQotCi1pbmxpbmUgZmxvYXQgTGluZTo6Y29udGVudExvZ2ljYWxX
aWR0aCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGNvbnRlbnRMb2dpY2FsUmlnaHQoKSAtIGNvbnRl
bnRMb2dpY2FsTGVmdCgpOwotfQotCi1pbmxpbmUgYm9vbCBMaW5lOjppc0hvcml6b250YWwoKSBj
b25zdAotewotICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKG1fcGF0aFZhcmlhbnQsIFtdKGNvbnN0
IGF1dG8mIHBhdGgpIHsKLSAgICAgICAgcmV0dXJuIHBhdGguaXNIb3Jpem9udGFsKCk7Ci0gICAg
fSk7Ci19Ci0KLWlubGluZSBGb250QmFzZWxpbmUgTGluZTo6YmFzZWxpbmVUeXBlKCkgY29uc3QK
LXsKLSAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihtX3BhdGhWYXJpYW50LCBbXShjb25zdCBhdXRv
JiBwYXRoKSB7Ci0gICAgICAgIHJldHVybiBwYXRoLmJhc2VsaW5lVHlwZSgpOwotICAgIH0pOwot
fQotCi1pbmxpbmUgY29uc3QgUmVuZGVyQmxvY2tGbG93JiBMaW5lOjpjb250YWluaW5nQmxvY2so
KSBjb25zdAotewotICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKG1fcGF0aFZhcmlhbnQsIFtdKGNv
bnN0IGF1dG8mIHBhdGgpIC0+IGNvbnN0IFJlbmRlckJsb2NrRmxvdyYgewotICAgICAgICByZXR1
cm4gcGF0aC5jb250YWluaW5nQmxvY2soKTsKLSAgICB9KTsKLX0KLQotaW5saW5lIFJlbmRlckZy
YWdtZW50Q29udGFpbmVyKiBMaW5lOjpjb250YWluaW5nRnJhZ21lbnQoKSBjb25zdAotewotICAg
IHJldHVybiBXVEY6OnN3aXRjaE9uKG1fcGF0aFZhcmlhbnQsIFtdKGNvbnN0IGF1dG8mIHBhdGgp
IHsKLSAgICAgICAgcmV0dXJuIHBhdGguY29udGFpbmluZ0ZyYWdtZW50KCk7Ci0gICAgfSk7Ci19
Ci0KLWlubGluZSBib29sIExpbmU6OmlzRmlyc3RBZnRlclBhZ2VCcmVhaygpIGNvbnN0Ci17Ci0g
ICAgcmV0dXJuIFdURjo6c3dpdGNoT24obV9wYXRoVmFyaWFudCwgW10oY29uc3QgYXV0byYgcGF0
aCkgewotICAgICAgICByZXR1cm4gcGF0aC5pc0ZpcnN0QWZ0ZXJQYWdlQnJlYWsoKTsKLSAgICB9
KTsKLX0KLQotaW5saW5lIGJvb2wgTGluZTo6aXNGaXJzdCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJu
ICFwcmV2aW91cygpOwotfQotCi19Ci19Ci0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRvckxpbmVCb3guaCBiL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRvckxpbmVCb3guaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43
M2Q4Yzk3ZDFiMzQ3MTFmODI4YmJjYTRjYTUyNjBkMTkxNjY3YzJmCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yTGluZUJv
eC5oCkBAIC0wLDAgKzEsMjQ0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNs
dWRlICJGb250QmFzZWxpbmUuaCIKKyNpbmNsdWRlICJJbmxpbmVJdGVyYXRvckxpbmVCb3hMZWdh
Y3lQYXRoLmgiCisjaW5jbHVkZSAiSW5saW5lSXRlcmF0b3JMaW5lQm94TW9kZXJuUGF0aC5oIgor
I2luY2x1ZGUgIlJlbmRlckJsb2NrRmxvdy5oIgorI2luY2x1ZGUgPHZhcmlhbnQ+CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworY2xhc3MgTGluZVNlbGVjdGlvbjsKKworbmFtZXNwYWNlIElubGlu
ZUl0ZXJhdG9yIHsKKworY2xhc3MgTGluZUJveEl0ZXJhdG9yOworY2xhc3MgUGF0aEl0ZXJhdG9y
OworY2xhc3MgTGVhZkJveEl0ZXJhdG9yOworCitzdHJ1Y3QgRW5kTGluZUJveEl0ZXJhdG9yIHsg
fTsKKworY2xhc3MgTGluZUJveCB7CitwdWJsaWM6CisgICAgdXNpbmcgUGF0aFZhcmlhbnQgPSBz
dGQ6OnZhcmlhbnQ8CisjaWYgRU5BQkxFKExBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCisgICAg
ICAgIExpbmVCb3hJdGVyYXRvck1vZGVyblBhdGgsCisjZW5kaWYKKyAgICAgICAgTGluZUJveEl0
ZXJhdG9yTGVnYWN5UGF0aAorICAgID47CisKKyAgICBMaW5lQm94KFBhdGhWYXJpYW50JiYpOwor
CisgICAgZmxvYXQgdG9wKCkgY29uc3Q7CisgICAgZmxvYXQgYm90dG9tKCkgY29uc3Q7CisgICAg
ZmxvYXQgaGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gYm90dG9tKCkgLSB0b3AoKTsgfQorCisgICAg
ZmxvYXQgY29udGVudExvZ2ljYWxUb3AoKSBjb25zdDsKKyAgICBmbG9hdCBjb250ZW50TG9naWNh
bEJvdHRvbSgpIGNvbnN0OworICAgIGZsb2F0IGNvbnRlbnRMb2dpY2FsTGVmdCgpIGNvbnN0Owor
ICAgIGZsb2F0IGNvbnRlbnRMb2dpY2FsUmlnaHQoKSBjb25zdDsKKyAgICBmbG9hdCBjb250ZW50
TG9naWNhbFdpZHRoKCkgY29uc3Q7CisKKyAgICBmbG9hdCBjb250ZW50TG9naWNhbFRvcEFkanVz
dGVkRm9yUHJlY2VkaW5nTGluZUJveCgpIGNvbnN0OworICAgIGZsb2F0IGNvbnRlbnRMb2dpY2Fs
Qm90dG9tQWRqdXN0ZWRGb3JGb2xsb3dpbmdMaW5lQm94KCkgY29uc3Q7CisKKyAgICBjb25zdCBS
ZW5kZXJCbG9ja0Zsb3cmIGNvbnRhaW5pbmdCbG9jaygpIGNvbnN0OworICAgIFJlbmRlckZyYWdt
ZW50Q29udGFpbmVyKiBjb250YWluaW5nRnJhZ21lbnQoKSBjb25zdDsKKworICAgIGJvb2wgaXNI
b3Jpem9udGFsKCkgY29uc3Q7CisgICAgRm9udEJhc2VsaW5lIGJhc2VsaW5lVHlwZSgpIGNvbnN0
OworCisgICAgYm9vbCBpc0ZpcnN0KCkgY29uc3Q7CisgICAgYm9vbCBpc0ZpcnN0QWZ0ZXJQYWdl
QnJlYWsoKSBjb25zdDsKKworICAgIExlYWZCb3hJdGVyYXRvciBmaXJzdExlYWZCb3goKSBjb25z
dDsKKyAgICBMZWFmQm94SXRlcmF0b3IgbGFzdExlYWZCb3goKSBjb25zdDsKKworICAgIExpbmVC
b3hJdGVyYXRvciBuZXh0KCkgY29uc3Q7CisgICAgTGluZUJveEl0ZXJhdG9yIHByZXZpb3VzKCkg
Y29uc3Q7CisKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIExpbmVCb3hJdGVyYXRvcjsKKwor
ICAgIFBhdGhWYXJpYW50IG1fcGF0aFZhcmlhbnQ7Cit9OworCitjbGFzcyBMaW5lQm94SXRlcmF0
b3IgeworcHVibGljOgorICAgIExpbmVCb3hJdGVyYXRvcigpIDogbV9saW5lQm94KExpbmVCb3hJ
dGVyYXRvckxlZ2FjeVBhdGggeyBudWxscHRyIH0pIHsgfTsKKyAgICBMaW5lQm94SXRlcmF0b3Io
Y29uc3QgTGVnYWN5Um9vdElubGluZUJveCogcm9vdElubGluZUJveCkgOiBtX2xpbmVCb3goTGlu
ZUJveEl0ZXJhdG9yTGVnYWN5UGF0aCB7IHJvb3RJbmxpbmVCb3ggfSkgeyB9OworICAgIExpbmVC
b3hJdGVyYXRvcihMaW5lQm94OjpQYXRoVmFyaWFudCYmKTsKKyAgICBMaW5lQm94SXRlcmF0b3Io
Y29uc3QgTGluZUJveCYpOworCisgICAgTGluZUJveEl0ZXJhdG9yJiBvcGVyYXRvcisrKCkgeyBy
ZXR1cm4gdHJhdmVyc2VOZXh0KCk7IH0KKyAgICBMaW5lQm94SXRlcmF0b3ImIHRyYXZlcnNlTmV4
dCgpOworICAgIExpbmVCb3hJdGVyYXRvciYgdHJhdmVyc2VQcmV2aW91cygpOworCisgICAgZXhw
bGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuICFhdEVuZCgpOyB9CisKKyAgICBi
b29sIG9wZXJhdG9yPT0oY29uc3QgTGluZUJveEl0ZXJhdG9yJikgY29uc3Q7CisgICAgYm9vbCBv
cGVyYXRvciE9KGNvbnN0IExpbmVCb3hJdGVyYXRvciYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuICEo
KnRoaXMgPT0gb3RoZXIpOyB9CisKKyAgICBib29sIG9wZXJhdG9yPT0oRW5kTGluZUJveEl0ZXJh
dG9yKSBjb25zdCB7IHJldHVybiBhdEVuZCgpOyB9CisgICAgYm9vbCBvcGVyYXRvciE9KEVuZExp
bmVCb3hJdGVyYXRvcikgY29uc3QgeyByZXR1cm4gIWF0RW5kKCk7IH0KKworICAgIGNvbnN0IExp
bmVCb3gmIG9wZXJhdG9yKigpIGNvbnN0IHsgcmV0dXJuIG1fbGluZUJveDsgfQorICAgIGNvbnN0
IExpbmVCb3gqIG9wZXJhdG9yLT4oKSBjb25zdCB7IHJldHVybiAmbV9saW5lQm94OyB9CisKKyAg
ICBib29sIGF0RW5kKCkgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgTGluZUJveCBtX2xpbmVCb3g7
Cit9OworCitMaW5lQm94SXRlcmF0b3IgZmlyc3RMaW5lQm94Rm9yKGNvbnN0IFJlbmRlckJsb2Nr
RmxvdyYpOworTGluZUJveEl0ZXJhdG9yIGxhc3RMaW5lQm94Rm9yKGNvbnN0IFJlbmRlckJsb2Nr
RmxvdyYpOworTGVhZkJveEl0ZXJhdG9yIGNsb3Nlc3RCb3hGb3JIb3Jpem9udGFsUG9zaXRpb24o
Y29uc3QgTGluZUJveCYsIGZsb2F0IGhvcml6b250YWxQb3NpdGlvbiwgYm9vbCBlZGl0YWJsZU9u
bHkgPSBmYWxzZSk7CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCitpbmxpbmUgZmxvYXQgcHJldmlvdXNMaW5lQm94Q29udGVudEJvdHRvbU9yQm9y
ZGVyQW5kUGFkZGluZyhjb25zdCBMaW5lQm94JiBsaW5lQm94KQoreworICAgIHJldHVybiBsaW5l
Qm94LmlzRmlyc3QoKSA/IGxpbmVCb3guY29udGFpbmluZ0Jsb2NrKCkuYm9yZGVyQW5kUGFkZGlu
Z0JlZm9yZSgpLnRvRmxvYXQoKSA6IGxpbmVCb3guY29udGVudExvZ2ljYWxUb3BBZGp1c3RlZEZv
clByZWNlZGluZ0xpbmVCb3goKTsgCit9CisKK2lubGluZSBmbG9hdCBjb250ZW50U3RhcnRJbkJs
b2NrRGlyZWN0aW9uKGNvbnN0IExpbmVCb3gmIGxpbmVCb3gpCit7CisgICAgaWYgKCFsaW5lQm94
LmNvbnRhaW5pbmdCbG9jaygpLnN0eWxlKCkuaXNGbGlwcGVkQmxvY2tzV3JpdGluZ01vZGUoKSkK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bWF4KGxpbmVCb3guY29udGVudExvZ2ljYWxUb3AoKSwgcHJl
dmlvdXNMaW5lQm94Q29udGVudEJvdHRvbU9yQm9yZGVyQW5kUGFkZGluZyhsaW5lQm94KSk7Cisg
ICAgcmV0dXJuIHN0ZDo6bWluKGxpbmVCb3guY29udGVudExvZ2ljYWxCb3R0b20oKSwgbGluZUJv
eC5jb250ZW50TG9naWNhbEJvdHRvbUFkanVzdGVkRm9yRm9sbG93aW5nTGluZUJveCgpKTsKK30K
KworaW5saW5lIExpbmVCb3g6OkxpbmVCb3goUGF0aFZhcmlhbnQmJiBwYXRoKQorICAgIDogbV9w
YXRoVmFyaWFudChXVEZNb3ZlKHBhdGgpKQoreworfQorCitpbmxpbmUgZmxvYXQgTGluZUJveDo6
Y29udGVudExvZ2ljYWxUb3AoKSBjb25zdAoreworICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKG1f
cGF0aFZhcmlhbnQsIFtdKGNvbnN0IGF1dG8mIHBhdGgpIHsKKyAgICAgICAgcmV0dXJuIHBhdGgu
Y29udGVudExvZ2ljYWxUb3AoKTsKKyAgICB9KTsKK30KKworaW5saW5lIGZsb2F0IExpbmVCb3g6
OmNvbnRlbnRMb2dpY2FsQm90dG9tKCkgY29uc3QKK3sKKyAgICByZXR1cm4gV1RGOjpzd2l0Y2hP
bihtX3BhdGhWYXJpYW50LCBbXShjb25zdCBhdXRvJiBwYXRoKSB7CisgICAgICAgIHJldHVybiBw
YXRoLmNvbnRlbnRMb2dpY2FsQm90dG9tKCk7CisgICAgfSk7Cit9CisKK2lubGluZSBmbG9hdCBM
aW5lQm94Ojpjb250ZW50TG9naWNhbFRvcEFkanVzdGVkRm9yUHJlY2VkaW5nTGluZUJveCgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIFdURjo6c3dpdGNoT24obV9wYXRoVmFyaWFudCwgW10oY29uc3Qg
YXV0byYgcGF0aCkgeworICAgICAgICByZXR1cm4gcGF0aC5jb250ZW50TG9naWNhbFRvcEFkanVz
dGVkRm9yUHJlY2VkaW5nTGluZUJveCgpOworICAgIH0pOworfQorCitpbmxpbmUgZmxvYXQgTGlu
ZUJveDo6Y29udGVudExvZ2ljYWxCb3R0b21BZGp1c3RlZEZvckZvbGxvd2luZ0xpbmVCb3goKSBj
b25zdAoreworICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKG1fcGF0aFZhcmlhbnQsIFtdKGNvbnN0
IGF1dG8mIHBhdGgpIHsKKyAgICAgICAgcmV0dXJuIHBhdGguY29udGVudExvZ2ljYWxCb3R0b21B
ZGp1c3RlZEZvckZvbGxvd2luZ0xpbmVCb3goKTsKKyAgICB9KTsKK30KKworaW5saW5lIGZsb2F0
IExpbmVCb3g6OnRvcCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIFdURjo6c3dpdGNoT24obV9wYXRo
VmFyaWFudCwgW10oY29uc3QgYXV0byYgcGF0aCkgeworICAgICAgICByZXR1cm4gcGF0aC50b3Ao
KTsKKyAgICB9KTsKK30KKworaW5saW5lIGZsb2F0IExpbmVCb3g6OmJvdHRvbSgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIFdURjo6c3dpdGNoT24obV9wYXRoVmFyaWFudCwgW10oY29uc3QgYXV0byYg
cGF0aCkgeworICAgICAgICByZXR1cm4gcGF0aC5ib3R0b20oKTsKKyAgICB9KTsKK30KKworaW5s
aW5lIGZsb2F0IExpbmVCb3g6OmNvbnRlbnRMb2dpY2FsTGVmdCgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIFdURjo6c3dpdGNoT24obV9wYXRoVmFyaWFudCwgW10oY29uc3QgYXV0byYgcGF0aCkgewor
ICAgICAgICByZXR1cm4gcGF0aC5jb250ZW50TG9naWNhbExlZnQoKTsKKyAgICB9KTsKK30KKwor
aW5saW5lIGZsb2F0IExpbmVCb3g6OmNvbnRlbnRMb2dpY2FsUmlnaHQoKSBjb25zdAoreworICAg
IHJldHVybiBXVEY6OnN3aXRjaE9uKG1fcGF0aFZhcmlhbnQsIFtdKGNvbnN0IGF1dG8mIHBhdGgp
IHsKKyAgICAgICAgcmV0dXJuIHBhdGguY29udGVudExvZ2ljYWxSaWdodCgpOworICAgIH0pOwor
fQorCitpbmxpbmUgZmxvYXQgTGluZUJveDo6Y29udGVudExvZ2ljYWxXaWR0aCgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIGNvbnRlbnRMb2dpY2FsUmlnaHQoKSAtIGNvbnRlbnRMb2dpY2FsTGVmdCgp
OworfQorCitpbmxpbmUgYm9vbCBMaW5lQm94Ojppc0hvcml6b250YWwoKSBjb25zdAoreworICAg
IHJldHVybiBXVEY6OnN3aXRjaE9uKG1fcGF0aFZhcmlhbnQsIFtdKGNvbnN0IGF1dG8mIHBhdGgp
IHsKKyAgICAgICAgcmV0dXJuIHBhdGguaXNIb3Jpem9udGFsKCk7CisgICAgfSk7Cit9CisKK2lu
bGluZSBGb250QmFzZWxpbmUgTGluZUJveDo6YmFzZWxpbmVUeXBlKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gV1RGOjpzd2l0Y2hPbihtX3BhdGhWYXJpYW50LCBbXShjb25zdCBhdXRvJiBwYXRoKSB7
CisgICAgICAgIHJldHVybiBwYXRoLmJhc2VsaW5lVHlwZSgpOworICAgIH0pOworfQorCitpbmxp
bmUgY29uc3QgUmVuZGVyQmxvY2tGbG93JiBMaW5lQm94Ojpjb250YWluaW5nQmxvY2soKSBjb25z
dAoreworICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKG1fcGF0aFZhcmlhbnQsIFtdKGNvbnN0IGF1
dG8mIHBhdGgpIC0+IGNvbnN0IFJlbmRlckJsb2NrRmxvdyYgeworICAgICAgICByZXR1cm4gcGF0
aC5jb250YWluaW5nQmxvY2soKTsKKyAgICB9KTsKK30KKworaW5saW5lIFJlbmRlckZyYWdtZW50
Q29udGFpbmVyKiBMaW5lQm94Ojpjb250YWluaW5nRnJhZ21lbnQoKSBjb25zdAoreworICAgIHJl
dHVybiBXVEY6OnN3aXRjaE9uKG1fcGF0aFZhcmlhbnQsIFtdKGNvbnN0IGF1dG8mIHBhdGgpIHsK
KyAgICAgICAgcmV0dXJuIHBhdGguY29udGFpbmluZ0ZyYWdtZW50KCk7CisgICAgfSk7Cit9CisK
K2lubGluZSBib29sIExpbmVCb3g6OmlzRmlyc3RBZnRlclBhZ2VCcmVhaygpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIFdURjo6c3dpdGNoT24obV9wYXRoVmFyaWFudCwgW10oY29uc3QgYXV0byYgcGF0
aCkgeworICAgICAgICByZXR1cm4gcGF0aC5pc0ZpcnN0QWZ0ZXJQYWdlQnJlYWsoKTsKKyAgICB9
KTsKK30KKworaW5saW5lIGJvb2wgTGluZUJveDo6aXNGaXJzdCgpIGNvbnN0Cit7CisgICAgcmV0
dXJuICFwcmV2aW91cygpOworfQorCit9Cit9CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRvckxpbmVCb3hMZWdhY3lQYXRoLmggYi9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JMaW5lQm94TGVn
YWN5UGF0aC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE1OTI0YzMzZjFmN2IyOTFmNzRiMDFhMWZiODE1ODFmZjM4
ODIxZTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRp
b24vSW5saW5lSXRlcmF0b3JMaW5lQm94TGVnYWN5UGF0aC5oCkBAIC0wLDAgKzEsOTIgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIklubGluZUl0ZXJhdG9yQm94TGVn
YWN5UGF0aC5oIgorI2luY2x1ZGUgIkxheW91dEludGVncmF0aW9uSW5saW5lQ29udGVudC5oIgor
I2luY2x1ZGUgIkxlZ2FjeVJvb3RJbmxpbmVCb3guaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
bmFtZXNwYWNlIElubGluZUl0ZXJhdG9yIHsKKworY2xhc3MgTGluZUJveEl0ZXJhdG9yTGVnYWN5
UGF0aCB7CitwdWJsaWM6CisgICAgTGluZUJveEl0ZXJhdG9yTGVnYWN5UGF0aChjb25zdCBMZWdh
Y3lSb290SW5saW5lQm94KiByb290SW5saW5lQm94KQorICAgICAgICA6IG1fcm9vdElubGluZUJv
eChyb290SW5saW5lQm94KQorICAgIHsKKyAgICB9CisgICAgTGluZUJveEl0ZXJhdG9yTGVnYWN5
UGF0aChMaW5lQm94SXRlcmF0b3JMZWdhY3lQYXRoJiYpID0gZGVmYXVsdDsKKyAgICBMaW5lQm94
SXRlcmF0b3JMZWdhY3lQYXRoKGNvbnN0IExpbmVCb3hJdGVyYXRvckxlZ2FjeVBhdGgmKSA9IGRl
ZmF1bHQ7CisgICAgTGluZUJveEl0ZXJhdG9yTGVnYWN5UGF0aCYgb3BlcmF0b3I9KGNvbnN0IExp
bmVCb3hJdGVyYXRvckxlZ2FjeVBhdGgmKSA9IGRlZmF1bHQ7CisgICAgTGluZUJveEl0ZXJhdG9y
TGVnYWN5UGF0aCYgb3BlcmF0b3I9KExpbmVCb3hJdGVyYXRvckxlZ2FjeVBhdGgmJikgPSBkZWZh
dWx0OworCisgICAgZmxvYXQgY29udGVudExvZ2ljYWxUb3AoKSBjb25zdCB7IHJldHVybiBtX3Jv
b3RJbmxpbmVCb3gtPmxpbmVUb3AoKS50b0Zsb2F0KCk7IH0KKyAgICBmbG9hdCBjb250ZW50TG9n
aWNhbEJvdHRvbSgpIGNvbnN0IHsgcmV0dXJuIG1fcm9vdElubGluZUJveC0+bGluZUJvdHRvbSgp
LnRvRmxvYXQoKTsgfQorICAgIGZsb2F0IGNvbnRlbnRMb2dpY2FsVG9wQWRqdXN0ZWRGb3JQcmVj
ZWRpbmdMaW5lQm94KCkgY29uc3QgeyByZXR1cm4gbV9yb290SW5saW5lQm94LT5zZWxlY3Rpb25U
b3AoKS50b0Zsb2F0KCk7IH0KKyAgICBmbG9hdCBjb250ZW50TG9naWNhbEJvdHRvbUFkanVzdGVk
Rm9yRm9sbG93aW5nTGluZUJveCgpIGNvbnN0IHsgcmV0dXJuIG1fcm9vdElubGluZUJveC0+c2Vs
ZWN0aW9uQm90dG9tKCkudG9GbG9hdCgpOyB9CisgICAgZmxvYXQgdG9wKCkgY29uc3QgeyByZXR1
cm4gbV9yb290SW5saW5lQm94LT5saW5lQm94VG9wKCkudG9GbG9hdCgpOyB9CisgICAgZmxvYXQg
Ym90dG9tKCkgY29uc3QgeyByZXR1cm4gbV9yb290SW5saW5lQm94LT5saW5lQm94Qm90dG9tKCku
dG9GbG9hdCgpOyB9CisKKyAgICBmbG9hdCBjb250ZW50TG9naWNhbExlZnQoKSBjb25zdCB7IHJl
dHVybiBtX3Jvb3RJbmxpbmVCb3gtPmxvZ2ljYWxMZWZ0KCk7IH0KKyAgICBmbG9hdCBjb250ZW50
TG9naWNhbFJpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9yb290SW5saW5lQm94LT5sb2dpY2FsUmln
aHQoKTsgfQorICAgIGJvb2wgaXNIb3Jpem9udGFsKCkgY29uc3QgeyByZXR1cm4gbV9yb290SW5s
aW5lQm94LT5pc0hvcml6b250YWwoKTsgfQorICAgIEZvbnRCYXNlbGluZSBiYXNlbGluZVR5cGUo
KSBjb25zdCB7IHJldHVybiBtX3Jvb3RJbmxpbmVCb3gtPmJhc2VsaW5lVHlwZSgpOyB9CisKKyAg
ICBjb25zdCBSZW5kZXJCbG9ja0Zsb3cmIGNvbnRhaW5pbmdCbG9jaygpIGNvbnN0IHsgcmV0dXJu
IG1fcm9vdElubGluZUJveC0+YmxvY2tGbG93KCk7IH0KKworICAgIFJlbmRlckZyYWdtZW50Q29u
dGFpbmVyKiBjb250YWluaW5nRnJhZ21lbnQoKSBjb25zdCB7IHJldHVybiBtX3Jvb3RJbmxpbmVC
b3gtPmNvbnRhaW5pbmdGcmFnbWVudCgpOyB9CisgICAgYm9vbCBpc0ZpcnN0QWZ0ZXJQYWdlQnJl
YWsoKSBjb25zdCB7IHJldHVybiBtX3Jvb3RJbmxpbmVCb3gtPmlzRmlyc3RBZnRlclBhZ2VCcmVh
aygpOyB9CisKKyAgICB2b2lkIHRyYXZlcnNlTmV4dCgpCisgICAgeworICAgICAgICBtX3Jvb3RJ
bmxpbmVCb3ggPSBtX3Jvb3RJbmxpbmVCb3gtPm5leHRSb290Qm94KCk7CisgICAgfQorCisgICAg
dm9pZCB0cmF2ZXJzZVByZXZpb3VzKCkKKyAgICB7CisgICAgICAgIG1fcm9vdElubGluZUJveCA9
IG1fcm9vdElubGluZUJveC0+cHJldlJvb3RCb3goKTsKKyAgICB9CisKKyAgICBib29sIG9wZXJh
dG9yPT0oY29uc3QgTGluZUJveEl0ZXJhdG9yTGVnYWN5UGF0aCYgb3RoZXIpIGNvbnN0IHsgcmV0
dXJuIG1fcm9vdElubGluZUJveCA9PSBvdGhlci5tX3Jvb3RJbmxpbmVCb3g7IH0KKworICAgIGJv
b2wgYXRFbmQoKSBjb25zdCB7IHJldHVybiAhbV9yb290SW5saW5lQm94OyB9CisKKyAgICBCb3hM
ZWdhY3lQYXRoIGZpcnN0TGVhZkJveCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4geyBt
X3Jvb3RJbmxpbmVCb3gtPmZpcnN0TGVhZkRlc2NlbmRhbnQoKSB9OworICAgIH0KKworICAgIEJv
eExlZ2FjeVBhdGggbGFzdExlYWZCb3goKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIHsg
bV9yb290SW5saW5lQm94LT5sYXN0TGVhZkRlc2NlbmRhbnQoKSB9OworICAgIH0KKworcHJpdmF0
ZToKKyAgICBjb25zdCBMZWdhY3lSb290SW5saW5lQm94KiBtX3Jvb3RJbmxpbmVCb3g7Cit9Owor
Cit9Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5s
aW5lSXRlcmF0b3JMaW5lQm94TW9kZXJuUGF0aC5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lu
dGVncmF0aW9uL0lubGluZUl0ZXJhdG9yTGluZUJveE1vZGVyblBhdGguaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43
MGJiYmI0MGY1NTBmMWMxNTg0MTA2N2JjYWIxOWZiZTcxMDIwN2IxCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yTGluZUJv
eE1vZGVyblBhdGguaApAQCAtMCwwICsxLDEyOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaWYgRU5BQkxFKExBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCisKKyNpbmNsdWRlICJJ
bmxpbmVJdGVyYXRvckJveE1vZGVyblBhdGguaCIKKyNpbmNsdWRlICJMYXlvdXRJbnRlZ3JhdGlv
bklubGluZUNvbnRlbnQuaCIKKyNpbmNsdWRlICJSZW5kZXJCbG9ja0Zsb3cuaCIKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworbmFtZXNwYWNlIElubGluZUl0ZXJhdG9yIHsKKworY2xhc3MgQm94TW9k
ZXJuUGF0aDsKKworY2xhc3MgTGluZUJveEl0ZXJhdG9yTW9kZXJuUGF0aCB7CitwdWJsaWM6Cisg
ICAgTGluZUJveEl0ZXJhdG9yTW9kZXJuUGF0aChjb25zdCBMYXlvdXRJbnRlZ3JhdGlvbjo6SW5s
aW5lQ29udGVudCYgaW5saW5lQ29udGVudCwgc2l6ZV90IGxpbmVJbmRleCkKKyAgICAgICAgOiBt
X2lubGluZUNvbnRlbnQoJmlubGluZUNvbnRlbnQpCisgICAgICAgICwgbV9saW5lSW5kZXgobGlu
ZUluZGV4KQorICAgIHsKKyAgICAgICAgQVNTRVJUKGxpbmVJbmRleCA8PSBsaW5lcygpLnNpemUo
KSk7CisgICAgfQorICAgIExpbmVCb3hJdGVyYXRvck1vZGVyblBhdGgoTGluZUJveEl0ZXJhdG9y
TW9kZXJuUGF0aCYmKSA9IGRlZmF1bHQ7CisgICAgTGluZUJveEl0ZXJhdG9yTW9kZXJuUGF0aChj
b25zdCBMaW5lQm94SXRlcmF0b3JNb2Rlcm5QYXRoJikgPSBkZWZhdWx0OworICAgIExpbmVCb3hJ
dGVyYXRvck1vZGVyblBhdGgmIG9wZXJhdG9yPShjb25zdCBMaW5lQm94SXRlcmF0b3JNb2Rlcm5Q
YXRoJikgPSBkZWZhdWx0OworICAgIExpbmVCb3hJdGVyYXRvck1vZGVyblBhdGgmIG9wZXJhdG9y
PShMaW5lQm94SXRlcmF0b3JNb2Rlcm5QYXRoJiYpID0gZGVmYXVsdDsKKworICAgIGZsb2F0IGNv
bnRlbnRMb2dpY2FsVG9wKCkgY29uc3QgeyByZXR1cm4gbGluZSgpLmVuY2xvc2luZ0NvbnRlbnRU
b3AoKTsgfQorICAgIGZsb2F0IGNvbnRlbnRMb2dpY2FsQm90dG9tKCkgY29uc3QgeyByZXR1cm4g
bGluZSgpLmVuY2xvc2luZ0NvbnRlbnRCb3R0b20oKTsgfQorICAgIGZsb2F0IHRvcCgpIGNvbnN0
IHsgcmV0dXJuIGxpbmUoKS5saW5lQm94VG9wKCk7IH0KKyAgICBmbG9hdCBib3R0b20oKSBjb25z
dCB7IHJldHVybiBsaW5lKCkubGluZUJveEJvdHRvbSgpOyB9CisKKyAgICBmbG9hdCBjb250ZW50
TG9naWNhbFRvcEFkanVzdGVkRm9yUHJlY2VkaW5nTGluZUJveCgpIGNvbnN0IHsgcmV0dXJuICFt
X2xpbmVJbmRleCA/IGNvbnRlbnRMb2dpY2FsVG9wKCkgOiBMaW5lQm94SXRlcmF0b3JNb2Rlcm5Q
YXRoKCptX2lubGluZUNvbnRlbnQsIG1fbGluZUluZGV4IC0gMSkuY29udGVudExvZ2ljYWxCb3R0
b21BZGp1c3RlZEZvckZvbGxvd2luZ0xpbmVCb3goKTsgfQorICAgIC8vIEZJWE1FOiBJbXBsZW1l
bnQuCisgICAgZmxvYXQgY29udGVudExvZ2ljYWxCb3R0b21BZGp1c3RlZEZvckZvbGxvd2luZ0xp
bmVCb3goKSBjb25zdCB7IHJldHVybiBjb250ZW50TG9naWNhbEJvdHRvbSgpOyB9CisKKyAgICBm
bG9hdCBjb250ZW50TG9naWNhbExlZnQoKSBjb25zdCB7IHJldHVybiBsaW5lKCkubGluZUJveExl
ZnQoKSArIGxpbmUoKS5jb250ZW50TG9naWNhbE9mZnNldCgpOyB9CisgICAgZmxvYXQgY29udGVu
dExvZ2ljYWxSaWdodCgpIGNvbnN0IHsgcmV0dXJuIGNvbnRlbnRMb2dpY2FsTGVmdCgpICsgbGlu
ZSgpLmNvbnRlbnRMb2dpY2FsV2lkdGgoKTsgfQorICAgIGJvb2wgaXNIb3Jpem9udGFsKCkgY29u
c3QgeyByZXR1cm4gbGluZSgpLmlzSG9yaXpvbnRhbCgpOyB9CisgICAgRm9udEJhc2VsaW5lIGJh
c2VsaW5lVHlwZSgpIGNvbnN0IHsgcmV0dXJuIGxpbmUoKS5iYXNlbGluZVR5cGUoKTsgfQorCisg
ICAgY29uc3QgUmVuZGVyQmxvY2tGbG93JiBjb250YWluaW5nQmxvY2soKSBjb25zdCB7IHJldHVy
biBtX2lubGluZUNvbnRlbnQtPmNvbnRhaW5pbmdCbG9jaygpOyB9CisKKyAgICBSZW5kZXJGcmFn
bWVudENvbnRhaW5lciogY29udGFpbmluZ0ZyYWdtZW50KCkgY29uc3QgeyByZXR1cm4gbnVsbHB0
cjsgfQorICAgIGJvb2wgaXNGaXJzdEFmdGVyUGFnZUJyZWFrKCkgY29uc3QgeyByZXR1cm4gZmFs
c2U7IH0KKworICAgIHZvaWQgdHJhdmVyc2VOZXh0KCkKKyAgICB7CisgICAgICAgIEFTU0VSVCgh
YXRFbmQoKSk7CisKKyAgICAgICAgKyttX2xpbmVJbmRleDsKKyAgICB9CisKKyAgICB2b2lkIHRy
YXZlcnNlUHJldmlvdXMoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKCFhdEVuZCgpKTsKKworICAg
ICAgICBpZiAoIW1fbGluZUluZGV4KSB7CisgICAgICAgICAgICBzZXRBdEVuZCgpOworICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgLS1tX2xpbmVJbmRleDsKKyAgICB9
CisKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgTGluZUJveEl0ZXJhdG9yTW9kZXJuUGF0aCYg
b3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1faW5saW5lQ29udGVudCA9PSBvdGhlci5tX2lubGluZUNv
bnRlbnQgJiYgbV9saW5lSW5kZXggPT0gb3RoZXIubV9saW5lSW5kZXg7IH0KKworICAgIGJvb2wg
YXRFbmQoKSBjb25zdCB7IHJldHVybiBtX2xpbmVJbmRleCA9PSBsaW5lcygpLnNpemUoKTsgfQor
CisgICAgQm94TW9kZXJuUGF0aCBmaXJzdExlYWZCb3goKSBjb25zdAorICAgIHsKKyAgICAgICAg
aWYgKCFsaW5lKCkuYm94Q291bnQoKSkKKyAgICAgICAgICAgIHJldHVybiB7ICptX2lubGluZUNv
bnRlbnQgfTsKKyAgICAgICAgYXV0byBydW5JdGVyYXRvciA9IEJveE1vZGVyblBhdGggeyAqbV9p
bmxpbmVDb250ZW50LCBsaW5lKCkuZmlyc3RCb3hJbmRleCgpIH07CisgICAgICAgIGlmIChydW5J
dGVyYXRvci5ib3goKS5pc0lubGluZUJveCgpKQorICAgICAgICAgICAgcnVuSXRlcmF0b3IudHJh
dmVyc2VOZXh0T25MaW5lKCk7CisgICAgICAgIHJldHVybiBydW5JdGVyYXRvcjsKKyAgICB9CisK
KyAgICBCb3hNb2Rlcm5QYXRoIGxhc3RMZWFmQm94KCkgY29uc3QKKyAgICB7CisgICAgICAgIGF1
dG8gYm94Q291bnQgPSBsaW5lKCkuYm94Q291bnQoKTsKKyAgICAgICAgaWYgKCFib3hDb3VudCkK
KyAgICAgICAgICAgIHJldHVybiB7ICptX2lubGluZUNvbnRlbnQgfTsKKyAgICAgICAgYXV0byBy
dW5JdGVyYXRvciA9IEJveE1vZGVyblBhdGggeyAqbV9pbmxpbmVDb250ZW50LCBsaW5lKCkuZmly
c3RCb3hJbmRleCgpICsgYm94Q291bnQgLSAxIH07CisgICAgICAgIGlmIChydW5JdGVyYXRvci5i
b3goKS5pc0lubGluZUJveCgpKQorICAgICAgICAgICAgcnVuSXRlcmF0b3IudHJhdmVyc2VQcmV2
aW91c09uTGluZSgpOworICAgICAgICByZXR1cm4gcnVuSXRlcmF0b3I7CisgICAgfQorCitwcml2
YXRlOgorICAgIHZvaWQgc2V0QXRFbmQoKSB7IG1fbGluZUluZGV4ID0gbGluZXMoKS5zaXplKCk7
IH0KKworICAgIGNvbnN0IExheW91dEludGVncmF0aW9uOjpJbmxpbmVDb250ZW50OjpMaW5lcyYg
bGluZXMoKSBjb25zdCB7IHJldHVybiBtX2lubGluZUNvbnRlbnQtPmxpbmVzOyB9CisgICAgY29u
c3QgTGF5b3V0SW50ZWdyYXRpb246OkxpbmUmIGxpbmUoKSBjb25zdCB7IHJldHVybiBsaW5lcygp
W21fbGluZUluZGV4XTsgfQorCisgICAgUmVmUHRyPGNvbnN0IExheW91dEludGVncmF0aW9uOjpJ
bmxpbmVDb250ZW50PiBtX2lubGluZUNvbnRlbnQ7CisgICAgc2l6ZV90IG1fbGluZUluZGV4IHsg
MCB9OworfTsKKworfQorfQorCisjZW5kaWYKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yTGluZUxlZ2FjeVBhdGguaCBiL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRvckxpbmVMZWdhY3lQYXRo
LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ2MDk0MzYyMzEyNjJiMjg0ZDdkZjNh
YzgwZWY5NjI3NWI4NjY5ZmMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9y
TGluZUxlZ2FjeVBhdGguaAorKysgL2Rldi9udWxsCkBAIC0xLDkyICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgot
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
LSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgIklubGluZUl0ZXJhdG9yQm94TGVnYWN5UGF0
aC5oIgotI2luY2x1ZGUgIkxheW91dEludGVncmF0aW9uSW5saW5lQ29udGVudC5oIgotI2luY2x1
ZGUgIkxlZ2FjeVJvb3RJbmxpbmVCb3guaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotbmFtZXNw
YWNlIElubGluZUl0ZXJhdG9yIHsKLQotY2xhc3MgTGluZUl0ZXJhdG9yTGVnYWN5UGF0aCB7Ci1w
dWJsaWM6Ci0gICAgTGluZUl0ZXJhdG9yTGVnYWN5UGF0aChjb25zdCBMZWdhY3lSb290SW5saW5l
Qm94KiByb290SW5saW5lQm94KQotICAgICAgICA6IG1fcm9vdElubGluZUJveChyb290SW5saW5l
Qm94KQotICAgIHsKLSAgICB9Ci0gICAgTGluZUl0ZXJhdG9yTGVnYWN5UGF0aChMaW5lSXRlcmF0
b3JMZWdhY3lQYXRoJiYpID0gZGVmYXVsdDsKLSAgICBMaW5lSXRlcmF0b3JMZWdhY3lQYXRoKGNv
bnN0IExpbmVJdGVyYXRvckxlZ2FjeVBhdGgmKSA9IGRlZmF1bHQ7Ci0gICAgTGluZUl0ZXJhdG9y
TGVnYWN5UGF0aCYgb3BlcmF0b3I9KGNvbnN0IExpbmVJdGVyYXRvckxlZ2FjeVBhdGgmKSA9IGRl
ZmF1bHQ7Ci0gICAgTGluZUl0ZXJhdG9yTGVnYWN5UGF0aCYgb3BlcmF0b3I9KExpbmVJdGVyYXRv
ckxlZ2FjeVBhdGgmJikgPSBkZWZhdWx0OwotCi0gICAgZmxvYXQgY29udGVudExvZ2ljYWxUb3Ao
KSBjb25zdCB7IHJldHVybiBtX3Jvb3RJbmxpbmVCb3gtPmxpbmVUb3AoKS50b0Zsb2F0KCk7IH0K
LSAgICBmbG9hdCBjb250ZW50TG9naWNhbEJvdHRvbSgpIGNvbnN0IHsgcmV0dXJuIG1fcm9vdElu
bGluZUJveC0+bGluZUJvdHRvbSgpLnRvRmxvYXQoKTsgfQotICAgIGZsb2F0IGNvbnRlbnRMb2dp
Y2FsVG9wQWRqdXN0ZWRGb3JQcmVjZWRpbmdMaW5lKCkgY29uc3QgeyByZXR1cm4gbV9yb290SW5s
aW5lQm94LT5zZWxlY3Rpb25Ub3AoKS50b0Zsb2F0KCk7IH0KLSAgICBmbG9hdCBjb250ZW50TG9n
aWNhbEJvdHRvbUFkanVzdGVkRm9yRm9sbG93aW5nTGluZSgpIGNvbnN0IHsgcmV0dXJuIG1fcm9v
dElubGluZUJveC0+c2VsZWN0aW9uQm90dG9tKCkudG9GbG9hdCgpOyB9Ci0gICAgZmxvYXQgbGlu
ZUJveFRvcCgpIGNvbnN0IHsgcmV0dXJuIG1fcm9vdElubGluZUJveC0+bGluZUJveFRvcCgpLnRv
RmxvYXQoKTsgfQotICAgIGZsb2F0IGxpbmVCb3hCb3R0b20oKSBjb25zdCB7IHJldHVybiBtX3Jv
b3RJbmxpbmVCb3gtPmxpbmVCb3hCb3R0b20oKS50b0Zsb2F0KCk7IH0KLQotICAgIGZsb2F0IGNv
bnRlbnRMb2dpY2FsTGVmdCgpIGNvbnN0IHsgcmV0dXJuIG1fcm9vdElubGluZUJveC0+bG9naWNh
bExlZnQoKTsgfQotICAgIGZsb2F0IGNvbnRlbnRMb2dpY2FsUmlnaHQoKSBjb25zdCB7IHJldHVy
biBtX3Jvb3RJbmxpbmVCb3gtPmxvZ2ljYWxSaWdodCgpOyB9Ci0gICAgYm9vbCBpc0hvcml6b250
YWwoKSBjb25zdCB7IHJldHVybiBtX3Jvb3RJbmxpbmVCb3gtPmlzSG9yaXpvbnRhbCgpOyB9Ci0g
ICAgRm9udEJhc2VsaW5lIGJhc2VsaW5lVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fcm9vdElubGlu
ZUJveC0+YmFzZWxpbmVUeXBlKCk7IH0KLQotICAgIGNvbnN0IFJlbmRlckJsb2NrRmxvdyYgY29u
dGFpbmluZ0Jsb2NrKCkgY29uc3QgeyByZXR1cm4gbV9yb290SW5saW5lQm94LT5ibG9ja0Zsb3co
KTsgfQotCi0gICAgUmVuZGVyRnJhZ21lbnRDb250YWluZXIqIGNvbnRhaW5pbmdGcmFnbWVudCgp
IGNvbnN0IHsgcmV0dXJuIG1fcm9vdElubGluZUJveC0+Y29udGFpbmluZ0ZyYWdtZW50KCk7IH0K
LSAgICBib29sIGlzRmlyc3RBZnRlclBhZ2VCcmVhaygpIGNvbnN0IHsgcmV0dXJuIG1fcm9vdElu
bGluZUJveC0+aXNGaXJzdEFmdGVyUGFnZUJyZWFrKCk7IH0KLQotICAgIHZvaWQgdHJhdmVyc2VO
ZXh0KCkKLSAgICB7Ci0gICAgICAgIG1fcm9vdElubGluZUJveCA9IG1fcm9vdElubGluZUJveC0+
bmV4dFJvb3RCb3goKTsKLSAgICB9Ci0KLSAgICB2b2lkIHRyYXZlcnNlUHJldmlvdXMoKQotICAg
IHsKLSAgICAgICAgbV9yb290SW5saW5lQm94ID0gbV9yb290SW5saW5lQm94LT5wcmV2Um9vdEJv
eCgpOwotICAgIH0KLQotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBMaW5lSXRlcmF0b3JMZWdh
Y3lQYXRoJiBvdGhlcikgY29uc3QgeyByZXR1cm4gbV9yb290SW5saW5lQm94ID09IG90aGVyLm1f
cm9vdElubGluZUJveDsgfQotCi0gICAgYm9vbCBhdEVuZCgpIGNvbnN0IHsgcmV0dXJuICFtX3Jv
b3RJbmxpbmVCb3g7IH0KLQotICAgIEJveExlZ2FjeVBhdGggZmlyc3RMZWFmQm94KCkgY29uc3QK
LSAgICB7Ci0gICAgICAgIHJldHVybiB7IG1fcm9vdElubGluZUJveC0+Zmlyc3RMZWFmRGVzY2Vu
ZGFudCgpIH07Ci0gICAgfQotCi0gICAgQm94TGVnYWN5UGF0aCBsYXN0TGVhZkJveCgpIGNvbnN0
Ci0gICAgewotICAgICAgICByZXR1cm4geyBtX3Jvb3RJbmxpbmVCb3gtPmxhc3RMZWFmRGVzY2Vu
ZGFudCgpIH07Ci0gICAgfQotCi1wcml2YXRlOgotICAgIGNvbnN0IExlZ2FjeVJvb3RJbmxpbmVC
b3gqIG1fcm9vdElubGluZUJveDsKLX07Ci0KLX0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRvckxpbmVNb2Rlcm5QYXRoLmggYi9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JMaW5lTW9kZXJu
UGF0aC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhM2YxYzJjYjU2ZTk5MTg3Y2Qx
MDIyOTRhMmE1MDMyMDczNjE3OGYxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVy
YXRvckxpbmVNb2Rlcm5QYXRoLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMjkgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKExBWU9VVF9GT1JNQVRUSU5HX0NP
TlRFWFQpCi0KLSNpbmNsdWRlICJJbmxpbmVJdGVyYXRvckJveE1vZGVyblBhdGguaCIKLSNpbmNs
dWRlICJMYXlvdXRJbnRlZ3JhdGlvbklubGluZUNvbnRlbnQuaCIKLSNpbmNsdWRlICJSZW5kZXJC
bG9ja0Zsb3cuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotbmFtZXNwYWNlIElubGluZUl0ZXJh
dG9yIHsKLQotY2xhc3MgQm94TW9kZXJuUGF0aDsKLQotY2xhc3MgTGluZUl0ZXJhdG9yTW9kZXJu
UGF0aCB7Ci1wdWJsaWM6Ci0gICAgTGluZUl0ZXJhdG9yTW9kZXJuUGF0aChjb25zdCBMYXlvdXRJ
bnRlZ3JhdGlvbjo6SW5saW5lQ29udGVudCYgaW5saW5lQ29udGVudCwgc2l6ZV90IGxpbmVJbmRl
eCkKLSAgICAgICAgOiBtX2lubGluZUNvbnRlbnQoJmlubGluZUNvbnRlbnQpCi0gICAgICAgICwg
bV9saW5lSW5kZXgobGluZUluZGV4KQotICAgIHsKLSAgICAgICAgQVNTRVJUKGxpbmVJbmRleCA8
PSBsaW5lcygpLnNpemUoKSk7Ci0gICAgfQotICAgIExpbmVJdGVyYXRvck1vZGVyblBhdGgoTGlu
ZUl0ZXJhdG9yTW9kZXJuUGF0aCYmKSA9IGRlZmF1bHQ7Ci0gICAgTGluZUl0ZXJhdG9yTW9kZXJu
UGF0aChjb25zdCBMaW5lSXRlcmF0b3JNb2Rlcm5QYXRoJikgPSBkZWZhdWx0OwotICAgIExpbmVJ
dGVyYXRvck1vZGVyblBhdGgmIG9wZXJhdG9yPShjb25zdCBMaW5lSXRlcmF0b3JNb2Rlcm5QYXRo
JikgPSBkZWZhdWx0OwotICAgIExpbmVJdGVyYXRvck1vZGVyblBhdGgmIG9wZXJhdG9yPShMaW5l
SXRlcmF0b3JNb2Rlcm5QYXRoJiYpID0gZGVmYXVsdDsKLQotICAgIGZsb2F0IGNvbnRlbnRMb2dp
Y2FsVG9wKCkgY29uc3QgeyByZXR1cm4gbGluZSgpLmVuY2xvc2luZ0NvbnRlbnRUb3AoKTsgfQot
ICAgIGZsb2F0IGNvbnRlbnRMb2dpY2FsQm90dG9tKCkgY29uc3QgeyByZXR1cm4gbGluZSgpLmVu
Y2xvc2luZ0NvbnRlbnRCb3R0b20oKTsgfQotICAgIGZsb2F0IGxpbmVCb3hUb3AoKSBjb25zdCB7
IHJldHVybiBsaW5lKCkubGluZUJveFRvcCgpOyB9Ci0gICAgZmxvYXQgbGluZUJveEJvdHRvbSgp
IGNvbnN0IHsgcmV0dXJuIGxpbmUoKS5saW5lQm94Qm90dG9tKCk7IH0KLQotICAgIGZsb2F0IGNv
bnRlbnRMb2dpY2FsVG9wQWRqdXN0ZWRGb3JQcmVjZWRpbmdMaW5lKCkgY29uc3QgeyByZXR1cm4g
IW1fbGluZUluZGV4ID8gY29udGVudExvZ2ljYWxUb3AoKSA6IExpbmVJdGVyYXRvck1vZGVyblBh
dGgoKm1faW5saW5lQ29udGVudCwgbV9saW5lSW5kZXggLSAxKS5jb250ZW50TG9naWNhbEJvdHRv
bUFkanVzdGVkRm9yRm9sbG93aW5nTGluZSgpOyB9Ci0gICAgLy8gRklYTUU6IEltcGxlbWVudC4K
LSAgICBmbG9hdCBjb250ZW50TG9naWNhbEJvdHRvbUFkanVzdGVkRm9yRm9sbG93aW5nTGluZSgp
IGNvbnN0IHsgcmV0dXJuIGNvbnRlbnRMb2dpY2FsQm90dG9tKCk7IH0KLQotICAgIGZsb2F0IGNv
bnRlbnRMb2dpY2FsTGVmdCgpIGNvbnN0IHsgcmV0dXJuIGxpbmUoKS5saW5lQm94TGVmdCgpICsg
bGluZSgpLmNvbnRlbnRMb2dpY2FsT2Zmc2V0KCk7IH0KLSAgICBmbG9hdCBjb250ZW50TG9naWNh
bFJpZ2h0KCkgY29uc3QgeyByZXR1cm4gY29udGVudExvZ2ljYWxMZWZ0KCkgKyBsaW5lKCkuY29u
dGVudExvZ2ljYWxXaWR0aCgpOyB9Ci0gICAgYm9vbCBpc0hvcml6b250YWwoKSBjb25zdCB7IHJl
dHVybiBsaW5lKCkuaXNIb3Jpem9udGFsKCk7IH0KLSAgICBGb250QmFzZWxpbmUgYmFzZWxpbmVU
eXBlKCkgY29uc3QgeyByZXR1cm4gbGluZSgpLmJhc2VsaW5lVHlwZSgpOyB9Ci0KLSAgICBjb25z
dCBSZW5kZXJCbG9ja0Zsb3cmIGNvbnRhaW5pbmdCbG9jaygpIGNvbnN0IHsgcmV0dXJuIG1faW5s
aW5lQ29udGVudC0+Y29udGFpbmluZ0Jsb2NrKCk7IH0KLQotICAgIFJlbmRlckZyYWdtZW50Q29u
dGFpbmVyKiBjb250YWluaW5nRnJhZ21lbnQoKSBjb25zdCB7IHJldHVybiBudWxscHRyOyB9Ci0g
ICAgYm9vbCBpc0ZpcnN0QWZ0ZXJQYWdlQnJlYWsoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQot
Ci0gICAgdm9pZCB0cmF2ZXJzZU5leHQoKQotICAgIHsKLSAgICAgICAgQVNTRVJUKCFhdEVuZCgp
KTsKLQotICAgICAgICArK21fbGluZUluZGV4OwotICAgIH0KLQotICAgIHZvaWQgdHJhdmVyc2VQ
cmV2aW91cygpCi0gICAgewotICAgICAgICBBU1NFUlQoIWF0RW5kKCkpOwotCi0gICAgICAgIGlm
ICghbV9saW5lSW5kZXgpIHsKLSAgICAgICAgICAgIHNldEF0RW5kKCk7Ci0gICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICAtLW1fbGluZUluZGV4OwotICAgIH0KLQotICAg
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBMaW5lSXRlcmF0b3JNb2Rlcm5QYXRoJiBvdGhlcikgY29u
c3QgeyByZXR1cm4gbV9pbmxpbmVDb250ZW50ID09IG90aGVyLm1faW5saW5lQ29udGVudCAmJiBt
X2xpbmVJbmRleCA9PSBvdGhlci5tX2xpbmVJbmRleDsgfQotCi0gICAgYm9vbCBhdEVuZCgpIGNv
bnN0IHsgcmV0dXJuIG1fbGluZUluZGV4ID09IGxpbmVzKCkuc2l6ZSgpOyB9Ci0KLSAgICBCb3hN
b2Rlcm5QYXRoIGZpcnN0TGVhZkJveCgpIGNvbnN0Ci0gICAgewotICAgICAgICBpZiAoIWxpbmUo
KS5ib3hDb3VudCgpKQotICAgICAgICAgICAgcmV0dXJuIHsgKm1faW5saW5lQ29udGVudCB9Owot
ICAgICAgICBhdXRvIHJ1bkl0ZXJhdG9yID0gQm94TW9kZXJuUGF0aCB7ICptX2lubGluZUNvbnRl
bnQsIGxpbmUoKS5maXJzdEJveEluZGV4KCkgfTsKLSAgICAgICAgaWYgKHJ1bkl0ZXJhdG9yLmJv
eCgpLmlzSW5saW5lQm94KCkpCi0gICAgICAgICAgICBydW5JdGVyYXRvci50cmF2ZXJzZU5leHRP
bkxpbmUoKTsKLSAgICAgICAgcmV0dXJuIHJ1bkl0ZXJhdG9yOwotICAgIH0KLQotICAgIEJveE1v
ZGVyblBhdGggbGFzdExlYWZCb3goKSBjb25zdAotICAgIHsKLSAgICAgICAgYXV0byBib3hDb3Vu
dCA9IGxpbmUoKS5ib3hDb3VudCgpOwotICAgICAgICBpZiAoIWJveENvdW50KQotICAgICAgICAg
ICAgcmV0dXJuIHsgKm1faW5saW5lQ29udGVudCB9OwotICAgICAgICBhdXRvIHJ1bkl0ZXJhdG9y
ID0gQm94TW9kZXJuUGF0aCB7ICptX2lubGluZUNvbnRlbnQsIGxpbmUoKS5maXJzdEJveEluZGV4
KCkgKyBib3hDb3VudCAtIDEgfTsKLSAgICAgICAgaWYgKHJ1bkl0ZXJhdG9yLmJveCgpLmlzSW5s
aW5lQm94KCkpCi0gICAgICAgICAgICBydW5JdGVyYXRvci50cmF2ZXJzZVByZXZpb3VzT25MaW5l
KCk7Ci0gICAgICAgIHJldHVybiBydW5JdGVyYXRvcjsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAg
dm9pZCBzZXRBdEVuZCgpIHsgbV9saW5lSW5kZXggPSBsaW5lcygpLnNpemUoKTsgfQotCi0gICAg
Y29uc3QgTGF5b3V0SW50ZWdyYXRpb246OklubGluZUNvbnRlbnQ6OkxpbmVzJiBsaW5lcygpIGNv
bnN0IHsgcmV0dXJuIG1faW5saW5lQ29udGVudC0+bGluZXM7IH0KLSAgICBjb25zdCBMYXlvdXRJ
bnRlZ3JhdGlvbjo6TGluZSYgbGluZSgpIGNvbnN0IHsgcmV0dXJuIGxpbmVzKClbbV9saW5lSW5k
ZXhdOyB9Ci0KLSAgICBSZWZQdHI8Y29uc3QgTGF5b3V0SW50ZWdyYXRpb246OklubGluZUNvbnRl
bnQ+IG1faW5saW5lQ29udGVudDsKLSAgICBzaXplX3QgbV9saW5lSW5kZXggeyAwIH07Ci19Owot
Ci19Ci19Ci0KLSNlbmRpZgotCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50
ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JMb2dpY2FsT3JkZXJUcmF2ZXJzYWwuY3BwIGIvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yTG9naWNhbE9yZGVyVHJh
dmVyc2FsLmNwcAppbmRleCA1OGFlNzlmNzc2NDRjODc2ZmZlZWM3ZjAxMTMzN2NkNmZhMmEzMDY5
Li44ZjRiYzIwMmRkZGUxYTVhNTNmM2RhMGMwYzdmMTY3MDAyMzRiNjc4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JMb2dpY2FsT3Jk
ZXJUcmF2ZXJzYWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9J
bmxpbmVJdGVyYXRvckxvZ2ljYWxPcmRlclRyYXZlcnNhbC5jcHAKQEAgLTI2LDcgKzI2LDcgQEAK
ICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJJbmxpbmVJdGVyYXRvckxvZ2ljYWxPcmRl
clRyYXZlcnNhbC5oIgogCi0jaW5jbHVkZSAiSW5saW5lSXRlcmF0b3JMaW5lLmgiCisjaW5jbHVk
ZSAiSW5saW5lSXRlcmF0b3JMaW5lQm94LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVz
cGFjZSBJbmxpbmVJdGVyYXRvciB7CkBAIC04OSwxMiArODksMTIgQEAgVGV4dEJveEl0ZXJhdG9y
IG5leHRUZXh0Qm94SW5Mb2dpY2FsT3JkZXIoY29uc3QgVGV4dEJveEl0ZXJhdG9yJiB0ZXh0Qm94
LCBUZXh0TG8KICAgICByZXR1cm4geyB9OwogfQogCi1zdGF0aWMgTGluZUxvZ2ljYWxPcmRlckNh
Y2hlIG1ha2VMaW5lTG9naWNhbE9yZGVyQ2FjaGUoY29uc3QgTGluZUl0ZXJhdG9yJiBsaW5lKQor
c3RhdGljIExpbmVMb2dpY2FsT3JkZXJDYWNoZSBtYWtlTGluZUxvZ2ljYWxPcmRlckNhY2hlKGNv
bnN0IExpbmVCb3hJdGVyYXRvciYgbGluZUJveCkKIHsKICAgICBhdXRvIGNhY2hlID0gbWFrZVVu
aXF1ZTxMaW5lTG9naWNhbE9yZGVyQ2FjaGVEYXRhPigpOwogCi0gICAgY2FjaGUtPmxpbmUgPSBs
aW5lOwotICAgIGNhY2hlLT5ib3hlcyA9IGxlYWZCb3hlc0luTG9naWNhbE9yZGVyKGxpbmUsIFtd
KGF1dG8gZmlyc3QsIGF1dG8gbGFzdCkgeworICAgIGNhY2hlLT5saW5lQm94ID0gbGluZUJveDsK
KyAgICBjYWNoZS0+Ym94ZXMgPSBsZWFmQm94ZXNJbkxvZ2ljYWxPcmRlcihsaW5lQm94LCBbXShh
dXRvIGZpcnN0LCBhdXRvIGxhc3QpIHsKICAgICAgICAgc3RkOjpyZXZlcnNlKGZpcnN0LCBsYXN0
KTsKICAgICB9KTsKIApAQCAtMTAzLDkgKzEwMyw5IEBAIHN0YXRpYyBMaW5lTG9naWNhbE9yZGVy
Q2FjaGUgbWFrZUxpbmVMb2dpY2FsT3JkZXJDYWNoZShjb25zdCBMaW5lSXRlcmF0b3ImIGxpbmUp
CiAKIHN0YXRpYyB2b2lkIHVwZGF0ZUxpbmVMb2dpY2FsT3JkZXJDYWNoZUlmTmVlZGVkKGNvbnN0
IExlYWZCb3hJdGVyYXRvciYgYm94LCBMaW5lTG9naWNhbE9yZGVyQ2FjaGUmIGNhY2hlKQogewot
ICAgIGF1dG8gbGluZSA9IGJveC0+bGluZSgpOwotICAgIGlmICghY2FjaGUgfHwgY2FjaGUtPmxp
bmUgIT0gbGluZSkKLSAgICAgICAgY2FjaGUgPSBtYWtlTGluZUxvZ2ljYWxPcmRlckNhY2hlKGxp
bmUpOworICAgIGF1dG8gbGluZUJveCA9IGJveC0+bGluZUJveCgpOworICAgIGlmICghY2FjaGUg
fHwgY2FjaGUtPmxpbmVCb3ggIT0gbGluZUJveCkKKyAgICAgICAgY2FjaGUgPSBtYWtlTGluZUxv
Z2ljYWxPcmRlckNhY2hlKGxpbmVCb3gpOwogCiAgICAgaWYgKGNhY2hlLT5pbmRleCA8IGNhY2hl
LT5ib3hlcy5zaXplKCkgJiYgY2FjaGUtPmJveGVzW2NhY2hlLT5pbmRleF0gPT0gYm94KQogICAg
ICAgICByZXR1cm47CkBAIC0xMTUsOSArMTE1LDkgQEAgc3RhdGljIHZvaWQgdXBkYXRlTGluZUxv
Z2ljYWxPcmRlckNhY2hlSWZOZWVkZWQoY29uc3QgTGVhZkJveEl0ZXJhdG9yJiBib3gsIExpbmUK
ICAgICBBU1NFUlQoY2FjaGUtPmluZGV4ICE9IG5vdEZvdW5kKTsKIH0KIAotTGVhZkJveEl0ZXJh
dG9yIGZpcnN0TGVhZk9uTGluZUluTG9naWNhbE9yZGVyKGNvbnN0IExpbmVJdGVyYXRvciYgbGlu
ZSwgTGluZUxvZ2ljYWxPcmRlckNhY2hlJiBjYWNoZSkKK0xlYWZCb3hJdGVyYXRvciBmaXJzdExl
YWZPbkxpbmVJbkxvZ2ljYWxPcmRlcihjb25zdCBMaW5lQm94SXRlcmF0b3ImIGxpbmVCb3gsIExp
bmVMb2dpY2FsT3JkZXJDYWNoZSYgY2FjaGUpCiB7Ci0gICAgY2FjaGUgPSBtYWtlTGluZUxvZ2lj
YWxPcmRlckNhY2hlKGxpbmUpOworICAgIGNhY2hlID0gbWFrZUxpbmVMb2dpY2FsT3JkZXJDYWNo
ZShsaW5lQm94KTsKIAogICAgIGlmIChjYWNoZS0+Ym94ZXMuaXNFbXB0eSgpKQogICAgICAgICBy
ZXR1cm4geyB9OwpAQCAtMTI2LDkgKzEyNiw5IEBAIExlYWZCb3hJdGVyYXRvciBmaXJzdExlYWZP
bkxpbmVJbkxvZ2ljYWxPcmRlcihjb25zdCBMaW5lSXRlcmF0b3ImIGxpbmUsIExpbmVMb2dpCiAg
ICAgcmV0dXJuIGNhY2hlLT5ib3hlcy5maXJzdCgpOwogfQogCi1MZWFmQm94SXRlcmF0b3IgbGFz
dExlYWZPbkxpbmVJbkxvZ2ljYWxPcmRlcihjb25zdCBMaW5lSXRlcmF0b3ImIGxpbmUsIExpbmVM
b2dpY2FsT3JkZXJDYWNoZSYgY2FjaGUpCitMZWFmQm94SXRlcmF0b3IgbGFzdExlYWZPbkxpbmVJ
bkxvZ2ljYWxPcmRlcihjb25zdCBMaW5lQm94SXRlcmF0b3ImIGxpbmVCb3gsIExpbmVMb2dpY2Fs
T3JkZXJDYWNoZSYgY2FjaGUpCiB7Ci0gICAgY2FjaGUgPSBtYWtlTGluZUxvZ2ljYWxPcmRlckNh
Y2hlKGxpbmUpOworICAgIGNhY2hlID0gbWFrZUxpbmVMb2dpY2FsT3JkZXJDYWNoZShsaW5lQm94
KTsKIAogICAgIGlmIChjYWNoZS0+Ym94ZXMuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4geyB9
OwpAQCAtMTYxLDE3ICsxNjEsMTcgQEAgTGVhZkJveEl0ZXJhdG9yIHByZXZpb3VzTGVhZk9uTGlu
ZUluTG9naWNhbE9yZGVyKGNvbnN0IExlYWZCb3hJdGVyYXRvciYgYm94LCBMaW4KICAgICByZXR1
cm4gY2FjaGUtPmJveGVzW2NhY2hlLT5pbmRleF07CiB9CiAKLUxlYWZCb3hJdGVyYXRvciBmaXJz
dExlYWZPbkxpbmVJbkxvZ2ljYWxPcmRlcldpdGhOb2RlKGNvbnN0IExpbmVJdGVyYXRvciYgbGlu
ZSwgTGluZUxvZ2ljYWxPcmRlckNhY2hlJiBjYWNoZSkKK0xlYWZCb3hJdGVyYXRvciBmaXJzdExl
YWZPbkxpbmVJbkxvZ2ljYWxPcmRlcldpdGhOb2RlKGNvbnN0IExpbmVCb3hJdGVyYXRvciYgbGlu
ZUJveCwgTGluZUxvZ2ljYWxPcmRlckNhY2hlJiBjYWNoZSkKIHsKLSAgICBhdXRvIGJveCA9IGZp
cnN0TGVhZk9uTGluZUluTG9naWNhbE9yZGVyKGxpbmUsIGNhY2hlKTsKKyAgICBhdXRvIGJveCA9
IGZpcnN0TGVhZk9uTGluZUluTG9naWNhbE9yZGVyKGxpbmVCb3gsIGNhY2hlKTsKICAgICB3aGls
ZSAoYm94ICYmICFib3gtPnJlbmRlcmVyKCkubm9kZSgpKQogICAgICAgICBib3ggPSBuZXh0TGVh
Zk9uTGluZUluTG9naWNhbE9yZGVyKGJveCwgY2FjaGUpOwogICAgIHJldHVybiBib3g7CiB9CiAK
LUxlYWZCb3hJdGVyYXRvciBsYXN0TGVhZk9uTGluZUluTG9naWNhbE9yZGVyV2l0aE5vZGUoY29u
c3QgTGluZUl0ZXJhdG9yJiBsaW5lLCBMaW5lTG9naWNhbE9yZGVyQ2FjaGUmIGNhY2hlKQorTGVh
ZkJveEl0ZXJhdG9yIGxhc3RMZWFmT25MaW5lSW5Mb2dpY2FsT3JkZXJXaXRoTm9kZShjb25zdCBM
aW5lQm94SXRlcmF0b3ImIGxpbmVCb3gsIExpbmVMb2dpY2FsT3JkZXJDYWNoZSYgY2FjaGUpCiB7
Ci0gICAgYXV0byBib3ggPSBsYXN0TGVhZk9uTGluZUluTG9naWNhbE9yZGVyKGxpbmUsIGNhY2hl
KTsKKyAgICBhdXRvIGJveCA9IGxhc3RMZWFmT25MaW5lSW5Mb2dpY2FsT3JkZXIobGluZUJveCwg
Y2FjaGUpOwogICAgIHdoaWxlIChib3ggJiYgIWJveC0+cmVuZGVyZXIoKS5ub2RlKCkpCiAgICAg
ICAgIGJveCA9IHByZXZpb3VzTGVhZk9uTGluZUluTG9naWNhbE9yZGVyKGJveCwgY2FjaGUpOwog
ICAgIHJldHVybiBib3g7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdy
YXRpb24vSW5saW5lSXRlcmF0b3JMb2dpY2FsT3JkZXJUcmF2ZXJzYWwuaCBiL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRvckxvZ2ljYWxPcmRlclRyYXZlcnNh
bC5oCmluZGV4IDI4MDY5ODcwNDY3NzkwMWIxMWFhOTQ4NGIyMDliYjgwMTc2NjQ5NDMuLmI1YWYw
NDBiZDNmZjAzMmQzODE4MTNkNzY5NmU0NWE1ZWM0MTg3ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRvckxvZ2ljYWxPcmRlclRyYXZl
cnNhbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVy
YXRvckxvZ2ljYWxPcmRlclRyYXZlcnNhbC5oCkBAIC0yNSw3ICsyNSw3IEBACiAKICNwcmFnbWEg
b25jZQogCi0jaW5jbHVkZSAiSW5saW5lSXRlcmF0b3JMaW5lLmgiCisjaW5jbHVkZSAiSW5saW5l
SXRlcmF0b3JMaW5lQm94LmgiCiAjaW5jbHVkZSAiSW5saW5lSXRlcmF0b3JUZXh0Qm94LmgiCiAj
aW5jbHVkZSAiUmVuZGVyQmxvY2tGbG93LmgiCiAKQEAgLTQ2LDM1ICs0NiwzNSBAQCBUZXh0Qm94
SXRlcmF0b3IgbmV4dFRleHRCb3hJbkxvZ2ljYWxPcmRlcihjb25zdCBUZXh0Qm94SXRlcmF0b3Im
LCBUZXh0TG9naWNhbE9yZAogc3RydWN0IExpbmVMb2dpY2FsT3JkZXJDYWNoZURhdGEgewogICAg
IFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKIAotICAgIExpbmVJdGVyYXRvciBsaW5l
OworICAgIExpbmVCb3hJdGVyYXRvciBsaW5lQm94OwogICAgIFZlY3RvcjxMZWFmQm94SXRlcmF0
b3I+IGJveGVzOwogICAgIHNpemVfdCBpbmRleCB7IDAgfTsKIH07CiB1c2luZyBMaW5lTG9naWNh
bE9yZGVyQ2FjaGUgPSBzdGQ6OnVuaXF1ZV9wdHI8TGluZUxvZ2ljYWxPcmRlckNhY2hlRGF0YT47
CiAKLUxlYWZCb3hJdGVyYXRvciBmaXJzdExlYWZPbkxpbmVJbkxvZ2ljYWxPcmRlcihjb25zdCBM
aW5lSXRlcmF0b3ImLCBMaW5lTG9naWNhbE9yZGVyQ2FjaGUmKTsKLUxlYWZCb3hJdGVyYXRvciBs
YXN0TGVhZk9uTGluZUluTG9naWNhbE9yZGVyKGNvbnN0IExpbmVJdGVyYXRvciYsIExpbmVMb2dp
Y2FsT3JkZXJDYWNoZSYpOworTGVhZkJveEl0ZXJhdG9yIGZpcnN0TGVhZk9uTGluZUluTG9naWNh
bE9yZGVyKGNvbnN0IExpbmVCb3hJdGVyYXRvciYsIExpbmVMb2dpY2FsT3JkZXJDYWNoZSYpOwor
TGVhZkJveEl0ZXJhdG9yIGxhc3RMZWFmT25MaW5lSW5Mb2dpY2FsT3JkZXIoY29uc3QgTGluZUJv
eEl0ZXJhdG9yJiwgTGluZUxvZ2ljYWxPcmRlckNhY2hlJik7CiBMZWFmQm94SXRlcmF0b3IgbmV4
dExlYWZPbkxpbmVJbkxvZ2ljYWxPcmRlcihjb25zdCBMZWFmQm94SXRlcmF0b3ImLCBMaW5lTG9n
aWNhbE9yZGVyQ2FjaGUmKTsKIExlYWZCb3hJdGVyYXRvciBwcmV2aW91c0xlYWZPbkxpbmVJbkxv
Z2ljYWxPcmRlcihjb25zdCBMZWFmQm94SXRlcmF0b3ImLCBMaW5lTG9naWNhbE9yZGVyQ2FjaGUm
KTsKIAotTGVhZkJveEl0ZXJhdG9yIGZpcnN0TGVhZk9uTGluZUluTG9naWNhbE9yZGVyV2l0aE5v
ZGUoY29uc3QgTGluZUl0ZXJhdG9yJiwgTGluZUxvZ2ljYWxPcmRlckNhY2hlJik7Ci1MZWFmQm94
SXRlcmF0b3IgbGFzdExlYWZPbkxpbmVJbkxvZ2ljYWxPcmRlcldpdGhOb2RlKGNvbnN0IExpbmVJ
dGVyYXRvciYsIExpbmVMb2dpY2FsT3JkZXJDYWNoZSYpOworTGVhZkJveEl0ZXJhdG9yIGZpcnN0
TGVhZk9uTGluZUluTG9naWNhbE9yZGVyV2l0aE5vZGUoY29uc3QgTGluZUJveEl0ZXJhdG9yJiwg
TGluZUxvZ2ljYWxPcmRlckNhY2hlJik7CitMZWFmQm94SXRlcmF0b3IgbGFzdExlYWZPbkxpbmVJ
bkxvZ2ljYWxPcmRlcldpdGhOb2RlKGNvbnN0IExpbmVCb3hJdGVyYXRvciYsIExpbmVMb2dpY2Fs
T3JkZXJDYWNoZSYpOwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBSZXZlcnNlRnVuY3Rpb24+Ci1WZWN0
b3I8TGVhZkJveEl0ZXJhdG9yPiBsZWFmQm94ZXNJbkxvZ2ljYWxPcmRlcihjb25zdCBMaW5lSXRl
cmF0b3ImIGxpbmUsIFJldmVyc2VGdW5jdGlvbiYmIHJldmVyc2VGdW5jdGlvbikKK1ZlY3RvcjxM
ZWFmQm94SXRlcmF0b3I+IGxlYWZCb3hlc0luTG9naWNhbE9yZGVyKGNvbnN0IExpbmVCb3hJdGVy
YXRvciYgbGluZUJveCwgUmV2ZXJzZUZ1bmN0aW9uJiYgcmV2ZXJzZUZ1bmN0aW9uKQogewogICAg
IFZlY3RvcjxMZWFmQm94SXRlcmF0b3I+IGJveGVzOwogCiAgICAgdW5zaWduZWQgY2hhciBtaW5M
ZXZlbCA9IDEyODsKICAgICB1bnNpZ25lZCBjaGFyIG1heExldmVsID0gMDsKIAotICAgIGZvciAo
YXV0byBib3ggPSBsaW5lLT5maXJzdExlYWZCb3goKTsgYm94OyBib3ggPSBib3gudHJhdmVyc2VO
ZXh0T25MaW5lKCkpIHsKKyAgICBmb3IgKGF1dG8gYm94ID0gbGluZUJveC0+Zmlyc3RMZWFmQm94
KCk7IGJveDsgYm94ID0gYm94LnRyYXZlcnNlTmV4dE9uTGluZSgpKSB7CiAgICAgICAgIG1pbkxl
dmVsID0gc3RkOjptaW4obWluTGV2ZWwsIGJveC0+YmlkaUxldmVsKCkpOwogICAgICAgICBtYXhM
ZXZlbCA9IHN0ZDo6bWF4KG1heExldmVsLCBib3gtPmJpZGlMZXZlbCgpKTsKICAgICAgICAgYm94
ZXMuYXBwZW5kKGJveCk7CiAgICAgfQogCi0gICAgaWYgKGxpbmUtPmNvbnRhaW5pbmdCbG9jaygp
LnN0eWxlKCkucnRsT3JkZXJpbmcoKSA9PSBPcmRlcjo6VmlzdWFsKQorICAgIGlmIChsaW5lQm94
LT5jb250YWluaW5nQmxvY2soKS5zdHlsZSgpLnJ0bE9yZGVyaW5nKCkgPT0gT3JkZXI6OlZpc3Vh
bCkKICAgICAgICAgcmV0dXJuIGJveGVzOwogCiAgICAgLy8gUmV2ZXJzZSBvZiByZW9yZGVyaW5n
IG9mIHRoZSBsaW5lIChMMiBhY2NvcmRpbmcgdG8gQmlkaSBzcGVjKToKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRvclRleHRCb3guY3Bw
IGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yVGV4dEJv
eC5jcHAKaW5kZXggNTk2YmFjMmY1ZGNjMWYzMTc3MzRmMzNlOGM0YTg5ZjdiNDhhYjQ0NC4uNGRh
MmRmODZkMjBkMmYxODk5OWYxZTM0YzRjZTgwNzNiODdhMDk5OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yVGV4dEJveC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yVGV4dEJv
eC5jcHAKQEAgLTI2LDcgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJJ
bmxpbmVJdGVyYXRvclRleHRCb3guaCIKIAotI2luY2x1ZGUgIklubGluZUl0ZXJhdG9yTGluZS5o
IgorI2luY2x1ZGUgIklubGluZUl0ZXJhdG9yTGluZUJveC5oIgogI2luY2x1ZGUgIkxheW91dElu
dGVncmF0aW9uTGluZUxheW91dC5oIgogI2luY2x1ZGUgIkxpbmVTZWxlY3Rpb24uaCIKICNpbmNs
dWRlICJSZW5kZXJDb21iaW5lVGV4dC5oIgpAQCAtNDYsNyArNDYsNyBAQCBMYXlvdXRSZWN0IFRl
eHRCb3g6OnNlbGVjdGlvblJlY3QodW5zaWduZWQgcmFuZ2VTdGFydCwgdW5zaWduZWQgcmFuZ2VF
bmQpIGNvbnN0CiAgICAgaWYgKGNsYW1wZWRTdGFydCA+PSBjbGFtcGVkRW5kICYmICEocmFuZ2VT
dGFydCA9PSByYW5nZUVuZCAmJiByYW5nZVN0YXJ0ID49IHN0YXJ0KCkgJiYgcmFuZ2VTdGFydCA8
PSBlbmQoKSkpCiAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICBhdXRvIGxpbmVTZWxlY3Rpb25S
ZWN0ID0gTGluZVNlbGVjdGlvbjo6bG9naWNhbFJlY3QoKmxpbmUoKSk7CisgICAgYXV0byBsaW5l
U2VsZWN0aW9uUmVjdCA9IExpbmVTZWxlY3Rpb246OmxvZ2ljYWxSZWN0KCpsaW5lQm94KCkpOwog
ICAgIGF1dG8gc2VsZWN0aW9uUmVjdCA9IExheW91dFJlY3QgeyBsb2dpY2FsTGVmdCgpLCBsaW5l
U2VsZWN0aW9uUmVjdC55KCksIGxvZ2ljYWxXaWR0aCgpLCBsaW5lU2VsZWN0aW9uUmVjdC5oZWln
aHQoKSB9OwogCiAgICAgVGV4dFJ1biB0ZXh0UnVuID0gY3JlYXRlVGV4dFJ1bigpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9u
TGluZUxheW91dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0
SW50ZWdyYXRpb25MaW5lTGF5b3V0LmNwcAppbmRleCA3YWRlYzIxNjUzNzEwZTYzYmI0ZmJlMWE2
MDM0NjU4ZTNkNTIzNjQ2Li4yYTg2MDQ5YWQ4N2ZlYjdjMTY1MGUyNTdkZTllMjJlZDM3MmUwYjg3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50
ZWdyYXRpb25MaW5lTGF5b3V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdy
YXRpb24vTGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0LmNwcApAQCAtNjIwLDIwICs2MjAsMjAg
QEAgSW5saW5lSXRlcmF0b3I6OklubGluZUJveEl0ZXJhdG9yIExpbmVMYXlvdXQ6OmZpcnN0Um9v
dElubGluZUJveCgpIGNvbnN0CiAgICAgcmV0dXJuIElubGluZUl0ZXJhdG9yOjppbmxpbmVCb3hG
b3IoKm1faW5saW5lQ29udGVudCwgbV9pbmxpbmVDb250ZW50LT5ib3hlc1swXSk7CiB9CiAKLUlu
bGluZUl0ZXJhdG9yOjpMaW5lSXRlcmF0b3IgTGluZUxheW91dDo6Zmlyc3RMaW5lKCkgY29uc3QK
K0lubGluZUl0ZXJhdG9yOjpMaW5lQm94SXRlcmF0b3IgTGluZUxheW91dDo6Zmlyc3RMaW5lQm94
KCkgY29uc3QKIHsKICAgICBpZiAoIW1faW5saW5lQ29udGVudCkKICAgICAgICAgcmV0dXJuIHsg
fTsKIAotICAgIHJldHVybiB7IElubGluZUl0ZXJhdG9yOjpMaW5lSXRlcmF0b3JNb2Rlcm5QYXRo
KCptX2lubGluZUNvbnRlbnQsIDApIH07CisgICAgcmV0dXJuIHsgSW5saW5lSXRlcmF0b3I6Okxp
bmVCb3hJdGVyYXRvck1vZGVyblBhdGgoKm1faW5saW5lQ29udGVudCwgMCkgfTsKIH0KIAotSW5s
aW5lSXRlcmF0b3I6OkxpbmVJdGVyYXRvciBMaW5lTGF5b3V0OjpsYXN0TGluZSgpIGNvbnN0CitJ
bmxpbmVJdGVyYXRvcjo6TGluZUJveEl0ZXJhdG9yIExpbmVMYXlvdXQ6Omxhc3RMaW5lQm94KCkg
Y29uc3QKIHsKICAgICBpZiAoIW1faW5saW5lQ29udGVudCkKICAgICAgICAgcmV0dXJuIHsgfTsK
IAotICAgIHJldHVybiB7IElubGluZUl0ZXJhdG9yOjpMaW5lSXRlcmF0b3JNb2Rlcm5QYXRoKCpt
X2lubGluZUNvbnRlbnQsIG1faW5saW5lQ29udGVudC0+bGluZXMuaXNFbXB0eSgpID8gMCA6IG1f
aW5saW5lQ29udGVudC0+bGluZXMuc2l6ZSgpIC0gMSkgfTsKKyAgICByZXR1cm4geyBJbmxpbmVJ
dGVyYXRvcjo6TGluZUJveEl0ZXJhdG9yTW9kZXJuUGF0aCgqbV9pbmxpbmVDb250ZW50LCBtX2lu
bGluZUNvbnRlbnQtPmxpbmVzLmlzRW1wdHkoKSA/IDAgOiBtX2lubGluZUNvbnRlbnQtPmxpbmVz
LnNpemUoKSAtIDEpIH07CiB9CiAKIExheW91dFJlY3QgTGluZUxheW91dDo6Zmlyc3RJbmxpbmVC
b3hSZWN0KGNvbnN0IFJlbmRlcklubGluZSYgcmVuZGVySW5saW5lKSBjb25zdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uTGlu
ZUxheW91dC5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVn
cmF0aW9uTGluZUxheW91dC5oCmluZGV4IDYyMjI4MWNiZDk2NzM1NzE4NTAyNTc5MjZjYzM2YjM2
NDQ3NTRjNDMuLjczNjdjZTM1Yjc4NzAxMmI3MTFjM2JiNTEzMzRiYzJmZDUxNzA1NjMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlv
bkxpbmVMYXlvdXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5
b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0LmgKQEAgLTI5LDcgKzI5LDcgQEAKIAogI2luY2x1ZGUg
IkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIklubGluZUl0ZXJhdG9ySW5saW5lQm94LmgiCi0jaW5j
bHVkZSAiSW5saW5lSXRlcmF0b3JMaW5lLmgiCisjaW5jbHVkZSAiSW5saW5lSXRlcmF0b3JMaW5l
Qm94LmgiCiAjaW5jbHVkZSAiSW5saW5lSXRlcmF0b3JUZXh0Qm94LmgiCiAjaW5jbHVkZSAiTGF5
b3V0SW50ZWdyYXRpb25Cb3hUcmVlLmgiCiAjaW5jbHVkZSAiTGF5b3V0UG9pbnQuaCIKQEAgLTEx
MSw4ICsxMTEsOCBAQCBwdWJsaWM6CiAgICAgSW5saW5lSXRlcmF0b3I6OkxlYWZCb3hJdGVyYXRv
ciBib3hGb3IoY29uc3QgUmVuZGVyRWxlbWVudCYpIGNvbnN0OwogICAgIElubGluZUl0ZXJhdG9y
OjpJbmxpbmVCb3hJdGVyYXRvciBmaXJzdElubGluZUJveEZvcihjb25zdCBSZW5kZXJJbmxpbmUm
KSBjb25zdDsKICAgICBJbmxpbmVJdGVyYXRvcjo6SW5saW5lQm94SXRlcmF0b3IgZmlyc3RSb290
SW5saW5lQm94KCkgY29uc3Q7Ci0gICAgSW5saW5lSXRlcmF0b3I6OkxpbmVJdGVyYXRvciBmaXJz
dExpbmUoKSBjb25zdDsKLSAgICBJbmxpbmVJdGVyYXRvcjo6TGluZUl0ZXJhdG9yIGxhc3RMaW5l
KCkgY29uc3Q7CisgICAgSW5saW5lSXRlcmF0b3I6OkxpbmVCb3hJdGVyYXRvciBmaXJzdExpbmVC
b3goKSBjb25zdDsKKyAgICBJbmxpbmVJdGVyYXRvcjo6TGluZUJveEl0ZXJhdG9yIGxhc3RMaW5l
Qm94KCkgY29uc3Q7CiAKICAgICBMYXlvdXRSZWN0IGZpcnN0SW5saW5lQm94UmVjdChjb25zdCBS
ZW5kZXJJbmxpbmUmKSBjb25zdDsKICAgICBMYXlvdXRSZWN0IGVuY2xvc2luZ0JvcmRlckJveFJl
Y3RGb3IoY29uc3QgUmVuZGVySW5saW5lJikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGluZVNlbGVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2ludGVncmF0aW9uL0xpbmVTZWxlY3Rpb24uaAppbmRleCBjMzJmNmY5NTViMTVjNmRh
ODhhYTY1Nzk0Yzc0NjUyMzg4OTk0ZWNhLi5kZmY2OTllMWY2N2M5ZTc4N2VhM2MwYjlhMmNkNzI5
OTA1YjRhYThkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24v
TGluZVNlbGVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9M
aW5lU2VsZWN0aW9uLmgKQEAgLTI1LDQ0ICsyNSw0NCBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2lu
Y2x1ZGUgIklubGluZUl0ZXJhdG9yTGluZS5oIgorI2luY2x1ZGUgIklubGluZUl0ZXJhdG9yTGlu
ZUJveC5oIgogI2luY2x1ZGUgIlJlbmRlckJsb2NrRmxvdy5oIgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIExpbmVTZWxlY3Rpb24gewogcHVibGljOgotICAgIHN0YXRpYyBmbG9hdCBs
b2dpY2FsVG9wKGNvbnN0IElubGluZUl0ZXJhdG9yOjpMaW5lJiBsaW5lKSB7IHJldHVybiBsaW5l
LmNvbnRlbnRMb2dpY2FsVG9wQWRqdXN0ZWRGb3JQcmVjZWRpbmdMaW5lKCk7IH0KLSAgICBzdGF0
aWMgZmxvYXQgbG9naWNhbEJvdHRvbShjb25zdCBJbmxpbmVJdGVyYXRvcjo6TGluZSYgbGluZSkg
eyByZXR1cm4gbGluZS5jb250ZW50TG9naWNhbEJvdHRvbUFkanVzdGVkRm9yRm9sbG93aW5nTGlu
ZSgpOyB9CisgICAgc3RhdGljIGZsb2F0IGxvZ2ljYWxUb3AoY29uc3QgSW5saW5lSXRlcmF0b3I6
OkxpbmVCb3gmIGxpbmVCb3gpIHsgcmV0dXJuIGxpbmVCb3guY29udGVudExvZ2ljYWxUb3BBZGp1
c3RlZEZvclByZWNlZGluZ0xpbmVCb3goKTsgfQorICAgIHN0YXRpYyBmbG9hdCBsb2dpY2FsQm90
dG9tKGNvbnN0IElubGluZUl0ZXJhdG9yOjpMaW5lQm94JiBsaW5lQm94KSB7IHJldHVybiBsaW5l
Qm94LmNvbnRlbnRMb2dpY2FsQm90dG9tQWRqdXN0ZWRGb3JGb2xsb3dpbmdMaW5lQm94KCk7IH0K
IAotICAgIHN0YXRpYyBGbG9hdFJlY3QgbG9naWNhbFJlY3QoY29uc3QgSW5saW5lSXRlcmF0b3I6
OkxpbmUmIGxpbmUpCisgICAgc3RhdGljIEZsb2F0UmVjdCBsb2dpY2FsUmVjdChjb25zdCBJbmxp
bmVJdGVyYXRvcjo6TGluZUJveCYgbGluZUJveCkKICAgICB7Ci0gICAgICAgIHJldHVybiB7IEZs
b2F0UG9pbnQgeyBsaW5lLmNvbnRlbnRMb2dpY2FsTGVmdCgpLCBsaW5lLmNvbnRlbnRMb2dpY2Fs
VG9wQWRqdXN0ZWRGb3JQcmVjZWRpbmdMaW5lKCkgfSwgRmxvYXRQb2ludCB7IGxpbmUuY29udGVu
dExvZ2ljYWxSaWdodCgpLCBsaW5lLmNvbnRlbnRMb2dpY2FsQm90dG9tQWRqdXN0ZWRGb3JGb2xs
b3dpbmdMaW5lKCkgfSB9OworICAgICAgICByZXR1cm4geyBGbG9hdFBvaW50IHsgbGluZUJveC5j
b250ZW50TG9naWNhbExlZnQoKSwgbGluZUJveC5jb250ZW50TG9naWNhbFRvcEFkanVzdGVkRm9y
UHJlY2VkaW5nTGluZUJveCgpIH0sIEZsb2F0UG9pbnQgeyBsaW5lQm94LmNvbnRlbnRMb2dpY2Fs
UmlnaHQoKSwgbGluZUJveC5jb250ZW50TG9naWNhbEJvdHRvbUFkanVzdGVkRm9yRm9sbG93aW5n
TGluZUJveCgpIH0gfTsKICAgICB9CiAKLSAgICBzdGF0aWMgRmxvYXRSZWN0IHBoeXNpY2FsUmVj
dChjb25zdCBJbmxpbmVJdGVyYXRvcjo6TGluZSYgbGluZSkKKyAgICBzdGF0aWMgRmxvYXRSZWN0
IHBoeXNpY2FsUmVjdChjb25zdCBJbmxpbmVJdGVyYXRvcjo6TGluZUJveCYgbGluZUJveCkKICAg
ICB7Ci0gICAgICAgIGF1dG8gcGh5c2ljYWxSZWN0ID0gbG9naWNhbFJlY3QobGluZSk7Ci0gICAg
ICAgIGlmICghbGluZS5pc0hvcml6b250YWwoKSkKKyAgICAgICAgYXV0byBwaHlzaWNhbFJlY3Qg
PSBsb2dpY2FsUmVjdChsaW5lQm94KTsKKyAgICAgICAgaWYgKCFsaW5lQm94LmlzSG9yaXpvbnRh
bCgpKQogICAgICAgICAgICAgcGh5c2ljYWxSZWN0ID0gcGh5c2ljYWxSZWN0LnRyYW5zcG9zZWRS
ZWN0KCk7Ci0gICAgICAgIGxpbmUuY29udGFpbmluZ0Jsb2NrKCkuZmxpcEZvcldyaXRpbmdNb2Rl
KHBoeXNpY2FsUmVjdCk7CisgICAgICAgIGxpbmVCb3guY29udGFpbmluZ0Jsb2NrKCkuZmxpcEZv
cldyaXRpbmdNb2RlKHBoeXNpY2FsUmVjdCk7CiAgICAgICAgIHJldHVybiBwaHlzaWNhbFJlY3Q7
CiAgICAgfQogCi0gICAgc3RhdGljIGZsb2F0IGxvZ2ljYWxUb3BBZGp1c3RlZEZvclByZWNlZGlu
Z0Jsb2NrKGNvbnN0IElubGluZUl0ZXJhdG9yOjpMaW5lJiBsaW5lKQorICAgIHN0YXRpYyBmbG9h
dCBsb2dpY2FsVG9wQWRqdXN0ZWRGb3JQcmVjZWRpbmdCbG9jayhjb25zdCBJbmxpbmVJdGVyYXRv
cjo6TGluZUJveCYgbGluZUJveCkKICAgICB7CiAgICAgICAgIC8vIEZJWE1FOiBNb3ZlIGFkanVz
dEVuY2xvc2luZ1RvcEZvclByZWNlZGluZ0Jsb2NrIGZyb20gUmVuZGVyQmxvY2tGbG93IHRvIGhl
cmUuCi0gICAgICAgIHJldHVybiBsaW5lLmNvbnRhaW5pbmdCbG9jaygpLmFkanVzdEVuY2xvc2lu
Z1RvcEZvclByZWNlZGluZ0Jsb2NrKExheW91dFVuaXQgeyBsaW5lLmNvbnRlbnRMb2dpY2FsVG9w
QWRqdXN0ZWRGb3JQcmVjZWRpbmdMaW5lKCkgfSk7CisgICAgICAgIHJldHVybiBsaW5lQm94LmNv
bnRhaW5pbmdCbG9jaygpLmFkanVzdEVuY2xvc2luZ1RvcEZvclByZWNlZGluZ0Jsb2NrKExheW91
dFVuaXQgeyBsaW5lQm94LmNvbnRlbnRMb2dpY2FsVG9wQWRqdXN0ZWRGb3JQcmVjZWRpbmdMaW5l
Qm94KCkgfSk7CiAgICAgfQogCi0gICAgc3RhdGljIFJlbmRlck9iamVjdDo6SGlnaGxpZ2h0U3Rh
dGUgc2VsZWN0aW9uU3RhdGUoY29uc3QgSW5saW5lSXRlcmF0b3I6OkxpbmUmIGxpbmUpCisgICAg
c3RhdGljIFJlbmRlck9iamVjdDo6SGlnaGxpZ2h0U3RhdGUgc2VsZWN0aW9uU3RhdGUoY29uc3Qg
SW5saW5lSXRlcmF0b3I6OkxpbmVCb3gmIGxpbmVCb3gpCiAgICAgewotICAgICAgICBhdXRvJiBi
bG9jayA9IGxpbmUuY29udGFpbmluZ0Jsb2NrKCk7CisgICAgICAgIGF1dG8mIGJsb2NrID0gbGlu
ZUJveC5jb250YWluaW5nQmxvY2soKTsKICAgICAgICAgaWYgKGJsb2NrLnNlbGVjdGlvblN0YXRl
KCkgPT0gUmVuZGVyT2JqZWN0OjpIaWdobGlnaHRTdGF0ZTo6Tm9uZSkKICAgICAgICAgICAgIHJl
dHVybiBSZW5kZXJPYmplY3Q6OkhpZ2hsaWdodFN0YXRlOjpOb25lOwogCiAgICAgICAgIGF1dG8g
bGluZVN0YXRlID0gUmVuZGVyT2JqZWN0OjpIaWdobGlnaHRTdGF0ZTo6Tm9uZTsKLSAgICAgICAg
Zm9yIChhdXRvIGJveCA9IGxpbmUuZmlyc3RMZWFmQm94KCk7IGJveDsgYm94LnRyYXZlcnNlTmV4
dE9uTGluZSgpKSB7CisgICAgICAgIGZvciAoYXV0byBib3ggPSBsaW5lQm94LmZpcnN0TGVhZkJv
eCgpOyBib3g7IGJveC50cmF2ZXJzZU5leHRPbkxpbmUoKSkgewogICAgICAgICAgICAgYXV0byBi
b3hTdGF0ZSA9IGJveC0+c2VsZWN0aW9uU3RhdGUoKTsKICAgICAgICAgICAgIGlmIChsaW5lU3Rh
dGUgPT0gUmVuZGVyT2JqZWN0OjpIaWdobGlnaHRTdGF0ZTo6Tm9uZSkKICAgICAgICAgICAgICAg
ICBsaW5lU3RhdGUgPSBib3hTdGF0ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9DYXJldFJlY3RDb21wdXRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
Q2FyZXRSZWN0Q29tcHV0YXRpb24uY3BwCmluZGV4IDI5ZWM5MTZkZWM3ZmM3NWYyZWVkZDRhNDE4
ZmI0ZmI2MTU2ZTJmNmMuLjliNDk3NTYxMWJmOTdlZTk1NTIxY2E2MGZmODJkODliNjRiZjlhN2Ug
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DYXJldFJlY3RDb21wdXRhdGlv
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NhcmV0UmVjdENvbXB1dGF0aW9u
LmNwcApAQCAtMjcsNyArMjcsNyBAQAogI2luY2x1ZGUgIkNhcmV0UmVjdENvbXB1dGF0aW9uLmgi
CiAKICNpbmNsdWRlICJFZGl0aW5nLmgiCi0jaW5jbHVkZSAiSW5saW5lSXRlcmF0b3JMaW5lLmgi
CisjaW5jbHVkZSAiSW5saW5lSXRlcmF0b3JMaW5lQm94LmgiCiAjaW5jbHVkZSAiSW5saW5lSXRl
cmF0b3JUZXh0Qm94LmgiCiAjaW5jbHVkZSAiTGluZVNlbGVjdGlvbi5oIgogI2luY2x1ZGUgIlJl
bmRlckJsb2NrRmxvdy5oIgpAQCAtMTEwLDEwICsxMTAsMTAgQEAgc3RhdGljIExheW91dFJlY3Qg
Y29tcHV0ZUNhcmV0UmVjdEZvckVtcHR5RWxlbWVudChjb25zdCBSZW5kZXJCb3hNb2RlbE9iamVj
dCYgcmUKICAgICByZXR1cm4gY3VycmVudFN0eWxlLmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkg
PyByZWN0IDogcmVjdC50cmFuc3Bvc2VkUmVjdCgpOwogfQogCi1zdGF0aWMgTGF5b3V0UmVjdCBj
b21wdXRlQ2FyZXRSZWN0Rm9yTGluZVBvc2l0aW9uKGNvbnN0IElubGluZUl0ZXJhdG9yOjpMaW5l
SXRlcmF0b3ImIGxpbmUsIGZsb2F0IGxvZ2ljYWxMZWZ0UG9zaXRpb24sIENhcmV0UmVjdE1vZGUg
Y2FyZXRSZWN0TW9kZSkKK3N0YXRpYyBMYXlvdXRSZWN0IGNvbXB1dGVDYXJldFJlY3RGb3JMaW5l
UG9zaXRpb24oY29uc3QgSW5saW5lSXRlcmF0b3I6OkxpbmVCb3hJdGVyYXRvciYgbGluZUJveCwg
ZmxvYXQgbG9naWNhbExlZnRQb3NpdGlvbiwgQ2FyZXRSZWN0TW9kZSBjYXJldFJlY3RNb2RlKQog
ewotICAgIGF1dG8mIGNvbnRhaW5pbmdCbG9jayA9IGxpbmUtPmNvbnRhaW5pbmdCbG9jaygpOwot
ICAgIGF1dG8gbGluZVNlbGVjdGlvblJlY3QgPSBMaW5lU2VsZWN0aW9uOjpsb2dpY2FsUmVjdCgq
bGluZSk7CisgICAgYXV0byYgY29udGFpbmluZ0Jsb2NrID0gbGluZUJveC0+Y29udGFpbmluZ0Js
b2NrKCk7CisgICAgYXV0byBsaW5lU2VsZWN0aW9uUmVjdCA9IExpbmVTZWxlY3Rpb246OmxvZ2lj
YWxSZWN0KCpsaW5lQm94KTsKIAogICAgIGludCBoZWlnaHQgPSBsaW5lU2VsZWN0aW9uUmVjdC5o
ZWlnaHQoKTsKICAgICBpbnQgdG9wID0gbGluZVNlbGVjdGlvblJlY3QueSgpOwpAQCAtMTczLDEw
ICsxNzMsMTAgQEAgc3RhdGljIExheW91dFJlY3QgY29tcHV0ZUNhcmV0UmVjdEZvclRleHQoY29u
c3QgSW5saW5lQm94QW5kT2Zmc2V0JiBib3hBbmRPZmZzZXQKICAgICAgICAgcmV0dXJuIHsgfTsK
IAogICAgIGF1dG8mIHRleHRCb3ggPSBkb3duY2FzdDxJbmxpbmVJdGVyYXRvcjo6VGV4dEJveEl0
ZXJhdG9yPihib3hBbmRPZmZzZXQuYm94KTsKLSAgICBhdXRvIGxpbmUgPSB0ZXh0Qm94LT5saW5l
KCk7CisgICAgYXV0byBsaW5lQm94ID0gdGV4dEJveC0+bGluZUJveCgpOwogCiAgICAgZmxvYXQg
cG9zaXRpb24gPSB0ZXh0Qm94LT5wb3NpdGlvbkZvck9mZnNldChib3hBbmRPZmZzZXQub2Zmc2V0
KTsKLSAgICByZXR1cm4gY29tcHV0ZUNhcmV0UmVjdEZvckxpbmVQb3NpdGlvbihsaW5lLCBwb3Np
dGlvbiwgY2FyZXRSZWN0TW9kZSk7CisgICAgcmV0dXJuIGNvbXB1dGVDYXJldFJlY3RGb3JMaW5l
UG9zaXRpb24obGluZUJveCwgcG9zaXRpb24sIGNhcmV0UmVjdE1vZGUpOwogfQogCiBzdGF0aWMg
TGF5b3V0UmVjdCBjb21wdXRlQ2FyZXRSZWN0Rm9yTGluZUJyZWFrKGNvbnN0IElubGluZUJveEFu
ZE9mZnNldCYgYm94QW5kT2Zmc2V0LCBDYXJldFJlY3RNb2RlIGNhcmV0UmVjdE1vZGUpCkBAIC0x
ODYsOCArMTg2LDggQEAgc3RhdGljIExheW91dFJlY3QgY29tcHV0ZUNhcmV0UmVjdEZvckxpbmVC
cmVhayhjb25zdCBJbmxpbmVCb3hBbmRPZmZzZXQmIGJveEFuZE8KICAgICBpZiAoIWJveEFuZE9m
ZnNldC5ib3gpCiAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICBhdXRvIGxpbmUgPSBib3hBbmRP
ZmZzZXQuYm94LT5saW5lKCk7Ci0gICAgcmV0dXJuIGNvbXB1dGVDYXJldFJlY3RGb3JMaW5lUG9z
aXRpb24obGluZSwgbGluZS0+Y29udGVudExvZ2ljYWxMZWZ0KCksIGNhcmV0UmVjdE1vZGUpOwor
ICAgIGF1dG8gbGluZUJveCA9IGJveEFuZE9mZnNldC5ib3gtPmxpbmVCb3goKTsKKyAgICByZXR1
cm4gY29tcHV0ZUNhcmV0UmVjdEZvckxpbmVQb3NpdGlvbihsaW5lQm94LCBsaW5lQm94LT5jb250
ZW50TG9naWNhbExlZnQoKSwgY2FyZXRSZWN0TW9kZSk7CiB9CiAKIHN0YXRpYyBMYXlvdXRSZWN0
IGNvbXB1dGVDYXJldFJlY3RGb3JTVkdJbmxpbmVUZXh0KGNvbnN0IElubGluZUJveEFuZE9mZnNl
dCYgYm94QW5kT2Zmc2V0LCBDYXJldFJlY3RNb2RlKQpAQCAtMjI4LDEwICsyMjgsMTAgQEAgc3Rh
dGljIExheW91dFJlY3QgY29tcHV0ZUNhcmV0UmVjdEZvckJveChjb25zdCBSZW5kZXJCb3gmIHJl
bmRlcmVyLCBjb25zdCBJbmxpbmUKICAgICAgICAgcmVjdC5tb3ZlKExheW91dFNpemUocmVuZGVy
ZXIud2lkdGgoKSAtIGNhcmV0V2lkdGgsIDBfbHUpKTsKIAogICAgIGlmIChib3hBbmRPZmZzZXQu
Ym94KSB7Ci0gICAgICAgIGF1dG8gbGluZSA9IGJveEFuZE9mZnNldC5ib3gtPmxpbmUoKTsKLSAg
ICAgICAgYXV0byB0b3AgPSBsaW5lLT5jb250ZW50TG9naWNhbFRvcCgpOworICAgICAgICBhdXRv
IGxpbmVCb3ggPSBib3hBbmRPZmZzZXQuYm94LT5saW5lQm94KCk7CisgICAgICAgIGF1dG8gdG9w
ID0gbGluZUJveC0+Y29udGVudExvZ2ljYWxUb3AoKTsKICAgICAgICAgcmVjdC5zZXRZKHRvcCk7
Ci0gICAgICAgIHJlY3Quc2V0SGVpZ2h0KGxpbmUtPmNvbnRlbnRMb2dpY2FsQm90dG9tKCkgLSB0
b3ApOworICAgICAgICByZWN0LnNldEhlaWdodChsaW5lQm94LT5jb250ZW50TG9naWNhbEJvdHRv
bSgpIC0gdG9wKTsKICAgICB9CiAKICAgICAvLyBJZiBoZWlnaHQgb2YgYm94IGlzIHNtYWxsZXIg
dGhhbiBmb250IGhlaWdodCwgdXNlIHRoZSBsYXR0ZXIgb25lLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUJveFBhaW50ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0lubGluZUJveFBhaW50ZXIuY3BwCmluZGV4IDA3YzRkZWZjY2RjYjg3ODk3MDAx
ODkwNjczZjYzMzllOWRhZGIxODYuLjFmMzc0MzdkNjBmNTJlNjYyMDJjOTM5OThjNzQzYmZmYjhh
ZjRjM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVCb3hQYWlu
dGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lQm94UGFpbnRlci5j
cHAKQEAgLTI2LDcgKzI2LDcgQEAKICNpbmNsdWRlICJJbmxpbmVCb3hQYWludGVyLmgiCiAKICNp
bmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKLSNpbmNsdWRlICJJbmxpbmVJdGVyYXRvckxpbmUu
aCIKKyNpbmNsdWRlICJJbmxpbmVJdGVyYXRvckxpbmVCb3guaCIKICNpbmNsdWRlICJMZWdhY3lJ
bmxpbmVGbG93Qm94LmgiCiAjaW5jbHVkZSAiUGFpbnRJbmZvLmgiCiAjaW5jbHVkZSAiUmVuZGVy
QmxvY2tGbG93LmgiCkBAIC01Myw3ICs1Myw3IEBAIElubGluZUJveFBhaW50ZXI6OklubGluZUJv
eFBhaW50ZXIoY29uc3QgSW5saW5lSXRlcmF0b3I6OklubGluZUJveCYgaW5saW5lQm94LCBQCiAg
ICAgLCBtX3BhaW50SW5mbyhwYWludEluZm8pCiAgICAgLCBtX3BhaW50T2Zmc2V0KHBhaW50T2Zm
c2V0KQogICAgICwgbV9yZW5kZXJlcihtX2lubGluZUJveC5yZW5kZXJlcigpKQotICAgICwgbV9p
c0ZpcnN0TGluZShtX2lubGluZUJveC5saW5lKCktPmlzRmlyc3QoKSkKKyAgICAsIG1faXNGaXJz
dExpbmVCb3gobV9pbmxpbmVCb3gubGluZUJveCgpLT5pc0ZpcnN0KCkpCiAgICAgLCBtX2lzUm9v
dElubGluZUJveChtX2lubGluZUJveC5pc1Jvb3RJbmxpbmVCb3goKSkKICAgICAsIG1faXNIb3Jp
em9udGFsKG1faW5saW5lQm94LmlzSG9yaXpvbnRhbCgpKQogewpAQCAtMTQxLDcgKzE0MSw3IEBA
IHZvaWQgSW5saW5lQm94UGFpbnRlcjo6cGFpbnRNYXNrKCkKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgLy8gTW92ZSB4L3kgdG8gb3VyIGNvb3JkaW5hdGVzLgotICAgIGF1dG8gbG9jYWxSZWN0ID0g
TGF5b3V0UmVjdCB7IG1faW5saW5lQm94LnZpc3VhbFJlY3QobV9pbmxpbmVCb3gubGluZSgpLT5j
b250YWluaW5nQmxvY2soKS5sb2dpY2FsSGVpZ2h0KCkpIH07CisgICAgYXV0byBsb2NhbFJlY3Qg
PSBMYXlvdXRSZWN0IHsgbV9pbmxpbmVCb3gudmlzdWFsUmVjdChtX2lubGluZUJveC5saW5lQm94
KCktPmNvbnRhaW5pbmdCbG9jaygpLmxvZ2ljYWxIZWlnaHQoKSkgfTsKICAgICBMYXlvdXRQb2lu
dCBhZGp1c3RlZFBhaW50T2Zmc2V0ID0gbV9wYWludE9mZnNldCArIGxvY2FsUmVjdC5sb2NhdGlv
bigpOwogCiAgICAgY29uc3QgTmluZVBpZWNlSW1hZ2UmIG1hc2tOaW5lUGllY2VJbWFnZSA9IHJl
bmRlcmVyKCkuc3R5bGUoKS5tYXNrQm94SW1hZ2UoKTsKQEAgLTIxMywxMSArMjEzLDExIEBAIHZv
aWQgSW5saW5lQm94UGFpbnRlcjo6cGFpbnREZWNvcmF0aW9ucygpCiAgICAgYXV0byYgc3R5bGUg
PSB0aGlzLT5zdHlsZSgpOwogICAgIC8vIFlvdSBjYW4gdXNlIHA6OmZpcnN0LWxpbmUgdG8gc3Bl
Y2lmeSBhIGJhY2tncm91bmQuIElmIHNvLCB0aGUgcm9vdCBpbmxpbmUgYm94ZXMgZm9yCiAgICAg
Ly8gYSBsaW5lIG1heSBhY3R1YWxseSBoYXZlIHRvIHBhaW50IGEgYmFja2dyb3VuZC4KLSAgICBp
ZiAobV9pc1Jvb3RJbmxpbmVCb3ggJiYgKCFtX2lzRmlyc3RMaW5lIHx8ICZzdHlsZSA9PSAmcmVu
ZGVyZXIoKS5zdHlsZSgpKSkKKyAgICBpZiAobV9pc1Jvb3RJbmxpbmVCb3ggJiYgKCFtX2lzRmly
c3RMaW5lQm94IHx8ICZzdHlsZSA9PSAmcmVuZGVyZXIoKS5zdHlsZSgpKSkKICAgICAgICAgcmV0
dXJuOwogCiAgICAgLy8gTW92ZSB4L3kgdG8gb3VyIGNvb3JkaW5hdGVzLgotICAgIGF1dG8gbG9j
YWxSZWN0ID0gTGF5b3V0UmVjdCB7IG1faW5saW5lQm94LnZpc3VhbFJlY3QobV9pbmxpbmVCb3gu
bGluZSgpLT5jb250YWluaW5nQmxvY2soKS5sb2dpY2FsSGVpZ2h0KCkpIH07CisgICAgYXV0byBs
b2NhbFJlY3QgPSBMYXlvdXRSZWN0IHsgbV9pbmxpbmVCb3gudmlzdWFsUmVjdChtX2lubGluZUJv
eC5saW5lQm94KCktPmNvbnRhaW5pbmdCbG9jaygpLmxvZ2ljYWxIZWlnaHQoKSkgfTsKICAgICBM
YXlvdXRQb2ludCBhZGp1c3RlZFBhaW50b2Zmc2V0ID0gbV9wYWludE9mZnNldCArIGxvY2FsUmVj
dC5sb2NhdGlvbigpOwogICAgIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCA9IG1fcGFpbnRJbmZv
LmNvbnRleHQoKTsKICAgICBMYXlvdXRSZWN0IHBhaW50UmVjdCA9IExheW91dFJlY3QoYWRqdXN0
ZWRQYWludG9mZnNldCwgbG9jYWxSZWN0LnNpemUoKSk7CkBAIC0zNTcsNyArMzU3LDcgQEAgdm9p
ZCBJbmxpbmVCb3hQYWludGVyOjpwYWludEJveFNoYWRvdyhTaGFkb3dTdHlsZSBzaGFkb3dTdHls
ZSwgY29uc3QgTGF5b3V0UmVjdCYKIAogY29uc3QgUmVuZGVyU3R5bGUmIElubGluZUJveFBhaW50
ZXI6OnN0eWxlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9pc0ZpcnN0TGluZSA/IHJlbmRlcmVy
KCkuZmlyc3RMaW5lU3R5bGUoKSA6IHJlbmRlcmVyKCkuc3R5bGUoKTsKKyAgICByZXR1cm4gbV9p
c0ZpcnN0TGluZUJveCA/IHJlbmRlcmVyKCkuZmlyc3RMaW5lU3R5bGUoKSA6IHJlbmRlcmVyKCku
c3R5bGUoKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lu
bGluZUJveFBhaW50ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVCb3hQYWlu
dGVyLmgKaW5kZXggMWZkNWI4NWE3ZTNlNWZhYmE1ZGI3NGQ4ZjkyNjBlMTMwNzFmYzUwYi4uNmQ2
ZDY2M2FkODEzODFlMTY5YWYxZDZhNmJlYWIxOGMwMzI0ZTRlNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUJveFBhaW50ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvSW5saW5lQm94UGFpbnRlci5oCkBAIC02Nyw3ICs2Nyw3IEBAIHByaXZhdGU6
CiAgICAgUGFpbnRJbmZvJiBtX3BhaW50SW5mbzsKICAgICBjb25zdCBMYXlvdXRQb2ludCBtX3Bh
aW50T2Zmc2V0OwogICAgIGNvbnN0IFJlbmRlckJveE1vZGVsT2JqZWN0JiBtX3JlbmRlcmVyOwot
ICAgIGNvbnN0IGJvb2wgbV9pc0ZpcnN0TGluZTsKKyAgICBjb25zdCBib29sIG1faXNGaXJzdExp
bmVCb3g7CiAgICAgY29uc3QgYm9vbCBtX2lzUm9vdElubGluZUJveDsKICAgICBjb25zdCBib29s
IG1faXNIb3Jpem9udGFsOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCbG9ja0Zsb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJs
b2NrRmxvdy5jcHAKaW5kZXggMTNmNGYwN2RkYjhjYzY2ZGU4NTFjODRmZjZiYmFmZWNjMDk1ZTMz
My4uNjAyMGZkMmFkMTU5YWUyNzgwNjc0NzA4MjUzNjBmMzE4ZGU5YzM2NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAKQEAgLTM2LDcgKzM2LDcgQEAK
ICNpbmNsdWRlICJIaXRUZXN0TG9jYXRpb24uaCIKICNpbmNsdWRlICJJbmxpbmVJdGVyYXRvckJv
eC5oIgogI2luY2x1ZGUgIklubGluZUl0ZXJhdG9ySW5saW5lQm94LmgiCi0jaW5jbHVkZSAiSW5s
aW5lSXRlcmF0b3JMaW5lLmgiCisjaW5jbHVkZSAiSW5saW5lSXRlcmF0b3JMaW5lQm94LmgiCiAj
aW5jbHVkZSAiSW5saW5lSXRlcmF0b3JMb2dpY2FsT3JkZXJUcmF2ZXJzYWwuaCIKICNpbmNsdWRl
ICJJbmxpbmVJdGVyYXRvclRleHRCb3guaCIKICNpbmNsdWRlICJJbmxpbmVXYWxrZXIuaCIKQEAg
LTMwNjEsMTIgKzMwNjEsMTIgQEAgTGF5b3V0VW5pdCBSZW5kZXJCbG9ja0Zsb3c6OmFkanVzdEVu
Y2xvc2luZ1RvcEZvclByZWNlZGluZ0Jsb2NrKExheW91dFVuaXQgdG9wKQogICAgIGlmICghb2Zm
c2V0VG9CbG9ja0JlZm9yZS5oZWlnaHQoKSkKICAgICAgICAgcmV0dXJuIHRvcDsKIAotICAgIGlm
IChhdXRvIGxhc3RMaW5lID0gSW5saW5lSXRlcmF0b3I6Omxhc3RMaW5lRm9yKCpibG9ja0JlZm9y
ZSkpIHsKLSAgICAgICAgYXV0byBsYXN0TGluZVNlbGVjdGlvblN0YXRlID0gTGluZVNlbGVjdGlv
bjo6c2VsZWN0aW9uU3RhdGUoKmxhc3RMaW5lKTsKKyAgICBpZiAoYXV0byBsYXN0TGluZUJveCA9
IElubGluZUl0ZXJhdG9yOjpsYXN0TGluZUJveEZvcigqYmxvY2tCZWZvcmUpKSB7CisgICAgICAg
IGF1dG8gbGFzdExpbmVTZWxlY3Rpb25TdGF0ZSA9IExpbmVTZWxlY3Rpb246OnNlbGVjdGlvblN0
YXRlKCpsYXN0TGluZUJveCk7CiAgICAgICAgIGlmIChsYXN0TGluZVNlbGVjdGlvblN0YXRlICE9
IFJlbmRlck9iamVjdDo6SGlnaGxpZ2h0U3RhdGU6Okluc2lkZSAmJiBsYXN0TGluZVNlbGVjdGlv
blN0YXRlICE9IFJlbmRlck9iamVjdDo6SGlnaGxpZ2h0U3RhdGU6OlN0YXJ0KQogICAgICAgICAg
ICAgcmV0dXJuIHRvcDsKIAotICAgICAgICBhdXRvIGxhc3RMaW5lU2VsZWN0aW9uQm90dG9tID0g
TGluZVNlbGVjdGlvbjo6bG9naWNhbEJvdHRvbSgqbGFzdExpbmUpICsgb2Zmc2V0VG9CbG9ja0Jl
Zm9yZS5oZWlnaHQoKTsKKyAgICAgICAgYXV0byBsYXN0TGluZVNlbGVjdGlvbkJvdHRvbSA9IExp
bmVTZWxlY3Rpb246OmxvZ2ljYWxCb3R0b20oKmxhc3RMaW5lQm94KSArIG9mZnNldFRvQmxvY2tC
ZWZvcmUuaGVpZ2h0KCk7CiAgICAgICAgIHRvcCA9IHN0ZDo6bWF4KHRvcCwgTGF5b3V0VW5pdCB7
IGxhc3RMaW5lU2VsZWN0aW9uQm90dG9tIH0pOwogICAgIH0KICAgICByZXR1cm4gdG9wOwpAQCAt
MzA4NywxMiArMzA4NywxMiBAQCBHYXBSZWN0cyBSZW5kZXJCbG9ja0Zsb3c6OmlubGluZVNlbGVj
dGlvbkdhcHMoUmVuZGVyQmxvY2smIHJvb3RCbG9jaywgY29uc3QgTGF5bwogICAgICAgICByZXR1
cm4geyB9OwogICAgIH0KIAotICAgIGF1dG8gaGFzU2VsZWN0ZWRDaGlsZHJlbiA9IFsmXShjb25z
dCBJbmxpbmVJdGVyYXRvcjo6TGluZUl0ZXJhdG9yJiBsaW5lKSB7Ci0gICAgICAgIHJldHVybiBM
aW5lU2VsZWN0aW9uOjpzZWxlY3Rpb25TdGF0ZSgqbGluZSkgIT0gUmVuZGVyT2JqZWN0OjpIaWdo
bGlnaHRTdGF0ZTo6Tm9uZTsKKyAgICBhdXRvIGhhc1NlbGVjdGVkQ2hpbGRyZW4gPSBbJl0oY29u
c3QgSW5saW5lSXRlcmF0b3I6OkxpbmVCb3hJdGVyYXRvciYgbGluZUJveCkgeworICAgICAgICBy
ZXR1cm4gTGluZVNlbGVjdGlvbjo6c2VsZWN0aW9uU3RhdGUoKmxpbmVCb3gpICE9IFJlbmRlck9i
amVjdDo6SGlnaGxpZ2h0U3RhdGU6Ok5vbmU7CiAgICAgfTsKIAotICAgIGF1dG8gbGluZVNlbGVj
dGlvbkdhcCA9IFsmXShjb25zdCBJbmxpbmVJdGVyYXRvcjo6TGluZUl0ZXJhdG9yJiBsaW5lLCBM
YXlvdXRVbml0IHNlbFRvcCwgTGF5b3V0VW5pdCBzZWxIZWlnaHQpIC0+IEdhcFJlY3RzIHsKLSAg
ICAgICAgYXV0byBsaW5lU3RhdGUgPSBMaW5lU2VsZWN0aW9uOjpzZWxlY3Rpb25TdGF0ZSgqbGlu
ZSk7CisgICAgYXV0byBsaW5lU2VsZWN0aW9uR2FwID0gWyZdKGNvbnN0IElubGluZUl0ZXJhdG9y
OjpMaW5lQm94SXRlcmF0b3ImIGxpbmVCb3gsIExheW91dFVuaXQgc2VsVG9wLCBMYXlvdXRVbml0
IHNlbEhlaWdodCkgLT4gR2FwUmVjdHMgeworICAgICAgICBhdXRvIGxpbmVTdGF0ZSA9IExpbmVT
ZWxlY3Rpb246OnNlbGVjdGlvblN0YXRlKCpsaW5lQm94KTsKIAogICAgICAgICBib29sIGxlZnRH
YXAsIHJpZ2h0R2FwOwogICAgICAgICBnZXRTZWxlY3Rpb25HYXBJbmZvKGxpbmVTdGF0ZSwgbGVm
dEdhcCwgcmlnaHRHYXApOwpAQCAtMzEwMCw3ICszMTAwLDcgQEAgR2FwUmVjdHMgUmVuZGVyQmxv
Y2tGbG93OjppbmxpbmVTZWxlY3Rpb25HYXBzKFJlbmRlckJsb2NrJiByb290QmxvY2ssIGNvbnN0
IExheW8KICAgICAgICAgR2FwUmVjdHMgcmVzdWx0OwogCiAgICAgICAgIGF1dG8gZmlyc3RTZWxl
Y3RlZEJveCA9IFsmXSgpIC0+IElubGluZUl0ZXJhdG9yOjpMZWFmQm94SXRlcmF0b3IgewotICAg
ICAgICAgICAgZm9yIChhdXRvIGJveCA9IGxpbmUtPmZpcnN0TGVhZkJveCgpOyBib3g7IGJveC50
cmF2ZXJzZU5leHRPbkxpbmUoKSkgeworICAgICAgICAgICAgZm9yIChhdXRvIGJveCA9IGxpbmVC
b3gtPmZpcnN0TGVhZkJveCgpOyBib3g7IGJveC50cmF2ZXJzZU5leHRPbkxpbmUoKSkgewogICAg
ICAgICAgICAgICAgIGlmIChib3gtPnNlbGVjdGlvblN0YXRlKCkgIT0gUmVuZGVyT2JqZWN0OjpI
aWdobGlnaHRTdGF0ZTo6Tm9uZSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGJveDsKICAg
ICAgICAgICAgIH0KQEAgLTMxMDgsNyArMzEwOCw3IEBAIEdhcFJlY3RzIFJlbmRlckJsb2NrRmxv
dzo6aW5saW5lU2VsZWN0aW9uR2FwcyhSZW5kZXJCbG9jayYgcm9vdEJsb2NrLCBjb25zdCBMYXlv
CiAgICAgICAgIH0oKTsKIAogICAgICAgICBhdXRvIGxhc3RTZWxlY3RlZEJveCA9IFsmXSgpIC0+
IElubGluZUl0ZXJhdG9yOjpMZWFmQm94SXRlcmF0b3IgewotICAgICAgICAgICAgZm9yIChhdXRv
IGJveCA9IGxpbmUtPmxhc3RMZWFmQm94KCk7IGJveDsgYm94LnRyYXZlcnNlUHJldmlvdXNPbkxp
bmUoKSkgeworICAgICAgICAgICAgZm9yIChhdXRvIGJveCA9IGxpbmVCb3gtPmxhc3RMZWFmQm94
KCk7IGJveDsgYm94LnRyYXZlcnNlUHJldmlvdXNPbkxpbmUoKSkgewogICAgICAgICAgICAgICAg
IGlmIChib3gtPnNlbGVjdGlvblN0YXRlKCkgIT0gUmVuZGVyT2JqZWN0OjpIaWdobGlnaHRTdGF0
ZTo6Tm9uZSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGJveDsKICAgICAgICAgICAgIH0K
QEAgLTMxNTcsMzggKzMxNTcsNDAgQEAgR2FwUmVjdHMgUmVuZGVyQmxvY2tGbG93OjppbmxpbmVT
ZWxlY3Rpb25HYXBzKFJlbmRlckJsb2NrJiByb290QmxvY2ssIGNvbnN0IExheW8KICAgICAgICAg
cmV0dXJuIHJlc3VsdDsKICAgICB9OwogCi0gICAgSW5saW5lSXRlcmF0b3I6OkxpbmVJdGVyYXRv
ciBsYXN0U2VsZWN0ZWRMaW5lOwotICAgIElubGluZUl0ZXJhdG9yOjpMaW5lSXRlcmF0b3IgbGlu
ZSA9IElubGluZUl0ZXJhdG9yOjpmaXJzdExpbmVGb3IoKnRoaXMpOwotICAgIGZvciAoOyBsaW5l
ICYmICFoYXNTZWxlY3RlZENoaWxkcmVuKGxpbmUpOyBsaW5lLnRyYXZlcnNlTmV4dCgpKSB7IH0K
KyAgICBJbmxpbmVJdGVyYXRvcjo6TGluZUJveEl0ZXJhdG9yIGxhc3RTZWxlY3RlZExpbmVCb3g7
CisgICAgYXV0byBsaW5lQm94ID0gSW5saW5lSXRlcmF0b3I6OmZpcnN0TGluZUJveEZvcigqdGhp
cyk7CisgICAgZm9yICg7IGxpbmVCb3ggJiYgIWhhc1NlbGVjdGVkQ2hpbGRyZW4obGluZUJveCk7
IGxpbmVCb3gudHJhdmVyc2VOZXh0KCkpIHsgfQogCiAgICAgR2FwUmVjdHMgcmVzdWx0OwogCiAg
ICAgLy8gTm93IHBhaW50IHRoZSBnYXBzIGZvciB0aGUgbGluZXMuCi0gICAgZm9yICg7IGxpbmUg
JiYgaGFzU2VsZWN0ZWRDaGlsZHJlbihsaW5lKTsgbGluZS50cmF2ZXJzZU5leHQoKSkgewotICAg
ICAgICBhdXRvIHNlbGVjdGlvblRvcCA9ICBMYXlvdXRVbml0IHsgTGluZVNlbGVjdGlvbjo6bG9n
aWNhbFRvcEFkanVzdGVkRm9yUHJlY2VkaW5nQmxvY2soKmxpbmUpIH07Ci0gICAgICAgIGF1dG8g
c2VsZWN0aW9uSGVpZ2h0ID0gTGF5b3V0VW5pdCB7IHN0ZDo6bWF4KDAuZiwgTGluZVNlbGVjdGlv
bjo6bG9naWNhbEJvdHRvbSgqbGluZSkgLSBzZWxlY3Rpb25Ub3ApIH07CisgICAgZm9yICg7IGxp
bmVCb3ggJiYgaGFzU2VsZWN0ZWRDaGlsZHJlbihsaW5lQm94KTsgbGluZUJveC50cmF2ZXJzZU5l
eHQoKSkgeworICAgICAgICBhdXRvIHNlbGVjdGlvblRvcCA9ICBMYXlvdXRVbml0IHsgTGluZVNl
bGVjdGlvbjo6bG9naWNhbFRvcEFkanVzdGVkRm9yUHJlY2VkaW5nQmxvY2soKmxpbmVCb3gpIH07
CisgICAgICAgIGF1dG8gc2VsZWN0aW9uSGVpZ2h0ID0gTGF5b3V0VW5pdCB7IHN0ZDo6bWF4KDAu
ZiwgTGluZVNlbGVjdGlvbjo6bG9naWNhbEJvdHRvbSgqbGluZUJveCkgLSBzZWxlY3Rpb25Ub3Ap
IH07CiAKLSAgICAgICAgaWYgKCFjb250YWluc1N0YXJ0ICYmICFsYXN0U2VsZWN0ZWRMaW5lICYm
Ci0gICAgICAgICAgICBzZWxlY3Rpb25TdGF0ZSgpICE9IEhpZ2hsaWdodFN0YXRlOjpTdGFydCAm
JiBzZWxlY3Rpb25TdGF0ZSgpICE9IEhpZ2hsaWdodFN0YXRlOjpCb3RoICYmICFpc1J1YnlCYXNl
KCkpCisgICAgICAgIGlmICghY29udGFpbnNTdGFydCAmJiAhbGFzdFNlbGVjdGVkTGluZUJveAor
ICAgICAgICAgICAgJiYgc2VsZWN0aW9uU3RhdGUoKSAhPSBIaWdobGlnaHRTdGF0ZTo6U3RhcnQK
KyAgICAgICAgICAgICYmIHNlbGVjdGlvblN0YXRlKCkgIT0gSGlnaGxpZ2h0U3RhdGU6OkJvdGgg
JiYgIWlzUnVieUJhc2UoKSkKICAgICAgICAgICAgIHJlc3VsdC51bml0ZUNlbnRlcihibG9ja1Nl
bGVjdGlvbkdhcChyb290QmxvY2ssIHJvb3RCbG9ja1BoeXNpY2FsUG9zaXRpb24sIG9mZnNldEZy
b21Sb290QmxvY2ssIGxhc3RMb2dpY2FsVG9wLCBsYXN0TG9naWNhbExlZnQsIGxhc3RMb2dpY2Fs
UmlnaHQsIHNlbGVjdGlvblRvcCwgY2FjaGUsIHBhaW50SW5mbykpOwogCi0gICAgICAgIExheW91
dFJlY3QgbG9naWNhbFJlY3QgeyBMYXlvdXRVbml0KGxpbmUtPmNvbnRlbnRMb2dpY2FsTGVmdCgp
KSwgc2VsZWN0aW9uVG9wLCBMYXlvdXRVbml0KGxpbmUtPmNvbnRlbnRMb2dpY2FsV2lkdGgoKSks
IHNlbGVjdGlvblRvcCArIHNlbGVjdGlvbkhlaWdodCB9OworICAgICAgICBMYXlvdXRSZWN0IGxv
Z2ljYWxSZWN0IHsgTGF5b3V0VW5pdChsaW5lQm94LT5jb250ZW50TG9naWNhbExlZnQoKSksIHNl
bGVjdGlvblRvcCwgTGF5b3V0VW5pdChsaW5lQm94LT5jb250ZW50TG9naWNhbFdpZHRoKCkpLCBz
ZWxlY3Rpb25Ub3AgKyBzZWxlY3Rpb25IZWlnaHQgfTsKICAgICAgICAgbG9naWNhbFJlY3QubW92
ZShpc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gb2Zmc2V0RnJvbVJvb3RCbG9jayA6IG9mZnNl
dEZyb21Sb290QmxvY2sudHJhbnNwb3NlZFNpemUoKSk7CiAgICAgICAgIExheW91dFJlY3QgcGh5
c2ljYWxSZWN0ID0gcm9vdEJsb2NrLmxvZ2ljYWxSZWN0VG9QaHlzaWNhbFJlY3Qocm9vdEJsb2Nr
UGh5c2ljYWxQb3NpdGlvbiwgbG9naWNhbFJlY3QpOwogICAgICAgICBpZiAoIXBhaW50SW5mbyB8
fCAoaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSAmJiBwaHlzaWNhbFJlY3QueSgpIDwgcGFpbnRJ
bmZvLT5yZWN0Lm1heFkoKSAmJiBwaHlzaWNhbFJlY3QubWF4WSgpID4gcGFpbnRJbmZvLT5yZWN0
LnkoKSkKICAgICAgICAgICAgIHx8ICghaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSAmJiBwaHlz
aWNhbFJlY3QueCgpIDwgcGFpbnRJbmZvLT5yZWN0Lm1heFgoKSAmJiBwaHlzaWNhbFJlY3QubWF4
WCgpID4gcGFpbnRJbmZvLT5yZWN0LngoKSkpCi0gICAgICAgICAgICByZXN1bHQudW5pdGUobGlu
ZVNlbGVjdGlvbkdhcChsaW5lLCBzZWxlY3Rpb25Ub3AsIHNlbGVjdGlvbkhlaWdodCkpOworICAg
ICAgICAgICAgcmVzdWx0LnVuaXRlKGxpbmVTZWxlY3Rpb25HYXAobGluZUJveCwgc2VsZWN0aW9u
VG9wLCBzZWxlY3Rpb25IZWlnaHQpKTsKIAotICAgICAgICBsYXN0U2VsZWN0ZWRMaW5lID0gbGlu
ZTsKKyAgICAgICAgbGFzdFNlbGVjdGVkTGluZUJveCA9IGxpbmVCb3g7CiAgICAgfQogCi0gICAg
aWYgKGNvbnRhaW5zU3RhcnQgJiYgIWxhc3RTZWxlY3RlZExpbmUpCisgICAgaWYgKGNvbnRhaW5z
U3RhcnQgJiYgIWxhc3RTZWxlY3RlZExpbmVCb3gpIHsKICAgICAgICAgLy8gVmlzaWJsZVNlbGVj
dGlvbiBtdXN0IHN0YXJ0IGp1c3QgYWZ0ZXIgb3VyIGxhc3QgbGluZS4KLSAgICAgICAgbGFzdFNl
bGVjdGVkTGluZSA9IElubGluZUl0ZXJhdG9yOjpsYXN0TGluZUZvcigqdGhpcyk7CisgICAgICAg
IGxhc3RTZWxlY3RlZExpbmVCb3ggPSBJbmxpbmVJdGVyYXRvcjo6bGFzdExpbmVCb3hGb3IoKnRo
aXMpOworICAgIH0KIAotICAgIGlmIChsYXN0U2VsZWN0ZWRMaW5lICYmIHNlbGVjdGlvblN0YXRl
KCkgIT0gSGlnaGxpZ2h0U3RhdGU6OkVuZCAmJiBzZWxlY3Rpb25TdGF0ZSgpICE9IEhpZ2hsaWdo
dFN0YXRlOjpCb3RoKSB7CisgICAgaWYgKGxhc3RTZWxlY3RlZExpbmVCb3ggJiYgc2VsZWN0aW9u
U3RhdGUoKSAhPSBIaWdobGlnaHRTdGF0ZTo6RW5kICYmIHNlbGVjdGlvblN0YXRlKCkgIT0gSGln
aGxpZ2h0U3RhdGU6OkJvdGgpIHsKICAgICAgICAgLy8gVXBkYXRlIG91ciBsYXN0WSB0byBiZSB0
aGUgYm90dG9tIG9mIHRoZSBsYXN0IHNlbGVjdGVkIGxpbmUuCi0gICAgICAgIGF1dG8gbGFzdExp
bmVTZWxlY3Rpb25Cb3R0b20gPSBMYXlvdXRVbml0IHsgTGluZVNlbGVjdGlvbjo6bG9naWNhbEJv
dHRvbSgqbGFzdFNlbGVjdGVkTGluZSkgfTsKKyAgICAgICAgYXV0byBsYXN0TGluZVNlbGVjdGlv
bkJvdHRvbSA9IExheW91dFVuaXQgeyBMaW5lU2VsZWN0aW9uOjpsb2dpY2FsQm90dG9tKCpsYXN0
U2VsZWN0ZWRMaW5lQm94KSB9OwogICAgICAgICBsYXN0TG9naWNhbFRvcCA9IGJsb2NrRGlyZWN0
aW9uT2Zmc2V0KHJvb3RCbG9jaywgb2Zmc2V0RnJvbVJvb3RCbG9jaykgKyBsYXN0TGluZVNlbGVj
dGlvbkJvdHRvbTsKICAgICAgICAgbGFzdExvZ2ljYWxMZWZ0ID0gbG9naWNhbExlZnRTZWxlY3Rp
b25PZmZzZXQocm9vdEJsb2NrLCBsYXN0TGluZVNlbGVjdGlvbkJvdHRvbSwgY2FjaGUpOwogICAg
ICAgICBsYXN0TG9naWNhbFJpZ2h0ID0gbG9naWNhbFJpZ2h0U2VsZWN0aW9uT2Zmc2V0KHJvb3RC
bG9jaywgbGFzdExpbmVTZWxlY3Rpb25Cb3R0b20sIGNhY2hlKTsKQEAgLTMyNzMsOCArMzI3NSw4
IEBAIHZvaWQgUmVuZGVyQmxvY2tGbG93OjpjbGVhclRydW5jYXRpb24oKQogCiBib29sIFJlbmRl
ckJsb2NrRmxvdzo6Y29udGFpbnNOb25aZXJvQmlkaUxldmVsKCkgY29uc3QKIHsKLSAgICBmb3Ig
KGF1dG8gbGluZSA9IElubGluZUl0ZXJhdG9yOjpmaXJzdExpbmVGb3IoKnRoaXMpOyBsaW5lOyBs
aW5lLnRyYXZlcnNlTmV4dCgpKSB7Ci0gICAgICAgIGZvciAoYXV0byBib3ggPSBsaW5lLT5maXJz
dExlYWZCb3goKTsgYm94OyBib3ggPSBib3gudHJhdmVyc2VOZXh0T25MaW5lKCkpIHsKKyAgICBm
b3IgKGF1dG8gbGluZUJveCA9IElubGluZUl0ZXJhdG9yOjpmaXJzdExpbmVCb3hGb3IoKnRoaXMp
OyBsaW5lQm94OyBsaW5lQm94LnRyYXZlcnNlTmV4dCgpKSB7CisgICAgICAgIGZvciAoYXV0byBi
b3ggPSBsaW5lQm94LT5maXJzdExlYWZCb3goKTsgYm94OyBib3ggPSBib3gudHJhdmVyc2VOZXh0
T25MaW5lKCkpIHsKICAgICAgICAgICAgIGlmIChib3gtPmJpZGlMZXZlbCgpKQogICAgICAgICAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CkBAIC0zMzUzLDcgKzMzNTUsNyBAQCBSZW5k
ZXJUZXh0KiBSZW5kZXJCbG9ja0Zsb3c6OmZpbmRDbG9zZXN0VGV4dEF0QWJzb2x1dGVQb2ludChj
b25zdCBGbG9hdFBvaW50JiBwbwogICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAg
ICAgICAgICAgICBpZiAobG9jYWxQb2ludC55KCkgPiAqcHJldmlvdXNSb290SW5saW5lQm94Qm90
dG9tICYmIGxvY2FsUG9pbnQueSgpIDwgYm94LT5sb2dpY2FsVG9wKCkpIHsKLSAgICAgICAgICAg
ICAgICBhdXRvIGNsb3Nlc3RCb3ggPSBjbG9zZXN0Qm94Rm9ySG9yaXpvbnRhbFBvc2l0aW9uKCpi
b3gtPmxpbmUoKSwgbG9jYWxQb2ludC54KCkpOworICAgICAgICAgICAgICAgIGF1dG8gY2xvc2Vz
dEJveCA9IGNsb3Nlc3RCb3hGb3JIb3Jpem9udGFsUG9zaXRpb24oKmJveC0+bGluZUJveCgpLCBs
b2NhbFBvaW50LngoKSk7CiAgICAgICAgICAgICAgICAgaWYgKGNsb3Nlc3RCb3ggJiYgaXM8UmVu
ZGVyVGV4dD4oY2xvc2VzdEJveC0+cmVuZGVyZXIoKSkpCiAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBjb25zdF9jYXN0PFJlbmRlclRleHQqPigmZG93bmNhc3Q8UmVuZGVyVGV4dD4oY2xvc2Vz
dEJveC0+cmVuZGVyZXIoKSkpOwogICAgICAgICAgICAgfQpAQCAtMzM2Nyw5ICszMzY5LDkgQEAg
VmlzaWJsZVBvc2l0aW9uIFJlbmRlckJsb2NrRmxvdzo6cG9zaXRpb25Gb3JQb2ludFdpdGhJbmxp
bmVDaGlsZHJlbihjb25zdCBMYXlvdXQKIHsKICAgICBBU1NFUlQoY2hpbGRyZW5JbmxpbmUoKSk7
CiAKLSAgICBhdXRvIGZpcnN0TGluZSA9IElubGluZUl0ZXJhdG9yOjpmaXJzdExpbmVGb3IoKnRo
aXMpOworICAgIGF1dG8gZmlyc3RMaW5lQm94ID0gSW5saW5lSXRlcmF0b3I6OmZpcnN0TGluZUJv
eEZvcigqdGhpcyk7CiAKLSAgICBpZiAoIWZpcnN0TGluZSkKKyAgICBpZiAoIWZpcnN0TGluZUJv
eCkKICAgICAgICAgcmV0dXJuIGNyZWF0ZVZpc2libGVQb3NpdGlvbigwLCBBZmZpbml0eTo6RG93
bnN0cmVhbSk7CiAKICAgICBib29sIGxpbmVzQXJlRmxpcHBlZCA9IHN0eWxlKCkuaXNGbGlwcGVk
TGluZXNXcml0aW5nTW9kZSgpOwpAQCAtMzM3NywzNiArMzM3OSwzNiBAQCBWaXNpYmxlUG9zaXRp
b24gUmVuZGVyQmxvY2tGbG93Ojpwb3NpdGlvbkZvclBvaW50V2l0aElubGluZUNoaWxkcmVuKGNv
bnN0IExheW91dAogCiAgICAgLy8gbG9vayBmb3IgdGhlIGNsb3Nlc3QgbGluZSBib3ggaW4gdGhl
IHJvb3QgYm94IHdoaWNoIGlzIGF0IHRoZSBwYXNzZWQtaW4geSBjb29yZGluYXRlCiAgICAgSW5s
aW5lSXRlcmF0b3I6OkxlYWZCb3hJdGVyYXRvciBjbG9zZXN0Qm94OwotICAgIElubGluZUl0ZXJh
dG9yOjpMaW5lSXRlcmF0b3IgZmlyc3RMaW5lV2l0aENoaWxkcmVuOwotICAgIElubGluZUl0ZXJh
dG9yOjpMaW5lSXRlcmF0b3IgbGFzdExpbmVXaXRoQ2hpbGRyZW47Ci0gICAgZm9yIChhdXRvIGxp
bmUgPSBmaXJzdExpbmU7IGxpbmU7IGxpbmUudHJhdmVyc2VOZXh0KCkpIHsKLSAgICAgICAgaWYg
KGZyYWdtZW50ICYmIGxpbmUtPmNvbnRhaW5pbmdGcmFnbWVudCgpICE9IGZyYWdtZW50KQorICAg
IElubGluZUl0ZXJhdG9yOjpMaW5lQm94SXRlcmF0b3IgZmlyc3RMaW5lQm94V2l0aENoaWxkcmVu
OworICAgIElubGluZUl0ZXJhdG9yOjpMaW5lQm94SXRlcmF0b3IgbGFzdExpbmVCb3hXaXRoQ2hp
bGRyZW47CisgICAgZm9yIChhdXRvIGxpbmVCb3ggPSBmaXJzdExpbmVCb3g7IGxpbmVCb3g7IGxp
bmVCb3gudHJhdmVyc2VOZXh0KCkpIHsKKyAgICAgICAgaWYgKGZyYWdtZW50ICYmIGxpbmVCb3gt
PmNvbnRhaW5pbmdGcmFnbWVudCgpICE9IGZyYWdtZW50KQogICAgICAgICAgICAgY29udGludWU7
CiAKLSAgICAgICAgaWYgKCFsaW5lLT5maXJzdExlYWZCb3goKSkKKyAgICAgICAgaWYgKCFsaW5l
Qm94LT5maXJzdExlYWZCb3goKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBpZiAo
IWZpcnN0TGluZVdpdGhDaGlsZHJlbikKLSAgICAgICAgICAgIGZpcnN0TGluZVdpdGhDaGlsZHJl
biA9IGxpbmU7CisgICAgICAgIGlmICghZmlyc3RMaW5lQm94V2l0aENoaWxkcmVuKQorICAgICAg
ICAgICAgZmlyc3RMaW5lQm94V2l0aENoaWxkcmVuID0gbGluZUJveDsKIAotICAgICAgICBpZiAo
IWxpbmVzQXJlRmxpcHBlZCAmJiBsaW5lLT5pc0ZpcnN0QWZ0ZXJQYWdlQnJlYWsoKQotICAgICAg
ICAgICAgJiYgKHBvaW50SW5Mb2dpY2FsQ29udGVudHMueSgpIDwgbGluZS0+bGluZUJveFRvcCgp
IHx8IChibG9ja3NBcmVGbGlwcGVkICYmIHBvaW50SW5Mb2dpY2FsQ29udGVudHMueSgpID09IGxp
bmUtPmxpbmVCb3hUb3AoKSkpKQorICAgICAgICBpZiAoIWxpbmVzQXJlRmxpcHBlZCAmJiBsaW5l
Qm94LT5pc0ZpcnN0QWZ0ZXJQYWdlQnJlYWsoKQorICAgICAgICAgICAgJiYgKHBvaW50SW5Mb2dp
Y2FsQ29udGVudHMueSgpIDwgbGluZUJveC0+dG9wKCkgfHwgKGJsb2Nrc0FyZUZsaXBwZWQgJiYg
cG9pbnRJbkxvZ2ljYWxDb250ZW50cy55KCkgPT0gbGluZUJveC0+dG9wKCkpKSkKICAgICAgICAg
ICAgIGJyZWFrOwogCi0gICAgICAgIGxhc3RMaW5lV2l0aENoaWxkcmVuID0gbGluZTsKKyAgICAg
ICAgbGFzdExpbmVCb3hXaXRoQ2hpbGRyZW4gPSBsaW5lQm94OwogCiAgICAgICAgIC8vIGNoZWNr
IGlmIHRoaXMgcm9vdCBsaW5lIGJveCBpcyBsb2NhdGVkIGF0IHRoaXMgeSBjb29yZGluYXRlCi0g
ICAgICAgIGF1dG8gc2VsZWN0aW9uQm90dG9tID0gTGluZVNlbGVjdGlvbjo6bG9naWNhbEJvdHRv
bSgqbGluZSk7CisgICAgICAgIGF1dG8gc2VsZWN0aW9uQm90dG9tID0gTGluZVNlbGVjdGlvbjo6
bG9naWNhbEJvdHRvbSgqbGluZUJveCk7CiAgICAgICAgIGlmIChwb2ludEluTG9naWNhbENvbnRl
bnRzLnkoKSA8IHNlbGVjdGlvbkJvdHRvbSB8fCAoYmxvY2tzQXJlRmxpcHBlZCAmJiBwb2ludElu
TG9naWNhbENvbnRlbnRzLnkoKSA9PSBzZWxlY3Rpb25Cb3R0b20pKSB7CiAgICAgICAgICAgICBp
ZiAobGluZXNBcmVGbGlwcGVkKSB7Ci0gICAgICAgICAgICAgICAgYXV0byBuZXh0TGluZVdpdGhD
aGlsZHJlbiA9IGxpbmUtPm5leHQoKTsKLSAgICAgICAgICAgICAgICB3aGlsZSAobmV4dExpbmVX
aXRoQ2hpbGRyZW4gJiYgIW5leHRMaW5lV2l0aENoaWxkcmVuLT5maXJzdExlYWZCb3goKSkKLSAg
ICAgICAgICAgICAgICAgICAgbmV4dExpbmVXaXRoQ2hpbGRyZW4udHJhdmVyc2VOZXh0KCk7Cisg
ICAgICAgICAgICAgICAgYXV0byBuZXh0TGluZUJveFdpdGhDaGlsZHJlbiA9IGxpbmVCb3gtPm5l
eHQoKTsKKyAgICAgICAgICAgICAgICB3aGlsZSAobmV4dExpbmVCb3hXaXRoQ2hpbGRyZW4gJiYg
IW5leHRMaW5lQm94V2l0aENoaWxkcmVuLT5maXJzdExlYWZCb3goKSkKKyAgICAgICAgICAgICAg
ICAgICAgbmV4dExpbmVCb3hXaXRoQ2hpbGRyZW4udHJhdmVyc2VOZXh0KCk7CiAKLSAgICAgICAg
ICAgICAgICBpZiAobmV4dExpbmVXaXRoQ2hpbGRyZW4gJiYgbmV4dExpbmVXaXRoQ2hpbGRyZW4t
PmlzRmlyc3RBZnRlclBhZ2VCcmVhaygpCi0gICAgICAgICAgICAgICAgICAgICYmIChwb2ludElu
TG9naWNhbENvbnRlbnRzLnkoKSA+IG5leHRMaW5lV2l0aENoaWxkcmVuLT5saW5lQm94VG9wKCkg
fHwgKCFibG9ja3NBcmVGbGlwcGVkICYmIHBvaW50SW5Mb2dpY2FsQ29udGVudHMueSgpID09IG5l
eHRMaW5lV2l0aENoaWxkcmVuLT5saW5lQm94VG9wKCkpKSkKKyAgICAgICAgICAgICAgICBpZiAo
bmV4dExpbmVCb3hXaXRoQ2hpbGRyZW4gJiYgbmV4dExpbmVCb3hXaXRoQ2hpbGRyZW4tPmlzRmly
c3RBZnRlclBhZ2VCcmVhaygpCisgICAgICAgICAgICAgICAgICAgICYmIChwb2ludEluTG9naWNh
bENvbnRlbnRzLnkoKSA+IG5leHRMaW5lQm94V2l0aENoaWxkcmVuLT50b3AoKSB8fCAoIWJsb2Nr
c0FyZUZsaXBwZWQgJiYgcG9pbnRJbkxvZ2ljYWxDb250ZW50cy55KCkgPT0gbmV4dExpbmVCb3hX
aXRoQ2hpbGRyZW4tPnRvcCgpKSkpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAg
ICAgICAgICAgfQotICAgICAgICAgICAgY2xvc2VzdEJveCA9IGNsb3Nlc3RCb3hGb3JIb3Jpem9u
dGFsUG9zaXRpb24oKmxpbmUsIHBvaW50SW5Mb2dpY2FsQ29udGVudHMueCgpKTsKKyAgICAgICAg
ICAgIGNsb3Nlc3RCb3ggPSBjbG9zZXN0Qm94Rm9ySG9yaXpvbnRhbFBvc2l0aW9uKCpsaW5lQm94
LCBwb2ludEluTG9naWNhbENvbnRlbnRzLngoKSk7CiAgICAgICAgICAgICBpZiAoY2xvc2VzdEJv
eCkKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtMzQxNCwxNyArMzQxNiwx
NyBAQCBWaXNpYmxlUG9zaXRpb24gUmVuZGVyQmxvY2tGbG93Ojpwb3NpdGlvbkZvclBvaW50V2l0
aElubGluZUNoaWxkcmVuKGNvbnN0IExheW91dAogCiAgICAgYm9vbCBtb3ZlQ2FyZXRUb0JvdW5k
YXJ5ID0gZnJhbWUoKS5lZGl0b3IoKS5iZWhhdmlvcigpLnNob3VsZE1vdmVDYXJldFRvSG9yaXpv
bnRhbEJvdW5kYXJ5V2hlblBhc3RUb3BPckJvdHRvbSgpOwogCi0gICAgaWYgKCFtb3ZlQ2FyZXRU
b0JvdW5kYXJ5ICYmICFjbG9zZXN0Qm94ICYmIGxhc3RMaW5lV2l0aENoaWxkcmVuKSB7CisgICAg
aWYgKCFtb3ZlQ2FyZXRUb0JvdW5kYXJ5ICYmICFjbG9zZXN0Qm94ICYmIGxhc3RMaW5lQm94V2l0
aENoaWxkcmVuKSB7CiAgICAgICAgIC8vIHkgY29vcmRpbmF0ZSBpcyBiZWxvdyBsYXN0IHJvb3Qg
bGluZSBib3gsIHByZXRlbmQgd2UgaGl0IGl0Ci0gICAgICAgIGNsb3Nlc3RCb3ggPSBjbG9zZXN0
Qm94Rm9ySG9yaXpvbnRhbFBvc2l0aW9uKCpsYXN0TGluZVdpdGhDaGlsZHJlbiwgcG9pbnRJbkxv
Z2ljYWxDb250ZW50cy54KCkpOworICAgICAgICBjbG9zZXN0Qm94ID0gY2xvc2VzdEJveEZvckhv
cml6b250YWxQb3NpdGlvbigqbGFzdExpbmVCb3hXaXRoQ2hpbGRyZW4sIHBvaW50SW5Mb2dpY2Fs
Q29udGVudHMueCgpKTsKICAgICB9CiAKICAgICBpZiAoY2xvc2VzdEJveCkgewogICAgICAgICBp
ZiAobW92ZUNhcmV0VG9Cb3VuZGFyeSkgewotICAgICAgICAgICAgYXV0byBmaXJzdExpbmVXaXRo
Q2hpbGRyZW5Ub3AgPSBMYXlvdXRVbml0IHsgc3RkOjptaW4ocHJldmlvdXNMaW5lQ29udGVudEJv
dHRvbU9yQm9yZGVyQW5kUGFkZGluZygqZmlyc3RMaW5lV2l0aENoaWxkcmVuKSwgZmlyc3RMaW5l
V2l0aENoaWxkcmVuLT5jb250ZW50TG9naWNhbFRvcCgpKSB9OworICAgICAgICAgICAgYXV0byBm
aXJzdExpbmVXaXRoQ2hpbGRyZW5Ub3AgPSBMYXlvdXRVbml0IHsgc3RkOjptaW4ocHJldmlvdXNM
aW5lQm94Q29udGVudEJvdHRvbU9yQm9yZGVyQW5kUGFkZGluZygqZmlyc3RMaW5lQm94V2l0aENo
aWxkcmVuKSwgZmlyc3RMaW5lQm94V2l0aENoaWxkcmVuLT5jb250ZW50TG9naWNhbFRvcCgpKSB9
OwogICAgICAgICAgICAgaWYgKHBvaW50SW5Mb2dpY2FsQ29udGVudHMueSgpIDwgZmlyc3RMaW5l
V2l0aENoaWxkcmVuVG9wCiAgICAgICAgICAgICAgICAgfHwgKGJsb2Nrc0FyZUZsaXBwZWQgJiYg
cG9pbnRJbkxvZ2ljYWxDb250ZW50cy55KCkgPT0gZmlyc3RMaW5lV2l0aENoaWxkcmVuVG9wKSkg
ewotICAgICAgICAgICAgICAgIGF1dG8gYm94ID0gZmlyc3RMaW5lV2l0aENoaWxkcmVuLT5maXJz
dExlYWZCb3goKTsKKyAgICAgICAgICAgICAgICBhdXRvIGJveCA9IGZpcnN0TGluZUJveFdpdGhD
aGlsZHJlbi0+Zmlyc3RMZWFmQm94KCk7CiAgICAgICAgICAgICAgICAgaWYgKGJveC0+aXNMaW5l
QnJlYWsoKSkgewogICAgICAgICAgICAgICAgICAgICBpZiAoYXV0byBuZXh0ID0gYm94LT5uZXh0
T25MaW5lSWdub3JpbmdMaW5lQnJlYWsoKSkKICAgICAgICAgICAgICAgICAgICAgICAgIGJveCA9
IG5leHQ7CkBAIC0zNDM1LDcgKzM0MzcsNyBAQCBWaXNpYmxlUG9zaXRpb24gUmVuZGVyQmxvY2tG
bG93Ojpwb3NpdGlvbkZvclBvaW50V2l0aElubGluZUNoaWxkcmVuKGNvbnN0IExheW91dAogICAg
ICAgICB9CiAKICAgICAgICAgLy8gcGFzcyB0aGUgYm94IGEgdG9wIHBvc2l0aW9uIHRoYXQgaXMg
aW5zaWRlIGl0Ci0gICAgICAgIGF1dG8gcG9pbnQgPSBMYXlvdXRQb2ludCB7IHBvaW50SW5Mb2dp
Y2FsQ29udGVudHMueCgpLCBjb250ZW50U3RhcnRJbkJsb2NrRGlyZWN0aW9uKCpjbG9zZXN0Qm94
LT5saW5lKCkpIH07CisgICAgICAgIGF1dG8gcG9pbnQgPSBMYXlvdXRQb2ludCB7IHBvaW50SW5M
b2dpY2FsQ29udGVudHMueCgpLCBjb250ZW50U3RhcnRJbkJsb2NrRGlyZWN0aW9uKCpjbG9zZXN0
Qm94LT5saW5lQm94KCkpIH07CiAgICAgICAgIGlmICghaXNIb3Jpem9udGFsV3JpdGluZ01vZGUo
KSkKICAgICAgICAgICAgIHBvaW50ID0gcG9pbnQudHJhbnNwb3NlZFBvaW50KCk7CiAgICAgICAg
IGlmIChjbG9zZXN0Qm94LT5yZW5kZXJlcigpLmlzUmVwbGFjZWRPcklubGluZUJsb2NrKCkpCkBA
IC0zNDQzLDExICszNDQ1LDExIEBAIFZpc2libGVQb3NpdGlvbiBSZW5kZXJCbG9ja0Zsb3c6OnBv
c2l0aW9uRm9yUG9pbnRXaXRoSW5saW5lQ2hpbGRyZW4oY29uc3QgTGF5b3V0CiAgICAgICAgIHJl
dHVybiBjb25zdF9jYXN0PFJlbmRlck9iamVjdCY+KGNsb3Nlc3RCb3gtPnJlbmRlcmVyKCkpLnBv
c2l0aW9uRm9yUG9pbnQocG9pbnQsIG51bGxwdHIpOwogICAgIH0KIAotICAgIGlmIChsYXN0TGlu
ZVdpdGhDaGlsZHJlbikgeworICAgIGlmIChsYXN0TGluZUJveFdpdGhDaGlsZHJlbikgewogICAg
ICAgICAvLyBXZSBoaXQgdGhpcyBjYXNlIGZvciBNYWMgYmVoYXZpb3Igd2hlbiB0aGUgWSBjb29y
ZGluYXRlIGlzIGJlbG93IHRoZSBsYXN0IGJveC4KICAgICAgICAgQVNTRVJUKG1vdmVDYXJldFRv
Qm91bmRhcnkpOwogICAgICAgICBJbmxpbmVJdGVyYXRvcjo6TGluZUxvZ2ljYWxPcmRlckNhY2hl
IG9yZGVyQ2FjaGU7Ci0gICAgICAgIGlmIChhdXRvIGxvZ2ljYWxseUxhc3RCb3ggPSBJbmxpbmVJ
dGVyYXRvcjo6bGFzdExlYWZPbkxpbmVJbkxvZ2ljYWxPcmRlcldpdGhOb2RlKGxhc3RMaW5lV2l0
aENoaWxkcmVuLCBvcmRlckNhY2hlKSkKKyAgICAgICAgaWYgKGF1dG8gbG9naWNhbGx5TGFzdEJv
eCA9IElubGluZUl0ZXJhdG9yOjpsYXN0TGVhZk9uTGluZUluTG9naWNhbE9yZGVyV2l0aE5vZGUo
bGFzdExpbmVCb3hXaXRoQ2hpbGRyZW4sIG9yZGVyQ2FjaGUpKQogICAgICAgICAgICAgcmV0dXJu
IHBvc2l0aW9uRm9yUnVuKCp0aGlzLCBsb2dpY2FsbHlMYXN0Qm94LCBmYWxzZSk7CiAgICAgfQog
CkBAIC0zNDcxLDExICszNDczLDExIEBAIHZvaWQgUmVuZGVyQmxvY2tGbG93OjphZGRGb2N1c1Jp
bmdSZWN0c0ZvcklubGluZUNoaWxkcmVuKFZlY3RvcjxMYXlvdXRSZWN0PiYgcmVjCiB7CiAgICAg
QVNTRVJUKGNoaWxkcmVuSW5saW5lKCkpOwogICAgIGZvciAoYXV0byBib3ggPSBJbmxpbmVJdGVy
YXRvcjo6Zmlyc3RSb290SW5saW5lQm94Rm9yKCp0aGlzKTsgYm94OyBib3gudHJhdmVyc2VOZXh0
SW5saW5lQm94KCkpIHsKLSAgICAgICAgYXV0byBsaW5lID0gYm94LT5saW5lKCk7CisgICAgICAg
IGF1dG8gbGluZUJveCA9IGJveC0+bGluZUJveCgpOwogICAgICAgICAvLyBGSVhNRTogVGhpcyBp
cyBtaXhpbmcgcGh5c2ljYWwgYW5kIGxvZ2ljYWwgY29vcmRpbmF0ZXMuCiAgICAgICAgIGF1dG8g
dW5mbGlwcGVkVmlzdWFsUmVjdCA9IGJveC0+dmlzdWFsUmVjdElnbm9yaW5nQmxvY2tEaXJlY3Rp
b24oKTsKLSAgICAgICAgYXV0byB0b3AgPSBzdGQ6Om1heChsaW5lLT5jb250ZW50TG9naWNhbFRv
cCgpLCB1bmZsaXBwZWRWaXN1YWxSZWN0LnkoKSk7Ci0gICAgICAgIGF1dG8gYm90dG9tID0gc3Rk
OjptaW4obGluZS0+Y29udGVudExvZ2ljYWxCb3R0b20oKSwgdW5mbGlwcGVkVmlzdWFsUmVjdC5t
YXhZKCkpOworICAgICAgICBhdXRvIHRvcCA9IHN0ZDo6bWF4KGxpbmVCb3gtPmNvbnRlbnRMb2dp
Y2FsVG9wKCksIHVuZmxpcHBlZFZpc3VhbFJlY3QueSgpKTsKKyAgICAgICAgYXV0byBib3R0b20g
PSBzdGQ6Om1pbihsaW5lQm94LT5jb250ZW50TG9naWNhbEJvdHRvbSgpLCB1bmZsaXBwZWRWaXN1
YWxSZWN0Lm1heFkoKSk7CiAgICAgICAgIGF1dG8gcmVjdCA9IExheW91dFJlY3QgeyBMYXlvdXRV
bml0IHsgYWRkaXRpb25hbE9mZnNldC54KCkgKyB1bmZsaXBwZWRWaXN1YWxSZWN0LngoKSB9CiAg
ICAgICAgICAgICAsIGFkZGl0aW9uYWxPZmZzZXQueSgpICsgdG9wCiAgICAgICAgICAgICAsIExh
eW91dFVuaXQgeyB1bmZsaXBwZWRWaXN1YWxSZWN0LndpZHRoKCkgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQm94LmNwcAppbmRleCA4NjNiODM1MjY1NzUyMjRmN2M3ZDNmOTFkZWQ1Zjc1
N2IyZWJjZTYxLi5jNDg0ZDE0NWJlNzUzYTBmYzQ0OWNlNzVjMGU1MmE2ZWQzYjE2NjAzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcApAQCAtNDcsNyArNDcsNyBAQAogI2lu
Y2x1ZGUgIkhUTUxUZXh0QXJlYUVsZW1lbnQuaCIKICNpbmNsdWRlICJIaXRUZXN0UmVzdWx0Lmgi
CiAjaW5jbHVkZSAiSW5saW5lSXRlcmF0b3JJbmxpbmVCb3guaCIKLSNpbmNsdWRlICJJbmxpbmVJ
dGVyYXRvckxpbmUuaCIKKyNpbmNsdWRlICJJbmxpbmVJdGVyYXRvckxpbmVCb3guaCIKICNpbmNs
dWRlICJJbmxpbmVSdW5BbmRPZmZzZXQuaCIKICNpbmNsdWRlICJMYXlvdXRJbnRlZ3JhdGlvbkxp
bmVMYXlvdXQuaCIKICNpbmNsdWRlICJMZWdhY3lJbmxpbmVFbGVtZW50Qm94LmgiCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAKaW5kZXggMDUzZjg2M2M5YWNiNmRk
NWIzM2ExNzE1ZTQzNGZmOTBlN2UyNjJmNi4uYmYwOTQ2OTJkMWYxMDIzNWM5ODgxZTMwZjAyNmM1
Mzk3ZTNjYjE3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNw
cApAQCAtNDAsNyArNDAsNyBAQAogI2luY2x1ZGUgIkhUTUxIdG1sRWxlbWVudC5oIgogI2luY2x1
ZGUgIkhUTUxJbWFnZUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKLSNpbmNsdWRl
ICJJbmxpbmVJdGVyYXRvckxpbmUuaCIKKyNpbmNsdWRlICJJbmxpbmVJdGVyYXRvckxpbmVCb3gu
aCIKICNpbmNsdWRlICJJbmxpbmVJdGVyYXRvclRleHRCb3guaCIKICNpbmNsdWRlICJMZW5ndGhG
dW5jdGlvbnMuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCkBAIC0xNTkxLDcgKzE1OTEsNyBAQCBi
b29sIFJlbmRlckVsZW1lbnQ6OmdldExlYWRpbmdDb3JuZXIoRmxvYXRQb2ludCYgcG9pbnQsIGJv
b2wmIGluc2lkZUZpeGVkKSBjb25zdAogICAgICAgICAgICAgaWYgKGlzPFJlbmRlclRleHQ+KCpv
KSkgewogICAgICAgICAgICAgICAgIGF1dG8mIHRleHRSZW5kZXJlciA9IGRvd25jYXN0PFJlbmRl
clRleHQ+KCpvKTsKICAgICAgICAgICAgICAgICBpZiAoYXV0byBydW4gPSBJbmxpbmVJdGVyYXRv
cjo6Zmlyc3RUZXh0Qm94Rm9yKHRleHRSZW5kZXJlcikpCi0gICAgICAgICAgICAgICAgICAgIHBv
aW50Lm1vdmUodGV4dFJlbmRlcmVyLmxpbmVzQm91bmRpbmdCb3goKS54KCksIHJ1bi0+bGluZSgp
LT5jb250ZW50TG9naWNhbFRvcCgpKTsKKyAgICAgICAgICAgICAgICAgICAgcG9pbnQubW92ZSh0
ZXh0UmVuZGVyZXIubGluZXNCb3VuZGluZ0JveCgpLngoKSwgcnVuLT5saW5lQm94KCktPmNvbnRl
bnRMb2dpY2FsVG9wKCkpOwogICAgICAgICAgICAgfSBlbHNlIGlmIChpczxSZW5kZXJCb3g+KCpv
KSkKICAgICAgICAgICAgICAgICBwb2ludC5tb3ZlQnkoZG93bmNhc3Q8UmVuZGVyQm94Pigqbyku
bG9jYXRpb24oKSk7CiAgICAgICAgICAgICBwb2ludCA9IG8tPmNvbnRhaW5lcigpLT5sb2NhbFRv
QWJzb2x1dGUocG9pbnQsIFVzZVRyYW5zZm9ybXMsICZpbnNpZGVGaXhlZCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcAppbmRleCAyYTZkMDZkN2M3ZWI0MmI0NGNjMjdi
OGIwMzRkNjdmNWM4ZjBjYmFlLi40YTY3MTdmM2ZmZWJlNjYxM2Q2MTk2MDAzODBhYTc2NzNhMDE3
ZTFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKQEAgLTQ3LDcg
KzQ3LDcgQEAKICNpbmNsdWRlICJIaXRUZXN0UmVzdWx0LmgiCiAjaW5jbHVkZSAiSW1hZ2VPdmVy
bGF5LmgiCiAjaW5jbHVkZSAiSW5saW5lSXRlcmF0b3JJbmxpbmVCb3guaCIKLSNpbmNsdWRlICJJ
bmxpbmVJdGVyYXRvckxpbmUuaCIKKyNpbmNsdWRlICJJbmxpbmVJdGVyYXRvckxpbmVCb3guaCIK
ICNpbmNsdWRlICJMaW5lU2VsZWN0aW9uLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUg
IlBhaW50SW5mby5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
cklubGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcApp
bmRleCBhYjg0ZjE1NjkzYjVhNDBhMDA1ZWJhZjFlMWRkZGFkNzQ3ZTU3NjFhLi4wYjQ1ZWFlYzEz
NGM1YzdkMDFhMDJjMzNlZjgzYzk3ODRiOGY2YmVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVySW5saW5lLmNwcApAQCAtMjksNyArMjksNyBAQAogI2luY2x1ZGUgIkdyYXBoaWNz
Q29udGV4dC5oIgogI2luY2x1ZGUgIkhpdFRlc3RSZXN1bHQuaCIKICNpbmNsdWRlICJJbmxpbmVJ
dGVyYXRvcklubGluZUJveC5oIgotI2luY2x1ZGUgIklubGluZUl0ZXJhdG9yTGluZS5oIgorI2lu
Y2x1ZGUgIklubGluZUl0ZXJhdG9yTGluZUJveC5oIgogI2luY2x1ZGUgIkxheW91dEludGVncmF0
aW9uTGluZUxheW91dC5oIgogI2luY2x1ZGUgIkxlZ2FjeUlubGluZUVsZW1lbnRCb3guaCIKICNp
bmNsdWRlICJMZWdhY3lJbmxpbmVUZXh0Qm94LmgiCkBAIC05NzMsOSArOTczLDkgQEAgdm9pZCBS
ZW5kZXJJbmxpbmU6OnBhaW50T3V0bGluZShQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5
b3V0UG9pbnQmIHBhaW50T2YKICAgICByZWN0cy5hcHBlbmQoTGF5b3V0UmVjdCgpKTsKIAogICAg
IGZvciAoYXV0byBib3ggPSBJbmxpbmVJdGVyYXRvcjo6Zmlyc3RJbmxpbmVCb3hGb3IoKnRoaXMp
OyBib3g7IGJveC50cmF2ZXJzZU5leHRJbmxpbmVCb3goKSkgewotICAgICAgICBhdXRvIGxpbmUg
PSBib3gtPmxpbmUoKTsKLSAgICAgICAgYXV0byB0b3AgPSBMYXlvdXRVbml0IHsgc3RkOjptYXgo
bGluZS0+Y29udGVudExvZ2ljYWxUb3AoKSwgYm94LT5sb2dpY2FsVG9wKCkpIH07Ci0gICAgICAg
IGF1dG8gYm90dG9tID0gTGF5b3V0VW5pdCB7IHN0ZDo6bWluKGxpbmUtPmNvbnRlbnRMb2dpY2Fs
Qm90dG9tKCksIGJveC0+bG9naWNhbEJvdHRvbSgpKSB9OworICAgICAgICBhdXRvIGxpbmVCb3gg
PSBib3gtPmxpbmVCb3goKTsKKyAgICAgICAgYXV0byB0b3AgPSBMYXlvdXRVbml0IHsgc3RkOjpt
YXgobGluZUJveC0+Y29udGVudExvZ2ljYWxUb3AoKSwgYm94LT5sb2dpY2FsVG9wKCkpIH07Cisg
ICAgICAgIGF1dG8gYm90dG9tID0gTGF5b3V0VW5pdCB7IHN0ZDo6bWluKGxpbmVCb3gtPmNvbnRl
bnRMb2dpY2FsQm90dG9tKCksIGJveC0+bG9naWNhbEJvdHRvbSgpKSB9OwogICAgICAgICAvLyBG
SVhNRTogVGhpcyBpcyBtaXhpbmcgcGh5c2ljYWwgYW5kIGxvZ2ljYWwgY29vcmRpbmF0ZXMuCiAg
ICAgICAgIHJlY3RzLmFwcGVuZCh7IExheW91dFVuaXQoYm94LT52aXN1YWxSZWN0SWdub3JpbmdC
bG9ja0RpcmVjdGlvbigpLngoKSksIHRvcCwgTGF5b3V0VW5pdChib3gtPmxvZ2ljYWxXaWR0aCgp
KSwgYm90dG9tIC0gdG9wIH0pOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMaW5lQnJlYWsuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxpbmVCcmVhay5jcHAKaW5kZXggZDcyZjI0NTdlZWE0ZDA2YjI4YmNhMzBjOWJjM2Q0NDI4
NDM4YmNiZi4uZGEzMjg4MDYyMDA0N2E4MDQ5ZGUzNmNkODI5Yzk5MDM2ZGQzYTFhZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpbmVCcmVhay5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpbmVCcmVhay5jcHAKQEAgLTI3LDcgKzI3
LDcgQEAKICNpbmNsdWRlICJIVE1MRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxXQlJFbGVtZW50
LmgiCiAjaW5jbHVkZSAiSW5saW5lSXRlcmF0b3JCb3guaCIKLSNpbmNsdWRlICJJbmxpbmVJdGVy
YXRvckxpbmUuaCIKKyNpbmNsdWRlICJJbmxpbmVJdGVyYXRvckxpbmVCb3guaCIKICNpbmNsdWRl
ICJJbmxpbmVSdW5BbmRPZmZzZXQuaCIKICNpbmNsdWRlICJMZWdhY3lJbmxpbmVFbGVtZW50Qm94
LmgiCiAjaW5jbHVkZSAiTGVnYWN5Um9vdElubGluZUJveC5oIgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHAKaW5kZXggZjliYmRiZTk5MDhjYTkyYzA4Yzc1Y2Qz
YWY1OGUzMDJiYmI5NjQxNy4uODhjMGVlMTczNGU4N2UwNTBmNWY0NjAyZjg1MDBkNjY5NDEzNzAz
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwCkBAIC0z
NSw3ICszNSw3IEBACiAjaW5jbHVkZSAiSGlnaGxpZ2h0RGF0YS5oIgogI2luY2x1ZGUgIkhpZ2hs
aWdodFJlZ2lzdGVyLmgiCiAjaW5jbHVkZSAiSW5saW5lSXRlcmF0b3JCb3guaCIKLSNpbmNsdWRl
ICJJbmxpbmVJdGVyYXRvckxpbmUuaCIKKyNpbmNsdWRlICJJbmxpbmVJdGVyYXRvckxpbmVCb3gu
aCIKICNpbmNsdWRlICJMYXlvdXRSZXBhaW50ZXIuaCIKICNpbmNsdWRlICJMaW5lU2VsZWN0aW9u
LmgiCiAjaW5jbHVkZSAiUmVuZGVyQmxvY2suaCIKQEAgLTcyMSw5ICs3MjEsOSBAQCBWaXNpYmxl
UG9zaXRpb24gUmVuZGVyUmVwbGFjZWQ6OnBvc2l0aW9uRm9yUG9pbnQoY29uc3QgTGF5b3V0UG9p
bnQmIHBvaW50LCBjb25zdAogewogICAgIGF1dG8gW3RvcCwgYm90dG9tXSA9IFsmXSgpIC0+IHN0
ZDo6cGFpcjxmbG9hdCwgZmxvYXQ+IHsKICAgICAgICAgaWYgKGF1dG8gcnVuID0gSW5saW5lSXRl
cmF0b3I6OmJveEZvcigqdGhpcykpIHsKLSAgICAgICAgICAgIGF1dG8gbGluZSA9IHJ1bi0+bGlu
ZSgpOwotICAgICAgICAgICAgYXV0byBsaW5lQ29udGVudFRvcCA9IExheW91dFVuaXQgeyBzdGQ6
Om1pbihwcmV2aW91c0xpbmVDb250ZW50Qm90dG9tT3JCb3JkZXJBbmRQYWRkaW5nKCpsaW5lKSwg
bGluZS0+Y29udGVudExvZ2ljYWxUb3AoKSkgfTsKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1h
a2VfcGFpcihsaW5lQ29udGVudFRvcCwgTGluZVNlbGVjdGlvbjo6bG9naWNhbEJvdHRvbSgqbGlu
ZSkpOworICAgICAgICAgICAgYXV0byBsaW5lQm94ID0gcnVuLT5saW5lQm94KCk7CisgICAgICAg
ICAgICBhdXRvIGxpbmVDb250ZW50VG9wID0gTGF5b3V0VW5pdCB7IHN0ZDo6bWluKHByZXZpb3Vz
TGluZUJveENvbnRlbnRCb3R0b21PckJvcmRlckFuZFBhZGRpbmcoKmxpbmVCb3gpLCBsaW5lQm94
LT5jb250ZW50TG9naWNhbFRvcCgpKSB9OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV9w
YWlyKGxpbmVDb250ZW50VG9wLCBMaW5lU2VsZWN0aW9uOjpsb2dpY2FsQm90dG9tKCpsaW5lQm94
KSk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKGxvZ2ljYWxUb3Ao
KSwgbG9naWNhbEJvdHRvbSgpKTsKICAgICB9KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGV4dC5jcHAKaW5kZXggOGRiYWRjMGUzZmQ4ZWU4NzRjZTA5ZTVjOWNjMTI4NDI2OTIxYTc2
OC4uZmZjOTZmNmNhNzUzMTE3YTk3ZDY5YjM5M2ZjMmJhMDc3ZThlZjllNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcApAQCAtMzYsNyArMzYsNyBAQAogI2luY2x1ZGUg
IkZyYW1lVmlldy5oIgogI2luY2x1ZGUgIkhUTUxQYXJzZXJJZGlvbXMuaCIKICNpbmNsdWRlICJI
eXBoZW5hdGlvbi5oIgotI2luY2x1ZGUgIklubGluZUl0ZXJhdG9yTGluZS5oIgorI2luY2x1ZGUg
IklubGluZUl0ZXJhdG9yTGluZUJveC5oIgogI2luY2x1ZGUgIklubGluZUl0ZXJhdG9yTG9naWNh
bE9yZGVyVHJhdmVyc2FsLmgiCiAjaW5jbHVkZSAiSW5saW5lSXRlcmF0b3JUZXh0Qm94LmgiCiAj
aW5jbHVkZSAiSW5saW5lUnVuQW5kT2Zmc2V0LmgiCkBAIC02NzMsMTIgKzY3MywxMiBAQCBWaXNp
YmxlUG9zaXRpb24gUmVuZGVyVGV4dDo6cG9zaXRpb25Gb3JQb2ludChjb25zdCBMYXlvdXRQb2lu
dCYgcG9pbnQsIGNvbnN0IFJlbgogICAgICAgICBpZiAocnVuLT5pc0xpbmVCcmVhaygpICYmICFy
dW4tPnByZXZpb3VzT25MaW5lKCkgJiYgcnVuLT5uZXh0T25MaW5lKCkgJiYgIXJ1bi0+bmV4dE9u
TGluZSgpLT5pc0xpbmVCcmVhaygpKQogICAgICAgICAgICAgcnVuLnRyYXZlcnNlTmV4dFRleHRC
b3goKTsKIAotICAgICAgICBhdXRvIGxpbmUgPSBydW4tPmxpbmUoKTsKLSAgICAgICAgYXV0byB0
b3AgPSBMYXlvdXRVbml0IHsgc3RkOjptaW4ocHJldmlvdXNMaW5lQ29udGVudEJvdHRvbU9yQm9y
ZGVyQW5kUGFkZGluZygqbGluZSksIGxpbmUtPmNvbnRlbnRMb2dpY2FsVG9wKCkpIH07CisgICAg
ICAgIGF1dG8gbGluZUJveCA9IHJ1bi0+bGluZUJveCgpOworICAgICAgICBhdXRvIHRvcCA9IExh
eW91dFVuaXQgeyBzdGQ6Om1pbihwcmV2aW91c0xpbmVCb3hDb250ZW50Qm90dG9tT3JCb3JkZXJB
bmRQYWRkaW5nKCpsaW5lQm94KSwgbGluZUJveC0+Y29udGVudExvZ2ljYWxUb3AoKSkgfTsKICAg
ICAgICAgaWYgKHBvaW50QmxvY2tEaXJlY3Rpb24gPiB0b3AgfHwgKCFibG9ja3NBcmVGbGlwcGVk
ICYmIHBvaW50QmxvY2tEaXJlY3Rpb24gPT0gdG9wKSkgewotICAgICAgICAgICAgYXV0byBib3R0
b20gPSBMaW5lU2VsZWN0aW9uOjpsb2dpY2FsQm90dG9tKCpsaW5lKTsKLSAgICAgICAgICAgIGlm
IChhdXRvIG5leHRMaW5lID0gbGluZS0+bmV4dCgpKQotICAgICAgICAgICAgICAgIGJvdHRvbSA9
IHN0ZDo6bWluKGJvdHRvbSwgbmV4dExpbmUtPmNvbnRlbnRMb2dpY2FsVG9wKCkpOworICAgICAg
ICAgICAgYXV0byBib3R0b20gPSBMaW5lU2VsZWN0aW9uOjpsb2dpY2FsQm90dG9tKCpsaW5lQm94
KTsKKyAgICAgICAgICAgIGlmIChhdXRvIG5leHRMaW5lQm94ID0gbGluZUJveC0+bmV4dCgpKQor
ICAgICAgICAgICAgICAgIGJvdHRvbSA9IHN0ZDo6bWluKGJvdHRvbSwgbmV4dExpbmVCb3gtPmNv
bnRlbnRMb2dpY2FsVG9wKCkpOwogCiAgICAgICAgICAgICBpZiAocG9pbnRCbG9ja0RpcmVjdGlv
biA8IGJvdHRvbSB8fCAoYmxvY2tzQXJlRmxpcHBlZCAmJiBwb2ludEJsb2NrRGlyZWN0aW9uID09
IGJvdHRvbSkpIHsKICAgICAgICAgICAgICAgICBTaG91bGRBZmZpbml0eUJlRG93bnN0cmVhbSBz
aG91bGRBZmZpbml0eUJlRG93bnN0cmVhbTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9UZXh0Qm94UGFpbnRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4
dEJveFBhaW50ZXIuY3BwCmluZGV4IDk0MzJkNDJiNDQxYTQ3YTM1MDE2NjRmMTg4YjY2OGYxYzg4
NTNlNWUuLmRmMTFhNjA2YzI4MDY4MTM1YmEzZDUwMGFkNjcwMmU5YzM2ZTJmNDAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0Qm94UGFpbnRlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRCb3hQYWludGVyLmNwcApAQCAtMjksNyArMjksNyBA
QAogI2luY2x1ZGUgIkVkaXRvci5oIgogI2luY2x1ZGUgIkV2ZW50UmVnaW9uLmgiCiAjaW5jbHVk
ZSAiR3JhcGhpY3NDb250ZXh0LmgiCi0jaW5jbHVkZSAiSW5saW5lSXRlcmF0b3JMaW5lLmgiCisj
aW5jbHVkZSAiSW5saW5lSXRlcmF0b3JMaW5lQm94LmgiCiAjaW5jbHVkZSAiTGVnYWN5SW5saW5l
VGV4dEJveC5oIgogI2luY2x1ZGUgIkxpbmVTZWxlY3Rpb24uaCIKICNpbmNsdWRlICJQYWludElu
Zm8uaCIKQEAgLTY2LDcgKzY2LDcgQEAgVGV4dEJveFBhaW50ZXI6OlRleHRCb3hQYWludGVyKGNv
bnN0IElubGluZUl0ZXJhdG9yOjpUZXh0Qm94SXRlcmF0b3ImIHRleHRCb3gsIFAKICAgICAsIG1f
cGFpbnRJbmZvKHBhaW50SW5mbykKICAgICAsIG1fc2VsZWN0YWJsZVJhbmdlKG1fdGV4dEJveC0+
c2VsZWN0YWJsZVJhbmdlKCkpCiAgICAgLCBtX3BhaW50UmVjdChjb21wdXRlUGFpbnRSZWN0KHBh
aW50T2Zmc2V0KSkKLSAgICAsIG1faXNGaXJzdExpbmUobV90ZXh0Qm94LT5saW5lKCktPmlzRmly
c3QoKSkKKyAgICAsIG1faXNGaXJzdExpbmUobV90ZXh0Qm94LT5saW5lQm94KCktPmlzRmlyc3Qo
KSkKICAgICAsIG1faXNQcmludGluZyhtX2RvY3VtZW50LnByaW50aW5nKCkpCiAgICAgLCBtX2hh
dmVTZWxlY3Rpb24oY29tcHV0ZUhhdmVTZWxlY3Rpb24oKSkKICAgICAsIG1fY29udGFpbnNDb21w
b3NpdGlvbihtX3JlbmRlcmVyLnRleHROb2RlKCkgJiYgbV9yZW5kZXJlci5mcmFtZSgpLmVkaXRv
cigpLmNvbXBvc2l0aW9uTm9kZSgpID09IG1fcmVuZGVyZXIudGV4dE5vZGUoKSkKQEAgLTI4OSw5
ICsyODksOSBAQCB2b2lkIFRleHRCb3hQYWludGVyOjpwYWludEJhY2tncm91bmQodW5zaWduZWQg
c3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCwgYwogCiAgICAgLy8gTm90ZSB0aGF0IGlm
IHRoZSB0ZXh0IGlzIHRydW5jYXRlZCwgd2UgbGV0IHRoZSB0aGluZyBiZWluZyBwYWludGVkIGlu
IHRoZSB0cnVuY2F0aW9uCiAgICAgLy8gZHJhdyBpdHMgb3duIGhpZ2hsaWdodC4KLSAgICBhdXRv
IGxpbmUgPSB0ZXh0Qm94KCkubGluZSgpOwotICAgIGF1dG8gc2VsZWN0aW9uQm90dG9tID0gTGlu
ZVNlbGVjdGlvbjo6bG9naWNhbEJvdHRvbSgqbGluZSk7Ci0gICAgYXV0byBzZWxlY3Rpb25Ub3Ag
PSBMaW5lU2VsZWN0aW9uOjpsb2dpY2FsVG9wQWRqdXN0ZWRGb3JQcmVjZWRpbmdCbG9jaygqbGlu
ZSk7CisgICAgYXV0byBsaW5lQm94ID0gdGV4dEJveCgpLmxpbmVCb3goKTsKKyAgICBhdXRvIHNl
bGVjdGlvbkJvdHRvbSA9IExpbmVTZWxlY3Rpb246OmxvZ2ljYWxCb3R0b20oKmxpbmVCb3gpOwor
ICAgIGF1dG8gc2VsZWN0aW9uVG9wID0gTGluZVNlbGVjdGlvbjo6bG9naWNhbFRvcEFkanVzdGVk
Rm9yUHJlY2VkaW5nQmxvY2soKmxpbmVCb3gpOwogICAgIC8vIFVzZSBzYW1lIHkgcG9zaXRpb25p
bmcgYW5kIGhlaWdodCBhcyBmb3Igc2VsZWN0aW9uLCBzbyB0aGF0IHdoZW4gdGhlIHNlbGVjdGlv
biBhbmQgdGhpcyBzdWJyYW5nZSBhcmUgb24KICAgICAvLyB0aGUgc2FtZSB3b3JkIHRoZXJlIGFy
ZSBubyBwaWVjZXMgc3RpY2tpbmcgb3V0LgogICAgIGF1dG8gZGVsdGFZID0gTGF5b3V0VW5pdCB7
IG1fc3R5bGUuaXNGbGlwcGVkTGluZXNXcml0aW5nTW9kZSgpID8gc2VsZWN0aW9uQm90dG9tIC0g
dGV4dEJveCgpLmxvZ2ljYWxCb3R0b20oKSA6IHRleHRCb3goKS5sb2dpY2FsVG9wKCkgLSBzZWxl
Y3Rpb25Ub3AgfTsKQEAgLTQ0Niw3ICs0NDYsNyBAQCBzdGF0aWMgZmxvYXQgdGV4dFBvc2l0aW9u
KGNvbnN0IElubGluZUl0ZXJhdG9yOjpUZXh0Qm94SXRlcmF0b3ImIHRleHRCb3gpCiAgICAgLy8g
ZnJvbSB0aGUgY29udGFpbmluZyBibG9jayBlZGdlIGluIGl0cyBtZWFzdXJlbWVudC4gdGV4dFBv
c2l0aW9uKCkgc2hvdWxkIGJlIGNvbnNpc3RlbnQgc28gdGhlIHRleHQgYXJlIHJlbmRlcmVkIGlu
IHRoZSBzYW1lIHdpZHRoLgogICAgIGlmICghdGV4dEJveC0+bG9naWNhbExlZnQoKSkKICAgICAg
ICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIHRleHRCb3gtPmxvZ2ljYWxMZWZ0KCkgLSB0ZXh0Qm94
LT5saW5lKCktPmNvbnRlbnRMb2dpY2FsTGVmdCgpOworICAgIHJldHVybiB0ZXh0Qm94LT5sb2dp
Y2FsTGVmdCgpIC0gdGV4dEJveC0+bGluZUJveCgpLT5jb250ZW50TG9naWNhbExlZnQoKTsKIH0K
IAogdm9pZCBUZXh0Qm94UGFpbnRlcjo6cGFpbnRDb21wb3NpdGlvblVuZGVybGluZShjb25zdCBD
b21wb3NpdGlvblVuZGVybGluZSYgdW5kZXJsaW5lKQpAQCAtNTcwLDcgKzU3MCw3IEBAIEZsb2F0
UmVjdCBUZXh0Qm94UGFpbnRlcjo6Y29tcHV0ZVBhaW50UmVjdChjb25zdCBMYXlvdXRQb2ludCYg
cGFpbnRPZmZzZXQpCiAKICAgICBsb2NhbFBhaW50T2Zmc2V0Lm1vdmUoMCwgbV9zdHlsZS5pc0hv
cml6b250YWxXcml0aW5nTW9kZSgpID8gMCA6IC10ZXh0Qm94KCkubG9naWNhbEhlaWdodCgpKTsK
IAotICAgIGF1dG8gYm94T3JpZ2luID0gdGV4dEJveCgpLnZpc3VhbFJlY3QodGV4dEJveCgpLmxp
bmUoKS0+Y29udGFpbmluZ0Jsb2NrKCkubG9naWNhbEhlaWdodCgpKS5sb2NhdGlvbigpOworICAg
IGF1dG8gYm94T3JpZ2luID0gdGV4dEJveCgpLnZpc3VhbFJlY3QodGV4dEJveCgpLmxpbmVCb3go
KS0+Y29udGFpbmluZ0Jsb2NrKCkubG9naWNhbEhlaWdodCgpKS5sb2NhdGlvbigpOwogICAgIGJv
eE9yaWdpbi5tb3ZlQnkobG9jYWxQYWludE9mZnNldCk7CiAgICAgcmV0dXJuIHsgYm94T3JpZ2lu
LCBGbG9hdFNpemUodGV4dEJveCgpLmxvZ2ljYWxXaWR0aCgpLCB0ZXh0Qm94KCkubG9naWNhbEhl
aWdodCgpKSB9OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9T
VkdSb290SW5saW5lQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUm9v
dElubGluZUJveC5jcHAKaW5kZXggMDk1YTgzY2VlMzBjMmMwMTEwZGZiYjViM2I0NThmOWUyYzJk
NDA5ZC4uOWM2YzA5ODAxMzc2YmNkMzdkZGZmOWEzOTBhM2ViMDM2Njk0MzlmMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSb290SW5saW5lQm94LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Jvb3RJbmxpbmVCb3guY3BwCkBAIC0z
MTEsOSArMzExLDkgQEAgc3RhdGljIGlubGluZSB2b2lkIHJldmVyc2VJbmxpbmVCb3hSYW5nZUFu
ZFZhbHVlTGlzdHNJZk5lZWRlZChWZWN0b3I8U1ZHVGV4dExheW8KIAogdm9pZCBTVkdSb290SW5s
aW5lQm94OjpyZW9yZGVyVmFsdWVMaXN0c1RvTG9naWNhbE9yZGVyKFZlY3RvcjxTVkdUZXh0TGF5
b3V0QXR0cmlidXRlcyo+JiBhdHRyaWJ1dGVzKQogewotICAgIGF1dG8gbGluZSA9IElubGluZUl0
ZXJhdG9yOjpMaW5lSXRlcmF0b3IodGhpcyk7CisgICAgYXV0byBsaW5lQm94ID0gSW5saW5lSXRl
cmF0b3I6OkxpbmVCb3hJdGVyYXRvcih0aGlzKTsKIAotICAgIElubGluZUl0ZXJhdG9yOjpsZWFm
Qm94ZXNJbkxvZ2ljYWxPcmRlcihsaW5lLCBbJl0oYXV0byBmaXJzdCwgYXV0byBsYXN0KSB7Cisg
ICAgSW5saW5lSXRlcmF0b3I6OmxlYWZCb3hlc0luTG9naWNhbE9yZGVyKGxpbmVCb3gsIFsmXShh
dXRvIGZpcnN0LCBhdXRvIGxhc3QpIHsKICAgICAgICAgcmV2ZXJzZUlubGluZUJveFJhbmdlQW5k
VmFsdWVMaXN0c0lmTmVlZGVkKGF0dHJpYnV0ZXMsIGZpcnN0LCBsYXN0KTsKICAgICB9KTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvSW5saW5lVGV4dEJveFN0eWxlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3N0eWxlL0lubGluZVRleHRCb3hTdHlsZS5jcHAKaW5kZXggNDFjY2Vl
Y2FlZjFhMjkwMzk0NTg5NmQ4MTljZDViYzJkMGU1NTdkYy4uNTc1YTVjMDViMDdhZTk1NTc1NzM1
ZWE4ODE3ODczZWY0NWMxNWY2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvSW5s
aW5lVGV4dEJveFN0eWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9JbmxpbmVUZXh0
Qm94U3R5bGUuY3BwCkBAIC0yOSw3ICsyOSw3IEBACiAjaW5jbHVkZSAiRm9udENhc2NhZGUuaCIK
ICNpbmNsdWRlICJIVE1MQW5jaG9yRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgot
I2luY2x1ZGUgIklubGluZUl0ZXJhdG9yTGluZS5oIgorI2luY2x1ZGUgIklubGluZUl0ZXJhdG9y
TGluZUJveC5oIgogI2luY2x1ZGUgIklubGluZUl0ZXJhdG9yVGV4dEJveC5oIgogI2luY2x1ZGUg
IkxlZ2FjeUlubGluZVRleHRCb3guaCIKICNpbmNsdWRlICJMZWdhY3lSb290SW5saW5lQm94Lmgi
CkBAIC00OSw5ICs0OSw5IEBAIHN0YXRpYyBib29sIGlzQW5jZXN0b3JBbmRXaXRoaW5CbG9jayhj
b25zdCBSZW5kZXJJbmxpbmUmIGFuY2VzdG9yLCBjb25zdCBSZW5kZXJPCiAgICAgcmV0dXJuIGZh
bHNlOwogfQogCi1zdGF0aWMgdm9pZCBtaW5Mb2dpY2FsVG9wRm9yVGV4dERlY29yYXRpb25MaW5l
KGNvbnN0IElubGluZUl0ZXJhdG9yOjpMaW5lSXRlcmF0b3ImIGxpbmUsIGZsb2F0JiBtaW5Mb2dp
Y2FsVG9wLCBjb25zdCBSZW5kZXJFbGVtZW50KiBkZWNvcmF0aW9uUmVuZGVyZXIsIE9wdGlvblNl
dDxUZXh0RGVjb3JhdGlvbkxpbmU+IHRleHREZWNvcmF0aW9uTGluZSkKK3N0YXRpYyB2b2lkIG1p
bkxvZ2ljYWxUb3BGb3JUZXh0RGVjb3JhdGlvbkxpbmUoY29uc3QgSW5saW5lSXRlcmF0b3I6Okxp
bmVCb3hJdGVyYXRvciYgbGluZUJveCwgZmxvYXQmIG1pbkxvZ2ljYWxUb3AsIGNvbnN0IFJlbmRl
ckVsZW1lbnQqIGRlY29yYXRpb25SZW5kZXJlciwgT3B0aW9uU2V0PFRleHREZWNvcmF0aW9uTGlu
ZT4gdGV4dERlY29yYXRpb25MaW5lKQogewotICAgIGZvciAoYXV0byBydW4gPSBsaW5lLT5maXJz
dExlYWZCb3goKTsgcnVuOyBydW4udHJhdmVyc2VOZXh0T25MaW5lKCkpIHsKKyAgICBmb3IgKGF1
dG8gcnVuID0gbGluZUJveC0+Zmlyc3RMZWFmQm94KCk7IHJ1bjsgcnVuLnRyYXZlcnNlTmV4dE9u
TGluZSgpKSB7CiAgICAgICAgIGlmIChydW4tPnJlbmRlcmVyKCkuaXNPdXRPZkZsb3dQb3NpdGlv
bmVkKCkpCiAgICAgICAgICAgICBjb250aW51ZTsgLy8gUG9zaXRpb25lZCBwbGFjZWhvbGRlcnMg
ZG9uJ3QgYWZmZWN0IGNhbGN1bGF0aW9ucy4KIApAQCAtNjYsOSArNjYsOSBAQCBzdGF0aWMgdm9p
ZCBtaW5Mb2dpY2FsVG9wRm9yVGV4dERlY29yYXRpb25MaW5lKGNvbnN0IElubGluZUl0ZXJhdG9y
OjpMaW5lSXRlcmF0bwogICAgIH0KIH0KIAotc3RhdGljIHZvaWQgbWF4TG9naWNhbEJvdHRvbUZv
clRleHREZWNvcmF0aW9uTGluZShjb25zdCBJbmxpbmVJdGVyYXRvcjo6TGluZUl0ZXJhdG9yJiBs
aW5lLCBmbG9hdCYgbWF4TG9naWNhbEJvdHRvbSwgY29uc3QgUmVuZGVyRWxlbWVudCogZGVjb3Jh
dGlvblJlbmRlcmVyLCBPcHRpb25TZXQ8VGV4dERlY29yYXRpb25MaW5lPiB0ZXh0RGVjb3JhdGlv
bkxpbmUpCitzdGF0aWMgdm9pZCBtYXhMb2dpY2FsQm90dG9tRm9yVGV4dERlY29yYXRpb25MaW5l
KGNvbnN0IElubGluZUl0ZXJhdG9yOjpMaW5lQm94SXRlcmF0b3ImIGxpbmVCb3gsIGZsb2F0JiBt
YXhMb2dpY2FsQm90dG9tLCBjb25zdCBSZW5kZXJFbGVtZW50KiBkZWNvcmF0aW9uUmVuZGVyZXIs
IE9wdGlvblNldDxUZXh0RGVjb3JhdGlvbkxpbmU+IHRleHREZWNvcmF0aW9uTGluZSkKIHsKLSAg
ICBmb3IgKGF1dG8gcnVuID0gbGluZS0+Zmlyc3RMZWFmQm94KCk7IHJ1bjsgcnVuLnRyYXZlcnNl
TmV4dE9uTGluZSgpKSB7CisgICAgZm9yIChhdXRvIHJ1biA9IGxpbmVCb3gtPmZpcnN0TGVhZkJv
eCgpOyBydW47IHJ1bi50cmF2ZXJzZU5leHRPbkxpbmUoKSkgewogICAgICAgICBpZiAocnVuLT5y
ZW5kZXJlcigpLmlzT3V0T2ZGbG93UG9zaXRpb25lZCgpKQogICAgICAgICAgICAgY29udGludWU7
IC8vIFBvc2l0aW9uZWQgcGxhY2Vob2xkZXJzIGRvbid0IGFmZmVjdCBjYWxjdWxhdGlvbnMuCiAK
QEAgLTExOSw3ICsxMTksNyBAQCBmbG9hdCBjb21wdXRlVW5kZXJsaW5lT2Zmc2V0KFRleHRVbmRl
cmxpbmVQb3NpdGlvbiB1bmRlcmxpbmVQb3NpdGlvbiwgVGV4dFVuZGVybAogICAgIGF1dG8gcmVz
b2x2ZWRVbmRlcmxpbmVQb3NpdGlvbiA9IHVuZGVybGluZVBvc2l0aW9uOwogICAgIGlmIChyZXNv
bHZlZFVuZGVybGluZVBvc2l0aW9uID09IFRleHRVbmRlcmxpbmVQb3NpdGlvbjo6QXV0byAmJiB1
bmRlcmxpbmVPZmZzZXQuaXNBdXRvKCkpIHsKICAgICAgICAgaWYgKHRleHRSdW4pCi0gICAgICAg
ICAgICByZXNvbHZlZFVuZGVybGluZVBvc2l0aW9uID0gdGV4dFJ1bi0+bGluZSgpLT5iYXNlbGlu
ZVR5cGUoKSA9PSBJZGVvZ3JhcGhpY0Jhc2VsaW5lID8gVGV4dFVuZGVybGluZVBvc2l0aW9uOjpV
bmRlciA6IFRleHRVbmRlcmxpbmVQb3NpdGlvbjo6QXV0bzsKKyAgICAgICAgICAgIHJlc29sdmVk
VW5kZXJsaW5lUG9zaXRpb24gPSB0ZXh0UnVuLT5saW5lQm94KCktPmJhc2VsaW5lVHlwZSgpID09
IElkZW9ncmFwaGljQmFzZWxpbmUgPyBUZXh0VW5kZXJsaW5lUG9zaXRpb246OlVuZGVyIDogVGV4
dFVuZGVybGluZVBvc2l0aW9uOjpBdXRvOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICByZXNv
bHZlZFVuZGVybGluZVBvc2l0aW9uID0gVGV4dFVuZGVybGluZVBvc2l0aW9uOjpBdXRvOwogICAg
IH0KQEAgLTEzNCwxNyArMTM0LDE3IEBAIGZsb2F0IGNvbXB1dGVVbmRlcmxpbmVPZmZzZXQoVGV4
dFVuZGVybGluZVBvc2l0aW9uIHVuZGVybGluZVBvc2l0aW9uLCBUZXh0VW5kZXJsCiAgICAgY2Fz
ZSBUZXh0VW5kZXJsaW5lUG9zaXRpb246OlVuZGVyOiB7CiAgICAgICAgIEFTU0VSVCh0ZXh0UnVu
KTsKICAgICAgICAgLy8gUG9zaXRpb24gdW5kZXJsaW5lIHJlbGF0aXZlIHRvIHRoZSBib3R0b20g
ZWRnZSBvZiB0aGUgbG93ZXN0IGVsZW1lbnQncyBjb250ZW50IGJveC4KLSAgICAgICAgYXV0byBs
aW5lID0gdGV4dFJ1bi0+bGluZSgpOwotICAgICAgICBhdXRvKiBkZWNvcmF0aW9uUmVuZGVyZXIg
PSBlbmNsb3NpbmdSZW5kZXJlcldpdGhUZXh0RGVjb3JhdGlvbih0ZXh0UnVuLT5yZW5kZXJlcigp
LCBUZXh0RGVjb3JhdGlvbkxpbmU6OlVuZGVybGluZSwgbGluZS0+aXNGaXJzdCgpKTsKKyAgICAg
ICAgYXV0byBsaW5lQm94ID0gdGV4dFJ1bi0+bGluZUJveCgpOworICAgICAgICBhdXRvKiBkZWNv
cmF0aW9uUmVuZGVyZXIgPSBlbmNsb3NpbmdSZW5kZXJlcldpdGhUZXh0RGVjb3JhdGlvbih0ZXh0
UnVuLT5yZW5kZXJlcigpLCBUZXh0RGVjb3JhdGlvbkxpbmU6OlVuZGVybGluZSwgbGluZUJveC0+
aXNGaXJzdCgpKTsKICAgICAgICAgCiAgICAgICAgIGZsb2F0IG9mZnNldDsKICAgICAgICAgaWYg
KHRleHRSdW4tPnJlbmRlcmVyKCkuc3R5bGUoKS5pc0ZsaXBwZWRMaW5lc1dyaXRpbmdNb2RlKCkp
IHsKICAgICAgICAgICAgIG9mZnNldCA9IHRleHRSdW4tPmxvZ2ljYWxUb3AoKTsKLSAgICAgICAg
ICAgIG1pbkxvZ2ljYWxUb3BGb3JUZXh0RGVjb3JhdGlvbkxpbmUobGluZSwgb2Zmc2V0LCBkZWNv
cmF0aW9uUmVuZGVyZXIsIFRleHREZWNvcmF0aW9uTGluZTo6VW5kZXJsaW5lKTsKKyAgICAgICAg
ICAgIG1pbkxvZ2ljYWxUb3BGb3JUZXh0RGVjb3JhdGlvbkxpbmUobGluZUJveCwgb2Zmc2V0LCBk
ZWNvcmF0aW9uUmVuZGVyZXIsIFRleHREZWNvcmF0aW9uTGluZTo6VW5kZXJsaW5lKTsKICAgICAg
ICAgICAgIG9mZnNldCA9IHRleHRSdW4tPmxvZ2ljYWxUb3AoKSAtIG9mZnNldDsKICAgICAgICAg
fSBlbHNlIHsKICAgICAgICAgICAgIG9mZnNldCA9IHRleHRSdW4tPmxvZ2ljYWxCb3R0b20oKTsK
LSAgICAgICAgICAgIG1heExvZ2ljYWxCb3R0b21Gb3JUZXh0RGVjb3JhdGlvbkxpbmUobGluZSwg
b2Zmc2V0LCBkZWNvcmF0aW9uUmVuZGVyZXIsIFRleHREZWNvcmF0aW9uTGluZTo6VW5kZXJsaW5l
KTsKKyAgICAgICAgICAgIG1heExvZ2ljYWxCb3R0b21Gb3JUZXh0RGVjb3JhdGlvbkxpbmUobGlu
ZUJveCwgb2Zmc2V0LCBkZWNvcmF0aW9uUmVuZGVyZXIsIFRleHREZWNvcmF0aW9uTGluZTo6VW5k
ZXJsaW5lKTsKICAgICAgICAgICAgIG9mZnNldCAtPSB0ZXh0UnVuLT5sb2dpY2FsQm90dG9tKCk7
CiAgICAgICAgIH0KICAgICAgICAgYXV0byBkZXNpcmVkT2Zmc2V0ID0gdGV4dFJ1bi0+bG9naWNh
bEhlaWdodCgpICsgZ2FwICsgc3RkOjptYXgob2Zmc2V0LCAwLjBmKSArIHVuZGVybGluZU9mZnNl
dC5sZW5ndGhPcigwKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>455205</attachid>
            <date>2022-03-20 15:03:23 -0700</date>
            <delta_ts>2022-03-20 16:19:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238128-20220320150322.patch</filename>
            <type>text/plain</type>
            <size>141389</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxNTM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTRkYmE4OWE2YmFkMDNk
ZmNhODkwYTI4NTcxNzliZDE2Yzc1YzIwMC4uZmM3NmE3YzY1OTcwMTA2ZDMyZjA1MzQ2ZWU2MDJh
OTUwMzg1YzZmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzMiBAQAorMjAyMi0wMy0yMCAgQWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0lGQ11bSW50ZWdyYXRpb25d
IFJlbmFtZSBJbmxpbmVJdGVyYXRvcjo6TGluZSB0byBMaW5lQm94CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzgxMjgKKworICAgICAgICBSZXZpZXdl
ZCBieSBBbnR0aSBLb2l2aXN0by4KKworICAgICAgICAqIGRvbS9Qb3NpdGlvbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpQb3NpdGlvbjo6dXBzdHJlYW0gY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6UG9zaXRpb246OmRvd25zdHJlYW0gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UG9zaXRp
b246OnJlbmRlcnNJbkRpZmZlcmVudFBvc2l0aW9uIGNvbnN0KToKKyAgICAgICAgKiBlZGl0aW5n
L1JlbmRlcmVkUG9zaXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcmVkUG9zaXRpb246
OmxpbmVCb3ggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyZWRQb3NpdGlvbjo6bGlu
ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogZWRpdGluZy9WaXNpYmxlUG9zaXRpb24uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6VmlzaWJsZVBvc2l0aW9uOjpsZWZ0VmlzdWFsbHlEaXN0aW5j
dENhbmRpZGF0ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpWaXNpYmxlUG9zaXRpb246OnJp
Z2h0VmlzdWFsbHlEaXN0aW5jdENhbmRpZGF0ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpW
aXNpYmxlUG9zaXRpb246OmFic29sdXRlU2VsZWN0aW9uQm91bmRzRm9yTGluZSBjb25zdCk6Cisg
ICAgICAgICogZWRpdGluZy9WaXNpYmxlVW5pdHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c3Rh
cnRUZXh0T3JMaW5lQnJlYWtCb3gpOgorICAgICAgICAoV2ViQ29yZTo6ZW5kVGV4dE9yTGluZUJy
ZWFrQm94KToKKyAgICAgICAgKFdlYkNvcmU6OmxvZ2ljYWxseVByZXZpb3VzQm94KToKKyAgICAg
ICAgKFdlYkNvcmU6OmxvZ2ljYWxseU5leHRCb3gpOgorICAgICAgICAoV2ViQ29yZTo6c3RhcnRQ
b3NpdGlvbkZvckxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6ZW5kUG9zaXRpb25Gb3JMaW5lKToK
KyAgICAgICAgKFdlYkNvcmU6OmFic29sdXRlTGluZURpcmVjdGlvblBvaW50VG9Mb2NhbFBvaW50
SW5CbG9jayk6CisgICAgICAgIChXZWJDb3JlOjpwcmV2aW91c0xpbmVQb3NpdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpuZXh0TGluZVBvc2l0aW9uKToKKyAgICAgICAgKiBodG1sL0hUTUxUZXh0
Rm9ybUNvbnRyb2xFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUZXh0Rm9ybUNv
bnRyb2xFbGVtZW50Ojp2YWx1ZVdpdGhIYXJkTGluZUJyZWFrcyBjb25zdCk6CisgICAgICAgICog
bGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yQm94LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OklubGluZUl0ZXJhdG9yOjpCb3g6OmxpbmVCb3ggY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5saW5lSXRlcmF0b3I6OkJveDo6c3R5bGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
SW5saW5lSXRlcmF0b3I6OkJveDo6bGluZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogbGF5
b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yQm94Lmg6CisgICAgICAgICogbGF5b3V0L2lu
dGVncmF0aW9uL0lubGluZUl0ZXJhdG9yTGluZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbmxp
bmVJdGVyYXRvcjo6TGluZUJveEl0ZXJhdG9yOjpMaW5lQm94SXRlcmF0b3IpOgorICAgICAgICAo
V2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OkxpbmVCb3hJdGVyYXRvcjo6YXRFbmQgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OkxpbmVCb3hJdGVyYXRvcjo6dHJhdmVy
c2VOZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpMaW5lQm94SXRlcmF0
b3I6OnRyYXZlcnNlUHJldmlvdXMpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6
OkxpbmVCb3hJdGVyYXRvcjo6b3BlcmF0b3I9PSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bmxpbmVJdGVyYXRvcjo6Zmlyc3RMaW5lQm94Rm9yKToKKyAgICAgICAgKFdlYkNvcmU6OklubGlu
ZUl0ZXJhdG9yOjpsYXN0TGluZUJveEZvcik6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVy
YXRvcjo6TGluZUJveDo6bmV4dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVy
YXRvcjo6TGluZUJveDo6cHJldmlvdXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5l
SXRlcmF0b3I6OkxpbmVCb3g6OmZpcnN0TGVhZkJveCBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbmxpbmVJdGVyYXRvcjo6TGluZUJveDo6bGFzdExlYWZCb3ggY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OmNsb3Nlc3RCb3hGb3JIb3Jpem9udGFsUG9zaXRpb24p
OgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OkxpbmVJdGVyYXRvcjo6TGluZUl0
ZXJhdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpMaW5l
SXRlcmF0b3I6OmF0RW5kIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklubGlu
ZUl0ZXJhdG9yOjpMaW5lSXRlcmF0b3I6OnRyYXZlcnNlTmV4dCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6TGluZUl0ZXJhdG9yOjp0cmF2ZXJzZVByZXZpb3Vz
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpMaW5lSXRlcmF0
b3I6Om9wZXJhdG9yPT0gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5saW5l
SXRlcmF0b3I6OmZpcnN0TGluZUZvcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbmxp
bmVJdGVyYXRvcjo6bGFzdExpbmVGb3IpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5s
aW5lSXRlcmF0b3I6OkxpbmU6Om5leHQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6SW5saW5lSXRlcmF0b3I6OkxpbmU6OnByZXZpb3VzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpMaW5lOjpmaXJzdExlYWZCb3ggY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OkxpbmU6Omxhc3RMZWFm
Qm94IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBsYXlvdXQvaW50ZWdyYXRpb24vSW5saW5l
SXRlcmF0b3JMaW5lLmg6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6TGluZUJv
eDo6aGVpZ2h0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpMaW5l
Qm94SXRlcmF0b3I6OkxpbmVCb3hJdGVyYXRvcik6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJ
dGVyYXRvcjo6TGluZUJveEl0ZXJhdG9yOjpvcGVyYXRvcisrKToKKyAgICAgICAgKFdlYkNvcmU6
OklubGluZUl0ZXJhdG9yOjpMaW5lQm94SXRlcmF0b3I6Om9wZXJhdG9yIT0gY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OkxpbmVCb3hJdGVyYXRvcjo6b3BlcmF0b3I9
PSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6TGluZUJveEl0ZXJh
dG9yOjpvcGVyYXRvciogY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6
OkxpbmVCb3hJdGVyYXRvcjo6b3BlcmF0b3ItPiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bmxpbmVJdGVyYXRvcjo6cHJldmlvdXNMaW5lQm94Q29udGVudEJvdHRvbU9yQm9yZGVyQW5kUGFk
ZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6Y29udGVudFN0YXJ0SW5C
bG9ja0RpcmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6TGluZUJv
eDo6TGluZUJveCk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6TGluZUJveDo6
Y29udGVudExvZ2ljYWxUb3AgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0
b3I6OkxpbmVCb3g6OmNvbnRlbnRMb2dpY2FsQm90dG9tIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OklubGluZUl0ZXJhdG9yOjpMaW5lQm94Ojpjb250ZW50TG9naWNhbFRvcEFkanVzdGVkRm9y
UHJlY2VkaW5nTGluZUJveCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRv
cjo6TGluZUJveDo6Y29udGVudExvZ2ljYWxCb3R0b21BZGp1c3RlZEZvckZvbGxvd2luZ0xpbmVC
b3ggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OkxpbmVCb3g6OnRv
cCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6TGluZUJveDo6Ym90
dG9tIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpMaW5lQm94Ojpj
b250ZW50TG9naWNhbExlZnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0
b3I6OkxpbmVCb3g6OmNvbnRlbnRMb2dpY2FsUmlnaHQgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5saW5lSXRlcmF0b3I6OkxpbmVCb3g6OmNvbnRlbnRMb2dpY2FsV2lkdGggY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OkxpbmVCb3g6OmlzSG9yaXpvbnRhbCBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6TGluZUJveDo6YmFzZWxp
bmVUeXBlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpMaW5lQm94
Ojpjb250YWluaW5nQmxvY2sgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0
b3I6OkxpbmVCb3g6OmNvbnRhaW5pbmdGcmFnbWVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbmxpbmVJdGVyYXRvcjo6TGluZUJveDo6aXNGaXJzdEFmdGVyUGFnZUJyZWFrIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpMaW5lQm94Ojppc0ZpcnN0IGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpMaW5lOjpsaW5lQm94SGVpZ2h0
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpMaW5l
SXRlcmF0b3I6OkxpbmVJdGVyYXRvcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbmxp
bmVJdGVyYXRvcjo6TGluZUl0ZXJhdG9yOjpvcGVyYXRvcisrKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpMaW5lSXRlcmF0b3I6Om9wZXJhdG9yIGJvb2wgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OkxpbmVJdGVy
YXRvcjo6b3BlcmF0b3IhPSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbmxp
bmVJdGVyYXRvcjo6TGluZUl0ZXJhdG9yOjpvcGVyYXRvcj09IGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpMaW5lSXRlcmF0b3I6Om9wZXJhdG9yKiBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6TGluZUl0
ZXJhdG9yOjpvcGVyYXRvci0+IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Oklu
bGluZUl0ZXJhdG9yOjpwcmV2aW91c0xpbmVDb250ZW50Qm90dG9tT3JCb3JkZXJBbmRQYWRkaW5n
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpMaW5lOjpMaW5l
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpMaW5lOjpjb250
ZW50TG9naWNhbFRvcCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJ
dGVyYXRvcjo6TGluZTo6Y29udGVudExvZ2ljYWxCb3R0b20gY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OkxpbmU6OmNvbnRlbnRMb2dpY2FsVG9wQWRq
dXN0ZWRGb3JQcmVjZWRpbmdMaW5lIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OklubGluZUl0ZXJhdG9yOjpMaW5lOjpjb250ZW50TG9naWNhbEJvdHRvbUFkanVzdGVkRm9yRm9s
bG93aW5nTGluZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVy
YXRvcjo6TGluZTo6bGluZUJveFRvcCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpJbmxpbmVJdGVyYXRvcjo6TGluZTo6bGluZUJveEJvdHRvbSBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6TGluZTo6Y29udGVudExvZ2ljYWxMZWZ0
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpMaW5l
Ojpjb250ZW50TG9naWNhbFJpZ2h0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OklubGluZUl0ZXJhdG9yOjpMaW5lOjpjb250ZW50TG9naWNhbFdpZHRoIGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpMaW5lOjppc0hvcml6b250YWwg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OkxpbmU6
OmJhc2VsaW5lVHlwZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJ
dGVyYXRvcjo6TGluZTo6Y29udGFpbmluZ0Jsb2NrIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpMaW5lOjpjb250YWluaW5nRnJhZ21lbnQgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OkxpbmU6OmlzRmly
c3RBZnRlclBhZ2VCcmVhayBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbmxp
bmVJdGVyYXRvcjo6TGluZTo6aXNGaXJzdCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogbGF5
b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yTGluZUxlZ2FjeVBhdGguaDoKKyAgICAgICAg
KFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpMaW5lQm94SXRlcmF0b3JMZWdhY3lQYXRoOjpMaW5l
Qm94SXRlcmF0b3JMZWdhY3lQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9y
OjpMaW5lQm94SXRlcmF0b3JMZWdhY3lQYXRoOjpjb250ZW50TG9naWNhbFRvcEFkanVzdGVkRm9y
UHJlY2VkaW5nTGluZUJveCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRv
cjo6TGluZUJveEl0ZXJhdG9yTGVnYWN5UGF0aDo6Y29udGVudExvZ2ljYWxCb3R0b21BZGp1c3Rl
ZEZvckZvbGxvd2luZ0xpbmVCb3ggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRl
cmF0b3I6OkxpbmVCb3hJdGVyYXRvckxlZ2FjeVBhdGg6OnRvcCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6TGluZUJveEl0ZXJhdG9yTGVnYWN5UGF0aDo6Ym90dG9t
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpMaW5lQm94SXRlcmF0
b3JMZWdhY3lQYXRoOjpvcGVyYXRvcj09IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklubGlu
ZUl0ZXJhdG9yOjpMaW5lSXRlcmF0b3JMZWdhY3lQYXRoOjpMaW5lSXRlcmF0b3JMZWdhY3lQYXRo
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpMaW5lSXRlcmF0
b3JMZWdhY3lQYXRoOjpjb250ZW50TG9naWNhbFRvcCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6TGluZUl0ZXJhdG9yTGVnYWN5UGF0aDo6Y29udGVu
dExvZ2ljYWxCb3R0b20gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5saW5l
SXRlcmF0b3I6OkxpbmVJdGVyYXRvckxlZ2FjeVBhdGg6OmNvbnRlbnRMb2dpY2FsVG9wQWRqdXN0
ZWRGb3JQcmVjZWRpbmdMaW5lIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Oklu
bGluZUl0ZXJhdG9yOjpMaW5lSXRlcmF0b3JMZWdhY3lQYXRoOjpjb250ZW50TG9naWNhbEJvdHRv
bUFkanVzdGVkRm9yRm9sbG93aW5nTGluZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpJbmxpbmVJdGVyYXRvcjo6TGluZUl0ZXJhdG9yTGVnYWN5UGF0aDo6bGluZUJveFRvcCBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6TGluZUl0
ZXJhdG9yTGVnYWN5UGF0aDo6bGluZUJveEJvdHRvbSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6TGluZUl0ZXJhdG9yTGVnYWN5UGF0aDo6Y29udGVu
dExvZ2ljYWxMZWZ0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0
ZXJhdG9yOjpMaW5lSXRlcmF0b3JMZWdhY3lQYXRoOjpjb250ZW50TG9naWNhbFJpZ2h0IGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpMaW5lSXRlcmF0
b3JMZWdhY3lQYXRoOjppc0hvcml6b250YWwgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6SW5saW5lSXRlcmF0b3I6OkxpbmVJdGVyYXRvckxlZ2FjeVBhdGg6OmJhc2VsaW5lVHlw
ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6TGlu
ZUl0ZXJhdG9yTGVnYWN5UGF0aDo6Y29udGFpbmluZ0Jsb2NrIGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpMaW5lSXRlcmF0b3JMZWdhY3lQYXRoOjpj
b250YWluaW5nRnJhZ21lbnQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5s
aW5lSXRlcmF0b3I6OkxpbmVJdGVyYXRvckxlZ2FjeVBhdGg6OmlzRmlyc3RBZnRlclBhZ2VCcmVh
ayBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6TGlu
ZUl0ZXJhdG9yTGVnYWN5UGF0aDo6dHJhdmVyc2VOZXh0KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OklubGluZUl0ZXJhdG9yOjpMaW5lSXRlcmF0b3JMZWdhY3lQYXRoOjp0cmF2ZXJzZVBy
ZXZpb3VzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpMaW5l
SXRlcmF0b3JMZWdhY3lQYXRoOjpvcGVyYXRvcj09IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpMaW5lSXRlcmF0b3JMZWdhY3lQYXRoOjphdEVuZCBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6TGluZUl0
ZXJhdG9yTGVnYWN5UGF0aDo6Zmlyc3RMZWFmQm94IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpMaW5lSXRlcmF0b3JMZWdhY3lQYXRoOjpsYXN0TGVh
ZkJveCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogbGF5b3V0L2ludGVncmF0aW9uL0lubGlu
ZUl0ZXJhdG9yTGluZU1vZGVyblBhdGguaDoKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJh
dG9yOjpMaW5lQm94SXRlcmF0b3JNb2Rlcm5QYXRoOjpMaW5lQm94SXRlcmF0b3JNb2Rlcm5QYXRo
KToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpMaW5lQm94SXRlcmF0b3JNb2Rl
cm5QYXRoOjp0b3AgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6Okxp
bmVCb3hJdGVyYXRvck1vZGVyblBhdGg6OmJvdHRvbSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbmxpbmVJdGVyYXRvcjo6TGluZUJveEl0ZXJhdG9yTW9kZXJuUGF0aDo6Y29udGVudExvZ2lj
YWxUb3BBZGp1c3RlZEZvclByZWNlZGluZ0xpbmVCb3ggY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5saW5lSXRlcmF0b3I6OkxpbmVCb3hJdGVyYXRvck1vZGVyblBhdGg6OmNvbnRlbnRMb2dp
Y2FsQm90dG9tQWRqdXN0ZWRGb3JGb2xsb3dpbmdMaW5lQm94IGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OklubGluZUl0ZXJhdG9yOjpMaW5lQm94SXRlcmF0b3JNb2Rlcm5QYXRoOjpvcGVyYXRv
cj09IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpMaW5lSXRlcmF0
b3JNb2Rlcm5QYXRoOjpMaW5lSXRlcmF0b3JNb2Rlcm5QYXRoKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpMaW5lSXRlcmF0b3JNb2Rlcm5QYXRoOjpjb250ZW50
TG9naWNhbFRvcCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVy
YXRvcjo6TGluZUl0ZXJhdG9yTW9kZXJuUGF0aDo6Y29udGVudExvZ2ljYWxCb3R0b20gY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OkxpbmVJdGVyYXRv
ck1vZGVyblBhdGg6OmxpbmVCb3hUb3AgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6SW5saW5lSXRlcmF0b3I6OkxpbmVJdGVyYXRvck1vZGVyblBhdGg6OmxpbmVCb3hCb3R0b20g
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OkxpbmVJ
dGVyYXRvck1vZGVyblBhdGg6OmNvbnRlbnRMb2dpY2FsVG9wQWRqdXN0ZWRGb3JQcmVjZWRpbmdM
aW5lIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpM
aW5lSXRlcmF0b3JNb2Rlcm5QYXRoOjpjb250ZW50TG9naWNhbEJvdHRvbUFkanVzdGVkRm9yRm9s
bG93aW5nTGluZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVy
YXRvcjo6TGluZUl0ZXJhdG9yTW9kZXJuUGF0aDo6Y29udGVudExvZ2ljYWxMZWZ0IGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpMaW5lSXRlcmF0b3JN
b2Rlcm5QYXRoOjpjb250ZW50TG9naWNhbFJpZ2h0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpMaW5lSXRlcmF0b3JNb2Rlcm5QYXRoOjppc0hvcml6
b250YWwgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6
OkxpbmVJdGVyYXRvck1vZGVyblBhdGg6OmJhc2VsaW5lVHlwZSBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6TGluZUl0ZXJhdG9yTW9kZXJuUGF0aDo6
Y29udGFpbmluZ0Jsb2NrIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklubGlu
ZUl0ZXJhdG9yOjpMaW5lSXRlcmF0b3JNb2Rlcm5QYXRoOjpjb250YWluaW5nRnJhZ21lbnQgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OkxpbmVJdGVy
YXRvck1vZGVyblBhdGg6OmlzRmlyc3RBZnRlclBhZ2VCcmVhayBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6TGluZUl0ZXJhdG9yTW9kZXJuUGF0aDo6
dHJhdmVyc2VOZXh0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9y
OjpMaW5lSXRlcmF0b3JNb2Rlcm5QYXRoOjp0cmF2ZXJzZVByZXZpb3VzKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpMaW5lSXRlcmF0b3JNb2Rlcm5QYXRoOjpv
cGVyYXRvcj09IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJh
dG9yOjpMaW5lSXRlcmF0b3JNb2Rlcm5QYXRoOjphdEVuZCBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6TGluZUl0ZXJhdG9yTW9kZXJuUGF0aDo6Zmly
c3RMZWFmQm94IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJh
dG9yOjpMaW5lSXRlcmF0b3JNb2Rlcm5QYXRoOjpsYXN0TGVhZkJveCBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6TGluZUl0ZXJhdG9yTW9kZXJuUGF0
aDo6c2V0QXRFbmQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6
OkxpbmVJdGVyYXRvck1vZGVyblBhdGg6OmxpbmVzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpMaW5lSXRlcmF0b3JNb2Rlcm5QYXRoOjpsaW5lIGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBsYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0
b3JMb2dpY2FsT3JkZXJUcmF2ZXJzYWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRl
cmF0b3I6Om1ha2VMaW5lTG9naWNhbE9yZGVyQ2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5s
aW5lSXRlcmF0b3I6OnVwZGF0ZUxpbmVMb2dpY2FsT3JkZXJDYWNoZUlmTmVlZGVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpmaXJzdExlYWZPbkxpbmVJbkxvZ2ljYWxPcmRl
cik6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6bGFzdExlYWZPbkxpbmVJbkxv
Z2ljYWxPcmRlcik6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6Zmlyc3RMZWFm
T25MaW5lSW5Mb2dpY2FsT3JkZXJXaXRoTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJ
dGVyYXRvcjo6bGFzdExlYWZPbkxpbmVJbkxvZ2ljYWxPcmRlcldpdGhOb2RlKToKKyAgICAgICAg
KiBsYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JMb2dpY2FsT3JkZXJUcmF2ZXJzYWwu
aDoKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpsZWFmQm94ZXNJbkxvZ2ljYWxP
cmRlcik6CisgICAgICAgICogbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yVGV4dEJv
eC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6VGV4dEJveDo6c2VsZWN0
aW9uUmVjdCBjb25zdCk6CisgICAgICAgICogbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVn
cmF0aW9uTGluZUxheW91dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlv
bjo6TGluZUxheW91dDo6Zmlyc3RMaW5lQm94IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Okxh
eW91dEludGVncmF0aW9uOjpMaW5lTGF5b3V0OjpsYXN0TGluZUJveCBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6TGluZUxheW91dDo6Zmlyc3RMaW5lIGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpMaW5lTGF5
b3V0OjpsYXN0TGluZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogbGF5b3V0L2ludGVncmF0
aW9uL0xheW91dEludGVncmF0aW9uTGluZUxheW91dC5oOgorICAgICAgICAqIGxheW91dC9pbnRl
Z3JhdGlvbi9MaW5lU2VsZWN0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpMaW5lU2VsZWN0aW9u
Ojpsb2dpY2FsVG9wKToKKyAgICAgICAgKFdlYkNvcmU6OkxpbmVTZWxlY3Rpb246OmxvZ2ljYWxC
b3R0b20pOgorICAgICAgICAoV2ViQ29yZTo6TGluZVNlbGVjdGlvbjo6bG9naWNhbFJlY3QpOgor
ICAgICAgICAoV2ViQ29yZTo6TGluZVNlbGVjdGlvbjo6cGh5c2ljYWxSZWN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkxpbmVTZWxlY3Rpb246OmxvZ2ljYWxUb3BBZGp1c3RlZEZvclByZWNlZGluZ0Js
b2NrKToKKyAgICAgICAgKFdlYkNvcmU6OkxpbmVTZWxlY3Rpb246OnNlbGVjdGlvblN0YXRlKToK
KyAgICAgICAgKiByZW5kZXJpbmcvQ2FyZXRSZWN0Q29tcHV0YXRpb24uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Y29tcHV0ZUNhcmV0UmVjdEZvckxpbmVQb3NpdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpjb21wdXRlQ2FyZXRSZWN0Rm9yVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpjb21wdXRl
Q2FyZXRSZWN0Rm9yTGluZUJyZWFrKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbXB1dGVDYXJldFJl
Y3RGb3JCb3gpOgorICAgICAgICAqIHJlbmRlcmluZy9JbmxpbmVCb3hQYWludGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OklubGluZUJveFBhaW50ZXI6OklubGluZUJveFBhaW50ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5saW5lQm94UGFpbnRlcjo6cGFpbnRNYXNrKToKKyAgICAgICAgKFdl
YkNvcmU6OklubGluZUJveFBhaW50ZXI6OnBhaW50RGVjb3JhdGlvbnMpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5saW5lQm94UGFpbnRlcjo6c3R5bGUgY29uc3QpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9JbmxpbmVCb3hQYWludGVyLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxv
dy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6OmFkanVzdEVuY2xvc2lu
Z1RvcEZvclByZWNlZGluZ0Jsb2NrIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJs
b2NrRmxvdzo6aW5saW5lU2VsZWN0aW9uR2Fwcyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJC
bG9ja0Zsb3c6OmNvbnRhaW5zTm9uWmVyb0JpZGlMZXZlbCBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJCbG9ja0Zsb3c6OmZpbmRDbG9zZXN0VGV4dEF0QWJzb2x1dGVQb2ludCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6OnBvc2l0aW9uRm9yUG9pbnRXaXRoSW5s
aW5lQ2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2tGbG93OjphZGRGb2N1
c1JpbmdSZWN0c0ZvcklubGluZUNoaWxkcmVuKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJFbGVtZW50OjpnZXRMZWFkaW5n
Q29ybmVyIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlcklubGluZTo6cGFpbnRPdXRsaW5lKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyUmVw
bGFjZWQ6OnBvc2l0aW9uRm9yUG9pbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHQ6OnBvc2l0aW9uRm9yUG9pbnQpOgor
ICAgICAgICAqIHJlbmRlcmluZy9UZXh0Qm94UGFpbnRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpUZXh0Qm94UGFpbnRlcjo6VGV4dEJveFBhaW50ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGV4
dEJveFBhaW50ZXI6OnBhaW50QmFja2dyb3VuZCk6CisgICAgICAgIChXZWJDb3JlOjp0ZXh0UG9z
aXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEJveFBhaW50ZXI6OmNvbXB1dGVQYWludFJl
Y3QpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHUm9vdElubGluZUJveC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdSb290SW5saW5lQm94OjpyZW9yZGVyVmFsdWVMaXN0c1RvTG9naWNh
bE9yZGVyKToKKyAgICAgICAgKiBzdHlsZS9JbmxpbmVUZXh0Qm94U3R5bGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6bWluTG9naWNhbFRvcEZvclRleHREZWNvcmF0aW9uTGluZSk6CisgICAgICAg
IChXZWJDb3JlOjptYXhMb2dpY2FsQm90dG9tRm9yVGV4dERlY29yYXRpb25MaW5lKToKKyAgICAg
ICAgKFdlYkNvcmU6OmNvbXB1dGVVbmRlcmxpbmVPZmZzZXQpOgorCiAyMDIyLTAzLTE5ICBBbGFu
IEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbSUZDXVtJbnRlZ3JhdGlvbl0g
UmVtb3ZlIHJlZHVuZGFudCBJbmxpbmVJdGVyYXRvcjo6TGluZTo6Y29udGVudExvZ2ljYWxUb3BB
ZGp1c3RlZEZvckhpdFRlc3RpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA5MDgyMWViMjFmMTNjN2M5MDRlYmE3MzFiNjUyZWJi
NDdhZmM2MDQ2Li4zNDE5OTcxYjk0Y2NiODY5MjIxYmNlNmIwMjVjN2Y1MjkzZTJiYzNmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
KysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBA
IC01NDMwLDkgKzU0MzAsOSBAQAogCQlFNEM5MUEwRTE4MDIzNDMxMDBBMTdGNkQgLyogVGV4dFBh
aW50U3R5bGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEU0QzkxQTBEMTgwMjM0MzEwMEExN0Y2RCAvKiBUZXh0UGFpbnRTdHlsZS5oICovOyB9OwogCQlF
NEM5MUExNjE4MDk5OUYxMDBBMTdGNkQgLyogUmVuZGVyVGV4dExpbmVCb3hlcy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTRDOTFBMTUxODA5OTlGMTAw
QTE3RjZEIC8qIFJlbmRlclRleHRMaW5lQm94ZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFNEQzM0YzQjI1MkFFRUNEMDA4MzdEMDUgLyogSW5s
aW5lUnVuQW5kT2Zmc2V0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBFNEQzM0YzOTI1MkFFRUNDMDA4MzdEMDUgLyogSW5saW5lUnVuQW5kT2Zmc2V0Lmgg
Ki87IH07Ci0JCUU0RDMzRjQxMjUyQzRCODMwMDgzN0QwNSAvKiBJbmxpbmVJdGVyYXRvckxpbmUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0RDMzRjNG
MjUyQzRCODIwMDgzN0QwNSAvKiBJbmxpbmVJdGVyYXRvckxpbmUuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQlFNEQzM0Y0NDI1MkM1MEUyMDA4MzdE
MDUgLyogSW5saW5lSXRlcmF0b3JMaW5lTGVnYWN5UGF0aC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTREMzNGNDMyNTJDNTBFMjAwODM3RDA1IC8qIElu
bGluZUl0ZXJhdG9yTGluZUxlZ2FjeVBhdGguaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwotCQlFNEQzM0Y0NjI1MkM1MEZDMDA4MzdEMDUgLyogSW5saW5l
SXRlcmF0b3JMaW5lTW9kZXJuUGF0aC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRTREMzNGNDUyNTJDNTBGQjAwODM3RDA1IC8qIElubGluZUl0ZXJhdG9y
TGluZU1vZGVyblBhdGguaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQlFNEQzM0Y0MTI1MkM0QjgzMDA4MzdEMDUgLyogSW5saW5lSXRlcmF0b3JMaW5l
Qm94LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNEQz
M0YzRjI1MkM0QjgyMDA4MzdEMDUgLyogSW5saW5lSXRlcmF0b3JMaW5lQm94LmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTREMzNGNDQyNTJDNTBF
MjAwODM3RDA1IC8qIElubGluZUl0ZXJhdG9yTGluZUJveExlZ2FjeVBhdGguaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0RDMzRjQzMjUyQzUwRTIwMDgz
N0QwNSAvKiBJbmxpbmVJdGVyYXRvckxpbmVCb3hMZWdhY3lQYXRoLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTREMzNGNDYyNTJDNTBGQzAwODM3
RDA1IC8qIElubGluZUl0ZXJhdG9yTGluZUJveE1vZGVyblBhdGguaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0RDMzRjQ1MjUyQzUwRkIwMDgzN0QwNSAv
KiBJbmxpbmVJdGVyYXRvckxpbmVCb3hNb2Rlcm5QYXRoLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTRENThFQjUxN0I0REJEQzAwQ0JEQ0E4IC8q
IFN0eWxlUmVzb2x2ZUZvckRvY3VtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBFNEQ1OEVCMzE3QjREQkRDMDBDQkRDQTggLyogU3R5bGVSZXNvbHZl
Rm9yRG9jdW1lbnQuaCAqLzsgfTsKIAkJRTRENThFQjkxN0I0RUQ4OTAwQ0JEQ0E4IC8qIFN0eWxl
Rm9udFNpemVGdW5jdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEU0RDU4RUI3MTdCNEVEODkwMENCRENBOCAvKiBTdHlsZUZvbnRTaXplRnVuY3Rp
b25zLmggKi87IH07CiAJCUU0RDU4RUJCMTdCOEYxMjgwMENCRENBOCAvKiBFbGVtZW50VHJhdmVy
c2FsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNEQ1
OEVCQTE3QjhGMTI4MDBDQkRDQTggLyogRWxlbWVudFRyYXZlcnNhbC5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xNzYxMywxMCArMTc2MTMsMTAg
QEAKIAkJRTRDOTFBMTUxODA5OTlGMTAwQTE3RjZEIC8qIFJlbmRlclRleHRMaW5lQm94ZXMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVyVGV4dExpbmVCb3hlcy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNEM5MUExNzE4MDk5OUZCMDBBMTdGNkQgLyog
UmVuZGVyVGV4dExpbmVCb3hlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBSZW5kZXJUZXh0TGluZUJveGVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRTREMzNGMzkyNTJBRUVDQzAwODM3RDA1IC8qIElubGluZVJ1bkFuZE9mZnNldC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbmxpbmVSdW5BbmRPZmZzZXQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRTREMzNGM0YyNTJDNEI4MjAwODM3RDA1IC8qIElubGlu
ZUl0ZXJhdG9yTGluZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbmxpbmVJ
dGVyYXRvckxpbmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTREMzNGM0YyNTJD
NEI4MjAwODM3RDA1IC8qIElubGluZUl0ZXJhdG9yTGluZUJveC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBJbmxpbmVJdGVyYXRvckxpbmVCb3guaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRTREMzNGNDIyNTJDNTBBODAwODM3RDA1IC8qIElubGluZUl0ZXJhdG9y
TGluZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbmxpbmVJdGVyYXRvckxpbmUuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlFNEQzM0Y0MzI1MkM1MEUyMDA4MzdEMDUgLyogSW5s
aW5lSXRlcmF0b3JMaW5lTGVnYWN5UGF0aC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBJbmxpbmVJdGVyYXRvckxpbmVMZWdhY3lQYXRoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCUU0RDMzRjQ1MjUyQzUwRkIwMDgzN0QwNSAvKiBJbmxpbmVJdGVyYXRvckxpbmVN
b2Rlcm5QYXRoLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElubGluZUl0ZXJh
dG9yTGluZU1vZGVyblBhdGguaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTREMzNG
NDMyNTJDNTBFMjAwODM3RDA1IC8qIElubGluZUl0ZXJhdG9yTGluZUJveExlZ2FjeVBhdGguaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5saW5lSXRlcmF0b3JMaW5lQm94TGVn
YWN5UGF0aC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFNEQzM0Y0NTI1MkM1MEZC
MDA4MzdEMDUgLyogSW5saW5lSXRlcmF0b3JMaW5lQm94TW9kZXJuUGF0aC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBJbmxpbmVJdGVyYXRvckxpbmVCb3hNb2Rlcm5QYXRoLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0RDU4RUIyMTdCNERCREMwMENCRENBOCAv
KiBTdHlsZVJlc29sdmVGb3JEb2N1bWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBTdHlsZVJlc29sdmVGb3JEb2N1bWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUU0RDU4RUIzMTdCNERCREMwMENCRENBOCAvKiBTdHlsZVJlc29sdmVGb3JE
b2N1bWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdHlsZVJlc29sdmVG
b3JEb2N1bWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNEQ1OEVCNjE3QjRF
RDg5MDBDQkRDQTggLyogU3R5bGVGb250U2l6ZUZ1bmN0aW9ucy5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdHlsZUZvbnRTaXplRnVuY3Rpb25zLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTMxNTI2LDkgKzMxNTI2LDkgQEAKIAkJCQlFNDE1RUIx
NDI3MEMzNTM3MDBFOERBMUIgLyogSW5saW5lSXRlcmF0b3JJbmxpbmVCb3guY3BwICovLAogCQkJ
CUU0MTVFQjExMjcwQzM1MTIwMEU4REExQiAvKiBJbmxpbmVJdGVyYXRvcklubGluZUJveC5oICov
LAogCQkJCUU0RDMzRjQyMjUyQzUwQTgwMDgzN0QwNSAvKiBJbmxpbmVJdGVyYXRvckxpbmUuY3Bw
ICovLAotCQkJCUU0RDMzRjNGMjUyQzRCODIwMDgzN0QwNSAvKiBJbmxpbmVJdGVyYXRvckxpbmUu
aCAqLywKLQkJCQlFNEQzM0Y0MzI1MkM1MEUyMDA4MzdEMDUgLyogSW5saW5lSXRlcmF0b3JMaW5l
TGVnYWN5UGF0aC5oICovLAotCQkJCUU0RDMzRjQ1MjUyQzUwRkIwMDgzN0QwNSAvKiBJbmxpbmVJ
dGVyYXRvckxpbmVNb2Rlcm5QYXRoLmggKi8sCisJCQkJRTREMzNGM0YyNTJDNEI4MjAwODM3RDA1
IC8qIElubGluZUl0ZXJhdG9yTGluZUJveC5oICovLAorCQkJCUU0RDMzRjQzMjUyQzUwRTIwMDgz
N0QwNSAvKiBJbmxpbmVJdGVyYXRvckxpbmVCb3hMZWdhY3lQYXRoLmggKi8sCisJCQkJRTREMzNG
NDUyNTJDNTBGQjAwODM3RDA1IC8qIElubGluZUl0ZXJhdG9yTGluZUJveE1vZGVyblBhdGguaCAq
LywKIAkJCQlFNDFBQ0MxMjI3MTczM0YzMDAzRTkxNTcgLyogSW5saW5lSXRlcmF0b3JMb2dpY2Fs
T3JkZXJUcmF2ZXJzYWwuY3BwICovLAogCQkJCUU0MUFDQzE1MjcxNzM0MDIwMDNFOTE1NyAvKiBJ
bmxpbmVJdGVyYXRvckxvZ2ljYWxPcmRlclRyYXZlcnNhbC5oICovLAogCQkJCUU0N0NFQkRFMjcw
OTkxNjQwMEI4RDhGNSAvKiBJbmxpbmVJdGVyYXRvclRleHRCb3guY3BwICovLApAQCAtMzUxMjIs
OSArMzUxMjIsOSBAQAogCQkJCUU0QTY2NENGMjUyMUQ0RTIwMDcwODFEQyAvKiBJbmxpbmVJdGVy
YXRvckJveExlZ2FjeVBhdGguaCBpbiBIZWFkZXJzICovLAogCQkJCUU0QTY2NENFMjUyMUQ0Qzkw
MDcwODFEQyAvKiBJbmxpbmVJdGVyYXRvckJveE1vZGVyblBhdGguaCBpbiBIZWFkZXJzICovLAog
CQkJCUU0MTVFQjEzMjcwQzM1MTMwMEU4REExQiAvKiBJbmxpbmVJdGVyYXRvcklubGluZUJveC5o
IGluIEhlYWRlcnMgKi8sCi0JCQkJRTREMzNGNDEyNTJDNEI4MzAwODM3RDA1IC8qIElubGluZUl0
ZXJhdG9yTGluZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJRTREMzNGNDQyNTJDNTBFMjAwODM3RDA1
IC8qIElubGluZUl0ZXJhdG9yTGluZUxlZ2FjeVBhdGguaCBpbiBIZWFkZXJzICovLAotCQkJCUU0
RDMzRjQ2MjUyQzUwRkMwMDgzN0QwNSAvKiBJbmxpbmVJdGVyYXRvckxpbmVNb2Rlcm5QYXRoLmgg
aW4gSGVhZGVycyAqLywKKwkJCQlFNEQzM0Y0MTI1MkM0QjgzMDA4MzdEMDUgLyogSW5saW5lSXRl
cmF0b3JMaW5lQm94LmggaW4gSGVhZGVycyAqLywKKwkJCQlFNEQzM0Y0NDI1MkM1MEUyMDA4MzdE
MDUgLyogSW5saW5lSXRlcmF0b3JMaW5lQm94TGVnYWN5UGF0aC5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJRTREMzNGNDYyNTJDNTBGQzAwODM3RDA1IC8qIElubGluZUl0ZXJhdG9yTGluZUJveE1vZGVy
blBhdGguaCBpbiBIZWFkZXJzICovLAogCQkJCUU0MUFDQzE2MjcxNzM0MDIwMDNFOTE1NyAvKiBJ
bmxpbmVJdGVyYXRvckxvZ2ljYWxPcmRlclRyYXZlcnNhbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
RTQ3Q0VCRTEyNzA5OTE2RDAwQjhEOEY1IC8qIElubGluZUl0ZXJhdG9yVGV4dEJveC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNkZBQUU3MTMyNkEyODE0QjAwRTA3NTAyIC8qIElubGluZUxldmVsQm94
LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlv
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uY3BwCmluZGV4IDFkMjA4NjczZjA3
MWZmNmE4YmJmMDViZjI0ZjI5ZDAyZDU0NmM2ZDguLjA0NzdhNTg0YjQ1N2QxYTczNDdiZDcwMWRm
NDBmYTE5ZWM1YmVlZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmNwcApAQCAtMzYsNyArMzYsNyBA
QAogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkhUTUxQYXJzZXJJZGlvbXMuaCIK
ICNpbmNsdWRlICJIVE1MVGFibGVFbGVtZW50LmgiCi0jaW5jbHVkZSAiSW5saW5lSXRlcmF0b3JM
aW5lLmgiCisjaW5jbHVkZSAiSW5saW5lSXRlcmF0b3JMaW5lQm94LmgiCiAjaW5jbHVkZSAiSW5s
aW5lSXRlcmF0b3JMb2dpY2FsT3JkZXJUcmF2ZXJzYWwuaCIKICNpbmNsdWRlICJJbmxpbmVJdGVy
YXRvclRleHRCb3guaCIKICNpbmNsdWRlICJJbmxpbmVSdW5BbmRPZmZzZXQuaCIKQEAgLTc2MCw3
ICs3NjAsNyBAQCBQb3NpdGlvbiBQb3NpdGlvbjo6dXBzdHJlYW0oRWRpdGluZ0JvdW5kYXJ5Q3Jv
c3NpbmdSdWxlIHJ1bGUpIGNvbnN0CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjdXJyZW50
UG9zaXRpb247CiAKICAgICAgICAgICAgICAgICBhdXRvIG5leHRCb3ggPSBJbmxpbmVJdGVyYXRv
cjo6bmV4dFRleHRCb3hJbkxvZ2ljYWxPcmRlcihib3gsIG9yZGVyQ2FjaGUpOwotICAgICAgICAg
ICAgICAgIGlmICh0ZXh0T2Zmc2V0ID09IGJveC0+ZW5kKCkgKyAxICYmIG5leHRCb3ggJiYgYm94
LT5saW5lKCkgIT0gbmV4dEJveC0+bGluZSgpKQorICAgICAgICAgICAgICAgIGlmICh0ZXh0T2Zm
c2V0ID09IGJveC0+ZW5kKCkgKyAxICYmIG5leHRCb3ggJiYgYm94LT5saW5lQm94KCkgIT0gbmV4
dEJveC0+bGluZUJveCgpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gY3VycmVudFBvc2l0
aW9uOwogCiAgICAgICAgICAgICAgICAgYm94ID0gbmV4dEJveDsKQEAgLTg2Niw3ICs4NjYsNyBA
QCBQb3NpdGlvbiBQb3NpdGlvbjo6ZG93bnN0cmVhbShFZGl0aW5nQm91bmRhcnlDcm9zc2luZ1J1
bGUgcnVsZSkgY29uc3QKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGN1cnJlbnRQb3NpdGlv
bjsKIAogICAgICAgICAgICAgICAgIGF1dG8gbmV4dEJveCA9IElubGluZUl0ZXJhdG9yOjpuZXh0
VGV4dEJveEluTG9naWNhbE9yZGVyKGJveCwgb3JkZXJDYWNoZSk7Ci0gICAgICAgICAgICAgICAg
aWYgKHRleHRPZmZzZXQgPT0gYm94LT5lbmQoKSAmJiBuZXh0Qm94ICYmIGJveC0+bGluZSgpICE9
IG5leHRCb3gtPmxpbmUoKSkKKyAgICAgICAgICAgICAgICBpZiAodGV4dE9mZnNldCA9PSBib3gt
PmVuZCgpICYmIG5leHRCb3ggJiYgYm94LT5saW5lQm94KCkgIT0gbmV4dEJveC0+bGluZUJveCgp
KQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gY3VycmVudFBvc2l0aW9uOwogCiAgICAgICAg
ICAgICAgICAgYm94ID0gbmV4dEJveDsKQEAgLTEwOTUsNyArMTA5NSw3IEBAIGJvb2wgUG9zaXRp
b246OnJlbmRlcnNJbkRpZmZlcmVudFBvc2l0aW9uKGNvbnN0IFBvc2l0aW9uJiBwb3NpdGlvbikg
Y29uc3QKICAgICBpZiAoIWJveDEgfHwgIWJveDIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAot
ICAgIGlmIChib3gxLT5saW5lKCkgIT0gYm94Mi0+bGluZSgpKQorICAgIGlmIChib3gxLT5saW5l
Qm94KCkgIT0gYm94Mi0+bGluZUJveCgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIGlm
IChuZXh0UmVuZGVyZWRFZGl0YWJsZShkZXByZWNhdGVkTm9kZSgpKSA9PSBwb3NpdGlvbi5kZXBy
ZWNhdGVkTm9kZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlbmRlcmVk
UG9zaXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVuZGVyZWRQb3NpdGlvbi5oCmlu
ZGV4IDU1NzFhNDczMmIwYTM3MjJmZmFmNThlNzM3NDc3NDQ1NDUyZmI0ZGUuLmQzNmU3ODgyODgz
ZDY2OGNjMGNiNDc4YTY0M2NjNDk2NTIzMGM1NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvUmVuZGVyZWRQb3NpdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
UmVuZGVyZWRQb3NpdGlvbi5oCkBAIC0zMiw3ICszMiw3IEBACiAKICNpbmNsdWRlICJDYXJldFJl
Y3RDb21wdXRhdGlvbi5oIgogI2luY2x1ZGUgIklubGluZUl0ZXJhdG9yQm94LmgiCi0jaW5jbHVk
ZSAiSW5saW5lSXRlcmF0b3JMaW5lLmgiCisjaW5jbHVkZSAiSW5saW5lSXRlcmF0b3JMaW5lQm94
LmgiCiAjaW5jbHVkZSAiVGV4dEFmZmluaXR5LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAg
LTUwLDcgKzUwLDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNFcXVpdmFsZW50KGNvbnN0IFJlbmRl
cmVkUG9zaXRpb24mKSBjb25zdDsKIAogICAgIGJvb2wgaXNOdWxsKCkgY29uc3QgeyByZXR1cm4g
IW1fcmVuZGVyZXI7IH0KLSAgICBJbmxpbmVJdGVyYXRvcjo6TGluZUl0ZXJhdG9yIGxpbmUoKSBj
b25zdCB7IHJldHVybiBtX2JveCA/IG1fYm94LT5saW5lKCkgOiBJbmxpbmVJdGVyYXRvcjo6TGlu
ZUl0ZXJhdG9yKCk7IH0KKyAgICBJbmxpbmVJdGVyYXRvcjo6TGluZUJveEl0ZXJhdG9yIGxpbmVC
b3goKSBjb25zdCB7IHJldHVybiBtX2JveCA/IG1fYm94LT5saW5lQm94KCkgOiBJbmxpbmVJdGVy
YXRvcjo6TGluZUJveEl0ZXJhdG9yKCk7IH0KIAogICAgIHVuc2lnbmVkIGNoYXIgYmlkaUxldmVs
T25MZWZ0KCkgY29uc3Q7CiAgICAgdW5zaWduZWQgY2hhciBiaWRpTGV2ZWxPblJpZ2h0KCkgY29u
c3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVQb3NpdGlvbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVQb3NpdGlvbi5jcHAKaW5kZXggMjYx
ODE0MjExNjFhMDQ5YjY1NGE4ZGUzYjY3NGFjOTM0NmViNDM3Mi4uMWY5NmJhMmZmM2E1MzNhYzk1
Nzg5MzQzNjRiMzM1YjJkZmU1MDIzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9WaXNpYmxlUG9zaXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJs
ZVBvc2l0aW9uLmNwcApAQCAtMzYsNyArMzYsNyBAQAogI2luY2x1ZGUgIkhUTUxIdG1sRWxlbWVu
dC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIklubGluZUl0ZXJhdG9yQm94
LmgiCi0jaW5jbHVkZSAiSW5saW5lSXRlcmF0b3JMaW5lLmgiCisjaW5jbHVkZSAiSW5saW5lSXRl
cmF0b3JMaW5lQm94LmgiCiAjaW5jbHVkZSAiSW5saW5lUnVuQW5kT2Zmc2V0LmgiCiAjaW5jbHVk
ZSAiTGluZVNlbGVjdGlvbi5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKQEAgLTE2MCw3ICsxNjAs
NyBAQCBQb3NpdGlvbiBWaXNpYmxlUG9zaXRpb246OmxlZnRWaXN1YWxseURpc3RpbmN0Q2FuZGlk
YXRlKCkgY29uc3QKICAgICAgICAgICAgICAgICBpZiAoIXByZXZpb3VzQm94KSB7CiAgICAgICAg
ICAgICAgICAgICAgIFBvc2l0aW9uIHBvc2l0aW9uT25MZWZ0ID0gcHJpbWFyeURpcmVjdGlvbiA9
PSBUZXh0RGlyZWN0aW9uOjpMVFIgPyBwcmV2aW91c1Zpc3VhbGx5RGlzdGluY3RDYW5kaWRhdGUo
bV9kZWVwUG9zaXRpb24pIDogbmV4dFZpc3VhbGx5RGlzdGluY3RDYW5kaWRhdGUobV9kZWVwUG9z
aXRpb24pOwogICAgICAgICAgICAgICAgICAgICBhdXRvIGJveE9uTGVmdCA9IHBvc2l0aW9uT25M
ZWZ0LmlubGluZUJveEFuZE9mZnNldChtX2FmZmluaXR5LCBwcmltYXJ5RGlyZWN0aW9uKS5ib3g7
Ci0gICAgICAgICAgICAgICAgICAgIGlmIChib3hPbkxlZnQgJiYgYm94T25MZWZ0LT5saW5lKCkg
PT0gYm94LT5saW5lKCkpCisgICAgICAgICAgICAgICAgICAgIGlmIChib3hPbkxlZnQgJiYgYm94
T25MZWZ0LT5saW5lQm94KCkgPT0gYm94LT5saW5lQm94KCkpCiAgICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gUG9zaXRpb24oKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHBvc2l0
aW9uT25MZWZ0OwogICAgICAgICAgICAgICAgIH0KQEAgLTE3OCw4ICsxNzgsOCBAQCBQb3NpdGlv
biBWaXNpYmxlUG9zaXRpb246OmxlZnRWaXN1YWxseURpc3RpbmN0Q2FuZGlkYXRlKCkgY29uc3QK
ICAgICAgICAgICAgIGlmIChib3gtPmRpcmVjdGlvbigpID09IHByaW1hcnlEaXJlY3Rpb24pIHsK
ICAgICAgICAgICAgICAgICBpZiAoIXByZXZpb3VzQm94KSB7CiAgICAgICAgICAgICAgICAgICAg
IGF1dG8gbG9naWNhbFN0YXJ0ID0gcHJpbWFyeURpcmVjdGlvbiA9PSBUZXh0RGlyZWN0aW9uOjpM
VFIKLSAgICAgICAgICAgICAgICAgICAgICAgID8gSW5saW5lSXRlcmF0b3I6OmZpcnN0TGVhZk9u
TGluZUluTG9naWNhbE9yZGVyV2l0aE5vZGUoYm94LT5saW5lKCksIG9yZGVyQ2FjaGUpCi0gICAg
ICAgICAgICAgICAgICAgICAgICA6IElubGluZUl0ZXJhdG9yOjpsYXN0TGVhZk9uTGluZUluTG9n
aWNhbE9yZGVyV2l0aE5vZGUoYm94LT5saW5lKCksIG9yZGVyQ2FjaGUpOworICAgICAgICAgICAg
ICAgICAgICAgICAgPyBJbmxpbmVJdGVyYXRvcjo6Zmlyc3RMZWFmT25MaW5lSW5Mb2dpY2FsT3Jk
ZXJXaXRoTm9kZShib3gtPmxpbmVCb3goKSwgb3JkZXJDYWNoZSkKKyAgICAgICAgICAgICAgICAg
ICAgICAgIDogSW5saW5lSXRlcmF0b3I6Omxhc3RMZWFmT25MaW5lSW5Mb2dpY2FsT3JkZXJXaXRo
Tm9kZShib3gtPmxpbmVCb3goKSwgb3JkZXJDYWNoZSk7CiAgICAgICAgICAgICAgICAgICAgIGlm
IChsb2dpY2FsU3RhcnQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGJveCA9IGxvZ2ljYWxT
dGFydDsKICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlcmVyID0gJmJveC0+cmVuZGVyZXIo
KTsKQEAgLTMyNiw3ICszMjYsNyBAQCBQb3NpdGlvbiBWaXNpYmxlUG9zaXRpb246OnJpZ2h0Vmlz
dWFsbHlEaXN0aW5jdENhbmRpZGF0ZSgpIGNvbnN0CiAgICAgICAgICAgICAgICAgaWYgKCFuZXh0
Qm94KSB7CiAgICAgICAgICAgICAgICAgICAgIFBvc2l0aW9uIHBvc2l0aW9uT25SaWdodCA9IHBy
aW1hcnlEaXJlY3Rpb24gPT0gVGV4dERpcmVjdGlvbjo6TFRSID8gbmV4dFZpc3VhbGx5RGlzdGlu
Y3RDYW5kaWRhdGUobV9kZWVwUG9zaXRpb24pIDogcHJldmlvdXNWaXN1YWxseURpc3RpbmN0Q2Fu
ZGlkYXRlKG1fZGVlcFBvc2l0aW9uKTsKICAgICAgICAgICAgICAgICAgICAgYXV0byBib3hPblJp
Z2h0ID0gcG9zaXRpb25PblJpZ2h0LmlubGluZUJveEFuZE9mZnNldChtX2FmZmluaXR5LCBwcmlt
YXJ5RGlyZWN0aW9uKS5ib3g7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChib3hPblJpZ2h0ICYm
IGJveE9uUmlnaHQtPmxpbmUoKSA9PSBib3gtPmxpbmUoKSkKKyAgICAgICAgICAgICAgICAgICAg
aWYgKGJveE9uUmlnaHQgJiYgYm94T25SaWdodC0+bGluZUJveCgpID09IGJveC0+bGluZUJveCgp
KQogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFBvc2l0aW9uKCk7CiAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBwb3NpdGlvbk9uUmlnaHQ7CiAgICAgICAgICAgICAgICAgfQpAQCAt
MzQ0LDggKzM0NCw4IEBAIFBvc2l0aW9uIFZpc2libGVQb3NpdGlvbjo6cmlnaHRWaXN1YWxseURp
c3RpbmN0Q2FuZGlkYXRlKCkgY29uc3QKICAgICAgICAgICAgIGlmIChib3gtPmRpcmVjdGlvbigp
ID09IHByaW1hcnlEaXJlY3Rpb24pIHsKICAgICAgICAgICAgICAgICBpZiAoIW5leHRCb3gpIHsK
ICAgICAgICAgICAgICAgICAgICAgYXV0byBsb2dpY2FsRW5kID0gcHJpbWFyeURpcmVjdGlvbiA9
PSBUZXh0RGlyZWN0aW9uOjpMVFIKLSAgICAgICAgICAgICAgICAgICAgICAgID8gSW5saW5lSXRl
cmF0b3I6Omxhc3RMZWFmT25MaW5lSW5Mb2dpY2FsT3JkZXJXaXRoTm9kZShib3gtPmxpbmUoKSwg
b3JkZXJDYWNoZSkKLSAgICAgICAgICAgICAgICAgICAgICAgIDogSW5saW5lSXRlcmF0b3I6OmZp
cnN0TGVhZk9uTGluZUluTG9naWNhbE9yZGVyV2l0aE5vZGUoYm94LT5saW5lKCksIG9yZGVyQ2Fj
aGUpOworICAgICAgICAgICAgICAgICAgICAgICAgPyBJbmxpbmVJdGVyYXRvcjo6bGFzdExlYWZP
bkxpbmVJbkxvZ2ljYWxPcmRlcldpdGhOb2RlKGJveC0+bGluZUJveCgpLCBvcmRlckNhY2hlKQor
ICAgICAgICAgICAgICAgICAgICAgICAgOiBJbmxpbmVJdGVyYXRvcjo6Zmlyc3RMZWFmT25MaW5l
SW5Mb2dpY2FsT3JkZXJXaXRoTm9kZShib3gtPmxpbmVCb3goKSwgb3JkZXJDYWNoZSk7CiAKICAg
ICAgICAgICAgICAgICAgICAgaWYgKGxvZ2ljYWxFbmQpIHsKICAgICAgICAgICAgICAgICAgICAg
ICAgIGJveCA9IGxvZ2ljYWxFbmQ7CkBAIC02NjksNyArNjY5LDcgQEAgRmxvYXRSZWN0IFZpc2li
bGVQb3NpdGlvbjo6YWJzb2x1dGVTZWxlY3Rpb25Cb3VuZHNGb3JMaW5lKCkgY29uc3QKICAgICBp
ZiAoIWJveCkKICAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgIGF1dG8gbGluZSA9IGJveC0+bGlu
ZSgpOworICAgIGF1dG8gbGluZSA9IGJveC0+bGluZUJveCgpOwogICAgIHJldHVybiBsaW5lLT5j
b250YWluaW5nQmxvY2soKS5sb2NhbFRvQWJzb2x1dGVRdWFkKEZsb2F0UmVjdCB7IExpbmVTZWxl
Y3Rpb246OnBoeXNpY2FsUmVjdCgqbGluZSkgfSkuYm91bmRpbmdCb3goKTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlVW5pdHMuY3BwIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9WaXNpYmxlVW5pdHMuY3BwCmluZGV4IDRmNTFmYjUyODNjMzA5YzlmN2E0
ZDlmNGMyZjRmNWNjMzdkNTczMGEuLjQ1MThhZDQzOTMxYzg1MjViOGVmZjIwYzQwOWJkMjYzYzgw
NzJlZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVVuaXRzLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVVbml0cy5jcHAKQEAgLTMyLDcg
KzMyLDcgQEAKICNpbmNsdWRlICJIVE1MRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5o
IgogI2luY2x1ZGUgIklubGluZUl0ZXJhdG9yQm94LmgiCi0jaW5jbHVkZSAiSW5saW5lSXRlcmF0
b3JMaW5lLmgiCisjaW5jbHVkZSAiSW5saW5lSXRlcmF0b3JMaW5lQm94LmgiCiAjaW5jbHVkZSAi
SW5saW5lSXRlcmF0b3JMb2dpY2FsT3JkZXJUcmF2ZXJzYWwuaCIKICNpbmNsdWRlICJJbmxpbmVS
dW5BbmRPZmZzZXQuaCIKICNpbmNsdWRlICJOb2RlVHJhdmVyc2FsLmgiCkBAIC0xNTAsMTcgKzE1
MCwxNyBAQCBzdGF0aWMgSW5saW5lSXRlcmF0b3I6OkxlYWZCb3hJdGVyYXRvciBuZXh0VGV4dE9y
TGluZUJyZWFrQm94KElubGluZUl0ZXJhdG9yOjpMZQogICAgIHJldHVybiB7IH07CiB9CiAKLXN0
YXRpYyBJbmxpbmVJdGVyYXRvcjo6TGVhZkJveEl0ZXJhdG9yIHN0YXJ0VGV4dE9yTGluZUJyZWFr
Qm94KElubGluZUl0ZXJhdG9yOjpMaW5lSXRlcmF0b3IgbGluZSwgSW5saW5lSXRlcmF0b3I6Okxp
bmVMb2dpY2FsT3JkZXJDYWNoZSYgb3JkZXJDYWNoZSkKK3N0YXRpYyBJbmxpbmVJdGVyYXRvcjo6
TGVhZkJveEl0ZXJhdG9yIHN0YXJ0VGV4dE9yTGluZUJyZWFrQm94KElubGluZUl0ZXJhdG9yOjpM
aW5lQm94SXRlcmF0b3IgbGluZUJveCwgSW5saW5lSXRlcmF0b3I6OkxpbmVMb2dpY2FsT3JkZXJD
YWNoZSYgb3JkZXJDYWNoZSkKIHsKLSAgICBhdXRvIGJveCA9IElubGluZUl0ZXJhdG9yOjpmaXJz
dExlYWZPbkxpbmVJbkxvZ2ljYWxPcmRlcihsaW5lLCBvcmRlckNhY2hlKTsKKyAgICBhdXRvIGJv
eCA9IElubGluZUl0ZXJhdG9yOjpmaXJzdExlYWZPbkxpbmVJbkxvZ2ljYWxPcmRlcihsaW5lQm94
LCBvcmRlckNhY2hlKTsKICAgICBpZiAoaXNUZXh0T3JMaW5lQnJlYWtCb3goYm94KSkKICAgICAg
ICAgcmV0dXJuIGJveDsKICAgICByZXR1cm4gbmV4dFRleHRPckxpbmVCcmVha0JveChib3gsIG9y
ZGVyQ2FjaGUpOwogfQogCi1zdGF0aWMgSW5saW5lSXRlcmF0b3I6OkxlYWZCb3hJdGVyYXRvciBl
bmRUZXh0T3JMaW5lQnJlYWtCb3goSW5saW5lSXRlcmF0b3I6OkxpbmVJdGVyYXRvciBsaW5lLCBJ
bmxpbmVJdGVyYXRvcjo6TGluZUxvZ2ljYWxPcmRlckNhY2hlJiBvcmRlckNhY2hlKQorc3RhdGlj
IElubGluZUl0ZXJhdG9yOjpMZWFmQm94SXRlcmF0b3IgZW5kVGV4dE9yTGluZUJyZWFrQm94KElu
bGluZUl0ZXJhdG9yOjpMaW5lQm94SXRlcmF0b3IgbGluZUJveCwgSW5saW5lSXRlcmF0b3I6Okxp
bmVMb2dpY2FsT3JkZXJDYWNoZSYgb3JkZXJDYWNoZSkKIHsKLSAgICBhdXRvIGJveCA9IElubGlu
ZUl0ZXJhdG9yOjpsYXN0TGVhZk9uTGluZUluTG9naWNhbE9yZGVyKGxpbmUsIG9yZGVyQ2FjaGUp
OworICAgIGF1dG8gYm94ID0gSW5saW5lSXRlcmF0b3I6Omxhc3RMZWFmT25MaW5lSW5Mb2dpY2Fs
T3JkZXIobGluZUJveCwgb3JkZXJDYWNoZSk7CiAgICAgaWYgKGlzVGV4dE9yTGluZUJyZWFrQm94
KGJveCkpCiAgICAgICAgIHJldHVybiBib3g7CiAgICAgcmV0dXJuIHByZXZpb3VzVGV4dE9yTGlu
ZUJyZWFrQm94KGJveCwgb3JkZXJDYWNoZSk7CkBAIC0xNzEsOSArMTcxLDkgQEAgc3RhdGljIGNv
bnN0IElubGluZUl0ZXJhdG9yOjpMZWFmQm94SXRlcmF0b3IgbG9naWNhbGx5UHJldmlvdXNCb3go
Y29uc3QgVmlzaWJsZVAKICAgICBpZiAoYXV0byBwcmV2aW91c0JveCA9IHByZXZpb3VzVGV4dE9y
TGluZUJyZWFrQm94KHN0YXJ0Qm94LCBvcmRlckNhY2hlKSkKICAgICAgICAgcmV0dXJuIHByZXZp
b3VzQm94OwogCi0gICAgaWYgKGF1dG8gcHJldmlvdXNMaW5lID0gc3RhcnRCb3gtPmxpbmUoKS0+
cHJldmlvdXMoKSkgeworICAgIGlmIChhdXRvIHByZXZpb3VzTGluZUJveCA9IHN0YXJ0Qm94LT5s
aW5lQm94KCktPnByZXZpb3VzKCkpIHsKICAgICAgICAgLy8gRklYTUU6IFdoeSBpc24ndCBwcmV2
aW91c0JveEluRGlmZmVyZW50TGluZSBzZXQgaGVyZT8KLSAgICAgICAgaWYgKGF1dG8gcHJldmlv
dXNCb3ggPSBlbmRUZXh0T3JMaW5lQnJlYWtCb3gocHJldmlvdXNMaW5lLCBvcmRlckNhY2hlKSkK
KyAgICAgICAgaWYgKGF1dG8gcHJldmlvdXNCb3ggPSBlbmRUZXh0T3JMaW5lQnJlYWtCb3gocHJl
dmlvdXNMaW5lQm94LCBvcmRlckNhY2hlKSkKICAgICAgICAgICAgIHJldHVybiBwcmV2aW91c0Jv
eDsKICAgICB9CiAKQEAgLTE4NywxOCArMTg3LDE4IEBAIHN0YXRpYyBjb25zdCBJbmxpbmVJdGVy
YXRvcjo6TGVhZkJveEl0ZXJhdG9yIGxvZ2ljYWxseVByZXZpb3VzQm94KGNvbnN0IFZpc2libGVQ
CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBSZW5kZXJlZFBvc2l0aW9uIHJlbmRlcmVk
UG9zaXRpb24ocG9zaXRpb24sIEFmZmluaXR5OjpEb3duc3RyZWFtKTsKLSAgICAgICAgYXV0byBw
cmV2aW91c0xpbmUgPSByZW5kZXJlZFBvc2l0aW9uLmxpbmUoKTsKLSAgICAgICAgaWYgKCFwcmV2
aW91c0xpbmUpCisgICAgICAgIGF1dG8gcHJldmlvdXNMaW5lQm94ID0gcmVuZGVyZWRQb3NpdGlv
bi5saW5lQm94KCk7CisgICAgICAgIGlmICghcHJldmlvdXNMaW5lQm94KQogICAgICAgICAgICAg
YnJlYWs7CiAKLSAgICAgICAgaWYgKHByZXZpb3VzTGluZSAhPSBzdGFydEJveC0+bGluZSgpKSB7
Ci0gICAgICAgICAgICBpZiAoYXV0byBwcmV2aW91c0JveCA9IGVuZFRleHRPckxpbmVCcmVha0Jv
eChwcmV2aW91c0xpbmUsIG9yZGVyQ2FjaGUpKSB7CisgICAgICAgIGlmIChwcmV2aW91c0xpbmVC
b3ggIT0gc3RhcnRCb3gtPmxpbmVCb3goKSkgeworICAgICAgICAgICAgaWYgKGF1dG8gcHJldmlv
dXNCb3ggPSBlbmRUZXh0T3JMaW5lQnJlYWtCb3gocHJldmlvdXNMaW5lQm94LCBvcmRlckNhY2hl
KSkgewogICAgICAgICAgICAgICAgIHByZXZpb3VzQm94SW5EaWZmZXJlbnRMaW5lID0gdHJ1ZTsK
ICAgICAgICAgICAgICAgICByZXR1cm4gcHJldmlvdXNCb3g7CiAgICAgICAgICAgICB9CiAgICAg
ICAgIH0KIAotICAgICAgICBzdGFydEJveCA9IElubGluZUl0ZXJhdG9yOjpmaXJzdExlYWZPbkxp
bmVJbkxvZ2ljYWxPcmRlcihwcmV2aW91c0xpbmUsIG9yZGVyQ2FjaGUpOworICAgICAgICBzdGFy
dEJveCA9IElubGluZUl0ZXJhdG9yOjpmaXJzdExlYWZPbkxpbmVJbkxvZ2ljYWxPcmRlcihwcmV2
aW91c0xpbmVCb3gsIG9yZGVyQ2FjaGUpOwogICAgIH0KICAgICByZXR1cm4geyB9OwogfQpAQCAt
MjA5LDkgKzIwOSw5IEBAIHN0YXRpYyBjb25zdCBJbmxpbmVJdGVyYXRvcjo6TGVhZkJveEl0ZXJh
dG9yIGxvZ2ljYWxseU5leHRCb3goY29uc3QgVmlzaWJsZVBvc2l0CiAgICAgaWYgKGF1dG8gbmV4
dEJveCA9IG5leHRUZXh0T3JMaW5lQnJlYWtCb3goc3RhcnRCb3gsIG9yZGVyQ2FjaGUpKQogICAg
ICAgICByZXR1cm4gbmV4dEJveDsKIAotICAgIGlmIChhdXRvIG5leHRMaW5lID0gc3RhcnRCb3gt
PmxpbmUoKS0+bmV4dCgpKSB7CisgICAgaWYgKGF1dG8gbmV4dExpbmVCb3ggPSBzdGFydEJveC0+
bGluZUJveCgpLT5uZXh0KCkpIHsKICAgICAgICAgLy8gRklYTUU6IFdoeSBpc24ndCBwcmV2aW91
c0JveEluRGlmZmVyZW50TGluZSBzZXQgaGVyZT8KLSAgICAgICAgaWYgKGF1dG8gbmV4dEJveCA9
IHN0YXJ0VGV4dE9yTGluZUJyZWFrQm94KG5leHRMaW5lLCBvcmRlckNhY2hlKSkKKyAgICAgICAg
aWYgKGF1dG8gbmV4dEJveCA9IHN0YXJ0VGV4dE9yTGluZUJyZWFrQm94KG5leHRMaW5lQm94LCBv
cmRlckNhY2hlKSkKICAgICAgICAgICAgIHJldHVybiBuZXh0Qm94OwogICAgIH0KIApAQCAtMjI1
LDE4ICsyMjUsMTggQEAgc3RhdGljIGNvbnN0IElubGluZUl0ZXJhdG9yOjpMZWFmQm94SXRlcmF0
b3IgbG9naWNhbGx5TmV4dEJveChjb25zdCBWaXNpYmxlUG9zaXQKICAgICAgICAgICAgIGJyZWFr
OwogCiAgICAgICAgIFJlbmRlcmVkUG9zaXRpb24gcmVuZGVyZWRQb3NpdGlvbihwb3NpdGlvbiwg
QWZmaW5pdHk6OkRvd25zdHJlYW0pOwotICAgICAgICBhdXRvIG5leHRMaW5lID0gcmVuZGVyZWRQ
b3NpdGlvbi5saW5lKCk7Ci0gICAgICAgIGlmICghbmV4dExpbmUpCisgICAgICAgIGF1dG8gbmV4
dExpbmVCb3ggPSByZW5kZXJlZFBvc2l0aW9uLmxpbmVCb3goKTsKKyAgICAgICAgaWYgKCFuZXh0
TGluZUJveCkKICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgIGlmIChuZXh0TGluZSAhPSBz
dGFydEJveC0+bGluZSgpKSB7Ci0gICAgICAgICAgICBpZiAoYXV0byBuZXh0Qm94ID0gc3RhcnRU
ZXh0T3JMaW5lQnJlYWtCb3gobmV4dExpbmUsIG9yZGVyQ2FjaGUpKSB7CisgICAgICAgIGlmIChu
ZXh0TGluZUJveCAhPSBzdGFydEJveC0+bGluZUJveCgpKSB7CisgICAgICAgICAgICBpZiAoYXV0
byBuZXh0Qm94ID0gc3RhcnRUZXh0T3JMaW5lQnJlYWtCb3gobmV4dExpbmVCb3gsIG9yZGVyQ2Fj
aGUpKSB7CiAgICAgICAgICAgICAgICAgbmV4dEJveEluRGlmZmVyZW50TGluZSA9IHRydWU7CiAg
ICAgICAgICAgICAgICAgcmV0dXJuIG5leHRCb3g7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0K
IAotICAgICAgICBzdGFydEJveCA9IElubGluZUl0ZXJhdG9yOjpsYXN0TGVhZk9uTGluZUluTG9n
aWNhbE9yZGVyV2l0aE5vZGUobmV4dExpbmUsIG9yZGVyQ2FjaGUpOworICAgICAgICBzdGFydEJv
eCA9IElubGluZUl0ZXJhdG9yOjpsYXN0TGVhZk9uTGluZUluTG9naWNhbE9yZGVyV2l0aE5vZGUo
bmV4dExpbmVCb3gsIG9yZGVyQ2FjaGUpOwogICAgIH0KICAgICByZXR1cm4geyB9OwogfQpAQCAt
NzM4LDggKzczOCw4IEBAIHN0YXRpYyBWaXNpYmxlUG9zaXRpb24gc3RhcnRQb3NpdGlvbkZvckxp
bmUoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBjLCBMaW5lRW5kcG9pCiAgICAgaWYgKGMuaXNOdWxs
KCkpCiAgICAgICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24oKTsKIAotICAgIGF1dG8gbGluZSA9
IFJlbmRlcmVkUG9zaXRpb24oYykubGluZSgpOwotICAgIGlmICghbGluZSkgeworICAgIGF1dG8g
bGluZUJveCA9IFJlbmRlcmVkUG9zaXRpb24oYykubGluZUJveCgpOworICAgIGlmICghbGluZUJv
eCkgewogICAgICAgICAvLyBUaGVyZSBhcmUgVmlzaWJsZVBvc2l0aW9ucyBhdCBvZmZzZXQgMCBp
biBibG9ja3Mgd2l0aG91dAogICAgICAgICAvLyBSb290SW5saW5lQm94ZXMsIGxpa2UgZW1wdHkg
ZWRpdGFibGUgYmxvY2tzIGFuZCBib3JkZXJlZCBibG9ja3MuCiAgICAgICAgIFBvc2l0aW9uIHAg
PSBjLmRlZXBFcXVpdmFsZW50KCk7CkBAIC03NTIsNyArNzUyLDcgQEAgc3RhdGljIFZpc2libGVQ
b3NpdGlvbiBzdGFydFBvc2l0aW9uRm9yTGluZShjb25zdCBWaXNpYmxlUG9zaXRpb24mIGMsIExp
bmVFbmRwb2kKICAgICBJbmxpbmVJdGVyYXRvcjo6TGluZUxvZ2ljYWxPcmRlckNhY2hlIG9yZGVy
Q2FjaGU7CiAKICAgICBOb2RlKiBzdGFydE5vZGUgPSBudWxscHRyOwotICAgIGF1dG8gc3RhcnRC
b3ggPSBtb2RlID09IFVzZUxvZ2ljYWxPcmRlcmluZyA/IElubGluZUl0ZXJhdG9yOjpmaXJzdExl
YWZPbkxpbmVJbkxvZ2ljYWxPcmRlcldpdGhOb2RlKGxpbmUsIG9yZGVyQ2FjaGUpIDogbGluZS0+
Zmlyc3RMZWFmQm94KCk7CisgICAgYXV0byBzdGFydEJveCA9IG1vZGUgPT0gVXNlTG9naWNhbE9y
ZGVyaW5nID8gSW5saW5lSXRlcmF0b3I6OmZpcnN0TGVhZk9uTGluZUluTG9naWNhbE9yZGVyV2l0
aE5vZGUobGluZUJveCwgb3JkZXJDYWNoZSkgOiBsaW5lQm94LT5maXJzdExlYWZCb3goKTsKICAg
ICAvLyBHZW5lcmF0ZWQgY29udGVudCAoZS5nLiBsaXN0IG1hcmtlcnMgYW5kIENTUyA6YmVmb3Jl
IGFuZCA6YWZ0ZXIgcHNldWRvZWxlbWVudHMpIGhhdmUgbm8gY29ycmVzcG9uZGluZyBET00gZWxl
bWVudCwKICAgICAvLyBhbmQgc28gY2Fubm90IGJlIHJlcHJlc2VudGVkIGJ5IGEgVmlzaWJsZVBv
c2l0aW9uLiBVc2Ugd2hhdGV2ZXIgZm9sbG93cyBpbnN0ZWFkLgogICAgIHdoaWxlICh0cnVlKSB7
CkBAIC04MTEsOCArODExLDggQEAgc3RhdGljIFZpc2libGVQb3NpdGlvbiBlbmRQb3NpdGlvbkZv
ckxpbmUoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBjLCBMaW5lRW5kcG9pbnQKICAgICBpZiAoYy5p
c051bGwoKSkKICAgICAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbigpOwogCi0gICAgYXV0byBs
aW5lID0gUmVuZGVyZWRQb3NpdGlvbihjKS5saW5lKCk7Ci0gICAgaWYgKCFsaW5lKSB7CisgICAg
YXV0byBsaW5lQm94ID0gUmVuZGVyZWRQb3NpdGlvbihjKS5saW5lQm94KCk7CisgICAgaWYgKCFs
aW5lQm94KSB7CiAgICAgICAgIC8vIFRoZXJlIGFyZSBWaXNpYmxlUG9zaXRpb25zIGF0IG9mZnNl
dCAwIGluIGJsb2NrcyB3aXRob3V0CiAgICAgICAgIC8vIFJvb3RJbmxpbmVCb3hlcywgbGlrZSBl
bXB0eSBlZGl0YWJsZSBibG9ja3MgYW5kIGJvcmRlcmVkIGJsb2Nrcy4KICAgICAgICAgUG9zaXRp
b24gcCA9IGMuZGVlcEVxdWl2YWxlbnQoKTsKQEAgLTgyNCw3ICs4MjQsNyBAQCBzdGF0aWMgVmlz
aWJsZVBvc2l0aW9uIGVuZFBvc2l0aW9uRm9yTGluZShjb25zdCBWaXNpYmxlUG9zaXRpb24mIGMs
IExpbmVFbmRwb2ludAogICAgIElubGluZUl0ZXJhdG9yOjpMaW5lTG9naWNhbE9yZGVyQ2FjaGUg
b3JkZXJDYWNoZTsKIAogICAgIE5vZGUqIGVuZE5vZGUgPSBudWxscHRyOwotICAgIGF1dG8gZW5k
Qm94ID0gbW9kZSA9PSBVc2VMb2dpY2FsT3JkZXJpbmcgPyBJbmxpbmVJdGVyYXRvcjo6bGFzdExl
YWZPbkxpbmVJbkxvZ2ljYWxPcmRlcihsaW5lLCBvcmRlckNhY2hlKSA6IGxpbmUtPmxhc3RMZWFm
Qm94KCk7CisgICAgYXV0byBlbmRCb3ggPSBtb2RlID09IFVzZUxvZ2ljYWxPcmRlcmluZyA/IElu
bGluZUl0ZXJhdG9yOjpsYXN0TGVhZk9uTGluZUluTG9naWNhbE9yZGVyKGxpbmVCb3gsIG9yZGVy
Q2FjaGUpIDogbGluZUJveC0+bGFzdExlYWZCb3goKTsKICAgICAvLyBHZW5lcmF0ZWQgY29udGVu
dCAoZS5nLiBsaXN0IG1hcmtlcnMgYW5kIENTUyA6YmVmb3JlIGFuZCA6YWZ0ZXIgcHNldWRvZWxl
bWVudHMpIGhhdmUgbm8gY29ycmVzcG9uZGluZyBET00gZWxlbWVudCwKICAgICAvLyBhbmQgc28g
Y2Fubm90IGJlIHJlcHJlc2VudGVkIGJ5IGEgVmlzaWJsZVBvc2l0aW9uLiBVc2Ugd2hhdGV2ZXIg
cHJlY2VkZXMgaW5zdGVhZC4KICAgICB3aGlsZSAodHJ1ZSkgewpAQCAtOTM2LDE1ICs5MzYsMTUg
QEAgYm9vbCBpc0xvZ2ljYWxFbmRPZkxpbmUoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBwKQogICAg
IHJldHVybiBwLmlzTm90TnVsbCgpICYmIHAgPT0gbG9naWNhbEVuZE9mTGluZShwKTsKIH0KIAot
c3RhdGljIGlubGluZSBJbnRQb2ludCBhYnNvbHV0ZUxpbmVEaXJlY3Rpb25Qb2ludFRvTG9jYWxQ
b2ludEluQmxvY2soSW5saW5lSXRlcmF0b3I6OkxpbmVJdGVyYXRvciYgbGluZSwgaW50IGxpbmVE
aXJlY3Rpb25Qb2ludCkKK3N0YXRpYyBpbmxpbmUgSW50UG9pbnQgYWJzb2x1dGVMaW5lRGlyZWN0
aW9uUG9pbnRUb0xvY2FsUG9pbnRJbkJsb2NrKElubGluZUl0ZXJhdG9yOjpMaW5lQm94SXRlcmF0
b3ImIGxpbmVCb3gsIGludCBsaW5lRGlyZWN0aW9uUG9pbnQpCiB7Ci0gICAgYXV0byYgY29udGFp
bmluZ0Jsb2NrID0gbGluZS0+Y29udGFpbmluZ0Jsb2NrKCk7CisgICAgYXV0byYgY29udGFpbmlu
Z0Jsb2NrID0gbGluZUJveC0+Y29udGFpbmluZ0Jsb2NrKCk7CiAgICAgRmxvYXRQb2ludCBhYnNv
bHV0ZUJsb2NrUG9pbnQgPSBjb250YWluaW5nQmxvY2subG9jYWxUb0Fic29sdXRlKEZsb2F0UG9p
bnQoKSkgLSB0b0Zsb2F0U2l6ZShjb250YWluaW5nQmxvY2suc2Nyb2xsUG9zaXRpb24oKSk7CiAK
ICAgICBpZiAoY29udGFpbmluZ0Jsb2NrLmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkpCi0gICAg
ICAgIHJldHVybiBJbnRQb2ludChsaW5lRGlyZWN0aW9uUG9pbnQgLSBhYnNvbHV0ZUJsb2NrUG9p
bnQueCgpLCBjb250ZW50U3RhcnRJbkJsb2NrRGlyZWN0aW9uKCpsaW5lKSk7CisgICAgICAgIHJl
dHVybiBJbnRQb2ludChsaW5lRGlyZWN0aW9uUG9pbnQgLSBhYnNvbHV0ZUJsb2NrUG9pbnQueCgp
LCBjb250ZW50U3RhcnRJbkJsb2NrRGlyZWN0aW9uKCpsaW5lQm94KSk7CiAKLSAgICByZXR1cm4g
SW50UG9pbnQoY29udGVudFN0YXJ0SW5CbG9ja0RpcmVjdGlvbigqbGluZSksIGxpbmVEaXJlY3Rp
b25Qb2ludCAtIGFic29sdXRlQmxvY2tQb2ludC55KCkpOworICAgIHJldHVybiBJbnRQb2ludChj
b250ZW50U3RhcnRJbkJsb2NrRGlyZWN0aW9uKCpsaW5lQm94KSwgbGluZURpcmVjdGlvblBvaW50
IC0gYWJzb2x1dGVCbG9ja1BvaW50LnkoKSk7CiB9CiAKIHN0YXRpYyBFbGVtZW50KiByb290RWRp
dGFibGVPckRvY3VtZW50RWxlbWVudChOb2RlJiBub2RlLCBFZGl0YWJsZVR5cGUgZWRpdGFibGVU
eXBlKQpAQCAtOTY4LDI5ICs5NjgsMjkgQEAgVmlzaWJsZVBvc2l0aW9uIHByZXZpb3VzTGluZVBv
c2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgdmlzaWJsZVBvc2l0aW9uLCBpbnQKICAgICBp
ZiAoIXJlbmRlcmVyKQogICAgICAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKCk7CiAKLSAgICBJ
bmxpbmVJdGVyYXRvcjo6TGluZUl0ZXJhdG9yIGxpbmU7CisgICAgSW5saW5lSXRlcmF0b3I6Okxp
bmVCb3hJdGVyYXRvciBsaW5lQm94OwogICAgIGlmIChhdXRvIGJveCA9IHZpc2libGVQb3NpdGlv
bi5pbmxpbmVCb3hBbmRPZmZzZXQoKS5ib3gpIHsKLSAgICAgICAgbGluZSA9IGJveC0+bGluZSgp
LT5wcmV2aW91cygpOworICAgICAgICBsaW5lQm94ID0gYm94LT5saW5lQm94KCktPnByZXZpb3Vz
KCk7CiAgICAgICAgIC8vIFdlIHdhbnQgdG8gc2tpcCB6ZXJvIGhlaWdodCBib3hlcy4KICAgICAg
ICAgLy8gVGhpcyBjb3VsZCBoYXBwZW4gaW4gY2FzZSBpdCBpcyBhIExlZ2FjeVJvb3RJbmxpbmVC
b3ggd2l0aCB0cmFpbGluZyBmbG9hdHMuCi0gICAgICAgIGlmICghbGluZSB8fCAhbGluZS0+bGlu
ZUJveEhlaWdodCgpIHx8ICFsaW5lLT5maXJzdExlYWZCb3goKSkKLSAgICAgICAgICAgIGxpbmUg
PSB7IH07CisgICAgICAgIGlmICghbGluZUJveCB8fCAhbGluZUJveC0+aGVpZ2h0KCkgfHwgIWxp
bmVCb3gtPmZpcnN0TGVhZkJveCgpKQorICAgICAgICAgICAgbGluZUJveCA9IHsgfTsKICAgICB9
CiAKLSAgICBpZiAoIWxpbmUpIHsKKyAgICBpZiAoIWxpbmVCb3gpIHsKICAgICAgICAgUG9zaXRp
b24gcG9zaXRpb24gPSBwcmV2aW91c0xpbmVDYW5kaWRhdGVQb3NpdGlvbihub2RlLCB2aXNpYmxl
UG9zaXRpb24sIGVkaXRhYmxlVHlwZSk7CiAgICAgICAgIGlmIChwb3NpdGlvbi5pc05vdE51bGwo
KSkgewogICAgICAgICAgICAgUmVuZGVyZWRQb3NpdGlvbiByZW5kZXJlZFBvc2l0aW9uKHBvc2l0
aW9uKTsKLSAgICAgICAgICAgIGxpbmUgPSByZW5kZXJlZFBvc2l0aW9uLmxpbmUoKTsKLSAgICAg
ICAgICAgIGlmICghbGluZSkKKyAgICAgICAgICAgIGxpbmVCb3ggPSByZW5kZXJlZFBvc2l0aW9u
LmxpbmVCb3goKTsKKyAgICAgICAgICAgIGlmICghbGluZUJveCkKICAgICAgICAgICAgICAgICBy
ZXR1cm4gcG9zaXRpb247CiAgICAgICAgIH0KICAgICB9CiAgICAgCi0gICAgaWYgKGxpbmUpIHsK
KyAgICBpZiAobGluZUJveCkgewogICAgICAgICAvLyBGSVhNRTogQ2FuIGJlIHdyb25nIGZvciBt
dWx0aS1jb2x1bW4gbGF5b3V0IGFuZCB3aXRoIHRyYW5zZm9ybXMuCi0gICAgICAgIGF1dG8gcG9p
bnRJbkxpbmUgPSBhYnNvbHV0ZUxpbmVEaXJlY3Rpb25Qb2ludFRvTG9jYWxQb2ludEluQmxvY2so
bGluZSwgbGluZURpcmVjdGlvblBvaW50KTsKLSAgICAgICAgYXV0byBib3ggPSBjbG9zZXN0Qm94
Rm9ySG9yaXpvbnRhbFBvc2l0aW9uKCpsaW5lLCBsaW5lLT5pc0hvcml6b250YWwoKSA/IHBvaW50
SW5MaW5lLngoKSA6IHBvaW50SW5MaW5lLnkoKSwgaXNFZGl0YWJsZVBvc2l0aW9uKHApKTsKKyAg
ICAgICAgYXV0byBwb2ludEluTGluZSA9IGFic29sdXRlTGluZURpcmVjdGlvblBvaW50VG9Mb2Nh
bFBvaW50SW5CbG9jayhsaW5lQm94LCBsaW5lRGlyZWN0aW9uUG9pbnQpOworICAgICAgICBhdXRv
IGJveCA9IGNsb3Nlc3RCb3hGb3JIb3Jpem9udGFsUG9zaXRpb24oKmxpbmVCb3gsIGxpbmVCb3gt
PmlzSG9yaXpvbnRhbCgpID8gcG9pbnRJbkxpbmUueCgpIDogcG9pbnRJbkxpbmUueSgpLCBpc0Vk
aXRhYmxlUG9zaXRpb24ocCkpOwogICAgICAgICBpZiAoIWJveCkKICAgICAgICAgICAgIHJldHVy
biBWaXNpYmxlUG9zaXRpb24oKTsKICAgICAgICAgYXV0byYgcmVuZGVyZXIgPSBib3gtPnJlbmRl
cmVyKCk7CkBAIC0xMDIxLDMyICsxMDIxLDMyIEBAIFZpc2libGVQb3NpdGlvbiBuZXh0TGluZVBv
c2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgdmlzaWJsZVBvc2l0aW9uLCBpbnQgbGluCiAg
ICAgaWYgKCFub2RlLT5yZW5kZXJlcigpKQogICAgICAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9u
KCk7CiAKLSAgICBJbmxpbmVJdGVyYXRvcjo6TGluZUl0ZXJhdG9yIGxpbmU7CisgICAgSW5saW5l
SXRlcmF0b3I6OkxpbmVCb3hJdGVyYXRvciBsaW5lQm94OwogICAgIGlmIChhdXRvIGJveCA9IHZp
c2libGVQb3NpdGlvbi5pbmxpbmVCb3hBbmRPZmZzZXQoKS5ib3gpIHsKLSAgICAgICAgbGluZSA9
IGJveC0+bGluZSgpLT5uZXh0KCk7CisgICAgICAgIGxpbmVCb3ggPSBib3gtPmxpbmVCb3goKS0+
bmV4dCgpOwogICAgICAgICAvLyBXZSB3YW50IHRvIHNraXAgemVybyBoZWlnaHQgYm94ZXMuCiAg
ICAgICAgIC8vIFRoaXMgY291bGQgaGFwcGVuIGluIGNhc2UgaXQgaXMgYSBMZWdhY3lSb290SW5s
aW5lQm94IHdpdGggdHJhaWxpbmcgZmxvYXRzLgotICAgICAgICBpZiAoIWxpbmUgfHwgIWxpbmUt
PmxpbmVCb3hIZWlnaHQoKSB8fCAhbGluZS0+Zmlyc3RMZWFmQm94KCkpCi0gICAgICAgICAgICBs
aW5lID0geyB9OworICAgICAgICBpZiAoIWxpbmVCb3ggfHwgIWxpbmVCb3gtPmhlaWdodCgpIHx8
ICFsaW5lQm94LT5maXJzdExlYWZCb3goKSkKKyAgICAgICAgICAgIGxpbmVCb3ggPSB7IH07CiAg
ICAgfQogCi0gICAgaWYgKCFsaW5lKSB7CisgICAgaWYgKCFsaW5lQm94KSB7CiAgICAgICAgIC8v
IEZJWE1FOiBXZSBuZWVkIGRvIHRoZSBzYW1lIGluIHByZXZpb3VzTGluZVBvc2l0aW9uLgogICAg
ICAgICBOb2RlKiBjaGlsZCA9IG5vZGUtPnRyYXZlcnNlVG9DaGlsZEF0KHAuZGVwcmVjYXRlZEVk
aXRpbmdPZmZzZXQoKSk7CiAgICAgICAgIG5vZGUgPSBjaGlsZCA/IGNoaWxkIDogbm9kZS0+bGFz
dERlc2NlbmRhbnQoKTsKICAgICAgICAgUG9zaXRpb24gcG9zaXRpb24gPSBuZXh0TGluZUNhbmRp
ZGF0ZVBvc2l0aW9uKG5vZGUsIHZpc2libGVQb3NpdGlvbiwgZWRpdGFibGVUeXBlKTsKICAgICAg
ICAgaWYgKHBvc2l0aW9uLmlzTm90TnVsbCgpKSB7CiAgICAgICAgICAgICBSZW5kZXJlZFBvc2l0
aW9uIHJlbmRlcmVkUG9zaXRpb24ocG9zaXRpb24pOwotICAgICAgICAgICAgbGluZSA9IHJlbmRl
cmVkUG9zaXRpb24ubGluZSgpOwotICAgICAgICAgICAgaWYgKCFsaW5lKQorICAgICAgICAgICAg
bGluZUJveCA9IHJlbmRlcmVkUG9zaXRpb24ubGluZUJveCgpOworICAgICAgICAgICAgaWYgKCFs
aW5lQm94KQogICAgICAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKICAgICAgICAgfQogICAg
IH0KICAgICAKLSAgICBpZiAobGluZSkgeworICAgIGlmIChsaW5lQm94KSB7CiAgICAgICAgIC8v
IEZJWE1FOiBDYW4gYmUgd3JvbmcgZm9yIG11bHRpLWNvbHVtbiBsYXlvdXQgYW5kIHdpdGggdHJh
bnNmb3Jtcy4KLSAgICAgICAgYXV0byBwb2ludEluTGluZSA9IGFic29sdXRlTGluZURpcmVjdGlv
blBvaW50VG9Mb2NhbFBvaW50SW5CbG9jayhsaW5lLCBsaW5lRGlyZWN0aW9uUG9pbnQpOwotICAg
ICAgICBhdXRvIGJveCA9IGNsb3Nlc3RCb3hGb3JIb3Jpem9udGFsUG9zaXRpb24oKmxpbmUsIGxp
bmUtPmlzSG9yaXpvbnRhbCgpID8gcG9pbnRJbkxpbmUueCgpIDogcG9pbnRJbkxpbmUueSgpLCBp
c0VkaXRhYmxlUG9zaXRpb24ocCkpOworICAgICAgICBhdXRvIHBvaW50SW5MaW5lID0gYWJzb2x1
dGVMaW5lRGlyZWN0aW9uUG9pbnRUb0xvY2FsUG9pbnRJbkJsb2NrKGxpbmVCb3gsIGxpbmVEaXJl
Y3Rpb25Qb2ludCk7CisgICAgICAgIGF1dG8gYm94ID0gY2xvc2VzdEJveEZvckhvcml6b250YWxQ
b3NpdGlvbigqbGluZUJveCwgbGluZUJveC0+aXNIb3Jpem9udGFsKCkgPyBwb2ludEluTGluZS54
KCkgOiBwb2ludEluTGluZS55KCksIGlzRWRpdGFibGVQb3NpdGlvbihwKSk7CiAgICAgICAgIGlm
ICghYm94KQogICAgICAgICAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbigpOwogICAgICAgICBh
dXRvJiByZW5kZXJlciA9IGJveC0+cmVuZGVyZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAKaW5kZXggMWZlNTlkZTQ2NDkyZGY2
NTA5ZjQ3MDgyOTRmNzYzMDdhYWNmZjgxZi4uYzEzZjQ1ZTMzY2VmNDM2N2M2M2RlMWM5OWRiOTE4
MGQzYjk0ZjY3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1D
b250cm9sRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1D
b250cm9sRWxlbWVudC5jcHAKQEAgLTQyLDcgKzQyLDcgQEAKICNpbmNsdWRlICJIVE1MTmFtZXMu
aCIKICNpbmNsdWRlICJIVE1MUGFyc2VySWRpb21zLmgiCiAjaW5jbHVkZSAiSW5saW5lSXRlcmF0
b3JCb3guaCIKLSNpbmNsdWRlICJJbmxpbmVJdGVyYXRvckxpbmUuaCIKKyNpbmNsdWRlICJJbmxp
bmVJdGVyYXRvckxpbmVCb3guaCIKICNpbmNsdWRlICJMYXlvdXREaXNhbGxvd2VkU2NvcGUuaCIK
ICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTm9kZVRyYXZlcnNhbC5oIgpAQCAtNzI3
LDIwICs3MjcsMjAgQEAgU3RyaW5nIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50Ojp2YWx1ZVdp
dGhIYXJkTGluZUJyZWFrcygpIGNvbnN0CiAKICAgICBOb2RlKiBzb2Z0TGluZUJyZWFrTm9kZSA9
IG51bGxwdHI7CiAgICAgdW5zaWduZWQgc29mdExpbmVCcmVha09mZnNldCA9IDA7Ci0gICAgYXV0
byBjdXJyZW50TGluZSA9IElubGluZUl0ZXJhdG9yOjpmaXJzdExpbmVGb3IoKnJlbmRlcmVyKTsK
LSAgICBpZiAoIWN1cnJlbnRMaW5lKQorICAgIGF1dG8gY3VycmVudExpbmVCb3ggPSBJbmxpbmVJ
dGVyYXRvcjo6Zmlyc3RMaW5lQm94Rm9yKCpyZW5kZXJlcik7CisgICAgaWYgKCFjdXJyZW50TGlu
ZUJveCkKICAgICAgICAgcmV0dXJuIHZhbHVlKCk7CiAKICAgICBhdXRvIHNraXBUb05leHRTb2Z0
TGluZUJyZWFrUG9zaXRpb24gPSBbJl0gewotICAgICAgICBmb3IgKDsgY3VycmVudExpbmU7IGN1
cnJlbnRMaW5lLnRyYXZlcnNlTmV4dCgpKSB7Ci0gICAgICAgICAgICBhdXRvIGxhc3RSdW4gPSBj
dXJyZW50TGluZS0+bGFzdExlYWZCb3goKTsKKyAgICAgICAgZm9yICg7IGN1cnJlbnRMaW5lQm94
OyBjdXJyZW50TGluZUJveC50cmF2ZXJzZU5leHQoKSkgeworICAgICAgICAgICAgYXV0byBsYXN0
UnVuID0gY3VycmVudExpbmVCb3gtPmxhc3RMZWFmQm94KCk7CiAgICAgICAgICAgICBBU1NFUlQo
bGFzdFJ1bik7CiAgICAgICAgICAgICBhdXRvJiByZW5kZXJlciA9IGxhc3RSdW4tPnJlbmRlcmVy
KCk7CiAgICAgICAgICAgICBhdXRvIGxpbmVFbmRzV2l0aEJSID0gaXM8UmVuZGVyTGluZUJyZWFr
PihyZW5kZXJlcikgJiYgIWRvd25jYXN0PFJlbmRlckxpbmVCcmVhaz4ocmVuZGVyZXIpLmlzV0JS
KCk7CiAgICAgICAgICAgICBpZiAoIWxpbmVFbmRzV2l0aEJSKSB7CiAgICAgICAgICAgICAgICAg
c29mdExpbmVCcmVha05vZGUgPSByZW5kZXJlci5ub2RlKCk7CiAgICAgICAgICAgICAgICAgc29m
dExpbmVCcmVha09mZnNldCA9IGxhc3RSdW4tPm1heGltdW1DYXJldE9mZnNldCgpOwotICAgICAg
ICAgICAgICAgIGN1cnJlbnRMaW5lLnRyYXZlcnNlTmV4dCgpOworICAgICAgICAgICAgICAgIGN1
cnJlbnRMaW5lQm94LnRyYXZlcnNlTmV4dCgpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgICAgIH0KICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRvckJveC5jcHAKaW5kZXggNzVlYWU1ZTBkNDFlNmM2
M2E3ODc0MGVmYjJmNzIxMDY2ZTdlZjY5Zi4uOWMyYWI5ODdiZGM0NmU3OTE2ZjlmNzFhZGY3MWRk
OTM0N2U1OGY3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9u
L0lubGluZUl0ZXJhdG9yQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdy
YXRpb24vSW5saW5lSXRlcmF0b3JCb3guY3BwCkBAIC0yNiw3ICsyNiw3IEBACiAjaW5jbHVkZSAi
Y29uZmlnLmgiCiAjaW5jbHVkZSAiSW5saW5lSXRlcmF0b3JCb3guaCIKIAotI2luY2x1ZGUgIklu
bGluZUl0ZXJhdG9yTGluZS5oIgorI2luY2x1ZGUgIklubGluZUl0ZXJhdG9yTGluZUJveC5oIgog
I2luY2x1ZGUgIklubGluZUl0ZXJhdG9yVGV4dEJveC5oIgogI2luY2x1ZGUgIkxheW91dEludGVn
cmF0aW9uTGluZUxheW91dC5oIgogI2luY2x1ZGUgIlJlbmRlckJsb2NrRmxvdy5oIgpAQCAtODEs
MTQgKzgxLDE0IEBAIExlYWZCb3hJdGVyYXRvciBCb3g6OnByZXZpb3VzT25MaW5lSWdub3JpbmdM
aW5lQnJlYWsoKSBjb25zdAogICAgIHJldHVybiBMZWFmQm94SXRlcmF0b3IoKnRoaXMpLnRyYXZl
cnNlUHJldmlvdXNPbkxpbmVJZ25vcmluZ0xpbmVCcmVhaygpOwogfQogCi1MaW5lSXRlcmF0b3Ig
Qm94OjpsaW5lKCkgY29uc3QKK0xpbmVCb3hJdGVyYXRvciBCb3g6OmxpbmVCb3goKSBjb25zdAog
ewogICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKG1fcGF0aFZhcmlhbnQsIFtdKGNvbnN0IEJveExl
Z2FjeVBhdGgmIHBhdGgpIHsKLSAgICAgICAgcmV0dXJuIExpbmVJdGVyYXRvcihMaW5lSXRlcmF0
b3JMZWdhY3lQYXRoKCZwYXRoLnJvb3RJbmxpbmVCb3goKSkpOworICAgICAgICByZXR1cm4gTGlu
ZUJveEl0ZXJhdG9yKExpbmVCb3hJdGVyYXRvckxlZ2FjeVBhdGgoJnBhdGgucm9vdElubGluZUJv
eCgpKSk7CiAgICAgfQogI2lmIEVOQUJMRShMQVlPVVRfRk9STUFUVElOR19DT05URVhUKQogICAg
ICwgW10oY29uc3QgQm94TW9kZXJuUGF0aCYgcGF0aCkgewotICAgICAgICByZXR1cm4gTGluZUl0
ZXJhdG9yKExpbmVJdGVyYXRvck1vZGVyblBhdGgocGF0aC5pbmxpbmVDb250ZW50KCksIHBhdGgu
Ym94KCkubGluZUluZGV4KCkpKTsKKyAgICAgICAgcmV0dXJuIExpbmVCb3hJdGVyYXRvcihMaW5l
Qm94SXRlcmF0b3JNb2Rlcm5QYXRoKHBhdGguaW5saW5lQ29udGVudCgpLCBwYXRoLmJveCgpLmxp
bmVJbmRleCgpKSk7CiAgICAgfQogI2VuZGlmCiAgICAgKTsKQEAgLTk2LDcgKzk2LDcgQEAgTGlu
ZUl0ZXJhdG9yIEJveDo6bGluZSgpIGNvbnN0CiAKIGNvbnN0IFJlbmRlclN0eWxlJiBCb3g6OnN0
eWxlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbGluZSgpLT5pc0ZpcnN0KCkgPyByZW5kZXJlcigp
LmZpcnN0TGluZVN0eWxlKCkgOiByZW5kZXJlcigpLnN0eWxlKCk7CisgICAgcmV0dXJuIGxpbmVC
b3goKS0+aXNGaXJzdCgpID8gcmVuZGVyZXIoKS5maXJzdExpbmVTdHlsZSgpIDogcmVuZGVyZXIo
KS5zdHlsZSgpOwogfQogCiBSZW5kZXJPYmplY3Q6OkhpZ2hsaWdodFN0YXRlIEJveDo6c2VsZWN0
aW9uU3RhdGUoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVn
cmF0aW9uL0lubGluZUl0ZXJhdG9yQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdy
YXRpb24vSW5saW5lSXRlcmF0b3JCb3guaAppbmRleCAzMjU4MmE3MGFjNTRmZmExODUwYzk2ZTVi
ZTAyNjZlNGQxMThjMDkxLi4xOTRkNTE4OWU0YWUxNDc3OWQ3NGExMjdiNTE5MTczMDQzMjY2MzJk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRl
cmF0b3JCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5saW5l
SXRlcmF0b3JCb3guaApAQCAtMzgsNyArMzgsNyBAQCBjbGFzcyBSZW5kZXJTdHlsZTsKIAogbmFt
ZXNwYWNlIElubGluZUl0ZXJhdG9yIHsKIAotY2xhc3MgTGluZUl0ZXJhdG9yOworY2xhc3MgTGlu
ZUJveEl0ZXJhdG9yOwogY2xhc3MgQm94SXRlcmF0b3I7CiBjbGFzcyBMZWFmQm94SXRlcmF0b3I7
CiBjbGFzcyBUZXh0Qm94SXRlcmF0b3I7CkBAIC05OCw3ICs5OCw3IEBAIHB1YmxpYzoKICAgICBM
ZWFmQm94SXRlcmF0b3IgbmV4dE9uTGluZUlnbm9yaW5nTGluZUJyZWFrKCkgY29uc3Q7CiAgICAg
TGVhZkJveEl0ZXJhdG9yIHByZXZpb3VzT25MaW5lSWdub3JpbmdMaW5lQnJlYWsoKSBjb25zdDsK
IAotICAgIExpbmVJdGVyYXRvciBsaW5lKCkgY29uc3Q7CisgICAgTGluZUJveEl0ZXJhdG9yIGxp
bmVCb3goKSBjb25zdDsKIAogcHJvdGVjdGVkOgogICAgIGZyaWVuZCBjbGFzcyBCb3hJdGVyYXRv
cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJ
dGVyYXRvckxpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0lubGlu
ZUl0ZXJhdG9yTGluZS5jcHAKaW5kZXggZGFmMmFiOGY1NmViMWU5ZGFhY2Q2YmU1ZTViNzE3N2Fl
OGY2MWQxYS4uMDk5NWMxYTk4ODVmNTlhYzI2OWE0YTNkYzFjMTkwYjVkZjkxZGYwZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yTGlu
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJh
dG9yTGluZS5jcHAKQEAgLTI0LDcgKzI0LDcgQEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgi
Ci0jaW5jbHVkZSAiSW5saW5lSXRlcmF0b3JMaW5lLmgiCisjaW5jbHVkZSAiSW5saW5lSXRlcmF0
b3JMaW5lQm94LmgiCiAKICNpbmNsdWRlICJJbmxpbmVJdGVyYXRvckJveC5oIgogI2luY2x1ZGUg
IkxheW91dEludGVncmF0aW9uTGluZUxheW91dC5oIgpAQCAtMzMsOTYgKzMzLDk2IEBACiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgSW5saW5lSXRlcmF0b3IgewogCi1MaW5lSXRlcmF0
b3I6OkxpbmVJdGVyYXRvcihMaW5lOjpQYXRoVmFyaWFudCYmIHBhdGhWYXJpYW50KQotICAgIDog
bV9saW5lKFdURk1vdmUocGF0aFZhcmlhbnQpKQorTGluZUJveEl0ZXJhdG9yOjpMaW5lQm94SXRl
cmF0b3IoTGluZUJveDo6UGF0aFZhcmlhbnQmJiBwYXRoVmFyaWFudCkKKyAgICA6IG1fbGluZUJv
eChXVEZNb3ZlKHBhdGhWYXJpYW50KSkKIHsKIH0KIAotTGluZUl0ZXJhdG9yOjpMaW5lSXRlcmF0
b3IoY29uc3QgTGluZSYgbGluZSkKLSAgICA6IG1fbGluZShsaW5lKQorTGluZUJveEl0ZXJhdG9y
OjpMaW5lQm94SXRlcmF0b3IoY29uc3QgTGluZUJveCYgbGluZUJveCkKKyAgICA6IG1fbGluZUJv
eChsaW5lQm94KQogewogfQogCi1ib29sIExpbmVJdGVyYXRvcjo6YXRFbmQoKSBjb25zdAorYm9v
bCBMaW5lQm94SXRlcmF0b3I6OmF0RW5kKCkgY29uc3QKIHsKLSAgICByZXR1cm4gV1RGOjpzd2l0
Y2hPbihtX2xpbmUubV9wYXRoVmFyaWFudCwgW10oYXV0byYgcGF0aCkgeworICAgIHJldHVybiBX
VEY6OnN3aXRjaE9uKG1fbGluZUJveC5tX3BhdGhWYXJpYW50LCBbXShhdXRvJiBwYXRoKSB7CiAg
ICAgICAgIHJldHVybiBwYXRoLmF0RW5kKCk7CiAgICAgfSk7CiB9CiAKLUxpbmVJdGVyYXRvciYg
TGluZUl0ZXJhdG9yOjp0cmF2ZXJzZU5leHQoKQorTGluZUJveEl0ZXJhdG9yJiBMaW5lQm94SXRl
cmF0b3I6OnRyYXZlcnNlTmV4dCgpCiB7Ci0gICAgV1RGOjpzd2l0Y2hPbihtX2xpbmUubV9wYXRo
VmFyaWFudCwgW10oYXV0byYgcGF0aCkgeworICAgIFdURjo6c3dpdGNoT24obV9saW5lQm94Lm1f
cGF0aFZhcmlhbnQsIFtdKGF1dG8mIHBhdGgpIHsKICAgICAgICAgcmV0dXJuIHBhdGgudHJhdmVy
c2VOZXh0KCk7CiAgICAgfSk7CiAgICAgcmV0dXJuICp0aGlzOwogfQogCi1MaW5lSXRlcmF0b3Im
IExpbmVJdGVyYXRvcjo6dHJhdmVyc2VQcmV2aW91cygpCitMaW5lQm94SXRlcmF0b3ImIExpbmVC
b3hJdGVyYXRvcjo6dHJhdmVyc2VQcmV2aW91cygpCiB7Ci0gICAgV1RGOjpzd2l0Y2hPbihtX2xp
bmUubV9wYXRoVmFyaWFudCwgW10oYXV0byYgcGF0aCkgeworICAgIFdURjo6c3dpdGNoT24obV9s
aW5lQm94Lm1fcGF0aFZhcmlhbnQsIFtdKGF1dG8mIHBhdGgpIHsKICAgICAgICAgcmV0dXJuIHBh
dGgudHJhdmVyc2VQcmV2aW91cygpOwogICAgIH0pOwogICAgIHJldHVybiAqdGhpczsKIH0KIAot
Ym9vbCBMaW5lSXRlcmF0b3I6Om9wZXJhdG9yPT0oY29uc3QgTGluZUl0ZXJhdG9yJiBvdGhlcikg
Y29uc3QKK2Jvb2wgTGluZUJveEl0ZXJhdG9yOjpvcGVyYXRvcj09KGNvbnN0IExpbmVCb3hJdGVy
YXRvciYgb3RoZXIpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fbGluZS5tX3BhdGhWYXJpYW50ID09
IG90aGVyLm1fbGluZS5tX3BhdGhWYXJpYW50OworICAgIHJldHVybiBtX2xpbmVCb3gubV9wYXRo
VmFyaWFudCA9PSBvdGhlci5tX2xpbmVCb3gubV9wYXRoVmFyaWFudDsKIH0KIAotTGluZUl0ZXJh
dG9yIGZpcnN0TGluZUZvcihjb25zdCBSZW5kZXJCbG9ja0Zsb3cmIGZsb3cpCitMaW5lQm94SXRl
cmF0b3IgZmlyc3RMaW5lQm94Rm9yKGNvbnN0IFJlbmRlckJsb2NrRmxvdyYgZmxvdykKIHsKICNp
ZiBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCkKICAgICBpZiAoYXV0byogbGluZUxh
eW91dCA9IGZsb3cubW9kZXJuTGluZUxheW91dCgpKQotICAgICAgICByZXR1cm4gbGluZUxheW91
dC0+Zmlyc3RMaW5lKCk7CisgICAgICAgIHJldHVybiBsaW5lTGF5b3V0LT5maXJzdExpbmVCb3go
KTsKICNlbmRpZgogCi0gICAgcmV0dXJuIHsgTGluZUl0ZXJhdG9yTGVnYWN5UGF0aCB7IGZsb3cu
Zmlyc3RSb290Qm94KCkgfSB9OworICAgIHJldHVybiB7IExpbmVCb3hJdGVyYXRvckxlZ2FjeVBh
dGggeyBmbG93LmZpcnN0Um9vdEJveCgpIH0gfTsKIH0KIAotTGluZUl0ZXJhdG9yIGxhc3RMaW5l
Rm9yKGNvbnN0IFJlbmRlckJsb2NrRmxvdyYgZmxvdykKK0xpbmVCb3hJdGVyYXRvciBsYXN0TGlu
ZUJveEZvcihjb25zdCBSZW5kZXJCbG9ja0Zsb3cmIGZsb3cpCiB7CiAjaWYgRU5BQkxFKExBWU9V
VF9GT1JNQVRUSU5HX0NPTlRFWFQpCiAgICAgaWYgKGF1dG8qIGxpbmVMYXlvdXQgPSBmbG93Lm1v
ZGVybkxpbmVMYXlvdXQoKSkKLSAgICAgICAgcmV0dXJuIGxpbmVMYXlvdXQtPmxhc3RMaW5lKCk7
CisgICAgICAgIHJldHVybiBsaW5lTGF5b3V0LT5sYXN0TGluZUJveCgpOwogI2VuZGlmCiAKLSAg
ICByZXR1cm4geyBMaW5lSXRlcmF0b3JMZWdhY3lQYXRoIHsgZmxvdy5sYXN0Um9vdEJveCgpIH0g
fTsKKyAgICByZXR1cm4geyBMaW5lQm94SXRlcmF0b3JMZWdhY3lQYXRoIHsgZmxvdy5sYXN0Um9v
dEJveCgpIH0gfTsKIH0KIAotTGluZUl0ZXJhdG9yIExpbmU6Om5leHQoKSBjb25zdAorTGluZUJv
eEl0ZXJhdG9yIExpbmVCb3g6Om5leHQoKSBjb25zdAogewotICAgIHJldHVybiBMaW5lSXRlcmF0
b3IoKnRoaXMpLnRyYXZlcnNlTmV4dCgpOworICAgIHJldHVybiBMaW5lQm94SXRlcmF0b3IoKnRo
aXMpLnRyYXZlcnNlTmV4dCgpOwogfQogCi1MaW5lSXRlcmF0b3IgTGluZTo6cHJldmlvdXMoKSBj
b25zdAorTGluZUJveEl0ZXJhdG9yIExpbmVCb3g6OnByZXZpb3VzKCkgY29uc3QKIHsKLSAgICBy
ZXR1cm4gTGluZUl0ZXJhdG9yKCp0aGlzKS50cmF2ZXJzZVByZXZpb3VzKCk7CisgICAgcmV0dXJu
IExpbmVCb3hJdGVyYXRvcigqdGhpcykudHJhdmVyc2VQcmV2aW91cygpOwogfQogCi1MZWFmQm94
SXRlcmF0b3IgTGluZTo6Zmlyc3RMZWFmQm94KCkgY29uc3QKK0xlYWZCb3hJdGVyYXRvciBMaW5l
Qm94OjpmaXJzdExlYWZCb3goKSBjb25zdAogewogICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKG1f
cGF0aFZhcmlhbnQsIFtdKGF1dG8mIHBhdGgpIC0+IExlYWZCb3hJdGVyYXRvciB7CiAgICAgICAg
IHJldHVybiB7IHBhdGguZmlyc3RMZWFmQm94KCkgfTsKICAgICB9KTsKIH0KIAotTGVhZkJveEl0
ZXJhdG9yIExpbmU6Omxhc3RMZWFmQm94KCkgY29uc3QKK0xlYWZCb3hJdGVyYXRvciBMaW5lQm94
OjpsYXN0TGVhZkJveCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIFdURjo6c3dpdGNoT24obV9wYXRo
VmFyaWFudCwgW10oYXV0byYgcGF0aCkgLT4gTGVhZkJveEl0ZXJhdG9yIHsKICAgICAgICAgcmV0
dXJuIHsgcGF0aC5sYXN0TGVhZkJveCgpIH07CiAgICAgfSk7CiB9CiAKLUxlYWZCb3hJdGVyYXRv
ciBjbG9zZXN0Qm94Rm9ySG9yaXpvbnRhbFBvc2l0aW9uKGNvbnN0IExpbmUmIGxpbmUsIGZsb2F0
IGhvcml6b250YWxQb3NpdGlvbiwgYm9vbCBlZGl0YWJsZU9ubHkpCitMZWFmQm94SXRlcmF0b3Ig
Y2xvc2VzdEJveEZvckhvcml6b250YWxQb3NpdGlvbihjb25zdCBMaW5lQm94JiBsaW5lQm94LCBm
bG9hdCBob3Jpem9udGFsUG9zaXRpb24sIGJvb2wgZWRpdGFibGVPbmx5KQogewogICAgIGF1dG8g
aXNFZGl0YWJsZSA9IFsmXShhdXRvIGJveCkgewogICAgICAgICByZXR1cm4gYm94ICYmIGJveC0+
cmVuZGVyZXIoKS5ub2RlKCkgJiYgYm94LT5yZW5kZXJlcigpLm5vZGUoKS0+aGFzRWRpdGFibGVT
dHlsZSgpOwogICAgIH07CiAKLSAgICBhdXRvIGZpcnN0Qm94ID0gbGluZS5maXJzdExlYWZCb3go
KTsKLSAgICBhdXRvIGxhc3RCb3ggPSBsaW5lLmxhc3RMZWFmQm94KCk7CisgICAgYXV0byBmaXJz
dEJveCA9IGxpbmVCb3guZmlyc3RMZWFmQm94KCk7CisgICAgYXV0byBsYXN0Qm94ID0gbGluZUJv
eC5sYXN0TGVhZkJveCgpOwogCiAgICAgaWYgKGZpcnN0Qm94ICE9IGxhc3RCb3gpIHsKICAgICAg
ICAgaWYgKGZpcnN0Qm94LT5pc0xpbmVCcmVhaygpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yTGluZS5oIGIvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yTGluZS5oCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCBlZDg5ZjkwMzhjOTZiMjNjMjA5NTNhZTk5ZWU4ZDY1NzBiZWIxZmEz
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRvckxpbmUuaAorKysgL2Rldi9u
dWxsCkBAIC0xLDI0NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0g
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNs
dWRlICJGb250QmFzZWxpbmUuaCIKLSNpbmNsdWRlICJJbmxpbmVJdGVyYXRvckxpbmVMZWdhY3lQ
YXRoLmgiCi0jaW5jbHVkZSAiSW5saW5lSXRlcmF0b3JMaW5lTW9kZXJuUGF0aC5oIgotI2luY2x1
ZGUgIlJlbmRlckJsb2NrRmxvdy5oIgotI2luY2x1ZGUgPHZhcmlhbnQ+Ci0KLW5hbWVzcGFjZSBX
ZWJDb3JlIHsKLQotY2xhc3MgTGluZVNlbGVjdGlvbjsKLQotbmFtZXNwYWNlIElubGluZUl0ZXJh
dG9yIHsKLQotY2xhc3MgTGluZUl0ZXJhdG9yOwotY2xhc3MgUGF0aEl0ZXJhdG9yOwotY2xhc3Mg
TGVhZkJveEl0ZXJhdG9yOwotCi1zdHJ1Y3QgRW5kTGluZUl0ZXJhdG9yIHsgfTsKLQotY2xhc3Mg
TGluZSB7Ci1wdWJsaWM6Ci0gICAgdXNpbmcgUGF0aFZhcmlhbnQgPSBzdGQ6OnZhcmlhbnQ8Ci0j
aWYgRU5BQkxFKExBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCi0gICAgICAgIExpbmVJdGVyYXRv
ck1vZGVyblBhdGgsCi0jZW5kaWYKLSAgICAgICAgTGluZUl0ZXJhdG9yTGVnYWN5UGF0aAotICAg
ID47Ci0KLSAgICBMaW5lKFBhdGhWYXJpYW50JiYpOwotCi0gICAgZmxvYXQgbGluZUJveFRvcCgp
IGNvbnN0OwotICAgIGZsb2F0IGxpbmVCb3hCb3R0b20oKSBjb25zdDsKLSAgICBmbG9hdCBsaW5l
Qm94SGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gbGluZUJveEJvdHRvbSgpIC0gbGluZUJveFRvcCgp
OyB9Ci0KLSAgICBmbG9hdCBjb250ZW50TG9naWNhbFRvcCgpIGNvbnN0OwotICAgIGZsb2F0IGNv
bnRlbnRMb2dpY2FsQm90dG9tKCkgY29uc3Q7Ci0gICAgZmxvYXQgY29udGVudExvZ2ljYWxMZWZ0
KCkgY29uc3Q7Ci0gICAgZmxvYXQgY29udGVudExvZ2ljYWxSaWdodCgpIGNvbnN0OwotICAgIGZs
b2F0IGNvbnRlbnRMb2dpY2FsV2lkdGgoKSBjb25zdDsKLQotICAgIGZsb2F0IGNvbnRlbnRMb2dp
Y2FsVG9wQWRqdXN0ZWRGb3JQcmVjZWRpbmdMaW5lKCkgY29uc3Q7Ci0gICAgZmxvYXQgY29udGVu
dExvZ2ljYWxCb3R0b21BZGp1c3RlZEZvckZvbGxvd2luZ0xpbmUoKSBjb25zdDsKLQotICAgIGNv
bnN0IFJlbmRlckJsb2NrRmxvdyYgY29udGFpbmluZ0Jsb2NrKCkgY29uc3Q7Ci0gICAgUmVuZGVy
RnJhZ21lbnRDb250YWluZXIqIGNvbnRhaW5pbmdGcmFnbWVudCgpIGNvbnN0OwotCi0gICAgYm9v
bCBpc0hvcml6b250YWwoKSBjb25zdDsKLSAgICBGb250QmFzZWxpbmUgYmFzZWxpbmVUeXBlKCkg
Y29uc3Q7Ci0KLSAgICBib29sIGlzRmlyc3QoKSBjb25zdDsKLSAgICBib29sIGlzRmlyc3RBZnRl
clBhZ2VCcmVhaygpIGNvbnN0OwotCi0gICAgTGVhZkJveEl0ZXJhdG9yIGZpcnN0TGVhZkJveCgp
IGNvbnN0OwotICAgIExlYWZCb3hJdGVyYXRvciBsYXN0TGVhZkJveCgpIGNvbnN0OwotCi0gICAg
TGluZUl0ZXJhdG9yIG5leHQoKSBjb25zdDsKLSAgICBMaW5lSXRlcmF0b3IgcHJldmlvdXMoKSBj
b25zdDsKLQotcHJpdmF0ZToKLSAgICBmcmllbmQgY2xhc3MgTGluZUl0ZXJhdG9yOwotCi0gICAg
UGF0aFZhcmlhbnQgbV9wYXRoVmFyaWFudDsKLX07Ci0KLWNsYXNzIExpbmVJdGVyYXRvciB7Ci1w
dWJsaWM6Ci0gICAgTGluZUl0ZXJhdG9yKCkgOiBtX2xpbmUoTGluZUl0ZXJhdG9yTGVnYWN5UGF0
aCB7IG51bGxwdHIgfSkgeyB9OwotICAgIExpbmVJdGVyYXRvcihjb25zdCBMZWdhY3lSb290SW5s
aW5lQm94KiByb290SW5saW5lQm94KSA6IG1fbGluZShMaW5lSXRlcmF0b3JMZWdhY3lQYXRoIHsg
cm9vdElubGluZUJveCB9KSB7IH07Ci0gICAgTGluZUl0ZXJhdG9yKExpbmU6OlBhdGhWYXJpYW50
JiYpOwotICAgIExpbmVJdGVyYXRvcihjb25zdCBMaW5lJik7Ci0KLSAgICBMaW5lSXRlcmF0b3Im
IG9wZXJhdG9yKysoKSB7IHJldHVybiB0cmF2ZXJzZU5leHQoKTsgfQotICAgIExpbmVJdGVyYXRv
ciYgdHJhdmVyc2VOZXh0KCk7Ci0gICAgTGluZUl0ZXJhdG9yJiB0cmF2ZXJzZVByZXZpb3VzKCk7
Ci0KLSAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gIWF0RW5kKCk7
IH0KLQotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBMaW5lSXRlcmF0b3ImKSBjb25zdDsKLSAg
ICBib29sIG9wZXJhdG9yIT0oY29uc3QgTGluZUl0ZXJhdG9yJiBvdGhlcikgY29uc3QgeyByZXR1
cm4gISgqdGhpcyA9PSBvdGhlcik7IH0KLQotICAgIGJvb2wgb3BlcmF0b3I9PShFbmRMaW5lSXRl
cmF0b3IpIGNvbnN0IHsgcmV0dXJuIGF0RW5kKCk7IH0KLSAgICBib29sIG9wZXJhdG9yIT0oRW5k
TGluZUl0ZXJhdG9yKSBjb25zdCB7IHJldHVybiAhYXRFbmQoKTsgfQotCi0gICAgY29uc3QgTGlu
ZSYgb3BlcmF0b3IqKCkgY29uc3QgeyByZXR1cm4gbV9saW5lOyB9Ci0gICAgY29uc3QgTGluZSog
b3BlcmF0b3ItPigpIGNvbnN0IHsgcmV0dXJuICZtX2xpbmU7IH0KLQotICAgIGJvb2wgYXRFbmQo
KSBjb25zdDsKLQotcHJpdmF0ZToKLSAgICBMaW5lIG1fbGluZTsKLX07Ci0KLUxpbmVJdGVyYXRv
ciBmaXJzdExpbmVGb3IoY29uc3QgUmVuZGVyQmxvY2tGbG93Jik7Ci1MaW5lSXRlcmF0b3IgbGFz
dExpbmVGb3IoY29uc3QgUmVuZGVyQmxvY2tGbG93Jik7Ci1MZWFmQm94SXRlcmF0b3IgY2xvc2Vz
dEJveEZvckhvcml6b250YWxQb3NpdGlvbihjb25zdCBMaW5lJiwgZmxvYXQgaG9yaXpvbnRhbFBv
c2l0aW9uLCBib29sIGVkaXRhYmxlT25seSA9IGZhbHNlKTsKLQotLy8gLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLWlubGluZSBmbG9hdCBwcmV2aW91c0xp
bmVDb250ZW50Qm90dG9tT3JCb3JkZXJBbmRQYWRkaW5nKGNvbnN0IExpbmUmIGxpbmUpCi17Ci0g
ICAgcmV0dXJuIGxpbmUuaXNGaXJzdCgpID8gbGluZS5jb250YWluaW5nQmxvY2soKS5ib3JkZXJB
bmRQYWRkaW5nQmVmb3JlKCkudG9GbG9hdCgpIDogbGluZS5jb250ZW50TG9naWNhbFRvcEFkanVz
dGVkRm9yUHJlY2VkaW5nTGluZSgpOyAKLX0KLQotaW5saW5lIGZsb2F0IGNvbnRlbnRTdGFydElu
QmxvY2tEaXJlY3Rpb24oY29uc3QgTGluZSYgbGluZSkKLXsKLSAgICBpZiAoIWxpbmUuY29udGFp
bmluZ0Jsb2NrKCkuc3R5bGUoKS5pc0ZsaXBwZWRCbG9ja3NXcml0aW5nTW9kZSgpKQotICAgICAg
ICByZXR1cm4gc3RkOjptYXgobGluZS5jb250ZW50TG9naWNhbFRvcCgpLCBwcmV2aW91c0xpbmVD
b250ZW50Qm90dG9tT3JCb3JkZXJBbmRQYWRkaW5nKGxpbmUpKTsKLSAgICByZXR1cm4gc3RkOjpt
aW4obGluZS5jb250ZW50TG9naWNhbEJvdHRvbSgpLCBsaW5lLmNvbnRlbnRMb2dpY2FsQm90dG9t
QWRqdXN0ZWRGb3JGb2xsb3dpbmdMaW5lKCkpOwotfQotCi1pbmxpbmUgTGluZTo6TGluZShQYXRo
VmFyaWFudCYmIHBhdGgpCi0gICAgOiBtX3BhdGhWYXJpYW50KFdURk1vdmUocGF0aCkpCi17Ci19
Ci0KLWlubGluZSBmbG9hdCBMaW5lOjpjb250ZW50TG9naWNhbFRvcCgpIGNvbnN0Ci17Ci0gICAg
cmV0dXJuIFdURjo6c3dpdGNoT24obV9wYXRoVmFyaWFudCwgW10oY29uc3QgYXV0byYgcGF0aCkg
ewotICAgICAgICByZXR1cm4gcGF0aC5jb250ZW50TG9naWNhbFRvcCgpOwotICAgIH0pOwotfQot
Ci1pbmxpbmUgZmxvYXQgTGluZTo6Y29udGVudExvZ2ljYWxCb3R0b20oKSBjb25zdAotewotICAg
IHJldHVybiBXVEY6OnN3aXRjaE9uKG1fcGF0aFZhcmlhbnQsIFtdKGNvbnN0IGF1dG8mIHBhdGgp
IHsKLSAgICAgICAgcmV0dXJuIHBhdGguY29udGVudExvZ2ljYWxCb3R0b20oKTsKLSAgICB9KTsK
LX0KLQotaW5saW5lIGZsb2F0IExpbmU6OmNvbnRlbnRMb2dpY2FsVG9wQWRqdXN0ZWRGb3JQcmVj
ZWRpbmdMaW5lKCkgY29uc3QKLXsKLSAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihtX3BhdGhWYXJp
YW50LCBbXShjb25zdCBhdXRvJiBwYXRoKSB7Ci0gICAgICAgIHJldHVybiBwYXRoLmNvbnRlbnRM
b2dpY2FsVG9wQWRqdXN0ZWRGb3JQcmVjZWRpbmdMaW5lKCk7Ci0gICAgfSk7Ci19Ci0KLWlubGlu
ZSBmbG9hdCBMaW5lOjpjb250ZW50TG9naWNhbEJvdHRvbUFkanVzdGVkRm9yRm9sbG93aW5nTGlu
ZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIFdURjo6c3dpdGNoT24obV9wYXRoVmFyaWFudCwgW10o
Y29uc3QgYXV0byYgcGF0aCkgewotICAgICAgICByZXR1cm4gcGF0aC5jb250ZW50TG9naWNhbEJv
dHRvbUFkanVzdGVkRm9yRm9sbG93aW5nTGluZSgpOwotICAgIH0pOwotfQotCi1pbmxpbmUgZmxv
YXQgTGluZTo6bGluZUJveFRvcCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIFdURjo6c3dpdGNoT24o
bV9wYXRoVmFyaWFudCwgW10oY29uc3QgYXV0byYgcGF0aCkgewotICAgICAgICByZXR1cm4gcGF0
aC5saW5lQm94VG9wKCk7Ci0gICAgfSk7Ci19Ci0KLWlubGluZSBmbG9hdCBMaW5lOjpsaW5lQm94
Qm90dG9tKCkgY29uc3QKLXsKLSAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihtX3BhdGhWYXJpYW50
LCBbXShjb25zdCBhdXRvJiBwYXRoKSB7Ci0gICAgICAgIHJldHVybiBwYXRoLmxpbmVCb3hCb3R0
b20oKTsKLSAgICB9KTsKLX0KLQotaW5saW5lIGZsb2F0IExpbmU6OmNvbnRlbnRMb2dpY2FsTGVm
dCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIFdURjo6c3dpdGNoT24obV9wYXRoVmFyaWFudCwgW10o
Y29uc3QgYXV0byYgcGF0aCkgewotICAgICAgICByZXR1cm4gcGF0aC5jb250ZW50TG9naWNhbExl
ZnQoKTsKLSAgICB9KTsKLX0KLQotaW5saW5lIGZsb2F0IExpbmU6OmNvbnRlbnRMb2dpY2FsUmln
aHQoKSBjb25zdAotewotICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKG1fcGF0aFZhcmlhbnQsIFtd
KGNvbnN0IGF1dG8mIHBhdGgpIHsKLSAgICAgICAgcmV0dXJuIHBhdGguY29udGVudExvZ2ljYWxS
aWdodCgpOwotICAgIH0pOwotfQotCi1pbmxpbmUgZmxvYXQgTGluZTo6Y29udGVudExvZ2ljYWxX
aWR0aCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGNvbnRlbnRMb2dpY2FsUmlnaHQoKSAtIGNvbnRl
bnRMb2dpY2FsTGVmdCgpOwotfQotCi1pbmxpbmUgYm9vbCBMaW5lOjppc0hvcml6b250YWwoKSBj
b25zdAotewotICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKG1fcGF0aFZhcmlhbnQsIFtdKGNvbnN0
IGF1dG8mIHBhdGgpIHsKLSAgICAgICAgcmV0dXJuIHBhdGguaXNIb3Jpem9udGFsKCk7Ci0gICAg
fSk7Ci19Ci0KLWlubGluZSBGb250QmFzZWxpbmUgTGluZTo6YmFzZWxpbmVUeXBlKCkgY29uc3QK
LXsKLSAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihtX3BhdGhWYXJpYW50LCBbXShjb25zdCBhdXRv
JiBwYXRoKSB7Ci0gICAgICAgIHJldHVybiBwYXRoLmJhc2VsaW5lVHlwZSgpOwotICAgIH0pOwot
fQotCi1pbmxpbmUgY29uc3QgUmVuZGVyQmxvY2tGbG93JiBMaW5lOjpjb250YWluaW5nQmxvY2so
KSBjb25zdAotewotICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKG1fcGF0aFZhcmlhbnQsIFtdKGNv
bnN0IGF1dG8mIHBhdGgpIC0+IGNvbnN0IFJlbmRlckJsb2NrRmxvdyYgewotICAgICAgICByZXR1
cm4gcGF0aC5jb250YWluaW5nQmxvY2soKTsKLSAgICB9KTsKLX0KLQotaW5saW5lIFJlbmRlckZy
YWdtZW50Q29udGFpbmVyKiBMaW5lOjpjb250YWluaW5nRnJhZ21lbnQoKSBjb25zdAotewotICAg
IHJldHVybiBXVEY6OnN3aXRjaE9uKG1fcGF0aFZhcmlhbnQsIFtdKGNvbnN0IGF1dG8mIHBhdGgp
IHsKLSAgICAgICAgcmV0dXJuIHBhdGguY29udGFpbmluZ0ZyYWdtZW50KCk7Ci0gICAgfSk7Ci19
Ci0KLWlubGluZSBib29sIExpbmU6OmlzRmlyc3RBZnRlclBhZ2VCcmVhaygpIGNvbnN0Ci17Ci0g
ICAgcmV0dXJuIFdURjo6c3dpdGNoT24obV9wYXRoVmFyaWFudCwgW10oY29uc3QgYXV0byYgcGF0
aCkgewotICAgICAgICByZXR1cm4gcGF0aC5pc0ZpcnN0QWZ0ZXJQYWdlQnJlYWsoKTsKLSAgICB9
KTsKLX0KLQotaW5saW5lIGJvb2wgTGluZTo6aXNGaXJzdCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJu
ICFwcmV2aW91cygpOwotfQotCi19Ci19Ci0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRvckxpbmVCb3guaCBiL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRvckxpbmVCb3guaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43
M2Q4Yzk3ZDFiMzQ3MTFmODI4YmJjYTRjYTUyNjBkMTkxNjY3YzJmCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yTGluZUJv
eC5oCkBAIC0wLDAgKzEsMjQ0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNs
dWRlICJGb250QmFzZWxpbmUuaCIKKyNpbmNsdWRlICJJbmxpbmVJdGVyYXRvckxpbmVCb3hMZWdh
Y3lQYXRoLmgiCisjaW5jbHVkZSAiSW5saW5lSXRlcmF0b3JMaW5lQm94TW9kZXJuUGF0aC5oIgor
I2luY2x1ZGUgIlJlbmRlckJsb2NrRmxvdy5oIgorI2luY2x1ZGUgPHZhcmlhbnQ+CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworY2xhc3MgTGluZVNlbGVjdGlvbjsKKworbmFtZXNwYWNlIElubGlu
ZUl0ZXJhdG9yIHsKKworY2xhc3MgTGluZUJveEl0ZXJhdG9yOworY2xhc3MgUGF0aEl0ZXJhdG9y
OworY2xhc3MgTGVhZkJveEl0ZXJhdG9yOworCitzdHJ1Y3QgRW5kTGluZUJveEl0ZXJhdG9yIHsg
fTsKKworY2xhc3MgTGluZUJveCB7CitwdWJsaWM6CisgICAgdXNpbmcgUGF0aFZhcmlhbnQgPSBz
dGQ6OnZhcmlhbnQ8CisjaWYgRU5BQkxFKExBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCisgICAg
ICAgIExpbmVCb3hJdGVyYXRvck1vZGVyblBhdGgsCisjZW5kaWYKKyAgICAgICAgTGluZUJveEl0
ZXJhdG9yTGVnYWN5UGF0aAorICAgID47CisKKyAgICBMaW5lQm94KFBhdGhWYXJpYW50JiYpOwor
CisgICAgZmxvYXQgdG9wKCkgY29uc3Q7CisgICAgZmxvYXQgYm90dG9tKCkgY29uc3Q7CisgICAg
ZmxvYXQgaGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gYm90dG9tKCkgLSB0b3AoKTsgfQorCisgICAg
ZmxvYXQgY29udGVudExvZ2ljYWxUb3AoKSBjb25zdDsKKyAgICBmbG9hdCBjb250ZW50TG9naWNh
bEJvdHRvbSgpIGNvbnN0OworICAgIGZsb2F0IGNvbnRlbnRMb2dpY2FsTGVmdCgpIGNvbnN0Owor
ICAgIGZsb2F0IGNvbnRlbnRMb2dpY2FsUmlnaHQoKSBjb25zdDsKKyAgICBmbG9hdCBjb250ZW50
TG9naWNhbFdpZHRoKCkgY29uc3Q7CisKKyAgICBmbG9hdCBjb250ZW50TG9naWNhbFRvcEFkanVz
dGVkRm9yUHJlY2VkaW5nTGluZUJveCgpIGNvbnN0OworICAgIGZsb2F0IGNvbnRlbnRMb2dpY2Fs
Qm90dG9tQWRqdXN0ZWRGb3JGb2xsb3dpbmdMaW5lQm94KCkgY29uc3Q7CisKKyAgICBjb25zdCBS
ZW5kZXJCbG9ja0Zsb3cmIGNvbnRhaW5pbmdCbG9jaygpIGNvbnN0OworICAgIFJlbmRlckZyYWdt
ZW50Q29udGFpbmVyKiBjb250YWluaW5nRnJhZ21lbnQoKSBjb25zdDsKKworICAgIGJvb2wgaXNI
b3Jpem9udGFsKCkgY29uc3Q7CisgICAgRm9udEJhc2VsaW5lIGJhc2VsaW5lVHlwZSgpIGNvbnN0
OworCisgICAgYm9vbCBpc0ZpcnN0KCkgY29uc3Q7CisgICAgYm9vbCBpc0ZpcnN0QWZ0ZXJQYWdl
QnJlYWsoKSBjb25zdDsKKworICAgIExlYWZCb3hJdGVyYXRvciBmaXJzdExlYWZCb3goKSBjb25z
dDsKKyAgICBMZWFmQm94SXRlcmF0b3IgbGFzdExlYWZCb3goKSBjb25zdDsKKworICAgIExpbmVC
b3hJdGVyYXRvciBuZXh0KCkgY29uc3Q7CisgICAgTGluZUJveEl0ZXJhdG9yIHByZXZpb3VzKCkg
Y29uc3Q7CisKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIExpbmVCb3hJdGVyYXRvcjsKKwor
ICAgIFBhdGhWYXJpYW50IG1fcGF0aFZhcmlhbnQ7Cit9OworCitjbGFzcyBMaW5lQm94SXRlcmF0
b3IgeworcHVibGljOgorICAgIExpbmVCb3hJdGVyYXRvcigpIDogbV9saW5lQm94KExpbmVCb3hJ
dGVyYXRvckxlZ2FjeVBhdGggeyBudWxscHRyIH0pIHsgfTsKKyAgICBMaW5lQm94SXRlcmF0b3Io
Y29uc3QgTGVnYWN5Um9vdElubGluZUJveCogcm9vdElubGluZUJveCkgOiBtX2xpbmVCb3goTGlu
ZUJveEl0ZXJhdG9yTGVnYWN5UGF0aCB7IHJvb3RJbmxpbmVCb3ggfSkgeyB9OworICAgIExpbmVC
b3hJdGVyYXRvcihMaW5lQm94OjpQYXRoVmFyaWFudCYmKTsKKyAgICBMaW5lQm94SXRlcmF0b3Io
Y29uc3QgTGluZUJveCYpOworCisgICAgTGluZUJveEl0ZXJhdG9yJiBvcGVyYXRvcisrKCkgeyBy
ZXR1cm4gdHJhdmVyc2VOZXh0KCk7IH0KKyAgICBMaW5lQm94SXRlcmF0b3ImIHRyYXZlcnNlTmV4
dCgpOworICAgIExpbmVCb3hJdGVyYXRvciYgdHJhdmVyc2VQcmV2aW91cygpOworCisgICAgZXhw
bGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuICFhdEVuZCgpOyB9CisKKyAgICBi
b29sIG9wZXJhdG9yPT0oY29uc3QgTGluZUJveEl0ZXJhdG9yJikgY29uc3Q7CisgICAgYm9vbCBv
cGVyYXRvciE9KGNvbnN0IExpbmVCb3hJdGVyYXRvciYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuICEo
KnRoaXMgPT0gb3RoZXIpOyB9CisKKyAgICBib29sIG9wZXJhdG9yPT0oRW5kTGluZUJveEl0ZXJh
dG9yKSBjb25zdCB7IHJldHVybiBhdEVuZCgpOyB9CisgICAgYm9vbCBvcGVyYXRvciE9KEVuZExp
bmVCb3hJdGVyYXRvcikgY29uc3QgeyByZXR1cm4gIWF0RW5kKCk7IH0KKworICAgIGNvbnN0IExp
bmVCb3gmIG9wZXJhdG9yKigpIGNvbnN0IHsgcmV0dXJuIG1fbGluZUJveDsgfQorICAgIGNvbnN0
IExpbmVCb3gqIG9wZXJhdG9yLT4oKSBjb25zdCB7IHJldHVybiAmbV9saW5lQm94OyB9CisKKyAg
ICBib29sIGF0RW5kKCkgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgTGluZUJveCBtX2xpbmVCb3g7
Cit9OworCitMaW5lQm94SXRlcmF0b3IgZmlyc3RMaW5lQm94Rm9yKGNvbnN0IFJlbmRlckJsb2Nr
RmxvdyYpOworTGluZUJveEl0ZXJhdG9yIGxhc3RMaW5lQm94Rm9yKGNvbnN0IFJlbmRlckJsb2Nr
RmxvdyYpOworTGVhZkJveEl0ZXJhdG9yIGNsb3Nlc3RCb3hGb3JIb3Jpem9udGFsUG9zaXRpb24o
Y29uc3QgTGluZUJveCYsIGZsb2F0IGhvcml6b250YWxQb3NpdGlvbiwgYm9vbCBlZGl0YWJsZU9u
bHkgPSBmYWxzZSk7CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCitpbmxpbmUgZmxvYXQgcHJldmlvdXNMaW5lQm94Q29udGVudEJvdHRvbU9yQm9y
ZGVyQW5kUGFkZGluZyhjb25zdCBMaW5lQm94JiBsaW5lQm94KQoreworICAgIHJldHVybiBsaW5l
Qm94LmlzRmlyc3QoKSA/IGxpbmVCb3guY29udGFpbmluZ0Jsb2NrKCkuYm9yZGVyQW5kUGFkZGlu
Z0JlZm9yZSgpLnRvRmxvYXQoKSA6IGxpbmVCb3guY29udGVudExvZ2ljYWxUb3BBZGp1c3RlZEZv
clByZWNlZGluZ0xpbmVCb3goKTsgCit9CisKK2lubGluZSBmbG9hdCBjb250ZW50U3RhcnRJbkJs
b2NrRGlyZWN0aW9uKGNvbnN0IExpbmVCb3gmIGxpbmVCb3gpCit7CisgICAgaWYgKCFsaW5lQm94
LmNvbnRhaW5pbmdCbG9jaygpLnN0eWxlKCkuaXNGbGlwcGVkQmxvY2tzV3JpdGluZ01vZGUoKSkK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bWF4KGxpbmVCb3guY29udGVudExvZ2ljYWxUb3AoKSwgcHJl
dmlvdXNMaW5lQm94Q29udGVudEJvdHRvbU9yQm9yZGVyQW5kUGFkZGluZyhsaW5lQm94KSk7Cisg
ICAgcmV0dXJuIHN0ZDo6bWluKGxpbmVCb3guY29udGVudExvZ2ljYWxCb3R0b20oKSwgbGluZUJv
eC5jb250ZW50TG9naWNhbEJvdHRvbUFkanVzdGVkRm9yRm9sbG93aW5nTGluZUJveCgpKTsKK30K
KworaW5saW5lIExpbmVCb3g6OkxpbmVCb3goUGF0aFZhcmlhbnQmJiBwYXRoKQorICAgIDogbV9w
YXRoVmFyaWFudChXVEZNb3ZlKHBhdGgpKQoreworfQorCitpbmxpbmUgZmxvYXQgTGluZUJveDo6
Y29udGVudExvZ2ljYWxUb3AoKSBjb25zdAoreworICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKG1f
cGF0aFZhcmlhbnQsIFtdKGNvbnN0IGF1dG8mIHBhdGgpIHsKKyAgICAgICAgcmV0dXJuIHBhdGgu
Y29udGVudExvZ2ljYWxUb3AoKTsKKyAgICB9KTsKK30KKworaW5saW5lIGZsb2F0IExpbmVCb3g6
OmNvbnRlbnRMb2dpY2FsQm90dG9tKCkgY29uc3QKK3sKKyAgICByZXR1cm4gV1RGOjpzd2l0Y2hP
bihtX3BhdGhWYXJpYW50LCBbXShjb25zdCBhdXRvJiBwYXRoKSB7CisgICAgICAgIHJldHVybiBw
YXRoLmNvbnRlbnRMb2dpY2FsQm90dG9tKCk7CisgICAgfSk7Cit9CisKK2lubGluZSBmbG9hdCBM
aW5lQm94Ojpjb250ZW50TG9naWNhbFRvcEFkanVzdGVkRm9yUHJlY2VkaW5nTGluZUJveCgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIFdURjo6c3dpdGNoT24obV9wYXRoVmFyaWFudCwgW10oY29uc3Qg
YXV0byYgcGF0aCkgeworICAgICAgICByZXR1cm4gcGF0aC5jb250ZW50TG9naWNhbFRvcEFkanVz
dGVkRm9yUHJlY2VkaW5nTGluZUJveCgpOworICAgIH0pOworfQorCitpbmxpbmUgZmxvYXQgTGlu
ZUJveDo6Y29udGVudExvZ2ljYWxCb3R0b21BZGp1c3RlZEZvckZvbGxvd2luZ0xpbmVCb3goKSBj
b25zdAoreworICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKG1fcGF0aFZhcmlhbnQsIFtdKGNvbnN0
IGF1dG8mIHBhdGgpIHsKKyAgICAgICAgcmV0dXJuIHBhdGguY29udGVudExvZ2ljYWxCb3R0b21B
ZGp1c3RlZEZvckZvbGxvd2luZ0xpbmVCb3goKTsKKyAgICB9KTsKK30KKworaW5saW5lIGZsb2F0
IExpbmVCb3g6OnRvcCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIFdURjo6c3dpdGNoT24obV9wYXRo
VmFyaWFudCwgW10oY29uc3QgYXV0byYgcGF0aCkgeworICAgICAgICByZXR1cm4gcGF0aC50b3Ao
KTsKKyAgICB9KTsKK30KKworaW5saW5lIGZsb2F0IExpbmVCb3g6OmJvdHRvbSgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIFdURjo6c3dpdGNoT24obV9wYXRoVmFyaWFudCwgW10oY29uc3QgYXV0byYg
cGF0aCkgeworICAgICAgICByZXR1cm4gcGF0aC5ib3R0b20oKTsKKyAgICB9KTsKK30KKworaW5s
aW5lIGZsb2F0IExpbmVCb3g6OmNvbnRlbnRMb2dpY2FsTGVmdCgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIFdURjo6c3dpdGNoT24obV9wYXRoVmFyaWFudCwgW10oY29uc3QgYXV0byYgcGF0aCkgewor
ICAgICAgICByZXR1cm4gcGF0aC5jb250ZW50TG9naWNhbExlZnQoKTsKKyAgICB9KTsKK30KKwor
aW5saW5lIGZsb2F0IExpbmVCb3g6OmNvbnRlbnRMb2dpY2FsUmlnaHQoKSBjb25zdAoreworICAg
IHJldHVybiBXVEY6OnN3aXRjaE9uKG1fcGF0aFZhcmlhbnQsIFtdKGNvbnN0IGF1dG8mIHBhdGgp
IHsKKyAgICAgICAgcmV0dXJuIHBhdGguY29udGVudExvZ2ljYWxSaWdodCgpOworICAgIH0pOwor
fQorCitpbmxpbmUgZmxvYXQgTGluZUJveDo6Y29udGVudExvZ2ljYWxXaWR0aCgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIGNvbnRlbnRMb2dpY2FsUmlnaHQoKSAtIGNvbnRlbnRMb2dpY2FsTGVmdCgp
OworfQorCitpbmxpbmUgYm9vbCBMaW5lQm94Ojppc0hvcml6b250YWwoKSBjb25zdAoreworICAg
IHJldHVybiBXVEY6OnN3aXRjaE9uKG1fcGF0aFZhcmlhbnQsIFtdKGNvbnN0IGF1dG8mIHBhdGgp
IHsKKyAgICAgICAgcmV0dXJuIHBhdGguaXNIb3Jpem9udGFsKCk7CisgICAgfSk7Cit9CisKK2lu
bGluZSBGb250QmFzZWxpbmUgTGluZUJveDo6YmFzZWxpbmVUeXBlKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gV1RGOjpzd2l0Y2hPbihtX3BhdGhWYXJpYW50LCBbXShjb25zdCBhdXRvJiBwYXRoKSB7
CisgICAgICAgIHJldHVybiBwYXRoLmJhc2VsaW5lVHlwZSgpOworICAgIH0pOworfQorCitpbmxp
bmUgY29uc3QgUmVuZGVyQmxvY2tGbG93JiBMaW5lQm94Ojpjb250YWluaW5nQmxvY2soKSBjb25z
dAoreworICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKG1fcGF0aFZhcmlhbnQsIFtdKGNvbnN0IGF1
dG8mIHBhdGgpIC0+IGNvbnN0IFJlbmRlckJsb2NrRmxvdyYgeworICAgICAgICByZXR1cm4gcGF0
aC5jb250YWluaW5nQmxvY2soKTsKKyAgICB9KTsKK30KKworaW5saW5lIFJlbmRlckZyYWdtZW50
Q29udGFpbmVyKiBMaW5lQm94Ojpjb250YWluaW5nRnJhZ21lbnQoKSBjb25zdAoreworICAgIHJl
dHVybiBXVEY6OnN3aXRjaE9uKG1fcGF0aFZhcmlhbnQsIFtdKGNvbnN0IGF1dG8mIHBhdGgpIHsK
KyAgICAgICAgcmV0dXJuIHBhdGguY29udGFpbmluZ0ZyYWdtZW50KCk7CisgICAgfSk7Cit9CisK
K2lubGluZSBib29sIExpbmVCb3g6OmlzRmlyc3RBZnRlclBhZ2VCcmVhaygpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIFdURjo6c3dpdGNoT24obV9wYXRoVmFyaWFudCwgW10oY29uc3QgYXV0byYgcGF0
aCkgeworICAgICAgICByZXR1cm4gcGF0aC5pc0ZpcnN0QWZ0ZXJQYWdlQnJlYWsoKTsKKyAgICB9
KTsKK30KKworaW5saW5lIGJvb2wgTGluZUJveDo6aXNGaXJzdCgpIGNvbnN0Cit7CisgICAgcmV0
dXJuICFwcmV2aW91cygpOworfQorCit9Cit9CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRvckxpbmVCb3hMZWdhY3lQYXRoLmggYi9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JMaW5lQm94TGVn
YWN5UGF0aC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE1OTI0YzMzZjFmN2IyOTFmNzRiMDFhMWZiODE1ODFmZjM4
ODIxZTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRp
b24vSW5saW5lSXRlcmF0b3JMaW5lQm94TGVnYWN5UGF0aC5oCkBAIC0wLDAgKzEsOTIgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIklubGluZUl0ZXJhdG9yQm94TGVn
YWN5UGF0aC5oIgorI2luY2x1ZGUgIkxheW91dEludGVncmF0aW9uSW5saW5lQ29udGVudC5oIgor
I2luY2x1ZGUgIkxlZ2FjeVJvb3RJbmxpbmVCb3guaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
bmFtZXNwYWNlIElubGluZUl0ZXJhdG9yIHsKKworY2xhc3MgTGluZUJveEl0ZXJhdG9yTGVnYWN5
UGF0aCB7CitwdWJsaWM6CisgICAgTGluZUJveEl0ZXJhdG9yTGVnYWN5UGF0aChjb25zdCBMZWdh
Y3lSb290SW5saW5lQm94KiByb290SW5saW5lQm94KQorICAgICAgICA6IG1fcm9vdElubGluZUJv
eChyb290SW5saW5lQm94KQorICAgIHsKKyAgICB9CisgICAgTGluZUJveEl0ZXJhdG9yTGVnYWN5
UGF0aChMaW5lQm94SXRlcmF0b3JMZWdhY3lQYXRoJiYpID0gZGVmYXVsdDsKKyAgICBMaW5lQm94
SXRlcmF0b3JMZWdhY3lQYXRoKGNvbnN0IExpbmVCb3hJdGVyYXRvckxlZ2FjeVBhdGgmKSA9IGRl
ZmF1bHQ7CisgICAgTGluZUJveEl0ZXJhdG9yTGVnYWN5UGF0aCYgb3BlcmF0b3I9KGNvbnN0IExp
bmVCb3hJdGVyYXRvckxlZ2FjeVBhdGgmKSA9IGRlZmF1bHQ7CisgICAgTGluZUJveEl0ZXJhdG9y
TGVnYWN5UGF0aCYgb3BlcmF0b3I9KExpbmVCb3hJdGVyYXRvckxlZ2FjeVBhdGgmJikgPSBkZWZh
dWx0OworCisgICAgZmxvYXQgY29udGVudExvZ2ljYWxUb3AoKSBjb25zdCB7IHJldHVybiBtX3Jv
b3RJbmxpbmVCb3gtPmxpbmVUb3AoKS50b0Zsb2F0KCk7IH0KKyAgICBmbG9hdCBjb250ZW50TG9n
aWNhbEJvdHRvbSgpIGNvbnN0IHsgcmV0dXJuIG1fcm9vdElubGluZUJveC0+bGluZUJvdHRvbSgp
LnRvRmxvYXQoKTsgfQorICAgIGZsb2F0IGNvbnRlbnRMb2dpY2FsVG9wQWRqdXN0ZWRGb3JQcmVj
ZWRpbmdMaW5lQm94KCkgY29uc3QgeyByZXR1cm4gbV9yb290SW5saW5lQm94LT5zZWxlY3Rpb25U
b3AoKS50b0Zsb2F0KCk7IH0KKyAgICBmbG9hdCBjb250ZW50TG9naWNhbEJvdHRvbUFkanVzdGVk
Rm9yRm9sbG93aW5nTGluZUJveCgpIGNvbnN0IHsgcmV0dXJuIG1fcm9vdElubGluZUJveC0+c2Vs
ZWN0aW9uQm90dG9tKCkudG9GbG9hdCgpOyB9CisgICAgZmxvYXQgdG9wKCkgY29uc3QgeyByZXR1
cm4gbV9yb290SW5saW5lQm94LT5saW5lQm94VG9wKCkudG9GbG9hdCgpOyB9CisgICAgZmxvYXQg
Ym90dG9tKCkgY29uc3QgeyByZXR1cm4gbV9yb290SW5saW5lQm94LT5saW5lQm94Qm90dG9tKCku
dG9GbG9hdCgpOyB9CisKKyAgICBmbG9hdCBjb250ZW50TG9naWNhbExlZnQoKSBjb25zdCB7IHJl
dHVybiBtX3Jvb3RJbmxpbmVCb3gtPmxvZ2ljYWxMZWZ0KCk7IH0KKyAgICBmbG9hdCBjb250ZW50
TG9naWNhbFJpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9yb290SW5saW5lQm94LT5sb2dpY2FsUmln
aHQoKTsgfQorICAgIGJvb2wgaXNIb3Jpem9udGFsKCkgY29uc3QgeyByZXR1cm4gbV9yb290SW5s
aW5lQm94LT5pc0hvcml6b250YWwoKTsgfQorICAgIEZvbnRCYXNlbGluZSBiYXNlbGluZVR5cGUo
KSBjb25zdCB7IHJldHVybiBtX3Jvb3RJbmxpbmVCb3gtPmJhc2VsaW5lVHlwZSgpOyB9CisKKyAg
ICBjb25zdCBSZW5kZXJCbG9ja0Zsb3cmIGNvbnRhaW5pbmdCbG9jaygpIGNvbnN0IHsgcmV0dXJu
IG1fcm9vdElubGluZUJveC0+YmxvY2tGbG93KCk7IH0KKworICAgIFJlbmRlckZyYWdtZW50Q29u
dGFpbmVyKiBjb250YWluaW5nRnJhZ21lbnQoKSBjb25zdCB7IHJldHVybiBtX3Jvb3RJbmxpbmVC
b3gtPmNvbnRhaW5pbmdGcmFnbWVudCgpOyB9CisgICAgYm9vbCBpc0ZpcnN0QWZ0ZXJQYWdlQnJl
YWsoKSBjb25zdCB7IHJldHVybiBtX3Jvb3RJbmxpbmVCb3gtPmlzRmlyc3RBZnRlclBhZ2VCcmVh
aygpOyB9CisKKyAgICB2b2lkIHRyYXZlcnNlTmV4dCgpCisgICAgeworICAgICAgICBtX3Jvb3RJ
bmxpbmVCb3ggPSBtX3Jvb3RJbmxpbmVCb3gtPm5leHRSb290Qm94KCk7CisgICAgfQorCisgICAg
dm9pZCB0cmF2ZXJzZVByZXZpb3VzKCkKKyAgICB7CisgICAgICAgIG1fcm9vdElubGluZUJveCA9
IG1fcm9vdElubGluZUJveC0+cHJldlJvb3RCb3goKTsKKyAgICB9CisKKyAgICBib29sIG9wZXJh
dG9yPT0oY29uc3QgTGluZUJveEl0ZXJhdG9yTGVnYWN5UGF0aCYgb3RoZXIpIGNvbnN0IHsgcmV0
dXJuIG1fcm9vdElubGluZUJveCA9PSBvdGhlci5tX3Jvb3RJbmxpbmVCb3g7IH0KKworICAgIGJv
b2wgYXRFbmQoKSBjb25zdCB7IHJldHVybiAhbV9yb290SW5saW5lQm94OyB9CisKKyAgICBCb3hM
ZWdhY3lQYXRoIGZpcnN0TGVhZkJveCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4geyBt
X3Jvb3RJbmxpbmVCb3gtPmZpcnN0TGVhZkRlc2NlbmRhbnQoKSB9OworICAgIH0KKworICAgIEJv
eExlZ2FjeVBhdGggbGFzdExlYWZCb3goKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIHsg
bV9yb290SW5saW5lQm94LT5sYXN0TGVhZkRlc2NlbmRhbnQoKSB9OworICAgIH0KKworcHJpdmF0
ZToKKyAgICBjb25zdCBMZWdhY3lSb290SW5saW5lQm94KiBtX3Jvb3RJbmxpbmVCb3g7Cit9Owor
Cit9Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5s
aW5lSXRlcmF0b3JMaW5lQm94TW9kZXJuUGF0aC5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lu
dGVncmF0aW9uL0lubGluZUl0ZXJhdG9yTGluZUJveE1vZGVyblBhdGguaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43
MGJiYmI0MGY1NTBmMWMxNTg0MTA2N2JjYWIxOWZiZTcxMDIwN2IxCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yTGluZUJv
eE1vZGVyblBhdGguaApAQCAtMCwwICsxLDEyOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaWYgRU5BQkxFKExBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCisKKyNpbmNsdWRlICJJ
bmxpbmVJdGVyYXRvckJveE1vZGVyblBhdGguaCIKKyNpbmNsdWRlICJMYXlvdXRJbnRlZ3JhdGlv
bklubGluZUNvbnRlbnQuaCIKKyNpbmNsdWRlICJSZW5kZXJCbG9ja0Zsb3cuaCIKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworbmFtZXNwYWNlIElubGluZUl0ZXJhdG9yIHsKKworY2xhc3MgQm94TW9k
ZXJuUGF0aDsKKworY2xhc3MgTGluZUJveEl0ZXJhdG9yTW9kZXJuUGF0aCB7CitwdWJsaWM6Cisg
ICAgTGluZUJveEl0ZXJhdG9yTW9kZXJuUGF0aChjb25zdCBMYXlvdXRJbnRlZ3JhdGlvbjo6SW5s
aW5lQ29udGVudCYgaW5saW5lQ29udGVudCwgc2l6ZV90IGxpbmVJbmRleCkKKyAgICAgICAgOiBt
X2lubGluZUNvbnRlbnQoJmlubGluZUNvbnRlbnQpCisgICAgICAgICwgbV9saW5lSW5kZXgobGlu
ZUluZGV4KQorICAgIHsKKyAgICAgICAgQVNTRVJUKGxpbmVJbmRleCA8PSBsaW5lcygpLnNpemUo
KSk7CisgICAgfQorICAgIExpbmVCb3hJdGVyYXRvck1vZGVyblBhdGgoTGluZUJveEl0ZXJhdG9y
TW9kZXJuUGF0aCYmKSA9IGRlZmF1bHQ7CisgICAgTGluZUJveEl0ZXJhdG9yTW9kZXJuUGF0aChj
b25zdCBMaW5lQm94SXRlcmF0b3JNb2Rlcm5QYXRoJikgPSBkZWZhdWx0OworICAgIExpbmVCb3hJ
dGVyYXRvck1vZGVyblBhdGgmIG9wZXJhdG9yPShjb25zdCBMaW5lQm94SXRlcmF0b3JNb2Rlcm5Q
YXRoJikgPSBkZWZhdWx0OworICAgIExpbmVCb3hJdGVyYXRvck1vZGVyblBhdGgmIG9wZXJhdG9y
PShMaW5lQm94SXRlcmF0b3JNb2Rlcm5QYXRoJiYpID0gZGVmYXVsdDsKKworICAgIGZsb2F0IGNv
bnRlbnRMb2dpY2FsVG9wKCkgY29uc3QgeyByZXR1cm4gbGluZSgpLmVuY2xvc2luZ0NvbnRlbnRU
b3AoKTsgfQorICAgIGZsb2F0IGNvbnRlbnRMb2dpY2FsQm90dG9tKCkgY29uc3QgeyByZXR1cm4g
bGluZSgpLmVuY2xvc2luZ0NvbnRlbnRCb3R0b20oKTsgfQorICAgIGZsb2F0IHRvcCgpIGNvbnN0
IHsgcmV0dXJuIGxpbmUoKS5saW5lQm94VG9wKCk7IH0KKyAgICBmbG9hdCBib3R0b20oKSBjb25z
dCB7IHJldHVybiBsaW5lKCkubGluZUJveEJvdHRvbSgpOyB9CisKKyAgICBmbG9hdCBjb250ZW50
TG9naWNhbFRvcEFkanVzdGVkRm9yUHJlY2VkaW5nTGluZUJveCgpIGNvbnN0IHsgcmV0dXJuICFt
X2xpbmVJbmRleCA/IGNvbnRlbnRMb2dpY2FsVG9wKCkgOiBMaW5lQm94SXRlcmF0b3JNb2Rlcm5Q
YXRoKCptX2lubGluZUNvbnRlbnQsIG1fbGluZUluZGV4IC0gMSkuY29udGVudExvZ2ljYWxCb3R0
b21BZGp1c3RlZEZvckZvbGxvd2luZ0xpbmVCb3goKTsgfQorICAgIC8vIEZJWE1FOiBJbXBsZW1l
bnQuCisgICAgZmxvYXQgY29udGVudExvZ2ljYWxCb3R0b21BZGp1c3RlZEZvckZvbGxvd2luZ0xp
bmVCb3goKSBjb25zdCB7IHJldHVybiBjb250ZW50TG9naWNhbEJvdHRvbSgpOyB9CisKKyAgICBm
bG9hdCBjb250ZW50TG9naWNhbExlZnQoKSBjb25zdCB7IHJldHVybiBsaW5lKCkubGluZUJveExl
ZnQoKSArIGxpbmUoKS5jb250ZW50TG9naWNhbE9mZnNldCgpOyB9CisgICAgZmxvYXQgY29udGVu
dExvZ2ljYWxSaWdodCgpIGNvbnN0IHsgcmV0dXJuIGNvbnRlbnRMb2dpY2FsTGVmdCgpICsgbGlu
ZSgpLmNvbnRlbnRMb2dpY2FsV2lkdGgoKTsgfQorICAgIGJvb2wgaXNIb3Jpem9udGFsKCkgY29u
c3QgeyByZXR1cm4gbGluZSgpLmlzSG9yaXpvbnRhbCgpOyB9CisgICAgRm9udEJhc2VsaW5lIGJh
c2VsaW5lVHlwZSgpIGNvbnN0IHsgcmV0dXJuIGxpbmUoKS5iYXNlbGluZVR5cGUoKTsgfQorCisg
ICAgY29uc3QgUmVuZGVyQmxvY2tGbG93JiBjb250YWluaW5nQmxvY2soKSBjb25zdCB7IHJldHVy
biBtX2lubGluZUNvbnRlbnQtPmNvbnRhaW5pbmdCbG9jaygpOyB9CisKKyAgICBSZW5kZXJGcmFn
bWVudENvbnRhaW5lciogY29udGFpbmluZ0ZyYWdtZW50KCkgY29uc3QgeyByZXR1cm4gbnVsbHB0
cjsgfQorICAgIGJvb2wgaXNGaXJzdEFmdGVyUGFnZUJyZWFrKCkgY29uc3QgeyByZXR1cm4gZmFs
c2U7IH0KKworICAgIHZvaWQgdHJhdmVyc2VOZXh0KCkKKyAgICB7CisgICAgICAgIEFTU0VSVCgh
YXRFbmQoKSk7CisKKyAgICAgICAgKyttX2xpbmVJbmRleDsKKyAgICB9CisKKyAgICB2b2lkIHRy
YXZlcnNlUHJldmlvdXMoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKCFhdEVuZCgpKTsKKworICAg
ICAgICBpZiAoIW1fbGluZUluZGV4KSB7CisgICAgICAgICAgICBzZXRBdEVuZCgpOworICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgLS1tX2xpbmVJbmRleDsKKyAgICB9
CisKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgTGluZUJveEl0ZXJhdG9yTW9kZXJuUGF0aCYg
b3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1faW5saW5lQ29udGVudCA9PSBvdGhlci5tX2lubGluZUNv
bnRlbnQgJiYgbV9saW5lSW5kZXggPT0gb3RoZXIubV9saW5lSW5kZXg7IH0KKworICAgIGJvb2wg
YXRFbmQoKSBjb25zdCB7IHJldHVybiBtX2xpbmVJbmRleCA9PSBsaW5lcygpLnNpemUoKTsgfQor
CisgICAgQm94TW9kZXJuUGF0aCBmaXJzdExlYWZCb3goKSBjb25zdAorICAgIHsKKyAgICAgICAg
aWYgKCFsaW5lKCkuYm94Q291bnQoKSkKKyAgICAgICAgICAgIHJldHVybiB7ICptX2lubGluZUNv
bnRlbnQgfTsKKyAgICAgICAgYXV0byBydW5JdGVyYXRvciA9IEJveE1vZGVyblBhdGggeyAqbV9p
bmxpbmVDb250ZW50LCBsaW5lKCkuZmlyc3RCb3hJbmRleCgpIH07CisgICAgICAgIGlmIChydW5J
dGVyYXRvci5ib3goKS5pc0lubGluZUJveCgpKQorICAgICAgICAgICAgcnVuSXRlcmF0b3IudHJh
dmVyc2VOZXh0T25MaW5lKCk7CisgICAgICAgIHJldHVybiBydW5JdGVyYXRvcjsKKyAgICB9CisK
KyAgICBCb3hNb2Rlcm5QYXRoIGxhc3RMZWFmQm94KCkgY29uc3QKKyAgICB7CisgICAgICAgIGF1
dG8gYm94Q291bnQgPSBsaW5lKCkuYm94Q291bnQoKTsKKyAgICAgICAgaWYgKCFib3hDb3VudCkK
KyAgICAgICAgICAgIHJldHVybiB7ICptX2lubGluZUNvbnRlbnQgfTsKKyAgICAgICAgYXV0byBy
dW5JdGVyYXRvciA9IEJveE1vZGVyblBhdGggeyAqbV9pbmxpbmVDb250ZW50LCBsaW5lKCkuZmly
c3RCb3hJbmRleCgpICsgYm94Q291bnQgLSAxIH07CisgICAgICAgIGlmIChydW5JdGVyYXRvci5i
b3goKS5pc0lubGluZUJveCgpKQorICAgICAgICAgICAgcnVuSXRlcmF0b3IudHJhdmVyc2VQcmV2
aW91c09uTGluZSgpOworICAgICAgICByZXR1cm4gcnVuSXRlcmF0b3I7CisgICAgfQorCitwcml2
YXRlOgorICAgIHZvaWQgc2V0QXRFbmQoKSB7IG1fbGluZUluZGV4ID0gbGluZXMoKS5zaXplKCk7
IH0KKworICAgIGNvbnN0IExheW91dEludGVncmF0aW9uOjpJbmxpbmVDb250ZW50OjpMaW5lcyYg
bGluZXMoKSBjb25zdCB7IHJldHVybiBtX2lubGluZUNvbnRlbnQtPmxpbmVzOyB9CisgICAgY29u
c3QgTGF5b3V0SW50ZWdyYXRpb246OkxpbmUmIGxpbmUoKSBjb25zdCB7IHJldHVybiBsaW5lcygp
W21fbGluZUluZGV4XTsgfQorCisgICAgUmVmUHRyPGNvbnN0IExheW91dEludGVncmF0aW9uOjpJ
bmxpbmVDb250ZW50PiBtX2lubGluZUNvbnRlbnQ7CisgICAgc2l6ZV90IG1fbGluZUluZGV4IHsg
MCB9OworfTsKKworfQorfQorCisjZW5kaWYKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yTGluZUxlZ2FjeVBhdGguaCBiL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRvckxpbmVMZWdhY3lQYXRo
LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ2MDk0MzYyMzEyNjJiMjg0ZDdkZjNh
YzgwZWY5NjI3NWI4NjY5ZmMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9y
TGluZUxlZ2FjeVBhdGguaAorKysgL2Rldi9udWxsCkBAIC0xLDkyICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgot
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
LSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgIklubGluZUl0ZXJhdG9yQm94TGVnYWN5UGF0
aC5oIgotI2luY2x1ZGUgIkxheW91dEludGVncmF0aW9uSW5saW5lQ29udGVudC5oIgotI2luY2x1
ZGUgIkxlZ2FjeVJvb3RJbmxpbmVCb3guaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotbmFtZXNw
YWNlIElubGluZUl0ZXJhdG9yIHsKLQotY2xhc3MgTGluZUl0ZXJhdG9yTGVnYWN5UGF0aCB7Ci1w
dWJsaWM6Ci0gICAgTGluZUl0ZXJhdG9yTGVnYWN5UGF0aChjb25zdCBMZWdhY3lSb290SW5saW5l
Qm94KiByb290SW5saW5lQm94KQotICAgICAgICA6IG1fcm9vdElubGluZUJveChyb290SW5saW5l
Qm94KQotICAgIHsKLSAgICB9Ci0gICAgTGluZUl0ZXJhdG9yTGVnYWN5UGF0aChMaW5lSXRlcmF0
b3JMZWdhY3lQYXRoJiYpID0gZGVmYXVsdDsKLSAgICBMaW5lSXRlcmF0b3JMZWdhY3lQYXRoKGNv
bnN0IExpbmVJdGVyYXRvckxlZ2FjeVBhdGgmKSA9IGRlZmF1bHQ7Ci0gICAgTGluZUl0ZXJhdG9y
TGVnYWN5UGF0aCYgb3BlcmF0b3I9KGNvbnN0IExpbmVJdGVyYXRvckxlZ2FjeVBhdGgmKSA9IGRl
ZmF1bHQ7Ci0gICAgTGluZUl0ZXJhdG9yTGVnYWN5UGF0aCYgb3BlcmF0b3I9KExpbmVJdGVyYXRv
ckxlZ2FjeVBhdGgmJikgPSBkZWZhdWx0OwotCi0gICAgZmxvYXQgY29udGVudExvZ2ljYWxUb3Ao
KSBjb25zdCB7IHJldHVybiBtX3Jvb3RJbmxpbmVCb3gtPmxpbmVUb3AoKS50b0Zsb2F0KCk7IH0K
LSAgICBmbG9hdCBjb250ZW50TG9naWNhbEJvdHRvbSgpIGNvbnN0IHsgcmV0dXJuIG1fcm9vdElu
bGluZUJveC0+bGluZUJvdHRvbSgpLnRvRmxvYXQoKTsgfQotICAgIGZsb2F0IGNvbnRlbnRMb2dp
Y2FsVG9wQWRqdXN0ZWRGb3JQcmVjZWRpbmdMaW5lKCkgY29uc3QgeyByZXR1cm4gbV9yb290SW5s
aW5lQm94LT5zZWxlY3Rpb25Ub3AoKS50b0Zsb2F0KCk7IH0KLSAgICBmbG9hdCBjb250ZW50TG9n
aWNhbEJvdHRvbUFkanVzdGVkRm9yRm9sbG93aW5nTGluZSgpIGNvbnN0IHsgcmV0dXJuIG1fcm9v
dElubGluZUJveC0+c2VsZWN0aW9uQm90dG9tKCkudG9GbG9hdCgpOyB9Ci0gICAgZmxvYXQgbGlu
ZUJveFRvcCgpIGNvbnN0IHsgcmV0dXJuIG1fcm9vdElubGluZUJveC0+bGluZUJveFRvcCgpLnRv
RmxvYXQoKTsgfQotICAgIGZsb2F0IGxpbmVCb3hCb3R0b20oKSBjb25zdCB7IHJldHVybiBtX3Jv
b3RJbmxpbmVCb3gtPmxpbmVCb3hCb3R0b20oKS50b0Zsb2F0KCk7IH0KLQotICAgIGZsb2F0IGNv
bnRlbnRMb2dpY2FsTGVmdCgpIGNvbnN0IHsgcmV0dXJuIG1fcm9vdElubGluZUJveC0+bG9naWNh
bExlZnQoKTsgfQotICAgIGZsb2F0IGNvbnRlbnRMb2dpY2FsUmlnaHQoKSBjb25zdCB7IHJldHVy
biBtX3Jvb3RJbmxpbmVCb3gtPmxvZ2ljYWxSaWdodCgpOyB9Ci0gICAgYm9vbCBpc0hvcml6b250
YWwoKSBjb25zdCB7IHJldHVybiBtX3Jvb3RJbmxpbmVCb3gtPmlzSG9yaXpvbnRhbCgpOyB9Ci0g
ICAgRm9udEJhc2VsaW5lIGJhc2VsaW5lVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fcm9vdElubGlu
ZUJveC0+YmFzZWxpbmVUeXBlKCk7IH0KLQotICAgIGNvbnN0IFJlbmRlckJsb2NrRmxvdyYgY29u
dGFpbmluZ0Jsb2NrKCkgY29uc3QgeyByZXR1cm4gbV9yb290SW5saW5lQm94LT5ibG9ja0Zsb3co
KTsgfQotCi0gICAgUmVuZGVyRnJhZ21lbnRDb250YWluZXIqIGNvbnRhaW5pbmdGcmFnbWVudCgp
IGNvbnN0IHsgcmV0dXJuIG1fcm9vdElubGluZUJveC0+Y29udGFpbmluZ0ZyYWdtZW50KCk7IH0K
LSAgICBib29sIGlzRmlyc3RBZnRlclBhZ2VCcmVhaygpIGNvbnN0IHsgcmV0dXJuIG1fcm9vdElu
bGluZUJveC0+aXNGaXJzdEFmdGVyUGFnZUJyZWFrKCk7IH0KLQotICAgIHZvaWQgdHJhdmVyc2VO
ZXh0KCkKLSAgICB7Ci0gICAgICAgIG1fcm9vdElubGluZUJveCA9IG1fcm9vdElubGluZUJveC0+
bmV4dFJvb3RCb3goKTsKLSAgICB9Ci0KLSAgICB2b2lkIHRyYXZlcnNlUHJldmlvdXMoKQotICAg
IHsKLSAgICAgICAgbV9yb290SW5saW5lQm94ID0gbV9yb290SW5saW5lQm94LT5wcmV2Um9vdEJv
eCgpOwotICAgIH0KLQotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBMaW5lSXRlcmF0b3JMZWdh
Y3lQYXRoJiBvdGhlcikgY29uc3QgeyByZXR1cm4gbV9yb290SW5saW5lQm94ID09IG90aGVyLm1f
cm9vdElubGluZUJveDsgfQotCi0gICAgYm9vbCBhdEVuZCgpIGNvbnN0IHsgcmV0dXJuICFtX3Jv
b3RJbmxpbmVCb3g7IH0KLQotICAgIEJveExlZ2FjeVBhdGggZmlyc3RMZWFmQm94KCkgY29uc3QK
LSAgICB7Ci0gICAgICAgIHJldHVybiB7IG1fcm9vdElubGluZUJveC0+Zmlyc3RMZWFmRGVzY2Vu
ZGFudCgpIH07Ci0gICAgfQotCi0gICAgQm94TGVnYWN5UGF0aCBsYXN0TGVhZkJveCgpIGNvbnN0
Ci0gICAgewotICAgICAgICByZXR1cm4geyBtX3Jvb3RJbmxpbmVCb3gtPmxhc3RMZWFmRGVzY2Vu
ZGFudCgpIH07Ci0gICAgfQotCi1wcml2YXRlOgotICAgIGNvbnN0IExlZ2FjeVJvb3RJbmxpbmVC
b3gqIG1fcm9vdElubGluZUJveDsKLX07Ci0KLX0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRvckxpbmVNb2Rlcm5QYXRoLmggYi9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JMaW5lTW9kZXJu
UGF0aC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhM2YxYzJjYjU2ZTk5MTg3Y2Qx
MDIyOTRhMmE1MDMyMDczNjE3OGYxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVy
YXRvckxpbmVNb2Rlcm5QYXRoLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMjkgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKExBWU9VVF9GT1JNQVRUSU5HX0NP
TlRFWFQpCi0KLSNpbmNsdWRlICJJbmxpbmVJdGVyYXRvckJveE1vZGVyblBhdGguaCIKLSNpbmNs
dWRlICJMYXlvdXRJbnRlZ3JhdGlvbklubGluZUNvbnRlbnQuaCIKLSNpbmNsdWRlICJSZW5kZXJC
bG9ja0Zsb3cuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotbmFtZXNwYWNlIElubGluZUl0ZXJh
dG9yIHsKLQotY2xhc3MgQm94TW9kZXJuUGF0aDsKLQotY2xhc3MgTGluZUl0ZXJhdG9yTW9kZXJu
UGF0aCB7Ci1wdWJsaWM6Ci0gICAgTGluZUl0ZXJhdG9yTW9kZXJuUGF0aChjb25zdCBMYXlvdXRJ
bnRlZ3JhdGlvbjo6SW5saW5lQ29udGVudCYgaW5saW5lQ29udGVudCwgc2l6ZV90IGxpbmVJbmRl
eCkKLSAgICAgICAgOiBtX2lubGluZUNvbnRlbnQoJmlubGluZUNvbnRlbnQpCi0gICAgICAgICwg
bV9saW5lSW5kZXgobGluZUluZGV4KQotICAgIHsKLSAgICAgICAgQVNTRVJUKGxpbmVJbmRleCA8
PSBsaW5lcygpLnNpemUoKSk7Ci0gICAgfQotICAgIExpbmVJdGVyYXRvck1vZGVyblBhdGgoTGlu
ZUl0ZXJhdG9yTW9kZXJuUGF0aCYmKSA9IGRlZmF1bHQ7Ci0gICAgTGluZUl0ZXJhdG9yTW9kZXJu
UGF0aChjb25zdCBMaW5lSXRlcmF0b3JNb2Rlcm5QYXRoJikgPSBkZWZhdWx0OwotICAgIExpbmVJ
dGVyYXRvck1vZGVyblBhdGgmIG9wZXJhdG9yPShjb25zdCBMaW5lSXRlcmF0b3JNb2Rlcm5QYXRo
JikgPSBkZWZhdWx0OwotICAgIExpbmVJdGVyYXRvck1vZGVyblBhdGgmIG9wZXJhdG9yPShMaW5l
SXRlcmF0b3JNb2Rlcm5QYXRoJiYpID0gZGVmYXVsdDsKLQotICAgIGZsb2F0IGNvbnRlbnRMb2dp
Y2FsVG9wKCkgY29uc3QgeyByZXR1cm4gbGluZSgpLmVuY2xvc2luZ0NvbnRlbnRUb3AoKTsgfQot
ICAgIGZsb2F0IGNvbnRlbnRMb2dpY2FsQm90dG9tKCkgY29uc3QgeyByZXR1cm4gbGluZSgpLmVu
Y2xvc2luZ0NvbnRlbnRCb3R0b20oKTsgfQotICAgIGZsb2F0IGxpbmVCb3hUb3AoKSBjb25zdCB7
IHJldHVybiBsaW5lKCkubGluZUJveFRvcCgpOyB9Ci0gICAgZmxvYXQgbGluZUJveEJvdHRvbSgp
IGNvbnN0IHsgcmV0dXJuIGxpbmUoKS5saW5lQm94Qm90dG9tKCk7IH0KLQotICAgIGZsb2F0IGNv
bnRlbnRMb2dpY2FsVG9wQWRqdXN0ZWRGb3JQcmVjZWRpbmdMaW5lKCkgY29uc3QgeyByZXR1cm4g
IW1fbGluZUluZGV4ID8gY29udGVudExvZ2ljYWxUb3AoKSA6IExpbmVJdGVyYXRvck1vZGVyblBh
dGgoKm1faW5saW5lQ29udGVudCwgbV9saW5lSW5kZXggLSAxKS5jb250ZW50TG9naWNhbEJvdHRv
bUFkanVzdGVkRm9yRm9sbG93aW5nTGluZSgpOyB9Ci0gICAgLy8gRklYTUU6IEltcGxlbWVudC4K
LSAgICBmbG9hdCBjb250ZW50TG9naWNhbEJvdHRvbUFkanVzdGVkRm9yRm9sbG93aW5nTGluZSgp
IGNvbnN0IHsgcmV0dXJuIGNvbnRlbnRMb2dpY2FsQm90dG9tKCk7IH0KLQotICAgIGZsb2F0IGNv
bnRlbnRMb2dpY2FsTGVmdCgpIGNvbnN0IHsgcmV0dXJuIGxpbmUoKS5saW5lQm94TGVmdCgpICsg
bGluZSgpLmNvbnRlbnRMb2dpY2FsT2Zmc2V0KCk7IH0KLSAgICBmbG9hdCBjb250ZW50TG9naWNh
bFJpZ2h0KCkgY29uc3QgeyByZXR1cm4gY29udGVudExvZ2ljYWxMZWZ0KCkgKyBsaW5lKCkuY29u
dGVudExvZ2ljYWxXaWR0aCgpOyB9Ci0gICAgYm9vbCBpc0hvcml6b250YWwoKSBjb25zdCB7IHJl
dHVybiBsaW5lKCkuaXNIb3Jpem9udGFsKCk7IH0KLSAgICBGb250QmFzZWxpbmUgYmFzZWxpbmVU
eXBlKCkgY29uc3QgeyByZXR1cm4gbGluZSgpLmJhc2VsaW5lVHlwZSgpOyB9Ci0KLSAgICBjb25z
dCBSZW5kZXJCbG9ja0Zsb3cmIGNvbnRhaW5pbmdCbG9jaygpIGNvbnN0IHsgcmV0dXJuIG1faW5s
aW5lQ29udGVudC0+Y29udGFpbmluZ0Jsb2NrKCk7IH0KLQotICAgIFJlbmRlckZyYWdtZW50Q29u
dGFpbmVyKiBjb250YWluaW5nRnJhZ21lbnQoKSBjb25zdCB7IHJldHVybiBudWxscHRyOyB9Ci0g
ICAgYm9vbCBpc0ZpcnN0QWZ0ZXJQYWdlQnJlYWsoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQot
Ci0gICAgdm9pZCB0cmF2ZXJzZU5leHQoKQotICAgIHsKLSAgICAgICAgQVNTRVJUKCFhdEVuZCgp
KTsKLQotICAgICAgICArK21fbGluZUluZGV4OwotICAgIH0KLQotICAgIHZvaWQgdHJhdmVyc2VQ
cmV2aW91cygpCi0gICAgewotICAgICAgICBBU1NFUlQoIWF0RW5kKCkpOwotCi0gICAgICAgIGlm
ICghbV9saW5lSW5kZXgpIHsKLSAgICAgICAgICAgIHNldEF0RW5kKCk7Ci0gICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICAtLW1fbGluZUluZGV4OwotICAgIH0KLQotICAg
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBMaW5lSXRlcmF0b3JNb2Rlcm5QYXRoJiBvdGhlcikgY29u
c3QgeyByZXR1cm4gbV9pbmxpbmVDb250ZW50ID09IG90aGVyLm1faW5saW5lQ29udGVudCAmJiBt
X2xpbmVJbmRleCA9PSBvdGhlci5tX2xpbmVJbmRleDsgfQotCi0gICAgYm9vbCBhdEVuZCgpIGNv
bnN0IHsgcmV0dXJuIG1fbGluZUluZGV4ID09IGxpbmVzKCkuc2l6ZSgpOyB9Ci0KLSAgICBCb3hN
b2Rlcm5QYXRoIGZpcnN0TGVhZkJveCgpIGNvbnN0Ci0gICAgewotICAgICAgICBpZiAoIWxpbmUo
KS5ib3hDb3VudCgpKQotICAgICAgICAgICAgcmV0dXJuIHsgKm1faW5saW5lQ29udGVudCB9Owot
ICAgICAgICBhdXRvIHJ1bkl0ZXJhdG9yID0gQm94TW9kZXJuUGF0aCB7ICptX2lubGluZUNvbnRl
bnQsIGxpbmUoKS5maXJzdEJveEluZGV4KCkgfTsKLSAgICAgICAgaWYgKHJ1bkl0ZXJhdG9yLmJv
eCgpLmlzSW5saW5lQm94KCkpCi0gICAgICAgICAgICBydW5JdGVyYXRvci50cmF2ZXJzZU5leHRP
bkxpbmUoKTsKLSAgICAgICAgcmV0dXJuIHJ1bkl0ZXJhdG9yOwotICAgIH0KLQotICAgIEJveE1v
ZGVyblBhdGggbGFzdExlYWZCb3goKSBjb25zdAotICAgIHsKLSAgICAgICAgYXV0byBib3hDb3Vu
dCA9IGxpbmUoKS5ib3hDb3VudCgpOwotICAgICAgICBpZiAoIWJveENvdW50KQotICAgICAgICAg
ICAgcmV0dXJuIHsgKm1faW5saW5lQ29udGVudCB9OwotICAgICAgICBhdXRvIHJ1bkl0ZXJhdG9y
ID0gQm94TW9kZXJuUGF0aCB7ICptX2lubGluZUNvbnRlbnQsIGxpbmUoKS5maXJzdEJveEluZGV4
KCkgKyBib3hDb3VudCAtIDEgfTsKLSAgICAgICAgaWYgKHJ1bkl0ZXJhdG9yLmJveCgpLmlzSW5s
aW5lQm94KCkpCi0gICAgICAgICAgICBydW5JdGVyYXRvci50cmF2ZXJzZVByZXZpb3VzT25MaW5l
KCk7Ci0gICAgICAgIHJldHVybiBydW5JdGVyYXRvcjsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAg
dm9pZCBzZXRBdEVuZCgpIHsgbV9saW5lSW5kZXggPSBsaW5lcygpLnNpemUoKTsgfQotCi0gICAg
Y29uc3QgTGF5b3V0SW50ZWdyYXRpb246OklubGluZUNvbnRlbnQ6OkxpbmVzJiBsaW5lcygpIGNv
bnN0IHsgcmV0dXJuIG1faW5saW5lQ29udGVudC0+bGluZXM7IH0KLSAgICBjb25zdCBMYXlvdXRJ
bnRlZ3JhdGlvbjo6TGluZSYgbGluZSgpIGNvbnN0IHsgcmV0dXJuIGxpbmVzKClbbV9saW5lSW5k
ZXhdOyB9Ci0KLSAgICBSZWZQdHI8Y29uc3QgTGF5b3V0SW50ZWdyYXRpb246OklubGluZUNvbnRl
bnQ+IG1faW5saW5lQ29udGVudDsKLSAgICBzaXplX3QgbV9saW5lSW5kZXggeyAwIH07Ci19Owot
Ci19Ci19Ci0KLSNlbmRpZgotCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50
ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JMb2dpY2FsT3JkZXJUcmF2ZXJzYWwuY3BwIGIvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yTG9naWNhbE9yZGVyVHJh
dmVyc2FsLmNwcAppbmRleCA1OGFlNzlmNzc2NDRjODc2ZmZlZWM3ZjAxMTMzN2NkNmZhMmEzMDY5
Li44ZjRiYzIwMmRkZGUxYTVhNTNmM2RhMGMwYzdmMTY3MDAyMzRiNjc4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JMb2dpY2FsT3Jk
ZXJUcmF2ZXJzYWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9J
bmxpbmVJdGVyYXRvckxvZ2ljYWxPcmRlclRyYXZlcnNhbC5jcHAKQEAgLTI2LDcgKzI2LDcgQEAK
ICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJJbmxpbmVJdGVyYXRvckxvZ2ljYWxPcmRl
clRyYXZlcnNhbC5oIgogCi0jaW5jbHVkZSAiSW5saW5lSXRlcmF0b3JMaW5lLmgiCisjaW5jbHVk
ZSAiSW5saW5lSXRlcmF0b3JMaW5lQm94LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVz
cGFjZSBJbmxpbmVJdGVyYXRvciB7CkBAIC04OSwxMiArODksMTIgQEAgVGV4dEJveEl0ZXJhdG9y
IG5leHRUZXh0Qm94SW5Mb2dpY2FsT3JkZXIoY29uc3QgVGV4dEJveEl0ZXJhdG9yJiB0ZXh0Qm94
LCBUZXh0TG8KICAgICByZXR1cm4geyB9OwogfQogCi1zdGF0aWMgTGluZUxvZ2ljYWxPcmRlckNh
Y2hlIG1ha2VMaW5lTG9naWNhbE9yZGVyQ2FjaGUoY29uc3QgTGluZUl0ZXJhdG9yJiBsaW5lKQor
c3RhdGljIExpbmVMb2dpY2FsT3JkZXJDYWNoZSBtYWtlTGluZUxvZ2ljYWxPcmRlckNhY2hlKGNv
bnN0IExpbmVCb3hJdGVyYXRvciYgbGluZUJveCkKIHsKICAgICBhdXRvIGNhY2hlID0gbWFrZVVu
aXF1ZTxMaW5lTG9naWNhbE9yZGVyQ2FjaGVEYXRhPigpOwogCi0gICAgY2FjaGUtPmxpbmUgPSBs
aW5lOwotICAgIGNhY2hlLT5ib3hlcyA9IGxlYWZCb3hlc0luTG9naWNhbE9yZGVyKGxpbmUsIFtd
KGF1dG8gZmlyc3QsIGF1dG8gbGFzdCkgeworICAgIGNhY2hlLT5saW5lQm94ID0gbGluZUJveDsK
KyAgICBjYWNoZS0+Ym94ZXMgPSBsZWFmQm94ZXNJbkxvZ2ljYWxPcmRlcihsaW5lQm94LCBbXShh
dXRvIGZpcnN0LCBhdXRvIGxhc3QpIHsKICAgICAgICAgc3RkOjpyZXZlcnNlKGZpcnN0LCBsYXN0
KTsKICAgICB9KTsKIApAQCAtMTAzLDkgKzEwMyw5IEBAIHN0YXRpYyBMaW5lTG9naWNhbE9yZGVy
Q2FjaGUgbWFrZUxpbmVMb2dpY2FsT3JkZXJDYWNoZShjb25zdCBMaW5lSXRlcmF0b3ImIGxpbmUp
CiAKIHN0YXRpYyB2b2lkIHVwZGF0ZUxpbmVMb2dpY2FsT3JkZXJDYWNoZUlmTmVlZGVkKGNvbnN0
IExlYWZCb3hJdGVyYXRvciYgYm94LCBMaW5lTG9naWNhbE9yZGVyQ2FjaGUmIGNhY2hlKQogewot
ICAgIGF1dG8gbGluZSA9IGJveC0+bGluZSgpOwotICAgIGlmICghY2FjaGUgfHwgY2FjaGUtPmxp
bmUgIT0gbGluZSkKLSAgICAgICAgY2FjaGUgPSBtYWtlTGluZUxvZ2ljYWxPcmRlckNhY2hlKGxp
bmUpOworICAgIGF1dG8gbGluZUJveCA9IGJveC0+bGluZUJveCgpOworICAgIGlmICghY2FjaGUg
fHwgY2FjaGUtPmxpbmVCb3ggIT0gbGluZUJveCkKKyAgICAgICAgY2FjaGUgPSBtYWtlTGluZUxv
Z2ljYWxPcmRlckNhY2hlKGxpbmVCb3gpOwogCiAgICAgaWYgKGNhY2hlLT5pbmRleCA8IGNhY2hl
LT5ib3hlcy5zaXplKCkgJiYgY2FjaGUtPmJveGVzW2NhY2hlLT5pbmRleF0gPT0gYm94KQogICAg
ICAgICByZXR1cm47CkBAIC0xMTUsOSArMTE1LDkgQEAgc3RhdGljIHZvaWQgdXBkYXRlTGluZUxv
Z2ljYWxPcmRlckNhY2hlSWZOZWVkZWQoY29uc3QgTGVhZkJveEl0ZXJhdG9yJiBib3gsIExpbmUK
ICAgICBBU1NFUlQoY2FjaGUtPmluZGV4ICE9IG5vdEZvdW5kKTsKIH0KIAotTGVhZkJveEl0ZXJh
dG9yIGZpcnN0TGVhZk9uTGluZUluTG9naWNhbE9yZGVyKGNvbnN0IExpbmVJdGVyYXRvciYgbGlu
ZSwgTGluZUxvZ2ljYWxPcmRlckNhY2hlJiBjYWNoZSkKK0xlYWZCb3hJdGVyYXRvciBmaXJzdExl
YWZPbkxpbmVJbkxvZ2ljYWxPcmRlcihjb25zdCBMaW5lQm94SXRlcmF0b3ImIGxpbmVCb3gsIExp
bmVMb2dpY2FsT3JkZXJDYWNoZSYgY2FjaGUpCiB7Ci0gICAgY2FjaGUgPSBtYWtlTGluZUxvZ2lj
YWxPcmRlckNhY2hlKGxpbmUpOworICAgIGNhY2hlID0gbWFrZUxpbmVMb2dpY2FsT3JkZXJDYWNo
ZShsaW5lQm94KTsKIAogICAgIGlmIChjYWNoZS0+Ym94ZXMuaXNFbXB0eSgpKQogICAgICAgICBy
ZXR1cm4geyB9OwpAQCAtMTI2LDkgKzEyNiw5IEBAIExlYWZCb3hJdGVyYXRvciBmaXJzdExlYWZP
bkxpbmVJbkxvZ2ljYWxPcmRlcihjb25zdCBMaW5lSXRlcmF0b3ImIGxpbmUsIExpbmVMb2dpCiAg
ICAgcmV0dXJuIGNhY2hlLT5ib3hlcy5maXJzdCgpOwogfQogCi1MZWFmQm94SXRlcmF0b3IgbGFz
dExlYWZPbkxpbmVJbkxvZ2ljYWxPcmRlcihjb25zdCBMaW5lSXRlcmF0b3ImIGxpbmUsIExpbmVM
b2dpY2FsT3JkZXJDYWNoZSYgY2FjaGUpCitMZWFmQm94SXRlcmF0b3IgbGFzdExlYWZPbkxpbmVJ
bkxvZ2ljYWxPcmRlcihjb25zdCBMaW5lQm94SXRlcmF0b3ImIGxpbmVCb3gsIExpbmVMb2dpY2Fs
T3JkZXJDYWNoZSYgY2FjaGUpCiB7Ci0gICAgY2FjaGUgPSBtYWtlTGluZUxvZ2ljYWxPcmRlckNh
Y2hlKGxpbmUpOworICAgIGNhY2hlID0gbWFrZUxpbmVMb2dpY2FsT3JkZXJDYWNoZShsaW5lQm94
KTsKIAogICAgIGlmIChjYWNoZS0+Ym94ZXMuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4geyB9
OwpAQCAtMTYxLDE3ICsxNjEsMTcgQEAgTGVhZkJveEl0ZXJhdG9yIHByZXZpb3VzTGVhZk9uTGlu
ZUluTG9naWNhbE9yZGVyKGNvbnN0IExlYWZCb3hJdGVyYXRvciYgYm94LCBMaW4KICAgICByZXR1
cm4gY2FjaGUtPmJveGVzW2NhY2hlLT5pbmRleF07CiB9CiAKLUxlYWZCb3hJdGVyYXRvciBmaXJz
dExlYWZPbkxpbmVJbkxvZ2ljYWxPcmRlcldpdGhOb2RlKGNvbnN0IExpbmVJdGVyYXRvciYgbGlu
ZSwgTGluZUxvZ2ljYWxPcmRlckNhY2hlJiBjYWNoZSkKK0xlYWZCb3hJdGVyYXRvciBmaXJzdExl
YWZPbkxpbmVJbkxvZ2ljYWxPcmRlcldpdGhOb2RlKGNvbnN0IExpbmVCb3hJdGVyYXRvciYgbGlu
ZUJveCwgTGluZUxvZ2ljYWxPcmRlckNhY2hlJiBjYWNoZSkKIHsKLSAgICBhdXRvIGJveCA9IGZp
cnN0TGVhZk9uTGluZUluTG9naWNhbE9yZGVyKGxpbmUsIGNhY2hlKTsKKyAgICBhdXRvIGJveCA9
IGZpcnN0TGVhZk9uTGluZUluTG9naWNhbE9yZGVyKGxpbmVCb3gsIGNhY2hlKTsKICAgICB3aGls
ZSAoYm94ICYmICFib3gtPnJlbmRlcmVyKCkubm9kZSgpKQogICAgICAgICBib3ggPSBuZXh0TGVh
Zk9uTGluZUluTG9naWNhbE9yZGVyKGJveCwgY2FjaGUpOwogICAgIHJldHVybiBib3g7CiB9CiAK
LUxlYWZCb3hJdGVyYXRvciBsYXN0TGVhZk9uTGluZUluTG9naWNhbE9yZGVyV2l0aE5vZGUoY29u
c3QgTGluZUl0ZXJhdG9yJiBsaW5lLCBMaW5lTG9naWNhbE9yZGVyQ2FjaGUmIGNhY2hlKQorTGVh
ZkJveEl0ZXJhdG9yIGxhc3RMZWFmT25MaW5lSW5Mb2dpY2FsT3JkZXJXaXRoTm9kZShjb25zdCBM
aW5lQm94SXRlcmF0b3ImIGxpbmVCb3gsIExpbmVMb2dpY2FsT3JkZXJDYWNoZSYgY2FjaGUpCiB7
Ci0gICAgYXV0byBib3ggPSBsYXN0TGVhZk9uTGluZUluTG9naWNhbE9yZGVyKGxpbmUsIGNhY2hl
KTsKKyAgICBhdXRvIGJveCA9IGxhc3RMZWFmT25MaW5lSW5Mb2dpY2FsT3JkZXIobGluZUJveCwg
Y2FjaGUpOwogICAgIHdoaWxlIChib3ggJiYgIWJveC0+cmVuZGVyZXIoKS5ub2RlKCkpCiAgICAg
ICAgIGJveCA9IHByZXZpb3VzTGVhZk9uTGluZUluTG9naWNhbE9yZGVyKGJveCwgY2FjaGUpOwog
ICAgIHJldHVybiBib3g7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdy
YXRpb24vSW5saW5lSXRlcmF0b3JMb2dpY2FsT3JkZXJUcmF2ZXJzYWwuaCBiL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRvckxvZ2ljYWxPcmRlclRyYXZlcnNh
bC5oCmluZGV4IDI4MDY5ODcwNDY3NzkwMWIxMWFhOTQ4NGIyMDliYjgwMTc2NjQ5NDMuLmI1YWYw
NDBiZDNmZjAzMmQzODE4MTNkNzY5NmU0NWE1ZWM0MTg3ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRvckxvZ2ljYWxPcmRlclRyYXZl
cnNhbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVy
YXRvckxvZ2ljYWxPcmRlclRyYXZlcnNhbC5oCkBAIC0yNSw3ICsyNSw3IEBACiAKICNwcmFnbWEg
b25jZQogCi0jaW5jbHVkZSAiSW5saW5lSXRlcmF0b3JMaW5lLmgiCisjaW5jbHVkZSAiSW5saW5l
SXRlcmF0b3JMaW5lQm94LmgiCiAjaW5jbHVkZSAiSW5saW5lSXRlcmF0b3JUZXh0Qm94LmgiCiAj
aW5jbHVkZSAiUmVuZGVyQmxvY2tGbG93LmgiCiAKQEAgLTQ2LDM1ICs0NiwzNSBAQCBUZXh0Qm94
SXRlcmF0b3IgbmV4dFRleHRCb3hJbkxvZ2ljYWxPcmRlcihjb25zdCBUZXh0Qm94SXRlcmF0b3Im
LCBUZXh0TG9naWNhbE9yZAogc3RydWN0IExpbmVMb2dpY2FsT3JkZXJDYWNoZURhdGEgewogICAg
IFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKIAotICAgIExpbmVJdGVyYXRvciBsaW5l
OworICAgIExpbmVCb3hJdGVyYXRvciBsaW5lQm94OwogICAgIFZlY3RvcjxMZWFmQm94SXRlcmF0
b3I+IGJveGVzOwogICAgIHNpemVfdCBpbmRleCB7IDAgfTsKIH07CiB1c2luZyBMaW5lTG9naWNh
bE9yZGVyQ2FjaGUgPSBzdGQ6OnVuaXF1ZV9wdHI8TGluZUxvZ2ljYWxPcmRlckNhY2hlRGF0YT47
CiAKLUxlYWZCb3hJdGVyYXRvciBmaXJzdExlYWZPbkxpbmVJbkxvZ2ljYWxPcmRlcihjb25zdCBM
aW5lSXRlcmF0b3ImLCBMaW5lTG9naWNhbE9yZGVyQ2FjaGUmKTsKLUxlYWZCb3hJdGVyYXRvciBs
YXN0TGVhZk9uTGluZUluTG9naWNhbE9yZGVyKGNvbnN0IExpbmVJdGVyYXRvciYsIExpbmVMb2dp
Y2FsT3JkZXJDYWNoZSYpOworTGVhZkJveEl0ZXJhdG9yIGZpcnN0TGVhZk9uTGluZUluTG9naWNh
bE9yZGVyKGNvbnN0IExpbmVCb3hJdGVyYXRvciYsIExpbmVMb2dpY2FsT3JkZXJDYWNoZSYpOwor
TGVhZkJveEl0ZXJhdG9yIGxhc3RMZWFmT25MaW5lSW5Mb2dpY2FsT3JkZXIoY29uc3QgTGluZUJv
eEl0ZXJhdG9yJiwgTGluZUxvZ2ljYWxPcmRlckNhY2hlJik7CiBMZWFmQm94SXRlcmF0b3IgbmV4
dExlYWZPbkxpbmVJbkxvZ2ljYWxPcmRlcihjb25zdCBMZWFmQm94SXRlcmF0b3ImLCBMaW5lTG9n
aWNhbE9yZGVyQ2FjaGUmKTsKIExlYWZCb3hJdGVyYXRvciBwcmV2aW91c0xlYWZPbkxpbmVJbkxv
Z2ljYWxPcmRlcihjb25zdCBMZWFmQm94SXRlcmF0b3ImLCBMaW5lTG9naWNhbE9yZGVyQ2FjaGUm
KTsKIAotTGVhZkJveEl0ZXJhdG9yIGZpcnN0TGVhZk9uTGluZUluTG9naWNhbE9yZGVyV2l0aE5v
ZGUoY29uc3QgTGluZUl0ZXJhdG9yJiwgTGluZUxvZ2ljYWxPcmRlckNhY2hlJik7Ci1MZWFmQm94
SXRlcmF0b3IgbGFzdExlYWZPbkxpbmVJbkxvZ2ljYWxPcmRlcldpdGhOb2RlKGNvbnN0IExpbmVJ
dGVyYXRvciYsIExpbmVMb2dpY2FsT3JkZXJDYWNoZSYpOworTGVhZkJveEl0ZXJhdG9yIGZpcnN0
TGVhZk9uTGluZUluTG9naWNhbE9yZGVyV2l0aE5vZGUoY29uc3QgTGluZUJveEl0ZXJhdG9yJiwg
TGluZUxvZ2ljYWxPcmRlckNhY2hlJik7CitMZWFmQm94SXRlcmF0b3IgbGFzdExlYWZPbkxpbmVJ
bkxvZ2ljYWxPcmRlcldpdGhOb2RlKGNvbnN0IExpbmVCb3hJdGVyYXRvciYsIExpbmVMb2dpY2Fs
T3JkZXJDYWNoZSYpOwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBSZXZlcnNlRnVuY3Rpb24+Ci1WZWN0
b3I8TGVhZkJveEl0ZXJhdG9yPiBsZWFmQm94ZXNJbkxvZ2ljYWxPcmRlcihjb25zdCBMaW5lSXRl
cmF0b3ImIGxpbmUsIFJldmVyc2VGdW5jdGlvbiYmIHJldmVyc2VGdW5jdGlvbikKK1ZlY3RvcjxM
ZWFmQm94SXRlcmF0b3I+IGxlYWZCb3hlc0luTG9naWNhbE9yZGVyKGNvbnN0IExpbmVCb3hJdGVy
YXRvciYgbGluZUJveCwgUmV2ZXJzZUZ1bmN0aW9uJiYgcmV2ZXJzZUZ1bmN0aW9uKQogewogICAg
IFZlY3RvcjxMZWFmQm94SXRlcmF0b3I+IGJveGVzOwogCiAgICAgdW5zaWduZWQgY2hhciBtaW5M
ZXZlbCA9IDEyODsKICAgICB1bnNpZ25lZCBjaGFyIG1heExldmVsID0gMDsKIAotICAgIGZvciAo
YXV0byBib3ggPSBsaW5lLT5maXJzdExlYWZCb3goKTsgYm94OyBib3ggPSBib3gudHJhdmVyc2VO
ZXh0T25MaW5lKCkpIHsKKyAgICBmb3IgKGF1dG8gYm94ID0gbGluZUJveC0+Zmlyc3RMZWFmQm94
KCk7IGJveDsgYm94ID0gYm94LnRyYXZlcnNlTmV4dE9uTGluZSgpKSB7CiAgICAgICAgIG1pbkxl
dmVsID0gc3RkOjptaW4obWluTGV2ZWwsIGJveC0+YmlkaUxldmVsKCkpOwogICAgICAgICBtYXhM
ZXZlbCA9IHN0ZDo6bWF4KG1heExldmVsLCBib3gtPmJpZGlMZXZlbCgpKTsKICAgICAgICAgYm94
ZXMuYXBwZW5kKGJveCk7CiAgICAgfQogCi0gICAgaWYgKGxpbmUtPmNvbnRhaW5pbmdCbG9jaygp
LnN0eWxlKCkucnRsT3JkZXJpbmcoKSA9PSBPcmRlcjo6VmlzdWFsKQorICAgIGlmIChsaW5lQm94
LT5jb250YWluaW5nQmxvY2soKS5zdHlsZSgpLnJ0bE9yZGVyaW5nKCkgPT0gT3JkZXI6OlZpc3Vh
bCkKICAgICAgICAgcmV0dXJuIGJveGVzOwogCiAgICAgLy8gUmV2ZXJzZSBvZiByZW9yZGVyaW5n
IG9mIHRoZSBsaW5lIChMMiBhY2NvcmRpbmcgdG8gQmlkaSBzcGVjKToKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRvclRleHRCb3guY3Bw
IGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yVGV4dEJv
eC5jcHAKaW5kZXggNTk2YmFjMmY1ZGNjMWYzMTc3MzRmMzNlOGM0YTg5ZjdiNDhhYjQ0NC4uNGRh
MmRmODZkMjBkMmYxODk5OWYxZTM0YzRjZTgwNzNiODdhMDk5OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yVGV4dEJveC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yVGV4dEJv
eC5jcHAKQEAgLTI2LDcgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJJ
bmxpbmVJdGVyYXRvclRleHRCb3guaCIKIAotI2luY2x1ZGUgIklubGluZUl0ZXJhdG9yTGluZS5o
IgorI2luY2x1ZGUgIklubGluZUl0ZXJhdG9yTGluZUJveC5oIgogI2luY2x1ZGUgIkxheW91dElu
dGVncmF0aW9uTGluZUxheW91dC5oIgogI2luY2x1ZGUgIkxpbmVTZWxlY3Rpb24uaCIKICNpbmNs
dWRlICJSZW5kZXJDb21iaW5lVGV4dC5oIgpAQCAtNDYsNyArNDYsNyBAQCBMYXlvdXRSZWN0IFRl
eHRCb3g6OnNlbGVjdGlvblJlY3QodW5zaWduZWQgcmFuZ2VTdGFydCwgdW5zaWduZWQgcmFuZ2VF
bmQpIGNvbnN0CiAgICAgaWYgKGNsYW1wZWRTdGFydCA+PSBjbGFtcGVkRW5kICYmICEocmFuZ2VT
dGFydCA9PSByYW5nZUVuZCAmJiByYW5nZVN0YXJ0ID49IHN0YXJ0KCkgJiYgcmFuZ2VTdGFydCA8
PSBlbmQoKSkpCiAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICBhdXRvIGxpbmVTZWxlY3Rpb25S
ZWN0ID0gTGluZVNlbGVjdGlvbjo6bG9naWNhbFJlY3QoKmxpbmUoKSk7CisgICAgYXV0byBsaW5l
U2VsZWN0aW9uUmVjdCA9IExpbmVTZWxlY3Rpb246OmxvZ2ljYWxSZWN0KCpsaW5lQm94KCkpOwog
ICAgIGF1dG8gc2VsZWN0aW9uUmVjdCA9IExheW91dFJlY3QgeyBsb2dpY2FsTGVmdCgpLCBsaW5l
U2VsZWN0aW9uUmVjdC55KCksIGxvZ2ljYWxXaWR0aCgpLCBsaW5lU2VsZWN0aW9uUmVjdC5oZWln
aHQoKSB9OwogCiAgICAgVGV4dFJ1biB0ZXh0UnVuID0gY3JlYXRlVGV4dFJ1bigpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9u
TGluZUxheW91dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0
SW50ZWdyYXRpb25MaW5lTGF5b3V0LmNwcAppbmRleCA3YWRlYzIxNjUzNzEwZTYzYmI0ZmJlMWE2
MDM0NjU4ZTNkNTIzNjQ2Li4yYTg2MDQ5YWQ4N2ZlYjdjMTY1MGUyNTdkZTllMjJlZDM3MmUwYjg3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50
ZWdyYXRpb25MaW5lTGF5b3V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdy
YXRpb24vTGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0LmNwcApAQCAtNjIwLDIwICs2MjAsMjAg
QEAgSW5saW5lSXRlcmF0b3I6OklubGluZUJveEl0ZXJhdG9yIExpbmVMYXlvdXQ6OmZpcnN0Um9v
dElubGluZUJveCgpIGNvbnN0CiAgICAgcmV0dXJuIElubGluZUl0ZXJhdG9yOjppbmxpbmVCb3hG
b3IoKm1faW5saW5lQ29udGVudCwgbV9pbmxpbmVDb250ZW50LT5ib3hlc1swXSk7CiB9CiAKLUlu
bGluZUl0ZXJhdG9yOjpMaW5lSXRlcmF0b3IgTGluZUxheW91dDo6Zmlyc3RMaW5lKCkgY29uc3QK
K0lubGluZUl0ZXJhdG9yOjpMaW5lQm94SXRlcmF0b3IgTGluZUxheW91dDo6Zmlyc3RMaW5lQm94
KCkgY29uc3QKIHsKICAgICBpZiAoIW1faW5saW5lQ29udGVudCkKICAgICAgICAgcmV0dXJuIHsg
fTsKIAotICAgIHJldHVybiB7IElubGluZUl0ZXJhdG9yOjpMaW5lSXRlcmF0b3JNb2Rlcm5QYXRo
KCptX2lubGluZUNvbnRlbnQsIDApIH07CisgICAgcmV0dXJuIHsgSW5saW5lSXRlcmF0b3I6Okxp
bmVCb3hJdGVyYXRvck1vZGVyblBhdGgoKm1faW5saW5lQ29udGVudCwgMCkgfTsKIH0KIAotSW5s
aW5lSXRlcmF0b3I6OkxpbmVJdGVyYXRvciBMaW5lTGF5b3V0OjpsYXN0TGluZSgpIGNvbnN0CitJ
bmxpbmVJdGVyYXRvcjo6TGluZUJveEl0ZXJhdG9yIExpbmVMYXlvdXQ6Omxhc3RMaW5lQm94KCkg
Y29uc3QKIHsKICAgICBpZiAoIW1faW5saW5lQ29udGVudCkKICAgICAgICAgcmV0dXJuIHsgfTsK
IAotICAgIHJldHVybiB7IElubGluZUl0ZXJhdG9yOjpMaW5lSXRlcmF0b3JNb2Rlcm5QYXRoKCpt
X2lubGluZUNvbnRlbnQsIG1faW5saW5lQ29udGVudC0+bGluZXMuaXNFbXB0eSgpID8gMCA6IG1f
aW5saW5lQ29udGVudC0+bGluZXMuc2l6ZSgpIC0gMSkgfTsKKyAgICByZXR1cm4geyBJbmxpbmVJ
dGVyYXRvcjo6TGluZUJveEl0ZXJhdG9yTW9kZXJuUGF0aCgqbV9pbmxpbmVDb250ZW50LCBtX2lu
bGluZUNvbnRlbnQtPmxpbmVzLmlzRW1wdHkoKSA/IDAgOiBtX2lubGluZUNvbnRlbnQtPmxpbmVz
LnNpemUoKSAtIDEpIH07CiB9CiAKIExheW91dFJlY3QgTGluZUxheW91dDo6Zmlyc3RJbmxpbmVC
b3hSZWN0KGNvbnN0IFJlbmRlcklubGluZSYgcmVuZGVySW5saW5lKSBjb25zdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uTGlu
ZUxheW91dC5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVn
cmF0aW9uTGluZUxheW91dC5oCmluZGV4IDYyMjI4MWNiZDk2NzM1NzE4NTAyNTc5MjZjYzM2YjM2
NDQ3NTRjNDMuLjczNjdjZTM1Yjc4NzAxMmI3MTFjM2JiNTEzMzRiYzJmZDUxNzA1NjMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlv
bkxpbmVMYXlvdXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5
b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0LmgKQEAgLTI5LDcgKzI5LDcgQEAKIAogI2luY2x1ZGUg
IkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIklubGluZUl0ZXJhdG9ySW5saW5lQm94LmgiCi0jaW5j
bHVkZSAiSW5saW5lSXRlcmF0b3JMaW5lLmgiCisjaW5jbHVkZSAiSW5saW5lSXRlcmF0b3JMaW5l
Qm94LmgiCiAjaW5jbHVkZSAiSW5saW5lSXRlcmF0b3JUZXh0Qm94LmgiCiAjaW5jbHVkZSAiTGF5
b3V0SW50ZWdyYXRpb25Cb3hUcmVlLmgiCiAjaW5jbHVkZSAiTGF5b3V0UG9pbnQuaCIKQEAgLTEx
MSw4ICsxMTEsOCBAQCBwdWJsaWM6CiAgICAgSW5saW5lSXRlcmF0b3I6OkxlYWZCb3hJdGVyYXRv
ciBib3hGb3IoY29uc3QgUmVuZGVyRWxlbWVudCYpIGNvbnN0OwogICAgIElubGluZUl0ZXJhdG9y
OjpJbmxpbmVCb3hJdGVyYXRvciBmaXJzdElubGluZUJveEZvcihjb25zdCBSZW5kZXJJbmxpbmUm
KSBjb25zdDsKICAgICBJbmxpbmVJdGVyYXRvcjo6SW5saW5lQm94SXRlcmF0b3IgZmlyc3RSb290
SW5saW5lQm94KCkgY29uc3Q7Ci0gICAgSW5saW5lSXRlcmF0b3I6OkxpbmVJdGVyYXRvciBmaXJz
dExpbmUoKSBjb25zdDsKLSAgICBJbmxpbmVJdGVyYXRvcjo6TGluZUl0ZXJhdG9yIGxhc3RMaW5l
KCkgY29uc3Q7CisgICAgSW5saW5lSXRlcmF0b3I6OkxpbmVCb3hJdGVyYXRvciBmaXJzdExpbmVC
b3goKSBjb25zdDsKKyAgICBJbmxpbmVJdGVyYXRvcjo6TGluZUJveEl0ZXJhdG9yIGxhc3RMaW5l
Qm94KCkgY29uc3Q7CiAKICAgICBMYXlvdXRSZWN0IGZpcnN0SW5saW5lQm94UmVjdChjb25zdCBS
ZW5kZXJJbmxpbmUmKSBjb25zdDsKICAgICBMYXlvdXRSZWN0IGVuY2xvc2luZ0JvcmRlckJveFJl
Y3RGb3IoY29uc3QgUmVuZGVySW5saW5lJikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGluZVNlbGVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2ludGVncmF0aW9uL0xpbmVTZWxlY3Rpb24uaAppbmRleCBjMzJmNmY5NTViMTVjNmRh
ODhhYTY1Nzk0Yzc0NjUyMzg4OTk0ZWNhLi5kZmY2OTllMWY2N2M5ZTc4N2VhM2MwYjlhMmNkNzI5
OTA1YjRhYThkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24v
TGluZVNlbGVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9M
aW5lU2VsZWN0aW9uLmgKQEAgLTI1LDQ0ICsyNSw0NCBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2lu
Y2x1ZGUgIklubGluZUl0ZXJhdG9yTGluZS5oIgorI2luY2x1ZGUgIklubGluZUl0ZXJhdG9yTGlu
ZUJveC5oIgogI2luY2x1ZGUgIlJlbmRlckJsb2NrRmxvdy5oIgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIExpbmVTZWxlY3Rpb24gewogcHVibGljOgotICAgIHN0YXRpYyBmbG9hdCBs
b2dpY2FsVG9wKGNvbnN0IElubGluZUl0ZXJhdG9yOjpMaW5lJiBsaW5lKSB7IHJldHVybiBsaW5l
LmNvbnRlbnRMb2dpY2FsVG9wQWRqdXN0ZWRGb3JQcmVjZWRpbmdMaW5lKCk7IH0KLSAgICBzdGF0
aWMgZmxvYXQgbG9naWNhbEJvdHRvbShjb25zdCBJbmxpbmVJdGVyYXRvcjo6TGluZSYgbGluZSkg
eyByZXR1cm4gbGluZS5jb250ZW50TG9naWNhbEJvdHRvbUFkanVzdGVkRm9yRm9sbG93aW5nTGlu
ZSgpOyB9CisgICAgc3RhdGljIGZsb2F0IGxvZ2ljYWxUb3AoY29uc3QgSW5saW5lSXRlcmF0b3I6
OkxpbmVCb3gmIGxpbmVCb3gpIHsgcmV0dXJuIGxpbmVCb3guY29udGVudExvZ2ljYWxUb3BBZGp1
c3RlZEZvclByZWNlZGluZ0xpbmVCb3goKTsgfQorICAgIHN0YXRpYyBmbG9hdCBsb2dpY2FsQm90
dG9tKGNvbnN0IElubGluZUl0ZXJhdG9yOjpMaW5lQm94JiBsaW5lQm94KSB7IHJldHVybiBsaW5l
Qm94LmNvbnRlbnRMb2dpY2FsQm90dG9tQWRqdXN0ZWRGb3JGb2xsb3dpbmdMaW5lQm94KCk7IH0K
IAotICAgIHN0YXRpYyBGbG9hdFJlY3QgbG9naWNhbFJlY3QoY29uc3QgSW5saW5lSXRlcmF0b3I6
OkxpbmUmIGxpbmUpCisgICAgc3RhdGljIEZsb2F0UmVjdCBsb2dpY2FsUmVjdChjb25zdCBJbmxp
bmVJdGVyYXRvcjo6TGluZUJveCYgbGluZUJveCkKICAgICB7Ci0gICAgICAgIHJldHVybiB7IEZs
b2F0UG9pbnQgeyBsaW5lLmNvbnRlbnRMb2dpY2FsTGVmdCgpLCBsaW5lLmNvbnRlbnRMb2dpY2Fs
VG9wQWRqdXN0ZWRGb3JQcmVjZWRpbmdMaW5lKCkgfSwgRmxvYXRQb2ludCB7IGxpbmUuY29udGVu
dExvZ2ljYWxSaWdodCgpLCBsaW5lLmNvbnRlbnRMb2dpY2FsQm90dG9tQWRqdXN0ZWRGb3JGb2xs
b3dpbmdMaW5lKCkgfSB9OworICAgICAgICByZXR1cm4geyBGbG9hdFBvaW50IHsgbGluZUJveC5j
b250ZW50TG9naWNhbExlZnQoKSwgbGluZUJveC5jb250ZW50TG9naWNhbFRvcEFkanVzdGVkRm9y
UHJlY2VkaW5nTGluZUJveCgpIH0sIEZsb2F0UG9pbnQgeyBsaW5lQm94LmNvbnRlbnRMb2dpY2Fs
UmlnaHQoKSwgbGluZUJveC5jb250ZW50TG9naWNhbEJvdHRvbUFkanVzdGVkRm9yRm9sbG93aW5n
TGluZUJveCgpIH0gfTsKICAgICB9CiAKLSAgICBzdGF0aWMgRmxvYXRSZWN0IHBoeXNpY2FsUmVj
dChjb25zdCBJbmxpbmVJdGVyYXRvcjo6TGluZSYgbGluZSkKKyAgICBzdGF0aWMgRmxvYXRSZWN0
IHBoeXNpY2FsUmVjdChjb25zdCBJbmxpbmVJdGVyYXRvcjo6TGluZUJveCYgbGluZUJveCkKICAg
ICB7Ci0gICAgICAgIGF1dG8gcGh5c2ljYWxSZWN0ID0gbG9naWNhbFJlY3QobGluZSk7Ci0gICAg
ICAgIGlmICghbGluZS5pc0hvcml6b250YWwoKSkKKyAgICAgICAgYXV0byBwaHlzaWNhbFJlY3Qg
PSBsb2dpY2FsUmVjdChsaW5lQm94KTsKKyAgICAgICAgaWYgKCFsaW5lQm94LmlzSG9yaXpvbnRh
bCgpKQogICAgICAgICAgICAgcGh5c2ljYWxSZWN0ID0gcGh5c2ljYWxSZWN0LnRyYW5zcG9zZWRS
ZWN0KCk7Ci0gICAgICAgIGxpbmUuY29udGFpbmluZ0Jsb2NrKCkuZmxpcEZvcldyaXRpbmdNb2Rl
KHBoeXNpY2FsUmVjdCk7CisgICAgICAgIGxpbmVCb3guY29udGFpbmluZ0Jsb2NrKCkuZmxpcEZv
cldyaXRpbmdNb2RlKHBoeXNpY2FsUmVjdCk7CiAgICAgICAgIHJldHVybiBwaHlzaWNhbFJlY3Q7
CiAgICAgfQogCi0gICAgc3RhdGljIGZsb2F0IGxvZ2ljYWxUb3BBZGp1c3RlZEZvclByZWNlZGlu
Z0Jsb2NrKGNvbnN0IElubGluZUl0ZXJhdG9yOjpMaW5lJiBsaW5lKQorICAgIHN0YXRpYyBmbG9h
dCBsb2dpY2FsVG9wQWRqdXN0ZWRGb3JQcmVjZWRpbmdCbG9jayhjb25zdCBJbmxpbmVJdGVyYXRv
cjo6TGluZUJveCYgbGluZUJveCkKICAgICB7CiAgICAgICAgIC8vIEZJWE1FOiBNb3ZlIGFkanVz
dEVuY2xvc2luZ1RvcEZvclByZWNlZGluZ0Jsb2NrIGZyb20gUmVuZGVyQmxvY2tGbG93IHRvIGhl
cmUuCi0gICAgICAgIHJldHVybiBsaW5lLmNvbnRhaW5pbmdCbG9jaygpLmFkanVzdEVuY2xvc2lu
Z1RvcEZvclByZWNlZGluZ0Jsb2NrKExheW91dFVuaXQgeyBsaW5lLmNvbnRlbnRMb2dpY2FsVG9w
QWRqdXN0ZWRGb3JQcmVjZWRpbmdMaW5lKCkgfSk7CisgICAgICAgIHJldHVybiBsaW5lQm94LmNv
bnRhaW5pbmdCbG9jaygpLmFkanVzdEVuY2xvc2luZ1RvcEZvclByZWNlZGluZ0Jsb2NrKExheW91
dFVuaXQgeyBsaW5lQm94LmNvbnRlbnRMb2dpY2FsVG9wQWRqdXN0ZWRGb3JQcmVjZWRpbmdMaW5l
Qm94KCkgfSk7CiAgICAgfQogCi0gICAgc3RhdGljIFJlbmRlck9iamVjdDo6SGlnaGxpZ2h0U3Rh
dGUgc2VsZWN0aW9uU3RhdGUoY29uc3QgSW5saW5lSXRlcmF0b3I6OkxpbmUmIGxpbmUpCisgICAg
c3RhdGljIFJlbmRlck9iamVjdDo6SGlnaGxpZ2h0U3RhdGUgc2VsZWN0aW9uU3RhdGUoY29uc3Qg
SW5saW5lSXRlcmF0b3I6OkxpbmVCb3gmIGxpbmVCb3gpCiAgICAgewotICAgICAgICBhdXRvJiBi
bG9jayA9IGxpbmUuY29udGFpbmluZ0Jsb2NrKCk7CisgICAgICAgIGF1dG8mIGJsb2NrID0gbGlu
ZUJveC5jb250YWluaW5nQmxvY2soKTsKICAgICAgICAgaWYgKGJsb2NrLnNlbGVjdGlvblN0YXRl
KCkgPT0gUmVuZGVyT2JqZWN0OjpIaWdobGlnaHRTdGF0ZTo6Tm9uZSkKICAgICAgICAgICAgIHJl
dHVybiBSZW5kZXJPYmplY3Q6OkhpZ2hsaWdodFN0YXRlOjpOb25lOwogCiAgICAgICAgIGF1dG8g
bGluZVN0YXRlID0gUmVuZGVyT2JqZWN0OjpIaWdobGlnaHRTdGF0ZTo6Tm9uZTsKLSAgICAgICAg
Zm9yIChhdXRvIGJveCA9IGxpbmUuZmlyc3RMZWFmQm94KCk7IGJveDsgYm94LnRyYXZlcnNlTmV4
dE9uTGluZSgpKSB7CisgICAgICAgIGZvciAoYXV0byBib3ggPSBsaW5lQm94LmZpcnN0TGVhZkJv
eCgpOyBib3g7IGJveC50cmF2ZXJzZU5leHRPbkxpbmUoKSkgewogICAgICAgICAgICAgYXV0byBi
b3hTdGF0ZSA9IGJveC0+c2VsZWN0aW9uU3RhdGUoKTsKICAgICAgICAgICAgIGlmIChsaW5lU3Rh
dGUgPT0gUmVuZGVyT2JqZWN0OjpIaWdobGlnaHRTdGF0ZTo6Tm9uZSkKICAgICAgICAgICAgICAg
ICBsaW5lU3RhdGUgPSBib3hTdGF0ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9DYXJldFJlY3RDb21wdXRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
Q2FyZXRSZWN0Q29tcHV0YXRpb24uY3BwCmluZGV4IDI5ZWM5MTZkZWM3ZmM3NWYyZWVkZDRhNDE4
ZmI0ZmI2MTU2ZTJmNmMuLjliNDk3NTYxMWJmOTdlZTk1NTIxY2E2MGZmODJkODliNjRiZjlhN2Ug
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DYXJldFJlY3RDb21wdXRhdGlv
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NhcmV0UmVjdENvbXB1dGF0aW9u
LmNwcApAQCAtMjcsNyArMjcsNyBAQAogI2luY2x1ZGUgIkNhcmV0UmVjdENvbXB1dGF0aW9uLmgi
CiAKICNpbmNsdWRlICJFZGl0aW5nLmgiCi0jaW5jbHVkZSAiSW5saW5lSXRlcmF0b3JMaW5lLmgi
CisjaW5jbHVkZSAiSW5saW5lSXRlcmF0b3JMaW5lQm94LmgiCiAjaW5jbHVkZSAiSW5saW5lSXRl
cmF0b3JUZXh0Qm94LmgiCiAjaW5jbHVkZSAiTGluZVNlbGVjdGlvbi5oIgogI2luY2x1ZGUgIlJl
bmRlckJsb2NrRmxvdy5oIgpAQCAtMTEwLDEwICsxMTAsMTAgQEAgc3RhdGljIExheW91dFJlY3Qg
Y29tcHV0ZUNhcmV0UmVjdEZvckVtcHR5RWxlbWVudChjb25zdCBSZW5kZXJCb3hNb2RlbE9iamVj
dCYgcmUKICAgICByZXR1cm4gY3VycmVudFN0eWxlLmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkg
PyByZWN0IDogcmVjdC50cmFuc3Bvc2VkUmVjdCgpOwogfQogCi1zdGF0aWMgTGF5b3V0UmVjdCBj
b21wdXRlQ2FyZXRSZWN0Rm9yTGluZVBvc2l0aW9uKGNvbnN0IElubGluZUl0ZXJhdG9yOjpMaW5l
SXRlcmF0b3ImIGxpbmUsIGZsb2F0IGxvZ2ljYWxMZWZ0UG9zaXRpb24sIENhcmV0UmVjdE1vZGUg
Y2FyZXRSZWN0TW9kZSkKK3N0YXRpYyBMYXlvdXRSZWN0IGNvbXB1dGVDYXJldFJlY3RGb3JMaW5l
UG9zaXRpb24oY29uc3QgSW5saW5lSXRlcmF0b3I6OkxpbmVCb3hJdGVyYXRvciYgbGluZUJveCwg
ZmxvYXQgbG9naWNhbExlZnRQb3NpdGlvbiwgQ2FyZXRSZWN0TW9kZSBjYXJldFJlY3RNb2RlKQog
ewotICAgIGF1dG8mIGNvbnRhaW5pbmdCbG9jayA9IGxpbmUtPmNvbnRhaW5pbmdCbG9jaygpOwot
ICAgIGF1dG8gbGluZVNlbGVjdGlvblJlY3QgPSBMaW5lU2VsZWN0aW9uOjpsb2dpY2FsUmVjdCgq
bGluZSk7CisgICAgYXV0byYgY29udGFpbmluZ0Jsb2NrID0gbGluZUJveC0+Y29udGFpbmluZ0Js
b2NrKCk7CisgICAgYXV0byBsaW5lU2VsZWN0aW9uUmVjdCA9IExpbmVTZWxlY3Rpb246OmxvZ2lj
YWxSZWN0KCpsaW5lQm94KTsKIAogICAgIGludCBoZWlnaHQgPSBsaW5lU2VsZWN0aW9uUmVjdC5o
ZWlnaHQoKTsKICAgICBpbnQgdG9wID0gbGluZVNlbGVjdGlvblJlY3QueSgpOwpAQCAtMTczLDEw
ICsxNzMsMTAgQEAgc3RhdGljIExheW91dFJlY3QgY29tcHV0ZUNhcmV0UmVjdEZvclRleHQoY29u
c3QgSW5saW5lQm94QW5kT2Zmc2V0JiBib3hBbmRPZmZzZXQKICAgICAgICAgcmV0dXJuIHsgfTsK
IAogICAgIGF1dG8mIHRleHRCb3ggPSBkb3duY2FzdDxJbmxpbmVJdGVyYXRvcjo6VGV4dEJveEl0
ZXJhdG9yPihib3hBbmRPZmZzZXQuYm94KTsKLSAgICBhdXRvIGxpbmUgPSB0ZXh0Qm94LT5saW5l
KCk7CisgICAgYXV0byBsaW5lQm94ID0gdGV4dEJveC0+bGluZUJveCgpOwogCiAgICAgZmxvYXQg
cG9zaXRpb24gPSB0ZXh0Qm94LT5wb3NpdGlvbkZvck9mZnNldChib3hBbmRPZmZzZXQub2Zmc2V0
KTsKLSAgICByZXR1cm4gY29tcHV0ZUNhcmV0UmVjdEZvckxpbmVQb3NpdGlvbihsaW5lLCBwb3Np
dGlvbiwgY2FyZXRSZWN0TW9kZSk7CisgICAgcmV0dXJuIGNvbXB1dGVDYXJldFJlY3RGb3JMaW5l
UG9zaXRpb24obGluZUJveCwgcG9zaXRpb24sIGNhcmV0UmVjdE1vZGUpOwogfQogCiBzdGF0aWMg
TGF5b3V0UmVjdCBjb21wdXRlQ2FyZXRSZWN0Rm9yTGluZUJyZWFrKGNvbnN0IElubGluZUJveEFu
ZE9mZnNldCYgYm94QW5kT2Zmc2V0LCBDYXJldFJlY3RNb2RlIGNhcmV0UmVjdE1vZGUpCkBAIC0x
ODYsOCArMTg2LDggQEAgc3RhdGljIExheW91dFJlY3QgY29tcHV0ZUNhcmV0UmVjdEZvckxpbmVC
cmVhayhjb25zdCBJbmxpbmVCb3hBbmRPZmZzZXQmIGJveEFuZE8KICAgICBpZiAoIWJveEFuZE9m
ZnNldC5ib3gpCiAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICBhdXRvIGxpbmUgPSBib3hBbmRP
ZmZzZXQuYm94LT5saW5lKCk7Ci0gICAgcmV0dXJuIGNvbXB1dGVDYXJldFJlY3RGb3JMaW5lUG9z
aXRpb24obGluZSwgbGluZS0+Y29udGVudExvZ2ljYWxMZWZ0KCksIGNhcmV0UmVjdE1vZGUpOwor
ICAgIGF1dG8gbGluZUJveCA9IGJveEFuZE9mZnNldC5ib3gtPmxpbmVCb3goKTsKKyAgICByZXR1
cm4gY29tcHV0ZUNhcmV0UmVjdEZvckxpbmVQb3NpdGlvbihsaW5lQm94LCBsaW5lQm94LT5jb250
ZW50TG9naWNhbExlZnQoKSwgY2FyZXRSZWN0TW9kZSk7CiB9CiAKIHN0YXRpYyBMYXlvdXRSZWN0
IGNvbXB1dGVDYXJldFJlY3RGb3JTVkdJbmxpbmVUZXh0KGNvbnN0IElubGluZUJveEFuZE9mZnNl
dCYgYm94QW5kT2Zmc2V0LCBDYXJldFJlY3RNb2RlKQpAQCAtMjI4LDEwICsyMjgsMTAgQEAgc3Rh
dGljIExheW91dFJlY3QgY29tcHV0ZUNhcmV0UmVjdEZvckJveChjb25zdCBSZW5kZXJCb3gmIHJl
bmRlcmVyLCBjb25zdCBJbmxpbmUKICAgICAgICAgcmVjdC5tb3ZlKExheW91dFNpemUocmVuZGVy
ZXIud2lkdGgoKSAtIGNhcmV0V2lkdGgsIDBfbHUpKTsKIAogICAgIGlmIChib3hBbmRPZmZzZXQu
Ym94KSB7Ci0gICAgICAgIGF1dG8gbGluZSA9IGJveEFuZE9mZnNldC5ib3gtPmxpbmUoKTsKLSAg
ICAgICAgYXV0byB0b3AgPSBsaW5lLT5jb250ZW50TG9naWNhbFRvcCgpOworICAgICAgICBhdXRv
IGxpbmVCb3ggPSBib3hBbmRPZmZzZXQuYm94LT5saW5lQm94KCk7CisgICAgICAgIGF1dG8gdG9w
ID0gbGluZUJveC0+Y29udGVudExvZ2ljYWxUb3AoKTsKICAgICAgICAgcmVjdC5zZXRZKHRvcCk7
Ci0gICAgICAgIHJlY3Quc2V0SGVpZ2h0KGxpbmUtPmNvbnRlbnRMb2dpY2FsQm90dG9tKCkgLSB0
b3ApOworICAgICAgICByZWN0LnNldEhlaWdodChsaW5lQm94LT5jb250ZW50TG9naWNhbEJvdHRv
bSgpIC0gdG9wKTsKICAgICB9CiAKICAgICAvLyBJZiBoZWlnaHQgb2YgYm94IGlzIHNtYWxsZXIg
dGhhbiBmb250IGhlaWdodCwgdXNlIHRoZSBsYXR0ZXIgb25lLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUJveFBhaW50ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0lubGluZUJveFBhaW50ZXIuY3BwCmluZGV4IDA3YzRkZWZjY2RjYjg3ODk3MDAx
ODkwNjczZjYzMzllOWRhZGIxODYuLjFmMzc0MzdkNjBmNTJlNjYyMDJjOTM5OThjNzQzYmZmYjhh
ZjRjM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVCb3hQYWlu
dGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lQm94UGFpbnRlci5j
cHAKQEAgLTI2LDcgKzI2LDcgQEAKICNpbmNsdWRlICJJbmxpbmVCb3hQYWludGVyLmgiCiAKICNp
bmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKLSNpbmNsdWRlICJJbmxpbmVJdGVyYXRvckxpbmUu
aCIKKyNpbmNsdWRlICJJbmxpbmVJdGVyYXRvckxpbmVCb3guaCIKICNpbmNsdWRlICJMZWdhY3lJ
bmxpbmVGbG93Qm94LmgiCiAjaW5jbHVkZSAiUGFpbnRJbmZvLmgiCiAjaW5jbHVkZSAiUmVuZGVy
QmxvY2tGbG93LmgiCkBAIC01Myw3ICs1Myw3IEBAIElubGluZUJveFBhaW50ZXI6OklubGluZUJv
eFBhaW50ZXIoY29uc3QgSW5saW5lSXRlcmF0b3I6OklubGluZUJveCYgaW5saW5lQm94LCBQCiAg
ICAgLCBtX3BhaW50SW5mbyhwYWludEluZm8pCiAgICAgLCBtX3BhaW50T2Zmc2V0KHBhaW50T2Zm
c2V0KQogICAgICwgbV9yZW5kZXJlcihtX2lubGluZUJveC5yZW5kZXJlcigpKQotICAgICwgbV9p
c0ZpcnN0TGluZShtX2lubGluZUJveC5saW5lKCktPmlzRmlyc3QoKSkKKyAgICAsIG1faXNGaXJz
dExpbmVCb3gobV9pbmxpbmVCb3gubGluZUJveCgpLT5pc0ZpcnN0KCkpCiAgICAgLCBtX2lzUm9v
dElubGluZUJveChtX2lubGluZUJveC5pc1Jvb3RJbmxpbmVCb3goKSkKICAgICAsIG1faXNIb3Jp
em9udGFsKG1faW5saW5lQm94LmlzSG9yaXpvbnRhbCgpKQogewpAQCAtMTQxLDcgKzE0MSw3IEBA
IHZvaWQgSW5saW5lQm94UGFpbnRlcjo6cGFpbnRNYXNrKCkKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgLy8gTW92ZSB4L3kgdG8gb3VyIGNvb3JkaW5hdGVzLgotICAgIGF1dG8gbG9jYWxSZWN0ID0g
TGF5b3V0UmVjdCB7IG1faW5saW5lQm94LnZpc3VhbFJlY3QobV9pbmxpbmVCb3gubGluZSgpLT5j
b250YWluaW5nQmxvY2soKS5sb2dpY2FsSGVpZ2h0KCkpIH07CisgICAgYXV0byBsb2NhbFJlY3Qg
PSBMYXlvdXRSZWN0IHsgbV9pbmxpbmVCb3gudmlzdWFsUmVjdChtX2lubGluZUJveC5saW5lQm94
KCktPmNvbnRhaW5pbmdCbG9jaygpLmxvZ2ljYWxIZWlnaHQoKSkgfTsKICAgICBMYXlvdXRQb2lu
dCBhZGp1c3RlZFBhaW50T2Zmc2V0ID0gbV9wYWludE9mZnNldCArIGxvY2FsUmVjdC5sb2NhdGlv
bigpOwogCiAgICAgY29uc3QgTmluZVBpZWNlSW1hZ2UmIG1hc2tOaW5lUGllY2VJbWFnZSA9IHJl
bmRlcmVyKCkuc3R5bGUoKS5tYXNrQm94SW1hZ2UoKTsKQEAgLTIxMywxMSArMjEzLDExIEBAIHZv
aWQgSW5saW5lQm94UGFpbnRlcjo6cGFpbnREZWNvcmF0aW9ucygpCiAgICAgYXV0byYgc3R5bGUg
PSB0aGlzLT5zdHlsZSgpOwogICAgIC8vIFlvdSBjYW4gdXNlIHA6OmZpcnN0LWxpbmUgdG8gc3Bl
Y2lmeSBhIGJhY2tncm91bmQuIElmIHNvLCB0aGUgcm9vdCBpbmxpbmUgYm94ZXMgZm9yCiAgICAg
Ly8gYSBsaW5lIG1heSBhY3R1YWxseSBoYXZlIHRvIHBhaW50IGEgYmFja2dyb3VuZC4KLSAgICBp
ZiAobV9pc1Jvb3RJbmxpbmVCb3ggJiYgKCFtX2lzRmlyc3RMaW5lIHx8ICZzdHlsZSA9PSAmcmVu
ZGVyZXIoKS5zdHlsZSgpKSkKKyAgICBpZiAobV9pc1Jvb3RJbmxpbmVCb3ggJiYgKCFtX2lzRmly
c3RMaW5lQm94IHx8ICZzdHlsZSA9PSAmcmVuZGVyZXIoKS5zdHlsZSgpKSkKICAgICAgICAgcmV0
dXJuOwogCiAgICAgLy8gTW92ZSB4L3kgdG8gb3VyIGNvb3JkaW5hdGVzLgotICAgIGF1dG8gbG9j
YWxSZWN0ID0gTGF5b3V0UmVjdCB7IG1faW5saW5lQm94LnZpc3VhbFJlY3QobV9pbmxpbmVCb3gu
bGluZSgpLT5jb250YWluaW5nQmxvY2soKS5sb2dpY2FsSGVpZ2h0KCkpIH07CisgICAgYXV0byBs
b2NhbFJlY3QgPSBMYXlvdXRSZWN0IHsgbV9pbmxpbmVCb3gudmlzdWFsUmVjdChtX2lubGluZUJv
eC5saW5lQm94KCktPmNvbnRhaW5pbmdCbG9jaygpLmxvZ2ljYWxIZWlnaHQoKSkgfTsKICAgICBM
YXlvdXRQb2ludCBhZGp1c3RlZFBhaW50b2Zmc2V0ID0gbV9wYWludE9mZnNldCArIGxvY2FsUmVj
dC5sb2NhdGlvbigpOwogICAgIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCA9IG1fcGFpbnRJbmZv
LmNvbnRleHQoKTsKICAgICBMYXlvdXRSZWN0IHBhaW50UmVjdCA9IExheW91dFJlY3QoYWRqdXN0
ZWRQYWludG9mZnNldCwgbG9jYWxSZWN0LnNpemUoKSk7CkBAIC0zNTcsNyArMzU3LDcgQEAgdm9p
ZCBJbmxpbmVCb3hQYWludGVyOjpwYWludEJveFNoYWRvdyhTaGFkb3dTdHlsZSBzaGFkb3dTdHls
ZSwgY29uc3QgTGF5b3V0UmVjdCYKIAogY29uc3QgUmVuZGVyU3R5bGUmIElubGluZUJveFBhaW50
ZXI6OnN0eWxlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9pc0ZpcnN0TGluZSA/IHJlbmRlcmVy
KCkuZmlyc3RMaW5lU3R5bGUoKSA6IHJlbmRlcmVyKCkuc3R5bGUoKTsKKyAgICByZXR1cm4gbV9p
c0ZpcnN0TGluZUJveCA/IHJlbmRlcmVyKCkuZmlyc3RMaW5lU3R5bGUoKSA6IHJlbmRlcmVyKCku
c3R5bGUoKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lu
bGluZUJveFBhaW50ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVCb3hQYWlu
dGVyLmgKaW5kZXggMWZkNWI4NWE3ZTNlNWZhYmE1ZGI3NGQ4ZjkyNjBlMTMwNzFmYzUwYi4uNmQ2
ZDY2M2FkODEzODFlMTY5YWYxZDZhNmJlYWIxOGMwMzI0ZTRlNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUJveFBhaW50ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvSW5saW5lQm94UGFpbnRlci5oCkBAIC02Nyw3ICs2Nyw3IEBAIHByaXZhdGU6
CiAgICAgUGFpbnRJbmZvJiBtX3BhaW50SW5mbzsKICAgICBjb25zdCBMYXlvdXRQb2ludCBtX3Bh
aW50T2Zmc2V0OwogICAgIGNvbnN0IFJlbmRlckJveE1vZGVsT2JqZWN0JiBtX3JlbmRlcmVyOwot
ICAgIGNvbnN0IGJvb2wgbV9pc0ZpcnN0TGluZTsKKyAgICBjb25zdCBib29sIG1faXNGaXJzdExp
bmVCb3g7CiAgICAgY29uc3QgYm9vbCBtX2lzUm9vdElubGluZUJveDsKICAgICBjb25zdCBib29s
IG1faXNIb3Jpem9udGFsOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCbG9ja0Zsb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJs
b2NrRmxvdy5jcHAKaW5kZXggMTNmNGYwN2RkYjhjYzY2ZGU4NTFjODRmZjZiYmFmZWNjMDk1ZTMz
My4uNjAyMGZkMmFkMTU5YWUyNzgwNjc0NzA4MjUzNjBmMzE4ZGU5YzM2NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAKQEAgLTM2LDcgKzM2LDcgQEAK
ICNpbmNsdWRlICJIaXRUZXN0TG9jYXRpb24uaCIKICNpbmNsdWRlICJJbmxpbmVJdGVyYXRvckJv
eC5oIgogI2luY2x1ZGUgIklubGluZUl0ZXJhdG9ySW5saW5lQm94LmgiCi0jaW5jbHVkZSAiSW5s
aW5lSXRlcmF0b3JMaW5lLmgiCisjaW5jbHVkZSAiSW5saW5lSXRlcmF0b3JMaW5lQm94LmgiCiAj
aW5jbHVkZSAiSW5saW5lSXRlcmF0b3JMb2dpY2FsT3JkZXJUcmF2ZXJzYWwuaCIKICNpbmNsdWRl
ICJJbmxpbmVJdGVyYXRvclRleHRCb3guaCIKICNpbmNsdWRlICJJbmxpbmVXYWxrZXIuaCIKQEAg
LTMwNjEsMTIgKzMwNjEsMTIgQEAgTGF5b3V0VW5pdCBSZW5kZXJCbG9ja0Zsb3c6OmFkanVzdEVu
Y2xvc2luZ1RvcEZvclByZWNlZGluZ0Jsb2NrKExheW91dFVuaXQgdG9wKQogICAgIGlmICghb2Zm
c2V0VG9CbG9ja0JlZm9yZS5oZWlnaHQoKSkKICAgICAgICAgcmV0dXJuIHRvcDsKIAotICAgIGlm
IChhdXRvIGxhc3RMaW5lID0gSW5saW5lSXRlcmF0b3I6Omxhc3RMaW5lRm9yKCpibG9ja0JlZm9y
ZSkpIHsKLSAgICAgICAgYXV0byBsYXN0TGluZVNlbGVjdGlvblN0YXRlID0gTGluZVNlbGVjdGlv
bjo6c2VsZWN0aW9uU3RhdGUoKmxhc3RMaW5lKTsKKyAgICBpZiAoYXV0byBsYXN0TGluZUJveCA9
IElubGluZUl0ZXJhdG9yOjpsYXN0TGluZUJveEZvcigqYmxvY2tCZWZvcmUpKSB7CisgICAgICAg
IGF1dG8gbGFzdExpbmVTZWxlY3Rpb25TdGF0ZSA9IExpbmVTZWxlY3Rpb246OnNlbGVjdGlvblN0
YXRlKCpsYXN0TGluZUJveCk7CiAgICAgICAgIGlmIChsYXN0TGluZVNlbGVjdGlvblN0YXRlICE9
IFJlbmRlck9iamVjdDo6SGlnaGxpZ2h0U3RhdGU6Okluc2lkZSAmJiBsYXN0TGluZVNlbGVjdGlv
blN0YXRlICE9IFJlbmRlck9iamVjdDo6SGlnaGxpZ2h0U3RhdGU6OlN0YXJ0KQogICAgICAgICAg
ICAgcmV0dXJuIHRvcDsKIAotICAgICAgICBhdXRvIGxhc3RMaW5lU2VsZWN0aW9uQm90dG9tID0g
TGluZVNlbGVjdGlvbjo6bG9naWNhbEJvdHRvbSgqbGFzdExpbmUpICsgb2Zmc2V0VG9CbG9ja0Jl
Zm9yZS5oZWlnaHQoKTsKKyAgICAgICAgYXV0byBsYXN0TGluZVNlbGVjdGlvbkJvdHRvbSA9IExp
bmVTZWxlY3Rpb246OmxvZ2ljYWxCb3R0b20oKmxhc3RMaW5lQm94KSArIG9mZnNldFRvQmxvY2tC
ZWZvcmUuaGVpZ2h0KCk7CiAgICAgICAgIHRvcCA9IHN0ZDo6bWF4KHRvcCwgTGF5b3V0VW5pdCB7
IGxhc3RMaW5lU2VsZWN0aW9uQm90dG9tIH0pOwogICAgIH0KICAgICByZXR1cm4gdG9wOwpAQCAt
MzA4NywxMiArMzA4NywxMiBAQCBHYXBSZWN0cyBSZW5kZXJCbG9ja0Zsb3c6OmlubGluZVNlbGVj
dGlvbkdhcHMoUmVuZGVyQmxvY2smIHJvb3RCbG9jaywgY29uc3QgTGF5bwogICAgICAgICByZXR1
cm4geyB9OwogICAgIH0KIAotICAgIGF1dG8gaGFzU2VsZWN0ZWRDaGlsZHJlbiA9IFsmXShjb25z
dCBJbmxpbmVJdGVyYXRvcjo6TGluZUl0ZXJhdG9yJiBsaW5lKSB7Ci0gICAgICAgIHJldHVybiBM
aW5lU2VsZWN0aW9uOjpzZWxlY3Rpb25TdGF0ZSgqbGluZSkgIT0gUmVuZGVyT2JqZWN0OjpIaWdo
bGlnaHRTdGF0ZTo6Tm9uZTsKKyAgICBhdXRvIGhhc1NlbGVjdGVkQ2hpbGRyZW4gPSBbJl0oY29u
c3QgSW5saW5lSXRlcmF0b3I6OkxpbmVCb3hJdGVyYXRvciYgbGluZUJveCkgeworICAgICAgICBy
ZXR1cm4gTGluZVNlbGVjdGlvbjo6c2VsZWN0aW9uU3RhdGUoKmxpbmVCb3gpICE9IFJlbmRlck9i
amVjdDo6SGlnaGxpZ2h0U3RhdGU6Ok5vbmU7CiAgICAgfTsKIAotICAgIGF1dG8gbGluZVNlbGVj
dGlvbkdhcCA9IFsmXShjb25zdCBJbmxpbmVJdGVyYXRvcjo6TGluZUl0ZXJhdG9yJiBsaW5lLCBM
YXlvdXRVbml0IHNlbFRvcCwgTGF5b3V0VW5pdCBzZWxIZWlnaHQpIC0+IEdhcFJlY3RzIHsKLSAg
ICAgICAgYXV0byBsaW5lU3RhdGUgPSBMaW5lU2VsZWN0aW9uOjpzZWxlY3Rpb25TdGF0ZSgqbGlu
ZSk7CisgICAgYXV0byBsaW5lU2VsZWN0aW9uR2FwID0gWyZdKGNvbnN0IElubGluZUl0ZXJhdG9y
OjpMaW5lQm94SXRlcmF0b3ImIGxpbmVCb3gsIExheW91dFVuaXQgc2VsVG9wLCBMYXlvdXRVbml0
IHNlbEhlaWdodCkgLT4gR2FwUmVjdHMgeworICAgICAgICBhdXRvIGxpbmVTdGF0ZSA9IExpbmVT
ZWxlY3Rpb246OnNlbGVjdGlvblN0YXRlKCpsaW5lQm94KTsKIAogICAgICAgICBib29sIGxlZnRH
YXAsIHJpZ2h0R2FwOwogICAgICAgICBnZXRTZWxlY3Rpb25HYXBJbmZvKGxpbmVTdGF0ZSwgbGVm
dEdhcCwgcmlnaHRHYXApOwpAQCAtMzEwMCw3ICszMTAwLDcgQEAgR2FwUmVjdHMgUmVuZGVyQmxv
Y2tGbG93OjppbmxpbmVTZWxlY3Rpb25HYXBzKFJlbmRlckJsb2NrJiByb290QmxvY2ssIGNvbnN0
IExheW8KICAgICAgICAgR2FwUmVjdHMgcmVzdWx0OwogCiAgICAgICAgIGF1dG8gZmlyc3RTZWxl
Y3RlZEJveCA9IFsmXSgpIC0+IElubGluZUl0ZXJhdG9yOjpMZWFmQm94SXRlcmF0b3IgewotICAg
ICAgICAgICAgZm9yIChhdXRvIGJveCA9IGxpbmUtPmZpcnN0TGVhZkJveCgpOyBib3g7IGJveC50
cmF2ZXJzZU5leHRPbkxpbmUoKSkgeworICAgICAgICAgICAgZm9yIChhdXRvIGJveCA9IGxpbmVC
b3gtPmZpcnN0TGVhZkJveCgpOyBib3g7IGJveC50cmF2ZXJzZU5leHRPbkxpbmUoKSkgewogICAg
ICAgICAgICAgICAgIGlmIChib3gtPnNlbGVjdGlvblN0YXRlKCkgIT0gUmVuZGVyT2JqZWN0OjpI
aWdobGlnaHRTdGF0ZTo6Tm9uZSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGJveDsKICAg
ICAgICAgICAgIH0KQEAgLTMxMDgsNyArMzEwOCw3IEBAIEdhcFJlY3RzIFJlbmRlckJsb2NrRmxv
dzo6aW5saW5lU2VsZWN0aW9uR2FwcyhSZW5kZXJCbG9jayYgcm9vdEJsb2NrLCBjb25zdCBMYXlv
CiAgICAgICAgIH0oKTsKIAogICAgICAgICBhdXRvIGxhc3RTZWxlY3RlZEJveCA9IFsmXSgpIC0+
IElubGluZUl0ZXJhdG9yOjpMZWFmQm94SXRlcmF0b3IgewotICAgICAgICAgICAgZm9yIChhdXRv
IGJveCA9IGxpbmUtPmxhc3RMZWFmQm94KCk7IGJveDsgYm94LnRyYXZlcnNlUHJldmlvdXNPbkxp
bmUoKSkgeworICAgICAgICAgICAgZm9yIChhdXRvIGJveCA9IGxpbmVCb3gtPmxhc3RMZWFmQm94
KCk7IGJveDsgYm94LnRyYXZlcnNlUHJldmlvdXNPbkxpbmUoKSkgewogICAgICAgICAgICAgICAg
IGlmIChib3gtPnNlbGVjdGlvblN0YXRlKCkgIT0gUmVuZGVyT2JqZWN0OjpIaWdobGlnaHRTdGF0
ZTo6Tm9uZSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGJveDsKICAgICAgICAgICAgIH0K
QEAgLTMxNTcsMzggKzMxNTcsNDAgQEAgR2FwUmVjdHMgUmVuZGVyQmxvY2tGbG93OjppbmxpbmVT
ZWxlY3Rpb25HYXBzKFJlbmRlckJsb2NrJiByb290QmxvY2ssIGNvbnN0IExheW8KICAgICAgICAg
cmV0dXJuIHJlc3VsdDsKICAgICB9OwogCi0gICAgSW5saW5lSXRlcmF0b3I6OkxpbmVJdGVyYXRv
ciBsYXN0U2VsZWN0ZWRMaW5lOwotICAgIElubGluZUl0ZXJhdG9yOjpMaW5lSXRlcmF0b3IgbGlu
ZSA9IElubGluZUl0ZXJhdG9yOjpmaXJzdExpbmVGb3IoKnRoaXMpOwotICAgIGZvciAoOyBsaW5l
ICYmICFoYXNTZWxlY3RlZENoaWxkcmVuKGxpbmUpOyBsaW5lLnRyYXZlcnNlTmV4dCgpKSB7IH0K
KyAgICBJbmxpbmVJdGVyYXRvcjo6TGluZUJveEl0ZXJhdG9yIGxhc3RTZWxlY3RlZExpbmVCb3g7
CisgICAgYXV0byBsaW5lQm94ID0gSW5saW5lSXRlcmF0b3I6OmZpcnN0TGluZUJveEZvcigqdGhp
cyk7CisgICAgZm9yICg7IGxpbmVCb3ggJiYgIWhhc1NlbGVjdGVkQ2hpbGRyZW4obGluZUJveCk7
IGxpbmVCb3gudHJhdmVyc2VOZXh0KCkpIHsgfQogCiAgICAgR2FwUmVjdHMgcmVzdWx0OwogCiAg
ICAgLy8gTm93IHBhaW50IHRoZSBnYXBzIGZvciB0aGUgbGluZXMuCi0gICAgZm9yICg7IGxpbmUg
JiYgaGFzU2VsZWN0ZWRDaGlsZHJlbihsaW5lKTsgbGluZS50cmF2ZXJzZU5leHQoKSkgewotICAg
ICAgICBhdXRvIHNlbGVjdGlvblRvcCA9ICBMYXlvdXRVbml0IHsgTGluZVNlbGVjdGlvbjo6bG9n
aWNhbFRvcEFkanVzdGVkRm9yUHJlY2VkaW5nQmxvY2soKmxpbmUpIH07Ci0gICAgICAgIGF1dG8g
c2VsZWN0aW9uSGVpZ2h0ID0gTGF5b3V0VW5pdCB7IHN0ZDo6bWF4KDAuZiwgTGluZVNlbGVjdGlv
bjo6bG9naWNhbEJvdHRvbSgqbGluZSkgLSBzZWxlY3Rpb25Ub3ApIH07CisgICAgZm9yICg7IGxp
bmVCb3ggJiYgaGFzU2VsZWN0ZWRDaGlsZHJlbihsaW5lQm94KTsgbGluZUJveC50cmF2ZXJzZU5l
eHQoKSkgeworICAgICAgICBhdXRvIHNlbGVjdGlvblRvcCA9ICBMYXlvdXRVbml0IHsgTGluZVNl
bGVjdGlvbjo6bG9naWNhbFRvcEFkanVzdGVkRm9yUHJlY2VkaW5nQmxvY2soKmxpbmVCb3gpIH07
CisgICAgICAgIGF1dG8gc2VsZWN0aW9uSGVpZ2h0ID0gTGF5b3V0VW5pdCB7IHN0ZDo6bWF4KDAu
ZiwgTGluZVNlbGVjdGlvbjo6bG9naWNhbEJvdHRvbSgqbGluZUJveCkgLSBzZWxlY3Rpb25Ub3Ap
IH07CiAKLSAgICAgICAgaWYgKCFjb250YWluc1N0YXJ0ICYmICFsYXN0U2VsZWN0ZWRMaW5lICYm
Ci0gICAgICAgICAgICBzZWxlY3Rpb25TdGF0ZSgpICE9IEhpZ2hsaWdodFN0YXRlOjpTdGFydCAm
JiBzZWxlY3Rpb25TdGF0ZSgpICE9IEhpZ2hsaWdodFN0YXRlOjpCb3RoICYmICFpc1J1YnlCYXNl
KCkpCisgICAgICAgIGlmICghY29udGFpbnNTdGFydCAmJiAhbGFzdFNlbGVjdGVkTGluZUJveAor
ICAgICAgICAgICAgJiYgc2VsZWN0aW9uU3RhdGUoKSAhPSBIaWdobGlnaHRTdGF0ZTo6U3RhcnQK
KyAgICAgICAgICAgICYmIHNlbGVjdGlvblN0YXRlKCkgIT0gSGlnaGxpZ2h0U3RhdGU6OkJvdGgg
JiYgIWlzUnVieUJhc2UoKSkKICAgICAgICAgICAgIHJlc3VsdC51bml0ZUNlbnRlcihibG9ja1Nl
bGVjdGlvbkdhcChyb290QmxvY2ssIHJvb3RCbG9ja1BoeXNpY2FsUG9zaXRpb24sIG9mZnNldEZy
b21Sb290QmxvY2ssIGxhc3RMb2dpY2FsVG9wLCBsYXN0TG9naWNhbExlZnQsIGxhc3RMb2dpY2Fs
UmlnaHQsIHNlbGVjdGlvblRvcCwgY2FjaGUsIHBhaW50SW5mbykpOwogCi0gICAgICAgIExheW91
dFJlY3QgbG9naWNhbFJlY3QgeyBMYXlvdXRVbml0KGxpbmUtPmNvbnRlbnRMb2dpY2FsTGVmdCgp
KSwgc2VsZWN0aW9uVG9wLCBMYXlvdXRVbml0KGxpbmUtPmNvbnRlbnRMb2dpY2FsV2lkdGgoKSks
IHNlbGVjdGlvblRvcCArIHNlbGVjdGlvbkhlaWdodCB9OworICAgICAgICBMYXlvdXRSZWN0IGxv
Z2ljYWxSZWN0IHsgTGF5b3V0VW5pdChsaW5lQm94LT5jb250ZW50TG9naWNhbExlZnQoKSksIHNl
bGVjdGlvblRvcCwgTGF5b3V0VW5pdChsaW5lQm94LT5jb250ZW50TG9naWNhbFdpZHRoKCkpLCBz
ZWxlY3Rpb25Ub3AgKyBzZWxlY3Rpb25IZWlnaHQgfTsKICAgICAgICAgbG9naWNhbFJlY3QubW92
ZShpc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gb2Zmc2V0RnJvbVJvb3RCbG9jayA6IG9mZnNl
dEZyb21Sb290QmxvY2sudHJhbnNwb3NlZFNpemUoKSk7CiAgICAgICAgIExheW91dFJlY3QgcGh5
c2ljYWxSZWN0ID0gcm9vdEJsb2NrLmxvZ2ljYWxSZWN0VG9QaHlzaWNhbFJlY3Qocm9vdEJsb2Nr
UGh5c2ljYWxQb3NpdGlvbiwgbG9naWNhbFJlY3QpOwogICAgICAgICBpZiAoIXBhaW50SW5mbyB8
fCAoaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSAmJiBwaHlzaWNhbFJlY3QueSgpIDwgcGFpbnRJ
bmZvLT5yZWN0Lm1heFkoKSAmJiBwaHlzaWNhbFJlY3QubWF4WSgpID4gcGFpbnRJbmZvLT5yZWN0
LnkoKSkKICAgICAgICAgICAgIHx8ICghaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSAmJiBwaHlz
aWNhbFJlY3QueCgpIDwgcGFpbnRJbmZvLT5yZWN0Lm1heFgoKSAmJiBwaHlzaWNhbFJlY3QubWF4
WCgpID4gcGFpbnRJbmZvLT5yZWN0LngoKSkpCi0gICAgICAgICAgICByZXN1bHQudW5pdGUobGlu
ZVNlbGVjdGlvbkdhcChsaW5lLCBzZWxlY3Rpb25Ub3AsIHNlbGVjdGlvbkhlaWdodCkpOworICAg
ICAgICAgICAgcmVzdWx0LnVuaXRlKGxpbmVTZWxlY3Rpb25HYXAobGluZUJveCwgc2VsZWN0aW9u
VG9wLCBzZWxlY3Rpb25IZWlnaHQpKTsKIAotICAgICAgICBsYXN0U2VsZWN0ZWRMaW5lID0gbGlu
ZTsKKyAgICAgICAgbGFzdFNlbGVjdGVkTGluZUJveCA9IGxpbmVCb3g7CiAgICAgfQogCi0gICAg
aWYgKGNvbnRhaW5zU3RhcnQgJiYgIWxhc3RTZWxlY3RlZExpbmUpCisgICAgaWYgKGNvbnRhaW5z
U3RhcnQgJiYgIWxhc3RTZWxlY3RlZExpbmVCb3gpIHsKICAgICAgICAgLy8gVmlzaWJsZVNlbGVj
dGlvbiBtdXN0IHN0YXJ0IGp1c3QgYWZ0ZXIgb3VyIGxhc3QgbGluZS4KLSAgICAgICAgbGFzdFNl
bGVjdGVkTGluZSA9IElubGluZUl0ZXJhdG9yOjpsYXN0TGluZUZvcigqdGhpcyk7CisgICAgICAg
IGxhc3RTZWxlY3RlZExpbmVCb3ggPSBJbmxpbmVJdGVyYXRvcjo6bGFzdExpbmVCb3hGb3IoKnRo
aXMpOworICAgIH0KIAotICAgIGlmIChsYXN0U2VsZWN0ZWRMaW5lICYmIHNlbGVjdGlvblN0YXRl
KCkgIT0gSGlnaGxpZ2h0U3RhdGU6OkVuZCAmJiBzZWxlY3Rpb25TdGF0ZSgpICE9IEhpZ2hsaWdo
dFN0YXRlOjpCb3RoKSB7CisgICAgaWYgKGxhc3RTZWxlY3RlZExpbmVCb3ggJiYgc2VsZWN0aW9u
U3RhdGUoKSAhPSBIaWdobGlnaHRTdGF0ZTo6RW5kICYmIHNlbGVjdGlvblN0YXRlKCkgIT0gSGln
aGxpZ2h0U3RhdGU6OkJvdGgpIHsKICAgICAgICAgLy8gVXBkYXRlIG91ciBsYXN0WSB0byBiZSB0
aGUgYm90dG9tIG9mIHRoZSBsYXN0IHNlbGVjdGVkIGxpbmUuCi0gICAgICAgIGF1dG8gbGFzdExp
bmVTZWxlY3Rpb25Cb3R0b20gPSBMYXlvdXRVbml0IHsgTGluZVNlbGVjdGlvbjo6bG9naWNhbEJv
dHRvbSgqbGFzdFNlbGVjdGVkTGluZSkgfTsKKyAgICAgICAgYXV0byBsYXN0TGluZVNlbGVjdGlv
bkJvdHRvbSA9IExheW91dFVuaXQgeyBMaW5lU2VsZWN0aW9uOjpsb2dpY2FsQm90dG9tKCpsYXN0
U2VsZWN0ZWRMaW5lQm94KSB9OwogICAgICAgICBsYXN0TG9naWNhbFRvcCA9IGJsb2NrRGlyZWN0
aW9uT2Zmc2V0KHJvb3RCbG9jaywgb2Zmc2V0RnJvbVJvb3RCbG9jaykgKyBsYXN0TGluZVNlbGVj
dGlvbkJvdHRvbTsKICAgICAgICAgbGFzdExvZ2ljYWxMZWZ0ID0gbG9naWNhbExlZnRTZWxlY3Rp
b25PZmZzZXQocm9vdEJsb2NrLCBsYXN0TGluZVNlbGVjdGlvbkJvdHRvbSwgY2FjaGUpOwogICAg
ICAgICBsYXN0TG9naWNhbFJpZ2h0ID0gbG9naWNhbFJpZ2h0U2VsZWN0aW9uT2Zmc2V0KHJvb3RC
bG9jaywgbGFzdExpbmVTZWxlY3Rpb25Cb3R0b20sIGNhY2hlKTsKQEAgLTMyNzMsOCArMzI3NSw4
IEBAIHZvaWQgUmVuZGVyQmxvY2tGbG93OjpjbGVhclRydW5jYXRpb24oKQogCiBib29sIFJlbmRl
ckJsb2NrRmxvdzo6Y29udGFpbnNOb25aZXJvQmlkaUxldmVsKCkgY29uc3QKIHsKLSAgICBmb3Ig
KGF1dG8gbGluZSA9IElubGluZUl0ZXJhdG9yOjpmaXJzdExpbmVGb3IoKnRoaXMpOyBsaW5lOyBs
aW5lLnRyYXZlcnNlTmV4dCgpKSB7Ci0gICAgICAgIGZvciAoYXV0byBib3ggPSBsaW5lLT5maXJz
dExlYWZCb3goKTsgYm94OyBib3ggPSBib3gudHJhdmVyc2VOZXh0T25MaW5lKCkpIHsKKyAgICBm
b3IgKGF1dG8gbGluZUJveCA9IElubGluZUl0ZXJhdG9yOjpmaXJzdExpbmVCb3hGb3IoKnRoaXMp
OyBsaW5lQm94OyBsaW5lQm94LnRyYXZlcnNlTmV4dCgpKSB7CisgICAgICAgIGZvciAoYXV0byBi
b3ggPSBsaW5lQm94LT5maXJzdExlYWZCb3goKTsgYm94OyBib3ggPSBib3gudHJhdmVyc2VOZXh0
T25MaW5lKCkpIHsKICAgICAgICAgICAgIGlmIChib3gtPmJpZGlMZXZlbCgpKQogICAgICAgICAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CkBAIC0zMzUzLDcgKzMzNTUsNyBAQCBSZW5k
ZXJUZXh0KiBSZW5kZXJCbG9ja0Zsb3c6OmZpbmRDbG9zZXN0VGV4dEF0QWJzb2x1dGVQb2ludChj
b25zdCBGbG9hdFBvaW50JiBwbwogICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAg
ICAgICAgICAgICBpZiAobG9jYWxQb2ludC55KCkgPiAqcHJldmlvdXNSb290SW5saW5lQm94Qm90
dG9tICYmIGxvY2FsUG9pbnQueSgpIDwgYm94LT5sb2dpY2FsVG9wKCkpIHsKLSAgICAgICAgICAg
ICAgICBhdXRvIGNsb3Nlc3RCb3ggPSBjbG9zZXN0Qm94Rm9ySG9yaXpvbnRhbFBvc2l0aW9uKCpi
b3gtPmxpbmUoKSwgbG9jYWxQb2ludC54KCkpOworICAgICAgICAgICAgICAgIGF1dG8gY2xvc2Vz
dEJveCA9IGNsb3Nlc3RCb3hGb3JIb3Jpem9udGFsUG9zaXRpb24oKmJveC0+bGluZUJveCgpLCBs
b2NhbFBvaW50LngoKSk7CiAgICAgICAgICAgICAgICAgaWYgKGNsb3Nlc3RCb3ggJiYgaXM8UmVu
ZGVyVGV4dD4oY2xvc2VzdEJveC0+cmVuZGVyZXIoKSkpCiAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBjb25zdF9jYXN0PFJlbmRlclRleHQqPigmZG93bmNhc3Q8UmVuZGVyVGV4dD4oY2xvc2Vz
dEJveC0+cmVuZGVyZXIoKSkpOwogICAgICAgICAgICAgfQpAQCAtMzM2Nyw5ICszMzY5LDkgQEAg
VmlzaWJsZVBvc2l0aW9uIFJlbmRlckJsb2NrRmxvdzo6cG9zaXRpb25Gb3JQb2ludFdpdGhJbmxp
bmVDaGlsZHJlbihjb25zdCBMYXlvdXQKIHsKICAgICBBU1NFUlQoY2hpbGRyZW5JbmxpbmUoKSk7
CiAKLSAgICBhdXRvIGZpcnN0TGluZSA9IElubGluZUl0ZXJhdG9yOjpmaXJzdExpbmVGb3IoKnRo
aXMpOworICAgIGF1dG8gZmlyc3RMaW5lQm94ID0gSW5saW5lSXRlcmF0b3I6OmZpcnN0TGluZUJv
eEZvcigqdGhpcyk7CiAKLSAgICBpZiAoIWZpcnN0TGluZSkKKyAgICBpZiAoIWZpcnN0TGluZUJv
eCkKICAgICAgICAgcmV0dXJuIGNyZWF0ZVZpc2libGVQb3NpdGlvbigwLCBBZmZpbml0eTo6RG93
bnN0cmVhbSk7CiAKICAgICBib29sIGxpbmVzQXJlRmxpcHBlZCA9IHN0eWxlKCkuaXNGbGlwcGVk
TGluZXNXcml0aW5nTW9kZSgpOwpAQCAtMzM3NywzNiArMzM3OSwzNiBAQCBWaXNpYmxlUG9zaXRp
b24gUmVuZGVyQmxvY2tGbG93Ojpwb3NpdGlvbkZvclBvaW50V2l0aElubGluZUNoaWxkcmVuKGNv
bnN0IExheW91dAogCiAgICAgLy8gbG9vayBmb3IgdGhlIGNsb3Nlc3QgbGluZSBib3ggaW4gdGhl
IHJvb3QgYm94IHdoaWNoIGlzIGF0IHRoZSBwYXNzZWQtaW4geSBjb29yZGluYXRlCiAgICAgSW5s
aW5lSXRlcmF0b3I6OkxlYWZCb3hJdGVyYXRvciBjbG9zZXN0Qm94OwotICAgIElubGluZUl0ZXJh
dG9yOjpMaW5lSXRlcmF0b3IgZmlyc3RMaW5lV2l0aENoaWxkcmVuOwotICAgIElubGluZUl0ZXJh
dG9yOjpMaW5lSXRlcmF0b3IgbGFzdExpbmVXaXRoQ2hpbGRyZW47Ci0gICAgZm9yIChhdXRvIGxp
bmUgPSBmaXJzdExpbmU7IGxpbmU7IGxpbmUudHJhdmVyc2VOZXh0KCkpIHsKLSAgICAgICAgaWYg
KGZyYWdtZW50ICYmIGxpbmUtPmNvbnRhaW5pbmdGcmFnbWVudCgpICE9IGZyYWdtZW50KQorICAg
IElubGluZUl0ZXJhdG9yOjpMaW5lQm94SXRlcmF0b3IgZmlyc3RMaW5lQm94V2l0aENoaWxkcmVu
OworICAgIElubGluZUl0ZXJhdG9yOjpMaW5lQm94SXRlcmF0b3IgbGFzdExpbmVCb3hXaXRoQ2hp
bGRyZW47CisgICAgZm9yIChhdXRvIGxpbmVCb3ggPSBmaXJzdExpbmVCb3g7IGxpbmVCb3g7IGxp
bmVCb3gudHJhdmVyc2VOZXh0KCkpIHsKKyAgICAgICAgaWYgKGZyYWdtZW50ICYmIGxpbmVCb3gt
PmNvbnRhaW5pbmdGcmFnbWVudCgpICE9IGZyYWdtZW50KQogICAgICAgICAgICAgY29udGludWU7
CiAKLSAgICAgICAgaWYgKCFsaW5lLT5maXJzdExlYWZCb3goKSkKKyAgICAgICAgaWYgKCFsaW5l
Qm94LT5maXJzdExlYWZCb3goKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBpZiAo
IWZpcnN0TGluZVdpdGhDaGlsZHJlbikKLSAgICAgICAgICAgIGZpcnN0TGluZVdpdGhDaGlsZHJl
biA9IGxpbmU7CisgICAgICAgIGlmICghZmlyc3RMaW5lQm94V2l0aENoaWxkcmVuKQorICAgICAg
ICAgICAgZmlyc3RMaW5lQm94V2l0aENoaWxkcmVuID0gbGluZUJveDsKIAotICAgICAgICBpZiAo
IWxpbmVzQXJlRmxpcHBlZCAmJiBsaW5lLT5pc0ZpcnN0QWZ0ZXJQYWdlQnJlYWsoKQotICAgICAg
ICAgICAgJiYgKHBvaW50SW5Mb2dpY2FsQ29udGVudHMueSgpIDwgbGluZS0+bGluZUJveFRvcCgp
IHx8IChibG9ja3NBcmVGbGlwcGVkICYmIHBvaW50SW5Mb2dpY2FsQ29udGVudHMueSgpID09IGxp
bmUtPmxpbmVCb3hUb3AoKSkpKQorICAgICAgICBpZiAoIWxpbmVzQXJlRmxpcHBlZCAmJiBsaW5l
Qm94LT5pc0ZpcnN0QWZ0ZXJQYWdlQnJlYWsoKQorICAgICAgICAgICAgJiYgKHBvaW50SW5Mb2dp
Y2FsQ29udGVudHMueSgpIDwgbGluZUJveC0+dG9wKCkgfHwgKGJsb2Nrc0FyZUZsaXBwZWQgJiYg
cG9pbnRJbkxvZ2ljYWxDb250ZW50cy55KCkgPT0gbGluZUJveC0+dG9wKCkpKSkKICAgICAgICAg
ICAgIGJyZWFrOwogCi0gICAgICAgIGxhc3RMaW5lV2l0aENoaWxkcmVuID0gbGluZTsKKyAgICAg
ICAgbGFzdExpbmVCb3hXaXRoQ2hpbGRyZW4gPSBsaW5lQm94OwogCiAgICAgICAgIC8vIGNoZWNr
IGlmIHRoaXMgcm9vdCBsaW5lIGJveCBpcyBsb2NhdGVkIGF0IHRoaXMgeSBjb29yZGluYXRlCi0g
ICAgICAgIGF1dG8gc2VsZWN0aW9uQm90dG9tID0gTGluZVNlbGVjdGlvbjo6bG9naWNhbEJvdHRv
bSgqbGluZSk7CisgICAgICAgIGF1dG8gc2VsZWN0aW9uQm90dG9tID0gTGluZVNlbGVjdGlvbjo6
bG9naWNhbEJvdHRvbSgqbGluZUJveCk7CiAgICAgICAgIGlmIChwb2ludEluTG9naWNhbENvbnRl
bnRzLnkoKSA8IHNlbGVjdGlvbkJvdHRvbSB8fCAoYmxvY2tzQXJlRmxpcHBlZCAmJiBwb2ludElu
TG9naWNhbENvbnRlbnRzLnkoKSA9PSBzZWxlY3Rpb25Cb3R0b20pKSB7CiAgICAgICAgICAgICBp
ZiAobGluZXNBcmVGbGlwcGVkKSB7Ci0gICAgICAgICAgICAgICAgYXV0byBuZXh0TGluZVdpdGhD
aGlsZHJlbiA9IGxpbmUtPm5leHQoKTsKLSAgICAgICAgICAgICAgICB3aGlsZSAobmV4dExpbmVX
aXRoQ2hpbGRyZW4gJiYgIW5leHRMaW5lV2l0aENoaWxkcmVuLT5maXJzdExlYWZCb3goKSkKLSAg
ICAgICAgICAgICAgICAgICAgbmV4dExpbmVXaXRoQ2hpbGRyZW4udHJhdmVyc2VOZXh0KCk7Cisg
ICAgICAgICAgICAgICAgYXV0byBuZXh0TGluZUJveFdpdGhDaGlsZHJlbiA9IGxpbmVCb3gtPm5l
eHQoKTsKKyAgICAgICAgICAgICAgICB3aGlsZSAobmV4dExpbmVCb3hXaXRoQ2hpbGRyZW4gJiYg
IW5leHRMaW5lQm94V2l0aENoaWxkcmVuLT5maXJzdExlYWZCb3goKSkKKyAgICAgICAgICAgICAg
ICAgICAgbmV4dExpbmVCb3hXaXRoQ2hpbGRyZW4udHJhdmVyc2VOZXh0KCk7CiAKLSAgICAgICAg
ICAgICAgICBpZiAobmV4dExpbmVXaXRoQ2hpbGRyZW4gJiYgbmV4dExpbmVXaXRoQ2hpbGRyZW4t
PmlzRmlyc3RBZnRlclBhZ2VCcmVhaygpCi0gICAgICAgICAgICAgICAgICAgICYmIChwb2ludElu
TG9naWNhbENvbnRlbnRzLnkoKSA+IG5leHRMaW5lV2l0aENoaWxkcmVuLT5saW5lQm94VG9wKCkg
fHwgKCFibG9ja3NBcmVGbGlwcGVkICYmIHBvaW50SW5Mb2dpY2FsQ29udGVudHMueSgpID09IG5l
eHRMaW5lV2l0aENoaWxkcmVuLT5saW5lQm94VG9wKCkpKSkKKyAgICAgICAgICAgICAgICBpZiAo
bmV4dExpbmVCb3hXaXRoQ2hpbGRyZW4gJiYgbmV4dExpbmVCb3hXaXRoQ2hpbGRyZW4tPmlzRmly
c3RBZnRlclBhZ2VCcmVhaygpCisgICAgICAgICAgICAgICAgICAgICYmIChwb2ludEluTG9naWNh
bENvbnRlbnRzLnkoKSA+IG5leHRMaW5lQm94V2l0aENoaWxkcmVuLT50b3AoKSB8fCAoIWJsb2Nr
c0FyZUZsaXBwZWQgJiYgcG9pbnRJbkxvZ2ljYWxDb250ZW50cy55KCkgPT0gbmV4dExpbmVCb3hX
aXRoQ2hpbGRyZW4tPnRvcCgpKSkpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAg
ICAgICAgICAgfQotICAgICAgICAgICAgY2xvc2VzdEJveCA9IGNsb3Nlc3RCb3hGb3JIb3Jpem9u
dGFsUG9zaXRpb24oKmxpbmUsIHBvaW50SW5Mb2dpY2FsQ29udGVudHMueCgpKTsKKyAgICAgICAg
ICAgIGNsb3Nlc3RCb3ggPSBjbG9zZXN0Qm94Rm9ySG9yaXpvbnRhbFBvc2l0aW9uKCpsaW5lQm94
LCBwb2ludEluTG9naWNhbENvbnRlbnRzLngoKSk7CiAgICAgICAgICAgICBpZiAoY2xvc2VzdEJv
eCkKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtMzQxNCwxNyArMzQxNiwx
NyBAQCBWaXNpYmxlUG9zaXRpb24gUmVuZGVyQmxvY2tGbG93Ojpwb3NpdGlvbkZvclBvaW50V2l0
aElubGluZUNoaWxkcmVuKGNvbnN0IExheW91dAogCiAgICAgYm9vbCBtb3ZlQ2FyZXRUb0JvdW5k
YXJ5ID0gZnJhbWUoKS5lZGl0b3IoKS5iZWhhdmlvcigpLnNob3VsZE1vdmVDYXJldFRvSG9yaXpv
bnRhbEJvdW5kYXJ5V2hlblBhc3RUb3BPckJvdHRvbSgpOwogCi0gICAgaWYgKCFtb3ZlQ2FyZXRU
b0JvdW5kYXJ5ICYmICFjbG9zZXN0Qm94ICYmIGxhc3RMaW5lV2l0aENoaWxkcmVuKSB7CisgICAg
aWYgKCFtb3ZlQ2FyZXRUb0JvdW5kYXJ5ICYmICFjbG9zZXN0Qm94ICYmIGxhc3RMaW5lQm94V2l0
aENoaWxkcmVuKSB7CiAgICAgICAgIC8vIHkgY29vcmRpbmF0ZSBpcyBiZWxvdyBsYXN0IHJvb3Qg
bGluZSBib3gsIHByZXRlbmQgd2UgaGl0IGl0Ci0gICAgICAgIGNsb3Nlc3RCb3ggPSBjbG9zZXN0
Qm94Rm9ySG9yaXpvbnRhbFBvc2l0aW9uKCpsYXN0TGluZVdpdGhDaGlsZHJlbiwgcG9pbnRJbkxv
Z2ljYWxDb250ZW50cy54KCkpOworICAgICAgICBjbG9zZXN0Qm94ID0gY2xvc2VzdEJveEZvckhv
cml6b250YWxQb3NpdGlvbigqbGFzdExpbmVCb3hXaXRoQ2hpbGRyZW4sIHBvaW50SW5Mb2dpY2Fs
Q29udGVudHMueCgpKTsKICAgICB9CiAKICAgICBpZiAoY2xvc2VzdEJveCkgewogICAgICAgICBp
ZiAobW92ZUNhcmV0VG9Cb3VuZGFyeSkgewotICAgICAgICAgICAgYXV0byBmaXJzdExpbmVXaXRo
Q2hpbGRyZW5Ub3AgPSBMYXlvdXRVbml0IHsgc3RkOjptaW4ocHJldmlvdXNMaW5lQ29udGVudEJv
dHRvbU9yQm9yZGVyQW5kUGFkZGluZygqZmlyc3RMaW5lV2l0aENoaWxkcmVuKSwgZmlyc3RMaW5l
V2l0aENoaWxkcmVuLT5jb250ZW50TG9naWNhbFRvcCgpKSB9OworICAgICAgICAgICAgYXV0byBm
aXJzdExpbmVXaXRoQ2hpbGRyZW5Ub3AgPSBMYXlvdXRVbml0IHsgc3RkOjptaW4ocHJldmlvdXNM
aW5lQm94Q29udGVudEJvdHRvbU9yQm9yZGVyQW5kUGFkZGluZygqZmlyc3RMaW5lQm94V2l0aENo
aWxkcmVuKSwgZmlyc3RMaW5lQm94V2l0aENoaWxkcmVuLT5jb250ZW50TG9naWNhbFRvcCgpKSB9
OwogICAgICAgICAgICAgaWYgKHBvaW50SW5Mb2dpY2FsQ29udGVudHMueSgpIDwgZmlyc3RMaW5l
V2l0aENoaWxkcmVuVG9wCiAgICAgICAgICAgICAgICAgfHwgKGJsb2Nrc0FyZUZsaXBwZWQgJiYg
cG9pbnRJbkxvZ2ljYWxDb250ZW50cy55KCkgPT0gZmlyc3RMaW5lV2l0aENoaWxkcmVuVG9wKSkg
ewotICAgICAgICAgICAgICAgIGF1dG8gYm94ID0gZmlyc3RMaW5lV2l0aENoaWxkcmVuLT5maXJz
dExlYWZCb3goKTsKKyAgICAgICAgICAgICAgICBhdXRvIGJveCA9IGZpcnN0TGluZUJveFdpdGhD
aGlsZHJlbi0+Zmlyc3RMZWFmQm94KCk7CiAgICAgICAgICAgICAgICAgaWYgKGJveC0+aXNMaW5l
QnJlYWsoKSkgewogICAgICAgICAgICAgICAgICAgICBpZiAoYXV0byBuZXh0ID0gYm94LT5uZXh0
T25MaW5lSWdub3JpbmdMaW5lQnJlYWsoKSkKICAgICAgICAgICAgICAgICAgICAgICAgIGJveCA9
IG5leHQ7CkBAIC0zNDM1LDcgKzM0MzcsNyBAQCBWaXNpYmxlUG9zaXRpb24gUmVuZGVyQmxvY2tG
bG93Ojpwb3NpdGlvbkZvclBvaW50V2l0aElubGluZUNoaWxkcmVuKGNvbnN0IExheW91dAogICAg
ICAgICB9CiAKICAgICAgICAgLy8gcGFzcyB0aGUgYm94IGEgdG9wIHBvc2l0aW9uIHRoYXQgaXMg
aW5zaWRlIGl0Ci0gICAgICAgIGF1dG8gcG9pbnQgPSBMYXlvdXRQb2ludCB7IHBvaW50SW5Mb2dp
Y2FsQ29udGVudHMueCgpLCBjb250ZW50U3RhcnRJbkJsb2NrRGlyZWN0aW9uKCpjbG9zZXN0Qm94
LT5saW5lKCkpIH07CisgICAgICAgIGF1dG8gcG9pbnQgPSBMYXlvdXRQb2ludCB7IHBvaW50SW5M
b2dpY2FsQ29udGVudHMueCgpLCBjb250ZW50U3RhcnRJbkJsb2NrRGlyZWN0aW9uKCpjbG9zZXN0
Qm94LT5saW5lQm94KCkpIH07CiAgICAgICAgIGlmICghaXNIb3Jpem9udGFsV3JpdGluZ01vZGUo
KSkKICAgICAgICAgICAgIHBvaW50ID0gcG9pbnQudHJhbnNwb3NlZFBvaW50KCk7CiAgICAgICAg
IGlmIChjbG9zZXN0Qm94LT5yZW5kZXJlcigpLmlzUmVwbGFjZWRPcklubGluZUJsb2NrKCkpCkBA
IC0zNDQzLDExICszNDQ1LDExIEBAIFZpc2libGVQb3NpdGlvbiBSZW5kZXJCbG9ja0Zsb3c6OnBv
c2l0aW9uRm9yUG9pbnRXaXRoSW5saW5lQ2hpbGRyZW4oY29uc3QgTGF5b3V0CiAgICAgICAgIHJl
dHVybiBjb25zdF9jYXN0PFJlbmRlck9iamVjdCY+KGNsb3Nlc3RCb3gtPnJlbmRlcmVyKCkpLnBv
c2l0aW9uRm9yUG9pbnQocG9pbnQsIG51bGxwdHIpOwogICAgIH0KIAotICAgIGlmIChsYXN0TGlu
ZVdpdGhDaGlsZHJlbikgeworICAgIGlmIChsYXN0TGluZUJveFdpdGhDaGlsZHJlbikgewogICAg
ICAgICAvLyBXZSBoaXQgdGhpcyBjYXNlIGZvciBNYWMgYmVoYXZpb3Igd2hlbiB0aGUgWSBjb29y
ZGluYXRlIGlzIGJlbG93IHRoZSBsYXN0IGJveC4KICAgICAgICAgQVNTRVJUKG1vdmVDYXJldFRv
Qm91bmRhcnkpOwogICAgICAgICBJbmxpbmVJdGVyYXRvcjo6TGluZUxvZ2ljYWxPcmRlckNhY2hl
IG9yZGVyQ2FjaGU7Ci0gICAgICAgIGlmIChhdXRvIGxvZ2ljYWxseUxhc3RCb3ggPSBJbmxpbmVJ
dGVyYXRvcjo6bGFzdExlYWZPbkxpbmVJbkxvZ2ljYWxPcmRlcldpdGhOb2RlKGxhc3RMaW5lV2l0
aENoaWxkcmVuLCBvcmRlckNhY2hlKSkKKyAgICAgICAgaWYgKGF1dG8gbG9naWNhbGx5TGFzdEJv
eCA9IElubGluZUl0ZXJhdG9yOjpsYXN0TGVhZk9uTGluZUluTG9naWNhbE9yZGVyV2l0aE5vZGUo
bGFzdExpbmVCb3hXaXRoQ2hpbGRyZW4sIG9yZGVyQ2FjaGUpKQogICAgICAgICAgICAgcmV0dXJu
IHBvc2l0aW9uRm9yUnVuKCp0aGlzLCBsb2dpY2FsbHlMYXN0Qm94LCBmYWxzZSk7CiAgICAgfQog
CkBAIC0zNDcxLDExICszNDczLDExIEBAIHZvaWQgUmVuZGVyQmxvY2tGbG93OjphZGRGb2N1c1Jp
bmdSZWN0c0ZvcklubGluZUNoaWxkcmVuKFZlY3RvcjxMYXlvdXRSZWN0PiYgcmVjCiB7CiAgICAg
QVNTRVJUKGNoaWxkcmVuSW5saW5lKCkpOwogICAgIGZvciAoYXV0byBib3ggPSBJbmxpbmVJdGVy
YXRvcjo6Zmlyc3RSb290SW5saW5lQm94Rm9yKCp0aGlzKTsgYm94OyBib3gudHJhdmVyc2VOZXh0
SW5saW5lQm94KCkpIHsKLSAgICAgICAgYXV0byBsaW5lID0gYm94LT5saW5lKCk7CisgICAgICAg
IGF1dG8gbGluZUJveCA9IGJveC0+bGluZUJveCgpOwogICAgICAgICAvLyBGSVhNRTogVGhpcyBp
cyBtaXhpbmcgcGh5c2ljYWwgYW5kIGxvZ2ljYWwgY29vcmRpbmF0ZXMuCiAgICAgICAgIGF1dG8g
dW5mbGlwcGVkVmlzdWFsUmVjdCA9IGJveC0+dmlzdWFsUmVjdElnbm9yaW5nQmxvY2tEaXJlY3Rp
b24oKTsKLSAgICAgICAgYXV0byB0b3AgPSBzdGQ6Om1heChsaW5lLT5jb250ZW50TG9naWNhbFRv
cCgpLCB1bmZsaXBwZWRWaXN1YWxSZWN0LnkoKSk7Ci0gICAgICAgIGF1dG8gYm90dG9tID0gc3Rk
OjptaW4obGluZS0+Y29udGVudExvZ2ljYWxCb3R0b20oKSwgdW5mbGlwcGVkVmlzdWFsUmVjdC5t
YXhZKCkpOworICAgICAgICBhdXRvIHRvcCA9IHN0ZDo6bWF4KGxpbmVCb3gtPmNvbnRlbnRMb2dp
Y2FsVG9wKCksIHVuZmxpcHBlZFZpc3VhbFJlY3QueSgpKTsKKyAgICAgICAgYXV0byBib3R0b20g
PSBzdGQ6Om1pbihsaW5lQm94LT5jb250ZW50TG9naWNhbEJvdHRvbSgpLCB1bmZsaXBwZWRWaXN1
YWxSZWN0Lm1heFkoKSk7CiAgICAgICAgIGF1dG8gcmVjdCA9IExheW91dFJlY3QgeyBMYXlvdXRV
bml0IHsgYWRkaXRpb25hbE9mZnNldC54KCkgKyB1bmZsaXBwZWRWaXN1YWxSZWN0LngoKSB9CiAg
ICAgICAgICAgICAsIGFkZGl0aW9uYWxPZmZzZXQueSgpICsgdG9wCiAgICAgICAgICAgICAsIExh
eW91dFVuaXQgeyB1bmZsaXBwZWRWaXN1YWxSZWN0LndpZHRoKCkgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQm94LmNwcAppbmRleCA4NjNiODM1MjY1NzUyMjRmN2M3ZDNmOTFkZWQ1Zjc1
N2IyZWJjZTYxLi5jNDg0ZDE0NWJlNzUzYTBmYzQ0OWNlNzVjMGU1MmE2ZWQzYjE2NjAzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcApAQCAtNDcsNyArNDcsNyBAQAogI2lu
Y2x1ZGUgIkhUTUxUZXh0QXJlYUVsZW1lbnQuaCIKICNpbmNsdWRlICJIaXRUZXN0UmVzdWx0Lmgi
CiAjaW5jbHVkZSAiSW5saW5lSXRlcmF0b3JJbmxpbmVCb3guaCIKLSNpbmNsdWRlICJJbmxpbmVJ
dGVyYXRvckxpbmUuaCIKKyNpbmNsdWRlICJJbmxpbmVJdGVyYXRvckxpbmVCb3guaCIKICNpbmNs
dWRlICJJbmxpbmVSdW5BbmRPZmZzZXQuaCIKICNpbmNsdWRlICJMYXlvdXRJbnRlZ3JhdGlvbkxp
bmVMYXlvdXQuaCIKICNpbmNsdWRlICJMZWdhY3lJbmxpbmVFbGVtZW50Qm94LmgiCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAKaW5kZXggMDUzZjg2M2M5YWNiNmRk
NWIzM2ExNzE1ZTQzNGZmOTBlN2UyNjJmNi4uYmYwOTQ2OTJkMWYxMDIzNWM5ODgxZTMwZjAyNmM1
Mzk3ZTNjYjE3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNw
cApAQCAtNDAsNyArNDAsNyBAQAogI2luY2x1ZGUgIkhUTUxIdG1sRWxlbWVudC5oIgogI2luY2x1
ZGUgIkhUTUxJbWFnZUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKLSNpbmNsdWRl
ICJJbmxpbmVJdGVyYXRvckxpbmUuaCIKKyNpbmNsdWRlICJJbmxpbmVJdGVyYXRvckxpbmVCb3gu
aCIKICNpbmNsdWRlICJJbmxpbmVJdGVyYXRvclRleHRCb3guaCIKICNpbmNsdWRlICJMZW5ndGhG
dW5jdGlvbnMuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCkBAIC0xNTkxLDcgKzE1OTEsNyBAQCBi
b29sIFJlbmRlckVsZW1lbnQ6OmdldExlYWRpbmdDb3JuZXIoRmxvYXRQb2ludCYgcG9pbnQsIGJv
b2wmIGluc2lkZUZpeGVkKSBjb25zdAogICAgICAgICAgICAgaWYgKGlzPFJlbmRlclRleHQ+KCpv
KSkgewogICAgICAgICAgICAgICAgIGF1dG8mIHRleHRSZW5kZXJlciA9IGRvd25jYXN0PFJlbmRl
clRleHQ+KCpvKTsKICAgICAgICAgICAgICAgICBpZiAoYXV0byBydW4gPSBJbmxpbmVJdGVyYXRv
cjo6Zmlyc3RUZXh0Qm94Rm9yKHRleHRSZW5kZXJlcikpCi0gICAgICAgICAgICAgICAgICAgIHBv
aW50Lm1vdmUodGV4dFJlbmRlcmVyLmxpbmVzQm91bmRpbmdCb3goKS54KCksIHJ1bi0+bGluZSgp
LT5jb250ZW50TG9naWNhbFRvcCgpKTsKKyAgICAgICAgICAgICAgICAgICAgcG9pbnQubW92ZSh0
ZXh0UmVuZGVyZXIubGluZXNCb3VuZGluZ0JveCgpLngoKSwgcnVuLT5saW5lQm94KCktPmNvbnRl
bnRMb2dpY2FsVG9wKCkpOwogICAgICAgICAgICAgfSBlbHNlIGlmIChpczxSZW5kZXJCb3g+KCpv
KSkKICAgICAgICAgICAgICAgICBwb2ludC5tb3ZlQnkoZG93bmNhc3Q8UmVuZGVyQm94Pigqbyku
bG9jYXRpb24oKSk7CiAgICAgICAgICAgICBwb2ludCA9IG8tPmNvbnRhaW5lcigpLT5sb2NhbFRv
QWJzb2x1dGUocG9pbnQsIFVzZVRyYW5zZm9ybXMsICZpbnNpZGVGaXhlZCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcAppbmRleCAyYTZkMDZkN2M3ZWI0MmI0NGNjMjdi
OGIwMzRkNjdmNWM4ZjBjYmFlLi44ZjgzOTViNDdkNGMxMWIzNmI1OTI2MTgyNjdmMDQzZmZjZDQ4
YmRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKQEAgLTQ3LDcg
KzQ3LDcgQEAKICNpbmNsdWRlICJIaXRUZXN0UmVzdWx0LmgiCiAjaW5jbHVkZSAiSW1hZ2VPdmVy
bGF5LmgiCiAjaW5jbHVkZSAiSW5saW5lSXRlcmF0b3JJbmxpbmVCb3guaCIKLSNpbmNsdWRlICJJ
bmxpbmVJdGVyYXRvckxpbmUuaCIKKyNpbmNsdWRlICJJbmxpbmVJdGVyYXRvckxpbmVCb3guaCIK
ICNpbmNsdWRlICJMaW5lU2VsZWN0aW9uLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUg
IlBhaW50SW5mby5oIgpAQCAtMTEwLDcgKzExMCw3IEBAIHZvaWQgUmVuZGVySW1hZ2U6OmNvbGxl
Y3RTZWxlY3Rpb25HZW9tZXRyaWVzKFZlY3RvcjxTZWxlY3Rpb25HZW9tZXRyeT4mIGdlb21ldHJp
CiAgICAgICAgICAgICBsaW5lRXh0ZW50UmVjdC5zZXRIZWlnaHQoY29udGFpbmluZ0Jsb2NrLT5o
ZWlnaHQoKSk7CiAgICAgICAgIH0KICAgICB9IGVsc2UgewotICAgICAgICBhdXRvIHNlbGVjdGlv
bkxvZ2ljYWxSZWN0ID0gTGluZVNlbGVjdGlvbjo6bG9naWNhbFJlY3QoKnJ1bi0+bGluZSgpKTsK
KyAgICAgICAgYXV0byBzZWxlY3Rpb25Mb2dpY2FsUmVjdCA9IExpbmVTZWxlY3Rpb246OmxvZ2lj
YWxSZWN0KCpydW4tPmxpbmVCb3goKSk7CiAgICAgICAgIGludCBzZWxlY3Rpb25Ub3AgPSAhY29u
dGFpbmluZ0Jsb2NrLT5zdHlsZSgpLmlzRmxpcHBlZEJsb2Nrc1dyaXRpbmdNb2RlKCkgPyBzZWxl
Y3Rpb25Mb2dpY2FsUmVjdC55KCkgLSBsb2dpY2FsVG9wKCkgOiBsb2dpY2FsQm90dG9tKCkgLSBz
ZWxlY3Rpb25Mb2dpY2FsUmVjdC5tYXhZKCk7CiAgICAgICAgIGludCBzZWxlY3Rpb25IZWlnaHQg
PSBzZWxlY3Rpb25Mb2dpY2FsUmVjdC5oZWlnaHQoKTsKICAgICAgICAgaW1hZ2VSZWN0ID0gSW50
UmVjdCB7IDAsICBzZWxlY3Rpb25Ub3AsIGxvZ2ljYWxXaWR0aCgpLCBzZWxlY3Rpb25IZWlnaHQg
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAKaW5kZXggYWI4NGYx
NTY5M2I1YTQwYTAwNWViYWYxZTFkZGRhZDc0N2U1NzYxYS4uMGI0NWVhZWMxMzRjNWM3ZDAxYTAy
YzMzZWY4M2M5Nzg0YjhmNmJlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlcklubGluZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklu
bGluZS5jcHAKQEAgLTI5LDcgKzI5LDcgQEAKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIK
ICNpbmNsdWRlICJIaXRUZXN0UmVzdWx0LmgiCiAjaW5jbHVkZSAiSW5saW5lSXRlcmF0b3JJbmxp
bmVCb3guaCIKLSNpbmNsdWRlICJJbmxpbmVJdGVyYXRvckxpbmUuaCIKKyNpbmNsdWRlICJJbmxp
bmVJdGVyYXRvckxpbmVCb3guaCIKICNpbmNsdWRlICJMYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlv
dXQuaCIKICNpbmNsdWRlICJMZWdhY3lJbmxpbmVFbGVtZW50Qm94LmgiCiAjaW5jbHVkZSAiTGVn
YWN5SW5saW5lVGV4dEJveC5oIgpAQCAtOTczLDkgKzk3Myw5IEBAIHZvaWQgUmVuZGVySW5saW5l
OjpwYWludE91dGxpbmUoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBw
YWludE9mCiAgICAgcmVjdHMuYXBwZW5kKExheW91dFJlY3QoKSk7CiAKICAgICBmb3IgKGF1dG8g
Ym94ID0gSW5saW5lSXRlcmF0b3I6OmZpcnN0SW5saW5lQm94Rm9yKCp0aGlzKTsgYm94OyBib3gu
dHJhdmVyc2VOZXh0SW5saW5lQm94KCkpIHsKLSAgICAgICAgYXV0byBsaW5lID0gYm94LT5saW5l
KCk7Ci0gICAgICAgIGF1dG8gdG9wID0gTGF5b3V0VW5pdCB7IHN0ZDo6bWF4KGxpbmUtPmNvbnRl
bnRMb2dpY2FsVG9wKCksIGJveC0+bG9naWNhbFRvcCgpKSB9OwotICAgICAgICBhdXRvIGJvdHRv
bSA9IExheW91dFVuaXQgeyBzdGQ6Om1pbihsaW5lLT5jb250ZW50TG9naWNhbEJvdHRvbSgpLCBi
b3gtPmxvZ2ljYWxCb3R0b20oKSkgfTsKKyAgICAgICAgYXV0byBsaW5lQm94ID0gYm94LT5saW5l
Qm94KCk7CisgICAgICAgIGF1dG8gdG9wID0gTGF5b3V0VW5pdCB7IHN0ZDo6bWF4KGxpbmVCb3gt
PmNvbnRlbnRMb2dpY2FsVG9wKCksIGJveC0+bG9naWNhbFRvcCgpKSB9OworICAgICAgICBhdXRv
IGJvdHRvbSA9IExheW91dFVuaXQgeyBzdGQ6Om1pbihsaW5lQm94LT5jb250ZW50TG9naWNhbEJv
dHRvbSgpLCBib3gtPmxvZ2ljYWxCb3R0b20oKSkgfTsKICAgICAgICAgLy8gRklYTUU6IFRoaXMg
aXMgbWl4aW5nIHBoeXNpY2FsIGFuZCBsb2dpY2FsIGNvb3JkaW5hdGVzLgogICAgICAgICByZWN0
cy5hcHBlbmQoeyBMYXlvdXRVbml0KGJveC0+dmlzdWFsUmVjdElnbm9yaW5nQmxvY2tEaXJlY3Rp
b24oKS54KCkpLCB0b3AsIExheW91dFVuaXQoYm94LT5sb2dpY2FsV2lkdGgoKSksIGJvdHRvbSAt
IHRvcCB9KTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGluZUJyZWFrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaW5lQnJl
YWsuY3BwCmluZGV4IGQ3MmYyNDU3ZWVhNGQwNmIyOGJjYTMwYzliYzNkNDQyODQzOGJjYmYuLjZm
ZDEzNWM5MGFkYmIyMzhiNDA5Y2ViMjI0OThjNjRhY2FkMTE3MjEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaW5lQnJlYWsuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMaW5lQnJlYWsuY3BwCkBAIC0yNyw3ICsyNyw3IEBACiAjaW5j
bHVkZSAiSFRNTEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MV0JSRWxlbWVudC5oIgogI2luY2x1
ZGUgIklubGluZUl0ZXJhdG9yQm94LmgiCi0jaW5jbHVkZSAiSW5saW5lSXRlcmF0b3JMaW5lLmgi
CisjaW5jbHVkZSAiSW5saW5lSXRlcmF0b3JMaW5lQm94LmgiCiAjaW5jbHVkZSAiSW5saW5lUnVu
QW5kT2Zmc2V0LmgiCiAjaW5jbHVkZSAiTGVnYWN5SW5saW5lRWxlbWVudEJveC5oIgogI2luY2x1
ZGUgIkxlZ2FjeVJvb3RJbmxpbmVCb3guaCIKQEAgLTE4NiwxOCArMTg2LDE4IEBAIHZvaWQgUmVu
ZGVyTGluZUJyZWFrOjpjb2xsZWN0U2VsZWN0aW9uR2VvbWV0cmllcyhWZWN0b3I8U2VsZWN0aW9u
R2VvbWV0cnk+JiByZWN0CiAKICAgICBpZiAoIXJ1bikKICAgICAgICAgcmV0dXJuOwotICAgIGF1
dG8gbGluZSA9IHJ1bi0+bGluZSgpOworICAgIGF1dG8gbGluZUJveCA9IHJ1bi0+bGluZUJveCgp
OwogCi0gICAgYXV0byBsaW5lU2VsZWN0aW9uUmVjdCA9IExpbmVTZWxlY3Rpb246OmxvZ2ljYWxS
ZWN0KCpsaW5lKTsKKyAgICBhdXRvIGxpbmVTZWxlY3Rpb25SZWN0ID0gTGluZVNlbGVjdGlvbjo6
bG9naWNhbFJlY3QoKmxpbmVCb3gpOwogICAgIExheW91dFJlY3QgcmVjdCA9IEludFJlY3QocnVu
LT5sb2dpY2FsTGVmdCgpLCBsaW5lU2VsZWN0aW9uUmVjdC55KCksIDAsIGxpbmVTZWxlY3Rpb25S
ZWN0LmhlaWdodCgpKTsKLSAgICBpZiAoIWxpbmUtPmlzSG9yaXpvbnRhbCgpKQorICAgIGlmICgh
bGluZUJveC0+aXNIb3Jpem9udGFsKCkpCiAgICAgICAgIHJlY3QgPSByZWN0LnRyYW5zcG9zZWRS
ZWN0KCk7CiAKLSAgICBpZiAobGluZS0+aXNGaXJzdEFmdGVyUGFnZUJyZWFrKCkpIHsKKyAgICBp
ZiAobGluZUJveC0+aXNGaXJzdEFmdGVyUGFnZUJyZWFrKCkpIHsKICAgICAgICAgaWYgKHJ1bi0+
aXNIb3Jpem9udGFsKCkpCi0gICAgICAgICAgICByZWN0LnNoaWZ0WUVkZ2VUbyhsaW5lLT5saW5l
Qm94VG9wKCkpOworICAgICAgICAgICAgcmVjdC5zaGlmdFlFZGdlVG8obGluZUJveC0+dG9wKCkp
OwogICAgICAgICBlbHNlCi0gICAgICAgICAgICByZWN0LnNoaWZ0WEVkZ2VUbyhsaW5lLT5saW5l
Qm94VG9wKCkpOworICAgICAgICAgICAgcmVjdC5zaGlmdFhFZGdlVG8obGluZUJveC0+dG9wKCkp
OwogICAgIH0KIAogICAgIC8vIEZJWE1FOiBPdXQtb2YtZmxvdyBwb3NpdGlvbmVkIGxpbmUgYnJl
YWtzIGRvIG5vdCBmb2xsb3cgbm9ybWFsIGNvbnRhaW5pbmcgYmxvY2sgY2hhaW4uCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcAppbmRleCBmOWJiZGJlOTkwOGNh
OTJjMDhjNzVjZDNhZjU4ZTMwMmJiYjk2NDE3Li44OGMwZWUxNzM0ZTg3ZTA1MGY1ZjQ2MDJmODUw
MGQ2Njk0MTM3MDNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
UmVwbGFjZWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNl
ZC5jcHAKQEAgLTM1LDcgKzM1LDcgQEAKICNpbmNsdWRlICJIaWdobGlnaHREYXRhLmgiCiAjaW5j
bHVkZSAiSGlnaGxpZ2h0UmVnaXN0ZXIuaCIKICNpbmNsdWRlICJJbmxpbmVJdGVyYXRvckJveC5o
IgotI2luY2x1ZGUgIklubGluZUl0ZXJhdG9yTGluZS5oIgorI2luY2x1ZGUgIklubGluZUl0ZXJh
dG9yTGluZUJveC5oIgogI2luY2x1ZGUgIkxheW91dFJlcGFpbnRlci5oIgogI2luY2x1ZGUgIkxp
bmVTZWxlY3Rpb24uaCIKICNpbmNsdWRlICJSZW5kZXJCbG9jay5oIgpAQCAtNzIxLDkgKzcyMSw5
IEBAIFZpc2libGVQb3NpdGlvbiBSZW5kZXJSZXBsYWNlZDo6cG9zaXRpb25Gb3JQb2ludChjb25z
dCBMYXlvdXRQb2ludCYgcG9pbnQsIGNvbnN0CiB7CiAgICAgYXV0byBbdG9wLCBib3R0b21dID0g
WyZdKCkgLT4gc3RkOjpwYWlyPGZsb2F0LCBmbG9hdD4gewogICAgICAgICBpZiAoYXV0byBydW4g
PSBJbmxpbmVJdGVyYXRvcjo6Ym94Rm9yKCp0aGlzKSkgewotICAgICAgICAgICAgYXV0byBsaW5l
ID0gcnVuLT5saW5lKCk7Ci0gICAgICAgICAgICBhdXRvIGxpbmVDb250ZW50VG9wID0gTGF5b3V0
VW5pdCB7IHN0ZDo6bWluKHByZXZpb3VzTGluZUNvbnRlbnRCb3R0b21PckJvcmRlckFuZFBhZGRp
bmcoKmxpbmUpLCBsaW5lLT5jb250ZW50TG9naWNhbFRvcCgpKSB9OwotICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bWFrZV9wYWlyKGxpbmVDb250ZW50VG9wLCBMaW5lU2VsZWN0aW9uOjpsb2dpY2Fs
Qm90dG9tKCpsaW5lKSk7CisgICAgICAgICAgICBhdXRvIGxpbmVCb3ggPSBydW4tPmxpbmVCb3go
KTsKKyAgICAgICAgICAgIGF1dG8gbGluZUNvbnRlbnRUb3AgPSBMYXlvdXRVbml0IHsgc3RkOjpt
aW4ocHJldmlvdXNMaW5lQm94Q29udGVudEJvdHRvbU9yQm9yZGVyQW5kUGFkZGluZygqbGluZUJv
eCksIGxpbmVCb3gtPmNvbnRlbnRMb2dpY2FsVG9wKCkpIH07CisgICAgICAgICAgICByZXR1cm4g
c3RkOjptYWtlX3BhaXIobGluZUNvbnRlbnRUb3AsIExpbmVTZWxlY3Rpb246OmxvZ2ljYWxCb3R0
b20oKmxpbmVCb3gpKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIo
bG9naWNhbFRvcCgpLCBsb2dpY2FsQm90dG9tKCkpOwogICAgIH0oKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUZXh0LmNwcAppbmRleCA4ZGJhZGMwZTNmZDhlZTg3NGNlMDllNWM5Y2Mx
Mjg0MjY5MjFhNzY4Li40YmU2MTRkNmUyMzllYTI1YTk0NmJkNjliYThjMWY4Yzc0NDAwNzI2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwCkBAIC0zNiw3ICszNiw3IEBA
CiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCiAjaW5jbHVkZSAiSFRNTFBhcnNlcklkaW9tcy5oIgog
I2luY2x1ZGUgIkh5cGhlbmF0aW9uLmgiCi0jaW5jbHVkZSAiSW5saW5lSXRlcmF0b3JMaW5lLmgi
CisjaW5jbHVkZSAiSW5saW5lSXRlcmF0b3JMaW5lQm94LmgiCiAjaW5jbHVkZSAiSW5saW5lSXRl
cmF0b3JMb2dpY2FsT3JkZXJUcmF2ZXJzYWwuaCIKICNpbmNsdWRlICJJbmxpbmVJdGVyYXRvclRl
eHRCb3guaCIKICNpbmNsdWRlICJJbmxpbmVSdW5BbmRPZmZzZXQuaCIKQEAgLTM0MiwxMSArMzQy
LDExIEBAIHZvaWQgUmVuZGVyVGV4dDo6Y29sbGVjdFNlbGVjdGlvbkdlb21ldHJpZXMoVmVjdG9y
PFNlbGVjdGlvbkdlb21ldHJ5PiYgcmVjdHMsIHVuCiAgICAgICAgICAgICAgICAgY29udGludWU7
CiAgICAgICAgIH0KIAotICAgICAgICBpZiAocnVuLT5saW5lKCktPmlzRmlyc3RBZnRlclBhZ2VC
cmVhaygpKSB7CisgICAgICAgIGlmIChydW4tPmxpbmVCb3goKS0+aXNGaXJzdEFmdGVyUGFnZUJy
ZWFrKCkpIHsKICAgICAgICAgICAgIGlmIChydW4tPmlzSG9yaXpvbnRhbCgpKQotICAgICAgICAg
ICAgICAgIHJlY3Quc2hpZnRZRWRnZVRvKHJ1bi0+bGluZSgpLT5saW5lQm94VG9wKCkpOworICAg
ICAgICAgICAgICAgIHJlY3Quc2hpZnRZRWRnZVRvKHJ1bi0+bGluZUJveCgpLT50b3AoKSk7CiAg
ICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgcmVjdC5zaGlmdFhFZGdlVG8ocnVuLT5s
aW5lKCktPmxpbmVCb3hUb3AoKSk7CisgICAgICAgICAgICAgICAgcmVjdC5zaGlmdFhFZGdlVG8o
cnVuLT5saW5lQm94KCktPnRvcCgpKTsKICAgICAgICAgfQogCiAgICAgICAgIFJlbmRlckJsb2Nr
KiBjb250YWluaW5nQmxvY2sgPSB0aGlzLT5jb250YWluaW5nQmxvY2soKTsKQEAgLTY3MywxMiAr
NjczLDEyIEBAIFZpc2libGVQb3NpdGlvbiBSZW5kZXJUZXh0Ojpwb3NpdGlvbkZvclBvaW50KGNv
bnN0IExheW91dFBvaW50JiBwb2ludCwgY29uc3QgUmVuCiAgICAgICAgIGlmIChydW4tPmlzTGlu
ZUJyZWFrKCkgJiYgIXJ1bi0+cHJldmlvdXNPbkxpbmUoKSAmJiBydW4tPm5leHRPbkxpbmUoKSAm
JiAhcnVuLT5uZXh0T25MaW5lKCktPmlzTGluZUJyZWFrKCkpCiAgICAgICAgICAgICBydW4udHJh
dmVyc2VOZXh0VGV4dEJveCgpOwogCi0gICAgICAgIGF1dG8gbGluZSA9IHJ1bi0+bGluZSgpOwot
ICAgICAgICBhdXRvIHRvcCA9IExheW91dFVuaXQgeyBzdGQ6Om1pbihwcmV2aW91c0xpbmVDb250
ZW50Qm90dG9tT3JCb3JkZXJBbmRQYWRkaW5nKCpsaW5lKSwgbGluZS0+Y29udGVudExvZ2ljYWxU
b3AoKSkgfTsKKyAgICAgICAgYXV0byBsaW5lQm94ID0gcnVuLT5saW5lQm94KCk7CisgICAgICAg
IGF1dG8gdG9wID0gTGF5b3V0VW5pdCB7IHN0ZDo6bWluKHByZXZpb3VzTGluZUJveENvbnRlbnRC
b3R0b21PckJvcmRlckFuZFBhZGRpbmcoKmxpbmVCb3gpLCBsaW5lQm94LT5jb250ZW50TG9naWNh
bFRvcCgpKSB9OwogICAgICAgICBpZiAocG9pbnRCbG9ja0RpcmVjdGlvbiA+IHRvcCB8fCAoIWJs
b2Nrc0FyZUZsaXBwZWQgJiYgcG9pbnRCbG9ja0RpcmVjdGlvbiA9PSB0b3ApKSB7Ci0gICAgICAg
ICAgICBhdXRvIGJvdHRvbSA9IExpbmVTZWxlY3Rpb246OmxvZ2ljYWxCb3R0b20oKmxpbmUpOwot
ICAgICAgICAgICAgaWYgKGF1dG8gbmV4dExpbmUgPSBsaW5lLT5uZXh0KCkpCi0gICAgICAgICAg
ICAgICAgYm90dG9tID0gc3RkOjptaW4oYm90dG9tLCBuZXh0TGluZS0+Y29udGVudExvZ2ljYWxU
b3AoKSk7CisgICAgICAgICAgICBhdXRvIGJvdHRvbSA9IExpbmVTZWxlY3Rpb246OmxvZ2ljYWxC
b3R0b20oKmxpbmVCb3gpOworICAgICAgICAgICAgaWYgKGF1dG8gbmV4dExpbmVCb3ggPSBsaW5l
Qm94LT5uZXh0KCkpCisgICAgICAgICAgICAgICAgYm90dG9tID0gc3RkOjptaW4oYm90dG9tLCBu
ZXh0TGluZUJveC0+Y29udGVudExvZ2ljYWxUb3AoKSk7CiAKICAgICAgICAgICAgIGlmIChwb2lu
dEJsb2NrRGlyZWN0aW9uIDwgYm90dG9tIHx8IChibG9ja3NBcmVGbGlwcGVkICYmIHBvaW50Qmxv
Y2tEaXJlY3Rpb24gPT0gYm90dG9tKSkgewogICAgICAgICAgICAgICAgIFNob3VsZEFmZmluaXR5
QmVEb3duc3RyZWFtIHNob3VsZEFmZmluaXR5QmVEb3duc3RyZWFtOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRCb3hQYWludGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9UZXh0Qm94UGFpbnRlci5jcHAKaW5kZXggOTQzMmQ0MmI0NDFhNDdhMzUwMTY2
NGYxODhiNjY4ZjFjODg1M2U1ZS4uZGYxMWE2MDZjMjgwNjgxMzViYTNkNTAwYWQ2NzAyZTljMzZl
MmY0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRCb3hQYWludGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dEJveFBhaW50ZXIuY3BwCkBA
IC0yOSw3ICsyOSw3IEBACiAjaW5jbHVkZSAiRWRpdG9yLmgiCiAjaW5jbHVkZSAiRXZlbnRSZWdp
b24uaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKLSNpbmNsdWRlICJJbmxpbmVJdGVy
YXRvckxpbmUuaCIKKyNpbmNsdWRlICJJbmxpbmVJdGVyYXRvckxpbmVCb3guaCIKICNpbmNsdWRl
ICJMZWdhY3lJbmxpbmVUZXh0Qm94LmgiCiAjaW5jbHVkZSAiTGluZVNlbGVjdGlvbi5oIgogI2lu
Y2x1ZGUgIlBhaW50SW5mby5oIgpAQCAtNjYsNyArNjYsNyBAQCBUZXh0Qm94UGFpbnRlcjo6VGV4
dEJveFBhaW50ZXIoY29uc3QgSW5saW5lSXRlcmF0b3I6OlRleHRCb3hJdGVyYXRvciYgdGV4dEJv
eCwgUAogICAgICwgbV9wYWludEluZm8ocGFpbnRJbmZvKQogICAgICwgbV9zZWxlY3RhYmxlUmFu
Z2UobV90ZXh0Qm94LT5zZWxlY3RhYmxlUmFuZ2UoKSkKICAgICAsIG1fcGFpbnRSZWN0KGNvbXB1
dGVQYWludFJlY3QocGFpbnRPZmZzZXQpKQotICAgICwgbV9pc0ZpcnN0TGluZShtX3RleHRCb3gt
PmxpbmUoKS0+aXNGaXJzdCgpKQorICAgICwgbV9pc0ZpcnN0TGluZShtX3RleHRCb3gtPmxpbmVC
b3goKS0+aXNGaXJzdCgpKQogICAgICwgbV9pc1ByaW50aW5nKG1fZG9jdW1lbnQucHJpbnRpbmco
KSkKICAgICAsIG1faGF2ZVNlbGVjdGlvbihjb21wdXRlSGF2ZVNlbGVjdGlvbigpKQogICAgICwg
bV9jb250YWluc0NvbXBvc2l0aW9uKG1fcmVuZGVyZXIudGV4dE5vZGUoKSAmJiBtX3JlbmRlcmVy
LmZyYW1lKCkuZWRpdG9yKCkuY29tcG9zaXRpb25Ob2RlKCkgPT0gbV9yZW5kZXJlci50ZXh0Tm9k
ZSgpKQpAQCAtMjg5LDkgKzI4OSw5IEBAIHZvaWQgVGV4dEJveFBhaW50ZXI6OnBhaW50QmFja2dy
b3VuZCh1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0LCBjCiAKICAgICAv
LyBOb3RlIHRoYXQgaWYgdGhlIHRleHQgaXMgdHJ1bmNhdGVkLCB3ZSBsZXQgdGhlIHRoaW5nIGJl
aW5nIHBhaW50ZWQgaW4gdGhlIHRydW5jYXRpb24KICAgICAvLyBkcmF3IGl0cyBvd24gaGlnaGxp
Z2h0LgotICAgIGF1dG8gbGluZSA9IHRleHRCb3goKS5saW5lKCk7Ci0gICAgYXV0byBzZWxlY3Rp
b25Cb3R0b20gPSBMaW5lU2VsZWN0aW9uOjpsb2dpY2FsQm90dG9tKCpsaW5lKTsKLSAgICBhdXRv
IHNlbGVjdGlvblRvcCA9IExpbmVTZWxlY3Rpb246OmxvZ2ljYWxUb3BBZGp1c3RlZEZvclByZWNl
ZGluZ0Jsb2NrKCpsaW5lKTsKKyAgICBhdXRvIGxpbmVCb3ggPSB0ZXh0Qm94KCkubGluZUJveCgp
OworICAgIGF1dG8gc2VsZWN0aW9uQm90dG9tID0gTGluZVNlbGVjdGlvbjo6bG9naWNhbEJvdHRv
bSgqbGluZUJveCk7CisgICAgYXV0byBzZWxlY3Rpb25Ub3AgPSBMaW5lU2VsZWN0aW9uOjpsb2dp
Y2FsVG9wQWRqdXN0ZWRGb3JQcmVjZWRpbmdCbG9jaygqbGluZUJveCk7CiAgICAgLy8gVXNlIHNh
bWUgeSBwb3NpdGlvbmluZyBhbmQgaGVpZ2h0IGFzIGZvciBzZWxlY3Rpb24sIHNvIHRoYXQgd2hl
biB0aGUgc2VsZWN0aW9uIGFuZCB0aGlzIHN1YnJhbmdlIGFyZSBvbgogICAgIC8vIHRoZSBzYW1l
IHdvcmQgdGhlcmUgYXJlIG5vIHBpZWNlcyBzdGlja2luZyBvdXQuCiAgICAgYXV0byBkZWx0YVkg
PSBMYXlvdXRVbml0IHsgbV9zdHlsZS5pc0ZsaXBwZWRMaW5lc1dyaXRpbmdNb2RlKCkgPyBzZWxl
Y3Rpb25Cb3R0b20gLSB0ZXh0Qm94KCkubG9naWNhbEJvdHRvbSgpIDogdGV4dEJveCgpLmxvZ2lj
YWxUb3AoKSAtIHNlbGVjdGlvblRvcCB9OwpAQCAtNDQ2LDcgKzQ0Niw3IEBAIHN0YXRpYyBmbG9h
dCB0ZXh0UG9zaXRpb24oY29uc3QgSW5saW5lSXRlcmF0b3I6OlRleHRCb3hJdGVyYXRvciYgdGV4
dEJveCkKICAgICAvLyBmcm9tIHRoZSBjb250YWluaW5nIGJsb2NrIGVkZ2UgaW4gaXRzIG1lYXN1
cmVtZW50LiB0ZXh0UG9zaXRpb24oKSBzaG91bGQgYmUgY29uc2lzdGVudCBzbyB0aGUgdGV4dCBh
cmUgcmVuZGVyZWQgaW4gdGhlIHNhbWUgd2lkdGguCiAgICAgaWYgKCF0ZXh0Qm94LT5sb2dpY2Fs
TGVmdCgpKQogICAgICAgICByZXR1cm4gMDsKLSAgICByZXR1cm4gdGV4dEJveC0+bG9naWNhbExl
ZnQoKSAtIHRleHRCb3gtPmxpbmUoKS0+Y29udGVudExvZ2ljYWxMZWZ0KCk7CisgICAgcmV0dXJu
IHRleHRCb3gtPmxvZ2ljYWxMZWZ0KCkgLSB0ZXh0Qm94LT5saW5lQm94KCktPmNvbnRlbnRMb2dp
Y2FsTGVmdCgpOwogfQogCiB2b2lkIFRleHRCb3hQYWludGVyOjpwYWludENvbXBvc2l0aW9uVW5k
ZXJsaW5lKGNvbnN0IENvbXBvc2l0aW9uVW5kZXJsaW5lJiB1bmRlcmxpbmUpCkBAIC01NzAsNyAr
NTcwLDcgQEAgRmxvYXRSZWN0IFRleHRCb3hQYWludGVyOjpjb21wdXRlUGFpbnRSZWN0KGNvbnN0
IExheW91dFBvaW50JiBwYWludE9mZnNldCkKIAogICAgIGxvY2FsUGFpbnRPZmZzZXQubW92ZSgw
LCBtX3N0eWxlLmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyAwIDogLXRleHRCb3goKS5sb2dp
Y2FsSGVpZ2h0KCkpOwogCi0gICAgYXV0byBib3hPcmlnaW4gPSB0ZXh0Qm94KCkudmlzdWFsUmVj
dCh0ZXh0Qm94KCkubGluZSgpLT5jb250YWluaW5nQmxvY2soKS5sb2dpY2FsSGVpZ2h0KCkpLmxv
Y2F0aW9uKCk7CisgICAgYXV0byBib3hPcmlnaW4gPSB0ZXh0Qm94KCkudmlzdWFsUmVjdCh0ZXh0
Qm94KCkubGluZUJveCgpLT5jb250YWluaW5nQmxvY2soKS5sb2dpY2FsSGVpZ2h0KCkpLmxvY2F0
aW9uKCk7CiAgICAgYm94T3JpZ2luLm1vdmVCeShsb2NhbFBhaW50T2Zmc2V0KTsKICAgICByZXR1
cm4geyBib3hPcmlnaW4sIEZsb2F0U2l6ZSh0ZXh0Qm94KCkubG9naWNhbFdpZHRoKCksIHRleHRC
b3goKS5sb2dpY2FsSGVpZ2h0KCkpIH07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1NWR1Jvb3RJbmxpbmVCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9TVkdSb290SW5saW5lQm94LmNwcAppbmRleCAwOTVhODNjZWUzMGMyYzAxMTBkZmJi
NWIzYjQ1OGY5ZTJjMmQ0MDlkLi45YzZjMDk4MDEzNzZiY2QzN2RkZmY5YTM5MGEzZWIwMzY2OTQz
OWYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Jvb3RJbmxp
bmVCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUm9vdElubGlu
ZUJveC5jcHAKQEAgLTMxMSw5ICszMTEsOSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgcmV2ZXJzZUlu
bGluZUJveFJhbmdlQW5kVmFsdWVMaXN0c0lmTmVlZGVkKFZlY3RvcjxTVkdUZXh0TGF5bwogCiB2
b2lkIFNWR1Jvb3RJbmxpbmVCb3g6OnJlb3JkZXJWYWx1ZUxpc3RzVG9Mb2dpY2FsT3JkZXIoVmVj
dG9yPFNWR1RleHRMYXlvdXRBdHRyaWJ1dGVzKj4mIGF0dHJpYnV0ZXMpCiB7Ci0gICAgYXV0byBs
aW5lID0gSW5saW5lSXRlcmF0b3I6OkxpbmVJdGVyYXRvcih0aGlzKTsKKyAgICBhdXRvIGxpbmVC
b3ggPSBJbmxpbmVJdGVyYXRvcjo6TGluZUJveEl0ZXJhdG9yKHRoaXMpOwogCi0gICAgSW5saW5l
SXRlcmF0b3I6OmxlYWZCb3hlc0luTG9naWNhbE9yZGVyKGxpbmUsIFsmXShhdXRvIGZpcnN0LCBh
dXRvIGxhc3QpIHsKKyAgICBJbmxpbmVJdGVyYXRvcjo6bGVhZkJveGVzSW5Mb2dpY2FsT3JkZXIo
bGluZUJveCwgWyZdKGF1dG8gZmlyc3QsIGF1dG8gbGFzdCkgewogICAgICAgICByZXZlcnNlSW5s
aW5lQm94UmFuZ2VBbmRWYWx1ZUxpc3RzSWZOZWVkZWQoYXR0cmlidXRlcywgZmlyc3QsIGxhc3Qp
OwogICAgIH0pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9JbmxpbmVUZXh0
Qm94U3R5bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvSW5saW5lVGV4dEJveFN0eWxlLmNw
cAppbmRleCA0MWNjZWVjYWVmMWEyOTAzOTQ1ODk2ZDgxOWNkNWJjMmQwZTU1N2RjLi41NzVhNWMw
NWIwN2FlOTU1NzU3MzVlYTg4MTc4NzNlZjQ1YzE1ZjZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdHlsZS9JbmxpbmVUZXh0Qm94U3R5bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0
eWxlL0lubGluZVRleHRCb3hTdHlsZS5jcHAKQEAgLTI5LDcgKzI5LDcgQEAKICNpbmNsdWRlICJG
b250Q2FzY2FkZS5oIgogI2luY2x1ZGUgIkhUTUxBbmNob3JFbGVtZW50LmgiCiAjaW5jbHVkZSAi
SFRNTE5hbWVzLmgiCi0jaW5jbHVkZSAiSW5saW5lSXRlcmF0b3JMaW5lLmgiCisjaW5jbHVkZSAi
SW5saW5lSXRlcmF0b3JMaW5lQm94LmgiCiAjaW5jbHVkZSAiSW5saW5lSXRlcmF0b3JUZXh0Qm94
LmgiCiAjaW5jbHVkZSAiTGVnYWN5SW5saW5lVGV4dEJveC5oIgogI2luY2x1ZGUgIkxlZ2FjeVJv
b3RJbmxpbmVCb3guaCIKQEAgLTQ5LDkgKzQ5LDkgQEAgc3RhdGljIGJvb2wgaXNBbmNlc3RvckFu
ZFdpdGhpbkJsb2NrKGNvbnN0IFJlbmRlcklubGluZSYgYW5jZXN0b3IsIGNvbnN0IFJlbmRlck8K
ICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXN0YXRpYyB2b2lkIG1pbkxvZ2ljYWxUb3BGb3JUZXh0
RGVjb3JhdGlvbkxpbmUoY29uc3QgSW5saW5lSXRlcmF0b3I6OkxpbmVJdGVyYXRvciYgbGluZSwg
ZmxvYXQmIG1pbkxvZ2ljYWxUb3AsIGNvbnN0IFJlbmRlckVsZW1lbnQqIGRlY29yYXRpb25SZW5k
ZXJlciwgT3B0aW9uU2V0PFRleHREZWNvcmF0aW9uTGluZT4gdGV4dERlY29yYXRpb25MaW5lKQor
c3RhdGljIHZvaWQgbWluTG9naWNhbFRvcEZvclRleHREZWNvcmF0aW9uTGluZShjb25zdCBJbmxp
bmVJdGVyYXRvcjo6TGluZUJveEl0ZXJhdG9yJiBsaW5lQm94LCBmbG9hdCYgbWluTG9naWNhbFRv
cCwgY29uc3QgUmVuZGVyRWxlbWVudCogZGVjb3JhdGlvblJlbmRlcmVyLCBPcHRpb25TZXQ8VGV4
dERlY29yYXRpb25MaW5lPiB0ZXh0RGVjb3JhdGlvbkxpbmUpCiB7Ci0gICAgZm9yIChhdXRvIHJ1
biA9IGxpbmUtPmZpcnN0TGVhZkJveCgpOyBydW47IHJ1bi50cmF2ZXJzZU5leHRPbkxpbmUoKSkg
eworICAgIGZvciAoYXV0byBydW4gPSBsaW5lQm94LT5maXJzdExlYWZCb3goKTsgcnVuOyBydW4u
dHJhdmVyc2VOZXh0T25MaW5lKCkpIHsKICAgICAgICAgaWYgKHJ1bi0+cmVuZGVyZXIoKS5pc091
dE9mRmxvd1Bvc2l0aW9uZWQoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOyAvLyBQb3NpdGlvbmVk
IHBsYWNlaG9sZGVycyBkb24ndCBhZmZlY3QgY2FsY3VsYXRpb25zLgogCkBAIC02Niw5ICs2Niw5
IEBAIHN0YXRpYyB2b2lkIG1pbkxvZ2ljYWxUb3BGb3JUZXh0RGVjb3JhdGlvbkxpbmUoY29uc3Qg
SW5saW5lSXRlcmF0b3I6OkxpbmVJdGVyYXRvCiAgICAgfQogfQogCi1zdGF0aWMgdm9pZCBtYXhM
b2dpY2FsQm90dG9tRm9yVGV4dERlY29yYXRpb25MaW5lKGNvbnN0IElubGluZUl0ZXJhdG9yOjpM
aW5lSXRlcmF0b3ImIGxpbmUsIGZsb2F0JiBtYXhMb2dpY2FsQm90dG9tLCBjb25zdCBSZW5kZXJF
bGVtZW50KiBkZWNvcmF0aW9uUmVuZGVyZXIsIE9wdGlvblNldDxUZXh0RGVjb3JhdGlvbkxpbmU+
IHRleHREZWNvcmF0aW9uTGluZSkKK3N0YXRpYyB2b2lkIG1heExvZ2ljYWxCb3R0b21Gb3JUZXh0
RGVjb3JhdGlvbkxpbmUoY29uc3QgSW5saW5lSXRlcmF0b3I6OkxpbmVCb3hJdGVyYXRvciYgbGlu
ZUJveCwgZmxvYXQmIG1heExvZ2ljYWxCb3R0b20sIGNvbnN0IFJlbmRlckVsZW1lbnQqIGRlY29y
YXRpb25SZW5kZXJlciwgT3B0aW9uU2V0PFRleHREZWNvcmF0aW9uTGluZT4gdGV4dERlY29yYXRp
b25MaW5lKQogewotICAgIGZvciAoYXV0byBydW4gPSBsaW5lLT5maXJzdExlYWZCb3goKTsgcnVu
OyBydW4udHJhdmVyc2VOZXh0T25MaW5lKCkpIHsKKyAgICBmb3IgKGF1dG8gcnVuID0gbGluZUJv
eC0+Zmlyc3RMZWFmQm94KCk7IHJ1bjsgcnVuLnRyYXZlcnNlTmV4dE9uTGluZSgpKSB7CiAgICAg
ICAgIGlmIChydW4tPnJlbmRlcmVyKCkuaXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkpCiAgICAgICAg
ICAgICBjb250aW51ZTsgLy8gUG9zaXRpb25lZCBwbGFjZWhvbGRlcnMgZG9uJ3QgYWZmZWN0IGNh
bGN1bGF0aW9ucy4KIApAQCAtMTE5LDcgKzExOSw3IEBAIGZsb2F0IGNvbXB1dGVVbmRlcmxpbmVP
ZmZzZXQoVGV4dFVuZGVybGluZVBvc2l0aW9uIHVuZGVybGluZVBvc2l0aW9uLCBUZXh0VW5kZXJs
CiAgICAgYXV0byByZXNvbHZlZFVuZGVybGluZVBvc2l0aW9uID0gdW5kZXJsaW5lUG9zaXRpb247
CiAgICAgaWYgKHJlc29sdmVkVW5kZXJsaW5lUG9zaXRpb24gPT0gVGV4dFVuZGVybGluZVBvc2l0
aW9uOjpBdXRvICYmIHVuZGVybGluZU9mZnNldC5pc0F1dG8oKSkgewogICAgICAgICBpZiAodGV4
dFJ1bikKLSAgICAgICAgICAgIHJlc29sdmVkVW5kZXJsaW5lUG9zaXRpb24gPSB0ZXh0UnVuLT5s
aW5lKCktPmJhc2VsaW5lVHlwZSgpID09IElkZW9ncmFwaGljQmFzZWxpbmUgPyBUZXh0VW5kZXJs
aW5lUG9zaXRpb246OlVuZGVyIDogVGV4dFVuZGVybGluZVBvc2l0aW9uOjpBdXRvOworICAgICAg
ICAgICAgcmVzb2x2ZWRVbmRlcmxpbmVQb3NpdGlvbiA9IHRleHRSdW4tPmxpbmVCb3goKS0+YmFz
ZWxpbmVUeXBlKCkgPT0gSWRlb2dyYXBoaWNCYXNlbGluZSA/IFRleHRVbmRlcmxpbmVQb3NpdGlv
bjo6VW5kZXIgOiBUZXh0VW5kZXJsaW5lUG9zaXRpb246OkF1dG87CiAgICAgICAgIGVsc2UKICAg
ICAgICAgICAgIHJlc29sdmVkVW5kZXJsaW5lUG9zaXRpb24gPSBUZXh0VW5kZXJsaW5lUG9zaXRp
b246OkF1dG87CiAgICAgfQpAQCAtMTM0LDE3ICsxMzQsMTcgQEAgZmxvYXQgY29tcHV0ZVVuZGVy
bGluZU9mZnNldChUZXh0VW5kZXJsaW5lUG9zaXRpb24gdW5kZXJsaW5lUG9zaXRpb24sIFRleHRV
bmRlcmwKICAgICBjYXNlIFRleHRVbmRlcmxpbmVQb3NpdGlvbjo6VW5kZXI6IHsKICAgICAgICAg
QVNTRVJUKHRleHRSdW4pOwogICAgICAgICAvLyBQb3NpdGlvbiB1bmRlcmxpbmUgcmVsYXRpdmUg
dG8gdGhlIGJvdHRvbSBlZGdlIG9mIHRoZSBsb3dlc3QgZWxlbWVudCdzIGNvbnRlbnQgYm94Lgot
ICAgICAgICBhdXRvIGxpbmUgPSB0ZXh0UnVuLT5saW5lKCk7Ci0gICAgICAgIGF1dG8qIGRlY29y
YXRpb25SZW5kZXJlciA9IGVuY2xvc2luZ1JlbmRlcmVyV2l0aFRleHREZWNvcmF0aW9uKHRleHRS
dW4tPnJlbmRlcmVyKCksIFRleHREZWNvcmF0aW9uTGluZTo6VW5kZXJsaW5lLCBsaW5lLT5pc0Zp
cnN0KCkpOworICAgICAgICBhdXRvIGxpbmVCb3ggPSB0ZXh0UnVuLT5saW5lQm94KCk7CisgICAg
ICAgIGF1dG8qIGRlY29yYXRpb25SZW5kZXJlciA9IGVuY2xvc2luZ1JlbmRlcmVyV2l0aFRleHRE
ZWNvcmF0aW9uKHRleHRSdW4tPnJlbmRlcmVyKCksIFRleHREZWNvcmF0aW9uTGluZTo6VW5kZXJs
aW5lLCBsaW5lQm94LT5pc0ZpcnN0KCkpOwogICAgICAgICAKICAgICAgICAgZmxvYXQgb2Zmc2V0
OwogICAgICAgICBpZiAodGV4dFJ1bi0+cmVuZGVyZXIoKS5zdHlsZSgpLmlzRmxpcHBlZExpbmVz
V3JpdGluZ01vZGUoKSkgewogICAgICAgICAgICAgb2Zmc2V0ID0gdGV4dFJ1bi0+bG9naWNhbFRv
cCgpOwotICAgICAgICAgICAgbWluTG9naWNhbFRvcEZvclRleHREZWNvcmF0aW9uTGluZShsaW5l
LCBvZmZzZXQsIGRlY29yYXRpb25SZW5kZXJlciwgVGV4dERlY29yYXRpb25MaW5lOjpVbmRlcmxp
bmUpOworICAgICAgICAgICAgbWluTG9naWNhbFRvcEZvclRleHREZWNvcmF0aW9uTGluZShsaW5l
Qm94LCBvZmZzZXQsIGRlY29yYXRpb25SZW5kZXJlciwgVGV4dERlY29yYXRpb25MaW5lOjpVbmRl
cmxpbmUpOwogICAgICAgICAgICAgb2Zmc2V0ID0gdGV4dFJ1bi0+bG9naWNhbFRvcCgpIC0gb2Zm
c2V0OwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgb2Zmc2V0ID0gdGV4dFJ1bi0+bG9n
aWNhbEJvdHRvbSgpOwotICAgICAgICAgICAgbWF4TG9naWNhbEJvdHRvbUZvclRleHREZWNvcmF0
aW9uTGluZShsaW5lLCBvZmZzZXQsIGRlY29yYXRpb25SZW5kZXJlciwgVGV4dERlY29yYXRpb25M
aW5lOjpVbmRlcmxpbmUpOworICAgICAgICAgICAgbWF4TG9naWNhbEJvdHRvbUZvclRleHREZWNv
cmF0aW9uTGluZShsaW5lQm94LCBvZmZzZXQsIGRlY29yYXRpb25SZW5kZXJlciwgVGV4dERlY29y
YXRpb25MaW5lOjpVbmRlcmxpbmUpOwogICAgICAgICAgICAgb2Zmc2V0IC09IHRleHRSdW4tPmxv
Z2ljYWxCb3R0b20oKTsKICAgICAgICAgfQogICAgICAgICBhdXRvIGRlc2lyZWRPZmZzZXQgPSB0
ZXh0UnVuLT5sb2dpY2FsSGVpZ2h0KCkgKyBnYXAgKyBzdGQ6Om1heChvZmZzZXQsIDAuMGYpICsg
dW5kZXJsaW5lT2Zmc2V0Lmxlbmd0aE9yKDApOwo=
</data>
<flag name="commit-queue"
          id="483125"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>455207</attachid>
            <date>2022-03-20 16:17:04 -0700</date>
            <delta_ts>2022-03-20 20:41:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238128-20220320161703.patch</filename>
            <type>text/plain</type>
            <size>142324</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxNTM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTRkYmE4OWE2YmFkMDNk
ZmNhODkwYTI4NTcxNzliZDE2Yzc1YzIwMC4uZmM3NmE3YzY1OTcwMTA2ZDMyZjA1MzQ2ZWU2MDJh
OTUwMzg1YzZmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzMiBAQAorMjAyMi0wMy0yMCAgQWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0lGQ11bSW50ZWdyYXRpb25d
IFJlbmFtZSBJbmxpbmVJdGVyYXRvcjo6TGluZSB0byBMaW5lQm94CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzgxMjgKKworICAgICAgICBSZXZpZXdl
ZCBieSBBbnR0aSBLb2l2aXN0by4KKworICAgICAgICAqIGRvbS9Qb3NpdGlvbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpQb3NpdGlvbjo6dXBzdHJlYW0gY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6UG9zaXRpb246OmRvd25zdHJlYW0gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UG9zaXRp
b246OnJlbmRlcnNJbkRpZmZlcmVudFBvc2l0aW9uIGNvbnN0KToKKyAgICAgICAgKiBlZGl0aW5n
L1JlbmRlcmVkUG9zaXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcmVkUG9zaXRpb246
OmxpbmVCb3ggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyZWRQb3NpdGlvbjo6bGlu
ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogZWRpdGluZy9WaXNpYmxlUG9zaXRpb24uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6VmlzaWJsZVBvc2l0aW9uOjpsZWZ0VmlzdWFsbHlEaXN0aW5j
dENhbmRpZGF0ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpWaXNpYmxlUG9zaXRpb246OnJp
Z2h0VmlzdWFsbHlEaXN0aW5jdENhbmRpZGF0ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpW
aXNpYmxlUG9zaXRpb246OmFic29sdXRlU2VsZWN0aW9uQm91bmRzRm9yTGluZSBjb25zdCk6Cisg
ICAgICAgICogZWRpdGluZy9WaXNpYmxlVW5pdHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c3Rh
cnRUZXh0T3JMaW5lQnJlYWtCb3gpOgorICAgICAgICAoV2ViQ29yZTo6ZW5kVGV4dE9yTGluZUJy
ZWFrQm94KToKKyAgICAgICAgKFdlYkNvcmU6OmxvZ2ljYWxseVByZXZpb3VzQm94KToKKyAgICAg
ICAgKFdlYkNvcmU6OmxvZ2ljYWxseU5leHRCb3gpOgorICAgICAgICAoV2ViQ29yZTo6c3RhcnRQ
b3NpdGlvbkZvckxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6ZW5kUG9zaXRpb25Gb3JMaW5lKToK
KyAgICAgICAgKFdlYkNvcmU6OmFic29sdXRlTGluZURpcmVjdGlvblBvaW50VG9Mb2NhbFBvaW50
SW5CbG9jayk6CisgICAgICAgIChXZWJDb3JlOjpwcmV2aW91c0xpbmVQb3NpdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpuZXh0TGluZVBvc2l0aW9uKToKKyAgICAgICAgKiBodG1sL0hUTUxUZXh0
Rm9ybUNvbnRyb2xFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUZXh0Rm9ybUNv
bnRyb2xFbGVtZW50Ojp2YWx1ZVdpdGhIYXJkTGluZUJyZWFrcyBjb25zdCk6CisgICAgICAgICog
bGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yQm94LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OklubGluZUl0ZXJhdG9yOjpCb3g6OmxpbmVCb3ggY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5saW5lSXRlcmF0b3I6OkJveDo6c3R5bGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
SW5saW5lSXRlcmF0b3I6OkJveDo6bGluZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogbGF5
b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yQm94Lmg6CisgICAgICAgICogbGF5b3V0L2lu
dGVncmF0aW9uL0lubGluZUl0ZXJhdG9yTGluZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbmxp
bmVJdGVyYXRvcjo6TGluZUJveEl0ZXJhdG9yOjpMaW5lQm94SXRlcmF0b3IpOgorICAgICAgICAo
V2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OkxpbmVCb3hJdGVyYXRvcjo6YXRFbmQgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OkxpbmVCb3hJdGVyYXRvcjo6dHJhdmVy
c2VOZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpMaW5lQm94SXRlcmF0
b3I6OnRyYXZlcnNlUHJldmlvdXMpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6
OkxpbmVCb3hJdGVyYXRvcjo6b3BlcmF0b3I9PSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bmxpbmVJdGVyYXRvcjo6Zmlyc3RMaW5lQm94Rm9yKToKKyAgICAgICAgKFdlYkNvcmU6OklubGlu
ZUl0ZXJhdG9yOjpsYXN0TGluZUJveEZvcik6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVy
YXRvcjo6TGluZUJveDo6bmV4dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVy
YXRvcjo6TGluZUJveDo6cHJldmlvdXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5l
SXRlcmF0b3I6OkxpbmVCb3g6OmZpcnN0TGVhZkJveCBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbmxpbmVJdGVyYXRvcjo6TGluZUJveDo6bGFzdExlYWZCb3ggY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OmNsb3Nlc3RCb3hGb3JIb3Jpem9udGFsUG9zaXRpb24p
OgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OkxpbmVJdGVyYXRvcjo6TGluZUl0
ZXJhdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpMaW5l
SXRlcmF0b3I6OmF0RW5kIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklubGlu
ZUl0ZXJhdG9yOjpMaW5lSXRlcmF0b3I6OnRyYXZlcnNlTmV4dCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6TGluZUl0ZXJhdG9yOjp0cmF2ZXJzZVByZXZpb3Vz
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpMaW5lSXRlcmF0
b3I6Om9wZXJhdG9yPT0gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5saW5l
SXRlcmF0b3I6OmZpcnN0TGluZUZvcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbmxp
bmVJdGVyYXRvcjo6bGFzdExpbmVGb3IpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5s
aW5lSXRlcmF0b3I6OkxpbmU6Om5leHQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6SW5saW5lSXRlcmF0b3I6OkxpbmU6OnByZXZpb3VzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpMaW5lOjpmaXJzdExlYWZCb3ggY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OkxpbmU6Omxhc3RMZWFm
Qm94IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBsYXlvdXQvaW50ZWdyYXRpb24vSW5saW5l
SXRlcmF0b3JMaW5lLmg6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6TGluZUJv
eDo6aGVpZ2h0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpMaW5l
Qm94SXRlcmF0b3I6OkxpbmVCb3hJdGVyYXRvcik6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJ
dGVyYXRvcjo6TGluZUJveEl0ZXJhdG9yOjpvcGVyYXRvcisrKToKKyAgICAgICAgKFdlYkNvcmU6
OklubGluZUl0ZXJhdG9yOjpMaW5lQm94SXRlcmF0b3I6Om9wZXJhdG9yIT0gY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OkxpbmVCb3hJdGVyYXRvcjo6b3BlcmF0b3I9
PSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6TGluZUJveEl0ZXJh
dG9yOjpvcGVyYXRvciogY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6
OkxpbmVCb3hJdGVyYXRvcjo6b3BlcmF0b3ItPiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bmxpbmVJdGVyYXRvcjo6cHJldmlvdXNMaW5lQm94Q29udGVudEJvdHRvbU9yQm9yZGVyQW5kUGFk
ZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6Y29udGVudFN0YXJ0SW5C
bG9ja0RpcmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6TGluZUJv
eDo6TGluZUJveCk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6TGluZUJveDo6
Y29udGVudExvZ2ljYWxUb3AgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0
b3I6OkxpbmVCb3g6OmNvbnRlbnRMb2dpY2FsQm90dG9tIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OklubGluZUl0ZXJhdG9yOjpMaW5lQm94Ojpjb250ZW50TG9naWNhbFRvcEFkanVzdGVkRm9y
UHJlY2VkaW5nTGluZUJveCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRv
cjo6TGluZUJveDo6Y29udGVudExvZ2ljYWxCb3R0b21BZGp1c3RlZEZvckZvbGxvd2luZ0xpbmVC
b3ggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OkxpbmVCb3g6OnRv
cCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6TGluZUJveDo6Ym90
dG9tIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpMaW5lQm94Ojpj
b250ZW50TG9naWNhbExlZnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0
b3I6OkxpbmVCb3g6OmNvbnRlbnRMb2dpY2FsUmlnaHQgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5saW5lSXRlcmF0b3I6OkxpbmVCb3g6OmNvbnRlbnRMb2dpY2FsV2lkdGggY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OkxpbmVCb3g6OmlzSG9yaXpvbnRhbCBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6TGluZUJveDo6YmFzZWxp
bmVUeXBlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpMaW5lQm94
Ojpjb250YWluaW5nQmxvY2sgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0
b3I6OkxpbmVCb3g6OmNvbnRhaW5pbmdGcmFnbWVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbmxpbmVJdGVyYXRvcjo6TGluZUJveDo6aXNGaXJzdEFmdGVyUGFnZUJyZWFrIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpMaW5lQm94Ojppc0ZpcnN0IGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpMaW5lOjpsaW5lQm94SGVpZ2h0
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpMaW5l
SXRlcmF0b3I6OkxpbmVJdGVyYXRvcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbmxp
bmVJdGVyYXRvcjo6TGluZUl0ZXJhdG9yOjpvcGVyYXRvcisrKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpMaW5lSXRlcmF0b3I6Om9wZXJhdG9yIGJvb2wgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OkxpbmVJdGVy
YXRvcjo6b3BlcmF0b3IhPSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbmxp
bmVJdGVyYXRvcjo6TGluZUl0ZXJhdG9yOjpvcGVyYXRvcj09IGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpMaW5lSXRlcmF0b3I6Om9wZXJhdG9yKiBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6TGluZUl0
ZXJhdG9yOjpvcGVyYXRvci0+IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Oklu
bGluZUl0ZXJhdG9yOjpwcmV2aW91c0xpbmVDb250ZW50Qm90dG9tT3JCb3JkZXJBbmRQYWRkaW5n
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpMaW5lOjpMaW5l
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpMaW5lOjpjb250
ZW50TG9naWNhbFRvcCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJ
dGVyYXRvcjo6TGluZTo6Y29udGVudExvZ2ljYWxCb3R0b20gY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OkxpbmU6OmNvbnRlbnRMb2dpY2FsVG9wQWRq
dXN0ZWRGb3JQcmVjZWRpbmdMaW5lIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OklubGluZUl0ZXJhdG9yOjpMaW5lOjpjb250ZW50TG9naWNhbEJvdHRvbUFkanVzdGVkRm9yRm9s
bG93aW5nTGluZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVy
YXRvcjo6TGluZTo6bGluZUJveFRvcCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpJbmxpbmVJdGVyYXRvcjo6TGluZTo6bGluZUJveEJvdHRvbSBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6TGluZTo6Y29udGVudExvZ2ljYWxMZWZ0
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpMaW5l
Ojpjb250ZW50TG9naWNhbFJpZ2h0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OklubGluZUl0ZXJhdG9yOjpMaW5lOjpjb250ZW50TG9naWNhbFdpZHRoIGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpMaW5lOjppc0hvcml6b250YWwg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OkxpbmU6
OmJhc2VsaW5lVHlwZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJ
dGVyYXRvcjo6TGluZTo6Y29udGFpbmluZ0Jsb2NrIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpMaW5lOjpjb250YWluaW5nRnJhZ21lbnQgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OkxpbmU6OmlzRmly
c3RBZnRlclBhZ2VCcmVhayBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbmxp
bmVJdGVyYXRvcjo6TGluZTo6aXNGaXJzdCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogbGF5
b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yTGluZUxlZ2FjeVBhdGguaDoKKyAgICAgICAg
KFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpMaW5lQm94SXRlcmF0b3JMZWdhY3lQYXRoOjpMaW5l
Qm94SXRlcmF0b3JMZWdhY3lQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9y
OjpMaW5lQm94SXRlcmF0b3JMZWdhY3lQYXRoOjpjb250ZW50TG9naWNhbFRvcEFkanVzdGVkRm9y
UHJlY2VkaW5nTGluZUJveCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRv
cjo6TGluZUJveEl0ZXJhdG9yTGVnYWN5UGF0aDo6Y29udGVudExvZ2ljYWxCb3R0b21BZGp1c3Rl
ZEZvckZvbGxvd2luZ0xpbmVCb3ggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRl
cmF0b3I6OkxpbmVCb3hJdGVyYXRvckxlZ2FjeVBhdGg6OnRvcCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6TGluZUJveEl0ZXJhdG9yTGVnYWN5UGF0aDo6Ym90dG9t
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpMaW5lQm94SXRlcmF0
b3JMZWdhY3lQYXRoOjpvcGVyYXRvcj09IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklubGlu
ZUl0ZXJhdG9yOjpMaW5lSXRlcmF0b3JMZWdhY3lQYXRoOjpMaW5lSXRlcmF0b3JMZWdhY3lQYXRo
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpMaW5lSXRlcmF0
b3JMZWdhY3lQYXRoOjpjb250ZW50TG9naWNhbFRvcCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6TGluZUl0ZXJhdG9yTGVnYWN5UGF0aDo6Y29udGVu
dExvZ2ljYWxCb3R0b20gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5saW5l
SXRlcmF0b3I6OkxpbmVJdGVyYXRvckxlZ2FjeVBhdGg6OmNvbnRlbnRMb2dpY2FsVG9wQWRqdXN0
ZWRGb3JQcmVjZWRpbmdMaW5lIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Oklu
bGluZUl0ZXJhdG9yOjpMaW5lSXRlcmF0b3JMZWdhY3lQYXRoOjpjb250ZW50TG9naWNhbEJvdHRv
bUFkanVzdGVkRm9yRm9sbG93aW5nTGluZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpJbmxpbmVJdGVyYXRvcjo6TGluZUl0ZXJhdG9yTGVnYWN5UGF0aDo6bGluZUJveFRvcCBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6TGluZUl0
ZXJhdG9yTGVnYWN5UGF0aDo6bGluZUJveEJvdHRvbSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6TGluZUl0ZXJhdG9yTGVnYWN5UGF0aDo6Y29udGVu
dExvZ2ljYWxMZWZ0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0
ZXJhdG9yOjpMaW5lSXRlcmF0b3JMZWdhY3lQYXRoOjpjb250ZW50TG9naWNhbFJpZ2h0IGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpMaW5lSXRlcmF0
b3JMZWdhY3lQYXRoOjppc0hvcml6b250YWwgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6SW5saW5lSXRlcmF0b3I6OkxpbmVJdGVyYXRvckxlZ2FjeVBhdGg6OmJhc2VsaW5lVHlw
ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6TGlu
ZUl0ZXJhdG9yTGVnYWN5UGF0aDo6Y29udGFpbmluZ0Jsb2NrIGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpMaW5lSXRlcmF0b3JMZWdhY3lQYXRoOjpj
b250YWluaW5nRnJhZ21lbnQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5s
aW5lSXRlcmF0b3I6OkxpbmVJdGVyYXRvckxlZ2FjeVBhdGg6OmlzRmlyc3RBZnRlclBhZ2VCcmVh
ayBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6TGlu
ZUl0ZXJhdG9yTGVnYWN5UGF0aDo6dHJhdmVyc2VOZXh0KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OklubGluZUl0ZXJhdG9yOjpMaW5lSXRlcmF0b3JMZWdhY3lQYXRoOjp0cmF2ZXJzZVBy
ZXZpb3VzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpMaW5l
SXRlcmF0b3JMZWdhY3lQYXRoOjpvcGVyYXRvcj09IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpMaW5lSXRlcmF0b3JMZWdhY3lQYXRoOjphdEVuZCBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6TGluZUl0
ZXJhdG9yTGVnYWN5UGF0aDo6Zmlyc3RMZWFmQm94IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpMaW5lSXRlcmF0b3JMZWdhY3lQYXRoOjpsYXN0TGVh
ZkJveCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogbGF5b3V0L2ludGVncmF0aW9uL0lubGlu
ZUl0ZXJhdG9yTGluZU1vZGVyblBhdGguaDoKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJh
dG9yOjpMaW5lQm94SXRlcmF0b3JNb2Rlcm5QYXRoOjpMaW5lQm94SXRlcmF0b3JNb2Rlcm5QYXRo
KToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpMaW5lQm94SXRlcmF0b3JNb2Rl
cm5QYXRoOjp0b3AgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6Okxp
bmVCb3hJdGVyYXRvck1vZGVyblBhdGg6OmJvdHRvbSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbmxpbmVJdGVyYXRvcjo6TGluZUJveEl0ZXJhdG9yTW9kZXJuUGF0aDo6Y29udGVudExvZ2lj
YWxUb3BBZGp1c3RlZEZvclByZWNlZGluZ0xpbmVCb3ggY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5saW5lSXRlcmF0b3I6OkxpbmVCb3hJdGVyYXRvck1vZGVyblBhdGg6OmNvbnRlbnRMb2dp
Y2FsQm90dG9tQWRqdXN0ZWRGb3JGb2xsb3dpbmdMaW5lQm94IGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OklubGluZUl0ZXJhdG9yOjpMaW5lQm94SXRlcmF0b3JNb2Rlcm5QYXRoOjpvcGVyYXRv
cj09IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpMaW5lSXRlcmF0
b3JNb2Rlcm5QYXRoOjpMaW5lSXRlcmF0b3JNb2Rlcm5QYXRoKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpMaW5lSXRlcmF0b3JNb2Rlcm5QYXRoOjpjb250ZW50
TG9naWNhbFRvcCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVy
YXRvcjo6TGluZUl0ZXJhdG9yTW9kZXJuUGF0aDo6Y29udGVudExvZ2ljYWxCb3R0b20gY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OkxpbmVJdGVyYXRv
ck1vZGVyblBhdGg6OmxpbmVCb3hUb3AgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6SW5saW5lSXRlcmF0b3I6OkxpbmVJdGVyYXRvck1vZGVyblBhdGg6OmxpbmVCb3hCb3R0b20g
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OkxpbmVJ
dGVyYXRvck1vZGVyblBhdGg6OmNvbnRlbnRMb2dpY2FsVG9wQWRqdXN0ZWRGb3JQcmVjZWRpbmdM
aW5lIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpM
aW5lSXRlcmF0b3JNb2Rlcm5QYXRoOjpjb250ZW50TG9naWNhbEJvdHRvbUFkanVzdGVkRm9yRm9s
bG93aW5nTGluZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVy
YXRvcjo6TGluZUl0ZXJhdG9yTW9kZXJuUGF0aDo6Y29udGVudExvZ2ljYWxMZWZ0IGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpMaW5lSXRlcmF0b3JN
b2Rlcm5QYXRoOjpjb250ZW50TG9naWNhbFJpZ2h0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpMaW5lSXRlcmF0b3JNb2Rlcm5QYXRoOjppc0hvcml6
b250YWwgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6
OkxpbmVJdGVyYXRvck1vZGVyblBhdGg6OmJhc2VsaW5lVHlwZSBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6TGluZUl0ZXJhdG9yTW9kZXJuUGF0aDo6
Y29udGFpbmluZ0Jsb2NrIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklubGlu
ZUl0ZXJhdG9yOjpMaW5lSXRlcmF0b3JNb2Rlcm5QYXRoOjpjb250YWluaW5nRnJhZ21lbnQgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OkxpbmVJdGVy
YXRvck1vZGVyblBhdGg6OmlzRmlyc3RBZnRlclBhZ2VCcmVhayBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6TGluZUl0ZXJhdG9yTW9kZXJuUGF0aDo6
dHJhdmVyc2VOZXh0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9y
OjpMaW5lSXRlcmF0b3JNb2Rlcm5QYXRoOjp0cmF2ZXJzZVByZXZpb3VzKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpMaW5lSXRlcmF0b3JNb2Rlcm5QYXRoOjpv
cGVyYXRvcj09IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJh
dG9yOjpMaW5lSXRlcmF0b3JNb2Rlcm5QYXRoOjphdEVuZCBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6TGluZUl0ZXJhdG9yTW9kZXJuUGF0aDo6Zmly
c3RMZWFmQm94IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJh
dG9yOjpMaW5lSXRlcmF0b3JNb2Rlcm5QYXRoOjpsYXN0TGVhZkJveCBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6TGluZUl0ZXJhdG9yTW9kZXJuUGF0
aDo6c2V0QXRFbmQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6
OkxpbmVJdGVyYXRvck1vZGVyblBhdGg6OmxpbmVzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpMaW5lSXRlcmF0b3JNb2Rlcm5QYXRoOjpsaW5lIGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBsYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0
b3JMb2dpY2FsT3JkZXJUcmF2ZXJzYWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRl
cmF0b3I6Om1ha2VMaW5lTG9naWNhbE9yZGVyQ2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5s
aW5lSXRlcmF0b3I6OnVwZGF0ZUxpbmVMb2dpY2FsT3JkZXJDYWNoZUlmTmVlZGVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpmaXJzdExlYWZPbkxpbmVJbkxvZ2ljYWxPcmRl
cik6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6bGFzdExlYWZPbkxpbmVJbkxv
Z2ljYWxPcmRlcik6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6Zmlyc3RMZWFm
T25MaW5lSW5Mb2dpY2FsT3JkZXJXaXRoTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJ
dGVyYXRvcjo6bGFzdExlYWZPbkxpbmVJbkxvZ2ljYWxPcmRlcldpdGhOb2RlKToKKyAgICAgICAg
KiBsYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JMb2dpY2FsT3JkZXJUcmF2ZXJzYWwu
aDoKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpsZWFmQm94ZXNJbkxvZ2ljYWxP
cmRlcik6CisgICAgICAgICogbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yVGV4dEJv
eC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6VGV4dEJveDo6c2VsZWN0
aW9uUmVjdCBjb25zdCk6CisgICAgICAgICogbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVn
cmF0aW9uTGluZUxheW91dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlv
bjo6TGluZUxheW91dDo6Zmlyc3RMaW5lQm94IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Okxh
eW91dEludGVncmF0aW9uOjpMaW5lTGF5b3V0OjpsYXN0TGluZUJveCBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6TGluZUxheW91dDo6Zmlyc3RMaW5lIGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpMaW5lTGF5
b3V0OjpsYXN0TGluZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogbGF5b3V0L2ludGVncmF0
aW9uL0xheW91dEludGVncmF0aW9uTGluZUxheW91dC5oOgorICAgICAgICAqIGxheW91dC9pbnRl
Z3JhdGlvbi9MaW5lU2VsZWN0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpMaW5lU2VsZWN0aW9u
Ojpsb2dpY2FsVG9wKToKKyAgICAgICAgKFdlYkNvcmU6OkxpbmVTZWxlY3Rpb246OmxvZ2ljYWxC
b3R0b20pOgorICAgICAgICAoV2ViQ29yZTo6TGluZVNlbGVjdGlvbjo6bG9naWNhbFJlY3QpOgor
ICAgICAgICAoV2ViQ29yZTo6TGluZVNlbGVjdGlvbjo6cGh5c2ljYWxSZWN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkxpbmVTZWxlY3Rpb246OmxvZ2ljYWxUb3BBZGp1c3RlZEZvclByZWNlZGluZ0Js
b2NrKToKKyAgICAgICAgKFdlYkNvcmU6OkxpbmVTZWxlY3Rpb246OnNlbGVjdGlvblN0YXRlKToK
KyAgICAgICAgKiByZW5kZXJpbmcvQ2FyZXRSZWN0Q29tcHV0YXRpb24uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Y29tcHV0ZUNhcmV0UmVjdEZvckxpbmVQb3NpdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpjb21wdXRlQ2FyZXRSZWN0Rm9yVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpjb21wdXRl
Q2FyZXRSZWN0Rm9yTGluZUJyZWFrKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbXB1dGVDYXJldFJl
Y3RGb3JCb3gpOgorICAgICAgICAqIHJlbmRlcmluZy9JbmxpbmVCb3hQYWludGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OklubGluZUJveFBhaW50ZXI6OklubGluZUJveFBhaW50ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5saW5lQm94UGFpbnRlcjo6cGFpbnRNYXNrKToKKyAgICAgICAgKFdl
YkNvcmU6OklubGluZUJveFBhaW50ZXI6OnBhaW50RGVjb3JhdGlvbnMpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5saW5lQm94UGFpbnRlcjo6c3R5bGUgY29uc3QpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9JbmxpbmVCb3hQYWludGVyLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxv
dy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6OmFkanVzdEVuY2xvc2lu
Z1RvcEZvclByZWNlZGluZ0Jsb2NrIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJs
b2NrRmxvdzo6aW5saW5lU2VsZWN0aW9uR2Fwcyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJC
bG9ja0Zsb3c6OmNvbnRhaW5zTm9uWmVyb0JpZGlMZXZlbCBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJCbG9ja0Zsb3c6OmZpbmRDbG9zZXN0VGV4dEF0QWJzb2x1dGVQb2ludCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6OnBvc2l0aW9uRm9yUG9pbnRXaXRoSW5s
aW5lQ2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2tGbG93OjphZGRGb2N1
c1JpbmdSZWN0c0ZvcklubGluZUNoaWxkcmVuKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJFbGVtZW50OjpnZXRMZWFkaW5n
Q29ybmVyIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlcklubGluZTo6cGFpbnRPdXRsaW5lKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyUmVw
bGFjZWQ6OnBvc2l0aW9uRm9yUG9pbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHQ6OnBvc2l0aW9uRm9yUG9pbnQpOgor
ICAgICAgICAqIHJlbmRlcmluZy9UZXh0Qm94UGFpbnRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpUZXh0Qm94UGFpbnRlcjo6VGV4dEJveFBhaW50ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGV4
dEJveFBhaW50ZXI6OnBhaW50QmFja2dyb3VuZCk6CisgICAgICAgIChXZWJDb3JlOjp0ZXh0UG9z
aXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEJveFBhaW50ZXI6OmNvbXB1dGVQYWludFJl
Y3QpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHUm9vdElubGluZUJveC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdSb290SW5saW5lQm94OjpyZW9yZGVyVmFsdWVMaXN0c1RvTG9naWNh
bE9yZGVyKToKKyAgICAgICAgKiBzdHlsZS9JbmxpbmVUZXh0Qm94U3R5bGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6bWluTG9naWNhbFRvcEZvclRleHREZWNvcmF0aW9uTGluZSk6CisgICAgICAg
IChXZWJDb3JlOjptYXhMb2dpY2FsQm90dG9tRm9yVGV4dERlY29yYXRpb25MaW5lKToKKyAgICAg
ICAgKFdlYkNvcmU6OmNvbXB1dGVVbmRlcmxpbmVPZmZzZXQpOgorCiAyMDIyLTAzLTE5ICBBbGFu
IEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbSUZDXVtJbnRlZ3JhdGlvbl0g
UmVtb3ZlIHJlZHVuZGFudCBJbmxpbmVJdGVyYXRvcjo6TGluZTo6Y29udGVudExvZ2ljYWxUb3BB
ZGp1c3RlZEZvckhpdFRlc3RpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMu
Y21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCmluZGV4IDJkZWQwOTdjYWE2YTMx
NGQ4NWRlNTMxMDhhODUwZGE1MThjNDg5ZmMuLjQzMTQyYmYyNDkxYjRjZWI4MmNhYmVmMmViZDk4
MTI1ZWM2ZTcyMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKKysr
IGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQpAQCAtOTc2LDkgKzk3Niw5IEBAIHNldChX
ZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBsYXlvdXQvaW50ZWdyYXRpb24v
SW5saW5lSXRlcmF0b3JCb3guaAogICAgIGxheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRv
ckJveExlZ2FjeVBhdGguaAogICAgIGxheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRvckJv
eE1vZGVyblBhdGguaAotICAgIGxheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRvckxpbmUu
aAotICAgIGxheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRvckxpbmVMZWdhY3lQYXRoLmgK
LSAgICBsYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JMaW5lTW9kZXJuUGF0aC5oCisg
ICAgbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yTGluZUJveC5oCisgICAgbGF5b3V0
L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yTGluZUJveExlZ2FjeVBhdGguaAorICAgIGxheW91
dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRvckxpbmVCb3hNb2Rlcm5QYXRoLmgKICAgICBsYXlv
dXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JMb2dpY2FsT3JkZXJUcmF2ZXJzYWwuaAogICAg
IGxheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRvclRleHRCb3guaAogICAgIGxheW91dC9p
bnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbklubGluZUNvbnRlbnQuaApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDkwODIxZWIy
MWYxM2M3YzkwNGViYTczMWI2NTJlYmI0N2FmYzYwNDYuLjM0MTk5NzFiOTRjY2I4NjkyMjFiY2U2
YjAyNWM3ZjUyOTNlMmJjM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTU0MzAsOSArNTQzMCw5IEBACiAJCUU0QzkxQTBFMTgw
MjM0MzEwMEExN0Y2RCAvKiBUZXh0UGFpbnRTdHlsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTRDOTFBMEQxODAyMzQzMTAwQTE3RjZEIC8qIFRleHRQ
YWludFN0eWxlLmggKi87IH07CiAJCUU0QzkxQTE2MTgwOTk5RjEwMEExN0Y2RCAvKiBSZW5kZXJU
ZXh0TGluZUJveGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBFNEM5MUExNTE4MDk5OUYxMDBBMTdGNkQgLyogUmVuZGVyVGV4dExpbmVCb3hlcy5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUU0RDMzRjNC
MjUyQUVFQ0QwMDgzN0QwNSAvKiBJbmxpbmVSdW5BbmRPZmZzZXQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0RDMzRjM5MjUyQUVFQ0MwMDgzN0QwNSAv
KiBJbmxpbmVSdW5BbmRPZmZzZXQuaCAqLzsgfTsKLQkJRTREMzNGNDEyNTJDNEI4MzAwODM3RDA1
IC8qIElubGluZUl0ZXJhdG9yTGluZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRTREMzNGM0YyNTJDNEI4MjAwODM3RDA1IC8qIElubGluZUl0ZXJhdG9y
TGluZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0J
CUU0RDMzRjQ0MjUyQzUwRTIwMDgzN0QwNSAvKiBJbmxpbmVJdGVyYXRvckxpbmVMZWdhY3lQYXRo
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNEQzM0Y0
MzI1MkM1MEUyMDA4MzdEMDUgLyogSW5saW5lSXRlcmF0b3JMaW5lTGVnYWN5UGF0aC5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCUU0RDMzRjQ2MjUy
QzUwRkMwMDgzN0QwNSAvKiBJbmxpbmVJdGVyYXRvckxpbmVNb2Rlcm5QYXRoLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNEQzM0Y0NTI1MkM1MEZCMDA4
MzdEMDUgLyogSW5saW5lSXRlcmF0b3JMaW5lTW9kZXJuUGF0aC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUU0RDMzRjQxMjUyQzRCODMwMDgzN0Qw
NSAvKiBJbmxpbmVJdGVyYXRvckxpbmVCb3guaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEU0RDMzRjNGMjUyQzRCODIwMDgzN0QwNSAvKiBJbmxpbmVJdGVy
YXRvckxpbmVCb3guaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQlFNEQzM0Y0NDI1MkM1MEUyMDA4MzdEMDUgLyogSW5saW5lSXRlcmF0b3JMaW5lQm94
TGVnYWN5UGF0aC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTREMzNGNDMyNTJDNTBFMjAwODM3RDA1IC8qIElubGluZUl0ZXJhdG9yTGluZUJveExlZ2Fj
eVBhdGguaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQlFNEQzM0Y0NjI1MkM1MEZDMDA4MzdEMDUgLyogSW5saW5lSXRlcmF0b3JMaW5lQm94TW9kZXJu
UGF0aC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTRE
MzNGNDUyNTJDNTBGQjAwODM3RDA1IC8qIElubGluZUl0ZXJhdG9yTGluZUJveE1vZGVyblBhdGgu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFNEQ1
OEVCNTE3QjREQkRDMDBDQkRDQTggLyogU3R5bGVSZXNvbHZlRm9yRG9jdW1lbnQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0RDU4RUIzMTdCNERCREMw
MENCRENBOCAvKiBTdHlsZVJlc29sdmVGb3JEb2N1bWVudC5oICovOyB9OwogCQlFNEQ1OEVCOTE3
QjRFRDg5MDBDQkRDQTggLyogU3R5bGVGb250U2l6ZUZ1bmN0aW9ucy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTRENThFQjcxN0I0RUQ4OTAwQ0JEQ0E4
IC8qIFN0eWxlRm9udFNpemVGdW5jdGlvbnMuaCAqLzsgfTsKIAkJRTRENThFQkIxN0I4RjEyODAw
Q0JEQ0E4IC8qIEVsZW1lbnRUcmF2ZXJzYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEU0RDU4RUJBMTdCOEYxMjgwMENCRENBOCAvKiBFbGVtZW50VHJh
dmVyc2FsLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
QEAgLTE3NjEzLDEwICsxNzYxMywxMCBAQAogCQlFNEM5MUExNTE4MDk5OUYxMDBBMTdGNkQgLyog
UmVuZGVyVGV4dExpbmVCb3hlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBS
ZW5kZXJUZXh0TGluZUJveGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0Qzkx
QTE3MTgwOTk5RkIwMEExN0Y2RCAvKiBSZW5kZXJUZXh0TGluZUJveGVzLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRlclRleHRMaW5lQm94ZXMuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNEQzM0YzOTI1MkFFRUNDMDA4MzdEMDUgLyogSW5s
aW5lUnVuQW5kT2Zmc2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElubGlu
ZVJ1bkFuZE9mZnNldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlFNEQzM0YzRjI1
MkM0QjgyMDA4MzdEMDUgLyogSW5saW5lSXRlcmF0b3JMaW5lLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IElubGluZUl0ZXJhdG9yTGluZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlFNEQzM0YzRjI1MkM0QjgyMDA4MzdEMDUgLyogSW5saW5lSXRlcmF0b3JMaW5l
Qm94LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElubGluZUl0ZXJhdG9yTGlu
ZUJveC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNEQzM0Y0MjI1MkM1MEE4MDA4
MzdEMDUgLyogSW5saW5lSXRlcmF0b3JMaW5lLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IElubGlu
ZUl0ZXJhdG9yTGluZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUU0RDMzRjQz
MjUyQzUwRTIwMDgzN0QwNSAvKiBJbmxpbmVJdGVyYXRvckxpbmVMZWdhY3lQYXRoLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElubGluZUl0ZXJhdG9yTGluZUxlZ2FjeVBhdGgu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRTREMzNGNDUyNTJDNTBGQjAwODM3RDA1
IC8qIElubGluZUl0ZXJhdG9yTGluZU1vZGVyblBhdGguaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSW5saW5lSXRlcmF0b3JMaW5lTW9kZXJuUGF0aC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlFNEQzM0Y0MzI1MkM1MEUyMDA4MzdEMDUgLyogSW5saW5lSXRlcmF0
b3JMaW5lQm94TGVnYWN5UGF0aC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJ
bmxpbmVJdGVyYXRvckxpbmVCb3hMZWdhY3lQYXRoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUU0RDMzRjQ1MjUyQzUwRkIwMDgzN0QwNSAvKiBJbmxpbmVJdGVyYXRvckxpbmVCb3hN
b2Rlcm5QYXRoLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElubGluZUl0ZXJh
dG9yTGluZUJveE1vZGVyblBhdGguaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTRE
NThFQjIxN0I0REJEQzAwQ0JEQ0E4IC8qIFN0eWxlUmVzb2x2ZUZvckRvY3VtZW50LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0eWxlUmVzb2x2ZUZvckRvY3VtZW50
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTRENThFQjMxN0I0REJEQzAwQ0JE
Q0E4IC8qIFN0eWxlUmVzb2x2ZUZvckRvY3VtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFN0eWxlUmVzb2x2ZUZvckRvY3VtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUU0RDU4RUI2MTdCNEVEODkwMENCRENBOCAvKiBTdHlsZUZvbnRTaXplRnVuY3Rp
b25zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0eWxlRm9udFNp
emVGdW5jdGlvbnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzE1MjYsOSAr
MzE1MjYsOSBAQAogCQkJCUU0MTVFQjE0MjcwQzM1MzcwMEU4REExQiAvKiBJbmxpbmVJdGVyYXRv
cklubGluZUJveC5jcHAgKi8sCiAJCQkJRTQxNUVCMTEyNzBDMzUxMjAwRThEQTFCIC8qIElubGlu
ZUl0ZXJhdG9ySW5saW5lQm94LmggKi8sCiAJCQkJRTREMzNGNDIyNTJDNTBBODAwODM3RDA1IC8q
IElubGluZUl0ZXJhdG9yTGluZS5jcHAgKi8sCi0JCQkJRTREMzNGM0YyNTJDNEI4MjAwODM3RDA1
IC8qIElubGluZUl0ZXJhdG9yTGluZS5oICovLAotCQkJCUU0RDMzRjQzMjUyQzUwRTIwMDgzN0Qw
NSAvKiBJbmxpbmVJdGVyYXRvckxpbmVMZWdhY3lQYXRoLmggKi8sCi0JCQkJRTREMzNGNDUyNTJD
NTBGQjAwODM3RDA1IC8qIElubGluZUl0ZXJhdG9yTGluZU1vZGVyblBhdGguaCAqLywKKwkJCQlF
NEQzM0YzRjI1MkM0QjgyMDA4MzdEMDUgLyogSW5saW5lSXRlcmF0b3JMaW5lQm94LmggKi8sCisJ
CQkJRTREMzNGNDMyNTJDNTBFMjAwODM3RDA1IC8qIElubGluZUl0ZXJhdG9yTGluZUJveExlZ2Fj
eVBhdGguaCAqLywKKwkJCQlFNEQzM0Y0NTI1MkM1MEZCMDA4MzdEMDUgLyogSW5saW5lSXRlcmF0
b3JMaW5lQm94TW9kZXJuUGF0aC5oICovLAogCQkJCUU0MUFDQzEyMjcxNzMzRjMwMDNFOTE1NyAv
KiBJbmxpbmVJdGVyYXRvckxvZ2ljYWxPcmRlclRyYXZlcnNhbC5jcHAgKi8sCiAJCQkJRTQxQUND
MTUyNzE3MzQwMjAwM0U5MTU3IC8qIElubGluZUl0ZXJhdG9yTG9naWNhbE9yZGVyVHJhdmVyc2Fs
LmggKi8sCiAJCQkJRTQ3Q0VCREUyNzA5OTE2NDAwQjhEOEY1IC8qIElubGluZUl0ZXJhdG9yVGV4
dEJveC5jcHAgKi8sCkBAIC0zNTEyMiw5ICszNTEyMiw5IEBACiAJCQkJRTRBNjY0Q0YyNTIxRDRF
MjAwNzA4MURDIC8qIElubGluZUl0ZXJhdG9yQm94TGVnYWN5UGF0aC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRTRBNjY0Q0UyNTIxRDRDOTAwNzA4MURDIC8qIElubGluZUl0ZXJhdG9yQm94TW9kZXJu
UGF0aC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTQxNUVCMTMyNzBDMzUxMzAwRThEQTFCIC8qIElu
bGluZUl0ZXJhdG9ySW5saW5lQm94LmggaW4gSGVhZGVycyAqLywKLQkJCQlFNEQzM0Y0MTI1MkM0
QjgzMDA4MzdEMDUgLyogSW5saW5lSXRlcmF0b3JMaW5lLmggaW4gSGVhZGVycyAqLywKLQkJCQlF
NEQzM0Y0NDI1MkM1MEUyMDA4MzdEMDUgLyogSW5saW5lSXRlcmF0b3JMaW5lTGVnYWN5UGF0aC5o
IGluIEhlYWRlcnMgKi8sCi0JCQkJRTREMzNGNDYyNTJDNTBGQzAwODM3RDA1IC8qIElubGluZUl0
ZXJhdG9yTGluZU1vZGVyblBhdGguaCBpbiBIZWFkZXJzICovLAorCQkJCUU0RDMzRjQxMjUyQzRC
ODMwMDgzN0QwNSAvKiBJbmxpbmVJdGVyYXRvckxpbmVCb3guaCBpbiBIZWFkZXJzICovLAorCQkJ
CUU0RDMzRjQ0MjUyQzUwRTIwMDgzN0QwNSAvKiBJbmxpbmVJdGVyYXRvckxpbmVCb3hMZWdhY3lQ
YXRoLmggaW4gSGVhZGVycyAqLywKKwkJCQlFNEQzM0Y0NjI1MkM1MEZDMDA4MzdEMDUgLyogSW5s
aW5lSXRlcmF0b3JMaW5lQm94TW9kZXJuUGF0aC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTQxQUND
MTYyNzE3MzQwMjAwM0U5MTU3IC8qIElubGluZUl0ZXJhdG9yTG9naWNhbE9yZGVyVHJhdmVyc2Fs
LmggaW4gSGVhZGVycyAqLywKIAkJCQlFNDdDRUJFMTI3MDk5MTZEMDBCOEQ4RjUgLyogSW5saW5l
SXRlcmF0b3JUZXh0Qm94LmggaW4gSGVhZGVycyAqLywKIAkJCQk2RkFBRTcxMzI2QTI4MTRCMDBF
MDc1MDIgLyogSW5saW5lTGV2ZWxCb3guaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlv
bi5jcHAKaW5kZXggMWQyMDg2NzNmMDcxZmY2YThiYmYwNWJmMjRmMjlkMDJkNTQ2YzZkOC4uMDQ3
N2E1ODRiNDU3ZDFhNzM0N2JkNzAxZGY0MGZhMTllYzViZWVkNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRp
b24uY3BwCkBAIC0zNiw3ICszNiw3IEBACiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVk
ZSAiSFRNTFBhcnNlcklkaW9tcy5oIgogI2luY2x1ZGUgIkhUTUxUYWJsZUVsZW1lbnQuaCIKLSNp
bmNsdWRlICJJbmxpbmVJdGVyYXRvckxpbmUuaCIKKyNpbmNsdWRlICJJbmxpbmVJdGVyYXRvckxp
bmVCb3guaCIKICNpbmNsdWRlICJJbmxpbmVJdGVyYXRvckxvZ2ljYWxPcmRlclRyYXZlcnNhbC5o
IgogI2luY2x1ZGUgIklubGluZUl0ZXJhdG9yVGV4dEJveC5oIgogI2luY2x1ZGUgIklubGluZVJ1
bkFuZE9mZnNldC5oIgpAQCAtNzYwLDcgKzc2MCw3IEBAIFBvc2l0aW9uIFBvc2l0aW9uOjp1cHN0
cmVhbShFZGl0aW5nQm91bmRhcnlDcm9zc2luZ1J1bGUgcnVsZSkgY29uc3QKICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGN1cnJlbnRQb3NpdGlvbjsKIAogICAgICAgICAgICAgICAgIGF1dG8g
bmV4dEJveCA9IElubGluZUl0ZXJhdG9yOjpuZXh0VGV4dEJveEluTG9naWNhbE9yZGVyKGJveCwg
b3JkZXJDYWNoZSk7Ci0gICAgICAgICAgICAgICAgaWYgKHRleHRPZmZzZXQgPT0gYm94LT5lbmQo
KSArIDEgJiYgbmV4dEJveCAmJiBib3gtPmxpbmUoKSAhPSBuZXh0Qm94LT5saW5lKCkpCisgICAg
ICAgICAgICAgICAgaWYgKHRleHRPZmZzZXQgPT0gYm94LT5lbmQoKSArIDEgJiYgbmV4dEJveCAm
JiBib3gtPmxpbmVCb3goKSAhPSBuZXh0Qm94LT5saW5lQm94KCkpCiAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBjdXJyZW50UG9zaXRpb247CiAKICAgICAgICAgICAgICAgICBib3ggPSBuZXh0
Qm94OwpAQCAtODY2LDcgKzg2Niw3IEBAIFBvc2l0aW9uIFBvc2l0aW9uOjpkb3duc3RyZWFtKEVk
aXRpbmdCb3VuZGFyeUNyb3NzaW5nUnVsZSBydWxlKSBjb25zdAogICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gY3VycmVudFBvc2l0aW9uOwogCiAgICAgICAgICAgICAgICAgYXV0byBuZXh0Qm94
ID0gSW5saW5lSXRlcmF0b3I6Om5leHRUZXh0Qm94SW5Mb2dpY2FsT3JkZXIoYm94LCBvcmRlckNh
Y2hlKTsKLSAgICAgICAgICAgICAgICBpZiAodGV4dE9mZnNldCA9PSBib3gtPmVuZCgpICYmIG5l
eHRCb3ggJiYgYm94LT5saW5lKCkgIT0gbmV4dEJveC0+bGluZSgpKQorICAgICAgICAgICAgICAg
IGlmICh0ZXh0T2Zmc2V0ID09IGJveC0+ZW5kKCkgJiYgbmV4dEJveCAmJiBib3gtPmxpbmVCb3go
KSAhPSBuZXh0Qm94LT5saW5lQm94KCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjdXJy
ZW50UG9zaXRpb247CiAKICAgICAgICAgICAgICAgICBib3ggPSBuZXh0Qm94OwpAQCAtMTA5NSw3
ICsxMDk1LDcgQEAgYm9vbCBQb3NpdGlvbjo6cmVuZGVyc0luRGlmZmVyZW50UG9zaXRpb24oY29u
c3QgUG9zaXRpb24mIHBvc2l0aW9uKSBjb25zdAogICAgIGlmICghYm94MSB8fCAhYm94MikKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaWYgKGJveDEtPmxpbmUoKSAhPSBib3gyLT5saW5l
KCkpCisgICAgaWYgKGJveDEtPmxpbmVCb3goKSAhPSBib3gyLT5saW5lQm94KCkpCiAgICAgICAg
IHJldHVybiB0cnVlOwogCiAgICAgaWYgKG5leHRSZW5kZXJlZEVkaXRhYmxlKGRlcHJlY2F0ZWRO
b2RlKCkpID09IHBvc2l0aW9uLmRlcHJlY2F0ZWROb2RlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvUmVuZGVyZWRQb3NpdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9SZW5kZXJlZFBvc2l0aW9uLmgKaW5kZXggNTU3MWE0NzMyYjBhMzcyMmZmYWY1OGU3Mzc0Nzc0
NDU0NTJmYjRkZS4uZDM2ZTc4ODI4ODNkNjY4Y2MwY2I0NzhhNjQzY2M0OTY1MjMwYzU0MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZW5kZXJlZFBvc2l0aW9uLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9SZW5kZXJlZFBvc2l0aW9uLmgKQEAgLTMyLDcgKzMyLDcg
QEAKIAogI2luY2x1ZGUgIkNhcmV0UmVjdENvbXB1dGF0aW9uLmgiCiAjaW5jbHVkZSAiSW5saW5l
SXRlcmF0b3JCb3guaCIKLSNpbmNsdWRlICJJbmxpbmVJdGVyYXRvckxpbmUuaCIKKyNpbmNsdWRl
ICJJbmxpbmVJdGVyYXRvckxpbmVCb3guaCIKICNpbmNsdWRlICJUZXh0QWZmaW5pdHkuaCIKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBp
c0VxdWl2YWxlbnQoY29uc3QgUmVuZGVyZWRQb3NpdGlvbiYpIGNvbnN0OwogCiAgICAgYm9vbCBp
c051bGwoKSBjb25zdCB7IHJldHVybiAhbV9yZW5kZXJlcjsgfQotICAgIElubGluZUl0ZXJhdG9y
OjpMaW5lSXRlcmF0b3IgbGluZSgpIGNvbnN0IHsgcmV0dXJuIG1fYm94ID8gbV9ib3gtPmxpbmUo
KSA6IElubGluZUl0ZXJhdG9yOjpMaW5lSXRlcmF0b3IoKTsgfQorICAgIElubGluZUl0ZXJhdG9y
OjpMaW5lQm94SXRlcmF0b3IgbGluZUJveCgpIGNvbnN0IHsgcmV0dXJuIG1fYm94ID8gbV9ib3gt
PmxpbmVCb3goKSA6IElubGluZUl0ZXJhdG9yOjpMaW5lQm94SXRlcmF0b3IoKTsgfQogCiAgICAg
dW5zaWduZWQgY2hhciBiaWRpTGV2ZWxPbkxlZnQoKSBjb25zdDsKICAgICB1bnNpZ25lZCBjaGFy
IGJpZGlMZXZlbE9uUmlnaHQoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvVmlzaWJsZVBvc2l0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJs
ZVBvc2l0aW9uLmNwcAppbmRleCAyNjE4MTQyMTE2MWEwNDliNjU0YThkZTNiNjc0YWM5MzQ2ZWI0
MzcyLi4xZjk2YmEyZmYzYTUzM2FjOTU3ODkzNDM2NGIzMzViMmRmZTUwMjNhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVQb3NpdGlvbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlUG9zaXRpb24uY3BwCkBAIC0zNiw3ICszNiw3IEBACiAj
aW5jbHVkZSAiSFRNTEh0bWxFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5j
bHVkZSAiSW5saW5lSXRlcmF0b3JCb3guaCIKLSNpbmNsdWRlICJJbmxpbmVJdGVyYXRvckxpbmUu
aCIKKyNpbmNsdWRlICJJbmxpbmVJdGVyYXRvckxpbmVCb3guaCIKICNpbmNsdWRlICJJbmxpbmVS
dW5BbmRPZmZzZXQuaCIKICNpbmNsdWRlICJMaW5lU2VsZWN0aW9uLmgiCiAjaW5jbHVkZSAiTG9n
Z2luZy5oIgpAQCAtMTYwLDcgKzE2MCw3IEBAIFBvc2l0aW9uIFZpc2libGVQb3NpdGlvbjo6bGVm
dFZpc3VhbGx5RGlzdGluY3RDYW5kaWRhdGUoKSBjb25zdAogICAgICAgICAgICAgICAgIGlmICgh
cHJldmlvdXNCb3gpIHsKICAgICAgICAgICAgICAgICAgICAgUG9zaXRpb24gcG9zaXRpb25Pbkxl
ZnQgPSBwcmltYXJ5RGlyZWN0aW9uID09IFRleHREaXJlY3Rpb246OkxUUiA/IHByZXZpb3VzVmlz
dWFsbHlEaXN0aW5jdENhbmRpZGF0ZShtX2RlZXBQb3NpdGlvbikgOiBuZXh0VmlzdWFsbHlEaXN0
aW5jdENhbmRpZGF0ZShtX2RlZXBQb3NpdGlvbik7CiAgICAgICAgICAgICAgICAgICAgIGF1dG8g
Ym94T25MZWZ0ID0gcG9zaXRpb25PbkxlZnQuaW5saW5lQm94QW5kT2Zmc2V0KG1fYWZmaW5pdHks
IHByaW1hcnlEaXJlY3Rpb24pLmJveDsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGJveE9uTGVm
dCAmJiBib3hPbkxlZnQtPmxpbmUoKSA9PSBib3gtPmxpbmUoKSkKKyAgICAgICAgICAgICAgICAg
ICAgaWYgKGJveE9uTGVmdCAmJiBib3hPbkxlZnQtPmxpbmVCb3goKSA9PSBib3gtPmxpbmVCb3go
KSkKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBQb3NpdGlvbigpOwogICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gcG9zaXRpb25PbkxlZnQ7CiAgICAgICAgICAgICAgICAgfQpAQCAt
MTc4LDggKzE3OCw4IEBAIFBvc2l0aW9uIFZpc2libGVQb3NpdGlvbjo6bGVmdFZpc3VhbGx5RGlz
dGluY3RDYW5kaWRhdGUoKSBjb25zdAogICAgICAgICAgICAgaWYgKGJveC0+ZGlyZWN0aW9uKCkg
PT0gcHJpbWFyeURpcmVjdGlvbikgewogICAgICAgICAgICAgICAgIGlmICghcHJldmlvdXNCb3gp
IHsKICAgICAgICAgICAgICAgICAgICAgYXV0byBsb2dpY2FsU3RhcnQgPSBwcmltYXJ5RGlyZWN0
aW9uID09IFRleHREaXJlY3Rpb246OkxUUgotICAgICAgICAgICAgICAgICAgICAgICAgPyBJbmxp
bmVJdGVyYXRvcjo6Zmlyc3RMZWFmT25MaW5lSW5Mb2dpY2FsT3JkZXJXaXRoTm9kZShib3gtPmxp
bmUoKSwgb3JkZXJDYWNoZSkKLSAgICAgICAgICAgICAgICAgICAgICAgIDogSW5saW5lSXRlcmF0
b3I6Omxhc3RMZWFmT25MaW5lSW5Mb2dpY2FsT3JkZXJXaXRoTm9kZShib3gtPmxpbmUoKSwgb3Jk
ZXJDYWNoZSk7CisgICAgICAgICAgICAgICAgICAgICAgICA/IElubGluZUl0ZXJhdG9yOjpmaXJz
dExlYWZPbkxpbmVJbkxvZ2ljYWxPcmRlcldpdGhOb2RlKGJveC0+bGluZUJveCgpLCBvcmRlckNh
Y2hlKQorICAgICAgICAgICAgICAgICAgICAgICAgOiBJbmxpbmVJdGVyYXRvcjo6bGFzdExlYWZP
bkxpbmVJbkxvZ2ljYWxPcmRlcldpdGhOb2RlKGJveC0+bGluZUJveCgpLCBvcmRlckNhY2hlKTsK
ICAgICAgICAgICAgICAgICAgICAgaWYgKGxvZ2ljYWxTdGFydCkgewogICAgICAgICAgICAgICAg
ICAgICAgICAgYm94ID0gbG9naWNhbFN0YXJ0OwogICAgICAgICAgICAgICAgICAgICAgICAgcmVu
ZGVyZXIgPSAmYm94LT5yZW5kZXJlcigpOwpAQCAtMzI2LDcgKzMyNiw3IEBAIFBvc2l0aW9uIFZp
c2libGVQb3NpdGlvbjo6cmlnaHRWaXN1YWxseURpc3RpbmN0Q2FuZGlkYXRlKCkgY29uc3QKICAg
ICAgICAgICAgICAgICBpZiAoIW5leHRCb3gpIHsKICAgICAgICAgICAgICAgICAgICAgUG9zaXRp
b24gcG9zaXRpb25PblJpZ2h0ID0gcHJpbWFyeURpcmVjdGlvbiA9PSBUZXh0RGlyZWN0aW9uOjpM
VFIgPyBuZXh0VmlzdWFsbHlEaXN0aW5jdENhbmRpZGF0ZShtX2RlZXBQb3NpdGlvbikgOiBwcmV2
aW91c1Zpc3VhbGx5RGlzdGluY3RDYW5kaWRhdGUobV9kZWVwUG9zaXRpb24pOwogICAgICAgICAg
ICAgICAgICAgICBhdXRvIGJveE9uUmlnaHQgPSBwb3NpdGlvbk9uUmlnaHQuaW5saW5lQm94QW5k
T2Zmc2V0KG1fYWZmaW5pdHksIHByaW1hcnlEaXJlY3Rpb24pLmJveDsKLSAgICAgICAgICAgICAg
ICAgICAgaWYgKGJveE9uUmlnaHQgJiYgYm94T25SaWdodC0+bGluZSgpID09IGJveC0+bGluZSgp
KQorICAgICAgICAgICAgICAgICAgICBpZiAoYm94T25SaWdodCAmJiBib3hPblJpZ2h0LT5saW5l
Qm94KCkgPT0gYm94LT5saW5lQm94KCkpCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
UG9zaXRpb24oKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uT25SaWdodDsK
ICAgICAgICAgICAgICAgICB9CkBAIC0zNDQsOCArMzQ0LDggQEAgUG9zaXRpb24gVmlzaWJsZVBv
c2l0aW9uOjpyaWdodFZpc3VhbGx5RGlzdGluY3RDYW5kaWRhdGUoKSBjb25zdAogICAgICAgICAg
ICAgaWYgKGJveC0+ZGlyZWN0aW9uKCkgPT0gcHJpbWFyeURpcmVjdGlvbikgewogICAgICAgICAg
ICAgICAgIGlmICghbmV4dEJveCkgewogICAgICAgICAgICAgICAgICAgICBhdXRvIGxvZ2ljYWxF
bmQgPSBwcmltYXJ5RGlyZWN0aW9uID09IFRleHREaXJlY3Rpb246OkxUUgotICAgICAgICAgICAg
ICAgICAgICAgICAgPyBJbmxpbmVJdGVyYXRvcjo6bGFzdExlYWZPbkxpbmVJbkxvZ2ljYWxPcmRl
cldpdGhOb2RlKGJveC0+bGluZSgpLCBvcmRlckNhY2hlKQotICAgICAgICAgICAgICAgICAgICAg
ICAgOiBJbmxpbmVJdGVyYXRvcjo6Zmlyc3RMZWFmT25MaW5lSW5Mb2dpY2FsT3JkZXJXaXRoTm9k
ZShib3gtPmxpbmUoKSwgb3JkZXJDYWNoZSk7CisgICAgICAgICAgICAgICAgICAgICAgICA/IElu
bGluZUl0ZXJhdG9yOjpsYXN0TGVhZk9uTGluZUluTG9naWNhbE9yZGVyV2l0aE5vZGUoYm94LT5s
aW5lQm94KCksIG9yZGVyQ2FjaGUpCisgICAgICAgICAgICAgICAgICAgICAgICA6IElubGluZUl0
ZXJhdG9yOjpmaXJzdExlYWZPbkxpbmVJbkxvZ2ljYWxPcmRlcldpdGhOb2RlKGJveC0+bGluZUJv
eCgpLCBvcmRlckNhY2hlKTsKIAogICAgICAgICAgICAgICAgICAgICBpZiAobG9naWNhbEVuZCkg
ewogICAgICAgICAgICAgICAgICAgICAgICAgYm94ID0gbG9naWNhbEVuZDsKQEAgLTY2OSw3ICs2
NjksNyBAQCBGbG9hdFJlY3QgVmlzaWJsZVBvc2l0aW9uOjphYnNvbHV0ZVNlbGVjdGlvbkJvdW5k
c0ZvckxpbmUoKSBjb25zdAogICAgIGlmICghYm94KQogICAgICAgICByZXR1cm4geyB9OwogCi0g
ICAgYXV0byBsaW5lID0gYm94LT5saW5lKCk7CisgICAgYXV0byBsaW5lID0gYm94LT5saW5lQm94
KCk7CiAgICAgcmV0dXJuIGxpbmUtPmNvbnRhaW5pbmdCbG9jaygpLmxvY2FsVG9BYnNvbHV0ZVF1
YWQoRmxvYXRSZWN0IHsgTGluZVNlbGVjdGlvbjo6cGh5c2ljYWxSZWN0KCpsaW5lKSB9KS5ib3Vu
ZGluZ0JveCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2li
bGVVbml0cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVVbml0cy5jcHAKaW5k
ZXggNGY1MWZiNTI4M2MzMDljOWY3YTRkOWY0YzJmNGY1Y2MzN2Q1NzMwYS4uNDUxOGFkNDM5MzFj
ODUyNWI4ZWZmMjBjNDA5YmQyNjNjODA3MmVmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9WaXNpYmxlVW5pdHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlz
aWJsZVVuaXRzLmNwcApAQCAtMzIsNyArMzIsNyBAQAogI2luY2x1ZGUgIkhUTUxFbGVtZW50Lmgi
CiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiSW5saW5lSXRlcmF0b3JCb3guaCIK
LSNpbmNsdWRlICJJbmxpbmVJdGVyYXRvckxpbmUuaCIKKyNpbmNsdWRlICJJbmxpbmVJdGVyYXRv
ckxpbmVCb3guaCIKICNpbmNsdWRlICJJbmxpbmVJdGVyYXRvckxvZ2ljYWxPcmRlclRyYXZlcnNh
bC5oIgogI2luY2x1ZGUgIklubGluZVJ1bkFuZE9mZnNldC5oIgogI2luY2x1ZGUgIk5vZGVUcmF2
ZXJzYWwuaCIKQEAgLTE1MCwxNyArMTUwLDE3IEBAIHN0YXRpYyBJbmxpbmVJdGVyYXRvcjo6TGVh
ZkJveEl0ZXJhdG9yIG5leHRUZXh0T3JMaW5lQnJlYWtCb3goSW5saW5lSXRlcmF0b3I6OkxlCiAg
ICAgcmV0dXJuIHsgfTsKIH0KIAotc3RhdGljIElubGluZUl0ZXJhdG9yOjpMZWFmQm94SXRlcmF0
b3Igc3RhcnRUZXh0T3JMaW5lQnJlYWtCb3goSW5saW5lSXRlcmF0b3I6OkxpbmVJdGVyYXRvciBs
aW5lLCBJbmxpbmVJdGVyYXRvcjo6TGluZUxvZ2ljYWxPcmRlckNhY2hlJiBvcmRlckNhY2hlKQor
c3RhdGljIElubGluZUl0ZXJhdG9yOjpMZWFmQm94SXRlcmF0b3Igc3RhcnRUZXh0T3JMaW5lQnJl
YWtCb3goSW5saW5lSXRlcmF0b3I6OkxpbmVCb3hJdGVyYXRvciBsaW5lQm94LCBJbmxpbmVJdGVy
YXRvcjo6TGluZUxvZ2ljYWxPcmRlckNhY2hlJiBvcmRlckNhY2hlKQogewotICAgIGF1dG8gYm94
ID0gSW5saW5lSXRlcmF0b3I6OmZpcnN0TGVhZk9uTGluZUluTG9naWNhbE9yZGVyKGxpbmUsIG9y
ZGVyQ2FjaGUpOworICAgIGF1dG8gYm94ID0gSW5saW5lSXRlcmF0b3I6OmZpcnN0TGVhZk9uTGlu
ZUluTG9naWNhbE9yZGVyKGxpbmVCb3gsIG9yZGVyQ2FjaGUpOwogICAgIGlmIChpc1RleHRPckxp
bmVCcmVha0JveChib3gpKQogICAgICAgICByZXR1cm4gYm94OwogICAgIHJldHVybiBuZXh0VGV4
dE9yTGluZUJyZWFrQm94KGJveCwgb3JkZXJDYWNoZSk7CiB9CiAKLXN0YXRpYyBJbmxpbmVJdGVy
YXRvcjo6TGVhZkJveEl0ZXJhdG9yIGVuZFRleHRPckxpbmVCcmVha0JveChJbmxpbmVJdGVyYXRv
cjo6TGluZUl0ZXJhdG9yIGxpbmUsIElubGluZUl0ZXJhdG9yOjpMaW5lTG9naWNhbE9yZGVyQ2Fj
aGUmIG9yZGVyQ2FjaGUpCitzdGF0aWMgSW5saW5lSXRlcmF0b3I6OkxlYWZCb3hJdGVyYXRvciBl
bmRUZXh0T3JMaW5lQnJlYWtCb3goSW5saW5lSXRlcmF0b3I6OkxpbmVCb3hJdGVyYXRvciBsaW5l
Qm94LCBJbmxpbmVJdGVyYXRvcjo6TGluZUxvZ2ljYWxPcmRlckNhY2hlJiBvcmRlckNhY2hlKQog
ewotICAgIGF1dG8gYm94ID0gSW5saW5lSXRlcmF0b3I6Omxhc3RMZWFmT25MaW5lSW5Mb2dpY2Fs
T3JkZXIobGluZSwgb3JkZXJDYWNoZSk7CisgICAgYXV0byBib3ggPSBJbmxpbmVJdGVyYXRvcjo6
bGFzdExlYWZPbkxpbmVJbkxvZ2ljYWxPcmRlcihsaW5lQm94LCBvcmRlckNhY2hlKTsKICAgICBp
ZiAoaXNUZXh0T3JMaW5lQnJlYWtCb3goYm94KSkKICAgICAgICAgcmV0dXJuIGJveDsKICAgICBy
ZXR1cm4gcHJldmlvdXNUZXh0T3JMaW5lQnJlYWtCb3goYm94LCBvcmRlckNhY2hlKTsKQEAgLTE3
MSw5ICsxNzEsOSBAQCBzdGF0aWMgY29uc3QgSW5saW5lSXRlcmF0b3I6OkxlYWZCb3hJdGVyYXRv
ciBsb2dpY2FsbHlQcmV2aW91c0JveChjb25zdCBWaXNpYmxlUAogICAgIGlmIChhdXRvIHByZXZp
b3VzQm94ID0gcHJldmlvdXNUZXh0T3JMaW5lQnJlYWtCb3goc3RhcnRCb3gsIG9yZGVyQ2FjaGUp
KQogICAgICAgICByZXR1cm4gcHJldmlvdXNCb3g7CiAKLSAgICBpZiAoYXV0byBwcmV2aW91c0xp
bmUgPSBzdGFydEJveC0+bGluZSgpLT5wcmV2aW91cygpKSB7CisgICAgaWYgKGF1dG8gcHJldmlv
dXNMaW5lQm94ID0gc3RhcnRCb3gtPmxpbmVCb3goKS0+cHJldmlvdXMoKSkgewogICAgICAgICAv
LyBGSVhNRTogV2h5IGlzbid0IHByZXZpb3VzQm94SW5EaWZmZXJlbnRMaW5lIHNldCBoZXJlPwot
ICAgICAgICBpZiAoYXV0byBwcmV2aW91c0JveCA9IGVuZFRleHRPckxpbmVCcmVha0JveChwcmV2
aW91c0xpbmUsIG9yZGVyQ2FjaGUpKQorICAgICAgICBpZiAoYXV0byBwcmV2aW91c0JveCA9IGVu
ZFRleHRPckxpbmVCcmVha0JveChwcmV2aW91c0xpbmVCb3gsIG9yZGVyQ2FjaGUpKQogICAgICAg
ICAgICAgcmV0dXJuIHByZXZpb3VzQm94OwogICAgIH0KIApAQCAtMTg3LDE4ICsxODcsMTggQEAg
c3RhdGljIGNvbnN0IElubGluZUl0ZXJhdG9yOjpMZWFmQm94SXRlcmF0b3IgbG9naWNhbGx5UHJl
dmlvdXNCb3goY29uc3QgVmlzaWJsZVAKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIFJl
bmRlcmVkUG9zaXRpb24gcmVuZGVyZWRQb3NpdGlvbihwb3NpdGlvbiwgQWZmaW5pdHk6OkRvd25z
dHJlYW0pOwotICAgICAgICBhdXRvIHByZXZpb3VzTGluZSA9IHJlbmRlcmVkUG9zaXRpb24ubGlu
ZSgpOwotICAgICAgICBpZiAoIXByZXZpb3VzTGluZSkKKyAgICAgICAgYXV0byBwcmV2aW91c0xp
bmVCb3ggPSByZW5kZXJlZFBvc2l0aW9uLmxpbmVCb3goKTsKKyAgICAgICAgaWYgKCFwcmV2aW91
c0xpbmVCb3gpCiAgICAgICAgICAgICBicmVhazsKIAotICAgICAgICBpZiAocHJldmlvdXNMaW5l
ICE9IHN0YXJ0Qm94LT5saW5lKCkpIHsKLSAgICAgICAgICAgIGlmIChhdXRvIHByZXZpb3VzQm94
ID0gZW5kVGV4dE9yTGluZUJyZWFrQm94KHByZXZpb3VzTGluZSwgb3JkZXJDYWNoZSkpIHsKKyAg
ICAgICAgaWYgKHByZXZpb3VzTGluZUJveCAhPSBzdGFydEJveC0+bGluZUJveCgpKSB7CisgICAg
ICAgICAgICBpZiAoYXV0byBwcmV2aW91c0JveCA9IGVuZFRleHRPckxpbmVCcmVha0JveChwcmV2
aW91c0xpbmVCb3gsIG9yZGVyQ2FjaGUpKSB7CiAgICAgICAgICAgICAgICAgcHJldmlvdXNCb3hJ
bkRpZmZlcmVudExpbmUgPSB0cnVlOwogICAgICAgICAgICAgICAgIHJldHVybiBwcmV2aW91c0Jv
eDsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCi0gICAgICAgIHN0YXJ0Qm94ID0gSW5saW5l
SXRlcmF0b3I6OmZpcnN0TGVhZk9uTGluZUluTG9naWNhbE9yZGVyKHByZXZpb3VzTGluZSwgb3Jk
ZXJDYWNoZSk7CisgICAgICAgIHN0YXJ0Qm94ID0gSW5saW5lSXRlcmF0b3I6OmZpcnN0TGVhZk9u
TGluZUluTG9naWNhbE9yZGVyKHByZXZpb3VzTGluZUJveCwgb3JkZXJDYWNoZSk7CiAgICAgfQog
ICAgIHJldHVybiB7IH07CiB9CkBAIC0yMDksOSArMjA5LDkgQEAgc3RhdGljIGNvbnN0IElubGlu
ZUl0ZXJhdG9yOjpMZWFmQm94SXRlcmF0b3IgbG9naWNhbGx5TmV4dEJveChjb25zdCBWaXNpYmxl
UG9zaXQKICAgICBpZiAoYXV0byBuZXh0Qm94ID0gbmV4dFRleHRPckxpbmVCcmVha0JveChzdGFy
dEJveCwgb3JkZXJDYWNoZSkpCiAgICAgICAgIHJldHVybiBuZXh0Qm94OwogCi0gICAgaWYgKGF1
dG8gbmV4dExpbmUgPSBzdGFydEJveC0+bGluZSgpLT5uZXh0KCkpIHsKKyAgICBpZiAoYXV0byBu
ZXh0TGluZUJveCA9IHN0YXJ0Qm94LT5saW5lQm94KCktPm5leHQoKSkgewogICAgICAgICAvLyBG
SVhNRTogV2h5IGlzbid0IHByZXZpb3VzQm94SW5EaWZmZXJlbnRMaW5lIHNldCBoZXJlPwotICAg
ICAgICBpZiAoYXV0byBuZXh0Qm94ID0gc3RhcnRUZXh0T3JMaW5lQnJlYWtCb3gobmV4dExpbmUs
IG9yZGVyQ2FjaGUpKQorICAgICAgICBpZiAoYXV0byBuZXh0Qm94ID0gc3RhcnRUZXh0T3JMaW5l
QnJlYWtCb3gobmV4dExpbmVCb3gsIG9yZGVyQ2FjaGUpKQogICAgICAgICAgICAgcmV0dXJuIG5l
eHRCb3g7CiAgICAgfQogCkBAIC0yMjUsMTggKzIyNSwxOCBAQCBzdGF0aWMgY29uc3QgSW5saW5l
SXRlcmF0b3I6OkxlYWZCb3hJdGVyYXRvciBsb2dpY2FsbHlOZXh0Qm94KGNvbnN0IFZpc2libGVQ
b3NpdAogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgUmVuZGVyZWRQb3NpdGlvbiByZW5k
ZXJlZFBvc2l0aW9uKHBvc2l0aW9uLCBBZmZpbml0eTo6RG93bnN0cmVhbSk7Ci0gICAgICAgIGF1
dG8gbmV4dExpbmUgPSByZW5kZXJlZFBvc2l0aW9uLmxpbmUoKTsKLSAgICAgICAgaWYgKCFuZXh0
TGluZSkKKyAgICAgICAgYXV0byBuZXh0TGluZUJveCA9IHJlbmRlcmVkUG9zaXRpb24ubGluZUJv
eCgpOworICAgICAgICBpZiAoIW5leHRMaW5lQm94KQogICAgICAgICAgICAgYnJlYWs7CiAKLSAg
ICAgICAgaWYgKG5leHRMaW5lICE9IHN0YXJ0Qm94LT5saW5lKCkpIHsKLSAgICAgICAgICAgIGlm
IChhdXRvIG5leHRCb3ggPSBzdGFydFRleHRPckxpbmVCcmVha0JveChuZXh0TGluZSwgb3JkZXJD
YWNoZSkpIHsKKyAgICAgICAgaWYgKG5leHRMaW5lQm94ICE9IHN0YXJ0Qm94LT5saW5lQm94KCkp
IHsKKyAgICAgICAgICAgIGlmIChhdXRvIG5leHRCb3ggPSBzdGFydFRleHRPckxpbmVCcmVha0Jv
eChuZXh0TGluZUJveCwgb3JkZXJDYWNoZSkpIHsKICAgICAgICAgICAgICAgICBuZXh0Qm94SW5E
aWZmZXJlbnRMaW5lID0gdHJ1ZTsKICAgICAgICAgICAgICAgICByZXR1cm4gbmV4dEJveDsKICAg
ICAgICAgICAgIH0KICAgICAgICAgfQogCi0gICAgICAgIHN0YXJ0Qm94ID0gSW5saW5lSXRlcmF0
b3I6Omxhc3RMZWFmT25MaW5lSW5Mb2dpY2FsT3JkZXJXaXRoTm9kZShuZXh0TGluZSwgb3JkZXJD
YWNoZSk7CisgICAgICAgIHN0YXJ0Qm94ID0gSW5saW5lSXRlcmF0b3I6Omxhc3RMZWFmT25MaW5l
SW5Mb2dpY2FsT3JkZXJXaXRoTm9kZShuZXh0TGluZUJveCwgb3JkZXJDYWNoZSk7CiAgICAgfQog
ICAgIHJldHVybiB7IH07CiB9CkBAIC03MzgsOCArNzM4LDggQEAgc3RhdGljIFZpc2libGVQb3Np
dGlvbiBzdGFydFBvc2l0aW9uRm9yTGluZShjb25zdCBWaXNpYmxlUG9zaXRpb24mIGMsIExpbmVF
bmRwb2kKICAgICBpZiAoYy5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlv
bigpOwogCi0gICAgYXV0byBsaW5lID0gUmVuZGVyZWRQb3NpdGlvbihjKS5saW5lKCk7Ci0gICAg
aWYgKCFsaW5lKSB7CisgICAgYXV0byBsaW5lQm94ID0gUmVuZGVyZWRQb3NpdGlvbihjKS5saW5l
Qm94KCk7CisgICAgaWYgKCFsaW5lQm94KSB7CiAgICAgICAgIC8vIFRoZXJlIGFyZSBWaXNpYmxl
UG9zaXRpb25zIGF0IG9mZnNldCAwIGluIGJsb2NrcyB3aXRob3V0CiAgICAgICAgIC8vIFJvb3RJ
bmxpbmVCb3hlcywgbGlrZSBlbXB0eSBlZGl0YWJsZSBibG9ja3MgYW5kIGJvcmRlcmVkIGJsb2Nr
cy4KICAgICAgICAgUG9zaXRpb24gcCA9IGMuZGVlcEVxdWl2YWxlbnQoKTsKQEAgLTc1Miw3ICs3
NTIsNyBAQCBzdGF0aWMgVmlzaWJsZVBvc2l0aW9uIHN0YXJ0UG9zaXRpb25Gb3JMaW5lKGNvbnN0
IFZpc2libGVQb3NpdGlvbiYgYywgTGluZUVuZHBvaQogICAgIElubGluZUl0ZXJhdG9yOjpMaW5l
TG9naWNhbE9yZGVyQ2FjaGUgb3JkZXJDYWNoZTsKIAogICAgIE5vZGUqIHN0YXJ0Tm9kZSA9IG51
bGxwdHI7Ci0gICAgYXV0byBzdGFydEJveCA9IG1vZGUgPT0gVXNlTG9naWNhbE9yZGVyaW5nID8g
SW5saW5lSXRlcmF0b3I6OmZpcnN0TGVhZk9uTGluZUluTG9naWNhbE9yZGVyV2l0aE5vZGUobGlu
ZSwgb3JkZXJDYWNoZSkgOiBsaW5lLT5maXJzdExlYWZCb3goKTsKKyAgICBhdXRvIHN0YXJ0Qm94
ID0gbW9kZSA9PSBVc2VMb2dpY2FsT3JkZXJpbmcgPyBJbmxpbmVJdGVyYXRvcjo6Zmlyc3RMZWFm
T25MaW5lSW5Mb2dpY2FsT3JkZXJXaXRoTm9kZShsaW5lQm94LCBvcmRlckNhY2hlKSA6IGxpbmVC
b3gtPmZpcnN0TGVhZkJveCgpOwogICAgIC8vIEdlbmVyYXRlZCBjb250ZW50IChlLmcuIGxpc3Qg
bWFya2VycyBhbmQgQ1NTIDpiZWZvcmUgYW5kIDphZnRlciBwc2V1ZG9lbGVtZW50cykgaGF2ZSBu
byBjb3JyZXNwb25kaW5nIERPTSBlbGVtZW50LAogICAgIC8vIGFuZCBzbyBjYW5ub3QgYmUgcmVw
cmVzZW50ZWQgYnkgYSBWaXNpYmxlUG9zaXRpb24uIFVzZSB3aGF0ZXZlciBmb2xsb3dzIGluc3Rl
YWQuCiAgICAgd2hpbGUgKHRydWUpIHsKQEAgLTgxMSw4ICs4MTEsOCBAQCBzdGF0aWMgVmlzaWJs
ZVBvc2l0aW9uIGVuZFBvc2l0aW9uRm9yTGluZShjb25zdCBWaXNpYmxlUG9zaXRpb24mIGMsIExp
bmVFbmRwb2ludAogICAgIGlmIChjLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gVmlzaWJsZVBv
c2l0aW9uKCk7CiAKLSAgICBhdXRvIGxpbmUgPSBSZW5kZXJlZFBvc2l0aW9uKGMpLmxpbmUoKTsK
LSAgICBpZiAoIWxpbmUpIHsKKyAgICBhdXRvIGxpbmVCb3ggPSBSZW5kZXJlZFBvc2l0aW9uKGMp
LmxpbmVCb3goKTsKKyAgICBpZiAoIWxpbmVCb3gpIHsKICAgICAgICAgLy8gVGhlcmUgYXJlIFZp
c2libGVQb3NpdGlvbnMgYXQgb2Zmc2V0IDAgaW4gYmxvY2tzIHdpdGhvdXQKICAgICAgICAgLy8g
Um9vdElubGluZUJveGVzLCBsaWtlIGVtcHR5IGVkaXRhYmxlIGJsb2NrcyBhbmQgYm9yZGVyZWQg
YmxvY2tzLgogICAgICAgICBQb3NpdGlvbiBwID0gYy5kZWVwRXF1aXZhbGVudCgpOwpAQCAtODI0
LDcgKzgyNCw3IEBAIHN0YXRpYyBWaXNpYmxlUG9zaXRpb24gZW5kUG9zaXRpb25Gb3JMaW5lKGNv
bnN0IFZpc2libGVQb3NpdGlvbiYgYywgTGluZUVuZHBvaW50CiAgICAgSW5saW5lSXRlcmF0b3I6
OkxpbmVMb2dpY2FsT3JkZXJDYWNoZSBvcmRlckNhY2hlOwogCiAgICAgTm9kZSogZW5kTm9kZSA9
IG51bGxwdHI7Ci0gICAgYXV0byBlbmRCb3ggPSBtb2RlID09IFVzZUxvZ2ljYWxPcmRlcmluZyA/
IElubGluZUl0ZXJhdG9yOjpsYXN0TGVhZk9uTGluZUluTG9naWNhbE9yZGVyKGxpbmUsIG9yZGVy
Q2FjaGUpIDogbGluZS0+bGFzdExlYWZCb3goKTsKKyAgICBhdXRvIGVuZEJveCA9IG1vZGUgPT0g
VXNlTG9naWNhbE9yZGVyaW5nID8gSW5saW5lSXRlcmF0b3I6Omxhc3RMZWFmT25MaW5lSW5Mb2dp
Y2FsT3JkZXIobGluZUJveCwgb3JkZXJDYWNoZSkgOiBsaW5lQm94LT5sYXN0TGVhZkJveCgpOwog
ICAgIC8vIEdlbmVyYXRlZCBjb250ZW50IChlLmcuIGxpc3QgbWFya2VycyBhbmQgQ1NTIDpiZWZv
cmUgYW5kIDphZnRlciBwc2V1ZG9lbGVtZW50cykgaGF2ZSBubyBjb3JyZXNwb25kaW5nIERPTSBl
bGVtZW50LAogICAgIC8vIGFuZCBzbyBjYW5ub3QgYmUgcmVwcmVzZW50ZWQgYnkgYSBWaXNpYmxl
UG9zaXRpb24uIFVzZSB3aGF0ZXZlciBwcmVjZWRlcyBpbnN0ZWFkLgogICAgIHdoaWxlICh0cnVl
KSB7CkBAIC05MzYsMTUgKzkzNiwxNSBAQCBib29sIGlzTG9naWNhbEVuZE9mTGluZShjb25zdCBW
aXNpYmxlUG9zaXRpb24mIHApCiAgICAgcmV0dXJuIHAuaXNOb3ROdWxsKCkgJiYgcCA9PSBsb2dp
Y2FsRW5kT2ZMaW5lKHApOwogfQogCi1zdGF0aWMgaW5saW5lIEludFBvaW50IGFic29sdXRlTGlu
ZURpcmVjdGlvblBvaW50VG9Mb2NhbFBvaW50SW5CbG9jayhJbmxpbmVJdGVyYXRvcjo6TGluZUl0
ZXJhdG9yJiBsaW5lLCBpbnQgbGluZURpcmVjdGlvblBvaW50KQorc3RhdGljIGlubGluZSBJbnRQ
b2ludCBhYnNvbHV0ZUxpbmVEaXJlY3Rpb25Qb2ludFRvTG9jYWxQb2ludEluQmxvY2soSW5saW5l
SXRlcmF0b3I6OkxpbmVCb3hJdGVyYXRvciYgbGluZUJveCwgaW50IGxpbmVEaXJlY3Rpb25Qb2lu
dCkKIHsKLSAgICBhdXRvJiBjb250YWluaW5nQmxvY2sgPSBsaW5lLT5jb250YWluaW5nQmxvY2so
KTsKKyAgICBhdXRvJiBjb250YWluaW5nQmxvY2sgPSBsaW5lQm94LT5jb250YWluaW5nQmxvY2so
KTsKICAgICBGbG9hdFBvaW50IGFic29sdXRlQmxvY2tQb2ludCA9IGNvbnRhaW5pbmdCbG9jay5s
b2NhbFRvQWJzb2x1dGUoRmxvYXRQb2ludCgpKSAtIHRvRmxvYXRTaXplKGNvbnRhaW5pbmdCbG9j
ay5zY3JvbGxQb3NpdGlvbigpKTsKIAogICAgIGlmIChjb250YWluaW5nQmxvY2suaXNIb3Jpem9u
dGFsV3JpdGluZ01vZGUoKSkKLSAgICAgICAgcmV0dXJuIEludFBvaW50KGxpbmVEaXJlY3Rpb25Q
b2ludCAtIGFic29sdXRlQmxvY2tQb2ludC54KCksIGNvbnRlbnRTdGFydEluQmxvY2tEaXJlY3Rp
b24oKmxpbmUpKTsKKyAgICAgICAgcmV0dXJuIEludFBvaW50KGxpbmVEaXJlY3Rpb25Qb2ludCAt
IGFic29sdXRlQmxvY2tQb2ludC54KCksIGNvbnRlbnRTdGFydEluQmxvY2tEaXJlY3Rpb24oKmxp
bmVCb3gpKTsKIAotICAgIHJldHVybiBJbnRQb2ludChjb250ZW50U3RhcnRJbkJsb2NrRGlyZWN0
aW9uKCpsaW5lKSwgbGluZURpcmVjdGlvblBvaW50IC0gYWJzb2x1dGVCbG9ja1BvaW50LnkoKSk7
CisgICAgcmV0dXJuIEludFBvaW50KGNvbnRlbnRTdGFydEluQmxvY2tEaXJlY3Rpb24oKmxpbmVC
b3gpLCBsaW5lRGlyZWN0aW9uUG9pbnQgLSBhYnNvbHV0ZUJsb2NrUG9pbnQueSgpKTsKIH0KIAog
c3RhdGljIEVsZW1lbnQqIHJvb3RFZGl0YWJsZU9yRG9jdW1lbnRFbGVtZW50KE5vZGUmIG5vZGUs
IEVkaXRhYmxlVHlwZSBlZGl0YWJsZVR5cGUpCkBAIC05NjgsMjkgKzk2OCwyOSBAQCBWaXNpYmxl
UG9zaXRpb24gcHJldmlvdXNMaW5lUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJiB2aXNp
YmxlUG9zaXRpb24sIGludAogICAgIGlmICghcmVuZGVyZXIpCiAgICAgICAgIHJldHVybiBWaXNp
YmxlUG9zaXRpb24oKTsKIAotICAgIElubGluZUl0ZXJhdG9yOjpMaW5lSXRlcmF0b3IgbGluZTsK
KyAgICBJbmxpbmVJdGVyYXRvcjo6TGluZUJveEl0ZXJhdG9yIGxpbmVCb3g7CiAgICAgaWYgKGF1
dG8gYm94ID0gdmlzaWJsZVBvc2l0aW9uLmlubGluZUJveEFuZE9mZnNldCgpLmJveCkgewotICAg
ICAgICBsaW5lID0gYm94LT5saW5lKCktPnByZXZpb3VzKCk7CisgICAgICAgIGxpbmVCb3ggPSBi
b3gtPmxpbmVCb3goKS0+cHJldmlvdXMoKTsKICAgICAgICAgLy8gV2Ugd2FudCB0byBza2lwIHpl
cm8gaGVpZ2h0IGJveGVzLgogICAgICAgICAvLyBUaGlzIGNvdWxkIGhhcHBlbiBpbiBjYXNlIGl0
IGlzIGEgTGVnYWN5Um9vdElubGluZUJveCB3aXRoIHRyYWlsaW5nIGZsb2F0cy4KLSAgICAgICAg
aWYgKCFsaW5lIHx8ICFsaW5lLT5saW5lQm94SGVpZ2h0KCkgfHwgIWxpbmUtPmZpcnN0TGVhZkJv
eCgpKQotICAgICAgICAgICAgbGluZSA9IHsgfTsKKyAgICAgICAgaWYgKCFsaW5lQm94IHx8ICFs
aW5lQm94LT5oZWlnaHQoKSB8fCAhbGluZUJveC0+Zmlyc3RMZWFmQm94KCkpCisgICAgICAgICAg
ICBsaW5lQm94ID0geyB9OwogICAgIH0KIAotICAgIGlmICghbGluZSkgeworICAgIGlmICghbGlu
ZUJveCkgewogICAgICAgICBQb3NpdGlvbiBwb3NpdGlvbiA9IHByZXZpb3VzTGluZUNhbmRpZGF0
ZVBvc2l0aW9uKG5vZGUsIHZpc2libGVQb3NpdGlvbiwgZWRpdGFibGVUeXBlKTsKICAgICAgICAg
aWYgKHBvc2l0aW9uLmlzTm90TnVsbCgpKSB7CiAgICAgICAgICAgICBSZW5kZXJlZFBvc2l0aW9u
IHJlbmRlcmVkUG9zaXRpb24ocG9zaXRpb24pOwotICAgICAgICAgICAgbGluZSA9IHJlbmRlcmVk
UG9zaXRpb24ubGluZSgpOwotICAgICAgICAgICAgaWYgKCFsaW5lKQorICAgICAgICAgICAgbGlu
ZUJveCA9IHJlbmRlcmVkUG9zaXRpb24ubGluZUJveCgpOworICAgICAgICAgICAgaWYgKCFsaW5l
Qm94KQogICAgICAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKICAgICAgICAgfQogICAgIH0K
ICAgICAKLSAgICBpZiAobGluZSkgeworICAgIGlmIChsaW5lQm94KSB7CiAgICAgICAgIC8vIEZJ
WE1FOiBDYW4gYmUgd3JvbmcgZm9yIG11bHRpLWNvbHVtbiBsYXlvdXQgYW5kIHdpdGggdHJhbnNm
b3Jtcy4KLSAgICAgICAgYXV0byBwb2ludEluTGluZSA9IGFic29sdXRlTGluZURpcmVjdGlvblBv
aW50VG9Mb2NhbFBvaW50SW5CbG9jayhsaW5lLCBsaW5lRGlyZWN0aW9uUG9pbnQpOwotICAgICAg
ICBhdXRvIGJveCA9IGNsb3Nlc3RCb3hGb3JIb3Jpem9udGFsUG9zaXRpb24oKmxpbmUsIGxpbmUt
PmlzSG9yaXpvbnRhbCgpID8gcG9pbnRJbkxpbmUueCgpIDogcG9pbnRJbkxpbmUueSgpLCBpc0Vk
aXRhYmxlUG9zaXRpb24ocCkpOworICAgICAgICBhdXRvIHBvaW50SW5MaW5lID0gYWJzb2x1dGVM
aW5lRGlyZWN0aW9uUG9pbnRUb0xvY2FsUG9pbnRJbkJsb2NrKGxpbmVCb3gsIGxpbmVEaXJlY3Rp
b25Qb2ludCk7CisgICAgICAgIGF1dG8gYm94ID0gY2xvc2VzdEJveEZvckhvcml6b250YWxQb3Np
dGlvbigqbGluZUJveCwgbGluZUJveC0+aXNIb3Jpem9udGFsKCkgPyBwb2ludEluTGluZS54KCkg
OiBwb2ludEluTGluZS55KCksIGlzRWRpdGFibGVQb3NpdGlvbihwKSk7CiAgICAgICAgIGlmICgh
Ym94KQogICAgICAgICAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbigpOwogICAgICAgICBhdXRv
JiByZW5kZXJlciA9IGJveC0+cmVuZGVyZXIoKTsKQEAgLTEwMjEsMzIgKzEwMjEsMzIgQEAgVmlz
aWJsZVBvc2l0aW9uIG5leHRMaW5lUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJiB2aXNp
YmxlUG9zaXRpb24sIGludCBsaW4KICAgICBpZiAoIW5vZGUtPnJlbmRlcmVyKCkpCiAgICAgICAg
IHJldHVybiBWaXNpYmxlUG9zaXRpb24oKTsKIAotICAgIElubGluZUl0ZXJhdG9yOjpMaW5lSXRl
cmF0b3IgbGluZTsKKyAgICBJbmxpbmVJdGVyYXRvcjo6TGluZUJveEl0ZXJhdG9yIGxpbmVCb3g7
CiAgICAgaWYgKGF1dG8gYm94ID0gdmlzaWJsZVBvc2l0aW9uLmlubGluZUJveEFuZE9mZnNldCgp
LmJveCkgewotICAgICAgICBsaW5lID0gYm94LT5saW5lKCktPm5leHQoKTsKKyAgICAgICAgbGlu
ZUJveCA9IGJveC0+bGluZUJveCgpLT5uZXh0KCk7CiAgICAgICAgIC8vIFdlIHdhbnQgdG8gc2tp
cCB6ZXJvIGhlaWdodCBib3hlcy4KICAgICAgICAgLy8gVGhpcyBjb3VsZCBoYXBwZW4gaW4gY2Fz
ZSBpdCBpcyBhIExlZ2FjeVJvb3RJbmxpbmVCb3ggd2l0aCB0cmFpbGluZyBmbG9hdHMuCi0gICAg
ICAgIGlmICghbGluZSB8fCAhbGluZS0+bGluZUJveEhlaWdodCgpIHx8ICFsaW5lLT5maXJzdExl
YWZCb3goKSkKLSAgICAgICAgICAgIGxpbmUgPSB7IH07CisgICAgICAgIGlmICghbGluZUJveCB8
fCAhbGluZUJveC0+aGVpZ2h0KCkgfHwgIWxpbmVCb3gtPmZpcnN0TGVhZkJveCgpKQorICAgICAg
ICAgICAgbGluZUJveCA9IHsgfTsKICAgICB9CiAKLSAgICBpZiAoIWxpbmUpIHsKKyAgICBpZiAo
IWxpbmVCb3gpIHsKICAgICAgICAgLy8gRklYTUU6IFdlIG5lZWQgZG8gdGhlIHNhbWUgaW4gcHJl
dmlvdXNMaW5lUG9zaXRpb24uCiAgICAgICAgIE5vZGUqIGNoaWxkID0gbm9kZS0+dHJhdmVyc2VU
b0NoaWxkQXQocC5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpKTsKICAgICAgICAgbm9kZSA9IGNo
aWxkID8gY2hpbGQgOiBub2RlLT5sYXN0RGVzY2VuZGFudCgpOwogICAgICAgICBQb3NpdGlvbiBw
b3NpdGlvbiA9IG5leHRMaW5lQ2FuZGlkYXRlUG9zaXRpb24obm9kZSwgdmlzaWJsZVBvc2l0aW9u
LCBlZGl0YWJsZVR5cGUpOwogICAgICAgICBpZiAocG9zaXRpb24uaXNOb3ROdWxsKCkpIHsKICAg
ICAgICAgICAgIFJlbmRlcmVkUG9zaXRpb24gcmVuZGVyZWRQb3NpdGlvbihwb3NpdGlvbik7Ci0g
ICAgICAgICAgICBsaW5lID0gcmVuZGVyZWRQb3NpdGlvbi5saW5lKCk7Ci0gICAgICAgICAgICBp
ZiAoIWxpbmUpCisgICAgICAgICAgICBsaW5lQm94ID0gcmVuZGVyZWRQb3NpdGlvbi5saW5lQm94
KCk7CisgICAgICAgICAgICBpZiAoIWxpbmVCb3gpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHBv
c2l0aW9uOwogICAgICAgICB9CiAgICAgfQogICAgIAotICAgIGlmIChsaW5lKSB7CisgICAgaWYg
KGxpbmVCb3gpIHsKICAgICAgICAgLy8gRklYTUU6IENhbiBiZSB3cm9uZyBmb3IgbXVsdGktY29s
dW1uIGxheW91dCBhbmQgd2l0aCB0cmFuc2Zvcm1zLgotICAgICAgICBhdXRvIHBvaW50SW5MaW5l
ID0gYWJzb2x1dGVMaW5lRGlyZWN0aW9uUG9pbnRUb0xvY2FsUG9pbnRJbkJsb2NrKGxpbmUsIGxp
bmVEaXJlY3Rpb25Qb2ludCk7Ci0gICAgICAgIGF1dG8gYm94ID0gY2xvc2VzdEJveEZvckhvcml6
b250YWxQb3NpdGlvbigqbGluZSwgbGluZS0+aXNIb3Jpem9udGFsKCkgPyBwb2ludEluTGluZS54
KCkgOiBwb2ludEluTGluZS55KCksIGlzRWRpdGFibGVQb3NpdGlvbihwKSk7CisgICAgICAgIGF1
dG8gcG9pbnRJbkxpbmUgPSBhYnNvbHV0ZUxpbmVEaXJlY3Rpb25Qb2ludFRvTG9jYWxQb2ludElu
QmxvY2sobGluZUJveCwgbGluZURpcmVjdGlvblBvaW50KTsKKyAgICAgICAgYXV0byBib3ggPSBj
bG9zZXN0Qm94Rm9ySG9yaXpvbnRhbFBvc2l0aW9uKCpsaW5lQm94LCBsaW5lQm94LT5pc0hvcml6
b250YWwoKSA/IHBvaW50SW5MaW5lLngoKSA6IHBvaW50SW5MaW5lLnkoKSwgaXNFZGl0YWJsZVBv
c2l0aW9uKHApKTsKICAgICAgICAgaWYgKCFib3gpCiAgICAgICAgICAgICByZXR1cm4gVmlzaWJs
ZVBvc2l0aW9uKCk7CiAgICAgICAgIGF1dG8mIHJlbmRlcmVyID0gYm94LT5yZW5kZXJlcigpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmNw
cAppbmRleCAxZmU1OWRlNDY0OTJkZjY1MDlmNDcwODI5NGY3NjMwN2FhY2ZmODFmLi5jMTNmNDVl
MzNjZWY0MzY3YzYzZGUxYzk5ZGI5MTgwZDNiOTRmNjc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmNwcApAQCAtNDIsNyArNDIsNyBA
QAogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkhUTUxQYXJzZXJJZGlvbXMuaCIK
ICNpbmNsdWRlICJJbmxpbmVJdGVyYXRvckJveC5oIgotI2luY2x1ZGUgIklubGluZUl0ZXJhdG9y
TGluZS5oIgorI2luY2x1ZGUgIklubGluZUl0ZXJhdG9yTGluZUJveC5oIgogI2luY2x1ZGUgIkxh
eW91dERpc2FsbG93ZWRTY29wZS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJO
b2RlVHJhdmVyc2FsLmgiCkBAIC03MjcsMjAgKzcyNywyMCBAQCBTdHJpbmcgSFRNTFRleHRGb3Jt
Q29udHJvbEVsZW1lbnQ6OnZhbHVlV2l0aEhhcmRMaW5lQnJlYWtzKCkgY29uc3QKIAogICAgIE5v
ZGUqIHNvZnRMaW5lQnJlYWtOb2RlID0gbnVsbHB0cjsKICAgICB1bnNpZ25lZCBzb2Z0TGluZUJy
ZWFrT2Zmc2V0ID0gMDsKLSAgICBhdXRvIGN1cnJlbnRMaW5lID0gSW5saW5lSXRlcmF0b3I6OmZp
cnN0TGluZUZvcigqcmVuZGVyZXIpOwotICAgIGlmICghY3VycmVudExpbmUpCisgICAgYXV0byBj
dXJyZW50TGluZUJveCA9IElubGluZUl0ZXJhdG9yOjpmaXJzdExpbmVCb3hGb3IoKnJlbmRlcmVy
KTsKKyAgICBpZiAoIWN1cnJlbnRMaW5lQm94KQogICAgICAgICByZXR1cm4gdmFsdWUoKTsKIAog
ICAgIGF1dG8gc2tpcFRvTmV4dFNvZnRMaW5lQnJlYWtQb3NpdGlvbiA9IFsmXSB7Ci0gICAgICAg
IGZvciAoOyBjdXJyZW50TGluZTsgY3VycmVudExpbmUudHJhdmVyc2VOZXh0KCkpIHsKLSAgICAg
ICAgICAgIGF1dG8gbGFzdFJ1biA9IGN1cnJlbnRMaW5lLT5sYXN0TGVhZkJveCgpOworICAgICAg
ICBmb3IgKDsgY3VycmVudExpbmVCb3g7IGN1cnJlbnRMaW5lQm94LnRyYXZlcnNlTmV4dCgpKSB7
CisgICAgICAgICAgICBhdXRvIGxhc3RSdW4gPSBjdXJyZW50TGluZUJveC0+bGFzdExlYWZCb3go
KTsKICAgICAgICAgICAgIEFTU0VSVChsYXN0UnVuKTsKICAgICAgICAgICAgIGF1dG8mIHJlbmRl
cmVyID0gbGFzdFJ1bi0+cmVuZGVyZXIoKTsKICAgICAgICAgICAgIGF1dG8gbGluZUVuZHNXaXRo
QlIgPSBpczxSZW5kZXJMaW5lQnJlYWs+KHJlbmRlcmVyKSAmJiAhZG93bmNhc3Q8UmVuZGVyTGlu
ZUJyZWFrPihyZW5kZXJlcikuaXNXQlIoKTsKICAgICAgICAgICAgIGlmICghbGluZUVuZHNXaXRo
QlIpIHsKICAgICAgICAgICAgICAgICBzb2Z0TGluZUJyZWFrTm9kZSA9IHJlbmRlcmVyLm5vZGUo
KTsKICAgICAgICAgICAgICAgICBzb2Z0TGluZUJyZWFrT2Zmc2V0ID0gbGFzdFJ1bi0+bWF4aW11
bUNhcmV0T2Zmc2V0KCk7Ci0gICAgICAgICAgICAgICAgY3VycmVudExpbmUudHJhdmVyc2VOZXh0
KCk7CisgICAgICAgICAgICAgICAgY3VycmVudExpbmVCb3gudHJhdmVyc2VOZXh0KCk7CiAgICAg
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogICAgICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JCb3guY3Bw
IGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yQm94LmNw
cAppbmRleCA3NWVhZTVlMGQ0MWU2YzYzYTc4NzQwZWZiMmY3MjEwNjZlN2VmNjlmLi45YzJhYjk4
N2JkYzQ2ZTc5MTZmOWY3MWFkZjcxZGQ5MzQ3ZTU4ZjdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JCb3guY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRvckJveC5jcHAKQEAgLTI2
LDcgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJJbmxpbmVJdGVyYXRv
ckJveC5oIgogCi0jaW5jbHVkZSAiSW5saW5lSXRlcmF0b3JMaW5lLmgiCisjaW5jbHVkZSAiSW5s
aW5lSXRlcmF0b3JMaW5lQm94LmgiCiAjaW5jbHVkZSAiSW5saW5lSXRlcmF0b3JUZXh0Qm94Lmgi
CiAjaW5jbHVkZSAiTGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0LmgiCiAjaW5jbHVkZSAiUmVu
ZGVyQmxvY2tGbG93LmgiCkBAIC04MSwxNCArODEsMTQgQEAgTGVhZkJveEl0ZXJhdG9yIEJveDo6
cHJldmlvdXNPbkxpbmVJZ25vcmluZ0xpbmVCcmVhaygpIGNvbnN0CiAgICAgcmV0dXJuIExlYWZC
b3hJdGVyYXRvcigqdGhpcykudHJhdmVyc2VQcmV2aW91c09uTGluZUlnbm9yaW5nTGluZUJyZWFr
KCk7CiB9CiAKLUxpbmVJdGVyYXRvciBCb3g6OmxpbmUoKSBjb25zdAorTGluZUJveEl0ZXJhdG9y
IEJveDo6bGluZUJveCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIFdURjo6c3dpdGNoT24obV9wYXRo
VmFyaWFudCwgW10oY29uc3QgQm94TGVnYWN5UGF0aCYgcGF0aCkgewotICAgICAgICByZXR1cm4g
TGluZUl0ZXJhdG9yKExpbmVJdGVyYXRvckxlZ2FjeVBhdGgoJnBhdGgucm9vdElubGluZUJveCgp
KSk7CisgICAgICAgIHJldHVybiBMaW5lQm94SXRlcmF0b3IoTGluZUJveEl0ZXJhdG9yTGVnYWN5
UGF0aCgmcGF0aC5yb290SW5saW5lQm94KCkpKTsKICAgICB9CiAjaWYgRU5BQkxFKExBWU9VVF9G
T1JNQVRUSU5HX0NPTlRFWFQpCiAgICAgLCBbXShjb25zdCBCb3hNb2Rlcm5QYXRoJiBwYXRoKSB7
Ci0gICAgICAgIHJldHVybiBMaW5lSXRlcmF0b3IoTGluZUl0ZXJhdG9yTW9kZXJuUGF0aChwYXRo
LmlubGluZUNvbnRlbnQoKSwgcGF0aC5ib3goKS5saW5lSW5kZXgoKSkpOworICAgICAgICByZXR1
cm4gTGluZUJveEl0ZXJhdG9yKExpbmVCb3hJdGVyYXRvck1vZGVyblBhdGgocGF0aC5pbmxpbmVD
b250ZW50KCksIHBhdGguYm94KCkubGluZUluZGV4KCkpKTsKICAgICB9CiAjZW5kaWYKICAgICAp
OwpAQCAtOTYsNyArOTYsNyBAQCBMaW5lSXRlcmF0b3IgQm94OjpsaW5lKCkgY29uc3QKIAogY29u
c3QgUmVuZGVyU3R5bGUmIEJveDo6c3R5bGUoKSBjb25zdAogewotICAgIHJldHVybiBsaW5lKCkt
PmlzRmlyc3QoKSA/IHJlbmRlcmVyKCkuZmlyc3RMaW5lU3R5bGUoKSA6IHJlbmRlcmVyKCkuc3R5
bGUoKTsKKyAgICByZXR1cm4gbGluZUJveCgpLT5pc0ZpcnN0KCkgPyByZW5kZXJlcigpLmZpcnN0
TGluZVN0eWxlKCkgOiByZW5kZXJlcigpLnN0eWxlKCk7CiB9CiAKIFJlbmRlck9iamVjdDo6SGln
aGxpZ2h0U3RhdGUgQm94OjpzZWxlY3Rpb25TdGF0ZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JCb3guaCBiL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRvckJveC5oCmluZGV4IDMy
NTgyYTcwYWM1NGZmYTE4NTBjOTZlNWJlMDI2NmU0ZDExOGMwOTEuLjE5NGQ1MTg5ZTRhZTE0Nzc5
ZDc0YTEyN2I1MTkxNzMwNDMyNjYzMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRvckJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRvckJveC5oCkBAIC0zOCw3ICszOCw3IEBAIGNs
YXNzIFJlbmRlclN0eWxlOwogCiBuYW1lc3BhY2UgSW5saW5lSXRlcmF0b3IgewogCi1jbGFzcyBM
aW5lSXRlcmF0b3I7CitjbGFzcyBMaW5lQm94SXRlcmF0b3I7CiBjbGFzcyBCb3hJdGVyYXRvcjsK
IGNsYXNzIExlYWZCb3hJdGVyYXRvcjsKIGNsYXNzIFRleHRCb3hJdGVyYXRvcjsKQEAgLTk4LDcg
Kzk4LDcgQEAgcHVibGljOgogICAgIExlYWZCb3hJdGVyYXRvciBuZXh0T25MaW5lSWdub3JpbmdM
aW5lQnJlYWsoKSBjb25zdDsKICAgICBMZWFmQm94SXRlcmF0b3IgcHJldmlvdXNPbkxpbmVJZ25v
cmluZ0xpbmVCcmVhaygpIGNvbnN0OwogCi0gICAgTGluZUl0ZXJhdG9yIGxpbmUoKSBjb25zdDsK
KyAgICBMaW5lQm94SXRlcmF0b3IgbGluZUJveCgpIGNvbnN0OwogCiBwcm90ZWN0ZWQ6CiAgICAg
ZnJpZW5kIGNsYXNzIEJveEl0ZXJhdG9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yTGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JMaW5lLmNwcAppbmRleCBkYWYyYWI4ZjU2
ZWIxZTlkYWFjZDZiZTVlNWI3MTc3YWU4ZjYxZDFhLi4wOTk1YzFhOTg4NWY1OWFjMjY5YTRhM2Rj
MWMxOTBiNWRmOTFkZjBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdy
YXRpb24vSW5saW5lSXRlcmF0b3JMaW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
aW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JMaW5lLmNwcApAQCAtMjQsNyArMjQsNyBAQAogICov
CiAKICNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJJbmxpbmVJdGVyYXRvckxpbmUuaCIK
KyNpbmNsdWRlICJJbmxpbmVJdGVyYXRvckxpbmVCb3guaCIKIAogI2luY2x1ZGUgIklubGluZUl0
ZXJhdG9yQm94LmgiCiAjaW5jbHVkZSAiTGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0LmgiCkBA
IC0zMyw5NiArMzMsOTYgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBJbmxpbmVJ
dGVyYXRvciB7CiAKLUxpbmVJdGVyYXRvcjo6TGluZUl0ZXJhdG9yKExpbmU6OlBhdGhWYXJpYW50
JiYgcGF0aFZhcmlhbnQpCi0gICAgOiBtX2xpbmUoV1RGTW92ZShwYXRoVmFyaWFudCkpCitMaW5l
Qm94SXRlcmF0b3I6OkxpbmVCb3hJdGVyYXRvcihMaW5lQm94OjpQYXRoVmFyaWFudCYmIHBhdGhW
YXJpYW50KQorICAgIDogbV9saW5lQm94KFdURk1vdmUocGF0aFZhcmlhbnQpKQogewogfQogCi1M
aW5lSXRlcmF0b3I6OkxpbmVJdGVyYXRvcihjb25zdCBMaW5lJiBsaW5lKQotICAgIDogbV9saW5l
KGxpbmUpCitMaW5lQm94SXRlcmF0b3I6OkxpbmVCb3hJdGVyYXRvcihjb25zdCBMaW5lQm94JiBs
aW5lQm94KQorICAgIDogbV9saW5lQm94KGxpbmVCb3gpCiB7CiB9CiAKLWJvb2wgTGluZUl0ZXJh
dG9yOjphdEVuZCgpIGNvbnN0Citib29sIExpbmVCb3hJdGVyYXRvcjo6YXRFbmQoKSBjb25zdAog
ewotICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKG1fbGluZS5tX3BhdGhWYXJpYW50LCBbXShhdXRv
JiBwYXRoKSB7CisgICAgcmV0dXJuIFdURjo6c3dpdGNoT24obV9saW5lQm94Lm1fcGF0aFZhcmlh
bnQsIFtdKGF1dG8mIHBhdGgpIHsKICAgICAgICAgcmV0dXJuIHBhdGguYXRFbmQoKTsKICAgICB9
KTsKIH0KIAotTGluZUl0ZXJhdG9yJiBMaW5lSXRlcmF0b3I6OnRyYXZlcnNlTmV4dCgpCitMaW5l
Qm94SXRlcmF0b3ImIExpbmVCb3hJdGVyYXRvcjo6dHJhdmVyc2VOZXh0KCkKIHsKLSAgICBXVEY6
OnN3aXRjaE9uKG1fbGluZS5tX3BhdGhWYXJpYW50LCBbXShhdXRvJiBwYXRoKSB7CisgICAgV1RG
Ojpzd2l0Y2hPbihtX2xpbmVCb3gubV9wYXRoVmFyaWFudCwgW10oYXV0byYgcGF0aCkgewogICAg
ICAgICByZXR1cm4gcGF0aC50cmF2ZXJzZU5leHQoKTsKICAgICB9KTsKICAgICByZXR1cm4gKnRo
aXM7CiB9CiAKLUxpbmVJdGVyYXRvciYgTGluZUl0ZXJhdG9yOjp0cmF2ZXJzZVByZXZpb3VzKCkK
K0xpbmVCb3hJdGVyYXRvciYgTGluZUJveEl0ZXJhdG9yOjp0cmF2ZXJzZVByZXZpb3VzKCkKIHsK
LSAgICBXVEY6OnN3aXRjaE9uKG1fbGluZS5tX3BhdGhWYXJpYW50LCBbXShhdXRvJiBwYXRoKSB7
CisgICAgV1RGOjpzd2l0Y2hPbihtX2xpbmVCb3gubV9wYXRoVmFyaWFudCwgW10oYXV0byYgcGF0
aCkgewogICAgICAgICByZXR1cm4gcGF0aC50cmF2ZXJzZVByZXZpb3VzKCk7CiAgICAgfSk7CiAg
ICAgcmV0dXJuICp0aGlzOwogfQogCi1ib29sIExpbmVJdGVyYXRvcjo6b3BlcmF0b3I9PShjb25z
dCBMaW5lSXRlcmF0b3ImIG90aGVyKSBjb25zdAorYm9vbCBMaW5lQm94SXRlcmF0b3I6Om9wZXJh
dG9yPT0oY29uc3QgTGluZUJveEl0ZXJhdG9yJiBvdGhlcikgY29uc3QKIHsKLSAgICByZXR1cm4g
bV9saW5lLm1fcGF0aFZhcmlhbnQgPT0gb3RoZXIubV9saW5lLm1fcGF0aFZhcmlhbnQ7CisgICAg
cmV0dXJuIG1fbGluZUJveC5tX3BhdGhWYXJpYW50ID09IG90aGVyLm1fbGluZUJveC5tX3BhdGhW
YXJpYW50OwogfQogCi1MaW5lSXRlcmF0b3IgZmlyc3RMaW5lRm9yKGNvbnN0IFJlbmRlckJsb2Nr
RmxvdyYgZmxvdykKK0xpbmVCb3hJdGVyYXRvciBmaXJzdExpbmVCb3hGb3IoY29uc3QgUmVuZGVy
QmxvY2tGbG93JiBmbG93KQogewogI2lmIEVOQUJMRShMQVlPVVRfRk9STUFUVElOR19DT05URVhU
KQogICAgIGlmIChhdXRvKiBsaW5lTGF5b3V0ID0gZmxvdy5tb2Rlcm5MaW5lTGF5b3V0KCkpCi0g
ICAgICAgIHJldHVybiBsaW5lTGF5b3V0LT5maXJzdExpbmUoKTsKKyAgICAgICAgcmV0dXJuIGxp
bmVMYXlvdXQtPmZpcnN0TGluZUJveCgpOwogI2VuZGlmCiAKLSAgICByZXR1cm4geyBMaW5lSXRl
cmF0b3JMZWdhY3lQYXRoIHsgZmxvdy5maXJzdFJvb3RCb3goKSB9IH07CisgICAgcmV0dXJuIHsg
TGluZUJveEl0ZXJhdG9yTGVnYWN5UGF0aCB7IGZsb3cuZmlyc3RSb290Qm94KCkgfSB9OwogfQog
Ci1MaW5lSXRlcmF0b3IgbGFzdExpbmVGb3IoY29uc3QgUmVuZGVyQmxvY2tGbG93JiBmbG93KQor
TGluZUJveEl0ZXJhdG9yIGxhc3RMaW5lQm94Rm9yKGNvbnN0IFJlbmRlckJsb2NrRmxvdyYgZmxv
dykKIHsKICNpZiBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCkKICAgICBpZiAoYXV0
byogbGluZUxheW91dCA9IGZsb3cubW9kZXJuTGluZUxheW91dCgpKQotICAgICAgICByZXR1cm4g
bGluZUxheW91dC0+bGFzdExpbmUoKTsKKyAgICAgICAgcmV0dXJuIGxpbmVMYXlvdXQtPmxhc3RM
aW5lQm94KCk7CiAjZW5kaWYKIAotICAgIHJldHVybiB7IExpbmVJdGVyYXRvckxlZ2FjeVBhdGgg
eyBmbG93Lmxhc3RSb290Qm94KCkgfSB9OworICAgIHJldHVybiB7IExpbmVCb3hJdGVyYXRvckxl
Z2FjeVBhdGggeyBmbG93Lmxhc3RSb290Qm94KCkgfSB9OwogfQogCi1MaW5lSXRlcmF0b3IgTGlu
ZTo6bmV4dCgpIGNvbnN0CitMaW5lQm94SXRlcmF0b3IgTGluZUJveDo6bmV4dCgpIGNvbnN0CiB7
Ci0gICAgcmV0dXJuIExpbmVJdGVyYXRvcigqdGhpcykudHJhdmVyc2VOZXh0KCk7CisgICAgcmV0
dXJuIExpbmVCb3hJdGVyYXRvcigqdGhpcykudHJhdmVyc2VOZXh0KCk7CiB9CiAKLUxpbmVJdGVy
YXRvciBMaW5lOjpwcmV2aW91cygpIGNvbnN0CitMaW5lQm94SXRlcmF0b3IgTGluZUJveDo6cHJl
dmlvdXMoKSBjb25zdAogewotICAgIHJldHVybiBMaW5lSXRlcmF0b3IoKnRoaXMpLnRyYXZlcnNl
UHJldmlvdXMoKTsKKyAgICByZXR1cm4gTGluZUJveEl0ZXJhdG9yKCp0aGlzKS50cmF2ZXJzZVBy
ZXZpb3VzKCk7CiB9CiAKLUxlYWZCb3hJdGVyYXRvciBMaW5lOjpmaXJzdExlYWZCb3goKSBjb25z
dAorTGVhZkJveEl0ZXJhdG9yIExpbmVCb3g6OmZpcnN0TGVhZkJveCgpIGNvbnN0CiB7CiAgICAg
cmV0dXJuIFdURjo6c3dpdGNoT24obV9wYXRoVmFyaWFudCwgW10oYXV0byYgcGF0aCkgLT4gTGVh
ZkJveEl0ZXJhdG9yIHsKICAgICAgICAgcmV0dXJuIHsgcGF0aC5maXJzdExlYWZCb3goKSB9Owog
ICAgIH0pOwogfQogCi1MZWFmQm94SXRlcmF0b3IgTGluZTo6bGFzdExlYWZCb3goKSBjb25zdAor
TGVhZkJveEl0ZXJhdG9yIExpbmVCb3g6Omxhc3RMZWFmQm94KCkgY29uc3QKIHsKICAgICByZXR1
cm4gV1RGOjpzd2l0Y2hPbihtX3BhdGhWYXJpYW50LCBbXShhdXRvJiBwYXRoKSAtPiBMZWFmQm94
SXRlcmF0b3IgewogICAgICAgICByZXR1cm4geyBwYXRoLmxhc3RMZWFmQm94KCkgfTsKICAgICB9
KTsKIH0KIAotTGVhZkJveEl0ZXJhdG9yIGNsb3Nlc3RCb3hGb3JIb3Jpem9udGFsUG9zaXRpb24o
Y29uc3QgTGluZSYgbGluZSwgZmxvYXQgaG9yaXpvbnRhbFBvc2l0aW9uLCBib29sIGVkaXRhYmxl
T25seSkKK0xlYWZCb3hJdGVyYXRvciBjbG9zZXN0Qm94Rm9ySG9yaXpvbnRhbFBvc2l0aW9uKGNv
bnN0IExpbmVCb3gmIGxpbmVCb3gsIGZsb2F0IGhvcml6b250YWxQb3NpdGlvbiwgYm9vbCBlZGl0
YWJsZU9ubHkpCiB7CiAgICAgYXV0byBpc0VkaXRhYmxlID0gWyZdKGF1dG8gYm94KSB7CiAgICAg
ICAgIHJldHVybiBib3ggJiYgYm94LT5yZW5kZXJlcigpLm5vZGUoKSAmJiBib3gtPnJlbmRlcmVy
KCkubm9kZSgpLT5oYXNFZGl0YWJsZVN0eWxlKCk7CiAgICAgfTsKIAotICAgIGF1dG8gZmlyc3RC
b3ggPSBsaW5lLmZpcnN0TGVhZkJveCgpOwotICAgIGF1dG8gbGFzdEJveCA9IGxpbmUubGFzdExl
YWZCb3goKTsKKyAgICBhdXRvIGZpcnN0Qm94ID0gbGluZUJveC5maXJzdExlYWZCb3goKTsKKyAg
ICBhdXRvIGxhc3RCb3ggPSBsaW5lQm94Lmxhc3RMZWFmQm94KCk7CiAKICAgICBpZiAoZmlyc3RC
b3ggIT0gbGFzdEJveCkgewogICAgICAgICBpZiAoZmlyc3RCb3gtPmlzTGluZUJyZWFrKCkpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0
b3JMaW5lLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0
b3JMaW5lLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVkODlmOTAzOGM5NmIyM2My
MDk1M2FlOTllZThkNjU3MGJlYjFmYTMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0
ZXJhdG9yTGluZS5oCisrKyAvZGV2L251bGwKQEAgLTEsMjQ0ICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgIkZvbnRCYXNlbGluZS5oIgotI2luY2x1ZGUgIklu
bGluZUl0ZXJhdG9yTGluZUxlZ2FjeVBhdGguaCIKLSNpbmNsdWRlICJJbmxpbmVJdGVyYXRvckxp
bmVNb2Rlcm5QYXRoLmgiCi0jaW5jbHVkZSAiUmVuZGVyQmxvY2tGbG93LmgiCi0jaW5jbHVkZSA8
dmFyaWFudD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBMaW5lU2VsZWN0aW9uOwot
Ci1uYW1lc3BhY2UgSW5saW5lSXRlcmF0b3IgewotCi1jbGFzcyBMaW5lSXRlcmF0b3I7Ci1jbGFz
cyBQYXRoSXRlcmF0b3I7Ci1jbGFzcyBMZWFmQm94SXRlcmF0b3I7Ci0KLXN0cnVjdCBFbmRMaW5l
SXRlcmF0b3IgeyB9OwotCi1jbGFzcyBMaW5lIHsKLXB1YmxpYzoKLSAgICB1c2luZyBQYXRoVmFy
aWFudCA9IHN0ZDo6dmFyaWFudDwKLSNpZiBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVY
VCkKLSAgICAgICAgTGluZUl0ZXJhdG9yTW9kZXJuUGF0aCwKLSNlbmRpZgotICAgICAgICBMaW5l
SXRlcmF0b3JMZWdhY3lQYXRoCi0gICAgPjsKLQotICAgIExpbmUoUGF0aFZhcmlhbnQmJik7Ci0K
LSAgICBmbG9hdCBsaW5lQm94VG9wKCkgY29uc3Q7Ci0gICAgZmxvYXQgbGluZUJveEJvdHRvbSgp
IGNvbnN0OwotICAgIGZsb2F0IGxpbmVCb3hIZWlnaHQoKSBjb25zdCB7IHJldHVybiBsaW5lQm94
Qm90dG9tKCkgLSBsaW5lQm94VG9wKCk7IH0KLQotICAgIGZsb2F0IGNvbnRlbnRMb2dpY2FsVG9w
KCkgY29uc3Q7Ci0gICAgZmxvYXQgY29udGVudExvZ2ljYWxCb3R0b20oKSBjb25zdDsKLSAgICBm
bG9hdCBjb250ZW50TG9naWNhbExlZnQoKSBjb25zdDsKLSAgICBmbG9hdCBjb250ZW50TG9naWNh
bFJpZ2h0KCkgY29uc3Q7Ci0gICAgZmxvYXQgY29udGVudExvZ2ljYWxXaWR0aCgpIGNvbnN0Owot
Ci0gICAgZmxvYXQgY29udGVudExvZ2ljYWxUb3BBZGp1c3RlZEZvclByZWNlZGluZ0xpbmUoKSBj
b25zdDsKLSAgICBmbG9hdCBjb250ZW50TG9naWNhbEJvdHRvbUFkanVzdGVkRm9yRm9sbG93aW5n
TGluZSgpIGNvbnN0OwotCi0gICAgY29uc3QgUmVuZGVyQmxvY2tGbG93JiBjb250YWluaW5nQmxv
Y2soKSBjb25zdDsKLSAgICBSZW5kZXJGcmFnbWVudENvbnRhaW5lciogY29udGFpbmluZ0ZyYWdt
ZW50KCkgY29uc3Q7Ci0KLSAgICBib29sIGlzSG9yaXpvbnRhbCgpIGNvbnN0OwotICAgIEZvbnRC
YXNlbGluZSBiYXNlbGluZVR5cGUoKSBjb25zdDsKLQotICAgIGJvb2wgaXNGaXJzdCgpIGNvbnN0
OwotICAgIGJvb2wgaXNGaXJzdEFmdGVyUGFnZUJyZWFrKCkgY29uc3Q7Ci0KLSAgICBMZWFmQm94
SXRlcmF0b3IgZmlyc3RMZWFmQm94KCkgY29uc3Q7Ci0gICAgTGVhZkJveEl0ZXJhdG9yIGxhc3RM
ZWFmQm94KCkgY29uc3Q7Ci0KLSAgICBMaW5lSXRlcmF0b3IgbmV4dCgpIGNvbnN0OwotICAgIExp
bmVJdGVyYXRvciBwcmV2aW91cygpIGNvbnN0OwotCi1wcml2YXRlOgotICAgIGZyaWVuZCBjbGFz
cyBMaW5lSXRlcmF0b3I7Ci0KLSAgICBQYXRoVmFyaWFudCBtX3BhdGhWYXJpYW50OwotfTsKLQot
Y2xhc3MgTGluZUl0ZXJhdG9yIHsKLXB1YmxpYzoKLSAgICBMaW5lSXRlcmF0b3IoKSA6IG1fbGlu
ZShMaW5lSXRlcmF0b3JMZWdhY3lQYXRoIHsgbnVsbHB0ciB9KSB7IH07Ci0gICAgTGluZUl0ZXJh
dG9yKGNvbnN0IExlZ2FjeVJvb3RJbmxpbmVCb3gqIHJvb3RJbmxpbmVCb3gpIDogbV9saW5lKExp
bmVJdGVyYXRvckxlZ2FjeVBhdGggeyByb290SW5saW5lQm94IH0pIHsgfTsKLSAgICBMaW5lSXRl
cmF0b3IoTGluZTo6UGF0aFZhcmlhbnQmJik7Ci0gICAgTGluZUl0ZXJhdG9yKGNvbnN0IExpbmUm
KTsKLQotICAgIExpbmVJdGVyYXRvciYgb3BlcmF0b3IrKygpIHsgcmV0dXJuIHRyYXZlcnNlTmV4
dCgpOyB9Ci0gICAgTGluZUl0ZXJhdG9yJiB0cmF2ZXJzZU5leHQoKTsKLSAgICBMaW5lSXRlcmF0
b3ImIHRyYXZlcnNlUHJldmlvdXMoKTsKLQotICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBj
b25zdCB7IHJldHVybiAhYXRFbmQoKTsgfQotCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IExp
bmVJdGVyYXRvciYpIGNvbnN0OwotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBMaW5lSXRlcmF0
b3ImIG90aGVyKSBjb25zdCB7IHJldHVybiAhKCp0aGlzID09IG90aGVyKTsgfQotCi0gICAgYm9v
bCBvcGVyYXRvcj09KEVuZExpbmVJdGVyYXRvcikgY29uc3QgeyByZXR1cm4gYXRFbmQoKTsgfQot
ICAgIGJvb2wgb3BlcmF0b3IhPShFbmRMaW5lSXRlcmF0b3IpIGNvbnN0IHsgcmV0dXJuICFhdEVu
ZCgpOyB9Ci0KLSAgICBjb25zdCBMaW5lJiBvcGVyYXRvciooKSBjb25zdCB7IHJldHVybiBtX2xp
bmU7IH0KLSAgICBjb25zdCBMaW5lKiBvcGVyYXRvci0+KCkgY29uc3QgeyByZXR1cm4gJm1fbGlu
ZTsgfQotCi0gICAgYm9vbCBhdEVuZCgpIGNvbnN0OwotCi1wcml2YXRlOgotICAgIExpbmUgbV9s
aW5lOwotfTsKLQotTGluZUl0ZXJhdG9yIGZpcnN0TGluZUZvcihjb25zdCBSZW5kZXJCbG9ja0Zs
b3cmKTsKLUxpbmVJdGVyYXRvciBsYXN0TGluZUZvcihjb25zdCBSZW5kZXJCbG9ja0Zsb3cmKTsK
LUxlYWZCb3hJdGVyYXRvciBjbG9zZXN0Qm94Rm9ySG9yaXpvbnRhbFBvc2l0aW9uKGNvbnN0IExp
bmUmLCBmbG9hdCBob3Jpem9udGFsUG9zaXRpb24sIGJvb2wgZWRpdGFibGVPbmx5ID0gZmFsc2Up
OwotCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQot
aW5saW5lIGZsb2F0IHByZXZpb3VzTGluZUNvbnRlbnRCb3R0b21PckJvcmRlckFuZFBhZGRpbmco
Y29uc3QgTGluZSYgbGluZSkKLXsKLSAgICByZXR1cm4gbGluZS5pc0ZpcnN0KCkgPyBsaW5lLmNv
bnRhaW5pbmdCbG9jaygpLmJvcmRlckFuZFBhZGRpbmdCZWZvcmUoKS50b0Zsb2F0KCkgOiBsaW5l
LmNvbnRlbnRMb2dpY2FsVG9wQWRqdXN0ZWRGb3JQcmVjZWRpbmdMaW5lKCk7IAotfQotCi1pbmxp
bmUgZmxvYXQgY29udGVudFN0YXJ0SW5CbG9ja0RpcmVjdGlvbihjb25zdCBMaW5lJiBsaW5lKQot
ewotICAgIGlmICghbGluZS5jb250YWluaW5nQmxvY2soKS5zdHlsZSgpLmlzRmxpcHBlZEJsb2Nr
c1dyaXRpbmdNb2RlKCkpCi0gICAgICAgIHJldHVybiBzdGQ6Om1heChsaW5lLmNvbnRlbnRMb2dp
Y2FsVG9wKCksIHByZXZpb3VzTGluZUNvbnRlbnRCb3R0b21PckJvcmRlckFuZFBhZGRpbmcobGlu
ZSkpOwotICAgIHJldHVybiBzdGQ6Om1pbihsaW5lLmNvbnRlbnRMb2dpY2FsQm90dG9tKCksIGxp
bmUuY29udGVudExvZ2ljYWxCb3R0b21BZGp1c3RlZEZvckZvbGxvd2luZ0xpbmUoKSk7Ci19Ci0K
LWlubGluZSBMaW5lOjpMaW5lKFBhdGhWYXJpYW50JiYgcGF0aCkKLSAgICA6IG1fcGF0aFZhcmlh
bnQoV1RGTW92ZShwYXRoKSkKLXsKLX0KLQotaW5saW5lIGZsb2F0IExpbmU6OmNvbnRlbnRMb2dp
Y2FsVG9wKCkgY29uc3QKLXsKLSAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihtX3BhdGhWYXJpYW50
LCBbXShjb25zdCBhdXRvJiBwYXRoKSB7Ci0gICAgICAgIHJldHVybiBwYXRoLmNvbnRlbnRMb2dp
Y2FsVG9wKCk7Ci0gICAgfSk7Ci19Ci0KLWlubGluZSBmbG9hdCBMaW5lOjpjb250ZW50TG9naWNh
bEJvdHRvbSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIFdURjo6c3dpdGNoT24obV9wYXRoVmFyaWFu
dCwgW10oY29uc3QgYXV0byYgcGF0aCkgewotICAgICAgICByZXR1cm4gcGF0aC5jb250ZW50TG9n
aWNhbEJvdHRvbSgpOwotICAgIH0pOwotfQotCi1pbmxpbmUgZmxvYXQgTGluZTo6Y29udGVudExv
Z2ljYWxUb3BBZGp1c3RlZEZvclByZWNlZGluZ0xpbmUoKSBjb25zdAotewotICAgIHJldHVybiBX
VEY6OnN3aXRjaE9uKG1fcGF0aFZhcmlhbnQsIFtdKGNvbnN0IGF1dG8mIHBhdGgpIHsKLSAgICAg
ICAgcmV0dXJuIHBhdGguY29udGVudExvZ2ljYWxUb3BBZGp1c3RlZEZvclByZWNlZGluZ0xpbmUo
KTsKLSAgICB9KTsKLX0KLQotaW5saW5lIGZsb2F0IExpbmU6OmNvbnRlbnRMb2dpY2FsQm90dG9t
QWRqdXN0ZWRGb3JGb2xsb3dpbmdMaW5lKCkgY29uc3QKLXsKLSAgICByZXR1cm4gV1RGOjpzd2l0
Y2hPbihtX3BhdGhWYXJpYW50LCBbXShjb25zdCBhdXRvJiBwYXRoKSB7Ci0gICAgICAgIHJldHVy
biBwYXRoLmNvbnRlbnRMb2dpY2FsQm90dG9tQWRqdXN0ZWRGb3JGb2xsb3dpbmdMaW5lKCk7Ci0g
ICAgfSk7Ci19Ci0KLWlubGluZSBmbG9hdCBMaW5lOjpsaW5lQm94VG9wKCkgY29uc3QKLXsKLSAg
ICByZXR1cm4gV1RGOjpzd2l0Y2hPbihtX3BhdGhWYXJpYW50LCBbXShjb25zdCBhdXRvJiBwYXRo
KSB7Ci0gICAgICAgIHJldHVybiBwYXRoLmxpbmVCb3hUb3AoKTsKLSAgICB9KTsKLX0KLQotaW5s
aW5lIGZsb2F0IExpbmU6OmxpbmVCb3hCb3R0b20oKSBjb25zdAotewotICAgIHJldHVybiBXVEY6
OnN3aXRjaE9uKG1fcGF0aFZhcmlhbnQsIFtdKGNvbnN0IGF1dG8mIHBhdGgpIHsKLSAgICAgICAg
cmV0dXJuIHBhdGgubGluZUJveEJvdHRvbSgpOwotICAgIH0pOwotfQotCi1pbmxpbmUgZmxvYXQg
TGluZTo6Y29udGVudExvZ2ljYWxMZWZ0KCkgY29uc3QKLXsKLSAgICByZXR1cm4gV1RGOjpzd2l0
Y2hPbihtX3BhdGhWYXJpYW50LCBbXShjb25zdCBhdXRvJiBwYXRoKSB7Ci0gICAgICAgIHJldHVy
biBwYXRoLmNvbnRlbnRMb2dpY2FsTGVmdCgpOwotICAgIH0pOwotfQotCi1pbmxpbmUgZmxvYXQg
TGluZTo6Y29udGVudExvZ2ljYWxSaWdodCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIFdURjo6c3dp
dGNoT24obV9wYXRoVmFyaWFudCwgW10oY29uc3QgYXV0byYgcGF0aCkgewotICAgICAgICByZXR1
cm4gcGF0aC5jb250ZW50TG9naWNhbFJpZ2h0KCk7Ci0gICAgfSk7Ci19Ci0KLWlubGluZSBmbG9h
dCBMaW5lOjpjb250ZW50TG9naWNhbFdpZHRoKCkgY29uc3QKLXsKLSAgICByZXR1cm4gY29udGVu
dExvZ2ljYWxSaWdodCgpIC0gY29udGVudExvZ2ljYWxMZWZ0KCk7Ci19Ci0KLWlubGluZSBib29s
IExpbmU6OmlzSG9yaXpvbnRhbCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIFdURjo6c3dpdGNoT24o
bV9wYXRoVmFyaWFudCwgW10oY29uc3QgYXV0byYgcGF0aCkgewotICAgICAgICByZXR1cm4gcGF0
aC5pc0hvcml6b250YWwoKTsKLSAgICB9KTsKLX0KLQotaW5saW5lIEZvbnRCYXNlbGluZSBMaW5l
OjpiYXNlbGluZVR5cGUoKSBjb25zdAotewotICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKG1fcGF0
aFZhcmlhbnQsIFtdKGNvbnN0IGF1dG8mIHBhdGgpIHsKLSAgICAgICAgcmV0dXJuIHBhdGguYmFz
ZWxpbmVUeXBlKCk7Ci0gICAgfSk7Ci19Ci0KLWlubGluZSBjb25zdCBSZW5kZXJCbG9ja0Zsb3cm
IExpbmU6OmNvbnRhaW5pbmdCbG9jaygpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIFdURjo6c3dpdGNo
T24obV9wYXRoVmFyaWFudCwgW10oY29uc3QgYXV0byYgcGF0aCkgLT4gY29uc3QgUmVuZGVyQmxv
Y2tGbG93JiB7Ci0gICAgICAgIHJldHVybiBwYXRoLmNvbnRhaW5pbmdCbG9jaygpOwotICAgIH0p
OwotfQotCi1pbmxpbmUgUmVuZGVyRnJhZ21lbnRDb250YWluZXIqIExpbmU6OmNvbnRhaW5pbmdG
cmFnbWVudCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIFdURjo6c3dpdGNoT24obV9wYXRoVmFyaWFu
dCwgW10oY29uc3QgYXV0byYgcGF0aCkgewotICAgICAgICByZXR1cm4gcGF0aC5jb250YWluaW5n
RnJhZ21lbnQoKTsKLSAgICB9KTsKLX0KLQotaW5saW5lIGJvb2wgTGluZTo6aXNGaXJzdEFmdGVy
UGFnZUJyZWFrKCkgY29uc3QKLXsKLSAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihtX3BhdGhWYXJp
YW50LCBbXShjb25zdCBhdXRvJiBwYXRoKSB7Ci0gICAgICAgIHJldHVybiBwYXRoLmlzRmlyc3RB
ZnRlclBhZ2VCcmVhaygpOwotICAgIH0pOwotfQotCi1pbmxpbmUgYm9vbCBMaW5lOjppc0ZpcnN0
KCkgY29uc3QKLXsKLSAgICByZXR1cm4gIXByZXZpb3VzKCk7Ci19Ci0KLX0KLX0KLQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yTGlu
ZUJveC5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9y
TGluZUJveC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjczZDhjOTdkMWIzNDcxMWY4MjhiYmNhNGNhNTI2MGQxOTE2
NjdjMmYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRp
b24vSW5saW5lSXRlcmF0b3JMaW5lQm94LmgKQEAgLTAsMCArMSwyNDQgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkZvbnRCYXNlbGluZS5oIgorI2luY2x1ZGUgIklu
bGluZUl0ZXJhdG9yTGluZUJveExlZ2FjeVBhdGguaCIKKyNpbmNsdWRlICJJbmxpbmVJdGVyYXRv
ckxpbmVCb3hNb2Rlcm5QYXRoLmgiCisjaW5jbHVkZSAiUmVuZGVyQmxvY2tGbG93LmgiCisjaW5j
bHVkZSA8dmFyaWFudD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBMaW5lU2VsZWN0
aW9uOworCituYW1lc3BhY2UgSW5saW5lSXRlcmF0b3IgeworCitjbGFzcyBMaW5lQm94SXRlcmF0
b3I7CitjbGFzcyBQYXRoSXRlcmF0b3I7CitjbGFzcyBMZWFmQm94SXRlcmF0b3I7CisKK3N0cnVj
dCBFbmRMaW5lQm94SXRlcmF0b3IgeyB9OworCitjbGFzcyBMaW5lQm94IHsKK3B1YmxpYzoKKyAg
ICB1c2luZyBQYXRoVmFyaWFudCA9IHN0ZDo6dmFyaWFudDwKKyNpZiBFTkFCTEUoTEFZT1VUX0ZP
Uk1BVFRJTkdfQ09OVEVYVCkKKyAgICAgICAgTGluZUJveEl0ZXJhdG9yTW9kZXJuUGF0aCwKKyNl
bmRpZgorICAgICAgICBMaW5lQm94SXRlcmF0b3JMZWdhY3lQYXRoCisgICAgPjsKKworICAgIExp
bmVCb3goUGF0aFZhcmlhbnQmJik7CisKKyAgICBmbG9hdCB0b3AoKSBjb25zdDsKKyAgICBmbG9h
dCBib3R0b20oKSBjb25zdDsKKyAgICBmbG9hdCBoZWlnaHQoKSBjb25zdCB7IHJldHVybiBib3R0
b20oKSAtIHRvcCgpOyB9CisKKyAgICBmbG9hdCBjb250ZW50TG9naWNhbFRvcCgpIGNvbnN0Owor
ICAgIGZsb2F0IGNvbnRlbnRMb2dpY2FsQm90dG9tKCkgY29uc3Q7CisgICAgZmxvYXQgY29udGVu
dExvZ2ljYWxMZWZ0KCkgY29uc3Q7CisgICAgZmxvYXQgY29udGVudExvZ2ljYWxSaWdodCgpIGNv
bnN0OworICAgIGZsb2F0IGNvbnRlbnRMb2dpY2FsV2lkdGgoKSBjb25zdDsKKworICAgIGZsb2F0
IGNvbnRlbnRMb2dpY2FsVG9wQWRqdXN0ZWRGb3JQcmVjZWRpbmdMaW5lQm94KCkgY29uc3Q7Cisg
ICAgZmxvYXQgY29udGVudExvZ2ljYWxCb3R0b21BZGp1c3RlZEZvckZvbGxvd2luZ0xpbmVCb3go
KSBjb25zdDsKKworICAgIGNvbnN0IFJlbmRlckJsb2NrRmxvdyYgY29udGFpbmluZ0Jsb2NrKCkg
Y29uc3Q7CisgICAgUmVuZGVyRnJhZ21lbnRDb250YWluZXIqIGNvbnRhaW5pbmdGcmFnbWVudCgp
IGNvbnN0OworCisgICAgYm9vbCBpc0hvcml6b250YWwoKSBjb25zdDsKKyAgICBGb250QmFzZWxp
bmUgYmFzZWxpbmVUeXBlKCkgY29uc3Q7CisKKyAgICBib29sIGlzRmlyc3QoKSBjb25zdDsKKyAg
ICBib29sIGlzRmlyc3RBZnRlclBhZ2VCcmVhaygpIGNvbnN0OworCisgICAgTGVhZkJveEl0ZXJh
dG9yIGZpcnN0TGVhZkJveCgpIGNvbnN0OworICAgIExlYWZCb3hJdGVyYXRvciBsYXN0TGVhZkJv
eCgpIGNvbnN0OworCisgICAgTGluZUJveEl0ZXJhdG9yIG5leHQoKSBjb25zdDsKKyAgICBMaW5l
Qm94SXRlcmF0b3IgcHJldmlvdXMoKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBmcmllbmQgY2xh
c3MgTGluZUJveEl0ZXJhdG9yOworCisgICAgUGF0aFZhcmlhbnQgbV9wYXRoVmFyaWFudDsKK307
CisKK2NsYXNzIExpbmVCb3hJdGVyYXRvciB7CitwdWJsaWM6CisgICAgTGluZUJveEl0ZXJhdG9y
KCkgOiBtX2xpbmVCb3goTGluZUJveEl0ZXJhdG9yTGVnYWN5UGF0aCB7IG51bGxwdHIgfSkgeyB9
OworICAgIExpbmVCb3hJdGVyYXRvcihjb25zdCBMZWdhY3lSb290SW5saW5lQm94KiByb290SW5s
aW5lQm94KSA6IG1fbGluZUJveChMaW5lQm94SXRlcmF0b3JMZWdhY3lQYXRoIHsgcm9vdElubGlu
ZUJveCB9KSB7IH07CisgICAgTGluZUJveEl0ZXJhdG9yKExpbmVCb3g6OlBhdGhWYXJpYW50JiYp
OworICAgIExpbmVCb3hJdGVyYXRvcihjb25zdCBMaW5lQm94Jik7CisKKyAgICBMaW5lQm94SXRl
cmF0b3ImIG9wZXJhdG9yKysoKSB7IHJldHVybiB0cmF2ZXJzZU5leHQoKTsgfQorICAgIExpbmVC
b3hJdGVyYXRvciYgdHJhdmVyc2VOZXh0KCk7CisgICAgTGluZUJveEl0ZXJhdG9yJiB0cmF2ZXJz
ZVByZXZpb3VzKCk7CisKKyAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1
cm4gIWF0RW5kKCk7IH0KKworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBMaW5lQm94SXRlcmF0
b3ImKSBjb25zdDsKKyAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgTGluZUJveEl0ZXJhdG9yJiBv
dGhlcikgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7IH0KKworICAgIGJvb2wgb3Bl
cmF0b3I9PShFbmRMaW5lQm94SXRlcmF0b3IpIGNvbnN0IHsgcmV0dXJuIGF0RW5kKCk7IH0KKyAg
ICBib29sIG9wZXJhdG9yIT0oRW5kTGluZUJveEl0ZXJhdG9yKSBjb25zdCB7IHJldHVybiAhYXRF
bmQoKTsgfQorCisgICAgY29uc3QgTGluZUJveCYgb3BlcmF0b3IqKCkgY29uc3QgeyByZXR1cm4g
bV9saW5lQm94OyB9CisgICAgY29uc3QgTGluZUJveCogb3BlcmF0b3ItPigpIGNvbnN0IHsgcmV0
dXJuICZtX2xpbmVCb3g7IH0KKworICAgIGJvb2wgYXRFbmQoKSBjb25zdDsKKworcHJpdmF0ZToK
KyAgICBMaW5lQm94IG1fbGluZUJveDsKK307CisKK0xpbmVCb3hJdGVyYXRvciBmaXJzdExpbmVC
b3hGb3IoY29uc3QgUmVuZGVyQmxvY2tGbG93Jik7CitMaW5lQm94SXRlcmF0b3IgbGFzdExpbmVC
b3hGb3IoY29uc3QgUmVuZGVyQmxvY2tGbG93Jik7CitMZWFmQm94SXRlcmF0b3IgY2xvc2VzdEJv
eEZvckhvcml6b250YWxQb3NpdGlvbihjb25zdCBMaW5lQm94JiwgZmxvYXQgaG9yaXpvbnRhbFBv
c2l0aW9uLCBib29sIGVkaXRhYmxlT25seSA9IGZhbHNlKTsKKworLy8gLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2lubGluZSBmbG9hdCBwcmV2aW91c0xp
bmVCb3hDb250ZW50Qm90dG9tT3JCb3JkZXJBbmRQYWRkaW5nKGNvbnN0IExpbmVCb3gmIGxpbmVC
b3gpCit7CisgICAgcmV0dXJuIGxpbmVCb3guaXNGaXJzdCgpID8gbGluZUJveC5jb250YWluaW5n
QmxvY2soKS5ib3JkZXJBbmRQYWRkaW5nQmVmb3JlKCkudG9GbG9hdCgpIDogbGluZUJveC5jb250
ZW50TG9naWNhbFRvcEFkanVzdGVkRm9yUHJlY2VkaW5nTGluZUJveCgpOyAKK30KKworaW5saW5l
IGZsb2F0IGNvbnRlbnRTdGFydEluQmxvY2tEaXJlY3Rpb24oY29uc3QgTGluZUJveCYgbGluZUJv
eCkKK3sKKyAgICBpZiAoIWxpbmVCb3guY29udGFpbmluZ0Jsb2NrKCkuc3R5bGUoKS5pc0ZsaXBw
ZWRCbG9ja3NXcml0aW5nTW9kZSgpKQorICAgICAgICByZXR1cm4gc3RkOjptYXgobGluZUJveC5j
b250ZW50TG9naWNhbFRvcCgpLCBwcmV2aW91c0xpbmVCb3hDb250ZW50Qm90dG9tT3JCb3JkZXJB
bmRQYWRkaW5nKGxpbmVCb3gpKTsKKyAgICByZXR1cm4gc3RkOjptaW4obGluZUJveC5jb250ZW50
TG9naWNhbEJvdHRvbSgpLCBsaW5lQm94LmNvbnRlbnRMb2dpY2FsQm90dG9tQWRqdXN0ZWRGb3JG
b2xsb3dpbmdMaW5lQm94KCkpOworfQorCitpbmxpbmUgTGluZUJveDo6TGluZUJveChQYXRoVmFy
aWFudCYmIHBhdGgpCisgICAgOiBtX3BhdGhWYXJpYW50KFdURk1vdmUocGF0aCkpCit7Cit9CisK
K2lubGluZSBmbG9hdCBMaW5lQm94Ojpjb250ZW50TG9naWNhbFRvcCgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIFdURjo6c3dpdGNoT24obV9wYXRoVmFyaWFudCwgW10oY29uc3QgYXV0byYgcGF0aCkg
eworICAgICAgICByZXR1cm4gcGF0aC5jb250ZW50TG9naWNhbFRvcCgpOworICAgIH0pOworfQor
CitpbmxpbmUgZmxvYXQgTGluZUJveDo6Y29udGVudExvZ2ljYWxCb3R0b20oKSBjb25zdAorewor
ICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKG1fcGF0aFZhcmlhbnQsIFtdKGNvbnN0IGF1dG8mIHBh
dGgpIHsKKyAgICAgICAgcmV0dXJuIHBhdGguY29udGVudExvZ2ljYWxCb3R0b20oKTsKKyAgICB9
KTsKK30KKworaW5saW5lIGZsb2F0IExpbmVCb3g6OmNvbnRlbnRMb2dpY2FsVG9wQWRqdXN0ZWRG
b3JQcmVjZWRpbmdMaW5lQm94KCkgY29uc3QKK3sKKyAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbiht
X3BhdGhWYXJpYW50LCBbXShjb25zdCBhdXRvJiBwYXRoKSB7CisgICAgICAgIHJldHVybiBwYXRo
LmNvbnRlbnRMb2dpY2FsVG9wQWRqdXN0ZWRGb3JQcmVjZWRpbmdMaW5lQm94KCk7CisgICAgfSk7
Cit9CisKK2lubGluZSBmbG9hdCBMaW5lQm94Ojpjb250ZW50TG9naWNhbEJvdHRvbUFkanVzdGVk
Rm9yRm9sbG93aW5nTGluZUJveCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIFdURjo6c3dpdGNoT24o
bV9wYXRoVmFyaWFudCwgW10oY29uc3QgYXV0byYgcGF0aCkgeworICAgICAgICByZXR1cm4gcGF0
aC5jb250ZW50TG9naWNhbEJvdHRvbUFkanVzdGVkRm9yRm9sbG93aW5nTGluZUJveCgpOworICAg
IH0pOworfQorCitpbmxpbmUgZmxvYXQgTGluZUJveDo6dG9wKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gV1RGOjpzd2l0Y2hPbihtX3BhdGhWYXJpYW50LCBbXShjb25zdCBhdXRvJiBwYXRoKSB7Cisg
ICAgICAgIHJldHVybiBwYXRoLnRvcCgpOworICAgIH0pOworfQorCitpbmxpbmUgZmxvYXQgTGlu
ZUJveDo6Ym90dG9tKCkgY29uc3QKK3sKKyAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihtX3BhdGhW
YXJpYW50LCBbXShjb25zdCBhdXRvJiBwYXRoKSB7CisgICAgICAgIHJldHVybiBwYXRoLmJvdHRv
bSgpOworICAgIH0pOworfQorCitpbmxpbmUgZmxvYXQgTGluZUJveDo6Y29udGVudExvZ2ljYWxM
ZWZ0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihtX3BhdGhWYXJpYW50LCBb
XShjb25zdCBhdXRvJiBwYXRoKSB7CisgICAgICAgIHJldHVybiBwYXRoLmNvbnRlbnRMb2dpY2Fs
TGVmdCgpOworICAgIH0pOworfQorCitpbmxpbmUgZmxvYXQgTGluZUJveDo6Y29udGVudExvZ2lj
YWxSaWdodCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIFdURjo6c3dpdGNoT24obV9wYXRoVmFyaWFu
dCwgW10oY29uc3QgYXV0byYgcGF0aCkgeworICAgICAgICByZXR1cm4gcGF0aC5jb250ZW50TG9n
aWNhbFJpZ2h0KCk7CisgICAgfSk7Cit9CisKK2lubGluZSBmbG9hdCBMaW5lQm94Ojpjb250ZW50
TG9naWNhbFdpZHRoKCkgY29uc3QKK3sKKyAgICByZXR1cm4gY29udGVudExvZ2ljYWxSaWdodCgp
IC0gY29udGVudExvZ2ljYWxMZWZ0KCk7Cit9CisKK2lubGluZSBib29sIExpbmVCb3g6OmlzSG9y
aXpvbnRhbCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIFdURjo6c3dpdGNoT24obV9wYXRoVmFyaWFu
dCwgW10oY29uc3QgYXV0byYgcGF0aCkgeworICAgICAgICByZXR1cm4gcGF0aC5pc0hvcml6b250
YWwoKTsKKyAgICB9KTsKK30KKworaW5saW5lIEZvbnRCYXNlbGluZSBMaW5lQm94OjpiYXNlbGlu
ZVR5cGUoKSBjb25zdAoreworICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKG1fcGF0aFZhcmlhbnQs
IFtdKGNvbnN0IGF1dG8mIHBhdGgpIHsKKyAgICAgICAgcmV0dXJuIHBhdGguYmFzZWxpbmVUeXBl
KCk7CisgICAgfSk7Cit9CisKK2lubGluZSBjb25zdCBSZW5kZXJCbG9ja0Zsb3cmIExpbmVCb3g6
OmNvbnRhaW5pbmdCbG9jaygpIGNvbnN0Cit7CisgICAgcmV0dXJuIFdURjo6c3dpdGNoT24obV9w
YXRoVmFyaWFudCwgW10oY29uc3QgYXV0byYgcGF0aCkgLT4gY29uc3QgUmVuZGVyQmxvY2tGbG93
JiB7CisgICAgICAgIHJldHVybiBwYXRoLmNvbnRhaW5pbmdCbG9jaygpOworICAgIH0pOworfQor
CitpbmxpbmUgUmVuZGVyRnJhZ21lbnRDb250YWluZXIqIExpbmVCb3g6OmNvbnRhaW5pbmdGcmFn
bWVudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIFdURjo6c3dpdGNoT24obV9wYXRoVmFyaWFudCwg
W10oY29uc3QgYXV0byYgcGF0aCkgeworICAgICAgICByZXR1cm4gcGF0aC5jb250YWluaW5nRnJh
Z21lbnQoKTsKKyAgICB9KTsKK30KKworaW5saW5lIGJvb2wgTGluZUJveDo6aXNGaXJzdEFmdGVy
UGFnZUJyZWFrKCkgY29uc3QKK3sKKyAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihtX3BhdGhWYXJp
YW50LCBbXShjb25zdCBhdXRvJiBwYXRoKSB7CisgICAgICAgIHJldHVybiBwYXRoLmlzRmlyc3RB
ZnRlclBhZ2VCcmVhaygpOworICAgIH0pOworfQorCitpbmxpbmUgYm9vbCBMaW5lQm94Ojppc0Zp
cnN0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gIXByZXZpb3VzKCk7Cit9CisKK30KK30KKwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9y
TGluZUJveExlZ2FjeVBhdGguaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9J
bmxpbmVJdGVyYXRvckxpbmVCb3hMZWdhY3lQYXRoLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTU5MjRjMzNmMWY3
YjI5MWY3NGIwMWExZmI4MTU4MWZmMzg4MjFlMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRvckxpbmVCb3hMZWdhY3lQYXRo
LmgKQEAgLTAsMCArMSw5MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVk
ZSAiSW5saW5lSXRlcmF0b3JCb3hMZWdhY3lQYXRoLmgiCisjaW5jbHVkZSAiTGF5b3V0SW50ZWdy
YXRpb25JbmxpbmVDb250ZW50LmgiCisjaW5jbHVkZSAiTGVnYWN5Um9vdElubGluZUJveC5oIgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CituYW1lc3BhY2UgSW5saW5lSXRlcmF0b3IgeworCitjbGFz
cyBMaW5lQm94SXRlcmF0b3JMZWdhY3lQYXRoIHsKK3B1YmxpYzoKKyAgICBMaW5lQm94SXRlcmF0
b3JMZWdhY3lQYXRoKGNvbnN0IExlZ2FjeVJvb3RJbmxpbmVCb3gqIHJvb3RJbmxpbmVCb3gpCisg
ICAgICAgIDogbV9yb290SW5saW5lQm94KHJvb3RJbmxpbmVCb3gpCisgICAgeworICAgIH0KKyAg
ICBMaW5lQm94SXRlcmF0b3JMZWdhY3lQYXRoKExpbmVCb3hJdGVyYXRvckxlZ2FjeVBhdGgmJikg
PSBkZWZhdWx0OworICAgIExpbmVCb3hJdGVyYXRvckxlZ2FjeVBhdGgoY29uc3QgTGluZUJveEl0
ZXJhdG9yTGVnYWN5UGF0aCYpID0gZGVmYXVsdDsKKyAgICBMaW5lQm94SXRlcmF0b3JMZWdhY3lQ
YXRoJiBvcGVyYXRvcj0oY29uc3QgTGluZUJveEl0ZXJhdG9yTGVnYWN5UGF0aCYpID0gZGVmYXVs
dDsKKyAgICBMaW5lQm94SXRlcmF0b3JMZWdhY3lQYXRoJiBvcGVyYXRvcj0oTGluZUJveEl0ZXJh
dG9yTGVnYWN5UGF0aCYmKSA9IGRlZmF1bHQ7CisKKyAgICBmbG9hdCBjb250ZW50TG9naWNhbFRv
cCgpIGNvbnN0IHsgcmV0dXJuIG1fcm9vdElubGluZUJveC0+bGluZVRvcCgpLnRvRmxvYXQoKTsg
fQorICAgIGZsb2F0IGNvbnRlbnRMb2dpY2FsQm90dG9tKCkgY29uc3QgeyByZXR1cm4gbV9yb290
SW5saW5lQm94LT5saW5lQm90dG9tKCkudG9GbG9hdCgpOyB9CisgICAgZmxvYXQgY29udGVudExv
Z2ljYWxUb3BBZGp1c3RlZEZvclByZWNlZGluZ0xpbmVCb3goKSBjb25zdCB7IHJldHVybiBtX3Jv
b3RJbmxpbmVCb3gtPnNlbGVjdGlvblRvcCgpLnRvRmxvYXQoKTsgfQorICAgIGZsb2F0IGNvbnRl
bnRMb2dpY2FsQm90dG9tQWRqdXN0ZWRGb3JGb2xsb3dpbmdMaW5lQm94KCkgY29uc3QgeyByZXR1
cm4gbV9yb290SW5saW5lQm94LT5zZWxlY3Rpb25Cb3R0b20oKS50b0Zsb2F0KCk7IH0KKyAgICBm
bG9hdCB0b3AoKSBjb25zdCB7IHJldHVybiBtX3Jvb3RJbmxpbmVCb3gtPmxpbmVCb3hUb3AoKS50
b0Zsb2F0KCk7IH0KKyAgICBmbG9hdCBib3R0b20oKSBjb25zdCB7IHJldHVybiBtX3Jvb3RJbmxp
bmVCb3gtPmxpbmVCb3hCb3R0b20oKS50b0Zsb2F0KCk7IH0KKworICAgIGZsb2F0IGNvbnRlbnRM
b2dpY2FsTGVmdCgpIGNvbnN0IHsgcmV0dXJuIG1fcm9vdElubGluZUJveC0+bG9naWNhbExlZnQo
KTsgfQorICAgIGZsb2F0IGNvbnRlbnRMb2dpY2FsUmlnaHQoKSBjb25zdCB7IHJldHVybiBtX3Jv
b3RJbmxpbmVCb3gtPmxvZ2ljYWxSaWdodCgpOyB9CisgICAgYm9vbCBpc0hvcml6b250YWwoKSBj
b25zdCB7IHJldHVybiBtX3Jvb3RJbmxpbmVCb3gtPmlzSG9yaXpvbnRhbCgpOyB9CisgICAgRm9u
dEJhc2VsaW5lIGJhc2VsaW5lVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fcm9vdElubGluZUJveC0+
YmFzZWxpbmVUeXBlKCk7IH0KKworICAgIGNvbnN0IFJlbmRlckJsb2NrRmxvdyYgY29udGFpbmlu
Z0Jsb2NrKCkgY29uc3QgeyByZXR1cm4gbV9yb290SW5saW5lQm94LT5ibG9ja0Zsb3coKTsgfQor
CisgICAgUmVuZGVyRnJhZ21lbnRDb250YWluZXIqIGNvbnRhaW5pbmdGcmFnbWVudCgpIGNvbnN0
IHsgcmV0dXJuIG1fcm9vdElubGluZUJveC0+Y29udGFpbmluZ0ZyYWdtZW50KCk7IH0KKyAgICBi
b29sIGlzRmlyc3RBZnRlclBhZ2VCcmVhaygpIGNvbnN0IHsgcmV0dXJuIG1fcm9vdElubGluZUJv
eC0+aXNGaXJzdEFmdGVyUGFnZUJyZWFrKCk7IH0KKworICAgIHZvaWQgdHJhdmVyc2VOZXh0KCkK
KyAgICB7CisgICAgICAgIG1fcm9vdElubGluZUJveCA9IG1fcm9vdElubGluZUJveC0+bmV4dFJv
b3RCb3goKTsKKyAgICB9CisKKyAgICB2b2lkIHRyYXZlcnNlUHJldmlvdXMoKQorICAgIHsKKyAg
ICAgICAgbV9yb290SW5saW5lQm94ID0gbV9yb290SW5saW5lQm94LT5wcmV2Um9vdEJveCgpOwor
ICAgIH0KKworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBMaW5lQm94SXRlcmF0b3JMZWdhY3lQ
YXRoJiBvdGhlcikgY29uc3QgeyByZXR1cm4gbV9yb290SW5saW5lQm94ID09IG90aGVyLm1fcm9v
dElubGluZUJveDsgfQorCisgICAgYm9vbCBhdEVuZCgpIGNvbnN0IHsgcmV0dXJuICFtX3Jvb3RJ
bmxpbmVCb3g7IH0KKworICAgIEJveExlZ2FjeVBhdGggZmlyc3RMZWFmQm94KCkgY29uc3QKKyAg
ICB7CisgICAgICAgIHJldHVybiB7IG1fcm9vdElubGluZUJveC0+Zmlyc3RMZWFmRGVzY2VuZGFu
dCgpIH07CisgICAgfQorCisgICAgQm94TGVnYWN5UGF0aCBsYXN0TGVhZkJveCgpIGNvbnN0Cisg
ICAgeworICAgICAgICByZXR1cm4geyBtX3Jvb3RJbmxpbmVCb3gtPmxhc3RMZWFmRGVzY2VuZGFu
dCgpIH07CisgICAgfQorCitwcml2YXRlOgorICAgIGNvbnN0IExlZ2FjeVJvb3RJbmxpbmVCb3gq
IG1fcm9vdElubGluZUJveDsKK307CisKK30KK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRvckxpbmVCb3hNb2Rlcm5QYXRoLmggYi9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JMaW5lQm94TW9k
ZXJuUGF0aC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcwYmJiYjQwZjU1MGYxYzE1ODQxMDY3YmNhYjE5ZmJlNzEw
MjA3YjEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRp
b24vSW5saW5lSXRlcmF0b3JMaW5lQm94TW9kZXJuUGF0aC5oCkBAIC0wLDAgKzEsMTI5IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdf
Q09OVEVYVCkKKworI2luY2x1ZGUgIklubGluZUl0ZXJhdG9yQm94TW9kZXJuUGF0aC5oIgorI2lu
Y2x1ZGUgIkxheW91dEludGVncmF0aW9uSW5saW5lQ29udGVudC5oIgorI2luY2x1ZGUgIlJlbmRl
ckJsb2NrRmxvdy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CituYW1lc3BhY2UgSW5saW5lSXRl
cmF0b3IgeworCitjbGFzcyBCb3hNb2Rlcm5QYXRoOworCitjbGFzcyBMaW5lQm94SXRlcmF0b3JN
b2Rlcm5QYXRoIHsKK3B1YmxpYzoKKyAgICBMaW5lQm94SXRlcmF0b3JNb2Rlcm5QYXRoKGNvbnN0
IExheW91dEludGVncmF0aW9uOjpJbmxpbmVDb250ZW50JiBpbmxpbmVDb250ZW50LCBzaXplX3Qg
bGluZUluZGV4KQorICAgICAgICA6IG1faW5saW5lQ29udGVudCgmaW5saW5lQ29udGVudCkKKyAg
ICAgICAgLCBtX2xpbmVJbmRleChsaW5lSW5kZXgpCisgICAgeworICAgICAgICBBU1NFUlQobGlu
ZUluZGV4IDw9IGxpbmVzKCkuc2l6ZSgpKTsKKyAgICB9CisgICAgTGluZUJveEl0ZXJhdG9yTW9k
ZXJuUGF0aChMaW5lQm94SXRlcmF0b3JNb2Rlcm5QYXRoJiYpID0gZGVmYXVsdDsKKyAgICBMaW5l
Qm94SXRlcmF0b3JNb2Rlcm5QYXRoKGNvbnN0IExpbmVCb3hJdGVyYXRvck1vZGVyblBhdGgmKSA9
IGRlZmF1bHQ7CisgICAgTGluZUJveEl0ZXJhdG9yTW9kZXJuUGF0aCYgb3BlcmF0b3I9KGNvbnN0
IExpbmVCb3hJdGVyYXRvck1vZGVyblBhdGgmKSA9IGRlZmF1bHQ7CisgICAgTGluZUJveEl0ZXJh
dG9yTW9kZXJuUGF0aCYgb3BlcmF0b3I9KExpbmVCb3hJdGVyYXRvck1vZGVyblBhdGgmJikgPSBk
ZWZhdWx0OworCisgICAgZmxvYXQgY29udGVudExvZ2ljYWxUb3AoKSBjb25zdCB7IHJldHVybiBs
aW5lKCkuZW5jbG9zaW5nQ29udGVudFRvcCgpOyB9CisgICAgZmxvYXQgY29udGVudExvZ2ljYWxC
b3R0b20oKSBjb25zdCB7IHJldHVybiBsaW5lKCkuZW5jbG9zaW5nQ29udGVudEJvdHRvbSgpOyB9
CisgICAgZmxvYXQgdG9wKCkgY29uc3QgeyByZXR1cm4gbGluZSgpLmxpbmVCb3hUb3AoKTsgfQor
ICAgIGZsb2F0IGJvdHRvbSgpIGNvbnN0IHsgcmV0dXJuIGxpbmUoKS5saW5lQm94Qm90dG9tKCk7
IH0KKworICAgIGZsb2F0IGNvbnRlbnRMb2dpY2FsVG9wQWRqdXN0ZWRGb3JQcmVjZWRpbmdMaW5l
Qm94KCkgY29uc3QgeyByZXR1cm4gIW1fbGluZUluZGV4ID8gY29udGVudExvZ2ljYWxUb3AoKSA6
IExpbmVCb3hJdGVyYXRvck1vZGVyblBhdGgoKm1faW5saW5lQ29udGVudCwgbV9saW5lSW5kZXgg
LSAxKS5jb250ZW50TG9naWNhbEJvdHRvbUFkanVzdGVkRm9yRm9sbG93aW5nTGluZUJveCgpOyB9
CisgICAgLy8gRklYTUU6IEltcGxlbWVudC4KKyAgICBmbG9hdCBjb250ZW50TG9naWNhbEJvdHRv
bUFkanVzdGVkRm9yRm9sbG93aW5nTGluZUJveCgpIGNvbnN0IHsgcmV0dXJuIGNvbnRlbnRMb2dp
Y2FsQm90dG9tKCk7IH0KKworICAgIGZsb2F0IGNvbnRlbnRMb2dpY2FsTGVmdCgpIGNvbnN0IHsg
cmV0dXJuIGxpbmUoKS5saW5lQm94TGVmdCgpICsgbGluZSgpLmNvbnRlbnRMb2dpY2FsT2Zmc2V0
KCk7IH0KKyAgICBmbG9hdCBjb250ZW50TG9naWNhbFJpZ2h0KCkgY29uc3QgeyByZXR1cm4gY29u
dGVudExvZ2ljYWxMZWZ0KCkgKyBsaW5lKCkuY29udGVudExvZ2ljYWxXaWR0aCgpOyB9CisgICAg
Ym9vbCBpc0hvcml6b250YWwoKSBjb25zdCB7IHJldHVybiBsaW5lKCkuaXNIb3Jpem9udGFsKCk7
IH0KKyAgICBGb250QmFzZWxpbmUgYmFzZWxpbmVUeXBlKCkgY29uc3QgeyByZXR1cm4gbGluZSgp
LmJhc2VsaW5lVHlwZSgpOyB9CisKKyAgICBjb25zdCBSZW5kZXJCbG9ja0Zsb3cmIGNvbnRhaW5p
bmdCbG9jaygpIGNvbnN0IHsgcmV0dXJuIG1faW5saW5lQ29udGVudC0+Y29udGFpbmluZ0Jsb2Nr
KCk7IH0KKworICAgIFJlbmRlckZyYWdtZW50Q29udGFpbmVyKiBjb250YWluaW5nRnJhZ21lbnQo
KSBjb25zdCB7IHJldHVybiBudWxscHRyOyB9CisgICAgYm9vbCBpc0ZpcnN0QWZ0ZXJQYWdlQnJl
YWsoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorCisgICAgdm9pZCB0cmF2ZXJzZU5leHQoKQor
ICAgIHsKKyAgICAgICAgQVNTRVJUKCFhdEVuZCgpKTsKKworICAgICAgICArK21fbGluZUluZGV4
OworICAgIH0KKworICAgIHZvaWQgdHJhdmVyc2VQcmV2aW91cygpCisgICAgeworICAgICAgICBB
U1NFUlQoIWF0RW5kKCkpOworCisgICAgICAgIGlmICghbV9saW5lSW5kZXgpIHsKKyAgICAgICAg
ICAgIHNldEF0RW5kKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAg
ICAtLW1fbGluZUluZGV4OworICAgIH0KKworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBMaW5l
Qm94SXRlcmF0b3JNb2Rlcm5QYXRoJiBvdGhlcikgY29uc3QgeyByZXR1cm4gbV9pbmxpbmVDb250
ZW50ID09IG90aGVyLm1faW5saW5lQ29udGVudCAmJiBtX2xpbmVJbmRleCA9PSBvdGhlci5tX2xp
bmVJbmRleDsgfQorCisgICAgYm9vbCBhdEVuZCgpIGNvbnN0IHsgcmV0dXJuIG1fbGluZUluZGV4
ID09IGxpbmVzKCkuc2l6ZSgpOyB9CisKKyAgICBCb3hNb2Rlcm5QYXRoIGZpcnN0TGVhZkJveCgp
IGNvbnN0CisgICAgeworICAgICAgICBpZiAoIWxpbmUoKS5ib3hDb3VudCgpKQorICAgICAgICAg
ICAgcmV0dXJuIHsgKm1faW5saW5lQ29udGVudCB9OworICAgICAgICBhdXRvIHJ1bkl0ZXJhdG9y
ID0gQm94TW9kZXJuUGF0aCB7ICptX2lubGluZUNvbnRlbnQsIGxpbmUoKS5maXJzdEJveEluZGV4
KCkgfTsKKyAgICAgICAgaWYgKHJ1bkl0ZXJhdG9yLmJveCgpLmlzSW5saW5lQm94KCkpCisgICAg
ICAgICAgICBydW5JdGVyYXRvci50cmF2ZXJzZU5leHRPbkxpbmUoKTsKKyAgICAgICAgcmV0dXJu
IHJ1bkl0ZXJhdG9yOworICAgIH0KKworICAgIEJveE1vZGVyblBhdGggbGFzdExlYWZCb3goKSBj
b25zdAorICAgIHsKKyAgICAgICAgYXV0byBib3hDb3VudCA9IGxpbmUoKS5ib3hDb3VudCgpOwor
ICAgICAgICBpZiAoIWJveENvdW50KQorICAgICAgICAgICAgcmV0dXJuIHsgKm1faW5saW5lQ29u
dGVudCB9OworICAgICAgICBhdXRvIHJ1bkl0ZXJhdG9yID0gQm94TW9kZXJuUGF0aCB7ICptX2lu
bGluZUNvbnRlbnQsIGxpbmUoKS5maXJzdEJveEluZGV4KCkgKyBib3hDb3VudCAtIDEgfTsKKyAg
ICAgICAgaWYgKHJ1bkl0ZXJhdG9yLmJveCgpLmlzSW5saW5lQm94KCkpCisgICAgICAgICAgICBy
dW5JdGVyYXRvci50cmF2ZXJzZVByZXZpb3VzT25MaW5lKCk7CisgICAgICAgIHJldHVybiBydW5J
dGVyYXRvcjsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgdm9pZCBzZXRBdEVuZCgpIHsgbV9saW5l
SW5kZXggPSBsaW5lcygpLnNpemUoKTsgfQorCisgICAgY29uc3QgTGF5b3V0SW50ZWdyYXRpb246
OklubGluZUNvbnRlbnQ6OkxpbmVzJiBsaW5lcygpIGNvbnN0IHsgcmV0dXJuIG1faW5saW5lQ29u
dGVudC0+bGluZXM7IH0KKyAgICBjb25zdCBMYXlvdXRJbnRlZ3JhdGlvbjo6TGluZSYgbGluZSgp
IGNvbnN0IHsgcmV0dXJuIGxpbmVzKClbbV9saW5lSW5kZXhdOyB9CisKKyAgICBSZWZQdHI8Y29u
c3QgTGF5b3V0SW50ZWdyYXRpb246OklubGluZUNvbnRlbnQ+IG1faW5saW5lQ29udGVudDsKKyAg
ICBzaXplX3QgbV9saW5lSW5kZXggeyAwIH07Cit9OworCit9Cit9CisKKyNlbmRpZgorCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JM
aW5lTGVnYWN5UGF0aC5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0lubGlu
ZUl0ZXJhdG9yTGluZUxlZ2FjeVBhdGguaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
NDYwOTQzNjIzMTI2MmIyODRkN2RmM2FjODBlZjk2Mjc1Yjg2NjlmYy4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50
ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JMaW5lTGVnYWN5UGF0aC5oCisrKyAvZGV2L251bGwKQEAg
LTEsOTIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSAiSW5s
aW5lSXRlcmF0b3JCb3hMZWdhY3lQYXRoLmgiCi0jaW5jbHVkZSAiTGF5b3V0SW50ZWdyYXRpb25J
bmxpbmVDb250ZW50LmgiCi0jaW5jbHVkZSAiTGVnYWN5Um9vdElubGluZUJveC5oIgotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci1uYW1lc3BhY2UgSW5saW5lSXRlcmF0b3IgewotCi1jbGFzcyBMaW5l
SXRlcmF0b3JMZWdhY3lQYXRoIHsKLXB1YmxpYzoKLSAgICBMaW5lSXRlcmF0b3JMZWdhY3lQYXRo
KGNvbnN0IExlZ2FjeVJvb3RJbmxpbmVCb3gqIHJvb3RJbmxpbmVCb3gpCi0gICAgICAgIDogbV9y
b290SW5saW5lQm94KHJvb3RJbmxpbmVCb3gpCi0gICAgewotICAgIH0KLSAgICBMaW5lSXRlcmF0
b3JMZWdhY3lQYXRoKExpbmVJdGVyYXRvckxlZ2FjeVBhdGgmJikgPSBkZWZhdWx0OwotICAgIExp
bmVJdGVyYXRvckxlZ2FjeVBhdGgoY29uc3QgTGluZUl0ZXJhdG9yTGVnYWN5UGF0aCYpID0gZGVm
YXVsdDsKLSAgICBMaW5lSXRlcmF0b3JMZWdhY3lQYXRoJiBvcGVyYXRvcj0oY29uc3QgTGluZUl0
ZXJhdG9yTGVnYWN5UGF0aCYpID0gZGVmYXVsdDsKLSAgICBMaW5lSXRlcmF0b3JMZWdhY3lQYXRo
JiBvcGVyYXRvcj0oTGluZUl0ZXJhdG9yTGVnYWN5UGF0aCYmKSA9IGRlZmF1bHQ7Ci0KLSAgICBm
bG9hdCBjb250ZW50TG9naWNhbFRvcCgpIGNvbnN0IHsgcmV0dXJuIG1fcm9vdElubGluZUJveC0+
bGluZVRvcCgpLnRvRmxvYXQoKTsgfQotICAgIGZsb2F0IGNvbnRlbnRMb2dpY2FsQm90dG9tKCkg
Y29uc3QgeyByZXR1cm4gbV9yb290SW5saW5lQm94LT5saW5lQm90dG9tKCkudG9GbG9hdCgpOyB9
Ci0gICAgZmxvYXQgY29udGVudExvZ2ljYWxUb3BBZGp1c3RlZEZvclByZWNlZGluZ0xpbmUoKSBj
b25zdCB7IHJldHVybiBtX3Jvb3RJbmxpbmVCb3gtPnNlbGVjdGlvblRvcCgpLnRvRmxvYXQoKTsg
fQotICAgIGZsb2F0IGNvbnRlbnRMb2dpY2FsQm90dG9tQWRqdXN0ZWRGb3JGb2xsb3dpbmdMaW5l
KCkgY29uc3QgeyByZXR1cm4gbV9yb290SW5saW5lQm94LT5zZWxlY3Rpb25Cb3R0b20oKS50b0Zs
b2F0KCk7IH0KLSAgICBmbG9hdCBsaW5lQm94VG9wKCkgY29uc3QgeyByZXR1cm4gbV9yb290SW5s
aW5lQm94LT5saW5lQm94VG9wKCkudG9GbG9hdCgpOyB9Ci0gICAgZmxvYXQgbGluZUJveEJvdHRv
bSgpIGNvbnN0IHsgcmV0dXJuIG1fcm9vdElubGluZUJveC0+bGluZUJveEJvdHRvbSgpLnRvRmxv
YXQoKTsgfQotCi0gICAgZmxvYXQgY29udGVudExvZ2ljYWxMZWZ0KCkgY29uc3QgeyByZXR1cm4g
bV9yb290SW5saW5lQm94LT5sb2dpY2FsTGVmdCgpOyB9Ci0gICAgZmxvYXQgY29udGVudExvZ2lj
YWxSaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1fcm9vdElubGluZUJveC0+bG9naWNhbFJpZ2h0KCk7
IH0KLSAgICBib29sIGlzSG9yaXpvbnRhbCgpIGNvbnN0IHsgcmV0dXJuIG1fcm9vdElubGluZUJv
eC0+aXNIb3Jpem9udGFsKCk7IH0KLSAgICBGb250QmFzZWxpbmUgYmFzZWxpbmVUeXBlKCkgY29u
c3QgeyByZXR1cm4gbV9yb290SW5saW5lQm94LT5iYXNlbGluZVR5cGUoKTsgfQotCi0gICAgY29u
c3QgUmVuZGVyQmxvY2tGbG93JiBjb250YWluaW5nQmxvY2soKSBjb25zdCB7IHJldHVybiBtX3Jv
b3RJbmxpbmVCb3gtPmJsb2NrRmxvdygpOyB9Ci0KLSAgICBSZW5kZXJGcmFnbWVudENvbnRhaW5l
ciogY29udGFpbmluZ0ZyYWdtZW50KCkgY29uc3QgeyByZXR1cm4gbV9yb290SW5saW5lQm94LT5j
b250YWluaW5nRnJhZ21lbnQoKTsgfQotICAgIGJvb2wgaXNGaXJzdEFmdGVyUGFnZUJyZWFrKCkg
Y29uc3QgeyByZXR1cm4gbV9yb290SW5saW5lQm94LT5pc0ZpcnN0QWZ0ZXJQYWdlQnJlYWsoKTsg
fQotCi0gICAgdm9pZCB0cmF2ZXJzZU5leHQoKQotICAgIHsKLSAgICAgICAgbV9yb290SW5saW5l
Qm94ID0gbV9yb290SW5saW5lQm94LT5uZXh0Um9vdEJveCgpOwotICAgIH0KLQotICAgIHZvaWQg
dHJhdmVyc2VQcmV2aW91cygpCi0gICAgewotICAgICAgICBtX3Jvb3RJbmxpbmVCb3ggPSBtX3Jv
b3RJbmxpbmVCb3gtPnByZXZSb290Qm94KCk7Ci0gICAgfQotCi0gICAgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IExpbmVJdGVyYXRvckxlZ2FjeVBhdGgmIG90aGVyKSBjb25zdCB7IHJldHVybiBtX3Jv
b3RJbmxpbmVCb3ggPT0gb3RoZXIubV9yb290SW5saW5lQm94OyB9Ci0KLSAgICBib29sIGF0RW5k
KCkgY29uc3QgeyByZXR1cm4gIW1fcm9vdElubGluZUJveDsgfQotCi0gICAgQm94TGVnYWN5UGF0
aCBmaXJzdExlYWZCb3goKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIHsgbV9yb290SW5s
aW5lQm94LT5maXJzdExlYWZEZXNjZW5kYW50KCkgfTsKLSAgICB9Ci0KLSAgICBCb3hMZWdhY3lQ
YXRoIGxhc3RMZWFmQm94KCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiB7IG1fcm9vdElu
bGluZUJveC0+bGFzdExlYWZEZXNjZW5kYW50KCkgfTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAg
Y29uc3QgTGVnYWN5Um9vdElubGluZUJveCogbV9yb290SW5saW5lQm94OwotfTsKLQotfQotfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJh
dG9yTGluZU1vZGVyblBhdGguaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9J
bmxpbmVJdGVyYXRvckxpbmVNb2Rlcm5QYXRoLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IGEzZjFjMmNiNTZlOTkxODdjZDEwMjI5NGEyYTUwMzIwNzM2MTc4ZjEuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yTGluZU1vZGVyblBhdGguaAorKysgL2Rldi9udWxs
CkBAIC0xLDEyOSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFC
TEUoTEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCkKLQotI2luY2x1ZGUgIklubGluZUl0ZXJhdG9y
Qm94TW9kZXJuUGF0aC5oIgotI2luY2x1ZGUgIkxheW91dEludGVncmF0aW9uSW5saW5lQ29udGVu
dC5oIgotI2luY2x1ZGUgIlJlbmRlckJsb2NrRmxvdy5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7
Ci1uYW1lc3BhY2UgSW5saW5lSXRlcmF0b3IgewotCi1jbGFzcyBCb3hNb2Rlcm5QYXRoOwotCi1j
bGFzcyBMaW5lSXRlcmF0b3JNb2Rlcm5QYXRoIHsKLXB1YmxpYzoKLSAgICBMaW5lSXRlcmF0b3JN
b2Rlcm5QYXRoKGNvbnN0IExheW91dEludGVncmF0aW9uOjpJbmxpbmVDb250ZW50JiBpbmxpbmVD
b250ZW50LCBzaXplX3QgbGluZUluZGV4KQotICAgICAgICA6IG1faW5saW5lQ29udGVudCgmaW5s
aW5lQ29udGVudCkKLSAgICAgICAgLCBtX2xpbmVJbmRleChsaW5lSW5kZXgpCi0gICAgewotICAg
ICAgICBBU1NFUlQobGluZUluZGV4IDw9IGxpbmVzKCkuc2l6ZSgpKTsKLSAgICB9Ci0gICAgTGlu
ZUl0ZXJhdG9yTW9kZXJuUGF0aChMaW5lSXRlcmF0b3JNb2Rlcm5QYXRoJiYpID0gZGVmYXVsdDsK
LSAgICBMaW5lSXRlcmF0b3JNb2Rlcm5QYXRoKGNvbnN0IExpbmVJdGVyYXRvck1vZGVyblBhdGgm
KSA9IGRlZmF1bHQ7Ci0gICAgTGluZUl0ZXJhdG9yTW9kZXJuUGF0aCYgb3BlcmF0b3I9KGNvbnN0
IExpbmVJdGVyYXRvck1vZGVyblBhdGgmKSA9IGRlZmF1bHQ7Ci0gICAgTGluZUl0ZXJhdG9yTW9k
ZXJuUGF0aCYgb3BlcmF0b3I9KExpbmVJdGVyYXRvck1vZGVyblBhdGgmJikgPSBkZWZhdWx0Owot
Ci0gICAgZmxvYXQgY29udGVudExvZ2ljYWxUb3AoKSBjb25zdCB7IHJldHVybiBsaW5lKCkuZW5j
bG9zaW5nQ29udGVudFRvcCgpOyB9Ci0gICAgZmxvYXQgY29udGVudExvZ2ljYWxCb3R0b20oKSBj
b25zdCB7IHJldHVybiBsaW5lKCkuZW5jbG9zaW5nQ29udGVudEJvdHRvbSgpOyB9Ci0gICAgZmxv
YXQgbGluZUJveFRvcCgpIGNvbnN0IHsgcmV0dXJuIGxpbmUoKS5saW5lQm94VG9wKCk7IH0KLSAg
ICBmbG9hdCBsaW5lQm94Qm90dG9tKCkgY29uc3QgeyByZXR1cm4gbGluZSgpLmxpbmVCb3hCb3R0
b20oKTsgfQotCi0gICAgZmxvYXQgY29udGVudExvZ2ljYWxUb3BBZGp1c3RlZEZvclByZWNlZGlu
Z0xpbmUoKSBjb25zdCB7IHJldHVybiAhbV9saW5lSW5kZXggPyBjb250ZW50TG9naWNhbFRvcCgp
IDogTGluZUl0ZXJhdG9yTW9kZXJuUGF0aCgqbV9pbmxpbmVDb250ZW50LCBtX2xpbmVJbmRleCAt
IDEpLmNvbnRlbnRMb2dpY2FsQm90dG9tQWRqdXN0ZWRGb3JGb2xsb3dpbmdMaW5lKCk7IH0KLSAg
ICAvLyBGSVhNRTogSW1wbGVtZW50LgotICAgIGZsb2F0IGNvbnRlbnRMb2dpY2FsQm90dG9tQWRq
dXN0ZWRGb3JGb2xsb3dpbmdMaW5lKCkgY29uc3QgeyByZXR1cm4gY29udGVudExvZ2ljYWxCb3R0
b20oKTsgfQotCi0gICAgZmxvYXQgY29udGVudExvZ2ljYWxMZWZ0KCkgY29uc3QgeyByZXR1cm4g
bGluZSgpLmxpbmVCb3hMZWZ0KCkgKyBsaW5lKCkuY29udGVudExvZ2ljYWxPZmZzZXQoKTsgfQot
ICAgIGZsb2F0IGNvbnRlbnRMb2dpY2FsUmlnaHQoKSBjb25zdCB7IHJldHVybiBjb250ZW50TG9n
aWNhbExlZnQoKSArIGxpbmUoKS5jb250ZW50TG9naWNhbFdpZHRoKCk7IH0KLSAgICBib29sIGlz
SG9yaXpvbnRhbCgpIGNvbnN0IHsgcmV0dXJuIGxpbmUoKS5pc0hvcml6b250YWwoKTsgfQotICAg
IEZvbnRCYXNlbGluZSBiYXNlbGluZVR5cGUoKSBjb25zdCB7IHJldHVybiBsaW5lKCkuYmFzZWxp
bmVUeXBlKCk7IH0KLQotICAgIGNvbnN0IFJlbmRlckJsb2NrRmxvdyYgY29udGFpbmluZ0Jsb2Nr
KCkgY29uc3QgeyByZXR1cm4gbV9pbmxpbmVDb250ZW50LT5jb250YWluaW5nQmxvY2soKTsgfQot
Ci0gICAgUmVuZGVyRnJhZ21lbnRDb250YWluZXIqIGNvbnRhaW5pbmdGcmFnbWVudCgpIGNvbnN0
IHsgcmV0dXJuIG51bGxwdHI7IH0KLSAgICBib29sIGlzRmlyc3RBZnRlclBhZ2VCcmVhaygpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0KLSAgICB2b2lkIHRyYXZlcnNlTmV4dCgpCi0gICAgewot
ICAgICAgICBBU1NFUlQoIWF0RW5kKCkpOwotCi0gICAgICAgICsrbV9saW5lSW5kZXg7Ci0gICAg
fQotCi0gICAgdm9pZCB0cmF2ZXJzZVByZXZpb3VzKCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVCgh
YXRFbmQoKSk7Ci0KLSAgICAgICAgaWYgKCFtX2xpbmVJbmRleCkgewotICAgICAgICAgICAgc2V0
QXRFbmQoKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIC0tbV9s
aW5lSW5kZXg7Ci0gICAgfQotCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IExpbmVJdGVyYXRv
ck1vZGVyblBhdGgmIG90aGVyKSBjb25zdCB7IHJldHVybiBtX2lubGluZUNvbnRlbnQgPT0gb3Ro
ZXIubV9pbmxpbmVDb250ZW50ICYmIG1fbGluZUluZGV4ID09IG90aGVyLm1fbGluZUluZGV4OyB9
Ci0KLSAgICBib29sIGF0RW5kKCkgY29uc3QgeyByZXR1cm4gbV9saW5lSW5kZXggPT0gbGluZXMo
KS5zaXplKCk7IH0KLQotICAgIEJveE1vZGVyblBhdGggZmlyc3RMZWFmQm94KCkgY29uc3QKLSAg
ICB7Ci0gICAgICAgIGlmICghbGluZSgpLmJveENvdW50KCkpCi0gICAgICAgICAgICByZXR1cm4g
eyAqbV9pbmxpbmVDb250ZW50IH07Ci0gICAgICAgIGF1dG8gcnVuSXRlcmF0b3IgPSBCb3hNb2Rl
cm5QYXRoIHsgKm1faW5saW5lQ29udGVudCwgbGluZSgpLmZpcnN0Qm94SW5kZXgoKSB9OwotICAg
ICAgICBpZiAocnVuSXRlcmF0b3IuYm94KCkuaXNJbmxpbmVCb3goKSkKLSAgICAgICAgICAgIHJ1
bkl0ZXJhdG9yLnRyYXZlcnNlTmV4dE9uTGluZSgpOwotICAgICAgICByZXR1cm4gcnVuSXRlcmF0
b3I7Ci0gICAgfQotCi0gICAgQm94TW9kZXJuUGF0aCBsYXN0TGVhZkJveCgpIGNvbnN0Ci0gICAg
ewotICAgICAgICBhdXRvIGJveENvdW50ID0gbGluZSgpLmJveENvdW50KCk7Ci0gICAgICAgIGlm
ICghYm94Q291bnQpCi0gICAgICAgICAgICByZXR1cm4geyAqbV9pbmxpbmVDb250ZW50IH07Ci0g
ICAgICAgIGF1dG8gcnVuSXRlcmF0b3IgPSBCb3hNb2Rlcm5QYXRoIHsgKm1faW5saW5lQ29udGVu
dCwgbGluZSgpLmZpcnN0Qm94SW5kZXgoKSArIGJveENvdW50IC0gMSB9OwotICAgICAgICBpZiAo
cnVuSXRlcmF0b3IuYm94KCkuaXNJbmxpbmVCb3goKSkKLSAgICAgICAgICAgIHJ1bkl0ZXJhdG9y
LnRyYXZlcnNlUHJldmlvdXNPbkxpbmUoKTsKLSAgICAgICAgcmV0dXJuIHJ1bkl0ZXJhdG9yOwot
ICAgIH0KLQotcHJpdmF0ZToKLSAgICB2b2lkIHNldEF0RW5kKCkgeyBtX2xpbmVJbmRleCA9IGxp
bmVzKCkuc2l6ZSgpOyB9Ci0KLSAgICBjb25zdCBMYXlvdXRJbnRlZ3JhdGlvbjo6SW5saW5lQ29u
dGVudDo6TGluZXMmIGxpbmVzKCkgY29uc3QgeyByZXR1cm4gbV9pbmxpbmVDb250ZW50LT5saW5l
czsgfQotICAgIGNvbnN0IExheW91dEludGVncmF0aW9uOjpMaW5lJiBsaW5lKCkgY29uc3QgeyBy
ZXR1cm4gbGluZXMoKVttX2xpbmVJbmRleF07IH0KLQotICAgIFJlZlB0cjxjb25zdCBMYXlvdXRJ
bnRlZ3JhdGlvbjo6SW5saW5lQ29udGVudD4gbV9pbmxpbmVDb250ZW50OwotICAgIHNpemVfdCBt
X2xpbmVJbmRleCB7IDAgfTsKLX07Ci0KLX0KLX0KLQotI2VuZGlmCi0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRvckxvZ2ljYWxPcmRl
clRyYXZlcnNhbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5saW5l
SXRlcmF0b3JMb2dpY2FsT3JkZXJUcmF2ZXJzYWwuY3BwCmluZGV4IDU4YWU3OWY3NzY0NGM4NzZm
ZmVlYzdmMDExMzM3Y2Q2ZmEyYTMwNjkuLjhmNGJjMjAyZGRkZTFhNWE1M2YzZGEwYzBjN2YxNjcw
MDIzNGI2NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9J
bmxpbmVJdGVyYXRvckxvZ2ljYWxPcmRlclRyYXZlcnNhbC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yTG9naWNhbE9yZGVyVHJhdmVyc2Fs
LmNwcApAQCAtMjYsNyArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIklu
bGluZUl0ZXJhdG9yTG9naWNhbE9yZGVyVHJhdmVyc2FsLmgiCiAKLSNpbmNsdWRlICJJbmxpbmVJ
dGVyYXRvckxpbmUuaCIKKyNpbmNsdWRlICJJbmxpbmVJdGVyYXRvckxpbmVCb3guaCIKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIElubGluZUl0ZXJhdG9yIHsKQEAgLTg5LDEyICs4
OSwxMiBAQCBUZXh0Qm94SXRlcmF0b3IgbmV4dFRleHRCb3hJbkxvZ2ljYWxPcmRlcihjb25zdCBU
ZXh0Qm94SXRlcmF0b3ImIHRleHRCb3gsIFRleHRMbwogICAgIHJldHVybiB7IH07CiB9CiAKLXN0
YXRpYyBMaW5lTG9naWNhbE9yZGVyQ2FjaGUgbWFrZUxpbmVMb2dpY2FsT3JkZXJDYWNoZShjb25z
dCBMaW5lSXRlcmF0b3ImIGxpbmUpCitzdGF0aWMgTGluZUxvZ2ljYWxPcmRlckNhY2hlIG1ha2VM
aW5lTG9naWNhbE9yZGVyQ2FjaGUoY29uc3QgTGluZUJveEl0ZXJhdG9yJiBsaW5lQm94KQogewog
ICAgIGF1dG8gY2FjaGUgPSBtYWtlVW5pcXVlPExpbmVMb2dpY2FsT3JkZXJDYWNoZURhdGE+KCk7
CiAKLSAgICBjYWNoZS0+bGluZSA9IGxpbmU7Ci0gICAgY2FjaGUtPmJveGVzID0gbGVhZkJveGVz
SW5Mb2dpY2FsT3JkZXIobGluZSwgW10oYXV0byBmaXJzdCwgYXV0byBsYXN0KSB7CisgICAgY2Fj
aGUtPmxpbmVCb3ggPSBsaW5lQm94OworICAgIGNhY2hlLT5ib3hlcyA9IGxlYWZCb3hlc0luTG9n
aWNhbE9yZGVyKGxpbmVCb3gsIFtdKGF1dG8gZmlyc3QsIGF1dG8gbGFzdCkgewogICAgICAgICBz
dGQ6OnJldmVyc2UoZmlyc3QsIGxhc3QpOwogICAgIH0pOwogCkBAIC0xMDMsOSArMTAzLDkgQEAg
c3RhdGljIExpbmVMb2dpY2FsT3JkZXJDYWNoZSBtYWtlTGluZUxvZ2ljYWxPcmRlckNhY2hlKGNv
bnN0IExpbmVJdGVyYXRvciYgbGluZSkKIAogc3RhdGljIHZvaWQgdXBkYXRlTGluZUxvZ2ljYWxP
cmRlckNhY2hlSWZOZWVkZWQoY29uc3QgTGVhZkJveEl0ZXJhdG9yJiBib3gsIExpbmVMb2dpY2Fs
T3JkZXJDYWNoZSYgY2FjaGUpCiB7Ci0gICAgYXV0byBsaW5lID0gYm94LT5saW5lKCk7Ci0gICAg
aWYgKCFjYWNoZSB8fCBjYWNoZS0+bGluZSAhPSBsaW5lKQotICAgICAgICBjYWNoZSA9IG1ha2VM
aW5lTG9naWNhbE9yZGVyQ2FjaGUobGluZSk7CisgICAgYXV0byBsaW5lQm94ID0gYm94LT5saW5l
Qm94KCk7CisgICAgaWYgKCFjYWNoZSB8fCBjYWNoZS0+bGluZUJveCAhPSBsaW5lQm94KQorICAg
ICAgICBjYWNoZSA9IG1ha2VMaW5lTG9naWNhbE9yZGVyQ2FjaGUobGluZUJveCk7CiAKICAgICBp
ZiAoY2FjaGUtPmluZGV4IDwgY2FjaGUtPmJveGVzLnNpemUoKSAmJiBjYWNoZS0+Ym94ZXNbY2Fj
aGUtPmluZGV4XSA9PSBib3gpCiAgICAgICAgIHJldHVybjsKQEAgLTExNSw5ICsxMTUsOSBAQCBz
dGF0aWMgdm9pZCB1cGRhdGVMaW5lTG9naWNhbE9yZGVyQ2FjaGVJZk5lZWRlZChjb25zdCBMZWFm
Qm94SXRlcmF0b3ImIGJveCwgTGluZQogICAgIEFTU0VSVChjYWNoZS0+aW5kZXggIT0gbm90Rm91
bmQpOwogfQogCi1MZWFmQm94SXRlcmF0b3IgZmlyc3RMZWFmT25MaW5lSW5Mb2dpY2FsT3JkZXIo
Y29uc3QgTGluZUl0ZXJhdG9yJiBsaW5lLCBMaW5lTG9naWNhbE9yZGVyQ2FjaGUmIGNhY2hlKQor
TGVhZkJveEl0ZXJhdG9yIGZpcnN0TGVhZk9uTGluZUluTG9naWNhbE9yZGVyKGNvbnN0IExpbmVC
b3hJdGVyYXRvciYgbGluZUJveCwgTGluZUxvZ2ljYWxPcmRlckNhY2hlJiBjYWNoZSkKIHsKLSAg
ICBjYWNoZSA9IG1ha2VMaW5lTG9naWNhbE9yZGVyQ2FjaGUobGluZSk7CisgICAgY2FjaGUgPSBt
YWtlTGluZUxvZ2ljYWxPcmRlckNhY2hlKGxpbmVCb3gpOwogCiAgICAgaWYgKGNhY2hlLT5ib3hl
cy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiB7IH07CkBAIC0xMjYsOSArMTI2LDkgQEAgTGVh
ZkJveEl0ZXJhdG9yIGZpcnN0TGVhZk9uTGluZUluTG9naWNhbE9yZGVyKGNvbnN0IExpbmVJdGVy
YXRvciYgbGluZSwgTGluZUxvZ2kKICAgICByZXR1cm4gY2FjaGUtPmJveGVzLmZpcnN0KCk7CiB9
CiAKLUxlYWZCb3hJdGVyYXRvciBsYXN0TGVhZk9uTGluZUluTG9naWNhbE9yZGVyKGNvbnN0IExp
bmVJdGVyYXRvciYgbGluZSwgTGluZUxvZ2ljYWxPcmRlckNhY2hlJiBjYWNoZSkKK0xlYWZCb3hJ
dGVyYXRvciBsYXN0TGVhZk9uTGluZUluTG9naWNhbE9yZGVyKGNvbnN0IExpbmVCb3hJdGVyYXRv
ciYgbGluZUJveCwgTGluZUxvZ2ljYWxPcmRlckNhY2hlJiBjYWNoZSkKIHsKLSAgICBjYWNoZSA9
IG1ha2VMaW5lTG9naWNhbE9yZGVyQ2FjaGUobGluZSk7CisgICAgY2FjaGUgPSBtYWtlTGluZUxv
Z2ljYWxPcmRlckNhY2hlKGxpbmVCb3gpOwogCiAgICAgaWYgKGNhY2hlLT5ib3hlcy5pc0VtcHR5
KCkpCiAgICAgICAgIHJldHVybiB7IH07CkBAIC0xNjEsMTcgKzE2MSwxNyBAQCBMZWFmQm94SXRl
cmF0b3IgcHJldmlvdXNMZWFmT25MaW5lSW5Mb2dpY2FsT3JkZXIoY29uc3QgTGVhZkJveEl0ZXJh
dG9yJiBib3gsIExpbgogICAgIHJldHVybiBjYWNoZS0+Ym94ZXNbY2FjaGUtPmluZGV4XTsKIH0K
IAotTGVhZkJveEl0ZXJhdG9yIGZpcnN0TGVhZk9uTGluZUluTG9naWNhbE9yZGVyV2l0aE5vZGUo
Y29uc3QgTGluZUl0ZXJhdG9yJiBsaW5lLCBMaW5lTG9naWNhbE9yZGVyQ2FjaGUmIGNhY2hlKQor
TGVhZkJveEl0ZXJhdG9yIGZpcnN0TGVhZk9uTGluZUluTG9naWNhbE9yZGVyV2l0aE5vZGUoY29u
c3QgTGluZUJveEl0ZXJhdG9yJiBsaW5lQm94LCBMaW5lTG9naWNhbE9yZGVyQ2FjaGUmIGNhY2hl
KQogewotICAgIGF1dG8gYm94ID0gZmlyc3RMZWFmT25MaW5lSW5Mb2dpY2FsT3JkZXIobGluZSwg
Y2FjaGUpOworICAgIGF1dG8gYm94ID0gZmlyc3RMZWFmT25MaW5lSW5Mb2dpY2FsT3JkZXIobGlu
ZUJveCwgY2FjaGUpOwogICAgIHdoaWxlIChib3ggJiYgIWJveC0+cmVuZGVyZXIoKS5ub2RlKCkp
CiAgICAgICAgIGJveCA9IG5leHRMZWFmT25MaW5lSW5Mb2dpY2FsT3JkZXIoYm94LCBjYWNoZSk7
CiAgICAgcmV0dXJuIGJveDsKIH0KIAotTGVhZkJveEl0ZXJhdG9yIGxhc3RMZWFmT25MaW5lSW5M
b2dpY2FsT3JkZXJXaXRoTm9kZShjb25zdCBMaW5lSXRlcmF0b3ImIGxpbmUsIExpbmVMb2dpY2Fs
T3JkZXJDYWNoZSYgY2FjaGUpCitMZWFmQm94SXRlcmF0b3IgbGFzdExlYWZPbkxpbmVJbkxvZ2lj
YWxPcmRlcldpdGhOb2RlKGNvbnN0IExpbmVCb3hJdGVyYXRvciYgbGluZUJveCwgTGluZUxvZ2lj
YWxPcmRlckNhY2hlJiBjYWNoZSkKIHsKLSAgICBhdXRvIGJveCA9IGxhc3RMZWFmT25MaW5lSW5M
b2dpY2FsT3JkZXIobGluZSwgY2FjaGUpOworICAgIGF1dG8gYm94ID0gbGFzdExlYWZPbkxpbmVJ
bkxvZ2ljYWxPcmRlcihsaW5lQm94LCBjYWNoZSk7CiAgICAgd2hpbGUgKGJveCAmJiAhYm94LT5y
ZW5kZXJlcigpLm5vZGUoKSkKICAgICAgICAgYm94ID0gcHJldmlvdXNMZWFmT25MaW5lSW5Mb2dp
Y2FsT3JkZXIoYm94LCBjYWNoZSk7CiAgICAgcmV0dXJuIGJveDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRvckxvZ2ljYWxPcmRlclRy
YXZlcnNhbC5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJh
dG9yTG9naWNhbE9yZGVyVHJhdmVyc2FsLmgKaW5kZXggMjgwNjk4NzA0Njc3OTAxYjExYWE5NDg0
YjIwOWJiODAxNzY2NDk0My4uYjVhZjA0MGJkM2ZmMDMyZDM4MTgxM2Q3Njk2ZTQ1YTVlYzQxODdm
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0
ZXJhdG9yTG9naWNhbE9yZGVyVHJhdmVyc2FsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yTG9naWNhbE9yZGVyVHJhdmVyc2FsLmgKQEAgLTI1
LDcgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJJbmxpbmVJdGVyYXRvckxp
bmUuaCIKKyNpbmNsdWRlICJJbmxpbmVJdGVyYXRvckxpbmVCb3guaCIKICNpbmNsdWRlICJJbmxp
bmVJdGVyYXRvclRleHRCb3guaCIKICNpbmNsdWRlICJSZW5kZXJCbG9ja0Zsb3cuaCIKIApAQCAt
NDYsMzUgKzQ2LDM1IEBAIFRleHRCb3hJdGVyYXRvciBuZXh0VGV4dEJveEluTG9naWNhbE9yZGVy
KGNvbnN0IFRleHRCb3hJdGVyYXRvciYsIFRleHRMb2dpY2FsT3JkCiBzdHJ1Y3QgTGluZUxvZ2lj
YWxPcmRlckNhY2hlRGF0YSB7CiAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwog
Ci0gICAgTGluZUl0ZXJhdG9yIGxpbmU7CisgICAgTGluZUJveEl0ZXJhdG9yIGxpbmVCb3g7CiAg
ICAgVmVjdG9yPExlYWZCb3hJdGVyYXRvcj4gYm94ZXM7CiAgICAgc2l6ZV90IGluZGV4IHsgMCB9
OwogfTsKIHVzaW5nIExpbmVMb2dpY2FsT3JkZXJDYWNoZSA9IHN0ZDo6dW5pcXVlX3B0cjxMaW5l
TG9naWNhbE9yZGVyQ2FjaGVEYXRhPjsKIAotTGVhZkJveEl0ZXJhdG9yIGZpcnN0TGVhZk9uTGlu
ZUluTG9naWNhbE9yZGVyKGNvbnN0IExpbmVJdGVyYXRvciYsIExpbmVMb2dpY2FsT3JkZXJDYWNo
ZSYpOwotTGVhZkJveEl0ZXJhdG9yIGxhc3RMZWFmT25MaW5lSW5Mb2dpY2FsT3JkZXIoY29uc3Qg
TGluZUl0ZXJhdG9yJiwgTGluZUxvZ2ljYWxPcmRlckNhY2hlJik7CitMZWFmQm94SXRlcmF0b3Ig
Zmlyc3RMZWFmT25MaW5lSW5Mb2dpY2FsT3JkZXIoY29uc3QgTGluZUJveEl0ZXJhdG9yJiwgTGlu
ZUxvZ2ljYWxPcmRlckNhY2hlJik7CitMZWFmQm94SXRlcmF0b3IgbGFzdExlYWZPbkxpbmVJbkxv
Z2ljYWxPcmRlcihjb25zdCBMaW5lQm94SXRlcmF0b3ImLCBMaW5lTG9naWNhbE9yZGVyQ2FjaGUm
KTsKIExlYWZCb3hJdGVyYXRvciBuZXh0TGVhZk9uTGluZUluTG9naWNhbE9yZGVyKGNvbnN0IExl
YWZCb3hJdGVyYXRvciYsIExpbmVMb2dpY2FsT3JkZXJDYWNoZSYpOwogTGVhZkJveEl0ZXJhdG9y
IHByZXZpb3VzTGVhZk9uTGluZUluTG9naWNhbE9yZGVyKGNvbnN0IExlYWZCb3hJdGVyYXRvciYs
IExpbmVMb2dpY2FsT3JkZXJDYWNoZSYpOwogCi1MZWFmQm94SXRlcmF0b3IgZmlyc3RMZWFmT25M
aW5lSW5Mb2dpY2FsT3JkZXJXaXRoTm9kZShjb25zdCBMaW5lSXRlcmF0b3ImLCBMaW5lTG9naWNh
bE9yZGVyQ2FjaGUmKTsKLUxlYWZCb3hJdGVyYXRvciBsYXN0TGVhZk9uTGluZUluTG9naWNhbE9y
ZGVyV2l0aE5vZGUoY29uc3QgTGluZUl0ZXJhdG9yJiwgTGluZUxvZ2ljYWxPcmRlckNhY2hlJik7
CitMZWFmQm94SXRlcmF0b3IgZmlyc3RMZWFmT25MaW5lSW5Mb2dpY2FsT3JkZXJXaXRoTm9kZShj
b25zdCBMaW5lQm94SXRlcmF0b3ImLCBMaW5lTG9naWNhbE9yZGVyQ2FjaGUmKTsKK0xlYWZCb3hJ
dGVyYXRvciBsYXN0TGVhZk9uTGluZUluTG9naWNhbE9yZGVyV2l0aE5vZGUoY29uc3QgTGluZUJv
eEl0ZXJhdG9yJiwgTGluZUxvZ2ljYWxPcmRlckNhY2hlJik7CiAKIHRlbXBsYXRlPHR5cGVuYW1l
IFJldmVyc2VGdW5jdGlvbj4KLVZlY3RvcjxMZWFmQm94SXRlcmF0b3I+IGxlYWZCb3hlc0luTG9n
aWNhbE9yZGVyKGNvbnN0IExpbmVJdGVyYXRvciYgbGluZSwgUmV2ZXJzZUZ1bmN0aW9uJiYgcmV2
ZXJzZUZ1bmN0aW9uKQorVmVjdG9yPExlYWZCb3hJdGVyYXRvcj4gbGVhZkJveGVzSW5Mb2dpY2Fs
T3JkZXIoY29uc3QgTGluZUJveEl0ZXJhdG9yJiBsaW5lQm94LCBSZXZlcnNlRnVuY3Rpb24mJiBy
ZXZlcnNlRnVuY3Rpb24pCiB7CiAgICAgVmVjdG9yPExlYWZCb3hJdGVyYXRvcj4gYm94ZXM7CiAK
ICAgICB1bnNpZ25lZCBjaGFyIG1pbkxldmVsID0gMTI4OwogICAgIHVuc2lnbmVkIGNoYXIgbWF4
TGV2ZWwgPSAwOwogCi0gICAgZm9yIChhdXRvIGJveCA9IGxpbmUtPmZpcnN0TGVhZkJveCgpOyBi
b3g7IGJveCA9IGJveC50cmF2ZXJzZU5leHRPbkxpbmUoKSkgeworICAgIGZvciAoYXV0byBib3gg
PSBsaW5lQm94LT5maXJzdExlYWZCb3goKTsgYm94OyBib3ggPSBib3gudHJhdmVyc2VOZXh0T25M
aW5lKCkpIHsKICAgICAgICAgbWluTGV2ZWwgPSBzdGQ6Om1pbihtaW5MZXZlbCwgYm94LT5iaWRp
TGV2ZWwoKSk7CiAgICAgICAgIG1heExldmVsID0gc3RkOjptYXgobWF4TGV2ZWwsIGJveC0+Ymlk
aUxldmVsKCkpOwogICAgICAgICBib3hlcy5hcHBlbmQoYm94KTsKICAgICB9CiAKLSAgICBpZiAo
bGluZS0+Y29udGFpbmluZ0Jsb2NrKCkuc3R5bGUoKS5ydGxPcmRlcmluZygpID09IE9yZGVyOjpW
aXN1YWwpCisgICAgaWYgKGxpbmVCb3gtPmNvbnRhaW5pbmdCbG9jaygpLnN0eWxlKCkucnRsT3Jk
ZXJpbmcoKSA9PSBPcmRlcjo6VmlzdWFsKQogICAgICAgICByZXR1cm4gYm94ZXM7CiAKICAgICAv
LyBSZXZlcnNlIG9mIHJlb3JkZXJpbmcgb2YgdGhlIGxpbmUgKEwyIGFjY29yZGluZyB0byBCaWRp
IHNwZWMpOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0lu
bGluZUl0ZXJhdG9yVGV4dEJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRp
b24vSW5saW5lSXRlcmF0b3JUZXh0Qm94LmNwcAppbmRleCA1OTZiYWMyZjVkY2MxZjMxNzczNGYz
M2U4YzRhODlmN2I0OGFiNDQ0Li40ZGEyZGY4NmQyMGQyZjE4OTk5ZjFlMzRjNGNlODA3M2I4N2Ew
OTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5saW5l
SXRlcmF0b3JUZXh0Qm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRp
b24vSW5saW5lSXRlcmF0b3JUZXh0Qm94LmNwcApAQCAtMjYsNyArMjYsNyBAQAogI2luY2x1ZGUg
ImNvbmZpZy5oIgogI2luY2x1ZGUgIklubGluZUl0ZXJhdG9yVGV4dEJveC5oIgogCi0jaW5jbHVk
ZSAiSW5saW5lSXRlcmF0b3JMaW5lLmgiCisjaW5jbHVkZSAiSW5saW5lSXRlcmF0b3JMaW5lQm94
LmgiCiAjaW5jbHVkZSAiTGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0LmgiCiAjaW5jbHVkZSAi
TGluZVNlbGVjdGlvbi5oIgogI2luY2x1ZGUgIlJlbmRlckNvbWJpbmVUZXh0LmgiCkBAIC00Niw3
ICs0Niw3IEBAIExheW91dFJlY3QgVGV4dEJveDo6c2VsZWN0aW9uUmVjdCh1bnNpZ25lZCByYW5n
ZVN0YXJ0LCB1bnNpZ25lZCByYW5nZUVuZCkgY29uc3QKICAgICBpZiAoY2xhbXBlZFN0YXJ0ID49
IGNsYW1wZWRFbmQgJiYgIShyYW5nZVN0YXJ0ID09IHJhbmdlRW5kICYmIHJhbmdlU3RhcnQgPj0g
c3RhcnQoKSAmJiByYW5nZVN0YXJ0IDw9IGVuZCgpKSkKICAgICAgICAgcmV0dXJuIHsgfTsKIAot
ICAgIGF1dG8gbGluZVNlbGVjdGlvblJlY3QgPSBMaW5lU2VsZWN0aW9uOjpsb2dpY2FsUmVjdCgq
bGluZSgpKTsKKyAgICBhdXRvIGxpbmVTZWxlY3Rpb25SZWN0ID0gTGluZVNlbGVjdGlvbjo6bG9n
aWNhbFJlY3QoKmxpbmVCb3goKSk7CiAgICAgYXV0byBzZWxlY3Rpb25SZWN0ID0gTGF5b3V0UmVj
dCB7IGxvZ2ljYWxMZWZ0KCksIGxpbmVTZWxlY3Rpb25SZWN0LnkoKSwgbG9naWNhbFdpZHRoKCks
IGxpbmVTZWxlY3Rpb25SZWN0LmhlaWdodCgpIH07CiAKICAgICBUZXh0UnVuIHRleHRSdW4gPSBj
cmVhdGVUZXh0UnVuKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdy
YXRpb24vTGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQuY3BwCmluZGV4IDdh
ZGVjMjE2NTM3MTBlNjNiYjRmYmUxYTYwMzQ2NThlM2Q1MjM2NDYuLjJhODYwNDlhZDg3ZmViN2Mx
NjUwZTI1N2RlOWUyMmVkMzcyZTBiODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQu
Y3BwCkBAIC02MjAsMjAgKzYyMCwyMCBAQCBJbmxpbmVJdGVyYXRvcjo6SW5saW5lQm94SXRlcmF0
b3IgTGluZUxheW91dDo6Zmlyc3RSb290SW5saW5lQm94KCkgY29uc3QKICAgICByZXR1cm4gSW5s
aW5lSXRlcmF0b3I6OmlubGluZUJveEZvcigqbV9pbmxpbmVDb250ZW50LCBtX2lubGluZUNvbnRl
bnQtPmJveGVzWzBdKTsKIH0KIAotSW5saW5lSXRlcmF0b3I6OkxpbmVJdGVyYXRvciBMaW5lTGF5
b3V0OjpmaXJzdExpbmUoKSBjb25zdAorSW5saW5lSXRlcmF0b3I6OkxpbmVCb3hJdGVyYXRvciBM
aW5lTGF5b3V0OjpmaXJzdExpbmVCb3goKSBjb25zdAogewogICAgIGlmICghbV9pbmxpbmVDb250
ZW50KQogICAgICAgICByZXR1cm4geyB9OwogCi0gICAgcmV0dXJuIHsgSW5saW5lSXRlcmF0b3I6
OkxpbmVJdGVyYXRvck1vZGVyblBhdGgoKm1faW5saW5lQ29udGVudCwgMCkgfTsKKyAgICByZXR1
cm4geyBJbmxpbmVJdGVyYXRvcjo6TGluZUJveEl0ZXJhdG9yTW9kZXJuUGF0aCgqbV9pbmxpbmVD
b250ZW50LCAwKSB9OwogfQogCi1JbmxpbmVJdGVyYXRvcjo6TGluZUl0ZXJhdG9yIExpbmVMYXlv
dXQ6Omxhc3RMaW5lKCkgY29uc3QKK0lubGluZUl0ZXJhdG9yOjpMaW5lQm94SXRlcmF0b3IgTGlu
ZUxheW91dDo6bGFzdExpbmVCb3goKSBjb25zdAogewogICAgIGlmICghbV9pbmxpbmVDb250ZW50
KQogICAgICAgICByZXR1cm4geyB9OwogCi0gICAgcmV0dXJuIHsgSW5saW5lSXRlcmF0b3I6Okxp
bmVJdGVyYXRvck1vZGVyblBhdGgoKm1faW5saW5lQ29udGVudCwgbV9pbmxpbmVDb250ZW50LT5s
aW5lcy5pc0VtcHR5KCkgPyAwIDogbV9pbmxpbmVDb250ZW50LT5saW5lcy5zaXplKCkgLSAxKSB9
OworICAgIHJldHVybiB7IElubGluZUl0ZXJhdG9yOjpMaW5lQm94SXRlcmF0b3JNb2Rlcm5QYXRo
KCptX2lubGluZUNvbnRlbnQsIG1faW5saW5lQ29udGVudC0+bGluZXMuaXNFbXB0eSgpID8gMCA6
IG1faW5saW5lQ29udGVudC0+bGluZXMuc2l6ZSgpIC0gMSkgfTsKIH0KIAogTGF5b3V0UmVjdCBM
aW5lTGF5b3V0OjpmaXJzdElubGluZUJveFJlY3QoY29uc3QgUmVuZGVySW5saW5lJiByZW5kZXJJ
bmxpbmUpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRp
b24vTGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0LmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
aW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0LmgKaW5kZXggNjIyMjgxY2Jk
OTY3MzU3MTg1MDI1NzkyNmNjMzZiMzY0NDc1NGM0My4uNzM2N2NlMzViNzg3MDEyYjcxMWMzYmI1
MTMzNGJjMmZkNTE3MDU2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVn
cmF0aW9uL0xheW91dEludGVncmF0aW9uTGluZUxheW91dC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQuaApAQCAtMjks
NyArMjksNyBAQAogCiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCiAjaW5jbHVkZSAiSW5saW5lSXRl
cmF0b3JJbmxpbmVCb3guaCIKLSNpbmNsdWRlICJJbmxpbmVJdGVyYXRvckxpbmUuaCIKKyNpbmNs
dWRlICJJbmxpbmVJdGVyYXRvckxpbmVCb3guaCIKICNpbmNsdWRlICJJbmxpbmVJdGVyYXRvclRl
eHRCb3guaCIKICNpbmNsdWRlICJMYXlvdXRJbnRlZ3JhdGlvbkJveFRyZWUuaCIKICNpbmNsdWRl
ICJMYXlvdXRQb2ludC5oIgpAQCAtMTExLDggKzExMSw4IEBAIHB1YmxpYzoKICAgICBJbmxpbmVJ
dGVyYXRvcjo6TGVhZkJveEl0ZXJhdG9yIGJveEZvcihjb25zdCBSZW5kZXJFbGVtZW50JikgY29u
c3Q7CiAgICAgSW5saW5lSXRlcmF0b3I6OklubGluZUJveEl0ZXJhdG9yIGZpcnN0SW5saW5lQm94
Rm9yKGNvbnN0IFJlbmRlcklubGluZSYpIGNvbnN0OwogICAgIElubGluZUl0ZXJhdG9yOjpJbmxp
bmVCb3hJdGVyYXRvciBmaXJzdFJvb3RJbmxpbmVCb3goKSBjb25zdDsKLSAgICBJbmxpbmVJdGVy
YXRvcjo6TGluZUl0ZXJhdG9yIGZpcnN0TGluZSgpIGNvbnN0OwotICAgIElubGluZUl0ZXJhdG9y
OjpMaW5lSXRlcmF0b3IgbGFzdExpbmUoKSBjb25zdDsKKyAgICBJbmxpbmVJdGVyYXRvcjo6TGlu
ZUJveEl0ZXJhdG9yIGZpcnN0TGluZUJveCgpIGNvbnN0OworICAgIElubGluZUl0ZXJhdG9yOjpM
aW5lQm94SXRlcmF0b3IgbGFzdExpbmVCb3goKSBjb25zdDsKIAogICAgIExheW91dFJlY3QgZmly
c3RJbmxpbmVCb3hSZWN0KGNvbnN0IFJlbmRlcklubGluZSYpIGNvbnN0OwogICAgIExheW91dFJl
Y3QgZW5jbG9zaW5nQm9yZGVyQm94UmVjdEZvcihjb25zdCBSZW5kZXJJbmxpbmUmKSBjb25zdDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MaW5lU2VsZWN0
aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGluZVNlbGVjdGlvbi5o
CmluZGV4IGMzMmY2Zjk1NWIxNWM2ZGE4OGFhNjU3OTRjNzQ2NTIzODg5OTRlY2EuLmRmZjY5OWUx
ZjY3YzllNzg3ZWEzYzBiOWEyY2Q3Mjk5MDViNGFhOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MaW5lU2VsZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2ludGVncmF0aW9uL0xpbmVTZWxlY3Rpb24uaApAQCAtMjUsNDQgKzI1LDQ0IEBA
CiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiSW5saW5lSXRlcmF0b3JMaW5lLmgiCisjaW5j
bHVkZSAiSW5saW5lSXRlcmF0b3JMaW5lQm94LmgiCiAjaW5jbHVkZSAiUmVuZGVyQmxvY2tGbG93
LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTGluZVNlbGVjdGlvbiB7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIGZsb2F0IGxvZ2ljYWxUb3AoY29uc3QgSW5saW5lSXRlcmF0b3I6Okxp
bmUmIGxpbmUpIHsgcmV0dXJuIGxpbmUuY29udGVudExvZ2ljYWxUb3BBZGp1c3RlZEZvclByZWNl
ZGluZ0xpbmUoKTsgfQotICAgIHN0YXRpYyBmbG9hdCBsb2dpY2FsQm90dG9tKGNvbnN0IElubGlu
ZUl0ZXJhdG9yOjpMaW5lJiBsaW5lKSB7IHJldHVybiBsaW5lLmNvbnRlbnRMb2dpY2FsQm90dG9t
QWRqdXN0ZWRGb3JGb2xsb3dpbmdMaW5lKCk7IH0KKyAgICBzdGF0aWMgZmxvYXQgbG9naWNhbFRv
cChjb25zdCBJbmxpbmVJdGVyYXRvcjo6TGluZUJveCYgbGluZUJveCkgeyByZXR1cm4gbGluZUJv
eC5jb250ZW50TG9naWNhbFRvcEFkanVzdGVkRm9yUHJlY2VkaW5nTGluZUJveCgpOyB9CisgICAg
c3RhdGljIGZsb2F0IGxvZ2ljYWxCb3R0b20oY29uc3QgSW5saW5lSXRlcmF0b3I6OkxpbmVCb3gm
IGxpbmVCb3gpIHsgcmV0dXJuIGxpbmVCb3guY29udGVudExvZ2ljYWxCb3R0b21BZGp1c3RlZEZv
ckZvbGxvd2luZ0xpbmVCb3goKTsgfQogCi0gICAgc3RhdGljIEZsb2F0UmVjdCBsb2dpY2FsUmVj
dChjb25zdCBJbmxpbmVJdGVyYXRvcjo6TGluZSYgbGluZSkKKyAgICBzdGF0aWMgRmxvYXRSZWN0
IGxvZ2ljYWxSZWN0KGNvbnN0IElubGluZUl0ZXJhdG9yOjpMaW5lQm94JiBsaW5lQm94KQogICAg
IHsKLSAgICAgICAgcmV0dXJuIHsgRmxvYXRQb2ludCB7IGxpbmUuY29udGVudExvZ2ljYWxMZWZ0
KCksIGxpbmUuY29udGVudExvZ2ljYWxUb3BBZGp1c3RlZEZvclByZWNlZGluZ0xpbmUoKSB9LCBG
bG9hdFBvaW50IHsgbGluZS5jb250ZW50TG9naWNhbFJpZ2h0KCksIGxpbmUuY29udGVudExvZ2lj
YWxCb3R0b21BZGp1c3RlZEZvckZvbGxvd2luZ0xpbmUoKSB9IH07CisgICAgICAgIHJldHVybiB7
IEZsb2F0UG9pbnQgeyBsaW5lQm94LmNvbnRlbnRMb2dpY2FsTGVmdCgpLCBsaW5lQm94LmNvbnRl
bnRMb2dpY2FsVG9wQWRqdXN0ZWRGb3JQcmVjZWRpbmdMaW5lQm94KCkgfSwgRmxvYXRQb2ludCB7
IGxpbmVCb3guY29udGVudExvZ2ljYWxSaWdodCgpLCBsaW5lQm94LmNvbnRlbnRMb2dpY2FsQm90
dG9tQWRqdXN0ZWRGb3JGb2xsb3dpbmdMaW5lQm94KCkgfSB9OwogICAgIH0KIAotICAgIHN0YXRp
YyBGbG9hdFJlY3QgcGh5c2ljYWxSZWN0KGNvbnN0IElubGluZUl0ZXJhdG9yOjpMaW5lJiBsaW5l
KQorICAgIHN0YXRpYyBGbG9hdFJlY3QgcGh5c2ljYWxSZWN0KGNvbnN0IElubGluZUl0ZXJhdG9y
OjpMaW5lQm94JiBsaW5lQm94KQogICAgIHsKLSAgICAgICAgYXV0byBwaHlzaWNhbFJlY3QgPSBs
b2dpY2FsUmVjdChsaW5lKTsKLSAgICAgICAgaWYgKCFsaW5lLmlzSG9yaXpvbnRhbCgpKQorICAg
ICAgICBhdXRvIHBoeXNpY2FsUmVjdCA9IGxvZ2ljYWxSZWN0KGxpbmVCb3gpOworICAgICAgICBp
ZiAoIWxpbmVCb3guaXNIb3Jpem9udGFsKCkpCiAgICAgICAgICAgICBwaHlzaWNhbFJlY3QgPSBw
aHlzaWNhbFJlY3QudHJhbnNwb3NlZFJlY3QoKTsKLSAgICAgICAgbGluZS5jb250YWluaW5nQmxv
Y2soKS5mbGlwRm9yV3JpdGluZ01vZGUocGh5c2ljYWxSZWN0KTsKKyAgICAgICAgbGluZUJveC5j
b250YWluaW5nQmxvY2soKS5mbGlwRm9yV3JpdGluZ01vZGUocGh5c2ljYWxSZWN0KTsKICAgICAg
ICAgcmV0dXJuIHBoeXNpY2FsUmVjdDsKICAgICB9CiAKLSAgICBzdGF0aWMgZmxvYXQgbG9naWNh
bFRvcEFkanVzdGVkRm9yUHJlY2VkaW5nQmxvY2soY29uc3QgSW5saW5lSXRlcmF0b3I6OkxpbmUm
IGxpbmUpCisgICAgc3RhdGljIGZsb2F0IGxvZ2ljYWxUb3BBZGp1c3RlZEZvclByZWNlZGluZ0Js
b2NrKGNvbnN0IElubGluZUl0ZXJhdG9yOjpMaW5lQm94JiBsaW5lQm94KQogICAgIHsKICAgICAg
ICAgLy8gRklYTUU6IE1vdmUgYWRqdXN0RW5jbG9zaW5nVG9wRm9yUHJlY2VkaW5nQmxvY2sgZnJv
bSBSZW5kZXJCbG9ja0Zsb3cgdG8gaGVyZS4KLSAgICAgICAgcmV0dXJuIGxpbmUuY29udGFpbmlu
Z0Jsb2NrKCkuYWRqdXN0RW5jbG9zaW5nVG9wRm9yUHJlY2VkaW5nQmxvY2soTGF5b3V0VW5pdCB7
IGxpbmUuY29udGVudExvZ2ljYWxUb3BBZGp1c3RlZEZvclByZWNlZGluZ0xpbmUoKSB9KTsKKyAg
ICAgICAgcmV0dXJuIGxpbmVCb3guY29udGFpbmluZ0Jsb2NrKCkuYWRqdXN0RW5jbG9zaW5nVG9w
Rm9yUHJlY2VkaW5nQmxvY2soTGF5b3V0VW5pdCB7IGxpbmVCb3guY29udGVudExvZ2ljYWxUb3BB
ZGp1c3RlZEZvclByZWNlZGluZ0xpbmVCb3goKSB9KTsKICAgICB9CiAKLSAgICBzdGF0aWMgUmVu
ZGVyT2JqZWN0OjpIaWdobGlnaHRTdGF0ZSBzZWxlY3Rpb25TdGF0ZShjb25zdCBJbmxpbmVJdGVy
YXRvcjo6TGluZSYgbGluZSkKKyAgICBzdGF0aWMgUmVuZGVyT2JqZWN0OjpIaWdobGlnaHRTdGF0
ZSBzZWxlY3Rpb25TdGF0ZShjb25zdCBJbmxpbmVJdGVyYXRvcjo6TGluZUJveCYgbGluZUJveCkK
ICAgICB7Ci0gICAgICAgIGF1dG8mIGJsb2NrID0gbGluZS5jb250YWluaW5nQmxvY2soKTsKKyAg
ICAgICAgYXV0byYgYmxvY2sgPSBsaW5lQm94LmNvbnRhaW5pbmdCbG9jaygpOwogICAgICAgICBp
ZiAoYmxvY2suc2VsZWN0aW9uU3RhdGUoKSA9PSBSZW5kZXJPYmplY3Q6OkhpZ2hsaWdodFN0YXRl
OjpOb25lKQogICAgICAgICAgICAgcmV0dXJuIFJlbmRlck9iamVjdDo6SGlnaGxpZ2h0U3RhdGU6
Ok5vbmU7CiAKICAgICAgICAgYXV0byBsaW5lU3RhdGUgPSBSZW5kZXJPYmplY3Q6OkhpZ2hsaWdo
dFN0YXRlOjpOb25lOwotICAgICAgICBmb3IgKGF1dG8gYm94ID0gbGluZS5maXJzdExlYWZCb3go
KTsgYm94OyBib3gudHJhdmVyc2VOZXh0T25MaW5lKCkpIHsKKyAgICAgICAgZm9yIChhdXRvIGJv
eCA9IGxpbmVCb3guZmlyc3RMZWFmQm94KCk7IGJveDsgYm94LnRyYXZlcnNlTmV4dE9uTGluZSgp
KSB7CiAgICAgICAgICAgICBhdXRvIGJveFN0YXRlID0gYm94LT5zZWxlY3Rpb25TdGF0ZSgpOwog
ICAgICAgICAgICAgaWYgKGxpbmVTdGF0ZSA9PSBSZW5kZXJPYmplY3Q6OkhpZ2hsaWdodFN0YXRl
OjpOb25lKQogICAgICAgICAgICAgICAgIGxpbmVTdGF0ZSA9IGJveFN0YXRlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NhcmV0UmVjdENvbXB1dGF0aW9uLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DYXJldFJlY3RDb21wdXRhdGlvbi5jcHAKaW5kZXggMjll
YzkxNmRlYzdmYzc1ZjJlZWRkNGE0MThmYjRmYjYxNTZlMmY2Yy4uOWI0OTc1NjExYmY5N2VlOTU1
MjFjYTYwZmY4MmQ4OWI2NGJmOWE3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0NhcmV0UmVjdENvbXB1dGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvQ2FyZXRSZWN0Q29tcHV0YXRpb24uY3BwCkBAIC0yNyw3ICsyNyw3IEBACiAjaW5jbHVkZSAi
Q2FyZXRSZWN0Q29tcHV0YXRpb24uaCIKIAogI2luY2x1ZGUgIkVkaXRpbmcuaCIKLSNpbmNsdWRl
ICJJbmxpbmVJdGVyYXRvckxpbmUuaCIKKyNpbmNsdWRlICJJbmxpbmVJdGVyYXRvckxpbmVCb3gu
aCIKICNpbmNsdWRlICJJbmxpbmVJdGVyYXRvclRleHRCb3guaCIKICNpbmNsdWRlICJMaW5lU2Vs
ZWN0aW9uLmgiCiAjaW5jbHVkZSAiUmVuZGVyQmxvY2tGbG93LmgiCkBAIC0xMTAsMTAgKzExMCwx
MCBAQCBzdGF0aWMgTGF5b3V0UmVjdCBjb21wdXRlQ2FyZXRSZWN0Rm9yRW1wdHlFbGVtZW50KGNv
bnN0IFJlbmRlckJveE1vZGVsT2JqZWN0JiByZQogICAgIHJldHVybiBjdXJyZW50U3R5bGUuaXNI
b3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IHJlY3QgOiByZWN0LnRyYW5zcG9zZWRSZWN0KCk7CiB9
CiAKLXN0YXRpYyBMYXlvdXRSZWN0IGNvbXB1dGVDYXJldFJlY3RGb3JMaW5lUG9zaXRpb24oY29u
c3QgSW5saW5lSXRlcmF0b3I6OkxpbmVJdGVyYXRvciYgbGluZSwgZmxvYXQgbG9naWNhbExlZnRQ
b3NpdGlvbiwgQ2FyZXRSZWN0TW9kZSBjYXJldFJlY3RNb2RlKQorc3RhdGljIExheW91dFJlY3Qg
Y29tcHV0ZUNhcmV0UmVjdEZvckxpbmVQb3NpdGlvbihjb25zdCBJbmxpbmVJdGVyYXRvcjo6TGlu
ZUJveEl0ZXJhdG9yJiBsaW5lQm94LCBmbG9hdCBsb2dpY2FsTGVmdFBvc2l0aW9uLCBDYXJldFJl
Y3RNb2RlIGNhcmV0UmVjdE1vZGUpCiB7Ci0gICAgYXV0byYgY29udGFpbmluZ0Jsb2NrID0gbGlu
ZS0+Y29udGFpbmluZ0Jsb2NrKCk7Ci0gICAgYXV0byBsaW5lU2VsZWN0aW9uUmVjdCA9IExpbmVT
ZWxlY3Rpb246OmxvZ2ljYWxSZWN0KCpsaW5lKTsKKyAgICBhdXRvJiBjb250YWluaW5nQmxvY2sg
PSBsaW5lQm94LT5jb250YWluaW5nQmxvY2soKTsKKyAgICBhdXRvIGxpbmVTZWxlY3Rpb25SZWN0
ID0gTGluZVNlbGVjdGlvbjo6bG9naWNhbFJlY3QoKmxpbmVCb3gpOwogCiAgICAgaW50IGhlaWdo
dCA9IGxpbmVTZWxlY3Rpb25SZWN0LmhlaWdodCgpOwogICAgIGludCB0b3AgPSBsaW5lU2VsZWN0
aW9uUmVjdC55KCk7CkBAIC0xNzMsMTAgKzE3MywxMCBAQCBzdGF0aWMgTGF5b3V0UmVjdCBjb21w
dXRlQ2FyZXRSZWN0Rm9yVGV4dChjb25zdCBJbmxpbmVCb3hBbmRPZmZzZXQmIGJveEFuZE9mZnNl
dAogICAgICAgICByZXR1cm4geyB9OwogCiAgICAgYXV0byYgdGV4dEJveCA9IGRvd25jYXN0PElu
bGluZUl0ZXJhdG9yOjpUZXh0Qm94SXRlcmF0b3I+KGJveEFuZE9mZnNldC5ib3gpOwotICAgIGF1
dG8gbGluZSA9IHRleHRCb3gtPmxpbmUoKTsKKyAgICBhdXRvIGxpbmVCb3ggPSB0ZXh0Qm94LT5s
aW5lQm94KCk7CiAKICAgICBmbG9hdCBwb3NpdGlvbiA9IHRleHRCb3gtPnBvc2l0aW9uRm9yT2Zm
c2V0KGJveEFuZE9mZnNldC5vZmZzZXQpOwotICAgIHJldHVybiBjb21wdXRlQ2FyZXRSZWN0Rm9y
TGluZVBvc2l0aW9uKGxpbmUsIHBvc2l0aW9uLCBjYXJldFJlY3RNb2RlKTsKKyAgICByZXR1cm4g
Y29tcHV0ZUNhcmV0UmVjdEZvckxpbmVQb3NpdGlvbihsaW5lQm94LCBwb3NpdGlvbiwgY2FyZXRS
ZWN0TW9kZSk7CiB9CiAKIHN0YXRpYyBMYXlvdXRSZWN0IGNvbXB1dGVDYXJldFJlY3RGb3JMaW5l
QnJlYWsoY29uc3QgSW5saW5lQm94QW5kT2Zmc2V0JiBib3hBbmRPZmZzZXQsIENhcmV0UmVjdE1v
ZGUgY2FyZXRSZWN0TW9kZSkKQEAgLTE4Niw4ICsxODYsOCBAQCBzdGF0aWMgTGF5b3V0UmVjdCBj
b21wdXRlQ2FyZXRSZWN0Rm9yTGluZUJyZWFrKGNvbnN0IElubGluZUJveEFuZE9mZnNldCYgYm94
QW5kTwogICAgIGlmICghYm94QW5kT2Zmc2V0LmJveCkKICAgICAgICAgcmV0dXJuIHsgfTsKIAot
ICAgIGF1dG8gbGluZSA9IGJveEFuZE9mZnNldC5ib3gtPmxpbmUoKTsKLSAgICByZXR1cm4gY29t
cHV0ZUNhcmV0UmVjdEZvckxpbmVQb3NpdGlvbihsaW5lLCBsaW5lLT5jb250ZW50TG9naWNhbExl
ZnQoKSwgY2FyZXRSZWN0TW9kZSk7CisgICAgYXV0byBsaW5lQm94ID0gYm94QW5kT2Zmc2V0LmJv
eC0+bGluZUJveCgpOworICAgIHJldHVybiBjb21wdXRlQ2FyZXRSZWN0Rm9yTGluZVBvc2l0aW9u
KGxpbmVCb3gsIGxpbmVCb3gtPmNvbnRlbnRMb2dpY2FsTGVmdCgpLCBjYXJldFJlY3RNb2RlKTsK
IH0KIAogc3RhdGljIExheW91dFJlY3QgY29tcHV0ZUNhcmV0UmVjdEZvclNWR0lubGluZVRleHQo
Y29uc3QgSW5saW5lQm94QW5kT2Zmc2V0JiBib3hBbmRPZmZzZXQsIENhcmV0UmVjdE1vZGUpCkBA
IC0yMjgsMTAgKzIyOCwxMCBAQCBzdGF0aWMgTGF5b3V0UmVjdCBjb21wdXRlQ2FyZXRSZWN0Rm9y
Qm94KGNvbnN0IFJlbmRlckJveCYgcmVuZGVyZXIsIGNvbnN0IElubGluZQogICAgICAgICByZWN0
Lm1vdmUoTGF5b3V0U2l6ZShyZW5kZXJlci53aWR0aCgpIC0gY2FyZXRXaWR0aCwgMF9sdSkpOwog
CiAgICAgaWYgKGJveEFuZE9mZnNldC5ib3gpIHsKLSAgICAgICAgYXV0byBsaW5lID0gYm94QW5k
T2Zmc2V0LmJveC0+bGluZSgpOwotICAgICAgICBhdXRvIHRvcCA9IGxpbmUtPmNvbnRlbnRMb2dp
Y2FsVG9wKCk7CisgICAgICAgIGF1dG8gbGluZUJveCA9IGJveEFuZE9mZnNldC5ib3gtPmxpbmVC
b3goKTsKKyAgICAgICAgYXV0byB0b3AgPSBsaW5lQm94LT5jb250ZW50TG9naWNhbFRvcCgpOwog
ICAgICAgICByZWN0LnNldFkodG9wKTsKLSAgICAgICAgcmVjdC5zZXRIZWlnaHQobGluZS0+Y29u
dGVudExvZ2ljYWxCb3R0b20oKSAtIHRvcCk7CisgICAgICAgIHJlY3Quc2V0SGVpZ2h0KGxpbmVC
b3gtPmNvbnRlbnRMb2dpY2FsQm90dG9tKCkgLSB0b3ApOwogICAgIH0KIAogICAgIC8vIElmIGhl
aWdodCBvZiBib3ggaXMgc21hbGxlciB0aGFuIGZvbnQgaGVpZ2h0LCB1c2UgdGhlIGxhdHRlciBv
bmUsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lQm94UGFpbnRl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lQm94UGFpbnRlci5jcHAKaW5k
ZXggMDdjNGRlZmNjZGNiODc4OTcwMDE4OTA2NzNmNjMzOWU5ZGFkYjE4Ni4uMWYzNzQzN2Q2MGY1
MmU2NjIwMmM5Mzk5OGM3NDNiZmZiOGFmNGMzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0lubGluZUJveFBhaW50ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9JbmxpbmVCb3hQYWludGVyLmNwcApAQCAtMjYsNyArMjYsNyBAQAogI2luY2x1ZGUgIklu
bGluZUJveFBhaW50ZXIuaCIKIAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgotI2luY2x1
ZGUgIklubGluZUl0ZXJhdG9yTGluZS5oIgorI2luY2x1ZGUgIklubGluZUl0ZXJhdG9yTGluZUJv
eC5oIgogI2luY2x1ZGUgIkxlZ2FjeUlubGluZUZsb3dCb3guaCIKICNpbmNsdWRlICJQYWludElu
Zm8uaCIKICNpbmNsdWRlICJSZW5kZXJCbG9ja0Zsb3cuaCIKQEAgLTUzLDcgKzUzLDcgQEAgSW5s
aW5lQm94UGFpbnRlcjo6SW5saW5lQm94UGFpbnRlcihjb25zdCBJbmxpbmVJdGVyYXRvcjo6SW5s
aW5lQm94JiBpbmxpbmVCb3gsIFAKICAgICAsIG1fcGFpbnRJbmZvKHBhaW50SW5mbykKICAgICAs
IG1fcGFpbnRPZmZzZXQocGFpbnRPZmZzZXQpCiAgICAgLCBtX3JlbmRlcmVyKG1faW5saW5lQm94
LnJlbmRlcmVyKCkpCi0gICAgLCBtX2lzRmlyc3RMaW5lKG1faW5saW5lQm94LmxpbmUoKS0+aXNG
aXJzdCgpKQorICAgICwgbV9pc0ZpcnN0TGluZUJveChtX2lubGluZUJveC5saW5lQm94KCktPmlz
Rmlyc3QoKSkKICAgICAsIG1faXNSb290SW5saW5lQm94KG1faW5saW5lQm94LmlzUm9vdElubGlu
ZUJveCgpKQogICAgICwgbV9pc0hvcml6b250YWwobV9pbmxpbmVCb3guaXNIb3Jpem9udGFsKCkp
CiB7CkBAIC0xNDEsNyArMTQxLDcgQEAgdm9pZCBJbmxpbmVCb3hQYWludGVyOjpwYWludE1hc2so
KQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBNb3ZlIHgveSB0byBvdXIgY29vcmRpbmF0ZXMu
Ci0gICAgYXV0byBsb2NhbFJlY3QgPSBMYXlvdXRSZWN0IHsgbV9pbmxpbmVCb3gudmlzdWFsUmVj
dChtX2lubGluZUJveC5saW5lKCktPmNvbnRhaW5pbmdCbG9jaygpLmxvZ2ljYWxIZWlnaHQoKSkg
fTsKKyAgICBhdXRvIGxvY2FsUmVjdCA9IExheW91dFJlY3QgeyBtX2lubGluZUJveC52aXN1YWxS
ZWN0KG1faW5saW5lQm94LmxpbmVCb3goKS0+Y29udGFpbmluZ0Jsb2NrKCkubG9naWNhbEhlaWdo
dCgpKSB9OwogICAgIExheW91dFBvaW50IGFkanVzdGVkUGFpbnRPZmZzZXQgPSBtX3BhaW50T2Zm
c2V0ICsgbG9jYWxSZWN0LmxvY2F0aW9uKCk7CiAKICAgICBjb25zdCBOaW5lUGllY2VJbWFnZSYg
bWFza05pbmVQaWVjZUltYWdlID0gcmVuZGVyZXIoKS5zdHlsZSgpLm1hc2tCb3hJbWFnZSgpOwpA
QCAtMjEzLDExICsyMTMsMTEgQEAgdm9pZCBJbmxpbmVCb3hQYWludGVyOjpwYWludERlY29yYXRp
b25zKCkKICAgICBhdXRvJiBzdHlsZSA9IHRoaXMtPnN0eWxlKCk7CiAgICAgLy8gWW91IGNhbiB1
c2UgcDo6Zmlyc3QtbGluZSB0byBzcGVjaWZ5IGEgYmFja2dyb3VuZC4gSWYgc28sIHRoZSByb290
IGlubGluZSBib3hlcyBmb3IKICAgICAvLyBhIGxpbmUgbWF5IGFjdHVhbGx5IGhhdmUgdG8gcGFp
bnQgYSBiYWNrZ3JvdW5kLgotICAgIGlmIChtX2lzUm9vdElubGluZUJveCAmJiAoIW1faXNGaXJz
dExpbmUgfHwgJnN0eWxlID09ICZyZW5kZXJlcigpLnN0eWxlKCkpKQorICAgIGlmIChtX2lzUm9v
dElubGluZUJveCAmJiAoIW1faXNGaXJzdExpbmVCb3ggfHwgJnN0eWxlID09ICZyZW5kZXJlcigp
LnN0eWxlKCkpKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBNb3ZlIHgveSB0byBvdXIgY29v
cmRpbmF0ZXMuCi0gICAgYXV0byBsb2NhbFJlY3QgPSBMYXlvdXRSZWN0IHsgbV9pbmxpbmVCb3gu
dmlzdWFsUmVjdChtX2lubGluZUJveC5saW5lKCktPmNvbnRhaW5pbmdCbG9jaygpLmxvZ2ljYWxI
ZWlnaHQoKSkgfTsKKyAgICBhdXRvIGxvY2FsUmVjdCA9IExheW91dFJlY3QgeyBtX2lubGluZUJv
eC52aXN1YWxSZWN0KG1faW5saW5lQm94LmxpbmVCb3goKS0+Y29udGFpbmluZ0Jsb2NrKCkubG9n
aWNhbEhlaWdodCgpKSB9OwogICAgIExheW91dFBvaW50IGFkanVzdGVkUGFpbnRvZmZzZXQgPSBt
X3BhaW50T2Zmc2V0ICsgbG9jYWxSZWN0LmxvY2F0aW9uKCk7CiAgICAgR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0ID0gbV9wYWludEluZm8uY29udGV4dCgpOwogICAgIExheW91dFJlY3QgcGFpbnRS
ZWN0ID0gTGF5b3V0UmVjdChhZGp1c3RlZFBhaW50b2Zmc2V0LCBsb2NhbFJlY3Quc2l6ZSgpKTsK
QEAgLTM1Nyw3ICszNTcsNyBAQCB2b2lkIElubGluZUJveFBhaW50ZXI6OnBhaW50Qm94U2hhZG93
KFNoYWRvd1N0eWxlIHNoYWRvd1N0eWxlLCBjb25zdCBMYXlvdXRSZWN0JgogCiBjb25zdCBSZW5k
ZXJTdHlsZSYgSW5saW5lQm94UGFpbnRlcjo6c3R5bGUoKSBjb25zdAogewotICAgIHJldHVybiBt
X2lzRmlyc3RMaW5lID8gcmVuZGVyZXIoKS5maXJzdExpbmVTdHlsZSgpIDogcmVuZGVyZXIoKS5z
dHlsZSgpOworICAgIHJldHVybiBtX2lzRmlyc3RMaW5lQm94ID8gcmVuZGVyZXIoKS5maXJzdExp
bmVTdHlsZSgpIDogcmVuZGVyZXIoKS5zdHlsZSgpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lQm94UGFpbnRlci5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0lubGluZUJveFBhaW50ZXIuaAppbmRleCAxZmQ1Yjg1YTdlM2U1ZmFiYTVkYjc0
ZDhmOTI2MGUxMzA3MWZjNTBiLi42ZDZkNjYzYWQ4MTM4MWUxNjlhZjFkNmE2YmVhYjE4YzAzMjRl
NGU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lQm94UGFpbnRl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVCb3hQYWludGVyLmgKQEAg
LTY3LDcgKzY3LDcgQEAgcHJpdmF0ZToKICAgICBQYWludEluZm8mIG1fcGFpbnRJbmZvOwogICAg
IGNvbnN0IExheW91dFBvaW50IG1fcGFpbnRPZmZzZXQ7CiAgICAgY29uc3QgUmVuZGVyQm94TW9k
ZWxPYmplY3QmIG1fcmVuZGVyZXI7Ci0gICAgY29uc3QgYm9vbCBtX2lzRmlyc3RMaW5lOworICAg
IGNvbnN0IGJvb2wgbV9pc0ZpcnN0TGluZUJveDsKICAgICBjb25zdCBib29sIG1faXNSb290SW5s
aW5lQm94OwogICAgIGNvbnN0IGJvb2wgbV9pc0hvcml6b250YWw7CiB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcAppbmRleCAxM2Y0ZjA3ZGRiOGNjNjZk
ZTg1MWM4NGZmNmJiYWZlY2MwOTVlMzMzLi42MDIwZmQyYWQxNTlhZTI3ODA2NzQ3MDgyNTM2MGYz
MThkZTljMzY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxv
Y2tGbG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93
LmNwcApAQCAtMzYsNyArMzYsNyBAQAogI2luY2x1ZGUgIkhpdFRlc3RMb2NhdGlvbi5oIgogI2lu
Y2x1ZGUgIklubGluZUl0ZXJhdG9yQm94LmgiCiAjaW5jbHVkZSAiSW5saW5lSXRlcmF0b3JJbmxp
bmVCb3guaCIKLSNpbmNsdWRlICJJbmxpbmVJdGVyYXRvckxpbmUuaCIKKyNpbmNsdWRlICJJbmxp
bmVJdGVyYXRvckxpbmVCb3guaCIKICNpbmNsdWRlICJJbmxpbmVJdGVyYXRvckxvZ2ljYWxPcmRl
clRyYXZlcnNhbC5oIgogI2luY2x1ZGUgIklubGluZUl0ZXJhdG9yVGV4dEJveC5oIgogI2luY2x1
ZGUgIklubGluZVdhbGtlci5oIgpAQCAtMzA2MSwxMiArMzA2MSwxMiBAQCBMYXlvdXRVbml0IFJl
bmRlckJsb2NrRmxvdzo6YWRqdXN0RW5jbG9zaW5nVG9wRm9yUHJlY2VkaW5nQmxvY2soTGF5b3V0
VW5pdCB0b3ApCiAgICAgaWYgKCFvZmZzZXRUb0Jsb2NrQmVmb3JlLmhlaWdodCgpKQogICAgICAg
ICByZXR1cm4gdG9wOwogCi0gICAgaWYgKGF1dG8gbGFzdExpbmUgPSBJbmxpbmVJdGVyYXRvcjo6
bGFzdExpbmVGb3IoKmJsb2NrQmVmb3JlKSkgewotICAgICAgICBhdXRvIGxhc3RMaW5lU2VsZWN0
aW9uU3RhdGUgPSBMaW5lU2VsZWN0aW9uOjpzZWxlY3Rpb25TdGF0ZSgqbGFzdExpbmUpOworICAg
IGlmIChhdXRvIGxhc3RMaW5lQm94ID0gSW5saW5lSXRlcmF0b3I6Omxhc3RMaW5lQm94Rm9yKCpi
bG9ja0JlZm9yZSkpIHsKKyAgICAgICAgYXV0byBsYXN0TGluZVNlbGVjdGlvblN0YXRlID0gTGlu
ZVNlbGVjdGlvbjo6c2VsZWN0aW9uU3RhdGUoKmxhc3RMaW5lQm94KTsKICAgICAgICAgaWYgKGxh
c3RMaW5lU2VsZWN0aW9uU3RhdGUgIT0gUmVuZGVyT2JqZWN0OjpIaWdobGlnaHRTdGF0ZTo6SW5z
aWRlICYmIGxhc3RMaW5lU2VsZWN0aW9uU3RhdGUgIT0gUmVuZGVyT2JqZWN0OjpIaWdobGlnaHRT
dGF0ZTo6U3RhcnQpCiAgICAgICAgICAgICByZXR1cm4gdG9wOwogCi0gICAgICAgIGF1dG8gbGFz
dExpbmVTZWxlY3Rpb25Cb3R0b20gPSBMaW5lU2VsZWN0aW9uOjpsb2dpY2FsQm90dG9tKCpsYXN0
TGluZSkgKyBvZmZzZXRUb0Jsb2NrQmVmb3JlLmhlaWdodCgpOworICAgICAgICBhdXRvIGxhc3RM
aW5lU2VsZWN0aW9uQm90dG9tID0gTGluZVNlbGVjdGlvbjo6bG9naWNhbEJvdHRvbSgqbGFzdExp
bmVCb3gpICsgb2Zmc2V0VG9CbG9ja0JlZm9yZS5oZWlnaHQoKTsKICAgICAgICAgdG9wID0gc3Rk
OjptYXgodG9wLCBMYXlvdXRVbml0IHsgbGFzdExpbmVTZWxlY3Rpb25Cb3R0b20gfSk7CiAgICAg
fQogICAgIHJldHVybiB0b3A7CkBAIC0zMDg3LDEyICszMDg3LDEyIEBAIEdhcFJlY3RzIFJlbmRl
ckJsb2NrRmxvdzo6aW5saW5lU2VsZWN0aW9uR2FwcyhSZW5kZXJCbG9jayYgcm9vdEJsb2NrLCBj
b25zdCBMYXlvCiAgICAgICAgIHJldHVybiB7IH07CiAgICAgfQogCi0gICAgYXV0byBoYXNTZWxl
Y3RlZENoaWxkcmVuID0gWyZdKGNvbnN0IElubGluZUl0ZXJhdG9yOjpMaW5lSXRlcmF0b3ImIGxp
bmUpIHsKLSAgICAgICAgcmV0dXJuIExpbmVTZWxlY3Rpb246OnNlbGVjdGlvblN0YXRlKCpsaW5l
KSAhPSBSZW5kZXJPYmplY3Q6OkhpZ2hsaWdodFN0YXRlOjpOb25lOworICAgIGF1dG8gaGFzU2Vs
ZWN0ZWRDaGlsZHJlbiA9IFsmXShjb25zdCBJbmxpbmVJdGVyYXRvcjo6TGluZUJveEl0ZXJhdG9y
JiBsaW5lQm94KSB7CisgICAgICAgIHJldHVybiBMaW5lU2VsZWN0aW9uOjpzZWxlY3Rpb25TdGF0
ZSgqbGluZUJveCkgIT0gUmVuZGVyT2JqZWN0OjpIaWdobGlnaHRTdGF0ZTo6Tm9uZTsKICAgICB9
OwogCi0gICAgYXV0byBsaW5lU2VsZWN0aW9uR2FwID0gWyZdKGNvbnN0IElubGluZUl0ZXJhdG9y
OjpMaW5lSXRlcmF0b3ImIGxpbmUsIExheW91dFVuaXQgc2VsVG9wLCBMYXlvdXRVbml0IHNlbEhl
aWdodCkgLT4gR2FwUmVjdHMgewotICAgICAgICBhdXRvIGxpbmVTdGF0ZSA9IExpbmVTZWxlY3Rp
b246OnNlbGVjdGlvblN0YXRlKCpsaW5lKTsKKyAgICBhdXRvIGxpbmVTZWxlY3Rpb25HYXAgPSBb
Jl0oY29uc3QgSW5saW5lSXRlcmF0b3I6OkxpbmVCb3hJdGVyYXRvciYgbGluZUJveCwgTGF5b3V0
VW5pdCBzZWxUb3AsIExheW91dFVuaXQgc2VsSGVpZ2h0KSAtPiBHYXBSZWN0cyB7CisgICAgICAg
IGF1dG8gbGluZVN0YXRlID0gTGluZVNlbGVjdGlvbjo6c2VsZWN0aW9uU3RhdGUoKmxpbmVCb3gp
OwogCiAgICAgICAgIGJvb2wgbGVmdEdhcCwgcmlnaHRHYXA7CiAgICAgICAgIGdldFNlbGVjdGlv
bkdhcEluZm8obGluZVN0YXRlLCBsZWZ0R2FwLCByaWdodEdhcCk7CkBAIC0zMTAwLDcgKzMxMDAs
NyBAQCBHYXBSZWN0cyBSZW5kZXJCbG9ja0Zsb3c6OmlubGluZVNlbGVjdGlvbkdhcHMoUmVuZGVy
QmxvY2smIHJvb3RCbG9jaywgY29uc3QgTGF5bwogICAgICAgICBHYXBSZWN0cyByZXN1bHQ7CiAK
ICAgICAgICAgYXV0byBmaXJzdFNlbGVjdGVkQm94ID0gWyZdKCkgLT4gSW5saW5lSXRlcmF0b3I6
OkxlYWZCb3hJdGVyYXRvciB7Ci0gICAgICAgICAgICBmb3IgKGF1dG8gYm94ID0gbGluZS0+Zmly
c3RMZWFmQm94KCk7IGJveDsgYm94LnRyYXZlcnNlTmV4dE9uTGluZSgpKSB7CisgICAgICAgICAg
ICBmb3IgKGF1dG8gYm94ID0gbGluZUJveC0+Zmlyc3RMZWFmQm94KCk7IGJveDsgYm94LnRyYXZl
cnNlTmV4dE9uTGluZSgpKSB7CiAgICAgICAgICAgICAgICAgaWYgKGJveC0+c2VsZWN0aW9uU3Rh
dGUoKSAhPSBSZW5kZXJPYmplY3Q6OkhpZ2hsaWdodFN0YXRlOjpOb25lKQogICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gYm94OwogICAgICAgICAgICAgfQpAQCAtMzEwOCw3ICszMTA4LDcgQEAg
R2FwUmVjdHMgUmVuZGVyQmxvY2tGbG93OjppbmxpbmVTZWxlY3Rpb25HYXBzKFJlbmRlckJsb2Nr
JiByb290QmxvY2ssIGNvbnN0IExheW8KICAgICAgICAgfSgpOwogCiAgICAgICAgIGF1dG8gbGFz
dFNlbGVjdGVkQm94ID0gWyZdKCkgLT4gSW5saW5lSXRlcmF0b3I6OkxlYWZCb3hJdGVyYXRvciB7
Ci0gICAgICAgICAgICBmb3IgKGF1dG8gYm94ID0gbGluZS0+bGFzdExlYWZCb3goKTsgYm94OyBi
b3gudHJhdmVyc2VQcmV2aW91c09uTGluZSgpKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8gYm94
ID0gbGluZUJveC0+bGFzdExlYWZCb3goKTsgYm94OyBib3gudHJhdmVyc2VQcmV2aW91c09uTGlu
ZSgpKSB7CiAgICAgICAgICAgICAgICAgaWYgKGJveC0+c2VsZWN0aW9uU3RhdGUoKSAhPSBSZW5k
ZXJPYmplY3Q6OkhpZ2hsaWdodFN0YXRlOjpOb25lKQogICAgICAgICAgICAgICAgICAgICByZXR1
cm4gYm94OwogICAgICAgICAgICAgfQpAQCAtMzE1NywzOCArMzE1Nyw0MCBAQCBHYXBSZWN0cyBS
ZW5kZXJCbG9ja0Zsb3c6OmlubGluZVNlbGVjdGlvbkdhcHMoUmVuZGVyQmxvY2smIHJvb3RCbG9j
aywgY29uc3QgTGF5bwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH07CiAKLSAgICBJbmxp
bmVJdGVyYXRvcjo6TGluZUl0ZXJhdG9yIGxhc3RTZWxlY3RlZExpbmU7Ci0gICAgSW5saW5lSXRl
cmF0b3I6OkxpbmVJdGVyYXRvciBsaW5lID0gSW5saW5lSXRlcmF0b3I6OmZpcnN0TGluZUZvcigq
dGhpcyk7Ci0gICAgZm9yICg7IGxpbmUgJiYgIWhhc1NlbGVjdGVkQ2hpbGRyZW4obGluZSk7IGxp
bmUudHJhdmVyc2VOZXh0KCkpIHsgfQorICAgIElubGluZUl0ZXJhdG9yOjpMaW5lQm94SXRlcmF0
b3IgbGFzdFNlbGVjdGVkTGluZUJveDsKKyAgICBhdXRvIGxpbmVCb3ggPSBJbmxpbmVJdGVyYXRv
cjo6Zmlyc3RMaW5lQm94Rm9yKCp0aGlzKTsKKyAgICBmb3IgKDsgbGluZUJveCAmJiAhaGFzU2Vs
ZWN0ZWRDaGlsZHJlbihsaW5lQm94KTsgbGluZUJveC50cmF2ZXJzZU5leHQoKSkgeyB9CiAKICAg
ICBHYXBSZWN0cyByZXN1bHQ7CiAKICAgICAvLyBOb3cgcGFpbnQgdGhlIGdhcHMgZm9yIHRoZSBs
aW5lcy4KLSAgICBmb3IgKDsgbGluZSAmJiBoYXNTZWxlY3RlZENoaWxkcmVuKGxpbmUpOyBsaW5l
LnRyYXZlcnNlTmV4dCgpKSB7Ci0gICAgICAgIGF1dG8gc2VsZWN0aW9uVG9wID0gIExheW91dFVu
aXQgeyBMaW5lU2VsZWN0aW9uOjpsb2dpY2FsVG9wQWRqdXN0ZWRGb3JQcmVjZWRpbmdCbG9jaygq
bGluZSkgfTsKLSAgICAgICAgYXV0byBzZWxlY3Rpb25IZWlnaHQgPSBMYXlvdXRVbml0IHsgc3Rk
OjptYXgoMC5mLCBMaW5lU2VsZWN0aW9uOjpsb2dpY2FsQm90dG9tKCpsaW5lKSAtIHNlbGVjdGlv
blRvcCkgfTsKKyAgICBmb3IgKDsgbGluZUJveCAmJiBoYXNTZWxlY3RlZENoaWxkcmVuKGxpbmVC
b3gpOyBsaW5lQm94LnRyYXZlcnNlTmV4dCgpKSB7CisgICAgICAgIGF1dG8gc2VsZWN0aW9uVG9w
ID0gIExheW91dFVuaXQgeyBMaW5lU2VsZWN0aW9uOjpsb2dpY2FsVG9wQWRqdXN0ZWRGb3JQcmVj
ZWRpbmdCbG9jaygqbGluZUJveCkgfTsKKyAgICAgICAgYXV0byBzZWxlY3Rpb25IZWlnaHQgPSBM
YXlvdXRVbml0IHsgc3RkOjptYXgoMC5mLCBMaW5lU2VsZWN0aW9uOjpsb2dpY2FsQm90dG9tKCps
aW5lQm94KSAtIHNlbGVjdGlvblRvcCkgfTsKIAotICAgICAgICBpZiAoIWNvbnRhaW5zU3RhcnQg
JiYgIWxhc3RTZWxlY3RlZExpbmUgJiYKLSAgICAgICAgICAgIHNlbGVjdGlvblN0YXRlKCkgIT0g
SGlnaGxpZ2h0U3RhdGU6OlN0YXJ0ICYmIHNlbGVjdGlvblN0YXRlKCkgIT0gSGlnaGxpZ2h0U3Rh
dGU6OkJvdGggJiYgIWlzUnVieUJhc2UoKSkKKyAgICAgICAgaWYgKCFjb250YWluc1N0YXJ0ICYm
ICFsYXN0U2VsZWN0ZWRMaW5lQm94CisgICAgICAgICAgICAmJiBzZWxlY3Rpb25TdGF0ZSgpICE9
IEhpZ2hsaWdodFN0YXRlOjpTdGFydAorICAgICAgICAgICAgJiYgc2VsZWN0aW9uU3RhdGUoKSAh
PSBIaWdobGlnaHRTdGF0ZTo6Qm90aCAmJiAhaXNSdWJ5QmFzZSgpKQogICAgICAgICAgICAgcmVz
dWx0LnVuaXRlQ2VudGVyKGJsb2NrU2VsZWN0aW9uR2FwKHJvb3RCbG9jaywgcm9vdEJsb2NrUGh5
c2ljYWxQb3NpdGlvbiwgb2Zmc2V0RnJvbVJvb3RCbG9jaywgbGFzdExvZ2ljYWxUb3AsIGxhc3RM
b2dpY2FsTGVmdCwgbGFzdExvZ2ljYWxSaWdodCwgc2VsZWN0aW9uVG9wLCBjYWNoZSwgcGFpbnRJ
bmZvKSk7CiAKLSAgICAgICAgTGF5b3V0UmVjdCBsb2dpY2FsUmVjdCB7IExheW91dFVuaXQobGlu
ZS0+Y29udGVudExvZ2ljYWxMZWZ0KCkpLCBzZWxlY3Rpb25Ub3AsIExheW91dFVuaXQobGluZS0+
Y29udGVudExvZ2ljYWxXaWR0aCgpKSwgc2VsZWN0aW9uVG9wICsgc2VsZWN0aW9uSGVpZ2h0IH07
CisgICAgICAgIExheW91dFJlY3QgbG9naWNhbFJlY3QgeyBMYXlvdXRVbml0KGxpbmVCb3gtPmNv
bnRlbnRMb2dpY2FsTGVmdCgpKSwgc2VsZWN0aW9uVG9wLCBMYXlvdXRVbml0KGxpbmVCb3gtPmNv
bnRlbnRMb2dpY2FsV2lkdGgoKSksIHNlbGVjdGlvblRvcCArIHNlbGVjdGlvbkhlaWdodCB9Owog
ICAgICAgICBsb2dpY2FsUmVjdC5tb3ZlKGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBvZmZz
ZXRGcm9tUm9vdEJsb2NrIDogb2Zmc2V0RnJvbVJvb3RCbG9jay50cmFuc3Bvc2VkU2l6ZSgpKTsK
ICAgICAgICAgTGF5b3V0UmVjdCBwaHlzaWNhbFJlY3QgPSByb290QmxvY2subG9naWNhbFJlY3RU
b1BoeXNpY2FsUmVjdChyb290QmxvY2tQaHlzaWNhbFBvc2l0aW9uLCBsb2dpY2FsUmVjdCk7CiAg
ICAgICAgIGlmICghcGFpbnRJbmZvIHx8IChpc0hvcml6b250YWxXcml0aW5nTW9kZSgpICYmIHBo
eXNpY2FsUmVjdC55KCkgPCBwYWludEluZm8tPnJlY3QubWF4WSgpICYmIHBoeXNpY2FsUmVjdC5t
YXhZKCkgPiBwYWludEluZm8tPnJlY3QueSgpKQogICAgICAgICAgICAgfHwgKCFpc0hvcml6b250
YWxXcml0aW5nTW9kZSgpICYmIHBoeXNpY2FsUmVjdC54KCkgPCBwYWludEluZm8tPnJlY3QubWF4
WCgpICYmIHBoeXNpY2FsUmVjdC5tYXhYKCkgPiBwYWludEluZm8tPnJlY3QueCgpKSkKLSAgICAg
ICAgICAgIHJlc3VsdC51bml0ZShsaW5lU2VsZWN0aW9uR2FwKGxpbmUsIHNlbGVjdGlvblRvcCwg
c2VsZWN0aW9uSGVpZ2h0KSk7CisgICAgICAgICAgICByZXN1bHQudW5pdGUobGluZVNlbGVjdGlv
bkdhcChsaW5lQm94LCBzZWxlY3Rpb25Ub3AsIHNlbGVjdGlvbkhlaWdodCkpOwogCi0gICAgICAg
IGxhc3RTZWxlY3RlZExpbmUgPSBsaW5lOworICAgICAgICBsYXN0U2VsZWN0ZWRMaW5lQm94ID0g
bGluZUJveDsKICAgICB9CiAKLSAgICBpZiAoY29udGFpbnNTdGFydCAmJiAhbGFzdFNlbGVjdGVk
TGluZSkKKyAgICBpZiAoY29udGFpbnNTdGFydCAmJiAhbGFzdFNlbGVjdGVkTGluZUJveCkgewog
ICAgICAgICAvLyBWaXNpYmxlU2VsZWN0aW9uIG11c3Qgc3RhcnQganVzdCBhZnRlciBvdXIgbGFz
dCBsaW5lLgotICAgICAgICBsYXN0U2VsZWN0ZWRMaW5lID0gSW5saW5lSXRlcmF0b3I6Omxhc3RM
aW5lRm9yKCp0aGlzKTsKKyAgICAgICAgbGFzdFNlbGVjdGVkTGluZUJveCA9IElubGluZUl0ZXJh
dG9yOjpsYXN0TGluZUJveEZvcigqdGhpcyk7CisgICAgfQogCi0gICAgaWYgKGxhc3RTZWxlY3Rl
ZExpbmUgJiYgc2VsZWN0aW9uU3RhdGUoKSAhPSBIaWdobGlnaHRTdGF0ZTo6RW5kICYmIHNlbGVj
dGlvblN0YXRlKCkgIT0gSGlnaGxpZ2h0U3RhdGU6OkJvdGgpIHsKKyAgICBpZiAobGFzdFNlbGVj
dGVkTGluZUJveCAmJiBzZWxlY3Rpb25TdGF0ZSgpICE9IEhpZ2hsaWdodFN0YXRlOjpFbmQgJiYg
c2VsZWN0aW9uU3RhdGUoKSAhPSBIaWdobGlnaHRTdGF0ZTo6Qm90aCkgewogICAgICAgICAvLyBV
cGRhdGUgb3VyIGxhc3RZIHRvIGJlIHRoZSBib3R0b20gb2YgdGhlIGxhc3Qgc2VsZWN0ZWQgbGlu
ZS4KLSAgICAgICAgYXV0byBsYXN0TGluZVNlbGVjdGlvbkJvdHRvbSA9IExheW91dFVuaXQgeyBM
aW5lU2VsZWN0aW9uOjpsb2dpY2FsQm90dG9tKCpsYXN0U2VsZWN0ZWRMaW5lKSB9OworICAgICAg
ICBhdXRvIGxhc3RMaW5lU2VsZWN0aW9uQm90dG9tID0gTGF5b3V0VW5pdCB7IExpbmVTZWxlY3Rp
b246OmxvZ2ljYWxCb3R0b20oKmxhc3RTZWxlY3RlZExpbmVCb3gpIH07CiAgICAgICAgIGxhc3RM
b2dpY2FsVG9wID0gYmxvY2tEaXJlY3Rpb25PZmZzZXQocm9vdEJsb2NrLCBvZmZzZXRGcm9tUm9v
dEJsb2NrKSArIGxhc3RMaW5lU2VsZWN0aW9uQm90dG9tOwogICAgICAgICBsYXN0TG9naWNhbExl
ZnQgPSBsb2dpY2FsTGVmdFNlbGVjdGlvbk9mZnNldChyb290QmxvY2ssIGxhc3RMaW5lU2VsZWN0
aW9uQm90dG9tLCBjYWNoZSk7CiAgICAgICAgIGxhc3RMb2dpY2FsUmlnaHQgPSBsb2dpY2FsUmln
aHRTZWxlY3Rpb25PZmZzZXQocm9vdEJsb2NrLCBsYXN0TGluZVNlbGVjdGlvbkJvdHRvbSwgY2Fj
aGUpOwpAQCAtMzI3Myw4ICszMjc1LDggQEAgdm9pZCBSZW5kZXJCbG9ja0Zsb3c6OmNsZWFyVHJ1
bmNhdGlvbigpCiAKIGJvb2wgUmVuZGVyQmxvY2tGbG93Ojpjb250YWluc05vblplcm9CaWRpTGV2
ZWwoKSBjb25zdAogewotICAgIGZvciAoYXV0byBsaW5lID0gSW5saW5lSXRlcmF0b3I6OmZpcnN0
TGluZUZvcigqdGhpcyk7IGxpbmU7IGxpbmUudHJhdmVyc2VOZXh0KCkpIHsKLSAgICAgICAgZm9y
IChhdXRvIGJveCA9IGxpbmUtPmZpcnN0TGVhZkJveCgpOyBib3g7IGJveCA9IGJveC50cmF2ZXJz
ZU5leHRPbkxpbmUoKSkgeworICAgIGZvciAoYXV0byBsaW5lQm94ID0gSW5saW5lSXRlcmF0b3I6
OmZpcnN0TGluZUJveEZvcigqdGhpcyk7IGxpbmVCb3g7IGxpbmVCb3gudHJhdmVyc2VOZXh0KCkp
IHsKKyAgICAgICAgZm9yIChhdXRvIGJveCA9IGxpbmVCb3gtPmZpcnN0TGVhZkJveCgpOyBib3g7
IGJveCA9IGJveC50cmF2ZXJzZU5leHRPbkxpbmUoKSkgewogICAgICAgICAgICAgaWYgKGJveC0+
YmlkaUxldmVsKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KQEAg
LTMzNTMsNyArMzM1NSw3IEBAIFJlbmRlclRleHQqIFJlbmRlckJsb2NrRmxvdzo6ZmluZENsb3Nl
c3RUZXh0QXRBYnNvbHV0ZVBvaW50KGNvbnN0IEZsb2F0UG9pbnQmIHBvCiAgICAgICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICAgICAgICAgIGlmIChsb2NhbFBvaW50LnkoKSA+ICpw
cmV2aW91c1Jvb3RJbmxpbmVCb3hCb3R0b20gJiYgbG9jYWxQb2ludC55KCkgPCBib3gtPmxvZ2lj
YWxUb3AoKSkgewotICAgICAgICAgICAgICAgIGF1dG8gY2xvc2VzdEJveCA9IGNsb3Nlc3RCb3hG
b3JIb3Jpem9udGFsUG9zaXRpb24oKmJveC0+bGluZSgpLCBsb2NhbFBvaW50LngoKSk7CisgICAg
ICAgICAgICAgICAgYXV0byBjbG9zZXN0Qm94ID0gY2xvc2VzdEJveEZvckhvcml6b250YWxQb3Np
dGlvbigqYm94LT5saW5lQm94KCksIGxvY2FsUG9pbnQueCgpKTsKICAgICAgICAgICAgICAgICBp
ZiAoY2xvc2VzdEJveCAmJiBpczxSZW5kZXJUZXh0PihjbG9zZXN0Qm94LT5yZW5kZXJlcigpKSkK
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8UmVuZGVyVGV4dCo+KCZkb3du
Y2FzdDxSZW5kZXJUZXh0PihjbG9zZXN0Qm94LT5yZW5kZXJlcigpKSk7CiAgICAgICAgICAgICB9
CkBAIC0zMzY3LDkgKzMzNjksOSBAQCBWaXNpYmxlUG9zaXRpb24gUmVuZGVyQmxvY2tGbG93Ojpw
b3NpdGlvbkZvclBvaW50V2l0aElubGluZUNoaWxkcmVuKGNvbnN0IExheW91dAogewogICAgIEFT
U0VSVChjaGlsZHJlbklubGluZSgpKTsKIAotICAgIGF1dG8gZmlyc3RMaW5lID0gSW5saW5lSXRl
cmF0b3I6OmZpcnN0TGluZUZvcigqdGhpcyk7CisgICAgYXV0byBmaXJzdExpbmVCb3ggPSBJbmxp
bmVJdGVyYXRvcjo6Zmlyc3RMaW5lQm94Rm9yKCp0aGlzKTsKIAotICAgIGlmICghZmlyc3RMaW5l
KQorICAgIGlmICghZmlyc3RMaW5lQm94KQogICAgICAgICByZXR1cm4gY3JlYXRlVmlzaWJsZVBv
c2l0aW9uKDAsIEFmZmluaXR5OjpEb3duc3RyZWFtKTsKIAogICAgIGJvb2wgbGluZXNBcmVGbGlw
cGVkID0gc3R5bGUoKS5pc0ZsaXBwZWRMaW5lc1dyaXRpbmdNb2RlKCk7CkBAIC0zMzc3LDM2ICsz
Mzc5LDM2IEBAIFZpc2libGVQb3NpdGlvbiBSZW5kZXJCbG9ja0Zsb3c6OnBvc2l0aW9uRm9yUG9p
bnRXaXRoSW5saW5lQ2hpbGRyZW4oY29uc3QgTGF5b3V0CiAKICAgICAvLyBsb29rIGZvciB0aGUg
Y2xvc2VzdCBsaW5lIGJveCBpbiB0aGUgcm9vdCBib3ggd2hpY2ggaXMgYXQgdGhlIHBhc3NlZC1p
biB5IGNvb3JkaW5hdGUKICAgICBJbmxpbmVJdGVyYXRvcjo6TGVhZkJveEl0ZXJhdG9yIGNsb3Nl
c3RCb3g7Ci0gICAgSW5saW5lSXRlcmF0b3I6OkxpbmVJdGVyYXRvciBmaXJzdExpbmVXaXRoQ2hp
bGRyZW47Ci0gICAgSW5saW5lSXRlcmF0b3I6OkxpbmVJdGVyYXRvciBsYXN0TGluZVdpdGhDaGls
ZHJlbjsKLSAgICBmb3IgKGF1dG8gbGluZSA9IGZpcnN0TGluZTsgbGluZTsgbGluZS50cmF2ZXJz
ZU5leHQoKSkgewotICAgICAgICBpZiAoZnJhZ21lbnQgJiYgbGluZS0+Y29udGFpbmluZ0ZyYWdt
ZW50KCkgIT0gZnJhZ21lbnQpCisgICAgSW5saW5lSXRlcmF0b3I6OkxpbmVCb3hJdGVyYXRvciBm
aXJzdExpbmVCb3hXaXRoQ2hpbGRyZW47CisgICAgSW5saW5lSXRlcmF0b3I6OkxpbmVCb3hJdGVy
YXRvciBsYXN0TGluZUJveFdpdGhDaGlsZHJlbjsKKyAgICBmb3IgKGF1dG8gbGluZUJveCA9IGZp
cnN0TGluZUJveDsgbGluZUJveDsgbGluZUJveC50cmF2ZXJzZU5leHQoKSkgeworICAgICAgICBp
ZiAoZnJhZ21lbnQgJiYgbGluZUJveC0+Y29udGFpbmluZ0ZyYWdtZW50KCkgIT0gZnJhZ21lbnQp
CiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBpZiAoIWxpbmUtPmZpcnN0TGVhZkJv
eCgpKQorICAgICAgICBpZiAoIWxpbmVCb3gtPmZpcnN0TGVhZkJveCgpKQogICAgICAgICAgICAg
Y29udGludWU7Ci0gICAgICAgIGlmICghZmlyc3RMaW5lV2l0aENoaWxkcmVuKQotICAgICAgICAg
ICAgZmlyc3RMaW5lV2l0aENoaWxkcmVuID0gbGluZTsKKyAgICAgICAgaWYgKCFmaXJzdExpbmVC
b3hXaXRoQ2hpbGRyZW4pCisgICAgICAgICAgICBmaXJzdExpbmVCb3hXaXRoQ2hpbGRyZW4gPSBs
aW5lQm94OwogCi0gICAgICAgIGlmICghbGluZXNBcmVGbGlwcGVkICYmIGxpbmUtPmlzRmlyc3RB
ZnRlclBhZ2VCcmVhaygpCi0gICAgICAgICAgICAmJiAocG9pbnRJbkxvZ2ljYWxDb250ZW50cy55
KCkgPCBsaW5lLT5saW5lQm94VG9wKCkgfHwgKGJsb2Nrc0FyZUZsaXBwZWQgJiYgcG9pbnRJbkxv
Z2ljYWxDb250ZW50cy55KCkgPT0gbGluZS0+bGluZUJveFRvcCgpKSkpCisgICAgICAgIGlmICgh
bGluZXNBcmVGbGlwcGVkICYmIGxpbmVCb3gtPmlzRmlyc3RBZnRlclBhZ2VCcmVhaygpCisgICAg
ICAgICAgICAmJiAocG9pbnRJbkxvZ2ljYWxDb250ZW50cy55KCkgPCBsaW5lQm94LT50b3AoKSB8
fCAoYmxvY2tzQXJlRmxpcHBlZCAmJiBwb2ludEluTG9naWNhbENvbnRlbnRzLnkoKSA9PSBsaW5l
Qm94LT50b3AoKSkpKQogICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgbGFzdExpbmVXaXRo
Q2hpbGRyZW4gPSBsaW5lOworICAgICAgICBsYXN0TGluZUJveFdpdGhDaGlsZHJlbiA9IGxpbmVC
b3g7CiAKICAgICAgICAgLy8gY2hlY2sgaWYgdGhpcyByb290IGxpbmUgYm94IGlzIGxvY2F0ZWQg
YXQgdGhpcyB5IGNvb3JkaW5hdGUKLSAgICAgICAgYXV0byBzZWxlY3Rpb25Cb3R0b20gPSBMaW5l
U2VsZWN0aW9uOjpsb2dpY2FsQm90dG9tKCpsaW5lKTsKKyAgICAgICAgYXV0byBzZWxlY3Rpb25C
b3R0b20gPSBMaW5lU2VsZWN0aW9uOjpsb2dpY2FsQm90dG9tKCpsaW5lQm94KTsKICAgICAgICAg
aWYgKHBvaW50SW5Mb2dpY2FsQ29udGVudHMueSgpIDwgc2VsZWN0aW9uQm90dG9tIHx8IChibG9j
a3NBcmVGbGlwcGVkICYmIHBvaW50SW5Mb2dpY2FsQ29udGVudHMueSgpID09IHNlbGVjdGlvbkJv
dHRvbSkpIHsKICAgICAgICAgICAgIGlmIChsaW5lc0FyZUZsaXBwZWQpIHsKLSAgICAgICAgICAg
ICAgICBhdXRvIG5leHRMaW5lV2l0aENoaWxkcmVuID0gbGluZS0+bmV4dCgpOwotICAgICAgICAg
ICAgICAgIHdoaWxlIChuZXh0TGluZVdpdGhDaGlsZHJlbiAmJiAhbmV4dExpbmVXaXRoQ2hpbGRy
ZW4tPmZpcnN0TGVhZkJveCgpKQotICAgICAgICAgICAgICAgICAgICBuZXh0TGluZVdpdGhDaGls
ZHJlbi50cmF2ZXJzZU5leHQoKTsKKyAgICAgICAgICAgICAgICBhdXRvIG5leHRMaW5lQm94V2l0
aENoaWxkcmVuID0gbGluZUJveC0+bmV4dCgpOworICAgICAgICAgICAgICAgIHdoaWxlIChuZXh0
TGluZUJveFdpdGhDaGlsZHJlbiAmJiAhbmV4dExpbmVCb3hXaXRoQ2hpbGRyZW4tPmZpcnN0TGVh
ZkJveCgpKQorICAgICAgICAgICAgICAgICAgICBuZXh0TGluZUJveFdpdGhDaGlsZHJlbi50cmF2
ZXJzZU5leHQoKTsKIAotICAgICAgICAgICAgICAgIGlmIChuZXh0TGluZVdpdGhDaGlsZHJlbiAm
JiBuZXh0TGluZVdpdGhDaGlsZHJlbi0+aXNGaXJzdEFmdGVyUGFnZUJyZWFrKCkKLSAgICAgICAg
ICAgICAgICAgICAgJiYgKHBvaW50SW5Mb2dpY2FsQ29udGVudHMueSgpID4gbmV4dExpbmVXaXRo
Q2hpbGRyZW4tPmxpbmVCb3hUb3AoKSB8fCAoIWJsb2Nrc0FyZUZsaXBwZWQgJiYgcG9pbnRJbkxv
Z2ljYWxDb250ZW50cy55KCkgPT0gbmV4dExpbmVXaXRoQ2hpbGRyZW4tPmxpbmVCb3hUb3AoKSkp
KQorICAgICAgICAgICAgICAgIGlmIChuZXh0TGluZUJveFdpdGhDaGlsZHJlbiAmJiBuZXh0TGlu
ZUJveFdpdGhDaGlsZHJlbi0+aXNGaXJzdEFmdGVyUGFnZUJyZWFrKCkKKyAgICAgICAgICAgICAg
ICAgICAgJiYgKHBvaW50SW5Mb2dpY2FsQ29udGVudHMueSgpID4gbmV4dExpbmVCb3hXaXRoQ2hp
bGRyZW4tPnRvcCgpIHx8ICghYmxvY2tzQXJlRmxpcHBlZCAmJiBwb2ludEluTG9naWNhbENvbnRl
bnRzLnkoKSA9PSBuZXh0TGluZUJveFdpdGhDaGlsZHJlbi0+dG9wKCkpKSkKICAgICAgICAgICAg
ICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBjbG9zZXN0Qm94
ID0gY2xvc2VzdEJveEZvckhvcml6b250YWxQb3NpdGlvbigqbGluZSwgcG9pbnRJbkxvZ2ljYWxD
b250ZW50cy54KCkpOworICAgICAgICAgICAgY2xvc2VzdEJveCA9IGNsb3Nlc3RCb3hGb3JIb3Jp
em9udGFsUG9zaXRpb24oKmxpbmVCb3gsIHBvaW50SW5Mb2dpY2FsQ29udGVudHMueCgpKTsKICAg
ICAgICAgICAgIGlmIChjbG9zZXN0Qm94KQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CkBAIC0zNDE0LDE3ICszNDE2LDE3IEBAIFZpc2libGVQb3NpdGlvbiBSZW5kZXJCbG9ja0Zs
b3c6OnBvc2l0aW9uRm9yUG9pbnRXaXRoSW5saW5lQ2hpbGRyZW4oY29uc3QgTGF5b3V0CiAKICAg
ICBib29sIG1vdmVDYXJldFRvQm91bmRhcnkgPSBmcmFtZSgpLmVkaXRvcigpLmJlaGF2aW9yKCku
c2hvdWxkTW92ZUNhcmV0VG9Ib3Jpem9udGFsQm91bmRhcnlXaGVuUGFzdFRvcE9yQm90dG9tKCk7
CiAKLSAgICBpZiAoIW1vdmVDYXJldFRvQm91bmRhcnkgJiYgIWNsb3Nlc3RCb3ggJiYgbGFzdExp
bmVXaXRoQ2hpbGRyZW4pIHsKKyAgICBpZiAoIW1vdmVDYXJldFRvQm91bmRhcnkgJiYgIWNsb3Nl
c3RCb3ggJiYgbGFzdExpbmVCb3hXaXRoQ2hpbGRyZW4pIHsKICAgICAgICAgLy8geSBjb29yZGlu
YXRlIGlzIGJlbG93IGxhc3Qgcm9vdCBsaW5lIGJveCwgcHJldGVuZCB3ZSBoaXQgaXQKLSAgICAg
ICAgY2xvc2VzdEJveCA9IGNsb3Nlc3RCb3hGb3JIb3Jpem9udGFsUG9zaXRpb24oKmxhc3RMaW5l
V2l0aENoaWxkcmVuLCBwb2ludEluTG9naWNhbENvbnRlbnRzLngoKSk7CisgICAgICAgIGNsb3Nl
c3RCb3ggPSBjbG9zZXN0Qm94Rm9ySG9yaXpvbnRhbFBvc2l0aW9uKCpsYXN0TGluZUJveFdpdGhD
aGlsZHJlbiwgcG9pbnRJbkxvZ2ljYWxDb250ZW50cy54KCkpOwogICAgIH0KIAogICAgIGlmIChj
bG9zZXN0Qm94KSB7CiAgICAgICAgIGlmIChtb3ZlQ2FyZXRUb0JvdW5kYXJ5KSB7Ci0gICAgICAg
ICAgICBhdXRvIGZpcnN0TGluZVdpdGhDaGlsZHJlblRvcCA9IExheW91dFVuaXQgeyBzdGQ6Om1p
bihwcmV2aW91c0xpbmVDb250ZW50Qm90dG9tT3JCb3JkZXJBbmRQYWRkaW5nKCpmaXJzdExpbmVX
aXRoQ2hpbGRyZW4pLCBmaXJzdExpbmVXaXRoQ2hpbGRyZW4tPmNvbnRlbnRMb2dpY2FsVG9wKCkp
IH07CisgICAgICAgICAgICBhdXRvIGZpcnN0TGluZVdpdGhDaGlsZHJlblRvcCA9IExheW91dFVu
aXQgeyBzdGQ6Om1pbihwcmV2aW91c0xpbmVCb3hDb250ZW50Qm90dG9tT3JCb3JkZXJBbmRQYWRk
aW5nKCpmaXJzdExpbmVCb3hXaXRoQ2hpbGRyZW4pLCBmaXJzdExpbmVCb3hXaXRoQ2hpbGRyZW4t
PmNvbnRlbnRMb2dpY2FsVG9wKCkpIH07CiAgICAgICAgICAgICBpZiAocG9pbnRJbkxvZ2ljYWxD
b250ZW50cy55KCkgPCBmaXJzdExpbmVXaXRoQ2hpbGRyZW5Ub3AKICAgICAgICAgICAgICAgICB8
fCAoYmxvY2tzQXJlRmxpcHBlZCAmJiBwb2ludEluTG9naWNhbENvbnRlbnRzLnkoKSA9PSBmaXJz
dExpbmVXaXRoQ2hpbGRyZW5Ub3ApKSB7Ci0gICAgICAgICAgICAgICAgYXV0byBib3ggPSBmaXJz
dExpbmVXaXRoQ2hpbGRyZW4tPmZpcnN0TGVhZkJveCgpOworICAgICAgICAgICAgICAgIGF1dG8g
Ym94ID0gZmlyc3RMaW5lQm94V2l0aENoaWxkcmVuLT5maXJzdExlYWZCb3goKTsKICAgICAgICAg
ICAgICAgICBpZiAoYm94LT5pc0xpbmVCcmVhaygpKSB7CiAgICAgICAgICAgICAgICAgICAgIGlm
IChhdXRvIG5leHQgPSBib3gtPm5leHRPbkxpbmVJZ25vcmluZ0xpbmVCcmVhaygpKQogICAgICAg
ICAgICAgICAgICAgICAgICAgYm94ID0gbmV4dDsKQEAgLTM0MzUsNyArMzQzNyw3IEBAIFZpc2li
bGVQb3NpdGlvbiBSZW5kZXJCbG9ja0Zsb3c6OnBvc2l0aW9uRm9yUG9pbnRXaXRoSW5saW5lQ2hp
bGRyZW4oY29uc3QgTGF5b3V0CiAgICAgICAgIH0KIAogICAgICAgICAvLyBwYXNzIHRoZSBib3gg
YSB0b3AgcG9zaXRpb24gdGhhdCBpcyBpbnNpZGUgaXQKLSAgICAgICAgYXV0byBwb2ludCA9IExh
eW91dFBvaW50IHsgcG9pbnRJbkxvZ2ljYWxDb250ZW50cy54KCksIGNvbnRlbnRTdGFydEluQmxv
Y2tEaXJlY3Rpb24oKmNsb3Nlc3RCb3gtPmxpbmUoKSkgfTsKKyAgICAgICAgYXV0byBwb2ludCA9
IExheW91dFBvaW50IHsgcG9pbnRJbkxvZ2ljYWxDb250ZW50cy54KCksIGNvbnRlbnRTdGFydElu
QmxvY2tEaXJlY3Rpb24oKmNsb3Nlc3RCb3gtPmxpbmVCb3goKSkgfTsKICAgICAgICAgaWYgKCFp
c0hvcml6b250YWxXcml0aW5nTW9kZSgpKQogICAgICAgICAgICAgcG9pbnQgPSBwb2ludC50cmFu
c3Bvc2VkUG9pbnQoKTsKICAgICAgICAgaWYgKGNsb3Nlc3RCb3gtPnJlbmRlcmVyKCkuaXNSZXBs
YWNlZE9ySW5saW5lQmxvY2soKSkKQEAgLTM0NDMsMTEgKzM0NDUsMTEgQEAgVmlzaWJsZVBvc2l0
aW9uIFJlbmRlckJsb2NrRmxvdzo6cG9zaXRpb25Gb3JQb2ludFdpdGhJbmxpbmVDaGlsZHJlbihj
b25zdCBMYXlvdXQKICAgICAgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8UmVuZGVyT2JqZWN0Jj4oY2xv
c2VzdEJveC0+cmVuZGVyZXIoKSkucG9zaXRpb25Gb3JQb2ludChwb2ludCwgbnVsbHB0cik7CiAg
ICAgfQogCi0gICAgaWYgKGxhc3RMaW5lV2l0aENoaWxkcmVuKSB7CisgICAgaWYgKGxhc3RMaW5l
Qm94V2l0aENoaWxkcmVuKSB7CiAgICAgICAgIC8vIFdlIGhpdCB0aGlzIGNhc2UgZm9yIE1hYyBi
ZWhhdmlvciB3aGVuIHRoZSBZIGNvb3JkaW5hdGUgaXMgYmVsb3cgdGhlIGxhc3QgYm94LgogICAg
ICAgICBBU1NFUlQobW92ZUNhcmV0VG9Cb3VuZGFyeSk7CiAgICAgICAgIElubGluZUl0ZXJhdG9y
OjpMaW5lTG9naWNhbE9yZGVyQ2FjaGUgb3JkZXJDYWNoZTsKLSAgICAgICAgaWYgKGF1dG8gbG9n
aWNhbGx5TGFzdEJveCA9IElubGluZUl0ZXJhdG9yOjpsYXN0TGVhZk9uTGluZUluTG9naWNhbE9y
ZGVyV2l0aE5vZGUobGFzdExpbmVXaXRoQ2hpbGRyZW4sIG9yZGVyQ2FjaGUpKQorICAgICAgICBp
ZiAoYXV0byBsb2dpY2FsbHlMYXN0Qm94ID0gSW5saW5lSXRlcmF0b3I6Omxhc3RMZWFmT25MaW5l
SW5Mb2dpY2FsT3JkZXJXaXRoTm9kZShsYXN0TGluZUJveFdpdGhDaGlsZHJlbiwgb3JkZXJDYWNo
ZSkpCiAgICAgICAgICAgICByZXR1cm4gcG9zaXRpb25Gb3JSdW4oKnRoaXMsIGxvZ2ljYWxseUxh
c3RCb3gsIGZhbHNlKTsKICAgICB9CiAKQEAgLTM0NzEsMTEgKzM0NzMsMTEgQEAgdm9pZCBSZW5k
ZXJCbG9ja0Zsb3c6OmFkZEZvY3VzUmluZ1JlY3RzRm9ySW5saW5lQ2hpbGRyZW4oVmVjdG9yPExh
eW91dFJlY3Q+JiByZWMKIHsKICAgICBBU1NFUlQoY2hpbGRyZW5JbmxpbmUoKSk7CiAgICAgZm9y
IChhdXRvIGJveCA9IElubGluZUl0ZXJhdG9yOjpmaXJzdFJvb3RJbmxpbmVCb3hGb3IoKnRoaXMp
OyBib3g7IGJveC50cmF2ZXJzZU5leHRJbmxpbmVCb3goKSkgewotICAgICAgICBhdXRvIGxpbmUg
PSBib3gtPmxpbmUoKTsKKyAgICAgICAgYXV0byBsaW5lQm94ID0gYm94LT5saW5lQm94KCk7CiAg
ICAgICAgIC8vIEZJWE1FOiBUaGlzIGlzIG1peGluZyBwaHlzaWNhbCBhbmQgbG9naWNhbCBjb29y
ZGluYXRlcy4KICAgICAgICAgYXV0byB1bmZsaXBwZWRWaXN1YWxSZWN0ID0gYm94LT52aXN1YWxS
ZWN0SWdub3JpbmdCbG9ja0RpcmVjdGlvbigpOwotICAgICAgICBhdXRvIHRvcCA9IHN0ZDo6bWF4
KGxpbmUtPmNvbnRlbnRMb2dpY2FsVG9wKCksIHVuZmxpcHBlZFZpc3VhbFJlY3QueSgpKTsKLSAg
ICAgICAgYXV0byBib3R0b20gPSBzdGQ6Om1pbihsaW5lLT5jb250ZW50TG9naWNhbEJvdHRvbSgp
LCB1bmZsaXBwZWRWaXN1YWxSZWN0Lm1heFkoKSk7CisgICAgICAgIGF1dG8gdG9wID0gc3RkOjpt
YXgobGluZUJveC0+Y29udGVudExvZ2ljYWxUb3AoKSwgdW5mbGlwcGVkVmlzdWFsUmVjdC55KCkp
OworICAgICAgICBhdXRvIGJvdHRvbSA9IHN0ZDo6bWluKGxpbmVCb3gtPmNvbnRlbnRMb2dpY2Fs
Qm90dG9tKCksIHVuZmxpcHBlZFZpc3VhbFJlY3QubWF4WSgpKTsKICAgICAgICAgYXV0byByZWN0
ID0gTGF5b3V0UmVjdCB7IExheW91dFVuaXQgeyBhZGRpdGlvbmFsT2Zmc2V0LngoKSArIHVuZmxp
cHBlZFZpc3VhbFJlY3QueCgpIH0KICAgICAgICAgICAgICwgYWRkaXRpb25hbE9mZnNldC55KCkg
KyB0b3AKICAgICAgICAgICAgICwgTGF5b3V0VW5pdCB7IHVuZmxpcHBlZFZpc3VhbFJlY3Qud2lk
dGgoKSB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCmluZGV4IDg2M2I4MzUy
NjU3NTIyNGY3YzdkM2Y5MWRlZDVmNzU3YjJlYmNlNjEuLmM0ODRkMTQ1YmU3NTNhMGZjNDQ5Y2U3
NWMwZTUyYTZlZDNiMTY2MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3Bw
CkBAIC00Nyw3ICs0Nyw3IEBACiAjaW5jbHVkZSAiSFRNTFRleHRBcmVhRWxlbWVudC5oIgogI2lu
Y2x1ZGUgIkhpdFRlc3RSZXN1bHQuaCIKICNpbmNsdWRlICJJbmxpbmVJdGVyYXRvcklubGluZUJv
eC5oIgotI2luY2x1ZGUgIklubGluZUl0ZXJhdG9yTGluZS5oIgorI2luY2x1ZGUgIklubGluZUl0
ZXJhdG9yTGluZUJveC5oIgogI2luY2x1ZGUgIklubGluZVJ1bkFuZE9mZnNldC5oIgogI2luY2x1
ZGUgIkxheW91dEludGVncmF0aW9uTGluZUxheW91dC5oIgogI2luY2x1ZGUgIkxlZ2FjeUlubGlu
ZUVsZW1lbnRCb3guaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNw
cAppbmRleCAwNTNmODYzYzlhY2I2ZGQ1YjMzYTE3MTVlNDM0ZmY5MGU3ZTI2MmY2Li5iZjA5NDY5
MmQxZjEwMjM1Yzk4ODFlMzBmMDI2YzUzOTdlM2NiMTc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwCkBAIC00MCw3ICs0MCw3IEBACiAjaW5jbHVkZSAiSFRN
TEh0bWxFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEltYWdlRWxlbWVudC5oIgogI2luY2x1ZGUg
IkhUTUxOYW1lcy5oIgotI2luY2x1ZGUgIklubGluZUl0ZXJhdG9yTGluZS5oIgorI2luY2x1ZGUg
IklubGluZUl0ZXJhdG9yTGluZUJveC5oIgogI2luY2x1ZGUgIklubGluZUl0ZXJhdG9yVGV4dEJv
eC5oIgogI2luY2x1ZGUgIkxlbmd0aEZ1bmN0aW9ucy5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIK
QEAgLTE1OTEsNyArMTU5MSw3IEBAIGJvb2wgUmVuZGVyRWxlbWVudDo6Z2V0TGVhZGluZ0Nvcm5l
cihGbG9hdFBvaW50JiBwb2ludCwgYm9vbCYgaW5zaWRlRml4ZWQpIGNvbnN0CiAgICAgICAgICAg
ICBpZiAoaXM8UmVuZGVyVGV4dD4oKm8pKSB7CiAgICAgICAgICAgICAgICAgYXV0byYgdGV4dFJl
bmRlcmVyID0gZG93bmNhc3Q8UmVuZGVyVGV4dD4oKm8pOwogICAgICAgICAgICAgICAgIGlmIChh
dXRvIHJ1biA9IElubGluZUl0ZXJhdG9yOjpmaXJzdFRleHRCb3hGb3IodGV4dFJlbmRlcmVyKSkK
LSAgICAgICAgICAgICAgICAgICAgcG9pbnQubW92ZSh0ZXh0UmVuZGVyZXIubGluZXNCb3VuZGlu
Z0JveCgpLngoKSwgcnVuLT5saW5lKCktPmNvbnRlbnRMb2dpY2FsVG9wKCkpOworICAgICAgICAg
ICAgICAgICAgICBwb2ludC5tb3ZlKHRleHRSZW5kZXJlci5saW5lc0JvdW5kaW5nQm94KCkueCgp
LCBydW4tPmxpbmVCb3goKS0+Y29udGVudExvZ2ljYWxUb3AoKSk7CiAgICAgICAgICAgICB9IGVs
c2UgaWYgKGlzPFJlbmRlckJveD4oKm8pKQogICAgICAgICAgICAgICAgIHBvaW50Lm1vdmVCeShk
b3duY2FzdDxSZW5kZXJCb3g+KCpvKS5sb2NhdGlvbigpKTsKICAgICAgICAgICAgIHBvaW50ID0g
by0+Y29udGFpbmVyKCktPmxvY2FsVG9BYnNvbHV0ZShwb2ludCwgVXNlVHJhbnNmb3JtcywgJmlu
c2lkZUZpeGVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJ
bWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCmluZGV4
IDJhNmQwNmQ3YzdlYjQyYjQ0Y2MyN2I4YjAzNGQ2N2Y1YzhmMGNiYWUuLjhmODM5NWI0N2Q0YzEx
YjM2YjU5MjYxODI2N2YwNDNmZmNkNDhiZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckltYWdlLmNwcApAQCAtNDcsNyArNDcsNyBAQAogI2luY2x1ZGUgIkhpdFRlc3RSZXN1bHQu
aCIKICNpbmNsdWRlICJJbWFnZU92ZXJsYXkuaCIKICNpbmNsdWRlICJJbmxpbmVJdGVyYXRvcklu
bGluZUJveC5oIgotI2luY2x1ZGUgIklubGluZUl0ZXJhdG9yTGluZS5oIgorI2luY2x1ZGUgIklu
bGluZUl0ZXJhdG9yTGluZUJveC5oIgogI2luY2x1ZGUgIkxpbmVTZWxlY3Rpb24uaCIKICNpbmNs
dWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUGFpbnRJbmZvLmgiCkBAIC0xMTAsNyArMTEwLDcgQEAg
dm9pZCBSZW5kZXJJbWFnZTo6Y29sbGVjdFNlbGVjdGlvbkdlb21ldHJpZXMoVmVjdG9yPFNlbGVj
dGlvbkdlb21ldHJ5PiYgZ2VvbWV0cmkKICAgICAgICAgICAgIGxpbmVFeHRlbnRSZWN0LnNldEhl
aWdodChjb250YWluaW5nQmxvY2stPmhlaWdodCgpKTsKICAgICAgICAgfQogICAgIH0gZWxzZSB7
Ci0gICAgICAgIGF1dG8gc2VsZWN0aW9uTG9naWNhbFJlY3QgPSBMaW5lU2VsZWN0aW9uOjpsb2dp
Y2FsUmVjdCgqcnVuLT5saW5lKCkpOworICAgICAgICBhdXRvIHNlbGVjdGlvbkxvZ2ljYWxSZWN0
ID0gTGluZVNlbGVjdGlvbjo6bG9naWNhbFJlY3QoKnJ1bi0+bGluZUJveCgpKTsKICAgICAgICAg
aW50IHNlbGVjdGlvblRvcCA9ICFjb250YWluaW5nQmxvY2stPnN0eWxlKCkuaXNGbGlwcGVkQmxv
Y2tzV3JpdGluZ01vZGUoKSA/IHNlbGVjdGlvbkxvZ2ljYWxSZWN0LnkoKSAtIGxvZ2ljYWxUb3Ao
KSA6IGxvZ2ljYWxCb3R0b20oKSAtIHNlbGVjdGlvbkxvZ2ljYWxSZWN0Lm1heFkoKTsKICAgICAg
ICAgaW50IHNlbGVjdGlvbkhlaWdodCA9IHNlbGVjdGlvbkxvZ2ljYWxSZWN0LmhlaWdodCgpOwog
ICAgICAgICBpbWFnZVJlY3QgPSBJbnRSZWN0IHsgMCwgIHNlbGVjdGlvblRvcCwgbG9naWNhbFdp
ZHRoKCksIHNlbGVjdGlvbkhlaWdodCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlcklubGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
SW5saW5lLmNwcAppbmRleCBhYjg0ZjE1NjkzYjVhNDBhMDA1ZWJhZjFlMWRkZGFkNzQ3ZTU3NjFh
Li4wYjQ1ZWFlYzEzNGM1YzdkMDFhMDJjMzNlZjgzYzk3ODRiOGY2YmVhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcApAQCAtMjksNyArMjksNyBAQAogI2luY2x1
ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIkhpdFRlc3RSZXN1bHQuaCIKICNpbmNs
dWRlICJJbmxpbmVJdGVyYXRvcklubGluZUJveC5oIgotI2luY2x1ZGUgIklubGluZUl0ZXJhdG9y
TGluZS5oIgorI2luY2x1ZGUgIklubGluZUl0ZXJhdG9yTGluZUJveC5oIgogI2luY2x1ZGUgIkxh
eW91dEludGVncmF0aW9uTGluZUxheW91dC5oIgogI2luY2x1ZGUgIkxlZ2FjeUlubGluZUVsZW1l
bnRCb3guaCIKICNpbmNsdWRlICJMZWdhY3lJbmxpbmVUZXh0Qm94LmgiCkBAIC05NzMsOSArOTcz
LDkgQEAgdm9pZCBSZW5kZXJJbmxpbmU6OnBhaW50T3V0bGluZShQYWludEluZm8mIHBhaW50SW5m
bywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2YKICAgICByZWN0cy5hcHBlbmQoTGF5b3V0UmVj
dCgpKTsKIAogICAgIGZvciAoYXV0byBib3ggPSBJbmxpbmVJdGVyYXRvcjo6Zmlyc3RJbmxpbmVC
b3hGb3IoKnRoaXMpOyBib3g7IGJveC50cmF2ZXJzZU5leHRJbmxpbmVCb3goKSkgewotICAgICAg
ICBhdXRvIGxpbmUgPSBib3gtPmxpbmUoKTsKLSAgICAgICAgYXV0byB0b3AgPSBMYXlvdXRVbml0
IHsgc3RkOjptYXgobGluZS0+Y29udGVudExvZ2ljYWxUb3AoKSwgYm94LT5sb2dpY2FsVG9wKCkp
IH07Ci0gICAgICAgIGF1dG8gYm90dG9tID0gTGF5b3V0VW5pdCB7IHN0ZDo6bWluKGxpbmUtPmNv
bnRlbnRMb2dpY2FsQm90dG9tKCksIGJveC0+bG9naWNhbEJvdHRvbSgpKSB9OworICAgICAgICBh
dXRvIGxpbmVCb3ggPSBib3gtPmxpbmVCb3goKTsKKyAgICAgICAgYXV0byB0b3AgPSBMYXlvdXRV
bml0IHsgc3RkOjptYXgobGluZUJveC0+Y29udGVudExvZ2ljYWxUb3AoKSwgYm94LT5sb2dpY2Fs
VG9wKCkpIH07CisgICAgICAgIGF1dG8gYm90dG9tID0gTGF5b3V0VW5pdCB7IHN0ZDo6bWluKGxp
bmVCb3gtPmNvbnRlbnRMb2dpY2FsQm90dG9tKCksIGJveC0+bG9naWNhbEJvdHRvbSgpKSB9Owog
ICAgICAgICAvLyBGSVhNRTogVGhpcyBpcyBtaXhpbmcgcGh5c2ljYWwgYW5kIGxvZ2ljYWwgY29v
cmRpbmF0ZXMuCiAgICAgICAgIHJlY3RzLmFwcGVuZCh7IExheW91dFVuaXQoYm94LT52aXN1YWxS
ZWN0SWdub3JpbmdCbG9ja0RpcmVjdGlvbigpLngoKSksIHRvcCwgTGF5b3V0VW5pdChib3gtPmxv
Z2ljYWxXaWR0aCgpKSwgYm90dG9tIC0gdG9wIH0pOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaW5lQnJlYWsuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxpbmVCcmVhay5jcHAKaW5kZXggZDcyZjI0NTdlZWE0ZDA2YjI4YmNh
MzBjOWJjM2Q0NDI4NDM4YmNiZi4uNmZkMTM1YzkwYWRiYjIzOGI0MDljZWIyMjQ5OGM2NGFjYWQx
MTcyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpbmVCcmVh
ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpbmVCcmVhay5jcHAK
QEAgLTI3LDcgKzI3LDcgQEAKICNpbmNsdWRlICJIVE1MRWxlbWVudC5oIgogI2luY2x1ZGUgIkhU
TUxXQlJFbGVtZW50LmgiCiAjaW5jbHVkZSAiSW5saW5lSXRlcmF0b3JCb3guaCIKLSNpbmNsdWRl
ICJJbmxpbmVJdGVyYXRvckxpbmUuaCIKKyNpbmNsdWRlICJJbmxpbmVJdGVyYXRvckxpbmVCb3gu
aCIKICNpbmNsdWRlICJJbmxpbmVSdW5BbmRPZmZzZXQuaCIKICNpbmNsdWRlICJMZWdhY3lJbmxp
bmVFbGVtZW50Qm94LmgiCiAjaW5jbHVkZSAiTGVnYWN5Um9vdElubGluZUJveC5oIgpAQCAtMTg2
LDE4ICsxODYsMTggQEAgdm9pZCBSZW5kZXJMaW5lQnJlYWs6OmNvbGxlY3RTZWxlY3Rpb25HZW9t
ZXRyaWVzKFZlY3RvcjxTZWxlY3Rpb25HZW9tZXRyeT4mIHJlY3QKIAogICAgIGlmICghcnVuKQog
ICAgICAgICByZXR1cm47Ci0gICAgYXV0byBsaW5lID0gcnVuLT5saW5lKCk7CisgICAgYXV0byBs
aW5lQm94ID0gcnVuLT5saW5lQm94KCk7CiAKLSAgICBhdXRvIGxpbmVTZWxlY3Rpb25SZWN0ID0g
TGluZVNlbGVjdGlvbjo6bG9naWNhbFJlY3QoKmxpbmUpOworICAgIGF1dG8gbGluZVNlbGVjdGlv
blJlY3QgPSBMaW5lU2VsZWN0aW9uOjpsb2dpY2FsUmVjdCgqbGluZUJveCk7CiAgICAgTGF5b3V0
UmVjdCByZWN0ID0gSW50UmVjdChydW4tPmxvZ2ljYWxMZWZ0KCksIGxpbmVTZWxlY3Rpb25SZWN0
LnkoKSwgMCwgbGluZVNlbGVjdGlvblJlY3QuaGVpZ2h0KCkpOwotICAgIGlmICghbGluZS0+aXNI
b3Jpem9udGFsKCkpCisgICAgaWYgKCFsaW5lQm94LT5pc0hvcml6b250YWwoKSkKICAgICAgICAg
cmVjdCA9IHJlY3QudHJhbnNwb3NlZFJlY3QoKTsKIAotICAgIGlmIChsaW5lLT5pc0ZpcnN0QWZ0
ZXJQYWdlQnJlYWsoKSkgeworICAgIGlmIChsaW5lQm94LT5pc0ZpcnN0QWZ0ZXJQYWdlQnJlYWso
KSkgewogICAgICAgICBpZiAocnVuLT5pc0hvcml6b250YWwoKSkKLSAgICAgICAgICAgIHJlY3Qu
c2hpZnRZRWRnZVRvKGxpbmUtPmxpbmVCb3hUb3AoKSk7CisgICAgICAgICAgICByZWN0LnNoaWZ0
WUVkZ2VUbyhsaW5lQm94LT50b3AoKSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJlY3Qu
c2hpZnRYRWRnZVRvKGxpbmUtPmxpbmVCb3hUb3AoKSk7CisgICAgICAgICAgICByZWN0LnNoaWZ0
WEVkZ2VUbyhsaW5lQm94LT50b3AoKSk7CiAgICAgfQogCiAgICAgLy8gRklYTUU6IE91dC1vZi1m
bG93IHBvc2l0aW9uZWQgbGluZSBicmVha3MgZG8gbm90IGZvbGxvdyBub3JtYWwgY29udGFpbmlu
ZyBibG9jayBjaGFpbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJSZXBsYWNlZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQu
Y3BwCmluZGV4IGY5YmJkYmU5OTA4Y2E5MmMwOGM3NWNkM2FmNThlMzAyYmJiOTY0MTcuLjg4YzBl
ZTE3MzRlODdlMDUwZjVmNDYwMmY4NTAwZDY2OTQxMzcwM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcApAQCAtMzUsNyArMzUsNyBAQAogI2luY2x1ZGUg
IkhpZ2hsaWdodERhdGEuaCIKICNpbmNsdWRlICJIaWdobGlnaHRSZWdpc3Rlci5oIgogI2luY2x1
ZGUgIklubGluZUl0ZXJhdG9yQm94LmgiCi0jaW5jbHVkZSAiSW5saW5lSXRlcmF0b3JMaW5lLmgi
CisjaW5jbHVkZSAiSW5saW5lSXRlcmF0b3JMaW5lQm94LmgiCiAjaW5jbHVkZSAiTGF5b3V0UmVw
YWludGVyLmgiCiAjaW5jbHVkZSAiTGluZVNlbGVjdGlvbi5oIgogI2luY2x1ZGUgIlJlbmRlckJs
b2NrLmgiCkBAIC03MjEsOSArNzIxLDkgQEAgVmlzaWJsZVBvc2l0aW9uIFJlbmRlclJlcGxhY2Vk
Ojpwb3NpdGlvbkZvclBvaW50KGNvbnN0IExheW91dFBvaW50JiBwb2ludCwgY29uc3QKIHsKICAg
ICBhdXRvIFt0b3AsIGJvdHRvbV0gPSBbJl0oKSAtPiBzdGQ6OnBhaXI8ZmxvYXQsIGZsb2F0PiB7
CiAgICAgICAgIGlmIChhdXRvIHJ1biA9IElubGluZUl0ZXJhdG9yOjpib3hGb3IoKnRoaXMpKSB7
Ci0gICAgICAgICAgICBhdXRvIGxpbmUgPSBydW4tPmxpbmUoKTsKLSAgICAgICAgICAgIGF1dG8g
bGluZUNvbnRlbnRUb3AgPSBMYXlvdXRVbml0IHsgc3RkOjptaW4ocHJldmlvdXNMaW5lQ29udGVu
dEJvdHRvbU9yQm9yZGVyQW5kUGFkZGluZygqbGluZSksIGxpbmUtPmNvbnRlbnRMb2dpY2FsVG9w
KCkpIH07Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIobGluZUNvbnRlbnRUb3As
IExpbmVTZWxlY3Rpb246OmxvZ2ljYWxCb3R0b20oKmxpbmUpKTsKKyAgICAgICAgICAgIGF1dG8g
bGluZUJveCA9IHJ1bi0+bGluZUJveCgpOworICAgICAgICAgICAgYXV0byBsaW5lQ29udGVudFRv
cCA9IExheW91dFVuaXQgeyBzdGQ6Om1pbihwcmV2aW91c0xpbmVCb3hDb250ZW50Qm90dG9tT3JC
b3JkZXJBbmRQYWRkaW5nKCpsaW5lQm94KSwgbGluZUJveC0+Y29udGVudExvZ2ljYWxUb3AoKSkg
fTsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihsaW5lQ29udGVudFRvcCwgTGlu
ZVNlbGVjdGlvbjo6bG9naWNhbEJvdHRvbSgqbGluZUJveCkpOwogICAgICAgICB9CiAgICAgICAg
IHJldHVybiBzdGQ6Om1ha2VfcGFpcihsb2dpY2FsVG9wKCksIGxvZ2ljYWxCb3R0b20oKSk7CiAg
ICAgfSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwCmluZGV4IDhkYmFk
YzBlM2ZkOGVlODc0Y2UwOWU1YzljYzEyODQyNjkyMWE3NjguLjRiZTYxNGQ2ZTIzOWVhMjVhOTQ2
YmQ2OWJhOGMxZjhjNzQ0MDA3MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4
dC5jcHAKQEAgLTM2LDcgKzM2LDcgQEAKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKICNpbmNsdWRl
ICJIVE1MUGFyc2VySWRpb21zLmgiCiAjaW5jbHVkZSAiSHlwaGVuYXRpb24uaCIKLSNpbmNsdWRl
ICJJbmxpbmVJdGVyYXRvckxpbmUuaCIKKyNpbmNsdWRlICJJbmxpbmVJdGVyYXRvckxpbmVCb3gu
aCIKICNpbmNsdWRlICJJbmxpbmVJdGVyYXRvckxvZ2ljYWxPcmRlclRyYXZlcnNhbC5oIgogI2lu
Y2x1ZGUgIklubGluZUl0ZXJhdG9yVGV4dEJveC5oIgogI2luY2x1ZGUgIklubGluZVJ1bkFuZE9m
ZnNldC5oIgpAQCAtMzQyLDExICszNDIsMTEgQEAgdm9pZCBSZW5kZXJUZXh0Ojpjb2xsZWN0U2Vs
ZWN0aW9uR2VvbWV0cmllcyhWZWN0b3I8U2VsZWN0aW9uR2VvbWV0cnk+JiByZWN0cywgdW4KICAg
ICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogCi0gICAgICAgIGlmIChydW4tPmxp
bmUoKS0+aXNGaXJzdEFmdGVyUGFnZUJyZWFrKCkpIHsKKyAgICAgICAgaWYgKHJ1bi0+bGluZUJv
eCgpLT5pc0ZpcnN0QWZ0ZXJQYWdlQnJlYWsoKSkgewogICAgICAgICAgICAgaWYgKHJ1bi0+aXNI
b3Jpem9udGFsKCkpCi0gICAgICAgICAgICAgICAgcmVjdC5zaGlmdFlFZGdlVG8ocnVuLT5saW5l
KCktPmxpbmVCb3hUb3AoKSk7CisgICAgICAgICAgICAgICAgcmVjdC5zaGlmdFlFZGdlVG8ocnVu
LT5saW5lQm94KCktPnRvcCgpKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBy
ZWN0LnNoaWZ0WEVkZ2VUbyhydW4tPmxpbmUoKS0+bGluZUJveFRvcCgpKTsKKyAgICAgICAgICAg
ICAgICByZWN0LnNoaWZ0WEVkZ2VUbyhydW4tPmxpbmVCb3goKS0+dG9wKCkpOwogICAgICAgICB9
CiAKICAgICAgICAgUmVuZGVyQmxvY2sqIGNvbnRhaW5pbmdCbG9jayA9IHRoaXMtPmNvbnRhaW5p
bmdCbG9jaygpOwpAQCAtNjczLDEyICs2NzMsMTIgQEAgVmlzaWJsZVBvc2l0aW9uIFJlbmRlclRl
eHQ6OnBvc2l0aW9uRm9yUG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmIHBvaW50LCBjb25zdCBSZW4K
ICAgICAgICAgaWYgKHJ1bi0+aXNMaW5lQnJlYWsoKSAmJiAhcnVuLT5wcmV2aW91c09uTGluZSgp
ICYmIHJ1bi0+bmV4dE9uTGluZSgpICYmICFydW4tPm5leHRPbkxpbmUoKS0+aXNMaW5lQnJlYWso
KSkKICAgICAgICAgICAgIHJ1bi50cmF2ZXJzZU5leHRUZXh0Qm94KCk7CiAKLSAgICAgICAgYXV0
byBsaW5lID0gcnVuLT5saW5lKCk7Ci0gICAgICAgIGF1dG8gdG9wID0gTGF5b3V0VW5pdCB7IHN0
ZDo6bWluKHByZXZpb3VzTGluZUNvbnRlbnRCb3R0b21PckJvcmRlckFuZFBhZGRpbmcoKmxpbmUp
LCBsaW5lLT5jb250ZW50TG9naWNhbFRvcCgpKSB9OworICAgICAgICBhdXRvIGxpbmVCb3ggPSBy
dW4tPmxpbmVCb3goKTsKKyAgICAgICAgYXV0byB0b3AgPSBMYXlvdXRVbml0IHsgc3RkOjptaW4o
cHJldmlvdXNMaW5lQm94Q29udGVudEJvdHRvbU9yQm9yZGVyQW5kUGFkZGluZygqbGluZUJveCks
IGxpbmVCb3gtPmNvbnRlbnRMb2dpY2FsVG9wKCkpIH07CiAgICAgICAgIGlmIChwb2ludEJsb2Nr
RGlyZWN0aW9uID4gdG9wIHx8ICghYmxvY2tzQXJlRmxpcHBlZCAmJiBwb2ludEJsb2NrRGlyZWN0
aW9uID09IHRvcCkpIHsKLSAgICAgICAgICAgIGF1dG8gYm90dG9tID0gTGluZVNlbGVjdGlvbjo6
bG9naWNhbEJvdHRvbSgqbGluZSk7Ci0gICAgICAgICAgICBpZiAoYXV0byBuZXh0TGluZSA9IGxp
bmUtPm5leHQoKSkKLSAgICAgICAgICAgICAgICBib3R0b20gPSBzdGQ6Om1pbihib3R0b20sIG5l
eHRMaW5lLT5jb250ZW50TG9naWNhbFRvcCgpKTsKKyAgICAgICAgICAgIGF1dG8gYm90dG9tID0g
TGluZVNlbGVjdGlvbjo6bG9naWNhbEJvdHRvbSgqbGluZUJveCk7CisgICAgICAgICAgICBpZiAo
YXV0byBuZXh0TGluZUJveCA9IGxpbmVCb3gtPm5leHQoKSkKKyAgICAgICAgICAgICAgICBib3R0
b20gPSBzdGQ6Om1pbihib3R0b20sIG5leHRMaW5lQm94LT5jb250ZW50TG9naWNhbFRvcCgpKTsK
IAogICAgICAgICAgICAgaWYgKHBvaW50QmxvY2tEaXJlY3Rpb24gPCBib3R0b20gfHwgKGJsb2Nr
c0FyZUZsaXBwZWQgJiYgcG9pbnRCbG9ja0RpcmVjdGlvbiA9PSBib3R0b20pKSB7CiAgICAgICAg
ICAgICAgICAgU2hvdWxkQWZmaW5pdHlCZURvd25zdHJlYW0gc2hvdWxkQWZmaW5pdHlCZURvd25z
dHJlYW07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dEJveFBhaW50
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRCb3hQYWludGVyLmNwcAppbmRl
eCA5NDMyZDQyYjQ0MWE0N2EzNTAxNjY0ZjE4OGI2NjhmMWM4ODUzZTVlLi5kZjExYTYwNmMyODA2
ODEzNWJhM2Q1MDBhZDY3MDJlOWMzNmUyZjQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvVGV4dEJveFBhaW50ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9UZXh0Qm94UGFpbnRlci5jcHAKQEAgLTI5LDcgKzI5LDcgQEAKICNpbmNsdWRlICJFZGl0b3Iu
aCIKICNpbmNsdWRlICJFdmVudFJlZ2lvbi5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5o
IgotI2luY2x1ZGUgIklubGluZUl0ZXJhdG9yTGluZS5oIgorI2luY2x1ZGUgIklubGluZUl0ZXJh
dG9yTGluZUJveC5oIgogI2luY2x1ZGUgIkxlZ2FjeUlubGluZVRleHRCb3guaCIKICNpbmNsdWRl
ICJMaW5lU2VsZWN0aW9uLmgiCiAjaW5jbHVkZSAiUGFpbnRJbmZvLmgiCkBAIC02Niw3ICs2Niw3
IEBAIFRleHRCb3hQYWludGVyOjpUZXh0Qm94UGFpbnRlcihjb25zdCBJbmxpbmVJdGVyYXRvcjo6
VGV4dEJveEl0ZXJhdG9yJiB0ZXh0Qm94LCBQCiAgICAgLCBtX3BhaW50SW5mbyhwYWludEluZm8p
CiAgICAgLCBtX3NlbGVjdGFibGVSYW5nZShtX3RleHRCb3gtPnNlbGVjdGFibGVSYW5nZSgpKQog
ICAgICwgbV9wYWludFJlY3QoY29tcHV0ZVBhaW50UmVjdChwYWludE9mZnNldCkpCi0gICAgLCBt
X2lzRmlyc3RMaW5lKG1fdGV4dEJveC0+bGluZSgpLT5pc0ZpcnN0KCkpCisgICAgLCBtX2lzRmly
c3RMaW5lKG1fdGV4dEJveC0+bGluZUJveCgpLT5pc0ZpcnN0KCkpCiAgICAgLCBtX2lzUHJpbnRp
bmcobV9kb2N1bWVudC5wcmludGluZygpKQogICAgICwgbV9oYXZlU2VsZWN0aW9uKGNvbXB1dGVI
YXZlU2VsZWN0aW9uKCkpCiAgICAgLCBtX2NvbnRhaW5zQ29tcG9zaXRpb24obV9yZW5kZXJlci50
ZXh0Tm9kZSgpICYmIG1fcmVuZGVyZXIuZnJhbWUoKS5lZGl0b3IoKS5jb21wb3NpdGlvbk5vZGUo
KSA9PSBtX3JlbmRlcmVyLnRleHROb2RlKCkpCkBAIC0yODksOSArMjg5LDkgQEAgdm9pZCBUZXh0
Qm94UGFpbnRlcjo6cGFpbnRCYWNrZ3JvdW5kKHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25l
ZCBlbmRPZmZzZXQsIGMKIAogICAgIC8vIE5vdGUgdGhhdCBpZiB0aGUgdGV4dCBpcyB0cnVuY2F0
ZWQsIHdlIGxldCB0aGUgdGhpbmcgYmVpbmcgcGFpbnRlZCBpbiB0aGUgdHJ1bmNhdGlvbgogICAg
IC8vIGRyYXcgaXRzIG93biBoaWdobGlnaHQuCi0gICAgYXV0byBsaW5lID0gdGV4dEJveCgpLmxp
bmUoKTsKLSAgICBhdXRvIHNlbGVjdGlvbkJvdHRvbSA9IExpbmVTZWxlY3Rpb246OmxvZ2ljYWxC
b3R0b20oKmxpbmUpOwotICAgIGF1dG8gc2VsZWN0aW9uVG9wID0gTGluZVNlbGVjdGlvbjo6bG9n
aWNhbFRvcEFkanVzdGVkRm9yUHJlY2VkaW5nQmxvY2soKmxpbmUpOworICAgIGF1dG8gbGluZUJv
eCA9IHRleHRCb3goKS5saW5lQm94KCk7CisgICAgYXV0byBzZWxlY3Rpb25Cb3R0b20gPSBMaW5l
U2VsZWN0aW9uOjpsb2dpY2FsQm90dG9tKCpsaW5lQm94KTsKKyAgICBhdXRvIHNlbGVjdGlvblRv
cCA9IExpbmVTZWxlY3Rpb246OmxvZ2ljYWxUb3BBZGp1c3RlZEZvclByZWNlZGluZ0Jsb2NrKCps
aW5lQm94KTsKICAgICAvLyBVc2Ugc2FtZSB5IHBvc2l0aW9uaW5nIGFuZCBoZWlnaHQgYXMgZm9y
IHNlbGVjdGlvbiwgc28gdGhhdCB3aGVuIHRoZSBzZWxlY3Rpb24gYW5kIHRoaXMgc3VicmFuZ2Ug
YXJlIG9uCiAgICAgLy8gdGhlIHNhbWUgd29yZCB0aGVyZSBhcmUgbm8gcGllY2VzIHN0aWNraW5n
IG91dC4KICAgICBhdXRvIGRlbHRhWSA9IExheW91dFVuaXQgeyBtX3N0eWxlLmlzRmxpcHBlZExp
bmVzV3JpdGluZ01vZGUoKSA/IHNlbGVjdGlvbkJvdHRvbSAtIHRleHRCb3goKS5sb2dpY2FsQm90
dG9tKCkgOiB0ZXh0Qm94KCkubG9naWNhbFRvcCgpIC0gc2VsZWN0aW9uVG9wIH07CkBAIC00NDYs
NyArNDQ2LDcgQEAgc3RhdGljIGZsb2F0IHRleHRQb3NpdGlvbihjb25zdCBJbmxpbmVJdGVyYXRv
cjo6VGV4dEJveEl0ZXJhdG9yJiB0ZXh0Qm94KQogICAgIC8vIGZyb20gdGhlIGNvbnRhaW5pbmcg
YmxvY2sgZWRnZSBpbiBpdHMgbWVhc3VyZW1lbnQuIHRleHRQb3NpdGlvbigpIHNob3VsZCBiZSBj
b25zaXN0ZW50IHNvIHRoZSB0ZXh0IGFyZSByZW5kZXJlZCBpbiB0aGUgc2FtZSB3aWR0aC4KICAg
ICBpZiAoIXRleHRCb3gtPmxvZ2ljYWxMZWZ0KCkpCiAgICAgICAgIHJldHVybiAwOwotICAgIHJl
dHVybiB0ZXh0Qm94LT5sb2dpY2FsTGVmdCgpIC0gdGV4dEJveC0+bGluZSgpLT5jb250ZW50TG9n
aWNhbExlZnQoKTsKKyAgICByZXR1cm4gdGV4dEJveC0+bG9naWNhbExlZnQoKSAtIHRleHRCb3gt
PmxpbmVCb3goKS0+Y29udGVudExvZ2ljYWxMZWZ0KCk7CiB9CiAKIHZvaWQgVGV4dEJveFBhaW50
ZXI6OnBhaW50Q29tcG9zaXRpb25VbmRlcmxpbmUoY29uc3QgQ29tcG9zaXRpb25VbmRlcmxpbmUm
IHVuZGVybGluZSkKQEAgLTU3MCw3ICs1NzAsNyBAQCBGbG9hdFJlY3QgVGV4dEJveFBhaW50ZXI6
OmNvbXB1dGVQYWludFJlY3QoY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0KQogCiAgICAg
bG9jYWxQYWludE9mZnNldC5tb3ZlKDAsIG1fc3R5bGUuaXNIb3Jpem9udGFsV3JpdGluZ01vZGUo
KSA/IDAgOiAtdGV4dEJveCgpLmxvZ2ljYWxIZWlnaHQoKSk7CiAKLSAgICBhdXRvIGJveE9yaWdp
biA9IHRleHRCb3goKS52aXN1YWxSZWN0KHRleHRCb3goKS5saW5lKCktPmNvbnRhaW5pbmdCbG9j
aygpLmxvZ2ljYWxIZWlnaHQoKSkubG9jYXRpb24oKTsKKyAgICBhdXRvIGJveE9yaWdpbiA9IHRl
eHRCb3goKS52aXN1YWxSZWN0KHRleHRCb3goKS5saW5lQm94KCktPmNvbnRhaW5pbmdCbG9jaygp
LmxvZ2ljYWxIZWlnaHQoKSkubG9jYXRpb24oKTsKICAgICBib3hPcmlnaW4ubW92ZUJ5KGxvY2Fs
UGFpbnRPZmZzZXQpOwogICAgIHJldHVybiB7IGJveE9yaWdpbiwgRmxvYXRTaXplKHRleHRCb3go
KS5sb2dpY2FsV2lkdGgoKSwgdGV4dEJveCgpLmxvZ2ljYWxIZWlnaHQoKSkgfTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUm9vdElubGluZUJveC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Jvb3RJbmxpbmVCb3guY3BwCmluZGV4
IDA5NWE4M2NlZTMwYzJjMDExMGRmYmI1YjNiNDU4ZjllMmMyZDQwOWQuLjljNmMwOTgwMTM3NmJj
ZDM3ZGRmZjlhMzkwYTNlYjAzNjY5NDM5ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvU1ZHUm9vdElubGluZUJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9TVkdSb290SW5saW5lQm94LmNwcApAQCAtMzExLDkgKzMxMSw5IEBAIHN0YXRp
YyBpbmxpbmUgdm9pZCByZXZlcnNlSW5saW5lQm94UmFuZ2VBbmRWYWx1ZUxpc3RzSWZOZWVkZWQo
VmVjdG9yPFNWR1RleHRMYXlvCiAKIHZvaWQgU1ZHUm9vdElubGluZUJveDo6cmVvcmRlclZhbHVl
TGlzdHNUb0xvZ2ljYWxPcmRlcihWZWN0b3I8U1ZHVGV4dExheW91dEF0dHJpYnV0ZXMqPiYgYXR0
cmlidXRlcykKIHsKLSAgICBhdXRvIGxpbmUgPSBJbmxpbmVJdGVyYXRvcjo6TGluZUl0ZXJhdG9y
KHRoaXMpOworICAgIGF1dG8gbGluZUJveCA9IElubGluZUl0ZXJhdG9yOjpMaW5lQm94SXRlcmF0
b3IodGhpcyk7CiAKLSAgICBJbmxpbmVJdGVyYXRvcjo6bGVhZkJveGVzSW5Mb2dpY2FsT3JkZXIo
bGluZSwgWyZdKGF1dG8gZmlyc3QsIGF1dG8gbGFzdCkgeworICAgIElubGluZUl0ZXJhdG9yOjps
ZWFmQm94ZXNJbkxvZ2ljYWxPcmRlcihsaW5lQm94LCBbJl0oYXV0byBmaXJzdCwgYXV0byBsYXN0
KSB7CiAgICAgICAgIHJldmVyc2VJbmxpbmVCb3hSYW5nZUFuZFZhbHVlTGlzdHNJZk5lZWRlZChh
dHRyaWJ1dGVzLCBmaXJzdCwgbGFzdCk7CiAgICAgfSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N0eWxlL0lubGluZVRleHRCb3hTdHlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdHls
ZS9JbmxpbmVUZXh0Qm94U3R5bGUuY3BwCmluZGV4IDQxY2NlZWNhZWYxYTI5MDM5NDU4OTZkODE5
Y2Q1YmMyZDBlNTU3ZGMuLjU3NWE1YzA1YjA3YWU5NTU3NTczNWVhODgxNzg3M2VmNDVjMTVmNmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL0lubGluZVRleHRCb3hTdHlsZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvSW5saW5lVGV4dEJveFN0eWxlLmNwcApAQCAtMjks
NyArMjksNyBAQAogI2luY2x1ZGUgIkZvbnRDYXNjYWRlLmgiCiAjaW5jbHVkZSAiSFRNTEFuY2hv
ckVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKLSNpbmNsdWRlICJJbmxpbmVJdGVy
YXRvckxpbmUuaCIKKyNpbmNsdWRlICJJbmxpbmVJdGVyYXRvckxpbmVCb3guaCIKICNpbmNsdWRl
ICJJbmxpbmVJdGVyYXRvclRleHRCb3guaCIKICNpbmNsdWRlICJMZWdhY3lJbmxpbmVUZXh0Qm94
LmgiCiAjaW5jbHVkZSAiTGVnYWN5Um9vdElubGluZUJveC5oIgpAQCAtNDksOSArNDksOSBAQCBz
dGF0aWMgYm9vbCBpc0FuY2VzdG9yQW5kV2l0aGluQmxvY2soY29uc3QgUmVuZGVySW5saW5lJiBh
bmNlc3RvciwgY29uc3QgUmVuZGVyTwogICAgIHJldHVybiBmYWxzZTsKIH0KIAotc3RhdGljIHZv
aWQgbWluTG9naWNhbFRvcEZvclRleHREZWNvcmF0aW9uTGluZShjb25zdCBJbmxpbmVJdGVyYXRv
cjo6TGluZUl0ZXJhdG9yJiBsaW5lLCBmbG9hdCYgbWluTG9naWNhbFRvcCwgY29uc3QgUmVuZGVy
RWxlbWVudCogZGVjb3JhdGlvblJlbmRlcmVyLCBPcHRpb25TZXQ8VGV4dERlY29yYXRpb25MaW5l
PiB0ZXh0RGVjb3JhdGlvbkxpbmUpCitzdGF0aWMgdm9pZCBtaW5Mb2dpY2FsVG9wRm9yVGV4dERl
Y29yYXRpb25MaW5lKGNvbnN0IElubGluZUl0ZXJhdG9yOjpMaW5lQm94SXRlcmF0b3ImIGxpbmVC
b3gsIGZsb2F0JiBtaW5Mb2dpY2FsVG9wLCBjb25zdCBSZW5kZXJFbGVtZW50KiBkZWNvcmF0aW9u
UmVuZGVyZXIsIE9wdGlvblNldDxUZXh0RGVjb3JhdGlvbkxpbmU+IHRleHREZWNvcmF0aW9uTGlu
ZSkKIHsKLSAgICBmb3IgKGF1dG8gcnVuID0gbGluZS0+Zmlyc3RMZWFmQm94KCk7IHJ1bjsgcnVu
LnRyYXZlcnNlTmV4dE9uTGluZSgpKSB7CisgICAgZm9yIChhdXRvIHJ1biA9IGxpbmVCb3gtPmZp
cnN0TGVhZkJveCgpOyBydW47IHJ1bi50cmF2ZXJzZU5leHRPbkxpbmUoKSkgewogICAgICAgICBp
ZiAocnVuLT5yZW5kZXJlcigpLmlzT3V0T2ZGbG93UG9zaXRpb25lZCgpKQogICAgICAgICAgICAg
Y29udGludWU7IC8vIFBvc2l0aW9uZWQgcGxhY2Vob2xkZXJzIGRvbid0IGFmZmVjdCBjYWxjdWxh
dGlvbnMuCiAKQEAgLTY2LDkgKzY2LDkgQEAgc3RhdGljIHZvaWQgbWluTG9naWNhbFRvcEZvclRl
eHREZWNvcmF0aW9uTGluZShjb25zdCBJbmxpbmVJdGVyYXRvcjo6TGluZUl0ZXJhdG8KICAgICB9
CiB9CiAKLXN0YXRpYyB2b2lkIG1heExvZ2ljYWxCb3R0b21Gb3JUZXh0RGVjb3JhdGlvbkxpbmUo
Y29uc3QgSW5saW5lSXRlcmF0b3I6OkxpbmVJdGVyYXRvciYgbGluZSwgZmxvYXQmIG1heExvZ2lj
YWxCb3R0b20sIGNvbnN0IFJlbmRlckVsZW1lbnQqIGRlY29yYXRpb25SZW5kZXJlciwgT3B0aW9u
U2V0PFRleHREZWNvcmF0aW9uTGluZT4gdGV4dERlY29yYXRpb25MaW5lKQorc3RhdGljIHZvaWQg
bWF4TG9naWNhbEJvdHRvbUZvclRleHREZWNvcmF0aW9uTGluZShjb25zdCBJbmxpbmVJdGVyYXRv
cjo6TGluZUJveEl0ZXJhdG9yJiBsaW5lQm94LCBmbG9hdCYgbWF4TG9naWNhbEJvdHRvbSwgY29u
c3QgUmVuZGVyRWxlbWVudCogZGVjb3JhdGlvblJlbmRlcmVyLCBPcHRpb25TZXQ8VGV4dERlY29y
YXRpb25MaW5lPiB0ZXh0RGVjb3JhdGlvbkxpbmUpCiB7Ci0gICAgZm9yIChhdXRvIHJ1biA9IGxp
bmUtPmZpcnN0TGVhZkJveCgpOyBydW47IHJ1bi50cmF2ZXJzZU5leHRPbkxpbmUoKSkgeworICAg
IGZvciAoYXV0byBydW4gPSBsaW5lQm94LT5maXJzdExlYWZCb3goKTsgcnVuOyBydW4udHJhdmVy
c2VOZXh0T25MaW5lKCkpIHsKICAgICAgICAgaWYgKHJ1bi0+cmVuZGVyZXIoKS5pc091dE9mRmxv
d1Bvc2l0aW9uZWQoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOyAvLyBQb3NpdGlvbmVkIHBsYWNl
aG9sZGVycyBkb24ndCBhZmZlY3QgY2FsY3VsYXRpb25zLgogCkBAIC0xMTksNyArMTE5LDcgQEAg
ZmxvYXQgY29tcHV0ZVVuZGVybGluZU9mZnNldChUZXh0VW5kZXJsaW5lUG9zaXRpb24gdW5kZXJs
aW5lUG9zaXRpb24sIFRleHRVbmRlcmwKICAgICBhdXRvIHJlc29sdmVkVW5kZXJsaW5lUG9zaXRp
b24gPSB1bmRlcmxpbmVQb3NpdGlvbjsKICAgICBpZiAocmVzb2x2ZWRVbmRlcmxpbmVQb3NpdGlv
biA9PSBUZXh0VW5kZXJsaW5lUG9zaXRpb246OkF1dG8gJiYgdW5kZXJsaW5lT2Zmc2V0LmlzQXV0
bygpKSB7CiAgICAgICAgIGlmICh0ZXh0UnVuKQotICAgICAgICAgICAgcmVzb2x2ZWRVbmRlcmxp
bmVQb3NpdGlvbiA9IHRleHRSdW4tPmxpbmUoKS0+YmFzZWxpbmVUeXBlKCkgPT0gSWRlb2dyYXBo
aWNCYXNlbGluZSA/IFRleHRVbmRlcmxpbmVQb3NpdGlvbjo6VW5kZXIgOiBUZXh0VW5kZXJsaW5l
UG9zaXRpb246OkF1dG87CisgICAgICAgICAgICByZXNvbHZlZFVuZGVybGluZVBvc2l0aW9uID0g
dGV4dFJ1bi0+bGluZUJveCgpLT5iYXNlbGluZVR5cGUoKSA9PSBJZGVvZ3JhcGhpY0Jhc2VsaW5l
ID8gVGV4dFVuZGVybGluZVBvc2l0aW9uOjpVbmRlciA6IFRleHRVbmRlcmxpbmVQb3NpdGlvbjo6
QXV0bzsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgcmVzb2x2ZWRVbmRlcmxpbmVQb3NpdGlv
biA9IFRleHRVbmRlcmxpbmVQb3NpdGlvbjo6QXV0bzsKICAgICB9CkBAIC0xMzQsMTcgKzEzNCwx
NyBAQCBmbG9hdCBjb21wdXRlVW5kZXJsaW5lT2Zmc2V0KFRleHRVbmRlcmxpbmVQb3NpdGlvbiB1
bmRlcmxpbmVQb3NpdGlvbiwgVGV4dFVuZGVybAogICAgIGNhc2UgVGV4dFVuZGVybGluZVBvc2l0
aW9uOjpVbmRlcjogewogICAgICAgICBBU1NFUlQodGV4dFJ1bik7CiAgICAgICAgIC8vIFBvc2l0
aW9uIHVuZGVybGluZSByZWxhdGl2ZSB0byB0aGUgYm90dG9tIGVkZ2Ugb2YgdGhlIGxvd2VzdCBl
bGVtZW50J3MgY29udGVudCBib3guCi0gICAgICAgIGF1dG8gbGluZSA9IHRleHRSdW4tPmxpbmUo
KTsKLSAgICAgICAgYXV0byogZGVjb3JhdGlvblJlbmRlcmVyID0gZW5jbG9zaW5nUmVuZGVyZXJX
aXRoVGV4dERlY29yYXRpb24odGV4dFJ1bi0+cmVuZGVyZXIoKSwgVGV4dERlY29yYXRpb25MaW5l
OjpVbmRlcmxpbmUsIGxpbmUtPmlzRmlyc3QoKSk7CisgICAgICAgIGF1dG8gbGluZUJveCA9IHRl
eHRSdW4tPmxpbmVCb3goKTsKKyAgICAgICAgYXV0byogZGVjb3JhdGlvblJlbmRlcmVyID0gZW5j
bG9zaW5nUmVuZGVyZXJXaXRoVGV4dERlY29yYXRpb24odGV4dFJ1bi0+cmVuZGVyZXIoKSwgVGV4
dERlY29yYXRpb25MaW5lOjpVbmRlcmxpbmUsIGxpbmVCb3gtPmlzRmlyc3QoKSk7CiAgICAgICAg
IAogICAgICAgICBmbG9hdCBvZmZzZXQ7CiAgICAgICAgIGlmICh0ZXh0UnVuLT5yZW5kZXJlcigp
LnN0eWxlKCkuaXNGbGlwcGVkTGluZXNXcml0aW5nTW9kZSgpKSB7CiAgICAgICAgICAgICBvZmZz
ZXQgPSB0ZXh0UnVuLT5sb2dpY2FsVG9wKCk7Ci0gICAgICAgICAgICBtaW5Mb2dpY2FsVG9wRm9y
VGV4dERlY29yYXRpb25MaW5lKGxpbmUsIG9mZnNldCwgZGVjb3JhdGlvblJlbmRlcmVyLCBUZXh0
RGVjb3JhdGlvbkxpbmU6OlVuZGVybGluZSk7CisgICAgICAgICAgICBtaW5Mb2dpY2FsVG9wRm9y
VGV4dERlY29yYXRpb25MaW5lKGxpbmVCb3gsIG9mZnNldCwgZGVjb3JhdGlvblJlbmRlcmVyLCBU
ZXh0RGVjb3JhdGlvbkxpbmU6OlVuZGVybGluZSk7CiAgICAgICAgICAgICBvZmZzZXQgPSB0ZXh0
UnVuLT5sb2dpY2FsVG9wKCkgLSBvZmZzZXQ7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAg
ICBvZmZzZXQgPSB0ZXh0UnVuLT5sb2dpY2FsQm90dG9tKCk7Ci0gICAgICAgICAgICBtYXhMb2dp
Y2FsQm90dG9tRm9yVGV4dERlY29yYXRpb25MaW5lKGxpbmUsIG9mZnNldCwgZGVjb3JhdGlvblJl
bmRlcmVyLCBUZXh0RGVjb3JhdGlvbkxpbmU6OlVuZGVybGluZSk7CisgICAgICAgICAgICBtYXhM
b2dpY2FsQm90dG9tRm9yVGV4dERlY29yYXRpb25MaW5lKGxpbmVCb3gsIG9mZnNldCwgZGVjb3Jh
dGlvblJlbmRlcmVyLCBUZXh0RGVjb3JhdGlvbkxpbmU6OlVuZGVybGluZSk7CiAgICAgICAgICAg
ICBvZmZzZXQgLT0gdGV4dFJ1bi0+bG9naWNhbEJvdHRvbSgpOwogICAgICAgICB9CiAgICAgICAg
IGF1dG8gZGVzaXJlZE9mZnNldCA9IHRleHRSdW4tPmxvZ2ljYWxIZWlnaHQoKSArIGdhcCArIHN0
ZDo6bWF4KG9mZnNldCwgMC4wZikgKyB1bmRlcmxpbmVPZmZzZXQubGVuZ3RoT3IoMCk7Cg==
</data>
<flag name="commit-queue"
          id="483135"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
      

    </bug>

</bugzilla>