<?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>226633</bug_id>
          
          <creation_ts>2021-06-04 02:09:05 -0700</creation_ts>
          <short_desc>Rename InlineTextBox to LegacyInlineTextBox</short_desc>
          <delta_ts>2021-06-05 05:20:17 -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="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>annulen</cc>
    
    <cc>apinheiro</cc>
    
    <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>cfleizach</cc>
    
    <cc>changseok</cc>
    
    <cc>dino</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fmalita</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jcraig</cc>
    
    <cc>jdiggs</cc>
    
    <cc>kangil.han</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mifenton</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>pdr</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>samuel_white</cc>
    
    <cc>sam</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>1766713</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-06-04 02:09:05 -0700</bug_when>
    <thetext>more legacy</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1766715</commentid>
    <comment_count>1</comment_count>
      <attachid>430561</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-06-04 02:17:15 -0700</bug_when>
    <thetext>Created attachment 430561
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1766726</commentid>
    <comment_count>2</comment_count>
      <attachid>430565</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-06-04 03:37:06 -0700</bug_when>
    <thetext>Created attachment 430565
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1766728</commentid>
    <comment_count>3</comment_count>
      <attachid>430566</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-06-04 03:46:33 -0700</bug_when>
    <thetext>Created attachment 430566
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1766783</commentid>
    <comment_count>4</comment_count>
      <attachid>430566</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-06-04 08:52:56 -0700</bug_when>
    <thetext>Comment on attachment 430566
patch

rs=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1766793</commentid>
    <comment_count>5</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-06-04 09:10:10 -0700</bug_when>
    <thetext>Tools/Scripts/svn-apply failed to apply attachment 430566 to trunk.
Please resolve the conflicts and upload a new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767121</commentid>
    <comment_count>6</comment_count>
      <attachid>430647</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-06-05 00:50:16 -0700</bug_when>
    <thetext>Created attachment 430647
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767127</commentid>
    <comment_count>7</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-06-05 05:19:17 -0700</bug_when>
    <thetext>Committed r278525 (238524@main): &lt;https://commits.webkit.org/238524@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 430647.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767128</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-06-05 05:20:17 -0700</bug_when>
    <thetext>&lt;rdar://problem/78904848&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430561</attachid>
            <date>2021-06-04 02:17:15 -0700</date>
            <delta_ts>2021-06-04 03:37:06 -0700</delta_ts>
            <desc>patch</desc>
            <filename>legacy-inline-text-box-rename.patch</filename>
            <type>text/plain</type>
            <size>118988</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAxMjRkZWYxNDMxY2UuLmFkZWM2YmVkOTNhZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDIwNiBAQAorMjAyMS0wNi0wNCAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5j
b20+CisKKyAgICAgICAgUmVuYW1lIElubGluZVRleHRCb3ggdG8gTGVnYWN5SW5saW5lVGV4dEJv
eAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2NjMz
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTW9yZSBs
ZWdhY3kgbGluZSBsYXlvdXQgbmFtaW5nLgorCisgICAgICAgICogSGVhZGVycy5jbWFrZToKKyAg
ICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisgICAgICAgICogZG9tL0NvbnRhaW5lck5vZGUuY3BwOgorICAgICAgICAqIGRv
bS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnRNYXJrZXJDb250cm9sbGVyOjphZGRNYXJrZXIpOgorICAgICAgICAqIGRvbS9Qb3NpdGlvbi5j
cHA6CisgICAgICAgICogZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHA6CisgICAgICAg
ICogZWRpdGluZy9FZGl0b3IuaDoKKyAgICAgICAgKiBlZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjpkZWJ1Z1JlbmRlcmVyIGNvbnN0
KToKKyAgICAgICAgKiBlZGl0aW5nL1JlbmRlcmVkUG9zaXRpb24uY3BwOgorICAgICAgICAqIGVk
aXRpbmcvVGV4dEl0ZXJhdG9yLmNwcDoKKyAgICAgICAgKiBlZGl0aW5nL1Zpc2libGVQb3NpdGlv
bi5jcHA6CisgICAgICAgICogbGF5b3V0L1ZlcmlmaWNhdGlvbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpMYXlvdXQ6OmNoZWNrRm9yTWF0Y2hpbmdUZXh0UnVucyk6CisgICAgICAgIChXZWJDb3Jl
OjpMYXlvdXQ6Om91dHB1dE1pc21hdGNoaW5nQ29tcGxleExpbmVJbmZvcm1hdGlvbklmTmVlZGVk
KToKKyAgICAgICAgKiBsYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS90ZXh0L1RleHRV
dGlsLmg6CisgICAgICAgICogbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uUnVu
SXRlcmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OmZpcnN0
VGV4dFJ1bkluVGV4dE9yZGVyRm9yKToKKyAgICAgICAgKiBsYXlvdXQvaW50ZWdyYXRpb24vTGF5
b3V0SW50ZWdyYXRpb25SdW5JdGVyYXRvci5oOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50
ZWdyYXRpb246OlBhdGhUZXh0UnVuOjpsZWdhY3lJbmxpbmVCb3ggY29uc3QpOgorICAgICAgICAq
IGxheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvblJ1bkl0ZXJhdG9yTGVnYWN5UGF0
aC5oOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OlJ1bkl0ZXJhdG9yTGVn
YWN5UGF0aDo6dHJhdmVyc2VOZXh0VGV4dFJ1bkluVGV4dE9yZGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkxheW91dEludGVncmF0aW9uOjpSdW5JdGVyYXRvckxlZ2FjeVBhdGg6OmlubGluZVRleHRC
b3ggY29uc3QpOgorICAgICAgICAqIGxheW91dC9sYXlvdXR0cmVlL0xheW91dEJveC5oOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCb3g6OmlzSW5saW5lVGV4dEJveCBjb25zdCk6CisgICAg
ICAgICogbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0SW5saW5lVGV4dEJveC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpMYXlvdXQ6OklubGluZVRleHRCb3g6OklubGluZVRleHRCb3gpOgorICAgICAg
ICAqIHJlbmRlcmluZy9DYXJldFJlY3RDb21wdXRhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
Ojpjb21wdXRlQ2FyZXRSZWN0Rm9yU1ZHSW5saW5lVGV4dCk6CisgICAgICAgICogcmVuZGVyaW5n
L0VsbGlwc2lzQm94LmNwcDoKKyAgICAgICAgKiByZW5kZXJpbmcvTGVnYWN5SW5saW5lQm94Lmg6
CisgICAgICAgICogcmVuZGVyaW5nL0xlZ2FjeUlubGluZUZsb3dCb3guY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TGVnYWN5SW5saW5lRmxvd0JveDo6YWRkVG9MaW5lKToKKyAgICAgICAgKFdlYkNv
cmU6OkxlZ2FjeUlubGluZUZsb3dCb3g6OnBsYWNlQm94UmFuZ2VJbklubGluZURpcmVjdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lJbmxpbmVGbG93Qm94OjpyZXF1aXJlc0lkZW9ncmFw
aGljQmFzZWxpbmUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5SW5saW5lRmxvd0Jv
eDo6cGxhY2VCb3hlc0luQmxvY2tEaXJlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5
SW5saW5lRmxvd0JveDo6YWRkVGV4dEJveFZpc3VhbE92ZXJmbG93KToKKyAgICAgICAgKFdlYkNv
cmU6OkxlZ2FjeUlubGluZUZsb3dCb3g6OmNvbXB1dGVPdmVyZmxvdyk6CisgICAgICAgIChXZWJD
b3JlOjpMZWdhY3lJbmxpbmVGbG93Qm94Ojpjb21wdXRlT3ZlckFubm90YXRpb25BZGp1c3RtZW50
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUlubGluZUZsb3dCb3g6OmNvbXB1dGVV
bmRlckFubm90YXRpb25BZGp1c3RtZW50IGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvTGVn
YWN5SW5saW5lRmxvd0JveC5oOgorICAgICAgICAqIHJlbmRlcmluZy9MZWdhY3lJbmxpbmVUZXh0
Qm94LmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0
Qm94LmNwcC4KKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUlubGluZVRleHRCb3g6On5MZWdhY3lJ
bmxpbmVUZXh0Qm94KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUlubGluZVRleHRCb3g6Omhh
c1RleHRDb250ZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUlubGluZVRleHRC
b3g6Om1hcmtEaXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lJbmxpbmVUZXh0Qm94Ojps
b2dpY2FsT3ZlcmZsb3dSZWN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUlubGlu
ZVRleHRCb3g6OnNldExvZ2ljYWxPdmVyZmxvd1JlY3QpOgorICAgICAgICAoV2ViQ29yZTo6TGVn
YWN5SW5saW5lVGV4dEJveDo6YmFzZWxpbmVQb3NpdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpMZWdhY3lJbmxpbmVUZXh0Qm94OjpsaW5lSGVpZ2h0IGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkxlZ2FjeUlubGluZVRleHRCb3g6OnNlbGVjdGlvblRvcCBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpMZWdhY3lJbmxpbmVUZXh0Qm94OjpzZWxlY3Rpb25Cb3R0b20gY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6TGVnYWN5SW5saW5lVGV4dEJveDo6c2VsZWN0aW9uSGVpZ2h0IGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUlubGluZVRleHRCb3g6OmlzU2VsZWN0ZWQg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5SW5saW5lVGV4dEJveDo6c2VsZWN0aW9u
U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5SW5saW5lVGV4dEJveDo6dmVyaWZ5U2Vs
ZWN0aW9uU3RhdGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5SW5saW5lVGV4dEJv
eDo6bGluZUZvbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6c25hcHBlZFNlbGVjdGlvblJl
Y3QpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5SW5saW5lVGV4dEJveDo6bG9jYWxTZWxlY3Rp
b25SZWN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUlubGluZVRleHRCb3g6OmRl
bGV0ZUxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5SW5saW5lVGV4dEJveDo6ZXh0cmFj
dExpbmUpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5SW5saW5lVGV4dEJveDo6YXR0YWNoTGlu
ZSk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lJbmxpbmVUZXh0Qm94OjpwbGFjZUVsbGlwc2lz
Qm94KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUlubGluZVRleHRCb3g6OmlzTGluZUJyZWFr
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUlubGluZVRleHRCb3g6Om5vZGVBdFBv
aW50KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUlubGluZVRleHRCb3g6OmVtcGhhc2lzTWFy
a0V4aXN0c0FuZElzQWJvdmUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlTWFya2Vk
VGV4dEZyb21TZWxlY3Rpb25JbkJveCk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lJbmxpbmVU
ZXh0Qm94OjpwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lJbmxpbmVUZXh0Qm94Ojpj
bGFtcGVkT2Zmc2V0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUlubGluZVRleHRC
b3g6OmNsYW1wZWRTdGFydEVuZEZvclN0YXRlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Okxl
Z2FjeUlubGluZVRleHRCb3g6OnNlbGVjdGlvblN0YXJ0RW5kIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkxlZ2FjeUlubGluZVRleHRCb3g6OmhpZ2hsaWdodFN0YXJ0RW5kIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkxlZ2FjeUlubGluZVRleHRCb3g6Omhhc01hcmtlcnMgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6TGVnYWN5SW5saW5lVGV4dEJveDo6cGFpbnRQbGF0Zm9ybURvY3Vt
ZW50TWFya2Vycyk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lJbmxpbmVUZXh0Qm94OjpjYWxj
dWxhdGVVbmlvbk9mQWxsRG9jdW1lbnRNYXJrZXJCb3VuZHMgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6TGVnYWN5SW5saW5lVGV4dEJveDo6Y2FsY3VsYXRlRG9jdW1lbnRNYXJrZXJCb3VuZHMg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5SW5saW5lVGV4dEJveDo6cGFpbnRQbGF0
Zm9ybURvY3VtZW50TWFya2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUlubGluZVRleHRC
b3g6OmNvbGxlY3RNYXJrZWRUZXh0c0ZvckRyYWdnZWRDb250ZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OkxlZ2FjeUlubGluZVRleHRCb3g6OmNvbGxlY3RNYXJrZWRUZXh0c0ZvckRvY3VtZW50TWFy
a2VycyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lJbmxpbmVUZXh0Qm94Ojpjb2xs
ZWN0TWFya2VkVGV4dHNGb3JIaWdobGlnaHRzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Okxl
Z2FjeUlubGluZVRleHRCb3g6OnRleHRPcmlnaW5Gcm9tQm94UmVjdCBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpMZWdhY3lJbmxpbmVUZXh0Qm94OjpwYWludE1hcmtlZFRleHRzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkxlZ2FjeUlubGluZVRleHRCb3g6OnBhaW50TWFya2VkVGV4dEJhY2tncm91
bmQpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5SW5saW5lVGV4dEJveDo6cGFpbnRNYXJrZWRU
ZXh0Rm9yZWdyb3VuZCk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lJbmxpbmVUZXh0Qm94Ojpw
YWludE1hcmtlZFRleHREZWNvcmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUlubGlu
ZVRleHRCb3g6OnBhaW50Q29tcG9zaXRpb25CYWNrZ3JvdW5kKToKKyAgICAgICAgKFdlYkNvcmU6
OkxlZ2FjeUlubGluZVRleHRCb3g6OnBhaW50Q29tcG9zaXRpb25VbmRlcmxpbmVzIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6Om1pcnJvclJUTFNlZ21lbnQpOgorICAgICAgICAoV2ViQ29yZTo6
TGVnYWN5SW5saW5lVGV4dEJveDo6cGFpbnRDb21wb3NpdGlvblVuZGVybGluZSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpMZWdhY3lJbmxpbmVUZXh0Qm94OjpjYXJldE1pbk9mZnNldCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lJbmxpbmVUZXh0Qm94OjpjYXJldE1heE9mZnNl
dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lJbmxpbmVUZXh0Qm94Ojp0ZXh0UG9z
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUlubGluZVRleHRCb3g6Om9mZnNldEZv
clBvc2l0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUlubGluZVRleHRCb3g6
OnBvc2l0aW9uRm9yT2Zmc2V0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUlubGlu
ZVRleHRCb3g6OmNyZWF0ZVRleHRSdW4gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5
SW5saW5lVGV4dEJveDo6dGV4dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lJbmxp
bmVUZXh0Qm94Ojpjb21iaW5lZFRleHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5
SW5saW5lVGV4dEJveDo6ZGVidWdUZXh0U2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2Fj
eUlubGluZVRleHRCb3g6OmV4cGFuc2lvbkJlaGF2aW9yIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkxlZ2FjeUlubGluZVRleHRCb3g6OmJveE5hbWUgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6TGVnYWN5SW5saW5lVGV4dEJveDo6b3V0cHV0TGluZUJveCBjb25zdCk6CisgICAgICAgICog
cmVuZGVyaW5nL0xlZ2FjeUlubGluZVRleHRCb3guaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmguCisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lJ
bmxpbmVUZXh0Qm94OjpMZWdhY3lJbmxpbmVUZXh0Qm94KToKKyAgICAgICAgKFdlYkNvcmU6Okxl
Z2FjeUlubGluZVRleHRCb3g6OnJlbmRlcmVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Okxl
Z2FjeUlubGluZVRleHRCb3g6OmxpbmVTdHlsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpM
ZWdhY3lJbmxpbmVUZXh0Qm94OjpwcmV2VGV4dEJveCBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpMZWdhY3lJbmxpbmVUZXh0Qm94OjpuZXh0VGV4dEJveCBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpMZWdhY3lJbmxpbmVUZXh0Qm94OjpzZXROZXh0VGV4dEJveCk6CisgICAgICAgIChXZWJD
b3JlOjpMZWdhY3lJbmxpbmVUZXh0Qm94OjpzZXRQcmV2aW91c1RleHRCb3gpOgorICAgICAgICAo
V2ViQ29yZTo6TGVnYWN5SW5saW5lVGV4dEJveDo6c3RhcnQgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6TGVnYWN5SW5saW5lVGV4dEJveDo6ZW5kIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkxlZ2FjeUlubGluZVRleHRCb3g6OmxlbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMZWdh
Y3lJbmxpbmVUZXh0Qm94OjpzZXRTdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lJbmxp
bmVUZXh0Qm94OjpzZXRMZW4pOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5SW5saW5lVGV4dEJv
eDo6b2Zmc2V0UnVuKToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUlubGluZVRleHRCb3g6OnRy
dW5jYXRpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5SW5saW5lVGV4dEJveDo6
Y29tcGFyZUJ5U3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5SW5saW5lVGV4dEJveDo6
bG9naWNhbFRvcFZpc3VhbE92ZXJmbG93IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2Fj
eUlubGluZVRleHRCb3g6OmxvZ2ljYWxCb3R0b21WaXN1YWxPdmVyZmxvdyBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpMZWdhY3lJbmxpbmVUZXh0Qm94Ojpsb2dpY2FsTGVmdFZpc3VhbE92ZXJm
bG93IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUlubGluZVRleHRCb3g6OmxvZ2lj
YWxSaWdodFZpc3VhbE92ZXJmbG93IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUlu
bGluZVRleHRCb3g6OmRpcnR5T3duTGluZUJveGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2Fj
eUlubGluZVRleHRCb3g6OnBhaW50TWFya2VkVGV4dHMpOgorICAgICAgICAqIHJlbmRlcmluZy9M
ZWdhY3lMaW5lTGF5b3V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUxpbmVMYXlvdXQ6
OmNvbnN0cnVjdExpbmUpOgorICAgICAgICAoV2ViQ29yZTo6c2V0TG9naWNhbFdpZHRoRm9yVGV4
dFJ1bik6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lMaW5lTGF5b3V0Ojpjb21wdXRlRXhwYW5z
aW9uRm9ySnVzdGlmaWVkVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpleHBhbnNpb25CZWhhdmlv
ckZvcklubGluZVRleHRCb3gpOgorICAgICAgICAoV2ViQ29yZTo6YXBwbHlFeHBhbnNpb25CZWhh
dmlvcik6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lMaW5lTGF5b3V0Ojpjb21wdXRlSW5saW5l
RGlyZWN0aW9uUG9zaXRpb25zRm9yU2VnbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lM
aW5lTGF5b3V0OjpyZW1vdmVJbmxpbmVCb3ggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGVn
YWN5TGluZUxheW91dDo6Y29tcHV0ZUJsb2NrRGlyZWN0aW9uUG9zaXRpb25zRm9yTGluZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpMZWdhY3lMaW5lTGF5b3V0OjpjcmVhdGVMaW5lQm94ZXNGcm9tQmlk
aVJ1bnMpOgorICAgICAgICAqIHJlbmRlcmluZy9MZWdhY3lSb290SW5saW5lQm94LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkxlZ2FjeVJvb3RJbmxpbmVCb3g6OmlzSHlwaGVuYXRlZCBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lSb290SW5saW5lQm94Ojphc2NlbnRBbmREZXNjZW50
Rm9yQm94IGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyQmxvY2tGbG93OjppbmxpbmVTZWxlY3Rpb25HYXBzKToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94
TW9kZWxPYmplY3Q6OnBhaW50TWFza0ZvclRleHRGaWxsQm94KToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVySW5saW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcklubGluZTo6Z2Vu
ZXJhdGVDdWxsZWRMaW5lQm94UmVjdHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
SW5saW5lOjpjdWxsZWRJbmxpbmVWaXN1YWxPdmVyZmxvd0JvdW5kaW5nQm94IGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlcklubGluZTo6ZGlydHlMaW5lQm94ZXMpOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJMaW5lQm94TGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJMaW5lQm94TGlzdDo6ZGlydHlMaW5lc0Zyb21DaGFuZ2VkQ2hpbGQpOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHQ6OmFi
c29sdXRlUXVhZHNGb3JSYW5nZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0
OjpjcmVhdGVUZXh0Qm94KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHQ6OnBvc2l0aW9u
TGluZUJveCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHQuaDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclRleHQ6OmV4dHJhY3RUZXh0Qm94KToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclRleHQ6OmF0dGFjaFRleHRCb3gpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6
cmVtb3ZlVGV4dEJveCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0OjpjcmVhdGVJbmxp
bmVUZXh0Qm94KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHQ6OmZpcnN0VGV4dEJveCBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0OjpsYXN0VGV4dEJveCBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0OjpmaW5kTmV4dElubGluZVRleHRCb3ggY29u
c3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0TGluZUJveGVzLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclRleHRMaW5lQm94ZXM6OmNyZWF0ZUFuZEFwcGVuZExpbmVCb3gp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dExpbmVCb3hlczo6ZXh0cmFjdCk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0TGluZUJveGVzOjphdHRhY2gpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyVGV4dExpbmVCb3hlczo6cmVtb3ZlKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclRleHRMaW5lQm94ZXM6OmRlbGV0ZUFsbCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJU
ZXh0TGluZUJveGVzOjpmaW5kTmV4dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJU
ZXh0TGluZUJveGVzOjpjaGVja0NvbnNpc3RlbmN5IGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyVGV4dExpbmVCb3hlcy5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dExp
bmVCb3hlczo6Zmlyc3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dExpbmVC
b3hlczo6bGFzdCBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQu
Y3BwOgorICAgICAgICAqIHJlbmRlcmluZy9UZXh0RGVjb3JhdGlvblBhaW50ZXIuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlRleHREZWNvcmF0aW9uUGFpbnRlcjo6c2V0SW5saW5lVGV4dEJveCk6Cisg
ICAgICAgICogcmVuZGVyaW5nL1RleHRQYWludGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRl
eHRQYWludGVyOjpjbGVhckdseXBoRGlzcGxheUxpc3RzKToKKyAgICAgICAgKiByZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR0lubGluZVRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZH
SW5saW5lVGV4dDo6Y3JlYXRlVGV4dEJveCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdJbmxpbmVUZXh0Lmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdJbmxpbmVUZXh0
Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0lubGluZVRleHRCb3g6OlNWR0lubGluZVRl
eHRCb3gpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW5saW5lVGV4dEJveDo6ZGlydHlPd25MaW5l
Qm94ZXMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW5saW5lVGV4dEJveDo6ZGlydHlMaW5lQm94
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW5saW5lVGV4dEJveDo6b2Zmc2V0Rm9yUG9zaXRp
b25JbkZyYWdtZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0lubGluZVRleHRCb3g6
OnBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0lubGluZVRleHRCb3g6Om5vZGVBdFBvaW50
KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRleHRCb3guaDoKKyAgICAgICAg
KiByZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclRyZWVBc1RleHQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6d3JpdGVTVkdJbmxpbmVUZXh0Qm94ZXMpOgorICAgICAgICAqIHN0eWxlL0lubGluZVRleHRC
b3hTdHlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb21wdXRlVW5kZXJsaW5lT2Zmc2V0KToK
KyAgICAgICAgKFdlYkNvcmU6OnZpc3VhbE92ZXJmbG93Rm9yRGVjb3JhdGlvbnMpOgorICAgICAg
ICAqIHN0eWxlL0lubGluZVRleHRCb3hTdHlsZS5oOgorCiAyMDIxLTA1LTI3ICBTZXJnaW8gVmls
bGFyIFNlbmluICA8c3ZpbGxhckBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtjc3MtZmxleGJveF0g
U2FuaXRpemUgdGhlIGFzcGVjdCByYXRpbyBoYW5kbGluZyBjb2RlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQpp
bmRleCA1Y2E1MDg0NWU1YzUuLmFkNTFmOTUzNWU3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC0x
NTI3LDExICsxNTI3LDExIEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMK
ICAgICByZW5kZXJpbmcvSGl0VGVzdFJlcXVlc3QuaAogICAgIHJlbmRlcmluZy9IaXRUZXN0UmVz
dWx0LmgKICAgICByZW5kZXJpbmcvSW5saW5lRWxlbWVudEJveC5oCi0gICAgcmVuZGVyaW5nL0lu
bGluZVRleHRCb3guaAogICAgIHJlbmRlcmluZy9MYXllckFuY2VzdG9yQ2xpcHBpbmdTdGFjay5o
CiAgICAgcmVuZGVyaW5nL0xheWVyRnJhZ21lbnQuaAogICAgIHJlbmRlcmluZy9MZWdhY3lJbmxp
bmVCb3guaAogICAgIHJlbmRlcmluZy9MZWdhY3lJbmxpbmVGbG93Qm94LmgKKyAgICByZW5kZXJp
bmcvTGVnYWN5SW5saW5lVGV4dEJveC5oCiAgICAgcmVuZGVyaW5nL0xlZ2FjeUxpbmVMYXlvdXQu
aAogICAgIHJlbmRlcmluZy9MZWdhY3lSb290SW5saW5lQm94LmgKICAgICByZW5kZXJpbmcvTWFy
a2VkVGV4dC5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJj
ZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDhhMjBjODAyNTdlMy4uZGQ4ZDZlYmExZTAzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Tb3VyY2VzLnR4dApAQCAtMjI1Niw3ICsyMjU2LDYgQEAgcmVuZGVyaW5nL0hpdFRlc3RpbmdU
cmFuc2Zvcm1TdGF0ZS5jcHAKIHJlbmRlcmluZy9JbWFnZVF1YWxpdHlDb250cm9sbGVyLmNwcAog
cmVuZGVyaW5nL0lubGluZUVsZW1lbnRCb3guY3BwCiByZW5kZXJpbmcvSW5saW5lSXRlcmF0b3Iu
Y3BwCi1yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAKIHJlbmRlcmluZy9MYXllckFuY2VzdG9y
Q2xpcHBpbmdTdGFjay5jcHAKIHJlbmRlcmluZy9MYXllck92ZXJsYXBNYXAuY3BwCiByZW5kZXJp
bmcvTGF5b3V0RGlzYWxsb3dlZFNjb3BlLmNwcApAQCAtMjI2NSw2ICsyMjY0LDcgQEAgcmVuZGVy
aW5nL0xlZ2FjeUlubGluZUJveC5jcHAKIHJlbmRlcmluZy9MZWdhY3lJbmxpbmVGbG93Qm94LmNw
cAogcmVuZGVyaW5nL0xlZ2FjeUxpbmVMYXlvdXQuY3BwCiByZW5kZXJpbmcvTGVnYWN5Um9vdElu
bGluZUJveC5jcHAKK3JlbmRlcmluZy9MZWdhY3lJbmxpbmVUZXh0Qm94LmNwcAogcmVuZGVyaW5n
L01hcmtlZFRleHQuY3BwCiByZW5kZXJpbmcvTWFya2VkVGV4dFN0eWxlLmNwcAogcmVuZGVyaW5n
L09yZGVySXRlcmF0b3IuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggNmY4MDAzMWYwNzZhLi4xZmYyYjM3M2ZhZjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagor
KysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAg
LTQxNjYsNyArNDE2Niw3IEBACiAJCUJDRTc4OTg2MTEyMEU3QTYwMDYwRUNFNSAvKiBCaWRpUnVu
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0U3ODk4
NTExMjBFN0E2MDA2MEVDRTUgLyogQmlkaVJ1bi5oICovOyB9OwogCQlCQ0U5M0Y0NTE1MTdDNTY3
MDA4Q0NGNzQgLyogUmVuZGVyRnJhZ21lbnRDb250YWluZXJTZXQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRTkzRjQ0MTUxN0M1NjcwMDhDQ0Y3NCAv
KiBSZW5kZXJGcmFnbWVudENvbnRhaW5lclNldC5oICovOyB9OwogCQlCQ0VBNDc5MDA5N0NBQUM4
MDA5NEM5RTQgLyogQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0VBNDc3RDA5N0NBQUM4MDA5NEM5RTQg
LyogQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJQkNFQTQ4NUEwOTdEOTMwMjAwOTRDOUU0IC8qIElu
bGluZVRleHRCb3guaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEJDRUE0ODFCMDk3RDkzMDIwMDk0QzlFNCAvKiBJbmxpbmVUZXh0Qm94LmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQkNFQTQ4NUEwOTdEOTMw
MjAwOTRDOUU0IC8qIExlZ2FjeUlubGluZVRleHRCb3guaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRUE0ODFCMDk3RDkzMDIwMDk0QzlFNCAvKiBMZWdh
Y3lJbmxpbmVUZXh0Qm94LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJQkNFQTQ4NjAwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlckJsb2NrLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0VBNDgyMTA5N0Q5
MzAyMDA5NEM5RTQgLyogUmVuZGVyQmxvY2suaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlCQ0VBNDg2MjA5N0Q5MzAyMDA5NEM5RTQgLyogUmVuZGVy
Qm94LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0VB
NDgyMzA5N0Q5MzAyMDA5NEM5RTQgLyogUmVuZGVyQm94LmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkNFQTQ4NjQwOTdEOTMwMjAwOTRDOUU0IC8q
IFJlbmRlckxpbmVCcmVhay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQkNFQTQ4MjUwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlckxpbmVCcmVhay5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xNDQ4OCw4
ICsxNDQ4OCw4IEBACiAJCUJDRUE0ODEzMDk3RDkzMDIwMDk0QzlFNCAvKiBMZWdhY3lMaW5lTGF5
b3V0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMZWdhY3lMaW5l
TGF5b3V0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNFQTQ4MTUwOTdEOTMw
MjAwOTRDOUU0IC8qIEJyZWFrTGluZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEJyZWFrTGluZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlC
Q0VBNDgxNjA5N0Q5MzAyMDA5NEM5RTQgLyogQnJlYWtMaW5lcy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQnJlYWtMaW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQlCQ0VBNDgxQTA5N0Q5MzAyMDA5NEM5RTQgLyogSW5saW5lVGV4dEJveC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5saW5lVGV4dEJveC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUJDRUE0ODFCMDk3RDkzMDIwMDk0QzlFNCAvKiBJbmxp
bmVUZXh0Qm94LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
MzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbmxpbmVUZXh0
Qm94Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDRUE0ODFBMDk3RDkzMDIwMDk0
QzlFNCAvKiBMZWdhY3lJbmxpbmVUZXh0Qm94LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBMZWdhY3lJbmxpbmVUZXh0Qm94LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQkNFQTQ4MUIwOTdEOTMwMjAwOTRDOUU0IC8qIExlZ2FjeUlubGluZVRleHRC
b3guaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExlZ2FjeUlubGluZVRleHRC
b3guaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNFQTQ4MjAwOTdEOTMwMjAwOTRD
OUU0IC8qIFJlbmRlckJsb2NrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBSZW5kZXJCbG9jay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDRUE0
ODIxMDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJCbG9jay5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUmVuZGVyQmxvY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQkNFQTQ4MjIwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlckJveC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVyQm94LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTMwMTg4LDE0ICszMDE4OCwxMCBAQAogCQkJCTkzMDdGMUQ2MEFGMkQ1
OTAwMERCQTMxQSAvKiBIaXRUZXN0UmVzdWx0LmggKi8sCiAJCQkJQjUxQTJGNDAxN0Q3RDVEQTAw
NzI1MTdBIC8qIEltYWdlUXVhbGl0eUNvbnRyb2xsZXIuY3BwICovLAogCQkJCUI1MUEyRjNFMTdE
N0QzQTQwMDcyNTE3QSAvKiBJbWFnZVF1YWxpdHlDb250cm9sbGVyLmggKi8sCi0JCQkJQThDRkY1
REYwQTE1NUEwNTAwMEE0MjM0IC8qIExlZ2FjeUlubGluZUJveC5jcHAgKi8sCi0JCQkJQThDRkY1
REUwQTE1NUEwNTAwMEE0MjM0IC8qIExlZ2FjeUlubGluZUJveC5oICovLAogCQkJCUI1N0NCNTJD
MTgyQTNFRUQwMDc5QTY0NyAvKiBJbmxpbmVFbGVtZW50Qm94LmNwcCAqLywKIAkJCQlCNTdDQjUy
QjE4MkEzN0Y2MDA3OUE2NDcgLyogSW5saW5lRWxlbWVudEJveC5oICovLAogCQkJCTkzMEM5MERD
MTlDRjk2NTMwMEQ2QzIxQSAvKiBJbmxpbmVJdGVyYXRvci5jcHAgKi8sCiAJCQkJQkNFNzg5MTUx
MTIwRDYwODAwNjBFQ0U1IC8qIElubGluZUl0ZXJhdG9yLmggKi8sCi0JCQkJQkNFQTQ4MUEwOTdE
OTMwMjAwOTRDOUU0IC8qIElubGluZVRleHRCb3guY3BwICovLAotCQkJCUJDRUE0ODFCMDk3RDkz
MDIwMDk0QzlFNCAvKiBJbmxpbmVUZXh0Qm94LmggKi8sCiAJCQkJMEZFQzEyMEIyMkJGMkNDNzAw
NEU5RDM1IC8qIExheWVyQW5jZXN0b3JDbGlwcGluZ1N0YWNrLmNwcCAqLywKIAkJCQkwRkVDMTIw
OTIyQkYyQ0M3MDA0RTlEMzUgLyogTGF5ZXJBbmNlc3RvckNsaXBwaW5nU3RhY2suaCAqLywKIAkJ
CQk1ODAzNzE2MzFBNjZGMUQzMDBCQUY1MTkgLyogTGF5ZXJGcmFnbWVudC5oICovLApAQCAtMzAy
MDUsOCArMzAyMDEsMTIgQEAKIAkJCQk5QkQxRjY4MDFGMDQ2MkI4MDAxQzlDREQgLyogTGF5b3V0
RGlzYWxsb3dlZFNjb3BlLmggKi8sCiAJCQkJQTEyMEFDQTExM0Y5OTg0NjAwRkU0QUM3IC8qIExh
eW91dFJlcGFpbnRlci5jcHAgKi8sCiAJCQkJQTEyMEFDQTAxM0Y5OTgzNzAwRkU0QUM3IC8qIExh
eW91dFJlcGFpbnRlci5oICovLAorCQkJCUE4Q0ZGNURGMEExNTVBMDUwMDBBNDIzNCAvKiBMZWdh
Y3lJbmxpbmVCb3guY3BwICovLAorCQkJCUE4Q0ZGNURFMEExNTVBMDUwMDBBNDIzNCAvKiBMZWdh
Y3lJbmxpbmVCb3guaCAqLywKIAkJCQlBOENGRjVERDBBMTU1QTA1MDAwQTQyMzQgLyogTGVnYWN5
SW5saW5lRmxvd0JveC5jcHAgKi8sCiAJCQkJQThDRkY1REMwQTE1NUEwNTAwMEE0MjM0IC8qIExl
Z2FjeUlubGluZUZsb3dCb3guaCAqLywKKwkJCQlCQ0VBNDgxQTA5N0Q5MzAyMDA5NEM5RTQgLyog
TGVnYWN5SW5saW5lVGV4dEJveC5jcHAgKi8sCisJCQkJQkNFQTQ4MUIwOTdEOTMwMjAwOTRDOUU0
IC8qIExlZ2FjeUlubGluZVRleHRCb3guaCAqLywKIAkJCQlCQ0VBNDgxMzA5N0Q5MzAyMDA5NEM5
RTQgLyogTGVnYWN5TGluZUxheW91dC5jcHAgKi8sCiAJCQkJRTRBMUFDNzgyMkZBRkQ1MDAwMTdC
NzVCIC8qIExlZ2FjeUxpbmVMYXlvdXQuaCAqLywKIAkJCQlBOENGRjVFMDBBMTU1QTA1MDAwQTQy
MzQgLyogTGVnYWN5Um9vdElubGluZUJveC5jcHAgKi8sCkBAIC0zMzE2MSw3ICszMzE2MSw3IEBA
CiAJCQkJRTREMzNGM0IyNTJBRUVDRDAwODM3RDA1IC8qIElubGluZVJ1bkFuZE9mZnNldC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNkYzNjBFNTAyMzk5OTQyMTAwMTUxMkE3IC8qIElubGluZVNvZnRM
aW5lQnJlYWtJdGVtLmggaW4gSGVhZGVycyAqLywKIAkJCQlBQTRDM0E3NzBCMkIxNjc5MDAyMzM0
QTIgLyogSW5saW5lU3R5bGVTaGVldE93bmVyLmggaW4gSGVhZGVycyAqLywKLQkJCQlCQ0VBNDg1
QTA5N0Q5MzAyMDA5NEM5RTQgLyogSW5saW5lVGV4dEJveC5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
QkNFQTQ4NUEwOTdEOTMwMjAwOTRDOUU0IC8qIExlZ2FjeUlubGluZVRleHRCb3guaCBpbiBIZWFk
ZXJzICovLAogCQkJCTFDMDEwNzAxMTkyNTk0REYwMDhBNDIwMSAvKiBJbmxpbmVUZXh0Qm94U3R5
bGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTZGMUNDMURFMjI1RjhCNDkwMDcyMEFEMiAvKiBJbmxp
bmVUZXh0SXRlbS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUNFODg2NDEyNjEwNUJGMjAwMEM4MTZD
IC8qIEluTWVtb3J5RGlzcGxheUxpc3QuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0Nv
bnRhaW5lck5vZGUuY3BwCmluZGV4IGE1YjQzMDIzODRjYy4uN2Y0MjEwYjE4YThjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwCkBAIC0zOCwxMCArMzgsMTAgQEAKICNpbmNsdWRl
ICJIVE1MT3B0aW9uc0NvbGxlY3Rpb24uaCIKICNpbmNsdWRlICJIVE1MU2xvdEVsZW1lbnQuaCIK
ICNpbmNsdWRlICJIVE1MVGFibGVSb3dzQ29sbGVjdGlvbi5oIgotI2luY2x1ZGUgIklubGluZVRl
eHRCb3guaCIKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRl
ICJKU05vZGUuaCIKICNpbmNsdWRlICJMYWJlbHNOb2RlTGlzdC5oIgorI2luY2x1ZGUgIkxlZ2Fj
eUlubGluZVRleHRCb3guaCIKICNpbmNsdWRlICJMZWdhY3lSb290SW5saW5lQm94LmgiCiAjaW5j
bHVkZSAiTXV0YXRpb25FdmVudC5oIgogI2luY2x1ZGUgIk5hbWVOb2RlTGlzdC5oIgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50TWFya2VyQ29udHJvbGxlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmNwcAppbmRleCBjZWQ3
MTMxOTEyYWIuLjNmNjQ0ZjAxYjc1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50TWFya2VyQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50TWFya2VyQ29udHJvbGxlci5jcHAKQEAgLTI1NSw3ICsyNTUsNyBAQCB2b2lkIERvY3VtZW50
TWFya2VyQ29udHJvbGxlcjo6YWRkTWFya2VyKE5vZGUmIG5vZGUsIERvY3VtZW50TWFya2VyJiYg
bmV3TWFya2VyKQogCiAjaWYgRU5BQkxFKExBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCiAgICAg
aWYgKGF1dG8qIHJlbmRlcmVyID0gbm9kZS5yZW5kZXJlcigpKSB7Ci0gICAgICAgIC8vIEZJWE1F
OiBGYWN0b3IgdGhlIG1hcmtlciBwYWludGluZyBjb2RlIG91dCBvZiBJbmxpbmVUZXh0Qm94IGFu
ZCB0ZWFjaCBzaW1wbGUgbGluZSBsYXlvdXQgdG8gdXNlIGl0LgorICAgICAgICAvLyBGSVhNRTog
RmFjdG9yIHRoZSBtYXJrZXIgcGFpbnRpbmcgY29kZSBvdXQgb2YgTGVnYWN5SW5saW5lVGV4dEJv
eCBhbmQgdGVhY2ggc2ltcGxlIGxpbmUgbGF5b3V0IHRvIHVzZSBpdC4KICAgICAgICAgaWYgKGF1
dG8qIGxpbmVMYXlvdXQgPSBMYXlvdXRJbnRlZ3JhdGlvbjo6TGluZUxheW91dDo6Y29udGFpbmlu
ZygqcmVuZGVyZXIpKQogICAgICAgICAgICAgbGluZUxheW91dC0+ZmxvdygpLmVuc3VyZUxpbmVC
b3hlcygpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uY3BwCmluZGV4IGUzMGMxMjdlNTJlYi4u
MzNjODZjY2Y5NWViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5jcHAKQEAgLTM4LDkgKzM4LDkgQEAK
ICNpbmNsdWRlICJJbmxpbmVFbGVtZW50Qm94LmgiCiAjaW5jbHVkZSAiSW5saW5lSXRlcmF0b3Iu
aCIKICNpbmNsdWRlICJJbmxpbmVSdW5BbmRPZmZzZXQuaCIKLSNpbmNsdWRlICJJbmxpbmVUZXh0
Qm94LmgiCiAjaW5jbHVkZSAiTGF5b3V0SW50ZWdyYXRpb25MaW5lSXRlcmF0b3IuaCIKICNpbmNs
dWRlICJMYXlvdXRJbnRlZ3JhdGlvblJ1bkl0ZXJhdG9yLmgiCisjaW5jbHVkZSAiTGVnYWN5SW5s
aW5lVGV4dEJveC5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJOb2RlVHJhdmVy
c2FsLmgiCiAjaW5jbHVkZSAiUG9zaXRpb25JdGVyYXRvci5oIgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcAppbmRleCAxMGFmMTNhNTgzNWQuLmU0
Y2JhZTlmNTIzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVF
ZGl0Q29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0
Q29tbWFuZC5jcHAKQEAgLTQ3LDEzICs0NywxMyBAQAogI2luY2x1ZGUgIkhUTUxMSUVsZW1lbnQu
aCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJIVE1MU3BhbkVsZW1lbnQuaCIK
LSNpbmNsdWRlICJJbmxpbmVUZXh0Qm94LmgiCiAjaW5jbHVkZSAiSW5zZXJ0SW50b1RleHROb2Rl
Q29tbWFuZC5oIgogI2luY2x1ZGUgIkluc2VydExpbmVCcmVha0NvbW1hbmQuaCIKICNpbmNsdWRl
ICJJbnNlcnROb2RlQmVmb3JlQ29tbWFuZC5oIgogI2luY2x1ZGUgIkluc2VydFBhcmFncmFwaFNl
cGFyYXRvckNvbW1hbmQuaCIKICNpbmNsdWRlICJJbnNlcnRUZXh0Q29tbWFuZC5oIgogI2luY2x1
ZGUgIkxheW91dEludGVncmF0aW9uUnVuSXRlcmF0b3IuaCIKKyNpbmNsdWRlICJMZWdhY3lJbmxp
bmVUZXh0Qm94LmgiCiAjaW5jbHVkZSAiTWVyZ2VJZGVudGljYWxFbGVtZW50c0NvbW1hbmQuaCIK
ICNpbmNsdWRlICJOb2RlVHJhdmVyc2FsLmgiCiAjaW5jbHVkZSAiUmVtb3ZlTm9kZUNvbW1hbmQu
aCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmggYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCmluZGV4IDE1OGI4N2NjMThlZC4uNjcyMjgyYTcwNzkz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKQEAgLTM4OSw3ICszODksNyBAQCBwdWJsaWM6CiAg
ICAgV0VCQ09SRV9FWFBPUlQgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gY29tcG9zaXRpb25S
YW5nZSgpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgZ2V0Q29tcG9zaXRpb25TZWxl
Y3Rpb24odW5zaWduZWQmIHNlbGVjdGlvblN0YXJ0LCB1bnNpZ25lZCYgc2VsZWN0aW9uRW5kKSBj
b25zdDsKIAotICAgIC8vIGdldHRpbmcgaW50ZXJuYXRpb25hbCB0ZXh0IGlucHV0IGNvbXBvc2l0
aW9uIHN0YXRlIChmb3IgdXNlIGJ5IElubGluZVRleHRCb3gpCisgICAgLy8gZ2V0dGluZyBpbnRl
cm5hdGlvbmFsIHRleHQgaW5wdXQgY29tcG9zaXRpb24gc3RhdGUgKGZvciB1c2UgYnkgTGVnYWN5
SW5saW5lVGV4dEJveCkKICAgICBUZXh0KiBjb21wb3NpdGlvbk5vZGUoKSBjb25zdCB7IHJldHVy
biBtX2NvbXBvc2l0aW9uTm9kZS5nZXQoKTsgfQogICAgIHVuc2lnbmVkIGNvbXBvc2l0aW9uU3Rh
cnQoKSBjb25zdCB7IHJldHVybiBtX2NvbXBvc2l0aW9uU3RhcnQ7IH0KICAgICB1bnNpZ25lZCBj
b21wb3NpdGlvbkVuZCgpIGNvbnN0IHsgcmV0dXJuIG1fY29tcG9zaXRpb25FbmQ7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAKaW5kZXggOTFmZmIzZjVmZTJmLi5m
Y2Q4MGQxY2JjYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxl
Y3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3Bw
CkBAIC01Myw3ICs1Myw3IEBACiAjaW5jbHVkZSAiSGl0VGVzdFJlcXVlc3QuaCIKICNpbmNsdWRl
ICJIaXRUZXN0UmVzdWx0LmgiCiAjaW5jbHVkZSAiSW5saW5lUnVuQW5kT2Zmc2V0LmgiCi0jaW5j
bHVkZSAiSW5saW5lVGV4dEJveC5oIgorI2luY2x1ZGUgIkxlZ2FjeUlubGluZVRleHRCb3guaCIK
ICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlJhbmdl
LmgiCkBAIC0xODUwLDcgKzE4NTAsNyBAQCB2b2lkIEZyYW1lU2VsZWN0aW9uOjpkZWJ1Z1JlbmRl
cmVyKFJlbmRlck9iamVjdCogcmVuZGVyZXIsIGJvb2wgc2VsZWN0ZWQpIGNvbnN0CiAgICAgICAg
ICAgICAgICAgb2Zmc2V0ID0gbV9zZWxlY3Rpb24uZW5kKCkuY29tcHV0ZU9mZnNldEluQ29udGFp
bmVyTm9kZSgpOwogCiAgICAgICAgICAgICBpbnQgcG9zOwotICAgICAgICAgICAgSW5saW5lVGV4
dEJveCogYm94ID0gdGV4dFJlbmRlcmVyLmZpbmROZXh0SW5saW5lVGV4dEJveChvZmZzZXQsIHBv
cyk7CisgICAgICAgICAgICBMZWdhY3lJbmxpbmVUZXh0Qm94KiBib3ggPSB0ZXh0UmVuZGVyZXIu
ZmluZE5leHRJbmxpbmVUZXh0Qm94KG9mZnNldCwgcG9zKTsKICAgICAgICAgICAgIHRleHQgPSB0
ZXh0LnN1YnN0cmluZyhib3gtPnN0YXJ0KCksIGJveC0+bGVuKCkpOwogICAgICAgICAgICAgCiAg
ICAgICAgICAgICBTdHJpbmcgc2hvdzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvUmVuZGVyZWRQb3NpdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlbmRlcmVk
UG9zaXRpb24uY3BwCmluZGV4IGRhYWRkZTk3Y2VhMC4uNDZlMzAyOTA0ZjJiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlbmRlcmVkUG9zaXRpb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvUmVuZGVyZWRQb3NpdGlvbi5jcHAKQEAgLTMzLDcgKzMzLDcgQEAK
IAogI2luY2x1ZGUgIkNhcmV0UmVjdENvbXB1dGF0aW9uLmgiCiAjaW5jbHVkZSAiSW5saW5lUnVu
QW5kT2Zmc2V0LmgiCi0jaW5jbHVkZSAiSW5saW5lVGV4dEJveC5oIgorI2luY2x1ZGUgIkxlZ2Fj
eUlubGluZVRleHRCb3guaCIKICNpbmNsdWRlICJWaXNpYmxlUG9zaXRpb24uaCIKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRl
cmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCmluZGV4
IDk0YjQyZjk3NTllNy4uMjYzYTkwMDA2Y2IwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1RleHRJdGVyYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0
SXRlcmF0b3IuY3BwCkBAIC00NCw3ICs0NCw3IEBACiAjaW5jbHVkZSAiSFRNTFNsb3RFbGVtZW50
LmgiCiAjaW5jbHVkZSAiSFRNTFRleHRBcmVhRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxUZXh0
Rm9ybUNvbnRyb2xFbGVtZW50LmgiCi0jaW5jbHVkZSAiSW5saW5lVGV4dEJveC5oIgorI2luY2x1
ZGUgIkxlZ2FjeUlubGluZVRleHRCb3guaCIKICNpbmNsdWRlICJOb2RlVHJhdmVyc2FsLmgiCiAj
aW5jbHVkZSAiUmFuZ2UuaCIKICNpbmNsdWRlICJSZW5kZXJJbWFnZS5oIgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlUG9zaXRpb24uY3BwIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9WaXNpYmxlUG9zaXRpb24uY3BwCmluZGV4IDdlNzY4YzViYjI1MS4uMzYwZjUx
N2I4ZjMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVQb3NpdGlv
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlUG9zaXRpb24uY3BwCkBA
IC0zNiw3ICszNiw2IEBACiAjaW5jbHVkZSAiSFRNTEh0bWxFbGVtZW50LmgiCiAjaW5jbHVkZSAi
SFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiSW5saW5lUnVuQW5kT2Zmc2V0LmgiCi0jaW5jbHVkZSAi
SW5saW5lVGV4dEJveC5oIgogI2luY2x1ZGUgIkxheW91dEludGVncmF0aW9uTGluZUl0ZXJhdG9y
LmgiCiAjaW5jbHVkZSAiTGF5b3V0SW50ZWdyYXRpb25SdW5JdGVyYXRvci5oIgogI2luY2x1ZGUg
IkxvZ2dpbmcuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9WZXJpZmljYXRp
b24uY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L1ZlcmlmaWNhdGlvbi5jcHAKaW5kZXggNzM4
M2U0MWJkMmExLi4yZDdiYTFkZWE4YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9WZXJpZmljYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9WZXJpZmljYXRp
b24uY3BwCkBAIC0zMSwxMiArMzEsMTIgQEAKICNpZm5kZWYgTkRFQlVHCiAjaW5jbHVkZSAiQmxv
Y2tGb3JtYXR0aW5nU3RhdGUuaCIKICNpbmNsdWRlICJJbmxpbmVGb3JtYXR0aW5nU3RhdGUuaCIK
LSNpbmNsdWRlICJJbmxpbmVUZXh0Qm94LmgiCiAjaW5jbHVkZSAiTGF5b3V0Qm94LmgiCiAjaW5j
bHVkZSAiTGF5b3V0Qm94R2VvbWV0cnkuaCIKICNpbmNsdWRlICJMYXlvdXRDb250YWluZXJCb3gu
aCIKICNpbmNsdWRlICJMYXlvdXRDb250ZXh0LmgiCiAjaW5jbHVkZSAiTGF5b3V0VHJlZUJ1aWxk
ZXIuaCIKKyNpbmNsdWRlICJMZWdhY3lJbmxpbmVUZXh0Qm94LmgiCiAjaW5jbHVkZSAiUmVuZGVy
Qm94LmgiCiAjaW5jbHVkZSAiUmVuZGVySW5saW5lLmgiCiAjaW5jbHVkZSAiUmVuZGVyTGluZUJy
ZWFrLmgiCkBAIC03OSw3ICs3OSw3IEBAIHN0YXRpYyBib29sIGNoZWNrRm9yTWF0Y2hpbmdOb25U
ZXh0UnVucyhjb25zdCBMaW5lUnVuJiBsaW5lUnVuLCBjb25zdCBXZWJDb3JlOjpMCiB9CiAKIAot
c3RhdGljIGJvb2wgY2hlY2tGb3JNYXRjaGluZ1RleHRSdW5zKGNvbnN0IExpbmVSdW4mIGxpbmVS
dW4sIGNvbnN0IFdlYkNvcmU6OklubGluZVRleHRCb3gmIGlubGluZVRleHRCb3gpCitzdGF0aWMg
Ym9vbCBjaGVja0Zvck1hdGNoaW5nVGV4dFJ1bnMoY29uc3QgTGluZVJ1biYgbGluZVJ1biwgY29u
c3QgV2ViQ29yZTo6TGVnYWN5SW5saW5lVGV4dEJveCYgaW5saW5lVGV4dEJveCkKIHsKICAgICBp
ZiAoIWxpbmVSdW4udGV4dCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xMzQsNyArMTM0
LDcgQEAgc3RhdGljIGJvb2wgb3V0cHV0TWlzbWF0Y2hpbmdDb21wbGV4TGluZUluZm9ybWF0aW9u
SWZOZWVkZWQoVGV4dFN0cmVhbSYgc3RyZWFtLAogICAgIGZvciAodW5zaWduZWQgaW5saW5lQm94
SW5kZXggPSAwOyBpbmxpbmVCb3hJbmRleCA8IGlubGluZUJveGVzLnNpemUoKSAmJiBydW5JbmRl
eCA8IGxpbmVSdW5zLnNpemUoKTsgKytpbmxpbmVCb3hJbmRleCkgewogICAgICAgICBhdXRvJiBs
aW5lUnVuID0gbGluZVJ1bnNbcnVuSW5kZXhdOwogICAgICAgICBhdXRvKiBpbmxpbmVCb3ggPSBp
bmxpbmVCb3hlc1tpbmxpbmVCb3hJbmRleF07Ci0gICAgICAgIGF1dG8qIGlubGluZVRleHRCb3gg
PSBpczxXZWJDb3JlOjpJbmxpbmVUZXh0Qm94PihpbmxpbmVCb3gpID8gZG93bmNhc3Q8V2ViQ29y
ZTo6SW5saW5lVGV4dEJveD4oaW5saW5lQm94KSA6IG51bGxwdHI7CisgICAgICAgIGF1dG8qIGlu
bGluZVRleHRCb3ggPSBpczxXZWJDb3JlOjpMZWdhY3lJbmxpbmVUZXh0Qm94PihpbmxpbmVCb3gp
ID8gZG93bmNhc3Q8V2ViQ29yZTo6TGVnYWN5SW5saW5lVGV4dEJveD4oaW5saW5lQm94KSA6IG51
bGxwdHI7CiAgICAgICAgIGJvb2wgbWF0Y2hpbmdSdW5zID0gaW5saW5lVGV4dEJveCA/IGNoZWNr
Rm9yTWF0Y2hpbmdUZXh0UnVucyhsaW5lUnVuLCAqaW5saW5lVGV4dEJveCkgOiBjaGVja0Zvck1h
dGNoaW5nTm9uVGV4dFJ1bnMobGluZVJ1biwgKmlubGluZUJveCk7CiAKICAgICAgICAgaWYgKCFt
YXRjaGluZ1J1bnMpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0
aW5nQ29udGV4dHMvaW5saW5lL3RleHQvVGV4dFV0aWwuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL3RleHQvVGV4dFV0aWwuaAppbmRleCAxZjU4NGZh
Nzk4MWIuLmUzNDZhYjNmNmIyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zv
cm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvdGV4dC9UZXh0VXRpbC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL3RleHQvVGV4dFV0aWwuaApAQCAt
MzcsNyArMzcsNyBAQCBjbGFzcyBSZW5kZXJTdHlsZTsKIAogbmFtZXNwYWNlIExheW91dCB7CiAK
LWNsYXNzIElubGluZVRleHRCb3g7CitjbGFzcyBMZWdhY3lJbmxpbmVUZXh0Qm94OwogY2xhc3Mg
SW5saW5lVGV4dEl0ZW07CiAKIGNsYXNzIFRleHRVdGlsIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvblJ1bkl0ZXJhdG9yLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvblJ1
bkl0ZXJhdG9yLmNwcAppbmRleCBkZTFhMWY1N2ZiNjYuLmE4N2ZjZTkyMTRmYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uUnVu
SXRlcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlv
dXRJbnRlZ3JhdGlvblJ1bkl0ZXJhdG9yLmNwcApAQCAtMTcxLDcgKzE3MSw3IEBAIFRleHRSdW5J
dGVyYXRvciBmaXJzdFRleHRSdW5JblRleHRPcmRlckZvcihjb25zdCBSZW5kZXJUZXh0JiB0ZXh0
KQogICAgICAgICBmb3IgKGF1dG8qIHRleHRCb3ggPSB0ZXh0LmZpcnN0VGV4dEJveCgpOyB0ZXh0
Qm94OyB0ZXh0Qm94ID0gdGV4dEJveC0+bmV4dFRleHRCb3goKSkKICAgICAgICAgICAgIHNvcnRl
ZFRleHRCb3hlcy5hcHBlbmQodGV4dEJveCk7CiAgICAgICAgIHN0ZDo6c29ydChzb3J0ZWRUZXh0
Qm94ZXMuYmVnaW4oKSwgc29ydGVkVGV4dEJveGVzLmVuZCgpLCBbXShhdXRvKiBhLCBhdXRvKiBi
KSB7Ci0gICAgICAgICAgICByZXR1cm4gSW5saW5lVGV4dEJveDo6Y29tcGFyZUJ5U3RhcnQoZG93
bmNhc3Q8SW5saW5lVGV4dEJveD4oYSksIGRvd25jYXN0PElubGluZVRleHRCb3g+KGIpKTsKKyAg
ICAgICAgICAgIHJldHVybiBMZWdhY3lJbmxpbmVUZXh0Qm94Ojpjb21wYXJlQnlTdGFydChkb3du
Y2FzdDxMZWdhY3lJbmxpbmVUZXh0Qm94PihhKSwgZG93bmNhc3Q8TGVnYWN5SW5saW5lVGV4dEJv
eD4oYikpOwogICAgICAgICB9KTsKICAgICAgICAgYXV0byogZmlyc3QgPSBzb3J0ZWRUZXh0Qm94
ZXNbMF07CiAgICAgICAgIHJldHVybiB7IFJ1bkl0ZXJhdG9yTGVnYWN5UGF0aCB7IGZpcnN0LCBX
VEZNb3ZlKHNvcnRlZFRleHRCb3hlcyksIDAgfSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uUnVuSXRlcmF0b3IuaCBiL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvblJ1bkl0ZXJh
dG9yLmgKaW5kZXggOTdhZTY4YzI0NDBiLi4xZGQ5NzUwMTFmMzIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvblJ1bkl0ZXJhdG9y
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0
aW9uUnVuSXRlcmF0b3IuaApAQCAtMTEzLDcgKzExMyw3IEBAIHB1YmxpYzoKICAgICBib29sIGlz
U2VsZWN0YWJsZSh1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgZW5kKSBjb25zdDsKICAgICBMYXlv
dXRSZWN0IHNlbGVjdGlvblJlY3QodW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGVuZCkgY29uc3Q7
CiAKLSAgICBJbmxpbmVUZXh0Qm94KiBsZWdhY3lJbmxpbmVCb3goKSBjb25zdCB7IHJldHVybiBk
b3duY2FzdDxJbmxpbmVUZXh0Qm94PihQYXRoUnVuOjpsZWdhY3lJbmxpbmVCb3goKSk7IH0KKyAg
ICBMZWdhY3lJbmxpbmVUZXh0Qm94KiBsZWdhY3lJbmxpbmVCb3goKSBjb25zdCB7IHJldHVybiBk
b3duY2FzdDxMZWdhY3lJbmxpbmVUZXh0Qm94PihQYXRoUnVuOjpsZWdhY3lJbmxpbmVCb3goKSk7
IH0KIH07CiAKIGNsYXNzIFJ1bkl0ZXJhdG9yIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvblJ1bkl0ZXJhdG9yTGVnYWN5UGF0
aC5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9u
UnVuSXRlcmF0b3JMZWdhY3lQYXRoLmgKaW5kZXggNDA1MjMyZWU3NjBmLi41NTZmMDVkZTc3MTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRl
Z3JhdGlvblJ1bkl0ZXJhdG9yTGVnYWN5UGF0aC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvblJ1bkl0ZXJhdG9yTGVnYWN5UGF0aC5oCkBA
IC0yNSw3ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiSW5saW5lVGV4dEJv
eC5oIgorI2luY2x1ZGUgIkxlZ2FjeUlubGluZVRleHRCb3guaCIKICNpbmNsdWRlICJMZWdhY3lS
b290SW5saW5lQm94LmgiCiAjaW5jbHVkZSAiUmVuZGVyVGV4dC5oIgogI2luY2x1ZGUgPHd0Zi9S
ZWZDb3VudGVkQXJyYXkuaD4KQEAgLTg3LDcgKzg3LDcgQEAgcHVibGljOgogICAgIHsKICAgICAg
ICAgaWYgKCFtX2xvZ2ljYWxPcmRlckNhY2hlLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgdHJh
dmVyc2VOZXh0SW5saW5lQm94SW5DYWNoZU9yZGVyKCk7Ci0gICAgICAgICAgICBBU1NFUlQoIW1f
aW5saW5lQm94IHx8IGlzPElubGluZVRleHRCb3g+KG1faW5saW5lQm94KSk7CisgICAgICAgICAg
ICBBU1NFUlQoIW1faW5saW5lQm94IHx8IGlzPExlZ2FjeUlubGluZVRleHRCb3g+KG1faW5saW5l
Qm94KSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgdHJhdmVyc2VO
ZXh0VGV4dFJ1bigpOwpAQCAtMTIzLDcgKzEyMyw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBMZWdh
Y3lSb290SW5saW5lQm94JiByb290SW5saW5lQm94KCkgY29uc3QgeyByZXR1cm4gbV9pbmxpbmVC
b3gtPnJvb3QoKTsgfQogCiBwcml2YXRlOgotICAgIGNvbnN0IElubGluZVRleHRCb3gqIGlubGlu
ZVRleHRCb3goKSBjb25zdCB7IHJldHVybiBkb3duY2FzdDxJbmxpbmVUZXh0Qm94PihtX2lubGlu
ZUJveCk7IH0KKyAgICBjb25zdCBMZWdhY3lJbmxpbmVUZXh0Qm94KiBpbmxpbmVUZXh0Qm94KCkg
Y29uc3QgeyByZXR1cm4gZG93bmNhc3Q8TGVnYWN5SW5saW5lVGV4dEJveD4obV9pbmxpbmVCb3gp
OyB9CiAKICAgICBzdGF0aWMgVmVjdG9yPGNvbnN0IExlZ2FjeUlubGluZUJveCo+IGlubGluZUJv
eGVzSW5Mb2dpY2FsT3JkZXIoY29uc3QgTGVnYWN5Um9vdElubGluZUJveCYgcm9vdCkKICAgICB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRCb3gu
aCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dEJveC5oCmluZGV4IGY5
ZDZiZjUxMTgyZS4uNTg1NWMwYjQ4NGExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvbGF5b3V0dHJlZS9MYXlvdXRCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5
b3V0dHJlZS9MYXlvdXRCb3guaApAQCAtNjEsNyArNjEsNyBAQCBwdWJsaWM6CiAKICAgICBlbnVt
IEJhc2VUeXBlRmxhZyA6IHVpbnQ4X3QgewogICAgICAgICBCb3hGbGFnICAgICAgICAgICAgICAg
ICAgICA9IDEgPDwgMCwKLSAgICAgICAgSW5saW5lVGV4dEJveEZsYWcgICAgICAgICAgPSAxIDw8
IDEsCisgICAgICAgIExlZ2FjeUlubGluZVRleHRCb3hGbGFnICAgICAgICAgID0gMSA8PCAxLAog
ICAgICAgICBMaW5lQnJlYWtCb3hGbGFnICAgICAgICAgICA9IDEgPDwgMiwKICAgICAgICAgUmVw
bGFjZWRCb3hGbGFnICAgICAgICAgICAgPSAxIDw8IDMsCiAgICAgICAgIEluaXRpYWxDb250YWlu
aW5nQmxvY2tGbGFnID0gMSA8PCA0LApAQCAtMTUyLDcgKzE1Miw3IEBAIHB1YmxpYzoKICAgICBC
b3gqIG5leHRTaWJsaW5nKCkgeyByZXR1cm4gbV9uZXh0U2libGluZzsgfQogCiAgICAgYm9vbCBp
c0NvbnRhaW5lckJveCgpIGNvbnN0IHsgcmV0dXJuIGJhc2VUeXBlRmxhZ3MoKS5jb250YWlucyhD
b250YWluZXJCb3hGbGFnKTsgfQotICAgIGJvb2wgaXNJbmxpbmVUZXh0Qm94KCkgY29uc3QgeyBy
ZXR1cm4gYmFzZVR5cGVGbGFncygpLmNvbnRhaW5zKElubGluZVRleHRCb3hGbGFnKTsgfQorICAg
IGJvb2wgaXNJbmxpbmVUZXh0Qm94KCkgY29uc3QgeyByZXR1cm4gYmFzZVR5cGVGbGFncygpLmNv
bnRhaW5zKExlZ2FjeUlubGluZVRleHRCb3hGbGFnKTsgfQogICAgIGJvb2wgaXNMaW5lQnJlYWtC
b3goKSBjb25zdCB7IHJldHVybiBiYXNlVHlwZUZsYWdzKCkuY29udGFpbnMoTGluZUJyZWFrQm94
RmxhZyk7IH0KICAgICBib29sIGlzUmVwbGFjZWRCb3goKSBjb25zdCB7IHJldHVybiBiYXNlVHlw
ZUZsYWdzKCkuY29udGFpbnMoUmVwbGFjZWRCb3hGbGFnKTsgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRJbmxpbmVUZXh0Qm94LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dElubGluZVRleHRCb3guY3BwCmlu
ZGV4IDk1ODdiNjk1NmM2OS4uMzRkYzQ3NjM0MDNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRJbmxpbmVUZXh0Qm94LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRJbmxpbmVUZXh0Qm94LmNwcApAQCAtMzcs
NyArMzcsNyBAQCBuYW1lc3BhY2UgTGF5b3V0IHsKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1Q
TChJbmxpbmVUZXh0Qm94KTsKIAogSW5saW5lVGV4dEJveDo6SW5saW5lVGV4dEJveChTdHJpbmcg
Y29udGVudCwgYm9vbCBjYW5Vc2VTaW1wbGlmaWVkQ29udGVudE1lYXN1cmluZywgUmVuZGVyU3R5
bGUmJiBzdHlsZSkKLSAgICA6IEJveCh7IH0sIFdURk1vdmUoc3R5bGUpLCBCb3g6OklubGluZVRl
eHRCb3hGbGFnKQorICAgIDogQm94KHsgfSwgV1RGTW92ZShzdHlsZSksIEJveDo6TGVnYWN5SW5s
aW5lVGV4dEJveEZsYWcpCiAgICAgLCBtX2NvbnRlbnQoY29udGVudCkKICAgICAsIG1fY2FuVXNl
U2ltcGxpZmllZENvbnRlbnRNZWFzdXJpbmcoY2FuVXNlU2ltcGxpZmllZENvbnRlbnRNZWFzdXJp
bmcpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ2FyZXRSZWN0Q29t
cHV0YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NhcmV0UmVjdENvbXB1dGF0
aW9uLmNwcAppbmRleCA2NWE4MjY0ZWE2MzAuLjRhOTg2MTliMmRjZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NhcmV0UmVjdENvbXB1dGF0aW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvQ2FyZXRSZWN0Q29tcHV0YXRpb24uY3BwCkBAIC0xOTQsMTAg
KzE5NCwxMCBAQCBzdGF0aWMgTGF5b3V0UmVjdCBjb21wdXRlQ2FyZXRSZWN0Rm9yU1ZHSW5saW5l
VGV4dChjb25zdCBJbmxpbmVSdW5BbmRPZmZzZXQmIHJ1bgogICAgIGF1dG8qIGJveCA9IHJ1bkFu
ZE9mZnNldC5ydW4gPyBydW5BbmRPZmZzZXQucnVuLT5sZWdhY3lJbmxpbmVCb3goKSA6IG51bGxw
dHI7CiAgICAgYXV0byBjYXJldE9mZnNldCA9IHJ1bkFuZE9mZnNldC5vZmZzZXQ7CiAKLSAgICBp
ZiAoIWlzPElubGluZVRleHRCb3g+KGJveCkpCisgICAgaWYgKCFpczxMZWdhY3lJbmxpbmVUZXh0
Qm94Pihib3gpKQogICAgICAgICByZXR1cm4geyB9OwogCi0gICAgYXV0byYgdGV4dEJveCA9IGRv
d25jYXN0PElubGluZVRleHRCb3g+KCpib3gpOworICAgIGF1dG8mIHRleHRCb3ggPSBkb3duY2Fz
dDxMZWdhY3lJbmxpbmVUZXh0Qm94PigqYm94KTsKICAgICBpZiAoY2FyZXRPZmZzZXQgPCB0ZXh0
Qm94LnN0YXJ0KCkgfHwgY2FyZXRPZmZzZXQgPiB0ZXh0Qm94LnN0YXJ0KCkgKyB0ZXh0Qm94Lmxl
bigpKQogICAgICAgICByZXR1cm4geyB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvRWxsaXBzaXNCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0VsbGlw
c2lzQm94LmNwcAppbmRleCA2YTJhODUzM2NmOTEuLjhmOTA0NTEyM2RlOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0VsbGlwc2lzQm94LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvRWxsaXBzaXNCb3guY3BwCkBAIC0yNCw3ICsyNCw3IEBACiAjaW5jbHVk
ZSAiRm9udENhc2NhZGUuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRl
ICJIaXRUZXN0UmVzdWx0LmgiCi0jaW5jbHVkZSAiSW5saW5lVGV4dEJveC5oIgorI2luY2x1ZGUg
IkxlZ2FjeUlubGluZVRleHRCb3guaCIKICNpbmNsdWRlICJMZWdhY3lSb290SW5saW5lQm94Lmgi
CiAjaW5jbHVkZSAiUGFpbnRJbmZvLmgiCiAjaW5jbHVkZSAiVGV4dFJ1bi5oIgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xlZ2FjeUlubGluZUJveC5oIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0xlZ2FjeUlubGluZUJveC5oCmluZGV4IDlkZmU1NGQ2NjAwMS4uM2I2
Zjk1OTA4MzI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVnYWN5SW5s
aW5lQm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xlZ2FjeUlubGluZUJveC5o
CkBAIC0zNDYsMTIgKzM0NiwxMiBAQCBwcml2YXRlOgogICAgICAgICBBRERfQk9PTEVBTl9CSVRG
SUVMRChpc0hvcml6b250YWwsIElzSG9yaXpvbnRhbCk7CiAgICAgICAgIC8vIGZvciBSb290SW5s
aW5lQm94CiAgICAgICAgIEFERF9CT09MRUFOX0JJVEZJRUxEKGVuZHNXaXRoQnJlYWssIEVuZHNX
aXRoQnJlYWspOyAvLyBXaGV0aGVyIHRoZSBsaW5lIGVuZHMgd2l0aCBhIDxicj4uCi0gICAgICAg
IC8vIHNoYXJlZCBiZXR3ZWVuIFJvb3RJbmxpbmVCb3ggYW5kIElubGluZVRleHRCb3gKKyAgICAg
ICAgLy8gc2hhcmVkIGJldHdlZW4gUm9vdElubGluZUJveCBhbmQgTGVnYWN5SW5saW5lVGV4dEJv
eAogICAgICAgICBBRERfQk9PTEVBTl9CSVRGSUVMRChjYW5IYXZlTGVmdEV4cGFuc2lvbiwgQ2Fu
SGF2ZUxlZnRFeHBhbnNpb24pOwogICAgICAgICBBRERfQk9PTEVBTl9CSVRGSUVMRChjYW5IYXZl
UmlnaHRFeHBhbnNpb24sIENhbkhhdmVSaWdodEV4cGFuc2lvbik7CiAgICAgICAgIEFERF9CT09M
RUFOX0JJVEZJRUxEKGtub3duVG9IYXZlTm9PdmVyZmxvdywgS25vd25Ub0hhdmVOb092ZXJmbG93
KTsKICAgICAgICAgQUREX0JPT0xFQU5fQklURklFTEQoaGFzRWxsaXBzaXNCb3hPckh5cGhlbiwg
SGFzRWxsaXBzaXNCb3hPckh5cGhlbik7Ci0gICAgICAgIC8vIGZvciBJbmxpbmVUZXh0Qm94Cisg
ICAgICAgIC8vIGZvciBMZWdhY3lJbmxpbmVUZXh0Qm94CiAgICAgICAgIEFERF9CT09MRUFOX0JJ
VEZJRUxEKGRpck92ZXJyaWRlLCBEaXJPdmVycmlkZSk7CiAgICAgICAgIEFERF9CT09MRUFOX0JJ
VEZJRUxEKGJlaGF2ZXNMaWtlVGV4dCwgQmVoYXZlc0xpa2VUZXh0KTsgLy8gV2hldGhlciBvciBu
b3QgdGhpcyBvYmplY3QgcmVwcmVzZW50cyB0ZXh0IHdpdGggYSBub24temVybyBoZWlnaHQuIElu
Y2x1ZGVzIG5vbi1pbWFnZSBsaXN0IG1hcmtlcnMsIHRleHQgYm94ZXMsIGJyLgogICAgICAgICBB
RERfQk9PTEVBTl9CSVRGSUVMRChmb3JjZVJpZ2h0RXhwYW5zaW9uLCBGb3JjZVJpZ2h0RXhwYW5z
aW9uKTsKQEAgLTM5OCwxNCArMzk4LDE0IEBAIHByb3RlY3RlZDoKICAgICBib29sIGhhc0VsbGlw
c2lzQm94KCkgY29uc3QgeyByZXR1cm4gbV9iaXRmaWVsZHMuaGFzRWxsaXBzaXNCb3hPckh5cGhl
bigpOyB9CiAgICAgdm9pZCBzZXRIYXNFbGxpcHNpc0JveChib29sIGhhc0VsbGlwc2lzQm94KSB7
IG1fYml0ZmllbGRzLnNldEhhc0VsbGlwc2lzQm94T3JIeXBoZW4oaGFzRWxsaXBzaXNCb3gpOyB9
CiAKLSAgICAvLyBGb3IgSW5saW5lVGV4dEJveAorICAgIC8vIEZvciBMZWdhY3lJbmxpbmVUZXh0
Qm94CiAgICAgYm9vbCBoYXNIeXBoZW4oKSBjb25zdCB7IHJldHVybiBtX2JpdGZpZWxkcy5oYXNF
bGxpcHNpc0JveE9ySHlwaGVuKCk7IH0KICAgICBib29sIGNhbkhhdmVMZWZ0RXhwYW5zaW9uKCkg
Y29uc3QgeyByZXR1cm4gbV9iaXRmaWVsZHMuY2FuSGF2ZUxlZnRFeHBhbnNpb24oKTsgfQogICAg
IGJvb2wgY2FuSGF2ZVJpZ2h0RXhwYW5zaW9uKCkgY29uc3QgeyByZXR1cm4gbV9iaXRmaWVsZHMu
Y2FuSGF2ZVJpZ2h0RXhwYW5zaW9uKCk7IH0KICAgICBib29sIGZvcmNlUmlnaHRFeHBhbnNpb24o
KSBjb25zdCB7IHJldHVybiBtX2JpdGZpZWxkcy5mb3JjZVJpZ2h0RXhwYW5zaW9uKCk7IH0KICAg
ICBib29sIGZvcmNlTGVmdEV4cGFuc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1fYml0ZmllbGRzLmZv
cmNlTGVmdEV4cGFuc2lvbigpOyB9CiAgICAgCi0gICAgLy8gRm9yIExlZ2FjeUlubGluZUZsb3dC
b3ggYW5kIElubGluZVRleHRCb3gKKyAgICAvLyBGb3IgTGVnYWN5SW5saW5lRmxvd0JveCBhbmQg
TGVnYWN5SW5saW5lVGV4dEJveAogICAgIGJvb2wgZXh0cmFjdGVkKCkgY29uc3QgeyByZXR1cm4g
bV9iaXRmaWVsZHMuZXh0cmFjdGVkKCk7IH0KIAogcHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xlZ2FjeUlubGluZUZsb3dCb3guY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0xlZ2FjeUlubGluZUZsb3dCb3guY3BwCmluZGV4IDIyOWE4ZDZjM2Qy
MS4uNTNlOTBiNjg3NDM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVn
YWN5SW5saW5lRmxvd0JveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xlZ2Fj
eUlubGluZUZsb3dCb3guY3BwCkBAIC0yNiw3ICsyNiw3IEBACiAjaW5jbHVkZSAiRm9udENhc2Nh
ZGUuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJIaXRUZXN0UmVz
dWx0LmgiCi0jaW5jbHVkZSAiSW5saW5lVGV4dEJveC5oIgorI2luY2x1ZGUgIkxlZ2FjeUlubGlu
ZVRleHRCb3guaCIKICNpbmNsdWRlICJMZWdhY3lSb290SW5saW5lQm94LmgiCiAjaW5jbHVkZSAi
UmVuZGVyQmxvY2suaCIKICNpbmNsdWRlICJSZW5kZXJJbmxpbmUuaCIKQEAgLTE2MSw4ICsxNjEs
OCBAQCB2b2lkIExlZ2FjeUlubGluZUZsb3dCb3g6OmFkZFRvTGluZShMZWdhY3lJbmxpbmVCb3gq
IGNoaWxkKQogICAgICAgICBpZiAoY2hpbGQtPmJlaGF2ZXNMaWtlVGV4dCgpKSB7CiAgICAgICAg
ICAgICBjb25zdCBSZW5kZXJTdHlsZSogY2hpbGRTdHlsZSA9ICZjaGlsZC0+bGluZVN0eWxlKCk7
CiAgICAgICAgICAgICBib29sIGhhc01hcmtlcnMgPSBmYWxzZTsKLSAgICAgICAgICAgIGlmIChp
czxJbmxpbmVUZXh0Qm94PihjaGlsZCkpIHsKLSAgICAgICAgICAgICAgICBjb25zdCBhdXRvKiB0
ZXh0Qm94ID0gZG93bmNhc3Q8SW5saW5lVGV4dEJveD4oY2hpbGQpOworICAgICAgICAgICAgaWYg
KGlzPExlZ2FjeUlubGluZVRleHRCb3g+KGNoaWxkKSkgeworICAgICAgICAgICAgICAgIGNvbnN0
IGF1dG8qIHRleHRCb3ggPSBkb3duY2FzdDxMZWdhY3lJbmxpbmVUZXh0Qm94PihjaGlsZCk7CiAg
ICAgICAgICAgICAgICAgaGFzTWFya2VycyA9IHRleHRCb3gtPmhhc01hcmtlcnMoKTsKICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIGlmIChjaGlsZFN0eWxlLT5sZXR0ZXJTcGFjaW5nKCkgPCAw
IHx8IGNoaWxkU3R5bGUtPnRleHRTaGFkb3coKSB8fCBjaGlsZFN0eWxlLT50ZXh0RW1waGFzaXNN
YXJrKCkgIT0gVGV4dEVtcGhhc2lzTWFyazo6Tm9uZSB8fCBjaGlsZFN0eWxlLT5oYXNQb3NpdGl2
ZVN0cm9rZVdpZHRoKCkgfHwgaGFzTWFya2VycyB8fCAhY2hpbGRTdHlsZS0+dGV4dFVuZGVybGlu
ZU9mZnNldCgpLmlzQXV0bygpIHx8ICFjaGlsZFN0eWxlLT50ZXh0RGVjb3JhdGlvblRoaWNrbmVz
cygpLmlzQXV0bygpIHx8IGNoaWxkU3R5bGUtPnRleHRVbmRlcmxpbmVQb3NpdGlvbigpICE9IFRl
eHRVbmRlcmxpbmVQb3NpdGlvbjo6QXV0bykKQEAgLTM5Miw3ICszOTIsNyBAQCBmbG9hdCBMZWdh
Y3lJbmxpbmVGbG93Qm94OjpwbGFjZUJveFJhbmdlSW5JbmxpbmVEaXJlY3Rpb24oTGVnYWN5SW5s
aW5lQm94KiBmaXJzdAogICAgIGZsb2F0IHRvdGFsRXhwYW5zaW9uID0gMDsKICAgICBmb3IgKGF1
dG8qIGNoaWxkID0gZmlyc3RDaGlsZDsgY2hpbGQgJiYgY2hpbGQgIT0gbGFzdENoaWxkOyBjaGls
ZCA9IGNoaWxkLT5uZXh0T25MaW5lKCkpIHsKICAgICAgICAgaWYgKGlzPFJlbmRlclRleHQ+KGNo
aWxkLT5yZW5kZXJlcigpKSkgewotICAgICAgICAgICAgYXV0byYgdGV4dEJveCA9IGRvd25jYXN0
PElubGluZVRleHRCb3g+KCpjaGlsZCk7CisgICAgICAgICAgICBhdXRvJiB0ZXh0Qm94ID0gZG93
bmNhc3Q8TGVnYWN5SW5saW5lVGV4dEJveD4oKmNoaWxkKTsKICAgICAgICAgICAgIFJlbmRlclRl
eHQmIHJlbmRlclRleHQgPSB0ZXh0Qm94LnJlbmRlcmVyKCk7CiAgICAgICAgICAgICBpZiAocmVu
ZGVyVGV4dC50ZXh0KCkubGVuZ3RoKCkpIHsKICAgICAgICAgICAgICAgICBpZiAobmVlZHNXb3Jk
U3BhY2luZyAmJiBpc1NwYWNlT3JOZXdsaW5lKHJlbmRlclRleHQuY2hhcmFjdGVyQXQodGV4dEJv
eC5zdGFydCgpKSkpCkBAIC00NzIsOCArNDcyLDggQEAgYm9vbCBMZWdhY3lJbmxpbmVGbG93Qm94
OjpyZXF1aXJlc0lkZW9ncmFwaGljQmFzZWxpbmUoY29uc3QgR2x5cGhPdmVyZmxvd0FuZEZhbGwK
ICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIAogICAgICAgICAgICAg
Y29uc3QgVmVjdG9yPGNvbnN0IEZvbnQqPiogdXNlZEZvbnRzID0gbnVsbHB0cjsKLSAgICAgICAg
ICAgIGlmIChpczxJbmxpbmVUZXh0Qm94PigqY2hpbGQpKSB7Ci0gICAgICAgICAgICAgICAgR2x5
cGhPdmVyZmxvd0FuZEZhbGxiYWNrRm9udHNNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gdGV4dEJv
eERhdGFNYXAuZmluZChkb3duY2FzdDxJbmxpbmVUZXh0Qm94PihjaGlsZCkpOworICAgICAgICAg
ICAgaWYgKGlzPExlZ2FjeUlubGluZVRleHRCb3g+KCpjaGlsZCkpIHsKKyAgICAgICAgICAgICAg
ICBHbHlwaE92ZXJmbG93QW5kRmFsbGJhY2tGb250c01hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSB0
ZXh0Qm94RGF0YU1hcC5maW5kKGRvd25jYXN0PExlZ2FjeUlubGluZVRleHRCb3g+KGNoaWxkKSk7
CiAgICAgICAgICAgICAgICAgdXNlZEZvbnRzID0gaXQgPT0gdGV4dEJveERhdGFNYXAuZW5kKCkg
PyBudWxscHRyIDogJml0LT52YWx1ZS5maXJzdDsKICAgICAgICAgICAgIH0KIApAQCAtNzM0LDgg
KzczNCw4IEBAIHZvaWQgTGVnYWN5SW5saW5lRmxvd0JveDo6cGxhY2VCb3hlc0luQmxvY2tEaXJl
Y3Rpb24oTGF5b3V0VW5pdCB0b3AsIExheW91dFVuaXQKICAgICAgICAgICAgICAgICAgICAgYm94
SGVpZ2h0IC09ICh0b3BSdWJ5QmFzZUxlYWRpbmcgKyBib3R0b21SdWJ5QmFzZUxlYWRpbmcpOwog
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChpczxJbmxp
bmVUZXh0Qm94PigqY2hpbGQpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHN0ZDo6b3B0aW9uYWw8
Ym9vbD4gbWFya0V4aXN0c0FuZElzQWJvdmUgPSBkb3duY2FzdDxJbmxpbmVUZXh0Qm94PigqY2hp
bGQpLmVtcGhhc2lzTWFya0V4aXN0c0FuZElzQWJvdmUoY2hpbGRMaW5lU3R5bGUpKSB7CisgICAg
ICAgICAgICBpZiAoaXM8TGVnYWN5SW5saW5lVGV4dEJveD4oKmNoaWxkKSkgeworICAgICAgICAg
ICAgICAgIGlmIChzdGQ6Om9wdGlvbmFsPGJvb2w+IG1hcmtFeGlzdHNBbmRJc0Fib3ZlID0gZG93
bmNhc3Q8TGVnYWN5SW5saW5lVGV4dEJveD4oKmNoaWxkKS5lbXBoYXNpc01hcmtFeGlzdHNBbmRJ
c0Fib3ZlKGNoaWxkTGluZVN0eWxlKSkgewogICAgICAgICAgICAgICAgICAgICBpZiAoKm1hcmtF
eGlzdHNBbmRJc0Fib3ZlICE9IGNoaWxkTGluZVN0eWxlLmlzRmxpcHBlZExpbmVzV3JpdGluZ01v
ZGUoKSkKICAgICAgICAgICAgICAgICAgICAgICAgIGhhc0Fubm90YXRpb25zQmVmb3JlID0gdHJ1
ZTsKICAgICAgICAgICAgICAgICAgICAgZWxzZQpAQCAtOTA2LDcgKzkwNiw3IEBAIGlubGluZSB2
b2lkIExlZ2FjeUlubGluZUZsb3dCb3g6OmFkZEJvcmRlck91dHNldFZpc3VhbE92ZXJmbG93KExh
eW91dFJlY3QmIGxvZ2ljCiAgICAgbG9naWNhbFZpc3VhbE92ZXJmbG93ID0gTGF5b3V0UmVjdChs
b2dpY2FsTGVmdFZpc3VhbE92ZXJmbG93LCBsb2dpY2FsVG9wVmlzdWFsT3ZlcmZsb3csIGxvZ2lj
YWxSaWdodFZpc3VhbE92ZXJmbG93IC0gbG9naWNhbExlZnRWaXN1YWxPdmVyZmxvdywgbG9naWNh
bEJvdHRvbVZpc3VhbE92ZXJmbG93IC0gbG9naWNhbFRvcFZpc3VhbE92ZXJmbG93KTsKIH0KIAot
aW5saW5lIHZvaWQgTGVnYWN5SW5saW5lRmxvd0JveDo6YWRkVGV4dEJveFZpc3VhbE92ZXJmbG93
KElubGluZVRleHRCb3gmIHRleHRCb3gsIEdseXBoT3ZlcmZsb3dBbmRGYWxsYmFja0ZvbnRzTWFw
JiB0ZXh0Qm94RGF0YU1hcCwgTGF5b3V0UmVjdCYgbG9naWNhbFZpc3VhbE92ZXJmbG93KQoraW5s
aW5lIHZvaWQgTGVnYWN5SW5saW5lRmxvd0JveDo6YWRkVGV4dEJveFZpc3VhbE92ZXJmbG93KExl
Z2FjeUlubGluZVRleHRCb3gmIHRleHRCb3gsIEdseXBoT3ZlcmZsb3dBbmRGYWxsYmFja0ZvbnRz
TWFwJiB0ZXh0Qm94RGF0YU1hcCwgTGF5b3V0UmVjdCYgbG9naWNhbFZpc3VhbE92ZXJmbG93KQog
ewogICAgIGlmICh0ZXh0Qm94Lmtub3duVG9IYXZlTm9PdmVyZmxvdygpKQogICAgICAgICByZXR1
cm47CkBAIC0xMDMwLDcgKzEwMzAsNyBAQCB2b2lkIExlZ2FjeUlubGluZUZsb3dCb3g6OmNvbXB1
dGVPdmVyZmxvdyhMYXlvdXRVbml0IGxpbmVUb3AsIExheW91dFVuaXQgbGluZUJvdAogICAgICAg
ICBpZiAoaXM8UmVuZGVyTGluZUJyZWFrPihjaGlsZC0+cmVuZGVyZXIoKSkpCiAgICAgICAgICAg
ICBjb250aW51ZTsKICAgICAgICAgaWYgKGlzPFJlbmRlclRleHQ+KGNoaWxkLT5yZW5kZXJlcigp
KSkgewotICAgICAgICAgICAgYXV0byYgdGV4dEJveCA9IGRvd25jYXN0PElubGluZVRleHRCb3g+
KCpjaGlsZCk7CisgICAgICAgICAgICBhdXRvJiB0ZXh0Qm94ID0gZG93bmNhc3Q8TGVnYWN5SW5s
aW5lVGV4dEJveD4oKmNoaWxkKTsKICAgICAgICAgICAgIExheW91dFJlY3QgdGV4dEJveE92ZXJm
bG93KGVuY2xvc2luZ0xheW91dFJlY3QodGV4dEJveC5sb2dpY2FsRnJhbWVSZWN0KCkpKTsKICAg
ICAgICAgICAgIGFkZFRleHRCb3hWaXN1YWxPdmVyZmxvdyh0ZXh0Qm94LCB0ZXh0Qm94RGF0YU1h
cCwgdGV4dEJveE92ZXJmbG93KTsKICAgICAgICAgICAgIGxvZ2ljYWxWaXN1YWxPdmVyZmxvdy51
bml0ZSh0ZXh0Qm94T3ZlcmZsb3cpOwpAQCAtMTYxMyw5ICsxNjEzLDkgQEAgTGF5b3V0VW5pdCBM
ZWdhY3lJbmxpbmVGbG93Qm94Ojpjb21wdXRlT3ZlckFubm90YXRpb25BZGp1c3RtZW50KExheW91
dFVuaXQgYWxsb3cKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCi0gICAgICAgIGlmIChpczxJ
bmxpbmVUZXh0Qm94PigqY2hpbGQpKSB7CisgICAgICAgIGlmIChpczxMZWdhY3lJbmxpbmVUZXh0
Qm94PigqY2hpbGQpKSB7CiAgICAgICAgICAgICBjb25zdCBSZW5kZXJTdHlsZSYgY2hpbGRMaW5l
U3R5bGUgPSBjaGlsZC0+bGluZVN0eWxlKCk7Ci0gICAgICAgICAgICBzdGQ6Om9wdGlvbmFsPGJv
b2w+IG1hcmtFeGlzdHNBbmRJc0Fib3ZlID0gZG93bmNhc3Q8SW5saW5lVGV4dEJveD4oKmNoaWxk
KS5lbXBoYXNpc01hcmtFeGlzdHNBbmRJc0Fib3ZlKGNoaWxkTGluZVN0eWxlKTsKKyAgICAgICAg
ICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gbWFya0V4aXN0c0FuZElzQWJvdmUgPSBkb3duY2FzdDxM
ZWdhY3lJbmxpbmVUZXh0Qm94PigqY2hpbGQpLmVtcGhhc2lzTWFya0V4aXN0c0FuZElzQWJvdmUo
Y2hpbGRMaW5lU3R5bGUpOwogICAgICAgICAgICAgaWYgKG1hcmtFeGlzdHNBbmRJc0Fib3ZlICYm
ICptYXJrRXhpc3RzQW5kSXNBYm92ZSkgewogICAgICAgICAgICAgICAgIGlmICghY2hpbGRMaW5l
U3R5bGUuaXNGbGlwcGVkTGluZXNXcml0aW5nTW9kZSgpKSB7CiAgICAgICAgICAgICAgICAgICAg
IGludCB0b3BPZkVtcGhhc2lzTWFyayA9IGNoaWxkLT5sb2dpY2FsVG9wKCkgLSBjaGlsZExpbmVT
dHlsZS5mb250Q2FzY2FkZSgpLmVtcGhhc2lzTWFya0hlaWdodChjaGlsZExpbmVTdHlsZS50ZXh0
RW1waGFzaXNNYXJrU3RyaW5nKCkpOwpAQCAtMTY2MSw5ICsxNjYxLDkgQEAgTGF5b3V0VW5pdCBM
ZWdhY3lJbmxpbmVGbG93Qm94Ojpjb21wdXRlVW5kZXJBbm5vdGF0aW9uQWRqdXN0bWVudChMYXlv
dXRVbml0IGFsbG8KICAgICAgICAgICAgIH0KICAgICAgICAgfQogCi0gICAgICAgIGlmIChpczxJ
bmxpbmVUZXh0Qm94PigqY2hpbGQpKSB7CisgICAgICAgIGlmIChpczxMZWdhY3lJbmxpbmVUZXh0
Qm94PigqY2hpbGQpKSB7CiAgICAgICAgICAgICBjb25zdCBSZW5kZXJTdHlsZSYgY2hpbGRMaW5l
U3R5bGUgPSBjaGlsZC0+bGluZVN0eWxlKCk7Ci0gICAgICAgICAgICBzdGQ6Om9wdGlvbmFsPGJv
b2w+IG1hcmtFeGlzdHNBbmRJc0Fib3ZlID0gZG93bmNhc3Q8SW5saW5lVGV4dEJveD4oKmNoaWxk
KS5lbXBoYXNpc01hcmtFeGlzdHNBbmRJc0Fib3ZlKGNoaWxkTGluZVN0eWxlKTsKKyAgICAgICAg
ICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gbWFya0V4aXN0c0FuZElzQWJvdmUgPSBkb3duY2FzdDxM
ZWdhY3lJbmxpbmVUZXh0Qm94PigqY2hpbGQpLmVtcGhhc2lzTWFya0V4aXN0c0FuZElzQWJvdmUo
Y2hpbGRMaW5lU3R5bGUpOwogICAgICAgICAgICAgaWYgKG1hcmtFeGlzdHNBbmRJc0Fib3ZlICYm
ICEqbWFya0V4aXN0c0FuZElzQWJvdmUpIHsKICAgICAgICAgICAgICAgICBpZiAoIWNoaWxkTGlu
ZVN0eWxlLmlzRmxpcHBlZExpbmVzV3JpdGluZ01vZGUoKSkgewogICAgICAgICAgICAgICAgICAg
ICBMYXlvdXRVbml0IGJvdHRvbU9mRW1waGFzaXNNYXJrIHsgY2hpbGQtPmxvZ2ljYWxCb3R0b20o
KSArIGNoaWxkTGluZVN0eWxlLmZvbnRDYXNjYWRlKCkuZW1waGFzaXNNYXJrSGVpZ2h0KGNoaWxk
TGluZVN0eWxlLnRleHRFbXBoYXNpc01hcmtTdHJpbmcoKSkgfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9MZWdhY3lJbmxpbmVGbG93Qm94LmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvTGVnYWN5SW5saW5lRmxvd0JveC5oCmluZGV4IDcyNzUxYmEzN2UzMy4uMzgx
YzI4MjIyMmYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVnYWN5SW5s
aW5lRmxvd0JveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MZWdhY3lJbmxpbmVG
bG93Qm94LmgKQEAgLTI4LDE0ICsyOCwxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IEhpdFRlc3RSZXF1ZXN0OwogY2xhc3MgSGl0VGVzdFJlc3VsdDsKLWNsYXNzIElubGluZVRleHRC
b3g7CitjbGFzcyBMZWdhY3lJbmxpbmVUZXh0Qm94OwogY2xhc3MgUmVuZGVyTGluZUJveExpc3Q7
CiBjbGFzcyBGb250OwogY2xhc3MgVmVydGljYWxQb3NpdGlvbkNhY2hlOwogCiBzdHJ1Y3QgR2x5
cGhPdmVyZmxvdzsKIAotdHlwZWRlZiBIYXNoTWFwPGNvbnN0IElubGluZVRleHRCb3gqLCBzdGQ6
OnBhaXI8VmVjdG9yPGNvbnN0IEZvbnQqPiwgR2x5cGhPdmVyZmxvdz4+IEdseXBoT3ZlcmZsb3dB
bmRGYWxsYmFja0ZvbnRzTWFwOwordHlwZWRlZiBIYXNoTWFwPGNvbnN0IExlZ2FjeUlubGluZVRl
eHRCb3gqLCBzdGQ6OnBhaXI8VmVjdG9yPGNvbnN0IEZvbnQqPiwgR2x5cGhPdmVyZmxvdz4+IEds
eXBoT3ZlcmZsb3dBbmRGYWxsYmFja0ZvbnRzTWFwOwogCiBjbGFzcyBMZWdhY3lJbmxpbmVGbG93
Qm94IDogcHVibGljIExlZ2FjeUlubGluZUJveCB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRF
RChMZWdhY3lJbmxpbmVGbG93Qm94KTsKQEAgLTMwNSw3ICszMDUsNyBAQCBwcml2YXRlOgogCiAg
ICAgdm9pZCBhZGRCb3hTaGFkb3dWaXN1YWxPdmVyZmxvdyhMYXlvdXRSZWN0JiBsb2dpY2FsVmlz
dWFsT3ZlcmZsb3cpOwogICAgIHZvaWQgYWRkQm9yZGVyT3V0c2V0VmlzdWFsT3ZlcmZsb3coTGF5
b3V0UmVjdCYgbG9naWNhbFZpc3VhbE92ZXJmbG93KTsKLSAgICB2b2lkIGFkZFRleHRCb3hWaXN1
YWxPdmVyZmxvdyhJbmxpbmVUZXh0Qm94JiwgR2x5cGhPdmVyZmxvd0FuZEZhbGxiYWNrRm9udHNN
YXAmLCBMYXlvdXRSZWN0JiBsb2dpY2FsVmlzdWFsT3ZlcmZsb3cpOworICAgIHZvaWQgYWRkVGV4
dEJveFZpc3VhbE92ZXJmbG93KExlZ2FjeUlubGluZVRleHRCb3gmLCBHbHlwaE92ZXJmbG93QW5k
RmFsbGJhY2tGb250c01hcCYsIExheW91dFJlY3QmIGxvZ2ljYWxWaXN1YWxPdmVyZmxvdyk7CiAg
ICAgdm9pZCBhZGRPdXRsaW5lVmlzdWFsT3ZlcmZsb3coTGF5b3V0UmVjdCYgbG9naWNhbFZpc3Vh
bE92ZXJmbG93KTsKICAgICB2b2lkIGFkZFJlcGxhY2VkQ2hpbGRPdmVyZmxvdyhjb25zdCBMZWdh
Y3lJbmxpbmVCb3gqLCBMYXlvdXRSZWN0JiBsb2dpY2FsTGF5b3V0T3ZlcmZsb3csIExheW91dFJl
Y3QmIGxvZ2ljYWxWaXN1YWxPdmVyZmxvdyk7CiAgICAgdm9pZCBjb25zdHJhaW5Ub0xpbmVUb3BB
bmRCb3R0b21JZk5lZWRlZChMYXlvdXRSZWN0JikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvTGVnYWN5SW5saW5lVGV4dEJveC5jcHAKc2ltaWxhcml0eSBpbmRleCA4OCUKcmVuYW1l
IGZyb20gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwCnJlbmFtZSB0
byBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVnYWN5SW5saW5lVGV4dEJveC5jcHAKaW5kZXgg
YTgxOGQzMTNmYjY1Li40Yzk2NjUyMGQyNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
TGVnYWN5SW5saW5lVGV4dEJveC5jcHAKQEAgLTIxLDcgKzIxLDcgQEAKICAqLwogCiAjaW5jbHVk
ZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiSW5saW5lVGV4dEJveC5oIgorI2luY2x1ZGUgIkxlZ2Fj
eUlubGluZVRleHRCb3guaCIKIAogI2luY2x1ZGUgIkJyZWFrTGluZXMuaCIKICNpbmNsdWRlICJD
b21wb3NpdGlvbkhpZ2hsaWdodC5oIgpAQCAtNjQsMjcgKzY0LDI3IEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKElubGluZVRleHRCb3gpOwor
V1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKExlZ2FjeUlubGluZVRleHRCb3gpOwogCi1zdHJ1
Y3QgU2FtZVNpemVBc0lubGluZVRleHRCb3ggOiBwdWJsaWMgTGVnYWN5SW5saW5lQm94IHsKK3N0
cnVjdCBTYW1lU2l6ZUFzTGVnYWN5SW5saW5lVGV4dEJveCA6IHB1YmxpYyBMZWdhY3lJbmxpbmVC
b3ggewogICAgIHVuc2lnbmVkIHZhcmlhYmxlc1sxXTsKICAgICB1bnNpZ25lZCBzaG9ydCB2YXJp
YWJsZXMyWzJdOwogICAgIHZvaWQqIHBvaW50ZXJzWzJdOwogfTsKIAotQ09NUElMRV9BU1NFUlQo
c2l6ZW9mKElubGluZVRleHRCb3gpID09IHNpemVvZihTYW1lU2l6ZUFzSW5saW5lVGV4dEJveCks
IElubGluZVRleHRCb3hfc2hvdWxkX3N0YXlfc21hbGwpOworQ09NUElMRV9BU1NFUlQoc2l6ZW9m
KExlZ2FjeUlubGluZVRleHRCb3gpID09IHNpemVvZihTYW1lU2l6ZUFzTGVnYWN5SW5saW5lVGV4
dEJveCksIExlZ2FjeUlubGluZVRleHRCb3hfc2hvdWxkX3N0YXlfc21hbGwpOwogCi10eXBlZGVm
IFdURjo6SGFzaE1hcDxjb25zdCBJbmxpbmVUZXh0Qm94KiwgTGF5b3V0UmVjdD4gSW5saW5lVGV4
dEJveE92ZXJmbG93TWFwOwotc3RhdGljIElubGluZVRleHRCb3hPdmVyZmxvd01hcCogZ1RleHRC
b3hlc1dpdGhPdmVyZmxvdzsKK3R5cGVkZWYgV1RGOjpIYXNoTWFwPGNvbnN0IExlZ2FjeUlubGlu
ZVRleHRCb3gqLCBMYXlvdXRSZWN0PiBMZWdhY3lJbmxpbmVUZXh0Qm94T3ZlcmZsb3dNYXA7Citz
dGF0aWMgTGVnYWN5SW5saW5lVGV4dEJveE92ZXJmbG93TWFwKiBnVGV4dEJveGVzV2l0aE92ZXJm
bG93OwogCi1JbmxpbmVUZXh0Qm94Ojp+SW5saW5lVGV4dEJveCgpCitMZWdhY3lJbmxpbmVUZXh0
Qm94Ojp+TGVnYWN5SW5saW5lVGV4dEJveCgpCiB7CiAgICAgaWYgKCFrbm93blRvSGF2ZU5vT3Zl
cmZsb3coKSAmJiBnVGV4dEJveGVzV2l0aE92ZXJmbG93KQogICAgICAgICBnVGV4dEJveGVzV2l0
aE92ZXJmbG93LT5yZW1vdmUodGhpcyk7CiAgICAgVGV4dFBhaW50ZXI6OnJlbW92ZUdseXBoRGlz
cGxheUxpc3QoKnRoaXMpOwogfQogCi1ib29sIElubGluZVRleHRCb3g6Omhhc1RleHRDb250ZW50
KCkgY29uc3QKK2Jvb2wgTGVnYWN5SW5saW5lVGV4dEJveDo6aGFzVGV4dENvbnRlbnQoKSBjb25z
dAogewogICAgIGlmIChtX2xlbiA+IDEpCiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtOTUsNyAr
OTUsNyBAQCBib29sIElubGluZVRleHRCb3g6Omhhc1RleHRDb250ZW50KCkgY29uc3QKICAgICBy
ZXR1cm4gbV9sZW47CiB9CiAKLXZvaWQgSW5saW5lVGV4dEJveDo6bWFya0RpcnR5KGJvb2wgZGly
dHkpCit2b2lkIExlZ2FjeUlubGluZVRleHRCb3g6Om1hcmtEaXJ0eShib29sIGRpcnR5KQogewog
ICAgIGlmIChkaXJ0eSkgewogICAgICAgICBtX2xlbiA9IDA7CkBAIC0xMDQsMjIgKzEwNCwyMiBA
QCB2b2lkIElubGluZVRleHRCb3g6Om1hcmtEaXJ0eShib29sIGRpcnR5KQogICAgIExlZ2FjeUlu
bGluZUJveDo6bWFya0RpcnR5KGRpcnR5KTsKIH0KIAotTGF5b3V0UmVjdCBJbmxpbmVUZXh0Qm94
Ojpsb2dpY2FsT3ZlcmZsb3dSZWN0KCkgY29uc3QKK0xheW91dFJlY3QgTGVnYWN5SW5saW5lVGV4
dEJveDo6bG9naWNhbE92ZXJmbG93UmVjdCgpIGNvbnN0CiB7CiAgICAgaWYgKGtub3duVG9IYXZl
Tm9PdmVyZmxvdygpIHx8ICFnVGV4dEJveGVzV2l0aE92ZXJmbG93KQogICAgICAgICByZXR1cm4g
ZW5jbG9zaW5nSW50UmVjdChsb2dpY2FsRnJhbWVSZWN0KCkpOwogICAgIHJldHVybiBnVGV4dEJv
eGVzV2l0aE92ZXJmbG93LT5nZXQodGhpcyk7CiB9CiAKLXZvaWQgSW5saW5lVGV4dEJveDo6c2V0
TG9naWNhbE92ZXJmbG93UmVjdChjb25zdCBMYXlvdXRSZWN0JiByZWN0KQordm9pZCBMZWdhY3lJ
bmxpbmVUZXh0Qm94OjpzZXRMb2dpY2FsT3ZlcmZsb3dSZWN0KGNvbnN0IExheW91dFJlY3QmIHJl
Y3QpCiB7CiAgICAgQVNTRVJUKCFrbm93blRvSGF2ZU5vT3ZlcmZsb3coKSk7CiAgICAgaWYgKCFn
VGV4dEJveGVzV2l0aE92ZXJmbG93KQotICAgICAgICBnVGV4dEJveGVzV2l0aE92ZXJmbG93ID0g
bmV3IElubGluZVRleHRCb3hPdmVyZmxvd01hcDsKKyAgICAgICAgZ1RleHRCb3hlc1dpdGhPdmVy
ZmxvdyA9IG5ldyBMZWdhY3lJbmxpbmVUZXh0Qm94T3ZlcmZsb3dNYXA7CiAgICAgZ1RleHRCb3hl
c1dpdGhPdmVyZmxvdy0+YWRkKHRoaXMsIHJlY3QpOwogfQogCi1MYXlvdXRVbml0IElubGluZVRl
eHRCb3g6OmJhc2VsaW5lUG9zaXRpb24oRm9udEJhc2VsaW5lIGJhc2VsaW5lVHlwZSkgY29uc3QK
K0xheW91dFVuaXQgTGVnYWN5SW5saW5lVGV4dEJveDo6YmFzZWxpbmVQb3NpdGlvbihGb250QmFz
ZWxpbmUgYmFzZWxpbmVUeXBlKSBjb25zdAogewogICAgIGlmICghcGFyZW50KCkpCiAgICAgICAg
IHJldHVybiAwOwpAQCAtMTI4LDcgKzEyOCw3IEBAIExheW91dFVuaXQgSW5saW5lVGV4dEJveDo6
YmFzZWxpbmVQb3NpdGlvbihGb250QmFzZWxpbmUgYmFzZWxpbmVUeXBlKSBjb25zdAogICAgIHJl
dHVybiBkb3duY2FzdDxSZW5kZXJCb3hNb2RlbE9iamVjdD4oKnJlbmRlcmVyKCkucGFyZW50KCkp
LmJhc2VsaW5lUG9zaXRpb24oYmFzZWxpbmVUeXBlLCBpc0ZpcnN0TGluZSgpLCBpc0hvcml6b250
YWwoKSA/IEhvcml6b250YWxMaW5lIDogVmVydGljYWxMaW5lLCBQb3NpdGlvbk9uQ29udGFpbmlu
Z0xpbmUpOwogfQogCi1MYXlvdXRVbml0IElubGluZVRleHRCb3g6OmxpbmVIZWlnaHQoKSBjb25z
dAorTGF5b3V0VW5pdCBMZWdhY3lJbmxpbmVUZXh0Qm94OjpsaW5lSGVpZ2h0KCkgY29uc3QKIHsK
ICAgICBpZiAoIXJlbmRlcmVyKCkucGFyZW50KCkpCiAgICAgICAgIHJldHVybiAwOwpAQCAtMTM3
LDI3ICsxMzcsMjcgQEAgTGF5b3V0VW5pdCBJbmxpbmVUZXh0Qm94OjpsaW5lSGVpZ2h0KCkgY29u
c3QKICAgICByZXR1cm4gZG93bmNhc3Q8UmVuZGVyQm94TW9kZWxPYmplY3Q+KCpyZW5kZXJlcigp
LnBhcmVudCgpKS5saW5lSGVpZ2h0KGlzRmlyc3RMaW5lKCksIGlzSG9yaXpvbnRhbCgpID8gSG9y
aXpvbnRhbExpbmUgOiBWZXJ0aWNhbExpbmUsIFBvc2l0aW9uT25Db250YWluaW5nTGluZSk7CiB9
CiAKLUxheW91dFVuaXQgSW5saW5lVGV4dEJveDo6c2VsZWN0aW9uVG9wKCkgY29uc3QKK0xheW91
dFVuaXQgTGVnYWN5SW5saW5lVGV4dEJveDo6c2VsZWN0aW9uVG9wKCkgY29uc3QKIHsKICAgICBy
ZXR1cm4gcm9vdCgpLnNlbGVjdGlvblRvcCgpOwogfQogCi1MYXlvdXRVbml0IElubGluZVRleHRC
b3g6OnNlbGVjdGlvbkJvdHRvbSgpIGNvbnN0CitMYXlvdXRVbml0IExlZ2FjeUlubGluZVRleHRC
b3g6OnNlbGVjdGlvbkJvdHRvbSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHJvb3QoKS5zZWxlY3Rp
b25Cb3R0b20oKTsKIH0KIAotTGF5b3V0VW5pdCBJbmxpbmVUZXh0Qm94OjpzZWxlY3Rpb25IZWln
aHQoKSBjb25zdAorTGF5b3V0VW5pdCBMZWdhY3lJbmxpbmVUZXh0Qm94OjpzZWxlY3Rpb25IZWln
aHQoKSBjb25zdAogewogICAgIHJldHVybiByb290KCkuc2VsZWN0aW9uSGVpZ2h0KCk7CiB9CiAK
LWJvb2wgSW5saW5lVGV4dEJveDo6aXNTZWxlY3RlZCh1bnNpZ25lZCBzdGFydFBvc2l0aW9uLCB1
bnNpZ25lZCBlbmRQb3NpdGlvbikgY29uc3QKK2Jvb2wgTGVnYWN5SW5saW5lVGV4dEJveDo6aXNT
ZWxlY3RlZCh1bnNpZ25lZCBzdGFydFBvc2l0aW9uLCB1bnNpZ25lZCBlbmRQb3NpdGlvbikgY29u
c3QKIHsKICAgICByZXR1cm4gY2xhbXBlZE9mZnNldChzdGFydFBvc2l0aW9uKSA8IGNsYW1wZWRP
ZmZzZXQoZW5kUG9zaXRpb24pOwogfQogCi1SZW5kZXJPYmplY3Q6OkhpZ2hsaWdodFN0YXRlIElu
bGluZVRleHRCb3g6OnNlbGVjdGlvblN0YXRlKCkKK1JlbmRlck9iamVjdDo6SGlnaGxpZ2h0U3Rh
dGUgTGVnYWN5SW5saW5lVGV4dEJveDo6c2VsZWN0aW9uU3RhdGUoKQogewogICAgIGF1dG8gc3Rh
dGUgPSB2ZXJpZnlTZWxlY3Rpb25TdGF0ZShyZW5kZXJlcigpLnNlbGVjdGlvblN0YXRlKCksIHJl
bmRlcmVyKCkudmlldygpLnNlbGVjdGlvbigpKTsKICAgICAKQEAgLTE4Myw3ICsxODMsNyBAQCBS
ZW5kZXJPYmplY3Q6OkhpZ2hsaWdodFN0YXRlIElubGluZVRleHRCb3g6OnNlbGVjdGlvblN0YXRl
KCkKICAgICByZXR1cm4gc3RhdGU7CiB9CiAKLVJlbmRlck9iamVjdDo6SGlnaGxpZ2h0U3RhdGUg
SW5saW5lVGV4dEJveDo6dmVyaWZ5U2VsZWN0aW9uU3RhdGUoUmVuZGVyT2JqZWN0OjpIaWdobGln
aHRTdGF0ZSBzdGF0ZSwgSGlnaGxpZ2h0RGF0YSYgc2VsZWN0aW9uKSBjb25zdAorUmVuZGVyT2Jq
ZWN0OjpIaWdobGlnaHRTdGF0ZSBMZWdhY3lJbmxpbmVUZXh0Qm94Ojp2ZXJpZnlTZWxlY3Rpb25T
dGF0ZShSZW5kZXJPYmplY3Q6OkhpZ2hsaWdodFN0YXRlIHN0YXRlLCBIaWdobGlnaHREYXRhJiBz
ZWxlY3Rpb24pIGNvbnN0CiB7CiAgICAgaWYgKHN0YXRlID09IFJlbmRlck9iamVjdDo6SGlnaGxp
Z2h0U3RhdGU6OlN0YXJ0IHx8IHN0YXRlID09IFJlbmRlck9iamVjdDo6SGlnaGxpZ2h0U3RhdGU6
OkVuZCB8fCBzdGF0ZSA9PSBSZW5kZXJPYmplY3Q6OkhpZ2hsaWdodFN0YXRlOjpCb3RoKSB7CiAg
ICAgICAgIGF1dG8gc3RhcnRPZmZzZXQgPSBzZWxlY3Rpb24uc3RhcnRPZmZzZXQoKTsKQEAgLTIx
MCw3ICsyMTAsNyBAQCBSZW5kZXJPYmplY3Q6OkhpZ2hsaWdodFN0YXRlIElubGluZVRleHRCb3g6
OnZlcmlmeVNlbGVjdGlvblN0YXRlKFJlbmRlck9iamVjdDo6SAogICAgIHJldHVybiBzdGF0ZTsK
IH0KIAotaW5saW5lIGNvbnN0IEZvbnRDYXNjYWRlJiBJbmxpbmVUZXh0Qm94OjpsaW5lRm9udCgp
IGNvbnN0CitpbmxpbmUgY29uc3QgRm9udENhc2NhZGUmIExlZ2FjeUlubGluZVRleHRCb3g6Omxp
bmVGb250KCkgY29uc3QKIHsKICAgICByZXR1cm4gY29tYmluZWRUZXh0KCkgPyBjb21iaW5lZFRl
eHQoKS0+dGV4dENvbWJpbmVGb250KCkgOiBsaW5lU3R5bGUoKS5mb250Q2FzY2FkZSgpOwogfQpA
QCAtMjQwLDcgKzI0MCw3IEBAIExheW91dFJlY3Qgc25hcHBlZFNlbGVjdGlvblJlY3QoY29uc3Qg
TGF5b3V0UmVjdCYgc2VsZWN0aW9uUmVjdCwgZmxvYXQgbG9naWNhbFJpCiB9CiAKIC8vIEZJWE1F
OiBTaGFyZSBtb3JlIGNvZGUgd2l0aCBwYWludE1hcmtlZFRleHRCYWNrZ3JvdW5kKCkuCi1MYXlv
dXRSZWN0IElubGluZVRleHRCb3g6OmxvY2FsU2VsZWN0aW9uUmVjdCh1bnNpZ25lZCBzdGFydFBv
cywgdW5zaWduZWQgZW5kUG9zKSBjb25zdAorTGF5b3V0UmVjdCBMZWdhY3lJbmxpbmVUZXh0Qm94
Ojpsb2NhbFNlbGVjdGlvblJlY3QodW5zaWduZWQgc3RhcnRQb3MsIHVuc2lnbmVkIGVuZFBvcykg
Y29uc3QKIHsKICAgICB1bnNpZ25lZCBzUG9zID0gY2xhbXBlZE9mZnNldChzdGFydFBvcyk7CiAg
ICAgdW5zaWduZWQgZVBvcyA9IGNsYW1wZWRPZmZzZXQoZW5kUG9zKTsKQEAgLTI2MiwxMyArMjYy
LDEzIEBAIExheW91dFJlY3QgSW5saW5lVGV4dEJveDo6bG9jYWxTZWxlY3Rpb25SZWN0KHVuc2ln
bmVkIHN0YXJ0UG9zLCB1bnNpZ25lZCBlbmRQb3MpCiAgICAgcmV0dXJuIHNuYXBwZWRTZWxlY3Rp
b25SZWN0KHNlbGVjdGlvblJlY3QsIGxvZ2ljYWxSaWdodCgpLCBzZWxlY3Rpb25Ub3AsIHNlbGVj
dGlvbkhlaWdodCwgaXNIb3Jpem9udGFsKCkpOwogfQogCi12b2lkIElubGluZVRleHRCb3g6OmRl
bGV0ZUxpbmUoKQordm9pZCBMZWdhY3lJbmxpbmVUZXh0Qm94OjpkZWxldGVMaW5lKCkKIHsKICAg
ICByZW5kZXJlcigpLnJlbW92ZVRleHRCb3goKnRoaXMpOwogICAgIGRlbGV0ZSB0aGlzOwogfQog
Ci12b2lkIElubGluZVRleHRCb3g6OmV4dHJhY3RMaW5lKCkKK3ZvaWQgTGVnYWN5SW5saW5lVGV4
dEJveDo6ZXh0cmFjdExpbmUoKQogewogICAgIGlmIChleHRyYWN0ZWQoKSkKICAgICAgICAgcmV0
dXJuOwpAQCAtMjc2LDcgKzI3Niw3IEBAIHZvaWQgSW5saW5lVGV4dEJveDo6ZXh0cmFjdExpbmUo
KQogICAgIHJlbmRlcmVyKCkuZXh0cmFjdFRleHRCb3goKnRoaXMpOwogfQogCi12b2lkIElubGlu
ZVRleHRCb3g6OmF0dGFjaExpbmUoKQordm9pZCBMZWdhY3lJbmxpbmVUZXh0Qm94OjphdHRhY2hM
aW5lKCkKIHsKICAgICBpZiAoIWV4dHJhY3RlZCgpKQogICAgICAgICByZXR1cm47CkBAIC0yODQs
NyArMjg0LDcgQEAgdm9pZCBJbmxpbmVUZXh0Qm94OjphdHRhY2hMaW5lKCkKICAgICByZW5kZXJl
cigpLmF0dGFjaFRleHRCb3goKnRoaXMpOwogfQogCi1mbG9hdCBJbmxpbmVUZXh0Qm94OjpwbGFj
ZUVsbGlwc2lzQm94KGJvb2wgZmxvd0lzTFRSLCBmbG9hdCB2aXNpYmxlTGVmdEVkZ2UsIGZsb2F0
IHZpc2libGVSaWdodEVkZ2UsIGZsb2F0IGVsbGlwc2lzV2lkdGgsIGZsb2F0ICZ0cnVuY2F0ZWRX
aWR0aCwgYm9vbCYgZm91bmRCb3gpCitmbG9hdCBMZWdhY3lJbmxpbmVUZXh0Qm94OjpwbGFjZUVs
bGlwc2lzQm94KGJvb2wgZmxvd0lzTFRSLCBmbG9hdCB2aXNpYmxlTGVmdEVkZ2UsIGZsb2F0IHZp
c2libGVSaWdodEVkZ2UsIGZsb2F0IGVsbGlwc2lzV2lkdGgsIGZsb2F0ICZ0cnVuY2F0ZWRXaWR0
aCwgYm9vbCYgZm91bmRCb3gpCiB7CiAgICAgaWYgKGZvdW5kQm94KSB7CiAgICAgICAgIG1fdHJ1
bmNhdGlvbiA9IGNGdWxsVHJ1bmNhdGlvbjsKQEAgLTMwMCw3ICszMDAsNyBAQCBmbG9hdCBJbmxp
bmVUZXh0Qm94OjpwbGFjZUVsbGlwc2lzQm94KGJvb2wgZmxvd0lzTFRSLCBmbG9hdCB2aXNpYmxl
TGVmdEVkZ2UsIGZsbwogICAgIGJvb2wgbHRyRnVsbFRydW5jYXRpb24gPSBmbG93SXNMVFIgJiYg
ZWxsaXBzaXNYIDw9IGxlZnQoKTsKICAgICBib29sIHJ0bEZ1bGxUcnVuY2F0aW9uID0gIWZsb3dJ
c0xUUiAmJiBlbGxpcHNpc1ggPj0gbGVmdCgpICsgbG9naWNhbFdpZHRoKCk7CiAgICAgaWYgKGx0
ckZ1bGxUcnVuY2F0aW9uIHx8IHJ0bEZ1bGxUcnVuY2F0aW9uKSB7Ci0gICAgICAgIC8vIFRvbyBm
YXIuICBKdXN0IHNldCBmdWxsIHRydW5jYXRpb24sIGJ1dCByZXR1cm4gLTEgYW5kIGxldCB0aGUg
ZWxsaXBzaXMganVzdCBiZSBwbGFjZWQgYXQgdGhlIGVkZ2Ugb2YgdGhlIGJveC4KKyAgICAgICAg
Ly8gVG9vIGZhci4gSnVzdCBzZXQgZnVsbCB0cnVuY2F0aW9uLCBidXQgcmV0dXJuIC0xIGFuZCBs
ZXQgdGhlIGVsbGlwc2lzIGp1c3QgYmUgcGxhY2VkIGF0IHRoZSBlZGdlIG9mIHRoZSBib3guCiAg
ICAgICAgIG1fdHJ1bmNhdGlvbiA9IGNGdWxsVHJ1bmNhdGlvbjsKICAgICAgICAgZm91bmRCb3gg
PSB0cnVlOwogICAgICAgICByZXR1cm4gLTE7CkBAIC0zMTEsMTkgKzMxMSwxOSBAQCBmbG9hdCBJ
bmxpbmVUZXh0Qm94OjpwbGFjZUVsbGlwc2lzQm94KGJvb2wgZmxvd0lzTFRSLCBmbG9hdCB2aXNp
YmxlTGVmdEVkZ2UsIGZsbwogICAgIGlmIChsdHJFbGxpcHNpc1dpdGhpbkJveCB8fCBydGxFbGxp
cHNpc1dpdGhpbkJveCkgewogICAgICAgICBmb3VuZEJveCA9IHRydWU7CiAKLSAgICAgICAgLy8g
VGhlIGlubGluZSBib3ggbWF5IGhhdmUgZGlmZmVyZW50IGRpcmVjdGlvbmFsaXR5IHRoYW4gaXQn
cyBwYXJlbnQuICBTaW5jZSB0cnVuY2F0aW9uCisgICAgICAgIC8vIFRoZSBpbmxpbmUgYm94IG1h
eSBoYXZlIGRpZmZlcmVudCBkaXJlY3Rpb25hbGl0eSB0aGFuIGl0J3MgcGFyZW50LiBTaW5jZSB0
cnVuY2F0aW9uCiAgICAgICAgIC8vIGJlaGF2aW9yIGRlcGVuZHMgYm90aCBvbiBib3RoIHRoZSBw
YXJlbnQgYW5kIHRoZSBpbmxpbmUgYmxvY2sncyBkaXJlY3Rpb25hbGl0eSwgd2UKICAgICAgICAg
Ly8gbXVzdCBrZWVwIHRyYWNrIG9mIHRoZXNlIHNlcGFyYXRlbHkuCiAgICAgICAgIGJvb2wgbHRy
ID0gaXNMZWZ0VG9SaWdodERpcmVjdGlvbigpOwogICAgICAgICBpZiAobHRyICE9IGZsb3dJc0xU
UikgewotICAgICAgICAgIC8vIFdpZHRoIGluIHBpeGVscyBvZiB0aGUgdmlzaWJsZSBwb3J0aW9u
IG9mIHRoZSBib3gsIGV4Y2x1ZGluZyB0aGUgZWxsaXBzaXMuCi0gICAgICAgICAgaW50IHZpc2li
bGVCb3hXaWR0aCA9IHZpc2libGVSaWdodEVkZ2UgLSB2aXNpYmxlTGVmdEVkZ2UgIC0gZWxsaXBz
aXNXaWR0aDsKLSAgICAgICAgICBlbGxpcHNpc1ggPSBsdHIgPyBsZWZ0KCkgKyB2aXNpYmxlQm94
V2lkdGggOiByaWdodCgpIC0gdmlzaWJsZUJveFdpZHRoOworICAgICAgICAgICAgLy8gV2lkdGgg
aW4gcGl4ZWxzIG9mIHRoZSB2aXNpYmxlIHBvcnRpb24gb2YgdGhlIGJveCwgZXhjbHVkaW5nIHRo
ZSBlbGxpcHNpcy4KKyAgICAgICAgICAgIGludCB2aXNpYmxlQm94V2lkdGggPSB2aXNpYmxlUmln
aHRFZGdlIC0gdmlzaWJsZUxlZnRFZGdlICAtIGVsbGlwc2lzV2lkdGg7CisgICAgICAgICAgICBl
bGxpcHNpc1ggPSBsdHIgPyBsZWZ0KCkgKyB2aXNpYmxlQm94V2lkdGggOiByaWdodCgpIC0gdmlz
aWJsZUJveFdpZHRoOwogICAgICAgICB9CiAKICAgICAgICAgaW50IG9mZnNldCA9IG9mZnNldEZv
clBvc2l0aW9uKGVsbGlwc2lzWCwgZmFsc2UpOwotICAgICAgICBpZiAob2Zmc2V0ID09IDApIHsK
LSAgICAgICAgICAgIC8vIE5vIGNoYXJhY3RlcnMgc2hvdWxkIGJlIHJlbmRlcmVkLiAgU2V0IG91
cnNlbHZlcyB0byBmdWxsIHRydW5jYXRpb24gYW5kIHBsYWNlIHRoZSBlbGxpcHNpcyBhdCB0aGUg
bWluIG9mIG91ciBzdGFydAorICAgICAgICBpZiAoIW9mZnNldCkgeworICAgICAgICAgICAgLy8g
Tm8gY2hhcmFjdGVycyBzaG91bGQgYmUgcmVuZGVyZWQuIFNldCBvdXJzZWx2ZXMgdG8gZnVsbCB0
cnVuY2F0aW9uIGFuZCBwbGFjZSB0aGUgZWxsaXBzaXMgYXQgdGhlIG1pbiBvZiBvdXIgc3RhcnQK
ICAgICAgICAgICAgIC8vIGFuZCB0aGUgZWxsaXBzaXMgZWRnZS4KICAgICAgICAgICAgIG1fdHJ1
bmNhdGlvbiA9IGNGdWxsVHJ1bmNhdGlvbjsKICAgICAgICAgICAgIHRydW5jYXRlZFdpZHRoICs9
IGVsbGlwc2lzV2lkdGg7CkBAIC0zNDUsMjEgKzM0NSwxOSBAQCBmbG9hdCBJbmxpbmVUZXh0Qm94
OjpwbGFjZUVsbGlwc2lzQm94KGJvb2wgZmxvd0lzTFRSLCBmbG9hdCB2aXNpYmxlTGVmdEVkZ2Us
IGZsbwogICAgICAgICB0cnVuY2F0ZWRXaWR0aCArPSB3aWR0aE9mVmlzaWJsZVRleHQgKyBlbGxp
cHNpc1dpZHRoOwogICAgICAgICBpZiAoZmxvd0lzTFRSKQogICAgICAgICAgICAgcmV0dXJuIGxl
ZnQoKSArIHdpZHRoT2ZWaXNpYmxlVGV4dDsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgcmV0
dXJuIHJpZ2h0KCkgLSB3aWR0aE9mVmlzaWJsZVRleHQgLSBlbGxpcHNpc1dpZHRoOworCisgICAg
ICAgIHJldHVybiByaWdodCgpIC0gd2lkdGhPZlZpc2libGVUZXh0IC0gZWxsaXBzaXNXaWR0aDsK
ICAgICB9CiAgICAgdHJ1bmNhdGVkV2lkdGggKz0gbG9naWNhbFdpZHRoKCk7CiAgICAgcmV0dXJu
IC0xOwogfQogCi0KLQotYm9vbCBJbmxpbmVUZXh0Qm94Ojppc0xpbmVCcmVhaygpIGNvbnN0Citi
b29sIExlZ2FjeUlubGluZVRleHRCb3g6OmlzTGluZUJyZWFrKCkgY29uc3QKIHsKICAgICByZXR1
cm4gcmVuZGVyZXIoKS5zdHlsZSgpLnByZXNlcnZlTmV3bGluZSgpICYmIGxlbigpID09IDEgJiYg
cmVuZGVyZXIoKS50ZXh0KClbc3RhcnQoKV0gPT0gJ1xuJzsKIH0KIAotYm9vbCBJbmxpbmVUZXh0
Qm94Ojpub2RlQXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgSGl0VGVzdFJl
c3VsdCYgcmVzdWx0LCBjb25zdCBIaXRUZXN0TG9jYXRpb24mIGxvY2F0aW9uSW5Db250YWluZXIs
IGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCwgTGF5b3V0VW5pdCAvKiBsaW5l
VG9wICovLCBMYXlvdXRVbml0IC8qbGluZUJvdHRvbSovLAorYm9vbCBMZWdhY3lJbmxpbmVUZXh0
Qm94Ojpub2RlQXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgSGl0VGVzdFJl
c3VsdCYgcmVzdWx0LCBjb25zdCBIaXRUZXN0TG9jYXRpb24mIGxvY2F0aW9uSW5Db250YWluZXIs
IGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCwgTGF5b3V0VW5pdCAvKiBsaW5l
VG9wICovLCBMYXlvdXRVbml0IC8qbGluZUJvdHRvbSovLAogICAgIEhpdFRlc3RBY3Rpb24gLypo
aXRUZXN0QWN0aW9uKi8pCiB7CiAgICAgaWYgKCF2aXNpYmxlVG9IaXRUZXN0aW5nKHJlcXVlc3Qp
KQpAQCAtMzkyLDcgKzM5MCw3IEBAIGJvb2wgSW5saW5lVGV4dEJveDo6bm9kZUF0UG9pbnQoY29u
c3QgSGl0VGVzdFJlcXVlc3QmIHJlcXVlc3QsIEhpdFRlc3RSZXN1bHQmIHJlCiAgICAgcmV0dXJu
IGZhbHNlOwogfQogCi1zdGQ6Om9wdGlvbmFsPGJvb2w+IElubGluZVRleHRCb3g6OmVtcGhhc2lz
TWFya0V4aXN0c0FuZElzQWJvdmUoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKSBjb25zdAorc3Rk
OjpvcHRpb25hbDxib29sPiBMZWdhY3lJbmxpbmVUZXh0Qm94OjplbXBoYXNpc01hcmtFeGlzdHNB
bmRJc0Fib3ZlKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkgY29uc3QKIHsKICAgICAvLyBUaGlz
IGZ1bmN0aW9uIHJldHVybnMgdHJ1ZSBpZiB0aGVyZSBhcmUgdGV4dCBlbXBoYXNpcyBtYXJrcyBh
bmQgdGhleSBhcmUgc3VwcHJlc3NlZCBieSBydWJ5IHRleHQuCiAgICAgaWYgKHN0eWxlLnRleHRF
bXBoYXNpc01hcmsoKSA9PSBUZXh0RW1waGFzaXNNYXJrOjpOb25lKQpAQCAtNDMzLDcgKzQzMSw3
IEBAIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gSW5saW5lVGV4dEJveDo6ZW1waGFzaXNNYXJrRXhpc3Rz
QW5kSXNBYm92ZShjb25zdCBSZW5kZXJTdHlsCiAgICAgcmV0dXJuIGlzQWJvdmU7CiB9CiAKLXN0
YXRpYyBNYXJrZWRUZXh0IGNyZWF0ZU1hcmtlZFRleHRGcm9tU2VsZWN0aW9uSW5Cb3goY29uc3Qg
SW5saW5lVGV4dEJveCYgYm94KQorc3RhdGljIE1hcmtlZFRleHQgY3JlYXRlTWFya2VkVGV4dEZy
b21TZWxlY3Rpb25JbkJveChjb25zdCBMZWdhY3lJbmxpbmVUZXh0Qm94JiBib3gpCiB7CiAgICAg
YXV0byBbc2VsZWN0aW9uU3RhcnQsIHNlbGVjdGlvbkVuZF0gPSBib3guc2VsZWN0aW9uU3RhcnRF
bmQoKTsKICAgICBpZiAoc2VsZWN0aW9uU3RhcnQgPCBzZWxlY3Rpb25FbmQpCkBAIC00NDEsNyAr
NDM5LDcgQEAgc3RhdGljIE1hcmtlZFRleHQgY3JlYXRlTWFya2VkVGV4dEZyb21TZWxlY3Rpb25J
bkJveChjb25zdCBJbmxpbmVUZXh0Qm94JiBib3gpCiAgICAgcmV0dXJuIHsgfTsKIH0KIAotdm9p
ZCBJbmxpbmVUZXh0Qm94OjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0
UG9pbnQmIHBhaW50T2Zmc2V0LCBMYXlvdXRVbml0IC8qbGluZVRvcCovLCBMYXlvdXRVbml0IC8q
bGluZUJvdHRvbSovKQordm9pZCBMZWdhY3lJbmxpbmVUZXh0Qm94OjpwYWludChQYWludEluZm8m
IHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0LCBMYXlvdXRVbml0IC8q
bGluZVRvcCovLCBMYXlvdXRVbml0IC8qbGluZUJvdHRvbSovKQogewogICAgIGlmIChpc0xpbmVC
cmVhaygpIHx8ICFwYWludEluZm8uc2hvdWxkUGFpbnRXaXRoaW5Sb290KHJlbmRlcmVyKCkpIHx8
IHJlbmRlcmVyKCkuc3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVmlzaWJpbGl0eTo6VmlzaWJsZQog
ICAgICAgICB8fCBtX3RydW5jYXRpb24gPT0gY0Z1bGxUcnVuY2F0aW9uIHx8IHBhaW50SW5mby5w
aGFzZSA9PSBQYWludFBoYXNlOjpPdXRsaW5lIHx8ICFoYXNUZXh0Q29udGVudCgpKQpAQCAtNTM5
LDkgKzUzNyw5IEBAIHZvaWQgSW5saW5lVGV4dEJveDo6cGFpbnQoUGFpbnRJbmZvJiBwYWludElu
Zm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCwKICAgICAgICAgcGFpbnRNYXJrZWRU
ZXh0cyhwYWludEluZm8sIFRleHRQYWludFBoYXNlOjpCYWNrZ3JvdW5kLCBib3hSZWN0LCBjb2Fs
ZXNjZWRTdHlsZWRNYXJrZWRUZXh0cyk7CiAgICAgfQogCi0gICAgLy8gRklYTUU6IFJpZ2h0IG5v
dywgSW5saW5lVGV4dEJveGVzIG5ldmVyIGNhbGwgYWRkUmVsZXZhbnRVbnBhaW50ZWRPYmplY3Qo
KSBldmVuIHRob3VnaCB0aGV5IG1pZ2h0CisgICAgLy8gRklYTUU6IFJpZ2h0IG5vdywgTGVnYWN5
SW5saW5lVGV4dEJveGVzIG5ldmVyIGNhbGwgYWRkUmVsZXZhbnRVbnBhaW50ZWRPYmplY3QoKSBl
dmVuIHRob3VnaCB0aGV5IG1pZ2h0CiAgICAgLy8gbGVnaXRpbWF0ZWx5IGJlIHVucGFpbnRlZCBp
ZiB0aGV5IGFyZSB3YWl0aW5nIG9uIGEgc2xvdy1sb2FkaW5nIHdlYiBmb250LiBXZSBzaG91bGQg
Zml4IHRoYXQsIGFuZAotICAgIC8vIHdoZW4gd2UgZG8sIHdlIHdpbGwgaGF2ZSB0byBhY2NvdW50
IGZvciB0aGUgZmFjdCB0aGUgSW5saW5lVGV4dEJveGVzIGRvIG5vdCBhbHdheXMgaGF2ZSB1bmlx
dWUKKyAgICAvLyB3aGVuIHdlIGRvLCB3ZSB3aWxsIGhhdmUgdG8gYWNjb3VudCBmb3IgdGhlIGZh
Y3QgdGhlIExlZ2FjeUlubGluZVRleHRCb3hlcyBkbyBub3QgYWx3YXlzIGhhdmUgdW5pcXVlCiAg
ICAgLy8gcmVuZGVyZXJzIGFuZCBQYWdlIGN1cnJlbnRseSByZWxpZXMgb24gZWFjaCB1bnBhaW50
ZWQgb2JqZWN0IGhhdmluZyBhIHVuaXF1ZSByZW5kZXJlci4KICAgICBpZiAocGFpbnRJbmZvLnBo
YXNlID09IFBhaW50UGhhc2U6OkZvcmVncm91bmQpCiAgICAgICAgIHJlbmRlcmVyKCkucGFnZSgp
LmFkZFJlbGV2YW50UmVwYWludGVkT2JqZWN0KCZyZW5kZXJlcigpLCBJbnRSZWN0KGJveE9yaWdp
bi54KCksIGJveE9yaWdpbi55KCksIGxvZ2ljYWxXaWR0aCgpLCBsb2dpY2FsSGVpZ2h0KCkpKTsK
QEAgLTU4Miw4ICs1ODAsMTEgQEAgdm9pZCBJbmxpbmVUZXh0Qm94OjpwYWludChQYWludEluZm8m
IHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0LAogICAgIGF1dG8gc3R5
bGVkTWFya2VkVGV4dHMgPSBzdWJkaXZpZGVBbmRSZXNvbHZlU3R5bGUobWFya2VkVGV4dHMsIHJl
bmRlcmVyKCksIGlzRmlyc3RMaW5lKCksIHBhaW50SW5mbyk7CiAKICAgICAvLyAuLi4gbm93IHJl
bW92ZSB0aGUgc2VsZWN0aW9uIG1hcmtlZCB0ZXh0IGlmIHdlIGFyZSBleGNsdWRpbmcgc2VsZWN0
aW9uLgotICAgIGlmICghaXNQcmludGluZyAmJiBwYWludEluZm8ucGFpbnRCZWhhdmlvci5jb250
YWlucyhQYWludEJlaGF2aW9yOjpFeGNsdWRlU2VsZWN0aW9uKSkKLSAgICAgICAgc3R5bGVkTWFy
a2VkVGV4dHMucmVtb3ZlQWxsTWF0Y2hpbmcoW10gKGNvbnN0IFN0eWxlZE1hcmtlZFRleHQmIG1h
cmtlZFRleHQpIHsgcmV0dXJuIG1hcmtlZFRleHQudHlwZSA9PSBNYXJrZWRUZXh0OjpTZWxlY3Rp
b247IH0pOworICAgIGlmICghaXNQcmludGluZyAmJiBwYWludEluZm8ucGFpbnRCZWhhdmlvci5j
b250YWlucyhQYWludEJlaGF2aW9yOjpFeGNsdWRlU2VsZWN0aW9uKSkgeworICAgICAgICBzdHls
ZWRNYXJrZWRUZXh0cy5yZW1vdmVBbGxNYXRjaGluZyhbXSAoY29uc3QgU3R5bGVkTWFya2VkVGV4
dCYgbWFya2VkVGV4dCkgeworICAgICAgICAgICAgcmV0dXJuIG1hcmtlZFRleHQudHlwZSA9PSBN
YXJrZWRUZXh0OjpTZWxlY3Rpb247CisgICAgICAgIH0pOworICAgIH0KIAogICAgIC8vIENvYWxl
c2NlIHN0eWxlcyBvZiBhZGphY2VudCBtYXJrZWQgdGV4dHMgdG8gbWluaW1pemUgdGhlIG51bWJl
ciBvZiBkcmF3aW5nIGNvbW1hbmRzLgogICAgIGF1dG8gY29hbGVzY2VkU3R5bGVkTWFya2VkVGV4
dHMgPSBjb2FsZXNjZUFkamFjZW50TWFya2VkVGV4dHMoc3R5bGVkTWFya2VkVGV4dHMsICZNYXJr
ZWRUZXh0U3R5bGU6OmFyZUZvcmVncm91bmRNYXJrZWRUZXh0U3R5bGVzRXF1YWwpOwpAQCAtNjM4
LDcgKzYzOSw3IEBAIHZvaWQgSW5saW5lVGV4dEJveDo6cGFpbnQoUGFpbnRJbmZvJiBwYWludElu
Zm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCwKICAgICAgICAgY29udGV4dC5jb25j
YXRDVE0ocm90YXRpb24oYm94UmVjdCwgQ291bnRlcmNsb2Nrd2lzZSkpOwogfQogCi11bnNpZ25l
ZCBJbmxpbmVUZXh0Qm94OjpjbGFtcGVkT2Zmc2V0KHVuc2lnbmVkIHgpIGNvbnN0Cit1bnNpZ25l
ZCBMZWdhY3lJbmxpbmVUZXh0Qm94OjpjbGFtcGVkT2Zmc2V0KHVuc2lnbmVkIHgpIGNvbnN0CiB7
CiAgICAgdW5zaWduZWQgb2Zmc2V0ID0gc3RkOjptYXgoc3RkOjptaW4oeCwgbV9zdGFydCArIG1f
bGVuKSwgbV9zdGFydCkgLSBtX3N0YXJ0OwogICAgIGlmIChtX3RydW5jYXRpb24gPT0gY0Z1bGxU
cnVuY2F0aW9uKQpAQCAtNjU3LDcgKzY1OCw3IEBAIHVuc2lnbmVkIElubGluZVRleHRCb3g6OmNs
YW1wZWRPZmZzZXQodW5zaWduZWQgeCkgY29uc3QKICAgICByZXR1cm4gb2Zmc2V0OwogfQogCi1z
dGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiBJbmxpbmVUZXh0Qm94OjpjbGFtcGVkU3RhcnRF
bmRGb3JTdGF0ZSh1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgZW5kLCBSZW5kZXJPYmplY3Q6Okhp
Z2hsaWdodFN0YXRlIHNlbGVjdGlvblN0YXRlKSBjb25zdAorc3RkOjpwYWlyPHVuc2lnbmVkLCB1
bnNpZ25lZD4gTGVnYWN5SW5saW5lVGV4dEJveDo6Y2xhbXBlZFN0YXJ0RW5kRm9yU3RhdGUodW5z
aWduZWQgc3RhcnQsIHVuc2lnbmVkIGVuZCwgUmVuZGVyT2JqZWN0OjpIaWdobGlnaHRTdGF0ZSBz
ZWxlY3Rpb25TdGF0ZSkgY29uc3QKIHsKICAgICBpZiAoc2VsZWN0aW9uU3RhdGUgPT0gUmVuZGVy
T2JqZWN0OjpIaWdobGlnaHRTdGF0ZTo6SW5zaWRlKQogICAgICAgICByZXR1cm4geyAwLCBjbGFt
cGVkT2Zmc2V0KG1fc3RhcnQgKyBtX2xlbikgfTsKQEAgLTY2OSwxNCArNjcwLDE0IEBAIHN0ZDo6
cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IElubGluZVRleHRCb3g6OmNsYW1wZWRTdGFydEVuZEZv
clN0YXRlKHVuc2lnbmVkIHN0CiAgICAgcmV0dXJuIHsgY2xhbXBlZE9mZnNldChzdGFydCksIGNs
YW1wZWRPZmZzZXQoZW5kKSB9OwogfQogCi1zdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiBJ
bmxpbmVUZXh0Qm94OjpzZWxlY3Rpb25TdGFydEVuZCgpIGNvbnN0CitzdGQ6OnBhaXI8dW5zaWdu
ZWQsIHVuc2lnbmVkPiBMZWdhY3lJbmxpbmVUZXh0Qm94OjpzZWxlY3Rpb25TdGFydEVuZCgpIGNv
bnN0CiB7CiAgICAgYXV0byBzZWxlY3Rpb25TdGF0ZSA9IHJlbmRlcmVyKCkuc2VsZWN0aW9uU3Rh
dGUoKTsKICAgICAKICAgICByZXR1cm4gY2xhbXBlZFN0YXJ0RW5kRm9yU3RhdGUocmVuZGVyZXIo
KS52aWV3KCkuc2VsZWN0aW9uKCkuc3RhcnRPZmZzZXQoKSwgcmVuZGVyZXIoKS52aWV3KCkuc2Vs
ZWN0aW9uKCkuZW5kT2Zmc2V0KCksIHNlbGVjdGlvblN0YXRlKTsKIH0KIAotc3RkOjpwYWlyPHVu
c2lnbmVkLCB1bnNpZ25lZD4gSW5saW5lVGV4dEJveDo6aGlnaGxpZ2h0U3RhcnRFbmQoSGlnaGxp
Z2h0RGF0YSAmcmFuZ2VEYXRhKSBjb25zdAorc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4g
TGVnYWN5SW5saW5lVGV4dEJveDo6aGlnaGxpZ2h0U3RhcnRFbmQoSGlnaGxpZ2h0RGF0YSAmcmFu
Z2VEYXRhKSBjb25zdAogewogICAgIGF1dG8gc3RhdGUgPSByYW5nZURhdGEuaGlnaGxpZ2h0U3Rh
dGVGb3JSZW5kZXJlcihyZW5kZXJlcigpKTsKICAgICBzdGF0ZSA9IHZlcmlmeVNlbGVjdGlvblN0
YXRlKHN0YXRlLCByYW5nZURhdGEpOwpAQCAtNjg3LDE5ICs2ODgsMTkgQEAgc3RkOjpwYWlyPHVu
c2lnbmVkLCB1bnNpZ25lZD4gSW5saW5lVGV4dEJveDo6aGlnaGxpZ2h0U3RhcnRFbmQoSGlnaGxp
Z2h0RGF0YSAmcmEKICAgICByZXR1cm4gY2xhbXBlZFN0YXJ0RW5kRm9yU3RhdGUocmFuZ2VEYXRh
LnN0YXJ0T2Zmc2V0KCksIHJhbmdlRGF0YS5lbmRPZmZzZXQoKSwgc3RhdGUpOwogfQogCi1ib29s
IElubGluZVRleHRCb3g6Omhhc01hcmtlcnMoKSBjb25zdAorYm9vbCBMZWdhY3lJbmxpbmVUZXh0
Qm94OjpoYXNNYXJrZXJzKCkgY29uc3QKIHsKICAgICByZXR1cm4gY29sbGVjdE1hcmtlZFRleHRz
Rm9yRG9jdW1lbnRNYXJrZXJzKFRleHRQYWludFBoYXNlOjpEZWNvcmF0aW9uKS5zaXplKCk7CiB9
CiAKLXZvaWQgSW5saW5lVGV4dEJveDo6cGFpbnRQbGF0Zm9ybURvY3VtZW50TWFya2VycyhHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UG9pbnQmIGJveE9yaWdpbikKK3ZvaWQg
TGVnYWN5SW5saW5lVGV4dEJveDo6cGFpbnRQbGF0Zm9ybURvY3VtZW50TWFya2VycyhHcmFwaGlj
c0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UG9pbnQmIGJveE9yaWdpbikKIHsKICAgICAv
LyBUaGlzIG11c3QgbWF0Y2ggY2FsY3VsYXRlVW5pb25PZkFsbERvY3VtZW50TWFya2VyQm91bmRz
KCkuCiAgICAgZm9yIChhdXRvJiBtYXJrZWRUZXh0IDogc3ViZGl2aWRlKGNvbGxlY3RNYXJrZWRU
ZXh0c0ZvckRvY3VtZW50TWFya2VycyhUZXh0UGFpbnRQaGFzZTo6RGVjb3JhdGlvbiksIE92ZXJs
YXBTdHJhdGVneTo6RnJvbnRtb3N0KSkKICAgICAgICAgcGFpbnRQbGF0Zm9ybURvY3VtZW50TWFy
a2VyKGNvbnRleHQsIGJveE9yaWdpbiwgbWFya2VkVGV4dCk7CiB9CiAKLUZsb2F0UmVjdCBJbmxp
bmVUZXh0Qm94OjpjYWxjdWxhdGVVbmlvbk9mQWxsRG9jdW1lbnRNYXJrZXJCb3VuZHMoKSBjb25z
dAorRmxvYXRSZWN0IExlZ2FjeUlubGluZVRleHRCb3g6OmNhbGN1bGF0ZVVuaW9uT2ZBbGxEb2N1
bWVudE1hcmtlckJvdW5kcygpIGNvbnN0CiB7CiAgICAgLy8gVGhpcyBtdXN0IG1hdGNoIHBhaW50
UGxhdGZvcm1Eb2N1bWVudE1hcmtlcnMoKS4KICAgICBGbG9hdFJlY3QgcmVzdWx0OwpAQCAtNzA4
LDcgKzcwOSw3IEBAIEZsb2F0UmVjdCBJbmxpbmVUZXh0Qm94OjpjYWxjdWxhdGVVbmlvbk9mQWxs
RG9jdW1lbnRNYXJrZXJCb3VuZHMoKSBjb25zdAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLUZs
b2F0UmVjdCBJbmxpbmVUZXh0Qm94OjpjYWxjdWxhdGVEb2N1bWVudE1hcmtlckJvdW5kcyhjb25z
dCBNYXJrZWRUZXh0JiBtYXJrZWRUZXh0KSBjb25zdAorRmxvYXRSZWN0IExlZ2FjeUlubGluZVRl
eHRCb3g6OmNhbGN1bGF0ZURvY3VtZW50TWFya2VyQm91bmRzKGNvbnN0IE1hcmtlZFRleHQmIG1h
cmtlZFRleHQpIGNvbnN0CiB7CiAgICAgYXV0byYgZm9udCA9IGxpbmVGb250KCk7CiAgICAgYXV0
byBhc2NlbnQgPSBmb250LmZvbnRNZXRyaWNzKCkuYXNjZW50KCk7CkBAIC03MjcsNyArNzI4LDcg
QEAgRmxvYXRSZWN0IElubGluZVRleHRCb3g6OmNhbGN1bGF0ZURvY3VtZW50TWFya2VyQm91bmRz
KGNvbnN0IE1hcmtlZFRleHQmIG1hcmtlZFQKICAgICByZXR1cm4gRmxvYXRSZWN0KDAsIHksIGxv
Z2ljYWxXaWR0aCgpLCBoZWlnaHQpOwogfQogCi12b2lkIElubGluZVRleHRCb3g6OnBhaW50UGxh
dGZvcm1Eb2N1bWVudE1hcmtlcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0
UG9pbnQmIGJveE9yaWdpbiwgY29uc3QgTWFya2VkVGV4dCYgbWFya2VkVGV4dCkKK3ZvaWQgTGVn
YWN5SW5saW5lVGV4dEJveDo6cGFpbnRQbGF0Zm9ybURvY3VtZW50TWFya2VyKEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRQb2ludCYgYm94T3JpZ2luLCBjb25zdCBNYXJrZWRU
ZXh0JiBtYXJrZWRUZXh0KQogewogICAgIC8vIE5ldmVyIHByaW50IHNwZWxsaW5nL2dyYW1tYXIg
bWFya2VycyAoNTMyNzg4NykKICAgICBpZiAocmVuZGVyZXIoKS5kb2N1bWVudCgpLnByaW50aW5n
KCkpCkBAIC03NjQsNyArNzY1LDcgQEAgdm9pZCBJbmxpbmVUZXh0Qm94OjpwYWludFBsYXRmb3Jt
RG9jdW1lbnRNYXJrZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdAogICAgIGNvbnRl
eHQuZHJhd0RvdHNGb3JEb2N1bWVudE1hcmtlcihib3VuZHMsIGxpbmVTdHlsZUZvck1hcmtlZFRl
eHRUeXBlKCkpOwogfQogCi1WZWN0b3I8TWFya2VkVGV4dD4gSW5saW5lVGV4dEJveDo6Y29sbGVj
dE1hcmtlZFRleHRzRm9yRHJhZ2dlZENvbnRlbnQoKQorVmVjdG9yPE1hcmtlZFRleHQ+IExlZ2Fj
eUlubGluZVRleHRCb3g6OmNvbGxlY3RNYXJrZWRUZXh0c0ZvckRyYWdnZWRDb250ZW50KCkKIHsK
ICAgICB1c2luZyBEcmFnZ2VuZENvbnRlbnRSYW5nZSA9IHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5z
aWduZWQ+OwogICAgIGF1dG8gZHJhZ2dlZENvbnRlbnRSYW5nZXMgPSByZW5kZXJlcigpLmRyYWdn
ZWRDb250ZW50UmFuZ2VzQmV0d2Vlbk9mZnNldHMobV9zdGFydCwgbV9zdGFydCArIG1fbGVuKTsK
QEAgLTc3NCw3ICs3NzUsNyBAQCBWZWN0b3I8TWFya2VkVGV4dD4gSW5saW5lVGV4dEJveDo6Y29s
bGVjdE1hcmtlZFRleHRzRm9yRHJhZ2dlZENvbnRlbnQoKQogICAgIHJldHVybiByZXN1bHQ7CiB9
CiAKLVZlY3RvcjxNYXJrZWRUZXh0PiBJbmxpbmVUZXh0Qm94Ojpjb2xsZWN0TWFya2VkVGV4dHNG
b3JEb2N1bWVudE1hcmtlcnMoVGV4dFBhaW50UGhhc2UgcGhhc2UpIGNvbnN0CitWZWN0b3I8TWFy
a2VkVGV4dD4gTGVnYWN5SW5saW5lVGV4dEJveDo6Y29sbGVjdE1hcmtlZFRleHRzRm9yRG9jdW1l
bnRNYXJrZXJzKFRleHRQYWludFBoYXNlIHBoYXNlKSBjb25zdAogewogICAgIEFTU0VSVF9BUkco
cGhhc2UsIHBoYXNlID09IFRleHRQYWludFBoYXNlOjpCYWNrZ3JvdW5kIHx8IHBoYXNlID09IFRl
eHRQYWludFBoYXNlOjpGb3JlZ3JvdW5kIHx8IHBoYXNlID09IFRleHRQYWludFBoYXNlOjpEZWNv
cmF0aW9uKTsKIApAQCAtODc5LDcgKzg4MCw3IEBAIFZlY3RvcjxNYXJrZWRUZXh0PiBJbmxpbmVU
ZXh0Qm94Ojpjb2xsZWN0TWFya2VkVGV4dHNGb3JEb2N1bWVudE1hcmtlcnMoVGV4dFBhaW50CiAg
ICAgcmV0dXJuIG1hcmtlZFRleHRzOwogfQogCi1WZWN0b3I8TWFya2VkVGV4dD4gSW5saW5lVGV4
dEJveDo6Y29sbGVjdE1hcmtlZFRleHRzRm9ySGlnaGxpZ2h0cyhUZXh0UGFpbnRQaGFzZSBwaGFz
ZSkgY29uc3QKK1ZlY3RvcjxNYXJrZWRUZXh0PiBMZWdhY3lJbmxpbmVUZXh0Qm94Ojpjb2xsZWN0
TWFya2VkVGV4dHNGb3JIaWdobGlnaHRzKFRleHRQYWludFBoYXNlIHBoYXNlKSBjb25zdAogewog
ICAgIEFTU0VSVF9BUkcocGhhc2UsIHBoYXNlID09IFRleHRQYWludFBoYXNlOjpCYWNrZ3JvdW5k
IHx8IHBoYXNlID09IFRleHRQYWludFBoYXNlOjpGb3JlZ3JvdW5kIHx8IHBoYXNlID09IFRleHRQ
YWludFBoYXNlOjpEZWNvcmF0aW9uKTsKICAgICBVTlVTRURfUEFSQU0ocGhhc2UpOwpAQCAtOTI4
LDcgKzkyOSw3IEBAIFZlY3RvcjxNYXJrZWRUZXh0PiBJbmxpbmVUZXh0Qm94Ojpjb2xsZWN0TWFy
a2VkVGV4dHNGb3JIaWdobGlnaHRzKFRleHRQYWludFBoYXNlCiAgICAgcmV0dXJuIG1hcmtlZFRl
eHRzOwogfQogCi1GbG9hdFBvaW50IElubGluZVRleHRCb3g6OnRleHRPcmlnaW5Gcm9tQm94UmVj
dChjb25zdCBGbG9hdFJlY3QmIGJveFJlY3QpIGNvbnN0CitGbG9hdFBvaW50IExlZ2FjeUlubGlu
ZVRleHRCb3g6OnRleHRPcmlnaW5Gcm9tQm94UmVjdChjb25zdCBGbG9hdFJlY3QmIGJveFJlY3Qp
IGNvbnN0CiB7CiAgICAgRmxvYXRQb2ludCB0ZXh0T3JpZ2luIHsgYm94UmVjdC54KCksIGJveFJl
Y3QueSgpICsgbGluZUZvbnQoKS5mb250TWV0cmljcygpLmFzY2VudCgpIH07CiAgICAgaWYgKGF1
dG8qIGNvbWJpbmVkVGV4dCA9IHRoaXMtPmNvbWJpbmVkVGV4dCgpKSB7CkBAIC05NDIsNyArOTQz
LDcgQEAgRmxvYXRQb2ludCBJbmxpbmVUZXh0Qm94Ojp0ZXh0T3JpZ2luRnJvbUJveFJlY3QoY29u
c3QgRmxvYXRSZWN0JiBib3hSZWN0KSBjb25zdAogICAgIHJldHVybiB0ZXh0T3JpZ2luOwogfQog
Ci12b2lkIElubGluZVRleHRCb3g6OnBhaW50TWFya2VkVGV4dHMoUGFpbnRJbmZvJiBwYWludElu
Zm8sIFRleHRQYWludFBoYXNlIHBoYXNlLCBjb25zdCBGbG9hdFJlY3QmIGJveFJlY3QsIGNvbnN0
IFZlY3RvcjxTdHlsZWRNYXJrZWRUZXh0PiYgbWFya2VkVGV4dHMsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVjb3JhdGlvbkNsaXBPdXRSZWN0KQordm9pZCBMZWdhY3lJbmxpbmVUZXh0Qm94OjpwYWludE1h
cmtlZFRleHRzKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBUZXh0UGFpbnRQaGFzZSBwaGFzZSwgY29u
c3QgRmxvYXRSZWN0JiBib3hSZWN0LCBjb25zdCBWZWN0b3I8U3R5bGVkTWFya2VkVGV4dD4mIG1h
cmtlZFRleHRzLCBjb25zdCBGbG9hdFJlY3QmIGRlY29yYXRpb25DbGlwT3V0UmVjdCkKIHsKICAg
ICBzd2l0Y2ggKHBoYXNlKSB7CiAgICAgY2FzZSBUZXh0UGFpbnRQaGFzZTo6QmFja2dyb3VuZDoK
QEAgLTk2MCw3ICs5NjEsNyBAQCB2b2lkIElubGluZVRleHRCb3g6OnBhaW50TWFya2VkVGV4dHMo
UGFpbnRJbmZvJiBwYWludEluZm8sIFRleHRQYWludFBoYXNlIHBoYXNlLAogICAgIH0KIH0KIAot
dm9pZCBJbmxpbmVUZXh0Qm94OjpwYWludE1hcmtlZFRleHRCYWNrZ3JvdW5kKFBhaW50SW5mbyYg
cGFpbnRJbmZvLCBjb25zdCBGbG9hdFBvaW50JiBib3hPcmlnaW4sIGNvbnN0IENvbG9yJiBjb2xv
ciwgdW5zaWduZWQgY2xhbXBlZFN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBjbGFtcGVkRW5kT2Zmc2V0
LCBNYXJrZWRUZXh0QmFja2dyb3VuZFN0eWxlIHN0eWxlKQordm9pZCBMZWdhY3lJbmxpbmVUZXh0
Qm94OjpwYWludE1hcmtlZFRleHRCYWNrZ3JvdW5kKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25z
dCBGbG9hdFBvaW50JiBib3hPcmlnaW4sIGNvbnN0IENvbG9yJiBjb2xvciwgdW5zaWduZWQgY2xh
bXBlZFN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBjbGFtcGVkRW5kT2Zmc2V0LCBNYXJrZWRUZXh0QmFj
a2dyb3VuZFN0eWxlIHN0eWxlKQogewogICAgIGlmIChjbGFtcGVkU3RhcnRPZmZzZXQgPj0gY2xh
bXBlZEVuZE9mZnNldCkKICAgICAgICAgcmV0dXJuOwpAQCAtOTk3LDcgKzk5OCw3IEBAIHZvaWQg
SW5saW5lVGV4dEJveDo6cGFpbnRNYXJrZWRUZXh0QmFja2dyb3VuZChQYWludEluZm8mIHBhaW50
SW5mbywgY29uc3QgRmxvYXRQCiAgICAgY29udGV4dC5maWxsUmVjdChiYWNrZ3JvdW5kUmVjdCwg
Y29sb3IpOwogfQogCi12b2lkIElubGluZVRleHRCb3g6OnBhaW50TWFya2VkVGV4dEZvcmVncm91
bmQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEZsb2F0UmVjdCYgYm94UmVjdCwgY29uc3Qg
U3R5bGVkTWFya2VkVGV4dCYgbWFya2VkVGV4dCkKK3ZvaWQgTGVnYWN5SW5saW5lVGV4dEJveDo6
cGFpbnRNYXJrZWRUZXh0Rm9yZWdyb3VuZChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgRmxv
YXRSZWN0JiBib3hSZWN0LCBjb25zdCBTdHlsZWRNYXJrZWRUZXh0JiBtYXJrZWRUZXh0KQogewog
ICAgIGlmIChtYXJrZWRUZXh0LnN0YXJ0T2Zmc2V0ID49IG1hcmtlZFRleHQuZW5kT2Zmc2V0KQog
ICAgICAgICByZXR1cm47CkBAIC0xMDM3LDcgKzEwMzgsNyBAQCB2b2lkIElubGluZVRleHRCb3g6
OnBhaW50TWFya2VkVGV4dEZvcmVncm91bmQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEZs
b2F0UgogICAgIHRleHRQYWludGVyLnBhaW50UmFuZ2UodGV4dFJ1biwgYm94UmVjdCwgdGV4dE9y
aWdpbkZyb21Cb3hSZWN0KGJveFJlY3QpLCBtYXJrZWRUZXh0LnN0YXJ0T2Zmc2V0LCBtYXJrZWRU
ZXh0LmVuZE9mZnNldCk7CiB9CiAKLXZvaWQgSW5saW5lVGV4dEJveDo6cGFpbnRNYXJrZWRUZXh0
RGVjb3JhdGlvbihQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgRmxvYXRSZWN0JiBib3hSZWN0
LCBjb25zdCBGbG9hdFJlY3QmIGNsaXBPdXRSZWN0LCBjb25zdCBTdHlsZWRNYXJrZWRUZXh0JiBt
YXJrZWRUZXh0KQordm9pZCBMZWdhY3lJbmxpbmVUZXh0Qm94OjpwYWludE1hcmtlZFRleHREZWNv
cmF0aW9uKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBGbG9hdFJlY3QmIGJveFJlY3QsIGNv
bnN0IEZsb2F0UmVjdCYgY2xpcE91dFJlY3QsIGNvbnN0IFN0eWxlZE1hcmtlZFRleHQmIG1hcmtl
ZFRleHQpCiB7CiAgICAgaWYgKG1fdHJ1bmNhdGlvbiA9PSBjRnVsbFRydW5jYXRpb24pCiAgICAg
ICAgIHJldHVybjsKQEAgLTEwOTcsNyArMTA5OCw3IEBAIHZvaWQgSW5saW5lVGV4dEJveDo6cGFp
bnRNYXJrZWRUZXh0RGVjb3JhdGlvbihQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgRmxvYXRS
CiAgICAgICAgIGNvbnRleHQuY29uY2F0Q1RNKHJvdGF0aW9uKGJveFJlY3QsIENvdW50ZXJjbG9j
a3dpc2UpKTsKIH0KIAotdm9pZCBJbmxpbmVUZXh0Qm94OjpwYWludENvbXBvc2l0aW9uQmFja2dy
b3VuZChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgRmxvYXRQb2ludCYgYm94T3JpZ2luKQor
dm9pZCBMZWdhY3lJbmxpbmVUZXh0Qm94OjpwYWludENvbXBvc2l0aW9uQmFja2dyb3VuZChQYWlu
dEluZm8mIHBhaW50SW5mbywgY29uc3QgRmxvYXRQb2ludCYgYm94T3JpZ2luKQogewogICAgIGlm
ICghcmVuZGVyZXIoKS5mcmFtZSgpLmVkaXRvcigpLmNvbXBvc2l0aW9uVXNlc0N1c3RvbUhpZ2hs
aWdodHMoKSkgewogICAgICAgICBwYWludE1hcmtlZFRleHRCYWNrZ3JvdW5kKHBhaW50SW5mbywg
Ym94T3JpZ2luLCBDb21wb3NpdGlvbkhpZ2hsaWdodDo6ZGVmYXVsdENvbXBvc2l0aW9uRmlsbENv
bG9yLCBjbGFtcGVkT2Zmc2V0KHJlbmRlcmVyKCkuZnJhbWUoKS5lZGl0b3IoKS5jb21wb3NpdGlv
blN0YXJ0KCkpLCBjbGFtcGVkT2Zmc2V0KHJlbmRlcmVyKCkuZnJhbWUoKS5lZGl0b3IoKS5jb21w
b3NpdGlvbkVuZCgpKSk7CkBAIC0xMTE4LDcgKzExMTksNyBAQCB2b2lkIElubGluZVRleHRCb3g6
OnBhaW50Q29tcG9zaXRpb25CYWNrZ3JvdW5kKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBG
bG9hdAogICAgIH0KIH0KIAotdm9pZCBJbmxpbmVUZXh0Qm94OjpwYWludENvbXBvc2l0aW9uVW5k
ZXJsaW5lcyhQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgRmxvYXRQb2ludCYgYm94T3JpZ2lu
KSBjb25zdAordm9pZCBMZWdhY3lJbmxpbmVUZXh0Qm94OjpwYWludENvbXBvc2l0aW9uVW5kZXJs
aW5lcyhQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgRmxvYXRQb2ludCYgYm94T3JpZ2luKSBj
b25zdAogewogICAgIGlmIChtX3RydW5jYXRpb24gPT0gY0Z1bGxUcnVuY2F0aW9uKQogICAgICAg
ICByZXR1cm47CkBAIC0xMTQ5LDcgKzExNTAsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgbWlycm9y
UlRMU2VnbWVudChmbG9hdCBsb2dpY2FsV2lkdGgsIFRleHREaXJlY3Rpb24gZGlyZWN0aW9uLAog
ICAgIHN0YXJ0ID0gbG9naWNhbFdpZHRoIC0gd2lkdGggLSBzdGFydDsKIH0KIAotdm9pZCBJbmxp
bmVUZXh0Qm94OjpwYWludENvbXBvc2l0aW9uVW5kZXJsaW5lKFBhaW50SW5mbyYgcGFpbnRJbmZv
LCBjb25zdCBGbG9hdFBvaW50JiBib3hPcmlnaW4sIGNvbnN0IENvbXBvc2l0aW9uVW5kZXJsaW5l
JiB1bmRlcmxpbmUpIGNvbnN0Cit2b2lkIExlZ2FjeUlubGluZVRleHRCb3g6OnBhaW50Q29tcG9z
aXRpb25VbmRlcmxpbmUoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEZsb2F0UG9pbnQmIGJv
eE9yaWdpbiwgY29uc3QgQ29tcG9zaXRpb25VbmRlcmxpbmUmIHVuZGVybGluZSkgY29uc3QKIHsK
ICAgICBpZiAobV90cnVuY2F0aW9uID09IGNGdWxsVHJ1bmNhdGlvbikKICAgICAgICAgcmV0dXJu
OwpAQCAtMTE2NCw3ICsxMTY1LDcgQEAgdm9pZCBJbmxpbmVUZXh0Qm94OjpwYWludENvbXBvc2l0
aW9uVW5kZXJsaW5lKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBGbG9hdFAKICAgICAgICAg
dXNlV2hvbGVXaWR0aCA9IGZhbHNlOwogICAgICAgICBzdGFydCA9IHJlbmRlcmVyKCkud2lkdGgo
bV9zdGFydCwgcGFpbnRTdGFydCAtIG1fc3RhcnQsIHRleHRQb3MoKSwgaXNGaXJzdExpbmUoKSk7
CiAgICAgfQotICAgIGlmIChwYWludEVuZCAhPSB1bmRlcmxpbmUuZW5kT2Zmc2V0KSB7ICAgICAg
Ly8gZW5kIHBvaW50cyBhdCB0aGUgbGFzdCBjaGFyLCBub3QgcGFzdCBpdAorICAgIGlmIChwYWlu
dEVuZCAhPSB1bmRlcmxpbmUuZW5kT2Zmc2V0KSB7CiAgICAgICAgIHBhaW50RW5kID0gc3RkOjpt
aW4ocGFpbnRFbmQsICh1bnNpZ25lZCl1bmRlcmxpbmUuZW5kT2Zmc2V0KTsKICAgICAgICAgdXNl
V2hvbGVXaWR0aCA9IGZhbHNlOwogICAgIH0KQEAgLTExOTcsMjYgKzExOTgsMjYgQEAgdm9pZCBJ
bmxpbmVUZXh0Qm94OjpwYWludENvbXBvc2l0aW9uVW5kZXJsaW5lKFBhaW50SW5mbyYgcGFpbnRJ
bmZvLCBjb25zdCBGbG9hdFAKICAgICBjb250ZXh0LmRyYXdMaW5lRm9yVGV4dChGbG9hdFJlY3Qo
Ym94T3JpZ2luLngoKSArIHN0YXJ0LCBib3hPcmlnaW4ueSgpICsgbG9naWNhbEhlaWdodCgpIC0g
bGluZVRoaWNrbmVzcywgd2lkdGgsIGxpbmVUaGlja25lc3MpLCByZW5kZXJlcigpLmRvY3VtZW50
KCkucHJpbnRpbmcoKSk7CiB9CiAKLWludCBJbmxpbmVUZXh0Qm94OjpjYXJldE1pbk9mZnNldCgp
IGNvbnN0CitpbnQgTGVnYWN5SW5saW5lVGV4dEJveDo6Y2FyZXRNaW5PZmZzZXQoKSBjb25zdAog
ewogICAgIHJldHVybiBtX3N0YXJ0OwogfQogCi1pbnQgSW5saW5lVGV4dEJveDo6Y2FyZXRNYXhP
ZmZzZXQoKSBjb25zdAoraW50IExlZ2FjeUlubGluZVRleHRCb3g6OmNhcmV0TWF4T2Zmc2V0KCkg
Y29uc3QKIHsKICAgICByZXR1cm4gbV9zdGFydCArIG1fbGVuOwogfQogCi1mbG9hdCBJbmxpbmVU
ZXh0Qm94Ojp0ZXh0UG9zKCkgY29uc3QKK2Zsb2F0IExlZ2FjeUlubGluZVRleHRCb3g6OnRleHRQ
b3MoKSBjb25zdAogewogICAgIC8vIFdoZW4gY29tcHV0aW5nIHRoZSB3aWR0aCBvZiBhIHRleHQg
cnVuLCBSZW5kZXJCbG9jazo6Y29tcHV0ZUlubGluZURpcmVjdGlvblBvc2l0aW9uc0ZvckxpbmUo
KSBkb2Vzbid0IGluY2x1ZGUgdGhlIGFjdHVhbCBvZmZzZXQKICAgICAvLyBmcm9tIHRoZSBjb250
YWluaW5nIGJsb2NrIGVkZ2UgaW4gaXRzIG1lYXN1cmVtZW50LiB0ZXh0UG9zKCkgc2hvdWxkIGJl
IGNvbnNpc3RlbnQgc28gdGhlIHRleHQgYXJlIHJlbmRlcmVkIGluIHRoZSBzYW1lIHdpZHRoLgot
ICAgIGlmIChsb2dpY2FsTGVmdCgpID09IDApCisgICAgaWYgKCFsb2dpY2FsTGVmdCgpKQogICAg
ICAgICByZXR1cm4gMDsKICAgICByZXR1cm4gbG9naWNhbExlZnQoKSAtIHJvb3QoKS5sb2dpY2Fs
TGVmdCgpOwogfQogCi1pbnQgSW5saW5lVGV4dEJveDo6b2Zmc2V0Rm9yUG9zaXRpb24oZmxvYXQg
bGluZU9mZnNldCwgYm9vbCBpbmNsdWRlUGFydGlhbEdseXBocykgY29uc3QKK2ludCBMZWdhY3lJ
bmxpbmVUZXh0Qm94OjpvZmZzZXRGb3JQb3NpdGlvbihmbG9hdCBsaW5lT2Zmc2V0LCBib29sIGlu
Y2x1ZGVQYXJ0aWFsR2x5cGhzKSBjb25zdAogewogICAgIGlmIChpc0xpbmVCcmVhaygpKQogICAg
ICAgICByZXR1cm4gMDsKQEAgLTEyMjksNyArMTIzMCw3IEBAIGludCBJbmxpbmVUZXh0Qm94Ojpv
ZmZzZXRGb3JQb3NpdGlvbihmbG9hdCBsaW5lT2Zmc2V0LCBib29sIGluY2x1ZGVQYXJ0aWFsR2x5
cGhzCiAgICAgcmV0dXJuIGxpbmVGb250KCkub2Zmc2V0Rm9yUG9zaXRpb24oY3JlYXRlVGV4dFJ1
bihpZ25vcmVDb21iaW5lZFRleHQsIGlnbm9yZUh5cGhlbiksIGxpbmVPZmZzZXQgLSBsb2dpY2Fs
TGVmdCgpLCBpbmNsdWRlUGFydGlhbEdseXBocyk7CiB9CiAKLWZsb2F0IElubGluZVRleHRCb3g6
OnBvc2l0aW9uRm9yT2Zmc2V0KHVuc2lnbmVkIG9mZnNldCkgY29uc3QKK2Zsb2F0IExlZ2FjeUlu
bGluZVRleHRCb3g6OnBvc2l0aW9uRm9yT2Zmc2V0KHVuc2lnbmVkIG9mZnNldCkgY29uc3QKIHsK
ICAgICBBU1NFUlQob2Zmc2V0ID49IG1fc3RhcnQpOwogICAgIEFTU0VSVChvZmZzZXQgPD0gbV9z
dGFydCArIGxlbigpKTsKQEAgLTEyNTYsNyArMTI1Nyw3IEBAIGZsb2F0IElubGluZVRleHRCb3g6
OnBvc2l0aW9uRm9yT2Zmc2V0KHVuc2lnbmVkIG9mZnNldCkgY29uc3QKICAgICByZXR1cm4gc25h
cFJlY3RUb0RldmljZVBpeGVsc1dpdGhXcml0aW5nRGlyZWN0aW9uKHNlbGVjdGlvblJlY3QsIHJl
bmRlcmVyKCkuZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZhY3RvcigpLCB0ZXh0UnVuLmx0cigpKS5t
YXhYKCk7CiB9CiAKLVRleHRSdW4gSW5saW5lVGV4dEJveDo6Y3JlYXRlVGV4dFJ1bihib29sIGln
bm9yZUNvbWJpbmVkVGV4dCwgYm9vbCBpZ25vcmVIeXBoZW4pIGNvbnN0CitUZXh0UnVuIExlZ2Fj
eUlubGluZVRleHRCb3g6OmNyZWF0ZVRleHRSdW4oYm9vbCBpZ25vcmVDb21iaW5lZFRleHQsIGJv
b2wgaWdub3JlSHlwaGVuKSBjb25zdAogewogICAgIGNvbnN0IGF1dG8mIHN0eWxlID0gbGluZVN0
eWxlKCk7CiAgICAgVGV4dFJ1biB0ZXh0UnVuIHsgdGV4dChpZ25vcmVDb21iaW5lZFRleHQsIGln
bm9yZUh5cGhlbiksIHRleHRQb3MoKSwgZXhwYW5zaW9uKCksIGV4cGFuc2lvbkJlaGF2aW9yKCks
IGRpcmVjdGlvbigpLCBkaXJPdmVycmlkZSgpIHx8IHN0eWxlLnJ0bE9yZGVyaW5nKCkgPT0gT3Jk
ZXI6OlZpc3VhbCwgIXJlbmRlcmVyKCkuY2FuVXNlU2ltcGxlRm9udENvZGVQYXRoKCkgfTsKQEAg
LTEyNjQsNyArMTI2NSw3IEBAIFRleHRSdW4gSW5saW5lVGV4dEJveDo6Y3JlYXRlVGV4dFJ1bihi
b29sIGlnbm9yZUNvbWJpbmVkVGV4dCwgYm9vbCBpZ25vcmVIeXBoZW4pCiAgICAgcmV0dXJuIHRl
eHRSdW47CiB9CiAKLVN0cmluZyBJbmxpbmVUZXh0Qm94Ojp0ZXh0KGJvb2wgaWdub3JlQ29tYmlu
ZWRUZXh0LCBib29sIGlnbm9yZUh5cGhlbikgY29uc3QKK1N0cmluZyBMZWdhY3lJbmxpbmVUZXh0
Qm94Ojp0ZXh0KGJvb2wgaWdub3JlQ29tYmluZWRUZXh0LCBib29sIGlnbm9yZUh5cGhlbikgY29u
c3QKIHsKICAgICBTdHJpbmcgcmVzdWx0OwogICAgIGlmIChhdXRvKiBjb21iaW5lZFRleHQgPSB0
aGlzLT5jb21iaW5lZFRleHQoKSkgewpAQCAtMTI4NSwxMiArMTI4NiwxMiBAQCBTdHJpbmcgSW5s
aW5lVGV4dEJveDo6dGV4dChib29sIGlnbm9yZUNvbWJpbmVkVGV4dCwgYm9vbCBpZ25vcmVIeXBo
ZW4pIGNvbnN0CiAgICAgcmV0dXJuIFJlbmRlckJsb2NrOjp1cGRhdGVTZWN1cml0eURpc2NDaGFy
YWN0ZXJzKGxpbmVTdHlsZSgpLCBXVEZNb3ZlKHJlc3VsdCkpOwogfQogCi1pbmxpbmUgY29uc3Qg
UmVuZGVyQ29tYmluZVRleHQqIElubGluZVRleHRCb3g6OmNvbWJpbmVkVGV4dCgpIGNvbnN0Citp
bmxpbmUgY29uc3QgUmVuZGVyQ29tYmluZVRleHQqIExlZ2FjeUlubGluZVRleHRCb3g6OmNvbWJp
bmVkVGV4dCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGxpbmVTdHlsZSgpLmhhc1RleHRDb21iaW5l
KCkgJiYgaXM8UmVuZGVyQ29tYmluZVRleHQ+KHJlbmRlcmVyKCkpICYmIGRvd25jYXN0PFJlbmRl
ckNvbWJpbmVUZXh0PihyZW5kZXJlcigpKS5pc0NvbWJpbmVkKCkgPyAmZG93bmNhc3Q8UmVuZGVy
Q29tYmluZVRleHQ+KHJlbmRlcmVyKCkpIDogbnVsbHB0cjsKIH0KIAotU2hhZG93RGF0YSogSW5s
aW5lVGV4dEJveDo6ZGVidWdUZXh0U2hhZG93KCkKK1NoYWRvd0RhdGEqIExlZ2FjeUlubGluZVRl
eHRCb3g6OmRlYnVnVGV4dFNoYWRvdygpCiB7CiAgICAgaWYgKCFyZW5kZXJlcigpLnNldHRpbmdz
KCkubGVnYWN5TGluZUxheW91dFZpc3VhbENvdmVyYWdlRW5hYmxlZCgpKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKQEAgLTEyOTksNyArMTMwMCw3IEBAIFNoYWRvd0RhdGEqIElubGluZVRleHRC
b3g6OmRlYnVnVGV4dFNoYWRvdygpCiAgICAgcmV0dXJuICZkZWJ1Z1RleHRTaGFkb3cuZ2V0KCk7
CiB9CiAKLUV4cGFuc2lvbkJlaGF2aW9yIElubGluZVRleHRCb3g6OmV4cGFuc2lvbkJlaGF2aW9y
KCkgY29uc3QKK0V4cGFuc2lvbkJlaGF2aW9yIExlZ2FjeUlubGluZVRleHRCb3g6OmV4cGFuc2lv
bkJlaGF2aW9yKCkgY29uc3QKIHsKICAgICBFeHBhbnNpb25CZWhhdmlvciBsZWZ0QmVoYXZpb3I7
CiAgICAgaWYgKGZvcmNlTGVmdEV4cGFuc2lvbigpKQpAQCAtMTMyMiwxMiArMTMyMywxMiBAQCBF
eHBhbnNpb25CZWhhdmlvciBJbmxpbmVUZXh0Qm94OjpleHBhbnNpb25CZWhhdmlvcigpIGNvbnN0
CiAKICNpZiBFTkFCTEUoVFJFRV9ERUJVR0dJTkcpCiAKLWNvbnN0IGNoYXIqIElubGluZVRleHRC
b3g6OmJveE5hbWUoKSBjb25zdAorY29uc3QgY2hhciogTGVnYWN5SW5saW5lVGV4dEJveDo6Ym94
TmFtZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuICJJbmxpbmVUZXh0Qm94IjsKIH0KIAotdm9pZCBJ
bmxpbmVUZXh0Qm94OjpvdXRwdXRMaW5lQm94KFRleHRTdHJlYW0mIHN0cmVhbSwgYm9vbCBtYXJr
LCBpbnQgZGVwdGgpIGNvbnN0Cit2b2lkIExlZ2FjeUlubGluZVRleHRCb3g6Om91dHB1dExpbmVC
b3goVGV4dFN0cmVhbSYgc3RyZWFtLCBib29sIG1hcmssIGludCBkZXB0aCkgY29uc3QKIHsKICAg
ICBzdHJlYW0gPDwgIi0tLS0tLS0tICIgPDwgKGlzRGlydHkoKSA/ICJEIiA6ICItIikgPDwgIi0i
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5o
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xlZ2FjeUlubGluZVRleHRCb3guaApzaW1pbGFy
aXR5IGluZGV4IDkwJQpyZW5hbWUgZnJvbSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5l
VGV4dEJveC5oCnJlbmFtZSB0byBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVnYWN5SW5saW5l
VGV4dEJveC5oCmluZGV4IDA5N2U4MGY0NWZiNi4uZTU3MDY2ODY2Mjk2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9MZWdhY3lJbmxpbmVUZXh0Qm94LmgKQEAgLTM5LDI0ICszOSwyNCBAQCBz
dHJ1Y3QgVGV4dFBhaW50U3R5bGU7CiBjb25zdCB1bnNpZ25lZCBzaG9ydCBjTm9UcnVuY2F0aW9u
ID0gVVNIUlRfTUFYOwogY29uc3QgdW5zaWduZWQgc2hvcnQgY0Z1bGxUcnVuY2F0aW9uID0gVVNI
UlRfTUFYIC0gMTsKIAotY2xhc3MgSW5saW5lVGV4dEJveCA6IHB1YmxpYyBMZWdhY3lJbmxpbmVC
b3ggewotICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoSW5saW5lVGV4dEJveCk7CitjbGFzcyBM
ZWdhY3lJbmxpbmVUZXh0Qm94IDogcHVibGljIExlZ2FjeUlubGluZUJveCB7CisgICAgV1RGX01B
S0VfSVNPX0FMTE9DQVRFRChMZWdhY3lJbmxpbmVUZXh0Qm94KTsKIHB1YmxpYzoKLSAgICBleHBs
aWNpdCBJbmxpbmVUZXh0Qm94KFJlbmRlclRleHQmIHJlbmRlcmVyKQorICAgIGV4cGxpY2l0IExl
Z2FjeUlubGluZVRleHRCb3goUmVuZGVyVGV4dCYgcmVuZGVyZXIpCiAgICAgICAgIDogTGVnYWN5
SW5saW5lQm94KHJlbmRlcmVyKQogICAgIHsKICAgICAgICAgc2V0QmVoYXZlc0xpa2VUZXh0KHRy
dWUpOwogICAgIH0KIAotICAgIHZpcnR1YWwgfklubGluZVRleHRCb3goKTsKKyAgICB2aXJ0dWFs
IH5MZWdhY3lJbmxpbmVUZXh0Qm94KCk7CiAKICAgICBSZW5kZXJUZXh0JiByZW5kZXJlcigpIGNv
bnN0IHsgcmV0dXJuIGRvd25jYXN0PFJlbmRlclRleHQ+KExlZ2FjeUlubGluZUJveDo6cmVuZGVy
ZXIoKSk7IH0KICAgICBjb25zdCBSZW5kZXJTdHlsZSYgbGluZVN0eWxlKCkgY29uc3QgeyByZXR1
cm4gaXNGaXJzdExpbmUoKSA/IHJlbmRlcmVyKCkuZmlyc3RMaW5lU3R5bGUoKSA6IHJlbmRlcmVy
KCkuc3R5bGUoKTsgfQogCi0gICAgSW5saW5lVGV4dEJveCogcHJldlRleHRCb3goKSBjb25zdCB7
IHJldHVybiBtX3ByZXZUZXh0Qm94OyB9Ci0gICAgSW5saW5lVGV4dEJveCogbmV4dFRleHRCb3go
KSBjb25zdCB7IHJldHVybiBtX25leHRUZXh0Qm94OyB9Ci0gICAgdm9pZCBzZXROZXh0VGV4dEJv
eChJbmxpbmVUZXh0Qm94KiBuKSB7IG1fbmV4dFRleHRCb3ggPSBuOyB9Ci0gICAgdm9pZCBzZXRQ
cmV2aW91c1RleHRCb3goSW5saW5lVGV4dEJveCogcCkgeyBtX3ByZXZUZXh0Qm94ID0gcDsgfQor
ICAgIExlZ2FjeUlubGluZVRleHRCb3gqIHByZXZUZXh0Qm94KCkgY29uc3QgeyByZXR1cm4gbV9w
cmV2VGV4dEJveDsgfQorICAgIExlZ2FjeUlubGluZVRleHRCb3gqIG5leHRUZXh0Qm94KCkgY29u
c3QgeyByZXR1cm4gbV9uZXh0VGV4dEJveDsgfQorICAgIHZvaWQgc2V0TmV4dFRleHRCb3goTGVn
YWN5SW5saW5lVGV4dEJveCogbikgeyBtX25leHRUZXh0Qm94ID0gbjsgfQorICAgIHZvaWQgc2V0
UHJldmlvdXNUZXh0Qm94KExlZ2FjeUlubGluZVRleHRCb3gqIHApIHsgbV9wcmV2VGV4dEJveCA9
IHA7IH0KIAogICAgIGJvb2wgaGFzVGV4dENvbnRlbnQoKSBjb25zdDsKIApAQCAtOTAsNyArOTAs
NyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgTGVnYWN5SW5saW5lQm94Ojpmb3JjZUxlZnRFeHBhbnNp
b247CiAgICAgdXNpbmcgTGVnYWN5SW5saW5lQm94OjpzZXRGb3JjZUxlZnRFeHBhbnNpb247CiAK
LSAgICBzdGF0aWMgaW5saW5lIGJvb2wgY29tcGFyZUJ5U3RhcnQoY29uc3QgSW5saW5lVGV4dEJv
eCogZmlyc3QsIGNvbnN0IElubGluZVRleHRCb3gqIHNlY29uZCkgeyByZXR1cm4gZmlyc3QtPnN0
YXJ0KCkgPCBzZWNvbmQtPnN0YXJ0KCk7IH0KKyAgICBzdGF0aWMgaW5saW5lIGJvb2wgY29tcGFy
ZUJ5U3RhcnQoY29uc3QgTGVnYWN5SW5saW5lVGV4dEJveCogZmlyc3QsIGNvbnN0IExlZ2FjeUlu
bGluZVRleHRCb3gqIHNlY29uZCkgeyByZXR1cm4gZmlyc3QtPnN0YXJ0KCkgPCBzZWNvbmQtPnN0
YXJ0KCk7IH0KIAogICAgIExheW91dFVuaXQgYmFzZWxpbmVQb3NpdGlvbihGb250QmFzZWxpbmUp
IGNvbnN0IGZpbmFsOwogICAgIExheW91dFVuaXQgbGluZUhlaWdodCgpIGNvbnN0IGZpbmFsOwpA
QCAtMTk5LDggKzE5OSw4IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGJlaGF2ZXNMaWtlVGV4dCgp
IGNvbnN0ID0gZGVsZXRlOwogCi0gICAgSW5saW5lVGV4dEJveCogbV9wcmV2VGV4dEJveCB7IG51
bGxwdHIgfTsgLy8gVGhlIHByZXZpb3VzIGJveCB0aGF0IGFsc28gdXNlcyBvdXIgUmVuZGVyT2Jq
ZWN0Ci0gICAgSW5saW5lVGV4dEJveCogbV9uZXh0VGV4dEJveCB7IG51bGxwdHIgfTsgLy8gVGhl
IG5leHQgYm94IHRoYXQgYWxzbyB1c2VzIG91ciBSZW5kZXJPYmplY3QKKyAgICBMZWdhY3lJbmxp
bmVUZXh0Qm94KiBtX3ByZXZUZXh0Qm94IHsgbnVsbHB0ciB9OyAvLyBUaGUgcHJldmlvdXMgYm94
IHRoYXQgYWxzbyB1c2VzIG91ciBSZW5kZXJPYmplY3QKKyAgICBMZWdhY3lJbmxpbmVUZXh0Qm94
KiBtX25leHRUZXh0Qm94IHsgbnVsbHB0ciB9OyAvLyBUaGUgbmV4dCBib3ggdGhhdCBhbHNvIHVz
ZXMgb3VyIFJlbmRlck9iamVjdAogCiAgICAgdW5zaWduZWQgbV9zdGFydCB7IDAgfTsKICAgICB1
bnNpZ25lZCBzaG9ydCBtX2xlbiB7IDAgfTsKQEAgLTIxNCw0ICsyMTQsNCBAQCBMYXlvdXRSZWN0
IHNuYXBwZWRTZWxlY3Rpb25SZWN0KGNvbnN0IExheW91dFJlY3QmLCBmbG9hdCBsb2dpY2FsUmln
aHQsIGZsb2F0IHNlbAogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLVNQRUNJQUxJWkVfVFlQ
RV9UUkFJVFNfSU5MSU5FX0JPWChJbmxpbmVUZXh0Qm94LCBpc0lubGluZVRleHRCb3goKSkKK1NQ
RUNJQUxJWkVfVFlQRV9UUkFJVFNfSU5MSU5FX0JPWChMZWdhY3lJbmxpbmVUZXh0Qm94LCBpc0lu
bGluZVRleHRCb3goKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MZWdh
Y3lMaW5lTGF5b3V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MZWdhY3lMaW5lTGF5
b3V0LmNwcAppbmRleCA5MGY1NjkwMWU2MWMuLjU4NjUyMmQ1ODViMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xlZ2FjeUxpbmVMYXlvdXQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9MZWdhY3lMaW5lTGF5b3V0LmNwcApAQCAtMzIsOCArMzIsOCBAQAog
I2luY2x1ZGUgIkhUTUxQYXJzZXJJZGlvbXMuaCIKICNpbmNsdWRlICJJbmxpbmVFbGVtZW50Qm94
LmgiCiAjaW5jbHVkZSAiSW5saW5lSXRlcmF0b3IuaCIKLSNpbmNsdWRlICJJbmxpbmVUZXh0Qm94
LmgiCiAjaW5jbHVkZSAiSW5saW5lVGV4dEJveFN0eWxlLmgiCisjaW5jbHVkZSAiTGVnYWN5SW5s
aW5lVGV4dEJveC5oIgogI2luY2x1ZGUgIkxpbmVMYXlvdXRTdGF0ZS5oIgogI2luY2x1ZGUgIkxv
Z2dpbmcuaCIKICNpbmNsdWRlICJSZW5kZXJCbG9ja0Zsb3cuaCIKQEAgLTMyNCw4ICszMjQsOCBA
QCBMZWdhY3lSb290SW5saW5lQm94KiBMZWdhY3lMaW5lTGF5b3V0Ojpjb25zdHJ1Y3RMaW5lKEJp
ZGlSdW5MaXN0PEJpZGlSdW4+JiBiaWRpUgogICAgICAgICBib29sIHZpc3VhbGx5T3JkZXJlZCA9
IHItPnJlbmRlcmVyKCkuc3R5bGUoKS5ydGxPcmRlcmluZygpID09IE9yZGVyOjpWaXN1YWw7CiAg
ICAgICAgIGJveC0+c2V0QmlkaUxldmVsKHItPmxldmVsKCkpOwogCi0gICAgICAgIGlmIChpczxJ
bmxpbmVUZXh0Qm94PigqYm94KSkgewotICAgICAgICAgICAgYXV0byYgdGV4dEJveCA9IGRvd25j
YXN0PElubGluZVRleHRCb3g+KCpib3gpOworICAgICAgICBpZiAoaXM8TGVnYWN5SW5saW5lVGV4
dEJveD4oKmJveCkpIHsKKyAgICAgICAgICAgIGF1dG8mIHRleHRCb3ggPSBkb3duY2FzdDxMZWdh
Y3lJbmxpbmVUZXh0Qm94PigqYm94KTsKICAgICAgICAgICAgIHRleHRCb3guc2V0U3RhcnQoci0+
bV9zdGFydCk7CiAgICAgICAgICAgICB0ZXh0Qm94LnNldExlbihyLT5tX3N0b3AgLSByLT5tX3N0
YXJ0KTsKICAgICAgICAgICAgIHRleHRCb3guc2V0RGlyT3ZlcnJpZGUoci0+ZGlyT3ZlcnJpZGUo
dmlzdWFsbHlPcmRlcmVkKSk7CkBAIC00ODUsNyArNDg1LDcgQEAgc3RhdGljIGlubGluZSB2b2lk
IHNldExvZ2ljYWxXaWR0aEZvclRleHRSdW4oTGVnYWN5Um9vdElubGluZUJveCogbGluZUJveCwg
QmlkaVIKICAgICB9CiAgICAgCiAgICAgTGF5b3V0VW5pdCBoeXBoZW5XaWR0aDsKLSAgICBpZiAo
ZG93bmNhc3Q8SW5saW5lVGV4dEJveD4oKnJ1bi0+Ym94KCkpLmhhc0h5cGhlbigpKQorICAgIGlm
IChkb3duY2FzdDxMZWdhY3lJbmxpbmVUZXh0Qm94PigqcnVuLT5ib3goKSkuaGFzSHlwaGVuKCkp
CiAgICAgICAgIGh5cGhlbldpZHRoID0gbWVhc3VyZUh5cGhlbldpZHRoKHJlbmRlcmVyLCBmb250
LCAmZmFsbGJhY2tGb250cyk7CiAKICAgICBmbG9hdCBtZWFzdXJlZFdpZHRoID0gMDsKQEAgLTUz
OCw3ICs1MzgsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgc2V0TG9naWNhbFdpZHRoRm9yVGV4dFJ1
bihMZWdhY3lSb290SW5saW5lQm94KiBsaW5lQm94LCBCaWRpUgogICAgIHJ1bi0+Ym94KCktPnNl
dExvZ2ljYWxXaWR0aChtZWFzdXJlZFdpZHRoICsgaHlwaGVuV2lkdGgpOwogICAgIGlmICghZmFs
bGJhY2tGb250cy5pc0VtcHR5KCkpIHsKICAgICAgICAgQVNTRVJUKHJ1bi0+Ym94KCktPmJlaGF2
ZXNMaWtlVGV4dCgpKTsKLSAgICAgICAgR2x5cGhPdmVyZmxvd0FuZEZhbGxiYWNrRm9udHNNYXA6
Oml0ZXJhdG9yIGl0ID0gdGV4dEJveERhdGFNYXAuYWRkKGRvd25jYXN0PElubGluZVRleHRCb3g+
KHJ1bi0+Ym94KCkpLCBzdGQ6Om1ha2VfcGFpcihWZWN0b3I8Y29uc3QgRm9udCo+KCksIEdseXBo
T3ZlcmZsb3coKSkpLml0ZXJhdG9yOworICAgICAgICBHbHlwaE92ZXJmbG93QW5kRmFsbGJhY2tG
b250c01hcDo6aXRlcmF0b3IgaXQgPSB0ZXh0Qm94RGF0YU1hcC5hZGQoZG93bmNhc3Q8TGVnYWN5
SW5saW5lVGV4dEJveD4ocnVuLT5ib3goKSksIHN0ZDo6bWFrZV9wYWlyKFZlY3Rvcjxjb25zdCBG
b250Kj4oKSwgR2x5cGhPdmVyZmxvdygpKSkuaXRlcmF0b3I7CiAgICAgICAgIEFTU0VSVChpdC0+
dmFsdWUuZmlyc3QuaXNFbXB0eSgpKTsKICAgICAgICAgaXQtPnZhbHVlLmZpcnN0ID0gY29weVRv
VmVjdG9yKGZhbGxiYWNrRm9udHMpOwogICAgICAgICBydW4tPmJveCgpLT5wYXJlbnQoKS0+Y2xl
YXJEZXNjZW5kYW50c0hhdmVTYW1lTGluZUhlaWdodEFuZEJhc2VsaW5lKCk7CkBAIC01NDYsMTEg
KzU0NiwxMSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgc2V0TG9naWNhbFdpZHRoRm9yVGV4dFJ1bihM
ZWdhY3lSb290SW5saW5lQm94KiBsaW5lQm94LCBCaWRpUgogCiAgICAgLy8gSW5jbHVkZSB0ZXh0
IGRlY29yYXRpb24gdmlzdWFsIG92ZXJmbG93IGFzIHBhcnQgb2YgdGhlIGdseXBoIG92ZXJmbG93
LgogICAgIGlmICghcmVuZGVyZXIuc3R5bGUoKS50ZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCgpLmlz
RW1wdHkoKSkKLSAgICAgICAgZ2x5cGhPdmVyZmxvdy5leHRlbmRUbyh2aXN1YWxPdmVyZmxvd0Zv
ckRlY29yYXRpb25zKHJ1bi0+Ym94KCktPmxpbmVTdHlsZSgpLCBkb3duY2FzdDxJbmxpbmVUZXh0
Qm94PihydW4tPmJveCgpKSkpOworICAgICAgICBnbHlwaE92ZXJmbG93LmV4dGVuZFRvKHZpc3Vh
bE92ZXJmbG93Rm9yRGVjb3JhdGlvbnMocnVuLT5ib3goKS0+bGluZVN0eWxlKCksIGRvd25jYXN0
PExlZ2FjeUlubGluZVRleHRCb3g+KHJ1bi0+Ym94KCkpKSk7CiAKICAgICBpZiAoIWdseXBoT3Zl
cmZsb3cuaXNFbXB0eSgpKSB7CiAgICAgICAgIEFTU0VSVChydW4tPmJveCgpLT5iZWhhdmVzTGlr
ZVRleHQoKSk7Ci0gICAgICAgIEdseXBoT3ZlcmZsb3dBbmRGYWxsYmFja0ZvbnRzTWFwOjppdGVy
YXRvciBpdCA9IHRleHRCb3hEYXRhTWFwLmFkZChkb3duY2FzdDxJbmxpbmVUZXh0Qm94PihydW4t
PmJveCgpKSwgc3RkOjptYWtlX3BhaXIoVmVjdG9yPGNvbnN0IEZvbnQqPigpLCBHbHlwaE92ZXJm
bG93KCkpKS5pdGVyYXRvcjsKKyAgICAgICAgR2x5cGhPdmVyZmxvd0FuZEZhbGxiYWNrRm9udHNN
YXA6Oml0ZXJhdG9yIGl0ID0gdGV4dEJveERhdGFNYXAuYWRkKGRvd25jYXN0PExlZ2FjeUlubGlu
ZVRleHRCb3g+KHJ1bi0+Ym94KCkpLCBzdGQ6Om1ha2VfcGFpcihWZWN0b3I8Y29uc3QgRm9udCo+
KCksIEdseXBoT3ZlcmZsb3coKSkpLml0ZXJhdG9yOwogICAgICAgICBpdC0+dmFsdWUuc2Vjb25k
ID0gZ2x5cGhPdmVyZmxvdzsKICAgICAgICAgcnVuLT5ib3goKS0+Y2xlYXJLbm93blRvSGF2ZU5v
T3ZlcmZsb3coKTsKICAgICB9CkBAIC02MTMsNyArNjEzLDcgQEAgdm9pZCBMZWdhY3lMaW5lTGF5
b3V0Ojpjb21wdXRlRXhwYW5zaW9uRm9ySnVzdGlmaWVkVGV4dChCaWRpUnVuKiBmaXJzdFJ1biwg
QmlkaVIKICAgICAgICAgICAgIAogICAgICAgICAgICAgLy8gT25seSBqdXN0aWZ5IHRleHQgaWYg
d2hpdGVzcGFjZSBpcyBjb2xsYXBzZWQuCiAgICAgICAgICAgICBpZiAocnVuLT5yZW5kZXJlcigp
LnN0eWxlKCkuY29sbGFwc2VXaGl0ZVNwYWNlKCkpIHsKLSAgICAgICAgICAgICAgICBJbmxpbmVU
ZXh0Qm94JiB0ZXh0Qm94ID0gZG93bmNhc3Q8SW5saW5lVGV4dEJveD4oKnJ1bi0+Ym94KCkpOwor
ICAgICAgICAgICAgICAgIExlZ2FjeUlubGluZVRleHRCb3gmIHRleHRCb3ggPSBkb3duY2FzdDxM
ZWdhY3lJbmxpbmVUZXh0Qm94PigqcnVuLT5ib3goKSk7CiAgICAgICAgICAgICAgICAgZmxvYXQg
ZXhwYW5zaW9uID0gKGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCAtIHRvdGFsTG9naWNhbFdpZHRoKSAq
IG9wcG9ydHVuaXRpZXNJblJ1biAvIGV4cGFuc2lvbk9wcG9ydHVuaXR5Q291bnQ7CiAgICAgICAg
ICAgICAgICAgdGV4dEJveC5zZXRFeHBhbnNpb24oZXhwYW5zaW9uKTsKICAgICAgICAgICAgICAg
ICB0b3RhbExvZ2ljYWxXaWR0aCArPSBleHBhbnNpb247CkBAIC03MTcsNyArNzE3LDcgQEAgdm9p
ZCBMZWdhY3lMaW5lTGF5b3V0Ojpjb21wdXRlSW5saW5lRGlyZWN0aW9uUG9zaXRpb25zRm9yTGlu
ZShMZWdhY3lSb290SW5saW5lQm8KICAgICBsaW5lQm94LT5wbGFjZUJveGVzSW5JbmxpbmVEaXJl
Y3Rpb24obGluZUxvZ2ljYWxMZWZ0LCBuZWVkc1dvcmRTcGFjaW5nKTsKIH0KIAotc3RhdGljIGlu
bGluZSBFeHBhbnNpb25CZWhhdmlvciBleHBhbnNpb25CZWhhdmlvckZvcklubGluZVRleHRCb3go
UmVuZGVyQmxvY2tGbG93JiBibG9jaywgSW5saW5lVGV4dEJveCYgdGV4dEJveCwgQmlkaVJ1biog
cHJldmlvdXNSdW4sIEJpZGlSdW4qIG5leHRSdW4sIFRleHRBbGlnbk1vZGUgdGV4dEFsaWduLCBi
b29sIGlzQWZ0ZXJFeHBhbnNpb24pCitzdGF0aWMgaW5saW5lIEV4cGFuc2lvbkJlaGF2aW9yIGV4
cGFuc2lvbkJlaGF2aW9yRm9ySW5saW5lVGV4dEJveChSZW5kZXJCbG9ja0Zsb3cmIGJsb2NrLCBM
ZWdhY3lJbmxpbmVUZXh0Qm94JiB0ZXh0Qm94LCBCaWRpUnVuKiBwcmV2aW91c1J1biwgQmlkaVJ1
biogbmV4dFJ1biwgVGV4dEFsaWduTW9kZSB0ZXh0QWxpZ24sIGJvb2wgaXNBZnRlckV4cGFuc2lv
bikKIHsKICAgICAvLyBUYXRlY2h1eW9rbyBpcyBtb2RlbGVkIGFzIHRoZSBPYmplY3QgUmVwbGFj
ZW1lbnQgQ2hhcmFjdGVyIChVK0ZGRkMpLCB3aGljaCBjYW4gbmV2ZXIgaGF2ZSBleHBhbnNpb24g
b3Bwb3J0dW5pdGllcyBpbnNpZGUgbm9yIGludHJpbnNpY2FsbHkgYWRqYWNlbnQgdG8gaXQuCiAg
ICAgaWYgKHRleHRCb3gucmVuZGVyZXIoKS5zdHlsZSgpLnRleHRDb21iaW5lKCkgPT0gVGV4dENv
bWJpbmU6Okhvcml6b250YWwpCkBAIC03MzIsNyArNzMyLDcgQEAgc3RhdGljIGlubGluZSBFeHBh
bnNpb25CZWhhdmlvciBleHBhbnNpb25CZWhhdmlvckZvcklubGluZVRleHRCb3goUmVuZGVyQmxv
Y2tGbG8KICAgICAgICAgICAgIGF1dG8mIHJ1YnlCYXNlID0gKmRvd25jYXN0PFJlbmRlclJ1YnlS
dW4+KG5leHRSdW4tPnJlbmRlcmVyKCkpLnJ1YnlCYXNlKCk7CiAgICAgICAgICAgICBpZiAocnVi
eUJhc2UuZmlyc3RSb290Qm94KCkgJiYgIXJ1YnlCYXNlLmZpcnN0Um9vdEJveCgpLT5uZXh0Um9v
dEJveCgpKSB7CiAgICAgICAgICAgICAgICAgaWYgKGF1dG8qIGxlYWZDaGlsZCA9IHJ1YnlCYXNl
LmZpcnN0Um9vdEJveCgpLT5maXJzdExlYWZEZXNjZW5kYW50KCkpIHsKLSAgICAgICAgICAgICAg
ICAgICAgaWYgKGlzPElubGluZVRleHRCb3g+KCpsZWFmQ2hpbGQpKSB7CisgICAgICAgICAgICAg
ICAgICAgIGlmIChpczxMZWdhY3lJbmxpbmVUZXh0Qm94PigqbGVhZkNoaWxkKSkgewogICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMgbGVmdEV4cGFuc2lvbk9wcG9ydHVuaXR5
IGRvZXNuJ3QgYWN0dWFsbHkgd29yayBiZWNhdXNlIGl0IGRvZXNuJ3QgcGVyZm9ybSB0aGUgVUJB
CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoRm9udENhc2NhZGU6OmxlZnRFeHBhbnNpb25P
cHBvcnR1bml0eShkb3duY2FzdDxSZW5kZXJUZXh0PihsZWFmQ2hpbGQtPnJlbmRlcmVyKCkpLnN0
cmluZ1ZpZXcoKSwgbGVhZkNoaWxkLT5kaXJlY3Rpb24oKSkpIHsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzZXRSaWdodEV4cGFuc2lvbiA9IHRydWU7CkBAIC03NDcsNyArNzQ3LDcgQEAg
c3RhdGljIGlubGluZSBFeHBhbnNpb25CZWhhdmlvciBleHBhbnNpb25CZWhhdmlvckZvcklubGlu
ZVRleHRCb3goUmVuZGVyQmxvY2tGbG8KICAgICAgICAgICAgIGF1dG8mIHJ1YnlCYXNlID0gKmRv
d25jYXN0PFJlbmRlclJ1YnlSdW4+KHByZXZpb3VzUnVuLT5yZW5kZXJlcigpKS5ydWJ5QmFzZSgp
OwogICAgICAgICAgICAgaWYgKHJ1YnlCYXNlLmZpcnN0Um9vdEJveCgpICYmICFydWJ5QmFzZS5m
aXJzdFJvb3RCb3goKS0+bmV4dFJvb3RCb3goKSkgewogICAgICAgICAgICAgICAgIGlmIChhdXRv
KiBsZWFmQ2hpbGQgPSBydWJ5QmFzZS5maXJzdFJvb3RCb3goKS0+bGFzdExlYWZEZXNjZW5kYW50
KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGlzPElubGluZVRleHRCb3g+KCpsZWFmQ2hp
bGQpKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChpczxMZWdhY3lJbmxpbmVUZXh0Qm94Pigq
bGVhZkNoaWxkKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMgbGVm
dEV4cGFuc2lvbk9wcG9ydHVuaXR5IGRvZXNuJ3QgYWN0dWFsbHkgd29yayBiZWNhdXNlIGl0IGRv
ZXNuJ3QgcGVyZm9ybSB0aGUgVUJBCiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoRm9udENh
c2NhZGU6OnJpZ2h0RXhwYW5zaW9uT3Bwb3J0dW5pdHkoZG93bmNhc3Q8UmVuZGVyVGV4dD4obGVh
ZkNoaWxkLT5yZW5kZXJlcigpKS5zdHJpbmdWaWV3KCksIGxlYWZDaGlsZC0+ZGlyZWN0aW9uKCkp
KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0TGVmdEV4cGFuc2lvbiA9IHRydWU7
CkBAIC03NzYsNyArNzc2LDcgQEAgc3RhdGljIGlubGluZSBFeHBhbnNpb25CZWhhdmlvciBleHBh
bnNpb25CZWhhdmlvckZvcklubGluZVRleHRCb3goUmVuZGVyQmxvY2tGbG8KICAgICByZXR1cm4g
cmVzdWx0OwogfQogCi1zdGF0aWMgaW5saW5lIHZvaWQgYXBwbHlFeHBhbnNpb25CZWhhdmlvcihJ
bmxpbmVUZXh0Qm94JiB0ZXh0Qm94LCBFeHBhbnNpb25CZWhhdmlvciBleHBhbnNpb25CZWhhdmlv
cikKK3N0YXRpYyBpbmxpbmUgdm9pZCBhcHBseUV4cGFuc2lvbkJlaGF2aW9yKExlZ2FjeUlubGlu
ZVRleHRCb3gmIHRleHRCb3gsIEV4cGFuc2lvbkJlaGF2aW9yIGV4cGFuc2lvbkJlaGF2aW9yKQog
ewogICAgIHN3aXRjaCAoZXhwYW5zaW9uQmVoYXZpb3IgJiBMZWZ0RXhwYW5zaW9uTWFzaykgewog
ICAgIGNhc2UgRm9yY2VMZWZ0RXhwYW5zaW9uOgpAQCAtODUzLDcgKzg1Myw3IEBAIEJpZGlSdW4q
IExlZ2FjeUxpbmVMYXlvdXQ6OmNvbXB1dGVJbmxpbmVEaXJlY3Rpb25Qb3NpdGlvbnNGb3JTZWdt
ZW50KExlZ2FjeVJvb3RJCiAgICAgYm9vbCBpc0FmdGVyRXhwYW5zaW9uID0gaXM8UmVuZGVyUnVi
eUJhc2U+KG1fZmxvdykgPyBkb3duY2FzdDxSZW5kZXJSdWJ5QmFzZT4obV9mbG93KS5pc0FmdGVy
RXhwYW5zaW9uKCkgOiB0cnVlOwogICAgIFZlY3Rvcjx1bnNpZ25lZCwgMTY+IGV4cGFuc2lvbk9w
cG9ydHVuaXRpZXM7CiAKLSAgICBIYXNoTWFwPElubGluZVRleHRCb3gqLCBMYXlvdXRVbml0PiBs
b2dpY2FsU3BhY2luZ0ZvcklubGluZVRleHRCb3hlczsKKyAgICBIYXNoTWFwPExlZ2FjeUlubGlu
ZVRleHRCb3gqLCBMYXlvdXRVbml0PiBsb2dpY2FsU3BhY2luZ0ZvcklubGluZVRleHRCb3hlczsK
ICAgICBhdXRvIGNvbGxlY3RTcGFjaW5nTG9naWNhbFdpZHRocyA9IFsmXSAoKSB7CiAgICAgICAg
IGF1dG8gdG90YWxTcGFjaW5nV2lkdGggPSBMYXlvdXRVbml0IHsgfTsKICAgICAgICAgLy8gQ29s
bGVjdCB0aGUgc3BhY2luZyBwb3NpdGlvbnMgKG1hcmdpbiwgYm9yZGVyIHBhZGRpbmcpIGZvciB0
aGUgdGV4dGJveGVzIGJ5IHRyYXZlcnNpbmcgdGhlIGlubGluZSB0cmVlIG9mIHRoZSBjdXJyZW50
IGxpbmUuCkBAIC04NjEsNyArODYxLDcgQEAgQmlkaVJ1biogTGVnYWN5TGluZUxheW91dDo6Y29t
cHV0ZUlubGluZURpcmVjdGlvblBvc2l0aW9uc0ZvclNlZ21lbnQoTGVnYWN5Um9vdEkKICAgICAg
ICAgcXVldWUuYXBwZW5kKGxpbmVCb3gpOwogICAgICAgICAvLyAxLiBWaXNpdCBlYWNoIGlubGlu
ZSBib3ggaW4gYSBwcmVvcmRlciBmYXNoaW9uCiAgICAgICAgIC8vIDIuIEFjY3VtdWxhdGUgdGhl
IHNwYWNpbmcgd2hlbiB3ZSBmaW5kIGFuIExlZ2FjeUlubGluZUZsb3dCb3ggKGlubGluZSBjb250
YWluZXIgZS5nLiBzcGFuKQotICAgICAgICAvLyAzLiBBZGQgdGhlIElubGluZVRleHRCb3hlcyB0
byB0aGUgaGFzaG1hcAorICAgICAgICAvLyAzLiBBZGQgdGhlIExlZ2FjeUlubGluZVRleHRCb3hl
cyB0byB0aGUgaGFzaG1hcAogICAgICAgICB3aGlsZSAoIXF1ZXVlLmlzRW1wdHkoKSkgewogICAg
ICAgICAgICAgd2hpbGUgKHRydWUpIHsKICAgICAgICAgICAgICAgICBhdXRvKiBpbmxpbmVCb3gg
PSBxdWV1ZS5sYXN0KCk7CkBAIC04NzQsOCArODc0LDggQEAgQmlkaVJ1biogTGVnYWN5TGluZUxh
eW91dDo6Y29tcHV0ZUlubGluZURpcmVjdGlvblBvc2l0aW9uc0ZvclNlZ21lbnQoTGVnYWN5Um9v
dEkKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKGlzPElubGluZVRleHRCb3g+KGlu
bGluZUJveCkpCi0gICAgICAgICAgICAgICAgICAgIGxvZ2ljYWxTcGFjaW5nRm9ySW5saW5lVGV4
dEJveGVzLmFkZChkb3duY2FzdDxJbmxpbmVUZXh0Qm94PihpbmxpbmVCb3gpLCB0b3RhbFNwYWNp
bmdXaWR0aCk7CisgICAgICAgICAgICAgICAgaWYgKGlzPExlZ2FjeUlubGluZVRleHRCb3g+KGlu
bGluZUJveCkpCisgICAgICAgICAgICAgICAgICAgIGxvZ2ljYWxTcGFjaW5nRm9ySW5saW5lVGV4
dEJveGVzLmFkZChkb3duY2FzdDxMZWdhY3lJbmxpbmVUZXh0Qm94PihpbmxpbmVCb3gpLCB0b3Rh
bFNwYWNpbmdXaWR0aCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICB3aGlsZSAoIXF1ZXVlLmlzRW1wdHkoKSkgewpAQCAtODk1LDcgKzg5NSw3IEBA
IEJpZGlSdW4qIExlZ2FjeUxpbmVMYXlvdXQ6OmNvbXB1dGVJbmxpbmVEaXJlY3Rpb25Qb3NpdGlv
bnNGb3JTZWdtZW50KExlZ2FjeVJvb3RJCiAgICAgQmlkaVJ1biogcHJldmlvdXNSdW4gPSBudWxs
cHRyOwogICAgIGZvciAoOyBydW47IHJ1biA9IHJ1bi0+bmV4dCgpKSB7CiAgICAgICAgIGF1dG8g
Y29tcHV0ZUV4cGFuc2lvbk9wcG9ydHVuaXRpZXMgPSBbJmV4cGFuc2lvbk9wcG9ydHVuaXRpZXMs
ICZleHBhbnNpb25PcHBvcnR1bml0eUNvdW50LCB0ZXh0QWxpZ24sICZpc0FmdGVyRXhwYW5zaW9u
XSAoUmVuZGVyQmxvY2tGbG93JiBibG9jaywKLSAgICAgICAgICAgIElubGluZVRleHRCb3gmIHRl
eHRCb3gsIEJpZGlSdW4qIHByZXZpb3VzUnVuLCBCaWRpUnVuKiBuZXh0UnVuLCBjb25zdCBTdHJp
bmdWaWV3JiBzdHJpbmdWaWV3LCBUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbikKKyAgICAgICAgICAg
IExlZ2FjeUlubGluZVRleHRCb3gmIHRleHRCb3gsIEJpZGlSdW4qIHByZXZpb3VzUnVuLCBCaWRp
UnVuKiBuZXh0UnVuLCBjb25zdCBTdHJpbmdWaWV3JiBzdHJpbmdWaWV3LCBUZXh0RGlyZWN0aW9u
IGRpcmVjdGlvbikKICAgICAgICAgewogICAgICAgICAgICAgaWYgKHN0cmluZ1ZpZXcuaXNFbXB0
eSgpKSB7CiAgICAgICAgICAgICAgICAgLy8gRW1wdHkgcnVucyBzaG91bGQgc3RpbGwgcHJvZHVj
ZSBhbiBlbnRyeSBpbiBleHBhbnNpb25PcHBvcnR1bml0aWVzIGxpc3Qgc28gdGhhdCB0aGUgbnVt
YmVyIG9mIGl0ZW1zIG1hdGNoZXMgdGhlIG51bWJlciBvZiBydW5zLgpAQCAtOTE2LDcgKzkxNiw3
IEBAIEJpZGlSdW4qIExlZ2FjeUxpbmVMYXlvdXQ6OmNvbXB1dGVJbmxpbmVEaXJlY3Rpb25Qb3Np
dGlvbnNGb3JTZWdtZW50KExlZ2FjeVJvb3RJCiAgICAgICAgIH0KICAgICAgICAgaWYgKGlzPFJl
bmRlclRleHQ+KHJ1bi0+cmVuZGVyZXIoKSkpIHsKICAgICAgICAgICAgIGF1dG8mIHJlbmRlclRl
eHQgPSBkb3duY2FzdDxSZW5kZXJUZXh0PihydW4tPnJlbmRlcmVyKCkpOwotICAgICAgICAgICAg
YXV0byYgdGV4dEJveCA9IGRvd25jYXN0PElubGluZVRleHRCb3g+KCpydW4tPmJveCgpKTsKKyAg
ICAgICAgICAgIGF1dG8mIHRleHRCb3ggPSBkb3duY2FzdDxMZWdhY3lJbmxpbmVUZXh0Qm94Pigq
cnVuLT5ib3goKSk7CiAgICAgICAgICAgICBpZiAoY2FuSGFuZ1B1bmN0dWF0aW9uQXRTdGFydCAm
JiBsaW5lSW5mby5pc0ZpcnN0TGluZSgpICYmIChpc0xUUiB8fCBpc0xhc3RJbkZsb3dSdW4oKnJ1
bikpCiAgICAgICAgICAgICAgICAgJiYgIWlubGluZUFuY2VzdG9ySGFzU3RhcnRCb3JkZXJQYWRk
aW5nT3JNYXJnaW4obV9mbG93LCAqcnVuLT5ib3goKSkpIHsKICAgICAgICAgICAgICAgICBmbG9h
dCBoYW5nU3RhcnRXaWR0aCA9IHJlbmRlclRleHQuaGFuZ2FibGVQdW5jdHVhdGlvblN0YXJ0V2lk
dGgocnVuLT5tX3N0YXJ0KTsKQEAgLTk1NSwxMCArOTU1LDEwIEBAIEJpZGlSdW4qIExlZ2FjeUxp
bmVMYXlvdXQ6OmNvbXB1dGVJbmxpbmVEaXJlY3Rpb25Qb3NpdGlvbnNGb3JTZWdtZW50KExlZ2Fj
eVJvb3RJCiAgICAgICAgICAgICAgICAgaWYgKHJ1YnlCYXNlLT5maXJzdFJvb3RCb3goKSAmJiAh
cnVieUJhc2UtPmZpcnN0Um9vdEJveCgpLT5uZXh0Um9vdEJveCgpICYmIHJ1bi0+cmVuZGVyZXIo
KS5zdHlsZSgpLmNvbGxhcHNlV2hpdGVTcGFjZSgpKSB7CiAgICAgICAgICAgICAgICAgICAgIHJ1
YnlCYXNlLT5zZXRJc0FmdGVyRXhwYW5zaW9uKGlzQWZ0ZXJFeHBhbnNpb24pOwogICAgICAgICAg
ICAgICAgICAgICBmb3IgKGF1dG8qIGxlYWZDaGlsZCA9IHJ1YnlCYXNlLT5maXJzdFJvb3RCb3go
KS0+Zmlyc3RMZWFmRGVzY2VuZGFudCgpOyBsZWFmQ2hpbGQ7IGxlYWZDaGlsZCA9IGxlYWZDaGls
ZC0+bmV4dExlYWZPbkxpbmUoKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpczxJ
bmxpbmVUZXh0Qm94PigqbGVhZkNoaWxkKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICgh
aXM8TGVnYWN5SW5saW5lVGV4dEJveD4oKmxlYWZDaGlsZCkpCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgICAgICBlbmNvdW50ZXJlZEp1
c3RpZmllZFJ1YnkgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICAgICAgY29tcHV0ZUV4cGFu
c2lvbk9wcG9ydHVuaXRpZXMoKnJ1YnlCYXNlLCBkb3duY2FzdDxJbmxpbmVUZXh0Qm94PigqbGVh
ZkNoaWxkKSwgbnVsbHB0ciwgbnVsbHB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbXB1
dGVFeHBhbnNpb25PcHBvcnR1bml0aWVzKCpydWJ5QmFzZSwgZG93bmNhc3Q8TGVnYWN5SW5saW5l
VGV4dEJveD4oKmxlYWZDaGlsZCksIG51bGxwdHIsIG51bGxwdHIsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZG93bmNhc3Q8UmVuZGVyVGV4dD4obGVhZkNoaWxkLT5yZW5kZXJlcigpKS5z
dHJpbmdWaWV3KCksIGxlYWZDaGlsZC0+ZGlyZWN0aW9uKCkpOwogICAgICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICAgfQpAQCAtMTAxNyw3ICsxMDE3LDcgQEAgdm9pZCBMZWdhY3lM
aW5lTGF5b3V0OjpyZW1vdmVJbmxpbmVCb3goQmlkaVJ1biYgcnVuLCBjb25zdCBMZWdhY3lSb290
SW5saW5lQm94JgogCiAgICAgYXV0byYgcmVuZGVyZXIgPSBydW4ucmVuZGVyZXIoKTsKICAgICBp
ZiAoaXM8UmVuZGVyVGV4dD4ocmVuZGVyZXIpKQotICAgICAgICBkb3duY2FzdDxSZW5kZXJUZXh0
PihyZW5kZXJlcikucmVtb3ZlVGV4dEJveChkb3duY2FzdDxJbmxpbmVUZXh0Qm94PigqaW5saW5l
Qm94KSk7CisgICAgICAgIGRvd25jYXN0PFJlbmRlclRleHQ+KHJlbmRlcmVyKS5yZW1vdmVUZXh0
Qm94KGRvd25jYXN0PExlZ2FjeUlubGluZVRleHRCb3g+KCppbmxpbmVCb3gpKTsKICAgICBkZWxl
dGUgaW5saW5lQm94OwogICAgIHJ1bi5zZXRCb3gobnVsbHB0cik7CiAgICAgLy8gcmVtb3ZlRnJv
bVBhcmVudCgpIHVubmVjZXNzYXJpbHkgZGlydGllcyB0aGUgYW5jZXN0b3Igc3VidHJlZS4KQEAg
LTEwNTAsNyArMTA1MCw3IEBAIHZvaWQgTGVnYWN5TGluZUxheW91dDo6Y29tcHV0ZUJsb2NrRGly
ZWN0aW9uUG9zaXRpb25zRm9yTGluZShMZWdhY3lSb290SW5saW5lQm94CiAgICAgICAgIC8vIHRv
IHVwZGF0ZSB0aGUgc3RhdGljIG5vcm1hbCBmbG93IHgveSBvZiBwb3NpdGlvbmVkIGVsZW1lbnRz
LgogICAgICAgICBib29sIGlubGluZUJveElzUmVkdW5kYW50ID0gZmFsc2U7CiAgICAgICAgIGlm
IChpczxSZW5kZXJUZXh0PihyZW5kZXJlcikpIHsKLSAgICAgICAgICAgIGF1dG8mIGlubGluZVRl
eHRCb3ggPSBkb3duY2FzdDxJbmxpbmVUZXh0Qm94PigqcnVuLT5ib3goKSk7CisgICAgICAgICAg
ICBhdXRvJiBpbmxpbmVUZXh0Qm94ID0gZG93bmNhc3Q8TGVnYWN5SW5saW5lVGV4dEJveD4oKnJ1
bi0+Ym94KCkpOwogICAgICAgICAgICAgZG93bmNhc3Q8UmVuZGVyVGV4dD4ocmVuZGVyZXIpLnBv
c2l0aW9uTGluZUJveChpbmxpbmVUZXh0Qm94KTsKICAgICAgICAgICAgIGlubGluZUJveElzUmVk
dW5kYW50ID0gIWlubGluZVRleHRCb3guaGFzVGV4dENvbnRlbnQoKTsKICAgICAgICAgfSBlbHNl
IGlmIChpczxSZW5kZXJCb3g+KHJlbmRlcmVyKSkgewpAQCAtMTI2Myw3ICsxMjYzLDcgQEAgTGVn
YWN5Um9vdElubGluZUJveCogTGVnYWN5TGluZUxheW91dDo6Y3JlYXRlTGluZUJveGVzRnJvbUJp
ZGlSdW5zKHVuc2lnbmVkIGJpZGkKICAgICAKICAgICAvLyBTVkcgdGV4dCBsYXlvdXQgY29kZSBj
b21wdXRlcyB2ZXJ0aWNhbCAmIGhvcml6b250YWwgcG9zaXRpb25zIG9uIGl0cyBvd24uCiAgICAg
Ly8gTm90ZSB0aGF0IHdlIHN0aWxsIG5lZWQgdG8gZXhlY3V0ZSBjb21wdXRlVmVydGljYWxQb3Np
dGlvbnNGb3JMaW5lKCkgYXMKLSAgICAvLyBpdCBjYWxscyBJbmxpbmVUZXh0Qm94Ojpwb3NpdGlv
bkxpbmVCb3goKSwgd2hpY2ggdHJhY2tzIHdoZXRoZXIgdGhlIGJveAorICAgIC8vIGl0IGNhbGxz
IExlZ2FjeUlubGluZVRleHRCb3g6OnBvc2l0aW9uTGluZUJveCgpLCB3aGljaCB0cmFja3Mgd2hl
dGhlciB0aGUgYm94CiAgICAgLy8gY29udGFpbnMgcmV2ZXJzZWQgdGV4dCBvciBub3QuIElmIHdl
IHdvdWxkbid0IGRvIHRoYXQgZWRpdGluZyBhbmQgdGh1cwogICAgIC8vIHRleHQgc2VsZWN0aW9u
IGluIFJUTCBib3hlcyB3b3VsZCBub3Qgd29yayBhcyBleHBlY3RlZC4KICAgICBpZiAoaXNTVkdS
b290SW5saW5lQm94KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVn
YWN5Um9vdElubGluZUJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVnYWN5Um9v
dElubGluZUJveC5jcHAKaW5kZXggZTlkY2FkZTY4ZWNhLi43MjE1ZTU2MjUzY2MgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MZWdhY3lSb290SW5saW5lQm94LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVnYWN5Um9vdElubGluZUJveC5jcHAKQEAgLTI4
LDcgKzI4LDcgQEAKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4
dC5oIgogI2luY2x1ZGUgIkhpdFRlc3RSZXN1bHQuaCIKLSNpbmNsdWRlICJJbmxpbmVUZXh0Qm94
LmgiCisjaW5jbHVkZSAiTGVnYWN5SW5saW5lVGV4dEJveC5oIgogI2luY2x1ZGUgIkxvZ2ljYWxT
ZWxlY3Rpb25PZmZzZXRDYWNoZXMuaCIKICNpbmNsdWRlICJQYWludEluZm8uaCIKICNpbmNsdWRl
ICJSZW5kZXJGcmFnbWVudGVkRmxvdy5oIgpAQCAtOTksNyArOTksNyBAQCB2b2lkIExlZ2FjeVJv
b3RJbmxpbmVCb3g6OmNsZWFyVHJ1bmNhdGlvbigpCiBib29sIExlZ2FjeVJvb3RJbmxpbmVCb3g6
OmlzSHlwaGVuYXRlZCgpIGNvbnN0CiB7CiAgICAgZm9yIChhdXRvKiBib3ggPSBmaXJzdExlYWZE
ZXNjZW5kYW50KCk7IGJveDsgYm94ID0gYm94LT5uZXh0TGVhZk9uTGluZSgpKSB7Ci0gICAgICAg
IGlmIChpczxJbmxpbmVUZXh0Qm94PigqYm94KSAmJiBkb3duY2FzdDxJbmxpbmVUZXh0Qm94Pigq
Ym94KS5oYXNIeXBoZW4oKSkKKyAgICAgICAgaWYgKGlzPExlZ2FjeUlubGluZVRleHRCb3g+KCpi
b3gpICYmIGRvd25jYXN0PExlZ2FjeUlubGluZVRleHRCb3g+KCpib3gpLmhhc0h5cGhlbigpKQog
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIHJldHVybiBmYWxzZTsKQEAgLTgw
Myw4ICs4MDMsOCBAQCB2b2lkIExlZ2FjeVJvb3RJbmxpbmVCb3g6OmFzY2VudEFuZERlc2NlbnRG
b3JCb3goTGVnYWN5SW5saW5lQm94JiBib3gsIEdseXBoT3ZlcgogCiAgICAgVmVjdG9yPGNvbnN0
IEZvbnQqPiogdXNlZEZvbnRzID0gbnVsbHB0cjsKICAgICBHbHlwaE92ZXJmbG93KiBnbHlwaE92
ZXJmbG93ID0gbnVsbHB0cjsKLSAgICBpZiAoaXM8SW5saW5lVGV4dEJveD4oYm94KSkgewotICAg
ICAgICBHbHlwaE92ZXJmbG93QW5kRmFsbGJhY2tGb250c01hcDo6aXRlcmF0b3IgaXQgPSB0ZXh0
Qm94RGF0YU1hcC5maW5kKCZkb3duY2FzdDxJbmxpbmVUZXh0Qm94Pihib3gpKTsKKyAgICBpZiAo
aXM8TGVnYWN5SW5saW5lVGV4dEJveD4oYm94KSkgeworICAgICAgICBHbHlwaE92ZXJmbG93QW5k
RmFsbGJhY2tGb250c01hcDo6aXRlcmF0b3IgaXQgPSB0ZXh0Qm94RGF0YU1hcC5maW5kKCZkb3du
Y2FzdDxMZWdhY3lJbmxpbmVUZXh0Qm94Pihib3gpKTsKICAgICAgICAgdXNlZEZvbnRzID0gaXQg
PT0gdGV4dEJveERhdGFNYXAuZW5kKCkgPyBudWxscHRyIDogJml0LT52YWx1ZS5maXJzdDsKICAg
ICAgICAgZ2x5cGhPdmVyZmxvdyA9IGl0ID09IHRleHRCb3hEYXRhTWFwLmVuZCgpID8gbnVsbHB0
ciA6ICZpdC0+dmFsdWUuc2Vjb25kOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQmxvY2suY3BwCmluZGV4IDY2NTNlZWIzYTM0Ny4uZjUzOGUwZjVjZjA4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKQEAgLTQxLDggKzQxLDggQEAKICNpbmNs
dWRlICJJbWFnZUJ1ZmZlci5oIgogI2luY2x1ZGUgIklubGluZUVsZW1lbnRCb3guaCIKICNpbmNs
dWRlICJJbmxpbmVJdGVyYXRvci5oIgotI2luY2x1ZGUgIklubGluZVRleHRCb3guaCIKICNpbmNs
dWRlICJMYXlvdXRSZXBhaW50ZXIuaCIKKyNpbmNsdWRlICJMZWdhY3lJbmxpbmVUZXh0Qm94Lmgi
CiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIkxvZ2ljYWxTZWxlY3Rpb25PZmZzZXRD
YWNoZXMuaCIKICNpbmNsdWRlICJPdmVyZmxvd0V2ZW50LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwCmluZGV4IDY4ZGIwNjJlMDI0NC4uZWY5ODFhYTQ1
MDY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcApA
QCAtMzQsMTEgKzM0LDExIEBACiAjaW5jbHVkZSAiSFRNTFRleHRBcmVhRWxlbWVudC5oIgogI2lu
Y2x1ZGUgIkhpdFRlc3RMb2NhdGlvbi5oIgogI2luY2x1ZGUgIklubGluZUl0ZXJhdG9yLmgiCi0j
aW5jbHVkZSAiSW5saW5lVGV4dEJveC5oIgogI2luY2x1ZGUgIkxheW91dEludGVncmF0aW9uTGlu
ZUl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiTGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0LmgiCiAj
aW5jbHVkZSAiTGF5b3V0SW50ZWdyYXRpb25SdW5JdGVyYXRvci5oIgogI2luY2x1ZGUgIkxheW91
dFJlcGFpbnRlci5oIgorI2luY2x1ZGUgIkxlZ2FjeUlubGluZVRleHRCb3guaCIKICNpbmNsdWRl
ICJMZWdhY3lMaW5lTGF5b3V0LmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlJl
bmRlckNvbWJpbmVUZXh0LmgiCkBAIC0zMjMyLDcgKzMyMzIsNyBAQCBHYXBSZWN0cyBSZW5kZXJC
bG9ja0Zsb3c6OmlubGluZVNlbGVjdGlvbkdhcHMoUmVuZGVyQmxvY2smIHJvb3RCbG9jaywgY29u
c3QgTGF5bwogCiAgICAgYXV0byBoYXNTZWxlY3RlZENoaWxkcmVuID0gWyZdKGNvbnN0IExlZ2Fj
eVJvb3RJbmxpbmVCb3gmIHJvb3QpIHsKICAgICAgICAgZm9yIChhdXRvKiBib3ggPSByb290LmZp
cnN0TGVhZkRlc2NlbmRhbnQoKTsgYm94OyBib3ggPSBib3gtPm5leHRMZWFmT25MaW5lKCkpIHsK
LSAgICAgICAgICAgIGlmICghaXM8SW5saW5lVGV4dEJveD4oKmJveCkpIHsKKyAgICAgICAgICAg
IGlmICghaXM8TGVnYWN5SW5saW5lVGV4dEJveD4oKmJveCkpIHsKICAgICAgICAgICAgICAgICBp
ZiAoYm94LT5zZWxlY3Rpb25TdGF0ZSgpICE9IEhpZ2hsaWdodFN0YXRlOjpOb25lKQogICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgICAgICBjb250aW51ZTsKQEAg
LTMyNDEsNyArMzI0MSw3IEBAIEdhcFJlY3RzIFJlbmRlckJsb2NrRmxvdzo6aW5saW5lU2VsZWN0
aW9uR2FwcyhSZW5kZXJCbG9jayYgcm9vdEJsb2NrLCBjb25zdCBMYXlvCiAgICAgICAgICAgICBh
dXRvIHN0YXJ0ID0gdmlldygpLnNlbGVjdGlvbigpLnN0YXJ0T2Zmc2V0KCk7CiAgICAgICAgICAg
ICBhdXRvIGVuZCA9IHZpZXcoKS5zZWxlY3Rpb24oKS5lbmRPZmZzZXQoKTsKIAotICAgICAgICAg
ICAgYXV0byYgdGV4dEJveCA9IGRvd25jYXN0PElubGluZVRleHRCb3g+KCpib3gpOworICAgICAg
ICAgICAgYXV0byYgdGV4dEJveCA9IGRvd25jYXN0PExlZ2FjeUlubGluZVRleHRCb3g+KCpib3gp
OwogICAgICAgICAgICAgc3dpdGNoICh0ZXh0Qm94LnJlbmRlcmVyKCkuc2VsZWN0aW9uU3RhdGUo
KSkgewogICAgICAgICAgICAgY2FzZSBSZW5kZXJPYmplY3Q6OkhpZ2hsaWdodFN0YXRlOjpOb25l
OgogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKaW5kZXggYmFkYmM3NmJiMmY5Li5jOGFkYWYy
YmE4MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2Rl
bE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVs
T2JqZWN0LmNwcApAQCAtNzA0LDcgKzcwNCw3IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6
OnBhaW50TWFza0ZvclRleHRGaWxsQm94KEltYWdlQnVmZmVyKiBtYXNrSW1hZ2UsIGNvbnN0CiAg
ICAgbWFza0ltYWdlQ29udGV4dC50cmFuc2xhdGUoLW1hc2tSZWN0LmxvY2F0aW9uKCkpOwogCiAg
ICAgLy8gTm93IGFkZCB0aGUgdGV4dCB0byB0aGUgY2xpcC4gV2UgZG8gdGhpcyBieSBwYWludGlu
ZyB1c2luZyBhIHNwZWNpYWwgcGFpbnQgcGhhc2UgdGhhdCBzaWduYWxzIHRvCi0gICAgLy8gSW5s
aW5lVGV4dEJveGVzIHRoYXQgdGhleSBzaG91bGQganVzdCBhZGQgdGhlaXIgY29udGVudHMgdG8g
dGhlIGNsaXAuCisgICAgLy8gTGVnYWN5SW5saW5lVGV4dEJveGVzIHRoYXQgdGhleSBzaG91bGQg
anVzdCBhZGQgdGhlaXIgY29udGVudHMgdG8gdGhlIGNsaXAuCiAgICAgUGFpbnRJbmZvIGluZm8o
bWFza0ltYWdlQ29udGV4dCwgTGF5b3V0UmVjdCB7IG1hc2tSZWN0IH0sIFBhaW50UGhhc2U6OlRl
eHRDbGlwLCBQYWludEJlaGF2aW9yOjpGb3JjZUJsYWNrVGV4dCk7CiAgICAgaWYgKGJveCkgewog
ICAgICAgICBjb25zdCBMZWdhY3lSb290SW5saW5lQm94JiByb290Qm94ID0gYm94LT5yb290KCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwCmluZGV4IDlmODRkODJl
NTBhNy4uYThjNTAyNWNkMmY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVySW5saW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5s
aW5lLmNwcApAQCAtMjksOCArMjksOCBAQAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgog
I2luY2x1ZGUgIkhpdFRlc3RSZXN1bHQuaCIKICNpbmNsdWRlICJJbmxpbmVFbGVtZW50Qm94Lmgi
Ci0jaW5jbHVkZSAiSW5saW5lVGV4dEJveC5oIgogI2luY2x1ZGUgIkxheW91dEludGVncmF0aW9u
TGluZUxheW91dC5oIgorI2luY2x1ZGUgIkxlZ2FjeUlubGluZVRleHRCb3guaCIKICNpbmNsdWRl
ICJSZW5kZXJCbG9jay5oIgogI2luY2x1ZGUgIlJlbmRlckNoaWxkSXRlcmF0b3IuaCIKICNpbmNs
dWRlICJSZW5kZXJGcmFnbWVudGVkRmxvdy5oIgpAQCAtMzE4LDcgKzMxOCw3IEBAIHZvaWQgUmVu
ZGVySW5saW5lOjpnZW5lcmF0ZUN1bGxlZExpbmVCb3hSZWN0cyhHZW5lcmF0b3JDb250ZXh0JiBj
b250ZXh0LCBjb25zdCBSCiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSBpZiAoaXM8UmVu
ZGVyVGV4dD4oY3VycmVudCkpIHsKICAgICAgICAgICAgIGF1dG8mIGN1cnJUZXh0ID0gZG93bmNh
c3Q8UmVuZGVyVGV4dD4oY3VycmVudCk7Ci0gICAgICAgICAgICBmb3IgKElubGluZVRleHRCb3gq
IGNoaWxkVGV4dCA9IGN1cnJUZXh0LmZpcnN0VGV4dEJveCgpOyBjaGlsZFRleHQ7IGNoaWxkVGV4
dCA9IGNoaWxkVGV4dC0+bmV4dFRleHRCb3goKSkgeworICAgICAgICAgICAgZm9yIChhdXRvKiBj
aGlsZFRleHQgPSBjdXJyVGV4dC5maXJzdFRleHRCb3goKTsgY2hpbGRUZXh0OyBjaGlsZFRleHQg
PSBjaGlsZFRleHQtPm5leHRUZXh0Qm94KCkpIHsKICAgICAgICAgICAgICAgICBjb25zdCBMZWdh
Y3lSb290SW5saW5lQm94JiByb290Qm94ID0gY2hpbGRUZXh0LT5yb290KCk7CiAgICAgICAgICAg
ICAgICAgY29uc3QgUmVuZGVyU3R5bGUmIGNvbnRhaW5lclN0eWxlID0gcm9vdEJveC5pc0ZpcnN0
TGluZSgpID8gY29udGFpbmVyLT5maXJzdExpbmVTdHlsZSgpIDogY29udGFpbmVyLT5zdHlsZSgp
OwogICAgICAgICAgICAgICAgIGludCBsb2dpY2FsVG9wID0gcm9vdEJveC5sb2dpY2FsVG9wKCkg
KyAocm9vdEJveC5saW5lU3R5bGUoKS5mb250Q2FzY2FkZSgpLmZvbnRNZXRyaWNzKCkuYXNjZW50
KCkgLSBjb250YWluZXJTdHlsZS5mb250Q2FzY2FkZSgpLmZvbnRNZXRyaWNzKCkuYXNjZW50KCkp
OwpAQCAtNzYzLDcgKzc2Myw3IEBAIExheW91dFJlY3QgUmVuZGVySW5saW5lOjpjdWxsZWRJbmxp
bmVWaXN1YWxPdmVyZmxvd0JvdW5kaW5nQm94KCkgY29uc3QKICAgICAgICAgICAgICAgICByZXN1
bHQudW5pdGVJZk5vblplcm8ocmVuZGVySW5saW5lLmxpbmVzVmlzdWFsT3ZlcmZsb3dCb3VuZGlu
Z0JveCgpKTsKICAgICAgICAgfSBlbHNlIGlmIChpczxSZW5kZXJUZXh0PihjdXJyZW50KSkgewog
ICAgICAgICAgICAgLy8gRklYTUU7IE92ZXJmbG93IGZyb20gdGV4dCBib3hlcyBpcyBsb3N0LiBX
ZSB3aWxsIG5lZWQgdG8gY2FjaGUgdGhpcyBpbmZvcm1hdGlvbiBpbgotICAgICAgICAgICAgLy8g
SW5saW5lVGV4dEJveGVzLgorICAgICAgICAgICAgLy8gTGVnYWN5SW5saW5lVGV4dEJveGVzLgog
ICAgICAgICAgICAgYXV0byYgcmVuZGVyVGV4dCA9IGRvd25jYXN0PFJlbmRlclRleHQ+KGN1cnJl
bnQpOwogICAgICAgICAgICAgcmVzdWx0LnVuaXRlSWZOb25aZXJvKHJlbmRlclRleHQubGluZXNW
aXN1YWxPdmVyZmxvd0JvdW5kaW5nQm94KCkpOwogICAgICAgICB9CkBAIC0xMTE5LDcgKzExMTks
NyBAQCB2b2lkIFJlbmRlcklubGluZTo6ZGlydHlMaW5lQm94ZXMoYm9vbCBmdWxsTGF5b3V0KQog
ICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRMaW5lLT5yb290KCkubWFya0RpcnR5KCk7CiAg
ICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpczxSZW5kZXJUZXh0PihjdXJyZW50KSkgewogICAg
ICAgICAgICAgICAgICAgICBhdXRvJiByZW5kZXJUZXh0ID0gZG93bmNhc3Q8UmVuZGVyVGV4dD4o
Y3VycmVudCk7Ci0gICAgICAgICAgICAgICAgICAgIGZvciAoSW5saW5lVGV4dEJveCogY2hpbGRU
ZXh0ID0gcmVuZGVyVGV4dC5maXJzdFRleHRCb3goKTsgY2hpbGRUZXh0OyBjaGlsZFRleHQgPSBj
aGlsZFRleHQtPm5leHRUZXh0Qm94KCkpCisgICAgICAgICAgICAgICAgICAgIGZvciAoYXV0byog
Y2hpbGRUZXh0ID0gcmVuZGVyVGV4dC5maXJzdFRleHRCb3goKTsgY2hpbGRUZXh0OyBjaGlsZFRl
eHQgPSBjaGlsZFRleHQtPm5leHRUZXh0Qm94KCkpCiAgICAgICAgICAgICAgICAgICAgICAgICBj
aGlsZFRleHQtPnJvb3QoKS5tYXJrRGlydHkoKTsKICAgICAgICAgICAgICAgICB9IGVsc2UgaWYg
KGlzPFJlbmRlckxpbmVCcmVhaz4oY3VycmVudCkpIHsKICAgICAgICAgICAgICAgICAgICAgYXV0
byYgcmVuZGVyQlIgPSBkb3duY2FzdDxSZW5kZXJMaW5lQnJlYWs+KGN1cnJlbnQpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpbmVCb3hMaXN0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaW5lQm94TGlzdC5jcHAKaW5kZXggNGUyZWYx
NTc5YjNhLi42YjNiN2NiZTQzN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMaW5lQm94TGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxpbmVCb3hMaXN0LmNwcApAQCAtMzEsNyArMzEsNyBAQAogCiAjaW5jbHVkZSAiSGl0VGVz
dFJlc3VsdC5oIgogI2luY2x1ZGUgIklubGluZUVsZW1lbnRCb3guaCIKLSNpbmNsdWRlICJJbmxp
bmVUZXh0Qm94LmgiCisjaW5jbHVkZSAiTGVnYWN5SW5saW5lVGV4dEJveC5oIgogI2luY2x1ZGUg
IkxlZ2FjeVJvb3RJbmxpbmVCb3guaCIKICNpbmNsdWRlICJQYWludEluZm8uaCIKICNpbmNsdWRl
ICJSZW5kZXJCbG9ja0Zsb3cuaCIKQEAgLTMzOSw3ICszMzksNyBAQCB2b2lkIFJlbmRlckxpbmVC
b3hMaXN0OjpkaXJ0eUxpbmVzRnJvbUNoYW5nZWRDaGlsZChSZW5kZXJCb3hNb2RlbE9iamVjdCYg
Y29udGFpbgogICAgICAgICAgICAgaWYgKGF1dG8gd3JhcHBlciA9IGRvd25jYXN0PFJlbmRlckxp
bmVCcmVhaz4oKmN1cnJlbnQpLmlubGluZUJveFdyYXBwZXIoKSkKICAgICAgICAgICAgICAgICBi
b3ggPSAmd3JhcHBlci0+cm9vdCgpOwogICAgICAgICB9IGVsc2UgaWYgKGlzPFJlbmRlclRleHQ+
KCpjdXJyZW50KSkgewotICAgICAgICAgICAgaWYgKElubGluZVRleHRCb3gqIHRleHRCb3ggPSBk
b3duY2FzdDxSZW5kZXJUZXh0PigqY3VycmVudCkubGFzdFRleHRCb3goKSkKKyAgICAgICAgICAg
IGlmIChMZWdhY3lJbmxpbmVUZXh0Qm94KiB0ZXh0Qm94ID0gZG93bmNhc3Q8UmVuZGVyVGV4dD4o
KmN1cnJlbnQpLmxhc3RUZXh0Qm94KCkpCiAgICAgICAgICAgICAgICAgYm94ID0gJnRleHRCb3gt
PnJvb3QoKTsKICAgICAgICAgfSBlbHNlIGlmIChpczxSZW5kZXJJbmxpbmU+KCpjdXJyZW50KSkg
ewogICAgICAgICAgICAgTGVnYWN5SW5saW5lQm94KiBsYXN0U2libGluZ0JveCA9IGRvd25jYXN0
PFJlbmRlcklubGluZT4oKmN1cnJlbnQpLmxhc3RMaW5lQm94SW5jbHVkaW5nQ3VsbGluZygpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwCmluZGV4IGNkZTQ1ZDJlYzIxNC4u
MTA3YWNlNTE4MTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwCkBA
IC0zNyw3ICszNyw2IEBACiAjaW5jbHVkZSAiSFRNTFBhcnNlcklkaW9tcy5oIgogI2luY2x1ZGUg
Ikh5cGhlbmF0aW9uLmgiCiAjaW5jbHVkZSAiSW5saW5lUnVuQW5kT2Zmc2V0LmgiCi0jaW5jbHVk
ZSAiSW5saW5lVGV4dEJveC5oIgogI2luY2x1ZGUgIkxheW91dEludGVncmF0aW9uTGluZUl0ZXJh
dG9yLmgiCiAjaW5jbHVkZSAiTGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0LmgiCiAjaW5jbHVk
ZSAiTGF5b3V0SW50ZWdyYXRpb25SdW5JdGVyYXRvci5oIgpAQCAtNDgwLDcgKzQ3OSw3IEBAIHN0
YXRpYyBGbG9hdFJlY3QgbG9jYWxRdWFkRm9yVGV4dFJ1bihjb25zdCBMYXlvdXRJbnRlZ3JhdGlv
bjo6UGF0aFRleHRSdW4mIHJ1biwKIFZlY3RvcjxGbG9hdFF1YWQ+IFJlbmRlclRleHQ6OmFic29s
dXRlUXVhZHNGb3JSYW5nZSh1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgZW5kLCBib29sIHVzZVNl
bGVjdGlvbkhlaWdodCwgYm9vbCBpZ25vcmVFbXB0eVRleHRTZWxlY3Rpb25zLCBib29sKiB3YXNG
aXhlZCkgY29uc3QKIHsKICAgICAvLyBXb3JrIGFyb3VuZCBzaWduZWQvdW5zaWduZWQgaXNzdWVz
LiBUaGlzIGZ1bmN0aW9uIHRha2VzIHVuc2lnbmVkcywgYW5kIGlzIG9mdGVuIHBhc3NlZCBVSU5U
X01BWAotICAgIC8vIHRvIG1lYW4gImFsbCB0aGUgd2F5IHRvIHRoZSBlbmQiLiBJbmxpbmVUZXh0
Qm94IGNvb3JkaW5hdGVzIGFyZSB1bnNpZ25lZHMsIHNvIGNoYW5naW5nIHRoaXMKKyAgICAvLyB0
byBtZWFuICJhbGwgdGhlIHdheSB0byB0aGUgZW5kIi4gTGVnYWN5SW5saW5lVGV4dEJveCBjb29y
ZGluYXRlcyBhcmUgdW5zaWduZWRzLCBzbyBjaGFuZ2luZyB0aGlzCiAgICAgLy8gZnVuY3Rpb24g
dG8gdGFrZSBpbnRzIGNhdXNlcyB2YXJpb3VzIGludGVybmFsIG1pc21hdGNoZXMuIEJ1dCBzZWxl
Y3Rpb25SZWN0IHRha2VzIGludHMsIGFuZAogICAgIC8vIHBhc3NpbmcgVUlOVF9NQVggdG8gaXQg
Y2F1c2VzIHRyb3VibGUuIElkZWFsbHkgd2UnZCBjaGFuZ2Ugc2VsZWN0aW9uUmVjdCB0byB0YWtl
IHVuc2lnbmVkcywgYnV0CiAgICAgLy8gdGhhdCB3b3VsZCBjYXVzZSBtYW55IHJpcHBsZSBlZmZl
Y3RzLCBzbyBmb3Igbm93IHdlJ2xsIGp1c3QgY2xhbXAgb3VyIHVuc2lnbmVkIHBhcmFtZXRlcnMg
dG8gSU5UX01BWC4KQEAgLTE0OTIsMTIgKzE0OTEsMTIgQEAgdm9pZCBSZW5kZXJUZXh0OjpkZWxl
dGVMaW5lQm94ZXMoKQogICAgIG1fbGluZUJveGVzLmRlbGV0ZUFsbCgpOwogfQogCi1zdGQ6OnVu
aXF1ZV9wdHI8SW5saW5lVGV4dEJveD4gUmVuZGVyVGV4dDo6Y3JlYXRlVGV4dEJveCgpCitzdGQ6
OnVuaXF1ZV9wdHI8TGVnYWN5SW5saW5lVGV4dEJveD4gUmVuZGVyVGV4dDo6Y3JlYXRlVGV4dEJv
eCgpCiB7Ci0gICAgcmV0dXJuIG1ha2VVbmlxdWU8SW5saW5lVGV4dEJveD4oKnRoaXMpOworICAg
IHJldHVybiBtYWtlVW5pcXVlPExlZ2FjeUlubGluZVRleHRCb3g+KCp0aGlzKTsKIH0KIAotdm9p
ZCBSZW5kZXJUZXh0Ojpwb3NpdGlvbkxpbmVCb3goSW5saW5lVGV4dEJveCYgdGV4dEJveCkKK3Zv
aWQgUmVuZGVyVGV4dDo6cG9zaXRpb25MaW5lQm94KExlZ2FjeUlubGluZVRleHRCb3gmIHRleHRC
b3gpCiB7CiAgICAgaWYgKCF0ZXh0Qm94Lmhhc1RleHRDb250ZW50KCkpCiAgICAgICAgIHJldHVy
bjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmggYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5oCmluZGV4IDljN2RhZTg4Y2VkYi4u
NTRmMTA5Yjg0NDQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmgKQEAgLTMx
LDcgKzMxLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRm9udDsKLWNsYXNzIElu
bGluZVRleHRCb3g7CitjbGFzcyBMZWdhY3lJbmxpbmVUZXh0Qm94Owogc3RydWN0IEdseXBoT3Zl
cmZsb3c7CiAKIG5hbWVzcGFjZSBMYXlvdXRJbnRlZ3JhdGlvbiB7CkBAIC02MSwxNCArNjEsMTQg
QEAgcHVibGljOgogCiAgICAgdmlydHVhbCBTdHJpbmcgb3JpZ2luYWxUZXh0KCkgY29uc3Q7CiAK
LSAgICB2b2lkIGV4dHJhY3RUZXh0Qm94KElubGluZVRleHRCb3gmIGJveCkgeyBtX2xpbmVCb3hl
cy5leHRyYWN0KGJveCk7IH0KLSAgICB2b2lkIGF0dGFjaFRleHRCb3goSW5saW5lVGV4dEJveCYg
Ym94KSB7IG1fbGluZUJveGVzLmF0dGFjaChib3gpOyB9Ci0gICAgdm9pZCByZW1vdmVUZXh0Qm94
KElubGluZVRleHRCb3gmIGJveCkgeyBtX2xpbmVCb3hlcy5yZW1vdmUoYm94KTsgfQorICAgIHZv
aWQgZXh0cmFjdFRleHRCb3goTGVnYWN5SW5saW5lVGV4dEJveCYgYm94KSB7IG1fbGluZUJveGVz
LmV4dHJhY3QoYm94KTsgfQorICAgIHZvaWQgYXR0YWNoVGV4dEJveChMZWdhY3lJbmxpbmVUZXh0
Qm94JiBib3gpIHsgbV9saW5lQm94ZXMuYXR0YWNoKGJveCk7IH0KKyAgICB2b2lkIHJlbW92ZVRl
eHRCb3goTGVnYWN5SW5saW5lVGV4dEJveCYgYm94KSB7IG1fbGluZUJveGVzLnJlbW92ZShib3gp
OyB9CiAKICAgICBTdHJpbmdJbXBsJiB0ZXh0KCkgY29uc3QgeyByZXR1cm4gKm1fdGV4dC5pbXBs
KCk7IH0gLy8gU2luY2UgbV90ZXh0IGNhbiBuZXZlciBiZSBudWxsLCByZXR1cm5pbmcgdGhpcyB0
eXBlIG1lYW5zIGNhbGxlcnMgd29uJ3QgbnVsbCBjaGVjay4KICAgICBTdHJpbmcgdGV4dFdpdGhv
dXRDb252ZXJ0aW5nQmFja3NsYXNoVG9ZZW5TeW1ib2woKSBjb25zdDsKIAotICAgIElubGluZVRl
eHRCb3gqIGNyZWF0ZUlubGluZVRleHRCb3goKSB7IHJldHVybiBtX2xpbmVCb3hlcy5jcmVhdGVB
bmRBcHBlbmRMaW5lQm94KCp0aGlzKTsgfQorICAgIExlZ2FjeUlubGluZVRleHRCb3gqIGNyZWF0
ZUlubGluZVRleHRCb3goKSB7IHJldHVybiBtX2xpbmVCb3hlcy5jcmVhdGVBbmRBcHBlbmRMaW5l
Qm94KCp0aGlzKTsgfQogICAgIHZvaWQgZGlydHlMaW5lQm94ZXMoYm9vbCBmdWxsTGF5b3V0KTsK
ICAgICB2b2lkIGRlbGV0ZUxpbmVCb3hlcygpOwogCkBAIC04OCw3ICs4OCw3IEBAIHB1YmxpYzoK
ICAgICBVQ2hhciBjaGFyYWN0ZXJBdCh1bnNpZ25lZCkgY29uc3Q7CiAgICAgdW5zaWduZWQgbGVu
Z3RoKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdGV4dCgpLmxlbmd0aCgpOyB9CiAKLSAgICB2b2lk
IHBvc2l0aW9uTGluZUJveChJbmxpbmVUZXh0Qm94Jik7CisgICAgdm9pZCBwb3NpdGlvbkxpbmVC
b3goTGVnYWN5SW5saW5lVGV4dEJveCYpOwogCiAgICAgdmlydHVhbCBmbG9hdCB3aWR0aCh1bnNp
Z25lZCBmcm9tLCB1bnNpZ25lZCBsZW5ndGgsIGNvbnN0IEZvbnRDYXNjYWRlJiwgZmxvYXQgeFBv
cywgSGFzaFNldDxjb25zdCBGb250Kj4qIGZhbGxiYWNrRm9udHMgPSBudWxscHRyLCBHbHlwaE92
ZXJmbG93KiA9IG51bGxwdHIpIGNvbnN0OwogICAgIHZpcnR1YWwgZmxvYXQgd2lkdGgodW5zaWdu
ZWQgZnJvbSwgdW5zaWduZWQgbGVuZ3RoLCBmbG9hdCB4UG9zLCBib29sIGZpcnN0TGluZSA9IGZh
bHNlLCBIYXNoU2V0PGNvbnN0IEZvbnQqPiogZmFsbGJhY2tGb250cyA9IG51bGxwdHIsIEdseXBo
T3ZlcmZsb3cqID0gbnVsbHB0cikgY29uc3Q7CkBAIC0xMzEsOCArMTMxLDggQEAgcHVibGljOgog
ICAgIExheW91dFVuaXQgbWFyZ2luTGVmdCgpIGNvbnN0IHsgcmV0dXJuIG1pbmltdW1WYWx1ZUZv
ckxlbmd0aChzdHlsZSgpLm1hcmdpbkxlZnQoKSwgMCk7IH0KICAgICBMYXlvdXRVbml0IG1hcmdp
blJpZ2h0KCkgY29uc3QgeyByZXR1cm4gbWluaW11bVZhbHVlRm9yTGVuZ3RoKHN0eWxlKCkubWFy
Z2luUmlnaHQoKSwgMCk7IH0KIAotICAgIElubGluZVRleHRCb3gqIGZpcnN0VGV4dEJveCgpIGNv
bnN0IHsgcmV0dXJuIG1fbGluZUJveGVzLmZpcnN0KCk7IH0KLSAgICBJbmxpbmVUZXh0Qm94KiBs
YXN0VGV4dEJveCgpIGNvbnN0IHsgcmV0dXJuIG1fbGluZUJveGVzLmxhc3QoKTsgfQorICAgIExl
Z2FjeUlubGluZVRleHRCb3gqIGZpcnN0VGV4dEJveCgpIGNvbnN0IHsgcmV0dXJuIG1fbGluZUJv
eGVzLmZpcnN0KCk7IH0KKyAgICBMZWdhY3lJbmxpbmVUZXh0Qm94KiBsYXN0VGV4dEJveCgpIGNv
bnN0IHsgcmV0dXJuIG1fbGluZUJveGVzLmxhc3QoKTsgfQogCiAgICAgaW50IGNhcmV0TWluT2Zm
c2V0KCkgY29uc3QgZmluYWw7CiAgICAgaW50IGNhcmV0TWF4T2Zmc2V0KCkgY29uc3QgZmluYWw7
CkBAIC0xNTAsNyArMTUwLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBtb21lbnRhcmlseVJldmVh
bExhc3RUeXBlZENoYXJhY3Rlcih1bnNpZ25lZCBvZmZzZXRBZnRlckxhc3RUeXBlZENoYXJhY3Rl
cik7CiAKLSAgICBJbmxpbmVUZXh0Qm94KiBmaW5kTmV4dElubGluZVRleHRCb3goaW50IG9mZnNl
dCwgaW50JiBwb3MpIGNvbnN0IHsgcmV0dXJuIG1fbGluZUJveGVzLmZpbmROZXh0KG9mZnNldCwg
cG9zKTsgfQorICAgIExlZ2FjeUlubGluZVRleHRCb3gqIGZpbmROZXh0SW5saW5lVGV4dEJveChp
bnQgb2Zmc2V0LCBpbnQmIHBvcykgY29uc3QgeyByZXR1cm4gbV9saW5lQm94ZXMuZmluZE5leHQo
b2Zmc2V0LCBwb3MpOyB9CiAKICAgICBib29sIGlzQWxsQ29sbGFwc2libGVXaGl0ZXNwYWNlKCkg
Y29uc3Q7CiAKQEAgLTE2MCw3ICsxNjAsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQg
c3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5
bGUpOwogCi0gICAgdmlydHVhbCBzdGQ6OnVuaXF1ZV9wdHI8SW5saW5lVGV4dEJveD4gY3JlYXRl
VGV4dEJveCgpOworICAgIHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRyPExlZ2FjeUlubGluZVRleHRC
b3g+IGNyZWF0ZVRleHRCb3goKTsKIAogI2lmIEVOQUJMRShURVhUX0FVVE9TSVpJTkcpCiAgICAg
ZmxvYXQgY2FuZGlkYXRlQ29tcHV0ZWRUZXh0U2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2FuZGlk
YXRlQ29tcHV0ZWRUZXh0U2l6ZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRleHRMaW5lQm94ZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRleHRMaW5lQm94ZXMuY3BwCmluZGV4IGFiYjQzZTMwZDI0Zi4uMzk4N2I4MTk2MzgzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dExpbmVCb3hlcy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRMaW5lQm94ZXMuY3Bw
CkBAIC0yNyw3ICsyNyw3IEBACiAjaW5jbHVkZSAiUmVuZGVyVGV4dExpbmVCb3hlcy5oIgogCiAj
aW5jbHVkZSAiRWxsaXBzaXNCb3guaCIKLSNpbmNsdWRlICJJbmxpbmVUZXh0Qm94LmgiCisjaW5j
bHVkZSAiTGVnYWN5SW5saW5lVGV4dEJveC5oIgogI2luY2x1ZGUgIkxlZ2FjeVJvb3RJbmxpbmVC
b3guaCIKICNpbmNsdWRlICJSZW5kZXJCbG9jay5oIgogI2luY2x1ZGUgIlJlbmRlclN0eWxlLmgi
CkBAIC00Miw3ICs0Miw3IEBAIFJlbmRlclRleHRMaW5lQm94ZXM6OlJlbmRlclRleHRMaW5lQm94
ZXMoKQogewogfQogCi1JbmxpbmVUZXh0Qm94KiBSZW5kZXJUZXh0TGluZUJveGVzOjpjcmVhdGVB
bmRBcHBlbmRMaW5lQm94KFJlbmRlclRleHQmIHJlbmRlclRleHQpCitMZWdhY3lJbmxpbmVUZXh0
Qm94KiBSZW5kZXJUZXh0TGluZUJveGVzOjpjcmVhdGVBbmRBcHBlbmRMaW5lQm94KFJlbmRlclRl
eHQmIHJlbmRlclRleHQpCiB7CiAgICAgYXV0byB0ZXh0Qm94ID0gcmVuZGVyVGV4dC5jcmVhdGVU
ZXh0Qm94KCk7CiAgICAgaWYgKCFtX2ZpcnN0KSB7CkBAIC01Niw3ICs1Niw3IEBAIElubGluZVRl
eHRCb3gqIFJlbmRlclRleHRMaW5lQm94ZXM6OmNyZWF0ZUFuZEFwcGVuZExpbmVCb3goUmVuZGVy
VGV4dCYgcmVuZGVyVGV4CiAgICAgcmV0dXJuIHRleHRCb3gucmVsZWFzZSgpOwogfQogCi12b2lk
IFJlbmRlclRleHRMaW5lQm94ZXM6OmV4dHJhY3QoSW5saW5lVGV4dEJveCYgYm94KQordm9pZCBS
ZW5kZXJUZXh0TGluZUJveGVzOjpleHRyYWN0KExlZ2FjeUlubGluZVRleHRCb3gmIGJveCkKIHsK
ICAgICBjaGVja0NvbnNpc3RlbmN5KCk7CiAKQEAgLTcyLDcgKzcyLDcgQEAgdm9pZCBSZW5kZXJU
ZXh0TGluZUJveGVzOjpleHRyYWN0KElubGluZVRleHRCb3gmIGJveCkKICAgICBjaGVja0NvbnNp
c3RlbmN5KCk7CiB9CiAKLXZvaWQgUmVuZGVyVGV4dExpbmVCb3hlczo6YXR0YWNoKElubGluZVRl
eHRCb3gmIGJveCkKK3ZvaWQgUmVuZGVyVGV4dExpbmVCb3hlczo6YXR0YWNoKExlZ2FjeUlubGlu
ZVRleHRCb3gmIGJveCkKIHsKICAgICBjaGVja0NvbnNpc3RlbmN5KCk7CiAKQEAgLTgxLDcgKzgx
LDcgQEAgdm9pZCBSZW5kZXJUZXh0TGluZUJveGVzOjphdHRhY2goSW5saW5lVGV4dEJveCYgYm94
KQogICAgICAgICBib3guc2V0UHJldmlvdXNUZXh0Qm94KG1fbGFzdCk7CiAgICAgfSBlbHNlCiAg
ICAgICAgIG1fZmlyc3QgPSAmYm94OwotICAgIElubGluZVRleHRCb3gqIGxhc3QgPSBudWxscHRy
OworICAgIExlZ2FjeUlubGluZVRleHRCb3gqIGxhc3QgPSBudWxscHRyOwogICAgIGZvciAoYXV0
byogY3VycmVudCA9ICZib3g7IGN1cnJlbnQ7IGN1cnJlbnQgPSBjdXJyZW50LT5uZXh0VGV4dEJv
eCgpKSB7CiAgICAgICAgIGN1cnJlbnQtPnNldEV4dHJhY3RlZChmYWxzZSk7CiAgICAgICAgIGxh
c3QgPSBjdXJyZW50OwpAQCAtOTEsNyArOTEsNyBAQCB2b2lkIFJlbmRlclRleHRMaW5lQm94ZXM6
OmF0dGFjaChJbmxpbmVUZXh0Qm94JiBib3gpCiAgICAgY2hlY2tDb25zaXN0ZW5jeSgpOwogfQog
Ci12b2lkIFJlbmRlclRleHRMaW5lQm94ZXM6OnJlbW92ZShJbmxpbmVUZXh0Qm94JiBib3gpCit2
b2lkIFJlbmRlclRleHRMaW5lQm94ZXM6OnJlbW92ZShMZWdhY3lJbmxpbmVUZXh0Qm94JiBib3gp
CiB7CiAgICAgY2hlY2tDb25zaXN0ZW5jeSgpOwogCkBAIC0xMjIsNyArMTIyLDcgQEAgdm9pZCBS
ZW5kZXJUZXh0TGluZUJveGVzOjpkZWxldGVBbGwoKQogewogICAgIGlmICghbV9maXJzdCkKICAg
ICAgICAgcmV0dXJuOwotICAgIElubGluZVRleHRCb3gqIG5leHQ7CisgICAgTGVnYWN5SW5saW5l
VGV4dEJveCogbmV4dDsKICAgICBmb3IgKGF1dG8qIGN1cnJlbnQgPSBtX2ZpcnN0OyBjdXJyZW50
OyBjdXJyZW50ID0gbmV4dCkgewogICAgICAgICBuZXh0ID0gY3VycmVudC0+bmV4dFRleHRCb3go
KTsKICAgICAgICAgZGVsZXRlIGN1cnJlbnQ7CkBAIC0xMzEsNyArMTMxLDcgQEAgdm9pZCBSZW5k
ZXJUZXh0TGluZUJveGVzOjpkZWxldGVBbGwoKQogICAgIG1fbGFzdCA9IG51bGxwdHI7CiB9CiAK
LUlubGluZVRleHRCb3gqIFJlbmRlclRleHRMaW5lQm94ZXM6OmZpbmROZXh0KGludCBvZmZzZXQs
IGludCYgcG9zaXRpb24pIGNvbnN0CitMZWdhY3lJbmxpbmVUZXh0Qm94KiBSZW5kZXJUZXh0TGlu
ZUJveGVzOjpmaW5kTmV4dChpbnQgb2Zmc2V0LCBpbnQmIHBvc2l0aW9uKSBjb25zdAogewogICAg
IGlmICghbV9maXJzdCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0yNTYsNyArMjU2LDcg
QEAgaW5saW5lIHZvaWQgUmVuZGVyVGV4dExpbmVCb3hlczo6Y2hlY2tDb25zaXN0ZW5jeSgpIGNv
bnN0CiB7CiAjaWYgQVNTRVJUX0VOQUJMRUQKICNpZmRlZiBDSEVDS19DT05TSVNURU5DWQotICAg
IGNvbnN0IElubGluZVRleHRCb3gqIHByZXYgPSBudWxscHRyOworICAgIGNvbnN0IExlZ2FjeUlu
bGluZVRleHRCb3gqIHByZXYgPSBudWxscHRyOwogICAgIGZvciAoYXV0byogY2hpbGQgPSBtX2Zp
cnN0OyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFRleHRCb3goKSkgewogICAgICAgICBBU1NF
UlQoY2hpbGQtPnJlbmRlcmVyKCkgPT0gdGhpcyk7CiAgICAgICAgIEFTU0VSVChjaGlsZC0+cHJl
dlRleHRCb3goKSA9PSBwcmV2KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUZXh0TGluZUJveGVzLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGV4dExpbmVCb3hlcy5oCmluZGV4IDc0ZDFlMDczY2JjMS4uMzMzMWVjYmNhYjUyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dExpbmVCb3hlcy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0TGluZUJveGVzLmgKQEAgLTMwLDcg
KzMwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBJbmxpbmVUZXh0Qm94Owor
Y2xhc3MgTGVnYWN5SW5saW5lVGV4dEJveDsKIGNsYXNzIFJlbmRlclN0eWxlOwogY2xhc3MgUmVu
ZGVyVGV4dDsKIGNsYXNzIFZpc2libGVQb3NpdGlvbjsKQEAgLTM5LDE0ICszOSwxNCBAQCBjbGFz
cyBSZW5kZXJUZXh0TGluZUJveGVzIHsKIHB1YmxpYzoKICAgICBSZW5kZXJUZXh0TGluZUJveGVz
KCk7CiAKLSAgICBJbmxpbmVUZXh0Qm94KiBmaXJzdCgpIGNvbnN0IHsgcmV0dXJuIG1fZmlyc3Q7
IH0KLSAgICBJbmxpbmVUZXh0Qm94KiBsYXN0KCkgY29uc3QgeyByZXR1cm4gbV9sYXN0OyB9Cisg
ICAgTGVnYWN5SW5saW5lVGV4dEJveCogZmlyc3QoKSBjb25zdCB7IHJldHVybiBtX2ZpcnN0OyB9
CisgICAgTGVnYWN5SW5saW5lVGV4dEJveCogbGFzdCgpIGNvbnN0IHsgcmV0dXJuIG1fbGFzdDsg
fQogCi0gICAgSW5saW5lVGV4dEJveCogY3JlYXRlQW5kQXBwZW5kTGluZUJveChSZW5kZXJUZXh0
Jik7CisgICAgTGVnYWN5SW5saW5lVGV4dEJveCogY3JlYXRlQW5kQXBwZW5kTGluZUJveChSZW5k
ZXJUZXh0Jik7CiAKLSAgICB2b2lkIGV4dHJhY3QoSW5saW5lVGV4dEJveCYpOwotICAgIHZvaWQg
YXR0YWNoKElubGluZVRleHRCb3gmKTsKLSAgICB2b2lkIHJlbW92ZShJbmxpbmVUZXh0Qm94Jik7
CisgICAgdm9pZCBleHRyYWN0KExlZ2FjeUlubGluZVRleHRCb3gmKTsKKyAgICB2b2lkIGF0dGFj
aChMZWdhY3lJbmxpbmVUZXh0Qm94Jik7CisgICAgdm9pZCByZW1vdmUoTGVnYWN5SW5saW5lVGV4
dEJveCYpOwogCiAgICAgdm9pZCByZW1vdmVBbGxGcm9tUGFyZW50KFJlbmRlclRleHQmKTsKICAg
ICB2b2lkIGRlbGV0ZUFsbCgpOwpAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBk
aXJ0eUFsbCgpOwogICAgIGJvb2wgZGlydHlSYW5nZShSZW5kZXJUZXh0JiwgdW5zaWduZWQgc3Rh
cnQsIHVuc2lnbmVkIGVuZCwgaW50IGxlbmd0aERlbHRhKTsKIAotICAgIElubGluZVRleHRCb3gq
IGZpbmROZXh0KGludCBvZmZzZXQsIGludCYgcG9zaXRpb24pIGNvbnN0OworICAgIExlZ2FjeUlu
bGluZVRleHRCb3gqIGZpbmROZXh0KGludCBvZmZzZXQsIGludCYgcG9zaXRpb24pIGNvbnN0Owog
CiAgICAgTGF5b3V0UmVjdCB2aXN1YWxPdmVyZmxvd0JvdW5kaW5nQm94KGNvbnN0IFJlbmRlclRl
eHQmKSBjb25zdDsKIApAQCAtNjksOCArNjksOCBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIHZv
aWQgY2hlY2tDb25zaXN0ZW5jeSgpIGNvbnN0OwogCi0gICAgSW5saW5lVGV4dEJveCogbV9maXJz
dDsKLSAgICBJbmxpbmVUZXh0Qm94KiBtX2xhc3Q7CisgICAgTGVnYWN5SW5saW5lVGV4dEJveCog
bV9maXJzdDsKKyAgICBMZWdhY3lJbmxpbmVUZXh0Qm94KiBtX2xhc3Q7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVHJlZUFzVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVHJlZUFz
VGV4dC5jcHAKaW5kZXggODE3MDJmNDVkNGMxLi4zMDE3MmE5YzgyYTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5jcHAKQEAgLTM2LDggKzM2LDggQEAK
ICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJIVE1MU3BhbkVsZW1lbnQuaCIKICNp
bmNsdWRlICJJbmxpbmVJdGVyYXRvci5oIgotI2luY2x1ZGUgIklubGluZVRleHRCb3guaCIKICNp
bmNsdWRlICJMYXlvdXRJbnRlZ3JhdGlvblJ1bkl0ZXJhdG9yLmgiCisjaW5jbHVkZSAiTGVnYWN5
SW5saW5lVGV4dEJveC5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJQcmludENv
bnRleHQuaCIKICNpbmNsdWRlICJQc2V1ZG9FbGVtZW50LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvVGV4dERlY29yYXRpb25QYWludGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvVGV4dERlY29yYXRpb25QYWludGVyLmgKaW5kZXggMjYyZGVkYzdhNWJmLi44
N2UyMDY2Zjg4MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0RGVj
b3JhdGlvblBhaW50ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dERlY29y
YXRpb25QYWludGVyLmgKQEAgLTMzLDcgKzMzLDcgQEAgY2xhc3MgRmlsdGVyT3BlcmF0aW9uczsK
IGNsYXNzIEZvbnRDYXNjYWRlOwogY2xhc3MgRmxvYXRSZWN0OwogY2xhc3MgR3JhcGhpY3NDb250
ZXh0OwotY2xhc3MgSW5saW5lVGV4dEJveDsKK2NsYXNzIExlZ2FjeUlubGluZVRleHRCb3g7CiBj
bGFzcyBSZW5kZXJPYmplY3Q7CiBjbGFzcyBSZW5kZXJTdHlsZTsKIGNsYXNzIFJlbmRlclRleHQ7
CkBAIC00NSw3ICs0NSw3IEBAIHB1YmxpYzoKICAgICBzdHJ1Y3QgU3R5bGVzOwogICAgIFRleHRE
ZWNvcmF0aW9uUGFpbnRlcihHcmFwaGljc0NvbnRleHQmLCBPcHRpb25TZXQ8VGV4dERlY29yYXRp
b24+IGRlY29yYXRpb25zLCBjb25zdCBSZW5kZXJUZXh0JiwgYm9vbCBpc0ZpcnN0TGluZSwgY29u
c3QgRm9udENhc2NhZGUmLCBzdGQ6Om9wdGlvbmFsPFN0eWxlcz4gPSBzdGQ6Om51bGxvcHQpOwog
ICAgIAotICAgIHZvaWQgc2V0SW5saW5lVGV4dEJveChjb25zdCBJbmxpbmVUZXh0Qm94KiBpbmxp
bmVUZXh0Qm94KSB7IG1faW5saW5lVGV4dEJveCA9IGlubGluZVRleHRCb3g7IH0KKyAgICB2b2lk
IHNldElubGluZVRleHRCb3goY29uc3QgTGVnYWN5SW5saW5lVGV4dEJveCogaW5saW5lVGV4dEJv
eCkgeyBtX2lubGluZVRleHRCb3ggPSBpbmxpbmVUZXh0Qm94OyB9CiAgICAgdm9pZCBzZXRJc0hv
cml6b250YWwoYm9vbCBpc0hvcml6b250YWwpIHsgbV9pc0hvcml6b250YWwgPSBpc0hvcml6b250
YWw7IH0KICAgICB2b2lkIHNldFdpZHRoKGZsb2F0IHdpZHRoKSB7IG1fd2lkdGggPSB3aWR0aDsg
fQogICAgIHZvaWQgc2V0VGV4dFNoYWRvdyhjb25zdCBTaGFkb3dEYXRhKiB0ZXh0U2hhZG93KSB7
IG1fc2hhZG93ID0gdGV4dFNoYWRvdzsgfQpAQCAtNzgsNyArNzgsNyBAQCBwcml2YXRlOgogICAg
IGJvb2wgbV9pc0hvcml6b250YWwgeyB0cnVlIH07CiAgICAgY29uc3QgU2hhZG93RGF0YSogbV9z
aGFkb3cgeyBudWxscHRyIH07CiAgICAgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyogbV9zaGFkb3dD
b2xvckZpbHRlciB7IG51bGxwdHIgfTsKLSAgICBjb25zdCBJbmxpbmVUZXh0Qm94KiBtX2lubGlu
ZVRleHRCb3ggeyBudWxscHRyIH07CisgICAgY29uc3QgTGVnYWN5SW5saW5lVGV4dEJveCogbV9p
bmxpbmVUZXh0Qm94IHsgbnVsbHB0ciB9OwogICAgIGNvbnN0IEZvbnRDYXNjYWRlJiBtX2ZvbnQ7
CiAKICAgICBTdHlsZXMgbV9zdHlsZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvVGV4dFBhaW50ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRQYWlu
dGVyLmNwcAppbmRleCBiYmExMWIzZjQ0NDAuLjc0ODUyYTZiMGQyNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRQYWludGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvVGV4dFBhaW50ZXIuY3BwCkBAIC0yNyw4ICsyNyw4IEBACiAjaW5jbHVkZSAi
RmlsdGVyT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1
ZGUgIkhUTUxQYXJzZXJJZGlvbXMuaCIKLSNpbmNsdWRlICJJbmxpbmVUZXh0Qm94LmgiCiAjaW5j
bHVkZSAiTGF5b3V0SW50ZWdyYXRpb25SdW4uaCIKKyNpbmNsdWRlICJMZWdhY3lJbmxpbmVUZXh0
Qm94LmgiCiAjaW5jbHVkZSAiUmVuZGVyQ29tYmluZVRleHQuaCIKICNpbmNsdWRlICJSZW5kZXJM
YXllci5oIgogI2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKQEAgLTIyNyw3ICsy
MjcsNyBAQCB2b2lkIFRleHRQYWludGVyOjpwYWludFJhbmdlKGNvbnN0IFRleHRSdW4mIHRleHRS
dW4sIGNvbnN0IEZsb2F0UmVjdCYgYm94UmVjdCwgYwogCiB2b2lkIFRleHRQYWludGVyOjpjbGVh
ckdseXBoRGlzcGxheUxpc3RzKCkKIHsKLSAgICBHbHlwaERpc3BsYXlMaXN0Q2FjaGU8SW5saW5l
VGV4dEJveD46OnNpbmdsZXRvbigpLmNsZWFyKCk7CisgICAgR2x5cGhEaXNwbGF5TGlzdENhY2hl
PExlZ2FjeUlubGluZVRleHRCb3g+OjpzaW5nbGV0b24oKS5jbGVhcigpOwogI2lmIEVOQUJMRShM
QVlPVVRfRk9STUFUVElOR19DT05URVhUKQogICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVz
OjpzaGFyZWRGZWF0dXJlcygpLmxheW91dEZvcm1hdHRpbmdDb250ZXh0SW50ZWdyYXRpb25FbmFi
bGVkKCkpCiAgICAgICAgIEdseXBoRGlzcGxheUxpc3RDYWNoZTxMYXlvdXRJbnRlZ3JhdGlvbjo6
UnVuPjo6c2luZ2xldG9uKCkuY2xlYXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZVRleHQuY3BwCmluZGV4IGZkZmI5NThlNzU4NC4uOTdm
NTViMTJmY2ExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR0lubGluZVRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHSW5saW5lVGV4dC5jcHAKQEAgLTExMiw3ICsxMTIsNyBAQCB2b2lkIFJlbmRlclNWR0lu
bGluZVRleHQ6OnN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSBkaWZmLCBjb25zdCBSZW5k
ZXJTdHlsZQogICAgICAgICB0ZXh0QW5jZXN0b3ItPnN1YnRyZWVTdHlsZURpZENoYW5nZSh0aGlz
KTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPElubGluZVRleHRCb3g+IFJlbmRlclNWR0lubGluZVRl
eHQ6OmNyZWF0ZVRleHRCb3goKQorc3RkOjp1bmlxdWVfcHRyPExlZ2FjeUlubGluZVRleHRCb3g+
IFJlbmRlclNWR0lubGluZVRleHQ6OmNyZWF0ZVRleHRCb3goKQogewogICAgIGF1dG8gYm94ID0g
bWFrZVVuaXF1ZTxTVkdJbmxpbmVUZXh0Qm94PigqdGhpcyk7CiAgICAgYm94LT5zZXRIYXNWaXJ0
dWFsTG9naWNhbEhlaWdodCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdJbmxpbmVUZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR0lubGluZVRleHQuaAppbmRleCAyOGU5NWEwYmI0YmQuLmUwM2I3NDdiMDc5ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmVU
ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmVU
ZXh0LmgKQEAgLTYzLDcgKzYzLDcgQEAgcHJpdmF0ZToKIAogICAgIFZpc2libGVQb3NpdGlvbiBw
b3NpdGlvbkZvclBvaW50KGNvbnN0IExheW91dFBvaW50JiwgY29uc3QgUmVuZGVyRnJhZ21lbnRD
b250YWluZXIqKSBvdmVycmlkZTsKICAgICBJbnRSZWN0IGxpbmVzQm91bmRpbmdCb3goKSBjb25z
dCBvdmVycmlkZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5saW5lVGV4dEJveD4gY3JlYXRlVGV4
dEJveCgpIG92ZXJyaWRlOworICAgIHN0ZDo6dW5pcXVlX3B0cjxMZWdhY3lJbmxpbmVUZXh0Qm94
PiBjcmVhdGVUZXh0Qm94KCkgb3ZlcnJpZGU7CiAKICAgICBmbG9hdCBtX3NjYWxpbmdGYWN0b3I7
CiAgICAgRm9udENhc2NhZGUgbV9zY2FsZWRGb250OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9TVkdJbmxpbmVUZXh0Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvU1ZHSW5saW5lVGV4dEJveC5jcHAKaW5kZXggM2Q1MGIwOTM2MWVkLi5lNTY5
OTFmNzBkMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHSW5s
aW5lVGV4dEJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdJbmxp
bmVUZXh0Qm94LmNwcApAQCAtNDIsNyArNDIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdU
Rl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChTVkdJbmxpbmVUZXh0Qm94KTsKIAotc3RydWN0IEV4
cGVjdGVkU1ZHSW5saW5lVGV4dEJveFNpemUgOiBwdWJsaWMgSW5saW5lVGV4dEJveCB7CitzdHJ1
Y3QgRXhwZWN0ZWRTVkdJbmxpbmVUZXh0Qm94U2l6ZSA6IHB1YmxpYyBMZWdhY3lJbmxpbmVUZXh0
Qm94IHsKICAgICBmbG9hdCBmbG9hdDE7CiAgICAgdWludDMyX3QgYml0ZmllbGRzIDogNTsKICAg
ICB2b2lkKiBwb2ludGVyOwpAQCAtNTIsNyArNTIsNyBAQCBzdHJ1Y3QgRXhwZWN0ZWRTVkdJbmxp
bmVUZXh0Qm94U2l6ZSA6IHB1YmxpYyBJbmxpbmVUZXh0Qm94IHsKIENPTVBJTEVfQVNTRVJUKHNp
emVvZihTVkdJbmxpbmVUZXh0Qm94KSA9PSBzaXplb2YoRXhwZWN0ZWRTVkdJbmxpbmVUZXh0Qm94
U2l6ZSksIFNWR0lubGluZVRleHRCb3hfaXNfbm90X29mX2V4cGVjdGVkX3NpemUpOwogCiBTVkdJ
bmxpbmVUZXh0Qm94OjpTVkdJbmxpbmVUZXh0Qm94KFJlbmRlclNWR0lubGluZVRleHQmIHJlbmRl
cmVyKQotICAgIDogSW5saW5lVGV4dEJveChyZW5kZXJlcikKKyAgICA6IExlZ2FjeUlubGluZVRl
eHRCb3gocmVuZGVyZXIpCiAgICAgLCBtX3BhaW50aW5nUmVzb3VyY2VNb2RlKE9wdGlvblNldDxS
ZW5kZXJTVkdSZXNvdXJjZU1vZGU+KCkudG9SYXcoKSkKICAgICAsIG1fc3RhcnRzTmV3VGV4dENo
dW5rKGZhbHNlKQogewpAQCAtNjAsNyArNjAsNyBAQCBTVkdJbmxpbmVUZXh0Qm94OjpTVkdJbmxp
bmVUZXh0Qm94KFJlbmRlclNWR0lubGluZVRleHQmIHJlbmRlcmVyKQogCiB2b2lkIFNWR0lubGlu
ZVRleHRCb3g6OmRpcnR5T3duTGluZUJveGVzKCkKIHsKLSAgICBJbmxpbmVUZXh0Qm94OjpkaXJ0
eUxpbmVCb3hlcygpOworICAgIExlZ2FjeUlubGluZVRleHRCb3g6OmRpcnR5TGluZUJveGVzKCk7
CiAKICAgICAvLyBDbGVhciB0aGUgbm93IHN0YWxlIHRleHQgZnJhZ21lbnRzCiAgICAgY2xlYXJU
ZXh0RnJhZ21lbnRzKCk7CkBAIC03Miw3ICs3Miw3IEBAIHZvaWQgU1ZHSW5saW5lVGV4dEJveDo6
ZGlydHlMaW5lQm94ZXMoKQogCiAgICAgLy8gQW5kIGNsZWFyIGFueSBmb2xsb3dpbmcgdGV4dCBm
cmFnbWVudHMgYXMgdGhlIHRleHQgb24gd2hpY2ggdGhleQogICAgIC8vIGRlcGVuZCBtYXkgbm93
IG5vIGxvbmdlciBleGlzdCwgb3IgZ2x5cGggcG9zaXRpb25zIG1heSBiZSB3cm9uZwotICAgIGZv
ciAoSW5saW5lVGV4dEJveCogbmV4dEJveCA9IG5leHRUZXh0Qm94KCk7IG5leHRCb3g7IG5leHRC
b3ggPSBuZXh0Qm94LT5uZXh0VGV4dEJveCgpKQorICAgIGZvciAoYXV0byogbmV4dEJveCA9IG5l
eHRUZXh0Qm94KCk7IG5leHRCb3g7IG5leHRCb3ggPSBuZXh0Qm94LT5uZXh0VGV4dEJveCgpKQog
ICAgICAgICBuZXh0Qm94LT5kaXJ0eU93bkxpbmVCb3hlcygpOwogfQogCkBAIC04Niw3ICs4Niw3
IEBAIGludCBTVkdJbmxpbmVUZXh0Qm94OjpvZmZzZXRGb3JQb3NpdGlvbihmbG9hdCwgYm9vbCkg
Y29uc3QKIAogaW50IFNWR0lubGluZVRleHRCb3g6Om9mZnNldEZvclBvc2l0aW9uSW5GcmFnbWVu
dChjb25zdCBTVkdUZXh0RnJhZ21lbnQmIGZyYWdtZW50LCBmbG9hdCBwb3NpdGlvbiwgYm9vbCBp
bmNsdWRlUGFydGlhbEdseXBocykgY29uc3QKIHsKLSAgIGZsb2F0IHNjYWxpbmdGYWN0b3IgPSBy
ZW5kZXJlcigpLnNjYWxpbmdGYWN0b3IoKTsKKyAgICBmbG9hdCBzY2FsaW5nRmFjdG9yID0gcmVu
ZGVyZXIoKS5zY2FsaW5nRmFjdG9yKCk7CiAgICAgQVNTRVJUKHNjYWxpbmdGYWN0b3IpOwogCiAg
ICAgVGV4dFJ1biB0ZXh0UnVuID0gY29uc3RydWN0VGV4dFJ1bihyZW5kZXJlcigpLnN0eWxlKCks
IGZyYWdtZW50KTsKQEAgLTI0MCw3ICsyNDAsNyBAQCB2b2lkIFNWR0lubGluZVRleHRCb3g6OnBh
aW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZQog
ICAgIGlmIChyZW5kZXJlcigpLnN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZpc2liaWxpdHk6OlZp
c2libGUpCiAgICAgICAgIHJldHVybjsKIAotICAgIC8vIE5vdGU6IFdlJ3JlIGV4cGxpY2l0bHkg
bm90IHN1cHBvcnRpbmcgY29tcG9zaXRpb24gJiBjdXN0b20gdW5kZXJsaW5lcyBhbmQgY3VzdG9t
IGhpZ2hsaWdodGVycyAtIHVubGlrZSBJbmxpbmVUZXh0Qm94LgorICAgIC8vIE5vdGU6IFdlJ3Jl
IGV4cGxpY2l0bHkgbm90IHN1cHBvcnRpbmcgY29tcG9zaXRpb24gJiBjdXN0b20gdW5kZXJsaW5l
cyBhbmQgY3VzdG9tIGhpZ2hsaWdodGVycyAtIHVubGlrZSBMZWdhY3lJbmxpbmVUZXh0Qm94Lgog
ICAgIC8vIElmIHdlIGV2ZXIgbmVlZCB0aGF0IGZvciBTVkcsIGl0J3MgdmVyeSBlYXN5IHRvIHJl
ZmFjdG9yIGFuZCByZXVzZSB0aGUgY29kZS4KIAogICAgIGF1dG8mIHBhcmVudFJlbmRlcmVyID0g
cGFyZW50KCktPnJlbmRlcmVyKCk7CkBAIC02MzgsNyArNjM4LDcgQEAgRmxvYXRSZWN0IFNWR0lu
bGluZVRleHRCb3g6OmNhbGN1bGF0ZUJvdW5kYXJpZXMoKSBjb25zdAogCiBib29sIFNWR0lubGlu
ZVRleHRCb3g6Om5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBIaXRU
ZXN0UmVzdWx0JiByZXN1bHQsIGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYgbG9jYXRpb25JbkNvbnRh
aW5lciwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0LCBMYXlvdXRVbml0LCBM
YXlvdXRVbml0LCBIaXRUZXN0QWN0aW9uKQogewotICAgIC8vIEZJWE1FOiBpbnRlZ3JhdGUgd2l0
aCBJbmxpbmVUZXh0Qm94Ojpub2RlQXRQb2ludCBiZXR0ZXIuCisgICAgLy8gRklYTUU6IGludGVn
cmF0ZSB3aXRoIExlZ2FjeUlubGluZVRleHRCb3g6Om5vZGVBdFBvaW50IGJldHRlci4KICAgICBB
U1NFUlQoIWlzTGluZUJyZWFrKCkpOwogCiAgICAgUG9pbnRlckV2ZW50c0hpdFJ1bGVzIGhpdFJ1
bGVzKFBvaW50ZXJFdmVudHNIaXRSdWxlczo6U1ZHX1RFWFRfSElUVEVTVElORywgcmVxdWVzdCwg
cmVuZGVyZXIoKS5zdHlsZSgpLnBvaW50ZXJFdmVudHMoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRleHRCb3guaCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvU1ZHSW5saW5lVGV4dEJveC5oCmluZGV4IGRjZWYzZTJmZTg5Yi4uNjli
ZDI1NjNiM2VmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR0lu
bGluZVRleHRCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR0lubGlu
ZVRleHRCb3guaApAQCAtMjEsNyArMjEsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUg
IklubGluZVRleHRCb3guaCIKKyNpbmNsdWRlICJMZWdhY3lJbmxpbmVUZXh0Qm94LmgiCiAjaW5j
bHVkZSAiUmVuZGVyU1ZHSW5saW5lVGV4dC5oIgogI2luY2x1ZGUgIlJlbmRlclNWR1Jlc291cmNl
LmgiCiAjaW5jbHVkZSAiU1ZHVGV4dEZyYWdtZW50LmgiCkBAIC0zMSwxMiArMzEsMTIgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUmVuZGVyU1ZHUmVzb3VyY2U7CiBjbGFzcyBTVkdSb290
SW5saW5lQm94OwogCi1jbGFzcyBTVkdJbmxpbmVUZXh0Qm94IGZpbmFsIDogcHVibGljIElubGlu
ZVRleHRCb3ggeworY2xhc3MgU1ZHSW5saW5lVGV4dEJveCBmaW5hbCA6IHB1YmxpYyBMZWdhY3lJ
bmxpbmVUZXh0Qm94IHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKFNWR0lubGluZVRleHRC
b3gpOwogcHVibGljOgogICAgIGV4cGxpY2l0IFNWR0lubGluZVRleHRCb3goUmVuZGVyU1ZHSW5s
aW5lVGV4dCYpOwogCi0gICAgUmVuZGVyU1ZHSW5saW5lVGV4dCYgcmVuZGVyZXIoKSBjb25zdCB7
IHJldHVybiBkb3duY2FzdDxSZW5kZXJTVkdJbmxpbmVUZXh0PihJbmxpbmVUZXh0Qm94OjpyZW5k
ZXJlcigpKTsgfQorICAgIFJlbmRlclNWR0lubGluZVRleHQmIHJlbmRlcmVyKCkgY29uc3QgeyBy
ZXR1cm4gZG93bmNhc3Q8UmVuZGVyU1ZHSW5saW5lVGV4dD4oTGVnYWN5SW5saW5lVGV4dEJveDo6
cmVuZGVyZXIoKSk7IH0KIAogICAgIGZsb2F0IHZpcnR1YWxMb2dpY2FsSGVpZ2h0KCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gbV9sb2dpY2FsSGVpZ2h0OyB9CiAgICAgdm9pZCBzZXRMb2dpY2Fs
SGVpZ2h0KGZsb2F0IGhlaWdodCkgeyBtX2xvZ2ljYWxIZWlnaHQgPSBoZWlnaHQ7IH0KQEAgLTcw
LDcgKzcwLDcgQEAgcHVibGljOgogICAgIE9wdGlvblNldDxSZW5kZXJTVkdSZXNvdXJjZU1vZGU+
IHBhaW50aW5nUmVzb3VyY2VNb2RlKCkgY29uc3QgeyByZXR1cm4gT3B0aW9uU2V0PFJlbmRlclNW
R1Jlc291cmNlTW9kZT46OmZyb21SYXcobV9wYWludGluZ1Jlc291cmNlTW9kZSk7IH0KICAgICB2
b2lkIHNldFBhaW50aW5nUmVzb3VyY2VNb2RlKE9wdGlvblNldDxSZW5kZXJTVkdSZXNvdXJjZU1v
ZGU+IG1vZGUpIHsgbV9wYWludGluZ1Jlc291cmNlTW9kZSA9IG1vZGUudG9SYXcoKTsgfQogCi0g
ICAgU1ZHSW5saW5lVGV4dEJveCogbmV4dFRleHRCb3goKSBjb25zdCB7IHJldHVybiBkb3duY2Fz
dDxTVkdJbmxpbmVUZXh0Qm94PihJbmxpbmVUZXh0Qm94OjpuZXh0VGV4dEJveCgpKTsgfQorICAg
IFNWR0lubGluZVRleHRCb3gqIG5leHRUZXh0Qm94KCkgY29uc3QgeyByZXR1cm4gZG93bmNhc3Q8
U1ZHSW5saW5lVGV4dEJveD4oTGVnYWN5SW5saW5lVGV4dEJveDo6bmV4dFRleHRCb3goKSk7IH0K
ICAgICAKIHByaXZhdGU6CiAgICAgYm9vbCBpc1NWR0lubGluZVRleHRCb3goKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiB0cnVlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1NWR1JlbmRlclRyZWVBc1RleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9TVkdSZW5kZXJUcmVlQXNUZXh0LmNwcAppbmRleCA4ZjRmZTA1OGUzYzIuLjMxZWVjZDgw
NmJmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJU
cmVlQXNUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRl
clRyZWVBc1RleHQuY3BwCkBAIC0zNjIsNyArMzYyLDcgQEAgc3RhdGljIGlubGluZSB2b2lkIHdy
aXRlU1ZHSW5saW5lVGV4dEJveChUZXh0U3RyZWFtJiB0cywgU1ZHSW5saW5lVGV4dEJveCogdGV4
dEIKIAogc3RhdGljIGlubGluZSB2b2lkIHdyaXRlU1ZHSW5saW5lVGV4dEJveGVzKFRleHRTdHJl
YW0mIHRzLCBjb25zdCBSZW5kZXJUZXh0JiB0ZXh0KQogewotICAgIGZvciAoSW5saW5lVGV4dEJv
eCogYm94ID0gdGV4dC5maXJzdFRleHRCb3goKTsgYm94OyBib3ggPSBib3gtPm5leHRUZXh0Qm94
KCkpIHsKKyAgICBmb3IgKGF1dG8qIGJveCA9IHRleHQuZmlyc3RUZXh0Qm94KCk7IGJveDsgYm94
ID0gYm94LT5uZXh0VGV4dEJveCgpKSB7CiAgICAgICAgIGlmICghaXM8U1ZHSW5saW5lVGV4dEJv
eD4oKmJveCkpCiAgICAgICAgICAgICBjb250aW51ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3R5bGUvSW5saW5lVGV4dEJveFN0eWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxl
L0lubGluZVRleHRCb3hTdHlsZS5jcHAKaW5kZXggZWY0OWIzY2U0YmRjLi45OGQ0OGI1YzkxMGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL0lubGluZVRleHRCb3hTdHlsZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvSW5saW5lVGV4dEJveFN0eWxlLmNwcApAQCAtMjcs
MTMgKzI3LDEzIEBACiAjaW5jbHVkZSAiSW5saW5lVGV4dEJveFN0eWxlLmgiCiAKICNpbmNsdWRl
ICJGb250Q2FzY2FkZS5oIgotI2luY2x1ZGUgIklubGluZVRleHRCb3guaCIKKyNpbmNsdWRlICJM
ZWdhY3lJbmxpbmVUZXh0Qm94LmgiCiAjaW5jbHVkZSAiTGVnYWN5Um9vdElubGluZUJveC5oIgog
I2luY2x1ZGUgIlRleHRVbmRlcmxpbmVPZmZzZXQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgIAotZmxvYXQgY29tcHV0ZVVuZGVybGluZU9mZnNldChUZXh0VW5kZXJsaW5lUG9zaXRpb24g
dW5kZXJsaW5lUG9zaXRpb24sIFRleHRVbmRlcmxpbmVPZmZzZXQgdW5kZXJsaW5lT2Zmc2V0LCBj
b25zdCBGb250TWV0cmljcyYgZm9udE1ldHJpY3MsIGNvbnN0IElubGluZVRleHRCb3gqIGlubGlu
ZVRleHRCb3gsIGZsb2F0IGRlZmF1bHRHYXApCitmbG9hdCBjb21wdXRlVW5kZXJsaW5lT2Zmc2V0
KFRleHRVbmRlcmxpbmVQb3NpdGlvbiB1bmRlcmxpbmVQb3NpdGlvbiwgVGV4dFVuZGVybGluZU9m
ZnNldCB1bmRlcmxpbmVPZmZzZXQsIGNvbnN0IEZvbnRNZXRyaWNzJiBmb250TWV0cmljcywgY29u
c3QgTGVnYWN5SW5saW5lVGV4dEJveCogaW5saW5lVGV4dEJveCwgZmxvYXQgZGVmYXVsdEdhcCkK
IHsKICAgICAvLyBUaGlzIHJlcHJlc2VudHMgdGhlIGdhcCBiZXR3ZWVuIHRoZSBiYXNlbGluZSBh
bmQgdGhlIGNsb3Nlc3QgZWRnZSBvZiB0aGUgdW5kZXJsaW5lLgogICAgIGZsb2F0IGdhcCA9IHN0
ZDo6bWF4PGludD4oMSwgc3RkOjpjZWlsKGRlZmF1bHRHYXAgLyAyLjBmKSk7CkBAIC0xMDIsNyAr
MTAyLDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGV4dGVuZEludFRvRmxvYXQoaW50JiBleHRlbmRN
ZSwgZmxvYXQgZXh0ZW5kVG8pCiAgICAgZXh0ZW5kTWUgPSBzdGQ6Om1heChleHRlbmRNZSwgc3Rh
dGljX2Nhc3Q8aW50PihjZWlsZihleHRlbmRUbykpKTsKIH0KIAotR2x5cGhPdmVyZmxvdyB2aXN1
YWxPdmVyZmxvd0ZvckRlY29yYXRpb25zKGNvbnN0IFJlbmRlclN0eWxlJiBsaW5lU3R5bGUsIGNv
bnN0IElubGluZVRleHRCb3gqIGlubGluZVRleHRCb3gpCitHbHlwaE92ZXJmbG93IHZpc3VhbE92
ZXJmbG93Rm9yRGVjb3JhdGlvbnMoY29uc3QgUmVuZGVyU3R5bGUmIGxpbmVTdHlsZSwgY29uc3Qg
TGVnYWN5SW5saW5lVGV4dEJveCogaW5saW5lVGV4dEJveCkKIHsKICAgICBBU1NFUlQoIWlubGlu
ZVRleHRCb3ggfHwgaW5saW5lVGV4dEJveC0+bGluZVN0eWxlKCkgPT0gbGluZVN0eWxlKTsKICAg
ICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL0lubGluZVRleHRCb3hTdHlsZS5o
IGIvU291cmNlL1dlYkNvcmUvc3R5bGUvSW5saW5lVGV4dEJveFN0eWxlLmgKaW5kZXggMGQ4M2Jh
ZjRkMzBkLi5hOWIwNDRjZDJhZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL0lu
bGluZVRleHRCb3hTdHlsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL0lubGluZVRleHRC
b3hTdHlsZS5oCkBAIC0zMCw3ICszMCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAK
LWNsYXNzIElubGluZVRleHRCb3g7CitjbGFzcyBMZWdhY3lJbmxpbmVUZXh0Qm94OwogY2xhc3Mg
UmVuZGVyU3R5bGU7CiBjbGFzcyBUZXh0VW5kZXJsaW5lT2Zmc2V0OwogCkBAIC01MSw3ICs1MSw3
IEBAIHN0cnVjdCBXYXZ5U3Ryb2tlUGFyYW1ldGVycyB7CiAgICAgZmxvYXQgc3RlcCB7IDAgfTsK
IH07CiBXYXZ5U3Ryb2tlUGFyYW1ldGVycyBnZXRXYXZ5U3Ryb2tlUGFyYW1ldGVycyhmbG9hdCBm
b250U2l6ZSk7Ci1HbHlwaE92ZXJmbG93IHZpc3VhbE92ZXJmbG93Rm9yRGVjb3JhdGlvbnMoY29u
c3QgUmVuZGVyU3R5bGUmIGxpbmVTdHlsZSwgY29uc3QgSW5saW5lVGV4dEJveCopOwotZmxvYXQg
Y29tcHV0ZVVuZGVybGluZU9mZnNldChUZXh0VW5kZXJsaW5lUG9zaXRpb24sIFRleHRVbmRlcmxp
bmVPZmZzZXQsIGNvbnN0IEZvbnRNZXRyaWNzJiwgY29uc3QgSW5saW5lVGV4dEJveCosIGZsb2F0
IHRleHREZWNvcmF0aW9uVGhpY2tuZXNzKTsKK0dseXBoT3ZlcmZsb3cgdmlzdWFsT3ZlcmZsb3dG
b3JEZWNvcmF0aW9ucyhjb25zdCBSZW5kZXJTdHlsZSYgbGluZVN0eWxlLCBjb25zdCBMZWdhY3lJ
bmxpbmVUZXh0Qm94Kik7CitmbG9hdCBjb21wdXRlVW5kZXJsaW5lT2Zmc2V0KFRleHRVbmRlcmxp
bmVQb3NpdGlvbiwgVGV4dFVuZGVybGluZU9mZnNldCwgY29uc3QgRm9udE1ldHJpY3MmLCBjb25z
dCBMZWdhY3lJbmxpbmVUZXh0Qm94KiwgZmxvYXQgdGV4dERlY29yYXRpb25UaGlja25lc3MpOwog
ICAgIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQo=
</data>
<flag name="commit-queue"
          id="452040"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430565</attachid>
            <date>2021-06-04 03:37:06 -0700</date>
            <delta_ts>2021-06-04 03:46:33 -0700</delta_ts>
            <desc>patch</desc>
            <filename>legacy-inline-text-box-rename.patch</filename>
            <type>text/plain</type>
            <size>118988</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAxMjRkZWYxNDMxY2UuLmFkZWM2YmVkOTNhZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDIwNiBAQAorMjAyMS0wNi0wNCAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5j
b20+CisKKyAgICAgICAgUmVuYW1lIElubGluZVRleHRCb3ggdG8gTGVnYWN5SW5saW5lVGV4dEJv
eAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2NjMz
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTW9yZSBs
ZWdhY3kgbGluZSBsYXlvdXQgbmFtaW5nLgorCisgICAgICAgICogSGVhZGVycy5jbWFrZToKKyAg
ICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisgICAgICAgICogZG9tL0NvbnRhaW5lck5vZGUuY3BwOgorICAgICAgICAqIGRv
bS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnRNYXJrZXJDb250cm9sbGVyOjphZGRNYXJrZXIpOgorICAgICAgICAqIGRvbS9Qb3NpdGlvbi5j
cHA6CisgICAgICAgICogZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHA6CisgICAgICAg
ICogZWRpdGluZy9FZGl0b3IuaDoKKyAgICAgICAgKiBlZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjpkZWJ1Z1JlbmRlcmVyIGNvbnN0
KToKKyAgICAgICAgKiBlZGl0aW5nL1JlbmRlcmVkUG9zaXRpb24uY3BwOgorICAgICAgICAqIGVk
aXRpbmcvVGV4dEl0ZXJhdG9yLmNwcDoKKyAgICAgICAgKiBlZGl0aW5nL1Zpc2libGVQb3NpdGlv
bi5jcHA6CisgICAgICAgICogbGF5b3V0L1ZlcmlmaWNhdGlvbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpMYXlvdXQ6OmNoZWNrRm9yTWF0Y2hpbmdUZXh0UnVucyk6CisgICAgICAgIChXZWJDb3Jl
OjpMYXlvdXQ6Om91dHB1dE1pc21hdGNoaW5nQ29tcGxleExpbmVJbmZvcm1hdGlvbklmTmVlZGVk
KToKKyAgICAgICAgKiBsYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS90ZXh0L1RleHRV
dGlsLmg6CisgICAgICAgICogbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uUnVu
SXRlcmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OmZpcnN0
VGV4dFJ1bkluVGV4dE9yZGVyRm9yKToKKyAgICAgICAgKiBsYXlvdXQvaW50ZWdyYXRpb24vTGF5
b3V0SW50ZWdyYXRpb25SdW5JdGVyYXRvci5oOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50
ZWdyYXRpb246OlBhdGhUZXh0UnVuOjpsZWdhY3lJbmxpbmVCb3ggY29uc3QpOgorICAgICAgICAq
IGxheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvblJ1bkl0ZXJhdG9yTGVnYWN5UGF0
aC5oOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OlJ1bkl0ZXJhdG9yTGVn
YWN5UGF0aDo6dHJhdmVyc2VOZXh0VGV4dFJ1bkluVGV4dE9yZGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkxheW91dEludGVncmF0aW9uOjpSdW5JdGVyYXRvckxlZ2FjeVBhdGg6OmlubGluZVRleHRC
b3ggY29uc3QpOgorICAgICAgICAqIGxheW91dC9sYXlvdXR0cmVlL0xheW91dEJveC5oOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCb3g6OmlzSW5saW5lVGV4dEJveCBjb25zdCk6CisgICAg
ICAgICogbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0SW5saW5lVGV4dEJveC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpMYXlvdXQ6OklubGluZVRleHRCb3g6OklubGluZVRleHRCb3gpOgorICAgICAg
ICAqIHJlbmRlcmluZy9DYXJldFJlY3RDb21wdXRhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
Ojpjb21wdXRlQ2FyZXRSZWN0Rm9yU1ZHSW5saW5lVGV4dCk6CisgICAgICAgICogcmVuZGVyaW5n
L0VsbGlwc2lzQm94LmNwcDoKKyAgICAgICAgKiByZW5kZXJpbmcvTGVnYWN5SW5saW5lQm94Lmg6
CisgICAgICAgICogcmVuZGVyaW5nL0xlZ2FjeUlubGluZUZsb3dCb3guY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TGVnYWN5SW5saW5lRmxvd0JveDo6YWRkVG9MaW5lKToKKyAgICAgICAgKFdlYkNv
cmU6OkxlZ2FjeUlubGluZUZsb3dCb3g6OnBsYWNlQm94UmFuZ2VJbklubGluZURpcmVjdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lJbmxpbmVGbG93Qm94OjpyZXF1aXJlc0lkZW9ncmFw
aGljQmFzZWxpbmUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5SW5saW5lRmxvd0Jv
eDo6cGxhY2VCb3hlc0luQmxvY2tEaXJlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5
SW5saW5lRmxvd0JveDo6YWRkVGV4dEJveFZpc3VhbE92ZXJmbG93KToKKyAgICAgICAgKFdlYkNv
cmU6OkxlZ2FjeUlubGluZUZsb3dCb3g6OmNvbXB1dGVPdmVyZmxvdyk6CisgICAgICAgIChXZWJD
b3JlOjpMZWdhY3lJbmxpbmVGbG93Qm94Ojpjb21wdXRlT3ZlckFubm90YXRpb25BZGp1c3RtZW50
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUlubGluZUZsb3dCb3g6OmNvbXB1dGVV
bmRlckFubm90YXRpb25BZGp1c3RtZW50IGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvTGVn
YWN5SW5saW5lRmxvd0JveC5oOgorICAgICAgICAqIHJlbmRlcmluZy9MZWdhY3lJbmxpbmVUZXh0
Qm94LmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0
Qm94LmNwcC4KKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUlubGluZVRleHRCb3g6On5MZWdhY3lJ
bmxpbmVUZXh0Qm94KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUlubGluZVRleHRCb3g6Omhh
c1RleHRDb250ZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUlubGluZVRleHRC
b3g6Om1hcmtEaXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lJbmxpbmVUZXh0Qm94Ojps
b2dpY2FsT3ZlcmZsb3dSZWN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUlubGlu
ZVRleHRCb3g6OnNldExvZ2ljYWxPdmVyZmxvd1JlY3QpOgorICAgICAgICAoV2ViQ29yZTo6TGVn
YWN5SW5saW5lVGV4dEJveDo6YmFzZWxpbmVQb3NpdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpMZWdhY3lJbmxpbmVUZXh0Qm94OjpsaW5lSGVpZ2h0IGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkxlZ2FjeUlubGluZVRleHRCb3g6OnNlbGVjdGlvblRvcCBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpMZWdhY3lJbmxpbmVUZXh0Qm94OjpzZWxlY3Rpb25Cb3R0b20gY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6TGVnYWN5SW5saW5lVGV4dEJveDo6c2VsZWN0aW9uSGVpZ2h0IGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUlubGluZVRleHRCb3g6OmlzU2VsZWN0ZWQg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5SW5saW5lVGV4dEJveDo6c2VsZWN0aW9u
U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5SW5saW5lVGV4dEJveDo6dmVyaWZ5U2Vs
ZWN0aW9uU3RhdGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5SW5saW5lVGV4dEJv
eDo6bGluZUZvbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6c25hcHBlZFNlbGVjdGlvblJl
Y3QpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5SW5saW5lVGV4dEJveDo6bG9jYWxTZWxlY3Rp
b25SZWN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUlubGluZVRleHRCb3g6OmRl
bGV0ZUxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5SW5saW5lVGV4dEJveDo6ZXh0cmFj
dExpbmUpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5SW5saW5lVGV4dEJveDo6YXR0YWNoTGlu
ZSk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lJbmxpbmVUZXh0Qm94OjpwbGFjZUVsbGlwc2lz
Qm94KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUlubGluZVRleHRCb3g6OmlzTGluZUJyZWFr
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUlubGluZVRleHRCb3g6Om5vZGVBdFBv
aW50KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUlubGluZVRleHRCb3g6OmVtcGhhc2lzTWFy
a0V4aXN0c0FuZElzQWJvdmUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlTWFya2Vk
VGV4dEZyb21TZWxlY3Rpb25JbkJveCk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lJbmxpbmVU
ZXh0Qm94OjpwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lJbmxpbmVUZXh0Qm94Ojpj
bGFtcGVkT2Zmc2V0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUlubGluZVRleHRC
b3g6OmNsYW1wZWRTdGFydEVuZEZvclN0YXRlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Okxl
Z2FjeUlubGluZVRleHRCb3g6OnNlbGVjdGlvblN0YXJ0RW5kIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkxlZ2FjeUlubGluZVRleHRCb3g6OmhpZ2hsaWdodFN0YXJ0RW5kIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkxlZ2FjeUlubGluZVRleHRCb3g6Omhhc01hcmtlcnMgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6TGVnYWN5SW5saW5lVGV4dEJveDo6cGFpbnRQbGF0Zm9ybURvY3Vt
ZW50TWFya2Vycyk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lJbmxpbmVUZXh0Qm94OjpjYWxj
dWxhdGVVbmlvbk9mQWxsRG9jdW1lbnRNYXJrZXJCb3VuZHMgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6TGVnYWN5SW5saW5lVGV4dEJveDo6Y2FsY3VsYXRlRG9jdW1lbnRNYXJrZXJCb3VuZHMg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5SW5saW5lVGV4dEJveDo6cGFpbnRQbGF0
Zm9ybURvY3VtZW50TWFya2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUlubGluZVRleHRC
b3g6OmNvbGxlY3RNYXJrZWRUZXh0c0ZvckRyYWdnZWRDb250ZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OkxlZ2FjeUlubGluZVRleHRCb3g6OmNvbGxlY3RNYXJrZWRUZXh0c0ZvckRvY3VtZW50TWFy
a2VycyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lJbmxpbmVUZXh0Qm94Ojpjb2xs
ZWN0TWFya2VkVGV4dHNGb3JIaWdobGlnaHRzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Okxl
Z2FjeUlubGluZVRleHRCb3g6OnRleHRPcmlnaW5Gcm9tQm94UmVjdCBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpMZWdhY3lJbmxpbmVUZXh0Qm94OjpwYWludE1hcmtlZFRleHRzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkxlZ2FjeUlubGluZVRleHRCb3g6OnBhaW50TWFya2VkVGV4dEJhY2tncm91
bmQpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5SW5saW5lVGV4dEJveDo6cGFpbnRNYXJrZWRU
ZXh0Rm9yZWdyb3VuZCk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lJbmxpbmVUZXh0Qm94Ojpw
YWludE1hcmtlZFRleHREZWNvcmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUlubGlu
ZVRleHRCb3g6OnBhaW50Q29tcG9zaXRpb25CYWNrZ3JvdW5kKToKKyAgICAgICAgKFdlYkNvcmU6
OkxlZ2FjeUlubGluZVRleHRCb3g6OnBhaW50Q29tcG9zaXRpb25VbmRlcmxpbmVzIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6Om1pcnJvclJUTFNlZ21lbnQpOgorICAgICAgICAoV2ViQ29yZTo6
TGVnYWN5SW5saW5lVGV4dEJveDo6cGFpbnRDb21wb3NpdGlvblVuZGVybGluZSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpMZWdhY3lJbmxpbmVUZXh0Qm94OjpjYXJldE1pbk9mZnNldCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lJbmxpbmVUZXh0Qm94OjpjYXJldE1heE9mZnNl
dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lJbmxpbmVUZXh0Qm94Ojp0ZXh0UG9z
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUlubGluZVRleHRCb3g6Om9mZnNldEZv
clBvc2l0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUlubGluZVRleHRCb3g6
OnBvc2l0aW9uRm9yT2Zmc2V0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUlubGlu
ZVRleHRCb3g6OmNyZWF0ZVRleHRSdW4gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5
SW5saW5lVGV4dEJveDo6dGV4dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lJbmxp
bmVUZXh0Qm94Ojpjb21iaW5lZFRleHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5
SW5saW5lVGV4dEJveDo6ZGVidWdUZXh0U2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2Fj
eUlubGluZVRleHRCb3g6OmV4cGFuc2lvbkJlaGF2aW9yIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkxlZ2FjeUlubGluZVRleHRCb3g6OmJveE5hbWUgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6TGVnYWN5SW5saW5lVGV4dEJveDo6b3V0cHV0TGluZUJveCBjb25zdCk6CisgICAgICAgICog
cmVuZGVyaW5nL0xlZ2FjeUlubGluZVRleHRCb3guaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmguCisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lJ
bmxpbmVUZXh0Qm94OjpMZWdhY3lJbmxpbmVUZXh0Qm94KToKKyAgICAgICAgKFdlYkNvcmU6Okxl
Z2FjeUlubGluZVRleHRCb3g6OnJlbmRlcmVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Okxl
Z2FjeUlubGluZVRleHRCb3g6OmxpbmVTdHlsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpM
ZWdhY3lJbmxpbmVUZXh0Qm94OjpwcmV2VGV4dEJveCBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpMZWdhY3lJbmxpbmVUZXh0Qm94OjpuZXh0VGV4dEJveCBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpMZWdhY3lJbmxpbmVUZXh0Qm94OjpzZXROZXh0VGV4dEJveCk6CisgICAgICAgIChXZWJD
b3JlOjpMZWdhY3lJbmxpbmVUZXh0Qm94OjpzZXRQcmV2aW91c1RleHRCb3gpOgorICAgICAgICAo
V2ViQ29yZTo6TGVnYWN5SW5saW5lVGV4dEJveDo6c3RhcnQgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6TGVnYWN5SW5saW5lVGV4dEJveDo6ZW5kIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkxlZ2FjeUlubGluZVRleHRCb3g6OmxlbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMZWdh
Y3lJbmxpbmVUZXh0Qm94OjpzZXRTdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lJbmxp
bmVUZXh0Qm94OjpzZXRMZW4pOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5SW5saW5lVGV4dEJv
eDo6b2Zmc2V0UnVuKToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUlubGluZVRleHRCb3g6OnRy
dW5jYXRpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5SW5saW5lVGV4dEJveDo6
Y29tcGFyZUJ5U3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5SW5saW5lVGV4dEJveDo6
bG9naWNhbFRvcFZpc3VhbE92ZXJmbG93IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2Fj
eUlubGluZVRleHRCb3g6OmxvZ2ljYWxCb3R0b21WaXN1YWxPdmVyZmxvdyBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpMZWdhY3lJbmxpbmVUZXh0Qm94Ojpsb2dpY2FsTGVmdFZpc3VhbE92ZXJm
bG93IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUlubGluZVRleHRCb3g6OmxvZ2lj
YWxSaWdodFZpc3VhbE92ZXJmbG93IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUlu
bGluZVRleHRCb3g6OmRpcnR5T3duTGluZUJveGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2Fj
eUlubGluZVRleHRCb3g6OnBhaW50TWFya2VkVGV4dHMpOgorICAgICAgICAqIHJlbmRlcmluZy9M
ZWdhY3lMaW5lTGF5b3V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUxpbmVMYXlvdXQ6
OmNvbnN0cnVjdExpbmUpOgorICAgICAgICAoV2ViQ29yZTo6c2V0TG9naWNhbFdpZHRoRm9yVGV4
dFJ1bik6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lMaW5lTGF5b3V0Ojpjb21wdXRlRXhwYW5z
aW9uRm9ySnVzdGlmaWVkVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpleHBhbnNpb25CZWhhdmlv
ckZvcklubGluZVRleHRCb3gpOgorICAgICAgICAoV2ViQ29yZTo6YXBwbHlFeHBhbnNpb25CZWhh
dmlvcik6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lMaW5lTGF5b3V0Ojpjb21wdXRlSW5saW5l
RGlyZWN0aW9uUG9zaXRpb25zRm9yU2VnbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lM
aW5lTGF5b3V0OjpyZW1vdmVJbmxpbmVCb3ggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGVn
YWN5TGluZUxheW91dDo6Y29tcHV0ZUJsb2NrRGlyZWN0aW9uUG9zaXRpb25zRm9yTGluZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpMZWdhY3lMaW5lTGF5b3V0OjpjcmVhdGVMaW5lQm94ZXNGcm9tQmlk
aVJ1bnMpOgorICAgICAgICAqIHJlbmRlcmluZy9MZWdhY3lSb290SW5saW5lQm94LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkxlZ2FjeVJvb3RJbmxpbmVCb3g6OmlzSHlwaGVuYXRlZCBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lSb290SW5saW5lQm94Ojphc2NlbnRBbmREZXNjZW50
Rm9yQm94IGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyQmxvY2tGbG93OjppbmxpbmVTZWxlY3Rpb25HYXBzKToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94
TW9kZWxPYmplY3Q6OnBhaW50TWFza0ZvclRleHRGaWxsQm94KToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVySW5saW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcklubGluZTo6Z2Vu
ZXJhdGVDdWxsZWRMaW5lQm94UmVjdHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
SW5saW5lOjpjdWxsZWRJbmxpbmVWaXN1YWxPdmVyZmxvd0JvdW5kaW5nQm94IGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlcklubGluZTo6ZGlydHlMaW5lQm94ZXMpOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJMaW5lQm94TGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJMaW5lQm94TGlzdDo6ZGlydHlMaW5lc0Zyb21DaGFuZ2VkQ2hpbGQpOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHQ6OmFi
c29sdXRlUXVhZHNGb3JSYW5nZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0
OjpjcmVhdGVUZXh0Qm94KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHQ6OnBvc2l0aW9u
TGluZUJveCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHQuaDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclRleHQ6OmV4dHJhY3RUZXh0Qm94KToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclRleHQ6OmF0dGFjaFRleHRCb3gpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6
cmVtb3ZlVGV4dEJveCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0OjpjcmVhdGVJbmxp
bmVUZXh0Qm94KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHQ6OmZpcnN0VGV4dEJveCBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0OjpsYXN0VGV4dEJveCBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0OjpmaW5kTmV4dElubGluZVRleHRCb3ggY29u
c3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0TGluZUJveGVzLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclRleHRMaW5lQm94ZXM6OmNyZWF0ZUFuZEFwcGVuZExpbmVCb3gp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dExpbmVCb3hlczo6ZXh0cmFjdCk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0TGluZUJveGVzOjphdHRhY2gpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyVGV4dExpbmVCb3hlczo6cmVtb3ZlKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclRleHRMaW5lQm94ZXM6OmRlbGV0ZUFsbCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJU
ZXh0TGluZUJveGVzOjpmaW5kTmV4dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJU
ZXh0TGluZUJveGVzOjpjaGVja0NvbnNpc3RlbmN5IGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyVGV4dExpbmVCb3hlcy5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dExp
bmVCb3hlczo6Zmlyc3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dExpbmVC
b3hlczo6bGFzdCBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQu
Y3BwOgorICAgICAgICAqIHJlbmRlcmluZy9UZXh0RGVjb3JhdGlvblBhaW50ZXIuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlRleHREZWNvcmF0aW9uUGFpbnRlcjo6c2V0SW5saW5lVGV4dEJveCk6Cisg
ICAgICAgICogcmVuZGVyaW5nL1RleHRQYWludGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRl
eHRQYWludGVyOjpjbGVhckdseXBoRGlzcGxheUxpc3RzKToKKyAgICAgICAgKiByZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR0lubGluZVRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZH
SW5saW5lVGV4dDo6Y3JlYXRlVGV4dEJveCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdJbmxpbmVUZXh0Lmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdJbmxpbmVUZXh0
Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0lubGluZVRleHRCb3g6OlNWR0lubGluZVRl
eHRCb3gpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW5saW5lVGV4dEJveDo6ZGlydHlPd25MaW5l
Qm94ZXMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW5saW5lVGV4dEJveDo6ZGlydHlMaW5lQm94
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW5saW5lVGV4dEJveDo6b2Zmc2V0Rm9yUG9zaXRp
b25JbkZyYWdtZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0lubGluZVRleHRCb3g6
OnBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0lubGluZVRleHRCb3g6Om5vZGVBdFBvaW50
KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRleHRCb3guaDoKKyAgICAgICAg
KiByZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclRyZWVBc1RleHQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6d3JpdGVTVkdJbmxpbmVUZXh0Qm94ZXMpOgorICAgICAgICAqIHN0eWxlL0lubGluZVRleHRC
b3hTdHlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb21wdXRlVW5kZXJsaW5lT2Zmc2V0KToK
KyAgICAgICAgKFdlYkNvcmU6OnZpc3VhbE92ZXJmbG93Rm9yRGVjb3JhdGlvbnMpOgorICAgICAg
ICAqIHN0eWxlL0lubGluZVRleHRCb3hTdHlsZS5oOgorCiAyMDIxLTA1LTI3ICBTZXJnaW8gVmls
bGFyIFNlbmluICA8c3ZpbGxhckBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtjc3MtZmxleGJveF0g
U2FuaXRpemUgdGhlIGFzcGVjdCByYXRpbyBoYW5kbGluZyBjb2RlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQpp
bmRleCA1Y2E1MDg0NWU1YzUuLmFkNTFmOTUzNWU3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC0x
NTI3LDExICsxNTI3LDExIEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMK
ICAgICByZW5kZXJpbmcvSGl0VGVzdFJlcXVlc3QuaAogICAgIHJlbmRlcmluZy9IaXRUZXN0UmVz
dWx0LmgKICAgICByZW5kZXJpbmcvSW5saW5lRWxlbWVudEJveC5oCi0gICAgcmVuZGVyaW5nL0lu
bGluZVRleHRCb3guaAogICAgIHJlbmRlcmluZy9MYXllckFuY2VzdG9yQ2xpcHBpbmdTdGFjay5o
CiAgICAgcmVuZGVyaW5nL0xheWVyRnJhZ21lbnQuaAogICAgIHJlbmRlcmluZy9MZWdhY3lJbmxp
bmVCb3guaAogICAgIHJlbmRlcmluZy9MZWdhY3lJbmxpbmVGbG93Qm94LmgKKyAgICByZW5kZXJp
bmcvTGVnYWN5SW5saW5lVGV4dEJveC5oCiAgICAgcmVuZGVyaW5nL0xlZ2FjeUxpbmVMYXlvdXQu
aAogICAgIHJlbmRlcmluZy9MZWdhY3lSb290SW5saW5lQm94LmgKICAgICByZW5kZXJpbmcvTWFy
a2VkVGV4dC5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJj
ZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDhhMjBjODAyNTdlMy4uZGQ4ZDZlYmExZTAzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Tb3VyY2VzLnR4dApAQCAtMjI1Niw3ICsyMjU2LDYgQEAgcmVuZGVyaW5nL0hpdFRlc3RpbmdU
cmFuc2Zvcm1TdGF0ZS5jcHAKIHJlbmRlcmluZy9JbWFnZVF1YWxpdHlDb250cm9sbGVyLmNwcAog
cmVuZGVyaW5nL0lubGluZUVsZW1lbnRCb3guY3BwCiByZW5kZXJpbmcvSW5saW5lSXRlcmF0b3Iu
Y3BwCi1yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAKIHJlbmRlcmluZy9MYXllckFuY2VzdG9y
Q2xpcHBpbmdTdGFjay5jcHAKIHJlbmRlcmluZy9MYXllck92ZXJsYXBNYXAuY3BwCiByZW5kZXJp
bmcvTGF5b3V0RGlzYWxsb3dlZFNjb3BlLmNwcApAQCAtMjI2NSw2ICsyMjY0LDcgQEAgcmVuZGVy
aW5nL0xlZ2FjeUlubGluZUJveC5jcHAKIHJlbmRlcmluZy9MZWdhY3lJbmxpbmVGbG93Qm94LmNw
cAogcmVuZGVyaW5nL0xlZ2FjeUxpbmVMYXlvdXQuY3BwCiByZW5kZXJpbmcvTGVnYWN5Um9vdElu
bGluZUJveC5jcHAKK3JlbmRlcmluZy9MZWdhY3lJbmxpbmVUZXh0Qm94LmNwcAogcmVuZGVyaW5n
L01hcmtlZFRleHQuY3BwCiByZW5kZXJpbmcvTWFya2VkVGV4dFN0eWxlLmNwcAogcmVuZGVyaW5n
L09yZGVySXRlcmF0b3IuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggNmY4MDAzMWYwNzZhLi4xZmYyYjM3M2ZhZjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagor
KysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAg
LTQxNjYsNyArNDE2Niw3IEBACiAJCUJDRTc4OTg2MTEyMEU3QTYwMDYwRUNFNSAvKiBCaWRpUnVu
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0U3ODk4
NTExMjBFN0E2MDA2MEVDRTUgLyogQmlkaVJ1bi5oICovOyB9OwogCQlCQ0U5M0Y0NTE1MTdDNTY3
MDA4Q0NGNzQgLyogUmVuZGVyRnJhZ21lbnRDb250YWluZXJTZXQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRTkzRjQ0MTUxN0M1NjcwMDhDQ0Y3NCAv
KiBSZW5kZXJGcmFnbWVudENvbnRhaW5lclNldC5oICovOyB9OwogCQlCQ0VBNDc5MDA5N0NBQUM4
MDA5NEM5RTQgLyogQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0VBNDc3RDA5N0NBQUM4MDA5NEM5RTQg
LyogQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJQkNFQTQ4NUEwOTdEOTMwMjAwOTRDOUU0IC8qIElu
bGluZVRleHRCb3guaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEJDRUE0ODFCMDk3RDkzMDIwMDk0QzlFNCAvKiBJbmxpbmVUZXh0Qm94LmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQkNFQTQ4NUEwOTdEOTMw
MjAwOTRDOUU0IC8qIExlZ2FjeUlubGluZVRleHRCb3guaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRUE0ODFCMDk3RDkzMDIwMDk0QzlFNCAvKiBMZWdh
Y3lJbmxpbmVUZXh0Qm94LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJQkNFQTQ4NjAwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlckJsb2NrLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0VBNDgyMTA5N0Q5
MzAyMDA5NEM5RTQgLyogUmVuZGVyQmxvY2suaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlCQ0VBNDg2MjA5N0Q5MzAyMDA5NEM5RTQgLyogUmVuZGVy
Qm94LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0VB
NDgyMzA5N0Q5MzAyMDA5NEM5RTQgLyogUmVuZGVyQm94LmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkNFQTQ4NjQwOTdEOTMwMjAwOTRDOUU0IC8q
IFJlbmRlckxpbmVCcmVhay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQkNFQTQ4MjUwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlckxpbmVCcmVhay5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xNDQ4OCw4
ICsxNDQ4OCw4IEBACiAJCUJDRUE0ODEzMDk3RDkzMDIwMDk0QzlFNCAvKiBMZWdhY3lMaW5lTGF5
b3V0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMZWdhY3lMaW5l
TGF5b3V0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNFQTQ4MTUwOTdEOTMw
MjAwOTRDOUU0IC8qIEJyZWFrTGluZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEJyZWFrTGluZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlC
Q0VBNDgxNjA5N0Q5MzAyMDA5NEM5RTQgLyogQnJlYWtMaW5lcy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQnJlYWtMaW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQlCQ0VBNDgxQTA5N0Q5MzAyMDA5NEM5RTQgLyogSW5saW5lVGV4dEJveC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5saW5lVGV4dEJveC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUJDRUE0ODFCMDk3RDkzMDIwMDk0QzlFNCAvKiBJbmxp
bmVUZXh0Qm94LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
MzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbmxpbmVUZXh0
Qm94Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDRUE0ODFBMDk3RDkzMDIwMDk0
QzlFNCAvKiBMZWdhY3lJbmxpbmVUZXh0Qm94LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBMZWdhY3lJbmxpbmVUZXh0Qm94LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQkNFQTQ4MUIwOTdEOTMwMjAwOTRDOUU0IC8qIExlZ2FjeUlubGluZVRleHRC
b3guaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExlZ2FjeUlubGluZVRleHRC
b3guaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNFQTQ4MjAwOTdEOTMwMjAwOTRD
OUU0IC8qIFJlbmRlckJsb2NrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBSZW5kZXJCbG9jay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDRUE0
ODIxMDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJCbG9jay5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUmVuZGVyQmxvY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQkNFQTQ4MjIwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlckJveC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVyQm94LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTMwMTg4LDE0ICszMDE4OCwxMCBAQAogCQkJCTkzMDdGMUQ2MEFGMkQ1
OTAwMERCQTMxQSAvKiBIaXRUZXN0UmVzdWx0LmggKi8sCiAJCQkJQjUxQTJGNDAxN0Q3RDVEQTAw
NzI1MTdBIC8qIEltYWdlUXVhbGl0eUNvbnRyb2xsZXIuY3BwICovLAogCQkJCUI1MUEyRjNFMTdE
N0QzQTQwMDcyNTE3QSAvKiBJbWFnZVF1YWxpdHlDb250cm9sbGVyLmggKi8sCi0JCQkJQThDRkY1
REYwQTE1NUEwNTAwMEE0MjM0IC8qIExlZ2FjeUlubGluZUJveC5jcHAgKi8sCi0JCQkJQThDRkY1
REUwQTE1NUEwNTAwMEE0MjM0IC8qIExlZ2FjeUlubGluZUJveC5oICovLAogCQkJCUI1N0NCNTJD
MTgyQTNFRUQwMDc5QTY0NyAvKiBJbmxpbmVFbGVtZW50Qm94LmNwcCAqLywKIAkJCQlCNTdDQjUy
QjE4MkEzN0Y2MDA3OUE2NDcgLyogSW5saW5lRWxlbWVudEJveC5oICovLAogCQkJCTkzMEM5MERD
MTlDRjk2NTMwMEQ2QzIxQSAvKiBJbmxpbmVJdGVyYXRvci5jcHAgKi8sCiAJCQkJQkNFNzg5MTUx
MTIwRDYwODAwNjBFQ0U1IC8qIElubGluZUl0ZXJhdG9yLmggKi8sCi0JCQkJQkNFQTQ4MUEwOTdE
OTMwMjAwOTRDOUU0IC8qIElubGluZVRleHRCb3guY3BwICovLAotCQkJCUJDRUE0ODFCMDk3RDkz
MDIwMDk0QzlFNCAvKiBJbmxpbmVUZXh0Qm94LmggKi8sCiAJCQkJMEZFQzEyMEIyMkJGMkNDNzAw
NEU5RDM1IC8qIExheWVyQW5jZXN0b3JDbGlwcGluZ1N0YWNrLmNwcCAqLywKIAkJCQkwRkVDMTIw
OTIyQkYyQ0M3MDA0RTlEMzUgLyogTGF5ZXJBbmNlc3RvckNsaXBwaW5nU3RhY2suaCAqLywKIAkJ
CQk1ODAzNzE2MzFBNjZGMUQzMDBCQUY1MTkgLyogTGF5ZXJGcmFnbWVudC5oICovLApAQCAtMzAy
MDUsOCArMzAyMDEsMTIgQEAKIAkJCQk5QkQxRjY4MDFGMDQ2MkI4MDAxQzlDREQgLyogTGF5b3V0
RGlzYWxsb3dlZFNjb3BlLmggKi8sCiAJCQkJQTEyMEFDQTExM0Y5OTg0NjAwRkU0QUM3IC8qIExh
eW91dFJlcGFpbnRlci5jcHAgKi8sCiAJCQkJQTEyMEFDQTAxM0Y5OTgzNzAwRkU0QUM3IC8qIExh
eW91dFJlcGFpbnRlci5oICovLAorCQkJCUE4Q0ZGNURGMEExNTVBMDUwMDBBNDIzNCAvKiBMZWdh
Y3lJbmxpbmVCb3guY3BwICovLAorCQkJCUE4Q0ZGNURFMEExNTVBMDUwMDBBNDIzNCAvKiBMZWdh
Y3lJbmxpbmVCb3guaCAqLywKIAkJCQlBOENGRjVERDBBMTU1QTA1MDAwQTQyMzQgLyogTGVnYWN5
SW5saW5lRmxvd0JveC5jcHAgKi8sCiAJCQkJQThDRkY1REMwQTE1NUEwNTAwMEE0MjM0IC8qIExl
Z2FjeUlubGluZUZsb3dCb3guaCAqLywKKwkJCQlCQ0VBNDgxQTA5N0Q5MzAyMDA5NEM5RTQgLyog
TGVnYWN5SW5saW5lVGV4dEJveC5jcHAgKi8sCisJCQkJQkNFQTQ4MUIwOTdEOTMwMjAwOTRDOUU0
IC8qIExlZ2FjeUlubGluZVRleHRCb3guaCAqLywKIAkJCQlCQ0VBNDgxMzA5N0Q5MzAyMDA5NEM5
RTQgLyogTGVnYWN5TGluZUxheW91dC5jcHAgKi8sCiAJCQkJRTRBMUFDNzgyMkZBRkQ1MDAwMTdC
NzVCIC8qIExlZ2FjeUxpbmVMYXlvdXQuaCAqLywKIAkJCQlBOENGRjVFMDBBMTU1QTA1MDAwQTQy
MzQgLyogTGVnYWN5Um9vdElubGluZUJveC5jcHAgKi8sCkBAIC0zMzE2MSw3ICszMzE2MSw3IEBA
CiAJCQkJRTREMzNGM0IyNTJBRUVDRDAwODM3RDA1IC8qIElubGluZVJ1bkFuZE9mZnNldC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNkYzNjBFNTAyMzk5OTQyMTAwMTUxMkE3IC8qIElubGluZVNvZnRM
aW5lQnJlYWtJdGVtLmggaW4gSGVhZGVycyAqLywKIAkJCQlBQTRDM0E3NzBCMkIxNjc5MDAyMzM0
QTIgLyogSW5saW5lU3R5bGVTaGVldE93bmVyLmggaW4gSGVhZGVycyAqLywKLQkJCQlCQ0VBNDg1
QTA5N0Q5MzAyMDA5NEM5RTQgLyogSW5saW5lVGV4dEJveC5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
QkNFQTQ4NUEwOTdEOTMwMjAwOTRDOUU0IC8qIExlZ2FjeUlubGluZVRleHRCb3guaCBpbiBIZWFk
ZXJzICovLAogCQkJCTFDMDEwNzAxMTkyNTk0REYwMDhBNDIwMSAvKiBJbmxpbmVUZXh0Qm94U3R5
bGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTZGMUNDMURFMjI1RjhCNDkwMDcyMEFEMiAvKiBJbmxp
bmVUZXh0SXRlbS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUNFODg2NDEyNjEwNUJGMjAwMEM4MTZD
IC8qIEluTWVtb3J5RGlzcGxheUxpc3QuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0Nv
bnRhaW5lck5vZGUuY3BwCmluZGV4IGE1YjQzMDIzODRjYy4uN2Y0MjEwYjE4YThjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwCkBAIC0zOCwxMCArMzgsMTAgQEAKICNpbmNsdWRl
ICJIVE1MT3B0aW9uc0NvbGxlY3Rpb24uaCIKICNpbmNsdWRlICJIVE1MU2xvdEVsZW1lbnQuaCIK
ICNpbmNsdWRlICJIVE1MVGFibGVSb3dzQ29sbGVjdGlvbi5oIgotI2luY2x1ZGUgIklubGluZVRl
eHRCb3guaCIKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRl
ICJKU05vZGUuaCIKICNpbmNsdWRlICJMYWJlbHNOb2RlTGlzdC5oIgorI2luY2x1ZGUgIkxlZ2Fj
eUlubGluZVRleHRCb3guaCIKICNpbmNsdWRlICJMZWdhY3lSb290SW5saW5lQm94LmgiCiAjaW5j
bHVkZSAiTXV0YXRpb25FdmVudC5oIgogI2luY2x1ZGUgIk5hbWVOb2RlTGlzdC5oIgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50TWFya2VyQ29udHJvbGxlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmNwcAppbmRleCBjZWQ3
MTMxOTEyYWIuLjNmNjQ0ZjAxYjc1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50TWFya2VyQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50TWFya2VyQ29udHJvbGxlci5jcHAKQEAgLTI1NSw3ICsyNTUsNyBAQCB2b2lkIERvY3VtZW50
TWFya2VyQ29udHJvbGxlcjo6YWRkTWFya2VyKE5vZGUmIG5vZGUsIERvY3VtZW50TWFya2VyJiYg
bmV3TWFya2VyKQogCiAjaWYgRU5BQkxFKExBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCiAgICAg
aWYgKGF1dG8qIHJlbmRlcmVyID0gbm9kZS5yZW5kZXJlcigpKSB7Ci0gICAgICAgIC8vIEZJWE1F
OiBGYWN0b3IgdGhlIG1hcmtlciBwYWludGluZyBjb2RlIG91dCBvZiBJbmxpbmVUZXh0Qm94IGFu
ZCB0ZWFjaCBzaW1wbGUgbGluZSBsYXlvdXQgdG8gdXNlIGl0LgorICAgICAgICAvLyBGSVhNRTog
RmFjdG9yIHRoZSBtYXJrZXIgcGFpbnRpbmcgY29kZSBvdXQgb2YgTGVnYWN5SW5saW5lVGV4dEJv
eCBhbmQgdGVhY2ggc2ltcGxlIGxpbmUgbGF5b3V0IHRvIHVzZSBpdC4KICAgICAgICAgaWYgKGF1
dG8qIGxpbmVMYXlvdXQgPSBMYXlvdXRJbnRlZ3JhdGlvbjo6TGluZUxheW91dDo6Y29udGFpbmlu
ZygqcmVuZGVyZXIpKQogICAgICAgICAgICAgbGluZUxheW91dC0+ZmxvdygpLmVuc3VyZUxpbmVC
b3hlcygpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uY3BwCmluZGV4IGUzMGMxMjdlNTJlYi4u
MzNjODZjY2Y5NWViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5jcHAKQEAgLTM4LDkgKzM4LDkgQEAK
ICNpbmNsdWRlICJJbmxpbmVFbGVtZW50Qm94LmgiCiAjaW5jbHVkZSAiSW5saW5lSXRlcmF0b3Iu
aCIKICNpbmNsdWRlICJJbmxpbmVSdW5BbmRPZmZzZXQuaCIKLSNpbmNsdWRlICJJbmxpbmVUZXh0
Qm94LmgiCiAjaW5jbHVkZSAiTGF5b3V0SW50ZWdyYXRpb25MaW5lSXRlcmF0b3IuaCIKICNpbmNs
dWRlICJMYXlvdXRJbnRlZ3JhdGlvblJ1bkl0ZXJhdG9yLmgiCisjaW5jbHVkZSAiTGVnYWN5SW5s
aW5lVGV4dEJveC5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJOb2RlVHJhdmVy
c2FsLmgiCiAjaW5jbHVkZSAiUG9zaXRpb25JdGVyYXRvci5oIgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcAppbmRleCAxMGFmMTNhNTgzNWQuLmU0
Y2JhZTlmNTIzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVF
ZGl0Q29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0
Q29tbWFuZC5jcHAKQEAgLTQ3LDEzICs0NywxMyBAQAogI2luY2x1ZGUgIkhUTUxMSUVsZW1lbnQu
aCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJIVE1MU3BhbkVsZW1lbnQuaCIK
LSNpbmNsdWRlICJJbmxpbmVUZXh0Qm94LmgiCiAjaW5jbHVkZSAiSW5zZXJ0SW50b1RleHROb2Rl
Q29tbWFuZC5oIgogI2luY2x1ZGUgIkluc2VydExpbmVCcmVha0NvbW1hbmQuaCIKICNpbmNsdWRl
ICJJbnNlcnROb2RlQmVmb3JlQ29tbWFuZC5oIgogI2luY2x1ZGUgIkluc2VydFBhcmFncmFwaFNl
cGFyYXRvckNvbW1hbmQuaCIKICNpbmNsdWRlICJJbnNlcnRUZXh0Q29tbWFuZC5oIgogI2luY2x1
ZGUgIkxheW91dEludGVncmF0aW9uUnVuSXRlcmF0b3IuaCIKKyNpbmNsdWRlICJMZWdhY3lJbmxp
bmVUZXh0Qm94LmgiCiAjaW5jbHVkZSAiTWVyZ2VJZGVudGljYWxFbGVtZW50c0NvbW1hbmQuaCIK
ICNpbmNsdWRlICJOb2RlVHJhdmVyc2FsLmgiCiAjaW5jbHVkZSAiUmVtb3ZlTm9kZUNvbW1hbmQu
aCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmggYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCmluZGV4IDE1OGI4N2NjMThlZC4uNjcyMjgyYTcwNzkz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKQEAgLTM4OSw3ICszODksNyBAQCBwdWJsaWM6CiAg
ICAgV0VCQ09SRV9FWFBPUlQgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gY29tcG9zaXRpb25S
YW5nZSgpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgZ2V0Q29tcG9zaXRpb25TZWxl
Y3Rpb24odW5zaWduZWQmIHNlbGVjdGlvblN0YXJ0LCB1bnNpZ25lZCYgc2VsZWN0aW9uRW5kKSBj
b25zdDsKIAotICAgIC8vIGdldHRpbmcgaW50ZXJuYXRpb25hbCB0ZXh0IGlucHV0IGNvbXBvc2l0
aW9uIHN0YXRlIChmb3IgdXNlIGJ5IElubGluZVRleHRCb3gpCisgICAgLy8gZ2V0dGluZyBpbnRl
cm5hdGlvbmFsIHRleHQgaW5wdXQgY29tcG9zaXRpb24gc3RhdGUgKGZvciB1c2UgYnkgTGVnYWN5
SW5saW5lVGV4dEJveCkKICAgICBUZXh0KiBjb21wb3NpdGlvbk5vZGUoKSBjb25zdCB7IHJldHVy
biBtX2NvbXBvc2l0aW9uTm9kZS5nZXQoKTsgfQogICAgIHVuc2lnbmVkIGNvbXBvc2l0aW9uU3Rh
cnQoKSBjb25zdCB7IHJldHVybiBtX2NvbXBvc2l0aW9uU3RhcnQ7IH0KICAgICB1bnNpZ25lZCBj
b21wb3NpdGlvbkVuZCgpIGNvbnN0IHsgcmV0dXJuIG1fY29tcG9zaXRpb25FbmQ7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAKaW5kZXggOTFmZmIzZjVmZTJmLi5m
Y2Q4MGQxY2JjYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxl
Y3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3Bw
CkBAIC01Myw3ICs1Myw3IEBACiAjaW5jbHVkZSAiSGl0VGVzdFJlcXVlc3QuaCIKICNpbmNsdWRl
ICJIaXRUZXN0UmVzdWx0LmgiCiAjaW5jbHVkZSAiSW5saW5lUnVuQW5kT2Zmc2V0LmgiCi0jaW5j
bHVkZSAiSW5saW5lVGV4dEJveC5oIgorI2luY2x1ZGUgIkxlZ2FjeUlubGluZVRleHRCb3guaCIK
ICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlJhbmdl
LmgiCkBAIC0xODUwLDcgKzE4NTAsNyBAQCB2b2lkIEZyYW1lU2VsZWN0aW9uOjpkZWJ1Z1JlbmRl
cmVyKFJlbmRlck9iamVjdCogcmVuZGVyZXIsIGJvb2wgc2VsZWN0ZWQpIGNvbnN0CiAgICAgICAg
ICAgICAgICAgb2Zmc2V0ID0gbV9zZWxlY3Rpb24uZW5kKCkuY29tcHV0ZU9mZnNldEluQ29udGFp
bmVyTm9kZSgpOwogCiAgICAgICAgICAgICBpbnQgcG9zOwotICAgICAgICAgICAgSW5saW5lVGV4
dEJveCogYm94ID0gdGV4dFJlbmRlcmVyLmZpbmROZXh0SW5saW5lVGV4dEJveChvZmZzZXQsIHBv
cyk7CisgICAgICAgICAgICBMZWdhY3lJbmxpbmVUZXh0Qm94KiBib3ggPSB0ZXh0UmVuZGVyZXIu
ZmluZE5leHRJbmxpbmVUZXh0Qm94KG9mZnNldCwgcG9zKTsKICAgICAgICAgICAgIHRleHQgPSB0
ZXh0LnN1YnN0cmluZyhib3gtPnN0YXJ0KCksIGJveC0+bGVuKCkpOwogICAgICAgICAgICAgCiAg
ICAgICAgICAgICBTdHJpbmcgc2hvdzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvUmVuZGVyZWRQb3NpdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlbmRlcmVk
UG9zaXRpb24uY3BwCmluZGV4IGRhYWRkZTk3Y2VhMC4uNDZlMzAyOTA0ZjJiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlbmRlcmVkUG9zaXRpb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvUmVuZGVyZWRQb3NpdGlvbi5jcHAKQEAgLTMzLDcgKzMzLDcgQEAK
IAogI2luY2x1ZGUgIkNhcmV0UmVjdENvbXB1dGF0aW9uLmgiCiAjaW5jbHVkZSAiSW5saW5lUnVu
QW5kT2Zmc2V0LmgiCi0jaW5jbHVkZSAiSW5saW5lVGV4dEJveC5oIgorI2luY2x1ZGUgIkxlZ2Fj
eUlubGluZVRleHRCb3guaCIKICNpbmNsdWRlICJWaXNpYmxlUG9zaXRpb24uaCIKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRl
cmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCmluZGV4
IDk0YjQyZjk3NTllNy4uMjYzYTkwMDA2Y2IwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1RleHRJdGVyYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0
SXRlcmF0b3IuY3BwCkBAIC00NCw3ICs0NCw3IEBACiAjaW5jbHVkZSAiSFRNTFNsb3RFbGVtZW50
LmgiCiAjaW5jbHVkZSAiSFRNTFRleHRBcmVhRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxUZXh0
Rm9ybUNvbnRyb2xFbGVtZW50LmgiCi0jaW5jbHVkZSAiSW5saW5lVGV4dEJveC5oIgorI2luY2x1
ZGUgIkxlZ2FjeUlubGluZVRleHRCb3guaCIKICNpbmNsdWRlICJOb2RlVHJhdmVyc2FsLmgiCiAj
aW5jbHVkZSAiUmFuZ2UuaCIKICNpbmNsdWRlICJSZW5kZXJJbWFnZS5oIgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlUG9zaXRpb24uY3BwIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9WaXNpYmxlUG9zaXRpb24uY3BwCmluZGV4IDdlNzY4YzViYjI1MS4uMzYwZjUx
N2I4ZjMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVQb3NpdGlv
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlUG9zaXRpb24uY3BwCkBA
IC0zNiw3ICszNiw2IEBACiAjaW5jbHVkZSAiSFRNTEh0bWxFbGVtZW50LmgiCiAjaW5jbHVkZSAi
SFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiSW5saW5lUnVuQW5kT2Zmc2V0LmgiCi0jaW5jbHVkZSAi
SW5saW5lVGV4dEJveC5oIgogI2luY2x1ZGUgIkxheW91dEludGVncmF0aW9uTGluZUl0ZXJhdG9y
LmgiCiAjaW5jbHVkZSAiTGF5b3V0SW50ZWdyYXRpb25SdW5JdGVyYXRvci5oIgogI2luY2x1ZGUg
IkxvZ2dpbmcuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9WZXJpZmljYXRp
b24uY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L1ZlcmlmaWNhdGlvbi5jcHAKaW5kZXggNzM4
M2U0MWJkMmExLi4yZDdiYTFkZWE4YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9WZXJpZmljYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9WZXJpZmljYXRp
b24uY3BwCkBAIC0zMSwxMiArMzEsMTIgQEAKICNpZm5kZWYgTkRFQlVHCiAjaW5jbHVkZSAiQmxv
Y2tGb3JtYXR0aW5nU3RhdGUuaCIKICNpbmNsdWRlICJJbmxpbmVGb3JtYXR0aW5nU3RhdGUuaCIK
LSNpbmNsdWRlICJJbmxpbmVUZXh0Qm94LmgiCiAjaW5jbHVkZSAiTGF5b3V0Qm94LmgiCiAjaW5j
bHVkZSAiTGF5b3V0Qm94R2VvbWV0cnkuaCIKICNpbmNsdWRlICJMYXlvdXRDb250YWluZXJCb3gu
aCIKICNpbmNsdWRlICJMYXlvdXRDb250ZXh0LmgiCiAjaW5jbHVkZSAiTGF5b3V0VHJlZUJ1aWxk
ZXIuaCIKKyNpbmNsdWRlICJMZWdhY3lJbmxpbmVUZXh0Qm94LmgiCiAjaW5jbHVkZSAiUmVuZGVy
Qm94LmgiCiAjaW5jbHVkZSAiUmVuZGVySW5saW5lLmgiCiAjaW5jbHVkZSAiUmVuZGVyTGluZUJy
ZWFrLmgiCkBAIC03OSw3ICs3OSw3IEBAIHN0YXRpYyBib29sIGNoZWNrRm9yTWF0Y2hpbmdOb25U
ZXh0UnVucyhjb25zdCBMaW5lUnVuJiBsaW5lUnVuLCBjb25zdCBXZWJDb3JlOjpMCiB9CiAKIAot
c3RhdGljIGJvb2wgY2hlY2tGb3JNYXRjaGluZ1RleHRSdW5zKGNvbnN0IExpbmVSdW4mIGxpbmVS
dW4sIGNvbnN0IFdlYkNvcmU6OklubGluZVRleHRCb3gmIGlubGluZVRleHRCb3gpCitzdGF0aWMg
Ym9vbCBjaGVja0Zvck1hdGNoaW5nVGV4dFJ1bnMoY29uc3QgTGluZVJ1biYgbGluZVJ1biwgY29u
c3QgV2ViQ29yZTo6TGVnYWN5SW5saW5lVGV4dEJveCYgaW5saW5lVGV4dEJveCkKIHsKICAgICBp
ZiAoIWxpbmVSdW4udGV4dCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xMzQsNyArMTM0
LDcgQEAgc3RhdGljIGJvb2wgb3V0cHV0TWlzbWF0Y2hpbmdDb21wbGV4TGluZUluZm9ybWF0aW9u
SWZOZWVkZWQoVGV4dFN0cmVhbSYgc3RyZWFtLAogICAgIGZvciAodW5zaWduZWQgaW5saW5lQm94
SW5kZXggPSAwOyBpbmxpbmVCb3hJbmRleCA8IGlubGluZUJveGVzLnNpemUoKSAmJiBydW5JbmRl
eCA8IGxpbmVSdW5zLnNpemUoKTsgKytpbmxpbmVCb3hJbmRleCkgewogICAgICAgICBhdXRvJiBs
aW5lUnVuID0gbGluZVJ1bnNbcnVuSW5kZXhdOwogICAgICAgICBhdXRvKiBpbmxpbmVCb3ggPSBp
bmxpbmVCb3hlc1tpbmxpbmVCb3hJbmRleF07Ci0gICAgICAgIGF1dG8qIGlubGluZVRleHRCb3gg
PSBpczxXZWJDb3JlOjpJbmxpbmVUZXh0Qm94PihpbmxpbmVCb3gpID8gZG93bmNhc3Q8V2ViQ29y
ZTo6SW5saW5lVGV4dEJveD4oaW5saW5lQm94KSA6IG51bGxwdHI7CisgICAgICAgIGF1dG8qIGlu
bGluZVRleHRCb3ggPSBpczxXZWJDb3JlOjpMZWdhY3lJbmxpbmVUZXh0Qm94PihpbmxpbmVCb3gp
ID8gZG93bmNhc3Q8V2ViQ29yZTo6TGVnYWN5SW5saW5lVGV4dEJveD4oaW5saW5lQm94KSA6IG51
bGxwdHI7CiAgICAgICAgIGJvb2wgbWF0Y2hpbmdSdW5zID0gaW5saW5lVGV4dEJveCA/IGNoZWNr
Rm9yTWF0Y2hpbmdUZXh0UnVucyhsaW5lUnVuLCAqaW5saW5lVGV4dEJveCkgOiBjaGVja0Zvck1h
dGNoaW5nTm9uVGV4dFJ1bnMobGluZVJ1biwgKmlubGluZUJveCk7CiAKICAgICAgICAgaWYgKCFt
YXRjaGluZ1J1bnMpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0
aW5nQ29udGV4dHMvaW5saW5lL3RleHQvVGV4dFV0aWwuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL3RleHQvVGV4dFV0aWwuaAppbmRleCAxZjU4NGZh
Nzk4MWIuLmUzNDZhYjNmNmIyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zv
cm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvdGV4dC9UZXh0VXRpbC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL3RleHQvVGV4dFV0aWwuaApAQCAt
MzcsNyArMzcsNyBAQCBjbGFzcyBSZW5kZXJTdHlsZTsKIAogbmFtZXNwYWNlIExheW91dCB7CiAK
LWNsYXNzIElubGluZVRleHRCb3g7CitjbGFzcyBMZWdhY3lJbmxpbmVUZXh0Qm94OwogY2xhc3Mg
SW5saW5lVGV4dEl0ZW07CiAKIGNsYXNzIFRleHRVdGlsIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvblJ1bkl0ZXJhdG9yLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvblJ1
bkl0ZXJhdG9yLmNwcAppbmRleCBkZTFhMWY1N2ZiNjYuLmE4N2ZjZTkyMTRmYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uUnVu
SXRlcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlv
dXRJbnRlZ3JhdGlvblJ1bkl0ZXJhdG9yLmNwcApAQCAtMTcxLDcgKzE3MSw3IEBAIFRleHRSdW5J
dGVyYXRvciBmaXJzdFRleHRSdW5JblRleHRPcmRlckZvcihjb25zdCBSZW5kZXJUZXh0JiB0ZXh0
KQogICAgICAgICBmb3IgKGF1dG8qIHRleHRCb3ggPSB0ZXh0LmZpcnN0VGV4dEJveCgpOyB0ZXh0
Qm94OyB0ZXh0Qm94ID0gdGV4dEJveC0+bmV4dFRleHRCb3goKSkKICAgICAgICAgICAgIHNvcnRl
ZFRleHRCb3hlcy5hcHBlbmQodGV4dEJveCk7CiAgICAgICAgIHN0ZDo6c29ydChzb3J0ZWRUZXh0
Qm94ZXMuYmVnaW4oKSwgc29ydGVkVGV4dEJveGVzLmVuZCgpLCBbXShhdXRvKiBhLCBhdXRvKiBi
KSB7Ci0gICAgICAgICAgICByZXR1cm4gSW5saW5lVGV4dEJveDo6Y29tcGFyZUJ5U3RhcnQoZG93
bmNhc3Q8SW5saW5lVGV4dEJveD4oYSksIGRvd25jYXN0PElubGluZVRleHRCb3g+KGIpKTsKKyAg
ICAgICAgICAgIHJldHVybiBMZWdhY3lJbmxpbmVUZXh0Qm94Ojpjb21wYXJlQnlTdGFydChkb3du
Y2FzdDxMZWdhY3lJbmxpbmVUZXh0Qm94PihhKSwgZG93bmNhc3Q8TGVnYWN5SW5saW5lVGV4dEJv
eD4oYikpOwogICAgICAgICB9KTsKICAgICAgICAgYXV0byogZmlyc3QgPSBzb3J0ZWRUZXh0Qm94
ZXNbMF07CiAgICAgICAgIHJldHVybiB7IFJ1bkl0ZXJhdG9yTGVnYWN5UGF0aCB7IGZpcnN0LCBX
VEZNb3ZlKHNvcnRlZFRleHRCb3hlcyksIDAgfSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uUnVuSXRlcmF0b3IuaCBiL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvblJ1bkl0ZXJh
dG9yLmgKaW5kZXggOTdhZTY4YzI0NDBiLi4xZGQ5NzUwMTFmMzIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvblJ1bkl0ZXJhdG9y
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0
aW9uUnVuSXRlcmF0b3IuaApAQCAtMTEzLDcgKzExMyw3IEBAIHB1YmxpYzoKICAgICBib29sIGlz
U2VsZWN0YWJsZSh1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgZW5kKSBjb25zdDsKICAgICBMYXlv
dXRSZWN0IHNlbGVjdGlvblJlY3QodW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGVuZCkgY29uc3Q7
CiAKLSAgICBJbmxpbmVUZXh0Qm94KiBsZWdhY3lJbmxpbmVCb3goKSBjb25zdCB7IHJldHVybiBk
b3duY2FzdDxJbmxpbmVUZXh0Qm94PihQYXRoUnVuOjpsZWdhY3lJbmxpbmVCb3goKSk7IH0KKyAg
ICBMZWdhY3lJbmxpbmVUZXh0Qm94KiBsZWdhY3lJbmxpbmVCb3goKSBjb25zdCB7IHJldHVybiBk
b3duY2FzdDxMZWdhY3lJbmxpbmVUZXh0Qm94PihQYXRoUnVuOjpsZWdhY3lJbmxpbmVCb3goKSk7
IH0KIH07CiAKIGNsYXNzIFJ1bkl0ZXJhdG9yIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvblJ1bkl0ZXJhdG9yTGVnYWN5UGF0
aC5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9u
UnVuSXRlcmF0b3JMZWdhY3lQYXRoLmgKaW5kZXggNDA1MjMyZWU3NjBmLi41NTZmMDVkZTc3MTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRl
Z3JhdGlvblJ1bkl0ZXJhdG9yTGVnYWN5UGF0aC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvblJ1bkl0ZXJhdG9yTGVnYWN5UGF0aC5oCkBA
IC0yNSw3ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiSW5saW5lVGV4dEJv
eC5oIgorI2luY2x1ZGUgIkxlZ2FjeUlubGluZVRleHRCb3guaCIKICNpbmNsdWRlICJMZWdhY3lS
b290SW5saW5lQm94LmgiCiAjaW5jbHVkZSAiUmVuZGVyVGV4dC5oIgogI2luY2x1ZGUgPHd0Zi9S
ZWZDb3VudGVkQXJyYXkuaD4KQEAgLTg3LDcgKzg3LDcgQEAgcHVibGljOgogICAgIHsKICAgICAg
ICAgaWYgKCFtX2xvZ2ljYWxPcmRlckNhY2hlLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgdHJh
dmVyc2VOZXh0SW5saW5lQm94SW5DYWNoZU9yZGVyKCk7Ci0gICAgICAgICAgICBBU1NFUlQoIW1f
aW5saW5lQm94IHx8IGlzPElubGluZVRleHRCb3g+KG1faW5saW5lQm94KSk7CisgICAgICAgICAg
ICBBU1NFUlQoIW1faW5saW5lQm94IHx8IGlzPExlZ2FjeUlubGluZVRleHRCb3g+KG1faW5saW5l
Qm94KSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgdHJhdmVyc2VO
ZXh0VGV4dFJ1bigpOwpAQCAtMTIzLDcgKzEyMyw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBMZWdh
Y3lSb290SW5saW5lQm94JiByb290SW5saW5lQm94KCkgY29uc3QgeyByZXR1cm4gbV9pbmxpbmVC
b3gtPnJvb3QoKTsgfQogCiBwcml2YXRlOgotICAgIGNvbnN0IElubGluZVRleHRCb3gqIGlubGlu
ZVRleHRCb3goKSBjb25zdCB7IHJldHVybiBkb3duY2FzdDxJbmxpbmVUZXh0Qm94PihtX2lubGlu
ZUJveCk7IH0KKyAgICBjb25zdCBMZWdhY3lJbmxpbmVUZXh0Qm94KiBpbmxpbmVUZXh0Qm94KCkg
Y29uc3QgeyByZXR1cm4gZG93bmNhc3Q8TGVnYWN5SW5saW5lVGV4dEJveD4obV9pbmxpbmVCb3gp
OyB9CiAKICAgICBzdGF0aWMgVmVjdG9yPGNvbnN0IExlZ2FjeUlubGluZUJveCo+IGlubGluZUJv
eGVzSW5Mb2dpY2FsT3JkZXIoY29uc3QgTGVnYWN5Um9vdElubGluZUJveCYgcm9vdCkKICAgICB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRCb3gu
aCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dEJveC5oCmluZGV4IGY5
ZDZiZjUxMTgyZS4uNTg1NWMwYjQ4NGExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvbGF5b3V0dHJlZS9MYXlvdXRCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5
b3V0dHJlZS9MYXlvdXRCb3guaApAQCAtNjEsNyArNjEsNyBAQCBwdWJsaWM6CiAKICAgICBlbnVt
IEJhc2VUeXBlRmxhZyA6IHVpbnQ4X3QgewogICAgICAgICBCb3hGbGFnICAgICAgICAgICAgICAg
ICAgICA9IDEgPDwgMCwKLSAgICAgICAgSW5saW5lVGV4dEJveEZsYWcgICAgICAgICAgPSAxIDw8
IDEsCisgICAgICAgIExlZ2FjeUlubGluZVRleHRCb3hGbGFnICAgICAgICAgID0gMSA8PCAxLAog
ICAgICAgICBMaW5lQnJlYWtCb3hGbGFnICAgICAgICAgICA9IDEgPDwgMiwKICAgICAgICAgUmVw
bGFjZWRCb3hGbGFnICAgICAgICAgICAgPSAxIDw8IDMsCiAgICAgICAgIEluaXRpYWxDb250YWlu
aW5nQmxvY2tGbGFnID0gMSA8PCA0LApAQCAtMTUyLDcgKzE1Miw3IEBAIHB1YmxpYzoKICAgICBC
b3gqIG5leHRTaWJsaW5nKCkgeyByZXR1cm4gbV9uZXh0U2libGluZzsgfQogCiAgICAgYm9vbCBp
c0NvbnRhaW5lckJveCgpIGNvbnN0IHsgcmV0dXJuIGJhc2VUeXBlRmxhZ3MoKS5jb250YWlucyhD
b250YWluZXJCb3hGbGFnKTsgfQotICAgIGJvb2wgaXNJbmxpbmVUZXh0Qm94KCkgY29uc3QgeyBy
ZXR1cm4gYmFzZVR5cGVGbGFncygpLmNvbnRhaW5zKElubGluZVRleHRCb3hGbGFnKTsgfQorICAg
IGJvb2wgaXNJbmxpbmVUZXh0Qm94KCkgY29uc3QgeyByZXR1cm4gYmFzZVR5cGVGbGFncygpLmNv
bnRhaW5zKExlZ2FjeUlubGluZVRleHRCb3hGbGFnKTsgfQogICAgIGJvb2wgaXNMaW5lQnJlYWtC
b3goKSBjb25zdCB7IHJldHVybiBiYXNlVHlwZUZsYWdzKCkuY29udGFpbnMoTGluZUJyZWFrQm94
RmxhZyk7IH0KICAgICBib29sIGlzUmVwbGFjZWRCb3goKSBjb25zdCB7IHJldHVybiBiYXNlVHlw
ZUZsYWdzKCkuY29udGFpbnMoUmVwbGFjZWRCb3hGbGFnKTsgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRJbmxpbmVUZXh0Qm94LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dElubGluZVRleHRCb3guY3BwCmlu
ZGV4IDk1ODdiNjk1NmM2OS4uMzRkYzQ3NjM0MDNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRJbmxpbmVUZXh0Qm94LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRJbmxpbmVUZXh0Qm94LmNwcApAQCAtMzcs
NyArMzcsNyBAQCBuYW1lc3BhY2UgTGF5b3V0IHsKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1Q
TChJbmxpbmVUZXh0Qm94KTsKIAogSW5saW5lVGV4dEJveDo6SW5saW5lVGV4dEJveChTdHJpbmcg
Y29udGVudCwgYm9vbCBjYW5Vc2VTaW1wbGlmaWVkQ29udGVudE1lYXN1cmluZywgUmVuZGVyU3R5
bGUmJiBzdHlsZSkKLSAgICA6IEJveCh7IH0sIFdURk1vdmUoc3R5bGUpLCBCb3g6OklubGluZVRl
eHRCb3hGbGFnKQorICAgIDogQm94KHsgfSwgV1RGTW92ZShzdHlsZSksIEJveDo6TGVnYWN5SW5s
aW5lVGV4dEJveEZsYWcpCiAgICAgLCBtX2NvbnRlbnQoY29udGVudCkKICAgICAsIG1fY2FuVXNl
U2ltcGxpZmllZENvbnRlbnRNZWFzdXJpbmcoY2FuVXNlU2ltcGxpZmllZENvbnRlbnRNZWFzdXJp
bmcpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ2FyZXRSZWN0Q29t
cHV0YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NhcmV0UmVjdENvbXB1dGF0
aW9uLmNwcAppbmRleCA2NWE4MjY0ZWE2MzAuLjRhOTg2MTliMmRjZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NhcmV0UmVjdENvbXB1dGF0aW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvQ2FyZXRSZWN0Q29tcHV0YXRpb24uY3BwCkBAIC0xOTQsMTAg
KzE5NCwxMCBAQCBzdGF0aWMgTGF5b3V0UmVjdCBjb21wdXRlQ2FyZXRSZWN0Rm9yU1ZHSW5saW5l
VGV4dChjb25zdCBJbmxpbmVSdW5BbmRPZmZzZXQmIHJ1bgogICAgIGF1dG8qIGJveCA9IHJ1bkFu
ZE9mZnNldC5ydW4gPyBydW5BbmRPZmZzZXQucnVuLT5sZWdhY3lJbmxpbmVCb3goKSA6IG51bGxw
dHI7CiAgICAgYXV0byBjYXJldE9mZnNldCA9IHJ1bkFuZE9mZnNldC5vZmZzZXQ7CiAKLSAgICBp
ZiAoIWlzPElubGluZVRleHRCb3g+KGJveCkpCisgICAgaWYgKCFpczxMZWdhY3lJbmxpbmVUZXh0
Qm94Pihib3gpKQogICAgICAgICByZXR1cm4geyB9OwogCi0gICAgYXV0byYgdGV4dEJveCA9IGRv
d25jYXN0PElubGluZVRleHRCb3g+KCpib3gpOworICAgIGF1dG8mIHRleHRCb3ggPSBkb3duY2Fz
dDxMZWdhY3lJbmxpbmVUZXh0Qm94PigqYm94KTsKICAgICBpZiAoY2FyZXRPZmZzZXQgPCB0ZXh0
Qm94LnN0YXJ0KCkgfHwgY2FyZXRPZmZzZXQgPiB0ZXh0Qm94LnN0YXJ0KCkgKyB0ZXh0Qm94Lmxl
bigpKQogICAgICAgICByZXR1cm4geyB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvRWxsaXBzaXNCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0VsbGlw
c2lzQm94LmNwcAppbmRleCA2YTJhODUzM2NmOTEuLjhmOTA0NTEyM2RlOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0VsbGlwc2lzQm94LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvRWxsaXBzaXNCb3guY3BwCkBAIC0yNCw3ICsyNCw3IEBACiAjaW5jbHVk
ZSAiRm9udENhc2NhZGUuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRl
ICJIaXRUZXN0UmVzdWx0LmgiCi0jaW5jbHVkZSAiSW5saW5lVGV4dEJveC5oIgorI2luY2x1ZGUg
IkxlZ2FjeUlubGluZVRleHRCb3guaCIKICNpbmNsdWRlICJMZWdhY3lSb290SW5saW5lQm94Lmgi
CiAjaW5jbHVkZSAiUGFpbnRJbmZvLmgiCiAjaW5jbHVkZSAiVGV4dFJ1bi5oIgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xlZ2FjeUlubGluZUJveC5oIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0xlZ2FjeUlubGluZUJveC5oCmluZGV4IDlkZmU1NGQ2NjAwMS4uM2I2
Zjk1OTA4MzI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVnYWN5SW5s
aW5lQm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xlZ2FjeUlubGluZUJveC5o
CkBAIC0zNDYsMTIgKzM0NiwxMiBAQCBwcml2YXRlOgogICAgICAgICBBRERfQk9PTEVBTl9CSVRG
SUVMRChpc0hvcml6b250YWwsIElzSG9yaXpvbnRhbCk7CiAgICAgICAgIC8vIGZvciBSb290SW5s
aW5lQm94CiAgICAgICAgIEFERF9CT09MRUFOX0JJVEZJRUxEKGVuZHNXaXRoQnJlYWssIEVuZHNX
aXRoQnJlYWspOyAvLyBXaGV0aGVyIHRoZSBsaW5lIGVuZHMgd2l0aCBhIDxicj4uCi0gICAgICAg
IC8vIHNoYXJlZCBiZXR3ZWVuIFJvb3RJbmxpbmVCb3ggYW5kIElubGluZVRleHRCb3gKKyAgICAg
ICAgLy8gc2hhcmVkIGJldHdlZW4gUm9vdElubGluZUJveCBhbmQgTGVnYWN5SW5saW5lVGV4dEJv
eAogICAgICAgICBBRERfQk9PTEVBTl9CSVRGSUVMRChjYW5IYXZlTGVmdEV4cGFuc2lvbiwgQ2Fu
SGF2ZUxlZnRFeHBhbnNpb24pOwogICAgICAgICBBRERfQk9PTEVBTl9CSVRGSUVMRChjYW5IYXZl
UmlnaHRFeHBhbnNpb24sIENhbkhhdmVSaWdodEV4cGFuc2lvbik7CiAgICAgICAgIEFERF9CT09M
RUFOX0JJVEZJRUxEKGtub3duVG9IYXZlTm9PdmVyZmxvdywgS25vd25Ub0hhdmVOb092ZXJmbG93
KTsKICAgICAgICAgQUREX0JPT0xFQU5fQklURklFTEQoaGFzRWxsaXBzaXNCb3hPckh5cGhlbiwg
SGFzRWxsaXBzaXNCb3hPckh5cGhlbik7Ci0gICAgICAgIC8vIGZvciBJbmxpbmVUZXh0Qm94Cisg
ICAgICAgIC8vIGZvciBMZWdhY3lJbmxpbmVUZXh0Qm94CiAgICAgICAgIEFERF9CT09MRUFOX0JJ
VEZJRUxEKGRpck92ZXJyaWRlLCBEaXJPdmVycmlkZSk7CiAgICAgICAgIEFERF9CT09MRUFOX0JJ
VEZJRUxEKGJlaGF2ZXNMaWtlVGV4dCwgQmVoYXZlc0xpa2VUZXh0KTsgLy8gV2hldGhlciBvciBu
b3QgdGhpcyBvYmplY3QgcmVwcmVzZW50cyB0ZXh0IHdpdGggYSBub24temVybyBoZWlnaHQuIElu
Y2x1ZGVzIG5vbi1pbWFnZSBsaXN0IG1hcmtlcnMsIHRleHQgYm94ZXMsIGJyLgogICAgICAgICBB
RERfQk9PTEVBTl9CSVRGSUVMRChmb3JjZVJpZ2h0RXhwYW5zaW9uLCBGb3JjZVJpZ2h0RXhwYW5z
aW9uKTsKQEAgLTM5OCwxNCArMzk4LDE0IEBAIHByb3RlY3RlZDoKICAgICBib29sIGhhc0VsbGlw
c2lzQm94KCkgY29uc3QgeyByZXR1cm4gbV9iaXRmaWVsZHMuaGFzRWxsaXBzaXNCb3hPckh5cGhl
bigpOyB9CiAgICAgdm9pZCBzZXRIYXNFbGxpcHNpc0JveChib29sIGhhc0VsbGlwc2lzQm94KSB7
IG1fYml0ZmllbGRzLnNldEhhc0VsbGlwc2lzQm94T3JIeXBoZW4oaGFzRWxsaXBzaXNCb3gpOyB9
CiAKLSAgICAvLyBGb3IgSW5saW5lVGV4dEJveAorICAgIC8vIEZvciBMZWdhY3lJbmxpbmVUZXh0
Qm94CiAgICAgYm9vbCBoYXNIeXBoZW4oKSBjb25zdCB7IHJldHVybiBtX2JpdGZpZWxkcy5oYXNF
bGxpcHNpc0JveE9ySHlwaGVuKCk7IH0KICAgICBib29sIGNhbkhhdmVMZWZ0RXhwYW5zaW9uKCkg
Y29uc3QgeyByZXR1cm4gbV9iaXRmaWVsZHMuY2FuSGF2ZUxlZnRFeHBhbnNpb24oKTsgfQogICAg
IGJvb2wgY2FuSGF2ZVJpZ2h0RXhwYW5zaW9uKCkgY29uc3QgeyByZXR1cm4gbV9iaXRmaWVsZHMu
Y2FuSGF2ZVJpZ2h0RXhwYW5zaW9uKCk7IH0KICAgICBib29sIGZvcmNlUmlnaHRFeHBhbnNpb24o
KSBjb25zdCB7IHJldHVybiBtX2JpdGZpZWxkcy5mb3JjZVJpZ2h0RXhwYW5zaW9uKCk7IH0KICAg
ICBib29sIGZvcmNlTGVmdEV4cGFuc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1fYml0ZmllbGRzLmZv
cmNlTGVmdEV4cGFuc2lvbigpOyB9CiAgICAgCi0gICAgLy8gRm9yIExlZ2FjeUlubGluZUZsb3dC
b3ggYW5kIElubGluZVRleHRCb3gKKyAgICAvLyBGb3IgTGVnYWN5SW5saW5lRmxvd0JveCBhbmQg
TGVnYWN5SW5saW5lVGV4dEJveAogICAgIGJvb2wgZXh0cmFjdGVkKCkgY29uc3QgeyByZXR1cm4g
bV9iaXRmaWVsZHMuZXh0cmFjdGVkKCk7IH0KIAogcHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xlZ2FjeUlubGluZUZsb3dCb3guY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0xlZ2FjeUlubGluZUZsb3dCb3guY3BwCmluZGV4IDIyOWE4ZDZjM2Qy
MS4uNTNlOTBiNjg3NDM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVn
YWN5SW5saW5lRmxvd0JveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xlZ2Fj
eUlubGluZUZsb3dCb3guY3BwCkBAIC0yNiw3ICsyNiw3IEBACiAjaW5jbHVkZSAiRm9udENhc2Nh
ZGUuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJIaXRUZXN0UmVz
dWx0LmgiCi0jaW5jbHVkZSAiSW5saW5lVGV4dEJveC5oIgorI2luY2x1ZGUgIkxlZ2FjeUlubGlu
ZVRleHRCb3guaCIKICNpbmNsdWRlICJMZWdhY3lSb290SW5saW5lQm94LmgiCiAjaW5jbHVkZSAi
UmVuZGVyQmxvY2suaCIKICNpbmNsdWRlICJSZW5kZXJJbmxpbmUuaCIKQEAgLTE2MSw4ICsxNjEs
OCBAQCB2b2lkIExlZ2FjeUlubGluZUZsb3dCb3g6OmFkZFRvTGluZShMZWdhY3lJbmxpbmVCb3gq
IGNoaWxkKQogICAgICAgICBpZiAoY2hpbGQtPmJlaGF2ZXNMaWtlVGV4dCgpKSB7CiAgICAgICAg
ICAgICBjb25zdCBSZW5kZXJTdHlsZSogY2hpbGRTdHlsZSA9ICZjaGlsZC0+bGluZVN0eWxlKCk7
CiAgICAgICAgICAgICBib29sIGhhc01hcmtlcnMgPSBmYWxzZTsKLSAgICAgICAgICAgIGlmIChp
czxJbmxpbmVUZXh0Qm94PihjaGlsZCkpIHsKLSAgICAgICAgICAgICAgICBjb25zdCBhdXRvKiB0
ZXh0Qm94ID0gZG93bmNhc3Q8SW5saW5lVGV4dEJveD4oY2hpbGQpOworICAgICAgICAgICAgaWYg
KGlzPExlZ2FjeUlubGluZVRleHRCb3g+KGNoaWxkKSkgeworICAgICAgICAgICAgICAgIGNvbnN0
IGF1dG8qIHRleHRCb3ggPSBkb3duY2FzdDxMZWdhY3lJbmxpbmVUZXh0Qm94PihjaGlsZCk7CiAg
ICAgICAgICAgICAgICAgaGFzTWFya2VycyA9IHRleHRCb3gtPmhhc01hcmtlcnMoKTsKICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIGlmIChjaGlsZFN0eWxlLT5sZXR0ZXJTcGFjaW5nKCkgPCAw
IHx8IGNoaWxkU3R5bGUtPnRleHRTaGFkb3coKSB8fCBjaGlsZFN0eWxlLT50ZXh0RW1waGFzaXNN
YXJrKCkgIT0gVGV4dEVtcGhhc2lzTWFyazo6Tm9uZSB8fCBjaGlsZFN0eWxlLT5oYXNQb3NpdGl2
ZVN0cm9rZVdpZHRoKCkgfHwgaGFzTWFya2VycyB8fCAhY2hpbGRTdHlsZS0+dGV4dFVuZGVybGlu
ZU9mZnNldCgpLmlzQXV0bygpIHx8ICFjaGlsZFN0eWxlLT50ZXh0RGVjb3JhdGlvblRoaWNrbmVz
cygpLmlzQXV0bygpIHx8IGNoaWxkU3R5bGUtPnRleHRVbmRlcmxpbmVQb3NpdGlvbigpICE9IFRl
eHRVbmRlcmxpbmVQb3NpdGlvbjo6QXV0bykKQEAgLTM5Miw3ICszOTIsNyBAQCBmbG9hdCBMZWdh
Y3lJbmxpbmVGbG93Qm94OjpwbGFjZUJveFJhbmdlSW5JbmxpbmVEaXJlY3Rpb24oTGVnYWN5SW5s
aW5lQm94KiBmaXJzdAogICAgIGZsb2F0IHRvdGFsRXhwYW5zaW9uID0gMDsKICAgICBmb3IgKGF1
dG8qIGNoaWxkID0gZmlyc3RDaGlsZDsgY2hpbGQgJiYgY2hpbGQgIT0gbGFzdENoaWxkOyBjaGls
ZCA9IGNoaWxkLT5uZXh0T25MaW5lKCkpIHsKICAgICAgICAgaWYgKGlzPFJlbmRlclRleHQ+KGNo
aWxkLT5yZW5kZXJlcigpKSkgewotICAgICAgICAgICAgYXV0byYgdGV4dEJveCA9IGRvd25jYXN0
PElubGluZVRleHRCb3g+KCpjaGlsZCk7CisgICAgICAgICAgICBhdXRvJiB0ZXh0Qm94ID0gZG93
bmNhc3Q8TGVnYWN5SW5saW5lVGV4dEJveD4oKmNoaWxkKTsKICAgICAgICAgICAgIFJlbmRlclRl
eHQmIHJlbmRlclRleHQgPSB0ZXh0Qm94LnJlbmRlcmVyKCk7CiAgICAgICAgICAgICBpZiAocmVu
ZGVyVGV4dC50ZXh0KCkubGVuZ3RoKCkpIHsKICAgICAgICAgICAgICAgICBpZiAobmVlZHNXb3Jk
U3BhY2luZyAmJiBpc1NwYWNlT3JOZXdsaW5lKHJlbmRlclRleHQuY2hhcmFjdGVyQXQodGV4dEJv
eC5zdGFydCgpKSkpCkBAIC00NzIsOCArNDcyLDggQEAgYm9vbCBMZWdhY3lJbmxpbmVGbG93Qm94
OjpyZXF1aXJlc0lkZW9ncmFwaGljQmFzZWxpbmUoY29uc3QgR2x5cGhPdmVyZmxvd0FuZEZhbGwK
ICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIAogICAgICAgICAgICAg
Y29uc3QgVmVjdG9yPGNvbnN0IEZvbnQqPiogdXNlZEZvbnRzID0gbnVsbHB0cjsKLSAgICAgICAg
ICAgIGlmIChpczxJbmxpbmVUZXh0Qm94PigqY2hpbGQpKSB7Ci0gICAgICAgICAgICAgICAgR2x5
cGhPdmVyZmxvd0FuZEZhbGxiYWNrRm9udHNNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gdGV4dEJv
eERhdGFNYXAuZmluZChkb3duY2FzdDxJbmxpbmVUZXh0Qm94PihjaGlsZCkpOworICAgICAgICAg
ICAgaWYgKGlzPExlZ2FjeUlubGluZVRleHRCb3g+KCpjaGlsZCkpIHsKKyAgICAgICAgICAgICAg
ICBHbHlwaE92ZXJmbG93QW5kRmFsbGJhY2tGb250c01hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSB0
ZXh0Qm94RGF0YU1hcC5maW5kKGRvd25jYXN0PExlZ2FjeUlubGluZVRleHRCb3g+KGNoaWxkKSk7
CiAgICAgICAgICAgICAgICAgdXNlZEZvbnRzID0gaXQgPT0gdGV4dEJveERhdGFNYXAuZW5kKCkg
PyBudWxscHRyIDogJml0LT52YWx1ZS5maXJzdDsKICAgICAgICAgICAgIH0KIApAQCAtNzM0LDgg
KzczNCw4IEBAIHZvaWQgTGVnYWN5SW5saW5lRmxvd0JveDo6cGxhY2VCb3hlc0luQmxvY2tEaXJl
Y3Rpb24oTGF5b3V0VW5pdCB0b3AsIExheW91dFVuaXQKICAgICAgICAgICAgICAgICAgICAgYm94
SGVpZ2h0IC09ICh0b3BSdWJ5QmFzZUxlYWRpbmcgKyBib3R0b21SdWJ5QmFzZUxlYWRpbmcpOwog
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChpczxJbmxp
bmVUZXh0Qm94PigqY2hpbGQpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHN0ZDo6b3B0aW9uYWw8
Ym9vbD4gbWFya0V4aXN0c0FuZElzQWJvdmUgPSBkb3duY2FzdDxJbmxpbmVUZXh0Qm94PigqY2hp
bGQpLmVtcGhhc2lzTWFya0V4aXN0c0FuZElzQWJvdmUoY2hpbGRMaW5lU3R5bGUpKSB7CisgICAg
ICAgICAgICBpZiAoaXM8TGVnYWN5SW5saW5lVGV4dEJveD4oKmNoaWxkKSkgeworICAgICAgICAg
ICAgICAgIGlmIChzdGQ6Om9wdGlvbmFsPGJvb2w+IG1hcmtFeGlzdHNBbmRJc0Fib3ZlID0gZG93
bmNhc3Q8TGVnYWN5SW5saW5lVGV4dEJveD4oKmNoaWxkKS5lbXBoYXNpc01hcmtFeGlzdHNBbmRJ
c0Fib3ZlKGNoaWxkTGluZVN0eWxlKSkgewogICAgICAgICAgICAgICAgICAgICBpZiAoKm1hcmtF
eGlzdHNBbmRJc0Fib3ZlICE9IGNoaWxkTGluZVN0eWxlLmlzRmxpcHBlZExpbmVzV3JpdGluZ01v
ZGUoKSkKICAgICAgICAgICAgICAgICAgICAgICAgIGhhc0Fubm90YXRpb25zQmVmb3JlID0gdHJ1
ZTsKICAgICAgICAgICAgICAgICAgICAgZWxzZQpAQCAtOTA2LDcgKzkwNiw3IEBAIGlubGluZSB2
b2lkIExlZ2FjeUlubGluZUZsb3dCb3g6OmFkZEJvcmRlck91dHNldFZpc3VhbE92ZXJmbG93KExh
eW91dFJlY3QmIGxvZ2ljCiAgICAgbG9naWNhbFZpc3VhbE92ZXJmbG93ID0gTGF5b3V0UmVjdChs
b2dpY2FsTGVmdFZpc3VhbE92ZXJmbG93LCBsb2dpY2FsVG9wVmlzdWFsT3ZlcmZsb3csIGxvZ2lj
YWxSaWdodFZpc3VhbE92ZXJmbG93IC0gbG9naWNhbExlZnRWaXN1YWxPdmVyZmxvdywgbG9naWNh
bEJvdHRvbVZpc3VhbE92ZXJmbG93IC0gbG9naWNhbFRvcFZpc3VhbE92ZXJmbG93KTsKIH0KIAot
aW5saW5lIHZvaWQgTGVnYWN5SW5saW5lRmxvd0JveDo6YWRkVGV4dEJveFZpc3VhbE92ZXJmbG93
KElubGluZVRleHRCb3gmIHRleHRCb3gsIEdseXBoT3ZlcmZsb3dBbmRGYWxsYmFja0ZvbnRzTWFw
JiB0ZXh0Qm94RGF0YU1hcCwgTGF5b3V0UmVjdCYgbG9naWNhbFZpc3VhbE92ZXJmbG93KQoraW5s
aW5lIHZvaWQgTGVnYWN5SW5saW5lRmxvd0JveDo6YWRkVGV4dEJveFZpc3VhbE92ZXJmbG93KExl
Z2FjeUlubGluZVRleHRCb3gmIHRleHRCb3gsIEdseXBoT3ZlcmZsb3dBbmRGYWxsYmFja0ZvbnRz
TWFwJiB0ZXh0Qm94RGF0YU1hcCwgTGF5b3V0UmVjdCYgbG9naWNhbFZpc3VhbE92ZXJmbG93KQog
ewogICAgIGlmICh0ZXh0Qm94Lmtub3duVG9IYXZlTm9PdmVyZmxvdygpKQogICAgICAgICByZXR1
cm47CkBAIC0xMDMwLDcgKzEwMzAsNyBAQCB2b2lkIExlZ2FjeUlubGluZUZsb3dCb3g6OmNvbXB1
dGVPdmVyZmxvdyhMYXlvdXRVbml0IGxpbmVUb3AsIExheW91dFVuaXQgbGluZUJvdAogICAgICAg
ICBpZiAoaXM8UmVuZGVyTGluZUJyZWFrPihjaGlsZC0+cmVuZGVyZXIoKSkpCiAgICAgICAgICAg
ICBjb250aW51ZTsKICAgICAgICAgaWYgKGlzPFJlbmRlclRleHQ+KGNoaWxkLT5yZW5kZXJlcigp
KSkgewotICAgICAgICAgICAgYXV0byYgdGV4dEJveCA9IGRvd25jYXN0PElubGluZVRleHRCb3g+
KCpjaGlsZCk7CisgICAgICAgICAgICBhdXRvJiB0ZXh0Qm94ID0gZG93bmNhc3Q8TGVnYWN5SW5s
aW5lVGV4dEJveD4oKmNoaWxkKTsKICAgICAgICAgICAgIExheW91dFJlY3QgdGV4dEJveE92ZXJm
bG93KGVuY2xvc2luZ0xheW91dFJlY3QodGV4dEJveC5sb2dpY2FsRnJhbWVSZWN0KCkpKTsKICAg
ICAgICAgICAgIGFkZFRleHRCb3hWaXN1YWxPdmVyZmxvdyh0ZXh0Qm94LCB0ZXh0Qm94RGF0YU1h
cCwgdGV4dEJveE92ZXJmbG93KTsKICAgICAgICAgICAgIGxvZ2ljYWxWaXN1YWxPdmVyZmxvdy51
bml0ZSh0ZXh0Qm94T3ZlcmZsb3cpOwpAQCAtMTYxMyw5ICsxNjEzLDkgQEAgTGF5b3V0VW5pdCBM
ZWdhY3lJbmxpbmVGbG93Qm94Ojpjb21wdXRlT3ZlckFubm90YXRpb25BZGp1c3RtZW50KExheW91
dFVuaXQgYWxsb3cKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCi0gICAgICAgIGlmIChpczxJ
bmxpbmVUZXh0Qm94PigqY2hpbGQpKSB7CisgICAgICAgIGlmIChpczxMZWdhY3lJbmxpbmVUZXh0
Qm94PigqY2hpbGQpKSB7CiAgICAgICAgICAgICBjb25zdCBSZW5kZXJTdHlsZSYgY2hpbGRMaW5l
U3R5bGUgPSBjaGlsZC0+bGluZVN0eWxlKCk7Ci0gICAgICAgICAgICBzdGQ6Om9wdGlvbmFsPGJv
b2w+IG1hcmtFeGlzdHNBbmRJc0Fib3ZlID0gZG93bmNhc3Q8SW5saW5lVGV4dEJveD4oKmNoaWxk
KS5lbXBoYXNpc01hcmtFeGlzdHNBbmRJc0Fib3ZlKGNoaWxkTGluZVN0eWxlKTsKKyAgICAgICAg
ICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gbWFya0V4aXN0c0FuZElzQWJvdmUgPSBkb3duY2FzdDxM
ZWdhY3lJbmxpbmVUZXh0Qm94PigqY2hpbGQpLmVtcGhhc2lzTWFya0V4aXN0c0FuZElzQWJvdmUo
Y2hpbGRMaW5lU3R5bGUpOwogICAgICAgICAgICAgaWYgKG1hcmtFeGlzdHNBbmRJc0Fib3ZlICYm
ICptYXJrRXhpc3RzQW5kSXNBYm92ZSkgewogICAgICAgICAgICAgICAgIGlmICghY2hpbGRMaW5l
U3R5bGUuaXNGbGlwcGVkTGluZXNXcml0aW5nTW9kZSgpKSB7CiAgICAgICAgICAgICAgICAgICAg
IGludCB0b3BPZkVtcGhhc2lzTWFyayA9IGNoaWxkLT5sb2dpY2FsVG9wKCkgLSBjaGlsZExpbmVT
dHlsZS5mb250Q2FzY2FkZSgpLmVtcGhhc2lzTWFya0hlaWdodChjaGlsZExpbmVTdHlsZS50ZXh0
RW1waGFzaXNNYXJrU3RyaW5nKCkpOwpAQCAtMTY2MSw5ICsxNjYxLDkgQEAgTGF5b3V0VW5pdCBM
ZWdhY3lJbmxpbmVGbG93Qm94Ojpjb21wdXRlVW5kZXJBbm5vdGF0aW9uQWRqdXN0bWVudChMYXlv
dXRVbml0IGFsbG8KICAgICAgICAgICAgIH0KICAgICAgICAgfQogCi0gICAgICAgIGlmIChpczxJ
bmxpbmVUZXh0Qm94PigqY2hpbGQpKSB7CisgICAgICAgIGlmIChpczxMZWdhY3lJbmxpbmVUZXh0
Qm94PigqY2hpbGQpKSB7CiAgICAgICAgICAgICBjb25zdCBSZW5kZXJTdHlsZSYgY2hpbGRMaW5l
U3R5bGUgPSBjaGlsZC0+bGluZVN0eWxlKCk7Ci0gICAgICAgICAgICBzdGQ6Om9wdGlvbmFsPGJv
b2w+IG1hcmtFeGlzdHNBbmRJc0Fib3ZlID0gZG93bmNhc3Q8SW5saW5lVGV4dEJveD4oKmNoaWxk
KS5lbXBoYXNpc01hcmtFeGlzdHNBbmRJc0Fib3ZlKGNoaWxkTGluZVN0eWxlKTsKKyAgICAgICAg
ICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gbWFya0V4aXN0c0FuZElzQWJvdmUgPSBkb3duY2FzdDxM
ZWdhY3lJbmxpbmVUZXh0Qm94PigqY2hpbGQpLmVtcGhhc2lzTWFya0V4aXN0c0FuZElzQWJvdmUo
Y2hpbGRMaW5lU3R5bGUpOwogICAgICAgICAgICAgaWYgKG1hcmtFeGlzdHNBbmRJc0Fib3ZlICYm
ICEqbWFya0V4aXN0c0FuZElzQWJvdmUpIHsKICAgICAgICAgICAgICAgICBpZiAoIWNoaWxkTGlu
ZVN0eWxlLmlzRmxpcHBlZExpbmVzV3JpdGluZ01vZGUoKSkgewogICAgICAgICAgICAgICAgICAg
ICBMYXlvdXRVbml0IGJvdHRvbU9mRW1waGFzaXNNYXJrIHsgY2hpbGQtPmxvZ2ljYWxCb3R0b20o
KSArIGNoaWxkTGluZVN0eWxlLmZvbnRDYXNjYWRlKCkuZW1waGFzaXNNYXJrSGVpZ2h0KGNoaWxk
TGluZVN0eWxlLnRleHRFbXBoYXNpc01hcmtTdHJpbmcoKSkgfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9MZWdhY3lJbmxpbmVGbG93Qm94LmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvTGVnYWN5SW5saW5lRmxvd0JveC5oCmluZGV4IDcyNzUxYmEzN2UzMy4uMzgx
YzI4MjIyMmYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVnYWN5SW5s
aW5lRmxvd0JveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MZWdhY3lJbmxpbmVG
bG93Qm94LmgKQEAgLTI4LDE0ICsyOCwxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IEhpdFRlc3RSZXF1ZXN0OwogY2xhc3MgSGl0VGVzdFJlc3VsdDsKLWNsYXNzIElubGluZVRleHRC
b3g7CitjbGFzcyBMZWdhY3lJbmxpbmVUZXh0Qm94OwogY2xhc3MgUmVuZGVyTGluZUJveExpc3Q7
CiBjbGFzcyBGb250OwogY2xhc3MgVmVydGljYWxQb3NpdGlvbkNhY2hlOwogCiBzdHJ1Y3QgR2x5
cGhPdmVyZmxvdzsKIAotdHlwZWRlZiBIYXNoTWFwPGNvbnN0IElubGluZVRleHRCb3gqLCBzdGQ6
OnBhaXI8VmVjdG9yPGNvbnN0IEZvbnQqPiwgR2x5cGhPdmVyZmxvdz4+IEdseXBoT3ZlcmZsb3dB
bmRGYWxsYmFja0ZvbnRzTWFwOwordHlwZWRlZiBIYXNoTWFwPGNvbnN0IExlZ2FjeUlubGluZVRl
eHRCb3gqLCBzdGQ6OnBhaXI8VmVjdG9yPGNvbnN0IEZvbnQqPiwgR2x5cGhPdmVyZmxvdz4+IEds
eXBoT3ZlcmZsb3dBbmRGYWxsYmFja0ZvbnRzTWFwOwogCiBjbGFzcyBMZWdhY3lJbmxpbmVGbG93
Qm94IDogcHVibGljIExlZ2FjeUlubGluZUJveCB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRF
RChMZWdhY3lJbmxpbmVGbG93Qm94KTsKQEAgLTMwNSw3ICszMDUsNyBAQCBwcml2YXRlOgogCiAg
ICAgdm9pZCBhZGRCb3hTaGFkb3dWaXN1YWxPdmVyZmxvdyhMYXlvdXRSZWN0JiBsb2dpY2FsVmlz
dWFsT3ZlcmZsb3cpOwogICAgIHZvaWQgYWRkQm9yZGVyT3V0c2V0VmlzdWFsT3ZlcmZsb3coTGF5
b3V0UmVjdCYgbG9naWNhbFZpc3VhbE92ZXJmbG93KTsKLSAgICB2b2lkIGFkZFRleHRCb3hWaXN1
YWxPdmVyZmxvdyhJbmxpbmVUZXh0Qm94JiwgR2x5cGhPdmVyZmxvd0FuZEZhbGxiYWNrRm9udHNN
YXAmLCBMYXlvdXRSZWN0JiBsb2dpY2FsVmlzdWFsT3ZlcmZsb3cpOworICAgIHZvaWQgYWRkVGV4
dEJveFZpc3VhbE92ZXJmbG93KExlZ2FjeUlubGluZVRleHRCb3gmLCBHbHlwaE92ZXJmbG93QW5k
RmFsbGJhY2tGb250c01hcCYsIExheW91dFJlY3QmIGxvZ2ljYWxWaXN1YWxPdmVyZmxvdyk7CiAg
ICAgdm9pZCBhZGRPdXRsaW5lVmlzdWFsT3ZlcmZsb3coTGF5b3V0UmVjdCYgbG9naWNhbFZpc3Vh
bE92ZXJmbG93KTsKICAgICB2b2lkIGFkZFJlcGxhY2VkQ2hpbGRPdmVyZmxvdyhjb25zdCBMZWdh
Y3lJbmxpbmVCb3gqLCBMYXlvdXRSZWN0JiBsb2dpY2FsTGF5b3V0T3ZlcmZsb3csIExheW91dFJl
Y3QmIGxvZ2ljYWxWaXN1YWxPdmVyZmxvdyk7CiAgICAgdm9pZCBjb25zdHJhaW5Ub0xpbmVUb3BB
bmRCb3R0b21JZk5lZWRlZChMYXlvdXRSZWN0JikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvTGVnYWN5SW5saW5lVGV4dEJveC5jcHAKc2ltaWxhcml0eSBpbmRleCA4OCUKcmVuYW1l
IGZyb20gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwCnJlbmFtZSB0
byBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVnYWN5SW5saW5lVGV4dEJveC5jcHAKaW5kZXgg
YTgxOGQzMTNmYjY1Li40Yzk2NjUyMGQyNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
TGVnYWN5SW5saW5lVGV4dEJveC5jcHAKQEAgLTIxLDcgKzIxLDcgQEAKICAqLwogCiAjaW5jbHVk
ZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiSW5saW5lVGV4dEJveC5oIgorI2luY2x1ZGUgIkxlZ2Fj
eUlubGluZVRleHRCb3guaCIKIAogI2luY2x1ZGUgIkJyZWFrTGluZXMuaCIKICNpbmNsdWRlICJD
b21wb3NpdGlvbkhpZ2hsaWdodC5oIgpAQCAtNjQsMjcgKzY0LDI3IEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKElubGluZVRleHRCb3gpOwor
V1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKExlZ2FjeUlubGluZVRleHRCb3gpOwogCi1zdHJ1
Y3QgU2FtZVNpemVBc0lubGluZVRleHRCb3ggOiBwdWJsaWMgTGVnYWN5SW5saW5lQm94IHsKK3N0
cnVjdCBTYW1lU2l6ZUFzTGVnYWN5SW5saW5lVGV4dEJveCA6IHB1YmxpYyBMZWdhY3lJbmxpbmVC
b3ggewogICAgIHVuc2lnbmVkIHZhcmlhYmxlc1sxXTsKICAgICB1bnNpZ25lZCBzaG9ydCB2YXJp
YWJsZXMyWzJdOwogICAgIHZvaWQqIHBvaW50ZXJzWzJdOwogfTsKIAotQ09NUElMRV9BU1NFUlQo
c2l6ZW9mKElubGluZVRleHRCb3gpID09IHNpemVvZihTYW1lU2l6ZUFzSW5saW5lVGV4dEJveCks
IElubGluZVRleHRCb3hfc2hvdWxkX3N0YXlfc21hbGwpOworQ09NUElMRV9BU1NFUlQoc2l6ZW9m
KExlZ2FjeUlubGluZVRleHRCb3gpID09IHNpemVvZihTYW1lU2l6ZUFzTGVnYWN5SW5saW5lVGV4
dEJveCksIExlZ2FjeUlubGluZVRleHRCb3hfc2hvdWxkX3N0YXlfc21hbGwpOwogCi10eXBlZGVm
IFdURjo6SGFzaE1hcDxjb25zdCBJbmxpbmVUZXh0Qm94KiwgTGF5b3V0UmVjdD4gSW5saW5lVGV4
dEJveE92ZXJmbG93TWFwOwotc3RhdGljIElubGluZVRleHRCb3hPdmVyZmxvd01hcCogZ1RleHRC
b3hlc1dpdGhPdmVyZmxvdzsKK3R5cGVkZWYgV1RGOjpIYXNoTWFwPGNvbnN0IExlZ2FjeUlubGlu
ZVRleHRCb3gqLCBMYXlvdXRSZWN0PiBMZWdhY3lJbmxpbmVUZXh0Qm94T3ZlcmZsb3dNYXA7Citz
dGF0aWMgTGVnYWN5SW5saW5lVGV4dEJveE92ZXJmbG93TWFwKiBnVGV4dEJveGVzV2l0aE92ZXJm
bG93OwogCi1JbmxpbmVUZXh0Qm94Ojp+SW5saW5lVGV4dEJveCgpCitMZWdhY3lJbmxpbmVUZXh0
Qm94Ojp+TGVnYWN5SW5saW5lVGV4dEJveCgpCiB7CiAgICAgaWYgKCFrbm93blRvSGF2ZU5vT3Zl
cmZsb3coKSAmJiBnVGV4dEJveGVzV2l0aE92ZXJmbG93KQogICAgICAgICBnVGV4dEJveGVzV2l0
aE92ZXJmbG93LT5yZW1vdmUodGhpcyk7CiAgICAgVGV4dFBhaW50ZXI6OnJlbW92ZUdseXBoRGlz
cGxheUxpc3QoKnRoaXMpOwogfQogCi1ib29sIElubGluZVRleHRCb3g6Omhhc1RleHRDb250ZW50
KCkgY29uc3QKK2Jvb2wgTGVnYWN5SW5saW5lVGV4dEJveDo6aGFzVGV4dENvbnRlbnQoKSBjb25z
dAogewogICAgIGlmIChtX2xlbiA+IDEpCiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtOTUsNyAr
OTUsNyBAQCBib29sIElubGluZVRleHRCb3g6Omhhc1RleHRDb250ZW50KCkgY29uc3QKICAgICBy
ZXR1cm4gbV9sZW47CiB9CiAKLXZvaWQgSW5saW5lVGV4dEJveDo6bWFya0RpcnR5KGJvb2wgZGly
dHkpCit2b2lkIExlZ2FjeUlubGluZVRleHRCb3g6Om1hcmtEaXJ0eShib29sIGRpcnR5KQogewog
ICAgIGlmIChkaXJ0eSkgewogICAgICAgICBtX2xlbiA9IDA7CkBAIC0xMDQsMjIgKzEwNCwyMiBA
QCB2b2lkIElubGluZVRleHRCb3g6Om1hcmtEaXJ0eShib29sIGRpcnR5KQogICAgIExlZ2FjeUlu
bGluZUJveDo6bWFya0RpcnR5KGRpcnR5KTsKIH0KIAotTGF5b3V0UmVjdCBJbmxpbmVUZXh0Qm94
Ojpsb2dpY2FsT3ZlcmZsb3dSZWN0KCkgY29uc3QKK0xheW91dFJlY3QgTGVnYWN5SW5saW5lVGV4
dEJveDo6bG9naWNhbE92ZXJmbG93UmVjdCgpIGNvbnN0CiB7CiAgICAgaWYgKGtub3duVG9IYXZl
Tm9PdmVyZmxvdygpIHx8ICFnVGV4dEJveGVzV2l0aE92ZXJmbG93KQogICAgICAgICByZXR1cm4g
ZW5jbG9zaW5nSW50UmVjdChsb2dpY2FsRnJhbWVSZWN0KCkpOwogICAgIHJldHVybiBnVGV4dEJv
eGVzV2l0aE92ZXJmbG93LT5nZXQodGhpcyk7CiB9CiAKLXZvaWQgSW5saW5lVGV4dEJveDo6c2V0
TG9naWNhbE92ZXJmbG93UmVjdChjb25zdCBMYXlvdXRSZWN0JiByZWN0KQordm9pZCBMZWdhY3lJ
bmxpbmVUZXh0Qm94OjpzZXRMb2dpY2FsT3ZlcmZsb3dSZWN0KGNvbnN0IExheW91dFJlY3QmIHJl
Y3QpCiB7CiAgICAgQVNTRVJUKCFrbm93blRvSGF2ZU5vT3ZlcmZsb3coKSk7CiAgICAgaWYgKCFn
VGV4dEJveGVzV2l0aE92ZXJmbG93KQotICAgICAgICBnVGV4dEJveGVzV2l0aE92ZXJmbG93ID0g
bmV3IElubGluZVRleHRCb3hPdmVyZmxvd01hcDsKKyAgICAgICAgZ1RleHRCb3hlc1dpdGhPdmVy
ZmxvdyA9IG5ldyBMZWdhY3lJbmxpbmVUZXh0Qm94T3ZlcmZsb3dNYXA7CiAgICAgZ1RleHRCb3hl
c1dpdGhPdmVyZmxvdy0+YWRkKHRoaXMsIHJlY3QpOwogfQogCi1MYXlvdXRVbml0IElubGluZVRl
eHRCb3g6OmJhc2VsaW5lUG9zaXRpb24oRm9udEJhc2VsaW5lIGJhc2VsaW5lVHlwZSkgY29uc3QK
K0xheW91dFVuaXQgTGVnYWN5SW5saW5lVGV4dEJveDo6YmFzZWxpbmVQb3NpdGlvbihGb250QmFz
ZWxpbmUgYmFzZWxpbmVUeXBlKSBjb25zdAogewogICAgIGlmICghcGFyZW50KCkpCiAgICAgICAg
IHJldHVybiAwOwpAQCAtMTI4LDcgKzEyOCw3IEBAIExheW91dFVuaXQgSW5saW5lVGV4dEJveDo6
YmFzZWxpbmVQb3NpdGlvbihGb250QmFzZWxpbmUgYmFzZWxpbmVUeXBlKSBjb25zdAogICAgIHJl
dHVybiBkb3duY2FzdDxSZW5kZXJCb3hNb2RlbE9iamVjdD4oKnJlbmRlcmVyKCkucGFyZW50KCkp
LmJhc2VsaW5lUG9zaXRpb24oYmFzZWxpbmVUeXBlLCBpc0ZpcnN0TGluZSgpLCBpc0hvcml6b250
YWwoKSA/IEhvcml6b250YWxMaW5lIDogVmVydGljYWxMaW5lLCBQb3NpdGlvbk9uQ29udGFpbmlu
Z0xpbmUpOwogfQogCi1MYXlvdXRVbml0IElubGluZVRleHRCb3g6OmxpbmVIZWlnaHQoKSBjb25z
dAorTGF5b3V0VW5pdCBMZWdhY3lJbmxpbmVUZXh0Qm94OjpsaW5lSGVpZ2h0KCkgY29uc3QKIHsK
ICAgICBpZiAoIXJlbmRlcmVyKCkucGFyZW50KCkpCiAgICAgICAgIHJldHVybiAwOwpAQCAtMTM3
LDI3ICsxMzcsMjcgQEAgTGF5b3V0VW5pdCBJbmxpbmVUZXh0Qm94OjpsaW5lSGVpZ2h0KCkgY29u
c3QKICAgICByZXR1cm4gZG93bmNhc3Q8UmVuZGVyQm94TW9kZWxPYmplY3Q+KCpyZW5kZXJlcigp
LnBhcmVudCgpKS5saW5lSGVpZ2h0KGlzRmlyc3RMaW5lKCksIGlzSG9yaXpvbnRhbCgpID8gSG9y
aXpvbnRhbExpbmUgOiBWZXJ0aWNhbExpbmUsIFBvc2l0aW9uT25Db250YWluaW5nTGluZSk7CiB9
CiAKLUxheW91dFVuaXQgSW5saW5lVGV4dEJveDo6c2VsZWN0aW9uVG9wKCkgY29uc3QKK0xheW91
dFVuaXQgTGVnYWN5SW5saW5lVGV4dEJveDo6c2VsZWN0aW9uVG9wKCkgY29uc3QKIHsKICAgICBy
ZXR1cm4gcm9vdCgpLnNlbGVjdGlvblRvcCgpOwogfQogCi1MYXlvdXRVbml0IElubGluZVRleHRC
b3g6OnNlbGVjdGlvbkJvdHRvbSgpIGNvbnN0CitMYXlvdXRVbml0IExlZ2FjeUlubGluZVRleHRC
b3g6OnNlbGVjdGlvbkJvdHRvbSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHJvb3QoKS5zZWxlY3Rp
b25Cb3R0b20oKTsKIH0KIAotTGF5b3V0VW5pdCBJbmxpbmVUZXh0Qm94OjpzZWxlY3Rpb25IZWln
aHQoKSBjb25zdAorTGF5b3V0VW5pdCBMZWdhY3lJbmxpbmVUZXh0Qm94OjpzZWxlY3Rpb25IZWln
aHQoKSBjb25zdAogewogICAgIHJldHVybiByb290KCkuc2VsZWN0aW9uSGVpZ2h0KCk7CiB9CiAK
LWJvb2wgSW5saW5lVGV4dEJveDo6aXNTZWxlY3RlZCh1bnNpZ25lZCBzdGFydFBvc2l0aW9uLCB1
bnNpZ25lZCBlbmRQb3NpdGlvbikgY29uc3QKK2Jvb2wgTGVnYWN5SW5saW5lVGV4dEJveDo6aXNT
ZWxlY3RlZCh1bnNpZ25lZCBzdGFydFBvc2l0aW9uLCB1bnNpZ25lZCBlbmRQb3NpdGlvbikgY29u
c3QKIHsKICAgICByZXR1cm4gY2xhbXBlZE9mZnNldChzdGFydFBvc2l0aW9uKSA8IGNsYW1wZWRP
ZmZzZXQoZW5kUG9zaXRpb24pOwogfQogCi1SZW5kZXJPYmplY3Q6OkhpZ2hsaWdodFN0YXRlIElu
bGluZVRleHRCb3g6OnNlbGVjdGlvblN0YXRlKCkKK1JlbmRlck9iamVjdDo6SGlnaGxpZ2h0U3Rh
dGUgTGVnYWN5SW5saW5lVGV4dEJveDo6c2VsZWN0aW9uU3RhdGUoKQogewogICAgIGF1dG8gc3Rh
dGUgPSB2ZXJpZnlTZWxlY3Rpb25TdGF0ZShyZW5kZXJlcigpLnNlbGVjdGlvblN0YXRlKCksIHJl
bmRlcmVyKCkudmlldygpLnNlbGVjdGlvbigpKTsKICAgICAKQEAgLTE4Myw3ICsxODMsNyBAQCBS
ZW5kZXJPYmplY3Q6OkhpZ2hsaWdodFN0YXRlIElubGluZVRleHRCb3g6OnNlbGVjdGlvblN0YXRl
KCkKICAgICByZXR1cm4gc3RhdGU7CiB9CiAKLVJlbmRlck9iamVjdDo6SGlnaGxpZ2h0U3RhdGUg
SW5saW5lVGV4dEJveDo6dmVyaWZ5U2VsZWN0aW9uU3RhdGUoUmVuZGVyT2JqZWN0OjpIaWdobGln
aHRTdGF0ZSBzdGF0ZSwgSGlnaGxpZ2h0RGF0YSYgc2VsZWN0aW9uKSBjb25zdAorUmVuZGVyT2Jq
ZWN0OjpIaWdobGlnaHRTdGF0ZSBMZWdhY3lJbmxpbmVUZXh0Qm94Ojp2ZXJpZnlTZWxlY3Rpb25T
dGF0ZShSZW5kZXJPYmplY3Q6OkhpZ2hsaWdodFN0YXRlIHN0YXRlLCBIaWdobGlnaHREYXRhJiBz
ZWxlY3Rpb24pIGNvbnN0CiB7CiAgICAgaWYgKHN0YXRlID09IFJlbmRlck9iamVjdDo6SGlnaGxp
Z2h0U3RhdGU6OlN0YXJ0IHx8IHN0YXRlID09IFJlbmRlck9iamVjdDo6SGlnaGxpZ2h0U3RhdGU6
OkVuZCB8fCBzdGF0ZSA9PSBSZW5kZXJPYmplY3Q6OkhpZ2hsaWdodFN0YXRlOjpCb3RoKSB7CiAg
ICAgICAgIGF1dG8gc3RhcnRPZmZzZXQgPSBzZWxlY3Rpb24uc3RhcnRPZmZzZXQoKTsKQEAgLTIx
MCw3ICsyMTAsNyBAQCBSZW5kZXJPYmplY3Q6OkhpZ2hsaWdodFN0YXRlIElubGluZVRleHRCb3g6
OnZlcmlmeVNlbGVjdGlvblN0YXRlKFJlbmRlck9iamVjdDo6SAogICAgIHJldHVybiBzdGF0ZTsK
IH0KIAotaW5saW5lIGNvbnN0IEZvbnRDYXNjYWRlJiBJbmxpbmVUZXh0Qm94OjpsaW5lRm9udCgp
IGNvbnN0CitpbmxpbmUgY29uc3QgRm9udENhc2NhZGUmIExlZ2FjeUlubGluZVRleHRCb3g6Omxp
bmVGb250KCkgY29uc3QKIHsKICAgICByZXR1cm4gY29tYmluZWRUZXh0KCkgPyBjb21iaW5lZFRl
eHQoKS0+dGV4dENvbWJpbmVGb250KCkgOiBsaW5lU3R5bGUoKS5mb250Q2FzY2FkZSgpOwogfQpA
QCAtMjQwLDcgKzI0MCw3IEBAIExheW91dFJlY3Qgc25hcHBlZFNlbGVjdGlvblJlY3QoY29uc3Qg
TGF5b3V0UmVjdCYgc2VsZWN0aW9uUmVjdCwgZmxvYXQgbG9naWNhbFJpCiB9CiAKIC8vIEZJWE1F
OiBTaGFyZSBtb3JlIGNvZGUgd2l0aCBwYWludE1hcmtlZFRleHRCYWNrZ3JvdW5kKCkuCi1MYXlv
dXRSZWN0IElubGluZVRleHRCb3g6OmxvY2FsU2VsZWN0aW9uUmVjdCh1bnNpZ25lZCBzdGFydFBv
cywgdW5zaWduZWQgZW5kUG9zKSBjb25zdAorTGF5b3V0UmVjdCBMZWdhY3lJbmxpbmVUZXh0Qm94
Ojpsb2NhbFNlbGVjdGlvblJlY3QodW5zaWduZWQgc3RhcnRQb3MsIHVuc2lnbmVkIGVuZFBvcykg
Y29uc3QKIHsKICAgICB1bnNpZ25lZCBzUG9zID0gY2xhbXBlZE9mZnNldChzdGFydFBvcyk7CiAg
ICAgdW5zaWduZWQgZVBvcyA9IGNsYW1wZWRPZmZzZXQoZW5kUG9zKTsKQEAgLTI2MiwxMyArMjYy
LDEzIEBAIExheW91dFJlY3QgSW5saW5lVGV4dEJveDo6bG9jYWxTZWxlY3Rpb25SZWN0KHVuc2ln
bmVkIHN0YXJ0UG9zLCB1bnNpZ25lZCBlbmRQb3MpCiAgICAgcmV0dXJuIHNuYXBwZWRTZWxlY3Rp
b25SZWN0KHNlbGVjdGlvblJlY3QsIGxvZ2ljYWxSaWdodCgpLCBzZWxlY3Rpb25Ub3AsIHNlbGVj
dGlvbkhlaWdodCwgaXNIb3Jpem9udGFsKCkpOwogfQogCi12b2lkIElubGluZVRleHRCb3g6OmRl
bGV0ZUxpbmUoKQordm9pZCBMZWdhY3lJbmxpbmVUZXh0Qm94OjpkZWxldGVMaW5lKCkKIHsKICAg
ICByZW5kZXJlcigpLnJlbW92ZVRleHRCb3goKnRoaXMpOwogICAgIGRlbGV0ZSB0aGlzOwogfQog
Ci12b2lkIElubGluZVRleHRCb3g6OmV4dHJhY3RMaW5lKCkKK3ZvaWQgTGVnYWN5SW5saW5lVGV4
dEJveDo6ZXh0cmFjdExpbmUoKQogewogICAgIGlmIChleHRyYWN0ZWQoKSkKICAgICAgICAgcmV0
dXJuOwpAQCAtMjc2LDcgKzI3Niw3IEBAIHZvaWQgSW5saW5lVGV4dEJveDo6ZXh0cmFjdExpbmUo
KQogICAgIHJlbmRlcmVyKCkuZXh0cmFjdFRleHRCb3goKnRoaXMpOwogfQogCi12b2lkIElubGlu
ZVRleHRCb3g6OmF0dGFjaExpbmUoKQordm9pZCBMZWdhY3lJbmxpbmVUZXh0Qm94OjphdHRhY2hM
aW5lKCkKIHsKICAgICBpZiAoIWV4dHJhY3RlZCgpKQogICAgICAgICByZXR1cm47CkBAIC0yODQs
NyArMjg0LDcgQEAgdm9pZCBJbmxpbmVUZXh0Qm94OjphdHRhY2hMaW5lKCkKICAgICByZW5kZXJl
cigpLmF0dGFjaFRleHRCb3goKnRoaXMpOwogfQogCi1mbG9hdCBJbmxpbmVUZXh0Qm94OjpwbGFj
ZUVsbGlwc2lzQm94KGJvb2wgZmxvd0lzTFRSLCBmbG9hdCB2aXNpYmxlTGVmdEVkZ2UsIGZsb2F0
IHZpc2libGVSaWdodEVkZ2UsIGZsb2F0IGVsbGlwc2lzV2lkdGgsIGZsb2F0ICZ0cnVuY2F0ZWRX
aWR0aCwgYm9vbCYgZm91bmRCb3gpCitmbG9hdCBMZWdhY3lJbmxpbmVUZXh0Qm94OjpwbGFjZUVs
bGlwc2lzQm94KGJvb2wgZmxvd0lzTFRSLCBmbG9hdCB2aXNpYmxlTGVmdEVkZ2UsIGZsb2F0IHZp
c2libGVSaWdodEVkZ2UsIGZsb2F0IGVsbGlwc2lzV2lkdGgsIGZsb2F0ICZ0cnVuY2F0ZWRXaWR0
aCwgYm9vbCYgZm91bmRCb3gpCiB7CiAgICAgaWYgKGZvdW5kQm94KSB7CiAgICAgICAgIG1fdHJ1
bmNhdGlvbiA9IGNGdWxsVHJ1bmNhdGlvbjsKQEAgLTMwMCw3ICszMDAsNyBAQCBmbG9hdCBJbmxp
bmVUZXh0Qm94OjpwbGFjZUVsbGlwc2lzQm94KGJvb2wgZmxvd0lzTFRSLCBmbG9hdCB2aXNpYmxl
TGVmdEVkZ2UsIGZsbwogICAgIGJvb2wgbHRyRnVsbFRydW5jYXRpb24gPSBmbG93SXNMVFIgJiYg
ZWxsaXBzaXNYIDw9IGxlZnQoKTsKICAgICBib29sIHJ0bEZ1bGxUcnVuY2F0aW9uID0gIWZsb3dJ
c0xUUiAmJiBlbGxpcHNpc1ggPj0gbGVmdCgpICsgbG9naWNhbFdpZHRoKCk7CiAgICAgaWYgKGx0
ckZ1bGxUcnVuY2F0aW9uIHx8IHJ0bEZ1bGxUcnVuY2F0aW9uKSB7Ci0gICAgICAgIC8vIFRvbyBm
YXIuICBKdXN0IHNldCBmdWxsIHRydW5jYXRpb24sIGJ1dCByZXR1cm4gLTEgYW5kIGxldCB0aGUg
ZWxsaXBzaXMganVzdCBiZSBwbGFjZWQgYXQgdGhlIGVkZ2Ugb2YgdGhlIGJveC4KKyAgICAgICAg
Ly8gVG9vIGZhci4gSnVzdCBzZXQgZnVsbCB0cnVuY2F0aW9uLCBidXQgcmV0dXJuIC0xIGFuZCBs
ZXQgdGhlIGVsbGlwc2lzIGp1c3QgYmUgcGxhY2VkIGF0IHRoZSBlZGdlIG9mIHRoZSBib3guCiAg
ICAgICAgIG1fdHJ1bmNhdGlvbiA9IGNGdWxsVHJ1bmNhdGlvbjsKICAgICAgICAgZm91bmRCb3gg
PSB0cnVlOwogICAgICAgICByZXR1cm4gLTE7CkBAIC0zMTEsMTkgKzMxMSwxOSBAQCBmbG9hdCBJ
bmxpbmVUZXh0Qm94OjpwbGFjZUVsbGlwc2lzQm94KGJvb2wgZmxvd0lzTFRSLCBmbG9hdCB2aXNp
YmxlTGVmdEVkZ2UsIGZsbwogICAgIGlmIChsdHJFbGxpcHNpc1dpdGhpbkJveCB8fCBydGxFbGxp
cHNpc1dpdGhpbkJveCkgewogICAgICAgICBmb3VuZEJveCA9IHRydWU7CiAKLSAgICAgICAgLy8g
VGhlIGlubGluZSBib3ggbWF5IGhhdmUgZGlmZmVyZW50IGRpcmVjdGlvbmFsaXR5IHRoYW4gaXQn
cyBwYXJlbnQuICBTaW5jZSB0cnVuY2F0aW9uCisgICAgICAgIC8vIFRoZSBpbmxpbmUgYm94IG1h
eSBoYXZlIGRpZmZlcmVudCBkaXJlY3Rpb25hbGl0eSB0aGFuIGl0J3MgcGFyZW50LiBTaW5jZSB0
cnVuY2F0aW9uCiAgICAgICAgIC8vIGJlaGF2aW9yIGRlcGVuZHMgYm90aCBvbiBib3RoIHRoZSBw
YXJlbnQgYW5kIHRoZSBpbmxpbmUgYmxvY2sncyBkaXJlY3Rpb25hbGl0eSwgd2UKICAgICAgICAg
Ly8gbXVzdCBrZWVwIHRyYWNrIG9mIHRoZXNlIHNlcGFyYXRlbHkuCiAgICAgICAgIGJvb2wgbHRy
ID0gaXNMZWZ0VG9SaWdodERpcmVjdGlvbigpOwogICAgICAgICBpZiAobHRyICE9IGZsb3dJc0xU
UikgewotICAgICAgICAgIC8vIFdpZHRoIGluIHBpeGVscyBvZiB0aGUgdmlzaWJsZSBwb3J0aW9u
IG9mIHRoZSBib3gsIGV4Y2x1ZGluZyB0aGUgZWxsaXBzaXMuCi0gICAgICAgICAgaW50IHZpc2li
bGVCb3hXaWR0aCA9IHZpc2libGVSaWdodEVkZ2UgLSB2aXNpYmxlTGVmdEVkZ2UgIC0gZWxsaXBz
aXNXaWR0aDsKLSAgICAgICAgICBlbGxpcHNpc1ggPSBsdHIgPyBsZWZ0KCkgKyB2aXNpYmxlQm94
V2lkdGggOiByaWdodCgpIC0gdmlzaWJsZUJveFdpZHRoOworICAgICAgICAgICAgLy8gV2lkdGgg
aW4gcGl4ZWxzIG9mIHRoZSB2aXNpYmxlIHBvcnRpb24gb2YgdGhlIGJveCwgZXhjbHVkaW5nIHRo
ZSBlbGxpcHNpcy4KKyAgICAgICAgICAgIGludCB2aXNpYmxlQm94V2lkdGggPSB2aXNpYmxlUmln
aHRFZGdlIC0gdmlzaWJsZUxlZnRFZGdlICAtIGVsbGlwc2lzV2lkdGg7CisgICAgICAgICAgICBl
bGxpcHNpc1ggPSBsdHIgPyBsZWZ0KCkgKyB2aXNpYmxlQm94V2lkdGggOiByaWdodCgpIC0gdmlz
aWJsZUJveFdpZHRoOwogICAgICAgICB9CiAKICAgICAgICAgaW50IG9mZnNldCA9IG9mZnNldEZv
clBvc2l0aW9uKGVsbGlwc2lzWCwgZmFsc2UpOwotICAgICAgICBpZiAob2Zmc2V0ID09IDApIHsK
LSAgICAgICAgICAgIC8vIE5vIGNoYXJhY3RlcnMgc2hvdWxkIGJlIHJlbmRlcmVkLiAgU2V0IG91
cnNlbHZlcyB0byBmdWxsIHRydW5jYXRpb24gYW5kIHBsYWNlIHRoZSBlbGxpcHNpcyBhdCB0aGUg
bWluIG9mIG91ciBzdGFydAorICAgICAgICBpZiAoIW9mZnNldCkgeworICAgICAgICAgICAgLy8g
Tm8gY2hhcmFjdGVycyBzaG91bGQgYmUgcmVuZGVyZWQuIFNldCBvdXJzZWx2ZXMgdG8gZnVsbCB0
cnVuY2F0aW9uIGFuZCBwbGFjZSB0aGUgZWxsaXBzaXMgYXQgdGhlIG1pbiBvZiBvdXIgc3RhcnQK
ICAgICAgICAgICAgIC8vIGFuZCB0aGUgZWxsaXBzaXMgZWRnZS4KICAgICAgICAgICAgIG1fdHJ1
bmNhdGlvbiA9IGNGdWxsVHJ1bmNhdGlvbjsKICAgICAgICAgICAgIHRydW5jYXRlZFdpZHRoICs9
IGVsbGlwc2lzV2lkdGg7CkBAIC0zNDUsMjEgKzM0NSwxOSBAQCBmbG9hdCBJbmxpbmVUZXh0Qm94
OjpwbGFjZUVsbGlwc2lzQm94KGJvb2wgZmxvd0lzTFRSLCBmbG9hdCB2aXNpYmxlTGVmdEVkZ2Us
IGZsbwogICAgICAgICB0cnVuY2F0ZWRXaWR0aCArPSB3aWR0aE9mVmlzaWJsZVRleHQgKyBlbGxp
cHNpc1dpZHRoOwogICAgICAgICBpZiAoZmxvd0lzTFRSKQogICAgICAgICAgICAgcmV0dXJuIGxl
ZnQoKSArIHdpZHRoT2ZWaXNpYmxlVGV4dDsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgcmV0
dXJuIHJpZ2h0KCkgLSB3aWR0aE9mVmlzaWJsZVRleHQgLSBlbGxpcHNpc1dpZHRoOworCisgICAg
ICAgIHJldHVybiByaWdodCgpIC0gd2lkdGhPZlZpc2libGVUZXh0IC0gZWxsaXBzaXNXaWR0aDsK
ICAgICB9CiAgICAgdHJ1bmNhdGVkV2lkdGggKz0gbG9naWNhbFdpZHRoKCk7CiAgICAgcmV0dXJu
IC0xOwogfQogCi0KLQotYm9vbCBJbmxpbmVUZXh0Qm94Ojppc0xpbmVCcmVhaygpIGNvbnN0Citi
b29sIExlZ2FjeUlubGluZVRleHRCb3g6OmlzTGluZUJyZWFrKCkgY29uc3QKIHsKICAgICByZXR1
cm4gcmVuZGVyZXIoKS5zdHlsZSgpLnByZXNlcnZlTmV3bGluZSgpICYmIGxlbigpID09IDEgJiYg
cmVuZGVyZXIoKS50ZXh0KClbc3RhcnQoKV0gPT0gJ1xuJzsKIH0KIAotYm9vbCBJbmxpbmVUZXh0
Qm94Ojpub2RlQXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgSGl0VGVzdFJl
c3VsdCYgcmVzdWx0LCBjb25zdCBIaXRUZXN0TG9jYXRpb24mIGxvY2F0aW9uSW5Db250YWluZXIs
IGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCwgTGF5b3V0VW5pdCAvKiBsaW5l
VG9wICovLCBMYXlvdXRVbml0IC8qbGluZUJvdHRvbSovLAorYm9vbCBMZWdhY3lJbmxpbmVUZXh0
Qm94Ojpub2RlQXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgSGl0VGVzdFJl
c3VsdCYgcmVzdWx0LCBjb25zdCBIaXRUZXN0TG9jYXRpb24mIGxvY2F0aW9uSW5Db250YWluZXIs
IGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCwgTGF5b3V0VW5pdCAvKiBsaW5l
VG9wICovLCBMYXlvdXRVbml0IC8qbGluZUJvdHRvbSovLAogICAgIEhpdFRlc3RBY3Rpb24gLypo
aXRUZXN0QWN0aW9uKi8pCiB7CiAgICAgaWYgKCF2aXNpYmxlVG9IaXRUZXN0aW5nKHJlcXVlc3Qp
KQpAQCAtMzkyLDcgKzM5MCw3IEBAIGJvb2wgSW5saW5lVGV4dEJveDo6bm9kZUF0UG9pbnQoY29u
c3QgSGl0VGVzdFJlcXVlc3QmIHJlcXVlc3QsIEhpdFRlc3RSZXN1bHQmIHJlCiAgICAgcmV0dXJu
IGZhbHNlOwogfQogCi1zdGQ6Om9wdGlvbmFsPGJvb2w+IElubGluZVRleHRCb3g6OmVtcGhhc2lz
TWFya0V4aXN0c0FuZElzQWJvdmUoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKSBjb25zdAorc3Rk
OjpvcHRpb25hbDxib29sPiBMZWdhY3lJbmxpbmVUZXh0Qm94OjplbXBoYXNpc01hcmtFeGlzdHNB
bmRJc0Fib3ZlKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkgY29uc3QKIHsKICAgICAvLyBUaGlz
IGZ1bmN0aW9uIHJldHVybnMgdHJ1ZSBpZiB0aGVyZSBhcmUgdGV4dCBlbXBoYXNpcyBtYXJrcyBh
bmQgdGhleSBhcmUgc3VwcHJlc3NlZCBieSBydWJ5IHRleHQuCiAgICAgaWYgKHN0eWxlLnRleHRF
bXBoYXNpc01hcmsoKSA9PSBUZXh0RW1waGFzaXNNYXJrOjpOb25lKQpAQCAtNDMzLDcgKzQzMSw3
IEBAIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gSW5saW5lVGV4dEJveDo6ZW1waGFzaXNNYXJrRXhpc3Rz
QW5kSXNBYm92ZShjb25zdCBSZW5kZXJTdHlsCiAgICAgcmV0dXJuIGlzQWJvdmU7CiB9CiAKLXN0
YXRpYyBNYXJrZWRUZXh0IGNyZWF0ZU1hcmtlZFRleHRGcm9tU2VsZWN0aW9uSW5Cb3goY29uc3Qg
SW5saW5lVGV4dEJveCYgYm94KQorc3RhdGljIE1hcmtlZFRleHQgY3JlYXRlTWFya2VkVGV4dEZy
b21TZWxlY3Rpb25JbkJveChjb25zdCBMZWdhY3lJbmxpbmVUZXh0Qm94JiBib3gpCiB7CiAgICAg
YXV0byBbc2VsZWN0aW9uU3RhcnQsIHNlbGVjdGlvbkVuZF0gPSBib3guc2VsZWN0aW9uU3RhcnRF
bmQoKTsKICAgICBpZiAoc2VsZWN0aW9uU3RhcnQgPCBzZWxlY3Rpb25FbmQpCkBAIC00NDEsNyAr
NDM5LDcgQEAgc3RhdGljIE1hcmtlZFRleHQgY3JlYXRlTWFya2VkVGV4dEZyb21TZWxlY3Rpb25J
bkJveChjb25zdCBJbmxpbmVUZXh0Qm94JiBib3gpCiAgICAgcmV0dXJuIHsgfTsKIH0KIAotdm9p
ZCBJbmxpbmVUZXh0Qm94OjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0
UG9pbnQmIHBhaW50T2Zmc2V0LCBMYXlvdXRVbml0IC8qbGluZVRvcCovLCBMYXlvdXRVbml0IC8q
bGluZUJvdHRvbSovKQordm9pZCBMZWdhY3lJbmxpbmVUZXh0Qm94OjpwYWludChQYWludEluZm8m
IHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0LCBMYXlvdXRVbml0IC8q
bGluZVRvcCovLCBMYXlvdXRVbml0IC8qbGluZUJvdHRvbSovKQogewogICAgIGlmIChpc0xpbmVC
cmVhaygpIHx8ICFwYWludEluZm8uc2hvdWxkUGFpbnRXaXRoaW5Sb290KHJlbmRlcmVyKCkpIHx8
IHJlbmRlcmVyKCkuc3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVmlzaWJpbGl0eTo6VmlzaWJsZQog
ICAgICAgICB8fCBtX3RydW5jYXRpb24gPT0gY0Z1bGxUcnVuY2F0aW9uIHx8IHBhaW50SW5mby5w
aGFzZSA9PSBQYWludFBoYXNlOjpPdXRsaW5lIHx8ICFoYXNUZXh0Q29udGVudCgpKQpAQCAtNTM5
LDkgKzUzNyw5IEBAIHZvaWQgSW5saW5lVGV4dEJveDo6cGFpbnQoUGFpbnRJbmZvJiBwYWludElu
Zm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCwKICAgICAgICAgcGFpbnRNYXJrZWRU
ZXh0cyhwYWludEluZm8sIFRleHRQYWludFBoYXNlOjpCYWNrZ3JvdW5kLCBib3hSZWN0LCBjb2Fs
ZXNjZWRTdHlsZWRNYXJrZWRUZXh0cyk7CiAgICAgfQogCi0gICAgLy8gRklYTUU6IFJpZ2h0IG5v
dywgSW5saW5lVGV4dEJveGVzIG5ldmVyIGNhbGwgYWRkUmVsZXZhbnRVbnBhaW50ZWRPYmplY3Qo
KSBldmVuIHRob3VnaCB0aGV5IG1pZ2h0CisgICAgLy8gRklYTUU6IFJpZ2h0IG5vdywgTGVnYWN5
SW5saW5lVGV4dEJveGVzIG5ldmVyIGNhbGwgYWRkUmVsZXZhbnRVbnBhaW50ZWRPYmplY3QoKSBl
dmVuIHRob3VnaCB0aGV5IG1pZ2h0CiAgICAgLy8gbGVnaXRpbWF0ZWx5IGJlIHVucGFpbnRlZCBp
ZiB0aGV5IGFyZSB3YWl0aW5nIG9uIGEgc2xvdy1sb2FkaW5nIHdlYiBmb250LiBXZSBzaG91bGQg
Zml4IHRoYXQsIGFuZAotICAgIC8vIHdoZW4gd2UgZG8sIHdlIHdpbGwgaGF2ZSB0byBhY2NvdW50
IGZvciB0aGUgZmFjdCB0aGUgSW5saW5lVGV4dEJveGVzIGRvIG5vdCBhbHdheXMgaGF2ZSB1bmlx
dWUKKyAgICAvLyB3aGVuIHdlIGRvLCB3ZSB3aWxsIGhhdmUgdG8gYWNjb3VudCBmb3IgdGhlIGZh
Y3QgdGhlIExlZ2FjeUlubGluZVRleHRCb3hlcyBkbyBub3QgYWx3YXlzIGhhdmUgdW5pcXVlCiAg
ICAgLy8gcmVuZGVyZXJzIGFuZCBQYWdlIGN1cnJlbnRseSByZWxpZXMgb24gZWFjaCB1bnBhaW50
ZWQgb2JqZWN0IGhhdmluZyBhIHVuaXF1ZSByZW5kZXJlci4KICAgICBpZiAocGFpbnRJbmZvLnBo
YXNlID09IFBhaW50UGhhc2U6OkZvcmVncm91bmQpCiAgICAgICAgIHJlbmRlcmVyKCkucGFnZSgp
LmFkZFJlbGV2YW50UmVwYWludGVkT2JqZWN0KCZyZW5kZXJlcigpLCBJbnRSZWN0KGJveE9yaWdp
bi54KCksIGJveE9yaWdpbi55KCksIGxvZ2ljYWxXaWR0aCgpLCBsb2dpY2FsSGVpZ2h0KCkpKTsK
QEAgLTU4Miw4ICs1ODAsMTEgQEAgdm9pZCBJbmxpbmVUZXh0Qm94OjpwYWludChQYWludEluZm8m
IHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0LAogICAgIGF1dG8gc3R5
bGVkTWFya2VkVGV4dHMgPSBzdWJkaXZpZGVBbmRSZXNvbHZlU3R5bGUobWFya2VkVGV4dHMsIHJl
bmRlcmVyKCksIGlzRmlyc3RMaW5lKCksIHBhaW50SW5mbyk7CiAKICAgICAvLyAuLi4gbm93IHJl
bW92ZSB0aGUgc2VsZWN0aW9uIG1hcmtlZCB0ZXh0IGlmIHdlIGFyZSBleGNsdWRpbmcgc2VsZWN0
aW9uLgotICAgIGlmICghaXNQcmludGluZyAmJiBwYWludEluZm8ucGFpbnRCZWhhdmlvci5jb250
YWlucyhQYWludEJlaGF2aW9yOjpFeGNsdWRlU2VsZWN0aW9uKSkKLSAgICAgICAgc3R5bGVkTWFy
a2VkVGV4dHMucmVtb3ZlQWxsTWF0Y2hpbmcoW10gKGNvbnN0IFN0eWxlZE1hcmtlZFRleHQmIG1h
cmtlZFRleHQpIHsgcmV0dXJuIG1hcmtlZFRleHQudHlwZSA9PSBNYXJrZWRUZXh0OjpTZWxlY3Rp
b247IH0pOworICAgIGlmICghaXNQcmludGluZyAmJiBwYWludEluZm8ucGFpbnRCZWhhdmlvci5j
b250YWlucyhQYWludEJlaGF2aW9yOjpFeGNsdWRlU2VsZWN0aW9uKSkgeworICAgICAgICBzdHls
ZWRNYXJrZWRUZXh0cy5yZW1vdmVBbGxNYXRjaGluZyhbXSAoY29uc3QgU3R5bGVkTWFya2VkVGV4
dCYgbWFya2VkVGV4dCkgeworICAgICAgICAgICAgcmV0dXJuIG1hcmtlZFRleHQudHlwZSA9PSBN
YXJrZWRUZXh0OjpTZWxlY3Rpb247CisgICAgICAgIH0pOworICAgIH0KIAogICAgIC8vIENvYWxl
c2NlIHN0eWxlcyBvZiBhZGphY2VudCBtYXJrZWQgdGV4dHMgdG8gbWluaW1pemUgdGhlIG51bWJl
ciBvZiBkcmF3aW5nIGNvbW1hbmRzLgogICAgIGF1dG8gY29hbGVzY2VkU3R5bGVkTWFya2VkVGV4
dHMgPSBjb2FsZXNjZUFkamFjZW50TWFya2VkVGV4dHMoc3R5bGVkTWFya2VkVGV4dHMsICZNYXJr
ZWRUZXh0U3R5bGU6OmFyZUZvcmVncm91bmRNYXJrZWRUZXh0U3R5bGVzRXF1YWwpOwpAQCAtNjM4
LDcgKzYzOSw3IEBAIHZvaWQgSW5saW5lVGV4dEJveDo6cGFpbnQoUGFpbnRJbmZvJiBwYWludElu
Zm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCwKICAgICAgICAgY29udGV4dC5jb25j
YXRDVE0ocm90YXRpb24oYm94UmVjdCwgQ291bnRlcmNsb2Nrd2lzZSkpOwogfQogCi11bnNpZ25l
ZCBJbmxpbmVUZXh0Qm94OjpjbGFtcGVkT2Zmc2V0KHVuc2lnbmVkIHgpIGNvbnN0Cit1bnNpZ25l
ZCBMZWdhY3lJbmxpbmVUZXh0Qm94OjpjbGFtcGVkT2Zmc2V0KHVuc2lnbmVkIHgpIGNvbnN0CiB7
CiAgICAgdW5zaWduZWQgb2Zmc2V0ID0gc3RkOjptYXgoc3RkOjptaW4oeCwgbV9zdGFydCArIG1f
bGVuKSwgbV9zdGFydCkgLSBtX3N0YXJ0OwogICAgIGlmIChtX3RydW5jYXRpb24gPT0gY0Z1bGxU
cnVuY2F0aW9uKQpAQCAtNjU3LDcgKzY1OCw3IEBAIHVuc2lnbmVkIElubGluZVRleHRCb3g6OmNs
YW1wZWRPZmZzZXQodW5zaWduZWQgeCkgY29uc3QKICAgICByZXR1cm4gb2Zmc2V0OwogfQogCi1z
dGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiBJbmxpbmVUZXh0Qm94OjpjbGFtcGVkU3RhcnRF
bmRGb3JTdGF0ZSh1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgZW5kLCBSZW5kZXJPYmplY3Q6Okhp
Z2hsaWdodFN0YXRlIHNlbGVjdGlvblN0YXRlKSBjb25zdAorc3RkOjpwYWlyPHVuc2lnbmVkLCB1
bnNpZ25lZD4gTGVnYWN5SW5saW5lVGV4dEJveDo6Y2xhbXBlZFN0YXJ0RW5kRm9yU3RhdGUodW5z
aWduZWQgc3RhcnQsIHVuc2lnbmVkIGVuZCwgUmVuZGVyT2JqZWN0OjpIaWdobGlnaHRTdGF0ZSBz
ZWxlY3Rpb25TdGF0ZSkgY29uc3QKIHsKICAgICBpZiAoc2VsZWN0aW9uU3RhdGUgPT0gUmVuZGVy
T2JqZWN0OjpIaWdobGlnaHRTdGF0ZTo6SW5zaWRlKQogICAgICAgICByZXR1cm4geyAwLCBjbGFt
cGVkT2Zmc2V0KG1fc3RhcnQgKyBtX2xlbikgfTsKQEAgLTY2OSwxNCArNjcwLDE0IEBAIHN0ZDo6
cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IElubGluZVRleHRCb3g6OmNsYW1wZWRTdGFydEVuZEZv
clN0YXRlKHVuc2lnbmVkIHN0CiAgICAgcmV0dXJuIHsgY2xhbXBlZE9mZnNldChzdGFydCksIGNs
YW1wZWRPZmZzZXQoZW5kKSB9OwogfQogCi1zdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiBJ
bmxpbmVUZXh0Qm94OjpzZWxlY3Rpb25TdGFydEVuZCgpIGNvbnN0CitzdGQ6OnBhaXI8dW5zaWdu
ZWQsIHVuc2lnbmVkPiBMZWdhY3lJbmxpbmVUZXh0Qm94OjpzZWxlY3Rpb25TdGFydEVuZCgpIGNv
bnN0CiB7CiAgICAgYXV0byBzZWxlY3Rpb25TdGF0ZSA9IHJlbmRlcmVyKCkuc2VsZWN0aW9uU3Rh
dGUoKTsKICAgICAKICAgICByZXR1cm4gY2xhbXBlZFN0YXJ0RW5kRm9yU3RhdGUocmVuZGVyZXIo
KS52aWV3KCkuc2VsZWN0aW9uKCkuc3RhcnRPZmZzZXQoKSwgcmVuZGVyZXIoKS52aWV3KCkuc2Vs
ZWN0aW9uKCkuZW5kT2Zmc2V0KCksIHNlbGVjdGlvblN0YXRlKTsKIH0KIAotc3RkOjpwYWlyPHVu
c2lnbmVkLCB1bnNpZ25lZD4gSW5saW5lVGV4dEJveDo6aGlnaGxpZ2h0U3RhcnRFbmQoSGlnaGxp
Z2h0RGF0YSAmcmFuZ2VEYXRhKSBjb25zdAorc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4g
TGVnYWN5SW5saW5lVGV4dEJveDo6aGlnaGxpZ2h0U3RhcnRFbmQoSGlnaGxpZ2h0RGF0YSAmcmFu
Z2VEYXRhKSBjb25zdAogewogICAgIGF1dG8gc3RhdGUgPSByYW5nZURhdGEuaGlnaGxpZ2h0U3Rh
dGVGb3JSZW5kZXJlcihyZW5kZXJlcigpKTsKICAgICBzdGF0ZSA9IHZlcmlmeVNlbGVjdGlvblN0
YXRlKHN0YXRlLCByYW5nZURhdGEpOwpAQCAtNjg3LDE5ICs2ODgsMTkgQEAgc3RkOjpwYWlyPHVu
c2lnbmVkLCB1bnNpZ25lZD4gSW5saW5lVGV4dEJveDo6aGlnaGxpZ2h0U3RhcnRFbmQoSGlnaGxp
Z2h0RGF0YSAmcmEKICAgICByZXR1cm4gY2xhbXBlZFN0YXJ0RW5kRm9yU3RhdGUocmFuZ2VEYXRh
LnN0YXJ0T2Zmc2V0KCksIHJhbmdlRGF0YS5lbmRPZmZzZXQoKSwgc3RhdGUpOwogfQogCi1ib29s
IElubGluZVRleHRCb3g6Omhhc01hcmtlcnMoKSBjb25zdAorYm9vbCBMZWdhY3lJbmxpbmVUZXh0
Qm94OjpoYXNNYXJrZXJzKCkgY29uc3QKIHsKICAgICByZXR1cm4gY29sbGVjdE1hcmtlZFRleHRz
Rm9yRG9jdW1lbnRNYXJrZXJzKFRleHRQYWludFBoYXNlOjpEZWNvcmF0aW9uKS5zaXplKCk7CiB9
CiAKLXZvaWQgSW5saW5lVGV4dEJveDo6cGFpbnRQbGF0Zm9ybURvY3VtZW50TWFya2VycyhHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UG9pbnQmIGJveE9yaWdpbikKK3ZvaWQg
TGVnYWN5SW5saW5lVGV4dEJveDo6cGFpbnRQbGF0Zm9ybURvY3VtZW50TWFya2VycyhHcmFwaGlj
c0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UG9pbnQmIGJveE9yaWdpbikKIHsKICAgICAv
LyBUaGlzIG11c3QgbWF0Y2ggY2FsY3VsYXRlVW5pb25PZkFsbERvY3VtZW50TWFya2VyQm91bmRz
KCkuCiAgICAgZm9yIChhdXRvJiBtYXJrZWRUZXh0IDogc3ViZGl2aWRlKGNvbGxlY3RNYXJrZWRU
ZXh0c0ZvckRvY3VtZW50TWFya2VycyhUZXh0UGFpbnRQaGFzZTo6RGVjb3JhdGlvbiksIE92ZXJs
YXBTdHJhdGVneTo6RnJvbnRtb3N0KSkKICAgICAgICAgcGFpbnRQbGF0Zm9ybURvY3VtZW50TWFy
a2VyKGNvbnRleHQsIGJveE9yaWdpbiwgbWFya2VkVGV4dCk7CiB9CiAKLUZsb2F0UmVjdCBJbmxp
bmVUZXh0Qm94OjpjYWxjdWxhdGVVbmlvbk9mQWxsRG9jdW1lbnRNYXJrZXJCb3VuZHMoKSBjb25z
dAorRmxvYXRSZWN0IExlZ2FjeUlubGluZVRleHRCb3g6OmNhbGN1bGF0ZVVuaW9uT2ZBbGxEb2N1
bWVudE1hcmtlckJvdW5kcygpIGNvbnN0CiB7CiAgICAgLy8gVGhpcyBtdXN0IG1hdGNoIHBhaW50
UGxhdGZvcm1Eb2N1bWVudE1hcmtlcnMoKS4KICAgICBGbG9hdFJlY3QgcmVzdWx0OwpAQCAtNzA4
LDcgKzcwOSw3IEBAIEZsb2F0UmVjdCBJbmxpbmVUZXh0Qm94OjpjYWxjdWxhdGVVbmlvbk9mQWxs
RG9jdW1lbnRNYXJrZXJCb3VuZHMoKSBjb25zdAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLUZs
b2F0UmVjdCBJbmxpbmVUZXh0Qm94OjpjYWxjdWxhdGVEb2N1bWVudE1hcmtlckJvdW5kcyhjb25z
dCBNYXJrZWRUZXh0JiBtYXJrZWRUZXh0KSBjb25zdAorRmxvYXRSZWN0IExlZ2FjeUlubGluZVRl
eHRCb3g6OmNhbGN1bGF0ZURvY3VtZW50TWFya2VyQm91bmRzKGNvbnN0IE1hcmtlZFRleHQmIG1h
cmtlZFRleHQpIGNvbnN0CiB7CiAgICAgYXV0byYgZm9udCA9IGxpbmVGb250KCk7CiAgICAgYXV0
byBhc2NlbnQgPSBmb250LmZvbnRNZXRyaWNzKCkuYXNjZW50KCk7CkBAIC03MjcsNyArNzI4LDcg
QEAgRmxvYXRSZWN0IElubGluZVRleHRCb3g6OmNhbGN1bGF0ZURvY3VtZW50TWFya2VyQm91bmRz
KGNvbnN0IE1hcmtlZFRleHQmIG1hcmtlZFQKICAgICByZXR1cm4gRmxvYXRSZWN0KDAsIHksIGxv
Z2ljYWxXaWR0aCgpLCBoZWlnaHQpOwogfQogCi12b2lkIElubGluZVRleHRCb3g6OnBhaW50UGxh
dGZvcm1Eb2N1bWVudE1hcmtlcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0
UG9pbnQmIGJveE9yaWdpbiwgY29uc3QgTWFya2VkVGV4dCYgbWFya2VkVGV4dCkKK3ZvaWQgTGVn
YWN5SW5saW5lVGV4dEJveDo6cGFpbnRQbGF0Zm9ybURvY3VtZW50TWFya2VyKEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRQb2ludCYgYm94T3JpZ2luLCBjb25zdCBNYXJrZWRU
ZXh0JiBtYXJrZWRUZXh0KQogewogICAgIC8vIE5ldmVyIHByaW50IHNwZWxsaW5nL2dyYW1tYXIg
bWFya2VycyAoNTMyNzg4NykKICAgICBpZiAocmVuZGVyZXIoKS5kb2N1bWVudCgpLnByaW50aW5n
KCkpCkBAIC03NjQsNyArNzY1LDcgQEAgdm9pZCBJbmxpbmVUZXh0Qm94OjpwYWludFBsYXRmb3Jt
RG9jdW1lbnRNYXJrZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdAogICAgIGNvbnRl
eHQuZHJhd0RvdHNGb3JEb2N1bWVudE1hcmtlcihib3VuZHMsIGxpbmVTdHlsZUZvck1hcmtlZFRl
eHRUeXBlKCkpOwogfQogCi1WZWN0b3I8TWFya2VkVGV4dD4gSW5saW5lVGV4dEJveDo6Y29sbGVj
dE1hcmtlZFRleHRzRm9yRHJhZ2dlZENvbnRlbnQoKQorVmVjdG9yPE1hcmtlZFRleHQ+IExlZ2Fj
eUlubGluZVRleHRCb3g6OmNvbGxlY3RNYXJrZWRUZXh0c0ZvckRyYWdnZWRDb250ZW50KCkKIHsK
ICAgICB1c2luZyBEcmFnZ2VuZENvbnRlbnRSYW5nZSA9IHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5z
aWduZWQ+OwogICAgIGF1dG8gZHJhZ2dlZENvbnRlbnRSYW5nZXMgPSByZW5kZXJlcigpLmRyYWdn
ZWRDb250ZW50UmFuZ2VzQmV0d2Vlbk9mZnNldHMobV9zdGFydCwgbV9zdGFydCArIG1fbGVuKTsK
QEAgLTc3NCw3ICs3NzUsNyBAQCBWZWN0b3I8TWFya2VkVGV4dD4gSW5saW5lVGV4dEJveDo6Y29s
bGVjdE1hcmtlZFRleHRzRm9yRHJhZ2dlZENvbnRlbnQoKQogICAgIHJldHVybiByZXN1bHQ7CiB9
CiAKLVZlY3RvcjxNYXJrZWRUZXh0PiBJbmxpbmVUZXh0Qm94Ojpjb2xsZWN0TWFya2VkVGV4dHNG
b3JEb2N1bWVudE1hcmtlcnMoVGV4dFBhaW50UGhhc2UgcGhhc2UpIGNvbnN0CitWZWN0b3I8TWFy
a2VkVGV4dD4gTGVnYWN5SW5saW5lVGV4dEJveDo6Y29sbGVjdE1hcmtlZFRleHRzRm9yRG9jdW1l
bnRNYXJrZXJzKFRleHRQYWludFBoYXNlIHBoYXNlKSBjb25zdAogewogICAgIEFTU0VSVF9BUkco
cGhhc2UsIHBoYXNlID09IFRleHRQYWludFBoYXNlOjpCYWNrZ3JvdW5kIHx8IHBoYXNlID09IFRl
eHRQYWludFBoYXNlOjpGb3JlZ3JvdW5kIHx8IHBoYXNlID09IFRleHRQYWludFBoYXNlOjpEZWNv
cmF0aW9uKTsKIApAQCAtODc5LDcgKzg4MCw3IEBAIFZlY3RvcjxNYXJrZWRUZXh0PiBJbmxpbmVU
ZXh0Qm94Ojpjb2xsZWN0TWFya2VkVGV4dHNGb3JEb2N1bWVudE1hcmtlcnMoVGV4dFBhaW50CiAg
ICAgcmV0dXJuIG1hcmtlZFRleHRzOwogfQogCi1WZWN0b3I8TWFya2VkVGV4dD4gSW5saW5lVGV4
dEJveDo6Y29sbGVjdE1hcmtlZFRleHRzRm9ySGlnaGxpZ2h0cyhUZXh0UGFpbnRQaGFzZSBwaGFz
ZSkgY29uc3QKK1ZlY3RvcjxNYXJrZWRUZXh0PiBMZWdhY3lJbmxpbmVUZXh0Qm94Ojpjb2xsZWN0
TWFya2VkVGV4dHNGb3JIaWdobGlnaHRzKFRleHRQYWludFBoYXNlIHBoYXNlKSBjb25zdAogewog
ICAgIEFTU0VSVF9BUkcocGhhc2UsIHBoYXNlID09IFRleHRQYWludFBoYXNlOjpCYWNrZ3JvdW5k
IHx8IHBoYXNlID09IFRleHRQYWludFBoYXNlOjpGb3JlZ3JvdW5kIHx8IHBoYXNlID09IFRleHRQ
YWludFBoYXNlOjpEZWNvcmF0aW9uKTsKICAgICBVTlVTRURfUEFSQU0ocGhhc2UpOwpAQCAtOTI4
LDcgKzkyOSw3IEBAIFZlY3RvcjxNYXJrZWRUZXh0PiBJbmxpbmVUZXh0Qm94Ojpjb2xsZWN0TWFy
a2VkVGV4dHNGb3JIaWdobGlnaHRzKFRleHRQYWludFBoYXNlCiAgICAgcmV0dXJuIG1hcmtlZFRl
eHRzOwogfQogCi1GbG9hdFBvaW50IElubGluZVRleHRCb3g6OnRleHRPcmlnaW5Gcm9tQm94UmVj
dChjb25zdCBGbG9hdFJlY3QmIGJveFJlY3QpIGNvbnN0CitGbG9hdFBvaW50IExlZ2FjeUlubGlu
ZVRleHRCb3g6OnRleHRPcmlnaW5Gcm9tQm94UmVjdChjb25zdCBGbG9hdFJlY3QmIGJveFJlY3Qp
IGNvbnN0CiB7CiAgICAgRmxvYXRQb2ludCB0ZXh0T3JpZ2luIHsgYm94UmVjdC54KCksIGJveFJl
Y3QueSgpICsgbGluZUZvbnQoKS5mb250TWV0cmljcygpLmFzY2VudCgpIH07CiAgICAgaWYgKGF1
dG8qIGNvbWJpbmVkVGV4dCA9IHRoaXMtPmNvbWJpbmVkVGV4dCgpKSB7CkBAIC05NDIsNyArOTQz
LDcgQEAgRmxvYXRQb2ludCBJbmxpbmVUZXh0Qm94Ojp0ZXh0T3JpZ2luRnJvbUJveFJlY3QoY29u
c3QgRmxvYXRSZWN0JiBib3hSZWN0KSBjb25zdAogICAgIHJldHVybiB0ZXh0T3JpZ2luOwogfQog
Ci12b2lkIElubGluZVRleHRCb3g6OnBhaW50TWFya2VkVGV4dHMoUGFpbnRJbmZvJiBwYWludElu
Zm8sIFRleHRQYWludFBoYXNlIHBoYXNlLCBjb25zdCBGbG9hdFJlY3QmIGJveFJlY3QsIGNvbnN0
IFZlY3RvcjxTdHlsZWRNYXJrZWRUZXh0PiYgbWFya2VkVGV4dHMsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVjb3JhdGlvbkNsaXBPdXRSZWN0KQordm9pZCBMZWdhY3lJbmxpbmVUZXh0Qm94OjpwYWludE1h
cmtlZFRleHRzKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBUZXh0UGFpbnRQaGFzZSBwaGFzZSwgY29u
c3QgRmxvYXRSZWN0JiBib3hSZWN0LCBjb25zdCBWZWN0b3I8U3R5bGVkTWFya2VkVGV4dD4mIG1h
cmtlZFRleHRzLCBjb25zdCBGbG9hdFJlY3QmIGRlY29yYXRpb25DbGlwT3V0UmVjdCkKIHsKICAg
ICBzd2l0Y2ggKHBoYXNlKSB7CiAgICAgY2FzZSBUZXh0UGFpbnRQaGFzZTo6QmFja2dyb3VuZDoK
QEAgLTk2MCw3ICs5NjEsNyBAQCB2b2lkIElubGluZVRleHRCb3g6OnBhaW50TWFya2VkVGV4dHMo
UGFpbnRJbmZvJiBwYWludEluZm8sIFRleHRQYWludFBoYXNlIHBoYXNlLAogICAgIH0KIH0KIAot
dm9pZCBJbmxpbmVUZXh0Qm94OjpwYWludE1hcmtlZFRleHRCYWNrZ3JvdW5kKFBhaW50SW5mbyYg
cGFpbnRJbmZvLCBjb25zdCBGbG9hdFBvaW50JiBib3hPcmlnaW4sIGNvbnN0IENvbG9yJiBjb2xv
ciwgdW5zaWduZWQgY2xhbXBlZFN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBjbGFtcGVkRW5kT2Zmc2V0
LCBNYXJrZWRUZXh0QmFja2dyb3VuZFN0eWxlIHN0eWxlKQordm9pZCBMZWdhY3lJbmxpbmVUZXh0
Qm94OjpwYWludE1hcmtlZFRleHRCYWNrZ3JvdW5kKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25z
dCBGbG9hdFBvaW50JiBib3hPcmlnaW4sIGNvbnN0IENvbG9yJiBjb2xvciwgdW5zaWduZWQgY2xh
bXBlZFN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBjbGFtcGVkRW5kT2Zmc2V0LCBNYXJrZWRUZXh0QmFj
a2dyb3VuZFN0eWxlIHN0eWxlKQogewogICAgIGlmIChjbGFtcGVkU3RhcnRPZmZzZXQgPj0gY2xh
bXBlZEVuZE9mZnNldCkKICAgICAgICAgcmV0dXJuOwpAQCAtOTk3LDcgKzk5OCw3IEBAIHZvaWQg
SW5saW5lVGV4dEJveDo6cGFpbnRNYXJrZWRUZXh0QmFja2dyb3VuZChQYWludEluZm8mIHBhaW50
SW5mbywgY29uc3QgRmxvYXRQCiAgICAgY29udGV4dC5maWxsUmVjdChiYWNrZ3JvdW5kUmVjdCwg
Y29sb3IpOwogfQogCi12b2lkIElubGluZVRleHRCb3g6OnBhaW50TWFya2VkVGV4dEZvcmVncm91
bmQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEZsb2F0UmVjdCYgYm94UmVjdCwgY29uc3Qg
U3R5bGVkTWFya2VkVGV4dCYgbWFya2VkVGV4dCkKK3ZvaWQgTGVnYWN5SW5saW5lVGV4dEJveDo6
cGFpbnRNYXJrZWRUZXh0Rm9yZWdyb3VuZChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgRmxv
YXRSZWN0JiBib3hSZWN0LCBjb25zdCBTdHlsZWRNYXJrZWRUZXh0JiBtYXJrZWRUZXh0KQogewog
ICAgIGlmIChtYXJrZWRUZXh0LnN0YXJ0T2Zmc2V0ID49IG1hcmtlZFRleHQuZW5kT2Zmc2V0KQog
ICAgICAgICByZXR1cm47CkBAIC0xMDM3LDcgKzEwMzgsNyBAQCB2b2lkIElubGluZVRleHRCb3g6
OnBhaW50TWFya2VkVGV4dEZvcmVncm91bmQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEZs
b2F0UgogICAgIHRleHRQYWludGVyLnBhaW50UmFuZ2UodGV4dFJ1biwgYm94UmVjdCwgdGV4dE9y
aWdpbkZyb21Cb3hSZWN0KGJveFJlY3QpLCBtYXJrZWRUZXh0LnN0YXJ0T2Zmc2V0LCBtYXJrZWRU
ZXh0LmVuZE9mZnNldCk7CiB9CiAKLXZvaWQgSW5saW5lVGV4dEJveDo6cGFpbnRNYXJrZWRUZXh0
RGVjb3JhdGlvbihQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgRmxvYXRSZWN0JiBib3hSZWN0
LCBjb25zdCBGbG9hdFJlY3QmIGNsaXBPdXRSZWN0LCBjb25zdCBTdHlsZWRNYXJrZWRUZXh0JiBt
YXJrZWRUZXh0KQordm9pZCBMZWdhY3lJbmxpbmVUZXh0Qm94OjpwYWludE1hcmtlZFRleHREZWNv
cmF0aW9uKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBGbG9hdFJlY3QmIGJveFJlY3QsIGNv
bnN0IEZsb2F0UmVjdCYgY2xpcE91dFJlY3QsIGNvbnN0IFN0eWxlZE1hcmtlZFRleHQmIG1hcmtl
ZFRleHQpCiB7CiAgICAgaWYgKG1fdHJ1bmNhdGlvbiA9PSBjRnVsbFRydW5jYXRpb24pCiAgICAg
ICAgIHJldHVybjsKQEAgLTEwOTcsNyArMTA5OCw3IEBAIHZvaWQgSW5saW5lVGV4dEJveDo6cGFp
bnRNYXJrZWRUZXh0RGVjb3JhdGlvbihQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgRmxvYXRS
CiAgICAgICAgIGNvbnRleHQuY29uY2F0Q1RNKHJvdGF0aW9uKGJveFJlY3QsIENvdW50ZXJjbG9j
a3dpc2UpKTsKIH0KIAotdm9pZCBJbmxpbmVUZXh0Qm94OjpwYWludENvbXBvc2l0aW9uQmFja2dy
b3VuZChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgRmxvYXRQb2ludCYgYm94T3JpZ2luKQor
dm9pZCBMZWdhY3lJbmxpbmVUZXh0Qm94OjpwYWludENvbXBvc2l0aW9uQmFja2dyb3VuZChQYWlu
dEluZm8mIHBhaW50SW5mbywgY29uc3QgRmxvYXRQb2ludCYgYm94T3JpZ2luKQogewogICAgIGlm
ICghcmVuZGVyZXIoKS5mcmFtZSgpLmVkaXRvcigpLmNvbXBvc2l0aW9uVXNlc0N1c3RvbUhpZ2hs
aWdodHMoKSkgewogICAgICAgICBwYWludE1hcmtlZFRleHRCYWNrZ3JvdW5kKHBhaW50SW5mbywg
Ym94T3JpZ2luLCBDb21wb3NpdGlvbkhpZ2hsaWdodDo6ZGVmYXVsdENvbXBvc2l0aW9uRmlsbENv
bG9yLCBjbGFtcGVkT2Zmc2V0KHJlbmRlcmVyKCkuZnJhbWUoKS5lZGl0b3IoKS5jb21wb3NpdGlv
blN0YXJ0KCkpLCBjbGFtcGVkT2Zmc2V0KHJlbmRlcmVyKCkuZnJhbWUoKS5lZGl0b3IoKS5jb21w
b3NpdGlvbkVuZCgpKSk7CkBAIC0xMTE4LDcgKzExMTksNyBAQCB2b2lkIElubGluZVRleHRCb3g6
OnBhaW50Q29tcG9zaXRpb25CYWNrZ3JvdW5kKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBG
bG9hdAogICAgIH0KIH0KIAotdm9pZCBJbmxpbmVUZXh0Qm94OjpwYWludENvbXBvc2l0aW9uVW5k
ZXJsaW5lcyhQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgRmxvYXRQb2ludCYgYm94T3JpZ2lu
KSBjb25zdAordm9pZCBMZWdhY3lJbmxpbmVUZXh0Qm94OjpwYWludENvbXBvc2l0aW9uVW5kZXJs
aW5lcyhQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgRmxvYXRQb2ludCYgYm94T3JpZ2luKSBj
b25zdAogewogICAgIGlmIChtX3RydW5jYXRpb24gPT0gY0Z1bGxUcnVuY2F0aW9uKQogICAgICAg
ICByZXR1cm47CkBAIC0xMTQ5LDcgKzExNTAsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgbWlycm9y
UlRMU2VnbWVudChmbG9hdCBsb2dpY2FsV2lkdGgsIFRleHREaXJlY3Rpb24gZGlyZWN0aW9uLAog
ICAgIHN0YXJ0ID0gbG9naWNhbFdpZHRoIC0gd2lkdGggLSBzdGFydDsKIH0KIAotdm9pZCBJbmxp
bmVUZXh0Qm94OjpwYWludENvbXBvc2l0aW9uVW5kZXJsaW5lKFBhaW50SW5mbyYgcGFpbnRJbmZv
LCBjb25zdCBGbG9hdFBvaW50JiBib3hPcmlnaW4sIGNvbnN0IENvbXBvc2l0aW9uVW5kZXJsaW5l
JiB1bmRlcmxpbmUpIGNvbnN0Cit2b2lkIExlZ2FjeUlubGluZVRleHRCb3g6OnBhaW50Q29tcG9z
aXRpb25VbmRlcmxpbmUoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEZsb2F0UG9pbnQmIGJv
eE9yaWdpbiwgY29uc3QgQ29tcG9zaXRpb25VbmRlcmxpbmUmIHVuZGVybGluZSkgY29uc3QKIHsK
ICAgICBpZiAobV90cnVuY2F0aW9uID09IGNGdWxsVHJ1bmNhdGlvbikKICAgICAgICAgcmV0dXJu
OwpAQCAtMTE2NCw3ICsxMTY1LDcgQEAgdm9pZCBJbmxpbmVUZXh0Qm94OjpwYWludENvbXBvc2l0
aW9uVW5kZXJsaW5lKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBGbG9hdFAKICAgICAgICAg
dXNlV2hvbGVXaWR0aCA9IGZhbHNlOwogICAgICAgICBzdGFydCA9IHJlbmRlcmVyKCkud2lkdGgo
bV9zdGFydCwgcGFpbnRTdGFydCAtIG1fc3RhcnQsIHRleHRQb3MoKSwgaXNGaXJzdExpbmUoKSk7
CiAgICAgfQotICAgIGlmIChwYWludEVuZCAhPSB1bmRlcmxpbmUuZW5kT2Zmc2V0KSB7ICAgICAg
Ly8gZW5kIHBvaW50cyBhdCB0aGUgbGFzdCBjaGFyLCBub3QgcGFzdCBpdAorICAgIGlmIChwYWlu
dEVuZCAhPSB1bmRlcmxpbmUuZW5kT2Zmc2V0KSB7CiAgICAgICAgIHBhaW50RW5kID0gc3RkOjpt
aW4ocGFpbnRFbmQsICh1bnNpZ25lZCl1bmRlcmxpbmUuZW5kT2Zmc2V0KTsKICAgICAgICAgdXNl
V2hvbGVXaWR0aCA9IGZhbHNlOwogICAgIH0KQEAgLTExOTcsMjYgKzExOTgsMjYgQEAgdm9pZCBJ
bmxpbmVUZXh0Qm94OjpwYWludENvbXBvc2l0aW9uVW5kZXJsaW5lKFBhaW50SW5mbyYgcGFpbnRJ
bmZvLCBjb25zdCBGbG9hdFAKICAgICBjb250ZXh0LmRyYXdMaW5lRm9yVGV4dChGbG9hdFJlY3Qo
Ym94T3JpZ2luLngoKSArIHN0YXJ0LCBib3hPcmlnaW4ueSgpICsgbG9naWNhbEhlaWdodCgpIC0g
bGluZVRoaWNrbmVzcywgd2lkdGgsIGxpbmVUaGlja25lc3MpLCByZW5kZXJlcigpLmRvY3VtZW50
KCkucHJpbnRpbmcoKSk7CiB9CiAKLWludCBJbmxpbmVUZXh0Qm94OjpjYXJldE1pbk9mZnNldCgp
IGNvbnN0CitpbnQgTGVnYWN5SW5saW5lVGV4dEJveDo6Y2FyZXRNaW5PZmZzZXQoKSBjb25zdAog
ewogICAgIHJldHVybiBtX3N0YXJ0OwogfQogCi1pbnQgSW5saW5lVGV4dEJveDo6Y2FyZXRNYXhP
ZmZzZXQoKSBjb25zdAoraW50IExlZ2FjeUlubGluZVRleHRCb3g6OmNhcmV0TWF4T2Zmc2V0KCkg
Y29uc3QKIHsKICAgICByZXR1cm4gbV9zdGFydCArIG1fbGVuOwogfQogCi1mbG9hdCBJbmxpbmVU
ZXh0Qm94Ojp0ZXh0UG9zKCkgY29uc3QKK2Zsb2F0IExlZ2FjeUlubGluZVRleHRCb3g6OnRleHRQ
b3MoKSBjb25zdAogewogICAgIC8vIFdoZW4gY29tcHV0aW5nIHRoZSB3aWR0aCBvZiBhIHRleHQg
cnVuLCBSZW5kZXJCbG9jazo6Y29tcHV0ZUlubGluZURpcmVjdGlvblBvc2l0aW9uc0ZvckxpbmUo
KSBkb2Vzbid0IGluY2x1ZGUgdGhlIGFjdHVhbCBvZmZzZXQKICAgICAvLyBmcm9tIHRoZSBjb250
YWluaW5nIGJsb2NrIGVkZ2UgaW4gaXRzIG1lYXN1cmVtZW50LiB0ZXh0UG9zKCkgc2hvdWxkIGJl
IGNvbnNpc3RlbnQgc28gdGhlIHRleHQgYXJlIHJlbmRlcmVkIGluIHRoZSBzYW1lIHdpZHRoLgot
ICAgIGlmIChsb2dpY2FsTGVmdCgpID09IDApCisgICAgaWYgKCFsb2dpY2FsTGVmdCgpKQogICAg
ICAgICByZXR1cm4gMDsKICAgICByZXR1cm4gbG9naWNhbExlZnQoKSAtIHJvb3QoKS5sb2dpY2Fs
TGVmdCgpOwogfQogCi1pbnQgSW5saW5lVGV4dEJveDo6b2Zmc2V0Rm9yUG9zaXRpb24oZmxvYXQg
bGluZU9mZnNldCwgYm9vbCBpbmNsdWRlUGFydGlhbEdseXBocykgY29uc3QKK2ludCBMZWdhY3lJ
bmxpbmVUZXh0Qm94OjpvZmZzZXRGb3JQb3NpdGlvbihmbG9hdCBsaW5lT2Zmc2V0LCBib29sIGlu
Y2x1ZGVQYXJ0aWFsR2x5cGhzKSBjb25zdAogewogICAgIGlmIChpc0xpbmVCcmVhaygpKQogICAg
ICAgICByZXR1cm4gMDsKQEAgLTEyMjksNyArMTIzMCw3IEBAIGludCBJbmxpbmVUZXh0Qm94Ojpv
ZmZzZXRGb3JQb3NpdGlvbihmbG9hdCBsaW5lT2Zmc2V0LCBib29sIGluY2x1ZGVQYXJ0aWFsR2x5
cGhzCiAgICAgcmV0dXJuIGxpbmVGb250KCkub2Zmc2V0Rm9yUG9zaXRpb24oY3JlYXRlVGV4dFJ1
bihpZ25vcmVDb21iaW5lZFRleHQsIGlnbm9yZUh5cGhlbiksIGxpbmVPZmZzZXQgLSBsb2dpY2Fs
TGVmdCgpLCBpbmNsdWRlUGFydGlhbEdseXBocyk7CiB9CiAKLWZsb2F0IElubGluZVRleHRCb3g6
OnBvc2l0aW9uRm9yT2Zmc2V0KHVuc2lnbmVkIG9mZnNldCkgY29uc3QKK2Zsb2F0IExlZ2FjeUlu
bGluZVRleHRCb3g6OnBvc2l0aW9uRm9yT2Zmc2V0KHVuc2lnbmVkIG9mZnNldCkgY29uc3QKIHsK
ICAgICBBU1NFUlQob2Zmc2V0ID49IG1fc3RhcnQpOwogICAgIEFTU0VSVChvZmZzZXQgPD0gbV9z
dGFydCArIGxlbigpKTsKQEAgLTEyNTYsNyArMTI1Nyw3IEBAIGZsb2F0IElubGluZVRleHRCb3g6
OnBvc2l0aW9uRm9yT2Zmc2V0KHVuc2lnbmVkIG9mZnNldCkgY29uc3QKICAgICByZXR1cm4gc25h
cFJlY3RUb0RldmljZVBpeGVsc1dpdGhXcml0aW5nRGlyZWN0aW9uKHNlbGVjdGlvblJlY3QsIHJl
bmRlcmVyKCkuZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZhY3RvcigpLCB0ZXh0UnVuLmx0cigpKS5t
YXhYKCk7CiB9CiAKLVRleHRSdW4gSW5saW5lVGV4dEJveDo6Y3JlYXRlVGV4dFJ1bihib29sIGln
bm9yZUNvbWJpbmVkVGV4dCwgYm9vbCBpZ25vcmVIeXBoZW4pIGNvbnN0CitUZXh0UnVuIExlZ2Fj
eUlubGluZVRleHRCb3g6OmNyZWF0ZVRleHRSdW4oYm9vbCBpZ25vcmVDb21iaW5lZFRleHQsIGJv
b2wgaWdub3JlSHlwaGVuKSBjb25zdAogewogICAgIGNvbnN0IGF1dG8mIHN0eWxlID0gbGluZVN0
eWxlKCk7CiAgICAgVGV4dFJ1biB0ZXh0UnVuIHsgdGV4dChpZ25vcmVDb21iaW5lZFRleHQsIGln
bm9yZUh5cGhlbiksIHRleHRQb3MoKSwgZXhwYW5zaW9uKCksIGV4cGFuc2lvbkJlaGF2aW9yKCks
IGRpcmVjdGlvbigpLCBkaXJPdmVycmlkZSgpIHx8IHN0eWxlLnJ0bE9yZGVyaW5nKCkgPT0gT3Jk
ZXI6OlZpc3VhbCwgIXJlbmRlcmVyKCkuY2FuVXNlU2ltcGxlRm9udENvZGVQYXRoKCkgfTsKQEAg
LTEyNjQsNyArMTI2NSw3IEBAIFRleHRSdW4gSW5saW5lVGV4dEJveDo6Y3JlYXRlVGV4dFJ1bihi
b29sIGlnbm9yZUNvbWJpbmVkVGV4dCwgYm9vbCBpZ25vcmVIeXBoZW4pCiAgICAgcmV0dXJuIHRl
eHRSdW47CiB9CiAKLVN0cmluZyBJbmxpbmVUZXh0Qm94Ojp0ZXh0KGJvb2wgaWdub3JlQ29tYmlu
ZWRUZXh0LCBib29sIGlnbm9yZUh5cGhlbikgY29uc3QKK1N0cmluZyBMZWdhY3lJbmxpbmVUZXh0
Qm94Ojp0ZXh0KGJvb2wgaWdub3JlQ29tYmluZWRUZXh0LCBib29sIGlnbm9yZUh5cGhlbikgY29u
c3QKIHsKICAgICBTdHJpbmcgcmVzdWx0OwogICAgIGlmIChhdXRvKiBjb21iaW5lZFRleHQgPSB0
aGlzLT5jb21iaW5lZFRleHQoKSkgewpAQCAtMTI4NSwxMiArMTI4NiwxMiBAQCBTdHJpbmcgSW5s
aW5lVGV4dEJveDo6dGV4dChib29sIGlnbm9yZUNvbWJpbmVkVGV4dCwgYm9vbCBpZ25vcmVIeXBo
ZW4pIGNvbnN0CiAgICAgcmV0dXJuIFJlbmRlckJsb2NrOjp1cGRhdGVTZWN1cml0eURpc2NDaGFy
YWN0ZXJzKGxpbmVTdHlsZSgpLCBXVEZNb3ZlKHJlc3VsdCkpOwogfQogCi1pbmxpbmUgY29uc3Qg
UmVuZGVyQ29tYmluZVRleHQqIElubGluZVRleHRCb3g6OmNvbWJpbmVkVGV4dCgpIGNvbnN0Citp
bmxpbmUgY29uc3QgUmVuZGVyQ29tYmluZVRleHQqIExlZ2FjeUlubGluZVRleHRCb3g6OmNvbWJp
bmVkVGV4dCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGxpbmVTdHlsZSgpLmhhc1RleHRDb21iaW5l
KCkgJiYgaXM8UmVuZGVyQ29tYmluZVRleHQ+KHJlbmRlcmVyKCkpICYmIGRvd25jYXN0PFJlbmRl
ckNvbWJpbmVUZXh0PihyZW5kZXJlcigpKS5pc0NvbWJpbmVkKCkgPyAmZG93bmNhc3Q8UmVuZGVy
Q29tYmluZVRleHQ+KHJlbmRlcmVyKCkpIDogbnVsbHB0cjsKIH0KIAotU2hhZG93RGF0YSogSW5s
aW5lVGV4dEJveDo6ZGVidWdUZXh0U2hhZG93KCkKK1NoYWRvd0RhdGEqIExlZ2FjeUlubGluZVRl
eHRCb3g6OmRlYnVnVGV4dFNoYWRvdygpCiB7CiAgICAgaWYgKCFyZW5kZXJlcigpLnNldHRpbmdz
KCkubGVnYWN5TGluZUxheW91dFZpc3VhbENvdmVyYWdlRW5hYmxlZCgpKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKQEAgLTEyOTksNyArMTMwMCw3IEBAIFNoYWRvd0RhdGEqIElubGluZVRleHRC
b3g6OmRlYnVnVGV4dFNoYWRvdygpCiAgICAgcmV0dXJuICZkZWJ1Z1RleHRTaGFkb3cuZ2V0KCk7
CiB9CiAKLUV4cGFuc2lvbkJlaGF2aW9yIElubGluZVRleHRCb3g6OmV4cGFuc2lvbkJlaGF2aW9y
KCkgY29uc3QKK0V4cGFuc2lvbkJlaGF2aW9yIExlZ2FjeUlubGluZVRleHRCb3g6OmV4cGFuc2lv
bkJlaGF2aW9yKCkgY29uc3QKIHsKICAgICBFeHBhbnNpb25CZWhhdmlvciBsZWZ0QmVoYXZpb3I7
CiAgICAgaWYgKGZvcmNlTGVmdEV4cGFuc2lvbigpKQpAQCAtMTMyMiwxMiArMTMyMywxMiBAQCBF
eHBhbnNpb25CZWhhdmlvciBJbmxpbmVUZXh0Qm94OjpleHBhbnNpb25CZWhhdmlvcigpIGNvbnN0
CiAKICNpZiBFTkFCTEUoVFJFRV9ERUJVR0dJTkcpCiAKLWNvbnN0IGNoYXIqIElubGluZVRleHRC
b3g6OmJveE5hbWUoKSBjb25zdAorY29uc3QgY2hhciogTGVnYWN5SW5saW5lVGV4dEJveDo6Ym94
TmFtZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuICJJbmxpbmVUZXh0Qm94IjsKIH0KIAotdm9pZCBJ
bmxpbmVUZXh0Qm94OjpvdXRwdXRMaW5lQm94KFRleHRTdHJlYW0mIHN0cmVhbSwgYm9vbCBtYXJr
LCBpbnQgZGVwdGgpIGNvbnN0Cit2b2lkIExlZ2FjeUlubGluZVRleHRCb3g6Om91dHB1dExpbmVC
b3goVGV4dFN0cmVhbSYgc3RyZWFtLCBib29sIG1hcmssIGludCBkZXB0aCkgY29uc3QKIHsKICAg
ICBzdHJlYW0gPDwgIi0tLS0tLS0tICIgPDwgKGlzRGlydHkoKSA/ICJEIiA6ICItIikgPDwgIi0i
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5o
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xlZ2FjeUlubGluZVRleHRCb3guaApzaW1pbGFy
aXR5IGluZGV4IDkwJQpyZW5hbWUgZnJvbSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5l
VGV4dEJveC5oCnJlbmFtZSB0byBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVnYWN5SW5saW5l
VGV4dEJveC5oCmluZGV4IDA5N2U4MGY0NWZiNi4uZTU3MDY2ODY2Mjk2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9MZWdhY3lJbmxpbmVUZXh0Qm94LmgKQEAgLTM5LDI0ICszOSwyNCBAQCBz
dHJ1Y3QgVGV4dFBhaW50U3R5bGU7CiBjb25zdCB1bnNpZ25lZCBzaG9ydCBjTm9UcnVuY2F0aW9u
ID0gVVNIUlRfTUFYOwogY29uc3QgdW5zaWduZWQgc2hvcnQgY0Z1bGxUcnVuY2F0aW9uID0gVVNI
UlRfTUFYIC0gMTsKIAotY2xhc3MgSW5saW5lVGV4dEJveCA6IHB1YmxpYyBMZWdhY3lJbmxpbmVC
b3ggewotICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoSW5saW5lVGV4dEJveCk7CitjbGFzcyBM
ZWdhY3lJbmxpbmVUZXh0Qm94IDogcHVibGljIExlZ2FjeUlubGluZUJveCB7CisgICAgV1RGX01B
S0VfSVNPX0FMTE9DQVRFRChMZWdhY3lJbmxpbmVUZXh0Qm94KTsKIHB1YmxpYzoKLSAgICBleHBs
aWNpdCBJbmxpbmVUZXh0Qm94KFJlbmRlclRleHQmIHJlbmRlcmVyKQorICAgIGV4cGxpY2l0IExl
Z2FjeUlubGluZVRleHRCb3goUmVuZGVyVGV4dCYgcmVuZGVyZXIpCiAgICAgICAgIDogTGVnYWN5
SW5saW5lQm94KHJlbmRlcmVyKQogICAgIHsKICAgICAgICAgc2V0QmVoYXZlc0xpa2VUZXh0KHRy
dWUpOwogICAgIH0KIAotICAgIHZpcnR1YWwgfklubGluZVRleHRCb3goKTsKKyAgICB2aXJ0dWFs
IH5MZWdhY3lJbmxpbmVUZXh0Qm94KCk7CiAKICAgICBSZW5kZXJUZXh0JiByZW5kZXJlcigpIGNv
bnN0IHsgcmV0dXJuIGRvd25jYXN0PFJlbmRlclRleHQ+KExlZ2FjeUlubGluZUJveDo6cmVuZGVy
ZXIoKSk7IH0KICAgICBjb25zdCBSZW5kZXJTdHlsZSYgbGluZVN0eWxlKCkgY29uc3QgeyByZXR1
cm4gaXNGaXJzdExpbmUoKSA/IHJlbmRlcmVyKCkuZmlyc3RMaW5lU3R5bGUoKSA6IHJlbmRlcmVy
KCkuc3R5bGUoKTsgfQogCi0gICAgSW5saW5lVGV4dEJveCogcHJldlRleHRCb3goKSBjb25zdCB7
IHJldHVybiBtX3ByZXZUZXh0Qm94OyB9Ci0gICAgSW5saW5lVGV4dEJveCogbmV4dFRleHRCb3go
KSBjb25zdCB7IHJldHVybiBtX25leHRUZXh0Qm94OyB9Ci0gICAgdm9pZCBzZXROZXh0VGV4dEJv
eChJbmxpbmVUZXh0Qm94KiBuKSB7IG1fbmV4dFRleHRCb3ggPSBuOyB9Ci0gICAgdm9pZCBzZXRQ
cmV2aW91c1RleHRCb3goSW5saW5lVGV4dEJveCogcCkgeyBtX3ByZXZUZXh0Qm94ID0gcDsgfQor
ICAgIExlZ2FjeUlubGluZVRleHRCb3gqIHByZXZUZXh0Qm94KCkgY29uc3QgeyByZXR1cm4gbV9w
cmV2VGV4dEJveDsgfQorICAgIExlZ2FjeUlubGluZVRleHRCb3gqIG5leHRUZXh0Qm94KCkgY29u
c3QgeyByZXR1cm4gbV9uZXh0VGV4dEJveDsgfQorICAgIHZvaWQgc2V0TmV4dFRleHRCb3goTGVn
YWN5SW5saW5lVGV4dEJveCogbikgeyBtX25leHRUZXh0Qm94ID0gbjsgfQorICAgIHZvaWQgc2V0
UHJldmlvdXNUZXh0Qm94KExlZ2FjeUlubGluZVRleHRCb3gqIHApIHsgbV9wcmV2VGV4dEJveCA9
IHA7IH0KIAogICAgIGJvb2wgaGFzVGV4dENvbnRlbnQoKSBjb25zdDsKIApAQCAtOTAsNyArOTAs
NyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgTGVnYWN5SW5saW5lQm94Ojpmb3JjZUxlZnRFeHBhbnNp
b247CiAgICAgdXNpbmcgTGVnYWN5SW5saW5lQm94OjpzZXRGb3JjZUxlZnRFeHBhbnNpb247CiAK
LSAgICBzdGF0aWMgaW5saW5lIGJvb2wgY29tcGFyZUJ5U3RhcnQoY29uc3QgSW5saW5lVGV4dEJv
eCogZmlyc3QsIGNvbnN0IElubGluZVRleHRCb3gqIHNlY29uZCkgeyByZXR1cm4gZmlyc3QtPnN0
YXJ0KCkgPCBzZWNvbmQtPnN0YXJ0KCk7IH0KKyAgICBzdGF0aWMgaW5saW5lIGJvb2wgY29tcGFy
ZUJ5U3RhcnQoY29uc3QgTGVnYWN5SW5saW5lVGV4dEJveCogZmlyc3QsIGNvbnN0IExlZ2FjeUlu
bGluZVRleHRCb3gqIHNlY29uZCkgeyByZXR1cm4gZmlyc3QtPnN0YXJ0KCkgPCBzZWNvbmQtPnN0
YXJ0KCk7IH0KIAogICAgIExheW91dFVuaXQgYmFzZWxpbmVQb3NpdGlvbihGb250QmFzZWxpbmUp
IGNvbnN0IGZpbmFsOwogICAgIExheW91dFVuaXQgbGluZUhlaWdodCgpIGNvbnN0IGZpbmFsOwpA
QCAtMTk5LDggKzE5OSw4IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGJlaGF2ZXNMaWtlVGV4dCgp
IGNvbnN0ID0gZGVsZXRlOwogCi0gICAgSW5saW5lVGV4dEJveCogbV9wcmV2VGV4dEJveCB7IG51
bGxwdHIgfTsgLy8gVGhlIHByZXZpb3VzIGJveCB0aGF0IGFsc28gdXNlcyBvdXIgUmVuZGVyT2Jq
ZWN0Ci0gICAgSW5saW5lVGV4dEJveCogbV9uZXh0VGV4dEJveCB7IG51bGxwdHIgfTsgLy8gVGhl
IG5leHQgYm94IHRoYXQgYWxzbyB1c2VzIG91ciBSZW5kZXJPYmplY3QKKyAgICBMZWdhY3lJbmxp
bmVUZXh0Qm94KiBtX3ByZXZUZXh0Qm94IHsgbnVsbHB0ciB9OyAvLyBUaGUgcHJldmlvdXMgYm94
IHRoYXQgYWxzbyB1c2VzIG91ciBSZW5kZXJPYmplY3QKKyAgICBMZWdhY3lJbmxpbmVUZXh0Qm94
KiBtX25leHRUZXh0Qm94IHsgbnVsbHB0ciB9OyAvLyBUaGUgbmV4dCBib3ggdGhhdCBhbHNvIHVz
ZXMgb3VyIFJlbmRlck9iamVjdAogCiAgICAgdW5zaWduZWQgbV9zdGFydCB7IDAgfTsKICAgICB1
bnNpZ25lZCBzaG9ydCBtX2xlbiB7IDAgfTsKQEAgLTIxNCw0ICsyMTQsNCBAQCBMYXlvdXRSZWN0
IHNuYXBwZWRTZWxlY3Rpb25SZWN0KGNvbnN0IExheW91dFJlY3QmLCBmbG9hdCBsb2dpY2FsUmln
aHQsIGZsb2F0IHNlbAogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLVNQRUNJQUxJWkVfVFlQ
RV9UUkFJVFNfSU5MSU5FX0JPWChJbmxpbmVUZXh0Qm94LCBpc0lubGluZVRleHRCb3goKSkKK1NQ
RUNJQUxJWkVfVFlQRV9UUkFJVFNfSU5MSU5FX0JPWChMZWdhY3lJbmxpbmVUZXh0Qm94LCBpc0lu
bGluZVRleHRCb3goKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MZWdh
Y3lMaW5lTGF5b3V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MZWdhY3lMaW5lTGF5
b3V0LmNwcAppbmRleCA5MGY1NjkwMWU2MWMuLjU4NjUyMmQ1ODViMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xlZ2FjeUxpbmVMYXlvdXQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9MZWdhY3lMaW5lTGF5b3V0LmNwcApAQCAtMzIsOCArMzIsOCBAQAog
I2luY2x1ZGUgIkhUTUxQYXJzZXJJZGlvbXMuaCIKICNpbmNsdWRlICJJbmxpbmVFbGVtZW50Qm94
LmgiCiAjaW5jbHVkZSAiSW5saW5lSXRlcmF0b3IuaCIKLSNpbmNsdWRlICJJbmxpbmVUZXh0Qm94
LmgiCiAjaW5jbHVkZSAiSW5saW5lVGV4dEJveFN0eWxlLmgiCisjaW5jbHVkZSAiTGVnYWN5SW5s
aW5lVGV4dEJveC5oIgogI2luY2x1ZGUgIkxpbmVMYXlvdXRTdGF0ZS5oIgogI2luY2x1ZGUgIkxv
Z2dpbmcuaCIKICNpbmNsdWRlICJSZW5kZXJCbG9ja0Zsb3cuaCIKQEAgLTMyNCw4ICszMjQsOCBA
QCBMZWdhY3lSb290SW5saW5lQm94KiBMZWdhY3lMaW5lTGF5b3V0Ojpjb25zdHJ1Y3RMaW5lKEJp
ZGlSdW5MaXN0PEJpZGlSdW4+JiBiaWRpUgogICAgICAgICBib29sIHZpc3VhbGx5T3JkZXJlZCA9
IHItPnJlbmRlcmVyKCkuc3R5bGUoKS5ydGxPcmRlcmluZygpID09IE9yZGVyOjpWaXN1YWw7CiAg
ICAgICAgIGJveC0+c2V0QmlkaUxldmVsKHItPmxldmVsKCkpOwogCi0gICAgICAgIGlmIChpczxJ
bmxpbmVUZXh0Qm94PigqYm94KSkgewotICAgICAgICAgICAgYXV0byYgdGV4dEJveCA9IGRvd25j
YXN0PElubGluZVRleHRCb3g+KCpib3gpOworICAgICAgICBpZiAoaXM8TGVnYWN5SW5saW5lVGV4
dEJveD4oKmJveCkpIHsKKyAgICAgICAgICAgIGF1dG8mIHRleHRCb3ggPSBkb3duY2FzdDxMZWdh
Y3lJbmxpbmVUZXh0Qm94PigqYm94KTsKICAgICAgICAgICAgIHRleHRCb3guc2V0U3RhcnQoci0+
bV9zdGFydCk7CiAgICAgICAgICAgICB0ZXh0Qm94LnNldExlbihyLT5tX3N0b3AgLSByLT5tX3N0
YXJ0KTsKICAgICAgICAgICAgIHRleHRCb3guc2V0RGlyT3ZlcnJpZGUoci0+ZGlyT3ZlcnJpZGUo
dmlzdWFsbHlPcmRlcmVkKSk7CkBAIC00ODUsNyArNDg1LDcgQEAgc3RhdGljIGlubGluZSB2b2lk
IHNldExvZ2ljYWxXaWR0aEZvclRleHRSdW4oTGVnYWN5Um9vdElubGluZUJveCogbGluZUJveCwg
QmlkaVIKICAgICB9CiAgICAgCiAgICAgTGF5b3V0VW5pdCBoeXBoZW5XaWR0aDsKLSAgICBpZiAo
ZG93bmNhc3Q8SW5saW5lVGV4dEJveD4oKnJ1bi0+Ym94KCkpLmhhc0h5cGhlbigpKQorICAgIGlm
IChkb3duY2FzdDxMZWdhY3lJbmxpbmVUZXh0Qm94PigqcnVuLT5ib3goKSkuaGFzSHlwaGVuKCkp
CiAgICAgICAgIGh5cGhlbldpZHRoID0gbWVhc3VyZUh5cGhlbldpZHRoKHJlbmRlcmVyLCBmb250
LCAmZmFsbGJhY2tGb250cyk7CiAKICAgICBmbG9hdCBtZWFzdXJlZFdpZHRoID0gMDsKQEAgLTUz
OCw3ICs1MzgsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgc2V0TG9naWNhbFdpZHRoRm9yVGV4dFJ1
bihMZWdhY3lSb290SW5saW5lQm94KiBsaW5lQm94LCBCaWRpUgogICAgIHJ1bi0+Ym94KCktPnNl
dExvZ2ljYWxXaWR0aChtZWFzdXJlZFdpZHRoICsgaHlwaGVuV2lkdGgpOwogICAgIGlmICghZmFs
bGJhY2tGb250cy5pc0VtcHR5KCkpIHsKICAgICAgICAgQVNTRVJUKHJ1bi0+Ym94KCktPmJlaGF2
ZXNMaWtlVGV4dCgpKTsKLSAgICAgICAgR2x5cGhPdmVyZmxvd0FuZEZhbGxiYWNrRm9udHNNYXA6
Oml0ZXJhdG9yIGl0ID0gdGV4dEJveERhdGFNYXAuYWRkKGRvd25jYXN0PElubGluZVRleHRCb3g+
KHJ1bi0+Ym94KCkpLCBzdGQ6Om1ha2VfcGFpcihWZWN0b3I8Y29uc3QgRm9udCo+KCksIEdseXBo
T3ZlcmZsb3coKSkpLml0ZXJhdG9yOworICAgICAgICBHbHlwaE92ZXJmbG93QW5kRmFsbGJhY2tG
b250c01hcDo6aXRlcmF0b3IgaXQgPSB0ZXh0Qm94RGF0YU1hcC5hZGQoZG93bmNhc3Q8TGVnYWN5
SW5saW5lVGV4dEJveD4ocnVuLT5ib3goKSksIHN0ZDo6bWFrZV9wYWlyKFZlY3Rvcjxjb25zdCBG
b250Kj4oKSwgR2x5cGhPdmVyZmxvdygpKSkuaXRlcmF0b3I7CiAgICAgICAgIEFTU0VSVChpdC0+
dmFsdWUuZmlyc3QuaXNFbXB0eSgpKTsKICAgICAgICAgaXQtPnZhbHVlLmZpcnN0ID0gY29weVRv
VmVjdG9yKGZhbGxiYWNrRm9udHMpOwogICAgICAgICBydW4tPmJveCgpLT5wYXJlbnQoKS0+Y2xl
YXJEZXNjZW5kYW50c0hhdmVTYW1lTGluZUhlaWdodEFuZEJhc2VsaW5lKCk7CkBAIC01NDYsMTEg
KzU0NiwxMSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgc2V0TG9naWNhbFdpZHRoRm9yVGV4dFJ1bihM
ZWdhY3lSb290SW5saW5lQm94KiBsaW5lQm94LCBCaWRpUgogCiAgICAgLy8gSW5jbHVkZSB0ZXh0
IGRlY29yYXRpb24gdmlzdWFsIG92ZXJmbG93IGFzIHBhcnQgb2YgdGhlIGdseXBoIG92ZXJmbG93
LgogICAgIGlmICghcmVuZGVyZXIuc3R5bGUoKS50ZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCgpLmlz
RW1wdHkoKSkKLSAgICAgICAgZ2x5cGhPdmVyZmxvdy5leHRlbmRUbyh2aXN1YWxPdmVyZmxvd0Zv
ckRlY29yYXRpb25zKHJ1bi0+Ym94KCktPmxpbmVTdHlsZSgpLCBkb3duY2FzdDxJbmxpbmVUZXh0
Qm94PihydW4tPmJveCgpKSkpOworICAgICAgICBnbHlwaE92ZXJmbG93LmV4dGVuZFRvKHZpc3Vh
bE92ZXJmbG93Rm9yRGVjb3JhdGlvbnMocnVuLT5ib3goKS0+bGluZVN0eWxlKCksIGRvd25jYXN0
PExlZ2FjeUlubGluZVRleHRCb3g+KHJ1bi0+Ym94KCkpKSk7CiAKICAgICBpZiAoIWdseXBoT3Zl
cmZsb3cuaXNFbXB0eSgpKSB7CiAgICAgICAgIEFTU0VSVChydW4tPmJveCgpLT5iZWhhdmVzTGlr
ZVRleHQoKSk7Ci0gICAgICAgIEdseXBoT3ZlcmZsb3dBbmRGYWxsYmFja0ZvbnRzTWFwOjppdGVy
YXRvciBpdCA9IHRleHRCb3hEYXRhTWFwLmFkZChkb3duY2FzdDxJbmxpbmVUZXh0Qm94PihydW4t
PmJveCgpKSwgc3RkOjptYWtlX3BhaXIoVmVjdG9yPGNvbnN0IEZvbnQqPigpLCBHbHlwaE92ZXJm
bG93KCkpKS5pdGVyYXRvcjsKKyAgICAgICAgR2x5cGhPdmVyZmxvd0FuZEZhbGxiYWNrRm9udHNN
YXA6Oml0ZXJhdG9yIGl0ID0gdGV4dEJveERhdGFNYXAuYWRkKGRvd25jYXN0PExlZ2FjeUlubGlu
ZVRleHRCb3g+KHJ1bi0+Ym94KCkpLCBzdGQ6Om1ha2VfcGFpcihWZWN0b3I8Y29uc3QgRm9udCo+
KCksIEdseXBoT3ZlcmZsb3coKSkpLml0ZXJhdG9yOwogICAgICAgICBpdC0+dmFsdWUuc2Vjb25k
ID0gZ2x5cGhPdmVyZmxvdzsKICAgICAgICAgcnVuLT5ib3goKS0+Y2xlYXJLbm93blRvSGF2ZU5v
T3ZlcmZsb3coKTsKICAgICB9CkBAIC02MTMsNyArNjEzLDcgQEAgdm9pZCBMZWdhY3lMaW5lTGF5
b3V0Ojpjb21wdXRlRXhwYW5zaW9uRm9ySnVzdGlmaWVkVGV4dChCaWRpUnVuKiBmaXJzdFJ1biwg
QmlkaVIKICAgICAgICAgICAgIAogICAgICAgICAgICAgLy8gT25seSBqdXN0aWZ5IHRleHQgaWYg
d2hpdGVzcGFjZSBpcyBjb2xsYXBzZWQuCiAgICAgICAgICAgICBpZiAocnVuLT5yZW5kZXJlcigp
LnN0eWxlKCkuY29sbGFwc2VXaGl0ZVNwYWNlKCkpIHsKLSAgICAgICAgICAgICAgICBJbmxpbmVU
ZXh0Qm94JiB0ZXh0Qm94ID0gZG93bmNhc3Q8SW5saW5lVGV4dEJveD4oKnJ1bi0+Ym94KCkpOwor
ICAgICAgICAgICAgICAgIExlZ2FjeUlubGluZVRleHRCb3gmIHRleHRCb3ggPSBkb3duY2FzdDxM
ZWdhY3lJbmxpbmVUZXh0Qm94PigqcnVuLT5ib3goKSk7CiAgICAgICAgICAgICAgICAgZmxvYXQg
ZXhwYW5zaW9uID0gKGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCAtIHRvdGFsTG9naWNhbFdpZHRoKSAq
IG9wcG9ydHVuaXRpZXNJblJ1biAvIGV4cGFuc2lvbk9wcG9ydHVuaXR5Q291bnQ7CiAgICAgICAg
ICAgICAgICAgdGV4dEJveC5zZXRFeHBhbnNpb24oZXhwYW5zaW9uKTsKICAgICAgICAgICAgICAg
ICB0b3RhbExvZ2ljYWxXaWR0aCArPSBleHBhbnNpb247CkBAIC03MTcsNyArNzE3LDcgQEAgdm9p
ZCBMZWdhY3lMaW5lTGF5b3V0Ojpjb21wdXRlSW5saW5lRGlyZWN0aW9uUG9zaXRpb25zRm9yTGlu
ZShMZWdhY3lSb290SW5saW5lQm8KICAgICBsaW5lQm94LT5wbGFjZUJveGVzSW5JbmxpbmVEaXJl
Y3Rpb24obGluZUxvZ2ljYWxMZWZ0LCBuZWVkc1dvcmRTcGFjaW5nKTsKIH0KIAotc3RhdGljIGlu
bGluZSBFeHBhbnNpb25CZWhhdmlvciBleHBhbnNpb25CZWhhdmlvckZvcklubGluZVRleHRCb3go
UmVuZGVyQmxvY2tGbG93JiBibG9jaywgSW5saW5lVGV4dEJveCYgdGV4dEJveCwgQmlkaVJ1biog
cHJldmlvdXNSdW4sIEJpZGlSdW4qIG5leHRSdW4sIFRleHRBbGlnbk1vZGUgdGV4dEFsaWduLCBi
b29sIGlzQWZ0ZXJFeHBhbnNpb24pCitzdGF0aWMgaW5saW5lIEV4cGFuc2lvbkJlaGF2aW9yIGV4
cGFuc2lvbkJlaGF2aW9yRm9ySW5saW5lVGV4dEJveChSZW5kZXJCbG9ja0Zsb3cmIGJsb2NrLCBM
ZWdhY3lJbmxpbmVUZXh0Qm94JiB0ZXh0Qm94LCBCaWRpUnVuKiBwcmV2aW91c1J1biwgQmlkaVJ1
biogbmV4dFJ1biwgVGV4dEFsaWduTW9kZSB0ZXh0QWxpZ24sIGJvb2wgaXNBZnRlckV4cGFuc2lv
bikKIHsKICAgICAvLyBUYXRlY2h1eW9rbyBpcyBtb2RlbGVkIGFzIHRoZSBPYmplY3QgUmVwbGFj
ZW1lbnQgQ2hhcmFjdGVyIChVK0ZGRkMpLCB3aGljaCBjYW4gbmV2ZXIgaGF2ZSBleHBhbnNpb24g
b3Bwb3J0dW5pdGllcyBpbnNpZGUgbm9yIGludHJpbnNpY2FsbHkgYWRqYWNlbnQgdG8gaXQuCiAg
ICAgaWYgKHRleHRCb3gucmVuZGVyZXIoKS5zdHlsZSgpLnRleHRDb21iaW5lKCkgPT0gVGV4dENv
bWJpbmU6Okhvcml6b250YWwpCkBAIC03MzIsNyArNzMyLDcgQEAgc3RhdGljIGlubGluZSBFeHBh
bnNpb25CZWhhdmlvciBleHBhbnNpb25CZWhhdmlvckZvcklubGluZVRleHRCb3goUmVuZGVyQmxv
Y2tGbG8KICAgICAgICAgICAgIGF1dG8mIHJ1YnlCYXNlID0gKmRvd25jYXN0PFJlbmRlclJ1YnlS
dW4+KG5leHRSdW4tPnJlbmRlcmVyKCkpLnJ1YnlCYXNlKCk7CiAgICAgICAgICAgICBpZiAocnVi
eUJhc2UuZmlyc3RSb290Qm94KCkgJiYgIXJ1YnlCYXNlLmZpcnN0Um9vdEJveCgpLT5uZXh0Um9v
dEJveCgpKSB7CiAgICAgICAgICAgICAgICAgaWYgKGF1dG8qIGxlYWZDaGlsZCA9IHJ1YnlCYXNl
LmZpcnN0Um9vdEJveCgpLT5maXJzdExlYWZEZXNjZW5kYW50KCkpIHsKLSAgICAgICAgICAgICAg
ICAgICAgaWYgKGlzPElubGluZVRleHRCb3g+KCpsZWFmQ2hpbGQpKSB7CisgICAgICAgICAgICAg
ICAgICAgIGlmIChpczxMZWdhY3lJbmxpbmVUZXh0Qm94PigqbGVhZkNoaWxkKSkgewogICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMgbGVmdEV4cGFuc2lvbk9wcG9ydHVuaXR5
IGRvZXNuJ3QgYWN0dWFsbHkgd29yayBiZWNhdXNlIGl0IGRvZXNuJ3QgcGVyZm9ybSB0aGUgVUJB
CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoRm9udENhc2NhZGU6OmxlZnRFeHBhbnNpb25P
cHBvcnR1bml0eShkb3duY2FzdDxSZW5kZXJUZXh0PihsZWFmQ2hpbGQtPnJlbmRlcmVyKCkpLnN0
cmluZ1ZpZXcoKSwgbGVhZkNoaWxkLT5kaXJlY3Rpb24oKSkpIHsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzZXRSaWdodEV4cGFuc2lvbiA9IHRydWU7CkBAIC03NDcsNyArNzQ3LDcgQEAg
c3RhdGljIGlubGluZSBFeHBhbnNpb25CZWhhdmlvciBleHBhbnNpb25CZWhhdmlvckZvcklubGlu
ZVRleHRCb3goUmVuZGVyQmxvY2tGbG8KICAgICAgICAgICAgIGF1dG8mIHJ1YnlCYXNlID0gKmRv
d25jYXN0PFJlbmRlclJ1YnlSdW4+KHByZXZpb3VzUnVuLT5yZW5kZXJlcigpKS5ydWJ5QmFzZSgp
OwogICAgICAgICAgICAgaWYgKHJ1YnlCYXNlLmZpcnN0Um9vdEJveCgpICYmICFydWJ5QmFzZS5m
aXJzdFJvb3RCb3goKS0+bmV4dFJvb3RCb3goKSkgewogICAgICAgICAgICAgICAgIGlmIChhdXRv
KiBsZWFmQ2hpbGQgPSBydWJ5QmFzZS5maXJzdFJvb3RCb3goKS0+bGFzdExlYWZEZXNjZW5kYW50
KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGlzPElubGluZVRleHRCb3g+KCpsZWFmQ2hp
bGQpKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChpczxMZWdhY3lJbmxpbmVUZXh0Qm94Pigq
bGVhZkNoaWxkKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMgbGVm
dEV4cGFuc2lvbk9wcG9ydHVuaXR5IGRvZXNuJ3QgYWN0dWFsbHkgd29yayBiZWNhdXNlIGl0IGRv
ZXNuJ3QgcGVyZm9ybSB0aGUgVUJBCiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoRm9udENh
c2NhZGU6OnJpZ2h0RXhwYW5zaW9uT3Bwb3J0dW5pdHkoZG93bmNhc3Q8UmVuZGVyVGV4dD4obGVh
ZkNoaWxkLT5yZW5kZXJlcigpKS5zdHJpbmdWaWV3KCksIGxlYWZDaGlsZC0+ZGlyZWN0aW9uKCkp
KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0TGVmdEV4cGFuc2lvbiA9IHRydWU7
CkBAIC03NzYsNyArNzc2LDcgQEAgc3RhdGljIGlubGluZSBFeHBhbnNpb25CZWhhdmlvciBleHBh
bnNpb25CZWhhdmlvckZvcklubGluZVRleHRCb3goUmVuZGVyQmxvY2tGbG8KICAgICByZXR1cm4g
cmVzdWx0OwogfQogCi1zdGF0aWMgaW5saW5lIHZvaWQgYXBwbHlFeHBhbnNpb25CZWhhdmlvcihJ
bmxpbmVUZXh0Qm94JiB0ZXh0Qm94LCBFeHBhbnNpb25CZWhhdmlvciBleHBhbnNpb25CZWhhdmlv
cikKK3N0YXRpYyBpbmxpbmUgdm9pZCBhcHBseUV4cGFuc2lvbkJlaGF2aW9yKExlZ2FjeUlubGlu
ZVRleHRCb3gmIHRleHRCb3gsIEV4cGFuc2lvbkJlaGF2aW9yIGV4cGFuc2lvbkJlaGF2aW9yKQog
ewogICAgIHN3aXRjaCAoZXhwYW5zaW9uQmVoYXZpb3IgJiBMZWZ0RXhwYW5zaW9uTWFzaykgewog
ICAgIGNhc2UgRm9yY2VMZWZ0RXhwYW5zaW9uOgpAQCAtODUzLDcgKzg1Myw3IEBAIEJpZGlSdW4q
IExlZ2FjeUxpbmVMYXlvdXQ6OmNvbXB1dGVJbmxpbmVEaXJlY3Rpb25Qb3NpdGlvbnNGb3JTZWdt
ZW50KExlZ2FjeVJvb3RJCiAgICAgYm9vbCBpc0FmdGVyRXhwYW5zaW9uID0gaXM8UmVuZGVyUnVi
eUJhc2U+KG1fZmxvdykgPyBkb3duY2FzdDxSZW5kZXJSdWJ5QmFzZT4obV9mbG93KS5pc0FmdGVy
RXhwYW5zaW9uKCkgOiB0cnVlOwogICAgIFZlY3Rvcjx1bnNpZ25lZCwgMTY+IGV4cGFuc2lvbk9w
cG9ydHVuaXRpZXM7CiAKLSAgICBIYXNoTWFwPElubGluZVRleHRCb3gqLCBMYXlvdXRVbml0PiBs
b2dpY2FsU3BhY2luZ0ZvcklubGluZVRleHRCb3hlczsKKyAgICBIYXNoTWFwPExlZ2FjeUlubGlu
ZVRleHRCb3gqLCBMYXlvdXRVbml0PiBsb2dpY2FsU3BhY2luZ0ZvcklubGluZVRleHRCb3hlczsK
ICAgICBhdXRvIGNvbGxlY3RTcGFjaW5nTG9naWNhbFdpZHRocyA9IFsmXSAoKSB7CiAgICAgICAg
IGF1dG8gdG90YWxTcGFjaW5nV2lkdGggPSBMYXlvdXRVbml0IHsgfTsKICAgICAgICAgLy8gQ29s
bGVjdCB0aGUgc3BhY2luZyBwb3NpdGlvbnMgKG1hcmdpbiwgYm9yZGVyIHBhZGRpbmcpIGZvciB0
aGUgdGV4dGJveGVzIGJ5IHRyYXZlcnNpbmcgdGhlIGlubGluZSB0cmVlIG9mIHRoZSBjdXJyZW50
IGxpbmUuCkBAIC04NjEsNyArODYxLDcgQEAgQmlkaVJ1biogTGVnYWN5TGluZUxheW91dDo6Y29t
cHV0ZUlubGluZURpcmVjdGlvblBvc2l0aW9uc0ZvclNlZ21lbnQoTGVnYWN5Um9vdEkKICAgICAg
ICAgcXVldWUuYXBwZW5kKGxpbmVCb3gpOwogICAgICAgICAvLyAxLiBWaXNpdCBlYWNoIGlubGlu
ZSBib3ggaW4gYSBwcmVvcmRlciBmYXNoaW9uCiAgICAgICAgIC8vIDIuIEFjY3VtdWxhdGUgdGhl
IHNwYWNpbmcgd2hlbiB3ZSBmaW5kIGFuIExlZ2FjeUlubGluZUZsb3dCb3ggKGlubGluZSBjb250
YWluZXIgZS5nLiBzcGFuKQotICAgICAgICAvLyAzLiBBZGQgdGhlIElubGluZVRleHRCb3hlcyB0
byB0aGUgaGFzaG1hcAorICAgICAgICAvLyAzLiBBZGQgdGhlIExlZ2FjeUlubGluZVRleHRCb3hl
cyB0byB0aGUgaGFzaG1hcAogICAgICAgICB3aGlsZSAoIXF1ZXVlLmlzRW1wdHkoKSkgewogICAg
ICAgICAgICAgd2hpbGUgKHRydWUpIHsKICAgICAgICAgICAgICAgICBhdXRvKiBpbmxpbmVCb3gg
PSBxdWV1ZS5sYXN0KCk7CkBAIC04NzQsOCArODc0LDggQEAgQmlkaVJ1biogTGVnYWN5TGluZUxh
eW91dDo6Y29tcHV0ZUlubGluZURpcmVjdGlvblBvc2l0aW9uc0ZvclNlZ21lbnQoTGVnYWN5Um9v
dEkKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKGlzPElubGluZVRleHRCb3g+KGlu
bGluZUJveCkpCi0gICAgICAgICAgICAgICAgICAgIGxvZ2ljYWxTcGFjaW5nRm9ySW5saW5lVGV4
dEJveGVzLmFkZChkb3duY2FzdDxJbmxpbmVUZXh0Qm94PihpbmxpbmVCb3gpLCB0b3RhbFNwYWNp
bmdXaWR0aCk7CisgICAgICAgICAgICAgICAgaWYgKGlzPExlZ2FjeUlubGluZVRleHRCb3g+KGlu
bGluZUJveCkpCisgICAgICAgICAgICAgICAgICAgIGxvZ2ljYWxTcGFjaW5nRm9ySW5saW5lVGV4
dEJveGVzLmFkZChkb3duY2FzdDxMZWdhY3lJbmxpbmVUZXh0Qm94PihpbmxpbmVCb3gpLCB0b3Rh
bFNwYWNpbmdXaWR0aCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICB3aGlsZSAoIXF1ZXVlLmlzRW1wdHkoKSkgewpAQCAtODk1LDcgKzg5NSw3IEBA
IEJpZGlSdW4qIExlZ2FjeUxpbmVMYXlvdXQ6OmNvbXB1dGVJbmxpbmVEaXJlY3Rpb25Qb3NpdGlv
bnNGb3JTZWdtZW50KExlZ2FjeVJvb3RJCiAgICAgQmlkaVJ1biogcHJldmlvdXNSdW4gPSBudWxs
cHRyOwogICAgIGZvciAoOyBydW47IHJ1biA9IHJ1bi0+bmV4dCgpKSB7CiAgICAgICAgIGF1dG8g
Y29tcHV0ZUV4cGFuc2lvbk9wcG9ydHVuaXRpZXMgPSBbJmV4cGFuc2lvbk9wcG9ydHVuaXRpZXMs
ICZleHBhbnNpb25PcHBvcnR1bml0eUNvdW50LCB0ZXh0QWxpZ24sICZpc0FmdGVyRXhwYW5zaW9u
XSAoUmVuZGVyQmxvY2tGbG93JiBibG9jaywKLSAgICAgICAgICAgIElubGluZVRleHRCb3gmIHRl
eHRCb3gsIEJpZGlSdW4qIHByZXZpb3VzUnVuLCBCaWRpUnVuKiBuZXh0UnVuLCBjb25zdCBTdHJp
bmdWaWV3JiBzdHJpbmdWaWV3LCBUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbikKKyAgICAgICAgICAg
IExlZ2FjeUlubGluZVRleHRCb3gmIHRleHRCb3gsIEJpZGlSdW4qIHByZXZpb3VzUnVuLCBCaWRp
UnVuKiBuZXh0UnVuLCBjb25zdCBTdHJpbmdWaWV3JiBzdHJpbmdWaWV3LCBUZXh0RGlyZWN0aW9u
IGRpcmVjdGlvbikKICAgICAgICAgewogICAgICAgICAgICAgaWYgKHN0cmluZ1ZpZXcuaXNFbXB0
eSgpKSB7CiAgICAgICAgICAgICAgICAgLy8gRW1wdHkgcnVucyBzaG91bGQgc3RpbGwgcHJvZHVj
ZSBhbiBlbnRyeSBpbiBleHBhbnNpb25PcHBvcnR1bml0aWVzIGxpc3Qgc28gdGhhdCB0aGUgbnVt
YmVyIG9mIGl0ZW1zIG1hdGNoZXMgdGhlIG51bWJlciBvZiBydW5zLgpAQCAtOTE2LDcgKzkxNiw3
IEBAIEJpZGlSdW4qIExlZ2FjeUxpbmVMYXlvdXQ6OmNvbXB1dGVJbmxpbmVEaXJlY3Rpb25Qb3Np
dGlvbnNGb3JTZWdtZW50KExlZ2FjeVJvb3RJCiAgICAgICAgIH0KICAgICAgICAgaWYgKGlzPFJl
bmRlclRleHQ+KHJ1bi0+cmVuZGVyZXIoKSkpIHsKICAgICAgICAgICAgIGF1dG8mIHJlbmRlclRl
eHQgPSBkb3duY2FzdDxSZW5kZXJUZXh0PihydW4tPnJlbmRlcmVyKCkpOwotICAgICAgICAgICAg
YXV0byYgdGV4dEJveCA9IGRvd25jYXN0PElubGluZVRleHRCb3g+KCpydW4tPmJveCgpKTsKKyAg
ICAgICAgICAgIGF1dG8mIHRleHRCb3ggPSBkb3duY2FzdDxMZWdhY3lJbmxpbmVUZXh0Qm94Pigq
cnVuLT5ib3goKSk7CiAgICAgICAgICAgICBpZiAoY2FuSGFuZ1B1bmN0dWF0aW9uQXRTdGFydCAm
JiBsaW5lSW5mby5pc0ZpcnN0TGluZSgpICYmIChpc0xUUiB8fCBpc0xhc3RJbkZsb3dSdW4oKnJ1
bikpCiAgICAgICAgICAgICAgICAgJiYgIWlubGluZUFuY2VzdG9ySGFzU3RhcnRCb3JkZXJQYWRk
aW5nT3JNYXJnaW4obV9mbG93LCAqcnVuLT5ib3goKSkpIHsKICAgICAgICAgICAgICAgICBmbG9h
dCBoYW5nU3RhcnRXaWR0aCA9IHJlbmRlclRleHQuaGFuZ2FibGVQdW5jdHVhdGlvblN0YXJ0V2lk
dGgocnVuLT5tX3N0YXJ0KTsKQEAgLTk1NSwxMCArOTU1LDEwIEBAIEJpZGlSdW4qIExlZ2FjeUxp
bmVMYXlvdXQ6OmNvbXB1dGVJbmxpbmVEaXJlY3Rpb25Qb3NpdGlvbnNGb3JTZWdtZW50KExlZ2Fj
eVJvb3RJCiAgICAgICAgICAgICAgICAgaWYgKHJ1YnlCYXNlLT5maXJzdFJvb3RCb3goKSAmJiAh
cnVieUJhc2UtPmZpcnN0Um9vdEJveCgpLT5uZXh0Um9vdEJveCgpICYmIHJ1bi0+cmVuZGVyZXIo
KS5zdHlsZSgpLmNvbGxhcHNlV2hpdGVTcGFjZSgpKSB7CiAgICAgICAgICAgICAgICAgICAgIHJ1
YnlCYXNlLT5zZXRJc0FmdGVyRXhwYW5zaW9uKGlzQWZ0ZXJFeHBhbnNpb24pOwogICAgICAgICAg
ICAgICAgICAgICBmb3IgKGF1dG8qIGxlYWZDaGlsZCA9IHJ1YnlCYXNlLT5maXJzdFJvb3RCb3go
KS0+Zmlyc3RMZWFmRGVzY2VuZGFudCgpOyBsZWFmQ2hpbGQ7IGxlYWZDaGlsZCA9IGxlYWZDaGls
ZC0+bmV4dExlYWZPbkxpbmUoKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpczxJ
bmxpbmVUZXh0Qm94PigqbGVhZkNoaWxkKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICgh
aXM8TGVnYWN5SW5saW5lVGV4dEJveD4oKmxlYWZDaGlsZCkpCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgICAgICBlbmNvdW50ZXJlZEp1
c3RpZmllZFJ1YnkgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICAgICAgY29tcHV0ZUV4cGFu
c2lvbk9wcG9ydHVuaXRpZXMoKnJ1YnlCYXNlLCBkb3duY2FzdDxJbmxpbmVUZXh0Qm94PigqbGVh
ZkNoaWxkKSwgbnVsbHB0ciwgbnVsbHB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbXB1
dGVFeHBhbnNpb25PcHBvcnR1bml0aWVzKCpydWJ5QmFzZSwgZG93bmNhc3Q8TGVnYWN5SW5saW5l
VGV4dEJveD4oKmxlYWZDaGlsZCksIG51bGxwdHIsIG51bGxwdHIsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZG93bmNhc3Q8UmVuZGVyVGV4dD4obGVhZkNoaWxkLT5yZW5kZXJlcigpKS5z
dHJpbmdWaWV3KCksIGxlYWZDaGlsZC0+ZGlyZWN0aW9uKCkpOwogICAgICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICAgfQpAQCAtMTAxNyw3ICsxMDE3LDcgQEAgdm9pZCBMZWdhY3lM
aW5lTGF5b3V0OjpyZW1vdmVJbmxpbmVCb3goQmlkaVJ1biYgcnVuLCBjb25zdCBMZWdhY3lSb290
SW5saW5lQm94JgogCiAgICAgYXV0byYgcmVuZGVyZXIgPSBydW4ucmVuZGVyZXIoKTsKICAgICBp
ZiAoaXM8UmVuZGVyVGV4dD4ocmVuZGVyZXIpKQotICAgICAgICBkb3duY2FzdDxSZW5kZXJUZXh0
PihyZW5kZXJlcikucmVtb3ZlVGV4dEJveChkb3duY2FzdDxJbmxpbmVUZXh0Qm94PigqaW5saW5l
Qm94KSk7CisgICAgICAgIGRvd25jYXN0PFJlbmRlclRleHQ+KHJlbmRlcmVyKS5yZW1vdmVUZXh0
Qm94KGRvd25jYXN0PExlZ2FjeUlubGluZVRleHRCb3g+KCppbmxpbmVCb3gpKTsKICAgICBkZWxl
dGUgaW5saW5lQm94OwogICAgIHJ1bi5zZXRCb3gobnVsbHB0cik7CiAgICAgLy8gcmVtb3ZlRnJv
bVBhcmVudCgpIHVubmVjZXNzYXJpbHkgZGlydGllcyB0aGUgYW5jZXN0b3Igc3VidHJlZS4KQEAg
LTEwNTAsNyArMTA1MCw3IEBAIHZvaWQgTGVnYWN5TGluZUxheW91dDo6Y29tcHV0ZUJsb2NrRGly
ZWN0aW9uUG9zaXRpb25zRm9yTGluZShMZWdhY3lSb290SW5saW5lQm94CiAgICAgICAgIC8vIHRv
IHVwZGF0ZSB0aGUgc3RhdGljIG5vcm1hbCBmbG93IHgveSBvZiBwb3NpdGlvbmVkIGVsZW1lbnRz
LgogICAgICAgICBib29sIGlubGluZUJveElzUmVkdW5kYW50ID0gZmFsc2U7CiAgICAgICAgIGlm
IChpczxSZW5kZXJUZXh0PihyZW5kZXJlcikpIHsKLSAgICAgICAgICAgIGF1dG8mIGlubGluZVRl
eHRCb3ggPSBkb3duY2FzdDxJbmxpbmVUZXh0Qm94PigqcnVuLT5ib3goKSk7CisgICAgICAgICAg
ICBhdXRvJiBpbmxpbmVUZXh0Qm94ID0gZG93bmNhc3Q8TGVnYWN5SW5saW5lVGV4dEJveD4oKnJ1
bi0+Ym94KCkpOwogICAgICAgICAgICAgZG93bmNhc3Q8UmVuZGVyVGV4dD4ocmVuZGVyZXIpLnBv
c2l0aW9uTGluZUJveChpbmxpbmVUZXh0Qm94KTsKICAgICAgICAgICAgIGlubGluZUJveElzUmVk
dW5kYW50ID0gIWlubGluZVRleHRCb3guaGFzVGV4dENvbnRlbnQoKTsKICAgICAgICAgfSBlbHNl
IGlmIChpczxSZW5kZXJCb3g+KHJlbmRlcmVyKSkgewpAQCAtMTI2Myw3ICsxMjYzLDcgQEAgTGVn
YWN5Um9vdElubGluZUJveCogTGVnYWN5TGluZUxheW91dDo6Y3JlYXRlTGluZUJveGVzRnJvbUJp
ZGlSdW5zKHVuc2lnbmVkIGJpZGkKICAgICAKICAgICAvLyBTVkcgdGV4dCBsYXlvdXQgY29kZSBj
b21wdXRlcyB2ZXJ0aWNhbCAmIGhvcml6b250YWwgcG9zaXRpb25zIG9uIGl0cyBvd24uCiAgICAg
Ly8gTm90ZSB0aGF0IHdlIHN0aWxsIG5lZWQgdG8gZXhlY3V0ZSBjb21wdXRlVmVydGljYWxQb3Np
dGlvbnNGb3JMaW5lKCkgYXMKLSAgICAvLyBpdCBjYWxscyBJbmxpbmVUZXh0Qm94Ojpwb3NpdGlv
bkxpbmVCb3goKSwgd2hpY2ggdHJhY2tzIHdoZXRoZXIgdGhlIGJveAorICAgIC8vIGl0IGNhbGxz
IExlZ2FjeUlubGluZVRleHRCb3g6OnBvc2l0aW9uTGluZUJveCgpLCB3aGljaCB0cmFja3Mgd2hl
dGhlciB0aGUgYm94CiAgICAgLy8gY29udGFpbnMgcmV2ZXJzZWQgdGV4dCBvciBub3QuIElmIHdl
IHdvdWxkbid0IGRvIHRoYXQgZWRpdGluZyBhbmQgdGh1cwogICAgIC8vIHRleHQgc2VsZWN0aW9u
IGluIFJUTCBib3hlcyB3b3VsZCBub3Qgd29yayBhcyBleHBlY3RlZC4KICAgICBpZiAoaXNTVkdS
b290SW5saW5lQm94KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVn
YWN5Um9vdElubGluZUJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVnYWN5Um9v
dElubGluZUJveC5jcHAKaW5kZXggZTlkY2FkZTY4ZWNhLi43MjE1ZTU2MjUzY2MgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MZWdhY3lSb290SW5saW5lQm94LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVnYWN5Um9vdElubGluZUJveC5jcHAKQEAgLTI4
LDcgKzI4LDcgQEAKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4
dC5oIgogI2luY2x1ZGUgIkhpdFRlc3RSZXN1bHQuaCIKLSNpbmNsdWRlICJJbmxpbmVUZXh0Qm94
LmgiCisjaW5jbHVkZSAiTGVnYWN5SW5saW5lVGV4dEJveC5oIgogI2luY2x1ZGUgIkxvZ2ljYWxT
ZWxlY3Rpb25PZmZzZXRDYWNoZXMuaCIKICNpbmNsdWRlICJQYWludEluZm8uaCIKICNpbmNsdWRl
ICJSZW5kZXJGcmFnbWVudGVkRmxvdy5oIgpAQCAtOTksNyArOTksNyBAQCB2b2lkIExlZ2FjeVJv
b3RJbmxpbmVCb3g6OmNsZWFyVHJ1bmNhdGlvbigpCiBib29sIExlZ2FjeVJvb3RJbmxpbmVCb3g6
OmlzSHlwaGVuYXRlZCgpIGNvbnN0CiB7CiAgICAgZm9yIChhdXRvKiBib3ggPSBmaXJzdExlYWZE
ZXNjZW5kYW50KCk7IGJveDsgYm94ID0gYm94LT5uZXh0TGVhZk9uTGluZSgpKSB7Ci0gICAgICAg
IGlmIChpczxJbmxpbmVUZXh0Qm94PigqYm94KSAmJiBkb3duY2FzdDxJbmxpbmVUZXh0Qm94Pigq
Ym94KS5oYXNIeXBoZW4oKSkKKyAgICAgICAgaWYgKGlzPExlZ2FjeUlubGluZVRleHRCb3g+KCpi
b3gpICYmIGRvd25jYXN0PExlZ2FjeUlubGluZVRleHRCb3g+KCpib3gpLmhhc0h5cGhlbigpKQog
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIHJldHVybiBmYWxzZTsKQEAgLTgw
Myw4ICs4MDMsOCBAQCB2b2lkIExlZ2FjeVJvb3RJbmxpbmVCb3g6OmFzY2VudEFuZERlc2NlbnRG
b3JCb3goTGVnYWN5SW5saW5lQm94JiBib3gsIEdseXBoT3ZlcgogCiAgICAgVmVjdG9yPGNvbnN0
IEZvbnQqPiogdXNlZEZvbnRzID0gbnVsbHB0cjsKICAgICBHbHlwaE92ZXJmbG93KiBnbHlwaE92
ZXJmbG93ID0gbnVsbHB0cjsKLSAgICBpZiAoaXM8SW5saW5lVGV4dEJveD4oYm94KSkgewotICAg
ICAgICBHbHlwaE92ZXJmbG93QW5kRmFsbGJhY2tGb250c01hcDo6aXRlcmF0b3IgaXQgPSB0ZXh0
Qm94RGF0YU1hcC5maW5kKCZkb3duY2FzdDxJbmxpbmVUZXh0Qm94Pihib3gpKTsKKyAgICBpZiAo
aXM8TGVnYWN5SW5saW5lVGV4dEJveD4oYm94KSkgeworICAgICAgICBHbHlwaE92ZXJmbG93QW5k
RmFsbGJhY2tGb250c01hcDo6aXRlcmF0b3IgaXQgPSB0ZXh0Qm94RGF0YU1hcC5maW5kKCZkb3du
Y2FzdDxMZWdhY3lJbmxpbmVUZXh0Qm94Pihib3gpKTsKICAgICAgICAgdXNlZEZvbnRzID0gaXQg
PT0gdGV4dEJveERhdGFNYXAuZW5kKCkgPyBudWxscHRyIDogJml0LT52YWx1ZS5maXJzdDsKICAg
ICAgICAgZ2x5cGhPdmVyZmxvdyA9IGl0ID09IHRleHRCb3hEYXRhTWFwLmVuZCgpID8gbnVsbHB0
ciA6ICZpdC0+dmFsdWUuc2Vjb25kOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQmxvY2suY3BwCmluZGV4IDY2NTNlZWIzYTM0Ny4uZjUzOGUwZjVjZjA4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKQEAgLTQxLDggKzQxLDggQEAKICNpbmNs
dWRlICJJbWFnZUJ1ZmZlci5oIgogI2luY2x1ZGUgIklubGluZUVsZW1lbnRCb3guaCIKICNpbmNs
dWRlICJJbmxpbmVJdGVyYXRvci5oIgotI2luY2x1ZGUgIklubGluZVRleHRCb3guaCIKICNpbmNs
dWRlICJMYXlvdXRSZXBhaW50ZXIuaCIKKyNpbmNsdWRlICJMZWdhY3lJbmxpbmVUZXh0Qm94Lmgi
CiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIkxvZ2ljYWxTZWxlY3Rpb25PZmZzZXRD
YWNoZXMuaCIKICNpbmNsdWRlICJPdmVyZmxvd0V2ZW50LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwCmluZGV4IDY4ZGIwNjJlMDI0NC4uZWY5ODFhYTQ1
MDY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcApA
QCAtMzQsMTEgKzM0LDExIEBACiAjaW5jbHVkZSAiSFRNTFRleHRBcmVhRWxlbWVudC5oIgogI2lu
Y2x1ZGUgIkhpdFRlc3RMb2NhdGlvbi5oIgogI2luY2x1ZGUgIklubGluZUl0ZXJhdG9yLmgiCi0j
aW5jbHVkZSAiSW5saW5lVGV4dEJveC5oIgogI2luY2x1ZGUgIkxheW91dEludGVncmF0aW9uTGlu
ZUl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiTGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0LmgiCiAj
aW5jbHVkZSAiTGF5b3V0SW50ZWdyYXRpb25SdW5JdGVyYXRvci5oIgogI2luY2x1ZGUgIkxheW91
dFJlcGFpbnRlci5oIgorI2luY2x1ZGUgIkxlZ2FjeUlubGluZVRleHRCb3guaCIKICNpbmNsdWRl
ICJMZWdhY3lMaW5lTGF5b3V0LmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlJl
bmRlckNvbWJpbmVUZXh0LmgiCkBAIC0zMjMyLDcgKzMyMzIsNyBAQCBHYXBSZWN0cyBSZW5kZXJC
bG9ja0Zsb3c6OmlubGluZVNlbGVjdGlvbkdhcHMoUmVuZGVyQmxvY2smIHJvb3RCbG9jaywgY29u
c3QgTGF5bwogCiAgICAgYXV0byBoYXNTZWxlY3RlZENoaWxkcmVuID0gWyZdKGNvbnN0IExlZ2Fj
eVJvb3RJbmxpbmVCb3gmIHJvb3QpIHsKICAgICAgICAgZm9yIChhdXRvKiBib3ggPSByb290LmZp
cnN0TGVhZkRlc2NlbmRhbnQoKTsgYm94OyBib3ggPSBib3gtPm5leHRMZWFmT25MaW5lKCkpIHsK
LSAgICAgICAgICAgIGlmICghaXM8SW5saW5lVGV4dEJveD4oKmJveCkpIHsKKyAgICAgICAgICAg
IGlmICghaXM8TGVnYWN5SW5saW5lVGV4dEJveD4oKmJveCkpIHsKICAgICAgICAgICAgICAgICBp
ZiAoYm94LT5zZWxlY3Rpb25TdGF0ZSgpICE9IEhpZ2hsaWdodFN0YXRlOjpOb25lKQogICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgICAgICBjb250aW51ZTsKQEAg
LTMyNDEsNyArMzI0MSw3IEBAIEdhcFJlY3RzIFJlbmRlckJsb2NrRmxvdzo6aW5saW5lU2VsZWN0
aW9uR2FwcyhSZW5kZXJCbG9jayYgcm9vdEJsb2NrLCBjb25zdCBMYXlvCiAgICAgICAgICAgICBh
dXRvIHN0YXJ0ID0gdmlldygpLnNlbGVjdGlvbigpLnN0YXJ0T2Zmc2V0KCk7CiAgICAgICAgICAg
ICBhdXRvIGVuZCA9IHZpZXcoKS5zZWxlY3Rpb24oKS5lbmRPZmZzZXQoKTsKIAotICAgICAgICAg
ICAgYXV0byYgdGV4dEJveCA9IGRvd25jYXN0PElubGluZVRleHRCb3g+KCpib3gpOworICAgICAg
ICAgICAgYXV0byYgdGV4dEJveCA9IGRvd25jYXN0PExlZ2FjeUlubGluZVRleHRCb3g+KCpib3gp
OwogICAgICAgICAgICAgc3dpdGNoICh0ZXh0Qm94LnJlbmRlcmVyKCkuc2VsZWN0aW9uU3RhdGUo
KSkgewogICAgICAgICAgICAgY2FzZSBSZW5kZXJPYmplY3Q6OkhpZ2hsaWdodFN0YXRlOjpOb25l
OgogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKaW5kZXggYmFkYmM3NmJiMmY5Li5jOGFkYWYy
YmE4MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2Rl
bE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVs
T2JqZWN0LmNwcApAQCAtNzA0LDcgKzcwNCw3IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6
OnBhaW50TWFza0ZvclRleHRGaWxsQm94KEltYWdlQnVmZmVyKiBtYXNrSW1hZ2UsIGNvbnN0CiAg
ICAgbWFza0ltYWdlQ29udGV4dC50cmFuc2xhdGUoLW1hc2tSZWN0LmxvY2F0aW9uKCkpOwogCiAg
ICAgLy8gTm93IGFkZCB0aGUgdGV4dCB0byB0aGUgY2xpcC4gV2UgZG8gdGhpcyBieSBwYWludGlu
ZyB1c2luZyBhIHNwZWNpYWwgcGFpbnQgcGhhc2UgdGhhdCBzaWduYWxzIHRvCi0gICAgLy8gSW5s
aW5lVGV4dEJveGVzIHRoYXQgdGhleSBzaG91bGQganVzdCBhZGQgdGhlaXIgY29udGVudHMgdG8g
dGhlIGNsaXAuCisgICAgLy8gTGVnYWN5SW5saW5lVGV4dEJveGVzIHRoYXQgdGhleSBzaG91bGQg
anVzdCBhZGQgdGhlaXIgY29udGVudHMgdG8gdGhlIGNsaXAuCiAgICAgUGFpbnRJbmZvIGluZm8o
bWFza0ltYWdlQ29udGV4dCwgTGF5b3V0UmVjdCB7IG1hc2tSZWN0IH0sIFBhaW50UGhhc2U6OlRl
eHRDbGlwLCBQYWludEJlaGF2aW9yOjpGb3JjZUJsYWNrVGV4dCk7CiAgICAgaWYgKGJveCkgewog
ICAgICAgICBjb25zdCBMZWdhY3lSb290SW5saW5lQm94JiByb290Qm94ID0gYm94LT5yb290KCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwCmluZGV4IDlmODRkODJl
NTBhNy4uYThjNTAyNWNkMmY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVySW5saW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5s
aW5lLmNwcApAQCAtMjksOCArMjksOCBAQAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgog
I2luY2x1ZGUgIkhpdFRlc3RSZXN1bHQuaCIKICNpbmNsdWRlICJJbmxpbmVFbGVtZW50Qm94Lmgi
Ci0jaW5jbHVkZSAiSW5saW5lVGV4dEJveC5oIgogI2luY2x1ZGUgIkxheW91dEludGVncmF0aW9u
TGluZUxheW91dC5oIgorI2luY2x1ZGUgIkxlZ2FjeUlubGluZVRleHRCb3guaCIKICNpbmNsdWRl
ICJSZW5kZXJCbG9jay5oIgogI2luY2x1ZGUgIlJlbmRlckNoaWxkSXRlcmF0b3IuaCIKICNpbmNs
dWRlICJSZW5kZXJGcmFnbWVudGVkRmxvdy5oIgpAQCAtMzE4LDcgKzMxOCw3IEBAIHZvaWQgUmVu
ZGVySW5saW5lOjpnZW5lcmF0ZUN1bGxlZExpbmVCb3hSZWN0cyhHZW5lcmF0b3JDb250ZXh0JiBj
b250ZXh0LCBjb25zdCBSCiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSBpZiAoaXM8UmVu
ZGVyVGV4dD4oY3VycmVudCkpIHsKICAgICAgICAgICAgIGF1dG8mIGN1cnJUZXh0ID0gZG93bmNh
c3Q8UmVuZGVyVGV4dD4oY3VycmVudCk7Ci0gICAgICAgICAgICBmb3IgKElubGluZVRleHRCb3gq
IGNoaWxkVGV4dCA9IGN1cnJUZXh0LmZpcnN0VGV4dEJveCgpOyBjaGlsZFRleHQ7IGNoaWxkVGV4
dCA9IGNoaWxkVGV4dC0+bmV4dFRleHRCb3goKSkgeworICAgICAgICAgICAgZm9yIChhdXRvKiBj
aGlsZFRleHQgPSBjdXJyVGV4dC5maXJzdFRleHRCb3goKTsgY2hpbGRUZXh0OyBjaGlsZFRleHQg
PSBjaGlsZFRleHQtPm5leHRUZXh0Qm94KCkpIHsKICAgICAgICAgICAgICAgICBjb25zdCBMZWdh
Y3lSb290SW5saW5lQm94JiByb290Qm94ID0gY2hpbGRUZXh0LT5yb290KCk7CiAgICAgICAgICAg
ICAgICAgY29uc3QgUmVuZGVyU3R5bGUmIGNvbnRhaW5lclN0eWxlID0gcm9vdEJveC5pc0ZpcnN0
TGluZSgpID8gY29udGFpbmVyLT5maXJzdExpbmVTdHlsZSgpIDogY29udGFpbmVyLT5zdHlsZSgp
OwogICAgICAgICAgICAgICAgIGludCBsb2dpY2FsVG9wID0gcm9vdEJveC5sb2dpY2FsVG9wKCkg
KyAocm9vdEJveC5saW5lU3R5bGUoKS5mb250Q2FzY2FkZSgpLmZvbnRNZXRyaWNzKCkuYXNjZW50
KCkgLSBjb250YWluZXJTdHlsZS5mb250Q2FzY2FkZSgpLmZvbnRNZXRyaWNzKCkuYXNjZW50KCkp
OwpAQCAtNzYzLDcgKzc2Myw3IEBAIExheW91dFJlY3QgUmVuZGVySW5saW5lOjpjdWxsZWRJbmxp
bmVWaXN1YWxPdmVyZmxvd0JvdW5kaW5nQm94KCkgY29uc3QKICAgICAgICAgICAgICAgICByZXN1
bHQudW5pdGVJZk5vblplcm8ocmVuZGVySW5saW5lLmxpbmVzVmlzdWFsT3ZlcmZsb3dCb3VuZGlu
Z0JveCgpKTsKICAgICAgICAgfSBlbHNlIGlmIChpczxSZW5kZXJUZXh0PihjdXJyZW50KSkgewog
ICAgICAgICAgICAgLy8gRklYTUU7IE92ZXJmbG93IGZyb20gdGV4dCBib3hlcyBpcyBsb3N0LiBX
ZSB3aWxsIG5lZWQgdG8gY2FjaGUgdGhpcyBpbmZvcm1hdGlvbiBpbgotICAgICAgICAgICAgLy8g
SW5saW5lVGV4dEJveGVzLgorICAgICAgICAgICAgLy8gTGVnYWN5SW5saW5lVGV4dEJveGVzLgog
ICAgICAgICAgICAgYXV0byYgcmVuZGVyVGV4dCA9IGRvd25jYXN0PFJlbmRlclRleHQ+KGN1cnJl
bnQpOwogICAgICAgICAgICAgcmVzdWx0LnVuaXRlSWZOb25aZXJvKHJlbmRlclRleHQubGluZXNW
aXN1YWxPdmVyZmxvd0JvdW5kaW5nQm94KCkpOwogICAgICAgICB9CkBAIC0xMTE5LDcgKzExMTks
NyBAQCB2b2lkIFJlbmRlcklubGluZTo6ZGlydHlMaW5lQm94ZXMoYm9vbCBmdWxsTGF5b3V0KQog
ICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRMaW5lLT5yb290KCkubWFya0RpcnR5KCk7CiAg
ICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpczxSZW5kZXJUZXh0PihjdXJyZW50KSkgewogICAg
ICAgICAgICAgICAgICAgICBhdXRvJiByZW5kZXJUZXh0ID0gZG93bmNhc3Q8UmVuZGVyVGV4dD4o
Y3VycmVudCk7Ci0gICAgICAgICAgICAgICAgICAgIGZvciAoSW5saW5lVGV4dEJveCogY2hpbGRU
ZXh0ID0gcmVuZGVyVGV4dC5maXJzdFRleHRCb3goKTsgY2hpbGRUZXh0OyBjaGlsZFRleHQgPSBj
aGlsZFRleHQtPm5leHRUZXh0Qm94KCkpCisgICAgICAgICAgICAgICAgICAgIGZvciAoYXV0byog
Y2hpbGRUZXh0ID0gcmVuZGVyVGV4dC5maXJzdFRleHRCb3goKTsgY2hpbGRUZXh0OyBjaGlsZFRl
eHQgPSBjaGlsZFRleHQtPm5leHRUZXh0Qm94KCkpCiAgICAgICAgICAgICAgICAgICAgICAgICBj
aGlsZFRleHQtPnJvb3QoKS5tYXJrRGlydHkoKTsKICAgICAgICAgICAgICAgICB9IGVsc2UgaWYg
KGlzPFJlbmRlckxpbmVCcmVhaz4oY3VycmVudCkpIHsKICAgICAgICAgICAgICAgICAgICAgYXV0
byYgcmVuZGVyQlIgPSBkb3duY2FzdDxSZW5kZXJMaW5lQnJlYWs+KGN1cnJlbnQpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpbmVCb3hMaXN0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaW5lQm94TGlzdC5jcHAKaW5kZXggNGUyZWYx
NTc5YjNhLi42YjNiN2NiZTQzN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMaW5lQm94TGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxpbmVCb3hMaXN0LmNwcApAQCAtMzEsNyArMzEsNyBAQAogCiAjaW5jbHVkZSAiSGl0VGVz
dFJlc3VsdC5oIgogI2luY2x1ZGUgIklubGluZUVsZW1lbnRCb3guaCIKLSNpbmNsdWRlICJJbmxp
bmVUZXh0Qm94LmgiCisjaW5jbHVkZSAiTGVnYWN5SW5saW5lVGV4dEJveC5oIgogI2luY2x1ZGUg
IkxlZ2FjeVJvb3RJbmxpbmVCb3guaCIKICNpbmNsdWRlICJQYWludEluZm8uaCIKICNpbmNsdWRl
ICJSZW5kZXJCbG9ja0Zsb3cuaCIKQEAgLTMzOSw3ICszMzksNyBAQCB2b2lkIFJlbmRlckxpbmVC
b3hMaXN0OjpkaXJ0eUxpbmVzRnJvbUNoYW5nZWRDaGlsZChSZW5kZXJCb3hNb2RlbE9iamVjdCYg
Y29udGFpbgogICAgICAgICAgICAgaWYgKGF1dG8gd3JhcHBlciA9IGRvd25jYXN0PFJlbmRlckxp
bmVCcmVhaz4oKmN1cnJlbnQpLmlubGluZUJveFdyYXBwZXIoKSkKICAgICAgICAgICAgICAgICBi
b3ggPSAmd3JhcHBlci0+cm9vdCgpOwogICAgICAgICB9IGVsc2UgaWYgKGlzPFJlbmRlclRleHQ+
KCpjdXJyZW50KSkgewotICAgICAgICAgICAgaWYgKElubGluZVRleHRCb3gqIHRleHRCb3ggPSBk
b3duY2FzdDxSZW5kZXJUZXh0PigqY3VycmVudCkubGFzdFRleHRCb3goKSkKKyAgICAgICAgICAg
IGlmIChMZWdhY3lJbmxpbmVUZXh0Qm94KiB0ZXh0Qm94ID0gZG93bmNhc3Q8UmVuZGVyVGV4dD4o
KmN1cnJlbnQpLmxhc3RUZXh0Qm94KCkpCiAgICAgICAgICAgICAgICAgYm94ID0gJnRleHRCb3gt
PnJvb3QoKTsKICAgICAgICAgfSBlbHNlIGlmIChpczxSZW5kZXJJbmxpbmU+KCpjdXJyZW50KSkg
ewogICAgICAgICAgICAgTGVnYWN5SW5saW5lQm94KiBsYXN0U2libGluZ0JveCA9IGRvd25jYXN0
PFJlbmRlcklubGluZT4oKmN1cnJlbnQpLmxhc3RMaW5lQm94SW5jbHVkaW5nQ3VsbGluZygpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwCmluZGV4IGNkZTQ1ZDJlYzIxNC4u
MTA3YWNlNTE4MTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwCkBA
IC0zNyw3ICszNyw2IEBACiAjaW5jbHVkZSAiSFRNTFBhcnNlcklkaW9tcy5oIgogI2luY2x1ZGUg
Ikh5cGhlbmF0aW9uLmgiCiAjaW5jbHVkZSAiSW5saW5lUnVuQW5kT2Zmc2V0LmgiCi0jaW5jbHVk
ZSAiSW5saW5lVGV4dEJveC5oIgogI2luY2x1ZGUgIkxheW91dEludGVncmF0aW9uTGluZUl0ZXJh
dG9yLmgiCiAjaW5jbHVkZSAiTGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0LmgiCiAjaW5jbHVk
ZSAiTGF5b3V0SW50ZWdyYXRpb25SdW5JdGVyYXRvci5oIgpAQCAtNDgwLDcgKzQ3OSw3IEBAIHN0
YXRpYyBGbG9hdFJlY3QgbG9jYWxRdWFkRm9yVGV4dFJ1bihjb25zdCBMYXlvdXRJbnRlZ3JhdGlv
bjo6UGF0aFRleHRSdW4mIHJ1biwKIFZlY3RvcjxGbG9hdFF1YWQ+IFJlbmRlclRleHQ6OmFic29s
dXRlUXVhZHNGb3JSYW5nZSh1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgZW5kLCBib29sIHVzZVNl
bGVjdGlvbkhlaWdodCwgYm9vbCBpZ25vcmVFbXB0eVRleHRTZWxlY3Rpb25zLCBib29sKiB3YXNG
aXhlZCkgY29uc3QKIHsKICAgICAvLyBXb3JrIGFyb3VuZCBzaWduZWQvdW5zaWduZWQgaXNzdWVz
LiBUaGlzIGZ1bmN0aW9uIHRha2VzIHVuc2lnbmVkcywgYW5kIGlzIG9mdGVuIHBhc3NlZCBVSU5U
X01BWAotICAgIC8vIHRvIG1lYW4gImFsbCB0aGUgd2F5IHRvIHRoZSBlbmQiLiBJbmxpbmVUZXh0
Qm94IGNvb3JkaW5hdGVzIGFyZSB1bnNpZ25lZHMsIHNvIGNoYW5naW5nIHRoaXMKKyAgICAvLyB0
byBtZWFuICJhbGwgdGhlIHdheSB0byB0aGUgZW5kIi4gTGVnYWN5SW5saW5lVGV4dEJveCBjb29y
ZGluYXRlcyBhcmUgdW5zaWduZWRzLCBzbyBjaGFuZ2luZyB0aGlzCiAgICAgLy8gZnVuY3Rpb24g
dG8gdGFrZSBpbnRzIGNhdXNlcyB2YXJpb3VzIGludGVybmFsIG1pc21hdGNoZXMuIEJ1dCBzZWxl
Y3Rpb25SZWN0IHRha2VzIGludHMsIGFuZAogICAgIC8vIHBhc3NpbmcgVUlOVF9NQVggdG8gaXQg
Y2F1c2VzIHRyb3VibGUuIElkZWFsbHkgd2UnZCBjaGFuZ2Ugc2VsZWN0aW9uUmVjdCB0byB0YWtl
IHVuc2lnbmVkcywgYnV0CiAgICAgLy8gdGhhdCB3b3VsZCBjYXVzZSBtYW55IHJpcHBsZSBlZmZl
Y3RzLCBzbyBmb3Igbm93IHdlJ2xsIGp1c3QgY2xhbXAgb3VyIHVuc2lnbmVkIHBhcmFtZXRlcnMg
dG8gSU5UX01BWC4KQEAgLTE0OTIsMTIgKzE0OTEsMTIgQEAgdm9pZCBSZW5kZXJUZXh0OjpkZWxl
dGVMaW5lQm94ZXMoKQogICAgIG1fbGluZUJveGVzLmRlbGV0ZUFsbCgpOwogfQogCi1zdGQ6OnVu
aXF1ZV9wdHI8SW5saW5lVGV4dEJveD4gUmVuZGVyVGV4dDo6Y3JlYXRlVGV4dEJveCgpCitzdGQ6
OnVuaXF1ZV9wdHI8TGVnYWN5SW5saW5lVGV4dEJveD4gUmVuZGVyVGV4dDo6Y3JlYXRlVGV4dEJv
eCgpCiB7Ci0gICAgcmV0dXJuIG1ha2VVbmlxdWU8SW5saW5lVGV4dEJveD4oKnRoaXMpOworICAg
IHJldHVybiBtYWtlVW5pcXVlPExlZ2FjeUlubGluZVRleHRCb3g+KCp0aGlzKTsKIH0KIAotdm9p
ZCBSZW5kZXJUZXh0Ojpwb3NpdGlvbkxpbmVCb3goSW5saW5lVGV4dEJveCYgdGV4dEJveCkKK3Zv
aWQgUmVuZGVyVGV4dDo6cG9zaXRpb25MaW5lQm94KExlZ2FjeUlubGluZVRleHRCb3gmIHRleHRC
b3gpCiB7CiAgICAgaWYgKCF0ZXh0Qm94Lmhhc1RleHRDb250ZW50KCkpCiAgICAgICAgIHJldHVy
bjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmggYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5oCmluZGV4IDljN2RhZTg4Y2VkYi4u
NTRmMTA5Yjg0NDQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmgKQEAgLTMx
LDcgKzMxLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRm9udDsKLWNsYXNzIElu
bGluZVRleHRCb3g7CitjbGFzcyBMZWdhY3lJbmxpbmVUZXh0Qm94Owogc3RydWN0IEdseXBoT3Zl
cmZsb3c7CiAKIG5hbWVzcGFjZSBMYXlvdXRJbnRlZ3JhdGlvbiB7CkBAIC02MSwxNCArNjEsMTQg
QEAgcHVibGljOgogCiAgICAgdmlydHVhbCBTdHJpbmcgb3JpZ2luYWxUZXh0KCkgY29uc3Q7CiAK
LSAgICB2b2lkIGV4dHJhY3RUZXh0Qm94KElubGluZVRleHRCb3gmIGJveCkgeyBtX2xpbmVCb3hl
cy5leHRyYWN0KGJveCk7IH0KLSAgICB2b2lkIGF0dGFjaFRleHRCb3goSW5saW5lVGV4dEJveCYg
Ym94KSB7IG1fbGluZUJveGVzLmF0dGFjaChib3gpOyB9Ci0gICAgdm9pZCByZW1vdmVUZXh0Qm94
KElubGluZVRleHRCb3gmIGJveCkgeyBtX2xpbmVCb3hlcy5yZW1vdmUoYm94KTsgfQorICAgIHZv
aWQgZXh0cmFjdFRleHRCb3goTGVnYWN5SW5saW5lVGV4dEJveCYgYm94KSB7IG1fbGluZUJveGVz
LmV4dHJhY3QoYm94KTsgfQorICAgIHZvaWQgYXR0YWNoVGV4dEJveChMZWdhY3lJbmxpbmVUZXh0
Qm94JiBib3gpIHsgbV9saW5lQm94ZXMuYXR0YWNoKGJveCk7IH0KKyAgICB2b2lkIHJlbW92ZVRl
eHRCb3goTGVnYWN5SW5saW5lVGV4dEJveCYgYm94KSB7IG1fbGluZUJveGVzLnJlbW92ZShib3gp
OyB9CiAKICAgICBTdHJpbmdJbXBsJiB0ZXh0KCkgY29uc3QgeyByZXR1cm4gKm1fdGV4dC5pbXBs
KCk7IH0gLy8gU2luY2UgbV90ZXh0IGNhbiBuZXZlciBiZSBudWxsLCByZXR1cm5pbmcgdGhpcyB0
eXBlIG1lYW5zIGNhbGxlcnMgd29uJ3QgbnVsbCBjaGVjay4KICAgICBTdHJpbmcgdGV4dFdpdGhv
dXRDb252ZXJ0aW5nQmFja3NsYXNoVG9ZZW5TeW1ib2woKSBjb25zdDsKIAotICAgIElubGluZVRl
eHRCb3gqIGNyZWF0ZUlubGluZVRleHRCb3goKSB7IHJldHVybiBtX2xpbmVCb3hlcy5jcmVhdGVB
bmRBcHBlbmRMaW5lQm94KCp0aGlzKTsgfQorICAgIExlZ2FjeUlubGluZVRleHRCb3gqIGNyZWF0
ZUlubGluZVRleHRCb3goKSB7IHJldHVybiBtX2xpbmVCb3hlcy5jcmVhdGVBbmRBcHBlbmRMaW5l
Qm94KCp0aGlzKTsgfQogICAgIHZvaWQgZGlydHlMaW5lQm94ZXMoYm9vbCBmdWxsTGF5b3V0KTsK
ICAgICB2b2lkIGRlbGV0ZUxpbmVCb3hlcygpOwogCkBAIC04OCw3ICs4OCw3IEBAIHB1YmxpYzoK
ICAgICBVQ2hhciBjaGFyYWN0ZXJBdCh1bnNpZ25lZCkgY29uc3Q7CiAgICAgdW5zaWduZWQgbGVu
Z3RoKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdGV4dCgpLmxlbmd0aCgpOyB9CiAKLSAgICB2b2lk
IHBvc2l0aW9uTGluZUJveChJbmxpbmVUZXh0Qm94Jik7CisgICAgdm9pZCBwb3NpdGlvbkxpbmVC
b3goTGVnYWN5SW5saW5lVGV4dEJveCYpOwogCiAgICAgdmlydHVhbCBmbG9hdCB3aWR0aCh1bnNp
Z25lZCBmcm9tLCB1bnNpZ25lZCBsZW5ndGgsIGNvbnN0IEZvbnRDYXNjYWRlJiwgZmxvYXQgeFBv
cywgSGFzaFNldDxjb25zdCBGb250Kj4qIGZhbGxiYWNrRm9udHMgPSBudWxscHRyLCBHbHlwaE92
ZXJmbG93KiA9IG51bGxwdHIpIGNvbnN0OwogICAgIHZpcnR1YWwgZmxvYXQgd2lkdGgodW5zaWdu
ZWQgZnJvbSwgdW5zaWduZWQgbGVuZ3RoLCBmbG9hdCB4UG9zLCBib29sIGZpcnN0TGluZSA9IGZh
bHNlLCBIYXNoU2V0PGNvbnN0IEZvbnQqPiogZmFsbGJhY2tGb250cyA9IG51bGxwdHIsIEdseXBo
T3ZlcmZsb3cqID0gbnVsbHB0cikgY29uc3Q7CkBAIC0xMzEsOCArMTMxLDggQEAgcHVibGljOgog
ICAgIExheW91dFVuaXQgbWFyZ2luTGVmdCgpIGNvbnN0IHsgcmV0dXJuIG1pbmltdW1WYWx1ZUZv
ckxlbmd0aChzdHlsZSgpLm1hcmdpbkxlZnQoKSwgMCk7IH0KICAgICBMYXlvdXRVbml0IG1hcmdp
blJpZ2h0KCkgY29uc3QgeyByZXR1cm4gbWluaW11bVZhbHVlRm9yTGVuZ3RoKHN0eWxlKCkubWFy
Z2luUmlnaHQoKSwgMCk7IH0KIAotICAgIElubGluZVRleHRCb3gqIGZpcnN0VGV4dEJveCgpIGNv
bnN0IHsgcmV0dXJuIG1fbGluZUJveGVzLmZpcnN0KCk7IH0KLSAgICBJbmxpbmVUZXh0Qm94KiBs
YXN0VGV4dEJveCgpIGNvbnN0IHsgcmV0dXJuIG1fbGluZUJveGVzLmxhc3QoKTsgfQorICAgIExl
Z2FjeUlubGluZVRleHRCb3gqIGZpcnN0VGV4dEJveCgpIGNvbnN0IHsgcmV0dXJuIG1fbGluZUJv
eGVzLmZpcnN0KCk7IH0KKyAgICBMZWdhY3lJbmxpbmVUZXh0Qm94KiBsYXN0VGV4dEJveCgpIGNv
bnN0IHsgcmV0dXJuIG1fbGluZUJveGVzLmxhc3QoKTsgfQogCiAgICAgaW50IGNhcmV0TWluT2Zm
c2V0KCkgY29uc3QgZmluYWw7CiAgICAgaW50IGNhcmV0TWF4T2Zmc2V0KCkgY29uc3QgZmluYWw7
CkBAIC0xNTAsNyArMTUwLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBtb21lbnRhcmlseVJldmVh
bExhc3RUeXBlZENoYXJhY3Rlcih1bnNpZ25lZCBvZmZzZXRBZnRlckxhc3RUeXBlZENoYXJhY3Rl
cik7CiAKLSAgICBJbmxpbmVUZXh0Qm94KiBmaW5kTmV4dElubGluZVRleHRCb3goaW50IG9mZnNl
dCwgaW50JiBwb3MpIGNvbnN0IHsgcmV0dXJuIG1fbGluZUJveGVzLmZpbmROZXh0KG9mZnNldCwg
cG9zKTsgfQorICAgIExlZ2FjeUlubGluZVRleHRCb3gqIGZpbmROZXh0SW5saW5lVGV4dEJveChp
bnQgb2Zmc2V0LCBpbnQmIHBvcykgY29uc3QgeyByZXR1cm4gbV9saW5lQm94ZXMuZmluZE5leHQo
b2Zmc2V0LCBwb3MpOyB9CiAKICAgICBib29sIGlzQWxsQ29sbGFwc2libGVXaGl0ZXNwYWNlKCkg
Y29uc3Q7CiAKQEAgLTE2MCw3ICsxNjAsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQg
c3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5
bGUpOwogCi0gICAgdmlydHVhbCBzdGQ6OnVuaXF1ZV9wdHI8SW5saW5lVGV4dEJveD4gY3JlYXRl
VGV4dEJveCgpOworICAgIHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRyPExlZ2FjeUlubGluZVRleHRC
b3g+IGNyZWF0ZVRleHRCb3goKTsKIAogI2lmIEVOQUJMRShURVhUX0FVVE9TSVpJTkcpCiAgICAg
ZmxvYXQgY2FuZGlkYXRlQ29tcHV0ZWRUZXh0U2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2FuZGlk
YXRlQ29tcHV0ZWRUZXh0U2l6ZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRleHRMaW5lQm94ZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRleHRMaW5lQm94ZXMuY3BwCmluZGV4IGFiYjQzZTMwZDI0Zi4uMzk4N2I4MTk2MzgzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dExpbmVCb3hlcy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRMaW5lQm94ZXMuY3Bw
CkBAIC0yNyw3ICsyNyw3IEBACiAjaW5jbHVkZSAiUmVuZGVyVGV4dExpbmVCb3hlcy5oIgogCiAj
aW5jbHVkZSAiRWxsaXBzaXNCb3guaCIKLSNpbmNsdWRlICJJbmxpbmVUZXh0Qm94LmgiCisjaW5j
bHVkZSAiTGVnYWN5SW5saW5lVGV4dEJveC5oIgogI2luY2x1ZGUgIkxlZ2FjeVJvb3RJbmxpbmVC
b3guaCIKICNpbmNsdWRlICJSZW5kZXJCbG9jay5oIgogI2luY2x1ZGUgIlJlbmRlclN0eWxlLmgi
CkBAIC00Miw3ICs0Miw3IEBAIFJlbmRlclRleHRMaW5lQm94ZXM6OlJlbmRlclRleHRMaW5lQm94
ZXMoKQogewogfQogCi1JbmxpbmVUZXh0Qm94KiBSZW5kZXJUZXh0TGluZUJveGVzOjpjcmVhdGVB
bmRBcHBlbmRMaW5lQm94KFJlbmRlclRleHQmIHJlbmRlclRleHQpCitMZWdhY3lJbmxpbmVUZXh0
Qm94KiBSZW5kZXJUZXh0TGluZUJveGVzOjpjcmVhdGVBbmRBcHBlbmRMaW5lQm94KFJlbmRlclRl
eHQmIHJlbmRlclRleHQpCiB7CiAgICAgYXV0byB0ZXh0Qm94ID0gcmVuZGVyVGV4dC5jcmVhdGVU
ZXh0Qm94KCk7CiAgICAgaWYgKCFtX2ZpcnN0KSB7CkBAIC01Niw3ICs1Niw3IEBAIElubGluZVRl
eHRCb3gqIFJlbmRlclRleHRMaW5lQm94ZXM6OmNyZWF0ZUFuZEFwcGVuZExpbmVCb3goUmVuZGVy
VGV4dCYgcmVuZGVyVGV4CiAgICAgcmV0dXJuIHRleHRCb3gucmVsZWFzZSgpOwogfQogCi12b2lk
IFJlbmRlclRleHRMaW5lQm94ZXM6OmV4dHJhY3QoSW5saW5lVGV4dEJveCYgYm94KQordm9pZCBS
ZW5kZXJUZXh0TGluZUJveGVzOjpleHRyYWN0KExlZ2FjeUlubGluZVRleHRCb3gmIGJveCkKIHsK
ICAgICBjaGVja0NvbnNpc3RlbmN5KCk7CiAKQEAgLTcyLDcgKzcyLDcgQEAgdm9pZCBSZW5kZXJU
ZXh0TGluZUJveGVzOjpleHRyYWN0KElubGluZVRleHRCb3gmIGJveCkKICAgICBjaGVja0NvbnNp
c3RlbmN5KCk7CiB9CiAKLXZvaWQgUmVuZGVyVGV4dExpbmVCb3hlczo6YXR0YWNoKElubGluZVRl
eHRCb3gmIGJveCkKK3ZvaWQgUmVuZGVyVGV4dExpbmVCb3hlczo6YXR0YWNoKExlZ2FjeUlubGlu
ZVRleHRCb3gmIGJveCkKIHsKICAgICBjaGVja0NvbnNpc3RlbmN5KCk7CiAKQEAgLTgxLDcgKzgx
LDcgQEAgdm9pZCBSZW5kZXJUZXh0TGluZUJveGVzOjphdHRhY2goSW5saW5lVGV4dEJveCYgYm94
KQogICAgICAgICBib3guc2V0UHJldmlvdXNUZXh0Qm94KG1fbGFzdCk7CiAgICAgfSBlbHNlCiAg
ICAgICAgIG1fZmlyc3QgPSAmYm94OwotICAgIElubGluZVRleHRCb3gqIGxhc3QgPSBudWxscHRy
OworICAgIExlZ2FjeUlubGluZVRleHRCb3gqIGxhc3QgPSBudWxscHRyOwogICAgIGZvciAoYXV0
byogY3VycmVudCA9ICZib3g7IGN1cnJlbnQ7IGN1cnJlbnQgPSBjdXJyZW50LT5uZXh0VGV4dEJv
eCgpKSB7CiAgICAgICAgIGN1cnJlbnQtPnNldEV4dHJhY3RlZChmYWxzZSk7CiAgICAgICAgIGxh
c3QgPSBjdXJyZW50OwpAQCAtOTEsNyArOTEsNyBAQCB2b2lkIFJlbmRlclRleHRMaW5lQm94ZXM6
OmF0dGFjaChJbmxpbmVUZXh0Qm94JiBib3gpCiAgICAgY2hlY2tDb25zaXN0ZW5jeSgpOwogfQog
Ci12b2lkIFJlbmRlclRleHRMaW5lQm94ZXM6OnJlbW92ZShJbmxpbmVUZXh0Qm94JiBib3gpCit2
b2lkIFJlbmRlclRleHRMaW5lQm94ZXM6OnJlbW92ZShMZWdhY3lJbmxpbmVUZXh0Qm94JiBib3gp
CiB7CiAgICAgY2hlY2tDb25zaXN0ZW5jeSgpOwogCkBAIC0xMjIsNyArMTIyLDcgQEAgdm9pZCBS
ZW5kZXJUZXh0TGluZUJveGVzOjpkZWxldGVBbGwoKQogewogICAgIGlmICghbV9maXJzdCkKICAg
ICAgICAgcmV0dXJuOwotICAgIElubGluZVRleHRCb3gqIG5leHQ7CisgICAgTGVnYWN5SW5saW5l
VGV4dEJveCogbmV4dDsKICAgICBmb3IgKGF1dG8qIGN1cnJlbnQgPSBtX2ZpcnN0OyBjdXJyZW50
OyBjdXJyZW50ID0gbmV4dCkgewogICAgICAgICBuZXh0ID0gY3VycmVudC0+bmV4dFRleHRCb3go
KTsKICAgICAgICAgZGVsZXRlIGN1cnJlbnQ7CkBAIC0xMzEsNyArMTMxLDcgQEAgdm9pZCBSZW5k
ZXJUZXh0TGluZUJveGVzOjpkZWxldGVBbGwoKQogICAgIG1fbGFzdCA9IG51bGxwdHI7CiB9CiAK
LUlubGluZVRleHRCb3gqIFJlbmRlclRleHRMaW5lQm94ZXM6OmZpbmROZXh0KGludCBvZmZzZXQs
IGludCYgcG9zaXRpb24pIGNvbnN0CitMZWdhY3lJbmxpbmVUZXh0Qm94KiBSZW5kZXJUZXh0TGlu
ZUJveGVzOjpmaW5kTmV4dChpbnQgb2Zmc2V0LCBpbnQmIHBvc2l0aW9uKSBjb25zdAogewogICAg
IGlmICghbV9maXJzdCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0yNTYsNyArMjU2LDcg
QEAgaW5saW5lIHZvaWQgUmVuZGVyVGV4dExpbmVCb3hlczo6Y2hlY2tDb25zaXN0ZW5jeSgpIGNv
bnN0CiB7CiAjaWYgQVNTRVJUX0VOQUJMRUQKICNpZmRlZiBDSEVDS19DT05TSVNURU5DWQotICAg
IGNvbnN0IElubGluZVRleHRCb3gqIHByZXYgPSBudWxscHRyOworICAgIGNvbnN0IExlZ2FjeUlu
bGluZVRleHRCb3gqIHByZXYgPSBudWxscHRyOwogICAgIGZvciAoYXV0byogY2hpbGQgPSBtX2Zp
cnN0OyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFRleHRCb3goKSkgewogICAgICAgICBBU1NF
UlQoY2hpbGQtPnJlbmRlcmVyKCkgPT0gdGhpcyk7CiAgICAgICAgIEFTU0VSVChjaGlsZC0+cHJl
dlRleHRCb3goKSA9PSBwcmV2KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUZXh0TGluZUJveGVzLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGV4dExpbmVCb3hlcy5oCmluZGV4IDc0ZDFlMDczY2JjMS4uMzMzMWVjYmNhYjUyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dExpbmVCb3hlcy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0TGluZUJveGVzLmgKQEAgLTMwLDcg
KzMwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBJbmxpbmVUZXh0Qm94Owor
Y2xhc3MgTGVnYWN5SW5saW5lVGV4dEJveDsKIGNsYXNzIFJlbmRlclN0eWxlOwogY2xhc3MgUmVu
ZGVyVGV4dDsKIGNsYXNzIFZpc2libGVQb3NpdGlvbjsKQEAgLTM5LDE0ICszOSwxNCBAQCBjbGFz
cyBSZW5kZXJUZXh0TGluZUJveGVzIHsKIHB1YmxpYzoKICAgICBSZW5kZXJUZXh0TGluZUJveGVz
KCk7CiAKLSAgICBJbmxpbmVUZXh0Qm94KiBmaXJzdCgpIGNvbnN0IHsgcmV0dXJuIG1fZmlyc3Q7
IH0KLSAgICBJbmxpbmVUZXh0Qm94KiBsYXN0KCkgY29uc3QgeyByZXR1cm4gbV9sYXN0OyB9Cisg
ICAgTGVnYWN5SW5saW5lVGV4dEJveCogZmlyc3QoKSBjb25zdCB7IHJldHVybiBtX2ZpcnN0OyB9
CisgICAgTGVnYWN5SW5saW5lVGV4dEJveCogbGFzdCgpIGNvbnN0IHsgcmV0dXJuIG1fbGFzdDsg
fQogCi0gICAgSW5saW5lVGV4dEJveCogY3JlYXRlQW5kQXBwZW5kTGluZUJveChSZW5kZXJUZXh0
Jik7CisgICAgTGVnYWN5SW5saW5lVGV4dEJveCogY3JlYXRlQW5kQXBwZW5kTGluZUJveChSZW5k
ZXJUZXh0Jik7CiAKLSAgICB2b2lkIGV4dHJhY3QoSW5saW5lVGV4dEJveCYpOwotICAgIHZvaWQg
YXR0YWNoKElubGluZVRleHRCb3gmKTsKLSAgICB2b2lkIHJlbW92ZShJbmxpbmVUZXh0Qm94Jik7
CisgICAgdm9pZCBleHRyYWN0KExlZ2FjeUlubGluZVRleHRCb3gmKTsKKyAgICB2b2lkIGF0dGFj
aChMZWdhY3lJbmxpbmVUZXh0Qm94Jik7CisgICAgdm9pZCByZW1vdmUoTGVnYWN5SW5saW5lVGV4
dEJveCYpOwogCiAgICAgdm9pZCByZW1vdmVBbGxGcm9tUGFyZW50KFJlbmRlclRleHQmKTsKICAg
ICB2b2lkIGRlbGV0ZUFsbCgpOwpAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBk
aXJ0eUFsbCgpOwogICAgIGJvb2wgZGlydHlSYW5nZShSZW5kZXJUZXh0JiwgdW5zaWduZWQgc3Rh
cnQsIHVuc2lnbmVkIGVuZCwgaW50IGxlbmd0aERlbHRhKTsKIAotICAgIElubGluZVRleHRCb3gq
IGZpbmROZXh0KGludCBvZmZzZXQsIGludCYgcG9zaXRpb24pIGNvbnN0OworICAgIExlZ2FjeUlu
bGluZVRleHRCb3gqIGZpbmROZXh0KGludCBvZmZzZXQsIGludCYgcG9zaXRpb24pIGNvbnN0Owog
CiAgICAgTGF5b3V0UmVjdCB2aXN1YWxPdmVyZmxvd0JvdW5kaW5nQm94KGNvbnN0IFJlbmRlclRl
eHQmKSBjb25zdDsKIApAQCAtNjksOCArNjksOCBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIHZv
aWQgY2hlY2tDb25zaXN0ZW5jeSgpIGNvbnN0OwogCi0gICAgSW5saW5lVGV4dEJveCogbV9maXJz
dDsKLSAgICBJbmxpbmVUZXh0Qm94KiBtX2xhc3Q7CisgICAgTGVnYWN5SW5saW5lVGV4dEJveCog
bV9maXJzdDsKKyAgICBMZWdhY3lJbmxpbmVUZXh0Qm94KiBtX2xhc3Q7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVHJlZUFzVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVHJlZUFz
VGV4dC5jcHAKaW5kZXggODE3MDJmNDVkNGMxLi4zMDE3MmE5YzgyYTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5jcHAKQEAgLTM2LDggKzM2LDggQEAK
ICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJIVE1MU3BhbkVsZW1lbnQuaCIKICNp
bmNsdWRlICJJbmxpbmVJdGVyYXRvci5oIgotI2luY2x1ZGUgIklubGluZVRleHRCb3guaCIKICNp
bmNsdWRlICJMYXlvdXRJbnRlZ3JhdGlvblJ1bkl0ZXJhdG9yLmgiCisjaW5jbHVkZSAiTGVnYWN5
SW5saW5lVGV4dEJveC5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJQcmludENv
bnRleHQuaCIKICNpbmNsdWRlICJQc2V1ZG9FbGVtZW50LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvVGV4dERlY29yYXRpb25QYWludGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvVGV4dERlY29yYXRpb25QYWludGVyLmgKaW5kZXggMjYyZGVkYzdhNWJmLi44
N2UyMDY2Zjg4MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0RGVj
b3JhdGlvblBhaW50ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dERlY29y
YXRpb25QYWludGVyLmgKQEAgLTMzLDcgKzMzLDcgQEAgY2xhc3MgRmlsdGVyT3BlcmF0aW9uczsK
IGNsYXNzIEZvbnRDYXNjYWRlOwogY2xhc3MgRmxvYXRSZWN0OwogY2xhc3MgR3JhcGhpY3NDb250
ZXh0OwotY2xhc3MgSW5saW5lVGV4dEJveDsKK2NsYXNzIExlZ2FjeUlubGluZVRleHRCb3g7CiBj
bGFzcyBSZW5kZXJPYmplY3Q7CiBjbGFzcyBSZW5kZXJTdHlsZTsKIGNsYXNzIFJlbmRlclRleHQ7
CkBAIC00NSw3ICs0NSw3IEBAIHB1YmxpYzoKICAgICBzdHJ1Y3QgU3R5bGVzOwogICAgIFRleHRE
ZWNvcmF0aW9uUGFpbnRlcihHcmFwaGljc0NvbnRleHQmLCBPcHRpb25TZXQ8VGV4dERlY29yYXRp
b24+IGRlY29yYXRpb25zLCBjb25zdCBSZW5kZXJUZXh0JiwgYm9vbCBpc0ZpcnN0TGluZSwgY29u
c3QgRm9udENhc2NhZGUmLCBzdGQ6Om9wdGlvbmFsPFN0eWxlcz4gPSBzdGQ6Om51bGxvcHQpOwog
ICAgIAotICAgIHZvaWQgc2V0SW5saW5lVGV4dEJveChjb25zdCBJbmxpbmVUZXh0Qm94KiBpbmxp
bmVUZXh0Qm94KSB7IG1faW5saW5lVGV4dEJveCA9IGlubGluZVRleHRCb3g7IH0KKyAgICB2b2lk
IHNldElubGluZVRleHRCb3goY29uc3QgTGVnYWN5SW5saW5lVGV4dEJveCogaW5saW5lVGV4dEJv
eCkgeyBtX2lubGluZVRleHRCb3ggPSBpbmxpbmVUZXh0Qm94OyB9CiAgICAgdm9pZCBzZXRJc0hv
cml6b250YWwoYm9vbCBpc0hvcml6b250YWwpIHsgbV9pc0hvcml6b250YWwgPSBpc0hvcml6b250
YWw7IH0KICAgICB2b2lkIHNldFdpZHRoKGZsb2F0IHdpZHRoKSB7IG1fd2lkdGggPSB3aWR0aDsg
fQogICAgIHZvaWQgc2V0VGV4dFNoYWRvdyhjb25zdCBTaGFkb3dEYXRhKiB0ZXh0U2hhZG93KSB7
IG1fc2hhZG93ID0gdGV4dFNoYWRvdzsgfQpAQCAtNzgsNyArNzgsNyBAQCBwcml2YXRlOgogICAg
IGJvb2wgbV9pc0hvcml6b250YWwgeyB0cnVlIH07CiAgICAgY29uc3QgU2hhZG93RGF0YSogbV9z
aGFkb3cgeyBudWxscHRyIH07CiAgICAgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyogbV9zaGFkb3dD
b2xvckZpbHRlciB7IG51bGxwdHIgfTsKLSAgICBjb25zdCBJbmxpbmVUZXh0Qm94KiBtX2lubGlu
ZVRleHRCb3ggeyBudWxscHRyIH07CisgICAgY29uc3QgTGVnYWN5SW5saW5lVGV4dEJveCogbV9p
bmxpbmVUZXh0Qm94IHsgbnVsbHB0ciB9OwogICAgIGNvbnN0IEZvbnRDYXNjYWRlJiBtX2ZvbnQ7
CiAKICAgICBTdHlsZXMgbV9zdHlsZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvVGV4dFBhaW50ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRQYWlu
dGVyLmNwcAppbmRleCBiYmExMWIzZjQ0NDAuLjc0ODUyYTZiMGQyNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRQYWludGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvVGV4dFBhaW50ZXIuY3BwCkBAIC0yNyw4ICsyNyw4IEBACiAjaW5jbHVkZSAi
RmlsdGVyT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1
ZGUgIkhUTUxQYXJzZXJJZGlvbXMuaCIKLSNpbmNsdWRlICJJbmxpbmVUZXh0Qm94LmgiCiAjaW5j
bHVkZSAiTGF5b3V0SW50ZWdyYXRpb25SdW4uaCIKKyNpbmNsdWRlICJMZWdhY3lJbmxpbmVUZXh0
Qm94LmgiCiAjaW5jbHVkZSAiUmVuZGVyQ29tYmluZVRleHQuaCIKICNpbmNsdWRlICJSZW5kZXJM
YXllci5oIgogI2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKQEAgLTIyNyw3ICsy
MjcsNyBAQCB2b2lkIFRleHRQYWludGVyOjpwYWludFJhbmdlKGNvbnN0IFRleHRSdW4mIHRleHRS
dW4sIGNvbnN0IEZsb2F0UmVjdCYgYm94UmVjdCwgYwogCiB2b2lkIFRleHRQYWludGVyOjpjbGVh
ckdseXBoRGlzcGxheUxpc3RzKCkKIHsKLSAgICBHbHlwaERpc3BsYXlMaXN0Q2FjaGU8SW5saW5l
VGV4dEJveD46OnNpbmdsZXRvbigpLmNsZWFyKCk7CisgICAgR2x5cGhEaXNwbGF5TGlzdENhY2hl
PExlZ2FjeUlubGluZVRleHRCb3g+OjpzaW5nbGV0b24oKS5jbGVhcigpOwogI2lmIEVOQUJMRShM
QVlPVVRfRk9STUFUVElOR19DT05URVhUKQogICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVz
OjpzaGFyZWRGZWF0dXJlcygpLmxheW91dEZvcm1hdHRpbmdDb250ZXh0SW50ZWdyYXRpb25FbmFi
bGVkKCkpCiAgICAgICAgIEdseXBoRGlzcGxheUxpc3RDYWNoZTxMYXlvdXRJbnRlZ3JhdGlvbjo6
UnVuPjo6c2luZ2xldG9uKCkuY2xlYXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZVRleHQuY3BwCmluZGV4IGZkZmI5NThlNzU4NC4uOTdm
NTViMTJmY2ExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR0lubGluZVRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHSW5saW5lVGV4dC5jcHAKQEAgLTExMiw3ICsxMTIsNyBAQCB2b2lkIFJlbmRlclNWR0lu
bGluZVRleHQ6OnN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSBkaWZmLCBjb25zdCBSZW5k
ZXJTdHlsZQogICAgICAgICB0ZXh0QW5jZXN0b3ItPnN1YnRyZWVTdHlsZURpZENoYW5nZSh0aGlz
KTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPElubGluZVRleHRCb3g+IFJlbmRlclNWR0lubGluZVRl
eHQ6OmNyZWF0ZVRleHRCb3goKQorc3RkOjp1bmlxdWVfcHRyPExlZ2FjeUlubGluZVRleHRCb3g+
IFJlbmRlclNWR0lubGluZVRleHQ6OmNyZWF0ZVRleHRCb3goKQogewogICAgIGF1dG8gYm94ID0g
bWFrZVVuaXF1ZTxTVkdJbmxpbmVUZXh0Qm94PigqdGhpcyk7CiAgICAgYm94LT5zZXRIYXNWaXJ0
dWFsTG9naWNhbEhlaWdodCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdJbmxpbmVUZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR0lubGluZVRleHQuaAppbmRleCAyOGU5NWEwYmI0YmQuLmUwM2I3NDdiMDc5ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmVU
ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmVU
ZXh0LmgKQEAgLTYzLDcgKzYzLDcgQEAgcHJpdmF0ZToKIAogICAgIFZpc2libGVQb3NpdGlvbiBw
b3NpdGlvbkZvclBvaW50KGNvbnN0IExheW91dFBvaW50JiwgY29uc3QgUmVuZGVyRnJhZ21lbnRD
b250YWluZXIqKSBvdmVycmlkZTsKICAgICBJbnRSZWN0IGxpbmVzQm91bmRpbmdCb3goKSBjb25z
dCBvdmVycmlkZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5saW5lVGV4dEJveD4gY3JlYXRlVGV4
dEJveCgpIG92ZXJyaWRlOworICAgIHN0ZDo6dW5pcXVlX3B0cjxMZWdhY3lJbmxpbmVUZXh0Qm94
PiBjcmVhdGVUZXh0Qm94KCkgb3ZlcnJpZGU7CiAKICAgICBmbG9hdCBtX3NjYWxpbmdGYWN0b3I7
CiAgICAgRm9udENhc2NhZGUgbV9zY2FsZWRGb250OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9TVkdJbmxpbmVUZXh0Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvU1ZHSW5saW5lVGV4dEJveC5jcHAKaW5kZXggM2Q1MGIwOTM2MWVkLi5lNTY5
OTFmNzBkMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHSW5s
aW5lVGV4dEJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdJbmxp
bmVUZXh0Qm94LmNwcApAQCAtNDIsNyArNDIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdU
Rl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChTVkdJbmxpbmVUZXh0Qm94KTsKIAotc3RydWN0IEV4
cGVjdGVkU1ZHSW5saW5lVGV4dEJveFNpemUgOiBwdWJsaWMgSW5saW5lVGV4dEJveCB7CitzdHJ1
Y3QgRXhwZWN0ZWRTVkdJbmxpbmVUZXh0Qm94U2l6ZSA6IHB1YmxpYyBMZWdhY3lJbmxpbmVUZXh0
Qm94IHsKICAgICBmbG9hdCBmbG9hdDE7CiAgICAgdWludDMyX3QgYml0ZmllbGRzIDogNTsKICAg
ICB2b2lkKiBwb2ludGVyOwpAQCAtNTIsNyArNTIsNyBAQCBzdHJ1Y3QgRXhwZWN0ZWRTVkdJbmxp
bmVUZXh0Qm94U2l6ZSA6IHB1YmxpYyBJbmxpbmVUZXh0Qm94IHsKIENPTVBJTEVfQVNTRVJUKHNp
emVvZihTVkdJbmxpbmVUZXh0Qm94KSA9PSBzaXplb2YoRXhwZWN0ZWRTVkdJbmxpbmVUZXh0Qm94
U2l6ZSksIFNWR0lubGluZVRleHRCb3hfaXNfbm90X29mX2V4cGVjdGVkX3NpemUpOwogCiBTVkdJ
bmxpbmVUZXh0Qm94OjpTVkdJbmxpbmVUZXh0Qm94KFJlbmRlclNWR0lubGluZVRleHQmIHJlbmRl
cmVyKQotICAgIDogSW5saW5lVGV4dEJveChyZW5kZXJlcikKKyAgICA6IExlZ2FjeUlubGluZVRl
eHRCb3gocmVuZGVyZXIpCiAgICAgLCBtX3BhaW50aW5nUmVzb3VyY2VNb2RlKE9wdGlvblNldDxS
ZW5kZXJTVkdSZXNvdXJjZU1vZGU+KCkudG9SYXcoKSkKICAgICAsIG1fc3RhcnRzTmV3VGV4dENo
dW5rKGZhbHNlKQogewpAQCAtNjAsNyArNjAsNyBAQCBTVkdJbmxpbmVUZXh0Qm94OjpTVkdJbmxp
bmVUZXh0Qm94KFJlbmRlclNWR0lubGluZVRleHQmIHJlbmRlcmVyKQogCiB2b2lkIFNWR0lubGlu
ZVRleHRCb3g6OmRpcnR5T3duTGluZUJveGVzKCkKIHsKLSAgICBJbmxpbmVUZXh0Qm94OjpkaXJ0
eUxpbmVCb3hlcygpOworICAgIExlZ2FjeUlubGluZVRleHRCb3g6OmRpcnR5TGluZUJveGVzKCk7
CiAKICAgICAvLyBDbGVhciB0aGUgbm93IHN0YWxlIHRleHQgZnJhZ21lbnRzCiAgICAgY2xlYXJU
ZXh0RnJhZ21lbnRzKCk7CkBAIC03Miw3ICs3Miw3IEBAIHZvaWQgU1ZHSW5saW5lVGV4dEJveDo6
ZGlydHlMaW5lQm94ZXMoKQogCiAgICAgLy8gQW5kIGNsZWFyIGFueSBmb2xsb3dpbmcgdGV4dCBm
cmFnbWVudHMgYXMgdGhlIHRleHQgb24gd2hpY2ggdGhleQogICAgIC8vIGRlcGVuZCBtYXkgbm93
IG5vIGxvbmdlciBleGlzdCwgb3IgZ2x5cGggcG9zaXRpb25zIG1heSBiZSB3cm9uZwotICAgIGZv
ciAoSW5saW5lVGV4dEJveCogbmV4dEJveCA9IG5leHRUZXh0Qm94KCk7IG5leHRCb3g7IG5leHRC
b3ggPSBuZXh0Qm94LT5uZXh0VGV4dEJveCgpKQorICAgIGZvciAoYXV0byogbmV4dEJveCA9IG5l
eHRUZXh0Qm94KCk7IG5leHRCb3g7IG5leHRCb3ggPSBuZXh0Qm94LT5uZXh0VGV4dEJveCgpKQog
ICAgICAgICBuZXh0Qm94LT5kaXJ0eU93bkxpbmVCb3hlcygpOwogfQogCkBAIC04Niw3ICs4Niw3
IEBAIGludCBTVkdJbmxpbmVUZXh0Qm94OjpvZmZzZXRGb3JQb3NpdGlvbihmbG9hdCwgYm9vbCkg
Y29uc3QKIAogaW50IFNWR0lubGluZVRleHRCb3g6Om9mZnNldEZvclBvc2l0aW9uSW5GcmFnbWVu
dChjb25zdCBTVkdUZXh0RnJhZ21lbnQmIGZyYWdtZW50LCBmbG9hdCBwb3NpdGlvbiwgYm9vbCBp
bmNsdWRlUGFydGlhbEdseXBocykgY29uc3QKIHsKLSAgIGZsb2F0IHNjYWxpbmdGYWN0b3IgPSBy
ZW5kZXJlcigpLnNjYWxpbmdGYWN0b3IoKTsKKyAgICBmbG9hdCBzY2FsaW5nRmFjdG9yID0gcmVu
ZGVyZXIoKS5zY2FsaW5nRmFjdG9yKCk7CiAgICAgQVNTRVJUKHNjYWxpbmdGYWN0b3IpOwogCiAg
ICAgVGV4dFJ1biB0ZXh0UnVuID0gY29uc3RydWN0VGV4dFJ1bihyZW5kZXJlcigpLnN0eWxlKCks
IGZyYWdtZW50KTsKQEAgLTI0MCw3ICsyNDAsNyBAQCB2b2lkIFNWR0lubGluZVRleHRCb3g6OnBh
aW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZQog
ICAgIGlmIChyZW5kZXJlcigpLnN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZpc2liaWxpdHk6OlZp
c2libGUpCiAgICAgICAgIHJldHVybjsKIAotICAgIC8vIE5vdGU6IFdlJ3JlIGV4cGxpY2l0bHkg
bm90IHN1cHBvcnRpbmcgY29tcG9zaXRpb24gJiBjdXN0b20gdW5kZXJsaW5lcyBhbmQgY3VzdG9t
IGhpZ2hsaWdodGVycyAtIHVubGlrZSBJbmxpbmVUZXh0Qm94LgorICAgIC8vIE5vdGU6IFdlJ3Jl
IGV4cGxpY2l0bHkgbm90IHN1cHBvcnRpbmcgY29tcG9zaXRpb24gJiBjdXN0b20gdW5kZXJsaW5l
cyBhbmQgY3VzdG9tIGhpZ2hsaWdodGVycyAtIHVubGlrZSBMZWdhY3lJbmxpbmVUZXh0Qm94Lgog
ICAgIC8vIElmIHdlIGV2ZXIgbmVlZCB0aGF0IGZvciBTVkcsIGl0J3MgdmVyeSBlYXN5IHRvIHJl
ZmFjdG9yIGFuZCByZXVzZSB0aGUgY29kZS4KIAogICAgIGF1dG8mIHBhcmVudFJlbmRlcmVyID0g
cGFyZW50KCktPnJlbmRlcmVyKCk7CkBAIC02MzgsNyArNjM4LDcgQEAgRmxvYXRSZWN0IFNWR0lu
bGluZVRleHRCb3g6OmNhbGN1bGF0ZUJvdW5kYXJpZXMoKSBjb25zdAogCiBib29sIFNWR0lubGlu
ZVRleHRCb3g6Om5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBIaXRU
ZXN0UmVzdWx0JiByZXN1bHQsIGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYgbG9jYXRpb25JbkNvbnRh
aW5lciwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0LCBMYXlvdXRVbml0LCBM
YXlvdXRVbml0LCBIaXRUZXN0QWN0aW9uKQogewotICAgIC8vIEZJWE1FOiBpbnRlZ3JhdGUgd2l0
aCBJbmxpbmVUZXh0Qm94Ojpub2RlQXRQb2ludCBiZXR0ZXIuCisgICAgLy8gRklYTUU6IGludGVn
cmF0ZSB3aXRoIExlZ2FjeUlubGluZVRleHRCb3g6Om5vZGVBdFBvaW50IGJldHRlci4KICAgICBB
U1NFUlQoIWlzTGluZUJyZWFrKCkpOwogCiAgICAgUG9pbnRlckV2ZW50c0hpdFJ1bGVzIGhpdFJ1
bGVzKFBvaW50ZXJFdmVudHNIaXRSdWxlczo6U1ZHX1RFWFRfSElUVEVTVElORywgcmVxdWVzdCwg
cmVuZGVyZXIoKS5zdHlsZSgpLnBvaW50ZXJFdmVudHMoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRleHRCb3guaCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvU1ZHSW5saW5lVGV4dEJveC5oCmluZGV4IGRjZWYzZTJmZTg5Yi4uNjli
ZDI1NjNiM2VmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR0lu
bGluZVRleHRCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR0lubGlu
ZVRleHRCb3guaApAQCAtMjEsNyArMjEsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUg
IklubGluZVRleHRCb3guaCIKKyNpbmNsdWRlICJMZWdhY3lJbmxpbmVUZXh0Qm94LmgiCiAjaW5j
bHVkZSAiUmVuZGVyU1ZHSW5saW5lVGV4dC5oIgogI2luY2x1ZGUgIlJlbmRlclNWR1Jlc291cmNl
LmgiCiAjaW5jbHVkZSAiU1ZHVGV4dEZyYWdtZW50LmgiCkBAIC0zMSwxMiArMzEsMTIgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUmVuZGVyU1ZHUmVzb3VyY2U7CiBjbGFzcyBTVkdSb290
SW5saW5lQm94OwogCi1jbGFzcyBTVkdJbmxpbmVUZXh0Qm94IGZpbmFsIDogcHVibGljIElubGlu
ZVRleHRCb3ggeworY2xhc3MgU1ZHSW5saW5lVGV4dEJveCBmaW5hbCA6IHB1YmxpYyBMZWdhY3lJ
bmxpbmVUZXh0Qm94IHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKFNWR0lubGluZVRleHRC
b3gpOwogcHVibGljOgogICAgIGV4cGxpY2l0IFNWR0lubGluZVRleHRCb3goUmVuZGVyU1ZHSW5s
aW5lVGV4dCYpOwogCi0gICAgUmVuZGVyU1ZHSW5saW5lVGV4dCYgcmVuZGVyZXIoKSBjb25zdCB7
IHJldHVybiBkb3duY2FzdDxSZW5kZXJTVkdJbmxpbmVUZXh0PihJbmxpbmVUZXh0Qm94OjpyZW5k
ZXJlcigpKTsgfQorICAgIFJlbmRlclNWR0lubGluZVRleHQmIHJlbmRlcmVyKCkgY29uc3QgeyBy
ZXR1cm4gZG93bmNhc3Q8UmVuZGVyU1ZHSW5saW5lVGV4dD4oTGVnYWN5SW5saW5lVGV4dEJveDo6
cmVuZGVyZXIoKSk7IH0KIAogICAgIGZsb2F0IHZpcnR1YWxMb2dpY2FsSGVpZ2h0KCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gbV9sb2dpY2FsSGVpZ2h0OyB9CiAgICAgdm9pZCBzZXRMb2dpY2Fs
SGVpZ2h0KGZsb2F0IGhlaWdodCkgeyBtX2xvZ2ljYWxIZWlnaHQgPSBoZWlnaHQ7IH0KQEAgLTcw
LDcgKzcwLDcgQEAgcHVibGljOgogICAgIE9wdGlvblNldDxSZW5kZXJTVkdSZXNvdXJjZU1vZGU+
IHBhaW50aW5nUmVzb3VyY2VNb2RlKCkgY29uc3QgeyByZXR1cm4gT3B0aW9uU2V0PFJlbmRlclNW
R1Jlc291cmNlTW9kZT46OmZyb21SYXcobV9wYWludGluZ1Jlc291cmNlTW9kZSk7IH0KICAgICB2
b2lkIHNldFBhaW50aW5nUmVzb3VyY2VNb2RlKE9wdGlvblNldDxSZW5kZXJTVkdSZXNvdXJjZU1v
ZGU+IG1vZGUpIHsgbV9wYWludGluZ1Jlc291cmNlTW9kZSA9IG1vZGUudG9SYXcoKTsgfQogCi0g
ICAgU1ZHSW5saW5lVGV4dEJveCogbmV4dFRleHRCb3goKSBjb25zdCB7IHJldHVybiBkb3duY2Fz
dDxTVkdJbmxpbmVUZXh0Qm94PihJbmxpbmVUZXh0Qm94OjpuZXh0VGV4dEJveCgpKTsgfQorICAg
IFNWR0lubGluZVRleHRCb3gqIG5leHRUZXh0Qm94KCkgY29uc3QgeyByZXR1cm4gZG93bmNhc3Q8
U1ZHSW5saW5lVGV4dEJveD4oTGVnYWN5SW5saW5lVGV4dEJveDo6bmV4dFRleHRCb3goKSk7IH0K
ICAgICAKIHByaXZhdGU6CiAgICAgYm9vbCBpc1NWR0lubGluZVRleHRCb3goKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiB0cnVlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1NWR1JlbmRlclRyZWVBc1RleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9TVkdSZW5kZXJUcmVlQXNUZXh0LmNwcAppbmRleCA4ZjRmZTA1OGUzYzIuLjMxZWVjZDgw
NmJmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJU
cmVlQXNUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRl
clRyZWVBc1RleHQuY3BwCkBAIC0zNjIsNyArMzYyLDcgQEAgc3RhdGljIGlubGluZSB2b2lkIHdy
aXRlU1ZHSW5saW5lVGV4dEJveChUZXh0U3RyZWFtJiB0cywgU1ZHSW5saW5lVGV4dEJveCogdGV4
dEIKIAogc3RhdGljIGlubGluZSB2b2lkIHdyaXRlU1ZHSW5saW5lVGV4dEJveGVzKFRleHRTdHJl
YW0mIHRzLCBjb25zdCBSZW5kZXJUZXh0JiB0ZXh0KQogewotICAgIGZvciAoSW5saW5lVGV4dEJv
eCogYm94ID0gdGV4dC5maXJzdFRleHRCb3goKTsgYm94OyBib3ggPSBib3gtPm5leHRUZXh0Qm94
KCkpIHsKKyAgICBmb3IgKGF1dG8qIGJveCA9IHRleHQuZmlyc3RUZXh0Qm94KCk7IGJveDsgYm94
ID0gYm94LT5uZXh0VGV4dEJveCgpKSB7CiAgICAgICAgIGlmICghaXM8U1ZHSW5saW5lVGV4dEJv
eD4oKmJveCkpCiAgICAgICAgICAgICBjb250aW51ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3R5bGUvSW5saW5lVGV4dEJveFN0eWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxl
L0lubGluZVRleHRCb3hTdHlsZS5jcHAKaW5kZXggZWY0OWIzY2U0YmRjLi45OGQ0OGI1YzkxMGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL0lubGluZVRleHRCb3hTdHlsZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvSW5saW5lVGV4dEJveFN0eWxlLmNwcApAQCAtMjcs
MTMgKzI3LDEzIEBACiAjaW5jbHVkZSAiSW5saW5lVGV4dEJveFN0eWxlLmgiCiAKICNpbmNsdWRl
ICJGb250Q2FzY2FkZS5oIgotI2luY2x1ZGUgIklubGluZVRleHRCb3guaCIKKyNpbmNsdWRlICJM
ZWdhY3lJbmxpbmVUZXh0Qm94LmgiCiAjaW5jbHVkZSAiTGVnYWN5Um9vdElubGluZUJveC5oIgog
I2luY2x1ZGUgIlRleHRVbmRlcmxpbmVPZmZzZXQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgIAotZmxvYXQgY29tcHV0ZVVuZGVybGluZU9mZnNldChUZXh0VW5kZXJsaW5lUG9zaXRpb24g
dW5kZXJsaW5lUG9zaXRpb24sIFRleHRVbmRlcmxpbmVPZmZzZXQgdW5kZXJsaW5lT2Zmc2V0LCBj
b25zdCBGb250TWV0cmljcyYgZm9udE1ldHJpY3MsIGNvbnN0IElubGluZVRleHRCb3gqIGlubGlu
ZVRleHRCb3gsIGZsb2F0IGRlZmF1bHRHYXApCitmbG9hdCBjb21wdXRlVW5kZXJsaW5lT2Zmc2V0
KFRleHRVbmRlcmxpbmVQb3NpdGlvbiB1bmRlcmxpbmVQb3NpdGlvbiwgVGV4dFVuZGVybGluZU9m
ZnNldCB1bmRlcmxpbmVPZmZzZXQsIGNvbnN0IEZvbnRNZXRyaWNzJiBmb250TWV0cmljcywgY29u
c3QgTGVnYWN5SW5saW5lVGV4dEJveCogaW5saW5lVGV4dEJveCwgZmxvYXQgZGVmYXVsdEdhcCkK
IHsKICAgICAvLyBUaGlzIHJlcHJlc2VudHMgdGhlIGdhcCBiZXR3ZWVuIHRoZSBiYXNlbGluZSBh
bmQgdGhlIGNsb3Nlc3QgZWRnZSBvZiB0aGUgdW5kZXJsaW5lLgogICAgIGZsb2F0IGdhcCA9IHN0
ZDo6bWF4PGludD4oMSwgc3RkOjpjZWlsKGRlZmF1bHRHYXAgLyAyLjBmKSk7CkBAIC0xMDIsNyAr
MTAyLDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGV4dGVuZEludFRvRmxvYXQoaW50JiBleHRlbmRN
ZSwgZmxvYXQgZXh0ZW5kVG8pCiAgICAgZXh0ZW5kTWUgPSBzdGQ6Om1heChleHRlbmRNZSwgc3Rh
dGljX2Nhc3Q8aW50PihjZWlsZihleHRlbmRUbykpKTsKIH0KIAotR2x5cGhPdmVyZmxvdyB2aXN1
YWxPdmVyZmxvd0ZvckRlY29yYXRpb25zKGNvbnN0IFJlbmRlclN0eWxlJiBsaW5lU3R5bGUsIGNv
bnN0IElubGluZVRleHRCb3gqIGlubGluZVRleHRCb3gpCitHbHlwaE92ZXJmbG93IHZpc3VhbE92
ZXJmbG93Rm9yRGVjb3JhdGlvbnMoY29uc3QgUmVuZGVyU3R5bGUmIGxpbmVTdHlsZSwgY29uc3Qg
TGVnYWN5SW5saW5lVGV4dEJveCogaW5saW5lVGV4dEJveCkKIHsKICAgICBBU1NFUlQoIWlubGlu
ZVRleHRCb3ggfHwgaW5saW5lVGV4dEJveC0+bGluZVN0eWxlKCkgPT0gbGluZVN0eWxlKTsKICAg
ICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL0lubGluZVRleHRCb3hTdHlsZS5o
IGIvU291cmNlL1dlYkNvcmUvc3R5bGUvSW5saW5lVGV4dEJveFN0eWxlLmgKaW5kZXggMGQ4M2Jh
ZjRkMzBkLi5hOWIwNDRjZDJhZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL0lu
bGluZVRleHRCb3hTdHlsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL0lubGluZVRleHRC
b3hTdHlsZS5oCkBAIC0zMCw3ICszMCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAK
LWNsYXNzIElubGluZVRleHRCb3g7CitjbGFzcyBMZWdhY3lJbmxpbmVUZXh0Qm94OwogY2xhc3Mg
UmVuZGVyU3R5bGU7CiBjbGFzcyBUZXh0VW5kZXJsaW5lT2Zmc2V0OwogCkBAIC01MSw3ICs1MSw3
IEBAIHN0cnVjdCBXYXZ5U3Ryb2tlUGFyYW1ldGVycyB7CiAgICAgZmxvYXQgc3RlcCB7IDAgfTsK
IH07CiBXYXZ5U3Ryb2tlUGFyYW1ldGVycyBnZXRXYXZ5U3Ryb2tlUGFyYW1ldGVycyhmbG9hdCBm
b250U2l6ZSk7Ci1HbHlwaE92ZXJmbG93IHZpc3VhbE92ZXJmbG93Rm9yRGVjb3JhdGlvbnMoY29u
c3QgUmVuZGVyU3R5bGUmIGxpbmVTdHlsZSwgY29uc3QgSW5saW5lVGV4dEJveCopOwotZmxvYXQg
Y29tcHV0ZVVuZGVybGluZU9mZnNldChUZXh0VW5kZXJsaW5lUG9zaXRpb24sIFRleHRVbmRlcmxp
bmVPZmZzZXQsIGNvbnN0IEZvbnRNZXRyaWNzJiwgY29uc3QgSW5saW5lVGV4dEJveCosIGZsb2F0
IHRleHREZWNvcmF0aW9uVGhpY2tuZXNzKTsKK0dseXBoT3ZlcmZsb3cgdmlzdWFsT3ZlcmZsb3dG
b3JEZWNvcmF0aW9ucyhjb25zdCBSZW5kZXJTdHlsZSYgbGluZVN0eWxlLCBjb25zdCBMZWdhY3lJ
bmxpbmVUZXh0Qm94Kik7CitmbG9hdCBjb21wdXRlVW5kZXJsaW5lT2Zmc2V0KFRleHRVbmRlcmxp
bmVQb3NpdGlvbiwgVGV4dFVuZGVybGluZU9mZnNldCwgY29uc3QgRm9udE1ldHJpY3MmLCBjb25z
dCBMZWdhY3lJbmxpbmVUZXh0Qm94KiwgZmxvYXQgdGV4dERlY29yYXRpb25UaGlja25lc3MpOwog
ICAgIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQo=
</data>
<flag name="commit-queue"
          id="452044"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430566</attachid>
            <date>2021-06-04 03:46:33 -0700</date>
            <delta_ts>2021-06-05 00:50:16 -0700</delta_ts>
            <desc>patch</desc>
            <filename>legacy-inline-text-box-rename-2.patch</filename>
            <type>text/plain</type>
            <size>119527</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAxMjRkZWYxNDMxY2UuLmFkZWM2YmVkOTNhZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDIwNiBAQAorMjAyMS0wNi0wNCAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5j
b20+CisKKyAgICAgICAgUmVuYW1lIElubGluZVRleHRCb3ggdG8gTGVnYWN5SW5saW5lVGV4dEJv
eAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2NjMz
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTW9yZSBs
ZWdhY3kgbGluZSBsYXlvdXQgbmFtaW5nLgorCisgICAgICAgICogSGVhZGVycy5jbWFrZToKKyAg
ICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisgICAgICAgICogZG9tL0NvbnRhaW5lck5vZGUuY3BwOgorICAgICAgICAqIGRv
bS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnRNYXJrZXJDb250cm9sbGVyOjphZGRNYXJrZXIpOgorICAgICAgICAqIGRvbS9Qb3NpdGlvbi5j
cHA6CisgICAgICAgICogZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHA6CisgICAgICAg
ICogZWRpdGluZy9FZGl0b3IuaDoKKyAgICAgICAgKiBlZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjpkZWJ1Z1JlbmRlcmVyIGNvbnN0
KToKKyAgICAgICAgKiBlZGl0aW5nL1JlbmRlcmVkUG9zaXRpb24uY3BwOgorICAgICAgICAqIGVk
aXRpbmcvVGV4dEl0ZXJhdG9yLmNwcDoKKyAgICAgICAgKiBlZGl0aW5nL1Zpc2libGVQb3NpdGlv
bi5jcHA6CisgICAgICAgICogbGF5b3V0L1ZlcmlmaWNhdGlvbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpMYXlvdXQ6OmNoZWNrRm9yTWF0Y2hpbmdUZXh0UnVucyk6CisgICAgICAgIChXZWJDb3Jl
OjpMYXlvdXQ6Om91dHB1dE1pc21hdGNoaW5nQ29tcGxleExpbmVJbmZvcm1hdGlvbklmTmVlZGVk
KToKKyAgICAgICAgKiBsYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS90ZXh0L1RleHRV
dGlsLmg6CisgICAgICAgICogbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uUnVu
SXRlcmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OmZpcnN0
VGV4dFJ1bkluVGV4dE9yZGVyRm9yKToKKyAgICAgICAgKiBsYXlvdXQvaW50ZWdyYXRpb24vTGF5
b3V0SW50ZWdyYXRpb25SdW5JdGVyYXRvci5oOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50
ZWdyYXRpb246OlBhdGhUZXh0UnVuOjpsZWdhY3lJbmxpbmVCb3ggY29uc3QpOgorICAgICAgICAq
IGxheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvblJ1bkl0ZXJhdG9yTGVnYWN5UGF0
aC5oOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OlJ1bkl0ZXJhdG9yTGVn
YWN5UGF0aDo6dHJhdmVyc2VOZXh0VGV4dFJ1bkluVGV4dE9yZGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkxheW91dEludGVncmF0aW9uOjpSdW5JdGVyYXRvckxlZ2FjeVBhdGg6OmlubGluZVRleHRC
b3ggY29uc3QpOgorICAgICAgICAqIGxheW91dC9sYXlvdXR0cmVlL0xheW91dEJveC5oOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCb3g6OmlzSW5saW5lVGV4dEJveCBjb25zdCk6CisgICAg
ICAgICogbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0SW5saW5lVGV4dEJveC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpMYXlvdXQ6OklubGluZVRleHRCb3g6OklubGluZVRleHRCb3gpOgorICAgICAg
ICAqIHJlbmRlcmluZy9DYXJldFJlY3RDb21wdXRhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
Ojpjb21wdXRlQ2FyZXRSZWN0Rm9yU1ZHSW5saW5lVGV4dCk6CisgICAgICAgICogcmVuZGVyaW5n
L0VsbGlwc2lzQm94LmNwcDoKKyAgICAgICAgKiByZW5kZXJpbmcvTGVnYWN5SW5saW5lQm94Lmg6
CisgICAgICAgICogcmVuZGVyaW5nL0xlZ2FjeUlubGluZUZsb3dCb3guY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TGVnYWN5SW5saW5lRmxvd0JveDo6YWRkVG9MaW5lKToKKyAgICAgICAgKFdlYkNv
cmU6OkxlZ2FjeUlubGluZUZsb3dCb3g6OnBsYWNlQm94UmFuZ2VJbklubGluZURpcmVjdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lJbmxpbmVGbG93Qm94OjpyZXF1aXJlc0lkZW9ncmFw
aGljQmFzZWxpbmUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5SW5saW5lRmxvd0Jv
eDo6cGxhY2VCb3hlc0luQmxvY2tEaXJlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5
SW5saW5lRmxvd0JveDo6YWRkVGV4dEJveFZpc3VhbE92ZXJmbG93KToKKyAgICAgICAgKFdlYkNv
cmU6OkxlZ2FjeUlubGluZUZsb3dCb3g6OmNvbXB1dGVPdmVyZmxvdyk6CisgICAgICAgIChXZWJD
b3JlOjpMZWdhY3lJbmxpbmVGbG93Qm94Ojpjb21wdXRlT3ZlckFubm90YXRpb25BZGp1c3RtZW50
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUlubGluZUZsb3dCb3g6OmNvbXB1dGVV
bmRlckFubm90YXRpb25BZGp1c3RtZW50IGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvTGVn
YWN5SW5saW5lRmxvd0JveC5oOgorICAgICAgICAqIHJlbmRlcmluZy9MZWdhY3lJbmxpbmVUZXh0
Qm94LmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0
Qm94LmNwcC4KKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUlubGluZVRleHRCb3g6On5MZWdhY3lJ
bmxpbmVUZXh0Qm94KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUlubGluZVRleHRCb3g6Omhh
c1RleHRDb250ZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUlubGluZVRleHRC
b3g6Om1hcmtEaXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lJbmxpbmVUZXh0Qm94Ojps
b2dpY2FsT3ZlcmZsb3dSZWN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUlubGlu
ZVRleHRCb3g6OnNldExvZ2ljYWxPdmVyZmxvd1JlY3QpOgorICAgICAgICAoV2ViQ29yZTo6TGVn
YWN5SW5saW5lVGV4dEJveDo6YmFzZWxpbmVQb3NpdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpMZWdhY3lJbmxpbmVUZXh0Qm94OjpsaW5lSGVpZ2h0IGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkxlZ2FjeUlubGluZVRleHRCb3g6OnNlbGVjdGlvblRvcCBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpMZWdhY3lJbmxpbmVUZXh0Qm94OjpzZWxlY3Rpb25Cb3R0b20gY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6TGVnYWN5SW5saW5lVGV4dEJveDo6c2VsZWN0aW9uSGVpZ2h0IGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUlubGluZVRleHRCb3g6OmlzU2VsZWN0ZWQg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5SW5saW5lVGV4dEJveDo6c2VsZWN0aW9u
U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5SW5saW5lVGV4dEJveDo6dmVyaWZ5U2Vs
ZWN0aW9uU3RhdGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5SW5saW5lVGV4dEJv
eDo6bGluZUZvbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6c25hcHBlZFNlbGVjdGlvblJl
Y3QpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5SW5saW5lVGV4dEJveDo6bG9jYWxTZWxlY3Rp
b25SZWN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUlubGluZVRleHRCb3g6OmRl
bGV0ZUxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5SW5saW5lVGV4dEJveDo6ZXh0cmFj
dExpbmUpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5SW5saW5lVGV4dEJveDo6YXR0YWNoTGlu
ZSk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lJbmxpbmVUZXh0Qm94OjpwbGFjZUVsbGlwc2lz
Qm94KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUlubGluZVRleHRCb3g6OmlzTGluZUJyZWFr
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUlubGluZVRleHRCb3g6Om5vZGVBdFBv
aW50KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUlubGluZVRleHRCb3g6OmVtcGhhc2lzTWFy
a0V4aXN0c0FuZElzQWJvdmUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlTWFya2Vk
VGV4dEZyb21TZWxlY3Rpb25JbkJveCk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lJbmxpbmVU
ZXh0Qm94OjpwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lJbmxpbmVUZXh0Qm94Ojpj
bGFtcGVkT2Zmc2V0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUlubGluZVRleHRC
b3g6OmNsYW1wZWRTdGFydEVuZEZvclN0YXRlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Okxl
Z2FjeUlubGluZVRleHRCb3g6OnNlbGVjdGlvblN0YXJ0RW5kIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkxlZ2FjeUlubGluZVRleHRCb3g6OmhpZ2hsaWdodFN0YXJ0RW5kIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkxlZ2FjeUlubGluZVRleHRCb3g6Omhhc01hcmtlcnMgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6TGVnYWN5SW5saW5lVGV4dEJveDo6cGFpbnRQbGF0Zm9ybURvY3Vt
ZW50TWFya2Vycyk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lJbmxpbmVUZXh0Qm94OjpjYWxj
dWxhdGVVbmlvbk9mQWxsRG9jdW1lbnRNYXJrZXJCb3VuZHMgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6TGVnYWN5SW5saW5lVGV4dEJveDo6Y2FsY3VsYXRlRG9jdW1lbnRNYXJrZXJCb3VuZHMg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5SW5saW5lVGV4dEJveDo6cGFpbnRQbGF0
Zm9ybURvY3VtZW50TWFya2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUlubGluZVRleHRC
b3g6OmNvbGxlY3RNYXJrZWRUZXh0c0ZvckRyYWdnZWRDb250ZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OkxlZ2FjeUlubGluZVRleHRCb3g6OmNvbGxlY3RNYXJrZWRUZXh0c0ZvckRvY3VtZW50TWFy
a2VycyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lJbmxpbmVUZXh0Qm94Ojpjb2xs
ZWN0TWFya2VkVGV4dHNGb3JIaWdobGlnaHRzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Okxl
Z2FjeUlubGluZVRleHRCb3g6OnRleHRPcmlnaW5Gcm9tQm94UmVjdCBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpMZWdhY3lJbmxpbmVUZXh0Qm94OjpwYWludE1hcmtlZFRleHRzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkxlZ2FjeUlubGluZVRleHRCb3g6OnBhaW50TWFya2VkVGV4dEJhY2tncm91
bmQpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5SW5saW5lVGV4dEJveDo6cGFpbnRNYXJrZWRU
ZXh0Rm9yZWdyb3VuZCk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lJbmxpbmVUZXh0Qm94Ojpw
YWludE1hcmtlZFRleHREZWNvcmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUlubGlu
ZVRleHRCb3g6OnBhaW50Q29tcG9zaXRpb25CYWNrZ3JvdW5kKToKKyAgICAgICAgKFdlYkNvcmU6
OkxlZ2FjeUlubGluZVRleHRCb3g6OnBhaW50Q29tcG9zaXRpb25VbmRlcmxpbmVzIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6Om1pcnJvclJUTFNlZ21lbnQpOgorICAgICAgICAoV2ViQ29yZTo6
TGVnYWN5SW5saW5lVGV4dEJveDo6cGFpbnRDb21wb3NpdGlvblVuZGVybGluZSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpMZWdhY3lJbmxpbmVUZXh0Qm94OjpjYXJldE1pbk9mZnNldCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lJbmxpbmVUZXh0Qm94OjpjYXJldE1heE9mZnNl
dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lJbmxpbmVUZXh0Qm94Ojp0ZXh0UG9z
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUlubGluZVRleHRCb3g6Om9mZnNldEZv
clBvc2l0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUlubGluZVRleHRCb3g6
OnBvc2l0aW9uRm9yT2Zmc2V0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUlubGlu
ZVRleHRCb3g6OmNyZWF0ZVRleHRSdW4gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5
SW5saW5lVGV4dEJveDo6dGV4dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lJbmxp
bmVUZXh0Qm94Ojpjb21iaW5lZFRleHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5
SW5saW5lVGV4dEJveDo6ZGVidWdUZXh0U2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2Fj
eUlubGluZVRleHRCb3g6OmV4cGFuc2lvbkJlaGF2aW9yIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkxlZ2FjeUlubGluZVRleHRCb3g6OmJveE5hbWUgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6TGVnYWN5SW5saW5lVGV4dEJveDo6b3V0cHV0TGluZUJveCBjb25zdCk6CisgICAgICAgICog
cmVuZGVyaW5nL0xlZ2FjeUlubGluZVRleHRCb3guaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmguCisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lJ
bmxpbmVUZXh0Qm94OjpMZWdhY3lJbmxpbmVUZXh0Qm94KToKKyAgICAgICAgKFdlYkNvcmU6Okxl
Z2FjeUlubGluZVRleHRCb3g6OnJlbmRlcmVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Okxl
Z2FjeUlubGluZVRleHRCb3g6OmxpbmVTdHlsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpM
ZWdhY3lJbmxpbmVUZXh0Qm94OjpwcmV2VGV4dEJveCBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpMZWdhY3lJbmxpbmVUZXh0Qm94OjpuZXh0VGV4dEJveCBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpMZWdhY3lJbmxpbmVUZXh0Qm94OjpzZXROZXh0VGV4dEJveCk6CisgICAgICAgIChXZWJD
b3JlOjpMZWdhY3lJbmxpbmVUZXh0Qm94OjpzZXRQcmV2aW91c1RleHRCb3gpOgorICAgICAgICAo
V2ViQ29yZTo6TGVnYWN5SW5saW5lVGV4dEJveDo6c3RhcnQgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6TGVnYWN5SW5saW5lVGV4dEJveDo6ZW5kIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkxlZ2FjeUlubGluZVRleHRCb3g6OmxlbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMZWdh
Y3lJbmxpbmVUZXh0Qm94OjpzZXRTdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lJbmxp
bmVUZXh0Qm94OjpzZXRMZW4pOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5SW5saW5lVGV4dEJv
eDo6b2Zmc2V0UnVuKToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUlubGluZVRleHRCb3g6OnRy
dW5jYXRpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5SW5saW5lVGV4dEJveDo6
Y29tcGFyZUJ5U3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5SW5saW5lVGV4dEJveDo6
bG9naWNhbFRvcFZpc3VhbE92ZXJmbG93IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2Fj
eUlubGluZVRleHRCb3g6OmxvZ2ljYWxCb3R0b21WaXN1YWxPdmVyZmxvdyBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpMZWdhY3lJbmxpbmVUZXh0Qm94Ojpsb2dpY2FsTGVmdFZpc3VhbE92ZXJm
bG93IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUlubGluZVRleHRCb3g6OmxvZ2lj
YWxSaWdodFZpc3VhbE92ZXJmbG93IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUlu
bGluZVRleHRCb3g6OmRpcnR5T3duTGluZUJveGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2Fj
eUlubGluZVRleHRCb3g6OnBhaW50TWFya2VkVGV4dHMpOgorICAgICAgICAqIHJlbmRlcmluZy9M
ZWdhY3lMaW5lTGF5b3V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUxpbmVMYXlvdXQ6
OmNvbnN0cnVjdExpbmUpOgorICAgICAgICAoV2ViQ29yZTo6c2V0TG9naWNhbFdpZHRoRm9yVGV4
dFJ1bik6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lMaW5lTGF5b3V0Ojpjb21wdXRlRXhwYW5z
aW9uRm9ySnVzdGlmaWVkVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpleHBhbnNpb25CZWhhdmlv
ckZvcklubGluZVRleHRCb3gpOgorICAgICAgICAoV2ViQ29yZTo6YXBwbHlFeHBhbnNpb25CZWhh
dmlvcik6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lMaW5lTGF5b3V0Ojpjb21wdXRlSW5saW5l
RGlyZWN0aW9uUG9zaXRpb25zRm9yU2VnbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lM
aW5lTGF5b3V0OjpyZW1vdmVJbmxpbmVCb3ggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGVn
YWN5TGluZUxheW91dDo6Y29tcHV0ZUJsb2NrRGlyZWN0aW9uUG9zaXRpb25zRm9yTGluZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpMZWdhY3lMaW5lTGF5b3V0OjpjcmVhdGVMaW5lQm94ZXNGcm9tQmlk
aVJ1bnMpOgorICAgICAgICAqIHJlbmRlcmluZy9MZWdhY3lSb290SW5saW5lQm94LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkxlZ2FjeVJvb3RJbmxpbmVCb3g6OmlzSHlwaGVuYXRlZCBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lSb290SW5saW5lQm94Ojphc2NlbnRBbmREZXNjZW50
Rm9yQm94IGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyQmxvY2tGbG93OjppbmxpbmVTZWxlY3Rpb25HYXBzKToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94
TW9kZWxPYmplY3Q6OnBhaW50TWFza0ZvclRleHRGaWxsQm94KToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVySW5saW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcklubGluZTo6Z2Vu
ZXJhdGVDdWxsZWRMaW5lQm94UmVjdHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
SW5saW5lOjpjdWxsZWRJbmxpbmVWaXN1YWxPdmVyZmxvd0JvdW5kaW5nQm94IGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlcklubGluZTo6ZGlydHlMaW5lQm94ZXMpOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJMaW5lQm94TGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJMaW5lQm94TGlzdDo6ZGlydHlMaW5lc0Zyb21DaGFuZ2VkQ2hpbGQpOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHQ6OmFi
c29sdXRlUXVhZHNGb3JSYW5nZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0
OjpjcmVhdGVUZXh0Qm94KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHQ6OnBvc2l0aW9u
TGluZUJveCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHQuaDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclRleHQ6OmV4dHJhY3RUZXh0Qm94KToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclRleHQ6OmF0dGFjaFRleHRCb3gpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6
cmVtb3ZlVGV4dEJveCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0OjpjcmVhdGVJbmxp
bmVUZXh0Qm94KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHQ6OmZpcnN0VGV4dEJveCBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0OjpsYXN0VGV4dEJveCBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0OjpmaW5kTmV4dElubGluZVRleHRCb3ggY29u
c3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0TGluZUJveGVzLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclRleHRMaW5lQm94ZXM6OmNyZWF0ZUFuZEFwcGVuZExpbmVCb3gp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dExpbmVCb3hlczo6ZXh0cmFjdCk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0TGluZUJveGVzOjphdHRhY2gpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyVGV4dExpbmVCb3hlczo6cmVtb3ZlKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclRleHRMaW5lQm94ZXM6OmRlbGV0ZUFsbCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJU
ZXh0TGluZUJveGVzOjpmaW5kTmV4dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJU
ZXh0TGluZUJveGVzOjpjaGVja0NvbnNpc3RlbmN5IGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyVGV4dExpbmVCb3hlcy5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dExp
bmVCb3hlczo6Zmlyc3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dExpbmVC
b3hlczo6bGFzdCBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQu
Y3BwOgorICAgICAgICAqIHJlbmRlcmluZy9UZXh0RGVjb3JhdGlvblBhaW50ZXIuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlRleHREZWNvcmF0aW9uUGFpbnRlcjo6c2V0SW5saW5lVGV4dEJveCk6Cisg
ICAgICAgICogcmVuZGVyaW5nL1RleHRQYWludGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRl
eHRQYWludGVyOjpjbGVhckdseXBoRGlzcGxheUxpc3RzKToKKyAgICAgICAgKiByZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR0lubGluZVRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZH
SW5saW5lVGV4dDo6Y3JlYXRlVGV4dEJveCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdJbmxpbmVUZXh0Lmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdJbmxpbmVUZXh0
Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0lubGluZVRleHRCb3g6OlNWR0lubGluZVRl
eHRCb3gpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW5saW5lVGV4dEJveDo6ZGlydHlPd25MaW5l
Qm94ZXMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW5saW5lVGV4dEJveDo6ZGlydHlMaW5lQm94
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW5saW5lVGV4dEJveDo6b2Zmc2V0Rm9yUG9zaXRp
b25JbkZyYWdtZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0lubGluZVRleHRCb3g6
OnBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0lubGluZVRleHRCb3g6Om5vZGVBdFBvaW50
KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRleHRCb3guaDoKKyAgICAgICAg
KiByZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclRyZWVBc1RleHQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6d3JpdGVTVkdJbmxpbmVUZXh0Qm94ZXMpOgorICAgICAgICAqIHN0eWxlL0lubGluZVRleHRC
b3hTdHlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb21wdXRlVW5kZXJsaW5lT2Zmc2V0KToK
KyAgICAgICAgKFdlYkNvcmU6OnZpc3VhbE92ZXJmbG93Rm9yRGVjb3JhdGlvbnMpOgorICAgICAg
ICAqIHN0eWxlL0lubGluZVRleHRCb3hTdHlsZS5oOgorCiAyMDIxLTA1LTI3ICBTZXJnaW8gVmls
bGFyIFNlbmluICA8c3ZpbGxhckBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtjc3MtZmxleGJveF0g
U2FuaXRpemUgdGhlIGFzcGVjdCByYXRpbyBoYW5kbGluZyBjb2RlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQpp
bmRleCA1Y2E1MDg0NWU1YzUuLmFkNTFmOTUzNWU3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC0x
NTI3LDExICsxNTI3LDExIEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMK
ICAgICByZW5kZXJpbmcvSGl0VGVzdFJlcXVlc3QuaAogICAgIHJlbmRlcmluZy9IaXRUZXN0UmVz
dWx0LmgKICAgICByZW5kZXJpbmcvSW5saW5lRWxlbWVudEJveC5oCi0gICAgcmVuZGVyaW5nL0lu
bGluZVRleHRCb3guaAogICAgIHJlbmRlcmluZy9MYXllckFuY2VzdG9yQ2xpcHBpbmdTdGFjay5o
CiAgICAgcmVuZGVyaW5nL0xheWVyRnJhZ21lbnQuaAogICAgIHJlbmRlcmluZy9MZWdhY3lJbmxp
bmVCb3guaAogICAgIHJlbmRlcmluZy9MZWdhY3lJbmxpbmVGbG93Qm94LmgKKyAgICByZW5kZXJp
bmcvTGVnYWN5SW5saW5lVGV4dEJveC5oCiAgICAgcmVuZGVyaW5nL0xlZ2FjeUxpbmVMYXlvdXQu
aAogICAgIHJlbmRlcmluZy9MZWdhY3lSb290SW5saW5lQm94LmgKICAgICByZW5kZXJpbmcvTWFy
a2VkVGV4dC5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJj
ZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDhhMjBjODAyNTdlMy4uZGQ4ZDZlYmExZTAzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Tb3VyY2VzLnR4dApAQCAtMjI1Niw3ICsyMjU2LDYgQEAgcmVuZGVyaW5nL0hpdFRlc3RpbmdU
cmFuc2Zvcm1TdGF0ZS5jcHAKIHJlbmRlcmluZy9JbWFnZVF1YWxpdHlDb250cm9sbGVyLmNwcAog
cmVuZGVyaW5nL0lubGluZUVsZW1lbnRCb3guY3BwCiByZW5kZXJpbmcvSW5saW5lSXRlcmF0b3Iu
Y3BwCi1yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAKIHJlbmRlcmluZy9MYXllckFuY2VzdG9y
Q2xpcHBpbmdTdGFjay5jcHAKIHJlbmRlcmluZy9MYXllck92ZXJsYXBNYXAuY3BwCiByZW5kZXJp
bmcvTGF5b3V0RGlzYWxsb3dlZFNjb3BlLmNwcApAQCAtMjI2NSw2ICsyMjY0LDcgQEAgcmVuZGVy
aW5nL0xlZ2FjeUlubGluZUJveC5jcHAKIHJlbmRlcmluZy9MZWdhY3lJbmxpbmVGbG93Qm94LmNw
cAogcmVuZGVyaW5nL0xlZ2FjeUxpbmVMYXlvdXQuY3BwCiByZW5kZXJpbmcvTGVnYWN5Um9vdElu
bGluZUJveC5jcHAKK3JlbmRlcmluZy9MZWdhY3lJbmxpbmVUZXh0Qm94LmNwcAogcmVuZGVyaW5n
L01hcmtlZFRleHQuY3BwCiByZW5kZXJpbmcvTWFya2VkVGV4dFN0eWxlLmNwcAogcmVuZGVyaW5n
L09yZGVySXRlcmF0b3IuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggNmY4MDAzMWYwNzZhLi4xZmYyYjM3M2ZhZjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagor
KysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAg
LTQxNjYsNyArNDE2Niw3IEBACiAJCUJDRTc4OTg2MTEyMEU3QTYwMDYwRUNFNSAvKiBCaWRpUnVu
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0U3ODk4
NTExMjBFN0E2MDA2MEVDRTUgLyogQmlkaVJ1bi5oICovOyB9OwogCQlCQ0U5M0Y0NTE1MTdDNTY3
MDA4Q0NGNzQgLyogUmVuZGVyRnJhZ21lbnRDb250YWluZXJTZXQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRTkzRjQ0MTUxN0M1NjcwMDhDQ0Y3NCAv
KiBSZW5kZXJGcmFnbWVudENvbnRhaW5lclNldC5oICovOyB9OwogCQlCQ0VBNDc5MDA5N0NBQUM4
MDA5NEM5RTQgLyogQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0VBNDc3RDA5N0NBQUM4MDA5NEM5RTQg
LyogQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJQkNFQTQ4NUEwOTdEOTMwMjAwOTRDOUU0IC8qIElu
bGluZVRleHRCb3guaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEJDRUE0ODFCMDk3RDkzMDIwMDk0QzlFNCAvKiBJbmxpbmVUZXh0Qm94LmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQkNFQTQ4NUEwOTdEOTMw
MjAwOTRDOUU0IC8qIExlZ2FjeUlubGluZVRleHRCb3guaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRUE0ODFCMDk3RDkzMDIwMDk0QzlFNCAvKiBMZWdh
Y3lJbmxpbmVUZXh0Qm94LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJQkNFQTQ4NjAwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlckJsb2NrLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0VBNDgyMTA5N0Q5
MzAyMDA5NEM5RTQgLyogUmVuZGVyQmxvY2suaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlCQ0VBNDg2MjA5N0Q5MzAyMDA5NEM5RTQgLyogUmVuZGVy
Qm94LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0VB
NDgyMzA5N0Q5MzAyMDA5NEM5RTQgLyogUmVuZGVyQm94LmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkNFQTQ4NjQwOTdEOTMwMjAwOTRDOUU0IC8q
IFJlbmRlckxpbmVCcmVhay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQkNFQTQ4MjUwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlckxpbmVCcmVhay5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xNDQ4OCw4
ICsxNDQ4OCw4IEBACiAJCUJDRUE0ODEzMDk3RDkzMDIwMDk0QzlFNCAvKiBMZWdhY3lMaW5lTGF5
b3V0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMZWdhY3lMaW5l
TGF5b3V0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNFQTQ4MTUwOTdEOTMw
MjAwOTRDOUU0IC8qIEJyZWFrTGluZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEJyZWFrTGluZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlC
Q0VBNDgxNjA5N0Q5MzAyMDA5NEM5RTQgLyogQnJlYWtMaW5lcy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQnJlYWtMaW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQlCQ0VBNDgxQTA5N0Q5MzAyMDA5NEM5RTQgLyogSW5saW5lVGV4dEJveC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5saW5lVGV4dEJveC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUJDRUE0ODFCMDk3RDkzMDIwMDk0QzlFNCAvKiBJbmxp
bmVUZXh0Qm94LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
MzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbmxpbmVUZXh0
Qm94Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDRUE0ODFBMDk3RDkzMDIwMDk0
QzlFNCAvKiBMZWdhY3lJbmxpbmVUZXh0Qm94LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBMZWdhY3lJbmxpbmVUZXh0Qm94LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQkNFQTQ4MUIwOTdEOTMwMjAwOTRDOUU0IC8qIExlZ2FjeUlubGluZVRleHRC
b3guaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExlZ2FjeUlubGluZVRleHRC
b3guaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNFQTQ4MjAwOTdEOTMwMjAwOTRD
OUU0IC8qIFJlbmRlckJsb2NrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBSZW5kZXJCbG9jay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDRUE0
ODIxMDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJCbG9jay5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUmVuZGVyQmxvY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQkNFQTQ4MjIwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlckJveC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVyQm94LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTMwMTg4LDE0ICszMDE4OCwxMCBAQAogCQkJCTkzMDdGMUQ2MEFGMkQ1
OTAwMERCQTMxQSAvKiBIaXRUZXN0UmVzdWx0LmggKi8sCiAJCQkJQjUxQTJGNDAxN0Q3RDVEQTAw
NzI1MTdBIC8qIEltYWdlUXVhbGl0eUNvbnRyb2xsZXIuY3BwICovLAogCQkJCUI1MUEyRjNFMTdE
N0QzQTQwMDcyNTE3QSAvKiBJbWFnZVF1YWxpdHlDb250cm9sbGVyLmggKi8sCi0JCQkJQThDRkY1
REYwQTE1NUEwNTAwMEE0MjM0IC8qIExlZ2FjeUlubGluZUJveC5jcHAgKi8sCi0JCQkJQThDRkY1
REUwQTE1NUEwNTAwMEE0MjM0IC8qIExlZ2FjeUlubGluZUJveC5oICovLAogCQkJCUI1N0NCNTJD
MTgyQTNFRUQwMDc5QTY0NyAvKiBJbmxpbmVFbGVtZW50Qm94LmNwcCAqLywKIAkJCQlCNTdDQjUy
QjE4MkEzN0Y2MDA3OUE2NDcgLyogSW5saW5lRWxlbWVudEJveC5oICovLAogCQkJCTkzMEM5MERD
MTlDRjk2NTMwMEQ2QzIxQSAvKiBJbmxpbmVJdGVyYXRvci5jcHAgKi8sCiAJCQkJQkNFNzg5MTUx
MTIwRDYwODAwNjBFQ0U1IC8qIElubGluZUl0ZXJhdG9yLmggKi8sCi0JCQkJQkNFQTQ4MUEwOTdE
OTMwMjAwOTRDOUU0IC8qIElubGluZVRleHRCb3guY3BwICovLAotCQkJCUJDRUE0ODFCMDk3RDkz
MDIwMDk0QzlFNCAvKiBJbmxpbmVUZXh0Qm94LmggKi8sCiAJCQkJMEZFQzEyMEIyMkJGMkNDNzAw
NEU5RDM1IC8qIExheWVyQW5jZXN0b3JDbGlwcGluZ1N0YWNrLmNwcCAqLywKIAkJCQkwRkVDMTIw
OTIyQkYyQ0M3MDA0RTlEMzUgLyogTGF5ZXJBbmNlc3RvckNsaXBwaW5nU3RhY2suaCAqLywKIAkJ
CQk1ODAzNzE2MzFBNjZGMUQzMDBCQUY1MTkgLyogTGF5ZXJGcmFnbWVudC5oICovLApAQCAtMzAy
MDUsOCArMzAyMDEsMTIgQEAKIAkJCQk5QkQxRjY4MDFGMDQ2MkI4MDAxQzlDREQgLyogTGF5b3V0
RGlzYWxsb3dlZFNjb3BlLmggKi8sCiAJCQkJQTEyMEFDQTExM0Y5OTg0NjAwRkU0QUM3IC8qIExh
eW91dFJlcGFpbnRlci5jcHAgKi8sCiAJCQkJQTEyMEFDQTAxM0Y5OTgzNzAwRkU0QUM3IC8qIExh
eW91dFJlcGFpbnRlci5oICovLAorCQkJCUE4Q0ZGNURGMEExNTVBMDUwMDBBNDIzNCAvKiBMZWdh
Y3lJbmxpbmVCb3guY3BwICovLAorCQkJCUE4Q0ZGNURFMEExNTVBMDUwMDBBNDIzNCAvKiBMZWdh
Y3lJbmxpbmVCb3guaCAqLywKIAkJCQlBOENGRjVERDBBMTU1QTA1MDAwQTQyMzQgLyogTGVnYWN5
SW5saW5lRmxvd0JveC5jcHAgKi8sCiAJCQkJQThDRkY1REMwQTE1NUEwNTAwMEE0MjM0IC8qIExl
Z2FjeUlubGluZUZsb3dCb3guaCAqLywKKwkJCQlCQ0VBNDgxQTA5N0Q5MzAyMDA5NEM5RTQgLyog
TGVnYWN5SW5saW5lVGV4dEJveC5jcHAgKi8sCisJCQkJQkNFQTQ4MUIwOTdEOTMwMjAwOTRDOUU0
IC8qIExlZ2FjeUlubGluZVRleHRCb3guaCAqLywKIAkJCQlCQ0VBNDgxMzA5N0Q5MzAyMDA5NEM5
RTQgLyogTGVnYWN5TGluZUxheW91dC5jcHAgKi8sCiAJCQkJRTRBMUFDNzgyMkZBRkQ1MDAwMTdC
NzVCIC8qIExlZ2FjeUxpbmVMYXlvdXQuaCAqLywKIAkJCQlBOENGRjVFMDBBMTU1QTA1MDAwQTQy
MzQgLyogTGVnYWN5Um9vdElubGluZUJveC5jcHAgKi8sCkBAIC0zMzE2MSw3ICszMzE2MSw3IEBA
CiAJCQkJRTREMzNGM0IyNTJBRUVDRDAwODM3RDA1IC8qIElubGluZVJ1bkFuZE9mZnNldC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNkYzNjBFNTAyMzk5OTQyMTAwMTUxMkE3IC8qIElubGluZVNvZnRM
aW5lQnJlYWtJdGVtLmggaW4gSGVhZGVycyAqLywKIAkJCQlBQTRDM0E3NzBCMkIxNjc5MDAyMzM0
QTIgLyogSW5saW5lU3R5bGVTaGVldE93bmVyLmggaW4gSGVhZGVycyAqLywKLQkJCQlCQ0VBNDg1
QTA5N0Q5MzAyMDA5NEM5RTQgLyogSW5saW5lVGV4dEJveC5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
QkNFQTQ4NUEwOTdEOTMwMjAwOTRDOUU0IC8qIExlZ2FjeUlubGluZVRleHRCb3guaCBpbiBIZWFk
ZXJzICovLAogCQkJCTFDMDEwNzAxMTkyNTk0REYwMDhBNDIwMSAvKiBJbmxpbmVUZXh0Qm94U3R5
bGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTZGMUNDMURFMjI1RjhCNDkwMDcyMEFEMiAvKiBJbmxp
bmVUZXh0SXRlbS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUNFODg2NDEyNjEwNUJGMjAwMEM4MTZD
IC8qIEluTWVtb3J5RGlzcGxheUxpc3QuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZVRl
eHQuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJs
ZUludGVyZmFjZVRleHQuY3BwCmluZGV4IDVlOTg2ZjFiNDIzZi4uZTlmYmU5YmQ4MjI5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxl
SW50ZXJmYWNlVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsv
V2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZVRleHQuY3BwCkBAIC00MSw3ICs0MSw2IEBACiAjaW5j
bHVkZSAiRnJhbWVWaWV3LmgiCiAjaW5jbHVkZSAiSFRNTFBhcnNlcklkaW9tcy5oIgogI2luY2x1
ZGUgIkhvc3RXaW5kb3cuaCIKLSNpbmNsdWRlICJJbmxpbmVUZXh0Qm94LmgiCiAjaW5jbHVkZSAi
Tm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJSYW5nZS5oIgogI2luY2x1ZGUgIlJlbmRlckxp
c3RJdGVtLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKaW5kZXggYTViNDMwMjM4
NGNjLi43ZjQyMTBiMThhOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWlu
ZXJOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKQEAg
LTM4LDEwICszOCwxMCBAQAogI2luY2x1ZGUgIkhUTUxPcHRpb25zQ29sbGVjdGlvbi5oIgogI2lu
Y2x1ZGUgIkhUTUxTbG90RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxUYWJsZVJvd3NDb2xsZWN0
aW9uLmgiCi0jaW5jbHVkZSAiSW5saW5lVGV4dEJveC5oIgogI2luY2x1ZGUgIkluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIkpTTm9kZS5oIgogI2luY2x1ZGUgIkxhYmVsc05v
ZGVMaXN0LmgiCisjaW5jbHVkZSAiTGVnYWN5SW5saW5lVGV4dEJveC5oIgogI2luY2x1ZGUgIkxl
Z2FjeVJvb3RJbmxpbmVCb3guaCIKICNpbmNsdWRlICJNdXRhdGlvbkV2ZW50LmgiCiAjaW5jbHVk
ZSAiTmFtZU5vZGVMaXN0LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnRNYXJrZXJDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtl
ckNvbnRyb2xsZXIuY3BwCmluZGV4IGNlZDcxMzE5MTJhYi4uM2Y2NDRmMDFiNzUyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmNwcApAQCAtMjU1
LDcgKzI1NSw3IEBAIHZvaWQgRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyOjphZGRNYXJrZXIoTm9k
ZSYgbm9kZSwgRG9jdW1lbnRNYXJrZXImJiBuZXdNYXJrZXIpCiAKICNpZiBFTkFCTEUoTEFZT1VU
X0ZPUk1BVFRJTkdfQ09OVEVYVCkKICAgICBpZiAoYXV0byogcmVuZGVyZXIgPSBub2RlLnJlbmRl
cmVyKCkpIHsKLSAgICAgICAgLy8gRklYTUU6IEZhY3RvciB0aGUgbWFya2VyIHBhaW50aW5nIGNv
ZGUgb3V0IG9mIElubGluZVRleHRCb3ggYW5kIHRlYWNoIHNpbXBsZSBsaW5lIGxheW91dCB0byB1
c2UgaXQuCisgICAgICAgIC8vIEZJWE1FOiBGYWN0b3IgdGhlIG1hcmtlciBwYWludGluZyBjb2Rl
IG91dCBvZiBMZWdhY3lJbmxpbmVUZXh0Qm94IGFuZCB0ZWFjaCBzaW1wbGUgbGluZSBsYXlvdXQg
dG8gdXNlIGl0LgogICAgICAgICBpZiAoYXV0byogbGluZUxheW91dCA9IExheW91dEludGVncmF0
aW9uOjpMaW5lTGF5b3V0Ojpjb250YWluaW5nKCpyZW5kZXJlcikpCiAgICAgICAgICAgICBsaW5l
TGF5b3V0LT5mbG93KCkuZW5zdXJlTGluZUJveGVzKCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlv
bi5jcHAKaW5kZXggZTMwYzEyN2U1MmViLi4zM2M4NmNjZjk1ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0
aW9uLmNwcApAQCAtMzgsOSArMzgsOSBAQAogI2luY2x1ZGUgIklubGluZUVsZW1lbnRCb3guaCIK
ICNpbmNsdWRlICJJbmxpbmVJdGVyYXRvci5oIgogI2luY2x1ZGUgIklubGluZVJ1bkFuZE9mZnNl
dC5oIgotI2luY2x1ZGUgIklubGluZVRleHRCb3guaCIKICNpbmNsdWRlICJMYXlvdXRJbnRlZ3Jh
dGlvbkxpbmVJdGVyYXRvci5oIgogI2luY2x1ZGUgIkxheW91dEludGVncmF0aW9uUnVuSXRlcmF0
b3IuaCIKKyNpbmNsdWRlICJMZWdhY3lJbmxpbmVUZXh0Qm94LmgiCiAjaW5jbHVkZSAiTG9nZ2lu
Zy5oIgogI2luY2x1ZGUgIk5vZGVUcmF2ZXJzYWwuaCIKICNpbmNsdWRlICJQb3NpdGlvbkl0ZXJh
dG9yLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRD
b21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQu
Y3BwCmluZGV4IDEwYWYxM2E1ODM1ZC4uZTRjYmFlOWY1MjM1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcApAQCAtNDcsMTMgKzQ3LDEzIEBA
CiAjaW5jbHVkZSAiSFRNTExJRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2lu
Y2x1ZGUgIkhUTUxTcGFuRWxlbWVudC5oIgotI2luY2x1ZGUgIklubGluZVRleHRCb3guaCIKICNp
bmNsdWRlICJJbnNlcnRJbnRvVGV4dE5vZGVDb21tYW5kLmgiCiAjaW5jbHVkZSAiSW5zZXJ0TGlu
ZUJyZWFrQ29tbWFuZC5oIgogI2luY2x1ZGUgIkluc2VydE5vZGVCZWZvcmVDb21tYW5kLmgiCiAj
aW5jbHVkZSAiSW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9yQ29tbWFuZC5oIgogI2luY2x1ZGUgIklu
c2VydFRleHRDb21tYW5kLmgiCiAjaW5jbHVkZSAiTGF5b3V0SW50ZWdyYXRpb25SdW5JdGVyYXRv
ci5oIgorI2luY2x1ZGUgIkxlZ2FjeUlubGluZVRleHRCb3guaCIKICNpbmNsdWRlICJNZXJnZUlk
ZW50aWNhbEVsZW1lbnRzQ29tbWFuZC5oIgogI2luY2x1ZGUgIk5vZGVUcmF2ZXJzYWwuaCIKICNp
bmNsdWRlICJSZW1vdmVOb2RlQ29tbWFuZC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9FZGl0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKaW5kZXgg
MTU4Yjg3Y2MxOGVkLi42NzIyODJhNzA3OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvRWRpdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaApAQCAt
Mzg5LDcgKzM4OSw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFs
PFNpbXBsZVJhbmdlPiBjb21wb3NpdGlvblJhbmdlKCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBP
UlQgYm9vbCBnZXRDb21wb3NpdGlvblNlbGVjdGlvbih1bnNpZ25lZCYgc2VsZWN0aW9uU3RhcnQs
IHVuc2lnbmVkJiBzZWxlY3Rpb25FbmQpIGNvbnN0OwogCi0gICAgLy8gZ2V0dGluZyBpbnRlcm5h
dGlvbmFsIHRleHQgaW5wdXQgY29tcG9zaXRpb24gc3RhdGUgKGZvciB1c2UgYnkgSW5saW5lVGV4
dEJveCkKKyAgICAvLyBnZXR0aW5nIGludGVybmF0aW9uYWwgdGV4dCBpbnB1dCBjb21wb3NpdGlv
biBzdGF0ZSAoZm9yIHVzZSBieSBMZWdhY3lJbmxpbmVUZXh0Qm94KQogICAgIFRleHQqIGNvbXBv
c2l0aW9uTm9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29tcG9zaXRpb25Ob2RlLmdldCgpOyB9CiAg
ICAgdW5zaWduZWQgY29tcG9zaXRpb25TdGFydCgpIGNvbnN0IHsgcmV0dXJuIG1fY29tcG9zaXRp
b25TdGFydDsgfQogICAgIHVuc2lnbmVkIGNvbXBvc2l0aW9uRW5kKCkgY29uc3QgeyByZXR1cm4g
bV9jb21wb3NpdGlvbkVuZDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9G
cmFtZVNlbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9u
LmNwcAppbmRleCA5MWZmYjNmNWZlMmYuLmZjZDgwZDFjYmNhNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAKQEAgLTUzLDcgKzUzLDcgQEAKICNpbmNsdWRlICJI
aXRUZXN0UmVxdWVzdC5oIgogI2luY2x1ZGUgIkhpdFRlc3RSZXN1bHQuaCIKICNpbmNsdWRlICJJ
bmxpbmVSdW5BbmRPZmZzZXQuaCIKLSNpbmNsdWRlICJJbmxpbmVUZXh0Qm94LmgiCisjaW5jbHVk
ZSAiTGVnYWN5SW5saW5lVGV4dEJveC5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRl
ICJQYWdlLmgiCiAjaW5jbHVkZSAiUmFuZ2UuaCIKQEAgLTE4NTAsNyArMTg1MCw3IEBAIHZvaWQg
RnJhbWVTZWxlY3Rpb246OmRlYnVnUmVuZGVyZXIoUmVuZGVyT2JqZWN0KiByZW5kZXJlciwgYm9v
bCBzZWxlY3RlZCkgY29uc3QKICAgICAgICAgICAgICAgICBvZmZzZXQgPSBtX3NlbGVjdGlvbi5l
bmQoKS5jb21wdXRlT2Zmc2V0SW5Db250YWluZXJOb2RlKCk7CiAKICAgICAgICAgICAgIGludCBw
b3M7Ci0gICAgICAgICAgICBJbmxpbmVUZXh0Qm94KiBib3ggPSB0ZXh0UmVuZGVyZXIuZmluZE5l
eHRJbmxpbmVUZXh0Qm94KG9mZnNldCwgcG9zKTsKKyAgICAgICAgICAgIExlZ2FjeUlubGluZVRl
eHRCb3gqIGJveCA9IHRleHRSZW5kZXJlci5maW5kTmV4dElubGluZVRleHRCb3gob2Zmc2V0LCBw
b3MpOwogICAgICAgICAgICAgdGV4dCA9IHRleHQuc3Vic3RyaW5nKGJveC0+c3RhcnQoKSwgYm94
LT5sZW4oKSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIFN0cmluZyBzaG93OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZW5kZXJlZFBvc2l0aW9uLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvUmVuZGVyZWRQb3NpdGlvbi5jcHAKaW5kZXggZGFhZGRlOTdjZWEw
Li40NmUzMDI5MDRmMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVuZGVy
ZWRQb3NpdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZW5kZXJlZFBvc2l0
aW9uLmNwcApAQCAtMzMsNyArMzMsNyBAQAogCiAjaW5jbHVkZSAiQ2FyZXRSZWN0Q29tcHV0YXRp
b24uaCIKICNpbmNsdWRlICJJbmxpbmVSdW5BbmRPZmZzZXQuaCIKLSNpbmNsdWRlICJJbmxpbmVU
ZXh0Qm94LmgiCisjaW5jbHVkZSAiTGVnYWN5SW5saW5lVGV4dEJveC5oIgogI2luY2x1ZGUgIlZp
c2libGVQb3NpdGlvbi5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL1RleHRJdGVyYXRvci5jcHAKaW5kZXggOTRiNDJmOTc1OWU3Li4yNjNhOTAwMDZjYjAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAKQEAgLTQ0LDcgKzQ0LDcgQEAK
ICNpbmNsdWRlICJIVE1MU2xvdEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MVGV4dEFyZWFFbGVt
ZW50LmgiCiAjaW5jbHVkZSAiSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuaCIKLSNpbmNsdWRl
ICJJbmxpbmVUZXh0Qm94LmgiCisjaW5jbHVkZSAiTGVnYWN5SW5saW5lVGV4dEJveC5oIgogI2lu
Y2x1ZGUgIk5vZGVUcmF2ZXJzYWwuaCIKICNpbmNsdWRlICJSYW5nZS5oIgogI2luY2x1ZGUgIlJl
bmRlckltYWdlLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVQ
b3NpdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVQb3NpdGlvbi5jcHAK
aW5kZXggN2U3NjhjNWJiMjUxLi4zNjBmNTE3YjhmMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvVmlzaWJsZVBvc2l0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL1Zpc2libGVQb3NpdGlvbi5jcHAKQEAgLTM2LDcgKzM2LDYgQEAKICNpbmNsdWRlICJIVE1M
SHRtbEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJJbmxpbmVS
dW5BbmRPZmZzZXQuaCIKLSNpbmNsdWRlICJJbmxpbmVUZXh0Qm94LmgiCiAjaW5jbHVkZSAiTGF5
b3V0SW50ZWdyYXRpb25MaW5lSXRlcmF0b3IuaCIKICNpbmNsdWRlICJMYXlvdXRJbnRlZ3JhdGlv
blJ1bkl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbGF5b3V0L1ZlcmlmaWNhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
VmVyaWZpY2F0aW9uLmNwcAppbmRleCA3MzgzZTQxYmQyYTEuLjJkN2JhMWRlYThiMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L1ZlcmlmaWNhdGlvbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbGF5b3V0L1ZlcmlmaWNhdGlvbi5jcHAKQEAgLTMxLDEyICszMSwxMiBAQAogI2lm
bmRlZiBOREVCVUcKICNpbmNsdWRlICJCbG9ja0Zvcm1hdHRpbmdTdGF0ZS5oIgogI2luY2x1ZGUg
IklubGluZUZvcm1hdHRpbmdTdGF0ZS5oIgotI2luY2x1ZGUgIklubGluZVRleHRCb3guaCIKICNp
bmNsdWRlICJMYXlvdXRCb3guaCIKICNpbmNsdWRlICJMYXlvdXRCb3hHZW9tZXRyeS5oIgogI2lu
Y2x1ZGUgIkxheW91dENvbnRhaW5lckJveC5oIgogI2luY2x1ZGUgIkxheW91dENvbnRleHQuaCIK
ICNpbmNsdWRlICJMYXlvdXRUcmVlQnVpbGRlci5oIgorI2luY2x1ZGUgIkxlZ2FjeUlubGluZVRl
eHRCb3guaCIKICNpbmNsdWRlICJSZW5kZXJCb3guaCIKICNpbmNsdWRlICJSZW5kZXJJbmxpbmUu
aCIKICNpbmNsdWRlICJSZW5kZXJMaW5lQnJlYWsuaCIKQEAgLTc5LDcgKzc5LDcgQEAgc3RhdGlj
IGJvb2wgY2hlY2tGb3JNYXRjaGluZ05vblRleHRSdW5zKGNvbnN0IExpbmVSdW4mIGxpbmVSdW4s
IGNvbnN0IFdlYkNvcmU6OkwKIH0KIAogCi1zdGF0aWMgYm9vbCBjaGVja0Zvck1hdGNoaW5nVGV4
dFJ1bnMoY29uc3QgTGluZVJ1biYgbGluZVJ1biwgY29uc3QgV2ViQ29yZTo6SW5saW5lVGV4dEJv
eCYgaW5saW5lVGV4dEJveCkKK3N0YXRpYyBib29sIGNoZWNrRm9yTWF0Y2hpbmdUZXh0UnVucyhj
b25zdCBMaW5lUnVuJiBsaW5lUnVuLCBjb25zdCBXZWJDb3JlOjpMZWdhY3lJbmxpbmVUZXh0Qm94
JiBpbmxpbmVUZXh0Qm94KQogewogICAgIGlmICghbGluZVJ1bi50ZXh0KCkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKQEAgLTEzNCw3ICsxMzQsNyBAQCBzdGF0aWMgYm9vbCBvdXRwdXRNaXNtYXRj
aGluZ0NvbXBsZXhMaW5lSW5mb3JtYXRpb25JZk5lZWRlZChUZXh0U3RyZWFtJiBzdHJlYW0sCiAg
ICAgZm9yICh1bnNpZ25lZCBpbmxpbmVCb3hJbmRleCA9IDA7IGlubGluZUJveEluZGV4IDwgaW5s
aW5lQm94ZXMuc2l6ZSgpICYmIHJ1bkluZGV4IDwgbGluZVJ1bnMuc2l6ZSgpOyArK2lubGluZUJv
eEluZGV4KSB7CiAgICAgICAgIGF1dG8mIGxpbmVSdW4gPSBsaW5lUnVuc1tydW5JbmRleF07CiAg
ICAgICAgIGF1dG8qIGlubGluZUJveCA9IGlubGluZUJveGVzW2lubGluZUJveEluZGV4XTsKLSAg
ICAgICAgYXV0byogaW5saW5lVGV4dEJveCA9IGlzPFdlYkNvcmU6OklubGluZVRleHRCb3g+KGlu
bGluZUJveCkgPyBkb3duY2FzdDxXZWJDb3JlOjpJbmxpbmVUZXh0Qm94PihpbmxpbmVCb3gpIDog
bnVsbHB0cjsKKyAgICAgICAgYXV0byogaW5saW5lVGV4dEJveCA9IGlzPFdlYkNvcmU6OkxlZ2Fj
eUlubGluZVRleHRCb3g+KGlubGluZUJveCkgPyBkb3duY2FzdDxXZWJDb3JlOjpMZWdhY3lJbmxp
bmVUZXh0Qm94PihpbmxpbmVCb3gpIDogbnVsbHB0cjsKICAgICAgICAgYm9vbCBtYXRjaGluZ1J1
bnMgPSBpbmxpbmVUZXh0Qm94ID8gY2hlY2tGb3JNYXRjaGluZ1RleHRSdW5zKGxpbmVSdW4sICpp
bmxpbmVUZXh0Qm94KSA6IGNoZWNrRm9yTWF0Y2hpbmdOb25UZXh0UnVucyhsaW5lUnVuLCAqaW5s
aW5lQm94KTsKIAogICAgICAgICBpZiAoIW1hdGNoaW5nUnVucykgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvdGV4dC9UZXh0VXRp
bC5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvdGV4
dC9UZXh0VXRpbC5oCmluZGV4IDFmNTg0ZmE3OTgxYi4uZTM0NmFiM2Y2YjI0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS90ZXh0L1Rl
eHRVdGlsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9p
bmxpbmUvdGV4dC9UZXh0VXRpbC5oCkBAIC0zNyw3ICszNyw3IEBAIGNsYXNzIFJlbmRlclN0eWxl
OwogCiBuYW1lc3BhY2UgTGF5b3V0IHsKIAotY2xhc3MgSW5saW5lVGV4dEJveDsKK2NsYXNzIExl
Z2FjeUlubGluZVRleHRCb3g7CiBjbGFzcyBJbmxpbmVUZXh0SXRlbTsKIAogY2xhc3MgVGV4dFV0
aWwgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91
dEludGVncmF0aW9uUnVuSXRlcmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVn
cmF0aW9uL0xheW91dEludGVncmF0aW9uUnVuSXRlcmF0b3IuY3BwCmluZGV4IGRlMWExZjU3ZmI2
Ni4uYTg3ZmNlOTIxNGZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdy
YXRpb24vTGF5b3V0SW50ZWdyYXRpb25SdW5JdGVyYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uUnVuSXRlcmF0b3IuY3BwCkBA
IC0xNzEsNyArMTcxLDcgQEAgVGV4dFJ1bkl0ZXJhdG9yIGZpcnN0VGV4dFJ1bkluVGV4dE9yZGVy
Rm9yKGNvbnN0IFJlbmRlclRleHQmIHRleHQpCiAgICAgICAgIGZvciAoYXV0byogdGV4dEJveCA9
IHRleHQuZmlyc3RUZXh0Qm94KCk7IHRleHRCb3g7IHRleHRCb3ggPSB0ZXh0Qm94LT5uZXh0VGV4
dEJveCgpKQogICAgICAgICAgICAgc29ydGVkVGV4dEJveGVzLmFwcGVuZCh0ZXh0Qm94KTsKICAg
ICAgICAgc3RkOjpzb3J0KHNvcnRlZFRleHRCb3hlcy5iZWdpbigpLCBzb3J0ZWRUZXh0Qm94ZXMu
ZW5kKCksIFtdKGF1dG8qIGEsIGF1dG8qIGIpIHsKLSAgICAgICAgICAgIHJldHVybiBJbmxpbmVU
ZXh0Qm94Ojpjb21wYXJlQnlTdGFydChkb3duY2FzdDxJbmxpbmVUZXh0Qm94PihhKSwgZG93bmNh
c3Q8SW5saW5lVGV4dEJveD4oYikpOworICAgICAgICAgICAgcmV0dXJuIExlZ2FjeUlubGluZVRl
eHRCb3g6OmNvbXBhcmVCeVN0YXJ0KGRvd25jYXN0PExlZ2FjeUlubGluZVRleHRCb3g+KGEpLCBk
b3duY2FzdDxMZWdhY3lJbmxpbmVUZXh0Qm94PihiKSk7CiAgICAgICAgIH0pOwogICAgICAgICBh
dXRvKiBmaXJzdCA9IHNvcnRlZFRleHRCb3hlc1swXTsKICAgICAgICAgcmV0dXJuIHsgUnVuSXRl
cmF0b3JMZWdhY3lQYXRoIHsgZmlyc3QsIFdURk1vdmUoc29ydGVkVGV4dEJveGVzKSwgMCB9IH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50
ZWdyYXRpb25SdW5JdGVyYXRvci5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9u
L0xheW91dEludGVncmF0aW9uUnVuSXRlcmF0b3IuaAppbmRleCA5N2FlNjhjMjQ0MGIuLjFkZDk3
NTAxMWYzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xh
eW91dEludGVncmF0aW9uUnVuSXRlcmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
aW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25SdW5JdGVyYXRvci5oCkBAIC0xMTMsNyArMTEz
LDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNTZWxlY3RhYmxlKHVuc2lnbmVkIHN0YXJ0LCB1bnNp
Z25lZCBlbmQpIGNvbnN0OwogICAgIExheW91dFJlY3Qgc2VsZWN0aW9uUmVjdCh1bnNpZ25lZCBz
dGFydCwgdW5zaWduZWQgZW5kKSBjb25zdDsKIAotICAgIElubGluZVRleHRCb3gqIGxlZ2FjeUlu
bGluZUJveCgpIGNvbnN0IHsgcmV0dXJuIGRvd25jYXN0PElubGluZVRleHRCb3g+KFBhdGhSdW46
OmxlZ2FjeUlubGluZUJveCgpKTsgfQorICAgIExlZ2FjeUlubGluZVRleHRCb3gqIGxlZ2FjeUlu
bGluZUJveCgpIGNvbnN0IHsgcmV0dXJuIGRvd25jYXN0PExlZ2FjeUlubGluZVRleHRCb3g+KFBh
dGhSdW46OmxlZ2FjeUlubGluZUJveCgpKTsgfQogfTsKIAogY2xhc3MgUnVuSXRlcmF0b3Igewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVn
cmF0aW9uUnVuSXRlcmF0b3JMZWdhY3lQYXRoLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50
ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25SdW5JdGVyYXRvckxlZ2FjeVBhdGguaAppbmRleCA0
MDUyMzJlZTc2MGYuLjU1NmYwNWRlNzcxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uUnVuSXRlcmF0b3JMZWdhY3lQYXRoLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9u
UnVuSXRlcmF0b3JMZWdhY3lQYXRoLmgKQEAgLTI1LDcgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNl
CiAKLSNpbmNsdWRlICJJbmxpbmVUZXh0Qm94LmgiCisjaW5jbHVkZSAiTGVnYWN5SW5saW5lVGV4
dEJveC5oIgogI2luY2x1ZGUgIkxlZ2FjeVJvb3RJbmxpbmVCb3guaCIKICNpbmNsdWRlICJSZW5k
ZXJUZXh0LmgiCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWRBcnJheS5oPgpAQCAtODcsNyArODcs
NyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBpZiAoIW1fbG9naWNhbE9yZGVyQ2FjaGUuaXNF
bXB0eSgpKSB7CiAgICAgICAgICAgICB0cmF2ZXJzZU5leHRJbmxpbmVCb3hJbkNhY2hlT3JkZXIo
KTsKLSAgICAgICAgICAgIEFTU0VSVCghbV9pbmxpbmVCb3ggfHwgaXM8SW5saW5lVGV4dEJveD4o
bV9pbmxpbmVCb3gpKTsKKyAgICAgICAgICAgIEFTU0VSVCghbV9pbmxpbmVCb3ggfHwgaXM8TGVn
YWN5SW5saW5lVGV4dEJveD4obV9pbmxpbmVCb3gpKTsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQogICAgICAgICB0cmF2ZXJzZU5leHRUZXh0UnVuKCk7CkBAIC0xMjMsNyArMTIzLDcg
QEAgcHVibGljOgogICAgIGNvbnN0IExlZ2FjeVJvb3RJbmxpbmVCb3gmIHJvb3RJbmxpbmVCb3go
KSBjb25zdCB7IHJldHVybiBtX2lubGluZUJveC0+cm9vdCgpOyB9CiAKIHByaXZhdGU6Ci0gICAg
Y29uc3QgSW5saW5lVGV4dEJveCogaW5saW5lVGV4dEJveCgpIGNvbnN0IHsgcmV0dXJuIGRvd25j
YXN0PElubGluZVRleHRCb3g+KG1faW5saW5lQm94KTsgfQorICAgIGNvbnN0IExlZ2FjeUlubGlu
ZVRleHRCb3gqIGlubGluZVRleHRCb3goKSBjb25zdCB7IHJldHVybiBkb3duY2FzdDxMZWdhY3lJ
bmxpbmVUZXh0Qm94PihtX2lubGluZUJveCk7IH0KIAogICAgIHN0YXRpYyBWZWN0b3I8Y29uc3Qg
TGVnYWN5SW5saW5lQm94Kj4gaW5saW5lQm94ZXNJbkxvZ2ljYWxPcmRlcihjb25zdCBMZWdhY3lS
b290SW5saW5lQm94JiByb290KQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9sYXlvdXR0cmVlL0xheW91dEJveC5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91
dHRyZWUvTGF5b3V0Qm94LmgKaW5kZXggZjlkNmJmNTExODJlLi41ODU1YzBiNDg0YTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dEJveC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dEJveC5oCkBAIC02MSw3ICs2
MSw3IEBAIHB1YmxpYzoKIAogICAgIGVudW0gQmFzZVR5cGVGbGFnIDogdWludDhfdCB7CiAgICAg
ICAgIEJveEZsYWcgICAgICAgICAgICAgICAgICAgID0gMSA8PCAwLAotICAgICAgICBJbmxpbmVU
ZXh0Qm94RmxhZyAgICAgICAgICA9IDEgPDwgMSwKKyAgICAgICAgTGVnYWN5SW5saW5lVGV4dEJv
eEZsYWcgICAgICAgICAgPSAxIDw8IDEsCiAgICAgICAgIExpbmVCcmVha0JveEZsYWcgICAgICAg
ICAgID0gMSA8PCAyLAogICAgICAgICBSZXBsYWNlZEJveEZsYWcgICAgICAgICAgICA9IDEgPDwg
MywKICAgICAgICAgSW5pdGlhbENvbnRhaW5pbmdCbG9ja0ZsYWcgPSAxIDw8IDQsCkBAIC0xNTIs
NyArMTUyLDcgQEAgcHVibGljOgogICAgIEJveCogbmV4dFNpYmxpbmcoKSB7IHJldHVybiBtX25l
eHRTaWJsaW5nOyB9CiAKICAgICBib29sIGlzQ29udGFpbmVyQm94KCkgY29uc3QgeyByZXR1cm4g
YmFzZVR5cGVGbGFncygpLmNvbnRhaW5zKENvbnRhaW5lckJveEZsYWcpOyB9Ci0gICAgYm9vbCBp
c0lubGluZVRleHRCb3goKSBjb25zdCB7IHJldHVybiBiYXNlVHlwZUZsYWdzKCkuY29udGFpbnMo
SW5saW5lVGV4dEJveEZsYWcpOyB9CisgICAgYm9vbCBpc0lubGluZVRleHRCb3goKSBjb25zdCB7
IHJldHVybiBiYXNlVHlwZUZsYWdzKCkuY29udGFpbnMoTGVnYWN5SW5saW5lVGV4dEJveEZsYWcp
OyB9CiAgICAgYm9vbCBpc0xpbmVCcmVha0JveCgpIGNvbnN0IHsgcmV0dXJuIGJhc2VUeXBlRmxh
Z3MoKS5jb250YWlucyhMaW5lQnJlYWtCb3hGbGFnKTsgfQogICAgIGJvb2wgaXNSZXBsYWNlZEJv
eCgpIGNvbnN0IHsgcmV0dXJuIGJhc2VUeXBlRmxhZ3MoKS5jb250YWlucyhSZXBsYWNlZEJveEZs
YWcpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xh
eW91dElubGluZVRleHRCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUv
TGF5b3V0SW5saW5lVGV4dEJveC5jcHAKaW5kZXggOTU4N2I2OTU2YzY5Li4zNGRjNDc2MzQwM2Mg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dElubGlu
ZVRleHRCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91
dElubGluZVRleHRCb3guY3BwCkBAIC0zNyw3ICszNyw3IEBAIG5hbWVzcGFjZSBMYXlvdXQgewog
V1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKElubGluZVRleHRCb3gpOwogCiBJbmxpbmVUZXh0
Qm94OjpJbmxpbmVUZXh0Qm94KFN0cmluZyBjb250ZW50LCBib29sIGNhblVzZVNpbXBsaWZpZWRD
b250ZW50TWVhc3VyaW5nLCBSZW5kZXJTdHlsZSYmIHN0eWxlKQotICAgIDogQm94KHsgfSwgV1RG
TW92ZShzdHlsZSksIEJveDo6SW5saW5lVGV4dEJveEZsYWcpCisgICAgOiBCb3goeyB9LCBXVEZN
b3ZlKHN0eWxlKSwgQm94OjpMZWdhY3lJbmxpbmVUZXh0Qm94RmxhZykKICAgICAsIG1fY29udGVu
dChjb250ZW50KQogICAgICwgbV9jYW5Vc2VTaW1wbGlmaWVkQ29udGVudE1lYXN1cmluZyhjYW5V
c2VTaW1wbGlmaWVkQ29udGVudE1lYXN1cmluZykKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9DYXJldFJlY3RDb21wdXRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvQ2FyZXRSZWN0Q29tcHV0YXRpb24uY3BwCmluZGV4IDY1YTgyNjRlYTYzMC4uNGE5
ODYxOWIyZGNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ2FyZXRSZWN0
Q29tcHV0YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DYXJldFJlY3RD
b21wdXRhdGlvbi5jcHAKQEAgLTE5NCwxMCArMTk0LDEwIEBAIHN0YXRpYyBMYXlvdXRSZWN0IGNv
bXB1dGVDYXJldFJlY3RGb3JTVkdJbmxpbmVUZXh0KGNvbnN0IElubGluZVJ1bkFuZE9mZnNldCYg
cnVuCiAgICAgYXV0byogYm94ID0gcnVuQW5kT2Zmc2V0LnJ1biA/IHJ1bkFuZE9mZnNldC5ydW4t
PmxlZ2FjeUlubGluZUJveCgpIDogbnVsbHB0cjsKICAgICBhdXRvIGNhcmV0T2Zmc2V0ID0gcnVu
QW5kT2Zmc2V0Lm9mZnNldDsKIAotICAgIGlmICghaXM8SW5saW5lVGV4dEJveD4oYm94KSkKKyAg
ICBpZiAoIWlzPExlZ2FjeUlubGluZVRleHRCb3g+KGJveCkpCiAgICAgICAgIHJldHVybiB7IH07
CiAKLSAgICBhdXRvJiB0ZXh0Qm94ID0gZG93bmNhc3Q8SW5saW5lVGV4dEJveD4oKmJveCk7Cisg
ICAgYXV0byYgdGV4dEJveCA9IGRvd25jYXN0PExlZ2FjeUlubGluZVRleHRCb3g+KCpib3gpOwog
ICAgIGlmIChjYXJldE9mZnNldCA8IHRleHRCb3guc3RhcnQoKSB8fCBjYXJldE9mZnNldCA+IHRl
eHRCb3guc3RhcnQoKSArIHRleHRCb3gubGVuKCkpCiAgICAgICAgIHJldHVybiB7IH07CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FbGxpcHNpc0JveC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvRWxsaXBzaXNCb3guY3BwCmluZGV4IDZhMmE4NTMzY2Y5MS4u
OGY5MDQ1MTIzZGU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRWxsaXBz
aXNCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FbGxpcHNpc0JveC5jcHAK
QEAgLTI0LDcgKzI0LDcgQEAKICNpbmNsdWRlICJGb250Q2FzY2FkZS5oIgogI2luY2x1ZGUgIkdy
YXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIkhpdFRlc3RSZXN1bHQuaCIKLSNpbmNsdWRlICJJ
bmxpbmVUZXh0Qm94LmgiCisjaW5jbHVkZSAiTGVnYWN5SW5saW5lVGV4dEJveC5oIgogI2luY2x1
ZGUgIkxlZ2FjeVJvb3RJbmxpbmVCb3guaCIKICNpbmNsdWRlICJQYWludEluZm8uaCIKICNpbmNs
dWRlICJUZXh0UnVuLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVn
YWN5SW5saW5lQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVnYWN5SW5saW5lQm94
LmgKaW5kZXggOWRmZTU0ZDY2MDAxLi4zYjZmOTU5MDgzMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9MZWdhY3lJbmxpbmVCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvTGVnYWN5SW5saW5lQm94LmgKQEAgLTM0NiwxMiArMzQ2LDEyIEBAIHByaXZhdGU6
CiAgICAgICAgIEFERF9CT09MRUFOX0JJVEZJRUxEKGlzSG9yaXpvbnRhbCwgSXNIb3Jpem9udGFs
KTsKICAgICAgICAgLy8gZm9yIFJvb3RJbmxpbmVCb3gKICAgICAgICAgQUREX0JPT0xFQU5fQklU
RklFTEQoZW5kc1dpdGhCcmVhaywgRW5kc1dpdGhCcmVhayk7IC8vIFdoZXRoZXIgdGhlIGxpbmUg
ZW5kcyB3aXRoIGEgPGJyPi4KLSAgICAgICAgLy8gc2hhcmVkIGJldHdlZW4gUm9vdElubGluZUJv
eCBhbmQgSW5saW5lVGV4dEJveAorICAgICAgICAvLyBzaGFyZWQgYmV0d2VlbiBSb290SW5saW5l
Qm94IGFuZCBMZWdhY3lJbmxpbmVUZXh0Qm94CiAgICAgICAgIEFERF9CT09MRUFOX0JJVEZJRUxE
KGNhbkhhdmVMZWZ0RXhwYW5zaW9uLCBDYW5IYXZlTGVmdEV4cGFuc2lvbik7CiAgICAgICAgIEFE
RF9CT09MRUFOX0JJVEZJRUxEKGNhbkhhdmVSaWdodEV4cGFuc2lvbiwgQ2FuSGF2ZVJpZ2h0RXhw
YW5zaW9uKTsKICAgICAgICAgQUREX0JPT0xFQU5fQklURklFTEQoa25vd25Ub0hhdmVOb092ZXJm
bG93LCBLbm93blRvSGF2ZU5vT3ZlcmZsb3cpOwogICAgICAgICBBRERfQk9PTEVBTl9CSVRGSUVM
RChoYXNFbGxpcHNpc0JveE9ySHlwaGVuLCBIYXNFbGxpcHNpc0JveE9ySHlwaGVuKTsKLSAgICAg
ICAgLy8gZm9yIElubGluZVRleHRCb3gKKyAgICAgICAgLy8gZm9yIExlZ2FjeUlubGluZVRleHRC
b3gKICAgICAgICAgQUREX0JPT0xFQU5fQklURklFTEQoZGlyT3ZlcnJpZGUsIERpck92ZXJyaWRl
KTsKICAgICAgICAgQUREX0JPT0xFQU5fQklURklFTEQoYmVoYXZlc0xpa2VUZXh0LCBCZWhhdmVz
TGlrZVRleHQpOyAvLyBXaGV0aGVyIG9yIG5vdCB0aGlzIG9iamVjdCByZXByZXNlbnRzIHRleHQg
d2l0aCBhIG5vbi16ZXJvIGhlaWdodC4gSW5jbHVkZXMgbm9uLWltYWdlIGxpc3QgbWFya2Vycywg
dGV4dCBib3hlcywgYnIuCiAgICAgICAgIEFERF9CT09MRUFOX0JJVEZJRUxEKGZvcmNlUmlnaHRF
eHBhbnNpb24sIEZvcmNlUmlnaHRFeHBhbnNpb24pOwpAQCAtMzk4LDE0ICszOTgsMTQgQEAgcHJv
dGVjdGVkOgogICAgIGJvb2wgaGFzRWxsaXBzaXNCb3goKSBjb25zdCB7IHJldHVybiBtX2JpdGZp
ZWxkcy5oYXNFbGxpcHNpc0JveE9ySHlwaGVuKCk7IH0KICAgICB2b2lkIHNldEhhc0VsbGlwc2lz
Qm94KGJvb2wgaGFzRWxsaXBzaXNCb3gpIHsgbV9iaXRmaWVsZHMuc2V0SGFzRWxsaXBzaXNCb3hP
ckh5cGhlbihoYXNFbGxpcHNpc0JveCk7IH0KIAotICAgIC8vIEZvciBJbmxpbmVUZXh0Qm94Cisg
ICAgLy8gRm9yIExlZ2FjeUlubGluZVRleHRCb3gKICAgICBib29sIGhhc0h5cGhlbigpIGNvbnN0
IHsgcmV0dXJuIG1fYml0ZmllbGRzLmhhc0VsbGlwc2lzQm94T3JIeXBoZW4oKTsgfQogICAgIGJv
b2wgY2FuSGF2ZUxlZnRFeHBhbnNpb24oKSBjb25zdCB7IHJldHVybiBtX2JpdGZpZWxkcy5jYW5I
YXZlTGVmdEV4cGFuc2lvbigpOyB9CiAgICAgYm9vbCBjYW5IYXZlUmlnaHRFeHBhbnNpb24oKSBj
b25zdCB7IHJldHVybiBtX2JpdGZpZWxkcy5jYW5IYXZlUmlnaHRFeHBhbnNpb24oKTsgfQogICAg
IGJvb2wgZm9yY2VSaWdodEV4cGFuc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1fYml0ZmllbGRzLmZv
cmNlUmlnaHRFeHBhbnNpb24oKTsgfQogICAgIGJvb2wgZm9yY2VMZWZ0RXhwYW5zaW9uKCkgY29u
c3QgeyByZXR1cm4gbV9iaXRmaWVsZHMuZm9yY2VMZWZ0RXhwYW5zaW9uKCk7IH0KICAgICAKLSAg
ICAvLyBGb3IgTGVnYWN5SW5saW5lRmxvd0JveCBhbmQgSW5saW5lVGV4dEJveAorICAgIC8vIEZv
ciBMZWdhY3lJbmxpbmVGbG93Qm94IGFuZCBMZWdhY3lJbmxpbmVUZXh0Qm94CiAgICAgYm9vbCBl
eHRyYWN0ZWQoKSBjb25zdCB7IHJldHVybiBtX2JpdGZpZWxkcy5leHRyYWN0ZWQoKTsgfQogCiBw
cm90ZWN0ZWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVnYWN5SW5s
aW5lRmxvd0JveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVnYWN5SW5saW5lRmxv
d0JveC5jcHAKaW5kZXggMjI5YThkNmMzZDIxLi41M2U5MGI2ODc0MzUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MZWdhY3lJbmxpbmVGbG93Qm94LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVnYWN5SW5saW5lRmxvd0JveC5jcHAKQEAgLTI2LDcgKzI2
LDcgQEAKICNpbmNsdWRlICJGb250Q2FzY2FkZS5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4
dC5oIgogI2luY2x1ZGUgIkhpdFRlc3RSZXN1bHQuaCIKLSNpbmNsdWRlICJJbmxpbmVUZXh0Qm94
LmgiCisjaW5jbHVkZSAiTGVnYWN5SW5saW5lVGV4dEJveC5oIgogI2luY2x1ZGUgIkxlZ2FjeVJv
b3RJbmxpbmVCb3guaCIKICNpbmNsdWRlICJSZW5kZXJCbG9jay5oIgogI2luY2x1ZGUgIlJlbmRl
cklubGluZS5oIgpAQCAtMTYxLDggKzE2MSw4IEBAIHZvaWQgTGVnYWN5SW5saW5lRmxvd0JveDo6
YWRkVG9MaW5lKExlZ2FjeUlubGluZUJveCogY2hpbGQpCiAgICAgICAgIGlmIChjaGlsZC0+YmVo
YXZlc0xpa2VUZXh0KCkpIHsKICAgICAgICAgICAgIGNvbnN0IFJlbmRlclN0eWxlKiBjaGlsZFN0
eWxlID0gJmNoaWxkLT5saW5lU3R5bGUoKTsKICAgICAgICAgICAgIGJvb2wgaGFzTWFya2VycyA9
IGZhbHNlOwotICAgICAgICAgICAgaWYgKGlzPElubGluZVRleHRCb3g+KGNoaWxkKSkgewotICAg
ICAgICAgICAgICAgIGNvbnN0IGF1dG8qIHRleHRCb3ggPSBkb3duY2FzdDxJbmxpbmVUZXh0Qm94
PihjaGlsZCk7CisgICAgICAgICAgICBpZiAoaXM8TGVnYWN5SW5saW5lVGV4dEJveD4oY2hpbGQp
KSB7CisgICAgICAgICAgICAgICAgY29uc3QgYXV0byogdGV4dEJveCA9IGRvd25jYXN0PExlZ2Fj
eUlubGluZVRleHRCb3g+KGNoaWxkKTsKICAgICAgICAgICAgICAgICBoYXNNYXJrZXJzID0gdGV4
dEJveC0+aGFzTWFya2VycygpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKGNoaWxk
U3R5bGUtPmxldHRlclNwYWNpbmcoKSA8IDAgfHwgY2hpbGRTdHlsZS0+dGV4dFNoYWRvdygpIHx8
IGNoaWxkU3R5bGUtPnRleHRFbXBoYXNpc01hcmsoKSAhPSBUZXh0RW1waGFzaXNNYXJrOjpOb25l
IHx8IGNoaWxkU3R5bGUtPmhhc1Bvc2l0aXZlU3Ryb2tlV2lkdGgoKSB8fCBoYXNNYXJrZXJzIHx8
ICFjaGlsZFN0eWxlLT50ZXh0VW5kZXJsaW5lT2Zmc2V0KCkuaXNBdXRvKCkgfHwgIWNoaWxkU3R5
bGUtPnRleHREZWNvcmF0aW9uVGhpY2tuZXNzKCkuaXNBdXRvKCkgfHwgY2hpbGRTdHlsZS0+dGV4
dFVuZGVybGluZVBvc2l0aW9uKCkgIT0gVGV4dFVuZGVybGluZVBvc2l0aW9uOjpBdXRvKQpAQCAt
MzkyLDcgKzM5Miw3IEBAIGZsb2F0IExlZ2FjeUlubGluZUZsb3dCb3g6OnBsYWNlQm94UmFuZ2VJ
bklubGluZURpcmVjdGlvbihMZWdhY3lJbmxpbmVCb3gqIGZpcnN0CiAgICAgZmxvYXQgdG90YWxF
eHBhbnNpb24gPSAwOwogICAgIGZvciAoYXV0byogY2hpbGQgPSBmaXJzdENoaWxkOyBjaGlsZCAm
JiBjaGlsZCAhPSBsYXN0Q2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRPbkxpbmUoKSkgewogICAg
ICAgICBpZiAoaXM8UmVuZGVyVGV4dD4oY2hpbGQtPnJlbmRlcmVyKCkpKSB7Ci0gICAgICAgICAg
ICBhdXRvJiB0ZXh0Qm94ID0gZG93bmNhc3Q8SW5saW5lVGV4dEJveD4oKmNoaWxkKTsKKyAgICAg
ICAgICAgIGF1dG8mIHRleHRCb3ggPSBkb3duY2FzdDxMZWdhY3lJbmxpbmVUZXh0Qm94PigqY2hp
bGQpOwogICAgICAgICAgICAgUmVuZGVyVGV4dCYgcmVuZGVyVGV4dCA9IHRleHRCb3gucmVuZGVy
ZXIoKTsKICAgICAgICAgICAgIGlmIChyZW5kZXJUZXh0LnRleHQoKS5sZW5ndGgoKSkgewogICAg
ICAgICAgICAgICAgIGlmIChuZWVkc1dvcmRTcGFjaW5nICYmIGlzU3BhY2VPck5ld2xpbmUocmVu
ZGVyVGV4dC5jaGFyYWN0ZXJBdCh0ZXh0Qm94LnN0YXJ0KCkpKSkKQEAgLTQ3Miw4ICs0NzIsOCBA
QCBib29sIExlZ2FjeUlubGluZUZsb3dCb3g6OnJlcXVpcmVzSWRlb2dyYXBoaWNCYXNlbGluZShj
b25zdCBHbHlwaE92ZXJmbG93QW5kRmFsbAogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgICAgICAgICAgCiAgICAgICAgICAgICBjb25zdCBWZWN0b3I8Y29uc3QgRm9udCo+KiB1c2Vk
Rm9udHMgPSBudWxscHRyOwotICAgICAgICAgICAgaWYgKGlzPElubGluZVRleHRCb3g+KCpjaGls
ZCkpIHsKLSAgICAgICAgICAgICAgICBHbHlwaE92ZXJmbG93QW5kRmFsbGJhY2tGb250c01hcDo6
Y29uc3RfaXRlcmF0b3IgaXQgPSB0ZXh0Qm94RGF0YU1hcC5maW5kKGRvd25jYXN0PElubGluZVRl
eHRCb3g+KGNoaWxkKSk7CisgICAgICAgICAgICBpZiAoaXM8TGVnYWN5SW5saW5lVGV4dEJveD4o
KmNoaWxkKSkgeworICAgICAgICAgICAgICAgIEdseXBoT3ZlcmZsb3dBbmRGYWxsYmFja0ZvbnRz
TWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IHRleHRCb3hEYXRhTWFwLmZpbmQoZG93bmNhc3Q8TGVn
YWN5SW5saW5lVGV4dEJveD4oY2hpbGQpKTsKICAgICAgICAgICAgICAgICB1c2VkRm9udHMgPSBp
dCA9PSB0ZXh0Qm94RGF0YU1hcC5lbmQoKSA/IG51bGxwdHIgOiAmaXQtPnZhbHVlLmZpcnN0Owog
ICAgICAgICAgICAgfQogCkBAIC03MzQsOCArNzM0LDggQEAgdm9pZCBMZWdhY3lJbmxpbmVGbG93
Qm94OjpwbGFjZUJveGVzSW5CbG9ja0RpcmVjdGlvbihMYXlvdXRVbml0IHRvcCwgTGF5b3V0VW5p
dAogICAgICAgICAgICAgICAgICAgICBib3hIZWlnaHQgLT0gKHRvcFJ1YnlCYXNlTGVhZGluZyAr
IGJvdHRvbVJ1YnlCYXNlTGVhZGluZyk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
fQotICAgICAgICAgICAgaWYgKGlzPElubGluZVRleHRCb3g+KCpjaGlsZCkpIHsKLSAgICAgICAg
ICAgICAgICBpZiAoc3RkOjpvcHRpb25hbDxib29sPiBtYXJrRXhpc3RzQW5kSXNBYm92ZSA9IGRv
d25jYXN0PElubGluZVRleHRCb3g+KCpjaGlsZCkuZW1waGFzaXNNYXJrRXhpc3RzQW5kSXNBYm92
ZShjaGlsZExpbmVTdHlsZSkpIHsKKyAgICAgICAgICAgIGlmIChpczxMZWdhY3lJbmxpbmVUZXh0
Qm94PigqY2hpbGQpKSB7CisgICAgICAgICAgICAgICAgaWYgKHN0ZDo6b3B0aW9uYWw8Ym9vbD4g
bWFya0V4aXN0c0FuZElzQWJvdmUgPSBkb3duY2FzdDxMZWdhY3lJbmxpbmVUZXh0Qm94PigqY2hp
bGQpLmVtcGhhc2lzTWFya0V4aXN0c0FuZElzQWJvdmUoY2hpbGRMaW5lU3R5bGUpKSB7CiAgICAg
ICAgICAgICAgICAgICAgIGlmICgqbWFya0V4aXN0c0FuZElzQWJvdmUgIT0gY2hpbGRMaW5lU3R5
bGUuaXNGbGlwcGVkTGluZXNXcml0aW5nTW9kZSgpKQogICAgICAgICAgICAgICAgICAgICAgICAg
aGFzQW5ub3RhdGlvbnNCZWZvcmUgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICBlbHNlCkBA
IC05MDYsNyArOTA2LDcgQEAgaW5saW5lIHZvaWQgTGVnYWN5SW5saW5lRmxvd0JveDo6YWRkQm9y
ZGVyT3V0c2V0VmlzdWFsT3ZlcmZsb3coTGF5b3V0UmVjdCYgbG9naWMKICAgICBsb2dpY2FsVmlz
dWFsT3ZlcmZsb3cgPSBMYXlvdXRSZWN0KGxvZ2ljYWxMZWZ0VmlzdWFsT3ZlcmZsb3csIGxvZ2lj
YWxUb3BWaXN1YWxPdmVyZmxvdywgbG9naWNhbFJpZ2h0VmlzdWFsT3ZlcmZsb3cgLSBsb2dpY2Fs
TGVmdFZpc3VhbE92ZXJmbG93LCBsb2dpY2FsQm90dG9tVmlzdWFsT3ZlcmZsb3cgLSBsb2dpY2Fs
VG9wVmlzdWFsT3ZlcmZsb3cpOwogfQogCi1pbmxpbmUgdm9pZCBMZWdhY3lJbmxpbmVGbG93Qm94
OjphZGRUZXh0Qm94VmlzdWFsT3ZlcmZsb3coSW5saW5lVGV4dEJveCYgdGV4dEJveCwgR2x5cGhP
dmVyZmxvd0FuZEZhbGxiYWNrRm9udHNNYXAmIHRleHRCb3hEYXRhTWFwLCBMYXlvdXRSZWN0JiBs
b2dpY2FsVmlzdWFsT3ZlcmZsb3cpCitpbmxpbmUgdm9pZCBMZWdhY3lJbmxpbmVGbG93Qm94Ojph
ZGRUZXh0Qm94VmlzdWFsT3ZlcmZsb3coTGVnYWN5SW5saW5lVGV4dEJveCYgdGV4dEJveCwgR2x5
cGhPdmVyZmxvd0FuZEZhbGxiYWNrRm9udHNNYXAmIHRleHRCb3hEYXRhTWFwLCBMYXlvdXRSZWN0
JiBsb2dpY2FsVmlzdWFsT3ZlcmZsb3cpCiB7CiAgICAgaWYgKHRleHRCb3gua25vd25Ub0hhdmVO
b092ZXJmbG93KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTEwMzAsNyArMTAzMCw3IEBAIHZvaWQg
TGVnYWN5SW5saW5lRmxvd0JveDo6Y29tcHV0ZU92ZXJmbG93KExheW91dFVuaXQgbGluZVRvcCwg
TGF5b3V0VW5pdCBsaW5lQm90CiAgICAgICAgIGlmIChpczxSZW5kZXJMaW5lQnJlYWs+KGNoaWxk
LT5yZW5kZXJlcigpKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBpZiAoaXM8UmVu
ZGVyVGV4dD4oY2hpbGQtPnJlbmRlcmVyKCkpKSB7Ci0gICAgICAgICAgICBhdXRvJiB0ZXh0Qm94
ID0gZG93bmNhc3Q8SW5saW5lVGV4dEJveD4oKmNoaWxkKTsKKyAgICAgICAgICAgIGF1dG8mIHRl
eHRCb3ggPSBkb3duY2FzdDxMZWdhY3lJbmxpbmVUZXh0Qm94PigqY2hpbGQpOwogICAgICAgICAg
ICAgTGF5b3V0UmVjdCB0ZXh0Qm94T3ZlcmZsb3coZW5jbG9zaW5nTGF5b3V0UmVjdCh0ZXh0Qm94
LmxvZ2ljYWxGcmFtZVJlY3QoKSkpOwogICAgICAgICAgICAgYWRkVGV4dEJveFZpc3VhbE92ZXJm
bG93KHRleHRCb3gsIHRleHRCb3hEYXRhTWFwLCB0ZXh0Qm94T3ZlcmZsb3cpOwogICAgICAgICAg
ICAgbG9naWNhbFZpc3VhbE92ZXJmbG93LnVuaXRlKHRleHRCb3hPdmVyZmxvdyk7CkBAIC0xNjEz
LDkgKzE2MTMsOSBAQCBMYXlvdXRVbml0IExlZ2FjeUlubGluZUZsb3dCb3g6OmNvbXB1dGVPdmVy
QW5ub3RhdGlvbkFkanVzdG1lbnQoTGF5b3V0VW5pdCBhbGxvdwogICAgICAgICAgICAgfQogICAg
ICAgICB9CiAKLSAgICAgICAgaWYgKGlzPElubGluZVRleHRCb3g+KCpjaGlsZCkpIHsKKyAgICAg
ICAgaWYgKGlzPExlZ2FjeUlubGluZVRleHRCb3g+KCpjaGlsZCkpIHsKICAgICAgICAgICAgIGNv
bnN0IFJlbmRlclN0eWxlJiBjaGlsZExpbmVTdHlsZSA9IGNoaWxkLT5saW5lU3R5bGUoKTsKLSAg
ICAgICAgICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gbWFya0V4aXN0c0FuZElzQWJvdmUgPSBkb3du
Y2FzdDxJbmxpbmVUZXh0Qm94PigqY2hpbGQpLmVtcGhhc2lzTWFya0V4aXN0c0FuZElzQWJvdmUo
Y2hpbGRMaW5lU3R5bGUpOworICAgICAgICAgICAgc3RkOjpvcHRpb25hbDxib29sPiBtYXJrRXhp
c3RzQW5kSXNBYm92ZSA9IGRvd25jYXN0PExlZ2FjeUlubGluZVRleHRCb3g+KCpjaGlsZCkuZW1w
aGFzaXNNYXJrRXhpc3RzQW5kSXNBYm92ZShjaGlsZExpbmVTdHlsZSk7CiAgICAgICAgICAgICBp
ZiAobWFya0V4aXN0c0FuZElzQWJvdmUgJiYgKm1hcmtFeGlzdHNBbmRJc0Fib3ZlKSB7CiAgICAg
ICAgICAgICAgICAgaWYgKCFjaGlsZExpbmVTdHlsZS5pc0ZsaXBwZWRMaW5lc1dyaXRpbmdNb2Rl
KCkpIHsKICAgICAgICAgICAgICAgICAgICAgaW50IHRvcE9mRW1waGFzaXNNYXJrID0gY2hpbGQt
PmxvZ2ljYWxUb3AoKSAtIGNoaWxkTGluZVN0eWxlLmZvbnRDYXNjYWRlKCkuZW1waGFzaXNNYXJr
SGVpZ2h0KGNoaWxkTGluZVN0eWxlLnRleHRFbXBoYXNpc01hcmtTdHJpbmcoKSk7CkBAIC0xNjYx
LDkgKzE2NjEsOSBAQCBMYXlvdXRVbml0IExlZ2FjeUlubGluZUZsb3dCb3g6OmNvbXB1dGVVbmRl
ckFubm90YXRpb25BZGp1c3RtZW50KExheW91dFVuaXQgYWxsbwogICAgICAgICAgICAgfQogICAg
ICAgICB9CiAKLSAgICAgICAgaWYgKGlzPElubGluZVRleHRCb3g+KCpjaGlsZCkpIHsKKyAgICAg
ICAgaWYgKGlzPExlZ2FjeUlubGluZVRleHRCb3g+KCpjaGlsZCkpIHsKICAgICAgICAgICAgIGNv
bnN0IFJlbmRlclN0eWxlJiBjaGlsZExpbmVTdHlsZSA9IGNoaWxkLT5saW5lU3R5bGUoKTsKLSAg
ICAgICAgICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gbWFya0V4aXN0c0FuZElzQWJvdmUgPSBkb3du
Y2FzdDxJbmxpbmVUZXh0Qm94PigqY2hpbGQpLmVtcGhhc2lzTWFya0V4aXN0c0FuZElzQWJvdmUo
Y2hpbGRMaW5lU3R5bGUpOworICAgICAgICAgICAgc3RkOjpvcHRpb25hbDxib29sPiBtYXJrRXhp
c3RzQW5kSXNBYm92ZSA9IGRvd25jYXN0PExlZ2FjeUlubGluZVRleHRCb3g+KCpjaGlsZCkuZW1w
aGFzaXNNYXJrRXhpc3RzQW5kSXNBYm92ZShjaGlsZExpbmVTdHlsZSk7CiAgICAgICAgICAgICBp
ZiAobWFya0V4aXN0c0FuZElzQWJvdmUgJiYgISptYXJrRXhpc3RzQW5kSXNBYm92ZSkgewogICAg
ICAgICAgICAgICAgIGlmICghY2hpbGRMaW5lU3R5bGUuaXNGbGlwcGVkTGluZXNXcml0aW5nTW9k
ZSgpKSB7CiAgICAgICAgICAgICAgICAgICAgIExheW91dFVuaXQgYm90dG9tT2ZFbXBoYXNpc01h
cmsgeyBjaGlsZC0+bG9naWNhbEJvdHRvbSgpICsgY2hpbGRMaW5lU3R5bGUuZm9udENhc2NhZGUo
KS5lbXBoYXNpc01hcmtIZWlnaHQoY2hpbGRMaW5lU3R5bGUudGV4dEVtcGhhc2lzTWFya1N0cmlu
ZygpKSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xlZ2FjeUlubGlu
ZUZsb3dCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MZWdhY3lJbmxpbmVGbG93Qm94
LmgKaW5kZXggNzI3NTFiYTM3ZTMzLi4zODFjMjgyMjIyZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9MZWdhY3lJbmxpbmVGbG93Qm94LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0xlZ2FjeUlubGluZUZsb3dCb3guaApAQCAtMjgsMTQgKzI4LDE0IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSGl0VGVzdFJlcXVlc3Q7CiBjbGFzcyBIaXRUZXN0
UmVzdWx0OwotY2xhc3MgSW5saW5lVGV4dEJveDsKK2NsYXNzIExlZ2FjeUlubGluZVRleHRCb3g7
CiBjbGFzcyBSZW5kZXJMaW5lQm94TGlzdDsKIGNsYXNzIEZvbnQ7CiBjbGFzcyBWZXJ0aWNhbFBv
c2l0aW9uQ2FjaGU7CiAKIHN0cnVjdCBHbHlwaE92ZXJmbG93OwogCi10eXBlZGVmIEhhc2hNYXA8
Y29uc3QgSW5saW5lVGV4dEJveCosIHN0ZDo6cGFpcjxWZWN0b3I8Y29uc3QgRm9udCo+LCBHbHlw
aE92ZXJmbG93Pj4gR2x5cGhPdmVyZmxvd0FuZEZhbGxiYWNrRm9udHNNYXA7Cit0eXBlZGVmIEhh
c2hNYXA8Y29uc3QgTGVnYWN5SW5saW5lVGV4dEJveCosIHN0ZDo6cGFpcjxWZWN0b3I8Y29uc3Qg
Rm9udCo+LCBHbHlwaE92ZXJmbG93Pj4gR2x5cGhPdmVyZmxvd0FuZEZhbGxiYWNrRm9udHNNYXA7
CiAKIGNsYXNzIExlZ2FjeUlubGluZUZsb3dCb3ggOiBwdWJsaWMgTGVnYWN5SW5saW5lQm94IHsK
ICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKExlZ2FjeUlubGluZUZsb3dCb3gpOwpAQCAtMzA1
LDcgKzMwNSw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGFkZEJveFNoYWRvd1Zpc3VhbE92ZXJm
bG93KExheW91dFJlY3QmIGxvZ2ljYWxWaXN1YWxPdmVyZmxvdyk7CiAgICAgdm9pZCBhZGRCb3Jk
ZXJPdXRzZXRWaXN1YWxPdmVyZmxvdyhMYXlvdXRSZWN0JiBsb2dpY2FsVmlzdWFsT3ZlcmZsb3cp
OwotICAgIHZvaWQgYWRkVGV4dEJveFZpc3VhbE92ZXJmbG93KElubGluZVRleHRCb3gmLCBHbHlw
aE92ZXJmbG93QW5kRmFsbGJhY2tGb250c01hcCYsIExheW91dFJlY3QmIGxvZ2ljYWxWaXN1YWxP
dmVyZmxvdyk7CisgICAgdm9pZCBhZGRUZXh0Qm94VmlzdWFsT3ZlcmZsb3coTGVnYWN5SW5saW5l
VGV4dEJveCYsIEdseXBoT3ZlcmZsb3dBbmRGYWxsYmFja0ZvbnRzTWFwJiwgTGF5b3V0UmVjdCYg
bG9naWNhbFZpc3VhbE92ZXJmbG93KTsKICAgICB2b2lkIGFkZE91dGxpbmVWaXN1YWxPdmVyZmxv
dyhMYXlvdXRSZWN0JiBsb2dpY2FsVmlzdWFsT3ZlcmZsb3cpOwogICAgIHZvaWQgYWRkUmVwbGFj
ZWRDaGlsZE92ZXJmbG93KGNvbnN0IExlZ2FjeUlubGluZUJveCosIExheW91dFJlY3QmIGxvZ2lj
YWxMYXlvdXRPdmVyZmxvdywgTGF5b3V0UmVjdCYgbG9naWNhbFZpc3VhbE92ZXJmbG93KTsKICAg
ICB2b2lkIGNvbnN0cmFpblRvTGluZVRvcEFuZEJvdHRvbUlmTmVlZGVkKExheW91dFJlY3QmKSBj
b25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MZWdhY3lJbmxpbmVUZXh0Qm94LmNwcApz
aW1pbGFyaXR5IGluZGV4IDg4JQpyZW5hbWUgZnJvbSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
SW5saW5lVGV4dEJveC5jcHAKcmVuYW1lIHRvIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MZWdh
Y3lJbmxpbmVUZXh0Qm94LmNwcAppbmRleCBhODE4ZDMxM2ZiNjUuLjRjOTY2NTIwZDI3NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MZWdhY3lJbmxpbmVUZXh0Qm94LmNwcApAQCAtMjEs
NyArMjEsNyBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJJbmxpbmVU
ZXh0Qm94LmgiCisjaW5jbHVkZSAiTGVnYWN5SW5saW5lVGV4dEJveC5oIgogCiAjaW5jbHVkZSAi
QnJlYWtMaW5lcy5oIgogI2luY2x1ZGUgIkNvbXBvc2l0aW9uSGlnaGxpZ2h0LmgiCkBAIC02NCwy
NyArNjQsMjcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1XVEZfTUFLRV9JU09fQUxMT0NB
VEVEX0lNUEwoSW5saW5lVGV4dEJveCk7CitXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoTGVn
YWN5SW5saW5lVGV4dEJveCk7CiAKLXN0cnVjdCBTYW1lU2l6ZUFzSW5saW5lVGV4dEJveCA6IHB1
YmxpYyBMZWdhY3lJbmxpbmVCb3ggeworc3RydWN0IFNhbWVTaXplQXNMZWdhY3lJbmxpbmVUZXh0
Qm94IDogcHVibGljIExlZ2FjeUlubGluZUJveCB7CiAgICAgdW5zaWduZWQgdmFyaWFibGVzWzFd
OwogICAgIHVuc2lnbmVkIHNob3J0IHZhcmlhYmxlczJbMl07CiAgICAgdm9pZCogcG9pbnRlcnNb
Ml07CiB9OwogCi1DT01QSUxFX0FTU0VSVChzaXplb2YoSW5saW5lVGV4dEJveCkgPT0gc2l6ZW9m
KFNhbWVTaXplQXNJbmxpbmVUZXh0Qm94KSwgSW5saW5lVGV4dEJveF9zaG91bGRfc3RheV9zbWFs
bCk7CitDT01QSUxFX0FTU0VSVChzaXplb2YoTGVnYWN5SW5saW5lVGV4dEJveCkgPT0gc2l6ZW9m
KFNhbWVTaXplQXNMZWdhY3lJbmxpbmVUZXh0Qm94KSwgTGVnYWN5SW5saW5lVGV4dEJveF9zaG91
bGRfc3RheV9zbWFsbCk7CiAKLXR5cGVkZWYgV1RGOjpIYXNoTWFwPGNvbnN0IElubGluZVRleHRC
b3gqLCBMYXlvdXRSZWN0PiBJbmxpbmVUZXh0Qm94T3ZlcmZsb3dNYXA7Ci1zdGF0aWMgSW5saW5l
VGV4dEJveE92ZXJmbG93TWFwKiBnVGV4dEJveGVzV2l0aE92ZXJmbG93OwordHlwZWRlZiBXVEY6
Okhhc2hNYXA8Y29uc3QgTGVnYWN5SW5saW5lVGV4dEJveCosIExheW91dFJlY3Q+IExlZ2FjeUlu
bGluZVRleHRCb3hPdmVyZmxvd01hcDsKK3N0YXRpYyBMZWdhY3lJbmxpbmVUZXh0Qm94T3ZlcmZs
b3dNYXAqIGdUZXh0Qm94ZXNXaXRoT3ZlcmZsb3c7CiAKLUlubGluZVRleHRCb3g6On5JbmxpbmVU
ZXh0Qm94KCkKK0xlZ2FjeUlubGluZVRleHRCb3g6On5MZWdhY3lJbmxpbmVUZXh0Qm94KCkKIHsK
ICAgICBpZiAoIWtub3duVG9IYXZlTm9PdmVyZmxvdygpICYmIGdUZXh0Qm94ZXNXaXRoT3ZlcmZs
b3cpCiAgICAgICAgIGdUZXh0Qm94ZXNXaXRoT3ZlcmZsb3ctPnJlbW92ZSh0aGlzKTsKICAgICBU
ZXh0UGFpbnRlcjo6cmVtb3ZlR2x5cGhEaXNwbGF5TGlzdCgqdGhpcyk7CiB9CiAKLWJvb2wgSW5s
aW5lVGV4dEJveDo6aGFzVGV4dENvbnRlbnQoKSBjb25zdAorYm9vbCBMZWdhY3lJbmxpbmVUZXh0
Qm94OjpoYXNUZXh0Q29udGVudCgpIGNvbnN0CiB7CiAgICAgaWYgKG1fbGVuID4gMSkKICAgICAg
ICAgcmV0dXJuIHRydWU7CkBAIC05NSw3ICs5NSw3IEBAIGJvb2wgSW5saW5lVGV4dEJveDo6aGFz
VGV4dENvbnRlbnQoKSBjb25zdAogICAgIHJldHVybiBtX2xlbjsKIH0KIAotdm9pZCBJbmxpbmVU
ZXh0Qm94OjptYXJrRGlydHkoYm9vbCBkaXJ0eSkKK3ZvaWQgTGVnYWN5SW5saW5lVGV4dEJveDo6
bWFya0RpcnR5KGJvb2wgZGlydHkpCiB7CiAgICAgaWYgKGRpcnR5KSB7CiAgICAgICAgIG1fbGVu
ID0gMDsKQEAgLTEwNCwyMiArMTA0LDIyIEBAIHZvaWQgSW5saW5lVGV4dEJveDo6bWFya0RpcnR5
KGJvb2wgZGlydHkpCiAgICAgTGVnYWN5SW5saW5lQm94OjptYXJrRGlydHkoZGlydHkpOwogfQog
Ci1MYXlvdXRSZWN0IElubGluZVRleHRCb3g6OmxvZ2ljYWxPdmVyZmxvd1JlY3QoKSBjb25zdAor
TGF5b3V0UmVjdCBMZWdhY3lJbmxpbmVUZXh0Qm94Ojpsb2dpY2FsT3ZlcmZsb3dSZWN0KCkgY29u
c3QKIHsKICAgICBpZiAoa25vd25Ub0hhdmVOb092ZXJmbG93KCkgfHwgIWdUZXh0Qm94ZXNXaXRo
T3ZlcmZsb3cpCiAgICAgICAgIHJldHVybiBlbmNsb3NpbmdJbnRSZWN0KGxvZ2ljYWxGcmFtZVJl
Y3QoKSk7CiAgICAgcmV0dXJuIGdUZXh0Qm94ZXNXaXRoT3ZlcmZsb3ctPmdldCh0aGlzKTsKIH0K
IAotdm9pZCBJbmxpbmVUZXh0Qm94OjpzZXRMb2dpY2FsT3ZlcmZsb3dSZWN0KGNvbnN0IExheW91
dFJlY3QmIHJlY3QpCit2b2lkIExlZ2FjeUlubGluZVRleHRCb3g6OnNldExvZ2ljYWxPdmVyZmxv
d1JlY3QoY29uc3QgTGF5b3V0UmVjdCYgcmVjdCkKIHsKICAgICBBU1NFUlQoIWtub3duVG9IYXZl
Tm9PdmVyZmxvdygpKTsKICAgICBpZiAoIWdUZXh0Qm94ZXNXaXRoT3ZlcmZsb3cpCi0gICAgICAg
IGdUZXh0Qm94ZXNXaXRoT3ZlcmZsb3cgPSBuZXcgSW5saW5lVGV4dEJveE92ZXJmbG93TWFwOwor
ICAgICAgICBnVGV4dEJveGVzV2l0aE92ZXJmbG93ID0gbmV3IExlZ2FjeUlubGluZVRleHRCb3hP
dmVyZmxvd01hcDsKICAgICBnVGV4dEJveGVzV2l0aE92ZXJmbG93LT5hZGQodGhpcywgcmVjdCk7
CiB9CiAKLUxheW91dFVuaXQgSW5saW5lVGV4dEJveDo6YmFzZWxpbmVQb3NpdGlvbihGb250QmFz
ZWxpbmUgYmFzZWxpbmVUeXBlKSBjb25zdAorTGF5b3V0VW5pdCBMZWdhY3lJbmxpbmVUZXh0Qm94
OjpiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSBiYXNlbGluZVR5cGUpIGNvbnN0CiB7CiAg
ICAgaWYgKCFwYXJlbnQoKSkKICAgICAgICAgcmV0dXJuIDA7CkBAIC0xMjgsNyArMTI4LDcgQEAg
TGF5b3V0VW5pdCBJbmxpbmVUZXh0Qm94OjpiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSBi
YXNlbGluZVR5cGUpIGNvbnN0CiAgICAgcmV0dXJuIGRvd25jYXN0PFJlbmRlckJveE1vZGVsT2Jq
ZWN0PigqcmVuZGVyZXIoKS5wYXJlbnQoKSkuYmFzZWxpbmVQb3NpdGlvbihiYXNlbGluZVR5cGUs
IGlzRmlyc3RMaW5lKCksIGlzSG9yaXpvbnRhbCgpID8gSG9yaXpvbnRhbExpbmUgOiBWZXJ0aWNh
bExpbmUsIFBvc2l0aW9uT25Db250YWluaW5nTGluZSk7CiB9CiAKLUxheW91dFVuaXQgSW5saW5l
VGV4dEJveDo6bGluZUhlaWdodCgpIGNvbnN0CitMYXlvdXRVbml0IExlZ2FjeUlubGluZVRleHRC
b3g6OmxpbmVIZWlnaHQoKSBjb25zdAogewogICAgIGlmICghcmVuZGVyZXIoKS5wYXJlbnQoKSkK
ICAgICAgICAgcmV0dXJuIDA7CkBAIC0xMzcsMjcgKzEzNywyNyBAQCBMYXlvdXRVbml0IElubGlu
ZVRleHRCb3g6OmxpbmVIZWlnaHQoKSBjb25zdAogICAgIHJldHVybiBkb3duY2FzdDxSZW5kZXJC
b3hNb2RlbE9iamVjdD4oKnJlbmRlcmVyKCkucGFyZW50KCkpLmxpbmVIZWlnaHQoaXNGaXJzdExp
bmUoKSwgaXNIb3Jpem9udGFsKCkgPyBIb3Jpem9udGFsTGluZSA6IFZlcnRpY2FsTGluZSwgUG9z
aXRpb25PbkNvbnRhaW5pbmdMaW5lKTsKIH0KIAotTGF5b3V0VW5pdCBJbmxpbmVUZXh0Qm94Ojpz
ZWxlY3Rpb25Ub3AoKSBjb25zdAorTGF5b3V0VW5pdCBMZWdhY3lJbmxpbmVUZXh0Qm94OjpzZWxl
Y3Rpb25Ub3AoKSBjb25zdAogewogICAgIHJldHVybiByb290KCkuc2VsZWN0aW9uVG9wKCk7CiB9
CiAKLUxheW91dFVuaXQgSW5saW5lVGV4dEJveDo6c2VsZWN0aW9uQm90dG9tKCkgY29uc3QKK0xh
eW91dFVuaXQgTGVnYWN5SW5saW5lVGV4dEJveDo6c2VsZWN0aW9uQm90dG9tKCkgY29uc3QKIHsK
ICAgICByZXR1cm4gcm9vdCgpLnNlbGVjdGlvbkJvdHRvbSgpOwogfQogCi1MYXlvdXRVbml0IElu
bGluZVRleHRCb3g6OnNlbGVjdGlvbkhlaWdodCgpIGNvbnN0CitMYXlvdXRVbml0IExlZ2FjeUlu
bGluZVRleHRCb3g6OnNlbGVjdGlvbkhlaWdodCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHJvb3Qo
KS5zZWxlY3Rpb25IZWlnaHQoKTsKIH0KIAotYm9vbCBJbmxpbmVUZXh0Qm94Ojppc1NlbGVjdGVk
KHVuc2lnbmVkIHN0YXJ0UG9zaXRpb24sIHVuc2lnbmVkIGVuZFBvc2l0aW9uKSBjb25zdAorYm9v
bCBMZWdhY3lJbmxpbmVUZXh0Qm94Ojppc1NlbGVjdGVkKHVuc2lnbmVkIHN0YXJ0UG9zaXRpb24s
IHVuc2lnbmVkIGVuZFBvc2l0aW9uKSBjb25zdAogewogICAgIHJldHVybiBjbGFtcGVkT2Zmc2V0
KHN0YXJ0UG9zaXRpb24pIDwgY2xhbXBlZE9mZnNldChlbmRQb3NpdGlvbik7CiB9CiAKLVJlbmRl
ck9iamVjdDo6SGlnaGxpZ2h0U3RhdGUgSW5saW5lVGV4dEJveDo6c2VsZWN0aW9uU3RhdGUoKQor
UmVuZGVyT2JqZWN0OjpIaWdobGlnaHRTdGF0ZSBMZWdhY3lJbmxpbmVUZXh0Qm94OjpzZWxlY3Rp
b25TdGF0ZSgpCiB7CiAgICAgYXV0byBzdGF0ZSA9IHZlcmlmeVNlbGVjdGlvblN0YXRlKHJlbmRl
cmVyKCkuc2VsZWN0aW9uU3RhdGUoKSwgcmVuZGVyZXIoKS52aWV3KCkuc2VsZWN0aW9uKCkpOwog
ICAgIApAQCAtMTgzLDcgKzE4Myw3IEBAIFJlbmRlck9iamVjdDo6SGlnaGxpZ2h0U3RhdGUgSW5s
aW5lVGV4dEJveDo6c2VsZWN0aW9uU3RhdGUoKQogICAgIHJldHVybiBzdGF0ZTsKIH0KIAotUmVu
ZGVyT2JqZWN0OjpIaWdobGlnaHRTdGF0ZSBJbmxpbmVUZXh0Qm94Ojp2ZXJpZnlTZWxlY3Rpb25T
dGF0ZShSZW5kZXJPYmplY3Q6OkhpZ2hsaWdodFN0YXRlIHN0YXRlLCBIaWdobGlnaHREYXRhJiBz
ZWxlY3Rpb24pIGNvbnN0CitSZW5kZXJPYmplY3Q6OkhpZ2hsaWdodFN0YXRlIExlZ2FjeUlubGlu
ZVRleHRCb3g6OnZlcmlmeVNlbGVjdGlvblN0YXRlKFJlbmRlck9iamVjdDo6SGlnaGxpZ2h0U3Rh
dGUgc3RhdGUsIEhpZ2hsaWdodERhdGEmIHNlbGVjdGlvbikgY29uc3QKIHsKICAgICBpZiAoc3Rh
dGUgPT0gUmVuZGVyT2JqZWN0OjpIaWdobGlnaHRTdGF0ZTo6U3RhcnQgfHwgc3RhdGUgPT0gUmVu
ZGVyT2JqZWN0OjpIaWdobGlnaHRTdGF0ZTo6RW5kIHx8IHN0YXRlID09IFJlbmRlck9iamVjdDo6
SGlnaGxpZ2h0U3RhdGU6OkJvdGgpIHsKICAgICAgICAgYXV0byBzdGFydE9mZnNldCA9IHNlbGVj
dGlvbi5zdGFydE9mZnNldCgpOwpAQCAtMjEwLDcgKzIxMCw3IEBAIFJlbmRlck9iamVjdDo6SGln
aGxpZ2h0U3RhdGUgSW5saW5lVGV4dEJveDo6dmVyaWZ5U2VsZWN0aW9uU3RhdGUoUmVuZGVyT2Jq
ZWN0OjpICiAgICAgcmV0dXJuIHN0YXRlOwogfQogCi1pbmxpbmUgY29uc3QgRm9udENhc2NhZGUm
IElubGluZVRleHRCb3g6OmxpbmVGb250KCkgY29uc3QKK2lubGluZSBjb25zdCBGb250Q2FzY2Fk
ZSYgTGVnYWN5SW5saW5lVGV4dEJveDo6bGluZUZvbnQoKSBjb25zdAogewogICAgIHJldHVybiBj
b21iaW5lZFRleHQoKSA/IGNvbWJpbmVkVGV4dCgpLT50ZXh0Q29tYmluZUZvbnQoKSA6IGxpbmVT
dHlsZSgpLmZvbnRDYXNjYWRlKCk7CiB9CkBAIC0yNDAsNyArMjQwLDcgQEAgTGF5b3V0UmVjdCBz
bmFwcGVkU2VsZWN0aW9uUmVjdChjb25zdCBMYXlvdXRSZWN0JiBzZWxlY3Rpb25SZWN0LCBmbG9h
dCBsb2dpY2FsUmkKIH0KIAogLy8gRklYTUU6IFNoYXJlIG1vcmUgY29kZSB3aXRoIHBhaW50TWFy
a2VkVGV4dEJhY2tncm91bmQoKS4KLUxheW91dFJlY3QgSW5saW5lVGV4dEJveDo6bG9jYWxTZWxl
Y3Rpb25SZWN0KHVuc2lnbmVkIHN0YXJ0UG9zLCB1bnNpZ25lZCBlbmRQb3MpIGNvbnN0CitMYXlv
dXRSZWN0IExlZ2FjeUlubGluZVRleHRCb3g6OmxvY2FsU2VsZWN0aW9uUmVjdCh1bnNpZ25lZCBz
dGFydFBvcywgdW5zaWduZWQgZW5kUG9zKSBjb25zdAogewogICAgIHVuc2lnbmVkIHNQb3MgPSBj
bGFtcGVkT2Zmc2V0KHN0YXJ0UG9zKTsKICAgICB1bnNpZ25lZCBlUG9zID0gY2xhbXBlZE9mZnNl
dChlbmRQb3MpOwpAQCAtMjYyLDEzICsyNjIsMTMgQEAgTGF5b3V0UmVjdCBJbmxpbmVUZXh0Qm94
Ojpsb2NhbFNlbGVjdGlvblJlY3QodW5zaWduZWQgc3RhcnRQb3MsIHVuc2lnbmVkIGVuZFBvcykK
ICAgICByZXR1cm4gc25hcHBlZFNlbGVjdGlvblJlY3Qoc2VsZWN0aW9uUmVjdCwgbG9naWNhbFJp
Z2h0KCksIHNlbGVjdGlvblRvcCwgc2VsZWN0aW9uSGVpZ2h0LCBpc0hvcml6b250YWwoKSk7CiB9
CiAKLXZvaWQgSW5saW5lVGV4dEJveDo6ZGVsZXRlTGluZSgpCit2b2lkIExlZ2FjeUlubGluZVRl
eHRCb3g6OmRlbGV0ZUxpbmUoKQogewogICAgIHJlbmRlcmVyKCkucmVtb3ZlVGV4dEJveCgqdGhp
cyk7CiAgICAgZGVsZXRlIHRoaXM7CiB9CiAKLXZvaWQgSW5saW5lVGV4dEJveDo6ZXh0cmFjdExp
bmUoKQordm9pZCBMZWdhY3lJbmxpbmVUZXh0Qm94OjpleHRyYWN0TGluZSgpCiB7CiAgICAgaWYg
KGV4dHJhY3RlZCgpKQogICAgICAgICByZXR1cm47CkBAIC0yNzYsNyArMjc2LDcgQEAgdm9pZCBJ
bmxpbmVUZXh0Qm94OjpleHRyYWN0TGluZSgpCiAgICAgcmVuZGVyZXIoKS5leHRyYWN0VGV4dEJv
eCgqdGhpcyk7CiB9CiAKLXZvaWQgSW5saW5lVGV4dEJveDo6YXR0YWNoTGluZSgpCit2b2lkIExl
Z2FjeUlubGluZVRleHRCb3g6OmF0dGFjaExpbmUoKQogewogICAgIGlmICghZXh0cmFjdGVkKCkp
CiAgICAgICAgIHJldHVybjsKQEAgLTI4NCw3ICsyODQsNyBAQCB2b2lkIElubGluZVRleHRCb3g6
OmF0dGFjaExpbmUoKQogICAgIHJlbmRlcmVyKCkuYXR0YWNoVGV4dEJveCgqdGhpcyk7CiB9CiAK
LWZsb2F0IElubGluZVRleHRCb3g6OnBsYWNlRWxsaXBzaXNCb3goYm9vbCBmbG93SXNMVFIsIGZs
b2F0IHZpc2libGVMZWZ0RWRnZSwgZmxvYXQgdmlzaWJsZVJpZ2h0RWRnZSwgZmxvYXQgZWxsaXBz
aXNXaWR0aCwgZmxvYXQgJnRydW5jYXRlZFdpZHRoLCBib29sJiBmb3VuZEJveCkKK2Zsb2F0IExl
Z2FjeUlubGluZVRleHRCb3g6OnBsYWNlRWxsaXBzaXNCb3goYm9vbCBmbG93SXNMVFIsIGZsb2F0
IHZpc2libGVMZWZ0RWRnZSwgZmxvYXQgdmlzaWJsZVJpZ2h0RWRnZSwgZmxvYXQgZWxsaXBzaXNX
aWR0aCwgZmxvYXQgJnRydW5jYXRlZFdpZHRoLCBib29sJiBmb3VuZEJveCkKIHsKICAgICBpZiAo
Zm91bmRCb3gpIHsKICAgICAgICAgbV90cnVuY2F0aW9uID0gY0Z1bGxUcnVuY2F0aW9uOwpAQCAt
MzAwLDcgKzMwMCw3IEBAIGZsb2F0IElubGluZVRleHRCb3g6OnBsYWNlRWxsaXBzaXNCb3goYm9v
bCBmbG93SXNMVFIsIGZsb2F0IHZpc2libGVMZWZ0RWRnZSwgZmxvCiAgICAgYm9vbCBsdHJGdWxs
VHJ1bmNhdGlvbiA9IGZsb3dJc0xUUiAmJiBlbGxpcHNpc1ggPD0gbGVmdCgpOwogICAgIGJvb2wg
cnRsRnVsbFRydW5jYXRpb24gPSAhZmxvd0lzTFRSICYmIGVsbGlwc2lzWCA+PSBsZWZ0KCkgKyBs
b2dpY2FsV2lkdGgoKTsKICAgICBpZiAobHRyRnVsbFRydW5jYXRpb24gfHwgcnRsRnVsbFRydW5j
YXRpb24pIHsKLSAgICAgICAgLy8gVG9vIGZhci4gIEp1c3Qgc2V0IGZ1bGwgdHJ1bmNhdGlvbiwg
YnV0IHJldHVybiAtMSBhbmQgbGV0IHRoZSBlbGxpcHNpcyBqdXN0IGJlIHBsYWNlZCBhdCB0aGUg
ZWRnZSBvZiB0aGUgYm94LgorICAgICAgICAvLyBUb28gZmFyLiBKdXN0IHNldCBmdWxsIHRydW5j
YXRpb24sIGJ1dCByZXR1cm4gLTEgYW5kIGxldCB0aGUgZWxsaXBzaXMganVzdCBiZSBwbGFjZWQg
YXQgdGhlIGVkZ2Ugb2YgdGhlIGJveC4KICAgICAgICAgbV90cnVuY2F0aW9uID0gY0Z1bGxUcnVu
Y2F0aW9uOwogICAgICAgICBmb3VuZEJveCA9IHRydWU7CiAgICAgICAgIHJldHVybiAtMTsKQEAg
LTMxMSwxOSArMzExLDE5IEBAIGZsb2F0IElubGluZVRleHRCb3g6OnBsYWNlRWxsaXBzaXNCb3go
Ym9vbCBmbG93SXNMVFIsIGZsb2F0IHZpc2libGVMZWZ0RWRnZSwgZmxvCiAgICAgaWYgKGx0ckVs
bGlwc2lzV2l0aGluQm94IHx8IHJ0bEVsbGlwc2lzV2l0aGluQm94KSB7CiAgICAgICAgIGZvdW5k
Qm94ID0gdHJ1ZTsKIAotICAgICAgICAvLyBUaGUgaW5saW5lIGJveCBtYXkgaGF2ZSBkaWZmZXJl
bnQgZGlyZWN0aW9uYWxpdHkgdGhhbiBpdCdzIHBhcmVudC4gIFNpbmNlIHRydW5jYXRpb24KKyAg
ICAgICAgLy8gVGhlIGlubGluZSBib3ggbWF5IGhhdmUgZGlmZmVyZW50IGRpcmVjdGlvbmFsaXR5
IHRoYW4gaXQncyBwYXJlbnQuIFNpbmNlIHRydW5jYXRpb24KICAgICAgICAgLy8gYmVoYXZpb3Ig
ZGVwZW5kcyBib3RoIG9uIGJvdGggdGhlIHBhcmVudCBhbmQgdGhlIGlubGluZSBibG9jaydzIGRp
cmVjdGlvbmFsaXR5LCB3ZQogICAgICAgICAvLyBtdXN0IGtlZXAgdHJhY2sgb2YgdGhlc2Ugc2Vw
YXJhdGVseS4KICAgICAgICAgYm9vbCBsdHIgPSBpc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCk7CiAg
ICAgICAgIGlmIChsdHIgIT0gZmxvd0lzTFRSKSB7Ci0gICAgICAgICAgLy8gV2lkdGggaW4gcGl4
ZWxzIG9mIHRoZSB2aXNpYmxlIHBvcnRpb24gb2YgdGhlIGJveCwgZXhjbHVkaW5nIHRoZSBlbGxp
cHNpcy4KLSAgICAgICAgICBpbnQgdmlzaWJsZUJveFdpZHRoID0gdmlzaWJsZVJpZ2h0RWRnZSAt
IHZpc2libGVMZWZ0RWRnZSAgLSBlbGxpcHNpc1dpZHRoOwotICAgICAgICAgIGVsbGlwc2lzWCA9
IGx0ciA/IGxlZnQoKSArIHZpc2libGVCb3hXaWR0aCA6IHJpZ2h0KCkgLSB2aXNpYmxlQm94V2lk
dGg7CisgICAgICAgICAgICAvLyBXaWR0aCBpbiBwaXhlbHMgb2YgdGhlIHZpc2libGUgcG9ydGlv
biBvZiB0aGUgYm94LCBleGNsdWRpbmcgdGhlIGVsbGlwc2lzLgorICAgICAgICAgICAgaW50IHZp
c2libGVCb3hXaWR0aCA9IHZpc2libGVSaWdodEVkZ2UgLSB2aXNpYmxlTGVmdEVkZ2UgIC0gZWxs
aXBzaXNXaWR0aDsKKyAgICAgICAgICAgIGVsbGlwc2lzWCA9IGx0ciA/IGxlZnQoKSArIHZpc2li
bGVCb3hXaWR0aCA6IHJpZ2h0KCkgLSB2aXNpYmxlQm94V2lkdGg7CiAgICAgICAgIH0KIAogICAg
ICAgICBpbnQgb2Zmc2V0ID0gb2Zmc2V0Rm9yUG9zaXRpb24oZWxsaXBzaXNYLCBmYWxzZSk7Ci0g
ICAgICAgIGlmIChvZmZzZXQgPT0gMCkgewotICAgICAgICAgICAgLy8gTm8gY2hhcmFjdGVycyBz
aG91bGQgYmUgcmVuZGVyZWQuICBTZXQgb3Vyc2VsdmVzIHRvIGZ1bGwgdHJ1bmNhdGlvbiBhbmQg
cGxhY2UgdGhlIGVsbGlwc2lzIGF0IHRoZSBtaW4gb2Ygb3VyIHN0YXJ0CisgICAgICAgIGlmICgh
b2Zmc2V0KSB7CisgICAgICAgICAgICAvLyBObyBjaGFyYWN0ZXJzIHNob3VsZCBiZSByZW5kZXJl
ZC4gU2V0IG91cnNlbHZlcyB0byBmdWxsIHRydW5jYXRpb24gYW5kIHBsYWNlIHRoZSBlbGxpcHNp
cyBhdCB0aGUgbWluIG9mIG91ciBzdGFydAogICAgICAgICAgICAgLy8gYW5kIHRoZSBlbGxpcHNp
cyBlZGdlLgogICAgICAgICAgICAgbV90cnVuY2F0aW9uID0gY0Z1bGxUcnVuY2F0aW9uOwogICAg
ICAgICAgICAgdHJ1bmNhdGVkV2lkdGggKz0gZWxsaXBzaXNXaWR0aDsKQEAgLTM0NSwyMSArMzQ1
LDE5IEBAIGZsb2F0IElubGluZVRleHRCb3g6OnBsYWNlRWxsaXBzaXNCb3goYm9vbCBmbG93SXNM
VFIsIGZsb2F0IHZpc2libGVMZWZ0RWRnZSwgZmxvCiAgICAgICAgIHRydW5jYXRlZFdpZHRoICs9
IHdpZHRoT2ZWaXNpYmxlVGV4dCArIGVsbGlwc2lzV2lkdGg7CiAgICAgICAgIGlmIChmbG93SXNM
VFIpCiAgICAgICAgICAgICByZXR1cm4gbGVmdCgpICsgd2lkdGhPZlZpc2libGVUZXh0OwotICAg
ICAgICBlbHNlCi0gICAgICAgICAgICByZXR1cm4gcmlnaHQoKSAtIHdpZHRoT2ZWaXNpYmxlVGV4
dCAtIGVsbGlwc2lzV2lkdGg7CisKKyAgICAgICAgcmV0dXJuIHJpZ2h0KCkgLSB3aWR0aE9mVmlz
aWJsZVRleHQgLSBlbGxpcHNpc1dpZHRoOwogICAgIH0KICAgICB0cnVuY2F0ZWRXaWR0aCArPSBs
b2dpY2FsV2lkdGgoKTsKICAgICByZXR1cm4gLTE7CiB9CiAKLQotCi1ib29sIElubGluZVRleHRC
b3g6OmlzTGluZUJyZWFrKCkgY29uc3QKK2Jvb2wgTGVnYWN5SW5saW5lVGV4dEJveDo6aXNMaW5l
QnJlYWsoKSBjb25zdAogewogICAgIHJldHVybiByZW5kZXJlcigpLnN0eWxlKCkucHJlc2VydmVO
ZXdsaW5lKCkgJiYgbGVuKCkgPT0gMSAmJiByZW5kZXJlcigpLnRleHQoKVtzdGFydCgpXSA9PSAn
XG4nOwogfQogCi1ib29sIElubGluZVRleHRCb3g6Om5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RS
ZXF1ZXN0JiByZXF1ZXN0LCBIaXRUZXN0UmVzdWx0JiByZXN1bHQsIGNvbnN0IEhpdFRlc3RMb2Nh
dGlvbiYgbG9jYXRpb25JbkNvbnRhaW5lciwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVk
T2Zmc2V0LCBMYXlvdXRVbml0IC8qIGxpbmVUb3AgKi8sIExheW91dFVuaXQgLypsaW5lQm90dG9t
Ki8sCitib29sIExlZ2FjeUlubGluZVRleHRCb3g6Om5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RS
ZXF1ZXN0JiByZXF1ZXN0LCBIaXRUZXN0UmVzdWx0JiByZXN1bHQsIGNvbnN0IEhpdFRlc3RMb2Nh
dGlvbiYgbG9jYXRpb25JbkNvbnRhaW5lciwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVk
T2Zmc2V0LCBMYXlvdXRVbml0IC8qIGxpbmVUb3AgKi8sIExheW91dFVuaXQgLypsaW5lQm90dG9t
Ki8sCiAgICAgSGl0VGVzdEFjdGlvbiAvKmhpdFRlc3RBY3Rpb24qLykKIHsKICAgICBpZiAoIXZp
c2libGVUb0hpdFRlc3RpbmcocmVxdWVzdCkpCkBAIC0zOTIsNyArMzkwLDcgQEAgYm9vbCBJbmxp
bmVUZXh0Qm94Ojpub2RlQXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgSGl0
VGVzdFJlc3VsdCYgcmUKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8Ym9v
bD4gSW5saW5lVGV4dEJveDo6ZW1waGFzaXNNYXJrRXhpc3RzQW5kSXNBYm92ZShjb25zdCBSZW5k
ZXJTdHlsZSYgc3R5bGUpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPGJvb2w+IExlZ2FjeUlubGluZVRl
eHRCb3g6OmVtcGhhc2lzTWFya0V4aXN0c0FuZElzQWJvdmUoY29uc3QgUmVuZGVyU3R5bGUmIHN0
eWxlKSBjb25zdAogewogICAgIC8vIFRoaXMgZnVuY3Rpb24gcmV0dXJucyB0cnVlIGlmIHRoZXJl
IGFyZSB0ZXh0IGVtcGhhc2lzIG1hcmtzIGFuZCB0aGV5IGFyZSBzdXBwcmVzc2VkIGJ5IHJ1Ynkg
dGV4dC4KICAgICBpZiAoc3R5bGUudGV4dEVtcGhhc2lzTWFyaygpID09IFRleHRFbXBoYXNpc01h
cms6Ok5vbmUpCkBAIC00MzMsNyArNDMxLDcgQEAgc3RkOjpvcHRpb25hbDxib29sPiBJbmxpbmVU
ZXh0Qm94OjplbXBoYXNpc01hcmtFeGlzdHNBbmRJc0Fib3ZlKGNvbnN0IFJlbmRlclN0eWwKICAg
ICByZXR1cm4gaXNBYm92ZTsKIH0KIAotc3RhdGljIE1hcmtlZFRleHQgY3JlYXRlTWFya2VkVGV4
dEZyb21TZWxlY3Rpb25JbkJveChjb25zdCBJbmxpbmVUZXh0Qm94JiBib3gpCitzdGF0aWMgTWFy
a2VkVGV4dCBjcmVhdGVNYXJrZWRUZXh0RnJvbVNlbGVjdGlvbkluQm94KGNvbnN0IExlZ2FjeUlu
bGluZVRleHRCb3gmIGJveCkKIHsKICAgICBhdXRvIFtzZWxlY3Rpb25TdGFydCwgc2VsZWN0aW9u
RW5kXSA9IGJveC5zZWxlY3Rpb25TdGFydEVuZCgpOwogICAgIGlmIChzZWxlY3Rpb25TdGFydCA8
IHNlbGVjdGlvbkVuZCkKQEAgLTQ0MSw3ICs0MzksNyBAQCBzdGF0aWMgTWFya2VkVGV4dCBjcmVh
dGVNYXJrZWRUZXh0RnJvbVNlbGVjdGlvbkluQm94KGNvbnN0IElubGluZVRleHRCb3gmIGJveCkK
ICAgICByZXR1cm4geyB9OwogfQogCi12b2lkIElubGluZVRleHRCb3g6OnBhaW50KFBhaW50SW5m
byYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQsIExheW91dFVuaXQg
LypsaW5lVG9wKi8sIExheW91dFVuaXQgLypsaW5lQm90dG9tKi8pCit2b2lkIExlZ2FjeUlubGlu
ZVRleHRCb3g6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYg
cGFpbnRPZmZzZXQsIExheW91dFVuaXQgLypsaW5lVG9wKi8sIExheW91dFVuaXQgLypsaW5lQm90
dG9tKi8pCiB7CiAgICAgaWYgKGlzTGluZUJyZWFrKCkgfHwgIXBhaW50SW5mby5zaG91bGRQYWlu
dFdpdGhpblJvb3QocmVuZGVyZXIoKSkgfHwgcmVuZGVyZXIoKS5zdHlsZSgpLnZpc2liaWxpdHko
KSAhPSBWaXNpYmlsaXR5OjpWaXNpYmxlCiAgICAgICAgIHx8IG1fdHJ1bmNhdGlvbiA9PSBjRnVs
bFRydW5jYXRpb24gfHwgcGFpbnRJbmZvLnBoYXNlID09IFBhaW50UGhhc2U6Ok91dGxpbmUgfHwg
IWhhc1RleHRDb250ZW50KCkpCkBAIC01MzksOSArNTM3LDkgQEAgdm9pZCBJbmxpbmVUZXh0Qm94
OjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zm
c2V0LAogICAgICAgICBwYWludE1hcmtlZFRleHRzKHBhaW50SW5mbywgVGV4dFBhaW50UGhhc2U6
OkJhY2tncm91bmQsIGJveFJlY3QsIGNvYWxlc2NlZFN0eWxlZE1hcmtlZFRleHRzKTsKICAgICB9
CiAKLSAgICAvLyBGSVhNRTogUmlnaHQgbm93LCBJbmxpbmVUZXh0Qm94ZXMgbmV2ZXIgY2FsbCBh
ZGRSZWxldmFudFVucGFpbnRlZE9iamVjdCgpIGV2ZW4gdGhvdWdoIHRoZXkgbWlnaHQKKyAgICAv
LyBGSVhNRTogUmlnaHQgbm93LCBMZWdhY3lJbmxpbmVUZXh0Qm94ZXMgbmV2ZXIgY2FsbCBhZGRS
ZWxldmFudFVucGFpbnRlZE9iamVjdCgpIGV2ZW4gdGhvdWdoIHRoZXkgbWlnaHQKICAgICAvLyBs
ZWdpdGltYXRlbHkgYmUgdW5wYWludGVkIGlmIHRoZXkgYXJlIHdhaXRpbmcgb24gYSBzbG93LWxv
YWRpbmcgd2ViIGZvbnQuIFdlIHNob3VsZCBmaXggdGhhdCwgYW5kCi0gICAgLy8gd2hlbiB3ZSBk
bywgd2Ugd2lsbCBoYXZlIHRvIGFjY291bnQgZm9yIHRoZSBmYWN0IHRoZSBJbmxpbmVUZXh0Qm94
ZXMgZG8gbm90IGFsd2F5cyBoYXZlIHVuaXF1ZQorICAgIC8vIHdoZW4gd2UgZG8sIHdlIHdpbGwg
aGF2ZSB0byBhY2NvdW50IGZvciB0aGUgZmFjdCB0aGUgTGVnYWN5SW5saW5lVGV4dEJveGVzIGRv
IG5vdCBhbHdheXMgaGF2ZSB1bmlxdWUKICAgICAvLyByZW5kZXJlcnMgYW5kIFBhZ2UgY3VycmVu
dGx5IHJlbGllcyBvbiBlYWNoIHVucGFpbnRlZCBvYmplY3QgaGF2aW5nIGEgdW5pcXVlIHJlbmRl
cmVyLgogICAgIGlmIChwYWludEluZm8ucGhhc2UgPT0gUGFpbnRQaGFzZTo6Rm9yZWdyb3VuZCkK
ICAgICAgICAgcmVuZGVyZXIoKS5wYWdlKCkuYWRkUmVsZXZhbnRSZXBhaW50ZWRPYmplY3QoJnJl
bmRlcmVyKCksIEludFJlY3QoYm94T3JpZ2luLngoKSwgYm94T3JpZ2luLnkoKSwgbG9naWNhbFdp
ZHRoKCksIGxvZ2ljYWxIZWlnaHQoKSkpOwpAQCAtNTgyLDggKzU4MCwxMSBAQCB2b2lkIElubGlu
ZVRleHRCb3g6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYg
cGFpbnRPZmZzZXQsCiAgICAgYXV0byBzdHlsZWRNYXJrZWRUZXh0cyA9IHN1YmRpdmlkZUFuZFJl
c29sdmVTdHlsZShtYXJrZWRUZXh0cywgcmVuZGVyZXIoKSwgaXNGaXJzdExpbmUoKSwgcGFpbnRJ
bmZvKTsKIAogICAgIC8vIC4uLiBub3cgcmVtb3ZlIHRoZSBzZWxlY3Rpb24gbWFya2VkIHRleHQg
aWYgd2UgYXJlIGV4Y2x1ZGluZyBzZWxlY3Rpb24uCi0gICAgaWYgKCFpc1ByaW50aW5nICYmIHBh
aW50SW5mby5wYWludEJlaGF2aW9yLmNvbnRhaW5zKFBhaW50QmVoYXZpb3I6OkV4Y2x1ZGVTZWxl
Y3Rpb24pKQotICAgICAgICBzdHlsZWRNYXJrZWRUZXh0cy5yZW1vdmVBbGxNYXRjaGluZyhbXSAo
Y29uc3QgU3R5bGVkTWFya2VkVGV4dCYgbWFya2VkVGV4dCkgeyByZXR1cm4gbWFya2VkVGV4dC50
eXBlID09IE1hcmtlZFRleHQ6OlNlbGVjdGlvbjsgfSk7CisgICAgaWYgKCFpc1ByaW50aW5nICYm
IHBhaW50SW5mby5wYWludEJlaGF2aW9yLmNvbnRhaW5zKFBhaW50QmVoYXZpb3I6OkV4Y2x1ZGVT
ZWxlY3Rpb24pKSB7CisgICAgICAgIHN0eWxlZE1hcmtlZFRleHRzLnJlbW92ZUFsbE1hdGNoaW5n
KFtdIChjb25zdCBTdHlsZWRNYXJrZWRUZXh0JiBtYXJrZWRUZXh0KSB7CisgICAgICAgICAgICBy
ZXR1cm4gbWFya2VkVGV4dC50eXBlID09IE1hcmtlZFRleHQ6OlNlbGVjdGlvbjsKKyAgICAgICAg
fSk7CisgICAgfQogCiAgICAgLy8gQ29hbGVzY2Ugc3R5bGVzIG9mIGFkamFjZW50IG1hcmtlZCB0
ZXh0cyB0byBtaW5pbWl6ZSB0aGUgbnVtYmVyIG9mIGRyYXdpbmcgY29tbWFuZHMuCiAgICAgYXV0
byBjb2FsZXNjZWRTdHlsZWRNYXJrZWRUZXh0cyA9IGNvYWxlc2NlQWRqYWNlbnRNYXJrZWRUZXh0
cyhzdHlsZWRNYXJrZWRUZXh0cywgJk1hcmtlZFRleHRTdHlsZTo6YXJlRm9yZWdyb3VuZE1hcmtl
ZFRleHRTdHlsZXNFcXVhbCk7CkBAIC02MzgsNyArNjM5LDcgQEAgdm9pZCBJbmxpbmVUZXh0Qm94
OjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zm
c2V0LAogICAgICAgICBjb250ZXh0LmNvbmNhdENUTShyb3RhdGlvbihib3hSZWN0LCBDb3VudGVy
Y2xvY2t3aXNlKSk7CiB9CiAKLXVuc2lnbmVkIElubGluZVRleHRCb3g6OmNsYW1wZWRPZmZzZXQo
dW5zaWduZWQgeCkgY29uc3QKK3Vuc2lnbmVkIExlZ2FjeUlubGluZVRleHRCb3g6OmNsYW1wZWRP
ZmZzZXQodW5zaWduZWQgeCkgY29uc3QKIHsKICAgICB1bnNpZ25lZCBvZmZzZXQgPSBzdGQ6Om1h
eChzdGQ6Om1pbih4LCBtX3N0YXJ0ICsgbV9sZW4pLCBtX3N0YXJ0KSAtIG1fc3RhcnQ7CiAgICAg
aWYgKG1fdHJ1bmNhdGlvbiA9PSBjRnVsbFRydW5jYXRpb24pCkBAIC02NTcsNyArNjU4LDcgQEAg
dW5zaWduZWQgSW5saW5lVGV4dEJveDo6Y2xhbXBlZE9mZnNldCh1bnNpZ25lZCB4KSBjb25zdAog
ICAgIHJldHVybiBvZmZzZXQ7CiB9CiAKLXN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IElu
bGluZVRleHRCb3g6OmNsYW1wZWRTdGFydEVuZEZvclN0YXRlKHVuc2lnbmVkIHN0YXJ0LCB1bnNp
Z25lZCBlbmQsIFJlbmRlck9iamVjdDo6SGlnaGxpZ2h0U3RhdGUgc2VsZWN0aW9uU3RhdGUpIGNv
bnN0CitzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiBMZWdhY3lJbmxpbmVUZXh0Qm94Ojpj
bGFtcGVkU3RhcnRFbmRGb3JTdGF0ZSh1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgZW5kLCBSZW5k
ZXJPYmplY3Q6OkhpZ2hsaWdodFN0YXRlIHNlbGVjdGlvblN0YXRlKSBjb25zdAogewogICAgIGlm
IChzZWxlY3Rpb25TdGF0ZSA9PSBSZW5kZXJPYmplY3Q6OkhpZ2hsaWdodFN0YXRlOjpJbnNpZGUp
CiAgICAgICAgIHJldHVybiB7IDAsIGNsYW1wZWRPZmZzZXQobV9zdGFydCArIG1fbGVuKSB9OwpA
QCAtNjY5LDE0ICs2NzAsMTQgQEAgc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4gSW5saW5l
VGV4dEJveDo6Y2xhbXBlZFN0YXJ0RW5kRm9yU3RhdGUodW5zaWduZWQgc3QKICAgICByZXR1cm4g
eyBjbGFtcGVkT2Zmc2V0KHN0YXJ0KSwgY2xhbXBlZE9mZnNldChlbmQpIH07CiB9CiAKLXN0ZDo6
cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IElubGluZVRleHRCb3g6OnNlbGVjdGlvblN0YXJ0RW5k
KCkgY29uc3QKK3N0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IExlZ2FjeUlubGluZVRleHRC
b3g6OnNlbGVjdGlvblN0YXJ0RW5kKCkgY29uc3QKIHsKICAgICBhdXRvIHNlbGVjdGlvblN0YXRl
ID0gcmVuZGVyZXIoKS5zZWxlY3Rpb25TdGF0ZSgpOwogICAgIAogICAgIHJldHVybiBjbGFtcGVk
U3RhcnRFbmRGb3JTdGF0ZShyZW5kZXJlcigpLnZpZXcoKS5zZWxlY3Rpb24oKS5zdGFydE9mZnNl
dCgpLCByZW5kZXJlcigpLnZpZXcoKS5zZWxlY3Rpb24oKS5lbmRPZmZzZXQoKSwgc2VsZWN0aW9u
U3RhdGUpOwogfQogCi1zdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiBJbmxpbmVUZXh0Qm94
OjpoaWdobGlnaHRTdGFydEVuZChIaWdobGlnaHREYXRhICZyYW5nZURhdGEpIGNvbnN0CitzdGQ6
OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiBMZWdhY3lJbmxpbmVUZXh0Qm94OjpoaWdobGlnaHRT
dGFydEVuZChIaWdobGlnaHREYXRhICZyYW5nZURhdGEpIGNvbnN0CiB7CiAgICAgYXV0byBzdGF0
ZSA9IHJhbmdlRGF0YS5oaWdobGlnaHRTdGF0ZUZvclJlbmRlcmVyKHJlbmRlcmVyKCkpOwogICAg
IHN0YXRlID0gdmVyaWZ5U2VsZWN0aW9uU3RhdGUoc3RhdGUsIHJhbmdlRGF0YSk7CkBAIC02ODcs
MTkgKzY4OCwxOSBAQCBzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiBJbmxpbmVUZXh0Qm94
OjpoaWdobGlnaHRTdGFydEVuZChIaWdobGlnaHREYXRhICZyYQogICAgIHJldHVybiBjbGFtcGVk
U3RhcnRFbmRGb3JTdGF0ZShyYW5nZURhdGEuc3RhcnRPZmZzZXQoKSwgcmFuZ2VEYXRhLmVuZE9m
ZnNldCgpLCBzdGF0ZSk7CiB9CiAKLWJvb2wgSW5saW5lVGV4dEJveDo6aGFzTWFya2VycygpIGNv
bnN0Citib29sIExlZ2FjeUlubGluZVRleHRCb3g6Omhhc01hcmtlcnMoKSBjb25zdAogewogICAg
IHJldHVybiBjb2xsZWN0TWFya2VkVGV4dHNGb3JEb2N1bWVudE1hcmtlcnMoVGV4dFBhaW50UGhh
c2U6OkRlY29yYXRpb24pLnNpemUoKTsKIH0KIAotdm9pZCBJbmxpbmVUZXh0Qm94OjpwYWludFBs
YXRmb3JtRG9jdW1lbnRNYXJrZXJzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxv
YXRQb2ludCYgYm94T3JpZ2luKQordm9pZCBMZWdhY3lJbmxpbmVUZXh0Qm94OjpwYWludFBsYXRm
b3JtRG9jdW1lbnRNYXJrZXJzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRQ
b2ludCYgYm94T3JpZ2luKQogewogICAgIC8vIFRoaXMgbXVzdCBtYXRjaCBjYWxjdWxhdGVVbmlv
bk9mQWxsRG9jdW1lbnRNYXJrZXJCb3VuZHMoKS4KICAgICBmb3IgKGF1dG8mIG1hcmtlZFRleHQg
OiBzdWJkaXZpZGUoY29sbGVjdE1hcmtlZFRleHRzRm9yRG9jdW1lbnRNYXJrZXJzKFRleHRQYWlu
dFBoYXNlOjpEZWNvcmF0aW9uKSwgT3ZlcmxhcFN0cmF0ZWd5OjpGcm9udG1vc3QpKQogICAgICAg
ICBwYWludFBsYXRmb3JtRG9jdW1lbnRNYXJrZXIoY29udGV4dCwgYm94T3JpZ2luLCBtYXJrZWRU
ZXh0KTsKIH0KIAotRmxvYXRSZWN0IElubGluZVRleHRCb3g6OmNhbGN1bGF0ZVVuaW9uT2ZBbGxE
b2N1bWVudE1hcmtlckJvdW5kcygpIGNvbnN0CitGbG9hdFJlY3QgTGVnYWN5SW5saW5lVGV4dEJv
eDo6Y2FsY3VsYXRlVW5pb25PZkFsbERvY3VtZW50TWFya2VyQm91bmRzKCkgY29uc3QKIHsKICAg
ICAvLyBUaGlzIG11c3QgbWF0Y2ggcGFpbnRQbGF0Zm9ybURvY3VtZW50TWFya2VycygpLgogICAg
IEZsb2F0UmVjdCByZXN1bHQ7CkBAIC03MDgsNyArNzA5LDcgQEAgRmxvYXRSZWN0IElubGluZVRl
eHRCb3g6OmNhbGN1bGF0ZVVuaW9uT2ZBbGxEb2N1bWVudE1hcmtlckJvdW5kcygpIGNvbnN0CiAg
ICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotRmxvYXRSZWN0IElubGluZVRleHRCb3g6OmNhbGN1bGF0
ZURvY3VtZW50TWFya2VyQm91bmRzKGNvbnN0IE1hcmtlZFRleHQmIG1hcmtlZFRleHQpIGNvbnN0
CitGbG9hdFJlY3QgTGVnYWN5SW5saW5lVGV4dEJveDo6Y2FsY3VsYXRlRG9jdW1lbnRNYXJrZXJC
b3VuZHMoY29uc3QgTWFya2VkVGV4dCYgbWFya2VkVGV4dCkgY29uc3QKIHsKICAgICBhdXRvJiBm
b250ID0gbGluZUZvbnQoKTsKICAgICBhdXRvIGFzY2VudCA9IGZvbnQuZm9udE1ldHJpY3MoKS5h
c2NlbnQoKTsKQEAgLTcyNyw3ICs3MjgsNyBAQCBGbG9hdFJlY3QgSW5saW5lVGV4dEJveDo6Y2Fs
Y3VsYXRlRG9jdW1lbnRNYXJrZXJCb3VuZHMoY29uc3QgTWFya2VkVGV4dCYgbWFya2VkVAogICAg
IHJldHVybiBGbG9hdFJlY3QoMCwgeSwgbG9naWNhbFdpZHRoKCksIGhlaWdodCk7CiB9CiAKLXZv
aWQgSW5saW5lVGV4dEJveDo6cGFpbnRQbGF0Zm9ybURvY3VtZW50TWFya2VyKEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRQb2ludCYgYm94T3JpZ2luLCBjb25zdCBNYXJrZWRU
ZXh0JiBtYXJrZWRUZXh0KQordm9pZCBMZWdhY3lJbmxpbmVUZXh0Qm94OjpwYWludFBsYXRmb3Jt
RG9jdW1lbnRNYXJrZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFBvaW50
JiBib3hPcmlnaW4sIGNvbnN0IE1hcmtlZFRleHQmIG1hcmtlZFRleHQpCiB7CiAgICAgLy8gTmV2
ZXIgcHJpbnQgc3BlbGxpbmcvZ3JhbW1hciBtYXJrZXJzICg1MzI3ODg3KQogICAgIGlmIChyZW5k
ZXJlcigpLmRvY3VtZW50KCkucHJpbnRpbmcoKSkKQEAgLTc2NCw3ICs3NjUsNyBAQCB2b2lkIElu
bGluZVRleHRCb3g6OnBhaW50UGxhdGZvcm1Eb2N1bWVudE1hcmtlcihHcmFwaGljc0NvbnRleHQm
IGNvbnRleHQsIGNvbnN0CiAgICAgY29udGV4dC5kcmF3RG90c0ZvckRvY3VtZW50TWFya2VyKGJv
dW5kcywgbGluZVN0eWxlRm9yTWFya2VkVGV4dFR5cGUoKSk7CiB9CiAKLVZlY3RvcjxNYXJrZWRU
ZXh0PiBJbmxpbmVUZXh0Qm94Ojpjb2xsZWN0TWFya2VkVGV4dHNGb3JEcmFnZ2VkQ29udGVudCgp
CitWZWN0b3I8TWFya2VkVGV4dD4gTGVnYWN5SW5saW5lVGV4dEJveDo6Y29sbGVjdE1hcmtlZFRl
eHRzRm9yRHJhZ2dlZENvbnRlbnQoKQogewogICAgIHVzaW5nIERyYWdnZW5kQ29udGVudFJhbmdl
ID0gc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD47CiAgICAgYXV0byBkcmFnZ2VkQ29udGVu
dFJhbmdlcyA9IHJlbmRlcmVyKCkuZHJhZ2dlZENvbnRlbnRSYW5nZXNCZXR3ZWVuT2Zmc2V0cyht
X3N0YXJ0LCBtX3N0YXJ0ICsgbV9sZW4pOwpAQCAtNzc0LDcgKzc3NSw3IEBAIFZlY3RvcjxNYXJr
ZWRUZXh0PiBJbmxpbmVUZXh0Qm94Ojpjb2xsZWN0TWFya2VkVGV4dHNGb3JEcmFnZ2VkQ29udGVu
dCgpCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotVmVjdG9yPE1hcmtlZFRleHQ+IElubGluZVRl
eHRCb3g6OmNvbGxlY3RNYXJrZWRUZXh0c0ZvckRvY3VtZW50TWFya2VycyhUZXh0UGFpbnRQaGFz
ZSBwaGFzZSkgY29uc3QKK1ZlY3RvcjxNYXJrZWRUZXh0PiBMZWdhY3lJbmxpbmVUZXh0Qm94Ojpj
b2xsZWN0TWFya2VkVGV4dHNGb3JEb2N1bWVudE1hcmtlcnMoVGV4dFBhaW50UGhhc2UgcGhhc2Up
IGNvbnN0CiB7CiAgICAgQVNTRVJUX0FSRyhwaGFzZSwgcGhhc2UgPT0gVGV4dFBhaW50UGhhc2U6
OkJhY2tncm91bmQgfHwgcGhhc2UgPT0gVGV4dFBhaW50UGhhc2U6OkZvcmVncm91bmQgfHwgcGhh
c2UgPT0gVGV4dFBhaW50UGhhc2U6OkRlY29yYXRpb24pOwogCkBAIC04NzksNyArODgwLDcgQEAg
VmVjdG9yPE1hcmtlZFRleHQ+IElubGluZVRleHRCb3g6OmNvbGxlY3RNYXJrZWRUZXh0c0ZvckRv
Y3VtZW50TWFya2VycyhUZXh0UGFpbnQKICAgICByZXR1cm4gbWFya2VkVGV4dHM7CiB9CiAKLVZl
Y3RvcjxNYXJrZWRUZXh0PiBJbmxpbmVUZXh0Qm94Ojpjb2xsZWN0TWFya2VkVGV4dHNGb3JIaWdo
bGlnaHRzKFRleHRQYWludFBoYXNlIHBoYXNlKSBjb25zdAorVmVjdG9yPE1hcmtlZFRleHQ+IExl
Z2FjeUlubGluZVRleHRCb3g6OmNvbGxlY3RNYXJrZWRUZXh0c0ZvckhpZ2hsaWdodHMoVGV4dFBh
aW50UGhhc2UgcGhhc2UpIGNvbnN0CiB7CiAgICAgQVNTRVJUX0FSRyhwaGFzZSwgcGhhc2UgPT0g
VGV4dFBhaW50UGhhc2U6OkJhY2tncm91bmQgfHwgcGhhc2UgPT0gVGV4dFBhaW50UGhhc2U6OkZv
cmVncm91bmQgfHwgcGhhc2UgPT0gVGV4dFBhaW50UGhhc2U6OkRlY29yYXRpb24pOwogICAgIFVO
VVNFRF9QQVJBTShwaGFzZSk7CkBAIC05MjgsNyArOTI5LDcgQEAgVmVjdG9yPE1hcmtlZFRleHQ+
IElubGluZVRleHRCb3g6OmNvbGxlY3RNYXJrZWRUZXh0c0ZvckhpZ2hsaWdodHMoVGV4dFBhaW50
UGhhc2UKICAgICByZXR1cm4gbWFya2VkVGV4dHM7CiB9CiAKLUZsb2F0UG9pbnQgSW5saW5lVGV4
dEJveDo6dGV4dE9yaWdpbkZyb21Cb3hSZWN0KGNvbnN0IEZsb2F0UmVjdCYgYm94UmVjdCkgY29u
c3QKK0Zsb2F0UG9pbnQgTGVnYWN5SW5saW5lVGV4dEJveDo6dGV4dE9yaWdpbkZyb21Cb3hSZWN0
KGNvbnN0IEZsb2F0UmVjdCYgYm94UmVjdCkgY29uc3QKIHsKICAgICBGbG9hdFBvaW50IHRleHRP
cmlnaW4geyBib3hSZWN0LngoKSwgYm94UmVjdC55KCkgKyBsaW5lRm9udCgpLmZvbnRNZXRyaWNz
KCkuYXNjZW50KCkgfTsKICAgICBpZiAoYXV0byogY29tYmluZWRUZXh0ID0gdGhpcy0+Y29tYmlu
ZWRUZXh0KCkpIHsKQEAgLTk0Miw3ICs5NDMsNyBAQCBGbG9hdFBvaW50IElubGluZVRleHRCb3g6
OnRleHRPcmlnaW5Gcm9tQm94UmVjdChjb25zdCBGbG9hdFJlY3QmIGJveFJlY3QpIGNvbnN0CiAg
ICAgcmV0dXJuIHRleHRPcmlnaW47CiB9CiAKLXZvaWQgSW5saW5lVGV4dEJveDo6cGFpbnRNYXJr
ZWRUZXh0cyhQYWludEluZm8mIHBhaW50SW5mbywgVGV4dFBhaW50UGhhc2UgcGhhc2UsIGNvbnN0
IEZsb2F0UmVjdCYgYm94UmVjdCwgY29uc3QgVmVjdG9yPFN0eWxlZE1hcmtlZFRleHQ+JiBtYXJr
ZWRUZXh0cywgY29uc3QgRmxvYXRSZWN0JiBkZWNvcmF0aW9uQ2xpcE91dFJlY3QpCit2b2lkIExl
Z2FjeUlubGluZVRleHRCb3g6OnBhaW50TWFya2VkVGV4dHMoUGFpbnRJbmZvJiBwYWludEluZm8s
IFRleHRQYWludFBoYXNlIHBoYXNlLCBjb25zdCBGbG9hdFJlY3QmIGJveFJlY3QsIGNvbnN0IFZl
Y3RvcjxTdHlsZWRNYXJrZWRUZXh0PiYgbWFya2VkVGV4dHMsIGNvbnN0IEZsb2F0UmVjdCYgZGVj
b3JhdGlvbkNsaXBPdXRSZWN0KQogewogICAgIHN3aXRjaCAocGhhc2UpIHsKICAgICBjYXNlIFRl
eHRQYWludFBoYXNlOjpCYWNrZ3JvdW5kOgpAQCAtOTYwLDcgKzk2MSw3IEBAIHZvaWQgSW5saW5l
VGV4dEJveDo6cGFpbnRNYXJrZWRUZXh0cyhQYWludEluZm8mIHBhaW50SW5mbywgVGV4dFBhaW50
UGhhc2UgcGhhc2UsCiAgICAgfQogfQogCi12b2lkIElubGluZVRleHRCb3g6OnBhaW50TWFya2Vk
VGV4dEJhY2tncm91bmQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEZsb2F0UG9pbnQmIGJv
eE9yaWdpbiwgY29uc3QgQ29sb3ImIGNvbG9yLCB1bnNpZ25lZCBjbGFtcGVkU3RhcnRPZmZzZXQs
IHVuc2lnbmVkIGNsYW1wZWRFbmRPZmZzZXQsIE1hcmtlZFRleHRCYWNrZ3JvdW5kU3R5bGUgc3R5
bGUpCit2b2lkIExlZ2FjeUlubGluZVRleHRCb3g6OnBhaW50TWFya2VkVGV4dEJhY2tncm91bmQo
UGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEZsb2F0UG9pbnQmIGJveE9yaWdpbiwgY29uc3Qg
Q29sb3ImIGNvbG9yLCB1bnNpZ25lZCBjbGFtcGVkU3RhcnRPZmZzZXQsIHVuc2lnbmVkIGNsYW1w
ZWRFbmRPZmZzZXQsIE1hcmtlZFRleHRCYWNrZ3JvdW5kU3R5bGUgc3R5bGUpCiB7CiAgICAgaWYg
KGNsYW1wZWRTdGFydE9mZnNldCA+PSBjbGFtcGVkRW5kT2Zmc2V0KQogICAgICAgICByZXR1cm47
CkBAIC05OTcsNyArOTk4LDcgQEAgdm9pZCBJbmxpbmVUZXh0Qm94OjpwYWludE1hcmtlZFRleHRC
YWNrZ3JvdW5kKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBGbG9hdFAKICAgICBjb250ZXh0
LmZpbGxSZWN0KGJhY2tncm91bmRSZWN0LCBjb2xvcik7CiB9CiAKLXZvaWQgSW5saW5lVGV4dEJv
eDo6cGFpbnRNYXJrZWRUZXh0Rm9yZWdyb3VuZChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3Qg
RmxvYXRSZWN0JiBib3hSZWN0LCBjb25zdCBTdHlsZWRNYXJrZWRUZXh0JiBtYXJrZWRUZXh0KQor
dm9pZCBMZWdhY3lJbmxpbmVUZXh0Qm94OjpwYWludE1hcmtlZFRleHRGb3JlZ3JvdW5kKFBhaW50
SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBGbG9hdFJlY3QmIGJveFJlY3QsIGNvbnN0IFN0eWxlZE1h
cmtlZFRleHQmIG1hcmtlZFRleHQpCiB7CiAgICAgaWYgKG1hcmtlZFRleHQuc3RhcnRPZmZzZXQg
Pj0gbWFya2VkVGV4dC5lbmRPZmZzZXQpCiAgICAgICAgIHJldHVybjsKQEAgLTEwMzcsNyArMTAz
OCw3IEBAIHZvaWQgSW5saW5lVGV4dEJveDo6cGFpbnRNYXJrZWRUZXh0Rm9yZWdyb3VuZChQYWlu
dEluZm8mIHBhaW50SW5mbywgY29uc3QgRmxvYXRSCiAgICAgdGV4dFBhaW50ZXIucGFpbnRSYW5n
ZSh0ZXh0UnVuLCBib3hSZWN0LCB0ZXh0T3JpZ2luRnJvbUJveFJlY3QoYm94UmVjdCksIG1hcmtl
ZFRleHQuc3RhcnRPZmZzZXQsIG1hcmtlZFRleHQuZW5kT2Zmc2V0KTsKIH0KIAotdm9pZCBJbmxp
bmVUZXh0Qm94OjpwYWludE1hcmtlZFRleHREZWNvcmF0aW9uKFBhaW50SW5mbyYgcGFpbnRJbmZv
LCBjb25zdCBGbG9hdFJlY3QmIGJveFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgY2xpcE91dFJlY3Qs
IGNvbnN0IFN0eWxlZE1hcmtlZFRleHQmIG1hcmtlZFRleHQpCit2b2lkIExlZ2FjeUlubGluZVRl
eHRCb3g6OnBhaW50TWFya2VkVGV4dERlY29yYXRpb24oUGFpbnRJbmZvJiBwYWludEluZm8sIGNv
bnN0IEZsb2F0UmVjdCYgYm94UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBjbGlwT3V0UmVjdCwgY29u
c3QgU3R5bGVkTWFya2VkVGV4dCYgbWFya2VkVGV4dCkKIHsKICAgICBpZiAobV90cnVuY2F0aW9u
ID09IGNGdWxsVHJ1bmNhdGlvbikKICAgICAgICAgcmV0dXJuOwpAQCAtMTA5Nyw3ICsxMDk4LDcg
QEAgdm9pZCBJbmxpbmVUZXh0Qm94OjpwYWludE1hcmtlZFRleHREZWNvcmF0aW9uKFBhaW50SW5m
byYgcGFpbnRJbmZvLCBjb25zdCBGbG9hdFIKICAgICAgICAgY29udGV4dC5jb25jYXRDVE0ocm90
YXRpb24oYm94UmVjdCwgQ291bnRlcmNsb2Nrd2lzZSkpOwogfQogCi12b2lkIElubGluZVRleHRC
b3g6OnBhaW50Q29tcG9zaXRpb25CYWNrZ3JvdW5kKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25z
dCBGbG9hdFBvaW50JiBib3hPcmlnaW4pCit2b2lkIExlZ2FjeUlubGluZVRleHRCb3g6OnBhaW50
Q29tcG9zaXRpb25CYWNrZ3JvdW5kKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBGbG9hdFBv
aW50JiBib3hPcmlnaW4pCiB7CiAgICAgaWYgKCFyZW5kZXJlcigpLmZyYW1lKCkuZWRpdG9yKCku
Y29tcG9zaXRpb25Vc2VzQ3VzdG9tSGlnaGxpZ2h0cygpKSB7CiAgICAgICAgIHBhaW50TWFya2Vk
VGV4dEJhY2tncm91bmQocGFpbnRJbmZvLCBib3hPcmlnaW4sIENvbXBvc2l0aW9uSGlnaGxpZ2h0
OjpkZWZhdWx0Q29tcG9zaXRpb25GaWxsQ29sb3IsIGNsYW1wZWRPZmZzZXQocmVuZGVyZXIoKS5m
cmFtZSgpLmVkaXRvcigpLmNvbXBvc2l0aW9uU3RhcnQoKSksIGNsYW1wZWRPZmZzZXQocmVuZGVy
ZXIoKS5mcmFtZSgpLmVkaXRvcigpLmNvbXBvc2l0aW9uRW5kKCkpKTsKQEAgLTExMTgsNyArMTEx
OSw3IEBAIHZvaWQgSW5saW5lVGV4dEJveDo6cGFpbnRDb21wb3NpdGlvbkJhY2tncm91bmQoUGFp
bnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEZsb2F0CiAgICAgfQogfQogCi12b2lkIElubGluZVRl
eHRCb3g6OnBhaW50Q29tcG9zaXRpb25VbmRlcmxpbmVzKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBj
b25zdCBGbG9hdFBvaW50JiBib3hPcmlnaW4pIGNvbnN0Cit2b2lkIExlZ2FjeUlubGluZVRleHRC
b3g6OnBhaW50Q29tcG9zaXRpb25VbmRlcmxpbmVzKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25z
dCBGbG9hdFBvaW50JiBib3hPcmlnaW4pIGNvbnN0CiB7CiAgICAgaWYgKG1fdHJ1bmNhdGlvbiA9
PSBjRnVsbFRydW5jYXRpb24pCiAgICAgICAgIHJldHVybjsKQEAgLTExNDksNyArMTE1MCw3IEBA
IHN0YXRpYyBpbmxpbmUgdm9pZCBtaXJyb3JSVExTZWdtZW50KGZsb2F0IGxvZ2ljYWxXaWR0aCwg
VGV4dERpcmVjdGlvbiBkaXJlY3Rpb24sCiAgICAgc3RhcnQgPSBsb2dpY2FsV2lkdGggLSB3aWR0
aCAtIHN0YXJ0OwogfQogCi12b2lkIElubGluZVRleHRCb3g6OnBhaW50Q29tcG9zaXRpb25VbmRl
cmxpbmUoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEZsb2F0UG9pbnQmIGJveE9yaWdpbiwg
Y29uc3QgQ29tcG9zaXRpb25VbmRlcmxpbmUmIHVuZGVybGluZSkgY29uc3QKK3ZvaWQgTGVnYWN5
SW5saW5lVGV4dEJveDo6cGFpbnRDb21wb3NpdGlvblVuZGVybGluZShQYWludEluZm8mIHBhaW50
SW5mbywgY29uc3QgRmxvYXRQb2ludCYgYm94T3JpZ2luLCBjb25zdCBDb21wb3NpdGlvblVuZGVy
bGluZSYgdW5kZXJsaW5lKSBjb25zdAogewogICAgIGlmIChtX3RydW5jYXRpb24gPT0gY0Z1bGxU
cnVuY2F0aW9uKQogICAgICAgICByZXR1cm47CkBAIC0xMTY0LDcgKzExNjUsNyBAQCB2b2lkIElu
bGluZVRleHRCb3g6OnBhaW50Q29tcG9zaXRpb25VbmRlcmxpbmUoUGFpbnRJbmZvJiBwYWludElu
Zm8sIGNvbnN0IEZsb2F0UAogICAgICAgICB1c2VXaG9sZVdpZHRoID0gZmFsc2U7CiAgICAgICAg
IHN0YXJ0ID0gcmVuZGVyZXIoKS53aWR0aChtX3N0YXJ0LCBwYWludFN0YXJ0IC0gbV9zdGFydCwg
dGV4dFBvcygpLCBpc0ZpcnN0TGluZSgpKTsKICAgICB9Ci0gICAgaWYgKHBhaW50RW5kICE9IHVu
ZGVybGluZS5lbmRPZmZzZXQpIHsgICAgICAvLyBlbmQgcG9pbnRzIGF0IHRoZSBsYXN0IGNoYXIs
IG5vdCBwYXN0IGl0CisgICAgaWYgKHBhaW50RW5kICE9IHVuZGVybGluZS5lbmRPZmZzZXQpIHsK
ICAgICAgICAgcGFpbnRFbmQgPSBzdGQ6Om1pbihwYWludEVuZCwgKHVuc2lnbmVkKXVuZGVybGlu
ZS5lbmRPZmZzZXQpOwogICAgICAgICB1c2VXaG9sZVdpZHRoID0gZmFsc2U7CiAgICAgfQpAQCAt
MTE5NywyNiArMTE5OCwyNiBAQCB2b2lkIElubGluZVRleHRCb3g6OnBhaW50Q29tcG9zaXRpb25V
bmRlcmxpbmUoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEZsb2F0UAogICAgIGNvbnRleHQu
ZHJhd0xpbmVGb3JUZXh0KEZsb2F0UmVjdChib3hPcmlnaW4ueCgpICsgc3RhcnQsIGJveE9yaWdp
bi55KCkgKyBsb2dpY2FsSGVpZ2h0KCkgLSBsaW5lVGhpY2tuZXNzLCB3aWR0aCwgbGluZVRoaWNr
bmVzcyksIHJlbmRlcmVyKCkuZG9jdW1lbnQoKS5wcmludGluZygpKTsKIH0KIAotaW50IElubGlu
ZVRleHRCb3g6OmNhcmV0TWluT2Zmc2V0KCkgY29uc3QKK2ludCBMZWdhY3lJbmxpbmVUZXh0Qm94
OjpjYXJldE1pbk9mZnNldCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fc3RhcnQ7CiB9CiAKLWlu
dCBJbmxpbmVUZXh0Qm94OjpjYXJldE1heE9mZnNldCgpIGNvbnN0CitpbnQgTGVnYWN5SW5saW5l
VGV4dEJveDo6Y2FyZXRNYXhPZmZzZXQoKSBjb25zdAogewogICAgIHJldHVybiBtX3N0YXJ0ICsg
bV9sZW47CiB9CiAKLWZsb2F0IElubGluZVRleHRCb3g6OnRleHRQb3MoKSBjb25zdAorZmxvYXQg
TGVnYWN5SW5saW5lVGV4dEJveDo6dGV4dFBvcygpIGNvbnN0CiB7CiAgICAgLy8gV2hlbiBjb21w
dXRpbmcgdGhlIHdpZHRoIG9mIGEgdGV4dCBydW4sIFJlbmRlckJsb2NrOjpjb21wdXRlSW5saW5l
RGlyZWN0aW9uUG9zaXRpb25zRm9yTGluZSgpIGRvZXNuJ3QgaW5jbHVkZSB0aGUgYWN0dWFsIG9m
ZnNldAogICAgIC8vIGZyb20gdGhlIGNvbnRhaW5pbmcgYmxvY2sgZWRnZSBpbiBpdHMgbWVhc3Vy
ZW1lbnQuIHRleHRQb3MoKSBzaG91bGQgYmUgY29uc2lzdGVudCBzbyB0aGUgdGV4dCBhcmUgcmVu
ZGVyZWQgaW4gdGhlIHNhbWUgd2lkdGguCi0gICAgaWYgKGxvZ2ljYWxMZWZ0KCkgPT0gMCkKKyAg
ICBpZiAoIWxvZ2ljYWxMZWZ0KCkpCiAgICAgICAgIHJldHVybiAwOwogICAgIHJldHVybiBsb2dp
Y2FsTGVmdCgpIC0gcm9vdCgpLmxvZ2ljYWxMZWZ0KCk7CiB9CiAKLWludCBJbmxpbmVUZXh0Qm94
OjpvZmZzZXRGb3JQb3NpdGlvbihmbG9hdCBsaW5lT2Zmc2V0LCBib29sIGluY2x1ZGVQYXJ0aWFs
R2x5cGhzKSBjb25zdAoraW50IExlZ2FjeUlubGluZVRleHRCb3g6Om9mZnNldEZvclBvc2l0aW9u
KGZsb2F0IGxpbmVPZmZzZXQsIGJvb2wgaW5jbHVkZVBhcnRpYWxHbHlwaHMpIGNvbnN0CiB7CiAg
ICAgaWYgKGlzTGluZUJyZWFrKCkpCiAgICAgICAgIHJldHVybiAwOwpAQCAtMTIyOSw3ICsxMjMw
LDcgQEAgaW50IElubGluZVRleHRCb3g6Om9mZnNldEZvclBvc2l0aW9uKGZsb2F0IGxpbmVPZmZz
ZXQsIGJvb2wgaW5jbHVkZVBhcnRpYWxHbHlwaHMKICAgICByZXR1cm4gbGluZUZvbnQoKS5vZmZz
ZXRGb3JQb3NpdGlvbihjcmVhdGVUZXh0UnVuKGlnbm9yZUNvbWJpbmVkVGV4dCwgaWdub3JlSHlw
aGVuKSwgbGluZU9mZnNldCAtIGxvZ2ljYWxMZWZ0KCksIGluY2x1ZGVQYXJ0aWFsR2x5cGhzKTsK
IH0KIAotZmxvYXQgSW5saW5lVGV4dEJveDo6cG9zaXRpb25Gb3JPZmZzZXQodW5zaWduZWQgb2Zm
c2V0KSBjb25zdAorZmxvYXQgTGVnYWN5SW5saW5lVGV4dEJveDo6cG9zaXRpb25Gb3JPZmZzZXQo
dW5zaWduZWQgb2Zmc2V0KSBjb25zdAogewogICAgIEFTU0VSVChvZmZzZXQgPj0gbV9zdGFydCk7
CiAgICAgQVNTRVJUKG9mZnNldCA8PSBtX3N0YXJ0ICsgbGVuKCkpOwpAQCAtMTI1Niw3ICsxMjU3
LDcgQEAgZmxvYXQgSW5saW5lVGV4dEJveDo6cG9zaXRpb25Gb3JPZmZzZXQodW5zaWduZWQgb2Zm
c2V0KSBjb25zdAogICAgIHJldHVybiBzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzV2l0aFdyaXRpbmdE
aXJlY3Rpb24oc2VsZWN0aW9uUmVjdCwgcmVuZGVyZXIoKS5kb2N1bWVudCgpLmRldmljZVNjYWxl
RmFjdG9yKCksIHRleHRSdW4ubHRyKCkpLm1heFgoKTsKIH0KIAotVGV4dFJ1biBJbmxpbmVUZXh0
Qm94OjpjcmVhdGVUZXh0UnVuKGJvb2wgaWdub3JlQ29tYmluZWRUZXh0LCBib29sIGlnbm9yZUh5
cGhlbikgY29uc3QKK1RleHRSdW4gTGVnYWN5SW5saW5lVGV4dEJveDo6Y3JlYXRlVGV4dFJ1bihi
b29sIGlnbm9yZUNvbWJpbmVkVGV4dCwgYm9vbCBpZ25vcmVIeXBoZW4pIGNvbnN0CiB7CiAgICAg
Y29uc3QgYXV0byYgc3R5bGUgPSBsaW5lU3R5bGUoKTsKICAgICBUZXh0UnVuIHRleHRSdW4geyB0
ZXh0KGlnbm9yZUNvbWJpbmVkVGV4dCwgaWdub3JlSHlwaGVuKSwgdGV4dFBvcygpLCBleHBhbnNp
b24oKSwgZXhwYW5zaW9uQmVoYXZpb3IoKSwgZGlyZWN0aW9uKCksIGRpck92ZXJyaWRlKCkgfHwg
c3R5bGUucnRsT3JkZXJpbmcoKSA9PSBPcmRlcjo6VmlzdWFsLCAhcmVuZGVyZXIoKS5jYW5Vc2VT
aW1wbGVGb250Q29kZVBhdGgoKSB9OwpAQCAtMTI2NCw3ICsxMjY1LDcgQEAgVGV4dFJ1biBJbmxp
bmVUZXh0Qm94OjpjcmVhdGVUZXh0UnVuKGJvb2wgaWdub3JlQ29tYmluZWRUZXh0LCBib29sIGln
bm9yZUh5cGhlbikKICAgICByZXR1cm4gdGV4dFJ1bjsKIH0KIAotU3RyaW5nIElubGluZVRleHRC
b3g6OnRleHQoYm9vbCBpZ25vcmVDb21iaW5lZFRleHQsIGJvb2wgaWdub3JlSHlwaGVuKSBjb25z
dAorU3RyaW5nIExlZ2FjeUlubGluZVRleHRCb3g6OnRleHQoYm9vbCBpZ25vcmVDb21iaW5lZFRl
eHQsIGJvb2wgaWdub3JlSHlwaGVuKSBjb25zdAogewogICAgIFN0cmluZyByZXN1bHQ7CiAgICAg
aWYgKGF1dG8qIGNvbWJpbmVkVGV4dCA9IHRoaXMtPmNvbWJpbmVkVGV4dCgpKSB7CkBAIC0xMjg1
LDEyICsxMjg2LDEyIEBAIFN0cmluZyBJbmxpbmVUZXh0Qm94Ojp0ZXh0KGJvb2wgaWdub3JlQ29t
YmluZWRUZXh0LCBib29sIGlnbm9yZUh5cGhlbikgY29uc3QKICAgICByZXR1cm4gUmVuZGVyQmxv
Y2s6OnVwZGF0ZVNlY3VyaXR5RGlzY0NoYXJhY3RlcnMobGluZVN0eWxlKCksIFdURk1vdmUocmVz
dWx0KSk7CiB9CiAKLWlubGluZSBjb25zdCBSZW5kZXJDb21iaW5lVGV4dCogSW5saW5lVGV4dEJv
eDo6Y29tYmluZWRUZXh0KCkgY29uc3QKK2lubGluZSBjb25zdCBSZW5kZXJDb21iaW5lVGV4dCog
TGVnYWN5SW5saW5lVGV4dEJveDo6Y29tYmluZWRUZXh0KCkgY29uc3QKIHsKICAgICByZXR1cm4g
bGluZVN0eWxlKCkuaGFzVGV4dENvbWJpbmUoKSAmJiBpczxSZW5kZXJDb21iaW5lVGV4dD4ocmVu
ZGVyZXIoKSkgJiYgZG93bmNhc3Q8UmVuZGVyQ29tYmluZVRleHQ+KHJlbmRlcmVyKCkpLmlzQ29t
YmluZWQoKSA/ICZkb3duY2FzdDxSZW5kZXJDb21iaW5lVGV4dD4ocmVuZGVyZXIoKSkgOiBudWxs
cHRyOwogfQogCi1TaGFkb3dEYXRhKiBJbmxpbmVUZXh0Qm94OjpkZWJ1Z1RleHRTaGFkb3coKQor
U2hhZG93RGF0YSogTGVnYWN5SW5saW5lVGV4dEJveDo6ZGVidWdUZXh0U2hhZG93KCkKIHsKICAg
ICBpZiAoIXJlbmRlcmVyKCkuc2V0dGluZ3MoKS5sZWdhY3lMaW5lTGF5b3V0VmlzdWFsQ292ZXJh
Z2VFbmFibGVkKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMTI5OSw3ICsxMzAwLDcg
QEAgU2hhZG93RGF0YSogSW5saW5lVGV4dEJveDo6ZGVidWdUZXh0U2hhZG93KCkKICAgICByZXR1
cm4gJmRlYnVnVGV4dFNoYWRvdy5nZXQoKTsKIH0KIAotRXhwYW5zaW9uQmVoYXZpb3IgSW5saW5l
VGV4dEJveDo6ZXhwYW5zaW9uQmVoYXZpb3IoKSBjb25zdAorRXhwYW5zaW9uQmVoYXZpb3IgTGVn
YWN5SW5saW5lVGV4dEJveDo6ZXhwYW5zaW9uQmVoYXZpb3IoKSBjb25zdAogewogICAgIEV4cGFu
c2lvbkJlaGF2aW9yIGxlZnRCZWhhdmlvcjsKICAgICBpZiAoZm9yY2VMZWZ0RXhwYW5zaW9uKCkp
CkBAIC0xMzIyLDEyICsxMzIzLDEyIEBAIEV4cGFuc2lvbkJlaGF2aW9yIElubGluZVRleHRCb3g6
OmV4cGFuc2lvbkJlaGF2aW9yKCkgY29uc3QKIAogI2lmIEVOQUJMRShUUkVFX0RFQlVHR0lORykK
IAotY29uc3QgY2hhciogSW5saW5lVGV4dEJveDo6Ym94TmFtZSgpIGNvbnN0Citjb25zdCBjaGFy
KiBMZWdhY3lJbmxpbmVUZXh0Qm94Ojpib3hOYW1lKCkgY29uc3QKIHsKICAgICByZXR1cm4gIklu
bGluZVRleHRCb3giOwogfQogCi12b2lkIElubGluZVRleHRCb3g6Om91dHB1dExpbmVCb3goVGV4
dFN0cmVhbSYgc3RyZWFtLCBib29sIG1hcmssIGludCBkZXB0aCkgY29uc3QKK3ZvaWQgTGVnYWN5
SW5saW5lVGV4dEJveDo6b3V0cHV0TGluZUJveChUZXh0U3RyZWFtJiBzdHJlYW0sIGJvb2wgbWFy
aywgaW50IGRlcHRoKSBjb25zdAogewogICAgIHN0cmVhbSA8PCAiLS0tLS0tLS0gIiA8PCAoaXNE
aXJ0eSgpID8gIkQiIDogIi0iKSA8PCAiLSI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVn
YWN5SW5saW5lVGV4dEJveC5oCnNpbWlsYXJpdHkgaW5kZXggOTAlCnJlbmFtZSBmcm9tIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmgKcmVuYW1lIHRvIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9MZWdhY3lJbmxpbmVUZXh0Qm94LmgKaW5kZXggMDk3ZTgwZjQ1ZmI2Li5l
NTcwNjY4NjYyOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVU
ZXh0Qm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xlZ2FjeUlubGluZVRleHRC
b3guaApAQCAtMzksMjQgKzM5LDI0IEBAIHN0cnVjdCBUZXh0UGFpbnRTdHlsZTsKIGNvbnN0IHVu
c2lnbmVkIHNob3J0IGNOb1RydW5jYXRpb24gPSBVU0hSVF9NQVg7CiBjb25zdCB1bnNpZ25lZCBz
aG9ydCBjRnVsbFRydW5jYXRpb24gPSBVU0hSVF9NQVggLSAxOwogCi1jbGFzcyBJbmxpbmVUZXh0
Qm94IDogcHVibGljIExlZ2FjeUlubGluZUJveCB7Ci0gICAgV1RGX01BS0VfSVNPX0FMTE9DQVRF
RChJbmxpbmVUZXh0Qm94KTsKK2NsYXNzIExlZ2FjeUlubGluZVRleHRCb3ggOiBwdWJsaWMgTGVn
YWN5SW5saW5lQm94IHsKKyAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKExlZ2FjeUlubGluZVRl
eHRCb3gpOwogcHVibGljOgotICAgIGV4cGxpY2l0IElubGluZVRleHRCb3goUmVuZGVyVGV4dCYg
cmVuZGVyZXIpCisgICAgZXhwbGljaXQgTGVnYWN5SW5saW5lVGV4dEJveChSZW5kZXJUZXh0JiBy
ZW5kZXJlcikKICAgICAgICAgOiBMZWdhY3lJbmxpbmVCb3gocmVuZGVyZXIpCiAgICAgewogICAg
ICAgICBzZXRCZWhhdmVzTGlrZVRleHQodHJ1ZSk7CiAgICAgfQogCi0gICAgdmlydHVhbCB+SW5s
aW5lVGV4dEJveCgpOworICAgIHZpcnR1YWwgfkxlZ2FjeUlubGluZVRleHRCb3goKTsKIAogICAg
IFJlbmRlclRleHQmIHJlbmRlcmVyKCkgY29uc3QgeyByZXR1cm4gZG93bmNhc3Q8UmVuZGVyVGV4
dD4oTGVnYWN5SW5saW5lQm94OjpyZW5kZXJlcigpKTsgfQogICAgIGNvbnN0IFJlbmRlclN0eWxl
JiBsaW5lU3R5bGUoKSBjb25zdCB7IHJldHVybiBpc0ZpcnN0TGluZSgpID8gcmVuZGVyZXIoKS5m
aXJzdExpbmVTdHlsZSgpIDogcmVuZGVyZXIoKS5zdHlsZSgpOyB9CiAKLSAgICBJbmxpbmVUZXh0
Qm94KiBwcmV2VGV4dEJveCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJldlRleHRCb3g7IH0KLSAgICBJ
bmxpbmVUZXh0Qm94KiBuZXh0VGV4dEJveCgpIGNvbnN0IHsgcmV0dXJuIG1fbmV4dFRleHRCb3g7
IH0KLSAgICB2b2lkIHNldE5leHRUZXh0Qm94KElubGluZVRleHRCb3gqIG4pIHsgbV9uZXh0VGV4
dEJveCA9IG47IH0KLSAgICB2b2lkIHNldFByZXZpb3VzVGV4dEJveChJbmxpbmVUZXh0Qm94KiBw
KSB7IG1fcHJldlRleHRCb3ggPSBwOyB9CisgICAgTGVnYWN5SW5saW5lVGV4dEJveCogcHJldlRl
eHRCb3goKSBjb25zdCB7IHJldHVybiBtX3ByZXZUZXh0Qm94OyB9CisgICAgTGVnYWN5SW5saW5l
VGV4dEJveCogbmV4dFRleHRCb3goKSBjb25zdCB7IHJldHVybiBtX25leHRUZXh0Qm94OyB9Cisg
ICAgdm9pZCBzZXROZXh0VGV4dEJveChMZWdhY3lJbmxpbmVUZXh0Qm94KiBuKSB7IG1fbmV4dFRl
eHRCb3ggPSBuOyB9CisgICAgdm9pZCBzZXRQcmV2aW91c1RleHRCb3goTGVnYWN5SW5saW5lVGV4
dEJveCogcCkgeyBtX3ByZXZUZXh0Qm94ID0gcDsgfQogCiAgICAgYm9vbCBoYXNUZXh0Q29udGVu
dCgpIGNvbnN0OwogCkBAIC05MCw3ICs5MCw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBMZWdhY3lJ
bmxpbmVCb3g6OmZvcmNlTGVmdEV4cGFuc2lvbjsKICAgICB1c2luZyBMZWdhY3lJbmxpbmVCb3g6
OnNldEZvcmNlTGVmdEV4cGFuc2lvbjsKIAotICAgIHN0YXRpYyBpbmxpbmUgYm9vbCBjb21wYXJl
QnlTdGFydChjb25zdCBJbmxpbmVUZXh0Qm94KiBmaXJzdCwgY29uc3QgSW5saW5lVGV4dEJveCog
c2Vjb25kKSB7IHJldHVybiBmaXJzdC0+c3RhcnQoKSA8IHNlY29uZC0+c3RhcnQoKTsgfQorICAg
IHN0YXRpYyBpbmxpbmUgYm9vbCBjb21wYXJlQnlTdGFydChjb25zdCBMZWdhY3lJbmxpbmVUZXh0
Qm94KiBmaXJzdCwgY29uc3QgTGVnYWN5SW5saW5lVGV4dEJveCogc2Vjb25kKSB7IHJldHVybiBm
aXJzdC0+c3RhcnQoKSA8IHNlY29uZC0+c3RhcnQoKTsgfQogCiAgICAgTGF5b3V0VW5pdCBiYXNl
bGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSkgY29uc3QgZmluYWw7CiAgICAgTGF5b3V0VW5pdCBs
aW5lSGVpZ2h0KCkgY29uc3QgZmluYWw7CkBAIC0xOTksOCArMTk5LDggQEAgcHJpdmF0ZToKIAog
ICAgIHZvaWQgYmVoYXZlc0xpa2VUZXh0KCkgY29uc3QgPSBkZWxldGU7CiAKLSAgICBJbmxpbmVU
ZXh0Qm94KiBtX3ByZXZUZXh0Qm94IHsgbnVsbHB0ciB9OyAvLyBUaGUgcHJldmlvdXMgYm94IHRo
YXQgYWxzbyB1c2VzIG91ciBSZW5kZXJPYmplY3QKLSAgICBJbmxpbmVUZXh0Qm94KiBtX25leHRU
ZXh0Qm94IHsgbnVsbHB0ciB9OyAvLyBUaGUgbmV4dCBib3ggdGhhdCBhbHNvIHVzZXMgb3VyIFJl
bmRlck9iamVjdAorICAgIExlZ2FjeUlubGluZVRleHRCb3gqIG1fcHJldlRleHRCb3ggeyBudWxs
cHRyIH07IC8vIFRoZSBwcmV2aW91cyBib3ggdGhhdCBhbHNvIHVzZXMgb3VyIFJlbmRlck9iamVj
dAorICAgIExlZ2FjeUlubGluZVRleHRCb3gqIG1fbmV4dFRleHRCb3ggeyBudWxscHRyIH07IC8v
IFRoZSBuZXh0IGJveCB0aGF0IGFsc28gdXNlcyBvdXIgUmVuZGVyT2JqZWN0CiAKICAgICB1bnNp
Z25lZCBtX3N0YXJ0IHsgMCB9OwogICAgIHVuc2lnbmVkIHNob3J0IG1fbGVuIHsgMCB9OwpAQCAt
MjE0LDQgKzIxNCw0IEBAIExheW91dFJlY3Qgc25hcHBlZFNlbGVjdGlvblJlY3QoY29uc3QgTGF5
b3V0UmVjdCYsIGZsb2F0IGxvZ2ljYWxSaWdodCwgZmxvYXQgc2VsCiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKIAotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19JTkxJTkVfQk9YKElubGluZVRleHRC
b3gsIGlzSW5saW5lVGV4dEJveCgpKQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19JTkxJTkVfQk9Y
KExlZ2FjeUlubGluZVRleHRCb3gsIGlzSW5saW5lVGV4dEJveCgpKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xlZ2FjeUxpbmVMYXlvdXQuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0xlZ2FjeUxpbmVMYXlvdXQuY3BwCmluZGV4IDkwZjU2OTAxZTYxYy4uNTg2
NTIyZDU4NWIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVnYWN5TGlu
ZUxheW91dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xlZ2FjeUxpbmVMYXlv
dXQuY3BwCkBAIC0zMiw4ICszMiw4IEBACiAjaW5jbHVkZSAiSFRNTFBhcnNlcklkaW9tcy5oIgog
I2luY2x1ZGUgIklubGluZUVsZW1lbnRCb3guaCIKICNpbmNsdWRlICJJbmxpbmVJdGVyYXRvci5o
IgotI2luY2x1ZGUgIklubGluZVRleHRCb3guaCIKICNpbmNsdWRlICJJbmxpbmVUZXh0Qm94U3R5
bGUuaCIKKyNpbmNsdWRlICJMZWdhY3lJbmxpbmVUZXh0Qm94LmgiCiAjaW5jbHVkZSAiTGluZUxh
eW91dFN0YXRlLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlJlbmRlckJsb2Nr
Rmxvdy5oIgpAQCAtMzI0LDggKzMyNCw4IEBAIExlZ2FjeVJvb3RJbmxpbmVCb3gqIExlZ2FjeUxp
bmVMYXlvdXQ6OmNvbnN0cnVjdExpbmUoQmlkaVJ1bkxpc3Q8QmlkaVJ1bj4mIGJpZGlSCiAgICAg
ICAgIGJvb2wgdmlzdWFsbHlPcmRlcmVkID0gci0+cmVuZGVyZXIoKS5zdHlsZSgpLnJ0bE9yZGVy
aW5nKCkgPT0gT3JkZXI6OlZpc3VhbDsKICAgICAgICAgYm94LT5zZXRCaWRpTGV2ZWwoci0+bGV2
ZWwoKSk7CiAKLSAgICAgICAgaWYgKGlzPElubGluZVRleHRCb3g+KCpib3gpKSB7Ci0gICAgICAg
ICAgICBhdXRvJiB0ZXh0Qm94ID0gZG93bmNhc3Q8SW5saW5lVGV4dEJveD4oKmJveCk7CisgICAg
ICAgIGlmIChpczxMZWdhY3lJbmxpbmVUZXh0Qm94PigqYm94KSkgeworICAgICAgICAgICAgYXV0
byYgdGV4dEJveCA9IGRvd25jYXN0PExlZ2FjeUlubGluZVRleHRCb3g+KCpib3gpOwogICAgICAg
ICAgICAgdGV4dEJveC5zZXRTdGFydChyLT5tX3N0YXJ0KTsKICAgICAgICAgICAgIHRleHRCb3gu
c2V0TGVuKHItPm1fc3RvcCAtIHItPm1fc3RhcnQpOwogICAgICAgICAgICAgdGV4dEJveC5zZXRE
aXJPdmVycmlkZShyLT5kaXJPdmVycmlkZSh2aXN1YWxseU9yZGVyZWQpKTsKQEAgLTQ4NSw3ICs0
ODUsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgc2V0TG9naWNhbFdpZHRoRm9yVGV4dFJ1bihMZWdh
Y3lSb290SW5saW5lQm94KiBsaW5lQm94LCBCaWRpUgogICAgIH0KICAgICAKICAgICBMYXlvdXRV
bml0IGh5cGhlbldpZHRoOwotICAgIGlmIChkb3duY2FzdDxJbmxpbmVUZXh0Qm94PigqcnVuLT5i
b3goKSkuaGFzSHlwaGVuKCkpCisgICAgaWYgKGRvd25jYXN0PExlZ2FjeUlubGluZVRleHRCb3g+
KCpydW4tPmJveCgpKS5oYXNIeXBoZW4oKSkKICAgICAgICAgaHlwaGVuV2lkdGggPSBtZWFzdXJl
SHlwaGVuV2lkdGgocmVuZGVyZXIsIGZvbnQsICZmYWxsYmFja0ZvbnRzKTsKIAogICAgIGZsb2F0
IG1lYXN1cmVkV2lkdGggPSAwOwpAQCAtNTM4LDcgKzUzOCw3IEBAIHN0YXRpYyBpbmxpbmUgdm9p
ZCBzZXRMb2dpY2FsV2lkdGhGb3JUZXh0UnVuKExlZ2FjeVJvb3RJbmxpbmVCb3gqIGxpbmVCb3gs
IEJpZGlSCiAgICAgcnVuLT5ib3goKS0+c2V0TG9naWNhbFdpZHRoKG1lYXN1cmVkV2lkdGggKyBo
eXBoZW5XaWR0aCk7CiAgICAgaWYgKCFmYWxsYmFja0ZvbnRzLmlzRW1wdHkoKSkgewogICAgICAg
ICBBU1NFUlQocnVuLT5ib3goKS0+YmVoYXZlc0xpa2VUZXh0KCkpOwotICAgICAgICBHbHlwaE92
ZXJmbG93QW5kRmFsbGJhY2tGb250c01hcDo6aXRlcmF0b3IgaXQgPSB0ZXh0Qm94RGF0YU1hcC5h
ZGQoZG93bmNhc3Q8SW5saW5lVGV4dEJveD4ocnVuLT5ib3goKSksIHN0ZDo6bWFrZV9wYWlyKFZl
Y3Rvcjxjb25zdCBGb250Kj4oKSwgR2x5cGhPdmVyZmxvdygpKSkuaXRlcmF0b3I7CisgICAgICAg
IEdseXBoT3ZlcmZsb3dBbmRGYWxsYmFja0ZvbnRzTWFwOjppdGVyYXRvciBpdCA9IHRleHRCb3hE
YXRhTWFwLmFkZChkb3duY2FzdDxMZWdhY3lJbmxpbmVUZXh0Qm94PihydW4tPmJveCgpKSwgc3Rk
OjptYWtlX3BhaXIoVmVjdG9yPGNvbnN0IEZvbnQqPigpLCBHbHlwaE92ZXJmbG93KCkpKS5pdGVy
YXRvcjsKICAgICAgICAgQVNTRVJUKGl0LT52YWx1ZS5maXJzdC5pc0VtcHR5KCkpOwogICAgICAg
ICBpdC0+dmFsdWUuZmlyc3QgPSBjb3B5VG9WZWN0b3IoZmFsbGJhY2tGb250cyk7CiAgICAgICAg
IHJ1bi0+Ym94KCktPnBhcmVudCgpLT5jbGVhckRlc2NlbmRhbnRzSGF2ZVNhbWVMaW5lSGVpZ2h0
QW5kQmFzZWxpbmUoKTsKQEAgLTU0NiwxMSArNTQ2LDExIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBz
ZXRMb2dpY2FsV2lkdGhGb3JUZXh0UnVuKExlZ2FjeVJvb3RJbmxpbmVCb3gqIGxpbmVCb3gsIEJp
ZGlSCiAKICAgICAvLyBJbmNsdWRlIHRleHQgZGVjb3JhdGlvbiB2aXN1YWwgb3ZlcmZsb3cgYXMg
cGFydCBvZiB0aGUgZ2x5cGggb3ZlcmZsb3cuCiAgICAgaWYgKCFyZW5kZXJlci5zdHlsZSgpLnRl
eHREZWNvcmF0aW9uc0luRWZmZWN0KCkuaXNFbXB0eSgpKQotICAgICAgICBnbHlwaE92ZXJmbG93
LmV4dGVuZFRvKHZpc3VhbE92ZXJmbG93Rm9yRGVjb3JhdGlvbnMocnVuLT5ib3goKS0+bGluZVN0
eWxlKCksIGRvd25jYXN0PElubGluZVRleHRCb3g+KHJ1bi0+Ym94KCkpKSk7CisgICAgICAgIGds
eXBoT3ZlcmZsb3cuZXh0ZW5kVG8odmlzdWFsT3ZlcmZsb3dGb3JEZWNvcmF0aW9ucyhydW4tPmJv
eCgpLT5saW5lU3R5bGUoKSwgZG93bmNhc3Q8TGVnYWN5SW5saW5lVGV4dEJveD4ocnVuLT5ib3go
KSkpKTsKIAogICAgIGlmICghZ2x5cGhPdmVyZmxvdy5pc0VtcHR5KCkpIHsKICAgICAgICAgQVNT
RVJUKHJ1bi0+Ym94KCktPmJlaGF2ZXNMaWtlVGV4dCgpKTsKLSAgICAgICAgR2x5cGhPdmVyZmxv
d0FuZEZhbGxiYWNrRm9udHNNYXA6Oml0ZXJhdG9yIGl0ID0gdGV4dEJveERhdGFNYXAuYWRkKGRv
d25jYXN0PElubGluZVRleHRCb3g+KHJ1bi0+Ym94KCkpLCBzdGQ6Om1ha2VfcGFpcihWZWN0b3I8
Y29uc3QgRm9udCo+KCksIEdseXBoT3ZlcmZsb3coKSkpLml0ZXJhdG9yOworICAgICAgICBHbHlw
aE92ZXJmbG93QW5kRmFsbGJhY2tGb250c01hcDo6aXRlcmF0b3IgaXQgPSB0ZXh0Qm94RGF0YU1h
cC5hZGQoZG93bmNhc3Q8TGVnYWN5SW5saW5lVGV4dEJveD4ocnVuLT5ib3goKSksIHN0ZDo6bWFr
ZV9wYWlyKFZlY3Rvcjxjb25zdCBGb250Kj4oKSwgR2x5cGhPdmVyZmxvdygpKSkuaXRlcmF0b3I7
CiAgICAgICAgIGl0LT52YWx1ZS5zZWNvbmQgPSBnbHlwaE92ZXJmbG93OwogICAgICAgICBydW4t
PmJveCgpLT5jbGVhcktub3duVG9IYXZlTm9PdmVyZmxvdygpOwogICAgIH0KQEAgLTYxMyw3ICs2
MTMsNyBAQCB2b2lkIExlZ2FjeUxpbmVMYXlvdXQ6OmNvbXB1dGVFeHBhbnNpb25Gb3JKdXN0aWZp
ZWRUZXh0KEJpZGlSdW4qIGZpcnN0UnVuLCBCaWRpUgogICAgICAgICAgICAgCiAgICAgICAgICAg
ICAvLyBPbmx5IGp1c3RpZnkgdGV4dCBpZiB3aGl0ZXNwYWNlIGlzIGNvbGxhcHNlZC4KICAgICAg
ICAgICAgIGlmIChydW4tPnJlbmRlcmVyKCkuc3R5bGUoKS5jb2xsYXBzZVdoaXRlU3BhY2UoKSkg
ewotICAgICAgICAgICAgICAgIElubGluZVRleHRCb3gmIHRleHRCb3ggPSBkb3duY2FzdDxJbmxp
bmVUZXh0Qm94PigqcnVuLT5ib3goKSk7CisgICAgICAgICAgICAgICAgTGVnYWN5SW5saW5lVGV4
dEJveCYgdGV4dEJveCA9IGRvd25jYXN0PExlZ2FjeUlubGluZVRleHRCb3g+KCpydW4tPmJveCgp
KTsKICAgICAgICAgICAgICAgICBmbG9hdCBleHBhbnNpb24gPSAoYXZhaWxhYmxlTG9naWNhbFdp
ZHRoIC0gdG90YWxMb2dpY2FsV2lkdGgpICogb3Bwb3J0dW5pdGllc0luUnVuIC8gZXhwYW5zaW9u
T3Bwb3J0dW5pdHlDb3VudDsKICAgICAgICAgICAgICAgICB0ZXh0Qm94LnNldEV4cGFuc2lvbihl
eHBhbnNpb24pOwogICAgICAgICAgICAgICAgIHRvdGFsTG9naWNhbFdpZHRoICs9IGV4cGFuc2lv
bjsKQEAgLTcxNyw3ICs3MTcsNyBAQCB2b2lkIExlZ2FjeUxpbmVMYXlvdXQ6OmNvbXB1dGVJbmxp
bmVEaXJlY3Rpb25Qb3NpdGlvbnNGb3JMaW5lKExlZ2FjeVJvb3RJbmxpbmVCbwogICAgIGxpbmVC
b3gtPnBsYWNlQm94ZXNJbklubGluZURpcmVjdGlvbihsaW5lTG9naWNhbExlZnQsIG5lZWRzV29y
ZFNwYWNpbmcpOwogfQogCi1zdGF0aWMgaW5saW5lIEV4cGFuc2lvbkJlaGF2aW9yIGV4cGFuc2lv
bkJlaGF2aW9yRm9ySW5saW5lVGV4dEJveChSZW5kZXJCbG9ja0Zsb3cmIGJsb2NrLCBJbmxpbmVU
ZXh0Qm94JiB0ZXh0Qm94LCBCaWRpUnVuKiBwcmV2aW91c1J1biwgQmlkaVJ1biogbmV4dFJ1biwg
VGV4dEFsaWduTW9kZSB0ZXh0QWxpZ24sIGJvb2wgaXNBZnRlckV4cGFuc2lvbikKK3N0YXRpYyBp
bmxpbmUgRXhwYW5zaW9uQmVoYXZpb3IgZXhwYW5zaW9uQmVoYXZpb3JGb3JJbmxpbmVUZXh0Qm94
KFJlbmRlckJsb2NrRmxvdyYgYmxvY2ssIExlZ2FjeUlubGluZVRleHRCb3gmIHRleHRCb3gsIEJp
ZGlSdW4qIHByZXZpb3VzUnVuLCBCaWRpUnVuKiBuZXh0UnVuLCBUZXh0QWxpZ25Nb2RlIHRleHRB
bGlnbiwgYm9vbCBpc0FmdGVyRXhwYW5zaW9uKQogewogICAgIC8vIFRhdGVjaHV5b2tvIGlzIG1v
ZGVsZWQgYXMgdGhlIE9iamVjdCBSZXBsYWNlbWVudCBDaGFyYWN0ZXIgKFUrRkZGQyksIHdoaWNo
IGNhbiBuZXZlciBoYXZlIGV4cGFuc2lvbiBvcHBvcnR1bml0aWVzIGluc2lkZSBub3IgaW50cmlu
c2ljYWxseSBhZGphY2VudCB0byBpdC4KICAgICBpZiAodGV4dEJveC5yZW5kZXJlcigpLnN0eWxl
KCkudGV4dENvbWJpbmUoKSA9PSBUZXh0Q29tYmluZTo6SG9yaXpvbnRhbCkKQEAgLTczMiw3ICs3
MzIsNyBAQCBzdGF0aWMgaW5saW5lIEV4cGFuc2lvbkJlaGF2aW9yIGV4cGFuc2lvbkJlaGF2aW9y
Rm9ySW5saW5lVGV4dEJveChSZW5kZXJCbG9ja0ZsbwogICAgICAgICAgICAgYXV0byYgcnVieUJh
c2UgPSAqZG93bmNhc3Q8UmVuZGVyUnVieVJ1bj4obmV4dFJ1bi0+cmVuZGVyZXIoKSkucnVieUJh
c2UoKTsKICAgICAgICAgICAgIGlmIChydWJ5QmFzZS5maXJzdFJvb3RCb3goKSAmJiAhcnVieUJh
c2UuZmlyc3RSb290Qm94KCktPm5leHRSb290Qm94KCkpIHsKICAgICAgICAgICAgICAgICBpZiAo
YXV0byogbGVhZkNoaWxkID0gcnVieUJhc2UuZmlyc3RSb290Qm94KCktPmZpcnN0TGVhZkRlc2Nl
bmRhbnQoKSkgewotICAgICAgICAgICAgICAgICAgICBpZiAoaXM8SW5saW5lVGV4dEJveD4oKmxl
YWZDaGlsZCkpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGlzPExlZ2FjeUlubGluZVRleHRC
b3g+KCpsZWFmQ2hpbGQpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBGSVhNRTogVGhp
cyBsZWZ0RXhwYW5zaW9uT3Bwb3J0dW5pdHkgZG9lc24ndCBhY3R1YWxseSB3b3JrIGJlY2F1c2Ug
aXQgZG9lc24ndCBwZXJmb3JtIHRoZSBVQkEKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChG
b250Q2FzY2FkZTo6bGVmdEV4cGFuc2lvbk9wcG9ydHVuaXR5KGRvd25jYXN0PFJlbmRlclRleHQ+
KGxlYWZDaGlsZC0+cmVuZGVyZXIoKSkuc3RyaW5nVmlldygpLCBsZWFmQ2hpbGQtPmRpcmVjdGlv
bigpKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFJpZ2h0RXhwYW5zaW9uID0g
dHJ1ZTsKQEAgLTc0Nyw3ICs3NDcsNyBAQCBzdGF0aWMgaW5saW5lIEV4cGFuc2lvbkJlaGF2aW9y
IGV4cGFuc2lvbkJlaGF2aW9yRm9ySW5saW5lVGV4dEJveChSZW5kZXJCbG9ja0ZsbwogICAgICAg
ICAgICAgYXV0byYgcnVieUJhc2UgPSAqZG93bmNhc3Q8UmVuZGVyUnVieVJ1bj4ocHJldmlvdXNS
dW4tPnJlbmRlcmVyKCkpLnJ1YnlCYXNlKCk7CiAgICAgICAgICAgICBpZiAocnVieUJhc2UuZmly
c3RSb290Qm94KCkgJiYgIXJ1YnlCYXNlLmZpcnN0Um9vdEJveCgpLT5uZXh0Um9vdEJveCgpKSB7
CiAgICAgICAgICAgICAgICAgaWYgKGF1dG8qIGxlYWZDaGlsZCA9IHJ1YnlCYXNlLmZpcnN0Um9v
dEJveCgpLT5sYXN0TGVhZkRlc2NlbmRhbnQoKSkgewotICAgICAgICAgICAgICAgICAgICBpZiAo
aXM8SW5saW5lVGV4dEJveD4oKmxlYWZDaGlsZCkpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYg
KGlzPExlZ2FjeUlubGluZVRleHRCb3g+KCpsZWFmQ2hpbGQpKSB7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyBGSVhNRTogVGhpcyBsZWZ0RXhwYW5zaW9uT3Bwb3J0dW5pdHkgZG9lc24ndCBh
Y3R1YWxseSB3b3JrIGJlY2F1c2UgaXQgZG9lc24ndCBwZXJmb3JtIHRoZSBVQkEKICAgICAgICAg
ICAgICAgICAgICAgICAgIGlmIChGb250Q2FzY2FkZTo6cmlnaHRFeHBhbnNpb25PcHBvcnR1bml0
eShkb3duY2FzdDxSZW5kZXJUZXh0PihsZWFmQ2hpbGQtPnJlbmRlcmVyKCkpLnN0cmluZ1ZpZXco
KSwgbGVhZkNoaWxkLT5kaXJlY3Rpb24oKSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzZXRMZWZ0RXhwYW5zaW9uID0gdHJ1ZTsKQEAgLTc3Niw3ICs3NzYsNyBAQCBzdGF0aWMgaW5s
aW5lIEV4cGFuc2lvbkJlaGF2aW9yIGV4cGFuc2lvbkJlaGF2aW9yRm9ySW5saW5lVGV4dEJveChS
ZW5kZXJCbG9ja0ZsbwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXN0YXRpYyBpbmxpbmUgdm9p
ZCBhcHBseUV4cGFuc2lvbkJlaGF2aW9yKElubGluZVRleHRCb3gmIHRleHRCb3gsIEV4cGFuc2lv
bkJlaGF2aW9yIGV4cGFuc2lvbkJlaGF2aW9yKQorc3RhdGljIGlubGluZSB2b2lkIGFwcGx5RXhw
YW5zaW9uQmVoYXZpb3IoTGVnYWN5SW5saW5lVGV4dEJveCYgdGV4dEJveCwgRXhwYW5zaW9uQmVo
YXZpb3IgZXhwYW5zaW9uQmVoYXZpb3IpCiB7CiAgICAgc3dpdGNoIChleHBhbnNpb25CZWhhdmlv
ciAmIExlZnRFeHBhbnNpb25NYXNrKSB7CiAgICAgY2FzZSBGb3JjZUxlZnRFeHBhbnNpb246CkBA
IC04NTMsNyArODUzLDcgQEAgQmlkaVJ1biogTGVnYWN5TGluZUxheW91dDo6Y29tcHV0ZUlubGlu
ZURpcmVjdGlvblBvc2l0aW9uc0ZvclNlZ21lbnQoTGVnYWN5Um9vdEkKICAgICBib29sIGlzQWZ0
ZXJFeHBhbnNpb24gPSBpczxSZW5kZXJSdWJ5QmFzZT4obV9mbG93KSA/IGRvd25jYXN0PFJlbmRl
clJ1YnlCYXNlPihtX2Zsb3cpLmlzQWZ0ZXJFeHBhbnNpb24oKSA6IHRydWU7CiAgICAgVmVjdG9y
PHVuc2lnbmVkLCAxNj4gZXhwYW5zaW9uT3Bwb3J0dW5pdGllczsKIAotICAgIEhhc2hNYXA8SW5s
aW5lVGV4dEJveCosIExheW91dFVuaXQ+IGxvZ2ljYWxTcGFjaW5nRm9ySW5saW5lVGV4dEJveGVz
OworICAgIEhhc2hNYXA8TGVnYWN5SW5saW5lVGV4dEJveCosIExheW91dFVuaXQ+IGxvZ2ljYWxT
cGFjaW5nRm9ySW5saW5lVGV4dEJveGVzOwogICAgIGF1dG8gY29sbGVjdFNwYWNpbmdMb2dpY2Fs
V2lkdGhzID0gWyZdICgpIHsKICAgICAgICAgYXV0byB0b3RhbFNwYWNpbmdXaWR0aCA9IExheW91
dFVuaXQgeyB9OwogICAgICAgICAvLyBDb2xsZWN0IHRoZSBzcGFjaW5nIHBvc2l0aW9ucyAobWFy
Z2luLCBib3JkZXIgcGFkZGluZykgZm9yIHRoZSB0ZXh0Ym94ZXMgYnkgdHJhdmVyc2luZyB0aGUg
aW5saW5lIHRyZWUgb2YgdGhlIGN1cnJlbnQgbGluZS4KQEAgLTg2MSw3ICs4NjEsNyBAQCBCaWRp
UnVuKiBMZWdhY3lMaW5lTGF5b3V0Ojpjb21wdXRlSW5saW5lRGlyZWN0aW9uUG9zaXRpb25zRm9y
U2VnbWVudChMZWdhY3lSb290SQogICAgICAgICBxdWV1ZS5hcHBlbmQobGluZUJveCk7CiAgICAg
ICAgIC8vIDEuIFZpc2l0IGVhY2ggaW5saW5lIGJveCBpbiBhIHByZW9yZGVyIGZhc2hpb24KICAg
ICAgICAgLy8gMi4gQWNjdW11bGF0ZSB0aGUgc3BhY2luZyB3aGVuIHdlIGZpbmQgYW4gTGVnYWN5
SW5saW5lRmxvd0JveCAoaW5saW5lIGNvbnRhaW5lciBlLmcuIHNwYW4pCi0gICAgICAgIC8vIDMu
IEFkZCB0aGUgSW5saW5lVGV4dEJveGVzIHRvIHRoZSBoYXNobWFwCisgICAgICAgIC8vIDMuIEFk
ZCB0aGUgTGVnYWN5SW5saW5lVGV4dEJveGVzIHRvIHRoZSBoYXNobWFwCiAgICAgICAgIHdoaWxl
ICghcXVldWUuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICB3aGlsZSAodHJ1ZSkgewogICAgICAg
ICAgICAgICAgIGF1dG8qIGlubGluZUJveCA9IHF1ZXVlLmxhc3QoKTsKQEAgLTg3NCw4ICs4NzQs
OCBAQCBCaWRpUnVuKiBMZWdhY3lMaW5lTGF5b3V0Ojpjb21wdXRlSW5saW5lRGlyZWN0aW9uUG9z
aXRpb25zRm9yU2VnbWVudChMZWdhY3lSb290SQogICAgICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICBpZiAoaXM8SW5saW5lVGV4dEJveD4oaW5saW5lQm94KSkKLSAgICAgICAgICAgICAgICAgICAg
bG9naWNhbFNwYWNpbmdGb3JJbmxpbmVUZXh0Qm94ZXMuYWRkKGRvd25jYXN0PElubGluZVRleHRC
b3g+KGlubGluZUJveCksIHRvdGFsU3BhY2luZ1dpZHRoKTsKKyAgICAgICAgICAgICAgICBpZiAo
aXM8TGVnYWN5SW5saW5lVGV4dEJveD4oaW5saW5lQm94KSkKKyAgICAgICAgICAgICAgICAgICAg
bG9naWNhbFNwYWNpbmdGb3JJbmxpbmVUZXh0Qm94ZXMuYWRkKGRvd25jYXN0PExlZ2FjeUlubGlu
ZVRleHRCb3g+KGlubGluZUJveCksIHRvdGFsU3BhY2luZ1dpZHRoKTsKICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHdoaWxlICghcXVldWUuaXNFbXB0
eSgpKSB7CkBAIC04OTUsNyArODk1LDcgQEAgQmlkaVJ1biogTGVnYWN5TGluZUxheW91dDo6Y29t
cHV0ZUlubGluZURpcmVjdGlvblBvc2l0aW9uc0ZvclNlZ21lbnQoTGVnYWN5Um9vdEkKICAgICBC
aWRpUnVuKiBwcmV2aW91c1J1biA9IG51bGxwdHI7CiAgICAgZm9yICg7IHJ1bjsgcnVuID0gcnVu
LT5uZXh0KCkpIHsKICAgICAgICAgYXV0byBjb21wdXRlRXhwYW5zaW9uT3Bwb3J0dW5pdGllcyA9
IFsmZXhwYW5zaW9uT3Bwb3J0dW5pdGllcywgJmV4cGFuc2lvbk9wcG9ydHVuaXR5Q291bnQsIHRl
eHRBbGlnbiwgJmlzQWZ0ZXJFeHBhbnNpb25dIChSZW5kZXJCbG9ja0Zsb3cmIGJsb2NrLAotICAg
ICAgICAgICAgSW5saW5lVGV4dEJveCYgdGV4dEJveCwgQmlkaVJ1biogcHJldmlvdXNSdW4sIEJp
ZGlSdW4qIG5leHRSdW4sIGNvbnN0IFN0cmluZ1ZpZXcmIHN0cmluZ1ZpZXcsIFRleHREaXJlY3Rp
b24gZGlyZWN0aW9uKQorICAgICAgICAgICAgTGVnYWN5SW5saW5lVGV4dEJveCYgdGV4dEJveCwg
QmlkaVJ1biogcHJldmlvdXNSdW4sIEJpZGlSdW4qIG5leHRSdW4sIGNvbnN0IFN0cmluZ1ZpZXcm
IHN0cmluZ1ZpZXcsIFRleHREaXJlY3Rpb24gZGlyZWN0aW9uKQogICAgICAgICB7CiAgICAgICAg
ICAgICBpZiAoc3RyaW5nVmlldy5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgICAgICAvLyBFbXB0
eSBydW5zIHNob3VsZCBzdGlsbCBwcm9kdWNlIGFuIGVudHJ5IGluIGV4cGFuc2lvbk9wcG9ydHVu
aXRpZXMgbGlzdCBzbyB0aGF0IHRoZSBudW1iZXIgb2YgaXRlbXMgbWF0Y2hlcyB0aGUgbnVtYmVy
IG9mIHJ1bnMuCkBAIC05MTYsNyArOTE2LDcgQEAgQmlkaVJ1biogTGVnYWN5TGluZUxheW91dDo6
Y29tcHV0ZUlubGluZURpcmVjdGlvblBvc2l0aW9uc0ZvclNlZ21lbnQoTGVnYWN5Um9vdEkKICAg
ICAgICAgfQogICAgICAgICBpZiAoaXM8UmVuZGVyVGV4dD4ocnVuLT5yZW5kZXJlcigpKSkgewog
ICAgICAgICAgICAgYXV0byYgcmVuZGVyVGV4dCA9IGRvd25jYXN0PFJlbmRlclRleHQ+KHJ1bi0+
cmVuZGVyZXIoKSk7Ci0gICAgICAgICAgICBhdXRvJiB0ZXh0Qm94ID0gZG93bmNhc3Q8SW5saW5l
VGV4dEJveD4oKnJ1bi0+Ym94KCkpOworICAgICAgICAgICAgYXV0byYgdGV4dEJveCA9IGRvd25j
YXN0PExlZ2FjeUlubGluZVRleHRCb3g+KCpydW4tPmJveCgpKTsKICAgICAgICAgICAgIGlmIChj
YW5IYW5nUHVuY3R1YXRpb25BdFN0YXJ0ICYmIGxpbmVJbmZvLmlzRmlyc3RMaW5lKCkgJiYgKGlz
TFRSIHx8IGlzTGFzdEluRmxvd1J1bigqcnVuKSkKICAgICAgICAgICAgICAgICAmJiAhaW5saW5l
QW5jZXN0b3JIYXNTdGFydEJvcmRlclBhZGRpbmdPck1hcmdpbihtX2Zsb3csICpydW4tPmJveCgp
KSkgewogICAgICAgICAgICAgICAgIGZsb2F0IGhhbmdTdGFydFdpZHRoID0gcmVuZGVyVGV4dC5o
YW5nYWJsZVB1bmN0dWF0aW9uU3RhcnRXaWR0aChydW4tPm1fc3RhcnQpOwpAQCAtOTU1LDEwICs5
NTUsMTAgQEAgQmlkaVJ1biogTGVnYWN5TGluZUxheW91dDo6Y29tcHV0ZUlubGluZURpcmVjdGlv
blBvc2l0aW9uc0ZvclNlZ21lbnQoTGVnYWN5Um9vdEkKICAgICAgICAgICAgICAgICBpZiAocnVi
eUJhc2UtPmZpcnN0Um9vdEJveCgpICYmICFydWJ5QmFzZS0+Zmlyc3RSb290Qm94KCktPm5leHRS
b290Qm94KCkgJiYgcnVuLT5yZW5kZXJlcigpLnN0eWxlKCkuY29sbGFwc2VXaGl0ZVNwYWNlKCkp
IHsKICAgICAgICAgICAgICAgICAgICAgcnVieUJhc2UtPnNldElzQWZ0ZXJFeHBhbnNpb24oaXNB
ZnRlckV4cGFuc2lvbik7CiAgICAgICAgICAgICAgICAgICAgIGZvciAoYXV0byogbGVhZkNoaWxk
ID0gcnVieUJhc2UtPmZpcnN0Um9vdEJveCgpLT5maXJzdExlYWZEZXNjZW5kYW50KCk7IGxlYWZD
aGlsZDsgbGVhZkNoaWxkID0gbGVhZkNoaWxkLT5uZXh0TGVhZk9uTGluZSgpKSB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoIWlzPElubGluZVRleHRCb3g+KCpsZWFmQ2hpbGQpKQorICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKCFpczxMZWdhY3lJbmxpbmVUZXh0Qm94PigqbGVhZkNo
aWxkKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAg
ICAgICAgICAgICAgIGVuY291bnRlcmVkSnVzdGlmaWVkUnVieSA9IHRydWU7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBjb21wdXRlRXhwYW5zaW9uT3Bwb3J0dW5pdGllcygqcnVieUJhc2UsIGRv
d25jYXN0PElubGluZVRleHRCb3g+KCpsZWFmQ2hpbGQpLCBudWxscHRyLCBudWxscHRyLAorICAg
ICAgICAgICAgICAgICAgICAgICAgY29tcHV0ZUV4cGFuc2lvbk9wcG9ydHVuaXRpZXMoKnJ1YnlC
YXNlLCBkb3duY2FzdDxMZWdhY3lJbmxpbmVUZXh0Qm94PigqbGVhZkNoaWxkKSwgbnVsbHB0ciwg
bnVsbHB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3duY2FzdDxSZW5kZXJUZXh0
PihsZWFmQ2hpbGQtPnJlbmRlcmVyKCkpLnN0cmluZ1ZpZXcoKSwgbGVhZkNoaWxkLT5kaXJlY3Rp
b24oKSk7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CkBAIC0xMDE3
LDcgKzEwMTcsNyBAQCB2b2lkIExlZ2FjeUxpbmVMYXlvdXQ6OnJlbW92ZUlubGluZUJveChCaWRp
UnVuJiBydW4sIGNvbnN0IExlZ2FjeVJvb3RJbmxpbmVCb3gmCiAKICAgICBhdXRvJiByZW5kZXJl
ciA9IHJ1bi5yZW5kZXJlcigpOwogICAgIGlmIChpczxSZW5kZXJUZXh0PihyZW5kZXJlcikpCi0g
ICAgICAgIGRvd25jYXN0PFJlbmRlclRleHQ+KHJlbmRlcmVyKS5yZW1vdmVUZXh0Qm94KGRvd25j
YXN0PElubGluZVRleHRCb3g+KCppbmxpbmVCb3gpKTsKKyAgICAgICAgZG93bmNhc3Q8UmVuZGVy
VGV4dD4ocmVuZGVyZXIpLnJlbW92ZVRleHRCb3goZG93bmNhc3Q8TGVnYWN5SW5saW5lVGV4dEJv
eD4oKmlubGluZUJveCkpOwogICAgIGRlbGV0ZSBpbmxpbmVCb3g7CiAgICAgcnVuLnNldEJveChu
dWxscHRyKTsKICAgICAvLyByZW1vdmVGcm9tUGFyZW50KCkgdW5uZWNlc3NhcmlseSBkaXJ0aWVz
IHRoZSBhbmNlc3RvciBzdWJ0cmVlLgpAQCAtMTA1MCw3ICsxMDUwLDcgQEAgdm9pZCBMZWdhY3lM
aW5lTGF5b3V0Ojpjb21wdXRlQmxvY2tEaXJlY3Rpb25Qb3NpdGlvbnNGb3JMaW5lKExlZ2FjeVJv
b3RJbmxpbmVCb3gKICAgICAgICAgLy8gdG8gdXBkYXRlIHRoZSBzdGF0aWMgbm9ybWFsIGZsb3cg
eC95IG9mIHBvc2l0aW9uZWQgZWxlbWVudHMuCiAgICAgICAgIGJvb2wgaW5saW5lQm94SXNSZWR1
bmRhbnQgPSBmYWxzZTsKICAgICAgICAgaWYgKGlzPFJlbmRlclRleHQ+KHJlbmRlcmVyKSkgewot
ICAgICAgICAgICAgYXV0byYgaW5saW5lVGV4dEJveCA9IGRvd25jYXN0PElubGluZVRleHRCb3g+
KCpydW4tPmJveCgpKTsKKyAgICAgICAgICAgIGF1dG8mIGlubGluZVRleHRCb3ggPSBkb3duY2Fz
dDxMZWdhY3lJbmxpbmVUZXh0Qm94PigqcnVuLT5ib3goKSk7CiAgICAgICAgICAgICBkb3duY2Fz
dDxSZW5kZXJUZXh0PihyZW5kZXJlcikucG9zaXRpb25MaW5lQm94KGlubGluZVRleHRCb3gpOwog
ICAgICAgICAgICAgaW5saW5lQm94SXNSZWR1bmRhbnQgPSAhaW5saW5lVGV4dEJveC5oYXNUZXh0
Q29udGVudCgpOwogICAgICAgICB9IGVsc2UgaWYgKGlzPFJlbmRlckJveD4ocmVuZGVyZXIpKSB7
CkBAIC0xMjYzLDcgKzEyNjMsNyBAQCBMZWdhY3lSb290SW5saW5lQm94KiBMZWdhY3lMaW5lTGF5
b3V0OjpjcmVhdGVMaW5lQm94ZXNGcm9tQmlkaVJ1bnModW5zaWduZWQgYmlkaQogICAgIAogICAg
IC8vIFNWRyB0ZXh0IGxheW91dCBjb2RlIGNvbXB1dGVzIHZlcnRpY2FsICYgaG9yaXpvbnRhbCBw
b3NpdGlvbnMgb24gaXRzIG93bi4KICAgICAvLyBOb3RlIHRoYXQgd2Ugc3RpbGwgbmVlZCB0byBl
eGVjdXRlIGNvbXB1dGVWZXJ0aWNhbFBvc2l0aW9uc0ZvckxpbmUoKSBhcwotICAgIC8vIGl0IGNh
bGxzIElubGluZVRleHRCb3g6OnBvc2l0aW9uTGluZUJveCgpLCB3aGljaCB0cmFja3Mgd2hldGhl
ciB0aGUgYm94CisgICAgLy8gaXQgY2FsbHMgTGVnYWN5SW5saW5lVGV4dEJveDo6cG9zaXRpb25M
aW5lQm94KCksIHdoaWNoIHRyYWNrcyB3aGV0aGVyIHRoZSBib3gKICAgICAvLyBjb250YWlucyBy
ZXZlcnNlZCB0ZXh0IG9yIG5vdC4gSWYgd2Ugd291bGRuJ3QgZG8gdGhhdCBlZGl0aW5nIGFuZCB0
aHVzCiAgICAgLy8gdGV4dCBzZWxlY3Rpb24gaW4gUlRMIGJveGVzIHdvdWxkIG5vdCB3b3JrIGFz
IGV4cGVjdGVkLgogICAgIGlmIChpc1NWR1Jvb3RJbmxpbmVCb3gpIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MZWdhY3lSb290SW5saW5lQm94LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9MZWdhY3lSb290SW5saW5lQm94LmNwcAppbmRleCBlOWRjYWRlNjhl
Y2EuLjcyMTVlNTYyNTNjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xl
Z2FjeVJvb3RJbmxpbmVCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MZWdh
Y3lSb290SW5saW5lQm94LmNwcApAQCAtMjgsNyArMjgsNyBAQAogI2luY2x1ZGUgIkZyYW1lLmgi
CiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5o
IgotI2luY2x1ZGUgIklubGluZVRleHRCb3guaCIKKyNpbmNsdWRlICJMZWdhY3lJbmxpbmVUZXh0
Qm94LmgiCiAjaW5jbHVkZSAiTG9naWNhbFNlbGVjdGlvbk9mZnNldENhY2hlcy5oIgogI2luY2x1
ZGUgIlBhaW50SW5mby5oIgogI2luY2x1ZGUgIlJlbmRlckZyYWdtZW50ZWRGbG93LmgiCkBAIC05
OSw3ICs5OSw3IEBAIHZvaWQgTGVnYWN5Um9vdElubGluZUJveDo6Y2xlYXJUcnVuY2F0aW9uKCkK
IGJvb2wgTGVnYWN5Um9vdElubGluZUJveDo6aXNIeXBoZW5hdGVkKCkgY29uc3QKIHsKICAgICBm
b3IgKGF1dG8qIGJveCA9IGZpcnN0TGVhZkRlc2NlbmRhbnQoKTsgYm94OyBib3ggPSBib3gtPm5l
eHRMZWFmT25MaW5lKCkpIHsKLSAgICAgICAgaWYgKGlzPElubGluZVRleHRCb3g+KCpib3gpICYm
IGRvd25jYXN0PElubGluZVRleHRCb3g+KCpib3gpLmhhc0h5cGhlbigpKQorICAgICAgICBpZiAo
aXM8TGVnYWN5SW5saW5lVGV4dEJveD4oKmJveCkgJiYgZG93bmNhc3Q8TGVnYWN5SW5saW5lVGV4
dEJveD4oKmJveCkuaGFzSHlwaGVuKCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9
CiAgICAgcmV0dXJuIGZhbHNlOwpAQCAtODAzLDggKzgwMyw4IEBAIHZvaWQgTGVnYWN5Um9vdElu
bGluZUJveDo6YXNjZW50QW5kRGVzY2VudEZvckJveChMZWdhY3lJbmxpbmVCb3gmIGJveCwgR2x5
cGhPdmVyCiAKICAgICBWZWN0b3I8Y29uc3QgRm9udCo+KiB1c2VkRm9udHMgPSBudWxscHRyOwog
ICAgIEdseXBoT3ZlcmZsb3cqIGdseXBoT3ZlcmZsb3cgPSBudWxscHRyOwotICAgIGlmIChpczxJ
bmxpbmVUZXh0Qm94Pihib3gpKSB7Ci0gICAgICAgIEdseXBoT3ZlcmZsb3dBbmRGYWxsYmFja0Zv
bnRzTWFwOjppdGVyYXRvciBpdCA9IHRleHRCb3hEYXRhTWFwLmZpbmQoJmRvd25jYXN0PElubGlu
ZVRleHRCb3g+KGJveCkpOworICAgIGlmIChpczxMZWdhY3lJbmxpbmVUZXh0Qm94Pihib3gpKSB7
CisgICAgICAgIEdseXBoT3ZlcmZsb3dBbmRGYWxsYmFja0ZvbnRzTWFwOjppdGVyYXRvciBpdCA9
IHRleHRCb3hEYXRhTWFwLmZpbmQoJmRvd25jYXN0PExlZ2FjeUlubGluZVRleHRCb3g+KGJveCkp
OwogICAgICAgICB1c2VkRm9udHMgPSBpdCA9PSB0ZXh0Qm94RGF0YU1hcC5lbmQoKSA/IG51bGxw
dHIgOiAmaXQtPnZhbHVlLmZpcnN0OwogICAgICAgICBnbHlwaE92ZXJmbG93ID0gaXQgPT0gdGV4
dEJveERhdGFNYXAuZW5kKCkgPyBudWxscHRyIDogJml0LT52YWx1ZS5zZWNvbmQ7CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKaW5kZXggNjY1M2VlYjNhMzQ3
Li5mNTM4ZTBmNWNmMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCbG9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNw
cApAQCAtNDEsOCArNDEsOCBAQAogI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCiAjaW5jbHVkZSAi
SW5saW5lRWxlbWVudEJveC5oIgogI2luY2x1ZGUgIklubGluZUl0ZXJhdG9yLmgiCi0jaW5jbHVk
ZSAiSW5saW5lVGV4dEJveC5oIgogI2luY2x1ZGUgIkxheW91dFJlcGFpbnRlci5oIgorI2luY2x1
ZGUgIkxlZ2FjeUlubGluZVRleHRCb3guaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVk
ZSAiTG9naWNhbFNlbGVjdGlvbk9mZnNldENhY2hlcy5oIgogI2luY2x1ZGUgIk92ZXJmbG93RXZl
bnQuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zs
b3cuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAKaW5k
ZXggNjhkYjA2MmUwMjQ0Li5lZjk4MWFhNDUwNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwCkBAIC0zNCwxMSArMzQsMTEgQEAKICNpbmNsdWRlICJI
VE1MVGV4dEFyZWFFbGVtZW50LmgiCiAjaW5jbHVkZSAiSGl0VGVzdExvY2F0aW9uLmgiCiAjaW5j
bHVkZSAiSW5saW5lSXRlcmF0b3IuaCIKLSNpbmNsdWRlICJJbmxpbmVUZXh0Qm94LmgiCiAjaW5j
bHVkZSAiTGF5b3V0SW50ZWdyYXRpb25MaW5lSXRlcmF0b3IuaCIKICNpbmNsdWRlICJMYXlvdXRJ
bnRlZ3JhdGlvbkxpbmVMYXlvdXQuaCIKICNpbmNsdWRlICJMYXlvdXRJbnRlZ3JhdGlvblJ1bkl0
ZXJhdG9yLmgiCiAjaW5jbHVkZSAiTGF5b3V0UmVwYWludGVyLmgiCisjaW5jbHVkZSAiTGVnYWN5
SW5saW5lVGV4dEJveC5oIgogI2luY2x1ZGUgIkxlZ2FjeUxpbmVMYXlvdXQuaCIKICNpbmNsdWRl
ICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiUmVuZGVyQ29tYmluZVRleHQuaCIKQEAgLTMyMzIsNyAr
MzIzMiw3IEBAIEdhcFJlY3RzIFJlbmRlckJsb2NrRmxvdzo6aW5saW5lU2VsZWN0aW9uR2FwcyhS
ZW5kZXJCbG9jayYgcm9vdEJsb2NrLCBjb25zdCBMYXlvCiAKICAgICBhdXRvIGhhc1NlbGVjdGVk
Q2hpbGRyZW4gPSBbJl0oY29uc3QgTGVnYWN5Um9vdElubGluZUJveCYgcm9vdCkgewogICAgICAg
ICBmb3IgKGF1dG8qIGJveCA9IHJvb3QuZmlyc3RMZWFmRGVzY2VuZGFudCgpOyBib3g7IGJveCA9
IGJveC0+bmV4dExlYWZPbkxpbmUoKSkgewotICAgICAgICAgICAgaWYgKCFpczxJbmxpbmVUZXh0
Qm94PigqYm94KSkgeworICAgICAgICAgICAgaWYgKCFpczxMZWdhY3lJbmxpbmVUZXh0Qm94Pigq
Ym94KSkgewogICAgICAgICAgICAgICAgIGlmIChib3gtPnNlbGVjdGlvblN0YXRlKCkgIT0gSGln
aGxpZ2h0U3RhdGU6Ok5vbmUpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMzI0MSw3ICszMjQxLDcgQEAgR2FwUmVjdHMgUmVu
ZGVyQmxvY2tGbG93OjppbmxpbmVTZWxlY3Rpb25HYXBzKFJlbmRlckJsb2NrJiByb290QmxvY2ss
IGNvbnN0IExheW8KICAgICAgICAgICAgIGF1dG8gc3RhcnQgPSB2aWV3KCkuc2VsZWN0aW9uKCku
c3RhcnRPZmZzZXQoKTsKICAgICAgICAgICAgIGF1dG8gZW5kID0gdmlldygpLnNlbGVjdGlvbigp
LmVuZE9mZnNldCgpOwogCi0gICAgICAgICAgICBhdXRvJiB0ZXh0Qm94ID0gZG93bmNhc3Q8SW5s
aW5lVGV4dEJveD4oKmJveCk7CisgICAgICAgICAgICBhdXRvJiB0ZXh0Qm94ID0gZG93bmNhc3Q8
TGVnYWN5SW5saW5lVGV4dEJveD4oKmJveCk7CiAgICAgICAgICAgICBzd2l0Y2ggKHRleHRCb3gu
cmVuZGVyZXIoKS5zZWxlY3Rpb25TdGF0ZSgpKSB7CiAgICAgICAgICAgICBjYXNlIFJlbmRlck9i
amVjdDo6SGlnaGxpZ2h0U3RhdGU6Ok5vbmU6CiAgICAgICAgICAgICAgICAgY29udGludWU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3Qu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcApp
bmRleCBiYWRiYzc2YmIyZjkuLmM4YWRhZjJiYTgxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCkBAIC03MDQsNyArNzA0LDcgQEAg
dm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRNYXNrRm9yVGV4dEZpbGxCb3goSW1hZ2VC
dWZmZXIqIG1hc2tJbWFnZSwgY29uc3QKICAgICBtYXNrSW1hZ2VDb250ZXh0LnRyYW5zbGF0ZSgt
bWFza1JlY3QubG9jYXRpb24oKSk7CiAKICAgICAvLyBOb3cgYWRkIHRoZSB0ZXh0IHRvIHRoZSBj
bGlwLiBXZSBkbyB0aGlzIGJ5IHBhaW50aW5nIHVzaW5nIGEgc3BlY2lhbCBwYWludCBwaGFzZSB0
aGF0IHNpZ25hbHMgdG8KLSAgICAvLyBJbmxpbmVUZXh0Qm94ZXMgdGhhdCB0aGV5IHNob3VsZCBq
dXN0IGFkZCB0aGVpciBjb250ZW50cyB0byB0aGUgY2xpcC4KKyAgICAvLyBMZWdhY3lJbmxpbmVU
ZXh0Qm94ZXMgdGhhdCB0aGV5IHNob3VsZCBqdXN0IGFkZCB0aGVpciBjb250ZW50cyB0byB0aGUg
Y2xpcC4KICAgICBQYWludEluZm8gaW5mbyhtYXNrSW1hZ2VDb250ZXh0LCBMYXlvdXRSZWN0IHsg
bWFza1JlY3QgfSwgUGFpbnRQaGFzZTo6VGV4dENsaXAsIFBhaW50QmVoYXZpb3I6OkZvcmNlQmxh
Y2tUZXh0KTsKICAgICBpZiAoYm94KSB7CiAgICAgICAgIGNvbnN0IExlZ2FjeVJvb3RJbmxpbmVC
b3gmIHJvb3RCb3ggPSBib3gtPnJvb3QoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
cklubGluZS5jcHAKaW5kZXggOWY4NGQ4MmU1MGE3Li5hOGM1MDI1Y2QyZjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwCkBAIC0yOSw4ICsyOSw4IEBACiAjaW5j
bHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5oIgogI2lu
Y2x1ZGUgIklubGluZUVsZW1lbnRCb3guaCIKLSNpbmNsdWRlICJJbmxpbmVUZXh0Qm94LmgiCiAj
aW5jbHVkZSAiTGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0LmgiCisjaW5jbHVkZSAiTGVnYWN5
SW5saW5lVGV4dEJveC5oIgogI2luY2x1ZGUgIlJlbmRlckJsb2NrLmgiCiAjaW5jbHVkZSAiUmVu
ZGVyQ2hpbGRJdGVyYXRvci5oIgogI2luY2x1ZGUgIlJlbmRlckZyYWdtZW50ZWRGbG93LmgiCkBA
IC0zMTgsNyArMzE4LDcgQEAgdm9pZCBSZW5kZXJJbmxpbmU6OmdlbmVyYXRlQ3VsbGVkTGluZUJv
eFJlY3RzKEdlbmVyYXRvckNvbnRleHQmIGNvbnRleHQsIGNvbnN0IFIKICAgICAgICAgICAgIH0K
ICAgICAgICAgfSBlbHNlIGlmIChpczxSZW5kZXJUZXh0PihjdXJyZW50KSkgewogICAgICAgICAg
ICAgYXV0byYgY3VyclRleHQgPSBkb3duY2FzdDxSZW5kZXJUZXh0PihjdXJyZW50KTsKLSAgICAg
ICAgICAgIGZvciAoSW5saW5lVGV4dEJveCogY2hpbGRUZXh0ID0gY3VyclRleHQuZmlyc3RUZXh0
Qm94KCk7IGNoaWxkVGV4dDsgY2hpbGRUZXh0ID0gY2hpbGRUZXh0LT5uZXh0VGV4dEJveCgpKSB7
CisgICAgICAgICAgICBmb3IgKGF1dG8qIGNoaWxkVGV4dCA9IGN1cnJUZXh0LmZpcnN0VGV4dEJv
eCgpOyBjaGlsZFRleHQ7IGNoaWxkVGV4dCA9IGNoaWxkVGV4dC0+bmV4dFRleHRCb3goKSkgewog
ICAgICAgICAgICAgICAgIGNvbnN0IExlZ2FjeVJvb3RJbmxpbmVCb3gmIHJvb3RCb3ggPSBjaGls
ZFRleHQtPnJvb3QoKTsKICAgICAgICAgICAgICAgICBjb25zdCBSZW5kZXJTdHlsZSYgY29udGFp
bmVyU3R5bGUgPSByb290Qm94LmlzRmlyc3RMaW5lKCkgPyBjb250YWluZXItPmZpcnN0TGluZVN0
eWxlKCkgOiBjb250YWluZXItPnN0eWxlKCk7CiAgICAgICAgICAgICAgICAgaW50IGxvZ2ljYWxU
b3AgPSByb290Qm94LmxvZ2ljYWxUb3AoKSArIChyb290Qm94LmxpbmVTdHlsZSgpLmZvbnRDYXNj
YWRlKCkuZm9udE1ldHJpY3MoKS5hc2NlbnQoKSAtIGNvbnRhaW5lclN0eWxlLmZvbnRDYXNjYWRl
KCkuZm9udE1ldHJpY3MoKS5hc2NlbnQoKSk7CkBAIC03NjMsNyArNzYzLDcgQEAgTGF5b3V0UmVj
dCBSZW5kZXJJbmxpbmU6OmN1bGxlZElubGluZVZpc3VhbE92ZXJmbG93Qm91bmRpbmdCb3goKSBj
b25zdAogICAgICAgICAgICAgICAgIHJlc3VsdC51bml0ZUlmTm9uWmVybyhyZW5kZXJJbmxpbmUu
bGluZXNWaXN1YWxPdmVyZmxvd0JvdW5kaW5nQm94KCkpOwogICAgICAgICB9IGVsc2UgaWYgKGlz
PFJlbmRlclRleHQ+KGN1cnJlbnQpKSB7CiAgICAgICAgICAgICAvLyBGSVhNRTsgT3ZlcmZsb3cg
ZnJvbSB0ZXh0IGJveGVzIGlzIGxvc3QuIFdlIHdpbGwgbmVlZCB0byBjYWNoZSB0aGlzIGluZm9y
bWF0aW9uIGluCi0gICAgICAgICAgICAvLyBJbmxpbmVUZXh0Qm94ZXMuCisgICAgICAgICAgICAv
LyBMZWdhY3lJbmxpbmVUZXh0Qm94ZXMuCiAgICAgICAgICAgICBhdXRvJiByZW5kZXJUZXh0ID0g
ZG93bmNhc3Q8UmVuZGVyVGV4dD4oY3VycmVudCk7CiAgICAgICAgICAgICByZXN1bHQudW5pdGVJ
Zk5vblplcm8ocmVuZGVyVGV4dC5saW5lc1Zpc3VhbE92ZXJmbG93Qm91bmRpbmdCb3goKSk7CiAg
ICAgICAgIH0KQEAgLTExMTksNyArMTExOSw3IEBAIHZvaWQgUmVuZGVySW5saW5lOjpkaXJ0eUxp
bmVCb3hlcyhib29sIGZ1bGxMYXlvdXQpCiAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZExp
bmUtPnJvb3QoKS5tYXJrRGlydHkoKTsKICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGlzPFJl
bmRlclRleHQ+KGN1cnJlbnQpKSB7CiAgICAgICAgICAgICAgICAgICAgIGF1dG8mIHJlbmRlclRl
eHQgPSBkb3duY2FzdDxSZW5kZXJUZXh0PihjdXJyZW50KTsKLSAgICAgICAgICAgICAgICAgICAg
Zm9yIChJbmxpbmVUZXh0Qm94KiBjaGlsZFRleHQgPSByZW5kZXJUZXh0LmZpcnN0VGV4dEJveCgp
OyBjaGlsZFRleHQ7IGNoaWxkVGV4dCA9IGNoaWxkVGV4dC0+bmV4dFRleHRCb3goKSkKKyAgICAg
ICAgICAgICAgICAgICAgZm9yIChhdXRvKiBjaGlsZFRleHQgPSByZW5kZXJUZXh0LmZpcnN0VGV4
dEJveCgpOyBjaGlsZFRleHQ7IGNoaWxkVGV4dCA9IGNoaWxkVGV4dC0+bmV4dFRleHRCb3goKSkK
ICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkVGV4dC0+cm9vdCgpLm1hcmtEaXJ0eSgpOwog
ICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaXM8UmVuZGVyTGluZUJyZWFrPihjdXJyZW50KSkg
ewogICAgICAgICAgICAgICAgICAgICBhdXRvJiByZW5kZXJCUiA9IGRvd25jYXN0PFJlbmRlckxp
bmVCcmVhaz4oY3VycmVudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGluZUJveExpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxp
bmVCb3hMaXN0LmNwcAppbmRleCA0ZTJlZjE1NzliM2EuLjZiM2I3Y2JlNDM3YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpbmVCb3hMaXN0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGluZUJveExpc3QuY3BwCkBAIC0zMSw3ICsz
MSw3IEBACiAKICNpbmNsdWRlICJIaXRUZXN0UmVzdWx0LmgiCiAjaW5jbHVkZSAiSW5saW5lRWxl
bWVudEJveC5oIgotI2luY2x1ZGUgIklubGluZVRleHRCb3guaCIKKyNpbmNsdWRlICJMZWdhY3lJ
bmxpbmVUZXh0Qm94LmgiCiAjaW5jbHVkZSAiTGVnYWN5Um9vdElubGluZUJveC5oIgogI2luY2x1
ZGUgIlBhaW50SW5mby5oIgogI2luY2x1ZGUgIlJlbmRlckJsb2NrRmxvdy5oIgpAQCAtMzM5LDcg
KzMzOSw3IEBAIHZvaWQgUmVuZGVyTGluZUJveExpc3Q6OmRpcnR5TGluZXNGcm9tQ2hhbmdlZENo
aWxkKFJlbmRlckJveE1vZGVsT2JqZWN0JiBjb250YWluCiAgICAgICAgICAgICBpZiAoYXV0byB3
cmFwcGVyID0gZG93bmNhc3Q8UmVuZGVyTGluZUJyZWFrPigqY3VycmVudCkuaW5saW5lQm94V3Jh
cHBlcigpKQogICAgICAgICAgICAgICAgIGJveCA9ICZ3cmFwcGVyLT5yb290KCk7CiAgICAgICAg
IH0gZWxzZSBpZiAoaXM8UmVuZGVyVGV4dD4oKmN1cnJlbnQpKSB7Ci0gICAgICAgICAgICBpZiAo
SW5saW5lVGV4dEJveCogdGV4dEJveCA9IGRvd25jYXN0PFJlbmRlclRleHQ+KCpjdXJyZW50KS5s
YXN0VGV4dEJveCgpKQorICAgICAgICAgICAgaWYgKExlZ2FjeUlubGluZVRleHRCb3gqIHRleHRC
b3ggPSBkb3duY2FzdDxSZW5kZXJUZXh0PigqY3VycmVudCkubGFzdFRleHRCb3goKSkKICAgICAg
ICAgICAgICAgICBib3ggPSAmdGV4dEJveC0+cm9vdCgpOwogICAgICAgICB9IGVsc2UgaWYgKGlz
PFJlbmRlcklubGluZT4oKmN1cnJlbnQpKSB7CiAgICAgICAgICAgICBMZWdhY3lJbmxpbmVCb3gq
IGxhc3RTaWJsaW5nQm94ID0gZG93bmNhc3Q8UmVuZGVySW5saW5lPigqY3VycmVudCkubGFzdExp
bmVCb3hJbmNsdWRpbmdDdWxsaW5nKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4
dC5jcHAKaW5kZXggY2RlNDVkMmVjMjE0Li4xMDdhY2U1MTgxMzEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAKQEAgLTM3LDcgKzM3LDYgQEAKICNpbmNsdWRlICJIVE1M
UGFyc2VySWRpb21zLmgiCiAjaW5jbHVkZSAiSHlwaGVuYXRpb24uaCIKICNpbmNsdWRlICJJbmxp
bmVSdW5BbmRPZmZzZXQuaCIKLSNpbmNsdWRlICJJbmxpbmVUZXh0Qm94LmgiCiAjaW5jbHVkZSAi
TGF5b3V0SW50ZWdyYXRpb25MaW5lSXRlcmF0b3IuaCIKICNpbmNsdWRlICJMYXlvdXRJbnRlZ3Jh
dGlvbkxpbmVMYXlvdXQuaCIKICNpbmNsdWRlICJMYXlvdXRJbnRlZ3JhdGlvblJ1bkl0ZXJhdG9y
LmgiCkBAIC00ODAsNyArNDc5LDcgQEAgc3RhdGljIEZsb2F0UmVjdCBsb2NhbFF1YWRGb3JUZXh0
UnVuKGNvbnN0IExheW91dEludGVncmF0aW9uOjpQYXRoVGV4dFJ1biYgcnVuLAogVmVjdG9yPEZs
b2F0UXVhZD4gUmVuZGVyVGV4dDo6YWJzb2x1dGVRdWFkc0ZvclJhbmdlKHVuc2lnbmVkIHN0YXJ0
LCB1bnNpZ25lZCBlbmQsIGJvb2wgdXNlU2VsZWN0aW9uSGVpZ2h0LCBib29sIGlnbm9yZUVtcHR5
VGV4dFNlbGVjdGlvbnMsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdAogewogICAgIC8vIFdvcmsgYXJv
dW5kIHNpZ25lZC91bnNpZ25lZCBpc3N1ZXMuIFRoaXMgZnVuY3Rpb24gdGFrZXMgdW5zaWduZWRz
LCBhbmQgaXMgb2Z0ZW4gcGFzc2VkIFVJTlRfTUFYCi0gICAgLy8gdG8gbWVhbiAiYWxsIHRoZSB3
YXkgdG8gdGhlIGVuZCIuIElubGluZVRleHRCb3ggY29vcmRpbmF0ZXMgYXJlIHVuc2lnbmVkcywg
c28gY2hhbmdpbmcgdGhpcworICAgIC8vIHRvIG1lYW4gImFsbCB0aGUgd2F5IHRvIHRoZSBlbmQi
LiBMZWdhY3lJbmxpbmVUZXh0Qm94IGNvb3JkaW5hdGVzIGFyZSB1bnNpZ25lZHMsIHNvIGNoYW5n
aW5nIHRoaXMKICAgICAvLyBmdW5jdGlvbiB0byB0YWtlIGludHMgY2F1c2VzIHZhcmlvdXMgaW50
ZXJuYWwgbWlzbWF0Y2hlcy4gQnV0IHNlbGVjdGlvblJlY3QgdGFrZXMgaW50cywgYW5kCiAgICAg
Ly8gcGFzc2luZyBVSU5UX01BWCB0byBpdCBjYXVzZXMgdHJvdWJsZS4gSWRlYWxseSB3ZSdkIGNo
YW5nZSBzZWxlY3Rpb25SZWN0IHRvIHRha2UgdW5zaWduZWRzLCBidXQKICAgICAvLyB0aGF0IHdv
dWxkIGNhdXNlIG1hbnkgcmlwcGxlIGVmZmVjdHMsIHNvIGZvciBub3cgd2UnbGwganVzdCBjbGFt
cCBvdXIgdW5zaWduZWQgcGFyYW1ldGVycyB0byBJTlRfTUFYLgpAQCAtMTQ5MiwxMiArMTQ5MSwx
MiBAQCB2b2lkIFJlbmRlclRleHQ6OmRlbGV0ZUxpbmVCb3hlcygpCiAgICAgbV9saW5lQm94ZXMu
ZGVsZXRlQWxsKCk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxJbmxpbmVUZXh0Qm94PiBSZW5kZXJU
ZXh0OjpjcmVhdGVUZXh0Qm94KCkKK3N0ZDo6dW5pcXVlX3B0cjxMZWdhY3lJbmxpbmVUZXh0Qm94
PiBSZW5kZXJUZXh0OjpjcmVhdGVUZXh0Qm94KCkKIHsKLSAgICByZXR1cm4gbWFrZVVuaXF1ZTxJ
bmxpbmVUZXh0Qm94PigqdGhpcyk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8TGVnYWN5SW5saW5l
VGV4dEJveD4oKnRoaXMpOwogfQogCi12b2lkIFJlbmRlclRleHQ6OnBvc2l0aW9uTGluZUJveChJ
bmxpbmVUZXh0Qm94JiB0ZXh0Qm94KQordm9pZCBSZW5kZXJUZXh0Ojpwb3NpdGlvbkxpbmVCb3go
TGVnYWN5SW5saW5lVGV4dEJveCYgdGV4dEJveCkKIHsKICAgICBpZiAoIXRleHRCb3guaGFzVGV4
dENvbnRlbnQoKSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
ZXh0LmgKaW5kZXggOWM3ZGFlODhjZWRiLi41NGYxMDliODQ0NDQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRleHQuaApAQCAtMzEsNyArMzEsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBGb250OwotY2xhc3MgSW5saW5lVGV4dEJveDsKK2NsYXNzIExlZ2FjeUlubGlu
ZVRleHRCb3g7CiBzdHJ1Y3QgR2x5cGhPdmVyZmxvdzsKIAogbmFtZXNwYWNlIExheW91dEludGVn
cmF0aW9uIHsKQEAgLTYxLDE0ICs2MSwxNCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIFN0cmlu
ZyBvcmlnaW5hbFRleHQoKSBjb25zdDsKIAotICAgIHZvaWQgZXh0cmFjdFRleHRCb3goSW5saW5l
VGV4dEJveCYgYm94KSB7IG1fbGluZUJveGVzLmV4dHJhY3QoYm94KTsgfQotICAgIHZvaWQgYXR0
YWNoVGV4dEJveChJbmxpbmVUZXh0Qm94JiBib3gpIHsgbV9saW5lQm94ZXMuYXR0YWNoKGJveCk7
IH0KLSAgICB2b2lkIHJlbW92ZVRleHRCb3goSW5saW5lVGV4dEJveCYgYm94KSB7IG1fbGluZUJv
eGVzLnJlbW92ZShib3gpOyB9CisgICAgdm9pZCBleHRyYWN0VGV4dEJveChMZWdhY3lJbmxpbmVU
ZXh0Qm94JiBib3gpIHsgbV9saW5lQm94ZXMuZXh0cmFjdChib3gpOyB9CisgICAgdm9pZCBhdHRh
Y2hUZXh0Qm94KExlZ2FjeUlubGluZVRleHRCb3gmIGJveCkgeyBtX2xpbmVCb3hlcy5hdHRhY2go
Ym94KTsgfQorICAgIHZvaWQgcmVtb3ZlVGV4dEJveChMZWdhY3lJbmxpbmVUZXh0Qm94JiBib3gp
IHsgbV9saW5lQm94ZXMucmVtb3ZlKGJveCk7IH0KIAogICAgIFN0cmluZ0ltcGwmIHRleHQoKSBj
b25zdCB7IHJldHVybiAqbV90ZXh0LmltcGwoKTsgfSAvLyBTaW5jZSBtX3RleHQgY2FuIG5ldmVy
IGJlIG51bGwsIHJldHVybmluZyB0aGlzIHR5cGUgbWVhbnMgY2FsbGVycyB3b24ndCBudWxsIGNo
ZWNrLgogICAgIFN0cmluZyB0ZXh0V2l0aG91dENvbnZlcnRpbmdCYWNrc2xhc2hUb1llblN5bWJv
bCgpIGNvbnN0OwogCi0gICAgSW5saW5lVGV4dEJveCogY3JlYXRlSW5saW5lVGV4dEJveCgpIHsg
cmV0dXJuIG1fbGluZUJveGVzLmNyZWF0ZUFuZEFwcGVuZExpbmVCb3goKnRoaXMpOyB9CisgICAg
TGVnYWN5SW5saW5lVGV4dEJveCogY3JlYXRlSW5saW5lVGV4dEJveCgpIHsgcmV0dXJuIG1fbGlu
ZUJveGVzLmNyZWF0ZUFuZEFwcGVuZExpbmVCb3goKnRoaXMpOyB9CiAgICAgdm9pZCBkaXJ0eUxp
bmVCb3hlcyhib29sIGZ1bGxMYXlvdXQpOwogICAgIHZvaWQgZGVsZXRlTGluZUJveGVzKCk7CiAK
QEAgLTg4LDcgKzg4LDcgQEAgcHVibGljOgogICAgIFVDaGFyIGNoYXJhY3RlckF0KHVuc2lnbmVk
KSBjb25zdDsKICAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0ZXh0
KCkubGVuZ3RoKCk7IH0KIAotICAgIHZvaWQgcG9zaXRpb25MaW5lQm94KElubGluZVRleHRCb3gm
KTsKKyAgICB2b2lkIHBvc2l0aW9uTGluZUJveChMZWdhY3lJbmxpbmVUZXh0Qm94Jik7CiAKICAg
ICB2aXJ0dWFsIGZsb2F0IHdpZHRoKHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIGxlbmd0aCwgY29u
c3QgRm9udENhc2NhZGUmLCBmbG9hdCB4UG9zLCBIYXNoU2V0PGNvbnN0IEZvbnQqPiogZmFsbGJh
Y2tGb250cyA9IG51bGxwdHIsIEdseXBoT3ZlcmZsb3cqID0gbnVsbHB0cikgY29uc3Q7CiAgICAg
dmlydHVhbCBmbG9hdCB3aWR0aCh1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCBsZW5ndGgsIGZsb2F0
IHhQb3MsIGJvb2wgZmlyc3RMaW5lID0gZmFsc2UsIEhhc2hTZXQ8Y29uc3QgRm9udCo+KiBmYWxs
YmFja0ZvbnRzID0gbnVsbHB0ciwgR2x5cGhPdmVyZmxvdyogPSBudWxscHRyKSBjb25zdDsKQEAg
LTEzMSw4ICsxMzEsOCBAQCBwdWJsaWM6CiAgICAgTGF5b3V0VW5pdCBtYXJnaW5MZWZ0KCkgY29u
c3QgeyByZXR1cm4gbWluaW11bVZhbHVlRm9yTGVuZ3RoKHN0eWxlKCkubWFyZ2luTGVmdCgpLCAw
KTsgfQogICAgIExheW91dFVuaXQgbWFyZ2luUmlnaHQoKSBjb25zdCB7IHJldHVybiBtaW5pbXVt
VmFsdWVGb3JMZW5ndGgoc3R5bGUoKS5tYXJnaW5SaWdodCgpLCAwKTsgfQogCi0gICAgSW5saW5l
VGV4dEJveCogZmlyc3RUZXh0Qm94KCkgY29uc3QgeyByZXR1cm4gbV9saW5lQm94ZXMuZmlyc3Qo
KTsgfQotICAgIElubGluZVRleHRCb3gqIGxhc3RUZXh0Qm94KCkgY29uc3QgeyByZXR1cm4gbV9s
aW5lQm94ZXMubGFzdCgpOyB9CisgICAgTGVnYWN5SW5saW5lVGV4dEJveCogZmlyc3RUZXh0Qm94
KCkgY29uc3QgeyByZXR1cm4gbV9saW5lQm94ZXMuZmlyc3QoKTsgfQorICAgIExlZ2FjeUlubGlu
ZVRleHRCb3gqIGxhc3RUZXh0Qm94KCkgY29uc3QgeyByZXR1cm4gbV9saW5lQm94ZXMubGFzdCgp
OyB9CiAKICAgICBpbnQgY2FyZXRNaW5PZmZzZXQoKSBjb25zdCBmaW5hbDsKICAgICBpbnQgY2Fy
ZXRNYXhPZmZzZXQoKSBjb25zdCBmaW5hbDsKQEAgLTE1MCw3ICsxNTAsNyBAQCBwdWJsaWM6CiAK
ICAgICB2b2lkIG1vbWVudGFyaWx5UmV2ZWFsTGFzdFR5cGVkQ2hhcmFjdGVyKHVuc2lnbmVkIG9m
ZnNldEFmdGVyTGFzdFR5cGVkQ2hhcmFjdGVyKTsKIAotICAgIElubGluZVRleHRCb3gqIGZpbmRO
ZXh0SW5saW5lVGV4dEJveChpbnQgb2Zmc2V0LCBpbnQmIHBvcykgY29uc3QgeyByZXR1cm4gbV9s
aW5lQm94ZXMuZmluZE5leHQob2Zmc2V0LCBwb3MpOyB9CisgICAgTGVnYWN5SW5saW5lVGV4dEJv
eCogZmluZE5leHRJbmxpbmVUZXh0Qm94KGludCBvZmZzZXQsIGludCYgcG9zKSBjb25zdCB7IHJl
dHVybiBtX2xpbmVCb3hlcy5maW5kTmV4dChvZmZzZXQsIHBvcyk7IH0KIAogICAgIGJvb2wgaXNB
bGxDb2xsYXBzaWJsZVdoaXRlc3BhY2UoKSBjb25zdDsKIApAQCAtMTYwLDcgKzE2MCw3IEBAIHB1
YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBzdHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2Us
IGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSk7CiAKLSAgICB2aXJ0dWFsIHN0ZDo6dW5pcXVl
X3B0cjxJbmxpbmVUZXh0Qm94PiBjcmVhdGVUZXh0Qm94KCk7CisgICAgdmlydHVhbCBzdGQ6OnVu
aXF1ZV9wdHI8TGVnYWN5SW5saW5lVGV4dEJveD4gY3JlYXRlVGV4dEJveCgpOwogCiAjaWYgRU5B
QkxFKFRFWFRfQVVUT1NJWklORykKICAgICBmbG9hdCBjYW5kaWRhdGVDb21wdXRlZFRleHRTaXpl
KCkgY29uc3QgeyByZXR1cm4gbV9jYW5kaWRhdGVDb21wdXRlZFRleHRTaXplOyB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dExpbmVCb3hlcy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dExpbmVCb3hlcy5jcHAKaW5kZXggYWJi
NDNlMzBkMjRmLi4zOTg3YjgxOTYzODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUZXh0TGluZUJveGVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGV4dExpbmVCb3hlcy5jcHAKQEAgLTI3LDcgKzI3LDcgQEAKICNpbmNsdWRlICJS
ZW5kZXJUZXh0TGluZUJveGVzLmgiCiAKICNpbmNsdWRlICJFbGxpcHNpc0JveC5oIgotI2luY2x1
ZGUgIklubGluZVRleHRCb3guaCIKKyNpbmNsdWRlICJMZWdhY3lJbmxpbmVUZXh0Qm94LmgiCiAj
aW5jbHVkZSAiTGVnYWN5Um9vdElubGluZUJveC5oIgogI2luY2x1ZGUgIlJlbmRlckJsb2NrLmgi
CiAjaW5jbHVkZSAiUmVuZGVyU3R5bGUuaCIKQEAgLTQyLDcgKzQyLDcgQEAgUmVuZGVyVGV4dExp
bmVCb3hlczo6UmVuZGVyVGV4dExpbmVCb3hlcygpCiB7CiB9CiAKLUlubGluZVRleHRCb3gqIFJl
bmRlclRleHRMaW5lQm94ZXM6OmNyZWF0ZUFuZEFwcGVuZExpbmVCb3goUmVuZGVyVGV4dCYgcmVu
ZGVyVGV4dCkKK0xlZ2FjeUlubGluZVRleHRCb3gqIFJlbmRlclRleHRMaW5lQm94ZXM6OmNyZWF0
ZUFuZEFwcGVuZExpbmVCb3goUmVuZGVyVGV4dCYgcmVuZGVyVGV4dCkKIHsKICAgICBhdXRvIHRl
eHRCb3ggPSByZW5kZXJUZXh0LmNyZWF0ZVRleHRCb3goKTsKICAgICBpZiAoIW1fZmlyc3QpIHsK
QEAgLTU2LDcgKzU2LDcgQEAgSW5saW5lVGV4dEJveCogUmVuZGVyVGV4dExpbmVCb3hlczo6Y3Jl
YXRlQW5kQXBwZW5kTGluZUJveChSZW5kZXJUZXh0JiByZW5kZXJUZXgKICAgICByZXR1cm4gdGV4
dEJveC5yZWxlYXNlKCk7CiB9CiAKLXZvaWQgUmVuZGVyVGV4dExpbmVCb3hlczo6ZXh0cmFjdChJ
bmxpbmVUZXh0Qm94JiBib3gpCit2b2lkIFJlbmRlclRleHRMaW5lQm94ZXM6OmV4dHJhY3QoTGVn
YWN5SW5saW5lVGV4dEJveCYgYm94KQogewogICAgIGNoZWNrQ29uc2lzdGVuY3koKTsKIApAQCAt
NzIsNyArNzIsNyBAQCB2b2lkIFJlbmRlclRleHRMaW5lQm94ZXM6OmV4dHJhY3QoSW5saW5lVGV4
dEJveCYgYm94KQogICAgIGNoZWNrQ29uc2lzdGVuY3koKTsKIH0KIAotdm9pZCBSZW5kZXJUZXh0
TGluZUJveGVzOjphdHRhY2goSW5saW5lVGV4dEJveCYgYm94KQordm9pZCBSZW5kZXJUZXh0TGlu
ZUJveGVzOjphdHRhY2goTGVnYWN5SW5saW5lVGV4dEJveCYgYm94KQogewogICAgIGNoZWNrQ29u
c2lzdGVuY3koKTsKIApAQCAtODEsNyArODEsNyBAQCB2b2lkIFJlbmRlclRleHRMaW5lQm94ZXM6
OmF0dGFjaChJbmxpbmVUZXh0Qm94JiBib3gpCiAgICAgICAgIGJveC5zZXRQcmV2aW91c1RleHRC
b3gobV9sYXN0KTsKICAgICB9IGVsc2UKICAgICAgICAgbV9maXJzdCA9ICZib3g7Ci0gICAgSW5s
aW5lVGV4dEJveCogbGFzdCA9IG51bGxwdHI7CisgICAgTGVnYWN5SW5saW5lVGV4dEJveCogbGFz
dCA9IG51bGxwdHI7CiAgICAgZm9yIChhdXRvKiBjdXJyZW50ID0gJmJveDsgY3VycmVudDsgY3Vy
cmVudCA9IGN1cnJlbnQtPm5leHRUZXh0Qm94KCkpIHsKICAgICAgICAgY3VycmVudC0+c2V0RXh0
cmFjdGVkKGZhbHNlKTsKICAgICAgICAgbGFzdCA9IGN1cnJlbnQ7CkBAIC05MSw3ICs5MSw3IEBA
IHZvaWQgUmVuZGVyVGV4dExpbmVCb3hlczo6YXR0YWNoKElubGluZVRleHRCb3gmIGJveCkKICAg
ICBjaGVja0NvbnNpc3RlbmN5KCk7CiB9CiAKLXZvaWQgUmVuZGVyVGV4dExpbmVCb3hlczo6cmVt
b3ZlKElubGluZVRleHRCb3gmIGJveCkKK3ZvaWQgUmVuZGVyVGV4dExpbmVCb3hlczo6cmVtb3Zl
KExlZ2FjeUlubGluZVRleHRCb3gmIGJveCkKIHsKICAgICBjaGVja0NvbnNpc3RlbmN5KCk7CiAK
QEAgLTEyMiw3ICsxMjIsNyBAQCB2b2lkIFJlbmRlclRleHRMaW5lQm94ZXM6OmRlbGV0ZUFsbCgp
CiB7CiAgICAgaWYgKCFtX2ZpcnN0KQogICAgICAgICByZXR1cm47Ci0gICAgSW5saW5lVGV4dEJv
eCogbmV4dDsKKyAgICBMZWdhY3lJbmxpbmVUZXh0Qm94KiBuZXh0OwogICAgIGZvciAoYXV0byog
Y3VycmVudCA9IG1fZmlyc3Q7IGN1cnJlbnQ7IGN1cnJlbnQgPSBuZXh0KSB7CiAgICAgICAgIG5l
eHQgPSBjdXJyZW50LT5uZXh0VGV4dEJveCgpOwogICAgICAgICBkZWxldGUgY3VycmVudDsKQEAg
LTEzMSw3ICsxMzEsNyBAQCB2b2lkIFJlbmRlclRleHRMaW5lQm94ZXM6OmRlbGV0ZUFsbCgpCiAg
ICAgbV9sYXN0ID0gbnVsbHB0cjsKIH0KIAotSW5saW5lVGV4dEJveCogUmVuZGVyVGV4dExpbmVC
b3hlczo6ZmluZE5leHQoaW50IG9mZnNldCwgaW50JiBwb3NpdGlvbikgY29uc3QKK0xlZ2FjeUlu
bGluZVRleHRCb3gqIFJlbmRlclRleHRMaW5lQm94ZXM6OmZpbmROZXh0KGludCBvZmZzZXQsIGlu
dCYgcG9zaXRpb24pIGNvbnN0CiB7CiAgICAgaWYgKCFtX2ZpcnN0KQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKQEAgLTI1Niw3ICsyNTYsNyBAQCBpbmxpbmUgdm9pZCBSZW5kZXJUZXh0TGluZUJv
eGVzOjpjaGVja0NvbnNpc3RlbmN5KCkgY29uc3QKIHsKICNpZiBBU1NFUlRfRU5BQkxFRAogI2lm
ZGVmIENIRUNLX0NPTlNJU1RFTkNZCi0gICAgY29uc3QgSW5saW5lVGV4dEJveCogcHJldiA9IG51
bGxwdHI7CisgICAgY29uc3QgTGVnYWN5SW5saW5lVGV4dEJveCogcHJldiA9IG51bGxwdHI7CiAg
ICAgZm9yIChhdXRvKiBjaGlsZCA9IG1fZmlyc3Q7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0
VGV4dEJveCgpKSB7CiAgICAgICAgIEFTU0VSVChjaGlsZC0+cmVuZGVyZXIoKSA9PSB0aGlzKTsK
ICAgICAgICAgQVNTRVJUKGNoaWxkLT5wcmV2VGV4dEJveCgpID09IHByZXYpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRMaW5lQm94ZXMuaCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0TGluZUJveGVzLmgKaW5kZXggNzRkMWUwNzNj
YmMxLi4zMzMxZWNiY2FiNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUZXh0TGluZUJveGVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRleHRMaW5lQm94ZXMuaApAQCAtMzAsNyArMzAsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLWNsYXNzIElubGluZVRleHRCb3g7CitjbGFzcyBMZWdhY3lJbmxpbmVUZXh0Qm94OwogY2xh
c3MgUmVuZGVyU3R5bGU7CiBjbGFzcyBSZW5kZXJUZXh0OwogY2xhc3MgVmlzaWJsZVBvc2l0aW9u
OwpAQCAtMzksMTQgKzM5LDE0IEBAIGNsYXNzIFJlbmRlclRleHRMaW5lQm94ZXMgewogcHVibGlj
OgogICAgIFJlbmRlclRleHRMaW5lQm94ZXMoKTsKIAotICAgIElubGluZVRleHRCb3gqIGZpcnN0
KCkgY29uc3QgeyByZXR1cm4gbV9maXJzdDsgfQotICAgIElubGluZVRleHRCb3gqIGxhc3QoKSBj
b25zdCB7IHJldHVybiBtX2xhc3Q7IH0KKyAgICBMZWdhY3lJbmxpbmVUZXh0Qm94KiBmaXJzdCgp
IGNvbnN0IHsgcmV0dXJuIG1fZmlyc3Q7IH0KKyAgICBMZWdhY3lJbmxpbmVUZXh0Qm94KiBsYXN0
KCkgY29uc3QgeyByZXR1cm4gbV9sYXN0OyB9CiAKLSAgICBJbmxpbmVUZXh0Qm94KiBjcmVhdGVB
bmRBcHBlbmRMaW5lQm94KFJlbmRlclRleHQmKTsKKyAgICBMZWdhY3lJbmxpbmVUZXh0Qm94KiBj
cmVhdGVBbmRBcHBlbmRMaW5lQm94KFJlbmRlclRleHQmKTsKIAotICAgIHZvaWQgZXh0cmFjdChJ
bmxpbmVUZXh0Qm94Jik7Ci0gICAgdm9pZCBhdHRhY2goSW5saW5lVGV4dEJveCYpOwotICAgIHZv
aWQgcmVtb3ZlKElubGluZVRleHRCb3gmKTsKKyAgICB2b2lkIGV4dHJhY3QoTGVnYWN5SW5saW5l
VGV4dEJveCYpOworICAgIHZvaWQgYXR0YWNoKExlZ2FjeUlubGluZVRleHRCb3gmKTsKKyAgICB2
b2lkIHJlbW92ZShMZWdhY3lJbmxpbmVUZXh0Qm94Jik7CiAKICAgICB2b2lkIHJlbW92ZUFsbEZy
b21QYXJlbnQoUmVuZGVyVGV4dCYpOwogICAgIHZvaWQgZGVsZXRlQWxsKCk7CkBAIC01NCw3ICs1
NCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpcnR5QWxsKCk7CiAgICAgYm9vbCBkaXJ0eVJhbmdl
KFJlbmRlclRleHQmLCB1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgZW5kLCBpbnQgbGVuZ3RoRGVs
dGEpOwogCi0gICAgSW5saW5lVGV4dEJveCogZmluZE5leHQoaW50IG9mZnNldCwgaW50JiBwb3Np
dGlvbikgY29uc3Q7CisgICAgTGVnYWN5SW5saW5lVGV4dEJveCogZmluZE5leHQoaW50IG9mZnNl
dCwgaW50JiBwb3NpdGlvbikgY29uc3Q7CiAKICAgICBMYXlvdXRSZWN0IHZpc3VhbE92ZXJmbG93
Qm91bmRpbmdCb3goY29uc3QgUmVuZGVyVGV4dCYpIGNvbnN0OwogCkBAIC02OSw4ICs2OSw4IEBA
IHB1YmxpYzoKIHByaXZhdGU6CiAgICAgdm9pZCBjaGVja0NvbnNpc3RlbmN5KCkgY29uc3Q7CiAK
LSAgICBJbmxpbmVUZXh0Qm94KiBtX2ZpcnN0OwotICAgIElubGluZVRleHRCb3gqIG1fbGFzdDsK
KyAgICBMZWdhY3lJbmxpbmVUZXh0Qm94KiBtX2ZpcnN0OworICAgIExlZ2FjeUlubGluZVRleHRC
b3gqIG1fbGFzdDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmNwcAppbmRleCA4MTcwMmY0NWQ0YzEuLjMw
MTcyYTljODJhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRy
ZWVBc1RleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUcmVlQXNU
ZXh0LmNwcApAQCAtMzYsOCArMzYsOCBAQAogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1
ZGUgIkhUTUxTcGFuRWxlbWVudC5oIgogI2luY2x1ZGUgIklubGluZUl0ZXJhdG9yLmgiCi0jaW5j
bHVkZSAiSW5saW5lVGV4dEJveC5oIgogI2luY2x1ZGUgIkxheW91dEludGVncmF0aW9uUnVuSXRl
cmF0b3IuaCIKKyNpbmNsdWRlICJMZWdhY3lJbmxpbmVUZXh0Qm94LmgiCiAjaW5jbHVkZSAiTG9n
Z2luZy5oIgogI2luY2x1ZGUgIlByaW50Q29udGV4dC5oIgogI2luY2x1ZGUgIlBzZXVkb0VsZW1l
bnQuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0RGVjb3JhdGlv
blBhaW50ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0RGVjb3JhdGlvblBhaW50
ZXIuaAppbmRleCAyNjJkZWRjN2E1YmYuLjg3ZTIwNjZmODgyMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1RleHREZWNvcmF0aW9uUGFpbnRlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9UZXh0RGVjb3JhdGlvblBhaW50ZXIuaApAQCAtMzMsNyArMzMsNyBA
QCBjbGFzcyBGaWx0ZXJPcGVyYXRpb25zOwogY2xhc3MgRm9udENhc2NhZGU7CiBjbGFzcyBGbG9h
dFJlY3Q7CiBjbGFzcyBHcmFwaGljc0NvbnRleHQ7Ci1jbGFzcyBJbmxpbmVUZXh0Qm94OworY2xh
c3MgTGVnYWN5SW5saW5lVGV4dEJveDsKIGNsYXNzIFJlbmRlck9iamVjdDsKIGNsYXNzIFJlbmRl
clN0eWxlOwogY2xhc3MgUmVuZGVyVGV4dDsKQEAgLTQ1LDcgKzQ1LDcgQEAgcHVibGljOgogICAg
IHN0cnVjdCBTdHlsZXM7CiAgICAgVGV4dERlY29yYXRpb25QYWludGVyKEdyYXBoaWNzQ29udGV4
dCYsIE9wdGlvblNldDxUZXh0RGVjb3JhdGlvbj4gZGVjb3JhdGlvbnMsIGNvbnN0IFJlbmRlclRl
eHQmLCBib29sIGlzRmlyc3RMaW5lLCBjb25zdCBGb250Q2FzY2FkZSYsIHN0ZDo6b3B0aW9uYWw8
U3R5bGVzPiA9IHN0ZDo6bnVsbG9wdCk7CiAgICAgCi0gICAgdm9pZCBzZXRJbmxpbmVUZXh0Qm94
KGNvbnN0IElubGluZVRleHRCb3gqIGlubGluZVRleHRCb3gpIHsgbV9pbmxpbmVUZXh0Qm94ID0g
aW5saW5lVGV4dEJveDsgfQorICAgIHZvaWQgc2V0SW5saW5lVGV4dEJveChjb25zdCBMZWdhY3lJ
bmxpbmVUZXh0Qm94KiBpbmxpbmVUZXh0Qm94KSB7IG1faW5saW5lVGV4dEJveCA9IGlubGluZVRl
eHRCb3g7IH0KICAgICB2b2lkIHNldElzSG9yaXpvbnRhbChib29sIGlzSG9yaXpvbnRhbCkgeyBt
X2lzSG9yaXpvbnRhbCA9IGlzSG9yaXpvbnRhbDsgfQogICAgIHZvaWQgc2V0V2lkdGgoZmxvYXQg
d2lkdGgpIHsgbV93aWR0aCA9IHdpZHRoOyB9CiAgICAgdm9pZCBzZXRUZXh0U2hhZG93KGNvbnN0
IFNoYWRvd0RhdGEqIHRleHRTaGFkb3cpIHsgbV9zaGFkb3cgPSB0ZXh0U2hhZG93OyB9CkBAIC03
OCw3ICs3OCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2lzSG9yaXpvbnRhbCB7IHRydWUgfTsK
ICAgICBjb25zdCBTaGFkb3dEYXRhKiBtX3NoYWRvdyB7IG51bGxwdHIgfTsKICAgICBjb25zdCBG
aWx0ZXJPcGVyYXRpb25zKiBtX3NoYWRvd0NvbG9yRmlsdGVyIHsgbnVsbHB0ciB9OwotICAgIGNv
bnN0IElubGluZVRleHRCb3gqIG1faW5saW5lVGV4dEJveCB7IG51bGxwdHIgfTsKKyAgICBjb25z
dCBMZWdhY3lJbmxpbmVUZXh0Qm94KiBtX2lubGluZVRleHRCb3ggeyBudWxscHRyIH07CiAgICAg
Y29uc3QgRm9udENhc2NhZGUmIG1fZm9udDsKIAogICAgIFN0eWxlcyBtX3N0eWxlczsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0UGFpbnRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvVGV4dFBhaW50ZXIuY3BwCmluZGV4IGJiYTExYjNmNDQ0MC4uNzQ4
NTJhNmIwZDI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dFBhaW50
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0UGFpbnRlci5jcHAKQEAg
LTI3LDggKzI3LDggQEAKICNpbmNsdWRlICJGaWx0ZXJPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAi
R3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiSFRNTFBhcnNlcklkaW9tcy5oIgotI2luY2x1
ZGUgIklubGluZVRleHRCb3guaCIKICNpbmNsdWRlICJMYXlvdXRJbnRlZ3JhdGlvblJ1bi5oIgor
I2luY2x1ZGUgIkxlZ2FjeUlubGluZVRleHRCb3guaCIKICNpbmNsdWRlICJSZW5kZXJDb21iaW5l
VGV4dC5oIgogI2luY2x1ZGUgIlJlbmRlckxheWVyLmgiCiAjaW5jbHVkZSAiUnVudGltZUVuYWJs
ZWRGZWF0dXJlcy5oIgpAQCAtMjI3LDcgKzIyNyw3IEBAIHZvaWQgVGV4dFBhaW50ZXI6OnBhaW50
UmFuZ2UoY29uc3QgVGV4dFJ1biYgdGV4dFJ1biwgY29uc3QgRmxvYXRSZWN0JiBib3hSZWN0LCBj
CiAKIHZvaWQgVGV4dFBhaW50ZXI6OmNsZWFyR2x5cGhEaXNwbGF5TGlzdHMoKQogewotICAgIEds
eXBoRGlzcGxheUxpc3RDYWNoZTxJbmxpbmVUZXh0Qm94Pjo6c2luZ2xldG9uKCkuY2xlYXIoKTsK
KyAgICBHbHlwaERpc3BsYXlMaXN0Q2FjaGU8TGVnYWN5SW5saW5lVGV4dEJveD46OnNpbmdsZXRv
bigpLmNsZWFyKCk7CiAjaWYgRU5BQkxFKExBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCiAgICAg
aWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkubGF5b3V0Rm9ybWF0
dGluZ0NvbnRleHRJbnRlZ3JhdGlvbkVuYWJsZWQoKSkKICAgICAgICAgR2x5cGhEaXNwbGF5TGlz
dENhY2hlPExheW91dEludGVncmF0aW9uOjpSdW4+OjpzaW5nbGV0b24oKS5jbGVhcigpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmVUZXh0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lVGV4dC5j
cHAKaW5kZXggZmRmYjk1OGU3NTg0Li45N2Y1NWIxMmZjYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lVGV4dC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmVUZXh0LmNwcApAQCAtMTEyLDcg
KzExMiw3IEBAIHZvaWQgUmVuZGVyU1ZHSW5saW5lVGV4dDo6c3R5bGVEaWRDaGFuZ2UoU3R5bGVE
aWZmZXJlbmNlIGRpZmYsIGNvbnN0IFJlbmRlclN0eWxlCiAgICAgICAgIHRleHRBbmNlc3Rvci0+
c3VidHJlZVN0eWxlRGlkQ2hhbmdlKHRoaXMpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8SW5saW5l
VGV4dEJveD4gUmVuZGVyU1ZHSW5saW5lVGV4dDo6Y3JlYXRlVGV4dEJveCgpCitzdGQ6OnVuaXF1
ZV9wdHI8TGVnYWN5SW5saW5lVGV4dEJveD4gUmVuZGVyU1ZHSW5saW5lVGV4dDo6Y3JlYXRlVGV4
dEJveCgpCiB7CiAgICAgYXV0byBib3ggPSBtYWtlVW5pcXVlPFNWR0lubGluZVRleHRCb3g+KCp0
aGlzKTsKICAgICBib3gtPnNldEhhc1ZpcnR1YWxMb2dpY2FsSGVpZ2h0KCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZVRleHQuaCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lVGV4dC5oCmluZGV4IDI4
ZTk1YTBiYjRiZC4uZTAzYjc0N2IwNzlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZVRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZVRleHQuaApAQCAtNjMsNyArNjMsNyBAQCBwcml2YXRl
OgogCiAgICAgVmlzaWJsZVBvc2l0aW9uIHBvc2l0aW9uRm9yUG9pbnQoY29uc3QgTGF5b3V0UG9p
bnQmLCBjb25zdCBSZW5kZXJGcmFnbWVudENvbnRhaW5lciopIG92ZXJyaWRlOwogICAgIEludFJl
Y3QgbGluZXNCb3VuZGluZ0JveCgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHN0ZDo6dW5pcXVlX3B0
cjxJbmxpbmVUZXh0Qm94PiBjcmVhdGVUZXh0Qm94KCkgb3ZlcnJpZGU7CisgICAgc3RkOjp1bmlx
dWVfcHRyPExlZ2FjeUlubGluZVRleHRCb3g+IGNyZWF0ZVRleHRCb3goKSBvdmVycmlkZTsKIAog
ICAgIGZsb2F0IG1fc2NhbGluZ0ZhY3RvcjsKICAgICBGb250Q2FzY2FkZSBtX3NjYWxlZEZvbnQ7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRleHRC
b3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdJbmxpbmVUZXh0Qm94LmNw
cAppbmRleCAzZDUwYjA5MzYxZWQuLmU1Njk5MWY3MGQwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdJbmxpbmVUZXh0Qm94LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRleHRCb3guY3BwCkBAIC00Miw3ICs0Miw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFNWR0lu
bGluZVRleHRCb3gpOwogCi1zdHJ1Y3QgRXhwZWN0ZWRTVkdJbmxpbmVUZXh0Qm94U2l6ZSA6IHB1
YmxpYyBJbmxpbmVUZXh0Qm94IHsKK3N0cnVjdCBFeHBlY3RlZFNWR0lubGluZVRleHRCb3hTaXpl
IDogcHVibGljIExlZ2FjeUlubGluZVRleHRCb3ggewogICAgIGZsb2F0IGZsb2F0MTsKICAgICB1
aW50MzJfdCBiaXRmaWVsZHMgOiA1OwogICAgIHZvaWQqIHBvaW50ZXI7CkBAIC01Miw3ICs1Miw3
IEBAIHN0cnVjdCBFeHBlY3RlZFNWR0lubGluZVRleHRCb3hTaXplIDogcHVibGljIElubGluZVRl
eHRCb3ggewogQ09NUElMRV9BU1NFUlQoc2l6ZW9mKFNWR0lubGluZVRleHRCb3gpID09IHNpemVv
ZihFeHBlY3RlZFNWR0lubGluZVRleHRCb3hTaXplKSwgU1ZHSW5saW5lVGV4dEJveF9pc19ub3Rf
b2ZfZXhwZWN0ZWRfc2l6ZSk7CiAKIFNWR0lubGluZVRleHRCb3g6OlNWR0lubGluZVRleHRCb3go
UmVuZGVyU1ZHSW5saW5lVGV4dCYgcmVuZGVyZXIpCi0gICAgOiBJbmxpbmVUZXh0Qm94KHJlbmRl
cmVyKQorICAgIDogTGVnYWN5SW5saW5lVGV4dEJveChyZW5kZXJlcikKICAgICAsIG1fcGFpbnRp
bmdSZXNvdXJjZU1vZGUoT3B0aW9uU2V0PFJlbmRlclNWR1Jlc291cmNlTW9kZT4oKS50b1Jhdygp
KQogICAgICwgbV9zdGFydHNOZXdUZXh0Q2h1bmsoZmFsc2UpCiB7CkBAIC02MCw3ICs2MCw3IEBA
IFNWR0lubGluZVRleHRCb3g6OlNWR0lubGluZVRleHRCb3goUmVuZGVyU1ZHSW5saW5lVGV4dCYg
cmVuZGVyZXIpCiAKIHZvaWQgU1ZHSW5saW5lVGV4dEJveDo6ZGlydHlPd25MaW5lQm94ZXMoKQog
ewotICAgIElubGluZVRleHRCb3g6OmRpcnR5TGluZUJveGVzKCk7CisgICAgTGVnYWN5SW5saW5l
VGV4dEJveDo6ZGlydHlMaW5lQm94ZXMoKTsKIAogICAgIC8vIENsZWFyIHRoZSBub3cgc3RhbGUg
dGV4dCBmcmFnbWVudHMKICAgICBjbGVhclRleHRGcmFnbWVudHMoKTsKQEAgLTcyLDcgKzcyLDcg
QEAgdm9pZCBTVkdJbmxpbmVUZXh0Qm94OjpkaXJ0eUxpbmVCb3hlcygpCiAKICAgICAvLyBBbmQg
Y2xlYXIgYW55IGZvbGxvd2luZyB0ZXh0IGZyYWdtZW50cyBhcyB0aGUgdGV4dCBvbiB3aGljaCB0
aGV5CiAgICAgLy8gZGVwZW5kIG1heSBub3cgbm8gbG9uZ2VyIGV4aXN0LCBvciBnbHlwaCBwb3Np
dGlvbnMgbWF5IGJlIHdyb25nCi0gICAgZm9yIChJbmxpbmVUZXh0Qm94KiBuZXh0Qm94ID0gbmV4
dFRleHRCb3goKTsgbmV4dEJveDsgbmV4dEJveCA9IG5leHRCb3gtPm5leHRUZXh0Qm94KCkpCisg
ICAgZm9yIChhdXRvKiBuZXh0Qm94ID0gbmV4dFRleHRCb3goKTsgbmV4dEJveDsgbmV4dEJveCA9
IG5leHRCb3gtPm5leHRUZXh0Qm94KCkpCiAgICAgICAgIG5leHRCb3gtPmRpcnR5T3duTGluZUJv
eGVzKCk7CiB9CiAKQEAgLTg2LDcgKzg2LDcgQEAgaW50IFNWR0lubGluZVRleHRCb3g6Om9mZnNl
dEZvclBvc2l0aW9uKGZsb2F0LCBib29sKSBjb25zdAogCiBpbnQgU1ZHSW5saW5lVGV4dEJveDo6
b2Zmc2V0Rm9yUG9zaXRpb25JbkZyYWdtZW50KGNvbnN0IFNWR1RleHRGcmFnbWVudCYgZnJhZ21l
bnQsIGZsb2F0IHBvc2l0aW9uLCBib29sIGluY2x1ZGVQYXJ0aWFsR2x5cGhzKSBjb25zdAogewot
ICAgZmxvYXQgc2NhbGluZ0ZhY3RvciA9IHJlbmRlcmVyKCkuc2NhbGluZ0ZhY3RvcigpOworICAg
IGZsb2F0IHNjYWxpbmdGYWN0b3IgPSByZW5kZXJlcigpLnNjYWxpbmdGYWN0b3IoKTsKICAgICBB
U1NFUlQoc2NhbGluZ0ZhY3Rvcik7CiAKICAgICBUZXh0UnVuIHRleHRSdW4gPSBjb25zdHJ1Y3RU
ZXh0UnVuKHJlbmRlcmVyKCkuc3R5bGUoKSwgZnJhZ21lbnQpOwpAQCAtMjQwLDcgKzI0MCw3IEBA
IHZvaWQgU1ZHSW5saW5lVGV4dEJveDo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0
IExheW91dFBvaW50JiBwYWludE9mZnNlCiAgICAgaWYgKHJlbmRlcmVyKCkuc3R5bGUoKS52aXNp
YmlsaXR5KCkgIT0gVmlzaWJpbGl0eTo6VmlzaWJsZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
Ly8gTm90ZTogV2UncmUgZXhwbGljaXRseSBub3Qgc3VwcG9ydGluZyBjb21wb3NpdGlvbiAmIGN1
c3RvbSB1bmRlcmxpbmVzIGFuZCBjdXN0b20gaGlnaGxpZ2h0ZXJzIC0gdW5saWtlIElubGluZVRl
eHRCb3guCisgICAgLy8gTm90ZTogV2UncmUgZXhwbGljaXRseSBub3Qgc3VwcG9ydGluZyBjb21w
b3NpdGlvbiAmIGN1c3RvbSB1bmRlcmxpbmVzIGFuZCBjdXN0b20gaGlnaGxpZ2h0ZXJzIC0gdW5s
aWtlIExlZ2FjeUlubGluZVRleHRCb3guCiAgICAgLy8gSWYgd2UgZXZlciBuZWVkIHRoYXQgZm9y
IFNWRywgaXQncyB2ZXJ5IGVhc3kgdG8gcmVmYWN0b3IgYW5kIHJldXNlIHRoZSBjb2RlLgogCiAg
ICAgYXV0byYgcGFyZW50UmVuZGVyZXIgPSBwYXJlbnQoKS0+cmVuZGVyZXIoKTsKQEAgLTYzOCw3
ICs2MzgsNyBAQCBGbG9hdFJlY3QgU1ZHSW5saW5lVGV4dEJveDo6Y2FsY3VsYXRlQm91bmRhcmll
cygpIGNvbnN0CiAKIGJvb2wgU1ZHSW5saW5lVGV4dEJveDo6bm9kZUF0UG9pbnQoY29uc3QgSGl0
VGVzdFJlcXVlc3QmIHJlcXVlc3QsIEhpdFRlc3RSZXN1bHQmIHJlc3VsdCwgY29uc3QgSGl0VGVz
dExvY2F0aW9uJiBsb2NhdGlvbkluQ29udGFpbmVyLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11
bGF0ZWRPZmZzZXQsIExheW91dFVuaXQsIExheW91dFVuaXQsIEhpdFRlc3RBY3Rpb24pCiB7Ci0g
ICAgLy8gRklYTUU6IGludGVncmF0ZSB3aXRoIElubGluZVRleHRCb3g6Om5vZGVBdFBvaW50IGJl
dHRlci4KKyAgICAvLyBGSVhNRTogaW50ZWdyYXRlIHdpdGggTGVnYWN5SW5saW5lVGV4dEJveDo6
bm9kZUF0UG9pbnQgYmV0dGVyLgogICAgIEFTU0VSVCghaXNMaW5lQnJlYWsoKSk7CiAKICAgICBQ
b2ludGVyRXZlbnRzSGl0UnVsZXMgaGl0UnVsZXMoUG9pbnRlckV2ZW50c0hpdFJ1bGVzOjpTVkdf
VEVYVF9ISVRURVNUSU5HLCByZXF1ZXN0LCByZW5kZXJlcigpLnN0eWxlKCkucG9pbnRlckV2ZW50
cygpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHSW5saW5l
VGV4dEJveC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdJbmxpbmVUZXh0Qm94
LmgKaW5kZXggZGNlZjNlMmZlODliLi42OWJkMjU2M2IzZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHSW5saW5lVGV4dEJveC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvU1ZHSW5saW5lVGV4dEJveC5oCkBAIC0yMSw3ICsyMSw3IEBACiAK
ICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiSW5saW5lVGV4dEJveC5oIgorI2luY2x1ZGUgIkxl
Z2FjeUlubGluZVRleHRCb3guaCIKICNpbmNsdWRlICJSZW5kZXJTVkdJbmxpbmVUZXh0LmgiCiAj
aW5jbHVkZSAiUmVuZGVyU1ZHUmVzb3VyY2UuaCIKICNpbmNsdWRlICJTVkdUZXh0RnJhZ21lbnQu
aCIKQEAgLTMxLDEyICszMSwxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBSZW5kZXJT
VkdSZXNvdXJjZTsKIGNsYXNzIFNWR1Jvb3RJbmxpbmVCb3g7CiAKLWNsYXNzIFNWR0lubGluZVRl
eHRCb3ggZmluYWwgOiBwdWJsaWMgSW5saW5lVGV4dEJveCB7CitjbGFzcyBTVkdJbmxpbmVUZXh0
Qm94IGZpbmFsIDogcHVibGljIExlZ2FjeUlubGluZVRleHRCb3ggewogICAgIFdURl9NQUtFX0lT
T19BTExPQ0FURUQoU1ZHSW5saW5lVGV4dEJveCk7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgU1ZH
SW5saW5lVGV4dEJveChSZW5kZXJTVkdJbmxpbmVUZXh0Jik7CiAKLSAgICBSZW5kZXJTVkdJbmxp
bmVUZXh0JiByZW5kZXJlcigpIGNvbnN0IHsgcmV0dXJuIGRvd25jYXN0PFJlbmRlclNWR0lubGlu
ZVRleHQ+KElubGluZVRleHRCb3g6OnJlbmRlcmVyKCkpOyB9CisgICAgUmVuZGVyU1ZHSW5saW5l
VGV4dCYgcmVuZGVyZXIoKSBjb25zdCB7IHJldHVybiBkb3duY2FzdDxSZW5kZXJTVkdJbmxpbmVU
ZXh0PihMZWdhY3lJbmxpbmVUZXh0Qm94OjpyZW5kZXJlcigpKTsgfQogCiAgICAgZmxvYXQgdmly
dHVhbExvZ2ljYWxIZWlnaHQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2xvZ2ljYWxIZWln
aHQ7IH0KICAgICB2b2lkIHNldExvZ2ljYWxIZWlnaHQoZmxvYXQgaGVpZ2h0KSB7IG1fbG9naWNh
bEhlaWdodCA9IGhlaWdodDsgfQpAQCAtNzAsNyArNzAsNyBAQCBwdWJsaWM6CiAgICAgT3B0aW9u
U2V0PFJlbmRlclNWR1Jlc291cmNlTW9kZT4gcGFpbnRpbmdSZXNvdXJjZU1vZGUoKSBjb25zdCB7
IHJldHVybiBPcHRpb25TZXQ8UmVuZGVyU1ZHUmVzb3VyY2VNb2RlPjo6ZnJvbVJhdyhtX3BhaW50
aW5nUmVzb3VyY2VNb2RlKTsgfQogICAgIHZvaWQgc2V0UGFpbnRpbmdSZXNvdXJjZU1vZGUoT3B0
aW9uU2V0PFJlbmRlclNWR1Jlc291cmNlTW9kZT4gbW9kZSkgeyBtX3BhaW50aW5nUmVzb3VyY2VN
b2RlID0gbW9kZS50b1JhdygpOyB9CiAKLSAgICBTVkdJbmxpbmVUZXh0Qm94KiBuZXh0VGV4dEJv
eCgpIGNvbnN0IHsgcmV0dXJuIGRvd25jYXN0PFNWR0lubGluZVRleHRCb3g+KElubGluZVRleHRC
b3g6Om5leHRUZXh0Qm94KCkpOyB9CisgICAgU1ZHSW5saW5lVGV4dEJveCogbmV4dFRleHRCb3go
KSBjb25zdCB7IHJldHVybiBkb3duY2FzdDxTVkdJbmxpbmVUZXh0Qm94PihMZWdhY3lJbmxpbmVU
ZXh0Qm94OjpuZXh0VGV4dEJveCgpKTsgfQogICAgIAogcHJpdmF0ZToKICAgICBib29sIGlzU1ZH
SW5saW5lVGV4dEJveCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyVHJlZUFzVGV4dC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclRyZWVBc1RleHQuY3BwCmlu
ZGV4IDhmNGZlMDU4ZTNjMi4uMzFlZWNkODA2YmZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclRyZWVBc1RleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyVHJlZUFzVGV4dC5jcHAKQEAgLTM2Miw3ICszNjIs
NyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgd3JpdGVTVkdJbmxpbmVUZXh0Qm94KFRleHRTdHJlYW0m
IHRzLCBTVkdJbmxpbmVUZXh0Qm94KiB0ZXh0QgogCiBzdGF0aWMgaW5saW5lIHZvaWQgd3JpdGVT
VkdJbmxpbmVUZXh0Qm94ZXMoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFJlbmRlclRleHQmIHRleHQp
CiB7Ci0gICAgZm9yIChJbmxpbmVUZXh0Qm94KiBib3ggPSB0ZXh0LmZpcnN0VGV4dEJveCgpOyBi
b3g7IGJveCA9IGJveC0+bmV4dFRleHRCb3goKSkgeworICAgIGZvciAoYXV0byogYm94ID0gdGV4
dC5maXJzdFRleHRCb3goKTsgYm94OyBib3ggPSBib3gtPm5leHRUZXh0Qm94KCkpIHsKICAgICAg
ICAgaWYgKCFpczxTVkdJbmxpbmVUZXh0Qm94PigqYm94KSkKICAgICAgICAgICAgIGNvbnRpbnVl
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9JbmxpbmVUZXh0Qm94U3R5bGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvSW5saW5lVGV4dEJveFN0eWxlLmNwcAppbmRleCBl
ZjQ5YjNjZTRiZGMuLjk4ZDQ4YjVjOTEwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5
bGUvSW5saW5lVGV4dEJveFN0eWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9Jbmxp
bmVUZXh0Qm94U3R5bGUuY3BwCkBAIC0yNywxMyArMjcsMTMgQEAKICNpbmNsdWRlICJJbmxpbmVU
ZXh0Qm94U3R5bGUuaCIKIAogI2luY2x1ZGUgIkZvbnRDYXNjYWRlLmgiCi0jaW5jbHVkZSAiSW5s
aW5lVGV4dEJveC5oIgorI2luY2x1ZGUgIkxlZ2FjeUlubGluZVRleHRCb3guaCIKICNpbmNsdWRl
ICJMZWdhY3lSb290SW5saW5lQm94LmgiCiAjaW5jbHVkZSAiVGV4dFVuZGVybGluZU9mZnNldC5o
IgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCi1mbG9hdCBjb21wdXRlVW5kZXJsaW5lT2Zm
c2V0KFRleHRVbmRlcmxpbmVQb3NpdGlvbiB1bmRlcmxpbmVQb3NpdGlvbiwgVGV4dFVuZGVybGlu
ZU9mZnNldCB1bmRlcmxpbmVPZmZzZXQsIGNvbnN0IEZvbnRNZXRyaWNzJiBmb250TWV0cmljcywg
Y29uc3QgSW5saW5lVGV4dEJveCogaW5saW5lVGV4dEJveCwgZmxvYXQgZGVmYXVsdEdhcCkKK2Zs
b2F0IGNvbXB1dGVVbmRlcmxpbmVPZmZzZXQoVGV4dFVuZGVybGluZVBvc2l0aW9uIHVuZGVybGlu
ZVBvc2l0aW9uLCBUZXh0VW5kZXJsaW5lT2Zmc2V0IHVuZGVybGluZU9mZnNldCwgY29uc3QgRm9u
dE1ldHJpY3MmIGZvbnRNZXRyaWNzLCBjb25zdCBMZWdhY3lJbmxpbmVUZXh0Qm94KiBpbmxpbmVU
ZXh0Qm94LCBmbG9hdCBkZWZhdWx0R2FwKQogewogICAgIC8vIFRoaXMgcmVwcmVzZW50cyB0aGUg
Z2FwIGJldHdlZW4gdGhlIGJhc2VsaW5lIGFuZCB0aGUgY2xvc2VzdCBlZGdlIG9mIHRoZSB1bmRl
cmxpbmUuCiAgICAgZmxvYXQgZ2FwID0gc3RkOjptYXg8aW50PigxLCBzdGQ6OmNlaWwoZGVmYXVs
dEdhcCAvIDIuMGYpKTsKQEAgLTEwMiw3ICsxMDIsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZXh0
ZW5kSW50VG9GbG9hdChpbnQmIGV4dGVuZE1lLCBmbG9hdCBleHRlbmRUbykKICAgICBleHRlbmRN
ZSA9IHN0ZDo6bWF4KGV4dGVuZE1lLCBzdGF0aWNfY2FzdDxpbnQ+KGNlaWxmKGV4dGVuZFRvKSkp
OwogfQogCi1HbHlwaE92ZXJmbG93IHZpc3VhbE92ZXJmbG93Rm9yRGVjb3JhdGlvbnMoY29uc3Qg
UmVuZGVyU3R5bGUmIGxpbmVTdHlsZSwgY29uc3QgSW5saW5lVGV4dEJveCogaW5saW5lVGV4dEJv
eCkKK0dseXBoT3ZlcmZsb3cgdmlzdWFsT3ZlcmZsb3dGb3JEZWNvcmF0aW9ucyhjb25zdCBSZW5k
ZXJTdHlsZSYgbGluZVN0eWxlLCBjb25zdCBMZWdhY3lJbmxpbmVUZXh0Qm94KiBpbmxpbmVUZXh0
Qm94KQogewogICAgIEFTU0VSVCghaW5saW5lVGV4dEJveCB8fCBpbmxpbmVUZXh0Qm94LT5saW5l
U3R5bGUoKSA9PSBsaW5lU3R5bGUpOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3R5bGUvSW5saW5lVGV4dEJveFN0eWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9JbmxpbmVU
ZXh0Qm94U3R5bGUuaAppbmRleCAwZDgzYmFmNGQzMGQuLmE5YjA0NGNkMmFlNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvSW5saW5lVGV4dEJveFN0eWxlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvc3R5bGUvSW5saW5lVGV4dEJveFN0eWxlLmgKQEAgLTMwLDcgKzMwLDcgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgIAotY2xhc3MgSW5saW5lVGV4dEJveDsKK2NsYXNzIExl
Z2FjeUlubGluZVRleHRCb3g7CiBjbGFzcyBSZW5kZXJTdHlsZTsKIGNsYXNzIFRleHRVbmRlcmxp
bmVPZmZzZXQ7CiAKQEAgLTUxLDcgKzUxLDcgQEAgc3RydWN0IFdhdnlTdHJva2VQYXJhbWV0ZXJz
IHsKICAgICBmbG9hdCBzdGVwIHsgMCB9OwogfTsKIFdhdnlTdHJva2VQYXJhbWV0ZXJzIGdldFdh
dnlTdHJva2VQYXJhbWV0ZXJzKGZsb2F0IGZvbnRTaXplKTsKLUdseXBoT3ZlcmZsb3cgdmlzdWFs
T3ZlcmZsb3dGb3JEZWNvcmF0aW9ucyhjb25zdCBSZW5kZXJTdHlsZSYgbGluZVN0eWxlLCBjb25z
dCBJbmxpbmVUZXh0Qm94Kik7Ci1mbG9hdCBjb21wdXRlVW5kZXJsaW5lT2Zmc2V0KFRleHRVbmRl
cmxpbmVQb3NpdGlvbiwgVGV4dFVuZGVybGluZU9mZnNldCwgY29uc3QgRm9udE1ldHJpY3MmLCBj
b25zdCBJbmxpbmVUZXh0Qm94KiwgZmxvYXQgdGV4dERlY29yYXRpb25UaGlja25lc3MpOworR2x5
cGhPdmVyZmxvdyB2aXN1YWxPdmVyZmxvd0ZvckRlY29yYXRpb25zKGNvbnN0IFJlbmRlclN0eWxl
JiBsaW5lU3R5bGUsIGNvbnN0IExlZ2FjeUlubGluZVRleHRCb3gqKTsKK2Zsb2F0IGNvbXB1dGVV
bmRlcmxpbmVPZmZzZXQoVGV4dFVuZGVybGluZVBvc2l0aW9uLCBUZXh0VW5kZXJsaW5lT2Zmc2V0
LCBjb25zdCBGb250TWV0cmljcyYsIGNvbnN0IExlZ2FjeUlubGluZVRleHRCb3gqLCBmbG9hdCB0
ZXh0RGVjb3JhdGlvblRoaWNrbmVzcyk7CiAgICAgCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>
<flag name="review"
          id="452068"
          type_id="1"
          status="+"
          setter="sam"
    />
    <flag name="commit-queue"
          id="452070"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430647</attachid>
            <date>2021-06-05 00:50:16 -0700</date>
            <delta_ts>2021-06-05 05:19:20 -0700</delta_ts>
            <desc>patch</desc>
            <filename>legacy-inline-text-box-rename-3.patch</filename>
            <type>text/plain</type>
            <size>118933</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA4NzI4YTQzOWU0OGUuLmY1YmM5YTY5OTE0YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDIwNiBAQAorMjAyMS0wNi0wNSAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5j
b20+CisKKyAgICAgICAgUmVuYW1lIElubGluZVRleHRCb3ggdG8gTGVnYWN5SW5saW5lVGV4dEJv
eAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2NjMz
CisKKyAgICAgICAgUnViYmVyLXN0YW1wZWQgYnkgU2FtIFdlaW5pZy4KKworICAgICAgICBNb3Jl
IGxlZ2FjeSBsaW5lIGxheW91dCBuYW1pbmcuCisKKyAgICAgICAgKiBIZWFkZXJzLmNtYWtlOgor
ICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgKiBkb20vQ29udGFpbmVyTm9kZS5jcHA6CisgICAgICAgICog
ZG9tL0RvY3VtZW50TWFya2VyQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudE1hcmtlckNvbnRyb2xsZXI6OmFkZE1hcmtlcik6CisgICAgICAgICogZG9tL1Bvc2l0aW9u
LmNwcDoKKyAgICAgICAgKiBlZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcDoKKyAgICAg
ICAgKiBlZGl0aW5nL0VkaXRvci5oOgorICAgICAgICAqIGVkaXRpbmcvRnJhbWVTZWxlY3Rpb24u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246OmRlYnVnUmVuZGVyZXIgY29u
c3QpOgorICAgICAgICAqIGVkaXRpbmcvUmVuZGVyZWRQb3NpdGlvbi5jcHA6CisgICAgICAgICog
ZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwOgorICAgICAgICAqIGVkaXRpbmcvVmlzaWJsZVBvc2l0
aW9uLmNwcDoKKyAgICAgICAgKiBsYXlvdXQvVmVyaWZpY2F0aW9uLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkxheW91dDo6Y2hlY2tGb3JNYXRjaGluZ1RleHRSdW5zKToKKyAgICAgICAgKFdlYkNv
cmU6OkxheW91dDo6b3V0cHV0TWlzbWF0Y2hpbmdDb21wbGV4TGluZUluZm9ybWF0aW9uSWZOZWVk
ZWQpOgorICAgICAgICAqIGxheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL3RleHQvVGV4
dFV0aWwuaDoKKyAgICAgICAgKiBsYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25S
dW5JdGVyYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6Zmly
c3RUZXh0UnVuSW5UZXh0T3JkZXJGb3IpOgorICAgICAgICAqIGxheW91dC9pbnRlZ3JhdGlvbi9M
YXlvdXRJbnRlZ3JhdGlvblJ1bkl0ZXJhdG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJ
bnRlZ3JhdGlvbjo6UGF0aFRleHRSdW46OmxlZ2FjeUlubGluZUJveCBjb25zdCk6CisgICAgICAg
ICogbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uUnVuSXRlcmF0b3JMZWdhY3lQ
YXRoLmg6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6UnVuSXRlcmF0b3JM
ZWdhY3lQYXRoOjp0cmF2ZXJzZU5leHRUZXh0UnVuSW5UZXh0T3JkZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5b3V0SW50ZWdyYXRpb246OlJ1bkl0ZXJhdG9yTGVnYWN5UGF0aDo6aW5saW5lVGV4
dEJveCBjb25zdCk6CisgICAgICAgICogbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0Qm94Lmg6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJveDo6aXNJbmxpbmVUZXh0Qm94IGNvbnN0KToKKyAg
ICAgICAgKiBsYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRJbmxpbmVUZXh0Qm94LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lVGV4dEJveDo6SW5saW5lVGV4dEJveCk6CisgICAg
ICAgICogcmVuZGVyaW5nL0NhcmV0UmVjdENvbXB1dGF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmNvbXB1dGVDYXJldFJlY3RGb3JTVkdJbmxpbmVUZXh0KToKKyAgICAgICAgKiByZW5kZXJp
bmcvRWxsaXBzaXNCb3guY3BwOgorICAgICAgICAqIHJlbmRlcmluZy9MZWdhY3lJbmxpbmVCb3gu
aDoKKyAgICAgICAgKiByZW5kZXJpbmcvTGVnYWN5SW5saW5lRmxvd0JveC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpMZWdhY3lJbmxpbmVGbG93Qm94OjphZGRUb0xpbmUpOgorICAgICAgICAoV2Vi
Q29yZTo6TGVnYWN5SW5saW5lRmxvd0JveDo6cGxhY2VCb3hSYW5nZUluSW5saW5lRGlyZWN0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUlubGluZUZsb3dCb3g6OnJlcXVpcmVzSWRlb2dy
YXBoaWNCYXNlbGluZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lJbmxpbmVGbG93
Qm94OjpwbGFjZUJveGVzSW5CbG9ja0RpcmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpMZWdh
Y3lJbmxpbmVGbG93Qm94OjphZGRUZXh0Qm94VmlzdWFsT3ZlcmZsb3cpOgorICAgICAgICAoV2Vi
Q29yZTo6TGVnYWN5SW5saW5lRmxvd0JveDo6Y29tcHV0ZU92ZXJmbG93KToKKyAgICAgICAgKFdl
YkNvcmU6OkxlZ2FjeUlubGluZUZsb3dCb3g6OmNvbXB1dGVPdmVyQW5ub3RhdGlvbkFkanVzdG1l
bnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5SW5saW5lRmxvd0JveDo6Y29tcHV0
ZVVuZGVyQW5ub3RhdGlvbkFkanVzdG1lbnQgY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9M
ZWdhY3lJbmxpbmVGbG93Qm94Lmg6CisgICAgICAgICogcmVuZGVyaW5nL0xlZ2FjeUlubGluZVRl
eHRCb3guY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRl
eHRCb3guY3BwLgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5SW5saW5lVGV4dEJveDo6fkxlZ2Fj
eUlubGluZVRleHRCb3gpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5SW5saW5lVGV4dEJveDo6
aGFzVGV4dENvbnRlbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5SW5saW5lVGV4
dEJveDo6bWFya0RpcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUlubGluZVRleHRCb3g6
OmxvZ2ljYWxPdmVyZmxvd1JlY3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5SW5s
aW5lVGV4dEJveDo6c2V0TG9naWNhbE92ZXJmbG93UmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpM
ZWdhY3lJbmxpbmVUZXh0Qm94OjpiYXNlbGluZVBvc2l0aW9uIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkxlZ2FjeUlubGluZVRleHRCb3g6OmxpbmVIZWlnaHQgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6TGVnYWN5SW5saW5lVGV4dEJveDo6c2VsZWN0aW9uVG9wIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkxlZ2FjeUlubGluZVRleHRCb3g6OnNlbGVjdGlvbkJvdHRvbSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lJbmxpbmVUZXh0Qm94OjpzZWxlY3Rpb25IZWlnaHQg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5SW5saW5lVGV4dEJveDo6aXNTZWxlY3Rl
ZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lJbmxpbmVUZXh0Qm94OjpzZWxlY3Rp
b25TdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lJbmxpbmVUZXh0Qm94Ojp2ZXJpZnlT
ZWxlY3Rpb25TdGF0ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lJbmxpbmVUZXh0
Qm94OjpsaW5lRm9udCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpzbmFwcGVkU2VsZWN0aW9u
UmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lJbmxpbmVUZXh0Qm94Ojpsb2NhbFNlbGVj
dGlvblJlY3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5SW5saW5lVGV4dEJveDo6
ZGVsZXRlTGluZSk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lJbmxpbmVUZXh0Qm94OjpleHRy
YWN0TGluZSk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lJbmxpbmVUZXh0Qm94OjphdHRhY2hM
aW5lKToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUlubGluZVRleHRCb3g6OnBsYWNlRWxsaXBz
aXNCb3gpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5SW5saW5lVGV4dEJveDo6aXNMaW5lQnJl
YWsgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5SW5saW5lVGV4dEJveDo6bm9kZUF0
UG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5SW5saW5lVGV4dEJveDo6ZW1waGFzaXNN
YXJrRXhpc3RzQW5kSXNBYm92ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVNYXJr
ZWRUZXh0RnJvbVNlbGVjdGlvbkluQm94KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUlubGlu
ZVRleHRCb3g6OnBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUlubGluZVRleHRCb3g6
OmNsYW1wZWRPZmZzZXQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5SW5saW5lVGV4
dEJveDo6Y2xhbXBlZFN0YXJ0RW5kRm9yU3RhdGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
TGVnYWN5SW5saW5lVGV4dEJveDo6c2VsZWN0aW9uU3RhcnRFbmQgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6TGVnYWN5SW5saW5lVGV4dEJveDo6aGlnaGxpZ2h0U3RhcnRFbmQgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6TGVnYWN5SW5saW5lVGV4dEJveDo6aGFzTWFya2VycyBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lJbmxpbmVUZXh0Qm94OjpwYWludFBsYXRmb3JtRG9j
dW1lbnRNYXJrZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUlubGluZVRleHRCb3g6OmNh
bGN1bGF0ZVVuaW9uT2ZBbGxEb2N1bWVudE1hcmtlckJvdW5kcyBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpMZWdhY3lJbmxpbmVUZXh0Qm94OjpjYWxjdWxhdGVEb2N1bWVudE1hcmtlckJvdW5k
cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lJbmxpbmVUZXh0Qm94OjpwYWludFBs
YXRmb3JtRG9jdW1lbnRNYXJrZXIpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5SW5saW5lVGV4
dEJveDo6Y29sbGVjdE1hcmtlZFRleHRzRm9yRHJhZ2dlZENvbnRlbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6TGVnYWN5SW5saW5lVGV4dEJveDo6Y29sbGVjdE1hcmtlZFRleHRzRm9yRG9jdW1lbnRN
YXJrZXJzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUlubGluZVRleHRCb3g6OmNv
bGxlY3RNYXJrZWRUZXh0c0ZvckhpZ2hsaWdodHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
TGVnYWN5SW5saW5lVGV4dEJveDo6dGV4dE9yaWdpbkZyb21Cb3hSZWN0IGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkxlZ2FjeUlubGluZVRleHRCb3g6OnBhaW50TWFya2VkVGV4dHMpOgorICAg
ICAgICAoV2ViQ29yZTo6TGVnYWN5SW5saW5lVGV4dEJveDo6cGFpbnRNYXJrZWRUZXh0QmFja2dy
b3VuZCk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lJbmxpbmVUZXh0Qm94OjpwYWludE1hcmtl
ZFRleHRGb3JlZ3JvdW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUlubGluZVRleHRCb3g6
OnBhaW50TWFya2VkVGV4dERlY29yYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5SW5s
aW5lVGV4dEJveDo6cGFpbnRDb21wb3NpdGlvbkJhY2tncm91bmQpOgorICAgICAgICAoV2ViQ29y
ZTo6TGVnYWN5SW5saW5lVGV4dEJveDo6cGFpbnRDb21wb3NpdGlvblVuZGVybGluZXMgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6bWlycm9yUlRMU2VnbWVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpMZWdhY3lJbmxpbmVUZXh0Qm94OjpwYWludENvbXBvc2l0aW9uVW5kZXJsaW5lIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUlubGluZVRleHRCb3g6OmNhcmV0TWluT2Zmc2V0IGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUlubGluZVRleHRCb3g6OmNhcmV0TWF4T2Zm
c2V0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUlubGluZVRleHRCb3g6OnRleHRQ
b3MgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5SW5saW5lVGV4dEJveDo6b2Zmc2V0
Rm9yUG9zaXRpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5SW5saW5lVGV4dEJv
eDo6cG9zaXRpb25Gb3JPZmZzZXQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5SW5s
aW5lVGV4dEJveDo6Y3JlYXRlVGV4dFJ1biBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMZWdh
Y3lJbmxpbmVUZXh0Qm94Ojp0ZXh0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUlu
bGluZVRleHRCb3g6OmNvbWJpbmVkVGV4dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMZWdh
Y3lJbmxpbmVUZXh0Qm94OjpkZWJ1Z1RleHRTaGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6TGVn
YWN5SW5saW5lVGV4dEJveDo6ZXhwYW5zaW9uQmVoYXZpb3IgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6TGVnYWN5SW5saW5lVGV4dEJveDo6Ym94TmFtZSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpMZWdhY3lJbmxpbmVUZXh0Qm94OjpvdXRwdXRMaW5lQm94IGNvbnN0KToKKyAgICAgICAg
KiByZW5kZXJpbmcvTGVnYWN5SW5saW5lVGV4dEJveC5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guaC4KKyAgICAgICAgKFdlYkNvcmU6OkxlZ2Fj
eUlubGluZVRleHRCb3g6OkxlZ2FjeUlubGluZVRleHRCb3gpOgorICAgICAgICAoV2ViQ29yZTo6
TGVnYWN5SW5saW5lVGV4dEJveDo6cmVuZGVyZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
TGVnYWN5SW5saW5lVGV4dEJveDo6bGluZVN0eWxlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkxlZ2FjeUlubGluZVRleHRCb3g6OnByZXZUZXh0Qm94IGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkxlZ2FjeUlubGluZVRleHRCb3g6Om5leHRUZXh0Qm94IGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkxlZ2FjeUlubGluZVRleHRCb3g6OnNldE5leHRUZXh0Qm94KToKKyAgICAgICAgKFdl
YkNvcmU6OkxlZ2FjeUlubGluZVRleHRCb3g6OnNldFByZXZpb3VzVGV4dEJveCk6CisgICAgICAg
IChXZWJDb3JlOjpMZWdhY3lJbmxpbmVUZXh0Qm94OjpzdGFydCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpMZWdhY3lJbmxpbmVUZXh0Qm94OjplbmQgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6TGVnYWN5SW5saW5lVGV4dEJveDo6bGVuIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Okxl
Z2FjeUlubGluZVRleHRCb3g6OnNldFN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUlu
bGluZVRleHRCb3g6OnNldExlbik6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lJbmxpbmVUZXh0
Qm94OjpvZmZzZXRSdW4pOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5SW5saW5lVGV4dEJveDo6
dHJ1bmNhdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lJbmxpbmVUZXh0Qm94
Ojpjb21wYXJlQnlTdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lJbmxpbmVUZXh0Qm94
Ojpsb2dpY2FsVG9wVmlzdWFsT3ZlcmZsb3cgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGVn
YWN5SW5saW5lVGV4dEJveDo6bG9naWNhbEJvdHRvbVZpc3VhbE92ZXJmbG93IGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkxlZ2FjeUlubGluZVRleHRCb3g6OmxvZ2ljYWxMZWZ0VmlzdWFsT3Zl
cmZsb3cgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5SW5saW5lVGV4dEJveDo6bG9n
aWNhbFJpZ2h0VmlzdWFsT3ZlcmZsb3cgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5
SW5saW5lVGV4dEJveDo6ZGlydHlPd25MaW5lQm94ZXMpOgorICAgICAgICAoV2ViQ29yZTo6TGVn
YWN5SW5saW5lVGV4dEJveDo6cGFpbnRNYXJrZWRUZXh0cyk6CisgICAgICAgICogcmVuZGVyaW5n
L0xlZ2FjeUxpbmVMYXlvdXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5TGluZUxheW91
dDo6Y29uc3RydWN0TGluZSk6CisgICAgICAgIChXZWJDb3JlOjpzZXRMb2dpY2FsV2lkdGhGb3JU
ZXh0UnVuKToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUxpbmVMYXlvdXQ6OmNvbXB1dGVFeHBh
bnNpb25Gb3JKdXN0aWZpZWRUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OmV4cGFuc2lvbkJlaGF2
aW9yRm9ySW5saW5lVGV4dEJveCk6CisgICAgICAgIChXZWJDb3JlOjphcHBseUV4cGFuc2lvbkJl
aGF2aW9yKToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUxpbmVMYXlvdXQ6OmNvbXB1dGVJbmxp
bmVEaXJlY3Rpb25Qb3NpdGlvbnNGb3JTZWdtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2Fj
eUxpbmVMYXlvdXQ6OnJlbW92ZUlubGluZUJveCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpM
ZWdhY3lMaW5lTGF5b3V0Ojpjb21wdXRlQmxvY2tEaXJlY3Rpb25Qb3NpdGlvbnNGb3JMaW5lKToK
KyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUxpbmVMYXlvdXQ6OmNyZWF0ZUxpbmVCb3hlc0Zyb21C
aWRpUnVucyk6CisgICAgICAgICogcmVuZGVyaW5nL0xlZ2FjeVJvb3RJbmxpbmVCb3guY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TGVnYWN5Um9vdElubGluZUJveDo6aXNIeXBoZW5hdGVkIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVJvb3RJbmxpbmVCb3g6OmFzY2VudEFuZERlc2Nl
bnRGb3JCb3ggY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5jcHA6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJCbG9ja0Zsb3c6OmlubGluZVNlbGVjdGlvbkdhcHMpOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJC
b3hNb2RlbE9iamVjdDo6cGFpbnRNYXNrRm9yVGV4dEZpbGxCb3gpOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJJbmxpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW5saW5lOjpn
ZW5lcmF0ZUN1bGxlZExpbmVCb3hSZWN0cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJJbmxpbmU6OmN1bGxlZElubGluZVZpc3VhbE92ZXJmbG93Qm91bmRpbmdCb3ggY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW5saW5lOjpkaXJ0eUxpbmVCb3hlcyk6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckxpbmVCb3hMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckxpbmVCb3hMaXN0OjpkaXJ0eUxpbmVzRnJvbUNoYW5nZWRDaGlsZCk6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlclRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6
YWJzb2x1dGVRdWFkc0ZvclJhbmdlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRl
eHQ6OmNyZWF0ZVRleHRCb3gpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6cG9zaXRp
b25MaW5lQm94KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dC5oOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyVGV4dDo6ZXh0cmFjdFRleHRCb3gpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyVGV4dDo6YXR0YWNoVGV4dEJveCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0
OjpyZW1vdmVUZXh0Qm94KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHQ6OmNyZWF0ZUlu
bGluZVRleHRCb3gpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6Zmlyc3RUZXh0Qm94
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHQ6Omxhc3RUZXh0Qm94IGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHQ6OmZpbmROZXh0SW5saW5lVGV4dEJveCBj
b25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHRMaW5lQm94ZXMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dExpbmVCb3hlczo6Y3JlYXRlQW5kQXBwZW5kTGluZUJv
eCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0TGluZUJveGVzOjpleHRyYWN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHRMaW5lQm94ZXM6OmF0dGFjaCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJUZXh0TGluZUJveGVzOjpyZW1vdmUpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyVGV4dExpbmVCb3hlczo6ZGVsZXRlQWxsKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clRleHRMaW5lQm94ZXM6OmZpbmROZXh0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clRleHRMaW5lQm94ZXM6OmNoZWNrQ29uc2lzdGVuY3kgY29uc3QpOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJUZXh0TGluZUJveGVzLmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0
TGluZUJveGVzOjpmaXJzdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0TGlu
ZUJveGVzOjpsYXN0IGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4
dC5jcHA6CisgICAgICAgICogcmVuZGVyaW5nL1RleHREZWNvcmF0aW9uUGFpbnRlci5oOgorICAg
ICAgICAoV2ViQ29yZTo6VGV4dERlY29yYXRpb25QYWludGVyOjpzZXRJbmxpbmVUZXh0Qm94KToK
KyAgICAgICAgKiByZW5kZXJpbmcvVGV4dFBhaW50ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
VGV4dFBhaW50ZXI6OmNsZWFyR2x5cGhEaXNwbGF5TGlzdHMpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHSW5saW5lVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJT
VkdJbmxpbmVUZXh0OjpjcmVhdGVUZXh0Qm94KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR0lubGluZVRleHQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRl
eHRCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW5saW5lVGV4dEJveDo6U1ZHSW5saW5l
VGV4dEJveCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbmxpbmVUZXh0Qm94OjpkaXJ0eU93bkxp
bmVCb3hlcyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbmxpbmVUZXh0Qm94OjpkaXJ0eUxpbmVC
b3hlcyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbmxpbmVUZXh0Qm94OjpvZmZzZXRGb3JQb3Np
dGlvbkluRnJhZ21lbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW5saW5lVGV4dEJv
eDo6cGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW5saW5lVGV4dEJveDo6bm9kZUF0UG9p
bnQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHSW5saW5lVGV4dEJveC5oOgorICAgICAg
ICAqIHJlbmRlcmluZy9zdmcvU1ZHUmVuZGVyVHJlZUFzVGV4dC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjp3cml0ZVNWR0lubGluZVRleHRCb3hlcyk6CisgICAgICAgICogc3R5bGUvSW5saW5lVGV4
dEJveFN0eWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbXB1dGVVbmRlcmxpbmVPZmZzZXQp
OgorICAgICAgICAoV2ViQ29yZTo6dmlzdWFsT3ZlcmZsb3dGb3JEZWNvcmF0aW9ucyk6CisgICAg
ICAgICogc3R5bGUvSW5saW5lVGV4dEJveFN0eWxlLmg6CisKIDIwMjEtMDYtMDUgIENhbWVyb24g
TWNDb3JtYWNrICA8aGV5Y2FtQGFwcGxlLmNvbT4KIAogICAgICAgICBEaWZmIGFzcGVjdC1yYXRp
byBwcm9wZXJ0eSB2YWx1ZXMgY29ycmVjdGx5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9I
ZWFkZXJzLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQppbmRleCA2OGM5Zjdl
ZTBlZDkuLjdmMGZmYThlNmVjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5j
bWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC0xNTI2LDExICsxNTI2
LDExIEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICByZW5kZXJp
bmcvSGl0VGVzdFJlcXVlc3QuaAogICAgIHJlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmgKICAgICBy
ZW5kZXJpbmcvSW5saW5lRWxlbWVudEJveC5oCi0gICAgcmVuZGVyaW5nL0lubGluZVRleHRCb3gu
aAogICAgIHJlbmRlcmluZy9MYXllckFuY2VzdG9yQ2xpcHBpbmdTdGFjay5oCiAgICAgcmVuZGVy
aW5nL0xheWVyRnJhZ21lbnQuaAogICAgIHJlbmRlcmluZy9MZWdhY3lJbmxpbmVCb3guaAogICAg
IHJlbmRlcmluZy9MZWdhY3lJbmxpbmVGbG93Qm94LmgKKyAgICByZW5kZXJpbmcvTGVnYWN5SW5s
aW5lVGV4dEJveC5oCiAgICAgcmVuZGVyaW5nL0xlZ2FjeUxpbmVMYXlvdXQuaAogICAgIHJlbmRl
cmluZy9MZWdhY3lSb290SW5saW5lQm94LmgKICAgICByZW5kZXJpbmcvTWFya2VkVGV4dC5oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1Nv
dXJjZXMudHh0CmluZGV4IGI0YTMwMzRkZDZjOS4uMzA5YTk5NzVhNThmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4
dApAQCAtMjI1Niw3ICsyMjU2LDYgQEAgcmVuZGVyaW5nL0hpdFRlc3RpbmdUcmFuc2Zvcm1TdGF0
ZS5jcHAKIHJlbmRlcmluZy9JbWFnZVF1YWxpdHlDb250cm9sbGVyLmNwcAogcmVuZGVyaW5nL0lu
bGluZUVsZW1lbnRCb3guY3BwCiByZW5kZXJpbmcvSW5saW5lSXRlcmF0b3IuY3BwCi1yZW5kZXJp
bmcvSW5saW5lVGV4dEJveC5jcHAKIHJlbmRlcmluZy9MYXllckFuY2VzdG9yQ2xpcHBpbmdTdGFj
ay5jcHAKIHJlbmRlcmluZy9MYXllck92ZXJsYXBNYXAuY3BwCiByZW5kZXJpbmcvTGF5b3V0RGlz
YWxsb3dlZFNjb3BlLmNwcApAQCAtMjI2NSw2ICsyMjY0LDcgQEAgcmVuZGVyaW5nL0xlZ2FjeUlu
bGluZUJveC5jcHAKIHJlbmRlcmluZy9MZWdhY3lJbmxpbmVGbG93Qm94LmNwcAogcmVuZGVyaW5n
L0xlZ2FjeUxpbmVMYXlvdXQuY3BwCiByZW5kZXJpbmcvTGVnYWN5Um9vdElubGluZUJveC5jcHAK
K3JlbmRlcmluZy9MZWdhY3lJbmxpbmVUZXh0Qm94LmNwcAogcmVuZGVyaW5nL01hcmtlZFRleHQu
Y3BwCiByZW5kZXJpbmcvTWFya2VkVGV4dFN0eWxlLmNwcAogcmVuZGVyaW5nL09yZGVySXRlcmF0
b3IuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggNzRmY2RlMjMyN2Y1Li4yNGU0MWNhNWRjOWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTQxNjYsNyArNDE2
Niw3IEBACiAJCUJDRTc4OTg2MTEyMEU3QTYwMDYwRUNFNSAvKiBCaWRpUnVuLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0U3ODk4NTExMjBFN0E2MDA2
MEVDRTUgLyogQmlkaVJ1bi5oICovOyB9OwogCQlCQ0U5M0Y0NTE1MTdDNTY3MDA4Q0NGNzQgLyog
UmVuZGVyRnJhZ21lbnRDb250YWluZXJTZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEJDRTkzRjQ0MTUxN0M1NjcwMDhDQ0Y3NCAvKiBSZW5kZXJGcmFn
bWVudENvbnRhaW5lclNldC5oICovOyB9OwogCQlCQ0VBNDc5MDA5N0NBQUM4MDA5NEM5RTQgLyog
Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0VBNDc3RDA5N0NBQUM4MDA5NEM5RTQgLyogQ1NTQ29tcHV0
ZWRTdHlsZURlY2xhcmF0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKLQkJQkNFQTQ4NUEwOTdEOTMwMjAwOTRDOUU0IC8qIElubGluZVRleHRCb3gu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRUE0ODFC
MDk3RDkzMDIwMDk0QzlFNCAvKiBJbmxpbmVUZXh0Qm94LmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQkNFQTQ4NUEwOTdEOTMwMjAwOTRDOUU0IC8q
IExlZ2FjeUlubGluZVRleHRCb3guaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEJDRUE0ODFCMDk3RDkzMDIwMDk0QzlFNCAvKiBMZWdhY3lJbmxpbmVUZXh0
Qm94LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
QkNFQTQ4NjAwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlckJsb2NrLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0VBNDgyMTA5N0Q5MzAyMDA5NEM5RTQg
LyogUmVuZGVyQmxvY2suaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQlCQ0VBNDg2MjA5N0Q5MzAyMDA5NEM5RTQgLyogUmVuZGVyQm94LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0VBNDgyMzA5N0Q5MzAy
MDA5NEM5RTQgLyogUmVuZGVyQm94LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJQkNFQTQ4NjQwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlckxpbmVC
cmVhay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNF
QTQ4MjUwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlckxpbmVCcmVhay5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xNDQ4Nyw4ICsxNDQ4Nyw4IEBA
CiAJCUJDRUE0ODEzMDk3RDkzMDIwMDk0QzlFNCAvKiBMZWdhY3lMaW5lTGF5b3V0LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMZWdhY3lMaW5lTGF5b3V0LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNFQTQ4MTUwOTdEOTMwMjAwOTRDOUU0IC8q
IEJyZWFrTGluZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEJy
ZWFrTGluZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0VBNDgxNjA5N0Q5
MzAyMDA5NEM5RTQgLyogQnJlYWtMaW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQnJlYWtMaW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlCQ0VBNDgx
QTA5N0Q5MzAyMDA5NEM5RTQgLyogSW5saW5lVGV4dEJveC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSW5saW5lVGV4dEJveC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCUJDRUE0ODFCMDk3RDkzMDIwMDk0QzlFNCAvKiBJbmxpbmVUZXh0Qm94Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbmxpbmVUZXh0Qm94Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDRUE0ODFBMDk3RDkzMDIwMDk0QzlFNCAvKiBMZWdh
Y3lJbmxpbmVUZXh0Qm94LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBMZWdhY3lJbmxpbmVUZXh0Qm94LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
QkNFQTQ4MUIwOTdEOTMwMjAwOTRDOUU0IC8qIExlZ2FjeUlubGluZVRleHRCb3guaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExlZ2FjeUlubGluZVRleHRCb3guaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNFQTQ4MjAwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRl
ckJsb2NrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAz
MDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW5kZXJC
bG9jay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDRUE0ODIxMDk3RDkzMDIw
MDk0QzlFNCAvKiBSZW5kZXJCbG9jay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gUmVuZGVyQmxvY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNFQTQ4MjIw
OTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlckJveC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gUmVuZGVyQm94LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTMwMTkwLDggKzMwMTkwLDYgQEAKIAkJCQlCNTdDQjUyQjE4MkEzN0Y2MDA3OUE2NDcgLyog
SW5saW5lRWxlbWVudEJveC5oICovLAogCQkJCTkzMEM5MERDMTlDRjk2NTMwMEQ2QzIxQSAvKiBJ
bmxpbmVJdGVyYXRvci5jcHAgKi8sCiAJCQkJQkNFNzg5MTUxMTIwRDYwODAwNjBFQ0U1IC8qIElu
bGluZUl0ZXJhdG9yLmggKi8sCi0JCQkJQkNFQTQ4MUEwOTdEOTMwMjAwOTRDOUU0IC8qIElubGlu
ZVRleHRCb3guY3BwICovLAotCQkJCUJDRUE0ODFCMDk3RDkzMDIwMDk0QzlFNCAvKiBJbmxpbmVU
ZXh0Qm94LmggKi8sCiAJCQkJMEZFQzEyMEIyMkJGMkNDNzAwNEU5RDM1IC8qIExheWVyQW5jZXN0
b3JDbGlwcGluZ1N0YWNrLmNwcCAqLywKIAkJCQkwRkVDMTIwOTIyQkYyQ0M3MDA0RTlEMzUgLyog
TGF5ZXJBbmNlc3RvckNsaXBwaW5nU3RhY2suaCAqLywKIAkJCQk1ODAzNzE2MzFBNjZGMUQzMDBC
QUY1MTkgLyogTGF5ZXJGcmFnbWVudC5oICovLApAQCAtMzAyMDUsNiArMzAyMDMsOCBAQAogCQkJ
CUE4Q0ZGNURFMEExNTVBMDUwMDBBNDIzNCAvKiBMZWdhY3lJbmxpbmVCb3guaCAqLywKIAkJCQlB
OENGRjVERDBBMTU1QTA1MDAwQTQyMzQgLyogTGVnYWN5SW5saW5lRmxvd0JveC5jcHAgKi8sCiAJ
CQkJQThDRkY1REMwQTE1NUEwNTAwMEE0MjM0IC8qIExlZ2FjeUlubGluZUZsb3dCb3guaCAqLywK
KwkJCQlCQ0VBNDgxQTA5N0Q5MzAyMDA5NEM5RTQgLyogTGVnYWN5SW5saW5lVGV4dEJveC5jcHAg
Ki8sCisJCQkJQkNFQTQ4MUIwOTdEOTMwMjAwOTRDOUU0IC8qIExlZ2FjeUlubGluZVRleHRCb3gu
aCAqLywKIAkJCQlCQ0VBNDgxMzA5N0Q5MzAyMDA5NEM5RTQgLyogTGVnYWN5TGluZUxheW91dC5j
cHAgKi8sCiAJCQkJRTRBMUFDNzgyMkZBRkQ1MDAwMTdCNzVCIC8qIExlZ2FjeUxpbmVMYXlvdXQu
aCAqLywKIAkJCQlBOENGRjVFMDBBMTU1QTA1MDAwQTQyMzQgLyogTGVnYWN5Um9vdElubGluZUJv
eC5jcHAgKi8sCkBAIC0zMzE1Niw3ICszMzE1Niw3IEBACiAJCQkJRTREMzNGM0IyNTJBRUVDRDAw
ODM3RDA1IC8qIElubGluZVJ1bkFuZE9mZnNldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNkYzNjBF
NTAyMzk5OTQyMTAwMTUxMkE3IC8qIElubGluZVNvZnRMaW5lQnJlYWtJdGVtLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlBQTRDM0E3NzBCMkIxNjc5MDAyMzM0QTIgLyogSW5saW5lU3R5bGVTaGVldE93
bmVyLmggaW4gSGVhZGVycyAqLywKLQkJCQlCQ0VBNDg1QTA5N0Q5MzAyMDA5NEM5RTQgLyogSW5s
aW5lVGV4dEJveC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQkNFQTQ4NUEwOTdEOTMwMjAwOTRDOUU0
IC8qIExlZ2FjeUlubGluZVRleHRCb3guaCBpbiBIZWFkZXJzICovLAogCQkJCTFDMDEwNzAxMTky
NTk0REYwMDhBNDIwMSAvKiBJbmxpbmVUZXh0Qm94U3R5bGUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTZGMUNDMURFMjI1RjhCNDkwMDcyMEFEMiAvKiBJbmxpbmVUZXh0SXRlbS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMUNFODg2NDEyNjEwNUJGMjAwMEM4MTZDIC8qIEluTWVtb3J5RGlzcGxheUxpc3Qu
aCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZVRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZVRleHQuY3BwCmluZGV4
IDVlOTg2ZjFiNDIzZi4uZTlmYmU5YmQ4MjI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGV4dC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFj
ZVRleHQuY3BwCkBAIC00MSw3ICs0MSw2IEBACiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCiAjaW5j
bHVkZSAiSFRNTFBhcnNlcklkaW9tcy5oIgogI2luY2x1ZGUgIkhvc3RXaW5kb3cuaCIKLSNpbmNs
dWRlICJJbmxpbmVUZXh0Qm94LmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNs
dWRlICJSYW5nZS5oIgogI2luY2x1ZGUgIlJlbmRlckxpc3RJdGVtLmgiCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
Q29udGFpbmVyTm9kZS5jcHAKaW5kZXggYTViNDMwMjM4NGNjLi43ZjQyMTBiMThhOGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKQEAgLTM4LDEwICszOCwxMCBAQAogI2luY2x1
ZGUgIkhUTUxPcHRpb25zQ29sbGVjdGlvbi5oIgogI2luY2x1ZGUgIkhUTUxTbG90RWxlbWVudC5o
IgogI2luY2x1ZGUgIkhUTUxUYWJsZVJvd3NDb2xsZWN0aW9uLmgiCi0jaW5jbHVkZSAiSW5saW5l
VGV4dEJveC5oIgogI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1
ZGUgIkpTTm9kZS5oIgogI2luY2x1ZGUgIkxhYmVsc05vZGVMaXN0LmgiCisjaW5jbHVkZSAiTGVn
YWN5SW5saW5lVGV4dEJveC5oIgogI2luY2x1ZGUgIkxlZ2FjeVJvb3RJbmxpbmVCb3guaCIKICNp
bmNsdWRlICJNdXRhdGlvbkV2ZW50LmgiCiAjaW5jbHVkZSAiTmFtZU5vZGVMaXN0LmgiCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwCmluZGV4IGNl
ZDcxMzE5MTJhYi4uM2Y2NDRmMDFiNzUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnRNYXJrZXJDb250cm9sbGVyLmNwcApAQCAtMjU1LDcgKzI1NSw3IEBAIHZvaWQgRG9jdW1l
bnRNYXJrZXJDb250cm9sbGVyOjphZGRNYXJrZXIoTm9kZSYgbm9kZSwgRG9jdW1lbnRNYXJrZXIm
JiBuZXdNYXJrZXIpCiAKICNpZiBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCkKICAg
ICBpZiAoYXV0byogcmVuZGVyZXIgPSBub2RlLnJlbmRlcmVyKCkpIHsKLSAgICAgICAgLy8gRklY
TUU6IEZhY3RvciB0aGUgbWFya2VyIHBhaW50aW5nIGNvZGUgb3V0IG9mIElubGluZVRleHRCb3gg
YW5kIHRlYWNoIHNpbXBsZSBsaW5lIGxheW91dCB0byB1c2UgaXQuCisgICAgICAgIC8vIEZJWE1F
OiBGYWN0b3IgdGhlIG1hcmtlciBwYWludGluZyBjb2RlIG91dCBvZiBMZWdhY3lJbmxpbmVUZXh0
Qm94IGFuZCB0ZWFjaCBzaW1wbGUgbGluZSBsYXlvdXQgdG8gdXNlIGl0LgogICAgICAgICBpZiAo
YXV0byogbGluZUxheW91dCA9IExheW91dEludGVncmF0aW9uOjpMaW5lTGF5b3V0Ojpjb250YWlu
aW5nKCpyZW5kZXJlcikpCiAgICAgICAgICAgICBsaW5lTGF5b3V0LT5mbG93KCkuZW5zdXJlTGlu
ZUJveGVzKCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9u
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5jcHAKaW5kZXggZTMwYzEyN2U1MmVi
Li4zM2M4NmNjZjk1ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmNwcApAQCAtMzgsOSArMzgsOSBA
QAogI2luY2x1ZGUgIklubGluZUVsZW1lbnRCb3guaCIKICNpbmNsdWRlICJJbmxpbmVJdGVyYXRv
ci5oIgogI2luY2x1ZGUgIklubGluZVJ1bkFuZE9mZnNldC5oIgotI2luY2x1ZGUgIklubGluZVRl
eHRCb3guaCIKICNpbmNsdWRlICJMYXlvdXRJbnRlZ3JhdGlvbkxpbmVJdGVyYXRvci5oIgogI2lu
Y2x1ZGUgIkxheW91dEludGVncmF0aW9uUnVuSXRlcmF0b3IuaCIKKyNpbmNsdWRlICJMZWdhY3lJ
bmxpbmVUZXh0Qm94LmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk5vZGVUcmF2
ZXJzYWwuaCIKICNpbmNsdWRlICJQb3NpdGlvbkl0ZXJhdG9yLmgiCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwCmluZGV4IDEwYWYxM2E1ODM1ZC4u
ZTRjYmFlOWY1MjM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0
ZUVkaXRDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVk
aXRDb21tYW5kLmNwcApAQCAtNDcsMTMgKzQ3LDEzIEBACiAjaW5jbHVkZSAiSFRNTExJRWxlbWVu
dC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkhUTUxTcGFuRWxlbWVudC5o
IgotI2luY2x1ZGUgIklubGluZVRleHRCb3guaCIKICNpbmNsdWRlICJJbnNlcnRJbnRvVGV4dE5v
ZGVDb21tYW5kLmgiCiAjaW5jbHVkZSAiSW5zZXJ0TGluZUJyZWFrQ29tbWFuZC5oIgogI2luY2x1
ZGUgIkluc2VydE5vZGVCZWZvcmVDb21tYW5kLmgiCiAjaW5jbHVkZSAiSW5zZXJ0UGFyYWdyYXBo
U2VwYXJhdG9yQ29tbWFuZC5oIgogI2luY2x1ZGUgIkluc2VydFRleHRDb21tYW5kLmgiCiAjaW5j
bHVkZSAiTGF5b3V0SW50ZWdyYXRpb25SdW5JdGVyYXRvci5oIgorI2luY2x1ZGUgIkxlZ2FjeUlu
bGluZVRleHRCb3guaCIKICNpbmNsdWRlICJNZXJnZUlkZW50aWNhbEVsZW1lbnRzQ29tbWFuZC5o
IgogI2luY2x1ZGUgIk5vZGVUcmF2ZXJzYWwuaCIKICNpbmNsdWRlICJSZW1vdmVOb2RlQ29tbWFu
ZC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaCBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKaW5kZXggMTU4Yjg3Y2MxOGVkLi42NzIyODJhNzA3
OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaApAQCAtMzg5LDcgKzM4OSw3IEBAIHB1YmxpYzoK
ICAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiBjb21wb3NpdGlv
blJhbmdlKCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBnZXRDb21wb3NpdGlvblNl
bGVjdGlvbih1bnNpZ25lZCYgc2VsZWN0aW9uU3RhcnQsIHVuc2lnbmVkJiBzZWxlY3Rpb25FbmQp
IGNvbnN0OwogCi0gICAgLy8gZ2V0dGluZyBpbnRlcm5hdGlvbmFsIHRleHQgaW5wdXQgY29tcG9z
aXRpb24gc3RhdGUgKGZvciB1c2UgYnkgSW5saW5lVGV4dEJveCkKKyAgICAvLyBnZXR0aW5nIGlu
dGVybmF0aW9uYWwgdGV4dCBpbnB1dCBjb21wb3NpdGlvbiBzdGF0ZSAoZm9yIHVzZSBieSBMZWdh
Y3lJbmxpbmVUZXh0Qm94KQogICAgIFRleHQqIGNvbXBvc2l0aW9uTm9kZSgpIGNvbnN0IHsgcmV0
dXJuIG1fY29tcG9zaXRpb25Ob2RlLmdldCgpOyB9CiAgICAgdW5zaWduZWQgY29tcG9zaXRpb25T
dGFydCgpIGNvbnN0IHsgcmV0dXJuIG1fY29tcG9zaXRpb25TdGFydDsgfQogICAgIHVuc2lnbmVk
IGNvbXBvc2l0aW9uRW5kKCkgY29uc3QgeyByZXR1cm4gbV9jb21wb3NpdGlvbkVuZDsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcAppbmRleCA5MWZmYjNmNWZlMmYu
LmZjZDgwZDFjYmNhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNl
bGVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5j
cHAKQEAgLTUzLDcgKzUzLDcgQEAKICNpbmNsdWRlICJIaXRUZXN0UmVxdWVzdC5oIgogI2luY2x1
ZGUgIkhpdFRlc3RSZXN1bHQuaCIKICNpbmNsdWRlICJJbmxpbmVSdW5BbmRPZmZzZXQuaCIKLSNp
bmNsdWRlICJJbmxpbmVUZXh0Qm94LmgiCisjaW5jbHVkZSAiTGVnYWN5SW5saW5lVGV4dEJveC5o
IgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUmFu
Z2UuaCIKQEAgLTE4NTAsNyArMTg1MCw3IEBAIHZvaWQgRnJhbWVTZWxlY3Rpb246OmRlYnVnUmVu
ZGVyZXIoUmVuZGVyT2JqZWN0KiByZW5kZXJlciwgYm9vbCBzZWxlY3RlZCkgY29uc3QKICAgICAg
ICAgICAgICAgICBvZmZzZXQgPSBtX3NlbGVjdGlvbi5lbmQoKS5jb21wdXRlT2Zmc2V0SW5Db250
YWluZXJOb2RlKCk7CiAKICAgICAgICAgICAgIGludCBwb3M7Ci0gICAgICAgICAgICBJbmxpbmVU
ZXh0Qm94KiBib3ggPSB0ZXh0UmVuZGVyZXIuZmluZE5leHRJbmxpbmVUZXh0Qm94KG9mZnNldCwg
cG9zKTsKKyAgICAgICAgICAgIExlZ2FjeUlubGluZVRleHRCb3gqIGJveCA9IHRleHRSZW5kZXJl
ci5maW5kTmV4dElubGluZVRleHRCb3gob2Zmc2V0LCBwb3MpOwogICAgICAgICAgICAgdGV4dCA9
IHRleHQuc3Vic3RyaW5nKGJveC0+c3RhcnQoKSwgYm94LT5sZW4oKSk7CiAgICAgICAgICAgICAK
ICAgICAgICAgICAgIFN0cmluZyBzaG93OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9SZW5kZXJlZFBvc2l0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVuZGVy
ZWRQb3NpdGlvbi5jcHAKaW5kZXggZGFhZGRlOTdjZWEwLi40NmUzMDI5MDRmMmIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVuZGVyZWRQb3NpdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9SZW5kZXJlZFBvc2l0aW9uLmNwcApAQCAtMzMsNyArMzMsNyBA
QAogCiAjaW5jbHVkZSAiQ2FyZXRSZWN0Q29tcHV0YXRpb24uaCIKICNpbmNsdWRlICJJbmxpbmVS
dW5BbmRPZmZzZXQuaCIKLSNpbmNsdWRlICJJbmxpbmVUZXh0Qm94LmgiCisjaW5jbHVkZSAiTGVn
YWN5SW5saW5lVGV4dEJveC5oIgogI2luY2x1ZGUgIlZpc2libGVQb3NpdGlvbi5oIgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJ
dGVyYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAKaW5k
ZXggOTRiNDJmOTc1OWU3Li4yNjNhOTAwMDZjYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Rl
eHRJdGVyYXRvci5jcHAKQEAgLTQ0LDcgKzQ0LDcgQEAKICNpbmNsdWRlICJIVE1MU2xvdEVsZW1l
bnQuaCIKICNpbmNsdWRlICJIVE1MVGV4dEFyZWFFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFRl
eHRGb3JtQ29udHJvbEVsZW1lbnQuaCIKLSNpbmNsdWRlICJJbmxpbmVUZXh0Qm94LmgiCisjaW5j
bHVkZSAiTGVnYWN5SW5saW5lVGV4dEJveC5oIgogI2luY2x1ZGUgIk5vZGVUcmF2ZXJzYWwuaCIK
ICNpbmNsdWRlICJSYW5nZS5oIgogI2luY2x1ZGUgIlJlbmRlckltYWdlLmgiCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVQb3NpdGlvbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL1Zpc2libGVQb3NpdGlvbi5jcHAKaW5kZXggN2U3NjhjNWJiMjUxLi4zNjBm
NTE3YjhmMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVBvc2l0
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVQb3NpdGlvbi5jcHAK
QEAgLTM2LDcgKzM2LDYgQEAKICNpbmNsdWRlICJIVE1MSHRtbEVsZW1lbnQuaCIKICNpbmNsdWRl
ICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJJbmxpbmVSdW5BbmRPZmZzZXQuaCIKLSNpbmNsdWRl
ICJJbmxpbmVUZXh0Qm94LmgiCiAjaW5jbHVkZSAiTGF5b3V0SW50ZWdyYXRpb25MaW5lSXRlcmF0
b3IuaCIKICNpbmNsdWRlICJMYXlvdXRJbnRlZ3JhdGlvblJ1bkl0ZXJhdG9yLmgiCiAjaW5jbHVk
ZSAiTG9nZ2luZy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L1ZlcmlmaWNh
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvVmVyaWZpY2F0aW9uLmNwcAppbmRleCA3
MzgzZTQxYmQyYTEuLjJkN2JhMWRlYThiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5
b3V0L1ZlcmlmaWNhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L1ZlcmlmaWNh
dGlvbi5jcHAKQEAgLTMxLDEyICszMSwxMiBAQAogI2lmbmRlZiBOREVCVUcKICNpbmNsdWRlICJC
bG9ja0Zvcm1hdHRpbmdTdGF0ZS5oIgogI2luY2x1ZGUgIklubGluZUZvcm1hdHRpbmdTdGF0ZS5o
IgotI2luY2x1ZGUgIklubGluZVRleHRCb3guaCIKICNpbmNsdWRlICJMYXlvdXRCb3guaCIKICNp
bmNsdWRlICJMYXlvdXRCb3hHZW9tZXRyeS5oIgogI2luY2x1ZGUgIkxheW91dENvbnRhaW5lckJv
eC5oIgogI2luY2x1ZGUgIkxheW91dENvbnRleHQuaCIKICNpbmNsdWRlICJMYXlvdXRUcmVlQnVp
bGRlci5oIgorI2luY2x1ZGUgIkxlZ2FjeUlubGluZVRleHRCb3guaCIKICNpbmNsdWRlICJSZW5k
ZXJCb3guaCIKICNpbmNsdWRlICJSZW5kZXJJbmxpbmUuaCIKICNpbmNsdWRlICJSZW5kZXJMaW5l
QnJlYWsuaCIKQEAgLTc5LDcgKzc5LDcgQEAgc3RhdGljIGJvb2wgY2hlY2tGb3JNYXRjaGluZ05v
blRleHRSdW5zKGNvbnN0IExpbmVSdW4mIGxpbmVSdW4sIGNvbnN0IFdlYkNvcmU6OkwKIH0KIAog
Ci1zdGF0aWMgYm9vbCBjaGVja0Zvck1hdGNoaW5nVGV4dFJ1bnMoY29uc3QgTGluZVJ1biYgbGlu
ZVJ1biwgY29uc3QgV2ViQ29yZTo6SW5saW5lVGV4dEJveCYgaW5saW5lVGV4dEJveCkKK3N0YXRp
YyBib29sIGNoZWNrRm9yTWF0Y2hpbmdUZXh0UnVucyhjb25zdCBMaW5lUnVuJiBsaW5lUnVuLCBj
b25zdCBXZWJDb3JlOjpMZWdhY3lJbmxpbmVUZXh0Qm94JiBpbmxpbmVUZXh0Qm94KQogewogICAg
IGlmICghbGluZVJ1bi50ZXh0KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTEzNCw3ICsx
MzQsNyBAQCBzdGF0aWMgYm9vbCBvdXRwdXRNaXNtYXRjaGluZ0NvbXBsZXhMaW5lSW5mb3JtYXRp
b25JZk5lZWRlZChUZXh0U3RyZWFtJiBzdHJlYW0sCiAgICAgZm9yICh1bnNpZ25lZCBpbmxpbmVC
b3hJbmRleCA9IDA7IGlubGluZUJveEluZGV4IDwgaW5saW5lQm94ZXMuc2l6ZSgpICYmIHJ1bklu
ZGV4IDwgbGluZVJ1bnMuc2l6ZSgpOyArK2lubGluZUJveEluZGV4KSB7CiAgICAgICAgIGF1dG8m
IGxpbmVSdW4gPSBsaW5lUnVuc1tydW5JbmRleF07CiAgICAgICAgIGF1dG8qIGlubGluZUJveCA9
IGlubGluZUJveGVzW2lubGluZUJveEluZGV4XTsKLSAgICAgICAgYXV0byogaW5saW5lVGV4dEJv
eCA9IGlzPFdlYkNvcmU6OklubGluZVRleHRCb3g+KGlubGluZUJveCkgPyBkb3duY2FzdDxXZWJD
b3JlOjpJbmxpbmVUZXh0Qm94PihpbmxpbmVCb3gpIDogbnVsbHB0cjsKKyAgICAgICAgYXV0byog
aW5saW5lVGV4dEJveCA9IGlzPFdlYkNvcmU6OkxlZ2FjeUlubGluZVRleHRCb3g+KGlubGluZUJv
eCkgPyBkb3duY2FzdDxXZWJDb3JlOjpMZWdhY3lJbmxpbmVUZXh0Qm94PihpbmxpbmVCb3gpIDog
bnVsbHB0cjsKICAgICAgICAgYm9vbCBtYXRjaGluZ1J1bnMgPSBpbmxpbmVUZXh0Qm94ID8gY2hl
Y2tGb3JNYXRjaGluZ1RleHRSdW5zKGxpbmVSdW4sICppbmxpbmVUZXh0Qm94KSA6IGNoZWNrRm9y
TWF0Y2hpbmdOb25UZXh0UnVucyhsaW5lUnVuLCAqaW5saW5lQm94KTsKIAogICAgICAgICBpZiAo
IW1hdGNoaW5nUnVucykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1h
dHRpbmdDb250ZXh0cy9pbmxpbmUvdGV4dC9UZXh0VXRpbC5oIGIvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvdGV4dC9UZXh0VXRpbC5oCmluZGV4IDFmNTg0
ZmE3OTgxYi4uZTM0NmFiM2Y2YjI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
Zm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS90ZXh0L1RleHRVdGlsLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvdGV4dC9UZXh0VXRpbC5oCkBA
IC0zNyw3ICszNyw3IEBAIGNsYXNzIFJlbmRlclN0eWxlOwogCiBuYW1lc3BhY2UgTGF5b3V0IHsK
IAotY2xhc3MgSW5saW5lVGV4dEJveDsKK2NsYXNzIExlZ2FjeUlubGluZVRleHRCb3g7CiBjbGFz
cyBJbmxpbmVUZXh0SXRlbTsKIAogY2xhc3MgVGV4dFV0aWwgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uUnVuSXRlcmF0b3Iu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9u
UnVuSXRlcmF0b3IuY3BwCmluZGV4IGRlMWExZjU3ZmI2Ni4uYTg3ZmNlOTIxNGZjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25S
dW5JdGVyYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xh
eW91dEludGVncmF0aW9uUnVuSXRlcmF0b3IuY3BwCkBAIC0xNzEsNyArMTcxLDcgQEAgVGV4dFJ1
bkl0ZXJhdG9yIGZpcnN0VGV4dFJ1bkluVGV4dE9yZGVyRm9yKGNvbnN0IFJlbmRlclRleHQmIHRl
eHQpCiAgICAgICAgIGZvciAoYXV0byogdGV4dEJveCA9IHRleHQuZmlyc3RUZXh0Qm94KCk7IHRl
eHRCb3g7IHRleHRCb3ggPSB0ZXh0Qm94LT5uZXh0VGV4dEJveCgpKQogICAgICAgICAgICAgc29y
dGVkVGV4dEJveGVzLmFwcGVuZCh0ZXh0Qm94KTsKICAgICAgICAgc3RkOjpzb3J0KHNvcnRlZFRl
eHRCb3hlcy5iZWdpbigpLCBzb3J0ZWRUZXh0Qm94ZXMuZW5kKCksIFtdKGF1dG8qIGEsIGF1dG8q
IGIpIHsKLSAgICAgICAgICAgIHJldHVybiBJbmxpbmVUZXh0Qm94Ojpjb21wYXJlQnlTdGFydChk
b3duY2FzdDxJbmxpbmVUZXh0Qm94PihhKSwgZG93bmNhc3Q8SW5saW5lVGV4dEJveD4oYikpOwor
ICAgICAgICAgICAgcmV0dXJuIExlZ2FjeUlubGluZVRleHRCb3g6OmNvbXBhcmVCeVN0YXJ0KGRv
d25jYXN0PExlZ2FjeUlubGluZVRleHRCb3g+KGEpLCBkb3duY2FzdDxMZWdhY3lJbmxpbmVUZXh0
Qm94PihiKSk7CiAgICAgICAgIH0pOwogICAgICAgICBhdXRvKiBmaXJzdCA9IHNvcnRlZFRleHRC
b3hlc1swXTsKICAgICAgICAgcmV0dXJuIHsgUnVuSXRlcmF0b3JMZWdhY3lQYXRoIHsgZmlyc3Qs
IFdURk1vdmUoc29ydGVkVGV4dEJveGVzKSwgMCB9IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25SdW5JdGVyYXRvci5oIGIv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uUnVuSXRl
cmF0b3IuaAppbmRleCA5N2FlNjhjMjQ0MGIuLjFkZDk3NTAxMWYzMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uUnVuSXRlcmF0
b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdy
YXRpb25SdW5JdGVyYXRvci5oCkBAIC0xMTMsNyArMTEzLDcgQEAgcHVibGljOgogICAgIGJvb2wg
aXNTZWxlY3RhYmxlKHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBlbmQpIGNvbnN0OwogICAgIExh
eW91dFJlY3Qgc2VsZWN0aW9uUmVjdCh1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgZW5kKSBjb25z
dDsKIAotICAgIElubGluZVRleHRCb3gqIGxlZ2FjeUlubGluZUJveCgpIGNvbnN0IHsgcmV0dXJu
IGRvd25jYXN0PElubGluZVRleHRCb3g+KFBhdGhSdW46OmxlZ2FjeUlubGluZUJveCgpKTsgfQor
ICAgIExlZ2FjeUlubGluZVRleHRCb3gqIGxlZ2FjeUlubGluZUJveCgpIGNvbnN0IHsgcmV0dXJu
IGRvd25jYXN0PExlZ2FjeUlubGluZVRleHRCb3g+KFBhdGhSdW46OmxlZ2FjeUlubGluZUJveCgp
KTsgfQogfTsKIAogY2xhc3MgUnVuSXRlcmF0b3IgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uUnVuSXRlcmF0b3JMZWdhY3lQ
YXRoLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRp
b25SdW5JdGVyYXRvckxlZ2FjeVBhdGguaAppbmRleCA0MDUyMzJlZTc2MGYuLjU1NmYwNWRlNzcx
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dElu
dGVncmF0aW9uUnVuSXRlcmF0b3JMZWdhY3lQYXRoLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uUnVuSXRlcmF0b3JMZWdhY3lQYXRoLmgK
QEAgLTI1LDcgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJJbmxpbmVUZXh0
Qm94LmgiCisjaW5jbHVkZSAiTGVnYWN5SW5saW5lVGV4dEJveC5oIgogI2luY2x1ZGUgIkxlZ2Fj
eVJvb3RJbmxpbmVCb3guaCIKICNpbmNsdWRlICJSZW5kZXJUZXh0LmgiCiAjaW5jbHVkZSA8d3Rm
L1JlZkNvdW50ZWRBcnJheS5oPgpAQCAtODcsNyArODcsNyBAQCBwdWJsaWM6CiAgICAgewogICAg
ICAgICBpZiAoIW1fbG9naWNhbE9yZGVyQ2FjaGUuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICB0
cmF2ZXJzZU5leHRJbmxpbmVCb3hJbkNhY2hlT3JkZXIoKTsKLSAgICAgICAgICAgIEFTU0VSVCgh
bV9pbmxpbmVCb3ggfHwgaXM8SW5saW5lVGV4dEJveD4obV9pbmxpbmVCb3gpKTsKKyAgICAgICAg
ICAgIEFTU0VSVCghbV9pbmxpbmVCb3ggfHwgaXM8TGVnYWN5SW5saW5lVGV4dEJveD4obV9pbmxp
bmVCb3gpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICB0cmF2ZXJz
ZU5leHRUZXh0UnVuKCk7CkBAIC0xMjMsNyArMTIzLDcgQEAgcHVibGljOgogICAgIGNvbnN0IExl
Z2FjeVJvb3RJbmxpbmVCb3gmIHJvb3RJbmxpbmVCb3goKSBjb25zdCB7IHJldHVybiBtX2lubGlu
ZUJveC0+cm9vdCgpOyB9CiAKIHByaXZhdGU6Ci0gICAgY29uc3QgSW5saW5lVGV4dEJveCogaW5s
aW5lVGV4dEJveCgpIGNvbnN0IHsgcmV0dXJuIGRvd25jYXN0PElubGluZVRleHRCb3g+KG1faW5s
aW5lQm94KTsgfQorICAgIGNvbnN0IExlZ2FjeUlubGluZVRleHRCb3gqIGlubGluZVRleHRCb3go
KSBjb25zdCB7IHJldHVybiBkb3duY2FzdDxMZWdhY3lJbmxpbmVUZXh0Qm94PihtX2lubGluZUJv
eCk7IH0KIAogICAgIHN0YXRpYyBWZWN0b3I8Y29uc3QgTGVnYWN5SW5saW5lQm94Kj4gaW5saW5l
Qm94ZXNJbkxvZ2ljYWxPcmRlcihjb25zdCBMZWdhY3lSb290SW5saW5lQm94JiByb290KQogICAg
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dEJv
eC5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0Qm94LmgKaW5kZXgg
ZjlkNmJmNTExODJlLi41ODU1YzBiNDg0YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9sYXlvdXR0cmVlL0xheW91dEJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9s
YXlvdXR0cmVlL0xheW91dEJveC5oCkBAIC02MSw3ICs2MSw3IEBAIHB1YmxpYzoKIAogICAgIGVu
dW0gQmFzZVR5cGVGbGFnIDogdWludDhfdCB7CiAgICAgICAgIEJveEZsYWcgICAgICAgICAgICAg
ICAgICAgID0gMSA8PCAwLAotICAgICAgICBJbmxpbmVUZXh0Qm94RmxhZyAgICAgICAgICA9IDEg
PDwgMSwKKyAgICAgICAgTGVnYWN5SW5saW5lVGV4dEJveEZsYWcgICAgICAgICAgPSAxIDw8IDEs
CiAgICAgICAgIExpbmVCcmVha0JveEZsYWcgICAgICAgICAgID0gMSA8PCAyLAogICAgICAgICBS
ZXBsYWNlZEJveEZsYWcgICAgICAgICAgICA9IDEgPDwgMywKICAgICAgICAgSW5pdGlhbENvbnRh
aW5pbmdCbG9ja0ZsYWcgPSAxIDw8IDQsCkBAIC0xNTIsNyArMTUyLDcgQEAgcHVibGljOgogICAg
IEJveCogbmV4dFNpYmxpbmcoKSB7IHJldHVybiBtX25leHRTaWJsaW5nOyB9CiAKICAgICBib29s
IGlzQ29udGFpbmVyQm94KCkgY29uc3QgeyByZXR1cm4gYmFzZVR5cGVGbGFncygpLmNvbnRhaW5z
KENvbnRhaW5lckJveEZsYWcpOyB9Ci0gICAgYm9vbCBpc0lubGluZVRleHRCb3goKSBjb25zdCB7
IHJldHVybiBiYXNlVHlwZUZsYWdzKCkuY29udGFpbnMoSW5saW5lVGV4dEJveEZsYWcpOyB9Cisg
ICAgYm9vbCBpc0lubGluZVRleHRCb3goKSBjb25zdCB7IHJldHVybiBiYXNlVHlwZUZsYWdzKCku
Y29udGFpbnMoTGVnYWN5SW5saW5lVGV4dEJveEZsYWcpOyB9CiAgICAgYm9vbCBpc0xpbmVCcmVh
a0JveCgpIGNvbnN0IHsgcmV0dXJuIGJhc2VUeXBlRmxhZ3MoKS5jb250YWlucyhMaW5lQnJlYWtC
b3hGbGFnKTsgfQogICAgIGJvb2wgaXNSZXBsYWNlZEJveCgpIGNvbnN0IHsgcmV0dXJuIGJhc2VU
eXBlRmxhZ3MoKS5jb250YWlucyhSZXBsYWNlZEJveEZsYWcpOyB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dElubGluZVRleHRCb3guY3BwIGIv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0SW5saW5lVGV4dEJveC5jcHAK
aW5kZXggOTU4N2I2OTU2YzY5Li4zNGRjNDc2MzQwM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dElubGluZVRleHRCb3guY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dElubGluZVRleHRCb3guY3BwCkBAIC0z
Nyw3ICszNyw3IEBAIG5hbWVzcGFjZSBMYXlvdXQgewogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9J
TVBMKElubGluZVRleHRCb3gpOwogCiBJbmxpbmVUZXh0Qm94OjpJbmxpbmVUZXh0Qm94KFN0cmlu
ZyBjb250ZW50LCBib29sIGNhblVzZVNpbXBsaWZpZWRDb250ZW50TWVhc3VyaW5nLCBSZW5kZXJT
dHlsZSYmIHN0eWxlKQotICAgIDogQm94KHsgfSwgV1RGTW92ZShzdHlsZSksIEJveDo6SW5saW5l
VGV4dEJveEZsYWcpCisgICAgOiBCb3goeyB9LCBXVEZNb3ZlKHN0eWxlKSwgQm94OjpMZWdhY3lJ
bmxpbmVUZXh0Qm94RmxhZykKICAgICAsIG1fY29udGVudChjb250ZW50KQogICAgICwgbV9jYW5V
c2VTaW1wbGlmaWVkQ29udGVudE1lYXN1cmluZyhjYW5Vc2VTaW1wbGlmaWVkQ29udGVudE1lYXN1
cmluZykKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DYXJldFJlY3RD
b21wdXRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ2FyZXRSZWN0Q29tcHV0
YXRpb24uY3BwCmluZGV4IDY1YTgyNjRlYTYzMC4uNGE5ODYxOWIyZGNkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ2FyZXRSZWN0Q29tcHV0YXRpb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DYXJldFJlY3RDb21wdXRhdGlvbi5jcHAKQEAgLTE5NCwx
MCArMTk0LDEwIEBAIHN0YXRpYyBMYXlvdXRSZWN0IGNvbXB1dGVDYXJldFJlY3RGb3JTVkdJbmxp
bmVUZXh0KGNvbnN0IElubGluZVJ1bkFuZE9mZnNldCYgcnVuCiAgICAgYXV0byogYm94ID0gcnVu
QW5kT2Zmc2V0LnJ1biA/IHJ1bkFuZE9mZnNldC5ydW4tPmxlZ2FjeUlubGluZUJveCgpIDogbnVs
bHB0cjsKICAgICBhdXRvIGNhcmV0T2Zmc2V0ID0gcnVuQW5kT2Zmc2V0Lm9mZnNldDsKIAotICAg
IGlmICghaXM8SW5saW5lVGV4dEJveD4oYm94KSkKKyAgICBpZiAoIWlzPExlZ2FjeUlubGluZVRl
eHRCb3g+KGJveCkpCiAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICBhdXRvJiB0ZXh0Qm94ID0g
ZG93bmNhc3Q8SW5saW5lVGV4dEJveD4oKmJveCk7CisgICAgYXV0byYgdGV4dEJveCA9IGRvd25j
YXN0PExlZ2FjeUlubGluZVRleHRCb3g+KCpib3gpOwogICAgIGlmIChjYXJldE9mZnNldCA8IHRl
eHRCb3guc3RhcnQoKSB8fCBjYXJldE9mZnNldCA+IHRleHRCb3guc3RhcnQoKSArIHRleHRCb3gu
bGVuKCkpCiAgICAgICAgIHJldHVybiB7IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9FbGxpcHNpc0JveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRWxs
aXBzaXNCb3guY3BwCmluZGV4IDZhMmE4NTMzY2Y5MS4uOGY5MDQ1MTIzZGU5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRWxsaXBzaXNCb3guY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9FbGxpcHNpc0JveC5jcHAKQEAgLTI0LDcgKzI0LDcgQEAKICNpbmNs
dWRlICJGb250Q2FzY2FkZS5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1
ZGUgIkhpdFRlc3RSZXN1bHQuaCIKLSNpbmNsdWRlICJJbmxpbmVUZXh0Qm94LmgiCisjaW5jbHVk
ZSAiTGVnYWN5SW5saW5lVGV4dEJveC5oIgogI2luY2x1ZGUgIkxlZ2FjeVJvb3RJbmxpbmVCb3gu
aCIKICNpbmNsdWRlICJQYWludEluZm8uaCIKICNpbmNsdWRlICJUZXh0UnVuLmgiCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVnYWN5SW5saW5lQm94LmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvTGVnYWN5SW5saW5lQm94LmgKaW5kZXggOWRmZTU0ZDY2MDAxLi4z
YjZmOTU5MDgzMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MZWdhY3lJ
bmxpbmVCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVnYWN5SW5saW5lQm94
LmgKQEAgLTM0NiwxMiArMzQ2LDEyIEBAIHByaXZhdGU6CiAgICAgICAgIEFERF9CT09MRUFOX0JJ
VEZJRUxEKGlzSG9yaXpvbnRhbCwgSXNIb3Jpem9udGFsKTsKICAgICAgICAgLy8gZm9yIFJvb3RJ
bmxpbmVCb3gKICAgICAgICAgQUREX0JPT0xFQU5fQklURklFTEQoZW5kc1dpdGhCcmVhaywgRW5k
c1dpdGhCcmVhayk7IC8vIFdoZXRoZXIgdGhlIGxpbmUgZW5kcyB3aXRoIGEgPGJyPi4KLSAgICAg
ICAgLy8gc2hhcmVkIGJldHdlZW4gUm9vdElubGluZUJveCBhbmQgSW5saW5lVGV4dEJveAorICAg
ICAgICAvLyBzaGFyZWQgYmV0d2VlbiBSb290SW5saW5lQm94IGFuZCBMZWdhY3lJbmxpbmVUZXh0
Qm94CiAgICAgICAgIEFERF9CT09MRUFOX0JJVEZJRUxEKGNhbkhhdmVMZWZ0RXhwYW5zaW9uLCBD
YW5IYXZlTGVmdEV4cGFuc2lvbik7CiAgICAgICAgIEFERF9CT09MRUFOX0JJVEZJRUxEKGNhbkhh
dmVSaWdodEV4cGFuc2lvbiwgQ2FuSGF2ZVJpZ2h0RXhwYW5zaW9uKTsKICAgICAgICAgQUREX0JP
T0xFQU5fQklURklFTEQoa25vd25Ub0hhdmVOb092ZXJmbG93LCBLbm93blRvSGF2ZU5vT3ZlcmZs
b3cpOwogICAgICAgICBBRERfQk9PTEVBTl9CSVRGSUVMRChoYXNFbGxpcHNpc0JveE9ySHlwaGVu
LCBIYXNFbGxpcHNpc0JveE9ySHlwaGVuKTsKLSAgICAgICAgLy8gZm9yIElubGluZVRleHRCb3gK
KyAgICAgICAgLy8gZm9yIExlZ2FjeUlubGluZVRleHRCb3gKICAgICAgICAgQUREX0JPT0xFQU5f
QklURklFTEQoZGlyT3ZlcnJpZGUsIERpck92ZXJyaWRlKTsKICAgICAgICAgQUREX0JPT0xFQU5f
QklURklFTEQoYmVoYXZlc0xpa2VUZXh0LCBCZWhhdmVzTGlrZVRleHQpOyAvLyBXaGV0aGVyIG9y
IG5vdCB0aGlzIG9iamVjdCByZXByZXNlbnRzIHRleHQgd2l0aCBhIG5vbi16ZXJvIGhlaWdodC4g
SW5jbHVkZXMgbm9uLWltYWdlIGxpc3QgbWFya2VycywgdGV4dCBib3hlcywgYnIuCiAgICAgICAg
IEFERF9CT09MRUFOX0JJVEZJRUxEKGZvcmNlUmlnaHRFeHBhbnNpb24sIEZvcmNlUmlnaHRFeHBh
bnNpb24pOwpAQCAtMzk4LDE0ICszOTgsMTQgQEAgcHJvdGVjdGVkOgogICAgIGJvb2wgaGFzRWxs
aXBzaXNCb3goKSBjb25zdCB7IHJldHVybiBtX2JpdGZpZWxkcy5oYXNFbGxpcHNpc0JveE9ySHlw
aGVuKCk7IH0KICAgICB2b2lkIHNldEhhc0VsbGlwc2lzQm94KGJvb2wgaGFzRWxsaXBzaXNCb3gp
IHsgbV9iaXRmaWVsZHMuc2V0SGFzRWxsaXBzaXNCb3hPckh5cGhlbihoYXNFbGxpcHNpc0JveCk7
IH0KIAotICAgIC8vIEZvciBJbmxpbmVUZXh0Qm94CisgICAgLy8gRm9yIExlZ2FjeUlubGluZVRl
eHRCb3gKICAgICBib29sIGhhc0h5cGhlbigpIGNvbnN0IHsgcmV0dXJuIG1fYml0ZmllbGRzLmhh
c0VsbGlwc2lzQm94T3JIeXBoZW4oKTsgfQogICAgIGJvb2wgY2FuSGF2ZUxlZnRFeHBhbnNpb24o
KSBjb25zdCB7IHJldHVybiBtX2JpdGZpZWxkcy5jYW5IYXZlTGVmdEV4cGFuc2lvbigpOyB9CiAg
ICAgYm9vbCBjYW5IYXZlUmlnaHRFeHBhbnNpb24oKSBjb25zdCB7IHJldHVybiBtX2JpdGZpZWxk
cy5jYW5IYXZlUmlnaHRFeHBhbnNpb24oKTsgfQogICAgIGJvb2wgZm9yY2VSaWdodEV4cGFuc2lv
bigpIGNvbnN0IHsgcmV0dXJuIG1fYml0ZmllbGRzLmZvcmNlUmlnaHRFeHBhbnNpb24oKTsgfQog
ICAgIGJvb2wgZm9yY2VMZWZ0RXhwYW5zaW9uKCkgY29uc3QgeyByZXR1cm4gbV9iaXRmaWVsZHMu
Zm9yY2VMZWZ0RXhwYW5zaW9uKCk7IH0KICAgICAKLSAgICAvLyBGb3IgTGVnYWN5SW5saW5lRmxv
d0JveCBhbmQgSW5saW5lVGV4dEJveAorICAgIC8vIEZvciBMZWdhY3lJbmxpbmVGbG93Qm94IGFu
ZCBMZWdhY3lJbmxpbmVUZXh0Qm94CiAgICAgYm9vbCBleHRyYWN0ZWQoKSBjb25zdCB7IHJldHVy
biBtX2JpdGZpZWxkcy5leHRyYWN0ZWQoKTsgfQogCiBwcm90ZWN0ZWQ6CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVnYWN5SW5saW5lRmxvd0JveC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvTGVnYWN5SW5saW5lRmxvd0JveC5jcHAKaW5kZXggMjI5YThkNmMz
ZDIxLi41M2U5MGI2ODc0MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9M
ZWdhY3lJbmxpbmVGbG93Qm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVn
YWN5SW5saW5lRmxvd0JveC5jcHAKQEAgLTI2LDcgKzI2LDcgQEAKICNpbmNsdWRlICJGb250Q2Fz
Y2FkZS5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIkhpdFRlc3RS
ZXN1bHQuaCIKLSNpbmNsdWRlICJJbmxpbmVUZXh0Qm94LmgiCisjaW5jbHVkZSAiTGVnYWN5SW5s
aW5lVGV4dEJveC5oIgogI2luY2x1ZGUgIkxlZ2FjeVJvb3RJbmxpbmVCb3guaCIKICNpbmNsdWRl
ICJSZW5kZXJCbG9jay5oIgogI2luY2x1ZGUgIlJlbmRlcklubGluZS5oIgpAQCAtMTYxLDggKzE2
MSw4IEBAIHZvaWQgTGVnYWN5SW5saW5lRmxvd0JveDo6YWRkVG9MaW5lKExlZ2FjeUlubGluZUJv
eCogY2hpbGQpCiAgICAgICAgIGlmIChjaGlsZC0+YmVoYXZlc0xpa2VUZXh0KCkpIHsKICAgICAg
ICAgICAgIGNvbnN0IFJlbmRlclN0eWxlKiBjaGlsZFN0eWxlID0gJmNoaWxkLT5saW5lU3R5bGUo
KTsKICAgICAgICAgICAgIGJvb2wgaGFzTWFya2VycyA9IGZhbHNlOwotICAgICAgICAgICAgaWYg
KGlzPElubGluZVRleHRCb3g+KGNoaWxkKSkgewotICAgICAgICAgICAgICAgIGNvbnN0IGF1dG8q
IHRleHRCb3ggPSBkb3duY2FzdDxJbmxpbmVUZXh0Qm94PihjaGlsZCk7CisgICAgICAgICAgICBp
ZiAoaXM8TGVnYWN5SW5saW5lVGV4dEJveD4oY2hpbGQpKSB7CisgICAgICAgICAgICAgICAgY29u
c3QgYXV0byogdGV4dEJveCA9IGRvd25jYXN0PExlZ2FjeUlubGluZVRleHRCb3g+KGNoaWxkKTsK
ICAgICAgICAgICAgICAgICBoYXNNYXJrZXJzID0gdGV4dEJveC0+aGFzTWFya2VycygpOwogICAg
ICAgICAgICAgfQogICAgICAgICAgICAgaWYgKGNoaWxkU3R5bGUtPmxldHRlclNwYWNpbmcoKSA8
IDAgfHwgY2hpbGRTdHlsZS0+dGV4dFNoYWRvdygpIHx8IGNoaWxkU3R5bGUtPnRleHRFbXBoYXNp
c01hcmsoKSAhPSBUZXh0RW1waGFzaXNNYXJrOjpOb25lIHx8IGNoaWxkU3R5bGUtPmhhc1Bvc2l0
aXZlU3Ryb2tlV2lkdGgoKSB8fCBoYXNNYXJrZXJzIHx8ICFjaGlsZFN0eWxlLT50ZXh0VW5kZXJs
aW5lT2Zmc2V0KCkuaXNBdXRvKCkgfHwgIWNoaWxkU3R5bGUtPnRleHREZWNvcmF0aW9uVGhpY2tu
ZXNzKCkuaXNBdXRvKCkgfHwgY2hpbGRTdHlsZS0+dGV4dFVuZGVybGluZVBvc2l0aW9uKCkgIT0g
VGV4dFVuZGVybGluZVBvc2l0aW9uOjpBdXRvKQpAQCAtMzkyLDcgKzM5Miw3IEBAIGZsb2F0IExl
Z2FjeUlubGluZUZsb3dCb3g6OnBsYWNlQm94UmFuZ2VJbklubGluZURpcmVjdGlvbihMZWdhY3lJ
bmxpbmVCb3gqIGZpcnN0CiAgICAgZmxvYXQgdG90YWxFeHBhbnNpb24gPSAwOwogICAgIGZvciAo
YXV0byogY2hpbGQgPSBmaXJzdENoaWxkOyBjaGlsZCAmJiBjaGlsZCAhPSBsYXN0Q2hpbGQ7IGNo
aWxkID0gY2hpbGQtPm5leHRPbkxpbmUoKSkgewogICAgICAgICBpZiAoaXM8UmVuZGVyVGV4dD4o
Y2hpbGQtPnJlbmRlcmVyKCkpKSB7Ci0gICAgICAgICAgICBhdXRvJiB0ZXh0Qm94ID0gZG93bmNh
c3Q8SW5saW5lVGV4dEJveD4oKmNoaWxkKTsKKyAgICAgICAgICAgIGF1dG8mIHRleHRCb3ggPSBk
b3duY2FzdDxMZWdhY3lJbmxpbmVUZXh0Qm94PigqY2hpbGQpOwogICAgICAgICAgICAgUmVuZGVy
VGV4dCYgcmVuZGVyVGV4dCA9IHRleHRCb3gucmVuZGVyZXIoKTsKICAgICAgICAgICAgIGlmIChy
ZW5kZXJUZXh0LnRleHQoKS5sZW5ndGgoKSkgewogICAgICAgICAgICAgICAgIGlmIChuZWVkc1dv
cmRTcGFjaW5nICYmIGlzU3BhY2VPck5ld2xpbmUocmVuZGVyVGV4dC5jaGFyYWN0ZXJBdCh0ZXh0
Qm94LnN0YXJ0KCkpKSkKQEAgLTQ3Miw4ICs0NzIsOCBAQCBib29sIExlZ2FjeUlubGluZUZsb3dC
b3g6OnJlcXVpcmVzSWRlb2dyYXBoaWNCYXNlbGluZShjb25zdCBHbHlwaE92ZXJmbG93QW5kRmFs
bAogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgCiAgICAgICAgICAg
ICBjb25zdCBWZWN0b3I8Y29uc3QgRm9udCo+KiB1c2VkRm9udHMgPSBudWxscHRyOwotICAgICAg
ICAgICAgaWYgKGlzPElubGluZVRleHRCb3g+KCpjaGlsZCkpIHsKLSAgICAgICAgICAgICAgICBH
bHlwaE92ZXJmbG93QW5kRmFsbGJhY2tGb250c01hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSB0ZXh0
Qm94RGF0YU1hcC5maW5kKGRvd25jYXN0PElubGluZVRleHRCb3g+KGNoaWxkKSk7CisgICAgICAg
ICAgICBpZiAoaXM8TGVnYWN5SW5saW5lVGV4dEJveD4oKmNoaWxkKSkgeworICAgICAgICAgICAg
ICAgIEdseXBoT3ZlcmZsb3dBbmRGYWxsYmFja0ZvbnRzTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9
IHRleHRCb3hEYXRhTWFwLmZpbmQoZG93bmNhc3Q8TGVnYWN5SW5saW5lVGV4dEJveD4oY2hpbGQp
KTsKICAgICAgICAgICAgICAgICB1c2VkRm9udHMgPSBpdCA9PSB0ZXh0Qm94RGF0YU1hcC5lbmQo
KSA/IG51bGxwdHIgOiAmaXQtPnZhbHVlLmZpcnN0OwogICAgICAgICAgICAgfQogCkBAIC03MzQs
OCArNzM0LDggQEAgdm9pZCBMZWdhY3lJbmxpbmVGbG93Qm94OjpwbGFjZUJveGVzSW5CbG9ja0Rp
cmVjdGlvbihMYXlvdXRVbml0IHRvcCwgTGF5b3V0VW5pdAogICAgICAgICAgICAgICAgICAgICBi
b3hIZWlnaHQgLT0gKHRvcFJ1YnlCYXNlTGVhZGluZyArIGJvdHRvbVJ1YnlCYXNlTGVhZGluZyk7
CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKGlzPElu
bGluZVRleHRCb3g+KCpjaGlsZCkpIHsKLSAgICAgICAgICAgICAgICBpZiAoc3RkOjpvcHRpb25h
bDxib29sPiBtYXJrRXhpc3RzQW5kSXNBYm92ZSA9IGRvd25jYXN0PElubGluZVRleHRCb3g+KCpj
aGlsZCkuZW1waGFzaXNNYXJrRXhpc3RzQW5kSXNBYm92ZShjaGlsZExpbmVTdHlsZSkpIHsKKyAg
ICAgICAgICAgIGlmIChpczxMZWdhY3lJbmxpbmVUZXh0Qm94PigqY2hpbGQpKSB7CisgICAgICAg
ICAgICAgICAgaWYgKHN0ZDo6b3B0aW9uYWw8Ym9vbD4gbWFya0V4aXN0c0FuZElzQWJvdmUgPSBk
b3duY2FzdDxMZWdhY3lJbmxpbmVUZXh0Qm94PigqY2hpbGQpLmVtcGhhc2lzTWFya0V4aXN0c0Fu
ZElzQWJvdmUoY2hpbGRMaW5lU3R5bGUpKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmICgqbWFy
a0V4aXN0c0FuZElzQWJvdmUgIT0gY2hpbGRMaW5lU3R5bGUuaXNGbGlwcGVkTGluZXNXcml0aW5n
TW9kZSgpKQogICAgICAgICAgICAgICAgICAgICAgICAgaGFzQW5ub3RhdGlvbnNCZWZvcmUgPSB0
cnVlOwogICAgICAgICAgICAgICAgICAgICBlbHNlCkBAIC05MDYsNyArOTA2LDcgQEAgaW5saW5l
IHZvaWQgTGVnYWN5SW5saW5lRmxvd0JveDo6YWRkQm9yZGVyT3V0c2V0VmlzdWFsT3ZlcmZsb3co
TGF5b3V0UmVjdCYgbG9naWMKICAgICBsb2dpY2FsVmlzdWFsT3ZlcmZsb3cgPSBMYXlvdXRSZWN0
KGxvZ2ljYWxMZWZ0VmlzdWFsT3ZlcmZsb3csIGxvZ2ljYWxUb3BWaXN1YWxPdmVyZmxvdywgbG9n
aWNhbFJpZ2h0VmlzdWFsT3ZlcmZsb3cgLSBsb2dpY2FsTGVmdFZpc3VhbE92ZXJmbG93LCBsb2dp
Y2FsQm90dG9tVmlzdWFsT3ZlcmZsb3cgLSBsb2dpY2FsVG9wVmlzdWFsT3ZlcmZsb3cpOwogfQog
Ci1pbmxpbmUgdm9pZCBMZWdhY3lJbmxpbmVGbG93Qm94OjphZGRUZXh0Qm94VmlzdWFsT3ZlcmZs
b3coSW5saW5lVGV4dEJveCYgdGV4dEJveCwgR2x5cGhPdmVyZmxvd0FuZEZhbGxiYWNrRm9udHNN
YXAmIHRleHRCb3hEYXRhTWFwLCBMYXlvdXRSZWN0JiBsb2dpY2FsVmlzdWFsT3ZlcmZsb3cpCitp
bmxpbmUgdm9pZCBMZWdhY3lJbmxpbmVGbG93Qm94OjphZGRUZXh0Qm94VmlzdWFsT3ZlcmZsb3co
TGVnYWN5SW5saW5lVGV4dEJveCYgdGV4dEJveCwgR2x5cGhPdmVyZmxvd0FuZEZhbGxiYWNrRm9u
dHNNYXAmIHRleHRCb3hEYXRhTWFwLCBMYXlvdXRSZWN0JiBsb2dpY2FsVmlzdWFsT3ZlcmZsb3cp
CiB7CiAgICAgaWYgKHRleHRCb3gua25vd25Ub0hhdmVOb092ZXJmbG93KCkpCiAgICAgICAgIHJl
dHVybjsKQEAgLTEwMzAsNyArMTAzMCw3IEBAIHZvaWQgTGVnYWN5SW5saW5lRmxvd0JveDo6Y29t
cHV0ZU92ZXJmbG93KExheW91dFVuaXQgbGluZVRvcCwgTGF5b3V0VW5pdCBsaW5lQm90CiAgICAg
ICAgIGlmIChpczxSZW5kZXJMaW5lQnJlYWs+KGNoaWxkLT5yZW5kZXJlcigpKSkKICAgICAgICAg
ICAgIGNvbnRpbnVlOwogICAgICAgICBpZiAoaXM8UmVuZGVyVGV4dD4oY2hpbGQtPnJlbmRlcmVy
KCkpKSB7Ci0gICAgICAgICAgICBhdXRvJiB0ZXh0Qm94ID0gZG93bmNhc3Q8SW5saW5lVGV4dEJv
eD4oKmNoaWxkKTsKKyAgICAgICAgICAgIGF1dG8mIHRleHRCb3ggPSBkb3duY2FzdDxMZWdhY3lJ
bmxpbmVUZXh0Qm94PigqY2hpbGQpOwogICAgICAgICAgICAgTGF5b3V0UmVjdCB0ZXh0Qm94T3Zl
cmZsb3coZW5jbG9zaW5nTGF5b3V0UmVjdCh0ZXh0Qm94LmxvZ2ljYWxGcmFtZVJlY3QoKSkpOwog
ICAgICAgICAgICAgYWRkVGV4dEJveFZpc3VhbE92ZXJmbG93KHRleHRCb3gsIHRleHRCb3hEYXRh
TWFwLCB0ZXh0Qm94T3ZlcmZsb3cpOwogICAgICAgICAgICAgbG9naWNhbFZpc3VhbE92ZXJmbG93
LnVuaXRlKHRleHRCb3hPdmVyZmxvdyk7CkBAIC0xNjEzLDkgKzE2MTMsOSBAQCBMYXlvdXRVbml0
IExlZ2FjeUlubGluZUZsb3dCb3g6OmNvbXB1dGVPdmVyQW5ub3RhdGlvbkFkanVzdG1lbnQoTGF5
b3V0VW5pdCBhbGxvdwogICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAgaWYgKGlz
PElubGluZVRleHRCb3g+KCpjaGlsZCkpIHsKKyAgICAgICAgaWYgKGlzPExlZ2FjeUlubGluZVRl
eHRCb3g+KCpjaGlsZCkpIHsKICAgICAgICAgICAgIGNvbnN0IFJlbmRlclN0eWxlJiBjaGlsZExp
bmVTdHlsZSA9IGNoaWxkLT5saW5lU3R5bGUoKTsKLSAgICAgICAgICAgIHN0ZDo6b3B0aW9uYWw8
Ym9vbD4gbWFya0V4aXN0c0FuZElzQWJvdmUgPSBkb3duY2FzdDxJbmxpbmVUZXh0Qm94PigqY2hp
bGQpLmVtcGhhc2lzTWFya0V4aXN0c0FuZElzQWJvdmUoY2hpbGRMaW5lU3R5bGUpOworICAgICAg
ICAgICAgc3RkOjpvcHRpb25hbDxib29sPiBtYXJrRXhpc3RzQW5kSXNBYm92ZSA9IGRvd25jYXN0
PExlZ2FjeUlubGluZVRleHRCb3g+KCpjaGlsZCkuZW1waGFzaXNNYXJrRXhpc3RzQW5kSXNBYm92
ZShjaGlsZExpbmVTdHlsZSk7CiAgICAgICAgICAgICBpZiAobWFya0V4aXN0c0FuZElzQWJvdmUg
JiYgKm1hcmtFeGlzdHNBbmRJc0Fib3ZlKSB7CiAgICAgICAgICAgICAgICAgaWYgKCFjaGlsZExp
bmVTdHlsZS5pc0ZsaXBwZWRMaW5lc1dyaXRpbmdNb2RlKCkpIHsKICAgICAgICAgICAgICAgICAg
ICAgaW50IHRvcE9mRW1waGFzaXNNYXJrID0gY2hpbGQtPmxvZ2ljYWxUb3AoKSAtIGNoaWxkTGlu
ZVN0eWxlLmZvbnRDYXNjYWRlKCkuZW1waGFzaXNNYXJrSGVpZ2h0KGNoaWxkTGluZVN0eWxlLnRl
eHRFbXBoYXNpc01hcmtTdHJpbmcoKSk7CkBAIC0xNjYxLDkgKzE2NjEsOSBAQCBMYXlvdXRVbml0
IExlZ2FjeUlubGluZUZsb3dCb3g6OmNvbXB1dGVVbmRlckFubm90YXRpb25BZGp1c3RtZW50KExh
eW91dFVuaXQgYWxsbwogICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAgaWYgKGlz
PElubGluZVRleHRCb3g+KCpjaGlsZCkpIHsKKyAgICAgICAgaWYgKGlzPExlZ2FjeUlubGluZVRl
eHRCb3g+KCpjaGlsZCkpIHsKICAgICAgICAgICAgIGNvbnN0IFJlbmRlclN0eWxlJiBjaGlsZExp
bmVTdHlsZSA9IGNoaWxkLT5saW5lU3R5bGUoKTsKLSAgICAgICAgICAgIHN0ZDo6b3B0aW9uYWw8
Ym9vbD4gbWFya0V4aXN0c0FuZElzQWJvdmUgPSBkb3duY2FzdDxJbmxpbmVUZXh0Qm94PigqY2hp
bGQpLmVtcGhhc2lzTWFya0V4aXN0c0FuZElzQWJvdmUoY2hpbGRMaW5lU3R5bGUpOworICAgICAg
ICAgICAgc3RkOjpvcHRpb25hbDxib29sPiBtYXJrRXhpc3RzQW5kSXNBYm92ZSA9IGRvd25jYXN0
PExlZ2FjeUlubGluZVRleHRCb3g+KCpjaGlsZCkuZW1waGFzaXNNYXJrRXhpc3RzQW5kSXNBYm92
ZShjaGlsZExpbmVTdHlsZSk7CiAgICAgICAgICAgICBpZiAobWFya0V4aXN0c0FuZElzQWJvdmUg
JiYgISptYXJrRXhpc3RzQW5kSXNBYm92ZSkgewogICAgICAgICAgICAgICAgIGlmICghY2hpbGRM
aW5lU3R5bGUuaXNGbGlwcGVkTGluZXNXcml0aW5nTW9kZSgpKSB7CiAgICAgICAgICAgICAgICAg
ICAgIExheW91dFVuaXQgYm90dG9tT2ZFbXBoYXNpc01hcmsgeyBjaGlsZC0+bG9naWNhbEJvdHRv
bSgpICsgY2hpbGRMaW5lU3R5bGUuZm9udENhc2NhZGUoKS5lbXBoYXNpc01hcmtIZWlnaHQoY2hp
bGRMaW5lU3R5bGUudGV4dEVtcGhhc2lzTWFya1N0cmluZygpKSB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xlZ2FjeUlubGluZUZsb3dCb3guaCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9MZWdhY3lJbmxpbmVGbG93Qm94LmgKaW5kZXggNzI3NTFiYTM3ZTMzLi4z
ODFjMjgyMjIyZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MZWdhY3lJ
bmxpbmVGbG93Qm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xlZ2FjeUlubGlu
ZUZsb3dCb3guaApAQCAtMjgsMTQgKzI4LDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xh
c3MgSGl0VGVzdFJlcXVlc3Q7CiBjbGFzcyBIaXRUZXN0UmVzdWx0OwotY2xhc3MgSW5saW5lVGV4
dEJveDsKK2NsYXNzIExlZ2FjeUlubGluZVRleHRCb3g7CiBjbGFzcyBSZW5kZXJMaW5lQm94TGlz
dDsKIGNsYXNzIEZvbnQ7CiBjbGFzcyBWZXJ0aWNhbFBvc2l0aW9uQ2FjaGU7CiAKIHN0cnVjdCBH
bHlwaE92ZXJmbG93OwogCi10eXBlZGVmIEhhc2hNYXA8Y29uc3QgSW5saW5lVGV4dEJveCosIHN0
ZDo6cGFpcjxWZWN0b3I8Y29uc3QgRm9udCo+LCBHbHlwaE92ZXJmbG93Pj4gR2x5cGhPdmVyZmxv
d0FuZEZhbGxiYWNrRm9udHNNYXA7Cit0eXBlZGVmIEhhc2hNYXA8Y29uc3QgTGVnYWN5SW5saW5l
VGV4dEJveCosIHN0ZDo6cGFpcjxWZWN0b3I8Y29uc3QgRm9udCo+LCBHbHlwaE92ZXJmbG93Pj4g
R2x5cGhPdmVyZmxvd0FuZEZhbGxiYWNrRm9udHNNYXA7CiAKIGNsYXNzIExlZ2FjeUlubGluZUZs
b3dCb3ggOiBwdWJsaWMgTGVnYWN5SW5saW5lQm94IHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NB
VEVEKExlZ2FjeUlubGluZUZsb3dCb3gpOwpAQCAtMzA1LDcgKzMwNSw3IEBAIHByaXZhdGU6CiAK
ICAgICB2b2lkIGFkZEJveFNoYWRvd1Zpc3VhbE92ZXJmbG93KExheW91dFJlY3QmIGxvZ2ljYWxW
aXN1YWxPdmVyZmxvdyk7CiAgICAgdm9pZCBhZGRCb3JkZXJPdXRzZXRWaXN1YWxPdmVyZmxvdyhM
YXlvdXRSZWN0JiBsb2dpY2FsVmlzdWFsT3ZlcmZsb3cpOwotICAgIHZvaWQgYWRkVGV4dEJveFZp
c3VhbE92ZXJmbG93KElubGluZVRleHRCb3gmLCBHbHlwaE92ZXJmbG93QW5kRmFsbGJhY2tGb250
c01hcCYsIExheW91dFJlY3QmIGxvZ2ljYWxWaXN1YWxPdmVyZmxvdyk7CisgICAgdm9pZCBhZGRU
ZXh0Qm94VmlzdWFsT3ZlcmZsb3coTGVnYWN5SW5saW5lVGV4dEJveCYsIEdseXBoT3ZlcmZsb3dB
bmRGYWxsYmFja0ZvbnRzTWFwJiwgTGF5b3V0UmVjdCYgbG9naWNhbFZpc3VhbE92ZXJmbG93KTsK
ICAgICB2b2lkIGFkZE91dGxpbmVWaXN1YWxPdmVyZmxvdyhMYXlvdXRSZWN0JiBsb2dpY2FsVmlz
dWFsT3ZlcmZsb3cpOwogICAgIHZvaWQgYWRkUmVwbGFjZWRDaGlsZE92ZXJmbG93KGNvbnN0IExl
Z2FjeUlubGluZUJveCosIExheW91dFJlY3QmIGxvZ2ljYWxMYXlvdXRPdmVyZmxvdywgTGF5b3V0
UmVjdCYgbG9naWNhbFZpc3VhbE92ZXJmbG93KTsKICAgICB2b2lkIGNvbnN0cmFpblRvTGluZVRv
cEFuZEJvdHRvbUlmTmVlZGVkKExheW91dFJlY3QmKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9MZWdhY3lJbmxpbmVUZXh0Qm94LmNwcApzaW1pbGFyaXR5IGluZGV4IDg4JQpyZW5h
bWUgZnJvbSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAKcmVuYW1l
IHRvIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MZWdhY3lJbmxpbmVUZXh0Qm94LmNwcAppbmRl
eCBhODE4ZDMxM2ZiNjUuLjRjOTY2NTIwZDI3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9MZWdhY3lJbmxpbmVUZXh0Qm94LmNwcApAQCAtMjEsNyArMjEsNyBAQAogICovCiAKICNpbmNs
dWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJJbmxpbmVUZXh0Qm94LmgiCisjaW5jbHVkZSAiTGVn
YWN5SW5saW5lVGV4dEJveC5oIgogCiAjaW5jbHVkZSAiQnJlYWtMaW5lcy5oIgogI2luY2x1ZGUg
IkNvbXBvc2l0aW9uSGlnaGxpZ2h0LmgiCkBAIC02NCwyNyArNjQsMjcgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1XVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoSW5saW5lVGV4dEJveCk7
CitXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoTGVnYWN5SW5saW5lVGV4dEJveCk7CiAKLXN0
cnVjdCBTYW1lU2l6ZUFzSW5saW5lVGV4dEJveCA6IHB1YmxpYyBMZWdhY3lJbmxpbmVCb3ggewor
c3RydWN0IFNhbWVTaXplQXNMZWdhY3lJbmxpbmVUZXh0Qm94IDogcHVibGljIExlZ2FjeUlubGlu
ZUJveCB7CiAgICAgdW5zaWduZWQgdmFyaWFibGVzWzFdOwogICAgIHVuc2lnbmVkIHNob3J0IHZh
cmlhYmxlczJbMl07CiAgICAgdm9pZCogcG9pbnRlcnNbMl07CiB9OwogCi1DT01QSUxFX0FTU0VS
VChzaXplb2YoSW5saW5lVGV4dEJveCkgPT0gc2l6ZW9mKFNhbWVTaXplQXNJbmxpbmVUZXh0Qm94
KSwgSW5saW5lVGV4dEJveF9zaG91bGRfc3RheV9zbWFsbCk7CitDT01QSUxFX0FTU0VSVChzaXpl
b2YoTGVnYWN5SW5saW5lVGV4dEJveCkgPT0gc2l6ZW9mKFNhbWVTaXplQXNMZWdhY3lJbmxpbmVU
ZXh0Qm94KSwgTGVnYWN5SW5saW5lVGV4dEJveF9zaG91bGRfc3RheV9zbWFsbCk7CiAKLXR5cGVk
ZWYgV1RGOjpIYXNoTWFwPGNvbnN0IElubGluZVRleHRCb3gqLCBMYXlvdXRSZWN0PiBJbmxpbmVU
ZXh0Qm94T3ZlcmZsb3dNYXA7Ci1zdGF0aWMgSW5saW5lVGV4dEJveE92ZXJmbG93TWFwKiBnVGV4
dEJveGVzV2l0aE92ZXJmbG93OwordHlwZWRlZiBXVEY6Okhhc2hNYXA8Y29uc3QgTGVnYWN5SW5s
aW5lVGV4dEJveCosIExheW91dFJlY3Q+IExlZ2FjeUlubGluZVRleHRCb3hPdmVyZmxvd01hcDsK
K3N0YXRpYyBMZWdhY3lJbmxpbmVUZXh0Qm94T3ZlcmZsb3dNYXAqIGdUZXh0Qm94ZXNXaXRoT3Zl
cmZsb3c7CiAKLUlubGluZVRleHRCb3g6On5JbmxpbmVUZXh0Qm94KCkKK0xlZ2FjeUlubGluZVRl
eHRCb3g6On5MZWdhY3lJbmxpbmVUZXh0Qm94KCkKIHsKICAgICBpZiAoIWtub3duVG9IYXZlTm9P
dmVyZmxvdygpICYmIGdUZXh0Qm94ZXNXaXRoT3ZlcmZsb3cpCiAgICAgICAgIGdUZXh0Qm94ZXNX
aXRoT3ZlcmZsb3ctPnJlbW92ZSh0aGlzKTsKICAgICBUZXh0UGFpbnRlcjo6cmVtb3ZlR2x5cGhE
aXNwbGF5TGlzdCgqdGhpcyk7CiB9CiAKLWJvb2wgSW5saW5lVGV4dEJveDo6aGFzVGV4dENvbnRl
bnQoKSBjb25zdAorYm9vbCBMZWdhY3lJbmxpbmVUZXh0Qm94OjpoYXNUZXh0Q29udGVudCgpIGNv
bnN0CiB7CiAgICAgaWYgKG1fbGVuID4gMSkKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC05NSw3
ICs5NSw3IEBAIGJvb2wgSW5saW5lVGV4dEJveDo6aGFzVGV4dENvbnRlbnQoKSBjb25zdAogICAg
IHJldHVybiBtX2xlbjsKIH0KIAotdm9pZCBJbmxpbmVUZXh0Qm94OjptYXJrRGlydHkoYm9vbCBk
aXJ0eSkKK3ZvaWQgTGVnYWN5SW5saW5lVGV4dEJveDo6bWFya0RpcnR5KGJvb2wgZGlydHkpCiB7
CiAgICAgaWYgKGRpcnR5KSB7CiAgICAgICAgIG1fbGVuID0gMDsKQEAgLTEwNCwyMiArMTA0LDIy
IEBAIHZvaWQgSW5saW5lVGV4dEJveDo6bWFya0RpcnR5KGJvb2wgZGlydHkpCiAgICAgTGVnYWN5
SW5saW5lQm94OjptYXJrRGlydHkoZGlydHkpOwogfQogCi1MYXlvdXRSZWN0IElubGluZVRleHRC
b3g6OmxvZ2ljYWxPdmVyZmxvd1JlY3QoKSBjb25zdAorTGF5b3V0UmVjdCBMZWdhY3lJbmxpbmVU
ZXh0Qm94Ojpsb2dpY2FsT3ZlcmZsb3dSZWN0KCkgY29uc3QKIHsKICAgICBpZiAoa25vd25Ub0hh
dmVOb092ZXJmbG93KCkgfHwgIWdUZXh0Qm94ZXNXaXRoT3ZlcmZsb3cpCiAgICAgICAgIHJldHVy
biBlbmNsb3NpbmdJbnRSZWN0KGxvZ2ljYWxGcmFtZVJlY3QoKSk7CiAgICAgcmV0dXJuIGdUZXh0
Qm94ZXNXaXRoT3ZlcmZsb3ctPmdldCh0aGlzKTsKIH0KIAotdm9pZCBJbmxpbmVUZXh0Qm94Ojpz
ZXRMb2dpY2FsT3ZlcmZsb3dSZWN0KGNvbnN0IExheW91dFJlY3QmIHJlY3QpCit2b2lkIExlZ2Fj
eUlubGluZVRleHRCb3g6OnNldExvZ2ljYWxPdmVyZmxvd1JlY3QoY29uc3QgTGF5b3V0UmVjdCYg
cmVjdCkKIHsKICAgICBBU1NFUlQoIWtub3duVG9IYXZlTm9PdmVyZmxvdygpKTsKICAgICBpZiAo
IWdUZXh0Qm94ZXNXaXRoT3ZlcmZsb3cpCi0gICAgICAgIGdUZXh0Qm94ZXNXaXRoT3ZlcmZsb3cg
PSBuZXcgSW5saW5lVGV4dEJveE92ZXJmbG93TWFwOworICAgICAgICBnVGV4dEJveGVzV2l0aE92
ZXJmbG93ID0gbmV3IExlZ2FjeUlubGluZVRleHRCb3hPdmVyZmxvd01hcDsKICAgICBnVGV4dEJv
eGVzV2l0aE92ZXJmbG93LT5hZGQodGhpcywgcmVjdCk7CiB9CiAKLUxheW91dFVuaXQgSW5saW5l
VGV4dEJveDo6YmFzZWxpbmVQb3NpdGlvbihGb250QmFzZWxpbmUgYmFzZWxpbmVUeXBlKSBjb25z
dAorTGF5b3V0VW5pdCBMZWdhY3lJbmxpbmVUZXh0Qm94OjpiYXNlbGluZVBvc2l0aW9uKEZvbnRC
YXNlbGluZSBiYXNlbGluZVR5cGUpIGNvbnN0CiB7CiAgICAgaWYgKCFwYXJlbnQoKSkKICAgICAg
ICAgcmV0dXJuIDA7CkBAIC0xMjgsNyArMTI4LDcgQEAgTGF5b3V0VW5pdCBJbmxpbmVUZXh0Qm94
OjpiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSBiYXNlbGluZVR5cGUpIGNvbnN0CiAgICAg
cmV0dXJuIGRvd25jYXN0PFJlbmRlckJveE1vZGVsT2JqZWN0PigqcmVuZGVyZXIoKS5wYXJlbnQo
KSkuYmFzZWxpbmVQb3NpdGlvbihiYXNlbGluZVR5cGUsIGlzRmlyc3RMaW5lKCksIGlzSG9yaXpv
bnRhbCgpID8gSG9yaXpvbnRhbExpbmUgOiBWZXJ0aWNhbExpbmUsIFBvc2l0aW9uT25Db250YWlu
aW5nTGluZSk7CiB9CiAKLUxheW91dFVuaXQgSW5saW5lVGV4dEJveDo6bGluZUhlaWdodCgpIGNv
bnN0CitMYXlvdXRVbml0IExlZ2FjeUlubGluZVRleHRCb3g6OmxpbmVIZWlnaHQoKSBjb25zdAog
ewogICAgIGlmICghcmVuZGVyZXIoKS5wYXJlbnQoKSkKICAgICAgICAgcmV0dXJuIDA7CkBAIC0x
MzcsMjcgKzEzNywyNyBAQCBMYXlvdXRVbml0IElubGluZVRleHRCb3g6OmxpbmVIZWlnaHQoKSBj
b25zdAogICAgIHJldHVybiBkb3duY2FzdDxSZW5kZXJCb3hNb2RlbE9iamVjdD4oKnJlbmRlcmVy
KCkucGFyZW50KCkpLmxpbmVIZWlnaHQoaXNGaXJzdExpbmUoKSwgaXNIb3Jpem9udGFsKCkgPyBI
b3Jpem9udGFsTGluZSA6IFZlcnRpY2FsTGluZSwgUG9zaXRpb25PbkNvbnRhaW5pbmdMaW5lKTsK
IH0KIAotTGF5b3V0VW5pdCBJbmxpbmVUZXh0Qm94OjpzZWxlY3Rpb25Ub3AoKSBjb25zdAorTGF5
b3V0VW5pdCBMZWdhY3lJbmxpbmVUZXh0Qm94OjpzZWxlY3Rpb25Ub3AoKSBjb25zdAogewogICAg
IHJldHVybiByb290KCkuc2VsZWN0aW9uVG9wKCk7CiB9CiAKLUxheW91dFVuaXQgSW5saW5lVGV4
dEJveDo6c2VsZWN0aW9uQm90dG9tKCkgY29uc3QKK0xheW91dFVuaXQgTGVnYWN5SW5saW5lVGV4
dEJveDo6c2VsZWN0aW9uQm90dG9tKCkgY29uc3QKIHsKICAgICByZXR1cm4gcm9vdCgpLnNlbGVj
dGlvbkJvdHRvbSgpOwogfQogCi1MYXlvdXRVbml0IElubGluZVRleHRCb3g6OnNlbGVjdGlvbkhl
aWdodCgpIGNvbnN0CitMYXlvdXRVbml0IExlZ2FjeUlubGluZVRleHRCb3g6OnNlbGVjdGlvbkhl
aWdodCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHJvb3QoKS5zZWxlY3Rpb25IZWlnaHQoKTsKIH0K
IAotYm9vbCBJbmxpbmVUZXh0Qm94Ojppc1NlbGVjdGVkKHVuc2lnbmVkIHN0YXJ0UG9zaXRpb24s
IHVuc2lnbmVkIGVuZFBvc2l0aW9uKSBjb25zdAorYm9vbCBMZWdhY3lJbmxpbmVUZXh0Qm94Ojpp
c1NlbGVjdGVkKHVuc2lnbmVkIHN0YXJ0UG9zaXRpb24sIHVuc2lnbmVkIGVuZFBvc2l0aW9uKSBj
b25zdAogewogICAgIHJldHVybiBjbGFtcGVkT2Zmc2V0KHN0YXJ0UG9zaXRpb24pIDwgY2xhbXBl
ZE9mZnNldChlbmRQb3NpdGlvbik7CiB9CiAKLVJlbmRlck9iamVjdDo6SGlnaGxpZ2h0U3RhdGUg
SW5saW5lVGV4dEJveDo6c2VsZWN0aW9uU3RhdGUoKQorUmVuZGVyT2JqZWN0OjpIaWdobGlnaHRT
dGF0ZSBMZWdhY3lJbmxpbmVUZXh0Qm94OjpzZWxlY3Rpb25TdGF0ZSgpCiB7CiAgICAgYXV0byBz
dGF0ZSA9IHZlcmlmeVNlbGVjdGlvblN0YXRlKHJlbmRlcmVyKCkuc2VsZWN0aW9uU3RhdGUoKSwg
cmVuZGVyZXIoKS52aWV3KCkuc2VsZWN0aW9uKCkpOwogICAgIApAQCAtMTgzLDcgKzE4Myw3IEBA
IFJlbmRlck9iamVjdDo6SGlnaGxpZ2h0U3RhdGUgSW5saW5lVGV4dEJveDo6c2VsZWN0aW9uU3Rh
dGUoKQogICAgIHJldHVybiBzdGF0ZTsKIH0KIAotUmVuZGVyT2JqZWN0OjpIaWdobGlnaHRTdGF0
ZSBJbmxpbmVUZXh0Qm94Ojp2ZXJpZnlTZWxlY3Rpb25TdGF0ZShSZW5kZXJPYmplY3Q6OkhpZ2hs
aWdodFN0YXRlIHN0YXRlLCBIaWdobGlnaHREYXRhJiBzZWxlY3Rpb24pIGNvbnN0CitSZW5kZXJP
YmplY3Q6OkhpZ2hsaWdodFN0YXRlIExlZ2FjeUlubGluZVRleHRCb3g6OnZlcmlmeVNlbGVjdGlv
blN0YXRlKFJlbmRlck9iamVjdDo6SGlnaGxpZ2h0U3RhdGUgc3RhdGUsIEhpZ2hsaWdodERhdGEm
IHNlbGVjdGlvbikgY29uc3QKIHsKICAgICBpZiAoc3RhdGUgPT0gUmVuZGVyT2JqZWN0OjpIaWdo
bGlnaHRTdGF0ZTo6U3RhcnQgfHwgc3RhdGUgPT0gUmVuZGVyT2JqZWN0OjpIaWdobGlnaHRTdGF0
ZTo6RW5kIHx8IHN0YXRlID09IFJlbmRlck9iamVjdDo6SGlnaGxpZ2h0U3RhdGU6OkJvdGgpIHsK
ICAgICAgICAgYXV0byBzdGFydE9mZnNldCA9IHNlbGVjdGlvbi5zdGFydE9mZnNldCgpOwpAQCAt
MjEwLDcgKzIxMCw3IEBAIFJlbmRlck9iamVjdDo6SGlnaGxpZ2h0U3RhdGUgSW5saW5lVGV4dEJv
eDo6dmVyaWZ5U2VsZWN0aW9uU3RhdGUoUmVuZGVyT2JqZWN0OjpICiAgICAgcmV0dXJuIHN0YXRl
OwogfQogCi1pbmxpbmUgY29uc3QgRm9udENhc2NhZGUmIElubGluZVRleHRCb3g6OmxpbmVGb250
KCkgY29uc3QKK2lubGluZSBjb25zdCBGb250Q2FzY2FkZSYgTGVnYWN5SW5saW5lVGV4dEJveDo6
bGluZUZvbnQoKSBjb25zdAogewogICAgIHJldHVybiBjb21iaW5lZFRleHQoKSA/IGNvbWJpbmVk
VGV4dCgpLT50ZXh0Q29tYmluZUZvbnQoKSA6IGxpbmVTdHlsZSgpLmZvbnRDYXNjYWRlKCk7CiB9
CkBAIC0yNDAsNyArMjQwLDcgQEAgTGF5b3V0UmVjdCBzbmFwcGVkU2VsZWN0aW9uUmVjdChjb25z
dCBMYXlvdXRSZWN0JiBzZWxlY3Rpb25SZWN0LCBmbG9hdCBsb2dpY2FsUmkKIH0KIAogLy8gRklY
TUU6IFNoYXJlIG1vcmUgY29kZSB3aXRoIHBhaW50TWFya2VkVGV4dEJhY2tncm91bmQoKS4KLUxh
eW91dFJlY3QgSW5saW5lVGV4dEJveDo6bG9jYWxTZWxlY3Rpb25SZWN0KHVuc2lnbmVkIHN0YXJ0
UG9zLCB1bnNpZ25lZCBlbmRQb3MpIGNvbnN0CitMYXlvdXRSZWN0IExlZ2FjeUlubGluZVRleHRC
b3g6OmxvY2FsU2VsZWN0aW9uUmVjdCh1bnNpZ25lZCBzdGFydFBvcywgdW5zaWduZWQgZW5kUG9z
KSBjb25zdAogewogICAgIHVuc2lnbmVkIHNQb3MgPSBjbGFtcGVkT2Zmc2V0KHN0YXJ0UG9zKTsK
ICAgICB1bnNpZ25lZCBlUG9zID0gY2xhbXBlZE9mZnNldChlbmRQb3MpOwpAQCAtMjYyLDEzICsy
NjIsMTMgQEAgTGF5b3V0UmVjdCBJbmxpbmVUZXh0Qm94Ojpsb2NhbFNlbGVjdGlvblJlY3QodW5z
aWduZWQgc3RhcnRQb3MsIHVuc2lnbmVkIGVuZFBvcykKICAgICByZXR1cm4gc25hcHBlZFNlbGVj
dGlvblJlY3Qoc2VsZWN0aW9uUmVjdCwgbG9naWNhbFJpZ2h0KCksIHNlbGVjdGlvblRvcCwgc2Vs
ZWN0aW9uSGVpZ2h0LCBpc0hvcml6b250YWwoKSk7CiB9CiAKLXZvaWQgSW5saW5lVGV4dEJveDo6
ZGVsZXRlTGluZSgpCit2b2lkIExlZ2FjeUlubGluZVRleHRCb3g6OmRlbGV0ZUxpbmUoKQogewog
ICAgIHJlbmRlcmVyKCkucmVtb3ZlVGV4dEJveCgqdGhpcyk7CiAgICAgZGVsZXRlIHRoaXM7CiB9
CiAKLXZvaWQgSW5saW5lVGV4dEJveDo6ZXh0cmFjdExpbmUoKQordm9pZCBMZWdhY3lJbmxpbmVU
ZXh0Qm94OjpleHRyYWN0TGluZSgpCiB7CiAgICAgaWYgKGV4dHJhY3RlZCgpKQogICAgICAgICBy
ZXR1cm47CkBAIC0yNzYsNyArMjc2LDcgQEAgdm9pZCBJbmxpbmVUZXh0Qm94OjpleHRyYWN0TGlu
ZSgpCiAgICAgcmVuZGVyZXIoKS5leHRyYWN0VGV4dEJveCgqdGhpcyk7CiB9CiAKLXZvaWQgSW5s
aW5lVGV4dEJveDo6YXR0YWNoTGluZSgpCit2b2lkIExlZ2FjeUlubGluZVRleHRCb3g6OmF0dGFj
aExpbmUoKQogewogICAgIGlmICghZXh0cmFjdGVkKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTI4
NCw3ICsyODQsNyBAQCB2b2lkIElubGluZVRleHRCb3g6OmF0dGFjaExpbmUoKQogICAgIHJlbmRl
cmVyKCkuYXR0YWNoVGV4dEJveCgqdGhpcyk7CiB9CiAKLWZsb2F0IElubGluZVRleHRCb3g6OnBs
YWNlRWxsaXBzaXNCb3goYm9vbCBmbG93SXNMVFIsIGZsb2F0IHZpc2libGVMZWZ0RWRnZSwgZmxv
YXQgdmlzaWJsZVJpZ2h0RWRnZSwgZmxvYXQgZWxsaXBzaXNXaWR0aCwgZmxvYXQgJnRydW5jYXRl
ZFdpZHRoLCBib29sJiBmb3VuZEJveCkKK2Zsb2F0IExlZ2FjeUlubGluZVRleHRCb3g6OnBsYWNl
RWxsaXBzaXNCb3goYm9vbCBmbG93SXNMVFIsIGZsb2F0IHZpc2libGVMZWZ0RWRnZSwgZmxvYXQg
dmlzaWJsZVJpZ2h0RWRnZSwgZmxvYXQgZWxsaXBzaXNXaWR0aCwgZmxvYXQgJnRydW5jYXRlZFdp
ZHRoLCBib29sJiBmb3VuZEJveCkKIHsKICAgICBpZiAoZm91bmRCb3gpIHsKICAgICAgICAgbV90
cnVuY2F0aW9uID0gY0Z1bGxUcnVuY2F0aW9uOwpAQCAtMzAwLDcgKzMwMCw3IEBAIGZsb2F0IElu
bGluZVRleHRCb3g6OnBsYWNlRWxsaXBzaXNCb3goYm9vbCBmbG93SXNMVFIsIGZsb2F0IHZpc2li
bGVMZWZ0RWRnZSwgZmxvCiAgICAgYm9vbCBsdHJGdWxsVHJ1bmNhdGlvbiA9IGZsb3dJc0xUUiAm
JiBlbGxpcHNpc1ggPD0gbGVmdCgpOwogICAgIGJvb2wgcnRsRnVsbFRydW5jYXRpb24gPSAhZmxv
d0lzTFRSICYmIGVsbGlwc2lzWCA+PSBsZWZ0KCkgKyBsb2dpY2FsV2lkdGgoKTsKICAgICBpZiAo
bHRyRnVsbFRydW5jYXRpb24gfHwgcnRsRnVsbFRydW5jYXRpb24pIHsKLSAgICAgICAgLy8gVG9v
IGZhci4gIEp1c3Qgc2V0IGZ1bGwgdHJ1bmNhdGlvbiwgYnV0IHJldHVybiAtMSBhbmQgbGV0IHRo
ZSBlbGxpcHNpcyBqdXN0IGJlIHBsYWNlZCBhdCB0aGUgZWRnZSBvZiB0aGUgYm94LgorICAgICAg
ICAvLyBUb28gZmFyLiBKdXN0IHNldCBmdWxsIHRydW5jYXRpb24sIGJ1dCByZXR1cm4gLTEgYW5k
IGxldCB0aGUgZWxsaXBzaXMganVzdCBiZSBwbGFjZWQgYXQgdGhlIGVkZ2Ugb2YgdGhlIGJveC4K
ICAgICAgICAgbV90cnVuY2F0aW9uID0gY0Z1bGxUcnVuY2F0aW9uOwogICAgICAgICBmb3VuZEJv
eCA9IHRydWU7CiAgICAgICAgIHJldHVybiAtMTsKQEAgLTMxMSwxOSArMzExLDE5IEBAIGZsb2F0
IElubGluZVRleHRCb3g6OnBsYWNlRWxsaXBzaXNCb3goYm9vbCBmbG93SXNMVFIsIGZsb2F0IHZp
c2libGVMZWZ0RWRnZSwgZmxvCiAgICAgaWYgKGx0ckVsbGlwc2lzV2l0aGluQm94IHx8IHJ0bEVs
bGlwc2lzV2l0aGluQm94KSB7CiAgICAgICAgIGZvdW5kQm94ID0gdHJ1ZTsKIAotICAgICAgICAv
LyBUaGUgaW5saW5lIGJveCBtYXkgaGF2ZSBkaWZmZXJlbnQgZGlyZWN0aW9uYWxpdHkgdGhhbiBp
dCdzIHBhcmVudC4gIFNpbmNlIHRydW5jYXRpb24KKyAgICAgICAgLy8gVGhlIGlubGluZSBib3gg
bWF5IGhhdmUgZGlmZmVyZW50IGRpcmVjdGlvbmFsaXR5IHRoYW4gaXQncyBwYXJlbnQuIFNpbmNl
IHRydW5jYXRpb24KICAgICAgICAgLy8gYmVoYXZpb3IgZGVwZW5kcyBib3RoIG9uIGJvdGggdGhl
IHBhcmVudCBhbmQgdGhlIGlubGluZSBibG9jaydzIGRpcmVjdGlvbmFsaXR5LCB3ZQogICAgICAg
ICAvLyBtdXN0IGtlZXAgdHJhY2sgb2YgdGhlc2Ugc2VwYXJhdGVseS4KICAgICAgICAgYm9vbCBs
dHIgPSBpc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCk7CiAgICAgICAgIGlmIChsdHIgIT0gZmxvd0lz
TFRSKSB7Ci0gICAgICAgICAgLy8gV2lkdGggaW4gcGl4ZWxzIG9mIHRoZSB2aXNpYmxlIHBvcnRp
b24gb2YgdGhlIGJveCwgZXhjbHVkaW5nIHRoZSBlbGxpcHNpcy4KLSAgICAgICAgICBpbnQgdmlz
aWJsZUJveFdpZHRoID0gdmlzaWJsZVJpZ2h0RWRnZSAtIHZpc2libGVMZWZ0RWRnZSAgLSBlbGxp
cHNpc1dpZHRoOwotICAgICAgICAgIGVsbGlwc2lzWCA9IGx0ciA/IGxlZnQoKSArIHZpc2libGVC
b3hXaWR0aCA6IHJpZ2h0KCkgLSB2aXNpYmxlQm94V2lkdGg7CisgICAgICAgICAgICAvLyBXaWR0
aCBpbiBwaXhlbHMgb2YgdGhlIHZpc2libGUgcG9ydGlvbiBvZiB0aGUgYm94LCBleGNsdWRpbmcg
dGhlIGVsbGlwc2lzLgorICAgICAgICAgICAgaW50IHZpc2libGVCb3hXaWR0aCA9IHZpc2libGVS
aWdodEVkZ2UgLSB2aXNpYmxlTGVmdEVkZ2UgIC0gZWxsaXBzaXNXaWR0aDsKKyAgICAgICAgICAg
IGVsbGlwc2lzWCA9IGx0ciA/IGxlZnQoKSArIHZpc2libGVCb3hXaWR0aCA6IHJpZ2h0KCkgLSB2
aXNpYmxlQm94V2lkdGg7CiAgICAgICAgIH0KIAogICAgICAgICBpbnQgb2Zmc2V0ID0gb2Zmc2V0
Rm9yUG9zaXRpb24oZWxsaXBzaXNYLCBmYWxzZSk7Ci0gICAgICAgIGlmIChvZmZzZXQgPT0gMCkg
ewotICAgICAgICAgICAgLy8gTm8gY2hhcmFjdGVycyBzaG91bGQgYmUgcmVuZGVyZWQuICBTZXQg
b3Vyc2VsdmVzIHRvIGZ1bGwgdHJ1bmNhdGlvbiBhbmQgcGxhY2UgdGhlIGVsbGlwc2lzIGF0IHRo
ZSBtaW4gb2Ygb3VyIHN0YXJ0CisgICAgICAgIGlmICghb2Zmc2V0KSB7CisgICAgICAgICAgICAv
LyBObyBjaGFyYWN0ZXJzIHNob3VsZCBiZSByZW5kZXJlZC4gU2V0IG91cnNlbHZlcyB0byBmdWxs
IHRydW5jYXRpb24gYW5kIHBsYWNlIHRoZSBlbGxpcHNpcyBhdCB0aGUgbWluIG9mIG91ciBzdGFy
dAogICAgICAgICAgICAgLy8gYW5kIHRoZSBlbGxpcHNpcyBlZGdlLgogICAgICAgICAgICAgbV90
cnVuY2F0aW9uID0gY0Z1bGxUcnVuY2F0aW9uOwogICAgICAgICAgICAgdHJ1bmNhdGVkV2lkdGgg
Kz0gZWxsaXBzaXNXaWR0aDsKQEAgLTM0NSwyMSArMzQ1LDE5IEBAIGZsb2F0IElubGluZVRleHRC
b3g6OnBsYWNlRWxsaXBzaXNCb3goYm9vbCBmbG93SXNMVFIsIGZsb2F0IHZpc2libGVMZWZ0RWRn
ZSwgZmxvCiAgICAgICAgIHRydW5jYXRlZFdpZHRoICs9IHdpZHRoT2ZWaXNpYmxlVGV4dCArIGVs
bGlwc2lzV2lkdGg7CiAgICAgICAgIGlmIChmbG93SXNMVFIpCiAgICAgICAgICAgICByZXR1cm4g
bGVmdCgpICsgd2lkdGhPZlZpc2libGVUZXh0OwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBy
ZXR1cm4gcmlnaHQoKSAtIHdpZHRoT2ZWaXNpYmxlVGV4dCAtIGVsbGlwc2lzV2lkdGg7CisKKyAg
ICAgICAgcmV0dXJuIHJpZ2h0KCkgLSB3aWR0aE9mVmlzaWJsZVRleHQgLSBlbGxpcHNpc1dpZHRo
OwogICAgIH0KICAgICB0cnVuY2F0ZWRXaWR0aCArPSBsb2dpY2FsV2lkdGgoKTsKICAgICByZXR1
cm4gLTE7CiB9CiAKLQotCi1ib29sIElubGluZVRleHRCb3g6OmlzTGluZUJyZWFrKCkgY29uc3QK
K2Jvb2wgTGVnYWN5SW5saW5lVGV4dEJveDo6aXNMaW5lQnJlYWsoKSBjb25zdAogewogICAgIHJl
dHVybiByZW5kZXJlcigpLnN0eWxlKCkucHJlc2VydmVOZXdsaW5lKCkgJiYgbGVuKCkgPT0gMSAm
JiByZW5kZXJlcigpLnRleHQoKVtzdGFydCgpXSA9PSAnXG4nOwogfQogCi1ib29sIElubGluZVRl
eHRCb3g6Om5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBIaXRUZXN0
UmVzdWx0JiByZXN1bHQsIGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYgbG9jYXRpb25JbkNvbnRhaW5l
ciwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0LCBMYXlvdXRVbml0IC8qIGxp
bmVUb3AgKi8sIExheW91dFVuaXQgLypsaW5lQm90dG9tKi8sCitib29sIExlZ2FjeUlubGluZVRl
eHRCb3g6Om5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBIaXRUZXN0
UmVzdWx0JiByZXN1bHQsIGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYgbG9jYXRpb25JbkNvbnRhaW5l
ciwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0LCBMYXlvdXRVbml0IC8qIGxp
bmVUb3AgKi8sIExheW91dFVuaXQgLypsaW5lQm90dG9tKi8sCiAgICAgSGl0VGVzdEFjdGlvbiAv
KmhpdFRlc3RBY3Rpb24qLykKIHsKICAgICBpZiAoIXZpc2libGVUb0hpdFRlc3RpbmcocmVxdWVz
dCkpCkBAIC0zOTIsNyArMzkwLDcgQEAgYm9vbCBJbmxpbmVUZXh0Qm94Ojpub2RlQXRQb2ludChj
b25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgSGl0VGVzdFJlc3VsdCYgcmUKICAgICByZXR1
cm4gZmFsc2U7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8Ym9vbD4gSW5saW5lVGV4dEJveDo6ZW1waGFz
aXNNYXJrRXhpc3RzQW5kSXNBYm92ZShjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpIGNvbnN0Citz
dGQ6Om9wdGlvbmFsPGJvb2w+IExlZ2FjeUlubGluZVRleHRCb3g6OmVtcGhhc2lzTWFya0V4aXN0
c0FuZElzQWJvdmUoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKSBjb25zdAogewogICAgIC8vIFRo
aXMgZnVuY3Rpb24gcmV0dXJucyB0cnVlIGlmIHRoZXJlIGFyZSB0ZXh0IGVtcGhhc2lzIG1hcmtz
IGFuZCB0aGV5IGFyZSBzdXBwcmVzc2VkIGJ5IHJ1YnkgdGV4dC4KICAgICBpZiAoc3R5bGUudGV4
dEVtcGhhc2lzTWFyaygpID09IFRleHRFbXBoYXNpc01hcms6Ok5vbmUpCkBAIC00MzMsNyArNDMx
LDcgQEAgc3RkOjpvcHRpb25hbDxib29sPiBJbmxpbmVUZXh0Qm94OjplbXBoYXNpc01hcmtFeGlz
dHNBbmRJc0Fib3ZlKGNvbnN0IFJlbmRlclN0eWwKICAgICByZXR1cm4gaXNBYm92ZTsKIH0KIAot
c3RhdGljIE1hcmtlZFRleHQgY3JlYXRlTWFya2VkVGV4dEZyb21TZWxlY3Rpb25JbkJveChjb25z
dCBJbmxpbmVUZXh0Qm94JiBib3gpCitzdGF0aWMgTWFya2VkVGV4dCBjcmVhdGVNYXJrZWRUZXh0
RnJvbVNlbGVjdGlvbkluQm94KGNvbnN0IExlZ2FjeUlubGluZVRleHRCb3gmIGJveCkKIHsKICAg
ICBhdXRvIFtzZWxlY3Rpb25TdGFydCwgc2VsZWN0aW9uRW5kXSA9IGJveC5zZWxlY3Rpb25TdGFy
dEVuZCgpOwogICAgIGlmIChzZWxlY3Rpb25TdGFydCA8IHNlbGVjdGlvbkVuZCkKQEAgLTQ0MSw3
ICs0MzksNyBAQCBzdGF0aWMgTWFya2VkVGV4dCBjcmVhdGVNYXJrZWRUZXh0RnJvbVNlbGVjdGlv
bkluQm94KGNvbnN0IElubGluZVRleHRCb3gmIGJveCkKICAgICByZXR1cm4geyB9OwogfQogCi12
b2lkIElubGluZVRleHRCb3g6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlv
dXRQb2ludCYgcGFpbnRPZmZzZXQsIExheW91dFVuaXQgLypsaW5lVG9wKi8sIExheW91dFVuaXQg
LypsaW5lQm90dG9tKi8pCit2b2lkIExlZ2FjeUlubGluZVRleHRCb3g6OnBhaW50KFBhaW50SW5m
byYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQsIExheW91dFVuaXQg
LypsaW5lVG9wKi8sIExheW91dFVuaXQgLypsaW5lQm90dG9tKi8pCiB7CiAgICAgaWYgKGlzTGlu
ZUJyZWFrKCkgfHwgIXBhaW50SW5mby5zaG91bGRQYWludFdpdGhpblJvb3QocmVuZGVyZXIoKSkg
fHwgcmVuZGVyZXIoKS5zdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWaXNpYmlsaXR5OjpWaXNpYmxl
CiAgICAgICAgIHx8IG1fdHJ1bmNhdGlvbiA9PSBjRnVsbFRydW5jYXRpb24gfHwgcGFpbnRJbmZv
LnBoYXNlID09IFBhaW50UGhhc2U6Ok91dGxpbmUgfHwgIWhhc1RleHRDb250ZW50KCkpCkBAIC01
MzksOSArNTM3LDkgQEAgdm9pZCBJbmxpbmVUZXh0Qm94OjpwYWludChQYWludEluZm8mIHBhaW50
SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0LAogICAgICAgICBwYWludE1hcmtl
ZFRleHRzKHBhaW50SW5mbywgVGV4dFBhaW50UGhhc2U6OkJhY2tncm91bmQsIGJveFJlY3QsIGNv
YWxlc2NlZFN0eWxlZE1hcmtlZFRleHRzKTsKICAgICB9CiAKLSAgICAvLyBGSVhNRTogUmlnaHQg
bm93LCBJbmxpbmVUZXh0Qm94ZXMgbmV2ZXIgY2FsbCBhZGRSZWxldmFudFVucGFpbnRlZE9iamVj
dCgpIGV2ZW4gdGhvdWdoIHRoZXkgbWlnaHQKKyAgICAvLyBGSVhNRTogUmlnaHQgbm93LCBMZWdh
Y3lJbmxpbmVUZXh0Qm94ZXMgbmV2ZXIgY2FsbCBhZGRSZWxldmFudFVucGFpbnRlZE9iamVjdCgp
IGV2ZW4gdGhvdWdoIHRoZXkgbWlnaHQKICAgICAvLyBsZWdpdGltYXRlbHkgYmUgdW5wYWludGVk
IGlmIHRoZXkgYXJlIHdhaXRpbmcgb24gYSBzbG93LWxvYWRpbmcgd2ViIGZvbnQuIFdlIHNob3Vs
ZCBmaXggdGhhdCwgYW5kCi0gICAgLy8gd2hlbiB3ZSBkbywgd2Ugd2lsbCBoYXZlIHRvIGFjY291
bnQgZm9yIHRoZSBmYWN0IHRoZSBJbmxpbmVUZXh0Qm94ZXMgZG8gbm90IGFsd2F5cyBoYXZlIHVu
aXF1ZQorICAgIC8vIHdoZW4gd2UgZG8sIHdlIHdpbGwgaGF2ZSB0byBhY2NvdW50IGZvciB0aGUg
ZmFjdCB0aGUgTGVnYWN5SW5saW5lVGV4dEJveGVzIGRvIG5vdCBhbHdheXMgaGF2ZSB1bmlxdWUK
ICAgICAvLyByZW5kZXJlcnMgYW5kIFBhZ2UgY3VycmVudGx5IHJlbGllcyBvbiBlYWNoIHVucGFp
bnRlZCBvYmplY3QgaGF2aW5nIGEgdW5pcXVlIHJlbmRlcmVyLgogICAgIGlmIChwYWludEluZm8u
cGhhc2UgPT0gUGFpbnRQaGFzZTo6Rm9yZWdyb3VuZCkKICAgICAgICAgcmVuZGVyZXIoKS5wYWdl
KCkuYWRkUmVsZXZhbnRSZXBhaW50ZWRPYmplY3QoJnJlbmRlcmVyKCksIEludFJlY3QoYm94T3Jp
Z2luLngoKSwgYm94T3JpZ2luLnkoKSwgbG9naWNhbFdpZHRoKCksIGxvZ2ljYWxIZWlnaHQoKSkp
OwpAQCAtNTgyLDggKzU4MCwxMSBAQCB2b2lkIElubGluZVRleHRCb3g6OnBhaW50KFBhaW50SW5m
byYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQsCiAgICAgYXV0byBz
dHlsZWRNYXJrZWRUZXh0cyA9IHN1YmRpdmlkZUFuZFJlc29sdmVTdHlsZShtYXJrZWRUZXh0cywg
cmVuZGVyZXIoKSwgaXNGaXJzdExpbmUoKSwgcGFpbnRJbmZvKTsKIAogICAgIC8vIC4uLiBub3cg
cmVtb3ZlIHRoZSBzZWxlY3Rpb24gbWFya2VkIHRleHQgaWYgd2UgYXJlIGV4Y2x1ZGluZyBzZWxl
Y3Rpb24uCi0gICAgaWYgKCFpc1ByaW50aW5nICYmIHBhaW50SW5mby5wYWludEJlaGF2aW9yLmNv
bnRhaW5zKFBhaW50QmVoYXZpb3I6OkV4Y2x1ZGVTZWxlY3Rpb24pKQotICAgICAgICBzdHlsZWRN
YXJrZWRUZXh0cy5yZW1vdmVBbGxNYXRjaGluZyhbXSAoY29uc3QgU3R5bGVkTWFya2VkVGV4dCYg
bWFya2VkVGV4dCkgeyByZXR1cm4gbWFya2VkVGV4dC50eXBlID09IE1hcmtlZFRleHQ6OlNlbGVj
dGlvbjsgfSk7CisgICAgaWYgKCFpc1ByaW50aW5nICYmIHBhaW50SW5mby5wYWludEJlaGF2aW9y
LmNvbnRhaW5zKFBhaW50QmVoYXZpb3I6OkV4Y2x1ZGVTZWxlY3Rpb24pKSB7CisgICAgICAgIHN0
eWxlZE1hcmtlZFRleHRzLnJlbW92ZUFsbE1hdGNoaW5nKFtdIChjb25zdCBTdHlsZWRNYXJrZWRU
ZXh0JiBtYXJrZWRUZXh0KSB7CisgICAgICAgICAgICByZXR1cm4gbWFya2VkVGV4dC50eXBlID09
IE1hcmtlZFRleHQ6OlNlbGVjdGlvbjsKKyAgICAgICAgfSk7CisgICAgfQogCiAgICAgLy8gQ29h
bGVzY2Ugc3R5bGVzIG9mIGFkamFjZW50IG1hcmtlZCB0ZXh0cyB0byBtaW5pbWl6ZSB0aGUgbnVt
YmVyIG9mIGRyYXdpbmcgY29tbWFuZHMuCiAgICAgYXV0byBjb2FsZXNjZWRTdHlsZWRNYXJrZWRU
ZXh0cyA9IGNvYWxlc2NlQWRqYWNlbnRNYXJrZWRUZXh0cyhzdHlsZWRNYXJrZWRUZXh0cywgJk1h
cmtlZFRleHRTdHlsZTo6YXJlRm9yZWdyb3VuZE1hcmtlZFRleHRTdHlsZXNFcXVhbCk7CkBAIC02
MzgsNyArNjM5LDcgQEAgdm9pZCBJbmxpbmVUZXh0Qm94OjpwYWludChQYWludEluZm8mIHBhaW50
SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0LAogICAgICAgICBjb250ZXh0LmNv
bmNhdENUTShyb3RhdGlvbihib3hSZWN0LCBDb3VudGVyY2xvY2t3aXNlKSk7CiB9CiAKLXVuc2ln
bmVkIElubGluZVRleHRCb3g6OmNsYW1wZWRPZmZzZXQodW5zaWduZWQgeCkgY29uc3QKK3Vuc2ln
bmVkIExlZ2FjeUlubGluZVRleHRCb3g6OmNsYW1wZWRPZmZzZXQodW5zaWduZWQgeCkgY29uc3QK
IHsKICAgICB1bnNpZ25lZCBvZmZzZXQgPSBzdGQ6Om1heChzdGQ6Om1pbih4LCBtX3N0YXJ0ICsg
bV9sZW4pLCBtX3N0YXJ0KSAtIG1fc3RhcnQ7CiAgICAgaWYgKG1fdHJ1bmNhdGlvbiA9PSBjRnVs
bFRydW5jYXRpb24pCkBAIC02NTcsNyArNjU4LDcgQEAgdW5zaWduZWQgSW5saW5lVGV4dEJveDo6
Y2xhbXBlZE9mZnNldCh1bnNpZ25lZCB4KSBjb25zdAogICAgIHJldHVybiBvZmZzZXQ7CiB9CiAK
LXN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IElubGluZVRleHRCb3g6OmNsYW1wZWRTdGFy
dEVuZEZvclN0YXRlKHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBlbmQsIFJlbmRlck9iamVjdDo6
SGlnaGxpZ2h0U3RhdGUgc2VsZWN0aW9uU3RhdGUpIGNvbnN0CitzdGQ6OnBhaXI8dW5zaWduZWQs
IHVuc2lnbmVkPiBMZWdhY3lJbmxpbmVUZXh0Qm94OjpjbGFtcGVkU3RhcnRFbmRGb3JTdGF0ZSh1
bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgZW5kLCBSZW5kZXJPYmplY3Q6OkhpZ2hsaWdodFN0YXRl
IHNlbGVjdGlvblN0YXRlKSBjb25zdAogewogICAgIGlmIChzZWxlY3Rpb25TdGF0ZSA9PSBSZW5k
ZXJPYmplY3Q6OkhpZ2hsaWdodFN0YXRlOjpJbnNpZGUpCiAgICAgICAgIHJldHVybiB7IDAsIGNs
YW1wZWRPZmZzZXQobV9zdGFydCArIG1fbGVuKSB9OwpAQCAtNjY5LDE0ICs2NzAsMTQgQEAgc3Rk
OjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4gSW5saW5lVGV4dEJveDo6Y2xhbXBlZFN0YXJ0RW5k
Rm9yU3RhdGUodW5zaWduZWQgc3QKICAgICByZXR1cm4geyBjbGFtcGVkT2Zmc2V0KHN0YXJ0KSwg
Y2xhbXBlZE9mZnNldChlbmQpIH07CiB9CiAKLXN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+
IElubGluZVRleHRCb3g6OnNlbGVjdGlvblN0YXJ0RW5kKCkgY29uc3QKK3N0ZDo6cGFpcjx1bnNp
Z25lZCwgdW5zaWduZWQ+IExlZ2FjeUlubGluZVRleHRCb3g6OnNlbGVjdGlvblN0YXJ0RW5kKCkg
Y29uc3QKIHsKICAgICBhdXRvIHNlbGVjdGlvblN0YXRlID0gcmVuZGVyZXIoKS5zZWxlY3Rpb25T
dGF0ZSgpOwogICAgIAogICAgIHJldHVybiBjbGFtcGVkU3RhcnRFbmRGb3JTdGF0ZShyZW5kZXJl
cigpLnZpZXcoKS5zZWxlY3Rpb24oKS5zdGFydE9mZnNldCgpLCByZW5kZXJlcigpLnZpZXcoKS5z
ZWxlY3Rpb24oKS5lbmRPZmZzZXQoKSwgc2VsZWN0aW9uU3RhdGUpOwogfQogCi1zdGQ6OnBhaXI8
dW5zaWduZWQsIHVuc2lnbmVkPiBJbmxpbmVUZXh0Qm94OjpoaWdobGlnaHRTdGFydEVuZChIaWdo
bGlnaHREYXRhICZyYW5nZURhdGEpIGNvbnN0CitzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVk
PiBMZWdhY3lJbmxpbmVUZXh0Qm94OjpoaWdobGlnaHRTdGFydEVuZChIaWdobGlnaHREYXRhICZy
YW5nZURhdGEpIGNvbnN0CiB7CiAgICAgYXV0byBzdGF0ZSA9IHJhbmdlRGF0YS5oaWdobGlnaHRT
dGF0ZUZvclJlbmRlcmVyKHJlbmRlcmVyKCkpOwogICAgIHN0YXRlID0gdmVyaWZ5U2VsZWN0aW9u
U3RhdGUoc3RhdGUsIHJhbmdlRGF0YSk7CkBAIC02ODcsMTkgKzY4OCwxOSBAQCBzdGQ6OnBhaXI8
dW5zaWduZWQsIHVuc2lnbmVkPiBJbmxpbmVUZXh0Qm94OjpoaWdobGlnaHRTdGFydEVuZChIaWdo
bGlnaHREYXRhICZyYQogICAgIHJldHVybiBjbGFtcGVkU3RhcnRFbmRGb3JTdGF0ZShyYW5nZURh
dGEuc3RhcnRPZmZzZXQoKSwgcmFuZ2VEYXRhLmVuZE9mZnNldCgpLCBzdGF0ZSk7CiB9CiAKLWJv
b2wgSW5saW5lVGV4dEJveDo6aGFzTWFya2VycygpIGNvbnN0Citib29sIExlZ2FjeUlubGluZVRl
eHRCb3g6Omhhc01hcmtlcnMoKSBjb25zdAogewogICAgIHJldHVybiBjb2xsZWN0TWFya2VkVGV4
dHNGb3JEb2N1bWVudE1hcmtlcnMoVGV4dFBhaW50UGhhc2U6OkRlY29yYXRpb24pLnNpemUoKTsK
IH0KIAotdm9pZCBJbmxpbmVUZXh0Qm94OjpwYWludFBsYXRmb3JtRG9jdW1lbnRNYXJrZXJzKEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRQb2ludCYgYm94T3JpZ2luKQordm9p
ZCBMZWdhY3lJbmxpbmVUZXh0Qm94OjpwYWludFBsYXRmb3JtRG9jdW1lbnRNYXJrZXJzKEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRQb2ludCYgYm94T3JpZ2luKQogewogICAg
IC8vIFRoaXMgbXVzdCBtYXRjaCBjYWxjdWxhdGVVbmlvbk9mQWxsRG9jdW1lbnRNYXJrZXJCb3Vu
ZHMoKS4KICAgICBmb3IgKGF1dG8mIG1hcmtlZFRleHQgOiBzdWJkaXZpZGUoY29sbGVjdE1hcmtl
ZFRleHRzRm9yRG9jdW1lbnRNYXJrZXJzKFRleHRQYWludFBoYXNlOjpEZWNvcmF0aW9uKSwgT3Zl
cmxhcFN0cmF0ZWd5OjpGcm9udG1vc3QpKQogICAgICAgICBwYWludFBsYXRmb3JtRG9jdW1lbnRN
YXJrZXIoY29udGV4dCwgYm94T3JpZ2luLCBtYXJrZWRUZXh0KTsKIH0KIAotRmxvYXRSZWN0IElu
bGluZVRleHRCb3g6OmNhbGN1bGF0ZVVuaW9uT2ZBbGxEb2N1bWVudE1hcmtlckJvdW5kcygpIGNv
bnN0CitGbG9hdFJlY3QgTGVnYWN5SW5saW5lVGV4dEJveDo6Y2FsY3VsYXRlVW5pb25PZkFsbERv
Y3VtZW50TWFya2VyQm91bmRzKCkgY29uc3QKIHsKICAgICAvLyBUaGlzIG11c3QgbWF0Y2ggcGFp
bnRQbGF0Zm9ybURvY3VtZW50TWFya2VycygpLgogICAgIEZsb2F0UmVjdCByZXN1bHQ7CkBAIC03
MDgsNyArNzA5LDcgQEAgRmxvYXRSZWN0IElubGluZVRleHRCb3g6OmNhbGN1bGF0ZVVuaW9uT2ZB
bGxEb2N1bWVudE1hcmtlckJvdW5kcygpIGNvbnN0CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAot
RmxvYXRSZWN0IElubGluZVRleHRCb3g6OmNhbGN1bGF0ZURvY3VtZW50TWFya2VyQm91bmRzKGNv
bnN0IE1hcmtlZFRleHQmIG1hcmtlZFRleHQpIGNvbnN0CitGbG9hdFJlY3QgTGVnYWN5SW5saW5l
VGV4dEJveDo6Y2FsY3VsYXRlRG9jdW1lbnRNYXJrZXJCb3VuZHMoY29uc3QgTWFya2VkVGV4dCYg
bWFya2VkVGV4dCkgY29uc3QKIHsKICAgICBhdXRvJiBmb250ID0gbGluZUZvbnQoKTsKICAgICBh
dXRvIGFzY2VudCA9IGZvbnQuZm9udE1ldHJpY3MoKS5hc2NlbnQoKTsKQEAgLTcyNyw3ICs3Mjgs
NyBAQCBGbG9hdFJlY3QgSW5saW5lVGV4dEJveDo6Y2FsY3VsYXRlRG9jdW1lbnRNYXJrZXJCb3Vu
ZHMoY29uc3QgTWFya2VkVGV4dCYgbWFya2VkVAogICAgIHJldHVybiBGbG9hdFJlY3QoMCwgeSwg
bG9naWNhbFdpZHRoKCksIGhlaWdodCk7CiB9CiAKLXZvaWQgSW5saW5lVGV4dEJveDo6cGFpbnRQ
bGF0Zm9ybURvY3VtZW50TWFya2VyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxv
YXRQb2ludCYgYm94T3JpZ2luLCBjb25zdCBNYXJrZWRUZXh0JiBtYXJrZWRUZXh0KQordm9pZCBM
ZWdhY3lJbmxpbmVUZXh0Qm94OjpwYWludFBsYXRmb3JtRG9jdW1lbnRNYXJrZXIoR3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFBvaW50JiBib3hPcmlnaW4sIGNvbnN0IE1hcmtl
ZFRleHQmIG1hcmtlZFRleHQpCiB7CiAgICAgLy8gTmV2ZXIgcHJpbnQgc3BlbGxpbmcvZ3JhbW1h
ciBtYXJrZXJzICg1MzI3ODg3KQogICAgIGlmIChyZW5kZXJlcigpLmRvY3VtZW50KCkucHJpbnRp
bmcoKSkKQEAgLTc2NCw3ICs3NjUsNyBAQCB2b2lkIElubGluZVRleHRCb3g6OnBhaW50UGxhdGZv
cm1Eb2N1bWVudE1hcmtlcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0CiAgICAgY29u
dGV4dC5kcmF3RG90c0ZvckRvY3VtZW50TWFya2VyKGJvdW5kcywgbGluZVN0eWxlRm9yTWFya2Vk
VGV4dFR5cGUoKSk7CiB9CiAKLVZlY3RvcjxNYXJrZWRUZXh0PiBJbmxpbmVUZXh0Qm94Ojpjb2xs
ZWN0TWFya2VkVGV4dHNGb3JEcmFnZ2VkQ29udGVudCgpCitWZWN0b3I8TWFya2VkVGV4dD4gTGVn
YWN5SW5saW5lVGV4dEJveDo6Y29sbGVjdE1hcmtlZFRleHRzRm9yRHJhZ2dlZENvbnRlbnQoKQog
ewogICAgIHVzaW5nIERyYWdnZW5kQ29udGVudFJhbmdlID0gc3RkOjpwYWlyPHVuc2lnbmVkLCB1
bnNpZ25lZD47CiAgICAgYXV0byBkcmFnZ2VkQ29udGVudFJhbmdlcyA9IHJlbmRlcmVyKCkuZHJh
Z2dlZENvbnRlbnRSYW5nZXNCZXR3ZWVuT2Zmc2V0cyhtX3N0YXJ0LCBtX3N0YXJ0ICsgbV9sZW4p
OwpAQCAtNzc0LDcgKzc3NSw3IEBAIFZlY3RvcjxNYXJrZWRUZXh0PiBJbmxpbmVUZXh0Qm94Ojpj
b2xsZWN0TWFya2VkVGV4dHNGb3JEcmFnZ2VkQ29udGVudCgpCiAgICAgcmV0dXJuIHJlc3VsdDsK
IH0KIAotVmVjdG9yPE1hcmtlZFRleHQ+IElubGluZVRleHRCb3g6OmNvbGxlY3RNYXJrZWRUZXh0
c0ZvckRvY3VtZW50TWFya2VycyhUZXh0UGFpbnRQaGFzZSBwaGFzZSkgY29uc3QKK1ZlY3RvcjxN
YXJrZWRUZXh0PiBMZWdhY3lJbmxpbmVUZXh0Qm94Ojpjb2xsZWN0TWFya2VkVGV4dHNGb3JEb2N1
bWVudE1hcmtlcnMoVGV4dFBhaW50UGhhc2UgcGhhc2UpIGNvbnN0CiB7CiAgICAgQVNTRVJUX0FS
RyhwaGFzZSwgcGhhc2UgPT0gVGV4dFBhaW50UGhhc2U6OkJhY2tncm91bmQgfHwgcGhhc2UgPT0g
VGV4dFBhaW50UGhhc2U6OkZvcmVncm91bmQgfHwgcGhhc2UgPT0gVGV4dFBhaW50UGhhc2U6OkRl
Y29yYXRpb24pOwogCkBAIC04NzksNyArODgwLDcgQEAgVmVjdG9yPE1hcmtlZFRleHQ+IElubGlu
ZVRleHRCb3g6OmNvbGxlY3RNYXJrZWRUZXh0c0ZvckRvY3VtZW50TWFya2VycyhUZXh0UGFpbnQK
ICAgICByZXR1cm4gbWFya2VkVGV4dHM7CiB9CiAKLVZlY3RvcjxNYXJrZWRUZXh0PiBJbmxpbmVU
ZXh0Qm94Ojpjb2xsZWN0TWFya2VkVGV4dHNGb3JIaWdobGlnaHRzKFRleHRQYWludFBoYXNlIHBo
YXNlKSBjb25zdAorVmVjdG9yPE1hcmtlZFRleHQ+IExlZ2FjeUlubGluZVRleHRCb3g6OmNvbGxl
Y3RNYXJrZWRUZXh0c0ZvckhpZ2hsaWdodHMoVGV4dFBhaW50UGhhc2UgcGhhc2UpIGNvbnN0CiB7
CiAgICAgQVNTRVJUX0FSRyhwaGFzZSwgcGhhc2UgPT0gVGV4dFBhaW50UGhhc2U6OkJhY2tncm91
bmQgfHwgcGhhc2UgPT0gVGV4dFBhaW50UGhhc2U6OkZvcmVncm91bmQgfHwgcGhhc2UgPT0gVGV4
dFBhaW50UGhhc2U6OkRlY29yYXRpb24pOwogICAgIFVOVVNFRF9QQVJBTShwaGFzZSk7CkBAIC05
MjgsNyArOTI5LDcgQEAgVmVjdG9yPE1hcmtlZFRleHQ+IElubGluZVRleHRCb3g6OmNvbGxlY3RN
YXJrZWRUZXh0c0ZvckhpZ2hsaWdodHMoVGV4dFBhaW50UGhhc2UKICAgICByZXR1cm4gbWFya2Vk
VGV4dHM7CiB9CiAKLUZsb2F0UG9pbnQgSW5saW5lVGV4dEJveDo6dGV4dE9yaWdpbkZyb21Cb3hS
ZWN0KGNvbnN0IEZsb2F0UmVjdCYgYm94UmVjdCkgY29uc3QKK0Zsb2F0UG9pbnQgTGVnYWN5SW5s
aW5lVGV4dEJveDo6dGV4dE9yaWdpbkZyb21Cb3hSZWN0KGNvbnN0IEZsb2F0UmVjdCYgYm94UmVj
dCkgY29uc3QKIHsKICAgICBGbG9hdFBvaW50IHRleHRPcmlnaW4geyBib3hSZWN0LngoKSwgYm94
UmVjdC55KCkgKyBsaW5lRm9udCgpLmZvbnRNZXRyaWNzKCkuYXNjZW50KCkgfTsKICAgICBpZiAo
YXV0byogY29tYmluZWRUZXh0ID0gdGhpcy0+Y29tYmluZWRUZXh0KCkpIHsKQEAgLTk0Miw3ICs5
NDMsNyBAQCBGbG9hdFBvaW50IElubGluZVRleHRCb3g6OnRleHRPcmlnaW5Gcm9tQm94UmVjdChj
b25zdCBGbG9hdFJlY3QmIGJveFJlY3QpIGNvbnN0CiAgICAgcmV0dXJuIHRleHRPcmlnaW47CiB9
CiAKLXZvaWQgSW5saW5lVGV4dEJveDo6cGFpbnRNYXJrZWRUZXh0cyhQYWludEluZm8mIHBhaW50
SW5mbywgVGV4dFBhaW50UGhhc2UgcGhhc2UsIGNvbnN0IEZsb2F0UmVjdCYgYm94UmVjdCwgY29u
c3QgVmVjdG9yPFN0eWxlZE1hcmtlZFRleHQ+JiBtYXJrZWRUZXh0cywgY29uc3QgRmxvYXRSZWN0
JiBkZWNvcmF0aW9uQ2xpcE91dFJlY3QpCit2b2lkIExlZ2FjeUlubGluZVRleHRCb3g6OnBhaW50
TWFya2VkVGV4dHMoUGFpbnRJbmZvJiBwYWludEluZm8sIFRleHRQYWludFBoYXNlIHBoYXNlLCBj
b25zdCBGbG9hdFJlY3QmIGJveFJlY3QsIGNvbnN0IFZlY3RvcjxTdHlsZWRNYXJrZWRUZXh0PiYg
bWFya2VkVGV4dHMsIGNvbnN0IEZsb2F0UmVjdCYgZGVjb3JhdGlvbkNsaXBPdXRSZWN0KQogewog
ICAgIHN3aXRjaCAocGhhc2UpIHsKICAgICBjYXNlIFRleHRQYWludFBoYXNlOjpCYWNrZ3JvdW5k
OgpAQCAtOTYwLDcgKzk2MSw3IEBAIHZvaWQgSW5saW5lVGV4dEJveDo6cGFpbnRNYXJrZWRUZXh0
cyhQYWludEluZm8mIHBhaW50SW5mbywgVGV4dFBhaW50UGhhc2UgcGhhc2UsCiAgICAgfQogfQog
Ci12b2lkIElubGluZVRleHRCb3g6OnBhaW50TWFya2VkVGV4dEJhY2tncm91bmQoUGFpbnRJbmZv
JiBwYWludEluZm8sIGNvbnN0IEZsb2F0UG9pbnQmIGJveE9yaWdpbiwgY29uc3QgQ29sb3ImIGNv
bG9yLCB1bnNpZ25lZCBjbGFtcGVkU3RhcnRPZmZzZXQsIHVuc2lnbmVkIGNsYW1wZWRFbmRPZmZz
ZXQsIE1hcmtlZFRleHRCYWNrZ3JvdW5kU3R5bGUgc3R5bGUpCit2b2lkIExlZ2FjeUlubGluZVRl
eHRCb3g6OnBhaW50TWFya2VkVGV4dEJhY2tncm91bmQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNv
bnN0IEZsb2F0UG9pbnQmIGJveE9yaWdpbiwgY29uc3QgQ29sb3ImIGNvbG9yLCB1bnNpZ25lZCBj
bGFtcGVkU3RhcnRPZmZzZXQsIHVuc2lnbmVkIGNsYW1wZWRFbmRPZmZzZXQsIE1hcmtlZFRleHRC
YWNrZ3JvdW5kU3R5bGUgc3R5bGUpCiB7CiAgICAgaWYgKGNsYW1wZWRTdGFydE9mZnNldCA+PSBj
bGFtcGVkRW5kT2Zmc2V0KQogICAgICAgICByZXR1cm47CkBAIC05OTcsNyArOTk4LDcgQEAgdm9p
ZCBJbmxpbmVUZXh0Qm94OjpwYWludE1hcmtlZFRleHRCYWNrZ3JvdW5kKFBhaW50SW5mbyYgcGFp
bnRJbmZvLCBjb25zdCBGbG9hdFAKICAgICBjb250ZXh0LmZpbGxSZWN0KGJhY2tncm91bmRSZWN0
LCBjb2xvcik7CiB9CiAKLXZvaWQgSW5saW5lVGV4dEJveDo6cGFpbnRNYXJrZWRUZXh0Rm9yZWdy
b3VuZChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgRmxvYXRSZWN0JiBib3hSZWN0LCBjb25z
dCBTdHlsZWRNYXJrZWRUZXh0JiBtYXJrZWRUZXh0KQordm9pZCBMZWdhY3lJbmxpbmVUZXh0Qm94
OjpwYWludE1hcmtlZFRleHRGb3JlZ3JvdW5kKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBG
bG9hdFJlY3QmIGJveFJlY3QsIGNvbnN0IFN0eWxlZE1hcmtlZFRleHQmIG1hcmtlZFRleHQpCiB7
CiAgICAgaWYgKG1hcmtlZFRleHQuc3RhcnRPZmZzZXQgPj0gbWFya2VkVGV4dC5lbmRPZmZzZXQp
CiAgICAgICAgIHJldHVybjsKQEAgLTEwMzcsNyArMTAzOCw3IEBAIHZvaWQgSW5saW5lVGV4dEJv
eDo6cGFpbnRNYXJrZWRUZXh0Rm9yZWdyb3VuZChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3Qg
RmxvYXRSCiAgICAgdGV4dFBhaW50ZXIucGFpbnRSYW5nZSh0ZXh0UnVuLCBib3hSZWN0LCB0ZXh0
T3JpZ2luRnJvbUJveFJlY3QoYm94UmVjdCksIG1hcmtlZFRleHQuc3RhcnRPZmZzZXQsIG1hcmtl
ZFRleHQuZW5kT2Zmc2V0KTsKIH0KIAotdm9pZCBJbmxpbmVUZXh0Qm94OjpwYWludE1hcmtlZFRl
eHREZWNvcmF0aW9uKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBGbG9hdFJlY3QmIGJveFJl
Y3QsIGNvbnN0IEZsb2F0UmVjdCYgY2xpcE91dFJlY3QsIGNvbnN0IFN0eWxlZE1hcmtlZFRleHQm
IG1hcmtlZFRleHQpCit2b2lkIExlZ2FjeUlubGluZVRleHRCb3g6OnBhaW50TWFya2VkVGV4dERl
Y29yYXRpb24oUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEZsb2F0UmVjdCYgYm94UmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiBjbGlwT3V0UmVjdCwgY29uc3QgU3R5bGVkTWFya2VkVGV4dCYgbWFy
a2VkVGV4dCkKIHsKICAgICBpZiAobV90cnVuY2F0aW9uID09IGNGdWxsVHJ1bmNhdGlvbikKICAg
ICAgICAgcmV0dXJuOwpAQCAtMTA5Nyw3ICsxMDk4LDcgQEAgdm9pZCBJbmxpbmVUZXh0Qm94Ojpw
YWludE1hcmtlZFRleHREZWNvcmF0aW9uKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBGbG9h
dFIKICAgICAgICAgY29udGV4dC5jb25jYXRDVE0ocm90YXRpb24oYm94UmVjdCwgQ291bnRlcmNs
b2Nrd2lzZSkpOwogfQogCi12b2lkIElubGluZVRleHRCb3g6OnBhaW50Q29tcG9zaXRpb25CYWNr
Z3JvdW5kKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBGbG9hdFBvaW50JiBib3hPcmlnaW4p
Cit2b2lkIExlZ2FjeUlubGluZVRleHRCb3g6OnBhaW50Q29tcG9zaXRpb25CYWNrZ3JvdW5kKFBh
aW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBGbG9hdFBvaW50JiBib3hPcmlnaW4pCiB7CiAgICAg
aWYgKCFyZW5kZXJlcigpLmZyYW1lKCkuZWRpdG9yKCkuY29tcG9zaXRpb25Vc2VzQ3VzdG9tSGln
aGxpZ2h0cygpKSB7CiAgICAgICAgIHBhaW50TWFya2VkVGV4dEJhY2tncm91bmQocGFpbnRJbmZv
LCBib3hPcmlnaW4sIENvbXBvc2l0aW9uSGlnaGxpZ2h0OjpkZWZhdWx0Q29tcG9zaXRpb25GaWxs
Q29sb3IsIGNsYW1wZWRPZmZzZXQocmVuZGVyZXIoKS5mcmFtZSgpLmVkaXRvcigpLmNvbXBvc2l0
aW9uU3RhcnQoKSksIGNsYW1wZWRPZmZzZXQocmVuZGVyZXIoKS5mcmFtZSgpLmVkaXRvcigpLmNv
bXBvc2l0aW9uRW5kKCkpKTsKQEAgLTExMTgsNyArMTExOSw3IEBAIHZvaWQgSW5saW5lVGV4dEJv
eDo6cGFpbnRDb21wb3NpdGlvbkJhY2tncm91bmQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0
IEZsb2F0CiAgICAgfQogfQogCi12b2lkIElubGluZVRleHRCb3g6OnBhaW50Q29tcG9zaXRpb25V
bmRlcmxpbmVzKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBGbG9hdFBvaW50JiBib3hPcmln
aW4pIGNvbnN0Cit2b2lkIExlZ2FjeUlubGluZVRleHRCb3g6OnBhaW50Q29tcG9zaXRpb25VbmRl
cmxpbmVzKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBGbG9hdFBvaW50JiBib3hPcmlnaW4p
IGNvbnN0CiB7CiAgICAgaWYgKG1fdHJ1bmNhdGlvbiA9PSBjRnVsbFRydW5jYXRpb24pCiAgICAg
ICAgIHJldHVybjsKQEAgLTExNDksNyArMTE1MCw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBtaXJy
b3JSVExTZWdtZW50KGZsb2F0IGxvZ2ljYWxXaWR0aCwgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24s
CiAgICAgc3RhcnQgPSBsb2dpY2FsV2lkdGggLSB3aWR0aCAtIHN0YXJ0OwogfQogCi12b2lkIElu
bGluZVRleHRCb3g6OnBhaW50Q29tcG9zaXRpb25VbmRlcmxpbmUoUGFpbnRJbmZvJiBwYWludElu
Zm8sIGNvbnN0IEZsb2F0UG9pbnQmIGJveE9yaWdpbiwgY29uc3QgQ29tcG9zaXRpb25VbmRlcmxp
bmUmIHVuZGVybGluZSkgY29uc3QKK3ZvaWQgTGVnYWN5SW5saW5lVGV4dEJveDo6cGFpbnRDb21w
b3NpdGlvblVuZGVybGluZShQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgRmxvYXRQb2ludCYg
Ym94T3JpZ2luLCBjb25zdCBDb21wb3NpdGlvblVuZGVybGluZSYgdW5kZXJsaW5lKSBjb25zdAog
ewogICAgIGlmIChtX3RydW5jYXRpb24gPT0gY0Z1bGxUcnVuY2F0aW9uKQogICAgICAgICByZXR1
cm47CkBAIC0xMTY0LDcgKzExNjUsNyBAQCB2b2lkIElubGluZVRleHRCb3g6OnBhaW50Q29tcG9z
aXRpb25VbmRlcmxpbmUoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEZsb2F0UAogICAgICAg
ICB1c2VXaG9sZVdpZHRoID0gZmFsc2U7CiAgICAgICAgIHN0YXJ0ID0gcmVuZGVyZXIoKS53aWR0
aChtX3N0YXJ0LCBwYWludFN0YXJ0IC0gbV9zdGFydCwgdGV4dFBvcygpLCBpc0ZpcnN0TGluZSgp
KTsKICAgICB9Ci0gICAgaWYgKHBhaW50RW5kICE9IHVuZGVybGluZS5lbmRPZmZzZXQpIHsgICAg
ICAvLyBlbmQgcG9pbnRzIGF0IHRoZSBsYXN0IGNoYXIsIG5vdCBwYXN0IGl0CisgICAgaWYgKHBh
aW50RW5kICE9IHVuZGVybGluZS5lbmRPZmZzZXQpIHsKICAgICAgICAgcGFpbnRFbmQgPSBzdGQ6
Om1pbihwYWludEVuZCwgKHVuc2lnbmVkKXVuZGVybGluZS5lbmRPZmZzZXQpOwogICAgICAgICB1
c2VXaG9sZVdpZHRoID0gZmFsc2U7CiAgICAgfQpAQCAtMTE5NywyNiArMTE5OCwyNiBAQCB2b2lk
IElubGluZVRleHRCb3g6OnBhaW50Q29tcG9zaXRpb25VbmRlcmxpbmUoUGFpbnRJbmZvJiBwYWlu
dEluZm8sIGNvbnN0IEZsb2F0UAogICAgIGNvbnRleHQuZHJhd0xpbmVGb3JUZXh0KEZsb2F0UmVj
dChib3hPcmlnaW4ueCgpICsgc3RhcnQsIGJveE9yaWdpbi55KCkgKyBsb2dpY2FsSGVpZ2h0KCkg
LSBsaW5lVGhpY2tuZXNzLCB3aWR0aCwgbGluZVRoaWNrbmVzcyksIHJlbmRlcmVyKCkuZG9jdW1l
bnQoKS5wcmludGluZygpKTsKIH0KIAotaW50IElubGluZVRleHRCb3g6OmNhcmV0TWluT2Zmc2V0
KCkgY29uc3QKK2ludCBMZWdhY3lJbmxpbmVUZXh0Qm94OjpjYXJldE1pbk9mZnNldCgpIGNvbnN0
CiB7CiAgICAgcmV0dXJuIG1fc3RhcnQ7CiB9CiAKLWludCBJbmxpbmVUZXh0Qm94OjpjYXJldE1h
eE9mZnNldCgpIGNvbnN0CitpbnQgTGVnYWN5SW5saW5lVGV4dEJveDo6Y2FyZXRNYXhPZmZzZXQo
KSBjb25zdAogewogICAgIHJldHVybiBtX3N0YXJ0ICsgbV9sZW47CiB9CiAKLWZsb2F0IElubGlu
ZVRleHRCb3g6OnRleHRQb3MoKSBjb25zdAorZmxvYXQgTGVnYWN5SW5saW5lVGV4dEJveDo6dGV4
dFBvcygpIGNvbnN0CiB7CiAgICAgLy8gV2hlbiBjb21wdXRpbmcgdGhlIHdpZHRoIG9mIGEgdGV4
dCBydW4sIFJlbmRlckJsb2NrOjpjb21wdXRlSW5saW5lRGlyZWN0aW9uUG9zaXRpb25zRm9yTGlu
ZSgpIGRvZXNuJ3QgaW5jbHVkZSB0aGUgYWN0dWFsIG9mZnNldAogICAgIC8vIGZyb20gdGhlIGNv
bnRhaW5pbmcgYmxvY2sgZWRnZSBpbiBpdHMgbWVhc3VyZW1lbnQuIHRleHRQb3MoKSBzaG91bGQg
YmUgY29uc2lzdGVudCBzbyB0aGUgdGV4dCBhcmUgcmVuZGVyZWQgaW4gdGhlIHNhbWUgd2lkdGgu
Ci0gICAgaWYgKGxvZ2ljYWxMZWZ0KCkgPT0gMCkKKyAgICBpZiAoIWxvZ2ljYWxMZWZ0KCkpCiAg
ICAgICAgIHJldHVybiAwOwogICAgIHJldHVybiBsb2dpY2FsTGVmdCgpIC0gcm9vdCgpLmxvZ2lj
YWxMZWZ0KCk7CiB9CiAKLWludCBJbmxpbmVUZXh0Qm94OjpvZmZzZXRGb3JQb3NpdGlvbihmbG9h
dCBsaW5lT2Zmc2V0LCBib29sIGluY2x1ZGVQYXJ0aWFsR2x5cGhzKSBjb25zdAoraW50IExlZ2Fj
eUlubGluZVRleHRCb3g6Om9mZnNldEZvclBvc2l0aW9uKGZsb2F0IGxpbmVPZmZzZXQsIGJvb2wg
aW5jbHVkZVBhcnRpYWxHbHlwaHMpIGNvbnN0CiB7CiAgICAgaWYgKGlzTGluZUJyZWFrKCkpCiAg
ICAgICAgIHJldHVybiAwOwpAQCAtMTIyOSw3ICsxMjMwLDcgQEAgaW50IElubGluZVRleHRCb3g6
Om9mZnNldEZvclBvc2l0aW9uKGZsb2F0IGxpbmVPZmZzZXQsIGJvb2wgaW5jbHVkZVBhcnRpYWxH
bHlwaHMKICAgICByZXR1cm4gbGluZUZvbnQoKS5vZmZzZXRGb3JQb3NpdGlvbihjcmVhdGVUZXh0
UnVuKGlnbm9yZUNvbWJpbmVkVGV4dCwgaWdub3JlSHlwaGVuKSwgbGluZU9mZnNldCAtIGxvZ2lj
YWxMZWZ0KCksIGluY2x1ZGVQYXJ0aWFsR2x5cGhzKTsKIH0KIAotZmxvYXQgSW5saW5lVGV4dEJv
eDo6cG9zaXRpb25Gb3JPZmZzZXQodW5zaWduZWQgb2Zmc2V0KSBjb25zdAorZmxvYXQgTGVnYWN5
SW5saW5lVGV4dEJveDo6cG9zaXRpb25Gb3JPZmZzZXQodW5zaWduZWQgb2Zmc2V0KSBjb25zdAog
ewogICAgIEFTU0VSVChvZmZzZXQgPj0gbV9zdGFydCk7CiAgICAgQVNTRVJUKG9mZnNldCA8PSBt
X3N0YXJ0ICsgbGVuKCkpOwpAQCAtMTI1Niw3ICsxMjU3LDcgQEAgZmxvYXQgSW5saW5lVGV4dEJv
eDo6cG9zaXRpb25Gb3JPZmZzZXQodW5zaWduZWQgb2Zmc2V0KSBjb25zdAogICAgIHJldHVybiBz
bmFwUmVjdFRvRGV2aWNlUGl4ZWxzV2l0aFdyaXRpbmdEaXJlY3Rpb24oc2VsZWN0aW9uUmVjdCwg
cmVuZGVyZXIoKS5kb2N1bWVudCgpLmRldmljZVNjYWxlRmFjdG9yKCksIHRleHRSdW4ubHRyKCkp
Lm1heFgoKTsKIH0KIAotVGV4dFJ1biBJbmxpbmVUZXh0Qm94OjpjcmVhdGVUZXh0UnVuKGJvb2wg
aWdub3JlQ29tYmluZWRUZXh0LCBib29sIGlnbm9yZUh5cGhlbikgY29uc3QKK1RleHRSdW4gTGVn
YWN5SW5saW5lVGV4dEJveDo6Y3JlYXRlVGV4dFJ1bihib29sIGlnbm9yZUNvbWJpbmVkVGV4dCwg
Ym9vbCBpZ25vcmVIeXBoZW4pIGNvbnN0CiB7CiAgICAgY29uc3QgYXV0byYgc3R5bGUgPSBsaW5l
U3R5bGUoKTsKICAgICBUZXh0UnVuIHRleHRSdW4geyB0ZXh0KGlnbm9yZUNvbWJpbmVkVGV4dCwg
aWdub3JlSHlwaGVuKSwgdGV4dFBvcygpLCBleHBhbnNpb24oKSwgZXhwYW5zaW9uQmVoYXZpb3Io
KSwgZGlyZWN0aW9uKCksIGRpck92ZXJyaWRlKCkgfHwgc3R5bGUucnRsT3JkZXJpbmcoKSA9PSBP
cmRlcjo6VmlzdWFsLCAhcmVuZGVyZXIoKS5jYW5Vc2VTaW1wbGVGb250Q29kZVBhdGgoKSB9OwpA
QCAtMTI2NCw3ICsxMjY1LDcgQEAgVGV4dFJ1biBJbmxpbmVUZXh0Qm94OjpjcmVhdGVUZXh0UnVu
KGJvb2wgaWdub3JlQ29tYmluZWRUZXh0LCBib29sIGlnbm9yZUh5cGhlbikKICAgICByZXR1cm4g
dGV4dFJ1bjsKIH0KIAotU3RyaW5nIElubGluZVRleHRCb3g6OnRleHQoYm9vbCBpZ25vcmVDb21i
aW5lZFRleHQsIGJvb2wgaWdub3JlSHlwaGVuKSBjb25zdAorU3RyaW5nIExlZ2FjeUlubGluZVRl
eHRCb3g6OnRleHQoYm9vbCBpZ25vcmVDb21iaW5lZFRleHQsIGJvb2wgaWdub3JlSHlwaGVuKSBj
b25zdAogewogICAgIFN0cmluZyByZXN1bHQ7CiAgICAgaWYgKGF1dG8qIGNvbWJpbmVkVGV4dCA9
IHRoaXMtPmNvbWJpbmVkVGV4dCgpKSB7CkBAIC0xMjg1LDEyICsxMjg2LDEyIEBAIFN0cmluZyBJ
bmxpbmVUZXh0Qm94Ojp0ZXh0KGJvb2wgaWdub3JlQ29tYmluZWRUZXh0LCBib29sIGlnbm9yZUh5
cGhlbikgY29uc3QKICAgICByZXR1cm4gUmVuZGVyQmxvY2s6OnVwZGF0ZVNlY3VyaXR5RGlzY0No
YXJhY3RlcnMobGluZVN0eWxlKCksIFdURk1vdmUocmVzdWx0KSk7CiB9CiAKLWlubGluZSBjb25z
dCBSZW5kZXJDb21iaW5lVGV4dCogSW5saW5lVGV4dEJveDo6Y29tYmluZWRUZXh0KCkgY29uc3QK
K2lubGluZSBjb25zdCBSZW5kZXJDb21iaW5lVGV4dCogTGVnYWN5SW5saW5lVGV4dEJveDo6Y29t
YmluZWRUZXh0KCkgY29uc3QKIHsKICAgICByZXR1cm4gbGluZVN0eWxlKCkuaGFzVGV4dENvbWJp
bmUoKSAmJiBpczxSZW5kZXJDb21iaW5lVGV4dD4ocmVuZGVyZXIoKSkgJiYgZG93bmNhc3Q8UmVu
ZGVyQ29tYmluZVRleHQ+KHJlbmRlcmVyKCkpLmlzQ29tYmluZWQoKSA/ICZkb3duY2FzdDxSZW5k
ZXJDb21iaW5lVGV4dD4ocmVuZGVyZXIoKSkgOiBudWxscHRyOwogfQogCi1TaGFkb3dEYXRhKiBJ
bmxpbmVUZXh0Qm94OjpkZWJ1Z1RleHRTaGFkb3coKQorU2hhZG93RGF0YSogTGVnYWN5SW5saW5l
VGV4dEJveDo6ZGVidWdUZXh0U2hhZG93KCkKIHsKICAgICBpZiAoIXJlbmRlcmVyKCkuc2V0dGlu
Z3MoKS5sZWdhY3lMaW5lTGF5b3V0VmlzdWFsQ292ZXJhZ2VFbmFibGVkKCkpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwpAQCAtMTI5OSw3ICsxMzAwLDcgQEAgU2hhZG93RGF0YSogSW5saW5lVGV4
dEJveDo6ZGVidWdUZXh0U2hhZG93KCkKICAgICByZXR1cm4gJmRlYnVnVGV4dFNoYWRvdy5nZXQo
KTsKIH0KIAotRXhwYW5zaW9uQmVoYXZpb3IgSW5saW5lVGV4dEJveDo6ZXhwYW5zaW9uQmVoYXZp
b3IoKSBjb25zdAorRXhwYW5zaW9uQmVoYXZpb3IgTGVnYWN5SW5saW5lVGV4dEJveDo6ZXhwYW5z
aW9uQmVoYXZpb3IoKSBjb25zdAogewogICAgIEV4cGFuc2lvbkJlaGF2aW9yIGxlZnRCZWhhdmlv
cjsKICAgICBpZiAoZm9yY2VMZWZ0RXhwYW5zaW9uKCkpCkBAIC0xMzIyLDEyICsxMzIzLDEyIEBA
IEV4cGFuc2lvbkJlaGF2aW9yIElubGluZVRleHRCb3g6OmV4cGFuc2lvbkJlaGF2aW9yKCkgY29u
c3QKIAogI2lmIEVOQUJMRShUUkVFX0RFQlVHR0lORykKIAotY29uc3QgY2hhciogSW5saW5lVGV4
dEJveDo6Ym94TmFtZSgpIGNvbnN0Citjb25zdCBjaGFyKiBMZWdhY3lJbmxpbmVUZXh0Qm94Ojpi
b3hOYW1lKCkgY29uc3QKIHsKICAgICByZXR1cm4gIklubGluZVRleHRCb3giOwogfQogCi12b2lk
IElubGluZVRleHRCb3g6Om91dHB1dExpbmVCb3goVGV4dFN0cmVhbSYgc3RyZWFtLCBib29sIG1h
cmssIGludCBkZXB0aCkgY29uc3QKK3ZvaWQgTGVnYWN5SW5saW5lVGV4dEJveDo6b3V0cHV0TGlu
ZUJveChUZXh0U3RyZWFtJiBzdHJlYW0sIGJvb2wgbWFyaywgaW50IGRlcHRoKSBjb25zdAogewog
ICAgIHN0cmVhbSA8PCAiLS0tLS0tLS0gIiA8PCAoaXNEaXJ0eSgpID8gIkQiIDogIi0iKSA8PCAi
LSI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94
LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVnYWN5SW5saW5lVGV4dEJveC5oCnNpbWls
YXJpdHkgaW5kZXggOTAlCnJlbmFtZSBmcm9tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Jbmxp
bmVUZXh0Qm94LmgKcmVuYW1lIHRvIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MZWdhY3lJbmxp
bmVUZXh0Qm94LmgKaW5kZXggMDk3ZTgwZjQ1ZmI2Li5lNTcwNjY4NjYyOTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0xlZ2FjeUlubGluZVRleHRCb3guaApAQCAtMzksMjQgKzM5LDI0IEBA
IHN0cnVjdCBUZXh0UGFpbnRTdHlsZTsKIGNvbnN0IHVuc2lnbmVkIHNob3J0IGNOb1RydW5jYXRp
b24gPSBVU0hSVF9NQVg7CiBjb25zdCB1bnNpZ25lZCBzaG9ydCBjRnVsbFRydW5jYXRpb24gPSBV
U0hSVF9NQVggLSAxOwogCi1jbGFzcyBJbmxpbmVUZXh0Qm94IDogcHVibGljIExlZ2FjeUlubGlu
ZUJveCB7Ci0gICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChJbmxpbmVUZXh0Qm94KTsKK2NsYXNz
IExlZ2FjeUlubGluZVRleHRCb3ggOiBwdWJsaWMgTGVnYWN5SW5saW5lQm94IHsKKyAgICBXVEZf
TUFLRV9JU09fQUxMT0NBVEVEKExlZ2FjeUlubGluZVRleHRCb3gpOwogcHVibGljOgotICAgIGV4
cGxpY2l0IElubGluZVRleHRCb3goUmVuZGVyVGV4dCYgcmVuZGVyZXIpCisgICAgZXhwbGljaXQg
TGVnYWN5SW5saW5lVGV4dEJveChSZW5kZXJUZXh0JiByZW5kZXJlcikKICAgICAgICAgOiBMZWdh
Y3lJbmxpbmVCb3gocmVuZGVyZXIpCiAgICAgewogICAgICAgICBzZXRCZWhhdmVzTGlrZVRleHQo
dHJ1ZSk7CiAgICAgfQogCi0gICAgdmlydHVhbCB+SW5saW5lVGV4dEJveCgpOworICAgIHZpcnR1
YWwgfkxlZ2FjeUlubGluZVRleHRCb3goKTsKIAogICAgIFJlbmRlclRleHQmIHJlbmRlcmVyKCkg
Y29uc3QgeyByZXR1cm4gZG93bmNhc3Q8UmVuZGVyVGV4dD4oTGVnYWN5SW5saW5lQm94OjpyZW5k
ZXJlcigpKTsgfQogICAgIGNvbnN0IFJlbmRlclN0eWxlJiBsaW5lU3R5bGUoKSBjb25zdCB7IHJl
dHVybiBpc0ZpcnN0TGluZSgpID8gcmVuZGVyZXIoKS5maXJzdExpbmVTdHlsZSgpIDogcmVuZGVy
ZXIoKS5zdHlsZSgpOyB9CiAKLSAgICBJbmxpbmVUZXh0Qm94KiBwcmV2VGV4dEJveCgpIGNvbnN0
IHsgcmV0dXJuIG1fcHJldlRleHRCb3g7IH0KLSAgICBJbmxpbmVUZXh0Qm94KiBuZXh0VGV4dEJv
eCgpIGNvbnN0IHsgcmV0dXJuIG1fbmV4dFRleHRCb3g7IH0KLSAgICB2b2lkIHNldE5leHRUZXh0
Qm94KElubGluZVRleHRCb3gqIG4pIHsgbV9uZXh0VGV4dEJveCA9IG47IH0KLSAgICB2b2lkIHNl
dFByZXZpb3VzVGV4dEJveChJbmxpbmVUZXh0Qm94KiBwKSB7IG1fcHJldlRleHRCb3ggPSBwOyB9
CisgICAgTGVnYWN5SW5saW5lVGV4dEJveCogcHJldlRleHRCb3goKSBjb25zdCB7IHJldHVybiBt
X3ByZXZUZXh0Qm94OyB9CisgICAgTGVnYWN5SW5saW5lVGV4dEJveCogbmV4dFRleHRCb3goKSBj
b25zdCB7IHJldHVybiBtX25leHRUZXh0Qm94OyB9CisgICAgdm9pZCBzZXROZXh0VGV4dEJveChM
ZWdhY3lJbmxpbmVUZXh0Qm94KiBuKSB7IG1fbmV4dFRleHRCb3ggPSBuOyB9CisgICAgdm9pZCBz
ZXRQcmV2aW91c1RleHRCb3goTGVnYWN5SW5saW5lVGV4dEJveCogcCkgeyBtX3ByZXZUZXh0Qm94
ID0gcDsgfQogCiAgICAgYm9vbCBoYXNUZXh0Q29udGVudCgpIGNvbnN0OwogCkBAIC05MCw3ICs5
MCw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBMZWdhY3lJbmxpbmVCb3g6OmZvcmNlTGVmdEV4cGFu
c2lvbjsKICAgICB1c2luZyBMZWdhY3lJbmxpbmVCb3g6OnNldEZvcmNlTGVmdEV4cGFuc2lvbjsK
IAotICAgIHN0YXRpYyBpbmxpbmUgYm9vbCBjb21wYXJlQnlTdGFydChjb25zdCBJbmxpbmVUZXh0
Qm94KiBmaXJzdCwgY29uc3QgSW5saW5lVGV4dEJveCogc2Vjb25kKSB7IHJldHVybiBmaXJzdC0+
c3RhcnQoKSA8IHNlY29uZC0+c3RhcnQoKTsgfQorICAgIHN0YXRpYyBpbmxpbmUgYm9vbCBjb21w
YXJlQnlTdGFydChjb25zdCBMZWdhY3lJbmxpbmVUZXh0Qm94KiBmaXJzdCwgY29uc3QgTGVnYWN5
SW5saW5lVGV4dEJveCogc2Vjb25kKSB7IHJldHVybiBmaXJzdC0+c3RhcnQoKSA8IHNlY29uZC0+
c3RhcnQoKTsgfQogCiAgICAgTGF5b3V0VW5pdCBiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGlu
ZSkgY29uc3QgZmluYWw7CiAgICAgTGF5b3V0VW5pdCBsaW5lSGVpZ2h0KCkgY29uc3QgZmluYWw7
CkBAIC0xOTksOCArMTk5LDggQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgYmVoYXZlc0xpa2VUZXh0
KCkgY29uc3QgPSBkZWxldGU7CiAKLSAgICBJbmxpbmVUZXh0Qm94KiBtX3ByZXZUZXh0Qm94IHsg
bnVsbHB0ciB9OyAvLyBUaGUgcHJldmlvdXMgYm94IHRoYXQgYWxzbyB1c2VzIG91ciBSZW5kZXJP
YmplY3QKLSAgICBJbmxpbmVUZXh0Qm94KiBtX25leHRUZXh0Qm94IHsgbnVsbHB0ciB9OyAvLyBU
aGUgbmV4dCBib3ggdGhhdCBhbHNvIHVzZXMgb3VyIFJlbmRlck9iamVjdAorICAgIExlZ2FjeUlu
bGluZVRleHRCb3gqIG1fcHJldlRleHRCb3ggeyBudWxscHRyIH07IC8vIFRoZSBwcmV2aW91cyBi
b3ggdGhhdCBhbHNvIHVzZXMgb3VyIFJlbmRlck9iamVjdAorICAgIExlZ2FjeUlubGluZVRleHRC
b3gqIG1fbmV4dFRleHRCb3ggeyBudWxscHRyIH07IC8vIFRoZSBuZXh0IGJveCB0aGF0IGFsc28g
dXNlcyBvdXIgUmVuZGVyT2JqZWN0CiAKICAgICB1bnNpZ25lZCBtX3N0YXJ0IHsgMCB9OwogICAg
IHVuc2lnbmVkIHNob3J0IG1fbGVuIHsgMCB9OwpAQCAtMjE0LDQgKzIxNCw0IEBAIExheW91dFJl
Y3Qgc25hcHBlZFNlbGVjdGlvblJlY3QoY29uc3QgTGF5b3V0UmVjdCYsIGZsb2F0IGxvZ2ljYWxS
aWdodCwgZmxvYXQgc2VsCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotU1BFQ0lBTElaRV9U
WVBFX1RSQUlUU19JTkxJTkVfQk9YKElubGluZVRleHRCb3gsIGlzSW5saW5lVGV4dEJveCgpKQor
U1BFQ0lBTElaRV9UWVBFX1RSQUlUU19JTkxJTkVfQk9YKExlZ2FjeUlubGluZVRleHRCb3gsIGlz
SW5saW5lVGV4dEJveCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xl
Z2FjeUxpbmVMYXlvdXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xlZ2FjeUxpbmVM
YXlvdXQuY3BwCmluZGV4IDkwZjU2OTAxZTYxYy4uNTg2NTIyZDU4NWIyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVnYWN5TGluZUxheW91dC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL0xlZ2FjeUxpbmVMYXlvdXQuY3BwCkBAIC0zMiw4ICszMiw4IEBA
CiAjaW5jbHVkZSAiSFRNTFBhcnNlcklkaW9tcy5oIgogI2luY2x1ZGUgIklubGluZUVsZW1lbnRC
b3guaCIKICNpbmNsdWRlICJJbmxpbmVJdGVyYXRvci5oIgotI2luY2x1ZGUgIklubGluZVRleHRC
b3guaCIKICNpbmNsdWRlICJJbmxpbmVUZXh0Qm94U3R5bGUuaCIKKyNpbmNsdWRlICJMZWdhY3lJ
bmxpbmVUZXh0Qm94LmgiCiAjaW5jbHVkZSAiTGluZUxheW91dFN0YXRlLmgiCiAjaW5jbHVkZSAi
TG9nZ2luZy5oIgogI2luY2x1ZGUgIlJlbmRlckJsb2NrRmxvdy5oIgpAQCAtMzI0LDggKzMyNCw4
IEBAIExlZ2FjeVJvb3RJbmxpbmVCb3gqIExlZ2FjeUxpbmVMYXlvdXQ6OmNvbnN0cnVjdExpbmUo
QmlkaVJ1bkxpc3Q8QmlkaVJ1bj4mIGJpZGlSCiAgICAgICAgIGJvb2wgdmlzdWFsbHlPcmRlcmVk
ID0gci0+cmVuZGVyZXIoKS5zdHlsZSgpLnJ0bE9yZGVyaW5nKCkgPT0gT3JkZXI6OlZpc3VhbDsK
ICAgICAgICAgYm94LT5zZXRCaWRpTGV2ZWwoci0+bGV2ZWwoKSk7CiAKLSAgICAgICAgaWYgKGlz
PElubGluZVRleHRCb3g+KCpib3gpKSB7Ci0gICAgICAgICAgICBhdXRvJiB0ZXh0Qm94ID0gZG93
bmNhc3Q8SW5saW5lVGV4dEJveD4oKmJveCk7CisgICAgICAgIGlmIChpczxMZWdhY3lJbmxpbmVU
ZXh0Qm94PigqYm94KSkgeworICAgICAgICAgICAgYXV0byYgdGV4dEJveCA9IGRvd25jYXN0PExl
Z2FjeUlubGluZVRleHRCb3g+KCpib3gpOwogICAgICAgICAgICAgdGV4dEJveC5zZXRTdGFydChy
LT5tX3N0YXJ0KTsKICAgICAgICAgICAgIHRleHRCb3guc2V0TGVuKHItPm1fc3RvcCAtIHItPm1f
c3RhcnQpOwogICAgICAgICAgICAgdGV4dEJveC5zZXREaXJPdmVycmlkZShyLT5kaXJPdmVycmlk
ZSh2aXN1YWxseU9yZGVyZWQpKTsKQEAgLTQ4NSw3ICs0ODUsNyBAQCBzdGF0aWMgaW5saW5lIHZv
aWQgc2V0TG9naWNhbFdpZHRoRm9yVGV4dFJ1bihMZWdhY3lSb290SW5saW5lQm94KiBsaW5lQm94
LCBCaWRpUgogICAgIH0KICAgICAKICAgICBMYXlvdXRVbml0IGh5cGhlbldpZHRoOwotICAgIGlm
IChkb3duY2FzdDxJbmxpbmVUZXh0Qm94PigqcnVuLT5ib3goKSkuaGFzSHlwaGVuKCkpCisgICAg
aWYgKGRvd25jYXN0PExlZ2FjeUlubGluZVRleHRCb3g+KCpydW4tPmJveCgpKS5oYXNIeXBoZW4o
KSkKICAgICAgICAgaHlwaGVuV2lkdGggPSBtZWFzdXJlSHlwaGVuV2lkdGgocmVuZGVyZXIsIGZv
bnQsICZmYWxsYmFja0ZvbnRzKTsKIAogICAgIGZsb2F0IG1lYXN1cmVkV2lkdGggPSAwOwpAQCAt
NTM4LDcgKzUzOCw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBzZXRMb2dpY2FsV2lkdGhGb3JUZXh0
UnVuKExlZ2FjeVJvb3RJbmxpbmVCb3gqIGxpbmVCb3gsIEJpZGlSCiAgICAgcnVuLT5ib3goKS0+
c2V0TG9naWNhbFdpZHRoKG1lYXN1cmVkV2lkdGggKyBoeXBoZW5XaWR0aCk7CiAgICAgaWYgKCFm
YWxsYmFja0ZvbnRzLmlzRW1wdHkoKSkgewogICAgICAgICBBU1NFUlQocnVuLT5ib3goKS0+YmVo
YXZlc0xpa2VUZXh0KCkpOwotICAgICAgICBHbHlwaE92ZXJmbG93QW5kRmFsbGJhY2tGb250c01h
cDo6aXRlcmF0b3IgaXQgPSB0ZXh0Qm94RGF0YU1hcC5hZGQoZG93bmNhc3Q8SW5saW5lVGV4dEJv
eD4ocnVuLT5ib3goKSksIHN0ZDo6bWFrZV9wYWlyKFZlY3Rvcjxjb25zdCBGb250Kj4oKSwgR2x5
cGhPdmVyZmxvdygpKSkuaXRlcmF0b3I7CisgICAgICAgIEdseXBoT3ZlcmZsb3dBbmRGYWxsYmFj
a0ZvbnRzTWFwOjppdGVyYXRvciBpdCA9IHRleHRCb3hEYXRhTWFwLmFkZChkb3duY2FzdDxMZWdh
Y3lJbmxpbmVUZXh0Qm94PihydW4tPmJveCgpKSwgc3RkOjptYWtlX3BhaXIoVmVjdG9yPGNvbnN0
IEZvbnQqPigpLCBHbHlwaE92ZXJmbG93KCkpKS5pdGVyYXRvcjsKICAgICAgICAgQVNTRVJUKGl0
LT52YWx1ZS5maXJzdC5pc0VtcHR5KCkpOwogICAgICAgICBpdC0+dmFsdWUuZmlyc3QgPSBjb3B5
VG9WZWN0b3IoZmFsbGJhY2tGb250cyk7CiAgICAgICAgIHJ1bi0+Ym94KCktPnBhcmVudCgpLT5j
bGVhckRlc2NlbmRhbnRzSGF2ZVNhbWVMaW5lSGVpZ2h0QW5kQmFzZWxpbmUoKTsKQEAgLTU0Niwx
MSArNTQ2LDExIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBzZXRMb2dpY2FsV2lkdGhGb3JUZXh0UnVu
KExlZ2FjeVJvb3RJbmxpbmVCb3gqIGxpbmVCb3gsIEJpZGlSCiAKICAgICAvLyBJbmNsdWRlIHRl
eHQgZGVjb3JhdGlvbiB2aXN1YWwgb3ZlcmZsb3cgYXMgcGFydCBvZiB0aGUgZ2x5cGggb3ZlcmZs
b3cuCiAgICAgaWYgKCFyZW5kZXJlci5zdHlsZSgpLnRleHREZWNvcmF0aW9uc0luRWZmZWN0KCku
aXNFbXB0eSgpKQotICAgICAgICBnbHlwaE92ZXJmbG93LmV4dGVuZFRvKHZpc3VhbE92ZXJmbG93
Rm9yRGVjb3JhdGlvbnMocnVuLT5ib3goKS0+bGluZVN0eWxlKCksIGRvd25jYXN0PElubGluZVRl
eHRCb3g+KHJ1bi0+Ym94KCkpKSk7CisgICAgICAgIGdseXBoT3ZlcmZsb3cuZXh0ZW5kVG8odmlz
dWFsT3ZlcmZsb3dGb3JEZWNvcmF0aW9ucyhydW4tPmJveCgpLT5saW5lU3R5bGUoKSwgZG93bmNh
c3Q8TGVnYWN5SW5saW5lVGV4dEJveD4ocnVuLT5ib3goKSkpKTsKIAogICAgIGlmICghZ2x5cGhP
dmVyZmxvdy5pc0VtcHR5KCkpIHsKICAgICAgICAgQVNTRVJUKHJ1bi0+Ym94KCktPmJlaGF2ZXNM
aWtlVGV4dCgpKTsKLSAgICAgICAgR2x5cGhPdmVyZmxvd0FuZEZhbGxiYWNrRm9udHNNYXA6Oml0
ZXJhdG9yIGl0ID0gdGV4dEJveERhdGFNYXAuYWRkKGRvd25jYXN0PElubGluZVRleHRCb3g+KHJ1
bi0+Ym94KCkpLCBzdGQ6Om1ha2VfcGFpcihWZWN0b3I8Y29uc3QgRm9udCo+KCksIEdseXBoT3Zl
cmZsb3coKSkpLml0ZXJhdG9yOworICAgICAgICBHbHlwaE92ZXJmbG93QW5kRmFsbGJhY2tGb250
c01hcDo6aXRlcmF0b3IgaXQgPSB0ZXh0Qm94RGF0YU1hcC5hZGQoZG93bmNhc3Q8TGVnYWN5SW5s
aW5lVGV4dEJveD4ocnVuLT5ib3goKSksIHN0ZDo6bWFrZV9wYWlyKFZlY3Rvcjxjb25zdCBGb250
Kj4oKSwgR2x5cGhPdmVyZmxvdygpKSkuaXRlcmF0b3I7CiAgICAgICAgIGl0LT52YWx1ZS5zZWNv
bmQgPSBnbHlwaE92ZXJmbG93OwogICAgICAgICBydW4tPmJveCgpLT5jbGVhcktub3duVG9IYXZl
Tm9PdmVyZmxvdygpOwogICAgIH0KQEAgLTYxMyw3ICs2MTMsNyBAQCB2b2lkIExlZ2FjeUxpbmVM
YXlvdXQ6OmNvbXB1dGVFeHBhbnNpb25Gb3JKdXN0aWZpZWRUZXh0KEJpZGlSdW4qIGZpcnN0UnVu
LCBCaWRpUgogICAgICAgICAgICAgCiAgICAgICAgICAgICAvLyBPbmx5IGp1c3RpZnkgdGV4dCBp
ZiB3aGl0ZXNwYWNlIGlzIGNvbGxhcHNlZC4KICAgICAgICAgICAgIGlmIChydW4tPnJlbmRlcmVy
KCkuc3R5bGUoKS5jb2xsYXBzZVdoaXRlU3BhY2UoKSkgewotICAgICAgICAgICAgICAgIElubGlu
ZVRleHRCb3gmIHRleHRCb3ggPSBkb3duY2FzdDxJbmxpbmVUZXh0Qm94PigqcnVuLT5ib3goKSk7
CisgICAgICAgICAgICAgICAgTGVnYWN5SW5saW5lVGV4dEJveCYgdGV4dEJveCA9IGRvd25jYXN0
PExlZ2FjeUlubGluZVRleHRCb3g+KCpydW4tPmJveCgpKTsKICAgICAgICAgICAgICAgICBmbG9h
dCBleHBhbnNpb24gPSAoYXZhaWxhYmxlTG9naWNhbFdpZHRoIC0gdG90YWxMb2dpY2FsV2lkdGgp
ICogb3Bwb3J0dW5pdGllc0luUnVuIC8gZXhwYW5zaW9uT3Bwb3J0dW5pdHlDb3VudDsKICAgICAg
ICAgICAgICAgICB0ZXh0Qm94LnNldEV4cGFuc2lvbihleHBhbnNpb24pOwogICAgICAgICAgICAg
ICAgIHRvdGFsTG9naWNhbFdpZHRoICs9IGV4cGFuc2lvbjsKQEAgLTcxNyw3ICs3MTcsNyBAQCB2
b2lkIExlZ2FjeUxpbmVMYXlvdXQ6OmNvbXB1dGVJbmxpbmVEaXJlY3Rpb25Qb3NpdGlvbnNGb3JM
aW5lKExlZ2FjeVJvb3RJbmxpbmVCbwogICAgIGxpbmVCb3gtPnBsYWNlQm94ZXNJbklubGluZURp
cmVjdGlvbihsaW5lTG9naWNhbExlZnQsIG5lZWRzV29yZFNwYWNpbmcpOwogfQogCi1zdGF0aWMg
aW5saW5lIEV4cGFuc2lvbkJlaGF2aW9yIGV4cGFuc2lvbkJlaGF2aW9yRm9ySW5saW5lVGV4dEJv
eChSZW5kZXJCbG9ja0Zsb3cmIGJsb2NrLCBJbmxpbmVUZXh0Qm94JiB0ZXh0Qm94LCBCaWRpUnVu
KiBwcmV2aW91c1J1biwgQmlkaVJ1biogbmV4dFJ1biwgVGV4dEFsaWduTW9kZSB0ZXh0QWxpZ24s
IGJvb2wgaXNBZnRlckV4cGFuc2lvbikKK3N0YXRpYyBpbmxpbmUgRXhwYW5zaW9uQmVoYXZpb3Ig
ZXhwYW5zaW9uQmVoYXZpb3JGb3JJbmxpbmVUZXh0Qm94KFJlbmRlckJsb2NrRmxvdyYgYmxvY2ss
IExlZ2FjeUlubGluZVRleHRCb3gmIHRleHRCb3gsIEJpZGlSdW4qIHByZXZpb3VzUnVuLCBCaWRp
UnVuKiBuZXh0UnVuLCBUZXh0QWxpZ25Nb2RlIHRleHRBbGlnbiwgYm9vbCBpc0FmdGVyRXhwYW5z
aW9uKQogewogICAgIC8vIFRhdGVjaHV5b2tvIGlzIG1vZGVsZWQgYXMgdGhlIE9iamVjdCBSZXBs
YWNlbWVudCBDaGFyYWN0ZXIgKFUrRkZGQyksIHdoaWNoIGNhbiBuZXZlciBoYXZlIGV4cGFuc2lv
biBvcHBvcnR1bml0aWVzIGluc2lkZSBub3IgaW50cmluc2ljYWxseSBhZGphY2VudCB0byBpdC4K
ICAgICBpZiAodGV4dEJveC5yZW5kZXJlcigpLnN0eWxlKCkudGV4dENvbWJpbmUoKSA9PSBUZXh0
Q29tYmluZTo6SG9yaXpvbnRhbCkKQEAgLTczMiw3ICs3MzIsNyBAQCBzdGF0aWMgaW5saW5lIEV4
cGFuc2lvbkJlaGF2aW9yIGV4cGFuc2lvbkJlaGF2aW9yRm9ySW5saW5lVGV4dEJveChSZW5kZXJC
bG9ja0ZsbwogICAgICAgICAgICAgYXV0byYgcnVieUJhc2UgPSAqZG93bmNhc3Q8UmVuZGVyUnVi
eVJ1bj4obmV4dFJ1bi0+cmVuZGVyZXIoKSkucnVieUJhc2UoKTsKICAgICAgICAgICAgIGlmIChy
dWJ5QmFzZS5maXJzdFJvb3RCb3goKSAmJiAhcnVieUJhc2UuZmlyc3RSb290Qm94KCktPm5leHRS
b290Qm94KCkpIHsKICAgICAgICAgICAgICAgICBpZiAoYXV0byogbGVhZkNoaWxkID0gcnVieUJh
c2UuZmlyc3RSb290Qm94KCktPmZpcnN0TGVhZkRlc2NlbmRhbnQoKSkgewotICAgICAgICAgICAg
ICAgICAgICBpZiAoaXM8SW5saW5lVGV4dEJveD4oKmxlYWZDaGlsZCkpIHsKKyAgICAgICAgICAg
ICAgICAgICAgaWYgKGlzPExlZ2FjeUlubGluZVRleHRCb3g+KCpsZWFmQ2hpbGQpKSB7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBGSVhNRTogVGhpcyBsZWZ0RXhwYW5zaW9uT3Bwb3J0dW5p
dHkgZG9lc24ndCBhY3R1YWxseSB3b3JrIGJlY2F1c2UgaXQgZG9lc24ndCBwZXJmb3JtIHRoZSBV
QkEKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChGb250Q2FzY2FkZTo6bGVmdEV4cGFuc2lv
bk9wcG9ydHVuaXR5KGRvd25jYXN0PFJlbmRlclRleHQ+KGxlYWZDaGlsZC0+cmVuZGVyZXIoKSku
c3RyaW5nVmlldygpLCBsZWFmQ2hpbGQtPmRpcmVjdGlvbigpKSkgewogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNldFJpZ2h0RXhwYW5zaW9uID0gdHJ1ZTsKQEAgLTc0Nyw3ICs3NDcsNyBA
QCBzdGF0aWMgaW5saW5lIEV4cGFuc2lvbkJlaGF2aW9yIGV4cGFuc2lvbkJlaGF2aW9yRm9ySW5s
aW5lVGV4dEJveChSZW5kZXJCbG9ja0ZsbwogICAgICAgICAgICAgYXV0byYgcnVieUJhc2UgPSAq
ZG93bmNhc3Q8UmVuZGVyUnVieVJ1bj4ocHJldmlvdXNSdW4tPnJlbmRlcmVyKCkpLnJ1YnlCYXNl
KCk7CiAgICAgICAgICAgICBpZiAocnVieUJhc2UuZmlyc3RSb290Qm94KCkgJiYgIXJ1YnlCYXNl
LmZpcnN0Um9vdEJveCgpLT5uZXh0Um9vdEJveCgpKSB7CiAgICAgICAgICAgICAgICAgaWYgKGF1
dG8qIGxlYWZDaGlsZCA9IHJ1YnlCYXNlLmZpcnN0Um9vdEJveCgpLT5sYXN0TGVhZkRlc2NlbmRh
bnQoKSkgewotICAgICAgICAgICAgICAgICAgICBpZiAoaXM8SW5saW5lVGV4dEJveD4oKmxlYWZD
aGlsZCkpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGlzPExlZ2FjeUlubGluZVRleHRCb3g+
KCpsZWFmQ2hpbGQpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBGSVhNRTogVGhpcyBs
ZWZ0RXhwYW5zaW9uT3Bwb3J0dW5pdHkgZG9lc24ndCBhY3R1YWxseSB3b3JrIGJlY2F1c2UgaXQg
ZG9lc24ndCBwZXJmb3JtIHRoZSBVQkEKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChGb250
Q2FzY2FkZTo6cmlnaHRFeHBhbnNpb25PcHBvcnR1bml0eShkb3duY2FzdDxSZW5kZXJUZXh0Pihs
ZWFmQ2hpbGQtPnJlbmRlcmVyKCkpLnN0cmluZ1ZpZXcoKSwgbGVhZkNoaWxkLT5kaXJlY3Rpb24o
KSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRMZWZ0RXhwYW5zaW9uID0gdHJ1
ZTsKQEAgLTc3Niw3ICs3NzYsNyBAQCBzdGF0aWMgaW5saW5lIEV4cGFuc2lvbkJlaGF2aW9yIGV4
cGFuc2lvbkJlaGF2aW9yRm9ySW5saW5lVGV4dEJveChSZW5kZXJCbG9ja0ZsbwogICAgIHJldHVy
biByZXN1bHQ7CiB9CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBhcHBseUV4cGFuc2lvbkJlaGF2aW9y
KElubGluZVRleHRCb3gmIHRleHRCb3gsIEV4cGFuc2lvbkJlaGF2aW9yIGV4cGFuc2lvbkJlaGF2
aW9yKQorc3RhdGljIGlubGluZSB2b2lkIGFwcGx5RXhwYW5zaW9uQmVoYXZpb3IoTGVnYWN5SW5s
aW5lVGV4dEJveCYgdGV4dEJveCwgRXhwYW5zaW9uQmVoYXZpb3IgZXhwYW5zaW9uQmVoYXZpb3Ip
CiB7CiAgICAgc3dpdGNoIChleHBhbnNpb25CZWhhdmlvciAmIExlZnRFeHBhbnNpb25NYXNrKSB7
CiAgICAgY2FzZSBGb3JjZUxlZnRFeHBhbnNpb246CkBAIC04NTMsNyArODUzLDcgQEAgQmlkaVJ1
biogTGVnYWN5TGluZUxheW91dDo6Y29tcHV0ZUlubGluZURpcmVjdGlvblBvc2l0aW9uc0ZvclNl
Z21lbnQoTGVnYWN5Um9vdEkKICAgICBib29sIGlzQWZ0ZXJFeHBhbnNpb24gPSBpczxSZW5kZXJS
dWJ5QmFzZT4obV9mbG93KSA/IGRvd25jYXN0PFJlbmRlclJ1YnlCYXNlPihtX2Zsb3cpLmlzQWZ0
ZXJFeHBhbnNpb24oKSA6IHRydWU7CiAgICAgVmVjdG9yPHVuc2lnbmVkLCAxNj4gZXhwYW5zaW9u
T3Bwb3J0dW5pdGllczsKIAotICAgIEhhc2hNYXA8SW5saW5lVGV4dEJveCosIExheW91dFVuaXQ+
IGxvZ2ljYWxTcGFjaW5nRm9ySW5saW5lVGV4dEJveGVzOworICAgIEhhc2hNYXA8TGVnYWN5SW5s
aW5lVGV4dEJveCosIExheW91dFVuaXQ+IGxvZ2ljYWxTcGFjaW5nRm9ySW5saW5lVGV4dEJveGVz
OwogICAgIGF1dG8gY29sbGVjdFNwYWNpbmdMb2dpY2FsV2lkdGhzID0gWyZdICgpIHsKICAgICAg
ICAgYXV0byB0b3RhbFNwYWNpbmdXaWR0aCA9IExheW91dFVuaXQgeyB9OwogICAgICAgICAvLyBD
b2xsZWN0IHRoZSBzcGFjaW5nIHBvc2l0aW9ucyAobWFyZ2luLCBib3JkZXIgcGFkZGluZykgZm9y
IHRoZSB0ZXh0Ym94ZXMgYnkgdHJhdmVyc2luZyB0aGUgaW5saW5lIHRyZWUgb2YgdGhlIGN1cnJl
bnQgbGluZS4KQEAgLTg2MSw3ICs4NjEsNyBAQCBCaWRpUnVuKiBMZWdhY3lMaW5lTGF5b3V0Ojpj
b21wdXRlSW5saW5lRGlyZWN0aW9uUG9zaXRpb25zRm9yU2VnbWVudChMZWdhY3lSb290SQogICAg
ICAgICBxdWV1ZS5hcHBlbmQobGluZUJveCk7CiAgICAgICAgIC8vIDEuIFZpc2l0IGVhY2ggaW5s
aW5lIGJveCBpbiBhIHByZW9yZGVyIGZhc2hpb24KICAgICAgICAgLy8gMi4gQWNjdW11bGF0ZSB0
aGUgc3BhY2luZyB3aGVuIHdlIGZpbmQgYW4gTGVnYWN5SW5saW5lRmxvd0JveCAoaW5saW5lIGNv
bnRhaW5lciBlLmcuIHNwYW4pCi0gICAgICAgIC8vIDMuIEFkZCB0aGUgSW5saW5lVGV4dEJveGVz
IHRvIHRoZSBoYXNobWFwCisgICAgICAgIC8vIDMuIEFkZCB0aGUgTGVnYWN5SW5saW5lVGV4dEJv
eGVzIHRvIHRoZSBoYXNobWFwCiAgICAgICAgIHdoaWxlICghcXVldWUuaXNFbXB0eSgpKSB7CiAg
ICAgICAgICAgICB3aGlsZSAodHJ1ZSkgewogICAgICAgICAgICAgICAgIGF1dG8qIGlubGluZUJv
eCA9IHF1ZXVlLmxhc3QoKTsKQEAgLTg3NCw4ICs4NzQsOCBAQCBCaWRpUnVuKiBMZWdhY3lMaW5l
TGF5b3V0Ojpjb21wdXRlSW5saW5lRGlyZWN0aW9uUG9zaXRpb25zRm9yU2VnbWVudChMZWdhY3lS
b290SQogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoaXM8SW5saW5lVGV4dEJveD4o
aW5saW5lQm94KSkKLSAgICAgICAgICAgICAgICAgICAgbG9naWNhbFNwYWNpbmdGb3JJbmxpbmVU
ZXh0Qm94ZXMuYWRkKGRvd25jYXN0PElubGluZVRleHRCb3g+KGlubGluZUJveCksIHRvdGFsU3Bh
Y2luZ1dpZHRoKTsKKyAgICAgICAgICAgICAgICBpZiAoaXM8TGVnYWN5SW5saW5lVGV4dEJveD4o
aW5saW5lQm94KSkKKyAgICAgICAgICAgICAgICAgICAgbG9naWNhbFNwYWNpbmdGb3JJbmxpbmVU
ZXh0Qm94ZXMuYWRkKGRvd25jYXN0PExlZ2FjeUlubGluZVRleHRCb3g+KGlubGluZUJveCksIHRv
dGFsU3BhY2luZ1dpZHRoKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIHdoaWxlICghcXVldWUuaXNFbXB0eSgpKSB7CkBAIC04OTUsNyArODk1LDcg
QEAgQmlkaVJ1biogTGVnYWN5TGluZUxheW91dDo6Y29tcHV0ZUlubGluZURpcmVjdGlvblBvc2l0
aW9uc0ZvclNlZ21lbnQoTGVnYWN5Um9vdEkKICAgICBCaWRpUnVuKiBwcmV2aW91c1J1biA9IG51
bGxwdHI7CiAgICAgZm9yICg7IHJ1bjsgcnVuID0gcnVuLT5uZXh0KCkpIHsKICAgICAgICAgYXV0
byBjb21wdXRlRXhwYW5zaW9uT3Bwb3J0dW5pdGllcyA9IFsmZXhwYW5zaW9uT3Bwb3J0dW5pdGll
cywgJmV4cGFuc2lvbk9wcG9ydHVuaXR5Q291bnQsIHRleHRBbGlnbiwgJmlzQWZ0ZXJFeHBhbnNp
b25dIChSZW5kZXJCbG9ja0Zsb3cmIGJsb2NrLAotICAgICAgICAgICAgSW5saW5lVGV4dEJveCYg
dGV4dEJveCwgQmlkaVJ1biogcHJldmlvdXNSdW4sIEJpZGlSdW4qIG5leHRSdW4sIGNvbnN0IFN0
cmluZ1ZpZXcmIHN0cmluZ1ZpZXcsIFRleHREaXJlY3Rpb24gZGlyZWN0aW9uKQorICAgICAgICAg
ICAgTGVnYWN5SW5saW5lVGV4dEJveCYgdGV4dEJveCwgQmlkaVJ1biogcHJldmlvdXNSdW4sIEJp
ZGlSdW4qIG5leHRSdW4sIGNvbnN0IFN0cmluZ1ZpZXcmIHN0cmluZ1ZpZXcsIFRleHREaXJlY3Rp
b24gZGlyZWN0aW9uKQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoc3RyaW5nVmlldy5pc0Vt
cHR5KCkpIHsKICAgICAgICAgICAgICAgICAvLyBFbXB0eSBydW5zIHNob3VsZCBzdGlsbCBwcm9k
dWNlIGFuIGVudHJ5IGluIGV4cGFuc2lvbk9wcG9ydHVuaXRpZXMgbGlzdCBzbyB0aGF0IHRoZSBu
dW1iZXIgb2YgaXRlbXMgbWF0Y2hlcyB0aGUgbnVtYmVyIG9mIHJ1bnMuCkBAIC05MTYsNyArOTE2
LDcgQEAgQmlkaVJ1biogTGVnYWN5TGluZUxheW91dDo6Y29tcHV0ZUlubGluZURpcmVjdGlvblBv
c2l0aW9uc0ZvclNlZ21lbnQoTGVnYWN5Um9vdEkKICAgICAgICAgfQogICAgICAgICBpZiAoaXM8
UmVuZGVyVGV4dD4ocnVuLT5yZW5kZXJlcigpKSkgewogICAgICAgICAgICAgYXV0byYgcmVuZGVy
VGV4dCA9IGRvd25jYXN0PFJlbmRlclRleHQ+KHJ1bi0+cmVuZGVyZXIoKSk7Ci0gICAgICAgICAg
ICBhdXRvJiB0ZXh0Qm94ID0gZG93bmNhc3Q8SW5saW5lVGV4dEJveD4oKnJ1bi0+Ym94KCkpOwor
ICAgICAgICAgICAgYXV0byYgdGV4dEJveCA9IGRvd25jYXN0PExlZ2FjeUlubGluZVRleHRCb3g+
KCpydW4tPmJveCgpKTsKICAgICAgICAgICAgIGlmIChjYW5IYW5nUHVuY3R1YXRpb25BdFN0YXJ0
ICYmIGxpbmVJbmZvLmlzRmlyc3RMaW5lKCkgJiYgKGlzTFRSIHx8IGlzTGFzdEluRmxvd1J1bigq
cnVuKSkKICAgICAgICAgICAgICAgICAmJiAhaW5saW5lQW5jZXN0b3JIYXNTdGFydEJvcmRlclBh
ZGRpbmdPck1hcmdpbihtX2Zsb3csICpydW4tPmJveCgpKSkgewogICAgICAgICAgICAgICAgIGZs
b2F0IGhhbmdTdGFydFdpZHRoID0gcmVuZGVyVGV4dC5oYW5nYWJsZVB1bmN0dWF0aW9uU3RhcnRX
aWR0aChydW4tPm1fc3RhcnQpOwpAQCAtOTU1LDEwICs5NTUsMTAgQEAgQmlkaVJ1biogTGVnYWN5
TGluZUxheW91dDo6Y29tcHV0ZUlubGluZURpcmVjdGlvblBvc2l0aW9uc0ZvclNlZ21lbnQoTGVn
YWN5Um9vdEkKICAgICAgICAgICAgICAgICBpZiAocnVieUJhc2UtPmZpcnN0Um9vdEJveCgpICYm
ICFydWJ5QmFzZS0+Zmlyc3RSb290Qm94KCktPm5leHRSb290Qm94KCkgJiYgcnVuLT5yZW5kZXJl
cigpLnN0eWxlKCkuY29sbGFwc2VXaGl0ZVNwYWNlKCkpIHsKICAgICAgICAgICAgICAgICAgICAg
cnVieUJhc2UtPnNldElzQWZ0ZXJFeHBhbnNpb24oaXNBZnRlckV4cGFuc2lvbik7CiAgICAgICAg
ICAgICAgICAgICAgIGZvciAoYXV0byogbGVhZkNoaWxkID0gcnVieUJhc2UtPmZpcnN0Um9vdEJv
eCgpLT5maXJzdExlYWZEZXNjZW5kYW50KCk7IGxlYWZDaGlsZDsgbGVhZkNoaWxkID0gbGVhZkNo
aWxkLT5uZXh0TGVhZk9uTGluZSgpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWlz
PElubGluZVRleHRCb3g+KCpsZWFmQ2hpbGQpKQorICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KCFpczxMZWdhY3lJbmxpbmVUZXh0Qm94PigqbGVhZkNoaWxkKSkKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICAgICAgIGVuY291bnRlcmVk
SnVzdGlmaWVkUnVieSA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb21wdXRlRXhw
YW5zaW9uT3Bwb3J0dW5pdGllcygqcnVieUJhc2UsIGRvd25jYXN0PElubGluZVRleHRCb3g+KCps
ZWFmQ2hpbGQpLCBudWxscHRyLCBudWxscHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgY29t
cHV0ZUV4cGFuc2lvbk9wcG9ydHVuaXRpZXMoKnJ1YnlCYXNlLCBkb3duY2FzdDxMZWdhY3lJbmxp
bmVUZXh0Qm94PigqbGVhZkNoaWxkKSwgbnVsbHB0ciwgbnVsbHB0ciwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBkb3duY2FzdDxSZW5kZXJUZXh0PihsZWFmQ2hpbGQtPnJlbmRlcmVyKCkp
LnN0cmluZ1ZpZXcoKSwgbGVhZkNoaWxkLT5kaXJlY3Rpb24oKSk7CiAgICAgICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgICB9CkBAIC0xMDE3LDcgKzEwMTcsNyBAQCB2b2lkIExlZ2Fj
eUxpbmVMYXlvdXQ6OnJlbW92ZUlubGluZUJveChCaWRpUnVuJiBydW4sIGNvbnN0IExlZ2FjeVJv
b3RJbmxpbmVCb3gmCiAKICAgICBhdXRvJiByZW5kZXJlciA9IHJ1bi5yZW5kZXJlcigpOwogICAg
IGlmIChpczxSZW5kZXJUZXh0PihyZW5kZXJlcikpCi0gICAgICAgIGRvd25jYXN0PFJlbmRlclRl
eHQ+KHJlbmRlcmVyKS5yZW1vdmVUZXh0Qm94KGRvd25jYXN0PElubGluZVRleHRCb3g+KCppbmxp
bmVCb3gpKTsKKyAgICAgICAgZG93bmNhc3Q8UmVuZGVyVGV4dD4ocmVuZGVyZXIpLnJlbW92ZVRl
eHRCb3goZG93bmNhc3Q8TGVnYWN5SW5saW5lVGV4dEJveD4oKmlubGluZUJveCkpOwogICAgIGRl
bGV0ZSBpbmxpbmVCb3g7CiAgICAgcnVuLnNldEJveChudWxscHRyKTsKICAgICAvLyByZW1vdmVG
cm9tUGFyZW50KCkgdW5uZWNlc3NhcmlseSBkaXJ0aWVzIHRoZSBhbmNlc3RvciBzdWJ0cmVlLgpA
QCAtMTA1MCw3ICsxMDUwLDcgQEAgdm9pZCBMZWdhY3lMaW5lTGF5b3V0Ojpjb21wdXRlQmxvY2tE
aXJlY3Rpb25Qb3NpdGlvbnNGb3JMaW5lKExlZ2FjeVJvb3RJbmxpbmVCb3gKICAgICAgICAgLy8g
dG8gdXBkYXRlIHRoZSBzdGF0aWMgbm9ybWFsIGZsb3cgeC95IG9mIHBvc2l0aW9uZWQgZWxlbWVu
dHMuCiAgICAgICAgIGJvb2wgaW5saW5lQm94SXNSZWR1bmRhbnQgPSBmYWxzZTsKICAgICAgICAg
aWYgKGlzPFJlbmRlclRleHQ+KHJlbmRlcmVyKSkgewotICAgICAgICAgICAgYXV0byYgaW5saW5l
VGV4dEJveCA9IGRvd25jYXN0PElubGluZVRleHRCb3g+KCpydW4tPmJveCgpKTsKKyAgICAgICAg
ICAgIGF1dG8mIGlubGluZVRleHRCb3ggPSBkb3duY2FzdDxMZWdhY3lJbmxpbmVUZXh0Qm94Pigq
cnVuLT5ib3goKSk7CiAgICAgICAgICAgICBkb3duY2FzdDxSZW5kZXJUZXh0PihyZW5kZXJlciku
cG9zaXRpb25MaW5lQm94KGlubGluZVRleHRCb3gpOwogICAgICAgICAgICAgaW5saW5lQm94SXNS
ZWR1bmRhbnQgPSAhaW5saW5lVGV4dEJveC5oYXNUZXh0Q29udGVudCgpOwogICAgICAgICB9IGVs
c2UgaWYgKGlzPFJlbmRlckJveD4ocmVuZGVyZXIpKSB7CkBAIC0xMjYzLDcgKzEyNjMsNyBAQCBM
ZWdhY3lSb290SW5saW5lQm94KiBMZWdhY3lMaW5lTGF5b3V0OjpjcmVhdGVMaW5lQm94ZXNGcm9t
QmlkaVJ1bnModW5zaWduZWQgYmlkaQogICAgIAogICAgIC8vIFNWRyB0ZXh0IGxheW91dCBjb2Rl
IGNvbXB1dGVzIHZlcnRpY2FsICYgaG9yaXpvbnRhbCBwb3NpdGlvbnMgb24gaXRzIG93bi4KICAg
ICAvLyBOb3RlIHRoYXQgd2Ugc3RpbGwgbmVlZCB0byBleGVjdXRlIGNvbXB1dGVWZXJ0aWNhbFBv
c2l0aW9uc0ZvckxpbmUoKSBhcwotICAgIC8vIGl0IGNhbGxzIElubGluZVRleHRCb3g6OnBvc2l0
aW9uTGluZUJveCgpLCB3aGljaCB0cmFja3Mgd2hldGhlciB0aGUgYm94CisgICAgLy8gaXQgY2Fs
bHMgTGVnYWN5SW5saW5lVGV4dEJveDo6cG9zaXRpb25MaW5lQm94KCksIHdoaWNoIHRyYWNrcyB3
aGV0aGVyIHRoZSBib3gKICAgICAvLyBjb250YWlucyByZXZlcnNlZCB0ZXh0IG9yIG5vdC4gSWYg
d2Ugd291bGRuJ3QgZG8gdGhhdCBlZGl0aW5nIGFuZCB0aHVzCiAgICAgLy8gdGV4dCBzZWxlY3Rp
b24gaW4gUlRMIGJveGVzIHdvdWxkIG5vdCB3b3JrIGFzIGV4cGVjdGVkLgogICAgIGlmIChpc1NW
R1Jvb3RJbmxpbmVCb3gpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9M
ZWdhY3lSb290SW5saW5lQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MZWdhY3lS
b290SW5saW5lQm94LmNwcAppbmRleCBlOWRjYWRlNjhlY2EuLjcyMTVlNTYyNTNjYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xlZ2FjeVJvb3RJbmxpbmVCb3guY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MZWdhY3lSb290SW5saW5lQm94LmNwcApAQCAt
MjgsNyArMjgsNyBAQAogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250
ZXh0LmgiCiAjaW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5oIgotI2luY2x1ZGUgIklubGluZVRleHRC
b3guaCIKKyNpbmNsdWRlICJMZWdhY3lJbmxpbmVUZXh0Qm94LmgiCiAjaW5jbHVkZSAiTG9naWNh
bFNlbGVjdGlvbk9mZnNldENhY2hlcy5oIgogI2luY2x1ZGUgIlBhaW50SW5mby5oIgogI2luY2x1
ZGUgIlJlbmRlckZyYWdtZW50ZWRGbG93LmgiCkBAIC05OSw3ICs5OSw3IEBAIHZvaWQgTGVnYWN5
Um9vdElubGluZUJveDo6Y2xlYXJUcnVuY2F0aW9uKCkKIGJvb2wgTGVnYWN5Um9vdElubGluZUJv
eDo6aXNIeXBoZW5hdGVkKCkgY29uc3QKIHsKICAgICBmb3IgKGF1dG8qIGJveCA9IGZpcnN0TGVh
ZkRlc2NlbmRhbnQoKTsgYm94OyBib3ggPSBib3gtPm5leHRMZWFmT25MaW5lKCkpIHsKLSAgICAg
ICAgaWYgKGlzPElubGluZVRleHRCb3g+KCpib3gpICYmIGRvd25jYXN0PElubGluZVRleHRCb3g+
KCpib3gpLmhhc0h5cGhlbigpKQorICAgICAgICBpZiAoaXM8TGVnYWN5SW5saW5lVGV4dEJveD4o
KmJveCkgJiYgZG93bmNhc3Q8TGVnYWN5SW5saW5lVGV4dEJveD4oKmJveCkuaGFzSHlwaGVuKCkp
CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgcmV0dXJuIGZhbHNlOwpAQCAt
ODAzLDggKzgwMyw4IEBAIHZvaWQgTGVnYWN5Um9vdElubGluZUJveDo6YXNjZW50QW5kRGVzY2Vu
dEZvckJveChMZWdhY3lJbmxpbmVCb3gmIGJveCwgR2x5cGhPdmVyCiAKICAgICBWZWN0b3I8Y29u
c3QgRm9udCo+KiB1c2VkRm9udHMgPSBudWxscHRyOwogICAgIEdseXBoT3ZlcmZsb3cqIGdseXBo
T3ZlcmZsb3cgPSBudWxscHRyOwotICAgIGlmIChpczxJbmxpbmVUZXh0Qm94Pihib3gpKSB7Ci0g
ICAgICAgIEdseXBoT3ZlcmZsb3dBbmRGYWxsYmFja0ZvbnRzTWFwOjppdGVyYXRvciBpdCA9IHRl
eHRCb3hEYXRhTWFwLmZpbmQoJmRvd25jYXN0PElubGluZVRleHRCb3g+KGJveCkpOworICAgIGlm
IChpczxMZWdhY3lJbmxpbmVUZXh0Qm94Pihib3gpKSB7CisgICAgICAgIEdseXBoT3ZlcmZsb3dB
bmRGYWxsYmFja0ZvbnRzTWFwOjppdGVyYXRvciBpdCA9IHRleHRCb3hEYXRhTWFwLmZpbmQoJmRv
d25jYXN0PExlZ2FjeUlubGluZVRleHRCb3g+KGJveCkpOwogICAgICAgICB1c2VkRm9udHMgPSBp
dCA9PSB0ZXh0Qm94RGF0YU1hcC5lbmQoKSA/IG51bGxwdHIgOiAmaXQtPnZhbHVlLmZpcnN0Owog
ICAgICAgICBnbHlwaE92ZXJmbG93ID0gaXQgPT0gdGV4dEJveERhdGFNYXAuZW5kKCkgPyBudWxs
cHRyIDogJml0LT52YWx1ZS5zZWNvbmQ7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCbG9jay5jcHAKaW5kZXggNjY1M2VlYjNhMzQ3Li5mNTM4ZTBmNWNmMDggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcApAQCAtNDEsOCArNDEsOCBAQAogI2lu
Y2x1ZGUgIkltYWdlQnVmZmVyLmgiCiAjaW5jbHVkZSAiSW5saW5lRWxlbWVudEJveC5oIgogI2lu
Y2x1ZGUgIklubGluZUl0ZXJhdG9yLmgiCi0jaW5jbHVkZSAiSW5saW5lVGV4dEJveC5oIgogI2lu
Y2x1ZGUgIkxheW91dFJlcGFpbnRlci5oIgorI2luY2x1ZGUgIkxlZ2FjeUlubGluZVRleHRCb3gu
aCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTG9naWNhbFNlbGVjdGlvbk9mZnNl
dENhY2hlcy5oIgogI2luY2x1ZGUgIk92ZXJmbG93RXZlbnQuaCIKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAKaW5kZXggNjhkYjA2MmUwMjQ0Li5lZjk4MWFh
NDUwNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zs
b3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3Bw
CkBAIC0zNCwxMSArMzQsMTEgQEAKICNpbmNsdWRlICJIVE1MVGV4dEFyZWFFbGVtZW50LmgiCiAj
aW5jbHVkZSAiSGl0VGVzdExvY2F0aW9uLmgiCiAjaW5jbHVkZSAiSW5saW5lSXRlcmF0b3IuaCIK
LSNpbmNsdWRlICJJbmxpbmVUZXh0Qm94LmgiCiAjaW5jbHVkZSAiTGF5b3V0SW50ZWdyYXRpb25M
aW5lSXRlcmF0b3IuaCIKICNpbmNsdWRlICJMYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQuaCIK
ICNpbmNsdWRlICJMYXlvdXRJbnRlZ3JhdGlvblJ1bkl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiTGF5
b3V0UmVwYWludGVyLmgiCisjaW5jbHVkZSAiTGVnYWN5SW5saW5lVGV4dEJveC5oIgogI2luY2x1
ZGUgIkxlZ2FjeUxpbmVMYXlvdXQuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAi
UmVuZGVyQ29tYmluZVRleHQuaCIKQEAgLTMyMzIsNyArMzIzMiw3IEBAIEdhcFJlY3RzIFJlbmRl
ckJsb2NrRmxvdzo6aW5saW5lU2VsZWN0aW9uR2FwcyhSZW5kZXJCbG9jayYgcm9vdEJsb2NrLCBj
b25zdCBMYXlvCiAKICAgICBhdXRvIGhhc1NlbGVjdGVkQ2hpbGRyZW4gPSBbJl0oY29uc3QgTGVn
YWN5Um9vdElubGluZUJveCYgcm9vdCkgewogICAgICAgICBmb3IgKGF1dG8qIGJveCA9IHJvb3Qu
Zmlyc3RMZWFmRGVzY2VuZGFudCgpOyBib3g7IGJveCA9IGJveC0+bmV4dExlYWZPbkxpbmUoKSkg
ewotICAgICAgICAgICAgaWYgKCFpczxJbmxpbmVUZXh0Qm94PigqYm94KSkgeworICAgICAgICAg
ICAgaWYgKCFpczxMZWdhY3lJbmxpbmVUZXh0Qm94PigqYm94KSkgewogICAgICAgICAgICAgICAg
IGlmIChib3gtPnNlbGVjdGlvblN0YXRlKCkgIT0gSGlnaGxpZ2h0U3RhdGU6Ok5vbmUpCiAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwpA
QCAtMzI0MSw3ICszMjQxLDcgQEAgR2FwUmVjdHMgUmVuZGVyQmxvY2tGbG93OjppbmxpbmVTZWxl
Y3Rpb25HYXBzKFJlbmRlckJsb2NrJiByb290QmxvY2ssIGNvbnN0IExheW8KICAgICAgICAgICAg
IGF1dG8gc3RhcnQgPSB2aWV3KCkuc2VsZWN0aW9uKCkuc3RhcnRPZmZzZXQoKTsKICAgICAgICAg
ICAgIGF1dG8gZW5kID0gdmlldygpLnNlbGVjdGlvbigpLmVuZE9mZnNldCgpOwogCi0gICAgICAg
ICAgICBhdXRvJiB0ZXh0Qm94ID0gZG93bmNhc3Q8SW5saW5lVGV4dEJveD4oKmJveCk7CisgICAg
ICAgICAgICBhdXRvJiB0ZXh0Qm94ID0gZG93bmNhc3Q8TGVnYWN5SW5saW5lVGV4dEJveD4oKmJv
eCk7CiAgICAgICAgICAgICBzd2l0Y2ggKHRleHRCb3gucmVuZGVyZXIoKS5zZWxlY3Rpb25TdGF0
ZSgpKSB7CiAgICAgICAgICAgICBjYXNlIFJlbmRlck9iamVjdDo6SGlnaGxpZ2h0U3RhdGU6Ok5v
bmU6CiAgICAgICAgICAgICAgICAgY29udGludWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAppbmRleCBiYWRiYzc2YmIyZjkuLmM4YWRh
ZjJiYTgxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1v
ZGVsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9k
ZWxPYmplY3QuY3BwCkBAIC03MDQsNyArNzA0LDcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVj
dDo6cGFpbnRNYXNrRm9yVGV4dEZpbGxCb3goSW1hZ2VCdWZmZXIqIG1hc2tJbWFnZSwgY29uc3QK
ICAgICBtYXNrSW1hZ2VDb250ZXh0LnRyYW5zbGF0ZSgtbWFza1JlY3QubG9jYXRpb24oKSk7CiAK
ICAgICAvLyBOb3cgYWRkIHRoZSB0ZXh0IHRvIHRoZSBjbGlwLiBXZSBkbyB0aGlzIGJ5IHBhaW50
aW5nIHVzaW5nIGEgc3BlY2lhbCBwYWludCBwaGFzZSB0aGF0IHNpZ25hbHMgdG8KLSAgICAvLyBJ
bmxpbmVUZXh0Qm94ZXMgdGhhdCB0aGV5IHNob3VsZCBqdXN0IGFkZCB0aGVpciBjb250ZW50cyB0
byB0aGUgY2xpcC4KKyAgICAvLyBMZWdhY3lJbmxpbmVUZXh0Qm94ZXMgdGhhdCB0aGV5IHNob3Vs
ZCBqdXN0IGFkZCB0aGVpciBjb250ZW50cyB0byB0aGUgY2xpcC4KICAgICBQYWludEluZm8gaW5m
byhtYXNrSW1hZ2VDb250ZXh0LCBMYXlvdXRSZWN0IHsgbWFza1JlY3QgfSwgUGFpbnRQaGFzZTo6
VGV4dENsaXAsIFBhaW50QmVoYXZpb3I6OkZvcmNlQmxhY2tUZXh0KTsKICAgICBpZiAoYm94KSB7
CiAgICAgICAgIGNvbnN0IExlZ2FjeVJvb3RJbmxpbmVCb3gmIHJvb3RCb3ggPSBib3gtPnJvb3Qo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAKaW5kZXggOWY4NGQ4
MmU1MGE3Li5hOGM1MDI1Y2QyZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJJbmxpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJ
bmxpbmUuY3BwCkBAIC0yOSw4ICsyOSw4IEBACiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0Lmgi
CiAjaW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5oIgogI2luY2x1ZGUgIklubGluZUVsZW1lbnRCb3gu
aCIKLSNpbmNsdWRlICJJbmxpbmVUZXh0Qm94LmgiCiAjaW5jbHVkZSAiTGF5b3V0SW50ZWdyYXRp
b25MaW5lTGF5b3V0LmgiCisjaW5jbHVkZSAiTGVnYWN5SW5saW5lVGV4dEJveC5oIgogI2luY2x1
ZGUgIlJlbmRlckJsb2NrLmgiCiAjaW5jbHVkZSAiUmVuZGVyQ2hpbGRJdGVyYXRvci5oIgogI2lu
Y2x1ZGUgIlJlbmRlckZyYWdtZW50ZWRGbG93LmgiCkBAIC0zMTgsNyArMzE4LDcgQEAgdm9pZCBS
ZW5kZXJJbmxpbmU6OmdlbmVyYXRlQ3VsbGVkTGluZUJveFJlY3RzKEdlbmVyYXRvckNvbnRleHQm
IGNvbnRleHQsIGNvbnN0IFIKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIGlmIChpczxS
ZW5kZXJUZXh0PihjdXJyZW50KSkgewogICAgICAgICAgICAgYXV0byYgY3VyclRleHQgPSBkb3du
Y2FzdDxSZW5kZXJUZXh0PihjdXJyZW50KTsKLSAgICAgICAgICAgIGZvciAoSW5saW5lVGV4dEJv
eCogY2hpbGRUZXh0ID0gY3VyclRleHQuZmlyc3RUZXh0Qm94KCk7IGNoaWxkVGV4dDsgY2hpbGRU
ZXh0ID0gY2hpbGRUZXh0LT5uZXh0VGV4dEJveCgpKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8q
IGNoaWxkVGV4dCA9IGN1cnJUZXh0LmZpcnN0VGV4dEJveCgpOyBjaGlsZFRleHQ7IGNoaWxkVGV4
dCA9IGNoaWxkVGV4dC0+bmV4dFRleHRCb3goKSkgewogICAgICAgICAgICAgICAgIGNvbnN0IExl
Z2FjeVJvb3RJbmxpbmVCb3gmIHJvb3RCb3ggPSBjaGlsZFRleHQtPnJvb3QoKTsKICAgICAgICAg
ICAgICAgICBjb25zdCBSZW5kZXJTdHlsZSYgY29udGFpbmVyU3R5bGUgPSByb290Qm94LmlzRmly
c3RMaW5lKCkgPyBjb250YWluZXItPmZpcnN0TGluZVN0eWxlKCkgOiBjb250YWluZXItPnN0eWxl
KCk7CiAgICAgICAgICAgICAgICAgaW50IGxvZ2ljYWxUb3AgPSByb290Qm94LmxvZ2ljYWxUb3Ao
KSArIChyb290Qm94LmxpbmVTdHlsZSgpLmZvbnRDYXNjYWRlKCkuZm9udE1ldHJpY3MoKS5hc2Nl
bnQoKSAtIGNvbnRhaW5lclN0eWxlLmZvbnRDYXNjYWRlKCkuZm9udE1ldHJpY3MoKS5hc2NlbnQo
KSk7CkBAIC03NjMsNyArNzYzLDcgQEAgTGF5b3V0UmVjdCBSZW5kZXJJbmxpbmU6OmN1bGxlZElu
bGluZVZpc3VhbE92ZXJmbG93Qm91bmRpbmdCb3goKSBjb25zdAogICAgICAgICAgICAgICAgIHJl
c3VsdC51bml0ZUlmTm9uWmVybyhyZW5kZXJJbmxpbmUubGluZXNWaXN1YWxPdmVyZmxvd0JvdW5k
aW5nQm94KCkpOwogICAgICAgICB9IGVsc2UgaWYgKGlzPFJlbmRlclRleHQ+KGN1cnJlbnQpKSB7
CiAgICAgICAgICAgICAvLyBGSVhNRTsgT3ZlcmZsb3cgZnJvbSB0ZXh0IGJveGVzIGlzIGxvc3Qu
IFdlIHdpbGwgbmVlZCB0byBjYWNoZSB0aGlzIGluZm9ybWF0aW9uIGluCi0gICAgICAgICAgICAv
LyBJbmxpbmVUZXh0Qm94ZXMuCisgICAgICAgICAgICAvLyBMZWdhY3lJbmxpbmVUZXh0Qm94ZXMu
CiAgICAgICAgICAgICBhdXRvJiByZW5kZXJUZXh0ID0gZG93bmNhc3Q8UmVuZGVyVGV4dD4oY3Vy
cmVudCk7CiAgICAgICAgICAgICByZXN1bHQudW5pdGVJZk5vblplcm8ocmVuZGVyVGV4dC5saW5l
c1Zpc3VhbE92ZXJmbG93Qm91bmRpbmdCb3goKSk7CiAgICAgICAgIH0KQEAgLTExMTksNyArMTEx
OSw3IEBAIHZvaWQgUmVuZGVySW5saW5lOjpkaXJ0eUxpbmVCb3hlcyhib29sIGZ1bGxMYXlvdXQp
CiAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZExpbmUtPnJvb3QoKS5tYXJrRGlydHkoKTsK
ICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGlzPFJlbmRlclRleHQ+KGN1cnJlbnQpKSB7CiAg
ICAgICAgICAgICAgICAgICAgIGF1dG8mIHJlbmRlclRleHQgPSBkb3duY2FzdDxSZW5kZXJUZXh0
PihjdXJyZW50KTsKLSAgICAgICAgICAgICAgICAgICAgZm9yIChJbmxpbmVUZXh0Qm94KiBjaGls
ZFRleHQgPSByZW5kZXJUZXh0LmZpcnN0VGV4dEJveCgpOyBjaGlsZFRleHQ7IGNoaWxkVGV4dCA9
IGNoaWxkVGV4dC0+bmV4dFRleHRCb3goKSkKKyAgICAgICAgICAgICAgICAgICAgZm9yIChhdXRv
KiBjaGlsZFRleHQgPSByZW5kZXJUZXh0LmZpcnN0VGV4dEJveCgpOyBjaGlsZFRleHQ7IGNoaWxk
VGV4dCA9IGNoaWxkVGV4dC0+bmV4dFRleHRCb3goKSkKICAgICAgICAgICAgICAgICAgICAgICAg
IGNoaWxkVGV4dC0+cm9vdCgpLm1hcmtEaXJ0eSgpOwogICAgICAgICAgICAgICAgIH0gZWxzZSBp
ZiAoaXM8UmVuZGVyTGluZUJyZWFrPihjdXJyZW50KSkgewogICAgICAgICAgICAgICAgICAgICBh
dXRvJiByZW5kZXJCUiA9IGRvd25jYXN0PFJlbmRlckxpbmVCcmVhaz4oY3VycmVudCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGluZUJveExpc3QuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpbmVCb3hMaXN0LmNwcAppbmRleCA0ZTJl
ZjE1NzliM2EuLjZiM2I3Y2JlNDM3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxpbmVCb3hMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGluZUJveExpc3QuY3BwCkBAIC0zMSw3ICszMSw3IEBACiAKICNpbmNsdWRlICJIaXRU
ZXN0UmVzdWx0LmgiCiAjaW5jbHVkZSAiSW5saW5lRWxlbWVudEJveC5oIgotI2luY2x1ZGUgIklu
bGluZVRleHRCb3guaCIKKyNpbmNsdWRlICJMZWdhY3lJbmxpbmVUZXh0Qm94LmgiCiAjaW5jbHVk
ZSAiTGVnYWN5Um9vdElubGluZUJveC5oIgogI2luY2x1ZGUgIlBhaW50SW5mby5oIgogI2luY2x1
ZGUgIlJlbmRlckJsb2NrRmxvdy5oIgpAQCAtMzM5LDcgKzMzOSw3IEBAIHZvaWQgUmVuZGVyTGlu
ZUJveExpc3Q6OmRpcnR5TGluZXNGcm9tQ2hhbmdlZENoaWxkKFJlbmRlckJveE1vZGVsT2JqZWN0
JiBjb250YWluCiAgICAgICAgICAgICBpZiAoYXV0byB3cmFwcGVyID0gZG93bmNhc3Q8UmVuZGVy
TGluZUJyZWFrPigqY3VycmVudCkuaW5saW5lQm94V3JhcHBlcigpKQogICAgICAgICAgICAgICAg
IGJveCA9ICZ3cmFwcGVyLT5yb290KCk7CiAgICAgICAgIH0gZWxzZSBpZiAoaXM8UmVuZGVyVGV4
dD4oKmN1cnJlbnQpKSB7Ci0gICAgICAgICAgICBpZiAoSW5saW5lVGV4dEJveCogdGV4dEJveCA9
IGRvd25jYXN0PFJlbmRlclRleHQ+KCpjdXJyZW50KS5sYXN0VGV4dEJveCgpKQorICAgICAgICAg
ICAgaWYgKExlZ2FjeUlubGluZVRleHRCb3gqIHRleHRCb3ggPSBkb3duY2FzdDxSZW5kZXJUZXh0
PigqY3VycmVudCkubGFzdFRleHRCb3goKSkKICAgICAgICAgICAgICAgICBib3ggPSAmdGV4dEJv
eC0+cm9vdCgpOwogICAgICAgICB9IGVsc2UgaWYgKGlzPFJlbmRlcklubGluZT4oKmN1cnJlbnQp
KSB7CiAgICAgICAgICAgICBMZWdhY3lJbmxpbmVCb3gqIGxhc3RTaWJsaW5nQm94ID0gZG93bmNh
c3Q8UmVuZGVySW5saW5lPigqY3VycmVudCkubGFzdExpbmVCb3hJbmNsdWRpbmdDdWxsaW5nKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAKaW5kZXggY2RlNDVkMmVjMjE0
Li4xMDdhY2U1MTgxMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAK
QEAgLTM3LDcgKzM3LDYgQEAKICNpbmNsdWRlICJIVE1MUGFyc2VySWRpb21zLmgiCiAjaW5jbHVk
ZSAiSHlwaGVuYXRpb24uaCIKICNpbmNsdWRlICJJbmxpbmVSdW5BbmRPZmZzZXQuaCIKLSNpbmNs
dWRlICJJbmxpbmVUZXh0Qm94LmgiCiAjaW5jbHVkZSAiTGF5b3V0SW50ZWdyYXRpb25MaW5lSXRl
cmF0b3IuaCIKICNpbmNsdWRlICJMYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQuaCIKICNpbmNs
dWRlICJMYXlvdXRJbnRlZ3JhdGlvblJ1bkl0ZXJhdG9yLmgiCkBAIC00ODAsNyArNDc5LDcgQEAg
c3RhdGljIEZsb2F0UmVjdCBsb2NhbFF1YWRGb3JUZXh0UnVuKGNvbnN0IExheW91dEludGVncmF0
aW9uOjpQYXRoVGV4dFJ1biYgcnVuLAogVmVjdG9yPEZsb2F0UXVhZD4gUmVuZGVyVGV4dDo6YWJz
b2x1dGVRdWFkc0ZvclJhbmdlKHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBlbmQsIGJvb2wgdXNl
U2VsZWN0aW9uSGVpZ2h0LCBib29sIGlnbm9yZUVtcHR5VGV4dFNlbGVjdGlvbnMsIGJvb2wqIHdh
c0ZpeGVkKSBjb25zdAogewogICAgIC8vIFdvcmsgYXJvdW5kIHNpZ25lZC91bnNpZ25lZCBpc3N1
ZXMuIFRoaXMgZnVuY3Rpb24gdGFrZXMgdW5zaWduZWRzLCBhbmQgaXMgb2Z0ZW4gcGFzc2VkIFVJ
TlRfTUFYCi0gICAgLy8gdG8gbWVhbiAiYWxsIHRoZSB3YXkgdG8gdGhlIGVuZCIuIElubGluZVRl
eHRCb3ggY29vcmRpbmF0ZXMgYXJlIHVuc2lnbmVkcywgc28gY2hhbmdpbmcgdGhpcworICAgIC8v
IHRvIG1lYW4gImFsbCB0aGUgd2F5IHRvIHRoZSBlbmQiLiBMZWdhY3lJbmxpbmVUZXh0Qm94IGNv
b3JkaW5hdGVzIGFyZSB1bnNpZ25lZHMsIHNvIGNoYW5naW5nIHRoaXMKICAgICAvLyBmdW5jdGlv
biB0byB0YWtlIGludHMgY2F1c2VzIHZhcmlvdXMgaW50ZXJuYWwgbWlzbWF0Y2hlcy4gQnV0IHNl
bGVjdGlvblJlY3QgdGFrZXMgaW50cywgYW5kCiAgICAgLy8gcGFzc2luZyBVSU5UX01BWCB0byBp
dCBjYXVzZXMgdHJvdWJsZS4gSWRlYWxseSB3ZSdkIGNoYW5nZSBzZWxlY3Rpb25SZWN0IHRvIHRh
a2UgdW5zaWduZWRzLCBidXQKICAgICAvLyB0aGF0IHdvdWxkIGNhdXNlIG1hbnkgcmlwcGxlIGVm
ZmVjdHMsIHNvIGZvciBub3cgd2UnbGwganVzdCBjbGFtcCBvdXIgdW5zaWduZWQgcGFyYW1ldGVy
cyB0byBJTlRfTUFYLgpAQCAtMTQ5MiwxMiArMTQ5MSwxMiBAQCB2b2lkIFJlbmRlclRleHQ6OmRl
bGV0ZUxpbmVCb3hlcygpCiAgICAgbV9saW5lQm94ZXMuZGVsZXRlQWxsKCk7CiB9CiAKLXN0ZDo6
dW5pcXVlX3B0cjxJbmxpbmVUZXh0Qm94PiBSZW5kZXJUZXh0OjpjcmVhdGVUZXh0Qm94KCkKK3N0
ZDo6dW5pcXVlX3B0cjxMZWdhY3lJbmxpbmVUZXh0Qm94PiBSZW5kZXJUZXh0OjpjcmVhdGVUZXh0
Qm94KCkKIHsKLSAgICByZXR1cm4gbWFrZVVuaXF1ZTxJbmxpbmVUZXh0Qm94PigqdGhpcyk7Cisg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8TGVnYWN5SW5saW5lVGV4dEJveD4oKnRoaXMpOwogfQogCi12
b2lkIFJlbmRlclRleHQ6OnBvc2l0aW9uTGluZUJveChJbmxpbmVUZXh0Qm94JiB0ZXh0Qm94KQor
dm9pZCBSZW5kZXJUZXh0Ojpwb3NpdGlvbkxpbmVCb3goTGVnYWN5SW5saW5lVGV4dEJveCYgdGV4
dEJveCkKIHsKICAgICBpZiAoIXRleHRCb3guaGFzVGV4dENvbnRlbnQoKSkKICAgICAgICAgcmV0
dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuaCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmgKaW5kZXggOWM3ZGFlODhjZWRi
Li41NGYxMDliODQ0NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuaApAQCAt
MzEsNyArMzEsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBGb250OwotY2xhc3Mg
SW5saW5lVGV4dEJveDsKK2NsYXNzIExlZ2FjeUlubGluZVRleHRCb3g7CiBzdHJ1Y3QgR2x5cGhP
dmVyZmxvdzsKIAogbmFtZXNwYWNlIExheW91dEludGVncmF0aW9uIHsKQEAgLTYxLDE0ICs2MSwx
NCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIFN0cmluZyBvcmlnaW5hbFRleHQoKSBjb25zdDsK
IAotICAgIHZvaWQgZXh0cmFjdFRleHRCb3goSW5saW5lVGV4dEJveCYgYm94KSB7IG1fbGluZUJv
eGVzLmV4dHJhY3QoYm94KTsgfQotICAgIHZvaWQgYXR0YWNoVGV4dEJveChJbmxpbmVUZXh0Qm94
JiBib3gpIHsgbV9saW5lQm94ZXMuYXR0YWNoKGJveCk7IH0KLSAgICB2b2lkIHJlbW92ZVRleHRC
b3goSW5saW5lVGV4dEJveCYgYm94KSB7IG1fbGluZUJveGVzLnJlbW92ZShib3gpOyB9CisgICAg
dm9pZCBleHRyYWN0VGV4dEJveChMZWdhY3lJbmxpbmVUZXh0Qm94JiBib3gpIHsgbV9saW5lQm94
ZXMuZXh0cmFjdChib3gpOyB9CisgICAgdm9pZCBhdHRhY2hUZXh0Qm94KExlZ2FjeUlubGluZVRl
eHRCb3gmIGJveCkgeyBtX2xpbmVCb3hlcy5hdHRhY2goYm94KTsgfQorICAgIHZvaWQgcmVtb3Zl
VGV4dEJveChMZWdhY3lJbmxpbmVUZXh0Qm94JiBib3gpIHsgbV9saW5lQm94ZXMucmVtb3ZlKGJv
eCk7IH0KIAogICAgIFN0cmluZ0ltcGwmIHRleHQoKSBjb25zdCB7IHJldHVybiAqbV90ZXh0Lmlt
cGwoKTsgfSAvLyBTaW5jZSBtX3RleHQgY2FuIG5ldmVyIGJlIG51bGwsIHJldHVybmluZyB0aGlz
IHR5cGUgbWVhbnMgY2FsbGVycyB3b24ndCBudWxsIGNoZWNrLgogICAgIFN0cmluZyB0ZXh0V2l0
aG91dENvbnZlcnRpbmdCYWNrc2xhc2hUb1llblN5bWJvbCgpIGNvbnN0OwogCi0gICAgSW5saW5l
VGV4dEJveCogY3JlYXRlSW5saW5lVGV4dEJveCgpIHsgcmV0dXJuIG1fbGluZUJveGVzLmNyZWF0
ZUFuZEFwcGVuZExpbmVCb3goKnRoaXMpOyB9CisgICAgTGVnYWN5SW5saW5lVGV4dEJveCogY3Jl
YXRlSW5saW5lVGV4dEJveCgpIHsgcmV0dXJuIG1fbGluZUJveGVzLmNyZWF0ZUFuZEFwcGVuZExp
bmVCb3goKnRoaXMpOyB9CiAgICAgdm9pZCBkaXJ0eUxpbmVCb3hlcyhib29sIGZ1bGxMYXlvdXQp
OwogICAgIHZvaWQgZGVsZXRlTGluZUJveGVzKCk7CiAKQEAgLTg4LDcgKzg4LDcgQEAgcHVibGlj
OgogICAgIFVDaGFyIGNoYXJhY3RlckF0KHVuc2lnbmVkKSBjb25zdDsKICAgICB1bnNpZ25lZCBs
ZW5ndGgoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0ZXh0KCkubGVuZ3RoKCk7IH0KIAotICAgIHZv
aWQgcG9zaXRpb25MaW5lQm94KElubGluZVRleHRCb3gmKTsKKyAgICB2b2lkIHBvc2l0aW9uTGlu
ZUJveChMZWdhY3lJbmxpbmVUZXh0Qm94Jik7CiAKICAgICB2aXJ0dWFsIGZsb2F0IHdpZHRoKHVu
c2lnbmVkIGZyb20sIHVuc2lnbmVkIGxlbmd0aCwgY29uc3QgRm9udENhc2NhZGUmLCBmbG9hdCB4
UG9zLCBIYXNoU2V0PGNvbnN0IEZvbnQqPiogZmFsbGJhY2tGb250cyA9IG51bGxwdHIsIEdseXBo
T3ZlcmZsb3cqID0gbnVsbHB0cikgY29uc3Q7CiAgICAgdmlydHVhbCBmbG9hdCB3aWR0aCh1bnNp
Z25lZCBmcm9tLCB1bnNpZ25lZCBsZW5ndGgsIGZsb2F0IHhQb3MsIGJvb2wgZmlyc3RMaW5lID0g
ZmFsc2UsIEhhc2hTZXQ8Y29uc3QgRm9udCo+KiBmYWxsYmFja0ZvbnRzID0gbnVsbHB0ciwgR2x5
cGhPdmVyZmxvdyogPSBudWxscHRyKSBjb25zdDsKQEAgLTEzMSw4ICsxMzEsOCBAQCBwdWJsaWM6
CiAgICAgTGF5b3V0VW5pdCBtYXJnaW5MZWZ0KCkgY29uc3QgeyByZXR1cm4gbWluaW11bVZhbHVl
Rm9yTGVuZ3RoKHN0eWxlKCkubWFyZ2luTGVmdCgpLCAwKTsgfQogICAgIExheW91dFVuaXQgbWFy
Z2luUmlnaHQoKSBjb25zdCB7IHJldHVybiBtaW5pbXVtVmFsdWVGb3JMZW5ndGgoc3R5bGUoKS5t
YXJnaW5SaWdodCgpLCAwKTsgfQogCi0gICAgSW5saW5lVGV4dEJveCogZmlyc3RUZXh0Qm94KCkg
Y29uc3QgeyByZXR1cm4gbV9saW5lQm94ZXMuZmlyc3QoKTsgfQotICAgIElubGluZVRleHRCb3gq
IGxhc3RUZXh0Qm94KCkgY29uc3QgeyByZXR1cm4gbV9saW5lQm94ZXMubGFzdCgpOyB9CisgICAg
TGVnYWN5SW5saW5lVGV4dEJveCogZmlyc3RUZXh0Qm94KCkgY29uc3QgeyByZXR1cm4gbV9saW5l
Qm94ZXMuZmlyc3QoKTsgfQorICAgIExlZ2FjeUlubGluZVRleHRCb3gqIGxhc3RUZXh0Qm94KCkg
Y29uc3QgeyByZXR1cm4gbV9saW5lQm94ZXMubGFzdCgpOyB9CiAKICAgICBpbnQgY2FyZXRNaW5P
ZmZzZXQoKSBjb25zdCBmaW5hbDsKICAgICBpbnQgY2FyZXRNYXhPZmZzZXQoKSBjb25zdCBmaW5h
bDsKQEAgLTE1MCw3ICsxNTAsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIG1vbWVudGFyaWx5UmV2
ZWFsTGFzdFR5cGVkQ2hhcmFjdGVyKHVuc2lnbmVkIG9mZnNldEFmdGVyTGFzdFR5cGVkQ2hhcmFj
dGVyKTsKIAotICAgIElubGluZVRleHRCb3gqIGZpbmROZXh0SW5saW5lVGV4dEJveChpbnQgb2Zm
c2V0LCBpbnQmIHBvcykgY29uc3QgeyByZXR1cm4gbV9saW5lQm94ZXMuZmluZE5leHQob2Zmc2V0
LCBwb3MpOyB9CisgICAgTGVnYWN5SW5saW5lVGV4dEJveCogZmluZE5leHRJbmxpbmVUZXh0Qm94
KGludCBvZmZzZXQsIGludCYgcG9zKSBjb25zdCB7IHJldHVybiBtX2xpbmVCb3hlcy5maW5kTmV4
dChvZmZzZXQsIHBvcyk7IH0KIAogICAgIGJvb2wgaXNBbGxDb2xsYXBzaWJsZVdoaXRlc3BhY2Uo
KSBjb25zdDsKIApAQCAtMTYwLDcgKzE2MCw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9p
ZCBzdHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRT
dHlsZSk7CiAKLSAgICB2aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0cjxJbmxpbmVUZXh0Qm94PiBjcmVh
dGVUZXh0Qm94KCk7CisgICAgdmlydHVhbCBzdGQ6OnVuaXF1ZV9wdHI8TGVnYWN5SW5saW5lVGV4
dEJveD4gY3JlYXRlVGV4dEJveCgpOwogCiAjaWYgRU5BQkxFKFRFWFRfQVVUT1NJWklORykKICAg
ICBmbG9hdCBjYW5kaWRhdGVDb21wdXRlZFRleHRTaXplKCkgY29uc3QgeyByZXR1cm4gbV9jYW5k
aWRhdGVDb21wdXRlZFRleHRTaXplOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGV4dExpbmVCb3hlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGV4dExpbmVCb3hlcy5jcHAKaW5kZXggYWJiNDNlMzBkMjRmLi4zOTg3YjgxOTYzODMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0TGluZUJveGVz
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dExpbmVCb3hlcy5j
cHAKQEAgLTI3LDcgKzI3LDcgQEAKICNpbmNsdWRlICJSZW5kZXJUZXh0TGluZUJveGVzLmgiCiAK
ICNpbmNsdWRlICJFbGxpcHNpc0JveC5oIgotI2luY2x1ZGUgIklubGluZVRleHRCb3guaCIKKyNp
bmNsdWRlICJMZWdhY3lJbmxpbmVUZXh0Qm94LmgiCiAjaW5jbHVkZSAiTGVnYWN5Um9vdElubGlu
ZUJveC5oIgogI2luY2x1ZGUgIlJlbmRlckJsb2NrLmgiCiAjaW5jbHVkZSAiUmVuZGVyU3R5bGUu
aCIKQEAgLTQyLDcgKzQyLDcgQEAgUmVuZGVyVGV4dExpbmVCb3hlczo6UmVuZGVyVGV4dExpbmVC
b3hlcygpCiB7CiB9CiAKLUlubGluZVRleHRCb3gqIFJlbmRlclRleHRMaW5lQm94ZXM6OmNyZWF0
ZUFuZEFwcGVuZExpbmVCb3goUmVuZGVyVGV4dCYgcmVuZGVyVGV4dCkKK0xlZ2FjeUlubGluZVRl
eHRCb3gqIFJlbmRlclRleHRMaW5lQm94ZXM6OmNyZWF0ZUFuZEFwcGVuZExpbmVCb3goUmVuZGVy
VGV4dCYgcmVuZGVyVGV4dCkKIHsKICAgICBhdXRvIHRleHRCb3ggPSByZW5kZXJUZXh0LmNyZWF0
ZVRleHRCb3goKTsKICAgICBpZiAoIW1fZmlyc3QpIHsKQEAgLTU2LDcgKzU2LDcgQEAgSW5saW5l
VGV4dEJveCogUmVuZGVyVGV4dExpbmVCb3hlczo6Y3JlYXRlQW5kQXBwZW5kTGluZUJveChSZW5k
ZXJUZXh0JiByZW5kZXJUZXgKICAgICByZXR1cm4gdGV4dEJveC5yZWxlYXNlKCk7CiB9CiAKLXZv
aWQgUmVuZGVyVGV4dExpbmVCb3hlczo6ZXh0cmFjdChJbmxpbmVUZXh0Qm94JiBib3gpCit2b2lk
IFJlbmRlclRleHRMaW5lQm94ZXM6OmV4dHJhY3QoTGVnYWN5SW5saW5lVGV4dEJveCYgYm94KQog
ewogICAgIGNoZWNrQ29uc2lzdGVuY3koKTsKIApAQCAtNzIsNyArNzIsNyBAQCB2b2lkIFJlbmRl
clRleHRMaW5lQm94ZXM6OmV4dHJhY3QoSW5saW5lVGV4dEJveCYgYm94KQogICAgIGNoZWNrQ29u
c2lzdGVuY3koKTsKIH0KIAotdm9pZCBSZW5kZXJUZXh0TGluZUJveGVzOjphdHRhY2goSW5saW5l
VGV4dEJveCYgYm94KQordm9pZCBSZW5kZXJUZXh0TGluZUJveGVzOjphdHRhY2goTGVnYWN5SW5s
aW5lVGV4dEJveCYgYm94KQogewogICAgIGNoZWNrQ29uc2lzdGVuY3koKTsKIApAQCAtODEsNyAr
ODEsNyBAQCB2b2lkIFJlbmRlclRleHRMaW5lQm94ZXM6OmF0dGFjaChJbmxpbmVUZXh0Qm94JiBi
b3gpCiAgICAgICAgIGJveC5zZXRQcmV2aW91c1RleHRCb3gobV9sYXN0KTsKICAgICB9IGVsc2UK
ICAgICAgICAgbV9maXJzdCA9ICZib3g7Ci0gICAgSW5saW5lVGV4dEJveCogbGFzdCA9IG51bGxw
dHI7CisgICAgTGVnYWN5SW5saW5lVGV4dEJveCogbGFzdCA9IG51bGxwdHI7CiAgICAgZm9yIChh
dXRvKiBjdXJyZW50ID0gJmJveDsgY3VycmVudDsgY3VycmVudCA9IGN1cnJlbnQtPm5leHRUZXh0
Qm94KCkpIHsKICAgICAgICAgY3VycmVudC0+c2V0RXh0cmFjdGVkKGZhbHNlKTsKICAgICAgICAg
bGFzdCA9IGN1cnJlbnQ7CkBAIC05MSw3ICs5MSw3IEBAIHZvaWQgUmVuZGVyVGV4dExpbmVCb3hl
czo6YXR0YWNoKElubGluZVRleHRCb3gmIGJveCkKICAgICBjaGVja0NvbnNpc3RlbmN5KCk7CiB9
CiAKLXZvaWQgUmVuZGVyVGV4dExpbmVCb3hlczo6cmVtb3ZlKElubGluZVRleHRCb3gmIGJveCkK
K3ZvaWQgUmVuZGVyVGV4dExpbmVCb3hlczo6cmVtb3ZlKExlZ2FjeUlubGluZVRleHRCb3gmIGJv
eCkKIHsKICAgICBjaGVja0NvbnNpc3RlbmN5KCk7CiAKQEAgLTEyMiw3ICsxMjIsNyBAQCB2b2lk
IFJlbmRlclRleHRMaW5lQm94ZXM6OmRlbGV0ZUFsbCgpCiB7CiAgICAgaWYgKCFtX2ZpcnN0KQog
ICAgICAgICByZXR1cm47Ci0gICAgSW5saW5lVGV4dEJveCogbmV4dDsKKyAgICBMZWdhY3lJbmxp
bmVUZXh0Qm94KiBuZXh0OwogICAgIGZvciAoYXV0byogY3VycmVudCA9IG1fZmlyc3Q7IGN1cnJl
bnQ7IGN1cnJlbnQgPSBuZXh0KSB7CiAgICAgICAgIG5leHQgPSBjdXJyZW50LT5uZXh0VGV4dEJv
eCgpOwogICAgICAgICBkZWxldGUgY3VycmVudDsKQEAgLTEzMSw3ICsxMzEsNyBAQCB2b2lkIFJl
bmRlclRleHRMaW5lQm94ZXM6OmRlbGV0ZUFsbCgpCiAgICAgbV9sYXN0ID0gbnVsbHB0cjsKIH0K
IAotSW5saW5lVGV4dEJveCogUmVuZGVyVGV4dExpbmVCb3hlczo6ZmluZE5leHQoaW50IG9mZnNl
dCwgaW50JiBwb3NpdGlvbikgY29uc3QKK0xlZ2FjeUlubGluZVRleHRCb3gqIFJlbmRlclRleHRM
aW5lQm94ZXM6OmZpbmROZXh0KGludCBvZmZzZXQsIGludCYgcG9zaXRpb24pIGNvbnN0CiB7CiAg
ICAgaWYgKCFtX2ZpcnN0KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTI1Niw3ICsyNTYs
NyBAQCBpbmxpbmUgdm9pZCBSZW5kZXJUZXh0TGluZUJveGVzOjpjaGVja0NvbnNpc3RlbmN5KCkg
Y29uc3QKIHsKICNpZiBBU1NFUlRfRU5BQkxFRAogI2lmZGVmIENIRUNLX0NPTlNJU1RFTkNZCi0g
ICAgY29uc3QgSW5saW5lVGV4dEJveCogcHJldiA9IG51bGxwdHI7CisgICAgY29uc3QgTGVnYWN5
SW5saW5lVGV4dEJveCogcHJldiA9IG51bGxwdHI7CiAgICAgZm9yIChhdXRvKiBjaGlsZCA9IG1f
Zmlyc3Q7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0VGV4dEJveCgpKSB7CiAgICAgICAgIEFT
U0VSVChjaGlsZC0+cmVuZGVyZXIoKSA9PSB0aGlzKTsKICAgICAgICAgQVNTRVJUKGNoaWxkLT5w
cmV2VGV4dEJveCgpID09IHByZXYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRleHRMaW5lQm94ZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUZXh0TGluZUJveGVzLmgKaW5kZXggNzRkMWUwNzNjYmMxLi4zMzMxZWNiY2FiNTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0TGluZUJveGVzLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRMaW5lQm94ZXMuaApAQCAtMzAs
NyArMzAsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIElubGluZVRleHRCb3g7
CitjbGFzcyBMZWdhY3lJbmxpbmVUZXh0Qm94OwogY2xhc3MgUmVuZGVyU3R5bGU7CiBjbGFzcyBS
ZW5kZXJUZXh0OwogY2xhc3MgVmlzaWJsZVBvc2l0aW9uOwpAQCAtMzksMTQgKzM5LDE0IEBAIGNs
YXNzIFJlbmRlclRleHRMaW5lQm94ZXMgewogcHVibGljOgogICAgIFJlbmRlclRleHRMaW5lQm94
ZXMoKTsKIAotICAgIElubGluZVRleHRCb3gqIGZpcnN0KCkgY29uc3QgeyByZXR1cm4gbV9maXJz
dDsgfQotICAgIElubGluZVRleHRCb3gqIGxhc3QoKSBjb25zdCB7IHJldHVybiBtX2xhc3Q7IH0K
KyAgICBMZWdhY3lJbmxpbmVUZXh0Qm94KiBmaXJzdCgpIGNvbnN0IHsgcmV0dXJuIG1fZmlyc3Q7
IH0KKyAgICBMZWdhY3lJbmxpbmVUZXh0Qm94KiBsYXN0KCkgY29uc3QgeyByZXR1cm4gbV9sYXN0
OyB9CiAKLSAgICBJbmxpbmVUZXh0Qm94KiBjcmVhdGVBbmRBcHBlbmRMaW5lQm94KFJlbmRlclRl
eHQmKTsKKyAgICBMZWdhY3lJbmxpbmVUZXh0Qm94KiBjcmVhdGVBbmRBcHBlbmRMaW5lQm94KFJl
bmRlclRleHQmKTsKIAotICAgIHZvaWQgZXh0cmFjdChJbmxpbmVUZXh0Qm94Jik7Ci0gICAgdm9p
ZCBhdHRhY2goSW5saW5lVGV4dEJveCYpOwotICAgIHZvaWQgcmVtb3ZlKElubGluZVRleHRCb3gm
KTsKKyAgICB2b2lkIGV4dHJhY3QoTGVnYWN5SW5saW5lVGV4dEJveCYpOworICAgIHZvaWQgYXR0
YWNoKExlZ2FjeUlubGluZVRleHRCb3gmKTsKKyAgICB2b2lkIHJlbW92ZShMZWdhY3lJbmxpbmVU
ZXh0Qm94Jik7CiAKICAgICB2b2lkIHJlbW92ZUFsbEZyb21QYXJlbnQoUmVuZGVyVGV4dCYpOwog
ICAgIHZvaWQgZGVsZXRlQWxsKCk7CkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IGRpcnR5QWxsKCk7CiAgICAgYm9vbCBkaXJ0eVJhbmdlKFJlbmRlclRleHQmLCB1bnNpZ25lZCBz
dGFydCwgdW5zaWduZWQgZW5kLCBpbnQgbGVuZ3RoRGVsdGEpOwogCi0gICAgSW5saW5lVGV4dEJv
eCogZmluZE5leHQoaW50IG9mZnNldCwgaW50JiBwb3NpdGlvbikgY29uc3Q7CisgICAgTGVnYWN5
SW5saW5lVGV4dEJveCogZmluZE5leHQoaW50IG9mZnNldCwgaW50JiBwb3NpdGlvbikgY29uc3Q7
CiAKICAgICBMYXlvdXRSZWN0IHZpc3VhbE92ZXJmbG93Qm91bmRpbmdCb3goY29uc3QgUmVuZGVy
VGV4dCYpIGNvbnN0OwogCkBAIC02OSw4ICs2OSw4IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAg
dm9pZCBjaGVja0NvbnNpc3RlbmN5KCkgY29uc3Q7CiAKLSAgICBJbmxpbmVUZXh0Qm94KiBtX2Zp
cnN0OwotICAgIElubGluZVRleHRCb3gqIG1fbGFzdDsKKyAgICBMZWdhY3lJbmxpbmVUZXh0Qm94
KiBtX2ZpcnN0OworICAgIExlZ2FjeUlubGluZVRleHRCb3gqIG1fbGFzdDsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUcmVlQXNUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUcmVl
QXNUZXh0LmNwcAppbmRleCA4MTcwMmY0NWQ0YzEuLjMwMTcyYTljODJhNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmNwcApAQCAtMzYsOCArMzYsOCBA
QAogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkhUTUxTcGFuRWxlbWVudC5oIgog
I2luY2x1ZGUgIklubGluZUl0ZXJhdG9yLmgiCi0jaW5jbHVkZSAiSW5saW5lVGV4dEJveC5oIgog
I2luY2x1ZGUgIkxheW91dEludGVncmF0aW9uUnVuSXRlcmF0b3IuaCIKKyNpbmNsdWRlICJMZWdh
Y3lJbmxpbmVUZXh0Qm94LmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlByaW50
Q29udGV4dC5oIgogI2luY2x1ZGUgIlBzZXVkb0VsZW1lbnQuaCIKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0RGVjb3JhdGlvblBhaW50ZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9UZXh0RGVjb3JhdGlvblBhaW50ZXIuaAppbmRleCAyNjJkZWRjN2E1YmYu
Ljg3ZTIwNjZmODgyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRE
ZWNvcmF0aW9uUGFpbnRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0RGVj
b3JhdGlvblBhaW50ZXIuaApAQCAtMzMsNyArMzMsNyBAQCBjbGFzcyBGaWx0ZXJPcGVyYXRpb25z
OwogY2xhc3MgRm9udENhc2NhZGU7CiBjbGFzcyBGbG9hdFJlY3Q7CiBjbGFzcyBHcmFwaGljc0Nv
bnRleHQ7Ci1jbGFzcyBJbmxpbmVUZXh0Qm94OworY2xhc3MgTGVnYWN5SW5saW5lVGV4dEJveDsK
IGNsYXNzIFJlbmRlck9iamVjdDsKIGNsYXNzIFJlbmRlclN0eWxlOwogY2xhc3MgUmVuZGVyVGV4
dDsKQEAgLTQ1LDcgKzQ1LDcgQEAgcHVibGljOgogICAgIHN0cnVjdCBTdHlsZXM7CiAgICAgVGV4
dERlY29yYXRpb25QYWludGVyKEdyYXBoaWNzQ29udGV4dCYsIE9wdGlvblNldDxUZXh0RGVjb3Jh
dGlvbj4gZGVjb3JhdGlvbnMsIGNvbnN0IFJlbmRlclRleHQmLCBib29sIGlzRmlyc3RMaW5lLCBj
b25zdCBGb250Q2FzY2FkZSYsIHN0ZDo6b3B0aW9uYWw8U3R5bGVzPiA9IHN0ZDo6bnVsbG9wdCk7
CiAgICAgCi0gICAgdm9pZCBzZXRJbmxpbmVUZXh0Qm94KGNvbnN0IElubGluZVRleHRCb3gqIGlu
bGluZVRleHRCb3gpIHsgbV9pbmxpbmVUZXh0Qm94ID0gaW5saW5lVGV4dEJveDsgfQorICAgIHZv
aWQgc2V0SW5saW5lVGV4dEJveChjb25zdCBMZWdhY3lJbmxpbmVUZXh0Qm94KiBpbmxpbmVUZXh0
Qm94KSB7IG1faW5saW5lVGV4dEJveCA9IGlubGluZVRleHRCb3g7IH0KICAgICB2b2lkIHNldElz
SG9yaXpvbnRhbChib29sIGlzSG9yaXpvbnRhbCkgeyBtX2lzSG9yaXpvbnRhbCA9IGlzSG9yaXpv
bnRhbDsgfQogICAgIHZvaWQgc2V0V2lkdGgoZmxvYXQgd2lkdGgpIHsgbV93aWR0aCA9IHdpZHRo
OyB9CiAgICAgdm9pZCBzZXRUZXh0U2hhZG93KGNvbnN0IFNoYWRvd0RhdGEqIHRleHRTaGFkb3cp
IHsgbV9zaGFkb3cgPSB0ZXh0U2hhZG93OyB9CkBAIC03OCw3ICs3OCw3IEBAIHByaXZhdGU6CiAg
ICAgYm9vbCBtX2lzSG9yaXpvbnRhbCB7IHRydWUgfTsKICAgICBjb25zdCBTaGFkb3dEYXRhKiBt
X3NoYWRvdyB7IG51bGxwdHIgfTsKICAgICBjb25zdCBGaWx0ZXJPcGVyYXRpb25zKiBtX3NoYWRv
d0NvbG9yRmlsdGVyIHsgbnVsbHB0ciB9OwotICAgIGNvbnN0IElubGluZVRleHRCb3gqIG1faW5s
aW5lVGV4dEJveCB7IG51bGxwdHIgfTsKKyAgICBjb25zdCBMZWdhY3lJbmxpbmVUZXh0Qm94KiBt
X2lubGluZVRleHRCb3ggeyBudWxscHRyIH07CiAgICAgY29uc3QgRm9udENhc2NhZGUmIG1fZm9u
dDsKIAogICAgIFN0eWxlcyBtX3N0eWxlczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9UZXh0UGFpbnRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dFBh
aW50ZXIuY3BwCmluZGV4IGJiYTExYjNmNDQ0MC4uNzQ4NTJhNmIwZDI1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dFBhaW50ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9UZXh0UGFpbnRlci5jcHAKQEAgLTI3LDggKzI3LDggQEAKICNpbmNsdWRl
ICJGaWx0ZXJPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5j
bHVkZSAiSFRNTFBhcnNlcklkaW9tcy5oIgotI2luY2x1ZGUgIklubGluZVRleHRCb3guaCIKICNp
bmNsdWRlICJMYXlvdXRJbnRlZ3JhdGlvblJ1bi5oIgorI2luY2x1ZGUgIkxlZ2FjeUlubGluZVRl
eHRCb3guaCIKICNpbmNsdWRlICJSZW5kZXJDb21iaW5lVGV4dC5oIgogI2luY2x1ZGUgIlJlbmRl
ckxheWVyLmgiCiAjaW5jbHVkZSAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIgpAQCAtMjI3LDcg
KzIyNyw3IEBAIHZvaWQgVGV4dFBhaW50ZXI6OnBhaW50UmFuZ2UoY29uc3QgVGV4dFJ1biYgdGV4
dFJ1biwgY29uc3QgRmxvYXRSZWN0JiBib3hSZWN0LCBjCiAKIHZvaWQgVGV4dFBhaW50ZXI6OmNs
ZWFyR2x5cGhEaXNwbGF5TGlzdHMoKQogewotICAgIEdseXBoRGlzcGxheUxpc3RDYWNoZTxJbmxp
bmVUZXh0Qm94Pjo6c2luZ2xldG9uKCkuY2xlYXIoKTsKKyAgICBHbHlwaERpc3BsYXlMaXN0Q2Fj
aGU8TGVnYWN5SW5saW5lVGV4dEJveD46OnNpbmdsZXRvbigpLmNsZWFyKCk7CiAjaWYgRU5BQkxF
KExBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCiAgICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVy
ZXM6OnNoYXJlZEZlYXR1cmVzKCkubGF5b3V0Rm9ybWF0dGluZ0NvbnRleHRJbnRlZ3JhdGlvbkVu
YWJsZWQoKSkKICAgICAgICAgR2x5cGhEaXNwbGF5TGlzdENhY2hlPExheW91dEludGVncmF0aW9u
OjpSdW4+OjpzaW5nbGV0b24oKS5jbGVhcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmVUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lVGV4dC5jcHAKaW5kZXggZmRmYjk1OGU3NTg0Li45
N2Y1NWIxMmZjYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHSW5saW5lVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdJbmxpbmVUZXh0LmNwcApAQCAtMTEyLDcgKzExMiw3IEBAIHZvaWQgUmVuZGVyU1ZH
SW5saW5lVGV4dDo6c3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlIGRpZmYsIGNvbnN0IFJl
bmRlclN0eWxlCiAgICAgICAgIHRleHRBbmNlc3Rvci0+c3VidHJlZVN0eWxlRGlkQ2hhbmdlKHRo
aXMpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8SW5saW5lVGV4dEJveD4gUmVuZGVyU1ZHSW5saW5l
VGV4dDo6Y3JlYXRlVGV4dEJveCgpCitzdGQ6OnVuaXF1ZV9wdHI8TGVnYWN5SW5saW5lVGV4dEJv
eD4gUmVuZGVyU1ZHSW5saW5lVGV4dDo6Y3JlYXRlVGV4dEJveCgpCiB7CiAgICAgYXV0byBib3gg
PSBtYWtlVW5pcXVlPFNWR0lubGluZVRleHRCb3g+KCp0aGlzKTsKICAgICBib3gtPnNldEhhc1Zp
cnR1YWxMb2dpY2FsSGVpZ2h0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR0lubGluZVRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHSW5saW5lVGV4dC5oCmluZGV4IDI4ZTk1YTBiYjRiZC4uZTAzYjc0N2IwNzlk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGlu
ZVRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGlu
ZVRleHQuaApAQCAtNjMsNyArNjMsNyBAQCBwcml2YXRlOgogCiAgICAgVmlzaWJsZVBvc2l0aW9u
IHBvc2l0aW9uRm9yUG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmLCBjb25zdCBSZW5kZXJGcmFnbWVu
dENvbnRhaW5lciopIG92ZXJyaWRlOwogICAgIEludFJlY3QgbGluZXNCb3VuZGluZ0JveCgpIGNv
bnN0IG92ZXJyaWRlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJbmxpbmVUZXh0Qm94PiBjcmVhdGVU
ZXh0Qm94KCkgb3ZlcnJpZGU7CisgICAgc3RkOjp1bmlxdWVfcHRyPExlZ2FjeUlubGluZVRleHRC
b3g+IGNyZWF0ZVRleHRCb3goKSBvdmVycmlkZTsKIAogICAgIGZsb2F0IG1fc2NhbGluZ0ZhY3Rv
cjsKICAgICBGb250Q2FzY2FkZSBtX3NjYWxlZEZvbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRleHRCb3guY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9TVkdJbmxpbmVUZXh0Qm94LmNwcAppbmRleCAzZDUwYjA5MzYxZWQuLmU1
Njk5MWY3MGQwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdJ
bmxpbmVUZXh0Qm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR0lu
bGluZVRleHRCb3guY3BwCkBAIC00Miw3ICs0Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
V1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFNWR0lubGluZVRleHRCb3gpOwogCi1zdHJ1Y3Qg
RXhwZWN0ZWRTVkdJbmxpbmVUZXh0Qm94U2l6ZSA6IHB1YmxpYyBJbmxpbmVUZXh0Qm94IHsKK3N0
cnVjdCBFeHBlY3RlZFNWR0lubGluZVRleHRCb3hTaXplIDogcHVibGljIExlZ2FjeUlubGluZVRl
eHRCb3ggewogICAgIGZsb2F0IGZsb2F0MTsKICAgICB1aW50MzJfdCBiaXRmaWVsZHMgOiA1Owog
ICAgIHZvaWQqIHBvaW50ZXI7CkBAIC01Miw3ICs1Miw3IEBAIHN0cnVjdCBFeHBlY3RlZFNWR0lu
bGluZVRleHRCb3hTaXplIDogcHVibGljIElubGluZVRleHRCb3ggewogQ09NUElMRV9BU1NFUlQo
c2l6ZW9mKFNWR0lubGluZVRleHRCb3gpID09IHNpemVvZihFeHBlY3RlZFNWR0lubGluZVRleHRC
b3hTaXplKSwgU1ZHSW5saW5lVGV4dEJveF9pc19ub3Rfb2ZfZXhwZWN0ZWRfc2l6ZSk7CiAKIFNW
R0lubGluZVRleHRCb3g6OlNWR0lubGluZVRleHRCb3goUmVuZGVyU1ZHSW5saW5lVGV4dCYgcmVu
ZGVyZXIpCi0gICAgOiBJbmxpbmVUZXh0Qm94KHJlbmRlcmVyKQorICAgIDogTGVnYWN5SW5saW5l
VGV4dEJveChyZW5kZXJlcikKICAgICAsIG1fcGFpbnRpbmdSZXNvdXJjZU1vZGUoT3B0aW9uU2V0
PFJlbmRlclNWR1Jlc291cmNlTW9kZT4oKS50b1JhdygpKQogICAgICwgbV9zdGFydHNOZXdUZXh0
Q2h1bmsoZmFsc2UpCiB7CkBAIC02MCw3ICs2MCw3IEBAIFNWR0lubGluZVRleHRCb3g6OlNWR0lu
bGluZVRleHRCb3goUmVuZGVyU1ZHSW5saW5lVGV4dCYgcmVuZGVyZXIpCiAKIHZvaWQgU1ZHSW5s
aW5lVGV4dEJveDo6ZGlydHlPd25MaW5lQm94ZXMoKQogewotICAgIElubGluZVRleHRCb3g6OmRp
cnR5TGluZUJveGVzKCk7CisgICAgTGVnYWN5SW5saW5lVGV4dEJveDo6ZGlydHlMaW5lQm94ZXMo
KTsKIAogICAgIC8vIENsZWFyIHRoZSBub3cgc3RhbGUgdGV4dCBmcmFnbWVudHMKICAgICBjbGVh
clRleHRGcmFnbWVudHMoKTsKQEAgLTcyLDcgKzcyLDcgQEAgdm9pZCBTVkdJbmxpbmVUZXh0Qm94
OjpkaXJ0eUxpbmVCb3hlcygpCiAKICAgICAvLyBBbmQgY2xlYXIgYW55IGZvbGxvd2luZyB0ZXh0
IGZyYWdtZW50cyBhcyB0aGUgdGV4dCBvbiB3aGljaCB0aGV5CiAgICAgLy8gZGVwZW5kIG1heSBu
b3cgbm8gbG9uZ2VyIGV4aXN0LCBvciBnbHlwaCBwb3NpdGlvbnMgbWF5IGJlIHdyb25nCi0gICAg
Zm9yIChJbmxpbmVUZXh0Qm94KiBuZXh0Qm94ID0gbmV4dFRleHRCb3goKTsgbmV4dEJveDsgbmV4
dEJveCA9IG5leHRCb3gtPm5leHRUZXh0Qm94KCkpCisgICAgZm9yIChhdXRvKiBuZXh0Qm94ID0g
bmV4dFRleHRCb3goKTsgbmV4dEJveDsgbmV4dEJveCA9IG5leHRCb3gtPm5leHRUZXh0Qm94KCkp
CiAgICAgICAgIG5leHRCb3gtPmRpcnR5T3duTGluZUJveGVzKCk7CiB9CiAKQEAgLTg2LDcgKzg2
LDcgQEAgaW50IFNWR0lubGluZVRleHRCb3g6Om9mZnNldEZvclBvc2l0aW9uKGZsb2F0LCBib29s
KSBjb25zdAogCiBpbnQgU1ZHSW5saW5lVGV4dEJveDo6b2Zmc2V0Rm9yUG9zaXRpb25JbkZyYWdt
ZW50KGNvbnN0IFNWR1RleHRGcmFnbWVudCYgZnJhZ21lbnQsIGZsb2F0IHBvc2l0aW9uLCBib29s
IGluY2x1ZGVQYXJ0aWFsR2x5cGhzKSBjb25zdAogewotICAgZmxvYXQgc2NhbGluZ0ZhY3RvciA9
IHJlbmRlcmVyKCkuc2NhbGluZ0ZhY3RvcigpOworICAgIGZsb2F0IHNjYWxpbmdGYWN0b3IgPSBy
ZW5kZXJlcigpLnNjYWxpbmdGYWN0b3IoKTsKICAgICBBU1NFUlQoc2NhbGluZ0ZhY3Rvcik7CiAK
ICAgICBUZXh0UnVuIHRleHRSdW4gPSBjb25zdHJ1Y3RUZXh0UnVuKHJlbmRlcmVyKCkuc3R5bGUo
KSwgZnJhZ21lbnQpOwpAQCAtMjQwLDcgKzI0MCw3IEBAIHZvaWQgU1ZHSW5saW5lVGV4dEJveDo6
cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNl
CiAgICAgaWYgKHJlbmRlcmVyKCkuc3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVmlzaWJpbGl0eTo6
VmlzaWJsZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgLy8gTm90ZTogV2UncmUgZXhwbGljaXRs
eSBub3Qgc3VwcG9ydGluZyBjb21wb3NpdGlvbiAmIGN1c3RvbSB1bmRlcmxpbmVzIGFuZCBjdXN0
b20gaGlnaGxpZ2h0ZXJzIC0gdW5saWtlIElubGluZVRleHRCb3guCisgICAgLy8gTm90ZTogV2Un
cmUgZXhwbGljaXRseSBub3Qgc3VwcG9ydGluZyBjb21wb3NpdGlvbiAmIGN1c3RvbSB1bmRlcmxp
bmVzIGFuZCBjdXN0b20gaGlnaGxpZ2h0ZXJzIC0gdW5saWtlIExlZ2FjeUlubGluZVRleHRCb3gu
CiAgICAgLy8gSWYgd2UgZXZlciBuZWVkIHRoYXQgZm9yIFNWRywgaXQncyB2ZXJ5IGVhc3kgdG8g
cmVmYWN0b3IgYW5kIHJldXNlIHRoZSBjb2RlLgogCiAgICAgYXV0byYgcGFyZW50UmVuZGVyZXIg
PSBwYXJlbnQoKS0+cmVuZGVyZXIoKTsKQEAgLTYzOCw3ICs2MzgsNyBAQCBGbG9hdFJlY3QgU1ZH
SW5saW5lVGV4dEJveDo6Y2FsY3VsYXRlQm91bmRhcmllcygpIGNvbnN0CiAKIGJvb2wgU1ZHSW5s
aW5lVGV4dEJveDo6bm9kZUF0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmIHJlcXVlc3QsIEhp
dFRlc3RSZXN1bHQmIHJlc3VsdCwgY29uc3QgSGl0VGVzdExvY2F0aW9uJiBsb2NhdGlvbkluQ29u
dGFpbmVyLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQsIExheW91dFVuaXQs
IExheW91dFVuaXQsIEhpdFRlc3RBY3Rpb24pCiB7Ci0gICAgLy8gRklYTUU6IGludGVncmF0ZSB3
aXRoIElubGluZVRleHRCb3g6Om5vZGVBdFBvaW50IGJldHRlci4KKyAgICAvLyBGSVhNRTogaW50
ZWdyYXRlIHdpdGggTGVnYWN5SW5saW5lVGV4dEJveDo6bm9kZUF0UG9pbnQgYmV0dGVyLgogICAg
IEFTU0VSVCghaXNMaW5lQnJlYWsoKSk7CiAKICAgICBQb2ludGVyRXZlbnRzSGl0UnVsZXMgaGl0
UnVsZXMoUG9pbnRlckV2ZW50c0hpdFJ1bGVzOjpTVkdfVEVYVF9ISVRURVNUSU5HLCByZXF1ZXN0
LCByZW5kZXJlcigpLnN0eWxlKCkucG9pbnRlckV2ZW50cygpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHSW5saW5lVGV4dEJveC5oIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9TVkdJbmxpbmVUZXh0Qm94LmgKaW5kZXggZGNlZjNlMmZlODliLi42
OWJkMjU2M2IzZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZH
SW5saW5lVGV4dEJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHSW5s
aW5lVGV4dEJveC5oCkBAIC0yMSw3ICsyMSw3IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVk
ZSAiSW5saW5lVGV4dEJveC5oIgorI2luY2x1ZGUgIkxlZ2FjeUlubGluZVRleHRCb3guaCIKICNp
bmNsdWRlICJSZW5kZXJTVkdJbmxpbmVUZXh0LmgiCiAjaW5jbHVkZSAiUmVuZGVyU1ZHUmVzb3Vy
Y2UuaCIKICNpbmNsdWRlICJTVkdUZXh0RnJhZ21lbnQuaCIKQEAgLTMxLDEyICszMSwxMiBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBSZW5kZXJTVkdSZXNvdXJjZTsKIGNsYXNzIFNWR1Jv
b3RJbmxpbmVCb3g7CiAKLWNsYXNzIFNWR0lubGluZVRleHRCb3ggZmluYWwgOiBwdWJsaWMgSW5s
aW5lVGV4dEJveCB7CitjbGFzcyBTVkdJbmxpbmVUZXh0Qm94IGZpbmFsIDogcHVibGljIExlZ2Fj
eUlubGluZVRleHRCb3ggewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoU1ZHSW5saW5lVGV4
dEJveCk7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgU1ZHSW5saW5lVGV4dEJveChSZW5kZXJTVkdJ
bmxpbmVUZXh0Jik7CiAKLSAgICBSZW5kZXJTVkdJbmxpbmVUZXh0JiByZW5kZXJlcigpIGNvbnN0
IHsgcmV0dXJuIGRvd25jYXN0PFJlbmRlclNWR0lubGluZVRleHQ+KElubGluZVRleHRCb3g6OnJl
bmRlcmVyKCkpOyB9CisgICAgUmVuZGVyU1ZHSW5saW5lVGV4dCYgcmVuZGVyZXIoKSBjb25zdCB7
IHJldHVybiBkb3duY2FzdDxSZW5kZXJTVkdJbmxpbmVUZXh0PihMZWdhY3lJbmxpbmVUZXh0Qm94
OjpyZW5kZXJlcigpKTsgfQogCiAgICAgZmxvYXQgdmlydHVhbExvZ2ljYWxIZWlnaHQoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBtX2xvZ2ljYWxIZWlnaHQ7IH0KICAgICB2b2lkIHNldExvZ2lj
YWxIZWlnaHQoZmxvYXQgaGVpZ2h0KSB7IG1fbG9naWNhbEhlaWdodCA9IGhlaWdodDsgfQpAQCAt
NzAsNyArNzAsNyBAQCBwdWJsaWM6CiAgICAgT3B0aW9uU2V0PFJlbmRlclNWR1Jlc291cmNlTW9k
ZT4gcGFpbnRpbmdSZXNvdXJjZU1vZGUoKSBjb25zdCB7IHJldHVybiBPcHRpb25TZXQ8UmVuZGVy
U1ZHUmVzb3VyY2VNb2RlPjo6ZnJvbVJhdyhtX3BhaW50aW5nUmVzb3VyY2VNb2RlKTsgfQogICAg
IHZvaWQgc2V0UGFpbnRpbmdSZXNvdXJjZU1vZGUoT3B0aW9uU2V0PFJlbmRlclNWR1Jlc291cmNl
TW9kZT4gbW9kZSkgeyBtX3BhaW50aW5nUmVzb3VyY2VNb2RlID0gbW9kZS50b1JhdygpOyB9CiAK
LSAgICBTVkdJbmxpbmVUZXh0Qm94KiBuZXh0VGV4dEJveCgpIGNvbnN0IHsgcmV0dXJuIGRvd25j
YXN0PFNWR0lubGluZVRleHRCb3g+KElubGluZVRleHRCb3g6Om5leHRUZXh0Qm94KCkpOyB9Cisg
ICAgU1ZHSW5saW5lVGV4dEJveCogbmV4dFRleHRCb3goKSBjb25zdCB7IHJldHVybiBkb3duY2Fz
dDxTVkdJbmxpbmVUZXh0Qm94PihMZWdhY3lJbmxpbmVUZXh0Qm94OjpuZXh0VGV4dEJveCgpKTsg
fQogICAgIAogcHJpdmF0ZToKICAgICBib29sIGlzU1ZHSW5saW5lVGV4dEJveCgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvU1ZHUmVuZGVyVHJlZUFzVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1NWR1JlbmRlclRyZWVBc1RleHQuY3BwCmluZGV4IDhmNGZlMDU4ZTNjMi4uMzFlZWNk
ODA2YmZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRl
clRyZWVBc1RleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVu
ZGVyVHJlZUFzVGV4dC5jcHAKQEAgLTM2Miw3ICszNjIsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQg
d3JpdGVTVkdJbmxpbmVUZXh0Qm94KFRleHRTdHJlYW0mIHRzLCBTVkdJbmxpbmVUZXh0Qm94KiB0
ZXh0QgogCiBzdGF0aWMgaW5saW5lIHZvaWQgd3JpdGVTVkdJbmxpbmVUZXh0Qm94ZXMoVGV4dFN0
cmVhbSYgdHMsIGNvbnN0IFJlbmRlclRleHQmIHRleHQpCiB7Ci0gICAgZm9yIChJbmxpbmVUZXh0
Qm94KiBib3ggPSB0ZXh0LmZpcnN0VGV4dEJveCgpOyBib3g7IGJveCA9IGJveC0+bmV4dFRleHRC
b3goKSkgeworICAgIGZvciAoYXV0byogYm94ID0gdGV4dC5maXJzdFRleHRCb3goKTsgYm94OyBi
b3ggPSBib3gtPm5leHRUZXh0Qm94KCkpIHsKICAgICAgICAgaWYgKCFpczxTVkdJbmxpbmVUZXh0
Qm94PigqYm94KSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdHlsZS9JbmxpbmVUZXh0Qm94U3R5bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvc3R5
bGUvSW5saW5lVGV4dEJveFN0eWxlLmNwcAppbmRleCBlZjQ5YjNjZTRiZGMuLjk4ZDQ4YjVjOTEw
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvSW5saW5lVGV4dEJveFN0eWxlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9JbmxpbmVUZXh0Qm94U3R5bGUuY3BwCkBAIC0y
NywxMyArMjcsMTMgQEAKICNpbmNsdWRlICJJbmxpbmVUZXh0Qm94U3R5bGUuaCIKIAogI2luY2x1
ZGUgIkZvbnRDYXNjYWRlLmgiCi0jaW5jbHVkZSAiSW5saW5lVGV4dEJveC5oIgorI2luY2x1ZGUg
IkxlZ2FjeUlubGluZVRleHRCb3guaCIKICNpbmNsdWRlICJMZWdhY3lSb290SW5saW5lQm94Lmgi
CiAjaW5jbHVkZSAiVGV4dFVuZGVybGluZU9mZnNldC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgCi1mbG9hdCBjb21wdXRlVW5kZXJsaW5lT2Zmc2V0KFRleHRVbmRlcmxpbmVQb3NpdGlv
biB1bmRlcmxpbmVQb3NpdGlvbiwgVGV4dFVuZGVybGluZU9mZnNldCB1bmRlcmxpbmVPZmZzZXQs
IGNvbnN0IEZvbnRNZXRyaWNzJiBmb250TWV0cmljcywgY29uc3QgSW5saW5lVGV4dEJveCogaW5s
aW5lVGV4dEJveCwgZmxvYXQgZGVmYXVsdEdhcCkKK2Zsb2F0IGNvbXB1dGVVbmRlcmxpbmVPZmZz
ZXQoVGV4dFVuZGVybGluZVBvc2l0aW9uIHVuZGVybGluZVBvc2l0aW9uLCBUZXh0VW5kZXJsaW5l
T2Zmc2V0IHVuZGVybGluZU9mZnNldCwgY29uc3QgRm9udE1ldHJpY3MmIGZvbnRNZXRyaWNzLCBj
b25zdCBMZWdhY3lJbmxpbmVUZXh0Qm94KiBpbmxpbmVUZXh0Qm94LCBmbG9hdCBkZWZhdWx0R2Fw
KQogewogICAgIC8vIFRoaXMgcmVwcmVzZW50cyB0aGUgZ2FwIGJldHdlZW4gdGhlIGJhc2VsaW5l
IGFuZCB0aGUgY2xvc2VzdCBlZGdlIG9mIHRoZSB1bmRlcmxpbmUuCiAgICAgZmxvYXQgZ2FwID0g
c3RkOjptYXg8aW50PigxLCBzdGQ6OmNlaWwoZGVmYXVsdEdhcCAvIDIuMGYpKTsKQEAgLTEwMiw3
ICsxMDIsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZXh0ZW5kSW50VG9GbG9hdChpbnQmIGV4dGVu
ZE1lLCBmbG9hdCBleHRlbmRUbykKICAgICBleHRlbmRNZSA9IHN0ZDo6bWF4KGV4dGVuZE1lLCBz
dGF0aWNfY2FzdDxpbnQ+KGNlaWxmKGV4dGVuZFRvKSkpOwogfQogCi1HbHlwaE92ZXJmbG93IHZp
c3VhbE92ZXJmbG93Rm9yRGVjb3JhdGlvbnMoY29uc3QgUmVuZGVyU3R5bGUmIGxpbmVTdHlsZSwg
Y29uc3QgSW5saW5lVGV4dEJveCogaW5saW5lVGV4dEJveCkKK0dseXBoT3ZlcmZsb3cgdmlzdWFs
T3ZlcmZsb3dGb3JEZWNvcmF0aW9ucyhjb25zdCBSZW5kZXJTdHlsZSYgbGluZVN0eWxlLCBjb25z
dCBMZWdhY3lJbmxpbmVUZXh0Qm94KiBpbmxpbmVUZXh0Qm94KQogewogICAgIEFTU0VSVCghaW5s
aW5lVGV4dEJveCB8fCBpbmxpbmVUZXh0Qm94LT5saW5lU3R5bGUoKSA9PSBsaW5lU3R5bGUpOwog
ICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvSW5saW5lVGV4dEJveFN0eWxl
LmggYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9JbmxpbmVUZXh0Qm94U3R5bGUuaAppbmRleCAwZDgz
YmFmNGQzMGQuLmE5YjA0NGNkMmFlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUv
SW5saW5lVGV4dEJveFN0eWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvSW5saW5lVGV4
dEJveFN0eWxlLmgKQEAgLTMwLDcgKzMwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
IAotY2xhc3MgSW5saW5lVGV4dEJveDsKK2NsYXNzIExlZ2FjeUlubGluZVRleHRCb3g7CiBjbGFz
cyBSZW5kZXJTdHlsZTsKIGNsYXNzIFRleHRVbmRlcmxpbmVPZmZzZXQ7CiAKQEAgLTUxLDcgKzUx
LDcgQEAgc3RydWN0IFdhdnlTdHJva2VQYXJhbWV0ZXJzIHsKICAgICBmbG9hdCBzdGVwIHsgMCB9
OwogfTsKIFdhdnlTdHJva2VQYXJhbWV0ZXJzIGdldFdhdnlTdHJva2VQYXJhbWV0ZXJzKGZsb2F0
IGZvbnRTaXplKTsKLUdseXBoT3ZlcmZsb3cgdmlzdWFsT3ZlcmZsb3dGb3JEZWNvcmF0aW9ucyhj
b25zdCBSZW5kZXJTdHlsZSYgbGluZVN0eWxlLCBjb25zdCBJbmxpbmVUZXh0Qm94Kik7Ci1mbG9h
dCBjb21wdXRlVW5kZXJsaW5lT2Zmc2V0KFRleHRVbmRlcmxpbmVQb3NpdGlvbiwgVGV4dFVuZGVy
bGluZU9mZnNldCwgY29uc3QgRm9udE1ldHJpY3MmLCBjb25zdCBJbmxpbmVUZXh0Qm94KiwgZmxv
YXQgdGV4dERlY29yYXRpb25UaGlja25lc3MpOworR2x5cGhPdmVyZmxvdyB2aXN1YWxPdmVyZmxv
d0ZvckRlY29yYXRpb25zKGNvbnN0IFJlbmRlclN0eWxlJiBsaW5lU3R5bGUsIGNvbnN0IExlZ2Fj
eUlubGluZVRleHRCb3gqKTsKK2Zsb2F0IGNvbXB1dGVVbmRlcmxpbmVPZmZzZXQoVGV4dFVuZGVy
bGluZVBvc2l0aW9uLCBUZXh0VW5kZXJsaW5lT2Zmc2V0LCBjb25zdCBGb250TWV0cmljcyYsIGNv
bnN0IExlZ2FjeUlubGluZVRleHRCb3gqLCBmbG9hdCB0ZXh0RGVjb3JhdGlvblRoaWNrbmVzcyk7
CiAgICAgCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>