<?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>148034</bug_id>
          
          <creation_ts>2015-08-14 12:46:06 -0700</creation_ts>
          <short_desc>[ES6] Implement arrow function syntax. Benchmark tests</short_desc>
          <delta_ts>2016-02-22 12:55:43 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>140855</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="GSkachkov">gskachkov</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>saam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1117718</commentid>
    <comment_count>0</comment_count>
    <who name="GSkachkov">gskachkov</who>
    <bug_when>2015-08-14 12:46:06 -0700</bug_when>
    <thetext>Add arrow function benchmark tests and check performance to ordinary function that used |bind|</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1117983</commentid>
    <comment_count>1</comment_count>
      <attachid>259105</attachid>
    <who name="GSkachkov">gskachkov</who>
    <bug_when>2015-08-15 15:08:02 -0700</bug_when>
    <thetext>Created attachment 259105
Patch

Fix win build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1118028</commentid>
    <comment_count>2</comment_count>
      <attachid>259121</attachid>
    <who name="GSkachkov">gskachkov</who>
    <bug_when>2015-08-16 02:05:15 -0700</bug_when>
    <thetext>Created attachment 259121
Patch

Fix win build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1167156</commentid>
    <comment_count>3</comment_count>
    <who name="GSkachkov">gskachkov</who>
    <bug_when>2016-02-22 12:55:43 -0800</bug_when>
    <thetext>Comment from Saam Barati:
It would be worthwhile to open a bug to rewrite the deltablue benchmark
(or some other benchmark that tests function calling) to use
arrow functions everywhere. That way we can compare that performance
to the performance of just using ordinary functions. And we can track
performance in arrow functions w/ that benchmark.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>259105</attachid>
            <date>2015-08-15 15:08:02 -0700</date>
            <delta_ts>2015-08-16 02:05:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-148034-20150816010740.patch</filename>
            <type>text/plain</type>
            <size>176912</size>
            <attacher name="GSkachkov">gskachkov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg4NDQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
OWFkYmY4ZDQzYmE2ZjZlOTY3YTlmNGYwODQ4YjFmYTFkYjQzMGUyLi44ZTcxZjcxMGQ4MDRmMjA3
MDdmYmRmNGYxNzllMWVmM2YxODAxMThjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOTAgQEAKKzIwMTUtMDgtMTIgQWxla3NhbmRyIFNrYWNoa292ICAgPGdza2FjaGtvdkBn
bWFpbC5jb20+CisKKyAgICAgICAgW0VTNl0gSW1wbGVtZW50IEVTNiBhcnJvdyBmdW5jdGlvbiBz
eW50YXguIEFycm93IGZ1bmN0aW9uIHNwZWNpZmljIGZlYXR1cmVzLiBMZXhpY2FsIGJpbmQgb2Yg
dGhpcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4
MDM0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRk
ZWQgc3VwcG9ydCBvZiBFUzYgYXJyb3cgZnVuY3Rpb24gc3BlY2lmaWMgZmVhdHVyZSwgbGV4aWNh
bCBiaW5kIG9mIHRoaXMgYW5kIG5vIGNvbnN0cnVjdG9yLiBodHRwOi8vd2lraS5lY21hc2NyaXB0
Lm9yZy9kb2t1LnBocD9pZD1oYXJtb255OmFycm93X2Z1bmN0aW9uX3N5bnRheAorICAgICAgICBJ
biBwYXRjaCB3ZXJlIGltcGxlbWVudGVkIHRoZSBmb2xsb3dpbmcgY2FzZXM6CisgICAgICAgICAg
IHRoaXMgLSB2YXJpYWJsZSB8dGhpc3wgaXMgcG9pbnQgdG8gdGhlIHx0aGlzfCBvZiB0aGUgZnVu
Y3Rpb24gd2hlcmUgYXJyb3cgZnVuY3Rpb24gaXMgZGVjbGFyZWQuIExleGljYWwgYmluZCBvZiB8
dGhpc3wKKyAgICAgICAgICAgY29uc3RydWN0b3IgLSB0aGUgdXNpbmcgb2YgdGhlIGNvbW1hbmQg
fG5ld3wgZm9yIGFycm93IGZ1bmN0aW9uIGxlYWRzIHRvIHJ1bnRpbWUgZXJyb3IKKyAgICAgICAg
ICAgY2FsbCgpLCBhcHBseSgpLCBiaW5kKCkgIC0gbWV0aG9kcyBjYW4gb25seSBwYXNzIGluIGFy
Z3VtZW50cywgYnV0IGhhcyBubyBlZmZlY3Qgb24gfHRoaXN8IAorCisKKyAgICAgICAgKiBDTWFr
ZUxpc3RzLnR4dDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRD
b3JlLnZjeHByb2o6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0
Q29yZS52Y3hwcm9qLmZpbHRlcnM6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbjoK
KyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZVVzZURlZi5oOgorICAgICAgICAoSlNDOjpjb21w
dXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Y29tcHV0ZURlZnNGb3JC
eXRlY29kZU9mZnNldCk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAg
ICAgKEpTQzo6Q29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUpOgorICAgICAgICAqIGJ5dGVjb2RlL0V4
ZWN1dGFibGVJbmZvLmg6CisgICAgICAgIChKU0M6OkV4ZWN1dGFibGVJbmZvOjpFeGVjdXRhYmxl
SW5mbyk6CisgICAgICAgIChKU0M6OkV4ZWN1dGFibGVJbmZvOjppc0Fycm93RnVuY3Rpb24pOgor
ICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6
VW5saW5rZWRDb2RlQmxvY2s6OlVubGlua2VkQ29kZUJsb2NrKToKKyAgICAgICAgKiBieXRlY29k
ZS9VbmxpbmtlZENvZGVCbG9jay5oOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6
aXNBcnJvd0Z1bmN0aW9uKToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZS5jcHA6CisgICAgICAgIChKU0M6OmdlbmVyYXRlRnVuY3Rpb25Db2RlQmxvY2spOgor
ICAgICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6VW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGUpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6
Y29kZUJsb2NrRm9yKToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZS5oOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcik6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3RnVuY3Rpb25Db21tb24pOgorICAg
ICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Z1bmN0aW9uRXhwcmVzc2lvbik6
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3QXJyb3dGdW5jdGlvbkV4
cHJlc3Npb24pOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdExvYWRBcnJv
d0Z1bmN0aW9uVGhpcyk6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
Lmg6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHA6CisgICAgICAgIChK
U0M6OkFycm93RnVuY0V4cHJOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAqIGRmZy9ERkdB
YnN0cmFjdEludGVycHJldGVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0
SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAg
ICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29k
ZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgICogZGZnL0RGR0NhcGFiaWxpdGllcy5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6Y2FwYWJpbGl0eUxldmVsKToKKyAgICAgICAgKiBkZmcvREZH
Q2xvYmJlcml6ZS5oOgorICAgICAgICAoSlNDOjpERkc6OmNsb2JiZXJpemUpOgorICAgICAgICAq
IGRmZy9ERkdEb2VzR0MuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmRvZXNHQyk6CisgICAgICAg
ICogZGZnL0RGR0ZpeHVwUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6
OmZpeHVwTm9kZSk6CisgICAgICAgICogZGZnL0RGR05vZGUuaDoKKyAgICAgICAgKEpTQzo6REZH
OjpOb2RlOjpjb252ZXJ0VG9QaGFudG9tTmV3RnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpERkc6
Ok5vZGU6Omhhc0NlbGxPcGVyYW5kKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjppc0Z1bmN0
aW9uQWxsb2NhdGlvbik6CisgICAgICAgICogZGZnL0RGR05vZGVUeXBlLmg6CisgICAgICAgICog
ZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9E
RkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6UHJl
ZGljdGlvblByb3BhZ2F0aW9uUGhhc2U6OnByb3BhZ2F0ZSk6CisgICAgICAgICogZGZnL0RGR1By
b21vdGVkSGVhcExvY2F0aW9uLmNwcDoKKyAgICAgICAgKFdURjo6cHJpbnRJbnRlcm5hbCk6Cisg
ICAgICAgICogZGZnL0RGR1Byb21vdGVkSGVhcExvY2F0aW9uLmg6CisgICAgICAgICogZGZnL0RG
R1NhZmVUb0V4ZWN1dGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpzYWZlVG9FeGVjdXRlKToKKyAg
ICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjpjb21waWxlTG9hZEFycm93RnVuY3Rpb25UaGlzKToKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld0Z1bmN0aW9uQ29tbW9uKToKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld0Z1bmN0aW9uKToKKyAgICAg
ICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6Y2FsbE9wZXJhdGlvbik6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklU
MzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToK
KyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTdG9yZUJhcnJp
ZXJJbnNlcnRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR1N0cnVjdHVyZVJlZ2lzdHJh
dGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTdHJ1Y3R1cmVSZWdpc3RyYXRpb25Q
aGFzZTo6cnVuKToKKyAgICAgICAgKiBmdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHA6
CisgICAgICAgICogZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaDoKKyAgICAgICAgKiBm
dGwvRlRMQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjYW5Db21waWxlKToK
KyAgICAgICAgKiBmdGwvRlRMSW50cmluc2ljUmVwb3NpdG9yeS5oOgorICAgICAgICAqIGZ0bC9G
VExMb3dlckRGR1RvTExWTS5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1Rv
TExWTTo6Y29tcGlsZU5vZGUpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0xM
Vk06OmNvbXBpbGVOZXdGdW5jdGlvbik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRG
R1RvTExWTTo6Y29tcGlsZUxvYWRBcnJvd0Z1bmN0aW9uVGhpcyk6CisgICAgICAgICogZnRsL0ZU
TE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6Om9wZXJhdGlvbk1hdGVyaWFsaXpl
T2JqZWN0SW5PU1IpOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmNwcDoKKyAg
ICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5oOgorICAgICAgICAqIGppdC9KSVQuY3Bw
OgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MpOgorICAgICAgICAq
IGppdC9KSVQuaDoKKyAgICAgICAgKiBqaXQvSklUSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpK
SVQ6OmNhbGxPcGVyYXRpb24pOgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzLmNwcDoKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0X29wX2xvYWRfYXJyb3dmdW5jdGlvbl90aGlzKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0X29wX25ld19mdW5jX2V4cCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dE5ld0Z1bmNFeHByQ29tbW9uKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX25ld19hcnJv
d19mdW5jX2V4cCk6CisgICAgICAgICogaml0L0pJVE9wY29kZXMzMl82NC5jcHA6CisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdF9vcF9sb2FkX2Fycm93ZnVuY3Rpb25fdGhpcyk6CisgICAgICAgICog
aml0L0pJVE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmg6Cisg
ICAgICAgICogbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcDoKKyAgICAgICAgKiBsbGlu
dC9MTEludFNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpMTElOVF9TTE9XX1BB
VEhfREVDTCk6CisgICAgICAgIChKU0M6OkxMSW50OjpzZXRVcENhbGwpOgorICAgICAgICAqIGxs
aW50L0xMSW50U2xvd1BhdGhzLmg6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
ci5hc206CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbToKKyAg
ICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtOgorICAgICAgICAqIHBhcnNl
ci9BU1RCdWlsZGVyLmg6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZUZ1bmN0aW9u
TWV0YWRhdGEpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVBcnJvd0Z1bmN0aW9u
RXhwcik6CisgICAgICAgICogcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaDoKKyAgICAgICAgKEpT
Qzo6QmFzZUZ1bmNFeHByTm9kZTo6QmFzZUZ1bmNFeHByTm9kZSk6CisgICAgICAgIChKU0M6OkZ1
bmNFeHByTm9kZTo6RnVuY0V4cHJOb2RlKToKKyAgICAgICAgKEpTQzo6QXJyb3dGdW5jRXhwck5v
ZGU6OkFycm93RnVuY0V4cHJOb2RlKToKKyAgICAgICAgKiBwYXJzZXIvTm9kZXMuY3BwOgorICAg
ICAgICAoSlNDOjpGdW5jdGlvbk1ldGFkYXRhTm9kZTo6RnVuY3Rpb25NZXRhZGF0YU5vZGUpOgor
ICAgICAgICAqIHBhcnNlci9Ob2Rlcy5oOgorICAgICAgICAoSlNDOjpFeHByZXNzaW9uTm9kZTo6
aXNBcnJvd0Z1bmNFeHByTm9kZSk6CisgICAgICAgICogcGFyc2VyL1BhcnNlci5jcHA6CisgICAg
ICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uQm9keSk6CisgICAgICAg
IChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uSW5mbyk6CisgICAgICAgICog
cGFyc2VyL1N5bnRheENoZWNrZXIuaDoKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3Jl
YXRlRnVuY3Rpb25NZXRhZGF0YSk6CisgICAgICAgICogcnVudGltZS9FeGVjdXRhYmxlLmNwcDoK
KyAgICAgICAgKEpTQzo6U2NyaXB0RXhlY3V0YWJsZTo6bmV3Q29kZUJsb2NrRm9yKToKKyAgICAg
ICAgKiBydW50aW1lL0V4ZWN1dGFibGUuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQXJyb3dGdW5j
dGlvbi5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpKU0Fycm93RnVuY3Rpb246OmRlc3Ryb3kp
OgorICAgICAgICAoSlNDOjpKU0Fycm93RnVuY3Rpb246OmNyZWF0ZSk6CisgICAgICAgIChKU0M6
OkpTQXJyb3dGdW5jdGlvbjo6SlNBcnJvd0Z1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6SlNBcnJv
d0Z1bmN0aW9uOjpjcmVhdGVXaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KToK
KyAgICAgICAgKEpTQzo6SlNBcnJvd0Z1bmN0aW9uOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAg
KEpTQzo6SlNBcnJvd0Z1bmN0aW9uOjpnZXRDb25zdHJ1Y3REYXRhKToKKyAgICAgICAgKiBydW50
aW1lL0pTQXJyb3dGdW5jdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6SlNBcnJvd0Z1bmN0
aW9uOjphbGxvY2F0aW9uU2l6ZSk6CisgICAgICAgIChKU0M6OkpTQXJyb3dGdW5jdGlvbjo6Y3Jl
YXRlSW1wbCk6CisgICAgICAgIChKU0M6OkpTQXJyb3dGdW5jdGlvbjo6Ym91bmRUaGlzKToKKyAg
ICAgICAgKEpTQzo6SlNBcnJvd0Z1bmN0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAo
SlNDOjpKU0Fycm93RnVuY3Rpb246Om9mZnNldE9mVGhpc1ZhbHVlKToKKyAgICAgICAgKiBydW50
aW1lL0pTRnVuY3Rpb24uaDoKKyAgICAgICAgKiBydW50aW1lL0pTRnVuY3Rpb25JbmxpbmVzLmg6
CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OkpTRnVuY3Rpb24pOgorICAgICAgICAqIHJ1bnRp
bWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5p
dCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAg
ICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2Jq
ZWN0OjphcnJvd0Z1bmN0aW9uU3RydWN0dXJlKToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJy
b3dmdW5jdGlvbi1hY3RpdmF0aW9uLXNpbmstb3NyZXhpdC1kZWZhdWx0LXZhbHVlLXRkei1lcnJv
ci5qczogQWRkZWQuCisgICAgICAgICogdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tYWN0aXZh
dGlvbi1zaW5rLW9zcmV4aXQtZGVmYXVsdC12YWx1ZS5qczogQWRkZWQuCisgICAgICAgICogdGVz
dHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tYWN0aXZhdGlvbi1zaW5rLW9zcmV4aXQuanM6IEFkZGVk
LgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWFjdGl2YXRpb24tc2luay5q
czogQWRkZWQuCisgICAgICAgICogdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tYm91bmQuanM6
IEFkZGVkLgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWNhbGwuanM6IEFk
ZGVkLgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWNvbnN0cnVjdG9yLmpz
OiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJp
bmQtdGhpcy0xLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlv
bi1sZXhpY2FsLWJpbmQtdGhpcy0yLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3Mv
YXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy0zLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0
ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy00LmpzOiBBZGRlZC4K
KyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy01
LmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2Fs
LWJpbmQtdGhpcy02LmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5j
dGlvbi1sZXhpY2FsLXRoaXMtYWN0aXZhdGlvbi1zaW5rLW9zcmV4aXQuanM6IEFkZGVkLgorICAg
ICAgICAqIHRlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtdGhpcy1hY3RpdmF0aW9u
LXNpbmsuanM6IEFkZGVkLgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxl
eGljYWwtdGhpcy1zaW5raW5nLW5vLWRvdWJsZS1hbGxvY2F0ZS5qczogQWRkZWQuCisgICAgICAg
ICogdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC10aGlzLXNpbmtpbmctb3NyZXhp
dC5qczogQWRkZWQuCisgICAgICAgICogdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNh
bC10aGlzLXNpbmtpbmctcHV0LmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJy
b3dmdW5jdGlvbi1vdGhlcnMuanM6IEFkZGVkLgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9hcnJv
d2Z1bmN0aW9uLXJ1bi0xMC0xLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJy
b3dmdW5jdGlvbi1ydW4tMTAtMi5qczogQWRkZWQuCisgICAgICAgICogdGVzdHMvc3RyZXNzL2Fy
cm93ZnVuY3Rpb24tcnVuLTEwMDAwLTEuanM6IEFkZGVkLgorICAgICAgICAqIHRlc3RzL3N0cmVz
cy9hcnJvd2Z1bmN0aW9uLXJ1bi0xMDAwMC0yLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9z
dHJlc3MvYXJyb3dmdW5jdGlvbi1zaW5raW5nLW5vLWRvdWJsZS1hbGxvY2F0ZS5qczogQWRkZWQu
CisgICAgICAgICogdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tc2lua2luZy1vc3JleGl0Lmpz
OiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1zaW5raW5nLXB1
dC5qczogQWRkZWQuCisgICAgICAgICogdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tdGR6Lmpz
OiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi10eXBlb2YuanM6
IEFkZGVkLgorCiAyMDE1LTA4LTEzICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAK
ICAgICAgICAgVXNlIFdURjo6TG9jayBhbmQgV1RGOjpDb25kaXRpb24gaW5zdGVhZCBvZiBXVEY6
Ok11dGV4LCBXVEY6OlRocmVhZENvbmRpdGlvbiwgc3RkOjptdXRleCwgYW5kIHN0ZDo6Y29uZGl0
aW9uX3ZhcmlhYmxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0
cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggOWQ0ZDIw
N2U4YzMwNjg1OWUyYWVmYWY5NTBiMTJjYjVhNGE0MmIwZi4uZTZmZmYzYzZkMGVkOTg4MTU0YzI5
MWQ5ZGJmNzdkOGRkNWVhYjNmMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NN
YWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApA
QCAtNTA2LDYgKzUwNiw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9SVU5USU1FX1NPVVJDRVMKICAg
ICBydW50aW1lL0pTQXJyYXlCdWZmZXJQcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9KU0FycmF5
QnVmZmVyVmlldy5jcHAKICAgICBydW50aW1lL0pTQXJyYXlJdGVyYXRvci5jcHAKKyAgICBydW50
aW1lL0pTQXJyb3dGdW5jdGlvbi5jcHAKICAgICBydW50aW1lL0pTQm91bmRGdW5jdGlvbi5jcHAK
ICAgICBydW50aW1lL0pTQ0pTVmFsdWUuY3BwCiAgICAgcnVudGltZS9KU0NhbGxlZS5jcHAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0ph
dmFTY3JpcHRDb3JlLnZjeHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCmluZGV4IDYzYzllM2U1OGViN2JkMmEz
YTk2OWE3ODZlMGM1ZTIzMmRhZmY0NjkuLjM3ZTE4YzZmYjQ2ODJiN2QyYWQxM2YxYmQ4ZGNjNGI1
ZTIzMzIyMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagpAQCAtNzYy
LDYgKzc2Miw3IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTQXJyYXlC
dWZmZXJQcm90b3R5cGUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGlt
ZVxKU0FycmF5QnVmZmVyVmlldy5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxy
dW50aW1lXEpTQm91bmRGdW5jdGlvbi5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
LlxydW50aW1lXEpTQXJyb3dGdW5jdGlvbi5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSIuLlxydW50aW1lXEpTQ0pTVmFsdWUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Li5ccnVudGltZVxKU0NhbGxlZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxy
dW50aW1lXEpTQ2VsbC5jcHAiIC8+CkBAIC0xNTg3LDYgKzE1ODgsNyBAQAogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0FycmF5QnVmZmVyVmlld0lubGluZXMuaCIgLz4KICAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNBcnJheUl0ZXJhdG9yLmgiIC8+CiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTQm91bmRGdW5jdGlvbi5oIiAvPgor
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0Fycm93RnVuY3Rpb24uaCIgLz4K
ICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNDSW5saW5lcy5oIiAvPgogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0NKU1ZhbHVlLmgiIC8+CiAgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTQ0pTVmFsdWVJbmxpbmVzLmgiIC8+CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZh
U2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMKaW5kZXggYzFl
YmI4NDMyNTUwZTgzMzlhN2YzYzI4ZjU2ZDg5YzY5MjQ2MTVhYS4uYjk1MTg2NGM0NzBiNWQ0MjRl
MGFjZTEyOTg3ZmFmNTcxY2QzNWE3ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3Jp
cHRDb3JlLnZjeHByb2ouZmlsdGVycwpAQCAtMjc5Miw2ICsyNzkyLDkgQEAKICAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNBcnJheS5oIj4KICAgICAgIDxGaWx0ZXI+cnVudGlt
ZTwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
cnVudGltZVxKU0Fycm93RnVuY3Rpb24uaCI+CisgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRl
cj4KKyAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVc
SlNCb3VuZEZ1bmN0aW9uLmgiPgogICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CiAgICAg
PC9DbEluY2x1ZGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGU3ZWE4OTZlOTBj
ZGRhOGVjMzczNmZlOWZkOTQyMzNhNmEwNzg4ZjQuLjUwMmI5ZjkzZDgxNTlmNmJhNzg2MTBiMGUx
M2MwYmRlY2FhYmQ1NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMTM4LDYg
KzExMzgsOCBAQAogCQk4NkYzRUVCRjE2OENERTkzMDA3N0I5MkEgLyogT2JqY1J1bnRpbWVFeHRy
YXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2RjNF
RUI2MTY4NTVBNUIwMDc3QjkyQSAvKiBPYmpjUnVudGltZUV4dHJhcy5oICovOyB9OwogCQk4NkZB
OUU5MTE0MkJCQjJFMDAxNzczQjcgLyogSlNCb3VuZEZ1bmN0aW9uLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2RkE5RThGMTQyQkJCMkQwMDE3NzNC
NyAvKiBKU0JvdW5kRnVuY3Rpb24uY3BwICovOyB9OwogCQk4NkZBOUU5MjE0MkJCQjJFMDAxNzcz
QjcgLyogSlNCb3VuZEZ1bmN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA4NkZBOUU5MDE0MkJCQjJFMDAxNzczQjcgLyogSlNCb3VuZEZ1bmN0aW9u
LmggKi87IH07CisJCThCMEY0MjRDMUFCRDZERTIwMDM5MTdFQSAvKiBKU0Fycm93RnVuY3Rpb24u
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOEIwRjQy
NEIxQUJENkRFMjAwMzkxN0VBIC8qIEpTQXJyb3dGdW5jdGlvbi5jcHAgKi87IH07CisJCThCMTQx
ODZEMUI2MjUyN0YwMEZCMjA2OCAvKiBKU0Fycm93RnVuY3Rpb24uaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDhCMEY0MjRBMUFCRDZEMkYwMDM5MTdFQSAv
KiBKU0Fycm93RnVuY3Rpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk5MDIxM0UzRDEyM0E0MEMyMDBENDIyRjMgLyogTWVtb3J5U3RhdGlzdGlj
cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MDIx
M0UzQjEyM0E0MEMyMDBENDIyRjMgLyogTWVtb3J5U3RhdGlzdGljcy5jcHAgKi87IH07CiAJCTkw
MjEzRTNFMTIzQTQwQzIwMEQ0MjJGMyAvKiBNZW1vcnlTdGF0aXN0aWNzLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MDIxM0UzQzEyM0E0MEMyMDBENDIy
RjMgLyogTWVtb3J5U3RhdGlzdGljcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTkzMDUyQzM0MEZCNzkyMTkwMDQ4RkRDMyAvKiBQYXJzZXJBcmVu
YS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzA1
MkMzMjBGQjc5MjE5MDA0OEZEQzMgLyogUGFyc2VyQXJlbmEuY3BwICovOyB9OwpAQCAtMjk1NSw2
ICsyOTU3LDggQEAKIAkJODZGNzVFRkQxNTFDMDYyRjAwN0M5QkEzIC8qIFJlZ0V4cE1hdGNoZXNB
cnJheS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZWdFeHBNYXRj
aGVzQXJyYXkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NkZBOUU4RjE0MkJC
QjJEMDAxNzczQjcgLyogSlNCb3VuZEZ1bmN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEpTQm91bmRGdW5jdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTg2RkE5RTkwMTQyQkJCMkUwMDE3NzNCNyAvKiBKU0JvdW5kRnVuY3Rpb24uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNCb3VuZEZ1bmN0aW9uLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCThCMEY0MjRBMUFCRDZEMkYwMDM5MTdFQSAvKiBKU0Fy
cm93RnVuY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNBcnJvd0Z1bmN0aW9uLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCThCMEY0MjRCMUFCRDZERTIwMDM5MTdFQSAvKiBKU0Fycm93
RnVuY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNBcnJv
d0Z1bmN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTAyMTNFM0IxMjNB
NDBDMjAwRDQyMkYzIC8qIE1lbW9yeVN0YXRpc3RpY3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gTWVtb3J5U3RhdGlzdGljcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTkwMjEzRTNDMTIzQTQwQzIwMEQ0MjJGMyAvKiBNZW1vcnlTdGF0aXN0aWNz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lbW9yeVN0YXRpc3RpY3MuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTMwNTJDMzIwRkI3OTIxOTAwNDhGREMzIC8q
IFBhcnNlckFyZW5hLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBh
cnNlckFyZW5hLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ2NDgsNiArNDY1
Miw4IEBACiAJCQkJQTdCREFFQzUxN0Y0RUExNDAwRjYxNDBDIC8qIEpTQXJyYXlJdGVyYXRvci5o
ICovLAogCQkJCTg2RkE5RThGMTQyQkJCMkQwMDE3NzNCNyAvKiBKU0JvdW5kRnVuY3Rpb24uY3Bw
ICovLAogCQkJCTg2RkE5RTkwMTQyQkJCMkUwMDE3NzNCNyAvKiBKU0JvdW5kRnVuY3Rpb24uaCAq
LywKKwkJCQk4QjBGNDI0QjFBQkQ2REUyMDAzOTE3RUEgLyogSlNBcnJvd0Z1bmN0aW9uLmNwcCAq
LywKKwkJCQk4QjBGNDI0QTFBQkQ2RDJGMDAzOTE3RUEgLyogSlNBcnJvd0Z1bmN0aW9uLmggKi8s
CiAJCQkJNjU3Q0Y0NTYxOUJGNjY2MjAwNEFDQkYyIC8qIEpTQ2FsbGVlLmNwcCAqLywKIAkJCQk2
NTdDRjQ1NzE5QkY2NjYyMDA0QUNCRjIgLyogSlNDYWxsZWUuaCAqLywKIAkJCQlCQzdGOEZCQTBF
MTlEMUVGMDA4NjMyQzAgLyogSlNDZWxsLmNwcCAqLywKQEAgLTY2MzIsNiArNjYzOCw3IEBACiAJ
CQkJQTUwM0ZBMjYxODhFRkZGRDAwMTEwRjE0IC8qIFNjcmlwdERlYnVnU2VydmVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBNTVEOTNBNjE4NTAxMkE4MDA0MDBERUQgLyogU2NyaXB0RnVuY3Rpb25D
YWxsLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTRDRjJGQTE4NEVBRURBMDAyMzdGMTkgLyogU2Ny
aXB0T2JqZWN0LmggaW4gSGVhZGVycyAqLywKKwkJCQk4QjE0MTg2RDFCNjI1MjdGMDBGQjIwNjgg
LyogSlNBcnJvd0Z1bmN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTRDRjJGNjE4NEVBQjI0
MDAyMzdGMTkgLyogU2NyaXB0VmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3Mjk5REE2MTdE
MTI4NTgwMDVGNUZGOSAvKiBTZXRDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc5
MERENkUxODJGNDk5NzAwNTg4ODA3IC8qIFNldEl0ZXJhdG9yUHJvdG90eXBlLmggaW4gSGVhZGVy
cyAqLywKQEAgLTc0ODYsNiArNzQ5Myw3IEBACiAJCQkJMEZGMkNENUIxQjYxQTRGODAwNDk1NUE4
IC8qIERGR011bHRpR2V0QnlPZmZzZXREYXRhLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMjM1
QkRDMTcxNzhFMUMwMDY5MEM3RiAvKiBGVExPU1JFeGl0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTBGMjM1QkRGMTcxNzhFMUMwMDY5MEM3RiAvKiBGVExPU1JFeGl0Q29tcGlsZXIuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJOEIwRjQyNEMxQUJENkRFMjAwMzkxN0VBIC8qIEpTQXJyb3dGdW5jdGlv
bi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkVBMEEyQTE3MDk2Mjk2MDBCQjcyMkMgLyogRlRM
T3V0cHV0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNDg1MzI5MTg3REZERUMwMDgzQjY4NyAv
KiBGVExSZWNvdmVyeU9wY29kZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjZCMUNDMzE4NjJD
NDc4MDA4NDVEOTcgLyogRlRMUmVnaXN0ZXJBdE9mZnNldC5jcHAgaW4gU291cmNlcyAqLywKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNv
biBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgppbmRl
eCAyY2Y3NTNiYjgyYzA2YjBkMDgwMjAzNmZjNDk1ZmJmZjYyMjAwNTYyLi4yYzUwYzQxY2RjMGNk
YmY1OGE3YWQ2OTFjNjQwNTI2Y2U4YmQwMWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24KKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uCkBAIC05NCw2ICs5NCw3IEBACiAgICAgICAg
ICAgICB7ICJuYW1lIiA6ICJvcF9zd2l0Y2hfc3RyaW5nIiwgImxlbmd0aCIgOiA0IH0sCiAgICAg
ICAgICAgICB7ICJuYW1lIiA6ICJvcF9uZXdfZnVuYyIsICJsZW5ndGgiIDogNCB9LAogICAgICAg
ICAgICAgeyAibmFtZSIgOiAib3BfbmV3X2Z1bmNfZXhwIiwgImxlbmd0aCIgOiA0IH0sCisgICAg
ICAgICAgICB7ICJuYW1lIiA6ICJvcF9uZXdfYXJyb3dfZnVuY19leHAiLCAibGVuZ3RoIiA6IDUg
fSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2NhbGwiLCAibGVuZ3RoIiA6IDkgfSwKICAg
ICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2NhbGxfZXZhbCIsICJsZW5ndGgiIDogOSB9LAogICAg
ICAgICAgICAgeyAibmFtZSIgOiAib3BfY2FsbF92YXJhcmdzIiwgImxlbmd0aCIgOiA5IH0sCkBA
IC0xMjcsNyArMTI4LDggQEAKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2dldF9wcm9wZXJ0
eV9lbnVtZXJhdG9yIiwgImxlbmd0aCIgOiAzIH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJv
cF9lbnVtZXJhdG9yX3N0cnVjdHVyZV9wbmFtZSIsICJsZW5ndGgiIDogNCB9LAogICAgICAgICAg
ICAgeyAibmFtZSIgOiAib3BfZW51bWVyYXRvcl9nZW5lcmljX3BuYW1lIiwgImxlbmd0aCIgOiA0
IH0sCi0gICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF90b19pbmRleF9zdHJpbmciLCAibGVuZ3Ro
IiA6IDMgfQorICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfdG9faW5kZXhfc3RyaW5nIiwgImxl
bmd0aCIgOiAzIH0sCisgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9sb2FkX2Fycm93ZnVuY3Rp
b25fdGhpcyIsICJsZW5ndGgiIDogMiB9CiAgICAgICAgIF0KICAgICB9LAogICAgIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKaW5kZXggMDM4
M2EwZmJkY2VjZDgyMDdlYzk2YzkwNDEwNzgyMzY1OTkxMjY3Yi4uOGZlNzhlN2ZhMWQyNTkxNjUz
YTA5ZjNkYTNiMzkxNjYxN2VlYzNjYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKQEAgLTU1LDYgKzU1LDcgQEAgdm9pZCBjb21wdXRlVXNl
c0ZvckJ5dGVjb2RlT2Zmc2V0KAogICAgIGNhc2Ugb3BfY3JlYXRlX291dF9vZl9iYW5kX2FyZ3Vt
ZW50czoKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2Ugb3BfZ2V0X3Njb3BlOgorICAgIGNhc2Ug
b3BfbG9hZF9hcnJvd2Z1bmN0aW9uX3RoaXM6CiAgICAgY2FzZSBvcF90b190aGlzOgogICAgIGNh
c2Ugb3BfY2hlY2tfdGR6OgogICAgIGNhc2Ugb3BfcHJvZmlsZV93aWxsX2NhbGw6CkBAIC0xMTUs
NiArMTE2LDcgQEAgdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KAogICAgIGNhc2Ug
b3BfZ2V0X3Byb3BlcnR5X2VudW1lcmF0b3I6CiAgICAgY2FzZSBvcF9nZXRfZW51bWVyYWJsZV9s
ZW5ndGg6CiAgICAgY2FzZSBvcF9uZXdfZnVuY19leHA6CisgICAgY2FzZSBvcF9uZXdfYXJyb3df
ZnVuY19leHA6CiAgICAgY2FzZSBvcF90b19pbmRleF9zdHJpbmc6CiAgICAgY2FzZSBvcF9jcmVh
dGVfbGV4aWNhbF9lbnZpcm9ubWVudDoKICAgICBjYXNlIG9wX3Jlc29sdmVfc2NvcGU6CkBAIC0z
MDUsNiArMzA3LDcgQEAgdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9j
ayogY29kZUJsb2NrLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwKICAgICBjYXNlIG9wX25ld19y
ZWdleHA6CiAgICAgY2FzZSBvcF9uZXdfZnVuYzoKICAgICBjYXNlIG9wX25ld19mdW5jX2V4cDoK
KyAgICBjYXNlIG9wX25ld19hcnJvd19mdW5jX2V4cDoKICAgICBjYXNlIG9wX2NhbGxfdmFyYXJn
czoKICAgICBjYXNlIG9wX2NvbnN0cnVjdF92YXJhcmdzOgogICAgIGNhc2Ugb3BfZ2V0X2Zyb21f
c2NvcGU6CkBAIC0zNTgsNiArMzYxLDcgQEAgdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zm
c2V0KENvZGVCbG9jayogY29kZUJsb2NrLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwKICAgICBj
YXNlIG9wX3RvX3RoaXM6CiAgICAgY2FzZSBvcF9jaGVja190ZHo6CiAgICAgY2FzZSBvcF9nZXRf
c2NvcGU6CisgICAgY2FzZSBvcF9sb2FkX2Fycm93ZnVuY3Rpb25fdGhpczoKICAgICBjYXNlIG9w
X2NyZWF0ZV9kaXJlY3RfYXJndW1lbnRzOgogICAgIGNhc2Ugb3BfY3JlYXRlX3Njb3BlZF9hcmd1
bWVudHM6CiAgICAgY2FzZSBvcF9jcmVhdGVfb3V0X29mX2JhbmRfYXJndW1lbnRzOgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAppbmRleCAzMjcyYWRmOGJk
MWY2MTU3MDc5YzJmMTk3MmJlYmEyNTg3MDRkNTJjLi5jYzkxZDgwZGY2Y2Y5YmU3M2RiOWY0MmEx
OGQyMjJhZTg5NGZiNWZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmNwcApAQCAtNzU3LDYgKzc1NywxMSBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVj
b2RlKAogICAgICAgICAgICAgcHJpbnRMb2NhdGlvbk9wQW5kUmVnaXN0ZXJPcGVyYW5kKG91dCwg
ZXhlYywgbG9jYXRpb24sIGl0LCAiZ2V0X3Njb3BlIiwgcjApOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KKyAgICAgICAgY2FzZSBvcF9sb2FkX2Fycm93ZnVuY3Rpb25fdGhpczogewor
ICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICBwcmlu
dExvY2F0aW9uT3BBbmRSZWdpc3Rlck9wZXJhbmQob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJs
b2FkX2Fycm93ZnVuY3Rpb25fdGhpcyIsIHIwKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICB9CiAgICAgICAgIGNhc2Ugb3BfY3JlYXRlX2RpcmVjdF9hcmd1bWVudHM6IHsKICAgICAgICAg
ICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgcHJpbnRMb2NhdGlv
bkFuZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAiY3JlYXRlX2RpcmVjdF9hcmd1bWVudHMi
KTsKQEAgLTEyODYsNiArMTI5MSwxNSBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKAog
ICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICVzLCBmJWQiLCByZWdpc3Rlck5hbWUocjApLmRh
dGEoKSwgcmVnaXN0ZXJOYW1lKHIxKS5kYXRhKCksIGYwKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CisgICAgICAgIGNhc2Ugb3BfbmV3X2Fycm93X2Z1bmNfZXhwOiB7CisgICAgICAg
ICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIGludCByMSA9ICgr
K2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAgaW50IGYwID0gKCsraXQpLT51Lm9wZXJhbmQ7
CisgICAgICAgICAgICBpbnQgcjIgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIHBy
aW50TG9jYXRpb25BbmRPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgIm9wX25ld19hcnJvd19m
dW5jX2V4cCIpOworICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICVzLCBmJWQsICVzIiwgcmVn
aXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpLCBmMCwgcmVnaXN0
ZXJOYW1lKHIyKS5kYXRhKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICAgICAg
ICAgY2FzZSBvcF9uZXdfZnVuY19leHA6IHsKICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+
dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhlY3V0YWJsZUluZm8uaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRhYmxlSW5mby5oCmluZGV4IGM1
NmE3NzAwODhmY2QyMmE5ZGFmYjJhNzg1MDAxMWM1NzNkOTU3MDEuLjkyMTQ0Zjg5ZmJkNDUwZmU4
MjA1MDBjMmEwOTY5YjUwYjEwMmExNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9FeGVjdXRhYmxlSW5mby5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9FeGVjdXRhYmxlSW5mby5oCkBAIC0zMSwxMyArMzEsMTQgQEAKIG5hbWVzcGFjZSBK
U0MgewogCiBzdHJ1Y3QgRXhlY3V0YWJsZUluZm8gewotICAgIEV4ZWN1dGFibGVJbmZvKGJvb2wg
bmVlZHNBY3RpdmF0aW9uLCBib29sIHVzZXNFdmFsLCBib29sIGlzU3RyaWN0TW9kZSwgYm9vbCBp
c0NvbnN0cnVjdG9yLCBib29sIGlzQnVpbHRpbkZ1bmN0aW9uLCBDb25zdHJ1Y3RvcktpbmQgY29u
c3RydWN0b3JLaW5kKQorICAgIEV4ZWN1dGFibGVJbmZvKGJvb2wgbmVlZHNBY3RpdmF0aW9uLCBi
b29sIHVzZXNFdmFsLCBib29sIGlzU3RyaWN0TW9kZSwgYm9vbCBpc0NvbnN0cnVjdG9yLCBib29s
IGlzQnVpbHRpbkZ1bmN0aW9uLCBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCBib29s
IGlzQXJyb3dGdW5jdGlvbikKICAgICAgICAgOiBtX25lZWRzQWN0aXZhdGlvbihuZWVkc0FjdGl2
YXRpb24pCiAgICAgICAgICwgbV91c2VzRXZhbCh1c2VzRXZhbCkKICAgICAgICAgLCBtX2lzU3Ry
aWN0TW9kZShpc1N0cmljdE1vZGUpCiAgICAgICAgICwgbV9pc0NvbnN0cnVjdG9yKGlzQ29uc3Ry
dWN0b3IpCiAgICAgICAgICwgbV9pc0J1aWx0aW5GdW5jdGlvbihpc0J1aWx0aW5GdW5jdGlvbikK
ICAgICAgICAgLCBtX2NvbnN0cnVjdG9yS2luZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY29uc3Ry
dWN0b3JLaW5kKSkKKyAgICAgICAgLCBtX2lzQXJyb3dGdW5jdGlvbihpc0Fycm93RnVuY3Rpb24p
CiAgICAgewogICAgICAgICBBU1NFUlQobV9jb25zdHJ1Y3RvcktpbmQgPT0gc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KGNvbnN0cnVjdG9yS2luZCkpOwogICAgIH0KQEAgLTQ4LDYgKzQ5LDcgQEAgc3Ry
dWN0IEV4ZWN1dGFibGVJbmZvIHsKICAgICBib29sIGlzQ29uc3RydWN0b3IoKSBjb25zdCB7IHJl
dHVybiBtX2lzQ29uc3RydWN0b3I7IH0KICAgICBib29sIGlzQnVpbHRpbkZ1bmN0aW9uKCkgY29u
c3QgeyByZXR1cm4gbV9pc0J1aWx0aW5GdW5jdGlvbjsgfQogICAgIENvbnN0cnVjdG9yS2luZCBj
b25zdHJ1Y3RvcktpbmQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxDb25zdHJ1Y3Rvcktp
bmQ+KG1fY29uc3RydWN0b3JLaW5kKTsgfQorICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uKCkgY29u
c3QgeyByZXR1cm4gbV9pc0Fycm93RnVuY3Rpb247IH0KIAogcHJpdmF0ZToKICAgICB1bnNpZ25l
ZCBtX25lZWRzQWN0aXZhdGlvbiA6IDE7CkBAIC01Niw2ICs1OCw3IEBAIHByaXZhdGU6CiAgICAg
dW5zaWduZWQgbV9pc0NvbnN0cnVjdG9yIDogMTsKICAgICB1bnNpZ25lZCBtX2lzQnVpbHRpbkZ1
bmN0aW9uIDogMTsKICAgICB1bnNpZ25lZCBtX2NvbnN0cnVjdG9yS2luZCA6IDI7CisgICAgdW5z
aWduZWQgbV9pc0Fycm93RnVuY3Rpb24gOiAxOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxv
Y2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2Nr
LmNwcAppbmRleCA3Mzk1OWNmZDk0OWFlZTNhNWJhOTAzYzlkOTgzMDczZDIyNTE5ZjEzLi41NzRi
MWU0ODIzODk4YjM4MDE0ZDUxODI5ZWFiN2Y3MTMwOWRiYjBhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKQEAgLTY0LDYg
KzY0LDcgQEAgVW5saW5rZWRDb2RlQmxvY2s6OlVubGlua2VkQ29kZUJsb2NrKFZNKiB2bSwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIENvZGVUeXBlIGNvZGUKICAgICAsIG1faGFzQ2FwdHVyZWRWYXJp
YWJsZXMoZmFsc2UpCiAgICAgLCBtX2lzQnVpbHRpbkZ1bmN0aW9uKGluZm8uaXNCdWlsdGluRnVu
Y3Rpb24oKSkKICAgICAsIG1fY29uc3RydWN0b3JLaW5kKHN0YXRpY19jYXN0PHVuc2lnbmVkPihp
bmZvLmNvbnN0cnVjdG9yS2luZCgpKSkKKyAgICAsIG1faXNBcnJvd0Z1bmN0aW9uKGluZm8uaXNB
cnJvd0Z1bmN0aW9uKCkpCiAgICAgLCBtX2ZpcnN0TGluZSgwKQogICAgICwgbV9saW5lQ291bnQo
MCkKICAgICAsIG1fZW5kQ29sdW1uKFVJTlRfTUFYKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAppbmRleCA1NTJlZDg0YTJkNGQ1ZDlm
ZDc4ODhjYjZmYWI4MzNlZjY0YzRjYzIxLi4zMjJkMjYxOTlmNzk3YzEwMzgxZGQ0NTg5M2JkNTM1
M2ZmMWI2YjQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRDb2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRDb2RlQmxvY2suaApAQCAtMTE4LDYgKzExOCw3IEBAIHB1YmxpYzoKICAgICBib29sIGlz
Q29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBtX2lzQ29uc3RydWN0b3I7IH0KICAgICBib29s
IGlzU3RyaWN0TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNTdHJpY3RNb2RlOyB9CiAgICAgYm9v
bCB1c2VzRXZhbCgpIGNvbnN0IHsgcmV0dXJuIG1fdXNlc0V2YWw7IH0KKyAgICBib29sIGlzQXJy
b3dGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNBcnJvd0Z1bmN0aW9uOyB9CiAKICAgICBi
b29sIG5lZWRzRnVsbFNjb3BlQ2hhaW4oKSBjb25zdCB7IHJldHVybiBtX25lZWRzRnVsbFNjb3Bl
Q2hhaW47IH0KIApAQCAtMzkxLDYgKzM5Miw3IEBAIHByaXZhdGU6CiAgICAgdW5zaWduZWQgbV9o
YXNDYXB0dXJlZFZhcmlhYmxlcyA6IDE7CiAgICAgdW5zaWduZWQgbV9pc0J1aWx0aW5GdW5jdGlv
biA6IDE7CiAgICAgdW5zaWduZWQgbV9jb25zdHJ1Y3RvcktpbmQgOiAyOworICAgIHVuc2lnbmVk
IG1faXNBcnJvd0Z1bmN0aW9uIDogMTsKIAogICAgIHVuc2lnbmVkIG1fZmlyc3RMaW5lOwogICAg
IHVuc2lnbmVkIG1fbGluZUNvdW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAKaW5kZXggMTg5
MWNiOGM1Yzk5MmY0M2Y2ZGMxZDVkZTA1MTlmZDExOTFmN2YyMS4uZTkzNWVkODkzYzJjMDk1NmZk
MWM2OWYzM2JkMTY4NmVlNTFhMWU3ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwCkBAIC01
MCw3ICs1MCw3IEBAIGNvbnN0IENsYXNzSW5mbyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6
c19pbmZvID0geyAiVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFiCiBzdGF0aWMgVW5saW5rZWRGdW5j
dGlvbkNvZGVCbG9jayogZ2VuZXJhdGVGdW5jdGlvbkNvZGVCbG9jaygKICAgICBWTSYgdm0sIFVu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBjb25zdCBTb3VyY2VDb2RlJiBz
b3VyY2UsCiAgICAgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kLCBEZWJ1Z2dlck1vZGUgZGVi
dWdnZXJNb2RlLCBQcm9maWxlck1vZGUgcHJvZmlsZXJNb2RlLAotICAgIFVubGlua2VkRnVuY3Rp
b25LaW5kIGZ1bmN0aW9uS2luZCwgUGFyc2VyRXJyb3ImIGVycm9yKQorICAgIFVubGlua2VkRnVu
Y3Rpb25LaW5kIGZ1bmN0aW9uS2luZCwgUGFyc2VyRXJyb3ImIGVycm9yLCBib29sIGlzQXJyb3dG
dW5jdGlvbikKIHsKICAgICBKU1BhcnNlckJ1aWx0aW5Nb2RlIGJ1aWx0aW5Nb2RlID0gZXhlY3V0
YWJsZS0+aXNCdWlsdGluRnVuY3Rpb24oKSA/IEpTUGFyc2VyQnVpbHRpbk1vZGU6OkJ1aWx0aW4g
OiBKU1BhcnNlckJ1aWx0aW5Nb2RlOjpOb3RCdWlsdGluOwogICAgIEpTUGFyc2VyU3RyaWN0TW9k
ZSBzdHJpY3RNb2RlID0gZXhlY3V0YWJsZS0+aXNJblN0cmljdENvbnRleHQoKSA/IEpTUGFyc2Vy
U3RyaWN0TW9kZTo6U3RyaWN0IDogSlNQYXJzZXJTdHJpY3RNb2RlOjpOb3RTdHJpY3Q7CkBAIC02
Nyw3ICs2Nyw3IEBAIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBnZW5lcmF0ZUZ1
bmN0aW9uQ29kZUJsb2NrKAogICAgIGV4ZWN1dGFibGUtPnJlY29yZFBhcnNlKGZ1bmN0aW9uLT5m
ZWF0dXJlcygpLCBmdW5jdGlvbi0+aGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSk7CiAgICAgCiAgICAg
VW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogcmVzdWx0ID0gVW5saW5rZWRGdW5jdGlvbkNvZGVC
bG9jazo6Y3JlYXRlKCZ2bSwgRnVuY3Rpb25Db2RlLAotICAgICAgICBFeGVjdXRhYmxlSW5mbyhm
dW5jdGlvbi0+bmVlZHNBY3RpdmF0aW9uKCksIGZ1bmN0aW9uLT51c2VzRXZhbCgpLCBmdW5jdGlv
bi0+aXNTdHJpY3RNb2RlKCksIGtpbmQgPT0gQ29kZUZvckNvbnN0cnVjdCwgZnVuY3Rpb25LaW5k
ID09IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9uLCBleGVjdXRhYmxlLT5jb25zdHJ1Y3RvcktpbmQo
KSkpOworICAgICAgICBFeGVjdXRhYmxlSW5mbyhmdW5jdGlvbi0+bmVlZHNBY3RpdmF0aW9uKCks
IGZ1bmN0aW9uLT51c2VzRXZhbCgpLCBmdW5jdGlvbi0+aXNTdHJpY3RNb2RlKCksIGtpbmQgPT0g
Q29kZUZvckNvbnN0cnVjdCwgZnVuY3Rpb25LaW5kID09IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9u
LCBleGVjdXRhYmxlLT5jb25zdHJ1Y3RvcktpbmQoKSwgaXNBcnJvd0Z1bmN0aW9uKSk7CiAgICAg
YXV0byBnZW5lcmF0b3Ioc3RkOjptYWtlX3VuaXF1ZTxCeXRlY29kZUdlbmVyYXRvcj4odm0sIGZ1
bmN0aW9uLmdldCgpLCByZXN1bHQsIGRlYnVnZ2VyTW9kZSwgcHJvZmlsZXJNb2RlLCBleGVjdXRh
YmxlLT5wYXJlbnRTY29wZVREWlZhcmlhYmxlcygpKSk7CiAgICAgZXJyb3IgPSBnZW5lcmF0b3It
PmdlbmVyYXRlKCk7CiAgICAgaWYgKGVycm9yLmlzVmFsaWQoKSkKQEAgLTk5LDYgKzk5LDcgQEAg
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKFZN
KiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3QKICAgICAsIG1fY29uc3RydWN0QWJpbGl0eShzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oY29uc3RydWN0QWJpbGl0eSkpCiAgICAgLCBtX2NvbnN0cnVjdG9yS2lu
ZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4obm9kZS0+Y29uc3RydWN0b3JLaW5kKCkpKQogICAgICwg
bV9mdW5jdGlvbk1vZGUobm9kZS0+ZnVuY3Rpb25Nb2RlKCkpCisgICAgLCBtX2lzQXJyb3dGdW5j
dGlvbihub2RlLT5pc0Fycm93RnVuY3Rpb24oKSkKIHsKICAgICBBU1NFUlQobV9jb25zdHJ1Y3Rv
cktpbmQgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG5vZGUtPmNvbnN0cnVjdG9yS2luZCgpKSk7
CiAgICAgbV9wYXJlbnRTY29wZVREWlZhcmlhYmxlcy5zd2FwKHBhcmVudFNjb3BlVERaVmFyaWFi
bGVzKTsKQEAgLTE3OSw3ICsxODAsNyBAQCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmZyb21HbG9iYWxDb2RlKAogCiBVbmxpbmtlZEZ1bmN0
aW9uQ29kZUJsb2NrKiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29kZUJsb2NrRm9yKAog
ICAgIFZNJiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBDb2RlU3BlY2lhbGl6YXRpb25L
aW5kIHNwZWNpYWxpemF0aW9uS2luZCwgCi0gICAgRGVidWdnZXJNb2RlIGRlYnVnZ2VyTW9kZSwg
UHJvZmlsZXJNb2RlIHByb2ZpbGVyTW9kZSwgUGFyc2VyRXJyb3ImIGVycm9yKQorICAgIERlYnVn
Z2VyTW9kZSBkZWJ1Z2dlck1vZGUsIFByb2ZpbGVyTW9kZSBwcm9maWxlck1vZGUsIFBhcnNlckVy
cm9yJiBlcnJvciwgYm9vbCBpc0Fycm93RnVuY3Rpb24pCiB7CiAgICAgc3dpdGNoIChzcGVjaWFs
aXphdGlvbktpbmQpIHsKICAgICBjYXNlIENvZGVGb3JDYWxsOgpAQCAtMTk1LDcgKzE5Niw3IEBA
IFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpj
b2RlQmxvY2tGb3IoCiAgICAgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogcmVzdWx0ID0gZ2Vu
ZXJhdGVGdW5jdGlvbkNvZGVCbG9jaygKICAgICAgICAgdm0sIHRoaXMsIHNvdXJjZSwgc3BlY2lh
bGl6YXRpb25LaW5kLCBkZWJ1Z2dlck1vZGUsIHByb2ZpbGVyTW9kZSwgCiAgICAgICAgIGlzQnVp
bHRpbkZ1bmN0aW9uKCkgPyBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlvbiA6IFVubGlua2VkTm9ybWFs
RnVuY3Rpb24sIAotICAgICAgICBlcnJvcik7CisgICAgICAgIGVycm9yLCBpc0Fycm93RnVuY3Rp
b24pOwogICAgIAogICAgIGlmIChlcnJvci5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaAppbmRleCA2ZWFlOWYwYTJkMGRlYzg1MjNhYjJlOGNk
NmEzMjVmY2FjYTIwZTU0Li40ZTA1NGIyMDI1NzMyYWU2ZDhlOWM3MTU4MWUyMjNhMjNkOTg4YTk2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaApAQCAtOTQsNyArOTQsNyBAQCBwdWJsaWM6CiAKICAg
ICBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBjb2RlQmxvY2tGb3IoCiAgICAgICAgIFZNJiwg
Y29uc3QgU291cmNlQ29kZSYsIENvZGVTcGVjaWFsaXphdGlvbktpbmQsIERlYnVnZ2VyTW9kZSwg
UHJvZmlsZXJNb2RlLCAKLSAgICAgICAgUGFyc2VyRXJyb3ImKTsKKyAgICAgICAgUGFyc2VyRXJy
b3ImLCBib29sKTsKIAogICAgIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZnJv
bUdsb2JhbENvZGUoCiAgICAgICAgIGNvbnN0IElkZW50aWZpZXImLCBFeGVjU3RhdGUmLCBjb25z
dCBTb3VyY2VDb2RlJiwgSlNPYmplY3QqJiBleGNlcHRpb24sIApAQCAtMTI0LDYgKzEyNCw3IEBA
IHB1YmxpYzoKICAgICBDb25zdHJ1Y3RBYmlsaXR5IGNvbnN0cnVjdEFiaWxpdHkoKSBjb25zdCB7
IHJldHVybiBzdGF0aWNfY2FzdDxDb25zdHJ1Y3RBYmlsaXR5PihtX2NvbnN0cnVjdEFiaWxpdHkp
OyB9CiAgICAgYm9vbCBpc0NsYXNzQ29uc3RydWN0b3JGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJu
IGNvbnN0cnVjdG9yS2luZCgpICE9IENvbnN0cnVjdG9yS2luZDo6Tm9uZTsgfQogICAgIGNvbnN0
IFZhcmlhYmxlRW52aXJvbm1lbnQqIHBhcmVudFNjb3BlVERaVmFyaWFibGVzKCkgY29uc3QgeyBy
ZXR1cm4gJm1fcGFyZW50U2NvcGVURFpWYXJpYWJsZXM7IH0KKyAgICBib29sIGlzQXJyb3dGdW5j
dGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNBcnJvd0Z1bmN0aW9uOyB9CiAKIHByaXZhdGU6CiAg
ICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUoVk0qLCBTdHJ1Y3R1cmUqLCBjb25zdCBTb3Vy
Y2VDb2RlJiwgUmVmUHRyPFNvdXJjZVByb3ZpZGVyPiYmIHNvdXJjZU92ZXJyaWRlLCBGdW5jdGlv
bk1ldGFkYXRhTm9kZSosIFVubGlua2VkRnVuY3Rpb25LaW5kLCBDb25zdHJ1Y3RBYmlsaXR5LCBW
YXJpYWJsZUVudmlyb25tZW50Jik7CkBAIC0xNTYsNiArMTU3LDcgQEAgcHJpdmF0ZToKICAgICB1
bnNpZ25lZCBtX2NvbnN0cnVjdEFiaWxpdHk6IDE7CiAgICAgdW5zaWduZWQgbV9jb25zdHJ1Y3Rv
cktpbmQgOiAyOwogICAgIHVuc2lnbmVkIG1fZnVuY3Rpb25Nb2RlIDogMTsgLy8gRnVuY3Rpb25N
b2RlCisgICAgdW5zaWduZWQgbV9pc0Fycm93RnVuY3Rpb24gOiAxOwogCiBwcm90ZWN0ZWQ6CiAg
ICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYgdm0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCmluZGV4IDYwZTA2
MDU1M2U3YWE4ZjI3YjU0YTU1YmM3NWIyNGJlOTk0ZTI2YWEuLjAzOGI1MDljMzEzODNkMmMyZmFm
OGIwM2FmZWUxYWI1NzA1MGFjMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC00NzAsMjAgKzQ3MCwy
NSBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlv
bk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZQogICAgIH0KIAogICAgIG1fbmV3VGFyZ2V0UmVn
aXN0ZXIgPSBhZGRWYXIoKTsKLSAgICBpZiAoaXNDb25zdHJ1Y3RvcigpKSB7Ci0gICAgICAgIGVt
aXRNb3ZlKG1fbmV3VGFyZ2V0UmVnaXN0ZXIsICZtX3RoaXNSZWdpc3Rlcik7Ci0gICAgICAgIGlm
IChjb25zdHJ1Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3RvcktpbmQ6OkRlcml2ZWQpIHsKLSAgICAg
ICAgICAgIGVtaXRNb3ZlRW1wdHlWYWx1ZSgmbV90aGlzUmVnaXN0ZXIpOwotICAgICAgICB9IGVs
c2UKLSAgICAgICAgICAgIGVtaXRDcmVhdGVUaGlzKCZtX3RoaXNSZWdpc3Rlcik7Ci0gICAgfSBl
bHNlIGlmIChjb25zdHJ1Y3RvcktpbmQoKSAhPSBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUpIHsKLSAg
ICAgICAgZW1pdFRocm93VHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGNvbnN0cnVjdG9y
Iik7Ci0gICAgfSBlbHNlIGlmIChmdW5jdGlvbk5vZGUtPnVzZXNUaGlzKCkgfHwgY29kZUJsb2Nr
LT51c2VzRXZhbCgpKSB7Ci0gICAgICAgIG1fY29kZUJsb2NrLT5hZGRQcm9wZXJ0eUFjY2Vzc0lu
c3RydWN0aW9uKGluc3RydWN0aW9ucygpLnNpemUoKSk7Ci0gICAgICAgIGVtaXRPcGNvZGUob3Bf
dG9fdGhpcyk7Ci0gICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChraWxsKCZtX3RoaXNSZWdp
c3RlcikpOwotICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7Ci0gICAgICAgIGluc3Ry
dWN0aW9ucygpLmFwcGVuZCgwKTsKKyAgICBpZiAoIWNvZGVCbG9jay0+aXNBcnJvd0Z1bmN0aW9u
KCkpIHsKKyAgICAgICAgaWYgKGlzQ29uc3RydWN0b3IoKSkgeworICAgICAgICAgICAgZW1pdE1v
dmUobV9uZXdUYXJnZXRSZWdpc3RlciwgJm1fdGhpc1JlZ2lzdGVyKTsKKyAgICAgICAgICAgIGlm
IChjb25zdHJ1Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3RvcktpbmQ6OkRlcml2ZWQpCisgICAgICAg
ICAgICAgICAgZW1pdE1vdmVFbXB0eVZhbHVlKCZtX3RoaXNSZWdpc3Rlcik7CisgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgZW1pdENyZWF0ZVRoaXMoJm1fdGhpc1JlZ2lzdGVyKTsK
KyAgICAgICAgfSBlbHNlIGlmIChjb25zdHJ1Y3RvcktpbmQoKSAhPSBDb25zdHJ1Y3RvcktpbmQ6
Ok5vbmUpIHsKKyAgICAgICAgICAgIGVtaXRUaHJvd1R5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBj
bGFzcyBjb25zdHJ1Y3RvciIpOworICAgICAgICB9IGVsc2UgaWYgKGZ1bmN0aW9uTm9kZS0+dXNl
c1RoaXMoKSB8fCBjb2RlQmxvY2stPnVzZXNFdmFsKCkpIHsKKyAgICAgICAgICAgIG1fY29kZUJs
b2NrLT5hZGRQcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uKGluc3RydWN0aW9ucygpLnNpemUoKSk7
CisgICAgICAgICAgICBlbWl0T3Bjb2RlKG9wX3RvX3RoaXMpOworICAgICAgICAgICAgaW5zdHJ1
Y3Rpb25zKCkuYXBwZW5kKGtpbGwoJm1fdGhpc1JlZ2lzdGVyKSk7CisgICAgICAgICAgICBpbnN0
cnVjdGlvbnMoKS5hcHBlbmQoMCk7CisgICAgICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQo
MCk7CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBpZiAoZnVuY3Rpb25Ob2RlLT51
c2VzVGhpcygpIHx8IGNvZGVCbG9jay0+dXNlc0V2YWwoKSkKKyAgICAgICAgICAgIGVtaXRMb2Fk
QXJyb3dGdW5jdGlvblRoaXMoJm1fdGhpc1JlZ2lzdGVyKTsKICAgICB9CiAKICAgICAvLyBBbGwg
ImFkZFZhcigpInMgbmVlZHMgdG8gaGFwcGVuIGJlZm9yZSAiaW5pdGlhbGl6ZURlZmF1bHRQYXJh
bWV0ZXJWYWx1ZXNBbmRTZXR1cEZ1bmN0aW9uU2NvcGVTdGFjaygpIiBpcyBjYWxsZWQKQEAgLTIy
NTQsMTYgKzIyNTksMzcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdS
ZWdFeHAoUmVnaXN0ZXJJRCogZHN0LCBSZWdFeHAqIHJlZ0V4cCkKICAgICByZXR1cm4gZHN0Owog
fQogCi1SZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Z1bmN0aW9uRXhwcmVz
c2lvbihSZWdpc3RlcklEKiByMCwgRnVuY0V4cHJOb2RlKiBuKQordm9pZCBCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdE5ld0Z1bmN0aW9uQ29tbW9uKFJlZ2lzdGVySUQqIGRzdCwgQmFzZUZ1bmNFeHBy
Tm9kZSogZnVuYywgT3Bjb2RlSUQgb3Bjb2RlSUQpCiB7Ci0gICAgRnVuY3Rpb25NZXRhZGF0YU5v
ZGUqIG1ldGFkYXRhID0gbi0+bWV0YWRhdGEoKTsKLSAgICB1bnNpZ25lZCBpbmRleCA9IG1fY29k
ZUJsb2NrLT5hZGRGdW5jdGlvbkV4cHIobWFrZUZ1bmN0aW9uKG1ldGFkYXRhKSk7CiAKLSAgICBl
bWl0T3Bjb2RlKG9wX25ld19mdW5jX2V4cCk7Ci0gICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHIw
LT5pbmRleCgpKTsKKyAgICBBU1NFUlQob3Bjb2RlSUQgPT0gb3BfbmV3X2Z1bmNfZXhwIHx8IG9w
Y29kZUlEID09IG9wX25ld19hcnJvd19mdW5jX2V4cCk7CisgICAgCisgICAgRnVuY3Rpb25NZXRh
ZGF0YU5vZGUqIGZ1bmN0aW9uID0gZnVuYy0+bWV0YWRhdGEoKTsKKyAgICB1bnNpZ25lZCBpbmRl
eCA9IG1fY29kZUJsb2NrLT5hZGRGdW5jdGlvbkV4cHIobWFrZUZ1bmN0aW9uKGZ1bmN0aW9uKSk7
CisgICAgCisgICAgZW1pdE9wY29kZShvcGNvZGVJRCk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBw
ZW5kKGRzdC0+aW5kZXgoKSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHNjb3BlUmVnaXN0
ZXIoKS0+aW5kZXgoKSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGluZGV4KTsKLSAgICBy
ZXR1cm4gcjA7CisgICAgCisgICAgaWYgKG9wY29kZUlEID09IG9wX25ld19hcnJvd19mdW5jX2V4
cCkKKyAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHRoaXNSZWdpc3RlcigpLT5pbmRleCgp
KTsKK30KKworUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdGdW5jdGlvbkV4
cHJlc3Npb24oUmVnaXN0ZXJJRCogZHN0LCBGdW5jRXhwck5vZGUqIGZ1bmMpCit7CisgICAgZW1p
dE5ld0Z1bmN0aW9uQ29tbW9uKGRzdCwgZnVuYywgb3BfbmV3X2Z1bmNfZXhwKTsKKyAgICByZXR1
cm4gZHN0OworfQorCitSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Fycm93
RnVuY3Rpb25FeHByZXNzaW9uKFJlZ2lzdGVySUQqIGRzdCwgQXJyb3dGdW5jRXhwck5vZGUqIGZ1
bmMpCit7CisgICAgYm9vbCBpc0NsYXNzQ29uc3RydWN0b3IgPSBtX2NvZGVCbG9jay0+aXNDb25z
dHJ1Y3RvcigpICYmIGNvbnN0cnVjdG9yS2luZCgpICE9IENvbnN0cnVjdG9yS2luZDo6Tm9uZTsK
KyAgICBpZiAoaXNDbGFzc0NvbnN0cnVjdG9yKQorICAgICAgICBlbWl0VERaQ2hlY2sodGhpc1Jl
Z2lzdGVyKCkpOworICAgIAorICAgIGVtaXROZXdGdW5jdGlvbkNvbW1vbihkc3QsIGZ1bmMsIG9w
X25ld19hcnJvd19mdW5jX2V4cCk7CisgICAgcmV0dXJuIGRzdDsKIH0KIAogUmVnaXN0ZXJJRCog
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdEZWZhdWx0Q29uc3RydWN0b3IoUmVnaXN0ZXJJRCog
ZHN0LCBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCBjb25zdCBJZGVudGlmaWVyJiBu
YW1lKQpAQCAtMjgzOSw2ICsyODY1LDEzIEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmFsbG9j
YXRlQW5kRW1pdFNjb3BlKCkKICAgICBlbWl0TW92ZShtX3RvcE1vc3RTY29wZSwgc2NvcGVSZWdp
c3RlcigpKTsKIH0KIAorUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRMb2FkQXJy
b3dGdW5jdGlvblRoaXMoUmVnaXN0ZXJJRCogYXJyb3dGdW5jdGlvblRoaXMpCit7CisgICAgZW1p
dE9wY29kZShvcF9sb2FkX2Fycm93ZnVuY3Rpb25fdGhpcyk7CisgICAgaW5zdHJ1Y3Rpb25zKCku
YXBwZW5kKGFycm93RnVuY3Rpb25UaGlzLT5pbmRleCgpKTsKKyAgICByZXR1cm4gYXJyb3dGdW5j
dGlvblRoaXM7Cit9CisgICAgCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q29tcGxleFBv
cFNjb3BlcyhSZWdpc3RlcklEKiBzY29wZSwgQ29udHJvbEZsb3dDb250ZXh0KiB0b3BTY29wZSwg
Q29udHJvbEZsb3dDb250ZXh0KiBib3R0b21TY29wZSkKIHsKICAgICB3aGlsZSAodG9wU2NvcGUg
PiBib3R0b21TY29wZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCmluZGV4IDMzYTE1YzFmZjliMTA1MzVkMDQxNDdm
MWFmNmYyNmRjZDgxNTQ5YTUuLjk3OTNkOGY5NTNhYzY3MTIzOTM2YmY0N2YyMzgwOWFiM2FhNWU1
MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmgKQEAgLTQ4MSw2ICs0ODEsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgUmVnaXN0ZXJJRCogZW1pdE5ld0Z1bmN0aW9uSW50ZXJuYWwoUmVnaXN0ZXJJRCogZHN0
LCB1bnNpZ25lZCBpbmRleCk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXROZXdGdW5jdGlvbkV4
cHJlc3Npb24oUmVnaXN0ZXJJRCogZHN0LCBGdW5jRXhwck5vZGUqIGZ1bmMpOwogICAgICAgICBS
ZWdpc3RlcklEKiBlbWl0TmV3RGVmYXVsdENvbnN0cnVjdG9yKFJlZ2lzdGVySUQqIGRzdCwgQ29u
c3RydWN0b3JLaW5kLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lKTsKKyAgICAgICAgdm9pZCBlbWl0
TmV3RnVuY3Rpb25Db21tb24oUmVnaXN0ZXJJRCosIEJhc2VGdW5jRXhwck5vZGUqLCBPcGNvZGVJ
RCk7CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXROZXdBcnJvd0Z1bmN0aW9uRXhwcmVzc2lvbihS
ZWdpc3RlcklEKiwgQXJyb3dGdW5jRXhwck5vZGUqKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1p
dE5ld1JlZ0V4cChSZWdpc3RlcklEKiBkc3QsIFJlZ0V4cCopOwogCiAgICAgICAgIFJlZ2lzdGVy
SUQqIGVtaXRNb3ZlTGlua1RpbWVDb25zdGFudChSZWdpc3RlcklEKiBkc3QsIExpbmtUaW1lQ29u
c3RhbnQpOwpAQCAtNjYzLDYgKzY2NSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBBTFdB
WVNfSU5MSU5FIHZvaWQgcmV3aW5kVW5hcnlPcCgpOwogCiAgICAgICAgIHZvaWQgYWxsb2NhdGVB
bmRFbWl0U2NvcGUoKTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdExvYWRBcnJvd0Z1bmN0aW9u
VGhpcyhSZWdpc3RlcklEKik7CiAgICAgICAgIHZvaWQgZW1pdENvbXBsZXhQb3BTY29wZXMoUmVn
aXN0ZXJJRCosIENvbnRyb2xGbG93Q29udGV4dCogdG9wU2NvcGUsIENvbnRyb2xGbG93Q29udGV4
dCogYm90dG9tU2NvcGUpOwogCiAgICAgICAgIHR5cGVkZWYgSGFzaE1hcDxkb3VibGUsIEpTVmFs
dWU+IE51bWJlck1hcDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvTm9kZXNDb2RlZ2VuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvTm9kZXNDb2RlZ2VuLmNwcAppbmRleCA0NzdmYTVjNzMwNTY0NzA0MGMwNTc5ZDExMTM2YmMz
Yjk3OWQyNWFkLi41NDg4MmQ5NDU5YmE1MGI2Y2NlYWZiMzI4OWNmYjAwNzM3NjliYmQ4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4u
Y3BwCkBAIC0yOTYwLDYgKzI5NjAsMTMgQEAgUmVnaXN0ZXJJRCogRnVuY0V4cHJOb2RlOjplbWl0
Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCoKICAgICBy
ZXR1cm4gZ2VuZXJhdG9yLmVtaXROZXdGdW5jdGlvbkV4cHJlc3Npb24oZ2VuZXJhdG9yLmZpbmFs
RGVzdGluYXRpb24oZHN0KSwgdGhpcyk7CiB9CiAKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLSBBcnJvd0Z1bmNFeHByTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KKworUmVnaXN0ZXJJRCogQXJyb3dGdW5jRXhwck5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29k
ZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCit7CisgICAgcmV0dXJuIGdl
bmVyYXRvci5lbWl0TmV3QXJyb3dGdW5jdGlvbkV4cHJlc3Npb24oZ2VuZXJhdG9yLmZpbmFsRGVz
dGluYXRpb24oZHN0KSwgdGhpcyk7Cit9CisgICAgCiAjaWYgRU5BQkxFKEVTNl9DTEFTU19TWU5U
QVgpCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQ2xhc3NEZWNsTm9kZSAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCmluZGV4IDkz
MjUzNDgyNjFjMmQyMDUxZDIyYzc4YWFiZTIzZjhhYTBhN2FjZjAuLjFiZDhmNjk0MGUyMGMzYzYy
ODU2NDc0NmI4MDA4YzkyZTZlMzgzMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKQEAgLTE2ODIsNyAr
MTY4MiwxMiBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+Ojpl
eGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgIGNhc2UgQ3JlYXRlQ2xvbmVk
QXJndW1lbnRzOgogICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUobV9ncmFwaCwgU3BlY09i
amVjdE90aGVyKTsKICAgICAgICAgYnJlYWs7Ci0gICAgICAgIAorICAgICAgICAgICAgCisgICAg
Y2FzZSBOZXdBcnJvd0Z1bmN0aW9uOgorICAgICAgICBmb3JOb2RlKG5vZGUpLnNldCgKKyAgICAg
ICAgICAgIG1fZ3JhcGgsIG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKS0+YXJyb3dGdW5jdGlvblN0cnVjdHVyZSgpKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAKICAgICBjYXNlIE5ld0Z1bmN0aW9uOgogICAgICAgICBmb3JOb2RlKG5vZGUp
LnNldCgKICAgICAgICAgICAgIG1fZ3JhcGgsIG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3RGb3Io
bm9kZS0+b3JpZ2luLnNlbWFudGljKS0+ZnVuY3Rpb25TdHJ1Y3R1cmUoKSk7CkBAIC0xNzQzLDYg
KzE3NDgsMTUgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6
ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICAgICAgZm9yTm9kZShub2Rl
KS5zZXRUeXBlKG1fZ3JhcGgsIFNwZWNPYmplY3RPdGhlcik7CiAgICAgICAgIGJyZWFrOwogCisg
ICAgY2FzZSBMb2FkQXJyb3dGdW5jdGlvblRoaXM6CisgICAgICAgIGlmIChKU1ZhbHVlIGJhc2Ug
PSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3ZhbHVlKSB7CisgICAgICAgICAgICBKU0Fycm93
RnVuY3Rpb24qIGZ1bmN0aW9uID0ganNEeW5hbWljQ2FzdDxKU0Fycm93RnVuY3Rpb24qPihiYXNl
KTsKKyAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsICptX2dyYXBoLmZyZWV6ZShmdW5jdGlv
bi0+Ym91bmRUaGlzKCkpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAg
IGZvck5vZGUobm9kZSkuc2V0VHlwZShtX2dyYXBoLCBTcGVjRmluYWxPYmplY3QpOworICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIAogICAgIGNhc2UgU2tpcFNjb3BlOiB7CiAgICAgICAgIEpT
VmFsdWUgY2hpbGQgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS52YWx1ZSgpOwogICAgICAgICBp
ZiAoY2hpbGQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0
ZUNvZGVQYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBh
cnNlci5jcHAKaW5kZXggYTU2MzM3Yzc5YTZmZDJkNDRkYzlhMTQ5OTk3MjA0YTg0NDVhNjA3Zi4u
NTNlMWJlZmRiMTU5OTQ1MzU5ODc2NjAxNWZiMmNiZTlhNTMzM2VhYyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKQEAgLTQwNzksNiArNDA3
OSwxNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQog
ICAgICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5v
cGVyYW5kKSwgcmVzdWx0KTsKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2dldF9zY29wZSk7
CiAgICAgICAgIH0KKworICAgICAgICBjYXNlIG9wX2xvYWRfYXJyb3dmdW5jdGlvbl90aGlzOiB7
CisgICAgICAgICAgICBOb2RlKiBjYWxsZWUgPSBnZXQoVmlydHVhbFJlZ2lzdGVyKEpTU3RhY2s6
OkNhbGxlZSkpOworICAgICAgICAgICAgTm9kZSogcmVzdWx0OworICAgICAgICAgICAgaWYgKEpT
QXJyb3dGdW5jdGlvbiogZnVuY3Rpb24gPSBjYWxsZWUtPmR5bmFtaWNDYXN0Q29uc3RhbnQ8SlNB
cnJvd0Z1bmN0aW9uKj4oKSkKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBqc0NvbnN0YW50KGZ1
bmN0aW9uLT5ib3VuZFRoaXMoKSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
cmVzdWx0ID0gYWRkVG9HcmFwaChMb2FkQXJyb3dGdW5jdGlvblRoaXMsIGNhbGxlZSk7CisgICAg
ICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJh
bmQpLCByZXN1bHQpOworICAgICAgICAgICAgTkVYVF9PUENPREUob3BfbG9hZF9hcnJvd2Z1bmN0
aW9uX3RoaXMpOworICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBvcF9jcmVh
dGVfZGlyZWN0X2FyZ3VtZW50czogewogICAgICAgICAgICAgbm90aWNlQXJndW1lbnRzVXNlKCk7
CkBAIC00MTM2LDYgKzQxNDcsMTggQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1
bnNpZ25lZCBsaW1pdCkKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX25ld19mdW5jX2V4cCk7
CiAgICAgICAgIH0KIAorICAgICAgICBjYXNlIG9wX25ld19hcnJvd19mdW5jX2V4cDogeworICAg
ICAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBleHByID0gbV9pbmxpbmVTdGFja1RvcC0+bV9w
cm9maWxlZEJsb2NrLT5mdW5jdGlvbkV4cHIoY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFu
ZCk7CisgICAgICAgICAgICBGcm96ZW5WYWx1ZSogZnJvemVuID0gbV9ncmFwaC5mcmVlemVTdHJv
bmcoZXhwcik7CisKKyAgICAgICAgICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3Ry
dWN0aW9uWzFdLnUub3BlcmFuZCksCisgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChOZXdBcnJv
d0Z1bmN0aW9uLCBPcEluZm8oZnJvemVuKSwKKyAgICAgICAgICAgICAgICAgICAgZ2V0KFZpcnR1
YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKSksCisgICAgICAgICAg
ICAgICAgICAgIGdldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzRdLnUub3Bl
cmFuZCkpKSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX25ld19h
cnJvd19mdW5jX2V4cCk7CisgICAgICAgIH0KKwogICAgICAgICBjYXNlIG9wX3R5cGVvZjogewog
ICAgICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5v
cGVyYW5kKSwKICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKFR5cGVPZiwgZ2V0KFZpcnR1YWxS
ZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKSkpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAppbmRleCBmOWI1ZTc3NTViYjA1
YTM4M2M5NmJlMjdjNjgxYTkzNjZkNWE2MmVlLi43ZjU0MzA4NDg1MjkxNTkzZmI3NWY2YmJjMDY5
YmFhM2I2Y2QxMzI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nh
cGFiaWxpdGllcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmls
aXRpZXMuY3BwCkBAIC0xOTMsNiArMTkzLDcgQEAgQ2FwYWJpbGl0eUxldmVsIGNhcGFiaWxpdHlM
ZXZlbChPcGNvZGVJRCBvcGNvZGVJRCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEluc3RydWMKICAg
ICBjYXNlIG9wX3N3aXRjaF9jaGFyOgogICAgIGNhc2Ugb3BfaW46CiAgICAgY2FzZSBvcF9nZXRf
c2NvcGU6CisgICAgY2FzZSBvcF9sb2FkX2Fycm93ZnVuY3Rpb25fdGhpczoKICAgICBjYXNlIG9w
X2dldF9mcm9tX3Njb3BlOgogICAgIGNhc2Ugb3BfZ2V0X2VudW1lcmFibGVfbGVuZ3RoOgogICAg
IGNhc2Ugb3BfaGFzX2dlbmVyaWNfcHJvcGVydHk6CkBAIC0yMDUsNiArMjA2LDcgQEAgQ2FwYWJp
bGl0eUxldmVsIGNhcGFiaWxpdHlMZXZlbChPcGNvZGVJRCBvcGNvZGVJRCwgQ29kZUJsb2NrKiBj
b2RlQmxvY2ssIEluc3RydWMKICAgICBjYXNlIG9wX3RvX2luZGV4X3N0cmluZzoKICAgICBjYXNl
IG9wX25ld19mdW5jOgogICAgIGNhc2Ugb3BfbmV3X2Z1bmNfZXhwOgorICAgIGNhc2Ugb3BfbmV3
X2Fycm93X2Z1bmNfZXhwOgogICAgIGNhc2Ugb3BfY3JlYXRlX2xleGljYWxfZW52aXJvbm1lbnQ6
CiAgICAgY2FzZSBvcF9nZXRfcGFyZW50X3Njb3BlOgogICAgICAgICByZXR1cm4gQ2FuQ29tcGls
ZUFuZElubGluZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xv
YmJlcml6ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKaW5k
ZXggODVjNTdlNWRjMGNmOWZiODkyZjhmYzU2ZDg1NDI2NGM4MTg4ZDljYy4uNzcyN2E5ZWQwYWQw
YzM5MmMwN2FkMzhlNWI4NzcyYTIyYzI5NmFkOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDbG9iYmVyaXplLmgKQEAgLTEzOSw2ICsxMzksNyBAQCB2b2lkIGNsb2JiZXJpemUoR3Jh
cGgmIGdyYXBoLCBOb2RlKiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3Jp
dGVGdQogICAgIGNhc2UgQXJpdGhDb3M6CiAgICAgY2FzZSBBcml0aExvZzoKICAgICBjYXNlIEdl
dFNjb3BlOgorICAgIGNhc2UgTG9hZEFycm93RnVuY3Rpb25UaGlzOgogICAgIGNhc2UgU2tpcFNj
b3BlOgogICAgIGNhc2UgU3RyaW5nQ2hhckNvZGVBdDoKICAgICBjYXNlIFN0cmluZ0Zyb21DaGFy
Q29kZToKQEAgLTk1OCw3ICs5NTksOCBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBO
b2RlKiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3JpdGVGdQogICAgICAg
ICByZWFkKEhlYXBPYmplY3RDb3VudCk7CiAgICAgICAgIHdyaXRlKEhlYXBPYmplY3RDb3VudCk7
CiAgICAgICAgIHJldHVybjsKLSAgICAgICAgCisgICAgCisgICAgY2FzZSBOZXdBcnJvd0Z1bmN0
aW9uOgogICAgIGNhc2UgTmV3RnVuY3Rpb246CiAgICAgICAgIGlmIChub2RlLT5jYXN0T3BlcmFu
ZDxGdW5jdGlvbkV4ZWN1dGFibGUqPigpLT5zaW5nbGV0b25GdW5jdGlvbigpLT5pc1N0aWxsVmFs
aWQoKSkKICAgICAgICAgICAgIHdyaXRlKFdhdGNocG9pbnRfZmlyZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKaW5kZXggZTQ3MGI4ZGRhYjk5NDM4ZmQ4OTAzNTJlNDVl
MDkxMDI5ZjFhNjI3YS4uMzU0NzMzMmYwYjQxYWNkMmMzNGI0ZTVlYzE0NjVjYjAxYzkzOWMxMSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcApAQCAtOTksNiArOTksNyBA
QCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBHZXRCdXR0
ZXJmbHk6CiAgICAgY2FzZSBDaGVja0FycmF5OgogICAgIGNhc2UgR2V0U2NvcGU6CisgICAgY2Fz
ZSBMb2FkQXJyb3dGdW5jdGlvblRoaXM6CiAgICAgY2FzZSBTa2lwU2NvcGU6CiAgICAgY2FzZSBH
ZXRDbG9zdXJlVmFyOgogICAgIGNhc2UgUHV0Q2xvc3VyZVZhcjoKQEAgLTIyOSw2ICsyMzAsNyBA
QCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBOZXdSZWdl
eHA6CiAgICAgY2FzZSBOZXdTdHJpbmdPYmplY3Q6CiAgICAgY2FzZSBNYWtlUm9wZToKKyAgICBj
YXNlIE5ld0Fycm93RnVuY3Rpb246CiAgICAgY2FzZSBOZXdGdW5jdGlvbjoKICAgICBjYXNlIE5l
d1R5cGVkQXJyYXk6CiAgICAgY2FzZSBUaHJvd1JlZmVyZW5jZUVycm9yOgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKaW5kZXggZGE3NmU3YTg3ZTljNTBlYjE5
ZDBlYzA0Nzg2MGI3YmFlYmZhNDY3ZS4uMGFiMzkzODM5NGYyNjg2YTQ1YWQxZjYxZDA4MWYyYjVk
OGYzNzdjYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBo
YXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3Bw
CkBAIC05NDgsNyArOTQ4LDEyIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBzcGVjdWxhdGVGb3JC
YXJyaWVyKG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0g
ICAgICAgICAgICAKKworICAgICAgICBjYXNlIExvYWRBcnJvd0Z1bmN0aW9uVGhpczogeworICAg
ICAgICAgICAgZml4RWRnZTxLbm93bkNlbGxVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICB9CisKICAgICAgICAgY2FzZSBTa2lwU2NvcGU6CiAgICAgICAg
IGNhc2UgR2V0U2NvcGU6CiAgICAgICAgIGNhc2UgR2V0R2V0dGVyOgpAQCAtMTI3MSw3ICsxMjc2
LDEzIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBmaXhFZGdlPENlbGxVc2U+KG5vZGUtPmNoaWxk
MSgpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgICAgICAKKworICAg
ICAgICBjYXNlIE5ld0Fycm93RnVuY3Rpb246IHsKKyAgICAgICAgICAgIGZpeEVkZ2U8Q2VsbFVz
ZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgZml4RWRnZTxDZWxsVXNlPihub2RlLT5j
aGlsZDIoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCiAjaWYgIUFTU0VSVF9E
SVNBQkxFRAogICAgICAgICAvLyBIYXZlIHRoZXNlIG5vLW9wIGNhc2VzIGhlcmUgdG8gZW5zdXJl
IHRoYXQgbm9ib2R5IGZvcmdldHMgdG8gYWRkIGhhbmRsZXJzIGZvciBuZXcgb3Bjb2Rlcy4KICAg
ICAgICAgY2FzZSBTZXRBcmd1bWVudDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTm9kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKaW5k
ZXggODNmY2Y1YzEwMWUwYzdjNzdhOWVkMjA5NWQ0NTVkYTY5YzRlNmFmMC4uMzA2MzI3YTRkMDA5
NDEyYzk3NWRlMjk2MGQwZTI5MzQ3MDZkZDg1YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdOb2RlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdO
b2RlLmgKQEAgLTU4MCw3ICs1ODAsNyBAQCBzdHJ1Y3QgTm9kZSB7CiAKICAgICB2b2lkIGNvbnZl
cnRUb1BoYW50b21OZXdGdW5jdGlvbigpCiAgICAgewotICAgICAgICBBU1NFUlQobV9vcCA9PSBO
ZXdGdW5jdGlvbik7CisgICAgICAgIEFTU0VSVChtX29wID09IE5ld0Z1bmN0aW9uIHx8IG1fb3Ag
PT0gTmV3QXJyb3dGdW5jdGlvbik7CiAgICAgICAgIG1fb3AgPSBQaGFudG9tTmV3RnVuY3Rpb247
CiAgICAgICAgIG1fZmxhZ3MgfD0gTm9kZU11c3RHZW5lcmF0ZTsKICAgICAgICAgbV9vcEluZm8g
PSAwOwpAQCAtMTI4MCw2ICsxMjgwLDcgQEAgc3RydWN0IE5vZGUgewogICAgICAgICBzd2l0Y2gg
KG9wKCkpIHsKICAgICAgICAgY2FzZSBDaGVja0NlbGw6CiAgICAgICAgIGNhc2UgTmV3RnVuY3Rp
b246CisgICAgICAgIGNhc2UgTmV3QXJyb3dGdW5jdGlvbjoKICAgICAgICAgY2FzZSBDcmVhdGVB
Y3RpdmF0aW9uOgogICAgICAgICBjYXNlIE1hdGVyaWFsaXplQ3JlYXRlQWN0aXZhdGlvbjoKICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMTQ5Niw2ICsxNDk3LDcgQEAgc3RydWN0IE5vZGUg
ewogICAgIGJvb2wgaXNGdW5jdGlvbkFsbG9jYXRpb24oKQogICAgIHsKICAgICAgICAgc3dpdGNo
IChvcCgpKSB7CisgICAgICAgIGNhc2UgTmV3QXJyb3dGdW5jdGlvbjoKICAgICAgICAgY2FzZSBO
ZXdGdW5jdGlvbjoKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBkZWZhdWx0Ogpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCmluZGV4IGU5YmY3MjcwNGIxN2Fh
Njg2NzllOWJiZWEwZjRmMmFkY2VmOTYzYTIuLjc0YWE5ODQ2ODMwOWMyYjQzYjIxODc0NGE2ZjMw
NzRiMTEzYTBkYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9k
ZVR5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKQEAg
LTE5Nyw2ICsxOTcsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAgbWFj
cm8oTXVsdGlQdXRCeU9mZnNldCwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKEdldEFy
cmF5TGVuZ3RoLCBOb2RlUmVzdWx0SW50MzIpIFwKICAgICBtYWNybyhHZXRUeXBlZEFycmF5Qnl0
ZU9mZnNldCwgTm9kZVJlc3VsdEludDMyKSBcCisgICAgbWFjcm8oTG9hZEFycm93RnVuY3Rpb25U
aGlzLCBOb2RlUmVzdWx0SlMpIFwKICAgICBtYWNybyhHZXRTY29wZSwgTm9kZVJlc3VsdEpTKSBc
CiAgICAgbWFjcm8oU2tpcFNjb3BlLCBOb2RlUmVzdWx0SlMpIFwKICAgICBtYWNybyhHZXRDbG9z
dXJlVmFyLCBOb2RlUmVzdWx0SlMpIFwKQEAgLTI5NCw2ICsyOTUsOCBAQCBuYW1lc3BhY2UgSlND
IHsgbmFtZXNwYWNlIERGRyB7CiAgICAgXAogICAgIG1hY3JvKE5ld0Z1bmN0aW9uLCBOb2RlUmVz
dWx0SlMpIFwKICAgICBcCisgICAgbWFjcm8oTmV3QXJyb3dGdW5jdGlvbiwgTm9kZVJlc3VsdEpT
KSBcCisgICAgXAogICAgIC8qIFRoZXNlIGFyZW4ndCB0ZXJtaW5hbHMgYnV0IGFsd2F5cyBleGl0
ICovIFwKICAgICBtYWNybyhUaHJvdywgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKFRo
cm93UmVmZXJlbmNlRXJyb3IsIE5vZGVNdXN0R2VuZXJhdGUpIFwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhh
c2UuY3BwCmluZGV4IGZkODg5MTBlNTVhMWUwYTcxYjExNjM0YjgyY2VhOTVlOGNkMTA2MWIuLjc1
ZDZjNjI0YTdjNWFjNTViY2U5ZWYxZmRkNjk1ODAyODg2NDUyNmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2lu
Z1BoYXNlLmNwcApAQCAtMTM4LDcgKzEzOCw3IEBAIHB1YmxpYzoKICAgICAvLyBvbmNlIGl0IGlz
IGVzY2FwZWQgaWYgaXQgc3RpbGwgaGFzIHBvaW50ZXJzIHRvIGl0IGluIG9yZGVyIHRvCiAgICAg
Ly8gcmVwbGFjZSBhbnkgdXNlIG9mIHRob3NlIHBvaW50ZXJzIGJ5IHRoZSBjb3JyZXNwb25kaW5n
CiAgICAgLy8gbWF0ZXJpYWxpemF0aW9uCi0gICAgZW51bSBjbGFzcyBLaW5kIHsgRXNjYXBlZCwg
T2JqZWN0LCBBY3RpdmF0aW9uLCBGdW5jdGlvbiB9OworICAgIGVudW0gY2xhc3MgS2luZCB7IEVz
Y2FwZWQsIE9iamVjdCwgQWN0aXZhdGlvbiwgRnVuY3Rpb24sIE5ld0Fycm93RnVuY3Rpb24gfTsK
IAogICAgIGV4cGxpY2l0IEFsbG9jYXRpb24oTm9kZSogaWRlbnRpZmllciA9IG51bGxwdHIsIEtp
bmQga2luZCA9IEtpbmQ6OkVzY2FwZWQpCiAgICAgICAgIDogbV9pZGVudGlmaWVyKGlkZW50aWZp
ZXIpCkBAIC0yMzIsNyArMjMyLDEyIEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNGdW5jdGlvbkFs
bG9jYXRpb24oKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIG1fa2luZCA9PSBLaW5kOjpG
dW5jdGlvbjsKKyAgICAgICAgcmV0dXJuIG1fa2luZCA9PSBLaW5kOjpGdW5jdGlvbiB8fCBtX2tp
bmQgPT0gS2luZDo6TmV3QXJyb3dGdW5jdGlvbjsKKyAgICB9CisgICAgCisgICAgYm9vbCBpc0Fy
cm93RnVuY3Rpb25BbGxvY2F0aW9uKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2tp
bmQgPT0gS2luZDo6TmV3QXJyb3dGdW5jdGlvbjsKICAgICB9CiAKICAgICBib29sIG9wZXJhdG9y
PT0oY29uc3QgQWxsb2NhdGlvbiYgb3RoZXIpIGNvbnN0CkBAIC0yNjcsNiArMjcyLDEwIEBAIHB1
YmxpYzoKICAgICAgICAgY2FzZSBLaW5kOjpGdW5jdGlvbjoKICAgICAgICAgICAgIG91dC5wcmlu
dCgiRnVuY3Rpb24iKTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIAorICAg
ICAgICBjYXNlIEtpbmQ6Ok5ld0Fycm93RnVuY3Rpb246CisgICAgICAgICAgICBvdXQucHJpbnQo
Ik5ld0Fycm93RnVuY3Rpb24iKTsKKyAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2Ug
S2luZDo6QWN0aXZhdGlvbjoKICAgICAgICAgICAgIG91dC5wcmludCgiQWN0aXZhdGlvbiIpOwpA
QCAtODQwLDE0ICs4NDksMTkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CiAKLSAgICAgICAgY2FzZSBOZXdGdW5jdGlvbjogeworICAgICAgICBjYXNlIE5ld0Z1bmN0
aW9uOgorICAgICAgICBjYXNlIE5ld0Fycm93RnVuY3Rpb246IHsKKyAgICAgICAgICAgIGJvb2wg
aXNBcnJvd0Z1bmN0aW9uID0gbm9kZS0+b3AoKSA9PSBOZXdBcnJvd0Z1bmN0aW9uOwogICAgICAg
ICAgICAgaWYgKG5vZGUtPmNhc3RPcGVyYW5kPEZ1bmN0aW9uRXhlY3V0YWJsZSo+KCktPnNpbmds
ZXRvbkZ1bmN0aW9uKCktPmlzU3RpbGxWYWxpZCgpKSB7CiAgICAgICAgICAgICAgICAgbV9oZWFw
LmVzY2FwZShub2RlLT5jaGlsZDEoKS5ub2RlKCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgfQotICAgICAgICAgICAgdGFyZ2V0ID0gJm1faGVhcC5uZXdBbGxvY2F0aW9u
KG5vZGUsIEFsbG9jYXRpb246OktpbmQ6OkZ1bmN0aW9uKTsKKyAgICAgICAgICAgIAorICAgICAg
ICAgICAgdGFyZ2V0ID0gJm1faGVhcC5uZXdBbGxvY2F0aW9uKG5vZGUsIGlzQXJyb3dGdW5jdGlv
biA/IEFsbG9jYXRpb246OktpbmQ6Ok5ld0Fycm93RnVuY3Rpb24gOiBBbGxvY2F0aW9uOjpLaW5k
OjpGdW5jdGlvbik7CiAgICAgICAgICAgICB3cml0ZXMuYWRkKEZ1bmN0aW9uRXhlY3V0YWJsZVBM
b2MsIExhenlOb2RlKG5vZGUtPmNlbGxPcGVyYW5kKCkpKTsKICAgICAgICAgICAgIHdyaXRlcy5h
ZGQoRnVuY3Rpb25BY3RpdmF0aW9uUExvYywgTGF6eU5vZGUobm9kZS0+Y2hpbGQxKCkubm9kZSgp
KSk7CisgICAgICAgICAgICBpZiAoaXNBcnJvd0Z1bmN0aW9uKQorICAgICAgICAgICAgICAgIHdy
aXRlcy5hZGQoQXJyb3dGdW5jdGlvbkJvdW5kVGhpc1BMb2MsIExhenlOb2RlKG5vZGUtPmNoaWxk
MigpLm5vZGUoKSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIApAQCAtOTgxLDYg
Kzk5NSwxNCBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIG1faGVhcC5lc2NhcGUobm9kZS0+
Y2hpbGQxKCkubm9kZSgpKTsKICAgICAgICAgICAgIGJyZWFrOwogCisgICAgICAgIGNhc2UgTG9h
ZEFycm93RnVuY3Rpb25UaGlzOgorICAgICAgICAgICAgdGFyZ2V0ID0gbV9oZWFwLm9ubHlMb2Nh
bEFsbG9jYXRpb24obm9kZS0+Y2hpbGQxKCkubm9kZSgpKTsKKyAgICAgICAgICAgIGlmICh0YXJn
ZXQgJiYgdGFyZ2V0LT5pc0Fycm93RnVuY3Rpb25BbGxvY2F0aW9uKCkpCisgICAgICAgICAgICAg
ICAgZXhhY3RSZWFkID0gQXJyb3dGdW5jdGlvbkJvdW5kVGhpc1BMb2M7CisgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgbV9oZWFwLmVzY2FwZShub2RlLT5jaGlsZDEoKS5ub2RlKCkp
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIAogICAgICAgICBjYXNlIEdldFNjb3BlOgog
ICAgICAgICAgICAgdGFyZ2V0ID0gbV9oZWFwLm9ubHlMb2NhbEFsbG9jYXRpb24obm9kZS0+Y2hp
bGQxKCkubm9kZSgpKTsKICAgICAgICAgICAgIGlmICh0YXJnZXQgJiYgdGFyZ2V0LT5pc0Z1bmN0
aW9uQWxsb2NhdGlvbigpKQpAQCAtMTQxNCwxMSArMTQzNiwxNCBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgICAgIE9wSW5mbyhzZXQpLCBPcEluZm8oZGF0YSksIDAsIDApOwogICAgICAgICB9CiAK
KyAgICAgICAgY2FzZSBBbGxvY2F0aW9uOjpLaW5kOjpOZXdBcnJvd0Z1bmN0aW9uOgogICAgICAg
ICBjYXNlIEFsbG9jYXRpb246OktpbmQ6OkZ1bmN0aW9uOiB7CiAgICAgICAgICAgICBGcm96ZW5W
YWx1ZSogZXhlY3V0YWJsZSA9IGFsbG9jYXRpb24uaWRlbnRpZmllcigpLT5jZWxsT3BlcmFuZCgp
OwotCisgICAgICAgICAgICAKKyAgICAgICAgICAgIE5vZGVUeXBlIG5vZGVUeXBlID0gYWxsb2Nh
dGlvbi5raW5kKCkgPT0gQWxsb2NhdGlvbjo6S2luZDo6TmV3QXJyb3dGdW5jdGlvbiA/IE5ld0Fy
cm93RnVuY3Rpb24gOiBOZXdGdW5jdGlvbjsKKyAgICAgICAgICAgIAogICAgICAgICAgICAgcmV0
dXJuIG1fZ3JhcGguYWRkTm9kZSgKLSAgICAgICAgICAgICAgICBhbGxvY2F0aW9uLmlkZW50aWZp
ZXIoKS0+cHJlZGljdGlvbigpLCBOZXdGdW5jdGlvbiwKKyAgICAgICAgICAgICAgICBhbGxvY2F0
aW9uLmlkZW50aWZpZXIoKS0+cHJlZGljdGlvbigpLCBub2RlVHlwZSwKICAgICAgICAgICAgICAg
ICBOb2RlT3JpZ2luKAogICAgICAgICAgICAgICAgICAgICBhbGxvY2F0aW9uLmlkZW50aWZpZXIo
KS0+b3JpZ2luLnNlbWFudGljLAogICAgICAgICAgICAgICAgICAgICB3aGVyZS0+b3JpZ2luLmZv
ckV4aXQpLApAQCAtMTcyMiw2ICsxNzQ3LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAg
ICAgICAgIG5vZGUtPmNvbnZlcnRUb1BoYW50b21OZXdPYmplY3QoKTsKICAgICAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwogCisgICAgICAgICAgICAgICAgICAgIGNhc2UgTmV3QXJyb3dGdW5j
dGlvbjoKICAgICAgICAgICAgICAgICAgICAgY2FzZSBOZXdGdW5jdGlvbjoKICAgICAgICAgICAg
ICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb1BoYW50b21OZXdGdW5jdGlvbigpOwogICAgICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0xOTcyLDE4ICsxOTk4LDI3IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICAgICAgZmlyc3RDaGlsZCwgbV9ncmFwaC5tX3ZhckFyZ0NoaWxkcmVuLnNp
emUoKSAtIGZpcnN0Q2hpbGQpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLQotICAg
ICAgICBjYXNlIE5ld0Z1bmN0aW9uOiB7CisgICAgICAgIAorICAgICAgICBjYXNlIE5ld0Z1bmN0
aW9uOgorICAgICAgICBjYXNlIE5ld0Fycm93RnVuY3Rpb246IHsKKyAgICAgICAgICAgIGJvb2wg
aXNBcnJvd0Z1bmN0aW9uID0gbm9kZS0+b3AoKSA9PSBOZXdBcnJvd0Z1bmN0aW9uOwogICAgICAg
ICAgICAgVmVjdG9yPFByb21vdGVkSGVhcExvY2F0aW9uPiBsb2NhdGlvbnMgPSBtX2xvY2F0aW9u
c0ZvckFsbG9jYXRpb24uZ2V0KGVzY2FwZWUpOwotICAgICAgICAgICAgQVNTRVJUKGxvY2F0aW9u
cy5zaXplKCkgPT0gMik7Ci0KKyAgICAgICAgICAgIEFTU0VSVChsb2NhdGlvbnMuc2l6ZSgpID09
IChpc0Fycm93RnVuY3Rpb24gPyAzIDogMikpOworICAgICAgICAgICAgICAgIAogICAgICAgICAg
ICAgUHJvbW90ZWRIZWFwTG9jYXRpb24gZXhlY3V0YWJsZShGdW5jdGlvbkV4ZWN1dGFibGVQTG9j
LCBhbGxvY2F0aW9uLmlkZW50aWZpZXIoKSk7CiAgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKGV4
ZWN1dGFibGUsIGxvY2F0aW9ucy5jb250YWlucyhleGVjdXRhYmxlKSk7Ci0KKyAgICAgICAgICAg
ICAgICAKICAgICAgICAgICAgIFByb21vdGVkSGVhcExvY2F0aW9uIGFjdGl2YXRpb24oRnVuY3Rp
b25BY3RpdmF0aW9uUExvYywgYWxsb2NhdGlvbi5pZGVudGlmaWVyKCkpOwogICAgICAgICAgICAg
QVNTRVJUKGxvY2F0aW9ucy5jb250YWlucyhhY3RpdmF0aW9uKSk7CiAKICAgICAgICAgICAgIG5v
ZGUtPmNoaWxkMSgpID0gRWRnZShyZXNvbHZlKGJsb2NrLCBhY3RpdmF0aW9uKSwgS25vd25DZWxs
VXNlKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKGlzQXJyb3dGdW5jdGlvbikgewor
ICAgICAgICAgICAgICAgIFByb21vdGVkSGVhcExvY2F0aW9uIGJvdW5kVGhpcyhBcnJvd0Z1bmN0
aW9uQm91bmRUaGlzUExvYywgYWxsb2NhdGlvbi5pZGVudGlmaWVyKCkpOworICAgICAgICAgICAg
ICAgIEFTU0VSVChsb2NhdGlvbnMuY29udGFpbnMoYm91bmRUaGlzKSk7CisgICAgICAgICAgICAg
ICAgbm9kZS0+Y2hpbGQyKCkgPSBFZGdlKHJlc29sdmUoYmxvY2ssIGJvdW5kVGhpcyksIENlbGxV
c2UpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRp
Y3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCmluZGV4IDM2ZjJkZjdjNzVjNTBjYWZkMDZl
YzljMjc4NTFlZWE5ZjEwZmZhOTguLjM1NTczNWYwOTIyMWY5NjU1OTNjYWI3ZDE0YjI4MDgxY2Y2
YThhMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlv
blByb3BhZ2F0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCkBAIC0yMTUsNiArMjE1LDcgQEAgcHJpdmF0
ZToKICAgICAgICAgY2FzZSBHZXRHZXR0ZXI6CiAgICAgICAgIGNhc2UgR2V0U2V0dGVyOgogICAg
ICAgICBjYXNlIEdldENhbGxlZToKKyAgICAgICAgY2FzZSBOZXdBcnJvd0Z1bmN0aW9uOgogICAg
ICAgICBjYXNlIE5ld0Z1bmN0aW9uOiB7CiAgICAgICAgICAgICBjaGFuZ2VkIHw9IHNldFByZWRp
Y3Rpb24oU3BlY0Z1bmN0aW9uKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtNTg1LDExICs1ODYs
MTUgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIC8vIFRoZXNlIGRvbid0IGdldCBpbnNlcnRlZCB1
bnRpbCB3ZSBnbyBpbnRvIFNTQS4KICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiAgICAgICAgICAgICBicmVhazsKLQorICAgIAogICAgICAgICBjYXNlIEdldFNjb3Bl
OgogICAgICAgICAgICAgY2hhbmdlZCB8PSBzZXRQcmVkaWN0aW9uKFNwZWNPYmplY3RPdGhlcik7
CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIAorCisgICAgICAgIGNhc2UgTG9hZEFy
cm93RnVuY3Rpb25UaGlzOgorICAgICAgICAgICAgY2hhbmdlZCB8PSBzZXRQcmVkaWN0aW9uKFNw
ZWNGaW5hbE9iamVjdCk7CisgICAgICAgICAgICBicmVhazsKKwogICAgICAgICBjYXNlIEluOgog
ICAgICAgICAgICAgY2hhbmdlZCB8PSBzZXRQcmVkaWN0aW9uKFNwZWNCb29sZWFuKTsKICAgICAg
ICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQ
cm9tb3RlZEhlYXBMb2NhdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1By
b21vdGVkSGVhcExvY2F0aW9uLmNwcAppbmRleCAyNGY2OTc3MGVkYjhkMjRhOTcyNDcwZDQwZjkw
ZTk2ZTU3OGE5OTcyLi44ZmUxNTkxNzNjZWFiMzlkOWM3MTdlZTQ3MDU1NTNmODQ3M2U2NDk4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Byb21vdGVkSGVhcExvY2F0
aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Byb21vdGVkSGVhcExv
Y2F0aW9uLmNwcApAQCAtMTAyLDYgKzEwMiwxMCBAQCB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRT
dHJlYW0mIG91dCwgUHJvbW90ZWRMb2NhdGlvbktpbmQga2luZCkKICAgICBjYXNlIENsb3N1cmVW
YXJQTG9jOgogICAgICAgICBvdXQucHJpbnQoIkNsb3N1cmVWYXJQTG9jIik7CiAgICAgICAgIHJl
dHVybjsKKworICAgIGNhc2UgQXJyb3dGdW5jdGlvbkJvdW5kVGhpc1BMb2M6CisgICAgICAgIG91
dC5wcmludCgiQXJyb3dGdW5jdGlvbkJvdW5kVGhpc1BMb2MiKTsKKyAgICAgICAgcmV0dXJuOwog
ICAgIH0KICAgICAKICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5oCmluZGV4
IGEyMWU0ZGExYWY5YjViMGZiNjA0YzNiMjIzNzA3MWY1MTVmYTY1NGYuLjk3MjkzZjNhMDE4NTJk
MTkxZTc5NWYyMzg4YjYxZjEzMWU5Y2E0ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1Byb21vdGVkSGVhcExvY2F0aW9uLmgKQEAgLTQ3LDYgKzQ3LDcgQEAgZW51
bSBQcm9tb3RlZExvY2F0aW9uS2luZCB7CiAgICAgRnVuY3Rpb25BY3RpdmF0aW9uUExvYywKICAg
ICBBY3RpdmF0aW9uU2NvcGVQTG9jLAogICAgIENsb3N1cmVWYXJQTG9jLAorICAgIEFycm93RnVu
Y3Rpb25Cb3VuZFRoaXNQTG9jCiB9OwogCiBjbGFzcyBQcm9tb3RlZExvY2F0aW9uRGVzY3JpcHRv
ciB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1
dGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCmluZGV4
IGIyZDA3ZDU1ZTUzNjI2ODQ1YjVkM2Y1YzlmZWVhNGU3YmQ4NGRkOTEuLmY3Nzg3ZjQxYjYwNDBh
MmY5NDZkZmFhMzA3MTcxYzA4NTRlNTViMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU2FmZVRvRXhlY3V0ZS5oCkBAIC0xODAsNiArMTgwLDcgQEAgYm9vbCBzYWZlVG9FeGVj
dXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdGF0ZSwgR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQog
ICAgIGNhc2UgQXJyYXlpZnk6CiAgICAgY2FzZSBBcnJheWlmeVRvU3RydWN0dXJlOgogICAgIGNh
c2UgR2V0U2NvcGU6CisgICAgY2FzZSBMb2FkQXJyb3dGdW5jdGlvblRoaXM6CiAgICAgY2FzZSBT
a2lwU2NvcGU6CiAgICAgY2FzZSBHZXRDbG9zdXJlVmFyOgogICAgIGNhc2UgUHV0Q2xvc3VyZVZh
cjoKQEAgLTIzOSw2ICsyNDAsNyBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5
cGUmIHN0YXRlLCBHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBDcmVhdGVDbG9u
ZWRBcmd1bWVudHM6CiAgICAgY2FzZSBHZXRGcm9tQXJndW1lbnRzOgogICAgIGNhc2UgUHV0VG9B
cmd1bWVudHM6CisgICAgY2FzZSBOZXdBcnJvd0Z1bmN0aW9uOgogICAgIGNhc2UgTmV3RnVuY3Rp
b246CiAgICAgY2FzZSBKdW1wOgogICAgIGNhc2UgQnJhbmNoOgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAppbmRleCA0ODRiZjhkNTAwNjg4ODgx
Nzc5OTVkZDJiMWFjOTcyNDUxZmRiZjQ4Li5hOThmZDE3OTQyNTA4ZDE0M2UxYjA4YTc3ODMzZDk5
ODlkNmQ0ZGYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklULmNwcApAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIkRGR1NhbmVTdHJpbmdHZXRC
eVZhbFNsb3dQYXRoR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiREZHU2xvd1BhdGhHZW5lcmF0b3Iu
aCIKICNpbmNsdWRlICJEaXJlY3RBcmd1bWVudHMuaCIKKyNpbmNsdWRlICJKU0Fycm93RnVuY3Rp
b24uaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNFbnZpcm9ubWVudFJl
Y29yZC5oIgogI2luY2x1ZGUgIkpTTGV4aWNhbEVudmlyb25tZW50LmgiCkBAIC00NDc1LDYgKzQ0
NzYsMTUgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldFNjb3BlKE5vZGUqIG5vZGUp
CiAgICAgY2VsbFJlc3VsdChyZXN1bHQuZ3ByKCksIG5vZGUpOwogfQogCisgICAgCit2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlTG9hZEFycm93RnVuY3Rpb25UaGlzKE5vZGUqIG5vZGUpCit7
CisgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgZnVuY3Rpb24odGhpcywgbm9kZS0+Y2hpbGQxKCkp
OworICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcywgUmV1c2UsIGZ1bmN0aW9uKTsKKyAgICBt
X2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKGZ1bmN0aW9uLmdwcigpLCBKU0Fycm93
RnVuY3Rpb246Om9mZnNldE9mVGhpc1ZhbHVlKCkpLCByZXN1bHQuZ3ByKCkpOworICAgIGNlbGxS
ZXN1bHQocmVzdWx0LmdwcigpLCBub2RlKTsKK30KKyAgICAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVTa2lwU2NvcGUoTm9kZSogbm9kZSkKIHsKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFu
ZCBzY29wZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CkBAIC00NjA1LDU1ICs0NjE1LDczIEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDaGVja0lkZW50KE5vZGUqIG5vZGUpCiAgICAgbm9S
ZXN1bHQobm9kZSk7CiB9CiAKK3RlbXBsYXRlIDx0eXBlbmFtZSBDbGFzc1R5cGU+IHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdGdW5jdGlvbkNvbW1vbihHUFJSZWcgcmVzdWx0R1BSLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgR1BSUmVnIHNjcmF0Y2gxR1BSLCBHUFJSZWcgc2NyYXRjaDJH
UFIsIEdQUlJlZyBzY29wZUdQUiwgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0JiBzbG93UGF0aCwg
c2l6ZV90IHNpemUsIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgcHRyZGlmZl90IG9m
ZnNldE9mU2NvcGVDaGFpbiwgcHRyZGlmZl90IG9mZnNldE9mRXhlY3V0YWJsZSwgcHRyZGlmZl90
IG9mZnNldE9mUmFyZURhdGEpCit7CisgICAgZW1pdEFsbG9jYXRlSlNPYmplY3RXaXRoS25vd25T
aXplPENsYXNzVHlwZT4ocmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSksIFRydXN0
ZWRJbW1QdHIoMCksIHNjcmF0Y2gxR1BSLCBzY3JhdGNoMkdQUiwgc2xvd1BhdGgsIHNpemUpOwor
ICAgIAorICAgIG1faml0LnN0b3JlUHRyKHNjb3BlR1BSLCBKSVRDb21waWxlcjo6QWRkcmVzcyhy
ZXN1bHRHUFIsIG9mZnNldE9mU2NvcGVDaGFpbikpOworICAgIG1faml0LnN0b3JlUHRyKFRydXN0
ZWRJbW1QdHIoZXhlY3V0YWJsZSksIEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgb2Zm
c2V0T2ZFeGVjdXRhYmxlKSk7CisgICAgbV9qaXQuc3RvcmVQdHIoVHJ1c3RlZEltbVB0cigwKSwg
SklUQ29tcGlsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBvZmZzZXRPZlJhcmVEYXRhKSk7Cit9CisK
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdGdW5jdGlvbihOb2RlKiBub2RlKQogewor
ICAgIE5vZGVUeXBlIG5vZGVUeXBlID0gbm9kZS0+b3AoKTsKKyAgICBBU1NFUlQobm9kZVR5cGUg
PT0gTmV3RnVuY3Rpb24gfHwgbm9kZVR5cGUgPT0gTmV3QXJyb3dGdW5jdGlvbik7CisgICAgCiAg
ICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgc2NvcGUodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAg
IEdQUlJlZyB0aGlzVmFsdWVHUFI7CiAgICAgR1BSUmVnIHNjb3BlR1BSID0gc2NvcGUuZ3ByKCk7
CiAKICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBub2RlLT5jYXN0T3BlcmFu
ZDxGdW5jdGlvbkV4ZWN1dGFibGUqPigpOwogCisgICAgaWYgKG5vZGVUeXBlID09IE5ld0Fycm93
RnVuY3Rpb24pIHsKKyAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgdGhpc1ZhbHVlKHRoaXMs
IG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgdGhpc1ZhbHVlR1BSID0gdGhpc1ZhbHVlLmdwcigp
OworICAgIH0KKwogICAgIGlmIChleGVjdXRhYmxlLT5zaW5nbGV0b25GdW5jdGlvbigpLT5pc1N0
aWxsVmFsaWQoKSkgewogICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7
CiAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7Ci0KKyAgICAgICAgCiAg
ICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0KLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRp
b25OZXdGdW5jdGlvbiwgcmVzdWx0R1BSLCBzY29wZUdQUiwgZXhlY3V0YWJsZSk7CisgICAgICAg
IAorICAgICAgICBpZiAobm9kZVR5cGUgPT0gTmV3QXJyb3dGdW5jdGlvbikKKyAgICAgICAgICAg
IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTmV3QXJyb3dGdW5jdGlvbiwgcmVzdWx0R1BSLCBzY29w
ZUdQUiwgZXhlY3V0YWJsZSwgdGhpc1ZhbHVlR1BSKTsKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25OZXdGdW5jdGlvbiwgcmVzdWx0R1BSLCBzY29wZUdQ
UiwgZXhlY3V0YWJsZSk7CisgICAgICAgIAogICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwg
bm9kZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSA9IG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKAotICAgICAgICBub2RlLT5vcmlnaW4u
c2VtYW50aWMpLT5mdW5jdGlvblN0cnVjdHVyZSgpOwotCisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUgPSBub2RlVHlwZSA9PSBOZXdBcnJvd0Z1bmN0aW9uCisgICAgICAgID8gbV9qaXQuZ3JhcGgo
KS5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKS0+YXJyb3dGdW5jdGlvblN0
cnVjdHVyZSgpCisgICAgICAgIDogbV9qaXQuZ3JhcGgoKS5nbG9iYWxPYmplY3RGb3Iobm9kZS0+
b3JpZ2luLnNlbWFudGljKS0+ZnVuY3Rpb25TdHJ1Y3R1cmUoKTsKKyAgICAKICAgICBHUFJUZW1w
b3JhcnkgcmVzdWx0KHRoaXMpOwogICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoMSh0aGlzKTsKICAg
ICBHUFJUZW1wb3Jhcnkgc2NyYXRjaDIodGhpcyk7CisgICAgCiAgICAgR1BSUmVnIHJlc3VsdEdQ
UiA9IHJlc3VsdC5ncHIoKTsKICAgICBHUFJSZWcgc2NyYXRjaDFHUFIgPSBzY3JhdGNoMS5ncHIo
KTsKICAgICBHUFJSZWcgc2NyYXRjaDJHUFIgPSBzY3JhdGNoMi5ncHIoKTsKLQorICAgIAogICAg
IEpJVENvbXBpbGVyOjpKdW1wTGlzdCBzbG93UGF0aDsKLSAgICBlbWl0QWxsb2NhdGVKU09iamVj
dFdpdGhLbm93blNpemU8SlNGdW5jdGlvbj4oCi0gICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZElt
bVB0cihzdHJ1Y3R1cmUpLCBUcnVzdGVkSW1tUHRyKDApLAotICAgICAgICBzY3JhdGNoMUdQUiwg
c2NyYXRjaDJHUFIsIHNsb3dQYXRoLCBKU0Z1bmN0aW9uOjphbGxvY2F0aW9uU2l6ZSgwKSk7Ci0K
LSAgICAvLyBEb24ndCBuZWVkIGEgbWVtb3J5IGJhcnJpZXJzIHNpbmNlIHdlIGp1c3QgZmFzdC1j
cmVhdGVkIHRoZSBmdW5jdGlvbiwgc28gaXQKLSAgICAvLyBtdXN0IGJlIHlvdW5nLgotICAgIG1f
aml0LnN0b3JlUHRyKAotICAgICAgICBzY29wZUdQUiwKLSAgICAgICAgSklUQ29tcGlsZXI6OkFk
ZHJlc3MocmVzdWx0R1BSLCBKU0Z1bmN0aW9uOjpvZmZzZXRPZlNjb3BlQ2hhaW4oKSkpOwotICAg
IG1faml0LnN0b3JlUHRyKAotICAgICAgICBUcnVzdGVkSW1tUHRyKGV4ZWN1dGFibGUpLAotICAg
ICAgICBKSVRDb21waWxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIEpTRnVuY3Rpb246Om9mZnNldE9m
RXhlY3V0YWJsZSgpKSk7Ci0gICAgbV9qaXQuc3RvcmVQdHIoCi0gICAgICAgIFRydXN0ZWRJbW1Q
dHIoMCksCi0gICAgICAgIEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNGdW5jdGlv
bjo6b2Zmc2V0T2ZSYXJlRGF0YSgpKSk7Ci0KLQotICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKAot
ICAgICAgICBzbG93UGF0aENhbGwoCi0gICAgICAgICAgICBzbG93UGF0aCwgdGhpcywgb3BlcmF0
aW9uTmV3RnVuY3Rpb25XaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50LCByZXN1
bHRHUFIsIHNjb3BlR1BSLCBleGVjdXRhYmxlKSk7CisgICAgCisgICAgaWYgKG5vZGVUeXBlID09
IE5ld0Z1bmN0aW9uKSB7CisgICAgICAgIGNvbXBpbGVOZXdGdW5jdGlvbkNvbW1vbjxKU0Z1bmN0
aW9uPihyZXN1bHRHUFIsIHN0cnVjdHVyZSwgc2NyYXRjaDFHUFIsIHNjcmF0Y2gyR1BSLCBzY29w
ZUdQUiwgc2xvd1BhdGgsIEpTRnVuY3Rpb246OmFsbG9jYXRpb25TaXplKDApLCBleGVjdXRhYmxl
LCBKU0Z1bmN0aW9uOjpvZmZzZXRPZlNjb3BlQ2hhaW4oKSwgSlNGdW5jdGlvbjo6b2Zmc2V0T2ZF
eGVjdXRhYmxlKCksIEpTRnVuY3Rpb246Om9mZnNldE9mUmFyZURhdGEoKSk7CisgICAgICAgICAg
ICAKKyAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dQYXRoLCB0
aGlzLCBvcGVyYXRpb25OZXdGdW5jdGlvbldpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNo
cG9pbnQsIHJlc3VsdEdQUiwgc2NvcGVHUFIsIGV4ZWN1dGFibGUpKTsKKyAgICB9CisgICAgCisg
ICAgaWYgKG5vZGVUeXBlID09IE5ld0Fycm93RnVuY3Rpb24pIHsKKyAgICAgICAgY29tcGlsZU5l
d0Z1bmN0aW9uQ29tbW9uPEpTQXJyb3dGdW5jdGlvbj4ocmVzdWx0R1BSLCBzdHJ1Y3R1cmUsIHNj
cmF0Y2gxR1BSLCBzY3JhdGNoMkdQUiwgc2NvcGVHUFIsIHNsb3dQYXRoLCBKU0Fycm93RnVuY3Rp
b246OmFsbG9jYXRpb25TaXplKDApLCBleGVjdXRhYmxlLCBKU0Fycm93RnVuY3Rpb246Om9mZnNl
dE9mU2NvcGVDaGFpbigpLCBKU0Fycm93RnVuY3Rpb246Om9mZnNldE9mRXhlY3V0YWJsZSgpLCBK
U0Fycm93RnVuY3Rpb246Om9mZnNldE9mUmFyZURhdGEoKSk7CisgICAgICAgIAorICAgICAgICBt
X2ppdC5zdG9yZVB0cih0aGlzVmFsdWVHUFIsIEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdEdQ
UiwgSlNBcnJvd0Z1bmN0aW9uOjpvZmZzZXRPZlRoaXNWYWx1ZSgpKSk7CisgICAgICAgIAorICAg
ICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoc2xvd1BhdGgsIHRoaXMsIG9w
ZXJhdGlvbk5ld0Fycm93RnVuY3Rpb25XaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBv
aW50LCByZXN1bHRHUFIsIHNjb3BlR1BSLCBleGVjdXRhYmxlLCB0aGlzVmFsdWVHUFIpKTsKKyAg
ICB9CiAKICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKaW5kZXggNTQ1ZmYyYTZlYmQxMGVl
ZjgyYjFmZTdjMjJjY2U5ZjcxN2VkZDE0YS4uODA3YmVjNThjYjg1NzFjYTAwYjYyOWMzMDM5NjRi
Yzc2YTI1OTU0MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQuaApAQCAtMTIxMSw2ICsxMjExLDEyIEBAIHB1YmxpYzoKICAgICAgICAgbV9qaXQuc2V0
dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIFRydXN0ZWRJbW1QdHIoY2VsbCkpOwogICAg
ICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRp
b24sIHJlc3VsdCk7CiAgICAgfQorICAgIAorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVy
YXRpb24oSl9KSVRPcGVyYXRpb25fRUpzY0NKIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BS
UmVnIGFyZzEsIEpTQ2VsbCogY2VsbCwgR1BSUmVnIGFyZzIpCisgICAgeworICAgICAgICBtX2pp
dC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgVHJ1c3RlZEltbVB0cihjZWxsKSwg
YXJnMik7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVz
dWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAgICB9CiAKICAgICBKSVRDb21waWxlcjo6Q2FsbCBj
YWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VXcyBvcGVyYXRpb24sIFdhdGNocG9pbnRTZXQq
IHdhdGNocG9pbnRTZXQpCiAgICAgewpAQCAtMTYxNyw2ICsxNjIzLDExIEBAIHB1YmxpYzoKICAg
ICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIFRydXN0ZWRJbW1Q
dHIoY2VsbCkpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1Nl
dFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CiAgICAgfQorICAg
IEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUpzY0NKIG9w
ZXJhdGlvbiwgR1BSUmVnIHJlc3VsdFRhZywgR1BSUmVnIHJlc3VsdFBheWxvYWQsIEdQUlJlZyBh
cmcxLCBKU0NlbGwqIGNlbGwsIEdQUlJlZyBhcmcyKQorICAgIHsKKyAgICAgICAgbV9qaXQuc2V0
dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIFRydXN0ZWRJbW1QdHIoY2VsbCksIGFyZzIp
OworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChv
cGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CisgICAgfQogICAgIEpJVENvbXBp
bGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRVNzaUNJIG9wZXJhdGlvbiwg
R1BSUmVnIHJlc3VsdFRhZywgR1BSUmVnIHJlc3VsdFBheWxvYWQsIFN0cnVjdHVyZVN0dWJJbmZv
KiBzdHViSW5mbywgR1BSUmVnIGFyZzEsIGNvbnN0IFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpCiAg
ICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZElt
bVB0cihzdHViSW5mbyksIGFyZzEsIFRydXN0ZWRJbW1QdHIodWlkKSk7CkBAIC0yMTg4LDYgKzIx
OTksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjb21waWxlR2V0QnlWYWxPblNjb3BlZEFyZ3VtZW50
cyhOb2RlKik7CiAgICAgCiAgICAgdm9pZCBjb21waWxlR2V0U2NvcGUoTm9kZSopOworICAgIHZv
aWQgY29tcGlsZUxvYWRBcnJvd0Z1bmN0aW9uVGhpcyhOb2RlKik7CiAgICAgdm9pZCBjb21waWxl
U2tpcFNjb3BlKE5vZGUqKTsKIAogICAgIHZvaWQgY29tcGlsZUdldEFycmF5TGVuZ3RoKE5vZGUq
KTsKQEAgLTIyMjEsNiArMjIzMyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbXBpbGVQdXRCeVZh
bEZvckludFR5cGVkQXJyYXkoR1BSUmVnIGJhc2UsIEdQUlJlZyBwcm9wZXJ0eSwgTm9kZSosIFR5
cGVkQXJyYXlUeXBlKTsKICAgICB2b2lkIGNvbXBpbGVHZXRCeVZhbE9uRmxvYXRUeXBlZEFycmF5
KE5vZGUqLCBUeXBlZEFycmF5VHlwZSk7CiAgICAgdm9pZCBjb21waWxlUHV0QnlWYWxGb3JGbG9h
dFR5cGVkQXJyYXkoR1BSUmVnIGJhc2UsIEdQUlJlZyBwcm9wZXJ0eSwgTm9kZSosIFR5cGVkQXJy
YXlUeXBlKTsKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2xhc3NUeXBlPiB2b2lkIGNvbXBpbGVO
ZXdGdW5jdGlvbkNvbW1vbihHUFJSZWcsIFN0cnVjdHVyZSosIEdQUlJlZywgR1BSUmVnLCBHUFJS
ZWcsIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCYsIHNpemVfdCwgRnVuY3Rpb25FeGVjdXRhYmxl
KiwgcHRyZGlmZl90LCBwdHJkaWZmX3QsIHB0cmRpZmZfdCk7CiAgICAgdm9pZCBjb21waWxlTmV3
RnVuY3Rpb24oTm9kZSopOwogICAgIHZvaWQgY29tcGlsZUZvcndhcmRWYXJhcmdzKE5vZGUqKTsK
ICAgICB2b2lkIGNvbXBpbGVDcmVhdGVBY3RpdmF0aW9uKE5vZGUqKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCmluZGV4IDgw
MGI4NzJkZjlkYjBiNmY4MWViNGMyMDM3MTc0YmM5NDZhZDgzODMuLjc1MTIwOTY3OWFjMjlkOTA2
NWQwYjAwMWFjN2EyOWFkOTg3Yjk5ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcApAQCAtMzY4Niw3ICszNjg2LDExIEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICBjYXNlIEdldFNj
b3BlOgogICAgICAgICBjb21waWxlR2V0U2NvcGUobm9kZSk7CiAgICAgICAgIGJyZWFrOwotICAg
ICAgICAKKworICAgIGNhc2UgTG9hZEFycm93RnVuY3Rpb25UaGlzOgorICAgICAgICBjb21waWxl
TG9hZEFycm93RnVuY3Rpb25UaGlzKG5vZGUpOworICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IAogICAgIGNhc2UgU2tpcFNjb3BlOgogICAgICAgICBjb21waWxlU2tpcFNjb3BlKG5vZGUpOwog
ICAgICAgICBicmVhazsKQEAgLTQzMzEsMTEgKzQzMzUsMTIgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBjb21waWxlQ3JlYXRlQ2xvbmVkQXJndW1l
bnRzKG5vZGUpOwogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgICAgIAorCiAgICAgY2FzZSBO
ZXdGdW5jdGlvbjoKKyAgICBjYXNlIE5ld0Fycm93RnVuY3Rpb246CiAgICAgICAgIGNvbXBpbGVO
ZXdGdW5jdGlvbihub2RlKTsKICAgICAgICAgYnJlYWs7Ci0gICAgICAgIAorCiAgICAgY2FzZSBJ
bjoKICAgICAgICAgY29tcGlsZUluKG5vZGUpOwogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCmluZGV4IDUzZGFm
MzRjYTUwODViYTA0Mjk5OTgxOTU2NmFjODAxMmUxOTZiYTUuLmFmZjczMTQwN2Y3MmFlNmU0MWY2
ZDY5YTRiYWViYjc0ZjdlMDhkYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcApAQCAtMzcyOSw3ICszNzI5LDExIEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICBjYXNlIEdldFNjb3BlOgogICAg
ICAgICBjb21waWxlR2V0U2NvcGUobm9kZSk7CiAgICAgICAgIGJyZWFrOwotICAgICAgICAKKyAg
ICAgICAgICAgIAorICAgIGNhc2UgTG9hZEFycm93RnVuY3Rpb25UaGlzOgorICAgICAgICBjb21w
aWxlTG9hZEFycm93RnVuY3Rpb25UaGlzKG5vZGUpOworICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIAogICAgIGNhc2UgU2tpcFNjb3BlOgogICAgICAgICBjb21waWxlU2tpcFNjb3BlKG5vZGUp
OwogICAgICAgICBicmVhazsKQEAgLTQzMzYsMTEgKzQzNDAsMTIgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBjb21waWxlQ3JlYXRlQ2xvbmVkQXJn
dW1lbnRzKG5vZGUpOwogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgICAgIAorCiAgICAgY2Fz
ZSBOZXdGdW5jdGlvbjoKKyAgICBjYXNlIE5ld0Fycm93RnVuY3Rpb246CiAgICAgICAgIGNvbXBp
bGVOZXdGdW5jdGlvbihub2RlKTsKICAgICAgICAgYnJlYWs7Ci0gICAgICAgIAorCiAgICAgY2Fz
ZSBJbjoKICAgICAgICAgY29tcGlsZUluKG5vZGUpOwogICAgICAgICBicmVhazsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhh
c2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRp
b25QaGFzZS5jcHAKaW5kZXggNjZhY2RhMjliNjRmODM4MWEwNjk3NWI5MmI4MzIwY2E4Njk5OGEz
Yi4uZDIwYzVkZGZjNjU5ODIwNDNkYTYxMjBiZDE5ZTU2YTNlNjc0M2U0NyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRp
b25QaGFzZS5jcHAKQEAgLTMwMCw2ICszMDAsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgY2Fz
ZSBDcmVhdGVEaXJlY3RBcmd1bWVudHM6CiAgICAgICAgICAgICBjYXNlIENyZWF0ZVNjb3BlZEFy
Z3VtZW50czoKICAgICAgICAgICAgIGNhc2UgQ3JlYXRlQ2xvbmVkQXJndW1lbnRzOgorICAgICAg
ICAgICAgY2FzZSBOZXdBcnJvd0Z1bmN0aW9uOgogICAgICAgICAgICAgY2FzZSBOZXdGdW5jdGlv
bjoKICAgICAgICAgICAgICAgICAvLyBOb2RlcyB0aGF0IGFsbG9jYXRlIGdldCB0byBzZXQgdGhl
aXIgZXBvY2ggYmVjYXVzZSBmb3IgdGhvc2Ugbm9kZXMgd2Uga25vdwogICAgICAgICAgICAgICAg
IC8vIHRoYXQgdGhleSB3aWxsIGJlIHRoZSBuZXdlc3Qgb2JqZWN0IGluIHRoZSBoZWFwLgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJ1Y3R1cmVSZWdpc3RyYXRp
b25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cnVjdHVyZVJlZ2lz
dHJhdGlvblBoYXNlLmNwcAppbmRleCBhYzkyNzNjZGI2ZDQ4MmI2Y2E1ZGNiZDRjYTZiZDYxZDUw
M2YwYzBmLi43OTE5MDI1MmJkN2I4ZGM1YmY2ZTBhMGQwMjY1NDFmOTYyZGEwNzRiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cnVjdHVyZVJlZ2lzdHJhdGlvblBo
YXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cnVjdHVyZVJlZ2lz
dHJhdGlvblBoYXNlLmNwcApAQCAtMTM1LDcgKzEzNSw5IEBAIHB1YmxpYzoKICAgICAgICAgICAg
ICAgICBjYXNlIE5ld1JlZ2V4cDoKICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXJTdHJ1Y3R1
cmUobV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKS0+cmVnRXhw
U3RydWN0dXJlKCkpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAg
ICAgICAgCisgICAgICAgICAgICAgICAgY2FzZSBOZXdBcnJvd0Z1bmN0aW9uOgorICAgICAgICAg
ICAgICAgICAgICByZWdpc3RlclN0cnVjdHVyZShtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2Rl
LT5vcmlnaW4uc2VtYW50aWMpLT5hcnJvd0Z1bmN0aW9uU3RydWN0dXJlKCkpOworICAgICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICBjYXNlIE5ld0Z1bmN0aW9uOgogICAg
ICAgICAgICAgICAgICAgICByZWdpc3RlclN0cnVjdHVyZShtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5mdW5jdGlvblN0cnVjdHVyZSgpKTsKICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmNwcAppbmRleCBlNDE2ZmRhYWZlZTIyMjlmNjUz
YjlhZTA2MjQ4MDAwOTk5ODc1YTAwLi4zYzM4NjRjYTE4MGFhMzZlNDgwOGMyM2ExMzA2YmUyOGU1
ZDdiOTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0
SGVhcFJlcG9zaXRvcnkuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJz
dHJhY3RIZWFwUmVwb3NpdG9yeS5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2luY2x1ZGUgIkRp
cmVjdEFyZ3VtZW50cy5oIgogI2luY2x1ZGUgIkdldHRlclNldHRlci5oIgorI2luY2x1ZGUgIkpT
QXJyb3dGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTRW52aXJvbm1lbnRSZWNvcmQuaCIKICNpbmNs
dWRlICJKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IuaCIKICNpbmNsdWRlICJKU1Njb3BlLmgiCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9z
aXRvcnkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3Np
dG9yeS5oCmluZGV4IDU4MWY0Y2JkOWE3NjhiOWFiMmE4MzkyMWNmMjRkMzUyNGJjODU3MTguLjcx
MmZkOGRhMjIxZGRkNDgzODJkOTJkYjQwYTBlMjYxYTE3ZjI4NzkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oCkBAIC04
OCw3ICs4OCwxMSBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEZUTCB7CiAgICAgbWFjcm8o
U3RydWN0dXJlX2dsb2JhbE9iamVjdCwgU3RydWN0dXJlOjpnbG9iYWxPYmplY3RPZmZzZXQoKSkg
XAogICAgIG1hY3JvKFN0cnVjdHVyZV9wcm90b3R5cGUsIFN0cnVjdHVyZTo6cHJvdG90eXBlT2Zm
c2V0KCkpIFwKICAgICBtYWNybyhTdHJ1Y3R1cmVfc3RydWN0dXJlSUQsIFN0cnVjdHVyZTo6c3Ry
dWN0dXJlSURPZmZzZXQoKSkgXAotICAgIG1hY3JvKFN5bWJvbF9wcml2YXRlTmFtZSwgU3ltYm9s
OjpvZmZzZXRPZlByaXZhdGVOYW1lKCkpCisgICAgbWFjcm8oU3ltYm9sX3ByaXZhdGVOYW1lLCBT
eW1ib2w6Om9mZnNldE9mUHJpdmF0ZU5hbWUoKSkgXAorICAgIG1hY3JvKEpTQXJyb3dGdW5jdGlv
bl9leGVjdXRhYmxlLCBKU0Fycm93RnVuY3Rpb246Om9mZnNldE9mRXhlY3V0YWJsZSgpKSBcCisg
ICAgbWFjcm8oSlNBcnJvd0Z1bmN0aW9uX3Njb3BlLCBKU0Fycm93RnVuY3Rpb246Om9mZnNldE9m
U2NvcGVDaGFpbigpKSBcCisgICAgbWFjcm8oSlNBcnJvd0Z1bmN0aW9uX3JhcmVEYXRhLCBKU0Fy
cm93RnVuY3Rpb246Om9mZnNldE9mUmFyZURhdGEoKSkgXAorICAgIG1hY3JvKEpTQXJyb3dGdW5j
dGlvbl90aGlzLCBKU0Fycm93RnVuY3Rpb246Om9mZnNldE9mVGhpc1ZhbHVlKCkpCiAKICNkZWZp
bmUgRk9SX0VBQ0hfSU5ERVhFRF9BQlNUUkFDVF9IRUFQKG1hY3JvKSBcCiAgICAgbWFjcm8oRGly
ZWN0QXJndW1lbnRzX3N0b3JhZ2UsIERpcmVjdEFyZ3VtZW50czo6c3RvcmFnZU9mZnNldCgpLCBz
aXplb2YoRW5jb2RlZEpTVmFsdWUpKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TENhcGFiaWxpdGllcy5jcHAKaW5kZXggZTJiMWY0MTk3ZmY4ZTgzNGRkZjQ5MGFlMmQ1MDkyMWI5
ZTJmZWI0Mi4uNzczNzQyMWNlMDZhZGY1MWU4YTgwZThkMTNmM2NhNjJlOWE1YWZkNiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcApAQCAtMTA1LDYg
KzEwNSw3IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiBub2RlKQog
ICAgIGNhc2UgTG9vcEhpbnQ6CiAgICAgY2FzZSBTa2lwU2NvcGU6CiAgICAgY2FzZSBDcmVhdGVB
Y3RpdmF0aW9uOgorICAgIGNhc2UgTmV3QXJyb3dGdW5jdGlvbjoKICAgICBjYXNlIE5ld0Z1bmN0
aW9uOgogICAgIGNhc2UgR2V0Q2xvc3VyZVZhcjoKICAgICBjYXNlIFB1dENsb3N1cmVWYXI6CkBA
IC0xNDEsNiArMTQyLDcgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUq
IG5vZGUpCiAgICAgY2FzZSBDb3VudEV4ZWN1dGlvbjoKICAgICBjYXNlIEdldEV4ZWN1dGFibGU6
CiAgICAgY2FzZSBHZXRTY29wZToKKyAgICBjYXNlIExvYWRBcnJvd0Z1bmN0aW9uVGhpczoKICAg
ICBjYXNlIEdldENhbGxlZToKICAgICBjYXNlIEdldEFyZ3VtZW50Q291bnQ6CiAgICAgY2FzZSBU
b1N0cmluZzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMSW50cmlu
c2ljUmVwb3NpdG9yeS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExJbnRyaW5zaWNS
ZXBvc2l0b3J5LmgKaW5kZXggOWIzNDQxNDE3ZTE2MTY2ZDBlYzFmZDNmNmNlOTZmNzk0NWYyMjhi
NC4uMTI1ZTRmZWNhMzZjNThlMjE2MjU2YTdjNTliMjg0NGVjODVmMDhhZCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExJbnRyaW5zaWNSZXBvc2l0b3J5LmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExJbnRyaW5zaWNSZXBvc2l0b3J5LmgKQEAgLTg2
LDYgKzg2LDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBGVEwgewogICAgIG1hY3JvKEpf
SklUT3BlcmF0aW9uX0VKSSwgZnVuY3Rpb25UeXBlKGludDY0LCBpbnRQdHIsIGludDY0LCBpbnRQ
dHIpKSBcCiAgICAgbWFjcm8oSl9KSVRPcGVyYXRpb25fRUpKLCBmdW5jdGlvblR5cGUoaW50NjQs
IGludFB0ciwgaW50NjQsIGludDY0KSkgXAogICAgIG1hY3JvKEpfSklUT3BlcmF0aW9uX0VKc2ND
LCBmdW5jdGlvblR5cGUoaW50UHRyLCBpbnRQdHIsIGludFB0ciwgaW50UHRyKSkgXAorICAgIG1h
Y3JvKEpfSklUT3BlcmF0aW9uX0VKc2NDSiwgZnVuY3Rpb25UeXBlKGludDY0LCBpbnRQdHIsIGlu
dDY0LCBpbnQ2NCwgaW50NjQpKVwKICAgICBtYWNybyhKX0pJVE9wZXJhdGlvbl9FSnNzWiwgZnVu
Y3Rpb25UeXBlKGludDY0LCBpbnRQdHIsIGludFB0ciwgaW50MzIpKSBcCiAgICAgbWFjcm8oSl9K
SVRPcGVyYXRpb25fRVNzaUpJLCBmdW5jdGlvblR5cGUoaW50NjQsIGludFB0ciwgaW50UHRyLCBp
bnQ2NCwgaW50UHRyKSkgXAogICAgIG1hY3JvKEpzc19KSVRPcGVyYXRpb25fRVosIGZ1bmN0aW9u
VHlwZShpbnRQdHIsIGludFB0ciwgaW50MzIpKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCmluZGV4IGM2MWE3NTFmYzM0ODAxMzRjZGExZjc4
NGQ0MDYwMDI3MGVmZTgzNGEuLmUxM2QwYTY3Mzk1MjdkZDljMzEwNjgwYzBiOTA4NzQ0YzdkNjI2
NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xM
Vk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0u
Y3BwCkBAIC00NCw2ICs0NCw3IEBACiAjaW5jbHVkZSAiRlRMT3V0cHV0LmgiCiAjaW5jbHVkZSAi
RlRMVGh1bmtzLmgiCiAjaW5jbHVkZSAiRlRMV2VpZ2h0ZWRUYXJnZXQuaCIKKyNpbmNsdWRlICJK
U0Fycm93RnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNM
ZXhpY2FsRW52aXJvbm1lbnQuaCIKICNpbmNsdWRlICJPcGVyYW5kc0lubGluZXMuaCIKQEAgLTU5
Myw2ICs1OTQsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgY29tcGlsZUNyZWF0ZUFjdGl2YXRp
b24oKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIE5ld0Z1bmN0aW9uOgorICAg
ICAgICBjYXNlIE5ld0Fycm93RnVuY3Rpb246CiAgICAgICAgICAgICBjb21waWxlTmV3RnVuY3Rp
b24oKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENyZWF0ZURpcmVjdEFyZ3Vt
ZW50czoKQEAgLTY3OCw2ICs2ODAsOSBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIEdldFNjb3Bl
OgogICAgICAgICAgICAgY29tcGlsZUdldFNjb3BlKCk7CiAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgY2FzZSBMb2FkQXJyb3dGdW5jdGlvblRoaXM6CisgICAgICAgICAgICBjb21waWxlTG9h
ZEFycm93RnVuY3Rpb25UaGlzKCk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBT
a2lwU2NvcGU6CiAgICAgICAgICAgICBjb21waWxlU2tpcFNjb3BlKCk7CiAgICAgICAgICAgICBi
cmVhazsKQEAgLTMwOTMsMzggKzMwOTgsNTUgQEAgcHJpdmF0ZToKICAgICAKICAgICB2b2lkIGNv
bXBpbGVOZXdGdW5jdGlvbigpCiAgICAgeworICAgICAgICBBU1NFUlQobV9ub2RlLT5vcCgpID09
IE5ld0Z1bmN0aW9uIHx8IG1fbm9kZS0+b3AoKSA9PSBOZXdBcnJvd0Z1bmN0aW9uKTsKKyAgICAg
ICAgCisgICAgICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uID0gbV9ub2RlLT5vcCgpID09IE5ld0Fy
cm93RnVuY3Rpb247CisgICAgICAgIAogICAgICAgICBMVmFsdWUgc2NvcGUgPSBsb3dDZWxsKG1f
bm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBMVmFsdWUgdGhpc1ZhbHVlID0gaXNBcnJvd0Z1bmN0
aW9uID8gbG93Q2VsbChtX25vZGUtPmNoaWxkMigpKSA6IG51bGxwdHI7CisgICAgICAgIAogICAg
ICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBtX25vZGUtPmNhc3RPcGVyYW5k
PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KCk7CiAgICAgICAgIGlmIChleGVjdXRhYmxlLT5zaW5nbGV0
b25GdW5jdGlvbigpLT5pc1N0aWxsVmFsaWQoKSkgewotICAgICAgICAgICAgTFZhbHVlIGNhbGxS
ZXN1bHQgPSB2bUNhbGwoCi0gICAgICAgICAgICAgICAgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlv
bk5ld0Z1bmN0aW9uKSwgbV9jYWxsRnJhbWUsIHNjb3BlLCB3ZWFrUG9pbnRlcihleGVjdXRhYmxl
KSk7CisgICAgICAgICAgICBMVmFsdWUgY2FsbFJlc3VsdCA9IGlzQXJyb3dGdW5jdGlvbgorICAg
ICAgICAgICAgICAgID8gdm1DYWxsKG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25OZXdBcnJvd0Z1
bmN0aW9uKSwgbV9jYWxsRnJhbWUsIHNjb3BlLCB3ZWFrUG9pbnRlcihleGVjdXRhYmxlKSwgdGhp
c1ZhbHVlKQorICAgICAgICAgICAgICAgIDogdm1DYWxsKG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRp
b25OZXdGdW5jdGlvbiksIG1fY2FsbEZyYW1lLCBzY29wZSwgd2Vha1BvaW50ZXIoZXhlY3V0YWJs
ZSkpOwogICAgICAgICAgICAgc2V0SlNWYWx1ZShjYWxsUmVzdWx0KTsKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUg
PSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyktPmZ1bmN0
aW9uU3RydWN0dXJlKCk7CisgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gaXNBcnJvd0Z1
bmN0aW9uCisgICAgICAgICAgICA/IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3Jp
Z2luLnNlbWFudGljKS0+YXJyb3dGdW5jdGlvblN0cnVjdHVyZSgpCisgICAgICAgICAgICA6IG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKS0+ZnVuY3Rpb25T
dHJ1Y3R1cmUoKTsKICAgICAgICAgCiAgICAgICAgIExCYXNpY0Jsb2NrIHNsb3dQYXRoID0gRlRM
X05FV19CTE9DSyhtX291dCwgKCJOZXdGdW5jdGlvbiBzbG93IHBhdGgiKSk7CiAgICAgICAgIExC
YXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IEZUTF9ORVdfQkxPQ0sobV9vdXQsICgiTmV3RnVuY3Rp
b24gY29udGludWF0aW9uIikpOwogICAgICAgICAKICAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5l
eHQgPSBtX291dC5pbnNlcnROZXdCbG9ja3NCZWZvcmUoc2xvd1BhdGgpOwogICAgICAgICAKLSAg
ICAgICAgTFZhbHVlIGZhc3RPYmplY3QgPSBhbGxvY2F0ZU9iamVjdDxKU0Z1bmN0aW9uPigKLSAg
ICAgICAgICAgIHN0cnVjdHVyZSwgbV9vdXQuaW50UHRyWmVybywgc2xvd1BhdGgpOworICAgICAg
ICBMVmFsdWUgZmFzdE9iamVjdCA9IGlzQXJyb3dGdW5jdGlvbgorICAgICAgICAgICAgPyBhbGxv
Y2F0ZU9iamVjdDxKU0Fycm93RnVuY3Rpb24+KHN0cnVjdHVyZSwgbV9vdXQuaW50UHRyWmVybywg
c2xvd1BhdGgpCisgICAgICAgICAgICA6IGFsbG9jYXRlT2JqZWN0PEpTRnVuY3Rpb24+KHN0cnVj
dHVyZSwgbV9vdXQuaW50UHRyWmVybywgc2xvd1BhdGgpOworICAgICAgICAKICAgICAgICAgCiAg
ICAgICAgIC8vIFdlIGRvbid0IG5lZWQgbWVtb3J5IGJhcnJpZXJzIHNpbmNlIHdlIGp1c3QgZmFz
dC1jcmVhdGVkIHRoZSBmdW5jdGlvbiwgc28gaXQKICAgICAgICAgLy8gbXVzdCBiZSB5b3VuZy4K
LSAgICAgICAgbV9vdXQuc3RvcmVQdHIoc2NvcGUsIGZhc3RPYmplY3QsIG1faGVhcHMuSlNGdW5j
dGlvbl9zY29wZSk7Ci0gICAgICAgIG1fb3V0LnN0b3JlUHRyKHdlYWtQb2ludGVyKGV4ZWN1dGFi
bGUpLCBmYXN0T2JqZWN0LCBtX2hlYXBzLkpTRnVuY3Rpb25fZXhlY3V0YWJsZSk7Ci0gICAgICAg
IG1fb3V0LnN0b3JlUHRyKG1fb3V0LmludFB0clplcm8sIGZhc3RPYmplY3QsIG1faGVhcHMuSlNG
dW5jdGlvbl9yYXJlRGF0YSk7CisgICAgICAgIG1fb3V0LnN0b3JlUHRyKHNjb3BlLCBmYXN0T2Jq
ZWN0LCBpc0Fycm93RnVuY3Rpb24gPyBtX2hlYXBzLkpTQXJyb3dGdW5jdGlvbl9zY29wZSA6IG1f
aGVhcHMuSlNGdW5jdGlvbl9zY29wZSk7CisgICAgICAgIG1fb3V0LnN0b3JlUHRyKHdlYWtQb2lu
dGVyKGV4ZWN1dGFibGUpLCBmYXN0T2JqZWN0LCBpc0Fycm93RnVuY3Rpb24gPyAgbV9oZWFwcy5K
U0Fycm93RnVuY3Rpb25fZXhlY3V0YWJsZSA6IG1faGVhcHMuSlNGdW5jdGlvbl9leGVjdXRhYmxl
KTsKKyAgICAgICAgCisgICAgICAgIGlmIChpc0Fycm93RnVuY3Rpb24pCisgICAgICAgICAgICBt
X291dC5zdG9yZVB0cih0aGlzVmFsdWUsIGZhc3RPYmplY3QsIG1faGVhcHMuSlNBcnJvd0Z1bmN0
aW9uX3RoaXMpOworICAgICAgICAKKyAgICAgICAgbV9vdXQuc3RvcmVQdHIobV9vdXQuaW50UHRy
WmVybywgZmFzdE9iamVjdCwgaXNBcnJvd0Z1bmN0aW9uID8gIG1faGVhcHMuSlNBcnJvd0Z1bmN0
aW9uX3JhcmVEYXRhIDogbV9oZWFwcy5KU0Z1bmN0aW9uX3JhcmVEYXRhKTsKICAgICAgICAgCiAg
ICAgICAgIFZhbHVlRnJvbUJsb2NrIGZhc3RSZXN1bHQgPSBtX291dC5hbmNob3IoZmFzdE9iamVj
dCk7CiAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKICAgICAgICAgCiAgICAgICAg
IG1fb3V0LmFwcGVuZFRvKHNsb3dQYXRoLCBjb250aW51YXRpb24pOwotICAgICAgICBMVmFsdWUg
Y2FsbFJlc3VsdCA9IHZtQ2FsbCgKLSAgICAgICAgICAgIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRp
b25OZXdGdW5jdGlvbldpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNocG9pbnQpLAotICAg
ICAgICAgICAgbV9jYWxsRnJhbWUsIHNjb3BlLCB3ZWFrUG9pbnRlcihleGVjdXRhYmxlKSk7Cisg
ICAgICAgIAorICAgICAgICBMVmFsdWUgY2FsbFJlc3VsdCA9IGlzQXJyb3dGdW5jdGlvbgorICAg
ICAgICAgICAgPyB2bUNhbGwobV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbk5ld0Fycm93RnVuY3Rp
b25XaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KSwgbV9jYWxsRnJhbWUsIHNj
b3BlLCB3ZWFrUG9pbnRlcihleGVjdXRhYmxlKSwgdGhpc1ZhbHVlKQorICAgICAgICAgICAgOiB2
bUNhbGwobV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbk5ld0Z1bmN0aW9uV2l0aEludmFsaWRhdGVk
UmVhbGxvY2F0aW9uV2F0Y2hwb2ludCksIG1fY2FsbEZyYW1lLCBzY29wZSwgd2Vha1BvaW50ZXIo
ZXhlY3V0YWJsZSkpOworICAgICAgICAKICAgICAgICAgVmFsdWVGcm9tQmxvY2sgc2xvd1Jlc3Vs
dCA9IG1fb3V0LmFuY2hvcihjYWxsUmVzdWx0KTsKICAgICAgICAgbV9vdXQuanVtcChjb250aW51
YXRpb24pOwogICAgICAgICAKQEAgLTQwNTYsNiArNDA3OCwxMSBAQCBwcml2YXRlOgogICAgICAg
ICBzZXRKU1ZhbHVlKG1fb3V0LmxvYWRQdHIobG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKSwgbV9o
ZWFwcy5KU0Z1bmN0aW9uX3Njb3BlKSk7CiAgICAgfQogICAgIAorICAgIHZvaWQgY29tcGlsZUxv
YWRBcnJvd0Z1bmN0aW9uVGhpcygpCisgICAgeworICAgICAgICBzZXRKU1ZhbHVlKG1fb3V0Lmxv
YWRQdHIobG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKSwgbV9oZWFwcy5KU0Fycm93RnVuY3Rpb25f
dGhpcykpOworICAgIH0KKyAgICAKICAgICB2b2lkIGNvbXBpbGVTa2lwU2NvcGUoKQogICAgIHsK
ICAgICAgICAgc2V0SlNWYWx1ZShtX291dC5sb2FkUHRyKGxvd0NlbGwobV9ub2RlLT5jaGlsZDEo
KSksIG1faGVhcHMuSlNTY29wZV9uZXh0KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTE9wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExPcGVyYXRpb25zLmNwcAppbmRleCA4Y2RiYzVkMTAxNmVjNWJhNTcyYzUxNGRmNjFmOTEwNmMz
ZGZmYWQ5Li5hOGJkNTdmYmFlODlmMmUwMzFmMWQ3ODZhNjIwMDEyZDY5MTk2MDBkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9wZXJhdGlvbnMuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3BlcmF0aW9ucy5jcHAKQEAgLTE1OSwxNiArMTU5
LDI1IEBAIGV4dGVybiAiQyIgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk1hdGVyaWFs
aXplT2JqZWN0SW5PU1IoCiAgICAgICAgIC8vIEZpZ3VyZSBvdXQgd2hhdCB0aGUgZXhlY3V0YWJs
ZSBhbmQgYWN0aXZhdGlvbiBhcmUKICAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRh
YmxlID0gbnVsbHB0cjsKICAgICAgICAgSlNTY29wZSogYWN0aXZhdGlvbiA9IG51bGxwdHI7Cisg
ICAgICAgIEpTVmFsdWUgYm91bmRUaGlzOworICAgICAgICBib29sIGlzQXJyb3dGdW5jdGlvbiA9
IGZhbHNlOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtYXRlcmlhbGl6YXRpb24tPnByb3Bl
cnRpZXMoKS5zaXplKCk7IGktLTspIHsKICAgICAgICAgICAgIGNvbnN0IEV4aXRQcm9wZXJ0eVZh
bHVlJiBwcm9wZXJ0eSA9IG1hdGVyaWFsaXphdGlvbi0+cHJvcGVydGllcygpW2ldOwogICAgICAg
ICAgICAgaWYgKHByb3BlcnR5LmxvY2F0aW9uKCkgPT0gUHJvbW90ZWRMb2NhdGlvbkRlc2NyaXB0
b3IoRnVuY3Rpb25FeGVjdXRhYmxlUExvYykpCiAgICAgICAgICAgICAgICAgZXhlY3V0YWJsZSA9
IGpzQ2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihKU1ZhbHVlOjpkZWNvZGUodmFsdWVzW2ldKSk7
CiAgICAgICAgICAgICBpZiAocHJvcGVydHkubG9jYXRpb24oKSA9PSBQcm9tb3RlZExvY2F0aW9u
RGVzY3JpcHRvcihGdW5jdGlvbkFjdGl2YXRpb25QTG9jKSkKICAgICAgICAgICAgICAgICBhY3Rp
dmF0aW9uID0ganNDYXN0PEpTU2NvcGUqPihKU1ZhbHVlOjpkZWNvZGUodmFsdWVzW2ldKSk7Cisg
ICAgICAgICAgICBpZiAocHJvcGVydHkubG9jYXRpb24oKSA9PSBQcm9tb3RlZExvY2F0aW9uRGVz
Y3JpcHRvcihBcnJvd0Z1bmN0aW9uQm91bmRUaGlzUExvYykpIHsKKyAgICAgICAgICAgICAgICBp
c0Fycm93RnVuY3Rpb24gPSB0cnVlOworICAgICAgICAgICAgICAgIGJvdW5kVGhpcyA9IEpTVmFs
dWU6OmRlY29kZSh2YWx1ZXNbaV0pOworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAg
IFJFTEVBU0VfQVNTRVJUKGV4ZWN1dGFibGUgJiYgYWN0aXZhdGlvbik7CiAKLSAgICAgICAgSlNG
dW5jdGlvbiogcmVzdWx0ID0gSlNGdW5jdGlvbjo6Y3JlYXRlV2l0aEludmFsaWRhdGVkUmVhbGxv
Y2F0aW9uV2F0Y2hwb2ludCh2bSwgZXhlY3V0YWJsZSwgYWN0aXZhdGlvbik7CisgICAgICAgIAor
ICAgICAgICBKU0Z1bmN0aW9uKiByZXN1bHQgPSBpc0Fycm93RnVuY3Rpb24KKyAgICAgICAgICAg
ID8gSlNBcnJvd0Z1bmN0aW9uOjpjcmVhdGVXaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRj
aHBvaW50KHZtLCBleGVjdXRhYmxlLCBhY3RpdmF0aW9uLCBib3VuZFRoaXMpCisgICAgICAgICAg
ICA6IEpTRnVuY3Rpb246OmNyZWF0ZVdpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNocG9p
bnQodm0sIGV4ZWN1dGFibGUsIGFjdGl2YXRpb24pOwogCiAgICAgICAgIHJldHVybiByZXN1bHQ7
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0lu
dGVycHJldGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnBy
ZXRlci5jcHAKaW5kZXggMGQ1MDgwMzcyYWYyZWIwN2JkNmM5MTAwYjQwNGZmMWVkNWUxOWY4My4u
MGE4MDJiZDM5ZGY5MjAzZDIzY2Q0NGZiMjRjZjdlNDZjODAyYjljYyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCkBAIC00NSw2ICs0
NSw3IEBACiAjaW5jbHVkZSAiRXhjZXB0aW9uSGVscGVycy5oIgogI2luY2x1ZGUgIkdldHRlclNl
dHRlci5oIgogI2luY2x1ZGUgIkpTQXJyYXkuaCIKKyNpbmNsdWRlICJKU0Fycm93RnVuY3Rpb24u
aCIKICNpbmNsdWRlICJKU0JvdW5kRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgi
CiAjaW5jbHVkZSAiSlNMZXhpY2FsRW52aXJvbm1lbnQuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgKaW5kZXggYWQ5ZGY2ZmM3MWQ4ZGQ5MDA1
YzFhM2MxMmVlYzA0MmIzODE5ODQ0OC4uMTg3ZGFiZTUzMzYyZTc5ODViNGJlMDRjN2VmNTViMTIy
ZDFjOWY3MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0lu
dGVycHJldGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVy
cHJldGVyLmgKQEAgLTMxLDYgKzMxLDcgQEAKICNkZWZpbmUgSW50ZXJwcmV0ZXJfaAogCiAjaW5j
bHVkZSAiQXJnTGlzdC5oIgorI2luY2x1ZGUgIkpTQXJyb3dGdW5jdGlvbi5oIgogI2luY2x1ZGUg
IkpTQ0pTVmFsdWUuaCIKICNpbmNsdWRlICJKU0NlbGwuaCIKICNpbmNsdWRlICJKU09iamVjdC5o
IgpAQCAtNTAsNiArNTEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBFeGVjdXRhYmxl
QmFzZTsKICAgICBjbGFzcyBGdW5jdGlvbkV4ZWN1dGFibGU7CiAgICAgY2xhc3MgVk07CisgICAg
Y2xhc3MgSlNBcnJvd0Z1bmN0aW9uOwogICAgIGNsYXNzIEpTRnVuY3Rpb247CiAgICAgY2xhc3Mg
SlNHbG9iYWxPYmplY3Q7CiAgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmgKaW5kZXggNWZhNmI1MzYyZGU5ODdjMzAz
YjBmYTAxNjUyNjBkMDFhMTZiMGZmOC4uY2IwMDIxNWI2NTU5MzhjMGY3ZjJkZmY0MjRlZTYwNzM2
NWNiMTUwYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBl
cnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5oCkBAIC05
NTUsNiArOTU1LDcgQEAgcHVibGljOgogICAgICAgICBzZXR1cFN0dWJBcmd1bWVudHMoYXJnMSwg
YXJnMik7CiAgICAgICAgIG1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86
OmFyZ3VtZW50R1BSMCk7CiAgICAgfQorICAgIAogI2VsaWYgQ1BVKEFSTSkKICNpZiBDUFUoQVJN
X0hBUkRGUCkKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHMoRlBSUmVnIGFy
ZzEpCkBAIC0xMjEzLDYgKzEyMTQsMTMgQEAgcHVibGljOgogICAgICAgICBtb3ZlKGFyZzEsIEdQ
UkluZm86OmFyZ3VtZW50R1BSMik7CiAgICAgICAgIG1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVn
aXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7CiAgICAgfQorCisgICAgQUxXQVlTX0lOTElO
RSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgVHJ1c3RlZElt
bVB0ciBhcmcyLCBHUFJSZWcgYXJnMykKKyAgICB7CisgICAgICAgIHNldHVwVHdvU3R1YkFyZ3NH
UFI8R1BSSW5mbzo6YXJndW1lbnRHUFIxLCBHUFJJbmZvOjphcmd1bWVudEdQUjM+KGFyZzEsIGFy
ZzMpOworICAgICAgICBtb3ZlKGFyZzIsIEdQUkluZm86OmFyZ3VtZW50R1BSMik7CisgICAgICAg
IG1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7
CisgICAgfQogI2VuZGlmCiAKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNX
aXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklULmNwcAppbmRleCAwMzhmNWQ3ZGJjMDZhZjgxMGY3MWE3ZDQyNDBkN2ZmMmViYTQwZWI0Li5i
YmM4NTIzZjViYjIzYTM5MzBjMDk0ZWQ0ODYyMTc0NjRkODZjNTUxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVQuY3BwCkBAIC0yMTksNiArMjE5LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxl
TWFpblBhc3MoKQogICAgICAgICBERUZJTkVfT1Aob3BfZW5kKQogICAgICAgICBERUZJTkVfT1Ao
b3BfZW50ZXIpCiAgICAgICAgIERFRklORV9PUChvcF9nZXRfc2NvcGUpCisgICAgICAgIERFRklO
RV9PUChvcF9sb2FkX2Fycm93ZnVuY3Rpb25fdGhpcykKICAgICAgICAgREVGSU5FX09QKG9wX2Vx
KQogICAgICAgICBERUZJTkVfT1Aob3BfZXFfbnVsbCkKICAgICAgICAgY2FzZSBvcF9nZXRfYnlf
aWRfb3V0X29mX2xpbmU6CkBAIC0yNTksNiArMjYwLDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21w
aWxlTWFpblBhc3MoKQogICAgICAgICBERUZJTkVfT1Aob3BfbmV3X2FycmF5X2J1ZmZlcikKICAg
ICAgICAgREVGSU5FX09QKG9wX25ld19mdW5jKQogICAgICAgICBERUZJTkVfT1Aob3BfbmV3X2Z1
bmNfZXhwKQorICAgICAgICBERUZJTkVfT1Aob3BfbmV3X2Fycm93X2Z1bmNfZXhwKSAKICAgICAg
ICAgREVGSU5FX09QKG9wX25ld19vYmplY3QpCiAgICAgICAgIERFRklORV9PUChvcF9uZXdfcmVn
ZXhwKQogICAgICAgICBERUZJTkVfT1Aob3Bfbm90KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKaW5k
ZXggODQxMWE3ZWY2NWE5YzZiZGNjMTZiMzY0ZWIyOGU0MTAxNmI1ODU4Ni4uNzcxZmQ5YjQwNjVi
ZGQxNzIyYzBlNzJiODg3MjA4ZWM2MmYxZTQ0ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCkBA
IC00OTgsNiArNDk4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9l
bmQoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2VudGVyKEluc3RydWN0aW9u
Kik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9nZXRfc2NvcGUoSW5zdHJ1Y3Rpb24qKTsKKyAgICAg
ICAgdm9pZCBlbWl0X29wX2xvYWRfYXJyb3dmdW5jdGlvbl90aGlzKEluc3RydWN0aW9uKik7CiAg
ICAgICAgIHZvaWQgZW1pdF9vcF9lcShJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRf
b3BfZXFfbnVsbChJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfZ2V0X2J5X2lk
KEluc3RydWN0aW9uKik7CkBAIC01MzksNiArNTQwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIHZvaWQgZW1pdF9vcF9uZXdfYXJyYXlfYnVmZmVyKEluc3RydWN0aW9uKik7CiAgICAgICAg
IHZvaWQgZW1pdF9vcF9uZXdfZnVuYyhJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRf
b3BfbmV3X2Z1bmNfZXhwKEluc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9uZXdf
YXJyb3dfZnVuY19leHAoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX25ld19v
YmplY3QoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX25ld19yZWdleHAoSW5z
dHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX25vdChJbnN0cnVjdGlvbiopOwpAQCAt
NjUzLDYgKzY1NSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGVtaXRSaWdodFNo
aWZ0KEluc3RydWN0aW9uKiwgYm9vbCBpc1Vuc2lnbmVkKTsKICAgICAgICAgdm9pZCBlbWl0Umln
aHRTaGlmdFNsb3dDYXNlKEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVy
YXRvciYsIGJvb2wgaXNVbnNpZ25lZCk7CiAKKyAgICAgICAgdm9pZCBlbWl0TmV3RnVuY0V4cHJD
b21tb24oSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0VmFySW5qZWN0aW9uQ2hlY2so
Ym9vbCBuZWVkc1ZhckluamVjdGlvbkNoZWNrcyk7CiAgICAgICAgIHZvaWQgZW1pdFJlc29sdmVD
bG9zdXJlKGludCBkc3QsIGludCBzY29wZSwgYm9vbCBuZWVkc1ZhckluamVjdGlvbkNoZWNrcywg
dW5zaWduZWQgZGVwdGgpOwogICAgICAgICB2b2lkIGVtaXRMb2FkV2l0aFN0cnVjdHVyZUNoZWNr
KGludCBzY29wZSwgU3RydWN0dXJlKiogc3RydWN0dXJlU2xvdCk7CkBAIC03MjMsNiArNzI2LDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVy
YXRpb24oSl9KSVRPcGVyYXRpb25fRUpKQnksIGludCwgR1BSUmVnLCBHUFJSZWcsIEJ5VmFsSW5m
byopOwogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKENfSklUT3Bl
cmF0aW9uX0VKc2MsIEdQUlJlZyk7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxP
cGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUpzY0MsIGludCwgR1BSUmVnLCBKU0NlbGwqKTsKKyAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9F
SnNjQ0osIGludCwgR1BSUmVnLCBKU0NlbGwqLCBHUFJSZWcpOwogICAgICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKENfSklUT3BlcmF0aW9uX0VKc2NaLCBHUFJSZWcsIGlu
dDMyX3QpOwogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKENfSklU
T3BlcmF0aW9uX0VKc2NaLCBpbnQsIEdQUlJlZywgaW50MzJfdCk7CiAjaWYgVVNFKEpTVkFMVUU2
NCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgKaW5kZXggNWQ2ODY5MDA4MWM5
OTZkN2UzM2JmM2JkMjVkY2M1OGIwMzBmN2Q2Yy4uZmJhYjJjYzBmMzk3MjQ5NTZiZjU4NDkxYjNk
ZTc4M2E2ZmNkYzIzNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJ
bmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgKQEAg
LTI3MSw2ICsyNzEsMTIgQEAgQUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBKSVQ6
OmNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUpzY0Mgb3BlcmEKICAgICByZXR1cm4gYXBw
ZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldEpTVmFsdWVSZXN1bHQob3BlcmF0aW9uLCBkc3Qp
OwogfQogCitBTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpDYWxsIEpJVDo6Y2FsbE9wZXJh
dGlvbihKX0pJVE9wZXJhdGlvbl9FSnNjQ0ogb3BlcmF0aW9uLCBpbnQgZHN0LCBHUFJSZWcgYXJn
MSwgSlNDZWxsKiBjZWxsLCBHUFJSZWcgYXJnMikKK3sKKyAgICBzZXR1cEFyZ3VtZW50c1dpdGhF
eGVjU3RhdGUoYXJnMSwgVHJ1c3RlZEltbVB0cihjZWxsKSwgYXJnMik7CisgICAgcmV0dXJuIGFw
cGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRKU1ZhbHVlUmVzdWx0KG9wZXJhdGlvbiwgZHN0
KTsKK30KKyAgICAKIEFMV0FZU19JTkxJTkUgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgSklUOjpjYWxs
T3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VQIG9wZXJhdGlvbiwgaW50IGRzdCwgdm9pZCogcG9p
bnRlcikKIHsKICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0cihw
b2ludGVyKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29k
ZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAppbmRleCA1
OThkNGVjOTljMWQxOGU2YzM5NjIxMTk3MjBhY2VhYzFlZTJmYTZkLi5jODNiY2M4YzQ1ZGU2NjZm
NzNjOWU5MTFmNTE0MjlmMzVlYjExMzQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVE9wY29kZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3Bjb2Rlcy5jcHAKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJIZWFwLmgiCiAjaW5jbHVk
ZSAiSklUSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQXJyYXkuaCIKKyNpbmNsdWRlICJKU0Fycm93
RnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0NlbGwuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgi
CiAjaW5jbHVkZSAiSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmgiCkBAIC02NzMsNiArNjc0LDE0
IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9zY29wZShJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQogICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNGdW5jdGlvbjo6b2Zmc2V0T2ZT
Y29wZUNoYWluKCkpLCByZWdUMCk7CiAgICAgZW1pdFN0b3JlQ2VsbChkc3QsIHJlZ1QwKTsKIH0K
KyAgICAKK3ZvaWQgSklUOjplbWl0X29wX2xvYWRfYXJyb3dmdW5jdGlvbl90aGlzKEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit7CisgICAgaW50IGRzdCA9IGN1cnJlbnRJbnN0cnVj
dGlvblsxXS51Lm9wZXJhbmQ7CisgICAgZW1pdEdldEZyb21DYWxsRnJhbWVIZWFkZXJQdHIoSlNT
dGFjazo6Q2FsbGVlLCByZWdUMCk7CisgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU0Fycm93
RnVuY3Rpb246Om9mZnNldE9mVGhpc1ZhbHVlKCkpLCByZWdUMCk7CisgICAgZW1pdFN0b3JlQ2Vs
bChkc3QsIHJlZ1QwKTsKK30KIAogdm9pZCBKSVQ6OmVtaXRfb3BfdG9fdGhpcyhJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQogewpAQCAtOTYyLDI2ICs5NzEsNDUgQEAgdm9pZCBKSVQ6
OmVtaXRfb3BfbmV3X2Z1bmMoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIAogdm9p
ZCBKSVQ6OmVtaXRfb3BfbmV3X2Z1bmNfZXhwKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCiB7CisgICAgZW1pdE5ld0Z1bmNFeHByQ29tbW9uKGN1cnJlbnRJbnN0cnVjdGlvbik7Cit9
CisgICAgCit2b2lkIEpJVDo6ZW1pdE5ld0Z1bmNFeHByQ29tbW9uKEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCit7CisgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBtX3ZtLT5pbnRlcnBy
ZXRlci0+Z2V0T3Bjb2RlSUQoY3VycmVudEluc3RydWN0aW9uLT51Lm9wY29kZSk7CisgICAgYm9v
bCBpc0Fycm93RnVuY3Rpb24gPSBvcGNvZGVJRCA9PSBvcF9uZXdfYXJyb3dfZnVuY19leHA7Cisg
ICAgCiAgICAgSnVtcCBub3RVbmRlZmluZWRTY29wZTsKICAgICBpbnQgZHN0ID0gY3VycmVudElu
c3RydWN0aW9uWzFdLnUub3BlcmFuZDsKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgIGVtaXRHZXRW
aXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCwgcmVnVDApOwor
ICAgIGlmIChpc0Fycm93RnVuY3Rpb24pCisgICAgICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIo
Y3VycmVudEluc3RydWN0aW9uWzRdLnUub3BlcmFuZCwgcmVnVDEpOwogICAgIG5vdFVuZGVmaW5l
ZFNjb3BlID0gYnJhbmNoNjQoTm90RXF1YWwsIHJlZ1QwLCBUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpKSk7CiAgICAgc3RvcmU2NChUcnVzdGVkSW1tNjQoSlNWYWx1
ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpKSwgQWRkcmVzcyhjYWxsRnJhbWVSZWdpc3Rlciwgc2l6
ZW9mKFJlZ2lzdGVyKSAqIGRzdCkpOwogI2Vsc2UKICAgICBlbWl0TG9hZFBheWxvYWQoY3VycmVu
dEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCwgcmVnVDApOworICAgIGlmIChpc0Fycm93RnVuY3Rp
b24pCisgICAgICAgIGVtaXRMb2FkUGF5bG9hZChjdXJyZW50SW5zdHJ1Y3Rpb25bNF0udS5vcGVy
YW5kLCByZWdUMSk7CiAgICAgbm90VW5kZWZpbmVkU2NvcGUgPSBicmFuY2gzMihOb3RFcXVhbCwg
dGFnRm9yKGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpLCBUcnVzdGVkSW1tMzIoSlNW
YWx1ZTo6VW5kZWZpbmVkVGFnKSk7CiAgICAgZW1pdFN0b3JlKGRzdCwganNVbmRlZmluZWQoKSk7
CiAjZW5kaWYKLQogICAgIEp1bXAgZG9uZSA9IGp1bXAoKTsKICAgICBub3RVbmRlZmluZWRTY29w
ZS5saW5rKHRoaXMpOwotCi0gICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jRXhwciA9IG1fY29k
ZUJsb2NrLT5mdW5jdGlvbkV4cHIoY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZCk7Ci0g
ICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25OZXdGdW5jdGlvbiwgZHN0LCByZWdUMCwgZnVuY0V4
cHIpOworICAgICAgICAKKyAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uID0gbV9jb2Rl
QmxvY2stPmZ1bmN0aW9uRXhwcihjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kKTsKKyAg
ICBpZiAoaXNBcnJvd0Z1bmN0aW9uKQorICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk5l
d0Fycm93RnVuY3Rpb24sIGRzdCwgcmVnVDAsIGZ1bmN0aW9uLCByZWdUMSk7CisgICAgZWxzZQor
ICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk5ld0Z1bmN0aW9uLCBkc3QsIHJlZ1QwLCBm
dW5jdGlvbik7CiAgICAgZG9uZS5saW5rKHRoaXMpOwogfQotCisgICAgCit2b2lkIEpJVDo6ZW1p
dF9vcF9uZXdfYXJyb3dfZnVuY19leHAoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikK
K3sKKyAgICBlbWl0TmV3RnVuY0V4cHJDb21tb24oY3VycmVudEluc3RydWN0aW9uKTsKK30KKyAg
ICAKIHZvaWQgSklUOjplbWl0X29wX25ld19hcnJheShJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQogewogICAgIGludCBkc3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5k
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCmluZGV4
IDkxYzAwZTNmZDQ1ZTA5N2UzYmIxYzM3OWQ3YzkwM2YwZmQ2MjA5OWEuLmIzOWFlMWQxYTMwNjgw
MzQzZTlmZDlhNzIzMTQyOWI2ZTU0NDEwYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wY29kZXMzMl82NC5jcHAKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJFeGNl
cHRpb24uaCIKICNpbmNsdWRlICJKSVRJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNBcnJheS5oIgor
I2luY2x1ZGUgIkpTQXJyb3dGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTQ2VsbC5oIgogI2luY2x1
ZGUgIkpTRW52aXJvbm1lbnRSZWNvcmQuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCkBAIC05
MjIsNiArOTIzLDE0IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9zY29wZShJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRTdG9yZUNlbGwoZHN0LCByZWdUMCk7CiB9CiAK
K3ZvaWQgSklUOjplbWl0X29wX2xvYWRfYXJyb3dmdW5jdGlvbl90aGlzKEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCit7CisgICAgaW50IGRzdCA9IGN1cnJlbnRJbnN0cnVjdGlvblsx
XS51Lm9wZXJhbmQ7CisgICAgZW1pdEdldEZyb21DYWxsRnJhbWVIZWFkZXJQdHIoSlNTdGFjazo6
Q2FsbGVlLCByZWdUMCk7CisgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU0Fycm93RnVuY3Rp
b246Om9mZnNldE9mVGhpc1ZhbHVlKCkpLCByZWdUMCk7CisgICAgZW1pdFN0b3JlQ2VsbChkc3Qs
IHJlZ1QwKTsKK30KKwogdm9pZCBKSVQ6OmVtaXRfb3BfY3JlYXRlX3RoaXMoSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBpbnQgY2FsbGVlID0gY3VycmVudEluc3RydWN0
aW9uWzJdLnUub3BlcmFuZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlv
bnMuY3BwCmluZGV4IGI1ZjllMzY5YTdlNTdiYWZmMDQ2ZDJhMzY1ZGJjMDI0Y2RjZGI5M2IuLjRm
ZjBlM2QxNTBiNDI2MGVmOTRiMjFlM2NiYTBmMjMxMmZiNDM4YjcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcApAQCAtNDMsNiArNDMsNyBAQAogI2luY2x1
ZGUgIkhvc3RDYWxsUmV0dXJuVmFsdWUuaCIKICNpbmNsdWRlICJKSVQuaCIKICNpbmNsdWRlICJK
SVRUb0RGR0RlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjay5oIgorI2luY2x1ZGUgIkpTQXJyb3dG
dW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJKU0dsb2JhbE9i
amVjdEZ1bmN0aW9ucy5oIgogI2luY2x1ZGUgIkpTTGV4aWNhbEVudmlyb25tZW50LmgiCkBAIC05
NDIsNiArOTQzLDMwIEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3
RnVuY3Rpb25XaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjCiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShKU0Z1bmN0aW9uOjpjcmVhdGVXaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25X
YXRjaHBvaW50KHZtLCBzdGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihmdW5jdGlvbkV4
ZWN1dGFibGUpLCBzY29wZSkpOwogfQogCitFbmNvZGVkSlNWYWx1ZSBzdGF0aWMgb3BlcmF0aW9u
TmV3RnVuY3Rpb25Db21tb24oRXhlY1N0YXRlKiBleGVjLCBKU1Njb3BlKiBzY29wZSwgSlNDZWxs
KiBmdW5jdGlvbkV4ZWN1dGFibGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgYm9vbCBpc0lu
dmFsaWRhdGVkKQoreworICAgIEFTU0VSVChmdW5jdGlvbkV4ZWN1dGFibGUtPmluaGVyaXRzKEZ1
bmN0aW9uRXhlY3V0YWJsZTo6aW5mbygpKSk7CisgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVj
dXRhYmxlID0gc3RhdGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4oZnVuY3Rpb25FeGVjdXRh
YmxlKTsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNl
ciB0cmFjZXIoJnZtLCBleGVjKTsKKyAgICAgICAgCisgICAgSlNBcnJvd0Z1bmN0aW9uKiBhcnJv
d0Z1bmN0aW9uICA9IGlzSW52YWxpZGF0ZWQKKyAgICAgICAgPyBKU0Fycm93RnVuY3Rpb246OmNy
ZWF0ZVdpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNocG9pbnQodm0sIGV4ZWN1dGFibGUs
IHNjb3BlLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSkKKyAgICAgICAgOiBKU0Fycm93RnVu
Y3Rpb246OmNyZWF0ZSh2bSwgZXhlY3V0YWJsZSwgc2NvcGUsIEpTVmFsdWU6OmRlY29kZSh0aGlz
VmFsdWUpKTsKKyAgICAKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGFycm93RnVuY3Rpb24p
OworfQorICAgIAorRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdBcnJv
d0Z1bmN0aW9uV2l0aEludmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludChFeGVjU3RhdGUq
IGV4ZWMsIEpTU2NvcGUqIHNjb3BlLCBKU0NlbGwqIGZ1bmN0aW9uRXhlY3V0YWJsZSwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlKQoreworICAgIHJldHVybiBvcGVyYXRpb25OZXdGdW5jdGlvbkNv
bW1vbihleGVjLCBzY29wZSwgZnVuY3Rpb25FeGVjdXRhYmxlLCB0aGlzVmFsdWUsIHRydWUpOwor
fQorICAgIAorRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdBcnJvd0Z1
bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNTY29wZSogc2NvcGUsIEpTQ2VsbCogZnVuY3Rpb25F
eGVjdXRhYmxlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUpCit7CisgICAgcmV0dXJuIG9wZXJh
dGlvbk5ld0Z1bmN0aW9uQ29tbW9uKGV4ZWMsIHNjb3BlLCBmdW5jdGlvbkV4ZWN1dGFibGUsIHRo
aXNWYWx1ZSwgZmFsc2UpOworfQorCiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3
T2JqZWN0KEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiB7CiAgICAgVk0q
IHZtID0gJmV4ZWMtPnZtKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE9wZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9u
cy5oCmluZGV4IDNkODNmNTkwZGNmOTE4MDNhMzQ0OGJhMDgzYjJmOTJiY2JlODRmOWIuLmE2N2Nh
YWNiMzJmYjIxNThhOWMwNWU2YTUwOTYyMWIzYjgzZThlN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCkBAIC0xMjIsNiArMTIyLDcgQEAgdHlwZWRlZiBFbmNv
ZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OICgqSl9KSVRPcGVyYXRpb25fRVBQKShFeGVjU3RhdGUq
LCB2b2lkKiwgdm8KIHR5cGVkZWYgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiAoKkpfSklU
T3BlcmF0aW9uX0VQUykoRXhlY1N0YXRlKiwgdm9pZCosIHNpemVfdCk7CiB0eXBlZGVmIEVuY29k
ZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gKCpKX0pJVE9wZXJhdGlvbl9FUGMpKEV4ZWNTdGF0ZSos
IEluc3RydWN0aW9uKik7CiB0eXBlZGVmIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gKCpK
X0pJVE9wZXJhdGlvbl9FSnNjQykoRXhlY1N0YXRlKiwgSlNTY29wZSosIEpTQ2VsbCopOwordHlw
ZWRlZiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OICgqSl9KSVRPcGVyYXRpb25fRUpzY0NK
KShFeGVjU3RhdGUqLCBKU1Njb3BlKiwgSlNDZWxsKiwgRW5jb2RlZEpTVmFsdWUpOwogdHlwZWRl
ZiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OICgqSl9KSVRPcGVyYXRpb25fRVNTKShFeGVj
U3RhdGUqLCBzaXplX3QsIHNpemVfdCk7CiB0eXBlZGVmIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVS
QVRJT04gKCpKX0pJVE9wZXJhdGlvbl9FU3NpQ0kpKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZVN0dWJJ
bmZvKiwgSlNDZWxsKiwgVW5pcXVlZFN0cmluZ0ltcGwqKTsKIHR5cGVkZWYgRW5jb2RlZEpTVmFs
dWUgSklUX09QRVJBVElPTiAoKkpfSklUT3BlcmF0aW9uX0VTc2lKSSkoRXhlY1N0YXRlKiwgU3Ry
dWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSwgVW5pcXVlZFN0cmluZ0ltcGwqKTsKQEAg
LTI4OCw2ICsyODksOCBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5l
d0FycmF5QnVmZmVyV2l0aFByb2ZpbGUoRXhlY1N0YXRlKiwgQXJyYQogRW5jb2RlZEpTVmFsdWUg
SklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdBcnJheVdpdGhTaXplQW5kUHJvZmlsZShFeGVjU3Rh
dGUqLCBBcnJheUFsbG9jYXRpb25Qcm9maWxlKiwgRW5jb2RlZEpTVmFsdWUgc2l6ZSkgV1RGX0lO
VEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdGdW5jdGlv
bihFeGVjU3RhdGUqLCBKU1Njb3BlKiwgSlNDZWxsKikgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpT
VmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdGdW5jdGlvbldpdGhJbnZhbGlkYXRlZFJl
YWxsb2NhdGlvbldhdGNocG9pbnQoRXhlY1N0YXRlKiwgSlNTY29wZSosIEpTQ2VsbCopIFdURl9J
TlRFUk5BTDsKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3QXJyb3dG
dW5jdGlvbihFeGVjU3RhdGUqLCBKU1Njb3BlKiwgSlNDZWxsKiwgRW5jb2RlZEpTVmFsdWUpIFdU
Rl9JTlRFUk5BTDsKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3QXJy
b3dGdW5jdGlvbldpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNocG9pbnQoRXhlY1N0YXRl
KiwgSlNTY29wZSosIEpTQ2VsbCosIEVuY29kZWRKU1ZhbHVlKSBXVEZfSU5URVJOQUw7CiBKU0Nl
bGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3T2JqZWN0KEV4ZWNTdGF0ZSosIFN0cnVjdHVy
ZSopIFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
TmV3UmVnZXhwKEV4ZWNTdGF0ZSosIHZvaWQqKSBXVEZfSU5URVJOQUw7CiB2b2lkIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uSGFuZGxlV2F0Y2hkb2dUaW1lcihFeGVjU3RhdGUqKSBXVEZfSU5URVJO
QUw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZzZXRz
RXh0cmFjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNF
eHRyYWN0b3IuY3BwCmluZGV4IDJkNDY3N2M2NjU1N2JiY2M1ZTRkMTA5ZWY5YjAxMzhkOWE4M2Yx
ZWMuLmEyYTZiMmIxMWM1NjgxZTBiNmU5NzBjNGZkMTFjOTZlMTlkYjkzZGEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3Bw
CkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJK
SVRTdHVicy5oIgogI2luY2x1ZGUgIkpTQXJyYXkuaCIKKyNpbmNsdWRlICJKU0Fycm93RnVuY3Rp
b24uaCIKICNpbmNsdWRlICJKU0NlbGwuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5j
bHVkZSAiVk0uaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTElu
dFNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0
aHMuY3BwCmluZGV4IDU1YjgxZWUwZjc4ZmE3YWQ5YTIwZGNkNDc2ODEyYjQxZjU2ODVkN2YuLjJj
ZDlmNmViOGQ2ODM4Njg3MDk3YzRlY2NlNzkyMTU5MTUxMDFmMDEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcApAQCAtMzksNiArMzksNyBAQAog
I2luY2x1ZGUgIkludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiSklULmgiCiAjaW5jbHVkZSAiSklU
RXhjZXB0aW9ucy5oIgorI2luY2x1ZGUgIkpTQXJyb3dGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpT
TGV4aWNhbEVudmlyb25tZW50LmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUg
IkpTQ0pTVmFsdWUuaCIKQEAgLTE3MSw3ICsxNzIsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNw
YWNlIExMSW50IHsKICAgICAgICAgRXhlY1N0YXRlKiBfX3JjZl9leGVjID0gKGV4ZWNDYWxsZWUp
OyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgTExJTlRfUkVUVVJOX1RXTyhw
YywgX19yY2ZfZXhlYyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICB9IHdo
aWxlIChmYWxzZSkKLQorICAgIAogZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgbGxpbnRf
dHJhY2Vfb3BlcmFuZChFeGVjU3RhdGUqIGV4ZWMsIEluc3RydWN0aW9uKiBwYywgaW50IGZyb21X
aGVyZSwgaW50IG9wZXJhbmQpCiB7CiAgICAgTExJTlRfQkVHSU4oKTsKQEAgLTEwMTMsMTIgKzEw
MTQsMjQgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX25ld19mdW5jKQogTExJTlRf
U0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX25ld19mdW5jX2V4cCkKIHsKICAgICBMTElOVF9CRUdJ
TigpOworICAgIAogICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7
CiAgICAgSlNTY29wZSogc2NvcGUgPSBleGVjLT51bmNoZWNrZWRSKHBjWzJdLnUub3BlcmFuZCku
UmVnaXN0ZXI6OnNjb3BlKCk7Ci0gICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbiA9IGNv
ZGVCbG9jay0+ZnVuY3Rpb25FeHByKHBjWzNdLnUub3BlcmFuZCk7Ci0gICAgSlNGdW5jdGlvbiog
ZnVuYyA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgZnVuY3Rpb24sIHNjb3BlKTsKKyAgICBGdW5j
dGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBjb2RlQmxvY2stPmZ1bmN0aW9uRXhwcihwY1sz
XS51Lm9wZXJhbmQpOwogICAgIAotICAgIExMSU5UX1JFVFVSTihmdW5jKTsKKyAgICBMTElOVF9S
RVRVUk4oSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBleGVjdXRhYmxlLCBzY29wZSkpOworfQorCitM
TElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfbmV3X2Fycm93X2Z1bmNfZXhwKQoreworICAg
IExMSU5UX0JFR0lOKCk7CisKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IExMSU5UX09QX0MoNCku
anNWYWx1ZSgpOworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7
CisgICAgSlNTY29wZSogc2NvcGUgPSBleGVjLT51bmNoZWNrZWRSKHBjWzJdLnUub3BlcmFuZCku
UmVnaXN0ZXI6OnNjb3BlKCk7CisgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0g
Y29kZUJsb2NrLT5mdW5jdGlvbkV4cHIocGNbM10udS5vcGVyYW5kKTsKKyAgICAKKyAgICBMTElO
VF9SRVRVUk4oSlNBcnJvd0Z1bmN0aW9uOjpjcmVhdGUodm0sIGV4ZWN1dGFibGUsIHNjb3BlLCB0
aGlzVmFsdWUpKTsKIH0KIAogc3RhdGljIFNsb3dQYXRoUmV0dXJuVHlwZSBoYW5kbGVIb3N0Q2Fs
bChFeGVjU3RhdGUqIGV4ZWNDYWxsZWUsIEluc3RydWN0aW9uKiBwYywgSlNWYWx1ZSBjYWxsZWUs
IENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKQEAgLTEwOTYsNyArMTEwOSw3IEBAIGlubGlu
ZSBTbG93UGF0aFJldHVyblR5cGUgc2V0VXBDYWxsKEV4ZWNTdGF0ZSogZXhlY0NhbGxlZSwgSW5z
dHJ1Y3Rpb24qIHBjLCBDb2RlCiAgICAgSlNTY29wZSogc2NvcGUgPSBjYWxsZWUtPnNjb3BlVW5j
aGVja2VkKCk7CiAgICAgVk0mIHZtID0gKnNjb3BlLT52bSgpOwogICAgIEV4ZWN1dGFibGVCYXNl
KiBleGVjdXRhYmxlID0gY2FsbGVlLT5leGVjdXRhYmxlKCk7Ci0gICAgCisKICAgICBNYWNyb0Fz
c2VtYmxlckNvZGVQdHIgY29kZVB0cjsKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IDA7CiAg
ICAgaWYgKGV4ZWN1dGFibGUtPmlzSG9zdEZ1bmN0aW9uKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5oCmluZGV4IDhjYzY5YTk2MDBiYmY5ZDg1MzM5ZDYw
OTU5NWY2N2M2OGQwNzY3MWIuLjNmMWRhYTgxMmI3MDJlMjNjNmFhZWY5ZmQ3YzA2NzFlZTIwMjVj
MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRo
cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5oCkBA
IC05Nyw2ICs5Nyw3IEBAIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfc3dp
dGNoX2NoYXIpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9zd2l0Y2hf
c3RyaW5nKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfbmV3X2Z1bmMp
OwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9uZXdfZnVuY19leHApOwor
TExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9uZXdfYXJyb3dfZnVuY19leHAp
OwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9jYWxsKTsKIExMSU5UX1NM
T1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfY29uc3RydWN0KTsKIExMSU5UX1NMT1dfUEFU
SF9ISURERU5fREVDTChzbG93X3BhdGhfc2l6ZV9mcmFtZV9mb3JfdmFyYXJncyk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20g
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KaW5k
ZXggYzkxMDYxN2VkODM0Yjc0YzlmMmY4ZWU0YjI2ODdjOGI5Y2ZlM2M3Yy4uNzNmYzU4ODQ0MmRk
YzRiOWNmYTdiODhmMDA0Y2E4NjczZTQ5OWE0NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQpAQCAtMTE4Myw2ICsxMTgzLDEw
IEBAIF9sbGludF9vcF9uZXdfZnVuY19leHA6CiAgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93
X3BhdGhfbmV3X2Z1bmNfZXhwKQogICAgIGRpc3BhdGNoKDQpCiAKK19sbGludF9vcF9uZXdfYXJy
b3dfZnVuY19leHA6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxTbG93UGF0aChfbGxp
bnRfc2xvd19wYXRoX25ld19hcnJvd19mdW5jX2V4cCkKKyAgICBkaXNwYXRjaCg1KQogCiBfbGxp
bnRfb3BfY2FsbDoKICAgICB0cmFjZUV4ZWN1dGlvbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbSBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCmluZGV4IGU5
MGVjZWRmYTczMDk4MmZlZWY3MWVlYjBjZWE2NDM4MjM0YTY5MWMuLjdlZjZiODdjMTcwYWQwODNi
MWY1MjlkYTg4MzZjMDBjZGE2NGI0NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCkBAIC0yMzczLDMgKzIz
NzMsMTIgQEAgX2xsaW50X29wX3Byb2ZpbGVfdHlwZToKIAogLm9wUHJvZmlsZVR5cGVEb25lOgog
ICAgIGRpc3BhdGNoKDYpCisKK19sbGludF9vcF9sb2FkX2Fycm93ZnVuY3Rpb25fdGhpczoKKyAg
ICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgQ2FsbGVlICsgUGF5bG9hZE9mZnNldFtjZnJd
LCB0MAorICAgIGxvYWRpIEpTQXJyb3dGdW5jdGlvbjo6bV9ib3VuZFRoaXNbdDBdLCB0MAorICAg
IGxvYWRpc0Zyb21JbnN0cnVjdGlvbigxLCB0MSkKKyAgICBzdG9yZWkgQ2VsbFRhZywgVGFnT2Zm
c2V0W2NmciwgdDEsIDhdCisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhd
CisgICAgZGlzcGF0Y2goMikKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbSBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCmlu
ZGV4IGQ5NDU1Zjc1YzdiNjY0MmZiOGM4NzIzZmMxNTJhMzc5MDkxMDNiNWIuLmQyMTUyYTJmMjc3
YWRlNTg3OTc2YTFjM2YxMjAyMzcyOWIzOGE1OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCkBAIC0yMjI2LDMgKzIy
MjYsMTEgQEAgX2xsaW50X29wX3Byb2ZpbGVfdHlwZToKIAogLm9wUHJvZmlsZVR5cGVEb25lOgog
ICAgIGRpc3BhdGNoKDYpCisKK19sbGludF9vcF9sb2FkX2Fycm93ZnVuY3Rpb25fdGhpczoKKyAg
ICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZHAgQ2FsbGVlW2Nmcl0sIHQwCisgICAgbG9hZHAg
SlNBcnJvd0Z1bmN0aW9uOjptX2JvdW5kVGhpc1t0MF0sIHQwCisgICAgbG9hZGlzRnJvbUluc3Ry
dWN0aW9uKDEsIHQxKQorICAgIHN0b3JlcSB0MCwgW2NmciwgdDEsIDhdCisgICAgZGlzcGF0Y2go
MikKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvQVNUQnVpbGRlci5oCmluZGV4IDdiNTg3NzMwYTZmMDM1NDQwZGI5MGQ5YzQyNjgwYWQ1Nzhi
OTRhNjcuLjgwNmRiNTIzMDNkNWFkM2E3MTg4MTI5Zjg4YmQ3NjRjNmI1MGVlYzQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCkBAIC0zNjEsMTkgKzM2MSwxOSBA
QCBwdWJsaWM6CiAgICAgICAgIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnRMb2NhdGlvbiwg
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiBlbmRMb2NhdGlvbiwgCiAgICAgICAgIHVuc2lnbmVkIHN0
YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRDb2x1bW4sIGludCBmdW5jdGlvbktleXdvcmRTdGFydCwg
CiAgICAgICAgIGludCBmdW5jdGlvbk5hbWVTdGFydCwgaW50IHBhcmFtZXRlcnNTdGFydCwgYm9v
bCBpblN0cmljdENvbnRleHQsIAotICAgICAgICBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JL
aW5kLCB1bnNpZ25lZCBwYXJhbWV0ZXJDb3VudCwgU291cmNlUGFyc2VNb2RlIG1vZGUpCisgICAg
ICAgIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIHVuc2lnbmVkIHBhcmFtZXRlckNv
dW50LCBTb3VyY2VQYXJzZU1vZGUgbW9kZSwgYm9vbCBpc0Fycm93RnVuY3Rpb24pCiAgICAgewog
ICAgICAgICByZXR1cm4gbmV3IChtX3BhcnNlckFyZW5hKSBGdW5jdGlvbk1ldGFkYXRhTm9kZSgK
ICAgICAgICAgICAgIG1fcGFyc2VyQXJlbmEsIHN0YXJ0TG9jYXRpb24sIGVuZExvY2F0aW9uLCBz
dGFydENvbHVtbiwgZW5kQ29sdW1uLCAKICAgICAgICAgICAgIGZ1bmN0aW9uS2V5d29yZFN0YXJ0
LCBmdW5jdGlvbk5hbWVTdGFydCwgcGFyYW1ldGVyc1N0YXJ0LCAKLSAgICAgICAgICAgIGluU3Ry
aWN0Q29udGV4dCwgY29uc3RydWN0b3JLaW5kLCBwYXJhbWV0ZXJDb3VudCwgbW9kZSk7CisgICAg
ICAgICAgICBpblN0cmljdENvbnRleHQsIGNvbnN0cnVjdG9yS2luZCwgcGFyYW1ldGVyQ291bnQs
IG1vZGUsIGlzQXJyb3dGdW5jdGlvbik7CiAgICAgfQogCiAgICAgRXhwcmVzc2lvbk5vZGUqIGNy
ZWF0ZUFycm93RnVuY3Rpb25FeHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNv
bnN0IFBhcnNlckZ1bmN0aW9uSW5mbzxBU1RCdWlsZGVyPiYgZnVuY3Rpb25JbmZvKQogICAgIHsK
KyAgICAgICAgdXNlc1RoaXMoKTsKICAgICAgICAgU291cmNlQ29kZSBzb3VyY2UgPSBtX3NvdXJj
ZUNvZGUtPnN1YkV4cHJlc3Npb24oZnVuY3Rpb25JbmZvLnN0YXJ0T2Zmc2V0LCBmdW5jdGlvbklu
Zm8uZW5kT2Zmc2V0LCBmdW5jdGlvbkluZm8uc3RhcnRMaW5lLCBmdW5jdGlvbkluZm8uYm9keVN0
YXJ0Q29sdW1uKTsKLQotICAgICAgICBGdW5jRXhwck5vZGUqIHJlc3VsdCA9IG5ldyAobV9wYXJz
ZXJBcmVuYSkgRnVuY0V4cHJOb2RlKGxvY2F0aW9uLCAqZnVuY3Rpb25JbmZvLm5hbWUsIGZ1bmN0
aW9uSW5mby5ib2R5LCBzb3VyY2UpOworICAgICAgICBBcnJvd0Z1bmNFeHByTm9kZSogcmVzdWx0
ID0gbmV3IChtX3BhcnNlckFyZW5hKSBBcnJvd0Z1bmNFeHByTm9kZShsb2NhdGlvbiwgKmZ1bmN0
aW9uSW5mby5uYW1lLCBmdW5jdGlvbkluZm8uYm9keSwgc291cmNlKTsKICAgICAgICAgZnVuY3Rp
b25JbmZvLmJvZHktPnNldExvYyhmdW5jdGlvbkluZm8uc3RhcnRMaW5lLCBmdW5jdGlvbkluZm8u
ZW5kTGluZSwgbG9jYXRpb24uc3RhcnRPZmZzZXQsIGxvY2F0aW9uLmxpbmVTdGFydE9mZnNldCk7
CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9Ob2RlQ29uc3RydWN0b3JzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaAppbmRleCBhYmI3MmE3NGUxMjg4NDhlYThiNDNm
ZDg2MzY5NzRjYjk5N2MzN2RiLi5iZGMxYmVlNzc4NDQ4NzJhYTYyNGQ0NDNiY2JhMTk2OTNhZGJk
MTY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVDb25zdHJ1
Y3RvcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVDb25zdHJ1Y3Rv
cnMuaApAQCAtODkwLDEzICs4OTAsMTkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgewogICAgIH0K
IAotICAgIGlubGluZSBGdW5jRXhwck5vZGU6OkZ1bmNFeHByTm9kZShjb25zdCBKU1Rva2VuTG9j
YXRpb24mIGxvY2F0aW9uLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgRnVuY3Rpb25NZXRhZGF0
YU5vZGUqIG1fbWV0YWRhdGEsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSkKKyAgICAKKyAgICBp
bmxpbmUgQmFzZUZ1bmNFeHByTm9kZTo6QmFzZUZ1bmNFeHByTm9kZShjb25zdCBKU1Rva2VuTG9j
YXRpb24mIGxvY2F0aW9uLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgRnVuY3Rpb25NZXRhZGF0
YU5vZGUqIG1fbWV0YWRhdGEsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSkKICAgICAgICAgOiBF
eHByZXNzaW9uTm9kZShsb2NhdGlvbikKICAgICAgICAgLCBtX21ldGFkYXRhKG1fbWV0YWRhdGEp
CiAgICAgewogICAgICAgICBtX21ldGFkYXRhLT5maW5pc2hQYXJzaW5nKHNvdXJjZSwgaWRlbnQs
IEZ1bmN0aW9uRXhwcmVzc2lvbik7CiAgICAgfQogCisgICAgaW5saW5lIEZ1bmNFeHByTm9kZTo6
RnVuY0V4cHJOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IElkZW50
aWZpZXImIGlkZW50LCBGdW5jdGlvbk1ldGFkYXRhTm9kZSogbV9tZXRhZGF0YSwgY29uc3QgU291
cmNlQ29kZSYgc291cmNlKQorICAgICAgICA6IEJhc2VGdW5jRXhwck5vZGUobG9jYXRpb24sIGlk
ZW50LCBtX21ldGFkYXRhLCBzb3VyY2UpCisgICAgeworICAgIH0KKwogICAgIGlubGluZSBGdW5j
RGVjbE5vZGU6OkZ1bmNEZWNsTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBj
b25zdCBJZGVudGlmaWVyJiBpZGVudCwgRnVuY3Rpb25NZXRhZGF0YU5vZGUqIG1fbWV0YWRhdGEs
IGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSkKICAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxvY2F0
aW9uKQogICAgICAgICAsIG1fbWV0YWRhdGEobV9tZXRhZGF0YSkKQEAgLTkwNCw2ICs5MTAsMTEg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIG1fbWV0YWRhdGEtPmZpbmlzaFBhcnNpbmcoc291
cmNlLCBpZGVudCwgRnVuY3Rpb25EZWNsYXJhdGlvbik7CiAgICAgfQogCisgICAgaW5saW5lIEFy
cm93RnVuY0V4cHJOb2RlOjpBcnJvd0Z1bmNFeHByTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24m
IGxvY2F0aW9uLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgRnVuY3Rpb25NZXRhZGF0YU5vZGUq
IG1fbWV0YWRhdGEsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSkKKyAgICAgICAgOiBCYXNlRnVu
Y0V4cHJOb2RlKGxvY2F0aW9uLCBpZGVudCwgbV9tZXRhZGF0YSwgc291cmNlKQorICAgIHsKKyAg
ICB9CisKICNpZiBFTkFCTEUoRVM2X0NMQVNTX1NZTlRBWCkKICAgICBpbmxpbmUgQ2xhc3NEZWNs
Tm9kZTo6Q2xhc3NEZWNsTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHBy
ZXNzaW9uTm9kZSogY2xhc3NEZWNsYXJhdGlvbikKICAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxv
Y2F0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcAppbmRleCBjZjRmZTQ1
MGE5MjQ5NTA0ZjMwYmE4NWEyNjRlNjdiYWE5YTU1Yzk2Li4xOGY4NDU1MzMwNWM0YTBjMjFjNzMz
ODgzOWMyOWYyM2M3NGRlOTI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL05vZGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNw
cApAQCAtMTUxLDcgKzE1MSw3IEBAIEZ1bmN0aW9uTWV0YWRhdGFOb2RlOjpGdW5jdGlvbk1ldGFk
YXRhTm9kZSgKICAgICBQYXJzZXJBcmVuYSYsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnRM
b2NhdGlvbiwgCiAgICAgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBlbmRMb2NhdGlvbiwgdW5zaWdu
ZWQgc3RhcnRDb2x1bW4sIHVuc2lnbmVkIGVuZENvbHVtbiwgCiAgICAgaW50IGZ1bmN0aW9uS2V5
d29yZFN0YXJ0LCBpbnQgZnVuY3Rpb25OYW1lU3RhcnQsIGludCBwYXJhbWV0ZXJzU3RhcnQsIGJv
b2wgaXNJblN0cmljdENvbnRleHQsIAotICAgIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3Rvcktp
bmQsIHVuc2lnbmVkIHBhcmFtZXRlckNvdW50LCBTb3VyY2VQYXJzZU1vZGUgbW9kZSkKKyAgICBD
b25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCB1bnNpZ25lZCBwYXJhbWV0ZXJDb3VudCwg
U291cmNlUGFyc2VNb2RlIG1vZGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uKQogICAgICAgICA6IE5v
ZGUoZW5kTG9jYXRpb24pCiAgICAgICAgICwgbV9zdGFydENvbHVtbihzdGFydENvbHVtbikKICAg
ICAgICAgLCBtX2VuZENvbHVtbihlbmRDb2x1bW4pCkBAIC0xNjMsNiArMTYzLDcgQEAgRnVuY3Rp
b25NZXRhZGF0YU5vZGU6OkZ1bmN0aW9uTWV0YWRhdGFOb2RlKAogICAgICAgICAsIG1fcGFyc2VN
b2RlKG1vZGUpCiAgICAgICAgICwgbV9pc0luU3RyaWN0Q29udGV4dChpc0luU3RyaWN0Q29udGV4
dCkKICAgICAgICAgLCBtX2NvbnN0cnVjdG9yS2luZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY29u
c3RydWN0b3JLaW5kKSkKKyAgICAgICAgLCBtX2lzQXJyb3dGdW5jdGlvbihpc0Fycm93RnVuY3Rp
b24pCiB7CiAgICAgQVNTRVJUKG1fY29uc3RydWN0b3JLaW5kID09IHN0YXRpY19jYXN0PHVuc2ln
bmVkPihjb25zdHJ1Y3RvcktpbmQpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvTm9kZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMu
aAppbmRleCAxZDZiMDNkNzc2NjI5N2FlMTc1OTNiYmE5YWVjNTYwOTMyOTMwYzJkLi44NzM2Njhl
YzM3YjQyN2I5MjA2NDlkZTMwNjgzODFlMmNkOGExNTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9Ob2Rlcy5oCkBAIC0xNjUsNiArMTY1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IHZpcnR1YWwgYm9vbCBpc0RvdEFjY2Vzc29yTm9kZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0Rlc3RydWN0dXJpbmdOb2RlKCkgY29uc3QgeyByZXR1
cm4gZmFsc2U7IH0KICAgICAgICAgdmlydHVhbCBib29sIGlzRnVuY0V4cHJOb2RlKCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KKyAgICAgICAgdmlydHVhbCBib29sIGlzQXJyb3dGdW5jRXhwck5v
ZGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNDb21t
YU5vZGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNT
aW1wbGVBcnJheSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgICAgIHZpcnR1YWwgYm9v
bCBpc0FkZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CkBAIC0xODA5LDcgKzE4MTAsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIFBhcnNlckFyZW5hJiwgY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiBzdGFydCwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBlbmQsIAogICAgICAgICAgICAg
dW5zaWduZWQgc3RhcnRDb2x1bW4sIHVuc2lnbmVkIGVuZENvbHVtbiwgaW50IGZ1bmN0aW9uS2V5
d29yZFN0YXJ0LCAKICAgICAgICAgICAgIGludCBmdW5jdGlvbk5hbWVTdGFydCwgaW50IHBhcmFt
ZXRlcnNTdGFydCwgYm9vbCBpc0luU3RyaWN0Q29udGV4dCwgCi0gICAgICAgICAgICBDb25zdHJ1
Y3RvcktpbmQsIHVuc2lnbmVkLCBTb3VyY2VQYXJzZU1vZGUpOworICAgICAgICAgICAgQ29uc3Ry
dWN0b3JLaW5kLCB1bnNpZ25lZCwgU291cmNlUGFyc2VNb2RlLCBib29sIGlzQXJyb3dGdW5jdGlv
bik7CiAKICAgICAgICAgdm9pZCBmaW5pc2hQYXJzaW5nKGNvbnN0IFNvdXJjZUNvZGUmLCBjb25z
dCBJZGVudGlmaWVyJiwgRnVuY3Rpb25Nb2RlKTsKICAgICAgICAgCkBAIC0xODM1LDYgKzE4MzYs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgaW50IHN0YXJ0U3RhcnRPZmZzZXQoKSBjb25z
dCB7IHJldHVybiBtX3N0YXJ0U3RhcnRPZmZzZXQ7IH0KICAgICAgICAgYm9vbCBpc0luU3RyaWN0
Q29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1faXNJblN0cmljdENvbnRleHQ7IH0KICAgICAgICAg
Q29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCgpIHsgcmV0dXJuIHN0YXRpY19jYXN0PENv
bnN0cnVjdG9yS2luZD4obV9jb25zdHJ1Y3RvcktpbmQpOyB9CisgICAgICAgIGJvb2wgaXNBcnJv
d0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pc0Fycm93RnVuY3Rpb247IH0KIAogICAgICAg
ICB2b2lkIHNldExvYyh1bnNpZ25lZCBmaXJzdExpbmUsIHVuc2lnbmVkIGxhc3RMaW5lLCBpbnQg
c3RhcnRPZmZzZXQsIGludCBsaW5lU3RhcnRPZmZzZXQpCiAgICAgICAgIHsKQEAgLTE4NjAsNiAr
MTg2Miw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBTb3VyY2VQYXJzZU1vZGUgbV9wYXJz
ZU1vZGU7CiAgICAgICAgIHVuc2lnbmVkIG1faXNJblN0cmljdENvbnRleHQgOiAxOwogICAgICAg
ICB1bnNpZ25lZCBtX2NvbnN0cnVjdG9yS2luZCA6IDI7CisgICAgICAgIHVuc2lnbmVkIG1faXNB
cnJvd0Z1bmN0aW9uIDogMTsKICAgICB9OwogCiAgICAgY2xhc3MgRnVuY3Rpb25Ob2RlIGZpbmFs
IDogcHVibGljIFNjb3BlTm9kZSB7CkBAIC0xODg5LDE4ICsxODkyLDM1IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICB1bnNpZ25lZCBtX2VuZENvbHVtbjsKICAgICB9OwogCi0gICAgY2xhc3Mg
RnVuY0V4cHJOb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlIHsKKyAgICBjbGFzcyBCYXNlRnVu
Y0V4cHJOb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAg
IEZ1bmNFeHByTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyJiwg
RnVuY3Rpb25NZXRhZGF0YU5vZGUqLCBjb25zdCBTb3VyY2VDb2RlJik7CisgICAgICAgIEJhc2VG
dW5jRXhwck5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciYsIEZ1
bmN0aW9uTWV0YWRhdGFOb2RlKiwgY29uc3QgU291cmNlQ29kZSYpOwogCiAgICAgICAgIEZ1bmN0
aW9uTWV0YWRhdGFOb2RlKiBtZXRhZGF0YSgpIHsgcmV0dXJuIG1fbWV0YWRhdGE7IH0KIAorICAg
IHByb3RlY3RlZDoKKyAgICAgICAgRnVuY3Rpb25NZXRhZGF0YU5vZGUqIG1fbWV0YWRhdGE7Cisg
ICAgfTsKKworCisgICAgY2xhc3MgRnVuY0V4cHJOb2RlIDogcHVibGljIEJhc2VGdW5jRXhwck5v
ZGUgeworICAgIHB1YmxpYzoKKyAgICAgICAgRnVuY0V4cHJOb2RlKGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYsIGNvbnN0IElkZW50aWZpZXImLCBGdW5jdGlvbk1ldGFkYXRhTm9kZSosIGNvbnN0IFNv
dXJjZUNvZGUmKTsKKwogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCog
ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlk
ZTsKIAogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNGdW5jRXhwck5vZGUoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiB0cnVlOyB9CisgICAgfTsKIAotICAgICAgICBGdW5jdGlvbk1ldGFkYXRhTm9k
ZSogbV9tZXRhZGF0YTsKKyAgICBjbGFzcyBBcnJvd0Z1bmNFeHByTm9kZSA6IHB1YmxpYyBCYXNl
RnVuY0V4cHJOb2RlIHsKKyAgICBwdWJsaWM6CisgICAgICAgIEFycm93RnVuY0V4cHJOb2RlKGNv
bnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50aWZpZXImLCBGdW5jdGlvbk1ldGFkYXRh
Tm9kZSosIGNvbnN0IFNvdXJjZUNvZGUmKTsKKworICAgIHByaXZhdGU6CisgICAgICAgIHZpcnR1
YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJ
RCogPSAwKSBvdmVycmlkZTsKKworICAgICAgICB2aXJ0dWFsIGJvb2wgaXNBcnJvd0Z1bmNFeHBy
Tm9kZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICAgICB9OwogCiAjaWYgRU5B
QkxFKEVTNl9DTEFTU19TWU5UQVgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL1BhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5j
cHAKaW5kZXggYWVlNzBiNmE3MzI5YmMxMWI1Y2U3M2Q1MzUyZDMxM2UyMmEyN2JlMS4uZjUwODE0
ZTdiMTQyYWI1MzAwZDg0YTRiNzAxOWY5Yzk4NGUyYjE4NSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvUGFyc2VyLmNwcApAQCAtMTU0NiwxMSArMTU0NiwxMiBAQCB0ZW1wbGF0ZSA8Y2xh
c3MgVHJlZUJ1aWxkZXI+IFRyZWVGdW5jdGlvbkJvZHkgUGFyc2VyPExleGVyVHlwZT46OnBhcnNl
RnVuY3Rpb25CbwogICAgIFRyZWVCdWlsZGVyJiBjb250ZXh0LCBjb25zdCBKU1Rva2VuTG9jYXRp
b24mIHN0YXJ0TG9jYXRpb24sIGludCBzdGFydENvbHVtbiwgaW50IGZ1bmN0aW9uS2V5d29yZFN0
YXJ0LCBpbnQgZnVuY3Rpb25OYW1lU3RhcnQsIGludCBwYXJhbWV0ZXJzU3RhcnQsIAogICAgIENv
bnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIEZ1bmN0aW9uQm9keVR5cGUgYm9keVR5cGUs
IHVuc2lnbmVkIHBhcmFtZXRlckNvdW50LCBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKQogewor
ICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uID0gRnVuY3Rpb25Cb2R5VHlwZTo6U3RhbmRhcmRGdW5j
dGlvbkJvZHlCbG9jayAhPSBib2R5VHlwZTsKICAgICBpZiAoYm9keVR5cGUgPT0gU3RhbmRhcmRG
dW5jdGlvbkJvZHlCbG9jayB8fCBib2R5VHlwZSA9PSBBcnJvd0Z1bmN0aW9uQm9keUJsb2NrKSB7
CiAgICAgICAgIG5leHQoKTsKICAgICAgICAgaWYgKG1hdGNoKENMT1NFQlJBQ0UpKSB7CiAgICAg
ICAgICAgICB1bnNpZ25lZCBlbmRDb2x1bW4gPSB0b2tlbkNvbHVtbigpOwotICAgICAgICAgICAg
cmV0dXJuIGNvbnRleHQuY3JlYXRlRnVuY3Rpb25NZXRhZGF0YShzdGFydExvY2F0aW9uLCB0b2tl
bkxvY2F0aW9uKCksIHN0YXJ0Q29sdW1uLCBlbmRDb2x1bW4sIGZ1bmN0aW9uS2V5d29yZFN0YXJ0
LCBmdW5jdGlvbk5hbWVTdGFydCwgcGFyYW1ldGVyc1N0YXJ0LCBzdHJpY3RNb2RlKCksIGNvbnN0
cnVjdG9yS2luZCwgcGFyYW1ldGVyQ291bnQsIHBhcnNlTW9kZSk7CisgICAgICAgICAgICByZXR1
cm4gY29udGV4dC5jcmVhdGVGdW5jdGlvbk1ldGFkYXRhKHN0YXJ0TG9jYXRpb24sIHRva2VuTG9j
YXRpb24oKSwgc3RhcnRDb2x1bW4sIGVuZENvbHVtbiwgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1
bmN0aW9uTmFtZVN0YXJ0LCBwYXJhbWV0ZXJzU3RhcnQsIHN0cmljdE1vZGUoKSwgY29uc3RydWN0
b3JLaW5kLCBwYXJhbWV0ZXJDb3VudCwgcGFyc2VNb2RlLCBpc0Fycm93RnVuY3Rpb24pOwogICAg
ICAgICB9CiAgICAgfQogCkBAIC0xNTYyLDcgKzE1NjMsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJl
ZUJ1aWxkZXI+IFRyZWVGdW5jdGlvbkJvZHkgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlRnVuY3Rp
b25CbwogICAgIGVsc2UKICAgICAgICAgZmFpbElmRmFsc2UocGFyc2VTb3VyY2VFbGVtZW50cyhz
eW50YXhDaGVja2VyLCBDaGVja0ZvclN0cmljdE1vZGUpLCBib2R5VHlwZSA9PSBTdGFuZGFyZEZ1
bmN0aW9uQm9keUJsb2NrID8gIkNhbm5vdCBwYXJzZSBib2R5IG9mIHRoaXMgZnVuY3Rpb24iIDog
IkNhbm5vdCBwYXJzZSBib2R5IG9mIHRoaXMgYXJyb3cgZnVuY3Rpb24iKTsKICAgICB1bnNpZ25l
ZCBlbmRDb2x1bW4gPSB0b2tlbkNvbHVtbigpOwotICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUZ1
bmN0aW9uTWV0YWRhdGEoc3RhcnRMb2NhdGlvbiwgdG9rZW5Mb2NhdGlvbigpLCBzdGFydENvbHVt
biwgZW5kQ29sdW1uLCBmdW5jdGlvbktleXdvcmRTdGFydCwgZnVuY3Rpb25OYW1lU3RhcnQsIHBh
cmFtZXRlcnNTdGFydCwgc3RyaWN0TW9kZSgpLCBjb25zdHJ1Y3RvcktpbmQsIHBhcmFtZXRlckNv
dW50LCBwYXJzZU1vZGUpOworICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9uTWV0YWRh
dGEoc3RhcnRMb2NhdGlvbiwgdG9rZW5Mb2NhdGlvbigpLCBzdGFydENvbHVtbiwgZW5kQ29sdW1u
LCBmdW5jdGlvbktleXdvcmRTdGFydCwgZnVuY3Rpb25OYW1lU3RhcnQsIHBhcmFtZXRlcnNTdGFy
dCwgc3RyaWN0TW9kZSgpLCBjb25zdHJ1Y3RvcktpbmQsIHBhcmFtZXRlckNvdW50LCBwYXJzZU1v
ZGUsIGlzQXJyb3dGdW5jdGlvbik7CiB9CiAKIHN0YXRpYyBjb25zdCBjaGFyKiBzdHJpbmdGb3JG
dW5jdGlvbk1vZGUoU291cmNlUGFyc2VNb2RlIG1vZGUpCkBAIC0xNzM3LDcgKzE3MzgsNyBAQCB0
ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IGJvb2wgUGFyc2VyPExleGVyVHlwZT46OnBhcnNl
RnVuY3Rpb25JbmZvKFRyZWVCdWlsZAogICAgIH0KICAgICAKICAgICBib29sIGlzQ2xhc3NDb25z
dHJ1Y3RvciA9IGNvbnN0cnVjdG9yS2luZCAhPSBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmU7Ci0KKyAg
ICAKICAgICBmdW5jdGlvbkluZm8uYm9keVN0YXJ0Q29sdW1uID0gc3RhcnRDb2x1bW47CiAgICAg
CiAgICAgLy8gSWYgd2Uga25vdyBhYm91dCB0aGlzIGZ1bmN0aW9uIGFscmVhZHksIHdlIGNhbiB1
c2UgdGhlIGNhY2hlZCBpbmZvIGFuZCBza2lwIHRoZSBwYXJzZXIgdG8gdGhlIGVuZCBvZiB0aGUg
ZnVuY3Rpb24uCkBAIC0xNzU2LDExICsxNzU3LDEzIEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVp
bGRlcj4gYm9vbCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkluZm8oVHJlZUJ1aWxk
CiAgICAgICAgICAgICBlbmRMb2NhdGlvbi5zdGFydE9mZnNldCAtIG1fdG9rZW4ubV9kYXRhLmxp
bmVTdGFydE9mZnNldCA6CiAgICAgICAgICAgICBlbmRMb2NhdGlvbi5zdGFydE9mZnNldCAtIGVu
ZExvY2F0aW9uLmxpbmVTdGFydE9mZnNldDsKICAgICAgICAgdW5zaWduZWQgY3VycmVudExpbmVT
dGFydE9mZnNldCA9IG1fdG9rZW4ubV9sb2NhdGlvbi5saW5lU3RhcnRPZmZzZXQ7Ci0KKyAgICAg
ICAgCisgICAgICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uID0gcGFyc2VUeXBlID09IEFycm93RnVu
Y3Rpb25QYXJzZVR5cGU7CisgICAgICAgIAogICAgICAgICBmdW5jdGlvbkluZm8uYm9keSA9IGNv
bnRleHQuY3JlYXRlRnVuY3Rpb25NZXRhZGF0YSgKICAgICAgICAgICAgIHN0YXJ0TG9jYXRpb24s
IGVuZExvY2F0aW9uLCBmdW5jdGlvbkluZm8uYm9keVN0YXJ0Q29sdW1uLCBib2R5RW5kQ29sdW1u
LCAKICAgICAgICAgICAgIGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBmdW5jdGlvbk5hbWVTdGFydCwg
cGFyYW1ldGVyc1N0YXJ0LCAKLSAgICAgICAgICAgIGNhY2hlZEluZm8tPnN0cmljdE1vZGUsIGNv
bnN0cnVjdG9yS2luZCwgY2FjaGVkSW5mby0+cGFyYW1ldGVyQ291bnQsIG1vZGUpOworICAgICAg
ICAgICAgY2FjaGVkSW5mby0+c3RyaWN0TW9kZSwgY29uc3RydWN0b3JLaW5kLCBjYWNoZWRJbmZv
LT5wYXJhbWV0ZXJDb3VudCwgbW9kZSwgaXNBcnJvd0Z1bmN0aW9uKTsKICAgICAgICAgCiAgICAg
ICAgIGZ1bmN0aW9uU2NvcGUtPnJlc3RvcmVGcm9tU291cmNlUHJvdmlkZXJDYWNoZShjYWNoZWRJ
bmZvKTsKICAgICAgICAgcG9wU2NvcGUoZnVuY3Rpb25TY29wZSwgVHJlZUJ1aWxkZXI6Ok5lZWRz
RnJlZVZhcmlhYmxlSW5mbyk7CkBAIC0xNzc0LDcgKzE3NzcsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3Mg
VHJlZUJ1aWxkZXI+IGJvb2wgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlRnVuY3Rpb25JbmZvKFRy
ZWVCdWlsZAogICAgICAgICBtX2xleGVyLT5zZXRMaW5lTnVtYmVyKG1fdG9rZW4ubV9sb2NhdGlv
bi5saW5lKTsKICAgICAgICAgZnVuY3Rpb25JbmZvLmVuZE9mZnNldCA9IGNhY2hlZEluZm8tPmVu
ZEZ1bmN0aW9uT2Zmc2V0OwogCi0gICAgICAgIGlmIChwYXJzZVR5cGUgPT0gQXJyb3dGdW5jdGlv
blBhcnNlVHlwZSkKKyAgICAgICAgaWYgKGlzQXJyb3dGdW5jdGlvbikKICAgICAgICAgICAgIGZ1
bmN0aW9uQm9keVR5cGUgPSBjYWNoZWRJbmZvLT5pc0JvZHlBcnJvd0V4cHJlc3Npb24gPyAgQXJy
b3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uIDogQXJyb3dGdW5jdGlvbkJvZHlCbG9jazsKICAgICAg
ICAgZWxzZQogICAgICAgICAgICAgZnVuY3Rpb25Cb2R5VHlwZSA9IFN0YW5kYXJkRnVuY3Rpb25C
b2R5QmxvY2s7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRh
eENoZWNrZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5o
CmluZGV4IDA3NjBjMTllYjE2MzZkYjIxYTE3OTYxMmE1NDk2ZTE5Y2ZkMWJiMDcuLmRjNTYxZjli
MWE2ZGEzNjQzYjgyNzJmZTdiMTJlMjE1ZTQ0ZjQyYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCkBAIC0xODYsNyArMTg2LDcgQEAgcHVibGljOgog
ICAgIENsYXNzRXhwcmVzc2lvbiBjcmVhdGVDbGFzc0V4cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiwgY29uc3QgSWRlbnRpZmllciYsIEV4cHJlc3Npb25UeXBlLCBFeHByZXNzaW9uVHlwZSwgUHJv
cGVydHlMaXN0LCBQcm9wZXJ0eUxpc3QpIHsgcmV0dXJuIENsYXNzRXhwcjsgfQogI2VuZGlmCiAg
ICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlRnVuY3Rpb25FeHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYsIGNvbnN0IFBhcnNlckZ1bmN0aW9uSW5mbzxTeW50YXhDaGVja2VyPiYpIHsgcmV0dXJuIEZ1
bmN0aW9uRXhwcjsgfQotICAgIGludCBjcmVhdGVGdW5jdGlvbk1ldGFkYXRhKGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGludCwgaW50LCBib29sLCBpbnQs
IGludCwgaW50LCBDb25zdHJ1Y3RvcktpbmQsIHVuc2lnbmVkLCBTb3VyY2VQYXJzZU1vZGUpIHsg
cmV0dXJuIEZ1bmN0aW9uQm9keVJlc3VsdDsgfQorICAgIGludCBjcmVhdGVGdW5jdGlvbk1ldGFk
YXRhKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGludCwg
aW50LCBib29sLCBpbnQsIGludCwgaW50LCBDb25zdHJ1Y3RvcktpbmQsIHVuc2lnbmVkLCBTb3Vy
Y2VQYXJzZU1vZGUsIGJvb2wpIHsgcmV0dXJuIEZ1bmN0aW9uQm9keVJlc3VsdDsgfQogICAgIEV4
cHJlc3Npb25UeXBlIGNyZWF0ZUFycm93RnVuY3Rpb25FeHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYsIGNvbnN0IFBhcnNlckZ1bmN0aW9uSW5mbzxTeW50YXhDaGVja2VyPiYpIHsgcmV0dXJuIEZ1
bmN0aW9uRXhwcjsgfQogICAgIHZvaWQgc2V0RnVuY3Rpb25OYW1lU3RhcnQoaW50LCBpbnQpIHsg
fQogICAgIGludCBjcmVhdGVBcmd1bWVudHMoKSB7IHJldHVybiBBcmd1bWVudHNSZXN1bHQ7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAKaW5kZXggMGFi
MTY3MjExNjgxOTRjMWE2MDI4OWViODU2ZTk4YzBjZmExN2I3OS4uOWRjNjk0ZjI3YTQ1ODczYjJh
MjE2N2EzNjk2MzVkM2U1OTQ1YWJhZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRXhlY3V0YWJsZS5jcHAKQEAgLTIzNiw4ICsyMzYsNyBAQCBSZWZQdHI8Q29kZUJsb2NrPiBT
Y3JpcHRFeGVjdXRhYmxlOjpuZXdDb2RlQmxvY2tGb3IoCiAgICAgRGVidWdnZXJNb2RlIGRlYnVn
Z2VyTW9kZSA9IGdsb2JhbE9iamVjdC0+aGFzRGVidWdnZXIoKSA/IERlYnVnZ2VyT24gOiBEZWJ1
Z2dlck9mZjsKICAgICBQcm9maWxlck1vZGUgcHJvZmlsZXJNb2RlID0gZ2xvYmFsT2JqZWN0LT5o
YXNQcm9maWxlcigpID8gUHJvZmlsZXJPbiA6IFByb2ZpbGVyT2ZmOwogICAgIFVubGlua2VkRnVu
Y3Rpb25Db2RlQmxvY2sqIHVubGlua2VkQ29kZUJsb2NrID0KLSAgICAgICAgZXhlY3V0YWJsZS0+
bV91bmxpbmtlZEV4ZWN1dGFibGUtPmNvZGVCbG9ja0ZvcigKLSAgICAgICAgICAgICp2bSwgZXhl
Y3V0YWJsZS0+bV9zb3VyY2UsIGtpbmQsIGRlYnVnZ2VyTW9kZSwgcHJvZmlsZXJNb2RlLCBlcnJv
cik7CisgICAgZXhlY3V0YWJsZS0+bV91bmxpbmtlZEV4ZWN1dGFibGUtPmNvZGVCbG9ja0Zvcigq
dm0sIGV4ZWN1dGFibGUtPm1fc291cmNlLCBraW5kLCBkZWJ1Z2dlck1vZGUsIHByb2ZpbGVyTW9k
ZSwgZXJyb3IsIGV4ZWN1dGFibGUtPmlzQXJyb3dGdW5jdGlvbigpKTsKICAgICByZWNvcmRQYXJz
ZShleGVjdXRhYmxlLT5tX3VubGlua2VkRXhlY3V0YWJsZS0+ZmVhdHVyZXMoKSwgZXhlY3V0YWJs
ZS0+bV91bmxpbmtlZEV4ZWN1dGFibGUtPmhhc0NhcHR1cmVkVmFyaWFibGVzKCksIGZpcnN0TGlu
ZSgpLCBsYXN0TGluZSgpLCBzdGFydENvbHVtbigpLCBlbmRDb2x1bW4oKSk7IAogICAgIGlmICgh
dW5saW5rZWRDb2RlQmxvY2spIHsKICAgICAgICAgZXhjZXB0aW9uID0gdm0tPnRocm93RXhjZXB0
aW9uKApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJs
ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCmluZGV4IGJj
ZTI0MjhjYmMxMDFkZGE2Y2IxMDFkNzBiZjAyN2Y3ZTBlYTNkZjAuLmNmMmJkZTg4YzVhNmU5MTY3
NjAzNmVlMjdkNzQ0Zjc2NDUzOWNjNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0V4ZWN1dGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9FeGVjdXRhYmxlLmgKQEAgLTQ3NCw3ICs0NzQsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGNs
ZWFyQ29kZSgpOwogCi0gICAgRXhlY3V0YWJsZUluZm8gZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7
IHJldHVybiBFeGVjdXRhYmxlSW5mbyhuZWVkc0FjdGl2YXRpb24oKSwgdXNlc0V2YWwoKSwgaXNT
dHJpY3RNb2RlKCksIGZhbHNlLCBmYWxzZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lKTsgfQorICAg
IEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFibGVJbmZvKCkgY29uc3QgeyByZXR1cm4gRXhlY3V0YWJs
ZUluZm8obmVlZHNBY3RpdmF0aW9uKCksIHVzZXNFdmFsKCksIGlzU3RyaWN0TW9kZSgpLCBmYWxz
ZSwgZmFsc2UsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgZmFsc2UpOyB9CiAKICAgICB1bnNpZ25l
ZCBudW1WYXJpYWJsZXMoKSB7IHJldHVybiBtX3VubGlua2VkRXZhbENvZGVCbG9jay0+bnVtVmFy
aWFibGVzKCk7IH0KICAgICB1bnNpZ25lZCBudW1iZXJPZkZ1bmN0aW9uRGVjbHMoKSB7IHJldHVy
biBtX3VubGlua2VkRXZhbENvZGVCbG9jay0+bnVtYmVyT2ZGdW5jdGlvbkRlY2xzKCk7IH0KQEAg
LTUzMCw3ICs1MzAsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGNsZWFyQ29kZSgpOwogCi0gICAg
RXhlY3V0YWJsZUluZm8gZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxl
SW5mbyhuZWVkc0FjdGl2YXRpb24oKSwgdXNlc0V2YWwoKSwgaXNTdHJpY3RNb2RlKCksIGZhbHNl
LCBmYWxzZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lKTsgfQorICAgIEV4ZWN1dGFibGVJbmZvIGV4
ZWN1dGFibGVJbmZvKCkgY29uc3QgeyByZXR1cm4gRXhlY3V0YWJsZUluZm8obmVlZHNBY3RpdmF0
aW9uKCksIHVzZXNFdmFsKCksIGlzU3RyaWN0TW9kZSgpLCBmYWxzZSwgZmFsc2UsIENvbnN0cnVj
dG9yS2luZDo6Tm9uZSwgZmFsc2UpOyB9CiAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIFNj
cmlwdEV4ZWN1dGFibGU7CkBAIC02MzMsNiArNjMzLDcgQEAgcHVibGljOgogICAgIEZ1bmN0aW9u
TW9kZSBmdW5jdGlvbk1vZGUoKSB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS0+ZnVuY3Rp
b25Nb2RlKCk7IH0KICAgICBib29sIGlzQnVpbHRpbkZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4g
bV91bmxpbmtlZEV4ZWN1dGFibGUtPmlzQnVpbHRpbkZ1bmN0aW9uKCk7IH0KICAgICBDb25zdHJ1
Y3RBYmlsaXR5IGNvbnN0cnVjdEFiaWxpdHkoKSBjb25zdCB7IHJldHVybiBtX3VubGlua2VkRXhl
Y3V0YWJsZS0+Y29uc3RydWN0QWJpbGl0eSgpOyB9CisgICAgYm9vbCBpc0Fycm93RnVuY3Rpb24o
KSBjb25zdCB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS0+aXNBcnJvd0Z1bmN0aW9uKCk7
IH0KICAgICBib29sIGlzQ2xhc3NDb25zdHJ1Y3RvckZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4g
bV91bmxpbmtlZEV4ZWN1dGFibGUtPmlzQ2xhc3NDb25zdHJ1Y3RvckZ1bmN0aW9uKCk7IH0KICAg
ICBjb25zdCBJZGVudGlmaWVyJiBuYW1lKCkgeyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUt
Pm5hbWUoKTsgfQogICAgIGNvbnN0IElkZW50aWZpZXImIGluZmVycmVkTmFtZSgpIHsgcmV0dXJu
IG1fdW5saW5rZWRFeGVjdXRhYmxlLT5pbmZlcnJlZE5hbWUoKTsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJvd0Z1bmN0aW9uLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyb3dGdW5jdGlvbi5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTUx
YzI2MGUxNmEyMGUyYjg0MDlhZWJiOWEyZTU5ZGI5YjNkZjQ4NgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyb3dGdW5jdGlvbi5jcHAKQEAgLTAs
MCArMSw4MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBbGVrc2FuZHIgU2thY2hrb3Yg
PGdza2FjaGtvdkBnbWFpbC5jb20+LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNBcnJvd0Z1bmN0aW9u
LmgiCisKKyNpbmNsdWRlICJFcnJvci5oIgorI2luY2x1ZGUgIkV4Y2VwdGlvbkhlbHBlcnMuaCIK
KyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgorI2luY2x1
ZGUgIkpTRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU0Z1bmN0aW9uSW5saW5lcy5oIgorI2luY2x1
ZGUgIkpTT2JqZWN0LmgiCisjaW5jbHVkZSAiUHJvcGVydHlTbG90LmgiCisjaW5jbHVkZSAiVk0u
aCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBKU0Fycm93RnVuY3Rpb246
OnNfaW5mbyA9IHsgIkFycm93RnVuY3Rpb24iLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVU
SE9EX1RBQkxFKEpTQXJyb3dGdW5jdGlvbikgfTsKKwordm9pZCBKU0Fycm93RnVuY3Rpb246OmRl
c3Ryb3koSlNDZWxsKiBjZWxsKQoreworICAgIHN0YXRpY19jYXN0PEpTQXJyb3dGdW5jdGlvbio+
KGNlbGwpLT5KU0Fycm93RnVuY3Rpb246On5KU0Fycm93RnVuY3Rpb24oKTsKK30KKworSlNBcnJv
d0Z1bmN0aW9uKiBKU0Fycm93RnVuY3Rpb246OmNyZWF0ZShWTSYgdm0sIEZ1bmN0aW9uRXhlY3V0
YWJsZSogZXhlY3V0YWJsZSwgSlNTY29wZSogc2NvcGUsIEpTVmFsdWUgYm91bmRUaGlzKQorewor
ICAgIEpTQXJyb3dGdW5jdGlvbiogcmVzdWx0ID0gY3JlYXRlSW1wbCh2bSwgZXhlY3V0YWJsZSwg
c2NvcGUsIGJvdW5kVGhpcyk7CisgICAgZXhlY3V0YWJsZS0+c2luZ2xldG9uRnVuY3Rpb24oKS0+
bm90aWZ5V3JpdGUodm0sIHJlc3VsdCwgIkFsbG9jYXRpbmcgYW4gYXJyb3cgZnVuY3Rpb24iKTsK
KyAgICByZXR1cm4gcmVzdWx0OworfQorCitKU0Fycm93RnVuY3Rpb246OkpTQXJyb3dGdW5jdGlv
bihWTSYgdm0sIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgSlNTY29wZSogc2NvcGUs
IEpTVmFsdWUgYm91bmRUaGlzKQorICAgIDogQmFzZSh2bSwgZXhlY3V0YWJsZSwgc2NvcGUsIHNj
b3BlLT5nbG9iYWxPYmplY3QoKS0+YXJyb3dGdW5jdGlvblN0cnVjdHVyZSgpKQorICAgICwgbV9i
b3VuZFRoaXModm0sIHRoaXMsIGJvdW5kVGhpcykKK3sKK30KKworSlNBcnJvd0Z1bmN0aW9uKiBK
U0Fycm93RnVuY3Rpb246OmNyZWF0ZVdpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNocG9p
bnQoVk0mIHZtLCBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIEpTU2NvcGUqIHNjb3Bl
LCBKU1ZhbHVlIGJvdW5kVGhpcykKK3sKKyAgICBBU1NFUlQoZXhlY3V0YWJsZS0+c2luZ2xldG9u
RnVuY3Rpb24oKS0+aGFzQmVlbkludmFsaWRhdGVkKCkpOworICAgIHJldHVybiBjcmVhdGUodm0s
IGV4ZWN1dGFibGUsIHNjb3BlLCBib3VuZFRoaXMpOworfQorCit2b2lkIEpTQXJyb3dGdW5jdGlv
bjo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQorewor
ICAgIEpTQXJyb3dGdW5jdGlvbiogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0Fycm93RnVuY3Rpb24q
PihjZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8o
KSk7CisgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKKworICAg
IHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2JvdW5kVGhpcyk7Cit9CisKK0NvbnN0cnVj
dFR5cGUgSlNBcnJvd0Z1bmN0aW9uOjpnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCosIENvbnN0cnVj
dERhdGEmKQoreworICAgIHJldHVybiBDb25zdHJ1Y3RUeXBlTm9uZTsKK30KKworfSAvLyBuYW1l
c3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Fy
cm93RnVuY3Rpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyb3dGdW5j
dGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjdmNTZmNjhlZmVlZGQ4MjMxYTM1YjJmYzI0OWZkODFhYzk3ZjVi
MjMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Fy
cm93RnVuY3Rpb24uaApAQCAtMCwwICsxLDk5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1
IEFsZWtzYW5kciBTa2FjaGtvdiA8Z3NrYWNoa292QGdtYWlsLmNvbT4uCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSlNBcnJvd0Z1bmN0aW9uX2gK
KyNkZWZpbmUgSlNBcnJvd0Z1bmN0aW9uX2gKKworI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKKyNp
bmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgorCituYW1lc3BhY2UgSlNDIHsKKyAgICAKK2NsYXNz
IEpTR2xvYmFsT2JqZWN0OworY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworY2xhc3MgTExJ
bnREZXNpcmVkT2Zmc2V0czsKKyAgICAKK2NsYXNzIEpTQXJyb3dGdW5jdGlvbiA6IHB1YmxpYyBK
U0Z1bmN0aW9uIHsKKyAgICBmcmllbmQgY2xhc3MgSklUOworI2lmIEVOQUJMRShERkdfSklUKQor
ICAgIGZyaWVuZCBjbGFzcyBERkc6OlNwZWN1bGF0aXZlSklUOworICAgIGZyaWVuZCBjbGFzcyBE
Rkc6OkpJVENvbXBpbGVyOworI2VuZGlmCisgICAgZnJpZW5kIGNsYXNzIFZNOworcHVibGljOgor
ICAgIHR5cGVkZWYgSlNGdW5jdGlvbiBCYXNlOworCisgICAgc3RhdGljIEpTQXJyb3dGdW5jdGlv
biogY3JlYXRlKFZNJiwgRnVuY3Rpb25FeGVjdXRhYmxlKiwgSlNTY29wZSosIEpTVmFsdWUpOwor
ICAgIHN0YXRpYyBKU0Fycm93RnVuY3Rpb24qIGNyZWF0ZVdpdGhJbnZhbGlkYXRlZFJlYWxsb2Nh
dGlvbldhdGNocG9pbnQoVk0mLCBGdW5jdGlvbkV4ZWN1dGFibGUqLCBKU1Njb3BlKiwgSlNWYWx1
ZSk7CisKKyAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOworICAgIAorICAgIHN0YXRp
YyBzaXplX3QgYWxsb2NhdGlvblNpemUoc2l6ZV90IGlubGluZUNhcGFjaXR5KQorICAgIHsKKyAg
ICAgICAgQVNTRVJUX1VOVVNFRChpbmxpbmVDYXBhY2l0eSwgIWlubGluZUNhcGFjaXR5KTsKKyAg
ICAgICAgcmV0dXJuIHNpemVvZihKU0Fycm93RnVuY3Rpb24pOworICAgIH0KKyAgICAKKyAgICBz
dGF0aWMgSlNBcnJvd0Z1bmN0aW9uKiBjcmVhdGVJbXBsKFZNJiB2bSwgRnVuY3Rpb25FeGVjdXRh
YmxlKiBleGVjdXRhYmxlLCBKU1Njb3BlKiBzY29wZSwgSlNWYWx1ZSBib3VuZFRoaXMpCisgICAg
eworICAgICAgICBKU0Fycm93RnVuY3Rpb24qIGZ1bmN0aW9uID0gbmV3IChOb3ROdWxsLCBhbGxv
Y2F0ZUNlbGw8SlNBcnJvd0Z1bmN0aW9uPih2bS5oZWFwKSkgSlNBcnJvd0Z1bmN0aW9uKHZtLCBl
eGVjdXRhYmxlLCBzY29wZSwgYm91bmRUaGlzKTsKKyAgICAgICAgQVNTRVJUKGZ1bmN0aW9uLT5z
dHJ1Y3R1cmUoKS0+Z2xvYmFsT2JqZWN0KCkpOworICAgICAgICBmdW5jdGlvbi0+ZmluaXNoQ3Jl
YXRpb24odm0pOworICAgICAgICByZXR1cm4gZnVuY3Rpb247CisgICAgfQorICAgIAorICAgIHN0
YXRpYyBDb25zdHJ1Y3RUeXBlIGdldENvbnN0cnVjdERhdGEoSlNDZWxsKiwgQ29uc3RydWN0RGF0
YSYpOworCisgICAgSlNWYWx1ZSBib3VuZFRoaXMoKSB7IHJldHVybiBtX2JvdW5kVGhpcy5nZXQo
KTsgfQorICAgIAorICAgIERFQ0xBUkVfRVhQT1JUX0lORk87CisgICAgCisgICAgc3RhdGljIFN0
cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCisgICAgeworICAgICAgICBBU1NFUlQoZ2xvYmFsT2Jq
ZWN0KTsKKyAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3Qs
IHByb3RvdHlwZSwgVHlwZUluZm8oSlNGdW5jdGlvblR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5m
bygpKTsKKyAgICB9CisgICAgCisgICAgc3RhdGljIGlubGluZSBwdHJkaWZmX3Qgb2Zmc2V0T2ZU
aGlzVmFsdWUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihKU0Fycm93
RnVuY3Rpb24sIG1fYm91bmRUaGlzKTsKKyAgICB9CisgICAgCisgICAgY29uc3Qgc3RhdGljIHVu
c2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3M7CisKK3Byb3RlY3Rl
ZDoKKyAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7
CisgICAgICAgIAorcHJpdmF0ZToKKyAgICBKU0Fycm93RnVuY3Rpb24oVk0mLCBGdW5jdGlvbkV4
ZWN1dGFibGUqLCBKU1Njb3BlKiwgSlNWYWx1ZSk7CisgICAgCisgICAgZnJpZW5kIGNsYXNzIExM
SW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAKKyAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4gbV9i
b3VuZFRoaXM7Cit9OworICAgIAorfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBKU0Fy
cm93RnVuY3Rpb25faApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNGdW5jdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5o
CmluZGV4IDBiODdkNzVjOTE0NTBjNWFmMWFhZWQyN2E2MWE3NDhlZjgwZjA5M2UuLjkyODM1MGUy
NDc4YzQ1ZjdiZjdlOGFhODRjOWVjM2E0ZTI1MmE4NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0Z1bmN0aW9uLmgKQEAgLTE0MSw2ICsxNDEsNyBAQCBwdWJsaWM6CiBwcm90
ZWN0ZWQ6CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNGdW5jdGlvbihWTSYsIEpTR2xvYmFsT2Jq
ZWN0KiwgU3RydWN0dXJlKik7CiAgICAgSlNGdW5jdGlvbihWTSYsIEZ1bmN0aW9uRXhlY3V0YWJs
ZSosIEpTU2NvcGUqKTsKKyAgICBKU0Z1bmN0aW9uKFZNJiwgRnVuY3Rpb25FeGVjdXRhYmxlKiwg
SlNTY29wZSosIFN0cnVjdHVyZSopOwogCiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIE5h
dGl2ZUV4ZWN1dGFibGUqLCBpbnQgbGVuZ3RoLCBjb25zdCBTdHJpbmcmIG5hbWUpOwogICAgIHVz
aW5nIEJhc2U6OmZpbmlzaENyZWF0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNGdW5jdGlvbklubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTRnVuY3Rpb25JbmxpbmVzLmgKaW5kZXggZjZjNmQ1OGVjNmU1YzExNjRjYjI3ZmE1
ZTQxNjE4YjRiODE0MmYwMi4uZjA1OTU4NGNmMDdkN2ZkNjllYTJkY2ZlMjdiNjNiNjQ0YTg4NDQx
MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbklu
bGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uSW5s
aW5lcy5oCkBAIC00NCw2ICs0NCwxMyBAQCBpbmxpbmUgSlNGdW5jdGlvbjo6SlNGdW5jdGlvbihW
TSYgdm0sIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgSlNTY29wZSogcwogICAgICwg
bV9yYXJlRGF0YSgpCiB7CiB9CisgICAgCitpbmxpbmUgSlNGdW5jdGlvbjo6SlNGdW5jdGlvbihW
TSYgdm0sIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgSlNTY29wZSogc2NvcGUsIFN0
cnVjdHVyZSogc3RydWN0dXJlKQorICAgIDogQmFzZSh2bSwgc2NvcGUsIHN0cnVjdHVyZSkKKyAg
ICAsIG1fZXhlY3V0YWJsZSh2bSwgdGhpcywgZXhlY3V0YWJsZSkKKyAgICAsIG1fcmFyZURhdGEo
KQoreworfQogCiBpbmxpbmUgRnVuY3Rpb25FeGVjdXRhYmxlKiBKU0Z1bmN0aW9uOjpqc0V4ZWN1
dGFibGUoKSBjb25zdAogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxPYmplY3QuY3BwCmluZGV4IGNlZTliYmQ5NDA0NDkxMjg5NDM4MjcxZDAwNDQxN2MyMjlh
ZDA0MjMuLmRhMWFjMjVhYWIwMDg2MmNkNTM3MzBmOWE1YWQxMjVhMmRjMGZmMzggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTU5
LDYgKzU5LDcgQEAKICNpbmNsdWRlICJKU0FycmF5QnVmZmVyQ29uc3RydWN0b3IuaCIKICNpbmNs
dWRlICJKU0FycmF5QnVmZmVyUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiSlNBcnJheUl0ZXJhdG9y
LmgiCisjaW5jbHVkZSAiSlNBcnJvd0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNCb3VuZEZ1bmN0
aW9uLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ2FsbGJhY2tDb25z
dHJ1Y3Rvci5oIgpAQCAtMjU5LDYgKzI2MCw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OmluaXQo
Vk0mIHZtKQogICAgIGV4ZWMtPnNldENhbGxlZShtX2dsb2JhbENhbGxlZS5nZXQoKSk7CiAKICAg
ICBtX2Z1bmN0aW9uU3RydWN0dXJlLnNldCh2bSwgdGhpcywgSlNGdW5jdGlvbjo6Y3JlYXRlU3Ry
dWN0dXJlKHZtLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSk7CisgICAgbV9hcnJv
d0Z1bmN0aW9uU3RydWN0dXJlLnNldCh2bSwgdGhpcywgSlNBcnJvd0Z1bmN0aW9uOjpjcmVhdGVT
dHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpKTsKICAgICBtX2Jv
dW5kRnVuY3Rpb25TdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBKU0JvdW5kRnVuY3Rpb246OmNyZWF0
ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSkpOwogICAgIG1f
bmFtZWRGdW5jdGlvblN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIFN0cnVjdHVyZTo6YWRkUHJvcGVy
dHlUcmFuc2l0aW9uKHZtLCBtX2Z1bmN0aW9uU3RydWN0dXJlLmdldCgpLCB2bS5wcm9wZXJ0eU5h
bWVzLT5uYW1lLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSwgbV9mdW5jdGlvbk5h
bWVPZmZzZXQpKTsKICAgICBtX2ludGVybmFsRnVuY3Rpb25TdHJ1Y3R1cmUuc2V0KHZtLCB0aGlz
LCBJbnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Q
cm90b3R5cGUuZ2V0KCkpKTsKQEAgLTc5NSw2ICs3OTcsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0
Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAg
dmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fY2FsbGVlU3RydWN0dXJlKTsKICAgICB2aXNp
dG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9mdW5jdGlvblN0cnVjdHVyZSk7CiAgICAgdmlzaXRv
ci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fYm91bmRGdW5jdGlvblN0cnVjdHVyZSk7CisgICAgdmlz
aXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fYXJyb3dGdW5jdGlvblN0cnVjdHVyZSk7CiAgICAg
dmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fbmFtZWRGdW5jdGlvblN0cnVjdHVyZSk7CiAg
ICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fc3ltYm9sT2JqZWN0U3RydWN0dXJlKTsK
ICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9yZWdFeHBTdHJ1Y3R1cmUpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKaW5kZXggOTk4
NmJjZjYyNDVlMmNjNDY4MjBiMTMxMDJiMjM0MjkwMGVjM2Q3Yi4uYmQxMmIyOTMwNTVlOWJhZTMw
YmI3M2ZkOTAxNWJjMDAzODM2M2M2NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5oCkBAIC0yMzIsNiArMjMyLDcgQEAgcHJvdGVjdGVkOgogICAg
IFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fY2FsbGVlU3RydWN0dXJlOwogICAgIFdyaXRlQmFy
cmllcjxTdHJ1Y3R1cmU+IG1fZnVuY3Rpb25TdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0
cnVjdHVyZT4gbV9ib3VuZEZ1bmN0aW9uU3RydWN0dXJlOworICAgIFdyaXRlQmFycmllcjxTdHJ1
Y3R1cmU+IG1fYXJyb3dGdW5jdGlvblN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0
dXJlPiBtX25hbWVkRnVuY3Rpb25TdHJ1Y3R1cmU7CiAgICAgUHJvcGVydHlPZmZzZXQgbV9mdW5j
dGlvbk5hbWVPZmZzZXQ7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9wcml2YXRlTmFt
ZVN0cnVjdHVyZTsKQEAgLTQ2Miw2ICs0NjMsNyBAQCBwdWJsaWM6CiAgICAgU3RydWN0dXJlKiBj
YWxsZWVTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2NhbGxlZVN0cnVjdHVyZS5nZXQoKTsg
fQogICAgIFN0cnVjdHVyZSogZnVuY3Rpb25TdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2Z1
bmN0aW9uU3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiBib3VuZEZ1bmN0aW9uU3Ry
dWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9ib3VuZEZ1bmN0aW9uU3RydWN0dXJlLmdldCgpOyB9
CisgICAgU3RydWN0dXJlKiBhcnJvd0Z1bmN0aW9uU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4g
bV9hcnJvd0Z1bmN0aW9uU3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiBuYW1lZEZ1
bmN0aW9uU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9uYW1lZEZ1bmN0aW9uU3RydWN0dXJl
LmdldCgpOyB9CiAgICAgUHJvcGVydHlPZmZzZXQgZnVuY3Rpb25OYW1lT2Zmc2V0KCkgY29uc3Qg
eyByZXR1cm4gbV9mdW5jdGlvbk5hbWVPZmZzZXQ7IH0KICAgICBTdHJ1Y3R1cmUqIG51bWJlck9i
amVjdFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fbnVtYmVyT2JqZWN0U3RydWN0dXJlLmdl
dCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fy
cm93ZnVuY3Rpb24tYWN0aXZhdGlvbi1zaW5rLW9zcmV4aXQtZGVmYXVsdC12YWx1ZS10ZHotZXJy
b3IuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24t
YWN0aXZhdGlvbi1zaW5rLW9zcmV4aXQtZGVmYXVsdC12YWx1ZS10ZHotZXJyb3IuanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYzFlM2E2NmVhOTJmMDMwZGIzNzc5YTRjM2U0MDJlN2MxMThkMWQ4MQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlv
bi1hY3RpdmF0aW9uLXNpbmstb3NyZXhpdC1kZWZhdWx0LXZhbHVlLXRkei1lcnJvci5qcwpAQCAt
MCwwICsxLDQ2IEBACisidXNlIHN0cmljdCI7CisKK3ZhciBuID0gMTAwMDAwMDsKKworZnVuY3Rp
b24gc2hvdWxkVGhyb3dURFooZnVuYykgeworICAgIHZhciBoYXNUaHJvd24gPSBmYWxzZTsKKyAg
ICB0cnkgeworICAgICAgICBmdW5jKCk7CisgICAgfSBjYXRjaChlKSB7CisgICAgICAgIGlmIChl
Lm5hbWUuaW5kZXhPZigiUmVmZXJlbmNlRXJyb3IiKSAhPT0gLTEpCisgICAgICAgICAgICBoYXNU
aHJvd24gPSB0cnVlOworICAgIH0KKyAgICBpZiAoIWhhc1Rocm93bikKKyAgICAgICAgdGhyb3cg
bmV3IEVycm9yKCJEaWQgbm90IHRocm93IFREWiBlcnJvciIpOworfQorCitmdW5jdGlvbiBiYXIo
ZikgeyB9CisKK2Z1bmN0aW9uIGZvbyhiKSB7CisgICAgbGV0IHJlc3VsdCA9IDA7CisgICAgdmFy
IHNldCA9ICAoeCkgPT4geyByZXN1bHQgPSB4OyByZXR1cm4gdGR6UGVycGV0cmF0b3I7IH0KKyAg
ICBpZiAoYikgeworICAgICAgICBPU1JFeGl0KCk7CisgICAgICAgIGlmIChiKSB7CisgICAgICAg
ICAgICBiYXIoc2V0KTsKKyAgICAgICAgICAgIHJldHVybiB0ZHpQZXJwZXRyYXRvcjsKKyAgICAg
ICAgfQorICAgIH0KKyAgICBsZXQgdGR6UGVycGV0cmF0b3I7CisgICAgcmV0dXJuIHJlc3VsdDsK
K30KKworbm9JbmxpbmUoYmFyKTsKK25vSW5saW5lKGZvbyk7Citub0lubGluZShzaG91bGRUaHJv
d1REWik7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgbjsgaSsrKSB7CisgICAgdmFyIGJvb2wgPSAh
KGkgJSAxMDApOworICAgIGlmIChib29sKQorICAgICAgICBzaG91bGRUaHJvd1REWigoKT0+IHsg
Zm9vKGJvb2wpOyB9KTsKKyAgICBlbHNlIHsKKyAgICAgICAgdmFyIHJlc3VsdCA9IGZvbyhib29s
KTsKKyAgICAgICAgaWYgKHJlc3VsdCAhPSAwKQorICAgICAgICAgICAgdGhyb3cgIkVycm9yOiBi
YWQgcmVzdWx0OiAiICsgcmVzdWx0OworICAgIH0KK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1hY3RpdmF0aW9uLXNpbmstb3Ny
ZXhpdC1kZWZhdWx0LXZhbHVlLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVz
cy9hcnJvd2Z1bmN0aW9uLWFjdGl2YXRpb24tc2luay1vc3JleGl0LWRlZmF1bHQtdmFsdWUuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZTQxYmJlMTQwMjQxNGRiMjZjNmI3ZmQ0MDFmYjBlOWM2NWE0YmE3NwotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dm
dW5jdGlvbi1hY3RpdmF0aW9uLXNpbmstb3NyZXhpdC1kZWZhdWx0LXZhbHVlLmpzCkBAIC0wLDAg
KzEsMzcgQEAKK3ZhciBuID0gMTAwMDAwMDsKKworZnVuY3Rpb24gYmFyKHNldCkgeworICAgIHZh
ciByZXN1bHQgPSBzZXQoMCk7CisgICAgaWYgKHJlc3VsdCAhPT0gdm9pZCAwKQorICAgICAgICB0
aHJvdyAiRXJyb3I6IGJhZCB2YWx1ZTogIiArIHJlc3VsdDsKK30KKworZnVuY3Rpb24gZm9vKGIp
IHsKKyAgICB2YXIgcmVzdWx0ID0gMDsKKyAgICB2YXIgaW1VbmRlZmluZWQ7CisgICAgdmFyIGJh
ejsKKyAgICB2YXIgc2V0ID0gICh4KSA9PiB7CisgICAgICAgIHJlc3VsdCA9IHg7CisgICAgICAg
IGlmIChiYXogIT09IDUwKQorICAgICAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgdmFsdWU6ICIg
KyBiYXo7CisgICAgICAgIHJldHVybiBpbVVuZGVmaW5lZDsKKyAgICB9OworICAgIGJheiA9IDUw
OworICAgIGlmIChiKSB7CisgICAgICAgIE9TUkV4aXQoKTsKKyAgICAgICAgaWYgKGIpIHsKKyAg
ICAgICAgICAgIGJhcihzZXQpOworICAgICAgICB9CisgICAgICAgIHJldHVybiAwOworICAgIH0K
KyAgICByZXR1cm4gcmVzdWx0OworfQorCitub0lubGluZShiYXIpOworbm9JbmxpbmUoZm9vKTsK
KworZm9yICh2YXIgaSA9IDA7IGkgPCBuOyBpKyspIHsKKyAgICB2YXIgcmVzdWx0ID0gZm9vKCEo
aSAlIDEwMCkpOworICAgIGlmIChyZXN1bHQgIT0gMCkKKyAgICAgICAgdGhyb3cgIkVycm9yOiBi
YWQgcmVzdWx0OiAiICsgcmVzdWx0OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWFjdGl2YXRpb24tc2luay1vc3JleGl0Lmpz
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWFjdGl2
YXRpb24tc2luay1vc3JleGl0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJlNDM3YWY3YjJjMmFkMzQ1ZTI2YzIw
Mzc3ODkwZGY1ZjMxZmFmMDcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tYWN0aXZhdGlvbi1zaW5rLW9zcmV4aXQuanMK
QEAgLTAsMCArMSwyNSBAQAordmFyIG4gPSAxMDAwMDAwOworCitmdW5jdGlvbiBiYXIoKSB7IH0K
KworZnVuY3Rpb24gZm9vKGIpIHsKKyAgICB2YXIgcmVzdWx0ID0gMDsKKyAgICB2YXIgc2V0ID0g
KHgpID0+IHsgcmVzdWx0ID0geDsgfQorICAgIGlmIChiKSB7CisgICAgICAgIE9TUkV4aXQoKTsK
KyAgICAgICAgaWYgKGIpIHsKKyAgICAgICAgICAgIGJhcihzZXQpOworICAgICAgICB9CisgICAg
ICAgIHJldHVybiAwOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCitub0lubGluZShi
YXIpOworbm9JbmxpbmUoZm9vKTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCBuOyBpKyspIHsKKyAg
ICB2YXIgcmVzdWx0ID0gZm9vKCEoaSAlIDEwMCkpOworICAgIGlmIChyZXN1bHQgIT0gMCkKKyAg
ICAgICAgdGhyb3cgIkVycm9yOiBiYWQgcmVzdWx0OiAiICsgcmVzdWx0OworfQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWFjdGl2
YXRpb24tc2luay5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dm
dW5jdGlvbi1hY3RpdmF0aW9uLXNpbmsuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzZhNzllYzllYWE2NWM1NDE5
MzBiOTA0ODI2ZTdhMjNhMTNmYjJlYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1hY3RpdmF0aW9uLXNpbmsuanMKQEAg
LTAsMCArMSwyNCBAQAordmFyIG4gPSAxMDAwMDAwMDsKKworZnVuY3Rpb24gYmFyKGYpIHsgZigx
MCk7IH0KKworZnVuY3Rpb24gZm9vKGIpIHsKKyAgICB2YXIgcmVzdWx0ID0gMDsKKyAgICB2YXIg
c2V0ID0geCA9PiB7IHJlc3VsdCA9IHg7IH0KKyAgICBpZiAoYikgeworICAgICAgICBiYXIoc2V0
KTsKKyAgICAgICAgaWYgKHJlc3VsdCAhPSAxMCkKKyAgICAgICAgICAgIHRocm93ICJFcnJvcjog
YmFkOiAiICsgcmVzdWx0OworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgcmV0dXJuIHJl
c3VsdDsKK30KKworbm9JbmxpbmUoYmFyKTsKK25vSW5saW5lKGZvbyk7CisKK2ZvciAodmFyIGkg
PSAwOyBpIDwgbjsgaSsrKSB7CisgICAgdmFyIHJlc3VsdCA9IGZvbyghKGkgJSAxMDApKTsKKyAg
ICBpZiAocmVzdWx0ICE9IDApCisgICAgICAgIHRocm93ICJFcnJvcjogYmFkIHJlc3VsdDogIiAr
IHJlc3VsdDsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJl
c3MvYXJyb3dmdW5jdGlvbi1ib3VuZC5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9z
dHJlc3MvYXJyb3dmdW5jdGlvbi1ib3VuZC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MjAzMjA4OGFiZjI2ZGFl
MmFlNzFhMmFjNGMwNWQ0ZjA3NzU1ZTQwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWJvdW5kLmpzCkBAIC0wLDAgKzEs
MTggQEAKK3ZhciB0ZXN0Q2FzZSA9IGZ1bmN0aW9uIChhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdl
KSB7CisgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKSB7CisgICAgdGhyb3cgbWVzc2FnZSArICIu
IEV4cGVjdGVkICciICsgZXhwZWN0ZWQgKyAiJywgYnV0IHdhcyAnIiArIGFjdHVhbCArICInIjsK
KyAgfQorfTsKKwordmFyIGQgPSB7CisgIHggOiAiYmFyIiwKKyAgeSA6IGZ1bmN0aW9uKCkgeyBy
ZXR1cm4geiA9PiB0aGlzLnggKyB6OyB9Cit9OworCitub0lubGluZShkLnkpOworCit2YXIgZSA9
IHsgeCA6ICJiYXoiIH07CisKK2ZvciAodmFyIGk9MDsgaTwxMDAwMDsgaSsrKSB7CisgIHRlc3RD
YXNlKGQueSgpLmJpbmQoZSwgImxleSIpKCksICJiYXJsZXkiLCAiRXJyb3I6IGZ1bmN0aW9uIGJp
bmQgc2hvdWxkbid0IGNoYW5nZSBsZXhpY2FsIGJpbmRpbmcgb2YgdGhlIGFycm93IGZ1bmN0aW9u
Iik7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fy
cm93ZnVuY3Rpb24tY2FsbC5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mv
YXJyb3dmdW5jdGlvbi1jYWxsLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY4NzdlMGFkOWM4M2FjNTNhN2Y2ZDM1
MTk2MjMyMTRjMWU5ZmM2MGUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tY2FsbC5qcwpAQCAtMCwwICsxLDE4IEBACit2
YXIgdGVzdENhc2UgPSBmdW5jdGlvbiAoYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZSkgeworICBp
ZiAoYWN0dWFsICE9PSBleHBlY3RlZCkgeworICAgIHRocm93IG1lc3NhZ2UgKyAiLiBFeHBlY3Rl
ZCAnIiArIGV4cGVjdGVkICsgIicsIGJ1dCB3YXMgJyIgKyBhY3R1YWwgKyAiJyI7CisgIH0KK307
CisKK3ZhciBkID0geworICB4IDogImZvbyIsCisgIHkgOiBmdW5jdGlvbigpIHsgcmV0dXJuICgp
ID0+IHRoaXMueDsgfQorfTsKK25vSW5saW5lKGQueSk7CisKK3ZhciBlID0geyB4IDogImJhciIg
fTsKKworZm9yICh2YXIgaT0wOyBpPDEwMDAwO2krKyl7CisgICAgdGVzdENhc2UoZC55KCkuY2Fs
bChlKSwgImZvbyIsICJFcnJvcjogZnVuY3Rpb24gY2FsbCBzaG91bG4ndCBjaGFuZ2UgdGhlIGxl
eGljYWwgYmluZGluZyBvZiB0aGUgYXJyb3cgZnVuY3Rpb24iKTsKKyAgICB0ZXN0Q2FzZShkLnko
KS5hcHBseShlKSwgImZvbyIsICJFcnJvcjogZnVuY3Rpb24gYXBwbHkgc2hvdWxuJ3QgY2hhbmdl
IHRoZSBsZXhpY2FsIGJpbmRpbmcgb2YgdGhlIGFycm93IGZ1bmN0aW9uIik7Cit9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tY29u
c3RydWN0b3IuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVu
Y3Rpb24tY29uc3RydWN0b3IuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTViZWI1NTdkNzk0OWJjNmIyYzc4YWI0
NjU5ZWE4YzJhYzYzZGU2MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1jb25zdHJ1Y3Rvci5qcwpAQCAtMCwwICsxLDIy
IEBACit2YXIgdGVzdENhc2UgPSBmdW5jdGlvbiAoYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZSkg
eworICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkgeworICAgIHRocm93IG1lc3NhZ2UgKyAiLiBF
eHBlY3RlZCAnIiArIGV4cGVjdGVkICsgIicsIGJ1dCB3YXMgJyIgKyBhY3R1YWwgKyAiJyI7Cisg
IH0KK307CisKK3ZhciBzaW1wbGVBcnJvd0Z1bmN0aW9uID0gKCkgPT4ge307CisKK25vSW5saW5l
KHNpbXBsZUFycm93RnVuY3Rpb24pOworCit2YXIgZXJyb3JPbkNyZWF0ZSA9IGZhbHNlOworCitm
b3IgKGk9MDtpPDEwMDAwO2krKykgeworICAgdHJ5IHsKKyAgICAgICB2YXIgZmMgPSBuZXcgc2lt
cGxlQXJyb3dGdW5jdGlvbigpOworICAgfQorICAgY2F0Y2ggKGUpIHsKKyAgICAgZXJyb3JPbkNy
ZWF0ZSA9IHRydWU7CisgICB9CisKKyAgICB0ZXN0Q2FzZShlcnJvck9uQ3JlYXRlLCB0cnVlLCAi
RXJyb3I6IE5vIGV4Y2VwdGlvbiBkdXJpbmcgcnVuIG5ldyBBcnJvd0Z1bmN0aW9uIik7Cit9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rp
b24tbGV4aWNhbC1iaW5kLXRoaXMtMS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9z
dHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy0xLmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRj
ZmFiMjRjOTFiYzU3Yzk1ODc2MzJkZmVjOWE0YzkzNzk4ZTIxNWMKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNh
bC1iaW5kLXRoaXMtMS5qcwpAQCAtMCwwICsxLDE5IEBACit2YXIgdGVzdENhc2UgPSBmdW5jdGlv
biAoYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZSkgeworICBpZiAoYWN0dWFsICE9PSBleHBlY3Rl
ZCkgeworICAgIHRocm93IG1lc3NhZ2UgKyAiLiBFeHBlY3RlZCAnIiArIGV4cGVjdGVkICsgIics
IGJ1dCB3YXMgJyIgKyBhY3R1YWwgKyAiJyI7CisgIH0KK307CisKK2Z1bmN0aW9uIERvZyhuYW1l
KSB7CisgIHRoaXMubmFtZSA9IG5hbWU7CisgIHRoaXMuZ2V0TmFtZSA9ICgpID0+IGV2YWwoInRo
aXMubmFtZSIpOworICB0aGlzLmdldE5hbWVIYXJkID0gKCkgPT4gZXZhbCgiKCgpID0+IHRoaXMu
bmFtZSkoKSIpOworfQorCitub0lubGluZShEb2cpCisKK2ZvciAodmFyIGk9MDtpPDEwMDAwOyBp
KyspIHsKKyAgdmFyIGQgPSBuZXcgRG9nKCJNYXgiKTsKKyAgdGVzdENhc2UoZC5nZXROYW1lKCks
IGQubmFtZSwgIkVycm9yOiB0aGlzIGlzIG5vdCBsZXhpY2FsbHkgYmluZGVkIGluc2lkZSBvZiB0
aGUgYXJyb3cgZnVuY3Rpb24gIzEiKTsKKyAgdGVzdENhc2UoZC5nZXROYW1lSGFyZCgpLCBkLm5h
bWUsICJFcnJvcjogdGhpcyBpcyBub3QgbGV4aWNhbGx5IGJpbmRlZCBpbnNpZGUgb2YgdGhlIGFy
cm93IGZ1bmN0aW9uICMyIik7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
dGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRoaXMtMi5qcyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQt
dGhpcy0yLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjExN2RiMzAzY2RmZTNkMTVkYTQ1YzgxNjRlNDhkMDNhNjdl
YjkyYTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3Ry
ZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRoaXMtMi5qcwpAQCAtMCwwICsxLDM5IEBA
Cit2YXIgdGVzdENhc2UgPSBmdW5jdGlvbiAoYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZSkgewor
ICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkgeworICAgIHRocm93IG1lc3NhZ2UgKyAiLiBFeHBl
Y3RlZCAnIiArIGV4cGVjdGVkICsgIicsIGJ1dCB3YXMgJyIgKyBhY3R1YWwgKyAiJyI7CisgIH0K
K307CisKK3ZhciBmdW5jdGlvbkNvbnN0cnVjdG9yID0gZnVuY3Rpb24gKCkgeworICB0aGlzLmZ1
bmMgPSAoKSA9PiB0aGlzOworfTsKKwordmFyIGluc3RhbmNlID0gbmV3IGZ1bmN0aW9uQ29uc3Ry
dWN0b3IoKTsKKwordGVzdENhc2UoaW5zdGFuY2UuZnVuYygpID09PSBpbnN0YW5jZSwgdHJ1ZSwg
IkVycm9yOiB0aGlzIGlzIG5vdCBsZXhpY2FsbHkgYmluZGVkIGluc2lkZSBvZiB0aGUgYXJyb3cg
ZnVuY3Rpb24gIzIiKTsKKwordmFyIG9iaiA9IHsKKyAgbWV0aG9kOiBmdW5jdGlvbiAoKSB7Cisg
ICAgcmV0dXJuICgpID0+IHRoaXM7CisgIH0KK307CisKK25vSW5saW5lKG9iai5tZXRob2QpOwor
Citmb3IgKHZhciBpPTA7IGkgPCAxMDAwMDsgaSsrKSB7CisgICAgdGVzdENhc2Uob2JqLm1ldGhv
ZCgpKCkgPT09IG9iaiwgdHJ1ZSwgIkVycm9yOiB0aGlzIGlzIG5vdCBsZXhpY2FsbHkgYmluZGVk
IGluc2lkZSBvZiB0aGUgYXJyb3cgZnVuY3Rpb24gIzMiKTsKK30KKwordmFyIGZha2UgPSB7c3Rl
YWw6IG9iai5tZXRob2QoKX07Citub0lubGluZShmYWtlLnN0ZWFsKTsKKworZm9yICh2YXIgaT0w
OyBpIDwgMTAwMDA7IGkrKykgeworICAgIHRlc3RDYXNlKGZha2Uuc3RlYWwoKSA9PT0gb2JqLCB0
cnVlLCAiRXJyb3I6IHRoaXMgaXMgbm90IGxleGljYWxseSBiaW5kZWQgaW5zaWRlIG9mIHRoZSBh
cnJvdyBmdW5jdGlvbiAjNCIpOworfQorCit2YXIgcmVhbCA9IHtib3Jyb3c6IG9iai5tZXRob2R9
Oworbm9JbmxpbmUocmVhbC5ib3Jyb3cpOworCitmb3IgKHZhciBpPTA7IGkgPCAxMDAwMDsgaSsr
KSB7CisgICAgdGVzdENhc2UocmVhbC5ib3Jyb3coKSgpID09PSByZWFsLCB0cnVlLCAiRXJyb3I6
IHRoaXMgaXMgbm90IGxleGljYWxseSBiaW5kZWQgaW5zaWRlIG9mIHRoZSBhcnJvdyBmdW5jdGlv
biAjNSIpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVz
cy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtYmluZC10aGlzLTMuanMgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRoaXMtMy5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4xMDE5MDg2ZDU4NDc5YzRiZDRmZTBmNTI3YjNhN2JiODkzOWMwOTJkCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1
bmN0aW9uLWxleGljYWwtYmluZC10aGlzLTMuanMKQEAgLTAsMCArMSwyOCBAQAordmFyIHRlc3RD
YXNlID0gZnVuY3Rpb24gKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2UpIHsKKyAgaWYgKGFjdHVh
bCAhPT0gZXhwZWN0ZWQpIHsKKyAgICB0aHJvdyBtZXNzYWdlICsgIi4gRXhwZWN0ZWQgJyIgKyBl
eHBlY3RlZCArICInLCBidXQgd2FzICciICsgYWN0dWFsICsgIiciOworICB9Cit9OworCisKK3Zh
ciBvYmogPSB7IG5hbWU6J29iaicsIG1ldGhvZDogZnVuY3Rpb24gKCkgeyByZXR1cm4gKHZhbHVl
KSA9PiB0aGlzLm5hbWUgKyAiLW5hbWUtIiArIHZhbHVlOyB9fTsKKworZm9yICh2YXIgaT0wOyBp
PDEwMDAwOyBpKyspIHsKKyAgdGVzdENhc2Uob2JqLm1ldGhvZCgpKCd0ZXN0JyArIGkudG9TdHJp
bmcoKSksICdvYmotbmFtZS10ZXN0JyArIGkudG9TdHJpbmcoKSwgIkVycm9yOiB0aGlzIGlzIG5v
dCBsZXhpY2FsbHkgYmluZGVkIGluc2lkZSBvZiB0aGUgYXJyb3cgZnVuY3Rpb24gIzEiKTsKK30K
KworZm9yICh2YXIgaT0wOyBpPDEwMDAwOyBpKyspIHsKKyAgdmFyIHJlc3VsdDEgPSBvYmoubWV0
aG9kKCkoJ3Rlc3QnICsgaS50b1N0cmluZygpKTsKKyAgdGVzdENhc2UocmVzdWx0MSwgJ29iai1u
YW1lLXRlc3QnICsgaS50b1N0cmluZygpLCAiRXJyb3I6IHRoaXMgaXMgbm90IGxleGljYWxseSBi
aW5kZWQgaW5zaWRlIG9mIHRoZSBhcnJvdyBmdW5jdGlvbiAjMSIpOworfQorCitvYmoubmFtZT0n
bmV3T2JqJzsKKworZm9yICh2YXIgaT0wOyBpPDEwMDAwOyBpKyspIHsKKyAgdGVzdENhc2Uob2Jq
Lm1ldGhvZCgpKCd0ZXN0JyArIGkudG9TdHJpbmcoKSksICduZXdPYmotbmFtZS10ZXN0JyArIGku
dG9TdHJpbmcoKSwgIkVycm9yOiB0aGlzIGlzIG5vdCBsZXhpY2FsbHkgYmluZGVkIGluc2lkZSBv
ZiB0aGUgYXJyb3cgZnVuY3Rpb24gIzUiKTsKK30KKworZm9yICh2YXIgaT0wOyBpPDEwMDAwOyBp
KyspIHsKKyAgdmFyIHJlc3VsdDIgPSBvYmoubWV0aG9kKCkoJ3Rlc3QnICsgaS50b1N0cmluZygp
KTsKKyAgdGVzdENhc2UocmVzdWx0MiwgJ25ld09iai1uYW1lLXRlc3QnICsgaS50b1N0cmluZygp
LCAiRXJyb3I6IHRoaXMgaXMgbm90IGxleGljYWxseSBiaW5kZWQgaW5zaWRlIG9mIHRoZSBhcnJv
dyBmdW5jdGlvbiAjNSIpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rl
c3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtYmluZC10aGlzLTQuanMgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRo
aXMtNC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi44NWJkMzYzZTRlNDZiMDJkMmYxOWJiZTM4NTAyZjUyODIzM2E5
ZjEzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVz
cy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtYmluZC10aGlzLTQuanMKQEAgLTAsMCArMSwyNiBAQAor
dmFyIHRlc3RDYXNlID0gZnVuY3Rpb24gKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2UpIHsKKyAg
aWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpIHsKKyAgICB0aHJvdyBtZXNzYWdlICsgIi4gRXhwZWN0
ZWQgJyIgKyBleHBlY3RlZCArICInLCBidXQgd2FzICciICsgYWN0dWFsICsgIiciOworICB9Cit9
OworCisKK3ZhciBvYmogPSB7CisgIG5hbWU6J29iaicsCisgIGludGVybmFsT2JqZWN0OiB7Cisg
ICAgbmFtZSAgOidpbnRlcm5hbE9iamVjdCcsCisgICAgbWV0aG9kOiBmdW5jdGlvbiAoKSB7IHJl
dHVybiAodmFsdWUpID0+IHRoaXMubmFtZSArICItbmFtZS0iICsgdmFsdWU7IH0KKyAgfQorfTsK
Kworbm9JbmxpbmUob2JqLmludGVybmFsT2JqZWN0Lm1ldGhvZCk7CisKK2ZvciAodmFyIGk9MDsg
aTwxMDAwMDsgaSsrKSB7CisgICAgdGVzdENhc2Uob2JqLmludGVybmFsT2JqZWN0Lm1ldGhvZCgp
KCd0ZXN0JyArIGkudG9TdHJpbmcoKSksICdpbnRlcm5hbE9iamVjdC1uYW1lLXRlc3QnICsgaS50
b1N0cmluZygpLCAiRXJyb3I6IHRoaXMgaXMgbm90IGxleGljYWxseSBiaW5kZWQgaW5zaWRlIG9m
IHRoZSBhcnJvdyBmdW5jdGlvbiAjMSIpOworfQorCitvYmouaW50ZXJuYWxPYmplY3QubmFtZT0n
bmV3SW50ZXJuYWxPYmplY3QnOworCitmb3IgKHZhciBpPTA7IGk8MTAwMDA7IGkrKykgeworICAg
IHRlc3RDYXNlKG9iai5pbnRlcm5hbE9iamVjdC5tZXRob2QoKSgndGVzdCcgKyBpLnRvU3RyaW5n
KCkpLCAnbmV3SW50ZXJuYWxPYmplY3QtbmFtZS10ZXN0JyArIGkudG9TdHJpbmcoKSwgIkVycm9y
OiB0aGlzIGlzIG5vdCBsZXhpY2FsbHkgYmluZGVkIGluc2lkZSBvZiB0aGUgYXJyb3cgZnVuY3Rp
b24gIzUiKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJl
c3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy01LmpzIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtYmluZC10aGlzLTUuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uODc1NDk0Y2U2YjY2ZGIwYTdlYjQzZGNjODNlYzFlYWNlNjI4NzU0NgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dm
dW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy01LmpzCkBAIC0wLDAgKzEsNDggQEAKK3ZhciBzb3J0
ZWRWYWx1ZXM7CisKK3ZhciB0ZXN0Q2FzZSA9IGZ1bmN0aW9uIChhY3R1YWwsIGV4cGVjdGVkLCBt
ZXNzYWdlKSB7CisgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKSB7CisgICAgdGhyb3cgbWVzc2Fn
ZSArICIuIEV4cGVjdGVkICciICsgZXhwZWN0ZWQgKyAiJywgYnV0IHdhcyAnIiArIGFjdHVhbCAr
ICInIjsKKyAgfQorfTsKKworCit2YXIgb2JqID0geworICBhcnI6IFsxLCA0LCA2LCAzLCA3LCAw
XSwKKyAgYnViYmxlU29ydDogZnVuY3Rpb24gKCkgeworICAgIHJldHVybiAoKSA9PiB7CisgICAg
ICB2YXIgdG1wOworICAgICAgdmFyIGFyID0gdGhpcy5hcnIuc2xpY2UoKTsKKyAgICAgIHZhciBf
bGVuZ3RoID0gYXIubGVuZ3RoCisgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IF9sZW5ndGg7IGkr
KykgeworICAgICAgICBmb3IgKHZhciBqID0gaTsgaiA+IDA7IGotLSkgeworICAgICAgICAgIGlm
ICgoYXJbal0gLSBhcltqIC0gMV0pIDwgMCkgeworICAgICAgICAgICAgdG1wID0gYXJbal07Cisg
ICAgICAgICAgICBhcltqXSA9IGFyW2ogLSAxXTsKKyAgICAgICAgICAgIGFyW2ogLSAxXSA9IHRt
cDsKKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIHJldHVybiBhcjsKKyAg
ICB9CisgIH0KK307CisKK25vSW5saW5lKG9iai5idWJibGVTb3J0KTsKKworZm9yICh2YXIgaT0w
OyBpPDEwMDAwOyBpKyspIHsKKyAgICBvYmouYXJyID0gWzEsIDIsIDQsIDYsIDMsIDcsIDBdOwor
ICAgIHRlc3RDYXNlKG9iai5idWJibGVTb3J0KCkoKS5sZW5ndGgsIDcsICJFcnJvcjogdGhpcyBp
cyBub3QgbGV4aWNhbGx5IGJpbmRlZCBpbnNpZGUgb2YgdGhlIGFycm93IGZ1bmN0aW9uICMxIik7
CisKKyAgICB2YXIgc29ydGVkVmFsdWVzID0gb2JqLmJ1YmJsZVNvcnQoKSgpOworICAgIHRlc3RD
YXNlKHNvcnRlZFZhbHVlc1swXSwgMCwgIkVycm9yOiB0aGlzIGlzIG5vdCBsZXhpY2FsbHkgYmlu
ZGVkIGluc2lkZSBvZiB0aGUgYXJyb3cgZnVuY3Rpb24gIzYiKTsKKyAgICB0ZXN0Q2FzZShzb3J0
ZWRWYWx1ZXNbNl0sIDcsICJFcnJvcjogdGhpcyBpcyBub3QgbGV4aWNhbGx5IGJpbmRlZCBpbnNp
ZGUgb2YgdGhlIGFycm93IGZ1bmN0aW9uICM3Iik7CisKKyAgICBvYmouYXJyID0gWzEsIDIsIDQs
IDYsIDUsIDgsIDIxLCAxOSwgMF07CisKKyAgICB0ZXN0Q2FzZShvYmouYnViYmxlU29ydCgpKCku
bGVuZ3RoLCA5LCAiRXJyb3I6IHRoaXMgaXMgbm90IGxleGljYWxseSBiaW5kZWQgaW5zaWRlIG9m
IHRoZSBhcnJvdyBmdW5jdGlvbiAjOCIpOworCisgICAgc29ydGVkVmFsdWVzID0gb2JqLmJ1YmJs
ZVNvcnQoKSgpOworICAgIHRlc3RDYXNlKHNvcnRlZFZhbHVlc1sxXSwgMSwgIkVycm9yOiB0aGlz
IGlzIG5vdCBsZXhpY2FsbHkgYmluZGVkIGluc2lkZSBvZiB0aGUgYXJyb3cgZnVuY3Rpb24gIzEy
Iik7CisgICAgdGVzdENhc2Uoc29ydGVkVmFsdWVzWzhdLCAyMSwgIkVycm9yOiB0aGlzIGlzIG5v
dCBsZXhpY2FsbHkgYmluZGVkIGluc2lkZSBvZiB0aGUgYXJyb3cgZnVuY3Rpb24gIzEzIik7Cit9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVu
Y3Rpb24tbGV4aWNhbC1iaW5kLXRoaXMtNi5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0
cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy02LmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmM0MTdiYzdjOGYxODA1MzU4YmRiYTg1YjJjZWY2YTY5YjVmNDFlY2EKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4
aWNhbC1iaW5kLXRoaXMtNi5qcwpAQCAtMCwwICsxLDI0IEBACit2YXIgdGVzdENhc2UgPSBmdW5j
dGlvbiAoYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZSkgeworICBpZiAoYWN0dWFsICE9PSBleHBl
Y3RlZCkgeworICAgIHRocm93IG1lc3NhZ2UgKyAiLiBFeHBlY3RlZCAnIiArIGV4cGVjdGVkICsg
IicsIGJ1dCB3YXMgJyIgKyBhY3R1YWwgKyAiJyI7CisgIH0KK307CisKK2Z1bmN0aW9uIERvZyhu
YW1lKSB7CisgIHRoaXMubmFtZSA9IG5hbWU7CisgIHRoaXMuZ2V0TmFtZSA9ICgpID0+ICB0aGlz
Lm5hbWU7CisgIHRoaXMuZ2V0TmFtZU5lc3RpbmdMZXZlbDEgPSAoKSA9PiAoKSA9PiB0aGlzLm5h
bWU7CisgIHRoaXMuZ2V0TmFtZU5lc3RpbmdMZXZlbDIgPSAoKSA9PiAoKSA9PiAoKSA9PiB0aGlz
Lm5hbWU7Cit9CisKK3ZhciBkID0gbmV3IERvZygiTWF4Iik7CisKK25vSW5saW5lKGQuZ2V0TmFt
ZSgpKTsKK25vSW5saW5lKGQuZ2V0TmFtZU5lc3RpbmdMZXZlbDEoKSgpKTsKK25vSW5saW5lKGQu
Z2V0TmFtZU5lc3RpbmdMZXZlbDIoKSgpKCkpOworCitmb3IgKHZhciBpPTA7aTwxMDAwMDsgaSsr
KSB7CisgIHRlc3RDYXNlKGQuZ2V0TmFtZSgpLCBkLm5hbWUsICJFcnJvcjogdGhpcyBpcyBub3Qg
bGV4aWNhbGx5IGJpbmRlZCBpbnNpZGUgb2YgdGhlIGFycm93IGZ1bmN0aW9uICMxIik7CisgIHRl
c3RDYXNlKGQuZ2V0TmFtZU5lc3RpbmdMZXZlbDEoKSgpLCBkLm5hbWUsICJFcnJvcjogdGhpcyBp
cyBub3QgbGV4aWNhbGx5IGJpbmRlZCBpbnNpZGUgb2YgdGhlIGFycm93IGZ1bmN0aW9uICMyIik7
CisgIHRlc3RDYXNlKGQuZ2V0TmFtZU5lc3RpbmdMZXZlbDIoKSgpKCksIGQubmFtZSwgIkVycm9y
OiB0aGlzIGlzIG5vdCBsZXhpY2FsbHkgYmluZGVkIGluc2lkZSBvZiB0aGUgYXJyb3cgZnVuY3Rp
b24gIzMiKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJl
c3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLXRoaXMtYWN0aXZhdGlvbi1zaW5rLW9zcmV4aXQuanMg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNh
bC10aGlzLWFjdGl2YXRpb24tc2luay1vc3JleGl0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFkMTBhMzFkNjcz
MWFlNjk3NGQ2NjdlZDhkMjQ4NzBiNWQ1MzFmNjUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC10aGlzLWFj
dGl2YXRpb24tc2luay1vc3JleGl0LmpzCkBAIC0wLDAgKzEsMzQgQEAKK3ZhciBuID0gMTAwMDAw
MDA7CisKK3ZhciBuZXdDb250ZXh0ID0geworICBpZCA6ICduZXctY29udGV4dCcKK307CisKK2Z1
bmN0aW9uIGJhcigpIHsgfQorCitmdW5jdGlvbiBmb28oYikgeworICAgIHZhciByZXN1bHQgPSAw
OworICAgIHZhciBzZXQgPSAoeCkgPT4geworICAgICAgLy8gQ2hlY2sgaWYgYXJyb3cgZnVuY3Rp
b24gc3RvcmUgY29udGV4dAorICAgICAgaWYgKHRoaXMgIT0gbmV3Q29udGV4dCB8fCB0aGlzLmlk
ICE9IG5ld0NvbnRleHQuaWQpCisgICAgICAgICAgdGhyb3cgJ1dyb25nIGNvbnRleHQgb2YgYXJy
b3cgZnVuY3Rpb24nOworICAgICAgcmVzdWx0ID0geDsKKyAgICB9CisgICAgaWYgKGIpIHsKKyAg
ICAgICAgT1NSRXhpdCgpOworICAgICAgICBpZiAoYikgeworICAgICAgICAgICAgYmFyKHNldCk7
CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAgcmV0dXJuIHJl
c3VsdDsKK30KKworbm9JbmxpbmUoYmFyKTsKK25vSW5saW5lKGZvbyk7CisKK2ZvciAodmFyIGkg
PSAwOyBpIDwgbjsgaSsrKSB7CisgICAgdmFyIHJlc3VsdCA9IGZvby5jYWxsKG5ld0NvbnRleHQs
ICEoaSAlIDEwMCkpOworICAgIGlmIChyZXN1bHQgIT0gMCkKKyAgICAgICAgdGhyb3cgIkVycm9y
OiBiYWQgcmVzdWx0OiAiICsgcmVzdWx0OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtdGhpcy1hY3RpdmF0aW9u
LXNpbmsuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rp
b24tbGV4aWNhbC10aGlzLWFjdGl2YXRpb24tc2luay5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jYTQzMDYzN2M4
NWJmOTQyMWFlOWM5N2UwZGQ3ZjZjZDEzNWM0Mzk5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtdGhpcy1h
Y3RpdmF0aW9uLXNpbmsuanMKQEAgLTAsMCArMSwzOCBAQAordmFyIG4gPSAxMDAwMDAwMDsKKwor
dmFyIG5ld0NvbnRleHQgPSB7CisgIGlkIDogJ25ldy1jb250ZXh0JworfTsKKworZnVuY3Rpb24g
YmFyKGYpIHsKKyAgICBpZiAodGhpcyA9PSBuZXdDb250ZXh0KQorICAgICAgICB0aHJvdyAnV3Jv
bmcgY29udGV4dCBvZiBuZXN0aW5nIGZ1bmN0aW9uJzsKKyAgICBmKDEwKTsKK30KKworZnVuY3Rp
b24gZm9vKGIpIHsKKyAgICB2YXIgcmVzdWx0ID0gMDsKKyAgICB2YXIgc2V0ID0gKHgpID0+IHsK
KyAgICAgIHJlc3VsdCA9IHg7CisgICAgICAvLyBDaGVjayBpZiBhcnJvdyBmdW5jdGlvbiBzdG9y
ZSBjb250ZXh0CisgICAgICBpZiAodGhpcyAhPSBuZXdDb250ZXh0IHx8IHRoaXMuaWQgIT0gbmV3
Q29udGV4dC5pZCkKKyAgICAgICAgICB0aHJvdyAnV3JvbmcgY29udGV4dCBvZiBhcnJvdyBmdW5j
dGlvbic7CisgICAgfTsKKworICAgIGlmIChiKSB7CisgICAgICAgIGJhcihzZXQpOworICAgICAg
ICBpZiAocmVzdWx0ICE9IDEwKQorICAgICAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQ6ICIgKyBy
ZXN1bHQ7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQor
Citub0lubGluZShiYXIpOworbm9JbmxpbmUoZm9vKTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCBu
OyBpKyspIHsKKyAgICB2YXIgcmVzdWx0ID0gZm9vLmNhbGwobmV3Q29udGV4dCwgIShpICUgMTAw
KSk7CisgICAgaWYgKHJlc3VsdCAhPSAwKQorICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1
bHQ6ICIgKyByZXN1bHQ7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVz
dHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC10aGlzLXNpbmtpbmctbm8tZG91YmxlLWFs
bG9jYXRlLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0
aW9uLWxleGljYWwtdGhpcy1zaW5raW5nLW5vLWRvdWJsZS1hbGxvY2F0ZS5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li44NjllMDI3MTM5YzE2NjdlMTA2OWJhYmQyOTVhNmQ3ZmMwYjllNDE1Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxl
eGljYWwtdGhpcy1zaW5raW5nLW5vLWRvdWJsZS1hbGxvY2F0ZS5qcwpAQCAtMCwwICsxLDM3IEBA
Cit2YXIgbmV3Q29udGV4dCA9IHsKKyAgaWQgOiAnbmV3LWNvbnRleHQnCit9OworCitmdW5jdGlv
biBjYWxsKG8pIHsgby54ID0gMzsgfQorbm9JbmxpbmUoY2FsbCk7CisKKy8vIFNob3VsZCBiZSBp
bnZvY2VkIGJ5IGNhbGwgd2l0aCBzdWJzdGl0dXRlIHRoaXMgYnkgbmV3Q29udGV4dAorZnVuY3Rp
b24gc2luayAocCwgcSkgeworICAgIHZhciBmID0gKCkgPT4geworICAgICAgLy8gQ2hlY2sgaWYg
YXJyb3cgZnVuY3Rpb24gc3RvcmUgY29udGV4dAorICAgICAgaWYgKHRoaXMgIT0gbmV3Q29udGV4
dCB8fCB0aGlzLmlkICE9IG5ld0NvbnRleHQuaWQpCisgICAgICAgICAgdGhyb3cgJ1dyb25nIGNv
bnRleHQgb2YgYXJyb3cgZnVuY3Rpb24gIzEnOworICAgIH07CisgICAgaWYgKHApIHsKKyAgICAg
ICAgY2FsbChmKTsgLy8gRm9yY2UgYWxsb2NhdGlvbiBvZiBmCisgICAgICAgIGlmIChxKSB7Cisg
ICAgICAgICAgICBPU1JFeGl0KCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGY7CisgICAg
fQorICAgIHJldHVybiB7ICd4JzogMiB9OworfQorbm9JbmxpbmUoc2luayk7CisKK2ZvciAodmFy
IGkgPSAwOyBpIDwgMTAwMDAwOyArK2kpIHsKKyAgICB2YXIgbyA9IHNpbmsuY2FsbChuZXdDb250
ZXh0LCB0cnVlLCBmYWxzZSk7CisgICAgaWYgKG8ueCAhPSAzKQorICAgICAgICB0aHJvdyAiRXJy
b3I6IGV4cGVjdGVkIG8ueCB0byBiZSAyIGJ1dCBpcyAiICsgcmVzdWx0OworfQorCisvLyBBdCB0
aGlzIHBvaW50LCB0aGUgYXJyb3cgZnVuY3Rpb24gc2hvdWxkIGJlIGNvbXBpbGVkIGRvd24gdG8g
dGhlIEZUTAorCisvLyBDaGVjayB0aGF0IHRoZSBmdW5jdGlvbiBpcyBwcm9wZXJseSBhbGxvY2F0
ZWQgb24gT1NSIGV4aXQKK3ZhciBmID0gc2luayh0cnVlLCB0cnVlKTsKK2lmIChmLnggIT0gMykK
KyAgICB0aHJvdyAiRXJyb3I6IGV4cGVjdGVkIG8ueCB0byBiZSAzIGJ1dCBpcyAiICsgcmVzdWx0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1
bmN0aW9uLWxleGljYWwtdGhpcy1zaW5raW5nLW9zcmV4aXQuanMgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC10aGlzLXNpbmtpbmctb3Ny
ZXhpdC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi43ZmZjYjNmYTViMWU3N2ZiNjI4NjE4MGIzMzJhM2JlN2RlMjhm
NjBlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVz
cy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtdGhpcy1zaW5raW5nLW9zcmV4aXQuanMKQEAgLTAsMCAr
MSwzNiBAQAordmFyIG5ld0NvbnRleHQgPSB7CisgIGlkIDogJ25ldy1jb250ZXh0JworfTsKKwor
Ly8gU2hvdWxkIGJlIGludm9jZWQgYnkgY2FsbCB3aXRoIHN1YnN0aXR1dGUgdGhpcyBieSBuZXdD
b250ZXh0CitmdW5jdGlvbiBzaW5rIChwLCBxKSB7CisgICAgdmFyIGcgPSB4ID0+IHsKKyAgICAg
IC8vIENoZWNrIGlmIGFycm93IGZ1bmN0aW9uIHN0b3JlIGNvbnRleHQKKyAgICAgIGlmICh0aGlz
ICE9IG5ld0NvbnRleHQgfHwgdGhpcy5pZCAhPSBuZXdDb250ZXh0LmlkKQorICAgICAgICAgIHRo
cm93ICdXcm9uZyBjb250ZXh0IG9mIGFycm93IGZ1bmN0aW9uICMxJzsKKyAgICAgIHJldHVybiB4
OworICAgIH07CisgICAgaWYgKHApIHsgaWYgKHEpIE9TUkV4aXQoKTsgcmV0dXJuIGc7IH0KKyAg
ICByZXR1cm4geCA9PiB7CisgICAgICAvLyBDaGVjayBpZiBhcnJvdyBmdW5jdGlvbiBzdG9yZSBj
b250ZXh0CisgICAgICBpZiAodGhpcyAhPSBuZXdDb250ZXh0IHx8IHRoaXMuaWQgIT0gbmV3Q29u
dGV4dC5pZCkKKyAgICAgICAgICB0aHJvdyAnV3JvbmcgY29udGV4dCBvZiBhcnJvdyBmdW5jdGlv
biAjMic7CisgICAgICByZXR1cm4geDsKKyAgICB9OworfQorbm9JbmxpbmUoc2luayk7CisKK2Zv
ciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7ICsraSkgeworICAgIHZhciBmID0gc2luay5jYWxsKG5l
d0NvbnRleHQsIHRydWUsIGZhbHNlKTsvLyBTdWJzdGl0dXRlIHRoaXMKKyAgICB2YXIgcmVzdWx0
ID0gZig0Mik7CisgICAgaWYgKHJlc3VsdCAhPSA0MikKKyAgICB0aHJvdyAiRXJyb3I6IGV4cGVj
dGVkIDQyIGJ1dCBnb3QgIiArIHJlc3VsdDsKK30KKworLy8gQXQgdGhpcyBwb2ludCwgdGhlIGZ1
bmN0aW9uIHNob3VsZCBiZSBjb21waWxlZCBkb3duIHRvIHRoZSBGVEwKKworLy8gQ2hlY2sgdGhh
dCB0aGUgZnVuY3Rpb24gaXMgcHJvcGVybHkgYWxsb2NhdGVkIG9uIE9TUiBleGl0Cit2YXIgZiA9
IHNpbmsuY2FsbChuZXdDb250ZXh0LHRydWUsIHRydWUpOy8vIFN1YnN0aXR1dGUgdGhpcwordmFy
IHJlc3VsdCA9IGYoNDIpOworaWYgKHJlc3VsdCAhPSA0MikKKyAgICB0aHJvdyAiRXJyb3I6IGV4
cGVjdGVkIDQyIGJ1dCBnb3QgIiArIHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLXRoaXMtc2lua2luZy1w
dXQuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24t
bGV4aWNhbC10aGlzLXNpbmtpbmctcHV0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1N2VhMDc2MzVhNDEzMWNk
MjMxMWQ0NTA3MzVmNTdjMWRkOTU4NjUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC10aGlzLXNpbmtpbmct
cHV0LmpzCkBAIC0wLDAgKzEsNDUgQEAKK3ZhciBuZXdDb250ZXh0ID0geworICBpZCA6ICduZXct
Y29udGV4dCcKK307CisKKy8vIFNob3VsZCBiZSBpbnZvY2VkIGJ5IGNhbGwgd2l0aCBzdWJzdGl0
dXRlIHRoaXMgYnkgbmV3Q29udGV4dAorZnVuY3Rpb24gc2luayAocCwgcSkgeworICAgIHZhciBn
ID0geCA9PiB7CisgICAgICAvLyBDaGVjayBpZiBhcnJvdyBmdW5jdGlvbiBzdG9yZSBjb250ZXh0
CisgICAgICBpZiAodGhpcyAhPSBuZXdDb250ZXh0IHx8IHRoaXMuaWQgIT0gbmV3Q29udGV4dC5p
ZCkKKyAgICAgICAgICB0aHJvdyAnV3JvbmcgY29udGV4dCBvZiBhcnJvdyBmdW5jdGlvbiAjMSc7
CisKKyAgICAgIHJldHVybiB4OworICAgIH07CisgICAgaWYgKHApIHsgaWYgKHEpIGcuaW5uZXIg
PSA0MjsgcmV0dXJuIGc7IH0KKyAgICByZXR1cm4geCA9PiB7CisgICAgICAvLyBDaGVjayBpZiBh
cnJvdyBmdW5jdGlvbiBzdG9yZSBjb250ZXh0CisgICAgICBpZiAodGhpcyAhPSBuZXdDb250ZXh0
IHx8IHRoaXMuaWQgIT0gbmV3Q29udGV4dC5pZCkKKyAgICAgICAgICB0aHJvdyAnV3JvbmcgY29u
dGV4dCBvZiBhcnJvdyBmdW5jdGlvbiAjMic7CisKKyAgICAgIHJldHVybiB4OworICAgIH07Cit9
Citub0lubGluZShzaW5rKTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgKytpKSB7Cisg
ICAgdmFyIGYgPSBzaW5rLmNhbGwobmV3Q29udGV4dCwgdHJ1ZSwgdHJ1ZSk7Ly8gdXNlIGNhbGwg
dG8gc3Vic3RpdHV0ZSBjb250ZXh0CisgICAgdmFyIHJlc3VsdCA9IGYoNDIpOworICAgIGlmIChy
ZXN1bHQgIT0gNDIpCisgICAgdGhyb3cgIkVycm9yOiBleHBlY3RlZCA0MiBidXQgZ290ICIgKyBy
ZXN1bHQ7Cit9CisKKy8vIEF0IHRoaXMgcG9pbnQsIHRoZSBhcnJvdyBmdW5jdGlvbiBzaG91bGQg
YmUgY29tcGlsZWQgZG93biB0byB0aGUgRlRMCisKKy8vIFRlc3QgdGhlIGFsbG9jYXRpb24gb24g
dGhlIGltcGxpY2l0IGlubmVyIGVsc2UgYnJhbmNoCit2YXIgZiA9IHNpbmsuY2FsbChuZXdDb250
ZXh0LCB0cnVlLCBmYWxzZSk7Cit2YXIgcmVzdWx0ID0gZigxMik7CitpZiAocmVzdWx0ICE9IDEy
KQorICAgIC8vIFRoaXMgc2hvdWxkbid0IG1hdHRlciBhcyBpdCBzaG91bGQgYmUgZWl0aGVyIGNv
cnJlY3Qgb3IgY29tcGxldGVseSBjcmFzaAorICAgIHRocm93ICJFcnJvcjogZXhwZWN0ZWQgMTIg
YnV0IGdvdCAiICsgcmVzdWx0OworCisvLyBDaGVjayB0aGF0IHRoZSBhbGxvY2F0aW9uIGRpZCBu
b3Qgc2luayBiZXlvbmQgdGhlIHByb3BlcnR5IGFzc2lnbm1lbnQKK3ZhciBmID0gc2luay5jYWxs
KG5ld0NvbnRleHQsIHRydWUsIHRydWUpOwordmFyIHJlc3VsdCA9IGYuaW5uZXI7CitpZiAocmVz
dWx0ICE9IDQyKQorICAgIHRocm93ICJFcnJvcjogaW5uZXIgc2hvdWxkIGJlIDQyIGJ1dCBpcyAi
ICsgcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVz
cy9hcnJvd2Z1bmN0aW9uLW90aGVycy5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9z
dHJlc3MvYXJyb3dmdW5jdGlvbi1vdGhlcnMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTRjZTBjNjU4ZDNhMmY3
OTIyOWRmNGY4OTJjY2RhMTUxM2M5NGU1OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1vdGhlcnMuanMKQEAgLTAsMCAr
MSwxNyBAQAordmFyIHRlc3RDYXNlID0gZnVuY3Rpb24gKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3Nh
Z2UpIHsKKyAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpIHsKKyAgICB0aHJvdyBtZXNzYWdlICsg
Ii4gRXhwZWN0ZWQgJyIgKyBleHBlY3RlZCArICInLCBidXQgd2FzICciICsgYWN0dWFsICsgIici
OworICB9Cit9OworCit2YXIgc2ltcGxlQXJyb3dGdW5jdGlvbiA9ICgpID0+IHt9OworCitub0lu
bGluZShzaW1wbGVBcnJvd0Z1bmN0aW9uKTsKKworZm9yICh2YXIgaT0wO2k8MTAwMDA7aSsrKSB7
CisgICB0ZXN0Q2FzZShPYmplY3QuZ2V0UHJvdG90eXBlT2Yoc2ltcGxlQXJyb3dGdW5jdGlvbiks
IEZ1bmN0aW9uLnByb3RvdHlwZSwgIkVycm9yOiBOb3QgY29ycmVjdCBnZXRQcm90b3R5cGVPZiB2
YWx1ZSBmb3IgYXJyb3cgZnVuY3Rpb24iKTsKKworICAgdGVzdENhc2Uoc2ltcGxlQXJyb3dGdW5j
dGlvbiBpbnN0YW5jZW9mIEZ1bmN0aW9uLCB0cnVlLCAiRXJyb3I6IE5vdCBjb3JyZWN0IHJlc3Vs
dCBmb3IgaW5zdGFuY2VvZiBtZXRob2QgZm9yIGFycm93IGZ1bmN0aW9uIik7CisKKyAgIHRlc3RD
YXNlKHNpbXBsZUFycm93RnVuY3Rpb24uY29uc3RydWN0b3IgPT0gRnVuY3Rpb24sIHRydWUsICJF
cnJvcjogTm90IGNvcnJlY3QgcmVzdWx0IGZvciBjb25zdHJ1Y3RvciBtZXRob2Qgb2YgYXJyb3cg
ZnVuY3RpbyAgIG4iKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0
cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1ydW4tMTAtMS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1ydW4tMTAtMS5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wN2Ex
ZjBhNDljYjE2ODYzYzU5MjEzNjFmMGFkYjFlMTRlYzliNjVhCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLXJ1bi0xMC0x
LmpzCkBAIC0wLDAgKzEsMjQgQEAKK3ZhciB0ZXN0Q2FzZSA9IGZ1bmN0aW9uIChhY3R1YWwsIGV4
cGVjdGVkLCBtZXNzYWdlKSB7CisgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKSB7CisgICAgdGhy
b3cgbWVzc2FnZSArICIuIEV4cGVjdGVkICciICsgZXhwZWN0ZWQgKyAiJywgYnV0IHdhcyAnIiAr
IGFjdHVhbCArICInIjsKKyAgfQorfTsKKworZnVuY3Rpb24gcnVuKGNvdW50KSB7CisgIHZhciBy
ZXN1bHQgPSB0cnVlOworICBmb3IodmFyIGk9MDsgaTxjb3VudDsgaSsrKSB7CisgICAgdmFyIE9i
aiA9IGZ1bmN0aW9uIChuYW1lKSB7CisgICAgICB0aGlzLm5hbWUgPSBuYW1lOworICAgICAgdGhp
cy5nZXROYW1lID0gKCkgPT4gdGhpcy5uYW1lOworICAgIH07CisKKyAgICB2YXIgb2JqID0gbmV3
IE9iaigiSXRlbSIgKyBpKTsKKyAgICBpZiAob2JqLm5hbWUgIT09IG9iai5nZXROYW1lKCkpIHsK
KyAgICAgIHJlc3VsdCA9IGZhbHNlOworICAgIH0KKyAgfQorICByZXR1cm4gcmVzdWx0OworfQor
Cit0ZXN0Q2FzZShydW4oMSksIHRydWUsICJFcnJvcjogRXJyb3I6IGR1cmluZyBleGVjdXRpb24g
b2YgYXJyb3cgZnVuY3Rpb24gb25lIHRpbWUiKTsKK3Rlc3RDYXNlKHJ1bigxMCksIHRydWUsICJF
cnJvcjogRXJyb3I6IGR1cmluZyBleGVjdXRpb24gb2YgYXJyb3cgZnVuY3Rpb24gMTAgdGltZXMi
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dm
dW5jdGlvbi1ydW4tMTAtMi5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mv
YXJyb3dmdW5jdGlvbi1ydW4tMTAtMi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ZGRjZGIzYzcwYTFiMjdjM2Ri
YjUyMzgwOTU1ZjUzNTNkNzY3NDI1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLXJ1bi0xMC0yLmpzCkBAIC0wLDAgKzEs
MjUgQEAKK3ZhciB0ZXN0Q2FzZSA9IGZ1bmN0aW9uIChhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdl
KSB7CisgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKSB7CisgICAgdGhyb3cgbWVzc2FnZSArICIu
IEV4cGVjdGVkICciICsgZXhwZWN0ZWQgKyAiJywgYnV0IHdhcyAnIiArIGFjdHVhbCArICInIjsK
KyAgfQorfTsKKworZnVuY3Rpb24gcnVuKGNvdW50KSB7CisgIHZhciByZXN1bHQgPSB0cnVlOwor
ICBmb3IodmFyIGk9MDsgaTxjb3VudDsgaSsrKSB7CisgICAgdmFyIE9iaiA9IGZ1bmN0aW9uIChu
YW1lKSB7CisgICAgICB0aGlzLm5hbWUgPSBuYW1lOworICAgICAgdGhpcy5nZXROYW1lID0gKCkg
PT4gZXZhbCgidGhpcy5uYW1lIik7OworICAgIH07CisKKworICAgIHZhciBvYmogPSBuZXcgT2Jq
KCJJdGVtIiArIGkpOworICAgIGlmIChvYmoubmFtZSAhPT0gb2JqLmdldE5hbWUoKSkgeworICAg
ICAgcmVzdWx0ID0gZmFsc2U7CisgICAgfQorICB9CisgIHJldHVybiByZXN1bHQ7Cit9CisKK3Rl
c3RDYXNlKHJ1bigxKSwgdHJ1ZSwgIkVycm9yOiBkdXJpbmcgZXhlY3V0aW9uIG9mIGFycm93IGZ1
bmN0aW9uIG9uZSB0aW1lIik7Cit0ZXN0Q2FzZShydW4oMTApLCB0cnVlLCAiRXJyb3I6IGR1cmlu
ZyBleGVjdXRpb24gb2YgYXJyb3cgZnVuY3Rpb24gMTAgdGltZXMiKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1ydW4tMTAwMDAt
MS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1y
dW4tMTAwMDAtMS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wZTVmNmJjODZiZDMxNDUxYjAxY2EyN2QwYjk3MjBi
NTdlOGQ2MDUxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3Rz
L3N0cmVzcy9hcnJvd2Z1bmN0aW9uLXJ1bi0xMDAwMC0xLmpzCkBAIC0wLDAgKzEsMjMgQEAKK3Zh
ciB0ZXN0Q2FzZSA9IGZ1bmN0aW9uIChhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlKSB7CisgIGlm
IChhY3R1YWwgIT09IGV4cGVjdGVkKSB7CisgICAgdGhyb3cgbWVzc2FnZSArICIuIEV4cGVjdGVk
ICciICsgZXhwZWN0ZWQgKyAiJywgYnV0IHdhcyAnIiArIGFjdHVhbCArICInIjsKKyAgfQorfTsK
KworZnVuY3Rpb24gcnVuKGNvdW50KSB7CisgIHZhciByZXN1bHQgPSB0cnVlOworICBmb3IodmFy
IGk9MDsgaTxjb3VudDsgaSsrKSB7CisgICAgdmFyIE9iaiA9IGZ1bmN0aW9uIChuYW1lKSB7Cisg
ICAgICB0aGlzLm5hbWUgPSBuYW1lOworICAgICAgdGhpcy5nZXROYW1lID0gKCkgPT4gdGhpcy5u
YW1lOworICAgIH07CisKKyAgICB2YXIgb2JqID0gbmV3IE9iaigiSXRlbSIgKyBpKTsKKyAgICBp
ZiAob2JqLm5hbWUgIT09IG9iai5nZXROYW1lKCkpIHsKKyAgICAgIHJlc3VsdCA9IGZhbHNlOwor
ICAgIH0KKyAgfQorICByZXR1cm4gcmVzdWx0OworfQorCit0ZXN0Q2FzZShydW4oMTAwMDApLCB0
cnVlLCAiRXJyb3I6IEVycm9yOiBkdXJpbmcgZXhlY3V0aW9uIG9mIGFycm93IGZ1bmN0aW9uIDEw
MDAwIHRpbWVzIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3Ry
ZXNzL2Fycm93ZnVuY3Rpb24tcnVuLTEwMDAwLTIuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
dGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tcnVuLTEwMDAwLTIuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGM0
MjcxZjRhMzE1OTE2MjVhMGJkM2Q3NDRkMjUxMjYzMzMwMmU0MwotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1ydW4tMTAw
MDAtMi5qcwpAQCAtMCwwICsxLDIzIEBACit2YXIgdGVzdENhc2UgPSBmdW5jdGlvbiAoYWN0dWFs
LCBleHBlY3RlZCwgbWVzc2FnZSkgeworICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkgeworICAg
IHRocm93IG1lc3NhZ2UgKyAiLiBFeHBlY3RlZCAnIiArIGV4cGVjdGVkICsgIicsIGJ1dCB3YXMg
JyIgKyBhY3R1YWwgKyAiJyI7CisgIH0KK307CisKK2Z1bmN0aW9uIHJ1bihjb3VudCkgeworICB2
YXIgcmVzdWx0ID0gdHJ1ZTsKKyAgZm9yICh2YXIgaT0wOyBpPGNvdW50OyBpKyspIHsKKyAgICB2
YXIgT2JqID0gZnVuY3Rpb24gKG5hbWUpIHsKKyAgICAgIHRoaXMubmFtZSA9IG5hbWU7CisgICAg
ICB0aGlzLmdldE5hbWUgPSAoKSA9PiBldmFsKCJ0aGlzLm5hbWUiKTs7CisgICAgfTsKKworICAg
IHZhciBvYmogPSBuZXcgT2JqKCJJdGVtIiArIGkpOworICAgIGlmIChvYmoubmFtZSAhPT0gb2Jq
LmdldE5hbWUoKSkgeworICAgICAgcmVzdWx0ID0gZmFsc2U7CisgICAgfQorICB9CisgIHJldHVy
biByZXN1bHQ7Cit9CisKK3Rlc3RDYXNlKHJ1bigxMDAwMCksIHRydWUsICJFcnJvcjogRXJyb3I6
IGR1cmluZyBleGVjdXRpb24gb2YgYXJyb3cgZnVuY3Rpb24gMTAwMDAgdGltZXMiKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1z
aW5raW5nLW5vLWRvdWJsZS1hbGxvY2F0ZS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0
cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1zaW5raW5nLW5vLWRvdWJsZS1hbGxvY2F0ZS5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5kMjg2MmM2MjhlM2IyY2EzMDQ0MTBiMWFlMjI2OTQ3MTgwNTFkZWMxCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0
aW9uLXNpbmtpbmctbm8tZG91YmxlLWFsbG9jYXRlLmpzCkBAIC0wLDAgKzEsMjggQEAKK2Z1bmN0
aW9uIGNhbGwobykgeyBvLnggPSAzOyB9Citub0lubGluZShjYWxsKTsKKworZnVuY3Rpb24gc2lu
ayAocCwgcSkgeworICAgIHZhciBmID0gKCkgPT4geyB9OworICAgIGlmIChwKSB7CisgICAgICAg
IGNhbGwoZik7IC8vIEZvcmNlIGFsbG9jYXRpb24gb2YgZgorICAgICAgICBpZiAocSkgeworICAg
ICAgICAgICAgT1NSRXhpdCgpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBmOworICAgIH0K
KyAgICByZXR1cm4geyAneCc6IDIgfTsKK30KK25vSW5saW5lKHNpbmspOworCitmb3IgKHZhciBp
ID0gMDsgaSA8IDEwMDAwMDsgKytpKSB7CisgICAgdmFyIG8gPSBzaW5rKHRydWUsIGZhbHNlKTsK
KyAgICBpZiAoby54ICE9IDMpCisgICAgICAgIHRocm93ICJFcnJvcjogZXhwZWN0ZWQgby54IHRv
IGJlIDIgYnV0IGlzICIgKyByZXN1bHQ7Cit9CisKKy8vIEF0IHRoaXMgcG9pbnQsIHRoZSBmdW5j
dGlvbiBzaG91bGQgYmUgY29tcGlsZWQgZG93biB0byB0aGUgRlRMCisKKy8vIENoZWNrIHRoYXQg
dGhlIGZ1bmN0aW9uIGlzIHByb3Blcmx5IGFsbG9jYXRlZCBvbiBPU1IgZXhpdAordmFyIGYgPSBz
aW5rKHRydWUsIHRydWUpOworaWYgKGYueCAhPSAzKQorICAgIHRocm93ICJFcnJvcjogZXhwZWN0
ZWQgby54IHRvIGJlIDMgYnV0IGlzICIgKyByZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tc2lua2luZy1vc3JleGl0Lmpz
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLXNpbmtp
bmctb3NyZXhpdC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MjdmM2NhM2JkZThkYTMwMTQwZmExNDk5NzNlMTdh
YWE4ZDkxMDVlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3Rz
L3N0cmVzcy9hcnJvd2Z1bmN0aW9uLXNpbmtpbmctb3NyZXhpdC5qcwpAQCAtMCwwICsxLDIxIEBA
CitmdW5jdGlvbiBzaW5rIChwLCBxKSB7CisgICAgdmFyIGcgPSB4ID0+IHg7CisgICAgaWYgKHAp
IHsgaWYgKHEpIE9TUkV4aXQoKTsgcmV0dXJuIGc7IH0KKyAgICByZXR1cm4geCA9PiB4OworfQor
bm9JbmxpbmUoc2luayk7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7ICsraSkgeworICAg
IHZhciBmID0gc2luayh0cnVlLCBmYWxzZSk7CisgICAgdmFyIHJlc3VsdCA9IGYoNDIpOworICAg
IGlmIChyZXN1bHQgIT0gNDIpCisgICAgdGhyb3cgIkVycm9yOiBleHBlY3RlZCA0MiBidXQgZ290
ICIgKyByZXN1bHQ7Cit9CisKKy8vIEF0IHRoaXMgcG9pbnQsIHRoZSBmdW5jdGlvbiBzaG91bGQg
YmUgY29tcGlsZWQgZG93biB0byB0aGUgRlRMCisKKy8vIENoZWNrIHRoYXQgdGhlIGZ1bmN0aW9u
IGlzIHByb3Blcmx5IGFsbG9jYXRlZCBvbiBPU1IgZXhpdAordmFyIGYgPSBzaW5rKHRydWUsIHRy
dWUpOwordmFyIHJlc3VsdCA9IGYoNDIpOworaWYgKHJlc3VsdCAhPSA0MikKKyAgICB0aHJvdyAi
RXJyb3I6IGV4cGVjdGVkIDQyIGJ1dCBnb3QgIiArIHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1zaW5raW5nLXB1dC5q
cyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1zaW5r
aW5nLXB1dC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ZGI3MGJiOWFiYzIzMTQ4ZjYyN2VmYzYxODZiZTA1N2Mz
Y2JiMjc2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0
cmVzcy9hcnJvd2Z1bmN0aW9uLXNpbmtpbmctcHV0LmpzCkBAIC0wLDAgKzEsMjggQEAKK2Z1bmN0
aW9uIHNpbmsgKHAsIHEpIHsKKyAgICB2YXIgZyA9IHggPT4geDsKKyAgICBpZiAocCkgeyBpZiAo
cSkgZy5pbm5lciA9IDQyOyByZXR1cm4gZzsgfQorICAgIHJldHVybiB4ID0+IHg7Cit9Citub0lu
bGluZShzaW5rKTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgKytpKSB7CisgICAgdmFy
IGYgPSBzaW5rKHRydWUsIHRydWUpOworICAgIHZhciByZXN1bHQgPSBmKDQyKTsKKyAgICBpZiAo
cmVzdWx0ICE9IDQyKQorICAgIHRocm93ICJFcnJvcjogZXhwZWN0ZWQgNDIgYnV0IGdvdCAiICsg
cmVzdWx0OworfQorCisvLyBBdCB0aGlzIHBvaW50LCB0aGUgZnVuY3Rpb24gc2hvdWxkIGJlIGNv
bXBpbGVkIGRvd24gdG8gdGhlIEZUTAorCisvLyBUZXN0IHRoZSBhbGxvY2F0aW9uIG9uIHRoZSBp
bXBsaWNpdCBpbm5lciBlbHNlIGJyYW5jaAordmFyIGYgPSBzaW5rKHRydWUsIGZhbHNlKTsKK3Zh
ciByZXN1bHQgPSBmKDEyKTsKK2lmIChyZXN1bHQgIT0gMTIpCisgICAgLy8gVGhpcyBzaG91bGRu
J3QgbWF0dGVyIGFzIGl0IHNob3VsZCBiZSBlaXRoZXIgY29ycmVjdCBvciBjb21wbGV0ZWx5IGNy
YXNoCisgICAgdGhyb3cgIkVycm9yOiBleHBlY3RlZCAxMiBidXQgZ290ICIgKyByZXN1bHQ7CisK
Ky8vIENoZWNrIHRoYXQgdGhlIGFsbG9jYXRpb24gZGlkIG5vdCBzaW5rIGJleW9uZCB0aGUgcHJv
cGVydHkgYXNzaWdubWVudAordmFyIGYgPSBzaW5rKHRydWUsIHRydWUpOwordmFyIHJlc3VsdCA9
IGYuaW5uZXI7CitpZiAocmVzdWx0ICE9IDQyKQorICAgIHRocm93ICJFcnJvcjogaW5uZXIgc2hv
dWxkIGJlIDQyIGJ1dCBpcyAiICsgcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLXRkei5qcyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi10ZHouanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjg3
NDkyMzk3MTk4M2RjZGEzNGMyNjkzOTIxMTdiMTc0OGU2N2I0YQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi10ZHouanMK
QEAgLTAsMCArMSwyNyBAQAordmFyIEEgPSBjbGFzcyBBIHsgfTsKK3ZhciBCID0gY2xhc3MgQiBl
eHRlbmRzIEEgeworICBjb25zdHJ1Y3RvcihhY2Nlc3NUaGlzQmVmb3JlU3VwZXIpIHsKKyAgICBp
ZiAoYWNjZXNzVGhpc0JlZm9yZVN1cGVyKSB7CisgICAgICB2YXIgZiA9ICgpID0+IHRoaXM7Cisg
ICAgICBzdXBlcigpOworICAgIH0gZWxzZSB7CisgICAgICBzdXBlcigpOworICAgIH0KKyAgfQor
fTsKKwordmFyIGV4Y2VwdGlvbiA9IG51bGw7Citmb3IgKHZhciBpPTA7IGk8MTAwMDA7IGkrKykg
eworICB0cnkgeworICAgICAgIG5ldyBCKHRydWUpOworICB9IGNhdGNoIChlKSB7CisgICAgICBl
eGNlcHRpb24gPSBlOworICAgICAgaWYgKCEoZSBpbnN0YW5jZW9mIFJlZmVyZW5jZUVycm9yKSkK
KyAgICAgICAgICB0aHJvdyAiRXhjZXB0aW9uIHRocm93biB3YXMgbm90IGEgcmVmZXJlbmNlIGVy
cm9yIjsKKyAgfQorCisgIGlmICghZXhjZXB0aW9uKQorICAgICAgdGhyb3cgIkV4Y2VwdGlvbiBu
b3QgdGhyb3duIGZvciBhbiB1bml0aWFsaXplZCB0aGlzIGF0IGl0ZXJhdGlvbiI7CisKKyAgdmFy
IGUgPSBuZXcgQihmYWxzZSk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
dGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tdHlwZW9mLmpzIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLXR5cGVvZi5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NTNl
YzBkZGQ1NTE0ZmFmNGQwZDAzYzllMDY1NzBhMGM4MmJlNjRlCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLXR5cGVvZi5q
cwpAQCAtMCwwICsxLDI3IEBACit2YXIgdGVzdENhc2UgPSBmdW5jdGlvbiAoYWN0dWFsLCBleHBl
Y3RlZCwgbWVzc2FnZSkgeworICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkgeworICAgIHRocm93
IG1lc3NhZ2UgKyAiLiBFeHBlY3RlZCAnIiArIGV4cGVjdGVkICsgIicsIGJ1dCB3YXMgJyIgKyBh
Y3R1YWwgKyAiJyI7CisgIH0KK307CisKK3ZhciBhZjEgPSAoKSA9PiB7fTsKK3ZhciBhZjIgPSAo
YSkgPT4ge2EgKyAxfTsKKworbm9JbmxpbmUoYWYxKTsKK25vSW5saW5lKGFmMik7CisKK2ZvciAo
dmFyIGkgPSAwOyBpIDwgMTAwMDA7ICsraSkgeworICB0ZXN0Q2FzZSh0eXBlb2YgYWYxLCAiZnVu
Y3Rpb24iLCAiRXJyb3I6IE5vdCBjb3JyZWN0IHR5cGUgb2YgdGhlIGFycm93IGZ1bmN0aW9uICMx
Iik7CisgIHRlc3RDYXNlKHR5cGVvZiBhZjIsICJmdW5jdGlvbiIsICJFcnJvcjogTm90IGNvcnJl
Y3QgdHlwZSBvZiB0aGUgYXJyb3cgZnVuY3Rpb24gIzIiKTsKKworLy9GaXhtZTogU29tZSBidWcg
aW4gaW5saW5pbmcgdHlwZW9mIHdpdGggZm9sbG93aW5nIHJ1biBwYXJhbWV0ZXJzIGZ0bC1uby1j
aml0LW5vLWlubGluZS12YWxpZGF0ZQorLy8gLS11c2VGVExKSVRcPXRydWUgLS1lbmFibGVGdW5j
dGlvbkRvdEFyZ3VtZW50c1w9dHJ1ZSAtLWVuYWJsZUNvbmN1cnJlbnRKSVQ9ZmFsc2UgLS10aHJl
c2hvbGRGb3JKSVRBZnRlcldhcm1VcD0xMDAgIC0tdmFsaWRhdGVHcmFwaD10cnVlIC0tbWF4aW11
bUlubGluaW5nRGVwdGg9MQorLy8KKy8vIGZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7ICsraSkg
IHsKKy8vICAgaWYgKHR5cGVvZiAoZnVuY3Rpb24gKCkge30pICE9PSAnZnVuY3Rpb24nKQorLy8g
ICAgICAgdGhyb3cgJ1dyb25nIHR5cGUnOworLy8gfQorLy8gIHRlc3RDYXNlKHR5cGVvZiAoKT0+
e30sICJmdW5jdGlvbiIsICJFcnJvcjogTm90IGNvcnJlY3QgdHlwZSBvZiB0aGUgYXJyb3cgZnVu
Y3Rpb24gIzMtIiArIGkpOworCisvLyAgdGVzdENhc2UodHlwZW9mICgoYikgPT4ge2IgKyAxfSks
ICJmdW5jdGlvbiIsICJFcnJvcjogTm90IGNvcnJlY3QgdHlwZSBvZiB0aGUgYXJyb3cgZnVuY3Rp
b24gIzQiKTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwppbmRleCBhOTBiOGYzYTFkOTVmYzQzYmRlZWJlMzQ1N2NhYTY0ZDFlNmI3
YTAyLi5mMWQxYjhmMTUwMGFkY2NlOGI3M2M2ODg1YzgwNTg4M2M5NjcwNTEzIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMzYgQEAKKzIwMTUtMDgtMTIgIFNrYWNoa292IE9sZWtzYW5kciAgPGdza2FjaGtvdkBn
bWFpbC5jb20+CisKKyAgICAgICAgW0VTNl0gSW1wbGVtZW50IEVTNiBhcnJvdyBmdW5jdGlvbiBz
eW50YXguIEFycm93IGZ1bmN0aW9uIHNwZWNpZmljIGZlYXR1cmVzLiBMZXhpY2FsIGJpbmQgb2Yg
dGhpcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ0
OTU2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBq
cy9hcnJvd2Z1bmN0aW9uLWJpbmQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBqcy9h
cnJvd2Z1bmN0aW9uLWJpbmQuaHRtbDogQWRkZWQuCisgICAgICAgICoganMvYXJyb3dmdW5jdGlv
bi1jYWxsLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICoganMvYXJyb3dmdW5jdGlvbi1j
YWxsLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGpzL2Fycm93ZnVuY3Rpb24tY29uc3RydWN0b3It
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBqcy9hcnJvd2Z1bmN0aW9uLWNvbnN0cnVj
dG9yLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGpzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5k
LXRoaXMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBqcy9hcnJvd2Z1bmN0aW9uLWxl
eGljYWwtYmluZC10aGlzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGpzL2Fycm93ZnVuY3Rpb24t
b3RoZXJzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICoganMvYXJyb3dmdW5jdGlvbi1v
dGhlcnMuaHRtbDogQWRkZWQuCisgICAgICAgICoganMvYXJyb3dmdW5jdGlvbi10ZHotZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBqcy9hcnJvd2Z1bmN0aW9uLXRkei5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBqcy9hcnJvd2Z1bmN0aW9uLXR5cGVvZi1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGpzL2Fycm93ZnVuY3Rpb24tdHlwZW9mLmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIGpzL3JlZ3Jlc3MvYXJyb3dmdW5jdGlvbi1jYWxsLWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICoganMvcmVncmVzcy9hcnJvd2Z1bmN0aW9uLWNhbGwuaHRtbDogQWRkZWQuCisgICAg
ICAgICoganMvcmVncmVzcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1jYWxsLmpzOiBBZGRl
ZC4KKyAgICAgICAgKiBqcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9mdW5jdGlvbi1jYWxsLmpzOiBB
ZGRlZC4KKyAgICAgICAgKiBqcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1iaW5kLmpzOiBB
ZGRlZC4KKyAgICAgICAgKiBqcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1jYWxsLmpzOiBB
ZGRlZC4KKyAgICAgICAgKiBqcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1jb25zdHJ1Y3Rv
ci5qczogQWRkZWQuCisgICAgICAgICoganMvc2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tbGV4
aWNhbC1iaW5kLXRoaXMuanM6IEFkZGVkLgorICAgICAgICAqIGpzL3NjcmlwdC10ZXN0cy9hcnJv
d2Z1bmN0aW9uLW90aGVycy5qczogQWRkZWQuCisgICAgICAgICoganMvc2NyaXB0LXRlc3RzL2Fy
cm93ZnVuY3Rpb24tdGR6LmpzOiBBZGRlZC4KKyAgICAgICAgKiBqcy9zY3JpcHQtdGVzdHMvYXJy
b3dmdW5jdGlvbi10eXBlb2YuanM6IEFkZGVkLgorCiAyMDE1LTA4LTEzICBKb3NlcGggUGVjb3Jh
cm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogUmVkdWNl
IGZsYWtpbmVzcyBvZiBpbnNwZWN0b3IvaW5kZXhlZGRiL3JlcXVlc3REYXRhYmFzZU5hbWVzCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLWJpbmQtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1iaW5kLWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4yMmIzMjZjY2JiNGUxNGM2ODlkZDdkOTM4M2NjNWJjOTRmZjdmMDE0Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1iaW5kLWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDEwIEBACitUZXN0cyBmb3IgRVM2IGFycm93IGZ1bmN0aW9uLCB0aGlzIHNob3Vs
ZCBiZSBvdmVyd3JpdHRlbiBkdXJpbmcgaW52b2tlIGJpbmQKKworT24gc3VjY2VzcywgeW91IHdp
bGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09N
UExFVEUiLgorCisKK1BBU1MgZC55KCkuYmluZChlLCAnbGV5JykoKSBpcyAnYmFybGV5JworUEFT
UyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tYmluZC5odG1sIGIvTGF5b3V0VGVzdHMv
anMvYXJyb3dmdW5jdGlvbi1iaW5kLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGI5YWNiMmJjOGZkNTA0YzY4
ZjA0NDVhNmVhYzRhNmExNDU0YWJhYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pz
L2Fycm93ZnVuY3Rpb24tYmluZC5odG1sCkBAIC0wLDAgKzEsMTAgQEAKKzwhRE9DVFlQRSBIVE1M
IFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0
IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLWJpbmQuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2Ny
aXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvYXJyb3dm
dW5jdGlvbi1jYWxsLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24t
Y2FsbC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWMwNzdmOTk3OWFjZjQ1ZTE2Yjk5NjU3MmQx
YWZkZWVkZDU5MTEyNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL2Fycm93ZnVu
Y3Rpb24tY2FsbC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMSBAQAorVGVzdHMgZm9yIEVTNiBh
cnJvdyBmdW5jdGlvbiwgdGhpcyBzaG91bGQgYmUgb3ZlcndyaXR0ZW4gZHVyaW5nIGludm9rZSBj
YWxsJmFwcGx5CisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIg
bWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIGQueSgpLmNh
bGwoZSkgaXMgJ2ZvbycKK1BBU1MgZC55KCkuYXBwbHkoZSkgaXMgJ2ZvbycKK1BBU1Mgc3VjY2Vz
c2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLWNhbGwuaHRtbCBiL0xheW91dFRlc3RzL2pzL2Fycm93
ZnVuY3Rpb24tY2FsbC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMxZDhhNDdlMzBiNmE4NzQ5ZWM1YjdlNzgz
YzZhOWVjMzEzMmQyZDIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1
bmN0aW9uLWNhbGwuaHRtbApAQCAtMCwwICsxLDEwIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMg
Ii0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4u
L3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxz
Y3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1jYWxsLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwv
Ym9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24t
Y29uc3RydWN0b3ItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1j
b25zdHJ1Y3Rvci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTY3MDZmZmYxN2MyMTIzODUzNjQw
YmIyYTRlYjE3ZDYzZTFhMzcyMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL2Fy
cm93ZnVuY3Rpb24tY29uc3RydWN0b3ItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTAgQEAKK1Rl
c3RzIGZvciBFUzYgYXJyb3cgZnVuY3Rpb24gbm8gY29uc3RydWN0b3IKKworT24gc3VjY2Vzcywg
eW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRF
U1QgQ09NUExFVEUiLgorCisKK1BBU1MgbmV3IHNpbXBsZUFycm93RnVuY3Rpb24oKSB0aHJldyBl
eGNlcHRpb24gVHlwZUVycm9yOiBmdW5jdGlvbiBpcyBub3QgYSBjb25zdHJ1Y3RvciAoZXZhbHVh
dGluZyAnbmV3IHNpbXBsZUFycm93RnVuY3Rpb24oKScpLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJz
ZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pz
L2Fycm93ZnVuY3Rpb24tY29uc3RydWN0b3IuaHRtbCBiL0xheW91dFRlc3RzL2pzL2Fycm93ZnVu
Y3Rpb24tY29uc3RydWN0b3IuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMGMwYjlhOWNkZDRkOGJkZmE2MjQx
Y2I2YmVmYmYwNGNjOTU4MzBmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvYXJy
b3dmdW5jdGlvbi1jb25zdHJ1Y3Rvci5odG1sCkBAIC0wLDAgKzEsMTAgQEAKKzwhRE9DVFlQRSBI
VE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2Ny
aXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLWNvbnN0cnVj
dG9yLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0
LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2pzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRoaXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy1leHBlY3RlZC50eHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uM2I2NmZjMjg4Y2FjYmQ5YzkzN2M5NzFjMmJkNmI2OGU2NjRhOTQ4OQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRo
aXMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjIgQEAKK1Rlc3RzIGZvciBFUzYgYXJyb3cgZnVu
Y3Rpb24gbGV4aWNhbCBiaW5kIG9mIHRoaXMKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEg
c2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgor
CisKK1BBU1MgZC5nZXROYW1lKCkgaXMgZC5uYW1lCitQQVNTIGQuZ2V0TmFtZUhhcmQoKSBpcyBk
Lm5hbWUKK1BBU1MgZC5nZXROYW1lTmVzdGluZygpKCkoKSBpcyBkLm5hbWUKK1BBU1Mgb2JqLm1l
dGhvZCgpKCdjb3JyZWN0JykgaXMgJ29iakNvZGUtbmFtZS1jb3JyZWN0JworUEFTUyBvYmoubWV0
aG9kKCkoJ2NvcnJlY3QnKSBpcyAnbmV3T2JqQ29kZS1uYW1lLWNvcnJlY3QnCitQQVNTIGRlZXBP
YmouaW50ZXJuYWxPYmplY3QubWV0aG9kKCkoJ2NvcnJlY3QnKSBpcyAnaW50ZXJuYWxPYmplY3Qt
bmFtZS1jb3JyZWN0JworUEFTUyBkZWVwT2JqLmludGVybmFsT2JqZWN0Lm1ldGhvZCgpKCdjb3Jy
ZWN0JykgaXMgJ25ld0ludGVybmFsT2JqZWN0LW5hbWUtY29ycmVjdCcKK1BBU1MgaW5zdGFuY2Uu
ZnVuYygpID09PSBpbnN0YW5jZSBpcyB0cnVlCitQQVNTIG93bmVyT2JqLm1ldGhvZCgpKCkgPT09
IG93bmVyT2JqIGlzIHRydWUKK1BBU1MgZmFrZS5zdGVhbCgpID09PSBvd25lck9iaiBpcyB0cnVl
CitQQVNTIHJlYWwuYm9ycm93KCkoKSA9PT0gcmVhbCBpcyB0cnVlCitQQVNTIGFycm93RnVuY3Rp
b24oJy10aGlzJykgaXMgInJpZ2h0LXRoaXMiCitQQVNTIGhvc3RPYmouZnVuYygnLXRoaXMnKSBp
cyAicmlnaHQtdGhpcyIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBD
T01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLWxleGlj
YWwtYmluZC10aGlzLmh0bWwgYi9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwt
YmluZC10aGlzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODFlYTIyYTc2ZmRmOGJmZjVlNzJlNTFiNzc5NGIz
ZTM0N2QxNjQyYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rp
b24tbGV4aWNhbC1iaW5kLXRoaXMuaHRtbApAQCAtMCwwICsxLDEwIEBACis8IURPQ1RZUEUgSFRN
TCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlw
dCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8
Ym9keT4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJp
bmQtdGhpcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3Qt
cG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLW90aGVycy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9q
cy9hcnJvd2Z1bmN0aW9uLW90aGVycy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTkxNTJlNWUz
N2M2OTE1ZjM4MjNlMjliMjBhOTRkZjUzZDA4YzAwMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tb3RoZXJzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEy
IEBACitUZXN0cyBmb3IgRVM2IGFycm93IGZ1bmN0aW9uIGluc3RhbmNlb2YgYW5kIHR5cGVvZiBv
cGVyYXRvcnMKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBt
ZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgT2JqZWN0Lmdl
dFByb3RvdHlwZU9mKHNpbXBsZUFycm93RnVuY3Rpb24pIGlzIEZ1bmN0aW9uLnByb3RvdHlwZQor
UEFTUyBzaW1wbGVBcnJvd0Z1bmN0aW9uIGluc3RhbmNlb2YgRnVuY3Rpb24gaXMgdHJ1ZQorUEFT
UyBzaW1wbGVBcnJvd0Z1bmN0aW9uLmNvbnN0cnVjdG9yID09IEZ1bmN0aW9uIGlzIHRydWUKK1BB
U1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLW90aGVycy5odG1sIGIvTGF5b3V0VGVz
dHMvanMvYXJyb3dmdW5jdGlvbi1vdGhlcnMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ZjY3ZjhiMDBlNDYw
NTVlZTZmYWU1YzFlODI4OWVmZWUxZjExMDkwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvanMvYXJyb3dmdW5jdGlvbi1vdGhlcnMuaHRtbApAQCAtMCwwICsxLDEwIEBACis8IURPQ1RZ
UEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgor
PHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hl
YWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1vdGhl
cnMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3Qu
anMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
anMvYXJyb3dmdW5jdGlvbi10ZHotZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvanMvYXJyb3dm
dW5jdGlvbi10ZHotZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE3YWY2Y2Q4NjAwZTg4NDEyNzdj
NDk0YTk4OTAyMjQ1MmVhNmFiNWQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9h
cnJvd2Z1bmN0aW9uLXRkei1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMCBAQAorVGVzdHMgZm9y
IEVTNiBhcnJvdyBmdW5jdGlvbiB0ZXN0IHRkegorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUg
YSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIu
CisKKworUEFTUyBpc1JlZmVyZW5jZUVycm9yIGlzIHRydWUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFy
c2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9q
cy9hcnJvd2Z1bmN0aW9uLXRkei5odG1sIGIvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi10
ZHouaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5mOGVmMTcxY2I4MjBiZWIzY2I0YTdkM2ZjNDhlNWM1M2ZjMTE5
MjZkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi10ZHou
aHRtbApAQCAtMCwwICsxLDEwIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RU
RCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9q
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSJz
Y3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi10ZHouanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi10eXBlb2YtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi10eXBlb2YtZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjYyZmIyY2U5NjRiZDAzMzIxYjgzMmNiODdiYmFlMGNhNTM0OWMxYmMKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLXR5cGVvZi1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSw4IEBACitQQVNTIHR5cGVvZiBhZjEgPT09ICdmdW5jdGlvbicg
aXMgdHJ1ZQorUEFTUyB0eXBlb2YgYWYyID09PSAnZnVuY3Rpb24nIGlzIHRydWUKK1BBU1MgdHlw
ZW9mICgoKT0+e30pID09PSAnZnVuY3Rpb24nIGlzIHRydWUKK1BBU1MgdHlwZW9mICgoYikgPT4g
e2IgKyAxfSk9PT0nZnVuY3Rpb24nIGlzIHRydWUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlz
IHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9hcnJv
d2Z1bmN0aW9uLXR5cGVvZi5odG1sIGIvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi10eXBl
b2YuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5mMGFjYWFhMWE0ZTRkMGU0Y2IzZDA3NjVlMzczZmVkYjc0Mzgw
ZTAxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi10eXBl
b2YuaHRtbApAQCAtMCwwICsxLDEwIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYv
L0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3Jj
PSJzY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi10eXBlb2YuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5Pgor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9hcnJvd2Z1bmN0aW9u
LWNhbGwtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9hcnJvd2Z1bmN0aW9u
LWNhbGwtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlYjU1MmY4MGY2NjFkZTNiYWI1MjA5Yzcy
ZGRjZjUwMjEwMDM0NWQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9yZWdyZXNz
L2Fycm93ZnVuY3Rpb24tY2FsbC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMCBAQAorSlNSZWdy
ZXNzL2Fycm93ZnVuY3Rpb24tY2FsbAorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJp
ZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKwor
UEFTUyBubyBleGNlcHRpb24gdGhyb3duCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVl
CisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9h
cnJvd2Z1bmN0aW9uLWNhbGwuaHRtbCBiL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3MvYXJyb3dmdW5j
dGlvbi1jYWxsLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjNkODQ1NGJmZjYxODJlNjFjYmViMGI5ZWUxMzNm
ZTg3MzExMmJmYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3MvYXJy
b3dmdW5jdGlvbi1jYWxsLmh0bWwKQEAgLTAsMCArMSwxMiBAQAorPCFET0NUWVBFIEhUTUwgUFVC
TElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJv
ZHk+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3JlZ3Jlc3MtcHJlLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1jYWxsLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvcmVncmVzcy1wb3N0LmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Nj
cmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3JlZ3Jl
c3Mvc2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tY2FsbC5qcyBiL0xheW91dFRlc3RzL2pzL3Jl
Z3Jlc3Mvc2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tY2FsbC5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44OTI0
Yzg0Mjc2ZTcxMDg3Nzg2YzU5NDBhODIyYmNjNmY5N2MwNmQ3Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1jYWxsLmpz
CkBAIC0wLDAgKzEsMTUgQEAKK3ZhciBhZiA9IChhLCBiKSA9PiBhICsgYjsKKworbm9JbmxpbmUo
YWYpOworCitmdW5jdGlvbiBiYXIoYSwgYikgeworICAgIHJldHVybiBhZihhLCBiKTsKK30KKwor
bm9JbmxpbmUoYmFyKTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDAwOyArK2kpIHsKKyAg
ICB2YXIgcmVzdWx0ID0gYmFyKDEsIDIpOworICAgIGlmIChyZXN1bHQgIT0gMykKKyAgICAgICAg
dGhyb3cgIkVycm9yOiBiYWQgcmVzdWx0OiAiICsgcmVzdWx0OworfQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvZnVuY3Rpb24tY2FsbC5qcyBiL0xheW91
dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL2Z1bmN0aW9uLWNhbGwuanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMTU3M2MzYjVlMGNhNzkxNzk0ZjI1MTY5YTkxY2I0YTdkYzliMjhjZQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL2Z1bmN0aW9uLWNhbGwu
anMKQEAgLTAsMCArMSwxNSBAQAordmFyIGZlID0gZnVuY3Rpb24gKGEsIGIpIHsgcmV0dXJuIGEg
KyBiO30KKworbm9JbmxpbmUoZmUpOworCitmdW5jdGlvbiBiYXIoYSwgYikgeworICAgIHJldHVy
biBmZShhLCBiKTsKK30KKworbm9JbmxpbmUoYmFyKTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAx
MDAwMDAwOyArK2kpIHsKKyAgICB2YXIgcmVzdWx0ID0gYmFyKDEsIDIpOworICAgIGlmIChyZXN1
bHQgIT0gMykKKyAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgcmVzdWx0OiAiICsgcmVzdWx0Owor
fQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24t
YmluZC5qcyBiL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLWJpbmQu
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMTUzZjA4ZTk2NmM3OTRjYmFmOWFkNGEzYWRiNGU5OTc5YzAyYWMyYQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0
aW9uLWJpbmQuanMKQEAgLTAsMCArMSwxMiBAQAorZGVzY3JpcHRpb24oJ1Rlc3RzIGZvciBFUzYg
YXJyb3cgZnVuY3Rpb24sIHRoaXMgc2hvdWxkIGJlIG92ZXJ3cml0dGVuIGR1cmluZyBpbnZva2Ug
YmluZCcpOworCit2YXIgZCA9IHsKKyAgeCA6ICJiYXIiLAorICB5IDogZnVuY3Rpb24oKSB7IHJl
dHVybiB6ID0+IHRoaXMueCArIHo7IH0KK307CisKK3ZhciBlID0geyB4IDogImJheiIgfTsKKwor
c2hvdWxkQmUoImQueSgpLmJpbmQoZSwgJ2xleScpKCkiLCAiJ2JhcmxleSciKTsKKwordmFyIHN1
Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9zY3Jp
cHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1jYWxsLmpzIGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRl
c3RzL2Fycm93ZnVuY3Rpb24tY2FsbC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41Yzg4OGY5MTFiZjFjNDRkMzg5
ZDBhM2QyMTg0NjgzNDg0YjZmOTZkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMv
c2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tY2FsbC5qcwpAQCAtMCwwICsxLDEzIEBACitkZXNj
cmlwdGlvbignVGVzdHMgZm9yIEVTNiBhcnJvdyBmdW5jdGlvbiwgdGhpcyBzaG91bGQgYmUgb3Zl
cndyaXR0ZW4gZHVyaW5nIGludm9rZSBjYWxsJmFwcGx5Jyk7CisKK3ZhciBkID0geworICB4IDog
ImZvbyIsCisgIHkgOiBmdW5jdGlvbigpIHsgcmV0dXJuICgpID0+IHRoaXMueDsgfQorfTsKKwor
dmFyIGUgPSB7IHggOiAiYmFyIiB9OworCitzaG91bGRCZSgnZC55KCkuY2FsbChlKScsICInZm9v
JyIpOworc2hvdWxkQmUoJ2QueSgpLmFwcGx5KGUpJywgIidmb28nIik7CisKK3ZhciBzdWNjZXNz
ZnVsbHlQYXJzZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRl
c3RzL2Fycm93ZnVuY3Rpb24tY29uc3RydWN0b3IuanMgYi9MYXlvdXRUZXN0cy9qcy9zY3JpcHQt
dGVzdHMvYXJyb3dmdW5jdGlvbi1jb25zdHJ1Y3Rvci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hZWZhZDA3Njg0
N2JmZjQ5MjlmNzgwNzc2NWY5OTBiNzM3M2NkZjZkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvanMvc2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tY29uc3RydWN0b3IuanMKQEAgLTAs
MCArMSw3IEBACitkZXNjcmlwdGlvbignVGVzdHMgZm9yIEVTNiBhcnJvdyBmdW5jdGlvbiBubyBj
b25zdHJ1Y3RvcicpOworCit2YXIgc2ltcGxlQXJyb3dGdW5jdGlvbiA9ICgpID0+IHt9OworCitz
aG91bGRUaHJvdygnbmV3IHNpbXBsZUFycm93RnVuY3Rpb24oKScpOworCit2YXIgc3VjY2Vzc2Z1
bGx5UGFyc2VkID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0
cy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtYmluZC10aGlzLmpzIGIvTGF5b3V0VGVzdHMvanMvc2Ny
aXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRoaXMuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MmU1NmExNTUzMGYzNGNjMzA4YWNlNmIwZmFhNGNmZTdjMWU5NzhjNAotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtYmlu
ZC10aGlzLmpzCkBAIC0wLDAgKzEsNjcgQEAKK2Rlc2NyaXB0aW9uKCdUZXN0cyBmb3IgRVM2IGFy
cm93IGZ1bmN0aW9uIGxleGljYWwgYmluZCBvZiB0aGlzJyk7CisKK2Z1bmN0aW9uIERvZyhuYW1l
KSB7CisgIHRoaXMubmFtZSA9IG5hbWU7CisgIHRoaXMuZ2V0TmFtZSA9ICgpID0+IGV2YWwoInRo
aXMubmFtZSIpOworICB0aGlzLmdldE5hbWVIYXJkID0gKCkgPT4gZXZhbCgiKCgpID0+IHRoaXMu
bmFtZSkoKSIpOworICB0aGlzLmdldE5hbWVOZXN0aW5nID0gKCkgPT4gKCkgPT4gKCkgPT4gdGhp
cy5uYW1lOworfQorCit2YXIgZCA9IG5ldyBEb2coIk1heCIpOworc2hvdWxkQmUoJ2QuZ2V0TmFt
ZSgpJywgJ2QubmFtZScpOworc2hvdWxkQmUoJ2QuZ2V0TmFtZUhhcmQoKScsICdkLm5hbWUnKTsK
K3Nob3VsZEJlKCdkLmdldE5hbWVOZXN0aW5nKCkoKSgpJywgJ2QubmFtZScpOworCit2YXIgb2Jq
ID0geworICBuYW1lICAgOiAnb2JqQ29kZScsCisgIG1ldGhvZCA6IGZ1bmN0aW9uICgpIHsKKyAg
ICByZXR1cm4gKHZhbHVlKSA9PiB0aGlzLm5hbWUgKyAiLW5hbWUtIiArIHZhbHVlOworICB9Cit9
OworCitzaG91bGRCZSgib2JqLm1ldGhvZCgpKCdjb3JyZWN0JykiLCAiJ29iakNvZGUtbmFtZS1j
b3JyZWN0JyIpOworb2JqLm5hbWU9J25ld09iakNvZGUnOworc2hvdWxkQmUoIm9iai5tZXRob2Qo
KSgnY29ycmVjdCcpIiwgIiduZXdPYmpDb2RlLW5hbWUtY29ycmVjdCciKTsKKwordmFyIGRlZXBP
YmogPSB7CisgIG5hbWUgOiAnd3JvbmdPYmpDb2RlJywKKyAgaW50ZXJuYWxPYmplY3Q6IHsKKyAg
ICBuYW1lICA6J2ludGVybmFsT2JqZWN0JywKKyAgICBtZXRob2Q6IGZ1bmN0aW9uICgpIHsgcmV0
dXJuICh2YWx1ZSkgPT4gdGhpcy5uYW1lICsgIi1uYW1lLSIgKyB2YWx1ZTsgfQorICB9Cit9Owor
c2hvdWxkQmUoImRlZXBPYmouaW50ZXJuYWxPYmplY3QubWV0aG9kKCkoJ2NvcnJlY3QnKSIsICIn
aW50ZXJuYWxPYmplY3QtbmFtZS1jb3JyZWN0JyIpOworCitkZWVwT2JqLmludGVybmFsT2JqZWN0
Lm5hbWUgPSAnbmV3SW50ZXJuYWxPYmplY3QnOworCitzaG91bGRCZSgiZGVlcE9iai5pbnRlcm5h
bE9iamVjdC5tZXRob2QoKSgnY29ycmVjdCcpIiwgIiduZXdJbnRlcm5hbE9iamVjdC1uYW1lLWNv
cnJlY3QnIik7CisKK3ZhciBmdW5jdGlvbkNvbnN0cnVjdG9yID0gZnVuY3Rpb24gKCkgeworICB0
aGlzLmZ1bmMgPSAoKSA9PiB0aGlzOworfTsKKwordmFyIGluc3RhbmNlID0gbmV3IGZ1bmN0aW9u
Q29uc3RydWN0b3IoKTsKKworc2hvdWxkQmUoImluc3RhbmNlLmZ1bmMoKSA9PT0gaW5zdGFuY2Ui
LCAidHJ1ZSIpOworCit2YXIgb3duZXJPYmogPSB7CisgIG1ldGhvZCA6IGZ1bmN0aW9uICgpIHsK
KyAgICByZXR1cm4gKCkgPT4gdGhpczsKKyAgfQorfTsKKworc2hvdWxkQmUoIm93bmVyT2JqLm1l
dGhvZCgpKCkgPT09IG93bmVyT2JqIiwgInRydWUiKTsKKwordmFyIGZha2UgPSB7IHN0ZWFsIDog
b3duZXJPYmoubWV0aG9kKCkgfTsKK3Nob3VsZEJlKCJmYWtlLnN0ZWFsKCkgPT09IG93bmVyT2Jq
IiwgInRydWUiKTsKKwordmFyIHJlYWwgPSB7IGJvcnJvdyA6IG93bmVyT2JqLm1ldGhvZCB9Owor
c2hvdWxkQmUoInJlYWwuYm9ycm93KCkoKSA9PT0gcmVhbCIsICJ0cnVlIik7CisKK3ZhciBhcnJv
d0Z1bmN0aW9uID0geyB4IDogInJpZ2h0IiwgZ2V0QXJyb3dGdW5jdGlvbiA6IGZ1bmN0aW9uKCkg
eyByZXR1cm4geiA9PiB0aGlzLnggKyB6OyB9fS5nZXRBcnJvd0Z1bmN0aW9uKCk7Cit2YXIgaG9z
dE9iaiA9IHsgeCA6ICJ3cm9uZyIsIGZ1bmMgOiBhcnJvd0Z1bmN0aW9uIH07CisKK3Nob3VsZEJl
KCJhcnJvd0Z1bmN0aW9uKCctdGhpcycpIiwgJyJyaWdodC10aGlzIicpOworc2hvdWxkQmUoImhv
c3RPYmouZnVuYygnLXRoaXMnKSIsICcicmlnaHQtdGhpcyInKTsKKwordmFyIHN1Y2Nlc3NmdWxs
eVBhcnNlZCA9IHRydWU7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMv
YXJyb3dmdW5jdGlvbi1vdGhlcnMuanMgYi9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvYXJy
b3dmdW5jdGlvbi1vdGhlcnMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTc5OTMxYzNkZWJjYjUwMjdhZDE0ZmQx
NTQ3ZTVhYmEwMzhiNGIxMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL3Njcmlw
dC10ZXN0cy9hcnJvd2Z1bmN0aW9uLW90aGVycy5qcwpAQCAtMCwwICsxLDEwIEBACisvLyBJbnNw
aXJlZCBieSBtb3ppbGxhIHRlc3RzCitkZXNjcmlwdGlvbignVGVzdHMgZm9yIEVTNiBhcnJvdyBm
dW5jdGlvbiBpbnN0YW5jZW9mIGFuZCB0eXBlb2Ygb3BlcmF0b3JzJyk7CisKK3ZhciBzaW1wbGVB
cnJvd0Z1bmN0aW9uID0gKCkgPT4ge307CisKK3Nob3VsZEJlKCJPYmplY3QuZ2V0UHJvdG90eXBl
T2Yoc2ltcGxlQXJyb3dGdW5jdGlvbikiLCAiRnVuY3Rpb24ucHJvdG90eXBlIik7CitzaG91bGRC
ZSgic2ltcGxlQXJyb3dGdW5jdGlvbiBpbnN0YW5jZW9mIEZ1bmN0aW9uIiwgInRydWUiKTsKK3No
b3VsZEJlKCJzaW1wbGVBcnJvd0Z1bmN0aW9uLmNvbnN0cnVjdG9yID09IEZ1bmN0aW9uIiwgInRy
dWUiKTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi10ZHouanMgYi9MYXlvdXRUZXN0
cy9qcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi10ZHouanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWFmNThm
YzY1MTNlZGFiZGUxZGQ2NTA3NDk2YWU4NjRiNjExZmZmOQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLXRkei5qcwpAQCAtMCwwICsx
LDI2IEBACitkZXNjcmlwdGlvbignVGVzdHMgZm9yIEVTNiBhcnJvdyBmdW5jdGlvbiB0ZXN0IHRk
eicpOworCit2YXIgQSA9IGNsYXNzIEEgeyB9OwordmFyIEIgPSBjbGFzcyBCIGV4dGVuZHMgQSB7
CisgIGNvbnN0cnVjdG9yKGFjY2Vzc1RoaXNCZWZvcmVTdXBlcikgeworICAgIGlmIChhY2Nlc3NU
aGlzQmVmb3JlU3VwZXIpIHsKKyAgICAgIHZhciBmID0gKCkgPT4gdGhpczsKKyAgICAgIHN1cGVy
KCk7CisgICAgfSBlbHNlIHsKKyAgICAgIHN1cGVyKCk7CisgICAgfQorICB9Cit9OworCit2YXIg
aXNSZWZlcmVuY2VFcnJvciA9IGZhbHNlOwordHJ5IHsKKyAgICAgbmV3IEIodHJ1ZSk7Cit9IGNh
dGNoIChlKSB7CisgICAgaXNSZWZlcmVuY2VFcnJvciA9IGUgaW5zdGFuY2VvZiBSZWZlcmVuY2VF
cnJvcjsKK30KKworc2hvdWxkQmUoJ2lzUmVmZXJlbmNlRXJyb3InLCAndHJ1ZScpOworCit2YXIg
ZSA9IG5ldyBCKGZhbHNlKTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi10eXBlb2Yu
anMgYi9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi10eXBlb2YuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNjJhYTI2OTBmZGE4MmM2YTMyOGVhMGFiYzM1NWQyZDhiZTNkNDhkNwotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9u
LXR5cGVvZi5qcwpAQCAtMCwwICsxLDEyIEBACit2YXIgYWYxID0gKCkgPT4ge307Cit2YXIgYWYy
ID0gKGEpID0+IHthICsgMX07CisKK3Nob3VsZEJlKCJ0eXBlb2YgYWYxID09PSAnZnVuY3Rpb24n
IiwgInRydWUiKTsKKworc2hvdWxkQmUoInR5cGVvZiBhZjIgPT09ICdmdW5jdGlvbiciLCAidHJ1
ZSIpOworCitzaG91bGRCZSgidHlwZW9mICgoKT0+e30pID09PSAnZnVuY3Rpb24nIiwgInRydWUi
KTsKKworc2hvdWxkQmUoInR5cGVvZiAoKGIpID0+IHtiICsgMX0pPT09J2Z1bmN0aW9uJyIsICJ0
cnVlIik7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>259121</attachid>
            <date>2015-08-16 02:05:15 -0700</date>
            <delta_ts>2015-08-16 04:24:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-148034-20150816120453.patch</filename>
            <type>text/plain</type>
            <size>178045</size>
            <attacher name="GSkachkov">gskachkov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg4NDQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
OWFkYmY4ZDQzYmE2ZjZlOTY3YTlmNGYwODQ4YjFmYTFkYjQzMGUyLi44ZTcxZjcxMGQ4MDRmMjA3
MDdmYmRmNGYxNzllMWVmM2YxODAxMThjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOTAgQEAKKzIwMTUtMDgtMTIgQWxla3NhbmRyIFNrYWNoa292ICAgPGdza2FjaGtvdkBn
bWFpbC5jb20+CisKKyAgICAgICAgW0VTNl0gSW1wbGVtZW50IEVTNiBhcnJvdyBmdW5jdGlvbiBz
eW50YXguIEFycm93IGZ1bmN0aW9uIHNwZWNpZmljIGZlYXR1cmVzLiBMZXhpY2FsIGJpbmQgb2Yg
dGhpcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4
MDM0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRk
ZWQgc3VwcG9ydCBvZiBFUzYgYXJyb3cgZnVuY3Rpb24gc3BlY2lmaWMgZmVhdHVyZSwgbGV4aWNh
bCBiaW5kIG9mIHRoaXMgYW5kIG5vIGNvbnN0cnVjdG9yLiBodHRwOi8vd2lraS5lY21hc2NyaXB0
Lm9yZy9kb2t1LnBocD9pZD1oYXJtb255OmFycm93X2Z1bmN0aW9uX3N5bnRheAorICAgICAgICBJ
biBwYXRjaCB3ZXJlIGltcGxlbWVudGVkIHRoZSBmb2xsb3dpbmcgY2FzZXM6CisgICAgICAgICAg
IHRoaXMgLSB2YXJpYWJsZSB8dGhpc3wgaXMgcG9pbnQgdG8gdGhlIHx0aGlzfCBvZiB0aGUgZnVu
Y3Rpb24gd2hlcmUgYXJyb3cgZnVuY3Rpb24gaXMgZGVjbGFyZWQuIExleGljYWwgYmluZCBvZiB8
dGhpc3wKKyAgICAgICAgICAgY29uc3RydWN0b3IgLSB0aGUgdXNpbmcgb2YgdGhlIGNvbW1hbmQg
fG5ld3wgZm9yIGFycm93IGZ1bmN0aW9uIGxlYWRzIHRvIHJ1bnRpbWUgZXJyb3IKKyAgICAgICAg
ICAgY2FsbCgpLCBhcHBseSgpLCBiaW5kKCkgIC0gbWV0aG9kcyBjYW4gb25seSBwYXNzIGluIGFy
Z3VtZW50cywgYnV0IGhhcyBubyBlZmZlY3Qgb24gfHRoaXN8IAorCisKKyAgICAgICAgKiBDTWFr
ZUxpc3RzLnR4dDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRD
b3JlLnZjeHByb2o6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0
Q29yZS52Y3hwcm9qLmZpbHRlcnM6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbjoK
KyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZVVzZURlZi5oOgorICAgICAgICAoSlNDOjpjb21w
dXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Y29tcHV0ZURlZnNGb3JC
eXRlY29kZU9mZnNldCk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAg
ICAgKEpTQzo6Q29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUpOgorICAgICAgICAqIGJ5dGVjb2RlL0V4
ZWN1dGFibGVJbmZvLmg6CisgICAgICAgIChKU0M6OkV4ZWN1dGFibGVJbmZvOjpFeGVjdXRhYmxl
SW5mbyk6CisgICAgICAgIChKU0M6OkV4ZWN1dGFibGVJbmZvOjppc0Fycm93RnVuY3Rpb24pOgor
ICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6
VW5saW5rZWRDb2RlQmxvY2s6OlVubGlua2VkQ29kZUJsb2NrKToKKyAgICAgICAgKiBieXRlY29k
ZS9VbmxpbmtlZENvZGVCbG9jay5oOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6
aXNBcnJvd0Z1bmN0aW9uKToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZS5jcHA6CisgICAgICAgIChKU0M6OmdlbmVyYXRlRnVuY3Rpb25Db2RlQmxvY2spOgor
ICAgICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6VW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGUpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6
Y29kZUJsb2NrRm9yKToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZS5oOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcik6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3RnVuY3Rpb25Db21tb24pOgorICAg
ICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Z1bmN0aW9uRXhwcmVzc2lvbik6
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3QXJyb3dGdW5jdGlvbkV4
cHJlc3Npb24pOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdExvYWRBcnJv
d0Z1bmN0aW9uVGhpcyk6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
Lmg6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHA6CisgICAgICAgIChK
U0M6OkFycm93RnVuY0V4cHJOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAqIGRmZy9ERkdB
YnN0cmFjdEludGVycHJldGVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0
SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAg
ICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29k
ZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgICogZGZnL0RGR0NhcGFiaWxpdGllcy5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6Y2FwYWJpbGl0eUxldmVsKToKKyAgICAgICAgKiBkZmcvREZH
Q2xvYmJlcml6ZS5oOgorICAgICAgICAoSlNDOjpERkc6OmNsb2JiZXJpemUpOgorICAgICAgICAq
IGRmZy9ERkdEb2VzR0MuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmRvZXNHQyk6CisgICAgICAg
ICogZGZnL0RGR0ZpeHVwUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6
OmZpeHVwTm9kZSk6CisgICAgICAgICogZGZnL0RGR05vZGUuaDoKKyAgICAgICAgKEpTQzo6REZH
OjpOb2RlOjpjb252ZXJ0VG9QaGFudG9tTmV3RnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpERkc6
Ok5vZGU6Omhhc0NlbGxPcGVyYW5kKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjppc0Z1bmN0
aW9uQWxsb2NhdGlvbik6CisgICAgICAgICogZGZnL0RGR05vZGVUeXBlLmg6CisgICAgICAgICog
ZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9E
RkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6UHJl
ZGljdGlvblByb3BhZ2F0aW9uUGhhc2U6OnByb3BhZ2F0ZSk6CisgICAgICAgICogZGZnL0RGR1By
b21vdGVkSGVhcExvY2F0aW9uLmNwcDoKKyAgICAgICAgKFdURjo6cHJpbnRJbnRlcm5hbCk6Cisg
ICAgICAgICogZGZnL0RGR1Byb21vdGVkSGVhcExvY2F0aW9uLmg6CisgICAgICAgICogZGZnL0RG
R1NhZmVUb0V4ZWN1dGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpzYWZlVG9FeGVjdXRlKToKKyAg
ICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjpjb21waWxlTG9hZEFycm93RnVuY3Rpb25UaGlzKToKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld0Z1bmN0aW9uQ29tbW9uKToKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld0Z1bmN0aW9uKToKKyAgICAg
ICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6Y2FsbE9wZXJhdGlvbik6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklU
MzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToK
KyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTdG9yZUJhcnJp
ZXJJbnNlcnRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR1N0cnVjdHVyZVJlZ2lzdHJh
dGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTdHJ1Y3R1cmVSZWdpc3RyYXRpb25Q
aGFzZTo6cnVuKToKKyAgICAgICAgKiBmdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHA6
CisgICAgICAgICogZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaDoKKyAgICAgICAgKiBm
dGwvRlRMQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjYW5Db21waWxlKToK
KyAgICAgICAgKiBmdGwvRlRMSW50cmluc2ljUmVwb3NpdG9yeS5oOgorICAgICAgICAqIGZ0bC9G
VExMb3dlckRGR1RvTExWTS5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1Rv
TExWTTo6Y29tcGlsZU5vZGUpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0xM
Vk06OmNvbXBpbGVOZXdGdW5jdGlvbik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRG
R1RvTExWTTo6Y29tcGlsZUxvYWRBcnJvd0Z1bmN0aW9uVGhpcyk6CisgICAgICAgICogZnRsL0ZU
TE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6Om9wZXJhdGlvbk1hdGVyaWFsaXpl
T2JqZWN0SW5PU1IpOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmNwcDoKKyAg
ICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5oOgorICAgICAgICAqIGppdC9KSVQuY3Bw
OgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MpOgorICAgICAgICAq
IGppdC9KSVQuaDoKKyAgICAgICAgKiBqaXQvSklUSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpK
SVQ6OmNhbGxPcGVyYXRpb24pOgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzLmNwcDoKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0X29wX2xvYWRfYXJyb3dmdW5jdGlvbl90aGlzKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0X29wX25ld19mdW5jX2V4cCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dE5ld0Z1bmNFeHByQ29tbW9uKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX25ld19hcnJv
d19mdW5jX2V4cCk6CisgICAgICAgICogaml0L0pJVE9wY29kZXMzMl82NC5jcHA6CisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdF9vcF9sb2FkX2Fycm93ZnVuY3Rpb25fdGhpcyk6CisgICAgICAgICog
aml0L0pJVE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmg6Cisg
ICAgICAgICogbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcDoKKyAgICAgICAgKiBsbGlu
dC9MTEludFNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpMTElOVF9TTE9XX1BB
VEhfREVDTCk6CisgICAgICAgIChKU0M6OkxMSW50OjpzZXRVcENhbGwpOgorICAgICAgICAqIGxs
aW50L0xMSW50U2xvd1BhdGhzLmg6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
ci5hc206CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbToKKyAg
ICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtOgorICAgICAgICAqIHBhcnNl
ci9BU1RCdWlsZGVyLmg6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZUZ1bmN0aW9u
TWV0YWRhdGEpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVBcnJvd0Z1bmN0aW9u
RXhwcik6CisgICAgICAgICogcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaDoKKyAgICAgICAgKEpT
Qzo6QmFzZUZ1bmNFeHByTm9kZTo6QmFzZUZ1bmNFeHByTm9kZSk6CisgICAgICAgIChKU0M6OkZ1
bmNFeHByTm9kZTo6RnVuY0V4cHJOb2RlKToKKyAgICAgICAgKEpTQzo6QXJyb3dGdW5jRXhwck5v
ZGU6OkFycm93RnVuY0V4cHJOb2RlKToKKyAgICAgICAgKiBwYXJzZXIvTm9kZXMuY3BwOgorICAg
ICAgICAoSlNDOjpGdW5jdGlvbk1ldGFkYXRhTm9kZTo6RnVuY3Rpb25NZXRhZGF0YU5vZGUpOgor
ICAgICAgICAqIHBhcnNlci9Ob2Rlcy5oOgorICAgICAgICAoSlNDOjpFeHByZXNzaW9uTm9kZTo6
aXNBcnJvd0Z1bmNFeHByTm9kZSk6CisgICAgICAgICogcGFyc2VyL1BhcnNlci5jcHA6CisgICAg
ICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uQm9keSk6CisgICAgICAg
IChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uSW5mbyk6CisgICAgICAgICog
cGFyc2VyL1N5bnRheENoZWNrZXIuaDoKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3Jl
YXRlRnVuY3Rpb25NZXRhZGF0YSk6CisgICAgICAgICogcnVudGltZS9FeGVjdXRhYmxlLmNwcDoK
KyAgICAgICAgKEpTQzo6U2NyaXB0RXhlY3V0YWJsZTo6bmV3Q29kZUJsb2NrRm9yKToKKyAgICAg
ICAgKiBydW50aW1lL0V4ZWN1dGFibGUuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQXJyb3dGdW5j
dGlvbi5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpKU0Fycm93RnVuY3Rpb246OmRlc3Ryb3kp
OgorICAgICAgICAoSlNDOjpKU0Fycm93RnVuY3Rpb246OmNyZWF0ZSk6CisgICAgICAgIChKU0M6
OkpTQXJyb3dGdW5jdGlvbjo6SlNBcnJvd0Z1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6SlNBcnJv
d0Z1bmN0aW9uOjpjcmVhdGVXaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KToK
KyAgICAgICAgKEpTQzo6SlNBcnJvd0Z1bmN0aW9uOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAg
KEpTQzo6SlNBcnJvd0Z1bmN0aW9uOjpnZXRDb25zdHJ1Y3REYXRhKToKKyAgICAgICAgKiBydW50
aW1lL0pTQXJyb3dGdW5jdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6SlNBcnJvd0Z1bmN0
aW9uOjphbGxvY2F0aW9uU2l6ZSk6CisgICAgICAgIChKU0M6OkpTQXJyb3dGdW5jdGlvbjo6Y3Jl
YXRlSW1wbCk6CisgICAgICAgIChKU0M6OkpTQXJyb3dGdW5jdGlvbjo6Ym91bmRUaGlzKToKKyAg
ICAgICAgKEpTQzo6SlNBcnJvd0Z1bmN0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAo
SlNDOjpKU0Fycm93RnVuY3Rpb246Om9mZnNldE9mVGhpc1ZhbHVlKToKKyAgICAgICAgKiBydW50
aW1lL0pTRnVuY3Rpb24uaDoKKyAgICAgICAgKiBydW50aW1lL0pTRnVuY3Rpb25JbmxpbmVzLmg6
CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OkpTRnVuY3Rpb24pOgorICAgICAgICAqIHJ1bnRp
bWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5p
dCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAg
ICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2Jq
ZWN0OjphcnJvd0Z1bmN0aW9uU3RydWN0dXJlKToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJy
b3dmdW5jdGlvbi1hY3RpdmF0aW9uLXNpbmstb3NyZXhpdC1kZWZhdWx0LXZhbHVlLXRkei1lcnJv
ci5qczogQWRkZWQuCisgICAgICAgICogdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tYWN0aXZh
dGlvbi1zaW5rLW9zcmV4aXQtZGVmYXVsdC12YWx1ZS5qczogQWRkZWQuCisgICAgICAgICogdGVz
dHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tYWN0aXZhdGlvbi1zaW5rLW9zcmV4aXQuanM6IEFkZGVk
LgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWFjdGl2YXRpb24tc2luay5q
czogQWRkZWQuCisgICAgICAgICogdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tYm91bmQuanM6
IEFkZGVkLgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWNhbGwuanM6IEFk
ZGVkLgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWNvbnN0cnVjdG9yLmpz
OiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJp
bmQtdGhpcy0xLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlv
bi1sZXhpY2FsLWJpbmQtdGhpcy0yLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3Mv
YXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy0zLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0
ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy00LmpzOiBBZGRlZC4K
KyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy01
LmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2Fs
LWJpbmQtdGhpcy02LmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5j
dGlvbi1sZXhpY2FsLXRoaXMtYWN0aXZhdGlvbi1zaW5rLW9zcmV4aXQuanM6IEFkZGVkLgorICAg
ICAgICAqIHRlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtdGhpcy1hY3RpdmF0aW9u
LXNpbmsuanM6IEFkZGVkLgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxl
eGljYWwtdGhpcy1zaW5raW5nLW5vLWRvdWJsZS1hbGxvY2F0ZS5qczogQWRkZWQuCisgICAgICAg
ICogdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC10aGlzLXNpbmtpbmctb3NyZXhp
dC5qczogQWRkZWQuCisgICAgICAgICogdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNh
bC10aGlzLXNpbmtpbmctcHV0LmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJy
b3dmdW5jdGlvbi1vdGhlcnMuanM6IEFkZGVkLgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9hcnJv
d2Z1bmN0aW9uLXJ1bi0xMC0xLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJy
b3dmdW5jdGlvbi1ydW4tMTAtMi5qczogQWRkZWQuCisgICAgICAgICogdGVzdHMvc3RyZXNzL2Fy
cm93ZnVuY3Rpb24tcnVuLTEwMDAwLTEuanM6IEFkZGVkLgorICAgICAgICAqIHRlc3RzL3N0cmVz
cy9hcnJvd2Z1bmN0aW9uLXJ1bi0xMDAwMC0yLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9z
dHJlc3MvYXJyb3dmdW5jdGlvbi1zaW5raW5nLW5vLWRvdWJsZS1hbGxvY2F0ZS5qczogQWRkZWQu
CisgICAgICAgICogdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tc2lua2luZy1vc3JleGl0Lmpz
OiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1zaW5raW5nLXB1
dC5qczogQWRkZWQuCisgICAgICAgICogdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tdGR6Lmpz
OiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi10eXBlb2YuanM6
IEFkZGVkLgorCiAyMDE1LTA4LTEzICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAK
ICAgICAgICAgVXNlIFdURjo6TG9jayBhbmQgV1RGOjpDb25kaXRpb24gaW5zdGVhZCBvZiBXVEY6
Ok11dGV4LCBXVEY6OlRocmVhZENvbmRpdGlvbiwgc3RkOjptdXRleCwgYW5kIHN0ZDo6Y29uZGl0
aW9uX3ZhcmlhYmxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0
cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggOWQ0ZDIw
N2U4YzMwNjg1OWUyYWVmYWY5NTBiMTJjYjVhNGE0MmIwZi4uZTZmZmYzYzZkMGVkOTg4MTU0YzI5
MWQ5ZGJmNzdkOGRkNWVhYjNmMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NN
YWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApA
QCAtNTA2LDYgKzUwNiw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9SVU5USU1FX1NPVVJDRVMKICAg
ICBydW50aW1lL0pTQXJyYXlCdWZmZXJQcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9KU0FycmF5
QnVmZmVyVmlldy5jcHAKICAgICBydW50aW1lL0pTQXJyYXlJdGVyYXRvci5jcHAKKyAgICBydW50
aW1lL0pTQXJyb3dGdW5jdGlvbi5jcHAKICAgICBydW50aW1lL0pTQm91bmRGdW5jdGlvbi5jcHAK
ICAgICBydW50aW1lL0pTQ0pTVmFsdWUuY3BwCiAgICAgcnVudGltZS9KU0NhbGxlZS5jcHAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0ph
dmFTY3JpcHRDb3JlLnZjeHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCmluZGV4IDYzYzllM2U1OGViN2JkMmEz
YTk2OWE3ODZlMGM1ZTIzMmRhZmY0NjkuLjM3ZTE4YzZmYjQ2ODJiN2QyYWQxM2YxYmQ4ZGNjNGI1
ZTIzMzIyMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagpAQCAtNzYy
LDYgKzc2Miw3IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTQXJyYXlC
dWZmZXJQcm90b3R5cGUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGlt
ZVxKU0FycmF5QnVmZmVyVmlldy5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxy
dW50aW1lXEpTQm91bmRGdW5jdGlvbi5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
LlxydW50aW1lXEpTQXJyb3dGdW5jdGlvbi5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSIuLlxydW50aW1lXEpTQ0pTVmFsdWUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Li5ccnVudGltZVxKU0NhbGxlZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxy
dW50aW1lXEpTQ2VsbC5jcHAiIC8+CkBAIC0xNTg3LDYgKzE1ODgsNyBAQAogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0FycmF5QnVmZmVyVmlld0lubGluZXMuaCIgLz4KICAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNBcnJheUl0ZXJhdG9yLmgiIC8+CiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTQm91bmRGdW5jdGlvbi5oIiAvPgor
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0Fycm93RnVuY3Rpb24uaCIgLz4K
ICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNDSW5saW5lcy5oIiAvPgogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0NKU1ZhbHVlLmgiIC8+CiAgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTQ0pTVmFsdWVJbmxpbmVzLmgiIC8+CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZh
U2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMKaW5kZXggYzFl
YmI4NDMyNTUwZTgzMzlhN2YzYzI4ZjU2ZDg5YzY5MjQ2MTVhYS4uYjk1MTg2NGM0NzBiNWQ0MjRl
MGFjZTEyOTg3ZmFmNTcxY2QzNWE3ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3Jp
cHRDb3JlLnZjeHByb2ouZmlsdGVycwpAQCAtMjc5Miw2ICsyNzkyLDkgQEAKICAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNBcnJheS5oIj4KICAgICAgIDxGaWx0ZXI+cnVudGlt
ZTwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
cnVudGltZVxKU0Fycm93RnVuY3Rpb24uaCI+CisgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRl
cj4KKyAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVc
SlNCb3VuZEZ1bmN0aW9uLmgiPgogICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CiAgICAg
PC9DbEluY2x1ZGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGU3ZWE4OTZlOTBj
ZGRhOGVjMzczNmZlOWZkOTQyMzNhNmEwNzg4ZjQuLjUwMmI5ZjkzZDgxNTlmNmJhNzg2MTBiMGUx
M2MwYmRlY2FhYmQ1NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMTM4LDYg
KzExMzgsOCBAQAogCQk4NkYzRUVCRjE2OENERTkzMDA3N0I5MkEgLyogT2JqY1J1bnRpbWVFeHRy
YXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2RjNF
RUI2MTY4NTVBNUIwMDc3QjkyQSAvKiBPYmpjUnVudGltZUV4dHJhcy5oICovOyB9OwogCQk4NkZB
OUU5MTE0MkJCQjJFMDAxNzczQjcgLyogSlNCb3VuZEZ1bmN0aW9uLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2RkE5RThGMTQyQkJCMkQwMDE3NzNC
NyAvKiBKU0JvdW5kRnVuY3Rpb24uY3BwICovOyB9OwogCQk4NkZBOUU5MjE0MkJCQjJFMDAxNzcz
QjcgLyogSlNCb3VuZEZ1bmN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA4NkZBOUU5MDE0MkJCQjJFMDAxNzczQjcgLyogSlNCb3VuZEZ1bmN0aW9u
LmggKi87IH07CisJCThCMEY0MjRDMUFCRDZERTIwMDM5MTdFQSAvKiBKU0Fycm93RnVuY3Rpb24u
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOEIwRjQy
NEIxQUJENkRFMjAwMzkxN0VBIC8qIEpTQXJyb3dGdW5jdGlvbi5jcHAgKi87IH07CisJCThCMTQx
ODZEMUI2MjUyN0YwMEZCMjA2OCAvKiBKU0Fycm93RnVuY3Rpb24uaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDhCMEY0MjRBMUFCRDZEMkYwMDM5MTdFQSAv
KiBKU0Fycm93RnVuY3Rpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk5MDIxM0UzRDEyM0E0MEMyMDBENDIyRjMgLyogTWVtb3J5U3RhdGlzdGlj
cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MDIx
M0UzQjEyM0E0MEMyMDBENDIyRjMgLyogTWVtb3J5U3RhdGlzdGljcy5jcHAgKi87IH07CiAJCTkw
MjEzRTNFMTIzQTQwQzIwMEQ0MjJGMyAvKiBNZW1vcnlTdGF0aXN0aWNzLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MDIxM0UzQzEyM0E0MEMyMDBENDIy
RjMgLyogTWVtb3J5U3RhdGlzdGljcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTkzMDUyQzM0MEZCNzkyMTkwMDQ4RkRDMyAvKiBQYXJzZXJBcmVu
YS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzA1
MkMzMjBGQjc5MjE5MDA0OEZEQzMgLyogUGFyc2VyQXJlbmEuY3BwICovOyB9OwpAQCAtMjk1NSw2
ICsyOTU3LDggQEAKIAkJODZGNzVFRkQxNTFDMDYyRjAwN0M5QkEzIC8qIFJlZ0V4cE1hdGNoZXNB
cnJheS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZWdFeHBNYXRj
aGVzQXJyYXkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NkZBOUU4RjE0MkJC
QjJEMDAxNzczQjcgLyogSlNCb3VuZEZ1bmN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEpTQm91bmRGdW5jdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTg2RkE5RTkwMTQyQkJCMkUwMDE3NzNCNyAvKiBKU0JvdW5kRnVuY3Rpb24uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNCb3VuZEZ1bmN0aW9uLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCThCMEY0MjRBMUFCRDZEMkYwMDM5MTdFQSAvKiBKU0Fy
cm93RnVuY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNBcnJvd0Z1bmN0aW9uLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCThCMEY0MjRCMUFCRDZERTIwMDM5MTdFQSAvKiBKU0Fycm93
RnVuY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNBcnJv
d0Z1bmN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTAyMTNFM0IxMjNB
NDBDMjAwRDQyMkYzIC8qIE1lbW9yeVN0YXRpc3RpY3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gTWVtb3J5U3RhdGlzdGljcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTkwMjEzRTNDMTIzQTQwQzIwMEQ0MjJGMyAvKiBNZW1vcnlTdGF0aXN0aWNz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lbW9yeVN0YXRpc3RpY3MuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTMwNTJDMzIwRkI3OTIxOTAwNDhGREMzIC8q
IFBhcnNlckFyZW5hLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBh
cnNlckFyZW5hLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ2NDgsNiArNDY1
Miw4IEBACiAJCQkJQTdCREFFQzUxN0Y0RUExNDAwRjYxNDBDIC8qIEpTQXJyYXlJdGVyYXRvci5o
ICovLAogCQkJCTg2RkE5RThGMTQyQkJCMkQwMDE3NzNCNyAvKiBKU0JvdW5kRnVuY3Rpb24uY3Bw
ICovLAogCQkJCTg2RkE5RTkwMTQyQkJCMkUwMDE3NzNCNyAvKiBKU0JvdW5kRnVuY3Rpb24uaCAq
LywKKwkJCQk4QjBGNDI0QjFBQkQ2REUyMDAzOTE3RUEgLyogSlNBcnJvd0Z1bmN0aW9uLmNwcCAq
LywKKwkJCQk4QjBGNDI0QTFBQkQ2RDJGMDAzOTE3RUEgLyogSlNBcnJvd0Z1bmN0aW9uLmggKi8s
CiAJCQkJNjU3Q0Y0NTYxOUJGNjY2MjAwNEFDQkYyIC8qIEpTQ2FsbGVlLmNwcCAqLywKIAkJCQk2
NTdDRjQ1NzE5QkY2NjYyMDA0QUNCRjIgLyogSlNDYWxsZWUuaCAqLywKIAkJCQlCQzdGOEZCQTBF
MTlEMUVGMDA4NjMyQzAgLyogSlNDZWxsLmNwcCAqLywKQEAgLTY2MzIsNiArNjYzOCw3IEBACiAJ
CQkJQTUwM0ZBMjYxODhFRkZGRDAwMTEwRjE0IC8qIFNjcmlwdERlYnVnU2VydmVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBNTVEOTNBNjE4NTAxMkE4MDA0MDBERUQgLyogU2NyaXB0RnVuY3Rpb25D
YWxsLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTRDRjJGQTE4NEVBRURBMDAyMzdGMTkgLyogU2Ny
aXB0T2JqZWN0LmggaW4gSGVhZGVycyAqLywKKwkJCQk4QjE0MTg2RDFCNjI1MjdGMDBGQjIwNjgg
LyogSlNBcnJvd0Z1bmN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTRDRjJGNjE4NEVBQjI0
MDAyMzdGMTkgLyogU2NyaXB0VmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3Mjk5REE2MTdE
MTI4NTgwMDVGNUZGOSAvKiBTZXRDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc5
MERENkUxODJGNDk5NzAwNTg4ODA3IC8qIFNldEl0ZXJhdG9yUHJvdG90eXBlLmggaW4gSGVhZGVy
cyAqLywKQEAgLTc0ODYsNiArNzQ5Myw3IEBACiAJCQkJMEZGMkNENUIxQjYxQTRGODAwNDk1NUE4
IC8qIERGR011bHRpR2V0QnlPZmZzZXREYXRhLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMjM1
QkRDMTcxNzhFMUMwMDY5MEM3RiAvKiBGVExPU1JFeGl0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTBGMjM1QkRGMTcxNzhFMUMwMDY5MEM3RiAvKiBGVExPU1JFeGl0Q29tcGlsZXIuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJOEIwRjQyNEMxQUJENkRFMjAwMzkxN0VBIC8qIEpTQXJyb3dGdW5jdGlv
bi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkVBMEEyQTE3MDk2Mjk2MDBCQjcyMkMgLyogRlRM
T3V0cHV0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNDg1MzI5MTg3REZERUMwMDgzQjY4NyAv
KiBGVExSZWNvdmVyeU9wY29kZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjZCMUNDMzE4NjJD
NDc4MDA4NDVEOTcgLyogRlRMUmVnaXN0ZXJBdE9mZnNldC5jcHAgaW4gU291cmNlcyAqLywKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNv
biBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgppbmRl
eCAyY2Y3NTNiYjgyYzA2YjBkMDgwMjAzNmZjNDk1ZmJmZjYyMjAwNTYyLi4yYzUwYzQxY2RjMGNk
YmY1OGE3YWQ2OTFjNjQwNTI2Y2U4YmQwMWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24KKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uCkBAIC05NCw2ICs5NCw3IEBACiAgICAgICAg
ICAgICB7ICJuYW1lIiA6ICJvcF9zd2l0Y2hfc3RyaW5nIiwgImxlbmd0aCIgOiA0IH0sCiAgICAg
ICAgICAgICB7ICJuYW1lIiA6ICJvcF9uZXdfZnVuYyIsICJsZW5ndGgiIDogNCB9LAogICAgICAg
ICAgICAgeyAibmFtZSIgOiAib3BfbmV3X2Z1bmNfZXhwIiwgImxlbmd0aCIgOiA0IH0sCisgICAg
ICAgICAgICB7ICJuYW1lIiA6ICJvcF9uZXdfYXJyb3dfZnVuY19leHAiLCAibGVuZ3RoIiA6IDUg
fSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2NhbGwiLCAibGVuZ3RoIiA6IDkgfSwKICAg
ICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2NhbGxfZXZhbCIsICJsZW5ndGgiIDogOSB9LAogICAg
ICAgICAgICAgeyAibmFtZSIgOiAib3BfY2FsbF92YXJhcmdzIiwgImxlbmd0aCIgOiA5IH0sCkBA
IC0xMjcsNyArMTI4LDggQEAKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2dldF9wcm9wZXJ0
eV9lbnVtZXJhdG9yIiwgImxlbmd0aCIgOiAzIH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJv
cF9lbnVtZXJhdG9yX3N0cnVjdHVyZV9wbmFtZSIsICJsZW5ndGgiIDogNCB9LAogICAgICAgICAg
ICAgeyAibmFtZSIgOiAib3BfZW51bWVyYXRvcl9nZW5lcmljX3BuYW1lIiwgImxlbmd0aCIgOiA0
IH0sCi0gICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF90b19pbmRleF9zdHJpbmciLCAibGVuZ3Ro
IiA6IDMgfQorICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfdG9faW5kZXhfc3RyaW5nIiwgImxl
bmd0aCIgOiAzIH0sCisgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9sb2FkX2Fycm93ZnVuY3Rp
b25fdGhpcyIsICJsZW5ndGgiIDogMiB9CiAgICAgICAgIF0KICAgICB9LAogICAgIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKaW5kZXggMDM4
M2EwZmJkY2VjZDgyMDdlYzk2YzkwNDEwNzgyMzY1OTkxMjY3Yi4uOGZlNzhlN2ZhMWQyNTkxNjUz
YTA5ZjNkYTNiMzkxNjYxN2VlYzNjYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKQEAgLTU1LDYgKzU1LDcgQEAgdm9pZCBjb21wdXRlVXNl
c0ZvckJ5dGVjb2RlT2Zmc2V0KAogICAgIGNhc2Ugb3BfY3JlYXRlX291dF9vZl9iYW5kX2FyZ3Vt
ZW50czoKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2Ugb3BfZ2V0X3Njb3BlOgorICAgIGNhc2Ug
b3BfbG9hZF9hcnJvd2Z1bmN0aW9uX3RoaXM6CiAgICAgY2FzZSBvcF90b190aGlzOgogICAgIGNh
c2Ugb3BfY2hlY2tfdGR6OgogICAgIGNhc2Ugb3BfcHJvZmlsZV93aWxsX2NhbGw6CkBAIC0xMTUs
NiArMTE2LDcgQEAgdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KAogICAgIGNhc2Ug
b3BfZ2V0X3Byb3BlcnR5X2VudW1lcmF0b3I6CiAgICAgY2FzZSBvcF9nZXRfZW51bWVyYWJsZV9s
ZW5ndGg6CiAgICAgY2FzZSBvcF9uZXdfZnVuY19leHA6CisgICAgY2FzZSBvcF9uZXdfYXJyb3df
ZnVuY19leHA6CiAgICAgY2FzZSBvcF90b19pbmRleF9zdHJpbmc6CiAgICAgY2FzZSBvcF9jcmVh
dGVfbGV4aWNhbF9lbnZpcm9ubWVudDoKICAgICBjYXNlIG9wX3Jlc29sdmVfc2NvcGU6CkBAIC0z
MDUsNiArMzA3LDcgQEAgdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9j
ayogY29kZUJsb2NrLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwKICAgICBjYXNlIG9wX25ld19y
ZWdleHA6CiAgICAgY2FzZSBvcF9uZXdfZnVuYzoKICAgICBjYXNlIG9wX25ld19mdW5jX2V4cDoK
KyAgICBjYXNlIG9wX25ld19hcnJvd19mdW5jX2V4cDoKICAgICBjYXNlIG9wX2NhbGxfdmFyYXJn
czoKICAgICBjYXNlIG9wX2NvbnN0cnVjdF92YXJhcmdzOgogICAgIGNhc2Ugb3BfZ2V0X2Zyb21f
c2NvcGU6CkBAIC0zNTgsNiArMzYxLDcgQEAgdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zm
c2V0KENvZGVCbG9jayogY29kZUJsb2NrLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwKICAgICBj
YXNlIG9wX3RvX3RoaXM6CiAgICAgY2FzZSBvcF9jaGVja190ZHo6CiAgICAgY2FzZSBvcF9nZXRf
c2NvcGU6CisgICAgY2FzZSBvcF9sb2FkX2Fycm93ZnVuY3Rpb25fdGhpczoKICAgICBjYXNlIG9w
X2NyZWF0ZV9kaXJlY3RfYXJndW1lbnRzOgogICAgIGNhc2Ugb3BfY3JlYXRlX3Njb3BlZF9hcmd1
bWVudHM6CiAgICAgY2FzZSBvcF9jcmVhdGVfb3V0X29mX2JhbmRfYXJndW1lbnRzOgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAppbmRleCAzMjcyYWRmOGJk
MWY2MTU3MDc5YzJmMTk3MmJlYmEyNTg3MDRkNTJjLi5jYzkxZDgwZGY2Y2Y5YmU3M2RiOWY0MmEx
OGQyMjJhZTg5NGZiNWZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmNwcApAQCAtNzU3LDYgKzc1NywxMSBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVj
b2RlKAogICAgICAgICAgICAgcHJpbnRMb2NhdGlvbk9wQW5kUmVnaXN0ZXJPcGVyYW5kKG91dCwg
ZXhlYywgbG9jYXRpb24sIGl0LCAiZ2V0X3Njb3BlIiwgcjApOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KKyAgICAgICAgY2FzZSBvcF9sb2FkX2Fycm93ZnVuY3Rpb25fdGhpczogewor
ICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICBwcmlu
dExvY2F0aW9uT3BBbmRSZWdpc3Rlck9wZXJhbmQob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJs
b2FkX2Fycm93ZnVuY3Rpb25fdGhpcyIsIHIwKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICB9CiAgICAgICAgIGNhc2Ugb3BfY3JlYXRlX2RpcmVjdF9hcmd1bWVudHM6IHsKICAgICAgICAg
ICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgcHJpbnRMb2NhdGlv
bkFuZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAiY3JlYXRlX2RpcmVjdF9hcmd1bWVudHMi
KTsKQEAgLTEyODYsNiArMTI5MSwxNSBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKAog
ICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICVzLCBmJWQiLCByZWdpc3Rlck5hbWUocjApLmRh
dGEoKSwgcmVnaXN0ZXJOYW1lKHIxKS5kYXRhKCksIGYwKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CisgICAgICAgIGNhc2Ugb3BfbmV3X2Fycm93X2Z1bmNfZXhwOiB7CisgICAgICAg
ICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIGludCByMSA9ICgr
K2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAgaW50IGYwID0gKCsraXQpLT51Lm9wZXJhbmQ7
CisgICAgICAgICAgICBpbnQgcjIgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIHBy
aW50TG9jYXRpb25BbmRPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgIm9wX25ld19hcnJvd19m
dW5jX2V4cCIpOworICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICVzLCBmJWQsICVzIiwgcmVn
aXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpLCBmMCwgcmVnaXN0
ZXJOYW1lKHIyKS5kYXRhKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICAgICAg
ICAgY2FzZSBvcF9uZXdfZnVuY19leHA6IHsKICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+
dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhlY3V0YWJsZUluZm8uaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRhYmxlSW5mby5oCmluZGV4IGM1
NmE3NzAwODhmY2QyMmE5ZGFmYjJhNzg1MDAxMWM1NzNkOTU3MDEuLjkyMTQ0Zjg5ZmJkNDUwZmU4
MjA1MDBjMmEwOTY5YjUwYjEwMmExNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9FeGVjdXRhYmxlSW5mby5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9FeGVjdXRhYmxlSW5mby5oCkBAIC0zMSwxMyArMzEsMTQgQEAKIG5hbWVzcGFjZSBK
U0MgewogCiBzdHJ1Y3QgRXhlY3V0YWJsZUluZm8gewotICAgIEV4ZWN1dGFibGVJbmZvKGJvb2wg
bmVlZHNBY3RpdmF0aW9uLCBib29sIHVzZXNFdmFsLCBib29sIGlzU3RyaWN0TW9kZSwgYm9vbCBp
c0NvbnN0cnVjdG9yLCBib29sIGlzQnVpbHRpbkZ1bmN0aW9uLCBDb25zdHJ1Y3RvcktpbmQgY29u
c3RydWN0b3JLaW5kKQorICAgIEV4ZWN1dGFibGVJbmZvKGJvb2wgbmVlZHNBY3RpdmF0aW9uLCBi
b29sIHVzZXNFdmFsLCBib29sIGlzU3RyaWN0TW9kZSwgYm9vbCBpc0NvbnN0cnVjdG9yLCBib29s
IGlzQnVpbHRpbkZ1bmN0aW9uLCBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCBib29s
IGlzQXJyb3dGdW5jdGlvbikKICAgICAgICAgOiBtX25lZWRzQWN0aXZhdGlvbihuZWVkc0FjdGl2
YXRpb24pCiAgICAgICAgICwgbV91c2VzRXZhbCh1c2VzRXZhbCkKICAgICAgICAgLCBtX2lzU3Ry
aWN0TW9kZShpc1N0cmljdE1vZGUpCiAgICAgICAgICwgbV9pc0NvbnN0cnVjdG9yKGlzQ29uc3Ry
dWN0b3IpCiAgICAgICAgICwgbV9pc0J1aWx0aW5GdW5jdGlvbihpc0J1aWx0aW5GdW5jdGlvbikK
ICAgICAgICAgLCBtX2NvbnN0cnVjdG9yS2luZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY29uc3Ry
dWN0b3JLaW5kKSkKKyAgICAgICAgLCBtX2lzQXJyb3dGdW5jdGlvbihpc0Fycm93RnVuY3Rpb24p
CiAgICAgewogICAgICAgICBBU1NFUlQobV9jb25zdHJ1Y3RvcktpbmQgPT0gc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KGNvbnN0cnVjdG9yS2luZCkpOwogICAgIH0KQEAgLTQ4LDYgKzQ5LDcgQEAgc3Ry
dWN0IEV4ZWN1dGFibGVJbmZvIHsKICAgICBib29sIGlzQ29uc3RydWN0b3IoKSBjb25zdCB7IHJl
dHVybiBtX2lzQ29uc3RydWN0b3I7IH0KICAgICBib29sIGlzQnVpbHRpbkZ1bmN0aW9uKCkgY29u
c3QgeyByZXR1cm4gbV9pc0J1aWx0aW5GdW5jdGlvbjsgfQogICAgIENvbnN0cnVjdG9yS2luZCBj
b25zdHJ1Y3RvcktpbmQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxDb25zdHJ1Y3Rvcktp
bmQ+KG1fY29uc3RydWN0b3JLaW5kKTsgfQorICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uKCkgY29u
c3QgeyByZXR1cm4gbV9pc0Fycm93RnVuY3Rpb247IH0KIAogcHJpdmF0ZToKICAgICB1bnNpZ25l
ZCBtX25lZWRzQWN0aXZhdGlvbiA6IDE7CkBAIC01Niw2ICs1OCw3IEBAIHByaXZhdGU6CiAgICAg
dW5zaWduZWQgbV9pc0NvbnN0cnVjdG9yIDogMTsKICAgICB1bnNpZ25lZCBtX2lzQnVpbHRpbkZ1
bmN0aW9uIDogMTsKICAgICB1bnNpZ25lZCBtX2NvbnN0cnVjdG9yS2luZCA6IDI7CisgICAgdW5z
aWduZWQgbV9pc0Fycm93RnVuY3Rpb24gOiAxOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxv
Y2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2Nr
LmNwcAppbmRleCA3Mzk1OWNmZDk0OWFlZTNhNWJhOTAzYzlkOTgzMDczZDIyNTE5ZjEzLi41NzRi
MWU0ODIzODk4YjM4MDE0ZDUxODI5ZWFiN2Y3MTMwOWRiYjBhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKQEAgLTY0LDYg
KzY0LDcgQEAgVW5saW5rZWRDb2RlQmxvY2s6OlVubGlua2VkQ29kZUJsb2NrKFZNKiB2bSwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIENvZGVUeXBlIGNvZGUKICAgICAsIG1faGFzQ2FwdHVyZWRWYXJp
YWJsZXMoZmFsc2UpCiAgICAgLCBtX2lzQnVpbHRpbkZ1bmN0aW9uKGluZm8uaXNCdWlsdGluRnVu
Y3Rpb24oKSkKICAgICAsIG1fY29uc3RydWN0b3JLaW5kKHN0YXRpY19jYXN0PHVuc2lnbmVkPihp
bmZvLmNvbnN0cnVjdG9yS2luZCgpKSkKKyAgICAsIG1faXNBcnJvd0Z1bmN0aW9uKGluZm8uaXNB
cnJvd0Z1bmN0aW9uKCkpCiAgICAgLCBtX2ZpcnN0TGluZSgwKQogICAgICwgbV9saW5lQ291bnQo
MCkKICAgICAsIG1fZW5kQ29sdW1uKFVJTlRfTUFYKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAppbmRleCA1NTJlZDg0YTJkNGQ1ZDlm
ZDc4ODhjYjZmYWI4MzNlZjY0YzRjYzIxLi4zMjJkMjYxOTlmNzk3YzEwMzgxZGQ0NTg5M2JkNTM1
M2ZmMWI2YjQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRDb2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRDb2RlQmxvY2suaApAQCAtMTE4LDYgKzExOCw3IEBAIHB1YmxpYzoKICAgICBib29sIGlz
Q29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBtX2lzQ29uc3RydWN0b3I7IH0KICAgICBib29s
IGlzU3RyaWN0TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNTdHJpY3RNb2RlOyB9CiAgICAgYm9v
bCB1c2VzRXZhbCgpIGNvbnN0IHsgcmV0dXJuIG1fdXNlc0V2YWw7IH0KKyAgICBib29sIGlzQXJy
b3dGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNBcnJvd0Z1bmN0aW9uOyB9CiAKICAgICBi
b29sIG5lZWRzRnVsbFNjb3BlQ2hhaW4oKSBjb25zdCB7IHJldHVybiBtX25lZWRzRnVsbFNjb3Bl
Q2hhaW47IH0KIApAQCAtMzkxLDYgKzM5Miw3IEBAIHByaXZhdGU6CiAgICAgdW5zaWduZWQgbV9o
YXNDYXB0dXJlZFZhcmlhYmxlcyA6IDE7CiAgICAgdW5zaWduZWQgbV9pc0J1aWx0aW5GdW5jdGlv
biA6IDE7CiAgICAgdW5zaWduZWQgbV9jb25zdHJ1Y3RvcktpbmQgOiAyOworICAgIHVuc2lnbmVk
IG1faXNBcnJvd0Z1bmN0aW9uIDogMTsKIAogICAgIHVuc2lnbmVkIG1fZmlyc3RMaW5lOwogICAg
IHVuc2lnbmVkIG1fbGluZUNvdW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAKaW5kZXggMTg5
MWNiOGM1Yzk5MmY0M2Y2ZGMxZDVkZTA1MTlmZDExOTFmN2YyMS4uZTkzNWVkODkzYzJjMDk1NmZk
MWM2OWYzM2JkMTY4NmVlNTFhMWU3ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwCkBAIC01
MCw3ICs1MCw3IEBAIGNvbnN0IENsYXNzSW5mbyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6
c19pbmZvID0geyAiVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFiCiBzdGF0aWMgVW5saW5rZWRGdW5j
dGlvbkNvZGVCbG9jayogZ2VuZXJhdGVGdW5jdGlvbkNvZGVCbG9jaygKICAgICBWTSYgdm0sIFVu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBjb25zdCBTb3VyY2VDb2RlJiBz
b3VyY2UsCiAgICAgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kLCBEZWJ1Z2dlck1vZGUgZGVi
dWdnZXJNb2RlLCBQcm9maWxlck1vZGUgcHJvZmlsZXJNb2RlLAotICAgIFVubGlua2VkRnVuY3Rp
b25LaW5kIGZ1bmN0aW9uS2luZCwgUGFyc2VyRXJyb3ImIGVycm9yKQorICAgIFVubGlua2VkRnVu
Y3Rpb25LaW5kIGZ1bmN0aW9uS2luZCwgUGFyc2VyRXJyb3ImIGVycm9yLCBib29sIGlzQXJyb3dG
dW5jdGlvbikKIHsKICAgICBKU1BhcnNlckJ1aWx0aW5Nb2RlIGJ1aWx0aW5Nb2RlID0gZXhlY3V0
YWJsZS0+aXNCdWlsdGluRnVuY3Rpb24oKSA/IEpTUGFyc2VyQnVpbHRpbk1vZGU6OkJ1aWx0aW4g
OiBKU1BhcnNlckJ1aWx0aW5Nb2RlOjpOb3RCdWlsdGluOwogICAgIEpTUGFyc2VyU3RyaWN0TW9k
ZSBzdHJpY3RNb2RlID0gZXhlY3V0YWJsZS0+aXNJblN0cmljdENvbnRleHQoKSA/IEpTUGFyc2Vy
U3RyaWN0TW9kZTo6U3RyaWN0IDogSlNQYXJzZXJTdHJpY3RNb2RlOjpOb3RTdHJpY3Q7CkBAIC02
Nyw3ICs2Nyw3IEBAIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBnZW5lcmF0ZUZ1
bmN0aW9uQ29kZUJsb2NrKAogICAgIGV4ZWN1dGFibGUtPnJlY29yZFBhcnNlKGZ1bmN0aW9uLT5m
ZWF0dXJlcygpLCBmdW5jdGlvbi0+aGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSk7CiAgICAgCiAgICAg
VW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogcmVzdWx0ID0gVW5saW5rZWRGdW5jdGlvbkNvZGVC
bG9jazo6Y3JlYXRlKCZ2bSwgRnVuY3Rpb25Db2RlLAotICAgICAgICBFeGVjdXRhYmxlSW5mbyhm
dW5jdGlvbi0+bmVlZHNBY3RpdmF0aW9uKCksIGZ1bmN0aW9uLT51c2VzRXZhbCgpLCBmdW5jdGlv
bi0+aXNTdHJpY3RNb2RlKCksIGtpbmQgPT0gQ29kZUZvckNvbnN0cnVjdCwgZnVuY3Rpb25LaW5k
ID09IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9uLCBleGVjdXRhYmxlLT5jb25zdHJ1Y3RvcktpbmQo
KSkpOworICAgICAgICBFeGVjdXRhYmxlSW5mbyhmdW5jdGlvbi0+bmVlZHNBY3RpdmF0aW9uKCks
IGZ1bmN0aW9uLT51c2VzRXZhbCgpLCBmdW5jdGlvbi0+aXNTdHJpY3RNb2RlKCksIGtpbmQgPT0g
Q29kZUZvckNvbnN0cnVjdCwgZnVuY3Rpb25LaW5kID09IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9u
LCBleGVjdXRhYmxlLT5jb25zdHJ1Y3RvcktpbmQoKSwgaXNBcnJvd0Z1bmN0aW9uKSk7CiAgICAg
YXV0byBnZW5lcmF0b3Ioc3RkOjptYWtlX3VuaXF1ZTxCeXRlY29kZUdlbmVyYXRvcj4odm0sIGZ1
bmN0aW9uLmdldCgpLCByZXN1bHQsIGRlYnVnZ2VyTW9kZSwgcHJvZmlsZXJNb2RlLCBleGVjdXRh
YmxlLT5wYXJlbnRTY29wZVREWlZhcmlhYmxlcygpKSk7CiAgICAgZXJyb3IgPSBnZW5lcmF0b3It
PmdlbmVyYXRlKCk7CiAgICAgaWYgKGVycm9yLmlzVmFsaWQoKSkKQEAgLTk5LDYgKzk5LDcgQEAg
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKFZN
KiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3QKICAgICAsIG1fY29uc3RydWN0QWJpbGl0eShzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oY29uc3RydWN0QWJpbGl0eSkpCiAgICAgLCBtX2NvbnN0cnVjdG9yS2lu
ZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4obm9kZS0+Y29uc3RydWN0b3JLaW5kKCkpKQogICAgICwg
bV9mdW5jdGlvbk1vZGUobm9kZS0+ZnVuY3Rpb25Nb2RlKCkpCisgICAgLCBtX2lzQXJyb3dGdW5j
dGlvbihub2RlLT5pc0Fycm93RnVuY3Rpb24oKSkKIHsKICAgICBBU1NFUlQobV9jb25zdHJ1Y3Rv
cktpbmQgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG5vZGUtPmNvbnN0cnVjdG9yS2luZCgpKSk7
CiAgICAgbV9wYXJlbnRTY29wZVREWlZhcmlhYmxlcy5zd2FwKHBhcmVudFNjb3BlVERaVmFyaWFi
bGVzKTsKQEAgLTE3OSw3ICsxODAsNyBAQCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmZyb21HbG9iYWxDb2RlKAogCiBVbmxpbmtlZEZ1bmN0
aW9uQ29kZUJsb2NrKiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29kZUJsb2NrRm9yKAog
ICAgIFZNJiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBDb2RlU3BlY2lhbGl6YXRpb25L
aW5kIHNwZWNpYWxpemF0aW9uS2luZCwgCi0gICAgRGVidWdnZXJNb2RlIGRlYnVnZ2VyTW9kZSwg
UHJvZmlsZXJNb2RlIHByb2ZpbGVyTW9kZSwgUGFyc2VyRXJyb3ImIGVycm9yKQorICAgIERlYnVn
Z2VyTW9kZSBkZWJ1Z2dlck1vZGUsIFByb2ZpbGVyTW9kZSBwcm9maWxlck1vZGUsIFBhcnNlckVy
cm9yJiBlcnJvciwgYm9vbCBpc0Fycm93RnVuY3Rpb24pCiB7CiAgICAgc3dpdGNoIChzcGVjaWFs
aXphdGlvbktpbmQpIHsKICAgICBjYXNlIENvZGVGb3JDYWxsOgpAQCAtMTk1LDcgKzE5Niw3IEBA
IFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpj
b2RlQmxvY2tGb3IoCiAgICAgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogcmVzdWx0ID0gZ2Vu
ZXJhdGVGdW5jdGlvbkNvZGVCbG9jaygKICAgICAgICAgdm0sIHRoaXMsIHNvdXJjZSwgc3BlY2lh
bGl6YXRpb25LaW5kLCBkZWJ1Z2dlck1vZGUsIHByb2ZpbGVyTW9kZSwgCiAgICAgICAgIGlzQnVp
bHRpbkZ1bmN0aW9uKCkgPyBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlvbiA6IFVubGlua2VkTm9ybWFs
RnVuY3Rpb24sIAotICAgICAgICBlcnJvcik7CisgICAgICAgIGVycm9yLCBpc0Fycm93RnVuY3Rp
b24pOwogICAgIAogICAgIGlmIChlcnJvci5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaAppbmRleCA2ZWFlOWYwYTJkMGRlYzg1MjNhYjJlOGNk
NmEzMjVmY2FjYTIwZTU0Li40ZTA1NGIyMDI1NzMyYWU2ZDhlOWM3MTU4MWUyMjNhMjNkOTg4YTk2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaApAQCAtOTQsNyArOTQsNyBAQCBwdWJsaWM6CiAKICAg
ICBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBjb2RlQmxvY2tGb3IoCiAgICAgICAgIFZNJiwg
Y29uc3QgU291cmNlQ29kZSYsIENvZGVTcGVjaWFsaXphdGlvbktpbmQsIERlYnVnZ2VyTW9kZSwg
UHJvZmlsZXJNb2RlLCAKLSAgICAgICAgUGFyc2VyRXJyb3ImKTsKKyAgICAgICAgUGFyc2VyRXJy
b3ImLCBib29sKTsKIAogICAgIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZnJv
bUdsb2JhbENvZGUoCiAgICAgICAgIGNvbnN0IElkZW50aWZpZXImLCBFeGVjU3RhdGUmLCBjb25z
dCBTb3VyY2VDb2RlJiwgSlNPYmplY3QqJiBleGNlcHRpb24sIApAQCAtMTI0LDYgKzEyNCw3IEBA
IHB1YmxpYzoKICAgICBDb25zdHJ1Y3RBYmlsaXR5IGNvbnN0cnVjdEFiaWxpdHkoKSBjb25zdCB7
IHJldHVybiBzdGF0aWNfY2FzdDxDb25zdHJ1Y3RBYmlsaXR5PihtX2NvbnN0cnVjdEFiaWxpdHkp
OyB9CiAgICAgYm9vbCBpc0NsYXNzQ29uc3RydWN0b3JGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJu
IGNvbnN0cnVjdG9yS2luZCgpICE9IENvbnN0cnVjdG9yS2luZDo6Tm9uZTsgfQogICAgIGNvbnN0
IFZhcmlhYmxlRW52aXJvbm1lbnQqIHBhcmVudFNjb3BlVERaVmFyaWFibGVzKCkgY29uc3QgeyBy
ZXR1cm4gJm1fcGFyZW50U2NvcGVURFpWYXJpYWJsZXM7IH0KKyAgICBib29sIGlzQXJyb3dGdW5j
dGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNBcnJvd0Z1bmN0aW9uOyB9CiAKIHByaXZhdGU6CiAg
ICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUoVk0qLCBTdHJ1Y3R1cmUqLCBjb25zdCBTb3Vy
Y2VDb2RlJiwgUmVmUHRyPFNvdXJjZVByb3ZpZGVyPiYmIHNvdXJjZU92ZXJyaWRlLCBGdW5jdGlv
bk1ldGFkYXRhTm9kZSosIFVubGlua2VkRnVuY3Rpb25LaW5kLCBDb25zdHJ1Y3RBYmlsaXR5LCBW
YXJpYWJsZUVudmlyb25tZW50Jik7CkBAIC0xNTYsNiArMTU3LDcgQEAgcHJpdmF0ZToKICAgICB1
bnNpZ25lZCBtX2NvbnN0cnVjdEFiaWxpdHk6IDE7CiAgICAgdW5zaWduZWQgbV9jb25zdHJ1Y3Rv
cktpbmQgOiAyOwogICAgIHVuc2lnbmVkIG1fZnVuY3Rpb25Nb2RlIDogMTsgLy8gRnVuY3Rpb25N
b2RlCisgICAgdW5zaWduZWQgbV9pc0Fycm93RnVuY3Rpb24gOiAxOwogCiBwcm90ZWN0ZWQ6CiAg
ICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYgdm0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCmluZGV4IDYwZTA2
MDU1M2U3YWE4ZjI3YjU0YTU1YmM3NWIyNGJlOTk0ZTI2YWEuLjAzOGI1MDljMzEzODNkMmMyZmFm
OGIwM2FmZWUxYWI1NzA1MGFjMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC00NzAsMjAgKzQ3MCwy
NSBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlv
bk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZQogICAgIH0KIAogICAgIG1fbmV3VGFyZ2V0UmVn
aXN0ZXIgPSBhZGRWYXIoKTsKLSAgICBpZiAoaXNDb25zdHJ1Y3RvcigpKSB7Ci0gICAgICAgIGVt
aXRNb3ZlKG1fbmV3VGFyZ2V0UmVnaXN0ZXIsICZtX3RoaXNSZWdpc3Rlcik7Ci0gICAgICAgIGlm
IChjb25zdHJ1Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3RvcktpbmQ6OkRlcml2ZWQpIHsKLSAgICAg
ICAgICAgIGVtaXRNb3ZlRW1wdHlWYWx1ZSgmbV90aGlzUmVnaXN0ZXIpOwotICAgICAgICB9IGVs
c2UKLSAgICAgICAgICAgIGVtaXRDcmVhdGVUaGlzKCZtX3RoaXNSZWdpc3Rlcik7Ci0gICAgfSBl
bHNlIGlmIChjb25zdHJ1Y3RvcktpbmQoKSAhPSBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUpIHsKLSAg
ICAgICAgZW1pdFRocm93VHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGNvbnN0cnVjdG9y
Iik7Ci0gICAgfSBlbHNlIGlmIChmdW5jdGlvbk5vZGUtPnVzZXNUaGlzKCkgfHwgY29kZUJsb2Nr
LT51c2VzRXZhbCgpKSB7Ci0gICAgICAgIG1fY29kZUJsb2NrLT5hZGRQcm9wZXJ0eUFjY2Vzc0lu
c3RydWN0aW9uKGluc3RydWN0aW9ucygpLnNpemUoKSk7Ci0gICAgICAgIGVtaXRPcGNvZGUob3Bf
dG9fdGhpcyk7Ci0gICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChraWxsKCZtX3RoaXNSZWdp
c3RlcikpOwotICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7Ci0gICAgICAgIGluc3Ry
dWN0aW9ucygpLmFwcGVuZCgwKTsKKyAgICBpZiAoIWNvZGVCbG9jay0+aXNBcnJvd0Z1bmN0aW9u
KCkpIHsKKyAgICAgICAgaWYgKGlzQ29uc3RydWN0b3IoKSkgeworICAgICAgICAgICAgZW1pdE1v
dmUobV9uZXdUYXJnZXRSZWdpc3RlciwgJm1fdGhpc1JlZ2lzdGVyKTsKKyAgICAgICAgICAgIGlm
IChjb25zdHJ1Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3RvcktpbmQ6OkRlcml2ZWQpCisgICAgICAg
ICAgICAgICAgZW1pdE1vdmVFbXB0eVZhbHVlKCZtX3RoaXNSZWdpc3Rlcik7CisgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgZW1pdENyZWF0ZVRoaXMoJm1fdGhpc1JlZ2lzdGVyKTsK
KyAgICAgICAgfSBlbHNlIGlmIChjb25zdHJ1Y3RvcktpbmQoKSAhPSBDb25zdHJ1Y3RvcktpbmQ6
Ok5vbmUpIHsKKyAgICAgICAgICAgIGVtaXRUaHJvd1R5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBj
bGFzcyBjb25zdHJ1Y3RvciIpOworICAgICAgICB9IGVsc2UgaWYgKGZ1bmN0aW9uTm9kZS0+dXNl
c1RoaXMoKSB8fCBjb2RlQmxvY2stPnVzZXNFdmFsKCkpIHsKKyAgICAgICAgICAgIG1fY29kZUJs
b2NrLT5hZGRQcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uKGluc3RydWN0aW9ucygpLnNpemUoKSk7
CisgICAgICAgICAgICBlbWl0T3Bjb2RlKG9wX3RvX3RoaXMpOworICAgICAgICAgICAgaW5zdHJ1
Y3Rpb25zKCkuYXBwZW5kKGtpbGwoJm1fdGhpc1JlZ2lzdGVyKSk7CisgICAgICAgICAgICBpbnN0
cnVjdGlvbnMoKS5hcHBlbmQoMCk7CisgICAgICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQo
MCk7CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBpZiAoZnVuY3Rpb25Ob2RlLT51
c2VzVGhpcygpIHx8IGNvZGVCbG9jay0+dXNlc0V2YWwoKSkKKyAgICAgICAgICAgIGVtaXRMb2Fk
QXJyb3dGdW5jdGlvblRoaXMoJm1fdGhpc1JlZ2lzdGVyKTsKICAgICB9CiAKICAgICAvLyBBbGwg
ImFkZFZhcigpInMgbmVlZHMgdG8gaGFwcGVuIGJlZm9yZSAiaW5pdGlhbGl6ZURlZmF1bHRQYXJh
bWV0ZXJWYWx1ZXNBbmRTZXR1cEZ1bmN0aW9uU2NvcGVTdGFjaygpIiBpcyBjYWxsZWQKQEAgLTIy
NTQsMTYgKzIyNTksMzcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdS
ZWdFeHAoUmVnaXN0ZXJJRCogZHN0LCBSZWdFeHAqIHJlZ0V4cCkKICAgICByZXR1cm4gZHN0Owog
fQogCi1SZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Z1bmN0aW9uRXhwcmVz
c2lvbihSZWdpc3RlcklEKiByMCwgRnVuY0V4cHJOb2RlKiBuKQordm9pZCBCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdE5ld0Z1bmN0aW9uQ29tbW9uKFJlZ2lzdGVySUQqIGRzdCwgQmFzZUZ1bmNFeHBy
Tm9kZSogZnVuYywgT3Bjb2RlSUQgb3Bjb2RlSUQpCiB7Ci0gICAgRnVuY3Rpb25NZXRhZGF0YU5v
ZGUqIG1ldGFkYXRhID0gbi0+bWV0YWRhdGEoKTsKLSAgICB1bnNpZ25lZCBpbmRleCA9IG1fY29k
ZUJsb2NrLT5hZGRGdW5jdGlvbkV4cHIobWFrZUZ1bmN0aW9uKG1ldGFkYXRhKSk7CiAKLSAgICBl
bWl0T3Bjb2RlKG9wX25ld19mdW5jX2V4cCk7Ci0gICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHIw
LT5pbmRleCgpKTsKKyAgICBBU1NFUlQob3Bjb2RlSUQgPT0gb3BfbmV3X2Z1bmNfZXhwIHx8IG9w
Y29kZUlEID09IG9wX25ld19hcnJvd19mdW5jX2V4cCk7CisgICAgCisgICAgRnVuY3Rpb25NZXRh
ZGF0YU5vZGUqIGZ1bmN0aW9uID0gZnVuYy0+bWV0YWRhdGEoKTsKKyAgICB1bnNpZ25lZCBpbmRl
eCA9IG1fY29kZUJsb2NrLT5hZGRGdW5jdGlvbkV4cHIobWFrZUZ1bmN0aW9uKGZ1bmN0aW9uKSk7
CisgICAgCisgICAgZW1pdE9wY29kZShvcGNvZGVJRCk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBw
ZW5kKGRzdC0+aW5kZXgoKSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHNjb3BlUmVnaXN0
ZXIoKS0+aW5kZXgoKSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGluZGV4KTsKLSAgICBy
ZXR1cm4gcjA7CisgICAgCisgICAgaWYgKG9wY29kZUlEID09IG9wX25ld19hcnJvd19mdW5jX2V4
cCkKKyAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHRoaXNSZWdpc3RlcigpLT5pbmRleCgp
KTsKK30KKworUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdGdW5jdGlvbkV4
cHJlc3Npb24oUmVnaXN0ZXJJRCogZHN0LCBGdW5jRXhwck5vZGUqIGZ1bmMpCit7CisgICAgZW1p
dE5ld0Z1bmN0aW9uQ29tbW9uKGRzdCwgZnVuYywgb3BfbmV3X2Z1bmNfZXhwKTsKKyAgICByZXR1
cm4gZHN0OworfQorCitSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Fycm93
RnVuY3Rpb25FeHByZXNzaW9uKFJlZ2lzdGVySUQqIGRzdCwgQXJyb3dGdW5jRXhwck5vZGUqIGZ1
bmMpCit7CisgICAgYm9vbCBpc0NsYXNzQ29uc3RydWN0b3IgPSBtX2NvZGVCbG9jay0+aXNDb25z
dHJ1Y3RvcigpICYmIGNvbnN0cnVjdG9yS2luZCgpICE9IENvbnN0cnVjdG9yS2luZDo6Tm9uZTsK
KyAgICBpZiAoaXNDbGFzc0NvbnN0cnVjdG9yKQorICAgICAgICBlbWl0VERaQ2hlY2sodGhpc1Jl
Z2lzdGVyKCkpOworICAgIAorICAgIGVtaXROZXdGdW5jdGlvbkNvbW1vbihkc3QsIGZ1bmMsIG9w
X25ld19hcnJvd19mdW5jX2V4cCk7CisgICAgcmV0dXJuIGRzdDsKIH0KIAogUmVnaXN0ZXJJRCog
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdEZWZhdWx0Q29uc3RydWN0b3IoUmVnaXN0ZXJJRCog
ZHN0LCBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCBjb25zdCBJZGVudGlmaWVyJiBu
YW1lKQpAQCAtMjgzOSw2ICsyODY1LDEzIEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmFsbG9j
YXRlQW5kRW1pdFNjb3BlKCkKICAgICBlbWl0TW92ZShtX3RvcE1vc3RTY29wZSwgc2NvcGVSZWdp
c3RlcigpKTsKIH0KIAorUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRMb2FkQXJy
b3dGdW5jdGlvblRoaXMoUmVnaXN0ZXJJRCogYXJyb3dGdW5jdGlvblRoaXMpCit7CisgICAgZW1p
dE9wY29kZShvcF9sb2FkX2Fycm93ZnVuY3Rpb25fdGhpcyk7CisgICAgaW5zdHJ1Y3Rpb25zKCku
YXBwZW5kKGFycm93RnVuY3Rpb25UaGlzLT5pbmRleCgpKTsKKyAgICByZXR1cm4gYXJyb3dGdW5j
dGlvblRoaXM7Cit9CisgICAgCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q29tcGxleFBv
cFNjb3BlcyhSZWdpc3RlcklEKiBzY29wZSwgQ29udHJvbEZsb3dDb250ZXh0KiB0b3BTY29wZSwg
Q29udHJvbEZsb3dDb250ZXh0KiBib3R0b21TY29wZSkKIHsKICAgICB3aGlsZSAodG9wU2NvcGUg
PiBib3R0b21TY29wZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCmluZGV4IDMzYTE1YzFmZjliMTA1MzVkMDQxNDdm
MWFmNmYyNmRjZDgxNTQ5YTUuLjk3OTNkOGY5NTNhYzY3MTIzOTM2YmY0N2YyMzgwOWFiM2FhNWU1
MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmgKQEAgLTQ4MSw2ICs0ODEsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgUmVnaXN0ZXJJRCogZW1pdE5ld0Z1bmN0aW9uSW50ZXJuYWwoUmVnaXN0ZXJJRCogZHN0
LCB1bnNpZ25lZCBpbmRleCk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXROZXdGdW5jdGlvbkV4
cHJlc3Npb24oUmVnaXN0ZXJJRCogZHN0LCBGdW5jRXhwck5vZGUqIGZ1bmMpOwogICAgICAgICBS
ZWdpc3RlcklEKiBlbWl0TmV3RGVmYXVsdENvbnN0cnVjdG9yKFJlZ2lzdGVySUQqIGRzdCwgQ29u
c3RydWN0b3JLaW5kLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lKTsKKyAgICAgICAgdm9pZCBlbWl0
TmV3RnVuY3Rpb25Db21tb24oUmVnaXN0ZXJJRCosIEJhc2VGdW5jRXhwck5vZGUqLCBPcGNvZGVJ
RCk7CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXROZXdBcnJvd0Z1bmN0aW9uRXhwcmVzc2lvbihS
ZWdpc3RlcklEKiwgQXJyb3dGdW5jRXhwck5vZGUqKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1p
dE5ld1JlZ0V4cChSZWdpc3RlcklEKiBkc3QsIFJlZ0V4cCopOwogCiAgICAgICAgIFJlZ2lzdGVy
SUQqIGVtaXRNb3ZlTGlua1RpbWVDb25zdGFudChSZWdpc3RlcklEKiBkc3QsIExpbmtUaW1lQ29u
c3RhbnQpOwpAQCAtNjYzLDYgKzY2NSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBBTFdB
WVNfSU5MSU5FIHZvaWQgcmV3aW5kVW5hcnlPcCgpOwogCiAgICAgICAgIHZvaWQgYWxsb2NhdGVB
bmRFbWl0U2NvcGUoKTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdExvYWRBcnJvd0Z1bmN0aW9u
VGhpcyhSZWdpc3RlcklEKik7CiAgICAgICAgIHZvaWQgZW1pdENvbXBsZXhQb3BTY29wZXMoUmVn
aXN0ZXJJRCosIENvbnRyb2xGbG93Q29udGV4dCogdG9wU2NvcGUsIENvbnRyb2xGbG93Q29udGV4
dCogYm90dG9tU2NvcGUpOwogCiAgICAgICAgIHR5cGVkZWYgSGFzaE1hcDxkb3VibGUsIEpTVmFs
dWU+IE51bWJlck1hcDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvTm9kZXNDb2RlZ2VuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvTm9kZXNDb2RlZ2VuLmNwcAppbmRleCA0NzdmYTVjNzMwNTY0NzA0MGMwNTc5ZDExMTM2YmMz
Yjk3OWQyNWFkLi41NDg4MmQ5NDU5YmE1MGI2Y2NlYWZiMzI4OWNmYjAwNzM3NjliYmQ4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4u
Y3BwCkBAIC0yOTYwLDYgKzI5NjAsMTMgQEAgUmVnaXN0ZXJJRCogRnVuY0V4cHJOb2RlOjplbWl0
Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCoKICAgICBy
ZXR1cm4gZ2VuZXJhdG9yLmVtaXROZXdGdW5jdGlvbkV4cHJlc3Npb24oZ2VuZXJhdG9yLmZpbmFs
RGVzdGluYXRpb24oZHN0KSwgdGhpcyk7CiB9CiAKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLSBBcnJvd0Z1bmNFeHByTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KKworUmVnaXN0ZXJJRCogQXJyb3dGdW5jRXhwck5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29k
ZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCit7CisgICAgcmV0dXJuIGdl
bmVyYXRvci5lbWl0TmV3QXJyb3dGdW5jdGlvbkV4cHJlc3Npb24oZ2VuZXJhdG9yLmZpbmFsRGVz
dGluYXRpb24oZHN0KSwgdGhpcyk7Cit9CisgICAgCiAjaWYgRU5BQkxFKEVTNl9DTEFTU19TWU5U
QVgpCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQ2xhc3NEZWNsTm9kZSAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCmluZGV4IDkz
MjUzNDgyNjFjMmQyMDUxZDIyYzc4YWFiZTIzZjhhYTBhN2FjZjAuLjFiZDhmNjk0MGUyMGMzYzYy
ODU2NDc0NmI4MDA4YzkyZTZlMzgzMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKQEAgLTE2ODIsNyAr
MTY4MiwxMiBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+Ojpl
eGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgIGNhc2UgQ3JlYXRlQ2xvbmVk
QXJndW1lbnRzOgogICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUobV9ncmFwaCwgU3BlY09i
amVjdE90aGVyKTsKICAgICAgICAgYnJlYWs7Ci0gICAgICAgIAorICAgICAgICAgICAgCisgICAg
Y2FzZSBOZXdBcnJvd0Z1bmN0aW9uOgorICAgICAgICBmb3JOb2RlKG5vZGUpLnNldCgKKyAgICAg
ICAgICAgIG1fZ3JhcGgsIG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKS0+YXJyb3dGdW5jdGlvblN0cnVjdHVyZSgpKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAKICAgICBjYXNlIE5ld0Z1bmN0aW9uOgogICAgICAgICBmb3JOb2RlKG5vZGUp
LnNldCgKICAgICAgICAgICAgIG1fZ3JhcGgsIG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3RGb3Io
bm9kZS0+b3JpZ2luLnNlbWFudGljKS0+ZnVuY3Rpb25TdHJ1Y3R1cmUoKSk7CkBAIC0xNzQzLDYg
KzE3NDgsMTUgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6
ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICAgICAgZm9yTm9kZShub2Rl
KS5zZXRUeXBlKG1fZ3JhcGgsIFNwZWNPYmplY3RPdGhlcik7CiAgICAgICAgIGJyZWFrOwogCisg
ICAgY2FzZSBMb2FkQXJyb3dGdW5jdGlvblRoaXM6CisgICAgICAgIGlmIChKU1ZhbHVlIGJhc2Ug
PSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3ZhbHVlKSB7CisgICAgICAgICAgICBKU0Fycm93
RnVuY3Rpb24qIGZ1bmN0aW9uID0ganNEeW5hbWljQ2FzdDxKU0Fycm93RnVuY3Rpb24qPihiYXNl
KTsKKyAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsICptX2dyYXBoLmZyZWV6ZShmdW5jdGlv
bi0+Ym91bmRUaGlzKCkpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAg
IGZvck5vZGUobm9kZSkuc2V0VHlwZShtX2dyYXBoLCBTcGVjRmluYWxPYmplY3QpOworICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIAogICAgIGNhc2UgU2tpcFNjb3BlOiB7CiAgICAgICAgIEpT
VmFsdWUgY2hpbGQgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS52YWx1ZSgpOwogICAgICAgICBp
ZiAoY2hpbGQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0
ZUNvZGVQYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBh
cnNlci5jcHAKaW5kZXggYTU2MzM3Yzc5YTZmZDJkNDRkYzlhMTQ5OTk3MjA0YTg0NDVhNjA3Zi4u
NTNlMWJlZmRiMTU5OTQ1MzU5ODc2NjAxNWZiMmNiZTlhNTMzM2VhYyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKQEAgLTQwNzksNiArNDA3
OSwxNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQog
ICAgICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5v
cGVyYW5kKSwgcmVzdWx0KTsKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2dldF9zY29wZSk7
CiAgICAgICAgIH0KKworICAgICAgICBjYXNlIG9wX2xvYWRfYXJyb3dmdW5jdGlvbl90aGlzOiB7
CisgICAgICAgICAgICBOb2RlKiBjYWxsZWUgPSBnZXQoVmlydHVhbFJlZ2lzdGVyKEpTU3RhY2s6
OkNhbGxlZSkpOworICAgICAgICAgICAgTm9kZSogcmVzdWx0OworICAgICAgICAgICAgaWYgKEpT
QXJyb3dGdW5jdGlvbiogZnVuY3Rpb24gPSBjYWxsZWUtPmR5bmFtaWNDYXN0Q29uc3RhbnQ8SlNB
cnJvd0Z1bmN0aW9uKj4oKSkKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBqc0NvbnN0YW50KGZ1
bmN0aW9uLT5ib3VuZFRoaXMoKSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
cmVzdWx0ID0gYWRkVG9HcmFwaChMb2FkQXJyb3dGdW5jdGlvblRoaXMsIGNhbGxlZSk7CisgICAg
ICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJh
bmQpLCByZXN1bHQpOworICAgICAgICAgICAgTkVYVF9PUENPREUob3BfbG9hZF9hcnJvd2Z1bmN0
aW9uX3RoaXMpOworICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBvcF9jcmVh
dGVfZGlyZWN0X2FyZ3VtZW50czogewogICAgICAgICAgICAgbm90aWNlQXJndW1lbnRzVXNlKCk7
CkBAIC00MTM2LDYgKzQxNDcsMTggQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1
bnNpZ25lZCBsaW1pdCkKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX25ld19mdW5jX2V4cCk7
CiAgICAgICAgIH0KIAorICAgICAgICBjYXNlIG9wX25ld19hcnJvd19mdW5jX2V4cDogeworICAg
ICAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBleHByID0gbV9pbmxpbmVTdGFja1RvcC0+bV9w
cm9maWxlZEJsb2NrLT5mdW5jdGlvbkV4cHIoY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFu
ZCk7CisgICAgICAgICAgICBGcm96ZW5WYWx1ZSogZnJvemVuID0gbV9ncmFwaC5mcmVlemVTdHJv
bmcoZXhwcik7CisKKyAgICAgICAgICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3Ry
dWN0aW9uWzFdLnUub3BlcmFuZCksCisgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChOZXdBcnJv
d0Z1bmN0aW9uLCBPcEluZm8oZnJvemVuKSwKKyAgICAgICAgICAgICAgICAgICAgZ2V0KFZpcnR1
YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKSksCisgICAgICAgICAg
ICAgICAgICAgIGdldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzRdLnUub3Bl
cmFuZCkpKSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX25ld19h
cnJvd19mdW5jX2V4cCk7CisgICAgICAgIH0KKwogICAgICAgICBjYXNlIG9wX3R5cGVvZjogewog
ICAgICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5v
cGVyYW5kKSwKICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKFR5cGVPZiwgZ2V0KFZpcnR1YWxS
ZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKSkpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAppbmRleCBmOWI1ZTc3NTViYjA1
YTM4M2M5NmJlMjdjNjgxYTkzNjZkNWE2MmVlLi43ZjU0MzA4NDg1MjkxNTkzZmI3NWY2YmJjMDY5
YmFhM2I2Y2QxMzI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nh
cGFiaWxpdGllcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmls
aXRpZXMuY3BwCkBAIC0xOTMsNiArMTkzLDcgQEAgQ2FwYWJpbGl0eUxldmVsIGNhcGFiaWxpdHlM
ZXZlbChPcGNvZGVJRCBvcGNvZGVJRCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEluc3RydWMKICAg
ICBjYXNlIG9wX3N3aXRjaF9jaGFyOgogICAgIGNhc2Ugb3BfaW46CiAgICAgY2FzZSBvcF9nZXRf
c2NvcGU6CisgICAgY2FzZSBvcF9sb2FkX2Fycm93ZnVuY3Rpb25fdGhpczoKICAgICBjYXNlIG9w
X2dldF9mcm9tX3Njb3BlOgogICAgIGNhc2Ugb3BfZ2V0X2VudW1lcmFibGVfbGVuZ3RoOgogICAg
IGNhc2Ugb3BfaGFzX2dlbmVyaWNfcHJvcGVydHk6CkBAIC0yMDUsNiArMjA2LDcgQEAgQ2FwYWJp
bGl0eUxldmVsIGNhcGFiaWxpdHlMZXZlbChPcGNvZGVJRCBvcGNvZGVJRCwgQ29kZUJsb2NrKiBj
b2RlQmxvY2ssIEluc3RydWMKICAgICBjYXNlIG9wX3RvX2luZGV4X3N0cmluZzoKICAgICBjYXNl
IG9wX25ld19mdW5jOgogICAgIGNhc2Ugb3BfbmV3X2Z1bmNfZXhwOgorICAgIGNhc2Ugb3BfbmV3
X2Fycm93X2Z1bmNfZXhwOgogICAgIGNhc2Ugb3BfY3JlYXRlX2xleGljYWxfZW52aXJvbm1lbnQ6
CiAgICAgY2FzZSBvcF9nZXRfcGFyZW50X3Njb3BlOgogICAgICAgICByZXR1cm4gQ2FuQ29tcGls
ZUFuZElubGluZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xv
YmJlcml6ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKaW5k
ZXggODVjNTdlNWRjMGNmOWZiODkyZjhmYzU2ZDg1NDI2NGM4MTg4ZDljYy4uNzcyN2E5ZWQwYWQw
YzM5MmMwN2FkMzhlNWI4NzcyYTIyYzI5NmFkOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDbG9iYmVyaXplLmgKQEAgLTEzOSw2ICsxMzksNyBAQCB2b2lkIGNsb2JiZXJpemUoR3Jh
cGgmIGdyYXBoLCBOb2RlKiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3Jp
dGVGdQogICAgIGNhc2UgQXJpdGhDb3M6CiAgICAgY2FzZSBBcml0aExvZzoKICAgICBjYXNlIEdl
dFNjb3BlOgorICAgIGNhc2UgTG9hZEFycm93RnVuY3Rpb25UaGlzOgogICAgIGNhc2UgU2tpcFNj
b3BlOgogICAgIGNhc2UgU3RyaW5nQ2hhckNvZGVBdDoKICAgICBjYXNlIFN0cmluZ0Zyb21DaGFy
Q29kZToKQEAgLTk1OCw3ICs5NTksOCBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBO
b2RlKiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3JpdGVGdQogICAgICAg
ICByZWFkKEhlYXBPYmplY3RDb3VudCk7CiAgICAgICAgIHdyaXRlKEhlYXBPYmplY3RDb3VudCk7
CiAgICAgICAgIHJldHVybjsKLSAgICAgICAgCisgICAgCisgICAgY2FzZSBOZXdBcnJvd0Z1bmN0
aW9uOgogICAgIGNhc2UgTmV3RnVuY3Rpb246CiAgICAgICAgIGlmIChub2RlLT5jYXN0T3BlcmFu
ZDxGdW5jdGlvbkV4ZWN1dGFibGUqPigpLT5zaW5nbGV0b25GdW5jdGlvbigpLT5pc1N0aWxsVmFs
aWQoKSkKICAgICAgICAgICAgIHdyaXRlKFdhdGNocG9pbnRfZmlyZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKaW5kZXggZTQ3MGI4ZGRhYjk5NDM4ZmQ4OTAzNTJlNDVl
MDkxMDI5ZjFhNjI3YS4uMzU0NzMzMmYwYjQxYWNkMmMzNGI0ZTVlYzE0NjVjYjAxYzkzOWMxMSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcApAQCAtOTksNiArOTksNyBA
QCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBHZXRCdXR0
ZXJmbHk6CiAgICAgY2FzZSBDaGVja0FycmF5OgogICAgIGNhc2UgR2V0U2NvcGU6CisgICAgY2Fz
ZSBMb2FkQXJyb3dGdW5jdGlvblRoaXM6CiAgICAgY2FzZSBTa2lwU2NvcGU6CiAgICAgY2FzZSBH
ZXRDbG9zdXJlVmFyOgogICAgIGNhc2UgUHV0Q2xvc3VyZVZhcjoKQEAgLTIyOSw2ICsyMzAsNyBA
QCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBOZXdSZWdl
eHA6CiAgICAgY2FzZSBOZXdTdHJpbmdPYmplY3Q6CiAgICAgY2FzZSBNYWtlUm9wZToKKyAgICBj
YXNlIE5ld0Fycm93RnVuY3Rpb246CiAgICAgY2FzZSBOZXdGdW5jdGlvbjoKICAgICBjYXNlIE5l
d1R5cGVkQXJyYXk6CiAgICAgY2FzZSBUaHJvd1JlZmVyZW5jZUVycm9yOgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKaW5kZXggZGE3NmU3YTg3ZTljNTBlYjE5
ZDBlYzA0Nzg2MGI3YmFlYmZhNDY3ZS4uMGFiMzkzODM5NGYyNjg2YTQ1YWQxZjYxZDA4MWYyYjVk
OGYzNzdjYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBo
YXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3Bw
CkBAIC05NDgsNyArOTQ4LDEyIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBzcGVjdWxhdGVGb3JC
YXJyaWVyKG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0g
ICAgICAgICAgICAKKworICAgICAgICBjYXNlIExvYWRBcnJvd0Z1bmN0aW9uVGhpczogeworICAg
ICAgICAgICAgZml4RWRnZTxLbm93bkNlbGxVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICB9CisKICAgICAgICAgY2FzZSBTa2lwU2NvcGU6CiAgICAgICAg
IGNhc2UgR2V0U2NvcGU6CiAgICAgICAgIGNhc2UgR2V0R2V0dGVyOgpAQCAtMTI3MSw3ICsxMjc2
LDEzIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBmaXhFZGdlPENlbGxVc2U+KG5vZGUtPmNoaWxk
MSgpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgICAgICAKKworICAg
ICAgICBjYXNlIE5ld0Fycm93RnVuY3Rpb246IHsKKyAgICAgICAgICAgIGZpeEVkZ2U8Q2VsbFVz
ZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgZml4RWRnZTxDZWxsVXNlPihub2RlLT5j
aGlsZDIoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCiAjaWYgIUFTU0VSVF9E
SVNBQkxFRAogICAgICAgICAvLyBIYXZlIHRoZXNlIG5vLW9wIGNhc2VzIGhlcmUgdG8gZW5zdXJl
IHRoYXQgbm9ib2R5IGZvcmdldHMgdG8gYWRkIGhhbmRsZXJzIGZvciBuZXcgb3Bjb2Rlcy4KICAg
ICAgICAgY2FzZSBTZXRBcmd1bWVudDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTm9kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKaW5k
ZXggODNmY2Y1YzEwMWUwYzdjNzdhOWVkMjA5NWQ0NTVkYTY5YzRlNmFmMC4uMzA2MzI3YTRkMDA5
NDEyYzk3NWRlMjk2MGQwZTI5MzQ3MDZkZDg1YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdOb2RlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdO
b2RlLmgKQEAgLTU4MCw3ICs1ODAsNyBAQCBzdHJ1Y3QgTm9kZSB7CiAKICAgICB2b2lkIGNvbnZl
cnRUb1BoYW50b21OZXdGdW5jdGlvbigpCiAgICAgewotICAgICAgICBBU1NFUlQobV9vcCA9PSBO
ZXdGdW5jdGlvbik7CisgICAgICAgIEFTU0VSVChtX29wID09IE5ld0Z1bmN0aW9uIHx8IG1fb3Ag
PT0gTmV3QXJyb3dGdW5jdGlvbik7CiAgICAgICAgIG1fb3AgPSBQaGFudG9tTmV3RnVuY3Rpb247
CiAgICAgICAgIG1fZmxhZ3MgfD0gTm9kZU11c3RHZW5lcmF0ZTsKICAgICAgICAgbV9vcEluZm8g
PSAwOwpAQCAtMTI4MCw2ICsxMjgwLDcgQEAgc3RydWN0IE5vZGUgewogICAgICAgICBzd2l0Y2gg
KG9wKCkpIHsKICAgICAgICAgY2FzZSBDaGVja0NlbGw6CiAgICAgICAgIGNhc2UgTmV3RnVuY3Rp
b246CisgICAgICAgIGNhc2UgTmV3QXJyb3dGdW5jdGlvbjoKICAgICAgICAgY2FzZSBDcmVhdGVB
Y3RpdmF0aW9uOgogICAgICAgICBjYXNlIE1hdGVyaWFsaXplQ3JlYXRlQWN0aXZhdGlvbjoKICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMTQ5Niw2ICsxNDk3LDcgQEAgc3RydWN0IE5vZGUg
ewogICAgIGJvb2wgaXNGdW5jdGlvbkFsbG9jYXRpb24oKQogICAgIHsKICAgICAgICAgc3dpdGNo
IChvcCgpKSB7CisgICAgICAgIGNhc2UgTmV3QXJyb3dGdW5jdGlvbjoKICAgICAgICAgY2FzZSBO
ZXdGdW5jdGlvbjoKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBkZWZhdWx0Ogpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCmluZGV4IGU5YmY3MjcwNGIxN2Fh
Njg2NzllOWJiZWEwZjRmMmFkY2VmOTYzYTIuLjc0YWE5ODQ2ODMwOWMyYjQzYjIxODc0NGE2ZjMw
NzRiMTEzYTBkYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9k
ZVR5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKQEAg
LTE5Nyw2ICsxOTcsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAgbWFj
cm8oTXVsdGlQdXRCeU9mZnNldCwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKEdldEFy
cmF5TGVuZ3RoLCBOb2RlUmVzdWx0SW50MzIpIFwKICAgICBtYWNybyhHZXRUeXBlZEFycmF5Qnl0
ZU9mZnNldCwgTm9kZVJlc3VsdEludDMyKSBcCisgICAgbWFjcm8oTG9hZEFycm93RnVuY3Rpb25U
aGlzLCBOb2RlUmVzdWx0SlMpIFwKICAgICBtYWNybyhHZXRTY29wZSwgTm9kZVJlc3VsdEpTKSBc
CiAgICAgbWFjcm8oU2tpcFNjb3BlLCBOb2RlUmVzdWx0SlMpIFwKICAgICBtYWNybyhHZXRDbG9z
dXJlVmFyLCBOb2RlUmVzdWx0SlMpIFwKQEAgLTI5NCw2ICsyOTUsOCBAQCBuYW1lc3BhY2UgSlND
IHsgbmFtZXNwYWNlIERGRyB7CiAgICAgXAogICAgIG1hY3JvKE5ld0Z1bmN0aW9uLCBOb2RlUmVz
dWx0SlMpIFwKICAgICBcCisgICAgbWFjcm8oTmV3QXJyb3dGdW5jdGlvbiwgTm9kZVJlc3VsdEpT
KSBcCisgICAgXAogICAgIC8qIFRoZXNlIGFyZW4ndCB0ZXJtaW5hbHMgYnV0IGFsd2F5cyBleGl0
ICovIFwKICAgICBtYWNybyhUaHJvdywgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKFRo
cm93UmVmZXJlbmNlRXJyb3IsIE5vZGVNdXN0R2VuZXJhdGUpIFwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhh
c2UuY3BwCmluZGV4IGZkODg5MTBlNTVhMWUwYTcxYjExNjM0YjgyY2VhOTVlOGNkMTA2MWIuLjc1
ZDZjNjI0YTdjNWFjNTViY2U5ZWYxZmRkNjk1ODAyODg2NDUyNmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2lu
Z1BoYXNlLmNwcApAQCAtMTM4LDcgKzEzOCw3IEBAIHB1YmxpYzoKICAgICAvLyBvbmNlIGl0IGlz
IGVzY2FwZWQgaWYgaXQgc3RpbGwgaGFzIHBvaW50ZXJzIHRvIGl0IGluIG9yZGVyIHRvCiAgICAg
Ly8gcmVwbGFjZSBhbnkgdXNlIG9mIHRob3NlIHBvaW50ZXJzIGJ5IHRoZSBjb3JyZXNwb25kaW5n
CiAgICAgLy8gbWF0ZXJpYWxpemF0aW9uCi0gICAgZW51bSBjbGFzcyBLaW5kIHsgRXNjYXBlZCwg
T2JqZWN0LCBBY3RpdmF0aW9uLCBGdW5jdGlvbiB9OworICAgIGVudW0gY2xhc3MgS2luZCB7IEVz
Y2FwZWQsIE9iamVjdCwgQWN0aXZhdGlvbiwgRnVuY3Rpb24sIE5ld0Fycm93RnVuY3Rpb24gfTsK
IAogICAgIGV4cGxpY2l0IEFsbG9jYXRpb24oTm9kZSogaWRlbnRpZmllciA9IG51bGxwdHIsIEtp
bmQga2luZCA9IEtpbmQ6OkVzY2FwZWQpCiAgICAgICAgIDogbV9pZGVudGlmaWVyKGlkZW50aWZp
ZXIpCkBAIC0yMzIsNyArMjMyLDEyIEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNGdW5jdGlvbkFs
bG9jYXRpb24oKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIG1fa2luZCA9PSBLaW5kOjpG
dW5jdGlvbjsKKyAgICAgICAgcmV0dXJuIG1fa2luZCA9PSBLaW5kOjpGdW5jdGlvbiB8fCBtX2tp
bmQgPT0gS2luZDo6TmV3QXJyb3dGdW5jdGlvbjsKKyAgICB9CisgICAgCisgICAgYm9vbCBpc0Fy
cm93RnVuY3Rpb25BbGxvY2F0aW9uKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2tp
bmQgPT0gS2luZDo6TmV3QXJyb3dGdW5jdGlvbjsKICAgICB9CiAKICAgICBib29sIG9wZXJhdG9y
PT0oY29uc3QgQWxsb2NhdGlvbiYgb3RoZXIpIGNvbnN0CkBAIC0yNjcsNiArMjcyLDEwIEBAIHB1
YmxpYzoKICAgICAgICAgY2FzZSBLaW5kOjpGdW5jdGlvbjoKICAgICAgICAgICAgIG91dC5wcmlu
dCgiRnVuY3Rpb24iKTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIAorICAg
ICAgICBjYXNlIEtpbmQ6Ok5ld0Fycm93RnVuY3Rpb246CisgICAgICAgICAgICBvdXQucHJpbnQo
Ik5ld0Fycm93RnVuY3Rpb24iKTsKKyAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2Ug
S2luZDo6QWN0aXZhdGlvbjoKICAgICAgICAgICAgIG91dC5wcmludCgiQWN0aXZhdGlvbiIpOwpA
QCAtODQwLDE0ICs4NDksMTkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CiAKLSAgICAgICAgY2FzZSBOZXdGdW5jdGlvbjogeworICAgICAgICBjYXNlIE5ld0Z1bmN0
aW9uOgorICAgICAgICBjYXNlIE5ld0Fycm93RnVuY3Rpb246IHsKKyAgICAgICAgICAgIGJvb2wg
aXNBcnJvd0Z1bmN0aW9uID0gbm9kZS0+b3AoKSA9PSBOZXdBcnJvd0Z1bmN0aW9uOwogICAgICAg
ICAgICAgaWYgKG5vZGUtPmNhc3RPcGVyYW5kPEZ1bmN0aW9uRXhlY3V0YWJsZSo+KCktPnNpbmds
ZXRvbkZ1bmN0aW9uKCktPmlzU3RpbGxWYWxpZCgpKSB7CiAgICAgICAgICAgICAgICAgbV9oZWFw
LmVzY2FwZShub2RlLT5jaGlsZDEoKS5ub2RlKCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgfQotICAgICAgICAgICAgdGFyZ2V0ID0gJm1faGVhcC5uZXdBbGxvY2F0aW9u
KG5vZGUsIEFsbG9jYXRpb246OktpbmQ6OkZ1bmN0aW9uKTsKKyAgICAgICAgICAgIAorICAgICAg
ICAgICAgdGFyZ2V0ID0gJm1faGVhcC5uZXdBbGxvY2F0aW9uKG5vZGUsIGlzQXJyb3dGdW5jdGlv
biA/IEFsbG9jYXRpb246OktpbmQ6Ok5ld0Fycm93RnVuY3Rpb24gOiBBbGxvY2F0aW9uOjpLaW5k
OjpGdW5jdGlvbik7CiAgICAgICAgICAgICB3cml0ZXMuYWRkKEZ1bmN0aW9uRXhlY3V0YWJsZVBM
b2MsIExhenlOb2RlKG5vZGUtPmNlbGxPcGVyYW5kKCkpKTsKICAgICAgICAgICAgIHdyaXRlcy5h
ZGQoRnVuY3Rpb25BY3RpdmF0aW9uUExvYywgTGF6eU5vZGUobm9kZS0+Y2hpbGQxKCkubm9kZSgp
KSk7CisgICAgICAgICAgICBpZiAoaXNBcnJvd0Z1bmN0aW9uKQorICAgICAgICAgICAgICAgIHdy
aXRlcy5hZGQoQXJyb3dGdW5jdGlvbkJvdW5kVGhpc1BMb2MsIExhenlOb2RlKG5vZGUtPmNoaWxk
MigpLm5vZGUoKSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIApAQCAtOTgxLDYg
Kzk5NSwxNCBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIG1faGVhcC5lc2NhcGUobm9kZS0+
Y2hpbGQxKCkubm9kZSgpKTsKICAgICAgICAgICAgIGJyZWFrOwogCisgICAgICAgIGNhc2UgTG9h
ZEFycm93RnVuY3Rpb25UaGlzOgorICAgICAgICAgICAgdGFyZ2V0ID0gbV9oZWFwLm9ubHlMb2Nh
bEFsbG9jYXRpb24obm9kZS0+Y2hpbGQxKCkubm9kZSgpKTsKKyAgICAgICAgICAgIGlmICh0YXJn
ZXQgJiYgdGFyZ2V0LT5pc0Fycm93RnVuY3Rpb25BbGxvY2F0aW9uKCkpCisgICAgICAgICAgICAg
ICAgZXhhY3RSZWFkID0gQXJyb3dGdW5jdGlvbkJvdW5kVGhpc1BMb2M7CisgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgbV9oZWFwLmVzY2FwZShub2RlLT5jaGlsZDEoKS5ub2RlKCkp
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIAogICAgICAgICBjYXNlIEdldFNjb3BlOgog
ICAgICAgICAgICAgdGFyZ2V0ID0gbV9oZWFwLm9ubHlMb2NhbEFsbG9jYXRpb24obm9kZS0+Y2hp
bGQxKCkubm9kZSgpKTsKICAgICAgICAgICAgIGlmICh0YXJnZXQgJiYgdGFyZ2V0LT5pc0Z1bmN0
aW9uQWxsb2NhdGlvbigpKQpAQCAtMTQxNCwxMSArMTQzNiwxNCBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgICAgIE9wSW5mbyhzZXQpLCBPcEluZm8oZGF0YSksIDAsIDApOwogICAgICAgICB9CiAK
KyAgICAgICAgY2FzZSBBbGxvY2F0aW9uOjpLaW5kOjpOZXdBcnJvd0Z1bmN0aW9uOgogICAgICAg
ICBjYXNlIEFsbG9jYXRpb246OktpbmQ6OkZ1bmN0aW9uOiB7CiAgICAgICAgICAgICBGcm96ZW5W
YWx1ZSogZXhlY3V0YWJsZSA9IGFsbG9jYXRpb24uaWRlbnRpZmllcigpLT5jZWxsT3BlcmFuZCgp
OwotCisgICAgICAgICAgICAKKyAgICAgICAgICAgIE5vZGVUeXBlIG5vZGVUeXBlID0gYWxsb2Nh
dGlvbi5raW5kKCkgPT0gQWxsb2NhdGlvbjo6S2luZDo6TmV3QXJyb3dGdW5jdGlvbiA/IE5ld0Fy
cm93RnVuY3Rpb24gOiBOZXdGdW5jdGlvbjsKKyAgICAgICAgICAgIAogICAgICAgICAgICAgcmV0
dXJuIG1fZ3JhcGguYWRkTm9kZSgKLSAgICAgICAgICAgICAgICBhbGxvY2F0aW9uLmlkZW50aWZp
ZXIoKS0+cHJlZGljdGlvbigpLCBOZXdGdW5jdGlvbiwKKyAgICAgICAgICAgICAgICBhbGxvY2F0
aW9uLmlkZW50aWZpZXIoKS0+cHJlZGljdGlvbigpLCBub2RlVHlwZSwKICAgICAgICAgICAgICAg
ICBOb2RlT3JpZ2luKAogICAgICAgICAgICAgICAgICAgICBhbGxvY2F0aW9uLmlkZW50aWZpZXIo
KS0+b3JpZ2luLnNlbWFudGljLAogICAgICAgICAgICAgICAgICAgICB3aGVyZS0+b3JpZ2luLmZv
ckV4aXQpLApAQCAtMTcyMiw2ICsxNzQ3LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAg
ICAgICAgIG5vZGUtPmNvbnZlcnRUb1BoYW50b21OZXdPYmplY3QoKTsKICAgICAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwogCisgICAgICAgICAgICAgICAgICAgIGNhc2UgTmV3QXJyb3dGdW5j
dGlvbjoKICAgICAgICAgICAgICAgICAgICAgY2FzZSBOZXdGdW5jdGlvbjoKICAgICAgICAgICAg
ICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb1BoYW50b21OZXdGdW5jdGlvbigpOwogICAgICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0xOTcyLDE4ICsxOTk4LDI3IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICAgICAgZmlyc3RDaGlsZCwgbV9ncmFwaC5tX3ZhckFyZ0NoaWxkcmVuLnNp
emUoKSAtIGZpcnN0Q2hpbGQpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLQotICAg
ICAgICBjYXNlIE5ld0Z1bmN0aW9uOiB7CisgICAgICAgIAorICAgICAgICBjYXNlIE5ld0Z1bmN0
aW9uOgorICAgICAgICBjYXNlIE5ld0Fycm93RnVuY3Rpb246IHsKKyAgICAgICAgICAgIGJvb2wg
aXNBcnJvd0Z1bmN0aW9uID0gbm9kZS0+b3AoKSA9PSBOZXdBcnJvd0Z1bmN0aW9uOwogICAgICAg
ICAgICAgVmVjdG9yPFByb21vdGVkSGVhcExvY2F0aW9uPiBsb2NhdGlvbnMgPSBtX2xvY2F0aW9u
c0ZvckFsbG9jYXRpb24uZ2V0KGVzY2FwZWUpOwotICAgICAgICAgICAgQVNTRVJUKGxvY2F0aW9u
cy5zaXplKCkgPT0gMik7Ci0KKyAgICAgICAgICAgIEFTU0VSVChsb2NhdGlvbnMuc2l6ZSgpID09
IChpc0Fycm93RnVuY3Rpb24gPyAzIDogMikpOworICAgICAgICAgICAgICAgIAogICAgICAgICAg
ICAgUHJvbW90ZWRIZWFwTG9jYXRpb24gZXhlY3V0YWJsZShGdW5jdGlvbkV4ZWN1dGFibGVQTG9j
LCBhbGxvY2F0aW9uLmlkZW50aWZpZXIoKSk7CiAgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKGV4
ZWN1dGFibGUsIGxvY2F0aW9ucy5jb250YWlucyhleGVjdXRhYmxlKSk7Ci0KKyAgICAgICAgICAg
ICAgICAKICAgICAgICAgICAgIFByb21vdGVkSGVhcExvY2F0aW9uIGFjdGl2YXRpb24oRnVuY3Rp
b25BY3RpdmF0aW9uUExvYywgYWxsb2NhdGlvbi5pZGVudGlmaWVyKCkpOwogICAgICAgICAgICAg
QVNTRVJUKGxvY2F0aW9ucy5jb250YWlucyhhY3RpdmF0aW9uKSk7CiAKICAgICAgICAgICAgIG5v
ZGUtPmNoaWxkMSgpID0gRWRnZShyZXNvbHZlKGJsb2NrLCBhY3RpdmF0aW9uKSwgS25vd25DZWxs
VXNlKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKGlzQXJyb3dGdW5jdGlvbikgewor
ICAgICAgICAgICAgICAgIFByb21vdGVkSGVhcExvY2F0aW9uIGJvdW5kVGhpcyhBcnJvd0Z1bmN0
aW9uQm91bmRUaGlzUExvYywgYWxsb2NhdGlvbi5pZGVudGlmaWVyKCkpOworICAgICAgICAgICAg
ICAgIEFTU0VSVChsb2NhdGlvbnMuY29udGFpbnMoYm91bmRUaGlzKSk7CisgICAgICAgICAgICAg
ICAgbm9kZS0+Y2hpbGQyKCkgPSBFZGdlKHJlc29sdmUoYmxvY2ssIGJvdW5kVGhpcyksIENlbGxV
c2UpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRp
Y3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCmluZGV4IDM2ZjJkZjdjNzVjNTBjYWZkMDZl
YzljMjc4NTFlZWE5ZjEwZmZhOTguLjM1NTczNWYwOTIyMWY5NjU1OTNjYWI3ZDE0YjI4MDgxY2Y2
YThhMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlv
blByb3BhZ2F0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCkBAIC0yMTUsNiArMjE1LDcgQEAgcHJpdmF0
ZToKICAgICAgICAgY2FzZSBHZXRHZXR0ZXI6CiAgICAgICAgIGNhc2UgR2V0U2V0dGVyOgogICAg
ICAgICBjYXNlIEdldENhbGxlZToKKyAgICAgICAgY2FzZSBOZXdBcnJvd0Z1bmN0aW9uOgogICAg
ICAgICBjYXNlIE5ld0Z1bmN0aW9uOiB7CiAgICAgICAgICAgICBjaGFuZ2VkIHw9IHNldFByZWRp
Y3Rpb24oU3BlY0Z1bmN0aW9uKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtNTg1LDExICs1ODYs
MTUgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIC8vIFRoZXNlIGRvbid0IGdldCBpbnNlcnRlZCB1
bnRpbCB3ZSBnbyBpbnRvIFNTQS4KICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiAgICAgICAgICAgICBicmVhazsKLQorICAgIAogICAgICAgICBjYXNlIEdldFNjb3Bl
OgogICAgICAgICAgICAgY2hhbmdlZCB8PSBzZXRQcmVkaWN0aW9uKFNwZWNPYmplY3RPdGhlcik7
CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIAorCisgICAgICAgIGNhc2UgTG9hZEFy
cm93RnVuY3Rpb25UaGlzOgorICAgICAgICAgICAgY2hhbmdlZCB8PSBzZXRQcmVkaWN0aW9uKFNw
ZWNGaW5hbE9iamVjdCk7CisgICAgICAgICAgICBicmVhazsKKwogICAgICAgICBjYXNlIEluOgog
ICAgICAgICAgICAgY2hhbmdlZCB8PSBzZXRQcmVkaWN0aW9uKFNwZWNCb29sZWFuKTsKICAgICAg
ICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQ
cm9tb3RlZEhlYXBMb2NhdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1By
b21vdGVkSGVhcExvY2F0aW9uLmNwcAppbmRleCAyNGY2OTc3MGVkYjhkMjRhOTcyNDcwZDQwZjkw
ZTk2ZTU3OGE5OTcyLi44ZmUxNTkxNzNjZWFiMzlkOWM3MTdlZTQ3MDU1NTNmODQ3M2U2NDk4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Byb21vdGVkSGVhcExvY2F0
aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Byb21vdGVkSGVhcExv
Y2F0aW9uLmNwcApAQCAtMTAyLDYgKzEwMiwxMCBAQCB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRT
dHJlYW0mIG91dCwgUHJvbW90ZWRMb2NhdGlvbktpbmQga2luZCkKICAgICBjYXNlIENsb3N1cmVW
YXJQTG9jOgogICAgICAgICBvdXQucHJpbnQoIkNsb3N1cmVWYXJQTG9jIik7CiAgICAgICAgIHJl
dHVybjsKKworICAgIGNhc2UgQXJyb3dGdW5jdGlvbkJvdW5kVGhpc1BMb2M6CisgICAgICAgIG91
dC5wcmludCgiQXJyb3dGdW5jdGlvbkJvdW5kVGhpc1BMb2MiKTsKKyAgICAgICAgcmV0dXJuOwog
ICAgIH0KICAgICAKICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5oCmluZGV4
IGEyMWU0ZGExYWY5YjViMGZiNjA0YzNiMjIzNzA3MWY1MTVmYTY1NGYuLjk3MjkzZjNhMDE4NTJk
MTkxZTc5NWYyMzg4YjYxZjEzMWU5Y2E0ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1Byb21vdGVkSGVhcExvY2F0aW9uLmgKQEAgLTQ3LDYgKzQ3LDcgQEAgZW51
bSBQcm9tb3RlZExvY2F0aW9uS2luZCB7CiAgICAgRnVuY3Rpb25BY3RpdmF0aW9uUExvYywKICAg
ICBBY3RpdmF0aW9uU2NvcGVQTG9jLAogICAgIENsb3N1cmVWYXJQTG9jLAorICAgIEFycm93RnVu
Y3Rpb25Cb3VuZFRoaXNQTG9jCiB9OwogCiBjbGFzcyBQcm9tb3RlZExvY2F0aW9uRGVzY3JpcHRv
ciB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1
dGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCmluZGV4
IGIyZDA3ZDU1ZTUzNjI2ODQ1YjVkM2Y1YzlmZWVhNGU3YmQ4NGRkOTEuLmY3Nzg3ZjQxYjYwNDBh
MmY5NDZkZmFhMzA3MTcxYzA4NTRlNTViMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU2FmZVRvRXhlY3V0ZS5oCkBAIC0xODAsNiArMTgwLDcgQEAgYm9vbCBzYWZlVG9FeGVj
dXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdGF0ZSwgR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQog
ICAgIGNhc2UgQXJyYXlpZnk6CiAgICAgY2FzZSBBcnJheWlmeVRvU3RydWN0dXJlOgogICAgIGNh
c2UgR2V0U2NvcGU6CisgICAgY2FzZSBMb2FkQXJyb3dGdW5jdGlvblRoaXM6CiAgICAgY2FzZSBT
a2lwU2NvcGU6CiAgICAgY2FzZSBHZXRDbG9zdXJlVmFyOgogICAgIGNhc2UgUHV0Q2xvc3VyZVZh
cjoKQEAgLTIzOSw2ICsyNDAsNyBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5
cGUmIHN0YXRlLCBHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBDcmVhdGVDbG9u
ZWRBcmd1bWVudHM6CiAgICAgY2FzZSBHZXRGcm9tQXJndW1lbnRzOgogICAgIGNhc2UgUHV0VG9B
cmd1bWVudHM6CisgICAgY2FzZSBOZXdBcnJvd0Z1bmN0aW9uOgogICAgIGNhc2UgTmV3RnVuY3Rp
b246CiAgICAgY2FzZSBKdW1wOgogICAgIGNhc2UgQnJhbmNoOgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAppbmRleCA0ODRiZjhkNTAwNjg4ODgx
Nzc5OTVkZDJiMWFjOTcyNDUxZmRiZjQ4Li5hOThmZDE3OTQyNTA4ZDE0M2UxYjA4YTc3ODMzZDk5
ODlkNmQ0ZGYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklULmNwcApAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIkRGR1NhbmVTdHJpbmdHZXRC
eVZhbFNsb3dQYXRoR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiREZHU2xvd1BhdGhHZW5lcmF0b3Iu
aCIKICNpbmNsdWRlICJEaXJlY3RBcmd1bWVudHMuaCIKKyNpbmNsdWRlICJKU0Fycm93RnVuY3Rp
b24uaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNFbnZpcm9ubWVudFJl
Y29yZC5oIgogI2luY2x1ZGUgIkpTTGV4aWNhbEVudmlyb25tZW50LmgiCkBAIC00NDc1LDYgKzQ0
NzYsMTUgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldFNjb3BlKE5vZGUqIG5vZGUp
CiAgICAgY2VsbFJlc3VsdChyZXN1bHQuZ3ByKCksIG5vZGUpOwogfQogCisgICAgCit2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlTG9hZEFycm93RnVuY3Rpb25UaGlzKE5vZGUqIG5vZGUpCit7
CisgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgZnVuY3Rpb24odGhpcywgbm9kZS0+Y2hpbGQxKCkp
OworICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcywgUmV1c2UsIGZ1bmN0aW9uKTsKKyAgICBt
X2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKGZ1bmN0aW9uLmdwcigpLCBKU0Fycm93
RnVuY3Rpb246Om9mZnNldE9mVGhpc1ZhbHVlKCkpLCByZXN1bHQuZ3ByKCkpOworICAgIGNlbGxS
ZXN1bHQocmVzdWx0LmdwcigpLCBub2RlKTsKK30KKyAgICAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVTa2lwU2NvcGUoTm9kZSogbm9kZSkKIHsKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFu
ZCBzY29wZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CkBAIC00NjA1LDU1ICs0NjE1LDczIEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDaGVja0lkZW50KE5vZGUqIG5vZGUpCiAgICAgbm9S
ZXN1bHQobm9kZSk7CiB9CiAKK3RlbXBsYXRlIDx0eXBlbmFtZSBDbGFzc1R5cGU+IHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdGdW5jdGlvbkNvbW1vbihHUFJSZWcgcmVzdWx0R1BSLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgR1BSUmVnIHNjcmF0Y2gxR1BSLCBHUFJSZWcgc2NyYXRjaDJH
UFIsIEdQUlJlZyBzY29wZUdQUiwgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0JiBzbG93UGF0aCwg
c2l6ZV90IHNpemUsIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgcHRyZGlmZl90IG9m
ZnNldE9mU2NvcGVDaGFpbiwgcHRyZGlmZl90IG9mZnNldE9mRXhlY3V0YWJsZSwgcHRyZGlmZl90
IG9mZnNldE9mUmFyZURhdGEpCit7CisgICAgZW1pdEFsbG9jYXRlSlNPYmplY3RXaXRoS25vd25T
aXplPENsYXNzVHlwZT4ocmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSksIFRydXN0
ZWRJbW1QdHIoMCksIHNjcmF0Y2gxR1BSLCBzY3JhdGNoMkdQUiwgc2xvd1BhdGgsIHNpemUpOwor
ICAgIAorICAgIG1faml0LnN0b3JlUHRyKHNjb3BlR1BSLCBKSVRDb21waWxlcjo6QWRkcmVzcyhy
ZXN1bHRHUFIsIG9mZnNldE9mU2NvcGVDaGFpbikpOworICAgIG1faml0LnN0b3JlUHRyKFRydXN0
ZWRJbW1QdHIoZXhlY3V0YWJsZSksIEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgb2Zm
c2V0T2ZFeGVjdXRhYmxlKSk7CisgICAgbV9qaXQuc3RvcmVQdHIoVHJ1c3RlZEltbVB0cigwKSwg
SklUQ29tcGlsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBvZmZzZXRPZlJhcmVEYXRhKSk7Cit9CisK
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdGdW5jdGlvbihOb2RlKiBub2RlKQogewor
ICAgIE5vZGVUeXBlIG5vZGVUeXBlID0gbm9kZS0+b3AoKTsKKyAgICBBU1NFUlQobm9kZVR5cGUg
PT0gTmV3RnVuY3Rpb24gfHwgbm9kZVR5cGUgPT0gTmV3QXJyb3dGdW5jdGlvbik7CisgICAgCiAg
ICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgc2NvcGUodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAg
IEdQUlJlZyB0aGlzVmFsdWVHUFI7CiAgICAgR1BSUmVnIHNjb3BlR1BSID0gc2NvcGUuZ3ByKCk7
CiAKICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBub2RlLT5jYXN0T3BlcmFu
ZDxGdW5jdGlvbkV4ZWN1dGFibGUqPigpOwogCisgICAgaWYgKG5vZGVUeXBlID09IE5ld0Fycm93
RnVuY3Rpb24pIHsKKyAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgdGhpc1ZhbHVlKHRoaXMs
IG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgdGhpc1ZhbHVlR1BSID0gdGhpc1ZhbHVlLmdwcigp
OworICAgIH0KKwogICAgIGlmIChleGVjdXRhYmxlLT5zaW5nbGV0b25GdW5jdGlvbigpLT5pc1N0
aWxsVmFsaWQoKSkgewogICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7
CiAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7Ci0KKyAgICAgICAgCiAg
ICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0KLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRp
b25OZXdGdW5jdGlvbiwgcmVzdWx0R1BSLCBzY29wZUdQUiwgZXhlY3V0YWJsZSk7CisgICAgICAg
IAorICAgICAgICBpZiAobm9kZVR5cGUgPT0gTmV3QXJyb3dGdW5jdGlvbikKKyAgICAgICAgICAg
IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTmV3QXJyb3dGdW5jdGlvbiwgcmVzdWx0R1BSLCBzY29w
ZUdQUiwgZXhlY3V0YWJsZSwgdGhpc1ZhbHVlR1BSKTsKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25OZXdGdW5jdGlvbiwgcmVzdWx0R1BSLCBzY29wZUdQ
UiwgZXhlY3V0YWJsZSk7CisgICAgICAgIAogICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwg
bm9kZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSA9IG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKAotICAgICAgICBub2RlLT5vcmlnaW4u
c2VtYW50aWMpLT5mdW5jdGlvblN0cnVjdHVyZSgpOwotCisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUgPSBub2RlVHlwZSA9PSBOZXdBcnJvd0Z1bmN0aW9uCisgICAgICAgID8gbV9qaXQuZ3JhcGgo
KS5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKS0+YXJyb3dGdW5jdGlvblN0
cnVjdHVyZSgpCisgICAgICAgIDogbV9qaXQuZ3JhcGgoKS5nbG9iYWxPYmplY3RGb3Iobm9kZS0+
b3JpZ2luLnNlbWFudGljKS0+ZnVuY3Rpb25TdHJ1Y3R1cmUoKTsKKyAgICAKICAgICBHUFJUZW1w
b3JhcnkgcmVzdWx0KHRoaXMpOwogICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoMSh0aGlzKTsKICAg
ICBHUFJUZW1wb3Jhcnkgc2NyYXRjaDIodGhpcyk7CisgICAgCiAgICAgR1BSUmVnIHJlc3VsdEdQ
UiA9IHJlc3VsdC5ncHIoKTsKICAgICBHUFJSZWcgc2NyYXRjaDFHUFIgPSBzY3JhdGNoMS5ncHIo
KTsKICAgICBHUFJSZWcgc2NyYXRjaDJHUFIgPSBzY3JhdGNoMi5ncHIoKTsKLQorICAgIAogICAg
IEpJVENvbXBpbGVyOjpKdW1wTGlzdCBzbG93UGF0aDsKLSAgICBlbWl0QWxsb2NhdGVKU09iamVj
dFdpdGhLbm93blNpemU8SlNGdW5jdGlvbj4oCi0gICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZElt
bVB0cihzdHJ1Y3R1cmUpLCBUcnVzdGVkSW1tUHRyKDApLAotICAgICAgICBzY3JhdGNoMUdQUiwg
c2NyYXRjaDJHUFIsIHNsb3dQYXRoLCBKU0Z1bmN0aW9uOjphbGxvY2F0aW9uU2l6ZSgwKSk7Ci0K
LSAgICAvLyBEb24ndCBuZWVkIGEgbWVtb3J5IGJhcnJpZXJzIHNpbmNlIHdlIGp1c3QgZmFzdC1j
cmVhdGVkIHRoZSBmdW5jdGlvbiwgc28gaXQKLSAgICAvLyBtdXN0IGJlIHlvdW5nLgotICAgIG1f
aml0LnN0b3JlUHRyKAotICAgICAgICBzY29wZUdQUiwKLSAgICAgICAgSklUQ29tcGlsZXI6OkFk
ZHJlc3MocmVzdWx0R1BSLCBKU0Z1bmN0aW9uOjpvZmZzZXRPZlNjb3BlQ2hhaW4oKSkpOwotICAg
IG1faml0LnN0b3JlUHRyKAotICAgICAgICBUcnVzdGVkSW1tUHRyKGV4ZWN1dGFibGUpLAotICAg
ICAgICBKSVRDb21waWxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIEpTRnVuY3Rpb246Om9mZnNldE9m
RXhlY3V0YWJsZSgpKSk7Ci0gICAgbV9qaXQuc3RvcmVQdHIoCi0gICAgICAgIFRydXN0ZWRJbW1Q
dHIoMCksCi0gICAgICAgIEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNGdW5jdGlv
bjo6b2Zmc2V0T2ZSYXJlRGF0YSgpKSk7Ci0KLQotICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKAot
ICAgICAgICBzbG93UGF0aENhbGwoCi0gICAgICAgICAgICBzbG93UGF0aCwgdGhpcywgb3BlcmF0
aW9uTmV3RnVuY3Rpb25XaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50LCByZXN1
bHRHUFIsIHNjb3BlR1BSLCBleGVjdXRhYmxlKSk7CisgICAgCisgICAgaWYgKG5vZGVUeXBlID09
IE5ld0Z1bmN0aW9uKSB7CisgICAgICAgIGNvbXBpbGVOZXdGdW5jdGlvbkNvbW1vbjxKU0Z1bmN0
aW9uPihyZXN1bHRHUFIsIHN0cnVjdHVyZSwgc2NyYXRjaDFHUFIsIHNjcmF0Y2gyR1BSLCBzY29w
ZUdQUiwgc2xvd1BhdGgsIEpTRnVuY3Rpb246OmFsbG9jYXRpb25TaXplKDApLCBleGVjdXRhYmxl
LCBKU0Z1bmN0aW9uOjpvZmZzZXRPZlNjb3BlQ2hhaW4oKSwgSlNGdW5jdGlvbjo6b2Zmc2V0T2ZF
eGVjdXRhYmxlKCksIEpTRnVuY3Rpb246Om9mZnNldE9mUmFyZURhdGEoKSk7CisgICAgICAgICAg
ICAKKyAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dQYXRoLCB0
aGlzLCBvcGVyYXRpb25OZXdGdW5jdGlvbldpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNo
cG9pbnQsIHJlc3VsdEdQUiwgc2NvcGVHUFIsIGV4ZWN1dGFibGUpKTsKKyAgICB9CisgICAgCisg
ICAgaWYgKG5vZGVUeXBlID09IE5ld0Fycm93RnVuY3Rpb24pIHsKKyAgICAgICAgY29tcGlsZU5l
d0Z1bmN0aW9uQ29tbW9uPEpTQXJyb3dGdW5jdGlvbj4ocmVzdWx0R1BSLCBzdHJ1Y3R1cmUsIHNj
cmF0Y2gxR1BSLCBzY3JhdGNoMkdQUiwgc2NvcGVHUFIsIHNsb3dQYXRoLCBKU0Fycm93RnVuY3Rp
b246OmFsbG9jYXRpb25TaXplKDApLCBleGVjdXRhYmxlLCBKU0Fycm93RnVuY3Rpb246Om9mZnNl
dE9mU2NvcGVDaGFpbigpLCBKU0Fycm93RnVuY3Rpb246Om9mZnNldE9mRXhlY3V0YWJsZSgpLCBK
U0Fycm93RnVuY3Rpb246Om9mZnNldE9mUmFyZURhdGEoKSk7CisgICAgICAgIAorICAgICAgICBt
X2ppdC5zdG9yZVB0cih0aGlzVmFsdWVHUFIsIEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdEdQ
UiwgSlNBcnJvd0Z1bmN0aW9uOjpvZmZzZXRPZlRoaXNWYWx1ZSgpKSk7CisgICAgICAgIAorICAg
ICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoc2xvd1BhdGgsIHRoaXMsIG9w
ZXJhdGlvbk5ld0Fycm93RnVuY3Rpb25XaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBv
aW50LCByZXN1bHRHUFIsIHNjb3BlR1BSLCBleGVjdXRhYmxlLCB0aGlzVmFsdWVHUFIpKTsKKyAg
ICB9CiAKICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKaW5kZXggNTQ1ZmYyYTZlYmQxMGVl
ZjgyYjFmZTdjMjJjY2U5ZjcxN2VkZDE0YS4uODA3YmVjNThjYjg1NzFjYTAwYjYyOWMzMDM5NjRi
Yzc2YTI1OTU0MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQuaApAQCAtMTIxMSw2ICsxMjExLDEyIEBAIHB1YmxpYzoKICAgICAgICAgbV9qaXQuc2V0
dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIFRydXN0ZWRJbW1QdHIoY2VsbCkpOwogICAg
ICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRp
b24sIHJlc3VsdCk7CiAgICAgfQorICAgIAorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVy
YXRpb24oSl9KSVRPcGVyYXRpb25fRUpzY0NKIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BS
UmVnIGFyZzEsIEpTQ2VsbCogY2VsbCwgR1BSUmVnIGFyZzIpCisgICAgeworICAgICAgICBtX2pp
dC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgVHJ1c3RlZEltbVB0cihjZWxsKSwg
YXJnMik7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVz
dWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAgICB9CiAKICAgICBKSVRDb21waWxlcjo6Q2FsbCBj
YWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VXcyBvcGVyYXRpb24sIFdhdGNocG9pbnRTZXQq
IHdhdGNocG9pbnRTZXQpCiAgICAgewpAQCAtMTYxNyw2ICsxNjIzLDExIEBAIHB1YmxpYzoKICAg
ICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIFRydXN0ZWRJbW1Q
dHIoY2VsbCkpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1Nl
dFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CiAgICAgfQorICAg
IEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUpzY0NKIG9w
ZXJhdGlvbiwgR1BSUmVnIHJlc3VsdFRhZywgR1BSUmVnIHJlc3VsdFBheWxvYWQsIEdQUlJlZyBh
cmcxLCBKU0NlbGwqIGNlbGwsIEdQUlJlZyBhcmcyKQorICAgIHsKKyAgICAgICAgbV9qaXQuc2V0
dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIFRydXN0ZWRJbW1QdHIoY2VsbCksIGFyZzIp
OworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChv
cGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CisgICAgfQogICAgIEpJVENvbXBp
bGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRVNzaUNJIG9wZXJhdGlvbiwg
R1BSUmVnIHJlc3VsdFRhZywgR1BSUmVnIHJlc3VsdFBheWxvYWQsIFN0cnVjdHVyZVN0dWJJbmZv
KiBzdHViSW5mbywgR1BSUmVnIGFyZzEsIGNvbnN0IFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpCiAg
ICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZElt
bVB0cihzdHViSW5mbyksIGFyZzEsIFRydXN0ZWRJbW1QdHIodWlkKSk7CkBAIC0yMTg4LDYgKzIx
OTksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjb21waWxlR2V0QnlWYWxPblNjb3BlZEFyZ3VtZW50
cyhOb2RlKik7CiAgICAgCiAgICAgdm9pZCBjb21waWxlR2V0U2NvcGUoTm9kZSopOworICAgIHZv
aWQgY29tcGlsZUxvYWRBcnJvd0Z1bmN0aW9uVGhpcyhOb2RlKik7CiAgICAgdm9pZCBjb21waWxl
U2tpcFNjb3BlKE5vZGUqKTsKIAogICAgIHZvaWQgY29tcGlsZUdldEFycmF5TGVuZ3RoKE5vZGUq
KTsKQEAgLTIyMjEsNiArMjIzMyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbXBpbGVQdXRCeVZh
bEZvckludFR5cGVkQXJyYXkoR1BSUmVnIGJhc2UsIEdQUlJlZyBwcm9wZXJ0eSwgTm9kZSosIFR5
cGVkQXJyYXlUeXBlKTsKICAgICB2b2lkIGNvbXBpbGVHZXRCeVZhbE9uRmxvYXRUeXBlZEFycmF5
KE5vZGUqLCBUeXBlZEFycmF5VHlwZSk7CiAgICAgdm9pZCBjb21waWxlUHV0QnlWYWxGb3JGbG9h
dFR5cGVkQXJyYXkoR1BSUmVnIGJhc2UsIEdQUlJlZyBwcm9wZXJ0eSwgTm9kZSosIFR5cGVkQXJy
YXlUeXBlKTsKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2xhc3NUeXBlPiB2b2lkIGNvbXBpbGVO
ZXdGdW5jdGlvbkNvbW1vbihHUFJSZWcsIFN0cnVjdHVyZSosIEdQUlJlZywgR1BSUmVnLCBHUFJS
ZWcsIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCYsIHNpemVfdCwgRnVuY3Rpb25FeGVjdXRhYmxl
KiwgcHRyZGlmZl90LCBwdHJkaWZmX3QsIHB0cmRpZmZfdCk7CiAgICAgdm9pZCBjb21waWxlTmV3
RnVuY3Rpb24oTm9kZSopOwogICAgIHZvaWQgY29tcGlsZUZvcndhcmRWYXJhcmdzKE5vZGUqKTsK
ICAgICB2b2lkIGNvbXBpbGVDcmVhdGVBY3RpdmF0aW9uKE5vZGUqKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCmluZGV4IDgw
MGI4NzJkZjlkYjBiNmY4MWViNGMyMDM3MTc0YmM5NDZhZDgzODMuLjc1MTIwOTY3OWFjMjlkOTA2
NWQwYjAwMWFjN2EyOWFkOTg3Yjk5ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcApAQCAtMzY4Niw3ICszNjg2LDExIEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICBjYXNlIEdldFNj
b3BlOgogICAgICAgICBjb21waWxlR2V0U2NvcGUobm9kZSk7CiAgICAgICAgIGJyZWFrOwotICAg
ICAgICAKKworICAgIGNhc2UgTG9hZEFycm93RnVuY3Rpb25UaGlzOgorICAgICAgICBjb21waWxl
TG9hZEFycm93RnVuY3Rpb25UaGlzKG5vZGUpOworICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IAogICAgIGNhc2UgU2tpcFNjb3BlOgogICAgICAgICBjb21waWxlU2tpcFNjb3BlKG5vZGUpOwog
ICAgICAgICBicmVhazsKQEAgLTQzMzEsMTEgKzQzMzUsMTIgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBjb21waWxlQ3JlYXRlQ2xvbmVkQXJndW1l
bnRzKG5vZGUpOwogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgICAgIAorCiAgICAgY2FzZSBO
ZXdGdW5jdGlvbjoKKyAgICBjYXNlIE5ld0Fycm93RnVuY3Rpb246CiAgICAgICAgIGNvbXBpbGVO
ZXdGdW5jdGlvbihub2RlKTsKICAgICAgICAgYnJlYWs7Ci0gICAgICAgIAorCiAgICAgY2FzZSBJ
bjoKICAgICAgICAgY29tcGlsZUluKG5vZGUpOwogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCmluZGV4IDUzZGFm
MzRjYTUwODViYTA0Mjk5OTgxOTU2NmFjODAxMmUxOTZiYTUuLmFmZjczMTQwN2Y3MmFlNmU0MWY2
ZDY5YTRiYWViYjc0ZjdlMDhkYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcApAQCAtMzcyOSw3ICszNzI5LDExIEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICBjYXNlIEdldFNjb3BlOgogICAg
ICAgICBjb21waWxlR2V0U2NvcGUobm9kZSk7CiAgICAgICAgIGJyZWFrOwotICAgICAgICAKKyAg
ICAgICAgICAgIAorICAgIGNhc2UgTG9hZEFycm93RnVuY3Rpb25UaGlzOgorICAgICAgICBjb21w
aWxlTG9hZEFycm93RnVuY3Rpb25UaGlzKG5vZGUpOworICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIAogICAgIGNhc2UgU2tpcFNjb3BlOgogICAgICAgICBjb21waWxlU2tpcFNjb3BlKG5vZGUp
OwogICAgICAgICBicmVhazsKQEAgLTQzMzYsMTEgKzQzNDAsMTIgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBjb21waWxlQ3JlYXRlQ2xvbmVkQXJn
dW1lbnRzKG5vZGUpOwogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgICAgIAorCiAgICAgY2Fz
ZSBOZXdGdW5jdGlvbjoKKyAgICBjYXNlIE5ld0Fycm93RnVuY3Rpb246CiAgICAgICAgIGNvbXBp
bGVOZXdGdW5jdGlvbihub2RlKTsKICAgICAgICAgYnJlYWs7Ci0gICAgICAgIAorCiAgICAgY2Fz
ZSBJbjoKICAgICAgICAgY29tcGlsZUluKG5vZGUpOwogICAgICAgICBicmVhazsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhh
c2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRp
b25QaGFzZS5jcHAKaW5kZXggNjZhY2RhMjliNjRmODM4MWEwNjk3NWI5MmI4MzIwY2E4Njk5OGEz
Yi4uZDIwYzVkZGZjNjU5ODIwNDNkYTYxMjBiZDE5ZTU2YTNlNjc0M2U0NyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRp
b25QaGFzZS5jcHAKQEAgLTMwMCw2ICszMDAsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgY2Fz
ZSBDcmVhdGVEaXJlY3RBcmd1bWVudHM6CiAgICAgICAgICAgICBjYXNlIENyZWF0ZVNjb3BlZEFy
Z3VtZW50czoKICAgICAgICAgICAgIGNhc2UgQ3JlYXRlQ2xvbmVkQXJndW1lbnRzOgorICAgICAg
ICAgICAgY2FzZSBOZXdBcnJvd0Z1bmN0aW9uOgogICAgICAgICAgICAgY2FzZSBOZXdGdW5jdGlv
bjoKICAgICAgICAgICAgICAgICAvLyBOb2RlcyB0aGF0IGFsbG9jYXRlIGdldCB0byBzZXQgdGhl
aXIgZXBvY2ggYmVjYXVzZSBmb3IgdGhvc2Ugbm9kZXMgd2Uga25vdwogICAgICAgICAgICAgICAg
IC8vIHRoYXQgdGhleSB3aWxsIGJlIHRoZSBuZXdlc3Qgb2JqZWN0IGluIHRoZSBoZWFwLgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJ1Y3R1cmVSZWdpc3RyYXRp
b25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cnVjdHVyZVJlZ2lz
dHJhdGlvblBoYXNlLmNwcAppbmRleCBhYzkyNzNjZGI2ZDQ4MmI2Y2E1ZGNiZDRjYTZiZDYxZDUw
M2YwYzBmLi43OTE5MDI1MmJkN2I4ZGM1YmY2ZTBhMGQwMjY1NDFmOTYyZGEwNzRiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cnVjdHVyZVJlZ2lzdHJhdGlvblBo
YXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cnVjdHVyZVJlZ2lz
dHJhdGlvblBoYXNlLmNwcApAQCAtMTM1LDcgKzEzNSw5IEBAIHB1YmxpYzoKICAgICAgICAgICAg
ICAgICBjYXNlIE5ld1JlZ2V4cDoKICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXJTdHJ1Y3R1
cmUobV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKS0+cmVnRXhw
U3RydWN0dXJlKCkpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAg
ICAgICAgCisgICAgICAgICAgICAgICAgY2FzZSBOZXdBcnJvd0Z1bmN0aW9uOgorICAgICAgICAg
ICAgICAgICAgICByZWdpc3RlclN0cnVjdHVyZShtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2Rl
LT5vcmlnaW4uc2VtYW50aWMpLT5hcnJvd0Z1bmN0aW9uU3RydWN0dXJlKCkpOworICAgICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICBjYXNlIE5ld0Z1bmN0aW9uOgogICAg
ICAgICAgICAgICAgICAgICByZWdpc3RlclN0cnVjdHVyZShtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5mdW5jdGlvblN0cnVjdHVyZSgpKTsKICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmNwcAppbmRleCBlNDE2ZmRhYWZlZTIyMjlmNjUz
YjlhZTA2MjQ4MDAwOTk5ODc1YTAwLi4zYzM4NjRjYTE4MGFhMzZlNDgwOGMyM2ExMzA2YmUyOGU1
ZDdiOTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0
SGVhcFJlcG9zaXRvcnkuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJz
dHJhY3RIZWFwUmVwb3NpdG9yeS5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2luY2x1ZGUgIkRp
cmVjdEFyZ3VtZW50cy5oIgogI2luY2x1ZGUgIkdldHRlclNldHRlci5oIgorI2luY2x1ZGUgIkpT
QXJyb3dGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTRW52aXJvbm1lbnRSZWNvcmQuaCIKICNpbmNs
dWRlICJKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IuaCIKICNpbmNsdWRlICJKU1Njb3BlLmgiCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9z
aXRvcnkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3Np
dG9yeS5oCmluZGV4IDU4MWY0Y2JkOWE3NjhiOWFiMmE4MzkyMWNmMjRkMzUyNGJjODU3MTguLjcx
MmZkOGRhMjIxZGRkNDgzODJkOTJkYjQwYTBlMjYxYTE3ZjI4NzkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oCkBAIC04
OCw3ICs4OCwxMSBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEZUTCB7CiAgICAgbWFjcm8o
U3RydWN0dXJlX2dsb2JhbE9iamVjdCwgU3RydWN0dXJlOjpnbG9iYWxPYmplY3RPZmZzZXQoKSkg
XAogICAgIG1hY3JvKFN0cnVjdHVyZV9wcm90b3R5cGUsIFN0cnVjdHVyZTo6cHJvdG90eXBlT2Zm
c2V0KCkpIFwKICAgICBtYWNybyhTdHJ1Y3R1cmVfc3RydWN0dXJlSUQsIFN0cnVjdHVyZTo6c3Ry
dWN0dXJlSURPZmZzZXQoKSkgXAotICAgIG1hY3JvKFN5bWJvbF9wcml2YXRlTmFtZSwgU3ltYm9s
OjpvZmZzZXRPZlByaXZhdGVOYW1lKCkpCisgICAgbWFjcm8oU3ltYm9sX3ByaXZhdGVOYW1lLCBT
eW1ib2w6Om9mZnNldE9mUHJpdmF0ZU5hbWUoKSkgXAorICAgIG1hY3JvKEpTQXJyb3dGdW5jdGlv
bl9leGVjdXRhYmxlLCBKU0Fycm93RnVuY3Rpb246Om9mZnNldE9mRXhlY3V0YWJsZSgpKSBcCisg
ICAgbWFjcm8oSlNBcnJvd0Z1bmN0aW9uX3Njb3BlLCBKU0Fycm93RnVuY3Rpb246Om9mZnNldE9m
U2NvcGVDaGFpbigpKSBcCisgICAgbWFjcm8oSlNBcnJvd0Z1bmN0aW9uX3JhcmVEYXRhLCBKU0Fy
cm93RnVuY3Rpb246Om9mZnNldE9mUmFyZURhdGEoKSkgXAorICAgIG1hY3JvKEpTQXJyb3dGdW5j
dGlvbl90aGlzLCBKU0Fycm93RnVuY3Rpb246Om9mZnNldE9mVGhpc1ZhbHVlKCkpCiAKICNkZWZp
bmUgRk9SX0VBQ0hfSU5ERVhFRF9BQlNUUkFDVF9IRUFQKG1hY3JvKSBcCiAgICAgbWFjcm8oRGly
ZWN0QXJndW1lbnRzX3N0b3JhZ2UsIERpcmVjdEFyZ3VtZW50czo6c3RvcmFnZU9mZnNldCgpLCBz
aXplb2YoRW5jb2RlZEpTVmFsdWUpKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TENhcGFiaWxpdGllcy5jcHAKaW5kZXggZTJiMWY0MTk3ZmY4ZTgzNGRkZjQ5MGFlMmQ1MDkyMWI5
ZTJmZWI0Mi4uNzczNzQyMWNlMDZhZGY1MWU4YTgwZThkMTNmM2NhNjJlOWE1YWZkNiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcApAQCAtMTA1LDYg
KzEwNSw3IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiBub2RlKQog
ICAgIGNhc2UgTG9vcEhpbnQ6CiAgICAgY2FzZSBTa2lwU2NvcGU6CiAgICAgY2FzZSBDcmVhdGVB
Y3RpdmF0aW9uOgorICAgIGNhc2UgTmV3QXJyb3dGdW5jdGlvbjoKICAgICBjYXNlIE5ld0Z1bmN0
aW9uOgogICAgIGNhc2UgR2V0Q2xvc3VyZVZhcjoKICAgICBjYXNlIFB1dENsb3N1cmVWYXI6CkBA
IC0xNDEsNiArMTQyLDcgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUq
IG5vZGUpCiAgICAgY2FzZSBDb3VudEV4ZWN1dGlvbjoKICAgICBjYXNlIEdldEV4ZWN1dGFibGU6
CiAgICAgY2FzZSBHZXRTY29wZToKKyAgICBjYXNlIExvYWRBcnJvd0Z1bmN0aW9uVGhpczoKICAg
ICBjYXNlIEdldENhbGxlZToKICAgICBjYXNlIEdldEFyZ3VtZW50Q291bnQ6CiAgICAgY2FzZSBU
b1N0cmluZzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMSW50cmlu
c2ljUmVwb3NpdG9yeS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExJbnRyaW5zaWNS
ZXBvc2l0b3J5LmgKaW5kZXggOWIzNDQxNDE3ZTE2MTY2ZDBlYzFmZDNmNmNlOTZmNzk0NWYyMjhi
NC4uMTI1ZTRmZWNhMzZjNThlMjE2MjU2YTdjNTliMjg0NGVjODVmMDhhZCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExJbnRyaW5zaWNSZXBvc2l0b3J5LmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExJbnRyaW5zaWNSZXBvc2l0b3J5LmgKQEAgLTg2
LDYgKzg2LDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBGVEwgewogICAgIG1hY3JvKEpf
SklUT3BlcmF0aW9uX0VKSSwgZnVuY3Rpb25UeXBlKGludDY0LCBpbnRQdHIsIGludDY0LCBpbnRQ
dHIpKSBcCiAgICAgbWFjcm8oSl9KSVRPcGVyYXRpb25fRUpKLCBmdW5jdGlvblR5cGUoaW50NjQs
IGludFB0ciwgaW50NjQsIGludDY0KSkgXAogICAgIG1hY3JvKEpfSklUT3BlcmF0aW9uX0VKc2ND
LCBmdW5jdGlvblR5cGUoaW50UHRyLCBpbnRQdHIsIGludFB0ciwgaW50UHRyKSkgXAorICAgIG1h
Y3JvKEpfSklUT3BlcmF0aW9uX0VKc2NDSiwgZnVuY3Rpb25UeXBlKGludDY0LCBpbnRQdHIsIGlu
dDY0LCBpbnQ2NCwgaW50NjQpKVwKICAgICBtYWNybyhKX0pJVE9wZXJhdGlvbl9FSnNzWiwgZnVu
Y3Rpb25UeXBlKGludDY0LCBpbnRQdHIsIGludFB0ciwgaW50MzIpKSBcCiAgICAgbWFjcm8oSl9K
SVRPcGVyYXRpb25fRVNzaUpJLCBmdW5jdGlvblR5cGUoaW50NjQsIGludFB0ciwgaW50UHRyLCBp
bnQ2NCwgaW50UHRyKSkgXAogICAgIG1hY3JvKEpzc19KSVRPcGVyYXRpb25fRVosIGZ1bmN0aW9u
VHlwZShpbnRQdHIsIGludFB0ciwgaW50MzIpKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCmluZGV4IGM2MWE3NTFmYzM0ODAxMzRjZGExZjc4
NGQ0MDYwMDI3MGVmZTgzNGEuLmUxM2QwYTY3Mzk1MjdkZDljMzEwNjgwYzBiOTA4NzQ0YzdkNjI2
NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xM
Vk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0u
Y3BwCkBAIC00NCw2ICs0NCw3IEBACiAjaW5jbHVkZSAiRlRMT3V0cHV0LmgiCiAjaW5jbHVkZSAi
RlRMVGh1bmtzLmgiCiAjaW5jbHVkZSAiRlRMV2VpZ2h0ZWRUYXJnZXQuaCIKKyNpbmNsdWRlICJK
U0Fycm93RnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNM
ZXhpY2FsRW52aXJvbm1lbnQuaCIKICNpbmNsdWRlICJPcGVyYW5kc0lubGluZXMuaCIKQEAgLTU5
Myw2ICs1OTQsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgY29tcGlsZUNyZWF0ZUFjdGl2YXRp
b24oKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIE5ld0Z1bmN0aW9uOgorICAg
ICAgICBjYXNlIE5ld0Fycm93RnVuY3Rpb246CiAgICAgICAgICAgICBjb21waWxlTmV3RnVuY3Rp
b24oKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENyZWF0ZURpcmVjdEFyZ3Vt
ZW50czoKQEAgLTY3OCw2ICs2ODAsOSBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIEdldFNjb3Bl
OgogICAgICAgICAgICAgY29tcGlsZUdldFNjb3BlKCk7CiAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgY2FzZSBMb2FkQXJyb3dGdW5jdGlvblRoaXM6CisgICAgICAgICAgICBjb21waWxlTG9h
ZEFycm93RnVuY3Rpb25UaGlzKCk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBT
a2lwU2NvcGU6CiAgICAgICAgICAgICBjb21waWxlU2tpcFNjb3BlKCk7CiAgICAgICAgICAgICBi
cmVhazsKQEAgLTMwOTMsMzggKzMwOTgsNTUgQEAgcHJpdmF0ZToKICAgICAKICAgICB2b2lkIGNv
bXBpbGVOZXdGdW5jdGlvbigpCiAgICAgeworICAgICAgICBBU1NFUlQobV9ub2RlLT5vcCgpID09
IE5ld0Z1bmN0aW9uIHx8IG1fbm9kZS0+b3AoKSA9PSBOZXdBcnJvd0Z1bmN0aW9uKTsKKyAgICAg
ICAgCisgICAgICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uID0gbV9ub2RlLT5vcCgpID09IE5ld0Fy
cm93RnVuY3Rpb247CisgICAgICAgIAogICAgICAgICBMVmFsdWUgc2NvcGUgPSBsb3dDZWxsKG1f
bm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBMVmFsdWUgdGhpc1ZhbHVlID0gaXNBcnJvd0Z1bmN0
aW9uID8gbG93Q2VsbChtX25vZGUtPmNoaWxkMigpKSA6IG51bGxwdHI7CisgICAgICAgIAogICAg
ICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBtX25vZGUtPmNhc3RPcGVyYW5k
PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KCk7CiAgICAgICAgIGlmIChleGVjdXRhYmxlLT5zaW5nbGV0
b25GdW5jdGlvbigpLT5pc1N0aWxsVmFsaWQoKSkgewotICAgICAgICAgICAgTFZhbHVlIGNhbGxS
ZXN1bHQgPSB2bUNhbGwoCi0gICAgICAgICAgICAgICAgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlv
bk5ld0Z1bmN0aW9uKSwgbV9jYWxsRnJhbWUsIHNjb3BlLCB3ZWFrUG9pbnRlcihleGVjdXRhYmxl
KSk7CisgICAgICAgICAgICBMVmFsdWUgY2FsbFJlc3VsdCA9IGlzQXJyb3dGdW5jdGlvbgorICAg
ICAgICAgICAgICAgID8gdm1DYWxsKG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25OZXdBcnJvd0Z1
bmN0aW9uKSwgbV9jYWxsRnJhbWUsIHNjb3BlLCB3ZWFrUG9pbnRlcihleGVjdXRhYmxlKSwgdGhp
c1ZhbHVlKQorICAgICAgICAgICAgICAgIDogdm1DYWxsKG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRp
b25OZXdGdW5jdGlvbiksIG1fY2FsbEZyYW1lLCBzY29wZSwgd2Vha1BvaW50ZXIoZXhlY3V0YWJs
ZSkpOwogICAgICAgICAgICAgc2V0SlNWYWx1ZShjYWxsUmVzdWx0KTsKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUg
PSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyktPmZ1bmN0
aW9uU3RydWN0dXJlKCk7CisgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gaXNBcnJvd0Z1
bmN0aW9uCisgICAgICAgICAgICA/IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3Jp
Z2luLnNlbWFudGljKS0+YXJyb3dGdW5jdGlvblN0cnVjdHVyZSgpCisgICAgICAgICAgICA6IG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKS0+ZnVuY3Rpb25T
dHJ1Y3R1cmUoKTsKICAgICAgICAgCiAgICAgICAgIExCYXNpY0Jsb2NrIHNsb3dQYXRoID0gRlRM
X05FV19CTE9DSyhtX291dCwgKCJOZXdGdW5jdGlvbiBzbG93IHBhdGgiKSk7CiAgICAgICAgIExC
YXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IEZUTF9ORVdfQkxPQ0sobV9vdXQsICgiTmV3RnVuY3Rp
b24gY29udGludWF0aW9uIikpOwogICAgICAgICAKICAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5l
eHQgPSBtX291dC5pbnNlcnROZXdCbG9ja3NCZWZvcmUoc2xvd1BhdGgpOwogICAgICAgICAKLSAg
ICAgICAgTFZhbHVlIGZhc3RPYmplY3QgPSBhbGxvY2F0ZU9iamVjdDxKU0Z1bmN0aW9uPigKLSAg
ICAgICAgICAgIHN0cnVjdHVyZSwgbV9vdXQuaW50UHRyWmVybywgc2xvd1BhdGgpOworICAgICAg
ICBMVmFsdWUgZmFzdE9iamVjdCA9IGlzQXJyb3dGdW5jdGlvbgorICAgICAgICAgICAgPyBhbGxv
Y2F0ZU9iamVjdDxKU0Fycm93RnVuY3Rpb24+KHN0cnVjdHVyZSwgbV9vdXQuaW50UHRyWmVybywg
c2xvd1BhdGgpCisgICAgICAgICAgICA6IGFsbG9jYXRlT2JqZWN0PEpTRnVuY3Rpb24+KHN0cnVj
dHVyZSwgbV9vdXQuaW50UHRyWmVybywgc2xvd1BhdGgpOworICAgICAgICAKICAgICAgICAgCiAg
ICAgICAgIC8vIFdlIGRvbid0IG5lZWQgbWVtb3J5IGJhcnJpZXJzIHNpbmNlIHdlIGp1c3QgZmFz
dC1jcmVhdGVkIHRoZSBmdW5jdGlvbiwgc28gaXQKICAgICAgICAgLy8gbXVzdCBiZSB5b3VuZy4K
LSAgICAgICAgbV9vdXQuc3RvcmVQdHIoc2NvcGUsIGZhc3RPYmplY3QsIG1faGVhcHMuSlNGdW5j
dGlvbl9zY29wZSk7Ci0gICAgICAgIG1fb3V0LnN0b3JlUHRyKHdlYWtQb2ludGVyKGV4ZWN1dGFi
bGUpLCBmYXN0T2JqZWN0LCBtX2hlYXBzLkpTRnVuY3Rpb25fZXhlY3V0YWJsZSk7Ci0gICAgICAg
IG1fb3V0LnN0b3JlUHRyKG1fb3V0LmludFB0clplcm8sIGZhc3RPYmplY3QsIG1faGVhcHMuSlNG
dW5jdGlvbl9yYXJlRGF0YSk7CisgICAgICAgIG1fb3V0LnN0b3JlUHRyKHNjb3BlLCBmYXN0T2Jq
ZWN0LCBpc0Fycm93RnVuY3Rpb24gPyBtX2hlYXBzLkpTQXJyb3dGdW5jdGlvbl9zY29wZSA6IG1f
aGVhcHMuSlNGdW5jdGlvbl9zY29wZSk7CisgICAgICAgIG1fb3V0LnN0b3JlUHRyKHdlYWtQb2lu
dGVyKGV4ZWN1dGFibGUpLCBmYXN0T2JqZWN0LCBpc0Fycm93RnVuY3Rpb24gPyAgbV9oZWFwcy5K
U0Fycm93RnVuY3Rpb25fZXhlY3V0YWJsZSA6IG1faGVhcHMuSlNGdW5jdGlvbl9leGVjdXRhYmxl
KTsKKyAgICAgICAgCisgICAgICAgIGlmIChpc0Fycm93RnVuY3Rpb24pCisgICAgICAgICAgICBt
X291dC5zdG9yZVB0cih0aGlzVmFsdWUsIGZhc3RPYmplY3QsIG1faGVhcHMuSlNBcnJvd0Z1bmN0
aW9uX3RoaXMpOworICAgICAgICAKKyAgICAgICAgbV9vdXQuc3RvcmVQdHIobV9vdXQuaW50UHRy
WmVybywgZmFzdE9iamVjdCwgaXNBcnJvd0Z1bmN0aW9uID8gIG1faGVhcHMuSlNBcnJvd0Z1bmN0
aW9uX3JhcmVEYXRhIDogbV9oZWFwcy5KU0Z1bmN0aW9uX3JhcmVEYXRhKTsKICAgICAgICAgCiAg
ICAgICAgIFZhbHVlRnJvbUJsb2NrIGZhc3RSZXN1bHQgPSBtX291dC5hbmNob3IoZmFzdE9iamVj
dCk7CiAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKICAgICAgICAgCiAgICAgICAg
IG1fb3V0LmFwcGVuZFRvKHNsb3dQYXRoLCBjb250aW51YXRpb24pOwotICAgICAgICBMVmFsdWUg
Y2FsbFJlc3VsdCA9IHZtQ2FsbCgKLSAgICAgICAgICAgIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRp
b25OZXdGdW5jdGlvbldpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNocG9pbnQpLAotICAg
ICAgICAgICAgbV9jYWxsRnJhbWUsIHNjb3BlLCB3ZWFrUG9pbnRlcihleGVjdXRhYmxlKSk7Cisg
ICAgICAgIAorICAgICAgICBMVmFsdWUgY2FsbFJlc3VsdCA9IGlzQXJyb3dGdW5jdGlvbgorICAg
ICAgICAgICAgPyB2bUNhbGwobV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbk5ld0Fycm93RnVuY3Rp
b25XaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KSwgbV9jYWxsRnJhbWUsIHNj
b3BlLCB3ZWFrUG9pbnRlcihleGVjdXRhYmxlKSwgdGhpc1ZhbHVlKQorICAgICAgICAgICAgOiB2
bUNhbGwobV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbk5ld0Z1bmN0aW9uV2l0aEludmFsaWRhdGVk
UmVhbGxvY2F0aW9uV2F0Y2hwb2ludCksIG1fY2FsbEZyYW1lLCBzY29wZSwgd2Vha1BvaW50ZXIo
ZXhlY3V0YWJsZSkpOworICAgICAgICAKICAgICAgICAgVmFsdWVGcm9tQmxvY2sgc2xvd1Jlc3Vs
dCA9IG1fb3V0LmFuY2hvcihjYWxsUmVzdWx0KTsKICAgICAgICAgbV9vdXQuanVtcChjb250aW51
YXRpb24pOwogICAgICAgICAKQEAgLTQwNTYsNiArNDA3OCwxMSBAQCBwcml2YXRlOgogICAgICAg
ICBzZXRKU1ZhbHVlKG1fb3V0LmxvYWRQdHIobG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKSwgbV9o
ZWFwcy5KU0Z1bmN0aW9uX3Njb3BlKSk7CiAgICAgfQogICAgIAorICAgIHZvaWQgY29tcGlsZUxv
YWRBcnJvd0Z1bmN0aW9uVGhpcygpCisgICAgeworICAgICAgICBzZXRKU1ZhbHVlKG1fb3V0Lmxv
YWRQdHIobG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKSwgbV9oZWFwcy5KU0Fycm93RnVuY3Rpb25f
dGhpcykpOworICAgIH0KKyAgICAKICAgICB2b2lkIGNvbXBpbGVTa2lwU2NvcGUoKQogICAgIHsK
ICAgICAgICAgc2V0SlNWYWx1ZShtX291dC5sb2FkUHRyKGxvd0NlbGwobV9ub2RlLT5jaGlsZDEo
KSksIG1faGVhcHMuSlNTY29wZV9uZXh0KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTE9wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExPcGVyYXRpb25zLmNwcAppbmRleCA4Y2RiYzVkMTAxNmVjNWJhNTcyYzUxNGRmNjFmOTEwNmMz
ZGZmYWQ5Li5hOGJkNTdmYmFlODlmMmUwMzFmMWQ3ODZhNjIwMDEyZDY5MTk2MDBkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9wZXJhdGlvbnMuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3BlcmF0aW9ucy5jcHAKQEAgLTE1OSwxNiArMTU5
LDI1IEBAIGV4dGVybiAiQyIgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk1hdGVyaWFs
aXplT2JqZWN0SW5PU1IoCiAgICAgICAgIC8vIEZpZ3VyZSBvdXQgd2hhdCB0aGUgZXhlY3V0YWJs
ZSBhbmQgYWN0aXZhdGlvbiBhcmUKICAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRh
YmxlID0gbnVsbHB0cjsKICAgICAgICAgSlNTY29wZSogYWN0aXZhdGlvbiA9IG51bGxwdHI7Cisg
ICAgICAgIEpTVmFsdWUgYm91bmRUaGlzOworICAgICAgICBib29sIGlzQXJyb3dGdW5jdGlvbiA9
IGZhbHNlOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtYXRlcmlhbGl6YXRpb24tPnByb3Bl
cnRpZXMoKS5zaXplKCk7IGktLTspIHsKICAgICAgICAgICAgIGNvbnN0IEV4aXRQcm9wZXJ0eVZh
bHVlJiBwcm9wZXJ0eSA9IG1hdGVyaWFsaXphdGlvbi0+cHJvcGVydGllcygpW2ldOwogICAgICAg
ICAgICAgaWYgKHByb3BlcnR5LmxvY2F0aW9uKCkgPT0gUHJvbW90ZWRMb2NhdGlvbkRlc2NyaXB0
b3IoRnVuY3Rpb25FeGVjdXRhYmxlUExvYykpCiAgICAgICAgICAgICAgICAgZXhlY3V0YWJsZSA9
IGpzQ2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihKU1ZhbHVlOjpkZWNvZGUodmFsdWVzW2ldKSk7
CiAgICAgICAgICAgICBpZiAocHJvcGVydHkubG9jYXRpb24oKSA9PSBQcm9tb3RlZExvY2F0aW9u
RGVzY3JpcHRvcihGdW5jdGlvbkFjdGl2YXRpb25QTG9jKSkKICAgICAgICAgICAgICAgICBhY3Rp
dmF0aW9uID0ganNDYXN0PEpTU2NvcGUqPihKU1ZhbHVlOjpkZWNvZGUodmFsdWVzW2ldKSk7Cisg
ICAgICAgICAgICBpZiAocHJvcGVydHkubG9jYXRpb24oKSA9PSBQcm9tb3RlZExvY2F0aW9uRGVz
Y3JpcHRvcihBcnJvd0Z1bmN0aW9uQm91bmRUaGlzUExvYykpIHsKKyAgICAgICAgICAgICAgICBp
c0Fycm93RnVuY3Rpb24gPSB0cnVlOworICAgICAgICAgICAgICAgIGJvdW5kVGhpcyA9IEpTVmFs
dWU6OmRlY29kZSh2YWx1ZXNbaV0pOworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAg
IFJFTEVBU0VfQVNTRVJUKGV4ZWN1dGFibGUgJiYgYWN0aXZhdGlvbik7CiAKLSAgICAgICAgSlNG
dW5jdGlvbiogcmVzdWx0ID0gSlNGdW5jdGlvbjo6Y3JlYXRlV2l0aEludmFsaWRhdGVkUmVhbGxv
Y2F0aW9uV2F0Y2hwb2ludCh2bSwgZXhlY3V0YWJsZSwgYWN0aXZhdGlvbik7CisgICAgICAgIAor
ICAgICAgICBKU0Z1bmN0aW9uKiByZXN1bHQgPSBpc0Fycm93RnVuY3Rpb24KKyAgICAgICAgICAg
ID8gSlNBcnJvd0Z1bmN0aW9uOjpjcmVhdGVXaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRj
aHBvaW50KHZtLCBleGVjdXRhYmxlLCBhY3RpdmF0aW9uLCBib3VuZFRoaXMpCisgICAgICAgICAg
ICA6IEpTRnVuY3Rpb246OmNyZWF0ZVdpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNocG9p
bnQodm0sIGV4ZWN1dGFibGUsIGFjdGl2YXRpb24pOwogCiAgICAgICAgIHJldHVybiByZXN1bHQ7
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0lu
dGVycHJldGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnBy
ZXRlci5jcHAKaW5kZXggMGQ1MDgwMzcyYWYyZWIwN2JkNmM5MTAwYjQwNGZmMWVkNWUxOWY4My4u
MGE4MDJiZDM5ZGY5MjAzZDIzY2Q0NGZiMjRjZjdlNDZjODAyYjljYyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCkBAIC00NSw2ICs0
NSw3IEBACiAjaW5jbHVkZSAiRXhjZXB0aW9uSGVscGVycy5oIgogI2luY2x1ZGUgIkdldHRlclNl
dHRlci5oIgogI2luY2x1ZGUgIkpTQXJyYXkuaCIKKyNpbmNsdWRlICJKU0Fycm93RnVuY3Rpb24u
aCIKICNpbmNsdWRlICJKU0JvdW5kRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgi
CiAjaW5jbHVkZSAiSlNMZXhpY2FsRW52aXJvbm1lbnQuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgKaW5kZXggYWQ5ZGY2ZmM3MWQ4ZGQ5MDA1
YzFhM2MxMmVlYzA0MmIzODE5ODQ0OC4uMTg3ZGFiZTUzMzYyZTc5ODViNGJlMDRjN2VmNTViMTIy
ZDFjOWY3MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0lu
dGVycHJldGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVy
cHJldGVyLmgKQEAgLTMxLDYgKzMxLDcgQEAKICNkZWZpbmUgSW50ZXJwcmV0ZXJfaAogCiAjaW5j
bHVkZSAiQXJnTGlzdC5oIgorI2luY2x1ZGUgIkpTQXJyb3dGdW5jdGlvbi5oIgogI2luY2x1ZGUg
IkpTQ0pTVmFsdWUuaCIKICNpbmNsdWRlICJKU0NlbGwuaCIKICNpbmNsdWRlICJKU09iamVjdC5o
IgpAQCAtNTAsNiArNTEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBFeGVjdXRhYmxl
QmFzZTsKICAgICBjbGFzcyBGdW5jdGlvbkV4ZWN1dGFibGU7CiAgICAgY2xhc3MgVk07CisgICAg
Y2xhc3MgSlNBcnJvd0Z1bmN0aW9uOwogICAgIGNsYXNzIEpTRnVuY3Rpb247CiAgICAgY2xhc3Mg
SlNHbG9iYWxPYmplY3Q7CiAgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmgKaW5kZXggNWZhNmI1MzYyZGU5ODdjMzAz
YjBmYTAxNjUyNjBkMDFhMTZiMGZmOC4uNjI0MzhlYjIwMzFiN2JkNjc5YWNkYzM2NTMwYjhjOTg0
MTYzNjk0ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBl
cnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5oCkBAIC05
NTUsNiArOTU1LDcgQEAgcHVibGljOgogICAgICAgICBzZXR1cFN0dWJBcmd1bWVudHMoYXJnMSwg
YXJnMik7CiAgICAgICAgIG1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86
OmFyZ3VtZW50R1BSMCk7CiAgICAgfQorICAgIAogI2VsaWYgQ1BVKEFSTSkKICNpZiBDUFUoQVJN
X0hBUkRGUCkKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHMoRlBSUmVnIGFy
ZzEpCkBAIC05OTEsNiArOTkyLDEzIEBAIHB1YmxpYzoKICAgICAgICAgc2V0dXBTdHViQXJndW1l
bnRzKGFyZzEsIGFyZzIpOwogICAgICAgICBtb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVy
LCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwogICAgIH0KKyAgICAKKyAgICBBTFdBWVNfSU5MSU5F
IHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBUcnVzdGVkSW1t
UHRyIGFyZzIsIEdQUlJlZyBhcmczKQorICAgIHsKKyAgICAgICAgc2V0dXBUd29TdHViQXJnc0dQ
UjxHUFJJbmZvOjphcmd1bWVudEdQUjEsIEdQUkluZm86OmFyZ3VtZW50R1BSMz4oYXJnMSwgYXJn
Myk7CisgICAgICAgIG1vdmUoYXJnMiwgR1BSSW5mbzo6YXJndW1lbnRHUFIyKTsKKyAgICAgICAg
bW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsK
KyAgICB9CiAKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0
YXRlKFRydXN0ZWRJbW0zMiwgRlBSUmVnIGFyZzIsIEdQUlJlZyBhcmczKQogICAgIHsKQEAgLTEw
MzIsNiArMTA0MCwxMyBAQCBwdWJsaWM6CiAgICAgICAgIGFzc2VtYmxlcigpLnZtb3YoR1BSSW5m
bzo6YXJndW1lbnRHUFIzLCBHUFJJbmZvOjpub25BcmdHUFIwLCBhcmczKTsKICAgICAgICAgcG9r
ZShHUFJJbmZvOjpub25BcmdHUFIwKTsKICAgICB9CisgICAgCisgICAgQUxXQVlTX0lOTElORSB2
b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgVHJ1c3RlZEltbVB0
ciBhcmcyLCBHUFJSZWcgYXJnMykKKyAgICB7CisgICAgICAgIHNldHVwVHdvU3R1YkFyZ3NHUFI8
R1BSSW5mbzo6YXJndW1lbnRHUFIxLCBHUFJJbmZvOjphcmd1bWVudEdQUjM+KGFyZzEsIGFyZzMp
OworICAgICAgICBtb3ZlKGFyZzIsIEdQUkluZm86OmFyZ3VtZW50R1BSMik7CisgICAgICAgIG1v
dmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Cisg
ICAgfQogCiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0
ZShUcnVzdGVkSW1tMzIgYXJnMSwgRlBSUmVnIGFyZzIsIEdQUlJlZyBhcmczKQogICAgIHsKQEAg
LTEyMTMsNiArMTIyOCwxMyBAQCBwdWJsaWM6CiAgICAgICAgIG1vdmUoYXJnMSwgR1BSSW5mbzo6
YXJndW1lbnRHUFIyKTsKICAgICAgICAgbW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlciwg
R1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKICAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQg
c2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBUcnVzdGVkSW1tUHRyIGFy
ZzIsIEdQUlJlZyBhcmczKQorICAgIHsKKyAgICAgICAgc2V0dXBUd29TdHViQXJnc0dQUjxHUFJJ
bmZvOjphcmd1bWVudEdQUjEsIEdQUkluZm86OmFyZ3VtZW50R1BSMz4oYXJnMSwgYXJnMyk7Cisg
ICAgICAgIG1vdmUoYXJnMiwgR1BSSW5mbzo6YXJndW1lbnRHUFIyKTsKKyAgICAgICAgbW92ZShH
UFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICB9
CiAjZW5kaWYKIAogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVj
U3RhdGUoR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3Bw
CmluZGV4IDAzOGY1ZDdkYmMwNmFmODEwZjcxYTdkNDI0MGQ3ZmYyZWJhNDBlYjQuLmJiYzg1MjNm
NWJiMjNhMzkzMGMwOTRlZDQ4NjIxNzQ2NGQ4NmM1NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VC5jcHAKQEAgLTIxOSw2ICsyMTksNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFz
cygpCiAgICAgICAgIERFRklORV9PUChvcF9lbmQpCiAgICAgICAgIERFRklORV9PUChvcF9lbnRl
cikKICAgICAgICAgREVGSU5FX09QKG9wX2dldF9zY29wZSkKKyAgICAgICAgREVGSU5FX09QKG9w
X2xvYWRfYXJyb3dmdW5jdGlvbl90aGlzKQogICAgICAgICBERUZJTkVfT1Aob3BfZXEpCiAgICAg
ICAgIERFRklORV9PUChvcF9lcV9udWxsKQogICAgICAgICBjYXNlIG9wX2dldF9ieV9pZF9vdXRf
b2ZfbGluZToKQEAgLTI1OSw2ICsyNjAsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWlu
UGFzcygpCiAgICAgICAgIERFRklORV9PUChvcF9uZXdfYXJyYXlfYnVmZmVyKQogICAgICAgICBE
RUZJTkVfT1Aob3BfbmV3X2Z1bmMpCiAgICAgICAgIERFRklORV9PUChvcF9uZXdfZnVuY19leHAp
CisgICAgICAgIERFRklORV9PUChvcF9uZXdfYXJyb3dfZnVuY19leHApIAogICAgICAgICBERUZJ
TkVfT1Aob3BfbmV3X29iamVjdCkKICAgICAgICAgREVGSU5FX09QKG9wX25ld19yZWdleHApCiAg
ICAgICAgIERFRklORV9PUChvcF9ub3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAppbmRleCA4NDEx
YTdlZjY1YTljNmJkY2MxNmIzNjRlYjI4ZTQxMDE2YjU4NTg2Li43NzFmZDliNDA2NWJkZDE3MjJj
MGU3MmI4ODcyMDhlYzYyZjFlNDRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKQEAgLTQ5OCw2
ICs0OTgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0X29wX2VuZChJbnN0
cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfZW50ZXIoSW5zdHJ1Y3Rpb24qKTsKICAg
ICAgICAgdm9pZCBlbWl0X29wX2dldF9zY29wZShJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lk
IGVtaXRfb3BfbG9hZF9hcnJvd2Z1bmN0aW9uX3RoaXMoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAg
dm9pZCBlbWl0X29wX2VxKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9lcV9u
dWxsKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9nZXRfYnlfaWQoSW5zdHJ1
Y3Rpb24qKTsKQEAgLTUzOSw2ICs1NDAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9p
ZCBlbWl0X29wX25ld19hcnJheV9idWZmZXIoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBl
bWl0X29wX25ld19mdW5jKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9uZXdf
ZnVuY19leHAoSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX25ld19hcnJvd19m
dW5jX2V4cChJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfbmV3X29iamVjdChJ
bnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfbmV3X3JlZ2V4cChJbnN0cnVjdGlv
biopOwogICAgICAgICB2b2lkIGVtaXRfb3Bfbm90KEluc3RydWN0aW9uKik7CkBAIC02NTMsNiAr
NjU1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdFJpZ2h0U2hpZnQoSW5z
dHJ1Y3Rpb24qLCBib29sIGlzVW5zaWduZWQpOwogICAgICAgICB2b2lkIGVtaXRSaWdodFNoaWZ0
U2xvd0Nhc2UoSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiwg
Ym9vbCBpc1Vuc2lnbmVkKTsKIAorICAgICAgICB2b2lkIGVtaXROZXdGdW5jRXhwckNvbW1vbihJ
bnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRWYXJJbmplY3Rpb25DaGVjayhib29sIG5l
ZWRzVmFySW5qZWN0aW9uQ2hlY2tzKTsKICAgICAgICAgdm9pZCBlbWl0UmVzb2x2ZUNsb3N1cmUo
aW50IGRzdCwgaW50IHNjb3BlLCBib29sIG5lZWRzVmFySW5qZWN0aW9uQ2hlY2tzLCB1bnNpZ25l
ZCBkZXB0aCk7CiAgICAgICAgIHZvaWQgZW1pdExvYWRXaXRoU3RydWN0dXJlQ2hlY2soaW50IHNj
b3BlLCBTdHJ1Y3R1cmUqKiBzdHJ1Y3R1cmVTbG90KTsKQEAgLTcyMyw2ICs3MjYsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihK
X0pJVE9wZXJhdGlvbl9FSkpCeSwgaW50LCBHUFJSZWcsIEdQUlJlZywgQnlWYWxJbmZvKik7CiAg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oQ19KSVRPcGVyYXRpb25f
RUpzYywgR1BSUmVnKTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlv
bihKX0pJVE9wZXJhdGlvbl9FSnNjQywgaW50LCBHUFJSZWcsIEpTQ2VsbCopOworICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VKc2NDSiwg
aW50LCBHUFJSZWcsIEpTQ2VsbCosIEdQUlJlZyk7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpD
YWxsIGNhbGxPcGVyYXRpb24oQ19KSVRPcGVyYXRpb25fRUpzY1osIEdQUlJlZywgaW50MzJfdCk7
CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oQ19KSVRPcGVyYXRp
b25fRUpzY1osIGludCwgR1BSUmVnLCBpbnQzMl90KTsKICNpZiBVU0UoSlNWQUxVRTY0KQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaAppbmRleCA1ZDY4NjkwMDgxYzk5NmQ3ZTMz
YmYzYmQyNWRjYzU4YjAzMGY3ZDZjLi5mYmFiMmNjMGYzOTcyNDk1NmJmNTg0OTFiM2RlNzgzYTZm
Y2RjMjM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaApAQCAtMjcxLDYg
KzI3MSwxMiBAQCBBTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpDYWxsIEpJVDo6Y2FsbE9w
ZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FSnNjQyBvcGVyYQogICAgIHJldHVybiBhcHBlbmRDYWxs
V2l0aEV4Y2VwdGlvbkNoZWNrU2V0SlNWYWx1ZVJlc3VsdChvcGVyYXRpb24sIGRzdCk7CiB9CiAK
K0FMV0FZU19JTkxJTkUgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgSklUOjpjYWxsT3BlcmF0aW9uKEpf
SklUT3BlcmF0aW9uX0VKc2NDSiBvcGVyYXRpb24sIGludCBkc3QsIEdQUlJlZyBhcmcxLCBKU0Nl
bGwqIGNlbGwsIEdQUlJlZyBhcmcyKQoreworICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0
ZShhcmcxLCBUcnVzdGVkSW1tUHRyKGNlbGwpLCBhcmcyKTsKKyAgICByZXR1cm4gYXBwZW5kQ2Fs
bFdpdGhFeGNlcHRpb25DaGVja1NldEpTVmFsdWVSZXN1bHQob3BlcmF0aW9uLCBkc3QpOworfQor
ICAgIAogQUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBKSVQ6OmNhbGxPcGVyYXRp
b24oSl9KSVRPcGVyYXRpb25fRVAgb3BlcmF0aW9uLCBpbnQgZHN0LCB2b2lkKiBwb2ludGVyKQog
ewogICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKHBvaW50ZXIp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCmluZGV4IDU5OGQ0ZWM5
OWMxZDE4ZTZjMzk2MjExOTcyMGFjZWFjMWVlMmZhNmQuLmM4M2JjYzhjNDVkZTY2NmY3M2M5ZTkx
MWY1MTQyOWYzNWViMTEzNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3Bjb2Rlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVz
LmNwcApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIkhlYXAuaCIKICNpbmNsdWRlICJKSVRJ
bmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNBcnJheS5oIgorI2luY2x1ZGUgIkpTQXJyb3dGdW5jdGlv
bi5oIgogI2luY2x1ZGUgIkpTQ2VsbC5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNs
dWRlICJKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IuaCIKQEAgLTY3Myw2ICs2NzQsMTQgQEAgdm9p
ZCBKSVQ6OmVtaXRfb3BfZ2V0X3Njb3BlKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
CiAgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU0Z1bmN0aW9uOjpvZmZzZXRPZlNjb3BlQ2hh
aW4oKSksIHJlZ1QwKTsKICAgICBlbWl0U3RvcmVDZWxsKGRzdCwgcmVnVDApOwogfQorICAgIAor
dm9pZCBKSVQ6OmVtaXRfb3BfbG9hZF9hcnJvd2Z1bmN0aW9uX3RoaXMoSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAgICBpbnQgZHN0ID0gY3VycmVudEluc3RydWN0aW9uWzFd
LnUub3BlcmFuZDsKKyAgICBlbWl0R2V0RnJvbUNhbGxGcmFtZUhlYWRlclB0cihKU1N0YWNrOjpD
YWxsZWUsIHJlZ1QwKTsKKyAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTQXJyb3dGdW5jdGlv
bjo6b2Zmc2V0T2ZUaGlzVmFsdWUoKSksIHJlZ1QwKTsKKyAgICBlbWl0U3RvcmVDZWxsKGRzdCwg
cmVnVDApOworfQogCiB2b2lkIEpJVDo6ZW1pdF9vcF90b190aGlzKEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCiB7CkBAIC05NjIsMjYgKzk3MSw0NSBAQCB2b2lkIEpJVDo6ZW1pdF9v
cF9uZXdfZnVuYyhJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogCiB2b2lkIEpJVDo6
ZW1pdF9vcF9uZXdfZnVuY19leHAoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsK
KyAgICBlbWl0TmV3RnVuY0V4cHJDb21tb24oY3VycmVudEluc3RydWN0aW9uKTsKK30KKyAgICAK
K3ZvaWQgSklUOjplbWl0TmV3RnVuY0V4cHJDb21tb24oSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKK3sKKyAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IG1fdm0tPmludGVycHJldGVyLT5n
ZXRPcGNvZGVJRChjdXJyZW50SW5zdHJ1Y3Rpb24tPnUub3Bjb2RlKTsKKyAgICBib29sIGlzQXJy
b3dGdW5jdGlvbiA9IG9wY29kZUlEID09IG9wX25ld19hcnJvd19mdW5jX2V4cDsKKyAgICAKICAg
ICBKdW1wIG5vdFVuZGVmaW5lZFNjb3BlOwogICAgIGludCBkc3QgPSBjdXJyZW50SW5zdHJ1Y3Rp
b25bMV0udS5vcGVyYW5kOwogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgZW1pdEdldFZpcnR1YWxS
ZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kLCByZWdUMCk7CisgICAgaWYg
KGlzQXJyb3dGdW5jdGlvbikKKyAgICAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihjdXJyZW50
SW5zdHJ1Y3Rpb25bNF0udS5vcGVyYW5kLCByZWdUMSk7CiAgICAgbm90VW5kZWZpbmVkU2NvcGUg
PSBicmFuY2g2NChOb3RFcXVhbCwgcmVnVDAsIFRydXN0ZWRJbW02NChKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSkpKTsKICAgICBzdG9yZTY0KFRydXN0ZWRJbW02NChKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSkpLCBBZGRyZXNzKGNhbGxGcmFtZVJlZ2lzdGVyLCBzaXplb2YoUmVn
aXN0ZXIpICogZHN0KSk7CiAjZWxzZQogICAgIGVtaXRMb2FkUGF5bG9hZChjdXJyZW50SW5zdHJ1
Y3Rpb25bMl0udS5vcGVyYW5kLCByZWdUMCk7CisgICAgaWYgKGlzQXJyb3dGdW5jdGlvbikKKyAg
ICAgICAgZW1pdExvYWRQYXlsb2FkKGN1cnJlbnRJbnN0cnVjdGlvbls0XS51Lm9wZXJhbmQsIHJl
Z1QxKTsKICAgICBub3RVbmRlZmluZWRTY29wZSA9IGJyYW5jaDMyKE5vdEVxdWFsLCB0YWdGb3Io
Y3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCksIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpV
bmRlZmluZWRUYWcpKTsKICAgICBlbWl0U3RvcmUoZHN0LCBqc1VuZGVmaW5lZCgpKTsKICNlbmRp
ZgotCiAgICAgSnVtcCBkb25lID0ganVtcCgpOwogICAgIG5vdFVuZGVmaW5lZFNjb3BlLmxpbmso
dGhpcyk7Ci0KLSAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmNFeHByID0gbV9jb2RlQmxvY2st
PmZ1bmN0aW9uRXhwcihjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kKTsKLSAgICBjYWxs
T3BlcmF0aW9uKG9wZXJhdGlvbk5ld0Z1bmN0aW9uLCBkc3QsIHJlZ1QwLCBmdW5jRXhwcik7Cisg
ICAgICAgIAorICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb24gPSBtX2NvZGVCbG9jay0+
ZnVuY3Rpb25FeHByKGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQpOworICAgIGlmIChp
c0Fycm93RnVuY3Rpb24pCisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTmV3QXJyb3dG
dW5jdGlvbiwgZHN0LCByZWdUMCwgZnVuY3Rpb24sIHJlZ1QxKTsKKyAgICBlbHNlCisgICAgICAg
IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTmV3RnVuY3Rpb24sIGRzdCwgcmVnVDAsIGZ1bmN0aW9u
KTsKICAgICBkb25lLmxpbmsodGhpcyk7CiB9Ci0KKyAgICAKK3ZvaWQgSklUOjplbWl0X29wX25l
d19hcnJvd19mdW5jX2V4cChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQoreworICAg
IGVtaXROZXdGdW5jRXhwckNvbW1vbihjdXJyZW50SW5zdHJ1Y3Rpb24pOworfQorICAgIAogdm9p
ZCBKSVQ6OmVtaXRfb3BfbmV3X2FycmF5KEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
CiB7CiAgICAgaW50IGRzdCA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAKaW5kZXggOTFjMDBl
M2ZkNDVlMDk3ZTNiYjFjMzc5ZDdjOTAzZjBmZDYyMDk5YS4uYjM5YWUxZDFhMzA2ODAzNDNlOWZk
OWE3MjMxNDI5YjZlNTQ0MTBhNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGNvZGVzMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3Bjb2RlczMyXzY0LmNwcApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIkV4Y2VwdGlvbi5o
IgogI2luY2x1ZGUgIkpJVElubGluZXMuaCIKICNpbmNsdWRlICJKU0FycmF5LmgiCisjaW5jbHVk
ZSAiSlNBcnJvd0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNDZWxsLmgiCiAjaW5jbHVkZSAiSlNF
bnZpcm9ubWVudFJlY29yZC5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKQEAgLTkyMiw2ICs5
MjMsMTQgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X3Njb3BlKEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdFN0b3JlQ2VsbChkc3QsIHJlZ1QwKTsKIH0KIAordm9pZCBK
SVQ6OmVtaXRfb3BfbG9hZF9hcnJvd2Z1bmN0aW9uX3RoaXMoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKK3sKKyAgICBpbnQgZHN0ID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3Bl
cmFuZDsKKyAgICBlbWl0R2V0RnJvbUNhbGxGcmFtZUhlYWRlclB0cihKU1N0YWNrOjpDYWxsZWUs
IHJlZ1QwKTsKKyAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTQXJyb3dGdW5jdGlvbjo6b2Zm
c2V0T2ZUaGlzVmFsdWUoKSksIHJlZ1QwKTsKKyAgICBlbWl0U3RvcmVDZWxsKGRzdCwgcmVnVDAp
OworfQorCiB2b2lkIEpJVDo6ZW1pdF9vcF9jcmVhdGVfdGhpcyhJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uKQogewogICAgIGludCBjYWxsZWUgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0u
dS5vcGVyYW5kOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVy
YXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAK
aW5kZXggYjVmOWUzNjlhN2U1N2JhZmYwNDZkMmEzNjVkYmMwMjRjZGNkYjkzYi4uNGZmMGUzZDE1
MGI0MjYwZWY5NGIyMWUzY2JhMGYyMzEyZmI0MzhiNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCkBAIC00Myw2ICs0Myw3IEBACiAjaW5jbHVkZSAiSG9z
dENhbGxSZXR1cm5WYWx1ZS5oIgogI2luY2x1ZGUgIkpJVC5oIgogI2luY2x1ZGUgIkpJVFRvREZH
RGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrLmgiCisjaW5jbHVkZSAiSlNBcnJvd0Z1bmN0aW9u
LmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0RnVu
Y3Rpb25zLmgiCiAjaW5jbHVkZSAiSlNMZXhpY2FsRW52aXJvbm1lbnQuaCIKQEAgLTk0Miw2ICs5
NDMsMzAgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdGdW5jdGlv
bldpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGMKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKEpTRnVuY3Rpb246OmNyZWF0ZVdpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNocG9p
bnQodm0sIHN0YXRpY19jYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KGZ1bmN0aW9uRXhlY3V0YWJs
ZSksIHNjb3BlKSk7CiB9CiAKK0VuY29kZWRKU1ZhbHVlIHN0YXRpYyBvcGVyYXRpb25OZXdGdW5j
dGlvbkNvbW1vbihFeGVjU3RhdGUqIGV4ZWMsIEpTU2NvcGUqIHNjb3BlLCBKU0NlbGwqIGZ1bmN0
aW9uRXhlY3V0YWJsZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBib29sIGlzSW52YWxpZGF0
ZWQpCit7CisgICAgQVNTRVJUKGZ1bmN0aW9uRXhlY3V0YWJsZS0+aW5oZXJpdHMoRnVuY3Rpb25F
eGVjdXRhYmxlOjppbmZvKCkpKTsKKyAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUg
PSBzdGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihmdW5jdGlvbkV4ZWN1dGFibGUpOwor
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNl
cigmdm0sIGV4ZWMpOworICAgICAgICAKKyAgICBKU0Fycm93RnVuY3Rpb24qIGFycm93RnVuY3Rp
b24gID0gaXNJbnZhbGlkYXRlZAorICAgICAgICA/IEpTQXJyb3dGdW5jdGlvbjo6Y3JlYXRlV2l0
aEludmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludCh2bSwgZXhlY3V0YWJsZSwgc2NvcGUs
IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKQorICAgICAgICA6IEpTQXJyb3dGdW5jdGlvbjo6
Y3JlYXRlKHZtLCBleGVjdXRhYmxlLCBzY29wZSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkp
OworICAgIAorICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoYXJyb3dGdW5jdGlvbik7Cit9Cisg
ICAgCitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0Fycm93RnVuY3Rp
b25XaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KEV4ZWNTdGF0ZSogZXhlYywg
SlNTY29wZSogc2NvcGUsIEpTQ2VsbCogZnVuY3Rpb25FeGVjdXRhYmxlLCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUpCit7CisgICAgcmV0dXJuIG9wZXJhdGlvbk5ld0Z1bmN0aW9uQ29tbW9uKGV4
ZWMsIHNjb3BlLCBmdW5jdGlvbkV4ZWN1dGFibGUsIHRoaXNWYWx1ZSwgdHJ1ZSk7Cit9CisgICAg
CitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0Fycm93RnVuY3Rpb24o
RXhlY1N0YXRlKiBleGVjLCBKU1Njb3BlKiBzY29wZSwgSlNDZWxsKiBmdW5jdGlvbkV4ZWN1dGFi
bGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSkKK3sKKyAgICByZXR1cm4gb3BlcmF0aW9uTmV3
RnVuY3Rpb25Db21tb24oZXhlYywgc2NvcGUsIGZ1bmN0aW9uRXhlY3V0YWJsZSwgdGhpc1ZhbHVl
LCBmYWxzZSk7Cit9CisKIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdPYmplY3Qo
RXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHsKICAgICBWTSogdm0gPSAm
ZXhlYy0+dm0oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bl
cmF0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKaW5k
ZXggM2Q4M2Y1OTBkY2Y5MTgwM2EzNDQ4YmEwODNiMmY5MmJjYmU4NGY5Yi4uYTY3Y2FhY2IzMmZi
MjE1OGE5YzA1ZTZhNTA5NjIxYjNiODNlOGU3ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGVyYXRpb25zLmgKQEAgLTEyMiw2ICsxMjIsNyBAQCB0eXBlZGVmIEVuY29kZWRKU1Zh
bHVlIEpJVF9PUEVSQVRJT04gKCpKX0pJVE9wZXJhdGlvbl9FUFApKEV4ZWNTdGF0ZSosIHZvaWQq
LCB2bwogdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OICgqSl9KSVRPcGVyYXRp
b25fRVBTKShFeGVjU3RhdGUqLCB2b2lkKiwgc2l6ZV90KTsKIHR5cGVkZWYgRW5jb2RlZEpTVmFs
dWUgSklUX09QRVJBVElPTiAoKkpfSklUT3BlcmF0aW9uX0VQYykoRXhlY1N0YXRlKiwgSW5zdHJ1
Y3Rpb24qKTsKIHR5cGVkZWYgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiAoKkpfSklUT3Bl
cmF0aW9uX0VKc2NDKShFeGVjU3RhdGUqLCBKU1Njb3BlKiwgSlNDZWxsKik7Cit0eXBlZGVmIEVu
Y29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gKCpKX0pJVE9wZXJhdGlvbl9FSnNjQ0opKEV4ZWNT
dGF0ZSosIEpTU2NvcGUqLCBKU0NlbGwqLCBFbmNvZGVkSlNWYWx1ZSk7CiB0eXBlZGVmIEVuY29k
ZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gKCpKX0pJVE9wZXJhdGlvbl9FU1MpKEV4ZWNTdGF0ZSos
IHNpemVfdCwgc2l6ZV90KTsKIHR5cGVkZWYgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiAo
KkpfSklUT3BlcmF0aW9uX0VTc2lDSSkoRXhlY1N0YXRlKiwgU3RydWN0dXJlU3R1YkluZm8qLCBK
U0NlbGwqLCBVbmlxdWVkU3RyaW5nSW1wbCopOwogdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSBKSVRf
T1BFUkFUSU9OICgqSl9KSVRPcGVyYXRpb25fRVNzaUpJKShFeGVjU3RhdGUqLCBTdHJ1Y3R1cmVT
dHViSW5mbyosIEVuY29kZWRKU1ZhbHVlLCBVbmlxdWVkU3RyaW5nSW1wbCopOwpAQCAtMjg4LDYg
KzI4OSw4IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3QXJyYXlC
dWZmZXJXaXRoUHJvZmlsZShFeGVjU3RhdGUqLCBBcnJhCiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbk5ld0FycmF5V2l0aFNpemVBbmRQcm9maWxlKEV4ZWNTdGF0ZSosIEFy
cmF5QWxsb2NhdGlvblByb2ZpbGUqLCBFbmNvZGVkSlNWYWx1ZSBzaXplKSBXVEZfSU5URVJOQUw7
CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0Z1bmN0aW9uKEV4ZWNT
dGF0ZSosIEpTU2NvcGUqLCBKU0NlbGwqKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0Z1bmN0aW9uV2l0aEludmFsaWRhdGVkUmVhbGxvY2F0
aW9uV2F0Y2hwb2ludChFeGVjU3RhdGUqLCBKU1Njb3BlKiwgSlNDZWxsKikgV1RGX0lOVEVSTkFM
OworRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdBcnJvd0Z1bmN0aW9u
KEV4ZWNTdGF0ZSosIEpTU2NvcGUqLCBKU0NlbGwqLCBFbmNvZGVkSlNWYWx1ZSkgV1RGX0lOVEVS
TkFMOworRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdBcnJvd0Z1bmN0
aW9uV2l0aEludmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludChFeGVjU3RhdGUqLCBKU1Nj
b3BlKiwgSlNDZWxsKiwgRW5jb2RlZEpTVmFsdWUpIFdURl9JTlRFUk5BTDsKIEpTQ2VsbCogSklU
X09QRVJBVElPTiBvcGVyYXRpb25OZXdPYmplY3QoRXhlY1N0YXRlKiwgU3RydWN0dXJlKikgV1RG
X0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdSZWdl
eHAoRXhlY1N0YXRlKiwgdm9pZCopIFdURl9JTlRFUk5BTDsKIHZvaWQgSklUX09QRVJBVElPTiBv
cGVyYXRpb25IYW5kbGVXYXRjaGRvZ1RpbWVyKEV4ZWNTdGF0ZSopIFdURl9JTlRFUk5BTDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0
b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rv
ci5jcHAKaW5kZXggMmQ0Njc3YzY2NTU3YmJjYzVlNGQxMDllZjliMDEzOGQ5YTgzZjFlYy4uYTJh
NmIyYjExYzU2ODFlMGI2ZTk3MGM0ZmQxMWM5NmUxOWRiOTNkYSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAKQEAgLTM2
LDYgKzM2LDcgQEAKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkpJVFN0dWJz
LmgiCiAjaW5jbHVkZSAiSlNBcnJheS5oIgorI2luY2x1ZGUgIkpTQXJyb3dGdW5jdGlvbi5oIgog
I2luY2x1ZGUgIkpTQ2VsbC5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJW
TS5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1Bh
dGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAK
aW5kZXggNTViODFlZTBmNzhmYTdhZDlhMjBkY2Q0NzY4MTJiNDFmNTY4NWQ3Zi4uMmNkOWY2ZWI4
ZDY4Mzg2ODcwOTdjNGVjY2U3OTIxNTkxNTEwMWYwMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCkBAIC0zOSw2ICszOSw3IEBACiAjaW5jbHVk
ZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJKSVQuaCIKICNpbmNsdWRlICJKSVRFeGNlcHRp
b25zLmgiCisjaW5jbHVkZSAiSlNBcnJvd0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNMZXhpY2Fs
RW52aXJvbm1lbnQuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDSlNW
YWx1ZS5oIgpAQCAtMTcxLDcgKzE3Miw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgTExJ
bnQgewogICAgICAgICBFeGVjU3RhdGUqIF9fcmNmX2V4ZWMgPSAoZXhlY0NhbGxlZSk7ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICBMTElOVF9SRVRVUk5fVFdPKHBjLCBfX3Jj
Zl9leGVjKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIH0gd2hpbGUgKGZh
bHNlKQotCisgICAgCiBleHRlcm4gIkMiIFNsb3dQYXRoUmV0dXJuVHlwZSBsbGludF90cmFjZV9v
cGVyYW5kKEV4ZWNTdGF0ZSogZXhlYywgSW5zdHJ1Y3Rpb24qIHBjLCBpbnQgZnJvbVdoZXJlLCBp
bnQgb3BlcmFuZCkKIHsKICAgICBMTElOVF9CRUdJTigpOwpAQCAtMTAxMywxMiArMTAxNCwyNCBA
QCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfbmV3X2Z1bmMpCiBMTElOVF9TTE9XX1BB
VEhfREVDTChzbG93X3BhdGhfbmV3X2Z1bmNfZXhwKQogewogICAgIExMSU5UX0JFR0lOKCk7Cisg
ICAgCiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKICAgICBK
U1Njb3BlKiBzY29wZSA9IGV4ZWMtPnVuY2hlY2tlZFIocGNbMl0udS5vcGVyYW5kKS5SZWdpc3Rl
cjo6c2NvcGUoKTsKLSAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uID0gY29kZUJsb2Nr
LT5mdW5jdGlvbkV4cHIocGNbM10udS5vcGVyYW5kKTsKLSAgICBKU0Z1bmN0aW9uKiBmdW5jID0g
SlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBmdW5jdGlvbiwgc2NvcGUpOworICAgIEZ1bmN0aW9uRXhl
Y3V0YWJsZSogZXhlY3V0YWJsZSA9IGNvZGVCbG9jay0+ZnVuY3Rpb25FeHByKHBjWzNdLnUub3Bl
cmFuZCk7CiAgICAgCi0gICAgTExJTlRfUkVUVVJOKGZ1bmMpOworICAgIExMSU5UX1JFVFVSTihK
U0Z1bmN0aW9uOjpjcmVhdGUodm0sIGV4ZWN1dGFibGUsIHNjb3BlKSk7Cit9CisKK0xMSU5UX1NM
T1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9uZXdfYXJyb3dfZnVuY19leHApCit7CisgICAgTExJTlRf
QkVHSU4oKTsKKworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gTExJTlRfT1BfQyg0KS5qc1ZhbHVl
KCk7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICBK
U1Njb3BlKiBzY29wZSA9IGV4ZWMtPnVuY2hlY2tlZFIocGNbMl0udS5vcGVyYW5kKS5SZWdpc3Rl
cjo6c2NvcGUoKTsKKyAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBjb2RlQmxv
Y2stPmZ1bmN0aW9uRXhwcihwY1szXS51Lm9wZXJhbmQpOworICAgIAorICAgIExMSU5UX1JFVFVS
TihKU0Fycm93RnVuY3Rpb246OmNyZWF0ZSh2bSwgZXhlY3V0YWJsZSwgc2NvcGUsIHRoaXNWYWx1
ZSkpOwogfQogCiBzdGF0aWMgU2xvd1BhdGhSZXR1cm5UeXBlIGhhbmRsZUhvc3RDYWxsKEV4ZWNT
dGF0ZSogZXhlY0NhbGxlZSwgSW5zdHJ1Y3Rpb24qIHBjLCBKU1ZhbHVlIGNhbGxlZSwgQ29kZVNw
ZWNpYWxpemF0aW9uS2luZCBraW5kKQpAQCAtMTA5Niw3ICsxMTA5LDcgQEAgaW5saW5lIFNsb3dQ
YXRoUmV0dXJuVHlwZSBzZXRVcENhbGwoRXhlY1N0YXRlKiBleGVjQ2FsbGVlLCBJbnN0cnVjdGlv
biogcGMsIENvZGUKICAgICBKU1Njb3BlKiBzY29wZSA9IGNhbGxlZS0+c2NvcGVVbmNoZWNrZWQo
KTsKICAgICBWTSYgdm0gPSAqc2NvcGUtPnZtKCk7CiAgICAgRXhlY3V0YWJsZUJhc2UqIGV4ZWN1
dGFibGUgPSBjYWxsZWUtPmV4ZWN1dGFibGUoKTsKLSAgICAKKwogICAgIE1hY3JvQXNzZW1ibGVy
Q29kZVB0ciBjb2RlUHRyOwogICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gMDsKICAgICBpZiAo
ZXhlY3V0YWJsZS0+aXNIb3N0RnVuY3Rpb24oKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xMSW50U2xvd1BhdGhzLmgKaW5kZXggOGNjNjlhOTYwMGJiZjlkODUzMzlkNjA5NTk1ZjY3
YzY4ZDA3NjcxYi4uM2YxZGFhODEyYjcwMmUyM2M2YWFlZjlmZDdjMDY3MWVlMjAyNWMwYyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmgKQEAgLTk3LDYg
Kzk3LDcgQEAgTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9zd2l0Y2hfY2hh
cik7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3N3aXRjaF9zdHJpbmcp
OwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9uZXdfZnVuYyk7CiBMTElO
VF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX25ld19mdW5jX2V4cCk7CitMTElOVF9T
TE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX25ld19hcnJvd19mdW5jX2V4cCk7CiBMTElO
VF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2NhbGwpOwogTExJTlRfU0xPV19QQVRI
X0hJRERFTl9ERUNMKHNsb3dfcGF0aF9jb25zdHJ1Y3QpOwogTExJTlRfU0xPV19QQVRIX0hJRERF
Tl9ERUNMKHNsb3dfcGF0aF9zaXplX2ZyYW1lX2Zvcl92YXJhcmdzKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbSBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQppbmRleCBjOTEw
NjE3ZWQ4MzRiNzRjOWYyZjhlZTRiMjY4N2M4YjljZmUzYzdjLi43M2ZjNTg4NDQyZGRjNGI5Y2Zh
N2I4OGYwMDRjYTg2NzNlNDk5YTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCkBAIC0xMTgzLDYgKzExODMsMTAgQEAgX2xs
aW50X29wX25ld19mdW5jX2V4cDoKICAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9u
ZXdfZnVuY19leHApCiAgICAgZGlzcGF0Y2goNCkKIAorX2xsaW50X29wX25ld19hcnJvd19mdW5j
X2V4cDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93
X3BhdGhfbmV3X2Fycm93X2Z1bmNfZXhwKQorICAgIGRpc3BhdGNoKDUpCiAKIF9sbGludF9vcF9j
YWxsOgogICAgIHRyYWNlRXhlY3V0aW9uKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KaW5kZXggZTkwZWNlZGZh
NzMwOTgyZmVlZjcxZWViMGNlYTY0MzgyMzRhNjkxYy4uN2VmNmI4N2MxNzBhZDA4M2IxZjUyOWRh
ODgzNmMwMGNkYTY0YjQ3OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KQEAgLTIzNzMsMyArMjM3MywxMiBA
QCBfbGxpbnRfb3BfcHJvZmlsZV90eXBlOgogCiAub3BQcm9maWxlVHlwZURvbmU6CiAgICAgZGlz
cGF0Y2goNikKKworX2xsaW50X29wX2xvYWRfYXJyb3dmdW5jdGlvbl90aGlzOgorICAgIHRyYWNl
RXhlY3V0aW9uKCkKKyAgICBsb2FkaSBDYWxsZWUgKyBQYXlsb2FkT2Zmc2V0W2Nmcl0sIHQwCisg
ICAgbG9hZGkgSlNBcnJvd0Z1bmN0aW9uOjptX2JvdW5kVGhpc1t0MF0sIHQwCisgICAgbG9hZGlz
RnJvbUluc3RydWN0aW9uKDEsIHQxKQorICAgIHN0b3JlaSBDZWxsVGFnLCBUYWdPZmZzZXRbY2Zy
LCB0MSwgOF0KKyAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBk
aXNwYXRjaCgyKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KaW5kZXggZDk0
NTVmNzVjN2I2NjQyZmI4Yzg3MjNmYzE1MmEzNzkwOTEwM2I1Yi4uZDIxNTJhMmYyNzdhZGU1ODc5
NzZhMWMzZjEyMDIzNzI5YjM4YTU5YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KQEAgLTIyMjYsMyArMjIyNiwxMSBA
QCBfbGxpbnRfb3BfcHJvZmlsZV90eXBlOgogCiAub3BQcm9maWxlVHlwZURvbmU6CiAgICAgZGlz
cGF0Y2goNikKKworX2xsaW50X29wX2xvYWRfYXJyb3dmdW5jdGlvbl90aGlzOgorICAgIHRyYWNl
RXhlY3V0aW9uKCkKKyAgICBsb2FkcCBDYWxsZWVbY2ZyXSwgdDAKKyAgICBsb2FkcCBKU0Fycm93
RnVuY3Rpb246Om1fYm91bmRUaGlzW3QwXSwgdDAKKyAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24o
MSwgdDEpCisgICAgc3RvcmVxIHQwLCBbY2ZyLCB0MSwgOF0KKyAgICBkaXNwYXRjaCgyKQpcIE5v
IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvQVNUQnVpbGRlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RC
dWlsZGVyLmgKaW5kZXggN2I1ODc3MzBhNmYwMzU0NDBkYjkwZDljNDI2ODBhZDU3OGI5NGE2Ny4u
ODA2ZGI1MjMwM2Q1YWQzYTcxODgxMjlmODhiZDc2NGM2YjUwZWVjNCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgKQEAgLTM2MSwxOSArMzYxLDE5IEBAIHB1Ymxp
YzoKICAgICAgICAgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydExvY2F0aW9uLCBjb25zdCBK
U1Rva2VuTG9jYXRpb24mIGVuZExvY2F0aW9uLCAKICAgICAgICAgdW5zaWduZWQgc3RhcnRDb2x1
bW4sIHVuc2lnbmVkIGVuZENvbHVtbiwgaW50IGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCAKICAgICAg
ICAgaW50IGZ1bmN0aW9uTmFtZVN0YXJ0LCBpbnQgcGFyYW1ldGVyc1N0YXJ0LCBib29sIGluU3Ry
aWN0Q29udGV4dCwgCi0gICAgICAgIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIHVu
c2lnbmVkIHBhcmFtZXRlckNvdW50LCBTb3VyY2VQYXJzZU1vZGUgbW9kZSkKKyAgICAgICAgQ29u
c3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCwgdW5zaWduZWQgcGFyYW1ldGVyQ291bnQsIFNv
dXJjZVBhcnNlTW9kZSBtb2RlLCBib29sIGlzQXJyb3dGdW5jdGlvbikKICAgICB7CiAgICAgICAg
IHJldHVybiBuZXcgKG1fcGFyc2VyQXJlbmEpIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKAogICAgICAg
ICAgICAgbV9wYXJzZXJBcmVuYSwgc3RhcnRMb2NhdGlvbiwgZW5kTG9jYXRpb24sIHN0YXJ0Q29s
dW1uLCBlbmRDb2x1bW4sIAogICAgICAgICAgICAgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0
aW9uTmFtZVN0YXJ0LCBwYXJhbWV0ZXJzU3RhcnQsIAotICAgICAgICAgICAgaW5TdHJpY3RDb250
ZXh0LCBjb25zdHJ1Y3RvcktpbmQsIHBhcmFtZXRlckNvdW50LCBtb2RlKTsKKyAgICAgICAgICAg
IGluU3RyaWN0Q29udGV4dCwgY29uc3RydWN0b3JLaW5kLCBwYXJhbWV0ZXJDb3VudCwgbW9kZSwg
aXNBcnJvd0Z1bmN0aW9uKTsKICAgICB9CiAKICAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlQXJy
b3dGdW5jdGlvbkV4cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgY29uc3QgUGFy
c2VyRnVuY3Rpb25JbmZvPEFTVEJ1aWxkZXI+JiBmdW5jdGlvbkluZm8pCiAgICAgeworICAgICAg
ICB1c2VzVGhpcygpOwogICAgICAgICBTb3VyY2VDb2RlIHNvdXJjZSA9IG1fc291cmNlQ29kZS0+
c3ViRXhwcmVzc2lvbihmdW5jdGlvbkluZm8uc3RhcnRPZmZzZXQsIGZ1bmN0aW9uSW5mby5lbmRP
ZmZzZXQsIGZ1bmN0aW9uSW5mby5zdGFydExpbmUsIGZ1bmN0aW9uSW5mby5ib2R5U3RhcnRDb2x1
bW4pOwotCi0gICAgICAgIEZ1bmNFeHByTm9kZSogcmVzdWx0ID0gbmV3IChtX3BhcnNlckFyZW5h
KSBGdW5jRXhwck5vZGUobG9jYXRpb24sICpmdW5jdGlvbkluZm8ubmFtZSwgZnVuY3Rpb25JbmZv
LmJvZHksIHNvdXJjZSk7CisgICAgICAgIEFycm93RnVuY0V4cHJOb2RlKiByZXN1bHQgPSBuZXcg
KG1fcGFyc2VyQXJlbmEpIEFycm93RnVuY0V4cHJOb2RlKGxvY2F0aW9uLCAqZnVuY3Rpb25JbmZv
Lm5hbWUsIGZ1bmN0aW9uSW5mby5ib2R5LCBzb3VyY2UpOwogICAgICAgICBmdW5jdGlvbkluZm8u
Ym9keS0+c2V0TG9jKGZ1bmN0aW9uSW5mby5zdGFydExpbmUsIGZ1bmN0aW9uSW5mby5lbmRMaW5l
LCBsb2NhdGlvbi5zdGFydE9mZnNldCwgbG9jYXRpb24ubGluZVN0YXJ0T2Zmc2V0KTsKICAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvTm9kZUNvbnN0cnVjdG9ycy5oCmluZGV4IGFiYjcyYTc0ZTEyODg0OGVhOGI0M2ZkODYzNjk3
NGNiOTk3YzM3ZGIuLmJkYzFiZWU3Nzg0NDg3MmFhNjI0ZDQ0M2JjYmExOTY5M2FkYmQxNjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZUNvbnN0cnVjdG9ycy5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZUNvbnN0cnVjdG9ycy5oCkBA
IC04OTAsMTMgKzg5MCwxOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB7CiAgICAgfQogCi0gICAg
aW5saW5lIEZ1bmNFeHByTm9kZTo6RnVuY0V4cHJOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYg
bG9jYXRpb24sIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBGdW5jdGlvbk1ldGFkYXRhTm9kZSog
bV9tZXRhZGF0YSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlKQorICAgIAorICAgIGlubGluZSBC
YXNlRnVuY0V4cHJOb2RlOjpCYXNlRnVuY0V4cHJOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYg
bG9jYXRpb24sIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBGdW5jdGlvbk1ldGFkYXRhTm9kZSog
bV9tZXRhZGF0YSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlKQogICAgICAgICA6IEV4cHJlc3Np
b25Ob2RlKGxvY2F0aW9uKQogICAgICAgICAsIG1fbWV0YWRhdGEobV9tZXRhZGF0YSkKICAgICB7
CiAgICAgICAgIG1fbWV0YWRhdGEtPmZpbmlzaFBhcnNpbmcoc291cmNlLCBpZGVudCwgRnVuY3Rp
b25FeHByZXNzaW9uKTsKICAgICB9CiAKKyAgICBpbmxpbmUgRnVuY0V4cHJOb2RlOjpGdW5jRXhw
ck5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgY29uc3QgSWRlbnRpZmllciYg
aWRlbnQsIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiBtX21ldGFkYXRhLCBjb25zdCBTb3VyY2VDb2Rl
JiBzb3VyY2UpCisgICAgICAgIDogQmFzZUZ1bmNFeHByTm9kZShsb2NhdGlvbiwgaWRlbnQsIG1f
bWV0YWRhdGEsIHNvdXJjZSkKKyAgICB7CisgICAgfQorCiAgICAgaW5saW5lIEZ1bmNEZWNsTm9k
ZTo6RnVuY0RlY2xOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IElk
ZW50aWZpZXImIGlkZW50LCBGdW5jdGlvbk1ldGFkYXRhTm9kZSogbV9tZXRhZGF0YSwgY29uc3Qg
U291cmNlQ29kZSYgc291cmNlKQogICAgICAgICA6IFN0YXRlbWVudE5vZGUobG9jYXRpb24pCiAg
ICAgICAgICwgbV9tZXRhZGF0YShtX21ldGFkYXRhKQpAQCAtOTA0LDYgKzkxMCwxMSBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgbV9tZXRhZGF0YS0+ZmluaXNoUGFyc2luZyhzb3VyY2UsIGlk
ZW50LCBGdW5jdGlvbkRlY2xhcmF0aW9uKTsKICAgICB9CiAKKyAgICBpbmxpbmUgQXJyb3dGdW5j
RXhwck5vZGU6OkFycm93RnVuY0V4cHJOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRp
b24sIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBGdW5jdGlvbk1ldGFkYXRhTm9kZSogbV9tZXRh
ZGF0YSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlKQorICAgICAgICA6IEJhc2VGdW5jRXhwck5v
ZGUobG9jYXRpb24sIGlkZW50LCBtX21ldGFkYXRhLCBzb3VyY2UpCisgICAgeworICAgIH0KKwog
I2lmIEVOQUJMRShFUzZfQ0xBU1NfU1lOVEFYKQogICAgIGlubGluZSBDbGFzc0RlY2xOb2RlOjpD
bGFzc0RlY2xOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25O
b2RlKiBjbGFzc0RlY2xhcmF0aW9uKQogICAgICAgICA6IFN0YXRlbWVudE5vZGUobG9jYXRpb24p
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwCmluZGV4IGNmNGZlNDUwYTkyNDk1
MDRmMzBiYTg1YTI2NGU2N2JhYTlhNTVjOTYuLjE4Zjg0NTUzMzA1YzRhMGMyMWM3MzM4ODM5YzI5
ZjIzYzc0ZGU5MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9k
ZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwCkBAIC0x
NTEsNyArMTUxLDcgQEAgRnVuY3Rpb25NZXRhZGF0YU5vZGU6OkZ1bmN0aW9uTWV0YWRhdGFOb2Rl
KAogICAgIFBhcnNlckFyZW5hJiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydExvY2F0aW9u
LCAKICAgICBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGVuZExvY2F0aW9uLCB1bnNpZ25lZCBzdGFy
dENvbHVtbiwgdW5zaWduZWQgZW5kQ29sdW1uLCAKICAgICBpbnQgZnVuY3Rpb25LZXl3b3JkU3Rh
cnQsIGludCBmdW5jdGlvbk5hbWVTdGFydCwgaW50IHBhcmFtZXRlcnNTdGFydCwgYm9vbCBpc0lu
U3RyaWN0Q29udGV4dCwgCi0gICAgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCwgdW5z
aWduZWQgcGFyYW1ldGVyQ291bnQsIFNvdXJjZVBhcnNlTW9kZSBtb2RlKQorICAgIENvbnN0cnVj
dG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIHVuc2lnbmVkIHBhcmFtZXRlckNvdW50LCBTb3VyY2VQ
YXJzZU1vZGUgbW9kZSwgYm9vbCBpc0Fycm93RnVuY3Rpb24pCiAgICAgICAgIDogTm9kZShlbmRM
b2NhdGlvbikKICAgICAgICAgLCBtX3N0YXJ0Q29sdW1uKHN0YXJ0Q29sdW1uKQogICAgICAgICAs
IG1fZW5kQ29sdW1uKGVuZENvbHVtbikKQEAgLTE2Myw2ICsxNjMsNyBAQCBGdW5jdGlvbk1ldGFk
YXRhTm9kZTo6RnVuY3Rpb25NZXRhZGF0YU5vZGUoCiAgICAgICAgICwgbV9wYXJzZU1vZGUobW9k
ZSkKICAgICAgICAgLCBtX2lzSW5TdHJpY3RDb250ZXh0KGlzSW5TdHJpY3RDb250ZXh0KQogICAg
ICAgICAsIG1fY29uc3RydWN0b3JLaW5kKHN0YXRpY19jYXN0PHVuc2lnbmVkPihjb25zdHJ1Y3Rv
cktpbmQpKQorICAgICAgICAsIG1faXNBcnJvd0Z1bmN0aW9uKGlzQXJyb3dGdW5jdGlvbikKIHsK
ICAgICBBU1NFUlQobV9jb25zdHJ1Y3RvcktpbmQgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNv
bnN0cnVjdG9yS2luZCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9Ob2Rlcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCmluZGV4
IDFkNmIwM2Q3NzY2Mjk3YWUxNzU5M2JiYTlhZWM1NjA5MzI5MzBjMmQuLjg3MzY2OGVjMzdiNDI3
YjkyMDY0OWRlMzA2ODM4MWUyY2Q4YTE1N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvTm9kZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05v
ZGVzLmgKQEAgLTE2NSw2ICsxNjUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdmlydHVh
bCBib29sIGlzRG90QWNjZXNzb3JOb2RlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICAg
ICAgdmlydHVhbCBib29sIGlzRGVzdHJ1Y3R1cmluZ05vZGUoKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNGdW5jRXhwck5vZGUoKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQorICAgICAgICB2aXJ0dWFsIGJvb2wgaXNBcnJvd0Z1bmNFeHByTm9kZSgpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0NvbW1hTm9kZSgp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc1NpbXBsZUFy
cmF5KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICAgICAgdmlydHVhbCBib29sIGlzQWRk
KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KQEAgLTE4MDksNyArMTgxMCw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICAgICAgUGFyc2VyQXJlbmEmLCBjb25zdCBKU1Rva2VuTG9jYXRpb24m
IHN0YXJ0LCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGVuZCwgCiAgICAgICAgICAgICB1bnNpZ25l
ZCBzdGFydENvbHVtbiwgdW5zaWduZWQgZW5kQ29sdW1uLCBpbnQgZnVuY3Rpb25LZXl3b3JkU3Rh
cnQsIAogICAgICAgICAgICAgaW50IGZ1bmN0aW9uTmFtZVN0YXJ0LCBpbnQgcGFyYW1ldGVyc1N0
YXJ0LCBib29sIGlzSW5TdHJpY3RDb250ZXh0LCAKLSAgICAgICAgICAgIENvbnN0cnVjdG9yS2lu
ZCwgdW5zaWduZWQsIFNvdXJjZVBhcnNlTW9kZSk7CisgICAgICAgICAgICBDb25zdHJ1Y3Rvcktp
bmQsIHVuc2lnbmVkLCBTb3VyY2VQYXJzZU1vZGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uKTsKIAog
ICAgICAgICB2b2lkIGZpbmlzaFBhcnNpbmcoY29uc3QgU291cmNlQ29kZSYsIGNvbnN0IElkZW50
aWZpZXImLCBGdW5jdGlvbk1vZGUpOwogICAgICAgICAKQEAgLTE4MzUsNiArMTgzNiw3IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICBpbnQgc3RhcnRTdGFydE9mZnNldCgpIGNvbnN0IHsgcmV0
dXJuIG1fc3RhcnRTdGFydE9mZnNldDsgfQogICAgICAgICBib29sIGlzSW5TdHJpY3RDb250ZXh0
KCkgY29uc3QgeyByZXR1cm4gbV9pc0luU3RyaWN0Q29udGV4dDsgfQogICAgICAgICBDb25zdHJ1
Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kKCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Q29uc3RydWN0
b3JLaW5kPihtX2NvbnN0cnVjdG9yS2luZCk7IH0KKyAgICAgICAgYm9vbCBpc0Fycm93RnVuY3Rp
b24oKSBjb25zdCB7IHJldHVybiBtX2lzQXJyb3dGdW5jdGlvbjsgfQogCiAgICAgICAgIHZvaWQg
c2V0TG9jKHVuc2lnbmVkIGZpcnN0TGluZSwgdW5zaWduZWQgbGFzdExpbmUsIGludCBzdGFydE9m
ZnNldCwgaW50IGxpbmVTdGFydE9mZnNldCkKICAgICAgICAgewpAQCAtMTg2MCw2ICsxODYyLDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFNvdXJjZVBhcnNlTW9kZSBtX3BhcnNlTW9kZTsK
ICAgICAgICAgdW5zaWduZWQgbV9pc0luU3RyaWN0Q29udGV4dCA6IDE7CiAgICAgICAgIHVuc2ln
bmVkIG1fY29uc3RydWN0b3JLaW5kIDogMjsKKyAgICAgICAgdW5zaWduZWQgbV9pc0Fycm93RnVu
Y3Rpb24gOiAxOwogICAgIH07CiAKICAgICBjbGFzcyBGdW5jdGlvbk5vZGUgZmluYWwgOiBwdWJs
aWMgU2NvcGVOb2RlIHsKQEAgLTE4ODksMTggKzE4OTIsMzUgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIHVuc2lnbmVkIG1fZW5kQ29sdW1uOwogICAgIH07CiAKLSAgICBjbGFzcyBGdW5jRXhw
ck5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUgeworICAgIGNsYXNzIEJhc2VGdW5jRXhwck5v
ZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgRnVuY0V4
cHJOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50aWZpZXImLCBGdW5jdGlv
bk1ldGFkYXRhTm9kZSosIGNvbnN0IFNvdXJjZUNvZGUmKTsKKyAgICAgICAgQmFzZUZ1bmNFeHBy
Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyJiwgRnVuY3Rpb25N
ZXRhZGF0YU5vZGUqLCBjb25zdCBTb3VyY2VDb2RlJik7CiAKICAgICAgICAgRnVuY3Rpb25NZXRh
ZGF0YU5vZGUqIG1ldGFkYXRhKCkgeyByZXR1cm4gbV9tZXRhZGF0YTsgfQogCisgICAgcHJvdGVj
dGVkOgorICAgICAgICBGdW5jdGlvbk1ldGFkYXRhTm9kZSogbV9tZXRhZGF0YTsKKyAgICB9Owor
CisKKyAgICBjbGFzcyBGdW5jRXhwck5vZGUgOiBwdWJsaWMgQmFzZUZ1bmNFeHByTm9kZSB7Cisg
ICAgcHVibGljOgorICAgICAgICBGdW5jRXhwck5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwg
Y29uc3QgSWRlbnRpZmllciYsIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiwgY29uc3QgU291cmNlQ29k
ZSYpOworCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0
ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOwogCiAg
ICAgICAgIHZpcnR1YWwgYm9vbCBpc0Z1bmNFeHByTm9kZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIHRydWU7IH0KKyAgICB9OwogCi0gICAgICAgIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiBtX21l
dGFkYXRhOworICAgIGNsYXNzIEFycm93RnVuY0V4cHJOb2RlIDogcHVibGljIEJhc2VGdW5jRXhw
ck5vZGUgeworICAgIHB1YmxpYzoKKyAgICAgICAgQXJyb3dGdW5jRXhwck5vZGUoY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciYsIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiwg
Y29uc3QgU291cmNlQ29kZSYpOworCisgICAgcHJpdmF0ZToKKyAgICAgICAgdmlydHVhbCBSZWdp
c3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDAp
IG92ZXJyaWRlOworCisgICAgICAgIHZpcnR1YWwgYm9vbCBpc0Fycm93RnVuY0V4cHJOb2RlKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAgIH07CiAKICNpZiBFTkFCTEUoRVM2
X0NMQVNTX1NZTlRBWCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
UGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAppbmRl
eCBhZWU3MGI2YTczMjliYzExYjVjZTczZDUzNTJkMzEzZTIyYTI3YmUxLi5mNTA4MTRlN2IxNDJh
YjUzMDBkODRhNGI3MDE5ZjljOTg0ZTJiMTg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL1BhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9QYXJzZXIuY3BwCkBAIC0xNTQ2LDExICsxNTQ2LDEyIEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVl
QnVpbGRlcj4gVHJlZUZ1bmN0aW9uQm9keSBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlv
bkJvCiAgICAgVHJlZUJ1aWxkZXImIGNvbnRleHQsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3Rh
cnRMb2NhdGlvbiwgaW50IHN0YXJ0Q29sdW1uLCBpbnQgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGlu
dCBmdW5jdGlvbk5hbWVTdGFydCwgaW50IHBhcmFtZXRlcnNTdGFydCwgCiAgICAgQ29uc3RydWN0
b3JLaW5kIGNvbnN0cnVjdG9yS2luZCwgRnVuY3Rpb25Cb2R5VHlwZSBib2R5VHlwZSwgdW5zaWdu
ZWQgcGFyYW1ldGVyQ291bnQsIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUpCiB7CisgICAgYm9v
bCBpc0Fycm93RnVuY3Rpb24gPSBGdW5jdGlvbkJvZHlUeXBlOjpTdGFuZGFyZEZ1bmN0aW9uQm9k
eUJsb2NrICE9IGJvZHlUeXBlOwogICAgIGlmIChib2R5VHlwZSA9PSBTdGFuZGFyZEZ1bmN0aW9u
Qm9keUJsb2NrIHx8IGJvZHlUeXBlID09IEFycm93RnVuY3Rpb25Cb2R5QmxvY2spIHsKICAgICAg
ICAgbmV4dCgpOwogICAgICAgICBpZiAobWF0Y2goQ0xPU0VCUkFDRSkpIHsKICAgICAgICAgICAg
IHVuc2lnbmVkIGVuZENvbHVtbiA9IHRva2VuQ29sdW1uKCk7Ci0gICAgICAgICAgICByZXR1cm4g
Y29udGV4dC5jcmVhdGVGdW5jdGlvbk1ldGFkYXRhKHN0YXJ0TG9jYXRpb24sIHRva2VuTG9jYXRp
b24oKSwgc3RhcnRDb2x1bW4sIGVuZENvbHVtbiwgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0
aW9uTmFtZVN0YXJ0LCBwYXJhbWV0ZXJzU3RhcnQsIHN0cmljdE1vZGUoKSwgY29uc3RydWN0b3JL
aW5kLCBwYXJhbWV0ZXJDb3VudCwgcGFyc2VNb2RlKTsKKyAgICAgICAgICAgIHJldHVybiBjb250
ZXh0LmNyZWF0ZUZ1bmN0aW9uTWV0YWRhdGEoc3RhcnRMb2NhdGlvbiwgdG9rZW5Mb2NhdGlvbigp
LCBzdGFydENvbHVtbiwgZW5kQ29sdW1uLCBmdW5jdGlvbktleXdvcmRTdGFydCwgZnVuY3Rpb25O
YW1lU3RhcnQsIHBhcmFtZXRlcnNTdGFydCwgc3RyaWN0TW9kZSgpLCBjb25zdHJ1Y3RvcktpbmQs
IHBhcmFtZXRlckNvdW50LCBwYXJzZU1vZGUsIGlzQXJyb3dGdW5jdGlvbik7CiAgICAgICAgIH0K
ICAgICB9CiAKQEAgLTE1NjIsNyArMTU2Myw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRl
cj4gVHJlZUZ1bmN0aW9uQm9keSBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkJvCiAg
ICAgZWxzZQogICAgICAgICBmYWlsSWZGYWxzZShwYXJzZVNvdXJjZUVsZW1lbnRzKHN5bnRheENo
ZWNrZXIsIENoZWNrRm9yU3RyaWN0TW9kZSksIGJvZHlUeXBlID09IFN0YW5kYXJkRnVuY3Rpb25C
b2R5QmxvY2sgPyAiQ2Fubm90IHBhcnNlIGJvZHkgb2YgdGhpcyBmdW5jdGlvbiIgOiAiQ2Fubm90
IHBhcnNlIGJvZHkgb2YgdGhpcyBhcnJvdyBmdW5jdGlvbiIpOwogICAgIHVuc2lnbmVkIGVuZENv
bHVtbiA9IHRva2VuQ29sdW1uKCk7Ci0gICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRnVuY3Rpb25N
ZXRhZGF0YShzdGFydExvY2F0aW9uLCB0b2tlbkxvY2F0aW9uKCksIHN0YXJ0Q29sdW1uLCBlbmRD
b2x1bW4sIGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBmdW5jdGlvbk5hbWVTdGFydCwgcGFyYW1ldGVy
c1N0YXJ0LCBzdHJpY3RNb2RlKCksIGNvbnN0cnVjdG9yS2luZCwgcGFyYW1ldGVyQ291bnQsIHBh
cnNlTW9kZSk7CisgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRnVuY3Rpb25NZXRhZGF0YShzdGFy
dExvY2F0aW9uLCB0b2tlbkxvY2F0aW9uKCksIHN0YXJ0Q29sdW1uLCBlbmRDb2x1bW4sIGZ1bmN0
aW9uS2V5d29yZFN0YXJ0LCBmdW5jdGlvbk5hbWVTdGFydCwgcGFyYW1ldGVyc1N0YXJ0LCBzdHJp
Y3RNb2RlKCksIGNvbnN0cnVjdG9yS2luZCwgcGFyYW1ldGVyQ291bnQsIHBhcnNlTW9kZSwgaXNB
cnJvd0Z1bmN0aW9uKTsKIH0KIAogc3RhdGljIGNvbnN0IGNoYXIqIHN0cmluZ0ZvckZ1bmN0aW9u
TW9kZShTb3VyY2VQYXJzZU1vZGUgbW9kZSkKQEAgLTE3MzcsNyArMTczOCw3IEBAIHRlbXBsYXRl
IDxjbGFzcyBUcmVlQnVpbGRlcj4gYm9vbCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlv
bkluZm8oVHJlZUJ1aWxkCiAgICAgfQogICAgIAogICAgIGJvb2wgaXNDbGFzc0NvbnN0cnVjdG9y
ID0gY29uc3RydWN0b3JLaW5kICE9IENvbnN0cnVjdG9yS2luZDo6Tm9uZTsKLQorICAgIAogICAg
IGZ1bmN0aW9uSW5mby5ib2R5U3RhcnRDb2x1bW4gPSBzdGFydENvbHVtbjsKICAgICAKICAgICAv
LyBJZiB3ZSBrbm93IGFib3V0IHRoaXMgZnVuY3Rpb24gYWxyZWFkeSwgd2UgY2FuIHVzZSB0aGUg
Y2FjaGVkIGluZm8gYW5kIHNraXAgdGhlIHBhcnNlciB0byB0aGUgZW5kIG9mIHRoZSBmdW5jdGlv
bi4KQEAgLTE3NTYsMTEgKzE3NTcsMTMgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBi
b29sIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uSW5mbyhUcmVlQnVpbGQKICAgICAg
ICAgICAgIGVuZExvY2F0aW9uLnN0YXJ0T2Zmc2V0IC0gbV90b2tlbi5tX2RhdGEubGluZVN0YXJ0
T2Zmc2V0IDoKICAgICAgICAgICAgIGVuZExvY2F0aW9uLnN0YXJ0T2Zmc2V0IC0gZW5kTG9jYXRp
b24ubGluZVN0YXJ0T2Zmc2V0OwogICAgICAgICB1bnNpZ25lZCBjdXJyZW50TGluZVN0YXJ0T2Zm
c2V0ID0gbV90b2tlbi5tX2xvY2F0aW9uLmxpbmVTdGFydE9mZnNldDsKLQorICAgICAgICAKKyAg
ICAgICAgYm9vbCBpc0Fycm93RnVuY3Rpb24gPSBwYXJzZVR5cGUgPT0gQXJyb3dGdW5jdGlvblBh
cnNlVHlwZTsKKyAgICAgICAgCiAgICAgICAgIGZ1bmN0aW9uSW5mby5ib2R5ID0gY29udGV4dC5j
cmVhdGVGdW5jdGlvbk1ldGFkYXRhKAogICAgICAgICAgICAgc3RhcnRMb2NhdGlvbiwgZW5kTG9j
YXRpb24sIGZ1bmN0aW9uSW5mby5ib2R5U3RhcnRDb2x1bW4sIGJvZHlFbmRDb2x1bW4sIAogICAg
ICAgICAgICAgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0LCBwYXJhbWV0
ZXJzU3RhcnQsIAotICAgICAgICAgICAgY2FjaGVkSW5mby0+c3RyaWN0TW9kZSwgY29uc3RydWN0
b3JLaW5kLCBjYWNoZWRJbmZvLT5wYXJhbWV0ZXJDb3VudCwgbW9kZSk7CisgICAgICAgICAgICBj
YWNoZWRJbmZvLT5zdHJpY3RNb2RlLCBjb25zdHJ1Y3RvcktpbmQsIGNhY2hlZEluZm8tPnBhcmFt
ZXRlckNvdW50LCBtb2RlLCBpc0Fycm93RnVuY3Rpb24pOwogICAgICAgICAKICAgICAgICAgZnVu
Y3Rpb25TY29wZS0+cmVzdG9yZUZyb21Tb3VyY2VQcm92aWRlckNhY2hlKGNhY2hlZEluZm8pOwog
ICAgICAgICBwb3BTY29wZShmdW5jdGlvblNjb3BlLCBUcmVlQnVpbGRlcjo6TmVlZHNGcmVlVmFy
aWFibGVJbmZvKTsKQEAgLTE3NzQsNyArMTc3Nyw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVp
bGRlcj4gYm9vbCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkluZm8oVHJlZUJ1aWxk
CiAgICAgICAgIG1fbGV4ZXItPnNldExpbmVOdW1iZXIobV90b2tlbi5tX2xvY2F0aW9uLmxpbmUp
OwogICAgICAgICBmdW5jdGlvbkluZm8uZW5kT2Zmc2V0ID0gY2FjaGVkSW5mby0+ZW5kRnVuY3Rp
b25PZmZzZXQ7CiAKLSAgICAgICAgaWYgKHBhcnNlVHlwZSA9PSBBcnJvd0Z1bmN0aW9uUGFyc2VU
eXBlKQorICAgICAgICBpZiAoaXNBcnJvd0Z1bmN0aW9uKQogICAgICAgICAgICAgZnVuY3Rpb25C
b2R5VHlwZSA9IGNhY2hlZEluZm8tPmlzQm9keUFycm93RXhwcmVzc2lvbiA/ICBBcnJvd0Z1bmN0
aW9uQm9keUV4cHJlc3Npb24gOiBBcnJvd0Z1bmN0aW9uQm9keUJsb2NrOwogICAgICAgICBlbHNl
CiAgICAgICAgICAgICBmdW5jdGlvbkJvZHlUeXBlID0gU3RhbmRhcmRGdW5jdGlvbkJvZHlCbG9j
azsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tl
ci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9TeW50YXhDaGVja2VyLmgKaW5kZXgg
MDc2MGMxOWViMTYzNmRiMjFhMTc5NjEyYTU0OTZlMTljZmQxYmIwNy4uZGM1NjFmOWIxYTZkYTM2
NDNiODI3MmZlN2IxMmUyMTVlNDRmNDJjNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9TeW50YXhDaGVja2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9TeW50YXhDaGVja2VyLmgKQEAgLTE4Niw3ICsxODYsNyBAQCBwdWJsaWM6CiAgICAgQ2xh
c3NFeHByZXNzaW9uIGNyZWF0ZUNsYXNzRXhwcihjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25z
dCBJZGVudGlmaWVyJiwgRXhwcmVzc2lvblR5cGUsIEV4cHJlc3Npb25UeXBlLCBQcm9wZXJ0eUxp
c3QsIFByb3BlcnR5TGlzdCkgeyByZXR1cm4gQ2xhc3NFeHByOyB9CiAjZW5kaWYKICAgICBFeHBy
ZXNzaW9uVHlwZSBjcmVhdGVGdW5jdGlvbkV4cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29u
c3QgUGFyc2VyRnVuY3Rpb25JbmZvPFN5bnRheENoZWNrZXI+JikgeyByZXR1cm4gRnVuY3Rpb25F
eHByOyB9Ci0gICAgaW50IGNyZWF0ZUZ1bmN0aW9uTWV0YWRhdGEoY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50LCBpbnQsIGJvb2wsIGludCwgaW50LCBp
bnQsIENvbnN0cnVjdG9yS2luZCwgdW5zaWduZWQsIFNvdXJjZVBhcnNlTW9kZSkgeyByZXR1cm4g
RnVuY3Rpb25Cb2R5UmVzdWx0OyB9CisgICAgaW50IGNyZWF0ZUZ1bmN0aW9uTWV0YWRhdGEoY29u
c3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50LCBpbnQsIGJv
b2wsIGludCwgaW50LCBpbnQsIENvbnN0cnVjdG9yS2luZCwgdW5zaWduZWQsIFNvdXJjZVBhcnNl
TW9kZSwgYm9vbCkgeyByZXR1cm4gRnVuY3Rpb25Cb2R5UmVzdWx0OyB9CiAgICAgRXhwcmVzc2lv
blR5cGUgY3JlYXRlQXJyb3dGdW5jdGlvbkV4cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29u
c3QgUGFyc2VyRnVuY3Rpb25JbmZvPFN5bnRheENoZWNrZXI+JikgeyByZXR1cm4gRnVuY3Rpb25F
eHByOyB9CiAgICAgdm9pZCBzZXRGdW5jdGlvbk5hbWVTdGFydChpbnQsIGludCkgeyB9CiAgICAg
aW50IGNyZWF0ZUFyZ3VtZW50cygpIHsgcmV0dXJuIEFyZ3VtZW50c1Jlc3VsdDsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcAppbmRleCAwYWIxNjcyMTE2
ODE5NGMxYTYwMjg5ZWI4NTZlOThjMGNmYTE3Yjc5Li45ZGM2OTRmMjdhNDU4NzNiMmEyMTY3YTM2
OTYzNWQzZTU5NDVhYmFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9FeGVjdXRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVj
dXRhYmxlLmNwcApAQCAtMjM2LDggKzIzNiw3IEBAIFJlZlB0cjxDb2RlQmxvY2s+IFNjcmlwdEV4
ZWN1dGFibGU6Om5ld0NvZGVCbG9ja0ZvcigKICAgICBEZWJ1Z2dlck1vZGUgZGVidWdnZXJNb2Rl
ID0gZ2xvYmFsT2JqZWN0LT5oYXNEZWJ1Z2dlcigpID8gRGVidWdnZXJPbiA6IERlYnVnZ2VyT2Zm
OwogICAgIFByb2ZpbGVyTW9kZSBwcm9maWxlck1vZGUgPSBnbG9iYWxPYmplY3QtPmhhc1Byb2Zp
bGVyKCkgPyBQcm9maWxlck9uIDogUHJvZmlsZXJPZmY7CiAgICAgVW5saW5rZWRGdW5jdGlvbkNv
ZGVCbG9jayogdW5saW5rZWRDb2RlQmxvY2sgPQotICAgICAgICBleGVjdXRhYmxlLT5tX3VubGlu
a2VkRXhlY3V0YWJsZS0+Y29kZUJsb2NrRm9yKAotICAgICAgICAgICAgKnZtLCBleGVjdXRhYmxl
LT5tX3NvdXJjZSwga2luZCwgZGVidWdnZXJNb2RlLCBwcm9maWxlck1vZGUsIGVycm9yKTsKKyAg
ICBleGVjdXRhYmxlLT5tX3VubGlua2VkRXhlY3V0YWJsZS0+Y29kZUJsb2NrRm9yKCp2bSwgZXhl
Y3V0YWJsZS0+bV9zb3VyY2UsIGtpbmQsIGRlYnVnZ2VyTW9kZSwgcHJvZmlsZXJNb2RlLCBlcnJv
ciwgZXhlY3V0YWJsZS0+aXNBcnJvd0Z1bmN0aW9uKCkpOwogICAgIHJlY29yZFBhcnNlKGV4ZWN1
dGFibGUtPm1fdW5saW5rZWRFeGVjdXRhYmxlLT5mZWF0dXJlcygpLCBleGVjdXRhYmxlLT5tX3Vu
bGlua2VkRXhlY3V0YWJsZS0+aGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSwgZmlyc3RMaW5lKCksIGxh
c3RMaW5lKCksIHN0YXJ0Q29sdW1uKCksIGVuZENvbHVtbigpKTsgCiAgICAgaWYgKCF1bmxpbmtl
ZENvZGVCbG9jaykgewogICAgICAgICBleGNlcHRpb24gPSB2bS0+dGhyb3dFeGNlcHRpb24oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgKaW5kZXggYmNlMjQyOGNi
YzEwMWRkYTZjYjEwMWQ3MGJmMDI3ZjdlMGVhM2RmMC4uY2YyYmRlODhjNWE2ZTkxNjc2MDM2ZWUy
N2Q3NDRmNzY0NTM5Y2M0YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRXhlY3V0YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1
dGFibGUuaApAQCAtNDc0LDcgKzQ3NCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY2xlYXJDb2Rl
KCk7CiAKLSAgICBFeGVjdXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0dXJu
IEV4ZWN1dGFibGVJbmZvKG5lZWRzQWN0aXZhdGlvbigpLCB1c2VzRXZhbCgpLCBpc1N0cmljdE1v
ZGUoKSwgZmFsc2UsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUpOyB9CisgICAgRXhlY3V0
YWJsZUluZm8gZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5mbyhu
ZWVkc0FjdGl2YXRpb24oKSwgdXNlc0V2YWwoKSwgaXNTdHJpY3RNb2RlKCksIGZhbHNlLCBmYWxz
ZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBmYWxzZSk7IH0KIAogICAgIHVuc2lnbmVkIG51bVZh
cmlhYmxlcygpIHsgcmV0dXJuIG1fdW5saW5rZWRFdmFsQ29kZUJsb2NrLT5udW1WYXJpYWJsZXMo
KTsgfQogICAgIHVuc2lnbmVkIG51bWJlck9mRnVuY3Rpb25EZWNscygpIHsgcmV0dXJuIG1fdW5s
aW5rZWRFdmFsQ29kZUJsb2NrLT5udW1iZXJPZkZ1bmN0aW9uRGVjbHMoKTsgfQpAQCAtNTMwLDcg
KzUzMCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY2xlYXJDb2RlKCk7CiAKLSAgICBFeGVjdXRh
YmxlSW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZvKG5l
ZWRzQWN0aXZhdGlvbigpLCB1c2VzRXZhbCgpLCBpc1N0cmljdE1vZGUoKSwgZmFsc2UsIGZhbHNl
LCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUpOyB9CisgICAgRXhlY3V0YWJsZUluZm8gZXhlY3V0YWJs
ZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5mbyhuZWVkc0FjdGl2YXRpb24oKSwg
dXNlc0V2YWwoKSwgaXNTdHJpY3RNb2RlKCksIGZhbHNlLCBmYWxzZSwgQ29uc3RydWN0b3JLaW5k
OjpOb25lLCBmYWxzZSk7IH0KIAogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgU2NyaXB0RXhl
Y3V0YWJsZTsKQEAgLTYzMyw2ICs2MzMsNyBAQCBwdWJsaWM6CiAgICAgRnVuY3Rpb25Nb2RlIGZ1
bmN0aW9uTW9kZSgpIHsgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5mdW5jdGlvbk1vZGUo
KTsgfQogICAgIGJvb2wgaXNCdWlsdGluRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX3VubGlu
a2VkRXhlY3V0YWJsZS0+aXNCdWlsdGluRnVuY3Rpb24oKTsgfQogICAgIENvbnN0cnVjdEFiaWxp
dHkgY29uc3RydWN0QWJpbGl0eSgpIGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxl
LT5jb25zdHJ1Y3RBYmlsaXR5KCk7IH0KKyAgICBib29sIGlzQXJyb3dGdW5jdGlvbigpIGNvbnN0
IHsgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5pc0Fycm93RnVuY3Rpb24oKTsgfQogICAg
IGJvb2wgaXNDbGFzc0NvbnN0cnVjdG9yRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX3VubGlu
a2VkRXhlY3V0YWJsZS0+aXNDbGFzc0NvbnN0cnVjdG9yRnVuY3Rpb24oKTsgfQogICAgIGNvbnN0
IElkZW50aWZpZXImIG5hbWUoKSB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS0+bmFtZSgp
OyB9CiAgICAgY29uc3QgSWRlbnRpZmllciYgaW5mZXJyZWROYW1lKCkgeyByZXR1cm4gbV91bmxp
bmtlZEV4ZWN1dGFibGUtPmluZmVycmVkTmFtZSgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0Fycm93RnVuY3Rpb24uY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNBcnJvd0Z1bmN0aW9uLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NTFjMjYwZTE2
YTIwZTJiODQwOWFlYmI5YTJlNTlkYjliM2RmNDg2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJvd0Z1bmN0aW9uLmNwcApAQCAtMCwwICsxLDgx
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFsZWtzYW5kciBTa2FjaGtvdiA8Z3NrYWNo
a292QGdtYWlsLmNvbT4uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJKU0Fycm93RnVuY3Rpb24uaCIKKwor
I2luY2x1ZGUgIkVycm9yLmgiCisjaW5jbHVkZSAiRXhjZXB0aW9uSGVscGVycy5oIgorI2luY2x1
ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCisjaW5jbHVkZSAiSlNG
dW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTRnVuY3Rpb25JbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNP
YmplY3QuaCIKKyNpbmNsdWRlICJQcm9wZXJ0eVNsb3QuaCIKKyNpbmNsdWRlICJWTS5oIgorCitu
YW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJbmZvIEpTQXJyb3dGdW5jdGlvbjo6c19pbmZv
ID0geyAiQXJyb3dGdW5jdGlvbiIsICZCYXNlOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFC
TEUoSlNBcnJvd0Z1bmN0aW9uKSB9OworCit2b2lkIEpTQXJyb3dGdW5jdGlvbjo6ZGVzdHJveShK
U0NlbGwqIGNlbGwpCit7CisgICAgc3RhdGljX2Nhc3Q8SlNBcnJvd0Z1bmN0aW9uKj4oY2VsbCkt
PkpTQXJyb3dGdW5jdGlvbjo6fkpTQXJyb3dGdW5jdGlvbigpOworfQorCitKU0Fycm93RnVuY3Rp
b24qIEpTQXJyb3dGdW5jdGlvbjo6Y3JlYXRlKFZNJiB2bSwgRnVuY3Rpb25FeGVjdXRhYmxlKiBl
eGVjdXRhYmxlLCBKU1Njb3BlKiBzY29wZSwgSlNWYWx1ZSBib3VuZFRoaXMpCit7CisgICAgSlNB
cnJvd0Z1bmN0aW9uKiByZXN1bHQgPSBjcmVhdGVJbXBsKHZtLCBleGVjdXRhYmxlLCBzY29wZSwg
Ym91bmRUaGlzKTsKKyAgICBleGVjdXRhYmxlLT5zaW5nbGV0b25GdW5jdGlvbigpLT5ub3RpZnlX
cml0ZSh2bSwgcmVzdWx0LCAiQWxsb2NhdGluZyBhbiBhcnJvdyBmdW5jdGlvbiIpOworICAgIHJl
dHVybiByZXN1bHQ7Cit9CisKK0pTQXJyb3dGdW5jdGlvbjo6SlNBcnJvd0Z1bmN0aW9uKFZNJiB2
bSwgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBKU1Njb3BlKiBzY29wZSwgSlNWYWx1
ZSBib3VuZFRoaXMpCisgICAgOiBCYXNlKHZtLCBleGVjdXRhYmxlLCBzY29wZSwgc2NvcGUtPmds
b2JhbE9iamVjdCgpLT5hcnJvd0Z1bmN0aW9uU3RydWN0dXJlKCkpCisgICAgLCBtX2JvdW5kVGhp
cyh2bSwgdGhpcywgYm91bmRUaGlzKQoreworfQorCitKU0Fycm93RnVuY3Rpb24qIEpTQXJyb3dG
dW5jdGlvbjo6Y3JlYXRlV2l0aEludmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludChWTSYg
dm0sIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgSlNTY29wZSogc2NvcGUsIEpTVmFs
dWUgYm91bmRUaGlzKQoreworICAgIEFTU0VSVChleGVjdXRhYmxlLT5zaW5nbGV0b25GdW5jdGlv
bigpLT5oYXNCZWVuSW52YWxpZGF0ZWQoKSk7CisgICAgcmV0dXJuIGNyZWF0ZSh2bSwgZXhlY3V0
YWJsZSwgc2NvcGUsIGJvdW5kVGhpcyk7Cit9CisKK3ZvaWQgSlNBcnJvd0Z1bmN0aW9uOjp2aXNp
dENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgSlNB
cnJvd0Z1bmN0aW9uKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTQXJyb3dGdW5jdGlvbio+KGNlbGwp
OworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKKyAg
ICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOworCisgICAgdmlzaXRv
ci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fYm91bmRUaGlzKTsKK30KKworQ29uc3RydWN0VHlwZSBK
U0Fycm93RnVuY3Rpb246OmdldENvbnN0cnVjdERhdGEoSlNDZWxsKiwgQ29uc3RydWN0RGF0YSYp
Cit7CisgICAgcmV0dXJuIENvbnN0cnVjdFR5cGVOb25lOworfQorCit9IC8vIG5hbWVzcGFjZSBK
U0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyb3dGdW5j
dGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJvd0Z1bmN0aW9uLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uN2Y1NmY2OGVmZWVkZDgyMzFhMzViMmZjMjQ5ZmQ4MWFjOTdmNWIyMwotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyb3dGdW5j
dGlvbi5oCkBAIC0wLDAgKzEsOTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQWxla3Nh
bmRyIFNrYWNoa292IDxnc2thY2hrb3ZAZ21haWwuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBKU0Fycm93RnVuY3Rpb25faAorI2RlZmlu
ZSBKU0Fycm93RnVuY3Rpb25faAorCisjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgorI2luY2x1ZGUg
IkpTR2xvYmFsT2JqZWN0LmgiCisKK25hbWVzcGFjZSBKU0MgeworICAgIAorY2xhc3MgSlNHbG9i
YWxPYmplY3Q7CitjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CitjbGFzcyBMTEludERlc2ly
ZWRPZmZzZXRzOworICAgIAorY2xhc3MgSlNBcnJvd0Z1bmN0aW9uIDogcHVibGljIEpTRnVuY3Rp
b24geworICAgIGZyaWVuZCBjbGFzcyBKSVQ7CisjaWYgRU5BQkxFKERGR19KSVQpCisgICAgZnJp
ZW5kIGNsYXNzIERGRzo6U3BlY3VsYXRpdmVKSVQ7CisgICAgZnJpZW5kIGNsYXNzIERGRzo6SklU
Q29tcGlsZXI7CisjZW5kaWYKKyAgICBmcmllbmQgY2xhc3MgVk07CitwdWJsaWM6CisgICAgdHlw
ZWRlZiBKU0Z1bmN0aW9uIEJhc2U7CisKKyAgICBzdGF0aWMgSlNBcnJvd0Z1bmN0aW9uKiBjcmVh
dGUoVk0mLCBGdW5jdGlvbkV4ZWN1dGFibGUqLCBKU1Njb3BlKiwgSlNWYWx1ZSk7CisgICAgc3Rh
dGljIEpTQXJyb3dGdW5jdGlvbiogY3JlYXRlV2l0aEludmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0
Y2hwb2ludChWTSYsIEZ1bmN0aW9uRXhlY3V0YWJsZSosIEpTU2NvcGUqLCBKU1ZhbHVlKTsKKwor
ICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CisgICAgCisgICAgc3RhdGljIHNpemVf
dCBhbGxvY2F0aW9uU2l6ZShzaXplX3QgaW5saW5lQ2FwYWNpdHkpCisgICAgeworICAgICAgICBB
U1NFUlRfVU5VU0VEKGlubGluZUNhcGFjaXR5LCAhaW5saW5lQ2FwYWNpdHkpOworICAgICAgICBy
ZXR1cm4gc2l6ZW9mKEpTQXJyb3dGdW5jdGlvbik7CisgICAgfQorICAgIAorICAgIHN0YXRpYyBK
U0Fycm93RnVuY3Rpb24qIGNyZWF0ZUltcGwoVk0mIHZtLCBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4
ZWN1dGFibGUsIEpTU2NvcGUqIHNjb3BlLCBKU1ZhbHVlIGJvdW5kVGhpcykKKyAgICB7CisgICAg
ICAgIEpTQXJyb3dGdW5jdGlvbiogZnVuY3Rpb24gPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2Vs
bDxKU0Fycm93RnVuY3Rpb24+KHZtLmhlYXApKSBKU0Fycm93RnVuY3Rpb24odm0sIGV4ZWN1dGFi
bGUsIHNjb3BlLCBib3VuZFRoaXMpOworICAgICAgICBBU1NFUlQoZnVuY3Rpb24tPnN0cnVjdHVy
ZSgpLT5nbG9iYWxPYmplY3QoKSk7CisgICAgICAgIGZ1bmN0aW9uLT5maW5pc2hDcmVhdGlvbih2
bSk7CisgICAgICAgIHJldHVybiBmdW5jdGlvbjsKKyAgICB9CisgICAgCisgICAgc3RhdGljIENv
bnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0RGF0YShKU0NlbGwqLCBDb25zdHJ1Y3REYXRhJik7CisK
KyAgICBKU1ZhbHVlIGJvdW5kVGhpcygpIHsgcmV0dXJuIG1fYm91bmRUaGlzLmdldCgpOyB9Cisg
ICAgCisgICAgREVDTEFSRV9FWFBPUlRfSU5GTzsKKyAgICAKKyAgICBzdGF0aWMgU3RydWN0dXJl
KiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7CisgICAgICAgIEFTU0VSVChnbG9iYWxPYmplY3QpOwor
ICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90
eXBlLCBUeXBlSW5mbyhKU0Z1bmN0aW9uVHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwor
ICAgIH0KKyAgICAKKyAgICBzdGF0aWMgaW5saW5lIHB0cmRpZmZfdCBvZmZzZXRPZlRoaXNWYWx1
ZSgpCisgICAgeworICAgICAgICByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEpTQXJyb3dGdW5jdGlv
biwgbV9ib3VuZFRoaXMpOworICAgIH0KKyAgICAKKyAgICBjb25zdCBzdGF0aWMgdW5zaWduZWQg
U3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKKworcHJvdGVjdGVkOgorICAg
IHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKKyAgICAg
ICAgCitwcml2YXRlOgorICAgIEpTQXJyb3dGdW5jdGlvbihWTSYsIEZ1bmN0aW9uRXhlY3V0YWJs
ZSosIEpTU2NvcGUqLCBKU1ZhbHVlKTsKKyAgICAKKyAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZz
ZXRzRXh0cmFjdG9yOworICAgIAorICAgIFdyaXRlQmFycmllcjxVbmtub3duPiBtX2JvdW5kVGhp
czsKK307CisgICAgCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEpTQXJyb3dGdW5j
dGlvbl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0
aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgKaW5kZXgg
MGI4N2Q3NWM5MTQ1MGM1YWYxYWFlZDI3YTYxYTc0OGVmODBmMDkzZS4uOTI4MzUwZTI0NzhjNDVm
N2JmN2U4YWE4NGM5ZWMzYTRlMjUyYTg2ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTRnVuY3Rpb24uaApAQCAtMTQxLDYgKzE0MSw3IEBAIHB1YmxpYzoKIHByb3RlY3RlZDoK
ICAgICBKU19FWFBPUlRfUFJJVkFURSBKU0Z1bmN0aW9uKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBT
dHJ1Y3R1cmUqKTsKICAgICBKU0Z1bmN0aW9uKFZNJiwgRnVuY3Rpb25FeGVjdXRhYmxlKiwgSlNT
Y29wZSopOworICAgIEpTRnVuY3Rpb24oVk0mLCBGdW5jdGlvbkV4ZWN1dGFibGUqLCBKU1Njb3Bl
KiwgU3RydWN0dXJlKik7CiAKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgTmF0aXZlRXhl
Y3V0YWJsZSosIGludCBsZW5ndGgsIGNvbnN0IFN0cmluZyYgbmFtZSk7CiAgICAgdXNpbmcgQmFz
ZTo6ZmluaXNoQ3JlYXRpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0Z1bmN0aW9uSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNGdW5jdGlvbklubGluZXMuaAppbmRleCBmNmM2ZDU4ZWM2ZTVjMTE2NGNiMjdmYTVlNDE2MThi
NGI4MTQyZjAyLi5mMDU5NTg0Y2YwN2Q3ZmQ2OWVhMmRjZmUyN2I2M2I2NDRhODg0NDEzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uSW5saW5lcy5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb25JbmxpbmVzLmgK
QEAgLTQ0LDYgKzQ0LDEzIEBAIGlubGluZSBKU0Z1bmN0aW9uOjpKU0Z1bmN0aW9uKFZNJiB2bSwg
RnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBKU1Njb3BlKiBzCiAgICAgLCBtX3JhcmVE
YXRhKCkKIHsKIH0KKyAgICAKK2lubGluZSBKU0Z1bmN0aW9uOjpKU0Z1bmN0aW9uKFZNJiB2bSwg
RnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBKU1Njb3BlKiBzY29wZSwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUpCisgICAgOiBCYXNlKHZtLCBzY29wZSwgc3RydWN0dXJlKQorICAgICwgbV9l
eGVjdXRhYmxlKHZtLCB0aGlzLCBleGVjdXRhYmxlKQorICAgICwgbV9yYXJlRGF0YSgpCit7Cit9
CiAKIGlubGluZSBGdW5jdGlvbkV4ZWN1dGFibGUqIEpTRnVuY3Rpb246OmpzRXhlY3V0YWJsZSgp
IGNvbnN0CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdC5jcHAKaW5kZXggY2VlOWJiZDk0MDQ0OTEyODk0MzgyNzFkMDA0NDE3YzIyOWFkMDQyMy4u
ZGExYWMyNWFhYjAwODYyY2Q1MzczMGY5YTVhZDEyNWEyZGMwZmYzOCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtNTksNiArNTks
NyBAQAogI2luY2x1ZGUgIkpTQXJyYXlCdWZmZXJDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIkpT
QXJyYXlCdWZmZXJQcm90b3R5cGUuaCIKICNpbmNsdWRlICJKU0FycmF5SXRlcmF0b3IuaCIKKyNp
bmNsdWRlICJKU0Fycm93RnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0JvdW5kRnVuY3Rpb24uaCIK
ICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDYWxsYmFja0NvbnN0cnVjdG9y
LmgiCkBAIC0yNTksNiArMjYwLDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6aW5pdChWTSYgdm0p
CiAgICAgZXhlYy0+c2V0Q2FsbGVlKG1fZ2xvYmFsQ2FsbGVlLmdldCgpKTsKIAogICAgIG1fZnVu
Y3Rpb25TdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBKU0Z1bmN0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUo
dm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpKTsKKyAgICBtX2Fycm93RnVuY3Rp
b25TdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBKU0Fycm93RnVuY3Rpb246OmNyZWF0ZVN0cnVjdHVy
ZSh2bSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSkpOwogICAgIG1fYm91bmRGdW5j
dGlvblN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIEpTQm91bmRGdW5jdGlvbjo6Y3JlYXRlU3RydWN0
dXJlKHZtLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSk7CiAgICAgbV9uYW1lZEZ1
bmN0aW9uU3RydWN0dXJlLnNldCh2bSwgdGhpcywgU3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5z
aXRpb24odm0sIG1fZnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCksIHZtLnByb3BlcnR5TmFtZXMtPm5h
bWUsIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtLCBtX2Z1bmN0aW9uTmFtZU9mZnNl
dCkpOwogICAgIG1faW50ZXJuYWxGdW5jdGlvblN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIEludGVy
bmFsRnVuY3Rpb246OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlw
ZS5nZXQoKSkpOwpAQCAtNzk1LDYgKzc5Nyw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnZpc2l0
Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKICAgICB2aXNpdG9y
LmFwcGVuZCgmdGhpc09iamVjdC0+bV9jYWxsZWVTdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBw
ZW5kKCZ0aGlzT2JqZWN0LT5tX2Z1bmN0aW9uU3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVu
ZCgmdGhpc09iamVjdC0+bV9ib3VuZEZ1bmN0aW9uU3RydWN0dXJlKTsKKyAgICB2aXNpdG9yLmFw
cGVuZCgmdGhpc09iamVjdC0+bV9hcnJvd0Z1bmN0aW9uU3RydWN0dXJlKTsKICAgICB2aXNpdG9y
LmFwcGVuZCgmdGhpc09iamVjdC0+bV9uYW1lZEZ1bmN0aW9uU3RydWN0dXJlKTsKICAgICB2aXNp
dG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9zeW1ib2xPYmplY3RTdHJ1Y3R1cmUpOwogICAgIHZp
c2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3JlZ0V4cFN0cnVjdHVyZSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAppbmRleCA5OTg2YmNmNjI0
NWUyY2M0NjgyMGIxMzEwMmIyMzQyOTAwZWMzZDdiLi5iZDEyYjI5MzA1NWU5YmFlMzBiYjczZmQ5
MDE1YmMwMDM4MzYzYzY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmgKQEAgLTIzMiw2ICsyMzIsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgV3JpdGVC
YXJyaWVyPFN0cnVjdHVyZT4gbV9jYWxsZWVTdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0
cnVjdHVyZT4gbV9mdW5jdGlvblN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJl
PiBtX2JvdW5kRnVuY3Rpb25TdHJ1Y3R1cmU7CisgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4g
bV9hcnJvd0Z1bmN0aW9uU3RydWN0dXJlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1f
bmFtZWRGdW5jdGlvblN0cnVjdHVyZTsKICAgICBQcm9wZXJ0eU9mZnNldCBtX2Z1bmN0aW9uTmFt
ZU9mZnNldDsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3ByaXZhdGVOYW1lU3RydWN0
dXJlOwpAQCAtNDYyLDYgKzQ2Myw3IEBAIHB1YmxpYzoKICAgICBTdHJ1Y3R1cmUqIGNhbGxlZVN0
cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2FsbGVlU3RydWN0dXJlLmdldCgpOyB9CiAgICAg
U3RydWN0dXJlKiBmdW5jdGlvblN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fZnVuY3Rpb25T
dHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIGJvdW5kRnVuY3Rpb25TdHJ1Y3R1cmUo
KSBjb25zdCB7IHJldHVybiBtX2JvdW5kRnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCk7IH0KKyAgICBT
dHJ1Y3R1cmUqIGFycm93RnVuY3Rpb25TdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2Fycm93
RnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIG5hbWVkRnVuY3Rpb25T
dHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX25hbWVkRnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCk7
IH0KICAgICBQcm9wZXJ0eU9mZnNldCBmdW5jdGlvbk5hbWVPZmZzZXQoKSBjb25zdCB7IHJldHVy
biBtX2Z1bmN0aW9uTmFtZU9mZnNldDsgfQogICAgIFN0cnVjdHVyZSogbnVtYmVyT2JqZWN0U3Ry
dWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9udW1iZXJPYmplY3RTdHJ1Y3R1cmUuZ2V0KCk7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5j
dGlvbi1hY3RpdmF0aW9uLXNpbmstb3NyZXhpdC1kZWZhdWx0LXZhbHVlLXRkei1lcnJvci5qcyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1hY3RpdmF0
aW9uLXNpbmstb3NyZXhpdC1kZWZhdWx0LXZhbHVlLXRkei1lcnJvci5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5j
MWUzYTY2ZWE5MmYwMzBkYjM3NzlhNGMzZTQwMmU3YzExOGQxZDgxCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWFjdGl2
YXRpb24tc2luay1vc3JleGl0LWRlZmF1bHQtdmFsdWUtdGR6LWVycm9yLmpzCkBAIC0wLDAgKzEs
NDYgQEAKKyJ1c2Ugc3RyaWN0IjsKKwordmFyIG4gPSAxMDAwMDAwOworCitmdW5jdGlvbiBzaG91
bGRUaHJvd1REWihmdW5jKSB7CisgICAgdmFyIGhhc1Rocm93biA9IGZhbHNlOworICAgIHRyeSB7
CisgICAgICAgIGZ1bmMoKTsKKyAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgaWYgKGUubmFtZS5p
bmRleE9mKCJSZWZlcmVuY2VFcnJvciIpICE9PSAtMSkKKyAgICAgICAgICAgIGhhc1Rocm93biA9
IHRydWU7CisgICAgfQorICAgIGlmICghaGFzVGhyb3duKQorICAgICAgICB0aHJvdyBuZXcgRXJy
b3IoIkRpZCBub3QgdGhyb3cgVERaIGVycm9yIik7Cit9CisKK2Z1bmN0aW9uIGJhcihmKSB7IH0K
KworZnVuY3Rpb24gZm9vKGIpIHsKKyAgICBsZXQgcmVzdWx0ID0gMDsKKyAgICB2YXIgc2V0ID0g
ICh4KSA9PiB7IHJlc3VsdCA9IHg7IHJldHVybiB0ZHpQZXJwZXRyYXRvcjsgfQorICAgIGlmIChi
KSB7CisgICAgICAgIE9TUkV4aXQoKTsKKyAgICAgICAgaWYgKGIpIHsKKyAgICAgICAgICAgIGJh
cihzZXQpOworICAgICAgICAgICAgcmV0dXJuIHRkelBlcnBldHJhdG9yOworICAgICAgICB9Cisg
ICAgfQorICAgIGxldCB0ZHpQZXJwZXRyYXRvcjsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitu
b0lubGluZShiYXIpOworbm9JbmxpbmUoZm9vKTsKK25vSW5saW5lKHNob3VsZFRocm93VERaKTsK
KworZm9yICh2YXIgaSA9IDA7IGkgPCBuOyBpKyspIHsKKyAgICB2YXIgYm9vbCA9ICEoaSAlIDEw
MCk7CisgICAgaWYgKGJvb2wpCisgICAgICAgIHNob3VsZFRocm93VERaKCgpPT4geyBmb28oYm9v
bCk7IH0pOworICAgIGVsc2UgeworICAgICAgICB2YXIgcmVzdWx0ID0gZm9vKGJvb2wpOworICAg
ICAgICBpZiAocmVzdWx0ICE9IDApCisgICAgICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1
bHQ6ICIgKyByZXN1bHQ7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWFjdGl2YXRpb24tc2luay1vc3JleGl0LWRl
ZmF1bHQtdmFsdWUuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93
ZnVuY3Rpb24tYWN0aXZhdGlvbi1zaW5rLW9zcmV4aXQtZGVmYXVsdC12YWx1ZS5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5lNDFiYmUxNDAyNDE0ZGIyNmM2YjdmZDQwMWZiMGU5YzY1YTRiYTc3Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9u
LWFjdGl2YXRpb24tc2luay1vc3JleGl0LWRlZmF1bHQtdmFsdWUuanMKQEAgLTAsMCArMSwzNyBA
QAordmFyIG4gPSAxMDAwMDAwOworCitmdW5jdGlvbiBiYXIoc2V0KSB7CisgICAgdmFyIHJlc3Vs
dCA9IHNldCgwKTsKKyAgICBpZiAocmVzdWx0ICE9PSB2b2lkIDApCisgICAgICAgIHRocm93ICJF
cnJvcjogYmFkIHZhbHVlOiAiICsgcmVzdWx0OworfQorCitmdW5jdGlvbiBmb28oYikgeworICAg
IHZhciByZXN1bHQgPSAwOworICAgIHZhciBpbVVuZGVmaW5lZDsKKyAgICB2YXIgYmF6OworICAg
IHZhciBzZXQgPSAgKHgpID0+IHsKKyAgICAgICAgcmVzdWx0ID0geDsKKyAgICAgICAgaWYgKGJh
eiAhPT0gNTApCisgICAgICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCB2YWx1ZTogIiArIGJhejsK
KyAgICAgICAgcmV0dXJuIGltVW5kZWZpbmVkOworICAgIH07CisgICAgYmF6ID0gNTA7CisgICAg
aWYgKGIpIHsKKyAgICAgICAgT1NSRXhpdCgpOworICAgICAgICBpZiAoYikgeworICAgICAgICAg
ICAgYmFyKHNldCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIHJl
dHVybiByZXN1bHQ7Cit9CisKK25vSW5saW5lKGJhcik7Citub0lubGluZShmb28pOworCitmb3Ig
KHZhciBpID0gMDsgaSA8IG47IGkrKykgeworICAgIHZhciByZXN1bHQgPSBmb28oIShpICUgMTAw
KSk7CisgICAgaWYgKHJlc3VsdCAhPSAwKQorICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1
bHQ6ICIgKyByZXN1bHQ7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVz
dHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tYWN0aXZhdGlvbi1zaW5rLW9zcmV4aXQuanMgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tYWN0aXZhdGlvbi1z
aW5rLW9zcmV4aXQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmU0MzdhZjdiMmMyYWQzNDVlMjZjMjAzNzc4OTBk
ZjVmMzFmYWYwNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0
cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1hY3RpdmF0aW9uLXNpbmstb3NyZXhpdC5qcwpAQCAtMCww
ICsxLDI1IEBACit2YXIgbiA9IDEwMDAwMDA7CisKK2Z1bmN0aW9uIGJhcigpIHsgfQorCitmdW5j
dGlvbiBmb28oYikgeworICAgIHZhciByZXN1bHQgPSAwOworICAgIHZhciBzZXQgPSAoeCkgPT4g
eyByZXN1bHQgPSB4OyB9CisgICAgaWYgKGIpIHsKKyAgICAgICAgT1NSRXhpdCgpOworICAgICAg
ICBpZiAoYikgeworICAgICAgICAgICAgYmFyKHNldCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0
dXJuIDA7CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK25vSW5saW5lKGJhcik7Citu
b0lubGluZShmb28pOworCitmb3IgKHZhciBpID0gMDsgaSA8IG47IGkrKykgeworICAgIHZhciBy
ZXN1bHQgPSBmb28oIShpICUgMTAwKSk7CisgICAgaWYgKHJlc3VsdCAhPSAwKQorICAgICAgICB0
aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQ6ICIgKyByZXN1bHQ7Cit9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tYWN0aXZhdGlvbi1z
aW5rLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9u
LWFjdGl2YXRpb24tc2luay5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NmE3OWVjOWVhYTY1YzU0MTkzMGI5MDQ4
MjZlN2EyM2ExM2ZiMmVhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWFjdGl2YXRpb24tc2luay5qcwpAQCAtMCwwICsx
LDI0IEBACit2YXIgbiA9IDEwMDAwMDAwOworCitmdW5jdGlvbiBiYXIoZikgeyBmKDEwKTsgfQor
CitmdW5jdGlvbiBmb28oYikgeworICAgIHZhciByZXN1bHQgPSAwOworICAgIHZhciBzZXQgPSB4
ID0+IHsgcmVzdWx0ID0geDsgfQorICAgIGlmIChiKSB7CisgICAgICAgIGJhcihzZXQpOworICAg
ICAgICBpZiAocmVzdWx0ICE9IDEwKQorICAgICAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQ6ICIg
KyByZXN1bHQ7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0Owor
fQorCitub0lubGluZShiYXIpOworbm9JbmxpbmUoZm9vKTsKKworZm9yICh2YXIgaSA9IDA7IGkg
PCBuOyBpKyspIHsKKyAgICB2YXIgcmVzdWx0ID0gZm9vKCEoaSAlIDEwMCkpOworICAgIGlmIChy
ZXN1bHQgIT0gMCkKKyAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgcmVzdWx0OiAiICsgcmVzdWx0
OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJv
d2Z1bmN0aW9uLWJvdW5kLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9h
cnJvd2Z1bmN0aW9uLWJvdW5kLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkyMDMyMDg4YWJmMjZkYWUyYWU3MWEy
YWM0YzA1ZDRmMDc3NTVlNDAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tYm91bmQuanMKQEAgLTAsMCArMSwxOCBAQAor
dmFyIHRlc3RDYXNlID0gZnVuY3Rpb24gKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2UpIHsKKyAg
aWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpIHsKKyAgICB0aHJvdyBtZXNzYWdlICsgIi4gRXhwZWN0
ZWQgJyIgKyBleHBlY3RlZCArICInLCBidXQgd2FzICciICsgYWN0dWFsICsgIiciOworICB9Cit9
OworCit2YXIgZCA9IHsKKyAgeCA6ICJiYXIiLAorICB5IDogZnVuY3Rpb24oKSB7IHJldHVybiB6
ID0+IHRoaXMueCArIHo7IH0KK307CisKK25vSW5saW5lKGQueSk7CisKK3ZhciBlID0geyB4IDog
ImJheiIgfTsKKworZm9yICh2YXIgaT0wOyBpPDEwMDAwOyBpKyspIHsKKyAgdGVzdENhc2UoZC55
KCkuYmluZChlLCAibGV5IikoKSwgImJhcmxleSIsICJFcnJvcjogZnVuY3Rpb24gYmluZCBzaG91
bGRuJ3QgY2hhbmdlIGxleGljYWwgYmluZGluZyBvZiB0aGUgYXJyb3cgZnVuY3Rpb24iKTsKK30K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5j
dGlvbi1jYWxsLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1
bmN0aW9uLWNhbGwuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjg3N2UwYWQ5YzgzYWM1M2E3ZjZkMzUxOTYyMzIx
NGMxZTlmYzYwZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0
cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1jYWxsLmpzCkBAIC0wLDAgKzEsMTggQEAKK3ZhciB0ZXN0
Q2FzZSA9IGZ1bmN0aW9uIChhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlKSB7CisgIGlmIChhY3R1
YWwgIT09IGV4cGVjdGVkKSB7CisgICAgdGhyb3cgbWVzc2FnZSArICIuIEV4cGVjdGVkICciICsg
ZXhwZWN0ZWQgKyAiJywgYnV0IHdhcyAnIiArIGFjdHVhbCArICInIjsKKyAgfQorfTsKKwordmFy
IGQgPSB7CisgIHggOiAiZm9vIiwKKyAgeSA6IGZ1bmN0aW9uKCkgeyByZXR1cm4gKCkgPT4gdGhp
cy54OyB9Cit9Oworbm9JbmxpbmUoZC55KTsKKwordmFyIGUgPSB7IHggOiAiYmFyIiB9OworCitm
b3IgKHZhciBpPTA7IGk8MTAwMDA7aSsrKXsKKyAgICB0ZXN0Q2FzZShkLnkoKS5jYWxsKGUpLCAi
Zm9vIiwgIkVycm9yOiBmdW5jdGlvbiBjYWxsIHNob3Vsbid0IGNoYW5nZSB0aGUgbGV4aWNhbCBi
aW5kaW5nIG9mIHRoZSBhcnJvdyBmdW5jdGlvbiIpOworICAgIHRlc3RDYXNlKGQueSgpLmFwcGx5
KGUpLCAiZm9vIiwgIkVycm9yOiBmdW5jdGlvbiBhcHBseSBzaG91bG4ndCBjaGFuZ2UgdGhlIGxl
eGljYWwgYmluZGluZyBvZiB0aGUgYXJyb3cgZnVuY3Rpb24iKTsKK30KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1jb25zdHJ1Y3Rv
ci5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1j
b25zdHJ1Y3Rvci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNWJlYjU1N2Q3OTQ5YmM2YjJjNzhhYjQ2NTllYThj
MmFjNjNkZTYyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3Rz
L3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWNvbnN0cnVjdG9yLmpzCkBAIC0wLDAgKzEsMjIgQEAKK3Zh
ciB0ZXN0Q2FzZSA9IGZ1bmN0aW9uIChhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlKSB7CisgIGlm
IChhY3R1YWwgIT09IGV4cGVjdGVkKSB7CisgICAgdGhyb3cgbWVzc2FnZSArICIuIEV4cGVjdGVk
ICciICsgZXhwZWN0ZWQgKyAiJywgYnV0IHdhcyAnIiArIGFjdHVhbCArICInIjsKKyAgfQorfTsK
KwordmFyIHNpbXBsZUFycm93RnVuY3Rpb24gPSAoKSA9PiB7fTsKKworbm9JbmxpbmUoc2ltcGxl
QXJyb3dGdW5jdGlvbik7CisKK3ZhciBlcnJvck9uQ3JlYXRlID0gZmFsc2U7CisKK2ZvciAoaT0w
O2k8MTAwMDA7aSsrKSB7CisgICB0cnkgeworICAgICAgIHZhciBmYyA9IG5ldyBzaW1wbGVBcnJv
d0Z1bmN0aW9uKCk7CisgICB9CisgICBjYXRjaCAoZSkgeworICAgICBlcnJvck9uQ3JlYXRlID0g
dHJ1ZTsKKyAgIH0KKworICAgIHRlc3RDYXNlKGVycm9yT25DcmVhdGUsIHRydWUsICJFcnJvcjog
Tm8gZXhjZXB0aW9uIGR1cmluZyBydW4gbmV3IEFycm93RnVuY3Rpb24iKTsKK30KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhp
Y2FsLWJpbmQtdGhpcy0xLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9h
cnJvd2Z1bmN0aW9uLWxleGljYWwtYmluZC10aGlzLTEuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGNmYWIyNGM5
MWJjNTdjOTU4NzYzMmRmZWM5YTRjOTM3OThlMjE1YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQt
dGhpcy0xLmpzCkBAIC0wLDAgKzEsMTkgQEAKK3ZhciB0ZXN0Q2FzZSA9IGZ1bmN0aW9uIChhY3R1
YWwsIGV4cGVjdGVkLCBtZXNzYWdlKSB7CisgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKSB7Cisg
ICAgdGhyb3cgbWVzc2FnZSArICIuIEV4cGVjdGVkICciICsgZXhwZWN0ZWQgKyAiJywgYnV0IHdh
cyAnIiArIGFjdHVhbCArICInIjsKKyAgfQorfTsKKworZnVuY3Rpb24gRG9nKG5hbWUpIHsKKyAg
dGhpcy5uYW1lID0gbmFtZTsKKyAgdGhpcy5nZXROYW1lID0gKCkgPT4gZXZhbCgidGhpcy5uYW1l
Iik7CisgIHRoaXMuZ2V0TmFtZUhhcmQgPSAoKSA9PiBldmFsKCIoKCkgPT4gdGhpcy5uYW1lKSgp
Iik7Cit9CisKK25vSW5saW5lKERvZykKKworZm9yICh2YXIgaT0wO2k8MTAwMDA7IGkrKykgewor
ICB2YXIgZCA9IG5ldyBEb2coIk1heCIpOworICB0ZXN0Q2FzZShkLmdldE5hbWUoKSwgZC5uYW1l
LCAiRXJyb3I6IHRoaXMgaXMgbm90IGxleGljYWxseSBiaW5kZWQgaW5zaWRlIG9mIHRoZSBhcnJv
dyBmdW5jdGlvbiAjMSIpOworICB0ZXN0Q2FzZShkLmdldE5hbWVIYXJkKCksIGQubmFtZSwgIkVy
cm9yOiB0aGlzIGlzIG5vdCBsZXhpY2FsbHkgYmluZGVkIGluc2lkZSBvZiB0aGUgYXJyb3cgZnVu
Y3Rpb24gIzIiKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9z
dHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy0yLmpzIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtYmluZC10aGlzLTIu
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMTE3ZGIzMDNjZGZlM2QxNWRhNDVjODE2NGU0OGQwM2E2N2ViOTJhNAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJy
b3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy0yLmpzCkBAIC0wLDAgKzEsMzkgQEAKK3ZhciB0
ZXN0Q2FzZSA9IGZ1bmN0aW9uIChhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlKSB7CisgIGlmIChh
Y3R1YWwgIT09IGV4cGVjdGVkKSB7CisgICAgdGhyb3cgbWVzc2FnZSArICIuIEV4cGVjdGVkICci
ICsgZXhwZWN0ZWQgKyAiJywgYnV0IHdhcyAnIiArIGFjdHVhbCArICInIjsKKyAgfQorfTsKKwor
dmFyIGZ1bmN0aW9uQ29uc3RydWN0b3IgPSBmdW5jdGlvbiAoKSB7CisgIHRoaXMuZnVuYyA9ICgp
ID0+IHRoaXM7Cit9OworCit2YXIgaW5zdGFuY2UgPSBuZXcgZnVuY3Rpb25Db25zdHJ1Y3Rvcigp
OworCit0ZXN0Q2FzZShpbnN0YW5jZS5mdW5jKCkgPT09IGluc3RhbmNlLCB0cnVlLCAiRXJyb3I6
IHRoaXMgaXMgbm90IGxleGljYWxseSBiaW5kZWQgaW5zaWRlIG9mIHRoZSBhcnJvdyBmdW5jdGlv
biAjMiIpOworCit2YXIgb2JqID0geworICBtZXRob2Q6IGZ1bmN0aW9uICgpIHsKKyAgICByZXR1
cm4gKCkgPT4gdGhpczsKKyAgfQorfTsKKworbm9JbmxpbmUob2JqLm1ldGhvZCk7CisKK2ZvciAo
dmFyIGk9MDsgaSA8IDEwMDAwOyBpKyspIHsKKyAgICB0ZXN0Q2FzZShvYmoubWV0aG9kKCkoKSA9
PT0gb2JqLCB0cnVlLCAiRXJyb3I6IHRoaXMgaXMgbm90IGxleGljYWxseSBiaW5kZWQgaW5zaWRl
IG9mIHRoZSBhcnJvdyBmdW5jdGlvbiAjMyIpOworfQorCit2YXIgZmFrZSA9IHtzdGVhbDogb2Jq
Lm1ldGhvZCgpfTsKK25vSW5saW5lKGZha2Uuc3RlYWwpOworCitmb3IgKHZhciBpPTA7IGkgPCAx
MDAwMDsgaSsrKSB7CisgICAgdGVzdENhc2UoZmFrZS5zdGVhbCgpID09PSBvYmosIHRydWUsICJF
cnJvcjogdGhpcyBpcyBub3QgbGV4aWNhbGx5IGJpbmRlZCBpbnNpZGUgb2YgdGhlIGFycm93IGZ1
bmN0aW9uICM0Iik7Cit9CisKK3ZhciByZWFsID0ge2JvcnJvdzogb2JqLm1ldGhvZH07Citub0lu
bGluZShyZWFsLmJvcnJvdyk7CisKK2ZvciAodmFyIGk9MDsgaSA8IDEwMDAwOyBpKyspIHsKKyAg
ICB0ZXN0Q2FzZShyZWFsLmJvcnJvdygpKCkgPT09IHJlYWwsIHRydWUsICJFcnJvcjogdGhpcyBp
cyBub3QgbGV4aWNhbGx5IGJpbmRlZCBpbnNpZGUgb2YgdGhlIGFycm93IGZ1bmN0aW9uICM1Iik7
Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93
ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRoaXMtMy5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy0zLmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjEwMTkwODZkNTg0NzljNGJkNGZlMGY1MjdiM2E3YmI4OTM5YzA5MmQKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24t
bGV4aWNhbC1iaW5kLXRoaXMtMy5qcwpAQCAtMCwwICsxLDI4IEBACit2YXIgdGVzdENhc2UgPSBm
dW5jdGlvbiAoYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZSkgeworICBpZiAoYWN0dWFsICE9PSBl
eHBlY3RlZCkgeworICAgIHRocm93IG1lc3NhZ2UgKyAiLiBFeHBlY3RlZCAnIiArIGV4cGVjdGVk
ICsgIicsIGJ1dCB3YXMgJyIgKyBhY3R1YWwgKyAiJyI7CisgIH0KK307CisKKwordmFyIG9iaiA9
IHsgbmFtZTonb2JqJywgbWV0aG9kOiBmdW5jdGlvbiAoKSB7IHJldHVybiAodmFsdWUpID0+IHRo
aXMubmFtZSArICItbmFtZS0iICsgdmFsdWU7IH19OworCitmb3IgKHZhciBpPTA7IGk8MTAwMDA7
IGkrKykgeworICB0ZXN0Q2FzZShvYmoubWV0aG9kKCkoJ3Rlc3QnICsgaS50b1N0cmluZygpKSwg
J29iai1uYW1lLXRlc3QnICsgaS50b1N0cmluZygpLCAiRXJyb3I6IHRoaXMgaXMgbm90IGxleGlj
YWxseSBiaW5kZWQgaW5zaWRlIG9mIHRoZSBhcnJvdyBmdW5jdGlvbiAjMSIpOworfQorCitmb3Ig
KHZhciBpPTA7IGk8MTAwMDA7IGkrKykgeworICB2YXIgcmVzdWx0MSA9IG9iai5tZXRob2QoKSgn
dGVzdCcgKyBpLnRvU3RyaW5nKCkpOworICB0ZXN0Q2FzZShyZXN1bHQxLCAnb2JqLW5hbWUtdGVz
dCcgKyBpLnRvU3RyaW5nKCksICJFcnJvcjogdGhpcyBpcyBub3QgbGV4aWNhbGx5IGJpbmRlZCBp
bnNpZGUgb2YgdGhlIGFycm93IGZ1bmN0aW9uICMxIik7Cit9CisKK29iai5uYW1lPSduZXdPYmon
OworCitmb3IgKHZhciBpPTA7IGk8MTAwMDA7IGkrKykgeworICB0ZXN0Q2FzZShvYmoubWV0aG9k
KCkoJ3Rlc3QnICsgaS50b1N0cmluZygpKSwgJ25ld09iai1uYW1lLXRlc3QnICsgaS50b1N0cmlu
ZygpLCAiRXJyb3I6IHRoaXMgaXMgbm90IGxleGljYWxseSBiaW5kZWQgaW5zaWRlIG9mIHRoZSBh
cnJvdyBmdW5jdGlvbiAjNSIpOworfQorCitmb3IgKHZhciBpPTA7IGk8MTAwMDA7IGkrKykgewor
ICB2YXIgcmVzdWx0MiA9IG9iai5tZXRob2QoKSgndGVzdCcgKyBpLnRvU3RyaW5nKCkpOworICB0
ZXN0Q2FzZShyZXN1bHQyLCAnbmV3T2JqLW5hbWUtdGVzdCcgKyBpLnRvU3RyaW5nKCksICJFcnJv
cjogdGhpcyBpcyBub3QgbGV4aWNhbGx5IGJpbmRlZCBpbnNpZGUgb2YgdGhlIGFycm93IGZ1bmN0
aW9uICM1Iik7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3Ry
ZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRoaXMtNC5qcyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy00Lmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjg1YmQzNjNlNGU0NmIwMmQyZjE5YmJlMzg1MDJmNTI4MjMzYTlmMTMKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93
ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRoaXMtNC5qcwpAQCAtMCwwICsxLDI2IEBACit2YXIgdGVz
dENhc2UgPSBmdW5jdGlvbiAoYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZSkgeworICBpZiAoYWN0
dWFsICE9PSBleHBlY3RlZCkgeworICAgIHRocm93IG1lc3NhZ2UgKyAiLiBFeHBlY3RlZCAnIiAr
IGV4cGVjdGVkICsgIicsIGJ1dCB3YXMgJyIgKyBhY3R1YWwgKyAiJyI7CisgIH0KK307CisKKwor
dmFyIG9iaiA9IHsKKyAgbmFtZTonb2JqJywKKyAgaW50ZXJuYWxPYmplY3Q6IHsKKyAgICBuYW1l
ICA6J2ludGVybmFsT2JqZWN0JywKKyAgICBtZXRob2Q6IGZ1bmN0aW9uICgpIHsgcmV0dXJuICh2
YWx1ZSkgPT4gdGhpcy5uYW1lICsgIi1uYW1lLSIgKyB2YWx1ZTsgfQorICB9Cit9OworCitub0lu
bGluZShvYmouaW50ZXJuYWxPYmplY3QubWV0aG9kKTsKKworZm9yICh2YXIgaT0wOyBpPDEwMDAw
OyBpKyspIHsKKyAgICB0ZXN0Q2FzZShvYmouaW50ZXJuYWxPYmplY3QubWV0aG9kKCkoJ3Rlc3Qn
ICsgaS50b1N0cmluZygpKSwgJ2ludGVybmFsT2JqZWN0LW5hbWUtdGVzdCcgKyBpLnRvU3RyaW5n
KCksICJFcnJvcjogdGhpcyBpcyBub3QgbGV4aWNhbGx5IGJpbmRlZCBpbnNpZGUgb2YgdGhlIGFy
cm93IGZ1bmN0aW9uICMxIik7Cit9CisKK29iai5pbnRlcm5hbE9iamVjdC5uYW1lPSduZXdJbnRl
cm5hbE9iamVjdCc7CisKK2ZvciAodmFyIGk9MDsgaTwxMDAwMDsgaSsrKSB7CisgICAgdGVzdENh
c2Uob2JqLmludGVybmFsT2JqZWN0Lm1ldGhvZCgpKCd0ZXN0JyArIGkudG9TdHJpbmcoKSksICdu
ZXdJbnRlcm5hbE9iamVjdC1uYW1lLXRlc3QnICsgaS50b1N0cmluZygpLCAiRXJyb3I6IHRoaXMg
aXMgbm90IGxleGljYWxseSBiaW5kZWQgaW5zaWRlIG9mIHRoZSBhcnJvdyBmdW5jdGlvbiAjNSIp
OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJv
d2Z1bmN0aW9uLWxleGljYWwtYmluZC10aGlzLTUuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
dGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRoaXMtNS5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi44NzU0OTRjZTZiNjZkYjBhN2ViNDNkY2M4M2VjMWVhY2U2Mjg3NTQ2Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9u
LWxleGljYWwtYmluZC10aGlzLTUuanMKQEAgLTAsMCArMSw0OCBAQAordmFyIHNvcnRlZFZhbHVl
czsKKwordmFyIHRlc3RDYXNlID0gZnVuY3Rpb24gKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2Up
IHsKKyAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpIHsKKyAgICB0aHJvdyBtZXNzYWdlICsgIi4g
RXhwZWN0ZWQgJyIgKyBleHBlY3RlZCArICInLCBidXQgd2FzICciICsgYWN0dWFsICsgIiciOwor
ICB9Cit9OworCisKK3ZhciBvYmogPSB7CisgIGFycjogWzEsIDQsIDYsIDMsIDcsIDBdLAorICBi
dWJibGVTb3J0OiBmdW5jdGlvbiAoKSB7CisgICAgcmV0dXJuICgpID0+IHsKKyAgICAgIHZhciB0
bXA7CisgICAgICB2YXIgYXIgPSB0aGlzLmFyci5zbGljZSgpOworICAgICAgdmFyIF9sZW5ndGgg
PSBhci5sZW5ndGgKKyAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgX2xlbmd0aDsgaSsrKSB7Cisg
ICAgICAgIGZvciAodmFyIGogPSBpOyBqID4gMDsgai0tKSB7CisgICAgICAgICAgaWYgKChhcltq
XSAtIGFyW2ogLSAxXSkgPCAwKSB7CisgICAgICAgICAgICB0bXAgPSBhcltqXTsKKyAgICAgICAg
ICAgIGFyW2pdID0gYXJbaiAtIDFdOworICAgICAgICAgICAgYXJbaiAtIDFdID0gdG1wOworICAg
ICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgICAgcmV0dXJuIGFyOworICAgIH0KKyAg
fQorfTsKKworbm9JbmxpbmUob2JqLmJ1YmJsZVNvcnQpOworCitmb3IgKHZhciBpPTA7IGk8MTAw
MDA7IGkrKykgeworICAgIG9iai5hcnIgPSBbMSwgMiwgNCwgNiwgMywgNywgMF07CisgICAgdGVz
dENhc2Uob2JqLmJ1YmJsZVNvcnQoKSgpLmxlbmd0aCwgNywgIkVycm9yOiB0aGlzIGlzIG5vdCBs
ZXhpY2FsbHkgYmluZGVkIGluc2lkZSBvZiB0aGUgYXJyb3cgZnVuY3Rpb24gIzEiKTsKKworICAg
IHZhciBzb3J0ZWRWYWx1ZXMgPSBvYmouYnViYmxlU29ydCgpKCk7CisgICAgdGVzdENhc2Uoc29y
dGVkVmFsdWVzWzBdLCAwLCAiRXJyb3I6IHRoaXMgaXMgbm90IGxleGljYWxseSBiaW5kZWQgaW5z
aWRlIG9mIHRoZSBhcnJvdyBmdW5jdGlvbiAjNiIpOworICAgIHRlc3RDYXNlKHNvcnRlZFZhbHVl
c1s2XSwgNywgIkVycm9yOiB0aGlzIGlzIG5vdCBsZXhpY2FsbHkgYmluZGVkIGluc2lkZSBvZiB0
aGUgYXJyb3cgZnVuY3Rpb24gIzciKTsKKworICAgIG9iai5hcnIgPSBbMSwgMiwgNCwgNiwgNSwg
OCwgMjEsIDE5LCAwXTsKKworICAgIHRlc3RDYXNlKG9iai5idWJibGVTb3J0KCkoKS5sZW5ndGgs
IDksICJFcnJvcjogdGhpcyBpcyBub3QgbGV4aWNhbGx5IGJpbmRlZCBpbnNpZGUgb2YgdGhlIGFy
cm93IGZ1bmN0aW9uICM4Iik7CisKKyAgICBzb3J0ZWRWYWx1ZXMgPSBvYmouYnViYmxlU29ydCgp
KCk7CisgICAgdGVzdENhc2Uoc29ydGVkVmFsdWVzWzFdLCAxLCAiRXJyb3I6IHRoaXMgaXMgbm90
IGxleGljYWxseSBiaW5kZWQgaW5zaWRlIG9mIHRoZSBhcnJvdyBmdW5jdGlvbiAjMTIiKTsKKyAg
ICB0ZXN0Q2FzZShzb3J0ZWRWYWx1ZXNbOF0sIDIxLCAiRXJyb3I6IHRoaXMgaXMgbm90IGxleGlj
YWxseSBiaW5kZWQgaW5zaWRlIG9mIHRoZSBhcnJvdyBmdW5jdGlvbiAjMTMiKTsKK30KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1s
ZXhpY2FsLWJpbmQtdGhpcy02LmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVz
cy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtYmluZC10aGlzLTYuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzQxN2Jj
N2M4ZjE4MDUzNThiZGJhODViMmNlZjZhNjliNWY0MWVjYQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJp
bmQtdGhpcy02LmpzCkBAIC0wLDAgKzEsMjQgQEAKK3ZhciB0ZXN0Q2FzZSA9IGZ1bmN0aW9uIChh
Y3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlKSB7CisgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKSB7
CisgICAgdGhyb3cgbWVzc2FnZSArICIuIEV4cGVjdGVkICciICsgZXhwZWN0ZWQgKyAiJywgYnV0
IHdhcyAnIiArIGFjdHVhbCArICInIjsKKyAgfQorfTsKKworZnVuY3Rpb24gRG9nKG5hbWUpIHsK
KyAgdGhpcy5uYW1lID0gbmFtZTsKKyAgdGhpcy5nZXROYW1lID0gKCkgPT4gIHRoaXMubmFtZTsK
KyAgdGhpcy5nZXROYW1lTmVzdGluZ0xldmVsMSA9ICgpID0+ICgpID0+IHRoaXMubmFtZTsKKyAg
dGhpcy5nZXROYW1lTmVzdGluZ0xldmVsMiA9ICgpID0+ICgpID0+ICgpID0+IHRoaXMubmFtZTsK
K30KKwordmFyIGQgPSBuZXcgRG9nKCJNYXgiKTsKKworbm9JbmxpbmUoZC5nZXROYW1lKCkpOwor
bm9JbmxpbmUoZC5nZXROYW1lTmVzdGluZ0xldmVsMSgpKCkpOworbm9JbmxpbmUoZC5nZXROYW1l
TmVzdGluZ0xldmVsMigpKCkoKSk7CisKK2ZvciAodmFyIGk9MDtpPDEwMDAwOyBpKyspIHsKKyAg
dGVzdENhc2UoZC5nZXROYW1lKCksIGQubmFtZSwgIkVycm9yOiB0aGlzIGlzIG5vdCBsZXhpY2Fs
bHkgYmluZGVkIGluc2lkZSBvZiB0aGUgYXJyb3cgZnVuY3Rpb24gIzEiKTsKKyAgdGVzdENhc2Uo
ZC5nZXROYW1lTmVzdGluZ0xldmVsMSgpKCksIGQubmFtZSwgIkVycm9yOiB0aGlzIGlzIG5vdCBs
ZXhpY2FsbHkgYmluZGVkIGluc2lkZSBvZiB0aGUgYXJyb3cgZnVuY3Rpb24gIzIiKTsKKyAgdGVz
dENhc2UoZC5nZXROYW1lTmVzdGluZ0xldmVsMigpKCkoKSwgZC5uYW1lLCAiRXJyb3I6IHRoaXMg
aXMgbm90IGxleGljYWxseSBiaW5kZWQgaW5zaWRlIG9mIHRoZSBhcnJvdyBmdW5jdGlvbiAjMyIp
OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJv
d2Z1bmN0aW9uLWxleGljYWwtdGhpcy1hY3RpdmF0aW9uLXNpbmstb3NyZXhpdC5qcyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLXRoaXMt
YWN0aXZhdGlvbi1zaW5rLW9zcmV4aXQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWQxMGEzMWQ2NzMxYWU2OTc0
ZDY2N2VkOGQyNDg3MGI1ZDUzMWY2NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLXRoaXMtYWN0aXZhdGlv
bi1zaW5rLW9zcmV4aXQuanMKQEAgLTAsMCArMSwzNCBAQAordmFyIG4gPSAxMDAwMDAwMDsKKwor
dmFyIG5ld0NvbnRleHQgPSB7CisgIGlkIDogJ25ldy1jb250ZXh0JworfTsKKworZnVuY3Rpb24g
YmFyKCkgeyB9CisKK2Z1bmN0aW9uIGZvbyhiKSB7CisgICAgdmFyIHJlc3VsdCA9IDA7CisgICAg
dmFyIHNldCA9ICh4KSA9PiB7CisgICAgICAvLyBDaGVjayBpZiBhcnJvdyBmdW5jdGlvbiBzdG9y
ZSBjb250ZXh0CisgICAgICBpZiAodGhpcyAhPSBuZXdDb250ZXh0IHx8IHRoaXMuaWQgIT0gbmV3
Q29udGV4dC5pZCkKKyAgICAgICAgICB0aHJvdyAnV3JvbmcgY29udGV4dCBvZiBhcnJvdyBmdW5j
dGlvbic7CisgICAgICByZXN1bHQgPSB4OworICAgIH0KKyAgICBpZiAoYikgeworICAgICAgICBP
U1JFeGl0KCk7CisgICAgICAgIGlmIChiKSB7CisgICAgICAgICAgICBiYXIoc2V0KTsKKyAgICAg
ICAgfQorICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0Owor
fQorCitub0lubGluZShiYXIpOworbm9JbmxpbmUoZm9vKTsKKworZm9yICh2YXIgaSA9IDA7IGkg
PCBuOyBpKyspIHsKKyAgICB2YXIgcmVzdWx0ID0gZm9vLmNhbGwobmV3Q29udGV4dCwgIShpICUg
MTAwKSk7CisgICAgaWYgKHJlc3VsdCAhPSAwKQorICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCBy
ZXN1bHQ6ICIgKyByZXN1bHQ7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
dGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC10aGlzLWFjdGl2YXRpb24tc2luay5q
cyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhp
Y2FsLXRoaXMtYWN0aXZhdGlvbi1zaW5rLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNhNDMwNjM3Yzg1YmY5NDIx
YWU5Yzk3ZTBkZDdmNmNkMTM1YzQzOTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC10aGlzLWFjdGl2YXRp
b24tc2luay5qcwpAQCAtMCwwICsxLDM4IEBACit2YXIgbiA9IDEwMDAwMDAwOworCit2YXIgbmV3
Q29udGV4dCA9IHsKKyAgaWQgOiAnbmV3LWNvbnRleHQnCit9OworCitmdW5jdGlvbiBiYXIoZikg
eworICAgIGlmICh0aGlzID09IG5ld0NvbnRleHQpCisgICAgICAgIHRocm93ICdXcm9uZyBjb250
ZXh0IG9mIG5lc3RpbmcgZnVuY3Rpb24nOworICAgIGYoMTApOworfQorCitmdW5jdGlvbiBmb28o
YikgeworICAgIHZhciByZXN1bHQgPSAwOworICAgIHZhciBzZXQgPSAoeCkgPT4geworICAgICAg
cmVzdWx0ID0geDsKKyAgICAgIC8vIENoZWNrIGlmIGFycm93IGZ1bmN0aW9uIHN0b3JlIGNvbnRl
eHQKKyAgICAgIGlmICh0aGlzICE9IG5ld0NvbnRleHQgfHwgdGhpcy5pZCAhPSBuZXdDb250ZXh0
LmlkKQorICAgICAgICAgIHRocm93ICdXcm9uZyBjb250ZXh0IG9mIGFycm93IGZ1bmN0aW9uJzsK
KyAgICB9OworCisgICAgaWYgKGIpIHsKKyAgICAgICAgYmFyKHNldCk7CisgICAgICAgIGlmIChy
ZXN1bHQgIT0gMTApCisgICAgICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZDogIiArIHJlc3VsdDsK
KyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK25vSW5s
aW5lKGJhcik7Citub0lubGluZShmb28pOworCitmb3IgKHZhciBpID0gMDsgaSA8IG47IGkrKykg
eworICAgIHZhciByZXN1bHQgPSBmb28uY2FsbChuZXdDb250ZXh0LCAhKGkgJSAxMDApKTsKKyAg
ICBpZiAocmVzdWx0ICE9IDApCisgICAgICAgIHRocm93ICJFcnJvcjogYmFkIHJlc3VsdDogIiAr
IHJlc3VsdDsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJl
c3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLXRoaXMtc2lua2luZy1uby1kb3VibGUtYWxsb2NhdGUu
anMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4
aWNhbC10aGlzLXNpbmtpbmctbm8tZG91YmxlLWFsbG9jYXRlLmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg2OWUw
MjcxMzljMTY2N2UxMDY5YmFiZDI5NWE2ZDdmYzBiOWU0MTUKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC10
aGlzLXNpbmtpbmctbm8tZG91YmxlLWFsbG9jYXRlLmpzCkBAIC0wLDAgKzEsMzcgQEAKK3ZhciBu
ZXdDb250ZXh0ID0geworICBpZCA6ICduZXctY29udGV4dCcKK307CisKK2Z1bmN0aW9uIGNhbGwo
bykgeyBvLnggPSAzOyB9Citub0lubGluZShjYWxsKTsKKworLy8gU2hvdWxkIGJlIGludm9jZWQg
YnkgY2FsbCB3aXRoIHN1YnN0aXR1dGUgdGhpcyBieSBuZXdDb250ZXh0CitmdW5jdGlvbiBzaW5r
IChwLCBxKSB7CisgICAgdmFyIGYgPSAoKSA9PiB7CisgICAgICAvLyBDaGVjayBpZiBhcnJvdyBm
dW5jdGlvbiBzdG9yZSBjb250ZXh0CisgICAgICBpZiAodGhpcyAhPSBuZXdDb250ZXh0IHx8IHRo
aXMuaWQgIT0gbmV3Q29udGV4dC5pZCkKKyAgICAgICAgICB0aHJvdyAnV3JvbmcgY29udGV4dCBv
ZiBhcnJvdyBmdW5jdGlvbiAjMSc7CisgICAgfTsKKyAgICBpZiAocCkgeworICAgICAgICBjYWxs
KGYpOyAvLyBGb3JjZSBhbGxvY2F0aW9uIG9mIGYKKyAgICAgICAgaWYgKHEpIHsKKyAgICAgICAg
ICAgIE9TUkV4aXQoKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gZjsKKyAgICB9CisgICAg
cmV0dXJuIHsgJ3gnOiAyIH07Cit9Citub0lubGluZShzaW5rKTsKKworZm9yICh2YXIgaSA9IDA7
IGkgPCAxMDAwMDA7ICsraSkgeworICAgIHZhciBvID0gc2luay5jYWxsKG5ld0NvbnRleHQsIHRy
dWUsIGZhbHNlKTsKKyAgICBpZiAoby54ICE9IDMpCisgICAgICAgIHRocm93ICJFcnJvcjogZXhw
ZWN0ZWQgby54IHRvIGJlIDIgYnV0IGlzICIgKyByZXN1bHQ7Cit9CisKKy8vIEF0IHRoaXMgcG9p
bnQsIHRoZSBhcnJvdyBmdW5jdGlvbiBzaG91bGQgYmUgY29tcGlsZWQgZG93biB0byB0aGUgRlRM
CisKKy8vIENoZWNrIHRoYXQgdGhlIGZ1bmN0aW9uIGlzIHByb3Blcmx5IGFsbG9jYXRlZCBvbiBP
U1IgZXhpdAordmFyIGYgPSBzaW5rKHRydWUsIHRydWUpOworaWYgKGYueCAhPSAzKQorICAgIHRo
cm93ICJFcnJvcjogZXhwZWN0ZWQgby54IHRvIGJlIDMgYnV0IGlzICIgKyByZXN1bHQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24t
bGV4aWNhbC10aGlzLXNpbmtpbmctb3NyZXhpdC5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLXRoaXMtc2lua2luZy1vc3JleGl0Lmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjdmZmNiM2ZhNWIxZTc3ZmI2Mjg2MTgwYjMzMmEzYmU3ZGUyOGY2MGUKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93
ZnVuY3Rpb24tbGV4aWNhbC10aGlzLXNpbmtpbmctb3NyZXhpdC5qcwpAQCAtMCwwICsxLDM2IEBA
Cit2YXIgbmV3Q29udGV4dCA9IHsKKyAgaWQgOiAnbmV3LWNvbnRleHQnCit9OworCisvLyBTaG91
bGQgYmUgaW52b2NlZCBieSBjYWxsIHdpdGggc3Vic3RpdHV0ZSB0aGlzIGJ5IG5ld0NvbnRleHQK
K2Z1bmN0aW9uIHNpbmsgKHAsIHEpIHsKKyAgICB2YXIgZyA9IHggPT4geworICAgICAgLy8gQ2hl
Y2sgaWYgYXJyb3cgZnVuY3Rpb24gc3RvcmUgY29udGV4dAorICAgICAgaWYgKHRoaXMgIT0gbmV3
Q29udGV4dCB8fCB0aGlzLmlkICE9IG5ld0NvbnRleHQuaWQpCisgICAgICAgICAgdGhyb3cgJ1dy
b25nIGNvbnRleHQgb2YgYXJyb3cgZnVuY3Rpb24gIzEnOworICAgICAgcmV0dXJuIHg7CisgICAg
fTsKKyAgICBpZiAocCkgeyBpZiAocSkgT1NSRXhpdCgpOyByZXR1cm4gZzsgfQorICAgIHJldHVy
biB4ID0+IHsKKyAgICAgIC8vIENoZWNrIGlmIGFycm93IGZ1bmN0aW9uIHN0b3JlIGNvbnRleHQK
KyAgICAgIGlmICh0aGlzICE9IG5ld0NvbnRleHQgfHwgdGhpcy5pZCAhPSBuZXdDb250ZXh0Lmlk
KQorICAgICAgICAgIHRocm93ICdXcm9uZyBjb250ZXh0IG9mIGFycm93IGZ1bmN0aW9uICMyJzsK
KyAgICAgIHJldHVybiB4OworICAgIH07Cit9Citub0lubGluZShzaW5rKTsKKworZm9yICh2YXIg
aSA9IDA7IGkgPCAxMDAwMDsgKytpKSB7CisgICAgdmFyIGYgPSBzaW5rLmNhbGwobmV3Q29udGV4
dCwgdHJ1ZSwgZmFsc2UpOy8vIFN1YnN0aXR1dGUgdGhpcworICAgIHZhciByZXN1bHQgPSBmKDQy
KTsKKyAgICBpZiAocmVzdWx0ICE9IDQyKQorICAgIHRocm93ICJFcnJvcjogZXhwZWN0ZWQgNDIg
YnV0IGdvdCAiICsgcmVzdWx0OworfQorCisvLyBBdCB0aGlzIHBvaW50LCB0aGUgZnVuY3Rpb24g
c2hvdWxkIGJlIGNvbXBpbGVkIGRvd24gdG8gdGhlIEZUTAorCisvLyBDaGVjayB0aGF0IHRoZSBm
dW5jdGlvbiBpcyBwcm9wZXJseSBhbGxvY2F0ZWQgb24gT1NSIGV4aXQKK3ZhciBmID0gc2luay5j
YWxsKG5ld0NvbnRleHQsdHJ1ZSwgdHJ1ZSk7Ly8gU3Vic3RpdHV0ZSB0aGlzCit2YXIgcmVzdWx0
ID0gZig0Mik7CitpZiAocmVzdWx0ICE9IDQyKQorICAgIHRocm93ICJFcnJvcjogZXhwZWN0ZWQg
NDIgYnV0IGdvdCAiICsgcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtdGhpcy1zaW5raW5nLXB1dC5qcyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2Fs
LXRoaXMtc2lua2luZy1wdXQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDU3ZWEwNzYzNWE0MTMxY2QyMzExZDQ1
MDczNWY1N2MxZGQ5NTg2NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLXRoaXMtc2lua2luZy1wdXQuanMK
QEAgLTAsMCArMSw0NSBAQAordmFyIG5ld0NvbnRleHQgPSB7CisgIGlkIDogJ25ldy1jb250ZXh0
JworfTsKKworLy8gU2hvdWxkIGJlIGludm9jZWQgYnkgY2FsbCB3aXRoIHN1YnN0aXR1dGUgdGhp
cyBieSBuZXdDb250ZXh0CitmdW5jdGlvbiBzaW5rIChwLCBxKSB7CisgICAgdmFyIGcgPSB4ID0+
IHsKKyAgICAgIC8vIENoZWNrIGlmIGFycm93IGZ1bmN0aW9uIHN0b3JlIGNvbnRleHQKKyAgICAg
IGlmICh0aGlzICE9IG5ld0NvbnRleHQgfHwgdGhpcy5pZCAhPSBuZXdDb250ZXh0LmlkKQorICAg
ICAgICAgIHRocm93ICdXcm9uZyBjb250ZXh0IG9mIGFycm93IGZ1bmN0aW9uICMxJzsKKworICAg
ICAgcmV0dXJuIHg7CisgICAgfTsKKyAgICBpZiAocCkgeyBpZiAocSkgZy5pbm5lciA9IDQyOyBy
ZXR1cm4gZzsgfQorICAgIHJldHVybiB4ID0+IHsKKyAgICAgIC8vIENoZWNrIGlmIGFycm93IGZ1
bmN0aW9uIHN0b3JlIGNvbnRleHQKKyAgICAgIGlmICh0aGlzICE9IG5ld0NvbnRleHQgfHwgdGhp
cy5pZCAhPSBuZXdDb250ZXh0LmlkKQorICAgICAgICAgIHRocm93ICdXcm9uZyBjb250ZXh0IG9m
IGFycm93IGZ1bmN0aW9uICMyJzsKKworICAgICAgcmV0dXJuIHg7CisgICAgfTsKK30KK25vSW5s
aW5lKHNpbmspOworCitmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwOyArK2kpIHsKKyAgICB2YXIg
ZiA9IHNpbmsuY2FsbChuZXdDb250ZXh0LCB0cnVlLCB0cnVlKTsvLyB1c2UgY2FsbCB0byBzdWJz
dGl0dXRlIGNvbnRleHQKKyAgICB2YXIgcmVzdWx0ID0gZig0Mik7CisgICAgaWYgKHJlc3VsdCAh
PSA0MikKKyAgICB0aHJvdyAiRXJyb3I6IGV4cGVjdGVkIDQyIGJ1dCBnb3QgIiArIHJlc3VsdDsK
K30KKworLy8gQXQgdGhpcyBwb2ludCwgdGhlIGFycm93IGZ1bmN0aW9uIHNob3VsZCBiZSBjb21w
aWxlZCBkb3duIHRvIHRoZSBGVEwKKworLy8gVGVzdCB0aGUgYWxsb2NhdGlvbiBvbiB0aGUgaW1w
bGljaXQgaW5uZXIgZWxzZSBicmFuY2gKK3ZhciBmID0gc2luay5jYWxsKG5ld0NvbnRleHQsIHRy
dWUsIGZhbHNlKTsKK3ZhciByZXN1bHQgPSBmKDEyKTsKK2lmIChyZXN1bHQgIT0gMTIpCisgICAg
Ly8gVGhpcyBzaG91bGRuJ3QgbWF0dGVyIGFzIGl0IHNob3VsZCBiZSBlaXRoZXIgY29ycmVjdCBv
ciBjb21wbGV0ZWx5IGNyYXNoCisgICAgdGhyb3cgIkVycm9yOiBleHBlY3RlZCAxMiBidXQgZ290
ICIgKyByZXN1bHQ7CisKKy8vIENoZWNrIHRoYXQgdGhlIGFsbG9jYXRpb24gZGlkIG5vdCBzaW5r
IGJleW9uZCB0aGUgcHJvcGVydHkgYXNzaWdubWVudAordmFyIGYgPSBzaW5rLmNhbGwobmV3Q29u
dGV4dCwgdHJ1ZSwgdHJ1ZSk7Cit2YXIgcmVzdWx0ID0gZi5pbm5lcjsKK2lmIChyZXN1bHQgIT0g
NDIpCisgICAgdGhyb3cgIkVycm9yOiBpbm5lciBzaG91bGQgYmUgNDIgYnV0IGlzICIgKyByZXN1
bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93
ZnVuY3Rpb24tb3RoZXJzLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9h
cnJvd2Z1bmN0aW9uLW90aGVycy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNGNlMGM2NThkM2EyZjc5MjI5ZGY0
Zjg5MmNjZGExNTEzYzk0ZTU5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLW90aGVycy5qcwpAQCAtMCwwICsxLDE3IEBA
Cit2YXIgdGVzdENhc2UgPSBmdW5jdGlvbiAoYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZSkgewor
ICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkgeworICAgIHRocm93IG1lc3NhZ2UgKyAiLiBFeHBl
Y3RlZCAnIiArIGV4cGVjdGVkICsgIicsIGJ1dCB3YXMgJyIgKyBhY3R1YWwgKyAiJyI7CisgIH0K
K307CisKK3ZhciBzaW1wbGVBcnJvd0Z1bmN0aW9uID0gKCkgPT4ge307CisKK25vSW5saW5lKHNp
bXBsZUFycm93RnVuY3Rpb24pOworCitmb3IgKHZhciBpPTA7aTwxMDAwMDtpKyspIHsKKyAgIHRl
c3RDYXNlKE9iamVjdC5nZXRQcm90b3R5cGVPZihzaW1wbGVBcnJvd0Z1bmN0aW9uKSwgRnVuY3Rp
b24ucHJvdG90eXBlLCAiRXJyb3I6IE5vdCBjb3JyZWN0IGdldFByb3RvdHlwZU9mIHZhbHVlIGZv
ciBhcnJvdyBmdW5jdGlvbiIpOworCisgICB0ZXN0Q2FzZShzaW1wbGVBcnJvd0Z1bmN0aW9uIGlu
c3RhbmNlb2YgRnVuY3Rpb24sIHRydWUsICJFcnJvcjogTm90IGNvcnJlY3QgcmVzdWx0IGZvciBp
bnN0YW5jZW9mIG1ldGhvZCBmb3IgYXJyb3cgZnVuY3Rpb24iKTsKKworICAgdGVzdENhc2Uoc2lt
cGxlQXJyb3dGdW5jdGlvbi5jb25zdHJ1Y3RvciA9PSBGdW5jdGlvbiwgdHJ1ZSwgIkVycm9yOiBO
b3QgY29ycmVjdCByZXN1bHQgZm9yIGNvbnN0cnVjdG9yIG1ldGhvZCBvZiBhcnJvdyBmdW5jdGlv
ICAgbiIpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVz
cy9hcnJvd2Z1bmN0aW9uLXJ1bi0xMC0xLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3Rz
L3N0cmVzcy9hcnJvd2Z1bmN0aW9uLXJ1bi0xMC0xLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA3YTFmMGE0OWNi
MTY4NjNjNTkyMTM2MWYwYWRiMWUxNGVjOWI2NWEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tcnVuLTEwLTEuanMKQEAg
LTAsMCArMSwyNCBAQAordmFyIHRlc3RDYXNlID0gZnVuY3Rpb24gKGFjdHVhbCwgZXhwZWN0ZWQs
IG1lc3NhZ2UpIHsKKyAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpIHsKKyAgICB0aHJvdyBtZXNz
YWdlICsgIi4gRXhwZWN0ZWQgJyIgKyBleHBlY3RlZCArICInLCBidXQgd2FzICciICsgYWN0dWFs
ICsgIiciOworICB9Cit9OworCitmdW5jdGlvbiBydW4oY291bnQpIHsKKyAgdmFyIHJlc3VsdCA9
IHRydWU7CisgIGZvcih2YXIgaT0wOyBpPGNvdW50OyBpKyspIHsKKyAgICB2YXIgT2JqID0gZnVu
Y3Rpb24gKG5hbWUpIHsKKyAgICAgIHRoaXMubmFtZSA9IG5hbWU7CisgICAgICB0aGlzLmdldE5h
bWUgPSAoKSA9PiB0aGlzLm5hbWU7CisgICAgfTsKKworICAgIHZhciBvYmogPSBuZXcgT2JqKCJJ
dGVtIiArIGkpOworICAgIGlmIChvYmoubmFtZSAhPT0gb2JqLmdldE5hbWUoKSkgeworICAgICAg
cmVzdWx0ID0gZmFsc2U7CisgICAgfQorICB9CisgIHJldHVybiByZXN1bHQ7Cit9CisKK3Rlc3RD
YXNlKHJ1bigxKSwgdHJ1ZSwgIkVycm9yOiBFcnJvcjogZHVyaW5nIGV4ZWN1dGlvbiBvZiBhcnJv
dyBmdW5jdGlvbiBvbmUgdGltZSIpOwordGVzdENhc2UocnVuKDEwKSwgdHJ1ZSwgIkVycm9yOiBF
cnJvcjogZHVyaW5nIGV4ZWN1dGlvbiBvZiBhcnJvdyBmdW5jdGlvbiAxMCB0aW1lcyIpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9u
LXJ1bi0xMC0yLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1
bmN0aW9uLXJ1bi0xMC0yLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVkZGNkYjNjNzBhMWIyN2MzZGJiNTIzODA5
NTVmNTM1M2Q3Njc0MjUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
dGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tcnVuLTEwLTIuanMKQEAgLTAsMCArMSwyNSBAQAor
dmFyIHRlc3RDYXNlID0gZnVuY3Rpb24gKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2UpIHsKKyAg
aWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpIHsKKyAgICB0aHJvdyBtZXNzYWdlICsgIi4gRXhwZWN0
ZWQgJyIgKyBleHBlY3RlZCArICInLCBidXQgd2FzICciICsgYWN0dWFsICsgIiciOworICB9Cit9
OworCitmdW5jdGlvbiBydW4oY291bnQpIHsKKyAgdmFyIHJlc3VsdCA9IHRydWU7CisgIGZvcih2
YXIgaT0wOyBpPGNvdW50OyBpKyspIHsKKyAgICB2YXIgT2JqID0gZnVuY3Rpb24gKG5hbWUpIHsK
KyAgICAgIHRoaXMubmFtZSA9IG5hbWU7CisgICAgICB0aGlzLmdldE5hbWUgPSAoKSA9PiBldmFs
KCJ0aGlzLm5hbWUiKTs7CisgICAgfTsKKworCisgICAgdmFyIG9iaiA9IG5ldyBPYmooIkl0ZW0i
ICsgaSk7CisgICAgaWYgKG9iai5uYW1lICE9PSBvYmouZ2V0TmFtZSgpKSB7CisgICAgICByZXN1
bHQgPSBmYWxzZTsKKyAgICB9CisgIH0KKyAgcmV0dXJuIHJlc3VsdDsKK30KKwordGVzdENhc2Uo
cnVuKDEpLCB0cnVlLCAiRXJyb3I6IGR1cmluZyBleGVjdXRpb24gb2YgYXJyb3cgZnVuY3Rpb24g
b25lIHRpbWUiKTsKK3Rlc3RDYXNlKHJ1bigxMCksIHRydWUsICJFcnJvcjogZHVyaW5nIGV4ZWN1
dGlvbiBvZiBhcnJvdyBmdW5jdGlvbiAxMCB0aW1lcyIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLXJ1bi0xMDAwMC0xLmpzIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLXJ1bi0xMDAw
MC0xLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjBlNWY2YmM4NmJkMzE0NTFiMDFjYTI3ZDBiOTcyMGI1N2U4ZDYw
NTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNz
L2Fycm93ZnVuY3Rpb24tcnVuLTEwMDAwLTEuanMKQEAgLTAsMCArMSwyMyBAQAordmFyIHRlc3RD
YXNlID0gZnVuY3Rpb24gKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2UpIHsKKyAgaWYgKGFjdHVh
bCAhPT0gZXhwZWN0ZWQpIHsKKyAgICB0aHJvdyBtZXNzYWdlICsgIi4gRXhwZWN0ZWQgJyIgKyBl
eHBlY3RlZCArICInLCBidXQgd2FzICciICsgYWN0dWFsICsgIiciOworICB9Cit9OworCitmdW5j
dGlvbiBydW4oY291bnQpIHsKKyAgdmFyIHJlc3VsdCA9IHRydWU7CisgIGZvcih2YXIgaT0wOyBp
PGNvdW50OyBpKyspIHsKKyAgICB2YXIgT2JqID0gZnVuY3Rpb24gKG5hbWUpIHsKKyAgICAgIHRo
aXMubmFtZSA9IG5hbWU7CisgICAgICB0aGlzLmdldE5hbWUgPSAoKSA9PiB0aGlzLm5hbWU7Cisg
ICAgfTsKKworICAgIHZhciBvYmogPSBuZXcgT2JqKCJJdGVtIiArIGkpOworICAgIGlmIChvYmou
bmFtZSAhPT0gb2JqLmdldE5hbWUoKSkgeworICAgICAgcmVzdWx0ID0gZmFsc2U7CisgICAgfQor
ICB9CisgIHJldHVybiByZXN1bHQ7Cit9CisKK3Rlc3RDYXNlKHJ1bigxMDAwMCksIHRydWUsICJF
cnJvcjogRXJyb3I6IGR1cmluZyBleGVjdXRpb24gb2YgYXJyb3cgZnVuY3Rpb24gMTAwMDAgdGlt
ZXMiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJy
b3dmdW5jdGlvbi1ydW4tMTAwMDAtMi5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9z
dHJlc3MvYXJyb3dmdW5jdGlvbi1ydW4tMTAwMDAtMi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kYzQyNzFmNGEz
MTU5MTYyNWEwYmQzZDc0NGQyNTEyNjMzMzAyZTQzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLXJ1bi0xMDAwMC0yLmpz
CkBAIC0wLDAgKzEsMjMgQEAKK3ZhciB0ZXN0Q2FzZSA9IGZ1bmN0aW9uIChhY3R1YWwsIGV4cGVj
dGVkLCBtZXNzYWdlKSB7CisgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKSB7CisgICAgdGhyb3cg
bWVzc2FnZSArICIuIEV4cGVjdGVkICciICsgZXhwZWN0ZWQgKyAiJywgYnV0IHdhcyAnIiArIGFj
dHVhbCArICInIjsKKyAgfQorfTsKKworZnVuY3Rpb24gcnVuKGNvdW50KSB7CisgIHZhciByZXN1
bHQgPSB0cnVlOworICBmb3IgKHZhciBpPTA7IGk8Y291bnQ7IGkrKykgeworICAgIHZhciBPYmog
PSBmdW5jdGlvbiAobmFtZSkgeworICAgICAgdGhpcy5uYW1lID0gbmFtZTsKKyAgICAgIHRoaXMu
Z2V0TmFtZSA9ICgpID0+IGV2YWwoInRoaXMubmFtZSIpOzsKKyAgICB9OworCisgICAgdmFyIG9i
aiA9IG5ldyBPYmooIkl0ZW0iICsgaSk7CisgICAgaWYgKG9iai5uYW1lICE9PSBvYmouZ2V0TmFt
ZSgpKSB7CisgICAgICByZXN1bHQgPSBmYWxzZTsKKyAgICB9CisgIH0KKyAgcmV0dXJuIHJlc3Vs
dDsKK30KKwordGVzdENhc2UocnVuKDEwMDAwKSwgdHJ1ZSwgIkVycm9yOiBFcnJvcjogZHVyaW5n
IGV4ZWN1dGlvbiBvZiBhcnJvdyBmdW5jdGlvbiAxMDAwMCB0aW1lcyIpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLXNpbmtpbmct
bm8tZG91YmxlLWFsbG9jYXRlLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVz
cy9hcnJvd2Z1bmN0aW9uLXNpbmtpbmctbm8tZG91YmxlLWFsbG9jYXRlLmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmQyODYyYzYyOGUzYjJjYTMwNDQxMGIxYWUyMjY5NDcxODA1MWRlYzEKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tc2lu
a2luZy1uby1kb3VibGUtYWxsb2NhdGUuanMKQEAgLTAsMCArMSwyOCBAQAorZnVuY3Rpb24gY2Fs
bChvKSB7IG8ueCA9IDM7IH0KK25vSW5saW5lKGNhbGwpOworCitmdW5jdGlvbiBzaW5rIChwLCBx
KSB7CisgICAgdmFyIGYgPSAoKSA9PiB7IH07CisgICAgaWYgKHApIHsKKyAgICAgICAgY2FsbChm
KTsgLy8gRm9yY2UgYWxsb2NhdGlvbiBvZiBmCisgICAgICAgIGlmIChxKSB7CisgICAgICAgICAg
ICBPU1JFeGl0KCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGY7CisgICAgfQorICAgIHJl
dHVybiB7ICd4JzogMiB9OworfQorbm9JbmxpbmUoc2luayk7CisKK2ZvciAodmFyIGkgPSAwOyBp
IDwgMTAwMDAwOyArK2kpIHsKKyAgICB2YXIgbyA9IHNpbmsodHJ1ZSwgZmFsc2UpOworICAgIGlm
IChvLnggIT0gMykKKyAgICAgICAgdGhyb3cgIkVycm9yOiBleHBlY3RlZCBvLnggdG8gYmUgMiBi
dXQgaXMgIiArIHJlc3VsdDsKK30KKworLy8gQXQgdGhpcyBwb2ludCwgdGhlIGZ1bmN0aW9uIHNo
b3VsZCBiZSBjb21waWxlZCBkb3duIHRvIHRoZSBGVEwKKworLy8gQ2hlY2sgdGhhdCB0aGUgZnVu
Y3Rpb24gaXMgcHJvcGVybHkgYWxsb2NhdGVkIG9uIE9TUiBleGl0Cit2YXIgZiA9IHNpbmsodHJ1
ZSwgdHJ1ZSk7CitpZiAoZi54ICE9IDMpCisgICAgdGhyb3cgIkVycm9yOiBleHBlY3RlZCBvLngg
dG8gYmUgMyBidXQgaXMgIiArIHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1zaW5raW5nLW9zcmV4aXQuanMgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tc2lua2luZy1vc3Jl
eGl0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjcyN2YzY2EzYmRlOGRhMzAxNDBmYTE0OTk3M2UxN2FhYThkOTEw
NWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNz
L2Fycm93ZnVuY3Rpb24tc2lua2luZy1vc3JleGl0LmpzCkBAIC0wLDAgKzEsMjEgQEAKK2Z1bmN0
aW9uIHNpbmsgKHAsIHEpIHsKKyAgICB2YXIgZyA9IHggPT4geDsKKyAgICBpZiAocCkgeyBpZiAo
cSkgT1NSRXhpdCgpOyByZXR1cm4gZzsgfQorICAgIHJldHVybiB4ID0+IHg7Cit9Citub0lubGlu
ZShzaW5rKTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgKytpKSB7CisgICAgdmFyIGYg
PSBzaW5rKHRydWUsIGZhbHNlKTsKKyAgICB2YXIgcmVzdWx0ID0gZig0Mik7CisgICAgaWYgKHJl
c3VsdCAhPSA0MikKKyAgICB0aHJvdyAiRXJyb3I6IGV4cGVjdGVkIDQyIGJ1dCBnb3QgIiArIHJl
c3VsdDsKK30KKworLy8gQXQgdGhpcyBwb2ludCwgdGhlIGZ1bmN0aW9uIHNob3VsZCBiZSBjb21w
aWxlZCBkb3duIHRvIHRoZSBGVEwKKworLy8gQ2hlY2sgdGhhdCB0aGUgZnVuY3Rpb24gaXMgcHJv
cGVybHkgYWxsb2NhdGVkIG9uIE9TUiBleGl0Cit2YXIgZiA9IHNpbmsodHJ1ZSwgdHJ1ZSk7Cit2
YXIgcmVzdWx0ID0gZig0Mik7CitpZiAocmVzdWx0ICE9IDQyKQorICAgIHRocm93ICJFcnJvcjog
ZXhwZWN0ZWQgNDIgYnV0IGdvdCAiICsgcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLXNpbmtpbmctcHV0LmpzIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLXNpbmtpbmctcHV0
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjhkYjcwYmI5YWJjMjMxNDhmNjI3ZWZjNjE4NmJlMDU3YzNjYmIyNzYK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fy
cm93ZnVuY3Rpb24tc2lua2luZy1wdXQuanMKQEAgLTAsMCArMSwyOCBAQAorZnVuY3Rpb24gc2lu
ayAocCwgcSkgeworICAgIHZhciBnID0geCA9PiB4OworICAgIGlmIChwKSB7IGlmIChxKSBnLmlu
bmVyID0gNDI7IHJldHVybiBnOyB9CisgICAgcmV0dXJuIHggPT4geDsKK30KK25vSW5saW5lKHNp
bmspOworCitmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwOyArK2kpIHsKKyAgICB2YXIgZiA9IHNp
bmsodHJ1ZSwgdHJ1ZSk7CisgICAgdmFyIHJlc3VsdCA9IGYoNDIpOworICAgIGlmIChyZXN1bHQg
IT0gNDIpCisgICAgdGhyb3cgIkVycm9yOiBleHBlY3RlZCA0MiBidXQgZ290ICIgKyByZXN1bHQ7
Cit9CisKKy8vIEF0IHRoaXMgcG9pbnQsIHRoZSBmdW5jdGlvbiBzaG91bGQgYmUgY29tcGlsZWQg
ZG93biB0byB0aGUgRlRMCisKKy8vIFRlc3QgdGhlIGFsbG9jYXRpb24gb24gdGhlIGltcGxpY2l0
IGlubmVyIGVsc2UgYnJhbmNoCit2YXIgZiA9IHNpbmsodHJ1ZSwgZmFsc2UpOwordmFyIHJlc3Vs
dCA9IGYoMTIpOworaWYgKHJlc3VsdCAhPSAxMikKKyAgICAvLyBUaGlzIHNob3VsZG4ndCBtYXR0
ZXIgYXMgaXQgc2hvdWxkIGJlIGVpdGhlciBjb3JyZWN0IG9yIGNvbXBsZXRlbHkgY3Jhc2gKKyAg
ICB0aHJvdyAiRXJyb3I6IGV4cGVjdGVkIDEyIGJ1dCBnb3QgIiArIHJlc3VsdDsKKworLy8gQ2hl
Y2sgdGhhdCB0aGUgYWxsb2NhdGlvbiBkaWQgbm90IHNpbmsgYmV5b25kIHRoZSBwcm9wZXJ0eSBh
c3NpZ25tZW50Cit2YXIgZiA9IHNpbmsodHJ1ZSwgdHJ1ZSk7Cit2YXIgcmVzdWx0ID0gZi5pbm5l
cjsKK2lmIChyZXN1bHQgIT0gNDIpCisgICAgdGhyb3cgIkVycm9yOiBpbm5lciBzaG91bGQgYmUg
NDIgYnV0IGlzICIgKyByZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
dGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tdGR6LmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLXRkei5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ODc0OTIzOTcx
OTgzZGNkYTM0YzI2OTM5MjExN2IxNzQ4ZTY3YjRhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLXRkei5qcwpAQCAtMCww
ICsxLDI3IEBACit2YXIgQSA9IGNsYXNzIEEgeyB9OwordmFyIEIgPSBjbGFzcyBCIGV4dGVuZHMg
QSB7CisgIGNvbnN0cnVjdG9yKGFjY2Vzc1RoaXNCZWZvcmVTdXBlcikgeworICAgIGlmIChhY2Nl
c3NUaGlzQmVmb3JlU3VwZXIpIHsKKyAgICAgIHZhciBmID0gKCkgPT4gdGhpczsKKyAgICAgIHN1
cGVyKCk7CisgICAgfSBlbHNlIHsKKyAgICAgIHN1cGVyKCk7CisgICAgfQorICB9Cit9OworCit2
YXIgZXhjZXB0aW9uID0gbnVsbDsKK2ZvciAodmFyIGk9MDsgaTwxMDAwMDsgaSsrKSB7CisgIHRy
eSB7CisgICAgICAgbmV3IEIodHJ1ZSk7CisgIH0gY2F0Y2ggKGUpIHsKKyAgICAgIGV4Y2VwdGlv
biA9IGU7CisgICAgICBpZiAoIShlIGluc3RhbmNlb2YgUmVmZXJlbmNlRXJyb3IpKQorICAgICAg
ICAgIHRocm93ICJFeGNlcHRpb24gdGhyb3duIHdhcyBub3QgYSByZWZlcmVuY2UgZXJyb3IiOwor
ICB9CisKKyAgaWYgKCFleGNlcHRpb24pCisgICAgICB0aHJvdyAiRXhjZXB0aW9uIG5vdCB0aHJv
d24gZm9yIGFuIHVuaXRpYWxpemVkIHRoaXMgYXQgaXRlcmF0aW9uIjsKKworICB2YXIgZSA9IG5l
dyBCKGZhbHNlKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9z
dHJlc3MvYXJyb3dmdW5jdGlvbi10eXBlb2YuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVz
dHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tdHlwZW9mLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc1M2VjMGRkZDU1
MTRmYWY0ZDBkMDNjOWUwNjU3MGEwYzgyYmU2NGUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tdHlwZW9mLmpzCkBAIC0w
LDAgKzEsMjcgQEAKK3ZhciB0ZXN0Q2FzZSA9IGZ1bmN0aW9uIChhY3R1YWwsIGV4cGVjdGVkLCBt
ZXNzYWdlKSB7CisgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKSB7CisgICAgdGhyb3cgbWVzc2Fn
ZSArICIuIEV4cGVjdGVkICciICsgZXhwZWN0ZWQgKyAiJywgYnV0IHdhcyAnIiArIGFjdHVhbCAr
ICInIjsKKyAgfQorfTsKKwordmFyIGFmMSA9ICgpID0+IHt9OwordmFyIGFmMiA9IChhKSA9PiB7
YSArIDF9OworCitub0lubGluZShhZjEpOworbm9JbmxpbmUoYWYyKTsKKworZm9yICh2YXIgaSA9
IDA7IGkgPCAxMDAwMDsgKytpKSB7CisgIHRlc3RDYXNlKHR5cGVvZiBhZjEsICJmdW5jdGlvbiIs
ICJFcnJvcjogTm90IGNvcnJlY3QgdHlwZSBvZiB0aGUgYXJyb3cgZnVuY3Rpb24gIzEiKTsKKyAg
dGVzdENhc2UodHlwZW9mIGFmMiwgImZ1bmN0aW9uIiwgIkVycm9yOiBOb3QgY29ycmVjdCB0eXBl
IG9mIHRoZSBhcnJvdyBmdW5jdGlvbiAjMiIpOworCisvL0ZpeG1lOiBTb21lIGJ1ZyBpbiBpbmxp
bmluZyB0eXBlb2Ygd2l0aCBmb2xsb3dpbmcgcnVuIHBhcmFtZXRlcnMgZnRsLW5vLWNqaXQtbm8t
aW5saW5lLXZhbGlkYXRlCisvLyAtLXVzZUZUTEpJVFw9dHJ1ZSAtLWVuYWJsZUZ1bmN0aW9uRG90
QXJndW1lbnRzXD10cnVlIC0tZW5hYmxlQ29uY3VycmVudEpJVD1mYWxzZSAtLXRocmVzaG9sZEZv
ckpJVEFmdGVyV2FybVVwPTEwMCAgLS12YWxpZGF0ZUdyYXBoPXRydWUgLS1tYXhpbXVtSW5saW5p
bmdEZXB0aD0xCisvLworLy8gZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgKytpKSAgeworLy8g
ICBpZiAodHlwZW9mIChmdW5jdGlvbiAoKSB7fSkgIT09ICdmdW5jdGlvbicpCisvLyAgICAgICB0
aHJvdyAnV3JvbmcgdHlwZSc7CisvLyB9CisvLyAgdGVzdENhc2UodHlwZW9mICgpPT57fSwgImZ1
bmN0aW9uIiwgIkVycm9yOiBOb3QgY29ycmVjdCB0eXBlIG9mIHRoZSBhcnJvdyBmdW5jdGlvbiAj
My0iICsgaSk7CisKKy8vICB0ZXN0Q2FzZSh0eXBlb2YgKChiKSA9PiB7YiArIDF9KSwgImZ1bmN0
aW9uIiwgIkVycm9yOiBOb3QgY29ycmVjdCB0eXBlIG9mIHRoZSBhcnJvdyBmdW5jdGlvbiAjNCIp
OworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCmluZGV4IGE5MGI4ZjNhMWQ5NWZjNDNiZGVlYmUzNDU3Y2FhNjRkMWU2YjdhMDIuLmYx
ZDFiOGYxNTAwYWRjY2U4YjczYzY4ODVjODA1ODgzYzk2NzA1MTMgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwz
NiBAQAorMjAxNS0wOC0xMiAgU2thY2hrb3YgT2xla3NhbmRyICA8Z3NrYWNoa292QGdtYWlsLmNv
bT4KKworICAgICAgICBbRVM2XSBJbXBsZW1lbnQgRVM2IGFycm93IGZ1bmN0aW9uIHN5bnRheC4g
QXJyb3cgZnVuY3Rpb24gc3BlY2lmaWMgZmVhdHVyZXMuIExleGljYWwgYmluZCBvZiB0aGlzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDQ5NTYKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGpzL2Fycm93
ZnVuY3Rpb24tYmluZC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGpzL2Fycm93ZnVu
Y3Rpb24tYmluZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBqcy9hcnJvd2Z1bmN0aW9uLWNhbGwt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBqcy9hcnJvd2Z1bmN0aW9uLWNhbGwuaHRt
bDogQWRkZWQuCisgICAgICAgICoganMvYXJyb3dmdW5jdGlvbi1jb25zdHJ1Y3Rvci1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGpzL2Fycm93ZnVuY3Rpb24tY29uc3RydWN0b3IuaHRt
bDogQWRkZWQuCisgICAgICAgICoganMvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGpzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1i
aW5kLXRoaXMuaHRtbDogQWRkZWQuCisgICAgICAgICoganMvYXJyb3dmdW5jdGlvbi1vdGhlcnMt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBqcy9hcnJvd2Z1bmN0aW9uLW90aGVycy5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiBqcy9hcnJvd2Z1bmN0aW9uLXRkei1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIGpzL2Fycm93ZnVuY3Rpb24tdGR6Lmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIGpzL2Fycm93ZnVuY3Rpb24tdHlwZW9mLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICoganMvYXJyb3dmdW5jdGlvbi10eXBlb2YuaHRtbDogQWRkZWQuCisgICAgICAgICoganMv
cmVncmVzcy9hcnJvd2Z1bmN0aW9uLWNhbGwtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBqcy9yZWdyZXNzL2Fycm93ZnVuY3Rpb24tY2FsbC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBq
cy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLWNhbGwuanM6IEFkZGVkLgorICAg
ICAgICAqIGpzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL2Z1bmN0aW9uLWNhbGwuanM6IEFkZGVkLgor
ICAgICAgICAqIGpzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLWJpbmQuanM6IEFkZGVkLgor
ICAgICAgICAqIGpzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLWNhbGwuanM6IEFkZGVkLgor
ICAgICAgICAqIGpzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLWNvbnN0cnVjdG9yLmpzOiBB
ZGRlZC4KKyAgICAgICAgKiBqcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJp
bmQtdGhpcy5qczogQWRkZWQuCisgICAgICAgICoganMvc2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rp
b24tb3RoZXJzLmpzOiBBZGRlZC4KKyAgICAgICAgKiBqcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5j
dGlvbi10ZHouanM6IEFkZGVkLgorICAgICAgICAqIGpzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0
aW9uLXR5cGVvZi5qczogQWRkZWQuCisKIDIwMTUtMDgtMTMgIEpvc2VwaCBQZWNvcmFybyAgPHBl
Y29yYXJvQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBSZWR1Y2UgZmxha2lu
ZXNzIG9mIGluc3BlY3Rvci9pbmRleGVkZGIvcmVxdWVzdERhdGFiYXNlTmFtZXMKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tYmluZC1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLWJpbmQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIy
YjMyNmNjYmI0ZTE0YzY4OWRkN2Q5MzgzY2M1YmM5NGZmN2YwMTQKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLWJpbmQtZXhwZWN0ZWQudHh0CkBAIC0wLDAg
KzEsMTAgQEAKK1Rlc3RzIGZvciBFUzYgYXJyb3cgZnVuY3Rpb24sIHRoaXMgc2hvdWxkIGJlIG92
ZXJ3cml0dGVuIGR1cmluZyBpbnZva2UgYmluZAorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUg
YSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIu
CisKKworUEFTUyBkLnkoKS5iaW5kKGUsICdsZXknKSgpIGlzICdiYXJsZXknCitQQVNTIHN1Y2Nl
c3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1iaW5kLmh0bWwgYi9MYXlvdXRUZXN0cy9qcy9hcnJv
d2Z1bmN0aW9uLWJpbmQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wYjlhY2IyYmM4ZmQ1MDRjNjhmMDQ0NWE2
ZWFjNGE2YTE0NTRhYmFiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvYXJyb3dm
dW5jdGlvbi1iaW5kLmh0bWwKQEAgLTAsMCArMSwxMCBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElD
ICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIu
Li9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8
c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tYmluZC5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8
L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9u
LWNhbGwtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1jYWxsLWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45YzA3N2Y5OTc5YWNmNDVlMTZiOTk2NTcyZDFhZmRlZWRk
NTkxMTI0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1j
YWxsLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDExIEBACitUZXN0cyBmb3IgRVM2IGFycm93IGZ1
bmN0aW9uLCB0aGlzIHNob3VsZCBiZSBvdmVyd3JpdHRlbiBkdXJpbmcgaW52b2tlIGNhbGwmYXBw
bHkKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdl
cywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgZC55KCkuY2FsbChlKSBp
cyAnZm9vJworUEFTUyBkLnkoKS5hcHBseShlKSBpcyAnZm9vJworUEFTUyBzdWNjZXNzZnVsbHlQ
YXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2pzL2Fycm93ZnVuY3Rpb24tY2FsbC5odG1sIGIvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlv
bi1jYWxsLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzFkOGE0N2UzMGI2YTg3NDllYzViN2U3ODNjNmE5ZWMz
MTMyZDJkMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24t
Y2FsbC5odG1sCkBAIC0wLDAgKzEsMTAgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVU
Ri8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3Vy
Y2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBz
cmM9InNjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLWNhbGwuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5Pgor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1jb25zdHJ1
Y3Rvci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLWNvbnN0cnVj
dG9yLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NjcwNmZmZjE3YzIxMjM4NTM2NDBiYjJhNGVi
MTdkNjNlMWEzNzIzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5j
dGlvbi1jb25zdHJ1Y3Rvci1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMCBAQAorVGVzdHMgZm9y
IEVTNiBhcnJvdyBmdW5jdGlvbiBubyBjb25zdHJ1Y3RvcgorCitPbiBzdWNjZXNzLCB5b3Ugd2ls
bCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01Q
TEVURSIuCisKKworUEFTUyBuZXcgc2ltcGxlQXJyb3dGdW5jdGlvbigpIHRocmV3IGV4Y2VwdGlv
biBUeXBlRXJyb3I6IGZ1bmN0aW9uIGlzIG5vdCBhIGNvbnN0cnVjdG9yIChldmFsdWF0aW5nICdu
ZXcgc2ltcGxlQXJyb3dGdW5jdGlvbigpJykuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0
cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvYXJyb3dm
dW5jdGlvbi1jb25zdHJ1Y3Rvci5odG1sIGIvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1j
b25zdHJ1Y3Rvci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIwYzBiOWE5Y2RkNGQ4YmRmYTYyNDFjYjZiZWZi
ZjA0Y2M5NTgzMGYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0
aW9uLWNvbnN0cnVjdG9yLmh0bWwKQEAgLTAsMCArMSwxMCBAQAorPCFET0NUWVBFIEhUTUwgUFVC
TElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3Jj
PSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+
Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tY29uc3RydWN0b3IuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwv
c2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvYXJy
b3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9q
cy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtYmluZC10aGlzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4zYjY2ZmMyODhjYWNiZDljOTM3Yzk3MWMyYmQ2YjY4ZTY2NGE5NDg5Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSwyMiBAQAorVGVzdHMgZm9yIEVTNiBhcnJvdyBmdW5jdGlvbiBs
ZXhpY2FsIGJpbmQgb2YgdGhpcworCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMg
b2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFT
UyBkLmdldE5hbWUoKSBpcyBkLm5hbWUKK1BBU1MgZC5nZXROYW1lSGFyZCgpIGlzIGQubmFtZQor
UEFTUyBkLmdldE5hbWVOZXN0aW5nKCkoKSgpIGlzIGQubmFtZQorUEFTUyBvYmoubWV0aG9kKCko
J2NvcnJlY3QnKSBpcyAnb2JqQ29kZS1uYW1lLWNvcnJlY3QnCitQQVNTIG9iai5tZXRob2QoKSgn
Y29ycmVjdCcpIGlzICduZXdPYmpDb2RlLW5hbWUtY29ycmVjdCcKK1BBU1MgZGVlcE9iai5pbnRl
cm5hbE9iamVjdC5tZXRob2QoKSgnY29ycmVjdCcpIGlzICdpbnRlcm5hbE9iamVjdC1uYW1lLWNv
cnJlY3QnCitQQVNTIGRlZXBPYmouaW50ZXJuYWxPYmplY3QubWV0aG9kKCkoJ2NvcnJlY3QnKSBp
cyAnbmV3SW50ZXJuYWxPYmplY3QtbmFtZS1jb3JyZWN0JworUEFTUyBpbnN0YW5jZS5mdW5jKCkg
PT09IGluc3RhbmNlIGlzIHRydWUKK1BBU1Mgb3duZXJPYmoubWV0aG9kKCkoKSA9PT0gb3duZXJP
YmogaXMgdHJ1ZQorUEFTUyBmYWtlLnN0ZWFsKCkgPT09IG93bmVyT2JqIGlzIHRydWUKK1BBU1Mg
cmVhbC5ib3Jyb3coKSgpID09PSByZWFsIGlzIHRydWUKK1BBU1MgYXJyb3dGdW5jdGlvbignLXRo
aXMnKSBpcyAicmlnaHQtdGhpcyIKK1BBU1MgaG9zdE9iai5mdW5jKCctdGhpcycpIGlzICJyaWdo
dC10aGlzIgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRF
CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5k
LXRoaXMuaHRtbCBiL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRo
aXMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi44MWVhMjJhNzZmZGY4YmZmNWU3MmU1MWI3Nzk0YjNlMzQ3ZDE2
NDJhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1sZXhp
Y2FsLWJpbmQtdGhpcy5odG1sCkBAIC0wLDAgKzEsMTAgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJ
QyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0i
Li4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5Pgor
PHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtYmluZC10aGlz
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0Lmpz
Ij48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pz
L2Fycm93ZnVuY3Rpb24tb3RoZXJzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2pzL2Fycm93
ZnVuY3Rpb24tb3RoZXJzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xOTE1MmU1ZTM3YzY5MTVm
MzgyM2UyOWIyMGE5NGRmNTNkMDhjMDAxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
anMvYXJyb3dmdW5jdGlvbi1vdGhlcnMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTIgQEAKK1Rl
c3RzIGZvciBFUzYgYXJyb3cgZnVuY3Rpb24gaW5zdGFuY2VvZiBhbmQgdHlwZW9mIG9wZXJhdG9y
cworCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2Vz
LCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBPYmplY3QuZ2V0UHJvdG90
eXBlT2Yoc2ltcGxlQXJyb3dGdW5jdGlvbikgaXMgRnVuY3Rpb24ucHJvdG90eXBlCitQQVNTIHNp
bXBsZUFycm93RnVuY3Rpb24gaW5zdGFuY2VvZiBGdW5jdGlvbiBpcyB0cnVlCitQQVNTIHNpbXBs
ZUFycm93RnVuY3Rpb24uY29uc3RydWN0b3IgPT0gRnVuY3Rpb24gaXMgdHJ1ZQorUEFTUyBzdWNj
ZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tb3RoZXJzLmh0bWwgYi9MYXlvdXRUZXN0cy9qcy9h
cnJvd2Z1bmN0aW9uLW90aGVycy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlmNjdmOGIwMGU0NjA1NWVlNmZh
ZTVjMWU4Mjg5ZWZlZTFmMTEwOTAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9h
cnJvd2Z1bmN0aW9uLW90aGVycy5odG1sCkBAIC0wLDAgKzEsMTAgQEAKKzwhRE9DVFlQRSBIVE1M
IFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0
IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLW90aGVycy5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9hcnJv
d2Z1bmN0aW9uLXRkei1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9u
LXRkei1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTdhZjZjZDg2MDBlODg0MTI3N2M0OTRhOTg5
MDIyNDUyZWE2YWI1ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL2Fycm93ZnVu
Y3Rpb24tdGR6LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEwIEBACitUZXN0cyBmb3IgRVM2IGFy
cm93IGZ1bmN0aW9uIHRlc3QgdGR6CisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmll
cyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQ
QVNTIGlzUmVmZXJlbmNlRXJyb3IgaXMgdHJ1ZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMg
dHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2Fycm93
ZnVuY3Rpb24tdGR6Lmh0bWwgYi9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLXRkei5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmY4ZWYxNzFjYjgyMGJlYjNjYjRhN2QzZmM0OGU1YzUzZmMxMTkyNmQKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLXRkei5odG1sCkBA
IC0wLDAgKzEsMTAgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwv
L0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9InNjcmlwdC10
ZXN0cy9hcnJvd2Z1bmN0aW9uLXRkei5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVz
b3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLXR5cGVvZi1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLXR5cGVvZi1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNjJmYjJjZTk2NGJkMDMzMjFiODMyY2I4N2JiYWUwY2E1MzQ5YzFiYwotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tdHlwZW9mLWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDggQEAKK1BBU1MgdHlwZW9mIGFmMSA9PT0gJ2Z1bmN0aW9uJyBpcyB0cnVl
CitQQVNTIHR5cGVvZiBhZjIgPT09ICdmdW5jdGlvbicgaXMgdHJ1ZQorUEFTUyB0eXBlb2YgKCgp
PT57fSkgPT09ICdmdW5jdGlvbicgaXMgdHJ1ZQorUEFTUyB0eXBlb2YgKChiKSA9PiB7YiArIDF9
KT09PSdmdW5jdGlvbicgaXMgdHJ1ZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQor
CitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rp
b24tdHlwZW9mLmh0bWwgYi9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLXR5cGVvZi5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmYwYWNhYWExYTRlNGQwZTRjYjNkMDc2NWUzNzNmZWRiNzQzODBlMDEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLXR5cGVvZi5odG1s
CkBAIC0wLDAgKzEsMTAgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhU
TUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9InNjcmlw
dC10ZXN0cy9hcnJvd2Z1bmN0aW9uLXR5cGVvZi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL2Fycm93ZnVuY3Rpb24tY2FsbC1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL2Fycm93ZnVuY3Rpb24tY2FsbC1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmViNTUyZjgwZjY2MWRlM2JhYjUyMDljNzJkZGNmNTAy
MTAwMzQ1ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3MvYXJyb3dm
dW5jdGlvbi1jYWxsLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEwIEBACitKU1JlZ3Jlc3MvYXJy
b3dmdW5jdGlvbi1jYWxsCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAi
UEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIG5v
IGV4Y2VwdGlvbiB0aHJvd24KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVT
VCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL2Fycm93ZnVu
Y3Rpb24tY2FsbC5odG1sIGIvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9hcnJvd2Z1bmN0aW9uLWNh
bGwuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42M2Q4NDU0YmZmNjE4MmU2MWNiZWIwYjllZTEzM2ZlODczMTEy
YmZhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9hcnJvd2Z1bmN0
aW9uLWNhbGwuaHRtbApAQCAtMCwwICsxLDEyIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0v
L0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4u
L3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvcmVncmVzcy1wcmUuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9InNjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLWNhbGwuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9yZWdyZXNzLXBvc3QuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0Pgor
PC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3Jp
cHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1jYWxsLmpzIGIvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9z
Y3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1jYWxsLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg5MjRjODQyNzZl
NzEwODc3ODZjNTk0MGE4MjJiY2M2Zjk3YzA2ZDcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLWNhbGwuanMKQEAgLTAs
MCArMSwxNSBAQAordmFyIGFmID0gKGEsIGIpID0+IGEgKyBiOworCitub0lubGluZShhZik7CisK
K2Z1bmN0aW9uIGJhcihhLCBiKSB7CisgICAgcmV0dXJuIGFmKGEsIGIpOworfQorCitub0lubGlu
ZShiYXIpOworCitmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwMDA7ICsraSkgeworICAgIHZhciBy
ZXN1bHQgPSBiYXIoMSwgMik7CisgICAgaWYgKHJlc3VsdCAhPSAzKQorICAgICAgICB0aHJvdyAi
RXJyb3I6IGJhZCByZXN1bHQ6ICIgKyByZXN1bHQ7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9mdW5jdGlvbi1jYWxsLmpzIGIvTGF5b3V0VGVzdHMv
anMvcmVncmVzcy9zY3JpcHQtdGVzdHMvZnVuY3Rpb24tY2FsbC5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNTcz
YzNiNWUwY2E3OTE3OTRmMjUxNjlhOTFjYjRhN2RjOWIyOGNlCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvZnVuY3Rpb24tY2FsbC5qcwpAQCAt
MCwwICsxLDE1IEBACit2YXIgZmUgPSBmdW5jdGlvbiAoYSwgYikgeyByZXR1cm4gYSArIGI7fQor
Citub0lubGluZShmZSk7CisKK2Z1bmN0aW9uIGJhcihhLCBiKSB7CisgICAgcmV0dXJuIGZlKGEs
IGIpOworfQorCitub0lubGluZShiYXIpOworCitmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwMDA7
ICsraSkgeworICAgIHZhciByZXN1bHQgPSBiYXIoMSwgMik7CisgICAgaWYgKHJlc3VsdCAhPSAz
KQorICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQ6ICIgKyByZXN1bHQ7Cit9CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1iaW5kLmpz
IGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tYmluZC5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4xNTNmMDhlOTY2Yzc5NGNiYWY5YWQ0YTNhZGI0ZTk5NzljMDJhYzJhCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tYmlu
ZC5qcwpAQCAtMCwwICsxLDEyIEBACitkZXNjcmlwdGlvbignVGVzdHMgZm9yIEVTNiBhcnJvdyBm
dW5jdGlvbiwgdGhpcyBzaG91bGQgYmUgb3ZlcndyaXR0ZW4gZHVyaW5nIGludm9rZSBiaW5kJyk7
CisKK3ZhciBkID0geworICB4IDogImJhciIsCisgIHkgOiBmdW5jdGlvbigpIHsgcmV0dXJuIHog
PT4gdGhpcy54ICsgejsgfQorfTsKKwordmFyIGUgPSB7IHggOiAiYmF6IiB9OworCitzaG91bGRC
ZSgiZC55KCkuYmluZChlLCAnbGV5JykoKSIsICInYmFybGV5JyIpOworCit2YXIgc3VjY2Vzc2Z1
bGx5UGFyc2VkID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0
cy9hcnJvd2Z1bmN0aW9uLWNhbGwuanMgYi9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvYXJy
b3dmdW5jdGlvbi1jYWxsLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVjODg4ZjkxMWJmMWM0NGQzODlkMGEzZDIx
ODQ2ODM0ODRiNmY5NmQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9zY3JpcHQt
dGVzdHMvYXJyb3dmdW5jdGlvbi1jYWxsLmpzCkBAIC0wLDAgKzEsMTMgQEAKK2Rlc2NyaXB0aW9u
KCdUZXN0cyBmb3IgRVM2IGFycm93IGZ1bmN0aW9uLCB0aGlzIHNob3VsZCBiZSBvdmVyd3JpdHRl
biBkdXJpbmcgaW52b2tlIGNhbGwmYXBwbHknKTsKKwordmFyIGQgPSB7CisgIHggOiAiZm9vIiwK
KyAgeSA6IGZ1bmN0aW9uKCkgeyByZXR1cm4gKCkgPT4gdGhpcy54OyB9Cit9OworCit2YXIgZSA9
IHsgeCA6ICJiYXIiIH07CisKK3Nob3VsZEJlKCdkLnkoKS5jYWxsKGUpJywgIidmb28nIik7Citz
aG91bGRCZSgnZC55KCkuYXBwbHkoZSknLCAiJ2ZvbyciKTsKKwordmFyIHN1Y2Nlc3NmdWxseVBh
cnNlZCA9IHRydWU7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvYXJy
b3dmdW5jdGlvbi1jb25zdHJ1Y3Rvci5qcyBiL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9h
cnJvd2Z1bmN0aW9uLWNvbnN0cnVjdG9yLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFlZmFkMDc2ODQ3YmZmNDky
OWY3ODA3NzY1Zjk5MGI3MzczY2RmNmQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9q
cy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1jb25zdHJ1Y3Rvci5qcwpAQCAtMCwwICsxLDcg
QEAKK2Rlc2NyaXB0aW9uKCdUZXN0cyBmb3IgRVM2IGFycm93IGZ1bmN0aW9uIG5vIGNvbnN0cnVj
dG9yJyk7CisKK3ZhciBzaW1wbGVBcnJvd0Z1bmN0aW9uID0gKCkgPT4ge307CisKK3Nob3VsZFRo
cm93KCduZXcgc2ltcGxlQXJyb3dGdW5jdGlvbigpJyk7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJz
ZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2Fycm93
ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRoaXMuanMgYi9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVz
dHMvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yZTU2YTE1
NTMwZjM0Y2MzMDhhY2U2YjBmYWE0Y2ZlN2MxZTk3OGM0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRoaXMu
anMKQEAgLTAsMCArMSw2NyBAQAorZGVzY3JpcHRpb24oJ1Rlc3RzIGZvciBFUzYgYXJyb3cgZnVu
Y3Rpb24gbGV4aWNhbCBiaW5kIG9mIHRoaXMnKTsKKworZnVuY3Rpb24gRG9nKG5hbWUpIHsKKyAg
dGhpcy5uYW1lID0gbmFtZTsKKyAgdGhpcy5nZXROYW1lID0gKCkgPT4gZXZhbCgidGhpcy5uYW1l
Iik7CisgIHRoaXMuZ2V0TmFtZUhhcmQgPSAoKSA9PiBldmFsKCIoKCkgPT4gdGhpcy5uYW1lKSgp
Iik7CisgIHRoaXMuZ2V0TmFtZU5lc3RpbmcgPSAoKSA9PiAoKSA9PiAoKSA9PiB0aGlzLm5hbWU7
Cit9CisKK3ZhciBkID0gbmV3IERvZygiTWF4Iik7CitzaG91bGRCZSgnZC5nZXROYW1lKCknLCAn
ZC5uYW1lJyk7CitzaG91bGRCZSgnZC5nZXROYW1lSGFyZCgpJywgJ2QubmFtZScpOworc2hvdWxk
QmUoJ2QuZ2V0TmFtZU5lc3RpbmcoKSgpKCknLCAnZC5uYW1lJyk7CisKK3ZhciBvYmogPSB7Cisg
IG5hbWUgICA6ICdvYmpDb2RlJywKKyAgbWV0aG9kIDogZnVuY3Rpb24gKCkgeworICAgIHJldHVy
biAodmFsdWUpID0+IHRoaXMubmFtZSArICItbmFtZS0iICsgdmFsdWU7CisgIH0KK307CisKK3No
b3VsZEJlKCJvYmoubWV0aG9kKCkoJ2NvcnJlY3QnKSIsICInb2JqQ29kZS1uYW1lLWNvcnJlY3Qn
Iik7CitvYmoubmFtZT0nbmV3T2JqQ29kZSc7CitzaG91bGRCZSgib2JqLm1ldGhvZCgpKCdjb3Jy
ZWN0JykiLCAiJ25ld09iakNvZGUtbmFtZS1jb3JyZWN0JyIpOworCit2YXIgZGVlcE9iaiA9IHsK
KyAgbmFtZSA6ICd3cm9uZ09iakNvZGUnLAorICBpbnRlcm5hbE9iamVjdDogeworICAgIG5hbWUg
IDonaW50ZXJuYWxPYmplY3QnLAorICAgIG1ldGhvZDogZnVuY3Rpb24gKCkgeyByZXR1cm4gKHZh
bHVlKSA9PiB0aGlzLm5hbWUgKyAiLW5hbWUtIiArIHZhbHVlOyB9CisgIH0KK307CitzaG91bGRC
ZSgiZGVlcE9iai5pbnRlcm5hbE9iamVjdC5tZXRob2QoKSgnY29ycmVjdCcpIiwgIidpbnRlcm5h
bE9iamVjdC1uYW1lLWNvcnJlY3QnIik7CisKK2RlZXBPYmouaW50ZXJuYWxPYmplY3QubmFtZSA9
ICduZXdJbnRlcm5hbE9iamVjdCc7CisKK3Nob3VsZEJlKCJkZWVwT2JqLmludGVybmFsT2JqZWN0
Lm1ldGhvZCgpKCdjb3JyZWN0JykiLCAiJ25ld0ludGVybmFsT2JqZWN0LW5hbWUtY29ycmVjdCci
KTsKKwordmFyIGZ1bmN0aW9uQ29uc3RydWN0b3IgPSBmdW5jdGlvbiAoKSB7CisgIHRoaXMuZnVu
YyA9ICgpID0+IHRoaXM7Cit9OworCit2YXIgaW5zdGFuY2UgPSBuZXcgZnVuY3Rpb25Db25zdHJ1
Y3RvcigpOworCitzaG91bGRCZSgiaW5zdGFuY2UuZnVuYygpID09PSBpbnN0YW5jZSIsICJ0cnVl
Iik7CisKK3ZhciBvd25lck9iaiA9IHsKKyAgbWV0aG9kIDogZnVuY3Rpb24gKCkgeworICAgIHJl
dHVybiAoKSA9PiB0aGlzOworICB9Cit9OworCitzaG91bGRCZSgib3duZXJPYmoubWV0aG9kKCko
KSA9PT0gb3duZXJPYmoiLCAidHJ1ZSIpOworCit2YXIgZmFrZSA9IHsgc3RlYWwgOiBvd25lck9i
ai5tZXRob2QoKSB9Oworc2hvdWxkQmUoImZha2Uuc3RlYWwoKSA9PT0gb3duZXJPYmoiLCAidHJ1
ZSIpOworCit2YXIgcmVhbCA9IHsgYm9ycm93IDogb3duZXJPYmoubWV0aG9kIH07CitzaG91bGRC
ZSgicmVhbC5ib3Jyb3coKSgpID09PSByZWFsIiwgInRydWUiKTsKKwordmFyIGFycm93RnVuY3Rp
b24gPSB7IHggOiAicmlnaHQiLCBnZXRBcnJvd0Z1bmN0aW9uIDogZnVuY3Rpb24oKSB7IHJldHVy
biB6ID0+IHRoaXMueCArIHo7IH19LmdldEFycm93RnVuY3Rpb24oKTsKK3ZhciBob3N0T2JqID0g
eyB4IDogIndyb25nIiwgZnVuYyA6IGFycm93RnVuY3Rpb24gfTsKKworc2hvdWxkQmUoImFycm93
RnVuY3Rpb24oJy10aGlzJykiLCAnInJpZ2h0LXRoaXMiJyk7CitzaG91bGRCZSgiaG9zdE9iai5m
dW5jKCctdGhpcycpIiwgJyJyaWdodC10aGlzIicpOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2Vk
ID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1
bmN0aW9uLW90aGVycy5qcyBiL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0
aW9uLW90aGVycy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNzk5MzFjM2RlYmNiNTAyN2FkMTRmZDE1NDdlNWFi
YTAzOGI0YjExCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3Rz
L2Fycm93ZnVuY3Rpb24tb3RoZXJzLmpzCkBAIC0wLDAgKzEsMTAgQEAKKy8vIEluc3BpcmVkIGJ5
IG1vemlsbGEgdGVzdHMKK2Rlc2NyaXB0aW9uKCdUZXN0cyBmb3IgRVM2IGFycm93IGZ1bmN0aW9u
IGluc3RhbmNlb2YgYW5kIHR5cGVvZiBvcGVyYXRvcnMnKTsKKwordmFyIHNpbXBsZUFycm93RnVu
Y3Rpb24gPSAoKSA9PiB7fTsKKworc2hvdWxkQmUoIk9iamVjdC5nZXRQcm90b3R5cGVPZihzaW1w
bGVBcnJvd0Z1bmN0aW9uKSIsICJGdW5jdGlvbi5wcm90b3R5cGUiKTsKK3Nob3VsZEJlKCJzaW1w
bGVBcnJvd0Z1bmN0aW9uIGluc3RhbmNlb2YgRnVuY3Rpb24iLCAidHJ1ZSIpOworc2hvdWxkQmUo
InNpbXBsZUFycm93RnVuY3Rpb24uY29uc3RydWN0b3IgPT0gRnVuY3Rpb24iLCAidHJ1ZSIpOwor
Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2pzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLXRkei5qcyBiL0xheW91dFRlc3RzL2pzL3Nj
cmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLXRkei5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hYWY1OGZjNjUxM2Vk
YWJkZTFkZDY1MDc0OTZhZTg2NGI2MTFmZmY5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvanMvc2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tdGR6LmpzCkBAIC0wLDAgKzEsMjYgQEAK
K2Rlc2NyaXB0aW9uKCdUZXN0cyBmb3IgRVM2IGFycm93IGZ1bmN0aW9uIHRlc3QgdGR6Jyk7CisK
K3ZhciBBID0gY2xhc3MgQSB7IH07Cit2YXIgQiA9IGNsYXNzIEIgZXh0ZW5kcyBBIHsKKyAgY29u
c3RydWN0b3IoYWNjZXNzVGhpc0JlZm9yZVN1cGVyKSB7CisgICAgaWYgKGFjY2Vzc1RoaXNCZWZv
cmVTdXBlcikgeworICAgICAgdmFyIGYgPSAoKSA9PiB0aGlzOworICAgICAgc3VwZXIoKTsKKyAg
ICB9IGVsc2UgeworICAgICAgc3VwZXIoKTsKKyAgICB9CisgIH0KK307CisKK3ZhciBpc1JlZmVy
ZW5jZUVycm9yID0gZmFsc2U7Cit0cnkgeworICAgICBuZXcgQih0cnVlKTsKK30gY2F0Y2ggKGUp
IHsKKyAgICBpc1JlZmVyZW5jZUVycm9yID0gZSBpbnN0YW5jZW9mIFJlZmVyZW5jZUVycm9yOwor
fQorCitzaG91bGRCZSgnaXNSZWZlcmVuY2VFcnJvcicsICd0cnVlJyk7CisKK3ZhciBlID0gbmV3
IEIoZmFsc2UpOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLXR5cGVvZi5qcyBiL0xh
eW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLXR5cGVvZi5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42MmFhMjY5MGZkYTgyYzZhMzI4ZWEwYWJjMzU1ZDJkOGJlM2Q0OGQ3Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tdHlwZW9m
LmpzCkBAIC0wLDAgKzEsMTIgQEAKK3ZhciBhZjEgPSAoKSA9PiB7fTsKK3ZhciBhZjIgPSAoYSkg
PT4ge2EgKyAxfTsKKworc2hvdWxkQmUoInR5cGVvZiBhZjEgPT09ICdmdW5jdGlvbiciLCAidHJ1
ZSIpOworCitzaG91bGRCZSgidHlwZW9mIGFmMiA9PT0gJ2Z1bmN0aW9uJyIsICJ0cnVlIik7CisK
K3Nob3VsZEJlKCJ0eXBlb2YgKCgpPT57fSkgPT09ICdmdW5jdGlvbiciLCAidHJ1ZSIpOworCitz
aG91bGRCZSgidHlwZW9mICgoYikgPT4ge2IgKyAxfSk9PT0nZnVuY3Rpb24nIiwgInRydWUiKTsK
KwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>