<?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>186024</bug_id>
          
          <creation_ts>2018-05-27 13:00:45 -0700</creation_ts>
          <short_desc>Modernize SVGRenderStyleDefs.h</short_desc>
          <delta_ts>2018-05-28 08:21:34 -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>New Bugs</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="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1427833</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2018-05-27 13:00:45 -0700</bug_when>
    <thetext>Modernize SVGRenderStyleDefs.h</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1427835</commentid>
    <comment_count>1</comment_count>
      <attachid>341429</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2018-05-27 13:51:35 -0700</bug_when>
    <thetext>Created attachment 341429
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1427836</commentid>
    <comment_count>2</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-05-27 13:54:17 -0700</bug_when>
    <thetext>Attachment 341429 did not pass style-queue:


ERROR: Source/WebCore/rendering/style/SVGRenderStyleDefs.h:50:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/rendering/style/SVGRenderStyleDefs.h:68:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
Total errors found: 2 in 46 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1427852</commentid>
    <comment_count>3</comment_count>
      <attachid>341438</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2018-05-27 17:41:09 -0700</bug_when>
    <thetext>Created attachment 341438
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1427853</commentid>
    <comment_count>4</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-05-27 17:42:51 -0700</bug_when>
    <thetext>Attachment 341438 did not pass style-queue:


ERROR: Source/WebCore/rendering/style/SVGRenderStyleDefs.h:50:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/rendering/style/SVGRenderStyleDefs.h:68:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
Total errors found: 2 in 55 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1427872</commentid>
    <comment_count>5</comment_count>
      <attachid>341438</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2018-05-27 20:32:13 -0700</bug_when>
    <thetext>Comment on attachment 341438
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=341438&amp;action=review

&gt; Source/WebCore/rendering/svg/SVGTextLayoutEngineBaseline.cpp:61
&gt; +AlignmentBaseline SVGTextLayoutEngineBaseline::dominantBaselineToAlignmentBaseline(bool isVerticalText, const RenderObject* textRenderer) const

This is fine as-is. Would be great to make textRenderer a const lvalue reference instead of a pointer and then remove at least the first ASSERT. This would be good to do in a follow up.

&gt; Source/WebCore/rendering/svg/SVGTextLayoutEngineBaseline.cpp:100
&gt;      default:

This is ok as-is. Would be great if we can remove the default case and let the compiler enforce the enum.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1427931</commentid>
    <comment_count>6</comment_count>
      <attachid>341438</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-05-28 08:20:10 -0700</bug_when>
    <thetext>Comment on attachment 341438
Patch

Clearing flags on attachment: 341438

Committed r232246: &lt;https://trac.webkit.org/changeset/232246&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1427932</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-05-28 08:20:11 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1427933</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-05-28 08:21:34 -0700</bug_when>
    <thetext>&lt;rdar://problem/40599402&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>341429</attachid>
            <date>2018-05-27 13:51:35 -0700</date>
            <delta_ts>2018-05-27 17:41:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-186024-20180527135134.patch</filename>
            <type>text/plain</type>
            <size>132575</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzMjIyOCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIyOSBAQAorMjAxOC0wNS0yNyAgU2FtIFdl
aW5pZyAgPHNhbUB3ZWJraXQub3JnPgorCisgICAgICAgIE1vZGVybml6ZSBTVkdSZW5kZXJTdHls
ZURlZnMuaAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTg2MDI0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
TW9kZXJuaXplZCB0aGUgc2V0IG9mIGVudW1zIGluIFNWR1JlbmRlclN0eWxlRGVmcy5oIGFuZCBX
aW5kUnVsZS5oIGJ5OgorICAgICAgICAgICAgLSBDb252ZXJ0aW5nIHRoZW0gdG8gZW51bSBjbGFz
c2VzCisgICAgICAgICAgICAtIFJlbmFtaW5nIHRoZW0gdG8gcmVtb3ZlIHVubmVjZXNzYXJ5IHBy
ZWZpeCAnRSdzCisgICAgICAgICAgICAtIFJlbmFtaW5nIHZhbHVlcyB0byB0YWtlIGFkdmFudGFn
ZSBvZiBlbnVtIGNsYXNzIHNjb3BpbmcgKGUuZy4gU3R5bGVEaWZmZXJlbmNlRXF1YWwgLT4gU3R5
bGVEaWZmZXJlbmNlOjpFcXVhbCkKKyAgICAgICAgICAgIC0gUmVuYW1pbmcgdG8gbWF0Y2ggbW9k
ZXJuIGNvbnZlbnRpb25zIChlLmcgQk5PTkUgLT4gTm9uZSkKKworICAgICAgICBNb2Rlcm5pemVz
IHRoZSBmb2xsb3dpbmcgZW51bXM6CisgICAgICAgICAgICBTVkdQYWludFR5cGUKKyAgICAgICAg
ICAgIEJhc2VsaW5lU2hpZnQgKHJlbmFtZWQgZnJvbSBFQmFzZWxpbmVTaGlmdCkKKyAgICAgICAg
ICAgIFRleHRBbmNob3IgKHJlbmFtZWQgZnJvbSBFVGV4dEFuY2hvcikKKyAgICAgICAgICAgIENv
bG9ySW50ZXJwb2xhdGlvbiAocmVuYW1lZCBmcm9tIEVDb2xvckludGVycG9sYXRpb24pCisgICAg
ICAgICAgICBDb2xvclJlbmRlcmluZyAocmVuYW1lZCBmcm9tIEVDb2xvclJlbmRlcmluZykKKyAg
ICAgICAgICAgIFNoYXBlUmVuZGVyaW5nIChyZW5hbWVkIGZyb20gRVNoYXBlUmVuZGVyaW5nKQor
ICAgICAgICAgICAgR2x5cGhPcmllbnRhdGlvbiAocmVuYW1lZCBmcm9tIEVHbHlwaE9yaWVudGF0
aW9uKQorICAgICAgICAgICAgQWxpZ25tZW50QmFzZWxpbmUgKHJlbmFtZWQgZnJvbSBFQWxpZ25t
ZW50QmFzZWxpbmUpCisgICAgICAgICAgICBEb21pbmFudEJhc2VsaW5lIChyZW5hbWVkIGZyb20g
RURvbWluYW50QmFzZWxpbmUpCisgICAgICAgICAgICBWZWN0b3JFZmZlY3QgKHJlbmFtZWQgZnJv
bSBFVmVjdG9yRWZmZWN0KQorICAgICAgICAgICAgQnVmZmVyZWRSZW5kZXJpbmcgKHJlbmFtZWQg
ZnJvbSBFQnVmZmVyZWRSZW5kZXJpbmcpCisgICAgICAgICAgICBNYXNrVHlwZSAocmVuYW1lZCBm
cm9tIEVNYXNrVHlwZSkKKyAgICAgICAgICAgIFdpbmRSdWxlCisKKyAgICAgICAgKiBjc3MvQ1NT
QmFzaWNTaGFwZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YnVpbGRQYXRoU3RyaW5nKToKKyAg
ICAgICAgKFdlYkNvcmU6OmJ1aWxkUG9seWdvblN0cmluZyk6CisgICAgICAgICogY3NzL0NTU0Jh
c2ljU2hhcGVzLmg6CisgICAgICAgICogY3NzL0NTU1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3MuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZSk6
CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgV2luZFJ1bGUg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIEFs
aWdubWVudEJhc2VsaW5lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZh
bHVlOjpvcGVyYXRvciBCdWZmZXJlZFJlbmRlcmluZyBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgQ29sb3JJbnRlcnBvbGF0aW9uIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBDb2xvclJlbmRl
cmluZyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0
b3IgRG9taW5hbnRCYXNlbGluZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRp
dmVWYWx1ZTo6b3BlcmF0b3IgU2hhcGVSZW5kZXJpbmcgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIFRleHRBbmNob3IgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIFZlY3RvckVmZmVjdCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgTWFza1R5
cGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9y
IEVBbGlnbm1lbnRCYXNlbGluZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpD
U1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgRUJ1ZmZlcmVkUmVuZGVyaW5nIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBFQ29s
b3JJbnRlcnBvbGF0aW9uIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNTU1By
aW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBFQ29sb3JSZW5kZXJpbmcgY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIEVEb21pbmFudEJh
c2VsaW5lIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZh
bHVlOjpvcGVyYXRvciBFU2hhcGVSZW5kZXJpbmcgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIEVUZXh0QW5jaG9yIGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBF
VmVjdG9yRWZmZWN0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1p
dGl2ZVZhbHVlOjpvcGVyYXRvciBFTWFza1R5cGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAq
IGNzcy9TVkdDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Z2x5cGhPcmllbnRhdGlvblRvQ1NTUHJpbWl0aXZlVmFsdWUpOgorICAgICAgICAoV2ViQ29y
ZTo6Q29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6YWRqdXN0U1ZHUGFpbnRGb3JDdXJyZW50Q29sb3Ig
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6c3ZnUHJv
cGVydHlWYWx1ZSk6CisgICAgICAgICogY3NzL1N0eWxlQnVpbGRlckNvbnZlcnRlci5oOgorICAg
ICAgICAoV2ViQ29yZTo6U3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0R2x5cGhPcmllbnRh
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRH
bHlwaE9yaWVudGF0aW9uT3JBdXRvKToKKyAgICAgICAgKiBjc3MvU3R5bGVCdWlsZGVyQ3VzdG9t
Lmg6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVCYXNl
bGluZVNoaWZ0KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlW
YWx1ZUZpbGwpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZh
bHVlU3Ryb2tlKToKKyAgICAgICAgKiBjc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmNvbnN1bWVCYXNpY1NoYXBlUG9seWdvbik6CisgICAgICAgIChX
ZWJDb3JlOjpjb25zdW1lQmFzaWNTaGFwZVBhdGgpOgorICAgICAgICAqIGh0bWwvY2FudmFzL0Nh
bnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9XaW5k
UnVsZSk6CisgICAgICAgICogcGFnZS9hbmltYXRpb24vQ1NTUHJvcGVydHlBbmltYXRpb24uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UHJvcGVydHlXcmFwcGVyU1ZHUGFpbnQ6OlByb3BlcnR5V3Jh
cHBlclNWR1BhaW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFBvbHlnb24u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RmxvYXRQb2x5Z29uOjpjb250YWlucyBjb25zdCk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3RXaXRoUm91bmRlZEhvbGUpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NMYXllcjo6c2hhcGVMYXllcldpbmRSdWxlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NUeXBlcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvcjw8KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9QYXRoLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvU2hhZG93Qmx1ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dCbHVyOjpkcmF3SW5z
ZXRTaGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Qmx1cjo6ZHJhd0luc2V0U2hhZG93
V2l0aG91dFRpbGluZyk6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dCbHVyOjpkcmF3SW5zZXRT
aGFkb3dXaXRoVGlsaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9XaW5kUnVsZS5o
OgorICAgICAgICAoKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9j
b2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5tbToKKyAgICAgICAgKFBsYXRmb3JtQ0FMYXllckNv
Y29hOjpzaGFwZVdpbmRSdWxlIGNvbnN0KToKKyAgICAgICAgKFBsYXRmb3JtQ0FMYXllckNvY29h
OjpzZXRTaGFwZVdpbmRSdWxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFw
aGljc0NvbnRleHRDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjYWxjdWxhdGVEcmF3aW5nTW9k
ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmZpbGxQYXRoKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3RXaXRoUm91bmRlZEhvbGUpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpjbGlwUGF0aCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0aENHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhdGg6
OmNvbnRhaW5zIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZp
ZGVvU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZVZpZGVvU291cmNl
OjpkcmF3QW5pbWF0aW9uKToKKyAgICAgICAgKiByZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVy
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0UmVuZGVyZXI6OmJ1aWxkUmVm
ZXJlbmNlRmlsdGVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3Qu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Qm9yZGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0OjpjbGlwQm9yZGVyU2lk
ZVBvbHlnb24pOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckVsZW1lbnQ6OnBhaW50T3V0bGluZSk6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlckxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpj
b21wdXRlQ2xpcFBhdGggY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9CYXNpY1No
YXBlcy5oOgorICAgICAgICAoV2ViQ29yZTo6QmFzaWNTaGFwZTo6d2luZFJ1bGUgY29uc3QpOgor
ICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyU3R5bGU6OmZpbGxQYWludFR5cGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyU3R5bGU6OnNldEZpbGxQYWludENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clN0eWxlOjpzdHJva2VQYWludFR5cGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
U3R5bGU6OnNldFN0cm9rZVBhaW50Q29sb3IpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9T
VkdSZW5kZXJTdHlsZS5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVuZGVyU3R5bGU6OmluaXRp
YWxBbGlnbm1lbnRCYXNlbGluZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJTdHlsZTo6
aW5pdGlhbERvbWluYW50QmFzZWxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVuZGVyU3R5
bGU6OmluaXRpYWxCYXNlbGluZVNoaWZ0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1JlbmRlclN0
eWxlOjppbml0aWFsVmVjdG9yRWZmZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1JlbmRlclN0
eWxlOjppbml0aWFsQnVmZmVyZWRSZW5kZXJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVu
ZGVyU3R5bGU6OmluaXRpYWxDbGlwUnVsZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJT
dHlsZTo6aW5pdGlhbENvbG9ySW50ZXJwb2xhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTVkdS
ZW5kZXJTdHlsZTo6aW5pdGlhbENvbG9ySW50ZXJwb2xhdGlvbkZpbHRlcnMpOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHUmVuZGVyU3R5bGU6OmluaXRpYWxDb2xvclJlbmRlcmluZyk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdSZW5kZXJTdHlsZTo6aW5pdGlhbEZpbGxSdWxlKToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR1JlbmRlclN0eWxlOjppbml0aWFsU2hhcGVSZW5kZXJpbmcpOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHUmVuZGVyU3R5bGU6OmluaXRpYWxUZXh0QW5jaG9yKToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR1JlbmRlclN0eWxlOjppbml0aWFsR2x5cGhPcmllbnRhdGlvbkhvcml6b250YWwp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVuZGVyU3R5bGU6OmluaXRpYWxHbHlwaE9yaWVudGF0
aW9uVmVydGljYWwpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVuZGVyU3R5bGU6OmluaXRpYWxG
aWxsUGFpbnRUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1JlbmRlclN0eWxlOjppbml0aWFs
U3Ryb2tlUGFpbnRUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1JlbmRlclN0eWxlOjppbml0
aWFsTWFza1R5cGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVuZGVyU3R5bGU6OnNldEFsaWdu
bWVudEJhc2VsaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1JlbmRlclN0eWxlOjpzZXREb21p
bmFudEJhc2VsaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1JlbmRlclN0eWxlOjpzZXRCYXNl
bGluZVNoaWZ0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1JlbmRlclN0eWxlOjpzZXRWZWN0b3JF
ZmZlY3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVuZGVyU3R5bGU6OnNldEJ1ZmZlcmVkUmVu
ZGVyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1JlbmRlclN0eWxlOjpzZXRDbGlwUnVsZSk6
CisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJTdHlsZTo6c2V0Q29sb3JJbnRlcnBvbGF0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1JlbmRlclN0eWxlOjpzZXRDb2xvckludGVycG9sYXRp
b25GaWx0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1JlbmRlclN0eWxlOjpzZXRDb2xvclJl
bmRlcmluZyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJTdHlsZTo6c2V0RmlsbFJ1bGUp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVuZGVyU3R5bGU6OnNldFNoYXBlUmVuZGVyaW5nKToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR1JlbmRlclN0eWxlOjpzZXRUZXh0QW5jaG9yKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR1JlbmRlclN0eWxlOjpzZXRHbHlwaE9yaWVudGF0aW9uSG9yaXpvbnRh
bCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJTdHlsZTo6c2V0R2x5cGhPcmllbnRhdGlv
blZlcnRpY2FsKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1JlbmRlclN0eWxlOjpzZXRNYXNrVHlw
ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJTdHlsZTo6YWxpZ25tZW50QmFzZWxpbmUg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVuZGVyU3R5bGU6OmRvbWluYW50QmFzZWxp
bmUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVuZGVyU3R5bGU6OmJhc2VsaW5lU2hp
ZnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVuZGVyU3R5bGU6OnZlY3RvckVmZmVj
dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJTdHlsZTo6YnVmZmVyZWRSZW5k
ZXJpbmcgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVuZGVyU3R5bGU6OmNsaXBSdWxl
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1JlbmRlclN0eWxlOjpjb2xvckludGVycG9s
YXRpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVuZGVyU3R5bGU6OmNvbG9ySW50
ZXJwb2xhdGlvbkZpbHRlcnMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVuZGVyU3R5
bGU6OmNvbG9yUmVuZGVyaW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1JlbmRlclN0
eWxlOjpmaWxsUnVsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJTdHlsZTo6
c2hhcGVSZW5kZXJpbmcgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVuZGVyU3R5bGU6
OnRleHRBbmNob3IgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVuZGVyU3R5bGU6Omds
eXBoT3JpZW50YXRpb25Ib3Jpem9udGFsIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Jl
bmRlclN0eWxlOjpnbHlwaE9yaWVudGF0aW9uVmVydGljYWwgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHUmVuZGVyU3R5bGU6OmZpbGxQYWludFR5cGUgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHUmVuZGVyU3R5bGU6OnN0cm9rZVBhaW50VHlwZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdSZW5kZXJTdHlsZTo6bWFza1R5cGUgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHUmVuZGVyU3R5bGU6OnZpc2l0ZWRMaW5rRmlsbFBhaW50VHlwZSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdSZW5kZXJTdHlsZTo6dmlzaXRlZExpbmtTdHJva2VQYWludFR5cGUg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVuZGVyU3R5bGU6Omhhc1N0cm9rZSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJTdHlsZTo6aGFzRmlsbCBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJTdHlsZTo6c2V0Qml0RGVmYXVsdHMpOgorICAgICAg
ICAqIHJlbmRlcmluZy9zdHlsZS9TVkdSZW5kZXJTdHlsZURlZnMuaDoKKyAgICAgICAgKFdlYkNv
cmU6OlN0eWxlRmlsbERhdGE6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUZpbGxE
YXRhOjpvcGVyYXRvciE9IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlU3Ryb2tlRGF0
YTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlU3Ryb2tlRGF0YTo6b3BlcmF0b3Ih
PSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVN0b3BEYXRhOjpjcmVhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6U3R5bGVTdG9wRGF0YTo6b3BlcmF0b3IhPSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpTdHlsZVRleHREYXRhOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5
bGVUZXh0RGF0YTo6b3BlcmF0b3IhPSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZU1p
c2NEYXRhOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVNaXNjRGF0YTo6b3BlcmF0
b3IhPSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVNoYWRvd1NWR0RhdGE6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVNoYWRvd1NWR0RhdGE6Om9wZXJhdG9yIT0gY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvdXJjZURhdGE6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpTdHlsZVJlc291cmNlRGF0YTo6b3BlcmF0b3IhPSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpTdHlsZUluaGVyaXRlZFJlc291cmNlRGF0YTo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlN0eWxlSW5oZXJpdGVkUmVzb3VyY2VEYXRhOjpvcGVyYXRvciE9IGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlTGF5b3V0RGF0YTo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OlN0eWxlTGF5b3V0RGF0YTo6b3BlcmF0b3IhPSBjb25zdCk6CisgICAgICAgICgp
OiBEZWxldGVkLgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHSW1hZ2U6OnBhaW50KToKKyAgICAgICAgKiByZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1JlY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZH
UmVjdDo6dXBkYXRlU2hhcGVGcm9tRWxlbWVudCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZXF1ZXN0UGFpbnRpbmdS
ZXNvdXJjZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBw
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyOjpwYXRo
T25seUNsaXBwaW5nKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNl
RmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjpi
dWlsZFByaW1pdGl2ZXMgY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
UmVzb3VyY2VHcmFkaWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJj
ZUdyYWRpZW50OjphcHBseVJlc291cmNlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR1Jlc291cmNlTWFza2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291
cmNlTWFza2VyOjphcHBseVJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jl
c291cmNlTWFza2VyOjpkcmF3Q29udGVudEludG9NYXNrSW1hZ2UpOgorICAgICAgICAqIHJlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclNWR1Jlc291cmNlUGF0dGVybjo6YXBwbHlSZXNvdXJjZSk6CisgICAgICAgICogcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJT
VkdTaGFwZTo6cGFpbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUu
aDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1NoYXBlOjpoYXNOb25TY2FsaW5nU3Ryb2tl
IGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclRyZWVBc1RleHQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6d3JpdGVTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjp3cml0
ZVNWR0lubGluZVRleHRCb3gpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHUmVzb3VyY2Vz
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBhaW50aW5nUmVzb3VyY2VGcm9tU1ZHUGFpbnQpOgor
ICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHVGV4dENodW5rLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNWR1RleHRDaHVuazo6U1ZHVGV4dENodW5rKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3Zn
L1NWR1RleHRMYXlvdXRFbmdpbmVCYXNlbGluZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdU
ZXh0TGF5b3V0RW5naW5lQmFzZWxpbmU6OmNhbGN1bGF0ZUJhc2VsaW5lU2hpZnQgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHVGV4dExheW91dEVuZ2luZUJhc2VsaW5lOjpkb21pbmFudEJh
c2VsaW5lVG9BbGlnbm1lbnRCYXNlbGluZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdU
ZXh0TGF5b3V0RW5naW5lQmFzZWxpbmU6OmNhbGN1bGF0ZUFsaWdubWVudEJhc2VsaW5lU2hpZnQg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGV4dExheW91dEVuZ2luZUJhc2VsaW5lOjpj
YWxjdWxhdGVHbHlwaE9yaWVudGF0aW9uQW5nbGUgY29uc3QpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9zdmcvU1ZHVGV4dExheW91dEVuZ2luZUJhc2VsaW5lLmg6CisKIDIwMTgtMDUtMjYgIFphbGFu
IEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXSBJbXBsZW1lbnQgbWFy
Z2luIGNvbXB1dGF0aW9uCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQmFzaWNTaGFwZXMu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NCYXNpY1NoYXBlcy5jcHAJ
KHJldmlzaW9uIDIzMjE4OSkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NCYXNpY1NoYXBlcy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTIxMSw3ICsyMTEsNyBAQCBDU1NCYXNpY1NoYXBlUGF0aDo6
Q1NTQmFzaWNTaGFwZVBhdGgoc3RkCiBzdGF0aWMgU3RyaW5nIGJ1aWxkUGF0aFN0cmluZyhjb25z
dCBXaW5kUnVsZSYgd2luZFJ1bGUsIGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBi
b3gpCiB7CiAgICAgU3RyaW5nQnVpbGRlciByZXN1bHQ7Ci0gICAgaWYgKHdpbmRSdWxlID09IFJV
TEVfRVZFTk9ERCkKKyAgICBpZiAod2luZFJ1bGUgPT0gV2luZFJ1bGU6OkV2ZW5PZGQpCiAgICAg
ICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFsKCJwYXRoKGV2ZW5vZGQsICIpOwogICAgIGVsc2UKICAg
ICAgICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoInBhdGgoIik7CkBAIC0yNjUsNyArMjY1LDcgQEAg
c3RhdGljIFN0cmluZyBidWlsZFBvbHlnb25TdHJpbmcoY29uc3QgVwogCiAgICAgcmVzdWx0LnJl
c2VydmVDYXBhY2l0eShsZW5ndGgpOwogCi0gICAgaWYgKHdpbmRSdWxlID09IFJVTEVfRVZFTk9E
RCkKKyAgICBpZiAod2luZFJ1bGUgPT0gV2luZFJ1bGU6OkV2ZW5PZGQpCiAgICAgICAgIHJlc3Vs
dC5hcHBlbmRMaXRlcmFsKGV2ZW5PZGRPcGVuaW5nKTsKICAgICBlbHNlCiAgICAgICAgIHJlc3Vs
dC5hcHBlbmRMaXRlcmFsKG5vblplcm9PcGVuaW5nKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NCYXNpY1NoYXBlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NC
YXNpY1NoYXBlcy5oCShyZXZpc2lvbiAyMzIxODkpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
QmFzaWNTaGFwZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMTk1LDcgKzE5NSw3IEBAIHB1YmxpYzoK
IAogcHJpdmF0ZToKICAgICBDU1NCYXNpY1NoYXBlUG9seWdvbigpCi0gICAgICAgIDogbV93aW5k
UnVsZShSVUxFX05PTlpFUk8pCisgICAgICAgIDogbV93aW5kUnVsZShXaW5kUnVsZTo6Tm9uWmVy
bykKICAgICB7CiAgICAgfQogCkBAIC0yMzAsNyArMjMwLDcgQEAgcHJpdmF0ZToKICAgICBib29s
IGVxdWFscyhjb25zdCBDU1NCYXNpY1NoYXBlJikgY29uc3QgZmluYWw7CiAKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8U1ZHUGF0aEJ5dGVTdHJlYW0+IG1fYnl0ZVN0cmVhbTsKLSAgICBXaW5kUnVsZSBt
X3dpbmRSdWxlIHsgUlVMRV9OT05aRVJPIH07CisgICAgV2luZFJ1bGUgbV93aW5kUnVsZSB7IFdp
bmRSdWxlOjpOb25aZXJvIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZU1hcHBpbmdzLmgJKHJldmlz
aW9uIDIzMjE4OSkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZU1hcHBp
bmdzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQxMTcsMTAgKzQxMTcsMTAgQEAgdGVtcGxhdGU8PiBp
bmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTUwogewogICAgIG1fcHJpbWl0aXZlVW5pdFR5cGUg
PSBDU1NfVkFMVUVfSUQ7CiAgICAgc3dpdGNoIChlKSB7Ci0gICAgY2FzZSBSVUxFX05PTlpFUk86
CisgICAgY2FzZSBXaW5kUnVsZTo6Tm9uWmVybzoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0g
Q1NTVmFsdWVOb256ZXJvOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFJVTEVfRVZFTk9ERDoK
KyAgICBjYXNlIFdpbmRSdWxlOjpFdmVuT2RkOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBD
U1NWYWx1ZUV2ZW5vZGQ7CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTQxMzIsOTcgKzQxMzIs
OTcgQEAgdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9wZQogCiAgICAgc3dp
dGNoIChtX3ZhbHVlLnZhbHVlSUQpIHsKICAgICBjYXNlIENTU1ZhbHVlTm9uemVybzoKLSAgICAg
ICAgcmV0dXJuIFJVTEVfTk9OWkVSTzsKKyAgICAgICAgcmV0dXJuIFdpbmRSdWxlOjpOb25aZXJv
OwogICAgIGNhc2UgQ1NTVmFsdWVFdmVub2RkOgotICAgICAgICByZXR1cm4gUlVMRV9FVkVOT0RE
OworICAgICAgICByZXR1cm4gV2luZFJ1bGU6OkV2ZW5PZGQ7CiAgICAgZGVmYXVsdDoKICAgICAg
ICAgYnJlYWs7CiAgICAgfQogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJu
IFJVTEVfTk9OWkVSTzsKKyAgICByZXR1cm4gV2luZFJ1bGU6Ok5vblplcm87CiB9CiAKIAotdGVt
cGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKEVBbGln
bm1lbnRCYXNlbGluZSBlKQordGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNT
U1ByaW1pdGl2ZVZhbHVlKEFsaWdubWVudEJhc2VsaW5lIGUpCiAgICAgOiBDU1NWYWx1ZShQcmlt
aXRpdmVDbGFzcykKIHsKICAgICBtX3ByaW1pdGl2ZVVuaXRUeXBlID0gQ1NTX1ZBTFVFX0lEOwog
ICAgIHN3aXRjaCAoZSkgewotICAgIGNhc2UgQUJfQVVUTzoKKyAgICBjYXNlIEFsaWdubWVudEJh
c2VsaW5lOjpBdXRvOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUF1dG87CiAg
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgQUJfQkFTRUxJTkU6CisgICAgY2FzZSBBbGlnbm1lbnRC
YXNlbGluZTo6QmFzZWxpbmU6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlQmFz
ZWxpbmU7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQUJfQkVGT1JFX0VER0U6CisgICAgY2Fz
ZSBBbGlnbm1lbnRCYXNlbGluZTo6QmVmb3JlRWRnZToKICAgICAgICAgbV92YWx1ZS52YWx1ZUlE
ID0gQ1NTVmFsdWVCZWZvcmVFZGdlOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEFCX1RFWFRf
QkVGT1JFX0VER0U6CisgICAgY2FzZSBBbGlnbm1lbnRCYXNlbGluZTo6VGV4dEJlZm9yZUVkZ2U6
CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlVGV4dEJlZm9yZUVkZ2U7CiAgICAg
ICAgIGJyZWFrOwotICAgIGNhc2UgQUJfTUlERExFOgorICAgIGNhc2UgQWxpZ25tZW50QmFzZWxp
bmU6Ok1pZGRsZToKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVNaWRkbGU7CiAg
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgQUJfQ0VOVFJBTDoKKyAgICBjYXNlIEFsaWdubWVudEJh
c2VsaW5lOjpDZW50cmFsOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUNlbnRy
YWw7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQUJfQUZURVJfRURHRToKKyAgICBjYXNlIEFs
aWdubWVudEJhc2VsaW5lOjpBZnRlckVkZ2U6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENT
U1ZhbHVlQWZ0ZXJFZGdlOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEFCX1RFWFRfQUZURVJf
RURHRToKKyAgICBjYXNlIEFsaWdubWVudEJhc2VsaW5lOjpUZXh0QWZ0ZXJFZGdlOgogICAgICAg
ICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZVRleHRBZnRlckVkZ2U7CiAgICAgICAgIGJyZWFr
OwotICAgIGNhc2UgQUJfSURFT0dSQVBISUM6CisgICAgY2FzZSBBbGlnbm1lbnRCYXNlbGluZTo6
SWRlb2dyYXBoaWM6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlSWRlb2dyYXBo
aWM7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQUJfQUxQSEFCRVRJQzoKKyAgICBjYXNlIEFs
aWdubWVudEJhc2VsaW5lOjpBbHBoYWJldGljOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBD
U1NWYWx1ZUFscGhhYmV0aWM7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQUJfSEFOR0lORzoK
KyAgICBjYXNlIEFsaWdubWVudEJhc2VsaW5lOjpIYW5naW5nOgogICAgICAgICBtX3ZhbHVlLnZh
bHVlSUQgPSBDU1NWYWx1ZUhhbmdpbmc7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQUJfTUFU
SEVNQVRJQ0FMOgorICAgIGNhc2UgQWxpZ25tZW50QmFzZWxpbmU6Ok1hdGhlbWF0aWNhbDoKICAg
ICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVNYXRoZW1hdGljYWw7CiAgICAgICAgIGJy
ZWFrOwogICAgIH0KIH0KIAotdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9w
ZXJhdG9yIEVBbGlnbm1lbnRCYXNlbGluZSgpIGNvbnN0Cit0ZW1wbGF0ZTw+IGlubGluZSBDU1NQ
cmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgQWxpZ25tZW50QmFzZWxpbmUoKSBjb25zdAogewogICAg
IEFTU0VSVChpc1ZhbHVlSUQoKSk7CiAKICAgICBzd2l0Y2ggKG1fdmFsdWUudmFsdWVJRCkgewog
ICAgIGNhc2UgQ1NTVmFsdWVBdXRvOgotICAgICAgICByZXR1cm4gQUJfQVVUTzsKKyAgICAgICAg
cmV0dXJuIEFsaWdubWVudEJhc2VsaW5lOjpBdXRvOwogICAgIGNhc2UgQ1NTVmFsdWVCYXNlbGlu
ZToKLSAgICAgICAgcmV0dXJuIEFCX0JBU0VMSU5FOworICAgICAgICByZXR1cm4gQWxpZ25tZW50
QmFzZWxpbmU6OkJhc2VsaW5lOwogICAgIGNhc2UgQ1NTVmFsdWVCZWZvcmVFZGdlOgotICAgICAg
ICByZXR1cm4gQUJfQkVGT1JFX0VER0U7CisgICAgICAgIHJldHVybiBBbGlnbm1lbnRCYXNlbGlu
ZTo6QmVmb3JlRWRnZTsKICAgICBjYXNlIENTU1ZhbHVlVGV4dEJlZm9yZUVkZ2U6Ci0gICAgICAg
IHJldHVybiBBQl9URVhUX0JFRk9SRV9FREdFOworICAgICAgICByZXR1cm4gQWxpZ25tZW50QmFz
ZWxpbmU6OlRleHRCZWZvcmVFZGdlOwogICAgIGNhc2UgQ1NTVmFsdWVNaWRkbGU6Ci0gICAgICAg
IHJldHVybiBBQl9NSURETEU7CisgICAgICAgIHJldHVybiBBbGlnbm1lbnRCYXNlbGluZTo6TWlk
ZGxlOwogICAgIGNhc2UgQ1NTVmFsdWVDZW50cmFsOgotICAgICAgICByZXR1cm4gQUJfQ0VOVFJB
TDsKKyAgICAgICAgcmV0dXJuIEFsaWdubWVudEJhc2VsaW5lOjpDZW50cmFsOwogICAgIGNhc2Ug
Q1NTVmFsdWVBZnRlckVkZ2U6Ci0gICAgICAgIHJldHVybiBBQl9BRlRFUl9FREdFOworICAgICAg
ICByZXR1cm4gQWxpZ25tZW50QmFzZWxpbmU6OkFmdGVyRWRnZTsKICAgICBjYXNlIENTU1ZhbHVl
VGV4dEFmdGVyRWRnZToKLSAgICAgICAgcmV0dXJuIEFCX1RFWFRfQUZURVJfRURHRTsKKyAgICAg
ICAgcmV0dXJuIEFsaWdubWVudEJhc2VsaW5lOjpUZXh0QWZ0ZXJFZGdlOwogICAgIGNhc2UgQ1NT
VmFsdWVJZGVvZ3JhcGhpYzoKLSAgICAgICAgcmV0dXJuIEFCX0lERU9HUkFQSElDOworICAgICAg
ICByZXR1cm4gQWxpZ25tZW50QmFzZWxpbmU6OklkZW9ncmFwaGljOwogICAgIGNhc2UgQ1NTVmFs
dWVBbHBoYWJldGljOgotICAgICAgICByZXR1cm4gQUJfQUxQSEFCRVRJQzsKKyAgICAgICAgcmV0
dXJuIEFsaWdubWVudEJhc2VsaW5lOjpBbHBoYWJldGljOwogICAgIGNhc2UgQ1NTVmFsdWVIYW5n
aW5nOgotICAgICAgICByZXR1cm4gQUJfSEFOR0lORzsKKyAgICAgICAgcmV0dXJuIEFsaWdubWVu
dEJhc2VsaW5lOjpIYW5naW5nOwogICAgIGNhc2UgQ1NTVmFsdWVNYXRoZW1hdGljYWw6Ci0gICAg
ICAgIHJldHVybiBBQl9NQVRIRU1BVElDQUw7CisgICAgICAgIHJldHVybiBBbGlnbm1lbnRCYXNl
bGluZTo6TWF0aGVtYXRpY2FsOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0K
IAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBBQl9BVVRPOworICAgIHJl
dHVybiBBbGlnbm1lbnRCYXNlbGluZTo6QXV0bzsKIH0KIAogdGVtcGxhdGU8PiBpbmxpbmUgQ1NT
UHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKEJvcmRlckNvbGxhcHNlIGUpCkBAIC00
NTA5LDI3MCArNDUwOSwyNzAgQEAgdGVtcGxhdGU8aW50IHN1cHBvcnRlZD4gTGVuZ3RoIENTU1By
aW1pdAogICAgIHJldHVybiBMZW5ndGgoVW5kZWZpbmVkKTsKIH0KIAotdGVtcGxhdGU8PiBpbmxp
bmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKEVCdWZmZXJlZFJlbmRlcmlu
ZyBlKQordGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZh
bHVlKEJ1ZmZlcmVkUmVuZGVyaW5nIGUpCiAgICAgOiBDU1NWYWx1ZShQcmltaXRpdmVDbGFzcykK
IHsKICAgICBtX3ByaW1pdGl2ZVVuaXRUeXBlID0gQ1NTX1ZBTFVFX0lEOwogICAgIHN3aXRjaCAo
ZSkgewotICAgIGNhc2UgQlJfQVVUTzoKKyAgICBjYXNlIEJ1ZmZlcmVkUmVuZGVyaW5nOjpBdXRv
OgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUF1dG87CiAgICAgICAgIGJyZWFr
OwotICAgIGNhc2UgQlJfRFlOQU1JQzoKKyAgICBjYXNlIEJ1ZmZlcmVkUmVuZGVyaW5nOjpEeW5h
bWljOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUR5bmFtaWM7CiAgICAgICAg
IGJyZWFrOwotICAgIGNhc2UgQlJfU1RBVElDOgorICAgIGNhc2UgQnVmZmVyZWRSZW5kZXJpbmc6
OlN0YXRpYzoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVTdGF0aWM7CiAgICAg
ICAgIGJyZWFrOwogICAgIH0KIH0KIAotdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFs
dWU6Om9wZXJhdG9yIEVCdWZmZXJlZFJlbmRlcmluZygpIGNvbnN0Cit0ZW1wbGF0ZTw+IGlubGlu
ZSBDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgQnVmZmVyZWRSZW5kZXJpbmcoKSBjb25zdAog
ewogICAgIEFTU0VSVChpc1ZhbHVlSUQoKSk7CiAKICAgICBzd2l0Y2ggKG1fdmFsdWUudmFsdWVJ
RCkgewogICAgIGNhc2UgQ1NTVmFsdWVBdXRvOgotICAgICAgICByZXR1cm4gQlJfQVVUTzsKKyAg
ICAgICAgcmV0dXJuIEJ1ZmZlcmVkUmVuZGVyaW5nOjpBdXRvOwogICAgIGNhc2UgQ1NTVmFsdWVE
eW5hbWljOgotICAgICAgICByZXR1cm4gQlJfRFlOQU1JQzsKKyAgICAgICAgcmV0dXJuIEJ1ZmZl
cmVkUmVuZGVyaW5nOjpEeW5hbWljOwogICAgIGNhc2UgQ1NTVmFsdWVTdGF0aWM6Ci0gICAgICAg
IHJldHVybiBCUl9TVEFUSUM7CisgICAgICAgIHJldHVybiBCdWZmZXJlZFJlbmRlcmluZzo6U3Rh
dGljOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAogICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBCUl9BVVRPOworICAgIHJldHVybiBCdWZmZXJlZFJl
bmRlcmluZzo6QXV0bzsKIH0KIAotdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6
OkNTU1ByaW1pdGl2ZVZhbHVlKEVDb2xvckludGVycG9sYXRpb24gZSkKK3RlbXBsYXRlPD4gaW5s
aW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZShDb2xvckludGVycG9sYXRp
b24gZSkKICAgICA6IENTU1ZhbHVlKFByaW1pdGl2ZUNsYXNzKQogewogICAgIG1fcHJpbWl0aXZl
VW5pdFR5cGUgPSBDU1NfVkFMVUVfSUQ7CiAgICAgc3dpdGNoIChlKSB7Ci0gICAgY2FzZSBDSV9B
VVRPOgorICAgIGNhc2UgQ29sb3JJbnRlcnBvbGF0aW9uOjpBdXRvOgogICAgICAgICBtX3ZhbHVl
LnZhbHVlSUQgPSBDU1NWYWx1ZUF1dG87CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ0lfU1JH
QjoKKyAgICBjYXNlIENvbG9ySW50ZXJwb2xhdGlvbjo6U1JHQjoKICAgICAgICAgbV92YWx1ZS52
YWx1ZUlEID0gQ1NTVmFsdWVTUkdCOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIENJX0xJTkVB
UlJHQjoKKyAgICBjYXNlIENvbG9ySW50ZXJwb2xhdGlvbjo6TGluZWFyUkdCOgogICAgICAgICBt
X3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUxpbmVhclJHQjsKICAgICAgICAgYnJlYWs7CiAgICAg
fQogfQogCi10ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgRUNv
bG9ySW50ZXJwb2xhdGlvbigpIGNvbnN0Cit0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVW
YWx1ZTo6b3BlcmF0b3IgQ29sb3JJbnRlcnBvbGF0aW9uKCkgY29uc3QKIHsKICAgICBBU1NFUlQo
aXNWYWx1ZUlEKCkpOwogCiAgICAgc3dpdGNoIChtX3ZhbHVlLnZhbHVlSUQpIHsKICAgICBjYXNl
IENTU1ZhbHVlU1JHQjoKLSAgICAgICAgcmV0dXJuIENJX1NSR0I7CisgICAgICAgIHJldHVybiBD
b2xvckludGVycG9sYXRpb246OlNSR0I7CiAgICAgY2FzZSBDU1NWYWx1ZUxpbmVhclJHQjoKLSAg
ICAgICAgcmV0dXJuIENJX0xJTkVBUlJHQjsKKyAgICAgICAgcmV0dXJuIENvbG9ySW50ZXJwb2xh
dGlvbjo6TGluZWFyUkdCOwogICAgIGNhc2UgQ1NTVmFsdWVBdXRvOgotICAgICAgICByZXR1cm4g
Q0lfQVVUTzsKKyAgICAgICAgcmV0dXJuIENvbG9ySW50ZXJwb2xhdGlvbjo6QXV0bzsKICAgICBk
ZWZhdWx0OgogICAgICAgICBicmVhazsKICAgICB9CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKLSAgICByZXR1cm4gQ0lfQVVUTzsKKyAgICByZXR1cm4gQ29sb3JJbnRlcnBvbGF0aW9uOjpB
dXRvOwogfQogCi10ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0
aXZlVmFsdWUoRUNvbG9yUmVuZGVyaW5nIGUpCit0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRp
dmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoQ29sb3JSZW5kZXJpbmcgZSkKICAgICA6IENTU1Zh
bHVlKFByaW1pdGl2ZUNsYXNzKQogewogICAgIG1fcHJpbWl0aXZlVW5pdFR5cGUgPSBDU1NfVkFM
VUVfSUQ7CiAgICAgc3dpdGNoIChlKSB7Ci0gICAgY2FzZSBDUl9BVVRPOgorICAgIGNhc2UgQ29s
b3JSZW5kZXJpbmc6OkF1dG86CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlQXV0
bzsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDUl9PUFRJTUlaRVNQRUVEOgorICAgIGNhc2Ug
Q29sb3JSZW5kZXJpbmc6Ok9wdGltaXplU3BlZWQ6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9
IENTU1ZhbHVlT3B0aW1pemVTcGVlZDsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDUl9PUFRJ
TUlaRVFVQUxJVFk6CisgICAgY2FzZSBDb2xvclJlbmRlcmluZzo6T3B0aW1pemVRdWFsaXR5Ogog
ICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZU9wdGltaXplUXVhbGl0eTsKICAgICAg
ICAgYnJlYWs7CiAgICAgfQogfQogCi10ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1
ZTo6b3BlcmF0b3IgRUNvbG9yUmVuZGVyaW5nKCkgY29uc3QKK3RlbXBsYXRlPD4gaW5saW5lIENT
U1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBDb2xvclJlbmRlcmluZygpIGNvbnN0CiB7CiAgICAg
QVNTRVJUKGlzVmFsdWVJRCgpKTsKIAogICAgIHN3aXRjaCAobV92YWx1ZS52YWx1ZUlEKSB7CiAg
ICAgY2FzZSBDU1NWYWx1ZU9wdGltaXplU3BlZWQ6Ci0gICAgICAgIHJldHVybiBDUl9PUFRJTUla
RVNQRUVEOworICAgICAgICByZXR1cm4gQ29sb3JSZW5kZXJpbmc6Ok9wdGltaXplU3BlZWQ7CiAg
ICAgY2FzZSBDU1NWYWx1ZU9wdGltaXplUXVhbGl0eToKLSAgICAgICAgcmV0dXJuIENSX09QVElN
SVpFUVVBTElUWTsKKyAgICAgICAgcmV0dXJuIENvbG9yUmVuZGVyaW5nOjpPcHRpbWl6ZVF1YWxp
dHk7CiAgICAgY2FzZSBDU1NWYWx1ZUF1dG86Ci0gICAgICAgIHJldHVybiBDUl9BVVRPOworICAg
ICAgICByZXR1cm4gQ29sb3JSZW5kZXJpbmc6OkF1dG87CiAgICAgZGVmYXVsdDoKICAgICAgICAg
YnJlYWs7CiAgICAgfQogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIENS
X0FVVE87CisgICAgcmV0dXJuIENvbG9yUmVuZGVyaW5nOjpBdXRvOwogfQogCi10ZW1wbGF0ZTw+
IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoRURvbWluYW50QmFz
ZWxpbmUgZSkKK3RlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRp
dmVWYWx1ZShEb21pbmFudEJhc2VsaW5lIGUpCiAgICAgOiBDU1NWYWx1ZShQcmltaXRpdmVDbGFz
cykKIHsKICAgICBtX3ByaW1pdGl2ZVVuaXRUeXBlID0gQ1NTX1ZBTFVFX0lEOwogICAgIHN3aXRj
aCAoZSkgewotICAgIGNhc2UgREJfQVVUTzoKKyAgICBjYXNlIERvbWluYW50QmFzZWxpbmU6OkF1
dG86CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlQXV0bzsKICAgICAgICAgYnJl
YWs7Ci0gICAgY2FzZSBEQl9VU0VfU0NSSVBUOgorICAgIGNhc2UgRG9taW5hbnRCYXNlbGluZTo6
VXNlU2NyaXB0OgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZVVzZVNjcmlwdDsK
ICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBEQl9OT19DSEFOR0U6CisgICAgY2FzZSBEb21pbmFu
dEJhc2VsaW5lOjpOb0NoYW5nZToKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVO
b0NoYW5nZTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBEQl9SRVNFVF9TSVpFOgorICAgIGNh
c2UgRG9taW5hbnRCYXNlbGluZTo6UmVzZXRTaXplOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQg
PSBDU1NWYWx1ZVJlc2V0U2l6ZTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBEQl9DRU5UUkFM
OgorICAgIGNhc2UgRG9taW5hbnRCYXNlbGluZTo6Q2VudHJhbDoKICAgICAgICAgbV92YWx1ZS52
YWx1ZUlEID0gQ1NTVmFsdWVDZW50cmFsOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIERCX01J
RERMRToKKyAgICBjYXNlIERvbWluYW50QmFzZWxpbmU6Ok1pZGRsZToKICAgICAgICAgbV92YWx1
ZS52YWx1ZUlEID0gQ1NTVmFsdWVNaWRkbGU7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgREJf
VEVYVF9CRUZPUkVfRURHRToKKyAgICBjYXNlIERvbWluYW50QmFzZWxpbmU6OlRleHRCZWZvcmVF
ZGdlOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZVRleHRCZWZvcmVFZGdlOwog
ICAgICAgICBicmVhazsKLSAgICBjYXNlIERCX1RFWFRfQUZURVJfRURHRToKKyAgICBjYXNlIERv
bWluYW50QmFzZWxpbmU6OlRleHRBZnRlckVkZ2U6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9
IENTU1ZhbHVlVGV4dEFmdGVyRWRnZTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBEQl9JREVP
R1JBUEhJQzoKKyAgICBjYXNlIERvbWluYW50QmFzZWxpbmU6OklkZW9ncmFwaGljOgogICAgICAg
ICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUlkZW9ncmFwaGljOwogICAgICAgICBicmVhazsK
LSAgICBjYXNlIERCX0FMUEhBQkVUSUM6CisgICAgY2FzZSBEb21pbmFudEJhc2VsaW5lOjpBbHBo
YWJldGljOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUFscGhhYmV0aWM7CiAg
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgREJfSEFOR0lORzoKKyAgICBjYXNlIERvbWluYW50QmFz
ZWxpbmU6Okhhbmdpbmc6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlSGFuZ2lu
ZzsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBEQl9NQVRIRU1BVElDQUw6CisgICAgY2FzZSBE
b21pbmFudEJhc2VsaW5lOjpNYXRoZW1hdGljYWw6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9
IENTU1ZhbHVlTWF0aGVtYXRpY2FsOwogICAgICAgICBicmVhazsKICAgICB9CiB9CiAKLXRlbXBs
YXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBFRG9taW5hbnRCYXNlbGlu
ZSgpIGNvbnN0Cit0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3Ig
RG9taW5hbnRCYXNlbGluZSgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGlzVmFsdWVJRCgpKTsKIAog
ICAgIHN3aXRjaCAobV92YWx1ZS52YWx1ZUlEKSB7CiAgICAgY2FzZSBDU1NWYWx1ZUF1dG86Ci0g
ICAgICAgIHJldHVybiBEQl9BVVRPOworICAgICAgICByZXR1cm4gRG9taW5hbnRCYXNlbGluZTo6
QXV0bzsKICAgICBjYXNlIENTU1ZhbHVlVXNlU2NyaXB0OgotICAgICAgICByZXR1cm4gREJfVVNF
X1NDUklQVDsKKyAgICAgICAgcmV0dXJuIERvbWluYW50QmFzZWxpbmU6OlVzZVNjcmlwdDsKICAg
ICBjYXNlIENTU1ZhbHVlTm9DaGFuZ2U6Ci0gICAgICAgIHJldHVybiBEQl9OT19DSEFOR0U7Cisg
ICAgICAgIHJldHVybiBEb21pbmFudEJhc2VsaW5lOjpOb0NoYW5nZTsKICAgICBjYXNlIENTU1Zh
bHVlUmVzZXRTaXplOgotICAgICAgICByZXR1cm4gREJfUkVTRVRfU0laRTsKKyAgICAgICAgcmV0
dXJuIERvbWluYW50QmFzZWxpbmU6OlJlc2V0U2l6ZTsKICAgICBjYXNlIENTU1ZhbHVlSWRlb2dy
YXBoaWM6Ci0gICAgICAgIHJldHVybiBEQl9JREVPR1JBUEhJQzsKKyAgICAgICAgcmV0dXJuIERv
bWluYW50QmFzZWxpbmU6OklkZW9ncmFwaGljOwogICAgIGNhc2UgQ1NTVmFsdWVBbHBoYWJldGlj
OgotICAgICAgICByZXR1cm4gREJfQUxQSEFCRVRJQzsKKyAgICAgICAgcmV0dXJuIERvbWluYW50
QmFzZWxpbmU6OkFscGhhYmV0aWM7CiAgICAgY2FzZSBDU1NWYWx1ZUhhbmdpbmc6Ci0gICAgICAg
IHJldHVybiBEQl9IQU5HSU5HOworICAgICAgICByZXR1cm4gRG9taW5hbnRCYXNlbGluZTo6SGFu
Z2luZzsKICAgICBjYXNlIENTU1ZhbHVlTWF0aGVtYXRpY2FsOgotICAgICAgICByZXR1cm4gREJf
TUFUSEVNQVRJQ0FMOworICAgICAgICByZXR1cm4gRG9taW5hbnRCYXNlbGluZTo6TWF0aGVtYXRp
Y2FsOwogICAgIGNhc2UgQ1NTVmFsdWVDZW50cmFsOgotICAgICAgICByZXR1cm4gREJfQ0VOVFJB
TDsKKyAgICAgICAgcmV0dXJuIERvbWluYW50QmFzZWxpbmU6OkNlbnRyYWw7CiAgICAgY2FzZSBD
U1NWYWx1ZU1pZGRsZToKLSAgICAgICAgcmV0dXJuIERCX01JRERMRTsKKyAgICAgICAgcmV0dXJu
IERvbWluYW50QmFzZWxpbmU6Ok1pZGRsZTsKICAgICBjYXNlIENTU1ZhbHVlVGV4dEFmdGVyRWRn
ZToKLSAgICAgICAgcmV0dXJuIERCX1RFWFRfQUZURVJfRURHRTsKKyAgICAgICAgcmV0dXJuIERv
bWluYW50QmFzZWxpbmU6OlRleHRBZnRlckVkZ2U7CiAgICAgY2FzZSBDU1NWYWx1ZVRleHRCZWZv
cmVFZGdlOgotICAgICAgICByZXR1cm4gREJfVEVYVF9CRUZPUkVfRURHRTsKKyAgICAgICAgcmV0
dXJuIERvbWluYW50QmFzZWxpbmU6OlRleHRCZWZvcmVFZGdlOwogICAgIGRlZmF1bHQ6CiAgICAg
ICAgIGJyZWFrOwogICAgIH0KIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVy
biBEQl9BVVRPOworICAgIHJldHVybiBEb21pbmFudEJhc2VsaW5lOjpBdXRvOwogfQogCi10ZW1w
bGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoRVNoYXBl
UmVuZGVyaW5nIGUpCit0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJp
bWl0aXZlVmFsdWUoU2hhcGVSZW5kZXJpbmcgZSkKICAgICA6IENTU1ZhbHVlKFByaW1pdGl2ZUNs
YXNzKQogewogICAgIG1fcHJpbWl0aXZlVW5pdFR5cGUgPSBDU1NfVkFMVUVfSUQ7CiAgICAgc3dp
dGNoIChlKSB7Ci0gICAgY2FzZSBTUl9BVVRPOgorICAgIGNhc2UgU2hhcGVSZW5kZXJpbmc6OkF1
dG86CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlQXV0bzsKICAgICAgICAgYnJl
YWs7Ci0gICAgY2FzZSBTUl9PUFRJTUlaRVNQRUVEOgorICAgIGNhc2UgU2hhcGVSZW5kZXJpbmc6
Ok9wdGltaXplU3BlZWQ6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlT3B0aW1p
emVTcGVlZDsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTUl9DUklTUEVER0VTOgorICAgIGNh
c2UgU2hhcGVSZW5kZXJpbmc6OkNyaXNwRWRnZXM6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9
IENTU1ZhbHVlQ3Jpc3BlZGdlczsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTUl9HRU9NRVRS
SUNQUkVDSVNJT046CisgICAgY2FzZSBTaGFwZVJlbmRlcmluZzo6R2VvbWV0cmljUHJlY2lzaW9u
OgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUdlb21ldHJpY1ByZWNpc2lvbjsK
ICAgICAgICAgYnJlYWs7CiAgICAgfQogfQogCi10ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRp
dmVWYWx1ZTo6b3BlcmF0b3IgRVNoYXBlUmVuZGVyaW5nKCkgY29uc3QKK3RlbXBsYXRlPD4gaW5s
aW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBTaGFwZVJlbmRlcmluZygpIGNvbnN0CiB7
CiAgICAgQVNTRVJUKGlzVmFsdWVJRCgpKTsKIAogICAgIHN3aXRjaCAobV92YWx1ZS52YWx1ZUlE
KSB7CiAgICAgY2FzZSBDU1NWYWx1ZUF1dG86Ci0gICAgICAgIHJldHVybiBTUl9BVVRPOworICAg
ICAgICByZXR1cm4gU2hhcGVSZW5kZXJpbmc6OkF1dG87CiAgICAgY2FzZSBDU1NWYWx1ZU9wdGlt
aXplU3BlZWQ6Ci0gICAgICAgIHJldHVybiBTUl9PUFRJTUlaRVNQRUVEOworICAgICAgICByZXR1
cm4gU2hhcGVSZW5kZXJpbmc6Ok9wdGltaXplU3BlZWQ7CiAgICAgY2FzZSBDU1NWYWx1ZUNyaXNw
ZWRnZXM6Ci0gICAgICAgIHJldHVybiBTUl9DUklTUEVER0VTOworICAgICAgICByZXR1cm4gU2hh
cGVSZW5kZXJpbmc6OkNyaXNwRWRnZXM7CiAgICAgY2FzZSBDU1NWYWx1ZUdlb21ldHJpY1ByZWNp
c2lvbjoKLSAgICAgICAgcmV0dXJuIFNSX0dFT01FVFJJQ1BSRUNJU0lPTjsKKyAgICAgICAgcmV0
dXJuIFNoYXBlUmVuZGVyaW5nOjpHZW9tZXRyaWNQcmVjaXNpb247CiAgICAgZGVmYXVsdDoKICAg
ICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0
dXJuIFNSX0FVVE87CisgICAgcmV0dXJuIFNoYXBlUmVuZGVyaW5nOjpBdXRvOwogfQogCi10ZW1w
bGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoRVRleHRB
bmNob3IgZSkKK3RlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRp
dmVWYWx1ZShUZXh0QW5jaG9yIGUpCiAgICAgOiBDU1NWYWx1ZShQcmltaXRpdmVDbGFzcykKIHsK
ICAgICBtX3ByaW1pdGl2ZVVuaXRUeXBlID0gQ1NTX1ZBTFVFX0lEOwogICAgIHN3aXRjaCAoZSkg
ewotICAgIGNhc2UgVEFfU1RBUlQ6CisgICAgY2FzZSBUZXh0QW5jaG9yOjpTdGFydDoKICAgICAg
ICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVTdGFydDsKICAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBUQV9NSURETEU6CisgICAgY2FzZSBUZXh0QW5jaG9yOjpNaWRkbGU6CiAgICAgICAgIG1f
dmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlTWlkZGxlOwogICAgICAgICBicmVhazsKLSAgICBjYXNl
IFRBX0VORDoKKyAgICBjYXNlIFRleHRBbmNob3I6OkVuZDoKICAgICAgICAgbV92YWx1ZS52YWx1
ZUlEID0gQ1NTVmFsdWVFbmQ7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIH0KIAotdGVtcGxhdGU8
PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIEVUZXh0QW5jaG9yKCkgY29uc3QK
K3RlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBUZXh0QW5jaG9y
KCkgY29uc3QKIHsKICAgICBBU1NFUlQoaXNWYWx1ZUlEKCkpOwogCiAgICAgc3dpdGNoIChtX3Zh
bHVlLnZhbHVlSUQpIHsKICAgICBjYXNlIENTU1ZhbHVlU3RhcnQ6Ci0gICAgICAgIHJldHVybiBU
QV9TVEFSVDsKKyAgICAgICAgcmV0dXJuIFRleHRBbmNob3I6OlN0YXJ0OwogICAgIGNhc2UgQ1NT
VmFsdWVNaWRkbGU6Ci0gICAgICAgIHJldHVybiBUQV9NSURETEU7CisgICAgICAgIHJldHVybiBU
ZXh0QW5jaG9yOjpNaWRkbGU7CiAgICAgY2FzZSBDU1NWYWx1ZUVuZDoKLSAgICAgICAgcmV0dXJu
IFRBX0VORDsKKyAgICAgICAgcmV0dXJuIFRleHRBbmNob3I6OkVuZDsKICAgICBkZWZhdWx0Ogog
ICAgICAgICBicmVhazsKICAgICB9CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICBy
ZXR1cm4gVEFfU1RBUlQ7CisgICAgcmV0dXJuIFRleHRBbmNob3I6OlN0YXJ0OwogfQogCiB0ZW1w
bGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoY29uc3Qg
Q29sb3ImIGNvbG9yKQpAQCAtNDc4OSw2NiArNDc4OSw2NiBAQCB0ZW1wbGF0ZTw+IGlubGluZSBD
U1NQcmltaXRpdmVWYWx1ZTo6Q1NTCiAgICAgbV92YWx1ZS5mb250RmFtaWx5ID0gbmV3IENTU0Zv
bnRGYW1pbHkoV1RGTW92ZShmb250RmFtaWx5KSk7CiB9CiAKLXRlbXBsYXRlPD4gaW5saW5lIENT
U1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZShFVmVjdG9yRWZmZWN0IGUpCit0ZW1w
bGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoVmVjdG9y
RWZmZWN0IGUpCiAgICAgOiBDU1NWYWx1ZShQcmltaXRpdmVDbGFzcykKIHsKICAgICBtX3ByaW1p
dGl2ZVVuaXRUeXBlID0gQ1NTX1ZBTFVFX0lEOwogICAgIHN3aXRjaCAoZSkgewotICAgIGNhc2Ug
VkVfTk9ORToKKyAgICBjYXNlIFZlY3RvckVmZmVjdDo6Tm9uZToKICAgICAgICAgbV92YWx1ZS52
YWx1ZUlEID0gQ1NTVmFsdWVOb25lOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFZFX05PTl9T
Q0FMSU5HX1NUUk9LRToKKyAgICBjYXNlIFZlY3RvckVmZmVjdDo6Tm9uU2NhbGluZ1N0cm9rZToK
ICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVOb25TY2FsaW5nU3Ryb2tlOwogICAg
ICAgICBicmVhazsKICAgICB9CiB9CiAKLXRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZh
bHVlOjpvcGVyYXRvciBFVmVjdG9yRWZmZWN0KCkgY29uc3QKK3RlbXBsYXRlPD4gaW5saW5lIENT
U1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBWZWN0b3JFZmZlY3QoKSBjb25zdAogewogICAgIEFT
U0VSVChpc1ZhbHVlSUQoKSk7CiAKICAgICBzd2l0Y2ggKG1fdmFsdWUudmFsdWVJRCkgewogICAg
IGNhc2UgQ1NTVmFsdWVOb25lOgotICAgICAgICByZXR1cm4gVkVfTk9ORTsKKyAgICAgICAgcmV0
dXJuIFZlY3RvckVmZmVjdDo6Tm9uZTsKICAgICBjYXNlIENTU1ZhbHVlTm9uU2NhbGluZ1N0cm9r
ZToKLSAgICAgICAgcmV0dXJuIFZFX05PTl9TQ0FMSU5HX1NUUk9LRTsKKyAgICAgICAgcmV0dXJu
IFZlY3RvckVmZmVjdDo6Tm9uU2NhbGluZ1N0cm9rZTsKICAgICBkZWZhdWx0OgogICAgICAgICBi
cmVhazsKICAgICB9CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gVkVf
Tk9ORTsKKyAgICByZXR1cm4gVmVjdG9yRWZmZWN0OjpOb25lOwogfQogCi10ZW1wbGF0ZTw+IGlu
bGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoRU1hc2tUeXBlIGUpCit0
ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoTWFz
a1R5cGUgZSkKICAgICA6IENTU1ZhbHVlKFByaW1pdGl2ZUNsYXNzKQogewogICAgIG1fcHJpbWl0
aXZlVW5pdFR5cGUgPSBDU1NfVkFMVUVfSUQ7CiAgICAgc3dpdGNoIChlKSB7Ci0gICAgY2FzZSBN
VF9MVU1JTkFOQ0U6CisgICAgY2FzZSBNYXNrVHlwZTo6THVtaW5hbmNlOgogICAgICAgICBtX3Zh
bHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUx1bWluYW5jZTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2Fz
ZSBNVF9BTFBIQToKKyAgICBjYXNlIE1hc2tUeXBlOjpBbHBoYToKICAgICAgICAgbV92YWx1ZS52
YWx1ZUlEID0gQ1NTVmFsdWVBbHBoYTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogfQogCi10ZW1w
bGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgRU1hc2tUeXBlKCkgY29u
c3QKK3RlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBNYXNrVHlw
ZSgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGlzVmFsdWVJRCgpKTsKIAogICAgIHN3aXRjaCAobV92
YWx1ZS52YWx1ZUlEKSB7CiAgICAgY2FzZSBDU1NWYWx1ZUx1bWluYW5jZToKLSAgICAgICAgcmV0
dXJuIE1UX0xVTUlOQU5DRTsKKyAgICAgICAgcmV0dXJuIE1hc2tUeXBlOjpMdW1pbmFuY2U7CiAg
ICAgY2FzZSBDU1NWYWx1ZUFscGhhOgotICAgICAgICByZXR1cm4gTVRfQUxQSEE7CisgICAgICAg
IHJldHVybiBNYXNrVHlwZTo6QWxwaGE7CiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJlYWs7CiAg
ICAgfQogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIE1UX0xVTUlOQU5D
RTsKKyAgICByZXR1cm4gTWFza1R5cGU6Okx1bWluYW5jZTsKIH0KIAogI2lmIEVOQUJMRShDU1Nf
SU1BR0VfT1JJRU5UQVRJT04pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvU1ZHQ1NTQ29tcHV0
ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3Mv
U1ZHQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAkocmV2aXNpb24gMjMyMTg5KQorKysg
U291cmNlL1dlYkNvcmUvY3NzL1NWR0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTMwLDE5ICszMCwxOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LXN0YXRpYyBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGdseXBoT3JpZW50YXRpb25Ub0NTU1By
aW1pdGl2ZVZhbHVlKEVHbHlwaE9yaWVudGF0aW9uIG9yaWVudGF0aW9uKQorc3RhdGljIFJlZlB0
cjxDU1NQcmltaXRpdmVWYWx1ZT4gZ2x5cGhPcmllbnRhdGlvblRvQ1NTUHJpbWl0aXZlVmFsdWUo
R2x5cGhPcmllbnRhdGlvbiBvcmllbnRhdGlvbikKIHsKICAgICBzd2l0Y2ggKG9yaWVudGF0aW9u
KSB7Ci0gICAgICAgIGNhc2UgR09fMERFRzoKLSAgICAgICAgICAgIHJldHVybiBDU1NQcmltaXRp
dmVWYWx1ZTo6Y3JlYXRlKDAuMGYsIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfREVHKTsKLSAgICAg
ICAgY2FzZSBHT185MERFRzoKLSAgICAgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6
Y3JlYXRlKDkwLjBmLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0RFRyk7Ci0gICAgICAgIGNhc2Ug
R09fMTgwREVHOgotICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUo
MTgwLjBmLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0RFRyk7Ci0gICAgICAgIGNhc2UgR09fMjcw
REVHOgotICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoMjcwLjBm
LCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0RFRyk7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBjYXNlIEdseXBoT3JpZW50YXRpb246OkRlZ3JlZXMw
OgorICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSgwLjBmLCBDU1NQcmlt
aXRpdmVWYWx1ZTo6Q1NTX0RFRyk7CisgICAgY2FzZSBHbHlwaE9yaWVudGF0aW9uOjpEZWdyZWVz
OTA6CisgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKDkwLjBmLCBDU1NQ
cmltaXRpdmVWYWx1ZTo6Q1NTX0RFRyk7CisgICAgY2FzZSBHbHlwaE9yaWVudGF0aW9uOjpEZWdy
ZWVzMTgwOgorICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSgxODAuMGYs
IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfREVHKTsKKyAgICBjYXNlIEdseXBoT3JpZW50YXRpb246
OkRlZ3JlZXMyNzA6CisgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKDI3
MC4wZiwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19ERUcpOworICAgIGNhc2UgR2x5cGhPcmllbnRh
dGlvbjo6QXV0bzoKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogfQogCkBAIC02MCwy
MCArNjAsMjAgQEAgc3RhdGljIFJlZlB0cjxDU1NWYWx1ZT4gc3Ryb2tlRGFzaEFycmF5VAogCiBS
ZWZQdHI8Q1NTVmFsdWU+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OmFkanVzdFNWR1BhaW50Rm9y
Q3VycmVudENvbG9yKFNWR1BhaW50VHlwZSBwYWludFR5cGUsIGNvbnN0IFN0cmluZyYgdXJsLCBj
b25zdCBDb2xvciYgY29sb3IsIGNvbnN0IENvbG9yJiBjdXJyZW50Q29sb3IpIGNvbnN0CiB7Ci0g
ICAgaWYgKHBhaW50VHlwZSA+PSBTVkdfUEFJTlRUWVBFX1VSSV9OT05FKSB7CisgICAgaWYgKHBh
aW50VHlwZSA+PSBTVkdQYWludFR5cGU6OlVSSU5vbmUpIHsKICAgICAgICAgUmVmUHRyPENTU1Zh
bHVlTGlzdD4gdmFsdWVzID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOwog
ICAgICAgICB2YWx1ZXMtPmFwcGVuZChDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHVybCwgQ1NT
UHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlOjpDU1NfVVJJKSk7Ci0gICAgICAgIGlmIChwYWludFR5
cGUgPT0gU1ZHX1BBSU5UVFlQRV9VUklfTk9ORSkKKyAgICAgICAgaWYgKHBhaW50VHlwZSA9PSBT
VkdQYWludFR5cGU6OlVSSU5vbmUpCiAgICAgICAgICAgICB2YWx1ZXMtPmFwcGVuZChDU1NQcmlt
aXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihDU1NWYWx1ZU5vbmUpKTsKLSAgICAgICAgZWxz
ZSBpZiAocGFpbnRUeXBlID09IFNWR19QQUlOVFRZUEVfVVJJX0NVUlJFTlRDT0xPUikKKyAgICAg
ICAgZWxzZSBpZiAocGFpbnRUeXBlID09IFNWR1BhaW50VHlwZTo6VVJJQ3VycmVudENvbG9yKQog
ICAgICAgICAgICAgdmFsdWVzLT5hcHBlbmQoQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShjdXJy
ZW50Q29sb3IpKTsKLSAgICAgICAgZWxzZSBpZiAocGFpbnRUeXBlID09IFNWR19QQUlOVFRZUEVf
VVJJX1JHQkNPTE9SKQorICAgICAgICBlbHNlIGlmIChwYWludFR5cGUgPT0gU1ZHUGFpbnRUeXBl
OjpVUklSR0JDb2xvcikKICAgICAgICAgICAgIHZhbHVlcy0+YXBwZW5kKENTU1ByaW1pdGl2ZVZh
bHVlOjpjcmVhdGUoY29sb3IpKTsKICAgICAgICAgcmV0dXJuIHZhbHVlczsKICAgICB9Ci0gICAg
aWYgKHBhaW50VHlwZSA9PSBTVkdfUEFJTlRUWVBFX05PTkUpCisgICAgaWYgKHBhaW50VHlwZSA9
PSBTVkdQYWludFR5cGU6Ok5vbmUpCiAgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6
Y3JlYXRlSWRlbnRpZmllcihDU1NWYWx1ZU5vbmUpOwotICAgIGlmIChwYWludFR5cGUgPT0gU1ZH
X1BBSU5UVFlQRV9DVVJSRU5UQ09MT1IpCisgICAgaWYgKHBhaW50VHlwZSA9PSBTVkdQYWludFR5
cGU6OkN1cnJlbnRDb2xvcikKICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVh
dGUoY3VycmVudENvbG9yKTsKICAgICAKICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNy
ZWF0ZShjb2xvcik7CkBAIC05NSwxMDQgKzk1LDEwNCBAQCBSZWZQdHI8Q1NTVmFsdWU+IENvbXB1
dGVkU3R5bGVFeHRyYWN0b3I6CiAgICAgY29uc3QgU1ZHUmVuZGVyU3R5bGUmIHN2Z1N0eWxlID0g
c3R5bGUtPnN2Z1N0eWxlKCk7CiAKICAgICBzd2l0Y2ggKHByb3BlcnR5SUQpIHsKLSAgICAgICAg
Y2FzZSBDU1NQcm9wZXJ0eUNsaXBSdWxlOgotICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2
ZVZhbHVlOjpjcmVhdGUoc3ZnU3R5bGUuY2xpcFJ1bGUoKSk7Ci0gICAgICAgIGNhc2UgQ1NTUHJv
cGVydHlGbG9vZE9wYWNpdHk6Ci0gICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6
OmNyZWF0ZShzdmdTdHlsZS5mbG9vZE9wYWNpdHkoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19O
VU1CRVIpOwotICAgICAgICBjYXNlIENTU1Byb3BlcnR5U3RvcE9wYWNpdHk6Ci0gICAgICAgICAg
ICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShzdmdTdHlsZS5zdG9wT3BhY2l0eSgp
LCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUik7Ci0gICAgICAgIGNhc2UgQ1NTUHJvcGVy
dHlDb2xvckludGVycG9sYXRpb246Ci0gICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFs
dWU6OmNyZWF0ZShzdmdTdHlsZS5jb2xvckludGVycG9sYXRpb24oKSk7Ci0gICAgICAgIGNhc2Ug
Q1NTUHJvcGVydHlDb2xvckludGVycG9sYXRpb25GaWx0ZXJzOgotICAgICAgICAgICAgcmV0dXJu
IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoc3ZnU3R5bGUuY29sb3JJbnRlcnBvbGF0aW9uRmls
dGVycygpKTsKLSAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUZpbGxPcGFjaXR5OgotICAgICAgICAg
ICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoc3ZnU3R5bGUuZmlsbE9wYWNpdHko
KSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpOwotICAgICAgICBjYXNlIENTU1Byb3Bl
cnR5RmlsbFJ1bGU6Ci0gICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0
ZShzdmdTdHlsZS5maWxsUnVsZSgpKTsKLSAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUNvbG9yUmVu
ZGVyaW5nOgotICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoc3Zn
U3R5bGUuY29sb3JSZW5kZXJpbmcoKSk7Ci0gICAgICAgIGNhc2UgQ1NTUHJvcGVydHlTaGFwZVJl
bmRlcmluZzoKLSAgICAgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHN2
Z1N0eWxlLnNoYXBlUmVuZGVyaW5nKCkpOwotICAgICAgICBjYXNlIENTU1Byb3BlcnR5U3Ryb2tl
T3BhY2l0eToKLSAgICAgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHN2
Z1N0eWxlLnN0cm9rZU9wYWNpdHkoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpOwot
ICAgICAgICBjYXNlIENTU1Byb3BlcnR5QWxpZ25tZW50QmFzZWxpbmU6Ci0gICAgICAgICAgICBy
ZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShzdmdTdHlsZS5hbGlnbm1lbnRCYXNlbGlu
ZSgpKTsKLSAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eURvbWluYW50QmFzZWxpbmU6Ci0gICAgICAg
ICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShzdmdTdHlsZS5kb21pbmFudEJh
c2VsaW5lKCkpOwotICAgICAgICBjYXNlIENTU1Byb3BlcnR5VGV4dEFuY2hvcjoKLSAgICAgICAg
ICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHN2Z1N0eWxlLnRleHRBbmNob3Io
KSk7Ci0gICAgICAgIGNhc2UgQ1NTUHJvcGVydHlDbGlwUGF0aDoKLSAgICAgICAgICAgIGlmICgh
c3ZnU3R5bGUuY2xpcHBlclJlc291cmNlKCkuaXNFbXB0eSgpKQotICAgICAgICAgICAgICAgIHJl
dHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHN2Z1N0eWxlLmNsaXBwZXJSZXNvdXJjZSgp
LCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1VSSSk7Ci0gICAgICAgICAgICByZXR1cm4gQ1NTUHJp
bWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoQ1NTVmFsdWVOb25lKTsKLSAgICAgICAgY2Fz
ZSBDU1NQcm9wZXJ0eU1hc2s6Ci0gICAgICAgICAgICBpZiAoIXN2Z1N0eWxlLm1hc2tlclJlc291
cmNlKCkuaXNFbXB0eSgpKQotICAgICAgICAgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1
ZTo6Y3JlYXRlKHN2Z1N0eWxlLm1hc2tlclJlc291cmNlKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpD
U1NfVVJJKTsKLSAgICAgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRl
bnRpZmllcihDU1NWYWx1ZU5vbmUpOwotICAgICAgICBjYXNlIENTU1Byb3BlcnR5Rmxvb2RDb2xv
cjoKLSAgICAgICAgICAgIHJldHVybiBjdXJyZW50Q29sb3JPclZhbGlkQ29sb3Ioc3R5bGUsIHN2
Z1N0eWxlLmZsb29kQ29sb3IoKSk7Ci0gICAgICAgIGNhc2UgQ1NTUHJvcGVydHlMaWdodGluZ0Nv
bG9yOgotICAgICAgICAgICAgcmV0dXJuIGN1cnJlbnRDb2xvck9yVmFsaWRDb2xvcihzdHlsZSwg
c3ZnU3R5bGUubGlnaHRpbmdDb2xvcigpKTsKLSAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVN0b3BD
b2xvcjoKLSAgICAgICAgICAgIHJldHVybiBjdXJyZW50Q29sb3JPclZhbGlkQ29sb3Ioc3R5bGUs
IHN2Z1N0eWxlLnN0b3BDb2xvcigpKTsKLSAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUZpbGw6Ci0g
ICAgICAgICAgICByZXR1cm4gYWRqdXN0U1ZHUGFpbnRGb3JDdXJyZW50Q29sb3Ioc3ZnU3R5bGUu
ZmlsbFBhaW50VHlwZSgpLCBzdmdTdHlsZS5maWxsUGFpbnRVcmkoKSwgc3ZnU3R5bGUuZmlsbFBh
aW50Q29sb3IoKSwgc3R5bGUtPmNvbG9yKCkpOwotICAgICAgICBjYXNlIENTU1Byb3BlcnR5S2Vy
bmluZzoKLSAgICAgICAgICAgIHJldHVybiBTVkdMZW5ndGhWYWx1ZTo6dG9DU1NQcmltaXRpdmVW
YWx1ZShzdmdTdHlsZS5rZXJuaW5nKCkpOwotICAgICAgICBjYXNlIENTU1Byb3BlcnR5TWFya2Vy
RW5kOgotICAgICAgICAgICAgaWYgKCFzdmdTdHlsZS5tYXJrZXJFbmRSZXNvdXJjZSgpLmlzRW1w
dHkoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShz
dmdTdHlsZS5tYXJrZXJFbmRSZXNvdXJjZSgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1VSSSk7
Ci0gICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIo
Q1NTVmFsdWVOb25lKTsKLSAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eU1hcmtlck1pZDoKLSAgICAg
ICAgICAgIGlmICghc3ZnU3R5bGUubWFya2VyTWlkUmVzb3VyY2UoKS5pc0VtcHR5KCkpCi0gICAg
ICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoc3ZnU3R5bGUubWFy
a2VyTWlkUmVzb3VyY2UoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19VUkkpOwotICAgICAgICAg
ICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKENTU1ZhbHVlTm9u
ZSk7Ci0gICAgICAgIGNhc2UgQ1NTUHJvcGVydHlNYXJrZXJTdGFydDoKLSAgICAgICAgICAgIGlm
ICghc3ZnU3R5bGUubWFya2VyU3RhcnRSZXNvdXJjZSgpLmlzRW1wdHkoKSkKLSAgICAgICAgICAg
ICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShzdmdTdHlsZS5tYXJrZXJTdGFy
dFJlc291cmNlKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfVVJJKTsKLSAgICAgICAgICAgIHJl
dHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihDU1NWYWx1ZU5vbmUpOwot
ICAgICAgICBjYXNlIENTU1Byb3BlcnR5U3Ryb2tlOgotICAgICAgICAgICAgcmV0dXJuIGFkanVz
dFNWR1BhaW50Rm9yQ3VycmVudENvbG9yKHN2Z1N0eWxlLnN0cm9rZVBhaW50VHlwZSgpLCBzdmdT
dHlsZS5zdHJva2VQYWludFVyaSgpLCBzdmdTdHlsZS5zdHJva2VQYWludENvbG9yKCksIHN0eWxl
LT5jb2xvcigpKTsKLSAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVN0cm9rZURhc2hhcnJheToKLSAg
ICAgICAgICAgIHJldHVybiBzdHJva2VEYXNoQXJyYXlUb0NTU1ZhbHVlTGlzdChzdmdTdHlsZS5z
dHJva2VEYXNoQXJyYXkoKSk7Ci0gICAgICAgIGNhc2UgQ1NTUHJvcGVydHlCYXNlbGluZVNoaWZ0
OiB7Ci0gICAgICAgICAgICBzd2l0Y2ggKHN2Z1N0eWxlLmJhc2VsaW5lU2hpZnQoKSkgewotICAg
ICAgICAgICAgICAgIGNhc2UgQlNfQkFTRUxJTkU6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVy
biBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihDU1NWYWx1ZUJhc2VsaW5lKTsK
LSAgICAgICAgICAgICAgICBjYXNlIEJTX1NVUEVSOgotICAgICAgICAgICAgICAgICAgICByZXR1
cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoQ1NTVmFsdWVTdXBlcik7Ci0g
ICAgICAgICAgICAgICAgY2FzZSBCU19TVUI6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBD
U1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihDU1NWYWx1ZVN1Yik7Ci0gICAgICAg
ICAgICAgICAgY2FzZSBCU19MRU5HVEg6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBTVkdM
ZW5ndGhWYWx1ZTo6dG9DU1NQcmltaXRpdmVWYWx1ZShzdmdTdHlsZS5iYXNlbGluZVNoaWZ0VmFs
dWUoKSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
LSAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgIGNhc2UgQ1NTUHJvcGVydHlDbGlwUnVs
ZToKKyAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoc3ZnU3R5bGUuY2xp
cFJ1bGUoKSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUZsb29kT3BhY2l0eToKKyAgICAgICAgcmV0
dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoc3ZnU3R5bGUuZmxvb2RPcGFjaXR5KCksIENT
U1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5U3RvcE9w
YWNpdHk6CisgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHN2Z1N0eWxl
LnN0b3BPcGFjaXR5KCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKTsKKyAgICBjYXNl
IENTU1Byb3BlcnR5Q29sb3JJbnRlcnBvbGF0aW9uOgorICAgICAgICByZXR1cm4gQ1NTUHJpbWl0
aXZlVmFsdWU6OmNyZWF0ZShzdmdTdHlsZS5jb2xvckludGVycG9sYXRpb24oKSk7CisgICAgY2Fz
ZSBDU1NQcm9wZXJ0eUNvbG9ySW50ZXJwb2xhdGlvbkZpbHRlcnM6CisgICAgICAgIHJldHVybiBD
U1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHN2Z1N0eWxlLmNvbG9ySW50ZXJwb2xhdGlvbkZpbHRl
cnMoKSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUZpbGxPcGFjaXR5OgorICAgICAgICByZXR1cm4g
Q1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShzdmdTdHlsZS5maWxsT3BhY2l0eSgpLCBDU1NQcmlt
aXRpdmVWYWx1ZTo6Q1NTX05VTUJFUik7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUZpbGxSdWxlOgor
ICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShzdmdTdHlsZS5maWxsUnVs
ZSgpKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5Q29sb3JSZW5kZXJpbmc6CisgICAgICAgIHJldHVy
biBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHN2Z1N0eWxlLmNvbG9yUmVuZGVyaW5nKCkpOwor
ICAgIGNhc2UgQ1NTUHJvcGVydHlTaGFwZVJlbmRlcmluZzoKKyAgICAgICAgcmV0dXJuIENTU1By
aW1pdGl2ZVZhbHVlOjpjcmVhdGUoc3ZnU3R5bGUuc2hhcGVSZW5kZXJpbmcoKSk7CisgICAgY2Fz
ZSBDU1NQcm9wZXJ0eVN0cm9rZU9wYWNpdHk6CisgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVW
YWx1ZTo6Y3JlYXRlKHN2Z1N0eWxlLnN0cm9rZU9wYWNpdHkoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6
OkNTU19OVU1CRVIpOworICAgIGNhc2UgQ1NTUHJvcGVydHlBbGlnbm1lbnRCYXNlbGluZToKKyAg
ICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoc3ZnU3R5bGUuYWxpZ25tZW50
QmFzZWxpbmUoKSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eURvbWluYW50QmFzZWxpbmU6CisgICAg
ICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHN2Z1N0eWxlLmRvbWluYW50QmFz
ZWxpbmUoKSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRBbmNob3I6CisgICAgICAgIHJldHVy
biBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHN2Z1N0eWxlLnRleHRBbmNob3IoKSk7CisgICAg
Y2FzZSBDU1NQcm9wZXJ0eUNsaXBQYXRoOgorICAgICAgICBpZiAoIXN2Z1N0eWxlLmNsaXBwZXJS
ZXNvdXJjZSgpLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1
ZTo6Y3JlYXRlKHN2Z1N0eWxlLmNsaXBwZXJSZXNvdXJjZSgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6
Q1NTX1VSSSk7CisgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRp
ZmllcihDU1NWYWx1ZU5vbmUpOworICAgIGNhc2UgQ1NTUHJvcGVydHlNYXNrOgorICAgICAgICBp
ZiAoIXN2Z1N0eWxlLm1hc2tlclJlc291cmNlKCkuaXNFbXB0eSgpKQorICAgICAgICAgICAgcmV0
dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoc3ZnU3R5bGUubWFza2VyUmVzb3VyY2UoKSwg
Q1NTUHJpbWl0aXZlVmFsdWU6OkNTU19VUkkpOworICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZl
VmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoQ1NTVmFsdWVOb25lKTsKKyAgICBjYXNlIENTU1Byb3Bl
cnR5Rmxvb2RDb2xvcjoKKyAgICAgICAgcmV0dXJuIGN1cnJlbnRDb2xvck9yVmFsaWRDb2xvcihz
dHlsZSwgc3ZnU3R5bGUuZmxvb2RDb2xvcigpKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5TGlnaHRp
bmdDb2xvcjoKKyAgICAgICAgcmV0dXJuIGN1cnJlbnRDb2xvck9yVmFsaWRDb2xvcihzdHlsZSwg
c3ZnU3R5bGUubGlnaHRpbmdDb2xvcigpKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5U3RvcENvbG9y
OgorICAgICAgICByZXR1cm4gY3VycmVudENvbG9yT3JWYWxpZENvbG9yKHN0eWxlLCBzdmdTdHls
ZS5zdG9wQ29sb3IoKSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUZpbGw6CisgICAgICAgIHJldHVy
biBhZGp1c3RTVkdQYWludEZvckN1cnJlbnRDb2xvcihzdmdTdHlsZS5maWxsUGFpbnRUeXBlKCks
IHN2Z1N0eWxlLmZpbGxQYWludFVyaSgpLCBzdmdTdHlsZS5maWxsUGFpbnRDb2xvcigpLCBzdHls
ZS0+Y29sb3IoKSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUtlcm5pbmc6CisgICAgICAgIHJldHVy
biBTVkdMZW5ndGhWYWx1ZTo6dG9DU1NQcmltaXRpdmVWYWx1ZShzdmdTdHlsZS5rZXJuaW5nKCkp
OworICAgIGNhc2UgQ1NTUHJvcGVydHlNYXJrZXJFbmQ6CisgICAgICAgIGlmICghc3ZnU3R5bGUu
bWFya2VyRW5kUmVzb3VyY2UoKS5pc0VtcHR5KCkpCisgICAgICAgICAgICByZXR1cm4gQ1NTUHJp
bWl0aXZlVmFsdWU6OmNyZWF0ZShzdmdTdHlsZS5tYXJrZXJFbmRSZXNvdXJjZSgpLCBDU1NQcmlt
aXRpdmVWYWx1ZTo6Q1NTX1VSSSk7CisgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6
Y3JlYXRlSWRlbnRpZmllcihDU1NWYWx1ZU5vbmUpOworICAgIGNhc2UgQ1NTUHJvcGVydHlNYXJr
ZXJNaWQ6CisgICAgICAgIGlmICghc3ZnU3R5bGUubWFya2VyTWlkUmVzb3VyY2UoKS5pc0VtcHR5
KCkpCisgICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShzdmdTdHls
ZS5tYXJrZXJNaWRSZXNvdXJjZSgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1VSSSk7CisgICAg
ICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihDU1NWYWx1ZU5v
bmUpOworICAgIGNhc2UgQ1NTUHJvcGVydHlNYXJrZXJTdGFydDoKKyAgICAgICAgaWYgKCFzdmdT
dHlsZS5tYXJrZXJTdGFydFJlc291cmNlKCkuaXNFbXB0eSgpKQorICAgICAgICAgICAgcmV0dXJu
IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoc3ZnU3R5bGUubWFya2VyU3RhcnRSZXNvdXJjZSgp
LCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1VSSSk7CisgICAgICAgIHJldHVybiBDU1NQcmltaXRp
dmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihDU1NWYWx1ZU5vbmUpOworICAgIGNhc2UgQ1NTUHJv
cGVydHlTdHJva2U6CisgICAgICAgIHJldHVybiBhZGp1c3RTVkdQYWludEZvckN1cnJlbnRDb2xv
cihzdmdTdHlsZS5zdHJva2VQYWludFR5cGUoKSwgc3ZnU3R5bGUuc3Ryb2tlUGFpbnRVcmkoKSwg
c3ZnU3R5bGUuc3Ryb2tlUGFpbnRDb2xvcigpLCBzdHlsZS0+Y29sb3IoKSk7CisgICAgY2FzZSBD
U1NQcm9wZXJ0eVN0cm9rZURhc2hhcnJheToKKyAgICAgICAgcmV0dXJuIHN0cm9rZURhc2hBcnJh
eVRvQ1NTVmFsdWVMaXN0KHN2Z1N0eWxlLnN0cm9rZURhc2hBcnJheSgpKTsKKyAgICBjYXNlIENT
U1Byb3BlcnR5QmFzZWxpbmVTaGlmdDogeworICAgICAgICBzd2l0Y2ggKHN2Z1N0eWxlLmJhc2Vs
aW5lU2hpZnQoKSkgeworICAgICAgICBjYXNlIEJhc2VsaW5lU2hpZnQ6OkJhc2VsaW5lOgorICAg
ICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKENTU1Zh
bHVlQmFzZWxpbmUpOworICAgICAgICBjYXNlIEJhc2VsaW5lU2hpZnQ6OlN1cGVyOgorICAgICAg
ICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKENTU1ZhbHVl
U3VwZXIpOworICAgICAgICBjYXNlIEJhc2VsaW5lU2hpZnQ6OlN1YjoKKyAgICAgICAgICAgIHJl
dHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihDU1NWYWx1ZVN1Yik7Cisg
ICAgICAgIGNhc2UgQmFzZWxpbmVTaGlmdDo6TGVuZ3RoOgorICAgICAgICAgICAgcmV0dXJuIFNW
R0xlbmd0aFZhbHVlOjp0b0NTU1ByaW1pdGl2ZVZhbHVlKHN2Z1N0eWxlLmJhc2VsaW5lU2hpZnRW
YWx1ZSgpKTsKICAgICAgICAgfQotICAgICAgICBjYXNlIENTU1Byb3BlcnR5QnVmZmVyZWRSZW5k
ZXJpbmc6Ci0gICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShzdmdT
dHlsZS5idWZmZXJlZFJlbmRlcmluZygpKTsKLSAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUdseXBo
T3JpZW50YXRpb25Ib3Jpem9udGFsOgotICAgICAgICAgICAgcmV0dXJuIGdseXBoT3JpZW50YXRp
b25Ub0NTU1ByaW1pdGl2ZVZhbHVlKHN2Z1N0eWxlLmdseXBoT3JpZW50YXRpb25Ib3Jpem9udGFs
KCkpOwotICAgICAgICBjYXNlIENTU1Byb3BlcnR5R2x5cGhPcmllbnRhdGlvblZlcnRpY2FsOiB7
Ci0gICAgICAgICAgICBpZiAoUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiB2YWx1ZSA9IGdseXBo
T3JpZW50YXRpb25Ub0NTU1ByaW1pdGl2ZVZhbHVlKHN2Z1N0eWxlLmdseXBoT3JpZW50YXRpb25W
ZXJ0aWNhbCgpKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisgICAgY2Fz
ZSBDU1NQcm9wZXJ0eUJ1ZmZlcmVkUmVuZGVyaW5nOgorICAgICAgICByZXR1cm4gQ1NTUHJpbWl0
aXZlVmFsdWU6OmNyZWF0ZShzdmdTdHlsZS5idWZmZXJlZFJlbmRlcmluZygpKTsKKyAgICBjYXNl
IENTU1Byb3BlcnR5R2x5cGhPcmllbnRhdGlvbkhvcml6b250YWw6CisgICAgICAgIHJldHVybiBn
bHlwaE9yaWVudGF0aW9uVG9DU1NQcmltaXRpdmVWYWx1ZShzdmdTdHlsZS5nbHlwaE9yaWVudGF0
aW9uSG9yaXpvbnRhbCgpKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5R2x5cGhPcmllbnRhdGlvblZl
cnRpY2FsOiB7CisgICAgICAgIGlmIChSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHZhbHVlID0g
Z2x5cGhPcmllbnRhdGlvblRvQ1NTUHJpbWl0aXZlVmFsdWUoc3ZnU3R5bGUuZ2x5cGhPcmllbnRh
dGlvblZlcnRpY2FsKCkpKQorICAgICAgICAgICAgcmV0dXJuIHZhbHVlOwogCi0gICAgICAgICAg
ICBpZiAoc3ZnU3R5bGUuZ2x5cGhPcmllbnRhdGlvblZlcnRpY2FsKCkgPT0gR09fQVVUTykKLSAg
ICAgICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIo
Q1NTVmFsdWVBdXRvKTsKKyAgICAgICAgaWYgKHN2Z1N0eWxlLmdseXBoT3JpZW50YXRpb25WZXJ0
aWNhbCgpID09IEdseXBoT3JpZW50YXRpb246OkF1dG8pCisgICAgICAgICAgICByZXR1cm4gQ1NT
UHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoQ1NTVmFsdWVBdXRvKTsKIAotICAgICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdFN2Z1NoYWRvdzoKLSAgICAgICAgICAgIHJldHVybiB2YWx1ZUZvclNoYWRvdyhzdmdT
dHlsZS5zaGFkb3coKSwgcHJvcGVydHlJRCwgKnN0eWxlKTsKLSAgICAgICAgY2FzZSBDU1NQcm9w
ZXJ0eVZlY3RvckVmZmVjdDoKLSAgICAgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6
Y3JlYXRlKHN2Z1N0eWxlLnZlY3RvckVmZmVjdCgpKTsKLSAgICAgICAgY2FzZSBDU1NQcm9wZXJ0
eU1hc2tUeXBlOgotICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUo
c3ZnU3R5bGUubWFza1R5cGUoKSk7Ci0gICAgICAgIGNhc2UgQ1NTUHJvcGVydHlNYXJrZXI6Ci0g
ICAgICAgIGNhc2UgQ1NTUHJvcGVydHlFbmFibGVCYWNrZ3JvdW5kOgotICAgICAgICBjYXNlIENT
U1Byb3BlcnR5Q29sb3JQcm9maWxlOgotICAgICAgICAgICAgLy8gdGhlIGFib3ZlIHByb3BlcnRp
ZXMgYXJlIG5vdCB5ZXQgaW1wbGVtZW50ZWQgaW4gdGhlIGVuZ2luZQotICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKyAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0U3ZnU2hhZG93OgorICAgICAgICByZXR1cm4gdmFsdWVGb3JTaGFkb3coc3ZnU3R5bGUu
c2hhZG93KCksIHByb3BlcnR5SUQsICpzdHlsZSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVZlY3Rv
ckVmZmVjdDoKKyAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoc3ZnU3R5
bGUudmVjdG9yRWZmZWN0KCkpOworICAgIGNhc2UgQ1NTUHJvcGVydHlNYXNrVHlwZToKKyAgICAg
ICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoc3ZnU3R5bGUubWFza1R5cGUoKSk7
CisgICAgY2FzZSBDU1NQcm9wZXJ0eU1hcmtlcjoKKyAgICBjYXNlIENTU1Byb3BlcnR5RW5hYmxl
QmFja2dyb3VuZDoKKyAgICBjYXNlIENTU1Byb3BlcnR5Q29sb3JQcm9maWxlOgorICAgICAgICAv
LyB0aGUgYWJvdmUgcHJvcGVydGllcyBhcmUgbm90IHlldCBpbXBsZW1lbnRlZCBpbiB0aGUgZW5n
aW5lCisgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIC8vIElmIHlvdSBjcmFz
aCBoZXJlLCBpdCdzIGJlY2F1c2UgeW91IGFkZGVkIGEgY3NzIHByb3BlcnR5IGFuZCBhcmUgbm90
IGhhbmRsaW5nIGl0CiAgICAgICAgIC8vIGluIGVpdGhlciB0aGlzIHN3aXRjaCBzdGF0ZW1lbnQg
b3IgdGhlIG9uZSBpbiBDU1NDb21wdXRlZFN0eWxlRGVsY2FyYXRpb246OmdldFByb3BlcnR5Q1NT
VmFsdWUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyQ29udmVydGVyLmgJ
KHJldmlzaW9uIDIzMjE4OSkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXJDb252
ZXJ0ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTM0LDggKzEzNCw4IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgQ29sb3IgY29udmVydFNWR0NvbG9yKFN0eWxlUmVzb2x2ZXImLCBjb25zdCBDU1NWYWx1
ZSYpOwogICAgIHN0YXRpYyBTdHlsZVNlbGZBbGlnbm1lbnREYXRhIGNvbnZlcnRTZWxmT3JEZWZh
dWx0QWxpZ25tZW50RGF0YShTdHlsZVJlc29sdmVyJiwgY29uc3QgQ1NTVmFsdWUmKTsKICAgICBz
dGF0aWMgU3R5bGVDb250ZW50QWxpZ25tZW50RGF0YSBjb252ZXJ0Q29udGVudEFsaWdubWVudERh
dGEoU3R5bGVSZXNvbHZlciYsIGNvbnN0IENTU1ZhbHVlJik7Ci0gICAgc3RhdGljIEVHbHlwaE9y
aWVudGF0aW9uIGNvbnZlcnRHbHlwaE9yaWVudGF0aW9uKFN0eWxlUmVzb2x2ZXImLCBjb25zdCBD
U1NWYWx1ZSYpOwotICAgIHN0YXRpYyBFR2x5cGhPcmllbnRhdGlvbiBjb252ZXJ0R2x5cGhPcmll
bnRhdGlvbk9yQXV0byhTdHlsZVJlc29sdmVyJiwgY29uc3QgQ1NTVmFsdWUmKTsKKyAgICBzdGF0
aWMgR2x5cGhPcmllbnRhdGlvbiBjb252ZXJ0R2x5cGhPcmllbnRhdGlvbihTdHlsZVJlc29sdmVy
JiwgY29uc3QgQ1NTVmFsdWUmKTsKKyAgICBzdGF0aWMgR2x5cGhPcmllbnRhdGlvbiBjb252ZXJ0
R2x5cGhPcmllbnRhdGlvbk9yQXV0byhTdHlsZVJlc29sdmVyJiwgY29uc3QgQ1NTVmFsdWUmKTsK
ICAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxMZW5ndGg+IGNvbnZlcnRMaW5lSGVpZ2h0KFN0eWxl
UmVzb2x2ZXImLCBjb25zdCBDU1NWYWx1ZSYsIGZsb2F0IG11bHRpcGxpZXIgPSAxLmYpOwogICAg
IHN0YXRpYyBGb250U3ludGhlc2lzIGNvbnZlcnRGb250U3ludGhlc2lzKFN0eWxlUmVzb2x2ZXIm
LCBjb25zdCBDU1NWYWx1ZSYpOwogICAgIApAQCAtMTM4NSwyMiArMTM4NSwyMiBAQCBpbmxpbmUg
U3R5bGVDb250ZW50QWxpZ25tZW50RGF0YSBTdHlsZUJ1CiAgICAgcmV0dXJuIGFsaWdubWVudERh
dGE7CiB9CiAKLWlubGluZSBFR2x5cGhPcmllbnRhdGlvbiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6
OmNvbnZlcnRHbHlwaE9yaWVudGF0aW9uKFN0eWxlUmVzb2x2ZXImLCBjb25zdCBDU1NWYWx1ZSYg
dmFsdWUpCitpbmxpbmUgR2x5cGhPcmllbnRhdGlvbiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNv
bnZlcnRHbHlwaE9yaWVudGF0aW9uKFN0eWxlUmVzb2x2ZXImLCBjb25zdCBDU1NWYWx1ZSYgdmFs
dWUpCiB7CiAgICAgZmxvYXQgYW5nbGUgPSBmYWJzZihmbW9kZihkb3duY2FzdDxDU1NQcmltaXRp
dmVWYWx1ZT4odmFsdWUpLmZsb2F0VmFsdWUoKSwgMzYwLjBmKSk7CiAgICAgaWYgKGFuZ2xlIDw9
IDQ1LjBmIHx8IGFuZ2xlID4gMzE1LjBmKQotICAgICAgICByZXR1cm4gR09fMERFRzsKKyAgICAg
ICAgcmV0dXJuIEdseXBoT3JpZW50YXRpb246OkRlZ3JlZXMwOwogICAgIGlmIChhbmdsZSA+IDQ1
LjBmICYmIGFuZ2xlIDw9IDEzNS4wZikKLSAgICAgICAgcmV0dXJuIEdPXzkwREVHOworICAgICAg
ICByZXR1cm4gR2x5cGhPcmllbnRhdGlvbjo6RGVncmVlczkwOwogICAgIGlmIChhbmdsZSA+IDEz
NS4wZiAmJiBhbmdsZSA8PSAyMjUuMGYpCi0gICAgICAgIHJldHVybiBHT18xODBERUc7Ci0gICAg
cmV0dXJuIEdPXzI3MERFRzsKKyAgICAgICAgcmV0dXJuIEdseXBoT3JpZW50YXRpb246OkRlZ3Jl
ZXMxODA7CisgICAgcmV0dXJuIEdseXBoT3JpZW50YXRpb246OkRlZ3JlZXMyNzA7CiB9CiAKLWlu
bGluZSBFR2x5cGhPcmllbnRhdGlvbiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRHbHlw
aE9yaWVudGF0aW9uT3JBdXRvKFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIsIGNvbnN0IENT
U1ZhbHVlJiB2YWx1ZSkKK2lubGluZSBHbHlwaE9yaWVudGF0aW9uIFN0eWxlQnVpbGRlckNvbnZl
cnRlcjo6Y29udmVydEdseXBoT3JpZW50YXRpb25PckF1dG8oU3R5bGVSZXNvbHZlciYgc3R5bGVS
ZXNvbHZlciwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQogewogICAgIGlmIChkb3duY2FzdDxDU1NQ
cmltaXRpdmVWYWx1ZT4odmFsdWUpLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZUF1dG8pCi0gICAgICAg
IHJldHVybiBHT19BVVRPOworICAgICAgICByZXR1cm4gR2x5cGhPcmllbnRhdGlvbjo6QXV0bzsK
ICAgICByZXR1cm4gY29udmVydEdseXBoT3JpZW50YXRpb24oc3R5bGVSZXNvbHZlciwgdmFsdWUp
OwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyQ3VzdG9tLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlckN1c3RvbS5oCShyZXZp
c2lvbiAyMzIxODkpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyQ3VzdG9tLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEwMzIsMTkgKzEwMzIsMTkgQEAgaW5saW5lIHZvaWQgU3R5bGVC
dWlsZGVyQ3VzdG9tOjphcHBseVZhbAogICAgIGlmIChwcmltaXRpdmVWYWx1ZS5pc1ZhbHVlSUQo
KSkgewogICAgICAgICBzd2l0Y2ggKHByaW1pdGl2ZVZhbHVlLnZhbHVlSUQoKSkgewogICAgICAg
ICBjYXNlIENTU1ZhbHVlQmFzZWxpbmU6Ci0gICAgICAgICAgICBzdmdTdHlsZS5zZXRCYXNlbGlu
ZVNoaWZ0KEJTX0JBU0VMSU5FKTsKKyAgICAgICAgICAgIHN2Z1N0eWxlLnNldEJhc2VsaW5lU2hp
ZnQoQmFzZWxpbmVTaGlmdDo6QmFzZWxpbmUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IGNhc2UgQ1NTVmFsdWVTdWI6Ci0gICAgICAgICAgICBzdmdTdHlsZS5zZXRCYXNlbGluZVNoaWZ0
KEJTX1NVQik7CisgICAgICAgICAgICBzdmdTdHlsZS5zZXRCYXNlbGluZVNoaWZ0KEJhc2VsaW5l
U2hpZnQ6OlN1Yik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDU1NWYWx1ZVN1
cGVyOgotICAgICAgICAgICAgc3ZnU3R5bGUuc2V0QmFzZWxpbmVTaGlmdChCU19TVVBFUik7Cisg
ICAgICAgICAgICBzdmdTdHlsZS5zZXRCYXNlbGluZVNoaWZ0KEJhc2VsaW5lU2hpZnQ6OlN1cGVy
KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KICAgICB9IGVsc2UgewotICAgICAgICBzdmdTdHlsZS5zZXRCYXNlbGlu
ZVNoaWZ0KEJTX0xFTkdUSCk7CisgICAgICAgIHN2Z1N0eWxlLnNldEJhc2VsaW5lU2hpZnQoQmFz
ZWxpbmVTaGlmdDo6TGVuZ3RoKTsKICAgICAgICAgc3ZnU3R5bGUuc2V0QmFzZWxpbmVTaGlmdFZh
bHVlKFNWR0xlbmd0aFZhbHVlOjpmcm9tQ1NTUHJpbWl0aXZlVmFsdWUocHJpbWl0aXZlVmFsdWUp
KTsKICAgICB9CiB9CkBAIC0xMjY5LDE4ICsxMjY5LDE4IEBAIGlubGluZSB2b2lkIFN0eWxlQnVp
bGRlckN1c3RvbTo6YXBwbHlWYWwKICAgICAgICAgcmV0dXJuOwogCiAgICAgQ29sb3IgY29sb3I7
Ci0gICAgYXV0byBwYWludFR5cGUgPSBTVkdfUEFJTlRUWVBFX1JHQkNPTE9SOworICAgIGF1dG8g
cGFpbnRUeXBlID0gU1ZHUGFpbnRUeXBlOjpSR0JDb2xvcjsKICAgICBpZiAobG9jYWxWYWx1ZS0+
aXNVUkkoKSkgewotICAgICAgICBwYWludFR5cGUgPSBTVkdfUEFJTlRUWVBFX1VSSTsKKyAgICAg
ICAgcGFpbnRUeXBlID0gU1ZHUGFpbnRUeXBlOjpVUkk7CiAgICAgICAgIHVybCA9IGxvY2FsVmFs
dWUtPnN0cmluZ1ZhbHVlKCk7CiAgICAgfSBlbHNlIGlmIChsb2NhbFZhbHVlLT5pc1ZhbHVlSUQo
KSAmJiBsb2NhbFZhbHVlLT52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVOb25lKQotICAgICAgICBwYWlu
dFR5cGUgPSB1cmwuaXNFbXB0eSgpID8gU1ZHX1BBSU5UVFlQRV9OT05FIDogU1ZHX1BBSU5UVFlQ
RV9VUklfTk9ORTsKKyAgICAgICAgcGFpbnRUeXBlID0gdXJsLmlzRW1wdHkoKSA/IFNWR1BhaW50
VHlwZTo6Tm9uZSA6IFNWR1BhaW50VHlwZTo6VVJJTm9uZTsKICAgICBlbHNlIGlmIChsb2NhbFZh
bHVlLT5pc1ZhbHVlSUQoKSAmJiBsb2NhbFZhbHVlLT52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVDdXJy
ZW50Y29sb3IpIHsKICAgICAgICAgY29sb3IgPSBzdHlsZVJlc29sdmVyLnN0eWxlKCktPmNvbG9y
KCk7Ci0gICAgICAgIHBhaW50VHlwZSA9IHVybC5pc0VtcHR5KCkgPyBTVkdfUEFJTlRUWVBFX0NV
UlJFTlRDT0xPUiA6IFNWR19QQUlOVFRZUEVfVVJJX0NVUlJFTlRDT0xPUjsKKyAgICAgICAgcGFp
bnRUeXBlID0gdXJsLmlzRW1wdHkoKSA/IFNWR1BhaW50VHlwZTo6Q3VycmVudENvbG9yIDogU1ZH
UGFpbnRUeXBlOjpVUklDdXJyZW50Q29sb3I7CiAgICAgfSBlbHNlIHsKICAgICAgICAgY29sb3Ig
PSBzdHlsZVJlc29sdmVyLmNvbG9yRnJvbVByaW1pdGl2ZVZhbHVlKCpsb2NhbFZhbHVlKTsKLSAg
ICAgICAgcGFpbnRUeXBlID0gdXJsLmlzRW1wdHkoKSA/IFNWR19QQUlOVFRZUEVfUkdCQ09MT1Ig
OiBTVkdfUEFJTlRUWVBFX1VSSV9SR0JDT0xPUjsKKyAgICAgICAgcGFpbnRUeXBlID0gdXJsLmlz
RW1wdHkoKSA/IFNWR1BhaW50VHlwZTo6UkdCQ29sb3IgOiBTVkdQYWludFR5cGU6OlVSSVJHQkNv
bG9yOwogICAgIH0KICAgICBzdmdTdHlsZS5zZXRGaWxsUGFpbnQocGFpbnRUeXBlLCBjb2xvciwg
dXJsLCBzdHlsZVJlc29sdmVyLmFwcGx5UHJvcGVydHlUb1JlZ3VsYXJTdHlsZSgpLCBzdHlsZVJl
c29sdmVyLmFwcGx5UHJvcGVydHlUb1Zpc2l0ZWRMaW5rU3R5bGUoKSk7CiB9CkBAIC0xMzEzLDE4
ICsxMzEzLDE4IEBAIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWwKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgQ29sb3IgY29sb3I7Ci0gICAgYXV0byBwYWludFR5cGUgPSBT
VkdfUEFJTlRUWVBFX1JHQkNPTE9SOworICAgIGF1dG8gcGFpbnRUeXBlID0gU1ZHUGFpbnRUeXBl
OjpSR0JDb2xvcjsKICAgICBpZiAobG9jYWxWYWx1ZS0+aXNVUkkoKSkgewotICAgICAgICBwYWlu
dFR5cGUgPSBTVkdfUEFJTlRUWVBFX1VSSTsKKyAgICAgICAgcGFpbnRUeXBlID0gU1ZHUGFpbnRU
eXBlOjpVUkk7CiAgICAgICAgIHVybCA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPihsb2Nh
bFZhbHVlKS0+c3RyaW5nVmFsdWUoKTsKICAgICB9IGVsc2UgaWYgKGxvY2FsVmFsdWUtPmlzVmFs
dWVJRCgpICYmIGxvY2FsVmFsdWUtPnZhbHVlSUQoKSA9PSBDU1NWYWx1ZU5vbmUpCi0gICAgICAg
IHBhaW50VHlwZSA9IHVybC5pc0VtcHR5KCkgPyBTVkdfUEFJTlRUWVBFX05PTkUgOiBTVkdfUEFJ
TlRUWVBFX1VSSV9OT05FOworICAgICAgICBwYWludFR5cGUgPSB1cmwuaXNFbXB0eSgpID8gU1ZH
UGFpbnRUeXBlOjpOb25lIDogU1ZHUGFpbnRUeXBlOjpVUklOb25lOwogICAgIGVsc2UgaWYgKGxv
Y2FsVmFsdWUtPmlzVmFsdWVJRCgpICYmIGxvY2FsVmFsdWUtPnZhbHVlSUQoKSA9PSBDU1NWYWx1
ZUN1cnJlbnRjb2xvcikgewogICAgICAgICBjb2xvciA9IHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+
Y29sb3IoKTsKLSAgICAgICAgcGFpbnRUeXBlID0gdXJsLmlzRW1wdHkoKSA/IFNWR19QQUlOVFRZ
UEVfQ1VSUkVOVENPTE9SIDogU1ZHX1BBSU5UVFlQRV9VUklfQ1VSUkVOVENPTE9SOworICAgICAg
ICBwYWludFR5cGUgPSB1cmwuaXNFbXB0eSgpID8gU1ZHUGFpbnRUeXBlOjpDdXJyZW50Q29sb3Ig
OiBTVkdQYWludFR5cGU6OlVSSUN1cnJlbnRDb2xvcjsKICAgICB9IGVsc2UgewogICAgICAgICBj
b2xvciA9IHN0eWxlUmVzb2x2ZXIuY29sb3JGcm9tUHJpbWl0aXZlVmFsdWUoKmxvY2FsVmFsdWUp
OwotICAgICAgICBwYWludFR5cGUgPSB1cmwuaXNFbXB0eSgpID8gU1ZHX1BBSU5UVFlQRV9SR0JD
T0xPUiA6IFNWR19QQUlOVFRZUEVfVVJJX1JHQkNPTE9SOworICAgICAgICBwYWludFR5cGUgPSB1
cmwuaXNFbXB0eSgpID8gU1ZHUGFpbnRUeXBlOjpSR0JDb2xvciA6IFNWR1BhaW50VHlwZTo6VVJJ
UkdCQ29sb3I7CiAgICAgfQogICAgIHN2Z1N0eWxlLnNldFN0cm9rZVBhaW50KHBhaW50VHlwZSwg
Y29sb3IsIHVybCwgc3R5bGVSZXNvbHZlci5hcHBseVByb3BlcnR5VG9SZWd1bGFyU3R5bGUoKSwg
c3R5bGVSZXNvbHZlci5hcHBseVByb3BlcnR5VG9WaXNpdGVkTGlua1N0eWxlKCkpOwogfQpJbmRl
eDogU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHAJ
KHJldmlzaW9uIDIzMjE4OSkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVy
dHlQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDUzLDcgKzI0NTMsNyBAQCBzdGF0aWMg
UmVmUHRyPENTU0Jhc2ljU2hhcGVQb2x5Z29uPiBjb25zCiB7CiAgICAgUmVmUHRyPENTU0Jhc2lj
U2hhcGVQb2x5Z29uPiBzaGFwZSA9IENTU0Jhc2ljU2hhcGVQb2x5Z29uOjpjcmVhdGUoKTsKICAg
ICBpZiAoaWRlbnRNYXRjaGVzPENTU1ZhbHVlRXZlbm9kZCwgQ1NTVmFsdWVOb256ZXJvPihhcmdz
LnBlZWsoKS5pZCgpKSkgewotICAgICAgICBzaGFwZS0+c2V0V2luZFJ1bGUoYXJncy5jb25zdW1l
SW5jbHVkaW5nV2hpdGVzcGFjZSgpLmlkKCkgPT0gQ1NTVmFsdWVFdmVub2RkID8gUlVMRV9FVkVO
T0REIDogUlVMRV9OT05aRVJPKTsKKyAgICAgICAgc2hhcGUtPnNldFdpbmRSdWxlKGFyZ3MuY29u
c3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKS5pZCgpID09IENTU1ZhbHVlRXZlbm9kZCA/IFdpbmRS
dWxlOjpFdmVuT2RkIDogV2luZFJ1bGU6Ok5vblplcm8pOwogICAgICAgICBpZiAoIWNvbnN1bWVD
b21tYUluY2x1ZGluZ1doaXRlc3BhY2UoYXJncykpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0
cjsKICAgICB9CkBAIC0yNDcyLDkgKzI0NzIsOSBAQCBzdGF0aWMgUmVmUHRyPENTU0Jhc2ljU2hh
cGVQb2x5Z29uPiBjb25zCiAKIHN0YXRpYyBSZWZQdHI8Q1NTQmFzaWNTaGFwZVBhdGg+IGNvbnN1
bWVCYXNpY1NoYXBlUGF0aChDU1NQYXJzZXJUb2tlblJhbmdlJiBhcmdzKQogewotICAgIFdpbmRS
dWxlIHdpbmRSdWxlID0gUlVMRV9OT05aRVJPOworICAgIFdpbmRSdWxlIHdpbmRSdWxlID0gV2lu
ZFJ1bGU6Ok5vblplcm87CiAgICAgaWYgKGlkZW50TWF0Y2hlczxDU1NWYWx1ZUV2ZW5vZGQsIENT
U1ZhbHVlTm9uemVybz4oYXJncy5wZWVrKCkuaWQoKSkpIHsKLSAgICAgICAgd2luZFJ1bGUgPSBh
cmdzLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCkuaWQoKSA9PSBDU1NWYWx1ZUV2ZW5vZGQg
PyBSVUxFX0VWRU5PREQgOiBSVUxFX05PTlpFUk87CisgICAgICAgIHdpbmRSdWxlID0gYXJncy5j
b25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpLmlkKCkgPT0gQ1NTVmFsdWVFdmVub2RkID8gV2lu
ZFJ1bGU6OkV2ZW5PZGQgOiBXaW5kUnVsZTo6Tm9uWmVybzsKICAgICAgICAgaWYgKCFjb25zdW1l
Q29tbWFJbmNsdWRpbmdXaGl0ZXNwYWNlKGFyZ3MpKQogICAgICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEQmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAJKHJldmlzaW9uIDIzMjE4OSkK
KysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJh
c2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDQ2LDcgKzEwNDYsNyBAQCBib29sIENhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyREJhc2U6OmlzRnVsCiAKIHN0YXRpYyBXaW5kUnVsZSB0b1dpbmRSdWxl
KENhbnZhc0ZpbGxSdWxlIHJ1bGUpCiB7Ci0gICAgcmV0dXJuIHJ1bGUgPT0gQ2FudmFzRmlsbFJ1
bGU6Ok5vbnplcm8gPyBSVUxFX05PTlpFUk8gOiBSVUxFX0VWRU5PREQ7CisgICAgcmV0dXJuIHJ1
bGUgPT0gQ2FudmFzRmlsbFJ1bGU6Ok5vbnplcm8gPyBXaW5kUnVsZTo6Tm9uWmVybyA6IFdpbmRS
dWxlOjpFdmVuT2RkOwogfQogCiB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmZp
bGwoQ2FudmFzRmlsbFJ1bGUgd2luZGluZ1J1bGUpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdl
L2FuaW1hdGlvbi9DU1NQcm9wZXJ0eUFuaW1hdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ1NTUHJvcGVydHlBbmltYXRpb24uY3BwCShyZXZpc2lv
biAyMzIxODkpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9DU1NQcm9wZXJ0eUFu
aW1hdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzNDQsNyArMTM0NCw3IEBAIHB1YmxpYzoK
IGNsYXNzIFByb3BlcnR5V3JhcHBlclNWR1BhaW50IDogcHVibGljIEFuaW1hdGlvblByb3BlcnR5
V3JhcHBlckJhc2UgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAg
IFByb3BlcnR5V3JhcHBlclNWR1BhaW50KENTU1Byb3BlcnR5SUQgcHJvcCwgY29uc3QgU1ZHUGFp
bnRUeXBlJiAoUmVuZGVyU3R5bGU6OipwYWludFR5cGVHZXR0ZXIpKCkgY29uc3QsIENvbG9yIChS
ZW5kZXJTdHlsZTo6KmdldHRlcikoKSBjb25zdCwgdm9pZCAoUmVuZGVyU3R5bGU6OipzZXR0ZXIp
KGNvbnN0IENvbG9yJikpCisgICAgUHJvcGVydHlXcmFwcGVyU1ZHUGFpbnQoQ1NTUHJvcGVydHlJ
RCBwcm9wLCBTVkdQYWludFR5cGUgKFJlbmRlclN0eWxlOjoqcGFpbnRUeXBlR2V0dGVyKSgpIGNv
bnN0LCBDb2xvciAoUmVuZGVyU3R5bGU6OipnZXR0ZXIpKCkgY29uc3QsIHZvaWQgKFJlbmRlclN0
eWxlOjoqc2V0dGVyKShjb25zdCBDb2xvciYpKQogICAgICAgICA6IEFuaW1hdGlvblByb3BlcnR5
V3JhcHBlckJhc2UocHJvcCkKICAgICAgICAgLCBtX3BhaW50VHlwZUdldHRlcihwYWludFR5cGVH
ZXR0ZXIpCiAgICAgICAgICwgbV9nZXR0ZXIoZ2V0dGVyKQpAQCAtMTM2NSw3ICsxMzY1LDcgQEAg
cHVibGljOgogICAgICAgICAvLyBXZSBvbmx5IHN1cHBvcnQgYW5pbWF0aW9ucyBiZXR3ZWVuIFNW
R1BhaW50cyB0aGF0IGFyZSBwdXJlIENvbG9yIHZhbHVlcy4KICAgICAgICAgLy8gRm9yIGV2ZXJ5
dGhpbmcgZWxzZSB3ZSBtdXN0IHJldHVybiB0cnVlIGZvciB0aGlzIG1ldGhvZCwgb3RoZXJ3aXNl
CiAgICAgICAgIC8vIHdlIHdpbGwgdHJ5IHRvIGFuaW1hdGUgYmV0d2VlbiB2YWx1ZXMgZm9yZXZl
ci4KLSAgICAgICAgaWYgKChhLT4qbV9wYWludFR5cGVHZXR0ZXIpKCkgPT0gU1ZHX1BBSU5UVFlQ
RV9SR0JDT0xPUikgeworICAgICAgICBpZiAoKGEtPiptX3BhaW50VHlwZUdldHRlcikoKSA9PSBT
VkdQYWludFR5cGU6OlJHQkNvbG9yKSB7CiAgICAgICAgICAgICBDb2xvciBmcm9tQ29sb3IgPSAo
YS0+Km1fZ2V0dGVyKSgpOwogICAgICAgICAgICAgQ29sb3IgdG9Db2xvciA9IChiLT4qbV9nZXR0
ZXIpKCk7CiAKQEAgLTEzODQsOCArMTM4NCw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgYmxlbmQo
Y29uc3QgQ1NTUHJvcGVydHlCbGVuZGluZ0NsaWVudCogYW5pbSwgUmVuZGVyU3R5bGUqIGRzdCwg
Y29uc3QgUmVuZGVyU3R5bGUqIGEsIGNvbnN0IFJlbmRlclN0eWxlKiBiLCBkb3VibGUgcHJvZ3Jl
c3MpIGNvbnN0IG92ZXJyaWRlCiAgICAgewotICAgICAgICBpZiAoKGEtPiptX3BhaW50VHlwZUdl
dHRlcikoKSAhPSBTVkdfUEFJTlRUWVBFX1JHQkNPTE9SCi0gICAgICAgICAgICB8fCAoYi0+Km1f
cGFpbnRUeXBlR2V0dGVyKSgpICE9IFNWR19QQUlOVFRZUEVfUkdCQ09MT1IpCisgICAgICAgIGlm
ICgoYS0+Km1fcGFpbnRUeXBlR2V0dGVyKSgpICE9IFNWR1BhaW50VHlwZTo6UkdCQ29sb3IKKyAg
ICAgICAgICAgIHx8IChiLT4qbV9wYWludFR5cGVHZXR0ZXIpKCkgIT0gU1ZHUGFpbnRUeXBlOjpS
R0JDb2xvcikKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBDb2xvciBmcm9tQ29sb3Ig
PSAoYS0+Km1fZ2V0dGVyKSgpOwpAQCAtMTQxMCw3ICsxNDEwLDcgQEAgcHVibGljOgogI2VuZGlm
CiAKIHByaXZhdGU6Ci0gICAgY29uc3QgU1ZHUGFpbnRUeXBlJiAoUmVuZGVyU3R5bGU6OiptX3Bh
aW50VHlwZUdldHRlcikoKSBjb25zdDsKKyAgICBTVkdQYWludFR5cGUgKFJlbmRlclN0eWxlOjoq
bV9wYWludFR5cGVHZXR0ZXIpKCkgY29uc3Q7CiAgICAgQ29sb3IgKFJlbmRlclN0eWxlOjoqbV9n
ZXR0ZXIpKCkgY29uc3Q7CiAgICAgdm9pZCAoUmVuZGVyU3R5bGU6OiptX3NldHRlcikoY29uc3Qg
Q29sb3ImKTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9h
dFBvbHlnb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0Zsb2F0UG9seWdvbi5jcHAJKHJldmlzaW9uIDIzMjE4OSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0UG9seWdvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5
OCw3ICsxOTgsNyBAQCBib29sIEZsb2F0UG9seWdvbjo6Y29udGFpbnMoY29uc3QgRmxvYXRQCiB7
CiAgICAgaWYgKCFtX2JvdW5kaW5nQm94LmNvbnRhaW5zKHBvaW50KSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgIHJldHVybiBmaWxsUnVsZSgpID09IFJVTEVfTk9OWkVSTyA/IGNvbnRhaW5z
Tm9uWmVybyhwb2ludCkgOiBjb250YWluc0V2ZW5PZGQocG9pbnQpOworICAgIHJldHVybiBmaWxs
UnVsZSgpID09IFdpbmRSdWxlOjpOb25aZXJvID8gY29udGFpbnNOb25aZXJvKHBvaW50KSA6IGNv
bnRhaW5zRXZlbk9kZChwb2ludCk7CiB9CiAKIGJvb2wgVmVydGV4UGFpcjo6b3ZlcmxhcHNSZWN0
KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAkocmV2aXNpb24gMjMy
MTg5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTA3LDcgKzkwNyw3IEBAIHZvaWQgR3JhcGhpY3NDb250
ZXh0OjpmaWxsUmVjdFdpdGhSb3VuZGUKICAgICBXaW5kUnVsZSBvbGRGaWxsUnVsZSA9IGZpbGxS
dWxlKCk7CiAgICAgQ29sb3Igb2xkRmlsbENvbG9yID0gZmlsbENvbG9yKCk7CiAgICAgCi0gICAg
c2V0RmlsbFJ1bGUoUlVMRV9FVkVOT0REKTsKKyAgICBzZXRGaWxsUnVsZShXaW5kUnVsZTo6RXZl
bk9kZCk7CiAgICAgc2V0RmlsbENvbG9yKGNvbG9yKTsKIAogICAgIGZpbGxQYXRoKHBhdGgpOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0LmgJKHJldmlzaW9uIDIzMjE4OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNzIsNyArMTcyLDcg
QEAgc3RydWN0IEdyYXBoaWNzQ29udGV4dFN0YXRlIHsKICAgICBDb2xvciBzaGFkb3dDb2xvcjsK
IAogICAgIFN0cm9rZVN0eWxlIHN0cm9rZVN0eWxlIHsgU29saWRTdHJva2UgfTsKLSAgICBXaW5k
UnVsZSBmaWxsUnVsZSB7IFJVTEVfTk9OWkVSTyB9OworICAgIFdpbmRSdWxlIGZpbGxSdWxlIHsg
V2luZFJ1bGU6Ok5vblplcm8gfTsKIAogICAgIGZsb2F0IGFscGhhIHsgMSB9OwogICAgIENvbXBv
c2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wZXJhdG9yIHsgQ29tcG9zaXRlU291cmNlT3ZlciB9OwpA
QCAtMzg3LDcgKzM4Nyw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY2xpcE91dChjb25zdCBGbG9h
dFJlY3QmKTsKICAgICB2b2lkIGNsaXBPdXRSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJvdW5kZWRS
ZWN0Jik7Ci0gICAgdm9pZCBjbGlwUGF0aChjb25zdCBQYXRoJiwgV2luZFJ1bGUgPSBSVUxFX0VW
RU5PREQpOworICAgIHZvaWQgY2xpcFBhdGgoY29uc3QgUGF0aCYsIFdpbmRSdWxlID0gV2luZFJ1
bGU6OkV2ZW5PZGQpOwogICAgIHZvaWQgY2xpcFRvSW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImLCBj
b25zdCBGbG9hdFJlY3QmKTsKICAgICAKICAgICBJbnRSZWN0IGNsaXBCb3VuZHMoKSBjb25zdDsK
QEAgLTQ2NSw3ICs0NjUsNyBAQCBwdWJsaWM6CiAgICAgLy8gVGhpcyBjbGlwIGZ1bmN0aW9uIGlz
IHVzZWQgb25seSBieSA8Y2FudmFzPiBjb2RlLiBJdCBhbGxvd3MKICAgICAvLyBpbXBsZW1lbnRh
dGlvbnMgdG8gaGFuZGxlIGNsaXBwaW5nIG9uIHRoZSBjYW52YXMgZGlmZmVyZW50bHkgc2luY2UK
ICAgICAvLyB0aGUgZGlzY2lwbGluZSBpcyBkaWZmZXJlbnQuCi0gICAgdm9pZCBjYW52YXNDbGlw
KGNvbnN0IFBhdGgmLCBXaW5kUnVsZSA9IFJVTEVfRVZFTk9ERCk7CisgICAgdm9pZCBjYW52YXND
bGlwKGNvbnN0IFBhdGgmLCBXaW5kUnVsZSA9IFdpbmRSdWxlOjpFdmVuT2RkKTsKICAgICB2b2lk
IGNsaXBPdXQoY29uc3QgUGF0aCYpOwogCiAgICAgdm9pZCBzY2FsZShmbG9hdCBzKQpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5j
cHAJKHJldmlzaW9uIDIzMjE4OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzTGF5ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNDYsNyArMzQ2LDcgQEAgV2lu
ZFJ1bGUgR3JhcGhpY3NMYXllcjo6c2hhcGVMYXllcldpbmRSdQogI2lmIFVTRShDQSkKICAgICBy
ZXR1cm4gbV9zaGFwZUxheWVyV2luZFJ1bGU7CiAjZWxzZQotICAgIHJldHVybiBSVUxFX05PTlpF
Uk87CisgICAgcmV0dXJuIFdpbmRSdWxlOjpOb25aZXJvOwogI2VuZGlmCiB9CiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmgJKHJl
dmlzaW9uIDIzMjE4OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzTGF5ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNjkwLDcgKzY5MCw3IEBAIHByb3RlY3RlZDoK
IAogI2lmIFVTRShDQSkKICAgICBQYXRoIG1fc2hhcGVMYXllclBhdGg7Ci0gICAgV2luZFJ1bGUg
bV9zaGFwZUxheWVyV2luZFJ1bGUgeyBSVUxFX05PTlpFUk8gfTsKKyAgICBXaW5kUnVsZSBtX3No
YXBlTGF5ZXJXaW5kUnVsZSB7IFdpbmRSdWxlOjpOb25aZXJvIH07CiAjZW5kaWYKIH07CiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXMuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlw
ZXMuY3BwCShyZXZpc2lvbiAyMzIxODkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc1R5cGVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM4LDEwICsxMzgsMTAg
QEAgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgQgogVGV4dFN0cmVhbSYg
b3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgV2luZFJ1bGUgcnVsZSkKIHsKICAgICBzd2l0Y2gg
KHJ1bGUpIHsKLSAgICBjYXNlIFJVTEVfTk9OWkVSTzoKKyAgICBjYXNlIFdpbmRSdWxlOjpOb25a
ZXJvOgogICAgICAgICB0cyA8PCAiTk9OLVpFUk8iOwogICAgICAgICBicmVhazsKLSAgICBjYXNl
IFJVTEVfRVZFTk9ERDoKKyAgICBjYXNlIFdpbmRSdWxlOjpFdmVuT2RkOgogICAgICAgICB0cyA8
PCAiRVZFTi1PREQiOwogICAgICAgICBicmVhazsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXRoLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvUGF0aC5oCShyZXZpc2lvbiAyMzIxODkpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXRoLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyMSw3ICsx
MjEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIAogICAgICAgICBzdGF0aWMgUGF0
aCBwb2x5Z29uUGF0aEZyb21Qb2ludHMoY29uc3QgVmVjdG9yPEZsb2F0UG9pbnQ+Jik7CiAKLSAg
ICAgICAgYm9vbCBjb250YWlucyhjb25zdCBGbG9hdFBvaW50JiwgV2luZFJ1bGUgcnVsZSA9IFJV
TEVfTk9OWkVSTykgY29uc3Q7CisgICAgICAgIGJvb2wgY29udGFpbnMoY29uc3QgRmxvYXRQb2lu
dCYsIFdpbmRSdWxlID0gV2luZFJ1bGU6Ok5vblplcm8pIGNvbnN0OwogICAgICAgICBib29sIHN0
cm9rZUNvbnRhaW5zKFN0cm9rZVN0eWxlQXBwbGllciosIGNvbnN0IEZsb2F0UG9pbnQmKSBjb25z
dDsKICAgICAgICAgLy8gZmFzdEJvdW5kaW5nUmVjdCgpIHNob3VsZCBlcXVhbCBvciBjb250YWlu
IGJvdW5kaW5nUmVjdCgpOyBib3VuZGluZ1JlY3QoKQogICAgICAgICAvLyBzaG91bGQgcGVyZmVj
dGx5IGJvdW5kIHRoZSBwb2ludHMgd2l0aGluIHRoZSBwYXRoLgpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAJKHJldmlzaW9uIDIzMjE4
OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC02MDgsNyArNjA4LDcgQEAgdm9pZCBTaGFkb3dCbHVyOjpkcmF3SW5z
ZXRTaGFkb3coY29uc3QgQQogICAgICAgICBlbHNlCiAgICAgICAgICAgICBwYXRoLmFkZFJvdW5k
ZWRSZWN0KGhvbGVSZWN0KTsKIAotICAgICAgICBzaGFkb3dDb250ZXh0LnNldEZpbGxSdWxlKFJV
TEVfRVZFTk9ERCk7CisgICAgICAgIHNoYWRvd0NvbnRleHQuc2V0RmlsbFJ1bGUoV2luZFJ1bGU6
OkV2ZW5PZGQpOwogICAgICAgICBzaGFkb3dDb250ZXh0LnNldEZpbGxDb2xvcihDb2xvcjo6Ymxh
Y2spOwogICAgICAgICBzaGFkb3dDb250ZXh0LmZpbGxQYXRoKHBhdGgpOwogCkBAIC02ODIsNyAr
NjgyLDcgQEAgdm9pZCBTaGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFkb3dXaXRob3V0VAogICAgICAg
ICBlbHNlCiAgICAgICAgICAgICBwYXRoLmFkZFJvdW5kZWRSZWN0KGhvbGVSZWN0KTsKIAotICAg
ICAgICBzaGFkb3dDb250ZXh0LnNldEZpbGxSdWxlKFJVTEVfRVZFTk9ERCk7CisgICAgICAgIHNo
YWRvd0NvbnRleHQuc2V0RmlsbFJ1bGUoV2luZFJ1bGU6OkV2ZW5PZGQpOwogICAgICAgICBzaGFk
b3dDb250ZXh0LnNldEZpbGxDb2xvcihDb2xvcjo6YmxhY2spOwogICAgICAgICBzaGFkb3dDb250
ZXh0LmZpbGxQYXRoKHBhdGgpOwogCkBAIC03NDMsNyArNzQzLDcgQEAgdm9pZCBTaGFkb3dCbHVy
OjpkcmF3SW5zZXRTaGFkb3dXaXRoVGlsaQogICAgICAgICBHcmFwaGljc0NvbnRleHQmIHNoYWRv
d0NvbnRleHQgPSBtX2xheWVySW1hZ2UtPmNvbnRleHQoKTsKICAgICAgICAgR3JhcGhpY3NDb250
ZXh0U3RhdGVTYXZlciBzaGFkb3dTdGF0ZVNhdmVyKHNoYWRvd0NvbnRleHQpOwogICAgICAgICBz
aGFkb3dDb250ZXh0LmNsZWFyUmVjdCh0ZW1wbGF0ZUJvdW5kcyk7Ci0gICAgICAgIHNoYWRvd0Nv
bnRleHQuc2V0RmlsbFJ1bGUoUlVMRV9FVkVOT0REKTsKKyAgICAgICAgc2hhZG93Q29udGV4dC5z
ZXRGaWxsUnVsZShXaW5kUnVsZTo6RXZlbk9kZCk7CiAgICAgICAgIHNoYWRvd0NvbnRleHQuc2V0
RmlsbENvbG9yKENvbG9yOjpibGFjayk7CiAKICAgICAgICAgUGF0aCBwYXRoOwpAQCAtNzc5LDcg
Kzc3OSw3IEBAIHZvaWQgU2hhZG93Qmx1cjo6ZHJhd0luc2V0U2hhZG93V2l0aFRpbGkKIAogICAg
IHsKICAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBmaWxsU3RhdGVTYXZlcihncmFw
aGljc0NvbnRleHQpOwotICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0RmlsbFJ1bGUoUlVMRV9F
VkVOT0REKTsKKyAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldEZpbGxSdWxlKFdpbmRSdWxlOjpF
dmVuT2RkKTsKICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldEZpbGxDb2xvcihtX2NvbG9yKTsK
ICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LmNsZWFyU2hhZG93KCk7CiAgICAgICAgIGdyYXBoaWNz
Q29udGV4dC5maWxsUGF0aChleHRlcmlvclBhdGgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvV2luZFJ1bGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9XaW5kUnVsZS5oCShyZXZpc2lvbiAyMzIxODkpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XaW5kUnVsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
NSwxNyArMjUsMTMgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAogICovCiAKLSNpZm5kZWYgV2luZFJ1bGVf
aAotI2RlZmluZSBXaW5kUnVsZV9oCisjcHJhZ21hIG9uY2UKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1lbnVtIFdpbmRSdWxlIHsKLSAgICBSVUxFX05PTlpFUk8gPSAwLAotICAgIFJVTEVfRVZF
Tk9ERCA9IDEKK2VudW0gY2xhc3MgV2luZFJ1bGUgeworICAgIE5vblplcm8gPSAwLAorICAgIEV2
ZW5PZGQgPSAxCiB9OwogCiB9Ci0KLSNlbmRpZiAvLyBXaW5kUnVsZV9oCi0KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FMYXllckNvY29h
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2Nv
Y29hL1BsYXRmb3JtQ0FMYXllckNvY29hLm1tCShyZXZpc2lvbiAyMzIxODkpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5t
bQkod29ya2luZyBjb3B5KQpAQCAtOTQxLDkgKzk0MSw5IEBAIFdpbmRSdWxlIFBsYXRmb3JtQ0FM
YXllckNvY29hOjpzaGFwZVdpbmQKIAogICAgIE5TU3RyaW5nICpmaWxsUnVsZSA9IFsoQ0FTaGFw
ZUxheWVyICopbV9sYXllciBmaWxsUnVsZV07CiAgICAgaWYgKFtmaWxsUnVsZSBpc0VxdWFsVG9T
dHJpbmc6QCJldmVuLW9kZCJdKQotICAgICAgICByZXR1cm4gUlVMRV9FVkVOT0REOworICAgICAg
ICByZXR1cm4gV2luZFJ1bGU6OkV2ZW5PZGQ7CiAKLSAgICByZXR1cm4gUlVMRV9OT05aRVJPOwor
ICAgIHJldHVybiBXaW5kUnVsZTo6Tm9uWmVybzsKIH0KIAogdm9pZCBQbGF0Zm9ybUNBTGF5ZXJD
b2NvYTo6c2V0U2hhcGVXaW5kUnVsZShXaW5kUnVsZSB3aW5kUnVsZSkKQEAgLTk1MSwxMCArOTUx
LDEwIEBAIHZvaWQgUGxhdGZvcm1DQUxheWVyQ29jb2E6OnNldFNoYXBlV2luZFIKICAgICBBU1NF
UlQobV9sYXllclR5cGUgPT0gTGF5ZXJUeXBlU2hhcGVMYXllcik7CiAKICAgICBzd2l0Y2ggKHdp
bmRSdWxlKSB7Ci0gICAgY2FzZSBSVUxFX05PTlpFUk86CisgICAgY2FzZSBXaW5kUnVsZTo6Tm9u
WmVybzoKICAgICAgICAgWyhDQVNoYXBlTGF5ZXIgKiltX2xheWVyIHNldEZpbGxSdWxlOkAibm9u
LXplcm8iXTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBSVUxFX0VWRU5PREQ6CisgICAgY2Fz
ZSBXaW5kUnVsZTo6RXZlbk9kZDoKICAgICAgICAgWyhDQVNoYXBlTGF5ZXIgKiltX2xheWVyIHNl
dEZpbGxSdWxlOkAiZXZlbi1vZGQiXTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNz
Q29udGV4dENHLmNwcAkocmV2aXNpb24gMjMyMTg5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02
ODcsNyArNjg3LDcgQEAgc3RhdGljIGlubGluZSBib29sIGNhbGN1bGF0ZURyYXdpbmdNb2RlKAog
ewogICAgIGJvb2wgc2hvdWxkRmlsbCA9IHN0YXRlLmZpbGxQYXR0ZXJuIHx8IHN0YXRlLmZpbGxD
b2xvci5pc1Zpc2libGUoKTsKICAgICBib29sIHNob3VsZFN0cm9rZSA9IHN0YXRlLnN0cm9rZVBh
dHRlcm4gfHwgKHN0YXRlLnN0cm9rZVN0eWxlICE9IE5vU3Ryb2tlICYmIHN0YXRlLnN0cm9rZUNv
bG9yLmlzVmlzaWJsZSgpKTsKLSAgICBib29sIHVzZUVPRmlsbCA9IHN0YXRlLmZpbGxSdWxlID09
IFJVTEVfRVZFTk9ERDsKKyAgICBib29sIHVzZUVPRmlsbCA9IHN0YXRlLmZpbGxSdWxlID09IFdp
bmRSdWxlOjpFdmVuT2RkOwogCiAgICAgaWYgKHNob3VsZEZpbGwpIHsKICAgICAgICAgaWYgKHNo
b3VsZFN0cm9rZSkgewpAQCAtNzc0LDcgKzc3NCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Ojpm
aWxsUGF0aChjb25zdCBQYXQKICAgICAgICAgICAgIENHQ29udGV4dEFkZFBhdGgobGF5ZXJDb250
ZXh0LCBwYXRoLnBsYXRmb3JtUGF0aCgpKTsKICAgICAgICAgICAgIENHQ29udGV4dENvbmNhdENU
TShsYXllckNvbnRleHQsIG1fc3RhdGUuZmlsbEdyYWRpZW50LT5ncmFkaWVudFNwYWNlVHJhbnNm
b3JtKCkpOwogCi0gICAgICAgICAgICBpZiAoZmlsbFJ1bGUoKSA9PSBSVUxFX0VWRU5PREQpCisg
ICAgICAgICAgICBpZiAoZmlsbFJ1bGUoKSA9PSBXaW5kUnVsZTo6RXZlbk9kZCkKICAgICAgICAg
ICAgICAgICBDR0NvbnRleHRFT0NsaXAobGF5ZXJDb250ZXh0KTsKICAgICAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgICAgICBDR0NvbnRleHRDbGlwKGxheWVyQ29udGV4dCk7CkBAIC03ODgsNyAr
Nzg4LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxQYXRoKGNvbnN0IFBhdAogICAgICAg
ICAgICAgQ0dDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQpOwogICAgICAgICAg
ICAgQ0dDb250ZXh0Q29uY2F0Q1RNKGNvbnRleHQsIG1fc3RhdGUuZmlsbEdyYWRpZW50LT5ncmFk
aWVudFNwYWNlVHJhbnNmb3JtKCkpOwogCi0gICAgICAgICAgICBpZiAoZmlsbFJ1bGUoKSA9PSBS
VUxFX0VWRU5PREQpCisgICAgICAgICAgICBpZiAoZmlsbFJ1bGUoKSA9PSBXaW5kUnVsZTo6RXZl
bk9kZCkKICAgICAgICAgICAgICAgICBDR0NvbnRleHRFT0NsaXAoY29udGV4dCk7CiAgICAgICAg
ICAgICBlbHNlCiAgICAgICAgICAgICAgICAgQ0dDb250ZXh0Q2xpcChjb250ZXh0KTsKQEAgLTgw
MiwxMSArODAyLDExIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUGF0aChjb25zdCBQYXQK
ICAgICBpZiAobV9zdGF0ZS5maWxsUGF0dGVybikKICAgICAgICAgYXBwbHlGaWxsUGF0dGVybigp
OwogI2lmIFVTRV9EUkFXX1BBVEhfRElSRUNUCi0gICAgQ0dDb250ZXh0RHJhd1BhdGhEaXJlY3Qo
Y29udGV4dCwgZmlsbFJ1bGUoKSA9PSBSVUxFX0VWRU5PREQgPyBrQ0dQYXRoRU9GaWxsIDoga0NH
UGF0aEZpbGwsIHBhdGgucGxhdGZvcm1QYXRoKCksIG51bGxwdHIpOworICAgIENHQ29udGV4dERy
YXdQYXRoRGlyZWN0KGNvbnRleHQsIGZpbGxSdWxlKCkgPT0gV2luZFJ1bGU6OkV2ZW5PZGQgPyBr
Q0dQYXRoRU9GaWxsIDoga0NHUGF0aEZpbGwsIHBhdGgucGxhdGZvcm1QYXRoKCksIG51bGxwdHIp
OwogI2Vsc2UKICAgICBDR0NvbnRleHRCZWdpblBhdGgoY29udGV4dCk7CiAgICAgQ0dDb250ZXh0
QWRkUGF0aChjb250ZXh0LCBwYXRoLnBsYXRmb3JtUGF0aCgpKTsKLSAgICBpZiAoZmlsbFJ1bGUo
KSA9PSBSVUxFX0VWRU5PREQpCisgICAgaWYgKGZpbGxSdWxlKCkgPT0gV2luZFJ1bGU6OkV2ZW5P
ZGQpCiAgICAgICAgIENHQ29udGV4dEVPRmlsbFBhdGgoY29udGV4dCk7CiAgICAgZWxzZQogICAg
ICAgICBDR0NvbnRleHRGaWxsUGF0aChjb250ZXh0KTsKQEAgLTEwMzQsNyArMTAzNCw3IEBAIHZv
aWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdFdpdGhSb3VuZGUKICAgICBXaW5kUnVsZSBvbGRG
aWxsUnVsZSA9IGZpbGxSdWxlKCk7CiAgICAgQ29sb3Igb2xkRmlsbENvbG9yID0gZmlsbENvbG9y
KCk7CiAKLSAgICBzZXRGaWxsUnVsZShSVUxFX0VWRU5PREQpOworICAgIHNldEZpbGxSdWxlKFdp
bmRSdWxlOjpFdmVuT2RkKTsKICAgICBzZXRGaWxsQ29sb3IoY29sb3IpOwogCiAgICAgLy8gZmls
bFJlY3RXaXRoUm91bmRlZEhvbGUoKSBhc3N1bWVzIHRoYXQgdGhlIGVkZ2VzIG9mIHJlY3QgYXJl
IGNsaXBwZWQgb3V0LCBzbyB3ZSBvbmx5IGNhcmUgYWJvdXQgc2hhZG93cyBjYXN0IGFyb3VuZCBp
bnNpZGUgdGhlIGhvbGUuCkBAIC0xMTI3LDcgKzExMjcsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4
dDo6Y2xpcFBhdGgoY29uc3QgUGF0CiAgICAgICAgIENHQ29udGV4dEJlZ2luUGF0aChwbGF0Zm9y
bUNvbnRleHQoKSk7CiAgICAgICAgIENHQ29udGV4dEFkZFBhdGgocGxhdGZvcm1Db250ZXh0KCks
IHBhdGgucGxhdGZvcm1QYXRoKCkpOwogCi0gICAgICAgIGlmIChjbGlwUnVsZSA9PSBSVUxFX0VW
RU5PREQpCisgICAgICAgIGlmIChjbGlwUnVsZSA9PSBXaW5kUnVsZTo6RXZlbk9kZCkKICAgICAg
ICAgICAgIENHQ29udGV4dEVPQ2xpcChjb250ZXh0KTsKICAgICAgICAgZWxzZQogICAgICAgICAg
ICAgQ0dDb250ZXh0Q2xpcChjb250ZXh0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL1BhdGhDRy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvUGF0aENHLmNwcAkocmV2aXNpb24gMjMyMTg5KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0aENHLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTg0LDcgKzE4NCw3IEBAIGJvb2wgUGF0aDo6Y29udGFpbnMoY29uc3QgRmxvYXRQb2ludCAm
cG8KIAogICAgIC8vIENHUGF0aENvbnRhaW5zUG9pbnQgcmV0dXJucyBmYWxzZSBmb3Igbm9uLWNs
b3NlZCBwYXRocywgYXMgYSB3b3JrLWFyb3VuZCwgd2UgY29weSBhbmQgY2xvc2UgdGhlIHBhdGgg
Zmlyc3QuICBSYWRhciA0NzU4OTk4IGFza3MgZm9yIGEgYmV0dGVyIENHIEFQSSB0byB1c2UKICAg
ICBSZXRhaW5QdHI8Q0dNdXRhYmxlUGF0aFJlZj4gcGF0aCA9IGFkb3B0Q0YoY29weUNHUGF0aENs
b3NpbmdTdWJwYXRocyhtX3BhdGgpKTsKLSAgICBib29sIHJldCA9IENHUGF0aENvbnRhaW5zUG9p
bnQocGF0aC5nZXQoKSwgMCwgcG9pbnQsIHJ1bGUgPT0gUlVMRV9FVkVOT0REID8gdHJ1ZSA6IGZh
bHNlKTsKKyAgICBib29sIHJldCA9IENHUGF0aENvbnRhaW5zUG9pbnQocGF0aC5nZXQoKSwgMCwg
cG9pbnQsIHJ1bGUgPT0gV2luZFJ1bGU6OkV2ZW5PZGQgPyB0cnVlIDogZmFsc2UpOwogICAgIHJl
dHVybiByZXQ7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1Jl
YWx0aW1lVmlkZW9Tb3VyY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwCShyZXZpc2lvbiAyMzIxODkpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjQ1LDcgKzI0NSw3IEBAIHZvaWQgTW9ja1JlYWx0aW1lVmlk
ZW9Tb3VyY2U6OmRyYXdBbmltYXQKICAgICBtX3BhdGguYWRkQXJjKGxvY2F0aW9uLCByYWRpdXMs
IDAsIDIgKiBwaUZsb2F0LCBmYWxzZSk7CiAgICAgbV9wYXRoLmNsb3NlU3VicGF0aCgpOwogICAg
IGNvbnRleHQuc2V0RmlsbENvbG9yKENvbG9yOjp3aGl0ZSk7Ci0gICAgY29udGV4dC5zZXRGaWxs
UnVsZShSVUxFX05PTlpFUk8pOworICAgIGNvbnRleHQuc2V0RmlsbFJ1bGUoV2luZFJ1bGU6Ok5v
blplcm8pOwogICAgIGNvbnRleHQuZmlsbFBhdGgobV9wYXRoKTsKIAogICAgIGZsb2F0IGVuZEFu
Z2xlID0gcGlGbG9hdCAqICgoKGZtb2QobV9mcmFtZU51bWJlciwgZnJhbWVSYXRlKCkpICsgMC41
KSAqICgyLjAgLyBmcmFtZVJhdGUoKSkpICsgMSk7CkBAIC0yNTQsNyArMjU0LDcgQEAgdm9pZCBN
b2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6ZHJhd0FuaW1hdAogICAgIG1fcGF0aC5hZGRBcmMobG9j
YXRpb24sIHJhZGl1cywgMS41ICogcGlGbG9hdCwgZW5kQW5nbGUsIGZhbHNlKTsKICAgICBtX3Bh
dGguY2xvc2VTdWJwYXRoKCk7CiAgICAgY29udGV4dC5zZXRGaWxsQ29sb3IoQ29sb3I6OmdyYXkp
OwotICAgIGNvbnRleHQuc2V0RmlsbFJ1bGUoUlVMRV9OT05aRVJPKTsKKyAgICBjb250ZXh0LnNl
dEZpbGxSdWxlKFdpbmRSdWxlOjpOb25aZXJvKTsKICAgICBjb250ZXh0LmZpbGxQYXRoKG1fcGF0
aCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5k
ZXJlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpbHRlckVm
ZmVjdFJlbmRlcmVyLmNwcAkocmV2aXNpb24gMjMyMTg5KQorKysgU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRlcmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE4LDcg
KzExOCw3IEBAIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IEZpbHRlckVmZmVjdFJlbmRlcmUKIAogICAg
ICAgICBlZmZlY3RFbGVtZW50LnNldFN0YW5kYXJkQXR0cmlidXRlcyhlZmZlY3QuZ2V0KCkpOwog
ICAgICAgICBpZiAoZWZmZWN0RWxlbWVudC5yZW5kZXJlcigpKQotICAgICAgICAgICAgZWZmZWN0
LT5zZXRPcGVyYXRpbmdDb2xvclNwYWNlKGVmZmVjdEVsZW1lbnQucmVuZGVyZXIoKS0+c3R5bGUo
KS5zdmdTdHlsZSgpLmNvbG9ySW50ZXJwb2xhdGlvbkZpbHRlcnMoKSA9PSBDSV9MSU5FQVJSR0Ig
PyBDb2xvclNwYWNlTGluZWFyUkdCIDogQ29sb3JTcGFjZVNSR0IpOworICAgICAgICAgICAgZWZm
ZWN0LT5zZXRPcGVyYXRpbmdDb2xvclNwYWNlKGVmZmVjdEVsZW1lbnQucmVuZGVyZXIoKS0+c3R5
bGUoKS5zdmdTdHlsZSgpLmNvbG9ySW50ZXJwb2xhdGlvbkZpbHRlcnMoKSA9PSBDb2xvckludGVy
cG9sYXRpb246OkxpbmVhclJHQiA/IENvbG9yU3BhY2VMaW5lYXJSR0IgOiBDb2xvclNwYWNlU1JH
Qik7CiAKICAgICAgICAgYnVpbGRlci0+YWRkKGVmZmVjdEVsZW1lbnQucmVzdWx0KCksIGVmZmVj
dCk7CiAgICAgICAgIG1fZWZmZWN0cy5hcHBlbmQoKmVmZmVjdCk7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAJKHJldmlzaW9u
IDIzMjE4OSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVj
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5MjksNyArMTkyOSw3IEBAIHZvaWQgUmVuZGVyQm94
TW9kZWxPYmplY3Q6OnBhaW50Qm9yZGVyKGMKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAg
ICAgICBwYXRoLmFkZFJlY3QocGl4ZWxTbmFwcGVkSW5uZXJCb3JkZXIucmVjdCgpKTsKICAgICAg
ICAgICAgIAotICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldEZpbGxSdWxlKFJVTEVfRVZF
Tk9ERCk7CisgICAgICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0RmlsbFJ1bGUoV2luZFJ1bGU6
OkV2ZW5PZGQpOwogICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldEZpbGxDb2xvcihlZGdl
c1tmaXJzdFZpc2libGVFZGdlXS5jb2xvcigpKTsKICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4
dC5maWxsUGF0aChwYXRoKTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTE5NDYsNyArMTk0Niw3
IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Qm9yZGVyKGMKICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRG
aWxsUnVsZShSVUxFX05PTlpFUk8pOworICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldEZp
bGxSdWxlKFdpbmRSdWxlOjpOb25aZXJvKTsKICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5z
ZXRGaWxsQ29sb3IoZWRnZXNbZmlyc3RWaXNpYmxlRWRnZV0uY29sb3IoKSk7CiAgICAgICAgICAg
ICBncmFwaGljc0NvbnRleHQuZmlsbFBhdGgocGF0aCk7CiAgICAgICAgICAgICByZXR1cm47CkBA
IC0yMjA1LDcgKzIyMDUsNyBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpjbGlwQm9yZGVy
U2lkCiAgICAgaWYgKGZpcnN0RWRnZU1hdGNoZXMgPT0gc2Vjb25kRWRnZU1hdGNoZXMpIHsKICAg
ICAgICAgYm9vbCB3YXNBbnRpYWxpYXNlZCA9IGdyYXBoaWNzQ29udGV4dC5zaG91bGRBbnRpYWxp
YXMoKTsKICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldFNob3VsZEFudGlhbGlhcyghZmlyc3RF
ZGdlTWF0Y2hlcyk7Ci0gICAgICAgIGdyYXBoaWNzQ29udGV4dC5jbGlwUGF0aChQYXRoOjpwb2x5
Z29uUGF0aEZyb21Qb2ludHMocXVhZCksIFJVTEVfTk9OWkVSTyk7CisgICAgICAgIGdyYXBoaWNz
Q29udGV4dC5jbGlwUGF0aChQYXRoOjpwb2x5Z29uUGF0aEZyb21Qb2ludHMocXVhZCksIFdpbmRS
dWxlOjpOb25aZXJvKTsKICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldFNob3VsZEFudGlhbGlh
cyh3YXNBbnRpYWxpYXNlZCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0yMjIwLDcgKzIy
MjAsNyBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpjbGlwQm9yZGVyU2lkCiAgICAgfTsK
ICAgICBib29sIHdhc0FudGlhbGlhc2VkID0gZ3JhcGhpY3NDb250ZXh0LnNob3VsZEFudGlhbGlh
cygpOwogICAgIGdyYXBoaWNzQ29udGV4dC5zZXRTaG91bGRBbnRpYWxpYXMoIWZpcnN0RWRnZU1h
dGNoZXMpOwotICAgIGdyYXBoaWNzQ29udGV4dC5jbGlwUGF0aChQYXRoOjpwb2x5Z29uUGF0aEZy
b21Qb2ludHMoZmlyc3RRdWFkKSwgUlVMRV9OT05aRVJPKTsKKyAgICBncmFwaGljc0NvbnRleHQu
Y2xpcFBhdGgoUGF0aDo6cG9seWdvblBhdGhGcm9tUG9pbnRzKGZpcnN0UXVhZCksIFdpbmRSdWxl
OjpOb25aZXJvKTsKIAogICAgIFZlY3RvcjxGbG9hdFBvaW50PiBzZWNvbmRRdWFkID0gewogICAg
ICAgICBxdWFkWzBdLApAQCAtMjIzMSw3ICsyMjMxLDcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9i
amVjdDo6Y2xpcEJvcmRlclNpZAogICAgIH07CiAgICAgLy8gQW50aWFsaWFzaW5nIGFmZmVjdHMg
dGhlIHNlY29uZCBzaWRlLgogICAgIGdyYXBoaWNzQ29udGV4dC5zZXRTaG91bGRBbnRpYWxpYXMo
IXNlY29uZEVkZ2VNYXRjaGVzKTsKLSAgICBncmFwaGljc0NvbnRleHQuY2xpcFBhdGgoUGF0aDo6
cG9seWdvblBhdGhGcm9tUG9pbnRzKHNlY29uZFF1YWQpLCBSVUxFX05PTlpFUk8pOworICAgIGdy
YXBoaWNzQ29udGV4dC5jbGlwUGF0aChQYXRoOjpwb2x5Z29uUGF0aEZyb21Qb2ludHMoc2Vjb25k
UXVhZCksIFdpbmRSdWxlOjpOb25aZXJvKTsKIAogICAgIGdyYXBoaWNzQ29udGV4dC5zZXRTaG91
bGRBbnRpYWxpYXMod2FzQW50aWFsaWFzZWQpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcAkocmV2aXNpb24gMjMyMTg5KQorKysgU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODkw
LDcgKzE4OTAsNyBAQCB2b2lkIFJlbmRlckVsZW1lbnQ6OnBhaW50T3V0bGluZShQYWludEluCiAg
ICAgICAgICAgICBQYXRoIHBhdGg7CiAgICAgICAgICAgICBwYXRoLmFkZFJlY3Qob3V0ZXIpOwog
ICAgICAgICAgICAgcGF0aC5hZGRSZWN0KGlubmVyKTsKLSAgICAgICAgICAgIGdyYXBoaWNzQ29u
dGV4dC5zZXRGaWxsUnVsZShSVUxFX0VWRU5PREQpOworICAgICAgICAgICAgZ3JhcGhpY3NDb250
ZXh0LnNldEZpbGxSdWxlKFdpbmRSdWxlOjpFdmVuT2RkKTsKICAgICAgICAgICAgIGdyYXBoaWNz
Q29udGV4dC5zZXRGaWxsQ29sb3Iob3V0bGluZUNvbG9yKTsKICAgICAgICAgICAgIGdyYXBoaWNz
Q29udGV4dC5maWxsUGF0aChwYXRoKTsKICAgICAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAkocmV2aXNpb24gMjMyMTg5KQorKysg
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDEzOSw3ICs0MTM5LDcgQEAgUGF0aCBSZW5kZXJMYXllcjo6Y29tcHV0ZUNsaXBQYXRoKGNv
bnN0IAogICAgICAgICBGbG9hdFJvdW5kZWRSZWN0IHNoYXBlUmVjdCA9IGNvbXB1dGVSb3VuZGVk
UmVjdEZvckJveFNoYXBlKGNsaXBQYXRoLnJlZmVyZW5jZUJveCgpLCBkb3duY2FzdDxSZW5kZXJC
b3g+KHJlbmRlcmVyKCkpKS5waXhlbFNuYXBwZWRSb3VuZGVkUmVjdEZvclBhaW50aW5nKGRldmlj
ZVNhbGVGYWN0b3IpOwogICAgICAgICBzaGFwZVJlY3QubW92ZShvZmZzZXRGcm9tUm9vdCk7CiAK
LSAgICAgICAgd2luZFJ1bGUgPSBSVUxFX05PTlpFUk87CisgICAgICAgIHdpbmRSdWxlID0gV2lu
ZFJ1bGU6Ok5vblplcm87CiAgICAgICAgIHJldHVybiBjbGlwUGF0aC5wYXRoRm9yUmVmZXJlbmNl
UmVjdChzaGFwZVJlY3QpOwogICAgIH0KICAgICAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9CYXNpY1NoYXBlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9CYXNpY1NoYXBlcy5oCShyZXZpc2lvbiAyMzIxODkpCisrKyBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFwZXMuaAkod29ya2luZyBjb3B5KQpAQCAt
NTksNyArNTksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBUeXBlIHR5cGUoKSBjb25zdCA9IDA7
CiAKICAgICB2aXJ0dWFsIGNvbnN0IFBhdGgmIHBhdGgoY29uc3QgRmxvYXRSZWN0JikgPSAwOwot
ICAgIHZpcnR1YWwgV2luZFJ1bGUgd2luZFJ1bGUoKSBjb25zdCB7IHJldHVybiBSVUxFX05PTlpF
Uk87IH0KKyAgICB2aXJ0dWFsIFdpbmRSdWxlIHdpbmRSdWxlKCkgY29uc3QgeyByZXR1cm4gV2lu
ZFJ1bGU6Ok5vblplcm87IH0KIAogICAgIHZpcnR1YWwgYm9vbCBjYW5CbGVuZChjb25zdCBCYXNp
Y1NoYXBlJikgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgUmVmPEJhc2ljU2hhcGU+IGJsZW5kKGNv
bnN0IEJhc2ljU2hhcGUmIGZyb20sIGRvdWJsZSkgY29uc3QgPSAwOwpAQCAtMjYwLDcgKzI2MCw3
IEBAIHByaXZhdGU6CiAKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQmFzaWNTaGFwZSYpIGNv
bnN0IG92ZXJyaWRlOwogCi0gICAgV2luZFJ1bGUgbV93aW5kUnVsZSB7IFJVTEVfTk9OWkVSTyB9
OworICAgIFdpbmRSdWxlIG1fd2luZFJ1bGUgeyBXaW5kUnVsZTo6Tm9uWmVybyB9OwogICAgIFZl
Y3RvcjxMZW5ndGg+IG1fdmFsdWVzOwogfTsKIApAQCAtMjg5LDcgKzI4OSw3IEBAIHByaXZhdGU6
CiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEJhc2ljU2hhcGUmKSBjb25zdCBvdmVycmlkZTsK
IAogICAgIHN0ZDo6dW5pcXVlX3B0cjxTVkdQYXRoQnl0ZVN0cmVhbT4gbV9ieXRlU3RyZWFtOwot
ICAgIFdpbmRSdWxlIG1fd2luZFJ1bGUgeyBSVUxFX05PTlpFUk8gfTsKKyAgICBXaW5kUnVsZSBt
X3dpbmRSdWxlIHsgV2luZFJ1bGU6Ok5vblplcm8gfTsKIH07CiAKIGNsYXNzIEJhc2ljU2hhcGVJ
bnNldCBmaW5hbCA6IHB1YmxpYyBCYXNpY1NoYXBlIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCShyZXZpc2lvbiAyMzIxODkpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAkod29ya2luZyBjb3B5KQpA
QCAtMTI5MCwxNSArMTI5MCwxNSBAQCBwdWJsaWM6CiAgICAgY29uc3QgU1ZHUmVuZGVyU3R5bGUm
IHN2Z1N0eWxlKCkgY29uc3QgeyByZXR1cm4gbV9zdmdTdHlsZTsgfQogICAgIFNWR1JlbmRlclN0
eWxlJiBhY2Nlc3NTVkdTdHlsZSgpIHsgcmV0dXJuIG1fc3ZnU3R5bGUuYWNjZXNzKCk7IH0KIAot
ICAgIGNvbnN0IFNWR1BhaW50VHlwZSYgZmlsbFBhaW50VHlwZSgpIGNvbnN0IHsgcmV0dXJuIHN2
Z1N0eWxlKCkuZmlsbFBhaW50VHlwZSgpOyB9CisgICAgU1ZHUGFpbnRUeXBlIGZpbGxQYWludFR5
cGUoKSBjb25zdCB7IHJldHVybiBzdmdTdHlsZSgpLmZpbGxQYWludFR5cGUoKTsgfQogICAgIENv
bG9yIGZpbGxQYWludENvbG9yKCkgY29uc3QgeyByZXR1cm4gc3ZnU3R5bGUoKS5maWxsUGFpbnRD
b2xvcigpOyB9Ci0gICAgdm9pZCBzZXRGaWxsUGFpbnRDb2xvcihjb25zdCBDb2xvciYgY29sb3Ip
IHsgYWNjZXNzU1ZHU3R5bGUoKS5zZXRGaWxsUGFpbnQoU1ZHX1BBSU5UVFlQRV9SR0JDT0xPUiwg
Y29sb3IsIGVtcHR5U3RyaW5nKCkpOyB9CisgICAgdm9pZCBzZXRGaWxsUGFpbnRDb2xvcihjb25z
dCBDb2xvciYgY29sb3IpIHsgYWNjZXNzU1ZHU3R5bGUoKS5zZXRGaWxsUGFpbnQoU1ZHUGFpbnRU
eXBlOjpSR0JDb2xvciwgY29sb3IsIGVtcHR5U3RyaW5nKCkpOyB9CiAgICAgZmxvYXQgZmlsbE9w
YWNpdHkoKSBjb25zdCB7IHJldHVybiBzdmdTdHlsZSgpLmZpbGxPcGFjaXR5KCk7IH0KICAgICB2
b2lkIHNldEZpbGxPcGFjaXR5KGZsb2F0IGYpIHsgYWNjZXNzU1ZHU3R5bGUoKS5zZXRGaWxsT3Bh
Y2l0eShmKTsgfQogCi0gICAgY29uc3QgU1ZHUGFpbnRUeXBlJiBzdHJva2VQYWludFR5cGUoKSBj
b25zdCB7IHJldHVybiBzdmdTdHlsZSgpLnN0cm9rZVBhaW50VHlwZSgpOyB9CisgICAgU1ZHUGFp
bnRUeXBlIHN0cm9rZVBhaW50VHlwZSgpIGNvbnN0IHsgcmV0dXJuIHN2Z1N0eWxlKCkuc3Ryb2tl
UGFpbnRUeXBlKCk7IH0KICAgICBDb2xvciBzdHJva2VQYWludENvbG9yKCkgY29uc3QgeyByZXR1
cm4gc3ZnU3R5bGUoKS5zdHJva2VQYWludENvbG9yKCk7IH0KLSAgICB2b2lkIHNldFN0cm9rZVBh
aW50Q29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKSB7IGFjY2Vzc1NWR1N0eWxlKCkuc2V0U3Ryb2tl
UGFpbnQoU1ZHX1BBSU5UVFlQRV9SR0JDT0xPUiwgY29sb3IsIGVtcHR5U3RyaW5nKCkpOyB9Cisg
ICAgdm9pZCBzZXRTdHJva2VQYWludENvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikgeyBhY2Nlc3NT
VkdTdHlsZSgpLnNldFN0cm9rZVBhaW50KFNWR1BhaW50VHlwZTo6UkdCQ29sb3IsIGNvbG9yLCBl
bXB0eVN0cmluZygpKTsgfQogICAgIGZsb2F0IHN0cm9rZU9wYWNpdHkoKSBjb25zdCB7IHJldHVy
biBzdmdTdHlsZSgpLnN0cm9rZU9wYWNpdHkoKTsgfQogICAgIHZvaWQgc2V0U3Ryb2tlT3BhY2l0
eShmbG9hdCBmKSB7IGFjY2Vzc1NWR1N0eWxlKCkuc2V0U3Ryb2tlT3BhY2l0eShmKTsgfQogICAg
IFZlY3RvcjxTVkdMZW5ndGhWYWx1ZT4gc3Ryb2tlRGFzaEFycmF5KCkgY29uc3QgeyByZXR1cm4g
c3ZnU3R5bGUoKS5zdHJva2VEYXNoQXJyYXkoKTsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1NWR1JlbmRlclN0eWxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL1NWR1JlbmRlclN0eWxlLmgJKHJldmlzaW9uIDIzMjE4OSkKKysr
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TVkdSZW5kZXJTdHlsZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC00NywyNiArNDcsMjYgQEAgcHVibGljOgogICAgIGJvb2wgb3BlcmF0b3IhPShj
b25zdCBTVkdSZW5kZXJTdHlsZSYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gb3Ro
ZXIpOyB9CiAKICAgICAvLyBJbml0aWFsIHZhbHVlcyBmb3IgYWxsIHRoZSBwcm9wZXJ0aWVzCi0g
ICAgc3RhdGljIEVBbGlnbm1lbnRCYXNlbGluZSBpbml0aWFsQWxpZ25tZW50QmFzZWxpbmUoKSB7
IHJldHVybiBBQl9BVVRPOyB9Ci0gICAgc3RhdGljIEVEb21pbmFudEJhc2VsaW5lIGluaXRpYWxE
b21pbmFudEJhc2VsaW5lKCkgeyByZXR1cm4gREJfQVVUTzsgfQotICAgIHN0YXRpYyBFQmFzZWxp
bmVTaGlmdCBpbml0aWFsQmFzZWxpbmVTaGlmdCgpIHsgcmV0dXJuIEJTX0JBU0VMSU5FOyB9Ci0g
ICAgc3RhdGljIEVWZWN0b3JFZmZlY3QgaW5pdGlhbFZlY3RvckVmZmVjdCgpIHsgcmV0dXJuIFZF
X05PTkU7IH0KLSAgICBzdGF0aWMgRUJ1ZmZlcmVkUmVuZGVyaW5nIGluaXRpYWxCdWZmZXJlZFJl
bmRlcmluZygpIHsgcmV0dXJuIEJSX0FVVE87IH0KLSAgICBzdGF0aWMgV2luZFJ1bGUgaW5pdGlh
bENsaXBSdWxlKCkgeyByZXR1cm4gUlVMRV9OT05aRVJPOyB9Ci0gICAgc3RhdGljIEVDb2xvcklu
dGVycG9sYXRpb24gaW5pdGlhbENvbG9ySW50ZXJwb2xhdGlvbigpIHsgcmV0dXJuIENJX1NSR0I7
IH0KLSAgICBzdGF0aWMgRUNvbG9ySW50ZXJwb2xhdGlvbiBpbml0aWFsQ29sb3JJbnRlcnBvbGF0
aW9uRmlsdGVycygpIHsgcmV0dXJuIENJX0xJTkVBUlJHQjsgfQotICAgIHN0YXRpYyBFQ29sb3JS
ZW5kZXJpbmcgaW5pdGlhbENvbG9yUmVuZGVyaW5nKCkgeyByZXR1cm4gQ1JfQVVUTzsgfQotICAg
IHN0YXRpYyBXaW5kUnVsZSBpbml0aWFsRmlsbFJ1bGUoKSB7IHJldHVybiBSVUxFX05PTlpFUk87
IH0KLSAgICBzdGF0aWMgRVNoYXBlUmVuZGVyaW5nIGluaXRpYWxTaGFwZVJlbmRlcmluZygpIHsg
cmV0dXJuIFNSX0FVVE87IH0KLSAgICBzdGF0aWMgRVRleHRBbmNob3IgaW5pdGlhbFRleHRBbmNo
b3IoKSB7IHJldHVybiBUQV9TVEFSVDsgfQotICAgIHN0YXRpYyBFR2x5cGhPcmllbnRhdGlvbiBp
bml0aWFsR2x5cGhPcmllbnRhdGlvbkhvcml6b250YWwoKSB7IHJldHVybiBHT18wREVHOyB9Ci0g
ICAgc3RhdGljIEVHbHlwaE9yaWVudGF0aW9uIGluaXRpYWxHbHlwaE9yaWVudGF0aW9uVmVydGlj
YWwoKSB7IHJldHVybiBHT19BVVRPOyB9CisgICAgc3RhdGljIEFsaWdubWVudEJhc2VsaW5lIGlu
aXRpYWxBbGlnbm1lbnRCYXNlbGluZSgpIHsgcmV0dXJuIEFsaWdubWVudEJhc2VsaW5lOjpBdXRv
OyB9CisgICAgc3RhdGljIERvbWluYW50QmFzZWxpbmUgaW5pdGlhbERvbWluYW50QmFzZWxpbmUo
KSB7IHJldHVybiBEb21pbmFudEJhc2VsaW5lOjpBdXRvOyB9CisgICAgc3RhdGljIEJhc2VsaW5l
U2hpZnQgaW5pdGlhbEJhc2VsaW5lU2hpZnQoKSB7IHJldHVybiBCYXNlbGluZVNoaWZ0OjpCYXNl
bGluZTsgfQorICAgIHN0YXRpYyBWZWN0b3JFZmZlY3QgaW5pdGlhbFZlY3RvckVmZmVjdCgpIHsg
cmV0dXJuIFZlY3RvckVmZmVjdDo6Tm9uZTsgfQorICAgIHN0YXRpYyBCdWZmZXJlZFJlbmRlcmlu
ZyBpbml0aWFsQnVmZmVyZWRSZW5kZXJpbmcoKSB7IHJldHVybiBCdWZmZXJlZFJlbmRlcmluZzo6
QXV0bzsgfQorICAgIHN0YXRpYyBXaW5kUnVsZSBpbml0aWFsQ2xpcFJ1bGUoKSB7IHJldHVybiBX
aW5kUnVsZTo6Tm9uWmVybzsgfQorICAgIHN0YXRpYyBDb2xvckludGVycG9sYXRpb24gaW5pdGlh
bENvbG9ySW50ZXJwb2xhdGlvbigpIHsgcmV0dXJuIENvbG9ySW50ZXJwb2xhdGlvbjo6U1JHQjsg
fQorICAgIHN0YXRpYyBDb2xvckludGVycG9sYXRpb24gaW5pdGlhbENvbG9ySW50ZXJwb2xhdGlv
bkZpbHRlcnMoKSB7IHJldHVybiBDb2xvckludGVycG9sYXRpb246OkxpbmVhclJHQjsgfQorICAg
IHN0YXRpYyBDb2xvclJlbmRlcmluZyBpbml0aWFsQ29sb3JSZW5kZXJpbmcoKSB7IHJldHVybiBD
b2xvclJlbmRlcmluZzo6QXV0bzsgfQorICAgIHN0YXRpYyBXaW5kUnVsZSBpbml0aWFsRmlsbFJ1
bGUoKSB7IHJldHVybiBXaW5kUnVsZTo6Tm9uWmVybzsgfQorICAgIHN0YXRpYyBTaGFwZVJlbmRl
cmluZyBpbml0aWFsU2hhcGVSZW5kZXJpbmcoKSB7IHJldHVybiBTaGFwZVJlbmRlcmluZzo6QXV0
bzsgfQorICAgIHN0YXRpYyBUZXh0QW5jaG9yIGluaXRpYWxUZXh0QW5jaG9yKCkgeyByZXR1cm4g
VGV4dEFuY2hvcjo6U3RhcnQ7IH0KKyAgICBzdGF0aWMgR2x5cGhPcmllbnRhdGlvbiBpbml0aWFs
R2x5cGhPcmllbnRhdGlvbkhvcml6b250YWwoKSB7IHJldHVybiBHbHlwaE9yaWVudGF0aW9uOjpE
ZWdyZWVzMDsgfQorICAgIHN0YXRpYyBHbHlwaE9yaWVudGF0aW9uIGluaXRpYWxHbHlwaE9yaWVu
dGF0aW9uVmVydGljYWwoKSB7IHJldHVybiBHbHlwaE9yaWVudGF0aW9uOjpBdXRvOyB9CiAgICAg
c3RhdGljIGZsb2F0IGluaXRpYWxGaWxsT3BhY2l0eSgpIHsgcmV0dXJuIDE7IH0KLSAgICBzdGF0
aWMgU1ZHUGFpbnRUeXBlIGluaXRpYWxGaWxsUGFpbnRUeXBlKCkgeyByZXR1cm4gU1ZHX1BBSU5U
VFlQRV9SR0JDT0xPUjsgfQorICAgIHN0YXRpYyBTVkdQYWludFR5cGUgaW5pdGlhbEZpbGxQYWlu
dFR5cGUoKSB7IHJldHVybiBTVkdQYWludFR5cGU6OlJHQkNvbG9yOyB9CiAgICAgc3RhdGljIENv
bG9yIGluaXRpYWxGaWxsUGFpbnRDb2xvcigpIHsgcmV0dXJuIENvbG9yOjpibGFjazsgfQogICAg
IHN0YXRpYyBTdHJpbmcgaW5pdGlhbEZpbGxQYWludFVyaSgpIHsgcmV0dXJuIFN0cmluZygpOyB9
CiAgICAgc3RhdGljIGZsb2F0IGluaXRpYWxTdHJva2VPcGFjaXR5KCkgeyByZXR1cm4gMTsgfQot
ICAgIHN0YXRpYyBTVkdQYWludFR5cGUgaW5pdGlhbFN0cm9rZVBhaW50VHlwZSgpIHsgcmV0dXJu
IFNWR19QQUlOVFRZUEVfTk9ORTsgfQorICAgIHN0YXRpYyBTVkdQYWludFR5cGUgaW5pdGlhbFN0
cm9rZVBhaW50VHlwZSgpIHsgcmV0dXJuIFNWR1BhaW50VHlwZTo6Tm9uZTsgfQogICAgIHN0YXRp
YyBDb2xvciBpbml0aWFsU3Ryb2tlUGFpbnRDb2xvcigpIHsgcmV0dXJuIENvbG9yKCk7IH0KICAg
ICBzdGF0aWMgU3RyaW5nIGluaXRpYWxTdHJva2VQYWludFVyaSgpIHsgcmV0dXJuIFN0cmluZygp
OyB9CiAgICAgc3RhdGljIFZlY3RvcjxTVkdMZW5ndGhWYWx1ZT4gaW5pdGlhbFN0cm9rZURhc2hB
cnJheSgpIHsgcmV0dXJuIHsgfTsgfQpAQCAtODEsMjYgKzgxLDI2IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgU3RyaW5nIGluaXRpYWxNYXJrZXJTdGFydFJlc291cmNlKCkgeyByZXR1cm4gU3RyaW5n
KCk7IH0KICAgICBzdGF0aWMgU3RyaW5nIGluaXRpYWxNYXJrZXJNaWRSZXNvdXJjZSgpIHsgcmV0
dXJuIFN0cmluZygpOyB9CiAgICAgc3RhdGljIFN0cmluZyBpbml0aWFsTWFya2VyRW5kUmVzb3Vy
Y2UoKSB7IHJldHVybiBTdHJpbmcoKTsgfQotICAgIHN0YXRpYyBFTWFza1R5cGUgaW5pdGlhbE1h
c2tUeXBlKCkgeyByZXR1cm4gTVRfTFVNSU5BTkNFOyB9CisgICAgc3RhdGljIE1hc2tUeXBlIGlu
aXRpYWxNYXNrVHlwZSgpIHsgcmV0dXJuIE1hc2tUeXBlOjpMdW1pbmFuY2U7IH0KICAgICBzdGF0
aWMgU1ZHTGVuZ3RoVmFsdWUgaW5pdGlhbEJhc2VsaW5lU2hpZnRWYWx1ZSgpOwogICAgIHN0YXRp
YyBTVkdMZW5ndGhWYWx1ZSBpbml0aWFsS2VybmluZygpOwogCiAgICAgLy8gU1ZHIENTUyBQcm9w
ZXJ0eSBzZXR0ZXJzCi0gICAgdm9pZCBzZXRBbGlnbm1lbnRCYXNlbGluZShFQWxpZ25tZW50QmFz
ZWxpbmUgdmFsKSB7IG1fbm9uSW5oZXJpdGVkRmxhZ3MuZmxhZ0JpdHMuYWxpZ25tZW50QmFzZWxp
bmUgPSB2YWw7IH0KLSAgICB2b2lkIHNldERvbWluYW50QmFzZWxpbmUoRURvbWluYW50QmFzZWxp
bmUgdmFsKSB7IG1fbm9uSW5oZXJpdGVkRmxhZ3MuZmxhZ0JpdHMuZG9taW5hbnRCYXNlbGluZSA9
IHZhbDsgfQotICAgIHZvaWQgc2V0QmFzZWxpbmVTaGlmdChFQmFzZWxpbmVTaGlmdCB2YWwpIHsg
bV9ub25Jbmhlcml0ZWRGbGFncy5mbGFnQml0cy5iYXNlbGluZVNoaWZ0ID0gdmFsOyB9Ci0gICAg
dm9pZCBzZXRWZWN0b3JFZmZlY3QoRVZlY3RvckVmZmVjdCB2YWwpIHsgbV9ub25Jbmhlcml0ZWRG
bGFncy5mbGFnQml0cy52ZWN0b3JFZmZlY3QgPSB2YWw7IH0KLSAgICB2b2lkIHNldEJ1ZmZlcmVk
UmVuZGVyaW5nKEVCdWZmZXJlZFJlbmRlcmluZyB2YWwpIHsgbV9ub25Jbmhlcml0ZWRGbGFncy5m
bGFnQml0cy5idWZmZXJlZFJlbmRlcmluZyA9IHZhbDsgfQotICAgIHZvaWQgc2V0Q2xpcFJ1bGUo
V2luZFJ1bGUgdmFsKSB7IG1faW5oZXJpdGVkRmxhZ3MuY2xpcFJ1bGUgPSB2YWw7IH0KLSAgICB2
b2lkIHNldENvbG9ySW50ZXJwb2xhdGlvbihFQ29sb3JJbnRlcnBvbGF0aW9uIHZhbCkgeyBtX2lu
aGVyaXRlZEZsYWdzLmNvbG9ySW50ZXJwb2xhdGlvbiA9IHZhbDsgfQotICAgIHZvaWQgc2V0Q29s
b3JJbnRlcnBvbGF0aW9uRmlsdGVycyhFQ29sb3JJbnRlcnBvbGF0aW9uIHZhbCkgeyBtX2luaGVy
aXRlZEZsYWdzLmNvbG9ySW50ZXJwb2xhdGlvbkZpbHRlcnMgPSB2YWw7IH0KLSAgICB2b2lkIHNl
dENvbG9yUmVuZGVyaW5nKEVDb2xvclJlbmRlcmluZyB2YWwpIHsgbV9pbmhlcml0ZWRGbGFncy5j
b2xvclJlbmRlcmluZyA9IHZhbDsgfQotICAgIHZvaWQgc2V0RmlsbFJ1bGUoV2luZFJ1bGUgdmFs
KSB7IG1faW5oZXJpdGVkRmxhZ3MuZmlsbFJ1bGUgPSB2YWw7IH0KLSAgICB2b2lkIHNldFNoYXBl
UmVuZGVyaW5nKEVTaGFwZVJlbmRlcmluZyB2YWwpIHsgbV9pbmhlcml0ZWRGbGFncy5zaGFwZVJl
bmRlcmluZyA9IHZhbDsgfQotICAgIHZvaWQgc2V0VGV4dEFuY2hvcihFVGV4dEFuY2hvciB2YWwp
IHsgbV9pbmhlcml0ZWRGbGFncy50ZXh0QW5jaG9yID0gdmFsOyB9Ci0gICAgdm9pZCBzZXRHbHlw
aE9yaWVudGF0aW9uSG9yaXpvbnRhbChFR2x5cGhPcmllbnRhdGlvbiB2YWwpIHsgbV9pbmhlcml0
ZWRGbGFncy5nbHlwaE9yaWVudGF0aW9uSG9yaXpvbnRhbCA9IHZhbDsgfQotICAgIHZvaWQgc2V0
R2x5cGhPcmllbnRhdGlvblZlcnRpY2FsKEVHbHlwaE9yaWVudGF0aW9uIHZhbCkgeyBtX2luaGVy
aXRlZEZsYWdzLmdseXBoT3JpZW50YXRpb25WZXJ0aWNhbCA9IHZhbDsgfQotICAgIHZvaWQgc2V0
TWFza1R5cGUoRU1hc2tUeXBlIHZhbCkgeyBtX25vbkluaGVyaXRlZEZsYWdzLmZsYWdCaXRzLm1h
c2tUeXBlID0gdmFsOyB9CisgICAgdm9pZCBzZXRBbGlnbm1lbnRCYXNlbGluZShBbGlnbm1lbnRC
YXNlbGluZSB2YWwpIHsgbV9ub25Jbmhlcml0ZWRGbGFncy5mbGFnQml0cy5hbGlnbm1lbnRCYXNl
bGluZSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPih2YWwpOyB9CisgICAgdm9pZCBzZXREb21pbmFu
dEJhc2VsaW5lKERvbWluYW50QmFzZWxpbmUgdmFsKSB7IG1fbm9uSW5oZXJpdGVkRmxhZ3MuZmxh
Z0JpdHMuZG9taW5hbnRCYXNlbGluZSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPih2YWwpOyB9Cisg
ICAgdm9pZCBzZXRCYXNlbGluZVNoaWZ0KEJhc2VsaW5lU2hpZnQgdmFsKSB7IG1fbm9uSW5oZXJp
dGVkRmxhZ3MuZmxhZ0JpdHMuYmFzZWxpbmVTaGlmdCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPih2
YWwpOyB9CisgICAgdm9pZCBzZXRWZWN0b3JFZmZlY3QoVmVjdG9yRWZmZWN0IHZhbCkgeyBtX25v
bkluaGVyaXRlZEZsYWdzLmZsYWdCaXRzLnZlY3RvckVmZmVjdCA9IHN0YXRpY19jYXN0PHVuc2ln
bmVkPih2YWwpOyB9CisgICAgdm9pZCBzZXRCdWZmZXJlZFJlbmRlcmluZyhCdWZmZXJlZFJlbmRl
cmluZyB2YWwpIHsgbV9ub25Jbmhlcml0ZWRGbGFncy5mbGFnQml0cy5idWZmZXJlZFJlbmRlcmlu
ZyA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPih2YWwpOyB9CisgICAgdm9pZCBzZXRDbGlwUnVsZShX
aW5kUnVsZSB2YWwpIHsgbV9pbmhlcml0ZWRGbGFncy5jbGlwUnVsZSA9IHN0YXRpY19jYXN0PHVu
c2lnbmVkPih2YWwpOyB9CisgICAgdm9pZCBzZXRDb2xvckludGVycG9sYXRpb24oQ29sb3JJbnRl
cnBvbGF0aW9uIHZhbCkgeyBtX2luaGVyaXRlZEZsYWdzLmNvbG9ySW50ZXJwb2xhdGlvbiA9IHN0
YXRpY19jYXN0PHVuc2lnbmVkPih2YWwpOyB9CisgICAgdm9pZCBzZXRDb2xvckludGVycG9sYXRp
b25GaWx0ZXJzKENvbG9ySW50ZXJwb2xhdGlvbiB2YWwpIHsgbV9pbmhlcml0ZWRGbGFncy5jb2xv
ckludGVycG9sYXRpb25GaWx0ZXJzID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHZhbCk7IH0KKyAg
ICB2b2lkIHNldENvbG9yUmVuZGVyaW5nKENvbG9yUmVuZGVyaW5nIHZhbCkgeyBtX2luaGVyaXRl
ZEZsYWdzLmNvbG9yUmVuZGVyaW5nID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHZhbCk7IH0KKyAg
ICB2b2lkIHNldEZpbGxSdWxlKFdpbmRSdWxlIHZhbCkgeyBtX2luaGVyaXRlZEZsYWdzLmZpbGxS
dWxlID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHZhbCk7IH0KKyAgICB2b2lkIHNldFNoYXBlUmVu
ZGVyaW5nKFNoYXBlUmVuZGVyaW5nIHZhbCkgeyBtX2luaGVyaXRlZEZsYWdzLnNoYXBlUmVuZGVy
aW5nID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHZhbCk7IH0KKyAgICB2b2lkIHNldFRleHRBbmNo
b3IoVGV4dEFuY2hvciB2YWwpIHsgbV9pbmhlcml0ZWRGbGFncy50ZXh0QW5jaG9yID0gc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KHZhbCk7IH0KKyAgICB2b2lkIHNldEdseXBoT3JpZW50YXRpb25Ib3Jp
em9udGFsKEdseXBoT3JpZW50YXRpb24gdmFsKSB7IG1faW5oZXJpdGVkRmxhZ3MuZ2x5cGhPcmll
bnRhdGlvbkhvcml6b250YWwgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4odmFsKTsgfQorICAgIHZv
aWQgc2V0R2x5cGhPcmllbnRhdGlvblZlcnRpY2FsKEdseXBoT3JpZW50YXRpb24gdmFsKSB7IG1f
aW5oZXJpdGVkRmxhZ3MuZ2x5cGhPcmllbnRhdGlvblZlcnRpY2FsID0gc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KHZhbCk7IH0KKyAgICB2b2lkIHNldE1hc2tUeXBlKE1hc2tUeXBlIHZhbCkgeyBtX25v
bkluaGVyaXRlZEZsYWdzLmZsYWdCaXRzLm1hc2tUeXBlID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KHZhbCk7IH0KICAgICB2b2lkIHNldEN4KGNvbnN0IExlbmd0aCYpOwogICAgIHZvaWQgc2V0Q3ko
Y29uc3QgTGVuZ3RoJik7CiAgICAgdm9pZCBzZXRSKGNvbnN0IExlbmd0aCYpOwpAQCAtMTM1LDI2
ICsxMzUsMjYgQEAgcHVibGljOgogICAgIHZvaWQgc2V0TWFya2VyRW5kUmVzb3VyY2UoY29uc3Qg
U3RyaW5nJik7CiAKICAgICAvLyBSZWFkIGFjY2Vzc29ycyBmb3IgYWxsIHRoZSBwcm9wZXJ0aWVz
Ci0gICAgRUFsaWdubWVudEJhc2VsaW5lIGFsaWdubWVudEJhc2VsaW5lKCkgY29uc3QgeyByZXR1
cm4gKEVBbGlnbm1lbnRCYXNlbGluZSkgbV9ub25Jbmhlcml0ZWRGbGFncy5mbGFnQml0cy5hbGln
bm1lbnRCYXNlbGluZTsgfQotICAgIEVEb21pbmFudEJhc2VsaW5lIGRvbWluYW50QmFzZWxpbmUo
KSBjb25zdCB7IHJldHVybiAoRURvbWluYW50QmFzZWxpbmUpIG1fbm9uSW5oZXJpdGVkRmxhZ3Mu
ZmxhZ0JpdHMuZG9taW5hbnRCYXNlbGluZTsgfQotICAgIEVCYXNlbGluZVNoaWZ0IGJhc2VsaW5l
U2hpZnQoKSBjb25zdCB7IHJldHVybiAoRUJhc2VsaW5lU2hpZnQpIG1fbm9uSW5oZXJpdGVkRmxh
Z3MuZmxhZ0JpdHMuYmFzZWxpbmVTaGlmdDsgfQotICAgIEVWZWN0b3JFZmZlY3QgdmVjdG9yRWZm
ZWN0KCkgY29uc3QgeyByZXR1cm4gKEVWZWN0b3JFZmZlY3QpIG1fbm9uSW5oZXJpdGVkRmxhZ3Mu
ZmxhZ0JpdHMudmVjdG9yRWZmZWN0OyB9Ci0gICAgRUJ1ZmZlcmVkUmVuZGVyaW5nIGJ1ZmZlcmVk
UmVuZGVyaW5nKCkgY29uc3QgeyByZXR1cm4gKEVCdWZmZXJlZFJlbmRlcmluZykgbV9ub25Jbmhl
cml0ZWRGbGFncy5mbGFnQml0cy5idWZmZXJlZFJlbmRlcmluZzsgfQotICAgIFdpbmRSdWxlIGNs
aXBSdWxlKCkgY29uc3QgeyByZXR1cm4gKFdpbmRSdWxlKSBtX2luaGVyaXRlZEZsYWdzLmNsaXBS
dWxlOyB9Ci0gICAgRUNvbG9ySW50ZXJwb2xhdGlvbiBjb2xvckludGVycG9sYXRpb24oKSBjb25z
dCB7IHJldHVybiAoRUNvbG9ySW50ZXJwb2xhdGlvbikgbV9pbmhlcml0ZWRGbGFncy5jb2xvcklu
dGVycG9sYXRpb247IH0KLSAgICBFQ29sb3JJbnRlcnBvbGF0aW9uIGNvbG9ySW50ZXJwb2xhdGlv
bkZpbHRlcnMoKSBjb25zdCB7IHJldHVybiAoRUNvbG9ySW50ZXJwb2xhdGlvbikgbV9pbmhlcml0
ZWRGbGFncy5jb2xvckludGVycG9sYXRpb25GaWx0ZXJzOyB9Ci0gICAgRUNvbG9yUmVuZGVyaW5n
IGNvbG9yUmVuZGVyaW5nKCkgY29uc3QgeyByZXR1cm4gKEVDb2xvclJlbmRlcmluZykgbV9pbmhl
cml0ZWRGbGFncy5jb2xvclJlbmRlcmluZzsgfQotICAgIFdpbmRSdWxlIGZpbGxSdWxlKCkgY29u
c3QgeyByZXR1cm4gKFdpbmRSdWxlKSBtX2luaGVyaXRlZEZsYWdzLmZpbGxSdWxlOyB9Ci0gICAg
RVNoYXBlUmVuZGVyaW5nIHNoYXBlUmVuZGVyaW5nKCkgY29uc3QgeyByZXR1cm4gKEVTaGFwZVJl
bmRlcmluZykgbV9pbmhlcml0ZWRGbGFncy5zaGFwZVJlbmRlcmluZzsgfQotICAgIEVUZXh0QW5j
aG9yIHRleHRBbmNob3IoKSBjb25zdCB7IHJldHVybiAoRVRleHRBbmNob3IpIG1faW5oZXJpdGVk
RmxhZ3MudGV4dEFuY2hvcjsgfQotICAgIEVHbHlwaE9yaWVudGF0aW9uIGdseXBoT3JpZW50YXRp
b25Ib3Jpem9udGFsKCkgY29uc3QgeyByZXR1cm4gKEVHbHlwaE9yaWVudGF0aW9uKSBtX2luaGVy
aXRlZEZsYWdzLmdseXBoT3JpZW50YXRpb25Ib3Jpem9udGFsOyB9Ci0gICAgRUdseXBoT3JpZW50
YXRpb24gZ2x5cGhPcmllbnRhdGlvblZlcnRpY2FsKCkgY29uc3QgeyByZXR1cm4gKEVHbHlwaE9y
aWVudGF0aW9uKSBtX2luaGVyaXRlZEZsYWdzLmdseXBoT3JpZW50YXRpb25WZXJ0aWNhbDsgfQor
ICAgIEFsaWdubWVudEJhc2VsaW5lIGFsaWdubWVudEJhc2VsaW5lKCkgY29uc3QgeyByZXR1cm4g
c3RhdGljX2Nhc3Q8QWxpZ25tZW50QmFzZWxpbmU+KG1fbm9uSW5oZXJpdGVkRmxhZ3MuZmxhZ0Jp
dHMuYWxpZ25tZW50QmFzZWxpbmUpOyB9CisgICAgRG9taW5hbnRCYXNlbGluZSBkb21pbmFudEJh
c2VsaW5lKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RG9taW5hbnRCYXNlbGluZT4obV9u
b25Jbmhlcml0ZWRGbGFncy5mbGFnQml0cy5kb21pbmFudEJhc2VsaW5lKTsgfQorICAgIEJhc2Vs
aW5lU2hpZnQgYmFzZWxpbmVTaGlmdCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEJhc2Vs
aW5lU2hpZnQ+KG1fbm9uSW5oZXJpdGVkRmxhZ3MuZmxhZ0JpdHMuYmFzZWxpbmVTaGlmdCk7IH0K
KyAgICBWZWN0b3JFZmZlY3QgdmVjdG9yRWZmZWN0KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nh
c3Q8VmVjdG9yRWZmZWN0PihtX25vbkluaGVyaXRlZEZsYWdzLmZsYWdCaXRzLnZlY3RvckVmZmVj
dCk7IH0KKyAgICBCdWZmZXJlZFJlbmRlcmluZyBidWZmZXJlZFJlbmRlcmluZygpIGNvbnN0IHsg
cmV0dXJuIHN0YXRpY19jYXN0PEJ1ZmZlcmVkUmVuZGVyaW5nPihtX25vbkluaGVyaXRlZEZsYWdz
LmZsYWdCaXRzLmJ1ZmZlcmVkUmVuZGVyaW5nKTsgfQorICAgIFdpbmRSdWxlIGNsaXBSdWxlKCkg
Y29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8V2luZFJ1bGU+KG1faW5oZXJpdGVkRmxhZ3MuY2xp
cFJ1bGUpOyB9CisgICAgQ29sb3JJbnRlcnBvbGF0aW9uIGNvbG9ySW50ZXJwb2xhdGlvbigpIGNv
bnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PENvbG9ySW50ZXJwb2xhdGlvbj4obV9pbmhlcml0ZWRG
bGFncy5jb2xvckludGVycG9sYXRpb24pOyB9CisgICAgQ29sb3JJbnRlcnBvbGF0aW9uIGNvbG9y
SW50ZXJwb2xhdGlvbkZpbHRlcnMoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxDb2xvcklu
dGVycG9sYXRpb24+KG1faW5oZXJpdGVkRmxhZ3MuY29sb3JJbnRlcnBvbGF0aW9uRmlsdGVycyk7
IH0KKyAgICBDb2xvclJlbmRlcmluZyBjb2xvclJlbmRlcmluZygpIGNvbnN0IHsgcmV0dXJuIHN0
YXRpY19jYXN0PENvbG9yUmVuZGVyaW5nPihtX2luaGVyaXRlZEZsYWdzLmNvbG9yUmVuZGVyaW5n
KTsgfQorICAgIFdpbmRSdWxlIGZpbGxSdWxlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8
V2luZFJ1bGU+KG1faW5oZXJpdGVkRmxhZ3MuZmlsbFJ1bGUpOyB9CisgICAgU2hhcGVSZW5kZXJp
bmcgc2hhcGVSZW5kZXJpbmcoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxTaGFwZVJlbmRl
cmluZz4obV9pbmhlcml0ZWRGbGFncy5zaGFwZVJlbmRlcmluZyk7IH0KKyAgICBUZXh0QW5jaG9y
IHRleHRBbmNob3IoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxUZXh0QW5jaG9yPihtX2lu
aGVyaXRlZEZsYWdzLnRleHRBbmNob3IpOyB9CisgICAgR2x5cGhPcmllbnRhdGlvbiBnbHlwaE9y
aWVudGF0aW9uSG9yaXpvbnRhbCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEdseXBoT3Jp
ZW50YXRpb24+KG1faW5oZXJpdGVkRmxhZ3MuZ2x5cGhPcmllbnRhdGlvbkhvcml6b250YWwpOyB9
CisgICAgR2x5cGhPcmllbnRhdGlvbiBnbHlwaE9yaWVudGF0aW9uVmVydGljYWwoKSBjb25zdCB7
IHJldHVybiBzdGF0aWNfY2FzdDxHbHlwaE9yaWVudGF0aW9uPihtX2luaGVyaXRlZEZsYWdzLmds
eXBoT3JpZW50YXRpb25WZXJ0aWNhbCk7IH0KICAgICBmbG9hdCBmaWxsT3BhY2l0eSgpIGNvbnN0
IHsgcmV0dXJuIG1fZmlsbERhdGEtPm9wYWNpdHk7IH0KLSAgICBjb25zdCBTVkdQYWludFR5cGUm
IGZpbGxQYWludFR5cGUoKSBjb25zdCB7IHJldHVybiBtX2ZpbGxEYXRhLT5wYWludFR5cGU7IH0K
KyAgICBTVkdQYWludFR5cGUgZmlsbFBhaW50VHlwZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19j
YXN0PFNWR1BhaW50VHlwZT4obV9maWxsRGF0YS0+cGFpbnRUeXBlKTsgfQogICAgIGNvbnN0IENv
bG9yJiBmaWxsUGFpbnRDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fZmlsbERhdGEtPnBhaW50Q29s
b3I7IH0KICAgICBjb25zdCBTdHJpbmcmIGZpbGxQYWludFVyaSgpIGNvbnN0IHsgcmV0dXJuIG1f
ZmlsbERhdGEtPnBhaW50VXJpOyB9ICAgIAogICAgIGZsb2F0IHN0cm9rZU9wYWNpdHkoKSBjb25z
dCB7IHJldHVybiBtX3N0cm9rZURhdGEtPm9wYWNpdHk7IH0KLSAgICBjb25zdCBTVkdQYWludFR5
cGUmIHN0cm9rZVBhaW50VHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3Ryb2tlRGF0YS0+cGFpbnRU
eXBlOyB9CisgICAgU1ZHUGFpbnRUeXBlIHN0cm9rZVBhaW50VHlwZSgpIGNvbnN0IHsgcmV0dXJu
IHN0YXRpY19jYXN0PFNWR1BhaW50VHlwZT4obV9zdHJva2VEYXRhLT5wYWludFR5cGUpOyB9CiAg
ICAgY29uc3QgQ29sb3ImIHN0cm9rZVBhaW50Q29sb3IoKSBjb25zdCB7IHJldHVybiBtX3N0cm9r
ZURhdGEtPnBhaW50Q29sb3I7IH0KICAgICBjb25zdCBTdHJpbmcmIHN0cm9rZVBhaW50VXJpKCkg
Y29uc3QgeyByZXR1cm4gbV9zdHJva2VEYXRhLT5wYWludFVyaTsgfQogICAgIFZlY3RvcjxTVkdM
ZW5ndGhWYWx1ZT4gc3Ryb2tlRGFzaEFycmF5KCkgY29uc3QgeyByZXR1cm4gbV9zdHJva2VEYXRh
LT5kYXNoQXJyYXk7IH0KQEAgLTE3OSwxMiArMTc5LDEyIEBAIHB1YmxpYzoKICAgICBjb25zdCBT
dHJpbmcmIG1hcmtlclN0YXJ0UmVzb3VyY2UoKSBjb25zdCB7IHJldHVybiBtX2luaGVyaXRlZFJl
c291cmNlRGF0YS0+bWFya2VyU3RhcnQ7IH0KICAgICBjb25zdCBTdHJpbmcmIG1hcmtlck1pZFJl
c291cmNlKCkgY29uc3QgeyByZXR1cm4gbV9pbmhlcml0ZWRSZXNvdXJjZURhdGEtPm1hcmtlck1p
ZDsgfQogICAgIGNvbnN0IFN0cmluZyYgbWFya2VyRW5kUmVzb3VyY2UoKSBjb25zdCB7IHJldHVy
biBtX2luaGVyaXRlZFJlc291cmNlRGF0YS0+bWFya2VyRW5kOyB9Ci0gICAgRU1hc2tUeXBlIG1h
c2tUeXBlKCkgY29uc3QgeyByZXR1cm4gKEVNYXNrVHlwZSkgbV9ub25Jbmhlcml0ZWRGbGFncy5m
bGFnQml0cy5tYXNrVHlwZTsgfQorICAgIE1hc2tUeXBlIG1hc2tUeXBlKCkgY29uc3QgeyByZXR1
cm4gc3RhdGljX2Nhc3Q8TWFza1R5cGU+KG1fbm9uSW5oZXJpdGVkRmxhZ3MuZmxhZ0JpdHMubWFz
a1R5cGUpOyB9CiAKLSAgICBjb25zdCBTVkdQYWludFR5cGUmIHZpc2l0ZWRMaW5rRmlsbFBhaW50
VHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fZmlsbERhdGEtPnZpc2l0ZWRMaW5rUGFpbnRUeXBlOyB9
CisgICAgU1ZHUGFpbnRUeXBlIHZpc2l0ZWRMaW5rRmlsbFBhaW50VHlwZSgpIGNvbnN0IHsgcmV0
dXJuIHN0YXRpY19jYXN0PFNWR1BhaW50VHlwZT4obV9maWxsRGF0YS0+dmlzaXRlZExpbmtQYWlu
dFR5cGUpOyB9CiAgICAgY29uc3QgQ29sb3ImIHZpc2l0ZWRMaW5rRmlsbFBhaW50Q29sb3IoKSBj
b25zdCB7IHJldHVybiBtX2ZpbGxEYXRhLT52aXNpdGVkTGlua1BhaW50Q29sb3I7IH0KICAgICBj
b25zdCBTdHJpbmcmIHZpc2l0ZWRMaW5rRmlsbFBhaW50VXJpKCkgY29uc3QgeyByZXR1cm4gbV9m
aWxsRGF0YS0+dmlzaXRlZExpbmtQYWludFVyaTsgfQotICAgIGNvbnN0IFNWR1BhaW50VHlwZSYg
dmlzaXRlZExpbmtTdHJva2VQYWludFR5cGUoKSBjb25zdCB7IHJldHVybiBtX3N0cm9rZURhdGEt
PnZpc2l0ZWRMaW5rUGFpbnRUeXBlOyB9CisgICAgU1ZHUGFpbnRUeXBlIHZpc2l0ZWRMaW5rU3Ry
b2tlUGFpbnRUeXBlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8U1ZHUGFpbnRUeXBlPiht
X3N0cm9rZURhdGEtPnZpc2l0ZWRMaW5rUGFpbnRUeXBlKTsgfQogICAgIGNvbnN0IENvbG9yJiB2
aXNpdGVkTGlua1N0cm9rZVBhaW50Q29sb3IoKSBjb25zdCB7IHJldHVybiBtX3N0cm9rZURhdGEt
PnZpc2l0ZWRMaW5rUGFpbnRDb2xvcjsgfQogICAgIGNvbnN0IFN0cmluZyYgdmlzaXRlZExpbmtT
dHJva2VQYWludFVyaSgpIGNvbnN0IHsgcmV0dXJuIG1fc3Ryb2tlRGF0YS0+dmlzaXRlZExpbmtQ
YWludFVyaTsgfQogCkBAIC0xOTIsOCArMTkyLDggQEAgcHVibGljOgogICAgIGJvb2wgaGFzQ2xp
cHBlcigpIGNvbnN0IHsgcmV0dXJuICFjbGlwcGVyUmVzb3VyY2UoKS5pc0VtcHR5KCk7IH0KICAg
ICBib29sIGhhc01hc2tlcigpIGNvbnN0IHsgcmV0dXJuICFtYXNrZXJSZXNvdXJjZSgpLmlzRW1w
dHkoKTsgfQogICAgIGJvb2wgaGFzTWFya2VycygpIGNvbnN0IHsgcmV0dXJuICFtYXJrZXJTdGFy
dFJlc291cmNlKCkuaXNFbXB0eSgpIHx8ICFtYXJrZXJNaWRSZXNvdXJjZSgpLmlzRW1wdHkoKSB8
fCAhbWFya2VyRW5kUmVzb3VyY2UoKS5pc0VtcHR5KCk7IH0KLSAgICBib29sIGhhc1N0cm9rZSgp
IGNvbnN0IHsgcmV0dXJuIHN0cm9rZVBhaW50VHlwZSgpICE9IFNWR19QQUlOVFRZUEVfTk9ORTsg
fQotICAgIGJvb2wgaGFzRmlsbCgpIGNvbnN0IHsgcmV0dXJuIGZpbGxQYWludFR5cGUoKSAhPSBT
VkdfUEFJTlRUWVBFX05PTkU7IH0KKyAgICBib29sIGhhc1N0cm9rZSgpIGNvbnN0IHsgcmV0dXJu
IHN0cm9rZVBhaW50VHlwZSgpICE9IFNWR1BhaW50VHlwZTo6Tm9uZTsgfQorICAgIGJvb2wgaGFz
RmlsbCgpIGNvbnN0IHsgcmV0dXJuIGZpbGxQYWludFR5cGUoKSAhPSBTVkdQYWludFR5cGU6Ok5v
bmU7IH0KICAgICBib29sIGlzb2xhdGVzQmxlbmRpbmcoKSBjb25zdCB7IHJldHVybiBoYXNNYXNr
ZXIoKSB8fCBzaGFkb3coKTsgfQogCiBwcml2YXRlOgpAQCAtMjA5LDE1ICsyMDksMTUgQEAgcHJp
dmF0ZToKICAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEluaGVyaXRlZEZsYWdzJikgY29u
c3Q7CiAgICAgICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBJbmhlcml0ZWRGbGFncyYgb3RoZXIp
IGNvbnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOyB9CiAKLSAgICAgICAgdW5zaWduZWQg
Y29sb3JSZW5kZXJpbmcgOiAyOyAvLyBFQ29sb3JSZW5kZXJpbmcKLSAgICAgICAgdW5zaWduZWQg
c2hhcGVSZW5kZXJpbmcgOiAyOyAvLyBFU2hhcGVSZW5kZXJpbmcKKyAgICAgICAgdW5zaWduZWQg
Y29sb3JSZW5kZXJpbmcgOiAyOyAvLyBDb2xvclJlbmRlcmluZworICAgICAgICB1bnNpZ25lZCBz
aGFwZVJlbmRlcmluZyA6IDI7IC8vIFNoYXBlUmVuZGVyaW5nCiAgICAgICAgIHVuc2lnbmVkIGNs
aXBSdWxlIDogMTsgLy8gV2luZFJ1bGUKICAgICAgICAgdW5zaWduZWQgZmlsbFJ1bGUgOiAxOyAv
LyBXaW5kUnVsZQotICAgICAgICB1bnNpZ25lZCB0ZXh0QW5jaG9yIDogMjsgLy8gRVRleHRBbmNo
b3IKLSAgICAgICAgdW5zaWduZWQgY29sb3JJbnRlcnBvbGF0aW9uIDogMjsgLy8gRUNvbG9ySW50
ZXJwb2xhdGlvbgotICAgICAgICB1bnNpZ25lZCBjb2xvckludGVycG9sYXRpb25GaWx0ZXJzIDog
MjsgLy8gRUNvbG9ySW50ZXJwb2xhdGlvbgotICAgICAgICB1bnNpZ25lZCBnbHlwaE9yaWVudGF0
aW9uSG9yaXpvbnRhbCA6IDM7IC8vIEVHbHlwaE9yaWVudGF0aW9uCi0gICAgICAgIHVuc2lnbmVk
IGdseXBoT3JpZW50YXRpb25WZXJ0aWNhbCA6IDM7IC8vIEVHbHlwaE9yaWVudGF0aW9uCisgICAg
ICAgIHVuc2lnbmVkIHRleHRBbmNob3IgOiAyOyAvLyBUZXh0QW5jaG9yCisgICAgICAgIHVuc2ln
bmVkIGNvbG9ySW50ZXJwb2xhdGlvbiA6IDI7IC8vIENvbG9ySW50ZXJwb2xhdGlvbgorICAgICAg
ICB1bnNpZ25lZCBjb2xvckludGVycG9sYXRpb25GaWx0ZXJzIDogMjsgLy8gQ29sb3JJbnRlcnBv
bGF0aW9uCisgICAgICAgIHVuc2lnbmVkIGdseXBoT3JpZW50YXRpb25Ib3Jpem9udGFsIDogMzsg
Ly8gR2x5cGhPcmllbnRhdGlvbgorICAgICAgICB1bnNpZ25lZCBnbHlwaE9yaWVudGF0aW9uVmVy
dGljYWwgOiAzOyAvLyBHbHlwaE9yaWVudGF0aW9uCiAgICAgfTsKIAogICAgIHN0cnVjdCBOb25J
bmhlcml0ZWRGbGFncyB7CkBAIC0yMjcsMTIgKzIyNywxMiBAQCBwcml2YXRlOgogCiAgICAgICAg
IHVuaW9uIHsKICAgICAgICAgICAgIHN0cnVjdCB7Ci0gICAgICAgICAgICAgICAgdW5zaWduZWQg
YWxpZ25tZW50QmFzZWxpbmUgOiA0OyAvLyBFQWxpZ25tZW50QmFzZWxpbmUKLSAgICAgICAgICAg
ICAgICB1bnNpZ25lZCBkb21pbmFudEJhc2VsaW5lIDogNDsgLy8gRURvbWluYW50QmFzZWxpbmUK
LSAgICAgICAgICAgICAgICB1bnNpZ25lZCBiYXNlbGluZVNoaWZ0IDogMjsgLy8gRUJhc2VsaW5l
U2hpZnQKLSAgICAgICAgICAgICAgICB1bnNpZ25lZCB2ZWN0b3JFZmZlY3Q6IDE7IC8vIEVWZWN0
b3JFZmZlY3QKLSAgICAgICAgICAgICAgICB1bnNpZ25lZCBidWZmZXJlZFJlbmRlcmluZzogMjsg
Ly8gRUJ1ZmZlcmVkUmVuZGVyaW5nCi0gICAgICAgICAgICAgICAgdW5zaWduZWQgbWFza1R5cGU6
IDE7IC8vIEVNYXNrVHlwZQorICAgICAgICAgICAgICAgIHVuc2lnbmVkIGFsaWdubWVudEJhc2Vs
aW5lIDogNDsgLy8gQWxpZ25tZW50QmFzZWxpbmUKKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBk
b21pbmFudEJhc2VsaW5lIDogNDsgLy8gRG9taW5hbnRCYXNlbGluZQorICAgICAgICAgICAgICAg
IHVuc2lnbmVkIGJhc2VsaW5lU2hpZnQgOiAyOyAvLyBCYXNlbGluZVNoaWZ0CisgICAgICAgICAg
ICAgICAgdW5zaWduZWQgdmVjdG9yRWZmZWN0OiAxOyAvLyBWZWN0b3JFZmZlY3QKKyAgICAgICAg
ICAgICAgICB1bnNpZ25lZCBidWZmZXJlZFJlbmRlcmluZzogMjsgLy8gQnVmZmVyZWRSZW5kZXJp
bmcKKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBtYXNrVHlwZTogMTsgLy8gTWFza1R5cGUKICAg
ICAgICAgICAgICAgICAvLyAxOCBiaXRzIHVudXNlZAogICAgICAgICAgICAgfSBmbGFnQml0czsK
ICAgICAgICAgICAgIHVpbnQzMl90IGZsYWdzOwpAQCAtNDUwLDIzICs0NTAsMjMgQEAgaW5saW5l
IHZvaWQgU1ZHUmVuZGVyU3R5bGU6OnNldE1hcmtlckVuZAogCiBpbmxpbmUgdm9pZCBTVkdSZW5k
ZXJTdHlsZTo6c2V0Qml0RGVmYXVsdHMoKQogewotICAgIG1faW5oZXJpdGVkRmxhZ3MuY2xpcFJ1
bGUgPSBpbml0aWFsQ2xpcFJ1bGUoKTsKLSAgICBtX2luaGVyaXRlZEZsYWdzLmNvbG9yUmVuZGVy
aW5nID0gaW5pdGlhbENvbG9yUmVuZGVyaW5nKCk7Ci0gICAgbV9pbmhlcml0ZWRGbGFncy5maWxs
UnVsZSA9IGluaXRpYWxGaWxsUnVsZSgpOwotICAgIG1faW5oZXJpdGVkRmxhZ3Muc2hhcGVSZW5k
ZXJpbmcgPSBpbml0aWFsU2hhcGVSZW5kZXJpbmcoKTsKLSAgICBtX2luaGVyaXRlZEZsYWdzLnRl
eHRBbmNob3IgPSBpbml0aWFsVGV4dEFuY2hvcigpOwotICAgIG1faW5oZXJpdGVkRmxhZ3MuY29s
b3JJbnRlcnBvbGF0aW9uID0gaW5pdGlhbENvbG9ySW50ZXJwb2xhdGlvbigpOwotICAgIG1faW5o
ZXJpdGVkRmxhZ3MuY29sb3JJbnRlcnBvbGF0aW9uRmlsdGVycyA9IGluaXRpYWxDb2xvckludGVy
cG9sYXRpb25GaWx0ZXJzKCk7Ci0gICAgbV9pbmhlcml0ZWRGbGFncy5nbHlwaE9yaWVudGF0aW9u
SG9yaXpvbnRhbCA9IGluaXRpYWxHbHlwaE9yaWVudGF0aW9uSG9yaXpvbnRhbCgpOwotICAgIG1f
aW5oZXJpdGVkRmxhZ3MuZ2x5cGhPcmllbnRhdGlvblZlcnRpY2FsID0gaW5pdGlhbEdseXBoT3Jp
ZW50YXRpb25WZXJ0aWNhbCgpOworICAgIG1faW5oZXJpdGVkRmxhZ3MuY2xpcFJ1bGUgPSBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oaW5pdGlhbENsaXBSdWxlKCkpOworICAgIG1faW5oZXJpdGVkRmxh
Z3MuY29sb3JSZW5kZXJpbmcgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5pdGlhbENvbG9yUmVu
ZGVyaW5nKCkpOworICAgIG1faW5oZXJpdGVkRmxhZ3MuZmlsbFJ1bGUgPSBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oaW5pdGlhbEZpbGxSdWxlKCkpOworICAgIG1faW5oZXJpdGVkRmxhZ3Muc2hhcGVS
ZW5kZXJpbmcgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5pdGlhbFNoYXBlUmVuZGVyaW5nKCkp
OworICAgIG1faW5oZXJpdGVkRmxhZ3MudGV4dEFuY2hvciA9IHN0YXRpY19jYXN0PHVuc2lnbmVk
Pihpbml0aWFsVGV4dEFuY2hvcigpKTsKKyAgICBtX2luaGVyaXRlZEZsYWdzLmNvbG9ySW50ZXJw
b2xhdGlvbiA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihpbml0aWFsQ29sb3JJbnRlcnBvbGF0aW9u
KCkpOworICAgIG1faW5oZXJpdGVkRmxhZ3MuY29sb3JJbnRlcnBvbGF0aW9uRmlsdGVycyA9IHN0
YXRpY19jYXN0PHVuc2lnbmVkPihpbml0aWFsQ29sb3JJbnRlcnBvbGF0aW9uRmlsdGVycygpKTsK
KyAgICBtX2luaGVyaXRlZEZsYWdzLmdseXBoT3JpZW50YXRpb25Ib3Jpem9udGFsID0gc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KGluaXRpYWxHbHlwaE9yaWVudGF0aW9uSG9yaXpvbnRhbCgpKTsKKyAg
ICBtX2luaGVyaXRlZEZsYWdzLmdseXBoT3JpZW50YXRpb25WZXJ0aWNhbCA9IHN0YXRpY19jYXN0
PHVuc2lnbmVkPihpbml0aWFsR2x5cGhPcmllbnRhdGlvblZlcnRpY2FsKCkpOwogCiAgICAgbV9u
b25Jbmhlcml0ZWRGbGFncy5mbGFncyA9IDA7Ci0gICAgbV9ub25Jbmhlcml0ZWRGbGFncy5mbGFn
Qml0cy5hbGlnbm1lbnRCYXNlbGluZSA9IGluaXRpYWxBbGlnbm1lbnRCYXNlbGluZSgpOwotICAg
IG1fbm9uSW5oZXJpdGVkRmxhZ3MuZmxhZ0JpdHMuZG9taW5hbnRCYXNlbGluZSA9IGluaXRpYWxE
b21pbmFudEJhc2VsaW5lKCk7Ci0gICAgbV9ub25Jbmhlcml0ZWRGbGFncy5mbGFnQml0cy5iYXNl
bGluZVNoaWZ0ID0gaW5pdGlhbEJhc2VsaW5lU2hpZnQoKTsKLSAgICBtX25vbkluaGVyaXRlZEZs
YWdzLmZsYWdCaXRzLnZlY3RvckVmZmVjdCA9IGluaXRpYWxWZWN0b3JFZmZlY3QoKTsKLSAgICBt
X25vbkluaGVyaXRlZEZsYWdzLmZsYWdCaXRzLmJ1ZmZlcmVkUmVuZGVyaW5nID0gaW5pdGlhbEJ1
ZmZlcmVkUmVuZGVyaW5nKCk7Ci0gICAgbV9ub25Jbmhlcml0ZWRGbGFncy5mbGFnQml0cy5tYXNr
VHlwZSA9IGluaXRpYWxNYXNrVHlwZSgpOworICAgIG1fbm9uSW5oZXJpdGVkRmxhZ3MuZmxhZ0Jp
dHMuYWxpZ25tZW50QmFzZWxpbmUgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5pdGlhbEFsaWdu
bWVudEJhc2VsaW5lKCkpOworICAgIG1fbm9uSW5oZXJpdGVkRmxhZ3MuZmxhZ0JpdHMuZG9taW5h
bnRCYXNlbGluZSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihpbml0aWFsRG9taW5hbnRCYXNlbGlu
ZSgpKTsKKyAgICBtX25vbkluaGVyaXRlZEZsYWdzLmZsYWdCaXRzLmJhc2VsaW5lU2hpZnQgPSBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5pdGlhbEJhc2VsaW5lU2hpZnQoKSk7CisgICAgbV9ub25J
bmhlcml0ZWRGbGFncy5mbGFnQml0cy52ZWN0b3JFZmZlY3QgPSBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oaW5pdGlhbFZlY3RvckVmZmVjdCgpKTsKKyAgICBtX25vbkluaGVyaXRlZEZsYWdzLmZsYWdC
aXRzLmJ1ZmZlcmVkUmVuZGVyaW5nID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGluaXRpYWxCdWZm
ZXJlZFJlbmRlcmluZygpKTsKKyAgICBtX25vbkluaGVyaXRlZEZsYWdzLmZsYWdCaXRzLm1hc2tU
eXBlID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGluaXRpYWxNYXNrVHlwZSgpKTsKIH0KIAogaW5s
aW5lIGJvb2wgU1ZHUmVuZGVyU3R5bGU6OkluaGVyaXRlZEZsYWdzOjpvcGVyYXRvcj09KGNvbnN0
IEluaGVyaXRlZEZsYWdzJiBvdGhlcikgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9TVkdSZW5kZXJTdHlsZURlZnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvU1ZHUmVuZGVyU3R5bGVEZWZzLmgJKHJldmlzaW9uIDIzMjE4
OSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TVkdSZW5kZXJTdHlsZURlZnMu
aAkod29ya2luZyBjb3B5KQpAQCAtMzUsMjY3ICszNSwzMDIgQEAKICNpbmNsdWRlIDx3dGYvUmVm
UHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLSAgICBlbnVtIFNWR1BhaW50VHlwZSB7Ci0g
ICAgICAgIFNWR19QQUlOVFRZUEVfUkdCQ09MT1IsCi0gICAgICAgIFNWR19QQUlOVFRZUEVfTk9O
RSwKLSAgICAgICAgU1ZHX1BBSU5UVFlQRV9DVVJSRU5UQ09MT1IsCi0gICAgICAgIFNWR19QQUlO
VFRZUEVfVVJJX05PTkUsCi0gICAgICAgIFNWR19QQUlOVFRZUEVfVVJJX0NVUlJFTlRDT0xPUiwK
LSAgICAgICAgU1ZHX1BBSU5UVFlQRV9VUklfUkdCQ09MT1IsCi0gICAgICAgIFNWR19QQUlOVFRZ
UEVfVVJJCi0gICAgfTsKLQotICAgIGVudW0gRUJhc2VsaW5lU2hpZnQgewotICAgICAgICBCU19C
QVNFTElORSwgQlNfU1VCLCBCU19TVVBFUiwgQlNfTEVOR1RICi0gICAgfTsKLQotICAgIGVudW0g
RVRleHRBbmNob3IgewotICAgICAgICBUQV9TVEFSVCwgVEFfTUlERExFLCBUQV9FTkQKLSAgICB9
OwotCi0gICAgZW51bSBFQ29sb3JJbnRlcnBvbGF0aW9uIHsKLSAgICAgICAgQ0lfQVVUTywgQ0lf
U1JHQiwgQ0lfTElORUFSUkdCCi0gICAgfTsKLQotICAgIGVudW0gRUNvbG9yUmVuZGVyaW5nIHsK
LSAgICAgICAgQ1JfQVVUTywgQ1JfT1BUSU1JWkVTUEVFRCwgQ1JfT1BUSU1JWkVRVUFMSVRZCi0g
ICAgfTsKLSAgICBlbnVtIEVTaGFwZVJlbmRlcmluZyB7Ci0gICAgICAgIFNSX0FVVE8sIFNSX09Q
VElNSVpFU1BFRUQsIFNSX0NSSVNQRURHRVMsIFNSX0dFT01FVFJJQ1BSRUNJU0lPTgotICAgIH07
Ci0KLSAgICBlbnVtIEVHbHlwaE9yaWVudGF0aW9uIHsKLSAgICAgICAgR09fMERFRywgR09fOTBE
RUcsIEdPXzE4MERFRywgR09fMjcwREVHLCBHT19BVVRPCi0gICAgfTsKLQotICAgIGVudW0gRUFs
aWdubWVudEJhc2VsaW5lIHsKLSAgICAgICAgQUJfQVVUTywgQUJfQkFTRUxJTkUsIEFCX0JFRk9S
RV9FREdFLCBBQl9URVhUX0JFRk9SRV9FREdFLAotICAgICAgICBBQl9NSURETEUsIEFCX0NFTlRS
QUwsIEFCX0FGVEVSX0VER0UsIEFCX1RFWFRfQUZURVJfRURHRSwKLSAgICAgICAgQUJfSURFT0dS
QVBISUMsIEFCX0FMUEhBQkVUSUMsIEFCX0hBTkdJTkcsIEFCX01BVEhFTUFUSUNBTAotICAgIH07
Ci0KLSAgICBlbnVtIEVEb21pbmFudEJhc2VsaW5lIHsKLSAgICAgICAgREJfQVVUTywgREJfVVNF
X1NDUklQVCwgREJfTk9fQ0hBTkdFLCBEQl9SRVNFVF9TSVpFLAotICAgICAgICBEQl9JREVPR1JB
UEhJQywgREJfQUxQSEFCRVRJQywgREJfSEFOR0lORywgREJfTUFUSEVNQVRJQ0FMLAotICAgICAg
ICBEQl9DRU5UUkFMLCBEQl9NSURETEUsIERCX1RFWFRfQUZURVJfRURHRSwgREJfVEVYVF9CRUZP
UkVfRURHRQotICAgIH07CisKK2NsYXNzIENTU1ZhbHVlOworY2xhc3MgQ1NTVmFsdWVMaXN0Owor
Y2xhc3MgU1ZHUGFpbnQ7CisKK2VudW0gY2xhc3MgU1ZHUGFpbnRUeXBlIHsKKyAgICBSR0JDb2xv
ciwKKyAgICBOb25lLAorICAgIEN1cnJlbnRDb2xvciwKKyAgICBVUklOb25lLAorICAgIFVSSUN1
cnJlbnRDb2xvciwKKyAgICBVUklSR0JDb2xvciwKKyAgICBVUkkKK307CisKK2VudW0gY2xhc3Mg
QmFzZWxpbmVTaGlmdCB7CisgICAgQmFzZWxpbmUsCisgICAgU3ViLAorICAgIFN1cGVyLAorICAg
IExlbmd0aAorfTsKKworZW51bSBjbGFzcyBUZXh0QW5jaG9yIHsKKyAgICBTdGFydCwKKyAgICBN
aWRkbGUsCisgICAgRW5kCit9OworCitlbnVtIGNsYXNzIENvbG9ySW50ZXJwb2xhdGlvbiB7Cisg
ICAgQXV0bywKKyAgICBTUkdCLAorICAgIExpbmVhclJHQgorfTsKKworZW51bSBjbGFzcyBDb2xv
clJlbmRlcmluZyB7CisgICAgQXV0bywKKyAgICBPcHRpbWl6ZVNwZWVkLAorICAgIE9wdGltaXpl
UXVhbGl0eQorfTsKK2VudW0gY2xhc3MgU2hhcGVSZW5kZXJpbmcgeworICAgIEF1dG8sCisgICAg
T3B0aW1pemVTcGVlZCwKKyAgICBDcmlzcEVkZ2VzLAorICAgIEdlb21ldHJpY1ByZWNpc2lvbgor
fTsKKworZW51bSBjbGFzcyBHbHlwaE9yaWVudGF0aW9uIHsKKyAgICBEZWdyZWVzMCwKKyAgICBE
ZWdyZWVzOTAsCisgICAgRGVncmVlczE4MCwKKyAgICBEZWdyZWVzMjcwLAorICAgIEF1dG8KK307
CisKK2VudW0gY2xhc3MgQWxpZ25tZW50QmFzZWxpbmUgeworICAgIEF1dG8sCisgICAgQmFzZWxp
bmUsCisgICAgQmVmb3JlRWRnZSwKKyAgICBUZXh0QmVmb3JlRWRnZSwKKyAgICBNaWRkbGUsCisg
ICAgQ2VudHJhbCwKKyAgICBBZnRlckVkZ2UsCisgICAgVGV4dEFmdGVyRWRnZSwKKyAgICBJZGVv
Z3JhcGhpYywKKyAgICBBbHBoYWJldGljLAorICAgIEhhbmdpbmcsCisgICAgTWF0aGVtYXRpY2Fs
Cit9OworCitlbnVtIGNsYXNzIERvbWluYW50QmFzZWxpbmUgeworICAgIEF1dG8sCisgICAgVXNl
U2NyaXB0LAorICAgIE5vQ2hhbmdlLAorICAgIFJlc2V0U2l6ZSwKKyAgICBJZGVvZ3JhcGhpYywK
KyAgICBBbHBoYWJldGljLAorICAgIEhhbmdpbmcsCisgICAgTWF0aGVtYXRpY2FsLAorICAgIENl
bnRyYWwsCisgICAgTWlkZGxlLAorICAgIFRleHRBZnRlckVkZ2UsCisgICAgVGV4dEJlZm9yZUVk
Z2UKK307CisKK2VudW0gY2xhc3MgVmVjdG9yRWZmZWN0IHsKKyAgICBOb25lLAorICAgIE5vblNj
YWxpbmdTdHJva2UKK307CisKK2VudW0gY2xhc3MgQnVmZmVyZWRSZW5kZXJpbmcgeworICAgIEF1
dG8sCisgICAgRHluYW1pYywKKyAgICBTdGF0aWMKK307CisKK2VudW0gY2xhc3MgTWFza1R5cGUg
eworICAgIEx1bWluYW5jZSwKKyAgICBBbHBoYQorfTsKKworLy8gSW5oZXJpdGVkL05vbi1Jbmhl
cml0ZWQgU3R5bGUgRGF0YXN0cnVjdHVyZXMKK2NsYXNzIFN0eWxlRmlsbERhdGEgOiBwdWJsaWMg
UmVmQ291bnRlZDxTdHlsZUZpbGxEYXRhPiB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxTdHls
ZUZpbGxEYXRhPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFN0eWxlRmlsbERhdGEp
OyB9CisgICAgUmVmPFN0eWxlRmlsbERhdGE+IGNvcHkoKSBjb25zdDsKKworICAgIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBTdHlsZUZpbGxEYXRhJikgY29uc3Q7CisgICAgYm9vbCBvcGVyYXRvciE9
KGNvbnN0IFN0eWxlRmlsbERhdGEmIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJu
ICEoKnRoaXMgPT0gb3RoZXIpOworICAgIH0KKworICAgIGZsb2F0IG9wYWNpdHk7CisgICAgU1ZH
UGFpbnRUeXBlIHBhaW50VHlwZTsKKyAgICBDb2xvciBwYWludENvbG9yOworICAgIFN0cmluZyBw
YWludFVyaTsKKyAgICBTVkdQYWludFR5cGUgdmlzaXRlZExpbmtQYWludFR5cGU7CisgICAgQ29s
b3IgdmlzaXRlZExpbmtQYWludENvbG9yOworICAgIFN0cmluZyB2aXNpdGVkTGlua1BhaW50VXJp
OworCitwcml2YXRlOgorICAgIFN0eWxlRmlsbERhdGEoKTsKKyAgICBTdHlsZUZpbGxEYXRhKGNv
bnN0IFN0eWxlRmlsbERhdGEmKTsKK307CisKK2NsYXNzIFN0eWxlU3Ryb2tlRGF0YSA6IHB1Ymxp
YyBSZWZDb3VudGVkPFN0eWxlU3Ryb2tlRGF0YT4geworcHVibGljOgorICAgIHN0YXRpYyBSZWY8
U3R5bGVTdHJva2VEYXRhPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFN0eWxlU3Ry
b2tlRGF0YSk7IH0KKyAgICBSZWY8U3R5bGVTdHJva2VEYXRhPiBjb3B5KCkgY29uc3Q7CisKKyAg
ICBib29sIG9wZXJhdG9yPT0oY29uc3QgU3R5bGVTdHJva2VEYXRhJikgY29uc3Q7CisgICAgYm9v
bCBvcGVyYXRvciE9KGNvbnN0IFN0eWxlU3Ryb2tlRGF0YSYgb3RoZXIpIGNvbnN0CisgICAgewor
ICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7CisgICAgfQorCisgICAgZmxvYXQgb3Bh
Y2l0eTsKKworICAgIExlbmd0aCBkYXNoT2Zmc2V0OworICAgIFZlY3RvcjxTVkdMZW5ndGhWYWx1
ZT4gZGFzaEFycmF5OworCisgICAgU1ZHUGFpbnRUeXBlIHBhaW50VHlwZTsKKyAgICBDb2xvciBw
YWludENvbG9yOworICAgIFN0cmluZyBwYWludFVyaTsKKyAgICBTVkdQYWludFR5cGUgdmlzaXRl
ZExpbmtQYWludFR5cGU7CisgICAgQ29sb3IgdmlzaXRlZExpbmtQYWludENvbG9yOworICAgIFN0
cmluZyB2aXNpdGVkTGlua1BhaW50VXJpOworCitwcml2YXRlOgorICAgIFN0eWxlU3Ryb2tlRGF0
YSgpOworICAgIFN0eWxlU3Ryb2tlRGF0YShjb25zdCBTdHlsZVN0cm9rZURhdGEmKTsKK307CisK
K2NsYXNzIFN0eWxlU3RvcERhdGEgOiBwdWJsaWMgUmVmQ291bnRlZDxTdHlsZVN0b3BEYXRhPiB7
CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxTdHlsZVN0b3BEYXRhPiBjcmVhdGUoKSB7IHJldHVy
biBhZG9wdFJlZigqbmV3IFN0eWxlU3RvcERhdGEpOyB9CisgICAgUmVmPFN0eWxlU3RvcERhdGE+
IGNvcHkoKSBjb25zdDsKKworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTdHlsZVN0b3BEYXRh
JikgY29uc3Q7CisgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFN0eWxlU3RvcERhdGEmIG90aGVy
KSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOworICAgIH0K
KworICAgIGZsb2F0IG9wYWNpdHk7CisgICAgQ29sb3IgY29sb3I7CisKK3ByaXZhdGU6CisgICAg
U3R5bGVTdG9wRGF0YSgpOworICAgIFN0eWxlU3RvcERhdGEoY29uc3QgU3R5bGVTdG9wRGF0YSYp
OworfTsKKworY2xhc3MgU3R5bGVUZXh0RGF0YSA6IHB1YmxpYyBSZWZDb3VudGVkPFN0eWxlVGV4
dERhdGE+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFN0eWxlVGV4dERhdGE+IGNyZWF0ZSgp
IHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3R5bGVUZXh0RGF0YSk7IH0KKyAgICBSZWY8U3R5bGVU
ZXh0RGF0YT4gY29weSgpIGNvbnN0OwogICAgIAotICAgIGVudW0gRVZlY3RvckVmZmVjdCB7Ci0g
ICAgICAgIFZFX05PTkUsCi0gICAgICAgIFZFX05PTl9TQ0FMSU5HX1NUUk9LRQotICAgIH07Ci0K
LSAgICBlbnVtIEVCdWZmZXJlZFJlbmRlcmluZyB7Ci0gICAgICAgIEJSX0FVVE8sCi0gICAgICAg
IEJSX0RZTkFNSUMsCi0gICAgICAgIEJSX1NUQVRJQwotICAgIH07Ci0KLSAgICBlbnVtIEVNYXNr
VHlwZSB7Ci0gICAgICAgIE1UX0xVTUlOQU5DRSwKLSAgICAgICAgTVRfQUxQSEEKLSAgICB9Owot
Ci0gICAgY2xhc3MgQ1NTVmFsdWU7Ci0gICAgY2xhc3MgQ1NTVmFsdWVMaXN0OwotICAgIGNsYXNz
IFNWR1BhaW50OwotCi0gICAgLy8gSW5oZXJpdGVkL05vbi1Jbmhlcml0ZWQgU3R5bGUgRGF0YXN0
cnVjdHVyZXMKLSAgICBjbGFzcyBTdHlsZUZpbGxEYXRhIDogcHVibGljIFJlZkNvdW50ZWQ8U3R5
bGVGaWxsRGF0YT4gewotICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIFJlZjxTdHlsZUZpbGxE
YXRhPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFN0eWxlRmlsbERhdGEpOyB9Ci0g
ICAgICAgIFJlZjxTdHlsZUZpbGxEYXRhPiBjb3B5KCkgY29uc3Q7Ci0KLSAgICAgICAgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IFN0eWxlRmlsbERhdGEmKSBjb25zdDsKLSAgICAgICAgYm9vbCBvcGVy
YXRvciE9KGNvbnN0IFN0eWxlRmlsbERhdGEmIG90aGVyKSBjb25zdAotICAgICAgICB7Ci0gICAg
ICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7Ci0gICAgICAgIH0KLQotICAgICAgICBm
bG9hdCBvcGFjaXR5OwotICAgICAgICBTVkdQYWludFR5cGUgcGFpbnRUeXBlOwotICAgICAgICBD
b2xvciBwYWludENvbG9yOwotICAgICAgICBTdHJpbmcgcGFpbnRVcmk7Ci0gICAgICAgIFNWR1Bh
aW50VHlwZSB2aXNpdGVkTGlua1BhaW50VHlwZTsKLSAgICAgICAgQ29sb3IgdmlzaXRlZExpbmtQ
YWludENvbG9yOwotICAgICAgICBTdHJpbmcgdmlzaXRlZExpbmtQYWludFVyaTsKLQotICAgIHBy
aXZhdGU6Ci0gICAgICAgIFN0eWxlRmlsbERhdGEoKTsKLSAgICAgICAgU3R5bGVGaWxsRGF0YShj
b25zdCBTdHlsZUZpbGxEYXRhJik7Ci0gICAgfTsKLQotICAgIGNsYXNzIFN0eWxlU3Ryb2tlRGF0
YSA6IHB1YmxpYyBSZWZDb3VudGVkPFN0eWxlU3Ryb2tlRGF0YT4gewotICAgIHB1YmxpYzoKLSAg
ICAgICAgc3RhdGljIFJlZjxTdHlsZVN0cm9rZURhdGE+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgU3R5bGVTdHJva2VEYXRhKTsgfQotICAgICAgICBSZWY8U3R5bGVTdHJva2VEYXRh
PiBjb3B5KCkgY29uc3Q7Ci0KLSAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFN0eWxlU3Ry
b2tlRGF0YSYpIGNvbnN0OwotICAgICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgU3R5bGVTdHJv
a2VEYXRhJiBvdGhlcikgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuICEoKnRo
aXMgPT0gb3RoZXIpOwotICAgICAgICB9Ci0KLSAgICAgICAgZmxvYXQgb3BhY2l0eTsKLQotICAg
ICAgICBMZW5ndGggZGFzaE9mZnNldDsKLSAgICAgICAgVmVjdG9yPFNWR0xlbmd0aFZhbHVlPiBk
YXNoQXJyYXk7Ci0KLSAgICAgICAgU1ZHUGFpbnRUeXBlIHBhaW50VHlwZTsKLSAgICAgICAgQ29s
b3IgcGFpbnRDb2xvcjsKLSAgICAgICAgU3RyaW5nIHBhaW50VXJpOwotICAgICAgICBTVkdQYWlu
dFR5cGUgdmlzaXRlZExpbmtQYWludFR5cGU7Ci0gICAgICAgIENvbG9yIHZpc2l0ZWRMaW5rUGFp
bnRDb2xvcjsKLSAgICAgICAgU3RyaW5nIHZpc2l0ZWRMaW5rUGFpbnRVcmk7Ci0KLSAgICBwcml2
YXRlOiAgICAgICAgCi0gICAgICAgIFN0eWxlU3Ryb2tlRGF0YSgpOwotICAgICAgICBTdHlsZVN0
cm9rZURhdGEoY29uc3QgU3R5bGVTdHJva2VEYXRhJik7Ci0gICAgfTsKLQotICAgIGNsYXNzIFN0
eWxlU3RvcERhdGEgOiBwdWJsaWMgUmVmQ291bnRlZDxTdHlsZVN0b3BEYXRhPiB7Ci0gICAgcHVi
bGljOgotICAgICAgICBzdGF0aWMgUmVmPFN0eWxlU3RvcERhdGE+IGNyZWF0ZSgpIHsgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgU3R5bGVTdG9wRGF0YSk7IH0KLSAgICAgICAgUmVmPFN0eWxlU3RvcERh
dGE+IGNvcHkoKSBjb25zdDsKLQotICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU3R5bGVT
dG9wRGF0YSYpIGNvbnN0OwotICAgICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgU3R5bGVTdG9w
RGF0YSYgb3RoZXIpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiAhKCp0aGlz
ID09IG90aGVyKTsKLSAgICAgICAgfQotCi0gICAgICAgIGZsb2F0IG9wYWNpdHk7Ci0gICAgICAg
IENvbG9yIGNvbG9yOwotCi0gICAgcHJpdmF0ZTogICAgICAgIAotICAgICAgICBTdHlsZVN0b3BE
YXRhKCk7Ci0gICAgICAgIFN0eWxlU3RvcERhdGEoY29uc3QgU3R5bGVTdG9wRGF0YSYpOwotICAg
IH07Ci0KLSAgICBjbGFzcyBTdHlsZVRleHREYXRhIDogcHVibGljIFJlZkNvdW50ZWQ8U3R5bGVU
ZXh0RGF0YT4gewotICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIFJlZjxTdHlsZVRleHREYXRh
PiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFN0eWxlVGV4dERhdGEpOyB9Ci0gICAg
ICAgIFJlZjxTdHlsZVRleHREYXRhPiBjb3B5KCkgY29uc3Q7Ci0gICAgICAgIAotICAgICAgICBi
b29sIG9wZXJhdG9yPT0oY29uc3QgU3R5bGVUZXh0RGF0YSYgb3RoZXIpIGNvbnN0OwotICAgICAg
ICBib29sIG9wZXJhdG9yIT0oY29uc3QgU3R5bGVUZXh0RGF0YSYgb3RoZXIpIGNvbnN0Ci0gICAg
ICAgIHsKLSAgICAgICAgICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKLSAgICAgICAgfQot
Ci0gICAgICAgIFNWR0xlbmd0aFZhbHVlIGtlcm5pbmc7Ci0KLSAgICBwcml2YXRlOgotICAgICAg
ICBTdHlsZVRleHREYXRhKCk7Ci0gICAgICAgIFN0eWxlVGV4dERhdGEoY29uc3QgU3R5bGVUZXh0
RGF0YSYpOwotICAgIH07Ci0KLSAgICAvLyBOb3RlOiB0aGUgcnVsZSBmb3IgdGhpcyBjbGFzcyBp
cywgKm5vIGluaGVyaXRhbmNlKiBvZiB0aGVzZSBwcm9wcwotICAgIGNsYXNzIFN0eWxlTWlzY0Rh
dGEgOiBwdWJsaWMgUmVmQ291bnRlZDxTdHlsZU1pc2NEYXRhPiB7Ci0gICAgcHVibGljOgotICAg
ICAgICBzdGF0aWMgUmVmPFN0eWxlTWlzY0RhdGE+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgU3R5bGVNaXNjRGF0YSk7IH0KLSAgICAgICAgUmVmPFN0eWxlTWlzY0RhdGE+IGNvcHko
KSBjb25zdDsKLQotICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU3R5bGVNaXNjRGF0YSYp
IGNvbnN0OwotICAgICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgU3R5bGVNaXNjRGF0YSYgb3Ro
ZXIpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiAhKCp0aGlzID09IG90aGVy
KTsKLSAgICAgICAgfQotCi0gICAgICAgIENvbG9yIGZsb29kQ29sb3I7Ci0gICAgICAgIGZsb2F0
IGZsb29kT3BhY2l0eTsKLSAgICAgICAgQ29sb3IgbGlnaHRpbmdDb2xvcjsKLQotICAgICAgICAv
LyBub24taW5oZXJpdGVkIHRleHQgc3R1ZmYgbGl2ZXMgaGVyZSBub3QgaW4gU3R5bGVUZXh0RGF0
YS4KLSAgICAgICAgU1ZHTGVuZ3RoVmFsdWUgYmFzZWxpbmVTaGlmdFZhbHVlOwotCi0gICAgcHJp
dmF0ZToKLSAgICAgICAgU3R5bGVNaXNjRGF0YSgpOwotICAgICAgICBTdHlsZU1pc2NEYXRhKGNv
bnN0IFN0eWxlTWlzY0RhdGEmKTsKLSAgICB9OwotCi0gICAgY2xhc3MgU3R5bGVTaGFkb3dTVkdE
YXRhIDogcHVibGljIFJlZkNvdW50ZWQ8U3R5bGVTaGFkb3dTVkdEYXRhPiB7Ci0gICAgcHVibGlj
OgotICAgICAgICBzdGF0aWMgUmVmPFN0eWxlU2hhZG93U1ZHRGF0YT4gY3JlYXRlKCkgeyByZXR1
cm4gYWRvcHRSZWYoKm5ldyBTdHlsZVNoYWRvd1NWR0RhdGEpOyB9Ci0gICAgICAgIFJlZjxTdHls
ZVNoYWRvd1NWR0RhdGE+IGNvcHkoKSBjb25zdDsKLQotICAgICAgICBib29sIG9wZXJhdG9yPT0o
Y29uc3QgU3R5bGVTaGFkb3dTVkdEYXRhJikgY29uc3Q7Ci0gICAgICAgIGJvb2wgb3BlcmF0b3Ih
PShjb25zdCBTdHlsZVNoYWRvd1NWR0RhdGEmIG90aGVyKSBjb25zdAotICAgICAgICB7Ci0gICAg
ICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7Ci0gICAgICAgIH0KLQotICAgICAgICBz
dGQ6OnVuaXF1ZV9wdHI8U2hhZG93RGF0YT4gc2hhZG93OwotCi0gICAgcHJpdmF0ZToKLSAgICAg
ICAgU3R5bGVTaGFkb3dTVkdEYXRhKCk7Ci0gICAgICAgIFN0eWxlU2hhZG93U1ZHRGF0YShjb25z
dCBTdHlsZVNoYWRvd1NWR0RhdGEmKTsKLSAgICB9OwotCi0gICAgLy8gTm9uLWluaGVyaXRlZCBy
ZXNvdXJjZXMKLSAgICBjbGFzcyBTdHlsZVJlc291cmNlRGF0YSA6IHB1YmxpYyBSZWZDb3VudGVk
PFN0eWxlUmVzb3VyY2VEYXRhPiB7Ci0gICAgcHVibGljOgotICAgICAgICBzdGF0aWMgUmVmPFN0
eWxlUmVzb3VyY2VEYXRhPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFN0eWxlUmVz
b3VyY2VEYXRhKTsgfQotICAgICAgICBSZWY8U3R5bGVSZXNvdXJjZURhdGE+IGNvcHkoKSBjb25z
dDsKLQotICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU3R5bGVSZXNvdXJjZURhdGEmKSBj
b25zdDsKLSAgICAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFN0eWxlUmVzb3VyY2VEYXRhJiBv
dGhlcikgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3Ro
ZXIpOwotICAgICAgICB9Ci0KLSAgICAgICAgU3RyaW5nIGNsaXBwZXI7Ci0gICAgICAgIFN0cmlu
ZyBtYXNrZXI7Ci0KLSAgICBwcml2YXRlOgotICAgICAgICBTdHlsZVJlc291cmNlRGF0YSgpOwot
ICAgICAgICBTdHlsZVJlc291cmNlRGF0YShjb25zdCBTdHlsZVJlc291cmNlRGF0YSYpOwotICAg
IH07Ci0KLSAgICAvLyBJbmhlcml0ZWQgcmVzb3VyY2VzCi0gICAgY2xhc3MgU3R5bGVJbmhlcml0
ZWRSZXNvdXJjZURhdGEgOiBwdWJsaWMgUmVmQ291bnRlZDxTdHlsZUluaGVyaXRlZFJlc291cmNl
RGF0YT4gewotICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIFJlZjxTdHlsZUluaGVyaXRlZFJl
c291cmNlRGF0YT4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHlsZUluaGVyaXRl
ZFJlc291cmNlRGF0YSk7IH0KLSAgICAgICAgUmVmPFN0eWxlSW5oZXJpdGVkUmVzb3VyY2VEYXRh
PiBjb3B5KCkgY29uc3Q7Ci0KLSAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFN0eWxlSW5o
ZXJpdGVkUmVzb3VyY2VEYXRhJikgY29uc3Q7Ci0gICAgICAgIGJvb2wgb3BlcmF0b3IhPShjb25z
dCBTdHlsZUluaGVyaXRlZFJlc291cmNlRGF0YSYgb3RoZXIpIGNvbnN0Ci0gICAgICAgIHsKLSAg
ICAgICAgICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKLSAgICAgICAgfQotCi0gICAgICAg
IFN0cmluZyBtYXJrZXJTdGFydDsKLSAgICAgICAgU3RyaW5nIG1hcmtlck1pZDsKLSAgICAgICAg
U3RyaW5nIG1hcmtlckVuZDsKLQotICAgIHByaXZhdGU6Ci0gICAgICAgIFN0eWxlSW5oZXJpdGVk
UmVzb3VyY2VEYXRhKCk7Ci0gICAgICAgIFN0eWxlSW5oZXJpdGVkUmVzb3VyY2VEYXRhKGNvbnN0
IFN0eWxlSW5oZXJpdGVkUmVzb3VyY2VEYXRhJik7Ci0gICAgfTsKLQotICAgIC8vIFBvc2l0aW9u
aW5nIGFuZCBzaXppbmcgcHJvcGVydGllcy4KLSAgICBjbGFzcyBTdHlsZUxheW91dERhdGEgOiBw
dWJsaWMgUmVmQ291bnRlZDxTdHlsZUxheW91dERhdGE+IHsKLSAgICBwdWJsaWM6Ci0gICAgICAg
IHN0YXRpYyBSZWY8U3R5bGVMYXlvdXREYXRhPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigq
bmV3IFN0eWxlTGF5b3V0RGF0YSk7IH0KLSAgICAgICAgUmVmPFN0eWxlTGF5b3V0RGF0YT4gY29w
eSgpIGNvbnN0OwotCi0gICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTdHlsZUxheW91dERh
dGEmKSBjb25zdDsKLSAgICAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFN0eWxlTGF5b3V0RGF0
YSYgb3RoZXIpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiAhKCp0aGlzID09
IG90aGVyKTsKLSAgICAgICAgfQotCi0gICAgICAgIExlbmd0aCBjeDsKLSAgICAgICAgTGVuZ3Ro
IGN5OwotICAgICAgICBMZW5ndGggcjsKLSAgICAgICAgTGVuZ3RoIHJ4OwotICAgICAgICBMZW5n
dGggcnk7Ci0gICAgICAgIExlbmd0aCB4OwotICAgICAgICBMZW5ndGggeTsKLQotICAgIHByaXZh
dGU6ICAgICAgICAKLSAgICAgICAgU3R5bGVMYXlvdXREYXRhKCk7Ci0gICAgICAgIFN0eWxlTGF5
b3V0RGF0YShjb25zdCBTdHlsZUxheW91dERhdGEmKTsKLSAgICB9OworICAgIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBTdHlsZVRleHREYXRhJiBvdGhlcikgY29uc3Q7CisgICAgYm9vbCBvcGVyYXRv
ciE9KGNvbnN0IFN0eWxlVGV4dERhdGEmIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0
dXJuICEoKnRoaXMgPT0gb3RoZXIpOworICAgIH0KKworICAgIFNWR0xlbmd0aFZhbHVlIGtlcm5p
bmc7CisKK3ByaXZhdGU6CisgICAgU3R5bGVUZXh0RGF0YSgpOworICAgIFN0eWxlVGV4dERhdGEo
Y29uc3QgU3R5bGVUZXh0RGF0YSYpOworfTsKKworLy8gTm90ZTogdGhlIHJ1bGUgZm9yIHRoaXMg
Y2xhc3MgaXMsICpubyBpbmhlcml0YW5jZSogb2YgdGhlc2UgcHJvcHMKK2NsYXNzIFN0eWxlTWlz
Y0RhdGEgOiBwdWJsaWMgUmVmQ291bnRlZDxTdHlsZU1pc2NEYXRhPiB7CitwdWJsaWM6CisgICAg
c3RhdGljIFJlZjxTdHlsZU1pc2NEYXRhPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3
IFN0eWxlTWlzY0RhdGEpOyB9CisgICAgUmVmPFN0eWxlTWlzY0RhdGE+IGNvcHkoKSBjb25zdDsK
KworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTdHlsZU1pc2NEYXRhJikgY29uc3Q7CisgICAg
Ym9vbCBvcGVyYXRvciE9KGNvbnN0IFN0eWxlTWlzY0RhdGEmIG90aGVyKSBjb25zdAorICAgIHsK
KyAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOworICAgIH0KKworICAgIENvbG9yIGZs
b29kQ29sb3I7CisgICAgZmxvYXQgZmxvb2RPcGFjaXR5OworICAgIENvbG9yIGxpZ2h0aW5nQ29s
b3I7CisKKyAgICAvLyBub24taW5oZXJpdGVkIHRleHQgc3R1ZmYgbGl2ZXMgaGVyZSBub3QgaW4g
U3R5bGVUZXh0RGF0YS4KKyAgICBTVkdMZW5ndGhWYWx1ZSBiYXNlbGluZVNoaWZ0VmFsdWU7CisK
K3ByaXZhdGU6CisgICAgU3R5bGVNaXNjRGF0YSgpOworICAgIFN0eWxlTWlzY0RhdGEoY29uc3Qg
U3R5bGVNaXNjRGF0YSYpOworfTsKKworY2xhc3MgU3R5bGVTaGFkb3dTVkdEYXRhIDogcHVibGlj
IFJlZkNvdW50ZWQ8U3R5bGVTaGFkb3dTVkdEYXRhPiB7CitwdWJsaWM6CisgICAgc3RhdGljIFJl
ZjxTdHlsZVNoYWRvd1NWR0RhdGE+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3R5
bGVTaGFkb3dTVkdEYXRhKTsgfQorICAgIFJlZjxTdHlsZVNoYWRvd1NWR0RhdGE+IGNvcHkoKSBj
b25zdDsKKworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTdHlsZVNoYWRvd1NWR0RhdGEmKSBj
b25zdDsKKyAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgU3R5bGVTaGFkb3dTVkdEYXRhJiBvdGhl
cikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKKyAgICB9
CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U2hhZG93RGF0YT4gc2hhZG93OworCitwcml2YXRlOgor
ICAgIFN0eWxlU2hhZG93U1ZHRGF0YSgpOworICAgIFN0eWxlU2hhZG93U1ZHRGF0YShjb25zdCBT
dHlsZVNoYWRvd1NWR0RhdGEmKTsKK307CisKKy8vIE5vbi1pbmhlcml0ZWQgcmVzb3VyY2VzCitj
bGFzcyBTdHlsZVJlc291cmNlRGF0YSA6IHB1YmxpYyBSZWZDb3VudGVkPFN0eWxlUmVzb3VyY2VE
YXRhPiB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxTdHlsZVJlc291cmNlRGF0YT4gY3JlYXRl
KCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHlsZVJlc291cmNlRGF0YSk7IH0KKyAgICBSZWY8
U3R5bGVSZXNvdXJjZURhdGE+IGNvcHkoKSBjb25zdDsKKworICAgIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBTdHlsZVJlc291cmNlRGF0YSYpIGNvbnN0OworICAgIGJvb2wgb3BlcmF0b3IhPShjb25z
dCBTdHlsZVJlc291cmNlRGF0YSYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4g
ISgqdGhpcyA9PSBvdGhlcik7CisgICAgfQorCisgICAgU3RyaW5nIGNsaXBwZXI7CisgICAgU3Ry
aW5nIG1hc2tlcjsKKworcHJpdmF0ZToKKyAgICBTdHlsZVJlc291cmNlRGF0YSgpOworICAgIFN0
eWxlUmVzb3VyY2VEYXRhKGNvbnN0IFN0eWxlUmVzb3VyY2VEYXRhJik7Cit9OworCisvLyBJbmhl
cml0ZWQgcmVzb3VyY2VzCitjbGFzcyBTdHlsZUluaGVyaXRlZFJlc291cmNlRGF0YSA6IHB1Ymxp
YyBSZWZDb3VudGVkPFN0eWxlSW5oZXJpdGVkUmVzb3VyY2VEYXRhPiB7CitwdWJsaWM6CisgICAg
c3RhdGljIFJlZjxTdHlsZUluaGVyaXRlZFJlc291cmNlRGF0YT4gY3JlYXRlKCkgeyByZXR1cm4g
YWRvcHRSZWYoKm5ldyBTdHlsZUluaGVyaXRlZFJlc291cmNlRGF0YSk7IH0KKyAgICBSZWY8U3R5
bGVJbmhlcml0ZWRSZXNvdXJjZURhdGE+IGNvcHkoKSBjb25zdDsKKworICAgIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBTdHlsZUluaGVyaXRlZFJlc291cmNlRGF0YSYpIGNvbnN0OworICAgIGJvb2wg
b3BlcmF0b3IhPShjb25zdCBTdHlsZUluaGVyaXRlZFJlc291cmNlRGF0YSYgb3RoZXIpIGNvbnN0
CisgICAgeworICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7CisgICAgfQorCisgICAg
U3RyaW5nIG1hcmtlclN0YXJ0OworICAgIFN0cmluZyBtYXJrZXJNaWQ7CisgICAgU3RyaW5nIG1h
cmtlckVuZDsKKworcHJpdmF0ZToKKyAgICBTdHlsZUluaGVyaXRlZFJlc291cmNlRGF0YSgpOwor
ICAgIFN0eWxlSW5oZXJpdGVkUmVzb3VyY2VEYXRhKGNvbnN0IFN0eWxlSW5oZXJpdGVkUmVzb3Vy
Y2VEYXRhJik7Cit9OworCisvLyBQb3NpdGlvbmluZyBhbmQgc2l6aW5nIHByb3BlcnRpZXMuCitj
bGFzcyBTdHlsZUxheW91dERhdGEgOiBwdWJsaWMgUmVmQ291bnRlZDxTdHlsZUxheW91dERhdGE+
IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFN0eWxlTGF5b3V0RGF0YT4gY3JlYXRlKCkgeyBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHlsZUxheW91dERhdGEpOyB9CisgICAgUmVmPFN0eWxlTGF5
b3V0RGF0YT4gY29weSgpIGNvbnN0OworCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFN0eWxl
TGF5b3V0RGF0YSYpIGNvbnN0OworICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTdHlsZUxheW91
dERhdGEmIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3Ro
ZXIpOworICAgIH0KKworICAgIExlbmd0aCBjeDsKKyAgICBMZW5ndGggY3k7CisgICAgTGVuZ3Ro
IHI7CisgICAgTGVuZ3RoIHJ4OworICAgIExlbmd0aCByeTsKKyAgICBMZW5ndGggeDsKKyAgICBM
ZW5ndGggeTsKKworcHJpdmF0ZToKKyAgICBTdHlsZUxheW91dERhdGEoKTsKKyAgICBTdHlsZUxh
eW91dERhdGEoY29uc3QgU3R5bGVMYXlvdXREYXRhJik7Cit9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ltYWdl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R0ltYWdlLmNwcAkocmV2aXNpb24gMjMyMTg5KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdJbWFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1NSw3ICsxNTUsNyBA
QCB2b2lkIFJlbmRlclNWR0ltYWdlOjpwYWludChQYWludEluZm8mIHBhCiAgICAgICAgIFNWR1Jl
bmRlcmluZ0NvbnRleHQgcmVuZGVyaW5nQ29udGV4dCgqdGhpcywgY2hpbGRQYWludEluZm8pOwog
CiAgICAgICAgIGlmIChyZW5kZXJpbmdDb250ZXh0LmlzUmVuZGVyaW5nUHJlcGFyZWQoKSkgewot
ICAgICAgICAgICAgaWYgKHN0eWxlKCkuc3ZnU3R5bGUoKS5idWZmZXJlZFJlbmRlcmluZygpID09
IEJSX1NUQVRJQyAmJiByZW5kZXJpbmdDb250ZXh0LmJ1ZmZlckZvcmVncm91bmQobV9idWZmZXJl
ZEZvcmVncm91bmQpKQorICAgICAgICAgICAgaWYgKHN0eWxlKCkuc3ZnU3R5bGUoKS5idWZmZXJl
ZFJlbmRlcmluZygpID09IEJ1ZmZlcmVkUmVuZGVyaW5nOjpTdGF0aWMgJiYgcmVuZGVyaW5nQ29u
dGV4dC5idWZmZXJGb3JlZ3JvdW5kKG1fYnVmZmVyZWRGb3JlZ3JvdW5kKSkKICAgICAgICAgICAg
ICAgICByZXR1cm47CiAKICAgICAgICAgICAgIHBhaW50Rm9yZWdyb3VuZChjaGlsZFBhaW50SW5m
byk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1JlY3QuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVj
dC5jcHAJKHJldmlzaW9uIDIzMjE4OSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHUmVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkzLDcgKzkzLDcgQEAgdm9pZCBS
ZW5kZXJTVkdSZWN0Ojp1cGRhdGVTaGFwZUZyb21FbGVtZQogCiAjaWYgVVNFKENHKQogICAgIC8v
IENvcmVHcmFwaGljcyBjYW4gaW5mbGF0ZSB0aGUgc3Ryb2tlIGJ5IDFweCB3aGVuIGRyYXdpbmcg
YSByZWN0YW5nbGUgd2l0aCBhbnRpYWxpYXNpbmcgZGlzYWJsZWQgYXQgbm9uLWludGVnZXIgY29v
cmRpbmF0ZXMsIHdlIG5lZWQgdG8gY29tcGVuc2F0ZS4KLSAgICBpZiAoc3R5bGUoKS5zdmdTdHls
ZSgpLnNoYXBlUmVuZGVyaW5nKCkgPT0gU1JfQ1JJU1BFREdFUykKKyAgICBpZiAoc3R5bGUoKS5z
dmdTdHlsZSgpLnNoYXBlUmVuZGVyaW5nKCkgPT0gU2hhcGVSZW5kZXJpbmc6OkNyaXNwRWRnZXMp
CiAgICAgICAgIG1fc3Ryb2tlQm91bmRpbmdCb3guaW5mbGF0ZSgxKTsKICNlbmRpZgogfQpJbmRl
eDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJj
ZS5jcHAJKHJldmlzaW9uIDIzMjE4OSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHUmVzb3VyY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MSwxNSArNzEsMTUgQEAg
c3RhdGljIGlubGluZSBSZW5kZXJTVkdSZXNvdXJjZSogcmVxdWVzdAogCiAgICAgYm9vbCBhcHBs
eVRvRmlsbCA9IG1vZGUgPT0gUmVuZGVyU1ZHUmVzb3VyY2VNb2RlOjpBcHBseVRvRmlsbDsKICAg
ICBTVkdQYWludFR5cGUgcGFpbnRUeXBlID0gYXBwbHlUb0ZpbGwgPyBzdmdTdHlsZS5maWxsUGFp
bnRUeXBlKCkgOiBzdmdTdHlsZS5zdHJva2VQYWludFR5cGUoKTsKLSAgICBpZiAocGFpbnRUeXBl
ID09IFNWR19QQUlOVFRZUEVfTk9ORSkKKyAgICBpZiAocGFpbnRUeXBlID09IFNWR1BhaW50VHlw
ZTo6Tm9uZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBDb2xvciBjb2xvcjsKICAg
ICBzd2l0Y2ggKHBhaW50VHlwZSkgewotICAgIGNhc2UgU1ZHX1BBSU5UVFlQRV9DVVJSRU5UQ09M
T1I6Ci0gICAgY2FzZSBTVkdfUEFJTlRUWVBFX1JHQkNPTE9SOgotICAgIGNhc2UgU1ZHX1BBSU5U
VFlQRV9VUklfQ1VSUkVOVENPTE9SOgotICAgIGNhc2UgU1ZHX1BBSU5UVFlQRV9VUklfUkdCQ09M
T1I6CisgICAgY2FzZSBTVkdQYWludFR5cGU6OkN1cnJlbnRDb2xvcjoKKyAgICBjYXNlIFNWR1Bh
aW50VHlwZTo6UkdCQ29sb3I6CisgICAgY2FzZSBTVkdQYWludFR5cGU6OlVSSUN1cnJlbnRDb2xv
cjoKKyAgICBjYXNlIFNWR1BhaW50VHlwZTo6VVJJUkdCQ29sb3I6CiAgICAgICAgIGNvbG9yID0g
YXBwbHlUb0ZpbGwgPyBzdmdTdHlsZS5maWxsUGFpbnRDb2xvcigpIDogc3ZnU3R5bGUuc3Ryb2tl
UGFpbnRDb2xvcigpOwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgpAQCAtOTAsOCArOTAs
OCBAQCBzdGF0aWMgaW5saW5lIFJlbmRlclNWR1Jlc291cmNlKiByZXF1ZXN0CiAgICAgICAgIC8v
IEZJWE1FOiBUaGlzIGNvZGUgZG9lc24ndCBzdXBwb3J0IHRoZSB1cmkgY29tcG9uZW50IG9mIHRo
ZSB2aXNpdGVkIGxpbmsgcGFpbnQsIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD03MDAwNgogICAgICAgICBTVkdQYWludFR5cGUgdmlzaXRlZFBhaW50VHlwZSA9IGFwcGx5
VG9GaWxsID8gc3ZnU3R5bGUudmlzaXRlZExpbmtGaWxsUGFpbnRUeXBlKCkgOiBzdmdTdHlsZS52
aXNpdGVkTGlua1N0cm9rZVBhaW50VHlwZSgpOwogCi0gICAgICAgIC8vIEZvciBTVkdfUEFJTlRU
WVBFX0NVUlJFTlRDT0xPUiwgJ2NvbG9yJyBhbHJlYWR5IGNvbnRhaW5zIHRoZSAndmlzaXRlZENv
bG9yJy4KLSAgICAgICAgaWYgKHZpc2l0ZWRQYWludFR5cGUgPCBTVkdfUEFJTlRUWVBFX1VSSV9O
T05FICYmIHZpc2l0ZWRQYWludFR5cGUgIT0gU1ZHX1BBSU5UVFlQRV9DVVJSRU5UQ09MT1IpIHsK
KyAgICAgICAgLy8gRm9yIFNWR1BhaW50VHlwZTo6Q3VycmVudENvbG9yLCAnY29sb3InIGFscmVh
ZHkgY29udGFpbnMgdGhlICd2aXNpdGVkQ29sb3InLgorICAgICAgICBpZiAodmlzaXRlZFBhaW50
VHlwZSA8IFNWR1BhaW50VHlwZTo6VVJJTm9uZSAmJiB2aXNpdGVkUGFpbnRUeXBlICE9IFNWR1Bh
aW50VHlwZTo6Q3VycmVudENvbG9yKSB7CiAgICAgICAgICAgICBjb25zdCBDb2xvciYgdmlzaXRl
ZENvbG9yID0gYXBwbHlUb0ZpbGwgPyBzdmdTdHlsZS52aXNpdGVkTGlua0ZpbGxQYWludENvbG9y
KCkgOiBzdmdTdHlsZS52aXNpdGVkTGlua1N0cm9rZVBhaW50Q29sb3IoKTsKICAgICAgICAgICAg
IGlmICh2aXNpdGVkQ29sb3IuaXNWYWxpZCgpKQogICAgICAgICAgICAgICAgIGNvbG9yID0gdmlz
aXRlZENvbG9yLmNvbG9yV2l0aEFscGhhKGNvbG9yLmFscGhhQXNGbG9hdCgpKTsKQEAgLTEwMCw3
ICsxMDAsNyBAQCBzdGF0aWMgaW5saW5lIFJlbmRlclNWR1Jlc291cmNlKiByZXF1ZXN0CiAKICAg
ICAvLyBJZiB0aGUgcHJpbWFyeSByZXNvdXJjZSBpcyBqdXN0IGEgY29sb3IsIHJldHVybiBpbW1l
ZGlhdGVseS4KICAgICBSZW5kZXJTVkdSZXNvdXJjZVNvbGlkQ29sb3IqIGNvbG9yUmVzb3VyY2Ug
PSBSZW5kZXJTVkdSZXNvdXJjZTo6c2hhcmVkU29saWRQYWludGluZ1Jlc291cmNlKCk7Ci0gICAg
aWYgKHBhaW50VHlwZSA8IFNWR19QQUlOVFRZUEVfVVJJX05PTkUpIHsKKyAgICBpZiAocGFpbnRU
eXBlIDwgU1ZHUGFpbnRUeXBlOjpVUklOb25lKSB7CiAgICAgICAgIGlmICghaW5oZXJpdENvbG9y
RnJvbVBhcmVudFN0eWxlSWZOZWVkZWQocmVuZGVyZXIsIGFwcGx5VG9GaWxsLCBjb2xvcikpCiAg
ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApAQCAtMTExLDcgKzExMSw3IEBAIHN0YXRpYyBp
bmxpbmUgUmVuZGVyU1ZHUmVzb3VyY2UqIHJlcXVlc3QKICAgICAvLyBJZiBubyByZXNvdXJjZXMg
YXJlIGFzc29jaWF0ZWQgd2l0aCB0aGUgZ2l2ZW4gcmVuZGVyZXIsIHJldHVybiB0aGUgY29sb3Ig
cmVzb3VyY2UuCiAgICAgYXV0byogcmVzb3VyY2VzID0gU1ZHUmVzb3VyY2VzQ2FjaGU6OmNhY2hl
ZFJlc291cmNlc0ZvclJlbmRlcmVyKHJlbmRlcmVyKTsKICAgICBpZiAoIXJlc291cmNlcykgewot
ICAgICAgICBpZiAocGFpbnRUeXBlID09IFNWR19QQUlOVFRZUEVfVVJJX05PTkUgfHwgIWluaGVy
aXRDb2xvckZyb21QYXJlbnRTdHlsZUlmTmVlZGVkKHJlbmRlcmVyLCBhcHBseVRvRmlsbCwgY29s
b3IpKQorICAgICAgICBpZiAocGFpbnRUeXBlID09IFNWR1BhaW50VHlwZTo6VVJJTm9uZSB8fCAh
aW5oZXJpdENvbG9yRnJvbVBhcmVudFN0eWxlSWZOZWVkZWQocmVuZGVyZXIsIGFwcGx5VG9GaWxs
LCBjb2xvcikpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgICAgICBjb2xvclJl
c291cmNlLT5zZXRDb2xvcihjb2xvcik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuY3BwCShyZXZpc2lv
biAyMzIxODkpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291
cmNlQ2xpcHBlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc4LDcgKzc4LDcgQEAgYm9vbCBSZW5k
ZXJTVkdSZXNvdXJjZUNsaXBwZXI6OnBhdGhPbmx5QwogICAgIC8vIElmIHRoZSBjdXJyZW50IGNs
aXAtcGF0aCBnZXRzIGNsaXBwZWQgaXRzZWxmLCB3ZSBoYXZlIHRvIGZhbGxiYWNrIHRvIG1hc2tp
bmcuCiAgICAgaWYgKCFzdHlsZSgpLnN2Z1N0eWxlKCkuY2xpcHBlclJlc291cmNlKCkuaXNFbXB0
eSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgV2luZFJ1bGUgY2xpcFJ1bGUgPSBSVUxF
X05PTlpFUk87CisgICAgV2luZFJ1bGUgY2xpcFJ1bGUgPSBXaW5kUnVsZTo6Tm9uWmVybzsKICAg
ICBQYXRoIGNsaXBQYXRoID0gUGF0aCgpOwogCiAgICAgLy8gSWYgY2xpcC1wYXRoIG9ubHkgY29u
dGFpbnMgb25lIHZpc2libGUgc2hhcGUgb3IgcGF0aCwgd2UgY2FuIHVzZSBwYXRoLWJhc2VkIGNs
aXBwaW5nLiBJbnZpc2libGUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCShyZXZpc2lvbiAyMzIxODkp
CisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAyLDcgKzEwMiw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxT
VkdGaWx0ZXJCdWlsZGVyPiBSZW5kZXIKICAgICAgICAgZWxlbWVudC5zZXRTdGFuZGFyZEF0dHJp
YnV0ZXMoZWZmZWN0LmdldCgpKTsKICAgICAgICAgZWZmZWN0LT5zZXRFZmZlY3RCb3VuZGFyaWVz
KFNWR0xlbmd0aENvbnRleHQ6OnJlc29sdmVSZWN0YW5nbGU8U1ZHRmlsdGVyUHJpbWl0aXZlU3Rh
bmRhcmRBdHRyaWJ1dGVzPigmZWxlbWVudCwgZmlsdGVyRWxlbWVudCgpLnByaW1pdGl2ZVVuaXRz
KCksIHRhcmdldEJvdW5kaW5nQm94KSk7CiAgICAgICAgIGlmIChlbGVtZW50LnJlbmRlcmVyKCkp
Ci0gICAgICAgICAgICBlZmZlY3QtPnNldE9wZXJhdGluZ0NvbG9yU3BhY2UoZWxlbWVudC5yZW5k
ZXJlcigpLT5zdHlsZSgpLnN2Z1N0eWxlKCkuY29sb3JJbnRlcnBvbGF0aW9uRmlsdGVycygpID09
IENJX0xJTkVBUlJHQiA/IENvbG9yU3BhY2VMaW5lYXJSR0IgOiBDb2xvclNwYWNlU1JHQik7Cisg
ICAgICAgICAgICBlZmZlY3QtPnNldE9wZXJhdGluZ0NvbG9yU3BhY2UoZWxlbWVudC5yZW5kZXJl
cigpLT5zdHlsZSgpLnN2Z1N0eWxlKCkuY29sb3JJbnRlcnBvbGF0aW9uRmlsdGVycygpID09IENv
bG9ySW50ZXJwb2xhdGlvbjo6TGluZWFyUkdCID8gQ29sb3JTcGFjZUxpbmVhclJHQiA6IENvbG9y
U3BhY2VTUkdCKTsKICAgICAgICAgYnVpbGRlci0+YWRkKGVsZW1lbnQucmVzdWx0KCksIFdURk1v
dmUoZWZmZWN0KSk7CiAgICAgfQogICAgIHJldHVybiBidWlsZGVyOwpJbmRleDogU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlR3Jh
ZGllbnQuY3BwCShyZXZpc2lvbiAyMzIxODkpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1Jlc291cmNlR3JhZGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzcs
NyArMTc3LDcgQEAgYm9vbCBSZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50OjphcHBseVJlcwogICAg
ICAgICBjb250ZXh0LT5zZXRGaWxsR3JhZGllbnQoKmdyYWRpZW50RGF0YS0+Z3JhZGllbnQpOwog
ICAgICAgICBjb250ZXh0LT5zZXRGaWxsUnVsZShzdmdTdHlsZS5maWxsUnVsZSgpKTsKICAgICB9
IGVsc2UgaWYgKHJlc291cmNlTW9kZS5jb250YWlucyhSZW5kZXJTVkdSZXNvdXJjZU1vZGU6OkFw
cGx5VG9TdHJva2UpKSB7Ci0gICAgICAgIGlmIChzdmdTdHlsZS52ZWN0b3JFZmZlY3QoKSA9PSBW
RV9OT05fU0NBTElOR19TVFJPS0UpCisgICAgICAgIGlmIChzdmdTdHlsZS52ZWN0b3JFZmZlY3Qo
KSA9PSBWZWN0b3JFZmZlY3Q6Ok5vblNjYWxpbmdTdHJva2UpCiAgICAgICAgICAgICBncmFkaWVu
dERhdGEtPmdyYWRpZW50LT5zZXRHcmFkaWVudFNwYWNlVHJhbnNmb3JtKHRyYW5zZm9ybU9uTm9u
U2NhbGluZ1N0cm9rZSgmcmVuZGVyZXIsIGdyYWRpZW50RGF0YS0+dXNlcnNwYWNlVHJhbnNmb3Jt
KSk7CiAgICAgICAgIGNvbnRleHQtPnNldEFscGhhKHN2Z1N0eWxlLnN0cm9rZU9wYWNpdHkoKSk7
CiAgICAgICAgIGNvbnRleHQtPnNldFN0cm9rZUdyYWRpZW50KCpncmFkaWVudERhdGEtPmdyYWRp
ZW50KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3Vy
Y2VNYXNrZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuY3BwCShyZXZpc2lvbiAyMzIxODkpCisrKyBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFza2VyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNjksNyArNjksNyBAQCBib29sIFJlbmRlclNWR1Jlc291cmNlTWFza2VyOjph
cHBseVJlc291CiAKICAgICBpZiAoIW1hc2tlckRhdGEtPm1hc2tJbWFnZSAmJiAhcmVwYWludFJl
Y3QuaXNFbXB0eSgpKSB7CiAgICAgICAgIGNvbnN0IFNWR1JlbmRlclN0eWxlJiBzdmdTdHlsZSA9
IHN0eWxlKCkuc3ZnU3R5bGUoKTsKLSAgICAgICAgQ29sb3JTcGFjZSBjb2xvclNwYWNlID0gc3Zn
U3R5bGUuY29sb3JJbnRlcnBvbGF0aW9uKCkgPT0gQ0lfTElORUFSUkdCID8gQ29sb3JTcGFjZUxp
bmVhclJHQiA6IENvbG9yU3BhY2VTUkdCOworICAgICAgICBDb2xvclNwYWNlIGNvbG9yU3BhY2Ug
PSBzdmdTdHlsZS5jb2xvckludGVycG9sYXRpb24oKSA9PSBDb2xvckludGVycG9sYXRpb246Okxp
bmVhclJHQiA/IENvbG9yU3BhY2VMaW5lYXJSR0IgOiBDb2xvclNwYWNlU1JHQjsKICAgICAgICAg
Ly8gRklYTUUgKDE0OTQ3MCk6IFRoaXMgaW1hZ2UgYnVmZmVyIHNob3VsZCBub3QgYmUgdW5jb25k
aXRpb25hbGx5IHVuYWNjZWxlcmF0ZWQuIE1ha2luZyBpdCBtYXRjaCB0aGUgY29udGV4dCBicmVh
a3MgYWxwaGEgbWFza2luZywgdGhvdWdoLgogICAgICAgICBtYXNrZXJEYXRhLT5tYXNrSW1hZ2Ug
PSBTVkdSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlcihyZXBhaW50UmVjdCwgYWJz
b2x1dGVUcmFuc2Zvcm0sIGNvbG9yU3BhY2UsIFVuYWNjZWxlcmF0ZWQpOwogICAgICAgICBpZiAo
IW1hc2tlckRhdGEtPm1hc2tJbWFnZSkKQEAgLTExOSw3ICsxMTksNyBAQCBib29sIFJlbmRlclNW
R1Jlc291cmNlTWFza2VyOjpkcmF3Q29udGVuCiAjZW5kaWYKIAogICAgIC8vIENyZWF0ZSB0aGUg
bHVtaW5hbmNlIG1hc2suCi0gICAgaWYgKHN0eWxlKCkuc3ZnU3R5bGUoKS5tYXNrVHlwZSgpID09
IE1UX0xVTUlOQU5DRSkKKyAgICBpZiAoc3R5bGUoKS5zdmdTdHlsZSgpLm1hc2tUeXBlKCkgPT0g
TWFza1R5cGU6Okx1bWluYW5jZSkKICAgICAgICAgbWFza2VyRGF0YS0+bWFza0ltYWdlLT5jb252
ZXJ0VG9MdW1pbmFuY2VNYXNrKCk7CiAKICAgICByZXR1cm4gdHJ1ZTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0
dGVybi5jcHAJKHJldmlzaW9uIDIzMjE4OSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc2LDcg
KzE3Niw3IEBAIGJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuOjphcHBseVJlc28KICAgICAg
ICAgY29udGV4dC0+c2V0RmlsbFBhdHRlcm4oKnBhdHRlcm5EYXRhLT5wYXR0ZXJuKTsKICAgICAg
ICAgY29udGV4dC0+c2V0RmlsbFJ1bGUoc3ZnU3R5bGUuZmlsbFJ1bGUoKSk7CiAgICAgfSBlbHNl
IGlmIChyZXNvdXJjZU1vZGUuY29udGFpbnMoUmVuZGVyU1ZHUmVzb3VyY2VNb2RlOjpBcHBseVRv
U3Ryb2tlKSkgewotICAgICAgICBpZiAoc3ZnU3R5bGUudmVjdG9yRWZmZWN0KCkgPT0gVkVfTk9O
X1NDQUxJTkdfU1RST0tFKQorICAgICAgICBpZiAoc3ZnU3R5bGUudmVjdG9yRWZmZWN0KCkgPT0g
VmVjdG9yRWZmZWN0OjpOb25TY2FsaW5nU3Ryb2tlKQogICAgICAgICAgICAgcGF0dGVybkRhdGEt
PnBhdHRlcm4tPnNldFBhdHRlcm5TcGFjZVRyYW5zZm9ybSh0cmFuc2Zvcm1Pbk5vblNjYWxpbmdT
dHJva2UoJnJlbmRlcmVyLCBwYXR0ZXJuRGF0YS0+dHJhbnNmb3JtKSk7CiAgICAgICAgIGNvbnRl
eHQtPnNldEFscGhhKHN2Z1N0eWxlLnN0cm9rZU9wYWNpdHkoKSk7CiAgICAgICAgIGNvbnRleHQt
PnNldFN0cm9rZVBhdHRlcm4oKnBhdHRlcm5EYXRhLT5wYXR0ZXJuKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUuY3BwCShyZXZpc2lvbiAy
MzIxODkpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzEyLDcgKzMxMiw3IEBAIHZvaWQgUmVuZGVyU1ZHU2hhcGU6
OnBhaW50KFBhaW50SW5mbyYgcGEKIAogICAgICAgICBpZiAocmVuZGVyaW5nQ29udGV4dC5pc1Jl
bmRlcmluZ1ByZXBhcmVkKCkpIHsKICAgICAgICAgICAgIGNvbnN0IFNWR1JlbmRlclN0eWxlJiBz
dmdTdHlsZSA9IHN0eWxlKCkuc3ZnU3R5bGUoKTsKLSAgICAgICAgICAgIGlmIChzdmdTdHlsZS5z
aGFwZVJlbmRlcmluZygpID09IFNSX0NSSVNQRURHRVMpCisgICAgICAgICAgICBpZiAoc3ZnU3R5
bGUuc2hhcGVSZW5kZXJpbmcoKSA9PSBTaGFwZVJlbmRlcmluZzo6Q3Jpc3BFZGdlcykKICAgICAg
ICAgICAgICAgICBjaGlsZFBhaW50SW5mby5jb250ZXh0KCkuc2V0U2hvdWxkQW50aWFsaWFzKGZh
bHNlKTsKIAogICAgICAgICAgICAgZmlsbFN0cm9rZU1hcmtlcnMoY2hpbGRQYWludEluZm8pOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUuaAko
cmV2aXNpb24gMjMyMTg5KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdTaGFwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC04Niw3ICs4Niw3IEBAIHByb3RlY3RlZDoKICAg
ICBmbG9hdCBzdHJva2VXaWR0aCgpIGNvbnN0OwogICAgIGJvb2wgaGFzU21vb3RoU3Ryb2tlKCkg
Y29uc3Q7CiAKLSAgICBib29sIGhhc05vblNjYWxpbmdTdHJva2UoKSBjb25zdCB7IHJldHVybiBz
dHlsZSgpLnN2Z1N0eWxlKCkudmVjdG9yRWZmZWN0KCkgPT0gVkVfTk9OX1NDQUxJTkdfU1RST0tF
OyB9CisgICAgYm9vbCBoYXNOb25TY2FsaW5nU3Ryb2tlKCkgY29uc3QgeyByZXR1cm4gc3R5bGUo
KS5zdmdTdHlsZSgpLnZlY3RvckVmZmVjdCgpID09IFZlY3RvckVmZmVjdDo6Tm9uU2NhbGluZ1N0
cm9rZTsgfQogICAgIEFmZmluZVRyYW5zZm9ybSBub25TY2FsaW5nU3Ryb2tlVHJhbnNmb3JtKCkg
Y29uc3Q7CiAgICAgUGF0aCogbm9uU2NhbGluZ1N0cm9rZVBhdGgoY29uc3QgUGF0aCosIGNvbnN0
IEFmZmluZVRyYW5zZm9ybSYpIGNvbnN0OwogCkBAIC05NSw3ICs5NSw3IEBAIHByb3RlY3RlZDoK
IAogcHJpdmF0ZToKICAgICAvLyBIaXQtZGV0ZWN0aW9uIHNlcGFyYXRlZCBmb3IgdGhlIGZpbGwg
YW5kIHRoZSBzdHJva2UKLSAgICBib29sIGZpbGxDb250YWlucyhjb25zdCBGbG9hdFBvaW50Jiwg
Ym9vbCByZXF1aXJlc0ZpbGwgPSB0cnVlLCBjb25zdCBXaW5kUnVsZSBmaWxsUnVsZSA9IFJVTEVf
Tk9OWkVSTyk7CisgICAgYm9vbCBmaWxsQ29udGFpbnMoY29uc3QgRmxvYXRQb2ludCYsIGJvb2wg
cmVxdWlyZXNGaWxsID0gdHJ1ZSwgY29uc3QgV2luZFJ1bGUgZmlsbFJ1bGUgPSBXaW5kUnVsZTo6
Tm9uWmVybyk7CiAgICAgYm9vbCBzdHJva2VDb250YWlucyhjb25zdCBGbG9hdFBvaW50JiwgYm9v
bCByZXF1aXJlc1N0cm9rZSA9IHRydWUpOwogCiAgICAgRmxvYXRSZWN0IHJlcGFpbnRSZWN0SW5M
b2NhbENvb3JkaW5hdGVzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9yZXBhaW50Qm91bmRpbmdC
b3g7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyVHJlZUFz
VGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdS
ZW5kZXJUcmVlQXNUZXh0LmNwcAkocmV2aXNpb24gMjMyMTg5KQorKysgU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJUcmVlQXNUZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjExLDEwICsyMTEsMTAgQEAgc3RhdGljIHZvaWQgd3JpdGVTdHlsZShUZXh0U3RyZWFtJiB0cywg
YwogICAgICAgICAgICAgd3JpdGVTVkdQYWludGluZ1Jlc291cmNlKHRzLCBmaWxsUGFpbnRpbmdS
ZXNvdXJjZSk7CiAKICAgICAgICAgICAgIHdyaXRlSWZOb3REZWZhdWx0KHRzLCAib3BhY2l0eSIs
IHN2Z1N0eWxlLmZpbGxPcGFjaXR5KCksIDEuMGYpOwotICAgICAgICAgICAgd3JpdGVJZk5vdERl
ZmF1bHQodHMsICJmaWxsIHJ1bGUiLCBzdmdTdHlsZS5maWxsUnVsZSgpLCBSVUxFX05PTlpFUk8p
OworICAgICAgICAgICAgd3JpdGVJZk5vdERlZmF1bHQodHMsICJmaWxsIHJ1bGUiLCBzdmdTdHls
ZS5maWxsUnVsZSgpLCBXaW5kUnVsZTo6Tm9uWmVybyk7CiAgICAgICAgICAgICB0cyA8PCAifV0i
OwogICAgICAgICB9Ci0gICAgICAgIHdyaXRlSWZOb3REZWZhdWx0KHRzLCAiY2xpcCBydWxlIiwg
c3ZnU3R5bGUuY2xpcFJ1bGUoKSwgUlVMRV9OT05aRVJPKTsKKyAgICAgICAgd3JpdGVJZk5vdERl
ZmF1bHQodHMsICJjbGlwIHJ1bGUiLCBzdmdTdHlsZS5jbGlwUnVsZSgpLCBXaW5kUnVsZTo6Tm9u
WmVybyk7CiAgICAgfQogCiAgICAgd3JpdGVJZk5vdEVtcHR5KHRzLCAic3RhcnQgbWFya2VyIiwg
c3ZnU3R5bGUubWFya2VyU3RhcnRSZXNvdXJjZSgpKTsKQEAgLTMxOSwxNCArMzE5LDE0IEBAIHN0
YXRpYyBpbmxpbmUgdm9pZCB3cml0ZVNWR0lubGluZVRleHRCb3gKIAogICAgICAgICAvLyBGSVhN
RTogUmVtb3ZlIHRoaXMgaGFjaywgb25jZSB0aGUgbmV3IHRleHQgbGF5b3V0IGVuZ2luZSBpcyBj
b21wbGV0bHkgbGFuZGVkLiBXZSB3YW50IHRvIHByZXNlcnZlIHRoZSBvbGQgbGF5b3V0IHRlc3Qg
cmVzdWx0cyBmb3Igbm93LgogICAgICAgICB0cyA8PCAiY2h1bmsgMSAiOwotICAgICAgICBFVGV4
dEFuY2hvciBhbmNob3IgPSBzdmdTdHlsZS50ZXh0QW5jaG9yKCk7CisgICAgICAgIFRleHRBbmNo
b3IgYW5jaG9yID0gc3ZnU3R5bGUudGV4dEFuY2hvcigpOwogICAgICAgICBib29sIGlzVmVydGlj
YWxUZXh0ID0gdGV4dEJveC0+cmVuZGVyZXIoKS5zdHlsZSgpLmlzVmVydGljYWxXcml0aW5nTW9k
ZSgpOwotICAgICAgICBpZiAoYW5jaG9yID09IFRBX01JRERMRSkgeworICAgICAgICBpZiAoYW5j
aG9yID09IFRleHRBbmNob3I6Ok1pZGRsZSkgewogICAgICAgICAgICAgdHMgPDwgIihtaWRkbGUg
YW5jaG9yIjsKICAgICAgICAgICAgIGlmIChpc1ZlcnRpY2FsVGV4dCkKICAgICAgICAgICAgICAg
ICB0cyA8PCAiLCB2ZXJ0aWNhbCI7CiAgICAgICAgICAgICB0cyA8PCAiKSAiOwotICAgICAgICB9
IGVsc2UgaWYgKGFuY2hvciA9PSBUQV9FTkQpIHsKKyAgICAgICAgfSBlbHNlIGlmIChhbmNob3Ig
PT0gVGV4dEFuY2hvcjo6RW5kKSB7CiAgICAgICAgICAgICB0cyA8PCAiKGVuZCBhbmNob3IiOwog
ICAgICAgICAgICAgaWYgKGlzVmVydGljYWxUZXh0KQogICAgICAgICAgICAgICAgIHRzIDw8ICIs
IHZlcnRpY2FsIjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVzb3Vy
Y2VzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Jl
c291cmNlcy5jcHAJKHJldmlzaW9uIDIzMjE4OSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvU1ZHUmVzb3VyY2VzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTcwLDcgKzE3MCw3IEBA
IHN0YXRpYyBpbmxpbmUgYm9vbCBpc0NoYWluYWJsZVJlc291cmNlKGMKIAogc3RhdGljIGlubGlu
ZSBSZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lciogcGFpbnRpbmdSZXNvdXJjZUZyb21TVkdQYWlu
dChEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFNWR1BhaW50VHlwZSYgcGFpbnRUeXBlLCBjb25z
dCBTdHJpbmcmIHBhaW50VXJpLCBBdG9taWNTdHJpbmcmIGlkLCBib29sJiBoYXNQZW5kaW5nUmVz
b3VyY2UpCiB7Ci0gICAgaWYgKHBhaW50VHlwZSAhPSBTVkdfUEFJTlRUWVBFX1VSSSAmJiBwYWlu
dFR5cGUgIT0gU1ZHX1BBSU5UVFlQRV9VUklfUkdCQ09MT1IgJiYgcGFpbnRUeXBlICE9IFNWR19Q
QUlOVFRZUEVfVVJJX0NVUlJFTlRDT0xPUikKKyAgICBpZiAocGFpbnRUeXBlICE9IFNWR1BhaW50
VHlwZTo6VVJJICYmIHBhaW50VHlwZSAhPSBTVkdQYWludFR5cGU6OlVSSVJHQkNvbG9yICYmIHBh
aW50VHlwZSAhPSBTVkdQYWludFR5cGU6OlVSSUN1cnJlbnRDb2xvcikKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKICAgICBpZCA9IFNWR1VSSVJlZmVyZW5jZTo6ZnJhZ21lbnRJZGVudGlmaWVy
RnJvbUlSSVN0cmluZyhwYWludFVyaSwgZG9jdW1lbnQpOwpJbmRleDogU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9TVkdUZXh0Q2h1bmsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dENodW5rLmNwcAkocmV2aXNpb24gMjMyMTg5KQorKysg
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0Q2h1bmsuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00MywxMiArNDMsMTIgQEAgU1ZHVGV4dENodW5rOjpTVkdUZXh0Q2h1bmsoY29uc3Qg
VmVjdG9yPAogICAgICAgICBtX2NodW5rU3R5bGUgfD0gU1ZHVGV4dENodW5rOjpWZXJ0aWNhbFRl
eHQ7CiAgICAgCiAgICAgc3dpdGNoIChzdmdTdHlsZS50ZXh0QW5jaG9yKCkpIHsKLSAgICBjYXNl
IFRBX1NUQVJUOgorICAgIGNhc2UgVGV4dEFuY2hvcjo6U3RhcnQ6CiAgICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgVEFfTUlERExFOgorICAgIGNhc2UgVGV4dEFuY2hvcjo6TWlkZGxlOgogICAgICAg
ICBtX2NodW5rU3R5bGUgfD0gTWlkZGxlQW5jaG9yOwogICAgICAgICBicmVhazsKLSAgICBjYXNl
IFRBX0VORDoKKyAgICBjYXNlIFRleHRBbmNob3I6OkVuZDoKICAgICAgICAgbV9jaHVua1N0eWxl
IHw9IEVuZEFuY2hvcjsKICAgICAgICAgYnJlYWs7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TGF5b3V0RW5naW5lQmFzZWxpbmUuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dExheW91dEVuZ2luZUJh
c2VsaW5lLmNwcAkocmV2aXNpb24gMjMyMTg5KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9TVkdUZXh0TGF5b3V0RW5naW5lQmFzZWxpbmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
NSw3ICszNSw3IEBAIFNWR1RleHRMYXlvdXRFbmdpbmVCYXNlbGluZTo6U1ZHVGV4dExheW8KIAog
ZmxvYXQgU1ZHVGV4dExheW91dEVuZ2luZUJhc2VsaW5lOjpjYWxjdWxhdGVCYXNlbGluZVNoaWZ0
KGNvbnN0IFNWR1JlbmRlclN0eWxlJiBzdHlsZSwgU1ZHRWxlbWVudCogY29udGV4dCkgY29uc3QK
IHsKLSAgICBpZiAoc3R5bGUuYmFzZWxpbmVTaGlmdCgpID09IEJTX0xFTkdUSCkgeworICAgIGlm
IChzdHlsZS5iYXNlbGluZVNoaWZ0KCkgPT0gQmFzZWxpbmVTaGlmdDo6TGVuZ3RoKSB7CiAgICAg
ICAgIGF1dG8gYmFzZWxpbmVTaGlmdFZhbHVlTGVuZ3RoID0gc3R5bGUuYmFzZWxpbmVTaGlmdFZh
bHVlKCk7CiAgICAgICAgIGlmIChiYXNlbGluZVNoaWZ0VmFsdWVMZW5ndGgudW5pdFR5cGUoKSA9
PSBMZW5ndGhUeXBlUGVyY2VudGFnZSkKICAgICAgICAgICAgIHJldHVybiBiYXNlbGluZVNoaWZ0
VmFsdWVMZW5ndGgudmFsdWVBc1BlcmNlbnRhZ2UoKSAqIG1fZm9udC5waXhlbFNpemUoKTsKQEAg
LTQ1LDYxICs0NSw2MSBAQCBmbG9hdCBTVkdUZXh0TGF5b3V0RW5naW5lQmFzZWxpbmU6OmNhbGN1
CiAgICAgfQogCiAgICAgc3dpdGNoIChzdHlsZS5iYXNlbGluZVNoaWZ0KCkpIHsKLSAgICBjYXNl
IEJTX0JBU0VMSU5FOgorICAgIGNhc2UgQmFzZWxpbmVTaGlmdDo6QmFzZWxpbmU6CiAgICAgICAg
IHJldHVybiAwOwotICAgIGNhc2UgQlNfU1VCOgorICAgIGNhc2UgQmFzZWxpbmVTaGlmdDo6U3Vi
OgogICAgICAgICByZXR1cm4gLW1fZm9udC5mb250TWV0cmljcygpLmZsb2F0SGVpZ2h0KCkgLyAy
OwotICAgIGNhc2UgQlNfU1VQRVI6CisgICAgY2FzZSBCYXNlbGluZVNoaWZ0OjpTdXBlcjoKICAg
ICAgICAgcmV0dXJuIG1fZm9udC5mb250TWV0cmljcygpLmZsb2F0SGVpZ2h0KCkgLyAyOwotICAg
IGNhc2UgQlNfTEVOR1RIOgorICAgIGNhc2UgQmFzZWxpbmVTaGlmdDo6TGVuZ3RoOgogICAgICAg
ICBicmVhazsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIDA7
CiB9CiAKLUVBbGlnbm1lbnRCYXNlbGluZSBTVkdUZXh0TGF5b3V0RW5naW5lQmFzZWxpbmU6OmRv
bWluYW50QmFzZWxpbmVUb0FsaWdubWVudEJhc2VsaW5lKGJvb2wgaXNWZXJ0aWNhbFRleHQsIGNv
bnN0IFJlbmRlck9iamVjdCogdGV4dFJlbmRlcmVyKSBjb25zdAorQWxpZ25tZW50QmFzZWxpbmUg
U1ZHVGV4dExheW91dEVuZ2luZUJhc2VsaW5lOjpkb21pbmFudEJhc2VsaW5lVG9BbGlnbm1lbnRC
YXNlbGluZShib29sIGlzVmVydGljYWxUZXh0LCBjb25zdCBSZW5kZXJPYmplY3QqIHRleHRSZW5k
ZXJlcikgY29uc3QKIHsKICAgICBBU1NFUlQodGV4dFJlbmRlcmVyKTsKICAgICBBU1NFUlQodGV4
dFJlbmRlcmVyLT5wYXJlbnQoKSk7CiAKICAgICBjb25zdCBTVkdSZW5kZXJTdHlsZSYgc3ZnU3R5
bGUgPSB0ZXh0UmVuZGVyZXItPnN0eWxlKCkuc3ZnU3R5bGUoKTsKIAotICAgIEVEb21pbmFudEJh
c2VsaW5lIGJhc2VsaW5lID0gc3ZnU3R5bGUuZG9taW5hbnRCYXNlbGluZSgpOwotICAgIGlmIChi
YXNlbGluZSA9PSBEQl9BVVRPKSB7CisgICAgRG9taW5hbnRCYXNlbGluZSBiYXNlbGluZSA9IHN2
Z1N0eWxlLmRvbWluYW50QmFzZWxpbmUoKTsKKyAgICBpZiAoYmFzZWxpbmUgPT0gRG9taW5hbnRC
YXNlbGluZTo6QXV0bykgewogICAgICAgICBpZiAoaXNWZXJ0aWNhbFRleHQpCi0gICAgICAgICAg
ICBiYXNlbGluZSA9IERCX0NFTlRSQUw7CisgICAgICAgICAgICBiYXNlbGluZSA9IERvbWluYW50
QmFzZWxpbmU6OkNlbnRyYWw7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGJhc2VsaW5lID0g
REJfQUxQSEFCRVRJQzsKKyAgICAgICAgICAgIGJhc2VsaW5lID0gRG9taW5hbnRCYXNlbGluZTo6
QWxwaGFiZXRpYzsKICAgICB9CiAKICAgICBzd2l0Y2ggKGJhc2VsaW5lKSB7Ci0gICAgY2FzZSBE
Ql9VU0VfU0NSSVBUOgorICAgIGNhc2UgRG9taW5hbnRCYXNlbGluZTo6VXNlU2NyaXB0OgogICAg
ICAgICAvLyBGSVhNRTogVGhlIGRvbWluYW50LWJhc2VsaW5lIGFuZCB0aGUgYmFzZWxpbmUtdGFi
bGUgY29tcG9uZW50cyBhcmUgc2V0IGJ5IGRldGVybWluaW5nIHRoZSBwcmVkb21pbmFudCBzY3Jp
cHQgb2YgdGhlIGNoYXJhY3RlciBkYXRhIGNvbnRlbnQuCi0gICAgICAgIHJldHVybiBBQl9BTFBI
QUJFVElDOwotICAgIGNhc2UgREJfTk9fQ0hBTkdFOgorICAgICAgICByZXR1cm4gQWxpZ25tZW50
QmFzZWxpbmU6OkFscGhhYmV0aWM7CisgICAgY2FzZSBEb21pbmFudEJhc2VsaW5lOjpOb0NoYW5n
ZToKICAgICAgICAgcmV0dXJuIGRvbWluYW50QmFzZWxpbmVUb0FsaWdubWVudEJhc2VsaW5lKGlz
VmVydGljYWxUZXh0LCB0ZXh0UmVuZGVyZXItPnBhcmVudCgpKTsKLSAgICBjYXNlIERCX1JFU0VU
X1NJWkU6CisgICAgY2FzZSBEb21pbmFudEJhc2VsaW5lOjpSZXNldFNpemU6CiAgICAgICAgIHJl
dHVybiBkb21pbmFudEJhc2VsaW5lVG9BbGlnbm1lbnRCYXNlbGluZShpc1ZlcnRpY2FsVGV4dCwg
dGV4dFJlbmRlcmVyLT5wYXJlbnQoKSk7Ci0gICAgY2FzZSBEQl9JREVPR1JBUEhJQzoKLSAgICAg
ICAgcmV0dXJuIEFCX0lERU9HUkFQSElDOwotICAgIGNhc2UgREJfQUxQSEFCRVRJQzoKLSAgICAg
ICAgcmV0dXJuIEFCX0FMUEhBQkVUSUM7Ci0gICAgY2FzZSBEQl9IQU5HSU5HOgotICAgICAgICBy
ZXR1cm4gQUJfSEFOR0lORzsKLSAgICBjYXNlIERCX01BVEhFTUFUSUNBTDoKLSAgICAgICAgcmV0
dXJuIEFCX01BVEhFTUFUSUNBTDsKLSAgICBjYXNlIERCX0NFTlRSQUw6Ci0gICAgICAgIHJldHVy
biBBQl9DRU5UUkFMOwotICAgIGNhc2UgREJfTUlERExFOgotICAgICAgICByZXR1cm4gQUJfTUlE
RExFOwotICAgIGNhc2UgREJfVEVYVF9BRlRFUl9FREdFOgotICAgICAgICByZXR1cm4gQUJfVEVY
VF9BRlRFUl9FREdFOwotICAgIGNhc2UgREJfVEVYVF9CRUZPUkVfRURHRToKLSAgICAgICAgcmV0
dXJuIEFCX1RFWFRfQkVGT1JFX0VER0U7CisgICAgY2FzZSBEb21pbmFudEJhc2VsaW5lOjpJZGVv
Z3JhcGhpYzoKKyAgICAgICAgcmV0dXJuIEFsaWdubWVudEJhc2VsaW5lOjpJZGVvZ3JhcGhpYzsK
KyAgICBjYXNlIERvbWluYW50QmFzZWxpbmU6OkFscGhhYmV0aWM6CisgICAgICAgIHJldHVybiBB
bGlnbm1lbnRCYXNlbGluZTo6QWxwaGFiZXRpYzsKKyAgICBjYXNlIERvbWluYW50QmFzZWxpbmU6
Okhhbmdpbmc6CisgICAgICAgIHJldHVybiBBbGlnbm1lbnRCYXNlbGluZTo6SGFuZ2luZzsKKyAg
ICBjYXNlIERvbWluYW50QmFzZWxpbmU6Ok1hdGhlbWF0aWNhbDoKKyAgICAgICAgcmV0dXJuIEFs
aWdubWVudEJhc2VsaW5lOjpNYXRoZW1hdGljYWw7CisgICAgY2FzZSBEb21pbmFudEJhc2VsaW5l
OjpDZW50cmFsOgorICAgICAgICByZXR1cm4gQWxpZ25tZW50QmFzZWxpbmU6OkNlbnRyYWw7Cisg
ICAgY2FzZSBEb21pbmFudEJhc2VsaW5lOjpNaWRkbGU6CisgICAgICAgIHJldHVybiBBbGlnbm1l
bnRCYXNlbGluZTo6TWlkZGxlOworICAgIGNhc2UgRG9taW5hbnRCYXNlbGluZTo6VGV4dEFmdGVy
RWRnZToKKyAgICAgICAgcmV0dXJuIEFsaWdubWVudEJhc2VsaW5lOjpUZXh0QWZ0ZXJFZGdlOwor
ICAgIGNhc2UgRG9taW5hbnRCYXNlbGluZTo6VGV4dEJlZm9yZUVkZ2U6CisgICAgICAgIHJldHVy
biBBbGlnbm1lbnRCYXNlbGluZTo6VGV4dEJlZm9yZUVkZ2U7CiAgICAgZGVmYXVsdDoKICAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiBBQl9BVVRPOworICAgICAg
ICByZXR1cm4gQWxpZ25tZW50QmFzZWxpbmU6OkF1dG87CiAgICAgfQogfQogCkBAIC0xMDgsMzYg
KzEwOCwzNyBAQCBmbG9hdCBTVkdUZXh0TGF5b3V0RW5naW5lQmFzZWxpbmU6OmNhbGN1CiAgICAg
Y29uc3QgUmVuZGVyT2JqZWN0KiB0ZXh0UmVuZGVyZXJQYXJlbnQgPSB0ZXh0UmVuZGVyZXIucGFy
ZW50KCk7CiAgICAgQVNTRVJUKHRleHRSZW5kZXJlclBhcmVudCk7CiAKLSAgICBFQWxpZ25tZW50
QmFzZWxpbmUgYmFzZWxpbmUgPSB0ZXh0UmVuZGVyZXIuc3R5bGUoKS5zdmdTdHlsZSgpLmFsaWdu
bWVudEJhc2VsaW5lKCk7Ci0gICAgaWYgKGJhc2VsaW5lID09IEFCX0FVVE8pIHsKKyAgICBBbGln
bm1lbnRCYXNlbGluZSBiYXNlbGluZSA9IHRleHRSZW5kZXJlci5zdHlsZSgpLnN2Z1N0eWxlKCku
YWxpZ25tZW50QmFzZWxpbmUoKTsKKyAgICBpZiAoYmFzZWxpbmUgPT0gQWxpZ25tZW50QmFzZWxp
bmU6OkF1dG8pIHsKICAgICAgICAgYmFzZWxpbmUgPSBkb21pbmFudEJhc2VsaW5lVG9BbGlnbm1l
bnRCYXNlbGluZShpc1ZlcnRpY2FsVGV4dCwgdGV4dFJlbmRlcmVyUGFyZW50KTsKLSAgICAgICAg
QVNTRVJUKGJhc2VsaW5lICE9IEFCX0FVVE8pOworICAgICAgICBBU1NFUlQoYmFzZWxpbmUgIT0g
QWxpZ25tZW50QmFzZWxpbmU6OkF1dG8pOwogICAgIH0KIAogICAgIGNvbnN0IEZvbnRNZXRyaWNz
JiBmb250TWV0cmljcyA9IG1fZm9udC5mb250TWV0cmljcygpOwogCiAgICAgLy8gTm90ZTogaHR0
cDovL3dpa2kuYXBhY2hlLm9yZy94bWxncmFwaGljcy1mb3AvTGluZUxheW91dC9BbGlnbm1lbnRI
YW5kbGluZwogICAgIHN3aXRjaCAoYmFzZWxpbmUpIHsKLSAgICBjYXNlIEFCX0JBU0VMSU5FOgot
ICAgICAgICByZXR1cm4gZG9taW5hbnRCYXNlbGluZVRvQWxpZ25tZW50QmFzZWxpbmUoaXNWZXJ0
aWNhbFRleHQsIHRleHRSZW5kZXJlclBhcmVudCk7Ci0gICAgY2FzZSBBQl9CRUZPUkVfRURHRToK
LSAgICBjYXNlIEFCX1RFWFRfQkVGT1JFX0VER0U6CisgICAgY2FzZSBBbGlnbm1lbnRCYXNlbGlu
ZTo6QmFzZWxpbmU6CisgICAgICAgIC8vIEZJWE1FOiBUaGlzIHNlZW1zIHdyb25nLiBXaHkgYXJl
IHdlIHJldHVybmluZyBhbiBlbnVtIHZhbHVlIGNvbnZlcnRlZCB0byBhIGZsb2F0PworICAgICAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGRvbWluYW50QmFzZWxpbmVUb0FsaWdubWVudEJh
c2VsaW5lKGlzVmVydGljYWxUZXh0LCB0ZXh0UmVuZGVyZXJQYXJlbnQpKTsKKyAgICBjYXNlIEFs
aWdubWVudEJhc2VsaW5lOjpCZWZvcmVFZGdlOgorICAgIGNhc2UgQWxpZ25tZW50QmFzZWxpbmU6
OlRleHRCZWZvcmVFZGdlOgogICAgICAgICByZXR1cm4gZm9udE1ldHJpY3MuZmxvYXRBc2NlbnQo
KTsKLSAgICBjYXNlIEFCX01JRERMRToKKyAgICBjYXNlIEFsaWdubWVudEJhc2VsaW5lOjpNaWRk
bGU6CiAgICAgICAgIHJldHVybiBmb250TWV0cmljcy54SGVpZ2h0KCkgLyAyOwotICAgIGNhc2Ug
QUJfQ0VOVFJBTDoKKyAgICBjYXNlIEFsaWdubWVudEJhc2VsaW5lOjpDZW50cmFsOgogICAgICAg
ICByZXR1cm4gKGZvbnRNZXRyaWNzLmZsb2F0QXNjZW50KCkgLSBmb250TWV0cmljcy5mbG9hdERl
c2NlbnQoKSkgLyAyOwotICAgIGNhc2UgQUJfQUZURVJfRURHRToKLSAgICBjYXNlIEFCX1RFWFRf
QUZURVJfRURHRToKLSAgICBjYXNlIEFCX0lERU9HUkFQSElDOgorICAgIGNhc2UgQWxpZ25tZW50
QmFzZWxpbmU6OkFmdGVyRWRnZToKKyAgICBjYXNlIEFsaWdubWVudEJhc2VsaW5lOjpUZXh0QWZ0
ZXJFZGdlOgorICAgIGNhc2UgQWxpZ25tZW50QmFzZWxpbmU6OklkZW9ncmFwaGljOgogICAgICAg
ICByZXR1cm4gZm9udE1ldHJpY3MuZmxvYXREZXNjZW50KCk7Ci0gICAgY2FzZSBBQl9BTFBIQUJF
VElDOgorICAgIGNhc2UgQWxpZ25tZW50QmFzZWxpbmU6OkFscGhhYmV0aWM6CiAgICAgICAgIHJl
dHVybiAwOwotICAgIGNhc2UgQUJfSEFOR0lORzoKKyAgICBjYXNlIEFsaWdubWVudEJhc2VsaW5l
OjpIYW5naW5nOgogICAgICAgICByZXR1cm4gZm9udE1ldHJpY3MuZmxvYXRBc2NlbnQoKSAqIDgg
LyAxMC5mOwotICAgIGNhc2UgQUJfTUFUSEVNQVRJQ0FMOgorICAgIGNhc2UgQWxpZ25tZW50QmFz
ZWxpbmU6Ok1hdGhlbWF0aWNhbDoKICAgICAgICAgcmV0dXJuIGZvbnRNZXRyaWNzLmZsb2F0QXNj
ZW50KCkgLyAyOwotICAgIGRlZmF1bHQ6CisgICAgY2FzZSBBbGlnbm1lbnRCYXNlbGluZTo6QXV0
bzoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybiAwOwogICAg
IH0KQEAgLTE0Niw3ICsxNDcsNyBAQCBmbG9hdCBTVkdUZXh0TGF5b3V0RW5naW5lQmFzZWxpbmU6
OmNhbGN1CiBmbG9hdCBTVkdUZXh0TGF5b3V0RW5naW5lQmFzZWxpbmU6OmNhbGN1bGF0ZUdseXBo
T3JpZW50YXRpb25BbmdsZShib29sIGlzVmVydGljYWxUZXh0LCBjb25zdCBTVkdSZW5kZXJTdHls
ZSYgc3R5bGUsIGNvbnN0IFVDaGFyJiBjaGFyYWN0ZXIpIGNvbnN0CiB7CiAgICAgc3dpdGNoIChp
c1ZlcnRpY2FsVGV4dCA/IHN0eWxlLmdseXBoT3JpZW50YXRpb25WZXJ0aWNhbCgpIDogc3R5bGUu
Z2x5cGhPcmllbnRhdGlvbkhvcml6b250YWwoKSkgewotICAgIGNhc2UgR09fQVVUTzoKKyAgICBj
YXNlIEdseXBoT3JpZW50YXRpb246OkF1dG86CiAgICAgICAgIC8vIFNwZWM6IEZ1bGx3aWR0aCBp
ZGVvZ3JhcGhpYyBhbmQgZnVsbHdpZHRoIExhdGluIHRleHQgd2lsbCBiZSBzZXQgd2l0aCBhIGds
eXBoLW9yaWVudGF0aW9uIG9mIDAtZGVncmVlcy4KICAgICAgICAgLy8gVGV4dCB3aGljaCBpcyBu
b3QgZnVsbHdpZHRoIHdpbGwgYmUgc2V0IHdpdGggYSBnbHlwaC1vcmllbnRhdGlvbiBvZiA5MC1k
ZWdyZWVzLgogICAgICAgICAvLyBGSVhNRTogVGhlcmUncyBub3QgYW4gYWNjdXJhdGUgd2F5IHRv
IHRlbGwgaWYgdGV4dCBpcyBmdWxsd2lkdGggYnkgbG9va2luZyBhdCBhIHNpbmdsZSBjaGFyYWN0
ZXIuCkBAIC0xNjUsMTMgKzE2NiwxMyBAQCBmbG9hdCBTVkdUZXh0TGF5b3V0RW5naW5lQmFzZWxp
bmU6OmNhbGN1CiAgICAgICAgIH0KICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAg
ICAgIGJyZWFrOwotICAgIGNhc2UgR09fOTBERUc6CisgICAgY2FzZSBHbHlwaE9yaWVudGF0aW9u
OjpEZWdyZWVzOTA6CiAgICAgICAgIHJldHVybiA5MDsKLSAgICBjYXNlIEdPXzE4MERFRzoKKyAg
ICBjYXNlIEdseXBoT3JpZW50YXRpb246OkRlZ3JlZXMxODA6CiAgICAgICAgIHJldHVybiAxODA7
Ci0gICAgY2FzZSBHT18yNzBERUc6CisgICAgY2FzZSBHbHlwaE9yaWVudGF0aW9uOjpEZWdyZWVz
MjcwOgogICAgICAgICByZXR1cm4gMjcwOwotICAgIGNhc2UgR09fMERFRzoKKyAgICBjYXNlIEds
eXBoT3JpZW50YXRpb246OkRlZ3JlZXMwOgogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1NWR1RleHRMYXlvdXRFbmdpbmVCYXNlbGluZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dExheW91dEVuZ2luZUJhc2VsaW5lLmgJKHJldmlzaW9u
IDIzMjE4OSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dExheW91dEVu
Z2luZUJhc2VsaW5lLmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgog
ICAgIGZsb2F0IGNhbGN1bGF0ZUdseXBoQWR2YW5jZUFuZE9yaWVudGF0aW9uKGJvb2wgaXNWZXJ0
aWNhbFRleHQsIFNWR1RleHRNZXRyaWNzJiwgZmxvYXQgYW5nbGUsIGZsb2F0JiB4T3JpZW50YXRp
b25TaGlmdCwgZmxvYXQmIHlPcmllbnRhdGlvblNoaWZ0KSBjb25zdDsKIAogcHJpdmF0ZToKLSAg
ICBFQWxpZ25tZW50QmFzZWxpbmUgZG9taW5hbnRCYXNlbGluZVRvQWxpZ25tZW50QmFzZWxpbmUo
Ym9vbCBpc1ZlcnRpY2FsVGV4dCwgY29uc3QgUmVuZGVyT2JqZWN0KiB0ZXh0UmVuZGVyZXIpIGNv
bnN0OworICAgIEFsaWdubWVudEJhc2VsaW5lIGRvbWluYW50QmFzZWxpbmVUb0FsaWdubWVudEJh
c2VsaW5lKGJvb2wgaXNWZXJ0aWNhbFRleHQsIGNvbnN0IFJlbmRlck9iamVjdCogdGV4dFJlbmRl
cmVyKSBjb25zdDsKIAogICAgIGNvbnN0IEZvbnRDYXNjYWRlJiBtX2ZvbnQ7CiB9Owo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>341438</attachid>
            <date>2018-05-27 17:41:09 -0700</date>
            <delta_ts>2018-05-28 08:20:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-186024-20180527174107.patch</filename>
            <type>text/plain</type>
            <size>139737</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzMjIyOCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIyOSBAQAorMjAxOC0wNS0yNyAgU2FtIFdl
aW5pZyAgPHNhbUB3ZWJraXQub3JnPgorCisgICAgICAgIE1vZGVybml6ZSBTVkdSZW5kZXJTdHls
ZURlZnMuaAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTg2MDI0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
TW9kZXJuaXplZCB0aGUgc2V0IG9mIGVudW1zIGluIFNWR1JlbmRlclN0eWxlRGVmcy5oIGFuZCBX
aW5kUnVsZS5oIGJ5OgorICAgICAgICAgICAgLSBDb252ZXJ0aW5nIHRoZW0gdG8gZW51bSBjbGFz
c2VzCisgICAgICAgICAgICAtIFJlbmFtaW5nIHRoZW0gdG8gcmVtb3ZlIHVubmVjZXNzYXJ5IHBy
ZWZpeCAnRSdzCisgICAgICAgICAgICAtIFJlbmFtaW5nIHZhbHVlcyB0byB0YWtlIGFkdmFudGFn
ZSBvZiBlbnVtIGNsYXNzIHNjb3BpbmcgKGUuZy4gU3R5bGVEaWZmZXJlbmNlRXF1YWwgLT4gU3R5
bGVEaWZmZXJlbmNlOjpFcXVhbCkKKyAgICAgICAgICAgIC0gUmVuYW1pbmcgdG8gbWF0Y2ggbW9k
ZXJuIGNvbnZlbnRpb25zIChlLmcgQk5PTkUgLT4gTm9uZSkKKworICAgICAgICBNb2Rlcm5pemVz
IHRoZSBmb2xsb3dpbmcgZW51bXM6CisgICAgICAgICAgICBTVkdQYWludFR5cGUKKyAgICAgICAg
ICAgIEJhc2VsaW5lU2hpZnQgKHJlbmFtZWQgZnJvbSBFQmFzZWxpbmVTaGlmdCkKKyAgICAgICAg
ICAgIFRleHRBbmNob3IgKHJlbmFtZWQgZnJvbSBFVGV4dEFuY2hvcikKKyAgICAgICAgICAgIENv
bG9ySW50ZXJwb2xhdGlvbiAocmVuYW1lZCBmcm9tIEVDb2xvckludGVycG9sYXRpb24pCisgICAg
ICAgICAgICBDb2xvclJlbmRlcmluZyAocmVuYW1lZCBmcm9tIEVDb2xvclJlbmRlcmluZykKKyAg
ICAgICAgICAgIFNoYXBlUmVuZGVyaW5nIChyZW5hbWVkIGZyb20gRVNoYXBlUmVuZGVyaW5nKQor
ICAgICAgICAgICAgR2x5cGhPcmllbnRhdGlvbiAocmVuYW1lZCBmcm9tIEVHbHlwaE9yaWVudGF0
aW9uKQorICAgICAgICAgICAgQWxpZ25tZW50QmFzZWxpbmUgKHJlbmFtZWQgZnJvbSBFQWxpZ25t
ZW50QmFzZWxpbmUpCisgICAgICAgICAgICBEb21pbmFudEJhc2VsaW5lIChyZW5hbWVkIGZyb20g
RURvbWluYW50QmFzZWxpbmUpCisgICAgICAgICAgICBWZWN0b3JFZmZlY3QgKHJlbmFtZWQgZnJv
bSBFVmVjdG9yRWZmZWN0KQorICAgICAgICAgICAgQnVmZmVyZWRSZW5kZXJpbmcgKHJlbmFtZWQg
ZnJvbSBFQnVmZmVyZWRSZW5kZXJpbmcpCisgICAgICAgICAgICBNYXNrVHlwZSAocmVuYW1lZCBm
cm9tIEVNYXNrVHlwZSkKKyAgICAgICAgICAgIFdpbmRSdWxlCisKKyAgICAgICAgKiBjc3MvQ1NT
QmFzaWNTaGFwZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YnVpbGRQYXRoU3RyaW5nKToKKyAg
ICAgICAgKFdlYkNvcmU6OmJ1aWxkUG9seWdvblN0cmluZyk6CisgICAgICAgICogY3NzL0NTU0Jh
c2ljU2hhcGVzLmg6CisgICAgICAgICogY3NzL0NTU1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3MuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZSk6
CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgV2luZFJ1bGUg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIEFs
aWdubWVudEJhc2VsaW5lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZh
bHVlOjpvcGVyYXRvciBCdWZmZXJlZFJlbmRlcmluZyBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgQ29sb3JJbnRlcnBvbGF0aW9uIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBDb2xvclJlbmRl
cmluZyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0
b3IgRG9taW5hbnRCYXNlbGluZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRp
dmVWYWx1ZTo6b3BlcmF0b3IgU2hhcGVSZW5kZXJpbmcgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIFRleHRBbmNob3IgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIFZlY3RvckVmZmVjdCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgTWFza1R5
cGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9y
IEVBbGlnbm1lbnRCYXNlbGluZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpD
U1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgRUJ1ZmZlcmVkUmVuZGVyaW5nIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBFQ29s
b3JJbnRlcnBvbGF0aW9uIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNTU1By
aW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBFQ29sb3JSZW5kZXJpbmcgY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIEVEb21pbmFudEJh
c2VsaW5lIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZh
bHVlOjpvcGVyYXRvciBFU2hhcGVSZW5kZXJpbmcgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIEVUZXh0QW5jaG9yIGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBF
VmVjdG9yRWZmZWN0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1p
dGl2ZVZhbHVlOjpvcGVyYXRvciBFTWFza1R5cGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAq
IGNzcy9TVkdDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Z2x5cGhPcmllbnRhdGlvblRvQ1NTUHJpbWl0aXZlVmFsdWUpOgorICAgICAgICAoV2ViQ29y
ZTo6Q29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6YWRqdXN0U1ZHUGFpbnRGb3JDdXJyZW50Q29sb3Ig
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6c3ZnUHJv
cGVydHlWYWx1ZSk6CisgICAgICAgICogY3NzL1N0eWxlQnVpbGRlckNvbnZlcnRlci5oOgorICAg
ICAgICAoV2ViQ29yZTo6U3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0R2x5cGhPcmllbnRh
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRH
bHlwaE9yaWVudGF0aW9uT3JBdXRvKToKKyAgICAgICAgKiBjc3MvU3R5bGVCdWlsZGVyQ3VzdG9t
Lmg6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVCYXNl
bGluZVNoaWZ0KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlW
YWx1ZUZpbGwpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZh
bHVlU3Ryb2tlKToKKyAgICAgICAgKiBjc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmNvbnN1bWVCYXNpY1NoYXBlUG9seWdvbik6CisgICAgICAgIChX
ZWJDb3JlOjpjb25zdW1lQmFzaWNTaGFwZVBhdGgpOgorICAgICAgICAqIGh0bWwvY2FudmFzL0Nh
bnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9XaW5k
UnVsZSk6CisgICAgICAgICogcGFnZS9hbmltYXRpb24vQ1NTUHJvcGVydHlBbmltYXRpb24uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UHJvcGVydHlXcmFwcGVyU1ZHUGFpbnQ6OlByb3BlcnR5V3Jh
cHBlclNWR1BhaW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFBvbHlnb24u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RmxvYXRQb2x5Z29uOjpjb250YWlucyBjb25zdCk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3RXaXRoUm91bmRlZEhvbGUpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NMYXllcjo6c2hhcGVMYXllcldpbmRSdWxlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NUeXBlcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvcjw8KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9QYXRoLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvU2hhZG93Qmx1ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dCbHVyOjpkcmF3SW5z
ZXRTaGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Qmx1cjo6ZHJhd0luc2V0U2hhZG93
V2l0aG91dFRpbGluZyk6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dCbHVyOjpkcmF3SW5zZXRT
aGFkb3dXaXRoVGlsaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9XaW5kUnVsZS5o
OgorICAgICAgICAoKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9j
b2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5tbToKKyAgICAgICAgKFBsYXRmb3JtQ0FMYXllckNv
Y29hOjpzaGFwZVdpbmRSdWxlIGNvbnN0KToKKyAgICAgICAgKFBsYXRmb3JtQ0FMYXllckNvY29h
OjpzZXRTaGFwZVdpbmRSdWxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFw
aGljc0NvbnRleHRDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjYWxjdWxhdGVEcmF3aW5nTW9k
ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmZpbGxQYXRoKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3RXaXRoUm91bmRlZEhvbGUpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpjbGlwUGF0aCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0aENHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhdGg6
OmNvbnRhaW5zIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZp
ZGVvU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZVZpZGVvU291cmNl
OjpkcmF3QW5pbWF0aW9uKToKKyAgICAgICAgKiByZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVy
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0UmVuZGVyZXI6OmJ1aWxkUmVm
ZXJlbmNlRmlsdGVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3Qu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Qm9yZGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0OjpjbGlwQm9yZGVyU2lk
ZVBvbHlnb24pOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckVsZW1lbnQ6OnBhaW50T3V0bGluZSk6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlckxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpj
b21wdXRlQ2xpcFBhdGggY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9CYXNpY1No
YXBlcy5oOgorICAgICAgICAoV2ViQ29yZTo6QmFzaWNTaGFwZTo6d2luZFJ1bGUgY29uc3QpOgor
ICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyU3R5bGU6OmZpbGxQYWludFR5cGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyU3R5bGU6OnNldEZpbGxQYWludENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clN0eWxlOjpzdHJva2VQYWludFR5cGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
U3R5bGU6OnNldFN0cm9rZVBhaW50Q29sb3IpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9T
VkdSZW5kZXJTdHlsZS5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVuZGVyU3R5bGU6OmluaXRp
YWxBbGlnbm1lbnRCYXNlbGluZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJTdHlsZTo6
aW5pdGlhbERvbWluYW50QmFzZWxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVuZGVyU3R5
bGU6OmluaXRpYWxCYXNlbGluZVNoaWZ0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1JlbmRlclN0
eWxlOjppbml0aWFsVmVjdG9yRWZmZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1JlbmRlclN0
eWxlOjppbml0aWFsQnVmZmVyZWRSZW5kZXJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVu
ZGVyU3R5bGU6OmluaXRpYWxDbGlwUnVsZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJT
dHlsZTo6aW5pdGlhbENvbG9ySW50ZXJwb2xhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTVkdS
ZW5kZXJTdHlsZTo6aW5pdGlhbENvbG9ySW50ZXJwb2xhdGlvbkZpbHRlcnMpOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHUmVuZGVyU3R5bGU6OmluaXRpYWxDb2xvclJlbmRlcmluZyk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdSZW5kZXJTdHlsZTo6aW5pdGlhbEZpbGxSdWxlKToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR1JlbmRlclN0eWxlOjppbml0aWFsU2hhcGVSZW5kZXJpbmcpOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHUmVuZGVyU3R5bGU6OmluaXRpYWxUZXh0QW5jaG9yKToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR1JlbmRlclN0eWxlOjppbml0aWFsR2x5cGhPcmllbnRhdGlvbkhvcml6b250YWwp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVuZGVyU3R5bGU6OmluaXRpYWxHbHlwaE9yaWVudGF0
aW9uVmVydGljYWwpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVuZGVyU3R5bGU6OmluaXRpYWxG
aWxsUGFpbnRUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1JlbmRlclN0eWxlOjppbml0aWFs
U3Ryb2tlUGFpbnRUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1JlbmRlclN0eWxlOjppbml0
aWFsTWFza1R5cGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVuZGVyU3R5bGU6OnNldEFsaWdu
bWVudEJhc2VsaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1JlbmRlclN0eWxlOjpzZXREb21p
bmFudEJhc2VsaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1JlbmRlclN0eWxlOjpzZXRCYXNl
bGluZVNoaWZ0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1JlbmRlclN0eWxlOjpzZXRWZWN0b3JF
ZmZlY3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVuZGVyU3R5bGU6OnNldEJ1ZmZlcmVkUmVu
ZGVyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1JlbmRlclN0eWxlOjpzZXRDbGlwUnVsZSk6
CisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJTdHlsZTo6c2V0Q29sb3JJbnRlcnBvbGF0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1JlbmRlclN0eWxlOjpzZXRDb2xvckludGVycG9sYXRp
b25GaWx0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1JlbmRlclN0eWxlOjpzZXRDb2xvclJl
bmRlcmluZyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJTdHlsZTo6c2V0RmlsbFJ1bGUp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVuZGVyU3R5bGU6OnNldFNoYXBlUmVuZGVyaW5nKToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR1JlbmRlclN0eWxlOjpzZXRUZXh0QW5jaG9yKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR1JlbmRlclN0eWxlOjpzZXRHbHlwaE9yaWVudGF0aW9uSG9yaXpvbnRh
bCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJTdHlsZTo6c2V0R2x5cGhPcmllbnRhdGlv
blZlcnRpY2FsKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1JlbmRlclN0eWxlOjpzZXRNYXNrVHlw
ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJTdHlsZTo6YWxpZ25tZW50QmFzZWxpbmUg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVuZGVyU3R5bGU6OmRvbWluYW50QmFzZWxp
bmUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVuZGVyU3R5bGU6OmJhc2VsaW5lU2hp
ZnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVuZGVyU3R5bGU6OnZlY3RvckVmZmVj
dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJTdHlsZTo6YnVmZmVyZWRSZW5k
ZXJpbmcgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVuZGVyU3R5bGU6OmNsaXBSdWxl
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1JlbmRlclN0eWxlOjpjb2xvckludGVycG9s
YXRpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVuZGVyU3R5bGU6OmNvbG9ySW50
ZXJwb2xhdGlvbkZpbHRlcnMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVuZGVyU3R5
bGU6OmNvbG9yUmVuZGVyaW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1JlbmRlclN0
eWxlOjpmaWxsUnVsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJTdHlsZTo6
c2hhcGVSZW5kZXJpbmcgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVuZGVyU3R5bGU6
OnRleHRBbmNob3IgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVuZGVyU3R5bGU6Omds
eXBoT3JpZW50YXRpb25Ib3Jpem9udGFsIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Jl
bmRlclN0eWxlOjpnbHlwaE9yaWVudGF0aW9uVmVydGljYWwgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHUmVuZGVyU3R5bGU6OmZpbGxQYWludFR5cGUgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHUmVuZGVyU3R5bGU6OnN0cm9rZVBhaW50VHlwZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdSZW5kZXJTdHlsZTo6bWFza1R5cGUgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHUmVuZGVyU3R5bGU6OnZpc2l0ZWRMaW5rRmlsbFBhaW50VHlwZSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdSZW5kZXJTdHlsZTo6dmlzaXRlZExpbmtTdHJva2VQYWludFR5cGUg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVuZGVyU3R5bGU6Omhhc1N0cm9rZSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJTdHlsZTo6aGFzRmlsbCBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJTdHlsZTo6c2V0Qml0RGVmYXVsdHMpOgorICAgICAg
ICAqIHJlbmRlcmluZy9zdHlsZS9TVkdSZW5kZXJTdHlsZURlZnMuaDoKKyAgICAgICAgKFdlYkNv
cmU6OlN0eWxlRmlsbERhdGE6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUZpbGxE
YXRhOjpvcGVyYXRvciE9IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlU3Ryb2tlRGF0
YTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlU3Ryb2tlRGF0YTo6b3BlcmF0b3Ih
PSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVN0b3BEYXRhOjpjcmVhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6U3R5bGVTdG9wRGF0YTo6b3BlcmF0b3IhPSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpTdHlsZVRleHREYXRhOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5
bGVUZXh0RGF0YTo6b3BlcmF0b3IhPSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZU1p
c2NEYXRhOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVNaXNjRGF0YTo6b3BlcmF0
b3IhPSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVNoYWRvd1NWR0RhdGE6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVNoYWRvd1NWR0RhdGE6Om9wZXJhdG9yIT0gY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvdXJjZURhdGE6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpTdHlsZVJlc291cmNlRGF0YTo6b3BlcmF0b3IhPSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpTdHlsZUluaGVyaXRlZFJlc291cmNlRGF0YTo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlN0eWxlSW5oZXJpdGVkUmVzb3VyY2VEYXRhOjpvcGVyYXRvciE9IGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlTGF5b3V0RGF0YTo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OlN0eWxlTGF5b3V0RGF0YTo6b3BlcmF0b3IhPSBjb25zdCk6CisgICAgICAgICgp
OiBEZWxldGVkLgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHSW1hZ2U6OnBhaW50KToKKyAgICAgICAgKiByZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1JlY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZH
UmVjdDo6dXBkYXRlU2hhcGVGcm9tRWxlbWVudCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZXF1ZXN0UGFpbnRpbmdS
ZXNvdXJjZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBw
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyOjpwYXRo
T25seUNsaXBwaW5nKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNl
RmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjpi
dWlsZFByaW1pdGl2ZXMgY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
UmVzb3VyY2VHcmFkaWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJj
ZUdyYWRpZW50OjphcHBseVJlc291cmNlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR1Jlc291cmNlTWFza2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291
cmNlTWFza2VyOjphcHBseVJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jl
c291cmNlTWFza2VyOjpkcmF3Q29udGVudEludG9NYXNrSW1hZ2UpOgorICAgICAgICAqIHJlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclNWR1Jlc291cmNlUGF0dGVybjo6YXBwbHlSZXNvdXJjZSk6CisgICAgICAgICogcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJT
VkdTaGFwZTo6cGFpbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUu
aDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1NoYXBlOjpoYXNOb25TY2FsaW5nU3Ryb2tl
IGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclRyZWVBc1RleHQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6d3JpdGVTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjp3cml0
ZVNWR0lubGluZVRleHRCb3gpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHUmVzb3VyY2Vz
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBhaW50aW5nUmVzb3VyY2VGcm9tU1ZHUGFpbnQpOgor
ICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHVGV4dENodW5rLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNWR1RleHRDaHVuazo6U1ZHVGV4dENodW5rKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3Zn
L1NWR1RleHRMYXlvdXRFbmdpbmVCYXNlbGluZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdU
ZXh0TGF5b3V0RW5naW5lQmFzZWxpbmU6OmNhbGN1bGF0ZUJhc2VsaW5lU2hpZnQgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHVGV4dExheW91dEVuZ2luZUJhc2VsaW5lOjpkb21pbmFudEJh
c2VsaW5lVG9BbGlnbm1lbnRCYXNlbGluZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdU
ZXh0TGF5b3V0RW5naW5lQmFzZWxpbmU6OmNhbGN1bGF0ZUFsaWdubWVudEJhc2VsaW5lU2hpZnQg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGV4dExheW91dEVuZ2luZUJhc2VsaW5lOjpj
YWxjdWxhdGVHbHlwaE9yaWVudGF0aW9uQW5nbGUgY29uc3QpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9zdmcvU1ZHVGV4dExheW91dEVuZ2luZUJhc2VsaW5lLmg6CisKIDIwMTgtMDUtMjYgIFphbGFu
IEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXSBJbXBsZW1lbnQgbWFy
Z2luIGNvbXB1dGF0aW9uCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQmFzaWNTaGFwZXMu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NCYXNpY1NoYXBlcy5jcHAJ
KHJldmlzaW9uIDIzMjIyOCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NCYXNpY1NoYXBlcy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTIxMSw3ICsyMTEsNyBAQCBDU1NCYXNpY1NoYXBlUGF0aDo6
Q1NTQmFzaWNTaGFwZVBhdGgoc3RkCiBzdGF0aWMgU3RyaW5nIGJ1aWxkUGF0aFN0cmluZyhjb25z
dCBXaW5kUnVsZSYgd2luZFJ1bGUsIGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBi
b3gpCiB7CiAgICAgU3RyaW5nQnVpbGRlciByZXN1bHQ7Ci0gICAgaWYgKHdpbmRSdWxlID09IFJV
TEVfRVZFTk9ERCkKKyAgICBpZiAod2luZFJ1bGUgPT0gV2luZFJ1bGU6OkV2ZW5PZGQpCiAgICAg
ICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFsKCJwYXRoKGV2ZW5vZGQsICIpOwogICAgIGVsc2UKICAg
ICAgICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoInBhdGgoIik7CkBAIC0yNjUsNyArMjY1LDcgQEAg
c3RhdGljIFN0cmluZyBidWlsZFBvbHlnb25TdHJpbmcoY29uc3QgVwogCiAgICAgcmVzdWx0LnJl
c2VydmVDYXBhY2l0eShsZW5ndGgpOwogCi0gICAgaWYgKHdpbmRSdWxlID09IFJVTEVfRVZFTk9E
RCkKKyAgICBpZiAod2luZFJ1bGUgPT0gV2luZFJ1bGU6OkV2ZW5PZGQpCiAgICAgICAgIHJlc3Vs
dC5hcHBlbmRMaXRlcmFsKGV2ZW5PZGRPcGVuaW5nKTsKICAgICBlbHNlCiAgICAgICAgIHJlc3Vs
dC5hcHBlbmRMaXRlcmFsKG5vblplcm9PcGVuaW5nKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NCYXNpY1NoYXBlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NC
YXNpY1NoYXBlcy5oCShyZXZpc2lvbiAyMzIyMjgpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
QmFzaWNTaGFwZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMTk1LDcgKzE5NSw3IEBAIHB1YmxpYzoK
IAogcHJpdmF0ZToKICAgICBDU1NCYXNpY1NoYXBlUG9seWdvbigpCi0gICAgICAgIDogbV93aW5k
UnVsZShSVUxFX05PTlpFUk8pCisgICAgICAgIDogbV93aW5kUnVsZShXaW5kUnVsZTo6Tm9uWmVy
bykKICAgICB7CiAgICAgfQogCkBAIC0yMzAsNyArMjMwLDcgQEAgcHJpdmF0ZToKICAgICBib29s
IGVxdWFscyhjb25zdCBDU1NCYXNpY1NoYXBlJikgY29uc3QgZmluYWw7CiAKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8U1ZHUGF0aEJ5dGVTdHJlYW0+IG1fYnl0ZVN0cmVhbTsKLSAgICBXaW5kUnVsZSBt
X3dpbmRSdWxlIHsgUlVMRV9OT05aRVJPIH07CisgICAgV2luZFJ1bGUgbV93aW5kUnVsZSB7IFdp
bmRSdWxlOjpOb25aZXJvIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZU1hcHBpbmdzLmgJKHJldmlz
aW9uIDIzMjIyOCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZU1hcHBp
bmdzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQxMTcsMTAgKzQxMTcsMTAgQEAgdGVtcGxhdGU8PiBp
bmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTUwogewogICAgIG1fcHJpbWl0aXZlVW5pdFR5cGUg
PSBDU1NfVkFMVUVfSUQ7CiAgICAgc3dpdGNoIChlKSB7Ci0gICAgY2FzZSBSVUxFX05PTlpFUk86
CisgICAgY2FzZSBXaW5kUnVsZTo6Tm9uWmVybzoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0g
Q1NTVmFsdWVOb256ZXJvOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFJVTEVfRVZFTk9ERDoK
KyAgICBjYXNlIFdpbmRSdWxlOjpFdmVuT2RkOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBD
U1NWYWx1ZUV2ZW5vZGQ7CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTQxMzIsOTcgKzQxMzIs
OTcgQEAgdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9wZQogCiAgICAgc3dp
dGNoIChtX3ZhbHVlLnZhbHVlSUQpIHsKICAgICBjYXNlIENTU1ZhbHVlTm9uemVybzoKLSAgICAg
ICAgcmV0dXJuIFJVTEVfTk9OWkVSTzsKKyAgICAgICAgcmV0dXJuIFdpbmRSdWxlOjpOb25aZXJv
OwogICAgIGNhc2UgQ1NTVmFsdWVFdmVub2RkOgotICAgICAgICByZXR1cm4gUlVMRV9FVkVOT0RE
OworICAgICAgICByZXR1cm4gV2luZFJ1bGU6OkV2ZW5PZGQ7CiAgICAgZGVmYXVsdDoKICAgICAg
ICAgYnJlYWs7CiAgICAgfQogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJu
IFJVTEVfTk9OWkVSTzsKKyAgICByZXR1cm4gV2luZFJ1bGU6Ok5vblplcm87CiB9CiAKIAotdGVt
cGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKEVBbGln
bm1lbnRCYXNlbGluZSBlKQordGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNT
U1ByaW1pdGl2ZVZhbHVlKEFsaWdubWVudEJhc2VsaW5lIGUpCiAgICAgOiBDU1NWYWx1ZShQcmlt
aXRpdmVDbGFzcykKIHsKICAgICBtX3ByaW1pdGl2ZVVuaXRUeXBlID0gQ1NTX1ZBTFVFX0lEOwog
ICAgIHN3aXRjaCAoZSkgewotICAgIGNhc2UgQUJfQVVUTzoKKyAgICBjYXNlIEFsaWdubWVudEJh
c2VsaW5lOjpBdXRvOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUF1dG87CiAg
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgQUJfQkFTRUxJTkU6CisgICAgY2FzZSBBbGlnbm1lbnRC
YXNlbGluZTo6QmFzZWxpbmU6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlQmFz
ZWxpbmU7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQUJfQkVGT1JFX0VER0U6CisgICAgY2Fz
ZSBBbGlnbm1lbnRCYXNlbGluZTo6QmVmb3JlRWRnZToKICAgICAgICAgbV92YWx1ZS52YWx1ZUlE
ID0gQ1NTVmFsdWVCZWZvcmVFZGdlOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEFCX1RFWFRf
QkVGT1JFX0VER0U6CisgICAgY2FzZSBBbGlnbm1lbnRCYXNlbGluZTo6VGV4dEJlZm9yZUVkZ2U6
CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlVGV4dEJlZm9yZUVkZ2U7CiAgICAg
ICAgIGJyZWFrOwotICAgIGNhc2UgQUJfTUlERExFOgorICAgIGNhc2UgQWxpZ25tZW50QmFzZWxp
bmU6Ok1pZGRsZToKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVNaWRkbGU7CiAg
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgQUJfQ0VOVFJBTDoKKyAgICBjYXNlIEFsaWdubWVudEJh
c2VsaW5lOjpDZW50cmFsOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUNlbnRy
YWw7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQUJfQUZURVJfRURHRToKKyAgICBjYXNlIEFs
aWdubWVudEJhc2VsaW5lOjpBZnRlckVkZ2U6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENT
U1ZhbHVlQWZ0ZXJFZGdlOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEFCX1RFWFRfQUZURVJf
RURHRToKKyAgICBjYXNlIEFsaWdubWVudEJhc2VsaW5lOjpUZXh0QWZ0ZXJFZGdlOgogICAgICAg
ICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZVRleHRBZnRlckVkZ2U7CiAgICAgICAgIGJyZWFr
OwotICAgIGNhc2UgQUJfSURFT0dSQVBISUM6CisgICAgY2FzZSBBbGlnbm1lbnRCYXNlbGluZTo6
SWRlb2dyYXBoaWM6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlSWRlb2dyYXBo
aWM7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQUJfQUxQSEFCRVRJQzoKKyAgICBjYXNlIEFs
aWdubWVudEJhc2VsaW5lOjpBbHBoYWJldGljOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBD
U1NWYWx1ZUFscGhhYmV0aWM7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQUJfSEFOR0lORzoK
KyAgICBjYXNlIEFsaWdubWVudEJhc2VsaW5lOjpIYW5naW5nOgogICAgICAgICBtX3ZhbHVlLnZh
bHVlSUQgPSBDU1NWYWx1ZUhhbmdpbmc7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQUJfTUFU
SEVNQVRJQ0FMOgorICAgIGNhc2UgQWxpZ25tZW50QmFzZWxpbmU6Ok1hdGhlbWF0aWNhbDoKICAg
ICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVNYXRoZW1hdGljYWw7CiAgICAgICAgIGJy
ZWFrOwogICAgIH0KIH0KIAotdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9w
ZXJhdG9yIEVBbGlnbm1lbnRCYXNlbGluZSgpIGNvbnN0Cit0ZW1wbGF0ZTw+IGlubGluZSBDU1NQ
cmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgQWxpZ25tZW50QmFzZWxpbmUoKSBjb25zdAogewogICAg
IEFTU0VSVChpc1ZhbHVlSUQoKSk7CiAKICAgICBzd2l0Y2ggKG1fdmFsdWUudmFsdWVJRCkgewog
ICAgIGNhc2UgQ1NTVmFsdWVBdXRvOgotICAgICAgICByZXR1cm4gQUJfQVVUTzsKKyAgICAgICAg
cmV0dXJuIEFsaWdubWVudEJhc2VsaW5lOjpBdXRvOwogICAgIGNhc2UgQ1NTVmFsdWVCYXNlbGlu
ZToKLSAgICAgICAgcmV0dXJuIEFCX0JBU0VMSU5FOworICAgICAgICByZXR1cm4gQWxpZ25tZW50
QmFzZWxpbmU6OkJhc2VsaW5lOwogICAgIGNhc2UgQ1NTVmFsdWVCZWZvcmVFZGdlOgotICAgICAg
ICByZXR1cm4gQUJfQkVGT1JFX0VER0U7CisgICAgICAgIHJldHVybiBBbGlnbm1lbnRCYXNlbGlu
ZTo6QmVmb3JlRWRnZTsKICAgICBjYXNlIENTU1ZhbHVlVGV4dEJlZm9yZUVkZ2U6Ci0gICAgICAg
IHJldHVybiBBQl9URVhUX0JFRk9SRV9FREdFOworICAgICAgICByZXR1cm4gQWxpZ25tZW50QmFz
ZWxpbmU6OlRleHRCZWZvcmVFZGdlOwogICAgIGNhc2UgQ1NTVmFsdWVNaWRkbGU6Ci0gICAgICAg
IHJldHVybiBBQl9NSURETEU7CisgICAgICAgIHJldHVybiBBbGlnbm1lbnRCYXNlbGluZTo6TWlk
ZGxlOwogICAgIGNhc2UgQ1NTVmFsdWVDZW50cmFsOgotICAgICAgICByZXR1cm4gQUJfQ0VOVFJB
TDsKKyAgICAgICAgcmV0dXJuIEFsaWdubWVudEJhc2VsaW5lOjpDZW50cmFsOwogICAgIGNhc2Ug
Q1NTVmFsdWVBZnRlckVkZ2U6Ci0gICAgICAgIHJldHVybiBBQl9BRlRFUl9FREdFOworICAgICAg
ICByZXR1cm4gQWxpZ25tZW50QmFzZWxpbmU6OkFmdGVyRWRnZTsKICAgICBjYXNlIENTU1ZhbHVl
VGV4dEFmdGVyRWRnZToKLSAgICAgICAgcmV0dXJuIEFCX1RFWFRfQUZURVJfRURHRTsKKyAgICAg
ICAgcmV0dXJuIEFsaWdubWVudEJhc2VsaW5lOjpUZXh0QWZ0ZXJFZGdlOwogICAgIGNhc2UgQ1NT
VmFsdWVJZGVvZ3JhcGhpYzoKLSAgICAgICAgcmV0dXJuIEFCX0lERU9HUkFQSElDOworICAgICAg
ICByZXR1cm4gQWxpZ25tZW50QmFzZWxpbmU6OklkZW9ncmFwaGljOwogICAgIGNhc2UgQ1NTVmFs
dWVBbHBoYWJldGljOgotICAgICAgICByZXR1cm4gQUJfQUxQSEFCRVRJQzsKKyAgICAgICAgcmV0
dXJuIEFsaWdubWVudEJhc2VsaW5lOjpBbHBoYWJldGljOwogICAgIGNhc2UgQ1NTVmFsdWVIYW5n
aW5nOgotICAgICAgICByZXR1cm4gQUJfSEFOR0lORzsKKyAgICAgICAgcmV0dXJuIEFsaWdubWVu
dEJhc2VsaW5lOjpIYW5naW5nOwogICAgIGNhc2UgQ1NTVmFsdWVNYXRoZW1hdGljYWw6Ci0gICAg
ICAgIHJldHVybiBBQl9NQVRIRU1BVElDQUw7CisgICAgICAgIHJldHVybiBBbGlnbm1lbnRCYXNl
bGluZTo6TWF0aGVtYXRpY2FsOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0K
IAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBBQl9BVVRPOworICAgIHJl
dHVybiBBbGlnbm1lbnRCYXNlbGluZTo6QXV0bzsKIH0KIAogdGVtcGxhdGU8PiBpbmxpbmUgQ1NT
UHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKEJvcmRlckNvbGxhcHNlIGUpCkBAIC00
NTA5LDI3MCArNDUwOSwyNzAgQEAgdGVtcGxhdGU8aW50IHN1cHBvcnRlZD4gTGVuZ3RoIENTU1By
aW1pdAogICAgIHJldHVybiBMZW5ndGgoVW5kZWZpbmVkKTsKIH0KIAotdGVtcGxhdGU8PiBpbmxp
bmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKEVCdWZmZXJlZFJlbmRlcmlu
ZyBlKQordGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZh
bHVlKEJ1ZmZlcmVkUmVuZGVyaW5nIGUpCiAgICAgOiBDU1NWYWx1ZShQcmltaXRpdmVDbGFzcykK
IHsKICAgICBtX3ByaW1pdGl2ZVVuaXRUeXBlID0gQ1NTX1ZBTFVFX0lEOwogICAgIHN3aXRjaCAo
ZSkgewotICAgIGNhc2UgQlJfQVVUTzoKKyAgICBjYXNlIEJ1ZmZlcmVkUmVuZGVyaW5nOjpBdXRv
OgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUF1dG87CiAgICAgICAgIGJyZWFr
OwotICAgIGNhc2UgQlJfRFlOQU1JQzoKKyAgICBjYXNlIEJ1ZmZlcmVkUmVuZGVyaW5nOjpEeW5h
bWljOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUR5bmFtaWM7CiAgICAgICAg
IGJyZWFrOwotICAgIGNhc2UgQlJfU1RBVElDOgorICAgIGNhc2UgQnVmZmVyZWRSZW5kZXJpbmc6
OlN0YXRpYzoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVTdGF0aWM7CiAgICAg
ICAgIGJyZWFrOwogICAgIH0KIH0KIAotdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFs
dWU6Om9wZXJhdG9yIEVCdWZmZXJlZFJlbmRlcmluZygpIGNvbnN0Cit0ZW1wbGF0ZTw+IGlubGlu
ZSBDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgQnVmZmVyZWRSZW5kZXJpbmcoKSBjb25zdAog
ewogICAgIEFTU0VSVChpc1ZhbHVlSUQoKSk7CiAKICAgICBzd2l0Y2ggKG1fdmFsdWUudmFsdWVJ
RCkgewogICAgIGNhc2UgQ1NTVmFsdWVBdXRvOgotICAgICAgICByZXR1cm4gQlJfQVVUTzsKKyAg
ICAgICAgcmV0dXJuIEJ1ZmZlcmVkUmVuZGVyaW5nOjpBdXRvOwogICAgIGNhc2UgQ1NTVmFsdWVE
eW5hbWljOgotICAgICAgICByZXR1cm4gQlJfRFlOQU1JQzsKKyAgICAgICAgcmV0dXJuIEJ1ZmZl
cmVkUmVuZGVyaW5nOjpEeW5hbWljOwogICAgIGNhc2UgQ1NTVmFsdWVTdGF0aWM6Ci0gICAgICAg
IHJldHVybiBCUl9TVEFUSUM7CisgICAgICAgIHJldHVybiBCdWZmZXJlZFJlbmRlcmluZzo6U3Rh
dGljOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAogICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBCUl9BVVRPOworICAgIHJldHVybiBCdWZmZXJlZFJl
bmRlcmluZzo6QXV0bzsKIH0KIAotdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6
OkNTU1ByaW1pdGl2ZVZhbHVlKEVDb2xvckludGVycG9sYXRpb24gZSkKK3RlbXBsYXRlPD4gaW5s
aW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZShDb2xvckludGVycG9sYXRp
b24gZSkKICAgICA6IENTU1ZhbHVlKFByaW1pdGl2ZUNsYXNzKQogewogICAgIG1fcHJpbWl0aXZl
VW5pdFR5cGUgPSBDU1NfVkFMVUVfSUQ7CiAgICAgc3dpdGNoIChlKSB7Ci0gICAgY2FzZSBDSV9B
VVRPOgorICAgIGNhc2UgQ29sb3JJbnRlcnBvbGF0aW9uOjpBdXRvOgogICAgICAgICBtX3ZhbHVl
LnZhbHVlSUQgPSBDU1NWYWx1ZUF1dG87CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ0lfU1JH
QjoKKyAgICBjYXNlIENvbG9ySW50ZXJwb2xhdGlvbjo6U1JHQjoKICAgICAgICAgbV92YWx1ZS52
YWx1ZUlEID0gQ1NTVmFsdWVTUkdCOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIENJX0xJTkVB
UlJHQjoKKyAgICBjYXNlIENvbG9ySW50ZXJwb2xhdGlvbjo6TGluZWFyUkdCOgogICAgICAgICBt
X3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUxpbmVhclJHQjsKICAgICAgICAgYnJlYWs7CiAgICAg
fQogfQogCi10ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgRUNv
bG9ySW50ZXJwb2xhdGlvbigpIGNvbnN0Cit0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVW
YWx1ZTo6b3BlcmF0b3IgQ29sb3JJbnRlcnBvbGF0aW9uKCkgY29uc3QKIHsKICAgICBBU1NFUlQo
aXNWYWx1ZUlEKCkpOwogCiAgICAgc3dpdGNoIChtX3ZhbHVlLnZhbHVlSUQpIHsKICAgICBjYXNl
IENTU1ZhbHVlU1JHQjoKLSAgICAgICAgcmV0dXJuIENJX1NSR0I7CisgICAgICAgIHJldHVybiBD
b2xvckludGVycG9sYXRpb246OlNSR0I7CiAgICAgY2FzZSBDU1NWYWx1ZUxpbmVhclJHQjoKLSAg
ICAgICAgcmV0dXJuIENJX0xJTkVBUlJHQjsKKyAgICAgICAgcmV0dXJuIENvbG9ySW50ZXJwb2xh
dGlvbjo6TGluZWFyUkdCOwogICAgIGNhc2UgQ1NTVmFsdWVBdXRvOgotICAgICAgICByZXR1cm4g
Q0lfQVVUTzsKKyAgICAgICAgcmV0dXJuIENvbG9ySW50ZXJwb2xhdGlvbjo6QXV0bzsKICAgICBk
ZWZhdWx0OgogICAgICAgICBicmVhazsKICAgICB9CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKLSAgICByZXR1cm4gQ0lfQVVUTzsKKyAgICByZXR1cm4gQ29sb3JJbnRlcnBvbGF0aW9uOjpB
dXRvOwogfQogCi10ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0
aXZlVmFsdWUoRUNvbG9yUmVuZGVyaW5nIGUpCit0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRp
dmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoQ29sb3JSZW5kZXJpbmcgZSkKICAgICA6IENTU1Zh
bHVlKFByaW1pdGl2ZUNsYXNzKQogewogICAgIG1fcHJpbWl0aXZlVW5pdFR5cGUgPSBDU1NfVkFM
VUVfSUQ7CiAgICAgc3dpdGNoIChlKSB7Ci0gICAgY2FzZSBDUl9BVVRPOgorICAgIGNhc2UgQ29s
b3JSZW5kZXJpbmc6OkF1dG86CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlQXV0
bzsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDUl9PUFRJTUlaRVNQRUVEOgorICAgIGNhc2Ug
Q29sb3JSZW5kZXJpbmc6Ok9wdGltaXplU3BlZWQ6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9
IENTU1ZhbHVlT3B0aW1pemVTcGVlZDsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDUl9PUFRJ
TUlaRVFVQUxJVFk6CisgICAgY2FzZSBDb2xvclJlbmRlcmluZzo6T3B0aW1pemVRdWFsaXR5Ogog
ICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZU9wdGltaXplUXVhbGl0eTsKICAgICAg
ICAgYnJlYWs7CiAgICAgfQogfQogCi10ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1
ZTo6b3BlcmF0b3IgRUNvbG9yUmVuZGVyaW5nKCkgY29uc3QKK3RlbXBsYXRlPD4gaW5saW5lIENT
U1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBDb2xvclJlbmRlcmluZygpIGNvbnN0CiB7CiAgICAg
QVNTRVJUKGlzVmFsdWVJRCgpKTsKIAogICAgIHN3aXRjaCAobV92YWx1ZS52YWx1ZUlEKSB7CiAg
ICAgY2FzZSBDU1NWYWx1ZU9wdGltaXplU3BlZWQ6Ci0gICAgICAgIHJldHVybiBDUl9PUFRJTUla
RVNQRUVEOworICAgICAgICByZXR1cm4gQ29sb3JSZW5kZXJpbmc6Ok9wdGltaXplU3BlZWQ7CiAg
ICAgY2FzZSBDU1NWYWx1ZU9wdGltaXplUXVhbGl0eToKLSAgICAgICAgcmV0dXJuIENSX09QVElN
SVpFUVVBTElUWTsKKyAgICAgICAgcmV0dXJuIENvbG9yUmVuZGVyaW5nOjpPcHRpbWl6ZVF1YWxp
dHk7CiAgICAgY2FzZSBDU1NWYWx1ZUF1dG86Ci0gICAgICAgIHJldHVybiBDUl9BVVRPOworICAg
ICAgICByZXR1cm4gQ29sb3JSZW5kZXJpbmc6OkF1dG87CiAgICAgZGVmYXVsdDoKICAgICAgICAg
YnJlYWs7CiAgICAgfQogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIENS
X0FVVE87CisgICAgcmV0dXJuIENvbG9yUmVuZGVyaW5nOjpBdXRvOwogfQogCi10ZW1wbGF0ZTw+
IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoRURvbWluYW50QmFz
ZWxpbmUgZSkKK3RlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRp
dmVWYWx1ZShEb21pbmFudEJhc2VsaW5lIGUpCiAgICAgOiBDU1NWYWx1ZShQcmltaXRpdmVDbGFz
cykKIHsKICAgICBtX3ByaW1pdGl2ZVVuaXRUeXBlID0gQ1NTX1ZBTFVFX0lEOwogICAgIHN3aXRj
aCAoZSkgewotICAgIGNhc2UgREJfQVVUTzoKKyAgICBjYXNlIERvbWluYW50QmFzZWxpbmU6OkF1
dG86CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlQXV0bzsKICAgICAgICAgYnJl
YWs7Ci0gICAgY2FzZSBEQl9VU0VfU0NSSVBUOgorICAgIGNhc2UgRG9taW5hbnRCYXNlbGluZTo6
VXNlU2NyaXB0OgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZVVzZVNjcmlwdDsK
ICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBEQl9OT19DSEFOR0U6CisgICAgY2FzZSBEb21pbmFu
dEJhc2VsaW5lOjpOb0NoYW5nZToKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVO
b0NoYW5nZTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBEQl9SRVNFVF9TSVpFOgorICAgIGNh
c2UgRG9taW5hbnRCYXNlbGluZTo6UmVzZXRTaXplOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQg
PSBDU1NWYWx1ZVJlc2V0U2l6ZTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBEQl9DRU5UUkFM
OgorICAgIGNhc2UgRG9taW5hbnRCYXNlbGluZTo6Q2VudHJhbDoKICAgICAgICAgbV92YWx1ZS52
YWx1ZUlEID0gQ1NTVmFsdWVDZW50cmFsOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIERCX01J
RERMRToKKyAgICBjYXNlIERvbWluYW50QmFzZWxpbmU6Ok1pZGRsZToKICAgICAgICAgbV92YWx1
ZS52YWx1ZUlEID0gQ1NTVmFsdWVNaWRkbGU7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgREJf
VEVYVF9CRUZPUkVfRURHRToKKyAgICBjYXNlIERvbWluYW50QmFzZWxpbmU6OlRleHRCZWZvcmVF
ZGdlOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZVRleHRCZWZvcmVFZGdlOwog
ICAgICAgICBicmVhazsKLSAgICBjYXNlIERCX1RFWFRfQUZURVJfRURHRToKKyAgICBjYXNlIERv
bWluYW50QmFzZWxpbmU6OlRleHRBZnRlckVkZ2U6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9
IENTU1ZhbHVlVGV4dEFmdGVyRWRnZTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBEQl9JREVP
R1JBUEhJQzoKKyAgICBjYXNlIERvbWluYW50QmFzZWxpbmU6OklkZW9ncmFwaGljOgogICAgICAg
ICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUlkZW9ncmFwaGljOwogICAgICAgICBicmVhazsK
LSAgICBjYXNlIERCX0FMUEhBQkVUSUM6CisgICAgY2FzZSBEb21pbmFudEJhc2VsaW5lOjpBbHBo
YWJldGljOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUFscGhhYmV0aWM7CiAg
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgREJfSEFOR0lORzoKKyAgICBjYXNlIERvbWluYW50QmFz
ZWxpbmU6Okhhbmdpbmc6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlSGFuZ2lu
ZzsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBEQl9NQVRIRU1BVElDQUw6CisgICAgY2FzZSBE
b21pbmFudEJhc2VsaW5lOjpNYXRoZW1hdGljYWw6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9
IENTU1ZhbHVlTWF0aGVtYXRpY2FsOwogICAgICAgICBicmVhazsKICAgICB9CiB9CiAKLXRlbXBs
YXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBFRG9taW5hbnRCYXNlbGlu
ZSgpIGNvbnN0Cit0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3Ig
RG9taW5hbnRCYXNlbGluZSgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGlzVmFsdWVJRCgpKTsKIAog
ICAgIHN3aXRjaCAobV92YWx1ZS52YWx1ZUlEKSB7CiAgICAgY2FzZSBDU1NWYWx1ZUF1dG86Ci0g
ICAgICAgIHJldHVybiBEQl9BVVRPOworICAgICAgICByZXR1cm4gRG9taW5hbnRCYXNlbGluZTo6
QXV0bzsKICAgICBjYXNlIENTU1ZhbHVlVXNlU2NyaXB0OgotICAgICAgICByZXR1cm4gREJfVVNF
X1NDUklQVDsKKyAgICAgICAgcmV0dXJuIERvbWluYW50QmFzZWxpbmU6OlVzZVNjcmlwdDsKICAg
ICBjYXNlIENTU1ZhbHVlTm9DaGFuZ2U6Ci0gICAgICAgIHJldHVybiBEQl9OT19DSEFOR0U7Cisg
ICAgICAgIHJldHVybiBEb21pbmFudEJhc2VsaW5lOjpOb0NoYW5nZTsKICAgICBjYXNlIENTU1Zh
bHVlUmVzZXRTaXplOgotICAgICAgICByZXR1cm4gREJfUkVTRVRfU0laRTsKKyAgICAgICAgcmV0
dXJuIERvbWluYW50QmFzZWxpbmU6OlJlc2V0U2l6ZTsKICAgICBjYXNlIENTU1ZhbHVlSWRlb2dy
YXBoaWM6Ci0gICAgICAgIHJldHVybiBEQl9JREVPR1JBUEhJQzsKKyAgICAgICAgcmV0dXJuIERv
bWluYW50QmFzZWxpbmU6OklkZW9ncmFwaGljOwogICAgIGNhc2UgQ1NTVmFsdWVBbHBoYWJldGlj
OgotICAgICAgICByZXR1cm4gREJfQUxQSEFCRVRJQzsKKyAgICAgICAgcmV0dXJuIERvbWluYW50
QmFzZWxpbmU6OkFscGhhYmV0aWM7CiAgICAgY2FzZSBDU1NWYWx1ZUhhbmdpbmc6Ci0gICAgICAg
IHJldHVybiBEQl9IQU5HSU5HOworICAgICAgICByZXR1cm4gRG9taW5hbnRCYXNlbGluZTo6SGFu
Z2luZzsKICAgICBjYXNlIENTU1ZhbHVlTWF0aGVtYXRpY2FsOgotICAgICAgICByZXR1cm4gREJf
TUFUSEVNQVRJQ0FMOworICAgICAgICByZXR1cm4gRG9taW5hbnRCYXNlbGluZTo6TWF0aGVtYXRp
Y2FsOwogICAgIGNhc2UgQ1NTVmFsdWVDZW50cmFsOgotICAgICAgICByZXR1cm4gREJfQ0VOVFJB
TDsKKyAgICAgICAgcmV0dXJuIERvbWluYW50QmFzZWxpbmU6OkNlbnRyYWw7CiAgICAgY2FzZSBD
U1NWYWx1ZU1pZGRsZToKLSAgICAgICAgcmV0dXJuIERCX01JRERMRTsKKyAgICAgICAgcmV0dXJu
IERvbWluYW50QmFzZWxpbmU6Ok1pZGRsZTsKICAgICBjYXNlIENTU1ZhbHVlVGV4dEFmdGVyRWRn
ZToKLSAgICAgICAgcmV0dXJuIERCX1RFWFRfQUZURVJfRURHRTsKKyAgICAgICAgcmV0dXJuIERv
bWluYW50QmFzZWxpbmU6OlRleHRBZnRlckVkZ2U7CiAgICAgY2FzZSBDU1NWYWx1ZVRleHRCZWZv
cmVFZGdlOgotICAgICAgICByZXR1cm4gREJfVEVYVF9CRUZPUkVfRURHRTsKKyAgICAgICAgcmV0
dXJuIERvbWluYW50QmFzZWxpbmU6OlRleHRCZWZvcmVFZGdlOwogICAgIGRlZmF1bHQ6CiAgICAg
ICAgIGJyZWFrOwogICAgIH0KIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVy
biBEQl9BVVRPOworICAgIHJldHVybiBEb21pbmFudEJhc2VsaW5lOjpBdXRvOwogfQogCi10ZW1w
bGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoRVNoYXBl
UmVuZGVyaW5nIGUpCit0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJp
bWl0aXZlVmFsdWUoU2hhcGVSZW5kZXJpbmcgZSkKICAgICA6IENTU1ZhbHVlKFByaW1pdGl2ZUNs
YXNzKQogewogICAgIG1fcHJpbWl0aXZlVW5pdFR5cGUgPSBDU1NfVkFMVUVfSUQ7CiAgICAgc3dp
dGNoIChlKSB7Ci0gICAgY2FzZSBTUl9BVVRPOgorICAgIGNhc2UgU2hhcGVSZW5kZXJpbmc6OkF1
dG86CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlQXV0bzsKICAgICAgICAgYnJl
YWs7Ci0gICAgY2FzZSBTUl9PUFRJTUlaRVNQRUVEOgorICAgIGNhc2UgU2hhcGVSZW5kZXJpbmc6
Ok9wdGltaXplU3BlZWQ6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlT3B0aW1p
emVTcGVlZDsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTUl9DUklTUEVER0VTOgorICAgIGNh
c2UgU2hhcGVSZW5kZXJpbmc6OkNyaXNwRWRnZXM6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9
IENTU1ZhbHVlQ3Jpc3BlZGdlczsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTUl9HRU9NRVRS
SUNQUkVDSVNJT046CisgICAgY2FzZSBTaGFwZVJlbmRlcmluZzo6R2VvbWV0cmljUHJlY2lzaW9u
OgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUdlb21ldHJpY1ByZWNpc2lvbjsK
ICAgICAgICAgYnJlYWs7CiAgICAgfQogfQogCi10ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRp
dmVWYWx1ZTo6b3BlcmF0b3IgRVNoYXBlUmVuZGVyaW5nKCkgY29uc3QKK3RlbXBsYXRlPD4gaW5s
aW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBTaGFwZVJlbmRlcmluZygpIGNvbnN0CiB7
CiAgICAgQVNTRVJUKGlzVmFsdWVJRCgpKTsKIAogICAgIHN3aXRjaCAobV92YWx1ZS52YWx1ZUlE
KSB7CiAgICAgY2FzZSBDU1NWYWx1ZUF1dG86Ci0gICAgICAgIHJldHVybiBTUl9BVVRPOworICAg
ICAgICByZXR1cm4gU2hhcGVSZW5kZXJpbmc6OkF1dG87CiAgICAgY2FzZSBDU1NWYWx1ZU9wdGlt
aXplU3BlZWQ6Ci0gICAgICAgIHJldHVybiBTUl9PUFRJTUlaRVNQRUVEOworICAgICAgICByZXR1
cm4gU2hhcGVSZW5kZXJpbmc6Ok9wdGltaXplU3BlZWQ7CiAgICAgY2FzZSBDU1NWYWx1ZUNyaXNw
ZWRnZXM6Ci0gICAgICAgIHJldHVybiBTUl9DUklTUEVER0VTOworICAgICAgICByZXR1cm4gU2hh
cGVSZW5kZXJpbmc6OkNyaXNwRWRnZXM7CiAgICAgY2FzZSBDU1NWYWx1ZUdlb21ldHJpY1ByZWNp
c2lvbjoKLSAgICAgICAgcmV0dXJuIFNSX0dFT01FVFJJQ1BSRUNJU0lPTjsKKyAgICAgICAgcmV0
dXJuIFNoYXBlUmVuZGVyaW5nOjpHZW9tZXRyaWNQcmVjaXNpb247CiAgICAgZGVmYXVsdDoKICAg
ICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0
dXJuIFNSX0FVVE87CisgICAgcmV0dXJuIFNoYXBlUmVuZGVyaW5nOjpBdXRvOwogfQogCi10ZW1w
bGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoRVRleHRB
bmNob3IgZSkKK3RlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRp
dmVWYWx1ZShUZXh0QW5jaG9yIGUpCiAgICAgOiBDU1NWYWx1ZShQcmltaXRpdmVDbGFzcykKIHsK
ICAgICBtX3ByaW1pdGl2ZVVuaXRUeXBlID0gQ1NTX1ZBTFVFX0lEOwogICAgIHN3aXRjaCAoZSkg
ewotICAgIGNhc2UgVEFfU1RBUlQ6CisgICAgY2FzZSBUZXh0QW5jaG9yOjpTdGFydDoKICAgICAg
ICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVTdGFydDsKICAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBUQV9NSURETEU6CisgICAgY2FzZSBUZXh0QW5jaG9yOjpNaWRkbGU6CiAgICAgICAgIG1f
dmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlTWlkZGxlOwogICAgICAgICBicmVhazsKLSAgICBjYXNl
IFRBX0VORDoKKyAgICBjYXNlIFRleHRBbmNob3I6OkVuZDoKICAgICAgICAgbV92YWx1ZS52YWx1
ZUlEID0gQ1NTVmFsdWVFbmQ7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIH0KIAotdGVtcGxhdGU8
PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIEVUZXh0QW5jaG9yKCkgY29uc3QK
K3RlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBUZXh0QW5jaG9y
KCkgY29uc3QKIHsKICAgICBBU1NFUlQoaXNWYWx1ZUlEKCkpOwogCiAgICAgc3dpdGNoIChtX3Zh
bHVlLnZhbHVlSUQpIHsKICAgICBjYXNlIENTU1ZhbHVlU3RhcnQ6Ci0gICAgICAgIHJldHVybiBU
QV9TVEFSVDsKKyAgICAgICAgcmV0dXJuIFRleHRBbmNob3I6OlN0YXJ0OwogICAgIGNhc2UgQ1NT
VmFsdWVNaWRkbGU6Ci0gICAgICAgIHJldHVybiBUQV9NSURETEU7CisgICAgICAgIHJldHVybiBU
ZXh0QW5jaG9yOjpNaWRkbGU7CiAgICAgY2FzZSBDU1NWYWx1ZUVuZDoKLSAgICAgICAgcmV0dXJu
IFRBX0VORDsKKyAgICAgICAgcmV0dXJuIFRleHRBbmNob3I6OkVuZDsKICAgICBkZWZhdWx0Ogog
ICAgICAgICBicmVhazsKICAgICB9CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICBy
ZXR1cm4gVEFfU1RBUlQ7CisgICAgcmV0dXJuIFRleHRBbmNob3I6OlN0YXJ0OwogfQogCiB0ZW1w
bGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoY29uc3Qg
Q29sb3ImIGNvbG9yKQpAQCAtNDc4OSw2NiArNDc4OSw2NiBAQCB0ZW1wbGF0ZTw+IGlubGluZSBD
U1NQcmltaXRpdmVWYWx1ZTo6Q1NTCiAgICAgbV92YWx1ZS5mb250RmFtaWx5ID0gbmV3IENTU0Zv
bnRGYW1pbHkoV1RGTW92ZShmb250RmFtaWx5KSk7CiB9CiAKLXRlbXBsYXRlPD4gaW5saW5lIENT
U1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZShFVmVjdG9yRWZmZWN0IGUpCit0ZW1w
bGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoVmVjdG9y
RWZmZWN0IGUpCiAgICAgOiBDU1NWYWx1ZShQcmltaXRpdmVDbGFzcykKIHsKICAgICBtX3ByaW1p
dGl2ZVVuaXRUeXBlID0gQ1NTX1ZBTFVFX0lEOwogICAgIHN3aXRjaCAoZSkgewotICAgIGNhc2Ug
VkVfTk9ORToKKyAgICBjYXNlIFZlY3RvckVmZmVjdDo6Tm9uZToKICAgICAgICAgbV92YWx1ZS52
YWx1ZUlEID0gQ1NTVmFsdWVOb25lOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFZFX05PTl9T
Q0FMSU5HX1NUUk9LRToKKyAgICBjYXNlIFZlY3RvckVmZmVjdDo6Tm9uU2NhbGluZ1N0cm9rZToK
ICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVOb25TY2FsaW5nU3Ryb2tlOwogICAg
ICAgICBicmVhazsKICAgICB9CiB9CiAKLXRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZh
bHVlOjpvcGVyYXRvciBFVmVjdG9yRWZmZWN0KCkgY29uc3QKK3RlbXBsYXRlPD4gaW5saW5lIENT
U1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBWZWN0b3JFZmZlY3QoKSBjb25zdAogewogICAgIEFT
U0VSVChpc1ZhbHVlSUQoKSk7CiAKICAgICBzd2l0Y2ggKG1fdmFsdWUudmFsdWVJRCkgewogICAg
IGNhc2UgQ1NTVmFsdWVOb25lOgotICAgICAgICByZXR1cm4gVkVfTk9ORTsKKyAgICAgICAgcmV0
dXJuIFZlY3RvckVmZmVjdDo6Tm9uZTsKICAgICBjYXNlIENTU1ZhbHVlTm9uU2NhbGluZ1N0cm9r
ZToKLSAgICAgICAgcmV0dXJuIFZFX05PTl9TQ0FMSU5HX1NUUk9LRTsKKyAgICAgICAgcmV0dXJu
IFZlY3RvckVmZmVjdDo6Tm9uU2NhbGluZ1N0cm9rZTsKICAgICBkZWZhdWx0OgogICAgICAgICBi
cmVhazsKICAgICB9CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gVkVf
Tk9ORTsKKyAgICByZXR1cm4gVmVjdG9yRWZmZWN0OjpOb25lOwogfQogCi10ZW1wbGF0ZTw+IGlu
bGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoRU1hc2tUeXBlIGUpCit0
ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoTWFz
a1R5cGUgZSkKICAgICA6IENTU1ZhbHVlKFByaW1pdGl2ZUNsYXNzKQogewogICAgIG1fcHJpbWl0
aXZlVW5pdFR5cGUgPSBDU1NfVkFMVUVfSUQ7CiAgICAgc3dpdGNoIChlKSB7Ci0gICAgY2FzZSBN
VF9MVU1JTkFOQ0U6CisgICAgY2FzZSBNYXNrVHlwZTo6THVtaW5hbmNlOgogICAgICAgICBtX3Zh
bHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUx1bWluYW5jZTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2Fz
ZSBNVF9BTFBIQToKKyAgICBjYXNlIE1hc2tUeXBlOjpBbHBoYToKICAgICAgICAgbV92YWx1ZS52
YWx1ZUlEID0gQ1NTVmFsdWVBbHBoYTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogfQogCi10ZW1w
bGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgRU1hc2tUeXBlKCkgY29u
c3QKK3RlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBNYXNrVHlw
ZSgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGlzVmFsdWVJRCgpKTsKIAogICAgIHN3aXRjaCAobV92
YWx1ZS52YWx1ZUlEKSB7CiAgICAgY2FzZSBDU1NWYWx1ZUx1bWluYW5jZToKLSAgICAgICAgcmV0
dXJuIE1UX0xVTUlOQU5DRTsKKyAgICAgICAgcmV0dXJuIE1hc2tUeXBlOjpMdW1pbmFuY2U7CiAg
ICAgY2FzZSBDU1NWYWx1ZUFscGhhOgotICAgICAgICByZXR1cm4gTVRfQUxQSEE7CisgICAgICAg
IHJldHVybiBNYXNrVHlwZTo6QWxwaGE7CiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJlYWs7CiAg
ICAgfQogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIE1UX0xVTUlOQU5D
RTsKKyAgICByZXR1cm4gTWFza1R5cGU6Okx1bWluYW5jZTsKIH0KIAogI2lmIEVOQUJMRShDU1Nf
SU1BR0VfT1JJRU5UQVRJT04pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvU1ZHQ1NTQ29tcHV0
ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3Mv
U1ZHQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAkocmV2aXNpb24gMjMyMjI4KQorKysg
U291cmNlL1dlYkNvcmUvY3NzL1NWR0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTMwLDE5ICszMCwxOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LXN0YXRpYyBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGdseXBoT3JpZW50YXRpb25Ub0NTU1By
aW1pdGl2ZVZhbHVlKEVHbHlwaE9yaWVudGF0aW9uIG9yaWVudGF0aW9uKQorc3RhdGljIFJlZlB0
cjxDU1NQcmltaXRpdmVWYWx1ZT4gZ2x5cGhPcmllbnRhdGlvblRvQ1NTUHJpbWl0aXZlVmFsdWUo
R2x5cGhPcmllbnRhdGlvbiBvcmllbnRhdGlvbikKIHsKICAgICBzd2l0Y2ggKG9yaWVudGF0aW9u
KSB7Ci0gICAgICAgIGNhc2UgR09fMERFRzoKLSAgICAgICAgICAgIHJldHVybiBDU1NQcmltaXRp
dmVWYWx1ZTo6Y3JlYXRlKDAuMGYsIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfREVHKTsKLSAgICAg
ICAgY2FzZSBHT185MERFRzoKLSAgICAgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6
Y3JlYXRlKDkwLjBmLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0RFRyk7Ci0gICAgICAgIGNhc2Ug
R09fMTgwREVHOgotICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUo
MTgwLjBmLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0RFRyk7Ci0gICAgICAgIGNhc2UgR09fMjcw
REVHOgotICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoMjcwLjBm
LCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0RFRyk7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBjYXNlIEdseXBoT3JpZW50YXRpb246OkRlZ3JlZXMw
OgorICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSgwLjBmLCBDU1NQcmlt
aXRpdmVWYWx1ZTo6Q1NTX0RFRyk7CisgICAgY2FzZSBHbHlwaE9yaWVudGF0aW9uOjpEZWdyZWVz
OTA6CisgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKDkwLjBmLCBDU1NQ
cmltaXRpdmVWYWx1ZTo6Q1NTX0RFRyk7CisgICAgY2FzZSBHbHlwaE9yaWVudGF0aW9uOjpEZWdy
ZWVzMTgwOgorICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSgxODAuMGYs
IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfREVHKTsKKyAgICBjYXNlIEdseXBoT3JpZW50YXRpb246
OkRlZ3JlZXMyNzA6CisgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKDI3
MC4wZiwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19ERUcpOworICAgIGNhc2UgR2x5cGhPcmllbnRh
dGlvbjo6QXV0bzoKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogfQogCkBAIC02MCwy
MCArNjAsMjAgQEAgc3RhdGljIFJlZlB0cjxDU1NWYWx1ZT4gc3Ryb2tlRGFzaEFycmF5VAogCiBS
ZWZQdHI8Q1NTVmFsdWU+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OmFkanVzdFNWR1BhaW50Rm9y
Q3VycmVudENvbG9yKFNWR1BhaW50VHlwZSBwYWludFR5cGUsIGNvbnN0IFN0cmluZyYgdXJsLCBj
b25zdCBDb2xvciYgY29sb3IsIGNvbnN0IENvbG9yJiBjdXJyZW50Q29sb3IpIGNvbnN0CiB7Ci0g
ICAgaWYgKHBhaW50VHlwZSA+PSBTVkdfUEFJTlRUWVBFX1VSSV9OT05FKSB7CisgICAgaWYgKHBh
aW50VHlwZSA+PSBTVkdQYWludFR5cGU6OlVSSU5vbmUpIHsKICAgICAgICAgUmVmUHRyPENTU1Zh
bHVlTGlzdD4gdmFsdWVzID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOwog
ICAgICAgICB2YWx1ZXMtPmFwcGVuZChDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHVybCwgQ1NT
UHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlOjpDU1NfVVJJKSk7Ci0gICAgICAgIGlmIChwYWludFR5
cGUgPT0gU1ZHX1BBSU5UVFlQRV9VUklfTk9ORSkKKyAgICAgICAgaWYgKHBhaW50VHlwZSA9PSBT
VkdQYWludFR5cGU6OlVSSU5vbmUpCiAgICAgICAgICAgICB2YWx1ZXMtPmFwcGVuZChDU1NQcmlt
aXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihDU1NWYWx1ZU5vbmUpKTsKLSAgICAgICAgZWxz
ZSBpZiAocGFpbnRUeXBlID09IFNWR19QQUlOVFRZUEVfVVJJX0NVUlJFTlRDT0xPUikKKyAgICAg
ICAgZWxzZSBpZiAocGFpbnRUeXBlID09IFNWR1BhaW50VHlwZTo6VVJJQ3VycmVudENvbG9yKQog
ICAgICAgICAgICAgdmFsdWVzLT5hcHBlbmQoQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShjdXJy
ZW50Q29sb3IpKTsKLSAgICAgICAgZWxzZSBpZiAocGFpbnRUeXBlID09IFNWR19QQUlOVFRZUEVf
VVJJX1JHQkNPTE9SKQorICAgICAgICBlbHNlIGlmIChwYWludFR5cGUgPT0gU1ZHUGFpbnRUeXBl
OjpVUklSR0JDb2xvcikKICAgICAgICAgICAgIHZhbHVlcy0+YXBwZW5kKENTU1ByaW1pdGl2ZVZh
bHVlOjpjcmVhdGUoY29sb3IpKTsKICAgICAgICAgcmV0dXJuIHZhbHVlczsKICAgICB9Ci0gICAg
aWYgKHBhaW50VHlwZSA9PSBTVkdfUEFJTlRUWVBFX05PTkUpCisgICAgaWYgKHBhaW50VHlwZSA9
PSBTVkdQYWludFR5cGU6Ok5vbmUpCiAgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6
Y3JlYXRlSWRlbnRpZmllcihDU1NWYWx1ZU5vbmUpOwotICAgIGlmIChwYWludFR5cGUgPT0gU1ZH
X1BBSU5UVFlQRV9DVVJSRU5UQ09MT1IpCisgICAgaWYgKHBhaW50VHlwZSA9PSBTVkdQYWludFR5
cGU6OkN1cnJlbnRDb2xvcikKICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVh
dGUoY3VycmVudENvbG9yKTsKICAgICAKICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNy
ZWF0ZShjb2xvcik7CkBAIC05NSwxMDQgKzk1LDEwNCBAQCBSZWZQdHI8Q1NTVmFsdWU+IENvbXB1
dGVkU3R5bGVFeHRyYWN0b3I6CiAgICAgY29uc3QgU1ZHUmVuZGVyU3R5bGUmIHN2Z1N0eWxlID0g
c3R5bGUtPnN2Z1N0eWxlKCk7CiAKICAgICBzd2l0Y2ggKHByb3BlcnR5SUQpIHsKLSAgICAgICAg
Y2FzZSBDU1NQcm9wZXJ0eUNsaXBSdWxlOgotICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2
ZVZhbHVlOjpjcmVhdGUoc3ZnU3R5bGUuY2xpcFJ1bGUoKSk7Ci0gICAgICAgIGNhc2UgQ1NTUHJv
cGVydHlGbG9vZE9wYWNpdHk6Ci0gICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6
OmNyZWF0ZShzdmdTdHlsZS5mbG9vZE9wYWNpdHkoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19O
VU1CRVIpOwotICAgICAgICBjYXNlIENTU1Byb3BlcnR5U3RvcE9wYWNpdHk6Ci0gICAgICAgICAg
ICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShzdmdTdHlsZS5zdG9wT3BhY2l0eSgp
LCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUik7Ci0gICAgICAgIGNhc2UgQ1NTUHJvcGVy
dHlDb2xvckludGVycG9sYXRpb246Ci0gICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFs
dWU6OmNyZWF0ZShzdmdTdHlsZS5jb2xvckludGVycG9sYXRpb24oKSk7Ci0gICAgICAgIGNhc2Ug
Q1NTUHJvcGVydHlDb2xvckludGVycG9sYXRpb25GaWx0ZXJzOgotICAgICAgICAgICAgcmV0dXJu
IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoc3ZnU3R5bGUuY29sb3JJbnRlcnBvbGF0aW9uRmls
dGVycygpKTsKLSAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUZpbGxPcGFjaXR5OgotICAgICAgICAg
ICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoc3ZnU3R5bGUuZmlsbE9wYWNpdHko
KSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpOwotICAgICAgICBjYXNlIENTU1Byb3Bl
cnR5RmlsbFJ1bGU6Ci0gICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0
ZShzdmdTdHlsZS5maWxsUnVsZSgpKTsKLSAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUNvbG9yUmVu
ZGVyaW5nOgotICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoc3Zn
U3R5bGUuY29sb3JSZW5kZXJpbmcoKSk7Ci0gICAgICAgIGNhc2UgQ1NTUHJvcGVydHlTaGFwZVJl
bmRlcmluZzoKLSAgICAgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHN2
Z1N0eWxlLnNoYXBlUmVuZGVyaW5nKCkpOwotICAgICAgICBjYXNlIENTU1Byb3BlcnR5U3Ryb2tl
T3BhY2l0eToKLSAgICAgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHN2
Z1N0eWxlLnN0cm9rZU9wYWNpdHkoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpOwot
ICAgICAgICBjYXNlIENTU1Byb3BlcnR5QWxpZ25tZW50QmFzZWxpbmU6Ci0gICAgICAgICAgICBy
ZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShzdmdTdHlsZS5hbGlnbm1lbnRCYXNlbGlu
ZSgpKTsKLSAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eURvbWluYW50QmFzZWxpbmU6Ci0gICAgICAg
ICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShzdmdTdHlsZS5kb21pbmFudEJh
c2VsaW5lKCkpOwotICAgICAgICBjYXNlIENTU1Byb3BlcnR5VGV4dEFuY2hvcjoKLSAgICAgICAg
ICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHN2Z1N0eWxlLnRleHRBbmNob3Io
KSk7Ci0gICAgICAgIGNhc2UgQ1NTUHJvcGVydHlDbGlwUGF0aDoKLSAgICAgICAgICAgIGlmICgh
c3ZnU3R5bGUuY2xpcHBlclJlc291cmNlKCkuaXNFbXB0eSgpKQotICAgICAgICAgICAgICAgIHJl
dHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHN2Z1N0eWxlLmNsaXBwZXJSZXNvdXJjZSgp
LCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1VSSSk7Ci0gICAgICAgICAgICByZXR1cm4gQ1NTUHJp
bWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoQ1NTVmFsdWVOb25lKTsKLSAgICAgICAgY2Fz
ZSBDU1NQcm9wZXJ0eU1hc2s6Ci0gICAgICAgICAgICBpZiAoIXN2Z1N0eWxlLm1hc2tlclJlc291
cmNlKCkuaXNFbXB0eSgpKQotICAgICAgICAgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1
ZTo6Y3JlYXRlKHN2Z1N0eWxlLm1hc2tlclJlc291cmNlKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpD
U1NfVVJJKTsKLSAgICAgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRl
bnRpZmllcihDU1NWYWx1ZU5vbmUpOwotICAgICAgICBjYXNlIENTU1Byb3BlcnR5Rmxvb2RDb2xv
cjoKLSAgICAgICAgICAgIHJldHVybiBjdXJyZW50Q29sb3JPclZhbGlkQ29sb3Ioc3R5bGUsIHN2
Z1N0eWxlLmZsb29kQ29sb3IoKSk7Ci0gICAgICAgIGNhc2UgQ1NTUHJvcGVydHlMaWdodGluZ0Nv
bG9yOgotICAgICAgICAgICAgcmV0dXJuIGN1cnJlbnRDb2xvck9yVmFsaWRDb2xvcihzdHlsZSwg
c3ZnU3R5bGUubGlnaHRpbmdDb2xvcigpKTsKLSAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVN0b3BD
b2xvcjoKLSAgICAgICAgICAgIHJldHVybiBjdXJyZW50Q29sb3JPclZhbGlkQ29sb3Ioc3R5bGUs
IHN2Z1N0eWxlLnN0b3BDb2xvcigpKTsKLSAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUZpbGw6Ci0g
ICAgICAgICAgICByZXR1cm4gYWRqdXN0U1ZHUGFpbnRGb3JDdXJyZW50Q29sb3Ioc3ZnU3R5bGUu
ZmlsbFBhaW50VHlwZSgpLCBzdmdTdHlsZS5maWxsUGFpbnRVcmkoKSwgc3ZnU3R5bGUuZmlsbFBh
aW50Q29sb3IoKSwgc3R5bGUtPmNvbG9yKCkpOwotICAgICAgICBjYXNlIENTU1Byb3BlcnR5S2Vy
bmluZzoKLSAgICAgICAgICAgIHJldHVybiBTVkdMZW5ndGhWYWx1ZTo6dG9DU1NQcmltaXRpdmVW
YWx1ZShzdmdTdHlsZS5rZXJuaW5nKCkpOwotICAgICAgICBjYXNlIENTU1Byb3BlcnR5TWFya2Vy
RW5kOgotICAgICAgICAgICAgaWYgKCFzdmdTdHlsZS5tYXJrZXJFbmRSZXNvdXJjZSgpLmlzRW1w
dHkoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShz
dmdTdHlsZS5tYXJrZXJFbmRSZXNvdXJjZSgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1VSSSk7
Ci0gICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIo
Q1NTVmFsdWVOb25lKTsKLSAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eU1hcmtlck1pZDoKLSAgICAg
ICAgICAgIGlmICghc3ZnU3R5bGUubWFya2VyTWlkUmVzb3VyY2UoKS5pc0VtcHR5KCkpCi0gICAg
ICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoc3ZnU3R5bGUubWFy
a2VyTWlkUmVzb3VyY2UoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19VUkkpOwotICAgICAgICAg
ICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKENTU1ZhbHVlTm9u
ZSk7Ci0gICAgICAgIGNhc2UgQ1NTUHJvcGVydHlNYXJrZXJTdGFydDoKLSAgICAgICAgICAgIGlm
ICghc3ZnU3R5bGUubWFya2VyU3RhcnRSZXNvdXJjZSgpLmlzRW1wdHkoKSkKLSAgICAgICAgICAg
ICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShzdmdTdHlsZS5tYXJrZXJTdGFy
dFJlc291cmNlKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfVVJJKTsKLSAgICAgICAgICAgIHJl
dHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihDU1NWYWx1ZU5vbmUpOwot
ICAgICAgICBjYXNlIENTU1Byb3BlcnR5U3Ryb2tlOgotICAgICAgICAgICAgcmV0dXJuIGFkanVz
dFNWR1BhaW50Rm9yQ3VycmVudENvbG9yKHN2Z1N0eWxlLnN0cm9rZVBhaW50VHlwZSgpLCBzdmdT
dHlsZS5zdHJva2VQYWludFVyaSgpLCBzdmdTdHlsZS5zdHJva2VQYWludENvbG9yKCksIHN0eWxl
LT5jb2xvcigpKTsKLSAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVN0cm9rZURhc2hhcnJheToKLSAg
ICAgICAgICAgIHJldHVybiBzdHJva2VEYXNoQXJyYXlUb0NTU1ZhbHVlTGlzdChzdmdTdHlsZS5z
dHJva2VEYXNoQXJyYXkoKSk7Ci0gICAgICAgIGNhc2UgQ1NTUHJvcGVydHlCYXNlbGluZVNoaWZ0
OiB7Ci0gICAgICAgICAgICBzd2l0Y2ggKHN2Z1N0eWxlLmJhc2VsaW5lU2hpZnQoKSkgewotICAg
ICAgICAgICAgICAgIGNhc2UgQlNfQkFTRUxJTkU6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVy
biBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihDU1NWYWx1ZUJhc2VsaW5lKTsK
LSAgICAgICAgICAgICAgICBjYXNlIEJTX1NVUEVSOgotICAgICAgICAgICAgICAgICAgICByZXR1
cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoQ1NTVmFsdWVTdXBlcik7Ci0g
ICAgICAgICAgICAgICAgY2FzZSBCU19TVUI6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBD
U1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihDU1NWYWx1ZVN1Yik7Ci0gICAgICAg
ICAgICAgICAgY2FzZSBCU19MRU5HVEg6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBTVkdM
ZW5ndGhWYWx1ZTo6dG9DU1NQcmltaXRpdmVWYWx1ZShzdmdTdHlsZS5iYXNlbGluZVNoaWZ0VmFs
dWUoKSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
LSAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgIGNhc2UgQ1NTUHJvcGVydHlDbGlwUnVs
ZToKKyAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoc3ZnU3R5bGUuY2xp
cFJ1bGUoKSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUZsb29kT3BhY2l0eToKKyAgICAgICAgcmV0
dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoc3ZnU3R5bGUuZmxvb2RPcGFjaXR5KCksIENT
U1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5U3RvcE9w
YWNpdHk6CisgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHN2Z1N0eWxl
LnN0b3BPcGFjaXR5KCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKTsKKyAgICBjYXNl
IENTU1Byb3BlcnR5Q29sb3JJbnRlcnBvbGF0aW9uOgorICAgICAgICByZXR1cm4gQ1NTUHJpbWl0
aXZlVmFsdWU6OmNyZWF0ZShzdmdTdHlsZS5jb2xvckludGVycG9sYXRpb24oKSk7CisgICAgY2Fz
ZSBDU1NQcm9wZXJ0eUNvbG9ySW50ZXJwb2xhdGlvbkZpbHRlcnM6CisgICAgICAgIHJldHVybiBD
U1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHN2Z1N0eWxlLmNvbG9ySW50ZXJwb2xhdGlvbkZpbHRl
cnMoKSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUZpbGxPcGFjaXR5OgorICAgICAgICByZXR1cm4g
Q1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShzdmdTdHlsZS5maWxsT3BhY2l0eSgpLCBDU1NQcmlt
aXRpdmVWYWx1ZTo6Q1NTX05VTUJFUik7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUZpbGxSdWxlOgor
ICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShzdmdTdHlsZS5maWxsUnVs
ZSgpKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5Q29sb3JSZW5kZXJpbmc6CisgICAgICAgIHJldHVy
biBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHN2Z1N0eWxlLmNvbG9yUmVuZGVyaW5nKCkpOwor
ICAgIGNhc2UgQ1NTUHJvcGVydHlTaGFwZVJlbmRlcmluZzoKKyAgICAgICAgcmV0dXJuIENTU1By
aW1pdGl2ZVZhbHVlOjpjcmVhdGUoc3ZnU3R5bGUuc2hhcGVSZW5kZXJpbmcoKSk7CisgICAgY2Fz
ZSBDU1NQcm9wZXJ0eVN0cm9rZU9wYWNpdHk6CisgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVW
YWx1ZTo6Y3JlYXRlKHN2Z1N0eWxlLnN0cm9rZU9wYWNpdHkoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6
OkNTU19OVU1CRVIpOworICAgIGNhc2UgQ1NTUHJvcGVydHlBbGlnbm1lbnRCYXNlbGluZToKKyAg
ICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoc3ZnU3R5bGUuYWxpZ25tZW50
QmFzZWxpbmUoKSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eURvbWluYW50QmFzZWxpbmU6CisgICAg
ICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHN2Z1N0eWxlLmRvbWluYW50QmFz
ZWxpbmUoKSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRBbmNob3I6CisgICAgICAgIHJldHVy
biBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHN2Z1N0eWxlLnRleHRBbmNob3IoKSk7CisgICAg
Y2FzZSBDU1NQcm9wZXJ0eUNsaXBQYXRoOgorICAgICAgICBpZiAoIXN2Z1N0eWxlLmNsaXBwZXJS
ZXNvdXJjZSgpLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1
ZTo6Y3JlYXRlKHN2Z1N0eWxlLmNsaXBwZXJSZXNvdXJjZSgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6
Q1NTX1VSSSk7CisgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRp
ZmllcihDU1NWYWx1ZU5vbmUpOworICAgIGNhc2UgQ1NTUHJvcGVydHlNYXNrOgorICAgICAgICBp
ZiAoIXN2Z1N0eWxlLm1hc2tlclJlc291cmNlKCkuaXNFbXB0eSgpKQorICAgICAgICAgICAgcmV0
dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoc3ZnU3R5bGUubWFza2VyUmVzb3VyY2UoKSwg
Q1NTUHJpbWl0aXZlVmFsdWU6OkNTU19VUkkpOworICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZl
VmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoQ1NTVmFsdWVOb25lKTsKKyAgICBjYXNlIENTU1Byb3Bl
cnR5Rmxvb2RDb2xvcjoKKyAgICAgICAgcmV0dXJuIGN1cnJlbnRDb2xvck9yVmFsaWRDb2xvcihz
dHlsZSwgc3ZnU3R5bGUuZmxvb2RDb2xvcigpKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5TGlnaHRp
bmdDb2xvcjoKKyAgICAgICAgcmV0dXJuIGN1cnJlbnRDb2xvck9yVmFsaWRDb2xvcihzdHlsZSwg
c3ZnU3R5bGUubGlnaHRpbmdDb2xvcigpKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5U3RvcENvbG9y
OgorICAgICAgICByZXR1cm4gY3VycmVudENvbG9yT3JWYWxpZENvbG9yKHN0eWxlLCBzdmdTdHls
ZS5zdG9wQ29sb3IoKSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUZpbGw6CisgICAgICAgIHJldHVy
biBhZGp1c3RTVkdQYWludEZvckN1cnJlbnRDb2xvcihzdmdTdHlsZS5maWxsUGFpbnRUeXBlKCks
IHN2Z1N0eWxlLmZpbGxQYWludFVyaSgpLCBzdmdTdHlsZS5maWxsUGFpbnRDb2xvcigpLCBzdHls
ZS0+Y29sb3IoKSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUtlcm5pbmc6CisgICAgICAgIHJldHVy
biBTVkdMZW5ndGhWYWx1ZTo6dG9DU1NQcmltaXRpdmVWYWx1ZShzdmdTdHlsZS5rZXJuaW5nKCkp
OworICAgIGNhc2UgQ1NTUHJvcGVydHlNYXJrZXJFbmQ6CisgICAgICAgIGlmICghc3ZnU3R5bGUu
bWFya2VyRW5kUmVzb3VyY2UoKS5pc0VtcHR5KCkpCisgICAgICAgICAgICByZXR1cm4gQ1NTUHJp
bWl0aXZlVmFsdWU6OmNyZWF0ZShzdmdTdHlsZS5tYXJrZXJFbmRSZXNvdXJjZSgpLCBDU1NQcmlt
aXRpdmVWYWx1ZTo6Q1NTX1VSSSk7CisgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6
Y3JlYXRlSWRlbnRpZmllcihDU1NWYWx1ZU5vbmUpOworICAgIGNhc2UgQ1NTUHJvcGVydHlNYXJr
ZXJNaWQ6CisgICAgICAgIGlmICghc3ZnU3R5bGUubWFya2VyTWlkUmVzb3VyY2UoKS5pc0VtcHR5
KCkpCisgICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShzdmdTdHls
ZS5tYXJrZXJNaWRSZXNvdXJjZSgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1VSSSk7CisgICAg
ICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihDU1NWYWx1ZU5v
bmUpOworICAgIGNhc2UgQ1NTUHJvcGVydHlNYXJrZXJTdGFydDoKKyAgICAgICAgaWYgKCFzdmdT
dHlsZS5tYXJrZXJTdGFydFJlc291cmNlKCkuaXNFbXB0eSgpKQorICAgICAgICAgICAgcmV0dXJu
IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoc3ZnU3R5bGUubWFya2VyU3RhcnRSZXNvdXJjZSgp
LCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1VSSSk7CisgICAgICAgIHJldHVybiBDU1NQcmltaXRp
dmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihDU1NWYWx1ZU5vbmUpOworICAgIGNhc2UgQ1NTUHJv
cGVydHlTdHJva2U6CisgICAgICAgIHJldHVybiBhZGp1c3RTVkdQYWludEZvckN1cnJlbnRDb2xv
cihzdmdTdHlsZS5zdHJva2VQYWludFR5cGUoKSwgc3ZnU3R5bGUuc3Ryb2tlUGFpbnRVcmkoKSwg
c3ZnU3R5bGUuc3Ryb2tlUGFpbnRDb2xvcigpLCBzdHlsZS0+Y29sb3IoKSk7CisgICAgY2FzZSBD
U1NQcm9wZXJ0eVN0cm9rZURhc2hhcnJheToKKyAgICAgICAgcmV0dXJuIHN0cm9rZURhc2hBcnJh
eVRvQ1NTVmFsdWVMaXN0KHN2Z1N0eWxlLnN0cm9rZURhc2hBcnJheSgpKTsKKyAgICBjYXNlIENT
U1Byb3BlcnR5QmFzZWxpbmVTaGlmdDogeworICAgICAgICBzd2l0Y2ggKHN2Z1N0eWxlLmJhc2Vs
aW5lU2hpZnQoKSkgeworICAgICAgICBjYXNlIEJhc2VsaW5lU2hpZnQ6OkJhc2VsaW5lOgorICAg
ICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKENTU1Zh
bHVlQmFzZWxpbmUpOworICAgICAgICBjYXNlIEJhc2VsaW5lU2hpZnQ6OlN1cGVyOgorICAgICAg
ICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKENTU1ZhbHVl
U3VwZXIpOworICAgICAgICBjYXNlIEJhc2VsaW5lU2hpZnQ6OlN1YjoKKyAgICAgICAgICAgIHJl
dHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihDU1NWYWx1ZVN1Yik7Cisg
ICAgICAgIGNhc2UgQmFzZWxpbmVTaGlmdDo6TGVuZ3RoOgorICAgICAgICAgICAgcmV0dXJuIFNW
R0xlbmd0aFZhbHVlOjp0b0NTU1ByaW1pdGl2ZVZhbHVlKHN2Z1N0eWxlLmJhc2VsaW5lU2hpZnRW
YWx1ZSgpKTsKICAgICAgICAgfQotICAgICAgICBjYXNlIENTU1Byb3BlcnR5QnVmZmVyZWRSZW5k
ZXJpbmc6Ci0gICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShzdmdT
dHlsZS5idWZmZXJlZFJlbmRlcmluZygpKTsKLSAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUdseXBo
T3JpZW50YXRpb25Ib3Jpem9udGFsOgotICAgICAgICAgICAgcmV0dXJuIGdseXBoT3JpZW50YXRp
b25Ub0NTU1ByaW1pdGl2ZVZhbHVlKHN2Z1N0eWxlLmdseXBoT3JpZW50YXRpb25Ib3Jpem9udGFs
KCkpOwotICAgICAgICBjYXNlIENTU1Byb3BlcnR5R2x5cGhPcmllbnRhdGlvblZlcnRpY2FsOiB7
Ci0gICAgICAgICAgICBpZiAoUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiB2YWx1ZSA9IGdseXBo
T3JpZW50YXRpb25Ub0NTU1ByaW1pdGl2ZVZhbHVlKHN2Z1N0eWxlLmdseXBoT3JpZW50YXRpb25W
ZXJ0aWNhbCgpKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisgICAgY2Fz
ZSBDU1NQcm9wZXJ0eUJ1ZmZlcmVkUmVuZGVyaW5nOgorICAgICAgICByZXR1cm4gQ1NTUHJpbWl0
aXZlVmFsdWU6OmNyZWF0ZShzdmdTdHlsZS5idWZmZXJlZFJlbmRlcmluZygpKTsKKyAgICBjYXNl
IENTU1Byb3BlcnR5R2x5cGhPcmllbnRhdGlvbkhvcml6b250YWw6CisgICAgICAgIHJldHVybiBn
bHlwaE9yaWVudGF0aW9uVG9DU1NQcmltaXRpdmVWYWx1ZShzdmdTdHlsZS5nbHlwaE9yaWVudGF0
aW9uSG9yaXpvbnRhbCgpKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5R2x5cGhPcmllbnRhdGlvblZl
cnRpY2FsOiB7CisgICAgICAgIGlmIChSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHZhbHVlID0g
Z2x5cGhPcmllbnRhdGlvblRvQ1NTUHJpbWl0aXZlVmFsdWUoc3ZnU3R5bGUuZ2x5cGhPcmllbnRh
dGlvblZlcnRpY2FsKCkpKQorICAgICAgICAgICAgcmV0dXJuIHZhbHVlOwogCi0gICAgICAgICAg
ICBpZiAoc3ZnU3R5bGUuZ2x5cGhPcmllbnRhdGlvblZlcnRpY2FsKCkgPT0gR09fQVVUTykKLSAg
ICAgICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIo
Q1NTVmFsdWVBdXRvKTsKKyAgICAgICAgaWYgKHN2Z1N0eWxlLmdseXBoT3JpZW50YXRpb25WZXJ0
aWNhbCgpID09IEdseXBoT3JpZW50YXRpb246OkF1dG8pCisgICAgICAgICAgICByZXR1cm4gQ1NT
UHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoQ1NTVmFsdWVBdXRvKTsKIAotICAgICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdFN2Z1NoYWRvdzoKLSAgICAgICAgICAgIHJldHVybiB2YWx1ZUZvclNoYWRvdyhzdmdT
dHlsZS5zaGFkb3coKSwgcHJvcGVydHlJRCwgKnN0eWxlKTsKLSAgICAgICAgY2FzZSBDU1NQcm9w
ZXJ0eVZlY3RvckVmZmVjdDoKLSAgICAgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6
Y3JlYXRlKHN2Z1N0eWxlLnZlY3RvckVmZmVjdCgpKTsKLSAgICAgICAgY2FzZSBDU1NQcm9wZXJ0
eU1hc2tUeXBlOgotICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUo
c3ZnU3R5bGUubWFza1R5cGUoKSk7Ci0gICAgICAgIGNhc2UgQ1NTUHJvcGVydHlNYXJrZXI6Ci0g
ICAgICAgIGNhc2UgQ1NTUHJvcGVydHlFbmFibGVCYWNrZ3JvdW5kOgotICAgICAgICBjYXNlIENT
U1Byb3BlcnR5Q29sb3JQcm9maWxlOgotICAgICAgICAgICAgLy8gdGhlIGFib3ZlIHByb3BlcnRp
ZXMgYXJlIG5vdCB5ZXQgaW1wbGVtZW50ZWQgaW4gdGhlIGVuZ2luZQotICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKyAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0U3ZnU2hhZG93OgorICAgICAgICByZXR1cm4gdmFsdWVGb3JTaGFkb3coc3ZnU3R5bGUu
c2hhZG93KCksIHByb3BlcnR5SUQsICpzdHlsZSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVZlY3Rv
ckVmZmVjdDoKKyAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoc3ZnU3R5
bGUudmVjdG9yRWZmZWN0KCkpOworICAgIGNhc2UgQ1NTUHJvcGVydHlNYXNrVHlwZToKKyAgICAg
ICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoc3ZnU3R5bGUubWFza1R5cGUoKSk7
CisgICAgY2FzZSBDU1NQcm9wZXJ0eU1hcmtlcjoKKyAgICBjYXNlIENTU1Byb3BlcnR5RW5hYmxl
QmFja2dyb3VuZDoKKyAgICBjYXNlIENTU1Byb3BlcnR5Q29sb3JQcm9maWxlOgorICAgICAgICAv
LyB0aGUgYWJvdmUgcHJvcGVydGllcyBhcmUgbm90IHlldCBpbXBsZW1lbnRlZCBpbiB0aGUgZW5n
aW5lCisgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIC8vIElmIHlvdSBjcmFz
aCBoZXJlLCBpdCdzIGJlY2F1c2UgeW91IGFkZGVkIGEgY3NzIHByb3BlcnR5IGFuZCBhcmUgbm90
IGhhbmRsaW5nIGl0CiAgICAgICAgIC8vIGluIGVpdGhlciB0aGlzIHN3aXRjaCBzdGF0ZW1lbnQg
b3IgdGhlIG9uZSBpbiBDU1NDb21wdXRlZFN0eWxlRGVsY2FyYXRpb246OmdldFByb3BlcnR5Q1NT
VmFsdWUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyQ29udmVydGVyLmgJ
KHJldmlzaW9uIDIzMjIyOCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXJDb252
ZXJ0ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTM0LDggKzEzNCw4IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgQ29sb3IgY29udmVydFNWR0NvbG9yKFN0eWxlUmVzb2x2ZXImLCBjb25zdCBDU1NWYWx1
ZSYpOwogICAgIHN0YXRpYyBTdHlsZVNlbGZBbGlnbm1lbnREYXRhIGNvbnZlcnRTZWxmT3JEZWZh
dWx0QWxpZ25tZW50RGF0YShTdHlsZVJlc29sdmVyJiwgY29uc3QgQ1NTVmFsdWUmKTsKICAgICBz
dGF0aWMgU3R5bGVDb250ZW50QWxpZ25tZW50RGF0YSBjb252ZXJ0Q29udGVudEFsaWdubWVudERh
dGEoU3R5bGVSZXNvbHZlciYsIGNvbnN0IENTU1ZhbHVlJik7Ci0gICAgc3RhdGljIEVHbHlwaE9y
aWVudGF0aW9uIGNvbnZlcnRHbHlwaE9yaWVudGF0aW9uKFN0eWxlUmVzb2x2ZXImLCBjb25zdCBD
U1NWYWx1ZSYpOwotICAgIHN0YXRpYyBFR2x5cGhPcmllbnRhdGlvbiBjb252ZXJ0R2x5cGhPcmll
bnRhdGlvbk9yQXV0byhTdHlsZVJlc29sdmVyJiwgY29uc3QgQ1NTVmFsdWUmKTsKKyAgICBzdGF0
aWMgR2x5cGhPcmllbnRhdGlvbiBjb252ZXJ0R2x5cGhPcmllbnRhdGlvbihTdHlsZVJlc29sdmVy
JiwgY29uc3QgQ1NTVmFsdWUmKTsKKyAgICBzdGF0aWMgR2x5cGhPcmllbnRhdGlvbiBjb252ZXJ0
R2x5cGhPcmllbnRhdGlvbk9yQXV0byhTdHlsZVJlc29sdmVyJiwgY29uc3QgQ1NTVmFsdWUmKTsK
ICAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxMZW5ndGg+IGNvbnZlcnRMaW5lSGVpZ2h0KFN0eWxl
UmVzb2x2ZXImLCBjb25zdCBDU1NWYWx1ZSYsIGZsb2F0IG11bHRpcGxpZXIgPSAxLmYpOwogICAg
IHN0YXRpYyBGb250U3ludGhlc2lzIGNvbnZlcnRGb250U3ludGhlc2lzKFN0eWxlUmVzb2x2ZXIm
LCBjb25zdCBDU1NWYWx1ZSYpOwogICAgIApAQCAtMTM4NSwyMiArMTM4NSwyMiBAQCBpbmxpbmUg
U3R5bGVDb250ZW50QWxpZ25tZW50RGF0YSBTdHlsZUJ1CiAgICAgcmV0dXJuIGFsaWdubWVudERh
dGE7CiB9CiAKLWlubGluZSBFR2x5cGhPcmllbnRhdGlvbiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6
OmNvbnZlcnRHbHlwaE9yaWVudGF0aW9uKFN0eWxlUmVzb2x2ZXImLCBjb25zdCBDU1NWYWx1ZSYg
dmFsdWUpCitpbmxpbmUgR2x5cGhPcmllbnRhdGlvbiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNv
bnZlcnRHbHlwaE9yaWVudGF0aW9uKFN0eWxlUmVzb2x2ZXImLCBjb25zdCBDU1NWYWx1ZSYgdmFs
dWUpCiB7CiAgICAgZmxvYXQgYW5nbGUgPSBmYWJzZihmbW9kZihkb3duY2FzdDxDU1NQcmltaXRp
dmVWYWx1ZT4odmFsdWUpLmZsb2F0VmFsdWUoKSwgMzYwLjBmKSk7CiAgICAgaWYgKGFuZ2xlIDw9
IDQ1LjBmIHx8IGFuZ2xlID4gMzE1LjBmKQotICAgICAgICByZXR1cm4gR09fMERFRzsKKyAgICAg
ICAgcmV0dXJuIEdseXBoT3JpZW50YXRpb246OkRlZ3JlZXMwOwogICAgIGlmIChhbmdsZSA+IDQ1
LjBmICYmIGFuZ2xlIDw9IDEzNS4wZikKLSAgICAgICAgcmV0dXJuIEdPXzkwREVHOworICAgICAg
ICByZXR1cm4gR2x5cGhPcmllbnRhdGlvbjo6RGVncmVlczkwOwogICAgIGlmIChhbmdsZSA+IDEz
NS4wZiAmJiBhbmdsZSA8PSAyMjUuMGYpCi0gICAgICAgIHJldHVybiBHT18xODBERUc7Ci0gICAg
cmV0dXJuIEdPXzI3MERFRzsKKyAgICAgICAgcmV0dXJuIEdseXBoT3JpZW50YXRpb246OkRlZ3Jl
ZXMxODA7CisgICAgcmV0dXJuIEdseXBoT3JpZW50YXRpb246OkRlZ3JlZXMyNzA7CiB9CiAKLWlu
bGluZSBFR2x5cGhPcmllbnRhdGlvbiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRHbHlw
aE9yaWVudGF0aW9uT3JBdXRvKFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIsIGNvbnN0IENT
U1ZhbHVlJiB2YWx1ZSkKK2lubGluZSBHbHlwaE9yaWVudGF0aW9uIFN0eWxlQnVpbGRlckNvbnZl
cnRlcjo6Y29udmVydEdseXBoT3JpZW50YXRpb25PckF1dG8oU3R5bGVSZXNvbHZlciYgc3R5bGVS
ZXNvbHZlciwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQogewogICAgIGlmIChkb3duY2FzdDxDU1NQ
cmltaXRpdmVWYWx1ZT4odmFsdWUpLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZUF1dG8pCi0gICAgICAg
IHJldHVybiBHT19BVVRPOworICAgICAgICByZXR1cm4gR2x5cGhPcmllbnRhdGlvbjo6QXV0bzsK
ICAgICByZXR1cm4gY29udmVydEdseXBoT3JpZW50YXRpb24oc3R5bGVSZXNvbHZlciwgdmFsdWUp
OwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyQ3VzdG9tLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlckN1c3RvbS5oCShyZXZp
c2lvbiAyMzIyMjgpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyQ3VzdG9tLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEwMzIsMTkgKzEwMzIsMTkgQEAgaW5saW5lIHZvaWQgU3R5bGVC
dWlsZGVyQ3VzdG9tOjphcHBseVZhbAogICAgIGlmIChwcmltaXRpdmVWYWx1ZS5pc1ZhbHVlSUQo
KSkgewogICAgICAgICBzd2l0Y2ggKHByaW1pdGl2ZVZhbHVlLnZhbHVlSUQoKSkgewogICAgICAg
ICBjYXNlIENTU1ZhbHVlQmFzZWxpbmU6Ci0gICAgICAgICAgICBzdmdTdHlsZS5zZXRCYXNlbGlu
ZVNoaWZ0KEJTX0JBU0VMSU5FKTsKKyAgICAgICAgICAgIHN2Z1N0eWxlLnNldEJhc2VsaW5lU2hp
ZnQoQmFzZWxpbmVTaGlmdDo6QmFzZWxpbmUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IGNhc2UgQ1NTVmFsdWVTdWI6Ci0gICAgICAgICAgICBzdmdTdHlsZS5zZXRCYXNlbGluZVNoaWZ0
KEJTX1NVQik7CisgICAgICAgICAgICBzdmdTdHlsZS5zZXRCYXNlbGluZVNoaWZ0KEJhc2VsaW5l
U2hpZnQ6OlN1Yik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDU1NWYWx1ZVN1
cGVyOgotICAgICAgICAgICAgc3ZnU3R5bGUuc2V0QmFzZWxpbmVTaGlmdChCU19TVVBFUik7Cisg
ICAgICAgICAgICBzdmdTdHlsZS5zZXRCYXNlbGluZVNoaWZ0KEJhc2VsaW5lU2hpZnQ6OlN1cGVy
KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KICAgICB9IGVsc2UgewotICAgICAgICBzdmdTdHlsZS5zZXRCYXNlbGlu
ZVNoaWZ0KEJTX0xFTkdUSCk7CisgICAgICAgIHN2Z1N0eWxlLnNldEJhc2VsaW5lU2hpZnQoQmFz
ZWxpbmVTaGlmdDo6TGVuZ3RoKTsKICAgICAgICAgc3ZnU3R5bGUuc2V0QmFzZWxpbmVTaGlmdFZh
bHVlKFNWR0xlbmd0aFZhbHVlOjpmcm9tQ1NTUHJpbWl0aXZlVmFsdWUocHJpbWl0aXZlVmFsdWUp
KTsKICAgICB9CiB9CkBAIC0xMjY5LDE4ICsxMjY5LDE4IEBAIGlubGluZSB2b2lkIFN0eWxlQnVp
bGRlckN1c3RvbTo6YXBwbHlWYWwKICAgICAgICAgcmV0dXJuOwogCiAgICAgQ29sb3IgY29sb3I7
Ci0gICAgYXV0byBwYWludFR5cGUgPSBTVkdfUEFJTlRUWVBFX1JHQkNPTE9SOworICAgIGF1dG8g
cGFpbnRUeXBlID0gU1ZHUGFpbnRUeXBlOjpSR0JDb2xvcjsKICAgICBpZiAobG9jYWxWYWx1ZS0+
aXNVUkkoKSkgewotICAgICAgICBwYWludFR5cGUgPSBTVkdfUEFJTlRUWVBFX1VSSTsKKyAgICAg
ICAgcGFpbnRUeXBlID0gU1ZHUGFpbnRUeXBlOjpVUkk7CiAgICAgICAgIHVybCA9IGxvY2FsVmFs
dWUtPnN0cmluZ1ZhbHVlKCk7CiAgICAgfSBlbHNlIGlmIChsb2NhbFZhbHVlLT5pc1ZhbHVlSUQo
KSAmJiBsb2NhbFZhbHVlLT52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVOb25lKQotICAgICAgICBwYWlu
dFR5cGUgPSB1cmwuaXNFbXB0eSgpID8gU1ZHX1BBSU5UVFlQRV9OT05FIDogU1ZHX1BBSU5UVFlQ
RV9VUklfTk9ORTsKKyAgICAgICAgcGFpbnRUeXBlID0gdXJsLmlzRW1wdHkoKSA/IFNWR1BhaW50
VHlwZTo6Tm9uZSA6IFNWR1BhaW50VHlwZTo6VVJJTm9uZTsKICAgICBlbHNlIGlmIChsb2NhbFZh
bHVlLT5pc1ZhbHVlSUQoKSAmJiBsb2NhbFZhbHVlLT52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVDdXJy
ZW50Y29sb3IpIHsKICAgICAgICAgY29sb3IgPSBzdHlsZVJlc29sdmVyLnN0eWxlKCktPmNvbG9y
KCk7Ci0gICAgICAgIHBhaW50VHlwZSA9IHVybC5pc0VtcHR5KCkgPyBTVkdfUEFJTlRUWVBFX0NV
UlJFTlRDT0xPUiA6IFNWR19QQUlOVFRZUEVfVVJJX0NVUlJFTlRDT0xPUjsKKyAgICAgICAgcGFp
bnRUeXBlID0gdXJsLmlzRW1wdHkoKSA/IFNWR1BhaW50VHlwZTo6Q3VycmVudENvbG9yIDogU1ZH
UGFpbnRUeXBlOjpVUklDdXJyZW50Q29sb3I7CiAgICAgfSBlbHNlIHsKICAgICAgICAgY29sb3Ig
PSBzdHlsZVJlc29sdmVyLmNvbG9yRnJvbVByaW1pdGl2ZVZhbHVlKCpsb2NhbFZhbHVlKTsKLSAg
ICAgICAgcGFpbnRUeXBlID0gdXJsLmlzRW1wdHkoKSA/IFNWR19QQUlOVFRZUEVfUkdCQ09MT1Ig
OiBTVkdfUEFJTlRUWVBFX1VSSV9SR0JDT0xPUjsKKyAgICAgICAgcGFpbnRUeXBlID0gdXJsLmlz
RW1wdHkoKSA/IFNWR1BhaW50VHlwZTo6UkdCQ29sb3IgOiBTVkdQYWludFR5cGU6OlVSSVJHQkNv
bG9yOwogICAgIH0KICAgICBzdmdTdHlsZS5zZXRGaWxsUGFpbnQocGFpbnRUeXBlLCBjb2xvciwg
dXJsLCBzdHlsZVJlc29sdmVyLmFwcGx5UHJvcGVydHlUb1JlZ3VsYXJTdHlsZSgpLCBzdHlsZVJl
c29sdmVyLmFwcGx5UHJvcGVydHlUb1Zpc2l0ZWRMaW5rU3R5bGUoKSk7CiB9CkBAIC0xMzEzLDE4
ICsxMzEzLDE4IEBAIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWwKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgQ29sb3IgY29sb3I7Ci0gICAgYXV0byBwYWludFR5cGUgPSBT
VkdfUEFJTlRUWVBFX1JHQkNPTE9SOworICAgIGF1dG8gcGFpbnRUeXBlID0gU1ZHUGFpbnRUeXBl
OjpSR0JDb2xvcjsKICAgICBpZiAobG9jYWxWYWx1ZS0+aXNVUkkoKSkgewotICAgICAgICBwYWlu
dFR5cGUgPSBTVkdfUEFJTlRUWVBFX1VSSTsKKyAgICAgICAgcGFpbnRUeXBlID0gU1ZHUGFpbnRU
eXBlOjpVUkk7CiAgICAgICAgIHVybCA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPihsb2Nh
bFZhbHVlKS0+c3RyaW5nVmFsdWUoKTsKICAgICB9IGVsc2UgaWYgKGxvY2FsVmFsdWUtPmlzVmFs
dWVJRCgpICYmIGxvY2FsVmFsdWUtPnZhbHVlSUQoKSA9PSBDU1NWYWx1ZU5vbmUpCi0gICAgICAg
IHBhaW50VHlwZSA9IHVybC5pc0VtcHR5KCkgPyBTVkdfUEFJTlRUWVBFX05PTkUgOiBTVkdfUEFJ
TlRUWVBFX1VSSV9OT05FOworICAgICAgICBwYWludFR5cGUgPSB1cmwuaXNFbXB0eSgpID8gU1ZH
UGFpbnRUeXBlOjpOb25lIDogU1ZHUGFpbnRUeXBlOjpVUklOb25lOwogICAgIGVsc2UgaWYgKGxv
Y2FsVmFsdWUtPmlzVmFsdWVJRCgpICYmIGxvY2FsVmFsdWUtPnZhbHVlSUQoKSA9PSBDU1NWYWx1
ZUN1cnJlbnRjb2xvcikgewogICAgICAgICBjb2xvciA9IHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+
Y29sb3IoKTsKLSAgICAgICAgcGFpbnRUeXBlID0gdXJsLmlzRW1wdHkoKSA/IFNWR19QQUlOVFRZ
UEVfQ1VSUkVOVENPTE9SIDogU1ZHX1BBSU5UVFlQRV9VUklfQ1VSUkVOVENPTE9SOworICAgICAg
ICBwYWludFR5cGUgPSB1cmwuaXNFbXB0eSgpID8gU1ZHUGFpbnRUeXBlOjpDdXJyZW50Q29sb3Ig
OiBTVkdQYWludFR5cGU6OlVSSUN1cnJlbnRDb2xvcjsKICAgICB9IGVsc2UgewogICAgICAgICBj
b2xvciA9IHN0eWxlUmVzb2x2ZXIuY29sb3JGcm9tUHJpbWl0aXZlVmFsdWUoKmxvY2FsVmFsdWUp
OwotICAgICAgICBwYWludFR5cGUgPSB1cmwuaXNFbXB0eSgpID8gU1ZHX1BBSU5UVFlQRV9SR0JD
T0xPUiA6IFNWR19QQUlOVFRZUEVfVVJJX1JHQkNPTE9SOworICAgICAgICBwYWludFR5cGUgPSB1
cmwuaXNFbXB0eSgpID8gU1ZHUGFpbnRUeXBlOjpSR0JDb2xvciA6IFNWR1BhaW50VHlwZTo6VVJJ
UkdCQ29sb3I7CiAgICAgfQogICAgIHN2Z1N0eWxlLnNldFN0cm9rZVBhaW50KHBhaW50VHlwZSwg
Y29sb3IsIHVybCwgc3R5bGVSZXNvbHZlci5hcHBseVByb3BlcnR5VG9SZWd1bGFyU3R5bGUoKSwg
c3R5bGVSZXNvbHZlci5hcHBseVByb3BlcnR5VG9WaXNpdGVkTGlua1N0eWxlKCkpOwogfQpJbmRl
eDogU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHAJ
KHJldmlzaW9uIDIzMjIyOCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVy
dHlQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDUzLDcgKzI0NTMsNyBAQCBzdGF0aWMg
UmVmUHRyPENTU0Jhc2ljU2hhcGVQb2x5Z29uPiBjb25zCiB7CiAgICAgUmVmUHRyPENTU0Jhc2lj
U2hhcGVQb2x5Z29uPiBzaGFwZSA9IENTU0Jhc2ljU2hhcGVQb2x5Z29uOjpjcmVhdGUoKTsKICAg
ICBpZiAoaWRlbnRNYXRjaGVzPENTU1ZhbHVlRXZlbm9kZCwgQ1NTVmFsdWVOb256ZXJvPihhcmdz
LnBlZWsoKS5pZCgpKSkgewotICAgICAgICBzaGFwZS0+c2V0V2luZFJ1bGUoYXJncy5jb25zdW1l
SW5jbHVkaW5nV2hpdGVzcGFjZSgpLmlkKCkgPT0gQ1NTVmFsdWVFdmVub2RkID8gUlVMRV9FVkVO
T0REIDogUlVMRV9OT05aRVJPKTsKKyAgICAgICAgc2hhcGUtPnNldFdpbmRSdWxlKGFyZ3MuY29u
c3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKS5pZCgpID09IENTU1ZhbHVlRXZlbm9kZCA/IFdpbmRS
dWxlOjpFdmVuT2RkIDogV2luZFJ1bGU6Ok5vblplcm8pOwogICAgICAgICBpZiAoIWNvbnN1bWVD
b21tYUluY2x1ZGluZ1doaXRlc3BhY2UoYXJncykpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0
cjsKICAgICB9CkBAIC0yNDcyLDkgKzI0NzIsOSBAQCBzdGF0aWMgUmVmUHRyPENTU0Jhc2ljU2hh
cGVQb2x5Z29uPiBjb25zCiAKIHN0YXRpYyBSZWZQdHI8Q1NTQmFzaWNTaGFwZVBhdGg+IGNvbnN1
bWVCYXNpY1NoYXBlUGF0aChDU1NQYXJzZXJUb2tlblJhbmdlJiBhcmdzKQogewotICAgIFdpbmRS
dWxlIHdpbmRSdWxlID0gUlVMRV9OT05aRVJPOworICAgIFdpbmRSdWxlIHdpbmRSdWxlID0gV2lu
ZFJ1bGU6Ok5vblplcm87CiAgICAgaWYgKGlkZW50TWF0Y2hlczxDU1NWYWx1ZUV2ZW5vZGQsIENT
U1ZhbHVlTm9uemVybz4oYXJncy5wZWVrKCkuaWQoKSkpIHsKLSAgICAgICAgd2luZFJ1bGUgPSBh
cmdzLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCkuaWQoKSA9PSBDU1NWYWx1ZUV2ZW5vZGQg
PyBSVUxFX0VWRU5PREQgOiBSVUxFX05PTlpFUk87CisgICAgICAgIHdpbmRSdWxlID0gYXJncy5j
b25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpLmlkKCkgPT0gQ1NTVmFsdWVFdmVub2RkID8gV2lu
ZFJ1bGU6OkV2ZW5PZGQgOiBXaW5kUnVsZTo6Tm9uWmVybzsKICAgICAgICAgaWYgKCFjb25zdW1l
Q29tbWFJbmNsdWRpbmdXaGl0ZXNwYWNlKGFyZ3MpKQogICAgICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEQmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAJKHJldmlzaW9uIDIzMjIyOCkK
KysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJh
c2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDQ2LDcgKzEwNDYsNyBAQCBib29sIENhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyREJhc2U6OmlzRnVsCiAKIHN0YXRpYyBXaW5kUnVsZSB0b1dpbmRSdWxl
KENhbnZhc0ZpbGxSdWxlIHJ1bGUpCiB7Ci0gICAgcmV0dXJuIHJ1bGUgPT0gQ2FudmFzRmlsbFJ1
bGU6Ok5vbnplcm8gPyBSVUxFX05PTlpFUk8gOiBSVUxFX0VWRU5PREQ7CisgICAgcmV0dXJuIHJ1
bGUgPT0gQ2FudmFzRmlsbFJ1bGU6Ok5vbnplcm8gPyBXaW5kUnVsZTo6Tm9uWmVybyA6IFdpbmRS
dWxlOjpFdmVuT2RkOwogfQogCiB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmZp
bGwoQ2FudmFzRmlsbFJ1bGUgd2luZGluZ1J1bGUpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdl
L2FuaW1hdGlvbi9DU1NQcm9wZXJ0eUFuaW1hdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ1NTUHJvcGVydHlBbmltYXRpb24uY3BwCShyZXZpc2lv
biAyMzIyMjgpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9DU1NQcm9wZXJ0eUFu
aW1hdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzNDQsNyArMTM0NCw3IEBAIHB1YmxpYzoK
IGNsYXNzIFByb3BlcnR5V3JhcHBlclNWR1BhaW50IDogcHVibGljIEFuaW1hdGlvblByb3BlcnR5
V3JhcHBlckJhc2UgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAg
IFByb3BlcnR5V3JhcHBlclNWR1BhaW50KENTU1Byb3BlcnR5SUQgcHJvcCwgY29uc3QgU1ZHUGFp
bnRUeXBlJiAoUmVuZGVyU3R5bGU6OipwYWludFR5cGVHZXR0ZXIpKCkgY29uc3QsIENvbG9yIChS
ZW5kZXJTdHlsZTo6KmdldHRlcikoKSBjb25zdCwgdm9pZCAoUmVuZGVyU3R5bGU6OipzZXR0ZXIp
KGNvbnN0IENvbG9yJikpCisgICAgUHJvcGVydHlXcmFwcGVyU1ZHUGFpbnQoQ1NTUHJvcGVydHlJ
RCBwcm9wLCBTVkdQYWludFR5cGUgKFJlbmRlclN0eWxlOjoqcGFpbnRUeXBlR2V0dGVyKSgpIGNv
bnN0LCBDb2xvciAoUmVuZGVyU3R5bGU6OipnZXR0ZXIpKCkgY29uc3QsIHZvaWQgKFJlbmRlclN0
eWxlOjoqc2V0dGVyKShjb25zdCBDb2xvciYpKQogICAgICAgICA6IEFuaW1hdGlvblByb3BlcnR5
V3JhcHBlckJhc2UocHJvcCkKICAgICAgICAgLCBtX3BhaW50VHlwZUdldHRlcihwYWludFR5cGVH
ZXR0ZXIpCiAgICAgICAgICwgbV9nZXR0ZXIoZ2V0dGVyKQpAQCAtMTM2NSw3ICsxMzY1LDcgQEAg
cHVibGljOgogICAgICAgICAvLyBXZSBvbmx5IHN1cHBvcnQgYW5pbWF0aW9ucyBiZXR3ZWVuIFNW
R1BhaW50cyB0aGF0IGFyZSBwdXJlIENvbG9yIHZhbHVlcy4KICAgICAgICAgLy8gRm9yIGV2ZXJ5
dGhpbmcgZWxzZSB3ZSBtdXN0IHJldHVybiB0cnVlIGZvciB0aGlzIG1ldGhvZCwgb3RoZXJ3aXNl
CiAgICAgICAgIC8vIHdlIHdpbGwgdHJ5IHRvIGFuaW1hdGUgYmV0d2VlbiB2YWx1ZXMgZm9yZXZl
ci4KLSAgICAgICAgaWYgKChhLT4qbV9wYWludFR5cGVHZXR0ZXIpKCkgPT0gU1ZHX1BBSU5UVFlQ
RV9SR0JDT0xPUikgeworICAgICAgICBpZiAoKGEtPiptX3BhaW50VHlwZUdldHRlcikoKSA9PSBT
VkdQYWludFR5cGU6OlJHQkNvbG9yKSB7CiAgICAgICAgICAgICBDb2xvciBmcm9tQ29sb3IgPSAo
YS0+Km1fZ2V0dGVyKSgpOwogICAgICAgICAgICAgQ29sb3IgdG9Db2xvciA9IChiLT4qbV9nZXR0
ZXIpKCk7CiAKQEAgLTEzODQsOCArMTM4NCw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgYmxlbmQo
Y29uc3QgQ1NTUHJvcGVydHlCbGVuZGluZ0NsaWVudCogYW5pbSwgUmVuZGVyU3R5bGUqIGRzdCwg
Y29uc3QgUmVuZGVyU3R5bGUqIGEsIGNvbnN0IFJlbmRlclN0eWxlKiBiLCBkb3VibGUgcHJvZ3Jl
c3MpIGNvbnN0IG92ZXJyaWRlCiAgICAgewotICAgICAgICBpZiAoKGEtPiptX3BhaW50VHlwZUdl
dHRlcikoKSAhPSBTVkdfUEFJTlRUWVBFX1JHQkNPTE9SCi0gICAgICAgICAgICB8fCAoYi0+Km1f
cGFpbnRUeXBlR2V0dGVyKSgpICE9IFNWR19QQUlOVFRZUEVfUkdCQ09MT1IpCisgICAgICAgIGlm
ICgoYS0+Km1fcGFpbnRUeXBlR2V0dGVyKSgpICE9IFNWR1BhaW50VHlwZTo6UkdCQ29sb3IKKyAg
ICAgICAgICAgIHx8IChiLT4qbV9wYWludFR5cGVHZXR0ZXIpKCkgIT0gU1ZHUGFpbnRUeXBlOjpS
R0JDb2xvcikKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBDb2xvciBmcm9tQ29sb3Ig
PSAoYS0+Km1fZ2V0dGVyKSgpOwpAQCAtMTQxMCw3ICsxNDEwLDcgQEAgcHVibGljOgogI2VuZGlm
CiAKIHByaXZhdGU6Ci0gICAgY29uc3QgU1ZHUGFpbnRUeXBlJiAoUmVuZGVyU3R5bGU6OiptX3Bh
aW50VHlwZUdldHRlcikoKSBjb25zdDsKKyAgICBTVkdQYWludFR5cGUgKFJlbmRlclN0eWxlOjoq
bV9wYWludFR5cGVHZXR0ZXIpKCkgY29uc3Q7CiAgICAgQ29sb3IgKFJlbmRlclN0eWxlOjoqbV9n
ZXR0ZXIpKCkgY29uc3Q7CiAgICAgdm9pZCAoUmVuZGVyU3R5bGU6OiptX3NldHRlcikoY29uc3Qg
Q29sb3ImKTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9h
dFBvbHlnb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0Zsb2F0UG9seWdvbi5jcHAJKHJldmlzaW9uIDIzMjIyOCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0UG9seWdvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5
OCw3ICsxOTgsNyBAQCBib29sIEZsb2F0UG9seWdvbjo6Y29udGFpbnMoY29uc3QgRmxvYXRQCiB7
CiAgICAgaWYgKCFtX2JvdW5kaW5nQm94LmNvbnRhaW5zKHBvaW50KSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgIHJldHVybiBmaWxsUnVsZSgpID09IFJVTEVfTk9OWkVSTyA/IGNvbnRhaW5z
Tm9uWmVybyhwb2ludCkgOiBjb250YWluc0V2ZW5PZGQocG9pbnQpOworICAgIHJldHVybiBmaWxs
UnVsZSgpID09IFdpbmRSdWxlOjpOb25aZXJvID8gY29udGFpbnNOb25aZXJvKHBvaW50KSA6IGNv
bnRhaW5zRXZlbk9kZChwb2ludCk7CiB9CiAKIGJvb2wgVmVydGV4UGFpcjo6b3ZlcmxhcHNSZWN0
KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAkocmV2aXNpb24gMjMy
MjI4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTA3LDcgKzkwNyw3IEBAIHZvaWQgR3JhcGhpY3NDb250
ZXh0OjpmaWxsUmVjdFdpdGhSb3VuZGUKICAgICBXaW5kUnVsZSBvbGRGaWxsUnVsZSA9IGZpbGxS
dWxlKCk7CiAgICAgQ29sb3Igb2xkRmlsbENvbG9yID0gZmlsbENvbG9yKCk7CiAgICAgCi0gICAg
c2V0RmlsbFJ1bGUoUlVMRV9FVkVOT0REKTsKKyAgICBzZXRGaWxsUnVsZShXaW5kUnVsZTo6RXZl
bk9kZCk7CiAgICAgc2V0RmlsbENvbG9yKGNvbG9yKTsKIAogICAgIGZpbGxQYXRoKHBhdGgpOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0LmgJKHJldmlzaW9uIDIzMjIyOCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNzIsNyArMTcyLDcg
QEAgc3RydWN0IEdyYXBoaWNzQ29udGV4dFN0YXRlIHsKICAgICBDb2xvciBzaGFkb3dDb2xvcjsK
IAogICAgIFN0cm9rZVN0eWxlIHN0cm9rZVN0eWxlIHsgU29saWRTdHJva2UgfTsKLSAgICBXaW5k
UnVsZSBmaWxsUnVsZSB7IFJVTEVfTk9OWkVSTyB9OworICAgIFdpbmRSdWxlIGZpbGxSdWxlIHsg
V2luZFJ1bGU6Ok5vblplcm8gfTsKIAogICAgIGZsb2F0IGFscGhhIHsgMSB9OwogICAgIENvbXBv
c2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wZXJhdG9yIHsgQ29tcG9zaXRlU291cmNlT3ZlciB9OwpA
QCAtMzg3LDcgKzM4Nyw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY2xpcE91dChjb25zdCBGbG9h
dFJlY3QmKTsKICAgICB2b2lkIGNsaXBPdXRSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJvdW5kZWRS
ZWN0Jik7Ci0gICAgdm9pZCBjbGlwUGF0aChjb25zdCBQYXRoJiwgV2luZFJ1bGUgPSBSVUxFX0VW
RU5PREQpOworICAgIHZvaWQgY2xpcFBhdGgoY29uc3QgUGF0aCYsIFdpbmRSdWxlID0gV2luZFJ1
bGU6OkV2ZW5PZGQpOwogICAgIHZvaWQgY2xpcFRvSW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImLCBj
b25zdCBGbG9hdFJlY3QmKTsKICAgICAKICAgICBJbnRSZWN0IGNsaXBCb3VuZHMoKSBjb25zdDsK
QEAgLTQ2NSw3ICs0NjUsNyBAQCBwdWJsaWM6CiAgICAgLy8gVGhpcyBjbGlwIGZ1bmN0aW9uIGlz
IHVzZWQgb25seSBieSA8Y2FudmFzPiBjb2RlLiBJdCBhbGxvd3MKICAgICAvLyBpbXBsZW1lbnRh
dGlvbnMgdG8gaGFuZGxlIGNsaXBwaW5nIG9uIHRoZSBjYW52YXMgZGlmZmVyZW50bHkgc2luY2UK
ICAgICAvLyB0aGUgZGlzY2lwbGluZSBpcyBkaWZmZXJlbnQuCi0gICAgdm9pZCBjYW52YXNDbGlw
KGNvbnN0IFBhdGgmLCBXaW5kUnVsZSA9IFJVTEVfRVZFTk9ERCk7CisgICAgdm9pZCBjYW52YXND
bGlwKGNvbnN0IFBhdGgmLCBXaW5kUnVsZSA9IFdpbmRSdWxlOjpFdmVuT2RkKTsKICAgICB2b2lk
IGNsaXBPdXQoY29uc3QgUGF0aCYpOwogCiAgICAgdm9pZCBzY2FsZShmbG9hdCBzKQpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5j
cHAJKHJldmlzaW9uIDIzMjIyOCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzTGF5ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNDYsNyArMzQ2LDcgQEAgV2lu
ZFJ1bGUgR3JhcGhpY3NMYXllcjo6c2hhcGVMYXllcldpbmRSdQogI2lmIFVTRShDQSkKICAgICBy
ZXR1cm4gbV9zaGFwZUxheWVyV2luZFJ1bGU7CiAjZWxzZQotICAgIHJldHVybiBSVUxFX05PTlpF
Uk87CisgICAgcmV0dXJuIFdpbmRSdWxlOjpOb25aZXJvOwogI2VuZGlmCiB9CiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmgJKHJl
dmlzaW9uIDIzMjIyOCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzTGF5ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNjkwLDcgKzY5MCw3IEBAIHByb3RlY3RlZDoK
IAogI2lmIFVTRShDQSkKICAgICBQYXRoIG1fc2hhcGVMYXllclBhdGg7Ci0gICAgV2luZFJ1bGUg
bV9zaGFwZUxheWVyV2luZFJ1bGUgeyBSVUxFX05PTlpFUk8gfTsKKyAgICBXaW5kUnVsZSBtX3No
YXBlTGF5ZXJXaW5kUnVsZSB7IFdpbmRSdWxlOjpOb25aZXJvIH07CiAjZW5kaWYKIH07CiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXMuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlw
ZXMuY3BwCShyZXZpc2lvbiAyMzIyMjgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc1R5cGVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM4LDEwICsxMzgsMTAg
QEAgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgQgogVGV4dFN0cmVhbSYg
b3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgV2luZFJ1bGUgcnVsZSkKIHsKICAgICBzd2l0Y2gg
KHJ1bGUpIHsKLSAgICBjYXNlIFJVTEVfTk9OWkVSTzoKKyAgICBjYXNlIFdpbmRSdWxlOjpOb25a
ZXJvOgogICAgICAgICB0cyA8PCAiTk9OLVpFUk8iOwogICAgICAgICBicmVhazsKLSAgICBjYXNl
IFJVTEVfRVZFTk9ERDoKKyAgICBjYXNlIFdpbmRSdWxlOjpFdmVuT2RkOgogICAgICAgICB0cyA8
PCAiRVZFTi1PREQiOwogICAgICAgICBicmVhazsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXRoLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvUGF0aC5oCShyZXZpc2lvbiAyMzIyMjgpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXRoLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyMSw3ICsx
MjEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIAogICAgICAgICBzdGF0aWMgUGF0
aCBwb2x5Z29uUGF0aEZyb21Qb2ludHMoY29uc3QgVmVjdG9yPEZsb2F0UG9pbnQ+Jik7CiAKLSAg
ICAgICAgYm9vbCBjb250YWlucyhjb25zdCBGbG9hdFBvaW50JiwgV2luZFJ1bGUgcnVsZSA9IFJV
TEVfTk9OWkVSTykgY29uc3Q7CisgICAgICAgIGJvb2wgY29udGFpbnMoY29uc3QgRmxvYXRQb2lu
dCYsIFdpbmRSdWxlID0gV2luZFJ1bGU6Ok5vblplcm8pIGNvbnN0OwogICAgICAgICBib29sIHN0
cm9rZUNvbnRhaW5zKFN0cm9rZVN0eWxlQXBwbGllciosIGNvbnN0IEZsb2F0UG9pbnQmKSBjb25z
dDsKICAgICAgICAgLy8gZmFzdEJvdW5kaW5nUmVjdCgpIHNob3VsZCBlcXVhbCBvciBjb250YWlu
IGJvdW5kaW5nUmVjdCgpOyBib3VuZGluZ1JlY3QoKQogICAgICAgICAvLyBzaG91bGQgcGVyZmVj
dGx5IGJvdW5kIHRoZSBwb2ludHMgd2l0aGluIHRoZSBwYXRoLgpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAJKHJldmlzaW9uIDIzMjIy
OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC02MDgsNyArNjA4LDcgQEAgdm9pZCBTaGFkb3dCbHVyOjpkcmF3SW5z
ZXRTaGFkb3coY29uc3QgQQogICAgICAgICBlbHNlCiAgICAgICAgICAgICBwYXRoLmFkZFJvdW5k
ZWRSZWN0KGhvbGVSZWN0KTsKIAotICAgICAgICBzaGFkb3dDb250ZXh0LnNldEZpbGxSdWxlKFJV
TEVfRVZFTk9ERCk7CisgICAgICAgIHNoYWRvd0NvbnRleHQuc2V0RmlsbFJ1bGUoV2luZFJ1bGU6
OkV2ZW5PZGQpOwogICAgICAgICBzaGFkb3dDb250ZXh0LnNldEZpbGxDb2xvcihDb2xvcjo6Ymxh
Y2spOwogICAgICAgICBzaGFkb3dDb250ZXh0LmZpbGxQYXRoKHBhdGgpOwogCkBAIC02ODIsNyAr
NjgyLDcgQEAgdm9pZCBTaGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFkb3dXaXRob3V0VAogICAgICAg
ICBlbHNlCiAgICAgICAgICAgICBwYXRoLmFkZFJvdW5kZWRSZWN0KGhvbGVSZWN0KTsKIAotICAg
ICAgICBzaGFkb3dDb250ZXh0LnNldEZpbGxSdWxlKFJVTEVfRVZFTk9ERCk7CisgICAgICAgIHNo
YWRvd0NvbnRleHQuc2V0RmlsbFJ1bGUoV2luZFJ1bGU6OkV2ZW5PZGQpOwogICAgICAgICBzaGFk
b3dDb250ZXh0LnNldEZpbGxDb2xvcihDb2xvcjo6YmxhY2spOwogICAgICAgICBzaGFkb3dDb250
ZXh0LmZpbGxQYXRoKHBhdGgpOwogCkBAIC03NDMsNyArNzQzLDcgQEAgdm9pZCBTaGFkb3dCbHVy
OjpkcmF3SW5zZXRTaGFkb3dXaXRoVGlsaQogICAgICAgICBHcmFwaGljc0NvbnRleHQmIHNoYWRv
d0NvbnRleHQgPSBtX2xheWVySW1hZ2UtPmNvbnRleHQoKTsKICAgICAgICAgR3JhcGhpY3NDb250
ZXh0U3RhdGVTYXZlciBzaGFkb3dTdGF0ZVNhdmVyKHNoYWRvd0NvbnRleHQpOwogICAgICAgICBz
aGFkb3dDb250ZXh0LmNsZWFyUmVjdCh0ZW1wbGF0ZUJvdW5kcyk7Ci0gICAgICAgIHNoYWRvd0Nv
bnRleHQuc2V0RmlsbFJ1bGUoUlVMRV9FVkVOT0REKTsKKyAgICAgICAgc2hhZG93Q29udGV4dC5z
ZXRGaWxsUnVsZShXaW5kUnVsZTo6RXZlbk9kZCk7CiAgICAgICAgIHNoYWRvd0NvbnRleHQuc2V0
RmlsbENvbG9yKENvbG9yOjpibGFjayk7CiAKICAgICAgICAgUGF0aCBwYXRoOwpAQCAtNzc5LDcg
Kzc3OSw3IEBAIHZvaWQgU2hhZG93Qmx1cjo6ZHJhd0luc2V0U2hhZG93V2l0aFRpbGkKIAogICAg
IHsKICAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBmaWxsU3RhdGVTYXZlcihncmFw
aGljc0NvbnRleHQpOwotICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0RmlsbFJ1bGUoUlVMRV9F
VkVOT0REKTsKKyAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldEZpbGxSdWxlKFdpbmRSdWxlOjpF
dmVuT2RkKTsKICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldEZpbGxDb2xvcihtX2NvbG9yKTsK
ICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LmNsZWFyU2hhZG93KCk7CiAgICAgICAgIGdyYXBoaWNz
Q29udGV4dC5maWxsUGF0aChleHRlcmlvclBhdGgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvV2luZFJ1bGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9XaW5kUnVsZS5oCShyZXZpc2lvbiAyMzIyMjgpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XaW5kUnVsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
NSwxNyArMjUsMTMgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAogICovCiAKLSNpZm5kZWYgV2luZFJ1bGVf
aAotI2RlZmluZSBXaW5kUnVsZV9oCisjcHJhZ21hIG9uY2UKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1lbnVtIFdpbmRSdWxlIHsKLSAgICBSVUxFX05PTlpFUk8gPSAwLAotICAgIFJVTEVfRVZF
Tk9ERCA9IDEKK2VudW0gY2xhc3MgV2luZFJ1bGUgeworICAgIE5vblplcm8gPSAwLAorICAgIEV2
ZW5PZGQgPSAxCiB9OwogCiB9Ci0KLSNlbmRpZiAvLyBXaW5kUnVsZV9oCi0KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FMYXllckNvY29h
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2Nv
Y29hL1BsYXRmb3JtQ0FMYXllckNvY29hLm1tCShyZXZpc2lvbiAyMzIyMjgpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5t
bQkod29ya2luZyBjb3B5KQpAQCAtOTQxLDkgKzk0MSw5IEBAIFdpbmRSdWxlIFBsYXRmb3JtQ0FM
YXllckNvY29hOjpzaGFwZVdpbmQKIAogICAgIE5TU3RyaW5nICpmaWxsUnVsZSA9IFsoQ0FTaGFw
ZUxheWVyICopbV9sYXllciBmaWxsUnVsZV07CiAgICAgaWYgKFtmaWxsUnVsZSBpc0VxdWFsVG9T
dHJpbmc6QCJldmVuLW9kZCJdKQotICAgICAgICByZXR1cm4gUlVMRV9FVkVOT0REOworICAgICAg
ICByZXR1cm4gV2luZFJ1bGU6OkV2ZW5PZGQ7CiAKLSAgICByZXR1cm4gUlVMRV9OT05aRVJPOwor
ICAgIHJldHVybiBXaW5kUnVsZTo6Tm9uWmVybzsKIH0KIAogdm9pZCBQbGF0Zm9ybUNBTGF5ZXJD
b2NvYTo6c2V0U2hhcGVXaW5kUnVsZShXaW5kUnVsZSB3aW5kUnVsZSkKQEAgLTk1MSwxMCArOTUx
LDEwIEBAIHZvaWQgUGxhdGZvcm1DQUxheWVyQ29jb2E6OnNldFNoYXBlV2luZFIKICAgICBBU1NF
UlQobV9sYXllclR5cGUgPT0gTGF5ZXJUeXBlU2hhcGVMYXllcik7CiAKICAgICBzd2l0Y2ggKHdp
bmRSdWxlKSB7Ci0gICAgY2FzZSBSVUxFX05PTlpFUk86CisgICAgY2FzZSBXaW5kUnVsZTo6Tm9u
WmVybzoKICAgICAgICAgWyhDQVNoYXBlTGF5ZXIgKiltX2xheWVyIHNldEZpbGxSdWxlOkAibm9u
LXplcm8iXTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBSVUxFX0VWRU5PREQ6CisgICAgY2Fz
ZSBXaW5kUnVsZTo6RXZlbk9kZDoKICAgICAgICAgWyhDQVNoYXBlTGF5ZXIgKiltX2xheWVyIHNl
dEZpbGxSdWxlOkAiZXZlbi1vZGQiXTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbi5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2lu
L1BsYXRmb3JtQ0FMYXllcldpbi5jcHAJKHJldmlzaW9uIDIzMjIyOCkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW4uY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC02NzAsNyArNjcwLDcgQEAgdm9pZCBQbGF0Zm9ybUNBTGF5ZXJXaW46OnNl
dFNoYXBlUm91bmRlZAogV2luZFJ1bGUgUGxhdGZvcm1DQUxheWVyV2luOjpzaGFwZVdpbmRSdWxl
KCkgY29uc3QKIHsKICAgICAvLyBGSVhNRTogaW1wbGVtZW50LgotICAgIHJldHVybiBSVUxFX05P
TlpFUk87CisgICAgcmV0dXJuIFdpbmRSdWxlOjpOb25aZXJvOwogfQogCiB2b2lkIFBsYXRmb3Jt
Q0FMYXllcldpbjo6c2V0U2hhcGVXaW5kUnVsZShXaW5kUnVsZSkKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvT3BlcmF0aW9ucy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9PcGVyYXRp
b25zLmNwcAkocmV2aXNpb24gMjMyMjI4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vQ2Fpcm9PcGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE3LDcg
KzExNyw3IEBAIHN0YXRpYyB2b2lkIGNsaXBGb3JQYXR0ZXJuRmlsbGluZyhjYWlyb18KIAogc3Rh
dGljIHZvaWQgcHJlcGFyZUZvckZpbGxpbmcoY2Fpcm9fdCogY3IsIGNvbnN0IENhaXJvOjpGaWxs
U291cmNlJiBmaWxsU291cmNlLCBQYXR0ZXJuQWRqdXN0bWVudCBwYXR0ZXJuQWRqdXN0bWVudCkK
IHsKLSAgICBjYWlyb19zZXRfZmlsbF9ydWxlKGNyLCBmaWxsU291cmNlLmZpbGxSdWxlID09IFJV
TEVfRVZFTk9ERCA/IENBSVJPX0ZJTExfUlVMRV9FVkVOX09ERCA6IENBSVJPX0ZJTExfUlVMRV9X
SU5ESU5HKTsKKyAgICBjYWlyb19zZXRfZmlsbF9ydWxlKGNyLCBmaWxsU291cmNlLmZpbGxSdWxl
ID09IFdpbmRSdWxlOjpFdmVuT2RkID8gQ0FJUk9fRklMTF9SVUxFX0VWRU5fT0REIDogQ0FJUk9f
RklMTF9SVUxFX1dJTkRJTkcpOwogCiAgICAgYm9vbCBhZGp1c3RGb3JBbHBoYSA9IHBhdHRlcm5B
ZGp1c3RtZW50ID09IEFkanVzdFBhdHRlcm5Gb3JHbG9iYWxBbHBoYTsKIApAQCAtMTI2MSw3ICsx
MjYxLDcgQEAgdm9pZCBjbGlwUGF0aChQbGF0Zm9ybUNvbnRleHRDYWlybyYgcGxhdAogICAgICAg
ICBzZXRQYXRoT25DYWlyb0NvbnRleHQoY3IsIHBhdGgucGxhdGZvcm1QYXRoKCktPmNvbnRleHQo
KSk7CiAKICAgICBjYWlyb19maWxsX3J1bGVfdCBzYXZlZEZpbGxSdWxlID0gY2Fpcm9fZ2V0X2Zp
bGxfcnVsZShjcik7Ci0gICAgY2Fpcm9fc2V0X2ZpbGxfcnVsZShjciwgY2xpcFJ1bGUgPT0gUlVM
RV9FVkVOT0REID8gQ0FJUk9fRklMTF9SVUxFX0VWRU5fT0REIDogQ0FJUk9fRklMTF9SVUxFX1dJ
TkRJTkcpOworICAgIGNhaXJvX3NldF9maWxsX3J1bGUoY3IsIGNsaXBSdWxlID09IFdpbmRSdWxl
OjpFdmVuT2RkID8gQ0FJUk9fRklMTF9SVUxFX0VWRU5fT0REIDogQ0FJUk9fRklMTF9SVUxFX1dJ
TkRJTkcpOwogICAgIGNhaXJvX2NsaXAoY3IpOwogICAgIGNhaXJvX3NldF9maWxsX3J1bGUoY3Is
IHNhdmVkRmlsbFJ1bGUpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9DYWlyb09wZXJhdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb09wZXJhdGlvbnMuaAkocmV2aXNpb24gMjMyMjI4
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9PcGVyYXRp
b25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTg5LDcgKzg5LDcgQEAgc3RydWN0IEZpbGxTb3VyY2Ug
ewogICAgIH0gZ3JhZGllbnQ7CiAgICAgQ29sb3IgY29sb3I7CiAKLSAgICBXaW5kUnVsZSBmaWxs
UnVsZSB7IFJVTEVfTk9OWkVSTyB9OworICAgIFdpbmRSdWxlIGZpbGxSdWxlIHsgV2luZFJ1bGU6
Ok5vblplcm8gfTsKIH07CiAKIHN0cnVjdCBTdHJva2VTb3VyY2UgewpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGF0aENhaXJvLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QYXRoQ2Fpcm8uY3BwCShy
ZXZpc2lvbiAyMzIyMjgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9QYXRoQ2Fpcm8uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zODgsNyArMzg4LDcgQEAgYm9vbCBQ
YXRoOjpjb250YWlucyhjb25zdCBGbG9hdFBvaW50JiBwbwogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgY2Fpcm9fdCogY3IgPSBwbGF0Zm9ybVBhdGgoKS0+Y29udGV4dCgpOwogICAgIGNhaXJv
X2ZpbGxfcnVsZV90IGN1ciA9IGNhaXJvX2dldF9maWxsX3J1bGUoY3IpOwotICAgIGNhaXJvX3Nl
dF9maWxsX3J1bGUoY3IsIHJ1bGUgPT0gUlVMRV9FVkVOT0REID8gQ0FJUk9fRklMTF9SVUxFX0VW
RU5fT0REIDogQ0FJUk9fRklMTF9SVUxFX1dJTkRJTkcpOworICAgIGNhaXJvX3NldF9maWxsX3J1
bGUoY3IsIHJ1bGUgPT0gV2luZFJ1bGU6OkV2ZW5PZGQgPyBDQUlST19GSUxMX1JVTEVfRVZFTl9P
REQgOiBDQUlST19GSUxMX1JVTEVfV0lORElORyk7CiAgICAgYm9vbCBjb250YWlucyA9IGNhaXJv
X2luX2ZpbGwoY3IsIHBvaW50LngoKSwgcG9pbnQueSgpKTsKICAgICBjYWlyb19zZXRfZmlsbF9y
dWxlKGNyLCBjdXIpOwogICAgIHJldHVybiBjb250YWluczsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5j
cHAJKHJldmlzaW9uIDIzMjIyOCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjg3LDcgKzY4Nyw3
IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBjYWxjdWxhdGVEcmF3aW5nTW9kZSgKIHsKICAgICBib29s
IHNob3VsZEZpbGwgPSBzdGF0ZS5maWxsUGF0dGVybiB8fCBzdGF0ZS5maWxsQ29sb3IuaXNWaXNp
YmxlKCk7CiAgICAgYm9vbCBzaG91bGRTdHJva2UgPSBzdGF0ZS5zdHJva2VQYXR0ZXJuIHx8IChz
dGF0ZS5zdHJva2VTdHlsZSAhPSBOb1N0cm9rZSAmJiBzdGF0ZS5zdHJva2VDb2xvci5pc1Zpc2li
bGUoKSk7Ci0gICAgYm9vbCB1c2VFT0ZpbGwgPSBzdGF0ZS5maWxsUnVsZSA9PSBSVUxFX0VWRU5P
REQ7CisgICAgYm9vbCB1c2VFT0ZpbGwgPSBzdGF0ZS5maWxsUnVsZSA9PSBXaW5kUnVsZTo6RXZl
bk9kZDsKIAogICAgIGlmIChzaG91bGRGaWxsKSB7CiAgICAgICAgIGlmIChzaG91bGRTdHJva2Up
IHsKQEAgLTc3NCw3ICs3NzQsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFBhdGgoY29u
c3QgUGF0CiAgICAgICAgICAgICBDR0NvbnRleHRBZGRQYXRoKGxheWVyQ29udGV4dCwgcGF0aC5w
bGF0Zm9ybVBhdGgoKSk7CiAgICAgICAgICAgICBDR0NvbnRleHRDb25jYXRDVE0obGF5ZXJDb250
ZXh0LCBtX3N0YXRlLmZpbGxHcmFkaWVudC0+Z3JhZGllbnRTcGFjZVRyYW5zZm9ybSgpKTsKIAot
ICAgICAgICAgICAgaWYgKGZpbGxSdWxlKCkgPT0gUlVMRV9FVkVOT0REKQorICAgICAgICAgICAg
aWYgKGZpbGxSdWxlKCkgPT0gV2luZFJ1bGU6OkV2ZW5PZGQpCiAgICAgICAgICAgICAgICAgQ0dD
b250ZXh0RU9DbGlwKGxheWVyQ29udGV4dCk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAg
ICAgICAgQ0dDb250ZXh0Q2xpcChsYXllckNvbnRleHQpOwpAQCAtNzg4LDcgKzc4OCw3IEBAIHZv
aWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUGF0aChjb25zdCBQYXQKICAgICAgICAgICAgIENHQ29u
dGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsKICAgICAgICAgICAgIENHQ29udGV4
dENvbmNhdENUTShjb250ZXh0LCBtX3N0YXRlLmZpbGxHcmFkaWVudC0+Z3JhZGllbnRTcGFjZVRy
YW5zZm9ybSgpKTsKIAotICAgICAgICAgICAgaWYgKGZpbGxSdWxlKCkgPT0gUlVMRV9FVkVOT0RE
KQorICAgICAgICAgICAgaWYgKGZpbGxSdWxlKCkgPT0gV2luZFJ1bGU6OkV2ZW5PZGQpCiAgICAg
ICAgICAgICAgICAgQ0dDb250ZXh0RU9DbGlwKGNvbnRleHQpOwogICAgICAgICAgICAgZWxzZQog
ICAgICAgICAgICAgICAgIENHQ29udGV4dENsaXAoY29udGV4dCk7CkBAIC04MDIsMTEgKzgwMiwx
MSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFBhdGgoY29uc3QgUGF0CiAgICAgaWYgKG1f
c3RhdGUuZmlsbFBhdHRlcm4pCiAgICAgICAgIGFwcGx5RmlsbFBhdHRlcm4oKTsKICNpZiBVU0Vf
RFJBV19QQVRIX0RJUkVDVAotICAgIENHQ29udGV4dERyYXdQYXRoRGlyZWN0KGNvbnRleHQsIGZp
bGxSdWxlKCkgPT0gUlVMRV9FVkVOT0REID8ga0NHUGF0aEVPRmlsbCA6IGtDR1BhdGhGaWxsLCBw
YXRoLnBsYXRmb3JtUGF0aCgpLCBudWxscHRyKTsKKyAgICBDR0NvbnRleHREcmF3UGF0aERpcmVj
dChjb250ZXh0LCBmaWxsUnVsZSgpID09IFdpbmRSdWxlOjpFdmVuT2RkID8ga0NHUGF0aEVPRmls
bCA6IGtDR1BhdGhGaWxsLCBwYXRoLnBsYXRmb3JtUGF0aCgpLCBudWxscHRyKTsKICNlbHNlCiAg
ICAgQ0dDb250ZXh0QmVnaW5QYXRoKGNvbnRleHQpOwogICAgIENHQ29udGV4dEFkZFBhdGgoY29u
dGV4dCwgcGF0aC5wbGF0Zm9ybVBhdGgoKSk7Ci0gICAgaWYgKGZpbGxSdWxlKCkgPT0gUlVMRV9F
VkVOT0REKQorICAgIGlmIChmaWxsUnVsZSgpID09IFdpbmRSdWxlOjpFdmVuT2RkKQogICAgICAg
ICBDR0NvbnRleHRFT0ZpbGxQYXRoKGNvbnRleHQpOwogICAgIGVsc2UKICAgICAgICAgQ0dDb250
ZXh0RmlsbFBhdGgoY29udGV4dCk7CkBAIC0xMDM0LDcgKzEwMzQsNyBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dDo6ZmlsbFJlY3RXaXRoUm91bmRlCiAgICAgV2luZFJ1bGUgb2xkRmlsbFJ1bGUgPSBm
aWxsUnVsZSgpOwogICAgIENvbG9yIG9sZEZpbGxDb2xvciA9IGZpbGxDb2xvcigpOwogCi0gICAg
c2V0RmlsbFJ1bGUoUlVMRV9FVkVOT0REKTsKKyAgICBzZXRGaWxsUnVsZShXaW5kUnVsZTo6RXZl
bk9kZCk7CiAgICAgc2V0RmlsbENvbG9yKGNvbG9yKTsKIAogICAgIC8vIGZpbGxSZWN0V2l0aFJv
dW5kZWRIb2xlKCkgYXNzdW1lcyB0aGF0IHRoZSBlZGdlcyBvZiByZWN0IGFyZSBjbGlwcGVkIG91
dCwgc28gd2Ugb25seSBjYXJlIGFib3V0IHNoYWRvd3MgY2FzdCBhcm91bmQgaW5zaWRlIHRoZSBo
b2xlLgpAQCAtMTEyNyw3ICsxMTI3LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmNsaXBQYXRo
KGNvbnN0IFBhdAogICAgICAgICBDR0NvbnRleHRCZWdpblBhdGgocGxhdGZvcm1Db250ZXh0KCkp
OwogICAgICAgICBDR0NvbnRleHRBZGRQYXRoKHBsYXRmb3JtQ29udGV4dCgpLCBwYXRoLnBsYXRm
b3JtUGF0aCgpKTsKIAotICAgICAgICBpZiAoY2xpcFJ1bGUgPT0gUlVMRV9FVkVOT0REKQorICAg
ICAgICBpZiAoY2xpcFJ1bGUgPT0gV2luZFJ1bGU6OkV2ZW5PZGQpCiAgICAgICAgICAgICBDR0Nv
bnRleHRFT0NsaXAoY29udGV4dCk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIENHQ29udGV4
dENsaXAoY29udGV4dCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9QYXRoQ0cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL1BhdGhDRy5jcHAJKHJldmlzaW9uIDIzMjIyOCkKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL1BhdGhDRy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4NCw3ICsx
ODQsNyBAQCBib29sIFBhdGg6OmNvbnRhaW5zKGNvbnN0IEZsb2F0UG9pbnQgJnBvCiAKICAgICAv
LyBDR1BhdGhDb250YWluc1BvaW50IHJldHVybnMgZmFsc2UgZm9yIG5vbi1jbG9zZWQgcGF0aHMs
IGFzIGEgd29yay1hcm91bmQsIHdlIGNvcHkgYW5kIGNsb3NlIHRoZSBwYXRoIGZpcnN0LiAgUmFk
YXIgNDc1ODk5OCBhc2tzIGZvciBhIGJldHRlciBDRyBBUEkgdG8gdXNlCiAgICAgUmV0YWluUHRy
PENHTXV0YWJsZVBhdGhSZWY+IHBhdGggPSBhZG9wdENGKGNvcHlDR1BhdGhDbG9zaW5nU3VicGF0
aHMobV9wYXRoKSk7Ci0gICAgYm9vbCByZXQgPSBDR1BhdGhDb250YWluc1BvaW50KHBhdGguZ2V0
KCksIDAsIHBvaW50LCBydWxlID09IFJVTEVfRVZFTk9ERCA/IHRydWUgOiBmYWxzZSk7CisgICAg
Ym9vbCByZXQgPSBDR1BhdGhDb250YWluc1BvaW50KHBhdGguZ2V0KCksIDAsIHBvaW50LCBydWxl
ID09IFdpbmRSdWxlOjpFdmVuT2RkID8gdHJ1ZSA6IGZhbHNlKTsKICAgICByZXR1cm4gcmV0Owog
fQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3ND
b250ZXh0RGlyZWN0MkQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHREaXJlY3QyRC5jcHAJKHJldmlzaW9uIDIzMjIy
OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRl
eHREaXJlY3QyRC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyNDEsNyArMTI0MSw3IEBAIHZvaWQg
R3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdFdpdGhSb3VuZGUKICAgICBXaW5kUnVsZSBvbGRGaWxs
UnVsZSA9IGZpbGxSdWxlKCk7CiAgICAgQ29sb3Igb2xkRmlsbENvbG9yID0gZmlsbENvbG9yKCk7
CiAKLSAgICBzZXRGaWxsUnVsZShSVUxFX0VWRU5PREQpOworICAgIHNldEZpbGxSdWxlKFdpbmRS
dWxlOjpFdmVuT2RkKTsKICAgICBzZXRGaWxsQ29sb3IoY29sb3IpOwogCiAgICAgLy8gZmlsbFJl
Y3RXaXRoUm91bmRlZEhvbGUoKSBhc3N1bWVzIHRoYXQgdGhlIGVkZ2VzIG9mIHJlY3QgYXJlIGNs
aXBwZWQgb3V0LCBzbyB3ZSBvbmx5IGNhcmUgYWJvdXQgc2hhZG93cyBjYXN0IGFyb3VuZCBpbnNp
ZGUgdGhlIGhvbGUuCkBAIC0xMzEyLDcgKzEzMTIsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6
Y2xpcE91dChjb25zdCBQYXRoCiAgICAgYm91bmRpbmdSZWN0LmFwcGVuZEdlb21ldHJ5KHBhdGgu
cGxhdGZvcm1QYXRoKCkpOwogCiAgICAgQ09NUHRyPElEMkQxR2VvbWV0cnlHcm91cD4gcGF0aFRv
Q2xpcDsKLSAgICBib3VuZGluZ1JlY3QuY3JlYXRlR2VvbWV0cnlXaXRoRmlsbE1vZGUoUlVMRV9F
VkVOT0RELCBwYXRoVG9DbGlwKTsKKyAgICBib3VuZGluZ1JlY3QuY3JlYXRlR2VvbWV0cnlXaXRo
RmlsbE1vZGUoV2luZFJ1bGU6OkV2ZW5PZGQsIHBhdGhUb0NsaXApOwogCiAgICAgbV9kYXRhLT5j
bGlwKHBhdGhUb0NsaXAuZ2V0KCkpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL1BhdGhEaXJlY3QyRC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1BhdGhEaXJlY3QyRC5jcHAJKHJldmlzaW9uIDIzMjIy
OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9QYXRoRGlyZWN0MkQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTQsNyArMTE0LDcgQEAgdm9pZCBQYXRoOjpjcmVhdGVH
ZW9tZXRyeVdpdGhGaWxsTW9kZShXaQogewogICAgIFJFTEVBU0VfQVNTRVJUKG1fcGF0aCk7CiAK
LSAgICBhdXRvIGZpbGxNb2RlID0gKHdlYmtpdEZpbGxNb2RlID09IFJVTEVfRVZFTk9ERCkgPyBE
MkQxX0ZJTExfTU9ERV9BTFRFUk5BVEUgOiBEMkQxX0ZJTExfTU9ERV9XSU5ESU5HOworICAgIGF1
dG8gZmlsbE1vZGUgPSAod2Via2l0RmlsbE1vZGUgPT0gV2luZFJ1bGU6OkV2ZW5PZGQpID8gRDJE
MV9GSUxMX01PREVfQUxURVJOQVRFIDogRDJEMV9GSUxMX01PREVfV0lORElORzsKIAogICAgIGlm
IChmaWxsTW9kZSA9PSBtX3BhdGgtPkdldEZpbGxNb2RlKCkpIHsKICAgICAgICAgcGF0aCA9IG1f
cGF0aDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlk
ZW9Tb3VyY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2sv
TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwCShyZXZpc2lvbiAyMzIyMjgpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjQ1LDcgKzI0NSw3IEBAIHZvaWQgTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6
OmRyYXdBbmltYXQKICAgICBtX3BhdGguYWRkQXJjKGxvY2F0aW9uLCByYWRpdXMsIDAsIDIgKiBw
aUZsb2F0LCBmYWxzZSk7CiAgICAgbV9wYXRoLmNsb3NlU3VicGF0aCgpOwogICAgIGNvbnRleHQu
c2V0RmlsbENvbG9yKENvbG9yOjp3aGl0ZSk7Ci0gICAgY29udGV4dC5zZXRGaWxsUnVsZShSVUxF
X05PTlpFUk8pOworICAgIGNvbnRleHQuc2V0RmlsbFJ1bGUoV2luZFJ1bGU6Ok5vblplcm8pOwog
ICAgIGNvbnRleHQuZmlsbFBhdGgobV9wYXRoKTsKIAogICAgIGZsb2F0IGVuZEFuZ2xlID0gcGlG
bG9hdCAqICgoKGZtb2QobV9mcmFtZU51bWJlciwgZnJhbWVSYXRlKCkpICsgMC41KSAqICgyLjAg
LyBmcmFtZVJhdGUoKSkpICsgMSk7CkBAIC0yNTQsNyArMjU0LDcgQEAgdm9pZCBNb2NrUmVhbHRp
bWVWaWRlb1NvdXJjZTo6ZHJhd0FuaW1hdAogICAgIG1fcGF0aC5hZGRBcmMobG9jYXRpb24sIHJh
ZGl1cywgMS41ICogcGlGbG9hdCwgZW5kQW5nbGUsIGZhbHNlKTsKICAgICBtX3BhdGguY2xvc2VT
dWJwYXRoKCk7CiAgICAgY29udGV4dC5zZXRGaWxsQ29sb3IoQ29sb3I6OmdyYXkpOwotICAgIGNv
bnRleHQuc2V0RmlsbFJ1bGUoUlVMRV9OT05aRVJPKTsKKyAgICBjb250ZXh0LnNldEZpbGxSdWxl
KFdpbmRSdWxlOjpOb25aZXJvKTsKICAgICBjb250ZXh0LmZpbGxQYXRoKG1fcGF0aCk7CiB9CiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRl
cmVyLmNwcAkocmV2aXNpb24gMjMyMjI4KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0Zp
bHRlckVmZmVjdFJlbmRlcmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE4LDcgKzExOCw3IEBA
IFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IEZpbHRlckVmZmVjdFJlbmRlcmUKIAogICAgICAgICBlZmZl
Y3RFbGVtZW50LnNldFN0YW5kYXJkQXR0cmlidXRlcyhlZmZlY3QuZ2V0KCkpOwogICAgICAgICBp
ZiAoZWZmZWN0RWxlbWVudC5yZW5kZXJlcigpKQotICAgICAgICAgICAgZWZmZWN0LT5zZXRPcGVy
YXRpbmdDb2xvclNwYWNlKGVmZmVjdEVsZW1lbnQucmVuZGVyZXIoKS0+c3R5bGUoKS5zdmdTdHls
ZSgpLmNvbG9ySW50ZXJwb2xhdGlvbkZpbHRlcnMoKSA9PSBDSV9MSU5FQVJSR0IgPyBDb2xvclNw
YWNlTGluZWFyUkdCIDogQ29sb3JTcGFjZVNSR0IpOworICAgICAgICAgICAgZWZmZWN0LT5zZXRP
cGVyYXRpbmdDb2xvclNwYWNlKGVmZmVjdEVsZW1lbnQucmVuZGVyZXIoKS0+c3R5bGUoKS5zdmdT
dHlsZSgpLmNvbG9ySW50ZXJwb2xhdGlvbkZpbHRlcnMoKSA9PSBDb2xvckludGVycG9sYXRpb246
OkxpbmVhclJHQiA/IENvbG9yU3BhY2VMaW5lYXJSR0IgOiBDb2xvclNwYWNlU1JHQik7CiAKICAg
ICAgICAgYnVpbGRlci0+YWRkKGVmZmVjdEVsZW1lbnQucmVzdWx0KCksIGVmZmVjdCk7CiAgICAg
ICAgIG1fZWZmZWN0cy5hcHBlbmQoKmVmZmVjdCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAJKHJldmlzaW9uIDIzMjIyOCkK
KysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE5MjksNyArMTkyOSw3IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmpl
Y3Q6OnBhaW50Qm9yZGVyKGMKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBwYXRo
LmFkZFJlY3QocGl4ZWxTbmFwcGVkSW5uZXJCb3JkZXIucmVjdCgpKTsKICAgICAgICAgICAgIAot
ICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldEZpbGxSdWxlKFJVTEVfRVZFTk9ERCk7Cisg
ICAgICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0RmlsbFJ1bGUoV2luZFJ1bGU6OkV2ZW5PZGQp
OwogICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldEZpbGxDb2xvcihlZGdlc1tmaXJzdFZp
c2libGVFZGdlXS5jb2xvcigpKTsKICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5maWxsUGF0
aChwYXRoKTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTE5NDYsNyArMTk0Niw3IEBAIHZvaWQg
UmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Qm9yZGVyKGMKICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRGaWxsUnVsZShS
VUxFX05PTlpFUk8pOworICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldEZpbGxSdWxlKFdp
bmRSdWxlOjpOb25aZXJvKTsKICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRGaWxsQ29s
b3IoZWRnZXNbZmlyc3RWaXNpYmxlRWRnZV0uY29sb3IoKSk7CiAgICAgICAgICAgICBncmFwaGlj
c0NvbnRleHQuZmlsbFBhdGgocGF0aCk7CiAgICAgICAgICAgICByZXR1cm47CkBAIC0yMjA1LDcg
KzIyMDUsNyBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpjbGlwQm9yZGVyU2lkCiAgICAg
aWYgKGZpcnN0RWRnZU1hdGNoZXMgPT0gc2Vjb25kRWRnZU1hdGNoZXMpIHsKICAgICAgICAgYm9v
bCB3YXNBbnRpYWxpYXNlZCA9IGdyYXBoaWNzQ29udGV4dC5zaG91bGRBbnRpYWxpYXMoKTsKICAg
ICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldFNob3VsZEFudGlhbGlhcyghZmlyc3RFZGdlTWF0Y2hl
cyk7Ci0gICAgICAgIGdyYXBoaWNzQ29udGV4dC5jbGlwUGF0aChQYXRoOjpwb2x5Z29uUGF0aEZy
b21Qb2ludHMocXVhZCksIFJVTEVfTk9OWkVSTyk7CisgICAgICAgIGdyYXBoaWNzQ29udGV4dC5j
bGlwUGF0aChQYXRoOjpwb2x5Z29uUGF0aEZyb21Qb2ludHMocXVhZCksIFdpbmRSdWxlOjpOb25a
ZXJvKTsKICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldFNob3VsZEFudGlhbGlhcyh3YXNBbnRp
YWxpYXNlZCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0yMjIwLDcgKzIyMjAsNyBAQCB2
b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpjbGlwQm9yZGVyU2lkCiAgICAgfTsKICAgICBib29s
IHdhc0FudGlhbGlhc2VkID0gZ3JhcGhpY3NDb250ZXh0LnNob3VsZEFudGlhbGlhcygpOwogICAg
IGdyYXBoaWNzQ29udGV4dC5zZXRTaG91bGRBbnRpYWxpYXMoIWZpcnN0RWRnZU1hdGNoZXMpOwot
ICAgIGdyYXBoaWNzQ29udGV4dC5jbGlwUGF0aChQYXRoOjpwb2x5Z29uUGF0aEZyb21Qb2ludHMo
Zmlyc3RRdWFkKSwgUlVMRV9OT05aRVJPKTsKKyAgICBncmFwaGljc0NvbnRleHQuY2xpcFBhdGgo
UGF0aDo6cG9seWdvblBhdGhGcm9tUG9pbnRzKGZpcnN0UXVhZCksIFdpbmRSdWxlOjpOb25aZXJv
KTsKIAogICAgIFZlY3RvcjxGbG9hdFBvaW50PiBzZWNvbmRRdWFkID0gewogICAgICAgICBxdWFk
WzBdLApAQCAtMjIzMSw3ICsyMjMxLDcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6Y2xp
cEJvcmRlclNpZAogICAgIH07CiAgICAgLy8gQW50aWFsaWFzaW5nIGFmZmVjdHMgdGhlIHNlY29u
ZCBzaWRlLgogICAgIGdyYXBoaWNzQ29udGV4dC5zZXRTaG91bGRBbnRpYWxpYXMoIXNlY29uZEVk
Z2VNYXRjaGVzKTsKLSAgICBncmFwaGljc0NvbnRleHQuY2xpcFBhdGgoUGF0aDo6cG9seWdvblBh
dGhGcm9tUG9pbnRzKHNlY29uZFF1YWQpLCBSVUxFX05PTlpFUk8pOworICAgIGdyYXBoaWNzQ29u
dGV4dC5jbGlwUGF0aChQYXRoOjpwb2x5Z29uUGF0aEZyb21Qb2ludHMoc2Vjb25kUXVhZCksIFdp
bmRSdWxlOjpOb25aZXJvKTsKIAogICAgIGdyYXBoaWNzQ29udGV4dC5zZXRTaG91bGRBbnRpYWxp
YXMod2FzQW50aWFsaWFzZWQpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJFbGVtZW50LmNwcAkocmV2aXNpb24gMjMyMjI4KQorKysgU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODkwLDcgKzE4OTAs
NyBAQCB2b2lkIFJlbmRlckVsZW1lbnQ6OnBhaW50T3V0bGluZShQYWludEluCiAgICAgICAgICAg
ICBQYXRoIHBhdGg7CiAgICAgICAgICAgICBwYXRoLmFkZFJlY3Qob3V0ZXIpOwogICAgICAgICAg
ICAgcGF0aC5hZGRSZWN0KGlubmVyKTsKLSAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRG
aWxsUnVsZShSVUxFX0VWRU5PREQpOworICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldEZp
bGxSdWxlKFdpbmRSdWxlOjpFdmVuT2RkKTsKICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5z
ZXRGaWxsQ29sb3Iob3V0bGluZUNvbG9yKTsKICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5m
aWxsUGF0aChwYXRoKTsKICAgICAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAkocmV2aXNpb24gMjMyMjI4KQorKysgU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEzOSw3
ICs0MTM5LDcgQEAgUGF0aCBSZW5kZXJMYXllcjo6Y29tcHV0ZUNsaXBQYXRoKGNvbnN0IAogICAg
ICAgICBGbG9hdFJvdW5kZWRSZWN0IHNoYXBlUmVjdCA9IGNvbXB1dGVSb3VuZGVkUmVjdEZvckJv
eFNoYXBlKGNsaXBQYXRoLnJlZmVyZW5jZUJveCgpLCBkb3duY2FzdDxSZW5kZXJCb3g+KHJlbmRl
cmVyKCkpKS5waXhlbFNuYXBwZWRSb3VuZGVkUmVjdEZvclBhaW50aW5nKGRldmljZVNhbGVGYWN0
b3IpOwogICAgICAgICBzaGFwZVJlY3QubW92ZShvZmZzZXRGcm9tUm9vdCk7CiAKLSAgICAgICAg
d2luZFJ1bGUgPSBSVUxFX05PTlpFUk87CisgICAgICAgIHdpbmRSdWxlID0gV2luZFJ1bGU6Ok5v
blplcm87CiAgICAgICAgIHJldHVybiBjbGlwUGF0aC5wYXRoRm9yUmVmZXJlbmNlUmVjdChzaGFw
ZVJlY3QpOwogICAgIH0KICAgICAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9CYXNpY1NoYXBlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9CYXNpY1NoYXBlcy5oCShyZXZpc2lvbiAyMzIyMjgpCisrKyBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFwZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNTksNyArNTks
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBUeXBlIHR5cGUoKSBjb25zdCA9IDA7CiAKICAgICB2
aXJ0dWFsIGNvbnN0IFBhdGgmIHBhdGgoY29uc3QgRmxvYXRSZWN0JikgPSAwOwotICAgIHZpcnR1
YWwgV2luZFJ1bGUgd2luZFJ1bGUoKSBjb25zdCB7IHJldHVybiBSVUxFX05PTlpFUk87IH0KKyAg
ICB2aXJ0dWFsIFdpbmRSdWxlIHdpbmRSdWxlKCkgY29uc3QgeyByZXR1cm4gV2luZFJ1bGU6Ok5v
blplcm87IH0KIAogICAgIHZpcnR1YWwgYm9vbCBjYW5CbGVuZChjb25zdCBCYXNpY1NoYXBlJikg
Y29uc3QgPSAwOwogICAgIHZpcnR1YWwgUmVmPEJhc2ljU2hhcGU+IGJsZW5kKGNvbnN0IEJhc2lj
U2hhcGUmIGZyb20sIGRvdWJsZSkgY29uc3QgPSAwOwpAQCAtMjYwLDcgKzI2MCw3IEBAIHByaXZh
dGU6CiAKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQmFzaWNTaGFwZSYpIGNvbnN0IG92ZXJy
aWRlOwogCi0gICAgV2luZFJ1bGUgbV93aW5kUnVsZSB7IFJVTEVfTk9OWkVSTyB9OworICAgIFdp
bmRSdWxlIG1fd2luZFJ1bGUgeyBXaW5kUnVsZTo6Tm9uWmVybyB9OwogICAgIFZlY3RvcjxMZW5n
dGg+IG1fdmFsdWVzOwogfTsKIApAQCAtMjg5LDcgKzI4OSw3IEBAIHByaXZhdGU6CiAgICAgYm9v
bCBvcGVyYXRvcj09KGNvbnN0IEJhc2ljU2hhcGUmKSBjb25zdCBvdmVycmlkZTsKIAogICAgIHN0
ZDo6dW5pcXVlX3B0cjxTVkdQYXRoQnl0ZVN0cmVhbT4gbV9ieXRlU3RyZWFtOwotICAgIFdpbmRS
dWxlIG1fd2luZFJ1bGUgeyBSVUxFX05PTlpFUk8gfTsKKyAgICBXaW5kUnVsZSBtX3dpbmRSdWxl
IHsgV2luZFJ1bGU6Ok5vblplcm8gfTsKIH07CiAKIGNsYXNzIEJhc2ljU2hhcGVJbnNldCBmaW5h
bCA6IHB1YmxpYyBCYXNpY1NoYXBlIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9SZW5kZXJTdHlsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9SZW5kZXJTdHlsZS5oCShyZXZpc2lvbiAyMzIyMjgpCisrKyBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTI5MCwx
NSArMTI5MCwxNSBAQCBwdWJsaWM6CiAgICAgY29uc3QgU1ZHUmVuZGVyU3R5bGUmIHN2Z1N0eWxl
KCkgY29uc3QgeyByZXR1cm4gbV9zdmdTdHlsZTsgfQogICAgIFNWR1JlbmRlclN0eWxlJiBhY2Nl
c3NTVkdTdHlsZSgpIHsgcmV0dXJuIG1fc3ZnU3R5bGUuYWNjZXNzKCk7IH0KIAotICAgIGNvbnN0
IFNWR1BhaW50VHlwZSYgZmlsbFBhaW50VHlwZSgpIGNvbnN0IHsgcmV0dXJuIHN2Z1N0eWxlKCku
ZmlsbFBhaW50VHlwZSgpOyB9CisgICAgU1ZHUGFpbnRUeXBlIGZpbGxQYWludFR5cGUoKSBjb25z
dCB7IHJldHVybiBzdmdTdHlsZSgpLmZpbGxQYWludFR5cGUoKTsgfQogICAgIENvbG9yIGZpbGxQ
YWludENvbG9yKCkgY29uc3QgeyByZXR1cm4gc3ZnU3R5bGUoKS5maWxsUGFpbnRDb2xvcigpOyB9
Ci0gICAgdm9pZCBzZXRGaWxsUGFpbnRDb2xvcihjb25zdCBDb2xvciYgY29sb3IpIHsgYWNjZXNz
U1ZHU3R5bGUoKS5zZXRGaWxsUGFpbnQoU1ZHX1BBSU5UVFlQRV9SR0JDT0xPUiwgY29sb3IsIGVt
cHR5U3RyaW5nKCkpOyB9CisgICAgdm9pZCBzZXRGaWxsUGFpbnRDb2xvcihjb25zdCBDb2xvciYg
Y29sb3IpIHsgYWNjZXNzU1ZHU3R5bGUoKS5zZXRGaWxsUGFpbnQoU1ZHUGFpbnRUeXBlOjpSR0JD
b2xvciwgY29sb3IsIGVtcHR5U3RyaW5nKCkpOyB9CiAgICAgZmxvYXQgZmlsbE9wYWNpdHkoKSBj
b25zdCB7IHJldHVybiBzdmdTdHlsZSgpLmZpbGxPcGFjaXR5KCk7IH0KICAgICB2b2lkIHNldEZp
bGxPcGFjaXR5KGZsb2F0IGYpIHsgYWNjZXNzU1ZHU3R5bGUoKS5zZXRGaWxsT3BhY2l0eShmKTsg
fQogCi0gICAgY29uc3QgU1ZHUGFpbnRUeXBlJiBzdHJva2VQYWludFR5cGUoKSBjb25zdCB7IHJl
dHVybiBzdmdTdHlsZSgpLnN0cm9rZVBhaW50VHlwZSgpOyB9CisgICAgU1ZHUGFpbnRUeXBlIHN0
cm9rZVBhaW50VHlwZSgpIGNvbnN0IHsgcmV0dXJuIHN2Z1N0eWxlKCkuc3Ryb2tlUGFpbnRUeXBl
KCk7IH0KICAgICBDb2xvciBzdHJva2VQYWludENvbG9yKCkgY29uc3QgeyByZXR1cm4gc3ZnU3R5
bGUoKS5zdHJva2VQYWludENvbG9yKCk7IH0KLSAgICB2b2lkIHNldFN0cm9rZVBhaW50Q29sb3Io
Y29uc3QgQ29sb3ImIGNvbG9yKSB7IGFjY2Vzc1NWR1N0eWxlKCkuc2V0U3Ryb2tlUGFpbnQoU1ZH
X1BBSU5UVFlQRV9SR0JDT0xPUiwgY29sb3IsIGVtcHR5U3RyaW5nKCkpOyB9CisgICAgdm9pZCBz
ZXRTdHJva2VQYWludENvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikgeyBhY2Nlc3NTVkdTdHlsZSgp
LnNldFN0cm9rZVBhaW50KFNWR1BhaW50VHlwZTo6UkdCQ29sb3IsIGNvbG9yLCBlbXB0eVN0cmlu
ZygpKTsgfQogICAgIGZsb2F0IHN0cm9rZU9wYWNpdHkoKSBjb25zdCB7IHJldHVybiBzdmdTdHls
ZSgpLnN0cm9rZU9wYWNpdHkoKTsgfQogICAgIHZvaWQgc2V0U3Ryb2tlT3BhY2l0eShmbG9hdCBm
KSB7IGFjY2Vzc1NWR1N0eWxlKCkuc2V0U3Ryb2tlT3BhY2l0eShmKTsgfQogICAgIFZlY3RvcjxT
VkdMZW5ndGhWYWx1ZT4gc3Ryb2tlRGFzaEFycmF5KCkgY29uc3QgeyByZXR1cm4gc3ZnU3R5bGUo
KS5zdHJva2VEYXNoQXJyYXkoKTsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL1NWR1JlbmRlclN0eWxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1NWR1JlbmRlclN0eWxlLmgJKHJldmlzaW9uIDIzMjIyOCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TVkdSZW5kZXJTdHlsZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC00NywyNiArNDcsMjYgQEAgcHVibGljOgogICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTVkdS
ZW5kZXJTdHlsZSYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOyB9CiAK
ICAgICAvLyBJbml0aWFsIHZhbHVlcyBmb3IgYWxsIHRoZSBwcm9wZXJ0aWVzCi0gICAgc3RhdGlj
IEVBbGlnbm1lbnRCYXNlbGluZSBpbml0aWFsQWxpZ25tZW50QmFzZWxpbmUoKSB7IHJldHVybiBB
Ql9BVVRPOyB9Ci0gICAgc3RhdGljIEVEb21pbmFudEJhc2VsaW5lIGluaXRpYWxEb21pbmFudEJh
c2VsaW5lKCkgeyByZXR1cm4gREJfQVVUTzsgfQotICAgIHN0YXRpYyBFQmFzZWxpbmVTaGlmdCBp
bml0aWFsQmFzZWxpbmVTaGlmdCgpIHsgcmV0dXJuIEJTX0JBU0VMSU5FOyB9Ci0gICAgc3RhdGlj
IEVWZWN0b3JFZmZlY3QgaW5pdGlhbFZlY3RvckVmZmVjdCgpIHsgcmV0dXJuIFZFX05PTkU7IH0K
LSAgICBzdGF0aWMgRUJ1ZmZlcmVkUmVuZGVyaW5nIGluaXRpYWxCdWZmZXJlZFJlbmRlcmluZygp
IHsgcmV0dXJuIEJSX0FVVE87IH0KLSAgICBzdGF0aWMgV2luZFJ1bGUgaW5pdGlhbENsaXBSdWxl
KCkgeyByZXR1cm4gUlVMRV9OT05aRVJPOyB9Ci0gICAgc3RhdGljIEVDb2xvckludGVycG9sYXRp
b24gaW5pdGlhbENvbG9ySW50ZXJwb2xhdGlvbigpIHsgcmV0dXJuIENJX1NSR0I7IH0KLSAgICBz
dGF0aWMgRUNvbG9ySW50ZXJwb2xhdGlvbiBpbml0aWFsQ29sb3JJbnRlcnBvbGF0aW9uRmlsdGVy
cygpIHsgcmV0dXJuIENJX0xJTkVBUlJHQjsgfQotICAgIHN0YXRpYyBFQ29sb3JSZW5kZXJpbmcg
aW5pdGlhbENvbG9yUmVuZGVyaW5nKCkgeyByZXR1cm4gQ1JfQVVUTzsgfQotICAgIHN0YXRpYyBX
aW5kUnVsZSBpbml0aWFsRmlsbFJ1bGUoKSB7IHJldHVybiBSVUxFX05PTlpFUk87IH0KLSAgICBz
dGF0aWMgRVNoYXBlUmVuZGVyaW5nIGluaXRpYWxTaGFwZVJlbmRlcmluZygpIHsgcmV0dXJuIFNS
X0FVVE87IH0KLSAgICBzdGF0aWMgRVRleHRBbmNob3IgaW5pdGlhbFRleHRBbmNob3IoKSB7IHJl
dHVybiBUQV9TVEFSVDsgfQotICAgIHN0YXRpYyBFR2x5cGhPcmllbnRhdGlvbiBpbml0aWFsR2x5
cGhPcmllbnRhdGlvbkhvcml6b250YWwoKSB7IHJldHVybiBHT18wREVHOyB9Ci0gICAgc3RhdGlj
IEVHbHlwaE9yaWVudGF0aW9uIGluaXRpYWxHbHlwaE9yaWVudGF0aW9uVmVydGljYWwoKSB7IHJl
dHVybiBHT19BVVRPOyB9CisgICAgc3RhdGljIEFsaWdubWVudEJhc2VsaW5lIGluaXRpYWxBbGln
bm1lbnRCYXNlbGluZSgpIHsgcmV0dXJuIEFsaWdubWVudEJhc2VsaW5lOjpBdXRvOyB9CisgICAg
c3RhdGljIERvbWluYW50QmFzZWxpbmUgaW5pdGlhbERvbWluYW50QmFzZWxpbmUoKSB7IHJldHVy
biBEb21pbmFudEJhc2VsaW5lOjpBdXRvOyB9CisgICAgc3RhdGljIEJhc2VsaW5lU2hpZnQgaW5p
dGlhbEJhc2VsaW5lU2hpZnQoKSB7IHJldHVybiBCYXNlbGluZVNoaWZ0OjpCYXNlbGluZTsgfQor
ICAgIHN0YXRpYyBWZWN0b3JFZmZlY3QgaW5pdGlhbFZlY3RvckVmZmVjdCgpIHsgcmV0dXJuIFZl
Y3RvckVmZmVjdDo6Tm9uZTsgfQorICAgIHN0YXRpYyBCdWZmZXJlZFJlbmRlcmluZyBpbml0aWFs
QnVmZmVyZWRSZW5kZXJpbmcoKSB7IHJldHVybiBCdWZmZXJlZFJlbmRlcmluZzo6QXV0bzsgfQor
ICAgIHN0YXRpYyBXaW5kUnVsZSBpbml0aWFsQ2xpcFJ1bGUoKSB7IHJldHVybiBXaW5kUnVsZTo6
Tm9uWmVybzsgfQorICAgIHN0YXRpYyBDb2xvckludGVycG9sYXRpb24gaW5pdGlhbENvbG9ySW50
ZXJwb2xhdGlvbigpIHsgcmV0dXJuIENvbG9ySW50ZXJwb2xhdGlvbjo6U1JHQjsgfQorICAgIHN0
YXRpYyBDb2xvckludGVycG9sYXRpb24gaW5pdGlhbENvbG9ySW50ZXJwb2xhdGlvbkZpbHRlcnMo
KSB7IHJldHVybiBDb2xvckludGVycG9sYXRpb246OkxpbmVhclJHQjsgfQorICAgIHN0YXRpYyBD
b2xvclJlbmRlcmluZyBpbml0aWFsQ29sb3JSZW5kZXJpbmcoKSB7IHJldHVybiBDb2xvclJlbmRl
cmluZzo6QXV0bzsgfQorICAgIHN0YXRpYyBXaW5kUnVsZSBpbml0aWFsRmlsbFJ1bGUoKSB7IHJl
dHVybiBXaW5kUnVsZTo6Tm9uWmVybzsgfQorICAgIHN0YXRpYyBTaGFwZVJlbmRlcmluZyBpbml0
aWFsU2hhcGVSZW5kZXJpbmcoKSB7IHJldHVybiBTaGFwZVJlbmRlcmluZzo6QXV0bzsgfQorICAg
IHN0YXRpYyBUZXh0QW5jaG9yIGluaXRpYWxUZXh0QW5jaG9yKCkgeyByZXR1cm4gVGV4dEFuY2hv
cjo6U3RhcnQ7IH0KKyAgICBzdGF0aWMgR2x5cGhPcmllbnRhdGlvbiBpbml0aWFsR2x5cGhPcmll
bnRhdGlvbkhvcml6b250YWwoKSB7IHJldHVybiBHbHlwaE9yaWVudGF0aW9uOjpEZWdyZWVzMDsg
fQorICAgIHN0YXRpYyBHbHlwaE9yaWVudGF0aW9uIGluaXRpYWxHbHlwaE9yaWVudGF0aW9uVmVy
dGljYWwoKSB7IHJldHVybiBHbHlwaE9yaWVudGF0aW9uOjpBdXRvOyB9CiAgICAgc3RhdGljIGZs
b2F0IGluaXRpYWxGaWxsT3BhY2l0eSgpIHsgcmV0dXJuIDE7IH0KLSAgICBzdGF0aWMgU1ZHUGFp
bnRUeXBlIGluaXRpYWxGaWxsUGFpbnRUeXBlKCkgeyByZXR1cm4gU1ZHX1BBSU5UVFlQRV9SR0JD
T0xPUjsgfQorICAgIHN0YXRpYyBTVkdQYWludFR5cGUgaW5pdGlhbEZpbGxQYWludFR5cGUoKSB7
IHJldHVybiBTVkdQYWludFR5cGU6OlJHQkNvbG9yOyB9CiAgICAgc3RhdGljIENvbG9yIGluaXRp
YWxGaWxsUGFpbnRDb2xvcigpIHsgcmV0dXJuIENvbG9yOjpibGFjazsgfQogICAgIHN0YXRpYyBT
dHJpbmcgaW5pdGlhbEZpbGxQYWludFVyaSgpIHsgcmV0dXJuIFN0cmluZygpOyB9CiAgICAgc3Rh
dGljIGZsb2F0IGluaXRpYWxTdHJva2VPcGFjaXR5KCkgeyByZXR1cm4gMTsgfQotICAgIHN0YXRp
YyBTVkdQYWludFR5cGUgaW5pdGlhbFN0cm9rZVBhaW50VHlwZSgpIHsgcmV0dXJuIFNWR19QQUlO
VFRZUEVfTk9ORTsgfQorICAgIHN0YXRpYyBTVkdQYWludFR5cGUgaW5pdGlhbFN0cm9rZVBhaW50
VHlwZSgpIHsgcmV0dXJuIFNWR1BhaW50VHlwZTo6Tm9uZTsgfQogICAgIHN0YXRpYyBDb2xvciBp
bml0aWFsU3Ryb2tlUGFpbnRDb2xvcigpIHsgcmV0dXJuIENvbG9yKCk7IH0KICAgICBzdGF0aWMg
U3RyaW5nIGluaXRpYWxTdHJva2VQYWludFVyaSgpIHsgcmV0dXJuIFN0cmluZygpOyB9CiAgICAg
c3RhdGljIFZlY3RvcjxTVkdMZW5ndGhWYWx1ZT4gaW5pdGlhbFN0cm9rZURhc2hBcnJheSgpIHsg
cmV0dXJuIHsgfTsgfQpAQCAtODEsMjYgKzgxLDI2IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgU3Ry
aW5nIGluaXRpYWxNYXJrZXJTdGFydFJlc291cmNlKCkgeyByZXR1cm4gU3RyaW5nKCk7IH0KICAg
ICBzdGF0aWMgU3RyaW5nIGluaXRpYWxNYXJrZXJNaWRSZXNvdXJjZSgpIHsgcmV0dXJuIFN0cmlu
ZygpOyB9CiAgICAgc3RhdGljIFN0cmluZyBpbml0aWFsTWFya2VyRW5kUmVzb3VyY2UoKSB7IHJl
dHVybiBTdHJpbmcoKTsgfQotICAgIHN0YXRpYyBFTWFza1R5cGUgaW5pdGlhbE1hc2tUeXBlKCkg
eyByZXR1cm4gTVRfTFVNSU5BTkNFOyB9CisgICAgc3RhdGljIE1hc2tUeXBlIGluaXRpYWxNYXNr
VHlwZSgpIHsgcmV0dXJuIE1hc2tUeXBlOjpMdW1pbmFuY2U7IH0KICAgICBzdGF0aWMgU1ZHTGVu
Z3RoVmFsdWUgaW5pdGlhbEJhc2VsaW5lU2hpZnRWYWx1ZSgpOwogICAgIHN0YXRpYyBTVkdMZW5n
dGhWYWx1ZSBpbml0aWFsS2VybmluZygpOwogCiAgICAgLy8gU1ZHIENTUyBQcm9wZXJ0eSBzZXR0
ZXJzCi0gICAgdm9pZCBzZXRBbGlnbm1lbnRCYXNlbGluZShFQWxpZ25tZW50QmFzZWxpbmUgdmFs
KSB7IG1fbm9uSW5oZXJpdGVkRmxhZ3MuZmxhZ0JpdHMuYWxpZ25tZW50QmFzZWxpbmUgPSB2YWw7
IH0KLSAgICB2b2lkIHNldERvbWluYW50QmFzZWxpbmUoRURvbWluYW50QmFzZWxpbmUgdmFsKSB7
IG1fbm9uSW5oZXJpdGVkRmxhZ3MuZmxhZ0JpdHMuZG9taW5hbnRCYXNlbGluZSA9IHZhbDsgfQot
ICAgIHZvaWQgc2V0QmFzZWxpbmVTaGlmdChFQmFzZWxpbmVTaGlmdCB2YWwpIHsgbV9ub25Jbmhl
cml0ZWRGbGFncy5mbGFnQml0cy5iYXNlbGluZVNoaWZ0ID0gdmFsOyB9Ci0gICAgdm9pZCBzZXRW
ZWN0b3JFZmZlY3QoRVZlY3RvckVmZmVjdCB2YWwpIHsgbV9ub25Jbmhlcml0ZWRGbGFncy5mbGFn
Qml0cy52ZWN0b3JFZmZlY3QgPSB2YWw7IH0KLSAgICB2b2lkIHNldEJ1ZmZlcmVkUmVuZGVyaW5n
KEVCdWZmZXJlZFJlbmRlcmluZyB2YWwpIHsgbV9ub25Jbmhlcml0ZWRGbGFncy5mbGFnQml0cy5i
dWZmZXJlZFJlbmRlcmluZyA9IHZhbDsgfQotICAgIHZvaWQgc2V0Q2xpcFJ1bGUoV2luZFJ1bGUg
dmFsKSB7IG1faW5oZXJpdGVkRmxhZ3MuY2xpcFJ1bGUgPSB2YWw7IH0KLSAgICB2b2lkIHNldENv
bG9ySW50ZXJwb2xhdGlvbihFQ29sb3JJbnRlcnBvbGF0aW9uIHZhbCkgeyBtX2luaGVyaXRlZEZs
YWdzLmNvbG9ySW50ZXJwb2xhdGlvbiA9IHZhbDsgfQotICAgIHZvaWQgc2V0Q29sb3JJbnRlcnBv
bGF0aW9uRmlsdGVycyhFQ29sb3JJbnRlcnBvbGF0aW9uIHZhbCkgeyBtX2luaGVyaXRlZEZsYWdz
LmNvbG9ySW50ZXJwb2xhdGlvbkZpbHRlcnMgPSB2YWw7IH0KLSAgICB2b2lkIHNldENvbG9yUmVu
ZGVyaW5nKEVDb2xvclJlbmRlcmluZyB2YWwpIHsgbV9pbmhlcml0ZWRGbGFncy5jb2xvclJlbmRl
cmluZyA9IHZhbDsgfQotICAgIHZvaWQgc2V0RmlsbFJ1bGUoV2luZFJ1bGUgdmFsKSB7IG1faW5o
ZXJpdGVkRmxhZ3MuZmlsbFJ1bGUgPSB2YWw7IH0KLSAgICB2b2lkIHNldFNoYXBlUmVuZGVyaW5n
KEVTaGFwZVJlbmRlcmluZyB2YWwpIHsgbV9pbmhlcml0ZWRGbGFncy5zaGFwZVJlbmRlcmluZyA9
IHZhbDsgfQotICAgIHZvaWQgc2V0VGV4dEFuY2hvcihFVGV4dEFuY2hvciB2YWwpIHsgbV9pbmhl
cml0ZWRGbGFncy50ZXh0QW5jaG9yID0gdmFsOyB9Ci0gICAgdm9pZCBzZXRHbHlwaE9yaWVudGF0
aW9uSG9yaXpvbnRhbChFR2x5cGhPcmllbnRhdGlvbiB2YWwpIHsgbV9pbmhlcml0ZWRGbGFncy5n
bHlwaE9yaWVudGF0aW9uSG9yaXpvbnRhbCA9IHZhbDsgfQotICAgIHZvaWQgc2V0R2x5cGhPcmll
bnRhdGlvblZlcnRpY2FsKEVHbHlwaE9yaWVudGF0aW9uIHZhbCkgeyBtX2luaGVyaXRlZEZsYWdz
LmdseXBoT3JpZW50YXRpb25WZXJ0aWNhbCA9IHZhbDsgfQotICAgIHZvaWQgc2V0TWFza1R5cGUo
RU1hc2tUeXBlIHZhbCkgeyBtX25vbkluaGVyaXRlZEZsYWdzLmZsYWdCaXRzLm1hc2tUeXBlID0g
dmFsOyB9CisgICAgdm9pZCBzZXRBbGlnbm1lbnRCYXNlbGluZShBbGlnbm1lbnRCYXNlbGluZSB2
YWwpIHsgbV9ub25Jbmhlcml0ZWRGbGFncy5mbGFnQml0cy5hbGlnbm1lbnRCYXNlbGluZSA9IHN0
YXRpY19jYXN0PHVuc2lnbmVkPih2YWwpOyB9CisgICAgdm9pZCBzZXREb21pbmFudEJhc2VsaW5l
KERvbWluYW50QmFzZWxpbmUgdmFsKSB7IG1fbm9uSW5oZXJpdGVkRmxhZ3MuZmxhZ0JpdHMuZG9t
aW5hbnRCYXNlbGluZSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPih2YWwpOyB9CisgICAgdm9pZCBz
ZXRCYXNlbGluZVNoaWZ0KEJhc2VsaW5lU2hpZnQgdmFsKSB7IG1fbm9uSW5oZXJpdGVkRmxhZ3Mu
ZmxhZ0JpdHMuYmFzZWxpbmVTaGlmdCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPih2YWwpOyB9Cisg
ICAgdm9pZCBzZXRWZWN0b3JFZmZlY3QoVmVjdG9yRWZmZWN0IHZhbCkgeyBtX25vbkluaGVyaXRl
ZEZsYWdzLmZsYWdCaXRzLnZlY3RvckVmZmVjdCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPih2YWwp
OyB9CisgICAgdm9pZCBzZXRCdWZmZXJlZFJlbmRlcmluZyhCdWZmZXJlZFJlbmRlcmluZyB2YWwp
IHsgbV9ub25Jbmhlcml0ZWRGbGFncy5mbGFnQml0cy5idWZmZXJlZFJlbmRlcmluZyA9IHN0YXRp
Y19jYXN0PHVuc2lnbmVkPih2YWwpOyB9CisgICAgdm9pZCBzZXRDbGlwUnVsZShXaW5kUnVsZSB2
YWwpIHsgbV9pbmhlcml0ZWRGbGFncy5jbGlwUnVsZSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPih2
YWwpOyB9CisgICAgdm9pZCBzZXRDb2xvckludGVycG9sYXRpb24oQ29sb3JJbnRlcnBvbGF0aW9u
IHZhbCkgeyBtX2luaGVyaXRlZEZsYWdzLmNvbG9ySW50ZXJwb2xhdGlvbiA9IHN0YXRpY19jYXN0
PHVuc2lnbmVkPih2YWwpOyB9CisgICAgdm9pZCBzZXRDb2xvckludGVycG9sYXRpb25GaWx0ZXJz
KENvbG9ySW50ZXJwb2xhdGlvbiB2YWwpIHsgbV9pbmhlcml0ZWRGbGFncy5jb2xvckludGVycG9s
YXRpb25GaWx0ZXJzID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHZhbCk7IH0KKyAgICB2b2lkIHNl
dENvbG9yUmVuZGVyaW5nKENvbG9yUmVuZGVyaW5nIHZhbCkgeyBtX2luaGVyaXRlZEZsYWdzLmNv
bG9yUmVuZGVyaW5nID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHZhbCk7IH0KKyAgICB2b2lkIHNl
dEZpbGxSdWxlKFdpbmRSdWxlIHZhbCkgeyBtX2luaGVyaXRlZEZsYWdzLmZpbGxSdWxlID0gc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KHZhbCk7IH0KKyAgICB2b2lkIHNldFNoYXBlUmVuZGVyaW5nKFNo
YXBlUmVuZGVyaW5nIHZhbCkgeyBtX2luaGVyaXRlZEZsYWdzLnNoYXBlUmVuZGVyaW5nID0gc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KHZhbCk7IH0KKyAgICB2b2lkIHNldFRleHRBbmNob3IoVGV4dEFu
Y2hvciB2YWwpIHsgbV9pbmhlcml0ZWRGbGFncy50ZXh0QW5jaG9yID0gc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KHZhbCk7IH0KKyAgICB2b2lkIHNldEdseXBoT3JpZW50YXRpb25Ib3Jpem9udGFsKEds
eXBoT3JpZW50YXRpb24gdmFsKSB7IG1faW5oZXJpdGVkRmxhZ3MuZ2x5cGhPcmllbnRhdGlvbkhv
cml6b250YWwgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4odmFsKTsgfQorICAgIHZvaWQgc2V0R2x5
cGhPcmllbnRhdGlvblZlcnRpY2FsKEdseXBoT3JpZW50YXRpb24gdmFsKSB7IG1faW5oZXJpdGVk
RmxhZ3MuZ2x5cGhPcmllbnRhdGlvblZlcnRpY2FsID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHZh
bCk7IH0KKyAgICB2b2lkIHNldE1hc2tUeXBlKE1hc2tUeXBlIHZhbCkgeyBtX25vbkluaGVyaXRl
ZEZsYWdzLmZsYWdCaXRzLm1hc2tUeXBlID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHZhbCk7IH0K
ICAgICB2b2lkIHNldEN4KGNvbnN0IExlbmd0aCYpOwogICAgIHZvaWQgc2V0Q3koY29uc3QgTGVu
Z3RoJik7CiAgICAgdm9pZCBzZXRSKGNvbnN0IExlbmd0aCYpOwpAQCAtMTM1LDI2ICsxMzUsMjYg
QEAgcHVibGljOgogICAgIHZvaWQgc2V0TWFya2VyRW5kUmVzb3VyY2UoY29uc3QgU3RyaW5nJik7
CiAKICAgICAvLyBSZWFkIGFjY2Vzc29ycyBmb3IgYWxsIHRoZSBwcm9wZXJ0aWVzCi0gICAgRUFs
aWdubWVudEJhc2VsaW5lIGFsaWdubWVudEJhc2VsaW5lKCkgY29uc3QgeyByZXR1cm4gKEVBbGln
bm1lbnRCYXNlbGluZSkgbV9ub25Jbmhlcml0ZWRGbGFncy5mbGFnQml0cy5hbGlnbm1lbnRCYXNl
bGluZTsgfQotICAgIEVEb21pbmFudEJhc2VsaW5lIGRvbWluYW50QmFzZWxpbmUoKSBjb25zdCB7
IHJldHVybiAoRURvbWluYW50QmFzZWxpbmUpIG1fbm9uSW5oZXJpdGVkRmxhZ3MuZmxhZ0JpdHMu
ZG9taW5hbnRCYXNlbGluZTsgfQotICAgIEVCYXNlbGluZVNoaWZ0IGJhc2VsaW5lU2hpZnQoKSBj
b25zdCB7IHJldHVybiAoRUJhc2VsaW5lU2hpZnQpIG1fbm9uSW5oZXJpdGVkRmxhZ3MuZmxhZ0Jp
dHMuYmFzZWxpbmVTaGlmdDsgfQotICAgIEVWZWN0b3JFZmZlY3QgdmVjdG9yRWZmZWN0KCkgY29u
c3QgeyByZXR1cm4gKEVWZWN0b3JFZmZlY3QpIG1fbm9uSW5oZXJpdGVkRmxhZ3MuZmxhZ0JpdHMu
dmVjdG9yRWZmZWN0OyB9Ci0gICAgRUJ1ZmZlcmVkUmVuZGVyaW5nIGJ1ZmZlcmVkUmVuZGVyaW5n
KCkgY29uc3QgeyByZXR1cm4gKEVCdWZmZXJlZFJlbmRlcmluZykgbV9ub25Jbmhlcml0ZWRGbGFn
cy5mbGFnQml0cy5idWZmZXJlZFJlbmRlcmluZzsgfQotICAgIFdpbmRSdWxlIGNsaXBSdWxlKCkg
Y29uc3QgeyByZXR1cm4gKFdpbmRSdWxlKSBtX2luaGVyaXRlZEZsYWdzLmNsaXBSdWxlOyB9Ci0g
ICAgRUNvbG9ySW50ZXJwb2xhdGlvbiBjb2xvckludGVycG9sYXRpb24oKSBjb25zdCB7IHJldHVy
biAoRUNvbG9ySW50ZXJwb2xhdGlvbikgbV9pbmhlcml0ZWRGbGFncy5jb2xvckludGVycG9sYXRp
b247IH0KLSAgICBFQ29sb3JJbnRlcnBvbGF0aW9uIGNvbG9ySW50ZXJwb2xhdGlvbkZpbHRlcnMo
KSBjb25zdCB7IHJldHVybiAoRUNvbG9ySW50ZXJwb2xhdGlvbikgbV9pbmhlcml0ZWRGbGFncy5j
b2xvckludGVycG9sYXRpb25GaWx0ZXJzOyB9Ci0gICAgRUNvbG9yUmVuZGVyaW5nIGNvbG9yUmVu
ZGVyaW5nKCkgY29uc3QgeyByZXR1cm4gKEVDb2xvclJlbmRlcmluZykgbV9pbmhlcml0ZWRGbGFn
cy5jb2xvclJlbmRlcmluZzsgfQotICAgIFdpbmRSdWxlIGZpbGxSdWxlKCkgY29uc3QgeyByZXR1
cm4gKFdpbmRSdWxlKSBtX2luaGVyaXRlZEZsYWdzLmZpbGxSdWxlOyB9Ci0gICAgRVNoYXBlUmVu
ZGVyaW5nIHNoYXBlUmVuZGVyaW5nKCkgY29uc3QgeyByZXR1cm4gKEVTaGFwZVJlbmRlcmluZykg
bV9pbmhlcml0ZWRGbGFncy5zaGFwZVJlbmRlcmluZzsgfQotICAgIEVUZXh0QW5jaG9yIHRleHRB
bmNob3IoKSBjb25zdCB7IHJldHVybiAoRVRleHRBbmNob3IpIG1faW5oZXJpdGVkRmxhZ3MudGV4
dEFuY2hvcjsgfQotICAgIEVHbHlwaE9yaWVudGF0aW9uIGdseXBoT3JpZW50YXRpb25Ib3Jpem9u
dGFsKCkgY29uc3QgeyByZXR1cm4gKEVHbHlwaE9yaWVudGF0aW9uKSBtX2luaGVyaXRlZEZsYWdz
LmdseXBoT3JpZW50YXRpb25Ib3Jpem9udGFsOyB9Ci0gICAgRUdseXBoT3JpZW50YXRpb24gZ2x5
cGhPcmllbnRhdGlvblZlcnRpY2FsKCkgY29uc3QgeyByZXR1cm4gKEVHbHlwaE9yaWVudGF0aW9u
KSBtX2luaGVyaXRlZEZsYWdzLmdseXBoT3JpZW50YXRpb25WZXJ0aWNhbDsgfQorICAgIEFsaWdu
bWVudEJhc2VsaW5lIGFsaWdubWVudEJhc2VsaW5lKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nh
c3Q8QWxpZ25tZW50QmFzZWxpbmU+KG1fbm9uSW5oZXJpdGVkRmxhZ3MuZmxhZ0JpdHMuYWxpZ25t
ZW50QmFzZWxpbmUpOyB9CisgICAgRG9taW5hbnRCYXNlbGluZSBkb21pbmFudEJhc2VsaW5lKCkg
Y29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RG9taW5hbnRCYXNlbGluZT4obV9ub25Jbmhlcml0
ZWRGbGFncy5mbGFnQml0cy5kb21pbmFudEJhc2VsaW5lKTsgfQorICAgIEJhc2VsaW5lU2hpZnQg
YmFzZWxpbmVTaGlmdCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEJhc2VsaW5lU2hpZnQ+
KG1fbm9uSW5oZXJpdGVkRmxhZ3MuZmxhZ0JpdHMuYmFzZWxpbmVTaGlmdCk7IH0KKyAgICBWZWN0
b3JFZmZlY3QgdmVjdG9yRWZmZWN0KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8VmVjdG9y
RWZmZWN0PihtX25vbkluaGVyaXRlZEZsYWdzLmZsYWdCaXRzLnZlY3RvckVmZmVjdCk7IH0KKyAg
ICBCdWZmZXJlZFJlbmRlcmluZyBidWZmZXJlZFJlbmRlcmluZygpIGNvbnN0IHsgcmV0dXJuIHN0
YXRpY19jYXN0PEJ1ZmZlcmVkUmVuZGVyaW5nPihtX25vbkluaGVyaXRlZEZsYWdzLmZsYWdCaXRz
LmJ1ZmZlcmVkUmVuZGVyaW5nKTsgfQorICAgIFdpbmRSdWxlIGNsaXBSdWxlKCkgY29uc3QgeyBy
ZXR1cm4gc3RhdGljX2Nhc3Q8V2luZFJ1bGU+KG1faW5oZXJpdGVkRmxhZ3MuY2xpcFJ1bGUpOyB9
CisgICAgQ29sb3JJbnRlcnBvbGF0aW9uIGNvbG9ySW50ZXJwb2xhdGlvbigpIGNvbnN0IHsgcmV0
dXJuIHN0YXRpY19jYXN0PENvbG9ySW50ZXJwb2xhdGlvbj4obV9pbmhlcml0ZWRGbGFncy5jb2xv
ckludGVycG9sYXRpb24pOyB9CisgICAgQ29sb3JJbnRlcnBvbGF0aW9uIGNvbG9ySW50ZXJwb2xh
dGlvbkZpbHRlcnMoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxDb2xvckludGVycG9sYXRp
b24+KG1faW5oZXJpdGVkRmxhZ3MuY29sb3JJbnRlcnBvbGF0aW9uRmlsdGVycyk7IH0KKyAgICBD
b2xvclJlbmRlcmluZyBjb2xvclJlbmRlcmluZygpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0
PENvbG9yUmVuZGVyaW5nPihtX2luaGVyaXRlZEZsYWdzLmNvbG9yUmVuZGVyaW5nKTsgfQorICAg
IFdpbmRSdWxlIGZpbGxSdWxlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8V2luZFJ1bGU+
KG1faW5oZXJpdGVkRmxhZ3MuZmlsbFJ1bGUpOyB9CisgICAgU2hhcGVSZW5kZXJpbmcgc2hhcGVS
ZW5kZXJpbmcoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxTaGFwZVJlbmRlcmluZz4obV9p
bmhlcml0ZWRGbGFncy5zaGFwZVJlbmRlcmluZyk7IH0KKyAgICBUZXh0QW5jaG9yIHRleHRBbmNo
b3IoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxUZXh0QW5jaG9yPihtX2luaGVyaXRlZEZs
YWdzLnRleHRBbmNob3IpOyB9CisgICAgR2x5cGhPcmllbnRhdGlvbiBnbHlwaE9yaWVudGF0aW9u
SG9yaXpvbnRhbCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEdseXBoT3JpZW50YXRpb24+
KG1faW5oZXJpdGVkRmxhZ3MuZ2x5cGhPcmllbnRhdGlvbkhvcml6b250YWwpOyB9CisgICAgR2x5
cGhPcmllbnRhdGlvbiBnbHlwaE9yaWVudGF0aW9uVmVydGljYWwoKSBjb25zdCB7IHJldHVybiBz
dGF0aWNfY2FzdDxHbHlwaE9yaWVudGF0aW9uPihtX2luaGVyaXRlZEZsYWdzLmdseXBoT3JpZW50
YXRpb25WZXJ0aWNhbCk7IH0KICAgICBmbG9hdCBmaWxsT3BhY2l0eSgpIGNvbnN0IHsgcmV0dXJu
IG1fZmlsbERhdGEtPm9wYWNpdHk7IH0KLSAgICBjb25zdCBTVkdQYWludFR5cGUmIGZpbGxQYWlu
dFR5cGUoKSBjb25zdCB7IHJldHVybiBtX2ZpbGxEYXRhLT5wYWludFR5cGU7IH0KKyAgICBTVkdQ
YWludFR5cGUgZmlsbFBhaW50VHlwZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFNWR1Bh
aW50VHlwZT4obV9maWxsRGF0YS0+cGFpbnRUeXBlKTsgfQogICAgIGNvbnN0IENvbG9yJiBmaWxs
UGFpbnRDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fZmlsbERhdGEtPnBhaW50Q29sb3I7IH0KICAg
ICBjb25zdCBTdHJpbmcmIGZpbGxQYWludFVyaSgpIGNvbnN0IHsgcmV0dXJuIG1fZmlsbERhdGEt
PnBhaW50VXJpOyB9ICAgIAogICAgIGZsb2F0IHN0cm9rZU9wYWNpdHkoKSBjb25zdCB7IHJldHVy
biBtX3N0cm9rZURhdGEtPm9wYWNpdHk7IH0KLSAgICBjb25zdCBTVkdQYWludFR5cGUmIHN0cm9r
ZVBhaW50VHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3Ryb2tlRGF0YS0+cGFpbnRUeXBlOyB9Cisg
ICAgU1ZHUGFpbnRUeXBlIHN0cm9rZVBhaW50VHlwZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19j
YXN0PFNWR1BhaW50VHlwZT4obV9zdHJva2VEYXRhLT5wYWludFR5cGUpOyB9CiAgICAgY29uc3Qg
Q29sb3ImIHN0cm9rZVBhaW50Q29sb3IoKSBjb25zdCB7IHJldHVybiBtX3N0cm9rZURhdGEtPnBh
aW50Q29sb3I7IH0KICAgICBjb25zdCBTdHJpbmcmIHN0cm9rZVBhaW50VXJpKCkgY29uc3QgeyBy
ZXR1cm4gbV9zdHJva2VEYXRhLT5wYWludFVyaTsgfQogICAgIFZlY3RvcjxTVkdMZW5ndGhWYWx1
ZT4gc3Ryb2tlRGFzaEFycmF5KCkgY29uc3QgeyByZXR1cm4gbV9zdHJva2VEYXRhLT5kYXNoQXJy
YXk7IH0KQEAgLTE3OSwxMiArMTc5LDEyIEBAIHB1YmxpYzoKICAgICBjb25zdCBTdHJpbmcmIG1h
cmtlclN0YXJ0UmVzb3VyY2UoKSBjb25zdCB7IHJldHVybiBtX2luaGVyaXRlZFJlc291cmNlRGF0
YS0+bWFya2VyU3RhcnQ7IH0KICAgICBjb25zdCBTdHJpbmcmIG1hcmtlck1pZFJlc291cmNlKCkg
Y29uc3QgeyByZXR1cm4gbV9pbmhlcml0ZWRSZXNvdXJjZURhdGEtPm1hcmtlck1pZDsgfQogICAg
IGNvbnN0IFN0cmluZyYgbWFya2VyRW5kUmVzb3VyY2UoKSBjb25zdCB7IHJldHVybiBtX2luaGVy
aXRlZFJlc291cmNlRGF0YS0+bWFya2VyRW5kOyB9Ci0gICAgRU1hc2tUeXBlIG1hc2tUeXBlKCkg
Y29uc3QgeyByZXR1cm4gKEVNYXNrVHlwZSkgbV9ub25Jbmhlcml0ZWRGbGFncy5mbGFnQml0cy5t
YXNrVHlwZTsgfQorICAgIE1hc2tUeXBlIG1hc2tUeXBlKCkgY29uc3QgeyByZXR1cm4gc3RhdGlj
X2Nhc3Q8TWFza1R5cGU+KG1fbm9uSW5oZXJpdGVkRmxhZ3MuZmxhZ0JpdHMubWFza1R5cGUpOyB9
CiAKLSAgICBjb25zdCBTVkdQYWludFR5cGUmIHZpc2l0ZWRMaW5rRmlsbFBhaW50VHlwZSgpIGNv
bnN0IHsgcmV0dXJuIG1fZmlsbERhdGEtPnZpc2l0ZWRMaW5rUGFpbnRUeXBlOyB9CisgICAgU1ZH
UGFpbnRUeXBlIHZpc2l0ZWRMaW5rRmlsbFBhaW50VHlwZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRp
Y19jYXN0PFNWR1BhaW50VHlwZT4obV9maWxsRGF0YS0+dmlzaXRlZExpbmtQYWludFR5cGUpOyB9
CiAgICAgY29uc3QgQ29sb3ImIHZpc2l0ZWRMaW5rRmlsbFBhaW50Q29sb3IoKSBjb25zdCB7IHJl
dHVybiBtX2ZpbGxEYXRhLT52aXNpdGVkTGlua1BhaW50Q29sb3I7IH0KICAgICBjb25zdCBTdHJp
bmcmIHZpc2l0ZWRMaW5rRmlsbFBhaW50VXJpKCkgY29uc3QgeyByZXR1cm4gbV9maWxsRGF0YS0+
dmlzaXRlZExpbmtQYWludFVyaTsgfQotICAgIGNvbnN0IFNWR1BhaW50VHlwZSYgdmlzaXRlZExp
bmtTdHJva2VQYWludFR5cGUoKSBjb25zdCB7IHJldHVybiBtX3N0cm9rZURhdGEtPnZpc2l0ZWRM
aW5rUGFpbnRUeXBlOyB9CisgICAgU1ZHUGFpbnRUeXBlIHZpc2l0ZWRMaW5rU3Ryb2tlUGFpbnRU
eXBlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8U1ZHUGFpbnRUeXBlPihtX3N0cm9rZURh
dGEtPnZpc2l0ZWRMaW5rUGFpbnRUeXBlKTsgfQogICAgIGNvbnN0IENvbG9yJiB2aXNpdGVkTGlu
a1N0cm9rZVBhaW50Q29sb3IoKSBjb25zdCB7IHJldHVybiBtX3N0cm9rZURhdGEtPnZpc2l0ZWRM
aW5rUGFpbnRDb2xvcjsgfQogICAgIGNvbnN0IFN0cmluZyYgdmlzaXRlZExpbmtTdHJva2VQYWlu
dFVyaSgpIGNvbnN0IHsgcmV0dXJuIG1fc3Ryb2tlRGF0YS0+dmlzaXRlZExpbmtQYWludFVyaTsg
fQogCkBAIC0xOTIsOCArMTkyLDggQEAgcHVibGljOgogICAgIGJvb2wgaGFzQ2xpcHBlcigpIGNv
bnN0IHsgcmV0dXJuICFjbGlwcGVyUmVzb3VyY2UoKS5pc0VtcHR5KCk7IH0KICAgICBib29sIGhh
c01hc2tlcigpIGNvbnN0IHsgcmV0dXJuICFtYXNrZXJSZXNvdXJjZSgpLmlzRW1wdHkoKTsgfQog
ICAgIGJvb2wgaGFzTWFya2VycygpIGNvbnN0IHsgcmV0dXJuICFtYXJrZXJTdGFydFJlc291cmNl
KCkuaXNFbXB0eSgpIHx8ICFtYXJrZXJNaWRSZXNvdXJjZSgpLmlzRW1wdHkoKSB8fCAhbWFya2Vy
RW5kUmVzb3VyY2UoKS5pc0VtcHR5KCk7IH0KLSAgICBib29sIGhhc1N0cm9rZSgpIGNvbnN0IHsg
cmV0dXJuIHN0cm9rZVBhaW50VHlwZSgpICE9IFNWR19QQUlOVFRZUEVfTk9ORTsgfQotICAgIGJv
b2wgaGFzRmlsbCgpIGNvbnN0IHsgcmV0dXJuIGZpbGxQYWludFR5cGUoKSAhPSBTVkdfUEFJTlRU
WVBFX05PTkU7IH0KKyAgICBib29sIGhhc1N0cm9rZSgpIGNvbnN0IHsgcmV0dXJuIHN0cm9rZVBh
aW50VHlwZSgpICE9IFNWR1BhaW50VHlwZTo6Tm9uZTsgfQorICAgIGJvb2wgaGFzRmlsbCgpIGNv
bnN0IHsgcmV0dXJuIGZpbGxQYWludFR5cGUoKSAhPSBTVkdQYWludFR5cGU6Ok5vbmU7IH0KICAg
ICBib29sIGlzb2xhdGVzQmxlbmRpbmcoKSBjb25zdCB7IHJldHVybiBoYXNNYXNrZXIoKSB8fCBz
aGFkb3coKTsgfQogCiBwcml2YXRlOgpAQCAtMjA5LDE1ICsyMDksMTUgQEAgcHJpdmF0ZToKICAg
ICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEluaGVyaXRlZEZsYWdzJikgY29uc3Q7CiAgICAg
ICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBJbmhlcml0ZWRGbGFncyYgb3RoZXIpIGNvbnN0IHsg
cmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOyB9CiAKLSAgICAgICAgdW5zaWduZWQgY29sb3JSZW5k
ZXJpbmcgOiAyOyAvLyBFQ29sb3JSZW5kZXJpbmcKLSAgICAgICAgdW5zaWduZWQgc2hhcGVSZW5k
ZXJpbmcgOiAyOyAvLyBFU2hhcGVSZW5kZXJpbmcKKyAgICAgICAgdW5zaWduZWQgY29sb3JSZW5k
ZXJpbmcgOiAyOyAvLyBDb2xvclJlbmRlcmluZworICAgICAgICB1bnNpZ25lZCBzaGFwZVJlbmRl
cmluZyA6IDI7IC8vIFNoYXBlUmVuZGVyaW5nCiAgICAgICAgIHVuc2lnbmVkIGNsaXBSdWxlIDog
MTsgLy8gV2luZFJ1bGUKICAgICAgICAgdW5zaWduZWQgZmlsbFJ1bGUgOiAxOyAvLyBXaW5kUnVs
ZQotICAgICAgICB1bnNpZ25lZCB0ZXh0QW5jaG9yIDogMjsgLy8gRVRleHRBbmNob3IKLSAgICAg
ICAgdW5zaWduZWQgY29sb3JJbnRlcnBvbGF0aW9uIDogMjsgLy8gRUNvbG9ySW50ZXJwb2xhdGlv
bgotICAgICAgICB1bnNpZ25lZCBjb2xvckludGVycG9sYXRpb25GaWx0ZXJzIDogMjsgLy8gRUNv
bG9ySW50ZXJwb2xhdGlvbgotICAgICAgICB1bnNpZ25lZCBnbHlwaE9yaWVudGF0aW9uSG9yaXpv
bnRhbCA6IDM7IC8vIEVHbHlwaE9yaWVudGF0aW9uCi0gICAgICAgIHVuc2lnbmVkIGdseXBoT3Jp
ZW50YXRpb25WZXJ0aWNhbCA6IDM7IC8vIEVHbHlwaE9yaWVudGF0aW9uCisgICAgICAgIHVuc2ln
bmVkIHRleHRBbmNob3IgOiAyOyAvLyBUZXh0QW5jaG9yCisgICAgICAgIHVuc2lnbmVkIGNvbG9y
SW50ZXJwb2xhdGlvbiA6IDI7IC8vIENvbG9ySW50ZXJwb2xhdGlvbgorICAgICAgICB1bnNpZ25l
ZCBjb2xvckludGVycG9sYXRpb25GaWx0ZXJzIDogMjsgLy8gQ29sb3JJbnRlcnBvbGF0aW9uCisg
ICAgICAgIHVuc2lnbmVkIGdseXBoT3JpZW50YXRpb25Ib3Jpem9udGFsIDogMzsgLy8gR2x5cGhP
cmllbnRhdGlvbgorICAgICAgICB1bnNpZ25lZCBnbHlwaE9yaWVudGF0aW9uVmVydGljYWwgOiAz
OyAvLyBHbHlwaE9yaWVudGF0aW9uCiAgICAgfTsKIAogICAgIHN0cnVjdCBOb25Jbmhlcml0ZWRG
bGFncyB7CkBAIC0yMjcsMTIgKzIyNywxMiBAQCBwcml2YXRlOgogCiAgICAgICAgIHVuaW9uIHsK
ICAgICAgICAgICAgIHN0cnVjdCB7Ci0gICAgICAgICAgICAgICAgdW5zaWduZWQgYWxpZ25tZW50
QmFzZWxpbmUgOiA0OyAvLyBFQWxpZ25tZW50QmFzZWxpbmUKLSAgICAgICAgICAgICAgICB1bnNp
Z25lZCBkb21pbmFudEJhc2VsaW5lIDogNDsgLy8gRURvbWluYW50QmFzZWxpbmUKLSAgICAgICAg
ICAgICAgICB1bnNpZ25lZCBiYXNlbGluZVNoaWZ0IDogMjsgLy8gRUJhc2VsaW5lU2hpZnQKLSAg
ICAgICAgICAgICAgICB1bnNpZ25lZCB2ZWN0b3JFZmZlY3Q6IDE7IC8vIEVWZWN0b3JFZmZlY3QK
LSAgICAgICAgICAgICAgICB1bnNpZ25lZCBidWZmZXJlZFJlbmRlcmluZzogMjsgLy8gRUJ1ZmZl
cmVkUmVuZGVyaW5nCi0gICAgICAgICAgICAgICAgdW5zaWduZWQgbWFza1R5cGU6IDE7IC8vIEVN
YXNrVHlwZQorICAgICAgICAgICAgICAgIHVuc2lnbmVkIGFsaWdubWVudEJhc2VsaW5lIDogNDsg
Ly8gQWxpZ25tZW50QmFzZWxpbmUKKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBkb21pbmFudEJh
c2VsaW5lIDogNDsgLy8gRG9taW5hbnRCYXNlbGluZQorICAgICAgICAgICAgICAgIHVuc2lnbmVk
IGJhc2VsaW5lU2hpZnQgOiAyOyAvLyBCYXNlbGluZVNoaWZ0CisgICAgICAgICAgICAgICAgdW5z
aWduZWQgdmVjdG9yRWZmZWN0OiAxOyAvLyBWZWN0b3JFZmZlY3QKKyAgICAgICAgICAgICAgICB1
bnNpZ25lZCBidWZmZXJlZFJlbmRlcmluZzogMjsgLy8gQnVmZmVyZWRSZW5kZXJpbmcKKyAgICAg
ICAgICAgICAgICB1bnNpZ25lZCBtYXNrVHlwZTogMTsgLy8gTWFza1R5cGUKICAgICAgICAgICAg
ICAgICAvLyAxOCBiaXRzIHVudXNlZAogICAgICAgICAgICAgfSBmbGFnQml0czsKICAgICAgICAg
ICAgIHVpbnQzMl90IGZsYWdzOwpAQCAtNDUwLDIzICs0NTAsMjMgQEAgaW5saW5lIHZvaWQgU1ZH
UmVuZGVyU3R5bGU6OnNldE1hcmtlckVuZAogCiBpbmxpbmUgdm9pZCBTVkdSZW5kZXJTdHlsZTo6
c2V0Qml0RGVmYXVsdHMoKQogewotICAgIG1faW5oZXJpdGVkRmxhZ3MuY2xpcFJ1bGUgPSBpbml0
aWFsQ2xpcFJ1bGUoKTsKLSAgICBtX2luaGVyaXRlZEZsYWdzLmNvbG9yUmVuZGVyaW5nID0gaW5p
dGlhbENvbG9yUmVuZGVyaW5nKCk7Ci0gICAgbV9pbmhlcml0ZWRGbGFncy5maWxsUnVsZSA9IGlu
aXRpYWxGaWxsUnVsZSgpOwotICAgIG1faW5oZXJpdGVkRmxhZ3Muc2hhcGVSZW5kZXJpbmcgPSBp
bml0aWFsU2hhcGVSZW5kZXJpbmcoKTsKLSAgICBtX2luaGVyaXRlZEZsYWdzLnRleHRBbmNob3Ig
PSBpbml0aWFsVGV4dEFuY2hvcigpOwotICAgIG1faW5oZXJpdGVkRmxhZ3MuY29sb3JJbnRlcnBv
bGF0aW9uID0gaW5pdGlhbENvbG9ySW50ZXJwb2xhdGlvbigpOwotICAgIG1faW5oZXJpdGVkRmxh
Z3MuY29sb3JJbnRlcnBvbGF0aW9uRmlsdGVycyA9IGluaXRpYWxDb2xvckludGVycG9sYXRpb25G
aWx0ZXJzKCk7Ci0gICAgbV9pbmhlcml0ZWRGbGFncy5nbHlwaE9yaWVudGF0aW9uSG9yaXpvbnRh
bCA9IGluaXRpYWxHbHlwaE9yaWVudGF0aW9uSG9yaXpvbnRhbCgpOwotICAgIG1faW5oZXJpdGVk
RmxhZ3MuZ2x5cGhPcmllbnRhdGlvblZlcnRpY2FsID0gaW5pdGlhbEdseXBoT3JpZW50YXRpb25W
ZXJ0aWNhbCgpOworICAgIG1faW5oZXJpdGVkRmxhZ3MuY2xpcFJ1bGUgPSBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oaW5pdGlhbENsaXBSdWxlKCkpOworICAgIG1faW5oZXJpdGVkRmxhZ3MuY29sb3JS
ZW5kZXJpbmcgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5pdGlhbENvbG9yUmVuZGVyaW5nKCkp
OworICAgIG1faW5oZXJpdGVkRmxhZ3MuZmlsbFJ1bGUgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
aW5pdGlhbEZpbGxSdWxlKCkpOworICAgIG1faW5oZXJpdGVkRmxhZ3Muc2hhcGVSZW5kZXJpbmcg
PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5pdGlhbFNoYXBlUmVuZGVyaW5nKCkpOworICAgIG1f
aW5oZXJpdGVkRmxhZ3MudGV4dEFuY2hvciA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihpbml0aWFs
VGV4dEFuY2hvcigpKTsKKyAgICBtX2luaGVyaXRlZEZsYWdzLmNvbG9ySW50ZXJwb2xhdGlvbiA9
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihpbml0aWFsQ29sb3JJbnRlcnBvbGF0aW9uKCkpOworICAg
IG1faW5oZXJpdGVkRmxhZ3MuY29sb3JJbnRlcnBvbGF0aW9uRmlsdGVycyA9IHN0YXRpY19jYXN0
PHVuc2lnbmVkPihpbml0aWFsQ29sb3JJbnRlcnBvbGF0aW9uRmlsdGVycygpKTsKKyAgICBtX2lu
aGVyaXRlZEZsYWdzLmdseXBoT3JpZW50YXRpb25Ib3Jpem9udGFsID0gc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KGluaXRpYWxHbHlwaE9yaWVudGF0aW9uSG9yaXpvbnRhbCgpKTsKKyAgICBtX2luaGVy
aXRlZEZsYWdzLmdseXBoT3JpZW50YXRpb25WZXJ0aWNhbCA9IHN0YXRpY19jYXN0PHVuc2lnbmVk
Pihpbml0aWFsR2x5cGhPcmllbnRhdGlvblZlcnRpY2FsKCkpOwogCiAgICAgbV9ub25Jbmhlcml0
ZWRGbGFncy5mbGFncyA9IDA7Ci0gICAgbV9ub25Jbmhlcml0ZWRGbGFncy5mbGFnQml0cy5hbGln
bm1lbnRCYXNlbGluZSA9IGluaXRpYWxBbGlnbm1lbnRCYXNlbGluZSgpOwotICAgIG1fbm9uSW5o
ZXJpdGVkRmxhZ3MuZmxhZ0JpdHMuZG9taW5hbnRCYXNlbGluZSA9IGluaXRpYWxEb21pbmFudEJh
c2VsaW5lKCk7Ci0gICAgbV9ub25Jbmhlcml0ZWRGbGFncy5mbGFnQml0cy5iYXNlbGluZVNoaWZ0
ID0gaW5pdGlhbEJhc2VsaW5lU2hpZnQoKTsKLSAgICBtX25vbkluaGVyaXRlZEZsYWdzLmZsYWdC
aXRzLnZlY3RvckVmZmVjdCA9IGluaXRpYWxWZWN0b3JFZmZlY3QoKTsKLSAgICBtX25vbkluaGVy
aXRlZEZsYWdzLmZsYWdCaXRzLmJ1ZmZlcmVkUmVuZGVyaW5nID0gaW5pdGlhbEJ1ZmZlcmVkUmVu
ZGVyaW5nKCk7Ci0gICAgbV9ub25Jbmhlcml0ZWRGbGFncy5mbGFnQml0cy5tYXNrVHlwZSA9IGlu
aXRpYWxNYXNrVHlwZSgpOworICAgIG1fbm9uSW5oZXJpdGVkRmxhZ3MuZmxhZ0JpdHMuYWxpZ25t
ZW50QmFzZWxpbmUgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5pdGlhbEFsaWdubWVudEJhc2Vs
aW5lKCkpOworICAgIG1fbm9uSW5oZXJpdGVkRmxhZ3MuZmxhZ0JpdHMuZG9taW5hbnRCYXNlbGlu
ZSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihpbml0aWFsRG9taW5hbnRCYXNlbGluZSgpKTsKKyAg
ICBtX25vbkluaGVyaXRlZEZsYWdzLmZsYWdCaXRzLmJhc2VsaW5lU2hpZnQgPSBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oaW5pdGlhbEJhc2VsaW5lU2hpZnQoKSk7CisgICAgbV9ub25Jbmhlcml0ZWRG
bGFncy5mbGFnQml0cy52ZWN0b3JFZmZlY3QgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5pdGlh
bFZlY3RvckVmZmVjdCgpKTsKKyAgICBtX25vbkluaGVyaXRlZEZsYWdzLmZsYWdCaXRzLmJ1ZmZl
cmVkUmVuZGVyaW5nID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGluaXRpYWxCdWZmZXJlZFJlbmRl
cmluZygpKTsKKyAgICBtX25vbkluaGVyaXRlZEZsYWdzLmZsYWdCaXRzLm1hc2tUeXBlID0gc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KGluaXRpYWxNYXNrVHlwZSgpKTsKIH0KIAogaW5saW5lIGJvb2wg
U1ZHUmVuZGVyU3R5bGU6OkluaGVyaXRlZEZsYWdzOjpvcGVyYXRvcj09KGNvbnN0IEluaGVyaXRl
ZEZsYWdzJiBvdGhlcikgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9TVkdSZW5kZXJTdHlsZURlZnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvU1ZHUmVuZGVyU3R5bGVEZWZzLmgJKHJldmlzaW9uIDIzMjIyOCkKKysrIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TVkdSZW5kZXJTdHlsZURlZnMuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzUsMjY3ICszNSwzMDIgQEAKICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKLSAgICBlbnVtIFNWR1BhaW50VHlwZSB7Ci0gICAgICAgIFNW
R19QQUlOVFRZUEVfUkdCQ09MT1IsCi0gICAgICAgIFNWR19QQUlOVFRZUEVfTk9ORSwKLSAgICAg
ICAgU1ZHX1BBSU5UVFlQRV9DVVJSRU5UQ09MT1IsCi0gICAgICAgIFNWR19QQUlOVFRZUEVfVVJJ
X05PTkUsCi0gICAgICAgIFNWR19QQUlOVFRZUEVfVVJJX0NVUlJFTlRDT0xPUiwKLSAgICAgICAg
U1ZHX1BBSU5UVFlQRV9VUklfUkdCQ09MT1IsCi0gICAgICAgIFNWR19QQUlOVFRZUEVfVVJJCi0g
ICAgfTsKLQotICAgIGVudW0gRUJhc2VsaW5lU2hpZnQgewotICAgICAgICBCU19CQVNFTElORSwg
QlNfU1VCLCBCU19TVVBFUiwgQlNfTEVOR1RICi0gICAgfTsKLQotICAgIGVudW0gRVRleHRBbmNo
b3IgewotICAgICAgICBUQV9TVEFSVCwgVEFfTUlERExFLCBUQV9FTkQKLSAgICB9OwotCi0gICAg
ZW51bSBFQ29sb3JJbnRlcnBvbGF0aW9uIHsKLSAgICAgICAgQ0lfQVVUTywgQ0lfU1JHQiwgQ0lf
TElORUFSUkdCCi0gICAgfTsKLQotICAgIGVudW0gRUNvbG9yUmVuZGVyaW5nIHsKLSAgICAgICAg
Q1JfQVVUTywgQ1JfT1BUSU1JWkVTUEVFRCwgQ1JfT1BUSU1JWkVRVUFMSVRZCi0gICAgfTsKLSAg
ICBlbnVtIEVTaGFwZVJlbmRlcmluZyB7Ci0gICAgICAgIFNSX0FVVE8sIFNSX09QVElNSVpFU1BF
RUQsIFNSX0NSSVNQRURHRVMsIFNSX0dFT01FVFJJQ1BSRUNJU0lPTgotICAgIH07Ci0KLSAgICBl
bnVtIEVHbHlwaE9yaWVudGF0aW9uIHsKLSAgICAgICAgR09fMERFRywgR09fOTBERUcsIEdPXzE4
MERFRywgR09fMjcwREVHLCBHT19BVVRPCi0gICAgfTsKLQotICAgIGVudW0gRUFsaWdubWVudEJh
c2VsaW5lIHsKLSAgICAgICAgQUJfQVVUTywgQUJfQkFTRUxJTkUsIEFCX0JFRk9SRV9FREdFLCBB
Ql9URVhUX0JFRk9SRV9FREdFLAotICAgICAgICBBQl9NSURETEUsIEFCX0NFTlRSQUwsIEFCX0FG
VEVSX0VER0UsIEFCX1RFWFRfQUZURVJfRURHRSwKLSAgICAgICAgQUJfSURFT0dSQVBISUMsIEFC
X0FMUEhBQkVUSUMsIEFCX0hBTkdJTkcsIEFCX01BVEhFTUFUSUNBTAotICAgIH07Ci0KLSAgICBl
bnVtIEVEb21pbmFudEJhc2VsaW5lIHsKLSAgICAgICAgREJfQVVUTywgREJfVVNFX1NDUklQVCwg
REJfTk9fQ0hBTkdFLCBEQl9SRVNFVF9TSVpFLAotICAgICAgICBEQl9JREVPR1JBUEhJQywgREJf
QUxQSEFCRVRJQywgREJfSEFOR0lORywgREJfTUFUSEVNQVRJQ0FMLAotICAgICAgICBEQl9DRU5U
UkFMLCBEQl9NSURETEUsIERCX1RFWFRfQUZURVJfRURHRSwgREJfVEVYVF9CRUZPUkVfRURHRQot
ICAgIH07CisKK2NsYXNzIENTU1ZhbHVlOworY2xhc3MgQ1NTVmFsdWVMaXN0OworY2xhc3MgU1ZH
UGFpbnQ7CisKK2VudW0gY2xhc3MgU1ZHUGFpbnRUeXBlIHsKKyAgICBSR0JDb2xvciwKKyAgICBO
b25lLAorICAgIEN1cnJlbnRDb2xvciwKKyAgICBVUklOb25lLAorICAgIFVSSUN1cnJlbnRDb2xv
ciwKKyAgICBVUklSR0JDb2xvciwKKyAgICBVUkkKK307CisKK2VudW0gY2xhc3MgQmFzZWxpbmVT
aGlmdCB7CisgICAgQmFzZWxpbmUsCisgICAgU3ViLAorICAgIFN1cGVyLAorICAgIExlbmd0aAor
fTsKKworZW51bSBjbGFzcyBUZXh0QW5jaG9yIHsKKyAgICBTdGFydCwKKyAgICBNaWRkbGUsCisg
ICAgRW5kCit9OworCitlbnVtIGNsYXNzIENvbG9ySW50ZXJwb2xhdGlvbiB7CisgICAgQXV0bywK
KyAgICBTUkdCLAorICAgIExpbmVhclJHQgorfTsKKworZW51bSBjbGFzcyBDb2xvclJlbmRlcmlu
ZyB7CisgICAgQXV0bywKKyAgICBPcHRpbWl6ZVNwZWVkLAorICAgIE9wdGltaXplUXVhbGl0eQor
fTsKK2VudW0gY2xhc3MgU2hhcGVSZW5kZXJpbmcgeworICAgIEF1dG8sCisgICAgT3B0aW1pemVT
cGVlZCwKKyAgICBDcmlzcEVkZ2VzLAorICAgIEdlb21ldHJpY1ByZWNpc2lvbgorfTsKKworZW51
bSBjbGFzcyBHbHlwaE9yaWVudGF0aW9uIHsKKyAgICBEZWdyZWVzMCwKKyAgICBEZWdyZWVzOTAs
CisgICAgRGVncmVlczE4MCwKKyAgICBEZWdyZWVzMjcwLAorICAgIEF1dG8KK307CisKK2VudW0g
Y2xhc3MgQWxpZ25tZW50QmFzZWxpbmUgeworICAgIEF1dG8sCisgICAgQmFzZWxpbmUsCisgICAg
QmVmb3JlRWRnZSwKKyAgICBUZXh0QmVmb3JlRWRnZSwKKyAgICBNaWRkbGUsCisgICAgQ2VudHJh
bCwKKyAgICBBZnRlckVkZ2UsCisgICAgVGV4dEFmdGVyRWRnZSwKKyAgICBJZGVvZ3JhcGhpYywK
KyAgICBBbHBoYWJldGljLAorICAgIEhhbmdpbmcsCisgICAgTWF0aGVtYXRpY2FsCit9OworCitl
bnVtIGNsYXNzIERvbWluYW50QmFzZWxpbmUgeworICAgIEF1dG8sCisgICAgVXNlU2NyaXB0LAor
ICAgIE5vQ2hhbmdlLAorICAgIFJlc2V0U2l6ZSwKKyAgICBJZGVvZ3JhcGhpYywKKyAgICBBbHBo
YWJldGljLAorICAgIEhhbmdpbmcsCisgICAgTWF0aGVtYXRpY2FsLAorICAgIENlbnRyYWwsCisg
ICAgTWlkZGxlLAorICAgIFRleHRBZnRlckVkZ2UsCisgICAgVGV4dEJlZm9yZUVkZ2UKK307CisK
K2VudW0gY2xhc3MgVmVjdG9yRWZmZWN0IHsKKyAgICBOb25lLAorICAgIE5vblNjYWxpbmdTdHJv
a2UKK307CisKK2VudW0gY2xhc3MgQnVmZmVyZWRSZW5kZXJpbmcgeworICAgIEF1dG8sCisgICAg
RHluYW1pYywKKyAgICBTdGF0aWMKK307CisKK2VudW0gY2xhc3MgTWFza1R5cGUgeworICAgIEx1
bWluYW5jZSwKKyAgICBBbHBoYQorfTsKKworLy8gSW5oZXJpdGVkL05vbi1Jbmhlcml0ZWQgU3R5
bGUgRGF0YXN0cnVjdHVyZXMKK2NsYXNzIFN0eWxlRmlsbERhdGEgOiBwdWJsaWMgUmVmQ291bnRl
ZDxTdHlsZUZpbGxEYXRhPiB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxTdHlsZUZpbGxEYXRh
PiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFN0eWxlRmlsbERhdGEpOyB9CisgICAg
UmVmPFN0eWxlRmlsbERhdGE+IGNvcHkoKSBjb25zdDsKKworICAgIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBTdHlsZUZpbGxEYXRhJikgY29uc3Q7CisgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFN0
eWxlRmlsbERhdGEmIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuICEoKnRoaXMg
PT0gb3RoZXIpOworICAgIH0KKworICAgIGZsb2F0IG9wYWNpdHk7CisgICAgU1ZHUGFpbnRUeXBl
IHBhaW50VHlwZTsKKyAgICBDb2xvciBwYWludENvbG9yOworICAgIFN0cmluZyBwYWludFVyaTsK
KyAgICBTVkdQYWludFR5cGUgdmlzaXRlZExpbmtQYWludFR5cGU7CisgICAgQ29sb3IgdmlzaXRl
ZExpbmtQYWludENvbG9yOworICAgIFN0cmluZyB2aXNpdGVkTGlua1BhaW50VXJpOworCitwcml2
YXRlOgorICAgIFN0eWxlRmlsbERhdGEoKTsKKyAgICBTdHlsZUZpbGxEYXRhKGNvbnN0IFN0eWxl
RmlsbERhdGEmKTsKK307CisKK2NsYXNzIFN0eWxlU3Ryb2tlRGF0YSA6IHB1YmxpYyBSZWZDb3Vu
dGVkPFN0eWxlU3Ryb2tlRGF0YT4geworcHVibGljOgorICAgIHN0YXRpYyBSZWY8U3R5bGVTdHJv
a2VEYXRhPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFN0eWxlU3Ryb2tlRGF0YSk7
IH0KKyAgICBSZWY8U3R5bGVTdHJva2VEYXRhPiBjb3B5KCkgY29uc3Q7CisKKyAgICBib29sIG9w
ZXJhdG9yPT0oY29uc3QgU3R5bGVTdHJva2VEYXRhJikgY29uc3Q7CisgICAgYm9vbCBvcGVyYXRv
ciE9KGNvbnN0IFN0eWxlU3Ryb2tlRGF0YSYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICBy
ZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7CisgICAgfQorCisgICAgZmxvYXQgb3BhY2l0eTsKKwor
ICAgIExlbmd0aCBkYXNoT2Zmc2V0OworICAgIFZlY3RvcjxTVkdMZW5ndGhWYWx1ZT4gZGFzaEFy
cmF5OworCisgICAgU1ZHUGFpbnRUeXBlIHBhaW50VHlwZTsKKyAgICBDb2xvciBwYWludENvbG9y
OworICAgIFN0cmluZyBwYWludFVyaTsKKyAgICBTVkdQYWludFR5cGUgdmlzaXRlZExpbmtQYWlu
dFR5cGU7CisgICAgQ29sb3IgdmlzaXRlZExpbmtQYWludENvbG9yOworICAgIFN0cmluZyB2aXNp
dGVkTGlua1BhaW50VXJpOworCitwcml2YXRlOgorICAgIFN0eWxlU3Ryb2tlRGF0YSgpOworICAg
IFN0eWxlU3Ryb2tlRGF0YShjb25zdCBTdHlsZVN0cm9rZURhdGEmKTsKK307CisKK2NsYXNzIFN0
eWxlU3RvcERhdGEgOiBwdWJsaWMgUmVmQ291bnRlZDxTdHlsZVN0b3BEYXRhPiB7CitwdWJsaWM6
CisgICAgc3RhdGljIFJlZjxTdHlsZVN0b3BEYXRhPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJl
ZigqbmV3IFN0eWxlU3RvcERhdGEpOyB9CisgICAgUmVmPFN0eWxlU3RvcERhdGE+IGNvcHkoKSBj
b25zdDsKKworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTdHlsZVN0b3BEYXRhJikgY29uc3Q7
CisgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFN0eWxlU3RvcERhdGEmIG90aGVyKSBjb25zdAor
ICAgIHsKKyAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOworICAgIH0KKworICAgIGZs
b2F0IG9wYWNpdHk7CisgICAgQ29sb3IgY29sb3I7CisKK3ByaXZhdGU6CisgICAgU3R5bGVTdG9w
RGF0YSgpOworICAgIFN0eWxlU3RvcERhdGEoY29uc3QgU3R5bGVTdG9wRGF0YSYpOworfTsKKwor
Y2xhc3MgU3R5bGVUZXh0RGF0YSA6IHB1YmxpYyBSZWZDb3VudGVkPFN0eWxlVGV4dERhdGE+IHsK
K3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFN0eWxlVGV4dERhdGE+IGNyZWF0ZSgpIHsgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgU3R5bGVUZXh0RGF0YSk7IH0KKyAgICBSZWY8U3R5bGVUZXh0RGF0YT4g
Y29weSgpIGNvbnN0OwogICAgIAotICAgIGVudW0gRVZlY3RvckVmZmVjdCB7Ci0gICAgICAgIFZF
X05PTkUsCi0gICAgICAgIFZFX05PTl9TQ0FMSU5HX1NUUk9LRQotICAgIH07Ci0KLSAgICBlbnVt
IEVCdWZmZXJlZFJlbmRlcmluZyB7Ci0gICAgICAgIEJSX0FVVE8sCi0gICAgICAgIEJSX0RZTkFN
SUMsCi0gICAgICAgIEJSX1NUQVRJQwotICAgIH07Ci0KLSAgICBlbnVtIEVNYXNrVHlwZSB7Ci0g
ICAgICAgIE1UX0xVTUlOQU5DRSwKLSAgICAgICAgTVRfQUxQSEEKLSAgICB9OwotCi0gICAgY2xh
c3MgQ1NTVmFsdWU7Ci0gICAgY2xhc3MgQ1NTVmFsdWVMaXN0OwotICAgIGNsYXNzIFNWR1BhaW50
OwotCi0gICAgLy8gSW5oZXJpdGVkL05vbi1Jbmhlcml0ZWQgU3R5bGUgRGF0YXN0cnVjdHVyZXMK
LSAgICBjbGFzcyBTdHlsZUZpbGxEYXRhIDogcHVibGljIFJlZkNvdW50ZWQ8U3R5bGVGaWxsRGF0
YT4gewotICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIFJlZjxTdHlsZUZpbGxEYXRhPiBjcmVh
dGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFN0eWxlRmlsbERhdGEpOyB9Ci0gICAgICAgIFJl
ZjxTdHlsZUZpbGxEYXRhPiBjb3B5KCkgY29uc3Q7Ci0KLSAgICAgICAgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IFN0eWxlRmlsbERhdGEmKSBjb25zdDsKLSAgICAgICAgYm9vbCBvcGVyYXRvciE9KGNv
bnN0IFN0eWxlRmlsbERhdGEmIG90aGVyKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICBy
ZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7Ci0gICAgICAgIH0KLQotICAgICAgICBmbG9hdCBvcGFj
aXR5OwotICAgICAgICBTVkdQYWludFR5cGUgcGFpbnRUeXBlOwotICAgICAgICBDb2xvciBwYWlu
dENvbG9yOwotICAgICAgICBTdHJpbmcgcGFpbnRVcmk7Ci0gICAgICAgIFNWR1BhaW50VHlwZSB2
aXNpdGVkTGlua1BhaW50VHlwZTsKLSAgICAgICAgQ29sb3IgdmlzaXRlZExpbmtQYWludENvbG9y
OwotICAgICAgICBTdHJpbmcgdmlzaXRlZExpbmtQYWludFVyaTsKLQotICAgIHByaXZhdGU6Ci0g
ICAgICAgIFN0eWxlRmlsbERhdGEoKTsKLSAgICAgICAgU3R5bGVGaWxsRGF0YShjb25zdCBTdHls
ZUZpbGxEYXRhJik7Ci0gICAgfTsKLQotICAgIGNsYXNzIFN0eWxlU3Ryb2tlRGF0YSA6IHB1Ymxp
YyBSZWZDb3VudGVkPFN0eWxlU3Ryb2tlRGF0YT4gewotICAgIHB1YmxpYzoKLSAgICAgICAgc3Rh
dGljIFJlZjxTdHlsZVN0cm9rZURhdGE+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
U3R5bGVTdHJva2VEYXRhKTsgfQotICAgICAgICBSZWY8U3R5bGVTdHJva2VEYXRhPiBjb3B5KCkg
Y29uc3Q7Ci0KLSAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFN0eWxlU3Ryb2tlRGF0YSYp
IGNvbnN0OwotICAgICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgU3R5bGVTdHJva2VEYXRhJiBv
dGhlcikgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3Ro
ZXIpOwotICAgICAgICB9Ci0KLSAgICAgICAgZmxvYXQgb3BhY2l0eTsKLQotICAgICAgICBMZW5n
dGggZGFzaE9mZnNldDsKLSAgICAgICAgVmVjdG9yPFNWR0xlbmd0aFZhbHVlPiBkYXNoQXJyYXk7
Ci0KLSAgICAgICAgU1ZHUGFpbnRUeXBlIHBhaW50VHlwZTsKLSAgICAgICAgQ29sb3IgcGFpbnRD
b2xvcjsKLSAgICAgICAgU3RyaW5nIHBhaW50VXJpOwotICAgICAgICBTVkdQYWludFR5cGUgdmlz
aXRlZExpbmtQYWludFR5cGU7Ci0gICAgICAgIENvbG9yIHZpc2l0ZWRMaW5rUGFpbnRDb2xvcjsK
LSAgICAgICAgU3RyaW5nIHZpc2l0ZWRMaW5rUGFpbnRVcmk7Ci0KLSAgICBwcml2YXRlOiAgICAg
ICAgCi0gICAgICAgIFN0eWxlU3Ryb2tlRGF0YSgpOwotICAgICAgICBTdHlsZVN0cm9rZURhdGEo
Y29uc3QgU3R5bGVTdHJva2VEYXRhJik7Ci0gICAgfTsKLQotICAgIGNsYXNzIFN0eWxlU3RvcERh
dGEgOiBwdWJsaWMgUmVmQ291bnRlZDxTdHlsZVN0b3BEYXRhPiB7Ci0gICAgcHVibGljOgotICAg
ICAgICBzdGF0aWMgUmVmPFN0eWxlU3RvcERhdGE+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgU3R5bGVTdG9wRGF0YSk7IH0KLSAgICAgICAgUmVmPFN0eWxlU3RvcERhdGE+IGNvcHko
KSBjb25zdDsKLQotICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU3R5bGVTdG9wRGF0YSYp
IGNvbnN0OwotICAgICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgU3R5bGVTdG9wRGF0YSYgb3Ro
ZXIpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiAhKCp0aGlzID09IG90aGVy
KTsKLSAgICAgICAgfQotCi0gICAgICAgIGZsb2F0IG9wYWNpdHk7Ci0gICAgICAgIENvbG9yIGNv
bG9yOwotCi0gICAgcHJpdmF0ZTogICAgICAgIAotICAgICAgICBTdHlsZVN0b3BEYXRhKCk7Ci0g
ICAgICAgIFN0eWxlU3RvcERhdGEoY29uc3QgU3R5bGVTdG9wRGF0YSYpOwotICAgIH07Ci0KLSAg
ICBjbGFzcyBTdHlsZVRleHREYXRhIDogcHVibGljIFJlZkNvdW50ZWQ8U3R5bGVUZXh0RGF0YT4g
ewotICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIFJlZjxTdHlsZVRleHREYXRhPiBjcmVhdGUo
KSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFN0eWxlVGV4dERhdGEpOyB9Ci0gICAgICAgIFJlZjxT
dHlsZVRleHREYXRhPiBjb3B5KCkgY29uc3Q7Ci0gICAgICAgIAotICAgICAgICBib29sIG9wZXJh
dG9yPT0oY29uc3QgU3R5bGVUZXh0RGF0YSYgb3RoZXIpIGNvbnN0OwotICAgICAgICBib29sIG9w
ZXJhdG9yIT0oY29uc3QgU3R5bGVUZXh0RGF0YSYgb3RoZXIpIGNvbnN0Ci0gICAgICAgIHsKLSAg
ICAgICAgICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKLSAgICAgICAgfQotCi0gICAgICAg
IFNWR0xlbmd0aFZhbHVlIGtlcm5pbmc7Ci0KLSAgICBwcml2YXRlOgotICAgICAgICBTdHlsZVRl
eHREYXRhKCk7Ci0gICAgICAgIFN0eWxlVGV4dERhdGEoY29uc3QgU3R5bGVUZXh0RGF0YSYpOwot
ICAgIH07Ci0KLSAgICAvLyBOb3RlOiB0aGUgcnVsZSBmb3IgdGhpcyBjbGFzcyBpcywgKm5vIGlu
aGVyaXRhbmNlKiBvZiB0aGVzZSBwcm9wcwotICAgIGNsYXNzIFN0eWxlTWlzY0RhdGEgOiBwdWJs
aWMgUmVmQ291bnRlZDxTdHlsZU1pc2NEYXRhPiB7Ci0gICAgcHVibGljOgotICAgICAgICBzdGF0
aWMgUmVmPFN0eWxlTWlzY0RhdGE+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3R5
bGVNaXNjRGF0YSk7IH0KLSAgICAgICAgUmVmPFN0eWxlTWlzY0RhdGE+IGNvcHkoKSBjb25zdDsK
LQotICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU3R5bGVNaXNjRGF0YSYpIGNvbnN0Owot
ICAgICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgU3R5bGVNaXNjRGF0YSYgb3RoZXIpIGNvbnN0
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKLSAgICAg
ICAgfQotCi0gICAgICAgIENvbG9yIGZsb29kQ29sb3I7Ci0gICAgICAgIGZsb2F0IGZsb29kT3Bh
Y2l0eTsKLSAgICAgICAgQ29sb3IgbGlnaHRpbmdDb2xvcjsKLQotICAgICAgICAvLyBub24taW5o
ZXJpdGVkIHRleHQgc3R1ZmYgbGl2ZXMgaGVyZSBub3QgaW4gU3R5bGVUZXh0RGF0YS4KLSAgICAg
ICAgU1ZHTGVuZ3RoVmFsdWUgYmFzZWxpbmVTaGlmdFZhbHVlOwotCi0gICAgcHJpdmF0ZToKLSAg
ICAgICAgU3R5bGVNaXNjRGF0YSgpOwotICAgICAgICBTdHlsZU1pc2NEYXRhKGNvbnN0IFN0eWxl
TWlzY0RhdGEmKTsKLSAgICB9OwotCi0gICAgY2xhc3MgU3R5bGVTaGFkb3dTVkdEYXRhIDogcHVi
bGljIFJlZkNvdW50ZWQ8U3R5bGVTaGFkb3dTVkdEYXRhPiB7Ci0gICAgcHVibGljOgotICAgICAg
ICBzdGF0aWMgUmVmPFN0eWxlU2hhZG93U1ZHRGF0YT4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBTdHlsZVNoYWRvd1NWR0RhdGEpOyB9Ci0gICAgICAgIFJlZjxTdHlsZVNoYWRvd1NW
R0RhdGE+IGNvcHkoKSBjb25zdDsKLQotICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU3R5
bGVTaGFkb3dTVkdEYXRhJikgY29uc3Q7Ci0gICAgICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBT
dHlsZVNoYWRvd1NWR0RhdGEmIG90aGVyKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICBy
ZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7Ci0gICAgICAgIH0KLQotICAgICAgICBzdGQ6OnVuaXF1
ZV9wdHI8U2hhZG93RGF0YT4gc2hhZG93OwotCi0gICAgcHJpdmF0ZToKLSAgICAgICAgU3R5bGVT
aGFkb3dTVkdEYXRhKCk7Ci0gICAgICAgIFN0eWxlU2hhZG93U1ZHRGF0YShjb25zdCBTdHlsZVNo
YWRvd1NWR0RhdGEmKTsKLSAgICB9OwotCi0gICAgLy8gTm9uLWluaGVyaXRlZCByZXNvdXJjZXMK
LSAgICBjbGFzcyBTdHlsZVJlc291cmNlRGF0YSA6IHB1YmxpYyBSZWZDb3VudGVkPFN0eWxlUmVz
b3VyY2VEYXRhPiB7Ci0gICAgcHVibGljOgotICAgICAgICBzdGF0aWMgUmVmPFN0eWxlUmVzb3Vy
Y2VEYXRhPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFN0eWxlUmVzb3VyY2VEYXRh
KTsgfQotICAgICAgICBSZWY8U3R5bGVSZXNvdXJjZURhdGE+IGNvcHkoKSBjb25zdDsKLQotICAg
ICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU3R5bGVSZXNvdXJjZURhdGEmKSBjb25zdDsKLSAg
ICAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFN0eWxlUmVzb3VyY2VEYXRhJiBvdGhlcikgY29u
c3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOwotICAg
ICAgICB9Ci0KLSAgICAgICAgU3RyaW5nIGNsaXBwZXI7Ci0gICAgICAgIFN0cmluZyBtYXNrZXI7
Ci0KLSAgICBwcml2YXRlOgotICAgICAgICBTdHlsZVJlc291cmNlRGF0YSgpOwotICAgICAgICBT
dHlsZVJlc291cmNlRGF0YShjb25zdCBTdHlsZVJlc291cmNlRGF0YSYpOwotICAgIH07Ci0KLSAg
ICAvLyBJbmhlcml0ZWQgcmVzb3VyY2VzCi0gICAgY2xhc3MgU3R5bGVJbmhlcml0ZWRSZXNvdXJj
ZURhdGEgOiBwdWJsaWMgUmVmQ291bnRlZDxTdHlsZUluaGVyaXRlZFJlc291cmNlRGF0YT4gewot
ICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIFJlZjxTdHlsZUluaGVyaXRlZFJlc291cmNlRGF0
YT4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHlsZUluaGVyaXRlZFJlc291cmNl
RGF0YSk7IH0KLSAgICAgICAgUmVmPFN0eWxlSW5oZXJpdGVkUmVzb3VyY2VEYXRhPiBjb3B5KCkg
Y29uc3Q7Ci0KLSAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFN0eWxlSW5oZXJpdGVkUmVz
b3VyY2VEYXRhJikgY29uc3Q7Ci0gICAgICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTdHlsZUlu
aGVyaXRlZFJlc291cmNlRGF0YSYgb3RoZXIpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAg
IHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKLSAgICAgICAgfQotCi0gICAgICAgIFN0cmluZyBt
YXJrZXJTdGFydDsKLSAgICAgICAgU3RyaW5nIG1hcmtlck1pZDsKLSAgICAgICAgU3RyaW5nIG1h
cmtlckVuZDsKLQotICAgIHByaXZhdGU6Ci0gICAgICAgIFN0eWxlSW5oZXJpdGVkUmVzb3VyY2VE
YXRhKCk7Ci0gICAgICAgIFN0eWxlSW5oZXJpdGVkUmVzb3VyY2VEYXRhKGNvbnN0IFN0eWxlSW5o
ZXJpdGVkUmVzb3VyY2VEYXRhJik7Ci0gICAgfTsKLQotICAgIC8vIFBvc2l0aW9uaW5nIGFuZCBz
aXppbmcgcHJvcGVydGllcy4KLSAgICBjbGFzcyBTdHlsZUxheW91dERhdGEgOiBwdWJsaWMgUmVm
Q291bnRlZDxTdHlsZUxheW91dERhdGE+IHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBS
ZWY8U3R5bGVMYXlvdXREYXRhPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFN0eWxl
TGF5b3V0RGF0YSk7IH0KLSAgICAgICAgUmVmPFN0eWxlTGF5b3V0RGF0YT4gY29weSgpIGNvbnN0
OwotCi0gICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTdHlsZUxheW91dERhdGEmKSBjb25z
dDsKLSAgICAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFN0eWxlTGF5b3V0RGF0YSYgb3RoZXIp
IGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsK
LSAgICAgICAgfQotCi0gICAgICAgIExlbmd0aCBjeDsKLSAgICAgICAgTGVuZ3RoIGN5OwotICAg
ICAgICBMZW5ndGggcjsKLSAgICAgICAgTGVuZ3RoIHJ4OwotICAgICAgICBMZW5ndGggcnk7Ci0g
ICAgICAgIExlbmd0aCB4OwotICAgICAgICBMZW5ndGggeTsKLQotICAgIHByaXZhdGU6ICAgICAg
ICAKLSAgICAgICAgU3R5bGVMYXlvdXREYXRhKCk7Ci0gICAgICAgIFN0eWxlTGF5b3V0RGF0YShj
b25zdCBTdHlsZUxheW91dERhdGEmKTsKLSAgICB9OworICAgIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBTdHlsZVRleHREYXRhJiBvdGhlcikgY29uc3Q7CisgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0
IFN0eWxlVGV4dERhdGEmIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuICEoKnRo
aXMgPT0gb3RoZXIpOworICAgIH0KKworICAgIFNWR0xlbmd0aFZhbHVlIGtlcm5pbmc7CisKK3By
aXZhdGU6CisgICAgU3R5bGVUZXh0RGF0YSgpOworICAgIFN0eWxlVGV4dERhdGEoY29uc3QgU3R5
bGVUZXh0RGF0YSYpOworfTsKKworLy8gTm90ZTogdGhlIHJ1bGUgZm9yIHRoaXMgY2xhc3MgaXMs
ICpubyBpbmhlcml0YW5jZSogb2YgdGhlc2UgcHJvcHMKK2NsYXNzIFN0eWxlTWlzY0RhdGEgOiBw
dWJsaWMgUmVmQ291bnRlZDxTdHlsZU1pc2NEYXRhPiB7CitwdWJsaWM6CisgICAgc3RhdGljIFJl
ZjxTdHlsZU1pc2NEYXRhPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFN0eWxlTWlz
Y0RhdGEpOyB9CisgICAgUmVmPFN0eWxlTWlzY0RhdGE+IGNvcHkoKSBjb25zdDsKKworICAgIGJv
b2wgb3BlcmF0b3I9PShjb25zdCBTdHlsZU1pc2NEYXRhJikgY29uc3Q7CisgICAgYm9vbCBvcGVy
YXRvciE9KGNvbnN0IFN0eWxlTWlzY0RhdGEmIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAg
cmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOworICAgIH0KKworICAgIENvbG9yIGZsb29kQ29sb3I7
CisgICAgZmxvYXQgZmxvb2RPcGFjaXR5OworICAgIENvbG9yIGxpZ2h0aW5nQ29sb3I7CisKKyAg
ICAvLyBub24taW5oZXJpdGVkIHRleHQgc3R1ZmYgbGl2ZXMgaGVyZSBub3QgaW4gU3R5bGVUZXh0
RGF0YS4KKyAgICBTVkdMZW5ndGhWYWx1ZSBiYXNlbGluZVNoaWZ0VmFsdWU7CisKK3ByaXZhdGU6
CisgICAgU3R5bGVNaXNjRGF0YSgpOworICAgIFN0eWxlTWlzY0RhdGEoY29uc3QgU3R5bGVNaXNj
RGF0YSYpOworfTsKKworY2xhc3MgU3R5bGVTaGFkb3dTVkdEYXRhIDogcHVibGljIFJlZkNvdW50
ZWQ8U3R5bGVTaGFkb3dTVkdEYXRhPiB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxTdHlsZVNo
YWRvd1NWR0RhdGE+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3R5bGVTaGFkb3dT
VkdEYXRhKTsgfQorICAgIFJlZjxTdHlsZVNoYWRvd1NWR0RhdGE+IGNvcHkoKSBjb25zdDsKKwor
ICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTdHlsZVNoYWRvd1NWR0RhdGEmKSBjb25zdDsKKyAg
ICBib29sIG9wZXJhdG9yIT0oY29uc3QgU3R5bGVTaGFkb3dTVkdEYXRhJiBvdGhlcikgY29uc3QK
KyAgICB7CisgICAgICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKKyAgICB9CisKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8U2hhZG93RGF0YT4gc2hhZG93OworCitwcml2YXRlOgorICAgIFN0eWxl
U2hhZG93U1ZHRGF0YSgpOworICAgIFN0eWxlU2hhZG93U1ZHRGF0YShjb25zdCBTdHlsZVNoYWRv
d1NWR0RhdGEmKTsKK307CisKKy8vIE5vbi1pbmhlcml0ZWQgcmVzb3VyY2VzCitjbGFzcyBTdHls
ZVJlc291cmNlRGF0YSA6IHB1YmxpYyBSZWZDb3VudGVkPFN0eWxlUmVzb3VyY2VEYXRhPiB7Citw
dWJsaWM6CisgICAgc3RhdGljIFJlZjxTdHlsZVJlc291cmNlRGF0YT4gY3JlYXRlKCkgeyByZXR1
cm4gYWRvcHRSZWYoKm5ldyBTdHlsZVJlc291cmNlRGF0YSk7IH0KKyAgICBSZWY8U3R5bGVSZXNv
dXJjZURhdGE+IGNvcHkoKSBjb25zdDsKKworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTdHls
ZVJlc291cmNlRGF0YSYpIGNvbnN0OworICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTdHlsZVJl
c291cmNlRGF0YSYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gISgqdGhpcyA9
PSBvdGhlcik7CisgICAgfQorCisgICAgU3RyaW5nIGNsaXBwZXI7CisgICAgU3RyaW5nIG1hc2tl
cjsKKworcHJpdmF0ZToKKyAgICBTdHlsZVJlc291cmNlRGF0YSgpOworICAgIFN0eWxlUmVzb3Vy
Y2VEYXRhKGNvbnN0IFN0eWxlUmVzb3VyY2VEYXRhJik7Cit9OworCisvLyBJbmhlcml0ZWQgcmVz
b3VyY2VzCitjbGFzcyBTdHlsZUluaGVyaXRlZFJlc291cmNlRGF0YSA6IHB1YmxpYyBSZWZDb3Vu
dGVkPFN0eWxlSW5oZXJpdGVkUmVzb3VyY2VEYXRhPiB7CitwdWJsaWM6CisgICAgc3RhdGljIFJl
ZjxTdHlsZUluaGVyaXRlZFJlc291cmNlRGF0YT4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYo
Km5ldyBTdHlsZUluaGVyaXRlZFJlc291cmNlRGF0YSk7IH0KKyAgICBSZWY8U3R5bGVJbmhlcml0
ZWRSZXNvdXJjZURhdGE+IGNvcHkoKSBjb25zdDsKKworICAgIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBTdHlsZUluaGVyaXRlZFJlc291cmNlRGF0YSYpIGNvbnN0OworICAgIGJvb2wgb3BlcmF0b3Ih
PShjb25zdCBTdHlsZUluaGVyaXRlZFJlc291cmNlRGF0YSYgb3RoZXIpIGNvbnN0CisgICAgewor
ICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7CisgICAgfQorCisgICAgU3RyaW5nIG1h
cmtlclN0YXJ0OworICAgIFN0cmluZyBtYXJrZXJNaWQ7CisgICAgU3RyaW5nIG1hcmtlckVuZDsK
KworcHJpdmF0ZToKKyAgICBTdHlsZUluaGVyaXRlZFJlc291cmNlRGF0YSgpOworICAgIFN0eWxl
SW5oZXJpdGVkUmVzb3VyY2VEYXRhKGNvbnN0IFN0eWxlSW5oZXJpdGVkUmVzb3VyY2VEYXRhJik7
Cit9OworCisvLyBQb3NpdGlvbmluZyBhbmQgc2l6aW5nIHByb3BlcnRpZXMuCitjbGFzcyBTdHls
ZUxheW91dERhdGEgOiBwdWJsaWMgUmVmQ291bnRlZDxTdHlsZUxheW91dERhdGE+IHsKK3B1Ymxp
YzoKKyAgICBzdGF0aWMgUmVmPFN0eWxlTGF5b3V0RGF0YT4gY3JlYXRlKCkgeyByZXR1cm4gYWRv
cHRSZWYoKm5ldyBTdHlsZUxheW91dERhdGEpOyB9CisgICAgUmVmPFN0eWxlTGF5b3V0RGF0YT4g
Y29weSgpIGNvbnN0OworCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFN0eWxlTGF5b3V0RGF0
YSYpIGNvbnN0OworICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTdHlsZUxheW91dERhdGEmIG90
aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOworICAg
IH0KKworICAgIExlbmd0aCBjeDsKKyAgICBMZW5ndGggY3k7CisgICAgTGVuZ3RoIHI7CisgICAg
TGVuZ3RoIHJ4OworICAgIExlbmd0aCByeTsKKyAgICBMZW5ndGggeDsKKyAgICBMZW5ndGggeTsK
KworcHJpdmF0ZToKKyAgICBTdHlsZUxheW91dERhdGEoKTsKKyAgICBTdHlsZUxheW91dERhdGEo
Y29uc3QgU3R5bGVMYXlvdXREYXRhJik7Cit9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ltYWdlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ltYWdlLmNw
cAkocmV2aXNpb24gMjMyMjI4KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdJbWFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1NSw3ICsxNTUsNyBAQCB2b2lkIFJl
bmRlclNWR0ltYWdlOjpwYWludChQYWludEluZm8mIHBhCiAgICAgICAgIFNWR1JlbmRlcmluZ0Nv
bnRleHQgcmVuZGVyaW5nQ29udGV4dCgqdGhpcywgY2hpbGRQYWludEluZm8pOwogCiAgICAgICAg
IGlmIChyZW5kZXJpbmdDb250ZXh0LmlzUmVuZGVyaW5nUHJlcGFyZWQoKSkgewotICAgICAgICAg
ICAgaWYgKHN0eWxlKCkuc3ZnU3R5bGUoKS5idWZmZXJlZFJlbmRlcmluZygpID09IEJSX1NUQVRJ
QyAmJiByZW5kZXJpbmdDb250ZXh0LmJ1ZmZlckZvcmVncm91bmQobV9idWZmZXJlZEZvcmVncm91
bmQpKQorICAgICAgICAgICAgaWYgKHN0eWxlKCkuc3ZnU3R5bGUoKS5idWZmZXJlZFJlbmRlcmlu
ZygpID09IEJ1ZmZlcmVkUmVuZGVyaW5nOjpTdGF0aWMgJiYgcmVuZGVyaW5nQ29udGV4dC5idWZm
ZXJGb3JlZ3JvdW5kKG1fYnVmZmVyZWRGb3JlZ3JvdW5kKSkKICAgICAgICAgICAgICAgICByZXR1
cm47CiAKICAgICAgICAgICAgIHBhaW50Rm9yZWdyb3VuZChjaGlsZFBhaW50SW5mbyk7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1JlY3QuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVjdC5jcHAJKHJl
dmlzaW9uIDIzMjIyOCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
UmVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkzLDcgKzkzLDcgQEAgdm9pZCBSZW5kZXJTVkdS
ZWN0Ojp1cGRhdGVTaGFwZUZyb21FbGVtZQogCiAjaWYgVVNFKENHKQogICAgIC8vIENvcmVHcmFw
aGljcyBjYW4gaW5mbGF0ZSB0aGUgc3Ryb2tlIGJ5IDFweCB3aGVuIGRyYXdpbmcgYSByZWN0YW5n
bGUgd2l0aCBhbnRpYWxpYXNpbmcgZGlzYWJsZWQgYXQgbm9uLWludGVnZXIgY29vcmRpbmF0ZXMs
IHdlIG5lZWQgdG8gY29tcGVuc2F0ZS4KLSAgICBpZiAoc3R5bGUoKS5zdmdTdHlsZSgpLnNoYXBl
UmVuZGVyaW5nKCkgPT0gU1JfQ1JJU1BFREdFUykKKyAgICBpZiAoc3R5bGUoKS5zdmdTdHlsZSgp
LnNoYXBlUmVuZGVyaW5nKCkgPT0gU2hhcGVSZW5kZXJpbmc6OkNyaXNwRWRnZXMpCiAgICAgICAg
IG1fc3Ryb2tlQm91bmRpbmdCb3guaW5mbGF0ZSgxKTsKICNlbmRpZgogfQpJbmRleDogU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZS5jcHAJKHJl
dmlzaW9uIDIzMjIyOCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
UmVzb3VyY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MSwxNSArNzEsMTUgQEAgc3RhdGljIGlu
bGluZSBSZW5kZXJTVkdSZXNvdXJjZSogcmVxdWVzdAogCiAgICAgYm9vbCBhcHBseVRvRmlsbCA9
IG1vZGUgPT0gUmVuZGVyU1ZHUmVzb3VyY2VNb2RlOjpBcHBseVRvRmlsbDsKICAgICBTVkdQYWlu
dFR5cGUgcGFpbnRUeXBlID0gYXBwbHlUb0ZpbGwgPyBzdmdTdHlsZS5maWxsUGFpbnRUeXBlKCkg
OiBzdmdTdHlsZS5zdHJva2VQYWludFR5cGUoKTsKLSAgICBpZiAocGFpbnRUeXBlID09IFNWR19Q
QUlOVFRZUEVfTk9ORSkKKyAgICBpZiAocGFpbnRUeXBlID09IFNWR1BhaW50VHlwZTo6Tm9uZSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBDb2xvciBjb2xvcjsKICAgICBzd2l0Y2gg
KHBhaW50VHlwZSkgewotICAgIGNhc2UgU1ZHX1BBSU5UVFlQRV9DVVJSRU5UQ09MT1I6Ci0gICAg
Y2FzZSBTVkdfUEFJTlRUWVBFX1JHQkNPTE9SOgotICAgIGNhc2UgU1ZHX1BBSU5UVFlQRV9VUklf
Q1VSUkVOVENPTE9SOgotICAgIGNhc2UgU1ZHX1BBSU5UVFlQRV9VUklfUkdCQ09MT1I6CisgICAg
Y2FzZSBTVkdQYWludFR5cGU6OkN1cnJlbnRDb2xvcjoKKyAgICBjYXNlIFNWR1BhaW50VHlwZTo6
UkdCQ29sb3I6CisgICAgY2FzZSBTVkdQYWludFR5cGU6OlVSSUN1cnJlbnRDb2xvcjoKKyAgICBj
YXNlIFNWR1BhaW50VHlwZTo6VVJJUkdCQ29sb3I6CiAgICAgICAgIGNvbG9yID0gYXBwbHlUb0Zp
bGwgPyBzdmdTdHlsZS5maWxsUGFpbnRDb2xvcigpIDogc3ZnU3R5bGUuc3Ryb2tlUGFpbnRDb2xv
cigpOwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgpAQCAtOTAsOCArOTAsOCBAQCBzdGF0
aWMgaW5saW5lIFJlbmRlclNWR1Jlc291cmNlKiByZXF1ZXN0CiAgICAgICAgIC8vIEZJWE1FOiBU
aGlzIGNvZGUgZG9lc24ndCBzdXBwb3J0IHRoZSB1cmkgY29tcG9uZW50IG9mIHRoZSB2aXNpdGVk
IGxpbmsgcGFpbnQsIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MDAw
NgogICAgICAgICBTVkdQYWludFR5cGUgdmlzaXRlZFBhaW50VHlwZSA9IGFwcGx5VG9GaWxsID8g
c3ZnU3R5bGUudmlzaXRlZExpbmtGaWxsUGFpbnRUeXBlKCkgOiBzdmdTdHlsZS52aXNpdGVkTGlu
a1N0cm9rZVBhaW50VHlwZSgpOwogCi0gICAgICAgIC8vIEZvciBTVkdfUEFJTlRUWVBFX0NVUlJF
TlRDT0xPUiwgJ2NvbG9yJyBhbHJlYWR5IGNvbnRhaW5zIHRoZSAndmlzaXRlZENvbG9yJy4KLSAg
ICAgICAgaWYgKHZpc2l0ZWRQYWludFR5cGUgPCBTVkdfUEFJTlRUWVBFX1VSSV9OT05FICYmIHZp
c2l0ZWRQYWludFR5cGUgIT0gU1ZHX1BBSU5UVFlQRV9DVVJSRU5UQ09MT1IpIHsKKyAgICAgICAg
Ly8gRm9yIFNWR1BhaW50VHlwZTo6Q3VycmVudENvbG9yLCAnY29sb3InIGFscmVhZHkgY29udGFp
bnMgdGhlICd2aXNpdGVkQ29sb3InLgorICAgICAgICBpZiAodmlzaXRlZFBhaW50VHlwZSA8IFNW
R1BhaW50VHlwZTo6VVJJTm9uZSAmJiB2aXNpdGVkUGFpbnRUeXBlICE9IFNWR1BhaW50VHlwZTo6
Q3VycmVudENvbG9yKSB7CiAgICAgICAgICAgICBjb25zdCBDb2xvciYgdmlzaXRlZENvbG9yID0g
YXBwbHlUb0ZpbGwgPyBzdmdTdHlsZS52aXNpdGVkTGlua0ZpbGxQYWludENvbG9yKCkgOiBzdmdT
dHlsZS52aXNpdGVkTGlua1N0cm9rZVBhaW50Q29sb3IoKTsKICAgICAgICAgICAgIGlmICh2aXNp
dGVkQ29sb3IuaXNWYWxpZCgpKQogICAgICAgICAgICAgICAgIGNvbG9yID0gdmlzaXRlZENvbG9y
LmNvbG9yV2l0aEFscGhhKGNvbG9yLmFscGhhQXNGbG9hdCgpKTsKQEAgLTEwMCw3ICsxMDAsNyBA
QCBzdGF0aWMgaW5saW5lIFJlbmRlclNWR1Jlc291cmNlKiByZXF1ZXN0CiAKICAgICAvLyBJZiB0
aGUgcHJpbWFyeSByZXNvdXJjZSBpcyBqdXN0IGEgY29sb3IsIHJldHVybiBpbW1lZGlhdGVseS4K
ICAgICBSZW5kZXJTVkdSZXNvdXJjZVNvbGlkQ29sb3IqIGNvbG9yUmVzb3VyY2UgPSBSZW5kZXJT
VkdSZXNvdXJjZTo6c2hhcmVkU29saWRQYWludGluZ1Jlc291cmNlKCk7Ci0gICAgaWYgKHBhaW50
VHlwZSA8IFNWR19QQUlOVFRZUEVfVVJJX05PTkUpIHsKKyAgICBpZiAocGFpbnRUeXBlIDwgU1ZH
UGFpbnRUeXBlOjpVUklOb25lKSB7CiAgICAgICAgIGlmICghaW5oZXJpdENvbG9yRnJvbVBhcmVu
dFN0eWxlSWZOZWVkZWQocmVuZGVyZXIsIGFwcGx5VG9GaWxsLCBjb2xvcikpCiAgICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKIApAQCAtMTExLDcgKzExMSw3IEBAIHN0YXRpYyBpbmxpbmUgUmVu
ZGVyU1ZHUmVzb3VyY2UqIHJlcXVlc3QKICAgICAvLyBJZiBubyByZXNvdXJjZXMgYXJlIGFzc29j
aWF0ZWQgd2l0aCB0aGUgZ2l2ZW4gcmVuZGVyZXIsIHJldHVybiB0aGUgY29sb3IgcmVzb3VyY2Uu
CiAgICAgYXV0byogcmVzb3VyY2VzID0gU1ZHUmVzb3VyY2VzQ2FjaGU6OmNhY2hlZFJlc291cmNl
c0ZvclJlbmRlcmVyKHJlbmRlcmVyKTsKICAgICBpZiAoIXJlc291cmNlcykgewotICAgICAgICBp
ZiAocGFpbnRUeXBlID09IFNWR19QQUlOVFRZUEVfVVJJX05PTkUgfHwgIWluaGVyaXRDb2xvckZy
b21QYXJlbnRTdHlsZUlmTmVlZGVkKHJlbmRlcmVyLCBhcHBseVRvRmlsbCwgY29sb3IpKQorICAg
ICAgICBpZiAocGFpbnRUeXBlID09IFNWR1BhaW50VHlwZTo6VVJJTm9uZSB8fCAhaW5oZXJpdENv
bG9yRnJvbVBhcmVudFN0eWxlSWZOZWVkZWQocmVuZGVyZXIsIGFwcGx5VG9GaWxsLCBjb2xvcikp
CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgICAgICBjb2xvclJlc291cmNlLT5z
ZXRDb2xvcihjb2xvcik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR1Jlc291cmNlQ2xpcHBlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuY3BwCShyZXZpc2lvbiAyMzIyMjgp
CisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ2xpcHBl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc4LDcgKzc4LDcgQEAgYm9vbCBSZW5kZXJTVkdSZXNv
dXJjZUNsaXBwZXI6OnBhdGhPbmx5QwogICAgIC8vIElmIHRoZSBjdXJyZW50IGNsaXAtcGF0aCBn
ZXRzIGNsaXBwZWQgaXRzZWxmLCB3ZSBoYXZlIHRvIGZhbGxiYWNrIHRvIG1hc2tpbmcuCiAgICAg
aWYgKCFzdHlsZSgpLnN2Z1N0eWxlKCkuY2xpcHBlclJlc291cmNlKCkuaXNFbXB0eSgpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgV2luZFJ1bGUgY2xpcFJ1bGUgPSBSVUxFX05PTlpFUk87
CisgICAgV2luZFJ1bGUgY2xpcFJ1bGUgPSBXaW5kUnVsZTo6Tm9uWmVybzsKICAgICBQYXRoIGNs
aXBQYXRoID0gUGF0aCgpOwogCiAgICAgLy8gSWYgY2xpcC1wYXRoIG9ubHkgY29udGFpbnMgb25l
IHZpc2libGUgc2hhcGUgb3IgcGF0aCwgd2UgY2FuIHVzZSBwYXRoLWJhc2VkIGNsaXBwaW5nLiBJ
bnZpc2libGUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVz
b3VyY2VGaWx0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCShyZXZpc2lvbiAyMzIyMjgpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTAyLDcgKzEwMiw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxTVkdGaWx0ZXJC
dWlsZGVyPiBSZW5kZXIKICAgICAgICAgZWxlbWVudC5zZXRTdGFuZGFyZEF0dHJpYnV0ZXMoZWZm
ZWN0LmdldCgpKTsKICAgICAgICAgZWZmZWN0LT5zZXRFZmZlY3RCb3VuZGFyaWVzKFNWR0xlbmd0
aENvbnRleHQ6OnJlc29sdmVSZWN0YW5nbGU8U1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRy
aWJ1dGVzPigmZWxlbWVudCwgZmlsdGVyRWxlbWVudCgpLnByaW1pdGl2ZVVuaXRzKCksIHRhcmdl
dEJvdW5kaW5nQm94KSk7CiAgICAgICAgIGlmIChlbGVtZW50LnJlbmRlcmVyKCkpCi0gICAgICAg
ICAgICBlZmZlY3QtPnNldE9wZXJhdGluZ0NvbG9yU3BhY2UoZWxlbWVudC5yZW5kZXJlcigpLT5z
dHlsZSgpLnN2Z1N0eWxlKCkuY29sb3JJbnRlcnBvbGF0aW9uRmlsdGVycygpID09IENJX0xJTkVB
UlJHQiA/IENvbG9yU3BhY2VMaW5lYXJSR0IgOiBDb2xvclNwYWNlU1JHQik7CisgICAgICAgICAg
ICBlZmZlY3QtPnNldE9wZXJhdGluZ0NvbG9yU3BhY2UoZWxlbWVudC5yZW5kZXJlcigpLT5zdHls
ZSgpLnN2Z1N0eWxlKCkuY29sb3JJbnRlcnBvbGF0aW9uRmlsdGVycygpID09IENvbG9ySW50ZXJw
b2xhdGlvbjo6TGluZWFyUkdCID8gQ29sb3JTcGFjZUxpbmVhclJHQiA6IENvbG9yU3BhY2VTUkdC
KTsKICAgICAgICAgYnVpbGRlci0+YWRkKGVsZW1lbnQucmVzdWx0KCksIFdURk1vdmUoZWZmZWN0
KSk7CiAgICAgfQogICAgIHJldHVybiBidWlsZGVyOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlR3JhZGllbnQuY3Bw
CShyZXZpc2lvbiAyMzIyMjgpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR1Jlc291cmNlR3JhZGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzcsNyArMTc3LDcg
QEAgYm9vbCBSZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50OjphcHBseVJlcwogICAgICAgICBjb250
ZXh0LT5zZXRGaWxsR3JhZGllbnQoKmdyYWRpZW50RGF0YS0+Z3JhZGllbnQpOwogICAgICAgICBj
b250ZXh0LT5zZXRGaWxsUnVsZShzdmdTdHlsZS5maWxsUnVsZSgpKTsKICAgICB9IGVsc2UgaWYg
KHJlc291cmNlTW9kZS5jb250YWlucyhSZW5kZXJTVkdSZXNvdXJjZU1vZGU6OkFwcGx5VG9TdHJv
a2UpKSB7Ci0gICAgICAgIGlmIChzdmdTdHlsZS52ZWN0b3JFZmZlY3QoKSA9PSBWRV9OT05fU0NB
TElOR19TVFJPS0UpCisgICAgICAgIGlmIChzdmdTdHlsZS52ZWN0b3JFZmZlY3QoKSA9PSBWZWN0
b3JFZmZlY3Q6Ok5vblNjYWxpbmdTdHJva2UpCiAgICAgICAgICAgICBncmFkaWVudERhdGEtPmdy
YWRpZW50LT5zZXRHcmFkaWVudFNwYWNlVHJhbnNmb3JtKHRyYW5zZm9ybU9uTm9uU2NhbGluZ1N0
cm9rZSgmcmVuZGVyZXIsIGdyYWRpZW50RGF0YS0+dXNlcnNwYWNlVHJhbnNmb3JtKSk7CiAgICAg
ICAgIGNvbnRleHQtPnNldEFscGhhKHN2Z1N0eWxlLnN0cm9rZU9wYWNpdHkoKSk7CiAgICAgICAg
IGNvbnRleHQtPnNldFN0cm9rZUdyYWRpZW50KCpncmFkaWVudERhdGEtPmdyYWRpZW50KTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
UmVzb3VyY2VNYXNrZXIuY3BwCShyZXZpc2lvbiAyMzIyMjgpCisrKyBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFza2VyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNjksNyArNjksNyBAQCBib29sIFJlbmRlclNWR1Jlc291cmNlTWFza2VyOjphcHBseVJlc291
CiAKICAgICBpZiAoIW1hc2tlckRhdGEtPm1hc2tJbWFnZSAmJiAhcmVwYWludFJlY3QuaXNFbXB0
eSgpKSB7CiAgICAgICAgIGNvbnN0IFNWR1JlbmRlclN0eWxlJiBzdmdTdHlsZSA9IHN0eWxlKCku
c3ZnU3R5bGUoKTsKLSAgICAgICAgQ29sb3JTcGFjZSBjb2xvclNwYWNlID0gc3ZnU3R5bGUuY29s
b3JJbnRlcnBvbGF0aW9uKCkgPT0gQ0lfTElORUFSUkdCID8gQ29sb3JTcGFjZUxpbmVhclJHQiA6
IENvbG9yU3BhY2VTUkdCOworICAgICAgICBDb2xvclNwYWNlIGNvbG9yU3BhY2UgPSBzdmdTdHls
ZS5jb2xvckludGVycG9sYXRpb24oKSA9PSBDb2xvckludGVycG9sYXRpb246OkxpbmVhclJHQiA/
IENvbG9yU3BhY2VMaW5lYXJSR0IgOiBDb2xvclNwYWNlU1JHQjsKICAgICAgICAgLy8gRklYTUUg
KDE0OTQ3MCk6IFRoaXMgaW1hZ2UgYnVmZmVyIHNob3VsZCBub3QgYmUgdW5jb25kaXRpb25hbGx5
IHVuYWNjZWxlcmF0ZWQuIE1ha2luZyBpdCBtYXRjaCB0aGUgY29udGV4dCBicmVha3MgYWxwaGEg
bWFza2luZywgdGhvdWdoLgogICAgICAgICBtYXNrZXJEYXRhLT5tYXNrSW1hZ2UgPSBTVkdSZW5k
ZXJpbmdDb250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlcihyZXBhaW50UmVjdCwgYWJzb2x1dGVUcmFu
c2Zvcm0sIGNvbG9yU3BhY2UsIFVuYWNjZWxlcmF0ZWQpOwogICAgICAgICBpZiAoIW1hc2tlckRh
dGEtPm1hc2tJbWFnZSkKQEAgLTExOSw3ICsxMTksNyBAQCBib29sIFJlbmRlclNWR1Jlc291cmNl
TWFza2VyOjpkcmF3Q29udGVuCiAjZW5kaWYKIAogICAgIC8vIENyZWF0ZSB0aGUgbHVtaW5hbmNl
IG1hc2suCi0gICAgaWYgKHN0eWxlKCkuc3ZnU3R5bGUoKS5tYXNrVHlwZSgpID09IE1UX0xVTUlO
QU5DRSkKKyAgICBpZiAoc3R5bGUoKS5zdmdTdHlsZSgpLm1hc2tUeXBlKCkgPT0gTWFza1R5cGU6
Okx1bWluYW5jZSkKICAgICAgICAgbWFza2VyRGF0YS0+bWFza0ltYWdlLT5jb252ZXJ0VG9MdW1p
bmFuY2VNYXNrKCk7CiAKICAgICByZXR1cm4gdHJ1ZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5jcHAJ
KHJldmlzaW9uIDIzMjIyOCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc2LDcgKzE3Niw3IEBA
IGJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuOjphcHBseVJlc28KICAgICAgICAgY29udGV4
dC0+c2V0RmlsbFBhdHRlcm4oKnBhdHRlcm5EYXRhLT5wYXR0ZXJuKTsKICAgICAgICAgY29udGV4
dC0+c2V0RmlsbFJ1bGUoc3ZnU3R5bGUuZmlsbFJ1bGUoKSk7CiAgICAgfSBlbHNlIGlmIChyZXNv
dXJjZU1vZGUuY29udGFpbnMoUmVuZGVyU1ZHUmVzb3VyY2VNb2RlOjpBcHBseVRvU3Ryb2tlKSkg
ewotICAgICAgICBpZiAoc3ZnU3R5bGUudmVjdG9yRWZmZWN0KCkgPT0gVkVfTk9OX1NDQUxJTkdf
U1RST0tFKQorICAgICAgICBpZiAoc3ZnU3R5bGUudmVjdG9yRWZmZWN0KCkgPT0gVmVjdG9yRWZm
ZWN0OjpOb25TY2FsaW5nU3Ryb2tlKQogICAgICAgICAgICAgcGF0dGVybkRhdGEtPnBhdHRlcm4t
PnNldFBhdHRlcm5TcGFjZVRyYW5zZm9ybSh0cmFuc2Zvcm1Pbk5vblNjYWxpbmdTdHJva2UoJnJl
bmRlcmVyLCBwYXR0ZXJuRGF0YS0+dHJhbnNmb3JtKSk7CiAgICAgICAgIGNvbnRleHQtPnNldEFs
cGhhKHN2Z1N0eWxlLnN0cm9rZU9wYWNpdHkoKSk7CiAgICAgICAgIGNvbnRleHQtPnNldFN0cm9r
ZVBhdHRlcm4oKnBhdHRlcm5EYXRhLT5wYXR0ZXJuKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUuY3BwCShyZXZpc2lvbiAyMzIyMjgpCisr
KyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzEyLDcgKzMxMiw3IEBAIHZvaWQgUmVuZGVyU1ZHU2hhcGU6OnBhaW50KFBh
aW50SW5mbyYgcGEKIAogICAgICAgICBpZiAocmVuZGVyaW5nQ29udGV4dC5pc1JlbmRlcmluZ1By
ZXBhcmVkKCkpIHsKICAgICAgICAgICAgIGNvbnN0IFNWR1JlbmRlclN0eWxlJiBzdmdTdHlsZSA9
IHN0eWxlKCkuc3ZnU3R5bGUoKTsKLSAgICAgICAgICAgIGlmIChzdmdTdHlsZS5zaGFwZVJlbmRl
cmluZygpID09IFNSX0NSSVNQRURHRVMpCisgICAgICAgICAgICBpZiAoc3ZnU3R5bGUuc2hhcGVS
ZW5kZXJpbmcoKSA9PSBTaGFwZVJlbmRlcmluZzo6Q3Jpc3BFZGdlcykKICAgICAgICAgICAgICAg
ICBjaGlsZFBhaW50SW5mby5jb250ZXh0KCkuc2V0U2hvdWxkQW50aWFsaWFzKGZhbHNlKTsKIAog
ICAgICAgICAgICAgZmlsbFN0cm9rZU1hcmtlcnMoY2hpbGRQYWludEluZm8pOwpJbmRleDogU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUuaAkocmV2aXNpb24g
MjMyMjI4KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC04Niw3ICs4Niw3IEBAIHByb3RlY3RlZDoKICAgICBmbG9hdCBz
dHJva2VXaWR0aCgpIGNvbnN0OwogICAgIGJvb2wgaGFzU21vb3RoU3Ryb2tlKCkgY29uc3Q7CiAK
LSAgICBib29sIGhhc05vblNjYWxpbmdTdHJva2UoKSBjb25zdCB7IHJldHVybiBzdHlsZSgpLnN2
Z1N0eWxlKCkudmVjdG9yRWZmZWN0KCkgPT0gVkVfTk9OX1NDQUxJTkdfU1RST0tFOyB9CisgICAg
Ym9vbCBoYXNOb25TY2FsaW5nU3Ryb2tlKCkgY29uc3QgeyByZXR1cm4gc3R5bGUoKS5zdmdTdHls
ZSgpLnZlY3RvckVmZmVjdCgpID09IFZlY3RvckVmZmVjdDo6Tm9uU2NhbGluZ1N0cm9rZTsgfQog
ICAgIEFmZmluZVRyYW5zZm9ybSBub25TY2FsaW5nU3Ryb2tlVHJhbnNmb3JtKCkgY29uc3Q7CiAg
ICAgUGF0aCogbm9uU2NhbGluZ1N0cm9rZVBhdGgoY29uc3QgUGF0aCosIGNvbnN0IEFmZmluZVRy
YW5zZm9ybSYpIGNvbnN0OwogCkBAIC05NSw3ICs5NSw3IEBAIHByb3RlY3RlZDoKIAogcHJpdmF0
ZToKICAgICAvLyBIaXQtZGV0ZWN0aW9uIHNlcGFyYXRlZCBmb3IgdGhlIGZpbGwgYW5kIHRoZSBz
dHJva2UKLSAgICBib29sIGZpbGxDb250YWlucyhjb25zdCBGbG9hdFBvaW50JiwgYm9vbCByZXF1
aXJlc0ZpbGwgPSB0cnVlLCBjb25zdCBXaW5kUnVsZSBmaWxsUnVsZSA9IFJVTEVfTk9OWkVSTyk7
CisgICAgYm9vbCBmaWxsQ29udGFpbnMoY29uc3QgRmxvYXRQb2ludCYsIGJvb2wgcmVxdWlyZXNG
aWxsID0gdHJ1ZSwgY29uc3QgV2luZFJ1bGUgZmlsbFJ1bGUgPSBXaW5kUnVsZTo6Tm9uWmVybyk7
CiAgICAgYm9vbCBzdHJva2VDb250YWlucyhjb25zdCBGbG9hdFBvaW50JiwgYm9vbCByZXF1aXJl
c1N0cm9rZSA9IHRydWUpOwogCiAgICAgRmxvYXRSZWN0IHJlcGFpbnRSZWN0SW5Mb2NhbENvb3Jk
aW5hdGVzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9yZXBhaW50Qm91bmRpbmdCb3g7IH0KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyVHJlZUFzVGV4dC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJUcmVl
QXNUZXh0LmNwcAkocmV2aXNpb24gMjMyMjI4KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9TVkdSZW5kZXJUcmVlQXNUZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjExLDEwICsy
MTEsMTAgQEAgc3RhdGljIHZvaWQgd3JpdGVTdHlsZShUZXh0U3RyZWFtJiB0cywgYwogICAgICAg
ICAgICAgd3JpdGVTVkdQYWludGluZ1Jlc291cmNlKHRzLCBmaWxsUGFpbnRpbmdSZXNvdXJjZSk7
CiAKICAgICAgICAgICAgIHdyaXRlSWZOb3REZWZhdWx0KHRzLCAib3BhY2l0eSIsIHN2Z1N0eWxl
LmZpbGxPcGFjaXR5KCksIDEuMGYpOwotICAgICAgICAgICAgd3JpdGVJZk5vdERlZmF1bHQodHMs
ICJmaWxsIHJ1bGUiLCBzdmdTdHlsZS5maWxsUnVsZSgpLCBSVUxFX05PTlpFUk8pOworICAgICAg
ICAgICAgd3JpdGVJZk5vdERlZmF1bHQodHMsICJmaWxsIHJ1bGUiLCBzdmdTdHlsZS5maWxsUnVs
ZSgpLCBXaW5kUnVsZTo6Tm9uWmVybyk7CiAgICAgICAgICAgICB0cyA8PCAifV0iOwogICAgICAg
ICB9Ci0gICAgICAgIHdyaXRlSWZOb3REZWZhdWx0KHRzLCAiY2xpcCBydWxlIiwgc3ZnU3R5bGUu
Y2xpcFJ1bGUoKSwgUlVMRV9OT05aRVJPKTsKKyAgICAgICAgd3JpdGVJZk5vdERlZmF1bHQodHMs
ICJjbGlwIHJ1bGUiLCBzdmdTdHlsZS5jbGlwUnVsZSgpLCBXaW5kUnVsZTo6Tm9uWmVybyk7CiAg
ICAgfQogCiAgICAgd3JpdGVJZk5vdEVtcHR5KHRzLCAic3RhcnQgbWFya2VyIiwgc3ZnU3R5bGUu
bWFya2VyU3RhcnRSZXNvdXJjZSgpKTsKQEAgLTMxOSwxNCArMzE5LDE0IEBAIHN0YXRpYyBpbmxp
bmUgdm9pZCB3cml0ZVNWR0lubGluZVRleHRCb3gKIAogICAgICAgICAvLyBGSVhNRTogUmVtb3Zl
IHRoaXMgaGFjaywgb25jZSB0aGUgbmV3IHRleHQgbGF5b3V0IGVuZ2luZSBpcyBjb21wbGV0bHkg
bGFuZGVkLiBXZSB3YW50IHRvIHByZXNlcnZlIHRoZSBvbGQgbGF5b3V0IHRlc3QgcmVzdWx0cyBm
b3Igbm93LgogICAgICAgICB0cyA8PCAiY2h1bmsgMSAiOwotICAgICAgICBFVGV4dEFuY2hvciBh
bmNob3IgPSBzdmdTdHlsZS50ZXh0QW5jaG9yKCk7CisgICAgICAgIFRleHRBbmNob3IgYW5jaG9y
ID0gc3ZnU3R5bGUudGV4dEFuY2hvcigpOwogICAgICAgICBib29sIGlzVmVydGljYWxUZXh0ID0g
dGV4dEJveC0+cmVuZGVyZXIoKS5zdHlsZSgpLmlzVmVydGljYWxXcml0aW5nTW9kZSgpOwotICAg
ICAgICBpZiAoYW5jaG9yID09IFRBX01JRERMRSkgeworICAgICAgICBpZiAoYW5jaG9yID09IFRl
eHRBbmNob3I6Ok1pZGRsZSkgewogICAgICAgICAgICAgdHMgPDwgIihtaWRkbGUgYW5jaG9yIjsK
ICAgICAgICAgICAgIGlmIChpc1ZlcnRpY2FsVGV4dCkKICAgICAgICAgICAgICAgICB0cyA8PCAi
LCB2ZXJ0aWNhbCI7CiAgICAgICAgICAgICB0cyA8PCAiKSAiOwotICAgICAgICB9IGVsc2UgaWYg
KGFuY2hvciA9PSBUQV9FTkQpIHsKKyAgICAgICAgfSBlbHNlIGlmIChhbmNob3IgPT0gVGV4dEFu
Y2hvcjo6RW5kKSB7CiAgICAgICAgICAgICB0cyA8PCAiKGVuZCBhbmNob3IiOwogICAgICAgICAg
ICAgaWYgKGlzVmVydGljYWxUZXh0KQogICAgICAgICAgICAgICAgIHRzIDw8ICIsIHZlcnRpY2Fs
IjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVzb3VyY2VzLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Jlc291cmNlcy5j
cHAJKHJldmlzaW9uIDIzMjIyOCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZH
UmVzb3VyY2VzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTcwLDcgKzE3MCw3IEBAIHN0YXRpYyBp
bmxpbmUgYm9vbCBpc0NoYWluYWJsZVJlc291cmNlKGMKIAogc3RhdGljIGlubGluZSBSZW5kZXJT
VkdSZXNvdXJjZUNvbnRhaW5lciogcGFpbnRpbmdSZXNvdXJjZUZyb21TVkdQYWludChEb2N1bWVu
dCYgZG9jdW1lbnQsIGNvbnN0IFNWR1BhaW50VHlwZSYgcGFpbnRUeXBlLCBjb25zdCBTdHJpbmcm
IHBhaW50VXJpLCBBdG9taWNTdHJpbmcmIGlkLCBib29sJiBoYXNQZW5kaW5nUmVzb3VyY2UpCiB7
Ci0gICAgaWYgKHBhaW50VHlwZSAhPSBTVkdfUEFJTlRUWVBFX1VSSSAmJiBwYWludFR5cGUgIT0g
U1ZHX1BBSU5UVFlQRV9VUklfUkdCQ09MT1IgJiYgcGFpbnRUeXBlICE9IFNWR19QQUlOVFRZUEVf
VVJJX0NVUlJFTlRDT0xPUikKKyAgICBpZiAocGFpbnRUeXBlICE9IFNWR1BhaW50VHlwZTo6VVJJ
ICYmIHBhaW50VHlwZSAhPSBTVkdQYWludFR5cGU6OlVSSVJHQkNvbG9yICYmIHBhaW50VHlwZSAh
PSBTVkdQYWludFR5cGU6OlVSSUN1cnJlbnRDb2xvcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKICAgICBpZCA9IFNWR1VSSVJlZmVyZW5jZTo6ZnJhZ21lbnRJZGVudGlmaWVyRnJvbUlSSVN0
cmluZyhwYWludFVyaSwgZG9jdW1lbnQpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9TVkdUZXh0Q2h1bmsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvU1ZHVGV4dENodW5rLmNwcAkocmV2aXNpb24gMjMyMjI4KQorKysgU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0Q2h1bmsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
MywxMiArNDMsMTIgQEAgU1ZHVGV4dENodW5rOjpTVkdUZXh0Q2h1bmsoY29uc3QgVmVjdG9yPAog
ICAgICAgICBtX2NodW5rU3R5bGUgfD0gU1ZHVGV4dENodW5rOjpWZXJ0aWNhbFRleHQ7CiAgICAg
CiAgICAgc3dpdGNoIChzdmdTdHlsZS50ZXh0QW5jaG9yKCkpIHsKLSAgICBjYXNlIFRBX1NUQVJU
OgorICAgIGNhc2UgVGV4dEFuY2hvcjo6U3RhcnQ6CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
VEFfTUlERExFOgorICAgIGNhc2UgVGV4dEFuY2hvcjo6TWlkZGxlOgogICAgICAgICBtX2NodW5r
U3R5bGUgfD0gTWlkZGxlQW5jaG9yOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFRBX0VORDoK
KyAgICBjYXNlIFRleHRBbmNob3I6OkVuZDoKICAgICAgICAgbV9jaHVua1N0eWxlIHw9IEVuZEFu
Y2hvcjsKICAgICAgICAgYnJlYWs7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9TVkdUZXh0TGF5b3V0RW5naW5lQmFzZWxpbmUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dExheW91dEVuZ2luZUJhc2VsaW5lLmNw
cAkocmV2aXNpb24gMjMyMjI4KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdU
ZXh0TGF5b3V0RW5naW5lQmFzZWxpbmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3
IEBAIFNWR1RleHRMYXlvdXRFbmdpbmVCYXNlbGluZTo6U1ZHVGV4dExheW8KIAogZmxvYXQgU1ZH
VGV4dExheW91dEVuZ2luZUJhc2VsaW5lOjpjYWxjdWxhdGVCYXNlbGluZVNoaWZ0KGNvbnN0IFNW
R1JlbmRlclN0eWxlJiBzdHlsZSwgU1ZHRWxlbWVudCogY29udGV4dCkgY29uc3QKIHsKLSAgICBp
ZiAoc3R5bGUuYmFzZWxpbmVTaGlmdCgpID09IEJTX0xFTkdUSCkgeworICAgIGlmIChzdHlsZS5i
YXNlbGluZVNoaWZ0KCkgPT0gQmFzZWxpbmVTaGlmdDo6TGVuZ3RoKSB7CiAgICAgICAgIGF1dG8g
YmFzZWxpbmVTaGlmdFZhbHVlTGVuZ3RoID0gc3R5bGUuYmFzZWxpbmVTaGlmdFZhbHVlKCk7CiAg
ICAgICAgIGlmIChiYXNlbGluZVNoaWZ0VmFsdWVMZW5ndGgudW5pdFR5cGUoKSA9PSBMZW5ndGhU
eXBlUGVyY2VudGFnZSkKICAgICAgICAgICAgIHJldHVybiBiYXNlbGluZVNoaWZ0VmFsdWVMZW5n
dGgudmFsdWVBc1BlcmNlbnRhZ2UoKSAqIG1fZm9udC5waXhlbFNpemUoKTsKQEAgLTQ1LDYxICs0
NSw2MSBAQCBmbG9hdCBTVkdUZXh0TGF5b3V0RW5naW5lQmFzZWxpbmU6OmNhbGN1CiAgICAgfQog
CiAgICAgc3dpdGNoIChzdHlsZS5iYXNlbGluZVNoaWZ0KCkpIHsKLSAgICBjYXNlIEJTX0JBU0VM
SU5FOgorICAgIGNhc2UgQmFzZWxpbmVTaGlmdDo6QmFzZWxpbmU6CiAgICAgICAgIHJldHVybiAw
OwotICAgIGNhc2UgQlNfU1VCOgorICAgIGNhc2UgQmFzZWxpbmVTaGlmdDo6U3ViOgogICAgICAg
ICByZXR1cm4gLW1fZm9udC5mb250TWV0cmljcygpLmZsb2F0SGVpZ2h0KCkgLyAyOwotICAgIGNh
c2UgQlNfU1VQRVI6CisgICAgY2FzZSBCYXNlbGluZVNoaWZ0OjpTdXBlcjoKICAgICAgICAgcmV0
dXJuIG1fZm9udC5mb250TWV0cmljcygpLmZsb2F0SGVpZ2h0KCkgLyAyOwotICAgIGNhc2UgQlNf
TEVOR1RIOgorICAgIGNhc2UgQmFzZWxpbmVTaGlmdDo6TGVuZ3RoOgogICAgICAgICBicmVhazsK
ICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIDA7CiB9CiAKLUVB
bGlnbm1lbnRCYXNlbGluZSBTVkdUZXh0TGF5b3V0RW5naW5lQmFzZWxpbmU6OmRvbWluYW50QmFz
ZWxpbmVUb0FsaWdubWVudEJhc2VsaW5lKGJvb2wgaXNWZXJ0aWNhbFRleHQsIGNvbnN0IFJlbmRl
ck9iamVjdCogdGV4dFJlbmRlcmVyKSBjb25zdAorQWxpZ25tZW50QmFzZWxpbmUgU1ZHVGV4dExh
eW91dEVuZ2luZUJhc2VsaW5lOjpkb21pbmFudEJhc2VsaW5lVG9BbGlnbm1lbnRCYXNlbGluZShi
b29sIGlzVmVydGljYWxUZXh0LCBjb25zdCBSZW5kZXJPYmplY3QqIHRleHRSZW5kZXJlcikgY29u
c3QKIHsKICAgICBBU1NFUlQodGV4dFJlbmRlcmVyKTsKICAgICBBU1NFUlQodGV4dFJlbmRlcmVy
LT5wYXJlbnQoKSk7CiAKICAgICBjb25zdCBTVkdSZW5kZXJTdHlsZSYgc3ZnU3R5bGUgPSB0ZXh0
UmVuZGVyZXItPnN0eWxlKCkuc3ZnU3R5bGUoKTsKIAotICAgIEVEb21pbmFudEJhc2VsaW5lIGJh
c2VsaW5lID0gc3ZnU3R5bGUuZG9taW5hbnRCYXNlbGluZSgpOwotICAgIGlmIChiYXNlbGluZSA9
PSBEQl9BVVRPKSB7CisgICAgRG9taW5hbnRCYXNlbGluZSBiYXNlbGluZSA9IHN2Z1N0eWxlLmRv
bWluYW50QmFzZWxpbmUoKTsKKyAgICBpZiAoYmFzZWxpbmUgPT0gRG9taW5hbnRCYXNlbGluZTo6
QXV0bykgewogICAgICAgICBpZiAoaXNWZXJ0aWNhbFRleHQpCi0gICAgICAgICAgICBiYXNlbGlu
ZSA9IERCX0NFTlRSQUw7CisgICAgICAgICAgICBiYXNlbGluZSA9IERvbWluYW50QmFzZWxpbmU6
OkNlbnRyYWw7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGJhc2VsaW5lID0gREJfQUxQSEFC
RVRJQzsKKyAgICAgICAgICAgIGJhc2VsaW5lID0gRG9taW5hbnRCYXNlbGluZTo6QWxwaGFiZXRp
YzsKICAgICB9CiAKICAgICBzd2l0Y2ggKGJhc2VsaW5lKSB7Ci0gICAgY2FzZSBEQl9VU0VfU0NS
SVBUOgorICAgIGNhc2UgRG9taW5hbnRCYXNlbGluZTo6VXNlU2NyaXB0OgogICAgICAgICAvLyBG
SVhNRTogVGhlIGRvbWluYW50LWJhc2VsaW5lIGFuZCB0aGUgYmFzZWxpbmUtdGFibGUgY29tcG9u
ZW50cyBhcmUgc2V0IGJ5IGRldGVybWluaW5nIHRoZSBwcmVkb21pbmFudCBzY3JpcHQgb2YgdGhl
IGNoYXJhY3RlciBkYXRhIGNvbnRlbnQuCi0gICAgICAgIHJldHVybiBBQl9BTFBIQUJFVElDOwot
ICAgIGNhc2UgREJfTk9fQ0hBTkdFOgorICAgICAgICByZXR1cm4gQWxpZ25tZW50QmFzZWxpbmU6
OkFscGhhYmV0aWM7CisgICAgY2FzZSBEb21pbmFudEJhc2VsaW5lOjpOb0NoYW5nZToKICAgICAg
ICAgcmV0dXJuIGRvbWluYW50QmFzZWxpbmVUb0FsaWdubWVudEJhc2VsaW5lKGlzVmVydGljYWxU
ZXh0LCB0ZXh0UmVuZGVyZXItPnBhcmVudCgpKTsKLSAgICBjYXNlIERCX1JFU0VUX1NJWkU6Cisg
ICAgY2FzZSBEb21pbmFudEJhc2VsaW5lOjpSZXNldFNpemU6CiAgICAgICAgIHJldHVybiBkb21p
bmFudEJhc2VsaW5lVG9BbGlnbm1lbnRCYXNlbGluZShpc1ZlcnRpY2FsVGV4dCwgdGV4dFJlbmRl
cmVyLT5wYXJlbnQoKSk7Ci0gICAgY2FzZSBEQl9JREVPR1JBUEhJQzoKLSAgICAgICAgcmV0dXJu
IEFCX0lERU9HUkFQSElDOwotICAgIGNhc2UgREJfQUxQSEFCRVRJQzoKLSAgICAgICAgcmV0dXJu
IEFCX0FMUEhBQkVUSUM7Ci0gICAgY2FzZSBEQl9IQU5HSU5HOgotICAgICAgICByZXR1cm4gQUJf
SEFOR0lORzsKLSAgICBjYXNlIERCX01BVEhFTUFUSUNBTDoKLSAgICAgICAgcmV0dXJuIEFCX01B
VEhFTUFUSUNBTDsKLSAgICBjYXNlIERCX0NFTlRSQUw6Ci0gICAgICAgIHJldHVybiBBQl9DRU5U
UkFMOwotICAgIGNhc2UgREJfTUlERExFOgotICAgICAgICByZXR1cm4gQUJfTUlERExFOwotICAg
IGNhc2UgREJfVEVYVF9BRlRFUl9FREdFOgotICAgICAgICByZXR1cm4gQUJfVEVYVF9BRlRFUl9F
REdFOwotICAgIGNhc2UgREJfVEVYVF9CRUZPUkVfRURHRToKLSAgICAgICAgcmV0dXJuIEFCX1RF
WFRfQkVGT1JFX0VER0U7CisgICAgY2FzZSBEb21pbmFudEJhc2VsaW5lOjpJZGVvZ3JhcGhpYzoK
KyAgICAgICAgcmV0dXJuIEFsaWdubWVudEJhc2VsaW5lOjpJZGVvZ3JhcGhpYzsKKyAgICBjYXNl
IERvbWluYW50QmFzZWxpbmU6OkFscGhhYmV0aWM6CisgICAgICAgIHJldHVybiBBbGlnbm1lbnRC
YXNlbGluZTo6QWxwaGFiZXRpYzsKKyAgICBjYXNlIERvbWluYW50QmFzZWxpbmU6Okhhbmdpbmc6
CisgICAgICAgIHJldHVybiBBbGlnbm1lbnRCYXNlbGluZTo6SGFuZ2luZzsKKyAgICBjYXNlIERv
bWluYW50QmFzZWxpbmU6Ok1hdGhlbWF0aWNhbDoKKyAgICAgICAgcmV0dXJuIEFsaWdubWVudEJh
c2VsaW5lOjpNYXRoZW1hdGljYWw7CisgICAgY2FzZSBEb21pbmFudEJhc2VsaW5lOjpDZW50cmFs
OgorICAgICAgICByZXR1cm4gQWxpZ25tZW50QmFzZWxpbmU6OkNlbnRyYWw7CisgICAgY2FzZSBE
b21pbmFudEJhc2VsaW5lOjpNaWRkbGU6CisgICAgICAgIHJldHVybiBBbGlnbm1lbnRCYXNlbGlu
ZTo6TWlkZGxlOworICAgIGNhc2UgRG9taW5hbnRCYXNlbGluZTo6VGV4dEFmdGVyRWRnZToKKyAg
ICAgICAgcmV0dXJuIEFsaWdubWVudEJhc2VsaW5lOjpUZXh0QWZ0ZXJFZGdlOworICAgIGNhc2Ug
RG9taW5hbnRCYXNlbGluZTo6VGV4dEJlZm9yZUVkZ2U6CisgICAgICAgIHJldHVybiBBbGlnbm1l
bnRCYXNlbGluZTo6VGV4dEJlZm9yZUVkZ2U7CiAgICAgZGVmYXVsdDoKICAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiBBQl9BVVRPOworICAgICAgICByZXR1cm4g
QWxpZ25tZW50QmFzZWxpbmU6OkF1dG87CiAgICAgfQogfQogCkBAIC0xMDgsMzYgKzEwOCwzNyBA
QCBmbG9hdCBTVkdUZXh0TGF5b3V0RW5naW5lQmFzZWxpbmU6OmNhbGN1CiAgICAgY29uc3QgUmVu
ZGVyT2JqZWN0KiB0ZXh0UmVuZGVyZXJQYXJlbnQgPSB0ZXh0UmVuZGVyZXIucGFyZW50KCk7CiAg
ICAgQVNTRVJUKHRleHRSZW5kZXJlclBhcmVudCk7CiAKLSAgICBFQWxpZ25tZW50QmFzZWxpbmUg
YmFzZWxpbmUgPSB0ZXh0UmVuZGVyZXIuc3R5bGUoKS5zdmdTdHlsZSgpLmFsaWdubWVudEJhc2Vs
aW5lKCk7Ci0gICAgaWYgKGJhc2VsaW5lID09IEFCX0FVVE8pIHsKKyAgICBBbGlnbm1lbnRCYXNl
bGluZSBiYXNlbGluZSA9IHRleHRSZW5kZXJlci5zdHlsZSgpLnN2Z1N0eWxlKCkuYWxpZ25tZW50
QmFzZWxpbmUoKTsKKyAgICBpZiAoYmFzZWxpbmUgPT0gQWxpZ25tZW50QmFzZWxpbmU6OkF1dG8p
IHsKICAgICAgICAgYmFzZWxpbmUgPSBkb21pbmFudEJhc2VsaW5lVG9BbGlnbm1lbnRCYXNlbGlu
ZShpc1ZlcnRpY2FsVGV4dCwgdGV4dFJlbmRlcmVyUGFyZW50KTsKLSAgICAgICAgQVNTRVJUKGJh
c2VsaW5lICE9IEFCX0FVVE8pOworICAgICAgICBBU1NFUlQoYmFzZWxpbmUgIT0gQWxpZ25tZW50
QmFzZWxpbmU6OkF1dG8pOwogICAgIH0KIAogICAgIGNvbnN0IEZvbnRNZXRyaWNzJiBmb250TWV0
cmljcyA9IG1fZm9udC5mb250TWV0cmljcygpOwogCiAgICAgLy8gTm90ZTogaHR0cDovL3dpa2ku
YXBhY2hlLm9yZy94bWxncmFwaGljcy1mb3AvTGluZUxheW91dC9BbGlnbm1lbnRIYW5kbGluZwog
ICAgIHN3aXRjaCAoYmFzZWxpbmUpIHsKLSAgICBjYXNlIEFCX0JBU0VMSU5FOgotICAgICAgICBy
ZXR1cm4gZG9taW5hbnRCYXNlbGluZVRvQWxpZ25tZW50QmFzZWxpbmUoaXNWZXJ0aWNhbFRleHQs
IHRleHRSZW5kZXJlclBhcmVudCk7Ci0gICAgY2FzZSBBQl9CRUZPUkVfRURHRToKLSAgICBjYXNl
IEFCX1RFWFRfQkVGT1JFX0VER0U6CisgICAgY2FzZSBBbGlnbm1lbnRCYXNlbGluZTo6QmFzZWxp
bmU6CisgICAgICAgIC8vIEZJWE1FOiBUaGlzIHNlZW1zIHdyb25nLiBXaHkgYXJlIHdlIHJldHVy
bmluZyBhbiBlbnVtIHZhbHVlIGNvbnZlcnRlZCB0byBhIGZsb2F0PworICAgICAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8ZmxvYXQ+KGRvbWluYW50QmFzZWxpbmVUb0FsaWdubWVudEJhc2VsaW5lKGlz
VmVydGljYWxUZXh0LCB0ZXh0UmVuZGVyZXJQYXJlbnQpKTsKKyAgICBjYXNlIEFsaWdubWVudEJh
c2VsaW5lOjpCZWZvcmVFZGdlOgorICAgIGNhc2UgQWxpZ25tZW50QmFzZWxpbmU6OlRleHRCZWZv
cmVFZGdlOgogICAgICAgICByZXR1cm4gZm9udE1ldHJpY3MuZmxvYXRBc2NlbnQoKTsKLSAgICBj
YXNlIEFCX01JRERMRToKKyAgICBjYXNlIEFsaWdubWVudEJhc2VsaW5lOjpNaWRkbGU6CiAgICAg
ICAgIHJldHVybiBmb250TWV0cmljcy54SGVpZ2h0KCkgLyAyOwotICAgIGNhc2UgQUJfQ0VOVFJB
TDoKKyAgICBjYXNlIEFsaWdubWVudEJhc2VsaW5lOjpDZW50cmFsOgogICAgICAgICByZXR1cm4g
KGZvbnRNZXRyaWNzLmZsb2F0QXNjZW50KCkgLSBmb250TWV0cmljcy5mbG9hdERlc2NlbnQoKSkg
LyAyOwotICAgIGNhc2UgQUJfQUZURVJfRURHRToKLSAgICBjYXNlIEFCX1RFWFRfQUZURVJfRURH
RToKLSAgICBjYXNlIEFCX0lERU9HUkFQSElDOgorICAgIGNhc2UgQWxpZ25tZW50QmFzZWxpbmU6
OkFmdGVyRWRnZToKKyAgICBjYXNlIEFsaWdubWVudEJhc2VsaW5lOjpUZXh0QWZ0ZXJFZGdlOgor
ICAgIGNhc2UgQWxpZ25tZW50QmFzZWxpbmU6OklkZW9ncmFwaGljOgogICAgICAgICByZXR1cm4g
Zm9udE1ldHJpY3MuZmxvYXREZXNjZW50KCk7Ci0gICAgY2FzZSBBQl9BTFBIQUJFVElDOgorICAg
IGNhc2UgQWxpZ25tZW50QmFzZWxpbmU6OkFscGhhYmV0aWM6CiAgICAgICAgIHJldHVybiAwOwot
ICAgIGNhc2UgQUJfSEFOR0lORzoKKyAgICBjYXNlIEFsaWdubWVudEJhc2VsaW5lOjpIYW5naW5n
OgogICAgICAgICByZXR1cm4gZm9udE1ldHJpY3MuZmxvYXRBc2NlbnQoKSAqIDggLyAxMC5mOwot
ICAgIGNhc2UgQUJfTUFUSEVNQVRJQ0FMOgorICAgIGNhc2UgQWxpZ25tZW50QmFzZWxpbmU6Ok1h
dGhlbWF0aWNhbDoKICAgICAgICAgcmV0dXJuIGZvbnRNZXRyaWNzLmZsb2F0QXNjZW50KCkgLyAy
OwotICAgIGRlZmF1bHQ6CisgICAgY2FzZSBBbGlnbm1lbnRCYXNlbGluZTo6QXV0bzoKICAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KQEAgLTE0
Niw3ICsxNDcsNyBAQCBmbG9hdCBTVkdUZXh0TGF5b3V0RW5naW5lQmFzZWxpbmU6OmNhbGN1CiBm
bG9hdCBTVkdUZXh0TGF5b3V0RW5naW5lQmFzZWxpbmU6OmNhbGN1bGF0ZUdseXBoT3JpZW50YXRp
b25BbmdsZShib29sIGlzVmVydGljYWxUZXh0LCBjb25zdCBTVkdSZW5kZXJTdHlsZSYgc3R5bGUs
IGNvbnN0IFVDaGFyJiBjaGFyYWN0ZXIpIGNvbnN0CiB7CiAgICAgc3dpdGNoIChpc1ZlcnRpY2Fs
VGV4dCA/IHN0eWxlLmdseXBoT3JpZW50YXRpb25WZXJ0aWNhbCgpIDogc3R5bGUuZ2x5cGhPcmll
bnRhdGlvbkhvcml6b250YWwoKSkgewotICAgIGNhc2UgR09fQVVUTzoKKyAgICBjYXNlIEdseXBo
T3JpZW50YXRpb246OkF1dG86CiAgICAgICAgIC8vIFNwZWM6IEZ1bGx3aWR0aCBpZGVvZ3JhcGhp
YyBhbmQgZnVsbHdpZHRoIExhdGluIHRleHQgd2lsbCBiZSBzZXQgd2l0aCBhIGdseXBoLW9yaWVu
dGF0aW9uIG9mIDAtZGVncmVlcy4KICAgICAgICAgLy8gVGV4dCB3aGljaCBpcyBub3QgZnVsbHdp
ZHRoIHdpbGwgYmUgc2V0IHdpdGggYSBnbHlwaC1vcmllbnRhdGlvbiBvZiA5MC1kZWdyZWVzLgog
ICAgICAgICAvLyBGSVhNRTogVGhlcmUncyBub3QgYW4gYWNjdXJhdGUgd2F5IHRvIHRlbGwgaWYg
dGV4dCBpcyBmdWxsd2lkdGggYnkgbG9va2luZyBhdCBhIHNpbmdsZSBjaGFyYWN0ZXIuCkBAIC0x
NjUsMTMgKzE2NiwxMyBAQCBmbG9hdCBTVkdUZXh0TGF5b3V0RW5naW5lQmFzZWxpbmU6OmNhbGN1
CiAgICAgICAgIH0KICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIGJyZWFr
OwotICAgIGNhc2UgR09fOTBERUc6CisgICAgY2FzZSBHbHlwaE9yaWVudGF0aW9uOjpEZWdyZWVz
OTA6CiAgICAgICAgIHJldHVybiA5MDsKLSAgICBjYXNlIEdPXzE4MERFRzoKKyAgICBjYXNlIEds
eXBoT3JpZW50YXRpb246OkRlZ3JlZXMxODA6CiAgICAgICAgIHJldHVybiAxODA7Ci0gICAgY2Fz
ZSBHT18yNzBERUc6CisgICAgY2FzZSBHbHlwaE9yaWVudGF0aW9uOjpEZWdyZWVzMjcwOgogICAg
ICAgICByZXR1cm4gMjcwOwotICAgIGNhc2UgR09fMERFRzoKKyAgICBjYXNlIEdseXBoT3JpZW50
YXRpb246OkRlZ3JlZXMwOgogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRM
YXlvdXRFbmdpbmVCYXNlbGluZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvU1ZHVGV4dExheW91dEVuZ2luZUJhc2VsaW5lLmgJKHJldmlzaW9uIDIzMjIyOCkK
KysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dExheW91dEVuZ2luZUJhc2Vs
aW5lLmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgogICAgIGZsb2F0
IGNhbGN1bGF0ZUdseXBoQWR2YW5jZUFuZE9yaWVudGF0aW9uKGJvb2wgaXNWZXJ0aWNhbFRleHQs
IFNWR1RleHRNZXRyaWNzJiwgZmxvYXQgYW5nbGUsIGZsb2F0JiB4T3JpZW50YXRpb25TaGlmdCwg
ZmxvYXQmIHlPcmllbnRhdGlvblNoaWZ0KSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICBFQWxpZ25t
ZW50QmFzZWxpbmUgZG9taW5hbnRCYXNlbGluZVRvQWxpZ25tZW50QmFzZWxpbmUoYm9vbCBpc1Zl
cnRpY2FsVGV4dCwgY29uc3QgUmVuZGVyT2JqZWN0KiB0ZXh0UmVuZGVyZXIpIGNvbnN0OworICAg
IEFsaWdubWVudEJhc2VsaW5lIGRvbWluYW50QmFzZWxpbmVUb0FsaWdubWVudEJhc2VsaW5lKGJv
b2wgaXNWZXJ0aWNhbFRleHQsIGNvbnN0IFJlbmRlck9iamVjdCogdGV4dFJlbmRlcmVyKSBjb25z
dDsKIAogICAgIGNvbnN0IEZvbnRDYXNjYWRlJiBtX2ZvbnQ7CiB9OwpJbmRleDogU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDIzMjIyOCkKKysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsMTYgQEAKKzIwMTgtMDUtMjcgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9y
Zz4KKworICAgICAgICBNb2Rlcm5pemUgU1ZHUmVuZGVyU3R5bGVEZWZzLmgKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NjAyNAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2hhcmVkL1JlbW90ZUxheWVy
VHJlZS9SZW1vdGVMYXllclRyZWVQcm9wZXJ0eUFwcGxpZXIubW06CisgICAgICAgIChXZWJLaXQ6
OmFwcGx5UHJvcGVydGllc1RvTGF5ZXIpOgorICAgICAgICAqIFNoYXJlZC9SZW1vdGVMYXllclRy
ZWUvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24ubW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpMYXllclByb3BlcnRpZXM6OkxheWVyUHJvcGVydGllcyk6
CisgICAgICAgIFVwZGF0ZSBmb3IgbmV3IGVudW0gbmFtZXMuCisKIDIwMTgtMDUtMjUgIFRpbW90
aHkgSGF0Y2hlciAgPHRpbW90aHlAYXBwbGUuY29tPgogCiAgICAgICAgIFNldHRpbmcgZHJhd3NC
YWNrZ3JvdW5kIHRvIFlFUyBvbiBhIFdLVmlldyBkb2Vzbid0IHRha2UgZWZmZWN0IGltbWVkaWF0
ZWx5CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5
ZXJUcmVlUHJvcGVydHlBcHBsaWVyLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hh
cmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVQcm9wZXJ0eUFwcGxpZXIubW0JKHJl
dmlzaW9uIDIzMjIyOCkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9S
ZW1vdGVMYXllclRyZWVQcm9wZXJ0eUFwcGxpZXIubW0JKHdvcmtpbmcgY29weSkKQEAgLTIxNCwx
MCArMjE0LDEwIEBAIHN0YXRpYyB2b2lkIGFwcGx5UHJvcGVydGllc1RvTGF5ZXIoQ0FMYXkKICAg
ICAgICAgQVNTRVJUKFtsYXllciBpc0tpbmRPZkNsYXNzOltDQVNoYXBlTGF5ZXIgY2xhc3NdXSk7
CiAgICAgICAgIENBU2hhcGVMYXllciAqc2hhcGVMYXllciA9IChDQVNoYXBlTGF5ZXIgKilsYXll
cjsKICAgICAgICAgc3dpdGNoIChwcm9wZXJ0aWVzLndpbmRSdWxlKSB7Ci0gICAgICAgIGNhc2Ug
UlVMRV9OT05aRVJPOgorICAgICAgICBjYXNlIFdpbmRSdWxlOjpOb25aZXJvOgogICAgICAgICAg
ICAgc2hhcGVMYXllci5maWxsUnVsZSA9IEAibm9uLXplcm8iOwogICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIGNhc2UgUlVMRV9FVkVOT0REOgorICAgICAgICBjYXNlIFdpbmRSdWxlOjpFdmVu
T2RkOgogICAgICAgICAgICAgc2hhcGVMYXllci5maWxsUnVsZSA9IEAiZXZlbi1vZGQiOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL1Jl
bW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlVHJh
bnNhY3Rpb24ubW0JKHJldmlzaW9uIDIzMjIyOCkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1Jl
bW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5tbQkod29ya2luZyBjb3B5
KQpAQCAtOTQsNyArOTQsNyBAQCBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6TGF5ZXJQcm9w
ZXJ0CiAgICAgLCBtaW5pZmljYXRpb25GaWx0ZXIoUGxhdGZvcm1DQUxheWVyOjpGaWx0ZXJUeXBl
OjpMaW5lYXIpCiAgICAgLCBtYWduaWZpY2F0aW9uRmlsdGVyKFBsYXRmb3JtQ0FMYXllcjo6Rmls
dGVyVHlwZTo6TGluZWFyKQogICAgICwgYmxlbmRNb2RlKEJsZW5kTW9kZU5vcm1hbCkKLSAgICAs
IHdpbmRSdWxlKFJVTEVfTk9OWkVSTykKKyAgICAsIHdpbmRSdWxlKFdpbmRSdWxlOjpOb25aZXJv
KQogICAgICwgaGlkZGVuKGZhbHNlKQogICAgICwgYmFja2luZ1N0b3JlQXR0YWNoZWQodHJ1ZSkK
ICAgICAsIGdlb21ldHJ5RmxpcHBlZChmYWxzZSkK
</data>

          </attachment>
      

    </bug>

</bugzilla>