<?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>80824</bug_id>
          
          <creation_ts>2012-03-12 01:49:45 -0700</creation_ts>
          <short_desc>Node::op and Node::flags should be private</short_desc>
          <delta_ts>2012-03-12 16:16:19 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>80779</dependson>
          <blocked>80819</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>rakuco</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>576006</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-03-12 01:49:45 -0700</bug_when>
    <thetext>Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>576509</commentid>
    <comment_count>1</comment_count>
      <attachid>131407</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-03-12 14:17:13 -0700</bug_when>
    <thetext>Created attachment 131407
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>576517</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-12 14:22:14 -0700</bug_when>
    <thetext>Attachment 131407 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/CMakeLists.txt&apos;, u&apos;S...&quot; exit_code: 1
Source/JavaScriptCore/dfg/DFGNodeType.h:207:  Non-label code inside switch statements should be indented.  [whitespace/indent] [4]
Total errors found: 1 in 23 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>576620</commentid>
    <comment_count>3</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-03-12 15:32:20 -0700</bug_when>
    <thetext>&lt;rdar://problem/11033435&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>576679</commentid>
    <comment_count>4</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-03-12 16:16:19 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/110498</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>131407</attachid>
            <date>2012-03-12 14:17:13 -0700</date>
            <delta_ts>2012-03-12 14:23:58 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>private_patch_1.diff</filename>
            <type>text/plain</type>
            <size>100817</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTEwNDc2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0OCBA
