<?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>96565</bug_id>
          
          <creation_ts>2012-09-12 15:03:05 -0700</creation_ts>
          <short_desc>REGRESSION(r128353): Re-land change that broke tests on Chromium. Tests are now disabled, will rebaseline after this rolls. (Requested by dmazzoni on #webkit).</short_desc>
          <delta_ts>2023-03-06 15:47:16 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>96547</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Review Bot">webkit.review.bot</reporter>
          <assigned_to name="WebKit Review Bot">webkit.review.bot</assigned_to>
          <cc>liamgutierrez73</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>718771</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-12 15:03:05 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/128353 broke the build:
Re-land change that broke tests on Chromium. Tests are now disabled, will rebaseline after this rolls. (Requested by dmazzoni on #webkit).

This is an automatic bug report generated by the sheriff-bot. If this bug
report was created because of a flaky test, please file a bug for the flaky
test (if we don&apos;t already have one on file) and dup this bug against that bug
so that we can track how often these flaky tests case pain.

&quot;Only you can prevent forest fires.&quot; -- Smokey the Bear</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>718775</commentid>
    <comment_count>1</comment_count>
      <attachid>163709</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-12 15:03:42 -0700</bug_when>
    <thetext>Created attachment 163709
ROLLOUT of r128353

Any committer can land this patch automatically by marking it commit-queue+.  The commit-queue will build and test the patch before landing to ensure that the rollout will be successful.  This process takes approximately 15 minutes.

If you would like to land the rollout faster, you can use the following command:

  webkit-patch land-attachment ATTACHMENT_ID

where ATTACHMENT_ID is the ID of this attachment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>718791</commentid>
    <comment_count>2</comment_count>
      <attachid>163709</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-12 15:19:28 -0700</bug_when>
    <thetext>Comment on attachment 163709
ROLLOUT of r128353

Clearing flags on attachment: 163709

Committed r128368: &lt;http://trac.webkit.org/changeset/128368&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>718792</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-12 15:19:31 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>163709</attachid>
            <date>2012-09-12 15:03:42 -0700</date>
            <delta_ts>2012-09-12 15:19:28 -0700</delta_ts>
            <desc>ROLLOUT of r128353</desc>
            <filename>bug-96565-20120912221005.patch</filename>
            <type>text/plain</type>
            <size>103675</size>
            <attacher name="WebKit Review Bot">webkit.review.bot</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI4MzY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjE0MWIxMTQzMGExODdk
YjMzMTY3Yzg1MWU4NjgxMGE5NzgzNTAzYS4uMDIxMWYyY2IxNTc2YWZmM2M3NGJiM2VjMDdhZTY3
ZTU3YjQyZTgzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwMyBAQAorMjAxMi0wOS0xMiAgU2hl
cmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CisKKyAgICAgICAgVW5yZXZp
ZXdlZCwgcm9sbGluZyBvdXQgcjEyODM1My4KKyAgICAgICAgaHR0cDovL3RyYWMud2Via2l0Lm9y
Zy9jaGFuZ2VzZXQvMTI4MzUzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD05NjU2NQorCisgICAgICAgIFJlLWxhbmQgY2hhbmdlIHRoYXQgYnJva2UgdGVz
dHMgb24gQ2hyb21pdW0uIFRlc3RzIGFyZSBub3cKKyAgICAgICAgZGlzYWJsZWQsIHdpbGwgcmVi
YXNlbGluZSBhZnRlciB0aGlzIHJvbGxzLiAoUmVxdWVzdGVkIGJ5CisgICAgICAgIGRtYXp6b25p
IG9uICN3ZWJraXQpLgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9k
ZU9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6
ZGV0ZXJtaW5lQWNjZXNzaWJpbGl0eVJvbGUpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJp
bGl0eU5vZGVPYmplY3Q6OmNhbkhhdmVDaGlsZHJlbik6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjphY2Nlc3NpYmlsaXR5SXNJ
Z25vcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojppc1dl
YkFyZWEpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmlzSW1h
Z2VCdXR0b24pOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6Omlz
QW5jaG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojppc05h
dGl2ZVRleHRDb250cm9sKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlOb2RlT2Jq
ZWN0Ojppc1NlYXJjaEZpZWxkKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlOb2Rl
T2JqZWN0Ojppc05hdGl2ZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlO
b2RlT2JqZWN0Ojppc0ltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlOb2Rl
T2JqZWN0Ojppc1Bhc3N3b3JkRmllbGQpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eU5vZGVPYmplY3Q6OmlzSW5wdXRJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5Tm9kZU9iamVjdDo6aXNQcm9ncmVzc0luZGljYXRvcik6CisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6aXNTbGlkZXIpOgorICAgICAgICAoV2ViQ29yZTo6QWNj
ZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmlzTWVudVJlbGF0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6
QWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmlzTWVudSk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5Tm9kZU9iamVjdDo6aXNNZW51QmFyKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vz
c2liaWxpdHlOb2RlT2JqZWN0Ojppc01lbnVCdXR0b24pOgorICAgICAgICAoV2ViQ29yZTo6QWNj
ZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmlzTWVudUl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6QWNj
ZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmlzTmF0aXZlQ2hlY2tib3hPclJhZGlvKToKKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojppc0VuYWJsZWQpOgorICAgICAgICAo
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmlzSW5kZXRlcm1pbmF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6aXNQcmVzc2VkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojppc0NoZWNrZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmlzSG92ZXJlZCk6CisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6aXNNdWx0aVNlbGVjdGFibGUpOgor
ICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmlzUmVhZE9ubHkpOgor
ICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmlzUmVxdWlyZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmhlYWRpbmdMZXZlbCk6
CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6dmFsdWVEZXNjcmlw
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6aXNBUklB
UmFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OnZhbHVl
Rm9yUmFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6Om1h
eFZhbHVlRm9yUmFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU5vZGVPYmpl
Y3Q6Om1pblZhbHVlRm9yUmFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU5v
ZGVPYmplY3Q6OnN0ZXBWYWx1ZUZvclJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlOb2RlT2JqZWN0Ojppc0hlYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJp
bGl0eU5vZGVPYmplY3Q6OmlzTGluayk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
Tm9kZU9iamVjdDo6aXNDb250cm9sKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlO
b2RlT2JqZWN0Ojppc0ZpZWxkc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlO
b2RlT2JqZWN0Ojppc0dyb3VwKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlOb2Rl
T2JqZWN0OjpzZWxlY3RlZFJhZGlvQnV0dG9uKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlOb2RlT2JqZWN0OjpzZWxlY3RlZFRhYkl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6QWNj
ZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmNoZWNrYm94T3JSYWRpb1ZhbHVlKToKKyAgICAgICAgKFdl
YkNvcmU6OkFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjphbmNob3JFbGVtZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjphY3Rpb25FbGVtZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojptb3VzZUJ1dHRvbkxpc3RlbmVy
KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojppc0Rlc2NlbmRh
bnRPZkJhcnJlblBhcmVudCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5Tm9kZU9i
amVjdDo6YWx0ZXJTbGlkZXJWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
Tm9kZU9iamVjdDo6aW5jcmVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlO
b2RlT2JqZWN0OjpkZWNyZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU5v
ZGVPYmplY3Q6OmNoYW5nZVZhbHVlQnlTdGVwKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlOb2RlT2JqZWN0OjpjaGFuZ2VWYWx1ZUJ5UGVyY2VudCk6CisgICAgICAgIChXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6aXNHZW5lcmljRm9jdXNhYmxlRWxlbWVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6bGFiZWxGb3JFbGVtZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjphcmlhQWNjZXNz
aWJpbGl0eURlc2NyaXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OnNpYmxpbmdXaXRoQXJpYVJv
bGUpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6Om1lbnVFbGVt
ZW50Rm9yTWVudUJ1dHRvbik6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5Tm9kZU9i
amVjdDo6bWVudUZvck1lbnVCdXR0b24pOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eU5vZGVPYmplY3Q6Om1lbnVJdGVtRWxlbWVudEZvck1lbnUpOgorICAgICAgICAoV2ViQ29yZTo6
QWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6Om1lbnVCdXR0b25Gb3JNZW51KToKKyAgICAgICAgKFdl
YkNvcmU6OkFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjphY2Nlc3NpYmlsaXR5RGVzY3JpcHRpb24p
OgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmhlbHBUZXh0KToK
KyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjpoaWVyYXJjaGljYWxM
ZXZlbCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6dGV4dFVu
ZGVyRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6
dGl0bGUpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OnRleHQp
OgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OnN0cmluZ1ZhbHVl
KToKKyAgICAgICAgKFdlYkNvcmU6OmFjY2Vzc2libGVOYW1lRm9yTm9kZSk6CisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6YWNjZXNzaWJpbGl0eURlc2NyaXB0aW9u
Rm9yRWxlbWVudHMpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6
OmVsZW1lbnRzRnJvbUF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
Tm9kZU9iamVjdDo6YXJpYUxhYmVsZWRCeUVsZW1lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlOb2RlT2JqZWN0OjphcmlhTGFiZWxlZEJ5QXR0cmlidXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjpjYW5TZXRGb2N1c0F0dHJpYnV0ZSk6
CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5oOgorICAg
ICAgICAoQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNz
aWJpbGl0eU5vZGVPYmplY3Q6Om5vZGUpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
UmVuZGVyT2JqZWN0OjpwYXJlbnRPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJp
bGl0eVJlbmRlck9iamVjdDo6aXNSZWFkT25seSk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5UmVuZGVyT2JqZWN0OjpoZWxwVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5UmVuZGVyT2JqZWN0OjphY2Nlc3NpYmlsaXR5RGVzY3JpcHRpb24pOgorICAgICAgICAo
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6dGV4dCk6CisgICAgICAgIChXZWJD
b3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojpjb250ZW50Q2hhbmdlZCk6CisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6
OmNhbkhhdmVDaGlsZHJlbik6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
UmVuZGVyT2JqZWN0Lmg6CisgICAgICAgIChBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0KToKKwog
MjAxMi0wOS0xMiAgTWljaGFlbCBTYWJvZmYgIDxtc2Fib2ZmQGFwcGxlLmNvbT4KIAogICAgICAg
ICBFbGVtZW50OjpjbGFzc0F0dHJpYnV0ZUNoYW5nZWQgc2hvdWxkIHVzZSBjaGFyYWN0ZXJzOC8x
NiB0byBmaW5kIGZpcnN0IG5vbi13aGl0ZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuY3BwCmluZGV4IGU1ODQ1
NmMxNDhmMDUxMGQxZDU5MDk1NGNkZjQ4MzFiNTgxOWU5YzIuLjViYTY0YzBiNjI0YWFhODRmMWIw
ZWUwOTI3ZGU0NzhkNGFlYzM3ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuY3BwCkBAIC0yNTksMTIgKzI1OSwy
NCBAQCBBY2Nlc3NpYmlsaXR5Um9sZSBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6ZGV0ZXJtaW5l
QWNjZXNzaWJpbGl0eVJvbGUoKQogICAgICAgICAgICAgcmV0dXJuIFJhZGlvQnV0dG9uUm9sZTsK
ICAgICAgICAgaWYgKGlucHV0LT5pc1RleHRCdXR0b24oKSkKICAgICAgICAgICAgIHJldHVybiBi
dXR0b25Sb2xlVHlwZSgpOworICAgICAgICBpZiAoaW5wdXQtPmlzUmFuZ2VDb250cm9sKCkpCisg
ICAgICAgICAgICByZXR1cm4gU2xpZGVyUm9sZTsKICAgICAgICAgcmV0dXJuIFRleHRGaWVsZFJv
bGU7CiAgICAgfQogICAgIGlmIChub2RlKCktPmhhc1RhZ05hbWUoc2VsZWN0VGFnKSkgewogICAg
ICAgICBIVE1MU2VsZWN0RWxlbWVudCogc2VsZWN0RWxlbWVudCA9IHRvSFRNTFNlbGVjdEVsZW1l
bnQobm9kZSgpKTsKLSAgICAgICAgcmV0dXJuIHNlbGVjdEVsZW1lbnQtPm11bHRpcGxlKCkgPyBM
aXN0Um9sZSA6IFBvcFVwQnV0dG9uUm9sZTsKKyAgICAgICAgcmV0dXJuIHNlbGVjdEVsZW1lbnQt
Pm11bHRpcGxlKCkgPyBMaXN0Qm94Um9sZSA6IFBvcFVwQnV0dG9uUm9sZTsKICAgICB9CisgICAg
aWYgKG5vZGUoKS0+aGFzVGFnTmFtZSh0ZXh0YXJlYVRhZykpCisgICAgICAgIHJldHVybiBUZXh0
QXJlYVJvbGU7CisgICAgaWYgKGhlYWRpbmdMZXZlbCgpKQorICAgICAgICByZXR1cm4gSGVhZGlu
Z1JvbGU7CisgICAgaWYgKG5vZGUoKS0+aGFzVGFnTmFtZShkaXZUYWcpKQorICAgICAgICByZXR1
cm4gRGl2Um9sZTsKKyAgICBpZiAobm9kZSgpLT5oYXNUYWdOYW1lKHBUYWcpKQorICAgICAgICBy
ZXR1cm4gUGFyYWdyYXBoUm9sZTsKKyAgICBpZiAobm9kZSgpLT5oYXNUYWdOYW1lKGxhYmVsVGFn
KSkKKyAgICAgICAgcmV0dXJuIExhYmVsUm9sZTsKICAgICBpZiAobm9kZSgpLT5pc0ZvY3VzYWJs
ZSgpKQogICAgICAgICByZXR1cm4gR3JvdXBSb2xlOwogICAgIApAQCAtMzAxLDggKzMxMywzOCBA
QCB2b2lkIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjphZGRDaGlsZHJlbigpCiAgICAgfQogfQog
Citib29sIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjpjYW5IYXZlQ2hpbGRyZW4oKSBjb25zdAor
eworICAgIC8vIElmIHRoaXMgaXMgYW4gQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdCwgdGhlbiBp
dCdzIG9rYXkgaWYgdGhpcyBvYmplY3QKKyAgICAvLyBkb2Vzbid0IGhhdmUgYSBub2RlIC0gdGhl
cmUgYXJlIHNvbWUgcmVuZGVyZXJzIHRoYXQgZG9uJ3QgaGF2ZSBhc3NvY2lhdGVkCisgICAgLy8g
bm9kZXMsIGxpa2Ugc2Nyb2xsIGFyZWFzIGFuZCBjc3MtZ2VuZXJhdGVkIHRleHQuCisgICAgaWYg
KCFub2RlKCkgJiYgIWlzQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdCgpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICAvLyBFbGVtZW50cyB0aGF0IHNob3VsZCBub3QgaGF2ZSBjaGlsZHJl
bgorICAgIHN3aXRjaCAocm9sZVZhbHVlKCkpIHsKKyAgICBjYXNlIEltYWdlUm9sZToKKyAgICBj
YXNlIEJ1dHRvblJvbGU6CisgICAgY2FzZSBQb3BVcEJ1dHRvblJvbGU6CisgICAgY2FzZSBDaGVj
a0JveFJvbGU6CisgICAgY2FzZSBSYWRpb0J1dHRvblJvbGU6CisgICAgY2FzZSBUYWJSb2xlOgor
ICAgIGNhc2UgVG9nZ2xlQnV0dG9uUm9sZToKKyAgICBjYXNlIFN0YXRpY1RleHRSb2xlOgorICAg
IGNhc2UgTGlzdEJveE9wdGlvblJvbGU6CisgICAgY2FzZSBTY3JvbGxCYXJSb2xlOgorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
fQorfQorCiBib29sIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjphY2Nlc3NpYmlsaXR5SXNJZ25v
cmVkKCkgY29uc3QKIHsKKyAgICAvLyBJZiB0aGlzIGVsZW1lbnQgaXMgd2l0aGluIGEgcGFyZW50
IHRoYXQgY2Fubm90IGhhdmUgY2hpbGRyZW4sIGl0IHNob3VsZCBub3QgYmUgZXhwb3NlZC4KKyAg
ICBpZiAoaXNEZXNjZW5kYW50T2ZCYXJyZW5QYXJlbnQoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7
CisKICAgICByZXR1cm4gbV9yb2xlID09IFVua25vd25Sb2xlOwogfQogCkBAIC0zMjMsOSArMzY1
LDEwMjYgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6Y2FudmFzSGFzRmFsbGJhY2tD
b250ZW50KCkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK2Jvb2wgQWNjZXNzaWJpbGl0
eU5vZGVPYmplY3Q6OmlzV2ViQXJlYSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHJvbGVWYWx1ZSgp
ID09IFdlYkFyZWFSb2xlOworfQorCitib29sIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojppc0lt
YWdlQnV0dG9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gaXNOYXRpdmVJbWFnZSgpICYmIHJvbGVW
YWx1ZSgpID09IEJ1dHRvblJvbGU7Cit9CisKK2Jvb2wgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6
OmlzQW5jaG9yKCkgY29uc3QKK3sKKyAgICByZXR1cm4gIWlzTmF0aXZlSW1hZ2UoKSAmJiBpc0xp
bmsoKTsKK30KKworYm9vbCBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6aXNOYXRpdmVUZXh0Q29u
dHJvbCgpIGNvbnN0Cit7CisgICAgTm9kZSogbm9kZSA9IHRoaXMtPm5vZGUoKTsKKyAgICBpZiAo
IW5vZGUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChub2RlLT5oYXNUYWdOYW1l
KHRleHRhcmVhVGFnKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBpZiAobm9kZS0+aGFz
VGFnTmFtZShpbnB1dFRhZykpIHsKKyAgICAgICAgSFRNTElucHV0RWxlbWVudCogaW5wdXQgPSBz
dGF0aWNfY2FzdDxIVE1MSW5wdXRFbGVtZW50Kj4obm9kZSk7CisgICAgICAgIHJldHVybiBpbnB1
dC0+aXNUZXh0KCkgfHwgaW5wdXQtPmlzTnVtYmVyRmllbGQoKTsKKyAgICB9CisKKyAgICByZXR1
cm4gZmFsc2U7Cit9CisKK2Jvb2wgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmlzU2VhcmNoRmll
bGQoKSBjb25zdAoreworICAgIE5vZGUqIG5vZGUgPSB0aGlzLT5ub2RlKCk7CisgICAgaWYgKCFu
b2RlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBIVE1MSW5wdXRFbGVtZW50KiBpbnB1
dEVsZW1lbnQgPSBub2RlLT50b0lucHV0RWxlbWVudCgpOworICAgIGlmICghaW5wdXRFbGVtZW50
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoaW5wdXRFbGVtZW50LT5pc1NlYXJj
aEZpZWxkKCkpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgLy8gU29tZSB3ZWJzaXRlcyBk
b24ndCBsYWJlbCB0aGVpciBzZWFyY2ggZmllbGRzIGFzIHN1Y2guIEhvd2V2ZXIsIHRoZXkgd2ls
bAorICAgIC8vIHVzZSB0aGUgd29yZCAic2VhcmNoIiBpbiBlaXRoZXIgdGhlIGZvcm0gb3IgaW5w
dXQgdHlwZS4gVGhpcyB3b24ndCBjYXRjaCBldmVyeSBjYXNlLAorICAgIC8vIGJ1dCBpdCB3aWxs
IGNhdGNoIGdvb2dsZS5jb20gZm9yIGV4YW1wbGUuCisKKyAgICAvLyBDaGVjayB0aGUgbm9kZSBu
YW1lIG9mIHRoZSBpbnB1dCB0eXBlLCBzb21ldGltZXMgaXQncyAic2VhcmNoIi4KKyAgICBjb25z
dCBBdG9taWNTdHJpbmcmIG5hbWVBdHRyaWJ1dGUgPSBnZXRBdHRyaWJ1dGUobmFtZUF0dHIpOwor
ICAgIGlmIChuYW1lQXR0cmlidXRlLmNvbnRhaW5zKCJzZWFyY2giLCBmYWxzZSkpCisgICAgICAg
IHJldHVybiB0cnVlOworCisgICAgLy8gQ2hlY2sgdGhlIGZvcm0gYWN0aW9uIGFuZCB0aGUgbmFt
ZSwgd2hpY2ggd2lsbCBzb21ldGltZXMgYmUgInNlYXJjaCIuCisgICAgSFRNTEZvcm1FbGVtZW50
KiBmb3JtID0gaW5wdXRFbGVtZW50LT5mb3JtKCk7CisgICAgaWYgKGZvcm0gJiYgKGZvcm0tPm5h
bWUoKS5jb250YWlucygic2VhcmNoIiwgZmFsc2UpIHx8IGZvcm0tPmFjdGlvbigpLmNvbnRhaW5z
KCJzZWFyY2giLCBmYWxzZSkpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIHJldHVybiBm
YWxzZTsKK30KKworYm9vbCBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6aXNOYXRpdmVJbWFnZSgp
IGNvbnN0Cit7CisgICAgTm9kZSogbm9kZSA9IHRoaXMtPm5vZGUoKTsKKyAgICBpZiAoIW5vZGUp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChub2RlLT5oYXNUYWdOYW1lKGltZ1Rh
ZykpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgaWYgKG5vZGUtPmhhc1RhZ05hbWUoYXBw
bGV0VGFnKSB8fCBub2RlLT5oYXNUYWdOYW1lKGVtYmVkVGFnKSB8fCBub2RlLT5oYXNUYWdOYW1l
KG9iamVjdFRhZykpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgaWYgKG5vZGUtPmhhc1Rh
Z05hbWUoaW5wdXRUYWcpKSB7CisgICAgICAgIEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0ID0gc3Rh
dGljX2Nhc3Q8SFRNTElucHV0RWxlbWVudCo+KG5vZGUpOworICAgICAgICByZXR1cm4gaW5wdXQt
PmlzSW1hZ2VCdXR0b24oKTsKKyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wg
QWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmlzSW1hZ2UoKSBjb25zdAoreworICAgIHJldHVybiBy
b2xlVmFsdWUoKSA9PSBJbWFnZVJvbGU7Cit9CisKK2Jvb2wgQWNjZXNzaWJpbGl0eU5vZGVPYmpl
Y3Q6OmlzUGFzc3dvcmRGaWVsZCgpIGNvbnN0Cit7CisgICAgTm9kZSogbm9kZSA9IHRoaXMtPm5v
ZGUoKTsKKyAgICBpZiAoIW5vZGUgfHwgIW5vZGUtPmlzSFRNTEVsZW1lbnQoKSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgaWYgKGFyaWFSb2xlQXR0cmlidXRlKCkgIT0gVW5rbm93blJv
bGUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0
RWxlbWVudCA9IG5vZGUtPnRvSW5wdXRFbGVtZW50KCk7CisgICAgaWYgKCFpbnB1dEVsZW1lbnQp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiBpbnB1dEVsZW1lbnQtPmlzUGFz
c3dvcmRGaWVsZCgpOworfQorCitib29sIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojppc0lucHV0
SW1hZ2UoKSBjb25zdAoreworICAgIE5vZGUqIG5vZGUgPSB0aGlzLT5ub2RlKCk7CisgICAgaWYg
KCFub2RlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgCisgICAgaWYgKHJvbGVWYWx1ZSgpID09
IEJ1dHRvblJvbGUgJiYgbm9kZS0+aGFzVGFnTmFtZShpbnB1dFRhZykpIHsKKyAgICAgICAgSFRN
TElucHV0RWxlbWVudCogaW5wdXQgPSBzdGF0aWNfY2FzdDxIVE1MSW5wdXRFbGVtZW50Kj4obm9k
ZSk7CisgICAgICAgIHJldHVybiBpbnB1dC0+aXNJbWFnZUJ1dHRvbigpOworICAgIH0KKworICAg
IHJldHVybiBmYWxzZTsKK30KKworYm9vbCBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6aXNQcm9n
cmVzc0luZGljYXRvcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIHJvbGVWYWx1ZSgpID09IFByb2dy
ZXNzSW5kaWNhdG9yUm9sZTsKK30KKworYm9vbCBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6aXNT
bGlkZXIoKSBjb25zdAoreworICAgIHJldHVybiByb2xlVmFsdWUoKSA9PSBTbGlkZXJSb2xlOwor
fQorCitib29sIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojppc01lbnVSZWxhdGVkKCkgY29uc3QK
K3sKKyAgICBzd2l0Y2ggKHJvbGVWYWx1ZSgpKSB7CisgICAgY2FzZSBNZW51Um9sZToKKyAgICBj
YXNlIE1lbnVCYXJSb2xlOgorICAgIGNhc2UgTWVudUJ1dHRvblJvbGU6CisgICAgY2FzZSBNZW51
SXRlbVJvbGU6CisgICAgICAgIHJldHVybiB0cnVlOworICAgIGRlZmF1bHQ6CisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9Cit9CisKK2Jvb2wgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6Omlz
TWVudSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHJvbGVWYWx1ZSgpID09IE1lbnVSb2xlOworfQor
Citib29sIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojppc01lbnVCYXIoKSBjb25zdAoreworICAg
IHJldHVybiByb2xlVmFsdWUoKSA9PSBNZW51QmFyUm9sZTsKK30KKworYm9vbCBBY2Nlc3NpYmls
aXR5Tm9kZU9iamVjdDo6aXNNZW51QnV0dG9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gcm9sZVZh
bHVlKCkgPT0gTWVudUJ1dHRvblJvbGU7Cit9CisKK2Jvb2wgQWNjZXNzaWJpbGl0eU5vZGVPYmpl
Y3Q6OmlzTWVudUl0ZW0oKSBjb25zdAoreworICAgIHJldHVybiByb2xlVmFsdWUoKSA9PSBNZW51
SXRlbVJvbGU7Cit9CisKK2Jvb2wgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmlzTmF0aXZlQ2hl
Y2tib3hPclJhZGlvKCkgY29uc3QKK3sKKyAgICBOb2RlKiBub2RlID0gdGhpcy0+bm9kZSgpOwor
ICAgIGlmICghbm9kZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgSFRNTElucHV0RWxl
bWVudCogaW5wdXQgPSBub2RlLT50b0lucHV0RWxlbWVudCgpOworICAgIGlmIChpbnB1dCkKKyAg
ICAgICAgcmV0dXJuIGlucHV0LT5pc0NoZWNrYm94KCkgfHwgaW5wdXQtPmlzUmFkaW9CdXR0b24o
KTsKKworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVj
dDo6aXNFbmFibGVkKCkgY29uc3QKK3sKKyAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoZ2V0QXR0
cmlidXRlKGFyaWFfZGlzYWJsZWRBdHRyKSwgInRydWUiKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgTm9kZSogbm9kZSA9IHRoaXMtPm5vZGUoKTsKKyAgICBpZiAoIW5vZGUgfHwgIW5v
ZGUtPmlzRWxlbWVudE5vZGUoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICByZXR1cm4g
dG9FbGVtZW50KG5vZGUpLT5pc0VuYWJsZWRGb3JtQ29udHJvbCgpOworfQorCitib29sIEFjY2Vz
c2liaWxpdHlOb2RlT2JqZWN0Ojppc0luZGV0ZXJtaW5hdGUoKSBjb25zdAoreworICAgIE5vZGUq
IG5vZGUgPSB0aGlzLT5ub2RlKCk7CisgICAgaWYgKCFub2RlKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICBIVE1MSW5wdXRFbGVtZW50KiBpbnB1dEVsZW1lbnQgPSBub2RlLT50b0lucHV0
RWxlbWVudCgpOworICAgIGlmICghaW5wdXRFbGVtZW50KQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICByZXR1cm4gaW5wdXRFbGVtZW50LT5pc0luZGV0ZXJtaW5hdGUoKTsKK30KKworYm9v
bCBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6aXNQcmVzc2VkKCkgY29uc3QKK3sKKyAgICBpZiAo
cm9sZVZhbHVlKCkgIT0gQnV0dG9uUm9sZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
Tm9kZSogbm9kZSA9IHRoaXMtPm5vZGUoKTsKKyAgICBpZiAoIW5vZGUpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIC8vIElmIHRoaXMgaXMgYW4gQVJJQSBidXR0b24sIGNoZWNrIHRoZSBh
cmlhLXByZXNzZWQgYXR0cmlidXRlIHJhdGhlciB0aGFuIG5vZGUoKS0+YWN0aXZlKCkKKyAgICBp
ZiAoYXJpYVJvbGVBdHRyaWJ1dGUoKSA9PSBCdXR0b25Sb2xlKSB7CisgICAgICAgIGlmIChlcXVh
bElnbm9yaW5nQ2FzZShnZXRBdHRyaWJ1dGUoYXJpYV9wcmVzc2VkQXR0ciksICJ0cnVlIikpCisg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKwor
ICAgIHJldHVybiBub2RlLT5hY3RpdmUoKTsKK30KKworYm9vbCBBY2Nlc3NpYmlsaXR5Tm9kZU9i
amVjdDo6aXNDaGVja2VkKCkgY29uc3QKK3sKKyAgICBOb2RlKiBub2RlID0gdGhpcy0+bm9kZSgp
OworICAgIGlmICghbm9kZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gRmlyc3Qg
dGVzdCBmb3IgbmF0aXZlIGNoZWNrZWRuZXNzIHNlbWFudGljcworICAgIEhUTUxJbnB1dEVsZW1l
bnQqIGlucHV0RWxlbWVudCA9IG5vZGUtPnRvSW5wdXRFbGVtZW50KCk7CisgICAgaWYgKGlucHV0
RWxlbWVudCkKKyAgICAgICAgcmV0dXJuIGlucHV0RWxlbWVudC0+c2hvdWxkQXBwZWFyQ2hlY2tl
ZCgpOworCisgICAgLy8gRWxzZSwgaWYgdGhpcyBpcyBhbiBBUklBIGNoZWNrYm94IG9yIHJhZGlv
LCByZXNwZWN0IHRoZSBhcmlhLWNoZWNrZWQgYXR0cmlidXRlCisgICAgQWNjZXNzaWJpbGl0eVJv
bGUgYXJpYVJvbGUgPSBhcmlhUm9sZUF0dHJpYnV0ZSgpOworICAgIGlmIChhcmlhUm9sZSA9PSBS
YWRpb0J1dHRvblJvbGUgfHwgYXJpYVJvbGUgPT0gQ2hlY2tCb3hSb2xlKSB7CisgICAgICAgIGlm
IChlcXVhbElnbm9yaW5nQ2FzZShnZXRBdHRyaWJ1dGUoYXJpYV9jaGVja2VkQXR0ciksICJ0cnVl
IikpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IH0KKworICAgIC8vIE90aGVyd2lzZSBpdCdzIG5vdCBjaGVja2VkCisgICAgcmV0dXJuIGZhbHNl
OworfQorCitib29sIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojppc0hvdmVyZWQoKSBjb25zdAor
eworICAgIE5vZGUqIG5vZGUgPSB0aGlzLT5ub2RlKCk7CisgICAgaWYgKCFub2RlKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gbm9kZS0+aG92ZXJlZCgpOworfQorCitib29s
IEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojppc011bHRpU2VsZWN0YWJsZSgpIGNvbnN0Cit7Cisg
ICAgY29uc3QgQXRvbWljU3RyaW5nJiBhcmlhTXVsdGlTZWxlY3RhYmxlID0gZ2V0QXR0cmlidXRl
KGFyaWFfbXVsdGlzZWxlY3RhYmxlQXR0cik7CisgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGFy
aWFNdWx0aVNlbGVjdGFibGUsICJ0cnVlIikpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGlm
IChlcXVhbElnbm9yaW5nQ2FzZShhcmlhTXVsdGlTZWxlY3RhYmxlLCAiZmFsc2UiKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIHJldHVybiBub2RlKCkgJiYgbm9kZSgpLT5oYXNU
YWdOYW1lKHNlbGVjdFRhZykgJiYgdG9IVE1MU2VsZWN0RWxlbWVudChub2RlKCkpLT5tdWx0aXBs
ZSgpOworfQorCitib29sIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojppc1JlYWRPbmx5KCkgY29u
c3QKK3sKKyAgICBOb2RlKiBub2RlID0gdGhpcy0+bm9kZSgpOworICAgIGlmICghbm9kZSkKKyAg
ICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBpZiAobm9kZS0+aGFzVGFnTmFtZSh0ZXh0YXJlYVRh
ZykpCisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxIVE1MVGV4dEFyZWFFbGVtZW50Kj4obm9k
ZSktPnJlYWRPbmx5KCk7CisKKyAgICBpZiAobm9kZS0+aGFzVGFnTmFtZShpbnB1dFRhZykpCisg
ICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxIVE1MSW5wdXRFbGVtZW50Kj4obm9kZSktPnJlYWRP
bmx5KCk7CisKKyAgICByZXR1cm4gIW5vZGUtPnJlbmRlcmVySXNFZGl0YWJsZSgpOworfQorCiti
b29sIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojppc1JlcXVpcmVkKCkgY29uc3QKK3sKKyAgICBp
ZiAoZXF1YWxJZ25vcmluZ0Nhc2UoZ2V0QXR0cmlidXRlKGFyaWFfcmVxdWlyZWRBdHRyKSwgInRy
dWUiKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBOb2RlKiBuID0gdGhpcy0+bm9kZSgp
OworICAgIGlmIChuICYmIChuLT5pc0VsZW1lbnROb2RlKCkgJiYgdG9FbGVtZW50KG4pLT5pc0Zv
cm1Db250cm9sRWxlbWVudCgpKSkKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEhUTUxGb3Jt
Q29udHJvbEVsZW1lbnQqPihuKS0+cmVxdWlyZWQoKTsKKworICAgIHJldHVybiBmYWxzZTsKK30K
KworaW50IEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjpoZWFkaW5nTGV2ZWwoKSBjb25zdAorewor
ICAgIC8vIGhlYWRpbmdzIGNhbiBiZSBpbiBibG9jayBmbG93IGFuZCBub24tYmxvY2sgZmxvdwor
ICAgIE5vZGUqIG5vZGUgPSB0aGlzLT5ub2RlKCk7CisgICAgaWYgKCFub2RlKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoYXJpYVJvbGVBdHRyaWJ1dGUoKSA9PSBIZWFkaW5nUm9s
ZSkKKyAgICAgICAgcmV0dXJuIGdldEF0dHJpYnV0ZShhcmlhX2xldmVsQXR0cikudG9JbnQoKTsK
KworICAgIGlmIChub2RlLT5oYXNUYWdOYW1lKGgxVGFnKSkKKyAgICAgICAgcmV0dXJuIDE7CisK
KyAgICBpZiAobm9kZS0+aGFzVGFnTmFtZShoMlRhZykpCisgICAgICAgIHJldHVybiAyOworCisg
ICAgaWYgKG5vZGUtPmhhc1RhZ05hbWUoaDNUYWcpKQorICAgICAgICByZXR1cm4gMzsKKworICAg
IGlmIChub2RlLT5oYXNUYWdOYW1lKGg0VGFnKSkKKyAgICAgICAgcmV0dXJuIDQ7CisKKyAgICBp
ZiAobm9kZS0+aGFzVGFnTmFtZShoNVRhZykpCisgICAgICAgIHJldHVybiA1OworCisgICAgaWYg
KG5vZGUtPmhhc1RhZ05hbWUoaDZUYWcpKQorICAgICAgICByZXR1cm4gNjsKKworICAgIHJldHVy
biAwOworfQorCitTdHJpbmcgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OnZhbHVlRGVzY3JpcHRp
b24oKSBjb25zdAoreworICAgIGlmICghaXNBUklBUmFuZ2UoKSkKKyAgICAgICAgcmV0dXJuIFN0
cmluZygpOworCisgICAgcmV0dXJuIGdldEF0dHJpYnV0ZShhcmlhX3ZhbHVldGV4dEF0dHIpLnN0
cmluZygpOworfQorCitib29sIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojppc0FSSUFSYW5nZSgp
IGNvbnN0Cit7CisgICAgc3dpdGNoIChtX2FyaWFSb2xlKSB7CisgICAgY2FzZSBQcm9ncmVzc0lu
ZGljYXRvclJvbGU6CisgICAgY2FzZSBTbGlkZXJSb2xlOgorICAgIGNhc2UgU2Nyb2xsQmFyUm9s
ZToKKyAgICBjYXNlIFNwaW5CdXR0b25Sb2xlOgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBk
ZWZhdWx0OgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorfQorCitmbG9hdCBBY2Nlc3Np
YmlsaXR5Tm9kZU9iamVjdDo6dmFsdWVGb3JSYW5nZSgpIGNvbnN0Cit7CisgICAgaWYgKG5vZGUo
KSAmJiBub2RlKCktPmhhc1RhZ05hbWUoaW5wdXRUYWcpKSB7CisgICAgICAgIEhUTUxJbnB1dEVs
ZW1lbnQqIGlucHV0ID0gc3RhdGljX2Nhc3Q8SFRNTElucHV0RWxlbWVudCo+KG5vZGUoKSk7Cisg
ICAgICAgIGlmIChpbnB1dC0+aXNSYW5nZUNvbnRyb2woKSkKKyAgICAgICAgICAgIHJldHVybiBp
bnB1dC0+dmFsdWVBc051bWJlcigpOworICAgIH0KKworICAgIGlmICghaXNBUklBUmFuZ2UoKSkK
KyAgICAgICAgcmV0dXJuIDAuMGY7CisKKyAgICByZXR1cm4gZ2V0QXR0cmlidXRlKGFyaWFfdmFs
dWVub3dBdHRyKS50b0Zsb2F0KCk7Cit9CisKK2Zsb2F0IEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0
OjptYXhWYWx1ZUZvclJhbmdlKCkgY29uc3QKK3sKKyAgICBpZiAobm9kZSgpICYmIG5vZGUoKS0+
aGFzVGFnTmFtZShpbnB1dFRhZykpIHsKKyAgICAgICAgSFRNTElucHV0RWxlbWVudCogaW5wdXQg
PSBzdGF0aWNfY2FzdDxIVE1MSW5wdXRFbGVtZW50Kj4obm9kZSgpKTsKKyAgICAgICAgaWYgKGlu
cHV0LT5pc1JhbmdlQ29udHJvbCgpKQorICAgICAgICAgICAgcmV0dXJuIGlucHV0LT5tYXhpbXVt
KCk7CisgICAgfQorCisgICAgaWYgKCFpc0FSSUFSYW5nZSgpKQorICAgICAgICByZXR1cm4gMC4w
ZjsKKworICAgIHJldHVybiBnZXRBdHRyaWJ1dGUoYXJpYV92YWx1ZW1heEF0dHIpLnRvRmxvYXQo
KTsKK30KKworZmxvYXQgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6Om1pblZhbHVlRm9yUmFuZ2Uo
KSBjb25zdAoreworICAgIGlmIChub2RlKCkgJiYgbm9kZSgpLT5oYXNUYWdOYW1lKGlucHV0VGFn
KSkgeworICAgICAgICBIVE1MSW5wdXRFbGVtZW50KiBpbnB1dCA9IHN0YXRpY19jYXN0PEhUTUxJ
bnB1dEVsZW1lbnQqPihub2RlKCkpOworICAgICAgICBpZiAoaW5wdXQtPmlzUmFuZ2VDb250cm9s
KCkpCisgICAgICAgICAgICByZXR1cm4gaW5wdXQtPm1pbmltdW0oKTsKKyAgICB9CisKKyAgICBp
ZiAoIWlzQVJJQVJhbmdlKCkpCisgICAgICAgIHJldHVybiAwLjBmOworCisgICAgcmV0dXJuIGdl
dEF0dHJpYnV0ZShhcmlhX3ZhbHVlbWluQXR0cikudG9GbG9hdCgpOworfQorCitmbG9hdCBBY2Nl
c3NpYmlsaXR5Tm9kZU9iamVjdDo6c3RlcFZhbHVlRm9yUmFuZ2UoKSBjb25zdAoreworICAgIHJl
dHVybiBnZXRBdHRyaWJ1dGUoc3RlcEF0dHIpLnRvRmxvYXQoKTsKK30KKworYm9vbCBBY2Nlc3Np
YmlsaXR5Tm9kZU9iamVjdDo6aXNIZWFkaW5nKCkgY29uc3QKK3sKKyAgICByZXR1cm4gcm9sZVZh
bHVlKCkgPT0gSGVhZGluZ1JvbGU7Cit9CisKK2Jvb2wgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6
OmlzTGluaygpIGNvbnN0Cit7CisgICAgcmV0dXJuIHJvbGVWYWx1ZSgpID09IFdlYkNvcmVMaW5r
Um9sZTsKK30KKworYm9vbCBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6aXNDb250cm9sKCkgY29u
c3QKK3sKKyAgICBOb2RlKiBub2RlID0gdGhpcy0+bm9kZSgpOworICAgIGlmICghbm9kZSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuICgobm9kZS0+aXNFbGVtZW50Tm9kZSgp
ICYmIHRvRWxlbWVudChub2RlKS0+aXNGb3JtQ29udHJvbEVsZW1lbnQoKSkKKyAgICAgICAgfHwg
QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNBUklBQ29udHJvbChhcmlhUm9sZUF0dHJpYnV0ZSgpKSk7
Cit9CisKK2Jvb2wgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmlzRmllbGRzZXQoKSBjb25zdAor
eworICAgIE5vZGUqIG5vZGUgPSB0aGlzLT5ub2RlKCk7CisgICAgaWYgKCFub2RlKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gbm9kZS0+aGFzVGFnTmFtZShmaWVsZHNldFRh
Zyk7Cit9CisKK2Jvb2wgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmlzR3JvdXAoKSBjb25zdAor
eworICAgIHJldHVybiByb2xlVmFsdWUoKSA9PSBHcm91cFJvbGU7Cit9CisKK0FjY2Vzc2liaWxp
dHlPYmplY3QqIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjpzZWxlY3RlZFJhZGlvQnV0dG9uKCkK
K3sKKyAgICBpZiAoIWlzUmFkaW9Hcm91cCgpKQorICAgICAgICByZXR1cm4gMDsKKworICAgIEFj
Y2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBjaGlsZHJlbiA9
IHRoaXMtPmNoaWxkcmVuKCk7CisKKyAgICAvLyBGaW5kIHRoZSBjaGlsZCByYWRpbyBidXR0b24g
dGhhdCBpcyBzZWxlY3RlZCAoaWUuIHRoZSBpbnRWYWx1ZSA9PSAxKS4KKyAgICBzaXplX3Qgc2l6
ZSA9IGNoaWxkcmVuLnNpemUoKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsr
aSkgeworICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmplY3QgPSBjaGlsZHJlbltpXS5n
ZXQoKTsKKyAgICAgICAgaWYgKG9iamVjdC0+cm9sZVZhbHVlKCkgPT0gUmFkaW9CdXR0b25Sb2xl
ICYmIG9iamVjdC0+Y2hlY2tib3hPclJhZGlvVmFsdWUoKSA9PSBCdXR0b25TdGF0ZU9uKQorICAg
ICAgICAgICAgcmV0dXJuIG9iamVjdDsKKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKK0FjY2Vz
c2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjpzZWxlY3RlZFRhYkl0ZW0o
KQoreworICAgIGlmICghaXNUYWJMaXN0KCkpCisgICAgICAgIHJldHVybiAwOworCisgICAgLy8g
RmluZCB0aGUgY2hpbGQgdGFiIGl0ZW0gdGhhdCBpcyBzZWxlY3RlZCAoaWUuIHRoZSBpbnRWYWx1
ZSA9PSAxKS4KKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5W
ZWN0b3IgdGFiczsKKyAgICB0YWJDaGlsZHJlbih0YWJzKTsKKworICAgIEFjY2Vzc2liaWxpdHlP
YmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBjaGlsZHJlbiA9IHRoaXMtPmNoaWxk
cmVuKCk7CisgICAgc2l6ZV90IHNpemUgPSB0YWJzLnNpemUoKTsKKyAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IHNpemU7ICsraSkgeworICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmpl
Y3QgPSBjaGlsZHJlbltpXS5nZXQoKTsKKyAgICAgICAgaWYgKG9iamVjdC0+aXNUYWJJdGVtKCkg
JiYgb2JqZWN0LT5pc0NoZWNrZWQoKSkKKyAgICAgICAgICAgIHJldHVybiBvYmplY3Q7CisgICAg
fQorICAgIHJldHVybiAwOworfQorCitBY2Nlc3NpYmlsaXR5QnV0dG9uU3RhdGUgQWNjZXNzaWJp
bGl0eU5vZGVPYmplY3Q6OmNoZWNrYm94T3JSYWRpb1ZhbHVlKCkgY29uc3QKK3sKKyAgICBpZiAo
aXNOYXRpdmVDaGVja2JveE9yUmFkaW8oKSkKKyAgICAgICAgcmV0dXJuIGlzQ2hlY2tlZCgpID8g
QnV0dG9uU3RhdGVPbiA6IEJ1dHRvblN0YXRlT2ZmOworCisgICAgcmV0dXJuIEFjY2Vzc2liaWxp
dHlPYmplY3Q6OmNoZWNrYm94T3JSYWRpb1ZhbHVlKCk7Cit9CisKK0VsZW1lbnQqIEFjY2Vzc2li
aWxpdHlOb2RlT2JqZWN0OjphbmNob3JFbGVtZW50KCkgY29uc3QKK3sKKyAgICBOb2RlKiBub2Rl
ID0gdGhpcy0+bm9kZSgpOworICAgIGlmICghbm9kZSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAg
ICBBWE9iamVjdENhY2hlKiBjYWNoZSA9IGF4T2JqZWN0Q2FjaGUoKTsKKworICAgIC8vIHNlYXJj
aCB1cCB0aGUgRE9NIHRyZWUgZm9yIGFuIGFuY2hvciBlbGVtZW50CisgICAgLy8gTk9URTogdGhp
cyBhc3N1bWVzIHRoYXQgYW55IG5vbi1pbWFnZSB3aXRoIGFuIGFuY2hvciBpcyBhbiBIVE1MQW5j
aG9yRWxlbWVudAorICAgIGZvciAoIDsgbm9kZTsgbm9kZSA9IG5vZGUtPnBhcmVudE5vZGUoKSkg
eworICAgICAgICBpZiAobm9kZS0+aGFzVGFnTmFtZShhVGFnKSB8fCAobm9kZS0+cmVuZGVyZXIo
KSAmJiBjYWNoZS0+Z2V0T3JDcmVhdGUobm9kZS0+cmVuZGVyZXIoKSktPmlzQW5jaG9yKCkpKQor
ICAgICAgICAgICAgcmV0dXJuIHRvRWxlbWVudChub2RlKTsKKyAgICB9CisKKyAgICByZXR1cm4g
MDsKK30KKworRWxlbWVudCogQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmFjdGlvbkVsZW1lbnQo
KSBjb25zdAoreworICAgIE5vZGUqIG5vZGUgPSB0aGlzLT5ub2RlKCk7CisgICAgaWYgKCFub2Rl
KQorICAgICAgICByZXR1cm4gMDsKKworICAgIGlmIChub2RlLT5oYXNUYWdOYW1lKGlucHV0VGFn
KSkgeworICAgICAgICBIVE1MSW5wdXRFbGVtZW50KiBpbnB1dCA9IHN0YXRpY19jYXN0PEhUTUxJ
bnB1dEVsZW1lbnQqPihub2RlKTsKKyAgICAgICAgaWYgKCFpbnB1dC0+ZGlzYWJsZWQoKSAmJiAo
aXNDaGVja2JveE9yUmFkaW8oKSB8fCBpbnB1dC0+aXNUZXh0QnV0dG9uKCkpKQorICAgICAgICAg
ICAgcmV0dXJuIGlucHV0OworICAgIH0gZWxzZSBpZiAobm9kZS0+aGFzVGFnTmFtZShidXR0b25U
YWcpKQorICAgICAgICByZXR1cm4gdG9FbGVtZW50KG5vZGUpOworCisgICAgaWYgKGlzRmlsZVVw
bG9hZEJ1dHRvbigpKQorICAgICAgICByZXR1cm4gdG9FbGVtZW50KG5vZGUpOworICAgICAgICAg
ICAgCisgICAgaWYgKEFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzQVJJQUlucHV0KGFyaWFSb2xlQXR0
cmlidXRlKCkpKQorICAgICAgICByZXR1cm4gdG9FbGVtZW50KG5vZGUpOworCisgICAgaWYgKGlz
SW1hZ2VCdXR0b24oKSkKKyAgICAgICAgcmV0dXJuIHRvRWxlbWVudChub2RlKTsKKyAgICAKKyAg
ICBpZiAobm9kZS0+aGFzVGFnTmFtZShzZWxlY3RUYWcpKQorICAgICAgICByZXR1cm4gdG9FbGVt
ZW50KG5vZGUpOworCisgICAgc3dpdGNoIChyb2xlVmFsdWUoKSkgeworICAgIGNhc2UgQnV0dG9u
Um9sZToKKyAgICBjYXNlIFBvcFVwQnV0dG9uUm9sZToKKyAgICBjYXNlIFRhYlJvbGU6CisgICAg
Y2FzZSBNZW51SXRlbVJvbGU6CisgICAgY2FzZSBMaXN0SXRlbVJvbGU6CisgICAgICAgIHJldHVy
biB0b0VsZW1lbnQobm9kZSk7CisgICAgZGVmYXVsdDoKKyAgICAgICAgYnJlYWs7CisgICAgfQor
ICAgIAorICAgIEVsZW1lbnQqIGVsdCA9IGFuY2hvckVsZW1lbnQoKTsKKyAgICBpZiAoIWVsdCkK
KyAgICAgICAgZWx0ID0gbW91c2VCdXR0b25MaXN0ZW5lcigpOworICAgIHJldHVybiBlbHQ7Cit9
CisKK0VsZW1lbnQqIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojptb3VzZUJ1dHRvbkxpc3RlbmVy
KCkgY29uc3QKK3sKKyAgICBOb2RlKiBub2RlID0gdGhpcy0+bm9kZSgpOworICAgIGlmICghbm9k
ZSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICAvLyBjaGVjayBpZiBvdXIgcGFyZW50IGlzIGEg
bW91c2UgYnV0dG9uIGxpc3RlbmVyCisgICAgd2hpbGUgKG5vZGUgJiYgIW5vZGUtPmlzRWxlbWVu
dE5vZGUoKSkKKyAgICAgICAgbm9kZSA9IG5vZGUtPnBhcmVudE5vZGUoKTsKKworICAgIGlmICgh
bm9kZSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICAvLyBGSVhNRTogRG8gdGhlIGNvbnRpbnVh
dGlvbiBzZWFyY2ggbGlrZSBhbmNob3JFbGVtZW50IGRvZXMKKyAgICBmb3IgKEVsZW1lbnQqIGVs
ZW1lbnQgPSB0b0VsZW1lbnQobm9kZSk7IGVsZW1lbnQ7IGVsZW1lbnQgPSBlbGVtZW50LT5wYXJl
bnRFbGVtZW50KCkpIHsKKyAgICAgICAgaWYgKGVsZW1lbnQtPmdldEF0dHJpYnV0ZUV2ZW50TGlz
dGVuZXIoZXZlbnROYW1lcygpLmNsaWNrRXZlbnQpIHx8IGVsZW1lbnQtPmdldEF0dHJpYnV0ZUV2
ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLm1vdXNlZG93bkV2ZW50KSB8fCBlbGVtZW50LT5nZXRB
dHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5tb3VzZXVwRXZlbnQpKQorICAgICAg
ICAgICAgcmV0dXJuIGVsZW1lbnQ7CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKK2Jvb2wg
QWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmlzRGVzY2VuZGFudE9mQmFycmVuUGFyZW50KCkgY29u
c3QKK3sKKyAgICBmb3IgKEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iamVjdCA9IHBhcmVudE9iamVj
dCgpOyBvYmplY3Q7IG9iamVjdCA9IG9iamVjdC0+cGFyZW50T2JqZWN0KCkpIHsKKyAgICAgICAg
aWYgKCFvYmplY3QtPmNhbkhhdmVDaGlsZHJlbigpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgfQorCisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIEFjY2Vzc2liaWxpdHlOb2Rl
T2JqZWN0OjphbHRlclNsaWRlclZhbHVlKGJvb2wgaW5jcmVhc2UpCit7CisgICAgaWYgKHJvbGVW
YWx1ZSgpICE9IFNsaWRlclJvbGUpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICghZ2V0QXR0
cmlidXRlKHN0ZXBBdHRyKS5pc0VtcHR5KCkpCisgICAgICAgIGNoYW5nZVZhbHVlQnlTdGVwKGlu
Y3JlYXNlKTsKKyAgICBlbHNlCisgICAgICAgIGNoYW5nZVZhbHVlQnlQZXJjZW50KGluY3JlYXNl
ID8gNSA6IC01KTsKK30KKyAgICAKK3ZvaWQgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmluY3Jl
bWVudCgpCit7CisgICAgYWx0ZXJTbGlkZXJWYWx1ZSh0cnVlKTsKK30KKwordm9pZCBBY2Nlc3Np
YmlsaXR5Tm9kZU9iamVjdDo6ZGVjcmVtZW50KCkKK3sKKyAgICBhbHRlclNsaWRlclZhbHVlKGZh
bHNlKTsKK30KKwordm9pZCBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6Y2hhbmdlVmFsdWVCeVN0
ZXAoYm9vbCBpbmNyZWFzZSkKK3sKKyAgICBmbG9hdCBzdGVwID0gc3RlcFZhbHVlRm9yUmFuZ2Uo
KTsKKyAgICBmbG9hdCB2YWx1ZSA9IHZhbHVlRm9yUmFuZ2UoKTsKKworICAgIHZhbHVlICs9IGlu
Y3JlYXNlID8gc3RlcCA6IC1zdGVwOworCisgICAgc2V0VmFsdWUoU3RyaW5nOjpudW1iZXIodmFs
dWUpKTsKKworICAgIGF4T2JqZWN0Q2FjaGUoKS0+cG9zdE5vdGlmaWNhdGlvbihub2RlKCksIEFY
T2JqZWN0Q2FjaGU6OkFYVmFsdWVDaGFuZ2VkLCB0cnVlKTsKK30KKwordm9pZCBBY2Nlc3NpYmls
aXR5Tm9kZU9iamVjdDo6Y2hhbmdlVmFsdWVCeVBlcmNlbnQoZmxvYXQgcGVyY2VudENoYW5nZSkK
K3sKKyAgICBmbG9hdCByYW5nZSA9IG1heFZhbHVlRm9yUmFuZ2UoKSAtIG1pblZhbHVlRm9yUmFu
Z2UoKTsKKyAgICBmbG9hdCB2YWx1ZSA9IHZhbHVlRm9yUmFuZ2UoKTsKKworICAgIHZhbHVlICs9
IHJhbmdlICogKHBlcmNlbnRDaGFuZ2UgLyAxMDApOworICAgIHNldFZhbHVlKFN0cmluZzo6bnVt
YmVyKHZhbHVlKSk7CisKKyAgICBheE9iamVjdENhY2hlKCktPnBvc3ROb3RpZmljYXRpb24obm9k
ZSgpLCBBWE9iamVjdENhY2hlOjpBWFZhbHVlQ2hhbmdlZCwgdHJ1ZSk7Cit9CisKK2Jvb2wgQWNj
ZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmlzR2VuZXJpY0ZvY3VzYWJsZUVsZW1lbnQoKSBjb25zdAor
eworICAgIGlmICghY2FuU2V0Rm9jdXNBdHRyaWJ1dGUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgIC8vIElmIGl0J3MgYSBjb250cm9sLCBpdCdzIG5vdCBnZW5lcmljLgorICAgICBp
ZiAoaXNDb250cm9sKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIElmIGl0IGhh
cyBhbiBhcmlhIHJvbGUsIGl0J3Mgbm90IGdlbmVyaWMuCisgICAgaWYgKG1fYXJpYVJvbGUgIT0g
VW5rbm93blJvbGUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIElmIHRoZSBjb250
ZW50IGVkaXRhYmxlIGF0dHJpYnV0ZSBpcyBzZXQgb24gdGhpcyBlbGVtZW50LCB0aGF0J3MgdGhl
IHJlYXNvbgorICAgIC8vIGl0J3MgZm9jdXNhYmxlLCBhbmQgZXhpc3RpbmcgbG9naWMgc2hvdWxk
IGhhbmRsZSB0aGlzIGNhc2UgYWxyZWFkeSAtIHNvIGl0J3Mgbm90IGEKKyAgICAvLyBnZW5lcmlj
IGZvY3VzYWJsZSBlbGVtZW50LgorCisgICAgaWYgKGhhc0NvbnRlbnRFZGl0YWJsZUF0dHJpYnV0
ZVNldCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBUaGUgd2ViIGFyZWEgYW5k
IGJvZHkgZWxlbWVudCBhcmUgYm90aCBmb2N1c2FibGUsIGJ1dCBleGlzdGluZyBsb2dpYyBoYW5k
bGVzIHRoZXNlCisgICAgLy8gY2FzZXMgYWxyZWFkeSwgc28gd2UgZG9uJ3QgbmVlZCB0byBpbmNs
dWRlIHRoZW0gaGVyZS4KKyAgICBpZiAocm9sZVZhbHVlKCkgPT0gV2ViQXJlYVJvbGUpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAobm9kZSgpICYmIG5vZGUoKS0+aGFzVGFnTmFtZShi
b2R5VGFnKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHRydWU7Cit9CisK
K0hUTUxMYWJlbEVsZW1lbnQqIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjpsYWJlbEZvckVsZW1l
bnQoRWxlbWVudCogZWxlbWVudCkgY29uc3QKK3sKKyAgICBSZWZQdHI8Tm9kZUxpc3Q+IGxpc3Qg
PSBlbGVtZW50LT5kb2N1bWVudCgpLT5nZXRFbGVtZW50c0J5VGFnTmFtZSgibGFiZWwiKTsKKyAg
ICB1bnNpZ25lZCBsZW4gPSBsaXN0LT5sZW5ndGgoKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgbGVuOyBpKyspIHsKKyAgICAgICAgaWYgKGxpc3QtPml0ZW0oaSktPmhhc1RhZ05hbWUo
bGFiZWxUYWcpKSB7CisgICAgICAgICAgICBIVE1MTGFiZWxFbGVtZW50KiBsYWJlbCA9IHN0YXRp
Y19jYXN0PEhUTUxMYWJlbEVsZW1lbnQqPihsaXN0LT5pdGVtKGkpKTsKKyAgICAgICAgICAgIGlm
IChsYWJlbC0+Y29udHJvbCgpID09IGVsZW1lbnQpCisgICAgICAgICAgICAgICAgcmV0dXJuIGxh
YmVsOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKK1N0cmluZyBBY2Nl
c3NpYmlsaXR5Tm9kZU9iamVjdDo6YXJpYUFjY2Vzc2liaWxpdHlEZXNjcmlwdGlvbigpIGNvbnN0
Cit7CisgICAgU3RyaW5nIGFyaWFMYWJlbGVkQnkgPSBhcmlhTGFiZWxlZEJ5QXR0cmlidXRlKCk7
CisgICAgaWYgKCFhcmlhTGFiZWxlZEJ5LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIGFyaWFM
YWJlbGVkQnk7CisKKyAgICBjb25zdCBBdG9taWNTdHJpbmcmIGFyaWFMYWJlbCA9IGdldEF0dHJp
YnV0ZShhcmlhX2xhYmVsQXR0cik7CisgICAgaWYgKCFhcmlhTGFiZWwuaXNFbXB0eSgpKQorICAg
ICAgICByZXR1cm4gYXJpYUxhYmVsOworCisgICAgcmV0dXJuIFN0cmluZygpOworfQorCitzdGF0
aWMgRWxlbWVudCogc2libGluZ1dpdGhBcmlhUm9sZShTdHJpbmcgcm9sZSwgTm9kZSogbm9kZSkK
K3sKKyAgICBmb3IgKE5vZGUqIHNpYmxpbmcgPSBub2RlLT5wYXJlbnROb2RlKCktPmZpcnN0Q2hp
bGQoKTsgc2libGluZzsgc2libGluZyA9IHNpYmxpbmctPm5leHRTaWJsaW5nKCkpIHsKKyAgICAg
ICAgaWYgKHNpYmxpbmctPmlzRWxlbWVudE5vZGUoKSkgeworICAgICAgICAgICAgY29uc3QgQXRv
bWljU3RyaW5nJiBzaWJsaW5nQXJpYVJvbGUgPSB0b0VsZW1lbnQoc2libGluZyktPmdldEF0dHJp
YnV0ZShyb2xlQXR0cik7CisgICAgICAgICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2Uoc2libGlu
Z0FyaWFSb2xlLCByb2xlKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gdG9FbGVtZW50KHNpYmxp
bmcpOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIHJldHVybiAwOworfQorCitFbGVtZW50
KiBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6bWVudUVsZW1lbnRGb3JNZW51QnV0dG9uKCkgY29u
c3QKK3sKKyAgICBpZiAoYXJpYVJvbGVBdHRyaWJ1dGUoKSAhPSBNZW51QnV0dG9uUm9sZSkKKyAg
ICAgICAgcmV0dXJuIDA7CisKKyAgICByZXR1cm4gc2libGluZ1dpdGhBcmlhUm9sZSgibWVudSIs
IG5vZGUoKSk7Cit9CisKK0FjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlOb2RlT2Jq
ZWN0OjptZW51Rm9yTWVudUJ1dHRvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIGF4T2JqZWN0Q2Fj
aGUoKS0+Z2V0T3JDcmVhdGUobWVudUVsZW1lbnRGb3JNZW51QnV0dG9uKCkpOworfQorCitFbGVt
ZW50KiBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6bWVudUl0ZW1FbGVtZW50Rm9yTWVudSgpIGNv
bnN0Cit7CisgICAgaWYgKGFyaWFSb2xlQXR0cmlidXRlKCkgIT0gTWVudVJvbGUpCisgICAgICAg
IHJldHVybiAwOworICAgIAorICAgIHJldHVybiBzaWJsaW5nV2l0aEFyaWFSb2xlKCJtZW51aXRl
bSIsIG5vZGUoKSk7ICAgIAorfQorCitBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5
Tm9kZU9iamVjdDo6bWVudUJ1dHRvbkZvck1lbnUoKSBjb25zdAoreworICAgIEVsZW1lbnQqIG1l
bnVJdGVtID0gbWVudUl0ZW1FbGVtZW50Rm9yTWVudSgpOworCisgICAgaWYgKG1lbnVJdGVtKSB7
CisgICAgICAgIC8vIEFSSUEganVzdCBoYXMgZ2VuZXJpYyBtZW51IGl0ZW1zLiBBcHBLaXQgbmVl
ZHMgdG8ga25vdyBpZiB0aGlzIGlzIGEgdG9wIGxldmVsIGl0ZW1zIGxpa2UgTWVudUJhckJ1dHRv
biBvciBNZW51QmFySXRlbQorICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBtZW51SXRlbUFY
ID0gYXhPYmplY3RDYWNoZSgpLT5nZXRPckNyZWF0ZShtZW51SXRlbSk7CisgICAgICAgIGlmICht
ZW51SXRlbUFYLT5pc01lbnVCdXR0b24oKSkKKyAgICAgICAgICAgIHJldHVybiBtZW51SXRlbUFY
OworICAgIH0KKyAgICByZXR1cm4gMDsKK30KKworU3RyaW5nIEFjY2Vzc2liaWxpdHlOb2RlT2Jq
ZWN0OjphY2Nlc3NpYmlsaXR5RGVzY3JpcHRpb24oKSBjb25zdAoreworICAgIC8vIFN0YXRpYyB0
ZXh0IHNob3VsZCBub3QgaGF2ZSBhIGRlc2NyaXB0aW9uLCBpdCBzaG91bGQgb25seSBoYXZlIGEg
c3RyaW5nVmFsdWUuCisgICAgaWYgKHJvbGVWYWx1ZSgpID09IFN0YXRpY1RleHRSb2xlKQorICAg
ICAgICByZXR1cm4gU3RyaW5nKCk7CisKKyAgICBTdHJpbmcgYXJpYURlc2NyaXB0aW9uID0gYXJp
YUFjY2Vzc2liaWxpdHlEZXNjcmlwdGlvbigpOworICAgIGlmICghYXJpYURlc2NyaXB0aW9uLmlz
RW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIGFyaWFEZXNjcmlwdGlvbjsKKworICAgIGlmIChpc0lt
YWdlKCkgfHwgaXNJbnB1dEltYWdlKCkgfHwgaXNOYXRpdmVJbWFnZSgpIHx8IGlzQ2FudmFzKCkp
IHsKKyAgICAgICAgLy8gSW1hZ2VzIHNob3VsZCB1c2UgYWx0IGFzIGxvbmcgYXMgdGhlIGF0dHJp
YnV0ZSBpcyBwcmVzZW50LCBldmVuIGlmIGVtcHR5LiAgICAgICAgICAgICAgICAgICAgCisgICAg
ICAgIC8vIE90aGVyd2lzZSwgaXQgc2hvdWxkIGZhbGxiYWNrIHRvIG90aGVyIG1ldGhvZHMsIGxp
a2UgdGhlIHRpdGxlIGF0dHJpYnV0ZS4gICAgICAgICAgICAgICAgICAgIAorICAgICAgICBjb25z
dCBBdG9taWNTdHJpbmcmIGFsdCA9IGdldEF0dHJpYnV0ZShhbHRBdHRyKTsKKyAgICAgICAgaWYg
KCFhbHQuaXNOdWxsKCkpCisgICAgICAgICAgICByZXR1cm4gYWx0OworICAgIH0KKworI2lmIEVO
QUJMRShNQVRITUwpCisgICAgTm9kZSogbm9kZSA9IHRoaXMtPm5vZGUoKTsKKyAgICBpZiAobm9k
ZSAmJiBub2RlLT5pc0VsZW1lbnROb2RlKCkgJiYgdG9FbGVtZW50KG5vZGUpLT5pc01hdGhNTEVs
ZW1lbnQoKSkKKyAgICAgICAgcmV0dXJuIGdldEF0dHJpYnV0ZShNYXRoTUxOYW1lczo6YWx0dGV4
dEF0dHIpOworI2VuZGlmCisKKyAgICAvLyBBbiBlbGVtZW50J3MgZGVzY3JpcHRpdmUgdGV4dCBp
cyBjb21wcmlzZWQgb2YgdGl0bGUoKSAod2hhdCdzIHZpc2libGUgb24gdGhlIHNjcmVlbikgYW5k
IGFjY2Vzc2liaWxpdHlEZXNjcmlwdGlvbigpIChvdGhlciBkZXNjcmlwdGl2ZSB0ZXh0KS4KKyAg
ICAvLyBCb3RoIGFyZSB1c2VkIHRvIGdlbmVyYXRlIHdoYXQgYSBzY3JlZW4gcmVhZGVyIHNwZWFr
cy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIAorICAgIC8vIElmIHRoaXMgcG9pbnQgaXMgcmVhY2hlZCAoaS5lLiB0aGVyZSdzIG5vIGFj
Y2Vzc2liaWxpdHlEZXNjcmlwdGlvbikgYW5kIHRoZXJlJ3Mgbm8gdGl0bGUoKSwgd2Ugc2hvdWxk
IGZhbGxiYWNrIHRvIHVzaW5nIHRoZSB0aXRsZSBhdHRyaWJ1dGUuCisgICAgLy8gVGhlIHRpdGxl
IGF0dHJpYnV0ZSBpcyBub3JtYWxseSB1c2VkIGFzIGhlbHAgdGV4dCAoYmVjYXVzZSBpdCBpcyBh
IHRvb2x0aXApLCBidXQgaWYgdGhlcmUgaXMgbm90aGluZyBlbHNlIGF2YWlsYWJsZSwgdGhpcyBz
aG91bGQgYmUgdXNlZCAoYWNjb3JkaW5nIHRvIEFSSUEpLgorICAgIGlmICh0aXRsZSgpLmlzRW1w
dHkoKSkKKyAgICAgICAgcmV0dXJuIGdldEF0dHJpYnV0ZSh0aXRsZUF0dHIpOworCisgICAgcmV0
dXJuIFN0cmluZygpOworfQorCitTdHJpbmcgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmhlbHBU
ZXh0KCkgY29uc3QKK3sKKyAgICBOb2RlKiBub2RlID0gdGhpcy0+bm9kZSgpOworICAgIGlmICgh
bm9kZSkKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOworICAgIAorICAgIGNvbnN0IEF0b21pY1N0
cmluZyYgYXJpYUhlbHAgPSBnZXRBdHRyaWJ1dGUoYXJpYV9oZWxwQXR0cik7CisgICAgaWYgKCFh
cmlhSGVscC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBhcmlhSGVscDsKKyAgICAKKyAgICBT
dHJpbmcgZGVzY3JpYmVkQnkgPSBhcmlhRGVzY3JpYmVkQnlBdHRyaWJ1dGUoKTsKKyAgICBpZiAo
IWRlc2NyaWJlZEJ5LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIGRlc2NyaWJlZEJ5OworICAg
IAorICAgIFN0cmluZyBkZXNjcmlwdGlvbiA9IGFjY2Vzc2liaWxpdHlEZXNjcmlwdGlvbigpOwor
ICAgIGZvciAoTm9kZSogY3VyciA9IG5vZGU7IGN1cnI7IGN1cnIgPSBjdXJyLT5wYXJlbnROb2Rl
KCkpIHsKKyAgICAgICAgaWYgKGN1cnItPmlzSFRNTEVsZW1lbnQoKSkgeworICAgICAgICAgICAg
Y29uc3QgQXRvbWljU3RyaW5nJiBzdW1tYXJ5ID0gdG9FbGVtZW50KGN1cnIpLT5nZXRBdHRyaWJ1
dGUoc3VtbWFyeUF0dHIpOworICAgICAgICAgICAgaWYgKCFzdW1tYXJ5LmlzRW1wdHkoKSkKKyAg
ICAgICAgICAgICAgICByZXR1cm4gc3VtbWFyeTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAg
Ly8gVGhlIHRpdGxlIGF0dHJpYnV0ZSBzaG91bGQgYmUgdXNlZCBhcyBoZWxwIHRleHQgdW5sZXNz
IGl0IGlzIGFscmVhZHkgYmVpbmcgdXNlZCBhcyBkZXNjcmlwdGl2ZSB0ZXh0LgorICAgICAgICAg
ICAgY29uc3QgQXRvbWljU3RyaW5nJiB0aXRsZSA9IHRvRWxlbWVudChjdXJyKS0+Z2V0QXR0cmli
dXRlKHRpdGxlQXR0cik7CisgICAgICAgICAgICBpZiAoIXRpdGxlLmlzRW1wdHkoKSAmJiBkZXNj
cmlwdGlvbiAhPSB0aXRsZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gdGl0bGU7CisgICAgICAg
IH0KKyAgICAgICAgCisgICAgICAgIC8vIE9ubHkgdGFrZSBoZWxwIHRleHQgZnJvbSBhbiBhbmNl
c3RvciBlbGVtZW50IGlmIGl0cyBhIGdyb3VwIG9yIGFuIHVua25vd24gcm9sZS4gSWYgaGVscCB3
YXMgCisgICAgICAgIC8vIGFkZGVkIHRvIHRob3NlIGtpbmRzIG9mIGVsZW1lbnRzLCBpdCBpcyBs
aWtlbHkgaXQgd2FzIG1lYW50IGZvciBhIGNoaWxkIGVsZW1lbnQuCisgICAgICAgIEFjY2Vzc2li
aWxpdHlPYmplY3QqIGF4T2JqID0gYXhPYmplY3RDYWNoZSgpLT5nZXRPckNyZWF0ZShjdXJyKTsK
KyAgICAgICAgaWYgKGF4T2JqKSB7CisgICAgICAgICAgICBBY2Nlc3NpYmlsaXR5Um9sZSByb2xl
ID0gYXhPYmotPnJvbGVWYWx1ZSgpOworICAgICAgICAgICAgaWYgKHJvbGUgIT0gR3JvdXBSb2xl
ICYmIHJvbGUgIT0gVW5rbm93blJvbGUpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IH0KKyAgICB9CisgICAgCisgICAgcmV0dXJuIFN0cmluZygpOworfQorICAgIAordW5zaWduZWQg
QWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmhpZXJhcmNoaWNhbExldmVsKCkgY29uc3QKK3sKKyAg
ICBOb2RlKiBub2RlID0gdGhpcy0+bm9kZSgpOworICAgIGlmICghbm9kZSB8fCAhbm9kZS0+aXNF
bGVtZW50Tm9kZSgpKQorICAgICAgICByZXR1cm4gMDsKKyAgICBFbGVtZW50KiBlbGVtZW50ID0g
dG9FbGVtZW50KG5vZGUpOworICAgIFN0cmluZyBhcmlhTGV2ZWwgPSBlbGVtZW50LT5nZXRBdHRy
aWJ1dGUoYXJpYV9sZXZlbEF0dHIpOworICAgIGlmICghYXJpYUxldmVsLmlzRW1wdHkoKSkKKyAg
ICAgICAgcmV0dXJuIGFyaWFMZXZlbC50b0ludCgpOworICAgIAorICAgIC8vIE9ubHkgdHJlZSBp
dGVtIHdpbGwgY2FsY3VsYXRlIGl0cyBsZXZlbCB0aHJvdWdoIHRoZSBET00gY3VycmVudGx5Lgor
ICAgIGlmIChyb2xlVmFsdWUoKSAhPSBUcmVlSXRlbVJvbGUpCisgICAgICAgIHJldHVybiAwOwor
ICAgIAorICAgIC8vIEhpZXJhcmNoeSBsZXZlbGluZyBzdGFydHMgYXQgMC4KKyAgICAvLyBXZSBt
ZWFzdXJlIHRyZWUgaGllcmFyY2h5IGJ5IHRoZSBudW1iZXIgb2YgZ3JvdXBzIHRoYXQgdGhlIGl0
ZW0gaXMgd2l0aGluLgorICAgIHVuc2lnbmVkIGxldmVsID0gMDsKKyAgICBmb3IgKEFjY2Vzc2li
aWxpdHlPYmplY3QqIHBhcmVudCA9IHBhcmVudE9iamVjdCgpOyBwYXJlbnQ7IHBhcmVudCA9IHBh
cmVudC0+cGFyZW50T2JqZWN0KCkpIHsKKyAgICAgICAgQWNjZXNzaWJpbGl0eVJvbGUgcGFyZW50
Um9sZSA9IHBhcmVudC0+cm9sZVZhbHVlKCk7CisgICAgICAgIGlmIChwYXJlbnRSb2xlID09IEdy
b3VwUm9sZSkKKyAgICAgICAgICAgIGxldmVsKys7CisgICAgICAgIGVsc2UgaWYgKHBhcmVudFJv
bGUgPT0gVHJlZVJvbGUpCisgICAgICAgICAgICBicmVhazsKKyAgICB9CisgICAgCisgICAgcmV0
dXJuIGxldmVsOworfQorCitTdHJpbmcgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OnRleHRVbmRl
ckVsZW1lbnQoKSBjb25zdAoreworICAgIE5vZGUqIG5vZGUgPSB0aGlzLT5ub2RlKCk7CisgICAg
aWYgKCFub2RlKQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisKKyAgICAvLyBOb3RlOiBUZXh0
SXRlcmF0b3IgZG9lc24ndCByZXR1cm4gYW55IHRleHQgZm9yIG5vZGVzIHRoYXQgZG9uJ3QgaGF2
ZSByZW5kZXJlcnMuCisgICAgLy8gSWYgdGhpcyBjb3VsZCBiZSBmaXhlZCwgaXQnZCBiZSBtb3Jl
IGFjY3VyYXRlIHVzZSBUZXh0SXRlcmF0b3IgaGVyZS4KKyAgICBpZiAobm9kZS0+aXNFbGVtZW50
Tm9kZSgpKQorICAgICAgICByZXR1cm4gdG9FbGVtZW50KG5vZGUpLT5pbm5lclRleHQoKTsKKwor
ICAgIHJldHVybiBTdHJpbmcoKTsKK30KKworU3RyaW5nIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0
Ojp0aXRsZSgpIGNvbnN0Cit7CisgICAgTm9kZSogbm9kZSA9IHRoaXMtPm5vZGUoKTsKKyAgICBp
ZiAoIW5vZGUpCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKworICAgIGJvb2wgaXNJbnB1dFRh
ZyA9IG5vZGUtPmhhc1RhZ05hbWUoaW5wdXRUYWcpOworICAgIGlmIChpc0lucHV0VGFnKSB7Cisg
ICAgICAgIEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0ID0gc3RhdGljX2Nhc3Q8SFRNTElucHV0RWxl
bWVudCo+KG5vZGUpOworICAgICAgICBpZiAoaW5wdXQtPmlzVGV4dEJ1dHRvbigpKQorICAgICAg
ICAgICAgcmV0dXJuIGlucHV0LT52YWx1ZVdpdGhEZWZhdWx0KCk7CisgICAgfQorCisgICAgaWYg
KGlzSW5wdXRUYWcgfHwgQWNjZXNzaWJpbGl0eU9iamVjdDo6aXNBUklBSW5wdXQoYXJpYVJvbGVB
dHRyaWJ1dGUoKSkgfHwgaXNDb250cm9sKCkpIHsKKyAgICAgICAgSFRNTExhYmVsRWxlbWVudCog
bGFiZWwgPSBsYWJlbEZvckVsZW1lbnQodG9FbGVtZW50KG5vZGUpKTsKKyAgICAgICAgaWYgKGxh
YmVsICYmICFleHBvc2VzVGl0bGVVSUVsZW1lbnQoKSkKKyAgICAgICAgICAgIHJldHVybiBsYWJl
bC0+aW5uZXJUZXh0KCk7CisgICAgfQorCisgICAgLy8gSWYgdGhpcyBub2RlIGlzbid0IHJlbmRl
cmVkLCB0aGVyZSdzIG5vIGlubmVyIHRleHQgd2UgY2FuIGV4dHJhY3QgZnJvbSBhIHNlbGVjdCBl
bGVtZW50LgorICAgIGlmICghaXNBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0KCkgJiYgbm9kZS0+
aGFzVGFnTmFtZShzZWxlY3RUYWcpKQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisKKyAgICBz
d2l0Y2ggKHJvbGVWYWx1ZSgpKSB7CisgICAgY2FzZSBQb3BVcEJ1dHRvblJvbGU6CisgICAgY2Fz
ZSBCdXR0b25Sb2xlOgorICAgIGNhc2UgQ2hlY2tCb3hSb2xlOgorICAgIGNhc2UgTGlzdEJveE9w
dGlvblJvbGU6CisgICAgY2FzZSBNZW51QnV0dG9uUm9sZToKKyAgICBjYXNlIE1lbnVJdGVtUm9s
ZToKKyAgICBjYXNlIFJhZGlvQnV0dG9uUm9sZToKKyAgICBjYXNlIFRhYlJvbGU6CisgICAgICAg
IHJldHVybiB0ZXh0VW5kZXJFbGVtZW50KCk7CisgICAgZGVmYXVsdDoKKyAgICAgICAgYnJlYWs7
CisgICAgfQorCisgICAgaWYgKGlzSGVhZGluZygpIHx8IGlzTGluaygpKQorICAgICAgICByZXR1
cm4gdGV4dFVuZGVyRWxlbWVudCgpOworCisgICAgLy8gSWYgaXQncyBmb2N1c2FibGUgYnV0IGl0
J3Mgbm90IGNvbnRlbnQgZWRpdGFibGUgb3IgYSBrbm93biBjb250cm9sIHR5cGUsIHRoZW4gaXQg
d2lsbCBhcHBlYXIgdG8gICAgICAgICAgICAgICAgICAKKyAgICAvLyB0aGUgdXNlciBhcyBhIHNp
bmdsZSBhdG9taWMgb2JqZWN0LCBzbyB3ZSBzaG91bGQgdXNlIGl0cyB0ZXh0IGFzIHRoZSBkZWZh
dWx0IHRpdGxlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgIGlmIChpc0dlbmVy
aWNGb2N1c2FibGVFbGVtZW50KCkpCisgICAgICAgIHJldHVybiB0ZXh0VW5kZXJFbGVtZW50KCk7
CisKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKK1N0cmluZyBBY2Nlc3NpYmlsaXR5Tm9kZU9i
amVjdDo6dGV4dCgpIGNvbnN0Cit7CisgICAgLy8gSWYgdGhpcyBpcyBhIHVzZXIgZGVmaW5lZCBz
dGF0aWMgdGV4dCwgdXNlIHRoZSBhY2Nlc3NpYmxlIG5hbWUgY29tcHV0YXRpb24uICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICBpZiAoYXJpYVJvbGVBdHRyaWJ1dGUo
KSA9PSBTdGF0aWNUZXh0Um9sZSkKKyAgICAgICAgcmV0dXJuIGFyaWFBY2Nlc3NpYmlsaXR5RGVz
Y3JpcHRpb24oKTsKKworICAgIGlmICghaXNUZXh0Q29udHJvbCgpKQorICAgICAgICByZXR1cm4g
U3RyaW5nKCk7CisKKyAgICBOb2RlKiBub2RlID0gdGhpcy0+bm9kZSgpOworICAgIGlmICghbm9k
ZSkKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOworCisgICAgaWYgKGlzTmF0aXZlVGV4dENvbnRy
b2woKSkgeworICAgICAgICBpZiAobm9kZS0+aGFzVGFnTmFtZSh0ZXh0YXJlYVRhZykpCisgICAg
ICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SFRNTFRleHRBcmVhRWxlbWVudCo+KG5vZGUpLT52
YWx1ZSgpOworICAgICAgICBpZiAobm9kZS0+aGFzVGFnTmFtZShpbnB1dFRhZykpCisgICAgICAg
ICAgICByZXR1cm4gbm9kZS0+dG9JbnB1dEVsZW1lbnQoKS0+dmFsdWUoKTsKKyAgICB9CisKKyAg
ICBpZiAoIW5vZGUtPmlzRWxlbWVudE5vZGUoKSkKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOwor
CisgICAgcmV0dXJuIHRvRWxlbWVudChub2RlKS0+aW5uZXJUZXh0KCk7Cit9CisKK1N0cmluZyBB
Y2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6c3RyaW5nVmFsdWUoKSBjb25zdAoreworICAgIE5vZGUq
IG5vZGUgPSB0aGlzLT5ub2RlKCk7CisgICAgaWYgKCFub2RlKQorICAgICAgICByZXR1cm4gU3Ry
aW5nKCk7CisKKyAgICBpZiAoYXJpYVJvbGVBdHRyaWJ1dGUoKSA9PSBTdGF0aWNUZXh0Um9sZSkg
eworICAgICAgICBTdHJpbmcgc3RhdGljVGV4dCA9IHRleHQoKTsKKyAgICAgICAgaWYgKCFzdGF0
aWNUZXh0Lmxlbmd0aCgpKQorICAgICAgICAgICAgc3RhdGljVGV4dCA9IHRleHRVbmRlckVsZW1l
bnQoKTsKKyAgICAgICAgcmV0dXJuIHN0YXRpY1RleHQ7CisgICAgfQorCisgICAgaWYgKG5vZGUt
PmlzVGV4dE5vZGUoKSkKKyAgICAgICAgcmV0dXJuIHRleHRVbmRlckVsZW1lbnQoKTsKKworICAg
IGlmIChub2RlLT5oYXNUYWdOYW1lKHNlbGVjdFRhZykpIHsKKyAgICAgICAgSFRNTFNlbGVjdEVs
ZW1lbnQqIHNlbGVjdEVsZW1lbnQgPSB0b0hUTUxTZWxlY3RFbGVtZW50KG5vZGUpOworICAgICAg
ICBpbnQgc2VsZWN0ZWRJbmRleCA9IHNlbGVjdEVsZW1lbnQtPnNlbGVjdGVkSW5kZXgoKTsKKyAg
ICAgICAgY29uc3QgVmVjdG9yPEhUTUxFbGVtZW50Kj4gbGlzdEl0ZW1zID0gc2VsZWN0RWxlbWVu
dC0+bGlzdEl0ZW1zKCk7CisgICAgICAgIGlmIChzZWxlY3RlZEluZGV4ID49IDAgJiYgc3RhdGlj
X2Nhc3Q8c2l6ZV90PihzZWxlY3RlZEluZGV4KSA8IGxpc3RJdGVtcy5zaXplKCkpIHsKKyAgICAg
ICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYgb3ZlcnJpZGRlbkRlc2NyaXB0aW9uID0gbGlzdEl0
ZW1zW3NlbGVjdGVkSW5kZXhdLT5mYXN0R2V0QXR0cmlidXRlKGFyaWFfbGFiZWxBdHRyKTsKKyAg
ICAgICAgICAgIGlmICghb3ZlcnJpZGRlbkRlc2NyaXB0aW9uLmlzTnVsbCgpKQorICAgICAgICAg
ICAgICAgIHJldHVybiBvdmVycmlkZGVuRGVzY3JpcHRpb247CisgICAgICAgIH0KKyAgICAgICAg
aWYgKCFzZWxlY3RFbGVtZW50LT5tdWx0aXBsZSgpKQorICAgICAgICAgICAgcmV0dXJuIHNlbGVj
dEVsZW1lbnQtPnZhbHVlKCk7CisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICB9CisKKyAg
ICBpZiAoaXNUZXh0Q29udHJvbCgpKQorICAgICAgICByZXR1cm4gdGV4dCgpOworCisgICAgLy8g
RklYTUU6IFdlIG1pZ2h0IG5lZWQgdG8gaW1wbGVtZW50IGEgdmFsdWUgaGVyZSBmb3IgbW9yZSB0
eXBlcworICAgIC8vIEZJWE1FOiBJdCB3b3VsZCBiZSBiZXR0ZXIgbm90IHRvIGFkdmVydGlzZSBh
IHZhbHVlIGF0IGFsbCBmb3IgdGhlIHR5cGVzIGZvciB3aGljaCB3ZSBkb24ndCBpbXBsZW1lbnQg
b25lOworICAgIC8vIHRoaXMgd291bGQgcmVxdWlyZSBzdWJjbGFzc2luZyBvciBtYWtpbmcgYWNj
ZXNzaWJpbGl0eUF0dHJpYnV0ZU5hbWVzIGRvIHNvbWV0aGluZyBvdGhlciB0aGFuIHJldHVybiBh
CisgICAgLy8gc2luZ2xlIHN0YXRpYyBhcnJheS4KKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisK
Ky8vIFRoaXMgZnVuY3Rpb24gaW1wbGVtZW50cyB0aGUgQVJJQSBhY2Nlc3NpYmxlIG5hbWUgYXMg
ZGVzY3JpYmVkIGJ5IHRoZSBNb3ppbGxhICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIAorLy8gQVJJQSBJbXBsZW1lbnRlcidzIEd1aWRlLiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgCitzdGF0aWMgU3RyaW5nIGFjY2Vzc2libGVOYW1lRm9yTm9kZShOb2Rl
KiBub2RlKQoreworICAgIGlmIChub2RlLT5pc1RleHROb2RlKCkpCisgICAgICAgIHJldHVybiB0
b1RleHQobm9kZSktPmRhdGEoKTsKKworICAgIGlmIChub2RlLT5oYXNUYWdOYW1lKGlucHV0VGFn
KSkKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEhUTUxJbnB1dEVsZW1lbnQqPihub2RlKS0+
dmFsdWUoKTsKKworICAgIGlmIChub2RlLT5pc0hUTUxFbGVtZW50KCkpIHsKKyAgICAgICAgY29u
c3QgQXRvbWljU3RyaW5nJiBhbHQgPSB0b0hUTUxFbGVtZW50KG5vZGUpLT5nZXRBdHRyaWJ1dGUo
YWx0QXR0cik7CisgICAgICAgIGlmICghYWx0LmlzRW1wdHkoKSkKKyAgICAgICAgICAgIHJldHVy
biBhbHQ7CisgICAgfQorCisgICAgcmV0dXJuIFN0cmluZygpOworfQorCitTdHJpbmcgQWNjZXNz
aWJpbGl0eU5vZGVPYmplY3Q6OmFjY2Vzc2liaWxpdHlEZXNjcmlwdGlvbkZvckVsZW1lbnRzKFZl
Y3RvcjxFbGVtZW50Kj4gJmVsZW1lbnRzKSBjb25zdAoreworICAgIFN0cmluZ0J1aWxkZXIgYnVp
bGRlcjsKKyAgICB1bnNpZ25lZCBzaXplID0gZWxlbWVudHMuc2l6ZSgpOworICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKKyAgICAgICAgRWxlbWVudCogaWRFbGVtZW50
ID0gZWxlbWVudHNbaV07CisKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoYWNjZXNzaWJsZU5hbWVG
b3JOb2RlKGlkRWxlbWVudCkpOworICAgICAgICBmb3IgKE5vZGUqIG4gPSBpZEVsZW1lbnQtPmZp
cnN0Q2hpbGQoKTsgbjsgbiA9IG4tPnRyYXZlcnNlTmV4dE5vZGUoaWRFbGVtZW50KSkKKyAgICAg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKGFjY2Vzc2libGVOYW1lRm9yTm9kZShuKSk7CisKKyAgICAg
ICAgaWYgKGkgIT0gc2l6ZSAtIDEpCisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnICcpOwor
ICAgIH0KKyAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOworfQorCit2b2lkIEFjY2Vzc2li
aWxpdHlOb2RlT2JqZWN0OjplbGVtZW50c0Zyb21BdHRyaWJ1dGUoVmVjdG9yPEVsZW1lbnQqPiYg
ZWxlbWVudHMsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZSkgY29uc3QKK3sKKyAgICBO
b2RlKiBub2RlID0gdGhpcy0+bm9kZSgpOworICAgIGlmICghbm9kZSB8fCAhbm9kZS0+aXNFbGVt
ZW50Tm9kZSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBUcmVlU2NvcGUqIHNjb3BlID0gbm9k
ZS0+dHJlZVNjb3BlKCk7CisgICAgaWYgKCFzY29wZSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
U3RyaW5nIGlkTGlzdCA9IGdldEF0dHJpYnV0ZShhdHRyaWJ1dGUpLnN0cmluZygpOworICAgIGlm
IChpZExpc3QuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZExpc3QucmVwbGFj
ZSgnXG4nLCAnICcpOworICAgIFZlY3RvcjxTdHJpbmc+IGlkVmVjdG9yOworICAgIGlkTGlzdC5z
cGxpdCgnICcsIGlkVmVjdG9yKTsKKworICAgIHVuc2lnbmVkIHNpemUgPSBpZFZlY3Rvci5zaXpl
KCk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpemU7ICsraSkgeworICAgICAgICBB
dG9taWNTdHJpbmcgaWROYW1lKGlkVmVjdG9yW2ldKTsKKyAgICAgICAgRWxlbWVudCogaWRFbGVt
ZW50ID0gc2NvcGUtPmdldEVsZW1lbnRCeUlkKGlkTmFtZSk7CisgICAgICAgIGlmIChpZEVsZW1l
bnQpCisgICAgICAgICAgICBlbGVtZW50cy5hcHBlbmQoaWRFbGVtZW50KTsKKyAgICB9Cit9CisK
Kwordm9pZCBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6YXJpYUxhYmVsZWRCeUVsZW1lbnRzKFZl
Y3RvcjxFbGVtZW50Kj4mIGVsZW1lbnRzKSBjb25zdAoreworICAgIGVsZW1lbnRzRnJvbUF0dHJp
YnV0ZShlbGVtZW50cywgYXJpYV9sYWJlbGVkYnlBdHRyKTsKKyAgICBpZiAoIWVsZW1lbnRzLnNp
emUoKSkKKyAgICAgICAgZWxlbWVudHNGcm9tQXR0cmlidXRlKGVsZW1lbnRzLCBhcmlhX2xhYmVs
bGVkYnlBdHRyKTsKK30KKworCitTdHJpbmcgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmFyaWFM
YWJlbGVkQnlBdHRyaWJ1dGUoKSBjb25zdAoreworICAgIFZlY3RvcjxFbGVtZW50Kj4gZWxlbWVu
dHM7CisgICAgYXJpYUxhYmVsZWRCeUVsZW1lbnRzKGVsZW1lbnRzKTsKKworICAgIHJldHVybiBh
Y2Nlc3NpYmlsaXR5RGVzY3JpcHRpb25Gb3JFbGVtZW50cyhlbGVtZW50cyk7Cit9CisKIGJvb2wg
QWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmNhblNldEZvY3VzQXR0cmlidXRlKCkgY29uc3QKIHsK
ICAgICBOb2RlKiBub2RlID0gdGhpcy0+bm9kZSgpOworICAgIGlmICghbm9kZSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKGlzV2ViQXJlYSgpKQogICAgICAgICByZXR1cm4gdHJ1
ZTsKQEAgLTMzNiw3ICsxMzk1LDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6Y2Fu
U2V0Rm9jdXNBdHRyaWJ1dGUoKSBjb25zdAogICAgIGlmICghbm9kZSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCi0gICAgaWYgKG5vZGUtPmlzRWxlbWVudE5vZGUoKSAmJiAhc3RhdGljX2Nhc3Q8
RWxlbWVudCo+KG5vZGUpLT5pc0VuYWJsZWRGb3JtQ29udHJvbCgpKQorICAgIGlmIChub2RlLT5p
c0VsZW1lbnROb2RlKCkgJiYgIXRvRWxlbWVudChub2RlKS0+aXNFbmFibGVkRm9ybUNvbnRyb2wo
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgcmV0dXJuIG5vZGUtPnN1cHBvcnRzRm9j
dXMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eU5vZGVPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eU5vZGVPYmplY3QuaAppbmRleCBlMTNhZWQ2NDU0ODNjNzczZGJhYzc1YmYxMWQ1ZDFlNDUz
MzNkZmJiLi5kNjViMWUwYmFkNTM1MzAxNjFjYmRlYjJjZjFlZjdjOTU0ZGFmNDQzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9i
amVjdC5oCkBAIC02OCw4ICs2OCw3MSBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGJvb2wgY2Fu
dmFzSGFzRmFsbGJhY2tDb250ZW50KCkgY29uc3Q7CiAKKyAgICB2aXJ0dWFsIGJvb2wgaXNBbmNo
b3IoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNDb250cm9sKCkgY29uc3Q7CisgICAgdmly
dHVhbCBib29sIGlzRmllbGRzZXQoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNHcm91cCgp
IGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBpc0hlYWRpbmcoKSBjb25zdDsKKyAgICB2aXJ0dWFs
IGJvb2wgaXNIb3ZlcmVkKCkgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGlzSW1hZ2UoKSBjb25z
dDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNJbWFnZUJ1dHRvbigpIGNvbnN0OworICAgIHZpcnR1YWwg
Ym9vbCBpc0lucHV0SW1hZ2UoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNMaW5rKCkgY29u
c3Q7CisgICAgdmlydHVhbCBib29sIGlzTWVudSgpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBp
c01lbnVCYXIoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNNZW51QnV0dG9uKCkgY29uc3Q7
CisgICAgdmlydHVhbCBib29sIGlzTWVudUl0ZW0oKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wg
aXNNZW51UmVsYXRlZCgpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBpc011bHRpU2VsZWN0YWJs
ZSgpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBpc05hdGl2ZUNoZWNrYm94T3JSYWRpbygpIGNv
bnN0OworICAgIHZpcnR1YWwgYm9vbCBpc05hdGl2ZUltYWdlKCkgY29uc3Q7CisgICAgdmlydHVh
bCBib29sIGlzTmF0aXZlVGV4dENvbnRyb2woKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNQ
YXNzd29yZEZpZWxkKCkgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGlzUHJvZ3Jlc3NJbmRpY2F0
b3IoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNTZWFyY2hGaWVsZCgpIGNvbnN0OworICAg
IHZpcnR1YWwgYm9vbCBpc1NsaWRlcigpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBpc1dlYkFy
ZWEoKSBjb25zdDsKKworICAgIHZpcnR1YWwgYm9vbCBpc0NoZWNrZWQoKSBjb25zdDsKKyAgICB2
aXJ0dWFsIGJvb2wgaXNFbmFibGVkKCkgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGlzSW5kZXRl
cm1pbmF0ZSgpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBpc1ByZXNzZWQoKSBjb25zdDsKKyAg
ICB2aXJ0dWFsIGJvb2wgaXNSZWFkT25seSgpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBpc1Jl
cXVpcmVkKCkgY29uc3Q7CisKKyAgICB2b2lkIHNldE5vZGUoTm9kZSopOworICAgIHZpcnR1YWwg
Tm9kZSogbm9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fbm9kZTsgfQorICAgIHZpcnR1YWwgRG9jdW1l
bnQqIGRvY3VtZW50KCkgY29uc3Q7CisKICAgICB2aXJ0dWFsIGJvb2wgY2FuU2V0Rm9jdXNBdHRy
aWJ1dGUoKSBjb25zdDsKLSAgICAKKyAgICB2aXJ0dWFsIGludCBoZWFkaW5nTGV2ZWwoKSBjb25z
dDsKKworICAgIHZpcnR1YWwgU3RyaW5nIHZhbHVlRGVzY3JpcHRpb24oKSBjb25zdDsKKyAgICB2
aXJ0dWFsIGZsb2F0IHZhbHVlRm9yUmFuZ2UoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGZsb2F0IG1h
eFZhbHVlRm9yUmFuZ2UoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGZsb2F0IG1pblZhbHVlRm9yUmFu
Z2UoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGZsb2F0IHN0ZXBWYWx1ZUZvclJhbmdlKCkgY29uc3Q7
CisKKyAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIHNlbGVjdGVkUmFkaW9CdXR0b24o
KTsKKyAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIHNlbGVjdGVkVGFiSXRlbSgpOwor
ICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eUJ1dHRvblN0YXRlIGNoZWNrYm94T3JSYWRpb1ZhbHVl
KCkgY29uc3Q7CisKKyAgICB2aXJ0dWFsIHVuc2lnbmVkIGhpZXJhcmNoaWNhbExldmVsKCkgY29u
c3Q7CisgICAgdmlydHVhbCBTdHJpbmcgdGV4dFVuZGVyRWxlbWVudCgpIGNvbnN0OworICAgIHZp
cnR1YWwgU3RyaW5nIGFjY2Vzc2liaWxpdHlEZXNjcmlwdGlvbigpIGNvbnN0OworICAgIHZpcnR1
YWwgU3RyaW5nIGhlbHBUZXh0KCkgY29uc3Q7CisgICAgdmlydHVhbCBTdHJpbmcgdGl0bGUoKSBj
b25zdDsKKyAgICB2aXJ0dWFsIFN0cmluZyB0ZXh0KCkgY29uc3Q7CisgICAgdmlydHVhbCBTdHJp
bmcgc3RyaW5nVmFsdWUoKSBjb25zdDsKKyAgICB2aXJ0dWFsIFN0cmluZyBhcmlhTGFiZWxlZEJ5
QXR0cmlidXRlKCkgY29uc3Q7CisKKyAgICB2aXJ0dWFsIEVsZW1lbnQqIGFjdGlvbkVsZW1lbnQo
KSBjb25zdDsKKyAgICBFbGVtZW50KiBtb3VzZUJ1dHRvbkxpc3RlbmVyKCkgY29uc3Q7CisgICAg
dmlydHVhbCBFbGVtZW50KiBhbmNob3JFbGVtZW50KCkgY29uc3Q7CisgICAgQWNjZXNzaWJpbGl0
eU9iamVjdCogbWVudUZvck1lbnVCdXR0b24oKSBjb25zdDsKKyAgIAorICAgIHZpcnR1YWwgdm9p
ZCBjaGFuZ2VWYWx1ZUJ5UGVyY2VudChmbG9hdCBwZXJjZW50Q2hhbmdlKTsKKyAKICAgICB2aXJ0
dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIGZpcnN0Q2hpbGQoKSBjb25zdDsKICAgICB2aXJ0dWFs
IEFjY2Vzc2liaWxpdHlPYmplY3QqIGxhc3RDaGlsZCgpIGNvbnN0OwogICAgIHZpcnR1YWwgQWNj
ZXNzaWJpbGl0eU9iamVjdCogcHJldmlvdXNTaWJsaW5nKCkgY29uc3Q7CkBAIC03NywxNCArMTQw
LDEzIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudE9i
amVjdCgpIGNvbnN0OwogICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50T2Jq
ZWN0SWZFeGlzdHMoKSBjb25zdDsKIAotICAgIHZvaWQgc2V0Tm9kZShOb2RlKik7Ci0gICAgdmly
dHVhbCBOb2RlKiBub2RlKCkgY29uc3QgeyByZXR1cm4gbV9ub2RlOyB9Ci0gICAgdmlydHVhbCBE
b2N1bWVudCogZG9jdW1lbnQoKSBjb25zdDsKLQogICAgIHZpcnR1YWwgdm9pZCBkZXRhY2goKTsK
ICAgICB2aXJ0dWFsIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKCk7CiAgICAgdmlydHVhbCB2b2lkIHVw
ZGF0ZUFjY2Vzc2liaWxpdHlSb2xlKCk7CiAKKyAgICB2aXJ0dWFsIHZvaWQgaW5jcmVtZW50KCk7
CisgICAgdmlydHVhbCB2b2lkIGRlY3JlbWVudCgpOworCiAgICAgdmlydHVhbCBMYXlvdXRSZWN0
IGVsZW1lbnRSZWN0KCkgY29uc3Q7CiAKIHByb3RlY3RlZDoKQEAgLTk2LDExICsxNTgsMjYgQEAg
cHJvdGVjdGVkOgogCiAgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5Um9sZSBkZXRlcm1pbmVBY2Nl
c3NpYmlsaXR5Um9sZSgpOwogICAgIHZpcnR1YWwgdm9pZCBhZGRDaGlsZHJlbigpOworICAgIHZp
cnR1YWwgYm9vbCBjYW5IYXZlQ2hpbGRyZW4oKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgYWNj
ZXNzaWJpbGl0eUlzSWdub3JlZCgpIGNvbnN0OwogICAgIEFjY2Vzc2liaWxpdHlSb2xlIGFyaWFS
b2xlQXR0cmlidXRlKCkgY29uc3Q7CiAgICAgQWNjZXNzaWJpbGl0eVJvbGUgZGV0ZXJtaW5lQXJp
YVJvbGVBdHRyaWJ1dGUoKSBjb25zdDsKICAgICBBY2Nlc3NpYmlsaXR5Um9sZSByZW1hcEFyaWFS
b2xlRHVlVG9QYXJlbnQoQWNjZXNzaWJpbGl0eVJvbGUpIGNvbnN0OwogICAgIGJvb2wgaGFzQ29u
dGVudEVkaXRhYmxlQXR0cmlidXRlU2V0KCkgY29uc3Q7CisgICAgYm9vbCBpc0Rlc2NlbmRhbnRP
ZkJhcnJlblBhcmVudCgpIGNvbnN0OworICAgIHZvaWQgYWx0ZXJTbGlkZXJWYWx1ZShib29sIGlu
Y3JlYXNlKTsKKyAgICB2b2lkIGNoYW5nZVZhbHVlQnlTdGVwKGJvb2wgaW5jcmVhc2UpOworICAg
IGJvb2wgaXNBUklBUmFuZ2UoKSBjb25zdDsKKyAgICBib29sIGlzR2VuZXJpY0ZvY3VzYWJsZUVs
ZW1lbnQoKSBjb25zdDsKKyAgICBIVE1MTGFiZWxFbGVtZW50KiBsYWJlbEZvckVsZW1lbnQoRWxl
bWVudCopIGNvbnN0OworICAgIFN0cmluZyBhcmlhQWNjZXNzaWJpbGl0eURlc2NyaXB0aW9uKCkg
Y29uc3Q7CisgICAgdm9pZCBhcmlhTGFiZWxlZEJ5RWxlbWVudHMoVmVjdG9yPEVsZW1lbnQqPiYg
ZWxlbWVudHMpIGNvbnN0OworICAgIFN0cmluZyBhY2Nlc3NpYmlsaXR5RGVzY3JpcHRpb25Gb3JF
bGVtZW50cyhWZWN0b3I8RWxlbWVudCo+ICZlbGVtZW50cykgY29uc3Q7CisgICAgdm9pZCBlbGVt
ZW50c0Zyb21BdHRyaWJ1dGUoVmVjdG9yPEVsZW1lbnQqPiYgZWxlbWVudHMsIGNvbnN0IFF1YWxp
ZmllZE5hbWUmKSBjb25zdDsKKworICAgIEVsZW1lbnQqIG1lbnVFbGVtZW50Rm9yTWVudUJ1dHRv
bigpIGNvbnN0OworICAgIEVsZW1lbnQqIG1lbnVJdGVtRWxlbWVudEZvck1lbnUoKSBjb25zdDsK
KyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBtZW51QnV0dG9uRm9yTWVudSgpIGNvbnN0OwogCiBw
cml2YXRlOgogICAgIE5vZGUqIG1fbm9kZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCmluZGV4IDNjY2E4
ZTMwY2FiZDlhN2RkMjNhNTNlZjFlMzQwYTIwNWFmZWMzYjkuLmYwZmI1ZWE0MmViYzJiNjIzNjM3
MzY1ZDVlMjBhNWJhZGQzZmQzMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcApAQCAtNDc3LDY2ICs0
NzcsNyBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojpw
YXJlbnRPYmplY3QoKSBjb25zdAogICAgIAogICAgIHJldHVybiAwOwogfQotCi1ib29sIEFjY2Vz
c2liaWxpdHlSZW5kZXJPYmplY3Q6OmlzV2ViQXJlYSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHJv
bGVWYWx1ZSgpID09IFdlYkFyZWFSb2xlOwotfQotCi1ib29sIEFjY2Vzc2liaWxpdHlSZW5kZXJP
YmplY3Q6OmlzSW1hZ2VCdXR0b24oKSBjb25zdAotewotICAgIHJldHVybiBpc05hdGl2ZUltYWdl
KCkgJiYgcm9sZVZhbHVlKCkgPT0gQnV0dG9uUm9sZTsKLX0KLQotYm9vbCBBY2Nlc3NpYmlsaXR5
UmVuZGVyT2JqZWN0Ojppc0FuY2hvcigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuICFpc05hdGl2ZUlt
YWdlKCkgJiYgaXNMaW5rKCk7Ci19Ci0KLWJvb2wgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6
aXNOYXRpdmVUZXh0Q29udHJvbCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fcmVuZGVyZXItPmlz
VGV4dENvbnRyb2woKTsKLX0KICAgICAKLWJvb2wgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6
aXNTZWFyY2hGaWVsZCgpIGNvbnN0Ci17Ci0gICAgaWYgKCFub2RlKCkpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICAKLSAgICBIVE1MSW5wdXRFbGVtZW50KiBpbnB1dEVsZW1lbnQgPSBub2Rl
KCktPnRvSW5wdXRFbGVtZW50KCk7Ci0gICAgaWYgKCFpbnB1dEVsZW1lbnQpCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKLQotICAgIGlmIChpbnB1dEVsZW1lbnQtPmlzU2VhcmNoRmllbGQoKSkKLSAg
ICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICAvLyBTb21lIHdlYnNpdGVzIGRvbid0IGxhYmVsIHRo
ZWlyIHNlYXJjaCBmaWVsZHMgYXMgc3VjaC4gSG93ZXZlciwgdGhleSB3aWxsCi0gICAgLy8gdXNl
IHRoZSB3b3JkICJzZWFyY2giIGluIGVpdGhlciB0aGUgZm9ybSBvciBpbnB1dCB0eXBlLiBUaGlz
IHdvbid0IGNhdGNoIGV2ZXJ5IGNhc2UsCi0gICAgLy8gYnV0IGl0IHdpbGwgY2F0Y2ggZ29vZ2xl
LmNvbSBmb3IgZXhhbXBsZS4KLSAgICAKLSAgICAvLyBDaGVjayB0aGUgbm9kZSBuYW1lIG9mIHRo
ZSBpbnB1dCB0eXBlLCBzb21ldGltZXMgaXQncyAic2VhcmNoIi4KLSAgICBjb25zdCBBdG9taWNT
dHJpbmcmIG5hbWVBdHRyaWJ1dGUgPSBnZXRBdHRyaWJ1dGUobmFtZUF0dHIpOwotICAgIGlmIChu
YW1lQXR0cmlidXRlLmNvbnRhaW5zKCJzZWFyY2giLCBmYWxzZSkpCi0gICAgICAgIHJldHVybiB0
cnVlOwotICAgIAotICAgIC8vIENoZWNrIHRoZSBmb3JtIGFjdGlvbiBhbmQgdGhlIG5hbWUsIHdo
aWNoIHdpbGwgc29tZXRpbWVzIGJlICJzZWFyY2giLgotICAgIEhUTUxGb3JtRWxlbWVudCogZm9y
bSA9IGlucHV0RWxlbWVudC0+Zm9ybSgpOwotICAgIGlmIChmb3JtICYmIChmb3JtLT5uYW1lKCku
Y29udGFpbnMoInNlYXJjaCIsIGZhbHNlKSB8fCBmb3JtLT5hY3Rpb24oKS5jb250YWlucygic2Vh
cmNoIiwgZmFsc2UpKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgCi0gICAgcmV0dXJuIGZh
bHNlOwotfQotICAgIAotYm9vbCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojppc05hdGl2ZUlt
YWdlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9yZW5kZXJlci0+aXNCb3hNb2RlbE9iamVjdCgp
ICYmIHRvUmVuZGVyQm94TW9kZWxPYmplY3QobV9yZW5kZXJlciktPmlzSW1hZ2UoKTsKLX0gICAg
Ci0gICAgCi1ib29sIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmlzSW1hZ2UoKSBjb25zdAot
ewotICAgIHJldHVybiByb2xlVmFsdWUoKSA9PSBJbWFnZVJvbGU7Ci19Ci0KIGJvb2wgQWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdDo6aXNBdHRhY2htZW50KCkgY29uc3QKIHsKICAgICBSZW5kZXJC
b3hNb2RlbE9iamVjdCogcmVuZGVyZXIgPSByZW5kZXJCb3hNb2RlbE9iamVjdCgpOwpAQCAtNTQ4
LDIxICs0ODksNiBAQCBib29sIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmlzQXR0YWNobWVu
dCgpIGNvbnN0CiAgICAgcmV0dXJuIGlzV2lkZ2V0ICYmIGFyaWFSb2xlQXR0cmlidXRlKCkgPT0g
VW5rbm93blJvbGU7CiB9CiAKLWJvb2wgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aXNQYXNz
d29yZEZpZWxkKCkgY29uc3QKLXsKLSAgICBBU1NFUlQobV9yZW5kZXJlcik7Ci0gICAgaWYgKCFt
X3JlbmRlcmVyLT5ub2RlKCkgfHwgIW1fcmVuZGVyZXItPm5vZGUoKS0+aXNIVE1MRWxlbWVudCgp
KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKGFyaWFSb2xlQXR0cmlidXRlKCkgIT0g
VW5rbm93blJvbGUpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIEhUTUxJbnB1dEVsZW1l
bnQqIGlucHV0RWxlbWVudCA9IG1fcmVuZGVyZXItPm5vZGUoKS0+dG9JbnB1dEVsZW1lbnQoKTsK
LSAgICBpZiAoIWlucHV0RWxlbWVudCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0
dXJuIGlucHV0RWxlbWVudC0+aXNQYXNzd29yZEZpZWxkKCk7Ci19Ci0gICAgCiBib29sIEFjY2Vz
c2liaWxpdHlSZW5kZXJPYmplY3Q6OmlzRmlsZVVwbG9hZEJ1dHRvbigpIGNvbnN0CiB7CiAgICAg
aWYgKG1fcmVuZGVyZXIgJiYgbV9yZW5kZXJlci0+bm9kZSgpICYmIG1fcmVuZGVyZXItPm5vZGUo
KS0+aGFzVGFnTmFtZShpbnB1dFRhZykpIHsKQEAgLTU3MywxNDcgKzQ5OSw2IEBAIGJvb2wgQWNj
ZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aXNGaWxlVXBsb2FkQnV0dG9uKCkgY29uc3QKICAgICBy
ZXR1cm4gZmFsc2U7CiB9CiAgICAgCi1ib29sIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6Omlz
SW5wdXRJbWFnZSgpIGNvbnN0Ci17Ci0gICAgTm9kZSogZWxlbWVudE5vZGUgPSBub2RlKCk7Ci0g
ICAgaWYgKHJvbGVWYWx1ZSgpID09IEJ1dHRvblJvbGUgJiYgZWxlbWVudE5vZGUgJiYgZWxlbWVu
dE5vZGUtPmhhc1RhZ05hbWUoaW5wdXRUYWcpKSB7Ci0gICAgICAgIEhUTUxJbnB1dEVsZW1lbnQq
IGlucHV0ID0gc3RhdGljX2Nhc3Q8SFRNTElucHV0RWxlbWVudCo+KGVsZW1lbnROb2RlKTsKLSAg
ICAgICAgcmV0dXJuIGlucHV0LT5pc0ltYWdlQnV0dG9uKCk7Ci0gICAgfQotICAgIAotICAgIHJl
dHVybiBmYWxzZTsKLX0KLQotYm9vbCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojppc1Byb2dy
ZXNzSW5kaWNhdG9yKCkgY29uc3QKLXsKLSAgICByZXR1cm4gcm9sZVZhbHVlKCkgPT0gUHJvZ3Jl
c3NJbmRpY2F0b3JSb2xlOwotfQotCi1ib29sIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6Omlz
U2xpZGVyKCkgY29uc3QKLXsKLSAgICByZXR1cm4gcm9sZVZhbHVlKCkgPT0gU2xpZGVyUm9sZTsK
LX0KLQotYm9vbCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojppc01lbnVSZWxhdGVkKCkgY29u
c3QKLXsKLSAgICBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlID0gcm9sZVZhbHVlKCk7Ci0gICAgcmV0
dXJuIHJvbGUgPT0gTWVudVJvbGUgCi0gICAgICAgIHx8IHJvbGUgPT0gTWVudUJhclJvbGUKLSAg
ICAgICAgfHwgcm9sZSA9PSBNZW51QnV0dG9uUm9sZQotICAgICAgICB8fCByb2xlID09IE1lbnVJ
dGVtUm9sZTsKLX0gICAgCi0KLWJvb2wgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aXNNZW51
KCkgY29uc3QKLXsKLSAgICByZXR1cm4gcm9sZVZhbHVlKCkgPT0gTWVudVJvbGU7Ci19Ci0KLWJv
b2wgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aXNNZW51QmFyKCkgY29uc3QKLXsKLSAgICBy
ZXR1cm4gcm9sZVZhbHVlKCkgPT0gTWVudUJhclJvbGU7Ci19Ci0KLWJvb2wgQWNjZXNzaWJpbGl0
eVJlbmRlck9iamVjdDo6aXNNZW51QnV0dG9uKCkgY29uc3QKLXsKLSAgICByZXR1cm4gcm9sZVZh
bHVlKCkgPT0gTWVudUJ1dHRvblJvbGU7Ci19Ci0KLWJvb2wgQWNjZXNzaWJpbGl0eVJlbmRlck9i
amVjdDo6aXNNZW51SXRlbSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHJvbGVWYWx1ZSgpID09IE1l
bnVJdGVtUm9sZTsKLX0KLSAgICAgCi1ib29sIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6Omlz
UHJlc3NlZCgpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKG1fcmVuZGVyZXIpOwotICAgIGlmIChyb2xl
VmFsdWUoKSAhPSBCdXR0b25Sb2xlKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBOb2Rl
KiBub2RlID0gbV9yZW5kZXJlci0+bm9kZSgpOwotICAgIGlmICghbm9kZSkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotCi0gICAgLy8gSWYgdGhpcyBpcyBhbiBBUklBIGJ1dHRvbiwgY2hlY2sgdGhl
IGFyaWEtcHJlc3NlZCBhdHRyaWJ1dGUgcmF0aGVyIHRoYW4gbm9kZSgpLT5hY3RpdmUoKQotICAg
IGlmIChhcmlhUm9sZUF0dHJpYnV0ZSgpID09IEJ1dHRvblJvbGUpIHsKLSAgICAgICAgaWYgKGVx
dWFsSWdub3JpbmdDYXNlKGdldEF0dHJpYnV0ZShhcmlhX3ByZXNzZWRBdHRyKSwgInRydWUiKSkK
LSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQot
Ci0gICAgcmV0dXJuIG5vZGUtPmFjdGl2ZSgpOwotfQotCi1ib29sIEFjY2Vzc2liaWxpdHlSZW5k
ZXJPYmplY3Q6OmlzSW5kZXRlcm1pbmF0ZSgpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKG1fcmVuZGVy
ZXIpOwotICAgIGlmICghbV9yZW5kZXJlci0+bm9kZSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0KLSAgICBIVE1MSW5wdXRFbGVtZW50KiBpbnB1dEVsZW1lbnQgPSBtX3JlbmRlcmVyLT5ub2Rl
KCktPnRvSW5wdXRFbGVtZW50KCk7Ci0gICAgaWYgKCFpbnB1dEVsZW1lbnQpCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKLQotICAgIHJldHVybiBpbnB1dEVsZW1lbnQtPmlzSW5kZXRlcm1pbmF0ZSgp
OwotfQotCi1ib29sIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmlzTmF0aXZlQ2hlY2tib3hP
clJhZGlvKCkgY29uc3QKLXsKLSAgICBOb2RlKiBlbGVtZW50Tm9kZSA9IG5vZGUoKTsKLSAgICBp
ZiAoZWxlbWVudE5vZGUpIHsKLSAgICAgICAgSFRNTElucHV0RWxlbWVudCogaW5wdXQgPSBlbGVt
ZW50Tm9kZS0+dG9JbnB1dEVsZW1lbnQoKTsKLSAgICAgICAgaWYgKGlucHV0KQotICAgICAgICAg
ICAgcmV0dXJuIGlucHV0LT5pc0NoZWNrYm94KCkgfHwgaW5wdXQtPmlzUmFkaW9CdXR0b24oKTsK
LSAgICB9Ci0gICAgCi0gICAgcmV0dXJuIGZhbHNlOwotfQotICAgIAotYm9vbCBBY2Nlc3NpYmls
aXR5UmVuZGVyT2JqZWN0Ojppc0NoZWNrZWQoKSBjb25zdAotewotICAgIEFTU0VSVChtX3JlbmRl
cmVyKTsKLSAgICAKLSAgICBOb2RlKiBub2RlID0gdGhpcy0+bm9kZSgpOwotICAgIGlmICghbm9k
ZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgLy8gRmlyc3QgdGVzdCBmb3IgbmF0aXZl
IGNoZWNrZWRuZXNzIHNlbWFudGljcwotICAgIEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0RWxlbWVu
dCA9IG5vZGUtPnRvSW5wdXRFbGVtZW50KCk7Ci0gICAgaWYgKGlucHV0RWxlbWVudCkKLSAgICAg
ICAgcmV0dXJuIGlucHV0RWxlbWVudC0+c2hvdWxkQXBwZWFyQ2hlY2tlZCgpOwotCi0gICAgLy8g
RWxzZSwgaWYgdGhpcyBpcyBhbiBBUklBIGNoZWNrYm94IG9yIHJhZGlvLCByZXNwZWN0IHRoZSBh
cmlhLWNoZWNrZWQgYXR0cmlidXRlCi0gICAgQWNjZXNzaWJpbGl0eVJvbGUgYXJpYVJvbGUgPSBh
cmlhUm9sZUF0dHJpYnV0ZSgpOwotICAgIGlmIChhcmlhUm9sZSA9PSBSYWRpb0J1dHRvblJvbGUg
fHwgYXJpYVJvbGUgPT0gQ2hlY2tCb3hSb2xlKSB7Ci0gICAgICAgIGlmIChlcXVhbElnbm9yaW5n
Q2FzZShnZXRBdHRyaWJ1dGUoYXJpYV9jaGVja2VkQXR0ciksICJ0cnVlIikpCi0gICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIC8vIE90
aGVyd2lzZSBpdCdzIG5vdCBjaGVja2VkCi0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1ib29sIEFj
Y2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmlzSG92ZXJlZCgpIGNvbnN0Ci17Ci0gICAgQVNTRVJU
KG1fcmVuZGVyZXIpOwotICAgIHJldHVybiBtX3JlbmRlcmVyLT5ub2RlKCkgJiYgbV9yZW5kZXJl
ci0+bm9kZSgpLT5ob3ZlcmVkKCk7Ci19Ci0KLWJvb2wgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVj
dDo6aXNNdWx0aVNlbGVjdGFibGUoKSBjb25zdAotewotICAgIEFTU0VSVChtX3JlbmRlcmVyKTsK
LSAgICAKLSAgICBjb25zdCBBdG9taWNTdHJpbmcmIGFyaWFNdWx0aVNlbGVjdGFibGUgPSBnZXRB
dHRyaWJ1dGUoYXJpYV9tdWx0aXNlbGVjdGFibGVBdHRyKTsKLSAgICBpZiAoZXF1YWxJZ25vcmlu
Z0Nhc2UoYXJpYU11bHRpU2VsZWN0YWJsZSwgInRydWUiKSkKLSAgICAgICAgcmV0dXJuIHRydWU7
Ci0gICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGFyaWFNdWx0aVNlbGVjdGFibGUsICJmYWxzZSIp
KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgCi0gICAgaWYgKCFtX3JlbmRlcmVyLT5pc0Jv
eE1vZGVsT2JqZWN0KCkgfHwgIXRvUmVuZGVyQm94TW9kZWxPYmplY3QobV9yZW5kZXJlciktPmlz
TGlzdEJveCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIG1fcmVuZGVyZXIt
Pm5vZGUoKSAmJiB0b0hUTUxTZWxlY3RFbGVtZW50KG1fcmVuZGVyZXItPm5vZGUoKSktPm11bHRp
cGxlKCk7Ci19Ci0KIGJvb2wgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aXNSZWFkT25seSgp
IGNvbnN0CiB7CiAgICAgQVNTRVJUKG1fcmVuZGVyZXIpOwpAQCAtNzMwLDE1ICs1MTUsNyBAQCBi
b29sIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmlzUmVhZE9ubHkoKSBjb25zdAogICAgICAg
ICByZXR1cm4gIWRvY3VtZW50LT5yZW5kZXJlcklzRWRpdGFibGUoKTsKICAgICB9CiAKLSAgICBp
ZiAobV9yZW5kZXJlci0+aXNCb3hNb2RlbE9iamVjdCgpKSB7Ci0gICAgICAgIFJlbmRlckJveE1v
ZGVsT2JqZWN0KiBib3ggPSB0b1JlbmRlckJveE1vZGVsT2JqZWN0KG1fcmVuZGVyZXIpOwotICAg
ICAgICBpZiAoYm94LT5pc1RleHRGaWVsZCgpKQotICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PEhUTUxJbnB1dEVsZW1lbnQqPihib3gtPm5vZGUoKSktPnJlYWRPbmx5KCk7Ci0gICAgICAg
IGlmIChib3gtPmlzVGV4dEFyZWEoKSkKLSAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxI
VE1MVGV4dEFyZWFFbGVtZW50Kj4oYm94LT5ub2RlKCkpLT5yZWFkT25seSgpOwotICAgIH0KLQot
ICAgIHJldHVybiAhbV9yZW5kZXJlci0+bm9kZSgpIHx8ICFtX3JlbmRlcmVyLT5ub2RlKCktPnJl
bmRlcmVySXNFZGl0YWJsZSgpOworICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6
aXNSZWFkT25seSgpOwogfQogCiBib29sIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmlzT2Zm
U2NyZWVuKCkgY29uc3QKQEAgLTc1MSwxMDcgKzUyOCw2IEBAIGJvb2wgQWNjZXNzaWJpbGl0eVJl
bmRlck9iamVjdDo6aXNPZmZTY3JlZW4oKSBjb25zdAogICAgIHJldHVybiB2aWV3UmVjdC5pc0Vt
cHR5KCk7CiB9CiAKLWludCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpoZWFkaW5nTGV2ZWwo
KSBjb25zdAotewotICAgIC8vIGhlYWRpbmdzIGNhbiBiZSBpbiBibG9jayBmbG93IGFuZCBub24t
YmxvY2sgZmxvdwotICAgIE5vZGUqIGVsZW1lbnQgPSBub2RlKCk7Ci0gICAgaWYgKCFlbGVtZW50
KQotICAgICAgICByZXR1cm4gMDsKLQotICAgIGlmIChhcmlhUm9sZUF0dHJpYnV0ZSgpID09IEhl
YWRpbmdSb2xlKQotICAgICAgICByZXR1cm4gZ2V0QXR0cmlidXRlKGFyaWFfbGV2ZWxBdHRyKS50
b0ludCgpOwotCi0gICAgaWYgKGVsZW1lbnQtPmhhc1RhZ05hbWUoaDFUYWcpKQotICAgICAgICBy
ZXR1cm4gMTsKLSAgICAKLSAgICBpZiAoZWxlbWVudC0+aGFzVGFnTmFtZShoMlRhZykpCi0gICAg
ICAgIHJldHVybiAyOwotICAgIAotICAgIGlmIChlbGVtZW50LT5oYXNUYWdOYW1lKGgzVGFnKSkK
LSAgICAgICAgcmV0dXJuIDM7Ci0gICAgCi0gICAgaWYgKGVsZW1lbnQtPmhhc1RhZ05hbWUoaDRU
YWcpKQotICAgICAgICByZXR1cm4gNDsKLSAgICAKLSAgICBpZiAoZWxlbWVudC0+aGFzVGFnTmFt
ZShoNVRhZykpCi0gICAgICAgIHJldHVybiA1OwotICAgIAotICAgIGlmIChlbGVtZW50LT5oYXNU
YWdOYW1lKGg2VGFnKSkKLSAgICAgICAgcmV0dXJuIDY7Ci0gICAgCi0gICAgcmV0dXJuIDA7Ci19
Ci0KLWJvb2wgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aXNIZWFkaW5nKCkgY29uc3QKLXsK
LSAgICByZXR1cm4gcm9sZVZhbHVlKCkgPT0gSGVhZGluZ1JvbGU7Ci19Ci0gICAgCi1ib29sIEFj
Y2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmlzTGluaygpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHJv
bGVWYWx1ZSgpID09IFdlYkNvcmVMaW5rUm9sZTsKLX0gICAgCi0gICAgCi1ib29sIEFjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3Q6OmlzQ29udHJvbCgpIGNvbnN0Ci17Ci0gICAgaWYgKCFtX3JlbmRl
cmVyKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgCi0gICAgTm9kZSogbm9kZSA9IG1fcmVu
ZGVyZXItPm5vZGUoKTsKLSAgICByZXR1cm4gbm9kZSAmJiAoKG5vZGUtPmlzRWxlbWVudE5vZGUo
KSAmJiBzdGF0aWNfY2FzdDxFbGVtZW50Kj4obm9kZSktPmlzRm9ybUNvbnRyb2xFbGVtZW50KCkp
Ci0gICAgICAgICAgICAgICAgICAgIHx8IEFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzQVJJQUNvbnRy
b2woYXJpYVJvbGVBdHRyaWJ1dGUoKSkpOwotfQotCi1ib29sIEFjY2Vzc2liaWxpdHlSZW5kZXJP
YmplY3Q6OmlzRmllbGRzZXQoKSBjb25zdAotewotICAgIFJlbmRlckJveE1vZGVsT2JqZWN0KiBy
ZW5kZXJlciA9IHJlbmRlckJveE1vZGVsT2JqZWN0KCk7Ci0gICAgaWYgKCFyZW5kZXJlcikKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiByZW5kZXJlci0+aXNGaWVsZHNldCgpOwot
fQotICAKLWJvb2wgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aXNHcm91cCgpIGNvbnN0Ci17
Ci0gICAgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEdyb3VwUm9sZTsKLX0KLQotQWNjZXNzaWJpbGl0
eU9iamVjdCogQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6c2VsZWN0ZWRSYWRpb0J1dHRvbigp
Ci17Ci0gICAgaWYgKCFpc1JhZGlvR3JvdXAoKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgCi0g
ICAgQWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGNoaWxk
cmVuID0gdGhpcy0+Y2hpbGRyZW4oKTsKLQotICAgIC8vIEZpbmQgdGhlIGNoaWxkIHJhZGlvIGJ1
dHRvbiB0aGF0IGlzIHNlbGVjdGVkIChpZS4gdGhlIGludFZhbHVlID09IDEpLgotICAgIHNpemVf
dCBzaXplID0gY2hpbGRyZW4uc2l6ZSgpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6
ZTsgKytpKSB7Ci0gICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iamVjdCA9IGNoaWxkcmVu
W2ldLmdldCgpOwotICAgICAgICBpZiAob2JqZWN0LT5yb2xlVmFsdWUoKSA9PSBSYWRpb0J1dHRv
blJvbGUgJiYgb2JqZWN0LT5jaGVja2JveE9yUmFkaW9WYWx1ZSgpID09IEJ1dHRvblN0YXRlT24p
Ci0gICAgICAgICAgICByZXR1cm4gb2JqZWN0OwotICAgIH0KLSAgICByZXR1cm4gMDsKLX0KLQot
QWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6c2VsZWN0ZWRU
YWJJdGVtKCkKLXsKLSAgICBpZiAoIWlzVGFiTGlzdCgpKQotICAgICAgICByZXR1cm4gMDsKLSAg
ICAKLSAgICAvLyBGaW5kIHRoZSBjaGlsZCB0YWIgaXRlbSB0aGF0IGlzIHNlbGVjdGVkIChpZS4g
dGhlIGludFZhbHVlID09IDEpLgotICAgIEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxp
dHlDaGlsZHJlblZlY3RvciB0YWJzOwotICAgIHRhYkNoaWxkcmVuKHRhYnMpOwotICAgIAotICAg
IEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBjaGlsZHJl
biA9IHRoaXMtPmNoaWxkcmVuKCk7Ci0gICAgCi0gICAgc2l6ZV90IHNpemUgPSB0YWJzLnNpemUo
KTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkgewotICAgICAgICBBY2Nl
c3NpYmlsaXR5T2JqZWN0KiBvYmplY3QgPSBjaGlsZHJlbltpXS5nZXQoKTsKLSAgICAgICAgaWYg
KG9iamVjdC0+aXNUYWJJdGVtKCkgJiYgb2JqZWN0LT5pc0NoZWNrZWQoKSkKLSAgICAgICAgICAg
IHJldHVybiBvYmplY3Q7Ci0gICAgfQotICAgIHJldHVybiAwOwotfQotCiBFbGVtZW50KiBBY2Nl
c3NpYmlsaXR5UmVuZGVyT2JqZWN0OjphbmNob3JFbGVtZW50KCkgY29uc3QKIHsKICAgICBpZiAo
IW1fcmVuZGVyZXIpCkBAIC04ODQsMTQ1ICs1NjAsNiBAQCBFbGVtZW50KiBBY2Nlc3NpYmlsaXR5
UmVuZGVyT2JqZWN0OjphbmNob3JFbGVtZW50KCkgY29uc3QKICAgICByZXR1cm4gMDsKIH0KIAot
RWxlbWVudCogQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6YWN0aW9uRWxlbWVudCgpIGNvbnN0
Ci17Ci0gICAgaWYgKCFtX3JlbmRlcmVyKQotICAgICAgICByZXR1cm4gMDsKLSAgICAKLSAgICBO
b2RlKiBub2RlID0gbV9yZW5kZXJlci0+bm9kZSgpOwotICAgIGlmIChub2RlKSB7Ci0gICAgICAg
IGlmIChub2RlLT5oYXNUYWdOYW1lKGlucHV0VGFnKSkgewotICAgICAgICAgICAgSFRNTElucHV0
RWxlbWVudCogaW5wdXQgPSBzdGF0aWNfY2FzdDxIVE1MSW5wdXRFbGVtZW50Kj4obm9kZSk7Ci0g
ICAgICAgICAgICBpZiAoIWlucHV0LT5kaXNhYmxlZCgpICYmIChpc0NoZWNrYm94T3JSYWRpbygp
IHx8IGlucHV0LT5pc1RleHRCdXR0b24oKSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGlucHV0
OwotICAgICAgICB9IGVsc2UgaWYgKG5vZGUtPmhhc1RhZ05hbWUoYnV0dG9uVGFnKSkKLSAgICAg
ICAgICAgIHJldHVybiB0b0VsZW1lbnQobm9kZSk7Ci0gICAgfQotCi0gICAgaWYgKGlzRmlsZVVw
bG9hZEJ1dHRvbigpKQotICAgICAgICByZXR1cm4gdG9FbGVtZW50KG1fcmVuZGVyZXItPm5vZGUo
KSk7Ci0gICAgICAgICAgICAKLSAgICBpZiAoQWNjZXNzaWJpbGl0eU9iamVjdDo6aXNBUklBSW5w
dXQoYXJpYVJvbGVBdHRyaWJ1dGUoKSkpCi0gICAgICAgIHJldHVybiB0b0VsZW1lbnQobV9yZW5k
ZXJlci0+bm9kZSgpKTsKLQotICAgIGlmIChpc0ltYWdlQnV0dG9uKCkpCi0gICAgICAgIHJldHVy
biB0b0VsZW1lbnQobV9yZW5kZXJlci0+bm9kZSgpKTsKLSAgICAKLSAgICBpZiAobV9yZW5kZXJl
ci0+aXNCb3hNb2RlbE9iamVjdCgpICYmIHRvUmVuZGVyQm94TW9kZWxPYmplY3QobV9yZW5kZXJl
ciktPmlzTWVudUxpc3QoKSkKLSAgICAgICAgcmV0dXJuIHRvRWxlbWVudChtX3JlbmRlcmVyLT5u
b2RlKCkpOwotCi0gICAgc3dpdGNoIChyb2xlVmFsdWUoKSkgewotICAgIGNhc2UgQnV0dG9uUm9s
ZToKLSAgICBjYXNlIFBvcFVwQnV0dG9uUm9sZToKLSAgICBjYXNlIFRhYlJvbGU6Ci0gICAgY2Fz
ZSBNZW51SXRlbVJvbGU6Ci0gICAgY2FzZSBMaXN0SXRlbVJvbGU6Ci0gICAgICAgIHJldHVybiB0
b0VsZW1lbnQobV9yZW5kZXJlci0+bm9kZSgpKTsgCi0gICAgZGVmYXVsdDoKLSAgICAgICAgYnJl
YWs7Ci0gICAgfQotICAgIAotICAgIEVsZW1lbnQqIGVsdCA9IGFuY2hvckVsZW1lbnQoKTsKLSAg
ICBpZiAoIWVsdCkKLSAgICAgICAgZWx0ID0gbW91c2VCdXR0b25MaXN0ZW5lcigpOwotICAgIHJl
dHVybiBlbHQ7Ci19Ci0KLUVsZW1lbnQqIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6Om1vdXNl
QnV0dG9uTGlzdGVuZXIoKSBjb25zdAotewotICAgIE5vZGUqIG5vZGUgPSBtX3JlbmRlcmVyLT5u
b2RlKCk7Ci0gICAgaWYgKCFub2RlKQotICAgICAgICByZXR1cm4gMDsKLSAgICAKLSAgICAvLyBj
aGVjayBpZiBvdXIgcGFyZW50IGlzIGEgbW91c2UgYnV0dG9uIGxpc3RlbmVyCi0gICAgd2hpbGUg
KG5vZGUgJiYgIW5vZGUtPmlzRWxlbWVudE5vZGUoKSkKLSAgICAgICAgbm9kZSA9IG5vZGUtPnBh
cmVudE5vZGUoKTsKLQotICAgIGlmICghbm9kZSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICAv
LyBGSVhNRTogRG8gdGhlIGNvbnRpbnVhdGlvbiBzZWFyY2ggbGlrZSBhbmNob3JFbGVtZW50IGRv
ZXMKLSAgICBmb3IgKEVsZW1lbnQqIGVsZW1lbnQgPSBzdGF0aWNfY2FzdDxFbGVtZW50Kj4obm9k
ZSk7IGVsZW1lbnQ7IGVsZW1lbnQgPSBlbGVtZW50LT5wYXJlbnRFbGVtZW50KCkpIHsKLSAgICAg
ICAgaWYgKGVsZW1lbnQtPmdldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmNs
aWNrRXZlbnQpIHx8IGVsZW1lbnQtPmdldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1l
cygpLm1vdXNlZG93bkV2ZW50KSB8fCBlbGVtZW50LT5nZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVy
KGV2ZW50TmFtZXMoKS5tb3VzZXVwRXZlbnQpKQotICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQ7
Ci0gICAgfQotCi0gICAgcmV0dXJuIDA7Ci19Ci0KLXZvaWQgQWNjZXNzaWJpbGl0eVJlbmRlck9i
amVjdDo6YWx0ZXJTbGlkZXJWYWx1ZShib29sIGluY3JlYXNlKQotewotICAgIGlmIChyb2xlVmFs
dWUoKSAhPSBTbGlkZXJSb2xlKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoIWdldEF0dHJp
YnV0ZShzdGVwQXR0cikuaXNFbXB0eSgpKQotICAgICAgICBjaGFuZ2VWYWx1ZUJ5U3RlcChpbmNy
ZWFzZSk7Ci0gICAgZWxzZQotICAgICAgICBjaGFuZ2VWYWx1ZUJ5UGVyY2VudChpbmNyZWFzZSA/
IDUgOiAtNSk7Ci19Ci0gICAgCi12b2lkIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmluY3Jl
bWVudCgpCi17Ci0gICAgYWx0ZXJTbGlkZXJWYWx1ZSh0cnVlKTsKLX0KLQotdm9pZCBBY2Nlc3Np
YmlsaXR5UmVuZGVyT2JqZWN0OjpkZWNyZW1lbnQoKQotewotICAgIGFsdGVyU2xpZGVyVmFsdWUo
ZmFsc2UpOwotfQotCi1zdGF0aWMgRWxlbWVudCogc2libGluZ1dpdGhBcmlhUm9sZShTdHJpbmcg
cm9sZSwgTm9kZSogbm9kZSkKLXsKLSAgICBOb2RlKiBzaWJsaW5nID0gbm9kZS0+cGFyZW50Tm9k
ZSgpLT5maXJzdENoaWxkKCk7Ci0gICAgd2hpbGUgKHNpYmxpbmcpIHsKLSAgICAgICAgaWYgKHNp
YmxpbmctPmlzRWxlbWVudE5vZGUoKSkgewotICAgICAgICAgICAgY29uc3QgQXRvbWljU3RyaW5n
JiBzaWJsaW5nQXJpYVJvbGUgPSBzdGF0aWNfY2FzdDxFbGVtZW50Kj4oc2libGluZyktPmdldEF0
dHJpYnV0ZShyb2xlQXR0cik7Ci0gICAgICAgICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2Uoc2li
bGluZ0FyaWFSb2xlLCByb2xlKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
RWxlbWVudCo+KHNpYmxpbmcpOwotICAgICAgICB9Ci0gICAgICAgIHNpYmxpbmcgPSBzaWJsaW5n
LT5uZXh0U2libGluZygpOwotICAgIH0KLSAgICAKLSAgICByZXR1cm4gMDsKLX0KLQotRWxlbWVu
dCogQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6bWVudUVsZW1lbnRGb3JNZW51QnV0dG9uKCkg
Y29uc3QKLXsKLSAgICBpZiAoYXJpYVJvbGVBdHRyaWJ1dGUoKSAhPSBNZW51QnV0dG9uUm9sZSkK
LSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICByZXR1cm4gc2libGluZ1dpdGhBcmlhUm9sZSgibWVu
dSIsIHJlbmRlcmVyKCktPm5vZGUoKSk7Ci19Ci0KLUFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vz
c2liaWxpdHlSZW5kZXJPYmplY3Q6Om1lbnVGb3JNZW51QnV0dG9uKCkgY29uc3QKLXsKLSAgICBF
bGVtZW50KiBtZW51ID0gbWVudUVsZW1lbnRGb3JNZW51QnV0dG9uKCk7Ci0gICAgaWYgKG1lbnUg
JiYgbWVudS0+cmVuZGVyZXIoKSkKLSAgICAgICAgcmV0dXJuIGF4T2JqZWN0Q2FjaGUoKS0+Z2V0
T3JDcmVhdGUobWVudSk7Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLUVsZW1lbnQqIEFjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3Q6Om1lbnVJdGVtRWxlbWVudEZvck1lbnUoKSBjb25zdAotewotICAgIGlm
IChhcmlhUm9sZUF0dHJpYnV0ZSgpICE9IE1lbnVSb2xlKQotICAgICAgICByZXR1cm4gMDsKLSAg
ICAKLSAgICByZXR1cm4gc2libGluZ1dpdGhBcmlhUm9sZSgibWVudWl0ZW0iLCByZW5kZXJlcigp
LT5ub2RlKCkpOyAgICAKLX0KLQotQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eVJl
bmRlck9iamVjdDo6bWVudUJ1dHRvbkZvck1lbnUoKSBjb25zdAotewotICAgIEVsZW1lbnQqIG1l
bnVJdGVtID0gbWVudUl0ZW1FbGVtZW50Rm9yTWVudSgpOwotCi0gICAgaWYgKG1lbnVJdGVtICYm
IG1lbnVJdGVtLT5yZW5kZXJlcigpKSB7Ci0gICAgICAgIC8vIEFSSUEganVzdCBoYXMgZ2VuZXJp
YyBtZW51IGl0ZW1zLiAgQXBwS2l0IG5lZWRzIHRvIGtub3cgaWYgdGhpcyBpcyBhIHRvcCBsZXZl
bCBpdGVtcyBsaWtlIE1lbnVCYXJCdXR0b24gb3IgTWVudUJhckl0ZW0KLSAgICAgICAgQWNjZXNz
aWJpbGl0eU9iamVjdCogbWVudUl0ZW1BWCA9IGF4T2JqZWN0Q2FjaGUoKS0+Z2V0T3JDcmVhdGUo
bWVudUl0ZW0pOwotICAgICAgICBpZiAobWVudUl0ZW1BWC0+aXNNZW51QnV0dG9uKCkpCi0gICAg
ICAgICAgICByZXR1cm4gbWVudUl0ZW1BWDsKLSAgICB9Ci0gICAgcmV0dXJuIDA7Ci19Ci0KIFN0
cmluZyBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpoZWxwVGV4dCgpIGNvbnN0CiB7CiAgICAg
aWYgKCFtX3JlbmRlcmVyKQpAQCAtMTA2MSw0MCArNTk4LDYgQEAgU3RyaW5nIEFjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3Q6OmhlbHBUZXh0KCkgY29uc3QKICAgICAKICAgICByZXR1cm4gU3RyaW5n
KCk7CiB9Ci0gICAgCi11bnNpZ25lZCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpoaWVyYXJj
aGljYWxMZXZlbCgpIGNvbnN0Ci17Ci0gICAgaWYgKCFtX3JlbmRlcmVyKQotICAgICAgICByZXR1
cm4gMDsKLQotICAgIE5vZGUqIG5vZGUgPSBtX3JlbmRlcmVyLT5ub2RlKCk7Ci0gICAgaWYgKCFu
b2RlIHx8ICFub2RlLT5pc0VsZW1lbnROb2RlKCkpCi0gICAgICAgIHJldHVybiAwOwotICAgIEVs
ZW1lbnQqIGVsZW1lbnQgPSBzdGF0aWNfY2FzdDxFbGVtZW50Kj4obm9kZSk7Ci0gICAgU3RyaW5n
IGFyaWFMZXZlbCA9IGVsZW1lbnQtPmdldEF0dHJpYnV0ZShhcmlhX2xldmVsQXR0cik7Ci0gICAg
aWYgKCFhcmlhTGV2ZWwuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gYXJpYUxldmVsLnRvSW50
KCk7Ci0gICAgCi0gICAgLy8gT25seSB0cmVlIGl0ZW0gd2lsbCBjYWxjdWxhdGUgaXRzIGxldmVs
IHRocm91Z2ggdGhlIERPTSBjdXJyZW50bHkuCi0gICAgaWYgKHJvbGVWYWx1ZSgpICE9IFRyZWVJ
dGVtUm9sZSkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgCi0gICAgLy8gSGllcmFyY2h5IGxldmVs
aW5nIHN0YXJ0cyBhdCAwLgotICAgIC8vIFdlIG1lYXN1cmUgdHJlZSBoaWVyYXJjaHkgYnkgdGhl
IG51bWJlciBvZiBncm91cHMgdGhhdCB0aGUgaXRlbSBpcyB3aXRoaW4uCi0gICAgdW5zaWduZWQg
bGV2ZWwgPSAwOwotICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudCA9IHBhcmVudE9iamVj
dCgpOwotICAgIHdoaWxlIChwYXJlbnQpIHsKLSAgICAgICAgQWNjZXNzaWJpbGl0eVJvbGUgcGFy
ZW50Um9sZSA9IHBhcmVudC0+cm9sZVZhbHVlKCk7Ci0gICAgICAgIGlmIChwYXJlbnRSb2xlID09
IEdyb3VwUm9sZSkKLSAgICAgICAgICAgIGxldmVsKys7Ci0gICAgICAgIGVsc2UgaWYgKHBhcmVu
dFJvbGUgPT0gVHJlZVJvbGUpCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgCi0gICAgICAg
IHBhcmVudCA9IHBhcmVudC0+cGFyZW50T2JqZWN0KCk7Ci0gICAgfQotICAgIAotICAgIHJldHVy
biBsZXZlbDsKLX0KIAogc3RhdGljIFRleHRJdGVyYXRvckJlaGF2aW9yIHRleHRJdGVyYXRvckJl
aGF2aW9yRm9yVGV4dFJhbmdlKCkKIHsKQEAgLTExNDYsNTkgKzY0OSw2IEBAIE5vZGUqIEFjY2Vz
c2liaWxpdHlSZW5kZXJPYmplY3Q6Om5vZGUoKSBjb25zdAogICAgIHJldHVybiBtX3JlbmRlcmVy
ID8gbV9yZW5kZXJlci0+bm9kZSgpIDogMDsgCiB9ICAgIAogICAgIAotQWNjZXNzaWJpbGl0eUJ1
dHRvblN0YXRlIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmNoZWNrYm94T3JSYWRpb1ZhbHVl
KCkgY29uc3QKLXsKLSAgICBpZiAoaXNOYXRpdmVDaGVja2JveE9yUmFkaW8oKSkKLSAgICAgICAg
cmV0dXJuIGlzQ2hlY2tlZCgpID8gQnV0dG9uU3RhdGVPbiA6IEJ1dHRvblN0YXRlT2ZmOwotICAg
IAotICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpjaGVja2JveE9yUmFkaW9WYWx1ZSgp
OwotfQotCi1TdHJpbmcgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6dmFsdWVEZXNjcmlwdGlv
bigpIGNvbnN0Ci17Ci0gICAgaWYgKCFpc0FSSUFSYW5nZSgpKQotICAgICAgICByZXR1cm4gU3Ry
aW5nKCk7Ci0gICAgCi0gICAgcmV0dXJuIGdldEF0dHJpYnV0ZShhcmlhX3ZhbHVldGV4dEF0dHIp
LnN0cmluZygpOwotfQotICAgIAotZmxvYXQgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6c3Rl
cFZhbHVlRm9yUmFuZ2UoKSBjb25zdAotewotICAgIHJldHVybiBnZXRBdHRyaWJ1dGUoc3RlcEF0
dHIpLnRvRmxvYXQoKTsKLX0KLQotYm9vbCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojppc0FS
SUFSYW5nZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fYXJpYVJvbGUgPT0gUHJvZ3Jlc3NJbmRp
Y2F0b3JSb2xlCi0gICAgICAgIHx8IG1fYXJpYVJvbGUgPT0gU2xpZGVyUm9sZQotICAgICAgICB8
fCBtX2FyaWFSb2xlID09IFNjcm9sbEJhclJvbGUKLSAgICAgICAgfHwgbV9hcmlhUm9sZSA9PSBT
cGluQnV0dG9uUm9sZTsKLX0KLSAgICAKLWZsb2F0IEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6
OnZhbHVlRm9yUmFuZ2UoKSBjb25zdAotewotICAgIGlmICghaXNBUklBUmFuZ2UoKSkKLSAgICAg
ICAgcmV0dXJuIDAuMGY7Ci0KLSAgICByZXR1cm4gZ2V0QXR0cmlidXRlKGFyaWFfdmFsdWVub3dB
dHRyKS50b0Zsb2F0KCk7Ci19Ci0KLWZsb2F0IEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6Om1h
eFZhbHVlRm9yUmFuZ2UoKSBjb25zdAotewotICAgIGlmICghaXNBUklBUmFuZ2UoKSkKLSAgICAg
ICAgcmV0dXJuIDAuMGY7Ci0KLSAgICByZXR1cm4gZ2V0QXR0cmlidXRlKGFyaWFfdmFsdWVtYXhB
dHRyKS50b0Zsb2F0KCk7Ci19Ci0KLWZsb2F0IEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6Om1p
blZhbHVlRm9yUmFuZ2UoKSBjb25zdAotewotICAgIGlmICghaXNBUklBUmFuZ2UoKSkKLSAgICAg
ICAgcmV0dXJuIDAuMGY7Ci0KLSAgICByZXR1cm4gZ2V0QXR0cmlidXRlKGFyaWFfdmFsdWVtaW5B
dHRyKS50b0Zsb2F0KCk7Ci19Ci0KIFN0cmluZyBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojpz
dHJpbmdWYWx1ZSgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX3JlbmRlcmVyKQpAQCAtMTI1Nyw5OSAr
NzA3LDYgQEAgU3RyaW5nIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnN0cmluZ1ZhbHVlKCkg
Y29uc3QKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CiAKLS8vIFRoaXMgZnVuY3Rpb24gaW1wbGVt
ZW50cyB0aGUgQVJJQSBhY2Nlc3NpYmxlIG5hbWUgYXMgZGVzY3JpYmVkIGJ5IHRoZSBNb3ppbGxh
Ci0vLyBBUklBIEltcGxlbWVudGVyJ3MgR3VpZGUuCi1zdGF0aWMgU3RyaW5nIGFjY2Vzc2libGVO
YW1lRm9yTm9kZShOb2RlKiBub2RlKQotewotICAgIGlmIChub2RlLT5pc1RleHROb2RlKCkpCi0g
ICAgICAgIHJldHVybiB0b1RleHQobm9kZSktPmRhdGEoKTsKLQotICAgIGlmIChub2RlLT5oYXNU
YWdOYW1lKGlucHV0VGFnKSkKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEhUTUxJbnB1dEVs
ZW1lbnQqPihub2RlKS0+dmFsdWUoKTsKLQotICAgIGlmIChub2RlLT5pc0hUTUxFbGVtZW50KCkp
IHsKLSAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBhbHQgPSB0b0hUTUxFbGVtZW50KG5vZGUp
LT5nZXRBdHRyaWJ1dGUoYWx0QXR0cik7Ci0gICAgICAgIGlmICghYWx0LmlzRW1wdHkoKSkKLSAg
ICAgICAgICAgIHJldHVybiBhbHQ7Ci0gICAgfQotCi0gICAgcmV0dXJuIFN0cmluZygpOwotfQot
Ci1TdHJpbmcgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6YWNjZXNzaWJpbGl0eURlc2NyaXB0
aW9uRm9yRWxlbWVudHMoVmVjdG9yPEVsZW1lbnQqPiAmZWxlbWVudHMpIGNvbnN0Ci17Ci0gICAg
U3RyaW5nQnVpbGRlciBidWlsZGVyOwotICAgIHVuc2lnbmVkIHNpemUgPSBlbGVtZW50cy5zaXpl
KCk7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpemU7ICsraSkgewotICAgICAgICBF
bGVtZW50KiBpZEVsZW1lbnQgPSBlbGVtZW50c1tpXTsKLQotICAgICAgICBidWlsZGVyLmFwcGVu
ZChhY2Nlc3NpYmxlTmFtZUZvck5vZGUoaWRFbGVtZW50KSk7Ci0gICAgICAgIGZvciAoTm9kZSog
biA9IGlkRWxlbWVudC0+Zmlyc3RDaGlsZCgpOyBuOyBuID0gbi0+dHJhdmVyc2VOZXh0Tm9kZShp
ZEVsZW1lbnQpKQotICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoYWNjZXNzaWJsZU5hbWVGb3JO
b2RlKG4pKTsKLQotICAgICAgICBpZiAoaSAhPSBzaXplIC0gMSkKLSAgICAgICAgICAgIGJ1aWxk
ZXIuYXBwZW5kKCcgJyk7Ci0gICAgfQotICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7Ci19
Ci0KLXZvaWQgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6ZWxlbWVudHNGcm9tQXR0cmlidXRl
KFZlY3RvcjxFbGVtZW50Kj4mIGVsZW1lbnRzLCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1
dGUpIGNvbnN0Ci17Ci0gICAgTm9kZSogbm9kZSA9IG1fcmVuZGVyZXItPm5vZGUoKTsKLSAgICBp
ZiAoIW5vZGUgfHwgIW5vZGUtPmlzRWxlbWVudE5vZGUoKSkKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgVHJlZVNjb3BlKiBzY29wZSA9IG5vZGUtPnRyZWVTY29wZSgpOwotICAgIGlmICghc2NvcGUp
Ci0gICAgICAgIHJldHVybjsKLSAgICAKLSAgICBTdHJpbmcgaWRMaXN0ID0gZ2V0QXR0cmlidXRl
KGF0dHJpYnV0ZSkuc3RyaW5nKCk7Ci0gICAgaWYgKGlkTGlzdC5pc0VtcHR5KCkpCi0gICAgICAg
IHJldHVybjsKLSAgICAKLSAgICBpZExpc3QucmVwbGFjZSgnXG4nLCAnICcpOwotICAgIFZlY3Rv
cjxTdHJpbmc+IGlkVmVjdG9yOwotICAgIGlkTGlzdC5zcGxpdCgnICcsIGlkVmVjdG9yKTsKLSAg
ICAKLSAgICB1bnNpZ25lZCBzaXplID0gaWRWZWN0b3Iuc2l6ZSgpOwotICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKLSAgICAgICAgQXRvbWljU3RyaW5nIGlkTmFtZShp
ZFZlY3RvcltpXSk7Ci0gICAgICAgIEVsZW1lbnQqIGlkRWxlbWVudCA9IHNjb3BlLT5nZXRFbGVt
ZW50QnlJZChpZE5hbWUpOwotICAgICAgICBpZiAoaWRFbGVtZW50KQotICAgICAgICAgICAgZWxl
bWVudHMuYXBwZW5kKGlkRWxlbWVudCk7Ci0gICAgfQotfQotICAgIAotdm9pZCBBY2Nlc3NpYmls
aXR5UmVuZGVyT2JqZWN0OjphcmlhTGFiZWxlZEJ5RWxlbWVudHMoVmVjdG9yPEVsZW1lbnQqPiYg
ZWxlbWVudHMpIGNvbnN0Ci17Ci0gICAgZWxlbWVudHNGcm9tQXR0cmlidXRlKGVsZW1lbnRzLCBh
cmlhX2xhYmVsZWRieUF0dHIpOwotICAgIGlmICghZWxlbWVudHMuc2l6ZSgpKQotICAgICAgICBl
bGVtZW50c0Zyb21BdHRyaWJ1dGUoZWxlbWVudHMsIGFyaWFfbGFiZWxsZWRieUF0dHIpOwotfQot
ICAgCi1TdHJpbmcgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6YXJpYUxhYmVsZWRCeUF0dHJp
YnV0ZSgpIGNvbnN0Ci17Ci0gICAgVmVjdG9yPEVsZW1lbnQqPiBlbGVtZW50czsKLSAgICBhcmlh
TGFiZWxlZEJ5RWxlbWVudHMoZWxlbWVudHMpOwotICAgIAotICAgIHJldHVybiBhY2Nlc3NpYmls
aXR5RGVzY3JpcHRpb25Gb3JFbGVtZW50cyhlbGVtZW50cyk7Ci19Ci0KLXN0YXRpYyBIVE1MTGFi
ZWxFbGVtZW50KiBsYWJlbEZvckVsZW1lbnQoRWxlbWVudCogZWxlbWVudCkKLXsKLSAgICBSZWZQ
dHI8Tm9kZUxpc3Q+IGxpc3QgPSBlbGVtZW50LT5kb2N1bWVudCgpLT5nZXRFbGVtZW50c0J5VGFn
TmFtZSgibGFiZWwiKTsKLSAgICB1bnNpZ25lZCBsZW4gPSBsaXN0LT5sZW5ndGgoKTsKLSAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKLSAgICAgICAgaWYgKGxpc3QtPml0
ZW0oaSktPmhhc1RhZ05hbWUobGFiZWxUYWcpKSB7Ci0gICAgICAgICAgICBIVE1MTGFiZWxFbGVt
ZW50KiBsYWJlbCA9IHN0YXRpY19jYXN0PEhUTUxMYWJlbEVsZW1lbnQqPihsaXN0LT5pdGVtKGkp
KTsKLSAgICAgICAgICAgIGlmIChsYWJlbC0+Y29udHJvbCgpID09IGVsZW1lbnQpCi0gICAgICAg
ICAgICAgICAgcmV0dXJuIGxhYmVsOwotICAgICAgICB9Ci0gICAgfQotICAgIAotICAgIHJldHVy
biAwOwotfQotICAgIAogSFRNTExhYmVsRWxlbWVudCogQWNjZXNzaWJpbGl0eVJlbmRlck9iamVj
dDo6bGFiZWxFbGVtZW50Q29udGFpbmVyKCkgY29uc3QKIHsKICAgICBpZiAoIW1fcmVuZGVyZXIp
CkBAIC0xMzY4LDU1ICs3MjUsNiBAQCBIVE1MTGFiZWxFbGVtZW50KiBBY2Nlc3NpYmlsaXR5UmVu
ZGVyT2JqZWN0OjpsYWJlbEVsZW1lbnRDb250YWluZXIoKSBjb25zdAogICAgIHJldHVybiAwOwog
fQogCi1TdHJpbmcgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6dGl0bGUoKSBjb25zdAotewot
ICAgIEFjY2Vzc2liaWxpdHlSb2xlIHJvbGUgPSByb2xlVmFsdWUoKTsKLSAgICAKLSAgICBpZiAo
IW1fcmVuZGVyZXIpCi0gICAgICAgIHJldHVybiBTdHJpbmcoKTsKLQotICAgIE5vZGUqIG5vZGUg
PSBtX3JlbmRlcmVyLT5ub2RlKCk7Ci0gICAgaWYgKCFub2RlKQotICAgICAgICByZXR1cm4gU3Ry
aW5nKCk7Ci0gICAgCi0gICAgYm9vbCBpc0lucHV0VGFnID0gbm9kZS0+aGFzVGFnTmFtZShpbnB1
dFRhZyk7Ci0gICAgaWYgKGlzSW5wdXRUYWcpIHsKLSAgICAgICAgSFRNTElucHV0RWxlbWVudCog
aW5wdXQgPSBzdGF0aWNfY2FzdDxIVE1MSW5wdXRFbGVtZW50Kj4obm9kZSk7Ci0gICAgICAgIGlm
IChpbnB1dC0+aXNUZXh0QnV0dG9uKCkpCi0gICAgICAgICAgICByZXR1cm4gaW5wdXQtPnZhbHVl
V2l0aERlZmF1bHQoKTsKLSAgICB9Ci0gICAgCi0gICAgaWYgKGlzSW5wdXRUYWcgfHwgQWNjZXNz
aWJpbGl0eU9iamVjdDo6aXNBUklBSW5wdXQoYXJpYVJvbGVBdHRyaWJ1dGUoKSkgfHwgaXNDb250
cm9sKCkpIHsKLSAgICAgICAgSFRNTExhYmVsRWxlbWVudCogbGFiZWwgPSBsYWJlbEZvckVsZW1l
bnQoc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG5vZGUpKTsKLSAgICAgICAgaWYgKGxhYmVsICYmICFl
eHBvc2VzVGl0bGVVSUVsZW1lbnQoKSkKLSAgICAgICAgICAgIHJldHVybiBsYWJlbC0+aW5uZXJU
ZXh0KCk7Ci0gICAgfQotICAgIAotICAgIHN3aXRjaCAocm9sZSkgewotICAgIGNhc2UgQnV0dG9u
Um9sZToKLSAgICBjYXNlIExpc3RCb3hPcHRpb25Sb2xlOgotICAgIGNhc2UgTWVudUl0ZW1Sb2xl
OgotICAgIGNhc2UgTWVudUJ1dHRvblJvbGU6Ci0gICAgY2FzZSBSYWRpb0J1dHRvblJvbGU6Ci0g
ICAgY2FzZSBDaGVja0JveFJvbGU6Ci0gICAgY2FzZSBUYWJSb2xlOgotICAgIGNhc2UgUG9wVXBC
dXR0b25Sb2xlOgotICAgICAgICByZXR1cm4gdGV4dFVuZGVyRWxlbWVudCgpOwotICAgIGRlZmF1
bHQ6Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgIAotICAgIGlmIChpc0hlYWRpbmcoKSB8fCBp
c0xpbmsoKSkKLSAgICAgICAgcmV0dXJuIHRleHRVbmRlckVsZW1lbnQoKTsKLQotICAgIC8vIElm
IGl0J3MgZm9jdXNhYmxlIGJ1dCBpdCdzIG5vdCBjb250ZW50IGVkaXRhYmxlIG9yIGEga25vd24g
Y29udHJvbCB0eXBlLCB0aGVuIGl0IHdpbGwgYXBwZWFyIHRvCi0gICAgLy8gdGhlIHVzZXIgYXMg
YSBzaW5nbGUgYXRvbWljIG9iamVjdCwgc28gd2Ugc2hvdWxkIHVzZSBpdHMgdGV4dCBhcyB0aGUg
ZGVmYXVsdCB0aXRsZS4KLSAgICBpZiAoaXNHZW5lcmljRm9jdXNhYmxlRWxlbWVudCgpKQotICAg
ICAgICByZXR1cm4gdGV4dFVuZGVyRWxlbWVudCgpOwotCi0gICAgcmV0dXJuIFN0cmluZygpOwot
fQotCiBTdHJpbmcgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6YXJpYURlc2NyaWJlZEJ5QXR0
cmlidXRlKCkgY29uc3QKIHsKICAgICBWZWN0b3I8RWxlbWVudCo+IGVsZW1lbnRzOwpAQCAtMTQy
NSwxOSArNzMzLDYgQEAgU3RyaW5nIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFyaWFEZXNj
cmliZWRCeUF0dHJpYnV0ZSgpIGNvbnN0CiAgICAgcmV0dXJuIGFjY2Vzc2liaWxpdHlEZXNjcmlw
dGlvbkZvckVsZW1lbnRzKGVsZW1lbnRzKTsKIH0KICAgICAKLVN0cmluZyBBY2Nlc3NpYmlsaXR5
UmVuZGVyT2JqZWN0OjphcmlhQWNjZXNzaWJpbGl0eURlc2NyaXB0aW9uKCkgY29uc3QKLXsKLSAg
ICBTdHJpbmcgYXJpYUxhYmVsZWRCeSA9IGFyaWFMYWJlbGVkQnlBdHRyaWJ1dGUoKTsKLSAgICBp
ZiAoIWFyaWFMYWJlbGVkQnkuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gYXJpYUxhYmVsZWRC
eTsKLQotICAgIGNvbnN0IEF0b21pY1N0cmluZyYgYXJpYUxhYmVsID0gZ2V0QXR0cmlidXRlKGFy
aWFfbGFiZWxBdHRyKTsKLSAgICBpZiAoIWFyaWFMYWJlbC5pc0VtcHR5KCkpCi0gICAgICAgIHJl
dHVybiBhcmlhTGFiZWw7Ci0gICAgCi0gICAgcmV0dXJuIFN0cmluZygpOwotfQotCiBTdHJpbmcg
QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6d2ViQXJlYUFjY2Vzc2liaWxpdHlEZXNjcmlwdGlv
bigpIGNvbnN0CiB7CiAgICAgLy8gVGhlIFdlYkFyZWEgZGVzY3JpcHRpb24gc2hvdWxkIGZvbGxv
dyB0aGlzIG9yZGVyOgpAQCAtMTQ5MCw0MCArNzg1LDEwIEBAIFN0cmluZyBBY2Nlc3NpYmlsaXR5
UmVuZGVyT2JqZWN0OjphY2Nlc3NpYmlsaXR5RGVzY3JpcHRpb24oKSBjb25zdAogICAgIGlmICgh
bV9yZW5kZXJlcikKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCi0gICAgLy8gU3RhdGljIHRl
eHQgc2hvdWxkIG5vdCBoYXZlIGEgZGVzY3JpcHRpb24sIGl0IHNob3VsZCBvbmx5IGhhdmUgYSBz
dHJpbmdWYWx1ZS4KLSAgICBpZiAocm9sZVZhbHVlKCkgPT0gU3RhdGljVGV4dFJvbGUpCi0gICAg
ICAgIHJldHVybiBTdHJpbmcoKTsKLSAgICAKLSAgICBTdHJpbmcgYXJpYURlc2NyaXB0aW9uID0g
YXJpYUFjY2Vzc2liaWxpdHlEZXNjcmlwdGlvbigpOwotICAgIGlmICghYXJpYURlc2NyaXB0aW9u
LmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIGFyaWFEZXNjcmlwdGlvbjsKLSAgICAKLSAgICBp
ZiAoaXNJbWFnZSgpIHx8IGlzSW5wdXRJbWFnZSgpIHx8IGlzTmF0aXZlSW1hZ2UoKSB8fCBpc0Nh
bnZhcygpKSB7Ci0KLSAgICAgICAgLy8gSW1hZ2VzIHNob3VsZCB1c2UgYWx0IGFzIGxvbmcgYXMg
dGhlIGF0dHJpYnV0ZSBpcyBwcmVzZW50LCBldmVuIGlmIGVtcHR5LgotICAgICAgICAvLyBPdGhl
cndpc2UsIGl0IHNob3VsZCBmYWxsYmFjayB0byBvdGhlciBtZXRob2RzLCBsaWtlIHRoZSB0aXRs
ZSBhdHRyaWJ1dGUuCi0gICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYgYWx0ID0gZ2V0QXR0cmli
dXRlKGFsdEF0dHIpOwotICAgICAgICBpZiAoIWFsdC5pc051bGwoKSkKLSAgICAgICAgICAgIHJl
dHVybiBhbHQ7Ci0gICAgfQotICAgIAotI2lmIEVOQUJMRShNQVRITUwpCi0gICAgTm9kZSogbm9k
ZSA9IG1fcmVuZGVyZXItPm5vZGUoKTsKLSAgICBpZiAobm9kZSAmJiBub2RlLT5pc0VsZW1lbnRO
b2RlKCkgJiYgc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG5vZGUpLT5pc01hdGhNTEVsZW1lbnQoKSkK
LSAgICAgICAgcmV0dXJuIGdldEF0dHJpYnV0ZShNYXRoTUxOYW1lczo6YWx0dGV4dEF0dHIpOwot
I2VuZGlmCi0gICAgCiAgICAgaWYgKGlzV2ViQXJlYSgpKQogICAgICAgICByZXR1cm4gd2ViQXJl
YUFjY2Vzc2liaWxpdHlEZXNjcmlwdGlvbigpOwotICAgIAotICAgIC8vIEFuIGVsZW1lbnQncyBk
ZXNjcmlwdGl2ZSB0ZXh0IGlzIGNvbXByaXNlZCBvZiB0aXRsZSgpICh3aGF0J3MgdmlzaWJsZSBv
biB0aGUgc2NyZWVuKSBhbmQgYWNjZXNzaWJpbGl0eURlc2NyaXB0aW9uKCkgKG90aGVyIGRlc2Ny
aXB0aXZlIHRleHQpLgotICAgIC8vIEJvdGggYXJlIHVzZWQgdG8gZ2VuZXJhdGUgd2hhdCBhIHNj
cmVlbiByZWFkZXIgc3BlYWtzLgotICAgIC8vIElmIHRoaXMgcG9pbnQgaXMgcmVhY2hlZCAoaS5l
LiB0aGVyZSdzIG5vIGFjY2Vzc2liaWxpdHlEZXNjcmlwdGlvbikgYW5kIHRoZXJlJ3Mgbm8gdGl0
bGUoKSwgd2Ugc2hvdWxkIGZhbGxiYWNrIHRvIHVzaW5nIHRoZSB0aXRsZSBhdHRyaWJ1dGUuCi0g
ICAgLy8gVGhlIHRpdGxlIGF0dHJpYnV0ZSBpcyBub3JtYWxseSB1c2VkIGFzIGhlbHAgdGV4dCAo
YmVjYXVzZSBpdCBpcyBhIHRvb2x0aXApLCBidXQgaWYgdGhlcmUgaXMgbm90aGluZyBlbHNlIGF2
YWlsYWJsZSwgdGhpcyBzaG91bGQgYmUgdXNlZCAoYWNjb3JkaW5nIHRvIEFSSUEpLgotICAgIGlm
ICh0aXRsZSgpLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIGdldEF0dHJpYnV0ZSh0aXRsZUF0
dHIpOwotICAgIAotICAgIHJldHVybiBTdHJpbmcoKTsKKworICAgIHJldHVybiBBY2Nlc3NpYmls
aXR5Tm9kZU9iamVjdDo6YWNjZXNzaWJpbGl0eURlc2NyaXB0aW9uKCk7CiB9CiAKIExheW91dFJl
Y3QgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6Ym91bmRpbmdCb3hSZWN0KCkgY29uc3QKQEAg
LTE4MTAsMTYgKzEwNzUsNiBAQCBib29sIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFyaWFJ
c0hpZGRlbigpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIEFjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3Q6OmlzRGVzY2VuZGFudE9mQmFycmVuUGFyZW50KCkgY29uc3QKLXsKLSAg
ICBmb3IgKEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iamVjdCA9IHBhcmVudE9iamVjdCgpOyBvYmpl
Y3Q7IG9iamVjdCA9IG9iamVjdC0+cGFyZW50T2JqZWN0KCkpIHsKLSAgICAgICAgaWYgKCFvYmpl
Y3QtPmNhbkhhdmVDaGlsZHJlbigpKQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQot
ICAgIAotICAgIHJldHVybiBmYWxzZTsKLX0KLSAgICAKIGJvb2wgQWNjZXNzaWJpbGl0eVJlbmRl
ck9iamVjdDo6aXNBbGxvd2VkQ2hpbGRPZlRyZWUoKSBjb25zdAogewogICAgIC8vIERldGVybWlu
ZSBpZiB0aGlzIGlzIGluIGEgdHJlZS4gSWYgc28sIHdlIGFwcGx5IHNwZWNpYWwgYmVoYXZpb3Ig
dG8gbWFrZSBpdCB3b3JrIGxpa2UgYW4gQVhPdXRsaW5lLgpAQCAtMjA1OSwyNyArMTMxNCwxMCBA
QCBpbnQgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6bGF5b3V0Q291bnQoKSBjb25zdAogCiBT
dHJpbmcgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6dGV4dCgpIGNvbnN0CiB7Ci0gICAgLy8g
SWYgdGhpcyBpcyBhIHVzZXIgZGVmaW5lZCBzdGF0aWMgdGV4dCwgdXNlIHRoZSBhY2Nlc3NpYmxl
IG5hbWUgY29tcHV0YXRpb24uCi0gICAgaWYgKGFyaWFSb2xlQXR0cmlidXRlKCkgPT0gU3RhdGlj
VGV4dFJvbGUpCi0gICAgICAgIHJldHVybiBhcmlhQWNjZXNzaWJpbGl0eURlc2NyaXB0aW9uKCk7
Ci0gICAgCi0gICAgaWYgKCFpc1RleHRDb250cm9sKCkpCi0gICAgICAgIHJldHVybiBTdHJpbmco
KTsKLQogICAgIGlmIChpc1Bhc3N3b3JkRmllbGQoKSkKICAgICAgICAgcmV0dXJuIHBhc3N3b3Jk
RmllbGRWYWx1ZSgpOwogCi0gICAgTm9kZSogbm9kZSA9IG1fcmVuZGVyZXItPm5vZGUoKTsKLSAg
ICBpZiAoIW5vZGUpCi0gICAgICAgIHJldHVybiBTdHJpbmcoKTsKLQotICAgIGlmIChpc05hdGl2
ZVRleHRDb250cm9sKCkpCi0gICAgICAgIHJldHVybiB0b1JlbmRlclRleHRDb250cm9sKG1fcmVu
ZGVyZXIpLT50ZXh0Rm9ybUNvbnRyb2xFbGVtZW50KCktPnZhbHVlKCk7Ci0KLSAgICBpZiAoIW5v
ZGUtPmlzRWxlbWVudE5vZGUoKSkKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAgIAotICAg
IHJldHVybiBzdGF0aWNfY2FzdDxFbGVtZW50Kj4obm9kZSktPmlubmVyVGV4dCgpOworICAgIHJl
dHVybiBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6dGV4dCgpOwogfQogICAgIAogaW50IEFjY2Vz
c2liaWxpdHlSZW5kZXJPYmplY3Q6OnRleHRMZW5ndGgoKSBjb25zdApAQCAtMjIzNywxOCArMTQ3
NSw2IEBAIGJvb2wgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6ZWxlbWVudEF0dHJpYnV0ZVZh
bHVlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpCiAgICAgcmV0dXJuIGVxdWFsSWdub3JpbmdD
YXNlKGdldEF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKSwgInRydWUiKTsKIH0KICAgICAKLWJvb2wg
QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aXNSZXF1aXJlZCgpIGNvbnN0Ci17Ci0gICAgaWYg
KGVxdWFsSWdub3JpbmdDYXNlKGdldEF0dHJpYnV0ZShhcmlhX3JlcXVpcmVkQXR0ciksICJ0cnVl
IikpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIAotICAgIE5vZGUqIG4gPSBub2RlKCk7Ci0g
ICAgaWYgKG4gJiYgKG4tPmlzRWxlbWVudE5vZGUoKSAmJiBzdGF0aWNfY2FzdDxFbGVtZW50Kj4o
biktPmlzRm9ybUNvbnRyb2xFbGVtZW50KCkpKQotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
SFRNTEZvcm1Db250cm9sRWxlbWVudCo+KG4pLT5yZXF1aXJlZCgpOwotICAgIAotICAgIHJldHVy
biBmYWxzZTsKLX0KLQogYm9vbCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojppc1NlbGVjdGVk
KCkgY29uc3QKIHsKICAgICBpZiAoIW1fcmVuZGVyZXIpCkBAIC0yMzQ1LDI5ICsxNTcxLDYgQEAg
dm9pZCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpzZXRGb2N1c2VkKGJvb2wgb24pCiAgICAg
fQogfQogCi12b2lkIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmNoYW5nZVZhbHVlQnlTdGVw
KGJvb2wgaW5jcmVhc2UpCi17Ci0gICAgZmxvYXQgc3RlcCA9IHN0ZXBWYWx1ZUZvclJhbmdlKCk7
Ci0gICAgZmxvYXQgdmFsdWUgPSB2YWx1ZUZvclJhbmdlKCk7Ci0gICAgCi0gICAgdmFsdWUgKz0g
aW5jcmVhc2UgPyBzdGVwIDogLXN0ZXA7Ci0KLSAgICBzZXRWYWx1ZShTdHJpbmc6Om51bWJlcih2
YWx1ZSkpOwotICAgIAotICAgIGF4T2JqZWN0Q2FjaGUoKS0+cG9zdE5vdGlmaWNhdGlvbihtX3Jl
bmRlcmVyLCBBWE9iamVjdENhY2hlOjpBWFZhbHVlQ2hhbmdlZCwgdHJ1ZSk7Ci19Ci0gICAgCi12
b2lkIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmNoYW5nZVZhbHVlQnlQZXJjZW50KGZsb2F0
IHBlcmNlbnRDaGFuZ2UpCi17Ci0gICAgZmxvYXQgcmFuZ2UgPSBtYXhWYWx1ZUZvclJhbmdlKCkg
LSBtaW5WYWx1ZUZvclJhbmdlKCk7Ci0gICAgZmxvYXQgdmFsdWUgPSB2YWx1ZUZvclJhbmdlKCk7
Ci0gICAgCi0gICAgdmFsdWUgKz0gcmFuZ2UgKiAocGVyY2VudENoYW5nZSAvIDEwMCk7Ci0gICAg
c2V0VmFsdWUoU3RyaW5nOjpudW1iZXIodmFsdWUpKTsKLSAgICAKLSAgICBheE9iamVjdENhY2hl
KCktPnBvc3ROb3RpZmljYXRpb24obV9yZW5kZXJlciwgQVhPYmplY3RDYWNoZTo6QVhWYWx1ZUNo
YW5nZWQsIHRydWUpOwotfQotCiB2b2lkIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnNldFNl
bGVjdGVkUm93cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIHNlbGVjdGVkUm93cykKIHsK
ICAgICAvLyBTZXR0aW5nIHNlbGVjdGVkIG9ubHkgbWFrZXMgc2Vuc2UgaW4gdHJlZXMgYW5kIHRh
YmxlcyAoYW5kIHRyZWUtdGFibGVzKS4KQEAgLTI0MjcsMjAgKzE2MzAsNiBAQCBib29sIEFjY2Vz
c2liaWxpdHlSZW5kZXJPYmplY3Q6OnN1cHBvcnRzQVJJQU93bnMoKSBjb25zdAogICAgIHJldHVy
biAhYXJpYU93bnMuaXNFbXB0eSgpOwogfQogICAgIAotYm9vbCBBY2Nlc3NpYmlsaXR5UmVuZGVy
T2JqZWN0Ojppc0VuYWJsZWQoKSBjb25zdAotewotICAgIEFTU0VSVChtX3JlbmRlcmVyKTsKLSAg
ICAKLSAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoZ2V0QXR0cmlidXRlKGFyaWFfZGlzYWJsZWRB
dHRyKSwgInRydWUiKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIAotICAgIE5vZGUqIG5v
ZGUgPSBtX3JlbmRlcmVyLT5ub2RlKCk7Ci0gICAgaWYgKCFub2RlIHx8ICFub2RlLT5pc0VsZW1l
bnROb2RlKCkpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgcmV0dXJuIHN0YXRpY19jYXN0
PEVsZW1lbnQqPihub2RlKS0+aXNFbmFibGVkRm9ybUNvbnRyb2woKTsKLX0KLQogUmVuZGVyVmll
dyogQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6dG9wUmVuZGVyZXIoKSBjb25zdAogewogICAg
IERvY3VtZW50KiB0b3BEb2MgPSB0b3BEb2N1bWVudCgpOwpAQCAtMzEzOCwzNSArMjMyNyw2IEBA
IGJvb2wgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aXNEZXNjZW5kYW50T2ZFbGVtZW50VHlw
ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIEFj
Y2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmlzR2VuZXJpY0ZvY3VzYWJsZUVsZW1lbnQoKSBjb25z
dAotewotICAgIGlmICghY2FuU2V0Rm9jdXNBdHRyaWJ1dGUoKSkKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotCi0gICAgLy8gSWYgaXQncyBhIGNvbnRyb2wsIGl0J3Mgbm90IGdlbmVyaWMuCi0gICAg
aWYgKGlzQ29udHJvbCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAvLyBJZiBpdCBo
YXMgYW4gYXJpYSByb2xlLCBpdCdzIG5vdCBnZW5lcmljLgotICAgIGlmIChtX2FyaWFSb2xlICE9
IFVua25vd25Sb2xlKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAvLyBJZiB0aGUgY29u
dGVudCBlZGl0YWJsZSBhdHRyaWJ1dGUgaXMgc2V0IG9uIHRoaXMgZWxlbWVudCwgdGhhdCdzIHRo
ZSByZWFzb24KLSAgICAvLyBpdCdzIGZvY3VzYWJsZSwgYW5kIGV4aXN0aW5nIGxvZ2ljIHNob3Vs
ZCBoYW5kbGUgdGhpcyBjYXNlIGFscmVhZHkgLSBzbyBpdCdzIG5vdCBhCi0gICAgLy8gZ2VuZXJp
YyBmb2N1c2FibGUgZWxlbWVudC4KLSAgICBpZiAoaGFzQ29udGVudEVkaXRhYmxlQXR0cmlidXRl
U2V0KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIC8vIFRoZSB3ZWIgYXJlYSBhbmQg
Ym9keSBlbGVtZW50IGFyZSBib3RoIGZvY3VzYWJsZSwgYnV0IGV4aXN0aW5nIGxvZ2ljIGhhbmRs
ZXMgdGhlc2UKLSAgICAvLyBjYXNlcyBhbHJlYWR5LCBzbyB3ZSBkb24ndCBuZWVkIHRvIGluY2x1
ZGUgdGhlbSBoZXJlLgotICAgIGlmIChyb2xlVmFsdWUoKSA9PSBXZWJBcmVhUm9sZSkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChub2RlKCkgJiYgbm9kZSgpLT5oYXNUYWdOYW1lKGJv
ZHlUYWcpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLSAg
ICAKIEFjY2Vzc2liaWxpdHlSb2xlIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmRldGVybWlu
ZUFjY2Vzc2liaWxpdHlSb2xlKCkKIHsKICAgICBpZiAoIW1fcmVuZGVyZXIpCkBAIC0zNDM3LDI4
ICsyNTk3LDYgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojpjb250ZW50Q2hhbmdl
ZCgpCiAgICAgICAgICAgICBjYWNoZS0+cG9zdE5vdGlmaWNhdGlvbihyZW5kZXJQYXJlbnQsIEFY
T2JqZWN0Q2FjaGU6OkFYVmFsdWVDaGFuZ2VkLCB0cnVlKTsKICAgICB9CiB9Ci0gICAgCi1ib29s
IEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmNhbkhhdmVDaGlsZHJlbigpIGNvbnN0Ci17Ci0g
ICAgaWYgKCFtX3JlbmRlcmVyKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgCi0gICAgLy8g
RWxlbWVudHMgdGhhdCBzaG91bGQgbm90IGhhdmUgY2hpbGRyZW4KLSAgICBzd2l0Y2ggKHJvbGVW
YWx1ZSgpKSB7Ci0gICAgY2FzZSBJbWFnZVJvbGU6Ci0gICAgY2FzZSBCdXR0b25Sb2xlOgotICAg
IGNhc2UgUG9wVXBCdXR0b25Sb2xlOgotICAgIGNhc2UgQ2hlY2tCb3hSb2xlOgotICAgIGNhc2Ug
UmFkaW9CdXR0b25Sb2xlOgotICAgIGNhc2UgVGFiUm9sZToKLSAgICBjYXNlIFN0YXRpY1RleHRS
b2xlOgotICAgIGNhc2UgTGlzdEJveE9wdGlvblJvbGU6Ci0gICAgY2FzZSBTY3JvbGxCYXJSb2xl
OgotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIHRy
dWU7Ci0gICAgfQotfQogCiB2b2lkIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmNsZWFyQ2hp
bGRyZW4oKQogewpAQCAtMzU5Niw3ICsyNzM0LDE1IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVJlbmRl
ck9iamVjdDo6YWRkQ2hpbGRyZW4oKQogICAgIHVwZGF0ZUF0dGFjaG1lbnRWaWV3UGFyZW50cygp
OwogI2VuZGlmCiB9Ci0gICAgICAgIAorCitib29sIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6
OmNhbkhhdmVDaGlsZHJlbigpIGNvbnN0Cit7CisgICAgaWYgKCFtX3JlbmRlcmVyKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmNh
bkhhdmVDaGlsZHJlbigpOworfQorCiBjb25zdCBBdG9taWNTdHJpbmcmIEFjY2Vzc2liaWxpdHlS
ZW5kZXJPYmplY3Q6OmFyaWFMaXZlUmVnaW9uU3RhdHVzKCkgY29uc3QKIHsKICAgICBERUZJTkVf
U1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgbGl2ZVJlZ2lvblN0YXR1c0Fzc2VydGl2
ZSwgKCJhc3NlcnRpdmUiKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oCmluZGV4IDA3NGM2MTdhZDY4M2NlN2Mw
MGNiMzUyMDAzNDczZjMzZTE5NThmMTIuLjAyMmQ2MGI0NWVhZGFhMjczZWNkNTU3M2NiMjJlYzVm
YzFlOTRmZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oCkBAIC02Niw0NCArNjYsMTYgQEAgcHVibGljOgog
CiAgICAgdmlydHVhbCB2b2lkIGluaXQoKTsKICAgICAKLSAgICB2aXJ0dWFsIGJvb2wgaXNBbmNo
b3IoKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgaXNBdHRhY2htZW50KCkgY29uc3Q7Ci0gICAg
dmlydHVhbCBib29sIGlzSGVhZGluZygpIGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCBpc0xpbmso
KSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgaXNJbWFnZUJ1dHRvbigpIGNvbnN0OwotICAgIHZp
cnR1YWwgYm9vbCBpc0ltYWdlKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBib29sIGlzTmF0aXZlSW1h
Z2UoKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgaXNQYXNzd29yZEZpZWxkKCkgY29uc3Q7Ci0g
ICAgdmlydHVhbCBib29sIGlzTmF0aXZlVGV4dENvbnRyb2woKSBjb25zdDsKLSAgICB2aXJ0dWFs
IGJvb2wgaXNTZWFyY2hGaWVsZCgpIGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCBpc1dlYkFyZWEo
KSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgaXNGaWxlVXBsb2FkQnV0dG9uKCkgY29uc3Q7Ci0g
ICAgdmlydHVhbCBib29sIGlzSW5wdXRJbWFnZSgpIGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCBp
c1Byb2dyZXNzSW5kaWNhdG9yKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBib29sIGlzU2xpZGVyKCkg
Y29uc3Q7Ci0gICAgdmlydHVhbCBib29sIGlzTWVudVJlbGF0ZWQoKSBjb25zdDsKLSAgICB2aXJ0
dWFsIGJvb2wgaXNNZW51KCkgY29uc3Q7Ci0gICAgdmlydHVhbCBib29sIGlzTWVudUJhcigpIGNv
bnN0OwotICAgIHZpcnR1YWwgYm9vbCBpc01lbnVCdXR0b24oKSBjb25zdDsKLSAgICB2aXJ0dWFs
IGJvb2wgaXNNZW51SXRlbSgpIGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCBpc0NvbnRyb2woKSBj
b25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgaXNGaWVsZHNldCgpIGNvbnN0OwotICAgIHZpcnR1YWwg
Ym9vbCBpc0dyb3VwKCkgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIGJvb2wgaXNFbmFibGVkKCkgY29u
c3Q7CiAgICAgdmlydHVhbCBib29sIGlzU2VsZWN0ZWQoKSBjb25zdDsKICAgICB2aXJ0dWFsIGJv
b2wgaXNGb2N1c2VkKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBib29sIGlzQ2hlY2tlZCgpIGNvbnN0
OwotICAgIHZpcnR1YWwgYm9vbCBpc0hvdmVyZWQoKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wg
aXNJbmRldGVybWluYXRlKCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIGlzTG9hZGVkKCkgY29u
c3Q7Ci0gICAgdmlydHVhbCBib29sIGlzTXVsdGlTZWxlY3RhYmxlKCkgY29uc3Q7CiAgICAgdmly
dHVhbCBib29sIGlzT2ZmU2NyZWVuKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBib29sIGlzUHJlc3Nl
ZCgpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBpc1JlYWRPbmx5KCkgY29uc3Q7CiAgICAgdmly
dHVhbCBib29sIGlzVW52aXNpdGVkKCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIGlzVmlzaXRl
ZCgpIGNvbnN0OyAgICAgICAgCi0gICAgdmlydHVhbCBib29sIGlzUmVxdWlyZWQoKSBjb25zdDsK
ICAgICB2aXJ0dWFsIGJvb2wgaXNMaW5rZWQoKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgaGFz
Qm9sZEZvbnQoKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgaGFzSXRhbGljRm9udCgpIGNvbnN0
OwpAQCAtMTIzLDE1ICs5NSw2IEBAIHB1YmxpYzoKICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5j
bHVzaW9uIGFjY2Vzc2liaWxpdHlJc0lnbm9yZWRCYXNlKCkgY29uc3Q7CiAgICAgdmlydHVhbCBi
b29sIGFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSBjb25zdDsKICAgICAKLSAgICB2aXJ0dWFsIGlu
dCBoZWFkaW5nTGV2ZWwoKSBjb25zdDsKLSAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlCdXR0b25T
dGF0ZSBjaGVja2JveE9yUmFkaW9WYWx1ZSgpIGNvbnN0OwotICAgIHZpcnR1YWwgU3RyaW5nIHZh
bHVlRGVzY3JpcHRpb24oKSBjb25zdDsKLSAgICB2aXJ0dWFsIGZsb2F0IHZhbHVlRm9yUmFuZ2Uo
KSBjb25zdDsKLSAgICB2aXJ0dWFsIGZsb2F0IG1heFZhbHVlRm9yUmFuZ2UoKSBjb25zdDsKLSAg
ICB2aXJ0dWFsIGZsb2F0IG1pblZhbHVlRm9yUmFuZ2UoKSBjb25zdDsKLSAgICB2aXJ0dWFsIGZs
b2F0IHN0ZXBWYWx1ZUZvclJhbmdlKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5
T2JqZWN0KiBzZWxlY3RlZFJhZGlvQnV0dG9uKCk7Ci0gICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5
T2JqZWN0KiBzZWxlY3RlZFRhYkl0ZW0oKTsKICAgICB2aXJ0dWFsIGludCBsYXlvdXRDb3VudCgp
IGNvbnN0OwogICAgIHZpcnR1YWwgZG91YmxlIGVzdGltYXRlZExvYWRpbmdQcm9ncmVzcygpIGNv
bnN0OwogICAgIApAQCAtMTU2LDEyICsxMTksOCBAQCBwdWJsaWM6CiAgICAgLy8gU2hvdWxkIGJl
IGNhbGxlZCBvbiB0aGUgcm9vdCBhY2Nlc3NpYmlsaXR5IG9iamVjdCB0byBraWNrIG9mZiBhIGhp
dCB0ZXN0LgogICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogYWNjZXNzaWJpbGl0eUhp
dFRlc3QoY29uc3QgSW50UG9pbnQmKSBjb25zdDsKIAotICAgIHZpcnR1YWwgRWxlbWVudCogYWN0
aW9uRWxlbWVudCgpIGNvbnN0OwotICAgIEVsZW1lbnQqIG1vdXNlQnV0dG9uTGlzdGVuZXIoKSBj
b25zdDsKICAgICBGcmFtZVZpZXcqIGZyYW1lVmlld0lmUmVuZGVyVmlldygpIGNvbnN0OwogICAg
IHZpcnR1YWwgRWxlbWVudCogYW5jaG9yRWxlbWVudCgpIGNvbnN0OwotICAgIEFjY2Vzc2liaWxp
dHlPYmplY3QqIG1lbnVGb3JNZW51QnV0dG9uKCkgY29uc3Q7Ci0gICAgQWNjZXNzaWJpbGl0eU9i
amVjdCogbWVudUJ1dHRvbkZvck1lbnUoKSBjb25zdDsKICAgICAKICAgICB2aXJ0dWFsIExheW91
dFJlY3QgYm91bmRpbmdCb3hSZWN0KCkgY29uc3Q7CiAgICAgdmlydHVhbCBMYXlvdXRSZWN0IGVs
ZW1lbnRSZWN0KCkgY29uc3Q7CkBAIC0xODQsOCArMTQzLDYgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgUGxhaW5UZXh0UmFuZ2Ugc2VsZWN0ZWRUZXh0UmFuZ2UoKSBjb25zdDsKICAgICB2aXJ0dWFs
IFZpc2libGVTZWxlY3Rpb24gc2VsZWN0aW9uKCkgY29uc3Q7CiAgICAgdmlydHVhbCBTdHJpbmcg
c3RyaW5nVmFsdWUoKSBjb25zdDsKLSAgICB2aXJ0dWFsIFN0cmluZyBhcmlhTGFiZWxlZEJ5QXR0
cmlidXRlKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBTdHJpbmcgdGl0bGUoKSBjb25zdDsKICAgICB2
aXJ0dWFsIFN0cmluZyBhcmlhRGVzY3JpYmVkQnlBdHRyaWJ1dGUoKSBjb25zdDsKICAgICB2aXJ0
dWFsIFN0cmluZyBhY2Nlc3NpYmlsaXR5RGVzY3JpcHRpb24oKSBjb25zdDsKICAgICB2aXJ0dWFs
IFN0cmluZyBoZWxwVGV4dCgpIGNvbnN0OwpAQCAtMTk5LDcgKzE1Niw2IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIFdpZGdldCogd2lkZ2V0Rm9yQXR0YWNobWVudFZpZXcoKSBjb25zdDsKICAgICB2
aXJ0dWFsIHZvaWQgZ2V0RG9jdW1lbnRMaW5rcyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3Im
KTsKICAgICB2aXJ0dWFsIEZyYW1lVmlldyogZG9jdW1lbnRGcmFtZVZpZXcoKSBjb25zdDsKLSAg
ICB2aXJ0dWFsIHVuc2lnbmVkIGhpZXJhcmNoaWNhbExldmVsKCkgY29uc3Q7CiAKICAgICB2aXJ0
dWFsIHZvaWQgY2xlYXJDaGlsZHJlbigpOwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVDaGlsZHJl
bklmTmVjZXNzYXJ5KCk7CkBAIC0yMDgsMTAgKzE2NCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgc2V0U2VsZWN0ZWRUZXh0UmFuZ2UoY29uc3QgUGxhaW5UZXh0UmFuZ2UmKTsKICAgICB2
aXJ0dWFsIHZvaWQgc2V0VmFsdWUoY29uc3QgU3RyaW5nJik7CiAgICAgdmlydHVhbCB2b2lkIHNl
dFNlbGVjdGVkUm93cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKTsKLSAgICB2aXJ0dWFs
IHZvaWQgY2hhbmdlVmFsdWVCeVBlcmNlbnQoZmxvYXQgcGVyY2VudENoYW5nZSk7CiAgICAgdmly
dHVhbCBBY2Nlc3NpYmlsaXR5T3JpZW50YXRpb24gb3JpZW50YXRpb24oKSBjb25zdDsKLSAgICB2
aXJ0dWFsIHZvaWQgaW5jcmVtZW50KCk7Ci0gICAgdmlydHVhbCB2b2lkIGRlY3JlbWVudCgpOwog
ICAgIAogICAgIHZpcnR1YWwgdm9pZCBkZXRhY2goKTsKICAgICB2aXJ0dWFsIHZvaWQgY29udGVu
dENoYW5nZWQoKTsKQEAgLTI2Myw3ICsyMTYsNiBAQCBwcm90ZWN0ZWQ6CiAgICAgUmVuZGVyT2Jq
ZWN0KiBtX3JlbmRlcmVyOwogICAgIAogICAgIHZvaWQgc2V0UmVuZGVyT2JqZWN0KFJlbmRlck9i
amVjdCogcmVuZGVyZXIpIHsgbV9yZW5kZXJlciA9IHJlbmRlcmVyOyB9Ci0gICAgdm9pZCBhcmlh
TGFiZWxlZEJ5RWxlbWVudHMoVmVjdG9yPEVsZW1lbnQqPiYgZWxlbWVudHMpIGNvbnN0OwogICAg
IGJvb2wgbmVlZHNUb1VwZGF0ZUNoaWxkcmVuKCkgY29uc3QgeyByZXR1cm4gbV9jaGlsZHJlbkRp
cnR5OyB9CiAgICAgU2Nyb2xsYWJsZUFyZWEqIGdldFNjcm9sbGFibGVBcmVhSWZTY3JvbGxhYmxl
KCkgY29uc3Q7CiAgICAgdm9pZCBzY3JvbGxUbyhjb25zdCBJbnRQb2ludCYpIGNvbnN0OwpAQCAt
Mjc2LDcgKzIyOCw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBhcmlhTGlzdGJveFNlbGVjdGVkQ2hp
bGRyZW4oQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJik7CiAgICAgdm9pZCBhcmlhTGlzdGJv
eFZpc2libGVDaGlsZHJlbihBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKTsKICAgICBib29s
IGFyaWFJc0hpZGRlbigpIGNvbnN0OwotICAgIGJvb2wgaXNEZXNjZW5kYW50T2ZCYXJyZW5QYXJl
bnQoKSBjb25zdDsKICAgICBib29sIGlzQWxsb3dlZENoaWxkT2ZUcmVlKCkgY29uc3Q7CiAgICAg
Ym9vbCBoYXNUZXh0QWx0ZXJuYXRpdmUoKSBjb25zdDsKICAgICBTdHJpbmcgcG9zaXRpb25hbERl
c2NyaXB0aW9uRm9yTVNBQSgpIGNvbnN0OwpAQCAtMjg1LDEzICsyMzYsNyBAQCBwcml2YXRlOgog
ICAgIGJvb2wgbm9kZUlzVGV4dENvbnRyb2woY29uc3QgTm9kZSopIGNvbnN0OwogICAgIHZpcnR1
YWwgdm9pZCBzZXROZWVkc1RvVXBkYXRlQ2hpbGRyZW4oKSB7IG1fY2hpbGRyZW5EaXJ0eSA9IHRy
dWU7IH0KIAotICAgIEVsZW1lbnQqIG1lbnVFbGVtZW50Rm9yTWVudUJ1dHRvbigpIGNvbnN0Owot
ICAgIEVsZW1lbnQqIG1lbnVJdGVtRWxlbWVudEZvck1lbnUoKSBjb25zdDsKLQogICAgIGJvb2wg
aXNUYWJJdGVtU2VsZWN0ZWQoKSBjb25zdDsKLSAgICB2b2lkIGFsdGVyU2xpZGVyVmFsdWUoYm9v
bCBpbmNyZWFzZSk7Ci0gICAgdm9pZCBjaGFuZ2VWYWx1ZUJ5U3RlcChib29sIGluY3JlYXNlKTsK
LSAgICBib29sIGlzTmF0aXZlQ2hlY2tib3hPclJhZGlvKCkgY29uc3Q7CiAgICAgTGF5b3V0UmVj
dCBjaGVja2JveE9yUmFkaW9SZWN0KCkgY29uc3Q7CiAgICAgdm9pZCBhZGRSYWRpb0J1dHRvbkdy
b3VwTWVtYmVycyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIGxpbmtlZFVJRWxlbWVudHMp
IGNvbnN0OwogICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGludGVybmFsTGlua0VsZW1lbnQoKSBj
b25zdDsKQEAgLTMwMSw4ICsyNDYsNiBAQCBwcml2YXRlOgogICAgIFJlbmRlck9iamVjdCogcmVu
ZGVyUGFyZW50T2JqZWN0KCkgY29uc3Q7CiAgICAgYm9vbCBpc0Rlc2NlbmRhbnRPZkVsZW1lbnRU
eXBlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUpIGNvbnN0OwogICAgIC8vIFRoaXMgcmV0
dXJucyB0cnVlIGlmIGl0J3MgZm9jdXNhYmxlIGJ1dCBpdCdzIG5vdCBjb250ZW50IGVkaXRhYmxl
IGFuZCBpdCdzIG5vdCBhIGNvbnRyb2wgb3IgQVJJQSBjb250cm9sLgotICAgIGJvb2wgaXNHZW5l
cmljRm9jdXNhYmxlRWxlbWVudCgpIGNvbnN0OwotICAgIGJvb2wgaXNBUklBUmFuZ2UoKSBjb25z
dDsKIAogICAgIHZvaWQgYWRkVGV4dEZpZWxkQ2hpbGRyZW4oKTsKICAgICB2b2lkIGFkZEltYWdl
TWFwQ2hpbGRyZW4oKTsKQEAgLTMxNyw5ICsyNjAsNiBAQCBwcml2YXRlOgogICAgIGJvb2wgZWxl
bWVudEF0dHJpYnV0ZVZhbHVlKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdDsKICAgICB2b2lk
IHNldEVsZW1lbnRBdHRyaWJ1dGVWYWx1ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgYm9vbCk7CiAg
ICAgCi0gICAgU3RyaW5nIGFjY2Vzc2liaWxpdHlEZXNjcmlwdGlvbkZvckVsZW1lbnRzKFZlY3Rv
cjxFbGVtZW50Kj4gJmVsZW1lbnRzKSBjb25zdDsKLSAgICB2b2lkIGVsZW1lbnRzRnJvbUF0dHJp
YnV0ZShWZWN0b3I8RWxlbWVudCo+JiBlbGVtZW50cywgY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNv
bnN0OwotICAgIFN0cmluZyBhcmlhQWNjZXNzaWJpbGl0eURlc2NyaXB0aW9uKCkgY29uc3Q7CiAg
ICAgU3RyaW5nIHdlYkFyZWFBY2Nlc3NpYmlsaXR5RGVzY3JpcHRpb24oKSBjb25zdDsKIAogICAg
IHZpcnR1YWwgRVNwZWFrIHNwZWFrUHJvcGVydHkoKSBjb25zdDsKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAxMjcwNGY1NWMy
OTU2OThjNDRiYmNiN2E3ZGQ4ZWVlYzQzOGEzZDA1Li40YjY3YmQ3Y2VkMzkxYWY4MTIyNWY3OWIz
ZTdiODU1NjJkYTljMmI5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTItMDktMTIgIFNoZXJp
ZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgorCisgICAgICAgIFVucmV2aWV3
ZWQsIHJvbGxpbmcgb3V0IHIxMjgzNTMuCisgICAgICAgIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcv
Y2hhbmdlc2V0LzEyODM1MworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9OTY1NjUKKworICAgICAgICBSZS1sYW5kIGNoYW5nZSB0aGF0IGJyb2tlIHRlc3Rz
IG9uIENocm9taXVtLiBUZXN0cyBhcmUgbm93CisgICAgICAgIGRpc2FibGVkLCB3aWxsIHJlYmFz
ZWxpbmUgYWZ0ZXIgdGhpcyByb2xscy4gKFJlcXVlc3RlZCBieQorICAgICAgICBkbWF6em9uaSBv
biAjd2Via2l0KS4KKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvY2FudmFzLWZhbGxiYWNrLWNv
bnRlbnQtMi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvY2Fu
dmFzLWZhbGxiYWNrLWNvbnRlbnQtMi5odG1sOiBBZGRlZC4KKwogMjAxMi0wOS0xMiAgU3RlcGhh
bmllIExld2lzICA8c2xld2lzQGFwcGxlLmNvbT4KIAogICAgICAgICBmYXN0L2V2ZW50cy9kaXNw
YXRjaC1tZXNzYWdlLXN0cmluZy1kYXRhLmh0bWwgZmFpbHMgb24gbWFjIHdrMgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9jYW52YXMtZmFsbGJhY2stY29udGVudC0yLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvY2FudmFzLWZhbGxiYWNrLWNv
bnRlbnQtMi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGIyODQ2YzJkNmRhYWVhYjExYmNjNzY4
MWQ0OTk5YWU4MTVkMjgwYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2FjY2Vzc2li
aWxpdHkvY2FudmFzLWZhbGxiYWNrLWNvbnRlbnQtMi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwz
NzYgQEAKK0xpbmsgIEJ1dHRvbiAgQnV0dG9uICBCdXR0b24gICAgICAgICAgICAgICAgIAorRm9j
dXNhYmxlCitIZWFkaW5nCisKK0FSSUEgYnV0dG9uCitBUklBIGRpc2FibGVkIGJ1dHRvbgorQVJJ
QSBlbmFibGVkIGJ1dHRvbgorQVJJQSByZXF1aXJlZCBidXR0b24KK0FSSUEgdG9nZ2xlIGJ1dHRv
bgorQVJJQSBsaW5rCitUaGlzIHRlc3RzIGEgbnVtYmVyIG9mIGRpZmZlcmVudCBlbGVtZW50cyBp
biBjYW52YXMgZmFsbGJhY2sgY29udGVudCB0byBtYWtlIHN1cmUgdGhlaXIgYWNjZXNzaWJsZSBh
dHRyaWJ1dGVzIGFyZSBlc3NlbnRpYWxseSBpZGVudGljYWwgdG8gdGhlIGNvcnJlc3BvbmRpbmcg
ZWxlbWVudHMgb3V0c2lkZSBvZiBjYW52YXMgZmFsbGJhY2sgY29udGVudC4KKworT24gc3VjY2Vz
cywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkg
IlRFU1QgQ09NUExFVEUiLgorCisKK2xpbmsxCitQQVNTIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQg
PT0gZWxlbWVudDEgaXMgdHJ1ZQorbGluazIKK1BBU1MgZG9jdW1lbnQuYWN0aXZlRWxlbWVudCA9
PSBlbGVtZW50MiBpcyB0cnVlCitQQVNTIGF4RWxlbWVudDIucm9sZSBpcyBheEVsZW1lbnQxLnJv
bGUKK1BBU1MgYXhFbGVtZW50Mi5yb2xlRGVzY3JpcHRpb24gaXMgYXhFbGVtZW50MS5yb2xlRGVz
Y3JpcHRpb24KK1BBU1MgYXhFbGVtZW50Mi50aXRsZSBpcyBheEVsZW1lbnQxLnRpdGxlCitQQVNT
IGF4RWxlbWVudDIuZGVzY3JpcHRpb24gaXMgYXhFbGVtZW50MS5kZXNjcmlwdGlvbgorUEFTUyBh
eEVsZW1lbnQyLmhlbHBUZXh0IGlzIGF4RWxlbWVudDEuaGVscFRleHQKK1BBU1MgYXhFbGVtZW50
Mi5zdHJpbmdWYWx1ZSBpcyBheEVsZW1lbnQxLnN0cmluZ1ZhbHVlCitQQVNTIGF4RWxlbWVudDIu
aXNFbmFibGVkIGlzIGF4RWxlbWVudDEuaXNFbmFibGVkCitQQVNTIGF4RWxlbWVudDIuaXNSZXF1
aXJlZCBpcyBheEVsZW1lbnQxLmlzUmVxdWlyZWQKK1BBU1MgYXhFbGVtZW50Mi5pc0NoZWNrZWQg
aXMgYXhFbGVtZW50MS5pc0NoZWNrZWQKK1BBU1MgYXhFbGVtZW50Mi5pbnRWYWx1ZSBpcyBheEVs
ZW1lbnQxLmludFZhbHVlCitQQVNTIGF4RWxlbWVudDIubWluVmFsdWUgaXMgYXhFbGVtZW50MS5t
aW5WYWx1ZQorUEFTUyBheEVsZW1lbnQyLm1heFZhbHVlIGlzIGF4RWxlbWVudDEubWF4VmFsdWUK
KworYnV0dG9uMQorUEFTUyBkb2N1bWVudC5hY3RpdmVFbGVtZW50ID09IGVsZW1lbnQxIGlzIHRy
dWUKK2J1dHRvbjIKK1BBU1MgZG9jdW1lbnQuYWN0aXZlRWxlbWVudCA9PSBlbGVtZW50MiBpcyB0
cnVlCitQQVNTIGF4RWxlbWVudDIucm9sZSBpcyBheEVsZW1lbnQxLnJvbGUKK1BBU1MgYXhFbGVt
ZW50Mi5yb2xlRGVzY3JpcHRpb24gaXMgYXhFbGVtZW50MS5yb2xlRGVzY3JpcHRpb24KK1BBU1Mg
YXhFbGVtZW50Mi50aXRsZSBpcyBheEVsZW1lbnQxLnRpdGxlCitQQVNTIGF4RWxlbWVudDIuZGVz
Y3JpcHRpb24gaXMgYXhFbGVtZW50MS5kZXNjcmlwdGlvbgorUEFTUyBheEVsZW1lbnQyLmhlbHBU
ZXh0IGlzIGF4RWxlbWVudDEuaGVscFRleHQKK1BBU1MgYXhFbGVtZW50Mi5zdHJpbmdWYWx1ZSBp
cyBheEVsZW1lbnQxLnN0cmluZ1ZhbHVlCitQQVNTIGF4RWxlbWVudDIuaXNFbmFibGVkIGlzIGF4
RWxlbWVudDEuaXNFbmFibGVkCitQQVNTIGF4RWxlbWVudDIuaXNSZXF1aXJlZCBpcyBheEVsZW1l
bnQxLmlzUmVxdWlyZWQKK1BBU1MgYXhFbGVtZW50Mi5pc0NoZWNrZWQgaXMgYXhFbGVtZW50MS5p
c0NoZWNrZWQKK1BBU1MgYXhFbGVtZW50Mi5pbnRWYWx1ZSBpcyBheEVsZW1lbnQxLmludFZhbHVl
CitQQVNTIGF4RWxlbWVudDIubWluVmFsdWUgaXMgYXhFbGVtZW50MS5taW5WYWx1ZQorUEFTUyBh
eEVsZW1lbnQyLm1heFZhbHVlIGlzIGF4RWxlbWVudDEubWF4VmFsdWUKKworbGFiZWxlZC1idXR0
b24xCitQQVNTIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT0gZWxlbWVudDEgaXMgdHJ1ZQorbGFi
ZWxlZC1idXR0b24yCitQQVNTIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT0gZWxlbWVudDIgaXMg
dHJ1ZQorUEFTUyBheEVsZW1lbnQyLnJvbGUgaXMgYXhFbGVtZW50MS5yb2xlCitQQVNTIGF4RWxl
bWVudDIucm9sZURlc2NyaXB0aW9uIGlzIGF4RWxlbWVudDEucm9sZURlc2NyaXB0aW9uCitQQVNT
IGF4RWxlbWVudDIudGl0bGUgaXMgYXhFbGVtZW50MS50aXRsZQorUEFTUyBheEVsZW1lbnQyLmRl
c2NyaXB0aW9uIGlzIGF4RWxlbWVudDEuZGVzY3JpcHRpb24KK1BBU1MgYXhFbGVtZW50Mi5oZWxw
VGV4dCBpcyBheEVsZW1lbnQxLmhlbHBUZXh0CitQQVNTIGF4RWxlbWVudDIuc3RyaW5nVmFsdWUg
aXMgYXhFbGVtZW50MS5zdHJpbmdWYWx1ZQorUEFTUyBheEVsZW1lbnQyLmlzRW5hYmxlZCBpcyBh
eEVsZW1lbnQxLmlzRW5hYmxlZAorUEFTUyBheEVsZW1lbnQyLmlzUmVxdWlyZWQgaXMgYXhFbGVt
ZW50MS5pc1JlcXVpcmVkCitQQVNTIGF4RWxlbWVudDIuaXNDaGVja2VkIGlzIGF4RWxlbWVudDEu
aXNDaGVja2VkCitQQVNTIGF4RWxlbWVudDIuaW50VmFsdWUgaXMgYXhFbGVtZW50MS5pbnRWYWx1
ZQorUEFTUyBheEVsZW1lbnQyLm1pblZhbHVlIGlzIGF4RWxlbWVudDEubWluVmFsdWUKK1BBU1Mg
YXhFbGVtZW50Mi5tYXhWYWx1ZSBpcyBheEVsZW1lbnQxLm1heFZhbHVlCisKK2J1dHRvbi13aXRo
LXRpdGxlMQorUEFTUyBkb2N1bWVudC5hY3RpdmVFbGVtZW50ID09IGVsZW1lbnQxIGlzIHRydWUK
K2J1dHRvbi13aXRoLXRpdGxlMgorUEFTUyBkb2N1bWVudC5hY3RpdmVFbGVtZW50ID09IGVsZW1l
bnQyIGlzIHRydWUKK1BBU1MgYXhFbGVtZW50Mi5yb2xlIGlzIGF4RWxlbWVudDEucm9sZQorUEFT
UyBheEVsZW1lbnQyLnJvbGVEZXNjcmlwdGlvbiBpcyBheEVsZW1lbnQxLnJvbGVEZXNjcmlwdGlv
bgorUEFTUyBheEVsZW1lbnQyLnRpdGxlIGlzIGF4RWxlbWVudDEudGl0bGUKK1BBU1MgYXhFbGVt
ZW50Mi5kZXNjcmlwdGlvbiBpcyBheEVsZW1lbnQxLmRlc2NyaXB0aW9uCitQQVNTIGF4RWxlbWVu
dDIuaGVscFRleHQgaXMgYXhFbGVtZW50MS5oZWxwVGV4dAorUEFTUyBheEVsZW1lbnQyLnN0cmlu
Z1ZhbHVlIGlzIGF4RWxlbWVudDEuc3RyaW5nVmFsdWUKK1BBU1MgYXhFbGVtZW50Mi5pc0VuYWJs
ZWQgaXMgYXhFbGVtZW50MS5pc0VuYWJsZWQKK1BBU1MgYXhFbGVtZW50Mi5pc1JlcXVpcmVkIGlz
IGF4RWxlbWVudDEuaXNSZXF1aXJlZAorUEFTUyBheEVsZW1lbnQyLmlzQ2hlY2tlZCBpcyBheEVs
ZW1lbnQxLmlzQ2hlY2tlZAorUEFTUyBheEVsZW1lbnQyLmludFZhbHVlIGlzIGF4RWxlbWVudDEu
aW50VmFsdWUKK1BBU1MgYXhFbGVtZW50Mi5taW5WYWx1ZSBpcyBheEVsZW1lbnQxLm1pblZhbHVl
CitQQVNTIGF4RWxlbWVudDIubWF4VmFsdWUgaXMgYXhFbGVtZW50MS5tYXhWYWx1ZQorCit0ZXh0
MQorUEFTUyBkb2N1bWVudC5hY3RpdmVFbGVtZW50ID09IGVsZW1lbnQxIGlzIHRydWUKK3RleHQy
CitQQVNTIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT0gZWxlbWVudDIgaXMgdHJ1ZQorUEFTUyBh
eEVsZW1lbnQyLnJvbGUgaXMgYXhFbGVtZW50MS5yb2xlCitQQVNTIGF4RWxlbWVudDIucm9sZURl
c2NyaXB0aW9uIGlzIGF4RWxlbWVudDEucm9sZURlc2NyaXB0aW9uCitQQVNTIGF4RWxlbWVudDIu
dGl0bGUgaXMgYXhFbGVtZW50MS50aXRsZQorUEFTUyBheEVsZW1lbnQyLmRlc2NyaXB0aW9uIGlz
IGF4RWxlbWVudDEuZGVzY3JpcHRpb24KK1BBU1MgYXhFbGVtZW50Mi5oZWxwVGV4dCBpcyBheEVs
ZW1lbnQxLmhlbHBUZXh0CitQQVNTIGF4RWxlbWVudDIuc3RyaW5nVmFsdWUgaXMgYXhFbGVtZW50
MS5zdHJpbmdWYWx1ZQorUEFTUyBheEVsZW1lbnQyLmlzRW5hYmxlZCBpcyBheEVsZW1lbnQxLmlz
RW5hYmxlZAorUEFTUyBheEVsZW1lbnQyLmlzUmVxdWlyZWQgaXMgYXhFbGVtZW50MS5pc1JlcXVp
cmVkCitQQVNTIGF4RWxlbWVudDIuaXNDaGVja2VkIGlzIGF4RWxlbWVudDEuaXNDaGVja2VkCitQ
QVNTIGF4RWxlbWVudDIuaW50VmFsdWUgaXMgYXhFbGVtZW50MS5pbnRWYWx1ZQorUEFTUyBheEVs
ZW1lbnQyLm1pblZhbHVlIGlzIGF4RWxlbWVudDEubWluVmFsdWUKK1BBU1MgYXhFbGVtZW50Mi5t
YXhWYWx1ZSBpcyBheEVsZW1lbnQxLm1heFZhbHVlCisKK2NoZWNrYm94MQorUEFTUyBkb2N1bWVu
dC5hY3RpdmVFbGVtZW50ID09IGVsZW1lbnQxIGlzIHRydWUKK2NoZWNrYm94MgorUEFTUyBkb2N1
bWVudC5hY3RpdmVFbGVtZW50ID09IGVsZW1lbnQyIGlzIHRydWUKK1BBU1MgYXhFbGVtZW50Mi5y
b2xlIGlzIGF4RWxlbWVudDEucm9sZQorUEFTUyBheEVsZW1lbnQyLnJvbGVEZXNjcmlwdGlvbiBp
cyBheEVsZW1lbnQxLnJvbGVEZXNjcmlwdGlvbgorUEFTUyBheEVsZW1lbnQyLnRpdGxlIGlzIGF4
RWxlbWVudDEudGl0bGUKK1BBU1MgYXhFbGVtZW50Mi5kZXNjcmlwdGlvbiBpcyBheEVsZW1lbnQx
LmRlc2NyaXB0aW9uCitQQVNTIGF4RWxlbWVudDIuaGVscFRleHQgaXMgYXhFbGVtZW50MS5oZWxw
VGV4dAorUEFTUyBheEVsZW1lbnQyLnN0cmluZ1ZhbHVlIGlzIGF4RWxlbWVudDEuc3RyaW5nVmFs
dWUKK1BBU1MgYXhFbGVtZW50Mi5pc0VuYWJsZWQgaXMgYXhFbGVtZW50MS5pc0VuYWJsZWQKK1BB
U1MgYXhFbGVtZW50Mi5pc1JlcXVpcmVkIGlzIGF4RWxlbWVudDEuaXNSZXF1aXJlZAorUEFTUyBh
eEVsZW1lbnQyLmlzQ2hlY2tlZCBpcyBheEVsZW1lbnQxLmlzQ2hlY2tlZAorUEFTUyBheEVsZW1l
bnQyLmludFZhbHVlIGlzIGF4RWxlbWVudDEuaW50VmFsdWUKK1BBU1MgYXhFbGVtZW50Mi5taW5W
YWx1ZSBpcyBheEVsZW1lbnQxLm1pblZhbHVlCitQQVNTIGF4RWxlbWVudDIubWF4VmFsdWUgaXMg
YXhFbGVtZW50MS5tYXhWYWx1ZQorCitudW1iZXIxCitQQVNTIGRvY3VtZW50LmFjdGl2ZUVsZW1l
bnQgPT0gZWxlbWVudDEgaXMgdHJ1ZQorbnVtYmVyMgorUEFTUyBkb2N1bWVudC5hY3RpdmVFbGVt
ZW50ID09IGVsZW1lbnQyIGlzIHRydWUKK1BBU1MgYXhFbGVtZW50Mi5yb2xlIGlzIGF4RWxlbWVu
dDEucm9sZQorUEFTUyBheEVsZW1lbnQyLnJvbGVEZXNjcmlwdGlvbiBpcyBheEVsZW1lbnQxLnJv
bGVEZXNjcmlwdGlvbgorUEFTUyBheEVsZW1lbnQyLnRpdGxlIGlzIGF4RWxlbWVudDEudGl0bGUK
K1BBU1MgYXhFbGVtZW50Mi5kZXNjcmlwdGlvbiBpcyBheEVsZW1lbnQxLmRlc2NyaXB0aW9uCitQ
QVNTIGF4RWxlbWVudDIuaGVscFRleHQgaXMgYXhFbGVtZW50MS5oZWxwVGV4dAorUEFTUyBheEVs
ZW1lbnQyLnN0cmluZ1ZhbHVlIGlzIGF4RWxlbWVudDEuc3RyaW5nVmFsdWUKK1BBU1MgYXhFbGVt
ZW50Mi5pc0VuYWJsZWQgaXMgYXhFbGVtZW50MS5pc0VuYWJsZWQKK1BBU1MgYXhFbGVtZW50Mi5p
c1JlcXVpcmVkIGlzIGF4RWxlbWVudDEuaXNSZXF1aXJlZAorUEFTUyBheEVsZW1lbnQyLmlzQ2hl
Y2tlZCBpcyBheEVsZW1lbnQxLmlzQ2hlY2tlZAorUEFTUyBheEVsZW1lbnQyLmludFZhbHVlIGlz
IGF4RWxlbWVudDEuaW50VmFsdWUKK1BBU1MgYXhFbGVtZW50Mi5taW5WYWx1ZSBpcyBheEVsZW1l
bnQxLm1pblZhbHVlCitQQVNTIGF4RWxlbWVudDIubWF4VmFsdWUgaXMgYXhFbGVtZW50MS5tYXhW
YWx1ZQorCityYWRpbzEKK1BBU1MgZG9jdW1lbnQuYWN0aXZlRWxlbWVudCA9PSBlbGVtZW50MSBp
cyB0cnVlCityYWRpbzIKK1BBU1MgZG9jdW1lbnQuYWN0aXZlRWxlbWVudCA9PSBlbGVtZW50MiBp
cyB0cnVlCitQQVNTIGF4RWxlbWVudDIucm9sZSBpcyBheEVsZW1lbnQxLnJvbGUKK1BBU1MgYXhF
bGVtZW50Mi5yb2xlRGVzY3JpcHRpb24gaXMgYXhFbGVtZW50MS5yb2xlRGVzY3JpcHRpb24KK1BB
U1MgYXhFbGVtZW50Mi50aXRsZSBpcyBheEVsZW1lbnQxLnRpdGxlCitQQVNTIGF4RWxlbWVudDIu
ZGVzY3JpcHRpb24gaXMgYXhFbGVtZW50MS5kZXNjcmlwdGlvbgorUEFTUyBheEVsZW1lbnQyLmhl
bHBUZXh0IGlzIGF4RWxlbWVudDEuaGVscFRleHQKK1BBU1MgYXhFbGVtZW50Mi5zdHJpbmdWYWx1
ZSBpcyBheEVsZW1lbnQxLnN0cmluZ1ZhbHVlCitQQVNTIGF4RWxlbWVudDIuaXNFbmFibGVkIGlz
IGF4RWxlbWVudDEuaXNFbmFibGVkCitQQVNTIGF4RWxlbWVudDIuaXNSZXF1aXJlZCBpcyBheEVs
ZW1lbnQxLmlzUmVxdWlyZWQKK1BBU1MgYXhFbGVtZW50Mi5pc0NoZWNrZWQgaXMgYXhFbGVtZW50
MS5pc0NoZWNrZWQKK1BBU1MgYXhFbGVtZW50Mi5pbnRWYWx1ZSBpcyBheEVsZW1lbnQxLmludFZh
bHVlCitQQVNTIGF4RWxlbWVudDIubWluVmFsdWUgaXMgYXhFbGVtZW50MS5taW5WYWx1ZQorUEFT
UyBheEVsZW1lbnQyLm1heFZhbHVlIGlzIGF4RWxlbWVudDEubWF4VmFsdWUKKworc2xpZGVyMQor
UEFTUyBkb2N1bWVudC5hY3RpdmVFbGVtZW50ID09IGVsZW1lbnQxIGlzIHRydWUKK3NsaWRlcjIK
K1BBU1MgZG9jdW1lbnQuYWN0aXZlRWxlbWVudCA9PSBlbGVtZW50MiBpcyB0cnVlCitQQVNTIGF4
RWxlbWVudDIucm9sZSBpcyBheEVsZW1lbnQxLnJvbGUKK1BBU1MgYXhFbGVtZW50Mi5yb2xlRGVz
Y3JpcHRpb24gaXMgYXhFbGVtZW50MS5yb2xlRGVzY3JpcHRpb24KK1BBU1MgYXhFbGVtZW50Mi50
aXRsZSBpcyBheEVsZW1lbnQxLnRpdGxlCitQQVNTIGF4RWxlbWVudDIuZGVzY3JpcHRpb24gaXMg
YXhFbGVtZW50MS5kZXNjcmlwdGlvbgorUEFTUyBheEVsZW1lbnQyLmhlbHBUZXh0IGlzIGF4RWxl
bWVudDEuaGVscFRleHQKK1BBU1MgYXhFbGVtZW50Mi5zdHJpbmdWYWx1ZSBpcyBheEVsZW1lbnQx
LnN0cmluZ1ZhbHVlCitQQVNTIGF4RWxlbWVudDIuaXNFbmFibGVkIGlzIGF4RWxlbWVudDEuaXNF
bmFibGVkCitQQVNTIGF4RWxlbWVudDIuaXNSZXF1aXJlZCBpcyBheEVsZW1lbnQxLmlzUmVxdWly
ZWQKK1BBU1MgYXhFbGVtZW50Mi5pc0NoZWNrZWQgaXMgYXhFbGVtZW50MS5pc0NoZWNrZWQKK1BB
U1MgYXhFbGVtZW50Mi5pbnRWYWx1ZSBpcyBheEVsZW1lbnQxLmludFZhbHVlCitQQVNTIGF4RWxl
bWVudDIubWluVmFsdWUgaXMgYXhFbGVtZW50MS5taW5WYWx1ZQorUEFTUyBheEVsZW1lbnQyLm1h
eFZhbHVlIGlzIGF4RWxlbWVudDEubWF4VmFsdWUKKworc3VibWl0MQorUEFTUyBkb2N1bWVudC5h
Y3RpdmVFbGVtZW50ID09IGVsZW1lbnQxIGlzIHRydWUKK3N1Ym1pdDIKK1BBU1MgZG9jdW1lbnQu
YWN0aXZlRWxlbWVudCA9PSBlbGVtZW50MiBpcyB0cnVlCitQQVNTIGF4RWxlbWVudDIucm9sZSBp
cyBheEVsZW1lbnQxLnJvbGUKK1BBU1MgYXhFbGVtZW50Mi5yb2xlRGVzY3JpcHRpb24gaXMgYXhF
bGVtZW50MS5yb2xlRGVzY3JpcHRpb24KK1BBU1MgYXhFbGVtZW50Mi50aXRsZSBpcyBheEVsZW1l
bnQxLnRpdGxlCitQQVNTIGF4RWxlbWVudDIuZGVzY3JpcHRpb24gaXMgYXhFbGVtZW50MS5kZXNj
cmlwdGlvbgorUEFTUyBheEVsZW1lbnQyLmhlbHBUZXh0IGlzIGF4RWxlbWVudDEuaGVscFRleHQK
K1BBU1MgYXhFbGVtZW50Mi5zdHJpbmdWYWx1ZSBpcyBheEVsZW1lbnQxLnN0cmluZ1ZhbHVlCitQ
QVNTIGF4RWxlbWVudDIuaXNFbmFibGVkIGlzIGF4RWxlbWVudDEuaXNFbmFibGVkCitQQVNTIGF4
RWxlbWVudDIuaXNSZXF1aXJlZCBpcyBheEVsZW1lbnQxLmlzUmVxdWlyZWQKK1BBU1MgYXhFbGVt
ZW50Mi5pc0NoZWNrZWQgaXMgYXhFbGVtZW50MS5pc0NoZWNrZWQKK1BBU1MgYXhFbGVtZW50Mi5p
bnRWYWx1ZSBpcyBheEVsZW1lbnQxLmludFZhbHVlCitQQVNTIGF4RWxlbWVudDIubWluVmFsdWUg
aXMgYXhFbGVtZW50MS5taW5WYWx1ZQorUEFTUyBheEVsZW1lbnQyLm1heFZhbHVlIGlzIGF4RWxl
bWVudDEubWF4VmFsdWUKKworY29tYm9ib3gxCitQQVNTIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQg
PT0gZWxlbWVudDEgaXMgdHJ1ZQorY29tYm9ib3gyCitQQVNTIGRvY3VtZW50LmFjdGl2ZUVsZW1l
bnQgPT0gZWxlbWVudDIgaXMgdHJ1ZQorUEFTUyBheEVsZW1lbnQyLnJvbGUgaXMgYXhFbGVtZW50
MS5yb2xlCitQQVNTIGF4RWxlbWVudDIucm9sZURlc2NyaXB0aW9uIGlzIGF4RWxlbWVudDEucm9s
ZURlc2NyaXB0aW9uCitQQVNTIGF4RWxlbWVudDIudGl0bGUgaXMgYXhFbGVtZW50MS50aXRsZQor
UEFTUyBheEVsZW1lbnQyLmRlc2NyaXB0aW9uIGlzIGF4RWxlbWVudDEuZGVzY3JpcHRpb24KK1BB
U1MgYXhFbGVtZW50Mi5oZWxwVGV4dCBpcyBheEVsZW1lbnQxLmhlbHBUZXh0CitQQVNTIGF4RWxl
bWVudDIuc3RyaW5nVmFsdWUgaXMgYXhFbGVtZW50MS5zdHJpbmdWYWx1ZQorUEFTUyBheEVsZW1l
bnQyLmlzRW5hYmxlZCBpcyBheEVsZW1lbnQxLmlzRW5hYmxlZAorUEFTUyBheEVsZW1lbnQyLmlz
UmVxdWlyZWQgaXMgYXhFbGVtZW50MS5pc1JlcXVpcmVkCitQQVNTIGF4RWxlbWVudDIuaXNDaGVj
a2VkIGlzIGF4RWxlbWVudDEuaXNDaGVja2VkCitQQVNTIGF4RWxlbWVudDIuaW50VmFsdWUgaXMg
YXhFbGVtZW50MS5pbnRWYWx1ZQorUEFTUyBheEVsZW1lbnQyLm1pblZhbHVlIGlzIGF4RWxlbWVu
dDEubWluVmFsdWUKK1BBU1MgYXhFbGVtZW50Mi5tYXhWYWx1ZSBpcyBheEVsZW1lbnQxLm1heFZh
bHVlCisKK2xpc3Rib3gxCitQQVNTIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT0gZWxlbWVudDEg
aXMgdHJ1ZQorbGlzdGJveDIKK1BBU1MgZG9jdW1lbnQuYWN0aXZlRWxlbWVudCA9PSBlbGVtZW50
MiBpcyB0cnVlCitQQVNTIGF4RWxlbWVudDIucm9sZSBpcyBheEVsZW1lbnQxLnJvbGUKK1BBU1Mg
YXhFbGVtZW50Mi5yb2xlRGVzY3JpcHRpb24gaXMgYXhFbGVtZW50MS5yb2xlRGVzY3JpcHRpb24K
K1BBU1MgYXhFbGVtZW50Mi50aXRsZSBpcyBheEVsZW1lbnQxLnRpdGxlCitQQVNTIGF4RWxlbWVu
dDIuZGVzY3JpcHRpb24gaXMgYXhFbGVtZW50MS5kZXNjcmlwdGlvbgorUEFTUyBheEVsZW1lbnQy
LmhlbHBUZXh0IGlzIGF4RWxlbWVudDEuaGVscFRleHQKK1BBU1MgYXhFbGVtZW50Mi5zdHJpbmdW
YWx1ZSBpcyBheEVsZW1lbnQxLnN0cmluZ1ZhbHVlCitQQVNTIGF4RWxlbWVudDIuaXNFbmFibGVk
IGlzIGF4RWxlbWVudDEuaXNFbmFibGVkCitQQVNTIGF4RWxlbWVudDIuaXNSZXF1aXJlZCBpcyBh
eEVsZW1lbnQxLmlzUmVxdWlyZWQKK1BBU1MgYXhFbGVtZW50Mi5pc0NoZWNrZWQgaXMgYXhFbGVt
ZW50MS5pc0NoZWNrZWQKK1BBU1MgYXhFbGVtZW50Mi5pbnRWYWx1ZSBpcyBheEVsZW1lbnQxLmlu
dFZhbHVlCitQQVNTIGF4RWxlbWVudDIubWluVmFsdWUgaXMgYXhFbGVtZW50MS5taW5WYWx1ZQor
UEFTUyBheEVsZW1lbnQyLm1heFZhbHVlIGlzIGF4RWxlbWVudDEubWF4VmFsdWUKKwordGV4dGFy
ZWExCitQQVNTIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT0gZWxlbWVudDEgaXMgdHJ1ZQordGV4
dGFyZWEyCitQQVNTIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT0gZWxlbWVudDIgaXMgdHJ1ZQor
UEFTUyBheEVsZW1lbnQyLnJvbGUgaXMgYXhFbGVtZW50MS5yb2xlCitQQVNTIGF4RWxlbWVudDIu
cm9sZURlc2NyaXB0aW9uIGlzIGF4RWxlbWVudDEucm9sZURlc2NyaXB0aW9uCitQQVNTIGF4RWxl
bWVudDIudGl0bGUgaXMgYXhFbGVtZW50MS50aXRsZQorUEFTUyBheEVsZW1lbnQyLmRlc2NyaXB0
aW9uIGlzIGF4RWxlbWVudDEuZGVzY3JpcHRpb24KK1BBU1MgYXhFbGVtZW50Mi5oZWxwVGV4dCBp
cyBheEVsZW1lbnQxLmhlbHBUZXh0CitQQVNTIGF4RWxlbWVudDIuc3RyaW5nVmFsdWUgaXMgYXhF
bGVtZW50MS5zdHJpbmdWYWx1ZQorUEFTUyBheEVsZW1lbnQyLmlzRW5hYmxlZCBpcyBheEVsZW1l
bnQxLmlzRW5hYmxlZAorUEFTUyBheEVsZW1lbnQyLmlzUmVxdWlyZWQgaXMgYXhFbGVtZW50MS5p
c1JlcXVpcmVkCitQQVNTIGF4RWxlbWVudDIuaXNDaGVja2VkIGlzIGF4RWxlbWVudDEuaXNDaGVj
a2VkCitQQVNTIGF4RWxlbWVudDIuaW50VmFsdWUgaXMgYXhFbGVtZW50MS5pbnRWYWx1ZQorUEFT
UyBheEVsZW1lbnQyLm1pblZhbHVlIGlzIGF4RWxlbWVudDEubWluVmFsdWUKK1BBU1MgYXhFbGVt
ZW50Mi5tYXhWYWx1ZSBpcyBheEVsZW1lbnQxLm1heFZhbHVlCisKK2ZvY3VzYWJsZTEKK1BBU1Mg
ZG9jdW1lbnQuYWN0aXZlRWxlbWVudCA9PSBlbGVtZW50MSBpcyB0cnVlCitmb2N1c2FibGUyCitQ
QVNTIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT0gZWxlbWVudDIgaXMgdHJ1ZQorUEFTUyBheEVs
ZW1lbnQyLnJvbGUgaXMgYXhFbGVtZW50MS5yb2xlCitQQVNTIGF4RWxlbWVudDIucm9sZURlc2Ny
aXB0aW9uIGlzIGF4RWxlbWVudDEucm9sZURlc2NyaXB0aW9uCitQQVNTIGF4RWxlbWVudDIudGl0
bGUgaXMgYXhFbGVtZW50MS50aXRsZQorUEFTUyBheEVsZW1lbnQyLmRlc2NyaXB0aW9uIGlzIGF4
RWxlbWVudDEuZGVzY3JpcHRpb24KK1BBU1MgYXhFbGVtZW50Mi5oZWxwVGV4dCBpcyBheEVsZW1l
bnQxLmhlbHBUZXh0CitQQVNTIGF4RWxlbWVudDIuc3RyaW5nVmFsdWUgaXMgYXhFbGVtZW50MS5z
dHJpbmdWYWx1ZQorUEFTUyBheEVsZW1lbnQyLmlzRW5hYmxlZCBpcyBheEVsZW1lbnQxLmlzRW5h
YmxlZAorUEFTUyBheEVsZW1lbnQyLmlzUmVxdWlyZWQgaXMgYXhFbGVtZW50MS5pc1JlcXVpcmVk
CitQQVNTIGF4RWxlbWVudDIuaXNDaGVja2VkIGlzIGF4RWxlbWVudDEuaXNDaGVja2VkCitQQVNT
IGF4RWxlbWVudDIuaW50VmFsdWUgaXMgYXhFbGVtZW50MS5pbnRWYWx1ZQorUEFTUyBheEVsZW1l
bnQyLm1pblZhbHVlIGlzIGF4RWxlbWVudDEubWluVmFsdWUKK1BBU1MgYXhFbGVtZW50Mi5tYXhW
YWx1ZSBpcyBheEVsZW1lbnQxLm1heFZhbHVlCisKK2hlYWRpbmcxCitQQVNTIGRvY3VtZW50LmFj
dGl2ZUVsZW1lbnQgPT0gZWxlbWVudDEgaXMgdHJ1ZQoraGVhZGluZzIKK1BBU1MgZG9jdW1lbnQu
YWN0aXZlRWxlbWVudCA9PSBlbGVtZW50MiBpcyB0cnVlCitQQVNTIGF4RWxlbWVudDIucm9sZSBp
cyBheEVsZW1lbnQxLnJvbGUKK1BBU1MgYXhFbGVtZW50Mi5yb2xlRGVzY3JpcHRpb24gaXMgYXhF
bGVtZW50MS5yb2xlRGVzY3JpcHRpb24KK1BBU1MgYXhFbGVtZW50Mi50aXRsZSBpcyBheEVsZW1l
bnQxLnRpdGxlCitQQVNTIGF4RWxlbWVudDIuZGVzY3JpcHRpb24gaXMgYXhFbGVtZW50MS5kZXNj
cmlwdGlvbgorUEFTUyBheEVsZW1lbnQyLmhlbHBUZXh0IGlzIGF4RWxlbWVudDEuaGVscFRleHQK
K1BBU1MgYXhFbGVtZW50Mi5zdHJpbmdWYWx1ZSBpcyBheEVsZW1lbnQxLnN0cmluZ1ZhbHVlCitQ
QVNTIGF4RWxlbWVudDIuaXNFbmFibGVkIGlzIGF4RWxlbWVudDEuaXNFbmFibGVkCitQQVNTIGF4
RWxlbWVudDIuaXNSZXF1aXJlZCBpcyBheEVsZW1lbnQxLmlzUmVxdWlyZWQKK1BBU1MgYXhFbGVt
ZW50Mi5pc0NoZWNrZWQgaXMgYXhFbGVtZW50MS5pc0NoZWNrZWQKK1BBU1MgYXhFbGVtZW50Mi5p
bnRWYWx1ZSBpcyBheEVsZW1lbnQxLmludFZhbHVlCitQQVNTIGF4RWxlbWVudDIubWluVmFsdWUg
aXMgYXhFbGVtZW50MS5taW5WYWx1ZQorUEFTUyBheEVsZW1lbnQyLm1heFZhbHVlIGlzIGF4RWxl
bWVudDEubWF4VmFsdWUKKworYXJpYS1idXR0b24xCitQQVNTIGRvY3VtZW50LmFjdGl2ZUVsZW1l
bnQgPT0gZWxlbWVudDEgaXMgdHJ1ZQorYXJpYS1idXR0b24yCitQQVNTIGRvY3VtZW50LmFjdGl2
ZUVsZW1lbnQgPT0gZWxlbWVudDIgaXMgdHJ1ZQorUEFTUyBheEVsZW1lbnQyLnJvbGUgaXMgYXhF
bGVtZW50MS5yb2xlCitQQVNTIGF4RWxlbWVudDIucm9sZURlc2NyaXB0aW9uIGlzIGF4RWxlbWVu
dDEucm9sZURlc2NyaXB0aW9uCitQQVNTIGF4RWxlbWVudDIudGl0bGUgaXMgYXhFbGVtZW50MS50
aXRsZQorUEFTUyBheEVsZW1lbnQyLmRlc2NyaXB0aW9uIGlzIGF4RWxlbWVudDEuZGVzY3JpcHRp
b24KK1BBU1MgYXhFbGVtZW50Mi5oZWxwVGV4dCBpcyBheEVsZW1lbnQxLmhlbHBUZXh0CitQQVNT
IGF4RWxlbWVudDIuc3RyaW5nVmFsdWUgaXMgYXhFbGVtZW50MS5zdHJpbmdWYWx1ZQorUEFTUyBh
eEVsZW1lbnQyLmlzRW5hYmxlZCBpcyBheEVsZW1lbnQxLmlzRW5hYmxlZAorUEFTUyBheEVsZW1l
bnQyLmlzUmVxdWlyZWQgaXMgYXhFbGVtZW50MS5pc1JlcXVpcmVkCitQQVNTIGF4RWxlbWVudDIu
aXNDaGVja2VkIGlzIGF4RWxlbWVudDEuaXNDaGVja2VkCitQQVNTIGF4RWxlbWVudDIuaW50VmFs
dWUgaXMgYXhFbGVtZW50MS5pbnRWYWx1ZQorUEFTUyBheEVsZW1lbnQyLm1pblZhbHVlIGlzIGF4
RWxlbWVudDEubWluVmFsdWUKK1BBU1MgYXhFbGVtZW50Mi5tYXhWYWx1ZSBpcyBheEVsZW1lbnQx
Lm1heFZhbHVlCisKK2FyaWEtZGlzYWJsZWRidXR0b24xCitQQVNTIGRvY3VtZW50LmFjdGl2ZUVs
ZW1lbnQgPT0gZWxlbWVudDEgaXMgdHJ1ZQorYXJpYS1kaXNhYmxlZGJ1dHRvbjIKK1BBU1MgZG9j
dW1lbnQuYWN0aXZlRWxlbWVudCA9PSBlbGVtZW50MiBpcyB0cnVlCitQQVNTIGF4RWxlbWVudDIu
cm9sZSBpcyBheEVsZW1lbnQxLnJvbGUKK1BBU1MgYXhFbGVtZW50Mi5yb2xlRGVzY3JpcHRpb24g
aXMgYXhFbGVtZW50MS5yb2xlRGVzY3JpcHRpb24KK1BBU1MgYXhFbGVtZW50Mi50aXRsZSBpcyBh
eEVsZW1lbnQxLnRpdGxlCitQQVNTIGF4RWxlbWVudDIuZGVzY3JpcHRpb24gaXMgYXhFbGVtZW50
MS5kZXNjcmlwdGlvbgorUEFTUyBheEVsZW1lbnQyLmhlbHBUZXh0IGlzIGF4RWxlbWVudDEuaGVs
cFRleHQKK1BBU1MgYXhFbGVtZW50Mi5zdHJpbmdWYWx1ZSBpcyBheEVsZW1lbnQxLnN0cmluZ1Zh
bHVlCitQQVNTIGF4RWxlbWVudDIuaXNFbmFibGVkIGlzIGF4RWxlbWVudDEuaXNFbmFibGVkCitQ
QVNTIGF4RWxlbWVudDIuaXNSZXF1aXJlZCBpcyBheEVsZW1lbnQxLmlzUmVxdWlyZWQKK1BBU1Mg
YXhFbGVtZW50Mi5pc0NoZWNrZWQgaXMgYXhFbGVtZW50MS5pc0NoZWNrZWQKK1BBU1MgYXhFbGVt
ZW50Mi5pbnRWYWx1ZSBpcyBheEVsZW1lbnQxLmludFZhbHVlCitQQVNTIGF4RWxlbWVudDIubWlu
VmFsdWUgaXMgYXhFbGVtZW50MS5taW5WYWx1ZQorUEFTUyBheEVsZW1lbnQyLm1heFZhbHVlIGlz
IGF4RWxlbWVudDEubWF4VmFsdWUKKworYXJpYS1lbmFibGVkYnV0dG9uMQorUEFTUyBkb2N1bWVu
dC5hY3RpdmVFbGVtZW50ID09IGVsZW1lbnQxIGlzIHRydWUKK2FyaWEtZW5hYmxlZGJ1dHRvbjIK
K1BBU1MgZG9jdW1lbnQuYWN0aXZlRWxlbWVudCA9PSBlbGVtZW50MiBpcyB0cnVlCitQQVNTIGF4
RWxlbWVudDIucm9sZSBpcyBheEVsZW1lbnQxLnJvbGUKK1BBU1MgYXhFbGVtZW50Mi5yb2xlRGVz
Y3JpcHRpb24gaXMgYXhFbGVtZW50MS5yb2xlRGVzY3JpcHRpb24KK1BBU1MgYXhFbGVtZW50Mi50
aXRsZSBpcyBheEVsZW1lbnQxLnRpdGxlCitQQVNTIGF4RWxlbWVudDIuZGVzY3JpcHRpb24gaXMg
YXhFbGVtZW50MS5kZXNjcmlwdGlvbgorUEFTUyBheEVsZW1lbnQyLmhlbHBUZXh0IGlzIGF4RWxl
bWVudDEuaGVscFRleHQKK1BBU1MgYXhFbGVtZW50Mi5zdHJpbmdWYWx1ZSBpcyBheEVsZW1lbnQx
LnN0cmluZ1ZhbHVlCitQQVNTIGF4RWxlbWVudDIuaXNFbmFibGVkIGlzIGF4RWxlbWVudDEuaXNF
bmFibGVkCitQQVNTIGF4RWxlbWVudDIuaXNSZXF1aXJlZCBpcyBheEVsZW1lbnQxLmlzUmVxdWly
ZWQKK1BBU1MgYXhFbGVtZW50Mi5pc0NoZWNrZWQgaXMgYXhFbGVtZW50MS5pc0NoZWNrZWQKK1BB
U1MgYXhFbGVtZW50Mi5pbnRWYWx1ZSBpcyBheEVsZW1lbnQxLmludFZhbHVlCitQQVNTIGF4RWxl
bWVudDIubWluVmFsdWUgaXMgYXhFbGVtZW50MS5taW5WYWx1ZQorUEFTUyBheEVsZW1lbnQyLm1h
eFZhbHVlIGlzIGF4RWxlbWVudDEubWF4VmFsdWUKKworYXJpYS1yZXF1aXJlZGJ1dHRvbjEKK1BB
U1MgZG9jdW1lbnQuYWN0aXZlRWxlbWVudCA9PSBlbGVtZW50MSBpcyB0cnVlCithcmlhLXJlcXVp
cmVkYnV0dG9uMgorUEFTUyBkb2N1bWVudC5hY3RpdmVFbGVtZW50ID09IGVsZW1lbnQyIGlzIHRy
dWUKK1BBU1MgYXhFbGVtZW50Mi5yb2xlIGlzIGF4RWxlbWVudDEucm9sZQorUEFTUyBheEVsZW1l
bnQyLnJvbGVEZXNjcmlwdGlvbiBpcyBheEVsZW1lbnQxLnJvbGVEZXNjcmlwdGlvbgorUEFTUyBh
eEVsZW1lbnQyLnRpdGxlIGlzIGF4RWxlbWVudDEudGl0bGUKK1BBU1MgYXhFbGVtZW50Mi5kZXNj
cmlwdGlvbiBpcyBheEVsZW1lbnQxLmRlc2NyaXB0aW9uCitQQVNTIGF4RWxlbWVudDIuaGVscFRl
eHQgaXMgYXhFbGVtZW50MS5oZWxwVGV4dAorUEFTUyBheEVsZW1lbnQyLnN0cmluZ1ZhbHVlIGlz
IGF4RWxlbWVudDEuc3RyaW5nVmFsdWUKK1BBU1MgYXhFbGVtZW50Mi5pc0VuYWJsZWQgaXMgYXhF
bGVtZW50MS5pc0VuYWJsZWQKK1BBU1MgYXhFbGVtZW50Mi5pc1JlcXVpcmVkIGlzIGF4RWxlbWVu
dDEuaXNSZXF1aXJlZAorUEFTUyBheEVsZW1lbnQyLmlzQ2hlY2tlZCBpcyBheEVsZW1lbnQxLmlz
Q2hlY2tlZAorUEFTUyBheEVsZW1lbnQyLmludFZhbHVlIGlzIGF4RWxlbWVudDEuaW50VmFsdWUK
K1BBU1MgYXhFbGVtZW50Mi5taW5WYWx1ZSBpcyBheEVsZW1lbnQxLm1pblZhbHVlCitQQVNTIGF4
RWxlbWVudDIubWF4VmFsdWUgaXMgYXhFbGVtZW50MS5tYXhWYWx1ZQorCithcmlhLXRvZ2dsZWJ1
dHRvbjEKK1BBU1MgZG9jdW1lbnQuYWN0aXZlRWxlbWVudCA9PSBlbGVtZW50MSBpcyB0cnVlCith
cmlhLXRvZ2dsZWJ1dHRvbjIKK1BBU1MgZG9jdW1lbnQuYWN0aXZlRWxlbWVudCA9PSBlbGVtZW50
MiBpcyB0cnVlCitQQVNTIGF4RWxlbWVudDIucm9sZSBpcyBheEVsZW1lbnQxLnJvbGUKK1BBU1Mg
YXhFbGVtZW50Mi5yb2xlRGVzY3JpcHRpb24gaXMgYXhFbGVtZW50MS5yb2xlRGVzY3JpcHRpb24K
K1BBU1MgYXhFbGVtZW50Mi50aXRsZSBpcyBheEVsZW1lbnQxLnRpdGxlCitQQVNTIGF4RWxlbWVu
dDIuZGVzY3JpcHRpb24gaXMgYXhFbGVtZW50MS5kZXNjcmlwdGlvbgorUEFTUyBheEVsZW1lbnQy
LmhlbHBUZXh0IGlzIGF4RWxlbWVudDEuaGVscFRleHQKK1BBU1MgYXhFbGVtZW50Mi5zdHJpbmdW
YWx1ZSBpcyBheEVsZW1lbnQxLnN0cmluZ1ZhbHVlCitQQVNTIGF4RWxlbWVudDIuaXNFbmFibGVk
IGlzIGF4RWxlbWVudDEuaXNFbmFibGVkCitQQVNTIGF4RWxlbWVudDIuaXNSZXF1aXJlZCBpcyBh
eEVsZW1lbnQxLmlzUmVxdWlyZWQKK1BBU1MgYXhFbGVtZW50Mi5pc0NoZWNrZWQgaXMgYXhFbGVt
ZW50MS5pc0NoZWNrZWQKK1BBU1MgYXhFbGVtZW50Mi5pbnRWYWx1ZSBpcyBheEVsZW1lbnQxLmlu
dFZhbHVlCitQQVNTIGF4RWxlbWVudDIubWluVmFsdWUgaXMgYXhFbGVtZW50MS5taW5WYWx1ZQor
UEFTUyBheEVsZW1lbnQyLm1heFZhbHVlIGlzIGF4RWxlbWVudDEubWF4VmFsdWUKKworYXJpYS1s
aW5rMQorUEFTUyBkb2N1bWVudC5hY3RpdmVFbGVtZW50ID09IGVsZW1lbnQxIGlzIHRydWUKK2Fy
aWEtbGluazIKK1BBU1MgZG9jdW1lbnQuYWN0aXZlRWxlbWVudCA9PSBlbGVtZW50MiBpcyB0cnVl
CitQQVNTIGF4RWxlbWVudDIucm9sZSBpcyBheEVsZW1lbnQxLnJvbGUKK1BBU1MgYXhFbGVtZW50
Mi5yb2xlRGVzY3JpcHRpb24gaXMgYXhFbGVtZW50MS5yb2xlRGVzY3JpcHRpb24KK1BBU1MgYXhF
bGVtZW50Mi50aXRsZSBpcyBheEVsZW1lbnQxLnRpdGxlCitQQVNTIGF4RWxlbWVudDIuZGVzY3Jp
cHRpb24gaXMgYXhFbGVtZW50MS5kZXNjcmlwdGlvbgorUEFTUyBheEVsZW1lbnQyLmhlbHBUZXh0
IGlzIGF4RWxlbWVudDEuaGVscFRleHQKK1BBU1MgYXhFbGVtZW50Mi5zdHJpbmdWYWx1ZSBpcyBh
eEVsZW1lbnQxLnN0cmluZ1ZhbHVlCitQQVNTIGF4RWxlbWVudDIuaXNFbmFibGVkIGlzIGF4RWxl
bWVudDEuaXNFbmFibGVkCitQQVNTIGF4RWxlbWVudDIuaXNSZXF1aXJlZCBpcyBheEVsZW1lbnQx
LmlzUmVxdWlyZWQKK1BBU1MgYXhFbGVtZW50Mi5pc0NoZWNrZWQgaXMgYXhFbGVtZW50MS5pc0No
ZWNrZWQKK1BBU1MgYXhFbGVtZW50Mi5pbnRWYWx1ZSBpcyBheEVsZW1lbnQxLmludFZhbHVlCitQ
QVNTIGF4RWxlbWVudDIubWluVmFsdWUgaXMgYXhFbGVtZW50MS5taW5WYWx1ZQorUEFTUyBheEVs
ZW1lbnQyLm1heFZhbHVlIGlzIGF4RWxlbWVudDEubWF4VmFsdWUKKworUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2FjY2Vzc2liaWxpdHkvY2FudmFzLWZhbGxiYWNrLWNvbnRlbnQtMi5odG1sIGIvTGF5b3V0
VGVzdHMvYWNjZXNzaWJpbGl0eS9jYW52YXMtZmFsbGJhY2stY29udGVudC0yLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMDljMTExOTMxYjAzMDkzMGE5ODU4M2VkZDI5OGUzNzNlMjNkNTc1MQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvY2FudmFzLWZhbGxiYWNrLWNvbnRl
bnQtMi5odG1sCkBAIC0wLDAgKzEsMTE2IEBACis8IURPQ1RZUEUgSFRNTD4KKzxodG1sPgorPGJv
ZHk+Cis8c2NyaXB0IHNyYz0iLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwv
c2NyaXB0PgorCis8ZGl2PgorICA8YSBpZD0ibGluazEiIGhyZWY9IiMiPkxpbms8L2E+CisgIDxi
dXR0b24gaWQ9ImJ1dHRvbjEiPkJ1dHRvbjwvYnV0dG9uPgorICA8YnV0dG9uIGlkPSJsYWJlbGVk
LWJ1dHRvbjEiIGFyaWEtbGFiZWw9IkxhYmVsIj5CdXR0b248L2J1dHRvbj4KKyAgPGJ1dHRvbiBp
ZD0iYnV0dG9uLXdpdGgtdGl0bGUxIiB0aXRsZT0iVGl0bGUiPkJ1dHRvbjwvYnV0dG9uPgorICA8
aW5wdXQgaWQ9InRleHQxIiB0eXBlPSJ0ZXh0IiB2YWx1ZT0iVmFsdWUiPgorICA8aW5wdXQgaWQ9
ImNoZWNrYm94MSIgdHlwZT0iY2hlY2tib3giIGNoZWNrZWQ+CisgIDxpbnB1dCBpZD0ibnVtYmVy
MSIgdHlwZT0ibnVtYmVyIiB2YWx1ZT0iMTIzIj4KKyAgPGlucHV0IGlkPSJyYWRpbzEiIHR5cGU9
InJhZGlvIiBjaGVja2VkPgorICA8aW5wdXQgaWQ9InNsaWRlcjEiIHR5cGU9InJhbmdlIiBtaW49
IjEiIG1heD0iMTAiIHZhbHVlPSI1Ij4KKyAgPGlucHV0IGlkPSJzdWJtaXQxIiB0eXBlPSJzdWJt
aXQiPgorICA8c2VsZWN0IGlkPSJjb21ib2JveDEiPjxvcHRpb24+MTxvcHRpb24gc2VsZWN0ZWQ+
Mjwvc2VsZWN0PgorICA8c2VsZWN0IG11bHRpcGxlIGlkPSJsaXN0Ym94MSI+PG9wdGlvbj4xPG9w
dGlvbiBzZWxlY3RlZD4yPC9zZWxlY3Q+CisgIDx0ZXh0YXJlYSBpZD0idGV4dGFyZWExIj5UZXh0
YXJlYTwvdGV4dGFyZWE+CisgIDxkaXYgaWQ9ImZvY3VzYWJsZTEiIHRhYmluZGV4PSIwIj5Gb2N1
c2FibGU8L2Rpdj4KKyAgPGg1IGlkPSJoZWFkaW5nMSIgdGFiaW5kZXg9IjAiPkhlYWRpbmc8L2g1
PgorICA8ZGl2IGlkPSJhcmlhLWJ1dHRvbjEiIHRhYmluZGV4PSIwIiByb2xlPSJidXR0b24iPkFS
SUEgYnV0dG9uPC9kaXY+CisgIDxkaXYgaWQ9ImFyaWEtZGlzYWJsZWRidXR0b24xIiB0YWJpbmRl
eD0iMCIgcm9sZT0iYnV0dG9uIiBhcmlhLWRpc2FibGVkPSJ0cnVlIj5BUklBIGRpc2FibGVkIGJ1
dHRvbjwvZGl2PgorICA8ZGl2IGlkPSJhcmlhLWVuYWJsZWRidXR0b24xIiB0YWJpbmRleD0iMCIg
cm9sZT0iYnV0dG9uIiBhcmlhLWRpc2FibGVkPSJmYWxzZSI+QVJJQSBlbmFibGVkIGJ1dHRvbjwv
ZGl2PgorICA8ZGl2IGlkPSJhcmlhLXJlcXVpcmVkYnV0dG9uMSIgdGFiaW5kZXg9IjAiIHJvbGU9
ImJ1dHRvbiIgYXJpYS1yZXF1aXJlZD0idHJ1ZSI+QVJJQSByZXF1aXJlZCBidXR0b248L2Rpdj4K
KyAgPGRpdiBpZD0iYXJpYS10b2dnbGVidXR0b24xIiB0YWJpbmRleD0iMCIgcm9sZT0iYnV0dG9u
IiBhcmlhLXByZXNzZWQ9ImZhbHNlIj5BUklBIHRvZ2dsZSBidXR0b248L2Rpdj4KKyAgPGRpdiBp
ZD0iYXJpYS1saW5rMSIgdGFiaW5kZXg9IjAiIHJvbGU9ImxpbmsiPkFSSUEgbGluazwvZGl2Pgor
PC9kaXY+CisKKzxjYW52YXMgaWQ9Im15Q2FudmFzIiB3aWR0aD0iMzAwIiBoZWlnaHQ9IjMwMCI+
CisgIDxhIGlkPSJsaW5rMiIgaHJlZj0iIyI+TGluazwvYT4KKyAgPGJ1dHRvbiBpZD0iYnV0dG9u
MiI+QnV0dG9uPC9idXR0b24+CisgIDxidXR0b24gaWQ9ImxhYmVsZWQtYnV0dG9uMiIgYXJpYS1s
YWJlbD0iTGFiZWwiPkJ1dHRvbjwvYnV0dG9uPgorICA8YnV0dG9uIGlkPSJidXR0b24td2l0aC10
aXRsZTIiIHRpdGxlPSJUaXRsZSI+QnV0dG9uPC9idXR0b24+CisgIDxpbnB1dCBpZD0idGV4dDIi
IHR5cGU9InRleHQiIHZhbHVlPSJWYWx1ZSI+CisgIDxpbnB1dCBpZD0iY2hlY2tib3gyIiB0eXBl
PSJjaGVja2JveCIgY2hlY2tlZD4KKyAgPGlucHV0IGlkPSJudW1iZXIyIiB0eXBlPSJudW1iZXIi
IHZhbHVlPSIxMjMiPgorICA8aW5wdXQgaWQ9InJhZGlvMiIgdHlwZT0icmFkaW8iIGNoZWNrZWQ+
CisgIDxpbnB1dCBpZD0ic2xpZGVyMiIgdHlwZT0icmFuZ2UiIG1pbj0iMSIgbWF4PSIxMCIgdmFs
dWU9IjUiPgorICA8aW5wdXQgaWQ9InN1Ym1pdDIiIHR5cGU9InN1Ym1pdCI+CisgIDxzZWxlY3Qg
aWQ9ImNvbWJvYm94MiI+PG9wdGlvbj4xPG9wdGlvbiBzZWxlY3RlZD4yPC9zZWxlY3Q+CisgIDxz
ZWxlY3QgbXVsdGlwbGUgaWQ9Imxpc3Rib3gyIj48b3B0aW9uPjE8b3B0aW9uIHNlbGVjdGVkPjI8
L3NlbGVjdD4KKyAgPHRleHRhcmVhIGlkPSJ0ZXh0YXJlYTIiPlRleHRhcmVhPC90ZXh0YXJlYT4K
KyAgPGRpdiBpZD0iZm9jdXNhYmxlMiIgdGFiaW5kZXg9IjAiPkZvY3VzYWJsZTwvZGl2PgorICA8
aDUgaWQ9ImhlYWRpbmcyIiB0YWJpbmRleD0iMCI+SGVhZGluZzwvaDU+CisgIDxkaXYgaWQ9ImFy
aWEtYnV0dG9uMiIgdGFiaW5kZXg9IjAiIHJvbGU9ImJ1dHRvbiI+QVJJQSBidXR0b248L2Rpdj4K
KyAgPGRpdiBpZD0iYXJpYS1kaXNhYmxlZGJ1dHRvbjIiIHRhYmluZGV4PSIwIiByb2xlPSJidXR0
b24iIGFyaWEtZGlzYWJsZWQ9InRydWUiPkFSSUEgZGlzYWJsZWQgYnV0dG9uPC9kaXY+CisgIDxk
aXYgaWQ9ImFyaWEtZW5hYmxlZGJ1dHRvbjIiIHRhYmluZGV4PSIwIiByb2xlPSJidXR0b24iIGFy
aWEtZGlzYWJsZWQ9ImZhbHNlIj5BUklBIGVuYWJsZWQgYnV0dG9uPC9kaXY+CisgIDxkaXYgaWQ9
ImFyaWEtcmVxdWlyZWRidXR0b24yIiB0YWJpbmRleD0iMCIgcm9sZT0iYnV0dG9uIiBhcmlhLXJl
cXVpcmVkPSJ0cnVlIj5BUklBIHJlcXVpcmVkIGJ1dHRvbjwvZGl2PgorICA8ZGl2IGlkPSJhcmlh
LXRvZ2dsZWJ1dHRvbjIiIHRhYmluZGV4PSIwIiByb2xlPSJidXR0b24iIGFyaWEtcHJlc3NlZD0i
ZmFsc2UiPkFSSUEgdG9nZ2xlIGJ1dHRvbjwvZGl2PgorICA8ZGl2IGlkPSJhcmlhLWxpbmsyIiB0
YWJpbmRleD0iMCIgcm9sZT0ibGluayI+QVJJQSBsaW5rPC9kaXY+Cis8L2NhbnZhcz4KKworPGRp
diBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oIlRoaXMgdGVzdHMg
YSBudW1iZXIgb2YgZGlmZmVyZW50IGVsZW1lbnRzIGluIGNhbnZhcyBmYWxsYmFjayBjb250ZW50
IHRvIG1ha2Ugc3VyZSB0aGVpciBhY2Nlc3NpYmxlIGF0dHJpYnV0ZXMgYXJlIGVzc2VudGlhbGx5
IGlkZW50aWNhbCB0byB0aGUgY29ycmVzcG9uZGluZyBlbGVtZW50cyBvdXRzaWRlIG9mIGNhbnZh
cyBmYWxsYmFjayBjb250ZW50LiIpOworCitpZiAod2luZG93LnRlc3RSdW5uZXIgJiYgd2luZG93
LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKSB7CisgICAgd2luZG93LnRlc3RSdW5uZXIuZHVtcEFz
VGV4dCgpOworCisgICAgZnVuY3Rpb24gY2hlY2soaWQxLCBpZDIpIHsKKyAgICAgICAgZGVidWco
aWQxKTsKKyAgICAgICAgd2luZG93LmVsZW1lbnQxID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
aWQxKTsKKyAgICAgICAgZWxlbWVudDEuZm9jdXMoKTsKKyAgICAgICAgc2hvdWxkQmUoImRvY3Vt
ZW50LmFjdGl2ZUVsZW1lbnQgPT0gZWxlbWVudDEiLCAidHJ1ZSIpOworICAgICAgICB3aW5kb3cu
YXhFbGVtZW50MSA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50OworCisg
ICAgICAgIGRlYnVnKGlkMik7CisgICAgICAgIHdpbmRvdy5lbGVtZW50MiA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKGlkMik7CisgICAgICAgIGVsZW1lbnQyLmZvY3VzKCk7CisgICAgICAgIHNo
b3VsZEJlKCJkb2N1bWVudC5hY3RpdmVFbGVtZW50ID09IGVsZW1lbnQyIiwgInRydWUiKTsKKyAg
ICAgICAgd2luZG93LmF4RWxlbWVudDIgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2Vk
RWxlbWVudDsKKworICAgICAgICBzaG91bGRCZSgiYXhFbGVtZW50Mi5yb2xlIiwgImF4RWxlbWVu
dDEucm9sZSIpOworICAgICAgICBzaG91bGRCZSgiYXhFbGVtZW50Mi5yb2xlRGVzY3JpcHRpb24i
LCAiYXhFbGVtZW50MS5yb2xlRGVzY3JpcHRpb24iKTsKKyAgICAgICAgc2hvdWxkQmUoImF4RWxl
bWVudDIudGl0bGUiLCAiYXhFbGVtZW50MS50aXRsZSIpOworICAgICAgICBzaG91bGRCZSgiYXhF
bGVtZW50Mi5kZXNjcmlwdGlvbiIsICJheEVsZW1lbnQxLmRlc2NyaXB0aW9uIik7CisgICAgICAg
IHNob3VsZEJlKCJheEVsZW1lbnQyLmhlbHBUZXh0IiwgImF4RWxlbWVudDEuaGVscFRleHQiKTsK
KyAgICAgICAgc2hvdWxkQmUoImF4RWxlbWVudDIuc3RyaW5nVmFsdWUiLCAiYXhFbGVtZW50MS5z
dHJpbmdWYWx1ZSIpOworICAgICAgICBzaG91bGRCZSgiYXhFbGVtZW50Mi5pc0VuYWJsZWQiLCAi
YXhFbGVtZW50MS5pc0VuYWJsZWQiKTsKKyAgICAgICAgc2hvdWxkQmUoImF4RWxlbWVudDIuaXNS
ZXF1aXJlZCIsICJheEVsZW1lbnQxLmlzUmVxdWlyZWQiKTsKKyAgICAgICAgc2hvdWxkQmUoImF4
RWxlbWVudDIuaXNDaGVja2VkIiwgImF4RWxlbWVudDEuaXNDaGVja2VkIik7CisgICAgICAgIHNo
b3VsZEJlKCJheEVsZW1lbnQyLmludFZhbHVlIiwgImF4RWxlbWVudDEuaW50VmFsdWUiKTsKKyAg
ICAgICAgc2hvdWxkQmUoImF4RWxlbWVudDIubWluVmFsdWUiLCAiYXhFbGVtZW50MS5taW5WYWx1
ZSIpOworICAgICAgICBzaG91bGRCZSgiYXhFbGVtZW50Mi5tYXhWYWx1ZSIsICJheEVsZW1lbnQx
Lm1heFZhbHVlIik7CisgICAgICAgIGRlYnVnKCIiKTsKKyAgICB9CisKKyAgICBjaGVjaygibGlu
azEiLCAibGluazIiKTsKKyAgICBjaGVjaygiYnV0dG9uMSIsICJidXR0b24yIik7CisgICAgY2hl
Y2soImxhYmVsZWQtYnV0dG9uMSIsICJsYWJlbGVkLWJ1dHRvbjIiKTsKKyAgICBjaGVjaygiYnV0
dG9uLXdpdGgtdGl0bGUxIiwgImJ1dHRvbi13aXRoLXRpdGxlMiIpOworICAgIGNoZWNrKCJ0ZXh0
MSIsICJ0ZXh0MiIpOworICAgIGNoZWNrKCJjaGVja2JveDEiLCAiY2hlY2tib3gyIik7CisgICAg
Y2hlY2soIm51bWJlcjEiLCAibnVtYmVyMiIpOworICAgIGNoZWNrKCJyYWRpbzEiLCAicmFkaW8y
Iik7CisgICAgY2hlY2soInNsaWRlcjEiLCAic2xpZGVyMiIpOworICAgIGNoZWNrKCJzdWJtaXQx
IiwgInN1Ym1pdDIiKTsKKyAgICBjaGVjaygiY29tYm9ib3gxIiwgImNvbWJvYm94MiIpOworICAg
IGNoZWNrKCJsaXN0Ym94MSIsICJsaXN0Ym94MiIpOworICAgIGNoZWNrKCJ0ZXh0YXJlYTEiLCAi
dGV4dGFyZWEyIik7CisgICAgY2hlY2soImZvY3VzYWJsZTEiLCAiZm9jdXNhYmxlMiIpOworICAg
IGNoZWNrKCJoZWFkaW5nMSIsICJoZWFkaW5nMiIpOworICAgIGNoZWNrKCJhcmlhLWJ1dHRvbjEi
LCAiYXJpYS1idXR0b24yIik7CisgICAgY2hlY2soImFyaWEtZGlzYWJsZWRidXR0b24xIiwgImFy
aWEtZGlzYWJsZWRidXR0b24yIik7CisgICAgY2hlY2soImFyaWEtZW5hYmxlZGJ1dHRvbjEiLCAi
YXJpYS1lbmFibGVkYnV0dG9uMiIpOworICAgIGNoZWNrKCJhcmlhLXJlcXVpcmVkYnV0dG9uMSIs
ICJhcmlhLXJlcXVpcmVkYnV0dG9uMiIpOworICAgIGNoZWNrKCJhcmlhLXRvZ2dsZWJ1dHRvbjEi
LCAiYXJpYS10b2dnbGVidXR0b24yIik7CisgICAgY2hlY2soImFyaWEtbGluazEiLCAiYXJpYS1s
aW5rMiIpOworfQorCis8L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uL2Zhc3QvanMvcmVzb3Vy
Y2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>