<?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>212567</bug_id>
          
          <creation_ts>2020-05-30 09:24:30 -0700</creation_ts>
          <short_desc>Extended Color: Additional color cleanups</short_desc>
          <delta_ts>2020-05-30 15:47:19 -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>darin</cc>
    
    <cc>dino</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1657624</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-05-30 09:24:30 -0700</bug_when>
    <thetext>Extended Color: Additional color cleanups</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1657640</commentid>
    <comment_count>1</comment_count>
      <attachid>400671</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-05-30 11:27:17 -0700</bug_when>
    <thetext>Created attachment 400671
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1657641</commentid>
    <comment_count>2</comment_count>
      <attachid>400672</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-05-30 11:45:35 -0700</bug_when>
    <thetext>Created attachment 400672
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1657659</commentid>
    <comment_count>3</comment_count>
      <attachid>400676</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-05-30 12:47:04 -0700</bug_when>
    <thetext>Created attachment 400676
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1657660</commentid>
    <comment_count>4</comment_count>
      <attachid>400676</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-05-30 13:24:30 -0700</bug_when>
    <thetext>Comment on attachment 400676
Patch

Please make it build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1657668</commentid>
    <comment_count>5</comment_count>
      <attachid>400679</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-05-30 14:33:25 -0700</bug_when>
    <thetext>Created attachment 400679
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1657670</commentid>
    <comment_count>6</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-05-30 15:25:58 -0700</bug_when>
    <thetext>Committed r262352: &lt;https://trac.webkit.org/changeset/262352&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 400679.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1657671</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-05-30 15:26:15 -0700</bug_when>
    <thetext>&lt;rdar://problem/63795758&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>400671</attachid>
            <date>2020-05-30 11:27:17 -0700</date>
            <delta_ts>2020-05-30 11:45:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-212567-20200530112716.patch</filename>
            <type>text/plain</type>
            <size>38630</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2MjM0OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDkwIEBACisyMDIwLTA1LTMwICBTYW0gV2Vp
bmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBFeHRlbmRlZCBDb2xvcjogQWRkaXRp
b25hbCBjb2xvciBjbGVhbnVwcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjEyNTY3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDb2xvcjo6c2VyaWFsaXplZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb2xvcjo6
Y3NzVGV4dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb2xvcjo6bmFtZUZvclJlbmRlclRy
ZWVBc1RleHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29sb3I6OmxpZ2h0IGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkNvbG9yOjpkYXJrIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkNvbG9yOjpjb2xvcldpdGhBbHBoYSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb2xvcjo6
Y29sb3JXaXRoQWxwaGFVc2luZ0FsdGVybmF0aXZlUm91bmRpbmcgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6Q29sb3I6OmludmVydGVkQ29sb3JXaXRoQWxwaGEgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6Q29sb3I6OmNvbG9yU3BhY2VBbmRDb21wb25lbnRzIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkNvbG9yOjp0b1NSR0JBU2ltcGxlQ29sb3JMb3NzeSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpDb2xvcjo6dG9TUkdCQUNvbXBvbmVudHNMb3NzeSBjb25zdCk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbG9yOjpp
c09wYXF1ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb2xvcjo6aXNWaXNpYmxlIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbG9yOjphbHBoYSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpDb2xvcjo6YWxwaGFBc0Zsb2F0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbG9y
Ojphc1NpbXBsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb2xvcjo6aXNCbGFja0NvbG9y
KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbG9yOjppc1doaXRlQ29sb3IpOgorICAgICAgICAoV2Vi
Q29yZTo6Q29sb3I6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb2xvcjo6YXNT
aW1wbGVDb2xvciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Q29sb3JDb21wb25lbnRzLmg6CisgICAgICAgIChXZWJDb3JlOjpDb2xvckNvbXBvbmVudHM6Om9w
ZXJhdG9yW10pOgorICAgICAgICAoV2ViQ29yZTo6Q29sb3JDb21wb25lbnRzOjpvcGVyYXRvcltd
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Oj0pOgorICAgICAgICAoV2ViQ29yZTo6cGVyQ29t
cG9uZW50TWF4KToKKyAgICAgICAgKFdlYkNvcmU6OnBlckNvbXBvbmVudE1pbik6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JNYXRyaXguaDoKKyAgICAgICAgKFdlYkNvcmU6OlJv
d3M+Ojp0cmFuc2Zvcm1lZENvbG9yQ29tcG9uZW50cyBjb25zdCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvQ29sb3JVdGlsaXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YXJlRXNz
ZW50aWFsbHlFcXVhbCk6CisgICAgICAgIChXZWJDb3JlOjpyZ2JUb0xpbmVhckNvbXBvbmVudHMp
OgorICAgICAgICAoV2ViQ29yZTo6bGluZWFyVG9SR0JDb21wb25lbnRzKToKKyAgICAgICAgKFdl
YkNvcmU6OmxpZ2h0bmVzcyk6CisgICAgICAgIChXZWJDb3JlOjpsdW1pbmFuY2UpOgorICAgICAg
ICAoV2ViQ29yZTo6c1JHQlRvSFNMKToKKyAgICAgICAgKFdlYkNvcmU6OmhzbFRvU1JHQik6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JVdGlsaXRpZXMuaDoKKyAgICAgICAgKFdl
YkNvcmU6OnNjYWxlUm91bmRBbmRDbGFtcENvbG9yQ2hhbm5lbCk6CisgICAgICAgIChXZWJDb3Jl
OjpzY2FsZVJvdW5kQW5kQ2xhbXBDb2xvckNoYW5uZWxVc2luZ0FsdGVybmF0aXZlUm91bmRpbmcp
OgorICAgICAgICAoV2ViQ29yZTo6Y29sb3JGbG9hdFRvU2ltcGxlQ29sb3JCeXRlKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9FeHRlbmRlZENvbG9yLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkV4dGVuZGVkQ29sb3I6Omhhc2ggY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6RXh0ZW5kZWRDb2xvcjo6Y3NzVGV4dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpFeHRl
bmRlZENvbG9yOjpjb2xvcldpdGhBbHBoYSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpFeHRl
bmRlZENvbG9yOjppbnZlcnRlZENvbG9yV2l0aEFscGhhIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkV4dGVuZGVkQ29sb3I6OnRvU1JHQkFDb21wb25lbnRzTG9zc3kgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6RXh0ZW5kZWRDb2xvcjo6aXNXaGl0ZSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpFeHRlbmRlZENvbG9yOjppc0JsYWNrIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9FeHRlbmRlZENvbG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbmRlZENvbG9y
OjphbHBoYSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbmRlZENvbG9yOjpjb21wb25l
bnRzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuZGVkQ29sb3I6OkV4dGVuZGVkQ29s
b3IpOgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3I9PSk6CisgICAgICAgIChXZWJDb3JlOjpF
eHRlbmRlZENvbG9yOjpjaGFubmVscyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvU2ltcGxlQ29sb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bWFrZVNpbXBs
ZUNvbG9yRnJvbUZsb2F0cyk6CisgICAgICAgIChXZWJDb3JlOjptYWtlU2ltcGxlQ29sb3JGcm9t
SFNMQSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvU2ltcGxlQ29sb3IuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNpbXBsZUNvbG9yOjpTaW1wbGVDb2xvcik6CisgICAgICAgIChXZWJDb3Jl
OjpTaW1wbGVDb2xvcjo6dmFsdWVBc0FSR0IgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2lt
cGxlQ29sb3I6OmNvbG9yV2l0aEFscGhhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNpbXBs
ZUNvbG9yOjppbnZlcnRlZENvbG9yV2l0aEFscGhhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlNpbXBsZUNvbG9yOjphc1NSR0JGbG9hdENvbXBvbmVudHMgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6bWFrZVNpbXBsZUNvbG9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9D
b2xvckNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNhY2hlZENHQ29sb3IpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVMaWdodGluZy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGRUxpZ2h0aW5nOjpkcmF3TGlnaHRpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRkVUdXJidWxlbmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRvSW50QmFz
ZWRDb2xvckNvbXBvbmVudHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RmlsdGVyT3BlcmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJhc2ljQ29tcG9uZW50VHJh
bnNmZXJGaWx0ZXJPcGVyYXRpb246OnRyYW5zZm9ybUNvbG9yIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkludmVydExpZ2h0bmVzc0ZpbHRlck9wZXJhdGlvbjo6dHJhbnNmb3JtQ29sb3IgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6SW52ZXJ0TGlnaHRuZXNzRmlsdGVyT3BlcmF0aW9uOjpp
bnZlcnNlVHJhbnNmb3JtQ29sb3IgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9ucy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJP
cGVyYXRpb25zOjp0cmFuc2Zvcm1Db2xvciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0
ZXJPcGVyYXRpb25zOjppbnZlcnNlVHJhbnNmb3JtQ29sb3IgY29uc3QpOgorCiAyMDIwLTA1LTMw
ICBBbmR5IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBbQXBwbGUgUGF5XSBT
dXBwb3J0IHBlcmNlbnRhZ2UgYm9yZGVyLXJhZGl1cyB2YWx1ZXMgaW4gLWFwcGxlLXBheS1idXR0
b24KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5jcHAJKHJl
dmlzaW9uIDI2MjMyOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9y
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEzLDI3ICsxMTMsMjcgQEAgU3RyaW5nIENvbG9yOjpz
ZXJpYWxpemVkKCkgY29uc3QKIHsKICAgICBpZiAoaXNFeHRlbmRlZCgpKQogICAgICAgICByZXR1
cm4gYXNFeHRlbmRlZCgpLmNzc1RleHQoKTsKLSAgICByZXR1cm4gYXNTaW1wbGVDb2xvcigpLnNl
cmlhbGl6YXRpb25Gb3JIVE1MKCk7CisgICAgcmV0dXJuIGFzU2ltcGxlKCkuc2VyaWFsaXphdGlv
bkZvckhUTUwoKTsKIH0KIAogU3RyaW5nIENvbG9yOjpjc3NUZXh0KCkgY29uc3QKIHsKICAgICBp
ZiAoaXNFeHRlbmRlZCgpKQogICAgICAgICByZXR1cm4gYXNFeHRlbmRlZCgpLmNzc1RleHQoKTsK
LSAgICByZXR1cm4gYXNTaW1wbGVDb2xvcigpLnNlcmlhbGl6YXRpb25Gb3JDU1MoKTsKKyAgICBy
ZXR1cm4gYXNTaW1wbGUoKS5zZXJpYWxpemF0aW9uRm9yQ1NTKCk7CiB9CiAKIFN0cmluZyBDb2xv
cjo6bmFtZUZvclJlbmRlclRyZWVBc1RleHQoKSBjb25zdAogewogICAgIGlmIChpc0V4dGVuZGVk
KCkpCiAgICAgICAgIHJldHVybiBhc0V4dGVuZGVkKCkuY3NzVGV4dCgpOwotICAgIHJldHVybiBh
c1NpbXBsZUNvbG9yKCkuc2VyaWFsaXphdGlvbkZvclJlbmRlclRyZWVBc1RleHQoKTsKKyAgICBy
ZXR1cm4gYXNTaW1wbGUoKS5zZXJpYWxpemF0aW9uRm9yUmVuZGVyVHJlZUFzVGV4dCgpOwogfQog
CiBDb2xvciBDb2xvcjo6bGlnaHQoKSBjb25zdAogewogICAgIC8vIEhhcmRjb2RlIHRoaXMgY29t
bW9uIGNhc2UgZm9yIHNwZWVkLgotICAgIGlmICghaXNFeHRlbmRlZCgpICYmIGFzU2ltcGxlQ29s
b3IoKSA9PSBibGFjaykKKyAgICBpZiAoIWlzRXh0ZW5kZWQoKSAmJiBhc1NpbXBsZSgpID09IGJs
YWNrKQogICAgICAgICByZXR1cm4gbGlnaHRlbmVkQmxhY2s7CiAgICAgCiAgICAgY29uc3QgZmxv
YXQgc2NhbGVGYWN0b3IgPSBuZXh0YWZ0ZXJmKDI1Ni4wZiwgMC4wZik7CkBAIC0xNTgsNyArMTU4
LDcgQEAgQ29sb3IgQ29sb3I6OmxpZ2h0KCkgY29uc3QKIENvbG9yIENvbG9yOjpkYXJrKCkgY29u
c3QKIHsKICAgICAvLyBIYXJkY29kZSB0aGlzIGNvbW1vbiBjYXNlIGZvciBzcGVlZC4KLSAgICBp
ZiAoIWlzRXh0ZW5kZWQoKSAmJiBhc1NpbXBsZUNvbG9yKCkgPT0gd2hpdGUpCisgICAgaWYgKCFp
c0V4dGVuZGVkKCkgJiYgYXNTaW1wbGUoKSA9PSB3aGl0ZSkKICAgICAgICAgcmV0dXJuIGRhcmtl
bmVkV2hpdGU7CiAgICAgCiAgICAgY29uc3QgZmxvYXQgc2NhbGVGYWN0b3IgPSBuZXh0YWZ0ZXJm
KDI1Ni4wZiwgMC4wZik7CkBAIC0yNjksNyArMjY5LDcgQEAgQ29sb3IgQ29sb3I6OmNvbG9yV2l0
aEFscGhhKGZsb2F0IGFscGhhKQogICAgIC8vIEZJWE1FOiBUaGlzIGlzIHdoZXJlIHRoaXMgZnVu
Y3Rpb24gZGlmZmVycyBmcm9tIGNvbG9yV2l0aEFscGhhVXNpbmdBbHRlcm5hdGl2ZVJvdW5kaW5n
LgogICAgIHVpbnQ4X3QgbmV3QWxwaGEgPSBhbHBoYSAqIDB4RkY7CiAKLSAgICBDb2xvciByZXN1
bHQgPSBhc1NpbXBsZUNvbG9yKCkuY29sb3JXaXRoQWxwaGEobmV3QWxwaGEpOworICAgIENvbG9y
IHJlc3VsdCA9IGFzU2ltcGxlKCkuY29sb3JXaXRoQWxwaGEobmV3QWxwaGEpOwogICAgIGlmIChp
c1NlbWFudGljKCkpCiAgICAgICAgIHJlc3VsdC5zZXRJc1NlbWFudGljKCk7CiAgICAgcmV0dXJu
IHJlc3VsdDsKQEAgLTI4MSw5ICsyODEsOSBAQCBDb2xvciBDb2xvcjo6Y29sb3JXaXRoQWxwaGFV
c2luZ0FsdGVybmF0CiAgICAgICAgIHJldHVybiBhc0V4dGVuZGVkKCkuY29sb3JXaXRoQWxwaGEo
YWxwaGEpOwogCiAgICAgLy8gRklYTUU6IFRoaXMgaXMgd2hlcmUgdGhpcyBmdW5jdGlvbiBkaWZm
ZXJzIGZyb20gY29sb3JXaXRoQWxwaGFVc2luZy4KLSAgICB1aW50OF90IG5ld0FscGhhID0gY29s
b3JGbG9hdFRvU2ltcGxlQ29sb3JCeXRlKGFscGhhKTsKKyAgICB1aW50OF90IG5ld0FscGhhID0g
c2NhbGVSb3VuZEFuZENsYW1wQ29sb3JDaGFubmVsKGFscGhhKTsKIAotICAgIENvbG9yIHJlc3Vs
dCA9IGFzU2ltcGxlQ29sb3IoKS5jb2xvcldpdGhBbHBoYShuZXdBbHBoYSk7CisgICAgQ29sb3Ig
cmVzdWx0ID0gYXNTaW1wbGUoKS5jb2xvcldpdGhBbHBoYShuZXdBbHBoYSk7CiAgICAgaWYgKGlz
U2VtYW50aWMoKSkKICAgICAgICAgcmVzdWx0LnNldElzU2VtYW50aWMoKTsKICAgICByZXR1cm4g
cmVzdWx0OwpAQCAtMjkyLDEwICsyOTIsOCBAQCBDb2xvciBDb2xvcjo6Y29sb3JXaXRoQWxwaGFV
c2luZ0FsdGVybmF0CiBDb2xvciBDb2xvcjo6aW52ZXJ0ZWRDb2xvcldpdGhBbHBoYShmbG9hdCBh
bHBoYSkgY29uc3QKIHsKICAgICBpZiAoaXNFeHRlbmRlZCgpKQotICAgICAgICByZXR1cm4gQ29s
b3IgeyBhc0V4dGVuZGVkKCkuaW52ZXJ0ZWRDb2xvcldpdGhBbHBoYShhbHBoYSkgfTsKLQotICAg
IGF1dG8gW3IsIGcsIGIsIGV4aXN0aW5nQWxwaGFdID0gYXNTaW1wbGVDb2xvcigpOwotICAgIHJl
dHVybiB7IDB4RkYgLSByLCAweEZGIC0gZywgMHhGRiAtIGIsIGNvbG9yRmxvYXRUb1NpbXBsZUNv
bG9yQnl0ZShhbHBoYSkgfTsKKyAgICAgICAgcmV0dXJuIGFzRXh0ZW5kZWQoKS5pbnZlcnRlZENv
bG9yV2l0aEFscGhhKGFscGhhKTsKKyAgICByZXR1cm4gYXNTaW1wbGUoKS5pbnZlcnRlZENvbG9y
V2l0aEFscGhhKHNjYWxlUm91bmRBbmRDbGFtcENvbG9yQ2hhbm5lbChhbHBoYSkpOwogfQogCiBD
b2xvciBDb2xvcjo6c2VtYW50aWNDb2xvcigpIGNvbnN0CkBAIC0zMDgsMzggKzMwNiwyMyBAQCBD
b2xvciBDb2xvcjo6c2VtYW50aWNDb2xvcigpIGNvbnN0CiAKIHN0ZDo6cGFpcjxDb2xvclNwYWNl
LCBDb2xvckNvbXBvbmVudHM8ZmxvYXQ+PiBDb2xvcjo6Y29sb3JTcGFjZUFuZENvbXBvbmVudHMo
KSBjb25zdAogewotICAgIGlmIChpc0V4dGVuZGVkKCkpIHsKLSAgICAgICAgYXV0byYgZXh0ZW5k
ZWRDb2xvciA9IGFzRXh0ZW5kZWQoKTsKLSAgICAgICAgcmV0dXJuIHsgZXh0ZW5kZWRDb2xvci5j
b2xvclNwYWNlKCksIGV4dGVuZGVkQ29sb3IuY2hhbm5lbHMoKSB9OwotICAgIH0KLQotICAgIGF1
dG8gW3IsIGcsIGIsIGFdID0gYXNTaW1wbGVDb2xvcigpOwotICAgIHJldHVybiB7IENvbG9yU3Bh
Y2U6OlNSR0IsIENvbG9yQ29tcG9uZW50czxmbG9hdD4geyByIC8gMjU1LjBmLCBnIC8gMjU1LjBm
LCBiIC8gMjU1LjBmLCAgYSAvIDI1NS4wZiB9IH07CisgICAgaWYgKGlzRXh0ZW5kZWQoKSkKKyAg
ICAgICAgcmV0dXJuIHsgYXNFeHRlbmRlZCgpLmNvbG9yU3BhY2UoKSwgYXNFeHRlbmRlZCgpLmNv
bXBvbmVudHMoKSB9OworICAgIHJldHVybiB7IENvbG9yU3BhY2U6OlNSR0IsIGFzU2ltcGxlKCku
YXNTUkdCRmxvYXRDb21wb25lbnRzKCkgfTsKIH0KIAogU2ltcGxlQ29sb3IgQ29sb3I6OnRvU1JH
QkFTaW1wbGVDb2xvckxvc3N5KCkgY29uc3QKIHsKLSAgICBpZiAoaXNFeHRlbmRlZCgpKSB7Ci0g
ICAgICAgIGF1dG8gW3IsIGcsIGIsIGFdID0gdG9TUkdCQUNvbXBvbmVudHNMb3NzeSgpOwotICAg
ICAgICByZXR1cm4gbWFrZVNpbXBsZUNvbG9yRnJvbUZsb2F0cyhyLCBnLCBiLCBhKTsKLSAgICB9
Ci0KLSAgICByZXR1cm4gYXNTaW1wbGVDb2xvcigpOworICAgIGlmIChpc0V4dGVuZGVkKCkpCisg
ICAgICAgIHJldHVybiBtYWtlU2ltcGxlQ29sb3IodG9TUkdCQUNvbXBvbmVudHNMb3NzeSgpKTsK
KyAgICByZXR1cm4gYXNTaW1wbGUoKTsKIH0KIAogQ29sb3JDb21wb25lbnRzPGZsb2F0PiBDb2xv
cjo6dG9TUkdCQUNvbXBvbmVudHNMb3NzeSgpIGNvbnN0CiB7Ci0gICAgYXV0byBbY29sb3JTcGFj
ZSwgY29tcG9uZW50c10gPSBjb2xvclNwYWNlQW5kQ29tcG9uZW50cygpOwotICAgIHN3aXRjaCAo
Y29sb3JTcGFjZSkgewotICAgIGNhc2UgQ29sb3JTcGFjZTo6U1JHQjoKLSAgICAgICAgcmV0dXJu
IGNvbXBvbmVudHM7Ci0gICAgY2FzZSBDb2xvclNwYWNlOjpMaW5lYXJSR0I6Ci0gICAgICAgIHJl
dHVybiBsaW5lYXJUb1JHQkNvbXBvbmVudHMoY29tcG9uZW50cyk7Ci0gICAgY2FzZSBDb2xvclNw
YWNlOjpEaXNwbGF5UDM6Ci0gICAgICAgIHJldHVybiBwM1RvU1JHQihjb21wb25lbnRzKTsKLSAg
ICB9Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIHsgfTsKKyAgICBpZiAo
aXNFeHRlbmRlZCgpKQorICAgICAgICByZXR1cm4gYXNFeHRlbmRlZCgpLnRvU1JHQkFDb21wb25l
bnRzTG9zc3koKTsKKyAgICByZXR1cm4gYXNTaW1wbGUoKS5hc1NSR0JGbG9hdENvbXBvbmVudHMo
KTsKIH0KIAogYm9vbCBleHRlbmRlZENvbG9yc0VxdWFsKGNvbnN0IENvbG9yJiBhLCBjb25zdCBD
b2xvciYgYikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuaAko
cmV2aXNpb24gMjYyMzI5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29s
b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMTQwLDExICsxNDAsMTEgQEAgcHVibGljOgogCiAgICAg
Ym9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gaXNFeHRlbmRlZCgpIHx8IChtX2NvbG9yRGF0
YS5zaW1wbGVDb2xvckFuZEZsYWdzICYgdmFsaWRTaW1wbGVDb2xvckJpdCk7IH0KIAotICAgIGJv
b2wgaXNPcGFxdWUoKSBjb25zdCB7IHJldHVybiBpc0V4dGVuZGVkKCkgPyBhc0V4dGVuZGVkKCku
YWxwaGEoKSA9PSAxLjAgOiBhc1NpbXBsZUNvbG9yKCkuaXNPcGFxdWUoKTsgfQotICAgIGJvb2wg
aXNWaXNpYmxlKCkgY29uc3QgeyByZXR1cm4gaXNFeHRlbmRlZCgpID8gYXNFeHRlbmRlZCgpLmFs
cGhhKCkgPiAwLjAgOiBhc1NpbXBsZUNvbG9yKCkuaXNWaXNpYmxlKCk7IH0KKyAgICBib29sIGlz
T3BhcXVlKCkgY29uc3QgeyByZXR1cm4gaXNFeHRlbmRlZCgpID8gYXNFeHRlbmRlZCgpLmFscGhh
KCkgPT0gMS4wIDogYXNTaW1wbGUoKS5pc09wYXF1ZSgpOyB9CisgICAgYm9vbCBpc1Zpc2libGUo
KSBjb25zdCB7IHJldHVybiBpc0V4dGVuZGVkKCkgPyBhc0V4dGVuZGVkKCkuYWxwaGEoKSA+IDAu
MCA6IGFzU2ltcGxlKCkuaXNWaXNpYmxlKCk7IH0KIAotICAgIGludCBhbHBoYSgpIGNvbnN0IHsg
cmV0dXJuIGlzRXh0ZW5kZWQoKSA/IGFzRXh0ZW5kZWQoKS5hbHBoYSgpICogMjU1IDogYXNTaW1w
bGVDb2xvcigpLmFscGhhQ29tcG9uZW50KCk7IH0KLSAgICBmbG9hdCBhbHBoYUFzRmxvYXQoKSBj
b25zdCB7IHJldHVybiBpc0V4dGVuZGVkKCkgPyBhc0V4dGVuZGVkKCkuYWxwaGEoKSA6IGFzU2lt
cGxlQ29sb3IoKS5hbHBoYUNvbXBvbmVudEFzRmxvYXQoKTsgfQorICAgIGludCBhbHBoYSgpIGNv
bnN0IHsgcmV0dXJuIGlzRXh0ZW5kZWQoKSA/IGFzRXh0ZW5kZWQoKS5hbHBoYSgpICogMjU1IDog
YXNTaW1wbGUoKS5hbHBoYUNvbXBvbmVudCgpOyB9CisgICAgZmxvYXQgYWxwaGFBc0Zsb2F0KCkg
Y29uc3QgeyByZXR1cm4gaXNFeHRlbmRlZCgpID8gYXNFeHRlbmRlZCgpLmFscGhhKCkgOiBhc1Np
bXBsZSgpLmFscGhhQ29tcG9uZW50QXNGbG9hdCgpOyB9CiAKICAgICB1bnNpZ25lZCBoYXNoKCkg
Y29uc3Q7CiAKQEAgLTIzMiw3ICsyMzIsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8Y2xhc3Mg
RGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPENvbG9yPiBkZWNvZGUoRGVjb2RlciYpOwogCiBwcml2
YXRlOgotICAgIGNvbnN0IFNpbXBsZUNvbG9yIGFzU2ltcGxlQ29sb3IoKSBjb25zdDsKKyAgICBj
b25zdCBTaW1wbGVDb2xvciBhc1NpbXBsZSgpIGNvbnN0OwogCiAgICAgdm9pZCBzZXRTaW1wbGVD
b2xvcihTaW1wbGVDb2xvcik7CiAgICAgdm9pZCBzZXRJc1NlbWFudGljKCkgeyBtX2NvbG9yRGF0
YS5zaW1wbGVDb2xvckFuZEZsYWdzIHw9IGlzU2VtYW50aWNTaW1wbGVDb2xvckJpdDsgfQpAQCAt
MzE4LDcgKzMxOCw3IEBAIGlubGluZSBjb25zdCBFeHRlbmRlZENvbG9yJiBDb2xvcjo6YXNFeHQK
ICAgICByZXR1cm4gKm1fY29sb3JEYXRhLmV4dGVuZGVkQ29sb3I7CiB9CiAKLWlubGluZSBjb25z
dCBTaW1wbGVDb2xvciBDb2xvcjo6YXNTaW1wbGVDb2xvcigpIGNvbnN0CitpbmxpbmUgY29uc3Qg
U2ltcGxlQ29sb3IgQ29sb3I6OmFzU2ltcGxlKCkgY29uc3QKIHsKICAgICBBU1NFUlQoIWlzRXh0
ZW5kZWQoKSk7CiAgICAgcmV0dXJuIHsgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KG1fY29sb3JEYXRh
LnNpbXBsZUNvbG9yQW5kRmxhZ3MgPj4gMzIpIH07CkBAIC0zMzQsMTQgKzMzNCwxNCBAQCBpbmxp
bmUgYm9vbCBDb2xvcjo6aXNCbGFja0NvbG9yKGNvbnN0IENvCiB7CiAgICAgaWYgKGNvbG9yLmlz
RXh0ZW5kZWQoKSkKICAgICAgICAgcmV0dXJuIGNvbG9yLmFzRXh0ZW5kZWQoKS5pc0JsYWNrKCk7
Ci0gICAgcmV0dXJuIGNvbG9yLmFzU2ltcGxlQ29sb3IoKSA9PSBDb2xvcjo6YmxhY2s7CisgICAg
cmV0dXJuIGNvbG9yLmFzU2ltcGxlKCkgPT0gQ29sb3I6OmJsYWNrOwogfQogCiBpbmxpbmUgYm9v
bCBDb2xvcjo6aXNXaGl0ZUNvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikKIHsKICAgICBpZiAoY29s
b3IuaXNFeHRlbmRlZCgpKQogICAgICAgICByZXR1cm4gY29sb3IuYXNFeHRlbmRlZCgpLmlzV2hp
dGUoKTsKLSAgICByZXR1cm4gY29sb3IuYXNTaW1wbGVDb2xvcigpID09IENvbG9yOjp3aGl0ZTsK
KyAgICByZXR1cm4gY29sb3IuYXNTaW1wbGUoKSA9PSBDb2xvcjo6d2hpdGU7CiB9CiAKIHRlbXBs
YXRlPGNsYXNzIEVuY29kZXI+CkBAIC0zNTEsNyArMzUxLDcgQEAgdm9pZCBDb2xvcjo6ZW5jb2Rl
KEVuY29kZXImIGVuY29kZXIpIGNvbgogICAgICAgICBlbmNvZGVyIDw8IHRydWU7CiAKICAgICAg
ICAgYXV0byYgZXh0ZW5kZWRDb2xvciA9IGFzRXh0ZW5kZWQoKTsKLSAgICAgICAgYXV0byBbYzEs
IGMyLCBjMywgYWxwaGFdID0gZXh0ZW5kZWRDb2xvci5jaGFubmVscygpOworICAgICAgICBhdXRv
IFtjMSwgYzIsIGMzLCBhbHBoYV0gPSBleHRlbmRlZENvbG9yLmNvbXBvbmVudHMoKTsKICAgICAg
ICAgZW5jb2RlciA8PCBjMTsKICAgICAgICAgZW5jb2RlciA8PCBjMjsKICAgICAgICAgZW5jb2Rl
ciA8PCBjMzsKQEAgLTM3MCw3ICszNzAsNyBAQCB2b2lkIENvbG9yOjplbmNvZGUoRW5jb2RlciYg
ZW5jb2RlcikgY29uCiAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGVuY29kZSB3aGV0aGVyIHRo
ZSBjb2xvciBpcyBzZW1hbnRpYy4KIAogICAgIGVuY29kZXIgPDwgdHJ1ZTsKLSAgICBlbmNvZGVy
IDw8IGFzU2ltcGxlQ29sb3IoKS52YWx1ZSgpOworICAgIGVuY29kZXIgPDwgYXNTaW1wbGUoKS52
YWx1ZSgpOwogfQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JDb21wb25lbnRzLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JDb21wb25lbnRzLmgJKHJldmlzaW9u
IDI2MjMyOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yQ29tcG9u
ZW50cy5oCSh3b3JraW5nIGNvcHkpCkBAIC00OSw2ICs0OSw5IEBAIHN0cnVjdCBDb2xvckNvbXBv
bmVudHMgewogCiAgICAgY29uc3RleHByIENvbG9yQ29tcG9uZW50cyBhYnMoKSBjb25zdDsKIAor
ICAgIGNvbnN0ZXhwciBUJiBvcGVyYXRvcltdKHNpemVfdCBpKSB7IHJldHVybiBjb21wb25lbnRz
W2ldOyB9CisgICAgY29uc3RleHByIGNvbnN0IFQmIG9wZXJhdG9yW10oc2l6ZV90IGkpIGNvbnN0
IHsgcmV0dXJuIGNvbXBvbmVudHNbaV07IH0KKwogICAgIHRlbXBsYXRlPHN0ZDo6c2l6ZV90IE4+
CiAgICAgY29uc3RleHByIFQgZ2V0KCkgY29uc3Q7CiAKQEAgLTU4LDEwICs2MSwxMCBAQCBzdHJ1
Y3QgQ29sb3JDb21wb25lbnRzIHsKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiBjb25zdGV4cHIgQ29s
b3JDb21wb25lbnRzPFQ+JiBDb2xvckNvbXBvbmVudHM8VD46Om9wZXJhdG9yKz0oY29uc3QgQ29s
b3JDb21wb25lbnRzJiByaHMpCiB7Ci0gICAgY29tcG9uZW50c1swXSArPSByaHMuY29tcG9uZW50
c1swXTsKLSAgICBjb21wb25lbnRzWzFdICs9IHJocy5jb21wb25lbnRzWzFdOwotICAgIGNvbXBv
bmVudHNbMl0gKz0gcmhzLmNvbXBvbmVudHNbMl07Ci0gICAgY29tcG9uZW50c1szXSArPSByaHMu
Y29tcG9uZW50c1szXTsKKyAgICBjb21wb25lbnRzWzBdICs9IHJoc1swXTsKKyAgICBjb21wb25l
bnRzWzFdICs9IHJoc1sxXTsKKyAgICBjb21wb25lbnRzWzJdICs9IHJoc1syXTsKKyAgICBjb21w
b25lbnRzWzNdICs9IHJoc1szXTsKICAgICByZXR1cm4gKnRoaXM7CiB9CiAKQEAgLTEyMCwxMCAr
MTIzLDEwIEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiBjb25zdGV4cHIgQ29sb3JDb21wb25lbnRz
PFQ+IHBlckNvbXBvbmVudE1heChjb25zdCBDb2xvckNvbXBvbmVudHM8VD4mIGEsIGNvbnN0IENv
bG9yQ29tcG9uZW50czxUPiYgYikKIHsKICAgICByZXR1cm4gewotICAgICAgICBzdGQ6Om1heChh
LmNvbXBvbmVudHNbMF0sIGIuY29tcG9uZW50c1swXSksCi0gICAgICAgIHN0ZDo6bWF4KGEuY29t
cG9uZW50c1sxXSwgYi5jb21wb25lbnRzWzFdKSwKLSAgICAgICAgc3RkOjptYXgoYS5jb21wb25l
bnRzWzJdLCBiLmNvbXBvbmVudHNbMl0pLAotICAgICAgICBzdGQ6Om1heChhLmNvbXBvbmVudHNb
M10sIGIuY29tcG9uZW50c1szXSkKKyAgICAgICAgc3RkOjptYXgoYVswXSwgYlswXSksCisgICAg
ICAgIHN0ZDo6bWF4KGFbMV0sIGJbMV0pLAorICAgICAgICBzdGQ6Om1heChhWzJdLCBiWzJdKSwK
KyAgICAgICAgc3RkOjptYXgoYVszXSwgYlszXSkKICAgICB9OwogfQogCkBAIC0xMzEsMTAgKzEz
NCwxMCBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogY29uc3RleHByIENvbG9yQ29tcG9uZW50czxU
PiBwZXJDb21wb25lbnRNaW4oY29uc3QgQ29sb3JDb21wb25lbnRzPFQ+JiBhLCBjb25zdCBDb2xv
ckNvbXBvbmVudHM8VD4mIGIpCiB7CiAgICAgcmV0dXJuIHsKLSAgICAgICAgc3RkOjptaW4oYS5j
b21wb25lbnRzWzBdLCBiLmNvbXBvbmVudHNbMF0pLAotICAgICAgICBzdGQ6Om1pbihhLmNvbXBv
bmVudHNbMV0sIGIuY29tcG9uZW50c1sxXSksCi0gICAgICAgIHN0ZDo6bWluKGEuY29tcG9uZW50
c1syXSwgYi5jb21wb25lbnRzWzJdKSwKLSAgICAgICAgc3RkOjptaW4oYS5jb21wb25lbnRzWzNd
LCBiLmNvbXBvbmVudHNbM10pCisgICAgICAgIHN0ZDo6bWluKGFbMF0sIGJbMF0pLAorICAgICAg
ICBzdGQ6Om1pbihhWzFdLCBiWzFdKSwKKyAgICAgICAgc3RkOjptaW4oYVsyXSwgYlsyXSksCisg
ICAgICAgIHN0ZDo6bWluKGFbM10sIGJbM10pCiAgICAgfTsKIH0KIApJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JNYXRyaXguaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvck1hdHJpeC5oCShyZXZpc2lvbiAyNjIz
MjkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvck1hdHJpeC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xMTUsMTcgKzExNSwxNyBAQCBjb25zdGV4cHIgQ29sb3JDb21wb25l
bnRzPGZsb2F0PiBDb2xvck1hCiAgICAgZm9yIChzaXplX3Qgcm93ID0gMDsgcm93IDwgUm93czsg
Kytyb3cpIHsKICAgICAgICAgaWYgY29uc3RleHByIChDb2x1bW5zIDw9IENvbG9yQ29tcG9uZW50
czxmbG9hdD46OlNpemUpIHsKICAgICAgICAgICAgIGZvciAoc2l6ZV90IGNvbHVtbiA9IDA7IGNv
bHVtbiA8IENvbHVtbnM7ICsrY29sdW1uKQotICAgICAgICAgICAgICAgIHJlc3VsdC5jb21wb25l
bnRzW3Jvd10gKz0gYXQocm93LCBjb2x1bW4pICogaW5wdXRWZWN0b3IuY29tcG9uZW50c1tjb2x1
bW5dOworICAgICAgICAgICAgICAgIHJlc3VsdFtyb3ddICs9IGF0KHJvdywgY29sdW1uKSAqIGlu
cHV0VmVjdG9yW2NvbHVtbl07CiAgICAgICAgIH0gZWxzZSBpZiBjb25zdGV4cHIgKENvbHVtbnMg
PiBDb2xvckNvbXBvbmVudHM8ZmxvYXQ+OjpTaXplKSB7CiAgICAgICAgICAgICBmb3IgKHNpemVf
dCBjb2x1bW4gPSAwOyBjb2x1bW4gPCBDb2xvckNvbXBvbmVudHM8ZmxvYXQ+OjpTaXplOyArK2Nv
bHVtbikKLSAgICAgICAgICAgICAgICByZXN1bHQuY29tcG9uZW50c1tyb3ddICs9IGF0KHJvdywg
Y29sdW1uKSAqIGlucHV0VmVjdG9yLmNvbXBvbmVudHNbY29sdW1uXTsKKyAgICAgICAgICAgICAg
ICByZXN1bHRbcm93XSArPSBhdChyb3csIGNvbHVtbikgKiBpbnB1dFZlY3Rvcltjb2x1bW5dOwog
ICAgICAgICAgICAgZm9yIChzaXplX3QgYWRkaXRpb25hbENvbHVtbiA9IENvbG9yQ29tcG9uZW50
czxmbG9hdD46OlNpemU7IGFkZGl0aW9uYWxDb2x1bW4gPCBDb2x1bW5zOyArK2FkZGl0aW9uYWxD
b2x1bW4pCi0gICAgICAgICAgICAgICAgcmVzdWx0LmNvbXBvbmVudHNbcm93XSArPSBhdChyb3cs
IGFkZGl0aW9uYWxDb2x1bW4pOworICAgICAgICAgICAgICAgIHJlc3VsdFtyb3ddICs9IGF0KHJv
dywgYWRkaXRpb25hbENvbHVtbik7CiAgICAgICAgIH0KICAgICB9CiAgICAgaWYgY29uc3RleHBy
IChDb2xvckNvbXBvbmVudHM8ZmxvYXQ+OjpTaXplID4gUm93cykgewogICAgICAgICBmb3IgKHNp
emVfdCBhZGRpdGlvbmFsUm93ID0gUm93czsgYWRkaXRpb25hbFJvdyA8IENvbG9yQ29tcG9uZW50
czxmbG9hdD46OlNpemU7ICsrYWRkaXRpb25hbFJvdykKLSAgICAgICAgICAgIHJlc3VsdC5jb21w
b25lbnRzW2FkZGl0aW9uYWxSb3ddID0gaW5wdXRWZWN0b3IuY29tcG9uZW50c1thZGRpdGlvbmFs
Um93XTsKKyAgICAgICAgICAgIHJlc3VsdFthZGRpdGlvbmFsUm93XSA9IGlucHV0VmVjdG9yW2Fk
ZGl0aW9uYWxSb3ddOwogICAgIH0KIAogICAgIHJldHVybiByZXN1bHQ7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclV0aWxpdGllcy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JVdGlsaXRpZXMuY3BwCShy
ZXZpc2lvbiAyNjIzMjkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xv
clV0aWxpdGllcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDEwICszMywxMCBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGJvb2wgYXJlRXNzZW50aWFsbHlFcXVhbChjb25zdCBDb2xvckNvbXBv
bmVudHM8ZmxvYXQ+JiBhLCBjb25zdCBDb2xvckNvbXBvbmVudHM8ZmxvYXQ+JiBiKQogewotICAg
IHJldHVybiBXVEY6OmFyZUVzc2VudGlhbGx5RXF1YWwoYS5jb21wb25lbnRzWzBdLCBiLmNvbXBv
bmVudHNbMF0pCi0gICAgICAgICYmIFdURjo6YXJlRXNzZW50aWFsbHlFcXVhbChhLmNvbXBvbmVu
dHNbMV0sIGIuY29tcG9uZW50c1sxXSkKLSAgICAgICAgJiYgV1RGOjphcmVFc3NlbnRpYWxseUVx
dWFsKGEuY29tcG9uZW50c1syXSwgYi5jb21wb25lbnRzWzJdKQotICAgICAgICAmJiBXVEY6OmFy
ZUVzc2VudGlhbGx5RXF1YWwoYS5jb21wb25lbnRzWzNdLCBiLmNvbXBvbmVudHNbM10pOworICAg
IHJldHVybiBXVEY6OmFyZUVzc2VudGlhbGx5RXF1YWwoYVswXSwgYlswXSkKKyAgICAgICAgJiYg
V1RGOjphcmVFc3NlbnRpYWxseUVxdWFsKGFbMV0sIGJbMV0pCisgICAgICAgICYmIFdURjo6YXJl
RXNzZW50aWFsbHlFcXVhbChhWzJdLCBiWzJdKQorICAgICAgICAmJiBXVEY6OmFyZUVzc2VudGlh
bGx5RXF1YWwoYVszXSwgYlszXSk7CiB9CiAKIC8vIFRoZXNlIGFyZSB0aGUgc3RhbmRhcmQgc1JH
QiA8LT4gbGluZWFyUkdCIGNvbnZlcnNpb24gZnVuY3Rpb25zIChodHRwczovL2VuLndpa2lwZWRp
YS5vcmcvd2lraS9TUkdCKS4KQEAgLTU5LDIwICs1OSwyMCBAQCBmbG9hdCByZ2JUb0xpbmVhckNv
bG9yQ29tcG9uZW50KGZsb2F0IGMpCiBDb2xvckNvbXBvbmVudHM8ZmxvYXQ+IHJnYlRvTGluZWFy
Q29tcG9uZW50cyhjb25zdCBDb2xvckNvbXBvbmVudHM8ZmxvYXQ+JiBSR0JDb2xvcikKIHsKICAg
ICByZXR1cm4gewotICAgICAgICByZ2JUb0xpbmVhckNvbG9yQ29tcG9uZW50KFJHQkNvbG9yLmNv
bXBvbmVudHNbMF0pLAotICAgICAgICByZ2JUb0xpbmVhckNvbG9yQ29tcG9uZW50KFJHQkNvbG9y
LmNvbXBvbmVudHNbMV0pLAotICAgICAgICByZ2JUb0xpbmVhckNvbG9yQ29tcG9uZW50KFJHQkNv
bG9yLmNvbXBvbmVudHNbMl0pLAotICAgICAgICBSR0JDb2xvci5jb21wb25lbnRzWzNdCisgICAg
ICAgIHJnYlRvTGluZWFyQ29sb3JDb21wb25lbnQoUkdCQ29sb3JbMF0pLAorICAgICAgICByZ2JU
b0xpbmVhckNvbG9yQ29tcG9uZW50KFJHQkNvbG9yWzFdKSwKKyAgICAgICAgcmdiVG9MaW5lYXJD
b2xvckNvbXBvbmVudChSR0JDb2xvclsyXSksCisgICAgICAgIFJHQkNvbG9yWzNdCiAgICAgfTsK
IH0KIAogQ29sb3JDb21wb25lbnRzPGZsb2F0PiBsaW5lYXJUb1JHQkNvbXBvbmVudHMoY29uc3Qg
Q29sb3JDb21wb25lbnRzPGZsb2F0PiYgbGluZWFyUkdCKQogewogICAgIHJldHVybiB7Ci0gICAg
ICAgIGxpbmVhclRvUkdCQ29sb3JDb21wb25lbnQobGluZWFyUkdCLmNvbXBvbmVudHNbMF0pLAot
ICAgICAgICBsaW5lYXJUb1JHQkNvbG9yQ29tcG9uZW50KGxpbmVhclJHQi5jb21wb25lbnRzWzFd
KSwKLSAgICAgICAgbGluZWFyVG9SR0JDb2xvckNvbXBvbmVudChsaW5lYXJSR0IuY29tcG9uZW50
c1syXSksCi0gICAgICAgIGxpbmVhclJHQi5jb21wb25lbnRzWzNdCisgICAgICAgIGxpbmVhclRv
UkdCQ29sb3JDb21wb25lbnQobGluZWFyUkdCWzBdKSwKKyAgICAgICAgbGluZWFyVG9SR0JDb2xv
ckNvbXBvbmVudChsaW5lYXJSR0JbMV0pLAorICAgICAgICBsaW5lYXJUb1JHQkNvbG9yQ29tcG9u
ZW50KGxpbmVhclJHQlsyXSksCisgICAgICAgIGxpbmVhclJHQlszXQogICAgIH07CiB9CiAKQEAg
LTE0Miw4ICsxNDIsNyBAQCBmbG9hdCBsaWdodG5lc3MoY29uc3QgQ29sb3JDb21wb25lbnRzPGZs
CiB7CiAgICAgYXV0byBbciwgZywgYiwgYV0gPSBzUkdCQ29tcG9udGVudHM7CiAKLSAgICBmbG9h
dCBtYXggPSBzdGQ6Om1heCh7IHIsIGcsIGIgfSk7Ci0gICAgZmxvYXQgbWluID0gc3RkOjptaW4o
eyByLCBnLCBiIH0pOworICAgIGF1dG8gW21pbiwgbWF4XSA9IHN0ZDo6bWlubWF4KHsgciwgZywg
YiB9KTsKIAogICAgIHJldHVybiAwLjVmICogKG1heCArIG1pbik7CiB9CkBAIC0xNjIsOSArMTYx
LDkgQEAgc3RhdGljIGZsb2F0IHNSR0JUb0xpbmVhckNvbG9yQ29tcG9uZW50RgogZmxvYXQgbHVt
aW5hbmNlKGNvbnN0IENvbG9yQ29tcG9uZW50czxmbG9hdD4mIHNSR0JDb21wb25lbnRzKQogewog
ICAgIC8vIFZhbHVlcyBmcm9tIGh0dHBzOi8vd3d3LnczLm9yZy9UUi8yMDA4L1JFQy1XQ0FHMjAt
MjAwODEyMTEvI3JlbGF0aXZlbHVtaW5hbmNlZGVmCi0gICAgcmV0dXJuIDAuMjEyNmYgKiBzUkdC
VG9MaW5lYXJDb2xvckNvbXBvbmVudEZvckx1bWluYW5jZShzUkdCQ29tcG9uZW50cy5jb21wb25l
bnRzWzBdKQotICAgICAgICArIDAuNzE1MmYgKiBzUkdCVG9MaW5lYXJDb2xvckNvbXBvbmVudEZv
ckx1bWluYW5jZShzUkdCQ29tcG9uZW50cy5jb21wb25lbnRzWzFdKQotICAgICAgICArIDAuMDcy
MmYgKiBzUkdCVG9MaW5lYXJDb2xvckNvbXBvbmVudEZvckx1bWluYW5jZShzUkdCQ29tcG9uZW50
cy5jb21wb25lbnRzWzJdKTsKKyAgICByZXR1cm4gMC4yMTI2ZiAqIHNSR0JUb0xpbmVhckNvbG9y
Q29tcG9uZW50Rm9yTHVtaW5hbmNlKHNSR0JDb21wb25lbnRzWzBdKQorICAgICAgICArIDAuNzE1
MmYgKiBzUkdCVG9MaW5lYXJDb2xvckNvbXBvbmVudEZvckx1bWluYW5jZShzUkdCQ29tcG9uZW50
c1sxXSkKKyAgICAgICAgKyAwLjA3MjJmICogc1JHQlRvTGluZWFyQ29sb3JDb21wb25lbnRGb3JM
dW1pbmFuY2Uoc1JHQkNvbXBvbmVudHNbMl0pOwogfQogCiBmbG9hdCBjb250cmFzdFJhdGlvKGNv
bnN0IENvbG9yQ29tcG9uZW50czxmbG9hdD4mIGNvbXBvbmVudHNBLCBjb25zdCBDb2xvckNvbXBv
bmVudHM8ZmxvYXQ+JiBjb21wb25lbnRzQikKQEAgLTE4NSw4ICsxODQsNyBAQCBDb2xvckNvbXBv
bmVudHM8ZmxvYXQ+IHNSR0JUb0hTTChjb25zdCBDCiAgICAgLy8gaHR0cDovL2VuLndpa2lwZWRp
YS5vcmcvd2lraS9IU0xfY29sb3Jfc3BhY2UuCiAgICAgYXV0byBbciwgZywgYiwgYWxwaGFdID0g
c1JHQkNvbXBvbnRlbnRzOwogCi0gICAgZmxvYXQgbWF4ID0gc3RkOjptYXgoeyByLCBnLCBiIH0p
OwotICAgIGZsb2F0IG1pbiA9IHN0ZDo6bWluKHsgciwgZywgYiB9KTsKKyAgICBhdXRvIFttaW4s
IG1heF0gPSBzdGQ6Om1pbm1heCh7IHIsIGcsIGIgfSk7CiAgICAgZmxvYXQgY2hyb21hID0gbWF4
IC0gbWluOwogCiAgICAgZmxvYXQgaHVlOwpAQCAtMjQyLDkgKzI0MCw3IEBAIHN0YXRpYyBmbG9h
dCBjYWxjSHVlKGZsb2F0IHRlbXAxLCBmbG9hdCAKIC8vIGZ1cnRoZXIgZXhwbGFuYXRpb24gYXZh
aWxhYmxlIGF0IGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSFNMX2NvbG9yX3NwYWNlCiBD
b2xvckNvbXBvbmVudHM8ZmxvYXQ+IGhzbFRvU1JHQihjb25zdCBDb2xvckNvbXBvbmVudHM8Zmxv
YXQ+JiBoc2xDb2xvcikKIHsKLSAgICBmbG9hdCBodWUgPSBoc2xDb2xvci5jb21wb25lbnRzWzBd
OwotICAgIGZsb2F0IHNhdHVyYXRpb24gPSBoc2xDb2xvci5jb21wb25lbnRzWzFdOwotICAgIGZs
b2F0IGxpZ2h0bmVzcyA9IGhzbENvbG9yLmNvbXBvbmVudHNbMl07CisgICAgYXV0byBbaHVlLCBz
YXR1cmF0aW9uLCBsaWdodG5lc3MsIGFscGhhXSA9IGhzbENvbG9yOwogCiAgICAgLy8gQ29udmVy
dCBiYWNrIHRvIFJHQi4KICAgICBpZiAoIXNhdHVyYXRpb24pIHsKQEAgLTI1Miw3ICsyNDgsNyBA
QCBDb2xvckNvbXBvbmVudHM8ZmxvYXQ+IGhzbFRvU1JHQihjb25zdCBDCiAgICAgICAgICAgICBs
aWdodG5lc3MsCiAgICAgICAgICAgICBsaWdodG5lc3MsCiAgICAgICAgICAgICBsaWdodG5lc3Ms
Ci0gICAgICAgICAgICBoc2xDb2xvci5jb21wb25lbnRzWzNdCisgICAgICAgICAgICBhbHBoYQog
ICAgICAgICB9OwogICAgIH0KICAgICAKQEAgLTI2NCw3ICsyNjAsNyBAQCBDb2xvckNvbXBvbmVu
dHM8ZmxvYXQ+IGhzbFRvU1JHQihjb25zdCBDCiAgICAgICAgIGNhbGNIdWUodGVtcDEsIHRlbXAy
LCBodWUgKyAyLjBmKSwKICAgICAgICAgY2FsY0h1ZSh0ZW1wMSwgdGVtcDIsIGh1ZSksCiAgICAg
ICAgIGNhbGNIdWUodGVtcDEsIHRlbXAyLCBodWUgLSAyLjBmKSwKLSAgICAgICAgaHNsQ29sb3Iu
Y29tcG9uZW50c1szXQorICAgICAgICBhbHBoYQogICAgIH07CiB9CiAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yVXRpbGl0aWVzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JVdGlsaXRpZXMuaAkocmV2aXNp
b24gMjYyMzI5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JVdGls
aXRpZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNjMsNiArNjMsMTYgQEAgaW5saW5lIHVpbnQ4X3Qg
cm91bmRBbmRDbGFtcENvbG9yQ2hhbm5lbAogICAgIHJldHVybiBzdGQ6OmNsYW1wKHN0ZDo6cm91
bmQodmFsdWUpLCAwLmYsIDI1NS5mKTsKIH0KIAoraW5saW5lIHVpbnQ4X3Qgc2NhbGVSb3VuZEFu
ZENsYW1wQ29sb3JDaGFubmVsKGZsb2F0IGYpCit7CisgICAgcmV0dXJuIHN0ZDo6Y2xhbXAoc3Rh
dGljX2Nhc3Q8aW50Pihscm91bmRmKDI1NS4wZiAqIGYpKSwgMCwgMjU1KTsKK30KKworaW5saW5l
IHVpbnQ4X3Qgc2NhbGVSb3VuZEFuZENsYW1wQ29sb3JDaGFubmVsVXNpbmdBbHRlcm5hdGl2ZVJv
dW5kaW5nKGZsb2F0IGYpCit7CisgICAgcmV0dXJuIHN0ZDo6Y2xhbXAoc3RhdGljX2Nhc3Q8aW50
PihzdGQ6OnJvdW5kKGYgKiAyNTUuMCkpLCAwLCAyNTUpOworfQorCiBjb25zdGV4cHIgdWludDE2
X3QgZmFzdE11bHRpcGx5QnkyNTUodWludDE2X3QgdmFsdWUpCiB7CiAgICAgcmV0dXJuICh2YWx1
ZSA8PCA4KSAtIHZhbHVlOwpAQCAtNzcsOSArODcsNSBAQCBjb25zdGV4cHIgdWludDE2X3QgZmFz
dERpdmlkZUJ5MjU1KHVpbnQxCiAgICAgcmV0dXJuIGFwcHJveGltYXRpb24gKyAocmVtYWluZGVy
ID4+IDgpOwogfQogCi1pbmxpbmUgdWludDhfdCBjb2xvckZsb2F0VG9TaW1wbGVDb2xvckJ5dGUo
ZmxvYXQgZikKLXsKLSAgICByZXR1cm4gc3RkOjpjbGFtcChzdGF0aWNfY2FzdDxpbnQ+KGxyb3Vu
ZGYoMjU1LjBmICogZikpLCAwLCAyNTUpOwotfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRlbmRlZENvbG9yLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRlbmRlZENv
bG9yLmNwcAkocmV2aXNpb24gMjYyMzI5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRXh0ZW5kZWRDb2xvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAK
ICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJFeHRlbmRlZENvbG9yLmgiCiAKKyNpbmNs
dWRlICJDb2xvclV0aWxpdGllcy5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoZXIuaD4KICNpbmNsdWRl
IDx3dGYvTWF0aEV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRl
TnVtYmVycy5oPgpAQCAtMzksNyArNDAsNyBAQCBSZWY8RXh0ZW5kZWRDb2xvcj4gRXh0ZW5kZWRD
b2xvcjo6Y3JlYXRlCiAKIHVuc2lnbmVkIEV4dGVuZGVkQ29sb3I6Omhhc2goKSBjb25zdAogewot
ICAgIGF1dG8gW2MxLCBjMiwgYzMsIGFscGhhXSA9IGNoYW5uZWxzKCk7CisgICAgYXV0byBbYzEs
IGMyLCBjMywgYWxwaGFdID0gY29tcG9uZW50cygpOwogICAgIHJldHVybiBjb21wdXRlSGFzaChj
MSwgYzIsIGMzLCBhbHBoYSwgbV9jb2xvclNwYWNlKTsKIH0KIApAQCAtNTgsNyArNTksNyBAQCBT
dHJpbmcgRXh0ZW5kZWRDb2xvcjo6Y3NzVGV4dCgpIGNvbnN0CiAgICAgICAgIHJldHVybiBXVEY6
OmVtcHR5U3RyaW5nKCk7CiAgICAgfQogCi0gICAgYXV0byBbYzEsIGMyLCBjMywgZXhpc3RpbmdB
bHBoYV0gPSBjaGFubmVscygpOworICAgIGF1dG8gW2MxLCBjMiwgYzMsIGV4aXN0aW5nQWxwaGFd
ID0gY29tcG9uZW50cygpOwogCiAgICAgaWYgKFdURjo6YXJlRXNzZW50aWFsbHlFcXVhbChhbHBo
YSgpLCAxLjBmKSkKICAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmcoImNvbG9yKCIsIGNvbG9yU3Bh
Y2UsICcgJywgYzEsICcgJywgYzIsICcgJywgYzMsICcpJyk7CkBAIC02OCwyNSArNjksMzkgQEAg
U3RyaW5nIEV4dGVuZGVkQ29sb3I6OmNzc1RleHQoKSBjb25zdAogCiBSZWY8RXh0ZW5kZWRDb2xv
cj4gRXh0ZW5kZWRDb2xvcjo6Y29sb3JXaXRoQWxwaGEoZmxvYXQgb3ZlcnJpZGVBbHBoYSkgY29u
c3QKIHsKLSAgICBhdXRvIFtjMSwgYzIsIGMzLCBleGlzdGluZ0FscGhhXSA9IGNoYW5uZWxzKCk7
CisgICAgYXV0byBbYzEsIGMyLCBjMywgZXhpc3RpbmdBbHBoYV0gPSBjb21wb25lbnRzKCk7CiAg
ICAgcmV0dXJuIEV4dGVuZGVkQ29sb3I6OmNyZWF0ZShjMSwgYzIsIGMzLCBvdmVycmlkZUFscGhh
LCBjb2xvclNwYWNlKCkpOwogfQogCiBSZWY8RXh0ZW5kZWRDb2xvcj4gRXh0ZW5kZWRDb2xvcjo6
aW52ZXJ0ZWRDb2xvcldpdGhBbHBoYShmbG9hdCBvdmVycmlkZUFscGhhKSBjb25zdAogewotICAg
IGF1dG8gW2MxLCBjMiwgYzMsIGV4aXN0aW5nQWxwaGFdID0gY2hhbm5lbHMoKTsKKyAgICBhdXRv
IFtjMSwgYzIsIGMzLCBleGlzdGluZ0FscGhhXSA9IGNvbXBvbmVudHMoKTsKICAgICByZXR1cm4g
RXh0ZW5kZWRDb2xvcjo6Y3JlYXRlKDEuMGYgLSBjMSwgMS4wZiAtIGMyLCAxLjBmIC0gYzMsIG92
ZXJyaWRlQWxwaGEsIGNvbG9yU3BhY2UoKSk7CiB9CiAKK0NvbG9yQ29tcG9uZW50czxmbG9hdD4g
RXh0ZW5kZWRDb2xvcjo6dG9TUkdCQUNvbXBvbmVudHNMb3NzeSgpIGNvbnN0Cit7CisgICAgc3dp
dGNoIChtX2NvbG9yU3BhY2UpIHsKKyAgICBjYXNlIENvbG9yU3BhY2U6OlNSR0I6CisgICAgICAg
IHJldHVybiBtX2NvbXBvbmVudHM7CisgICAgY2FzZSBDb2xvclNwYWNlOjpMaW5lYXJSR0I6Cisg
ICAgICAgIHJldHVybiBsaW5lYXJUb1JHQkNvbXBvbmVudHMobV9jb21wb25lbnRzKTsKKyAgICBj
YXNlIENvbG9yU3BhY2U6OkRpc3BsYXlQMzoKKyAgICAgICAgcmV0dXJuIHAzVG9TUkdCKG1fY29t
cG9uZW50cyk7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiB7
IH07Cit9CisKIGJvb2wgRXh0ZW5kZWRDb2xvcjo6aXNXaGl0ZSgpIGNvbnN0CiB7Ci0gICAgYXV0
byBbYzEsIGMyLCBjMywgYWxwaGFdID0gY2hhbm5lbHMoKTsKKyAgICBhdXRvIFtjMSwgYzIsIGMz
LCBhbHBoYV0gPSBjb21wb25lbnRzKCk7CiAgICAgcmV0dXJuIGMxID09IDEgJiYgYzIgPT0gMSAm
JiBjMyA9PSAxICYmIGFscGhhID09IDE7CiB9CiAKIGJvb2wgRXh0ZW5kZWRDb2xvcjo6aXNCbGFj
aygpIGNvbnN0CiB7Ci0gICAgYXV0byBbYzEsIGMyLCBjMywgYWxwaGFdID0gY2hhbm5lbHMoKTsK
KyAgICBhdXRvIFtjMSwgYzIsIGMzLCBhbHBoYV0gPSBjb21wb25lbnRzKCk7CiAgICAgcmV0dXJu
ICFjMSAmJiAhYzIgJiYgIWMzICYmIGFscGhhID09IDE7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0V4dGVuZGVkQ29sb3IuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRlbmRlZENvbG9yLmgJKHJldmlzaW9uIDI2
MjMyOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0V4dGVuZGVkQ29sb3Iu
aAkod29ya2luZyBjb3B5KQpAQCAtMzcsOSArMzcsOSBAQCBjbGFzcyBFeHRlbmRlZENvbG9yIDog
cHVibGljIFJlZkNvdW50ZWQ8CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxFeHRlbmRlZENvbG9y
PiBjcmVhdGUoZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQgYWxwaGEsIENvbG9yU3BhY2UgPSBD
b2xvclNwYWNlOjpTUkdCKTsKIAotICAgIGZsb2F0IGFscGhhKCkgY29uc3QgeyByZXR1cm4gbV9j
aGFubmVscy5jb21wb25lbnRzWzNdOyB9CisgICAgZmxvYXQgYWxwaGEoKSBjb25zdCB7IHJldHVy
biBtX2NvbXBvbmVudHNbM107IH0KIAotICAgIGNvbnN0IENvbG9yQ29tcG9uZW50czxmbG9hdD4m
IGNoYW5uZWxzKCkgY29uc3QgeyByZXR1cm4gbV9jaGFubmVsczsgfQorICAgIGNvbnN0IENvbG9y
Q29tcG9uZW50czxmbG9hdD4mIGNvbXBvbmVudHMoKSBjb25zdCB7IHJldHVybiBtX2NvbXBvbmVu
dHM7IH0KICAgICBDb2xvclNwYWNlIGNvbG9yU3BhY2UoKSBjb25zdCB7IHJldHVybiBtX2NvbG9y
U3BhY2U7IH0KIAogICAgIFdFQkNPUkVfRVhQT1JUIHVuc2lnbmVkIGhhc2goKSBjb25zdDsKQEAg
LTQ5LDIyICs0OSwyNCBAQCBwdWJsaWM6CiAgICAgUmVmPEV4dGVuZGVkQ29sb3I+IGNvbG9yV2l0
aEFscGhhKGZsb2F0KSBjb25zdDsKICAgICBSZWY8RXh0ZW5kZWRDb2xvcj4gaW52ZXJ0ZWRDb2xv
cldpdGhBbHBoYShmbG9hdCkgY29uc3Q7CiAKKyAgICBDb2xvckNvbXBvbmVudHM8ZmxvYXQ+IHRv
U1JHQkFDb21wb25lbnRzTG9zc3koKSBjb25zdDsKKwogICAgIGJvb2wgaXNXaGl0ZSgpIGNvbnN0
OwogICAgIGJvb2wgaXNCbGFjaygpIGNvbnN0OwogCiBwcml2YXRlOgogICAgIEV4dGVuZGVkQ29s
b3IoZmxvYXQgYzEsIGZsb2F0IGMyLCBmbG9hdCBjMywgZmxvYXQgYWxwaGEsIENvbG9yU3BhY2Ug
Y29sb3JTcGFjZSkKLSAgICAgICAgOiBtX2NoYW5uZWxzKGMxLCBjMiwgYzMsIGFscGhhKQorICAg
ICAgICA6IG1fY29tcG9uZW50cyhjMSwgYzIsIGMzLCBhbHBoYSkKICAgICAgICAgLCBtX2NvbG9y
U3BhY2UoY29sb3JTcGFjZSkKICAgICB7IH0KIAotICAgIENvbG9yQ29tcG9uZW50czxmbG9hdD4g
bV9jaGFubmVsczsKKyAgICBDb2xvckNvbXBvbmVudHM8ZmxvYXQ+IG1fY29tcG9uZW50czsKICAg
ICBDb2xvclNwYWNlIG1fY29sb3JTcGFjZSB7IENvbG9yU3BhY2U6OlNSR0IgfTsKIH07CiAKIGlu
bGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgRXh0ZW5kZWRDb2xvciYgYSwgY29uc3QgRXh0ZW5k
ZWRDb2xvciYgYikKIHsKLSAgICByZXR1cm4gYS5jb2xvclNwYWNlKCkgPT0gYi5jb2xvclNwYWNl
KCkgJiYgYS5jaGFubmVscygpID09IGIuY2hhbm5lbHMoKTsKKyAgICByZXR1cm4gYS5jb2xvclNw
YWNlKCkgPT0gYi5jb2xvclNwYWNlKCkgJiYgYS5jb21wb25lbnRzKCkgPT0gYi5jb21wb25lbnRz
KCk7CiB9CiAKIGlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgRXh0ZW5kZWRDb2xvciYgYSwg
Y29uc3QgRXh0ZW5kZWRDb2xvciYgYikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1NpbXBsZUNvbG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9TaW1wbGVDb2xvci5jcHAJKHJldmlzaW9uIDI2MjMyOSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NpbXBsZUNvbG9yLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNjksMTggKzY5LDIzIEBAIFNpbXBsZUNvbG9yIG1ha2VVbnByZW11bHRpcGxpZWRTaW1w
bGVDb2wKIAogU2ltcGxlQ29sb3IgbWFrZVNpbXBsZUNvbG9yRnJvbUZsb2F0cyhmbG9hdCByLCBm
bG9hdCBnLCBmbG9hdCBiLCBmbG9hdCBhKQogewotICAgIHJldHVybiBtYWtlU2ltcGxlQ29sb3Io
Y29sb3JGbG9hdFRvU2ltcGxlQ29sb3JCeXRlKHIpLCBjb2xvckZsb2F0VG9TaW1wbGVDb2xvckJ5
dGUoZyksIGNvbG9yRmxvYXRUb1NpbXBsZUNvbG9yQnl0ZShiKSwgY29sb3JGbG9hdFRvU2ltcGxl
Q29sb3JCeXRlKGEpKTsKKyAgICByZXR1cm4gbWFrZVNpbXBsZUNvbG9yKAorICAgICAgICBzY2Fs
ZVJvdW5kQW5kQ2xhbXBDb2xvckNoYW5uZWwociksCisgICAgICAgIHNjYWxlUm91bmRBbmRDbGFt
cENvbG9yQ2hhbm5lbChnKSwKKyAgICAgICAgc2NhbGVSb3VuZEFuZENsYW1wQ29sb3JDaGFubmVs
KGIpLAorICAgICAgICBzY2FsZVJvdW5kQW5kQ2xhbXBDb2xvckNoYW5uZWwoYSkKKyAgICApOwog
fQogCiBTaW1wbGVDb2xvciBtYWtlU2ltcGxlQ29sb3JGcm9tSFNMQShmbG9hdCBodWUsIGZsb2F0
IHNhdHVyYXRpb24sIGZsb2F0IGxpZ2h0bmVzcywgZmxvYXQgYWxwaGEpCiB7Ci0gICAgY29uc3Qg
ZmxvYXQgc2NhbGVGYWN0b3IgPSAyNTUuMDsKLSAgICBhdXRvIGZsb2F0UmVzdWx0ID0gaHNsVG9T
UkdCKHsgaHVlLCBzYXR1cmF0aW9uLCBsaWdodG5lc3MsIGFscGhhIH0pOworICAgIGF1dG8gW3Is
IGcsIGIsIGFdID0gaHNsVG9TUkdCKHsgaHVlLCBzYXR1cmF0aW9uLCBsaWdodG5lc3MsIGFscGhh
IH0pOwogICAgIHJldHVybiBtYWtlU2ltcGxlQ29sb3IoCi0gICAgICAgIHJvdW5kKGZsb2F0UmVz
dWx0LmNvbXBvbmVudHNbMF0gKiBzY2FsZUZhY3RvciksCi0gICAgICAgIHJvdW5kKGZsb2F0UmVz
dWx0LmNvbXBvbmVudHNbMV0gKiBzY2FsZUZhY3RvciksCi0gICAgICAgIHJvdW5kKGZsb2F0UmVz
dWx0LmNvbXBvbmVudHNbMl0gKiBzY2FsZUZhY3RvciksCi0gICAgICAgIHJvdW5kKGZsb2F0UmVz
dWx0LmNvbXBvbmVudHNbM10gKiBzY2FsZUZhY3RvcikpOworICAgICAgICBzY2FsZVJvdW5kQW5k
Q2xhbXBDb2xvckNoYW5uZWxVc2luZ0FsdGVybmF0aXZlUm91bmRpbmcociksCisgICAgICAgIHNj
YWxlUm91bmRBbmRDbGFtcENvbG9yQ2hhbm5lbFVzaW5nQWx0ZXJuYXRpdmVSb3VuZGluZyhnKSwK
KyAgICAgICAgc2NhbGVSb3VuZEFuZENsYW1wQ29sb3JDaGFubmVsVXNpbmdBbHRlcm5hdGl2ZVJv
dW5kaW5nKGIpLAorICAgICAgICBzY2FsZVJvdW5kQW5kQ2xhbXBDb2xvckNoYW5uZWxVc2luZ0Fs
dGVybmF0aXZlUm91bmRpbmcoYSkKKyAgICApOwogfQogCiBTaW1wbGVDb2xvciBtYWtlU2ltcGxl
Q29sb3JGcm9tQ01ZS0EoZmxvYXQgYywgZmxvYXQgbSwgZmxvYXQgeSwgZmxvYXQgaywgZmxvYXQg
YSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NpbXBsZUNvbG9yLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2ltcGxlQ29s
b3IuaAkocmV2aXNpb24gMjYyMzI5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvU2ltcGxlQ29sb3IuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsMTEgKzMxLDEyIEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogLy8gQ29sb3IgdmFsdWUgd2l0aCA4LWJpdCBjb21wb25lbnRzIGZv
ciByZWQsIGdyZWVuLCBibHVlLCBhbmQgYWxwaGEuCiAvLyBGb3IgaGlzdG9yaWNhbCByZWFzb25z
LCBzdG9yZWQgYXMgYSAzMi1iaXQgaW50ZWdlciwgd2l0aCBhbHBoYSBpbiB0aGUgaGlnaCBiaXRz
OiBBUkdCLgotLy8gRklYTUU6IFRoaXMgY2xhc3Mgc2hvdWxkIGJlIGNvbnNvbGlkYXRlZCB3aXRo
IENvbG9yQ29tcG9uZW50cy4KIGNsYXNzIFNpbXBsZUNvbG9yIHsKIHB1YmxpYzoKICAgICBjb25z
dGV4cHIgU2ltcGxlQ29sb3IodWludDMyX3QgdmFsdWUgPSAwKSA6IG1fdmFsdWUgeyB2YWx1ZSB9
IHsgfQorICAgIGNvbnN0ZXhwciBTaW1wbGVDb2xvcih1aW50OF90IHIsIHVpbnQ4X3QgZywgdWlu
dDhfdCBiLCB1aW50OF90IGEpIDogbV92YWx1ZSB7IHN0YXRpY19jYXN0PHVuc2lnbmVkPihhIDw8
IDI0IHwgciA8PCAxNiB8IGcgPDwgOCB8IGIpIH0geyB9CiAKKyAgICBjb25zdGV4cHIgdWludDMy
X3QgdmFsdWVBc0FSR0IoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlOyB9CiAgICAgY29uc3RleHBy
IHVpbnQzMl90IHZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZTsgfQogCiAgICAgY29uc3Rl
eHByIHVpbnQ4X3QgcmVkQ29tcG9uZW50KCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZSA+PiAxNjsg
fQpAQCAtNTIsNyArNTMsMjAgQEAgcHVibGljOgogICAgIFN0cmluZyBzZXJpYWxpemF0aW9uRm9y
Q1NTKCkgY29uc3Q7CiAgICAgU3RyaW5nIHNlcmlhbGl6YXRpb25Gb3JSZW5kZXJUcmVlQXNUZXh0
KCkgY29uc3Q7CiAKLSAgICBjb25zdGV4cHIgU2ltcGxlQ29sb3IgY29sb3JXaXRoQWxwaGEodWlu
dDhfdCBhbHBoYSkgY29uc3QgeyByZXR1cm4geyAobV92YWx1ZSAmIDB4MDBGRkZGRkYpIHwgYWxw
aGEgPDwgMjQgfTsgfQorICAgIGNvbnN0ZXhwciBTaW1wbGVDb2xvciBjb2xvcldpdGhBbHBoYSh1
aW50OF90IGFscGhhKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIHsgKG1fdmFsdWUgJiAw
eDAwRkZGRkZGKSB8IGFscGhhIDw8IDI0IH07CisgICAgfQorCisgICAgY29uc3RleHByIFNpbXBs
ZUNvbG9yIGludmVydGVkQ29sb3JXaXRoQWxwaGEodWludDhfdCBhbHBoYSkgY29uc3QKKyAgICB7
CisgICAgICAgIHJldHVybiB7IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KDB4RkYgLSByZWRDb21wb25l
bnQoKSksIHN0YXRpY19jYXN0PHVpbnQ4X3Q+KDB4RkYgLSBncmVlbkNvbXBvbmVudCgpKSwgc3Rh
dGljX2Nhc3Q8dWludDhfdD4oMHhGRiAtIGJsdWVDb21wb25lbnQoKSksIGFscGhhIH07CisgICAg
fQorCisgICAgY29uc3RleHByIENvbG9yQ29tcG9uZW50czxmbG9hdD4gYXNTUkdCRmxvYXRDb21w
b25lbnRzKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiB7IHJlZENvbXBvbmVudCgpIC8g
MjU1LjBmLCBncmVlbkNvbXBvbmVudCgpIC8gMjU1LjBmLCBibHVlQ29tcG9uZW50KCkgLyAyNTUu
MGYsICBhbHBoYUNvbXBvbmVudCgpIC8gMjU1LjBmIH07CisgICAgfQogCiAgICAgdGVtcGxhdGU8
c3RkOjpzaXplX3QgTj4KICAgICBjb25zdGV4cHIgdWludDhfdCBnZXQoKSBjb25zdApAQCAtNzgs
NiArOTIsOCBAQCBib29sIG9wZXJhdG9yIT0oU2ltcGxlQ29sb3IsIFNpbXBsZUNvbG9yCiBjb25z
dGV4cHIgU2ltcGxlQ29sb3IgbWFrZVNpbXBsZUNvbG9yKGludCByLCBpbnQgZywgaW50IGIpOwog
Y29uc3RleHByIFNpbXBsZUNvbG9yIG1ha2VTaW1wbGVDb2xvcihpbnQgciwgaW50IGcsIGludCBi
LCBpbnQgYSk7CiAKK1NpbXBsZUNvbG9yIG1ha2VTaW1wbGVDb2xvcihjb25zdCBDb2xvckNvbXBv
bmVudHM8ZmxvYXQ+JiBzUkdCQ29tcG9uZW50cyk7CisKIFNpbXBsZUNvbG9yIG1ha2VQcmVtdWx0
aXBsaWVkU2ltcGxlQ29sb3IoaW50IHIsIGludCBnLCBpbnQgYiwgaW50IGEsIGJvb2wgY2VpbGlu
ZyA9IHRydWUpOwogU2ltcGxlQ29sb3IgbWFrZVByZW11bHRpcGxpZWRTaW1wbGVDb2xvcihTaW1w
bGVDb2xvcik7CiBTaW1wbGVDb2xvciBtYWtlVW5wcmVtdWx0aXBsaWVkU2ltcGxlQ29sb3IoaW50
IHIsIGludCBnLCBpbnQgYiwgaW50IGEpOwpAQCAtODcsNyArMTAzLDYgQEAgV0VCQ09SRV9FWFBP
UlQgU2ltcGxlQ29sb3IgbWFrZVNpbXBsZUNvbAogV0VCQ09SRV9FWFBPUlQgU2ltcGxlQ29sb3Ig
bWFrZVNpbXBsZUNvbG9yRnJvbUhTTEEoZmxvYXQgaCwgZmxvYXQgcywgZmxvYXQgbCwgZmxvYXQg
YSk7CiBTaW1wbGVDb2xvciBtYWtlU2ltcGxlQ29sb3JGcm9tQ01ZS0EoZmxvYXQgYywgZmxvYXQg
bSwgZmxvYXQgeSwgZmxvYXQgaywgZmxvYXQgYSk7CiAKLQogaW5saW5lIGJvb2wgb3BlcmF0b3I9
PShTaW1wbGVDb2xvciBhLCBTaW1wbGVDb2xvciBiKQogewogICAgIHJldHVybiBhLnZhbHVlKCkg
PT0gYi52YWx1ZSgpOwpAQCAtMTA1LDcgKzEyMCwxOCBAQCBjb25zdGV4cHIgU2ltcGxlQ29sb3Ig
bWFrZVNpbXBsZUNvbG9yKGluCiAKIGNvbnN0ZXhwciBTaW1wbGVDb2xvciBtYWtlU2ltcGxlQ29s
b3IoaW50IHIsIGludCBnLCBpbnQgYiwgaW50IGEpCiB7Ci0gICAgcmV0dXJuIHsgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KHN0ZDo6Y2xhbXAoYSwgMCwgMHhGRikgPDwgMjQgfCBzdGQ6OmNsYW1wKHIs
IDAsIDB4RkYpIDw8IDE2IHwgc3RkOjpjbGFtcChnLCAwLCAweEZGKSA8PCA4IHwgc3RkOjpjbGFt
cChiLCAwLCAweEZGKSkgfTsKKyAgICByZXR1cm4geyBzdGF0aWNfY2FzdDx1aW50OF90PihzdGQ6
OmNsYW1wKHIsIDAsIDB4RkYpKSwgc3RhdGljX2Nhc3Q8dWludDhfdD4oc3RkOjpjbGFtcChnLCAw
LCAweEZGKSksIHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHN0ZDo6Y2xhbXAoYiwgMCwgMHhGRikpLCBz
dGF0aWNfY2FzdDx1aW50OF90PihzdGQ6OmNsYW1wKGEsIDAsIDB4RkYpKSB9OworfQorCitpbmxp
bmUgU2ltcGxlQ29sb3IgbWFrZVNpbXBsZUNvbG9yKGNvbnN0IENvbG9yQ29tcG9uZW50czxmbG9h
dD4mIHNSR0JDb21wb25lbnRzKQoreworICAgIGF1dG8gW3IsIGcsIGIsIGFdID0gc1JHQkNvbXBv
bmVudHM7CisgICAgcmV0dXJuIG1ha2VTaW1wbGVDb2xvcigKKyAgICAgICAgc2NhbGVSb3VuZEFu
ZENsYW1wQ29sb3JDaGFubmVsKHIpLAorICAgICAgICBzY2FsZVJvdW5kQW5kQ2xhbXBDb2xvckNo
YW5uZWwoZyksCisgICAgICAgIHNjYWxlUm91bmRBbmRDbGFtcENvbG9yQ2hhbm5lbChiKSwKKyAg
ICAgICAgc2NhbGVSb3VuZEFuZENsYW1wQ29sb3JDaGFubmVsKGEpCisgICAgKTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvQ29sb3JDRy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvQ29sb3JDRy5jcHAJKHJldmlzaW9uIDI2MjMyOSkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yQ0cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
MzAsNyArMTMwLDcgQEAgc3RhdGljIENHQ29sb3JSZWYgbGVha0NHQ29sb3IoY29uc3QgQ29sbwog
Q0dDb2xvclJlZiBjYWNoZWRDR0NvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikKIHsKICAgICBpZiAo
IWNvbG9yLmlzRXh0ZW5kZWQoKSkgewotICAgICAgICBzd2l0Y2ggKGNvbG9yLmFzU2ltcGxlQ29s
b3IoKS52YWx1ZSgpKSB7CisgICAgICAgIHN3aXRjaCAoY29sb3IuYXNTaW1wbGUoKS52YWx1ZSgp
KSB7CiAgICAgICAgIGNhc2UgQ29sb3I6OnRyYW5zcGFyZW50LnZhbHVlKCk6IHsKICAgICAgICAg
ICAgIHN0YXRpYyBDR0NvbG9yUmVmIHRyYW5zcGFyZW50Q0dDb2xvciA9IGxlYWtDR0NvbG9yKGNv
bG9yKTsKICAgICAgICAgICAgIHJldHVybiB0cmFuc3BhcmVudENHQ29sb3I7CkBAIC0xNDYsNyAr
MTQ2LDcgQEAgQ0dDb2xvclJlZiBjYWNoZWRDR0NvbG9yKGNvbnN0IENvbG9yJiBjbwogICAgICAg
ICB9CiAgICAgfQogCi0gICAgQVNTRVJUKGNvbG9yLmlzRXh0ZW5kZWQoKSB8fCBjb2xvci5hc1Np
bXBsZUNvbG9yKCkudmFsdWUoKSk7CisgICAgQVNTRVJUKGNvbG9yLmlzRXh0ZW5kZWQoKSB8fCBj
b2xvci5hc1NpbXBsZSgpLnZhbHVlKCkpOwogCiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFRp
bnlMUlVDYWNoZTxDb2xvciwgUmV0YWluUHRyPENHQ29sb3JSZWY+LCAzMj4+IGNhY2hlOwogICAg
IHJldHVybiBjYWNoZS5nZXQoKS5nZXQoY29sb3IpLmdldCgpOwpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUxpZ2h0aW5nLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTGlnaHRpbmcuY3Bw
CShyZXZpc2lvbiAyNjIzMjkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZFTGlnaHRpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MDUsNyArNDA1LDcgQEAg
Ym9vbCBGRUxpZ2h0aW5nOjpkcmF3TGlnaHRpbmcoVWludDhDbGFtcAogICAgIGRhdGEuaGVpZ2h0
RGVjcmVhc2VkQnlPbmUgPSBoZWlnaHQgLSAxOwogICAgIAogICAgIGF1dG8gbGlnaHRDb2xvciA9
IChvcGVyYXRpbmdDb2xvclNwYWNlKCkgPT0gQ29sb3JTcGFjZTo6TGluZWFyUkdCKSA/IHJnYlRv
TGluZWFyQ29tcG9uZW50cyhtX2xpZ2h0aW5nQ29sb3IudG9TUkdCQUNvbXBvbmVudHNMb3NzeSgp
KSA6IG1fbGlnaHRpbmdDb2xvci50b1NSR0JBQ29tcG9uZW50c0xvc3N5KCk7Ci0gICAgcGFpbnRp
bmdEYXRhLmluaXRpYWxMaWdodGluZ0RhdGEuY29sb3JWZWN0b3IgPSBGbG9hdFBvaW50M0QobGln
aHRDb2xvci5jb21wb25lbnRzWzBdLCBsaWdodENvbG9yLmNvbXBvbmVudHNbMV0sIGxpZ2h0Q29s
b3IuY29tcG9uZW50c1syXSk7CisgICAgcGFpbnRpbmdEYXRhLmluaXRpYWxMaWdodGluZ0RhdGEu
Y29sb3JWZWN0b3IgPSBGbG9hdFBvaW50M0QobGlnaHRDb2xvclswXSwgbGlnaHRDb2xvclsxXSwg
bGlnaHRDb2xvclsyXSk7CiAgICAgbV9saWdodFNvdXJjZS0+aW5pdFBhaW50aW5nRGF0YSgqdGhp
cywgcGFpbnRpbmdEYXRhKTsKIAogICAgIC8vIFRvcCBsZWZ0LgpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVR1cmJ1bGVuY2UuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUdXJidWxlbmNl
LmNwcAkocmV2aXNpb24gMjYyMzI5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GRVR1cmJ1bGVuY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMjUsMTAgKzMy
NSwxMCBAQCBDb2xvckNvbXBvbmVudHM8ZmxvYXQ+IEZFVHVyYnVsZW5jZTo6bm9pCiBzdGF0aWMg
aW5saW5lIENvbG9yQ29tcG9uZW50czx1aW50OF90PiB0b0ludEJhc2VkQ29sb3JDb21wb25lbnRz
KGNvbnN0IENvbG9yQ29tcG9uZW50czxmbG9hdD4mIGZsb2F0Q29tcG9uZW50cykKIHsKICAgICBy
ZXR1cm4gewotICAgICAgICBzdGQ6OmNsYW1wPHVpbnQ4X3Q+KHN0YXRpY19jYXN0PGludD4oZmxv
YXRDb21wb25lbnRzLmNvbXBvbmVudHNbMF0gKiAyNTUpLCAwLCAyNTUpLAotICAgICAgICBzdGQ6
OmNsYW1wPHVpbnQ4X3Q+KHN0YXRpY19jYXN0PGludD4oZmxvYXRDb21wb25lbnRzLmNvbXBvbmVu
dHNbMV0gKiAyNTUpLCAwLCAyNTUpLAotICAgICAgICBzdGQ6OmNsYW1wPHVpbnQ4X3Q+KHN0YXRp
Y19jYXN0PGludD4oZmxvYXRDb21wb25lbnRzLmNvbXBvbmVudHNbMl0gKiAyNTUpLCAwLCAyNTUp
LAotICAgICAgICBzdGQ6OmNsYW1wPHVpbnQ4X3Q+KHN0YXRpY19jYXN0PGludD4oZmxvYXRDb21w
b25lbnRzLmNvbXBvbmVudHNbM10gKiAyNTUpLCAwLCAyNTUpLAorICAgICAgICBzdGQ6OmNsYW1w
PHVpbnQ4X3Q+KHN0YXRpY19jYXN0PGludD4oZmxvYXRDb21wb25lbnRzWzBdICogMjU1KSwgMCwg
MjU1KSwKKyAgICAgICAgc3RkOjpjbGFtcDx1aW50OF90PihzdGF0aWNfY2FzdDxpbnQ+KGZsb2F0
Q29tcG9uZW50c1sxXSAqIDI1NSksIDAsIDI1NSksCisgICAgICAgIHN0ZDo6Y2xhbXA8dWludDhf
dD4oc3RhdGljX2Nhc3Q8aW50PihmbG9hdENvbXBvbmVudHNbMl0gKiAyNTUpLCAwLCAyNTUpLAor
ICAgICAgICBzdGQ6OmNsYW1wPHVpbnQ4X3Q+KHN0YXRpY19jYXN0PGludD4oZmxvYXRDb21wb25l
bnRzWzNdICogMjU1KSwgMCwgMjU1KSwKICAgICB9OwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVy
YXRpb24uY3BwCShyZXZpc2lvbiAyNjIzMjkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1
NiwyNiArMTU2LDI2IEBAIGJvb2wgQmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9wZXJhdGkK
IHsKICAgICBzd2l0Y2ggKG1fdHlwZSkgewogICAgIGNhc2UgT1BBQ0lUWToKLSAgICAgICAgY29s
b3JDb21wb25lbnRzLmNvbXBvbmVudHNbM10gKj0gbV9hbW91bnQ7CisgICAgICAgIGNvbG9yQ29t
cG9uZW50c1szXSAqPSBtX2Ftb3VudDsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgY2FzZSBJ
TlZFUlQ6IHsKICAgICAgICAgZmxvYXQgb25lTWludXNBbW91bnQgPSAxLmYgLSBtX2Ftb3VudDsK
LSAgICAgICAgY29sb3JDb21wb25lbnRzLmNvbXBvbmVudHNbMF0gPSAxIC0gKG9uZU1pbnVzQW1v
dW50ICsgY29sb3JDb21wb25lbnRzLmNvbXBvbmVudHNbMF0gKiAobV9hbW91bnQgLSBvbmVNaW51
c0Ftb3VudCkpOwotICAgICAgICBjb2xvckNvbXBvbmVudHMuY29tcG9uZW50c1sxXSA9IDEgLSAo
b25lTWludXNBbW91bnQgKyBjb2xvckNvbXBvbmVudHMuY29tcG9uZW50c1sxXSAqIChtX2Ftb3Vu
dCAtIG9uZU1pbnVzQW1vdW50KSk7Ci0gICAgICAgIGNvbG9yQ29tcG9uZW50cy5jb21wb25lbnRz
WzJdID0gMSAtIChvbmVNaW51c0Ftb3VudCArIGNvbG9yQ29tcG9uZW50cy5jb21wb25lbnRzWzJd
ICogKG1fYW1vdW50IC0gb25lTWludXNBbW91bnQpKTsKKyAgICAgICAgY29sb3JDb21wb25lbnRz
WzBdID0gMSAtIChvbmVNaW51c0Ftb3VudCArIGNvbG9yQ29tcG9uZW50c1swXSAqIChtX2Ftb3Vu
dCAtIG9uZU1pbnVzQW1vdW50KSk7CisgICAgICAgIGNvbG9yQ29tcG9uZW50c1sxXSA9IDEgLSAo
b25lTWludXNBbW91bnQgKyBjb2xvckNvbXBvbmVudHNbMV0gKiAobV9hbW91bnQgLSBvbmVNaW51
c0Ftb3VudCkpOworICAgICAgICBjb2xvckNvbXBvbmVudHNbMl0gPSAxIC0gKG9uZU1pbnVzQW1v
dW50ICsgY29sb3JDb21wb25lbnRzWzJdICogKG1fYW1vdW50IC0gb25lTWludXNBbW91bnQpKTsK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIGNhc2UgQ09OVFJBU1Q6IHsKICAgICAg
ICAgZmxvYXQgaW50ZXJjZXB0ID0gLSgwLjVmICogbV9hbW91bnQpICsgMC41ZjsKLSAgICAgICAg
Y29sb3JDb21wb25lbnRzLmNvbXBvbmVudHNbMF0gPSBjbGFtcFRvPGZsb2F0PihpbnRlcmNlcHQg
KyBtX2Ftb3VudCAqIGNvbG9yQ29tcG9uZW50cy5jb21wb25lbnRzWzBdLCAwLCAxKTsKLSAgICAg
ICAgY29sb3JDb21wb25lbnRzLmNvbXBvbmVudHNbMV0gPSBjbGFtcFRvPGZsb2F0PihpbnRlcmNl
cHQgKyBtX2Ftb3VudCAqIGNvbG9yQ29tcG9uZW50cy5jb21wb25lbnRzWzFdLCAwLCAxKTsKLSAg
ICAgICAgY29sb3JDb21wb25lbnRzLmNvbXBvbmVudHNbMl0gPSBjbGFtcFRvPGZsb2F0PihpbnRl
cmNlcHQgKyBtX2Ftb3VudCAqIGNvbG9yQ29tcG9uZW50cy5jb21wb25lbnRzWzJdLCAwLCAxKTsK
KyAgICAgICAgY29sb3JDb21wb25lbnRzWzBdID0gY2xhbXBUbzxmbG9hdD4oaW50ZXJjZXB0ICsg
bV9hbW91bnQgKiBjb2xvckNvbXBvbmVudHNbMF0sIDAsIDEpOworICAgICAgICBjb2xvckNvbXBv
bmVudHNbMV0gPSBjbGFtcFRvPGZsb2F0PihpbnRlcmNlcHQgKyBtX2Ftb3VudCAqIGNvbG9yQ29t
cG9uZW50c1sxXSwgMCwgMSk7CisgICAgICAgIGNvbG9yQ29tcG9uZW50c1syXSA9IGNsYW1wVG88
ZmxvYXQ+KGludGVyY2VwdCArIG1fYW1vdW50ICogY29sb3JDb21wb25lbnRzWzJdLCAwLCAxKTsK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIGNhc2UgQlJJR0hUTkVTUzoKLSAgICAg
ICAgY29sb3JDb21wb25lbnRzLmNvbXBvbmVudHNbMF0gPSBzdGQ6Om1heDxmbG9hdD4obV9hbW91
bnQgKiBjb2xvckNvbXBvbmVudHMuY29tcG9uZW50c1swXSwgMCk7Ci0gICAgICAgIGNvbG9yQ29t
cG9uZW50cy5jb21wb25lbnRzWzFdID0gc3RkOjptYXg8ZmxvYXQ+KG1fYW1vdW50ICogY29sb3JD
b21wb25lbnRzLmNvbXBvbmVudHNbMV0sIDApOwotICAgICAgICBjb2xvckNvbXBvbmVudHMuY29t
cG9uZW50c1syXSA9IHN0ZDo6bWF4PGZsb2F0PihtX2Ftb3VudCAqIGNvbG9yQ29tcG9uZW50cy5j
b21wb25lbnRzWzJdLCAwKTsKKyAgICAgICAgY29sb3JDb21wb25lbnRzWzBdID0gc3RkOjptYXg8
ZmxvYXQ+KG1fYW1vdW50ICogY29sb3JDb21wb25lbnRzWzBdLCAwKTsKKyAgICAgICAgY29sb3JD
b21wb25lbnRzWzFdID0gc3RkOjptYXg8ZmxvYXQ+KG1fYW1vdW50ICogY29sb3JDb21wb25lbnRz
WzFdLCAwKTsKKyAgICAgICAgY29sb3JDb21wb25lbnRzWzJdID0gc3RkOjptYXg8ZmxvYXQ+KG1f
YW1vdW50ICogY29sb3JDb21wb25lbnRzWzJdLCAwKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgZGVmYXVsdDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC0yMzEsNyArMjMx
LDcgQEAgYm9vbCBJbnZlcnRMaWdodG5lc3NGaWx0ZXJPcGVyYXRpb246OnRyYQogICAgIGF1dG8g
aHNsQ29tcG9uZW50cyA9IHNSR0JUb0hTTChzUkdCQ29sb3JDb21wb25lbnRzKTsKICAgICAKICAg
ICAvLyBSb3RhdGUgdGhlIGh1ZSAxODBkZWcuCi0gICAgaHNsQ29tcG9uZW50cy5jb21wb25lbnRz
WzBdID0gZm1vZChoc2xDb21wb25lbnRzLmNvbXBvbmVudHNbMF0gKyAwLjVmLCAxLjBmKTsKKyAg
ICBoc2xDb21wb25lbnRzWzBdID0gZm1vZChoc2xDb21wb25lbnRzWzBdICsgMC41ZiwgMS4wZik7
CiAgICAgCiAgICAgLy8gQ29udmVydCBiYWNrIHRvIFJHQi4KICAgICBzUkdCQ29sb3JDb21wb25l
bnRzID0gaHNsVG9TUkdCKGhzbENvbXBvbmVudHMpOwpAQCAtMjYxLDcgKzI2MSw3IEBAIGJvb2wg
SW52ZXJ0TGlnaHRuZXNzRmlsdGVyT3BlcmF0aW9uOjppbnYKICAgICAvLyBDb252ZXJ0IHRvIEhT
TC4KICAgICBhdXRvIGhzbENvbXBvbmVudHMgPSBzUkdCVG9IU0wocmdiQ29tcG9uZW50cyk7CiAg
ICAgLy8gSHVlIHJvdGF0ZSBieSAxODBkZWcuCi0gICAgaHNsQ29tcG9uZW50cy5jb21wb25lbnRz
WzBdID0gZm1vZChoc2xDb21wb25lbnRzLmNvbXBvbmVudHNbMF0gKyAwLjVmLCAxLjBmKTsKKyAg
ICBoc2xDb21wb25lbnRzWzBdID0gZm1vZChoc2xDb21wb25lbnRzWzBdICsgMC41ZiwgMS4wZik7
CiAgICAgLy8gQW5kIHJldHVybiBSR0IuCiAgICAgc1JHQkNvbG9yQ29tcG9uZW50cyA9IGhzbFRv
U1JHQihoc2xDb21wb25lbnRzKTsKICAgICByZXR1cm4gdHJ1ZTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9ucy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJP
cGVyYXRpb25zLmNwcAkocmV2aXNpb24gMjYyMzI5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTExLDE1ICsxMTEsMTQgQEAgYm9vbCBGaWx0ZXJPcGVyYXRpb25zOjp0cmFuc2Zvcm1Db2xv
cihDbwogICAgIGlmIChjb2xvci5pc1NlbWFudGljKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAotICAgIGF1dG8gY29tcG9uZW50cyA9IGNvbG9yLnRvU1JHQkFDb21wb25lbnRzTG9zc3koKTsK
KyAgICBhdXRvIHNSR0JBQ29tcG9uZW50cyA9IGNvbG9yLnRvU1JHQkFDb21wb25lbnRzTG9zc3ko
KTsKIAogICAgIGZvciAoYXV0byYgb3BlcmF0aW9uIDogbV9vcGVyYXRpb25zKSB7Ci0gICAgICAg
IGlmICghb3BlcmF0aW9uLT50cmFuc2Zvcm1Db2xvcihjb21wb25lbnRzKSkKKyAgICAgICAgaWYg
KCFvcGVyYXRpb24tPnRyYW5zZm9ybUNvbG9yKHNSR0JBQ29tcG9uZW50cykpCiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgYXV0byBbciwgZywgYiwgYV0gPSBjb21wb25l
bnRzOwotICAgIGNvbG9yID0gbWFrZVNpbXBsZUNvbG9yRnJvbUZsb2F0cyhyLCBnLCBiLCBhKTsK
KyAgICBjb2xvciA9IG1ha2VTaW1wbGVDb2xvcihzUkdCQUNvbXBvbmVudHMpOwogICAgIHJldHVy
biB0cnVlOwogfQogCkBAIC0xMzEsMTUgKzEzMCwxNCBAQCBib29sIEZpbHRlck9wZXJhdGlvbnM6
OmludmVyc2VUcmFuc2Zvcm1DCiAgICAgaWYgKGNvbG9yLmlzU2VtYW50aWMoKSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCi0gICAgYXV0byBjb21wb25lbnRzID0gY29sb3IudG9TUkdCQUNvbXBv
bmVudHNMb3NzeSgpOworICAgIGF1dG8gc1JHQkFDb21wb25lbnRzID0gY29sb3IudG9TUkdCQUNv
bXBvbmVudHNMb3NzeSgpOwogCiAgICAgZm9yIChhdXRvJiBvcGVyYXRpb24gOiBtX29wZXJhdGlv
bnMpIHsKLSAgICAgICAgaWYgKCFvcGVyYXRpb24tPmludmVyc2VUcmFuc2Zvcm1Db2xvcihjb21w
b25lbnRzKSkKKyAgICAgICAgaWYgKCFvcGVyYXRpb24tPmludmVyc2VUcmFuc2Zvcm1Db2xvcihz
UkdCQUNvbXBvbmVudHMpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAg
IGF1dG8gW3IsIGcsIGIsIGFdID0gY29tcG9uZW50czsKLSAgICBjb2xvciA9IG1ha2VTaW1wbGVD
b2xvckZyb21GbG9hdHMociwgZywgYiwgYSk7CisgICAgY29sb3IgPSBtYWtlU2ltcGxlQ29sb3Io
c1JHQkFDb21wb25lbnRzKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>400672</attachid>
            <date>2020-05-30 11:45:35 -0700</date>
            <delta_ts>2020-05-30 12:47:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-212567-20200530114534.patch</filename>
            <type>text/plain</type>
            <size>40670</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2MjM0OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDkwIEBACisyMDIwLTA1LTMwICBTYW0gV2Vp
bmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBFeHRlbmRlZCBDb2xvcjogQWRkaXRp
b25hbCBjb2xvciBjbGVhbnVwcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjEyNTY3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDb2xvcjo6c2VyaWFsaXplZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb2xvcjo6
Y3NzVGV4dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb2xvcjo6bmFtZUZvclJlbmRlclRy
ZWVBc1RleHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29sb3I6OmxpZ2h0IGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkNvbG9yOjpkYXJrIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkNvbG9yOjpjb2xvcldpdGhBbHBoYSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb2xvcjo6
Y29sb3JXaXRoQWxwaGFVc2luZ0FsdGVybmF0aXZlUm91bmRpbmcgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6Q29sb3I6OmludmVydGVkQ29sb3JXaXRoQWxwaGEgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6Q29sb3I6OmNvbG9yU3BhY2VBbmRDb21wb25lbnRzIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkNvbG9yOjp0b1NSR0JBU2ltcGxlQ29sb3JMb3NzeSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpDb2xvcjo6dG9TUkdCQUNvbXBvbmVudHNMb3NzeSBjb25zdCk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbG9yOjpp
c09wYXF1ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb2xvcjo6aXNWaXNpYmxlIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbG9yOjphbHBoYSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpDb2xvcjo6YWxwaGFBc0Zsb2F0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbG9y
Ojphc1NpbXBsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb2xvcjo6aXNCbGFja0NvbG9y
KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbG9yOjppc1doaXRlQ29sb3IpOgorICAgICAgICAoV2Vi
Q29yZTo6Q29sb3I6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb2xvcjo6YXNT
aW1wbGVDb2xvciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Q29sb3JDb21wb25lbnRzLmg6CisgICAgICAgIChXZWJDb3JlOjpDb2xvckNvbXBvbmVudHM6Om9w
ZXJhdG9yW10pOgorICAgICAgICAoV2ViQ29yZTo6Q29sb3JDb21wb25lbnRzOjpvcGVyYXRvcltd
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Oj0pOgorICAgICAgICAoV2ViQ29yZTo6cGVyQ29t
cG9uZW50TWF4KToKKyAgICAgICAgKFdlYkNvcmU6OnBlckNvbXBvbmVudE1pbik6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JNYXRyaXguaDoKKyAgICAgICAgKFdlYkNvcmU6OlJv
d3M+Ojp0cmFuc2Zvcm1lZENvbG9yQ29tcG9uZW50cyBjb25zdCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvQ29sb3JVdGlsaXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YXJlRXNz
ZW50aWFsbHlFcXVhbCk6CisgICAgICAgIChXZWJDb3JlOjpyZ2JUb0xpbmVhckNvbXBvbmVudHMp
OgorICAgICAgICAoV2ViQ29yZTo6bGluZWFyVG9SR0JDb21wb25lbnRzKToKKyAgICAgICAgKFdl
YkNvcmU6OmxpZ2h0bmVzcyk6CisgICAgICAgIChXZWJDb3JlOjpsdW1pbmFuY2UpOgorICAgICAg
ICAoV2ViQ29yZTo6c1JHQlRvSFNMKToKKyAgICAgICAgKFdlYkNvcmU6OmhzbFRvU1JHQik6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JVdGlsaXRpZXMuaDoKKyAgICAgICAgKFdl
YkNvcmU6OnNjYWxlUm91bmRBbmRDbGFtcENvbG9yQ2hhbm5lbCk6CisgICAgICAgIChXZWJDb3Jl
OjpzY2FsZVJvdW5kQW5kQ2xhbXBDb2xvckNoYW5uZWxVc2luZ0FsdGVybmF0aXZlUm91bmRpbmcp
OgorICAgICAgICAoV2ViQ29yZTo6Y29sb3JGbG9hdFRvU2ltcGxlQ29sb3JCeXRlKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9FeHRlbmRlZENvbG9yLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkV4dGVuZGVkQ29sb3I6Omhhc2ggY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6RXh0ZW5kZWRDb2xvcjo6Y3NzVGV4dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpFeHRl
bmRlZENvbG9yOjpjb2xvcldpdGhBbHBoYSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpFeHRl
bmRlZENvbG9yOjppbnZlcnRlZENvbG9yV2l0aEFscGhhIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkV4dGVuZGVkQ29sb3I6OnRvU1JHQkFDb21wb25lbnRzTG9zc3kgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6RXh0ZW5kZWRDb2xvcjo6aXNXaGl0ZSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpFeHRlbmRlZENvbG9yOjppc0JsYWNrIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9FeHRlbmRlZENvbG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbmRlZENvbG9y
OjphbHBoYSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbmRlZENvbG9yOjpjb21wb25l
bnRzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuZGVkQ29sb3I6OkV4dGVuZGVkQ29s
b3IpOgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3I9PSk6CisgICAgICAgIChXZWJDb3JlOjpF
eHRlbmRlZENvbG9yOjpjaGFubmVscyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvU2ltcGxlQ29sb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bWFrZVNpbXBs
ZUNvbG9yRnJvbUZsb2F0cyk6CisgICAgICAgIChXZWJDb3JlOjptYWtlU2ltcGxlQ29sb3JGcm9t
SFNMQSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvU2ltcGxlQ29sb3IuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNpbXBsZUNvbG9yOjpTaW1wbGVDb2xvcik6CisgICAgICAgIChXZWJDb3Jl
OjpTaW1wbGVDb2xvcjo6dmFsdWVBc0FSR0IgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2lt
cGxlQ29sb3I6OmNvbG9yV2l0aEFscGhhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNpbXBs
ZUNvbG9yOjppbnZlcnRlZENvbG9yV2l0aEFscGhhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlNpbXBsZUNvbG9yOjphc1NSR0JGbG9hdENvbXBvbmVudHMgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6bWFrZVNpbXBsZUNvbG9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9D
b2xvckNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNhY2hlZENHQ29sb3IpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVMaWdodGluZy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGRUxpZ2h0aW5nOjpkcmF3TGlnaHRpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRkVUdXJidWxlbmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRvSW50QmFz
ZWRDb2xvckNvbXBvbmVudHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RmlsdGVyT3BlcmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJhc2ljQ29tcG9uZW50VHJh
bnNmZXJGaWx0ZXJPcGVyYXRpb246OnRyYW5zZm9ybUNvbG9yIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkludmVydExpZ2h0bmVzc0ZpbHRlck9wZXJhdGlvbjo6dHJhbnNmb3JtQ29sb3IgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6SW52ZXJ0TGlnaHRuZXNzRmlsdGVyT3BlcmF0aW9uOjpp
bnZlcnNlVHJhbnNmb3JtQ29sb3IgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9ucy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJP
cGVyYXRpb25zOjp0cmFuc2Zvcm1Db2xvciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0
ZXJPcGVyYXRpb25zOjppbnZlcnNlVHJhbnNmb3JtQ29sb3IgY29uc3QpOgorCiAyMDIwLTA1LTMw
ICBBbmR5IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBbQXBwbGUgUGF5XSBT
dXBwb3J0IHBlcmNlbnRhZ2UgYm9yZGVyLXJhZGl1cyB2YWx1ZXMgaW4gLWFwcGxlLXBheS1idXR0
b24KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5jcHAJKHJl
dmlzaW9uIDI2MjM0OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9y
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEzLDI3ICsxMTMsMjcgQEAgU3RyaW5nIENvbG9yOjpz
ZXJpYWxpemVkKCkgY29uc3QKIHsKICAgICBpZiAoaXNFeHRlbmRlZCgpKQogICAgICAgICByZXR1
cm4gYXNFeHRlbmRlZCgpLmNzc1RleHQoKTsKLSAgICByZXR1cm4gYXNTaW1wbGVDb2xvcigpLnNl
cmlhbGl6YXRpb25Gb3JIVE1MKCk7CisgICAgcmV0dXJuIGFzU2ltcGxlKCkuc2VyaWFsaXphdGlv
bkZvckhUTUwoKTsKIH0KIAogU3RyaW5nIENvbG9yOjpjc3NUZXh0KCkgY29uc3QKIHsKICAgICBp
ZiAoaXNFeHRlbmRlZCgpKQogICAgICAgICByZXR1cm4gYXNFeHRlbmRlZCgpLmNzc1RleHQoKTsK
LSAgICByZXR1cm4gYXNTaW1wbGVDb2xvcigpLnNlcmlhbGl6YXRpb25Gb3JDU1MoKTsKKyAgICBy
ZXR1cm4gYXNTaW1wbGUoKS5zZXJpYWxpemF0aW9uRm9yQ1NTKCk7CiB9CiAKIFN0cmluZyBDb2xv
cjo6bmFtZUZvclJlbmRlclRyZWVBc1RleHQoKSBjb25zdAogewogICAgIGlmIChpc0V4dGVuZGVk
KCkpCiAgICAgICAgIHJldHVybiBhc0V4dGVuZGVkKCkuY3NzVGV4dCgpOwotICAgIHJldHVybiBh
c1NpbXBsZUNvbG9yKCkuc2VyaWFsaXphdGlvbkZvclJlbmRlclRyZWVBc1RleHQoKTsKKyAgICBy
ZXR1cm4gYXNTaW1wbGUoKS5zZXJpYWxpemF0aW9uRm9yUmVuZGVyVHJlZUFzVGV4dCgpOwogfQog
CiBDb2xvciBDb2xvcjo6bGlnaHQoKSBjb25zdAogewogICAgIC8vIEhhcmRjb2RlIHRoaXMgY29t
bW9uIGNhc2UgZm9yIHNwZWVkLgotICAgIGlmICghaXNFeHRlbmRlZCgpICYmIGFzU2ltcGxlQ29s
b3IoKSA9PSBibGFjaykKKyAgICBpZiAoIWlzRXh0ZW5kZWQoKSAmJiBhc1NpbXBsZSgpID09IGJs
YWNrKQogICAgICAgICByZXR1cm4gbGlnaHRlbmVkQmxhY2s7CiAgICAgCiAgICAgY29uc3QgZmxv
YXQgc2NhbGVGYWN0b3IgPSBuZXh0YWZ0ZXJmKDI1Ni4wZiwgMC4wZik7CkBAIC0xNTgsNyArMTU4
LDcgQEAgQ29sb3IgQ29sb3I6OmxpZ2h0KCkgY29uc3QKIENvbG9yIENvbG9yOjpkYXJrKCkgY29u
c3QKIHsKICAgICAvLyBIYXJkY29kZSB0aGlzIGNvbW1vbiBjYXNlIGZvciBzcGVlZC4KLSAgICBp
ZiAoIWlzRXh0ZW5kZWQoKSAmJiBhc1NpbXBsZUNvbG9yKCkgPT0gd2hpdGUpCisgICAgaWYgKCFp
c0V4dGVuZGVkKCkgJiYgYXNTaW1wbGUoKSA9PSB3aGl0ZSkKICAgICAgICAgcmV0dXJuIGRhcmtl
bmVkV2hpdGU7CiAgICAgCiAgICAgY29uc3QgZmxvYXQgc2NhbGVGYWN0b3IgPSBuZXh0YWZ0ZXJm
KDI1Ni4wZiwgMC4wZik7CkBAIC0yNjksNyArMjY5LDcgQEAgQ29sb3IgQ29sb3I6OmNvbG9yV2l0
aEFscGhhKGZsb2F0IGFscGhhKQogICAgIC8vIEZJWE1FOiBUaGlzIGlzIHdoZXJlIHRoaXMgZnVu
Y3Rpb24gZGlmZmVycyBmcm9tIGNvbG9yV2l0aEFscGhhVXNpbmdBbHRlcm5hdGl2ZVJvdW5kaW5n
LgogICAgIHVpbnQ4X3QgbmV3QWxwaGEgPSBhbHBoYSAqIDB4RkY7CiAKLSAgICBDb2xvciByZXN1
bHQgPSBhc1NpbXBsZUNvbG9yKCkuY29sb3JXaXRoQWxwaGEobmV3QWxwaGEpOworICAgIENvbG9y
IHJlc3VsdCA9IGFzU2ltcGxlKCkuY29sb3JXaXRoQWxwaGEobmV3QWxwaGEpOwogICAgIGlmIChp
c1NlbWFudGljKCkpCiAgICAgICAgIHJlc3VsdC5zZXRJc1NlbWFudGljKCk7CiAgICAgcmV0dXJu
IHJlc3VsdDsKQEAgLTI4MSw5ICsyODEsOSBAQCBDb2xvciBDb2xvcjo6Y29sb3JXaXRoQWxwaGFV
c2luZ0FsdGVybmF0CiAgICAgICAgIHJldHVybiBhc0V4dGVuZGVkKCkuY29sb3JXaXRoQWxwaGEo
YWxwaGEpOwogCiAgICAgLy8gRklYTUU6IFRoaXMgaXMgd2hlcmUgdGhpcyBmdW5jdGlvbiBkaWZm
ZXJzIGZyb20gY29sb3JXaXRoQWxwaGFVc2luZy4KLSAgICB1aW50OF90IG5ld0FscGhhID0gY29s
b3JGbG9hdFRvU2ltcGxlQ29sb3JCeXRlKGFscGhhKTsKKyAgICB1aW50OF90IG5ld0FscGhhID0g
c2NhbGVSb3VuZEFuZENsYW1wQ29sb3JDaGFubmVsKGFscGhhKTsKIAotICAgIENvbG9yIHJlc3Vs
dCA9IGFzU2ltcGxlQ29sb3IoKS5jb2xvcldpdGhBbHBoYShuZXdBbHBoYSk7CisgICAgQ29sb3Ig
cmVzdWx0ID0gYXNTaW1wbGUoKS5jb2xvcldpdGhBbHBoYShuZXdBbHBoYSk7CiAgICAgaWYgKGlz
U2VtYW50aWMoKSkKICAgICAgICAgcmVzdWx0LnNldElzU2VtYW50aWMoKTsKICAgICByZXR1cm4g
cmVzdWx0OwpAQCAtMjkyLDEwICsyOTIsOCBAQCBDb2xvciBDb2xvcjo6Y29sb3JXaXRoQWxwaGFV
c2luZ0FsdGVybmF0CiBDb2xvciBDb2xvcjo6aW52ZXJ0ZWRDb2xvcldpdGhBbHBoYShmbG9hdCBh
bHBoYSkgY29uc3QKIHsKICAgICBpZiAoaXNFeHRlbmRlZCgpKQotICAgICAgICByZXR1cm4gQ29s
b3IgeyBhc0V4dGVuZGVkKCkuaW52ZXJ0ZWRDb2xvcldpdGhBbHBoYShhbHBoYSkgfTsKLQotICAg
IGF1dG8gW3IsIGcsIGIsIGV4aXN0aW5nQWxwaGFdID0gYXNTaW1wbGVDb2xvcigpOwotICAgIHJl
dHVybiB7IDB4RkYgLSByLCAweEZGIC0gZywgMHhGRiAtIGIsIGNvbG9yRmxvYXRUb1NpbXBsZUNv
bG9yQnl0ZShhbHBoYSkgfTsKKyAgICAgICAgcmV0dXJuIGFzRXh0ZW5kZWQoKS5pbnZlcnRlZENv
bG9yV2l0aEFscGhhKGFscGhhKTsKKyAgICByZXR1cm4gYXNTaW1wbGUoKS5pbnZlcnRlZENvbG9y
V2l0aEFscGhhKHNjYWxlUm91bmRBbmRDbGFtcENvbG9yQ2hhbm5lbChhbHBoYSkpOwogfQogCiBD
b2xvciBDb2xvcjo6c2VtYW50aWNDb2xvcigpIGNvbnN0CkBAIC0zMDgsMzggKzMwNiwyMyBAQCBD
b2xvciBDb2xvcjo6c2VtYW50aWNDb2xvcigpIGNvbnN0CiAKIHN0ZDo6cGFpcjxDb2xvclNwYWNl
LCBDb2xvckNvbXBvbmVudHM8ZmxvYXQ+PiBDb2xvcjo6Y29sb3JTcGFjZUFuZENvbXBvbmVudHMo
KSBjb25zdAogewotICAgIGlmIChpc0V4dGVuZGVkKCkpIHsKLSAgICAgICAgYXV0byYgZXh0ZW5k
ZWRDb2xvciA9IGFzRXh0ZW5kZWQoKTsKLSAgICAgICAgcmV0dXJuIHsgZXh0ZW5kZWRDb2xvci5j
b2xvclNwYWNlKCksIGV4dGVuZGVkQ29sb3IuY2hhbm5lbHMoKSB9OwotICAgIH0KLQotICAgIGF1
dG8gW3IsIGcsIGIsIGFdID0gYXNTaW1wbGVDb2xvcigpOwotICAgIHJldHVybiB7IENvbG9yU3Bh
Y2U6OlNSR0IsIENvbG9yQ29tcG9uZW50czxmbG9hdD4geyByIC8gMjU1LjBmLCBnIC8gMjU1LjBm
LCBiIC8gMjU1LjBmLCAgYSAvIDI1NS4wZiB9IH07CisgICAgaWYgKGlzRXh0ZW5kZWQoKSkKKyAg
ICAgICAgcmV0dXJuIHsgYXNFeHRlbmRlZCgpLmNvbG9yU3BhY2UoKSwgYXNFeHRlbmRlZCgpLmNv
bXBvbmVudHMoKSB9OworICAgIHJldHVybiB7IENvbG9yU3BhY2U6OlNSR0IsIGFzU2ltcGxlKCku
YXNTUkdCRmxvYXRDb21wb25lbnRzKCkgfTsKIH0KIAogU2ltcGxlQ29sb3IgQ29sb3I6OnRvU1JH
QkFTaW1wbGVDb2xvckxvc3N5KCkgY29uc3QKIHsKLSAgICBpZiAoaXNFeHRlbmRlZCgpKSB7Ci0g
ICAgICAgIGF1dG8gW3IsIGcsIGIsIGFdID0gdG9TUkdCQUNvbXBvbmVudHNMb3NzeSgpOwotICAg
ICAgICByZXR1cm4gbWFrZVNpbXBsZUNvbG9yRnJvbUZsb2F0cyhyLCBnLCBiLCBhKTsKLSAgICB9
Ci0KLSAgICByZXR1cm4gYXNTaW1wbGVDb2xvcigpOworICAgIGlmIChpc0V4dGVuZGVkKCkpCisg
ICAgICAgIHJldHVybiBtYWtlU2ltcGxlQ29sb3IodG9TUkdCQUNvbXBvbmVudHNMb3NzeSgpKTsK
KyAgICByZXR1cm4gYXNTaW1wbGUoKTsKIH0KIAogQ29sb3JDb21wb25lbnRzPGZsb2F0PiBDb2xv
cjo6dG9TUkdCQUNvbXBvbmVudHNMb3NzeSgpIGNvbnN0CiB7Ci0gICAgYXV0byBbY29sb3JTcGFj
ZSwgY29tcG9uZW50c10gPSBjb2xvclNwYWNlQW5kQ29tcG9uZW50cygpOwotICAgIHN3aXRjaCAo
Y29sb3JTcGFjZSkgewotICAgIGNhc2UgQ29sb3JTcGFjZTo6U1JHQjoKLSAgICAgICAgcmV0dXJu
IGNvbXBvbmVudHM7Ci0gICAgY2FzZSBDb2xvclNwYWNlOjpMaW5lYXJSR0I6Ci0gICAgICAgIHJl
dHVybiBsaW5lYXJUb1JHQkNvbXBvbmVudHMoY29tcG9uZW50cyk7Ci0gICAgY2FzZSBDb2xvclNw
YWNlOjpEaXNwbGF5UDM6Ci0gICAgICAgIHJldHVybiBwM1RvU1JHQihjb21wb25lbnRzKTsKLSAg
ICB9Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIHsgfTsKKyAgICBpZiAo
aXNFeHRlbmRlZCgpKQorICAgICAgICByZXR1cm4gYXNFeHRlbmRlZCgpLnRvU1JHQkFDb21wb25l
bnRzTG9zc3koKTsKKyAgICByZXR1cm4gYXNTaW1wbGUoKS5hc1NSR0JGbG9hdENvbXBvbmVudHMo
KTsKIH0KIAogYm9vbCBleHRlbmRlZENvbG9yc0VxdWFsKGNvbnN0IENvbG9yJiBhLCBjb25zdCBD
b2xvciYgYikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuaAko
cmV2aXNpb24gMjYyMzQ4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29s
b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMTQwLDExICsxNDAsMTEgQEAgcHVibGljOgogCiAgICAg
Ym9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gaXNFeHRlbmRlZCgpIHx8IChtX2NvbG9yRGF0
YS5zaW1wbGVDb2xvckFuZEZsYWdzICYgdmFsaWRTaW1wbGVDb2xvckJpdCk7IH0KIAotICAgIGJv
b2wgaXNPcGFxdWUoKSBjb25zdCB7IHJldHVybiBpc0V4dGVuZGVkKCkgPyBhc0V4dGVuZGVkKCku
YWxwaGEoKSA9PSAxLjAgOiBhc1NpbXBsZUNvbG9yKCkuaXNPcGFxdWUoKTsgfQotICAgIGJvb2wg
aXNWaXNpYmxlKCkgY29uc3QgeyByZXR1cm4gaXNFeHRlbmRlZCgpID8gYXNFeHRlbmRlZCgpLmFs
cGhhKCkgPiAwLjAgOiBhc1NpbXBsZUNvbG9yKCkuaXNWaXNpYmxlKCk7IH0KKyAgICBib29sIGlz
T3BhcXVlKCkgY29uc3QgeyByZXR1cm4gaXNFeHRlbmRlZCgpID8gYXNFeHRlbmRlZCgpLmFscGhh
KCkgPT0gMS4wIDogYXNTaW1wbGUoKS5pc09wYXF1ZSgpOyB9CisgICAgYm9vbCBpc1Zpc2libGUo
KSBjb25zdCB7IHJldHVybiBpc0V4dGVuZGVkKCkgPyBhc0V4dGVuZGVkKCkuYWxwaGEoKSA+IDAu
MCA6IGFzU2ltcGxlKCkuaXNWaXNpYmxlKCk7IH0KIAotICAgIGludCBhbHBoYSgpIGNvbnN0IHsg
cmV0dXJuIGlzRXh0ZW5kZWQoKSA/IGFzRXh0ZW5kZWQoKS5hbHBoYSgpICogMjU1IDogYXNTaW1w
bGVDb2xvcigpLmFscGhhQ29tcG9uZW50KCk7IH0KLSAgICBmbG9hdCBhbHBoYUFzRmxvYXQoKSBj
b25zdCB7IHJldHVybiBpc0V4dGVuZGVkKCkgPyBhc0V4dGVuZGVkKCkuYWxwaGEoKSA6IGFzU2lt
cGxlQ29sb3IoKS5hbHBoYUNvbXBvbmVudEFzRmxvYXQoKTsgfQorICAgIGludCBhbHBoYSgpIGNv
bnN0IHsgcmV0dXJuIGlzRXh0ZW5kZWQoKSA/IGFzRXh0ZW5kZWQoKS5hbHBoYSgpICogMjU1IDog
YXNTaW1wbGUoKS5hbHBoYUNvbXBvbmVudCgpOyB9CisgICAgZmxvYXQgYWxwaGFBc0Zsb2F0KCkg
Y29uc3QgeyByZXR1cm4gaXNFeHRlbmRlZCgpID8gYXNFeHRlbmRlZCgpLmFscGhhKCkgOiBhc1Np
bXBsZSgpLmFscGhhQ29tcG9uZW50QXNGbG9hdCgpOyB9CiAKICAgICB1bnNpZ25lZCBoYXNoKCkg
Y29uc3Q7CiAKQEAgLTIzMiw3ICsyMzIsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8Y2xhc3Mg
RGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPENvbG9yPiBkZWNvZGUoRGVjb2RlciYpOwogCiBwcml2
YXRlOgotICAgIGNvbnN0IFNpbXBsZUNvbG9yIGFzU2ltcGxlQ29sb3IoKSBjb25zdDsKKyAgICBj
b25zdCBTaW1wbGVDb2xvciBhc1NpbXBsZSgpIGNvbnN0OwogCiAgICAgdm9pZCBzZXRTaW1wbGVD
b2xvcihTaW1wbGVDb2xvcik7CiAgICAgdm9pZCBzZXRJc1NlbWFudGljKCkgeyBtX2NvbG9yRGF0
YS5zaW1wbGVDb2xvckFuZEZsYWdzIHw9IGlzU2VtYW50aWNTaW1wbGVDb2xvckJpdDsgfQpAQCAt
MzE4LDcgKzMxOCw3IEBAIGlubGluZSBjb25zdCBFeHRlbmRlZENvbG9yJiBDb2xvcjo6YXNFeHQK
ICAgICByZXR1cm4gKm1fY29sb3JEYXRhLmV4dGVuZGVkQ29sb3I7CiB9CiAKLWlubGluZSBjb25z
dCBTaW1wbGVDb2xvciBDb2xvcjo6YXNTaW1wbGVDb2xvcigpIGNvbnN0CitpbmxpbmUgY29uc3Qg
U2ltcGxlQ29sb3IgQ29sb3I6OmFzU2ltcGxlKCkgY29uc3QKIHsKICAgICBBU1NFUlQoIWlzRXh0
ZW5kZWQoKSk7CiAgICAgcmV0dXJuIHsgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KG1fY29sb3JEYXRh
LnNpbXBsZUNvbG9yQW5kRmxhZ3MgPj4gMzIpIH07CkBAIC0zMzQsMTQgKzMzNCwxNCBAQCBpbmxp
bmUgYm9vbCBDb2xvcjo6aXNCbGFja0NvbG9yKGNvbnN0IENvCiB7CiAgICAgaWYgKGNvbG9yLmlz
RXh0ZW5kZWQoKSkKICAgICAgICAgcmV0dXJuIGNvbG9yLmFzRXh0ZW5kZWQoKS5pc0JsYWNrKCk7
Ci0gICAgcmV0dXJuIGNvbG9yLmFzU2ltcGxlQ29sb3IoKSA9PSBDb2xvcjo6YmxhY2s7CisgICAg
cmV0dXJuIGNvbG9yLmFzU2ltcGxlKCkgPT0gQ29sb3I6OmJsYWNrOwogfQogCiBpbmxpbmUgYm9v
bCBDb2xvcjo6aXNXaGl0ZUNvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikKIHsKICAgICBpZiAoY29s
b3IuaXNFeHRlbmRlZCgpKQogICAgICAgICByZXR1cm4gY29sb3IuYXNFeHRlbmRlZCgpLmlzV2hp
dGUoKTsKLSAgICByZXR1cm4gY29sb3IuYXNTaW1wbGVDb2xvcigpID09IENvbG9yOjp3aGl0ZTsK
KyAgICByZXR1cm4gY29sb3IuYXNTaW1wbGUoKSA9PSBDb2xvcjo6d2hpdGU7CiB9CiAKIHRlbXBs
YXRlPGNsYXNzIEVuY29kZXI+CkBAIC0zNTEsNyArMzUxLDcgQEAgdm9pZCBDb2xvcjo6ZW5jb2Rl
KEVuY29kZXImIGVuY29kZXIpIGNvbgogICAgICAgICBlbmNvZGVyIDw8IHRydWU7CiAKICAgICAg
ICAgYXV0byYgZXh0ZW5kZWRDb2xvciA9IGFzRXh0ZW5kZWQoKTsKLSAgICAgICAgYXV0byBbYzEs
IGMyLCBjMywgYWxwaGFdID0gZXh0ZW5kZWRDb2xvci5jaGFubmVscygpOworICAgICAgICBhdXRv
IFtjMSwgYzIsIGMzLCBhbHBoYV0gPSBleHRlbmRlZENvbG9yLmNvbXBvbmVudHMoKTsKICAgICAg
ICAgZW5jb2RlciA8PCBjMTsKICAgICAgICAgZW5jb2RlciA8PCBjMjsKICAgICAgICAgZW5jb2Rl
ciA8PCBjMzsKQEAgLTM3MCw3ICszNzAsNyBAQCB2b2lkIENvbG9yOjplbmNvZGUoRW5jb2RlciYg
ZW5jb2RlcikgY29uCiAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGVuY29kZSB3aGV0aGVyIHRo
ZSBjb2xvciBpcyBzZW1hbnRpYy4KIAogICAgIGVuY29kZXIgPDwgdHJ1ZTsKLSAgICBlbmNvZGVy
IDw8IGFzU2ltcGxlQ29sb3IoKS52YWx1ZSgpOworICAgIGVuY29kZXIgPDwgYXNTaW1wbGUoKS52
YWx1ZSgpOwogfQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JDb21wb25lbnRzLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JDb21wb25lbnRzLmgJKHJldmlzaW9u
IDI2MjM0OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yQ29tcG9u
ZW50cy5oCSh3b3JraW5nIGNvcHkpCkBAIC00OSw2ICs0OSw5IEBAIHN0cnVjdCBDb2xvckNvbXBv
bmVudHMgewogCiAgICAgY29uc3RleHByIENvbG9yQ29tcG9uZW50cyBhYnMoKSBjb25zdDsKIAor
ICAgIGNvbnN0ZXhwciBUJiBvcGVyYXRvcltdKHNpemVfdCBpKSB7IHJldHVybiBjb21wb25lbnRz
W2ldOyB9CisgICAgY29uc3RleHByIGNvbnN0IFQmIG9wZXJhdG9yW10oc2l6ZV90IGkpIGNvbnN0
IHsgcmV0dXJuIGNvbXBvbmVudHNbaV07IH0KKwogICAgIHRlbXBsYXRlPHN0ZDo6c2l6ZV90IE4+
CiAgICAgY29uc3RleHByIFQgZ2V0KCkgY29uc3Q7CiAKQEAgLTU4LDEwICs2MSwxMCBAQCBzdHJ1
Y3QgQ29sb3JDb21wb25lbnRzIHsKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiBjb25zdGV4cHIgQ29s
b3JDb21wb25lbnRzPFQ+JiBDb2xvckNvbXBvbmVudHM8VD46Om9wZXJhdG9yKz0oY29uc3QgQ29s
b3JDb21wb25lbnRzJiByaHMpCiB7Ci0gICAgY29tcG9uZW50c1swXSArPSByaHMuY29tcG9uZW50
c1swXTsKLSAgICBjb21wb25lbnRzWzFdICs9IHJocy5jb21wb25lbnRzWzFdOwotICAgIGNvbXBv
bmVudHNbMl0gKz0gcmhzLmNvbXBvbmVudHNbMl07Ci0gICAgY29tcG9uZW50c1szXSArPSByaHMu
Y29tcG9uZW50c1szXTsKKyAgICBjb21wb25lbnRzWzBdICs9IHJoc1swXTsKKyAgICBjb21wb25l
bnRzWzFdICs9IHJoc1sxXTsKKyAgICBjb21wb25lbnRzWzJdICs9IHJoc1syXTsKKyAgICBjb21w
b25lbnRzWzNdICs9IHJoc1szXTsKICAgICByZXR1cm4gKnRoaXM7CiB9CiAKQEAgLTEyMCwxMCAr
MTIzLDEwIEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiBjb25zdGV4cHIgQ29sb3JDb21wb25lbnRz
PFQ+IHBlckNvbXBvbmVudE1heChjb25zdCBDb2xvckNvbXBvbmVudHM8VD4mIGEsIGNvbnN0IENv
bG9yQ29tcG9uZW50czxUPiYgYikKIHsKICAgICByZXR1cm4gewotICAgICAgICBzdGQ6Om1heChh
LmNvbXBvbmVudHNbMF0sIGIuY29tcG9uZW50c1swXSksCi0gICAgICAgIHN0ZDo6bWF4KGEuY29t
cG9uZW50c1sxXSwgYi5jb21wb25lbnRzWzFdKSwKLSAgICAgICAgc3RkOjptYXgoYS5jb21wb25l
bnRzWzJdLCBiLmNvbXBvbmVudHNbMl0pLAotICAgICAgICBzdGQ6Om1heChhLmNvbXBvbmVudHNb
M10sIGIuY29tcG9uZW50c1szXSkKKyAgICAgICAgc3RkOjptYXgoYVswXSwgYlswXSksCisgICAg
ICAgIHN0ZDo6bWF4KGFbMV0sIGJbMV0pLAorICAgICAgICBzdGQ6Om1heChhWzJdLCBiWzJdKSwK
KyAgICAgICAgc3RkOjptYXgoYVszXSwgYlszXSkKICAgICB9OwogfQogCkBAIC0xMzEsMTAgKzEz
NCwxMCBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogY29uc3RleHByIENvbG9yQ29tcG9uZW50czxU
PiBwZXJDb21wb25lbnRNaW4oY29uc3QgQ29sb3JDb21wb25lbnRzPFQ+JiBhLCBjb25zdCBDb2xv
ckNvbXBvbmVudHM8VD4mIGIpCiB7CiAgICAgcmV0dXJuIHsKLSAgICAgICAgc3RkOjptaW4oYS5j
b21wb25lbnRzWzBdLCBiLmNvbXBvbmVudHNbMF0pLAotICAgICAgICBzdGQ6Om1pbihhLmNvbXBv
bmVudHNbMV0sIGIuY29tcG9uZW50c1sxXSksCi0gICAgICAgIHN0ZDo6bWluKGEuY29tcG9uZW50
c1syXSwgYi5jb21wb25lbnRzWzJdKSwKLSAgICAgICAgc3RkOjptaW4oYS5jb21wb25lbnRzWzNd
LCBiLmNvbXBvbmVudHNbM10pCisgICAgICAgIHN0ZDo6bWluKGFbMF0sIGJbMF0pLAorICAgICAg
ICBzdGQ6Om1pbihhWzFdLCBiWzFdKSwKKyAgICAgICAgc3RkOjptaW4oYVsyXSwgYlsyXSksCisg
ICAgICAgIHN0ZDo6bWluKGFbM10sIGJbM10pCiAgICAgfTsKIH0KIApJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JNYXRyaXguaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvck1hdHJpeC5oCShyZXZpc2lvbiAyNjIz
NDgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvck1hdHJpeC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xMTUsMTcgKzExNSwxNyBAQCBjb25zdGV4cHIgQ29sb3JDb21wb25l
bnRzPGZsb2F0PiBDb2xvck1hCiAgICAgZm9yIChzaXplX3Qgcm93ID0gMDsgcm93IDwgUm93czsg
Kytyb3cpIHsKICAgICAgICAgaWYgY29uc3RleHByIChDb2x1bW5zIDw9IENvbG9yQ29tcG9uZW50
czxmbG9hdD46OlNpemUpIHsKICAgICAgICAgICAgIGZvciAoc2l6ZV90IGNvbHVtbiA9IDA7IGNv
bHVtbiA8IENvbHVtbnM7ICsrY29sdW1uKQotICAgICAgICAgICAgICAgIHJlc3VsdC5jb21wb25l
bnRzW3Jvd10gKz0gYXQocm93LCBjb2x1bW4pICogaW5wdXRWZWN0b3IuY29tcG9uZW50c1tjb2x1
bW5dOworICAgICAgICAgICAgICAgIHJlc3VsdFtyb3ddICs9IGF0KHJvdywgY29sdW1uKSAqIGlu
cHV0VmVjdG9yW2NvbHVtbl07CiAgICAgICAgIH0gZWxzZSBpZiBjb25zdGV4cHIgKENvbHVtbnMg
PiBDb2xvckNvbXBvbmVudHM8ZmxvYXQ+OjpTaXplKSB7CiAgICAgICAgICAgICBmb3IgKHNpemVf
dCBjb2x1bW4gPSAwOyBjb2x1bW4gPCBDb2xvckNvbXBvbmVudHM8ZmxvYXQ+OjpTaXplOyArK2Nv
bHVtbikKLSAgICAgICAgICAgICAgICByZXN1bHQuY29tcG9uZW50c1tyb3ddICs9IGF0KHJvdywg
Y29sdW1uKSAqIGlucHV0VmVjdG9yLmNvbXBvbmVudHNbY29sdW1uXTsKKyAgICAgICAgICAgICAg
ICByZXN1bHRbcm93XSArPSBhdChyb3csIGNvbHVtbikgKiBpbnB1dFZlY3Rvcltjb2x1bW5dOwog
ICAgICAgICAgICAgZm9yIChzaXplX3QgYWRkaXRpb25hbENvbHVtbiA9IENvbG9yQ29tcG9uZW50
czxmbG9hdD46OlNpemU7IGFkZGl0aW9uYWxDb2x1bW4gPCBDb2x1bW5zOyArK2FkZGl0aW9uYWxD
b2x1bW4pCi0gICAgICAgICAgICAgICAgcmVzdWx0LmNvbXBvbmVudHNbcm93XSArPSBhdChyb3cs
IGFkZGl0aW9uYWxDb2x1bW4pOworICAgICAgICAgICAgICAgIHJlc3VsdFtyb3ddICs9IGF0KHJv
dywgYWRkaXRpb25hbENvbHVtbik7CiAgICAgICAgIH0KICAgICB9CiAgICAgaWYgY29uc3RleHBy
IChDb2xvckNvbXBvbmVudHM8ZmxvYXQ+OjpTaXplID4gUm93cykgewogICAgICAgICBmb3IgKHNp
emVfdCBhZGRpdGlvbmFsUm93ID0gUm93czsgYWRkaXRpb25hbFJvdyA8IENvbG9yQ29tcG9uZW50
czxmbG9hdD46OlNpemU7ICsrYWRkaXRpb25hbFJvdykKLSAgICAgICAgICAgIHJlc3VsdC5jb21w
b25lbnRzW2FkZGl0aW9uYWxSb3ddID0gaW5wdXRWZWN0b3IuY29tcG9uZW50c1thZGRpdGlvbmFs
Um93XTsKKyAgICAgICAgICAgIHJlc3VsdFthZGRpdGlvbmFsUm93XSA9IGlucHV0VmVjdG9yW2Fk
ZGl0aW9uYWxSb3ddOwogICAgIH0KIAogICAgIHJldHVybiByZXN1bHQ7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclV0aWxpdGllcy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JVdGlsaXRpZXMuY3BwCShy
ZXZpc2lvbiAyNjIzNDgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xv
clV0aWxpdGllcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDEwICszMywxMCBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGJvb2wgYXJlRXNzZW50aWFsbHlFcXVhbChjb25zdCBDb2xvckNvbXBv
bmVudHM8ZmxvYXQ+JiBhLCBjb25zdCBDb2xvckNvbXBvbmVudHM8ZmxvYXQ+JiBiKQogewotICAg
IHJldHVybiBXVEY6OmFyZUVzc2VudGlhbGx5RXF1YWwoYS5jb21wb25lbnRzWzBdLCBiLmNvbXBv
bmVudHNbMF0pCi0gICAgICAgICYmIFdURjo6YXJlRXNzZW50aWFsbHlFcXVhbChhLmNvbXBvbmVu
dHNbMV0sIGIuY29tcG9uZW50c1sxXSkKLSAgICAgICAgJiYgV1RGOjphcmVFc3NlbnRpYWxseUVx
dWFsKGEuY29tcG9uZW50c1syXSwgYi5jb21wb25lbnRzWzJdKQotICAgICAgICAmJiBXVEY6OmFy
ZUVzc2VudGlhbGx5RXF1YWwoYS5jb21wb25lbnRzWzNdLCBiLmNvbXBvbmVudHNbM10pOworICAg
IHJldHVybiBXVEY6OmFyZUVzc2VudGlhbGx5RXF1YWwoYVswXSwgYlswXSkKKyAgICAgICAgJiYg
V1RGOjphcmVFc3NlbnRpYWxseUVxdWFsKGFbMV0sIGJbMV0pCisgICAgICAgICYmIFdURjo6YXJl
RXNzZW50aWFsbHlFcXVhbChhWzJdLCBiWzJdKQorICAgICAgICAmJiBXVEY6OmFyZUVzc2VudGlh
bGx5RXF1YWwoYVszXSwgYlszXSk7CiB9CiAKIC8vIFRoZXNlIGFyZSB0aGUgc3RhbmRhcmQgc1JH
QiA8LT4gbGluZWFyUkdCIGNvbnZlcnNpb24gZnVuY3Rpb25zIChodHRwczovL2VuLndpa2lwZWRp
YS5vcmcvd2lraS9TUkdCKS4KQEAgLTU5LDIwICs1OSwyMCBAQCBmbG9hdCByZ2JUb0xpbmVhckNv
bG9yQ29tcG9uZW50KGZsb2F0IGMpCiBDb2xvckNvbXBvbmVudHM8ZmxvYXQ+IHJnYlRvTGluZWFy
Q29tcG9uZW50cyhjb25zdCBDb2xvckNvbXBvbmVudHM8ZmxvYXQ+JiBSR0JDb2xvcikKIHsKICAg
ICByZXR1cm4gewotICAgICAgICByZ2JUb0xpbmVhckNvbG9yQ29tcG9uZW50KFJHQkNvbG9yLmNv
bXBvbmVudHNbMF0pLAotICAgICAgICByZ2JUb0xpbmVhckNvbG9yQ29tcG9uZW50KFJHQkNvbG9y
LmNvbXBvbmVudHNbMV0pLAotICAgICAgICByZ2JUb0xpbmVhckNvbG9yQ29tcG9uZW50KFJHQkNv
bG9yLmNvbXBvbmVudHNbMl0pLAotICAgICAgICBSR0JDb2xvci5jb21wb25lbnRzWzNdCisgICAg
ICAgIHJnYlRvTGluZWFyQ29sb3JDb21wb25lbnQoUkdCQ29sb3JbMF0pLAorICAgICAgICByZ2JU
b0xpbmVhckNvbG9yQ29tcG9uZW50KFJHQkNvbG9yWzFdKSwKKyAgICAgICAgcmdiVG9MaW5lYXJD
b2xvckNvbXBvbmVudChSR0JDb2xvclsyXSksCisgICAgICAgIFJHQkNvbG9yWzNdCiAgICAgfTsK
IH0KIAogQ29sb3JDb21wb25lbnRzPGZsb2F0PiBsaW5lYXJUb1JHQkNvbXBvbmVudHMoY29uc3Qg
Q29sb3JDb21wb25lbnRzPGZsb2F0PiYgbGluZWFyUkdCKQogewogICAgIHJldHVybiB7Ci0gICAg
ICAgIGxpbmVhclRvUkdCQ29sb3JDb21wb25lbnQobGluZWFyUkdCLmNvbXBvbmVudHNbMF0pLAot
ICAgICAgICBsaW5lYXJUb1JHQkNvbG9yQ29tcG9uZW50KGxpbmVhclJHQi5jb21wb25lbnRzWzFd
KSwKLSAgICAgICAgbGluZWFyVG9SR0JDb2xvckNvbXBvbmVudChsaW5lYXJSR0IuY29tcG9uZW50
c1syXSksCi0gICAgICAgIGxpbmVhclJHQi5jb21wb25lbnRzWzNdCisgICAgICAgIGxpbmVhclRv
UkdCQ29sb3JDb21wb25lbnQobGluZWFyUkdCWzBdKSwKKyAgICAgICAgbGluZWFyVG9SR0JDb2xv
ckNvbXBvbmVudChsaW5lYXJSR0JbMV0pLAorICAgICAgICBsaW5lYXJUb1JHQkNvbG9yQ29tcG9u
ZW50KGxpbmVhclJHQlsyXSksCisgICAgICAgIGxpbmVhclJHQlszXQogICAgIH07CiB9CiAKQEAg
LTE0Miw4ICsxNDIsNyBAQCBmbG9hdCBsaWdodG5lc3MoY29uc3QgQ29sb3JDb21wb25lbnRzPGZs
CiB7CiAgICAgYXV0byBbciwgZywgYiwgYV0gPSBzUkdCQ29tcG9udGVudHM7CiAKLSAgICBmbG9h
dCBtYXggPSBzdGQ6Om1heCh7IHIsIGcsIGIgfSk7Ci0gICAgZmxvYXQgbWluID0gc3RkOjptaW4o
eyByLCBnLCBiIH0pOworICAgIGF1dG8gW21pbiwgbWF4XSA9IHN0ZDo6bWlubWF4KHsgciwgZywg
YiB9KTsKIAogICAgIHJldHVybiAwLjVmICogKG1heCArIG1pbik7CiB9CkBAIC0xNjIsOSArMTYx
LDkgQEAgc3RhdGljIGZsb2F0IHNSR0JUb0xpbmVhckNvbG9yQ29tcG9uZW50RgogZmxvYXQgbHVt
aW5hbmNlKGNvbnN0IENvbG9yQ29tcG9uZW50czxmbG9hdD4mIHNSR0JDb21wb25lbnRzKQogewog
ICAgIC8vIFZhbHVlcyBmcm9tIGh0dHBzOi8vd3d3LnczLm9yZy9UUi8yMDA4L1JFQy1XQ0FHMjAt
MjAwODEyMTEvI3JlbGF0aXZlbHVtaW5hbmNlZGVmCi0gICAgcmV0dXJuIDAuMjEyNmYgKiBzUkdC
VG9MaW5lYXJDb2xvckNvbXBvbmVudEZvckx1bWluYW5jZShzUkdCQ29tcG9uZW50cy5jb21wb25l
bnRzWzBdKQotICAgICAgICArIDAuNzE1MmYgKiBzUkdCVG9MaW5lYXJDb2xvckNvbXBvbmVudEZv
ckx1bWluYW5jZShzUkdCQ29tcG9uZW50cy5jb21wb25lbnRzWzFdKQotICAgICAgICArIDAuMDcy
MmYgKiBzUkdCVG9MaW5lYXJDb2xvckNvbXBvbmVudEZvckx1bWluYW5jZShzUkdCQ29tcG9uZW50
cy5jb21wb25lbnRzWzJdKTsKKyAgICByZXR1cm4gMC4yMTI2ZiAqIHNSR0JUb0xpbmVhckNvbG9y
Q29tcG9uZW50Rm9yTHVtaW5hbmNlKHNSR0JDb21wb25lbnRzWzBdKQorICAgICAgICArIDAuNzE1
MmYgKiBzUkdCVG9MaW5lYXJDb2xvckNvbXBvbmVudEZvckx1bWluYW5jZShzUkdCQ29tcG9uZW50
c1sxXSkKKyAgICAgICAgKyAwLjA3MjJmICogc1JHQlRvTGluZWFyQ29sb3JDb21wb25lbnRGb3JM
dW1pbmFuY2Uoc1JHQkNvbXBvbmVudHNbMl0pOwogfQogCiBmbG9hdCBjb250cmFzdFJhdGlvKGNv
bnN0IENvbG9yQ29tcG9uZW50czxmbG9hdD4mIGNvbXBvbmVudHNBLCBjb25zdCBDb2xvckNvbXBv
bmVudHM8ZmxvYXQ+JiBjb21wb25lbnRzQikKQEAgLTE4NSw4ICsxODQsNyBAQCBDb2xvckNvbXBv
bmVudHM8ZmxvYXQ+IHNSR0JUb0hTTChjb25zdCBDCiAgICAgLy8gaHR0cDovL2VuLndpa2lwZWRp
YS5vcmcvd2lraS9IU0xfY29sb3Jfc3BhY2UuCiAgICAgYXV0byBbciwgZywgYiwgYWxwaGFdID0g
c1JHQkNvbXBvbnRlbnRzOwogCi0gICAgZmxvYXQgbWF4ID0gc3RkOjptYXgoeyByLCBnLCBiIH0p
OwotICAgIGZsb2F0IG1pbiA9IHN0ZDo6bWluKHsgciwgZywgYiB9KTsKKyAgICBhdXRvIFttaW4s
IG1heF0gPSBzdGQ6Om1pbm1heCh7IHIsIGcsIGIgfSk7CiAgICAgZmxvYXQgY2hyb21hID0gbWF4
IC0gbWluOwogCiAgICAgZmxvYXQgaHVlOwpAQCAtMjQyLDkgKzI0MCw3IEBAIHN0YXRpYyBmbG9h
dCBjYWxjSHVlKGZsb2F0IHRlbXAxLCBmbG9hdCAKIC8vIGZ1cnRoZXIgZXhwbGFuYXRpb24gYXZh
aWxhYmxlIGF0IGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSFNMX2NvbG9yX3NwYWNlCiBD
b2xvckNvbXBvbmVudHM8ZmxvYXQ+IGhzbFRvU1JHQihjb25zdCBDb2xvckNvbXBvbmVudHM8Zmxv
YXQ+JiBoc2xDb2xvcikKIHsKLSAgICBmbG9hdCBodWUgPSBoc2xDb2xvci5jb21wb25lbnRzWzBd
OwotICAgIGZsb2F0IHNhdHVyYXRpb24gPSBoc2xDb2xvci5jb21wb25lbnRzWzFdOwotICAgIGZs
b2F0IGxpZ2h0bmVzcyA9IGhzbENvbG9yLmNvbXBvbmVudHNbMl07CisgICAgYXV0byBbaHVlLCBz
YXR1cmF0aW9uLCBsaWdodG5lc3MsIGFscGhhXSA9IGhzbENvbG9yOwogCiAgICAgLy8gQ29udmVy
dCBiYWNrIHRvIFJHQi4KICAgICBpZiAoIXNhdHVyYXRpb24pIHsKQEAgLTI1Miw3ICsyNDgsNyBA
QCBDb2xvckNvbXBvbmVudHM8ZmxvYXQ+IGhzbFRvU1JHQihjb25zdCBDCiAgICAgICAgICAgICBs
aWdodG5lc3MsCiAgICAgICAgICAgICBsaWdodG5lc3MsCiAgICAgICAgICAgICBsaWdodG5lc3Ms
Ci0gICAgICAgICAgICBoc2xDb2xvci5jb21wb25lbnRzWzNdCisgICAgICAgICAgICBhbHBoYQog
ICAgICAgICB9OwogICAgIH0KICAgICAKQEAgLTI2NCw3ICsyNjAsNyBAQCBDb2xvckNvbXBvbmVu
dHM8ZmxvYXQ+IGhzbFRvU1JHQihjb25zdCBDCiAgICAgICAgIGNhbGNIdWUodGVtcDEsIHRlbXAy
LCBodWUgKyAyLjBmKSwKICAgICAgICAgY2FsY0h1ZSh0ZW1wMSwgdGVtcDIsIGh1ZSksCiAgICAg
ICAgIGNhbGNIdWUodGVtcDEsIHRlbXAyLCBodWUgLSAyLjBmKSwKLSAgICAgICAgaHNsQ29sb3Iu
Y29tcG9uZW50c1szXQorICAgICAgICBhbHBoYQogICAgIH07CiB9CiAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yVXRpbGl0aWVzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JVdGlsaXRpZXMuaAkocmV2aXNp
b24gMjYyMzQ4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JVdGls
aXRpZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNjMsNiArNjMsMTYgQEAgaW5saW5lIHVpbnQ4X3Qg
cm91bmRBbmRDbGFtcENvbG9yQ2hhbm5lbAogICAgIHJldHVybiBzdGQ6OmNsYW1wKHN0ZDo6cm91
bmQodmFsdWUpLCAwLmYsIDI1NS5mKTsKIH0KIAoraW5saW5lIHVpbnQ4X3Qgc2NhbGVSb3VuZEFu
ZENsYW1wQ29sb3JDaGFubmVsKGZsb2F0IGYpCit7CisgICAgcmV0dXJuIHN0ZDo6Y2xhbXAoc3Rh
dGljX2Nhc3Q8aW50Pihscm91bmRmKDI1NS4wZiAqIGYpKSwgMCwgMjU1KTsKK30KKworaW5saW5l
IHVpbnQ4X3Qgc2NhbGVSb3VuZEFuZENsYW1wQ29sb3JDaGFubmVsVXNpbmdBbHRlcm5hdGl2ZVJv
dW5kaW5nKGZsb2F0IGYpCit7CisgICAgcmV0dXJuIHN0ZDo6Y2xhbXAoc3RhdGljX2Nhc3Q8aW50
PihzdGQ6OnJvdW5kKGYgKiAyNTUuMCkpLCAwLCAyNTUpOworfQorCiBjb25zdGV4cHIgdWludDE2
X3QgZmFzdE11bHRpcGx5QnkyNTUodWludDE2X3QgdmFsdWUpCiB7CiAgICAgcmV0dXJuICh2YWx1
ZSA8PCA4KSAtIHZhbHVlOwpAQCAtNzcsOSArODcsNSBAQCBjb25zdGV4cHIgdWludDE2X3QgZmFz
dERpdmlkZUJ5MjU1KHVpbnQxCiAgICAgcmV0dXJuIGFwcHJveGltYXRpb24gKyAocmVtYWluZGVy
ID4+IDgpOwogfQogCi1pbmxpbmUgdWludDhfdCBjb2xvckZsb2F0VG9TaW1wbGVDb2xvckJ5dGUo
ZmxvYXQgZikKLXsKLSAgICByZXR1cm4gc3RkOjpjbGFtcChzdGF0aWNfY2FzdDxpbnQ+KGxyb3Vu
ZGYoMjU1LjBmICogZikpLCAwLCAyNTUpOwotfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRlbmRlZENvbG9yLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRlbmRlZENv
bG9yLmNwcAkocmV2aXNpb24gMjYyMzQ4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRXh0ZW5kZWRDb2xvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAK
ICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJFeHRlbmRlZENvbG9yLmgiCiAKKyNpbmNs
dWRlICJDb2xvclV0aWxpdGllcy5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoZXIuaD4KICNpbmNsdWRl
IDx3dGYvTWF0aEV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRl
TnVtYmVycy5oPgpAQCAtMzksNyArNDAsNyBAQCBSZWY8RXh0ZW5kZWRDb2xvcj4gRXh0ZW5kZWRD
b2xvcjo6Y3JlYXRlCiAKIHVuc2lnbmVkIEV4dGVuZGVkQ29sb3I6Omhhc2goKSBjb25zdAogewot
ICAgIGF1dG8gW2MxLCBjMiwgYzMsIGFscGhhXSA9IGNoYW5uZWxzKCk7CisgICAgYXV0byBbYzEs
IGMyLCBjMywgYWxwaGFdID0gY29tcG9uZW50cygpOwogICAgIHJldHVybiBjb21wdXRlSGFzaChj
MSwgYzIsIGMzLCBhbHBoYSwgbV9jb2xvclNwYWNlKTsKIH0KIApAQCAtNTgsNyArNTksNyBAQCBT
dHJpbmcgRXh0ZW5kZWRDb2xvcjo6Y3NzVGV4dCgpIGNvbnN0CiAgICAgICAgIHJldHVybiBXVEY6
OmVtcHR5U3RyaW5nKCk7CiAgICAgfQogCi0gICAgYXV0byBbYzEsIGMyLCBjMywgZXhpc3RpbmdB
bHBoYV0gPSBjaGFubmVscygpOworICAgIGF1dG8gW2MxLCBjMiwgYzMsIGV4aXN0aW5nQWxwaGFd
ID0gY29tcG9uZW50cygpOwogCiAgICAgaWYgKFdURjo6YXJlRXNzZW50aWFsbHlFcXVhbChhbHBo
YSgpLCAxLjBmKSkKICAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmcoImNvbG9yKCIsIGNvbG9yU3Bh
Y2UsICcgJywgYzEsICcgJywgYzIsICcgJywgYzMsICcpJyk7CkBAIC02OCwyNSArNjksMzkgQEAg
U3RyaW5nIEV4dGVuZGVkQ29sb3I6OmNzc1RleHQoKSBjb25zdAogCiBSZWY8RXh0ZW5kZWRDb2xv
cj4gRXh0ZW5kZWRDb2xvcjo6Y29sb3JXaXRoQWxwaGEoZmxvYXQgb3ZlcnJpZGVBbHBoYSkgY29u
c3QKIHsKLSAgICBhdXRvIFtjMSwgYzIsIGMzLCBleGlzdGluZ0FscGhhXSA9IGNoYW5uZWxzKCk7
CisgICAgYXV0byBbYzEsIGMyLCBjMywgZXhpc3RpbmdBbHBoYV0gPSBjb21wb25lbnRzKCk7CiAg
ICAgcmV0dXJuIEV4dGVuZGVkQ29sb3I6OmNyZWF0ZShjMSwgYzIsIGMzLCBvdmVycmlkZUFscGhh
LCBjb2xvclNwYWNlKCkpOwogfQogCiBSZWY8RXh0ZW5kZWRDb2xvcj4gRXh0ZW5kZWRDb2xvcjo6
aW52ZXJ0ZWRDb2xvcldpdGhBbHBoYShmbG9hdCBvdmVycmlkZUFscGhhKSBjb25zdAogewotICAg
IGF1dG8gW2MxLCBjMiwgYzMsIGV4aXN0aW5nQWxwaGFdID0gY2hhbm5lbHMoKTsKKyAgICBhdXRv
IFtjMSwgYzIsIGMzLCBleGlzdGluZ0FscGhhXSA9IGNvbXBvbmVudHMoKTsKICAgICByZXR1cm4g
RXh0ZW5kZWRDb2xvcjo6Y3JlYXRlKDEuMGYgLSBjMSwgMS4wZiAtIGMyLCAxLjBmIC0gYzMsIG92
ZXJyaWRlQWxwaGEsIGNvbG9yU3BhY2UoKSk7CiB9CiAKK0NvbG9yQ29tcG9uZW50czxmbG9hdD4g
RXh0ZW5kZWRDb2xvcjo6dG9TUkdCQUNvbXBvbmVudHNMb3NzeSgpIGNvbnN0Cit7CisgICAgc3dp
dGNoIChtX2NvbG9yU3BhY2UpIHsKKyAgICBjYXNlIENvbG9yU3BhY2U6OlNSR0I6CisgICAgICAg
IHJldHVybiBtX2NvbXBvbmVudHM7CisgICAgY2FzZSBDb2xvclNwYWNlOjpMaW5lYXJSR0I6Cisg
ICAgICAgIHJldHVybiBsaW5lYXJUb1JHQkNvbXBvbmVudHMobV9jb21wb25lbnRzKTsKKyAgICBj
YXNlIENvbG9yU3BhY2U6OkRpc3BsYXlQMzoKKyAgICAgICAgcmV0dXJuIHAzVG9TUkdCKG1fY29t
cG9uZW50cyk7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiB7
IH07Cit9CisKIGJvb2wgRXh0ZW5kZWRDb2xvcjo6aXNXaGl0ZSgpIGNvbnN0CiB7Ci0gICAgYXV0
byBbYzEsIGMyLCBjMywgYWxwaGFdID0gY2hhbm5lbHMoKTsKKyAgICBhdXRvIFtjMSwgYzIsIGMz
LCBhbHBoYV0gPSBjb21wb25lbnRzKCk7CiAgICAgcmV0dXJuIGMxID09IDEgJiYgYzIgPT0gMSAm
JiBjMyA9PSAxICYmIGFscGhhID09IDE7CiB9CiAKIGJvb2wgRXh0ZW5kZWRDb2xvcjo6aXNCbGFj
aygpIGNvbnN0CiB7Ci0gICAgYXV0byBbYzEsIGMyLCBjMywgYWxwaGFdID0gY2hhbm5lbHMoKTsK
KyAgICBhdXRvIFtjMSwgYzIsIGMzLCBhbHBoYV0gPSBjb21wb25lbnRzKCk7CiAgICAgcmV0dXJu
ICFjMSAmJiAhYzIgJiYgIWMzICYmIGFscGhhID09IDE7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0V4dGVuZGVkQ29sb3IuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRlbmRlZENvbG9yLmgJKHJldmlzaW9uIDI2
MjM0OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0V4dGVuZGVkQ29sb3Iu
aAkod29ya2luZyBjb3B5KQpAQCAtMzcsOSArMzcsOSBAQCBjbGFzcyBFeHRlbmRlZENvbG9yIDog
cHVibGljIFJlZkNvdW50ZWQ8CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxFeHRlbmRlZENvbG9y
PiBjcmVhdGUoZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQgYWxwaGEsIENvbG9yU3BhY2UgPSBD
b2xvclNwYWNlOjpTUkdCKTsKIAotICAgIGZsb2F0IGFscGhhKCkgY29uc3QgeyByZXR1cm4gbV9j
aGFubmVscy5jb21wb25lbnRzWzNdOyB9CisgICAgZmxvYXQgYWxwaGEoKSBjb25zdCB7IHJldHVy
biBtX2NvbXBvbmVudHNbM107IH0KIAotICAgIGNvbnN0IENvbG9yQ29tcG9uZW50czxmbG9hdD4m
IGNoYW5uZWxzKCkgY29uc3QgeyByZXR1cm4gbV9jaGFubmVsczsgfQorICAgIGNvbnN0IENvbG9y
Q29tcG9uZW50czxmbG9hdD4mIGNvbXBvbmVudHMoKSBjb25zdCB7IHJldHVybiBtX2NvbXBvbmVu
dHM7IH0KICAgICBDb2xvclNwYWNlIGNvbG9yU3BhY2UoKSBjb25zdCB7IHJldHVybiBtX2NvbG9y
U3BhY2U7IH0KIAogICAgIFdFQkNPUkVfRVhQT1JUIHVuc2lnbmVkIGhhc2goKSBjb25zdDsKQEAg
LTQ5LDIyICs0OSwyNCBAQCBwdWJsaWM6CiAgICAgUmVmPEV4dGVuZGVkQ29sb3I+IGNvbG9yV2l0
aEFscGhhKGZsb2F0KSBjb25zdDsKICAgICBSZWY8RXh0ZW5kZWRDb2xvcj4gaW52ZXJ0ZWRDb2xv
cldpdGhBbHBoYShmbG9hdCkgY29uc3Q7CiAKKyAgICBDb2xvckNvbXBvbmVudHM8ZmxvYXQ+IHRv
U1JHQkFDb21wb25lbnRzTG9zc3koKSBjb25zdDsKKwogICAgIGJvb2wgaXNXaGl0ZSgpIGNvbnN0
OwogICAgIGJvb2wgaXNCbGFjaygpIGNvbnN0OwogCiBwcml2YXRlOgogICAgIEV4dGVuZGVkQ29s
b3IoZmxvYXQgYzEsIGZsb2F0IGMyLCBmbG9hdCBjMywgZmxvYXQgYWxwaGEsIENvbG9yU3BhY2Ug
Y29sb3JTcGFjZSkKLSAgICAgICAgOiBtX2NoYW5uZWxzKGMxLCBjMiwgYzMsIGFscGhhKQorICAg
ICAgICA6IG1fY29tcG9uZW50cyhjMSwgYzIsIGMzLCBhbHBoYSkKICAgICAgICAgLCBtX2NvbG9y
U3BhY2UoY29sb3JTcGFjZSkKICAgICB7IH0KIAotICAgIENvbG9yQ29tcG9uZW50czxmbG9hdD4g
bV9jaGFubmVsczsKKyAgICBDb2xvckNvbXBvbmVudHM8ZmxvYXQ+IG1fY29tcG9uZW50czsKICAg
ICBDb2xvclNwYWNlIG1fY29sb3JTcGFjZSB7IENvbG9yU3BhY2U6OlNSR0IgfTsKIH07CiAKIGlu
bGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgRXh0ZW5kZWRDb2xvciYgYSwgY29uc3QgRXh0ZW5k
ZWRDb2xvciYgYikKIHsKLSAgICByZXR1cm4gYS5jb2xvclNwYWNlKCkgPT0gYi5jb2xvclNwYWNl
KCkgJiYgYS5jaGFubmVscygpID09IGIuY2hhbm5lbHMoKTsKKyAgICByZXR1cm4gYS5jb2xvclNw
YWNlKCkgPT0gYi5jb2xvclNwYWNlKCkgJiYgYS5jb21wb25lbnRzKCkgPT0gYi5jb21wb25lbnRz
KCk7CiB9CiAKIGlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgRXh0ZW5kZWRDb2xvciYgYSwg
Y29uc3QgRXh0ZW5kZWRDb2xvciYgYikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1NpbXBsZUNvbG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9TaW1wbGVDb2xvci5jcHAJKHJldmlzaW9uIDI2MjM0OCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NpbXBsZUNvbG9yLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNjksMTggKzY5LDIzIEBAIFNpbXBsZUNvbG9yIG1ha2VVbnByZW11bHRpcGxpZWRTaW1w
bGVDb2wKIAogU2ltcGxlQ29sb3IgbWFrZVNpbXBsZUNvbG9yRnJvbUZsb2F0cyhmbG9hdCByLCBm
bG9hdCBnLCBmbG9hdCBiLCBmbG9hdCBhKQogewotICAgIHJldHVybiBtYWtlU2ltcGxlQ29sb3Io
Y29sb3JGbG9hdFRvU2ltcGxlQ29sb3JCeXRlKHIpLCBjb2xvckZsb2F0VG9TaW1wbGVDb2xvckJ5
dGUoZyksIGNvbG9yRmxvYXRUb1NpbXBsZUNvbG9yQnl0ZShiKSwgY29sb3JGbG9hdFRvU2ltcGxl
Q29sb3JCeXRlKGEpKTsKKyAgICByZXR1cm4gbWFrZVNpbXBsZUNvbG9yKAorICAgICAgICBzY2Fs
ZVJvdW5kQW5kQ2xhbXBDb2xvckNoYW5uZWwociksCisgICAgICAgIHNjYWxlUm91bmRBbmRDbGFt
cENvbG9yQ2hhbm5lbChnKSwKKyAgICAgICAgc2NhbGVSb3VuZEFuZENsYW1wQ29sb3JDaGFubmVs
KGIpLAorICAgICAgICBzY2FsZVJvdW5kQW5kQ2xhbXBDb2xvckNoYW5uZWwoYSkKKyAgICApOwog
fQogCiBTaW1wbGVDb2xvciBtYWtlU2ltcGxlQ29sb3JGcm9tSFNMQShmbG9hdCBodWUsIGZsb2F0
IHNhdHVyYXRpb24sIGZsb2F0IGxpZ2h0bmVzcywgZmxvYXQgYWxwaGEpCiB7Ci0gICAgY29uc3Qg
ZmxvYXQgc2NhbGVGYWN0b3IgPSAyNTUuMDsKLSAgICBhdXRvIGZsb2F0UmVzdWx0ID0gaHNsVG9T
UkdCKHsgaHVlLCBzYXR1cmF0aW9uLCBsaWdodG5lc3MsIGFscGhhIH0pOworICAgIGF1dG8gW3Is
IGcsIGIsIGFdID0gaHNsVG9TUkdCKHsgaHVlLCBzYXR1cmF0aW9uLCBsaWdodG5lc3MsIGFscGhh
IH0pOwogICAgIHJldHVybiBtYWtlU2ltcGxlQ29sb3IoCi0gICAgICAgIHJvdW5kKGZsb2F0UmVz
dWx0LmNvbXBvbmVudHNbMF0gKiBzY2FsZUZhY3RvciksCi0gICAgICAgIHJvdW5kKGZsb2F0UmVz
dWx0LmNvbXBvbmVudHNbMV0gKiBzY2FsZUZhY3RvciksCi0gICAgICAgIHJvdW5kKGZsb2F0UmVz
dWx0LmNvbXBvbmVudHNbMl0gKiBzY2FsZUZhY3RvciksCi0gICAgICAgIHJvdW5kKGZsb2F0UmVz
dWx0LmNvbXBvbmVudHNbM10gKiBzY2FsZUZhY3RvcikpOworICAgICAgICBzY2FsZVJvdW5kQW5k
Q2xhbXBDb2xvckNoYW5uZWxVc2luZ0FsdGVybmF0aXZlUm91bmRpbmcociksCisgICAgICAgIHNj
YWxlUm91bmRBbmRDbGFtcENvbG9yQ2hhbm5lbFVzaW5nQWx0ZXJuYXRpdmVSb3VuZGluZyhnKSwK
KyAgICAgICAgc2NhbGVSb3VuZEFuZENsYW1wQ29sb3JDaGFubmVsVXNpbmdBbHRlcm5hdGl2ZVJv
dW5kaW5nKGIpLAorICAgICAgICBzY2FsZVJvdW5kQW5kQ2xhbXBDb2xvckNoYW5uZWxVc2luZ0Fs
dGVybmF0aXZlUm91bmRpbmcoYSkKKyAgICApOwogfQogCiBTaW1wbGVDb2xvciBtYWtlU2ltcGxl
Q29sb3JGcm9tQ01ZS0EoZmxvYXQgYywgZmxvYXQgbSwgZmxvYXQgeSwgZmxvYXQgaywgZmxvYXQg
YSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NpbXBsZUNvbG9yLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2ltcGxlQ29s
b3IuaAkocmV2aXNpb24gMjYyMzQ4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvU2ltcGxlQ29sb3IuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsMTEgKzMxLDEyIEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogLy8gQ29sb3IgdmFsdWUgd2l0aCA4LWJpdCBjb21wb25lbnRzIGZv
ciByZWQsIGdyZWVuLCBibHVlLCBhbmQgYWxwaGEuCiAvLyBGb3IgaGlzdG9yaWNhbCByZWFzb25z
LCBzdG9yZWQgYXMgYSAzMi1iaXQgaW50ZWdlciwgd2l0aCBhbHBoYSBpbiB0aGUgaGlnaCBiaXRz
OiBBUkdCLgotLy8gRklYTUU6IFRoaXMgY2xhc3Mgc2hvdWxkIGJlIGNvbnNvbGlkYXRlZCB3aXRo
IENvbG9yQ29tcG9uZW50cy4KIGNsYXNzIFNpbXBsZUNvbG9yIHsKIHB1YmxpYzoKICAgICBjb25z
dGV4cHIgU2ltcGxlQ29sb3IodWludDMyX3QgdmFsdWUgPSAwKSA6IG1fdmFsdWUgeyB2YWx1ZSB9
IHsgfQorICAgIGNvbnN0ZXhwciBTaW1wbGVDb2xvcih1aW50OF90IHIsIHVpbnQ4X3QgZywgdWlu
dDhfdCBiLCB1aW50OF90IGEpIDogbV92YWx1ZSB7IHN0YXRpY19jYXN0PHVuc2lnbmVkPihhIDw8
IDI0IHwgciA8PCAxNiB8IGcgPDwgOCB8IGIpIH0geyB9CiAKKyAgICBjb25zdGV4cHIgdWludDMy
X3QgdmFsdWVBc0FSR0IoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlOyB9CiAgICAgY29uc3RleHBy
IHVpbnQzMl90IHZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZTsgfQogCiAgICAgY29uc3Rl
eHByIHVpbnQ4X3QgcmVkQ29tcG9uZW50KCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZSA+PiAxNjsg
fQpAQCAtNTIsNyArNTMsMjAgQEAgcHVibGljOgogICAgIFN0cmluZyBzZXJpYWxpemF0aW9uRm9y
Q1NTKCkgY29uc3Q7CiAgICAgU3RyaW5nIHNlcmlhbGl6YXRpb25Gb3JSZW5kZXJUcmVlQXNUZXh0
KCkgY29uc3Q7CiAKLSAgICBjb25zdGV4cHIgU2ltcGxlQ29sb3IgY29sb3JXaXRoQWxwaGEodWlu
dDhfdCBhbHBoYSkgY29uc3QgeyByZXR1cm4geyAobV92YWx1ZSAmIDB4MDBGRkZGRkYpIHwgYWxw
aGEgPDwgMjQgfTsgfQorICAgIGNvbnN0ZXhwciBTaW1wbGVDb2xvciBjb2xvcldpdGhBbHBoYSh1
aW50OF90IGFscGhhKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIHsgKG1fdmFsdWUgJiAw
eDAwRkZGRkZGKSB8IGFscGhhIDw8IDI0IH07CisgICAgfQorCisgICAgY29uc3RleHByIFNpbXBs
ZUNvbG9yIGludmVydGVkQ29sb3JXaXRoQWxwaGEodWludDhfdCBhbHBoYSkgY29uc3QKKyAgICB7
CisgICAgICAgIHJldHVybiB7IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KDB4RkYgLSByZWRDb21wb25l
bnQoKSksIHN0YXRpY19jYXN0PHVpbnQ4X3Q+KDB4RkYgLSBncmVlbkNvbXBvbmVudCgpKSwgc3Rh
dGljX2Nhc3Q8dWludDhfdD4oMHhGRiAtIGJsdWVDb21wb25lbnQoKSksIGFscGhhIH07CisgICAg
fQorCisgICAgY29uc3RleHByIENvbG9yQ29tcG9uZW50czxmbG9hdD4gYXNTUkdCRmxvYXRDb21w
b25lbnRzKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiB7IHJlZENvbXBvbmVudCgpIC8g
MjU1LjBmLCBncmVlbkNvbXBvbmVudCgpIC8gMjU1LjBmLCBibHVlQ29tcG9uZW50KCkgLyAyNTUu
MGYsICBhbHBoYUNvbXBvbmVudCgpIC8gMjU1LjBmIH07CisgICAgfQogCiAgICAgdGVtcGxhdGU8
c3RkOjpzaXplX3QgTj4KICAgICBjb25zdGV4cHIgdWludDhfdCBnZXQoKSBjb25zdApAQCAtNzgs
NiArOTIsOCBAQCBib29sIG9wZXJhdG9yIT0oU2ltcGxlQ29sb3IsIFNpbXBsZUNvbG9yCiBjb25z
dGV4cHIgU2ltcGxlQ29sb3IgbWFrZVNpbXBsZUNvbG9yKGludCByLCBpbnQgZywgaW50IGIpOwog
Y29uc3RleHByIFNpbXBsZUNvbG9yIG1ha2VTaW1wbGVDb2xvcihpbnQgciwgaW50IGcsIGludCBi
LCBpbnQgYSk7CiAKK1NpbXBsZUNvbG9yIG1ha2VTaW1wbGVDb2xvcihjb25zdCBDb2xvckNvbXBv
bmVudHM8ZmxvYXQ+JiBzUkdCQ29tcG9uZW50cyk7CisKIFNpbXBsZUNvbG9yIG1ha2VQcmVtdWx0
aXBsaWVkU2ltcGxlQ29sb3IoaW50IHIsIGludCBnLCBpbnQgYiwgaW50IGEsIGJvb2wgY2VpbGlu
ZyA9IHRydWUpOwogU2ltcGxlQ29sb3IgbWFrZVByZW11bHRpcGxpZWRTaW1wbGVDb2xvcihTaW1w
bGVDb2xvcik7CiBTaW1wbGVDb2xvciBtYWtlVW5wcmVtdWx0aXBsaWVkU2ltcGxlQ29sb3IoaW50
IHIsIGludCBnLCBpbnQgYiwgaW50IGEpOwpAQCAtODcsNyArMTAzLDYgQEAgV0VCQ09SRV9FWFBP
UlQgU2ltcGxlQ29sb3IgbWFrZVNpbXBsZUNvbAogV0VCQ09SRV9FWFBPUlQgU2ltcGxlQ29sb3Ig
bWFrZVNpbXBsZUNvbG9yRnJvbUhTTEEoZmxvYXQgaCwgZmxvYXQgcywgZmxvYXQgbCwgZmxvYXQg
YSk7CiBTaW1wbGVDb2xvciBtYWtlU2ltcGxlQ29sb3JGcm9tQ01ZS0EoZmxvYXQgYywgZmxvYXQg
bSwgZmxvYXQgeSwgZmxvYXQgaywgZmxvYXQgYSk7CiAKLQogaW5saW5lIGJvb2wgb3BlcmF0b3I9
PShTaW1wbGVDb2xvciBhLCBTaW1wbGVDb2xvciBiKQogewogICAgIHJldHVybiBhLnZhbHVlKCkg
PT0gYi52YWx1ZSgpOwpAQCAtMTA1LDcgKzEyMCwxOCBAQCBjb25zdGV4cHIgU2ltcGxlQ29sb3Ig
bWFrZVNpbXBsZUNvbG9yKGluCiAKIGNvbnN0ZXhwciBTaW1wbGVDb2xvciBtYWtlU2ltcGxlQ29s
b3IoaW50IHIsIGludCBnLCBpbnQgYiwgaW50IGEpCiB7Ci0gICAgcmV0dXJuIHsgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KHN0ZDo6Y2xhbXAoYSwgMCwgMHhGRikgPDwgMjQgfCBzdGQ6OmNsYW1wKHIs
IDAsIDB4RkYpIDw8IDE2IHwgc3RkOjpjbGFtcChnLCAwLCAweEZGKSA8PCA4IHwgc3RkOjpjbGFt
cChiLCAwLCAweEZGKSkgfTsKKyAgICByZXR1cm4geyBzdGF0aWNfY2FzdDx1aW50OF90PihzdGQ6
OmNsYW1wKHIsIDAsIDB4RkYpKSwgc3RhdGljX2Nhc3Q8dWludDhfdD4oc3RkOjpjbGFtcChnLCAw
LCAweEZGKSksIHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHN0ZDo6Y2xhbXAoYiwgMCwgMHhGRikpLCBz
dGF0aWNfY2FzdDx1aW50OF90PihzdGQ6OmNsYW1wKGEsIDAsIDB4RkYpKSB9OworfQorCitpbmxp
bmUgU2ltcGxlQ29sb3IgbWFrZVNpbXBsZUNvbG9yKGNvbnN0IENvbG9yQ29tcG9uZW50czxmbG9h
dD4mIHNSR0JDb21wb25lbnRzKQoreworICAgIGF1dG8gW3IsIGcsIGIsIGFdID0gc1JHQkNvbXBv
bmVudHM7CisgICAgcmV0dXJuIG1ha2VTaW1wbGVDb2xvcigKKyAgICAgICAgc2NhbGVSb3VuZEFu
ZENsYW1wQ29sb3JDaGFubmVsKHIpLAorICAgICAgICBzY2FsZVJvdW5kQW5kQ2xhbXBDb2xvckNo
YW5uZWwoZyksCisgICAgICAgIHNjYWxlUm91bmRBbmRDbGFtcENvbG9yQ2hhbm5lbChiKSwKKyAg
ICAgICAgc2NhbGVSb3VuZEFuZENsYW1wQ29sb3JDaGFubmVsKGEpCisgICAgKTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvQ29sb3JDRy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvQ29sb3JDRy5jcHAJKHJldmlzaW9uIDI2MjM0OCkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yQ0cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
MzAsNyArMTMwLDcgQEAgc3RhdGljIENHQ29sb3JSZWYgbGVha0NHQ29sb3IoY29uc3QgQ29sbwog
Q0dDb2xvclJlZiBjYWNoZWRDR0NvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikKIHsKICAgICBpZiAo
IWNvbG9yLmlzRXh0ZW5kZWQoKSkgewotICAgICAgICBzd2l0Y2ggKGNvbG9yLmFzU2ltcGxlQ29s
b3IoKS52YWx1ZSgpKSB7CisgICAgICAgIHN3aXRjaCAoY29sb3IuYXNTaW1wbGUoKS52YWx1ZSgp
KSB7CiAgICAgICAgIGNhc2UgQ29sb3I6OnRyYW5zcGFyZW50LnZhbHVlKCk6IHsKICAgICAgICAg
ICAgIHN0YXRpYyBDR0NvbG9yUmVmIHRyYW5zcGFyZW50Q0dDb2xvciA9IGxlYWtDR0NvbG9yKGNv
bG9yKTsKICAgICAgICAgICAgIHJldHVybiB0cmFuc3BhcmVudENHQ29sb3I7CkBAIC0xNDYsNyAr
MTQ2LDcgQEAgQ0dDb2xvclJlZiBjYWNoZWRDR0NvbG9yKGNvbnN0IENvbG9yJiBjbwogICAgICAg
ICB9CiAgICAgfQogCi0gICAgQVNTRVJUKGNvbG9yLmlzRXh0ZW5kZWQoKSB8fCBjb2xvci5hc1Np
bXBsZUNvbG9yKCkudmFsdWUoKSk7CisgICAgQVNTRVJUKGNvbG9yLmlzRXh0ZW5kZWQoKSB8fCBj
b2xvci5hc1NpbXBsZSgpLnZhbHVlKCkpOwogCiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFRp
bnlMUlVDYWNoZTxDb2xvciwgUmV0YWluUHRyPENHQ29sb3JSZWY+LCAzMj4+IGNhY2hlOwogICAg
IHJldHVybiBjYWNoZS5nZXQoKS5nZXQoY29sb3IpLmdldCgpOwpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUxpZ2h0aW5nLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTGlnaHRpbmcuY3Bw
CShyZXZpc2lvbiAyNjIzNDgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZFTGlnaHRpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MDUsNyArNDA1LDcgQEAg
Ym9vbCBGRUxpZ2h0aW5nOjpkcmF3TGlnaHRpbmcoVWludDhDbGFtcAogICAgIGRhdGEuaGVpZ2h0
RGVjcmVhc2VkQnlPbmUgPSBoZWlnaHQgLSAxOwogICAgIAogICAgIGF1dG8gbGlnaHRDb2xvciA9
IChvcGVyYXRpbmdDb2xvclNwYWNlKCkgPT0gQ29sb3JTcGFjZTo6TGluZWFyUkdCKSA/IHJnYlRv
TGluZWFyQ29tcG9uZW50cyhtX2xpZ2h0aW5nQ29sb3IudG9TUkdCQUNvbXBvbmVudHNMb3NzeSgp
KSA6IG1fbGlnaHRpbmdDb2xvci50b1NSR0JBQ29tcG9uZW50c0xvc3N5KCk7Ci0gICAgcGFpbnRp
bmdEYXRhLmluaXRpYWxMaWdodGluZ0RhdGEuY29sb3JWZWN0b3IgPSBGbG9hdFBvaW50M0QobGln
aHRDb2xvci5jb21wb25lbnRzWzBdLCBsaWdodENvbG9yLmNvbXBvbmVudHNbMV0sIGxpZ2h0Q29s
b3IuY29tcG9uZW50c1syXSk7CisgICAgcGFpbnRpbmdEYXRhLmluaXRpYWxMaWdodGluZ0RhdGEu
Y29sb3JWZWN0b3IgPSBGbG9hdFBvaW50M0QobGlnaHRDb2xvclswXSwgbGlnaHRDb2xvclsxXSwg
bGlnaHRDb2xvclsyXSk7CiAgICAgbV9saWdodFNvdXJjZS0+aW5pdFBhaW50aW5nRGF0YSgqdGhp
cywgcGFpbnRpbmdEYXRhKTsKIAogICAgIC8vIFRvcCBsZWZ0LgpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVR1cmJ1bGVuY2UuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUdXJidWxlbmNl
LmNwcAkocmV2aXNpb24gMjYyMzQ4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GRVR1cmJ1bGVuY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMjUsMTAgKzMy
NSwxMCBAQCBDb2xvckNvbXBvbmVudHM8ZmxvYXQ+IEZFVHVyYnVsZW5jZTo6bm9pCiBzdGF0aWMg
aW5saW5lIENvbG9yQ29tcG9uZW50czx1aW50OF90PiB0b0ludEJhc2VkQ29sb3JDb21wb25lbnRz
KGNvbnN0IENvbG9yQ29tcG9uZW50czxmbG9hdD4mIGZsb2F0Q29tcG9uZW50cykKIHsKICAgICBy
ZXR1cm4gewotICAgICAgICBzdGQ6OmNsYW1wPHVpbnQ4X3Q+KHN0YXRpY19jYXN0PGludD4oZmxv
YXRDb21wb25lbnRzLmNvbXBvbmVudHNbMF0gKiAyNTUpLCAwLCAyNTUpLAotICAgICAgICBzdGQ6
OmNsYW1wPHVpbnQ4X3Q+KHN0YXRpY19jYXN0PGludD4oZmxvYXRDb21wb25lbnRzLmNvbXBvbmVu
dHNbMV0gKiAyNTUpLCAwLCAyNTUpLAotICAgICAgICBzdGQ6OmNsYW1wPHVpbnQ4X3Q+KHN0YXRp
Y19jYXN0PGludD4oZmxvYXRDb21wb25lbnRzLmNvbXBvbmVudHNbMl0gKiAyNTUpLCAwLCAyNTUp
LAotICAgICAgICBzdGQ6OmNsYW1wPHVpbnQ4X3Q+KHN0YXRpY19jYXN0PGludD4oZmxvYXRDb21w
b25lbnRzLmNvbXBvbmVudHNbM10gKiAyNTUpLCAwLCAyNTUpLAorICAgICAgICBzdGQ6OmNsYW1w
PHVpbnQ4X3Q+KHN0YXRpY19jYXN0PGludD4oZmxvYXRDb21wb25lbnRzWzBdICogMjU1KSwgMCwg
MjU1KSwKKyAgICAgICAgc3RkOjpjbGFtcDx1aW50OF90PihzdGF0aWNfY2FzdDxpbnQ+KGZsb2F0
Q29tcG9uZW50c1sxXSAqIDI1NSksIDAsIDI1NSksCisgICAgICAgIHN0ZDo6Y2xhbXA8dWludDhf
dD4oc3RhdGljX2Nhc3Q8aW50PihmbG9hdENvbXBvbmVudHNbMl0gKiAyNTUpLCAwLCAyNTUpLAor
ICAgICAgICBzdGQ6OmNsYW1wPHVpbnQ4X3Q+KHN0YXRpY19jYXN0PGludD4oZmxvYXRDb21wb25l
bnRzWzNdICogMjU1KSwgMCwgMjU1KSwKICAgICB9OwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVy
YXRpb24uY3BwCShyZXZpc2lvbiAyNjIzNDgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1
NiwyNiArMTU2LDI2IEBAIGJvb2wgQmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9wZXJhdGkK
IHsKICAgICBzd2l0Y2ggKG1fdHlwZSkgewogICAgIGNhc2UgT1BBQ0lUWToKLSAgICAgICAgY29s
b3JDb21wb25lbnRzLmNvbXBvbmVudHNbM10gKj0gbV9hbW91bnQ7CisgICAgICAgIGNvbG9yQ29t
cG9uZW50c1szXSAqPSBtX2Ftb3VudDsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgY2FzZSBJ
TlZFUlQ6IHsKICAgICAgICAgZmxvYXQgb25lTWludXNBbW91bnQgPSAxLmYgLSBtX2Ftb3VudDsK
LSAgICAgICAgY29sb3JDb21wb25lbnRzLmNvbXBvbmVudHNbMF0gPSAxIC0gKG9uZU1pbnVzQW1v
dW50ICsgY29sb3JDb21wb25lbnRzLmNvbXBvbmVudHNbMF0gKiAobV9hbW91bnQgLSBvbmVNaW51
c0Ftb3VudCkpOwotICAgICAgICBjb2xvckNvbXBvbmVudHMuY29tcG9uZW50c1sxXSA9IDEgLSAo
b25lTWludXNBbW91bnQgKyBjb2xvckNvbXBvbmVudHMuY29tcG9uZW50c1sxXSAqIChtX2Ftb3Vu
dCAtIG9uZU1pbnVzQW1vdW50KSk7Ci0gICAgICAgIGNvbG9yQ29tcG9uZW50cy5jb21wb25lbnRz
WzJdID0gMSAtIChvbmVNaW51c0Ftb3VudCArIGNvbG9yQ29tcG9uZW50cy5jb21wb25lbnRzWzJd
ICogKG1fYW1vdW50IC0gb25lTWludXNBbW91bnQpKTsKKyAgICAgICAgY29sb3JDb21wb25lbnRz
WzBdID0gMSAtIChvbmVNaW51c0Ftb3VudCArIGNvbG9yQ29tcG9uZW50c1swXSAqIChtX2Ftb3Vu
dCAtIG9uZU1pbnVzQW1vdW50KSk7CisgICAgICAgIGNvbG9yQ29tcG9uZW50c1sxXSA9IDEgLSAo
b25lTWludXNBbW91bnQgKyBjb2xvckNvbXBvbmVudHNbMV0gKiAobV9hbW91bnQgLSBvbmVNaW51
c0Ftb3VudCkpOworICAgICAgICBjb2xvckNvbXBvbmVudHNbMl0gPSAxIC0gKG9uZU1pbnVzQW1v
dW50ICsgY29sb3JDb21wb25lbnRzWzJdICogKG1fYW1vdW50IC0gb25lTWludXNBbW91bnQpKTsK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIGNhc2UgQ09OVFJBU1Q6IHsKICAgICAg
ICAgZmxvYXQgaW50ZXJjZXB0ID0gLSgwLjVmICogbV9hbW91bnQpICsgMC41ZjsKLSAgICAgICAg
Y29sb3JDb21wb25lbnRzLmNvbXBvbmVudHNbMF0gPSBjbGFtcFRvPGZsb2F0PihpbnRlcmNlcHQg
KyBtX2Ftb3VudCAqIGNvbG9yQ29tcG9uZW50cy5jb21wb25lbnRzWzBdLCAwLCAxKTsKLSAgICAg
ICAgY29sb3JDb21wb25lbnRzLmNvbXBvbmVudHNbMV0gPSBjbGFtcFRvPGZsb2F0PihpbnRlcmNl
cHQgKyBtX2Ftb3VudCAqIGNvbG9yQ29tcG9uZW50cy5jb21wb25lbnRzWzFdLCAwLCAxKTsKLSAg
ICAgICAgY29sb3JDb21wb25lbnRzLmNvbXBvbmVudHNbMl0gPSBjbGFtcFRvPGZsb2F0PihpbnRl
cmNlcHQgKyBtX2Ftb3VudCAqIGNvbG9yQ29tcG9uZW50cy5jb21wb25lbnRzWzJdLCAwLCAxKTsK
KyAgICAgICAgY29sb3JDb21wb25lbnRzWzBdID0gY2xhbXBUbzxmbG9hdD4oaW50ZXJjZXB0ICsg
bV9hbW91bnQgKiBjb2xvckNvbXBvbmVudHNbMF0sIDAsIDEpOworICAgICAgICBjb2xvckNvbXBv
bmVudHNbMV0gPSBjbGFtcFRvPGZsb2F0PihpbnRlcmNlcHQgKyBtX2Ftb3VudCAqIGNvbG9yQ29t
cG9uZW50c1sxXSwgMCwgMSk7CisgICAgICAgIGNvbG9yQ29tcG9uZW50c1syXSA9IGNsYW1wVG88
ZmxvYXQ+KGludGVyY2VwdCArIG1fYW1vdW50ICogY29sb3JDb21wb25lbnRzWzJdLCAwLCAxKTsK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIGNhc2UgQlJJR0hUTkVTUzoKLSAgICAg
ICAgY29sb3JDb21wb25lbnRzLmNvbXBvbmVudHNbMF0gPSBzdGQ6Om1heDxmbG9hdD4obV9hbW91
bnQgKiBjb2xvckNvbXBvbmVudHMuY29tcG9uZW50c1swXSwgMCk7Ci0gICAgICAgIGNvbG9yQ29t
cG9uZW50cy5jb21wb25lbnRzWzFdID0gc3RkOjptYXg8ZmxvYXQ+KG1fYW1vdW50ICogY29sb3JD
b21wb25lbnRzLmNvbXBvbmVudHNbMV0sIDApOwotICAgICAgICBjb2xvckNvbXBvbmVudHMuY29t
cG9uZW50c1syXSA9IHN0ZDo6bWF4PGZsb2F0PihtX2Ftb3VudCAqIGNvbG9yQ29tcG9uZW50cy5j
b21wb25lbnRzWzJdLCAwKTsKKyAgICAgICAgY29sb3JDb21wb25lbnRzWzBdID0gc3RkOjptYXg8
ZmxvYXQ+KG1fYW1vdW50ICogY29sb3JDb21wb25lbnRzWzBdLCAwKTsKKyAgICAgICAgY29sb3JD
b21wb25lbnRzWzFdID0gc3RkOjptYXg8ZmxvYXQ+KG1fYW1vdW50ICogY29sb3JDb21wb25lbnRz
WzFdLCAwKTsKKyAgICAgICAgY29sb3JDb21wb25lbnRzWzJdID0gc3RkOjptYXg8ZmxvYXQ+KG1f
YW1vdW50ICogY29sb3JDb21wb25lbnRzWzJdLCAwKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgZGVmYXVsdDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC0yMzEsNyArMjMx
LDcgQEAgYm9vbCBJbnZlcnRMaWdodG5lc3NGaWx0ZXJPcGVyYXRpb246OnRyYQogICAgIGF1dG8g
aHNsQ29tcG9uZW50cyA9IHNSR0JUb0hTTChzUkdCQ29sb3JDb21wb25lbnRzKTsKICAgICAKICAg
ICAvLyBSb3RhdGUgdGhlIGh1ZSAxODBkZWcuCi0gICAgaHNsQ29tcG9uZW50cy5jb21wb25lbnRz
WzBdID0gZm1vZChoc2xDb21wb25lbnRzLmNvbXBvbmVudHNbMF0gKyAwLjVmLCAxLjBmKTsKKyAg
ICBoc2xDb21wb25lbnRzWzBdID0gZm1vZChoc2xDb21wb25lbnRzWzBdICsgMC41ZiwgMS4wZik7
CiAgICAgCiAgICAgLy8gQ29udmVydCBiYWNrIHRvIFJHQi4KICAgICBzUkdCQ29sb3JDb21wb25l
bnRzID0gaHNsVG9TUkdCKGhzbENvbXBvbmVudHMpOwpAQCAtMjYxLDcgKzI2MSw3IEBAIGJvb2wg
SW52ZXJ0TGlnaHRuZXNzRmlsdGVyT3BlcmF0aW9uOjppbnYKICAgICAvLyBDb252ZXJ0IHRvIEhT
TC4KICAgICBhdXRvIGhzbENvbXBvbmVudHMgPSBzUkdCVG9IU0wocmdiQ29tcG9uZW50cyk7CiAg
ICAgLy8gSHVlIHJvdGF0ZSBieSAxODBkZWcuCi0gICAgaHNsQ29tcG9uZW50cy5jb21wb25lbnRz
WzBdID0gZm1vZChoc2xDb21wb25lbnRzLmNvbXBvbmVudHNbMF0gKyAwLjVmLCAxLjBmKTsKKyAg
ICBoc2xDb21wb25lbnRzWzBdID0gZm1vZChoc2xDb21wb25lbnRzWzBdICsgMC41ZiwgMS4wZik7
CiAgICAgLy8gQW5kIHJldHVybiBSR0IuCiAgICAgc1JHQkNvbG9yQ29tcG9uZW50cyA9IGhzbFRv
U1JHQihoc2xDb21wb25lbnRzKTsKICAgICByZXR1cm4gdHJ1ZTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9ucy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJP
cGVyYXRpb25zLmNwcAkocmV2aXNpb24gMjYyMzQ4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTExLDE1ICsxMTEsMTQgQEAgYm9vbCBGaWx0ZXJPcGVyYXRpb25zOjp0cmFuc2Zvcm1Db2xv
cihDbwogICAgIGlmIChjb2xvci5pc1NlbWFudGljKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAotICAgIGF1dG8gY29tcG9uZW50cyA9IGNvbG9yLnRvU1JHQkFDb21wb25lbnRzTG9zc3koKTsK
KyAgICBhdXRvIHNSR0JBQ29tcG9uZW50cyA9IGNvbG9yLnRvU1JHQkFDb21wb25lbnRzTG9zc3ko
KTsKIAogICAgIGZvciAoYXV0byYgb3BlcmF0aW9uIDogbV9vcGVyYXRpb25zKSB7Ci0gICAgICAg
IGlmICghb3BlcmF0aW9uLT50cmFuc2Zvcm1Db2xvcihjb21wb25lbnRzKSkKKyAgICAgICAgaWYg
KCFvcGVyYXRpb24tPnRyYW5zZm9ybUNvbG9yKHNSR0JBQ29tcG9uZW50cykpCiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgYXV0byBbciwgZywgYiwgYV0gPSBjb21wb25l
bnRzOwotICAgIGNvbG9yID0gbWFrZVNpbXBsZUNvbG9yRnJvbUZsb2F0cyhyLCBnLCBiLCBhKTsK
KyAgICBjb2xvciA9IG1ha2VTaW1wbGVDb2xvcihzUkdCQUNvbXBvbmVudHMpOwogICAgIHJldHVy
biB0cnVlOwogfQogCkBAIC0xMzEsMTUgKzEzMCwxNCBAQCBib29sIEZpbHRlck9wZXJhdGlvbnM6
OmludmVyc2VUcmFuc2Zvcm1DCiAgICAgaWYgKGNvbG9yLmlzU2VtYW50aWMoKSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCi0gICAgYXV0byBjb21wb25lbnRzID0gY29sb3IudG9TUkdCQUNvbXBv
bmVudHNMb3NzeSgpOworICAgIGF1dG8gc1JHQkFDb21wb25lbnRzID0gY29sb3IudG9TUkdCQUNv
bXBvbmVudHNMb3NzeSgpOwogCiAgICAgZm9yIChhdXRvJiBvcGVyYXRpb24gOiBtX29wZXJhdGlv
bnMpIHsKLSAgICAgICAgaWYgKCFvcGVyYXRpb24tPmludmVyc2VUcmFuc2Zvcm1Db2xvcihjb21w
b25lbnRzKSkKKyAgICAgICAgaWYgKCFvcGVyYXRpb24tPmludmVyc2VUcmFuc2Zvcm1Db2xvcihz
UkdCQUNvbXBvbmVudHMpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAg
IGF1dG8gW3IsIGcsIGIsIGFdID0gY29tcG9uZW50czsKLSAgICBjb2xvciA9IG1ha2VTaW1wbGVD
b2xvckZyb21GbG9hdHMociwgZywgYiwgYSk7CisgICAgY29sb3IgPSBtYWtlU2ltcGxlQ29sb3Io
c1JHQkFDb21wb25lbnRzKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApJbmRleDogVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0V4dGVuZGVkQ29sb3JUZXN0cy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0V4dGVuZGVkQ29sb3JUZXN0
cy5jcHAJKHJldmlzaW9uIDI2MjM0OCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
Q29yZS9FeHRlbmRlZENvbG9yVGVzdHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw3ICszOSw3
IEBAIFRFU1QoRXh0ZW5kZWRDb2xvciwgQ29uc3RydWN0b3IpCiAgICAgQ29sb3IgYzEoMS4wLCAw
LjUsIDAuMjUsIDEuMCwgQ29sb3JTcGFjZTo6RGlzcGxheVAzKTsKICAgICBFWFBFQ1RfVFJVRShj
MS5pc0V4dGVuZGVkKCkpOwogCi0gICAgYXV0byBbciwgZywgYiwgYWxwaGFdID0gYzEuYXNFeHRl
bmRlZCgpLmNoYW5uZWxzKCk7CisgICAgYXV0byBbciwgZywgYiwgYWxwaGFdID0gYzEuYXNFeHRl
bmRlZCgpLmNvbXBvbmVudHMoKTsKIAogICAgIEVYUEVDVF9GTE9BVF9FUSgxLjAsIHIpOwogICAg
IEVYUEVDVF9GTE9BVF9FUSgwLjUsIGcpOwpAQCAtNTYsNyArNTYsNyBAQCBURVNUKEV4dGVuZGVk
Q29sb3IsIENvcHlDb25zdHJ1Y3RvcikKIAogICAgIENvbG9yIGMyKGMxKTsKIAotICAgIGF1dG8g
W3IsIGcsIGIsIGFscGhhXSA9IGMyLmFzRXh0ZW5kZWQoKS5jaGFubmVscygpOworICAgIGF1dG8g
W3IsIGcsIGIsIGFscGhhXSA9IGMyLmFzRXh0ZW5kZWQoKS5jb21wb25lbnRzKCk7CiAKICAgICBF
WFBFQ1RfRkxPQVRfRVEoMS4wLCByKTsKICAgICBFWFBFQ1RfRkxPQVRfRVEoMC41LCBnKTsKQEAg
LTc0LDcgKzc0LDcgQEAgVEVTVChFeHRlbmRlZENvbG9yLCBBc3NpZ25tZW50KQogCiAgICAgQ29s
b3IgYzIgPSBjMTsKIAotICAgIGF1dG8gW3IsIGcsIGIsIGFscGhhXSA9IGMyLmFzRXh0ZW5kZWQo
KS5jaGFubmVscygpOworICAgIGF1dG8gW3IsIGcsIGIsIGFscGhhXSA9IGMyLmFzRXh0ZW5kZWQo
KS5jb21wb25lbnRzKCk7CiAKICAgICBFWFBFQ1RfRkxPQVRfRVEoMS4wLCByKTsKICAgICBFWFBF
Q1RfRkxPQVRfRVEoMC41LCBnKTsKQEAgLTE1OSw3ICsxNTksNyBAQCBURVNUKEV4dGVuZGVkQ29s
b3IsIE1vdmVDb25zdHJ1Y3RvcikKICAgICBFWFBFQ1RfRkFMU0UoYzEuaXNFeHRlbmRlZCgpKTsK
ICAgICBFWFBFQ1RfRkFMU0UoYzEuaXNWYWxpZCgpKTsKIAotICAgIGF1dG8gW3IsIGcsIGIsIGFs
cGhhXSA9IGMyLmFzRXh0ZW5kZWQoKS5jaGFubmVscygpOworICAgIGF1dG8gW3IsIGcsIGIsIGFs
cGhhXSA9IGMyLmFzRXh0ZW5kZWQoKS5jb21wb25lbnRzKCk7CiAKICAgICBFWFBFQ1RfRkxPQVRf
RVEoMS4wLCByKTsKICAgICBFWFBFQ1RfRkxPQVRfRVEoMC41LCBnKTsKQEAgLTE4MSw3ICsxODEs
NyBAQCBURVNUKEV4dGVuZGVkQ29sb3IsIE1vdmVBc3NpZ25tZW50KQogICAgIEVYUEVDVF9GQUxT
RShjMS5pc0V4dGVuZGVkKCkpOwogICAgIEVYUEVDVF9GQUxTRShjMS5pc1ZhbGlkKCkpOwogCi0g
ICAgYXV0byBbciwgZywgYiwgYWxwaGFdID0gYzIuYXNFeHRlbmRlZCgpLmNoYW5uZWxzKCk7Cisg
ICAgYXV0byBbciwgZywgYiwgYWxwaGFdID0gYzIuYXNFeHRlbmRlZCgpLmNvbXBvbmVudHMoKTsK
IAogICAgIEVYUEVDVF9GTE9BVF9FUSgxLjAsIHIpOwogICAgIEVYUEVDVF9GTE9BVF9FUSgwLjUs
IGcpOwpAQCAtMTk5LDcgKzE5OSw3IEBAIFRFU1QoRXh0ZW5kZWRDb2xvciwgQmFzaWNSZWZlcmVu
Y2VDb3VudGkKICAgICBDb2xvciogYzIgPSBuZXcgQ29sb3IoKmMxKTsKICAgICBDb2xvciogYzMg
PSBuZXcgQ29sb3IoKmMyKTsKIAotICAgIGF1dG8gW3IsIGcsIGIsIGFscGhhXSA9IGMyLT5hc0V4
dGVuZGVkKCkuY2hhbm5lbHMoKTsKKyAgICBhdXRvIFtyLCBnLCBiLCBhbHBoYV0gPSBjMi0+YXNF
eHRlbmRlZCgpLmNvbXBvbmVudHMoKTsKIAogICAgIEVYUEVDVF9GTE9BVF9FUSgxLjAsIHIpOwog
ICAgIEVYUEVDVF9GTE9BVF9FUSgwLjUsIGcpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>400676</attachid>
            <date>2020-05-30 12:47:04 -0700</date>
            <delta_ts>2020-05-30 14:33:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-212567-20200530124703.patch</filename>
            <type>text/plain</type>
            <size>41806</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2MjM1MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwMSBAQAorMjAyMC0wNS0zMCAgU2FtIFdl
aW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgRXh0ZW5kZWQgQ29sb3I6IEFkZGl0
aW9uYWwgY29sb3IgY2xlYW51cHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIxMjU2NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEEgZmV3IHVucmVsYXRlZCBxdWFsaXR5LW9mLWxpZmUgY2xlYW51cHMgdG8g
Q29sb3IgYW5kIHJlbGF0ZWQgY2xhc3NlczoKKyAgICAgICAgLSBSZW5hbWUgQ29sb3I6OmFzU2lt
cGxlQ29sb3IoKSB0byBDb2xvcjo6YXNTaW1wbGUoKSBmb3IgcGFyaXR5IHdpdGggQ29sb3I6OmFz
RXh0ZW5kZWQoKS4KKyAgICAgICAgLSBNb3ZlIFNpbXBsZUNvbG9yIGltcGxlbWVudGF0aW9ucyBv
ZiBpbnZlcnRlZENvbG9yV2l0aEFscGhhKCkgYW5kIGFzU1JHQkZsb2F0Q29tcG9uZW50cygpCisg
ICAgICAgICAgdG8gU2ltcGxlQ29sb3IgZm9yIHBhcml0eSB3aXRoIEV4dGVuZWRDb2xvci4KKyAg
ICAgICAgLSBSZW5hbWUgRXh0ZW5kZWRDb2xvcjo6Y2hhbm5lbHMoKSB0byBFeHRlbmRlZENvbG9y
Ojpjb21wb25lbnRzKCkgdG8gY29uc2lzdGVuY3kuCisgICAgICAgIC0gQWRkcyBvcGVyYXRvcltd
IHRvIENvbG9yQ29tcG9uZW50cyB0byBhbGxvdyBkaXJlY3QgYWNjZXNzIHRvIGNvbXBvbmVudHMg
cmF0aGVyIHRoYW4KKyAgICAgICAgICByZXF1aXJpbmcgYW5kIGFkZGl0aW9uYWwgLmNvbXBvbmVu
dHNbXQorICAgICAgICAtIFVzaW5nIHN0ZDo6bWlubWF4KCkgd2hlcmUgcG9zc2libGUuCisgICAg
ICAgIC0gUmVuYW1pbmcgY29sb3JGbG9hdFRvU2ltcGxlQ29sb3JCeXRlIHRvIHNjYWxlUm91bmRB
bmRDbGFtcENvbG9yQ2hhbm5lbCB0byBoYXZlIGEgY29uc2lzdGVudCAKKyAgICAgICAgICBuYW1p
bmcgYW5kIGxvY2F0aW9uIG9mIGNvbnZlcnNpb24gdG8gOC1iaXQgY29sb3IgY2hhbm5lbHMuCisK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDb2xvcjo6c2VyaWFsaXplZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb2xvcjo6Y3Nz
VGV4dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb2xvcjo6bmFtZUZvclJlbmRlclRyZWVB
c1RleHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29sb3I6OmxpZ2h0IGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkNvbG9yOjpkYXJrIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNv
bG9yOjpjb2xvcldpdGhBbHBoYSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb2xvcjo6Y29s
b3JXaXRoQWxwaGFVc2luZ0FsdGVybmF0aXZlUm91bmRpbmcgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6Q29sb3I6OmludmVydGVkQ29sb3JXaXRoQWxwaGEgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6Q29sb3I6OmNvbG9yU3BhY2VBbmRDb21wb25lbnRzIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkNvbG9yOjp0b1NSR0JBU2ltcGxlQ29sb3JMb3NzeSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpDb2xvcjo6dG9TUkdCQUNvbXBvbmVudHNMb3NzeSBjb25zdCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbG9yOjppc09w
YXF1ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb2xvcjo6aXNWaXNpYmxlIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkNvbG9yOjphbHBoYSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpDb2xvcjo6YWxwaGFBc0Zsb2F0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbG9yOjph
c1NpbXBsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb2xvcjo6aXNCbGFja0NvbG9yKToK
KyAgICAgICAgKFdlYkNvcmU6OkNvbG9yOjppc1doaXRlQ29sb3IpOgorICAgICAgICAoV2ViQ29y
ZTo6Q29sb3I6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb2xvcjo6YXNTaW1w
bGVDb2xvciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29s
b3JDb21wb25lbnRzLmg6CisgICAgICAgIChXZWJDb3JlOjpDb2xvckNvbXBvbmVudHM6Om9wZXJh
dG9yW10pOgorICAgICAgICAoV2ViQ29yZTo6Q29sb3JDb21wb25lbnRzOjpvcGVyYXRvcltdIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6Oj0pOgorICAgICAgICAoV2ViQ29yZTo6cGVyQ29tcG9u
ZW50TWF4KToKKyAgICAgICAgKFdlYkNvcmU6OnBlckNvbXBvbmVudE1pbik6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JNYXRyaXguaDoKKyAgICAgICAgKFdlYkNvcmU6OlJvd3M+
Ojp0cmFuc2Zvcm1lZENvbG9yQ29tcG9uZW50cyBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvQ29sb3JVdGlsaXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YXJlRXNzZW50
aWFsbHlFcXVhbCk6CisgICAgICAgIChXZWJDb3JlOjpyZ2JUb0xpbmVhckNvbXBvbmVudHMpOgor
ICAgICAgICAoV2ViQ29yZTo6bGluZWFyVG9SR0JDb21wb25lbnRzKToKKyAgICAgICAgKFdlYkNv
cmU6OmxpZ2h0bmVzcyk6CisgICAgICAgIChXZWJDb3JlOjpsdW1pbmFuY2UpOgorICAgICAgICAo
V2ViQ29yZTo6c1JHQlRvSFNMKToKKyAgICAgICAgKFdlYkNvcmU6OmhzbFRvU1JHQik6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JVdGlsaXRpZXMuaDoKKyAgICAgICAgKFdlYkNv
cmU6OnNjYWxlUm91bmRBbmRDbGFtcENvbG9yQ2hhbm5lbCk6CisgICAgICAgIChXZWJDb3JlOjpz
Y2FsZVJvdW5kQW5kQ2xhbXBDb2xvckNoYW5uZWxVc2luZ0FsdGVybmF0aXZlUm91bmRpbmcpOgor
ICAgICAgICAoV2ViQ29yZTo6Y29sb3JGbG9hdFRvU2ltcGxlQ29sb3JCeXRlKTogRGVsZXRlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9FeHRlbmRlZENvbG9yLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkV4dGVuZGVkQ29sb3I6Omhhc2ggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
RXh0ZW5kZWRDb2xvcjo6Y3NzVGV4dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbmRl
ZENvbG9yOjpjb2xvcldpdGhBbHBoYSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbmRl
ZENvbG9yOjppbnZlcnRlZENvbG9yV2l0aEFscGhhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkV4dGVuZGVkQ29sb3I6OnRvU1JHQkFDb21wb25lbnRzTG9zc3kgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6RXh0ZW5kZWRDb2xvcjo6aXNXaGl0ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpFeHRlbmRlZENvbG9yOjppc0JsYWNrIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9FeHRlbmRlZENvbG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbmRlZENvbG9yOjph
bHBoYSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbmRlZENvbG9yOjpjb21wb25lbnRz
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuZGVkQ29sb3I6OkV4dGVuZGVkQ29sb3Ip
OgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3I9PSk6CisgICAgICAgIChXZWJDb3JlOjpFeHRl
bmRlZENvbG9yOjpjaGFubmVscyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvU2ltcGxlQ29sb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bWFrZVNpbXBsZUNv
bG9yRnJvbUZsb2F0cyk6CisgICAgICAgIChXZWJDb3JlOjptYWtlU2ltcGxlQ29sb3JGcm9tSFNM
QSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvU2ltcGxlQ29sb3IuaDoKKyAgICAgICAg
KFdlYkNvcmU6OlNpbXBsZUNvbG9yOjpTaW1wbGVDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpT
aW1wbGVDb2xvcjo6dmFsdWVBc0FSR0IgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxl
Q29sb3I6OmNvbG9yV2l0aEFscGhhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZUNv
bG9yOjppbnZlcnRlZENvbG9yV2l0aEFscGhhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNp
bXBsZUNvbG9yOjphc1NSR0JGbG9hdENvbXBvbmVudHMgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6bWFrZVNpbXBsZUNvbG9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xv
ckNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNhY2hlZENHQ29sb3IpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVMaWdodGluZy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpGRUxpZ2h0aW5nOjpkcmF3TGlnaHRpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRkVUdXJidWxlbmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRvSW50QmFzZWRD
b2xvckNvbXBvbmVudHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmls
dGVyT3BlcmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJhc2ljQ29tcG9uZW50VHJhbnNm
ZXJGaWx0ZXJPcGVyYXRpb246OnRyYW5zZm9ybUNvbG9yIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkludmVydExpZ2h0bmVzc0ZpbHRlck9wZXJhdGlvbjo6dHJhbnNmb3JtQ29sb3IgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6SW52ZXJ0TGlnaHRuZXNzRmlsdGVyT3BlcmF0aW9uOjppbnZl
cnNlVHJhbnNmb3JtQ29sb3IgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRmlsdGVyT3BlcmF0aW9ucy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJPcGVy
YXRpb25zOjp0cmFuc2Zvcm1Db2xvciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJP
cGVyYXRpb25zOjppbnZlcnNlVHJhbnNmb3JtQ29sb3IgY29uc3QpOgorCiAyMDIwLTA1LTMwICBD
b21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmll
d2VkLCByZXZlcnRpbmcgcjI2MjMzNS4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0NvbG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Db2xvci5jcHAJKHJldmlzaW9uIDI2MjM0OCkKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0NvbG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEzLDI3ICsxMTMs
MjcgQEAgU3RyaW5nIENvbG9yOjpzZXJpYWxpemVkKCkgY29uc3QKIHsKICAgICBpZiAoaXNFeHRl
bmRlZCgpKQogICAgICAgICByZXR1cm4gYXNFeHRlbmRlZCgpLmNzc1RleHQoKTsKLSAgICByZXR1
cm4gYXNTaW1wbGVDb2xvcigpLnNlcmlhbGl6YXRpb25Gb3JIVE1MKCk7CisgICAgcmV0dXJuIGFz
U2ltcGxlKCkuc2VyaWFsaXphdGlvbkZvckhUTUwoKTsKIH0KIAogU3RyaW5nIENvbG9yOjpjc3NU
ZXh0KCkgY29uc3QKIHsKICAgICBpZiAoaXNFeHRlbmRlZCgpKQogICAgICAgICByZXR1cm4gYXNF
eHRlbmRlZCgpLmNzc1RleHQoKTsKLSAgICByZXR1cm4gYXNTaW1wbGVDb2xvcigpLnNlcmlhbGl6
YXRpb25Gb3JDU1MoKTsKKyAgICByZXR1cm4gYXNTaW1wbGUoKS5zZXJpYWxpemF0aW9uRm9yQ1NT
KCk7CiB9CiAKIFN0cmluZyBDb2xvcjo6bmFtZUZvclJlbmRlclRyZWVBc1RleHQoKSBjb25zdAog
ewogICAgIGlmIChpc0V4dGVuZGVkKCkpCiAgICAgICAgIHJldHVybiBhc0V4dGVuZGVkKCkuY3Nz
VGV4dCgpOwotICAgIHJldHVybiBhc1NpbXBsZUNvbG9yKCkuc2VyaWFsaXphdGlvbkZvclJlbmRl
clRyZWVBc1RleHQoKTsKKyAgICByZXR1cm4gYXNTaW1wbGUoKS5zZXJpYWxpemF0aW9uRm9yUmVu
ZGVyVHJlZUFzVGV4dCgpOwogfQogCiBDb2xvciBDb2xvcjo6bGlnaHQoKSBjb25zdAogewogICAg
IC8vIEhhcmRjb2RlIHRoaXMgY29tbW9uIGNhc2UgZm9yIHNwZWVkLgotICAgIGlmICghaXNFeHRl
bmRlZCgpICYmIGFzU2ltcGxlQ29sb3IoKSA9PSBibGFjaykKKyAgICBpZiAoIWlzRXh0ZW5kZWQo
KSAmJiBhc1NpbXBsZSgpID09IGJsYWNrKQogICAgICAgICByZXR1cm4gbGlnaHRlbmVkQmxhY2s7
CiAgICAgCiAgICAgY29uc3QgZmxvYXQgc2NhbGVGYWN0b3IgPSBuZXh0YWZ0ZXJmKDI1Ni4wZiwg
MC4wZik7CkBAIC0xNTgsNyArMTU4LDcgQEAgQ29sb3IgQ29sb3I6OmxpZ2h0KCkgY29uc3QKIENv
bG9yIENvbG9yOjpkYXJrKCkgY29uc3QKIHsKICAgICAvLyBIYXJkY29kZSB0aGlzIGNvbW1vbiBj
YXNlIGZvciBzcGVlZC4KLSAgICBpZiAoIWlzRXh0ZW5kZWQoKSAmJiBhc1NpbXBsZUNvbG9yKCkg
PT0gd2hpdGUpCisgICAgaWYgKCFpc0V4dGVuZGVkKCkgJiYgYXNTaW1wbGUoKSA9PSB3aGl0ZSkK
ICAgICAgICAgcmV0dXJuIGRhcmtlbmVkV2hpdGU7CiAgICAgCiAgICAgY29uc3QgZmxvYXQgc2Nh
bGVGYWN0b3IgPSBuZXh0YWZ0ZXJmKDI1Ni4wZiwgMC4wZik7CkBAIC0yNjksNyArMjY5LDcgQEAg
Q29sb3IgQ29sb3I6OmNvbG9yV2l0aEFscGhhKGZsb2F0IGFscGhhKQogICAgIC8vIEZJWE1FOiBU
aGlzIGlzIHdoZXJlIHRoaXMgZnVuY3Rpb24gZGlmZmVycyBmcm9tIGNvbG9yV2l0aEFscGhhVXNp
bmdBbHRlcm5hdGl2ZVJvdW5kaW5nLgogICAgIHVpbnQ4X3QgbmV3QWxwaGEgPSBhbHBoYSAqIDB4
RkY7CiAKLSAgICBDb2xvciByZXN1bHQgPSBhc1NpbXBsZUNvbG9yKCkuY29sb3JXaXRoQWxwaGEo
bmV3QWxwaGEpOworICAgIENvbG9yIHJlc3VsdCA9IGFzU2ltcGxlKCkuY29sb3JXaXRoQWxwaGEo
bmV3QWxwaGEpOwogICAgIGlmIChpc1NlbWFudGljKCkpCiAgICAgICAgIHJlc3VsdC5zZXRJc1Nl
bWFudGljKCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTI4MSw5ICsyODEsOSBAQCBDb2xvciBD
b2xvcjo6Y29sb3JXaXRoQWxwaGFVc2luZ0FsdGVybmF0CiAgICAgICAgIHJldHVybiBhc0V4dGVu
ZGVkKCkuY29sb3JXaXRoQWxwaGEoYWxwaGEpOwogCiAgICAgLy8gRklYTUU6IFRoaXMgaXMgd2hl
cmUgdGhpcyBmdW5jdGlvbiBkaWZmZXJzIGZyb20gY29sb3JXaXRoQWxwaGFVc2luZy4KLSAgICB1
aW50OF90IG5ld0FscGhhID0gY29sb3JGbG9hdFRvU2ltcGxlQ29sb3JCeXRlKGFscGhhKTsKKyAg
ICB1aW50OF90IG5ld0FscGhhID0gc2NhbGVSb3VuZEFuZENsYW1wQ29sb3JDaGFubmVsKGFscGhh
KTsKIAotICAgIENvbG9yIHJlc3VsdCA9IGFzU2ltcGxlQ29sb3IoKS5jb2xvcldpdGhBbHBoYShu
ZXdBbHBoYSk7CisgICAgQ29sb3IgcmVzdWx0ID0gYXNTaW1wbGUoKS5jb2xvcldpdGhBbHBoYShu
ZXdBbHBoYSk7CiAgICAgaWYgKGlzU2VtYW50aWMoKSkKICAgICAgICAgcmVzdWx0LnNldElzU2Vt
YW50aWMoKTsKICAgICByZXR1cm4gcmVzdWx0OwpAQCAtMjkyLDEwICsyOTIsOCBAQCBDb2xvciBD
b2xvcjo6Y29sb3JXaXRoQWxwaGFVc2luZ0FsdGVybmF0CiBDb2xvciBDb2xvcjo6aW52ZXJ0ZWRD
b2xvcldpdGhBbHBoYShmbG9hdCBhbHBoYSkgY29uc3QKIHsKICAgICBpZiAoaXNFeHRlbmRlZCgp
KQotICAgICAgICByZXR1cm4gQ29sb3IgeyBhc0V4dGVuZGVkKCkuaW52ZXJ0ZWRDb2xvcldpdGhB
bHBoYShhbHBoYSkgfTsKLQotICAgIGF1dG8gW3IsIGcsIGIsIGV4aXN0aW5nQWxwaGFdID0gYXNT
aW1wbGVDb2xvcigpOwotICAgIHJldHVybiB7IDB4RkYgLSByLCAweEZGIC0gZywgMHhGRiAtIGIs
IGNvbG9yRmxvYXRUb1NpbXBsZUNvbG9yQnl0ZShhbHBoYSkgfTsKKyAgICAgICAgcmV0dXJuIGFz
RXh0ZW5kZWQoKS5pbnZlcnRlZENvbG9yV2l0aEFscGhhKGFscGhhKTsKKyAgICByZXR1cm4gYXNT
aW1wbGUoKS5pbnZlcnRlZENvbG9yV2l0aEFscGhhKHNjYWxlUm91bmRBbmRDbGFtcENvbG9yQ2hh
bm5lbChhbHBoYSkpOwogfQogCiBDb2xvciBDb2xvcjo6c2VtYW50aWNDb2xvcigpIGNvbnN0CkBA
IC0zMDgsMzggKzMwNiwyMyBAQCBDb2xvciBDb2xvcjo6c2VtYW50aWNDb2xvcigpIGNvbnN0CiAK
IHN0ZDo6cGFpcjxDb2xvclNwYWNlLCBDb2xvckNvbXBvbmVudHM8ZmxvYXQ+PiBDb2xvcjo6Y29s
b3JTcGFjZUFuZENvbXBvbmVudHMoKSBjb25zdAogewotICAgIGlmIChpc0V4dGVuZGVkKCkpIHsK
LSAgICAgICAgYXV0byYgZXh0ZW5kZWRDb2xvciA9IGFzRXh0ZW5kZWQoKTsKLSAgICAgICAgcmV0
dXJuIHsgZXh0ZW5kZWRDb2xvci5jb2xvclNwYWNlKCksIGV4dGVuZGVkQ29sb3IuY2hhbm5lbHMo
KSB9OwotICAgIH0KLQotICAgIGF1dG8gW3IsIGcsIGIsIGFdID0gYXNTaW1wbGVDb2xvcigpOwot
ICAgIHJldHVybiB7IENvbG9yU3BhY2U6OlNSR0IsIENvbG9yQ29tcG9uZW50czxmbG9hdD4geyBy
IC8gMjU1LjBmLCBnIC8gMjU1LjBmLCBiIC8gMjU1LjBmLCAgYSAvIDI1NS4wZiB9IH07CisgICAg
aWYgKGlzRXh0ZW5kZWQoKSkKKyAgICAgICAgcmV0dXJuIHsgYXNFeHRlbmRlZCgpLmNvbG9yU3Bh
Y2UoKSwgYXNFeHRlbmRlZCgpLmNvbXBvbmVudHMoKSB9OworICAgIHJldHVybiB7IENvbG9yU3Bh
Y2U6OlNSR0IsIGFzU2ltcGxlKCkuYXNTUkdCRmxvYXRDb21wb25lbnRzKCkgfTsKIH0KIAogU2lt
cGxlQ29sb3IgQ29sb3I6OnRvU1JHQkFTaW1wbGVDb2xvckxvc3N5KCkgY29uc3QKIHsKLSAgICBp
ZiAoaXNFeHRlbmRlZCgpKSB7Ci0gICAgICAgIGF1dG8gW3IsIGcsIGIsIGFdID0gdG9TUkdCQUNv
bXBvbmVudHNMb3NzeSgpOwotICAgICAgICByZXR1cm4gbWFrZVNpbXBsZUNvbG9yRnJvbUZsb2F0
cyhyLCBnLCBiLCBhKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gYXNTaW1wbGVDb2xvcigpOworICAg
IGlmIChpc0V4dGVuZGVkKCkpCisgICAgICAgIHJldHVybiBtYWtlU2ltcGxlQ29sb3IodG9TUkdC
QUNvbXBvbmVudHNMb3NzeSgpKTsKKyAgICByZXR1cm4gYXNTaW1wbGUoKTsKIH0KIAogQ29sb3JD
b21wb25lbnRzPGZsb2F0PiBDb2xvcjo6dG9TUkdCQUNvbXBvbmVudHNMb3NzeSgpIGNvbnN0CiB7
Ci0gICAgYXV0byBbY29sb3JTcGFjZSwgY29tcG9uZW50c10gPSBjb2xvclNwYWNlQW5kQ29tcG9u
ZW50cygpOwotICAgIHN3aXRjaCAoY29sb3JTcGFjZSkgewotICAgIGNhc2UgQ29sb3JTcGFjZTo6
U1JHQjoKLSAgICAgICAgcmV0dXJuIGNvbXBvbmVudHM7Ci0gICAgY2FzZSBDb2xvclNwYWNlOjpM
aW5lYXJSR0I6Ci0gICAgICAgIHJldHVybiBsaW5lYXJUb1JHQkNvbXBvbmVudHMoY29tcG9uZW50
cyk7Ci0gICAgY2FzZSBDb2xvclNwYWNlOjpEaXNwbGF5UDM6Ci0gICAgICAgIHJldHVybiBwM1Rv
U1JHQihjb21wb25lbnRzKTsKLSAgICB9Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAg
cmV0dXJuIHsgfTsKKyAgICBpZiAoaXNFeHRlbmRlZCgpKQorICAgICAgICByZXR1cm4gYXNFeHRl
bmRlZCgpLnRvU1JHQkFDb21wb25lbnRzTG9zc3koKTsKKyAgICByZXR1cm4gYXNTaW1wbGUoKS5h
c1NSR0JGbG9hdENvbXBvbmVudHMoKTsKIH0KIAogYm9vbCBleHRlbmRlZENvbG9yc0VxdWFsKGNv
bnN0IENvbG9yJiBhLCBjb25zdCBDb2xvciYgYikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0NvbG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvQ29sb3IuaAkocmV2aXNpb24gMjYyMzQ4KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuaAkod29ya2luZyBjb3B5KQpAQCAtMTQwLDExICsxNDAs
MTEgQEAgcHVibGljOgogCiAgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gaXNFeHRl
bmRlZCgpIHx8IChtX2NvbG9yRGF0YS5zaW1wbGVDb2xvckFuZEZsYWdzICYgdmFsaWRTaW1wbGVD
b2xvckJpdCk7IH0KIAotICAgIGJvb2wgaXNPcGFxdWUoKSBjb25zdCB7IHJldHVybiBpc0V4dGVu
ZGVkKCkgPyBhc0V4dGVuZGVkKCkuYWxwaGEoKSA9PSAxLjAgOiBhc1NpbXBsZUNvbG9yKCkuaXNP
cGFxdWUoKTsgfQotICAgIGJvb2wgaXNWaXNpYmxlKCkgY29uc3QgeyByZXR1cm4gaXNFeHRlbmRl
ZCgpID8gYXNFeHRlbmRlZCgpLmFscGhhKCkgPiAwLjAgOiBhc1NpbXBsZUNvbG9yKCkuaXNWaXNp
YmxlKCk7IH0KKyAgICBib29sIGlzT3BhcXVlKCkgY29uc3QgeyByZXR1cm4gaXNFeHRlbmRlZCgp
ID8gYXNFeHRlbmRlZCgpLmFscGhhKCkgPT0gMS4wIDogYXNTaW1wbGUoKS5pc09wYXF1ZSgpOyB9
CisgICAgYm9vbCBpc1Zpc2libGUoKSBjb25zdCB7IHJldHVybiBpc0V4dGVuZGVkKCkgPyBhc0V4
dGVuZGVkKCkuYWxwaGEoKSA+IDAuMCA6IGFzU2ltcGxlKCkuaXNWaXNpYmxlKCk7IH0KIAotICAg
IGludCBhbHBoYSgpIGNvbnN0IHsgcmV0dXJuIGlzRXh0ZW5kZWQoKSA/IGFzRXh0ZW5kZWQoKS5h
bHBoYSgpICogMjU1IDogYXNTaW1wbGVDb2xvcigpLmFscGhhQ29tcG9uZW50KCk7IH0KLSAgICBm
bG9hdCBhbHBoYUFzRmxvYXQoKSBjb25zdCB7IHJldHVybiBpc0V4dGVuZGVkKCkgPyBhc0V4dGVu
ZGVkKCkuYWxwaGEoKSA6IGFzU2ltcGxlQ29sb3IoKS5hbHBoYUNvbXBvbmVudEFzRmxvYXQoKTsg
fQorICAgIGludCBhbHBoYSgpIGNvbnN0IHsgcmV0dXJuIGlzRXh0ZW5kZWQoKSA/IGFzRXh0ZW5k
ZWQoKS5hbHBoYSgpICogMjU1IDogYXNTaW1wbGUoKS5hbHBoYUNvbXBvbmVudCgpOyB9CisgICAg
ZmxvYXQgYWxwaGFBc0Zsb2F0KCkgY29uc3QgeyByZXR1cm4gaXNFeHRlbmRlZCgpID8gYXNFeHRl
bmRlZCgpLmFscGhhKCkgOiBhc1NpbXBsZSgpLmFscGhhQ29tcG9uZW50QXNGbG9hdCgpOyB9CiAK
ICAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3Q7CiAKQEAgLTIzMiw3ICsyMzIsNyBAQCBwdWJsaWM6
CiAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPENvbG9yPiBkZWNv
ZGUoRGVjb2RlciYpOwogCiBwcml2YXRlOgotICAgIGNvbnN0IFNpbXBsZUNvbG9yIGFzU2ltcGxl
Q29sb3IoKSBjb25zdDsKKyAgICBjb25zdCBTaW1wbGVDb2xvciBhc1NpbXBsZSgpIGNvbnN0Owog
CiAgICAgdm9pZCBzZXRTaW1wbGVDb2xvcihTaW1wbGVDb2xvcik7CiAgICAgdm9pZCBzZXRJc1Nl
bWFudGljKCkgeyBtX2NvbG9yRGF0YS5zaW1wbGVDb2xvckFuZEZsYWdzIHw9IGlzU2VtYW50aWNT
aW1wbGVDb2xvckJpdDsgfQpAQCAtMzE4LDcgKzMxOCw3IEBAIGlubGluZSBjb25zdCBFeHRlbmRl
ZENvbG9yJiBDb2xvcjo6YXNFeHQKICAgICByZXR1cm4gKm1fY29sb3JEYXRhLmV4dGVuZGVkQ29s
b3I7CiB9CiAKLWlubGluZSBjb25zdCBTaW1wbGVDb2xvciBDb2xvcjo6YXNTaW1wbGVDb2xvcigp
IGNvbnN0CitpbmxpbmUgY29uc3QgU2ltcGxlQ29sb3IgQ29sb3I6OmFzU2ltcGxlKCkgY29uc3QK
IHsKICAgICBBU1NFUlQoIWlzRXh0ZW5kZWQoKSk7CiAgICAgcmV0dXJuIHsgc3RhdGljX2Nhc3Q8
dWludDMyX3Q+KG1fY29sb3JEYXRhLnNpbXBsZUNvbG9yQW5kRmxhZ3MgPj4gMzIpIH07CkBAIC0z
MzQsMTQgKzMzNCwxNCBAQCBpbmxpbmUgYm9vbCBDb2xvcjo6aXNCbGFja0NvbG9yKGNvbnN0IENv
CiB7CiAgICAgaWYgKGNvbG9yLmlzRXh0ZW5kZWQoKSkKICAgICAgICAgcmV0dXJuIGNvbG9yLmFz
RXh0ZW5kZWQoKS5pc0JsYWNrKCk7Ci0gICAgcmV0dXJuIGNvbG9yLmFzU2ltcGxlQ29sb3IoKSA9
PSBDb2xvcjo6YmxhY2s7CisgICAgcmV0dXJuIGNvbG9yLmFzU2ltcGxlKCkgPT0gQ29sb3I6OmJs
YWNrOwogfQogCiBpbmxpbmUgYm9vbCBDb2xvcjo6aXNXaGl0ZUNvbG9yKGNvbnN0IENvbG9yJiBj
b2xvcikKIHsKICAgICBpZiAoY29sb3IuaXNFeHRlbmRlZCgpKQogICAgICAgICByZXR1cm4gY29s
b3IuYXNFeHRlbmRlZCgpLmlzV2hpdGUoKTsKLSAgICByZXR1cm4gY29sb3IuYXNTaW1wbGVDb2xv
cigpID09IENvbG9yOjp3aGl0ZTsKKyAgICByZXR1cm4gY29sb3IuYXNTaW1wbGUoKSA9PSBDb2xv
cjo6d2hpdGU7CiB9CiAKIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CkBAIC0zNTEsNyArMzUxLDcg
QEAgdm9pZCBDb2xvcjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbgogICAgICAgICBlbmNv
ZGVyIDw8IHRydWU7CiAKICAgICAgICAgYXV0byYgZXh0ZW5kZWRDb2xvciA9IGFzRXh0ZW5kZWQo
KTsKLSAgICAgICAgYXV0byBbYzEsIGMyLCBjMywgYWxwaGFdID0gZXh0ZW5kZWRDb2xvci5jaGFu
bmVscygpOworICAgICAgICBhdXRvIFtjMSwgYzIsIGMzLCBhbHBoYV0gPSBleHRlbmRlZENvbG9y
LmNvbXBvbmVudHMoKTsKICAgICAgICAgZW5jb2RlciA8PCBjMTsKICAgICAgICAgZW5jb2RlciA8
PCBjMjsKICAgICAgICAgZW5jb2RlciA8PCBjMzsKQEAgLTM3MCw3ICszNzAsNyBAQCB2b2lkIENv
bG9yOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uCiAgICAgLy8gRklYTUU6IFRoaXMgc2hv
dWxkIGVuY29kZSB3aGV0aGVyIHRoZSBjb2xvciBpcyBzZW1hbnRpYy4KIAogICAgIGVuY29kZXIg
PDwgdHJ1ZTsKLSAgICBlbmNvZGVyIDw8IGFzU2ltcGxlQ29sb3IoKS52YWx1ZSgpOworICAgIGVu
Y29kZXIgPDwgYXNTaW1wbGUoKS52YWx1ZSgpOwogfQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVy
PgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JDb21wb25lbnRz
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JD
b21wb25lbnRzLmgJKHJldmlzaW9uIDI2MjM0OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0NvbG9yQ29tcG9uZW50cy5oCSh3b3JraW5nIGNvcHkpCkBAIC00OSw2ICs0OSw5
IEBAIHN0cnVjdCBDb2xvckNvbXBvbmVudHMgewogCiAgICAgY29uc3RleHByIENvbG9yQ29tcG9u
ZW50cyBhYnMoKSBjb25zdDsKIAorICAgIGNvbnN0ZXhwciBUJiBvcGVyYXRvcltdKHNpemVfdCBp
KSB7IHJldHVybiBjb21wb25lbnRzW2ldOyB9CisgICAgY29uc3RleHByIGNvbnN0IFQmIG9wZXJh
dG9yW10oc2l6ZV90IGkpIGNvbnN0IHsgcmV0dXJuIGNvbXBvbmVudHNbaV07IH0KKwogICAgIHRl
bXBsYXRlPHN0ZDo6c2l6ZV90IE4+CiAgICAgY29uc3RleHByIFQgZ2V0KCkgY29uc3Q7CiAKQEAg
LTU4LDEwICs2MSwxMCBAQCBzdHJ1Y3QgQ29sb3JDb21wb25lbnRzIHsKIHRlbXBsYXRlPHR5cGVu
YW1lIFQ+CiBjb25zdGV4cHIgQ29sb3JDb21wb25lbnRzPFQ+JiBDb2xvckNvbXBvbmVudHM8VD46
Om9wZXJhdG9yKz0oY29uc3QgQ29sb3JDb21wb25lbnRzJiByaHMpCiB7Ci0gICAgY29tcG9uZW50
c1swXSArPSByaHMuY29tcG9uZW50c1swXTsKLSAgICBjb21wb25lbnRzWzFdICs9IHJocy5jb21w
b25lbnRzWzFdOwotICAgIGNvbXBvbmVudHNbMl0gKz0gcmhzLmNvbXBvbmVudHNbMl07Ci0gICAg
Y29tcG9uZW50c1szXSArPSByaHMuY29tcG9uZW50c1szXTsKKyAgICBjb21wb25lbnRzWzBdICs9
IHJoc1swXTsKKyAgICBjb21wb25lbnRzWzFdICs9IHJoc1sxXTsKKyAgICBjb21wb25lbnRzWzJd
ICs9IHJoc1syXTsKKyAgICBjb21wb25lbnRzWzNdICs9IHJoc1szXTsKICAgICByZXR1cm4gKnRo
aXM7CiB9CiAKQEAgLTEyMCwxMCArMTIzLDEwIEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiBjb25z
dGV4cHIgQ29sb3JDb21wb25lbnRzPFQ+IHBlckNvbXBvbmVudE1heChjb25zdCBDb2xvckNvbXBv
bmVudHM8VD4mIGEsIGNvbnN0IENvbG9yQ29tcG9uZW50czxUPiYgYikKIHsKICAgICByZXR1cm4g
ewotICAgICAgICBzdGQ6Om1heChhLmNvbXBvbmVudHNbMF0sIGIuY29tcG9uZW50c1swXSksCi0g
ICAgICAgIHN0ZDo6bWF4KGEuY29tcG9uZW50c1sxXSwgYi5jb21wb25lbnRzWzFdKSwKLSAgICAg
ICAgc3RkOjptYXgoYS5jb21wb25lbnRzWzJdLCBiLmNvbXBvbmVudHNbMl0pLAotICAgICAgICBz
dGQ6Om1heChhLmNvbXBvbmVudHNbM10sIGIuY29tcG9uZW50c1szXSkKKyAgICAgICAgc3RkOjpt
YXgoYVswXSwgYlswXSksCisgICAgICAgIHN0ZDo6bWF4KGFbMV0sIGJbMV0pLAorICAgICAgICBz
dGQ6Om1heChhWzJdLCBiWzJdKSwKKyAgICAgICAgc3RkOjptYXgoYVszXSwgYlszXSkKICAgICB9
OwogfQogCkBAIC0xMzEsMTAgKzEzNCwxMCBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogY29uc3Rl
eHByIENvbG9yQ29tcG9uZW50czxUPiBwZXJDb21wb25lbnRNaW4oY29uc3QgQ29sb3JDb21wb25l
bnRzPFQ+JiBhLCBjb25zdCBDb2xvckNvbXBvbmVudHM8VD4mIGIpCiB7CiAgICAgcmV0dXJuIHsK
LSAgICAgICAgc3RkOjptaW4oYS5jb21wb25lbnRzWzBdLCBiLmNvbXBvbmVudHNbMF0pLAotICAg
ICAgICBzdGQ6Om1pbihhLmNvbXBvbmVudHNbMV0sIGIuY29tcG9uZW50c1sxXSksCi0gICAgICAg
IHN0ZDo6bWluKGEuY29tcG9uZW50c1syXSwgYi5jb21wb25lbnRzWzJdKSwKLSAgICAgICAgc3Rk
OjptaW4oYS5jb21wb25lbnRzWzNdLCBiLmNvbXBvbmVudHNbM10pCisgICAgICAgIHN0ZDo6bWlu
KGFbMF0sIGJbMF0pLAorICAgICAgICBzdGQ6Om1pbihhWzFdLCBiWzFdKSwKKyAgICAgICAgc3Rk
OjptaW4oYVsyXSwgYlsyXSksCisgICAgICAgIHN0ZDo6bWluKGFbM10sIGJbM10pCiAgICAgfTsK
IH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JNYXRyaXgu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvck1h
dHJpeC5oCShyZXZpc2lvbiAyNjIzNDgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Db2xvck1hdHJpeC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTUsMTcgKzExNSwxNyBAQCBj
b25zdGV4cHIgQ29sb3JDb21wb25lbnRzPGZsb2F0PiBDb2xvck1hCiAgICAgZm9yIChzaXplX3Qg
cm93ID0gMDsgcm93IDwgUm93czsgKytyb3cpIHsKICAgICAgICAgaWYgY29uc3RleHByIChDb2x1
bW5zIDw9IENvbG9yQ29tcG9uZW50czxmbG9hdD46OlNpemUpIHsKICAgICAgICAgICAgIGZvciAo
c2l6ZV90IGNvbHVtbiA9IDA7IGNvbHVtbiA8IENvbHVtbnM7ICsrY29sdW1uKQotICAgICAgICAg
ICAgICAgIHJlc3VsdC5jb21wb25lbnRzW3Jvd10gKz0gYXQocm93LCBjb2x1bW4pICogaW5wdXRW
ZWN0b3IuY29tcG9uZW50c1tjb2x1bW5dOworICAgICAgICAgICAgICAgIHJlc3VsdFtyb3ddICs9
IGF0KHJvdywgY29sdW1uKSAqIGlucHV0VmVjdG9yW2NvbHVtbl07CiAgICAgICAgIH0gZWxzZSBp
ZiBjb25zdGV4cHIgKENvbHVtbnMgPiBDb2xvckNvbXBvbmVudHM8ZmxvYXQ+OjpTaXplKSB7CiAg
ICAgICAgICAgICBmb3IgKHNpemVfdCBjb2x1bW4gPSAwOyBjb2x1bW4gPCBDb2xvckNvbXBvbmVu
dHM8ZmxvYXQ+OjpTaXplOyArK2NvbHVtbikKLSAgICAgICAgICAgICAgICByZXN1bHQuY29tcG9u
ZW50c1tyb3ddICs9IGF0KHJvdywgY29sdW1uKSAqIGlucHV0VmVjdG9yLmNvbXBvbmVudHNbY29s
dW1uXTsKKyAgICAgICAgICAgICAgICByZXN1bHRbcm93XSArPSBhdChyb3csIGNvbHVtbikgKiBp
bnB1dFZlY3Rvcltjb2x1bW5dOwogICAgICAgICAgICAgZm9yIChzaXplX3QgYWRkaXRpb25hbENv
bHVtbiA9IENvbG9yQ29tcG9uZW50czxmbG9hdD46OlNpemU7IGFkZGl0aW9uYWxDb2x1bW4gPCBD
b2x1bW5zOyArK2FkZGl0aW9uYWxDb2x1bW4pCi0gICAgICAgICAgICAgICAgcmVzdWx0LmNvbXBv
bmVudHNbcm93XSArPSBhdChyb3csIGFkZGl0aW9uYWxDb2x1bW4pOworICAgICAgICAgICAgICAg
IHJlc3VsdFtyb3ddICs9IGF0KHJvdywgYWRkaXRpb25hbENvbHVtbik7CiAgICAgICAgIH0KICAg
ICB9CiAgICAgaWYgY29uc3RleHByIChDb2xvckNvbXBvbmVudHM8ZmxvYXQ+OjpTaXplID4gUm93
cykgewogICAgICAgICBmb3IgKHNpemVfdCBhZGRpdGlvbmFsUm93ID0gUm93czsgYWRkaXRpb25h
bFJvdyA8IENvbG9yQ29tcG9uZW50czxmbG9hdD46OlNpemU7ICsrYWRkaXRpb25hbFJvdykKLSAg
ICAgICAgICAgIHJlc3VsdC5jb21wb25lbnRzW2FkZGl0aW9uYWxSb3ddID0gaW5wdXRWZWN0b3Iu
Y29tcG9uZW50c1thZGRpdGlvbmFsUm93XTsKKyAgICAgICAgICAgIHJlc3VsdFthZGRpdGlvbmFs
Um93XSA9IGlucHV0VmVjdG9yW2FkZGl0aW9uYWxSb3ddOwogICAgIH0KIAogICAgIHJldHVybiBy
ZXN1bHQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclV0aWxp
dGllcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Q29sb3JVdGlsaXRpZXMuY3BwCShyZXZpc2lvbiAyNjIzNDgpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Db2xvclV0aWxpdGllcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMz
LDEwICszMywxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGJvb2wgYXJlRXNzZW50aWFsbHlF
cXVhbChjb25zdCBDb2xvckNvbXBvbmVudHM8ZmxvYXQ+JiBhLCBjb25zdCBDb2xvckNvbXBvbmVu
dHM8ZmxvYXQ+JiBiKQogewotICAgIHJldHVybiBXVEY6OmFyZUVzc2VudGlhbGx5RXF1YWwoYS5j
b21wb25lbnRzWzBdLCBiLmNvbXBvbmVudHNbMF0pCi0gICAgICAgICYmIFdURjo6YXJlRXNzZW50
aWFsbHlFcXVhbChhLmNvbXBvbmVudHNbMV0sIGIuY29tcG9uZW50c1sxXSkKLSAgICAgICAgJiYg
V1RGOjphcmVFc3NlbnRpYWxseUVxdWFsKGEuY29tcG9uZW50c1syXSwgYi5jb21wb25lbnRzWzJd
KQotICAgICAgICAmJiBXVEY6OmFyZUVzc2VudGlhbGx5RXF1YWwoYS5jb21wb25lbnRzWzNdLCBi
LmNvbXBvbmVudHNbM10pOworICAgIHJldHVybiBXVEY6OmFyZUVzc2VudGlhbGx5RXF1YWwoYVsw
XSwgYlswXSkKKyAgICAgICAgJiYgV1RGOjphcmVFc3NlbnRpYWxseUVxdWFsKGFbMV0sIGJbMV0p
CisgICAgICAgICYmIFdURjo6YXJlRXNzZW50aWFsbHlFcXVhbChhWzJdLCBiWzJdKQorICAgICAg
ICAmJiBXVEY6OmFyZUVzc2VudGlhbGx5RXF1YWwoYVszXSwgYlszXSk7CiB9CiAKIC8vIFRoZXNl
IGFyZSB0aGUgc3RhbmRhcmQgc1JHQiA8LT4gbGluZWFyUkdCIGNvbnZlcnNpb24gZnVuY3Rpb25z
IChodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TUkdCKS4KQEAgLTU5LDIwICs1OSwyMCBA
QCBmbG9hdCByZ2JUb0xpbmVhckNvbG9yQ29tcG9uZW50KGZsb2F0IGMpCiBDb2xvckNvbXBvbmVu
dHM8ZmxvYXQ+IHJnYlRvTGluZWFyQ29tcG9uZW50cyhjb25zdCBDb2xvckNvbXBvbmVudHM8Zmxv
YXQ+JiBSR0JDb2xvcikKIHsKICAgICByZXR1cm4gewotICAgICAgICByZ2JUb0xpbmVhckNvbG9y
Q29tcG9uZW50KFJHQkNvbG9yLmNvbXBvbmVudHNbMF0pLAotICAgICAgICByZ2JUb0xpbmVhckNv
bG9yQ29tcG9uZW50KFJHQkNvbG9yLmNvbXBvbmVudHNbMV0pLAotICAgICAgICByZ2JUb0xpbmVh
ckNvbG9yQ29tcG9uZW50KFJHQkNvbG9yLmNvbXBvbmVudHNbMl0pLAotICAgICAgICBSR0JDb2xv
ci5jb21wb25lbnRzWzNdCisgICAgICAgIHJnYlRvTGluZWFyQ29sb3JDb21wb25lbnQoUkdCQ29s
b3JbMF0pLAorICAgICAgICByZ2JUb0xpbmVhckNvbG9yQ29tcG9uZW50KFJHQkNvbG9yWzFdKSwK
KyAgICAgICAgcmdiVG9MaW5lYXJDb2xvckNvbXBvbmVudChSR0JDb2xvclsyXSksCisgICAgICAg
IFJHQkNvbG9yWzNdCiAgICAgfTsKIH0KIAogQ29sb3JDb21wb25lbnRzPGZsb2F0PiBsaW5lYXJU
b1JHQkNvbXBvbmVudHMoY29uc3QgQ29sb3JDb21wb25lbnRzPGZsb2F0PiYgbGluZWFyUkdCKQog
ewogICAgIHJldHVybiB7Ci0gICAgICAgIGxpbmVhclRvUkdCQ29sb3JDb21wb25lbnQobGluZWFy
UkdCLmNvbXBvbmVudHNbMF0pLAotICAgICAgICBsaW5lYXJUb1JHQkNvbG9yQ29tcG9uZW50KGxp
bmVhclJHQi5jb21wb25lbnRzWzFdKSwKLSAgICAgICAgbGluZWFyVG9SR0JDb2xvckNvbXBvbmVu
dChsaW5lYXJSR0IuY29tcG9uZW50c1syXSksCi0gICAgICAgIGxpbmVhclJHQi5jb21wb25lbnRz
WzNdCisgICAgICAgIGxpbmVhclRvUkdCQ29sb3JDb21wb25lbnQobGluZWFyUkdCWzBdKSwKKyAg
ICAgICAgbGluZWFyVG9SR0JDb2xvckNvbXBvbmVudChsaW5lYXJSR0JbMV0pLAorICAgICAgICBs
aW5lYXJUb1JHQkNvbG9yQ29tcG9uZW50KGxpbmVhclJHQlsyXSksCisgICAgICAgIGxpbmVhclJH
QlszXQogICAgIH07CiB9CiAKQEAgLTE0Miw4ICsxNDIsNyBAQCBmbG9hdCBsaWdodG5lc3MoY29u
c3QgQ29sb3JDb21wb25lbnRzPGZsCiB7CiAgICAgYXV0byBbciwgZywgYiwgYV0gPSBzUkdCQ29t
cG9udGVudHM7CiAKLSAgICBmbG9hdCBtYXggPSBzdGQ6Om1heCh7IHIsIGcsIGIgfSk7Ci0gICAg
ZmxvYXQgbWluID0gc3RkOjptaW4oeyByLCBnLCBiIH0pOworICAgIGF1dG8gW21pbiwgbWF4XSA9
IHN0ZDo6bWlubWF4KHsgciwgZywgYiB9KTsKIAogICAgIHJldHVybiAwLjVmICogKG1heCArIG1p
bik7CiB9CkBAIC0xNjIsOSArMTYxLDkgQEAgc3RhdGljIGZsb2F0IHNSR0JUb0xpbmVhckNvbG9y
Q29tcG9uZW50RgogZmxvYXQgbHVtaW5hbmNlKGNvbnN0IENvbG9yQ29tcG9uZW50czxmbG9hdD4m
IHNSR0JDb21wb25lbnRzKQogewogICAgIC8vIFZhbHVlcyBmcm9tIGh0dHBzOi8vd3d3LnczLm9y
Zy9UUi8yMDA4L1JFQy1XQ0FHMjAtMjAwODEyMTEvI3JlbGF0aXZlbHVtaW5hbmNlZGVmCi0gICAg
cmV0dXJuIDAuMjEyNmYgKiBzUkdCVG9MaW5lYXJDb2xvckNvbXBvbmVudEZvckx1bWluYW5jZShz
UkdCQ29tcG9uZW50cy5jb21wb25lbnRzWzBdKQotICAgICAgICArIDAuNzE1MmYgKiBzUkdCVG9M
aW5lYXJDb2xvckNvbXBvbmVudEZvckx1bWluYW5jZShzUkdCQ29tcG9uZW50cy5jb21wb25lbnRz
WzFdKQotICAgICAgICArIDAuMDcyMmYgKiBzUkdCVG9MaW5lYXJDb2xvckNvbXBvbmVudEZvckx1
bWluYW5jZShzUkdCQ29tcG9uZW50cy5jb21wb25lbnRzWzJdKTsKKyAgICByZXR1cm4gMC4yMTI2
ZiAqIHNSR0JUb0xpbmVhckNvbG9yQ29tcG9uZW50Rm9yTHVtaW5hbmNlKHNSR0JDb21wb25lbnRz
WzBdKQorICAgICAgICArIDAuNzE1MmYgKiBzUkdCVG9MaW5lYXJDb2xvckNvbXBvbmVudEZvckx1
bWluYW5jZShzUkdCQ29tcG9uZW50c1sxXSkKKyAgICAgICAgKyAwLjA3MjJmICogc1JHQlRvTGlu
ZWFyQ29sb3JDb21wb25lbnRGb3JMdW1pbmFuY2Uoc1JHQkNvbXBvbmVudHNbMl0pOwogfQogCiBm
bG9hdCBjb250cmFzdFJhdGlvKGNvbnN0IENvbG9yQ29tcG9uZW50czxmbG9hdD4mIGNvbXBvbmVu
dHNBLCBjb25zdCBDb2xvckNvbXBvbmVudHM8ZmxvYXQ+JiBjb21wb25lbnRzQikKQEAgLTE4NSw4
ICsxODQsNyBAQCBDb2xvckNvbXBvbmVudHM8ZmxvYXQ+IHNSR0JUb0hTTChjb25zdCBDCiAgICAg
Ly8gaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9IU0xfY29sb3Jfc3BhY2UuCiAgICAgYXV0
byBbciwgZywgYiwgYWxwaGFdID0gc1JHQkNvbXBvbnRlbnRzOwogCi0gICAgZmxvYXQgbWF4ID0g
c3RkOjptYXgoeyByLCBnLCBiIH0pOwotICAgIGZsb2F0IG1pbiA9IHN0ZDo6bWluKHsgciwgZywg
YiB9KTsKKyAgICBhdXRvIFttaW4sIG1heF0gPSBzdGQ6Om1pbm1heCh7IHIsIGcsIGIgfSk7CiAg
ICAgZmxvYXQgY2hyb21hID0gbWF4IC0gbWluOwogCiAgICAgZmxvYXQgaHVlOwpAQCAtMjQyLDkg
KzI0MCw3IEBAIHN0YXRpYyBmbG9hdCBjYWxjSHVlKGZsb2F0IHRlbXAxLCBmbG9hdCAKIC8vIGZ1
cnRoZXIgZXhwbGFuYXRpb24gYXZhaWxhYmxlIGF0IGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dp
a2kvSFNMX2NvbG9yX3NwYWNlCiBDb2xvckNvbXBvbmVudHM8ZmxvYXQ+IGhzbFRvU1JHQihjb25z
dCBDb2xvckNvbXBvbmVudHM8ZmxvYXQ+JiBoc2xDb2xvcikKIHsKLSAgICBmbG9hdCBodWUgPSBo
c2xDb2xvci5jb21wb25lbnRzWzBdOwotICAgIGZsb2F0IHNhdHVyYXRpb24gPSBoc2xDb2xvci5j
b21wb25lbnRzWzFdOwotICAgIGZsb2F0IGxpZ2h0bmVzcyA9IGhzbENvbG9yLmNvbXBvbmVudHNb
Ml07CisgICAgYXV0byBbaHVlLCBzYXR1cmF0aW9uLCBsaWdodG5lc3MsIGFscGhhXSA9IGhzbENv
bG9yOwogCiAgICAgLy8gQ29udmVydCBiYWNrIHRvIFJHQi4KICAgICBpZiAoIXNhdHVyYXRpb24p
IHsKQEAgLTI1Miw3ICsyNDgsNyBAQCBDb2xvckNvbXBvbmVudHM8ZmxvYXQ+IGhzbFRvU1JHQihj
b25zdCBDCiAgICAgICAgICAgICBsaWdodG5lc3MsCiAgICAgICAgICAgICBsaWdodG5lc3MsCiAg
ICAgICAgICAgICBsaWdodG5lc3MsCi0gICAgICAgICAgICBoc2xDb2xvci5jb21wb25lbnRzWzNd
CisgICAgICAgICAgICBhbHBoYQogICAgICAgICB9OwogICAgIH0KICAgICAKQEAgLTI2NCw3ICsy
NjAsNyBAQCBDb2xvckNvbXBvbmVudHM8ZmxvYXQ+IGhzbFRvU1JHQihjb25zdCBDCiAgICAgICAg
IGNhbGNIdWUodGVtcDEsIHRlbXAyLCBodWUgKyAyLjBmKSwKICAgICAgICAgY2FsY0h1ZSh0ZW1w
MSwgdGVtcDIsIGh1ZSksCiAgICAgICAgIGNhbGNIdWUodGVtcDEsIHRlbXAyLCBodWUgLSAyLjBm
KSwKLSAgICAgICAgaHNsQ29sb3IuY29tcG9uZW50c1szXQorICAgICAgICBhbHBoYQogICAgIH07
CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yVXRpbGl0
aWVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29s
b3JVdGlsaXRpZXMuaAkocmV2aXNpb24gMjYyMzQ4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvQ29sb3JVdGlsaXRpZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNjMsNiArNjMs
MTEgQEAgaW5saW5lIHVpbnQ4X3Qgcm91bmRBbmRDbGFtcENvbG9yQ2hhbm5lbAogICAgIHJldHVy
biBzdGQ6OmNsYW1wKHN0ZDo6cm91bmQodmFsdWUpLCAwLmYsIDI1NS5mKTsKIH0KIAoraW5saW5l
IHVpbnQ4X3Qgc2NhbGVSb3VuZEFuZENsYW1wQ29sb3JDaGFubmVsKGZsb2F0IGYpCit7CisgICAg
cmV0dXJuIHN0ZDo6Y2xhbXAoc3RhdGljX2Nhc3Q8aW50Pihscm91bmRmKDI1NS4wZiAqIGYpKSwg
MCwgMjU1KTsKK30KKwogY29uc3RleHByIHVpbnQxNl90IGZhc3RNdWx0aXBseUJ5MjU1KHVpbnQx
Nl90IHZhbHVlKQogewogICAgIHJldHVybiAodmFsdWUgPDwgOCkgLSB2YWx1ZTsKQEAgLTc3LDkg
KzgyLDUgQEAgY29uc3RleHByIHVpbnQxNl90IGZhc3REaXZpZGVCeTI1NSh1aW50MQogICAgIHJl
dHVybiBhcHByb3hpbWF0aW9uICsgKHJlbWFpbmRlciA+PiA4KTsKIH0KIAotaW5saW5lIHVpbnQ4
X3QgY29sb3JGbG9hdFRvU2ltcGxlQ29sb3JCeXRlKGZsb2F0IGYpCi17Ci0gICAgcmV0dXJuIHN0
ZDo6Y2xhbXAoc3RhdGljX2Nhc3Q8aW50Pihscm91bmRmKDI1NS4wZiAqIGYpKSwgMCwgMjU1KTsK
LX0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvRXh0ZW5kZWRDb2xvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvRXh0ZW5kZWRDb2xvci5jcHAJKHJldmlzaW9uIDI2MjM0OCkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0V4dGVuZGVkQ29sb3IuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5j
bHVkZSAiRXh0ZW5kZWRDb2xvci5oIgogCisjaW5jbHVkZSAiQ29sb3JVdGlsaXRpZXMuaCIKICNp
bmNsdWRlIDx3dGYvSGFzaGVyLmg+CiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZU51bWJlcnMuaD4KQEAgLTM5LDcgKzQwLDcg
QEAgUmVmPEV4dGVuZGVkQ29sb3I+IEV4dGVuZGVkQ29sb3I6OmNyZWF0ZQogCiB1bnNpZ25lZCBF
eHRlbmRlZENvbG9yOjpoYXNoKCkgY29uc3QKIHsKLSAgICBhdXRvIFtjMSwgYzIsIGMzLCBhbHBo
YV0gPSBjaGFubmVscygpOworICAgIGF1dG8gW2MxLCBjMiwgYzMsIGFscGhhXSA9IGNvbXBvbmVu
dHMoKTsKICAgICByZXR1cm4gY29tcHV0ZUhhc2goYzEsIGMyLCBjMywgYWxwaGEsIG1fY29sb3JT
cGFjZSk7CiB9CiAKQEAgLTU4LDcgKzU5LDcgQEAgU3RyaW5nIEV4dGVuZGVkQ29sb3I6OmNzc1Rl
eHQoKSBjb25zdAogICAgICAgICByZXR1cm4gV1RGOjplbXB0eVN0cmluZygpOwogICAgIH0KIAot
ICAgIGF1dG8gW2MxLCBjMiwgYzMsIGV4aXN0aW5nQWxwaGFdID0gY2hhbm5lbHMoKTsKKyAgICBh
dXRvIFtjMSwgYzIsIGMzLCBleGlzdGluZ0FscGhhXSA9IGNvbXBvbmVudHMoKTsKIAogICAgIGlm
IChXVEY6OmFyZUVzc2VudGlhbGx5RXF1YWwoYWxwaGEoKSwgMS4wZikpCiAgICAgICAgIHJldHVy
biBtYWtlU3RyaW5nKCJjb2xvcigiLCBjb2xvclNwYWNlLCAnICcsIGMxLCAnICcsIGMyLCAnICcs
IGMzLCAnKScpOwpAQCAtNjgsMjUgKzY5LDM5IEBAIFN0cmluZyBFeHRlbmRlZENvbG9yOjpjc3NU
ZXh0KCkgY29uc3QKIAogUmVmPEV4dGVuZGVkQ29sb3I+IEV4dGVuZGVkQ29sb3I6OmNvbG9yV2l0
aEFscGhhKGZsb2F0IG92ZXJyaWRlQWxwaGEpIGNvbnN0CiB7Ci0gICAgYXV0byBbYzEsIGMyLCBj
MywgZXhpc3RpbmdBbHBoYV0gPSBjaGFubmVscygpOworICAgIGF1dG8gW2MxLCBjMiwgYzMsIGV4
aXN0aW5nQWxwaGFdID0gY29tcG9uZW50cygpOwogICAgIHJldHVybiBFeHRlbmRlZENvbG9yOjpj
cmVhdGUoYzEsIGMyLCBjMywgb3ZlcnJpZGVBbHBoYSwgY29sb3JTcGFjZSgpKTsKIH0KIAogUmVm
PEV4dGVuZGVkQ29sb3I+IEV4dGVuZGVkQ29sb3I6OmludmVydGVkQ29sb3JXaXRoQWxwaGEoZmxv
YXQgb3ZlcnJpZGVBbHBoYSkgY29uc3QKIHsKLSAgICBhdXRvIFtjMSwgYzIsIGMzLCBleGlzdGlu
Z0FscGhhXSA9IGNoYW5uZWxzKCk7CisgICAgYXV0byBbYzEsIGMyLCBjMywgZXhpc3RpbmdBbHBo
YV0gPSBjb21wb25lbnRzKCk7CiAgICAgcmV0dXJuIEV4dGVuZGVkQ29sb3I6OmNyZWF0ZSgxLjBm
IC0gYzEsIDEuMGYgLSBjMiwgMS4wZiAtIGMzLCBvdmVycmlkZUFscGhhLCBjb2xvclNwYWNlKCkp
OwogfQogCitDb2xvckNvbXBvbmVudHM8ZmxvYXQ+IEV4dGVuZGVkQ29sb3I6OnRvU1JHQkFDb21w
b25lbnRzTG9zc3koKSBjb25zdAoreworICAgIHN3aXRjaCAobV9jb2xvclNwYWNlKSB7CisgICAg
Y2FzZSBDb2xvclNwYWNlOjpTUkdCOgorICAgICAgICByZXR1cm4gbV9jb21wb25lbnRzOworICAg
IGNhc2UgQ29sb3JTcGFjZTo6TGluZWFyUkdCOgorICAgICAgICByZXR1cm4gbGluZWFyVG9SR0JD
b21wb25lbnRzKG1fY29tcG9uZW50cyk7CisgICAgY2FzZSBDb2xvclNwYWNlOjpEaXNwbGF5UDM6
CisgICAgICAgIHJldHVybiBwM1RvU1JHQihtX2NvbXBvbmVudHMpOworICAgIH0KKyAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4geyB9OworfQorCiBib29sIEV4dGVuZGVkQ29s
b3I6OmlzV2hpdGUoKSBjb25zdAogewotICAgIGF1dG8gW2MxLCBjMiwgYzMsIGFscGhhXSA9IGNo
YW5uZWxzKCk7CisgICAgYXV0byBbYzEsIGMyLCBjMywgYWxwaGFdID0gY29tcG9uZW50cygpOwog
ICAgIHJldHVybiBjMSA9PSAxICYmIGMyID09IDEgJiYgYzMgPT0gMSAmJiBhbHBoYSA9PSAxOwog
fQogCiBib29sIEV4dGVuZGVkQ29sb3I6OmlzQmxhY2soKSBjb25zdAogewotICAgIGF1dG8gW2Mx
LCBjMiwgYzMsIGFscGhhXSA9IGNoYW5uZWxzKCk7CisgICAgYXV0byBbYzEsIGMyLCBjMywgYWxw
aGFdID0gY29tcG9uZW50cygpOwogICAgIHJldHVybiAhYzEgJiYgIWMyICYmICFjMyAmJiBhbHBo
YSA9PSAxOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRl
bmRlZENvbG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvRXh0ZW5kZWRDb2xvci5oCShyZXZpc2lvbiAyNjIzNDgpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9FeHRlbmRlZENvbG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDkg
KzM3LDkgQEAgY2xhc3MgRXh0ZW5kZWRDb2xvciA6IHB1YmxpYyBSZWZDb3VudGVkPAogcHVibGlj
OgogICAgIHN0YXRpYyBSZWY8RXh0ZW5kZWRDb2xvcj4gY3JlYXRlKGZsb2F0LCBmbG9hdCwgZmxv
YXQsIGZsb2F0IGFscGhhLCBDb2xvclNwYWNlID0gQ29sb3JTcGFjZTo6U1JHQik7CiAKLSAgICBm
bG9hdCBhbHBoYSgpIGNvbnN0IHsgcmV0dXJuIG1fY2hhbm5lbHMuY29tcG9uZW50c1szXTsgfQor
ICAgIGZsb2F0IGFscGhhKCkgY29uc3QgeyByZXR1cm4gbV9jb21wb25lbnRzWzNdOyB9CiAKLSAg
ICBjb25zdCBDb2xvckNvbXBvbmVudHM8ZmxvYXQ+JiBjaGFubmVscygpIGNvbnN0IHsgcmV0dXJu
IG1fY2hhbm5lbHM7IH0KKyAgICBjb25zdCBDb2xvckNvbXBvbmVudHM8ZmxvYXQ+JiBjb21wb25l
bnRzKCkgY29uc3QgeyByZXR1cm4gbV9jb21wb25lbnRzOyB9CiAgICAgQ29sb3JTcGFjZSBjb2xv
clNwYWNlKCkgY29uc3QgeyByZXR1cm4gbV9jb2xvclNwYWNlOyB9CiAKICAgICBXRUJDT1JFX0VY
UE9SVCB1bnNpZ25lZCBoYXNoKCkgY29uc3Q7CkBAIC00OSwyMiArNDksMjQgQEAgcHVibGljOgog
ICAgIFJlZjxFeHRlbmRlZENvbG9yPiBjb2xvcldpdGhBbHBoYShmbG9hdCkgY29uc3Q7CiAgICAg
UmVmPEV4dGVuZGVkQ29sb3I+IGludmVydGVkQ29sb3JXaXRoQWxwaGEoZmxvYXQpIGNvbnN0Owog
CisgICAgQ29sb3JDb21wb25lbnRzPGZsb2F0PiB0b1NSR0JBQ29tcG9uZW50c0xvc3N5KCkgY29u
c3Q7CisKICAgICBib29sIGlzV2hpdGUoKSBjb25zdDsKICAgICBib29sIGlzQmxhY2soKSBjb25z
dDsKIAogcHJpdmF0ZToKICAgICBFeHRlbmRlZENvbG9yKGZsb2F0IGMxLCBmbG9hdCBjMiwgZmxv
YXQgYzMsIGZsb2F0IGFscGhhLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UpCi0gICAgICAgIDogbV9j
aGFubmVscyhjMSwgYzIsIGMzLCBhbHBoYSkKKyAgICAgICAgOiBtX2NvbXBvbmVudHMoYzEsIGMy
LCBjMywgYWxwaGEpCiAgICAgICAgICwgbV9jb2xvclNwYWNlKGNvbG9yU3BhY2UpCiAgICAgeyB9
CiAKLSAgICBDb2xvckNvbXBvbmVudHM8ZmxvYXQ+IG1fY2hhbm5lbHM7CisgICAgQ29sb3JDb21w
b25lbnRzPGZsb2F0PiBtX2NvbXBvbmVudHM7CiAgICAgQ29sb3JTcGFjZSBtX2NvbG9yU3BhY2Ug
eyBDb2xvclNwYWNlOjpTUkdCIH07CiB9OwogCiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IEV4dGVuZGVkQ29sb3ImIGEsIGNvbnN0IEV4dGVuZGVkQ29sb3ImIGIpCiB7Ci0gICAgcmV0dXJu
IGEuY29sb3JTcGFjZSgpID09IGIuY29sb3JTcGFjZSgpICYmIGEuY2hhbm5lbHMoKSA9PSBiLmNo
YW5uZWxzKCk7CisgICAgcmV0dXJuIGEuY29sb3JTcGFjZSgpID09IGIuY29sb3JTcGFjZSgpICYm
IGEuY29tcG9uZW50cygpID09IGIuY29tcG9uZW50cygpOwogfQogCiBpbmxpbmUgYm9vbCBvcGVy
YXRvciE9KGNvbnN0IEV4dGVuZGVkQ29sb3ImIGEsIGNvbnN0IEV4dGVuZGVkQ29sb3ImIGIpCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaW1wbGVDb2xvci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2ltcGxlQ29sb3Iu
Y3BwCShyZXZpc2lvbiAyNjIzNDgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9TaW1wbGVDb2xvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY5LDE4ICs2OSwyMyBAQCBTaW1w
bGVDb2xvciBtYWtlVW5wcmVtdWx0aXBsaWVkU2ltcGxlQ29sCiAKIFNpbXBsZUNvbG9yIG1ha2VT
aW1wbGVDb2xvckZyb21GbG9hdHMoZmxvYXQgciwgZmxvYXQgZywgZmxvYXQgYiwgZmxvYXQgYSkK
IHsKLSAgICByZXR1cm4gbWFrZVNpbXBsZUNvbG9yKGNvbG9yRmxvYXRUb1NpbXBsZUNvbG9yQnl0
ZShyKSwgY29sb3JGbG9hdFRvU2ltcGxlQ29sb3JCeXRlKGcpLCBjb2xvckZsb2F0VG9TaW1wbGVD
b2xvckJ5dGUoYiksIGNvbG9yRmxvYXRUb1NpbXBsZUNvbG9yQnl0ZShhKSk7CisgICAgcmV0dXJu
IG1ha2VTaW1wbGVDb2xvcigKKyAgICAgICAgc2NhbGVSb3VuZEFuZENsYW1wQ29sb3JDaGFubmVs
KHIpLAorICAgICAgICBzY2FsZVJvdW5kQW5kQ2xhbXBDb2xvckNoYW5uZWwoZyksCisgICAgICAg
IHNjYWxlUm91bmRBbmRDbGFtcENvbG9yQ2hhbm5lbChiKSwKKyAgICAgICAgc2NhbGVSb3VuZEFu
ZENsYW1wQ29sb3JDaGFubmVsKGEpCisgICAgKTsKIH0KIAogU2ltcGxlQ29sb3IgbWFrZVNpbXBs
ZUNvbG9yRnJvbUhTTEEoZmxvYXQgaHVlLCBmbG9hdCBzYXR1cmF0aW9uLCBmbG9hdCBsaWdodG5l
c3MsIGZsb2F0IGFscGhhKQogewotICAgIGNvbnN0IGZsb2F0IHNjYWxlRmFjdG9yID0gMjU1LjA7
Ci0gICAgYXV0byBmbG9hdFJlc3VsdCA9IGhzbFRvU1JHQih7IGh1ZSwgc2F0dXJhdGlvbiwgbGln
aHRuZXNzLCBhbHBoYSB9KTsKKyAgICBhdXRvIFtyLCBnLCBiLCBhXSA9IGhzbFRvU1JHQih7IGh1
ZSwgc2F0dXJhdGlvbiwgbGlnaHRuZXNzLCBhbHBoYSB9KTsKICAgICByZXR1cm4gbWFrZVNpbXBs
ZUNvbG9yKAotICAgICAgICByb3VuZChmbG9hdFJlc3VsdC5jb21wb25lbnRzWzBdICogc2NhbGVG
YWN0b3IpLAotICAgICAgICByb3VuZChmbG9hdFJlc3VsdC5jb21wb25lbnRzWzFdICogc2NhbGVG
YWN0b3IpLAotICAgICAgICByb3VuZChmbG9hdFJlc3VsdC5jb21wb25lbnRzWzJdICogc2NhbGVG
YWN0b3IpLAotICAgICAgICByb3VuZChmbG9hdFJlc3VsdC5jb21wb25lbnRzWzNdICogc2NhbGVG
YWN0b3IpKTsKKyAgICAgICAgcm91bmQociAqIDI1NS4wZiksCisgICAgICAgIHJvdW5kKGcgKiAy
NTUuMGYpLAorICAgICAgICByb3VuZChiICogMjU1LjBmKSwKKyAgICAgICAgcm91bmQoYSAqIDI1
NS4wZikpOworICAgICk7CiB9CiAKIFNpbXBsZUNvbG9yIG1ha2VTaW1wbGVDb2xvckZyb21DTVlL
QShmbG9hdCBjLCBmbG9hdCBtLCBmbG9hdCB5LCBmbG9hdCBrLCBmbG9hdCBhKQpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2ltcGxlQ29sb3IuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaW1wbGVDb2xvci5oCShyZXZpc2lv
biAyNjIzNDgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaW1wbGVDb2xv
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSwxMSArMzEsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiAvLyBDb2xvciB2YWx1ZSB3aXRoIDgtYml0IGNvbXBvbmVudHMgZm9yIHJlZCwgZ3JlZW4s
IGJsdWUsIGFuZCBhbHBoYS4KIC8vIEZvciBoaXN0b3JpY2FsIHJlYXNvbnMsIHN0b3JlZCBhcyBh
IDMyLWJpdCBpbnRlZ2VyLCB3aXRoIGFscGhhIGluIHRoZSBoaWdoIGJpdHM6IEFSR0IuCi0vLyBG
SVhNRTogVGhpcyBjbGFzcyBzaG91bGQgYmUgY29uc29saWRhdGVkIHdpdGggQ29sb3JDb21wb25l
bnRzLgogY2xhc3MgU2ltcGxlQ29sb3IgewogcHVibGljOgogICAgIGNvbnN0ZXhwciBTaW1wbGVD
b2xvcih1aW50MzJfdCB2YWx1ZSA9IDApIDogbV92YWx1ZSB7IHZhbHVlIH0geyB9CisgICAgY29u
c3RleHByIFNpbXBsZUNvbG9yKHVpbnQ4X3QgciwgdWludDhfdCBnLCB1aW50OF90IGIsIHVpbnQ4
X3QgYSkgOiBtX3ZhbHVlIHsgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGEgPDwgMjQgfCByIDw8IDE2
IHwgZyA8PCA4IHwgYikgfSB7IH0KIAorICAgIGNvbnN0ZXhwciB1aW50MzJfdCB2YWx1ZUFzQVJH
QigpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWU7IH0KICAgICBjb25zdGV4cHIgdWludDMyX3QgdmFs
dWUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlOyB9CiAKICAgICBjb25zdGV4cHIgdWludDhfdCBy
ZWRDb21wb25lbnQoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlID4+IDE2OyB9CkBAIC01Miw3ICs1
MywyMCBAQCBwdWJsaWM6CiAgICAgU3RyaW5nIHNlcmlhbGl6YXRpb25Gb3JDU1MoKSBjb25zdDsK
ICAgICBTdHJpbmcgc2VyaWFsaXphdGlvbkZvclJlbmRlclRyZWVBc1RleHQoKSBjb25zdDsKIAot
ICAgIGNvbnN0ZXhwciBTaW1wbGVDb2xvciBjb2xvcldpdGhBbHBoYSh1aW50OF90IGFscGhhKSBj
b25zdCB7IHJldHVybiB7IChtX3ZhbHVlICYgMHgwMEZGRkZGRikgfCBhbHBoYSA8PCAyNCB9OyB9
CisgICAgY29uc3RleHByIFNpbXBsZUNvbG9yIGNvbG9yV2l0aEFscGhhKHVpbnQ4X3QgYWxwaGEp
IGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4geyAobV92YWx1ZSAmIDB4MDBGRkZGRkYpIHwg
YWxwaGEgPDwgMjQgfTsKKyAgICB9CisKKyAgICBjb25zdGV4cHIgU2ltcGxlQ29sb3IgaW52ZXJ0
ZWRDb2xvcldpdGhBbHBoYSh1aW50OF90IGFscGhhKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0
dXJuIHsgc3RhdGljX2Nhc3Q8dWludDhfdD4oMHhGRiAtIHJlZENvbXBvbmVudCgpKSwgc3RhdGlj
X2Nhc3Q8dWludDhfdD4oMHhGRiAtIGdyZWVuQ29tcG9uZW50KCkpLCBzdGF0aWNfY2FzdDx1aW50
OF90PigweEZGIC0gYmx1ZUNvbXBvbmVudCgpKSwgYWxwaGEgfTsKKyAgICB9CisKKyAgICBjb25z
dGV4cHIgQ29sb3JDb21wb25lbnRzPGZsb2F0PiBhc1NSR0JGbG9hdENvbXBvbmVudHMoKSBjb25z
dAorICAgIHsKKyAgICAgICAgcmV0dXJuIHsgcmVkQ29tcG9uZW50KCkgLyAyNTUuMGYsIGdyZWVu
Q29tcG9uZW50KCkgLyAyNTUuMGYsIGJsdWVDb21wb25lbnQoKSAvIDI1NS4wZiwgIGFscGhhQ29t
cG9uZW50KCkgLyAyNTUuMGYgfTsKKyAgICB9CiAKICAgICB0ZW1wbGF0ZTxzdGQ6OnNpemVfdCBO
PgogICAgIGNvbnN0ZXhwciB1aW50OF90IGdldCgpIGNvbnN0CkBAIC03OCw2ICs5Miw4IEBAIGJv
b2wgb3BlcmF0b3IhPShTaW1wbGVDb2xvciwgU2ltcGxlQ29sb3IKIGNvbnN0ZXhwciBTaW1wbGVD
b2xvciBtYWtlU2ltcGxlQ29sb3IoaW50IHIsIGludCBnLCBpbnQgYik7CiBjb25zdGV4cHIgU2lt
cGxlQ29sb3IgbWFrZVNpbXBsZUNvbG9yKGludCByLCBpbnQgZywgaW50IGIsIGludCBhKTsKIAor
U2ltcGxlQ29sb3IgbWFrZVNpbXBsZUNvbG9yKGNvbnN0IENvbG9yQ29tcG9uZW50czxmbG9hdD4m
IHNSR0JDb21wb25lbnRzKTsKKwogU2ltcGxlQ29sb3IgbWFrZVByZW11bHRpcGxpZWRTaW1wbGVD
b2xvcihpbnQgciwgaW50IGcsIGludCBiLCBpbnQgYSwgYm9vbCBjZWlsaW5nID0gdHJ1ZSk7CiBT
aW1wbGVDb2xvciBtYWtlUHJlbXVsdGlwbGllZFNpbXBsZUNvbG9yKFNpbXBsZUNvbG9yKTsKIFNp
bXBsZUNvbG9yIG1ha2VVbnByZW11bHRpcGxpZWRTaW1wbGVDb2xvcihpbnQgciwgaW50IGcsIGlu
dCBiLCBpbnQgYSk7CkBAIC04Nyw3ICsxMDMsNiBAQCBXRUJDT1JFX0VYUE9SVCBTaW1wbGVDb2xv
ciBtYWtlU2ltcGxlQ29sCiBXRUJDT1JFX0VYUE9SVCBTaW1wbGVDb2xvciBtYWtlU2ltcGxlQ29s
b3JGcm9tSFNMQShmbG9hdCBoLCBmbG9hdCBzLCBmbG9hdCBsLCBmbG9hdCBhKTsKIFNpbXBsZUNv
bG9yIG1ha2VTaW1wbGVDb2xvckZyb21DTVlLQShmbG9hdCBjLCBmbG9hdCBtLCBmbG9hdCB5LCBm
bG9hdCBrLCBmbG9hdCBhKTsKIAotCiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KFNpbXBsZUNvbG9y
IGEsIFNpbXBsZUNvbG9yIGIpCiB7CiAgICAgcmV0dXJuIGEudmFsdWUoKSA9PSBiLnZhbHVlKCk7
CkBAIC0xMDUsNyArMTIwLDE4IEBAIGNvbnN0ZXhwciBTaW1wbGVDb2xvciBtYWtlU2ltcGxlQ29s
b3IoaW4KIAogY29uc3RleHByIFNpbXBsZUNvbG9yIG1ha2VTaW1wbGVDb2xvcihpbnQgciwgaW50
IGcsIGludCBiLCBpbnQgYSkKIHsKLSAgICByZXR1cm4geyBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
c3RkOjpjbGFtcChhLCAwLCAweEZGKSA8PCAyNCB8IHN0ZDo6Y2xhbXAociwgMCwgMHhGRikgPDwg
MTYgfCBzdGQ6OmNsYW1wKGcsIDAsIDB4RkYpIDw8IDggfCBzdGQ6OmNsYW1wKGIsIDAsIDB4RkYp
KSB9OworICAgIHJldHVybiB7IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHN0ZDo6Y2xhbXAociwgMCwg
MHhGRikpLCBzdGF0aWNfY2FzdDx1aW50OF90PihzdGQ6OmNsYW1wKGcsIDAsIDB4RkYpKSwgc3Rh
dGljX2Nhc3Q8dWludDhfdD4oc3RkOjpjbGFtcChiLCAwLCAweEZGKSksIHN0YXRpY19jYXN0PHVp
bnQ4X3Q+KHN0ZDo6Y2xhbXAoYSwgMCwgMHhGRikpIH07Cit9CisKK2lubGluZSBTaW1wbGVDb2xv
ciBtYWtlU2ltcGxlQ29sb3IoY29uc3QgQ29sb3JDb21wb25lbnRzPGZsb2F0PiYgc1JHQkNvbXBv
bmVudHMpCit7CisgICAgYXV0byBbciwgZywgYiwgYV0gPSBzUkdCQ29tcG9uZW50czsKKyAgICBy
ZXR1cm4gbWFrZVNpbXBsZUNvbG9yKAorICAgICAgICBzY2FsZVJvdW5kQW5kQ2xhbXBDb2xvckNo
YW5uZWwociksCisgICAgICAgIHNjYWxlUm91bmRBbmRDbGFtcENvbG9yQ2hhbm5lbChnKSwKKyAg
ICAgICAgc2NhbGVSb3VuZEFuZENsYW1wQ29sb3JDaGFubmVsKGIpLAorICAgICAgICBzY2FsZVJv
dW5kQW5kQ2xhbXBDb2xvckNoYW5uZWwoYSkKKyAgICApOwogfQogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvckNH
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9D
b2xvckNHLmNwcAkocmV2aXNpb24gMjYyMzQ4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvQ29sb3JDRy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzMCw3ICsxMzAsNyBA
QCBzdGF0aWMgQ0dDb2xvclJlZiBsZWFrQ0dDb2xvcihjb25zdCBDb2xvCiBDR0NvbG9yUmVmIGNh
Y2hlZENHQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQogewogICAgIGlmICghY29sb3IuaXNFeHRl
bmRlZCgpKSB7Ci0gICAgICAgIHN3aXRjaCAoY29sb3IuYXNTaW1wbGVDb2xvcigpLnZhbHVlKCkp
IHsKKyAgICAgICAgc3dpdGNoIChjb2xvci5hc1NpbXBsZSgpLnZhbHVlKCkpIHsKICAgICAgICAg
Y2FzZSBDb2xvcjo6dHJhbnNwYXJlbnQudmFsdWUoKTogewogICAgICAgICAgICAgc3RhdGljIENH
Q29sb3JSZWYgdHJhbnNwYXJlbnRDR0NvbG9yID0gbGVha0NHQ29sb3IoY29sb3IpOwogICAgICAg
ICAgICAgcmV0dXJuIHRyYW5zcGFyZW50Q0dDb2xvcjsKQEAgLTE0Niw3ICsxNDYsNyBAQCBDR0Nv
bG9yUmVmIGNhY2hlZENHQ29sb3IoY29uc3QgQ29sb3ImIGNvCiAgICAgICAgIH0KICAgICB9CiAK
LSAgICBBU1NFUlQoY29sb3IuaXNFeHRlbmRlZCgpIHx8IGNvbG9yLmFzU2ltcGxlQ29sb3IoKS52
YWx1ZSgpKTsKKyAgICBBU1NFUlQoY29sb3IuaXNFeHRlbmRlZCgpIHx8IGNvbG9yLmFzU2ltcGxl
KCkudmFsdWUoKSk7CiAKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VGlueUxSVUNhY2hlPENv
bG9yLCBSZXRhaW5QdHI8Q0dDb2xvclJlZj4sIDMyPj4gY2FjaGU7CiAgICAgcmV0dXJuIGNhY2hl
LmdldCgpLmdldChjb2xvcikuZ2V0KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFTGlnaHRpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVMaWdodGluZy5jcHAJKHJldmlzaW9uIDI2
MjM0OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVMaWdo
dGluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwNSw3ICs0MDUsNyBAQCBib29sIEZFTGlnaHRp
bmc6OmRyYXdMaWdodGluZyhVaW50OENsYW1wCiAgICAgZGF0YS5oZWlnaHREZWNyZWFzZWRCeU9u
ZSA9IGhlaWdodCAtIDE7CiAgICAgCiAgICAgYXV0byBsaWdodENvbG9yID0gKG9wZXJhdGluZ0Nv
bG9yU3BhY2UoKSA9PSBDb2xvclNwYWNlOjpMaW5lYXJSR0IpID8gcmdiVG9MaW5lYXJDb21wb25l
bnRzKG1fbGlnaHRpbmdDb2xvci50b1NSR0JBQ29tcG9uZW50c0xvc3N5KCkpIDogbV9saWdodGlu
Z0NvbG9yLnRvU1JHQkFDb21wb25lbnRzTG9zc3koKTsKLSAgICBwYWludGluZ0RhdGEuaW5pdGlh
bExpZ2h0aW5nRGF0YS5jb2xvclZlY3RvciA9IEZsb2F0UG9pbnQzRChsaWdodENvbG9yLmNvbXBv
bmVudHNbMF0sIGxpZ2h0Q29sb3IuY29tcG9uZW50c1sxXSwgbGlnaHRDb2xvci5jb21wb25lbnRz
WzJdKTsKKyAgICBwYWludGluZ0RhdGEuaW5pdGlhbExpZ2h0aW5nRGF0YS5jb2xvclZlY3RvciA9
IEZsb2F0UG9pbnQzRChsaWdodENvbG9yWzBdLCBsaWdodENvbG9yWzFdLCBsaWdodENvbG9yWzJd
KTsKICAgICBtX2xpZ2h0U291cmNlLT5pbml0UGFpbnRpbmdEYXRhKCp0aGlzLCBwYWludGluZ0Rh
dGEpOwogCiAgICAgLy8gVG9wIGxlZnQuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFVHVyYnVsZW5jZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVR1cmJ1bGVuY2UuY3BwCShyZXZpc2lv
biAyNjIzNDgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZF
VHVyYnVsZW5jZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyNSwxMCArMzI1LDEwIEBAIENvbG9y
Q29tcG9uZW50czxmbG9hdD4gRkVUdXJidWxlbmNlOjpub2kKIHN0YXRpYyBpbmxpbmUgQ29sb3JD
b21wb25lbnRzPHVpbnQ4X3Q+IHRvSW50QmFzZWRDb2xvckNvbXBvbmVudHMoY29uc3QgQ29sb3JD
b21wb25lbnRzPGZsb2F0PiYgZmxvYXRDb21wb25lbnRzKQogewogICAgIHJldHVybiB7Ci0gICAg
ICAgIHN0ZDo6Y2xhbXA8dWludDhfdD4oc3RhdGljX2Nhc3Q8aW50PihmbG9hdENvbXBvbmVudHMu
Y29tcG9uZW50c1swXSAqIDI1NSksIDAsIDI1NSksCi0gICAgICAgIHN0ZDo6Y2xhbXA8dWludDhf
dD4oc3RhdGljX2Nhc3Q8aW50PihmbG9hdENvbXBvbmVudHMuY29tcG9uZW50c1sxXSAqIDI1NSks
IDAsIDI1NSksCi0gICAgICAgIHN0ZDo6Y2xhbXA8dWludDhfdD4oc3RhdGljX2Nhc3Q8aW50Pihm
bG9hdENvbXBvbmVudHMuY29tcG9uZW50c1syXSAqIDI1NSksIDAsIDI1NSksCi0gICAgICAgIHN0
ZDo6Y2xhbXA8dWludDhfdD4oc3RhdGljX2Nhc3Q8aW50PihmbG9hdENvbXBvbmVudHMuY29tcG9u
ZW50c1szXSAqIDI1NSksIDAsIDI1NSksCisgICAgICAgIHN0ZDo6Y2xhbXA8dWludDhfdD4oc3Rh
dGljX2Nhc3Q8aW50PihmbG9hdENvbXBvbmVudHNbMF0gKiAyNTUpLCAwLCAyNTUpLAorICAgICAg
ICBzdGQ6OmNsYW1wPHVpbnQ4X3Q+KHN0YXRpY19jYXN0PGludD4oZmxvYXRDb21wb25lbnRzWzFd
ICogMjU1KSwgMCwgMjU1KSwKKyAgICAgICAgc3RkOjpjbGFtcDx1aW50OF90PihzdGF0aWNfY2Fz
dDxpbnQ+KGZsb2F0Q29tcG9uZW50c1syXSAqIDI1NSksIDAsIDI1NSksCisgICAgICAgIHN0ZDo6
Y2xhbXA8dWludDhfdD4oc3RhdGljX2Nhc3Q8aW50PihmbG9hdENvbXBvbmVudHNbM10gKiAyNTUp
LCAwLCAyNTUpLAogICAgIH07CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5jcHAJKHJl
dmlzaW9uIDI2MjM0OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRmlsdGVyT3BlcmF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU2LDI2ICsxNTYsMjYg
QEAgYm9vbCBCYXNpY0NvbXBvbmVudFRyYW5zZmVyRmlsdGVyT3BlcmF0aQogewogICAgIHN3aXRj
aCAobV90eXBlKSB7CiAgICAgY2FzZSBPUEFDSVRZOgotICAgICAgICBjb2xvckNvbXBvbmVudHMu
Y29tcG9uZW50c1szXSAqPSBtX2Ftb3VudDsKKyAgICAgICAgY29sb3JDb21wb25lbnRzWzNdICo9
IG1fYW1vdW50OwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBjYXNlIElOVkVSVDogewogICAg
ICAgICBmbG9hdCBvbmVNaW51c0Ftb3VudCA9IDEuZiAtIG1fYW1vdW50OwotICAgICAgICBjb2xv
ckNvbXBvbmVudHMuY29tcG9uZW50c1swXSA9IDEgLSAob25lTWludXNBbW91bnQgKyBjb2xvckNv
bXBvbmVudHMuY29tcG9uZW50c1swXSAqIChtX2Ftb3VudCAtIG9uZU1pbnVzQW1vdW50KSk7Ci0g
ICAgICAgIGNvbG9yQ29tcG9uZW50cy5jb21wb25lbnRzWzFdID0gMSAtIChvbmVNaW51c0Ftb3Vu
dCArIGNvbG9yQ29tcG9uZW50cy5jb21wb25lbnRzWzFdICogKG1fYW1vdW50IC0gb25lTWludXNB
bW91bnQpKTsKLSAgICAgICAgY29sb3JDb21wb25lbnRzLmNvbXBvbmVudHNbMl0gPSAxIC0gKG9u
ZU1pbnVzQW1vdW50ICsgY29sb3JDb21wb25lbnRzLmNvbXBvbmVudHNbMl0gKiAobV9hbW91bnQg
LSBvbmVNaW51c0Ftb3VudCkpOworICAgICAgICBjb2xvckNvbXBvbmVudHNbMF0gPSAxIC0gKG9u
ZU1pbnVzQW1vdW50ICsgY29sb3JDb21wb25lbnRzWzBdICogKG1fYW1vdW50IC0gb25lTWludXNB
bW91bnQpKTsKKyAgICAgICAgY29sb3JDb21wb25lbnRzWzFdID0gMSAtIChvbmVNaW51c0Ftb3Vu
dCArIGNvbG9yQ29tcG9uZW50c1sxXSAqIChtX2Ftb3VudCAtIG9uZU1pbnVzQW1vdW50KSk7Cisg
ICAgICAgIGNvbG9yQ29tcG9uZW50c1syXSA9IDEgLSAob25lTWludXNBbW91bnQgKyBjb2xvckNv
bXBvbmVudHNbMl0gKiAobV9hbW91bnQgLSBvbmVNaW51c0Ftb3VudCkpOwogICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICB9CiAgICAgY2FzZSBDT05UUkFTVDogewogICAgICAgICBmbG9hdCBpbnRl
cmNlcHQgPSAtKDAuNWYgKiBtX2Ftb3VudCkgKyAwLjVmOwotICAgICAgICBjb2xvckNvbXBvbmVu
dHMuY29tcG9uZW50c1swXSA9IGNsYW1wVG88ZmxvYXQ+KGludGVyY2VwdCArIG1fYW1vdW50ICog
Y29sb3JDb21wb25lbnRzLmNvbXBvbmVudHNbMF0sIDAsIDEpOwotICAgICAgICBjb2xvckNvbXBv
bmVudHMuY29tcG9uZW50c1sxXSA9IGNsYW1wVG88ZmxvYXQ+KGludGVyY2VwdCArIG1fYW1vdW50
ICogY29sb3JDb21wb25lbnRzLmNvbXBvbmVudHNbMV0sIDAsIDEpOwotICAgICAgICBjb2xvckNv
bXBvbmVudHMuY29tcG9uZW50c1syXSA9IGNsYW1wVG88ZmxvYXQ+KGludGVyY2VwdCArIG1fYW1v
dW50ICogY29sb3JDb21wb25lbnRzLmNvbXBvbmVudHNbMl0sIDAsIDEpOworICAgICAgICBjb2xv
ckNvbXBvbmVudHNbMF0gPSBjbGFtcFRvPGZsb2F0PihpbnRlcmNlcHQgKyBtX2Ftb3VudCAqIGNv
bG9yQ29tcG9uZW50c1swXSwgMCwgMSk7CisgICAgICAgIGNvbG9yQ29tcG9uZW50c1sxXSA9IGNs
YW1wVG88ZmxvYXQ+KGludGVyY2VwdCArIG1fYW1vdW50ICogY29sb3JDb21wb25lbnRzWzFdLCAw
LCAxKTsKKyAgICAgICAgY29sb3JDb21wb25lbnRzWzJdID0gY2xhbXBUbzxmbG9hdD4oaW50ZXJj
ZXB0ICsgbV9hbW91bnQgKiBjb2xvckNvbXBvbmVudHNbMl0sIDAsIDEpOwogICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICB9CiAgICAgY2FzZSBCUklHSFRORVNTOgotICAgICAgICBjb2xvckNvbXBv
bmVudHMuY29tcG9uZW50c1swXSA9IHN0ZDo6bWF4PGZsb2F0PihtX2Ftb3VudCAqIGNvbG9yQ29t
cG9uZW50cy5jb21wb25lbnRzWzBdLCAwKTsKLSAgICAgICAgY29sb3JDb21wb25lbnRzLmNvbXBv
bmVudHNbMV0gPSBzdGQ6Om1heDxmbG9hdD4obV9hbW91bnQgKiBjb2xvckNvbXBvbmVudHMuY29t
cG9uZW50c1sxXSwgMCk7Ci0gICAgICAgIGNvbG9yQ29tcG9uZW50cy5jb21wb25lbnRzWzJdID0g
c3RkOjptYXg8ZmxvYXQ+KG1fYW1vdW50ICogY29sb3JDb21wb25lbnRzLmNvbXBvbmVudHNbMl0s
IDApOworICAgICAgICBjb2xvckNvbXBvbmVudHNbMF0gPSBzdGQ6Om1heDxmbG9hdD4obV9hbW91
bnQgKiBjb2xvckNvbXBvbmVudHNbMF0sIDApOworICAgICAgICBjb2xvckNvbXBvbmVudHNbMV0g
PSBzdGQ6Om1heDxmbG9hdD4obV9hbW91bnQgKiBjb2xvckNvbXBvbmVudHNbMV0sIDApOworICAg
ICAgICBjb2xvckNvbXBvbmVudHNbMl0gPSBzdGQ6Om1heDxmbG9hdD4obV9hbW91bnQgKiBjb2xv
ckNvbXBvbmVudHNbMl0sIDApOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBkZWZhdWx0Ogog
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTIzMSw3ICsyMzEsNyBAQCBib29sIElu
dmVydExpZ2h0bmVzc0ZpbHRlck9wZXJhdGlvbjo6dHJhCiAgICAgYXV0byBoc2xDb21wb25lbnRz
ID0gc1JHQlRvSFNMKHNSR0JDb2xvckNvbXBvbmVudHMpOwogICAgIAogICAgIC8vIFJvdGF0ZSB0
aGUgaHVlIDE4MGRlZy4KLSAgICBoc2xDb21wb25lbnRzLmNvbXBvbmVudHNbMF0gPSBmbW9kKGhz
bENvbXBvbmVudHMuY29tcG9uZW50c1swXSArIDAuNWYsIDEuMGYpOworICAgIGhzbENvbXBvbmVu
dHNbMF0gPSBmbW9kKGhzbENvbXBvbmVudHNbMF0gKyAwLjVmLCAxLjBmKTsKICAgICAKICAgICAv
LyBDb252ZXJ0IGJhY2sgdG8gUkdCLgogICAgIHNSR0JDb2xvckNvbXBvbmVudHMgPSBoc2xUb1NS
R0IoaHNsQ29tcG9uZW50cyk7CkBAIC0yNjEsNyArMjYxLDcgQEAgYm9vbCBJbnZlcnRMaWdodG5l
c3NGaWx0ZXJPcGVyYXRpb246OmludgogICAgIC8vIENvbnZlcnQgdG8gSFNMLgogICAgIGF1dG8g
aHNsQ29tcG9uZW50cyA9IHNSR0JUb0hTTChyZ2JDb21wb25lbnRzKTsKICAgICAvLyBIdWUgcm90
YXRlIGJ5IDE4MGRlZy4KLSAgICBoc2xDb21wb25lbnRzLmNvbXBvbmVudHNbMF0gPSBmbW9kKGhz
bENvbXBvbmVudHMuY29tcG9uZW50c1swXSArIDAuNWYsIDEuMGYpOworICAgIGhzbENvbXBvbmVu
dHNbMF0gPSBmbW9kKGhzbENvbXBvbmVudHNbMF0gKyAwLjVmLCAxLjBmKTsKICAgICAvLyBBbmQg
cmV0dXJuIFJHQi4KICAgICBzUkdCQ29sb3JDb21wb25lbnRzID0gaHNsVG9TUkdCKGhzbENvbXBv
bmVudHMpOwogICAgIHJldHVybiB0cnVlOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbnMuY3Bw
CShyZXZpc2lvbiAyNjIzNDgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZpbHRlck9wZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTEsMTUgKzEx
MSwxNCBAQCBib29sIEZpbHRlck9wZXJhdGlvbnM6OnRyYW5zZm9ybUNvbG9yKENvCiAgICAgaWYg
KGNvbG9yLmlzU2VtYW50aWMoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgYXV0byBj
b21wb25lbnRzID0gY29sb3IudG9TUkdCQUNvbXBvbmVudHNMb3NzeSgpOworICAgIGF1dG8gc1JH
QkFDb21wb25lbnRzID0gY29sb3IudG9TUkdCQUNvbXBvbmVudHNMb3NzeSgpOwogCiAgICAgZm9y
IChhdXRvJiBvcGVyYXRpb24gOiBtX29wZXJhdGlvbnMpIHsKLSAgICAgICAgaWYgKCFvcGVyYXRp
b24tPnRyYW5zZm9ybUNvbG9yKGNvbXBvbmVudHMpKQorICAgICAgICBpZiAoIW9wZXJhdGlvbi0+
dHJhbnNmb3JtQ29sb3Ioc1JHQkFDb21wb25lbnRzKSkKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICB9CiAKLSAgICBhdXRvIFtyLCBnLCBiLCBhXSA9IGNvbXBvbmVudHM7Ci0gICAgY29s
b3IgPSBtYWtlU2ltcGxlQ29sb3JGcm9tRmxvYXRzKHIsIGcsIGIsIGEpOworICAgIGNvbG9yID0g
bWFrZVNpbXBsZUNvbG9yKHNSR0JBQ29tcG9uZW50cyk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
QEAgLTEzMSwxNSArMTMwLDE0IEBAIGJvb2wgRmlsdGVyT3BlcmF0aW9uczo6aW52ZXJzZVRyYW5z
Zm9ybUMKICAgICBpZiAoY29sb3IuaXNTZW1hbnRpYygpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKLSAgICBhdXRvIGNvbXBvbmVudHMgPSBjb2xvci50b1NSR0JBQ29tcG9uZW50c0xvc3N5KCk7
CisgICAgYXV0byBzUkdCQUNvbXBvbmVudHMgPSBjb2xvci50b1NSR0JBQ29tcG9uZW50c0xvc3N5
KCk7CiAKICAgICBmb3IgKGF1dG8mIG9wZXJhdGlvbiA6IG1fb3BlcmF0aW9ucykgewotICAgICAg
ICBpZiAoIW9wZXJhdGlvbi0+aW52ZXJzZVRyYW5zZm9ybUNvbG9yKGNvbXBvbmVudHMpKQorICAg
ICAgICBpZiAoIW9wZXJhdGlvbi0+aW52ZXJzZVRyYW5zZm9ybUNvbG9yKHNSR0JBQ29tcG9uZW50
cykpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgYXV0byBbciwgZywg
YiwgYV0gPSBjb21wb25lbnRzOwotICAgIGNvbG9yID0gbWFrZVNpbXBsZUNvbG9yRnJvbUZsb2F0
cyhyLCBnLCBiLCBhKTsKKyAgICBjb2xvciA9IG1ha2VTaW1wbGVDb2xvcihzUkdCQUNvbXBvbmVu
dHMpOwogICAgIHJldHVybiB0cnVlOwogfQogCkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjIzNTApCisrKyBUb29scy9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAyMC0wNS0zMCAgU2FtIFdl
aW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgRXh0ZW5kZWQgQ29sb3I6IEFkZGl0
aW9uYWwgY29sb3IgY2xlYW51cHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIxMjU2NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0V4dGVuZGVkQ29sb3JU
ZXN0cy5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgVXBkYXRl
IGZvciByZW5hbWUgZnJvbSBFeHRlbmRlZENvbG9yOjpjaGFubmVscygpIHRvIEV4dGVuZGVkQ29s
b3I6OmNvbXBvbmVudHMoKQorCiAyMDIwLTA1LTMwICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNn
YXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBXZWJEcml2ZXI6IHN0b3AgdXNpbmcg
R2RrRXZlbnQgQVBJIGluIHByZXBhcmF0aW9uIGZvciBHVEs0CkluZGV4OiBUb29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYkNvcmUvRXh0ZW5kZWRDb2xvclRlc3RzLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRXh0ZW5kZWRDb2xvclRlc3RzLmNw
cAkocmV2aXNpb24gMjYyMzQ4KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3Jl
L0V4dGVuZGVkQ29sb3JUZXN0cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDcgKzM5LDcgQEAg
VEVTVChFeHRlbmRlZENvbG9yLCBDb25zdHJ1Y3RvcikKICAgICBDb2xvciBjMSgxLjAsIDAuNSwg
MC4yNSwgMS4wLCBDb2xvclNwYWNlOjpEaXNwbGF5UDMpOwogICAgIEVYUEVDVF9UUlVFKGMxLmlz
RXh0ZW5kZWQoKSk7CiAKLSAgICBhdXRvIFtyLCBnLCBiLCBhbHBoYV0gPSBjMS5hc0V4dGVuZGVk
KCkuY2hhbm5lbHMoKTsKKyAgICBhdXRvIFtyLCBnLCBiLCBhbHBoYV0gPSBjMS5hc0V4dGVuZGVk
KCkuY29tcG9uZW50cygpOwogCiAgICAgRVhQRUNUX0ZMT0FUX0VRKDEuMCwgcik7CiAgICAgRVhQ
RUNUX0ZMT0FUX0VRKDAuNSwgZyk7CkBAIC01Niw3ICs1Niw3IEBAIFRFU1QoRXh0ZW5kZWRDb2xv
ciwgQ29weUNvbnN0cnVjdG9yKQogCiAgICAgQ29sb3IgYzIoYzEpOwogCi0gICAgYXV0byBbciwg
ZywgYiwgYWxwaGFdID0gYzIuYXNFeHRlbmRlZCgpLmNoYW5uZWxzKCk7CisgICAgYXV0byBbciwg
ZywgYiwgYWxwaGFdID0gYzIuYXNFeHRlbmRlZCgpLmNvbXBvbmVudHMoKTsKIAogICAgIEVYUEVD
VF9GTE9BVF9FUSgxLjAsIHIpOwogICAgIEVYUEVDVF9GTE9BVF9FUSgwLjUsIGcpOwpAQCAtNzQs
NyArNzQsNyBAQCBURVNUKEV4dGVuZGVkQ29sb3IsIEFzc2lnbm1lbnQpCiAKICAgICBDb2xvciBj
MiA9IGMxOwogCi0gICAgYXV0byBbciwgZywgYiwgYWxwaGFdID0gYzIuYXNFeHRlbmRlZCgpLmNo
YW5uZWxzKCk7CisgICAgYXV0byBbciwgZywgYiwgYWxwaGFdID0gYzIuYXNFeHRlbmRlZCgpLmNv
bXBvbmVudHMoKTsKIAogICAgIEVYUEVDVF9GTE9BVF9FUSgxLjAsIHIpOwogICAgIEVYUEVDVF9G
TE9BVF9FUSgwLjUsIGcpOwpAQCAtMTU5LDcgKzE1OSw3IEBAIFRFU1QoRXh0ZW5kZWRDb2xvciwg
TW92ZUNvbnN0cnVjdG9yKQogICAgIEVYUEVDVF9GQUxTRShjMS5pc0V4dGVuZGVkKCkpOwogICAg
IEVYUEVDVF9GQUxTRShjMS5pc1ZhbGlkKCkpOwogCi0gICAgYXV0byBbciwgZywgYiwgYWxwaGFd
ID0gYzIuYXNFeHRlbmRlZCgpLmNoYW5uZWxzKCk7CisgICAgYXV0byBbciwgZywgYiwgYWxwaGFd
ID0gYzIuYXNFeHRlbmRlZCgpLmNvbXBvbmVudHMoKTsKIAogICAgIEVYUEVDVF9GTE9BVF9FUSgx
LjAsIHIpOwogICAgIEVYUEVDVF9GTE9BVF9FUSgwLjUsIGcpOwpAQCAtMTgxLDcgKzE4MSw3IEBA
IFRFU1QoRXh0ZW5kZWRDb2xvciwgTW92ZUFzc2lnbm1lbnQpCiAgICAgRVhQRUNUX0ZBTFNFKGMx
LmlzRXh0ZW5kZWQoKSk7CiAgICAgRVhQRUNUX0ZBTFNFKGMxLmlzVmFsaWQoKSk7CiAKLSAgICBh
dXRvIFtyLCBnLCBiLCBhbHBoYV0gPSBjMi5hc0V4dGVuZGVkKCkuY2hhbm5lbHMoKTsKKyAgICBh
dXRvIFtyLCBnLCBiLCBhbHBoYV0gPSBjMi5hc0V4dGVuZGVkKCkuY29tcG9uZW50cygpOwogCiAg
ICAgRVhQRUNUX0ZMT0FUX0VRKDEuMCwgcik7CiAgICAgRVhQRUNUX0ZMT0FUX0VRKDAuNSwgZyk7
CkBAIC0xOTksNyArMTk5LDcgQEAgVEVTVChFeHRlbmRlZENvbG9yLCBCYXNpY1JlZmVyZW5jZUNv
dW50aQogICAgIENvbG9yKiBjMiA9IG5ldyBDb2xvcigqYzEpOwogICAgIENvbG9yKiBjMyA9IG5l
dyBDb2xvcigqYzIpOwogCi0gICAgYXV0byBbciwgZywgYiwgYWxwaGFdID0gYzItPmFzRXh0ZW5k
ZWQoKS5jaGFubmVscygpOworICAgIGF1dG8gW3IsIGcsIGIsIGFscGhhXSA9IGMyLT5hc0V4dGVu
ZGVkKCkuY29tcG9uZW50cygpOwogCiAgICAgRVhQRUNUX0ZMT0FUX0VRKDEuMCwgcik7CiAgICAg
RVhQRUNUX0ZMT0FUX0VRKDAuNSwgZyk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>400679</attachid>
            <date>2020-05-30 14:33:25 -0700</date>
            <delta_ts>2020-05-30 15:47:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-212567-20200530143324.patch</filename>
            <type>text/plain</type>
            <size>41800</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2MjM1MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwMSBAQAorMjAyMC0wNS0zMCAgU2FtIFdl
aW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgRXh0ZW5kZWQgQ29sb3I6IEFkZGl0
aW9uYWwgY29sb3IgY2xlYW51cHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIxMjU2NworCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZyYXNlci4K
KworICAgICAgICBBIGZldyB1bnJlbGF0ZWQgcXVhbGl0eS1vZi1saWZlIGNsZWFudXBzIHRvIENv
bG9yIGFuZCByZWxhdGVkIGNsYXNzZXM6CisgICAgICAgIC0gUmVuYW1lIENvbG9yOjphc1NpbXBs
ZUNvbG9yKCkgdG8gQ29sb3I6OmFzU2ltcGxlKCkgZm9yIHBhcml0eSB3aXRoIENvbG9yOjphc0V4
dGVuZGVkKCkuCisgICAgICAgIC0gTW92ZSBTaW1wbGVDb2xvciBpbXBsZW1lbnRhdGlvbnMgb2Yg
aW52ZXJ0ZWRDb2xvcldpdGhBbHBoYSgpIGFuZCBhc1NSR0JGbG9hdENvbXBvbmVudHMoKQorICAg
ICAgICAgIHRvIFNpbXBsZUNvbG9yIGZvciBwYXJpdHkgd2l0aCBFeHRlbmVkQ29sb3IuCisgICAg
ICAgIC0gUmVuYW1lIEV4dGVuZGVkQ29sb3I6OmNoYW5uZWxzKCkgdG8gRXh0ZW5kZWRDb2xvcjo6
Y29tcG9uZW50cygpIHRvIGNvbnNpc3RlbmN5LgorICAgICAgICAtIEFkZHMgb3BlcmF0b3JbXSB0
byBDb2xvckNvbXBvbmVudHMgdG8gYWxsb3cgZGlyZWN0IGFjY2VzcyB0byBjb21wb25lbnRzIHJh
dGhlciB0aGFuCisgICAgICAgICAgcmVxdWlyaW5nIGFuZCBhZGRpdGlvbmFsIC5jb21wb25lbnRz
W10KKyAgICAgICAgLSBVc2luZyBzdGQ6Om1pbm1heCgpIHdoZXJlIHBvc3NpYmxlLgorICAgICAg
ICAtIFJlbmFtaW5nIGNvbG9yRmxvYXRUb1NpbXBsZUNvbG9yQnl0ZSB0byBzY2FsZVJvdW5kQW5k
Q2xhbXBDb2xvckNoYW5uZWwgdG8gaGF2ZSBhIGNvbnNpc3RlbnQgCisgICAgICAgICAgbmFtaW5n
IGFuZCBsb2NhdGlvbiBvZiBjb252ZXJzaW9uIHRvIDgtYml0IGNvbG9yIGNoYW5uZWxzLgorCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q29sb3I6OnNlcmlhbGl6ZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29sb3I6OmNzc1Rl
eHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29sb3I6Om5hbWVGb3JSZW5kZXJUcmVlQXNU
ZXh0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbG9yOjpsaWdodCBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpDb2xvcjo6ZGFyayBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb2xv
cjo6Y29sb3JXaXRoQWxwaGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29sb3I6OmNvbG9y
V2l0aEFscGhhVXNpbmdBbHRlcm5hdGl2ZVJvdW5kaW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkNvbG9yOjppbnZlcnRlZENvbG9yV2l0aEFscGhhIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkNvbG9yOjpjb2xvclNwYWNlQW5kQ29tcG9uZW50cyBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpDb2xvcjo6dG9TUkdCQVNpbXBsZUNvbG9yTG9zc3kgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6Q29sb3I6OnRvU1JHQkFDb21wb25lbnRzTG9zc3kgY29uc3QpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0NvbG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpDb2xvcjo6aXNPcGFx
dWUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29sb3I6OmlzVmlzaWJsZSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDb2xvcjo6YWxwaGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
Q29sb3I6OmFscGhhQXNGbG9hdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb2xvcjo6YXNT
aW1wbGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29sb3I6OmlzQmxhY2tDb2xvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpDb2xvcjo6aXNXaGl0ZUNvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6
OkNvbG9yOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29sb3I6OmFzU2ltcGxl
Q29sb3IgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9y
Q29tcG9uZW50cy5oOgorICAgICAgICAoV2ViQ29yZTo6Q29sb3JDb21wb25lbnRzOjpvcGVyYXRv
cltdKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbG9yQ29tcG9uZW50czo6b3BlcmF0b3JbXSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjo9KToKKyAgICAgICAgKFdlYkNvcmU6OnBlckNvbXBvbmVu
dE1heCk6CisgICAgICAgIChXZWJDb3JlOjpwZXJDb21wb25lbnRNaW4pOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0NvbG9yTWF0cml4Lmg6CisgICAgICAgIChXZWJDb3JlOjpSb3dzPjo6
dHJhbnNmb3JtZWRDb2xvckNvbXBvbmVudHMgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0NvbG9yVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFyZUVzc2VudGlh
bGx5RXF1YWwpOgorICAgICAgICAoV2ViQ29yZTo6cmdiVG9MaW5lYXJDb21wb25lbnRzKToKKyAg
ICAgICAgKFdlYkNvcmU6OmxpbmVhclRvUkdCQ29tcG9uZW50cyk6CisgICAgICAgIChXZWJDb3Jl
OjpsaWdodG5lc3MpOgorICAgICAgICAoV2ViQ29yZTo6bHVtaW5hbmNlKToKKyAgICAgICAgKFdl
YkNvcmU6OnNSR0JUb0hTTCk6CisgICAgICAgIChXZWJDb3JlOjpoc2xUb1NSR0IpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yVXRpbGl0aWVzLmg6CisgICAgICAgIChXZWJDb3Jl
OjpzY2FsZVJvdW5kQW5kQ2xhbXBDb2xvckNoYW5uZWwpOgorICAgICAgICAoV2ViQ29yZTo6c2Nh
bGVSb3VuZEFuZENsYW1wQ29sb3JDaGFubmVsVXNpbmdBbHRlcm5hdGl2ZVJvdW5kaW5nKToKKyAg
ICAgICAgKFdlYkNvcmU6OmNvbG9yRmxvYXRUb1NpbXBsZUNvbG9yQnl0ZSk6IERlbGV0ZWQuCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRXh0ZW5kZWRDb2xvci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpFeHRlbmRlZENvbG9yOjpoYXNoIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkV4
dGVuZGVkQ29sb3I6OmNzc1RleHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5kZWRD
b2xvcjo6Y29sb3JXaXRoQWxwaGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5kZWRD
b2xvcjo6aW52ZXJ0ZWRDb2xvcldpdGhBbHBoYSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpF
eHRlbmRlZENvbG9yOjp0b1NSR0JBQ29tcG9uZW50c0xvc3N5IGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkV4dGVuZGVkQ29sb3I6OmlzV2hpdGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
RXh0ZW5kZWRDb2xvcjo6aXNCbGFjayBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvRXh0ZW5kZWRDb2xvci5oOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5kZWRDb2xvcjo6YWxw
aGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5kZWRDb2xvcjo6Y29tcG9uZW50cyBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbmRlZENvbG9yOjpFeHRlbmRlZENvbG9yKToK
KyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yPT0pOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5k
ZWRDb2xvcjo6Y2hhbm5lbHMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL1NpbXBsZUNvbG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om1ha2VTaW1wbGVDb2xv
ckZyb21GbG9hdHMpOgorICAgICAgICAoV2ViQ29yZTo6bWFrZVNpbXBsZUNvbG9yRnJvbUhTTEEp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1NpbXBsZUNvbG9yLmg6CisgICAgICAgIChX
ZWJDb3JlOjpTaW1wbGVDb2xvcjo6U2ltcGxlQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6U2lt
cGxlQ29sb3I6OnZhbHVlQXNBUkdCIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZUNv
bG9yOjpjb2xvcldpdGhBbHBoYSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVDb2xv
cjo6aW52ZXJ0ZWRDb2xvcldpdGhBbHBoYSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaW1w
bGVDb2xvcjo6YXNTUkdCRmxvYXRDb21wb25lbnRzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
Om1ha2VTaW1wbGVDb2xvcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JD
Ry5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjYWNoZWRDR0NvbG9yKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTGlnaHRpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RkVMaWdodGluZzo6ZHJhd0xpZ2h0aW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZFVHVyYnVsZW5jZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0b0ludEJhc2VkQ29s
b3JDb21wb25lbnRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRl
ck9wZXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCYXNpY0NvbXBvbmVudFRyYW5zZmVy
RmlsdGVyT3BlcmF0aW9uOjp0cmFuc2Zvcm1Db2xvciBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnZlcnRMaWdodG5lc3NGaWx0ZXJPcGVyYXRpb246OnRyYW5zZm9ybUNvbG9yIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkludmVydExpZ2h0bmVzc0ZpbHRlck9wZXJhdGlvbjo6aW52ZXJz
ZVRyYW5zZm9ybUNvbG9yIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZpbHRlck9wZXJhdGlvbnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyT3BlcmF0
aW9uczo6dHJhbnNmb3JtQ29sb3IgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyT3Bl
cmF0aW9uczo6aW52ZXJzZVRyYW5zZm9ybUNvbG9yIGNvbnN0KToKKwogMjAyMC0wNS0zMCAgQ29t
bWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdl
ZCwgcmV2ZXJ0aW5nIHIyNjIzMzUuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Db2xvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvQ29sb3IuY3BwCShyZXZpc2lvbiAyNjIzNDgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Db2xvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExMywyNyArMTEzLDI3
IEBAIFN0cmluZyBDb2xvcjo6c2VyaWFsaXplZCgpIGNvbnN0CiB7CiAgICAgaWYgKGlzRXh0ZW5k
ZWQoKSkKICAgICAgICAgcmV0dXJuIGFzRXh0ZW5kZWQoKS5jc3NUZXh0KCk7Ci0gICAgcmV0dXJu
IGFzU2ltcGxlQ29sb3IoKS5zZXJpYWxpemF0aW9uRm9ySFRNTCgpOworICAgIHJldHVybiBhc1Np
bXBsZSgpLnNlcmlhbGl6YXRpb25Gb3JIVE1MKCk7CiB9CiAKIFN0cmluZyBDb2xvcjo6Y3NzVGV4
dCgpIGNvbnN0CiB7CiAgICAgaWYgKGlzRXh0ZW5kZWQoKSkKICAgICAgICAgcmV0dXJuIGFzRXh0
ZW5kZWQoKS5jc3NUZXh0KCk7Ci0gICAgcmV0dXJuIGFzU2ltcGxlQ29sb3IoKS5zZXJpYWxpemF0
aW9uRm9yQ1NTKCk7CisgICAgcmV0dXJuIGFzU2ltcGxlKCkuc2VyaWFsaXphdGlvbkZvckNTUygp
OwogfQogCiBTdHJpbmcgQ29sb3I6Om5hbWVGb3JSZW5kZXJUcmVlQXNUZXh0KCkgY29uc3QKIHsK
ICAgICBpZiAoaXNFeHRlbmRlZCgpKQogICAgICAgICByZXR1cm4gYXNFeHRlbmRlZCgpLmNzc1Rl
eHQoKTsKLSAgICByZXR1cm4gYXNTaW1wbGVDb2xvcigpLnNlcmlhbGl6YXRpb25Gb3JSZW5kZXJU
cmVlQXNUZXh0KCk7CisgICAgcmV0dXJuIGFzU2ltcGxlKCkuc2VyaWFsaXphdGlvbkZvclJlbmRl
clRyZWVBc1RleHQoKTsKIH0KIAogQ29sb3IgQ29sb3I6OmxpZ2h0KCkgY29uc3QKIHsKICAgICAv
LyBIYXJkY29kZSB0aGlzIGNvbW1vbiBjYXNlIGZvciBzcGVlZC4KLSAgICBpZiAoIWlzRXh0ZW5k
ZWQoKSAmJiBhc1NpbXBsZUNvbG9yKCkgPT0gYmxhY2spCisgICAgaWYgKCFpc0V4dGVuZGVkKCkg
JiYgYXNTaW1wbGUoKSA9PSBibGFjaykKICAgICAgICAgcmV0dXJuIGxpZ2h0ZW5lZEJsYWNrOwog
ICAgIAogICAgIGNvbnN0IGZsb2F0IHNjYWxlRmFjdG9yID0gbmV4dGFmdGVyZigyNTYuMGYsIDAu
MGYpOwpAQCAtMTU4LDcgKzE1OCw3IEBAIENvbG9yIENvbG9yOjpsaWdodCgpIGNvbnN0CiBDb2xv
ciBDb2xvcjo6ZGFyaygpIGNvbnN0CiB7CiAgICAgLy8gSGFyZGNvZGUgdGhpcyBjb21tb24gY2Fz
ZSBmb3Igc3BlZWQuCi0gICAgaWYgKCFpc0V4dGVuZGVkKCkgJiYgYXNTaW1wbGVDb2xvcigpID09
IHdoaXRlKQorICAgIGlmICghaXNFeHRlbmRlZCgpICYmIGFzU2ltcGxlKCkgPT0gd2hpdGUpCiAg
ICAgICAgIHJldHVybiBkYXJrZW5lZFdoaXRlOwogICAgIAogICAgIGNvbnN0IGZsb2F0IHNjYWxl
RmFjdG9yID0gbmV4dGFmdGVyZigyNTYuMGYsIDAuMGYpOwpAQCAtMjY5LDcgKzI2OSw3IEBAIENv
bG9yIENvbG9yOjpjb2xvcldpdGhBbHBoYShmbG9hdCBhbHBoYSkKICAgICAvLyBGSVhNRTogVGhp
cyBpcyB3aGVyZSB0aGlzIGZ1bmN0aW9uIGRpZmZlcnMgZnJvbSBjb2xvcldpdGhBbHBoYVVzaW5n
QWx0ZXJuYXRpdmVSb3VuZGluZy4KICAgICB1aW50OF90IG5ld0FscGhhID0gYWxwaGEgKiAweEZG
OwogCi0gICAgQ29sb3IgcmVzdWx0ID0gYXNTaW1wbGVDb2xvcigpLmNvbG9yV2l0aEFscGhhKG5l
d0FscGhhKTsKKyAgICBDb2xvciByZXN1bHQgPSBhc1NpbXBsZSgpLmNvbG9yV2l0aEFscGhhKG5l
d0FscGhhKTsKICAgICBpZiAoaXNTZW1hbnRpYygpKQogICAgICAgICByZXN1bHQuc2V0SXNTZW1h
bnRpYygpOwogICAgIHJldHVybiByZXN1bHQ7CkBAIC0yODEsOSArMjgxLDkgQEAgQ29sb3IgQ29s
b3I6OmNvbG9yV2l0aEFscGhhVXNpbmdBbHRlcm5hdAogICAgICAgICByZXR1cm4gYXNFeHRlbmRl
ZCgpLmNvbG9yV2l0aEFscGhhKGFscGhhKTsKIAogICAgIC8vIEZJWE1FOiBUaGlzIGlzIHdoZXJl
IHRoaXMgZnVuY3Rpb24gZGlmZmVycyBmcm9tIGNvbG9yV2l0aEFscGhhVXNpbmcuCi0gICAgdWlu
dDhfdCBuZXdBbHBoYSA9IGNvbG9yRmxvYXRUb1NpbXBsZUNvbG9yQnl0ZShhbHBoYSk7CisgICAg
dWludDhfdCBuZXdBbHBoYSA9IHNjYWxlUm91bmRBbmRDbGFtcENvbG9yQ2hhbm5lbChhbHBoYSk7
CiAKLSAgICBDb2xvciByZXN1bHQgPSBhc1NpbXBsZUNvbG9yKCkuY29sb3JXaXRoQWxwaGEobmV3
QWxwaGEpOworICAgIENvbG9yIHJlc3VsdCA9IGFzU2ltcGxlKCkuY29sb3JXaXRoQWxwaGEobmV3
QWxwaGEpOwogICAgIGlmIChpc1NlbWFudGljKCkpCiAgICAgICAgIHJlc3VsdC5zZXRJc1NlbWFu
dGljKCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTI5MiwxMCArMjkyLDggQEAgQ29sb3IgQ29s
b3I6OmNvbG9yV2l0aEFscGhhVXNpbmdBbHRlcm5hdAogQ29sb3IgQ29sb3I6OmludmVydGVkQ29s
b3JXaXRoQWxwaGEoZmxvYXQgYWxwaGEpIGNvbnN0CiB7CiAgICAgaWYgKGlzRXh0ZW5kZWQoKSkK
LSAgICAgICAgcmV0dXJuIENvbG9yIHsgYXNFeHRlbmRlZCgpLmludmVydGVkQ29sb3JXaXRoQWxw
aGEoYWxwaGEpIH07Ci0KLSAgICBhdXRvIFtyLCBnLCBiLCBleGlzdGluZ0FscGhhXSA9IGFzU2lt
cGxlQ29sb3IoKTsKLSAgICByZXR1cm4geyAweEZGIC0gciwgMHhGRiAtIGcsIDB4RkYgLSBiLCBj
b2xvckZsb2F0VG9TaW1wbGVDb2xvckJ5dGUoYWxwaGEpIH07CisgICAgICAgIHJldHVybiBhc0V4
dGVuZGVkKCkuaW52ZXJ0ZWRDb2xvcldpdGhBbHBoYShhbHBoYSk7CisgICAgcmV0dXJuIGFzU2lt
cGxlKCkuaW52ZXJ0ZWRDb2xvcldpdGhBbHBoYShzY2FsZVJvdW5kQW5kQ2xhbXBDb2xvckNoYW5u
ZWwoYWxwaGEpKTsKIH0KIAogQ29sb3IgQ29sb3I6OnNlbWFudGljQ29sb3IoKSBjb25zdApAQCAt
MzA4LDM4ICszMDYsMjMgQEAgQ29sb3IgQ29sb3I6OnNlbWFudGljQ29sb3IoKSBjb25zdAogCiBz
dGQ6OnBhaXI8Q29sb3JTcGFjZSwgQ29sb3JDb21wb25lbnRzPGZsb2F0Pj4gQ29sb3I6OmNvbG9y
U3BhY2VBbmRDb21wb25lbnRzKCkgY29uc3QKIHsKLSAgICBpZiAoaXNFeHRlbmRlZCgpKSB7Ci0g
ICAgICAgIGF1dG8mIGV4dGVuZGVkQ29sb3IgPSBhc0V4dGVuZGVkKCk7Ci0gICAgICAgIHJldHVy
biB7IGV4dGVuZGVkQ29sb3IuY29sb3JTcGFjZSgpLCBleHRlbmRlZENvbG9yLmNoYW5uZWxzKCkg
fTsKLSAgICB9Ci0KLSAgICBhdXRvIFtyLCBnLCBiLCBhXSA9IGFzU2ltcGxlQ29sb3IoKTsKLSAg
ICByZXR1cm4geyBDb2xvclNwYWNlOjpTUkdCLCBDb2xvckNvbXBvbmVudHM8ZmxvYXQ+IHsgciAv
IDI1NS4wZiwgZyAvIDI1NS4wZiwgYiAvIDI1NS4wZiwgIGEgLyAyNTUuMGYgfSB9OworICAgIGlm
IChpc0V4dGVuZGVkKCkpCisgICAgICAgIHJldHVybiB7IGFzRXh0ZW5kZWQoKS5jb2xvclNwYWNl
KCksIGFzRXh0ZW5kZWQoKS5jb21wb25lbnRzKCkgfTsKKyAgICByZXR1cm4geyBDb2xvclNwYWNl
OjpTUkdCLCBhc1NpbXBsZSgpLmFzU1JHQkZsb2F0Q29tcG9uZW50cygpIH07CiB9CiAKIFNpbXBs
ZUNvbG9yIENvbG9yOjp0b1NSR0JBU2ltcGxlQ29sb3JMb3NzeSgpIGNvbnN0CiB7Ci0gICAgaWYg
KGlzRXh0ZW5kZWQoKSkgewotICAgICAgICBhdXRvIFtyLCBnLCBiLCBhXSA9IHRvU1JHQkFDb21w
b25lbnRzTG9zc3koKTsKLSAgICAgICAgcmV0dXJuIG1ha2VTaW1wbGVDb2xvckZyb21GbG9hdHMo
ciwgZywgYiwgYSk7Ci0gICAgfQotCi0gICAgcmV0dXJuIGFzU2ltcGxlQ29sb3IoKTsKKyAgICBp
ZiAoaXNFeHRlbmRlZCgpKQorICAgICAgICByZXR1cm4gbWFrZVNpbXBsZUNvbG9yKHRvU1JHQkFD
b21wb25lbnRzTG9zc3koKSk7CisgICAgcmV0dXJuIGFzU2ltcGxlKCk7CiB9CiAKIENvbG9yQ29t
cG9uZW50czxmbG9hdD4gQ29sb3I6OnRvU1JHQkFDb21wb25lbnRzTG9zc3koKSBjb25zdAogewot
ICAgIGF1dG8gW2NvbG9yU3BhY2UsIGNvbXBvbmVudHNdID0gY29sb3JTcGFjZUFuZENvbXBvbmVu
dHMoKTsKLSAgICBzd2l0Y2ggKGNvbG9yU3BhY2UpIHsKLSAgICBjYXNlIENvbG9yU3BhY2U6OlNS
R0I6Ci0gICAgICAgIHJldHVybiBjb21wb25lbnRzOwotICAgIGNhc2UgQ29sb3JTcGFjZTo6TGlu
ZWFyUkdCOgotICAgICAgICByZXR1cm4gbGluZWFyVG9SR0JDb21wb25lbnRzKGNvbXBvbmVudHMp
OwotICAgIGNhc2UgQ29sb3JTcGFjZTo6RGlzcGxheVAzOgotICAgICAgICByZXR1cm4gcDNUb1NS
R0IoY29tcG9uZW50cyk7Ci0gICAgfQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJl
dHVybiB7IH07CisgICAgaWYgKGlzRXh0ZW5kZWQoKSkKKyAgICAgICAgcmV0dXJuIGFzRXh0ZW5k
ZWQoKS50b1NSR0JBQ29tcG9uZW50c0xvc3N5KCk7CisgICAgcmV0dXJuIGFzU2ltcGxlKCkuYXNT
UkdCRmxvYXRDb21wb25lbnRzKCk7CiB9CiAKIGJvb2wgZXh0ZW5kZWRDb2xvcnNFcXVhbChjb25z
dCBDb2xvciYgYSwgY29uc3QgQ29sb3ImIGIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Db2xvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0NvbG9yLmgJKHJldmlzaW9uIDI2MjM0OCkKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0NvbG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTE0MCwxMSArMTQwLDEx
IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsgcmV0dXJuIGlzRXh0ZW5k
ZWQoKSB8fCAobV9jb2xvckRhdGEuc2ltcGxlQ29sb3JBbmRGbGFncyAmIHZhbGlkU2ltcGxlQ29s
b3JCaXQpOyB9CiAKLSAgICBib29sIGlzT3BhcXVlKCkgY29uc3QgeyByZXR1cm4gaXNFeHRlbmRl
ZCgpID8gYXNFeHRlbmRlZCgpLmFscGhhKCkgPT0gMS4wIDogYXNTaW1wbGVDb2xvcigpLmlzT3Bh
cXVlKCk7IH0KLSAgICBib29sIGlzVmlzaWJsZSgpIGNvbnN0IHsgcmV0dXJuIGlzRXh0ZW5kZWQo
KSA/IGFzRXh0ZW5kZWQoKS5hbHBoYSgpID4gMC4wIDogYXNTaW1wbGVDb2xvcigpLmlzVmlzaWJs
ZSgpOyB9CisgICAgYm9vbCBpc09wYXF1ZSgpIGNvbnN0IHsgcmV0dXJuIGlzRXh0ZW5kZWQoKSA/
IGFzRXh0ZW5kZWQoKS5hbHBoYSgpID09IDEuMCA6IGFzU2ltcGxlKCkuaXNPcGFxdWUoKTsgfQor
ICAgIGJvb2wgaXNWaXNpYmxlKCkgY29uc3QgeyByZXR1cm4gaXNFeHRlbmRlZCgpID8gYXNFeHRl
bmRlZCgpLmFscGhhKCkgPiAwLjAgOiBhc1NpbXBsZSgpLmlzVmlzaWJsZSgpOyB9CiAKLSAgICBp
bnQgYWxwaGEoKSBjb25zdCB7IHJldHVybiBpc0V4dGVuZGVkKCkgPyBhc0V4dGVuZGVkKCkuYWxw
aGEoKSAqIDI1NSA6IGFzU2ltcGxlQ29sb3IoKS5hbHBoYUNvbXBvbmVudCgpOyB9Ci0gICAgZmxv
YXQgYWxwaGFBc0Zsb2F0KCkgY29uc3QgeyByZXR1cm4gaXNFeHRlbmRlZCgpID8gYXNFeHRlbmRl
ZCgpLmFscGhhKCkgOiBhc1NpbXBsZUNvbG9yKCkuYWxwaGFDb21wb25lbnRBc0Zsb2F0KCk7IH0K
KyAgICBpbnQgYWxwaGEoKSBjb25zdCB7IHJldHVybiBpc0V4dGVuZGVkKCkgPyBhc0V4dGVuZGVk
KCkuYWxwaGEoKSAqIDI1NSA6IGFzU2ltcGxlKCkuYWxwaGFDb21wb25lbnQoKTsgfQorICAgIGZs
b2F0IGFscGhhQXNGbG9hdCgpIGNvbnN0IHsgcmV0dXJuIGlzRXh0ZW5kZWQoKSA/IGFzRXh0ZW5k
ZWQoKS5hbHBoYSgpIDogYXNTaW1wbGUoKS5hbHBoYUNvbXBvbmVudEFzRmxvYXQoKTsgfQogCiAg
ICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0OwogCkBAIC0yMzIsNyArMjMyLDcgQEAgcHVibGljOgog
ICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxDb2xvcj4gZGVjb2Rl
KERlY29kZXImKTsKIAogcHJpdmF0ZToKLSAgICBjb25zdCBTaW1wbGVDb2xvciBhc1NpbXBsZUNv
bG9yKCkgY29uc3Q7CisgICAgY29uc3QgU2ltcGxlQ29sb3IgYXNTaW1wbGUoKSBjb25zdDsKIAog
ICAgIHZvaWQgc2V0U2ltcGxlQ29sb3IoU2ltcGxlQ29sb3IpOwogICAgIHZvaWQgc2V0SXNTZW1h
bnRpYygpIHsgbV9jb2xvckRhdGEuc2ltcGxlQ29sb3JBbmRGbGFncyB8PSBpc1NlbWFudGljU2lt
cGxlQ29sb3JCaXQ7IH0KQEAgLTMxOCw3ICszMTgsNyBAQCBpbmxpbmUgY29uc3QgRXh0ZW5kZWRD
b2xvciYgQ29sb3I6OmFzRXh0CiAgICAgcmV0dXJuICptX2NvbG9yRGF0YS5leHRlbmRlZENvbG9y
OwogfQogCi1pbmxpbmUgY29uc3QgU2ltcGxlQ29sb3IgQ29sb3I6OmFzU2ltcGxlQ29sb3IoKSBj
b25zdAoraW5saW5lIGNvbnN0IFNpbXBsZUNvbG9yIENvbG9yOjphc1NpbXBsZSgpIGNvbnN0CiB7
CiAgICAgQVNTRVJUKCFpc0V4dGVuZGVkKCkpOwogICAgIHJldHVybiB7IHN0YXRpY19jYXN0PHVp
bnQzMl90PihtX2NvbG9yRGF0YS5zaW1wbGVDb2xvckFuZEZsYWdzID4+IDMyKSB9OwpAQCAtMzM0
LDE0ICszMzQsMTQgQEAgaW5saW5lIGJvb2wgQ29sb3I6OmlzQmxhY2tDb2xvcihjb25zdCBDbwog
ewogICAgIGlmIChjb2xvci5pc0V4dGVuZGVkKCkpCiAgICAgICAgIHJldHVybiBjb2xvci5hc0V4
dGVuZGVkKCkuaXNCbGFjaygpOwotICAgIHJldHVybiBjb2xvci5hc1NpbXBsZUNvbG9yKCkgPT0g
Q29sb3I6OmJsYWNrOworICAgIHJldHVybiBjb2xvci5hc1NpbXBsZSgpID09IENvbG9yOjpibGFj
azsKIH0KIAogaW5saW5lIGJvb2wgQ29sb3I6OmlzV2hpdGVDb2xvcihjb25zdCBDb2xvciYgY29s
b3IpCiB7CiAgICAgaWYgKGNvbG9yLmlzRXh0ZW5kZWQoKSkKICAgICAgICAgcmV0dXJuIGNvbG9y
LmFzRXh0ZW5kZWQoKS5pc1doaXRlKCk7Ci0gICAgcmV0dXJuIGNvbG9yLmFzU2ltcGxlQ29sb3Io
KSA9PSBDb2xvcjo6d2hpdGU7CisgICAgcmV0dXJuIGNvbG9yLmFzU2ltcGxlKCkgPT0gQ29sb3I6
OndoaXRlOwogfQogCiB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgpAQCAtMzUxLDcgKzM1MSw3IEBA
IHZvaWQgQ29sb3I6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb24KICAgICAgICAgZW5jb2Rl
ciA8PCB0cnVlOwogCiAgICAgICAgIGF1dG8mIGV4dGVuZGVkQ29sb3IgPSBhc0V4dGVuZGVkKCk7
Ci0gICAgICAgIGF1dG8gW2MxLCBjMiwgYzMsIGFscGhhXSA9IGV4dGVuZGVkQ29sb3IuY2hhbm5l
bHMoKTsKKyAgICAgICAgYXV0byBbYzEsIGMyLCBjMywgYWxwaGFdID0gZXh0ZW5kZWRDb2xvci5j
b21wb25lbnRzKCk7CiAgICAgICAgIGVuY29kZXIgPDwgYzE7CiAgICAgICAgIGVuY29kZXIgPDwg
YzI7CiAgICAgICAgIGVuY29kZXIgPDwgYzM7CkBAIC0zNzAsNyArMzcwLDcgQEAgdm9pZCBDb2xv
cjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbgogICAgIC8vIEZJWE1FOiBUaGlzIHNob3Vs
ZCBlbmNvZGUgd2hldGhlciB0aGUgY29sb3IgaXMgc2VtYW50aWMuCiAKICAgICBlbmNvZGVyIDw8
IHRydWU7Ci0gICAgZW5jb2RlciA8PCBhc1NpbXBsZUNvbG9yKCkudmFsdWUoKTsKKyAgICBlbmNv
ZGVyIDw8IGFzU2ltcGxlKCkudmFsdWUoKTsKIH0KIAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yQ29tcG9uZW50cy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yQ29t
cG9uZW50cy5oCShyZXZpc2lvbiAyNjIzNDgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Db2xvckNvbXBvbmVudHMuaAkod29ya2luZyBjb3B5KQpAQCAtNDksNiArNDksOSBA
QCBzdHJ1Y3QgQ29sb3JDb21wb25lbnRzIHsKIAogICAgIGNvbnN0ZXhwciBDb2xvckNvbXBvbmVu
dHMgYWJzKCkgY29uc3Q7CiAKKyAgICBjb25zdGV4cHIgVCYgb3BlcmF0b3JbXShzaXplX3QgaSkg
eyByZXR1cm4gY29tcG9uZW50c1tpXTsgfQorICAgIGNvbnN0ZXhwciBjb25zdCBUJiBvcGVyYXRv
cltdKHNpemVfdCBpKSBjb25zdCB7IHJldHVybiBjb21wb25lbnRzW2ldOyB9CisKICAgICB0ZW1w
bGF0ZTxzdGQ6OnNpemVfdCBOPgogICAgIGNvbnN0ZXhwciBUIGdldCgpIGNvbnN0OwogCkBAIC01
OCwxMCArNjEsMTAgQEAgc3RydWN0IENvbG9yQ29tcG9uZW50cyB7CiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPgogY29uc3RleHByIENvbG9yQ29tcG9uZW50czxUPiYgQ29sb3JDb21wb25lbnRzPFQ+Ojpv
cGVyYXRvcis9KGNvbnN0IENvbG9yQ29tcG9uZW50cyYgcmhzKQogewotICAgIGNvbXBvbmVudHNb
MF0gKz0gcmhzLmNvbXBvbmVudHNbMF07Ci0gICAgY29tcG9uZW50c1sxXSArPSByaHMuY29tcG9u
ZW50c1sxXTsKLSAgICBjb21wb25lbnRzWzJdICs9IHJocy5jb21wb25lbnRzWzJdOwotICAgIGNv
bXBvbmVudHNbM10gKz0gcmhzLmNvbXBvbmVudHNbM107CisgICAgY29tcG9uZW50c1swXSArPSBy
aHNbMF07CisgICAgY29tcG9uZW50c1sxXSArPSByaHNbMV07CisgICAgY29tcG9uZW50c1syXSAr
PSByaHNbMl07CisgICAgY29tcG9uZW50c1szXSArPSByaHNbM107CiAgICAgcmV0dXJuICp0aGlz
OwogfQogCkBAIC0xMjAsMTAgKzEyMywxMCBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogY29uc3Rl
eHByIENvbG9yQ29tcG9uZW50czxUPiBwZXJDb21wb25lbnRNYXgoY29uc3QgQ29sb3JDb21wb25l
bnRzPFQ+JiBhLCBjb25zdCBDb2xvckNvbXBvbmVudHM8VD4mIGIpCiB7CiAgICAgcmV0dXJuIHsK
LSAgICAgICAgc3RkOjptYXgoYS5jb21wb25lbnRzWzBdLCBiLmNvbXBvbmVudHNbMF0pLAotICAg
ICAgICBzdGQ6Om1heChhLmNvbXBvbmVudHNbMV0sIGIuY29tcG9uZW50c1sxXSksCi0gICAgICAg
IHN0ZDo6bWF4KGEuY29tcG9uZW50c1syXSwgYi5jb21wb25lbnRzWzJdKSwKLSAgICAgICAgc3Rk
OjptYXgoYS5jb21wb25lbnRzWzNdLCBiLmNvbXBvbmVudHNbM10pCisgICAgICAgIHN0ZDo6bWF4
KGFbMF0sIGJbMF0pLAorICAgICAgICBzdGQ6Om1heChhWzFdLCBiWzFdKSwKKyAgICAgICAgc3Rk
OjptYXgoYVsyXSwgYlsyXSksCisgICAgICAgIHN0ZDo6bWF4KGFbM10sIGJbM10pCiAgICAgfTsK
IH0KIApAQCAtMTMxLDEwICsxMzQsMTAgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KIGNvbnN0ZXhw
ciBDb2xvckNvbXBvbmVudHM8VD4gcGVyQ29tcG9uZW50TWluKGNvbnN0IENvbG9yQ29tcG9uZW50
czxUPiYgYSwgY29uc3QgQ29sb3JDb21wb25lbnRzPFQ+JiBiKQogewogICAgIHJldHVybiB7Ci0g
ICAgICAgIHN0ZDo6bWluKGEuY29tcG9uZW50c1swXSwgYi5jb21wb25lbnRzWzBdKSwKLSAgICAg
ICAgc3RkOjptaW4oYS5jb21wb25lbnRzWzFdLCBiLmNvbXBvbmVudHNbMV0pLAotICAgICAgICBz
dGQ6Om1pbihhLmNvbXBvbmVudHNbMl0sIGIuY29tcG9uZW50c1syXSksCi0gICAgICAgIHN0ZDo6
bWluKGEuY29tcG9uZW50c1szXSwgYi5jb21wb25lbnRzWzNdKQorICAgICAgICBzdGQ6Om1pbihh
WzBdLCBiWzBdKSwKKyAgICAgICAgc3RkOjptaW4oYVsxXSwgYlsxXSksCisgICAgICAgIHN0ZDo6
bWluKGFbMl0sIGJbMl0pLAorICAgICAgICBzdGQ6Om1pbihhWzNdLCBiWzNdKQogICAgIH07CiB9
CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yTWF0cml4LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JNYXRy
aXguaAkocmV2aXNpb24gMjYyMzQ4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvQ29sb3JNYXRyaXguaAkod29ya2luZyBjb3B5KQpAQCAtMTE1LDE3ICsxMTUsMTcgQEAgY29u
c3RleHByIENvbG9yQ29tcG9uZW50czxmbG9hdD4gQ29sb3JNYQogICAgIGZvciAoc2l6ZV90IHJv
dyA9IDA7IHJvdyA8IFJvd3M7ICsrcm93KSB7CiAgICAgICAgIGlmIGNvbnN0ZXhwciAoQ29sdW1u
cyA8PSBDb2xvckNvbXBvbmVudHM8ZmxvYXQ+OjpTaXplKSB7CiAgICAgICAgICAgICBmb3IgKHNp
emVfdCBjb2x1bW4gPSAwOyBjb2x1bW4gPCBDb2x1bW5zOyArK2NvbHVtbikKLSAgICAgICAgICAg
ICAgICByZXN1bHQuY29tcG9uZW50c1tyb3ddICs9IGF0KHJvdywgY29sdW1uKSAqIGlucHV0VmVj
dG9yLmNvbXBvbmVudHNbY29sdW1uXTsKKyAgICAgICAgICAgICAgICByZXN1bHRbcm93XSArPSBh
dChyb3csIGNvbHVtbikgKiBpbnB1dFZlY3Rvcltjb2x1bW5dOwogICAgICAgICB9IGVsc2UgaWYg
Y29uc3RleHByIChDb2x1bW5zID4gQ29sb3JDb21wb25lbnRzPGZsb2F0Pjo6U2l6ZSkgewogICAg
ICAgICAgICAgZm9yIChzaXplX3QgY29sdW1uID0gMDsgY29sdW1uIDwgQ29sb3JDb21wb25lbnRz
PGZsb2F0Pjo6U2l6ZTsgKytjb2x1bW4pCi0gICAgICAgICAgICAgICAgcmVzdWx0LmNvbXBvbmVu
dHNbcm93XSArPSBhdChyb3csIGNvbHVtbikgKiBpbnB1dFZlY3Rvci5jb21wb25lbnRzW2NvbHVt
bl07CisgICAgICAgICAgICAgICAgcmVzdWx0W3Jvd10gKz0gYXQocm93LCBjb2x1bW4pICogaW5w
dXRWZWN0b3JbY29sdW1uXTsKICAgICAgICAgICAgIGZvciAoc2l6ZV90IGFkZGl0aW9uYWxDb2x1
bW4gPSBDb2xvckNvbXBvbmVudHM8ZmxvYXQ+OjpTaXplOyBhZGRpdGlvbmFsQ29sdW1uIDwgQ29s
dW1uczsgKythZGRpdGlvbmFsQ29sdW1uKQotICAgICAgICAgICAgICAgIHJlc3VsdC5jb21wb25l
bnRzW3Jvd10gKz0gYXQocm93LCBhZGRpdGlvbmFsQ29sdW1uKTsKKyAgICAgICAgICAgICAgICBy
ZXN1bHRbcm93XSArPSBhdChyb3csIGFkZGl0aW9uYWxDb2x1bW4pOwogICAgICAgICB9CiAgICAg
fQogICAgIGlmIGNvbnN0ZXhwciAoQ29sb3JDb21wb25lbnRzPGZsb2F0Pjo6U2l6ZSA+IFJvd3Mp
IHsKICAgICAgICAgZm9yIChzaXplX3QgYWRkaXRpb25hbFJvdyA9IFJvd3M7IGFkZGl0aW9uYWxS
b3cgPCBDb2xvckNvbXBvbmVudHM8ZmxvYXQ+OjpTaXplOyArK2FkZGl0aW9uYWxSb3cpCi0gICAg
ICAgICAgICByZXN1bHQuY29tcG9uZW50c1thZGRpdGlvbmFsUm93XSA9IGlucHV0VmVjdG9yLmNv
bXBvbmVudHNbYWRkaXRpb25hbFJvd107CisgICAgICAgICAgICByZXN1bHRbYWRkaXRpb25hbFJv
d10gPSBpbnB1dFZlY3RvclthZGRpdGlvbmFsUm93XTsKICAgICB9CiAKICAgICByZXR1cm4gcmVz
dWx0OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JVdGlsaXRp
ZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nv
bG9yVXRpbGl0aWVzLmNwcAkocmV2aXNpb24gMjYyMzQ4KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvQ29sb3JVdGlsaXRpZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMywx
MCArMzMsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBib29sIGFyZUVzc2VudGlhbGx5RXF1
YWwoY29uc3QgQ29sb3JDb21wb25lbnRzPGZsb2F0PiYgYSwgY29uc3QgQ29sb3JDb21wb25lbnRz
PGZsb2F0PiYgYikKIHsKLSAgICByZXR1cm4gV1RGOjphcmVFc3NlbnRpYWxseUVxdWFsKGEuY29t
cG9uZW50c1swXSwgYi5jb21wb25lbnRzWzBdKQotICAgICAgICAmJiBXVEY6OmFyZUVzc2VudGlh
bGx5RXF1YWwoYS5jb21wb25lbnRzWzFdLCBiLmNvbXBvbmVudHNbMV0pCi0gICAgICAgICYmIFdU
Rjo6YXJlRXNzZW50aWFsbHlFcXVhbChhLmNvbXBvbmVudHNbMl0sIGIuY29tcG9uZW50c1syXSkK
LSAgICAgICAgJiYgV1RGOjphcmVFc3NlbnRpYWxseUVxdWFsKGEuY29tcG9uZW50c1szXSwgYi5j
b21wb25lbnRzWzNdKTsKKyAgICByZXR1cm4gV1RGOjphcmVFc3NlbnRpYWxseUVxdWFsKGFbMF0s
IGJbMF0pCisgICAgICAgICYmIFdURjo6YXJlRXNzZW50aWFsbHlFcXVhbChhWzFdLCBiWzFdKQor
ICAgICAgICAmJiBXVEY6OmFyZUVzc2VudGlhbGx5RXF1YWwoYVsyXSwgYlsyXSkKKyAgICAgICAg
JiYgV1RGOjphcmVFc3NlbnRpYWxseUVxdWFsKGFbM10sIGJbM10pOwogfQogCiAvLyBUaGVzZSBh
cmUgdGhlIHN0YW5kYXJkIHNSR0IgPC0+IGxpbmVhclJHQiBjb252ZXJzaW9uIGZ1bmN0aW9ucyAo
aHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU1JHQikuCkBAIC01OSwyMCArNTksMjAgQEAg
ZmxvYXQgcmdiVG9MaW5lYXJDb2xvckNvbXBvbmVudChmbG9hdCBjKQogQ29sb3JDb21wb25lbnRz
PGZsb2F0PiByZ2JUb0xpbmVhckNvbXBvbmVudHMoY29uc3QgQ29sb3JDb21wb25lbnRzPGZsb2F0
PiYgUkdCQ29sb3IpCiB7CiAgICAgcmV0dXJuIHsKLSAgICAgICAgcmdiVG9MaW5lYXJDb2xvckNv
bXBvbmVudChSR0JDb2xvci5jb21wb25lbnRzWzBdKSwKLSAgICAgICAgcmdiVG9MaW5lYXJDb2xv
ckNvbXBvbmVudChSR0JDb2xvci5jb21wb25lbnRzWzFdKSwKLSAgICAgICAgcmdiVG9MaW5lYXJD
b2xvckNvbXBvbmVudChSR0JDb2xvci5jb21wb25lbnRzWzJdKSwKLSAgICAgICAgUkdCQ29sb3Iu
Y29tcG9uZW50c1szXQorICAgICAgICByZ2JUb0xpbmVhckNvbG9yQ29tcG9uZW50KFJHQkNvbG9y
WzBdKSwKKyAgICAgICAgcmdiVG9MaW5lYXJDb2xvckNvbXBvbmVudChSR0JDb2xvclsxXSksCisg
ICAgICAgIHJnYlRvTGluZWFyQ29sb3JDb21wb25lbnQoUkdCQ29sb3JbMl0pLAorICAgICAgICBS
R0JDb2xvclszXQogICAgIH07CiB9CiAKIENvbG9yQ29tcG9uZW50czxmbG9hdD4gbGluZWFyVG9S
R0JDb21wb25lbnRzKGNvbnN0IENvbG9yQ29tcG9uZW50czxmbG9hdD4mIGxpbmVhclJHQikKIHsK
ICAgICByZXR1cm4gewotICAgICAgICBsaW5lYXJUb1JHQkNvbG9yQ29tcG9uZW50KGxpbmVhclJH
Qi5jb21wb25lbnRzWzBdKSwKLSAgICAgICAgbGluZWFyVG9SR0JDb2xvckNvbXBvbmVudChsaW5l
YXJSR0IuY29tcG9uZW50c1sxXSksCi0gICAgICAgIGxpbmVhclRvUkdCQ29sb3JDb21wb25lbnQo
bGluZWFyUkdCLmNvbXBvbmVudHNbMl0pLAotICAgICAgICBsaW5lYXJSR0IuY29tcG9uZW50c1sz
XQorICAgICAgICBsaW5lYXJUb1JHQkNvbG9yQ29tcG9uZW50KGxpbmVhclJHQlswXSksCisgICAg
ICAgIGxpbmVhclRvUkdCQ29sb3JDb21wb25lbnQobGluZWFyUkdCWzFdKSwKKyAgICAgICAgbGlu
ZWFyVG9SR0JDb2xvckNvbXBvbmVudChsaW5lYXJSR0JbMl0pLAorICAgICAgICBsaW5lYXJSR0Jb
M10KICAgICB9OwogfQogCkBAIC0xNDIsOCArMTQyLDcgQEAgZmxvYXQgbGlnaHRuZXNzKGNvbnN0
IENvbG9yQ29tcG9uZW50czxmbAogewogICAgIGF1dG8gW3IsIGcsIGIsIGFdID0gc1JHQkNvbXBv
bnRlbnRzOwogCi0gICAgZmxvYXQgbWF4ID0gc3RkOjptYXgoeyByLCBnLCBiIH0pOwotICAgIGZs
b2F0IG1pbiA9IHN0ZDo6bWluKHsgciwgZywgYiB9KTsKKyAgICBhdXRvIFttaW4sIG1heF0gPSBz
dGQ6Om1pbm1heCh7IHIsIGcsIGIgfSk7CiAKICAgICByZXR1cm4gMC41ZiAqIChtYXggKyBtaW4p
OwogfQpAQCAtMTYyLDkgKzE2MSw5IEBAIHN0YXRpYyBmbG9hdCBzUkdCVG9MaW5lYXJDb2xvckNv
bXBvbmVudEYKIGZsb2F0IGx1bWluYW5jZShjb25zdCBDb2xvckNvbXBvbmVudHM8ZmxvYXQ+JiBz
UkdCQ29tcG9uZW50cykKIHsKICAgICAvLyBWYWx1ZXMgZnJvbSBodHRwczovL3d3dy53My5vcmcv
VFIvMjAwOC9SRUMtV0NBRzIwLTIwMDgxMjExLyNyZWxhdGl2ZWx1bWluYW5jZWRlZgotICAgIHJl
dHVybiAwLjIxMjZmICogc1JHQlRvTGluZWFyQ29sb3JDb21wb25lbnRGb3JMdW1pbmFuY2Uoc1JH
QkNvbXBvbmVudHMuY29tcG9uZW50c1swXSkKLSAgICAgICAgKyAwLjcxNTJmICogc1JHQlRvTGlu
ZWFyQ29sb3JDb21wb25lbnRGb3JMdW1pbmFuY2Uoc1JHQkNvbXBvbmVudHMuY29tcG9uZW50c1sx
XSkKLSAgICAgICAgKyAwLjA3MjJmICogc1JHQlRvTGluZWFyQ29sb3JDb21wb25lbnRGb3JMdW1p
bmFuY2Uoc1JHQkNvbXBvbmVudHMuY29tcG9uZW50c1syXSk7CisgICAgcmV0dXJuIDAuMjEyNmYg
KiBzUkdCVG9MaW5lYXJDb2xvckNvbXBvbmVudEZvckx1bWluYW5jZShzUkdCQ29tcG9uZW50c1sw
XSkKKyAgICAgICAgKyAwLjcxNTJmICogc1JHQlRvTGluZWFyQ29sb3JDb21wb25lbnRGb3JMdW1p
bmFuY2Uoc1JHQkNvbXBvbmVudHNbMV0pCisgICAgICAgICsgMC4wNzIyZiAqIHNSR0JUb0xpbmVh
ckNvbG9yQ29tcG9uZW50Rm9yTHVtaW5hbmNlKHNSR0JDb21wb25lbnRzWzJdKTsKIH0KIAogZmxv
YXQgY29udHJhc3RSYXRpbyhjb25zdCBDb2xvckNvbXBvbmVudHM8ZmxvYXQ+JiBjb21wb25lbnRz
QSwgY29uc3QgQ29sb3JDb21wb25lbnRzPGZsb2F0PiYgY29tcG9uZW50c0IpCkBAIC0xODUsOCAr
MTg0LDcgQEAgQ29sb3JDb21wb25lbnRzPGZsb2F0PiBzUkdCVG9IU0woY29uc3QgQwogICAgIC8v
IGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSFNMX2NvbG9yX3NwYWNlLgogICAgIGF1dG8g
W3IsIGcsIGIsIGFscGhhXSA9IHNSR0JDb21wb250ZW50czsKIAotICAgIGZsb2F0IG1heCA9IHN0
ZDo6bWF4KHsgciwgZywgYiB9KTsKLSAgICBmbG9hdCBtaW4gPSBzdGQ6Om1pbih7IHIsIGcsIGIg
fSk7CisgICAgYXV0byBbbWluLCBtYXhdID0gc3RkOjptaW5tYXgoeyByLCBnLCBiIH0pOwogICAg
IGZsb2F0IGNocm9tYSA9IG1heCAtIG1pbjsKIAogICAgIGZsb2F0IGh1ZTsKQEAgLTI0Miw5ICsy
NDAsNyBAQCBzdGF0aWMgZmxvYXQgY2FsY0h1ZShmbG9hdCB0ZW1wMSwgZmxvYXQgCiAvLyBmdXJ0
aGVyIGV4cGxhbmF0aW9uIGF2YWlsYWJsZSBhdCBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtp
L0hTTF9jb2xvcl9zcGFjZQogQ29sb3JDb21wb25lbnRzPGZsb2F0PiBoc2xUb1NSR0IoY29uc3Qg
Q29sb3JDb21wb25lbnRzPGZsb2F0PiYgaHNsQ29sb3IpCiB7Ci0gICAgZmxvYXQgaHVlID0gaHNs
Q29sb3IuY29tcG9uZW50c1swXTsKLSAgICBmbG9hdCBzYXR1cmF0aW9uID0gaHNsQ29sb3IuY29t
cG9uZW50c1sxXTsKLSAgICBmbG9hdCBsaWdodG5lc3MgPSBoc2xDb2xvci5jb21wb25lbnRzWzJd
OworICAgIGF1dG8gW2h1ZSwgc2F0dXJhdGlvbiwgbGlnaHRuZXNzLCBhbHBoYV0gPSBoc2xDb2xv
cjsKIAogICAgIC8vIENvbnZlcnQgYmFjayB0byBSR0IuCiAgICAgaWYgKCFzYXR1cmF0aW9uKSB7
CkBAIC0yNTIsNyArMjQ4LDcgQEAgQ29sb3JDb21wb25lbnRzPGZsb2F0PiBoc2xUb1NSR0IoY29u
c3QgQwogICAgICAgICAgICAgbGlnaHRuZXNzLAogICAgICAgICAgICAgbGlnaHRuZXNzLAogICAg
ICAgICAgICAgbGlnaHRuZXNzLAotICAgICAgICAgICAgaHNsQ29sb3IuY29tcG9uZW50c1szXQor
ICAgICAgICAgICAgYWxwaGEKICAgICAgICAgfTsKICAgICB9CiAgICAgCkBAIC0yNjQsNyArMjYw
LDcgQEAgQ29sb3JDb21wb25lbnRzPGZsb2F0PiBoc2xUb1NSR0IoY29uc3QgQwogICAgICAgICBj
YWxjSHVlKHRlbXAxLCB0ZW1wMiwgaHVlICsgMi4wZiksCiAgICAgICAgIGNhbGNIdWUodGVtcDEs
IHRlbXAyLCBodWUpLAogICAgICAgICBjYWxjSHVlKHRlbXAxLCB0ZW1wMiwgaHVlIC0gMi4wZiks
Ci0gICAgICAgIGhzbENvbG9yLmNvbXBvbmVudHNbM10KKyAgICAgICAgYWxwaGEKICAgICB9Owog
fQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclV0aWxpdGll
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9y
VXRpbGl0aWVzLmgJKHJldmlzaW9uIDI2MjM0OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0NvbG9yVXRpbGl0aWVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTYzLDYgKzYzLDEx
IEBAIGlubGluZSB1aW50OF90IHJvdW5kQW5kQ2xhbXBDb2xvckNoYW5uZWwKICAgICByZXR1cm4g
c3RkOjpjbGFtcChzdGQ6OnJvdW5kKHZhbHVlKSwgMC5mLCAyNTUuZik7CiB9CiAKK2lubGluZSB1
aW50OF90IHNjYWxlUm91bmRBbmRDbGFtcENvbG9yQ2hhbm5lbChmbG9hdCBmKQoreworICAgIHJl
dHVybiBzdGQ6OmNsYW1wKHN0YXRpY19jYXN0PGludD4obHJvdW5kZigyNTUuMGYgKiBmKSksIDAs
IDI1NSk7Cit9CisKIGNvbnN0ZXhwciB1aW50MTZfdCBmYXN0TXVsdGlwbHlCeTI1NSh1aW50MTZf
dCB2YWx1ZSkKIHsKICAgICByZXR1cm4gKHZhbHVlIDw8IDgpIC0gdmFsdWU7CkBAIC03Nyw5ICs4
Miw1IEBAIGNvbnN0ZXhwciB1aW50MTZfdCBmYXN0RGl2aWRlQnkyNTUodWludDEKICAgICByZXR1
cm4gYXBwcm94aW1hdGlvbiArIChyZW1haW5kZXIgPj4gOCk7CiB9CiAKLWlubGluZSB1aW50OF90
IGNvbG9yRmxvYXRUb1NpbXBsZUNvbG9yQnl0ZShmbG9hdCBmKQotewotICAgIHJldHVybiBzdGQ6
OmNsYW1wKHN0YXRpY19jYXN0PGludD4obHJvdW5kZigyNTUuMGYgKiBmKSksIDAsIDI1NSk7Ci19
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0V4dGVuZGVkQ29sb3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0V4dGVuZGVkQ29sb3IuY3BwCShyZXZpc2lvbiAyNjIzNDgpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRlbmRlZENvbG9yLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1
ZGUgIkV4dGVuZGVkQ29sb3IuaCIKIAorI2luY2x1ZGUgIkNvbG9yVXRpbGl0aWVzLmgiCiAjaW5j
bHVkZSA8d3RmL0hhc2hlci5oPgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGVOdW1iZXJzLmg+CkBAIC0zOSw3ICs0MCw3IEBA
IFJlZjxFeHRlbmRlZENvbG9yPiBFeHRlbmRlZENvbG9yOjpjcmVhdGUKIAogdW5zaWduZWQgRXh0
ZW5kZWRDb2xvcjo6aGFzaCgpIGNvbnN0CiB7Ci0gICAgYXV0byBbYzEsIGMyLCBjMywgYWxwaGFd
ID0gY2hhbm5lbHMoKTsKKyAgICBhdXRvIFtjMSwgYzIsIGMzLCBhbHBoYV0gPSBjb21wb25lbnRz
KCk7CiAgICAgcmV0dXJuIGNvbXB1dGVIYXNoKGMxLCBjMiwgYzMsIGFscGhhLCBtX2NvbG9yU3Bh
Y2UpOwogfQogCkBAIC01OCw3ICs1OSw3IEBAIFN0cmluZyBFeHRlbmRlZENvbG9yOjpjc3NUZXh0
KCkgY29uc3QKICAgICAgICAgcmV0dXJuIFdURjo6ZW1wdHlTdHJpbmcoKTsKICAgICB9CiAKLSAg
ICBhdXRvIFtjMSwgYzIsIGMzLCBleGlzdGluZ0FscGhhXSA9IGNoYW5uZWxzKCk7CisgICAgYXV0
byBbYzEsIGMyLCBjMywgZXhpc3RpbmdBbHBoYV0gPSBjb21wb25lbnRzKCk7CiAKICAgICBpZiAo
V1RGOjphcmVFc3NlbnRpYWxseUVxdWFsKGFscGhhKCksIDEuMGYpKQogICAgICAgICByZXR1cm4g
bWFrZVN0cmluZygiY29sb3IoIiwgY29sb3JTcGFjZSwgJyAnLCBjMSwgJyAnLCBjMiwgJyAnLCBj
MywgJyknKTsKQEAgLTY4LDI1ICs2OSwzOSBAQCBTdHJpbmcgRXh0ZW5kZWRDb2xvcjo6Y3NzVGV4
dCgpIGNvbnN0CiAKIFJlZjxFeHRlbmRlZENvbG9yPiBFeHRlbmRlZENvbG9yOjpjb2xvcldpdGhB
bHBoYShmbG9hdCBvdmVycmlkZUFscGhhKSBjb25zdAogewotICAgIGF1dG8gW2MxLCBjMiwgYzMs
IGV4aXN0aW5nQWxwaGFdID0gY2hhbm5lbHMoKTsKKyAgICBhdXRvIFtjMSwgYzIsIGMzLCBleGlz
dGluZ0FscGhhXSA9IGNvbXBvbmVudHMoKTsKICAgICByZXR1cm4gRXh0ZW5kZWRDb2xvcjo6Y3Jl
YXRlKGMxLCBjMiwgYzMsIG92ZXJyaWRlQWxwaGEsIGNvbG9yU3BhY2UoKSk7CiB9CiAKIFJlZjxF
eHRlbmRlZENvbG9yPiBFeHRlbmRlZENvbG9yOjppbnZlcnRlZENvbG9yV2l0aEFscGhhKGZsb2F0
IG92ZXJyaWRlQWxwaGEpIGNvbnN0CiB7Ci0gICAgYXV0byBbYzEsIGMyLCBjMywgZXhpc3RpbmdB
bHBoYV0gPSBjaGFubmVscygpOworICAgIGF1dG8gW2MxLCBjMiwgYzMsIGV4aXN0aW5nQWxwaGFd
ID0gY29tcG9uZW50cygpOwogICAgIHJldHVybiBFeHRlbmRlZENvbG9yOjpjcmVhdGUoMS4wZiAt
IGMxLCAxLjBmIC0gYzIsIDEuMGYgLSBjMywgb3ZlcnJpZGVBbHBoYSwgY29sb3JTcGFjZSgpKTsK
IH0KIAorQ29sb3JDb21wb25lbnRzPGZsb2F0PiBFeHRlbmRlZENvbG9yOjp0b1NSR0JBQ29tcG9u
ZW50c0xvc3N5KCkgY29uc3QKK3sKKyAgICBzd2l0Y2ggKG1fY29sb3JTcGFjZSkgeworICAgIGNh
c2UgQ29sb3JTcGFjZTo6U1JHQjoKKyAgICAgICAgcmV0dXJuIG1fY29tcG9uZW50czsKKyAgICBj
YXNlIENvbG9yU3BhY2U6OkxpbmVhclJHQjoKKyAgICAgICAgcmV0dXJuIGxpbmVhclRvUkdCQ29t
cG9uZW50cyhtX2NvbXBvbmVudHMpOworICAgIGNhc2UgQ29sb3JTcGFjZTo6RGlzcGxheVAzOgor
ICAgICAgICByZXR1cm4gcDNUb1NSR0IobV9jb21wb25lbnRzKTsKKyAgICB9CisgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIHsgfTsKK30KKwogYm9vbCBFeHRlbmRlZENvbG9y
Ojppc1doaXRlKCkgY29uc3QKIHsKLSAgICBhdXRvIFtjMSwgYzIsIGMzLCBhbHBoYV0gPSBjaGFu
bmVscygpOworICAgIGF1dG8gW2MxLCBjMiwgYzMsIGFscGhhXSA9IGNvbXBvbmVudHMoKTsKICAg
ICByZXR1cm4gYzEgPT0gMSAmJiBjMiA9PSAxICYmIGMzID09IDEgJiYgYWxwaGEgPT0gMTsKIH0K
IAogYm9vbCBFeHRlbmRlZENvbG9yOjppc0JsYWNrKCkgY29uc3QKIHsKLSAgICBhdXRvIFtjMSwg
YzIsIGMzLCBhbHBoYV0gPSBjaGFubmVscygpOworICAgIGF1dG8gW2MxLCBjMiwgYzMsIGFscGhh
XSA9IGNvbXBvbmVudHMoKTsKICAgICByZXR1cm4gIWMxICYmICFjMiAmJiAhYzMgJiYgYWxwaGEg
PT0gMTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRXh0ZW5k
ZWRDb2xvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0V4dGVuZGVkQ29sb3IuaAkocmV2aXNpb24gMjYyMzQ4KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvRXh0ZW5kZWRDb2xvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw5ICsz
Nyw5IEBAIGNsYXNzIEV4dGVuZGVkQ29sb3IgOiBwdWJsaWMgUmVmQ291bnRlZDwKIHB1YmxpYzoK
ICAgICBzdGF0aWMgUmVmPEV4dGVuZGVkQ29sb3I+IGNyZWF0ZShmbG9hdCwgZmxvYXQsIGZsb2F0
LCBmbG9hdCBhbHBoYSwgQ29sb3JTcGFjZSA9IENvbG9yU3BhY2U6OlNSR0IpOwogCi0gICAgZmxv
YXQgYWxwaGEoKSBjb25zdCB7IHJldHVybiBtX2NoYW5uZWxzLmNvbXBvbmVudHNbM107IH0KKyAg
ICBmbG9hdCBhbHBoYSgpIGNvbnN0IHsgcmV0dXJuIG1fY29tcG9uZW50c1szXTsgfQogCi0gICAg
Y29uc3QgQ29sb3JDb21wb25lbnRzPGZsb2F0PiYgY2hhbm5lbHMoKSBjb25zdCB7IHJldHVybiBt
X2NoYW5uZWxzOyB9CisgICAgY29uc3QgQ29sb3JDb21wb25lbnRzPGZsb2F0PiYgY29tcG9uZW50
cygpIGNvbnN0IHsgcmV0dXJuIG1fY29tcG9uZW50czsgfQogICAgIENvbG9yU3BhY2UgY29sb3JT
cGFjZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29sb3JTcGFjZTsgfQogCiAgICAgV0VCQ09SRV9FWFBP
UlQgdW5zaWduZWQgaGFzaCgpIGNvbnN0OwpAQCAtNDksMjIgKzQ5LDI0IEBAIHB1YmxpYzoKICAg
ICBSZWY8RXh0ZW5kZWRDb2xvcj4gY29sb3JXaXRoQWxwaGEoZmxvYXQpIGNvbnN0OwogICAgIFJl
ZjxFeHRlbmRlZENvbG9yPiBpbnZlcnRlZENvbG9yV2l0aEFscGhhKGZsb2F0KSBjb25zdDsKIAor
ICAgIENvbG9yQ29tcG9uZW50czxmbG9hdD4gdG9TUkdCQUNvbXBvbmVudHNMb3NzeSgpIGNvbnN0
OworCiAgICAgYm9vbCBpc1doaXRlKCkgY29uc3Q7CiAgICAgYm9vbCBpc0JsYWNrKCkgY29uc3Q7
CiAKIHByaXZhdGU6CiAgICAgRXh0ZW5kZWRDb2xvcihmbG9hdCBjMSwgZmxvYXQgYzIsIGZsb2F0
IGMzLCBmbG9hdCBhbHBoYSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlKQotICAgICAgICA6IG1fY2hh
bm5lbHMoYzEsIGMyLCBjMywgYWxwaGEpCisgICAgICAgIDogbV9jb21wb25lbnRzKGMxLCBjMiwg
YzMsIGFscGhhKQogICAgICAgICAsIG1fY29sb3JTcGFjZShjb2xvclNwYWNlKQogICAgIHsgfQog
Ci0gICAgQ29sb3JDb21wb25lbnRzPGZsb2F0PiBtX2NoYW5uZWxzOworICAgIENvbG9yQ29tcG9u
ZW50czxmbG9hdD4gbV9jb21wb25lbnRzOwogICAgIENvbG9yU3BhY2UgbV9jb2xvclNwYWNlIHsg
Q29sb3JTcGFjZTo6U1JHQiB9OwogfTsKIAogaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBF
eHRlbmRlZENvbG9yJiBhLCBjb25zdCBFeHRlbmRlZENvbG9yJiBiKQogewotICAgIHJldHVybiBh
LmNvbG9yU3BhY2UoKSA9PSBiLmNvbG9yU3BhY2UoKSAmJiBhLmNoYW5uZWxzKCkgPT0gYi5jaGFu
bmVscygpOworICAgIHJldHVybiBhLmNvbG9yU3BhY2UoKSA9PSBiLmNvbG9yU3BhY2UoKSAmJiBh
LmNvbXBvbmVudHMoKSA9PSBiLmNvbXBvbmVudHMoKTsKIH0KIAogaW5saW5lIGJvb2wgb3BlcmF0
b3IhPShjb25zdCBFeHRlbmRlZENvbG9yJiBhLCBjb25zdCBFeHRlbmRlZENvbG9yJiBiKQpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2ltcGxlQ29sb3IuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NpbXBsZUNvbG9yLmNw
cAkocmV2aXNpb24gMjYyMzQ4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
U2ltcGxlQ29sb3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OSwxOCArNjksMjMgQEAgU2ltcGxl
Q29sb3IgbWFrZVVucHJlbXVsdGlwbGllZFNpbXBsZUNvbAogCiBTaW1wbGVDb2xvciBtYWtlU2lt
cGxlQ29sb3JGcm9tRmxvYXRzKGZsb2F0IHIsIGZsb2F0IGcsIGZsb2F0IGIsIGZsb2F0IGEpCiB7
Ci0gICAgcmV0dXJuIG1ha2VTaW1wbGVDb2xvcihjb2xvckZsb2F0VG9TaW1wbGVDb2xvckJ5dGUo
ciksIGNvbG9yRmxvYXRUb1NpbXBsZUNvbG9yQnl0ZShnKSwgY29sb3JGbG9hdFRvU2ltcGxlQ29s
b3JCeXRlKGIpLCBjb2xvckZsb2F0VG9TaW1wbGVDb2xvckJ5dGUoYSkpOworICAgIHJldHVybiBt
YWtlU2ltcGxlQ29sb3IoCisgICAgICAgIHNjYWxlUm91bmRBbmRDbGFtcENvbG9yQ2hhbm5lbChy
KSwKKyAgICAgICAgc2NhbGVSb3VuZEFuZENsYW1wQ29sb3JDaGFubmVsKGcpLAorICAgICAgICBz
Y2FsZVJvdW5kQW5kQ2xhbXBDb2xvckNoYW5uZWwoYiksCisgICAgICAgIHNjYWxlUm91bmRBbmRD
bGFtcENvbG9yQ2hhbm5lbChhKQorICAgICk7CiB9CiAKIFNpbXBsZUNvbG9yIG1ha2VTaW1wbGVD
b2xvckZyb21IU0xBKGZsb2F0IGh1ZSwgZmxvYXQgc2F0dXJhdGlvbiwgZmxvYXQgbGlnaHRuZXNz
LCBmbG9hdCBhbHBoYSkKIHsKLSAgICBjb25zdCBmbG9hdCBzY2FsZUZhY3RvciA9IDI1NS4wOwot
ICAgIGF1dG8gZmxvYXRSZXN1bHQgPSBoc2xUb1NSR0IoeyBodWUsIHNhdHVyYXRpb24sIGxpZ2h0
bmVzcywgYWxwaGEgfSk7CisgICAgYXV0byBbciwgZywgYiwgYV0gPSBoc2xUb1NSR0IoeyBodWUs
IHNhdHVyYXRpb24sIGxpZ2h0bmVzcywgYWxwaGEgfSk7CiAgICAgcmV0dXJuIG1ha2VTaW1wbGVD
b2xvcigKLSAgICAgICAgcm91bmQoZmxvYXRSZXN1bHQuY29tcG9uZW50c1swXSAqIHNjYWxlRmFj
dG9yKSwKLSAgICAgICAgcm91bmQoZmxvYXRSZXN1bHQuY29tcG9uZW50c1sxXSAqIHNjYWxlRmFj
dG9yKSwKLSAgICAgICAgcm91bmQoZmxvYXRSZXN1bHQuY29tcG9uZW50c1syXSAqIHNjYWxlRmFj
dG9yKSwKLSAgICAgICAgcm91bmQoZmxvYXRSZXN1bHQuY29tcG9uZW50c1szXSAqIHNjYWxlRmFj
dG9yKSk7CisgICAgICAgIHJvdW5kKHIgKiAyNTUuMGYpLAorICAgICAgICByb3VuZChnICogMjU1
LjBmKSwKKyAgICAgICAgcm91bmQoYiAqIDI1NS4wZiksCisgICAgICAgIHJvdW5kKGEgKiAyNTUu
MGYpCisgICAgKTsKIH0KIAogU2ltcGxlQ29sb3IgbWFrZVNpbXBsZUNvbG9yRnJvbUNNWUtBKGZs
b2F0IGMsIGZsb2F0IG0sIGZsb2F0IHksIGZsb2F0IGssIGZsb2F0IGEpCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaW1wbGVDb2xvci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NpbXBsZUNvbG9yLmgJKHJldmlzaW9uIDI2
MjM0OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NpbXBsZUNvbG9yLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTMxLDExICszMSwxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IC8vIENvbG9yIHZhbHVlIHdpdGggOC1iaXQgY29tcG9uZW50cyBmb3IgcmVkLCBncmVlbiwgYmx1
ZSwgYW5kIGFscGhhLgogLy8gRm9yIGhpc3RvcmljYWwgcmVhc29ucywgc3RvcmVkIGFzIGEgMzIt
Yml0IGludGVnZXIsIHdpdGggYWxwaGEgaW4gdGhlIGhpZ2ggYml0czogQVJHQi4KLS8vIEZJWE1F
OiBUaGlzIGNsYXNzIHNob3VsZCBiZSBjb25zb2xpZGF0ZWQgd2l0aCBDb2xvckNvbXBvbmVudHMu
CiBjbGFzcyBTaW1wbGVDb2xvciB7CiBwdWJsaWM6CiAgICAgY29uc3RleHByIFNpbXBsZUNvbG9y
KHVpbnQzMl90IHZhbHVlID0gMCkgOiBtX3ZhbHVlIHsgdmFsdWUgfSB7IH0KKyAgICBjb25zdGV4
cHIgU2ltcGxlQ29sb3IodWludDhfdCByLCB1aW50OF90IGcsIHVpbnQ4X3QgYiwgdWludDhfdCBh
KSA6IG1fdmFsdWUgeyBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oYSA8PCAyNCB8IHIgPDwgMTYgfCBn
IDw8IDggfCBiKSB9IHsgfQogCisgICAgY29uc3RleHByIHVpbnQzMl90IHZhbHVlQXNBUkdCKCkg
Y29uc3QgeyByZXR1cm4gbV92YWx1ZTsgfQogICAgIGNvbnN0ZXhwciB1aW50MzJfdCB2YWx1ZSgp
IGNvbnN0IHsgcmV0dXJuIG1fdmFsdWU7IH0KIAogICAgIGNvbnN0ZXhwciB1aW50OF90IHJlZENv
bXBvbmVudCgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWUgPj4gMTY7IH0KQEAgLTUyLDcgKzUzLDIw
IEBAIHB1YmxpYzoKICAgICBTdHJpbmcgc2VyaWFsaXphdGlvbkZvckNTUygpIGNvbnN0OwogICAg
IFN0cmluZyBzZXJpYWxpemF0aW9uRm9yUmVuZGVyVHJlZUFzVGV4dCgpIGNvbnN0OwogCi0gICAg
Y29uc3RleHByIFNpbXBsZUNvbG9yIGNvbG9yV2l0aEFscGhhKHVpbnQ4X3QgYWxwaGEpIGNvbnN0
IHsgcmV0dXJuIHsgKG1fdmFsdWUgJiAweDAwRkZGRkZGKSB8IGFscGhhIDw8IDI0IH07IH0KKyAg
ICBjb25zdGV4cHIgU2ltcGxlQ29sb3IgY29sb3JXaXRoQWxwaGEodWludDhfdCBhbHBoYSkgY29u
c3QKKyAgICB7CisgICAgICAgIHJldHVybiB7IChtX3ZhbHVlICYgMHgwMEZGRkZGRikgfCBhbHBo
YSA8PCAyNCB9OworICAgIH0KKworICAgIGNvbnN0ZXhwciBTaW1wbGVDb2xvciBpbnZlcnRlZENv
bG9yV2l0aEFscGhhKHVpbnQ4X3QgYWxwaGEpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4g
eyBzdGF0aWNfY2FzdDx1aW50OF90PigweEZGIC0gcmVkQ29tcG9uZW50KCkpLCBzdGF0aWNfY2Fz
dDx1aW50OF90PigweEZGIC0gZ3JlZW5Db21wb25lbnQoKSksIHN0YXRpY19jYXN0PHVpbnQ4X3Q+
KDB4RkYgLSBibHVlQ29tcG9uZW50KCkpLCBhbHBoYSB9OworICAgIH0KKworICAgIGNvbnN0ZXhw
ciBDb2xvckNvbXBvbmVudHM8ZmxvYXQ+IGFzU1JHQkZsb2F0Q29tcG9uZW50cygpIGNvbnN0Cisg
ICAgeworICAgICAgICByZXR1cm4geyByZWRDb21wb25lbnQoKSAvIDI1NS4wZiwgZ3JlZW5Db21w
b25lbnQoKSAvIDI1NS4wZiwgYmx1ZUNvbXBvbmVudCgpIC8gMjU1LjBmLCAgYWxwaGFDb21wb25l
bnQoKSAvIDI1NS4wZiB9OworICAgIH0KIAogICAgIHRlbXBsYXRlPHN0ZDo6c2l6ZV90IE4+CiAg
ICAgY29uc3RleHByIHVpbnQ4X3QgZ2V0KCkgY29uc3QKQEAgLTc4LDYgKzkyLDggQEAgYm9vbCBv
cGVyYXRvciE9KFNpbXBsZUNvbG9yLCBTaW1wbGVDb2xvcgogY29uc3RleHByIFNpbXBsZUNvbG9y
IG1ha2VTaW1wbGVDb2xvcihpbnQgciwgaW50IGcsIGludCBiKTsKIGNvbnN0ZXhwciBTaW1wbGVD
b2xvciBtYWtlU2ltcGxlQ29sb3IoaW50IHIsIGludCBnLCBpbnQgYiwgaW50IGEpOwogCitTaW1w
bGVDb2xvciBtYWtlU2ltcGxlQ29sb3IoY29uc3QgQ29sb3JDb21wb25lbnRzPGZsb2F0PiYgc1JH
QkNvbXBvbmVudHMpOworCiBTaW1wbGVDb2xvciBtYWtlUHJlbXVsdGlwbGllZFNpbXBsZUNvbG9y
KGludCByLCBpbnQgZywgaW50IGIsIGludCBhLCBib29sIGNlaWxpbmcgPSB0cnVlKTsKIFNpbXBs
ZUNvbG9yIG1ha2VQcmVtdWx0aXBsaWVkU2ltcGxlQ29sb3IoU2ltcGxlQ29sb3IpOwogU2ltcGxl
Q29sb3IgbWFrZVVucHJlbXVsdGlwbGllZFNpbXBsZUNvbG9yKGludCByLCBpbnQgZywgaW50IGIs
IGludCBhKTsKQEAgLTg3LDcgKzEwMyw2IEBAIFdFQkNPUkVfRVhQT1JUIFNpbXBsZUNvbG9yIG1h
a2VTaW1wbGVDb2wKIFdFQkNPUkVfRVhQT1JUIFNpbXBsZUNvbG9yIG1ha2VTaW1wbGVDb2xvckZy
b21IU0xBKGZsb2F0IGgsIGZsb2F0IHMsIGZsb2F0IGwsIGZsb2F0IGEpOwogU2ltcGxlQ29sb3Ig
bWFrZVNpbXBsZUNvbG9yRnJvbUNNWUtBKGZsb2F0IGMsIGZsb2F0IG0sIGZsb2F0IHksIGZsb2F0
IGssIGZsb2F0IGEpOwogCi0KIGlubGluZSBib29sIG9wZXJhdG9yPT0oU2ltcGxlQ29sb3IgYSwg
U2ltcGxlQ29sb3IgYikKIHsKICAgICByZXR1cm4gYS52YWx1ZSgpID09IGIudmFsdWUoKTsKQEAg
LTEwNSw3ICsxMjAsMTggQEAgY29uc3RleHByIFNpbXBsZUNvbG9yIG1ha2VTaW1wbGVDb2xvcihp
bgogCiBjb25zdGV4cHIgU2ltcGxlQ29sb3IgbWFrZVNpbXBsZUNvbG9yKGludCByLCBpbnQgZywg
aW50IGIsIGludCBhKQogewotICAgIHJldHVybiB7IHN0YXRpY19jYXN0PHVuc2lnbmVkPihzdGQ6
OmNsYW1wKGEsIDAsIDB4RkYpIDw8IDI0IHwgc3RkOjpjbGFtcChyLCAwLCAweEZGKSA8PCAxNiB8
IHN0ZDo6Y2xhbXAoZywgMCwgMHhGRikgPDwgOCB8IHN0ZDo6Y2xhbXAoYiwgMCwgMHhGRikpIH07
CisgICAgcmV0dXJuIHsgc3RhdGljX2Nhc3Q8dWludDhfdD4oc3RkOjpjbGFtcChyLCAwLCAweEZG
KSksIHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHN0ZDo6Y2xhbXAoZywgMCwgMHhGRikpLCBzdGF0aWNf
Y2FzdDx1aW50OF90PihzdGQ6OmNsYW1wKGIsIDAsIDB4RkYpKSwgc3RhdGljX2Nhc3Q8dWludDhf
dD4oc3RkOjpjbGFtcChhLCAwLCAweEZGKSkgfTsKK30KKworaW5saW5lIFNpbXBsZUNvbG9yIG1h
a2VTaW1wbGVDb2xvcihjb25zdCBDb2xvckNvbXBvbmVudHM8ZmxvYXQ+JiBzUkdCQ29tcG9uZW50
cykKK3sKKyAgICBhdXRvIFtyLCBnLCBiLCBhXSA9IHNSR0JDb21wb25lbnRzOworICAgIHJldHVy
biBtYWtlU2ltcGxlQ29sb3IoCisgICAgICAgIHNjYWxlUm91bmRBbmRDbGFtcENvbG9yQ2hhbm5l
bChyKSwKKyAgICAgICAgc2NhbGVSb3VuZEFuZENsYW1wQ29sb3JDaGFubmVsKGcpLAorICAgICAg
ICBzY2FsZVJvdW5kQW5kQ2xhbXBDb2xvckNoYW5uZWwoYiksCisgICAgICAgIHNjYWxlUm91bmRB
bmRDbGFtcENvbG9yQ2hhbm5lbChhKQorICAgICk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yQ0cuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9y
Q0cuY3BwCShyZXZpc2lvbiAyNjIzNDgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9Db2xvckNHLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTMwLDcgKzEzMCw3IEBAIHN0
YXRpYyBDR0NvbG9yUmVmIGxlYWtDR0NvbG9yKGNvbnN0IENvbG8KIENHQ29sb3JSZWYgY2FjaGVk
Q0dDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCiB7CiAgICAgaWYgKCFjb2xvci5pc0V4dGVuZGVk
KCkpIHsKLSAgICAgICAgc3dpdGNoIChjb2xvci5hc1NpbXBsZUNvbG9yKCkudmFsdWUoKSkgewor
ICAgICAgICBzd2l0Y2ggKGNvbG9yLmFzU2ltcGxlKCkudmFsdWUoKSkgewogICAgICAgICBjYXNl
IENvbG9yOjp0cmFuc3BhcmVudC52YWx1ZSgpOiB7CiAgICAgICAgICAgICBzdGF0aWMgQ0dDb2xv
clJlZiB0cmFuc3BhcmVudENHQ29sb3IgPSBsZWFrQ0dDb2xvcihjb2xvcik7CiAgICAgICAgICAg
ICByZXR1cm4gdHJhbnNwYXJlbnRDR0NvbG9yOwpAQCAtMTQ2LDcgKzE0Niw3IEBAIENHQ29sb3JS
ZWYgY2FjaGVkQ0dDb2xvcihjb25zdCBDb2xvciYgY28KICAgICAgICAgfQogICAgIH0KIAotICAg
IEFTU0VSVChjb2xvci5pc0V4dGVuZGVkKCkgfHwgY29sb3IuYXNTaW1wbGVDb2xvcigpLnZhbHVl
KCkpOworICAgIEFTU0VSVChjb2xvci5pc0V4dGVuZGVkKCkgfHwgY29sb3IuYXNTaW1wbGUoKS52
YWx1ZSgpKTsKIAogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxUaW55TFJVQ2FjaGU8Q29sb3Is
IFJldGFpblB0cjxDR0NvbG9yUmVmPiwgMzI+PiBjYWNoZTsKICAgICByZXR1cm4gY2FjaGUuZ2V0
KCkuZ2V0KGNvbG9yKS5nZXQoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRkVMaWdodGluZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUxpZ2h0aW5nLmNwcAkocmV2aXNpb24gMjYyMzQ4
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUxpZ2h0aW5n
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDA1LDcgKzQwNSw3IEBAIGJvb2wgRkVMaWdodGluZzo6
ZHJhd0xpZ2h0aW5nKFVpbnQ4Q2xhbXAKICAgICBkYXRhLmhlaWdodERlY3JlYXNlZEJ5T25lID0g
aGVpZ2h0IC0gMTsKICAgICAKICAgICBhdXRvIGxpZ2h0Q29sb3IgPSAob3BlcmF0aW5nQ29sb3JT
cGFjZSgpID09IENvbG9yU3BhY2U6OkxpbmVhclJHQikgPyByZ2JUb0xpbmVhckNvbXBvbmVudHMo
bV9saWdodGluZ0NvbG9yLnRvU1JHQkFDb21wb25lbnRzTG9zc3koKSkgOiBtX2xpZ2h0aW5nQ29s
b3IudG9TUkdCQUNvbXBvbmVudHNMb3NzeSgpOwotICAgIHBhaW50aW5nRGF0YS5pbml0aWFsTGln
aHRpbmdEYXRhLmNvbG9yVmVjdG9yID0gRmxvYXRQb2ludDNEKGxpZ2h0Q29sb3IuY29tcG9uZW50
c1swXSwgbGlnaHRDb2xvci5jb21wb25lbnRzWzFdLCBsaWdodENvbG9yLmNvbXBvbmVudHNbMl0p
OworICAgIHBhaW50aW5nRGF0YS5pbml0aWFsTGlnaHRpbmdEYXRhLmNvbG9yVmVjdG9yID0gRmxv
YXRQb2ludDNEKGxpZ2h0Q29sb3JbMF0sIGxpZ2h0Q29sb3JbMV0sIGxpZ2h0Q29sb3JbMl0pOwog
ICAgIG1fbGlnaHRTb3VyY2UtPmluaXRQYWludGluZ0RhdGEoKnRoaXMsIHBhaW50aW5nRGF0YSk7
CiAKICAgICAvLyBUb3AgbGVmdC4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRkVUdXJidWxlbmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVHVyYnVsZW5jZS5jcHAJKHJldmlzaW9uIDI2
MjM0OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUdXJi
dWxlbmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzI1LDEwICszMjUsMTAgQEAgQ29sb3JDb21w
b25lbnRzPGZsb2F0PiBGRVR1cmJ1bGVuY2U6Om5vaQogc3RhdGljIGlubGluZSBDb2xvckNvbXBv
bmVudHM8dWludDhfdD4gdG9JbnRCYXNlZENvbG9yQ29tcG9uZW50cyhjb25zdCBDb2xvckNvbXBv
bmVudHM8ZmxvYXQ+JiBmbG9hdENvbXBvbmVudHMpCiB7CiAgICAgcmV0dXJuIHsKLSAgICAgICAg
c3RkOjpjbGFtcDx1aW50OF90PihzdGF0aWNfY2FzdDxpbnQ+KGZsb2F0Q29tcG9uZW50cy5jb21w
b25lbnRzWzBdICogMjU1KSwgMCwgMjU1KSwKLSAgICAgICAgc3RkOjpjbGFtcDx1aW50OF90Pihz
dGF0aWNfY2FzdDxpbnQ+KGZsb2F0Q29tcG9uZW50cy5jb21wb25lbnRzWzFdICogMjU1KSwgMCwg
MjU1KSwKLSAgICAgICAgc3RkOjpjbGFtcDx1aW50OF90PihzdGF0aWNfY2FzdDxpbnQ+KGZsb2F0
Q29tcG9uZW50cy5jb21wb25lbnRzWzJdICogMjU1KSwgMCwgMjU1KSwKLSAgICAgICAgc3RkOjpj
bGFtcDx1aW50OF90PihzdGF0aWNfY2FzdDxpbnQ+KGZsb2F0Q29tcG9uZW50cy5jb21wb25lbnRz
WzNdICogMjU1KSwgMCwgMjU1KSwKKyAgICAgICAgc3RkOjpjbGFtcDx1aW50OF90PihzdGF0aWNf
Y2FzdDxpbnQ+KGZsb2F0Q29tcG9uZW50c1swXSAqIDI1NSksIDAsIDI1NSksCisgICAgICAgIHN0
ZDo6Y2xhbXA8dWludDhfdD4oc3RhdGljX2Nhc3Q8aW50PihmbG9hdENvbXBvbmVudHNbMV0gKiAy
NTUpLCAwLCAyNTUpLAorICAgICAgICBzdGQ6OmNsYW1wPHVpbnQ4X3Q+KHN0YXRpY19jYXN0PGlu
dD4oZmxvYXRDb21wb25lbnRzWzJdICogMjU1KSwgMCwgMjU1KSwKKyAgICAgICAgc3RkOjpjbGFt
cDx1aW50OF90PihzdGF0aWNfY2FzdDxpbnQ+KGZsb2F0Q29tcG9uZW50c1szXSAqIDI1NSksIDAs
IDI1NSksCiAgICAgfTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9uLmNwcAkocmV2aXNp
b24gMjYyMzQ4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
aWx0ZXJPcGVyYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTYsMjYgKzE1NiwyNiBAQCBi
b29sIEJhc2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0ZXJPcGVyYXRpCiB7CiAgICAgc3dpdGNoICht
X3R5cGUpIHsKICAgICBjYXNlIE9QQUNJVFk6Ci0gICAgICAgIGNvbG9yQ29tcG9uZW50cy5jb21w
b25lbnRzWzNdICo9IG1fYW1vdW50OworICAgICAgICBjb2xvckNvbXBvbmVudHNbM10gKj0gbV9h
bW91bnQ7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIGNhc2UgSU5WRVJUOiB7CiAgICAgICAg
IGZsb2F0IG9uZU1pbnVzQW1vdW50ID0gMS5mIC0gbV9hbW91bnQ7Ci0gICAgICAgIGNvbG9yQ29t
cG9uZW50cy5jb21wb25lbnRzWzBdID0gMSAtIChvbmVNaW51c0Ftb3VudCArIGNvbG9yQ29tcG9u
ZW50cy5jb21wb25lbnRzWzBdICogKG1fYW1vdW50IC0gb25lTWludXNBbW91bnQpKTsKLSAgICAg
ICAgY29sb3JDb21wb25lbnRzLmNvbXBvbmVudHNbMV0gPSAxIC0gKG9uZU1pbnVzQW1vdW50ICsg
Y29sb3JDb21wb25lbnRzLmNvbXBvbmVudHNbMV0gKiAobV9hbW91bnQgLSBvbmVNaW51c0Ftb3Vu
dCkpOwotICAgICAgICBjb2xvckNvbXBvbmVudHMuY29tcG9uZW50c1syXSA9IDEgLSAob25lTWlu
dXNBbW91bnQgKyBjb2xvckNvbXBvbmVudHMuY29tcG9uZW50c1syXSAqIChtX2Ftb3VudCAtIG9u
ZU1pbnVzQW1vdW50KSk7CisgICAgICAgIGNvbG9yQ29tcG9uZW50c1swXSA9IDEgLSAob25lTWlu
dXNBbW91bnQgKyBjb2xvckNvbXBvbmVudHNbMF0gKiAobV9hbW91bnQgLSBvbmVNaW51c0Ftb3Vu
dCkpOworICAgICAgICBjb2xvckNvbXBvbmVudHNbMV0gPSAxIC0gKG9uZU1pbnVzQW1vdW50ICsg
Y29sb3JDb21wb25lbnRzWzFdICogKG1fYW1vdW50IC0gb25lTWludXNBbW91bnQpKTsKKyAgICAg
ICAgY29sb3JDb21wb25lbnRzWzJdID0gMSAtIChvbmVNaW51c0Ftb3VudCArIGNvbG9yQ29tcG9u
ZW50c1syXSAqIChtX2Ftb3VudCAtIG9uZU1pbnVzQW1vdW50KSk7CiAgICAgICAgIHJldHVybiB0
cnVlOwogICAgIH0KICAgICBjYXNlIENPTlRSQVNUOiB7CiAgICAgICAgIGZsb2F0IGludGVyY2Vw
dCA9IC0oMC41ZiAqIG1fYW1vdW50KSArIDAuNWY7Ci0gICAgICAgIGNvbG9yQ29tcG9uZW50cy5j
b21wb25lbnRzWzBdID0gY2xhbXBUbzxmbG9hdD4oaW50ZXJjZXB0ICsgbV9hbW91bnQgKiBjb2xv
ckNvbXBvbmVudHMuY29tcG9uZW50c1swXSwgMCwgMSk7Ci0gICAgICAgIGNvbG9yQ29tcG9uZW50
cy5jb21wb25lbnRzWzFdID0gY2xhbXBUbzxmbG9hdD4oaW50ZXJjZXB0ICsgbV9hbW91bnQgKiBj
b2xvckNvbXBvbmVudHMuY29tcG9uZW50c1sxXSwgMCwgMSk7Ci0gICAgICAgIGNvbG9yQ29tcG9u
ZW50cy5jb21wb25lbnRzWzJdID0gY2xhbXBUbzxmbG9hdD4oaW50ZXJjZXB0ICsgbV9hbW91bnQg
KiBjb2xvckNvbXBvbmVudHMuY29tcG9uZW50c1syXSwgMCwgMSk7CisgICAgICAgIGNvbG9yQ29t
cG9uZW50c1swXSA9IGNsYW1wVG88ZmxvYXQ+KGludGVyY2VwdCArIG1fYW1vdW50ICogY29sb3JD
b21wb25lbnRzWzBdLCAwLCAxKTsKKyAgICAgICAgY29sb3JDb21wb25lbnRzWzFdID0gY2xhbXBU
bzxmbG9hdD4oaW50ZXJjZXB0ICsgbV9hbW91bnQgKiBjb2xvckNvbXBvbmVudHNbMV0sIDAsIDEp
OworICAgICAgICBjb2xvckNvbXBvbmVudHNbMl0gPSBjbGFtcFRvPGZsb2F0PihpbnRlcmNlcHQg
KyBtX2Ftb3VudCAqIGNvbG9yQ29tcG9uZW50c1syXSwgMCwgMSk7CiAgICAgICAgIHJldHVybiB0
cnVlOwogICAgIH0KICAgICBjYXNlIEJSSUdIVE5FU1M6Ci0gICAgICAgIGNvbG9yQ29tcG9uZW50
cy5jb21wb25lbnRzWzBdID0gc3RkOjptYXg8ZmxvYXQ+KG1fYW1vdW50ICogY29sb3JDb21wb25l
bnRzLmNvbXBvbmVudHNbMF0sIDApOwotICAgICAgICBjb2xvckNvbXBvbmVudHMuY29tcG9uZW50
c1sxXSA9IHN0ZDo6bWF4PGZsb2F0PihtX2Ftb3VudCAqIGNvbG9yQ29tcG9uZW50cy5jb21wb25l
bnRzWzFdLCAwKTsKLSAgICAgICAgY29sb3JDb21wb25lbnRzLmNvbXBvbmVudHNbMl0gPSBzdGQ6
Om1heDxmbG9hdD4obV9hbW91bnQgKiBjb2xvckNvbXBvbmVudHMuY29tcG9uZW50c1syXSwgMCk7
CisgICAgICAgIGNvbG9yQ29tcG9uZW50c1swXSA9IHN0ZDo6bWF4PGZsb2F0PihtX2Ftb3VudCAq
IGNvbG9yQ29tcG9uZW50c1swXSwgMCk7CisgICAgICAgIGNvbG9yQ29tcG9uZW50c1sxXSA9IHN0
ZDo6bWF4PGZsb2F0PihtX2Ftb3VudCAqIGNvbG9yQ29tcG9uZW50c1sxXSwgMCk7CisgICAgICAg
IGNvbG9yQ29tcG9uZW50c1syXSA9IHN0ZDo6bWF4PGZsb2F0PihtX2Ftb3VudCAqIGNvbG9yQ29t
cG9uZW50c1syXSwgMCk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIGRlZmF1bHQ6CiAgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtMjMxLDcgKzIzMSw3IEBAIGJvb2wgSW52ZXJ0
TGlnaHRuZXNzRmlsdGVyT3BlcmF0aW9uOjp0cmEKICAgICBhdXRvIGhzbENvbXBvbmVudHMgPSBz
UkdCVG9IU0woc1JHQkNvbG9yQ29tcG9uZW50cyk7CiAgICAgCiAgICAgLy8gUm90YXRlIHRoZSBo
dWUgMTgwZGVnLgotICAgIGhzbENvbXBvbmVudHMuY29tcG9uZW50c1swXSA9IGZtb2QoaHNsQ29t
cG9uZW50cy5jb21wb25lbnRzWzBdICsgMC41ZiwgMS4wZik7CisgICAgaHNsQ29tcG9uZW50c1sw
XSA9IGZtb2QoaHNsQ29tcG9uZW50c1swXSArIDAuNWYsIDEuMGYpOwogICAgIAogICAgIC8vIENv
bnZlcnQgYmFjayB0byBSR0IuCiAgICAgc1JHQkNvbG9yQ29tcG9uZW50cyA9IGhzbFRvU1JHQiho
c2xDb21wb25lbnRzKTsKQEAgLTI2MSw3ICsyNjEsNyBAQCBib29sIEludmVydExpZ2h0bmVzc0Zp
bHRlck9wZXJhdGlvbjo6aW52CiAgICAgLy8gQ29udmVydCB0byBIU0wuCiAgICAgYXV0byBoc2xD
b21wb25lbnRzID0gc1JHQlRvSFNMKHJnYkNvbXBvbmVudHMpOwogICAgIC8vIEh1ZSByb3RhdGUg
YnkgMTgwZGVnLgotICAgIGhzbENvbXBvbmVudHMuY29tcG9uZW50c1swXSA9IGZtb2QoaHNsQ29t
cG9uZW50cy5jb21wb25lbnRzWzBdICsgMC41ZiwgMS4wZik7CisgICAgaHNsQ29tcG9uZW50c1sw
XSA9IGZtb2QoaHNsQ29tcG9uZW50c1swXSArIDAuNWYsIDEuMGYpOwogICAgIC8vIEFuZCByZXR1
cm4gUkdCLgogICAgIHNSR0JDb2xvckNvbXBvbmVudHMgPSBoc2xUb1NSR0IoaHNsQ29tcG9uZW50
cyk7CiAgICAgcmV0dXJuIHRydWU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9ucy5jcHAJKHJl
dmlzaW9uIDI2MjM0OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRmlsdGVyT3BlcmF0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExMSwxNSArMTExLDE0
IEBAIGJvb2wgRmlsdGVyT3BlcmF0aW9uczo6dHJhbnNmb3JtQ29sb3IoQ28KICAgICBpZiAoY29s
b3IuaXNTZW1hbnRpYygpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBhdXRvIGNvbXBv
bmVudHMgPSBjb2xvci50b1NSR0JBQ29tcG9uZW50c0xvc3N5KCk7CisgICAgYXV0byBzUkdCQUNv
bXBvbmVudHMgPSBjb2xvci50b1NSR0JBQ29tcG9uZW50c0xvc3N5KCk7CiAKICAgICBmb3IgKGF1
dG8mIG9wZXJhdGlvbiA6IG1fb3BlcmF0aW9ucykgewotICAgICAgICBpZiAoIW9wZXJhdGlvbi0+
dHJhbnNmb3JtQ29sb3IoY29tcG9uZW50cykpCisgICAgICAgIGlmICghb3BlcmF0aW9uLT50cmFu
c2Zvcm1Db2xvcihzUkdCQUNvbXBvbmVudHMpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIH0KIAotICAgIGF1dG8gW3IsIGcsIGIsIGFdID0gY29tcG9uZW50czsKLSAgICBjb2xvciA9
IG1ha2VTaW1wbGVDb2xvckZyb21GbG9hdHMociwgZywgYiwgYSk7CisgICAgY29sb3IgPSBtYWtl
U2ltcGxlQ29sb3Ioc1JHQkFDb21wb25lbnRzKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAt
MTMxLDE1ICsxMzAsMTQgQEAgYm9vbCBGaWx0ZXJPcGVyYXRpb25zOjppbnZlcnNlVHJhbnNmb3Jt
QwogICAgIGlmIChjb2xvci5pc1NlbWFudGljKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAot
ICAgIGF1dG8gY29tcG9uZW50cyA9IGNvbG9yLnRvU1JHQkFDb21wb25lbnRzTG9zc3koKTsKKyAg
ICBhdXRvIHNSR0JBQ29tcG9uZW50cyA9IGNvbG9yLnRvU1JHQkFDb21wb25lbnRzTG9zc3koKTsK
IAogICAgIGZvciAoYXV0byYgb3BlcmF0aW9uIDogbV9vcGVyYXRpb25zKSB7Ci0gICAgICAgIGlm
ICghb3BlcmF0aW9uLT5pbnZlcnNlVHJhbnNmb3JtQ29sb3IoY29tcG9uZW50cykpCisgICAgICAg
IGlmICghb3BlcmF0aW9uLT5pbnZlcnNlVHJhbnNmb3JtQ29sb3Ioc1JHQkFDb21wb25lbnRzKSkK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBhdXRvIFtyLCBnLCBiLCBh
XSA9IGNvbXBvbmVudHM7Ci0gICAgY29sb3IgPSBtYWtlU2ltcGxlQ29sb3JGcm9tRmxvYXRzKHIs
IGcsIGIsIGEpOworICAgIGNvbG9yID0gbWFrZVNpbXBsZUNvbG9yKHNSR0JBQ29tcG9uZW50cyk7
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2MjM1MCkKKysrIFRvb2xzL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDIwLTA1LTMwICBTYW0gV2Vpbmln
ICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBFeHRlbmRlZCBDb2xvcjogQWRkaXRpb25h
bCBjb2xvciBjbGVhbnVwcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjEyNTY3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyLgorCisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0V4dGVuZGVkQ29sb3JUZXN0cy5j
cHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgVXBkYXRlIGZvciBy
ZW5hbWUgZnJvbSBFeHRlbmRlZENvbG9yOjpjaGFubmVscygpIHRvIEV4dGVuZGVkQ29sb3I6OmNv
bXBvbmVudHMoKQorCiAyMDIwLTA1LTMwICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFA
aWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBXZWJEcml2ZXI6IHN0b3AgdXNpbmcgR2RrRXZl
bnQgQVBJIGluIHByZXBhcmF0aW9uIGZvciBHVEs0CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYkNvcmUvRXh0ZW5kZWRDb2xvclRlc3RzLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRXh0ZW5kZWRDb2xvclRlc3RzLmNwcAkocmV2
aXNpb24gMjYyMzQ4KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0V4dGVu
ZGVkQ29sb3JUZXN0cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDcgKzM5LDcgQEAgVEVTVChF
eHRlbmRlZENvbG9yLCBDb25zdHJ1Y3RvcikKICAgICBDb2xvciBjMSgxLjAsIDAuNSwgMC4yNSwg
MS4wLCBDb2xvclNwYWNlOjpEaXNwbGF5UDMpOwogICAgIEVYUEVDVF9UUlVFKGMxLmlzRXh0ZW5k
ZWQoKSk7CiAKLSAgICBhdXRvIFtyLCBnLCBiLCBhbHBoYV0gPSBjMS5hc0V4dGVuZGVkKCkuY2hh
bm5lbHMoKTsKKyAgICBhdXRvIFtyLCBnLCBiLCBhbHBoYV0gPSBjMS5hc0V4dGVuZGVkKCkuY29t
cG9uZW50cygpOwogCiAgICAgRVhQRUNUX0ZMT0FUX0VRKDEuMCwgcik7CiAgICAgRVhQRUNUX0ZM
T0FUX0VRKDAuNSwgZyk7CkBAIC01Niw3ICs1Niw3IEBAIFRFU1QoRXh0ZW5kZWRDb2xvciwgQ29w
eUNvbnN0cnVjdG9yKQogCiAgICAgQ29sb3IgYzIoYzEpOwogCi0gICAgYXV0byBbciwgZywgYiwg
YWxwaGFdID0gYzIuYXNFeHRlbmRlZCgpLmNoYW5uZWxzKCk7CisgICAgYXV0byBbciwgZywgYiwg
YWxwaGFdID0gYzIuYXNFeHRlbmRlZCgpLmNvbXBvbmVudHMoKTsKIAogICAgIEVYUEVDVF9GTE9B
VF9FUSgxLjAsIHIpOwogICAgIEVYUEVDVF9GTE9BVF9FUSgwLjUsIGcpOwpAQCAtNzQsNyArNzQs
NyBAQCBURVNUKEV4dGVuZGVkQ29sb3IsIEFzc2lnbm1lbnQpCiAKICAgICBDb2xvciBjMiA9IGMx
OwogCi0gICAgYXV0byBbciwgZywgYiwgYWxwaGFdID0gYzIuYXNFeHRlbmRlZCgpLmNoYW5uZWxz
KCk7CisgICAgYXV0byBbciwgZywgYiwgYWxwaGFdID0gYzIuYXNFeHRlbmRlZCgpLmNvbXBvbmVu
dHMoKTsKIAogICAgIEVYUEVDVF9GTE9BVF9FUSgxLjAsIHIpOwogICAgIEVYUEVDVF9GTE9BVF9F
USgwLjUsIGcpOwpAQCAtMTU5LDcgKzE1OSw3IEBAIFRFU1QoRXh0ZW5kZWRDb2xvciwgTW92ZUNv
bnN0cnVjdG9yKQogICAgIEVYUEVDVF9GQUxTRShjMS5pc0V4dGVuZGVkKCkpOwogICAgIEVYUEVD
VF9GQUxTRShjMS5pc1ZhbGlkKCkpOwogCi0gICAgYXV0byBbciwgZywgYiwgYWxwaGFdID0gYzIu
YXNFeHRlbmRlZCgpLmNoYW5uZWxzKCk7CisgICAgYXV0byBbciwgZywgYiwgYWxwaGFdID0gYzIu
YXNFeHRlbmRlZCgpLmNvbXBvbmVudHMoKTsKIAogICAgIEVYUEVDVF9GTE9BVF9FUSgxLjAsIHIp
OwogICAgIEVYUEVDVF9GTE9BVF9FUSgwLjUsIGcpOwpAQCAtMTgxLDcgKzE4MSw3IEBAIFRFU1Qo
RXh0ZW5kZWRDb2xvciwgTW92ZUFzc2lnbm1lbnQpCiAgICAgRVhQRUNUX0ZBTFNFKGMxLmlzRXh0
ZW5kZWQoKSk7CiAgICAgRVhQRUNUX0ZBTFNFKGMxLmlzVmFsaWQoKSk7CiAKLSAgICBhdXRvIFty
LCBnLCBiLCBhbHBoYV0gPSBjMi5hc0V4dGVuZGVkKCkuY2hhbm5lbHMoKTsKKyAgICBhdXRvIFty
LCBnLCBiLCBhbHBoYV0gPSBjMi5hc0V4dGVuZGVkKCkuY29tcG9uZW50cygpOwogCiAgICAgRVhQ
RUNUX0ZMT0FUX0VRKDEuMCwgcik7CiAgICAgRVhQRUNUX0ZMT0FUX0VRKDAuNSwgZyk7CkBAIC0x
OTksNyArMTk5LDcgQEAgVEVTVChFeHRlbmRlZENvbG9yLCBCYXNpY1JlZmVyZW5jZUNvdW50aQog
ICAgIENvbG9yKiBjMiA9IG5ldyBDb2xvcigqYzEpOwogICAgIENvbG9yKiBjMyA9IG5ldyBDb2xv
cigqYzIpOwogCi0gICAgYXV0byBbciwgZywgYiwgYWxwaGFdID0gYzItPmFzRXh0ZW5kZWQoKS5j
aGFubmVscygpOworICAgIGF1dG8gW3IsIGcsIGIsIGFscGhhXSA9IGMyLT5hc0V4dGVuZGVkKCku
Y29tcG9uZW50cygpOwogCiAgICAgRVhQRUNUX0ZMT0FUX0VRKDEuMCwgcik7CiAgICAgRVhQRUNU
X0ZMT0FUX0VRKDAuNSwgZyk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>