QAorMjAxMi0wMy0xMiAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IE5vZGU6Om9wIGFuZCBOb2RlOjpmbGFncyBzaG91bGQgYmUgcHJpdmF0ZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODA4MjQKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAg
ICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBUYXJnZXQucHJpOgorICAgICAgICAq
IGRmZy9ERkdBYnN0cmFjdFN0YXRlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdFN0
YXRlOjppbml0aWFsaXplKToKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdFN0YXRlOjpleGVj
dXRlKToKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdFN0YXRlOjptZXJnZVN0YXRlQXRUYWls
KToKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdFN0YXRlOjptZXJnZVRvU3VjY2Vzc29ycyk6
CisgICAgICAgICogZGZnL0RGR0FyaXRoTm9kZUZsYWdzSW5mZXJlbmNlUGhhc2UuY3BwOgorICAg
ICAgICAoSlNDOjpERkc6OkFyaXRoTm9kZUZsYWdzSW5mZXJlbmNlUGhhc2U6OnByb3BhZ2F0ZSk6
CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpCeXRlQ29kZVBhcnNlcjo6aW5qZWN0TGF6eU9wZXJhbmRQcmVkaWN0aW9uKToKKyAgICAgICAg
KEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6Z2V0TG9jYWwpOgorICAgICAgICAoSlNDOjpERkc6
OkJ5dGVDb2RlUGFyc2VyOjpnZXRBcmd1bWVudCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNv
ZGVQYXJzZXI6OmZsdXNoQXJndW1lbnQpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFy
c2VyOjp0b0ludDMyKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aXNKU0Nv
bnN0YW50KToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6bWFrZVNhZmUpOgor
ICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjptYWtlRGl2U2FmZSk6CisgICAgICAg
IChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlubGluaW5nKToKKyAgICAgICAgKEpT
Qzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgIChKU0M6OkRGRzo6
Qnl0ZUNvZGVQYXJzZXI6OnByb2Nlc3NQaGlTdGFjayk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0
ZUNvZGVQYXJzZXI6OmxpbmtCbG9jayk6CisgICAgICAgICogZGZnL0RGR0NGQVBoYXNlLmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpDRkFQaGFzZTo6cGVyZm9ybUJsb2NrQ0ZBKToKKyAgICAgICAg
KiBkZmcvREZHQ1NFUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkNTRVBoYXNlOjpjYW5v
bmljYWxpemUpOgorICAgICAgICAoSlNDOjpERkc6OkNTRVBoYXNlOjplbmRJbmRleEZvclB1cmVD
U0UpOgorICAgICAgICAoSlNDOjpERkc6OkNTRVBoYXNlOjpwdXJlQ1NFKToKKyAgICAgICAgKEpT
Qzo6REZHOjpDU0VQaGFzZTo6YnlWYWxJc1B1cmUpOgorICAgICAgICAoSlNDOjpERkc6OkNTRVBo
YXNlOjpjbG9iYmVyc1dvcmxkKToKKyAgICAgICAgKEpTQzo6REZHOjpDU0VQaGFzZTo6aW1wdXJl
Q1NFKToKKyAgICAgICAgKEpTQzo6REZHOjpDU0VQaGFzZTo6Z2xvYmFsVmFyTG9hZEVsaW1pbmF0
aW9uKToKKyAgICAgICAgKEpTQzo6REZHOjpDU0VQaGFzZTo6Z2V0QnlWYWxMb2FkRWxpbWluYXRp
b24pOgorICAgICAgICAoSlNDOjpERkc6OkNTRVBoYXNlOjpjaGVja0Z1bmN0aW9uRWxpbWluYXRp
b24pOgorICAgICAgICAoSlNDOjpERkc6OkNTRVBoYXNlOjpjaGVja1N0cnVjdHVyZUxvYWRFbGlt
aW5hdGlvbik6CisgICAgICAgIChKU0M6OkRGRzo6Q1NFUGhhc2U6OmdldEJ5T2Zmc2V0TG9hZEVs
aW1pbmF0aW9uKToKKyAgICAgICAgKEpTQzo6REZHOjpDU0VQaGFzZTo6Z2V0UHJvcGVydHlTdG9y
YWdlTG9hZEVsaW1pbmF0aW9uKToKKyAgICAgICAgKEpTQzo6REZHOjpDU0VQaGFzZTo6Z2V0SW5k
ZXhlZFByb3BlcnR5U3RvcmFnZUxvYWRFbGltaW5hdGlvbik6CisgICAgICAgIChKU0M6OkRGRzo6
Q1NFUGhhc2U6OmdldFNjb3BlQ2hhaW5Mb2FkRWxpbWluYXRpb24pOgorICAgICAgICAoSlNDOjpE
Rkc6OkNTRVBoYXNlOjpwZXJmb3JtTm9kZUNTRSk6CisgICAgICAgICogZGZnL0RGR0dyYXBoLmNw
cDoKKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6ZHVtcCk6CisgICAgICAgIChERkcpOgorICAg
ICAgICAqIGRmZy9ERkdHcmFwaC5oOgorICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjphZGRTaG91
bGRTcGVjdWxhdGVJbnRlZ2VyKToKKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6bmVnYXRlU2hv
dWxkU3BlY3VsYXRlSW50ZWdlcik6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6Om1ldGhvZE9m
R2V0dGluZ0FWYWx1ZVByb2ZpbGVGb3IpOgorICAgICAgICAqIGRmZy9ERkdOb2RlLmNwcDogUmVt
b3ZlZC4KKyAgICAgICAgKiBkZmcvREZHTm9kZS5oOgorICAgICAgICAoREZHKToKKyAgICAgICAg
KEpTQzo6REZHOjpOb2RlOjpOb2RlKToKKyAgICAgICAgKE5vZGUpOgorICAgICAgICAoSlNDOjpE
Rkc6Ok5vZGU6Om9wKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpmbGFncyk6CisgICAgICAg
IChKU0M6OkRGRzo6Tm9kZTo6c2V0T3ApOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OnNldEZs
YWdzKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjptZXJnZUZsYWdzKToKKyAgICAgICAgKEpT
Qzo6REZHOjpOb2RlOjpmaWx0ZXJGbGFncyk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6Y2xl
YXJGbGFncyk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6c2V0T3BBbmREZWZhdWx0RmxhZ3Mp
OgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Om11c3RHZW5lcmF0ZSk6CisgICAgICAgIChKU0M6
OkRGRzo6Tm9kZTo6aXNDb25zdGFudCk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6aXNXZWFr
Q29uc3RhbnQpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OnZhbHVlT2ZKU0NvbnN0YW50KToK
KyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNWYXJpYWJsZUFjY2Vzc0RhdGEpOgorICAgICAg
ICAoSlNDOjpERkc6Ok5vZGU6Omhhc0lkZW50aWZpZXIpOgorICAgICAgICAoSlNDOjpERkc6Ok5v
ZGU6OnJlc29sdmVHbG9iYWxEYXRhSW5kZXgpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Omhh
c0FyaXRoTm9kZUZsYWdzKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjphcml0aE5vZGVGbGFn
cyk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6c2V0QXJpdGhOb2RlRmxhZyk6CisgICAgICAg
IChKU0M6OkRGRzo6Tm9kZTo6bWVyZ2VBcml0aE5vZGVGbGFncyk6CisgICAgICAgIChKU0M6OkRG
Rzo6Tm9kZTo6aGFzQ29uc3RhbnRCdWZmZXIpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Omhh
c1JlZ2V4cEluZGV4KToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNWYXJOdW1iZXIpOgor
ICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Omhhc1Njb3BlQ2hhaW5EZXB0aCk6CisgICAgICAgIChK
U0M6OkRGRzo6Tm9kZTo6aGFzUmVzdWx0KToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNJ
bnQzMlJlc3VsdCk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6aGFzTnVtYmVyUmVzdWx0KToK
KyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNKU1Jlc3VsdCk6CisgICAgICAgIChKU0M6OkRG
Rzo6Tm9kZTo6aGFzQm9vbGVhblJlc3VsdCk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6aXNK
dW1wKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjppc0JyYW5jaCk6CisgICAgICAgIChKU0M6
OkRGRzo6Tm9kZTo6aXNUZXJtaW5hbCk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6aGFzSGVh
cFByZWRpY3Rpb24pOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Omhhc0Z1bmN0aW9uQ2hlY2tE
YXRhKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNTdHJ1Y3R1cmVUcmFuc2l0aW9uRGF0
YSk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6aGFzU3RydWN0dXJlU2V0KToKKyAgICAgICAg
KEpTQzo6REZHOjpOb2RlOjpoYXNTdG9yYWdlQWNjZXNzRGF0YSk6CisgICAgICAgIChKU0M6OkRG
Rzo6Tm9kZTo6aGFzRnVuY3Rpb25EZWNsSW5kZXgpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6
Omhhc0Z1bmN0aW9uRXhwckluZGV4KToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpjaGlsZDEp
OgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OmNoaWxkMik6CisgICAgICAgIChKU0M6OkRGRzo6
Tm9kZTo6Y2hpbGQzKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpmaXJzdENoaWxkKToKKyAg
ICAgICAgKEpTQzo6REZHOjpOb2RlOjpudW1DaGlsZHJlbik6CisgICAgICAgICogZGZnL0RGR05v
ZGVGbGFncy5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9k
ZS5jcHAuCisgICAgICAgICogZGZnL0RGR05vZGVGbGFncy5oOiBBZGRlZC4KKyAgICAgICAgKERG
Ryk6CisgICAgICAgIChKU0M6OkRGRzo6bm9kZVVzZWRBc051bWJlcik6CisgICAgICAgIChKU0M6
OkRGRzo6bm9kZUNhblRydW5jYXRlSW50ZWdlcik6CisgICAgICAgIChKU0M6OkRGRzo6bm9kZUNh
bklnbm9yZU5lZ2F0aXZlWmVybyk6CisgICAgICAgIChKU0M6OkRGRzo6bm9kZU1heU92ZXJmbG93
KToKKyAgICAgICAgKEpTQzo6REZHOjpub2RlQ2FuU3BlY3VsYXRlSW50ZWdlcik6CisgICAgICAg
ICogZGZnL0RGR05vZGVUeXBlLmg6IEFkZGVkLgorICAgICAgICAoREZHKToKKyAgICAgICAgKEpT
Qzo6REZHOjpkZWZhdWx0RmxhZ3MpOgorICAgICAgICAqIGRmZy9ERkdQcmVkaWN0aW9uUHJvcGFn
YXRpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6UHJlZGljdGlvblByb3BhZ2F0aW9u
UGhhc2U6OnByb3BhZ2F0ZSk6CisgICAgICAgIChKU0M6OkRGRzo6UHJlZGljdGlvblByb3BhZ2F0
aW9uUGhhc2U6OnZvdGUpOgorICAgICAgICAoSlNDOjpERkc6OlByZWRpY3Rpb25Qcm9wYWdhdGlv
blBoYXNlOjpkb1JvdW5kT2ZEb3VibGVWb3RpbmcpOgorICAgICAgICAoSlNDOjpERkc6OlByZWRp
Y3Rpb25Qcm9wYWdhdGlvblBoYXNlOjpmaXh1cE5vZGUpOgorICAgICAgICAqIGRmZy9ERkdSZWR1
bmRhbnRQaGlFbGltaW5hdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpSZWR1bmRh
bnRQaGlFbGltaW5hdGlvblBoYXNlOjpydW4pOgorICAgICAgICAoSlNDOjpERkc6OlJlZHVuZGFu
dFBoaUVsaW1pbmF0aW9uUGhhc2U6OnJlcGxhY2VQaGlDaGlsZCk6CisgICAgICAgIChKU0M6OkRG
Rzo6UmVkdW5kYW50UGhpRWxpbWluYXRpb25QaGFzZTo6dXBkYXRlQmxvY2tWYXJpYWJsZUluZm9y
bWF0aW9uKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAo
SlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjp1c2VDaGlsZHJlbik6CisgICAgICAgIChKU0M6OkRG
Rzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQZWVwSG9sZUJyYW5jaCk6CisgICAgICAgIChKU0M6
OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVNb3ZIaW50KToKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmNoZWNrQXJndW1lbnRUeXBlcyk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmNvbXB1dGVWYWx1ZVJlY292ZXJ5Rm9yKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZVVJbnQzMlRvTnVtYmVyKToKKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFkZCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmNvbXBhcmUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oOgorICAg
ICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpkZXRlY3RQZWVwSG9sZUJyYW5jaCk6Cisg
ICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6OlNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNw
cDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwpOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZH
VmlydHVhbFJlZ2lzdGVyQWxsb2NhdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpW
aXJ0dWFsUmVnaXN0ZXJBbGxvY2F0aW9uUGhhc2U6OnJ1bik6CisKIDIwMTItMDMtMTIgIExhc3ps
byBHb21ib3MgIDxsYXN6bG8uMS5nb21ib3NAbm9raWEuY29tPgogCiAgICAgICAgIE1pbm9yIERh
dGFMb2cgZml4ZXMKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlz
aW9uIDExMDQxOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkod29y
a2luZyBjb3B5KQpAQCAtNjgsNyArNjgsNyBAQCBTRVQoSmF2YVNjcmlwdENvcmVfU09VUkNFUwog
ICAgIGRmZy9ERkdEcml2ZXIuY3BwCiAgICAgZGZnL0RGR0dyYXBoLmNwcAogICAgIGRmZy9ERkdK
SVRDb21waWxlci5jcHAKLSAgICBkZmcvREZHTm9kZS5jcHAKKyAgICBkZmcvREZHTm9kZUZsYWdz
LmNwcAogICAgIGRmZy9ERkdPU1JFbnRyeS5jcHAKICAgICBkZmcvREZHT1NSRXhpdC5jcHAKICAg
ICBkZmcvREZHT1NSRXhpdENvbXBpbGVyLmNwcApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L0dOVW1ha2VmaWxlLmxpc3QuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L0dOVW1ha2VmaWxlLmxpc3QuYW0JKHJldmlzaW9uIDExMDQxOSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCSh3b3JraW5nIGNvcHkpCkBAIC0xNjksOSArMTY5
LDExIEBAIGphdmFzY3JpcHRjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHR3JhcGguaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21w
aWxlci5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaCBc
Ci0JU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmNwcCBcCiAJU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdOb2RlLmggXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Tm9kZUZsYWdzLmNwcCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlRmxhZ3Mu
aCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlUmVmZXJlbmNlQmxvYi5oIFwK
KwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmggXAogCVNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHTm9kZVVzZS5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR09wZXJhbmRzLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9u
cy5jcHAgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL1RhcmdldC5wcmkKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL1RhcmdldC5wcmkJKHJldmlzaW9uIDExMDQxOSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9UYXJnZXQucHJpCSh3b3JraW5nIGNvcHkpCkBAIC05
NSw3ICs5NSw3IEBAIFNPVVJDRVMgKz0gXAogICAgIGRmZy9ERkdEcml2ZXIuY3BwIFwKICAgICBk
ZmcvREZHR3JhcGguY3BwIFwKICAgICBkZmcvREZHSklUQ29tcGlsZXIuY3BwIFwKLSAgICBkZmcv
REZHTm9kZS5jcHAgXAorICAgIGRmZy9ERkdOb2RlRmxhZ3MuY3BwIFwKICAgICBkZmcvREZHT3Bl
cmF0aW9ucy5jcHAgXAogICAgIGRmZy9ERkdPU1JFbnRyeS5jcHAgXAogICAgIGRmZy9ERkdPU1JF
eGl0LmNwcCBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTEw
NDE5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTczLDcgKzczLDYgQEAKIAkJMEYwRkM0
NUExNEJEMTVGNTAwQjgxMTU0IC8qIExMSW50Q2FsbExpbmtJbmZvLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjBGQzQ1ODE0QkQxNUYxMDBCODExNTQg
LyogTExJbnRDYWxsTGlua0luZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQkwRjE1RjE1RjE0QjdBNzNFMDA1REUzN0QgLyogQ29tbW9uU2xvd1Bh
dGhzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjE1
RjE1RDE0QjdBNzNBMDA1REUzN0QgLyogQ29tbW9uU2xvd1BhdGhzLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYxNkQ3MjYxNDJDMzlDMDAwQ0Y3
ODRBIC8qIEJpdFZlY3Rvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRjE2RDcyNDE0MkMzOUEyMDBDRjc4NEEgLyogQml0VmVjdG9yLmNwcCAqLzsg
fTsKLQkJMEYxRDA4NjExNTBDNUE4NjAwNzREMTA5IC8qIERGR05vZGUuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYxRDA4NUYxNTBDNUE4MDAwNzRE
MTA5IC8qIERGR05vZGUuY3BwICovOyB9OwogCQkwRjIxQzI2ODE0QkU1RjY4MDBBREM2NEIgLyog
SklURHJpdmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRjIxQzI2NjE0QkU1RjVFMDBBREM2NEIgLyogSklURHJpdmVyLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYyMUMyN0MxNEJFNzI3NjAwQURD
NjRCIC8qIEV4ZWN1dGlvbkhhcm5lc3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGMjFDMjdBMTRCRTcyNzMwMEFEQzY0QiAvKiBFeGVjdXRpb25IYXJu
ZXNzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
MEYyMUMyN0QxNEJFNzI3QTAwQURDNjRCIC8qIENvZGVTcGVjaWFsaXphdGlvbktpbmQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMjFDMjc5MTRCRTcy
NzMwMEFEQzY0QiAvKiBDb2RlU3BlY2lhbGl6YXRpb25LaW5kLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTEzMiw2ICsxMzEsOSBAQAogCQkwRjlG
QzhDNDE0RTFCNjAwMDBENTJBRTAgLyogUG9seW1vcnBoaWNQdXRCeUlkTGlzdC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY5RkM4QzAxNEUxQjVGQjAw
RDUyQUUwIC8qIFBvbHltb3JwaGljUHV0QnlJZExpc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjlGQzhDNTE0RTFCNjA0MDBENTJBRTAgLyog
UHV0S2luZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEY5RkM4QzExNEUxQjVGQjAwRDUyQUUwIC8qIFB1dEtpbmQuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjlGQzhEMDE0RTYxMkQ4MDBENTJBRTAg
LyogRGF0YUxvZy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRjlGQzhDRDE0RTYxMkQ1MDBENTJBRTAgLyogRGF0YUxvZy5jcHAgKi87IH07CisJCTBG
QTU4MUJBMTUwRTk1MkMwMEI5QTJEOSAvKiBERkdOb2RlRmxhZ3MuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZBNTgxQjcxNTBFOTUyQTAwQjlBMkQ5
IC8qIERGR05vZGVGbGFncy5jcHAgKi87IH07CisJCTBGQTU4MUJCMTUwRTk1MzAwMEI5QTJEOSAv
KiBERkdOb2RlRmxhZ3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGQTU4MUI4MTUwRTk1MkEwMEI5QTJEOSAvKiBERkdOb2RlRmxhZ3MuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRkE1ODFCQzE1MEU5
NTMwMDBCOUEyRDkgLyogREZHTm9kZVR5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGQTU4MUI5MTUwRTk1MkEwMEI5QTJEOSAvKiBERkdOb2RlVHlw
ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBG
QjU0Njc3MTRGNTlCNUMwMDJDMjk4OSAvKiBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZCNTQ2NzYxNEY1OUFE
MTAwMkMyOTg5IC8qIExhenlPcGVyYW5kVmFsdWVQcm9maWxlLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEZCNTQ2NzkxNEY1QzQ2QjAwMkMyOTg5
IC8qIExhenlPcGVyYW5kVmFsdWVQcm9maWxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQjU0Njc4MTRGNUM0NjgwMDJDMjk4OSAvKiBMYXp5T3Bl
cmFuZFZhbHVlUHJvZmlsZS5jcHAgKi87IH07CiAJCTBGQjU0NjdCMTRGNUM3RTEwMDJDMjk4OSAv
KiBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkI1NDY3QTE0RjVDN0Q0MDAyQzI5ODkgLyogTWV0aG9k
T2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CkBAIC03ODQsNyArNzg2LDYgQEAKIAkJMEYwRkM0NTgxNEJEMTVGMTAw
QjgxMTU0IC8qIExMSW50Q2FsbExpbmtJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IExMSW50Q2FsbExpbmtJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTBGMTVGMTVEMTRCN0E3M0EwMDVERTM3RCAvKiBDb21tb25TbG93UGF0aHMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29tbW9uU2xvd1BhdGhzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTBGMTZENzI0MTQyQzM5QTIwMENGNzg0QSAvKiBCaXRWZWN0b3IuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQml0VmVjdG9yLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMEYxRDA4NUYxNTBDNUE4MDAwNzREMTA5IC8qIERG
R05vZGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHTm9kZS5j
cHA7IHBhdGggPSBkZmcvREZHTm9kZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTBGMjFDMjY2MTRCRTVGNUUwMEFEQzY0QiAvKiBKSVREcml2ZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSklURHJpdmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTBGMjFDMjc5MTRCRTcyNzMwMEFEQzY0QiAvKiBDb2RlU3BlY2lhbGl6YXRpb25LaW5kLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvZGVTcGVjaWFsaXphdGlvbktpbmQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYyMUMyN0ExNEJFNzI3MzAwQURDNjRC
IC8qIEV4ZWN1dGlvbkhhcm5lc3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
RXhlY3V0aW9uSGFybmVzcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODUwLDYg
Kzg1MSw5IEBACiAJCTBGOUZDOEMxMTRFMUI1RkIwMEQ1MkFFMCAvKiBQdXRLaW5kLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFB1dEtpbmQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMEY5RkM4Q0QxNEU2MTJENTAwRDUyQUUwIC8qIERhdGFMb2cuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGF0YUxvZy5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTBGOUZDOENFMTRFNjEyRDUwMEQ1MkFFMCAvKiBEYXRhTG9nLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERhdGFMb2cuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMEZBNTgxQjcxNTBFOTUyQTAwQjlBMkQ5IC8qIERGR05vZGVGbGFn
cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdOb2RlRmxhZ3Mu
Y3BwOyBwYXRoID0gZGZnL0RGR05vZGVGbGFncy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTBGQTU4MUI4MTUwRTk1MkEwMEI5QTJEOSAvKiBERkdOb2RlRmxhZ3MuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHTm9kZUZsYWdzLmg7IHBhdGggPSBkZmcvREZH
Tm9kZUZsYWdzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGQTU4MUI5MTUwRTk1
MkEwMEI5QTJEOSAvKiBERkdOb2RlVHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5h
bWUgPSBERkdOb2RlVHlwZS5oOyBwYXRoID0gZGZnL0RGR05vZGVUeXBlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTBGQjU0Njc2MTRGNTlBRDEwMDJDMjk4OSAvKiBMYXp5T3BlcmFu
ZFZhbHVlUHJvZmlsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMYXp5T3Bl
cmFuZFZhbHVlUHJvZmlsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkI1NDY3
ODE0RjVDNDY4MDAyQzI5ODkgLyogTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkI1NDY3QTE0RjVDN0Q0MDAyQzI5ODkg
LyogTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC0yNTA2LDcgKzI1MTAsNiBAQAogCQk4NkVDOURCMzEzMjhERjQ0MDAy
QjJBRDcgLyogZGZnICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgK
LQkJCQkwRjFEMDg1RjE1MEM1QTgwMDA3NEQxMDkgLyogREZHTm9kZS5jcHAgKi8sCiAJCQkJMEZG
RkM5NDkxNEVGOTA5NTAwQzcyNTMyIC8qIERGR0FyaXRoTm9kZUZsYWdzSW5mZXJlbmNlUGhhc2Uu
Y3BwICovLAogCQkJCTBGRkZDOTRBMTRFRjkwOTUwMEM3MjUzMiAvKiBERkdBcml0aE5vZGVGbGFn
c0luZmVyZW5jZVBoYXNlLmggKi8sCiAJCQkJMEY2MjAxNkQxNDNGQ0QyRjAwNjhCNzdDIC8qIERG
R0Fic3RyYWN0U3RhdGUuY3BwICovLApAQCAtMjUzOCw3ICsyNTQxLDEwIEBACiAJCQkJODZFQzlE
QkIxMzI4REY4MjAwMkIyQUQ3IC8qIERGR0pJVENvbXBpbGVyLmNwcCAqLywKIAkJCQk4NkVDOURC
QzEzMjhERjgyMDAyQjJBRDcgLyogREZHSklUQ29tcGlsZXIuaCAqLywKIAkJCQk4NkVDQTNFOTEz
MkRFRjFDMDAyQjJBRDcgLyogREZHTm9kZS5oICovLAorCQkJCTBGQTU4MUI3MTUwRTk1MkEwMEI5
QTJEOSAvKiBERkdOb2RlRmxhZ3MuY3BwICovLAorCQkJCTBGQTU4MUI4MTUwRTk1MkEwMEI5QTJE
OSAvKiBERkdOb2RlRmxhZ3MuaCAqLywKIAkJCQkwRjY2RTE2ODE0REYzRjEzMDBCN0IyRTQgLyog
REZHTm9kZVJlZmVyZW5jZUJsb2IuaCAqLywKKwkJCQkwRkE1ODFCOTE1MEU5NTJBMDBCOUEyRDkg
LyogREZHTm9kZVR5cGUuaCAqLywKIAkJCQkwRjY2RTE2OTE0REYzRjEzMDBCN0IyRTQgLyogREZH
Tm9kZVVzZS5oICovLAogCQkJCTBGNjIwMTcxMTQzRkNEMkYwMDY4Qjc3QyAvKiBERkdPcGVyYW5k
cy5oICovLAogCQkJCTg2RUM5REJGMTMyOERGODIwMDJCMkFENyAvKiBERkdPcGVyYXRpb25zLmNw
cCAqLywKQEAgLTMwOTIsNiArMzA5OCw4IEBACiAJCQkJMEYwNzc2QkYxNEZGMDAyQjAwMTAyMzMy
IC8qIEpJVENvbXBpbGF0aW9uRWZmb3J0LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjU2QTFEMzE1
MDAwRjM1MDAyOTkyQjEgLyogRXhlY3V0aW9uQ291bnRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEE0MzM3QkUxNTA2MjE5QjAwOTkxQzk1IC8qIERGR1JlZHVuZGFudFBoaUVsaW1pbmF0aW9uUGhh
c2UuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGQTU4MUJCMTUwRTk1MzAwMEI5QTJEOSAvKiBERkdO
b2RlRmxhZ3MuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGQTU4MUJDMTUwRTk1MzAwMEI5QTJEOSAv
KiBERkdOb2RlVHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxv
eW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0zNzE4LDcgKzM3MjYsNyBAQAogCQkJ
CTBGQjU0NjdEMTRGNUNGRDYwMDJDMjk4OSAvKiBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxl
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNTZBMUQ1MTUwMDFDRjQwMDI5OTJCMSAvKiBFeGVj
dXRpb25Db3VudGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBBNDMzN0JCMTUwNjIxODgwMDk5
MUM5NSAvKiBERkdSZWR1bmRhbnRQaGlFbGltaW5hdGlvblBoYXNlLmNwcCBpbiBTb3VyY2VzICov
LAotCQkJCTBGMUQwODYxMTUwQzVBODYwMDc0RDEwOSAvKiBERkdOb2RlLmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCTBGQTU4MUJBMTUwRTk1MkMwMEI5QTJEOSAvKiBERkdOb2RlRmxhZ3MuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2lu
ZyA9IDA7CiAJCX07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0
U3RhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJz
dHJhY3RTdGF0ZS5jcHAJKHJldmlzaW9uIDExMDQxOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQWJzdHJhY3RTdGF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMCw3ICsxMDAs
NyBAQCB2b2lkIEFic3RyYWN0U3RhdGU6OmluaXRpYWxpemUoR3JhcGgmIGdyCiAgICAgcm9vdC0+
Y2ZhU2hvdWxkUmV2aXNpdCA9IHRydWU7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCByb290
LT52YWx1ZXNBdEhlYWQubnVtYmVyT2ZBcmd1bWVudHMoKTsgKytpKSB7CiAgICAgICAgIE5vZGUm
IG5vZGUgPSBncmFwaFtyb290LT52YXJpYWJsZXNBdEhlYWQuYXJndW1lbnQoaSldOwotICAgICAg
ICBBU1NFUlQobm9kZS5vcCA9PSBTZXRBcmd1bWVudCk7CisgICAgICAgIEFTU0VSVChub2RlLm9w
KCkgPT0gU2V0QXJndW1lbnQpOwogICAgICAgICBpZiAoIW5vZGUuc2hvdWxkR2VuZXJhdGUoKSkg
ewogICAgICAgICAgICAgLy8gVGhlIGFyZ3VtZW50IGlzIGRlYWQuIFdlIGRvbid0IGRvIGFueSBj
aGVja3MgZm9yIHN1Y2ggYXJndW1lbnRzLCBhbmQgc28KICAgICAgICAgICAgIC8vIGZvciB0aGUg
cHVycG9zZSBvZiB0aGUgYW5hbHlzaXMsIHRoZXkgY29udGFpbiBubyB2YWx1ZS4KQEAgLTIyMiw3
ICsyMjIsNyBAQCBib29sIEFic3RyYWN0U3RhdGU6OmV4ZWN1dGUodW5zaWduZWQgaW5kCiAgICAg
aWYgKCFub2RlLnNob3VsZEdlbmVyYXRlKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAg
ICAKLSAgICBzd2l0Y2ggKG5vZGUub3ApIHsKKyAgICBzd2l0Y2ggKG5vZGUub3AoKSkgewogICAg
IGNhc2UgSlNDb25zdGFudDoKICAgICBjYXNlIFdlYWtKU0NvbnN0YW50OiB7CiAgICAgICAgIEpT
VmFsdWUgdmFsdWUgPSBtX2dyYXBoLnZhbHVlT2ZKU0NvbnN0YW50KG5vZGVJbmRleCk7CkBAIC0z
MTQsNyArMzE0LDcgQEAgYm9vbCBBYnN0cmFjdFN0YXRlOjpleGVjdXRlKHVuc2lnbmVkIGluZAog
ICAgICAgICAgICAgZm9yTm9kZShub2RlSW5kZXgpLnNldChQcmVkaWN0RG91YmxlKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgIGlmIChub2RlLm9wID09IFZhbHVlQWRk
KSB7CisgICAgICAgIGlmIChub2RlLm9wKCkgPT0gVmFsdWVBZGQpIHsKICAgICAgICAgICAgIGNs
b2JiZXJTdHJ1Y3R1cmVzKGluZGV4SW5CbG9jayk7CiAgICAgICAgICAgICBmb3JOb2RlKG5vZGVJ
bmRleCkuc2V0KFByZWRpY3RTdHJpbmcgfCBQcmVkaWN0SW50MzIgfCBQcmVkaWN0TnVtYmVyKTsK
ICAgICAgICAgICAgIGJyZWFrOwpAQCAtNDIyLDkgKzQyMiw5IEBAIGJvb2wgQWJzdHJhY3RTdGF0
ZTo6ZXhlY3V0ZSh1bnNpZ25lZCBpbmQKICAgICAgICAgICAgIGZpbHRlciA9IFByZWRpY3RJbnQz
MjsKICAgICAgICAgZWxzZSBpZiAoTm9kZTo6c2hvdWxkU3BlY3VsYXRlTnVtYmVyKGxlZnQsIHJp
Z2h0KSkKICAgICAgICAgICAgIGZpbHRlciA9IFByZWRpY3ROdW1iZXI7Ci0gICAgICAgIGVsc2Ug
aWYgKG5vZGUub3AgPT0gQ29tcGFyZUVxICYmIE5vZGU6OnNob3VsZFNwZWN1bGF0ZUZpbmFsT2Jq
ZWN0KGxlZnQsIHJpZ2h0KSkKKyAgICAgICAgZWxzZSBpZiAobm9kZS5vcCgpID09IENvbXBhcmVF
cSAmJiBOb2RlOjpzaG91bGRTcGVjdWxhdGVGaW5hbE9iamVjdChsZWZ0LCByaWdodCkpCiAgICAg
ICAgICAgICBmaWx0ZXIgPSBQcmVkaWN0RmluYWxPYmplY3Q7Ci0gICAgICAgIGVsc2UgaWYgKG5v
ZGUub3AgPT0gQ29tcGFyZUVxICYmIE5vZGU6OnNob3VsZFNwZWN1bGF0ZUFycmF5KGxlZnQsIHJp
Z2h0KSkKKyAgICAgICAgZWxzZSBpZiAobm9kZS5vcCgpID09IENvbXBhcmVFcSAmJiBOb2RlOjpz
aG91bGRTcGVjdWxhdGVBcnJheShsZWZ0LCByaWdodCkpCiAgICAgICAgICAgICBmaWx0ZXIgPSBQ
cmVkaWN0QXJyYXk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgZmlsdGVyID0gUHJlZGlj
dFRvcDsKQEAgLTU0Myw3ICs1NDMsNyBAQCBib29sIEFic3RyYWN0U3RhdGU6OmV4ZWN1dGUodW5z
aWduZWQgaW5kCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBpZiAoIW1f
Z3JhcGhbbm9kZS5jaGlsZDIoKV0uc2hvdWxkU3BlY3VsYXRlSW50ZWdlcigpIHx8ICFpc0FjdGlv
bmFibGVNdXRhYmxlQXJyYXlQcmVkaWN0aW9uKG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0ucHJlZGlj
dGlvbigpKSkgewotICAgICAgICAgICAgQVNTRVJUKG5vZGUub3AgPT0gUHV0QnlWYWwpOworICAg
ICAgICAgICAgQVNTRVJUKG5vZGUub3AoKSA9PSBQdXRCeVZhbCk7CiAgICAgICAgICAgICBjbG9i
YmVyU3RydWN0dXJlcyhpbmRleEluQmxvY2spOwogICAgICAgICAgICAgZm9yTm9kZShub2RlSW5k
ZXgpLm1ha2VUb3AoKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtOTc0LDYgKzk3NCwxMCBAQCBi
b29sIEFic3RyYWN0U3RhdGU6OmV4ZWN1dGUodW5zaWduZWQgaW5kCiAgICAgY2FzZSBJbmxpbmVT
dGFydDoKICAgICBjYXNlIE5vcDoKICAgICAgICAgYnJlYWs7CisgICAgICAgIAorICAgIGNhc2Ug
TGFzdE5vZGVUeXBlOgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgYnJl
YWs7CiAgICAgfQogICAgIAogICAgIHJldHVybiBtX2lzVmFsaWQ7CkBAIC0xMDA1LDEwICsxMDA5
LDEwIEBAIGlubGluZSBib29sIEFic3RyYWN0U3RhdGU6Om1lcmdlU3RhdGVBdFQKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIAogI2lmIERGR19FTkFCTEUoREVCVUdfUFJPUEFHQVRJT05fVkVS
Qk9TRSkKLSAgICAgICAgICAgIGRhdGFMb2coIiAgICAgICAgICBJdCdzIGxpdmUsIG5vZGUgQCV1
LlxuIiwgbm9kZUluZGV4KTsKKyAgICBkYXRhTG9nKCIgICAgICAgICAgSXQncyBsaXZlLCBub2Rl
IEAldS5cbiIsIG5vZGVJbmRleCk7CiAjZW5kaWYKLQotICAgIHN3aXRjaCAobm9kZS5vcCkgewor
ICAgIAorICAgIHN3aXRjaCAobm9kZS5vcCgpKSB7CiAgICAgY2FzZSBQaGk6CiAgICAgY2FzZSBT
ZXRBcmd1bWVudDoKICAgICBjYXNlIEZsdXNoOgpAQCAtMTExMCw3ICsxMTE0LDcgQEAgaW5saW5l
IGJvb2wgQWJzdHJhY3RTdGF0ZTo6bWVyZ2VUb1N1Y2NlcwogICAgIAogICAgIEFTU0VSVCh0ZXJt
aW5hbC5pc1Rlcm1pbmFsKCkpOwogICAgIAotICAgIHN3aXRjaCAodGVybWluYWwub3ApIHsKKyAg
ICBzd2l0Y2ggKHRlcm1pbmFsLm9wKCkpIHsKICAgICBjYXNlIEp1bXA6CiAgICAgICAgIHJldHVy
biBtZXJnZShiYXNpY0Jsb2NrLCBncmFwaC5tX2Jsb2Nrc1t0ZXJtaW5hbC50YWtlbkJsb2NrSW5k
ZXgoKV0uZ2V0KCkpOwogICAgICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQXJpdGhOb2RlRmxhZ3NJbmZlcmVuY2VQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcml0aE5vZGVGbGFnc0luZmVyZW5jZVBoYXNlLmNwcAko
cmV2aXNpb24gMTEwNDE5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcml0aE5v
ZGVGbGFnc0luZmVyZW5jZVBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODAsOCArODAsOCBA
QCBwcml2YXRlOgogICAgICAgICBpZiAoIW5vZGUuc2hvdWxkR2VuZXJhdGUoKSkKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgCi0gICAgICAgIE5vZGVUeXBlIG9wID0gc3RhdGljX2Nhc3Q8
Tm9kZVR5cGU+KG5vZGUub3ApOwotICAgICAgICBOb2RlRmxhZ3MgZmxhZ3MgPSBub2RlLmZsYWdz
OworICAgICAgICBOb2RlVHlwZSBvcCA9IG5vZGUub3AoKTsKKyAgICAgICAgTm9kZUZsYWdzIGZs
YWdzID0gbm9kZS5mbGFncygpOwogICAgICAgICAKICNpZiBERkdfRU5BQkxFKERFQlVHX1BST1BB
R0FUSU9OX1ZFUkJPU0UpCiAgICAgICAgIGRhdGFMb2coIiAgICVzIEAldTogJXMgIiwgR3JhcGg6
Om9wTmFtZShvcCksIG1fY29tcGlsZUluZGV4LCBhcml0aE5vZGVGbGFnc0FzU3RyaW5nKGZsYWdz
KSk7CkBAIC0xNzUsNyArMTc1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIAogICAgICAgICBk
ZWZhdWx0OgogICAgICAgICAgICAgZmxhZ3MgfD0gTm9kZVVzZWRBc051bWJlciB8IE5vZGVOZWVk
c05lZ1plcm87Ci0gICAgICAgICAgICBpZiAobm9kZS5mbGFncyAmIE5vZGVIYXNWYXJBcmdzKSB7
CisgICAgICAgICAgICBpZiAobm9kZS5mbGFncygpICYgTm9kZUhhc1ZhckFyZ3MpIHsKICAgICAg
ICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGNoaWxkSWR4ID0gbm9kZS5maXJzdENoaWxkKCk7IGNo
aWxkSWR4IDwgbm9kZS5maXJzdENoaWxkKCkgKyBub2RlLm51bUNoaWxkcmVuKCk7IGNoaWxkSWR4
KyspCiAgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbV9ncmFwaFttX2dyYXBoLm1fdmFy
QXJnQ2hpbGRyZW5bY2hpbGRJZHhdXS5tZXJnZUFyaXRoTm9kZUZsYWdzKGZsYWdzKTsKICAgICAg
ICAgICAgIH0gZWxzZSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVD
b2RlUGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0J5dGVDb2RlUGFyc2VyLmNwcAkocmV2aXNpb24gMTEwNDE5KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2Miw3
ICsxNjIsNyBAQCBwcml2YXRlOgogICAgIE5vZGVJbmRleCBpbmplY3RMYXp5T3BlcmFuZFByZWRp
Y3Rpb24oTm9kZUluZGV4IG5vZGVJbmRleCkKICAgICB7CiAgICAgICAgIE5vZGUmIG5vZGUgPSBt
X2dyYXBoW25vZGVJbmRleF07Ci0gICAgICAgIEFTU0VSVChub2RlLm9wID09IEdldExvY2FsKTsK
KyAgICAgICAgQVNTRVJUKG5vZGUub3AoKSA9PSBHZXRMb2NhbCk7CiAgICAgICAgIEFTU0VSVChu
b2RlLmNvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCA9PSBtX2N1cnJlbnRJbmRleCk7CiAgICAgICAg
IFByZWRpY3RlZFR5cGUgcHJlZGljdGlvbiA9IAogICAgICAgICAgICAgbV9pbmxpbmVTdGFja1Rv
cC0+bV9sYXp5T3BlcmFuZHMucHJlZGljdGlvbigKQEAgLTE4MiwxMyArMTgyLDEzIEBAIHByaXZh
dGU6CiAgICAgICAgIAogICAgICAgICBpZiAobm9kZUluZGV4ICE9IE5vTm9kZSkgewogICAgICAg
ICAgICAgTm9kZSogbm9kZVB0ciA9ICZtX2dyYXBoW25vZGVJbmRleF07Ci0gICAgICAgICAgICBp
ZiAobm9kZVB0ci0+b3AgPT0gRmx1c2gpIHsKKyAgICAgICAgICAgIGlmIChub2RlUHRyLT5vcCgp
ID09IEZsdXNoKSB7CiAgICAgICAgICAgICAgICAgLy8gVHdvIHBvc3NpYmlsaXRpZXM6IGVpdGhl
ciB0aGUgYmxvY2sgd2FudHMgdGhlIGxvY2FsIHRvIGJlIGxpdmUKICAgICAgICAgICAgICAgICAv
LyBidXQgaGFzIG5vdCBsb2FkZWQgaXRzIHZhbHVlLCBvciBpdCBoYXMgbG9hZGVkIGl0cyB2YWx1
ZSwgaW4KICAgICAgICAgICAgICAgICAvLyB3aGljaCBjYXNlIHdlJ3JlIGRvbmUuCiAgICAgICAg
ICAgICAgICAgbm9kZUluZGV4ID0gbm9kZVB0ci0+Y2hpbGQxKCkuaW5kZXgoKTsKICAgICAgICAg
ICAgICAgICBOb2RlJiBmbHVzaENoaWxkID0gbV9ncmFwaFtub2RlSW5kZXhdOwotICAgICAgICAg
ICAgICAgIGlmIChmbHVzaENoaWxkLm9wID09IFBoaSkgeworICAgICAgICAgICAgICAgIGlmIChm
bHVzaENoaWxkLm9wKCkgPT0gUGhpKSB7CiAgICAgICAgICAgICAgICAgICAgIFZhcmlhYmxlQWNj
ZXNzRGF0YSogdmFyaWFibGVBY2Nlc3NEYXRhID0gZmx1c2hDaGlsZC52YXJpYWJsZUFjY2Vzc0Rh
dGEoKTsKICAgICAgICAgICAgICAgICAgICAgbm9kZUluZGV4ID0gaW5qZWN0TGF6eU9wZXJhbmRQ
cmVkaWN0aW9uKGFkZFRvR3JhcGgoR2V0TG9jYWwsIE9wSW5mbyh2YXJpYWJsZUFjY2Vzc0RhdGEp
LCBub2RlSW5kZXgpKTsKICAgICAgICAgICAgICAgICAgICAgbV9jdXJyZW50QmxvY2stPnZhcmlh
Ymxlc0F0VGFpbC5sb2NhbChvcGVyYW5kKSA9IG5vZGVJbmRleDsKQEAgLTE5OCw3ICsxOTgsNyBA
QCBwcml2YXRlOgogICAgICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgICAgICBBU1NF
UlQoJm1fZ3JhcGhbbm9kZUluZGV4XSA9PSBub2RlUHRyKTsKLSAgICAgICAgICAgIEFTU0VSVChu
b2RlUHRyLT5vcCAhPSBGbHVzaCk7CisgICAgICAgICAgICBBU1NFUlQobm9kZVB0ci0+b3AoKSAh
PSBGbHVzaCk7CiAKICAgICAgICAgICAgIGlmIChtX2dyYXBoLmxvY2FsSXNDYXB0dXJlZChvcGVy
YW5kKSkgewogICAgICAgICAgICAgICAgIC8vIFdlIHdpc2ggdG8gdXNlIHRoZSBzYW1lIHZhcmlh
YmxlIGFjY2VzcyBkYXRhIGFzIHRoZSBwcmV2aW91cyBhY2Nlc3MsCkBAIC0yMDYsMTUgKzIwNiwx
NSBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIC8vIGtub3csIGF0IHRoaXMgc3RhZ2Ugb2Yg
Y29tcGlsYXRpb24sIHRoZSBsb2NhbCBoYXMgYmVlbiBjbG9iYmVyZWQuCiAgICAgICAgICAgICAg
ICAgCiAgICAgICAgICAgICAgICAgLy8gTWFrZSBzdXJlIHdlIGxpbmsgdG8gdGhlIFBoaSBub2Rl
LCBub3QgdG8gdGhlIEdldExvY2FsLgotICAgICAgICAgICAgICAgIGlmIChub2RlUHRyLT5vcCA9
PSBHZXRMb2NhbCkKKyAgICAgICAgICAgICAgICBpZiAobm9kZVB0ci0+b3AoKSA9PSBHZXRMb2Nh
bCkKICAgICAgICAgICAgICAgICAgICAgbm9kZUluZGV4ID0gbm9kZVB0ci0+Y2hpbGQxKCkuaW5k
ZXgoKTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICByZXR1cm4gaW5qZWN0TGF6
eU9wZXJhbmRQcmVkaWN0aW9uKGFkZFRvR3JhcGgoR2V0TG9jYWwsIE9wSW5mbyhub2RlUHRyLT52
YXJpYWJsZUFjY2Vzc0RhdGEoKSksIG5vZGVJbmRleCkpOwogICAgICAgICAgICAgfQogICAgICAg
ICAgICAgCi0gICAgICAgICAgICBpZiAobm9kZVB0ci0+b3AgPT0gR2V0TG9jYWwpCisgICAgICAg
ICAgICBpZiAobm9kZVB0ci0+b3AoKSA9PSBHZXRMb2NhbCkKICAgICAgICAgICAgICAgICByZXR1
cm4gbm9kZUluZGV4OwotICAgICAgICAgICAgQVNTRVJUKG5vZGVQdHItPm9wID09IFNldExvY2Fs
KTsKKyAgICAgICAgICAgIEFTU0VSVChub2RlUHRyLT5vcCgpID09IFNldExvY2FsKTsKICAgICAg
ICAgICAgIHJldHVybiBub2RlUHRyLT5jaGlsZDEoKS5pbmRleCgpOwogICAgICAgICB9CiAKQEAg
LTI1MiwxMyArMjUyLDEzIEBAIHByaXZhdGU6CiAKICAgICAgICAgaWYgKG5vZGVJbmRleCAhPSBO
b05vZGUpIHsKICAgICAgICAgICAgIE5vZGUqIG5vZGVQdHIgPSAmbV9ncmFwaFtub2RlSW5kZXhd
OwotICAgICAgICAgICAgaWYgKG5vZGVQdHItPm9wID09IEZsdXNoKSB7CisgICAgICAgICAgICBp
ZiAobm9kZVB0ci0+b3AoKSA9PSBGbHVzaCkgewogICAgICAgICAgICAgICAgIC8vIFR3byBwb3Nz
aWJpbGl0aWVzOiBlaXRoZXIgdGhlIGJsb2NrIHdhbnRzIHRoZSBsb2NhbCB0byBiZSBsaXZlCiAg
ICAgICAgICAgICAgICAgLy8gYnV0IGhhcyBub3QgbG9hZGVkIGl0cyB2YWx1ZSwgb3IgaXQgaGFz
IGxvYWRlZCBpdHMgdmFsdWUsIGluCiAgICAgICAgICAgICAgICAgLy8gd2hpY2ggY2FzZSB3ZSdy
ZSBkb25lLgogICAgICAgICAgICAgICAgIG5vZGVJbmRleCA9IG5vZGVQdHItPmNoaWxkMSgpLmlu
ZGV4KCk7CiAgICAgICAgICAgICAgICAgTm9kZSYgZmx1c2hDaGlsZCA9IG1fZ3JhcGhbbm9kZUlu
ZGV4XTsKLSAgICAgICAgICAgICAgICBpZiAoZmx1c2hDaGlsZC5vcCA9PSBQaGkpIHsKKyAgICAg
ICAgICAgICAgICBpZiAoZmx1c2hDaGlsZC5vcCgpID09IFBoaSkgewogICAgICAgICAgICAgICAg
ICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEqIHZhcmlhYmxlQWNjZXNzRGF0YSA9IGZsdXNoQ2hpbGQu
dmFyaWFibGVBY2Nlc3NEYXRhKCk7CiAgICAgICAgICAgICAgICAgICAgIG5vZGVJbmRleCA9IGlu
amVjdExhenlPcGVyYW5kUHJlZGljdGlvbihhZGRUb0dyYXBoKEdldExvY2FsLCBPcEluZm8odmFy
aWFibGVBY2Nlc3NEYXRhKSwgbm9kZUluZGV4KSk7CiAgICAgICAgICAgICAgICAgICAgIG1fY3Vy
cmVudEJsb2NrLT52YXJpYWJsZXNBdFRhaWwubG9jYWwob3BlcmFuZCkgPSBub2RlSW5kZXg7CkBA
IC0yNjgsOSArMjY4LDkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIAog
ICAgICAgICAgICAgQVNTRVJUKCZtX2dyYXBoW25vZGVJbmRleF0gPT0gbm9kZVB0cik7Ci0gICAg
ICAgICAgICBBU1NFUlQobm9kZVB0ci0+b3AgIT0gRmx1c2gpOworICAgICAgICAgICAgQVNTRVJU
KG5vZGVQdHItPm9wKCkgIT0gRmx1c2gpOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAo
bm9kZVB0ci0+b3AgPT0gU2V0QXJndW1lbnQpIHsKKyAgICAgICAgICAgIGlmIChub2RlUHRyLT5v
cCgpID09IFNldEFyZ3VtZW50KSB7CiAgICAgICAgICAgICAgICAgLy8gV2UncmUgZ2V0dGluZyBh
biBhcmd1bWVudCBpbiB0aGUgZmlyc3QgYmFzaWMgYmxvY2s7IGxpbmsKICAgICAgICAgICAgICAg
ICAvLyB0aGUgR2V0TG9jYWwgdG8gdGhlIFNldEFyZ3VtZW50LgogICAgICAgICAgICAgICAgIEFT
U0VSVChub2RlUHRyLT5sb2NhbCgpID09IHN0YXRpY19jYXN0PFZpcnR1YWxSZWdpc3Rlcj4ob3Bl
cmFuZCkpOwpAQCAtMjgwLDE1ICsyODAsMTUgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIAogICAgICAgICAgICAgaWYgKG1fZ3JhcGguYXJndW1lbnRJc0NhcHR1cmVkKGFy
Z3VtZW50KSkgewotICAgICAgICAgICAgICAgIGlmIChub2RlUHRyLT5vcCA9PSBHZXRMb2NhbCkK
KyAgICAgICAgICAgICAgICBpZiAobm9kZVB0ci0+b3AoKSA9PSBHZXRMb2NhbCkKICAgICAgICAg
ICAgICAgICAgICAgbm9kZUluZGV4ID0gbm9kZVB0ci0+Y2hpbGQxKCkuaW5kZXgoKTsKICAgICAg
ICAgICAgICAgICByZXR1cm4gaW5qZWN0TGF6eU9wZXJhbmRQcmVkaWN0aW9uKGFkZFRvR3JhcGgo
R2V0TG9jYWwsIE9wSW5mbyhub2RlUHRyLT52YXJpYWJsZUFjY2Vzc0RhdGEoKSksIG5vZGVJbmRl
eCkpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAobm9kZVB0
ci0+b3AgPT0gR2V0TG9jYWwpCisgICAgICAgICAgICBpZiAobm9kZVB0ci0+b3AoKSA9PSBHZXRM
b2NhbCkKICAgICAgICAgICAgICAgICByZXR1cm4gbm9kZUluZGV4OwogICAgICAgICAgICAgCi0g
ICAgICAgICAgICBBU1NFUlQobm9kZVB0ci0+b3AgPT0gU2V0TG9jYWwpOworICAgICAgICAgICAg
QVNTRVJUKG5vZGVQdHItPm9wKCkgPT0gU2V0TG9jYWwpOwogICAgICAgICAgICAgcmV0dXJuIG5v
ZGVQdHItPmNoaWxkMSgpLmluZGV4KCk7CiAgICAgICAgIH0KICAgICAgICAgCkBAIC0zMzcsMTAg
KzMzNywxMCBAQCBwcml2YXRlOgogICAgICAgICAKICAgICAgICAgaWYgKG5vZGVJbmRleCAhPSBO
b05vZGUpIHsKICAgICAgICAgICAgIE5vZGUmIG5vZGUgPSBtX2dyYXBoW25vZGVJbmRleF07Ci0g
ICAgICAgICAgICBpZiAobm9kZS5vcCA9PSBGbHVzaCkKKyAgICAgICAgICAgIGlmIChub2RlLm9w
KCkgPT0gRmx1c2gpCiAgICAgICAgICAgICAgICAgbm9kZUluZGV4ID0gbm9kZS5jaGlsZDEoKS5p
bmRleCgpOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBBU1NFUlQobV9ncmFwaFtub2RlSW5k
ZXhdLm9wICE9IEZsdXNoKTsKKyAgICAgICAgICAgIEFTU0VSVChtX2dyYXBoW25vZGVJbmRleF0u
b3AoKSAhPSBGbHVzaCk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIC8vIEVtaXQgYSBGbHVz
aCByZWdhcmRsZXNzIG9mIHdoZXRoZXIgd2UgYWxyZWFkeSBmbHVzaGVkIGl0LgogICAgICAgICAg
ICAgLy8gVGhpcyBnaXZlcyB1cyBndWlkYW5jZSB0byBzZWUgdGhhdCB0aGUgdmFyaWFibGUgYWxz
byBuZWVkcyB0byBiZSBmbHVzaGVkCkBAIC0zNzcsMTEgKzM3NywxMSBAQCBwcml2YXRlOgogICAg
ICAgICBpZiAobm9kZS5oYXNJbnQzMlJlc3VsdCgpKQogICAgICAgICAgICAgcmV0dXJuIGluZGV4
OwogCi0gICAgICAgIGlmIChub2RlLm9wID09IFVJbnQzMlRvTnVtYmVyKQorICAgICAgICBpZiAo
bm9kZS5vcCgpID09IFVJbnQzMlRvTnVtYmVyKQogICAgICAgICAgICAgcmV0dXJuIG5vZGUuY2hp
bGQxKCkuaW5kZXgoKTsKIAogICAgICAgICAvLyBDaGVjayBmb3IgbnVtZXJpYyBjb25zdGFudHMg
Ym94ZWQgYXMgSlNWYWx1ZXMuCi0gICAgICAgIGlmIChub2RlLm9wID09IEpTQ29uc3RhbnQpIHsK
KyAgICAgICAgaWYgKG5vZGUub3AoKSA9PSBKU0NvbnN0YW50KSB7CiAgICAgICAgICAgICBKU1Zh
bHVlIHYgPSB2YWx1ZU9mSlNDb25zdGFudChpbmRleCk7CiAgICAgICAgICAgICBpZiAodi5pc0lu
dDMyKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGdldEpTQ29uc3RhbnQobm9kZS5jb25zdGFu
dE51bWJlcigpKTsKQEAgLTQyNyw3ICs0MjcsNyBAQCBwcml2YXRlOgogICAgIC8vIENvbnZlbmll
bmNlIG1ldGhvZHMgZm9yIGNoZWNraW5nIG5vZGVzIGZvciBjb25zdGFudHMuCiAgICAgYm9vbCBp
c0pTQ29uc3RhbnQoTm9kZUluZGV4IGluZGV4KQogICAgIHsKLSAgICAgICAgcmV0dXJuIG1fZ3Jh
cGhbaW5kZXhdLm9wID09IEpTQ29uc3RhbnQ7CisgICAgICAgIHJldHVybiBtX2dyYXBoW2luZGV4
XS5vcCgpID09IEpTQ29uc3RhbnQ7CiAgICAgfQogICAgIGJvb2wgaXNJbnQzMkNvbnN0YW50KE5v
ZGVJbmRleCBub2RlSW5kZXgpCiAgICAgewpAQCAtNjk5LDEwICs2OTksMTAgQEAgcHJpdmF0ZToK
ICAgICAgICAgICAgIHJldHVybiBub2RlSW5kZXg7CiAgICAgICAgIAogI2lmIERGR19FTkFCTEUo
REVCVUdfVkVSQk9TRSkKLSAgICAgICAgZGF0YUxvZygiTWFraW5nICVzIEAldSBzYWZlIGF0IGJj
IyV1IGJlY2F1c2Ugc2xvdy1jYXNlIGNvdW50ZXIgaXMgYXQgJXUgYW5kIGV4aXQgcHJvZmlsZXMg
c2F5ICVkLCAlZFxuIiwgR3JhcGg6Om9wTmFtZShzdGF0aWNfY2FzdDxOb2RlVHlwZT4obV9ncmFw
aFtub2RlSW5kZXhdLm9wKSksIG5vZGVJbmRleCwgbV9jdXJyZW50SW5kZXgsIG1faW5saW5lU3Rh
Y2tUb3AtPm1fcHJvZmlsZWRCbG9jay0+cmFyZUNhc2VQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQo
bV9jdXJyZW50SW5kZXgpLT5tX2NvdW50ZXIsIG1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2Zp
bGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIE92ZXJmbG93KSwgbV9pbmxpbmVTdGFja1Rv
cC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgTmVnYXRpdmVaZXJv
KSk7CisgICAgICAgIGRhdGFMb2coIk1ha2luZyAlcyBAJXUgc2FmZSBhdCBiYyMldSBiZWNhdXNl
IHNsb3ctY2FzZSBjb3VudGVyIGlzIGF0ICV1IGFuZCBleGl0IHByb2ZpbGVzIHNheSAlZCwgJWRc
biIsIEdyYXBoOjpvcE5hbWUobV9ncmFwaFtub2RlSW5kZXhdLm9wKCkpLCBub2RlSW5kZXgsIG1f
Y3VycmVudEluZGV4LCBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2stPnJhcmVDYXNl
UHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KG1fY3VycmVudEluZGV4KS0+bV9jb3VudGVyLCBtX2lu
bGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBP
dmVyZmxvdyksIG1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9j
dXJyZW50SW5kZXgsIE5lZ2F0aXZlWmVybykpOwogI2VuZGlmCiAgICAgICAgIAotICAgICAgICBz
d2l0Y2ggKG1fZ3JhcGhbbm9kZUluZGV4XS5vcCkgeworICAgICAgICBzd2l0Y2ggKG1fZ3JhcGhb
bm9kZUluZGV4XS5vcCgpKSB7CiAgICAgICAgIGNhc2UgVUludDMyVG9OdW1iZXI6CiAgICAgICAg
IGNhc2UgQXJpdGhBZGQ6CiAgICAgICAgIGNhc2UgQXJpdGhTdWI6CkBAIC03MzgsNyArNzM4LDcg
QEAgcHJpdmF0ZToKICAgICAKICAgICBOb2RlSW5kZXggbWFrZURpdlNhZmUoTm9kZUluZGV4IG5v
ZGVJbmRleCkKICAgICB7Ci0gICAgICAgIEFTU0VSVChtX2dyYXBoW25vZGVJbmRleF0ub3AgPT0g
QXJpdGhEaXYpOworICAgICAgICBBU1NFUlQobV9ncmFwaFtub2RlSW5kZXhdLm9wKCkgPT0gQXJp
dGhEaXYpOwogICAgICAgICAKICAgICAgICAgLy8gVGhlIG1haW4gc2xvdyBjYXNlIGNvdW50ZXIg
Zm9yIG9wX2RpdiBpbiB0aGUgb2xkIEpJVCBjb3VudHMgb25seSB3aGVuCiAgICAgICAgIC8vIHRo
ZSBvcGVyYW5kcyBhcmUgbm90IG51bWJlcnMuIFdlIGRvbid0IGNhcmUgYWJvdXQgdGhhdCBzaW5j
ZSB3ZSBhbHJlYWR5CkBAIC03NTIsNyArNzUyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJl
dHVybiBub2RlSW5kZXg7CiAgICAgICAgIAogI2lmIERGR19FTkFCTEUoREVCVUdfVkVSQk9TRSkK
LSAgICAgICAgZGF0YUxvZygiTWFraW5nICVzIEAldSBzYWZlIGF0IGJjIyV1IGJlY2F1c2Ugc3Bl
Y2lhbCBmYXN0LWNhc2UgY291bnRlciBpcyBhdCAldSBhbmQgZXhpdCBwcm9maWxlcyBzYXkgJWQs
ICVkXG4iLCBHcmFwaDo6b3BOYW1lKHN0YXRpY19jYXN0PE5vZGVUeXBlPihtX2dyYXBoW25vZGVJ
bmRleF0ub3ApKSwgbm9kZUluZGV4LCBtX2N1cnJlbnRJbmRleCwgbV9pbmxpbmVTdGFja1RvcC0+
bV9wcm9maWxlZEJsb2NrLT5zcGVjaWFsRmFzdENhc2VQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQo
bV9jdXJyZW50SW5kZXgpLT5tX2NvdW50ZXIsIG1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2Zp
bGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIE92ZXJmbG93KSwgbV9pbmxpbmVTdGFja1Rv
cC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgTmVnYXRpdmVaZXJv
KSk7CisgICAgICAgIGRhdGFMb2coIk1ha2luZyAlcyBAJXUgc2FmZSBhdCBiYyMldSBiZWNhdXNl
IHNwZWNpYWwgZmFzdC1jYXNlIGNvdW50ZXIgaXMgYXQgJXUgYW5kIGV4aXQgcHJvZmlsZXMgc2F5
ICVkLCAlZFxuIiwgR3JhcGg6Om9wTmFtZShtX2dyYXBoW25vZGVJbmRleF0ub3AoKSksIG5vZGVJ
bmRleCwgbV9jdXJyZW50SW5kZXgsIG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jay0+
c3BlY2lhbEZhc3RDYXNlUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KG1fY3VycmVudEluZGV4KS0+
bV9jb3VudGVyLCBtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1f
Y3VycmVudEluZGV4LCBPdmVyZmxvdyksIG1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUu
aGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIE5lZ2F0aXZlWmVybykpOwogI2VuZGlmCiAgICAg
ICAgIAogICAgICAgICAvLyBGSVhNRTogSXQgbWlnaHQgYmUgcG9zc2libGUgdG8gbWFrZSB0aGlz
IG1vcmUgZ3JhbnVsYXIuIFRoZSBERkcgY2VydGFpbmx5IGNhbgpAQCAtMTIyMiw3ICsxMjIyLDcg
QEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcoYm9vbAogICAgICAgICBCYXNp
Y0Jsb2NrKiBibG9jayA9IG1fZ3JhcGgubV9ibG9ja3NbaW5saW5lU3RhY2tFbnRyeS5tX3VubGlu
a2VkQmxvY2tzW2ldLm1fYmxvY2tJbmRleF0uZ2V0KCk7CiAgICAgICAgIEFTU0VSVCghYmxvY2st
PmlzTGlua2VkKTsKICAgICAgICAgTm9kZSYgbm9kZSA9IG1fZ3JhcGhbYmxvY2stPmxhc3QoKV07
Ci0gICAgICAgIEFTU0VSVChub2RlLm9wID09IEp1bXApOworICAgICAgICBBU1NFUlQobm9kZS5v
cCgpID09IEp1bXApOwogICAgICAgICBBU1NFUlQobm9kZS50YWtlbkJsb2NrSW5kZXgoKSA9PSBO
b0Jsb2NrKTsKICAgICAgICAgbm9kZS5zZXRUYWtlbkJsb2NrSW5kZXgobV9ncmFwaC5tX2Jsb2Nr
cy5zaXplKCkpOwogICAgICAgICBpbmxpbmVTdGFja0VudHJ5Lm1fdW5saW5rZWRCbG9ja3NbaV0u
bV9uZWVkc0Vhcmx5UmV0dXJuTGlua2luZyA9IGZhbHNlOwpAQCAtMTQ0OSw3ICsxNDQ5LDcgQEAg
Ym9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogCiAgICAgICAgIGNhc2Ug
b3BfY29udmVydF90aGlzOiB7CiAgICAgICAgICAgICBOb2RlSW5kZXggb3AxID0gZ2V0VGhpcygp
OwotICAgICAgICAgICAgaWYgKG1fZ3JhcGhbb3AxXS5vcCA9PSBDb252ZXJ0VGhpcykKKyAgICAg
ICAgICAgIGlmIChtX2dyYXBoW29wMV0ub3AoKSA9PSBDb252ZXJ0VGhpcykKICAgICAgICAgICAg
ICAgICBzZXRUaGlzKG9wMSk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgc2V0
VGhpcyhhZGRUb0dyYXBoKENvbnZlcnRUaGlzLCBvcDEpKTsKQEAgLTIzNDAsNyArMjM0MCw3IEBA
IHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnByb2Nlc3NQaGlTdGFjaygpCiAgICAgICAgICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgICAgICAgICBwcmVkZWNlc3NvckJsb2NrLT52YXJpYWJsZXNBdEhl
YWQuc2V0TG9jYWxGaXJzdFRpbWUodmFyTm8sIHZhbHVlSW5QcmVkZWNlc3Nvcik7CiAgICAgICAg
ICAgICAgICAgcGhpU3RhY2suYXBwZW5kKFBoaVN0YWNrRW50cnkocHJlZGVjZXNzb3JCbG9jaywg
dmFsdWVJblByZWRlY2Vzc29yLCB2YXJObykpOwotICAgICAgICAgICAgfSBlbHNlIGlmIChtX2dy
YXBoW3ZhbHVlSW5QcmVkZWNlc3Nvcl0ub3AgPT0gR2V0TG9jYWwpIHsKKyAgICAgICAgICAgIH0g
ZWxzZSBpZiAobV9ncmFwaFt2YWx1ZUluUHJlZGVjZXNzb3JdLm9wKCkgPT0gR2V0TG9jYWwpIHsK
ICNpZiBERkdfRU5BQkxFKERFQlVHX1BST1BBR0FUSU9OX1ZFUkJPU0UpCiAgICAgICAgICAgICAg
ICAgZGF0YUxvZygiICAgICAgRm91bmQgR2V0TG9jYWwgQCV1LlxuIiwgdmFsdWVJblByZWRlY2Vz
c29yKTsKICNlbmRpZgpAQCAtMjM1NywxMCArMjM1NywxMCBAQCB2b2lkIEJ5dGVDb2RlUGFyc2Vy
Ojpwcm9jZXNzUGhpU3RhY2soKQogICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgICAgIEZvdW5k
IEAldS5cbiIsIHZhbHVlSW5QcmVkZWNlc3Nvcik7CiAjZW5kaWYKICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIEFTU0VSVChtX2dyYXBoW3ZhbHVlSW5QcmVkZWNlc3Nvcl0ub3AgPT0gU2V0TG9j
YWwKLSAgICAgICAgICAgICAgICAgICB8fCBtX2dyYXBoW3ZhbHVlSW5QcmVkZWNlc3Nvcl0ub3Ag
PT0gUGhpCi0gICAgICAgICAgICAgICAgICAgfHwgbV9ncmFwaFt2YWx1ZUluUHJlZGVjZXNzb3Jd
Lm9wID09IEZsdXNoCi0gICAgICAgICAgICAgICAgICAgfHwgKG1fZ3JhcGhbdmFsdWVJblByZWRl
Y2Vzc29yXS5vcCA9PSBTZXRBcmd1bWVudAorICAgICAgICAgICAgQVNTRVJUKG1fZ3JhcGhbdmFs
dWVJblByZWRlY2Vzc29yXS5vcCgpID09IFNldExvY2FsCisgICAgICAgICAgICAgICAgICAgfHwg
bV9ncmFwaFt2YWx1ZUluUHJlZGVjZXNzb3JdLm9wKCkgPT0gUGhpCisgICAgICAgICAgICAgICAg
ICAgfHwgbV9ncmFwaFt2YWx1ZUluUHJlZGVjZXNzb3JdLm9wKCkgPT0gRmx1c2gKKyAgICAgICAg
ICAgICAgICAgICB8fCAobV9ncmFwaFt2YWx1ZUluUHJlZGVjZXNzb3JdLm9wKCkgPT0gU2V0QXJn
dW1lbnQKICAgICAgICAgICAgICAgICAgICAgICAgJiYgc3RhY2tUeXBlID09IEFyZ3VtZW50UGhp
U3RhY2spKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiBk
YXRhRm9yUHJlZGVjZXNzb3IgPSBtX2dyYXBoW3ZhbHVlSW5QcmVkZWNlc3Nvcl0udmFyaWFibGVB
Y2Nlc3NEYXRhKCk7CkBAIC0yNDYwLDcgKzI0NjAsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjps
aW5rQmxvY2soQmFzaWNCbG9jCiAgICAgTm9kZSYgbm9kZSA9IG1fZ3JhcGhbYmxvY2stPmxhc3Qo
KV07CiAgICAgQVNTRVJUKG5vZGUuaXNUZXJtaW5hbCgpKTsKICAgICAKLSAgICBzd2l0Y2ggKG5v
ZGUub3ApIHsKKyAgICBzd2l0Y2ggKG5vZGUub3AoKSkgewogICAgIGNhc2UgSnVtcDoKICAgICAg
ICAgbm9kZS5zZXRUYWtlbkJsb2NrSW5kZXgobV9ncmFwaC5ibG9ja0luZGV4Rm9yQnl0ZWNvZGVP
ZmZzZXQocG9zc2libGVUYXJnZXRzLCBub2RlLnRha2VuQnl0ZWNvZGVPZmZzZXREdXJpbmdQYXJz
aW5nKCkpKTsKICNpZiBERkdfRU5BQkxFKERFQlVHX1ZFUkJPU0UpCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0NGQVBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0NGQVBoYXNlLmNwcAkocmV2aXNpb24gMTEwNDE5KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDRkFQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTg3LDcgKzg3LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGlmICghbV9ncmFwaFtub2RlSW5k
ZXhdLnNob3VsZEdlbmVyYXRlKCkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAjaWYgREZH
X0VOQUJMRShERUJVR19QUk9QQUdBVElPTl9WRVJCT1NFKQotICAgICAgICAgICAgZGF0YUxvZygi
ICAgICAgJXMgQCV1OiAiLCBHcmFwaDo6b3BOYW1lKHN0YXRpY19jYXN0PE5vZGVUeXBlPihtX2dy
YXBoW25vZGVJbmRleF0ub3ApKSwgbm9kZUluZGV4KTsKKyAgICAgICAgICAgIGRhdGFMb2coIiAg
ICAgICVzIEAldTogIiwgR3JhcGg6Om9wTmFtZShtX2dyYXBoW25vZGVJbmRleF0ub3AoKSksIG5v
ZGVJbmRleCk7CiAgICAgICAgICAgICBtX3N0YXRlLmR1bXAoV1RGOjpkYXRhRmlsZSgpKTsKICAg
ICAgICAgICAgIGRhdGFMb2coIlxuIik7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQ1NFUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQ1NFUGhhc2UuY3BwCShyZXZpc2lvbiAxMTA0MTkpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0NTRVBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTgsNyAr
NTgsNyBAQCBwcml2YXRlOgogICAgICAgICBpZiAobm9kZUluZGV4ID09IE5vTm9kZSkKICAgICAg
ICAgICAgIHJldHVybiBOb05vZGU7CiAgICAgICAgIAotICAgICAgICBpZiAobV9ncmFwaFtub2Rl
SW5kZXhdLm9wID09IFZhbHVlVG9JbnQzMikKKyAgICAgICAgaWYgKG1fZ3JhcGhbbm9kZUluZGV4
XS5vcCgpID09IFZhbHVlVG9JbnQzMikKICAgICAgICAgICAgIG5vZGVJbmRleCA9IG1fZ3JhcGhb
bm9kZUluZGV4XS5jaGlsZDEoKS5pbmRleCgpOwogICAgICAgICAKICAgICAgICAgcmV0dXJuIG5v
ZGVJbmRleDsKQEAgLTcwLDcgKzcwLDcgQEAgcHJpdmF0ZToKICAgICAKICAgICB1bnNpZ25lZCBl
bmRJbmRleEZvclB1cmVDU0UoKQogICAgIHsKLSAgICAgICAgdW5zaWduZWQgcmVzdWx0ID0gbV9s
YXN0U2VlblttX2dyYXBoW21fY29tcGlsZUluZGV4XS5vcF07CisgICAgICAgIHVuc2lnbmVkIHJl
c3VsdCA9IG1fbGFzdFNlZW5bbV9ncmFwaFttX2NvbXBpbGVJbmRleF0ub3AoKV07CiAgICAgICAg
IGlmIChyZXN1bHQgPT0gVUlOVF9NQVgpCiAgICAgICAgICAgICByZXN1bHQgPSAwOwogICAgICAg
ICBlbHNlCkBAIC05NCw3ICs5NCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgYnJlYWs7
CiAKICAgICAgICAgICAgIE5vZGUmIG90aGVyTm9kZSA9IG1fZ3JhcGhbaW5kZXhdOwotICAgICAg
ICAgICAgaWYgKG5vZGUub3AgIT0gb3RoZXJOb2RlLm9wKQorICAgICAgICAgICAgaWYgKG5vZGUu
b3AoKSAhPSBvdGhlck5vZGUub3AoKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAg
ICAgICAgIAogICAgICAgICAgICAgaWYgKG5vZGUuYXJpdGhOb2RlRmxhZ3MoKSAhPSBvdGhlck5v
ZGUuYXJpdGhOb2RlRmxhZ3MoKSkKQEAgLTEzOSw3ICsxMzksNyBAQCBwcml2YXRlOgogICAgIGJv
b2wgYnlWYWxJc1B1cmUoTm9kZSYgbm9kZSkKICAgICB7CiAgICAgICAgIHJldHVybiBtX2dyYXBo
W25vZGUuY2hpbGQyKCldLnNob3VsZFNwZWN1bGF0ZUludGVnZXIoKQotICAgICAgICAgICAgJiYg
KChub2RlLm9wID09IFB1dEJ5VmFsIHx8IG5vZGUub3AgPT0gUHV0QnlWYWxBbGlhcykKKyAgICAg
ICAgICAgICYmICgobm9kZS5vcCgpID09IFB1dEJ5VmFsIHx8IG5vZGUub3AoKSA9PSBQdXRCeVZh
bEFsaWFzKQogICAgICAgICAgICAgICAgID8gaXNBY3Rpb25hYmxlTXV0YWJsZUFycmF5UHJlZGlj
dGlvbihtX2dyYXBoW25vZGUuY2hpbGQxKCldLnByZWRpY3Rpb24oKSkKICAgICAgICAgICAgICAg
ICA6IGlzQWN0aW9uYWJsZUFycmF5UHJlZGljdGlvbihtX2dyYXBoW25vZGUuY2hpbGQxKCldLnBy
ZWRpY3Rpb24oKSkpOwogICAgIH0KQEAgLTE0NywxMSArMTQ3LDExIEBAIHByaXZhdGU6CiAgICAg
Ym9vbCBjbG9iYmVyc1dvcmxkKE5vZGVJbmRleCBub2RlSW5kZXgpCiAgICAgewogICAgICAgICBO
b2RlJiBub2RlID0gbV9ncmFwaFtub2RlSW5kZXhdOwotICAgICAgICBpZiAobm9kZS5mbGFncyAm
IE5vZGVDbG9iYmVyc1dvcmxkKQorICAgICAgICBpZiAobm9kZS5mbGFncygpICYgTm9kZUNsb2Ji
ZXJzV29ybGQpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgaWYgKCEobm9kZS5m
bGFncyAmIE5vZGVNaWdodENsb2JiZXIpKQorICAgICAgICBpZiAoIShub2RlLmZsYWdzKCkgJiBO
b2RlTWlnaHRDbG9iYmVyKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgc3dp
dGNoIChub2RlLm9wKSB7CisgICAgICAgIHN3aXRjaCAobm9kZS5vcCgpKSB7CiAgICAgICAgIGNh
c2UgVmFsdWVBZGQ6CiAgICAgICAgIGNhc2UgQ29tcGFyZUxlc3M6CiAgICAgICAgIGNhc2UgQ29t
cGFyZUxlc3NFcToKQEAgLTE4MSw3ICsxODEsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAg
IGJyZWFrOwogCiAgICAgICAgICAgICBOb2RlJiBvdGhlck5vZGUgPSBtX2dyYXBoW2luZGV4XTsK
LSAgICAgICAgICAgIGlmIChub2RlLm9wID09IG90aGVyTm9kZS5vcAorICAgICAgICAgICAgaWYg
KG5vZGUub3AoKSA9PSBvdGhlck5vZGUub3AoKQogICAgICAgICAgICAgICAgICYmIG5vZGUuYXJp
dGhOb2RlRmxhZ3MoKSA9PSBvdGhlck5vZGUuYXJpdGhOb2RlRmxhZ3MoKSkgewogICAgICAgICAg
ICAgICAgIE5vZGVJbmRleCBvdGhlckNoaWxkID0gY2Fub25pY2FsaXplKG90aGVyTm9kZS5jaGls
ZDEoKSk7CiAgICAgICAgICAgICAgICAgaWYgKG90aGVyQ2hpbGQgPT0gTm9Ob2RlKQpAQCAtMjEw
LDcgKzIxMCw3IEBAIHByaXZhdGU6CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG1faW5kZXhJ
bkJsb2NrOyBpLS07KSB7CiAgICAgICAgICAgICBOb2RlSW5kZXggaW5kZXggPSBtX2N1cnJlbnRC
bG9jay0+YXQoaSk7CiAgICAgICAgICAgICBOb2RlJiBub2RlID0gbV9ncmFwaFtpbmRleF07Ci0g
ICAgICAgICAgICBzd2l0Y2ggKG5vZGUub3ApIHsKKyAgICAgICAgICAgIHN3aXRjaCAobm9kZS5v
cCgpKSB7CiAgICAgICAgICAgICBjYXNlIEdldEdsb2JhbFZhcjoKICAgICAgICAgICAgICAgICBp
ZiAobm9kZS52YXJOdW1iZXIoKSA9PSB2YXJOdW1iZXIgJiYgY29kZUJsb2NrKCktPmdsb2JhbE9i
amVjdEZvcihub2RlLmNvZGVPcmlnaW4pID09IGdsb2JhbE9iamVjdCkKICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIGluZGV4OwpAQCAtMjM2LDcgKzIzNiw3IEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgICAgIE5vZGUmIG5vZGUgPSBtX2dyYXBoW2luZGV4
XTsKLSAgICAgICAgICAgIHN3aXRjaCAobm9kZS5vcCkgeworICAgICAgICAgICAgc3dpdGNoIChu
b2RlLm9wKCkpIHsKICAgICAgICAgICAgIGNhc2UgR2V0QnlWYWw6CiAgICAgICAgICAgICAgICAg
aWYgKCFieVZhbElzUHVyZShub2RlKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5vTm9k
ZTsKQEAgLTI4MCw3ICsyODAsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGJyZWFrOwog
CiAgICAgICAgICAgICBOb2RlJiBub2RlID0gbV9ncmFwaFtpbmRleF07Ci0gICAgICAgICAgICBp
ZiAobm9kZS5vcCA9PSBDaGVja0Z1bmN0aW9uICYmIG5vZGUuY2hpbGQxKCkgPT0gY2hpbGQxICYm
IG5vZGUuZnVuY3Rpb24oKSA9PSBmdW5jdGlvbikKKyAgICAgICAgICAgIGlmIChub2RlLm9wKCkg
PT0gQ2hlY2tGdW5jdGlvbiAmJiBub2RlLmNoaWxkMSgpID09IGNoaWxkMSAmJiBub2RlLmZ1bmN0
aW9uKCkgPT0gZnVuY3Rpb24pCiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAg
IH0KICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjk0LDcgKzI5NCw3IEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgICAgIE5vZGUmIG5vZGUgPSBtX2dyYXBo
W2luZGV4XTsKLSAgICAgICAgICAgIHN3aXRjaCAobm9kZS5vcCkgeworICAgICAgICAgICAgc3dp
dGNoIChub2RlLm9wKCkpIHsKICAgICAgICAgICAgIGNhc2UgQ2hlY2tTdHJ1Y3R1cmU6CiAgICAg
ICAgICAgICAgICAgaWYgKG5vZGUuY2hpbGQxKCkgPT0gY2hpbGQxCiAgICAgICAgICAgICAgICAg
ICAgICYmIHN0cnVjdHVyZVNldC5pc1N1cGVyc2V0T2Yobm9kZS5zdHJ1Y3R1cmVTZXQoKSkpCkBA
IC0zNDAsNyArMzQwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBicmVhazsKIAogICAg
ICAgICAgICAgTm9kZSYgbm9kZSA9IG1fZ3JhcGhbaW5kZXhdOwotICAgICAgICAgICAgc3dpdGNo
IChub2RlLm9wKSB7CisgICAgICAgICAgICBzd2l0Y2ggKG5vZGUub3AoKSkgewogICAgICAgICAg
ICAgY2FzZSBHZXRCeU9mZnNldDoKICAgICAgICAgICAgICAgICBpZiAobm9kZS5jaGlsZDEoKSA9
PSBjaGlsZDEKICAgICAgICAgICAgICAgICAgICAgJiYgbV9ncmFwaC5tX3N0b3JhZ2VBY2Nlc3NE
YXRhW25vZGUuc3RvcmFnZUFjY2Vzc0RhdGFJbmRleCgpXS5pZGVudGlmaWVyTnVtYmVyID09IGlk
ZW50aWZpZXJOdW1iZXIpCkBAIC0zODYsNyArMzg2LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
ICAgICBicmVhazsKIAogICAgICAgICAgICAgTm9kZSYgbm9kZSA9IG1fZ3JhcGhbaW5kZXhdOwot
ICAgICAgICAgICAgc3dpdGNoIChub2RlLm9wKSB7CisgICAgICAgICAgICBzd2l0Y2ggKG5vZGUu
b3AoKSkgewogICAgICAgICAgICAgY2FzZSBHZXRQcm9wZXJ0eVN0b3JhZ2U6CiAgICAgICAgICAg
ICAgICAgaWYgKG5vZGUuY2hpbGQxKCkgPT0gY2hpbGQxKQogICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gaW5kZXg7CkBAIC00MjUsNyArNDI1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAg
ICBicmVhazsKIAogICAgICAgICAgICAgTm9kZSYgbm9kZSA9IG1fZ3JhcGhbaW5kZXhdOwotICAg
ICAgICAgICAgc3dpdGNoIChub2RlLm9wKSB7CisgICAgICAgICAgICBzd2l0Y2ggKG5vZGUub3Ao
KSkgewogICAgICAgICAgICAgY2FzZSBHZXRJbmRleGVkUHJvcGVydHlTdG9yYWdlOiB7CiAgICAg
ICAgICAgICAgICAgUHJlZGljdGVkVHlwZSBiYXNlUHJlZGljdGlvbiA9IG1fZ3JhcGhbbm9kZS5j
aGlsZDIoKV0ucHJlZGljdGlvbigpOwogICAgICAgICAgICAgICAgIGJvb2wgbm9kZUhhc0ludGVn
ZXJJbmRleFByZWRpY3Rpb24gPSAhKCEoYmFzZVByZWRpY3Rpb24gJiBQcmVkaWN0SW50MzIpICYm
IGJhc2VQcmVkaWN0aW9uKTsKQEAgLTQ2Myw3ICs0NjMsNyBAQCBwcml2YXRlOgogICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSBlbmRJbmRleEZvclB1cmVDU0UoKTsgaS0tOykgewogICAgICAgICAg
ICAgTm9kZUluZGV4IGluZGV4ID0gbV9jdXJyZW50QmxvY2stPmF0KGkpOwogICAgICAgICAgICAg
Tm9kZSYgbm9kZSA9IG1fZ3JhcGhbaW5kZXhdOwotICAgICAgICAgICAgaWYgKG5vZGUub3AgPT0g
R2V0U2NvcGVDaGFpbgorICAgICAgICAgICAgaWYgKG5vZGUub3AoKSA9PSBHZXRTY29wZUNoYWlu
CiAgICAgICAgICAgICAgICAgJiYgbm9kZS5zY29wZUNoYWluRGVwdGgoKSA9PSBkZXB0aCkKICAg
ICAgICAgICAgICAgICByZXR1cm4gaW5kZXg7CiAgICAgICAgIH0KQEAgLTUyOSw3ICs1MjksNyBA
QCBwcml2YXRlOgogICAgIHsKICAgICAgICAgYm9vbCBzaG91bGRHZW5lcmF0ZSA9IG5vZGUuc2hv
dWxkR2VuZXJhdGUoKTsKIAotICAgICAgICBpZiAobm9kZS5mbGFncyAmIE5vZGVIYXNWYXJBcmdz
KSB7CisgICAgICAgIGlmIChub2RlLmZsYWdzKCkgJiBOb2RlSGFzVmFyQXJncykgewogICAgICAg
ICAgICAgZm9yICh1bnNpZ25lZCBjaGlsZElkeCA9IG5vZGUuZmlyc3RDaGlsZCgpOyBjaGlsZElk
eCA8IG5vZGUuZmlyc3RDaGlsZCgpICsgbm9kZS5udW1DaGlsZHJlbigpOyBjaGlsZElkeCsrKQog
ICAgICAgICAgICAgICAgIHBlcmZvcm1TdWJzdGl0dXRpb24obV9ncmFwaC5tX3ZhckFyZ0NoaWxk
cmVuW2NoaWxkSWR4XSwgc2hvdWxkR2VuZXJhdGUpOwogICAgICAgICB9IGVsc2UgewpAQCAtNTQy
LDcgKzU0Miw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIAogI2lm
IERGR19FTkFCTEUoREVCVUdfUFJPUEFHQVRJT05fVkVSQk9TRSkKLSAgICAgICAgZGF0YUxvZygi
ICAgJXMgQCV1OiAiLCBHcmFwaDo6b3BOYW1lKHN0YXRpY19jYXN0PE5vZGVUeXBlPihtX2dyYXBo
W21fY29tcGlsZUluZGV4XS5vcCkpLCBtX2NvbXBpbGVJbmRleCk7CisgICAgICAgIGRhdGFMb2co
IiAgICVzIEAldTogIiwgR3JhcGg6Om9wTmFtZShtX2dyYXBoW21fY29tcGlsZUluZGV4XS5vcCgp
KSwgbV9jb21waWxlSW5kZXgpOwogI2VuZGlmCiAgICAgICAgIAogICAgICAgICAvLyBOT1RFOiB0
aGVyZSBhcmUgc29tZSBub2RlcyB0aGF0IHdlIGRlbGliZXJhdGVseSBkb24ndCBDU0UgZXZlbiB0
aG91Z2ggd2UKQEAgLTU1NCw3ICs1NTQsNyBAQCBwcml2YXRlOgogICAgICAgICAvLyBUb1ByaW1p
dGl2ZSwgYnV0IHdlIGNvdWxkIGNoYW5nZSB0aGF0IHdpdGggc29tZSBzcGVjdWxhdGlvbnMgaWYg
d2UgcmVhbGx5CiAgICAgICAgIC8vIG5lZWRlZCB0by4KICAgICAgICAgCi0gICAgICAgIHN3aXRj
aCAobm9kZS5vcCkgeworICAgICAgICBzd2l0Y2ggKG5vZGUub3AoKSkgewogICAgICAgICAKICAg
ICAgICAgLy8gSGFuZGxlIHRoZSBwdXJlIG5vZGVzLiBUaGVzZSBub2RlcyBuZXZlciBoYXZlIGFu
eSBzaWRlLWVmZmVjdHMuCiAgICAgICAgIGNhc2UgQml0QW5kOgpAQCAtNjM2LDcgKzYzNiw3IEBA
IHByaXZhdGU6CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBQdXRCeVZhbDoKICAgICAgICAg
ICAgIGlmIChieVZhbElzUHVyZShub2RlKSAmJiBnZXRCeVZhbExvYWRFbGltaW5hdGlvbihub2Rl
LmNoaWxkMSgpLmluZGV4KCksIG5vZGUuY2hpbGQyKCkuaW5kZXgoKSkgIT0gTm9Ob2RlKQotICAg
ICAgICAgICAgICAgIG5vZGUub3AgPSBQdXRCeVZhbEFsaWFzOworICAgICAgICAgICAgICAgIG5v
ZGUuc2V0T3AoUHV0QnlWYWxBbGlhcyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
IAogICAgICAgICBjYXNlIENoZWNrU3RydWN0dXJlOgpAQCAtNjY5LDcgKzY2OSw3IEBAIHByaXZh
dGU6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgbV9s
YXN0U2Vlbltub2RlLm9wXSA9IG1faW5kZXhJbkJsb2NrOworICAgICAgICBtX2xhc3RTZWVuW25v
ZGUub3AoKV0gPSBtX2luZGV4SW5CbG9jazsKICNpZiBERkdfRU5BQkxFKERFQlVHX1BST1BBR0FU
SU9OX1ZFUkJPU0UpCiAgICAgICAgIGRhdGFMb2coIlxuIik7CiAjZW5kaWYKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCShyZXZpc2lvbiAxMTA0MTkpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcs
NiArMjcsNyBAQAogI2luY2x1ZGUgIkRGR0dyYXBoLmgiCiAKICNpbmNsdWRlICJDb2RlQmxvY2su
aCIKKyNpbmNsdWRlIDx3dGYvQm91bmRzQ2hlY2tlZFBvaW50ZXIuaD4KIAogI2lmIEVOQUJMRShE
RkdfSklUKQogCkBAIC0xMjAsNyArMTIxLDcgQEAgdm9pZCBHcmFwaDo6ZHVtcENvZGVPcmlnaW4o
Tm9kZUluZGV4IG5vZAogdm9pZCBHcmFwaDo6ZHVtcChOb2RlSW5kZXggbm9kZUluZGV4KQogewog
ICAgIE5vZGUmIG5vZGUgPSBhdChub2RlSW5kZXgpOwotICAgIE5vZGVUeXBlIG9wID0gc3RhdGlj
X2Nhc3Q8Tm9kZVR5cGU+KG5vZGUub3ApOworICAgIE5vZGVUeXBlIG9wID0gbm9kZS5vcCgpOwog
CiAgICAgdW5zaWduZWQgcmVmQ291bnQgPSBub2RlLnJlZkNvdW50KCk7CiAgICAgYm9vbCBza2lw
cGVkID0gIXJlZkNvdW50OwpAQCAtMTU3LDcgKzE1OCw3IEBAIHZvaWQgR3JhcGg6OmR1bXAoTm9k
ZUluZGV4IG5vZGVJbmRleCkKICAgICAgICAgZGF0YUxvZygiLSIpOwogICAgIGRhdGFMb2coIj5c
dCVzKCIsIG9wTmFtZShvcCkpOwogICAgIGJvb2wgaGFzUHJpbnRlZCA9IGZhbHNlOwotICAgIGlm
IChub2RlLmZsYWdzICYgTm9kZUhhc1ZhckFyZ3MpIHsKKyAgICBpZiAobm9kZS5mbGFncygpICYg
Tm9kZUhhc1ZhckFyZ3MpIHsKICAgICAgICAgZm9yICh1bnNpZ25lZCBjaGlsZElkeCA9IG5vZGUu
Zmlyc3RDaGlsZCgpOyBjaGlsZElkeCA8IG5vZGUuZmlyc3RDaGlsZCgpICsgbm9kZS5udW1DaGls
ZHJlbigpOyBjaGlsZElkeCsrKSB7CiAgICAgICAgICAgICBpZiAoaGFzUHJpbnRlZCkKICAgICAg
ICAgICAgICAgICBkYXRhTG9nKCIsICIpOwpAQCAtMjk0LDcgKzI5NSw3IEBAIHZvaWQgR3JhcGg6
OmR1bXAoKQogLy8gRklYTUU6IENvbnZlcnQgdGhpcyB0byBiZSBpdGVyYXRpdmUsIG5vdCByZWN1
cnNpdmUuCiAjZGVmaW5lIERPX1RPX0NISUxEUkVOKG5vZGUsIHRoaW5nVG9EbykgZG8geyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIE5vZGUmIF9ub2RlID0gKG5vZGUpOyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIGlmIChf
bm9kZS5mbGFncyAmIE5vZGVIYXNWYXJBcmdzKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCisgICAgICAgIGlmIChfbm9kZS5mbGFncygpICYgTm9kZUhhc1ZhckFyZ3MpIHsgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIF9jaGlsZElk
eCA9IF9ub2RlLmZpcnN0Q2hpbGQoKTsgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAg
IF9jaGlsZElkeCA8IF9ub2RlLmZpcnN0Q2hpbGQoKSArIF9ub2RlLm51bUNoaWxkcmVuKCk7ICBc
CiAgICAgICAgICAgICAgICAgIF9jaGlsZElkeCsrKSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dy
YXBoLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5o
CShyZXZpc2lvbiAxMTA0MTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBo
LmgJKHdvcmtpbmcgY29weSkKQEAgLTE2NCw3ICsxNjQsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAg
Ym9vbCBhZGRTaG91bGRTcGVjdWxhdGVJbnRlZ2VyKE5vZGUmIGFkZCkKICAgICB7Ci0gICAgICAg
IEFTU0VSVChhZGQub3AgPT0gVmFsdWVBZGQgfHwgYWRkLm9wID09IEFyaXRoQWRkIHx8IGFkZC5v
cCA9PSBBcml0aFN1Yik7CisgICAgICAgIEFTU0VSVChhZGQub3AoKSA9PSBWYWx1ZUFkZCB8fCBh
ZGQub3AoKSA9PSBBcml0aEFkZCB8fCBhZGQub3AoKSA9PSBBcml0aFN1Yik7CiAgICAgICAgIAog
ICAgICAgICBOb2RlJiBsZWZ0ID0gYXQoYWRkLmNoaWxkMSgpKTsKICAgICAgICAgTm9kZSYgcmln
aHQgPSBhdChhZGQuY2hpbGQyKCkpOwpAQCAtMTc5LDcgKzE3OSw3IEBAIHB1YmxpYzoKICAgICAK
ICAgICBib29sIG5lZ2F0ZVNob3VsZFNwZWN1bGF0ZUludGVnZXIoTm9kZSYgbmVnYXRlKQogICAg
IHsKLSAgICAgICAgQVNTRVJUKG5lZ2F0ZS5vcCA9PSBBcml0aE5lZ2F0ZSk7CisgICAgICAgIEFT
U0VSVChuZWdhdGUub3AoKSA9PSBBcml0aE5lZ2F0ZSk7CiAgICAgICAgIHJldHVybiBhdChuZWdh
dGUuY2hpbGQxKCkpLnNob3VsZFNwZWN1bGF0ZUludGVnZXIoKSAmJiBuZWdhdGUuY2FuU3BlY3Vs
YXRlSW50ZWdlcigpOwogICAgIH0KICAgICAKQEAgLTMwMSw3ICszMDEsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIE5vZGUmIG5vZGUgPSBhdChub2RlSW5kZXgpOwogICAgICAgICBDb2RlQmxvY2sqIHBy
b2ZpbGVkQmxvY2sgPSBiYXNlbGluZUNvZGVCbG9ja0Zvcihub2RlLmNvZGVPcmlnaW4pOwogICAg
ICAgICAKLSAgICAgICAgaWYgKG5vZGUub3AgPT0gR2V0TG9jYWwpIHsKKyAgICAgICAgaWYgKG5v
ZGUub3AoKSA9PSBHZXRMb2NhbCkgewogICAgICAgICAgICAgcmV0dXJuIE1ldGhvZE9mR2V0dGlu
Z0FWYWx1ZVByb2ZpbGU6OmZyb21MYXp5T3BlcmFuZCgKICAgICAgICAgICAgICAgICBwcm9maWxl
ZEJsb2NrLAogICAgICAgICAgICAgICAgIExhenlPcGVyYW5kVmFsdWVQcm9maWxlS2V5KApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuY3BwCShyZXZpc2lvbiAxMTA0MTkpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDgxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0g
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0g
Ki8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkRGR05vZGUuaCIKLQotI2lmIEVO
QUJMRShERkdfSklUKQotCi1uYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7Ci0KLWNvbnN0
IGNoYXIqIGFyaXRoTm9kZUZsYWdzQXNTdHJpbmcoTm9kZUZsYWdzIGZsYWdzKQotewotICAgIGZs
YWdzICY9IE5vZGVBcml0aE1hc2s7Ci0gICAgCi0gICAgaWYgKCFmbGFncykKLSAgICAgICAgcmV0
dXJuICI8ZW1wdHk+IjsKLQotICAgIHN0YXRpYyBjb25zdCBpbnQgc2l6ZSA9IDY0OwotICAgIHN0
YXRpYyBjaGFyIGRlc2NyaXB0aW9uW3NpemVdOwotICAgIEJvdW5kc0NoZWNrZWRQb2ludGVyPGNo
YXI+IHB0cihkZXNjcmlwdGlvbiwgc2l6ZSk7Ci0gICAgCi0gICAgYm9vbCBoYXNQcmludGVkID0g
ZmFsc2U7Ci0gICAgCi0gICAgaWYgKGZsYWdzICYgTm9kZVVzZWRBc051bWJlcikgewotICAgICAg
ICBwdHIuc3RyY2F0KCJVc2VkQXNOdW0iKTsKLSAgICAgICAgaGFzUHJpbnRlZCA9IHRydWU7Ci0g
ICAgfQotICAgIAotICAgIGlmIChmbGFncyAmIE5vZGVOZWVkc05lZ1plcm8pIHsKLSAgICAgICAg
aWYgKGhhc1ByaW50ZWQpCi0gICAgICAgICAgICBwdHIuc3RyY2F0KCJ8Iik7Ci0gICAgICAgIHB0
ci5zdHJjYXQoIk5lZWRzTmVnWmVybyIpOwotICAgICAgICBoYXNQcmludGVkID0gdHJ1ZTsKLSAg
ICB9Ci0gICAgCi0gICAgaWYgKGZsYWdzICYgTm9kZU1heU92ZXJmbG93KSB7Ci0gICAgICAgIGlm
IChoYXNQcmludGVkKQotICAgICAgICAgICAgcHRyLnN0cmNhdCgifCIpOwotICAgICAgICBwdHIu
c3RyY2F0KCJNYXlPdmVyZmxvdyIpOwotICAgICAgICBoYXNQcmludGVkID0gdHJ1ZTsKLSAgICB9
Ci0gICAgCi0gICAgaWYgKGZsYWdzICYgTm9kZU1heU5lZ1plcm8pIHsKLSAgICAgICAgaWYgKGhh
c1ByaW50ZWQpCi0gICAgICAgICAgICBwdHIuc3RyY2F0KCJ8Iik7Ci0gICAgICAgIHB0ci5zdHJj
YXQoIk1heU5lZ1plcm8iKTsKLSAgICAgICAgaGFzUHJpbnRlZCA9IHRydWU7Ci0gICAgfQotICAg
IAotICAgICpwdHIrKyA9IDA7Ci0gICAgCi0gICAgcmV0dXJuIGRlc2NyaXB0aW9uOwotfQotCi0K
LX0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKLQotI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQot
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAkocmV2aXNpb24gMTEwNDE5KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTMzLDE0ICszMywxNCBAQAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkNvZGVP
cmlnaW4uaCIKICNpbmNsdWRlICJERkdDb21tb24uaCIKKyNpbmNsdWRlICJERkdOb2RlRmxhZ3Mu
aCIKICNpbmNsdWRlICJERkdOb2RlUmVmZXJlbmNlQmxvYi5oIgorI2luY2x1ZGUgIkRGR05vZGVU
eXBlLmgiCiAjaW5jbHVkZSAiREZHT3BlcmFuZHMuaCIKICNpbmNsdWRlICJERkdWYXJpYWJsZUFj
Y2Vzc0RhdGEuaCIKICNpbmNsdWRlICJKU1ZhbHVlLmgiCiAjaW5jbHVkZSAiUHJlZGljdGVkVHlw
ZS5oIgogI2luY2x1ZGUgIlZhbHVlUHJvZmlsZS5oIgotI2luY2x1ZGUgPHd0Zi9Cb3VuZHNDaGVj
a2VkUG9pbnRlci5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIEpTQyB7
IG5hbWVzcGFjZSBERkcgewogCkBAIC01NywyNDAgKzU3LDYgQEAgc3RydWN0IFN0cnVjdHVyZVRy
YW5zaXRpb25EYXRhIHsKICAgICB9CiB9OwogCi0vLyBFbnRyaWVzIGluIHRoZSBOb2RlVHlwZSBl
bnVtIChiZWxvdykgYXJlIGNvbXBvc2VkIG9mIGFuIGlkLCBhIHJlc3VsdCB0eXBlIChwb3NzaWJs
eSBub25lKQotLy8gYW5kIHNvbWUgYWRkaXRpb25hbCBpbmZvcm1hdGl2ZSBmbGFncyAobXVzdCBn
ZW5lcmF0ZSwgaXMgY29uc3RhbnQsIGV0YykuCi0jZGVmaW5lIE5vZGVSZXN1bHRNYXNrICAgICAg
IDB4RgotI2RlZmluZSBOb2RlUmVzdWx0SlMgICAgICAgICAweDEKLSNkZWZpbmUgTm9kZVJlc3Vs
dE51bWJlciAgICAgMHgyCi0jZGVmaW5lIE5vZGVSZXN1bHRJbnQzMiAgICAgIDB4MwotI2RlZmlu
ZSBOb2RlUmVzdWx0Qm9vbGVhbiAgICAweDQKLSNkZWZpbmUgTm9kZVJlc3VsdFN0b3JhZ2UgICAg
MHg1Ci0jZGVmaW5lIE5vZGVNdXN0R2VuZXJhdGUgICAgMHgxMCAvLyBzZXQgb24gbm9kZXMgdGhh
dCBoYXZlIHNpZGUgZWZmZWN0cywgYW5kIG1heSBub3QgdHJpdmlhbGx5IGJlIHJlbW92ZWQgYnkg
RENFLgotI2RlZmluZSBOb2RlSGFzVmFyQXJncyAgICAgIDB4MjAKLSNkZWZpbmUgTm9kZUNsb2Ji
ZXJzV29ybGQgICAweDQwCi0jZGVmaW5lIE5vZGVNaWdodENsb2JiZXIgICAgMHg4MAotI2RlZmlu
ZSBOb2RlQXJpdGhNYXNrICAgICAgMHhGMDAKLSNkZWZpbmUgTm9kZVVzZUJvdHRvbSAgICAgIDB4
MDAwCi0jZGVmaW5lIE5vZGVVc2VkQXNOdW1iZXIgICAweDEwMAotI2RlZmluZSBOb2RlTmVlZHNO
ZWdaZXJvICAgMHgyMDAKLSNkZWZpbmUgTm9kZVVzZWRBc01hc2sgICAgIDB4MzAwCi0jZGVmaW5l
IE5vZGVNYXlPdmVyZmxvdyAgICAweDQwMAotI2RlZmluZSBOb2RlTWF5TmVnWmVybyAgICAgMHg4
MDAKLSNkZWZpbmUgTm9kZUJlaGF2aW9yTWFzayAgIDB4YzAwCi0KLXR5cGVkZWYgdWludDE2X3Qg
Tm9kZUZsYWdzOwotCi1zdGF0aWMgaW5saW5lIGJvb2wgbm9kZVVzZWRBc051bWJlcihOb2RlRmxh
Z3MgZmxhZ3MpCi17Ci0gICAgcmV0dXJuICEhKGZsYWdzICYgTm9kZVVzZWRBc051bWJlcik7Ci19
Ci0KLXN0YXRpYyBpbmxpbmUgYm9vbCBub2RlQ2FuVHJ1bmNhdGVJbnRlZ2VyKE5vZGVGbGFncyBm
bGFncykKLXsKLSAgICByZXR1cm4gIW5vZGVVc2VkQXNOdW1iZXIoZmxhZ3MpOwotfQotCi1zdGF0
aWMgaW5saW5lIGJvb2wgbm9kZUNhbklnbm9yZU5lZ2F0aXZlWmVybyhOb2RlRmxhZ3MgZmxhZ3Mp
Ci17Ci0gICAgcmV0dXJuICEoZmxhZ3MgJiBOb2RlTmVlZHNOZWdaZXJvKTsKLX0KLQotc3RhdGlj
IGlubGluZSBib29sIG5vZGVNYXlPdmVyZmxvdyhOb2RlRmxhZ3MgZmxhZ3MpCi17Ci0gICAgcmV0
dXJuICEhKGZsYWdzICYgTm9kZU1heU92ZXJmbG93KTsKLX0KLQotc3RhdGljIGlubGluZSBib29s
IG5vZGVDYW5TcGVjdWxhdGVJbnRlZ2VyKE5vZGVGbGFncyBmbGFncykKLXsKLSAgICBpZiAoZmxh
Z3MgJiBOb2RlTWF5T3ZlcmZsb3cpCi0gICAgICAgIHJldHVybiAhbm9kZVVzZWRBc051bWJlcihm
bGFncyk7Ci0gICAgCi0gICAgaWYgKGZsYWdzICYgTm9kZU1heU5lZ1plcm8pCi0gICAgICAgIHJl
dHVybiBub2RlQ2FuSWdub3JlTmVnYXRpdmVaZXJvKGZsYWdzKTsKLSAgICAKLSAgICByZXR1cm4g
dHJ1ZTsKLX0KLQotY29uc3QgY2hhciogYXJpdGhOb2RlRmxhZ3NBc1N0cmluZyhOb2RlRmxhZ3Mp
OwotCi0vLyBUaGlzIG1hY3JvIGRlZmluZXMgYSBzZXQgb2YgaW5mb3JtYXRpb24gYWJvdXQgYWxs
IGtub3duIG5vZGUgdHlwZXMsIHVzZWQgdG8gcG9wdWxhdGUgTm9kZUlkLCBOb2RlVHlwZSBiZWxv
dy4KLSNkZWZpbmUgRk9SX0VBQ0hfREZHX09QKG1hY3JvKSBcCi0gICAgLyogQSBjb25zdGFudCBp
biB0aGUgQ29kZUJsb2NrJ3MgY29uc3RhbnQgcG9vbC4gKi9cCi0gICAgbWFjcm8oSlNDb25zdGFu
dCwgTm9kZVJlc3VsdEpTKSBcCi0gICAgXAotICAgIC8qIEEgY29uc3RhbnQgbm90IGluIHRoZSBD
b2RlQmxvY2sncyBjb25zdGFudCBwb29sLiBVc2VzIGdldCBwYXRjaGVkIHRvIGp1bXBzIHRoYXQg
ZXhpdCB0aGUgKi9cCi0gICAgLyogY29kZSBibG9jay4gKi9cCi0gICAgbWFjcm8oV2Vha0pTQ29u
c3RhbnQsIE5vZGVSZXN1bHRKUykgXAotICAgIFwKLSAgICAvKiBOb2RlcyBmb3IgaGFuZGxpbmcg
ZnVuY3Rpb25zIChib3RoIGFzIGNhbGwgYW5kIGFzIGNvbnN0cnVjdCkuICovXAotICAgIG1hY3Jv
KENvbnZlcnRUaGlzLCBOb2RlUmVzdWx0SlMpIFwKLSAgICBtYWNybyhDcmVhdGVUaGlzLCBOb2Rl
UmVzdWx0SlMpIC8qIE5vdGUgdGhpcyBpcyBub3QgTXVzdEdlbmVyYXRlIHNpbmNlIHdlJ3JlIHJl
dHVybmluZyBpdCBhbnl3YXkuICovIFwKLSAgICBtYWNybyhHZXRDYWxsZWUsIE5vZGVSZXN1bHRK
UykgXAotICAgIFwKLSAgICAvKiBOb2RlcyBmb3IgbG9jYWwgdmFyaWFibGUgYWNjZXNzLiAqL1wK
LSAgICBtYWNybyhHZXRMb2NhbCwgTm9kZVJlc3VsdEpTKSBcCi0gICAgbWFjcm8oU2V0TG9jYWws
IDApIFwKLSAgICBtYWNybyhQaGFudG9tLCBOb2RlTXVzdEdlbmVyYXRlKSBcCi0gICAgbWFjcm8o
Tm9wLCAwKSBcCi0gICAgbWFjcm8oUGhpLCAwKSBcCi0gICAgbWFjcm8oRmx1c2gsIE5vZGVNdXN0
R2VuZXJhdGUpIFwKLSAgICBcCi0gICAgLyogTWFya2VyIGZvciBhcmd1bWVudHMgYmVpbmcgc2V0
LiAqL1wKLSAgICBtYWNybyhTZXRBcmd1bWVudCwgMCkgXAotICAgIFwKLSAgICAvKiBIaW50IHRo
YXQgaW5saW5pbmcgYmVnaW5zIGhlcmUuIE5vIGNvZGUgaXMgZ2VuZXJhdGVkIGZvciB0aGlzIG5v
ZGUuIEl0J3Mgb25seSAqL1wKLSAgICAvKiB1c2VkIGZvciBjb3B5aW5nIE9TUiBkYXRhIGludG8g
aW5saW5lIGZyYW1lIGRhdGEsIHRvIHN1cHBvcnQgcmVpZmljYXRpb24gb2YgKi9cCi0gICAgLyog
Y2FsbCBmcmFtZXMgb2YgaW5saW5lZCBmdW5jdGlvbnMuICovXAotICAgIG1hY3JvKElubGluZVN0
YXJ0LCAwKSBcCi0gICAgXAotICAgIC8qIE5vZGVzIGZvciBiaXR3aXNlIG9wZXJhdGlvbnMuICov
XAotICAgIG1hY3JvKEJpdEFuZCwgTm9kZVJlc3VsdEludDMyKSBcCi0gICAgbWFjcm8oQml0T3Is
IE5vZGVSZXN1bHRJbnQzMikgXAotICAgIG1hY3JvKEJpdFhvciwgTm9kZVJlc3VsdEludDMyKSBc
Ci0gICAgbWFjcm8oQml0TFNoaWZ0LCBOb2RlUmVzdWx0SW50MzIpIFwKLSAgICBtYWNybyhCaXRS
U2hpZnQsIE5vZGVSZXN1bHRJbnQzMikgXAotICAgIG1hY3JvKEJpdFVSU2hpZnQsIE5vZGVSZXN1
bHRJbnQzMikgXAotICAgIC8qIEJpdHdpc2Ugb3BlcmF0b3JzIGNhbGwgVG9JbnQzMiBvbiB0aGVp
ciBvcGVyYW5kcy4gKi9cCi0gICAgbWFjcm8oVmFsdWVUb0ludDMyLCBOb2RlUmVzdWx0SW50MzIg
fCBOb2RlTXVzdEdlbmVyYXRlKSBcCi0gICAgLyogVXNlZCB0byBib3ggdGhlIHJlc3VsdCBvZiBV
UlNoaWZ0IG5vZGVzIChyZXN1bHQgaGFzIHJhbmdlIDAuLjJeMzItMSkuICovXAotICAgIG1hY3Jv
KFVJbnQzMlRvTnVtYmVyLCBOb2RlUmVzdWx0TnVtYmVyKSBcCi0gICAgXAotICAgIC8qIE5vZGVz
IGZvciBhcml0aG1ldGljIG9wZXJhdGlvbnMuICovXAotICAgIG1hY3JvKEFyaXRoQWRkLCBOb2Rl
UmVzdWx0TnVtYmVyKSBcCi0gICAgbWFjcm8oQXJpdGhTdWIsIE5vZGVSZXN1bHROdW1iZXIpIFwK
LSAgICBtYWNybyhBcml0aE5lZ2F0ZSwgTm9kZVJlc3VsdE51bWJlcikgXAotICAgIG1hY3JvKEFy
aXRoTXVsLCBOb2RlUmVzdWx0TnVtYmVyKSBcCi0gICAgbWFjcm8oQXJpdGhEaXYsIE5vZGVSZXN1
bHROdW1iZXIpIFwKLSAgICBtYWNybyhBcml0aE1vZCwgTm9kZVJlc3VsdE51bWJlcikgXAotICAg
IG1hY3JvKEFyaXRoQWJzLCBOb2RlUmVzdWx0TnVtYmVyKSBcCi0gICAgbWFjcm8oQXJpdGhNaW4s
IE5vZGVSZXN1bHROdW1iZXIpIFwKLSAgICBtYWNybyhBcml0aE1heCwgTm9kZVJlc3VsdE51bWJl
cikgXAotICAgIG1hY3JvKEFyaXRoU3FydCwgTm9kZVJlc3VsdE51bWJlcikgXAotICAgIFwKLSAg
ICAvKiBBZGQgb2YgdmFsdWVzIG1heSBlaXRoZXIgYmUgYXJpdGhtZXRpYywgb3IgcmVzdWx0IGlu
IHN0cmluZyBjb25jYXRlbmF0aW9uLiAqL1wKLSAgICBtYWNybyhWYWx1ZUFkZCwgTm9kZVJlc3Vs
dEpTIHwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVNaWdodENsb2JiZXIpIFwKLSAgICBcCi0gICAg
LyogUHJvcGVydHkgYWNjZXNzLiAqL1wKLSAgICAvKiBQdXRCeVZhbEFsaWFzIGluZGljYXRlcyBh
ICdwdXQnIGFsaWFzZXMgYSBwcmlvciB3cml0ZSB0byB0aGUgc2FtZSBwcm9wZXJ0eS4gKi9cCi0g
ICAgLyogU2luY2UgYSBwdXQgdG8gJ2xlbmd0aCcgbWF5IGludmFsaWRhdGUgb3B0aW1pemF0aW9u
cyBoZXJlLCAqL1wKLSAgICAvKiB0aGlzIG11c3QgYmUgdGhlIGRpcmVjdGx5IHN1YnNlcXVlbnQg
cHJvcGVydHkgcHV0LiAqL1wKLSAgICBtYWNybyhHZXRCeVZhbCwgTm9kZVJlc3VsdEpTIHwgTm9k
ZU11c3RHZW5lcmF0ZSB8IE5vZGVNaWdodENsb2JiZXIpIFwKLSAgICBtYWNybyhQdXRCeVZhbCwg
Tm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVDbG9iYmVyc1dvcmxkKSBcCi0gICAgbWFjcm8oUHV0QnlW
YWxBbGlhcywgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVDbG9iYmVyc1dvcmxkKSBcCi0gICAgbWFj
cm8oR2V0QnlJZCwgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVDbG9iYmVy
c1dvcmxkKSBcCi0gICAgbWFjcm8oR2V0QnlJZEZsdXNoLCBOb2RlUmVzdWx0SlMgfCBOb2RlTXVz
dEdlbmVyYXRlIHwgTm9kZUNsb2JiZXJzV29ybGQpIFwKLSAgICBtYWNybyhQdXRCeUlkLCBOb2Rl
TXVzdEdlbmVyYXRlIHwgTm9kZUNsb2JiZXJzV29ybGQpIFwKLSAgICBtYWNybyhQdXRCeUlkRGly
ZWN0LCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZUNsb2JiZXJzV29ybGQpIFwKLSAgICBtYWNybyhD
aGVja1N0cnVjdHVyZSwgTm9kZU11c3RHZW5lcmF0ZSkgXAotICAgIG1hY3JvKFB1dFN0cnVjdHVy
ZSwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVDbG9iYmVyc1dvcmxkKSBcCi0gICAgbWFjcm8oR2V0
UHJvcGVydHlTdG9yYWdlLCBOb2RlUmVzdWx0U3RvcmFnZSkgXAotICAgIG1hY3JvKEdldEluZGV4
ZWRQcm9wZXJ0eVN0b3JhZ2UsIE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlUmVzdWx0U3RvcmFnZSkg
XAotICAgIG1hY3JvKEdldEJ5T2Zmc2V0LCBOb2RlUmVzdWx0SlMpIFwKLSAgICBtYWNybyhQdXRC
eU9mZnNldCwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVDbG9iYmVyc1dvcmxkKSBcCi0gICAgbWFj
cm8oR2V0QXJyYXlMZW5ndGgsIE5vZGVSZXN1bHRJbnQzMikgXAotICAgIG1hY3JvKEdldFN0cmlu
Z0xlbmd0aCwgTm9kZVJlc3VsdEludDMyKSBcCi0gICAgbWFjcm8oR2V0Qnl0ZUFycmF5TGVuZ3Ro
LCBOb2RlUmVzdWx0SW50MzIpIFwKLSAgICBtYWNybyhHZXRJbnQ4QXJyYXlMZW5ndGgsIE5vZGVS
ZXN1bHRJbnQzMikgXAotICAgIG1hY3JvKEdldEludDE2QXJyYXlMZW5ndGgsIE5vZGVSZXN1bHRJ
bnQzMikgXAotICAgIG1hY3JvKEdldEludDMyQXJyYXlMZW5ndGgsIE5vZGVSZXN1bHRJbnQzMikg
XAotICAgIG1hY3JvKEdldFVpbnQ4QXJyYXlMZW5ndGgsIE5vZGVSZXN1bHRJbnQzMikgXAotICAg
IG1hY3JvKEdldFVpbnQ4Q2xhbXBlZEFycmF5TGVuZ3RoLCBOb2RlUmVzdWx0SW50MzIpIFwKLSAg
ICBtYWNybyhHZXRVaW50MTZBcnJheUxlbmd0aCwgTm9kZVJlc3VsdEludDMyKSBcCi0gICAgbWFj
cm8oR2V0VWludDMyQXJyYXlMZW5ndGgsIE5vZGVSZXN1bHRJbnQzMikgXAotICAgIG1hY3JvKEdl
dEZsb2F0MzJBcnJheUxlbmd0aCwgTm9kZVJlc3VsdEludDMyKSBcCi0gICAgbWFjcm8oR2V0Rmxv
YXQ2NEFycmF5TGVuZ3RoLCBOb2RlUmVzdWx0SW50MzIpIFwKLSAgICBtYWNybyhHZXRTY29wZUNo
YWluLCBOb2RlUmVzdWx0SlMpIFwKLSAgICBtYWNybyhHZXRTY29wZWRWYXIsIE5vZGVSZXN1bHRK
UyB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKLSAgICBtYWNybyhQdXRTY29wZWRWYXIsIE5vZGVNdXN0
R2VuZXJhdGUgfCBOb2RlQ2xvYmJlcnNXb3JsZCkgXAotICAgIG1hY3JvKEdldEdsb2JhbFZhciwg
Tm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSkgXAotICAgIG1hY3JvKFB1dEdsb2JhbFZh
ciwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVDbG9iYmVyc1dvcmxkKSBcCi0gICAgbWFjcm8oQ2hl
Y2tGdW5jdGlvbiwgTm9kZU11c3RHZW5lcmF0ZSkgXAotICAgIFwKLSAgICAvKiBPcHRpbWl6YXRp
b25zIGZvciBhcnJheSBtdXRhdGlvbi4gKi9cCi0gICAgbWFjcm8oQXJyYXlQdXNoLCBOb2RlUmVz
dWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZUNsb2JiZXJzV29ybGQpIFwKLSAgICBtYWNy
byhBcnJheVBvcCwgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVDbG9iYmVy
c1dvcmxkKSBcCi0gICAgXAotICAgIC8qIE9wdGltaXphdGlvbnMgZm9yIHN0cmluZyBhY2Nlc3Mg
Ki8gXAotICAgIG1hY3JvKFN0cmluZ0NoYXJDb2RlQXQsIE5vZGVSZXN1bHRJbnQzMikgXAotICAg
IG1hY3JvKFN0cmluZ0NoYXJBdCwgTm9kZVJlc3VsdEpTKSBcCi0gICAgXAotICAgIC8qIE5vZGVz
IGZvciBjb21wYXJpc29uIG9wZXJhdGlvbnMuICovXAotICAgIG1hY3JvKENvbXBhcmVMZXNzLCBO
b2RlUmVzdWx0Qm9vbGVhbiB8IE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlTWlnaHRDbG9iYmVyKSBc
Ci0gICAgbWFjcm8oQ29tcGFyZUxlc3NFcSwgTm9kZVJlc3VsdEJvb2xlYW4gfCBOb2RlTXVzdEdl
bmVyYXRlIHwgTm9kZU1pZ2h0Q2xvYmJlcikgXAotICAgIG1hY3JvKENvbXBhcmVHcmVhdGVyLCBO
b2RlUmVzdWx0Qm9vbGVhbiB8IE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlTWlnaHRDbG9iYmVyKSBc
Ci0gICAgbWFjcm8oQ29tcGFyZUdyZWF0ZXJFcSwgTm9kZVJlc3VsdEJvb2xlYW4gfCBOb2RlTXVz
dEdlbmVyYXRlIHwgTm9kZU1pZ2h0Q2xvYmJlcikgXAotICAgIG1hY3JvKENvbXBhcmVFcSwgTm9k
ZVJlc3VsdEJvb2xlYW4gfCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZU1pZ2h0Q2xvYmJlcikgXAot
ICAgIG1hY3JvKENvbXBhcmVTdHJpY3RFcSwgTm9kZVJlc3VsdEJvb2xlYW4pIFwKLSAgICBcCi0g
ICAgLyogQ2FsbHMuICovXAotICAgIG1hY3JvKENhbGwsIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0
R2VuZXJhdGUgfCBOb2RlSGFzVmFyQXJncyB8IE5vZGVDbG9iYmVyc1dvcmxkKSBcCi0gICAgbWFj
cm8oQ29uc3RydWN0LCBOb2RlUmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZUhhc1Zh
ckFyZ3MgfCBOb2RlQ2xvYmJlcnNXb3JsZCkgXAotICAgIFwKLSAgICAvKiBBbGxvY2F0aW9ucy4g
Ki9cCi0gICAgbWFjcm8oTmV3T2JqZWN0LCBOb2RlUmVzdWx0SlMpIFwKLSAgICBtYWNybyhOZXdB
cnJheSwgTm9kZVJlc3VsdEpTIHwgTm9kZUhhc1ZhckFyZ3MpIFwKLSAgICBtYWNybyhOZXdBcnJh
eUJ1ZmZlciwgTm9kZVJlc3VsdEpTKSBcCi0gICAgbWFjcm8oTmV3UmVnZXhwLCBOb2RlUmVzdWx0
SlMpIFwKLSAgICBcCi0gICAgLyogUmVzb2x2ZSBub2Rlcy4gKi9cCi0gICAgbWFjcm8oUmVzb2x2
ZSwgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVDbG9iYmVyc1dvcmxkKSBc
Ci0gICAgbWFjcm8oUmVzb2x2ZUJhc2UsIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUg
fCBOb2RlQ2xvYmJlcnNXb3JsZCkgXAotICAgIG1hY3JvKFJlc29sdmVCYXNlU3RyaWN0UHV0LCBO
b2RlUmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZUNsb2JiZXJzV29ybGQpIFwKLSAg
ICBtYWNybyhSZXNvbHZlR2xvYmFsLCBOb2RlUmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlIHwg
Tm9kZUNsb2JiZXJzV29ybGQpIFwKLSAgICBcCi0gICAgLyogTm9kZXMgZm9yIG1pc2Mgb3BlcmF0
aW9ucy4gKi9cCi0gICAgbWFjcm8oQnJlYWtwb2ludCwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVD
bG9iYmVyc1dvcmxkKSBcCi0gICAgbWFjcm8oQ2hlY2tIYXNJbnN0YW5jZSwgTm9kZU11c3RHZW5l
cmF0ZSkgXAotICAgIG1hY3JvKEluc3RhbmNlT2YsIE5vZGVSZXN1bHRCb29sZWFuKSBcCi0gICAg
bWFjcm8oTG9naWNhbE5vdCwgTm9kZVJlc3VsdEJvb2xlYW4gfCBOb2RlTWlnaHRDbG9iYmVyKSBc
Ci0gICAgbWFjcm8oVG9QcmltaXRpdmUsIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUg
fCBOb2RlQ2xvYmJlcnNXb3JsZCkgXAotICAgIG1hY3JvKFN0ckNhdCwgTm9kZVJlc3VsdEpTIHwg
Tm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVIYXNWYXJBcmdzIHwgTm9kZUNsb2JiZXJzV29ybGQpIFwK
LSAgICBcCi0gICAgLyogTm9kZXMgdXNlZCBmb3IgYWN0aXZhdGlvbnMuIEFjdGl2YXRpb24gc3Vw
cG9ydCB3b3JrcyBieSBoYXZpbmcgaXQgYW5jaG9yZWQgYXQgKi9cCi0gICAgLyogZXBpbGdvdWVz
IHZpYSBUZWFyT2ZmQWN0aXZhdGlvbiwgYW5kIGFsbCBDcmVhdGVBY3RpdmF0aW9uIG5vZGVzIGtl
cHQgYWxpdmUgYnkgKi9cCi0gICAgLyogYmVpbmcgdGhyZWFkZWQgd2l0aCBlYWNoIG90aGVyLiAq
L1wKLSAgICBtYWNybyhDcmVhdGVBY3RpdmF0aW9uLCBOb2RlUmVzdWx0SlMpIFwKLSAgICBtYWNy
byhUZWFyT2ZmQWN0aXZhdGlvbiwgTm9kZU11c3RHZW5lcmF0ZSkgXAotICAgIFwKLSAgICAvKiBO
b2RlcyBmb3IgY3JlYXRpbmcgZnVuY3Rpb25zLiAqL1wKLSAgICBtYWNybyhOZXdGdW5jdGlvbk5v
Q2hlY2ssIE5vZGVSZXN1bHRKUykgXAotICAgIG1hY3JvKE5ld0Z1bmN0aW9uLCBOb2RlUmVzdWx0
SlMpIFwKLSAgICBtYWNybyhOZXdGdW5jdGlvbkV4cHJlc3Npb24sIE5vZGVSZXN1bHRKUykgXAot
ICAgIFwKLSAgICAvKiBCbG9jayB0ZXJtaW5hbHMuICovXAotICAgIG1hY3JvKEp1bXAsIE5vZGVN
dXN0R2VuZXJhdGUpIFwKLSAgICBtYWNybyhCcmFuY2gsIE5vZGVNdXN0R2VuZXJhdGUpIFwKLSAg
ICBtYWNybyhSZXR1cm4sIE5vZGVNdXN0R2VuZXJhdGUpIFwKLSAgICBtYWNybyhUaHJvdywgTm9k
ZU11c3RHZW5lcmF0ZSkgXAotICAgIG1hY3JvKFRocm93UmVmZXJlbmNlRXJyb3IsIE5vZGVNdXN0
R2VuZXJhdGUpIFwKLSAgICBcCi0gICAgLyogVGhpcyBpcyBhIHBzZXVkby10ZXJtaW5hbC4gSXQg
bWVhbnMgdGhhdCBleGVjdXRpb24gc2hvdWxkIGZhbGwgb3V0IG9mIERGRyBhdCAqL1wKLSAgICAv
KiB0aGlzIHBvaW50LCBidXQgZXhlY3V0aW9uIGRvZXMgY29udGludWUgaW4gdGhlIGJhc2ljIGJs
b2NrIC0ganVzdCBpbiBhICovXAotICAgIC8qIGRpZmZlcmVudCBjb21waWxlci4gKi9cCi0gICAg
bWFjcm8oRm9yY2VPU1JFeGl0LCBOb2RlTXVzdEdlbmVyYXRlKQotCi0vLyBUaGlzIGVudW0gZ2Vu
ZXJhdGVzIGEgbW9ub3RvbmljYWxseSBpbmNyZWFzaW5nIGlkIGZvciBhbGwgTm9kZSB0eXBlcywK
LS8vIGFuZCBpcyB1c2VkIGJ5IHRoZSBzdWJzZXF1ZW50IGVudW0gdG8gZmlsbCBvdXQgdGhlIGlk
IChhcyBhY2Nlc3NlZCB2aWEgdGhlIE5vZGVJZE1hc2spLgotZW51bSBOb2RlVHlwZSB7Ci0jZGVm
aW5lIERGR19PUF9FTlVNKG9wY29kZSwgZmxhZ3MpIG9wY29kZSwKLSAgICBGT1JfRUFDSF9ERkdf
T1AoREZHX09QX0VOVU0pCi0jdW5kZWYgREZHX09QX0VOVU0KLSAgICBMYXN0Tm9kZVR5cGUKLX07
Ci0KLS8vIFNwZWNpZmllcyB0aGUgZGVmYXVsdCBmbGFncyBmb3IgZWFjaCBub2RlLgotaW5saW5l
IE5vZGVGbGFncyBkZWZhdWx0RmxhZ3MoTm9kZVR5cGUgb3ApCi17Ci0gICAgc3dpdGNoIChvcCkg
ewotI2RlZmluZSBERkdfT1BfRU5VTShvcGNvZGUsIGZsYWdzKSBjYXNlIG9wY29kZTogcmV0dXJu
IGZsYWdzOwotICAgIEZPUl9FQUNIX0RGR19PUChERkdfT1BfRU5VTSkKLSN1bmRlZiBERkdfT1Bf
RU5VTQotICAgIGRlZmF1bHQ6Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAg
ICByZXR1cm4gMDsKLSAgICB9Ci19Ci0KIC8vIFRoaXMgdHlwZSB1c2VkIGluIHBhc3NpbmcgYW4g
aW1tZWRpYXRlIGFyZ3VtZW50IHRvIE5vZGUgY29uc3RydWN0b3I7CiAvLyBkaXN0aW5ndWlzaGVz
IGFuIGltbWVkaWF0ZSB2YWx1ZSAodHlwaWNhbGx5IGFuIGluZGV4IGludG8gYSBDb2RlQmxvY2sg
ZGF0YSBzdHJ1Y3R1cmUgLSAKIC8vIGEgY29uc3RhbnQgaW5kZXgsIGFyZ3VtZW50LCBvciBpZGVu
dGlmaWVyKSBmcm9tIGEgTm9kZUluZGV4LgpAQCAtMzE5LDcgKzg1LDcgQEAgc3RydWN0IE5vZGUg
ewogICAgICAgICAsIG1fcHJlZGljdGlvbihQcmVkaWN0Tm9uZSkKICAgICB7CiAgICAgICAgIHNl
dE9wQW5kRGVmYXVsdEZsYWdzKG9wKTsKLSAgICAgICAgQVNTRVJUKCEoZmxhZ3MgJiBOb2RlSGFz
VmFyQXJncykpOworICAgICAgICBBU1NFUlQoIShtX2ZsYWdzICYgTm9kZUhhc1ZhckFyZ3MpKTsK
ICAgICB9CiAKICAgICAvLyBDb25zdHJ1Y3QgYSBub2RlIHdpdGggdXAgdG8gMyBjaGlsZHJlbiBh
bmQgYW4gaW1tZWRpYXRlIHZhbHVlLgpAQCAtMzMyLDcgKzk4LDcgQEAgc3RydWN0IE5vZGUgewog
ICAgICAgICAsIG1fcHJlZGljdGlvbihQcmVkaWN0Tm9uZSkKICAgICB7CiAgICAgICAgIHNldE9w
QW5kRGVmYXVsdEZsYWdzKG9wKTsKLSAgICAgICAgQVNTRVJUKCEoZmxhZ3MgJiBOb2RlSGFzVmFy
QXJncykpOworICAgICAgICBBU1NFUlQoIShtX2ZsYWdzICYgTm9kZUhhc1ZhckFyZ3MpKTsKICAg
ICB9CiAKICAgICAvLyBDb25zdHJ1Y3QgYSBub2RlIHdpdGggdXAgdG8gMyBjaGlsZHJlbiBhbmQg
dHdvIGltbWVkaWF0ZSB2YWx1ZXMuCkBAIC0zNDYsNyArMTEyLDcgQEAgc3RydWN0IE5vZGUgewog
ICAgICAgICAsIG1fcHJlZGljdGlvbihQcmVkaWN0Tm9uZSkKICAgICB7CiAgICAgICAgIHNldE9w
QW5kRGVmYXVsdEZsYWdzKG9wKTsKLSAgICAgICAgQVNTRVJUKCEoZmxhZ3MgJiBOb2RlSGFzVmFy
QXJncykpOworICAgICAgICBBU1NFUlQoIShtX2ZsYWdzICYgTm9kZUhhc1ZhckFyZ3MpKTsKICAg
ICB9CiAgICAgCiAgICAgLy8gQ29uc3RydWN0IGEgbm9kZSB3aXRoIGEgdmFyaWFibGUgbnVtYmVy
IG9mIGNoaWxkcmVuIGFuZCB0d28gaW1tZWRpYXRlIHZhbHVlcy4KQEAgLTM2MCwyOCArMTI2LDY0
IEBAIHN0cnVjdCBOb2RlIHsKICAgICAgICAgLCBtX3ByZWRpY3Rpb24oUHJlZGljdE5vbmUpCiAg
ICAgewogICAgICAgICBzZXRPcEFuZERlZmF1bHRGbGFncyhvcCk7Ci0gICAgICAgIEFTU0VSVChm
bGFncyAmIE5vZGVIYXNWYXJBcmdzKTsKKyAgICAgICAgQVNTRVJUKG1fZmxhZ3MgJiBOb2RlSGFz
VmFyQXJncyk7CisgICAgfQorICAgIAorICAgIE5vZGVUeXBlIG9wKCkgY29uc3QgeyByZXR1cm4g
c3RhdGljX2Nhc3Q8Tm9kZVR5cGU+KG1fb3ApOyB9CisgICAgTm9kZUZsYWdzIGZsYWdzKCkgY29u
c3QgeyByZXR1cm4gbV9mbGFnczsgfQorICAgIAorICAgIHZvaWQgc2V0T3AoTm9kZVR5cGUgb3Ap
CisgICAgeworICAgICAgICBtX29wID0gb3A7CisgICAgfQorICAgIAorICAgIHZvaWQgc2V0Rmxh
Z3MoTm9kZUZsYWdzIGZsYWdzKQorICAgIHsKKyAgICAgICAgbV9mbGFncyA9IGZsYWdzOworICAg
IH0KKyAgICAKKyAgICBib29sIG1lcmdlRmxhZ3MoTm9kZUZsYWdzIGZsYWdzKQorICAgIHsKKyAg
ICAgICAgTm9kZUZsYWdzIG5ld0ZsYWdzID0gbV9mbGFncyB8IGZsYWdzOworICAgICAgICBpZiAo
bmV3RmxhZ3MgPT0gbV9mbGFncykKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
bV9mbGFncyA9IG5ld0ZsYWdzOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgCisg
ICAgYm9vbCBmaWx0ZXJGbGFncyhOb2RlRmxhZ3MgZmxhZ3MpCisgICAgeworICAgICAgICBOb2Rl
RmxhZ3MgbmV3RmxhZ3MgPSBtX2ZsYWdzICYgZmxhZ3M7CisgICAgICAgIGlmIChuZXdGbGFncyA9
PSBtX2ZsYWdzKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBtX2ZsYWdzID0g
bmV3RmxhZ3M7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICAKKyAgICBib29sIGNs
ZWFyRmxhZ3MoTm9kZUZsYWdzIGZsYWdzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZpbHRlckZs
YWdzKH5mbGFncyk7CiAgICAgfQogICAgIAogICAgIHZvaWQgc2V0T3BBbmREZWZhdWx0RmxhZ3Mo
Tm9kZVR5cGUgb3ApCiAgICAgewotICAgICAgICB0aGlzLT5vcCA9IG9wOwotICAgICAgICBmbGFn
cyA9IGRlZmF1bHRGbGFncyhvcCk7CisgICAgICAgIG1fb3AgPSBvcDsKKyAgICAgICAgbV9mbGFn
cyA9IGRlZmF1bHRGbGFncyhvcCk7CiAgICAgfQogCiAgICAgYm9vbCBtdXN0R2VuZXJhdGUoKQog
ICAgIHsKLSAgICAgICAgcmV0dXJuIGZsYWdzICYgTm9kZU11c3RHZW5lcmF0ZTsKKyAgICAgICAg
cmV0dXJuIG1fZmxhZ3MgJiBOb2RlTXVzdEdlbmVyYXRlOwogICAgIH0KIAogICAgIGJvb2wgaXND
b25zdGFudCgpCiAgICAgewotICAgICAgICByZXR1cm4gb3AgPT0gSlNDb25zdGFudDsKKyAgICAg
ICAgcmV0dXJuIG9wKCkgPT0gSlNDb25zdGFudDsKICAgICB9CiAgICAgCiAgICAgYm9vbCBpc1dl
YWtDb25zdGFudCgpCiAgICAgewotICAgICAgICByZXR1cm4gb3AgPT0gV2Vha0pTQ29uc3RhbnQ7
CisgICAgICAgIHJldHVybiBvcCgpID09IFdlYWtKU0NvbnN0YW50OwogICAgIH0KICAgICAKICAg
ICBib29sIGhhc0NvbnN0YW50KCkKQEAgLTQwMiw3ICsyMDQsNyBAQCBzdHJ1Y3QgTm9kZSB7CiAg
ICAgCiAgICAgSlNWYWx1ZSB2YWx1ZU9mSlNDb25zdGFudChDb2RlQmxvY2sqIGNvZGVCbG9jaykK
ICAgICB7Ci0gICAgICAgIGlmIChvcCA9PSBXZWFrSlNDb25zdGFudCkKKyAgICAgICAgaWYgKG9w
KCkgPT0gV2Vha0pTQ29uc3RhbnQpCiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSh3ZWFrQ29u
c3RhbnQoKSk7CiAgICAgICAgIHJldHVybiBjb2RlQmxvY2stPmNvbnN0YW50UmVnaXN0ZXIoRmly
c3RDb25zdGFudFJlZ2lzdGVySW5kZXggKyBjb25zdGFudE51bWJlcigpKS5nZXQoKTsKICAgICB9
CkBAIC00MzQsNyArMjM2LDcgQEAgc3RydWN0IE5vZGUgewogICAgIAogICAgIGJvb2wgaGFzVmFy
aWFibGVBY2Nlc3NEYXRhKCkKICAgICB7Ci0gICAgICAgIHN3aXRjaCAob3ApIHsKKyAgICAgICAg
c3dpdGNoIChvcCgpKSB7CiAgICAgICAgIGNhc2UgR2V0TG9jYWw6CiAgICAgICAgIGNhc2UgU2V0
TG9jYWw6CiAgICAgICAgIGNhc2UgUGhpOgpAQCAtNDY0LDcgKzI2Niw3IEBAIHN0cnVjdCBOb2Rl
IHsKICAgICAKICAgICBib29sIGhhc0lkZW50aWZpZXIoKQogICAgIHsKLSAgICAgICAgc3dpdGNo
IChvcCkgeworICAgICAgICBzd2l0Y2ggKG9wKCkpIHsKICAgICAgICAgY2FzZSBHZXRCeUlkOgog
ICAgICAgICBjYXNlIEdldEJ5SWRGbHVzaDoKICAgICAgICAgY2FzZSBQdXRCeUlkOgpAQCAtNDg2
LDEzICsyODgsMTMgQEAgc3RydWN0IE5vZGUgewogICAgIAogICAgIHVuc2lnbmVkIHJlc29sdmVH
bG9iYWxEYXRhSW5kZXgoKQogICAgIHsKLSAgICAgICAgQVNTRVJUKG9wID09IFJlc29sdmVHbG9i
YWwpOworICAgICAgICBBU1NFUlQob3AoKSA9PSBSZXNvbHZlR2xvYmFsKTsKICAgICAgICAgcmV0
dXJuIG1fb3BJbmZvOwogICAgIH0KIAogICAgIGJvb2wgaGFzQXJpdGhOb2RlRmxhZ3MoKQogICAg
IHsKLSAgICAgICAgc3dpdGNoIChvcCkgeworICAgICAgICBzd2l0Y2ggKG9wKCkpIHsKICAgICAg
ICAgY2FzZSBVSW50MzJUb051bWJlcjoKICAgICAgICAgY2FzZSBBcml0aEFkZDoKICAgICAgICAg
Y2FzZSBBcml0aFN1YjoKQEAgLTUxNSw4ICszMTcsOCBAQCBzdHJ1Y3QgTm9kZSB7CiAgICAgLy8g
dG8ga25vdyBpZiBpdCBjYW4gc3BlY3VsYXRlIG9uIG5lZ2F0aXZlIHplcm8uCiAgICAgTm9kZUZs
YWdzIGFyaXRoTm9kZUZsYWdzKCkKICAgICB7Ci0gICAgICAgIE5vZGVGbGFncyByZXN1bHQgPSBm
bGFncyAmIE5vZGVBcml0aE1hc2s7Ci0gICAgICAgIGlmIChvcCA9PSBBcml0aE11bCkKKyAgICAg
ICAgTm9kZUZsYWdzIHJlc3VsdCA9IG1fZmxhZ3MgJiBOb2RlQXJpdGhNYXNrOworICAgICAgICBp
ZiAob3AoKSA9PSBBcml0aE11bCkKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAg
IHJldHVybiByZXN1bHQgJiB+Tm9kZU5lZWRzTmVnWmVybzsKICAgICB9CkBAIC01MjUsMjMgKzMy
NywyMyBAQCBzdHJ1Y3QgTm9kZSB7CiAgICAgewogICAgICAgICBBU1NFUlQoIShuZXdGbGFncyAm
IH5Ob2RlQXJpdGhNYXNrKSk7CiAgICAgICAgIAotICAgICAgICBmbGFncyAmPSB+Tm9kZUFyaXRo
TWFzazsKLSAgICAgICAgZmxhZ3MgfD0gbmV3RmxhZ3M7CisgICAgICAgIG1fZmxhZ3MgJj0gfk5v
ZGVBcml0aE1hc2s7CisgICAgICAgIG1fZmxhZ3MgfD0gbmV3RmxhZ3M7CiAgICAgfQogICAgIAog
ICAgIGJvb2wgbWVyZ2VBcml0aE5vZGVGbGFncyhOb2RlRmxhZ3MgbmV3RmxhZ3MpCiAgICAgewog
ICAgICAgICBBU1NFUlQoIShuZXdGbGFncyAmIH5Ob2RlQXJpdGhNYXNrKSk7Ci0gICAgICAgIG5l
d0ZsYWdzID0gZmxhZ3MgfCBuZXdGbGFnczsKLSAgICAgICAgaWYgKG5ld0ZsYWdzID09IGZsYWdz
KQorICAgICAgICBuZXdGbGFncyA9IG1fZmxhZ3MgfCBuZXdGbGFnczsKKyAgICAgICAgaWYgKG5l
d0ZsYWdzID09IG1fZmxhZ3MpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGZs
YWdzID0gbmV3RmxhZ3M7CisgICAgICAgIG1fZmxhZ3MgPSBuZXdGbGFnczsKICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgfQogICAgIAogICAgIGJvb2wgaGFzQ29uc3RhbnRCdWZmZXIoKQogICAg
IHsKLSAgICAgICAgcmV0dXJuIG9wID09IE5ld0FycmF5QnVmZmVyOworICAgICAgICByZXR1cm4g
b3AoKSA9PSBOZXdBcnJheUJ1ZmZlcjsKICAgICB9CiAgICAgCiAgICAgdW5zaWduZWQgc3RhcnRD
b25zdGFudCgpCkBAIC01NTgsNyArMzYwLDcgQEAgc3RydWN0IE5vZGUgewogICAgIAogICAgIGJv
b2wgaGFzUmVnZXhwSW5kZXgoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIG9wID09IE5ld1JlZ2V4
cDsKKyAgICAgICAgcmV0dXJuIG9wKCkgPT0gTmV3UmVnZXhwOwogICAgIH0KICAgICAKICAgICB1
bnNpZ25lZCByZWdleHBJbmRleCgpCkBAIC01NjksNyArMzcxLDcgQEAgc3RydWN0IE5vZGUgewog
ICAgIAogICAgIGJvb2wgaGFzVmFyTnVtYmVyKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBvcCA9
PSBHZXRHbG9iYWxWYXIgfHwgb3AgPT0gUHV0R2xvYmFsVmFyIHx8IG9wID09IEdldFNjb3BlZFZh
ciB8fCBvcCA9PSBQdXRTY29wZWRWYXI7CisgICAgICAgIHJldHVybiBvcCgpID09IEdldEdsb2Jh
bFZhciB8fCBvcCgpID09IFB1dEdsb2JhbFZhciB8fCBvcCgpID09IEdldFNjb3BlZFZhciB8fCBv
cCgpID09IFB1dFNjb3BlZFZhcjsKICAgICB9CiAKICAgICB1bnNpZ25lZCB2YXJOdW1iZXIoKQpA
QCAtNTgwLDcgKzM4Miw3IEBAIHN0cnVjdCBOb2RlIHsKIAogICAgIGJvb2wgaGFzU2NvcGVDaGFp
bkRlcHRoKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBvcCA9PSBHZXRTY29wZUNoYWluOworICAg
ICAgICByZXR1cm4gb3AoKSA9PSBHZXRTY29wZUNoYWluOwogICAgIH0KICAgICAKICAgICB1bnNp
Z25lZCBzY29wZUNoYWluRGVwdGgoKQpAQCAtNTkxLDQyICszOTMsNDIgQEAgc3RydWN0IE5vZGUg
ewogCiAgICAgYm9vbCBoYXNSZXN1bHQoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGZsYWdzICYg
Tm9kZVJlc3VsdE1hc2s7CisgICAgICAgIHJldHVybiBtX2ZsYWdzICYgTm9kZVJlc3VsdE1hc2s7
CiAgICAgfQogCiAgICAgYm9vbCBoYXNJbnQzMlJlc3VsdCgpCiAgICAgewotICAgICAgICByZXR1
cm4gKGZsYWdzICYgTm9kZVJlc3VsdE1hc2spID09IE5vZGVSZXN1bHRJbnQzMjsKKyAgICAgICAg
cmV0dXJuIChtX2ZsYWdzICYgTm9kZVJlc3VsdE1hc2spID09IE5vZGVSZXN1bHRJbnQzMjsKICAg
ICB9CiAgICAgCiAgICAgYm9vbCBoYXNOdW1iZXJSZXN1bHQoKQogICAgIHsKLSAgICAgICAgcmV0
dXJuIChmbGFncyAmIE5vZGVSZXN1bHRNYXNrKSA9PSBOb2RlUmVzdWx0TnVtYmVyOworICAgICAg
ICByZXR1cm4gKG1fZmxhZ3MgJiBOb2RlUmVzdWx0TWFzaykgPT0gTm9kZVJlc3VsdE51bWJlcjsK
ICAgICB9CiAgICAgCiAgICAgYm9vbCBoYXNKU1Jlc3VsdCgpCiAgICAgewotICAgICAgICByZXR1
cm4gKGZsYWdzICYgTm9kZVJlc3VsdE1hc2spID09IE5vZGVSZXN1bHRKUzsKKyAgICAgICAgcmV0
dXJuIChtX2ZsYWdzICYgTm9kZVJlc3VsdE1hc2spID09IE5vZGVSZXN1bHRKUzsKICAgICB9CiAg
ICAgCiAgICAgYm9vbCBoYXNCb29sZWFuUmVzdWx0KCkKICAgICB7Ci0gICAgICAgIHJldHVybiAo
ZmxhZ3MgJiBOb2RlUmVzdWx0TWFzaykgPT0gTm9kZVJlc3VsdEJvb2xlYW47CisgICAgICAgIHJl
dHVybiAobV9mbGFncyAmIE5vZGVSZXN1bHRNYXNrKSA9PSBOb2RlUmVzdWx0Qm9vbGVhbjsKICAg
ICB9CiAKICAgICBib29sIGlzSnVtcCgpCiAgICAgewotICAgICAgICByZXR1cm4gb3AgPT0gSnVt
cDsKKyAgICAgICAgcmV0dXJuIG9wKCkgPT0gSnVtcDsKICAgICB9CiAKICAgICBib29sIGlzQnJh
bmNoKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBvcCA9PSBCcmFuY2g7CisgICAgICAgIHJldHVy
biBvcCgpID09IEJyYW5jaDsKICAgICB9CiAKICAgICBib29sIGlzVGVybWluYWwoKQogICAgIHsK
LSAgICAgICAgc3dpdGNoIChvcCkgeworICAgICAgICBzd2l0Y2ggKG9wKCkpIHsKICAgICAgICAg
Y2FzZSBKdW1wOgogICAgICAgICBjYXNlIEJyYW5jaDoKICAgICAgICAgY2FzZSBSZXR1cm46CkBA
IC02NzYsNyArNDc4LDcgQEAgc3RydWN0IE5vZGUgewogICAgIAogICAgIGJvb2wgaGFzSGVhcFBy
ZWRpY3Rpb24oKQogICAgIHsKLSAgICAgICAgc3dpdGNoIChvcCkgeworICAgICAgICBzd2l0Y2gg
KG9wKCkpIHsKICAgICAgICAgY2FzZSBHZXRCeUlkOgogICAgICAgICBjYXNlIEdldEJ5SWRGbHVz
aDoKICAgICAgICAgY2FzZSBHZXRCeVZhbDoKQEAgLTcxMSw3ICs1MTMsNyBAQCBzdHJ1Y3QgTm9k
ZSB7CiAgICAgCiAgICAgYm9vbCBoYXNGdW5jdGlvbkNoZWNrRGF0YSgpCiAgICAgewotICAgICAg
ICByZXR1cm4gb3AgPT0gQ2hlY2tGdW5jdGlvbjsKKyAgICAgICAgcmV0dXJuIG9wKCkgPT0gQ2hl
Y2tGdW5jdGlvbjsKICAgICB9CiAKICAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbigpCkBAIC03MjIs
NyArNTI0LDcgQEAgc3RydWN0IE5vZGUgewogCiAgICAgYm9vbCBoYXNTdHJ1Y3R1cmVUcmFuc2l0
aW9uRGF0YSgpCiAgICAgewotICAgICAgICByZXR1cm4gb3AgPT0gUHV0U3RydWN0dXJlOworICAg
ICAgICByZXR1cm4gb3AoKSA9PSBQdXRTdHJ1Y3R1cmU7CiAgICAgfQogICAgIAogICAgIFN0cnVj
dHVyZVRyYW5zaXRpb25EYXRhJiBzdHJ1Y3R1cmVUcmFuc2l0aW9uRGF0YSgpCkBAIC03MzMsNyAr
NTM1LDcgQEAgc3RydWN0IE5vZGUgewogICAgIAogICAgIGJvb2wgaGFzU3RydWN0dXJlU2V0KCkK
ICAgICB7Ci0gICAgICAgIHJldHVybiBvcCA9PSBDaGVja1N0cnVjdHVyZTsKKyAgICAgICAgcmV0
dXJuIG9wKCkgPT0gQ2hlY2tTdHJ1Y3R1cmU7CiAgICAgfQogICAgIAogICAgIFN0cnVjdHVyZVNl
dCYgc3RydWN0dXJlU2V0KCkKQEAgLTc0NCw3ICs1NDYsNyBAQCBzdHJ1Y3QgTm9kZSB7CiAgICAg
CiAgICAgYm9vbCBoYXNTdG9yYWdlQWNjZXNzRGF0YSgpCiAgICAgewotICAgICAgICByZXR1cm4g
b3AgPT0gR2V0QnlPZmZzZXQgfHwgb3AgPT0gUHV0QnlPZmZzZXQ7CisgICAgICAgIHJldHVybiBv
cCgpID09IEdldEJ5T2Zmc2V0IHx8IG9wKCkgPT0gUHV0QnlPZmZzZXQ7CiAgICAgfQogICAgIAog
ICAgIHVuc2lnbmVkIHN0b3JhZ2VBY2Nlc3NEYXRhSW5kZXgoKQpAQCAtNzU1LDggKzU1Nyw4IEBA
IHN0cnVjdCBOb2RlIHsKICAgICAKICAgICBib29sIGhhc0Z1bmN0aW9uRGVjbEluZGV4KCkKICAg
ICB7Ci0gICAgICAgIHJldHVybiBvcCA9PSBOZXdGdW5jdGlvbgotICAgICAgICAgICAgfHwgb3Ag
PT0gTmV3RnVuY3Rpb25Ob0NoZWNrOworICAgICAgICByZXR1cm4gb3AoKSA9PSBOZXdGdW5jdGlv
bgorICAgICAgICAgICAgfHwgb3AoKSA9PSBOZXdGdW5jdGlvbk5vQ2hlY2s7CiAgICAgfQogICAg
IAogICAgIHVuc2lnbmVkIGZ1bmN0aW9uRGVjbEluZGV4KCkKQEAgLTc2Nyw3ICs1NjksNyBAQCBz
dHJ1Y3QgTm9kZSB7CiAgICAgCiAgICAgYm9vbCBoYXNGdW5jdGlvbkV4cHJJbmRleCgpCiAgICAg
ewotICAgICAgICByZXR1cm4gb3AgPT0gTmV3RnVuY3Rpb25FeHByZXNzaW9uOworICAgICAgICBy
ZXR1cm4gb3AoKSA9PSBOZXdGdW5jdGlvbkV4cHJlc3Npb247CiAgICAgfQogICAgIAogICAgIHVu
c2lnbmVkIGZ1bmN0aW9uRXhwckluZGV4KCkKQEAgLTgzMiw3ICs2MzQsNyBAQCBzdHJ1Y3QgTm9k
ZSB7CiAgICAgCiAgICAgTm9kZVVzZSBjaGlsZDEoKQogICAgIHsKLSAgICAgICAgQVNTRVJUKCEo
ZmxhZ3MgJiBOb2RlSGFzVmFyQXJncykpOworICAgICAgICBBU1NFUlQoIShtX2ZsYWdzICYgTm9k
ZUhhc1ZhckFyZ3MpKTsKICAgICAgICAgcmV0dXJuIGNoaWxkcmVuLmNoaWxkMSgpOwogICAgIH0K
ICAgICAKQEAgLTg0NiwyNSArNjQ4LDI1IEBAIHN0cnVjdCBOb2RlIHsKIAogICAgIE5vZGVVc2Ug
Y2hpbGQyKCkKICAgICB7Ci0gICAgICAgIEFTU0VSVCghKGZsYWdzICYgTm9kZUhhc1ZhckFyZ3Mp
KTsKKyAgICAgICAgQVNTRVJUKCEobV9mbGFncyAmIE5vZGVIYXNWYXJBcmdzKSk7CiAgICAgICAg
IHJldHVybiBjaGlsZHJlbi5jaGlsZDIoKTsKICAgICB9CiAKICAgICBOb2RlVXNlIGNoaWxkMygp
CiAgICAgewotICAgICAgICBBU1NFUlQoIShmbGFncyAmIE5vZGVIYXNWYXJBcmdzKSk7CisgICAg
ICAgIEFTU0VSVCghKG1fZmxhZ3MgJiBOb2RlSGFzVmFyQXJncykpOwogICAgICAgICByZXR1cm4g
Y2hpbGRyZW4uY2hpbGQzKCk7CiAgICAgfQogICAgIAogICAgIHVuc2lnbmVkIGZpcnN0Q2hpbGQo
KQogICAgIHsKLSAgICAgICAgQVNTRVJUKGZsYWdzICYgTm9kZUhhc1ZhckFyZ3MpOworICAgICAg
ICBBU1NFUlQobV9mbGFncyAmIE5vZGVIYXNWYXJBcmdzKTsKICAgICAgICAgcmV0dXJuIGNoaWxk
cmVuLmZpcnN0Q2hpbGQoKTsKICAgICB9CiAgICAgCiAgICAgdW5zaWduZWQgbnVtQ2hpbGRyZW4o
KQogICAgIHsKLSAgICAgICAgQVNTRVJUKGZsYWdzICYgTm9kZUhhc1ZhckFyZ3MpOworICAgICAg
ICBBU1NFUlQobV9mbGFncyAmIE5vZGVIYXNWYXJBcmdzKTsKICAgICAgICAgcmV0dXJuIGNoaWxk
cmVuLm51bUNoaWxkcmVuKCk7CiAgICAgfQogICAgIApAQCAtMTAzMCwxNCArODMyLDE0IEBAIHN0
cnVjdCBOb2RlIHsKICAgICAgICAgZnByaW50ZihvdXQsICIsIEAldSIsIGNoaWxkMygpLmluZGV4
KCkpOwogICAgIH0KICAgICAKLSAgICB1aW50MTZfdCBvcDsgLy8gcmVhbCB0eXBlIGlzIE5vZGVU
eXBlCi0gICAgTm9kZUZsYWdzIGZsYWdzOwogICAgIC8vIFVzZWQgdG8gbG9vayB1cCBleGNlcHRp
b24gaGFuZGxpbmcgaW5mb3JtYXRpb24gKGN1cnJlbnRseSBpbXBsZW1lbnRlZCBhcyBhIGJ5dGVj
b2RlIGluZGV4KS4KICAgICBDb2RlT3JpZ2luIGNvZGVPcmlnaW47CiAgICAgLy8gUmVmZXJlbmNl
cyB0byB1cCB0byAzIGNoaWxkcmVuLCBvciBsaW5rcyB0byBhIHZhcmlhYmxlIGxlbmd0aCBzZXQg
b2YgY2hpbGRyZW4uCiAgICAgTm9kZVJlZmVyZW5jZUJsb2IgY2hpbGRyZW47CiAKIHByaXZhdGU6
CisgICAgdWludDE2X3QgbV9vcDsgLy8gcmVhbCB0eXBlIGlzIE5vZGVUeXBlCisgICAgTm9kZUZs
YWdzIG1fZmxhZ3M7CiAgICAgLy8gVGhlIHZpcnR1YWwgcmVnaXN0ZXIgbnVtYmVyIChzcGlsbCBs
b2NhdGlvbikgYXNzb2NpYXRlZCB3aXRoIHRoaXMgLgogICAgIFZpcnR1YWxSZWdpc3RlciBtX3Zp
cnR1YWxSZWdpc3RlcjsKICAgICAvLyBUaGUgbnVtYmVyIG9mIHVzZXMgb2YgdGhlIHJlc3VsdCBv
ZiB0aGlzIG9wZXJhdGlvbiAoKzEgZm9yICdtdXN0IGdlbmVyYXRlJyBub2Rlcywgd2hpY2ggaGF2
ZSBzaWRlLWVmZmVjdHMpLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2Rl
RmxhZ3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9k
ZUZsYWdzLmNwcAkocmV2aXNpb24gMTEwNDE5KQkoZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR05vZGUuY3BwOjExMDQxOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Tm9kZUZsYWdzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDgxIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJERkdOb2RlLmgiCisKKyNpZiBFTkFCTEUoREZHX0pJVCkKKworbmFtZXNwYWNl
IEpTQyB7IG5hbWVzcGFjZSBERkcgeworCitjb25zdCBjaGFyKiBhcml0aE5vZGVGbGFnc0FzU3Ry
aW5nKE5vZGVGbGFncyBmbGFncykKK3sKKyAgICBmbGFncyAmPSBOb2RlQXJpdGhNYXNrOworICAg
IAorICAgIGlmICghZmxhZ3MpCisgICAgICAgIHJldHVybiAiPGVtcHR5PiI7CisKKyAgICBzdGF0
aWMgY29uc3QgaW50IHNpemUgPSA2NDsKKyAgICBzdGF0aWMgY2hhciBkZXNjcmlwdGlvbltzaXpl
XTsKKyAgICBCb3VuZHNDaGVja2VkUG9pbnRlcjxjaGFyPiBwdHIoZGVzY3JpcHRpb24sIHNpemUp
OworICAgIAorICAgIGJvb2wgaGFzUHJpbnRlZCA9IGZhbHNlOworICAgIAorICAgIGlmIChmbGFn
cyAmIE5vZGVVc2VkQXNOdW1iZXIpIHsKKyAgICAgICAgcHRyLnN0cmNhdCgiVXNlZEFzTnVtIik7
CisgICAgICAgIGhhc1ByaW50ZWQgPSB0cnVlOworICAgIH0KKyAgICAKKyAgICBpZiAoZmxhZ3Mg
JiBOb2RlTmVlZHNOZWdaZXJvKSB7CisgICAgICAgIGlmIChoYXNQcmludGVkKQorICAgICAgICAg
ICAgcHRyLnN0cmNhdCgifCIpOworICAgICAgICBwdHIuc3RyY2F0KCJOZWVkc05lZ1plcm8iKTsK
KyAgICAgICAgaGFzUHJpbnRlZCA9IHRydWU7CisgICAgfQorICAgIAorICAgIGlmIChmbGFncyAm
IE5vZGVNYXlPdmVyZmxvdykgeworICAgICAgICBpZiAoaGFzUHJpbnRlZCkKKyAgICAgICAgICAg
IHB0ci5zdHJjYXQoInwiKTsKKyAgICAgICAgcHRyLnN0cmNhdCgiTWF5T3ZlcmZsb3ciKTsKKyAg
ICAgICAgaGFzUHJpbnRlZCA9IHRydWU7CisgICAgfQorICAgIAorICAgIGlmIChmbGFncyAmIE5v
ZGVNYXlOZWdaZXJvKSB7CisgICAgICAgIGlmIChoYXNQcmludGVkKQorICAgICAgICAgICAgcHRy
LnN0cmNhdCgifCIpOworICAgICAgICBwdHIuc3RyY2F0KCJNYXlOZWdaZXJvIik7CisgICAgICAg
IGhhc1ByaW50ZWQgPSB0cnVlOworICAgIH0KKyAgICAKKyAgICAqcHRyKysgPSAwOworICAgIAor
ICAgIHJldHVybiBkZXNjcmlwdGlvbjsKK30KKworCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZH
CisKKyNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdOb2RlRmxhZ3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHTm9kZUZsYWdzLmNwcAkocmV2aXNpb24gMTEwNDE5KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlRmxhZ3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNCwx
MCArMjQsMTIgQEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiREZHTm9k
ZS5oIgorI2luY2x1ZGUgIkRGR05vZGVGbGFncy5oIgogCiAjaWYgRU5BQkxFKERGR19KSVQpCiAK
KyNpbmNsdWRlIDx3dGYvQm91bmRzQ2hlY2tlZFBvaW50ZXIuaD4KKwogbmFtZXNwYWNlIEpTQyB7
IG5hbWVzcGFjZSBERkcgewogCiBjb25zdCBjaGFyKiBhcml0aE5vZGVGbGFnc0FzU3RyaW5nKE5v
ZGVGbGFncyBmbGFncykKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZUZs
YWdzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlRmxh
Z3MuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZUZs
YWdzLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsOTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBERkdOb2RlRmxhZ3NfaAorI2RlZmlu
ZSBERkdOb2RlRmxhZ3NfaAorCisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisKKyNpZiBFTkFC
TEUoREZHX0pJVCkKKworI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KKworbmFtZXNwYWNl
IEpTQyB7IG5hbWVzcGFjZSBERkcgeworCisvLyBFbnRyaWVzIGluIHRoZSBOb2RlVHlwZSBlbnVt
IChiZWxvdykgYXJlIGNvbXBvc2VkIG9mIGFuIGlkLCBhIHJlc3VsdCB0eXBlIChwb3NzaWJseSBu
b25lKQorLy8gYW5kIHNvbWUgYWRkaXRpb25hbCBpbmZvcm1hdGl2ZSBmbGFncyAobXVzdCBnZW5l
cmF0ZSwgaXMgY29uc3RhbnQsIGV0YykuCisjZGVmaW5lIE5vZGVSZXN1bHRNYXNrICAgICAgIDB4
RgorI2RlZmluZSBOb2RlUmVzdWx0SlMgICAgICAgICAweDEKKyNkZWZpbmUgTm9kZVJlc3VsdE51
bWJlciAgICAgMHgyCisjZGVmaW5lIE5vZGVSZXN1bHRJbnQzMiAgICAgIDB4MworI2RlZmluZSBO
b2RlUmVzdWx0Qm9vbGVhbiAgICAweDQKKyNkZWZpbmUgTm9kZVJlc3VsdFN0b3JhZ2UgICAgMHg1
CisjZGVmaW5lIE5vZGVNdXN0R2VuZXJhdGUgICAgMHgxMCAvLyBzZXQgb24gbm9kZXMgdGhhdCBo
YXZlIHNpZGUgZWZmZWN0cywgYW5kIG1heSBub3QgdHJpdmlhbGx5IGJlIHJlbW92ZWQgYnkgRENF
LgorI2RlZmluZSBOb2RlSGFzVmFyQXJncyAgICAgIDB4MjAKKyNkZWZpbmUgTm9kZUNsb2JiZXJz
V29ybGQgICAweDQwCisjZGVmaW5lIE5vZGVNaWdodENsb2JiZXIgICAgMHg4MAorI2RlZmluZSBO
b2RlQXJpdGhNYXNrICAgICAgMHhGMDAKKyNkZWZpbmUgTm9kZVVzZUJvdHRvbSAgICAgIDB4MDAw
CisjZGVmaW5lIE5vZGVVc2VkQXNOdW1iZXIgICAweDEwMAorI2RlZmluZSBOb2RlTmVlZHNOZWda
ZXJvICAgMHgyMDAKKyNkZWZpbmUgTm9kZVVzZWRBc01hc2sgICAgIDB4MzAwCisjZGVmaW5lIE5v
ZGVNYXlPdmVyZmxvdyAgICAweDQwMAorI2RlZmluZSBOb2RlTWF5TmVnWmVybyAgICAgMHg4MDAK
KyNkZWZpbmUgTm9kZUJlaGF2aW9yTWFzayAgIDB4YzAwCisKK3R5cGVkZWYgdWludDE2X3QgTm9k
ZUZsYWdzOworCitzdGF0aWMgaW5saW5lIGJvb2wgbm9kZVVzZWRBc051bWJlcihOb2RlRmxhZ3Mg
ZmxhZ3MpCit7CisgICAgcmV0dXJuICEhKGZsYWdzICYgTm9kZVVzZWRBc051bWJlcik7Cit9CisK
K3N0YXRpYyBpbmxpbmUgYm9vbCBub2RlQ2FuVHJ1bmNhdGVJbnRlZ2VyKE5vZGVGbGFncyBmbGFn
cykKK3sKKyAgICByZXR1cm4gIW5vZGVVc2VkQXNOdW1iZXIoZmxhZ3MpOworfQorCitzdGF0aWMg
aW5saW5lIGJvb2wgbm9kZUNhbklnbm9yZU5lZ2F0aXZlWmVybyhOb2RlRmxhZ3MgZmxhZ3MpCit7
CisgICAgcmV0dXJuICEoZmxhZ3MgJiBOb2RlTmVlZHNOZWdaZXJvKTsKK30KKworc3RhdGljIGlu
bGluZSBib29sIG5vZGVNYXlPdmVyZmxvdyhOb2RlRmxhZ3MgZmxhZ3MpCit7CisgICAgcmV0dXJu
ICEhKGZsYWdzICYgTm9kZU1heU92ZXJmbG93KTsKK30KKworc3RhdGljIGlubGluZSBib29sIG5v
ZGVDYW5TcGVjdWxhdGVJbnRlZ2VyKE5vZGVGbGFncyBmbGFncykKK3sKKyAgICBpZiAoZmxhZ3Mg
JiBOb2RlTWF5T3ZlcmZsb3cpCisgICAgICAgIHJldHVybiAhbm9kZVVzZWRBc051bWJlcihmbGFn
cyk7CisgICAgCisgICAgaWYgKGZsYWdzICYgTm9kZU1heU5lZ1plcm8pCisgICAgICAgIHJldHVy
biBub2RlQ2FuSWdub3JlTmVnYXRpdmVaZXJvKGZsYWdzKTsKKyAgICAKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKworY29uc3QgY2hhciogYXJpdGhOb2RlRmxhZ3NBc1N0cmluZyhOb2RlRmxhZ3MpOwor
Cit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCisKKyNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkK
KworI2VuZGlmIC8vIERGR05vZGVGbGFnc19oCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTm9kZVR5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR05vZGVUeXBlLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR05vZGVUeXBlLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjIwIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgREZHTm9kZVR5
cGVfaAorI2RlZmluZSBERkdOb2RlVHlwZV9oCisKKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4K
KworI2lmIEVOQUJMRShERkdfSklUKQorCisjaW5jbHVkZSAiREZHTm9kZUZsYWdzLmgiCisKK25h
bWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKKworLy8gVGhpcyBtYWNybyBkZWZpbmVzIGEg
c2V0IG9mIGluZm9ybWF0aW9uIGFib3V0IGFsbCBrbm93biBub2RlIHR5cGVzLCB1c2VkIHRvIHBv
cHVsYXRlIE5vZGVJZCwgTm9kZVR5cGUgYmVsb3cuCisjZGVmaW5lIEZPUl9FQUNIX0RGR19PUCht
YWNybykgXAorICAgIC8qIEEgY29uc3RhbnQgaW4gdGhlIENvZGVCbG9jaydzIGNvbnN0YW50IHBv
b2wuICovXAorICAgIG1hY3JvKEpTQ29uc3RhbnQsIE5vZGVSZXN1bHRKUykgXAorICAgIFwKKyAg
ICAvKiBBIGNvbnN0YW50IG5vdCBpbiB0aGUgQ29kZUJsb2NrJ3MgY29uc3RhbnQgcG9vbC4gVXNl
cyBnZXQgcGF0Y2hlZCB0byBqdW1wcyB0aGF0IGV4aXQgdGhlICovXAorICAgIC8qIGNvZGUgYmxv
Y2suICovXAorICAgIG1hY3JvKFdlYWtKU0NvbnN0YW50LCBOb2RlUmVzdWx0SlMpIFwKKyAgICBc
CisgICAgLyogTm9kZXMgZm9yIGhhbmRsaW5nIGZ1bmN0aW9ucyAoYm90aCBhcyBjYWxsIGFuZCBh
cyBjb25zdHJ1Y3QpLiAqL1wKKyAgICBtYWNybyhDb252ZXJ0VGhpcywgTm9kZVJlc3VsdEpTKSBc
CisgICAgbWFjcm8oQ3JlYXRlVGhpcywgTm9kZVJlc3VsdEpTKSAvKiBOb3RlIHRoaXMgaXMgbm90
IE11c3RHZW5lcmF0ZSBzaW5jZSB3ZSdyZSByZXR1cm5pbmcgaXQgYW55d2F5LiAqLyBcCisgICAg
bWFjcm8oR2V0Q2FsbGVlLCBOb2RlUmVzdWx0SlMpIFwKKyAgICBcCisgICAgLyogTm9kZXMgZm9y
IGxvY2FsIHZhcmlhYmxlIGFjY2Vzcy4gKi9cCisgICAgbWFjcm8oR2V0TG9jYWwsIE5vZGVSZXN1
bHRKUykgXAorICAgIG1hY3JvKFNldExvY2FsLCAwKSBcCisgICAgbWFjcm8oUGhhbnRvbSwgTm9k
ZU11c3RHZW5lcmF0ZSkgXAorICAgIG1hY3JvKE5vcCwgMCkgXAorICAgIG1hY3JvKFBoaSwgMCkg
XAorICAgIG1hY3JvKEZsdXNoLCBOb2RlTXVzdEdlbmVyYXRlKSBcCisgICAgXAorICAgIC8qIE1h
cmtlciBmb3IgYXJndW1lbnRzIGJlaW5nIHNldC4gKi9cCisgICAgbWFjcm8oU2V0QXJndW1lbnQs
IDApIFwKKyAgICBcCisgICAgLyogSGludCB0aGF0IGlubGluaW5nIGJlZ2lucyBoZXJlLiBObyBj
b2RlIGlzIGdlbmVyYXRlZCBmb3IgdGhpcyBub2RlLiBJdCdzIG9ubHkgKi9cCisgICAgLyogdXNl
ZCBmb3IgY29weWluZyBPU1IgZGF0YSBpbnRvIGlubGluZSBmcmFtZSBkYXRhLCB0byBzdXBwb3J0
IHJlaWZpY2F0aW9uIG9mICovXAorICAgIC8qIGNhbGwgZnJhbWVzIG9mIGlubGluZWQgZnVuY3Rp
b25zLiAqL1wKKyAgICBtYWNybyhJbmxpbmVTdGFydCwgMCkgXAorICAgIFwKKyAgICAvKiBOb2Rl
cyBmb3IgYml0d2lzZSBvcGVyYXRpb25zLiAqL1wKKyAgICBtYWNybyhCaXRBbmQsIE5vZGVSZXN1
bHRJbnQzMikgXAorICAgIG1hY3JvKEJpdE9yLCBOb2RlUmVzdWx0SW50MzIpIFwKKyAgICBtYWNy
byhCaXRYb3IsIE5vZGVSZXN1bHRJbnQzMikgXAorICAgIG1hY3JvKEJpdExTaGlmdCwgTm9kZVJl
c3VsdEludDMyKSBcCisgICAgbWFjcm8oQml0UlNoaWZ0LCBOb2RlUmVzdWx0SW50MzIpIFwKKyAg
ICBtYWNybyhCaXRVUlNoaWZ0LCBOb2RlUmVzdWx0SW50MzIpIFwKKyAgICAvKiBCaXR3aXNlIG9w
ZXJhdG9ycyBjYWxsIFRvSW50MzIgb24gdGhlaXIgb3BlcmFuZHMuICovXAorICAgIG1hY3JvKFZh
bHVlVG9JbnQzMiwgTm9kZVJlc3VsdEludDMyIHwgTm9kZU11c3RHZW5lcmF0ZSkgXAorICAgIC8q
IFVzZWQgdG8gYm94IHRoZSByZXN1bHQgb2YgVVJTaGlmdCBub2RlcyAocmVzdWx0IGhhcyByYW5n
ZSAwLi4yXjMyLTEpLiAqL1wKKyAgICBtYWNybyhVSW50MzJUb051bWJlciwgTm9kZVJlc3VsdE51
bWJlcikgXAorICAgIFwKKyAgICAvKiBOb2RlcyBmb3IgYXJpdGhtZXRpYyBvcGVyYXRpb25zLiAq
L1wKKyAgICBtYWNybyhBcml0aEFkZCwgTm9kZVJlc3VsdE51bWJlcikgXAorICAgIG1hY3JvKEFy
aXRoU3ViLCBOb2RlUmVzdWx0TnVtYmVyKSBcCisgICAgbWFjcm8oQXJpdGhOZWdhdGUsIE5vZGVS
ZXN1bHROdW1iZXIpIFwKKyAgICBtYWNybyhBcml0aE11bCwgTm9kZVJlc3VsdE51bWJlcikgXAor
ICAgIG1hY3JvKEFyaXRoRGl2LCBOb2RlUmVzdWx0TnVtYmVyKSBcCisgICAgbWFjcm8oQXJpdGhN
b2QsIE5vZGVSZXN1bHROdW1iZXIpIFwKKyAgICBtYWNybyhBcml0aEFicywgTm9kZVJlc3VsdE51
bWJlcikgXAorICAgIG1hY3JvKEFyaXRoTWluLCBOb2RlUmVzdWx0TnVtYmVyKSBcCisgICAgbWFj
cm8oQXJpdGhNYXgsIE5vZGVSZXN1bHROdW1iZXIpIFwKKyAgICBtYWNybyhBcml0aFNxcnQsIE5v
ZGVSZXN1bHROdW1iZXIpIFwKKyAgICBcCisgICAgLyogQWRkIG9mIHZhbHVlcyBtYXkgZWl0aGVy
IGJlIGFyaXRobWV0aWMsIG9yIHJlc3VsdCBpbiBzdHJpbmcgY29uY2F0ZW5hdGlvbi4gKi9cCisg
ICAgbWFjcm8oVmFsdWVBZGQsIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUgfCBOb2Rl
TWlnaHRDbG9iYmVyKSBcCisgICAgXAorICAgIC8qIFByb3BlcnR5IGFjY2Vzcy4gKi9cCisgICAg
LyogUHV0QnlWYWxBbGlhcyBpbmRpY2F0ZXMgYSAncHV0JyBhbGlhc2VzIGEgcHJpb3Igd3JpdGUg
dG8gdGhlIHNhbWUgcHJvcGVydHkuICovXAorICAgIC8qIFNpbmNlIGEgcHV0IHRvICdsZW5ndGgn
IG1heSBpbnZhbGlkYXRlIG9wdGltaXphdGlvbnMgaGVyZSwgKi9cCisgICAgLyogdGhpcyBtdXN0
IGJlIHRoZSBkaXJlY3RseSBzdWJzZXF1ZW50IHByb3BlcnR5IHB1dC4gKi9cCisgICAgbWFjcm8o
R2V0QnlWYWwsIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlTWlnaHRDbG9i
YmVyKSBcCisgICAgbWFjcm8oUHV0QnlWYWwsIE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlQ2xvYmJl
cnNXb3JsZCkgXAorICAgIG1hY3JvKFB1dEJ5VmFsQWxpYXMsIE5vZGVNdXN0R2VuZXJhdGUgfCBO
b2RlQ2xvYmJlcnNXb3JsZCkgXAorICAgIG1hY3JvKEdldEJ5SWQsIE5vZGVSZXN1bHRKUyB8IE5v
ZGVNdXN0R2VuZXJhdGUgfCBOb2RlQ2xvYmJlcnNXb3JsZCkgXAorICAgIG1hY3JvKEdldEJ5SWRG
bHVzaCwgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVDbG9iYmVyc1dvcmxk
KSBcCisgICAgbWFjcm8oUHV0QnlJZCwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVDbG9iYmVyc1dv
cmxkKSBcCisgICAgbWFjcm8oUHV0QnlJZERpcmVjdCwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVD
bG9iYmVyc1dvcmxkKSBcCisgICAgbWFjcm8oQ2hlY2tTdHJ1Y3R1cmUsIE5vZGVNdXN0R2VuZXJh
dGUpIFwKKyAgICBtYWNybyhQdXRTdHJ1Y3R1cmUsIE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlQ2xv
YmJlcnNXb3JsZCkgXAorICAgIG1hY3JvKEdldFByb3BlcnR5U3RvcmFnZSwgTm9kZVJlc3VsdFN0
b3JhZ2UpIFwKKyAgICBtYWNybyhHZXRJbmRleGVkUHJvcGVydHlTdG9yYWdlLCBOb2RlTXVzdEdl
bmVyYXRlIHwgTm9kZVJlc3VsdFN0b3JhZ2UpIFwKKyAgICBtYWNybyhHZXRCeU9mZnNldCwgTm9k
ZVJlc3VsdEpTKSBcCisgICAgbWFjcm8oUHV0QnlPZmZzZXQsIE5vZGVNdXN0R2VuZXJhdGUgfCBO
b2RlQ2xvYmJlcnNXb3JsZCkgXAorICAgIG1hY3JvKEdldEFycmF5TGVuZ3RoLCBOb2RlUmVzdWx0
SW50MzIpIFwKKyAgICBtYWNybyhHZXRTdHJpbmdMZW5ndGgsIE5vZGVSZXN1bHRJbnQzMikgXAor
ICAgIG1hY3JvKEdldEJ5dGVBcnJheUxlbmd0aCwgTm9kZVJlc3VsdEludDMyKSBcCisgICAgbWFj
cm8oR2V0SW50OEFycmF5TGVuZ3RoLCBOb2RlUmVzdWx0SW50MzIpIFwKKyAgICBtYWNybyhHZXRJ
bnQxNkFycmF5TGVuZ3RoLCBOb2RlUmVzdWx0SW50MzIpIFwKKyAgICBtYWNybyhHZXRJbnQzMkFy
cmF5TGVuZ3RoLCBOb2RlUmVzdWx0SW50MzIpIFwKKyAgICBtYWNybyhHZXRVaW50OEFycmF5TGVu
Z3RoLCBOb2RlUmVzdWx0SW50MzIpIFwKKyAgICBtYWNybyhHZXRVaW50OENsYW1wZWRBcnJheUxl
bmd0aCwgTm9kZVJlc3VsdEludDMyKSBcCisgICAgbWFjcm8oR2V0VWludDE2QXJyYXlMZW5ndGgs
IE5vZGVSZXN1bHRJbnQzMikgXAorICAgIG1hY3JvKEdldFVpbnQzMkFycmF5TGVuZ3RoLCBOb2Rl
UmVzdWx0SW50MzIpIFwKKyAgICBtYWNybyhHZXRGbG9hdDMyQXJyYXlMZW5ndGgsIE5vZGVSZXN1
bHRJbnQzMikgXAorICAgIG1hY3JvKEdldEZsb2F0NjRBcnJheUxlbmd0aCwgTm9kZVJlc3VsdElu
dDMyKSBcCisgICAgbWFjcm8oR2V0U2NvcGVDaGFpbiwgTm9kZVJlc3VsdEpTKSBcCisgICAgbWFj
cm8oR2V0U2NvcGVkVmFyLCBOb2RlUmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlKSBcCisgICAg
bWFjcm8oUHV0U2NvcGVkVmFyLCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZUNsb2JiZXJzV29ybGQp
IFwKKyAgICBtYWNybyhHZXRHbG9iYWxWYXIsIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJh
dGUpIFwKKyAgICBtYWNybyhQdXRHbG9iYWxWYXIsIE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlQ2xv
YmJlcnNXb3JsZCkgXAorICAgIG1hY3JvKENoZWNrRnVuY3Rpb24sIE5vZGVNdXN0R2VuZXJhdGUp
IFwKKyAgICBcCisgICAgLyogT3B0aW1pemF0aW9ucyBmb3IgYXJyYXkgbXV0YXRpb24uICovXAor
ICAgIG1hY3JvKEFycmF5UHVzaCwgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSB8IE5v
ZGVDbG9iYmVyc1dvcmxkKSBcCisgICAgbWFjcm8oQXJyYXlQb3AsIE5vZGVSZXN1bHRKUyB8IE5v
ZGVNdXN0R2VuZXJhdGUgfCBOb2RlQ2xvYmJlcnNXb3JsZCkgXAorICAgIFwKKyAgICAvKiBPcHRp
bWl6YXRpb25zIGZvciBzdHJpbmcgYWNjZXNzICovIFwKKyAgICBtYWNybyhTdHJpbmdDaGFyQ29k
ZUF0LCBOb2RlUmVzdWx0SW50MzIpIFwKKyAgICBtYWNybyhTdHJpbmdDaGFyQXQsIE5vZGVSZXN1
bHRKUykgXAorICAgIFwKKyAgICAvKiBOb2RlcyBmb3IgY29tcGFyaXNvbiBvcGVyYXRpb25zLiAq
L1wKKyAgICBtYWNybyhDb21wYXJlTGVzcywgTm9kZVJlc3VsdEJvb2xlYW4gfCBOb2RlTXVzdEdl
bmVyYXRlIHwgTm9kZU1pZ2h0Q2xvYmJlcikgXAorICAgIG1hY3JvKENvbXBhcmVMZXNzRXEsIE5v
ZGVSZXN1bHRCb29sZWFuIHwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVNaWdodENsb2JiZXIpIFwK
KyAgICBtYWNybyhDb21wYXJlR3JlYXRlciwgTm9kZVJlc3VsdEJvb2xlYW4gfCBOb2RlTXVzdEdl
bmVyYXRlIHwgTm9kZU1pZ2h0Q2xvYmJlcikgXAorICAgIG1hY3JvKENvbXBhcmVHcmVhdGVyRXEs
IE5vZGVSZXN1bHRCb29sZWFuIHwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVNaWdodENsb2JiZXIp
IFwKKyAgICBtYWNybyhDb21wYXJlRXEsIE5vZGVSZXN1bHRCb29sZWFuIHwgTm9kZU11c3RHZW5l
cmF0ZSB8IE5vZGVNaWdodENsb2JiZXIpIFwKKyAgICBtYWNybyhDb21wYXJlU3RyaWN0RXEsIE5v
ZGVSZXN1bHRCb29sZWFuKSBcCisgICAgXAorICAgIC8qIENhbGxzLiAqL1wKKyAgICBtYWNybyhD
YWxsLCBOb2RlUmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZUhhc1ZhckFyZ3MgfCBO
b2RlQ2xvYmJlcnNXb3JsZCkgXAorICAgIG1hY3JvKENvbnN0cnVjdCwgTm9kZVJlc3VsdEpTIHwg
Tm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVIYXNWYXJBcmdzIHwgTm9kZUNsb2JiZXJzV29ybGQpIFwK
KyAgICBcCisgICAgLyogQWxsb2NhdGlvbnMuICovXAorICAgIG1hY3JvKE5ld09iamVjdCwgTm9k
ZVJlc3VsdEpTKSBcCisgICAgbWFjcm8oTmV3QXJyYXksIE5vZGVSZXN1bHRKUyB8IE5vZGVIYXNW
YXJBcmdzKSBcCisgICAgbWFjcm8oTmV3QXJyYXlCdWZmZXIsIE5vZGVSZXN1bHRKUykgXAorICAg
IG1hY3JvKE5ld1JlZ2V4cCwgTm9kZVJlc3VsdEpTKSBcCisgICAgXAorICAgIC8qIFJlc29sdmUg
bm9kZXMuICovXAorICAgIG1hY3JvKFJlc29sdmUsIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2Vu
ZXJhdGUgfCBOb2RlQ2xvYmJlcnNXb3JsZCkgXAorICAgIG1hY3JvKFJlc29sdmVCYXNlLCBOb2Rl
UmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZUNsb2JiZXJzV29ybGQpIFwKKyAgICBt
YWNybyhSZXNvbHZlQmFzZVN0cmljdFB1dCwgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0
ZSB8IE5vZGVDbG9iYmVyc1dvcmxkKSBcCisgICAgbWFjcm8oUmVzb2x2ZUdsb2JhbCwgTm9kZVJl
c3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVDbG9iYmVyc1dvcmxkKSBcCisgICAgXAor
ICAgIC8qIE5vZGVzIGZvciBtaXNjIG9wZXJhdGlvbnMuICovXAorICAgIG1hY3JvKEJyZWFrcG9p
bnQsIE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlQ2xvYmJlcnNXb3JsZCkgXAorICAgIG1hY3JvKENo
ZWNrSGFzSW5zdGFuY2UsIE5vZGVNdXN0R2VuZXJhdGUpIFwKKyAgICBtYWNybyhJbnN0YW5jZU9m
LCBOb2RlUmVzdWx0Qm9vbGVhbikgXAorICAgIG1hY3JvKExvZ2ljYWxOb3QsIE5vZGVSZXN1bHRC
b29sZWFuIHwgTm9kZU1pZ2h0Q2xvYmJlcikgXAorICAgIG1hY3JvKFRvUHJpbWl0aXZlLCBOb2Rl
UmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZUNsb2JiZXJzV29ybGQpIFwKKyAgICBt
YWNybyhTdHJDYXQsIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlSGFzVmFy
QXJncyB8IE5vZGVDbG9iYmVyc1dvcmxkKSBcCisgICAgXAorICAgIC8qIE5vZGVzIHVzZWQgZm9y
IGFjdGl2YXRpb25zLiBBY3RpdmF0aW9uIHN1cHBvcnQgd29ya3MgYnkgaGF2aW5nIGl0IGFuY2hv
cmVkIGF0ICovXAorICAgIC8qIGVwaWxnb3VlcyB2aWEgVGVhck9mZkFjdGl2YXRpb24sIGFuZCBh
bGwgQ3JlYXRlQWN0aXZhdGlvbiBub2RlcyBrZXB0IGFsaXZlIGJ5ICovXAorICAgIC8qIGJlaW5n
IHRocmVhZGVkIHdpdGggZWFjaCBvdGhlci4gKi9cCisgICAgbWFjcm8oQ3JlYXRlQWN0aXZhdGlv
biwgTm9kZVJlc3VsdEpTKSBcCisgICAgbWFjcm8oVGVhck9mZkFjdGl2YXRpb24sIE5vZGVNdXN0
R2VuZXJhdGUpIFwKKyAgICBcCisgICAgLyogTm9kZXMgZm9yIGNyZWF0aW5nIGZ1bmN0aW9ucy4g
Ki9cCisgICAgbWFjcm8oTmV3RnVuY3Rpb25Ob0NoZWNrLCBOb2RlUmVzdWx0SlMpIFwKKyAgICBt
YWNybyhOZXdGdW5jdGlvbiwgTm9kZVJlc3VsdEpTKSBcCisgICAgbWFjcm8oTmV3RnVuY3Rpb25F
eHByZXNzaW9uLCBOb2RlUmVzdWx0SlMpIFwKKyAgICBcCisgICAgLyogQmxvY2sgdGVybWluYWxz
LiAqL1wKKyAgICBtYWNybyhKdW1wLCBOb2RlTXVzdEdlbmVyYXRlKSBcCisgICAgbWFjcm8oQnJh
bmNoLCBOb2RlTXVzdEdlbmVyYXRlKSBcCisgICAgbWFjcm8oUmV0dXJuLCBOb2RlTXVzdEdlbmVy
YXRlKSBcCisgICAgbWFjcm8oVGhyb3csIE5vZGVNdXN0R2VuZXJhdGUpIFwKKyAgICBtYWNybyhU
aHJvd1JlZmVyZW5jZUVycm9yLCBOb2RlTXVzdEdlbmVyYXRlKSBcCisgICAgXAorICAgIC8qIFRo
aXMgaXMgYSBwc2V1ZG8tdGVybWluYWwuIEl0IG1lYW5zIHRoYXQgZXhlY3V0aW9uIHNob3VsZCBm
YWxsIG91dCBvZiBERkcgYXQgKi9cCisgICAgLyogdGhpcyBwb2ludCwgYnV0IGV4ZWN1dGlvbiBk
b2VzIGNvbnRpbnVlIGluIHRoZSBiYXNpYyBibG9jayAtIGp1c3QgaW4gYSAqL1wKKyAgICAvKiBk
aWZmZXJlbnQgY29tcGlsZXIuICovXAorICAgIG1hY3JvKEZvcmNlT1NSRXhpdCwgTm9kZU11c3RH
ZW5lcmF0ZSkKKworLy8gVGhpcyBlbnVtIGdlbmVyYXRlcyBhIG1vbm90b25pY2FsbHkgaW5jcmVh
c2luZyBpZCBmb3IgYWxsIE5vZGUgdHlwZXMsCisvLyBhbmQgaXMgdXNlZCBieSB0aGUgc3Vic2Vx
dWVudCBlbnVtIHRvIGZpbGwgb3V0IHRoZSBpZCAoYXMgYWNjZXNzZWQgdmlhIHRoZSBOb2RlSWRN
YXNrKS4KK2VudW0gTm9kZVR5cGUgeworI2RlZmluZSBERkdfT1BfRU5VTShvcGNvZGUsIGZsYWdz
KSBvcGNvZGUsCisgICAgRk9SX0VBQ0hfREZHX09QKERGR19PUF9FTlVNKQorI3VuZGVmIERGR19P
UF9FTlVNCisgICAgTGFzdE5vZGVUeXBlCit9OworCisvLyBTcGVjaWZpZXMgdGhlIGRlZmF1bHQg
ZmxhZ3MgZm9yIGVhY2ggbm9kZS4KK2lubGluZSBOb2RlRmxhZ3MgZGVmYXVsdEZsYWdzKE5vZGVU
eXBlIG9wKQoreworICAgIHN3aXRjaCAob3ApIHsKKyNkZWZpbmUgREZHX09QX0VOVU0ob3Bjb2Rl
LCBmbGFncykgY2FzZSBvcGNvZGU6IHJldHVybiBmbGFnczsKKyAgICBGT1JfRUFDSF9ERkdfT1Ao
REZHX09QX0VOVU0pCisjdW5kZWYgREZHX09QX0VOVU0KKyAgICBkZWZhdWx0OgorICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorfQorCit9IH0g
Ly8gbmFtZXNwYWNlIEpTQzo6REZHCisKKyNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKKworI2Vu
ZGlmIC8vIERGR05vZGVUeXBlX2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAJKHJldmlz
aW9uIDExMDQxOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblBy
b3BhZ2F0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDUsNyArMTA1LDcgQEAgcHJp
dmF0ZToKICAgICAgICAgaWYgKCFub2RlLnNob3VsZEdlbmVyYXRlKCkpCiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIAotICAgICAgICBOb2RlVHlwZSBvcCA9IHN0YXRpY19jYXN0PE5vZGVU
eXBlPihub2RlLm9wKTsKKyAgICAgICAgTm9kZVR5cGUgb3AgPSBub2RlLm9wKCk7CiAKICNpZiBE
RkdfRU5BQkxFKERFQlVHX1BST1BBR0FUSU9OX1ZFUkJPU0UpCiAgICAgICAgIGRhdGFMb2coIiAg
ICVzIEAldTogIiwgR3JhcGg6Om9wTmFtZShvcCksIG1fY29tcGlsZUluZGV4KTsKQEAgLTUwNSw3
ICs1MDUsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCB2b3RlKE5vZGVVc2Ugbm9kZVVzZSwgVmFy
aWFibGVBY2Nlc3NEYXRhOjpCYWxsb3QgYmFsbG90KQogICAgIHsKLSAgICAgICAgc3dpdGNoICht
X2dyYXBoW25vZGVVc2VdLm9wKSB7CisgICAgICAgIHN3aXRjaCAobV9ncmFwaFtub2RlVXNlXS5v
cCgpKSB7CiAgICAgICAgIGNhc2UgVmFsdWVUb0ludDMyOgogICAgICAgICBjYXNlIFVJbnQzMlRv
TnVtYmVyOgogICAgICAgICAgICAgbm9kZVVzZSA9IG1fZ3JhcGhbbm9kZVVzZV0uY2hpbGQxKCk7
CkBAIC01MTQsMTMgKzUxNCwxMyBAQCBwcml2YXRlOgogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KICAgICAgICAgCi0gICAgICAgIGlmIChtX2dyYXBoW25vZGVVc2VdLm9wID09IEdldExv
Y2FsKQorICAgICAgICBpZiAobV9ncmFwaFtub2RlVXNlXS5vcCgpID09IEdldExvY2FsKQogICAg
ICAgICAgICAgbV9ncmFwaFtub2RlVXNlXS52YXJpYWJsZUFjY2Vzc0RhdGEoKS0+dm90ZShiYWxs
b3QpOwogICAgIH0KICAgICAKICAgICB2b2lkIHZvdGUoTm9kZSYgbm9kZSwgVmFyaWFibGVBY2Nl
c3NEYXRhOjpCYWxsb3QgYmFsbG90KQogICAgIHsKLSAgICAgICAgaWYgKG5vZGUuZmxhZ3MgJiBO
b2RlSGFzVmFyQXJncykgeworICAgICAgICBpZiAobm9kZS5mbGFncygpICYgTm9kZUhhc1ZhckFy
Z3MpIHsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgY2hpbGRJZHggPSBub2RlLmZpcnN0Q2hp
bGQoKTsgY2hpbGRJZHggPCBub2RlLmZpcnN0Q2hpbGQoKSArIG5vZGUubnVtQ2hpbGRyZW4oKTsg
Y2hpbGRJZHgrKykKICAgICAgICAgICAgICAgICB2b3RlKG1fZ3JhcGgubV92YXJBcmdDaGlsZHJl
bltjaGlsZElkeF0sIGJhbGxvdCk7CiAgICAgICAgICAgICByZXR1cm47CkBAIC01NDYsNyArNTQ2
LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIG1fZ3JhcGgubV92YXJpYWJsZUFjY2Vzc0RhdGFb
aV0uZmluZCgpLT5jbGVhclZvdGVzKCk7CiAgICAgICAgIGZvciAobV9jb21waWxlSW5kZXggPSAw
OyBtX2NvbXBpbGVJbmRleCA8IG1fZ3JhcGguc2l6ZSgpOyArK21fY29tcGlsZUluZGV4KSB7CiAg
ICAgICAgICAgICBOb2RlJiBub2RlID0gbV9ncmFwaFttX2NvbXBpbGVJbmRleF07Ci0gICAgICAg
ICAgICBzd2l0Y2ggKG5vZGUub3ApIHsKKyAgICAgICAgICAgIHN3aXRjaCAobm9kZS5vcCgpKSB7
CiAgICAgICAgICAgICBjYXNlIFZhbHVlQWRkOgogICAgICAgICAgICAgY2FzZSBBcml0aEFkZDoK
ICAgICAgICAgICAgIGNhc2UgQXJpdGhTdWI6IHsKQEAgLTYyOCw3ICs2MjgsNyBAQCBwcml2YXRl
OgogICAgICAgICBpZiAoIW5vZGUuc2hvdWxkR2VuZXJhdGUoKSkKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgCi0gICAgICAgIE5vZGVUeXBlIG9wID0gc3RhdGljX2Nhc3Q8Tm9kZVR5cGU+
KG5vZGUub3ApOworICAgICAgICBOb2RlVHlwZSBvcCA9IG5vZGUub3AoKTsKIAogI2lmIERGR19F
TkFCTEUoREVCVUdfUFJPUEFHQVRJT05fVkVSQk9TRSkKICAgICAgICAgZGF0YUxvZygiICAgJXMg
QCV1OiAiLCBHcmFwaDo6b3BOYW1lKG9wKSwgbV9jb21waWxlSW5kZXgpOwpAQCAtNjU5LDM0ICs2
NTksMzQgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGRhdGFMb2coIiAgQCV1IC0+ICVzIiwgbV9j
b21waWxlSW5kZXgsIGlzQXJyYXkgPyAiR2V0QXJyYXlMZW5ndGgiIDogIkdldFN0cmluZ0xlbmd0
aCIpOwogI2VuZGlmCiAgICAgICAgICAgICBpZiAoaXNBcnJheSkKLSAgICAgICAgICAgICAgICBu
b2RlLm9wID0gR2V0QXJyYXlMZW5ndGg7CisgICAgICAgICAgICAgICAgbm9kZS5zZXRPcChHZXRB
cnJheUxlbmd0aCk7CiAgICAgICAgICAgICBlbHNlIGlmIChpc1N0cmluZykKLSAgICAgICAgICAg
ICAgICBub2RlLm9wID0gR2V0U3RyaW5nTGVuZ3RoOworICAgICAgICAgICAgICAgIG5vZGUuc2V0
T3AoR2V0U3RyaW5nTGVuZ3RoKTsKICAgICAgICAgICAgIGVsc2UgaWYgKGlzQnl0ZUFycmF5KQot
ICAgICAgICAgICAgICAgIG5vZGUub3AgPSBHZXRCeXRlQXJyYXlMZW5ndGg7CisgICAgICAgICAg
ICAgICAgbm9kZS5zZXRPcChHZXRCeXRlQXJyYXlMZW5ndGgpOwogICAgICAgICAgICAgZWxzZSBp
ZiAoaXNJbnQ4QXJyYXkpCi0gICAgICAgICAgICAgICAgbm9kZS5vcCA9IEdldEludDhBcnJheUxl
bmd0aDsKKyAgICAgICAgICAgICAgICBub2RlLnNldE9wKEdldEludDhBcnJheUxlbmd0aCk7CiAg
ICAgICAgICAgICBlbHNlIGlmIChpc0ludDE2QXJyYXkpCi0gICAgICAgICAgICAgICAgbm9kZS5v
cCA9IEdldEludDE2QXJyYXlMZW5ndGg7CisgICAgICAgICAgICAgICAgbm9kZS5zZXRPcChHZXRJ
bnQxNkFycmF5TGVuZ3RoKTsKICAgICAgICAgICAgIGVsc2UgaWYgKGlzSW50MzJBcnJheSkKLSAg
ICAgICAgICAgICAgICBub2RlLm9wID0gR2V0SW50MzJBcnJheUxlbmd0aDsKKyAgICAgICAgICAg
ICAgICBub2RlLnNldE9wKEdldEludDMyQXJyYXlMZW5ndGgpOwogICAgICAgICAgICAgZWxzZSBp
ZiAoaXNVaW50OEFycmF5KQotICAgICAgICAgICAgICAgIG5vZGUub3AgPSBHZXRVaW50OEFycmF5
TGVuZ3RoOworICAgICAgICAgICAgICAgIG5vZGUuc2V0T3AoR2V0VWludDhBcnJheUxlbmd0aCk7
CiAgICAgICAgICAgICBlbHNlIGlmIChpc1VpbnQ4Q2xhbXBlZEFycmF5KQotICAgICAgICAgICAg
ICAgIG5vZGUub3AgPSBHZXRVaW50OENsYW1wZWRBcnJheUxlbmd0aDsKKyAgICAgICAgICAgICAg
ICBub2RlLnNldE9wKEdldFVpbnQ4Q2xhbXBlZEFycmF5TGVuZ3RoKTsKICAgICAgICAgICAgIGVs
c2UgaWYgKGlzVWludDE2QXJyYXkpCi0gICAgICAgICAgICAgICAgbm9kZS5vcCA9IEdldFVpbnQx
NkFycmF5TGVuZ3RoOworICAgICAgICAgICAgICAgIG5vZGUuc2V0T3AoR2V0VWludDE2QXJyYXlM
ZW5ndGgpOwogICAgICAgICAgICAgZWxzZSBpZiAoaXNVaW50MzJBcnJheSkKLSAgICAgICAgICAg
ICAgICBub2RlLm9wID0gR2V0VWludDMyQXJyYXlMZW5ndGg7CisgICAgICAgICAgICAgICAgbm9k
ZS5zZXRPcChHZXRVaW50MzJBcnJheUxlbmd0aCk7CiAgICAgICAgICAgICBlbHNlIGlmIChpc0Zs
b2F0MzJBcnJheSkKLSAgICAgICAgICAgICAgICBub2RlLm9wID0gR2V0RmxvYXQzMkFycmF5TGVu
Z3RoOworICAgICAgICAgICAgICAgIG5vZGUuc2V0T3AoR2V0RmxvYXQzMkFycmF5TGVuZ3RoKTsK
ICAgICAgICAgICAgIGVsc2UgaWYgKGlzRmxvYXQ2NEFycmF5KQotICAgICAgICAgICAgICAgIG5v
ZGUub3AgPSBHZXRGbG9hdDY0QXJyYXlMZW5ndGg7CisgICAgICAgICAgICAgICAgbm9kZS5zZXRP
cChHZXRGbG9hdDY0QXJyYXlMZW5ndGgpOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgLy8gTm8gbG9uZ2VyIE11c3RH
ZW5lcmF0ZQotICAgICAgICAgICAgQVNTRVJUKG5vZGUuZmxhZ3MgJiBOb2RlTXVzdEdlbmVyYXRl
KTsKLSAgICAgICAgICAgIG5vZGUuZmxhZ3MgJj0gfk5vZGVNdXN0R2VuZXJhdGU7CisgICAgICAg
ICAgICBBU1NFUlQobm9kZS5mbGFncygpICYgTm9kZU11c3RHZW5lcmF0ZSk7CisgICAgICAgICAg
ICBub2RlLmNsZWFyRmxhZ3MoTm9kZU11c3RHZW5lcmF0ZSk7CiAgICAgICAgICAgICBtX2dyYXBo
LmRlcmVmKG1fY29tcGlsZUluZGV4KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBA
IC03MDQsNyArNzA0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBHZXRCeVZhbDoKICAgICAg
ICAgY2FzZSBTdHJpbmdDaGFyQXQ6CiAgICAgICAgIGNhc2UgU3RyaW5nQ2hhckNvZGVBdDogewot
ICAgICAgICAgICAgaWYgKCEhbm9kZS5jaGlsZDMoKSAmJiBtX2dyYXBoW25vZGUuY2hpbGQzKCld
Lm9wID09IE5vcCkKKyAgICAgICAgICAgIGlmICghIW5vZGUuY2hpbGQzKCkgJiYgbV9ncmFwaFtu
b2RlLmNoaWxkMygpXS5vcCgpID09IE5vcCkKICAgICAgICAgICAgICAgICBub2RlLmNoaWxkcmVu
LmNoaWxkMygpID0gTm9kZVVzZSgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUmVkdW5kYW50UGhpRWxpbWluYXRpb25Q
aGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdSZWR1
bmRhbnRQaGlFbGltaW5hdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMTEwNDE5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdSZWR1bmRhbnRQaGlFbGltaW5hdGlvblBoYXNlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNTUsNyArNTUsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBpZiAo
IW5vZGUuc2hvdWxkR2VuZXJhdGUoKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAotICAg
ICAgICAgICAgc3dpdGNoIChub2RlLm9wKSB7CisgICAgICAgICAgICBzd2l0Y2ggKG5vZGUub3Ao
KSkgewogICAgICAgICAgICAgY2FzZSBHZXRMb2NhbDoKICAgICAgICAgICAgICAgICByZXBsYWNl
UGhpQ2hpbGQobm9kZSwgMCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC05NSw3ICs5NSw3
IEBAIHByaXZhdGU6CiAKICAgICAgICAgYm9vbCByZXBsYWNlZCA9IGZhbHNlOwogICAgICAgICBO
b2RlSW5kZXggY2hpbGQgPSBub2RlLmNoaWxkcmVuLmNoaWxkKGNoaWxkSW5kZXgpLmluZGV4VW5j
aGVja2VkKCk7Ci0gICAgICAgIGlmIChjaGlsZCAhPSBOb05vZGUgJiYgbV9ncmFwaFtjaGlsZF0u
b3AgPT0gUGhpKSB7CisgICAgICAgIGlmIChjaGlsZCAhPSBOb05vZGUgJiYgbV9ncmFwaFtjaGls
ZF0ub3AoKSA9PSBQaGkpIHsKICAgICAgICAgICAgIE5vZGVJbmRleCBjaGlsZFJlcGxhY2VtZW50
ID0gZ2V0UmVkdW5kYW50UmVwbGFjZW1lbnQoY2hpbGQpOwogICAgICAgICAgICAgaWYgKGNoaWxk
UmVwbGFjZW1lbnQgIT0gTm9Ob2RlKSB7CiAgICAgICAgICAgICAgICAgbm9kZS5jaGlsZHJlbi5j
aGlsZChjaGlsZEluZGV4KS5zZXRJbmRleChjaGlsZFJlcGxhY2VtZW50KTsKQEAgLTEzOCw3ICsx
MzgsNyBAQCBwcml2YXRlOgogCiAgICAgICAgICAgICBmb3IgKHNpemVfdCBhcmcgPSAwOyBhcmcg
PCBiYXNpY0Jsb2NrLT52YXJpYWJsZXNBdEhlYWQubnVtYmVyT2ZBcmd1bWVudHMoKTsgKythcmcp
IHsKICAgICAgICAgICAgICAgICBOb2RlSW5kZXggbm9kZUluZGV4ID0gYmFzaWNCbG9jay0+dmFy
aWFibGVzQXRIZWFkLmFyZ3VtZW50KGFyZyk7Ci0gICAgICAgICAgICAgICAgaWYgKG5vZGVJbmRl
eCAhPSBOb05vZGUgJiYgbV9ncmFwaFtub2RlSW5kZXhdLm9wID09IFBoaSAmJiAhbV9ncmFwaFtu
b2RlSW5kZXhdLnJlZkNvdW50KCkpIHsKKyAgICAgICAgICAgICAgICBpZiAobm9kZUluZGV4ICE9
IE5vTm9kZSAmJiBtX2dyYXBoW25vZGVJbmRleF0ub3AoKSA9PSBQaGkgJiYgIW1fZ3JhcGhbbm9k
ZUluZGV4XS5yZWZDb3VudCgpKSB7CiAgICAgICAgICAgICAgICAgICAgIE5vZGVJbmRleCByZXBs
YWNlbWVudCA9IGdldFJlZHVuZGFudFJlcGxhY2VtZW50KG5vZGVJbmRleCk7CiAgICAgICAgICAg
ICAgICAgICAgIGlmIChyZXBsYWNlbWVudCAhPSBOb05vZGUpIHsKICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIFRoaXMgYXJndW1lbnQgbXVzdCBiZSB1bnVzZWQgaW4gdGhpcyBibG9jay4KQEAg
LTE1MSw3ICsxNTEsNyBAQCBwcml2YXRlOgogCiAgICAgICAgICAgICBmb3IgKHNpemVfdCBsb2Nh
bCA9IDA7IGxvY2FsIDwgYmFzaWNCbG9jay0+dmFyaWFibGVzQXRIZWFkLm51bWJlck9mTG9jYWxz
KCk7ICsrbG9jYWwpIHsKICAgICAgICAgICAgICAgICBOb2RlSW5kZXggbm9kZUluZGV4ID0gYmFz
aWNCbG9jay0+dmFyaWFibGVzQXRIZWFkLmxvY2FsKGxvY2FsKTsKLSAgICAgICAgICAgICAgICBp
ZiAobm9kZUluZGV4ICE9IE5vTm9kZSAmJiBtX2dyYXBoW25vZGVJbmRleF0ub3AgPT0gUGhpICYm
ICFtX2dyYXBoW25vZGVJbmRleF0ucmVmQ291bnQoKSkgeworICAgICAgICAgICAgICAgIGlmIChu
b2RlSW5kZXggIT0gTm9Ob2RlICYmIG1fZ3JhcGhbbm9kZUluZGV4XS5vcCgpID09IFBoaSAmJiAh
bV9ncmFwaFtub2RlSW5kZXhdLnJlZkNvdW50KCkpIHsKICAgICAgICAgICAgICAgICAgICAgTm9k
ZUluZGV4IHJlcGxhY2VtZW50ID0gZ2V0UmVkdW5kYW50UmVwbGFjZW1lbnQobm9kZUluZGV4KTsK
ICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcGxhY2VtZW50ICE9IE5vTm9kZSkgewogICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gVGhpcyBsb2NhbCB2YXJpYWJsZSBtdXN0IGJlIHVudXNlZCBp
biB0aGlzIGJsb2NrLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVDMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCShyZXZpc2lvbiAxMTA0MTkpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC04OTUsMTggKzg5NSwxOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbChO
b2RlJiBub2RlCiB7CiAgICAgUF9ERkdPcGVyYXRpb25fRSBzbG93Q2FsbEZ1bmN0aW9uOwogCi0g
ICAgaWYgKG5vZGUub3AgPT0gQ2FsbCkKKyAgICBpZiAobm9kZS5vcCgpID09IENhbGwpCiAgICAg
ICAgIHNsb3dDYWxsRnVuY3Rpb24gPSBvcGVyYXRpb25MaW5rQ2FsbDsKICAgICBlbHNlIHsKLSAg
ICAgICAgQVNTRVJUKG5vZGUub3AgPT0gQ29uc3RydWN0KTsKKyAgICAgICAgQVNTRVJUKG5vZGUu
b3AoKSA9PSBDb25zdHJ1Y3QpOwogICAgICAgICBzbG93Q2FsbEZ1bmN0aW9uID0gb3BlcmF0aW9u
TGlua0NvbnN0cnVjdDsKICAgICB9CiAKICAgICAvLyBGb3IgY29uc3RydWN0b3JzLCB0aGUgdGhp
cyBhcmd1bWVudCBpcyBub3QgcGFzc2VkIGJ1dCB3ZSBoYXZlIHRvIG1ha2Ugc3BhY2UKICAgICAv
LyBmb3IgaXQuCi0gICAgaW50IGR1bW15VGhpc0FyZ3VtZW50ID0gbm9kZS5vcCA9PSBDYWxsID8g
MCA6IDE7CisgICAgaW50IGR1bW15VGhpc0FyZ3VtZW50ID0gbm9kZS5vcCgpID09IENhbGwgPyAw
IDogMTsKIAotICAgIENhbGxMaW5rSW5mbzo6Q2FsbFR5cGUgY2FsbFR5cGUgPSBub2RlLm9wID09
IENhbGwgPyBDYWxsTGlua0luZm86OkNhbGwgOiBDYWxsTGlua0luZm86OkNvbnN0cnVjdDsKKyAg
ICBDYWxsTGlua0luZm86OkNhbGxUeXBlIGNhbGxUeXBlID0gbm9kZS5vcCgpID09IENhbGwgPyBD
YWxsTGlua0luZm86OkNhbGwgOiBDYWxsTGlua0luZm86OkNvbnN0cnVjdDsKIAogICAgIE5vZGVV
c2UgY2FsbGVlTm9kZVVzZSA9IG1faml0LmdyYXBoKCkubV92YXJBcmdDaGlsZHJlbltub2RlLmZp
cnN0Q2hpbGQoKV07CiAgICAgSlNWYWx1ZU9wZXJhbmQgY2FsbGVlKHRoaXMsIGNhbGxlZU5vZGVV
c2UpOwpAQCAtMTY0MCw3ICsxNjQwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdEJyYW5j
aChOb2RlJiBubwogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiB7
Ci0gICAgTm9kZVR5cGUgb3AgPSBzdGF0aWNfY2FzdDxOb2RlVHlwZT4obm9kZS5vcCk7CisgICAg
Tm9kZVR5cGUgb3AgPSBub2RlLm9wKCk7CiAKICAgICBzd2l0Y2ggKG9wKSB7CiAgICAgY2FzZSBK
U0NvbnN0YW50OgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVDY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklUNjQuY3BwCShyZXZpc2lvbiAxMTA0MTkpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MTYs
MTggKzkxNiwxOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbChOb2RlJiBub2RlCiB7
CiAgICAgUF9ERkdPcGVyYXRpb25fRSBzbG93Q2FsbEZ1bmN0aW9uOwogCi0gICAgaWYgKG5vZGUu
b3AgPT0gQ2FsbCkKKyAgICBpZiAobm9kZS5vcCgpID09IENhbGwpCiAgICAgICAgIHNsb3dDYWxs
RnVuY3Rpb24gPSBvcGVyYXRpb25MaW5rQ2FsbDsKICAgICBlbHNlIHsKLSAgICAgICAgQVNTRVJU
KG5vZGUub3AgPT0gQ29uc3RydWN0KTsKKyAgICAgICAgQVNTRVJUKG5vZGUub3AoKSA9PSBDb25z
dHJ1Y3QpOwogICAgICAgICBzbG93Q2FsbEZ1bmN0aW9uID0gb3BlcmF0aW9uTGlua0NvbnN0cnVj
dDsKICAgICB9CiAKICAgICAvLyBGb3IgY29uc3RydWN0b3JzLCB0aGUgdGhpcyBhcmd1bWVudCBp
cyBub3QgcGFzc2VkIGJ1dCB3ZSBoYXZlIHRvIG1ha2Ugc3BhY2UKICAgICAvLyBmb3IgaXQuCi0g
ICAgaW50IGR1bW15VGhpc0FyZ3VtZW50ID0gbm9kZS5vcCA9PSBDYWxsID8gMCA6IDE7CisgICAg
aW50IGR1bW15VGhpc0FyZ3VtZW50ID0gbm9kZS5vcCgpID09IENhbGwgPyAwIDogMTsKICAgICAK
LSAgICBDYWxsTGlua0luZm86OkNhbGxUeXBlIGNhbGxUeXBlID0gbm9kZS5vcCA9PSBDYWxsID8g
Q2FsbExpbmtJbmZvOjpDYWxsIDogQ2FsbExpbmtJbmZvOjpDb25zdHJ1Y3Q7CisgICAgQ2FsbExp
bmtJbmZvOjpDYWxsVHlwZSBjYWxsVHlwZSA9IG5vZGUub3AoKSA9PSBDYWxsID8gQ2FsbExpbmtJ
bmZvOjpDYWxsIDogQ2FsbExpbmtJbmZvOjpDb25zdHJ1Y3Q7CiAgICAgCiAgICAgTm9kZVVzZSBj
YWxsZWVOb2RlVXNlID0gbV9qaXQuZ3JhcGgoKS5tX3ZhckFyZ0NoaWxkcmVuW25vZGUuZmlyc3RD
aGlsZCgpXTsKICAgICBKU1ZhbHVlT3BlcmFuZCBjYWxsZWUodGhpcywgY2FsbGVlTm9kZVVzZSk7
CkBAIC0xNzQ0LDcgKzE3NDQsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0QnJhbmNoKE5v
ZGUmIG5vCiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKIHsKLSAg
ICBOb2RlVHlwZSBvcCA9IHN0YXRpY19jYXN0PE5vZGVUeXBlPihub2RlLm9wKTsKKyAgICBOb2Rl
VHlwZSBvcCA9IG5vZGUub3AoKTsKIAogICAgIHN3aXRjaCAob3ApIHsKICAgICBjYXNlIEpTQ29u
c3RhbnQ6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklULmNwcAkocmV2aXNpb24gMTEwNDE5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgzLDcgKzgzLDcgQEAg
R1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3RvcmFnZShOb2RlSQogCiB2b2lkIFNwZWN1bGF0
aXZlSklUOjp1c2VDaGlsZHJlbihOb2RlJiBub2RlKQogewotICAgIGlmIChub2RlLmZsYWdzICYg
Tm9kZUhhc1ZhckFyZ3MpIHsKKyAgICBpZiAobm9kZS5mbGFncygpICYgTm9kZUhhc1ZhckFyZ3Mp
IHsKICAgICAgICAgZm9yICh1bnNpZ25lZCBjaGlsZElkeCA9IG5vZGUuZmlyc3RDaGlsZCgpOyBj
aGlsZElkeCA8IG5vZGUuZmlyc3RDaGlsZCgpICsgbm9kZS5udW1DaGlsZHJlbigpOyBjaGlsZElk
eCsrKQogICAgICAgICAgICAgdXNlKG1faml0LmdyYXBoKCkubV92YXJBcmdDaGlsZHJlbltjaGls
ZElkeF0pOwogICAgIH0gZWxzZSB7CkBAIC04OTAsMTEgKzg5MCwxMSBAQCBib29sIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlUGVlcEhvbGVCcmFuCiAgICAgICAgICAgICBjb21waWxlUGVlcEhvbGVE
b3VibGVCcmFuY2gobm9kZSwgYnJhbmNoTm9kZUluZGV4LCBkb3VibGVDb25kaXRpb24pOwogICAg
ICAgICAgICAgdXNlKG5vZGUuY2hpbGQxKCkpOwogICAgICAgICAgICAgdXNlKG5vZGUuY2hpbGQy
KCkpOwotICAgICAgICB9IGVsc2UgaWYgKG5vZGUub3AgPT0gQ29tcGFyZUVxICYmIE5vZGU6OnNo
b3VsZFNwZWN1bGF0ZUZpbmFsT2JqZWN0KGF0KG5vZGUuY2hpbGQxKCkpLCBhdChub2RlLmNoaWxk
MigpKSkpIHsKKyAgICAgICAgfSBlbHNlIGlmIChub2RlLm9wKCkgPT0gQ29tcGFyZUVxICYmIE5v
ZGU6OnNob3VsZFNwZWN1bGF0ZUZpbmFsT2JqZWN0KGF0KG5vZGUuY2hpbGQxKCkpLCBhdChub2Rl
LmNoaWxkMigpKSkpIHsKICAgICAgICAgICAgIGNvbXBpbGVQZWVwSG9sZU9iamVjdEVxdWFsaXR5
KG5vZGUsIGJyYW5jaE5vZGVJbmRleCwgJkpTRmluYWxPYmplY3Q6OnNfaW5mbywgaXNGaW5hbE9i
amVjdFByZWRpY3Rpb24pOwogICAgICAgICAgICAgdXNlKG5vZGUuY2hpbGQxKCkpOwogICAgICAg
ICAgICAgdXNlKG5vZGUuY2hpbGQyKCkpOwotICAgICAgICB9IGVsc2UgaWYgKG5vZGUub3AgPT0g
Q29tcGFyZUVxICYmIE5vZGU6OnNob3VsZFNwZWN1bGF0ZUFycmF5KGF0KG5vZGUuY2hpbGQxKCkp
LCBhdChub2RlLmNoaWxkMigpKSkpIHsKKyAgICAgICAgfSBlbHNlIGlmIChub2RlLm9wKCkgPT0g
Q29tcGFyZUVxICYmIE5vZGU6OnNob3VsZFNwZWN1bGF0ZUFycmF5KGF0KG5vZGUuY2hpbGQxKCkp
LCBhdChub2RlLmNoaWxkMigpKSkpIHsKICAgICAgICAgICAgIGNvbXBpbGVQZWVwSG9sZU9iamVj
dEVxdWFsaXR5KG5vZGUsIGJyYW5jaE5vZGVJbmRleCwgJkpTQXJyYXk6OnNfaW5mbywgaXNBcnJh
eVByZWRpY3Rpb24pOwogICAgICAgICAgICAgdXNlKG5vZGUuY2hpbGQxKCkpOwogICAgICAgICAg
ICAgdXNlKG5vZGUuY2hpbGQyKCkpOwpAQCAtOTEwLDcgKzkxMCw3IEBAIGJvb2wgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVQZWVwSG9sZUJyYW4KIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZU1vdkhpbnQoTm9kZSYgbm9kZSkKIHsKLSAgICBBU1NFUlQobm9kZS5vcCA9PSBTZXRMb2NhbCk7
CisgICAgQVNTRVJUKG5vZGUub3AoKSA9PSBTZXRMb2NhbCk7CiAgICAgCiAgICAgc2V0Tm9kZUlu
ZGV4Rm9yT3BlcmFuZChub2RlLmNoaWxkMSgpLmluZGV4KCksIG5vZGUubG9jYWwoKSk7CiAgICAg
bV9sYXN0U2V0T3BlcmFuZCA9IG5vZGUubG9jYWwoKTsKQEAgLTk2OSw3ICs5NjksNyBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlKEJhc2ljQmxvY2smCiAjaWYgREZHX0VOQUJMRShERUJV
R19WRVJCT1NFKQogICAgICAgICAgICAgZGF0YUxvZygiU3BlY3VsYXRpdmVKSVQgc2tpcHBpbmcg
Tm9kZSBAJWQgKGJjIyV1KSBhdCBKSVQgb2Zmc2V0IDB4JXggICAgICIsIChpbnQpbV9jb21waWxl
SW5kZXgsIG5vZGUuY29kZU9yaWdpbi5ieXRlY29kZUluZGV4LCBtX2ppdC5kZWJ1Z09mZnNldCgp
KTsKICNlbmRpZgotICAgICAgICAgICAgc3dpdGNoIChub2RlLm9wKSB7CisgICAgICAgICAgICBz
d2l0Y2ggKG5vZGUub3AoKSkgewogICAgICAgICAgICAgY2FzZSBTZXRMb2NhbDoKICAgICAgICAg
ICAgICAgICBjb21waWxlTW92SGludChub2RlKTsKICAgICAgICAgICAgICAgICBicmVhazsKQEAg
LTEwNzYsNyArMTA3Niw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNoZWNrQXJndW1lbnRUeXBl
cygKICAgICBmb3IgKGludCBpID0gMDsgaSA8IG1faml0LmNvZGVCbG9jaygpLT5udW1QYXJhbWV0
ZXJzKCk7ICsraSkgewogICAgICAgICBOb2RlSW5kZXggbm9kZUluZGV4ID0gbV9qaXQuZ3JhcGgo
KS5tX2FyZ3VtZW50c1tpXTsKICAgICAgICAgTm9kZSYgbm9kZSA9IGF0KG5vZGVJbmRleCk7Ci0g
ICAgICAgIEFTU0VSVChub2RlLm9wID09IFNldEFyZ3VtZW50KTsKKyAgICAgICAgQVNTRVJUKG5v
ZGUub3AoKSA9PSBTZXRBcmd1bWVudCk7CiAgICAgICAgIGlmICghbm9kZS5zaG91bGRHZW5lcmF0
ZSgpKSB7CiAgICAgICAgICAgICAvLyBUaGUgYXJndW1lbnQgaXMgZGVhZC4gV2UgZG9uJ3QgZG8g
YW55IGNoZWNrcyBmb3Igc3VjaCBhcmd1bWVudHMuCiAgICAgICAgICAgICBjb250aW51ZTsKQEAg
LTEzMjIsNyArMTMyMiw3IEBAIFZhbHVlUmVjb3ZlcnkgU3BlY3VsYXRpdmVKSVQ6OmNvbXB1dGVW
YWwKICAgICAgICAgCiAgICAgICAgICAgICBib29sIGZvdW5kID0gZmFsc2U7CiAgICAgICAgIAot
ICAgICAgICAgICAgaWYgKG5vZGVQdHItPm9wID09IFVJbnQzMlRvTnVtYmVyKSB7CisgICAgICAg
ICAgICBpZiAobm9kZVB0ci0+b3AoKSA9PSBVSW50MzJUb051bWJlcikgewogICAgICAgICAgICAg
ICAgIE5vZGVJbmRleCBub2RlSW5kZXggPSBub2RlUHRyLT5jaGlsZDEoKS5pbmRleCgpOwogICAg
ICAgICAgICAgICAgIG5vZGVQdHIgPSAmYXQobm9kZUluZGV4KTsKICAgICAgICAgICAgICAgICBp
bmZvUHRyID0gJm1fZ2VuZXJhdGlvbkluZm9bbm9kZVB0ci0+dmlydHVhbFJlZ2lzdGVyKCldOwpA
QCAtMTM0Myw3ICsxMzQzLDcgQEAgVmFsdWVSZWNvdmVyeSBTcGVjdWxhdGl2ZUpJVDo6Y29tcHV0
ZVZhbAogICAgICAgICAgICAgICAgICAgICBOb2RlJiBub2RlID0gYXQoaW5mby5ub2RlSW5kZXgo
KSk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChub2RlLmNoaWxkMVVuY2hlY2tlZCgpICE9IHZh
bHVlU291cmNlLm5vZGVJbmRleCgpKQogICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7
Ci0gICAgICAgICAgICAgICAgICAgIHN3aXRjaCAobm9kZS5vcCkgeworICAgICAgICAgICAgICAg
ICAgICBzd2l0Y2ggKG5vZGUub3AoKSkgewogICAgICAgICAgICAgICAgICAgICBjYXNlIFZhbHVl
VG9JbnQzMjoKICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlVG9JbnQzMkluZGV4ID0gaW5m
by5ub2RlSW5kZXgoKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTU1MCw3
ICsxNTUwLDkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVVJbnQzMlRvTnVtYgogICAg
IHNwZWN1bGF0aW9uQ2hlY2soT3ZlcmZsb3csIEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQu
YnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6Okxlc3NUaGFuLCBvcDEuZ3ByKCksIFRydXN0ZWRJbW0z
MigwKSkpOwogICAgICAgICAKICAgICAvLyBWZXJpZnkgdGhhdCB3ZSBjYW4gZG8gcm9sbCBmb3J3
YXJkLgotICAgIEFTU0VSVChhdChtX2NvbXBpbGVJbmRleCArIDEpLm9wID09IFNldExvY2FsKTsK
KyAgICAvLyBGSVhNRTogVGhpcyBpc24ndCByaWdodCwgc2luY2UgdGhlIG5leHQgbm9kZSBpbiB0
aGUgZ3JhcGggbWF5IG5vdCBhY3R1YWxseSBiZSB0aGUgbmV4dAorICAgIC8vIG5vZGUgaW4gdGhl
IGJhc2ljIGJsb2NrJ3MgZXhlY3V0aW9uIHNlcXVlbmNlLgorICAgIEFTU0VSVChhdChtX2NvbXBp
bGVJbmRleCArIDEpLm9wKCkgPT0gU2V0TG9jYWwpOwogICAgIEFTU0VSVChhdChtX2NvbXBpbGVJ
bmRleCArIDEpLmNvZGVPcmlnaW4gPT0gbm9kZS5jb2RlT3JpZ2luKTsKICAgICBBU1NFUlQoYXQo
bV9jb21waWxlSW5kZXggKyAyKS5jb2RlT3JpZ2luICE9IG5vZGUuY29kZU9yaWdpbik7CiAgICAg
ICAgIApAQCAtMjI5OSw3ICsyMzAxLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFk
ZChOb2RlJiBubwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKG5vZGUub3AgPT0g
VmFsdWVBZGQpIHsKKyAgICBpZiAobm9kZS5vcCgpID09IFZhbHVlQWRkKSB7CiAgICAgICAgIGNv
bXBpbGVWYWx1ZUFkZChub2RlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTI0NzcsOSAr
MjQ3OSw5IEBAIGJvb2wgU3BlY3VsYXRpdmVKSVQ6OmNvbXBhcmUoTm9kZSYgbm9kZSwKICAgICAg
ICAgY29tcGlsZUludGVnZXJDb21wYXJlKG5vZGUsIGNvbmRpdGlvbik7CiAgICAgZWxzZSBpZiAo
Tm9kZTo6c2hvdWxkU3BlY3VsYXRlTnVtYmVyKGF0KG5vZGUuY2hpbGQxKCkpLCBhdChub2RlLmNo
aWxkMigpKSkpCiAgICAgICAgIGNvbXBpbGVEb3VibGVDb21wYXJlKG5vZGUsIGRvdWJsZUNvbmRp
dGlvbik7Ci0gICAgZWxzZSBpZiAobm9kZS5vcCA9PSBDb21wYXJlRXEgJiYgTm9kZTo6c2hvdWxk
U3BlY3VsYXRlRmluYWxPYmplY3QoYXQobm9kZS5jaGlsZDEoKSksIGF0KG5vZGUuY2hpbGQyKCkp
KSkKKyAgICBlbHNlIGlmIChub2RlLm9wKCkgPT0gQ29tcGFyZUVxICYmIE5vZGU6OnNob3VsZFNw
ZWN1bGF0ZUZpbmFsT2JqZWN0KGF0KG5vZGUuY2hpbGQxKCkpLCBhdChub2RlLmNoaWxkMigpKSkp
CiAgICAgICAgIGNvbXBpbGVPYmplY3RFcXVhbGl0eShub2RlLCAmSlNGaW5hbE9iamVjdDo6c19p
bmZvLCBpc0ZpbmFsT2JqZWN0UHJlZGljdGlvbik7Ci0gICAgZWxzZSBpZiAobm9kZS5vcCA9PSBD
b21wYXJlRXEgJiYgTm9kZTo6c2hvdWxkU3BlY3VsYXRlQXJyYXkoYXQobm9kZS5jaGlsZDEoKSks
IGF0KG5vZGUuY2hpbGQyKCkpKSkKKyAgICBlbHNlIGlmIChub2RlLm9wKCkgPT0gQ29tcGFyZUVx
ICYmIE5vZGU6OnNob3VsZFNwZWN1bGF0ZUFycmF5KGF0KG5vZGUuY2hpbGQxKCkpLCBhdChub2Rl
LmNoaWxkMigpKSkpCiAgICAgICAgIGNvbXBpbGVPYmplY3RFcXVhbGl0eShub2RlLCAmSlNBcnJh
eTo6c19pbmZvLCBpc0FycmF5UHJlZGljdGlvbik7CiAgICAgZWxzZQogICAgICAgICBub25TcGVj
dWxhdGl2ZU5vblBlZXBob2xlQ29tcGFyZShub2RlLCBjb25kaXRpb24sIG9wZXJhdGlvbik7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCShy
ZXZpc2lvbiAxMTA0MTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklULmgJKHdvcmtpbmcgY29weSkKQEAgLTg5MCw3ICs4OTAsNyBAQCBwcml2YXRlOgogCiAg
ICAgICAgIC8vIENoZWNrIGlmIHRoZSBsYXN0Tm9kZSBpcyBhIGJyYW5jaCBvbiB0aGlzIG5vZGUu
CiAgICAgICAgIE5vZGUmIGxhc3ROb2RlID0gYXQoYmxvY2stPmxhc3QoKSk7Ci0gICAgICAgIHJl
dHVybiBsYXN0Tm9kZS5vcCA9PSBCcmFuY2ggJiYgbGFzdE5vZGUuY2hpbGQxKCkuaW5kZXgoKSA9
PSBtX2NvbXBpbGVJbmRleCA/IGJsb2NrLT5zaXplKCkgLSAxIDogVUlOVF9NQVg7CisgICAgICAg
IHJldHVybiBsYXN0Tm9kZS5vcCgpID09IEJyYW5jaCAmJiBsYXN0Tm9kZS5jaGlsZDEoKS5pbmRl
eCgpID09IG1fY29tcGlsZUluZGV4ID8gYmxvY2stPnNpemUoKSAtIDEgOiBVSU5UX01BWDsKICAg
ICB9CiAgICAgCiAgICAgdm9pZCBub25TcGVjdWxhdGl2ZVZhbHVlVG9OdW1iZXIoTm9kZSYpOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWaXJ0dWFsUmVnaXN0ZXJBbGxvY2F0
aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
VmlydHVhbFJlZ2lzdGVyQWxsb2NhdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMTEwNDE5KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWaXJ0dWFsUmVnaXN0ZXJBbGxvY2F0aW9uUGhh
c2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NCwxNyArNjQsMTcgQEAgcHVibGljOgogI2VuZGlm
CiAgICAgICAgICAgICAgICAgTm9kZSYgbm9kZSA9IG1fZ3JhcGhbbm9kZUluZGV4XTsKICAgICAg
ICAgCi0gICAgICAgICAgICAgICAgaWYgKCFub2RlLnNob3VsZEdlbmVyYXRlKCkgfHwgbm9kZS5v
cCA9PSBQaGkgfHwgbm9kZS5vcCA9PSBGbHVzaCkKKyAgICAgICAgICAgICAgICBpZiAoIW5vZGUu
c2hvdWxkR2VuZXJhdGUoKSB8fCBub2RlLm9wKCkgPT0gUGhpIHx8IG5vZGUub3AoKSA9PSBGbHVz
aCkKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAKICAgICAgICAg
ICAgICAgICAvLyBHZXRMb2NhbCBub2RlcyBhcmUgZWZmZWN0aXZlbHkgcGhpIG5vZGVzIGluIHRo
ZSBncmFwaCwgcmVmZXJlbmNpbmcKICAgICAgICAgICAgICAgICAvLyByZXN1bHRzIGZyb20gcHJp
b3IgYmxvY2tzLgotICAgICAgICAgICAgICAgIGlmIChub2RlLm9wICE9IEdldExvY2FsKSB7Cisg
ICAgICAgICAgICAgICAgaWYgKG5vZGUub3AoKSAhPSBHZXRMb2NhbCkgewogICAgICAgICAgICAg
ICAgICAgICAvLyBGaXJzdCwgY2FsbCB1c2Ugb24gYWxsIG9mIHRoZSBjdXJyZW50IG5vZGUncyBj
aGlsZHJlbiwgdGhlbgogICAgICAgICAgICAgICAgICAgICAvLyBhbGxvY2F0ZSBhIFZpcnR1YWxS
ZWdpc3RlciBmb3IgdGhpcyBub2RlLiBXZSBkbyBzbyBpbiB0aGlzCiAgICAgICAgICAgICAgICAg
ICAgIC8vIG9yZGVyIHNvIHRoYXQgaWYgYSBjaGlsZCBpcyBvbiBpdHMgbGFzdCB1c2UsIGFuZCBh
CiAgICAgICAgICAgICAgICAgICAgIC8vIFZpcnR1YWxSZWdpc3RlciBpcyBmcmVlZCwgdGhlbiBp
dCBtYXkgYmUgcmV1c2VkIGZvciBub2RlLgotICAgICAgICAgICAgICAgICAgICBpZiAobm9kZS5m
bGFncyAmIE5vZGVIYXNWYXJBcmdzKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChub2RlLmZs
YWdzKCkgJiBOb2RlSGFzVmFyQXJncykgewogICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh1
bnNpZ25lZCBjaGlsZElkeCA9IG5vZGUuZmlyc3RDaGlsZCgpOyBjaGlsZElkeCA8IG5vZGUuZmly
c3RDaGlsZCgpICsgbm9kZS5udW1DaGlsZHJlbigpOyBjaGlsZElkeCsrKQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNjb3JlQm9hcmQudXNlKG1fZ3JhcGgubV92YXJBcmdDaGlsZHJlbltj
aGlsZElkeF0pOwogICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugewo=
</data>
<flag name="review"
          id="134713"
          type_id="1"
          status="+"
          setter="barraclough"
    />
          </attachment>
      

    </bug>

</bugzilla>