X-From-Line: address@hidden Thu Jul 17 16:53:35 2003
Return-path:
Envelope-to: address@hidden
Delivery-date: Thu, 17 Jul 2003 13:26:53 +0200
Received: from hermes.epita.fr ([163.5.255.10] helo=epita.fr)
by kualalumpur.lrde.epita.fr with esmtp (Exim 3.35 #1 (Debian))
id 19d6uT-0005xK-00
for ; Thu, 17 Jul 2003 13:26:53 +0200
Received: from f7.net (consort.superb.net [209.61.216.22])
by epita.fr id h6HBR5P20344 for
EPITA Paris France Thu, 17 Jul 2003 13:27:05 +0200 (CEST)
Received: from monty-python.gnu.org (monty-python.gnu.org [199.232.76.173])
by f7.net (8.11.7/8.11.7) with ESMTP id h6HBQxX31635;
Thu, 17 Jul 2003 07:26:59 -0400
Received: from localhost ([127.0.0.1] helo=monty-python.gnu.org)
by monty-python.gnu.org with esmtp (Exim 4.20)
id 19d6uD-000417-Al
for address@hidden; Thu, 17 Jul 2003 07:26:37 -0400
Received: from list by monty-python.gnu.org with tmda-scanned (Exim 4.20)
id 19d6u9-0003xF-Ml
for address@hidden; Thu, 17 Jul 2003 07:26:33 -0400
Received: from mail by monty-python.gnu.org with spam-scanned (Exim 4.20)
id 19d6qD-0000zY-S9
for address@hidden; Thu, 17 Jul 2003 07:22:30 -0400
Received: from [218.247.140.130] (helo=mailserver.great-road.com)
by monty-python.gnu.org with esmtp (Exim 4.20) id 19d6nh-00078j-CR
for address@hidden; Thu, 17 Jul 2003 07:19:53 -0400
Date: Thu, 17 Jul 2003 16:53:35 +0800
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="----_=_NextPart_001_01C34C40.E831C6E0"
X-Gnus-Mail-Source: pop:address@hidden
Message-ID:
X-MS-Has-Attach: yes
content-class: urn:content-classes:message
X-MimeOLE: Produced By Microsoft Exchange V6.0.6249.0
X-MS-TNEF-Correlator:
Thread-Topic: problem about autoconf , from china
Thread-Index: AcNMPtZE4iUuOEKqRZqVkhOY+Ly4bQ==
From: åé¡
To:
Subject: problem about autoconf , from china
X-BeenThere: address@hidden
X-Mailman-Version: 2.1.2
Precedence: list
List-Id: Bug reports for autoconf, the GNU build system
List-Unsubscribe: ,
List-Archive:
List-Post:
List-Help:
List-Subscribe: ,
Sender: address@hidden
Errors-To: address@hidden
X-Spam-Status: No, hits=1.4 required=5.0 tests=BASE64_ENC_TEXT version=2.20
X-Spam-Level: *
Status:
X-Content-Length: 168353
Lines: 2210
Xref: nostromo.lrde.epita.fr autoconf.misc:1922 autoconf.bug:2734
This is a multi-part message in MIME format.
------_=_NextPart_001_01C34C40.E831C6E0
Content-Type: text/html;
charset="utf-8"
Content-Transfer-Encoding: base64
PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMCBUcmFuc2l0aW9uYWwv
L0VOIj48SFRNTD48SEVBRD48TUVUQSBIVFRQLUVRVUlWPSJDb250ZW50LVR5cGUiIENPTlRFTlQ9
InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+PC9IRUFEPjxCT0RZPjxESVY+V2hlbiZuYnNwOyBy
dW5uaW5nJm5ic3A7dGhlIApjb25maWd1cmUsJm5ic3A7SSZuYnNwOyZuYnNwO2dvdCAmbmJzcDt0
aGUgZXJyb3IgbWVzc2FnZXM8L0RJVj48RElWPmNvbmZpZ3VyZTogV0FSTklORzogbWluaWd1aS9t
aW5pZ3VpLmg6IHByZXNlbnQgYnV0IApjYW5ub3QgYmUgY29tcGlsZWQ8L0RJVj48RElWPjxESVY+
Y29uZmlndXJlOiBXQVJOSU5HOiBtaW5pZ3VpL21pbmlndWkuaDogY2hlY2sgZm9yIAptaXNzaW5n
IHByZXJlcXVpc2l0ZSBoZWFkZXJzPzwvRElWPjxESVY+PERJVj5jb25maWd1cmU6IFdBUk5JTkc6
IG1pbmlndWkvbWluaWd1aS5oOiBwcm9jZWVkaW5nIHdpdGggCnRoZSBwcmVwcm9jZXNzb3IncyBy
ZXN1bHQ8L0RJVj48RElWPiZuYnNwOzwvRElWPjxESVY+Jm5ic3A7PC9ESVY+PERJVj5NeSBPUyBp
cyZuYnNwOyZuYnNwO3RoZSBSZWRIYXQgOS4wJm5ic3A7KCAKdm1saW51ei0yLjQuMjAtOCk8L0RJ
Vj48RElWPmFuZCBoYXJkd2FyZSBpcyBhIEhQIExIMyBQQyBTRVJWRVI8L0RJVj48RElWPiZuYnNw
OzwvRElWPjxESVY+dGhlIGZpbGVzIG1pbmlndWkuaCBhbmQgY29uZmlndXJlIGFyZSBhdHRhY2hl
ZDwvRElWPjxESVY+Jm5ic3A7PC9ESVY+PERJVj5UaGFua3MhPC9ESVY+PC9ESVY+PC9ESVY+PC9C
T0RZPjwvSFRNTD4=
------_=_NextPart_001_01C34C40.E831C6E0
Content-Type: text/plain;
name="minigui.h"
Content-Transfer-Encoding: base64
Content-Description: minigui.h
Content-Disposition: attachment;
filename="minigui.h"
LyoqDQogKiBcZmlsZSBtaW5pZ3VpLmgNCiAqIFxhdXRob3IgV2VpIFlvbmdtaW5nIDx5bXdlaUBt
aW5pZ3VpLm9yZz4NCiAqIFxkYXRlIDIwMDIvMDEvMDYNCiAqIA0KICogVGhpcyBmaWxlIGluY2x1
ZGVzIGdsb2JhbCBhbmQgbWlzY2VsbGFuZW91cyBpbnRlcmZhY2VzIG9mIE1pbmlHVUkuDQogKg0K
IFx2ZXJiYXRpbQ0KICAgIENvcHlyaWdodCAoQykgMTk5OC0yMDAyIFdlaSBZb25nbWluZy4NCiAg
ICBDb3B5cmlnaHQgKEMpIDIwMDIgRmV5bm1hbiBTb2Z0d2FyZS4NCg0KICAgIFRoaXMgZmlsZSBp
cyBwYXJ0IG9mIE1pbmlHVUksIGEgbGlnaHR3ZWlnaHQgR3JhcGhpY3MgVXNlciBJbnRlcmZhY2Ug
DQogICAgc3VwcG9ydCBsaWJyYXJ5IGZvciByZWFsLXRpbWUgZW1iZWRkZWQgTGludXguDQoNCiAg
ICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yDQogICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMNCiAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXINCiAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9y
IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uDQogIA0KICAgIFRoaXMgbGlicmFy
eSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLA0KICAg
IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh
bnR5IG9mDQogICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFLiAgU2VlIHRoZSBHTlUNCiAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug
Zm9yIG1vcmUgZGV0YWlscy4NCiAgDQogICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w
eSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMNCiAgICBMaWNlbnNlIGFsb25nIHdp
dGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlDQogICAgU29mdHdhcmUg
Rm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sDQog
ICAgTUEgMDIxMTEtMTMwNywgVVNBDQogXGVuZHZlcmJhdGltDQogKi8NCg0KLyoNCiAqICRJZDog
bWluaWd1aS5oLHYgMS40IDIwMDMvMDMvMzEgMDk6MTA6MzIgd2VpZ2wgRXhwICQNCiAqIA0KICog
ICAgICAgICAgICAgTWluaUdVSSBmb3IgTGludXggVmVyc2lvbiAxLjEueHgNCiAqICAgICAgICAg
ICAgIENvcHlyaWdodCAoYykgMTk5OCB+IDIwMDEgIFdlaSBZb25nbWluZy4NCiAqICAgICAgICAg
ICAgIExhc3QgbW9kaWZpZWQgZGF0ZTogMjAwMS4wOC4xNA0KICovDQoNCiNpZm5kZWYgX01HVUlf
TUlOSUdVSV9IDQogICNkZWZpbmUgX01HVUlfTUlOSUdVSV9IDQoNCiNpbmNsdWRlIDxzeXMvdGlt
ZS5oPg0KI2lmbmRlZiBfTElURV9WRVJTSU9ODQogICNpbmNsdWRlIDxwdGhyZWFkLmg+DQogICNp
bmNsdWRlIDxzZW1hcGhvcmUuaD4NCiNlbmRpZg0KDQojaWZkZWYgX19jcGx1c3BsdXMNCmV4dGVy
biAiQyIgew0KI2VuZGlmICAvKiBfX2NwbHVzcGx1cyAqLw0KDQogICAgLyoqDQogICAgICogXGFk
ZHRvZ3JvdXAgZ2xvYmFsX3ZhcnMgR2xvYmFsIHZhcmlhYmxlcw0KICAgICAqIEB7DQogICAgICov
DQoNCiAgICAvKioNCiAgICAgKiBcZGVmZ3JvdXAgcmVjdF92YXJzIFJlY3RhbmdsZXMNCiAgICAg
KiBAew0KICAgICAqLw0KDQovKioNCiAqIFx2YXIgUkVDVCBnX3JjU2NyDQogKiBcYnJpZWYgQ29u
dGFpbnMgdGhlIHJlY3RhbmdsZSBvZiB0aGUgd2hvbGUgc2NyZWVuLg0KICovDQpleHRlcm4gUkVD
VCBnX3JjU2NyOyAgICAgICAgIC8qIFRoZSBSRUNUIG9mIHNjcmVlbi4gKi8NCg0KI2lmZGVmIF9M
SVRFX1ZFUlNJT04NCg0KLyoqDQogKiBcdmFyIFJFQ1QgZ19yY0Rlc2t0b3ANCiAqIFxicmllZiBD
b250YWlucyB0aGUgcmVjdGFuZ2xlIG9mIGRlc2t0b3Agb2YgdGhlIGFwcGxpY2F0aW9uLg0KICoN
CiAqIFxub3RlIE9ubHkgYXZhaWxhYmxlIGZvciBNaW5pR1VJLUxpdGUgYXMgYW4gYWN0dWFsIGds
b2JhbCB2YXJpYWJsZS4NCiAqIEFuZCBcYSBnX3JjRGVza3RvcCBpcyBkZWZpbmVkIGFzIGFuIGFs
aWFzIChtYWNybykgb2YgXGEgZ19yY1NjciBmb3IgTWluaUdVSS1UaHJlYWRzLg0KICoNCiAqIFxz
YSBnX3JjU2NyDQogKi8NCmV4dGVybiBSRUNUIGdfcmNEZXNrdG9wOyAgICAgLyogVGhlIFJFQ1Qg
b2YgZGVza3RvcC4gKi8NCg0KLyoqDQogKiBcdmFyIFJFQ1QgZ19yY0V4Y2x1ZGVkDQogKiBcYnJp
ZWYgQ29udGFpbnMgdGhlIHJlY3RhbmdsZSBzaG91bGQgYmUgZXhjbHVkZWQgZnJvbSBjbGllbnRz
JyBkZXNrdG9wLg0KICoNCiAqIFxub3RlIE9ubHkgaGF2ZSBtZWFuaW5nIGZvciB0aGUgc2VydmVy
IG9mIE1pbmlHVUktTGl0ZS4gRm9yIGNsaWVudHMsDQogKiB0aGlzIHZhcmlhYmxlIGFsd2FzeSBi
ZSBlcXVhbCB0byBcYSBnX3JjRGVza3RvcC4NCiAqDQogKiBcc2EgZ19yY0Rlc2t0b3ANCiAqLw0K
ZXh0ZXJuIFJFQ1QgZ19yY0V4Y2x1ZGVkOw0KDQojZWxzZQ0KI2RlZmluZSBnX3JjRGVza3RvcCAg
ICAgZ19yY1Njcg0KI2VuZGlmDQoNCiAgICAvKiogQH0gZW5kIG9mIHJlY3RfdmFycyAqLw0KDQog
ICAgLyoqDQogICAgICogXGRlZmdyb3VwIGxpdGVfdmFycyBNaW5pR1VJLUxpdGUgc3BlY2lmaWMg
dmFyaWFibGVzDQogICAgICogQHsNCiAgICAgKi8NCg0KI2lmZGVmIF9MSVRFX1ZFUlNJT04NCiNp
bmNsdWRlIDxzeXMvdHlwZXMuaD4NCg0KLyoqDQogKiBcdmFyIEJPT0wgbWdJc1NlcnZlcg0KICog
XGJyaWVmIEluZGljYXRlcyB3aGV0aGVyIHRoZSBwcm9jZXNzIGlzIHRoZSBzZXJ2ZXIgb3IgYSBj
bGllbnQgb24gTWluaUdVSS1MaXRlLg0KICoNCiAqIFxub3RlIE9ubHkgZGVmaW5lZCBmb3IgTWlu
aUdVSS1MaXRlLg0KICovDQpleHRlcm4gQk9PTCBtZ0lzU2VydmVyOyAgICAgIC8qIElzIHRoZSBz
ZXJ2ZXIgb3IgYSBjbGllbnQuICovDQoNCi8qKg0KICogXHZhciB2b2lkKiBtZ1NoYXJlZFJlcw0K
ICogXGJyaWVmIENvbnRhaW5zIHRoZSBwb2ludGVyIHRvIHRoZSBzaGFyZWQgcmVzb3VyY2Ugb2Yg
TWluaUdVSS1MaXRlLg0KICoNCiAqIFxub3RlIE5vdCBkZWZpbmVkIGZvciBNaW5pR1VJLVRocmVh
ZHMsIGFuZCB0aGUgc2hhcmVkIHJlc291cmNlIGFyZQ0KICogcmVhZC1vbmx5IGZvciBhbGwgY2xp
ZW50cy4NCiAqDQogKiBcc2EgbWdTaXplUmVzDQogKi8NCmV4dGVybiB2b2lkKiBtZ1NoYXJlZFJl
czsgICAgLyogVGhlIHBvaW50ZXIgdG8gc2hhcmVkIHJlc291cmNlLiAqLw0KDQovKioNCiAqIFx2
YXIgdm9pZCogbWdTaXplUmVzDQogKiBcYnJpZWYgQ29udGFpbnMgdGhlIGxlbmd0aCBvZiBzaGFy
ZWQgcmVzb3VyY2Ugb2YgTWluaUdVSS1MaXRlLg0KICoNCiAqIFxub3RlIE9ubHkgZGVmaW5lZCBm
b3IgTWluaUdVSS1MaXRlLiANCiAqDQogKiBcc2EgbWdTaGFyZWRSZXMNCiAqLw0KZXh0ZXJuIHNp
emVfdCBtZ1NpemVSZXM7ICAgICAvKiBUaGUgc2l6ZSBvZiBzaGFyZWQgcmVzb3VyY2UuICovDQoN
CiNkZWZpbmUgTEVOX0xBWUVSX05BTUUgICAgICAxNA0KI2RlZmluZSBMRU5fQ0xJRU5UX05BTUUg
ICAgIDE0DQoNCiNkZWZpbmUgSU5WX0xBWUVSX0hBTkRMRSAgICAwDQoNCi8qIHZhcmlhYmxlcyBv
bmx5IGF2YWlsYWJsZSBmb3IgdGhlIHNlcnZlciAqLw0KDQpzdHJ1Y3QgTUdfTGF5ZXI7DQoNCi8q
KiBDbGllbnQgaW5mb3JtYXRpb24uICovDQp0eXBlZGVmIHN0cnVjdCBNR19DbGllbnQNCnsNCiAg
ICAvKiogVGhlIG5hbWUgb2YgdGhlIGNsaWVudC4gKi8NCiAgICBjaGFyICAgIG5hbWUgW0xFTl9D
TElFTlRfTkFNRSArIDFdOw0KDQogICAgLyoqIFBJRCBvZiB0aGUgY2xpZW50IHByb2Nlc3MuICov
DQogICAgcGlkX3QgICBwaWQ7DQogICAgLyoqIFVJRCBvZiB0aGUgY2xpZW50IHByb2Nlc3MuICov
DQogICAgdWlkX3QgICB1aWQ7DQogICAgLyoqIFRoZSBmaWxlIGRlc2NyaXB0b3Igb2YgdGhlIHNv
Y2tldCBjb25uZWN0ZWQgdG8gdGhlIGNsaWVudC4gKi8NCiAgICBpbnQgICAgIGZkOw0KDQogICAg
LyoqIFRoZSBkZXNrdG9wIHJlY3RhbmdsZSBvZiB0aGUgY2xpZW50LiAqLw0KICAgIFJFQ1QgICAg
cmM7DQogICAgLyoqIFRoZSBsYXN0IGFjdGl2ZSB0aWNrIGNvdW50IG9mIHRoZSBjbGllbnQuICov
DQogICAgRFdPUkQgICBsYXN0X2xpdmVfdGltZTsNCiAgICAvKiogVGhlIGFkZGl0aW9uYWwgZGF0
YSBvZiB0aGUgY2xpZW50LiAqLw0KICAgIERXT1JEICAgZHdBZGREYXRhOw0KDQogICAgLyoqIFRo
ZSBwb2ludGVyIHRvIHRoZSBuZXh0IGNsaWVudCBpbiB0aGUgc2FtZSBsYXllci4gKi8NCiAgICBz
dHJ1Y3QgIE1HX0NsaWVudCogbmV4dDsNCiAgICAvKiogVGhlIHBvaW50ZXIgdG8gdGhlIHByZXZp
b3VzIGNsaWVudCBpbiB0aGUgc2FtZSBsYXllci4gKi8NCiAgICBzdHJ1Y3QgIE1HX0NsaWVudCog
cHJldjsNCg0KICAgIC8qKiBUaGUgcG9pbnRlciB0byB0aGUgbGF5ZXIgb24gd2hpY2ggdGhlIGNs
aWVudCBsYXlzLiAqLw0KICAgIHN0cnVjdCAgTUdfTGF5ZXIqIGxheWVyOw0KDQogICAgc3RydWN0
IEdsb2JhbFJlcyogZ2xvYmFsX3JlczsNCn0gTUdfQ2xpZW50Ow0KDQpzdHJ1Y3QgX0NMSVBSR047
DQoNCi8qKiBMYXllciBpbmZvcm1hdGlvbi4gKi8NCnR5cGVkZWYgc3RydWN0IE1HX0xheWVyDQp7
DQogICAgLyoqIFRoZSBuYW1lIG9mIHRoZSBsYXllci4gKi8NCiAgICBjaGFyICAgIG5hbWUgW0xF
Tl9MQVlFUl9OQU1FICsgMV07DQoNCiAgICAvKiogVGhlIHBvaW50ZXIgdG8gdGhlIGxpc3Qgb2Yg
Y2xpZW50cyB3aGljaCBsYXkgb24gdGhlIGxheWVyLiAqLw0KICAgIE1HX0NsaWVudCogY2xpX2hl
YWQ7DQogICAgLyoqIFRoZSBwb2ludGVyIHRvIHRoZSBhY3RpdmUgY2xpZW50IG9uIHRoZSBsYXll
ci4gKi8NCiAgICBNR19DbGllbnQqIGNsaV9hY3RpdmU7DQogICAgLyoqIFRoZSBhZGRpdGlvbmFs
IGRhdGEgb2YgdGhlIGxheWVyLiAqLw0KICAgIERXT1JEICAgZHdBZGREYXRhOw0KDQogICAgLyoq
IFRoZSBwb2ludGVyIHRvIHRoZSBuZXh0IGxheWVyLiAqLw0KICAgIHN0cnVjdCBNR19MYXllciog
bmV4dDsNCiAgICAvKiogVGhlIHBvaW50ZXIgdG8gdGhlIHByZXZpb3VzIGxheWVyLiAqLw0KICAg
IHN0cnVjdCBNR19MYXllciogcHJldjsNCg0KICAgIC8qKiBUaGUgcG9pbnRlciB0byB0aGUgcmVn
aW9uIGNvbnRhaW5zIHRoZSBzcGFyZSByZWN0YW5nbGVzIG9mIHRoZSBsYXllci4gKi8NCiAgICBz
dHJ1Y3QgX0NMSVBSR04qIHNwYXJlX3JlY3RzOw0KfSBNR19MYXllcjsNCg0KLyoqDQogKiBcdmFy
IGludCBtZ0NsaWVudFNpemUNCiAqIFxicmllZiBUaGUgY3VycmVudCBzaXplIG9mIHRoZSBhcnJh
eSBcYSBtZ0NsaWVudHMuDQogKg0KICogXHNhIG1nQ2xpZW50cw0KICovDQpleHRlcm4gaW50IG1n
Q2xpZW50U2l6ZTsNCg0KLyoqDQogKiBcdmFyIE1HX0NsaWVudCogbWdDbGllbnRzDQogKiBcYnJp
ZWYgVGhlIHBvaW50ZXIgdG8gdGhlIGFycmF5IGNvbnRhaW5zIGFsbCBjbGllbnRzJyBpbmZvcm1h
dGlvbi4NCiAqDQogKiBZb3UgY2FuIGFjY2VzcyB0aGUgZWxlbWVudHMgaW4gXGEgbWdDbGllbnRz
IGFzIGEgbm9ybWFsIGFycmF5LiBJZiB0aGUgDQogKiBmaWVsZCBcYSBmZCBvZiBvbmUgZWxlbWVu
dCBpcyBub3QgbGVzcyB0aGFuIHplcm8sIHRoZW4gdGhlIGVsZW1lbnQNCiAqIHdpbGwgYmUgYSB2
YWlsZCBjbGllbnQuDQogKg0KICogXHNhIE1HX0NsaWVudA0KICovDQpleHRlcm4gTUdfQ2xpZW50
KiBtZ0NsaWVudHM7DQoNCi8qKg0KICogXHZhciBNR19MYXllciogbWdUb3Btb3N0TGF5ZXINCiAq
IFxicmllZiBUaGUgcG9pbnRlciB0byB0aGUgdG9wbW9zdCBsYXllci4NCiAqDQogKiBcc2EgTUdf
TGF5ZXINCiAqLw0KZXh0ZXJuIE1HX0xheWVyKiBtZ1RvcG1vc3RMYXllcjsNCg0KLyoqDQogKiBc
dmFyIE1HX0xheWVyKiBtZ0xheWVycw0KICogXGJyaWVmIFRoZSBwb2ludGVyIHRvIHRoZSBsaXN0
IG9mIGxheWVycy4NCiAqDQogKiBcc2EgTUdfTGF5ZXINCiAqLw0KZXh0ZXJuIE1HX0xheWVyKiBt
Z0xheWVyczsNCg0KI2VuZGlmIC8qIExJVEVfVkVSU0lPTiAqLw0KDQogICAgLyoqIEB9IGVuZCBv
ZiBsaXRlX3ZhcnMgKi8NCg0KICAgIC8qKiBAfSBlbmQgb2YgZ2xvYmFsX3ZhcnMgKi8NCg0KI2lm
bmRlZiBfTElURV9WRVJTSU9ODQpCT09MIEdVSUFQSSBJbml0R1VJICh2b2lkKTsNCnZvaWQgR1VJ
QVBJIFRlcm1pbmF0ZUdVSSAoaW50IHJjQnlHVUkpOw0Kdm9pZCBHVUlBUEkgTWluaUdVSVBhbmlj
IChpbnQgZXhpdGNvZGUpOw0KI2Vsc2UNCg0KICAgIC8qKg0KICAgICAqIFxhZGR0b2dyb3VwIGZu
cyBGdW5jdGlvbnMNCiAgICAgKiBAew0KICAgICAqLw0KDQogICAgLyoqDQogICAgICogXGFkZHRv
Z3JvdXAgZ2xvYmFsX2ZucyBHbG9iYWwvZ2VuZXJhbCBmdW5jdGlvbnMNCiAgICAgKiBAew0KICAg
ICAqLw0KDQogICAgLyoqDQogICAgICogXGRlZmdyb3VwIGxpdGVfZm5zIE1pbmlHVUktTGl0ZSBz
cGVjaWZpYyBmdW5jdGlvbnMNCiAgICAgKiBAew0KICAgICAqLw0KDQogICAgLyoqDQogICAgICog
XGRlZmdyb3VwIGxpdGVfbGF5ZXJfZm5zIExheWVyIG9wZXJhdGlvbnMNCiAgICAgKg0KICAgICAq
IEEgY2xpZW50IGluIE1pbmlHVUktTGl0ZSBjYW4gY3JlYXRlIGEgbmV3IGxheWVyIG9yIGpvaW4g
YW4gZXhpc3RlZCBsYXllciANCiAgICAgKiBpbiBvcmRlciB0byBnZXQgdGhlIHZpc2libGUgZGVz
a3RvcCByZWN0YW5nbGUgb24gdGhlIHNjcmVlbiBvZiBpdC4NCiAgICAgKg0KICAgICAqIEV4YW1w
bGU6DQogICAgICoNCiAgICAgKiBcaW5jbHVkZSBjbGllbnRfc3RhcnR1cC5jDQogICAgICoNCiAg
ICAgKiBAew0KICAgICAqLw0KDQovKiogDQogKiBcZm4gR0hBTkRMRSBHVUlBUEkgSm9pbkxheWVy
IChjb25zdCBjaGFyKiBsYXllcl9uYW1lLCBjb25zdCBjaGFyKiBjbGllbnRfbmFtZSwgaW50IGx4
LCBpbnQgdHksIGludCByeCwgaW50IGJ5KQ0KICogXGJyaWVmIEpvaW5zIHRvIGEgbGF5ZXIuDQog
Kg0KICogVGhpcyBmdW5jdGlvbiBzaG91bGQgYmUgY2FsbGVkIGJ5IGNsaWVudHMgYmVmb3JlIGNh
bGxpbmcgYW55IG90aGVyIE1pbmlHVUkNCiAqIGZ1bmN0aW9ucy4gWW91IGNhbiBjYWxsIFxhIEdl
dExheWVySW5mbyB0byBnZXQgdGhlIGxheWVyIGluZm9ybWF0aW9uLg0KICogSWYgdGhlIGxheWVy
IHRvIGJlIGpvaW5lZCBkb2VzIG5vdCBleGlzdCwgdGhlIHNlcnZlciwgaS5lLiBcYSBtZ2luaXQs
IHdpbGwNCiAqIHRyeSB0byBjcmVhdGUgYSBuZXcgb25lLiBJZiB5b3UgcGFzc2VkIGEgTlVMTCBw
b2ludGVyIG9yIGEgbnVsbCBzdHJpbmcgZm9yIA0KICogXGEgbGF5ZXJfbmFtZSwgYSBuZXcgbGF5
ZXIgd2lsbCBiZSBjcmVhdGVkIGFzIHdlbGwuDQogKg0KICogXHBhcmFtIGxheWVyX25hbWUgVGhl
IG5hbWUgb2YgdGhlIGxheWVyLg0KICogXHBhcmFtIGNsaWVudF9uYW1lIFRoZSBuYW1lIG9mIHRo
ZSBjbGllbnQuDQogKiBccGFyYW0gbHgsdHkscngsYnkgVGhlIGV4cGVjdGVkIGRlc2t0b3AgcmVj
dCBvZiB0aGUgY2xpZW50Lg0KICogXHJldHVybiBUaGUgaGFuZGxlIHRvIHRoZSBsYXllciBvbiBz
dWNjZXNzLCBJTlZfTEFZRVJfSEFORExFIG9uIGVycm9yLg0KICoNCiAqIFxzYSBHZXRMYXllcklu
Zm8sIEdldERlc2t0b3BSZWN0LCBTZXJ2ZXJTdGFydHVwDQogKi8NCkdIQU5ETEUgR1VJQVBJIEpv
aW5MYXllciAoY29uc3QgY2hhciogbGF5ZXJfbmFtZSwgY29uc3QgY2hhciogY2xpZW50X25hbWUs
IA0KICAgICAgICAgICAgICAgIGludCBseCwgaW50IHR5LCBpbnQgcngsIGludCBieSk7DQoNCiNk
ZWZpbmUgU2V0RGVza3RvcFJlY3QobHgsIHR5LCByeCwgYnkpIFwNCiAgICAgICAgSm9pbkxheWVy
ICgiIiwgIiIsIGx4LCB0eSwgcngsIGJ5KQ0KDQovKiogDQogKiBcZm4gdm9pZCBHVUlBUEkgR2V0
RGVza3RvcFJlY3QgKGludCogbHgsIGludCogdHksIGludCogcngsIGludCogYnkpDQogKiBcYnJp
ZWYgR2V0cyB0aGUgZGVza3RvcCByZWN0Lg0KICoNCiAqIEFmdGVyIGpvaW5lZCB0byBhIGxheWVy
LCBjbGllbnQgY2FuIGNhbGwgdGhpcyBmdW5jdGlvbiB0byBnZXQgdGhlDQogKiBhY3R1YWwgZGVz
a3RvcCByZWN0IG9mIGl0c2VsZi4gDQogKg0KICogXHBhcmFtIGx4LHR5LHJ4LGJ5IFRoZSBkZXNr
dG9wIHJlY3Qgd2lsbCBiZSByZXR1cm5lZCB0aHJvdWdoIHRoZXNlIHBvaW50ZXJzLg0KICoNCiAq
IFxzYSBKb2luTGF5ZXINCiAqLw0Kdm9pZCBHVUlBUEkgR2V0RGVza3RvcFJlY3QgKGludCogbHgs
IGludCogdHksIGludCogcngsIGludCogYnkpOw0KDQojZGVmaW5lIE5BTUVfU0VMRl9MQVlFUiAg
ICAgIiINCg0KLyoqIA0KICogXGZuIEdIQU5ETEUgR1VJQVBJIEdldExheWVySW5mbyAoY29uc3Qg
Y2hhciogbGF5ZXJfbmFtZSwgUkVDVCogbWF4X3JlY3QsIGludCogbnJfY2xpZW50cywgQk9PTCog
aXNfdG9wbW9zdCwgaW50KiBjbGlfYWN0aXZlKQ0KICogXGJyaWVmIEdldHMgaW5mb3JtYXRpb24g
b2YgYSBsYXllci4NCiAqDQogKiBZb3UgY2FuIGdldCB0aGUgaW5mb3JtYXRpb24gb2YgYSBsYXll
ciB0aHJvdWdoIHRoaXMgZnVuY3Rpb24uIA0KICogVGhlIGluZm9ybWF0aW9uIHdpbGwgYmUgcmV0
dXJuZWQgdGhyb3VnaCB0aGUgcG9pbnRlciBhcmd1bWVudHMgDQogKiBpZiB0aGUgc3BlY2lmaWMg
cG9pbnRlciBpcyBub3QgTlVMTC4NCiAqDQogKiBccGFyYW0gbGF5ZXJfbmFtZSBUaGUgbmFtZSBv
ZiB0aGUgbGF5ZXIuDQogKiBccGFyYW0gbWF4X3JlY3QgVGhlIG1heCBkZXNrdG9wIHJlY3QgY2Fu
IGJlIG9idGFpbmVkIHdpbGwgYmUgcmV0dXJuZWQgdGhyb3VnaCB0aGlzIHBvaW50ZXIuDQogKiBc
cGFyYW0gbnJfY2xpZW50cyBUaGUgbnVtYmVyIG9mIGNsaWVudHMgaW4gdGhlIGxheWVyIHdpbGwg
YmUgcmV0dXJuZWQgdGhyb3VnaCB0aGlzIHBvaW50ZXIuDQogKiBccGFyYW0gaXNfdG9wbW9zdCBB
IGJvb2xlYW4gd2hpY2ggaW5kaWNhdGVzIHdoZXRoZXIgdGhlIGxheWVyIGlzIHRoZSB0b3Btb3N0
IGxheWVyIHdpbGwgYmUgcmV0dXJuZWQuDQogKiBccGFyYW0gY2xpX2FjdGl2ZSBUaGUgaWRlbnRp
ZmllciBvZiB0aGUgYWN0aXZlIGNsaWVudCBpbiB0aGUgbGF5ZXIuDQogKiBccmV0dXJuIFJldHVy
bnMgdGhlIGhhbmRsZSB0byB0aGUgbGF5ZXIgb24gc3VjY2VzcywgSU5WX0xBWUVSX0hBTkRMRSBv
biBlcnJvci4NCiAqDQogKiBcc2EgSm9pbkxheWVyDQogKi8NCkdIQU5ETEUgR1VJQVBJIEdldExh
eWVySW5mbyAoY29uc3QgY2hhciogbGF5ZXJfbmFtZSwgUkVDVCogbWF4X3JlY3QsIA0KICAgICAg
ICAgICAgICAgIGludCogbnJfY2xpZW50cywgQk9PTCogaXNfdG9wbW9zdCwgaW50KiBjbGlfYWN0
aXZlKTsNCg0KLyoqIA0KICogXGZuIEJPT0wgR1VJQVBJIEJyaW5nTGF5ZXIyVG9wbW9zdCAoR0hB
TkRMRSBoYW5kbGUpDQogKiBcYnJpZWYgQnJpbmdzIGEgbGF5ZXIgdG8gYmUgdG9wbW9zdC4NCiAq
DQogKiBUaGlzIGZ1bmN0aW9uIGJyaW5ncyB0aGUgc3BlY2lmaWVkIGxheWVyIFxhIGhhbmRsZSB0
byBiZSB0aGUgdG9wbW9zdCBsYXllci4NCiAqDQogKiBccGFyYW0gaGFuZGxlIFRoZSBoYW5kbGUg
dG8gdGhlIGxheWVyLg0KICogXHJldHVybiBUUlVFIG9uIHN1Y2Nlc3MsIG90aGVyd2lzZSBGQUxT
RS4NCiAqDQogKiBcc2EgU2V0QWN0aXZlQ2xpZW50DQogKi8NCkJPT0wgR1VJQVBJIEJyaW5nTGF5
ZXIyVG9wbW9zdCAoR0hBTkRMRSBoYW5kbGUpOw0KDQovKiogDQogKiBcZm4gQk9PTCBHVUlBUEkg
U2V0QWN0aXZlQ2xpZW50IChpbnQgYWN0aXZlKQ0KICogXGJyaWVmIFNldHMgYSBjbGllbnQgYXMg
YXRpdmUgY2xpZW50Lg0KICoNCiAqIFRoaXMgZnVuY3Rpb24gc2V0cyB0aGUgc3BlY2lmaWVkIGNs
aWVudCBcYSBhY3RpdmUgdG8gYmUgdGhlIGFjdGl2ZSBvbmUuDQogKiBJdCBhbHNvIGJyaW5nIHRo
ZSBsYXllciBpbiB3aGljaCB0aGUgY2xpZW50IGxheXMgdG8gYmUgdGhlIHRvcG1vc3QgYXMgd2Vs
bC4NCiAqDQogKiBccGFyYW0gYWN0aXZlIFRoZSBpZGVudGlmaWVyIG9mIHRoZSBjbGllbnQuDQog
KiBccmV0dXJuIFRSVUUgb24gc3VjY2Vzcywgb3RoZXJ3aXNlIEZBTFNFLg0KICoNCiAqIFxzYSBC
cmluZ0xheWVyMlRvcG1vc3QNCiAqLw0KQk9PTCBHVUlBUEkgU2V0QWN0aXZlQ2xpZW50IChpbnQg
YWN0aXZlKTsNCg0KICAgIC8qKiBAfSBlbmQgb2YgbGl0ZV9sYXllcl9mbnMgKi8NCg0KICAgIC8q
Kg0KICAgICAqIFxkZWZncm91cCBsaXRlX3NlcnZlcl9mbnMgU2VydmVyLW9ubHkgb3BlcmF0aW9u
cw0KICAgICAqDQogICAgICogTWluaUdVSSBwcm92aWRlcyBzb21lIHNlcnZlci1vbmx5IGZ1bmN0
aW9ucyBmb3IgeW91IHRvIGNyZWF0ZSBhDQogICAgICogY3VzdG9taXplZCBzZXJ2ZXIgZm9yIE1p
bmlHVUktTGl0ZSwgaS5lLiBcYSBtZ2luaXQuDQogICAgICoNCiAgICAgKiBFeGFtcGxlOg0KICAg
ICAqDQogICAgICogXGluY2x1ZGUgc2VydmVyX3N0YXJ0dXAuYw0KICAgICAqDQogICAgICogQHsN
CiAgICAgKi8NCg0KI2RlZmluZSBMQ09fTkVXX0NMSUVOVCAgICAgIDENCiNkZWZpbmUgTENPX0RF
TF9DTElFTlQgICAgICAyDQoNCi8qKg0KICogXHZhciB0eXBlZGVmIHZvaWQgKCogT05fTkVXX0RF
TF9DTElFTlQpIChpbnQgb3AsIGludCBjbGkpDQogKiBcYnJpZWYgQ2xpZW50IGV2ZW50IGNhbGxi
YWNrLg0KICoNCiAqIFxzYSBPbk5ld0RlbENsaWVudCwgT25DaGFuZ2VMYXllcg0KICovDQp0eXBl
ZGVmIHZvaWQgKCogT05fTkVXX0RFTF9DTElFTlQpIChpbnQgb3AsIGludCBjbGkpOw0KDQojZGVm
aW5lIExDT19ORVdfTEFZRVIgICAgICAgMQ0KI2RlZmluZSBMQ09fREVMX0xBWUVSICAgICAgIDIN
CiNkZWZpbmUgTENPX0pPSU5fQ0xJRU5UICAgICAzDQojZGVmaW5lIExDT19SRU1PVkVfQ0xJRU5U
ICAgNA0KI2RlZmluZSBMQ09fVE9QTU9TVF9DSEFOR0VEIDUNCiNkZWZpbmUgTENPX0FDVElWRV9D
SEFOR0VEICA2DQoNCi8qKg0KICogXHZhciB0eXBlZGVmIHZvaWQgKCogT05fQ0hBTkdFX0xBWUVS
KSAoaW50IG9wLCBNR19MYXllciogbGF5ZXIsIE1HX0NsaWVudCogY2xpZW50KQ0KICogXGJyaWVm
IExheWVyIGV2ZW50IGNhbGxiYWNrLg0KICoNCiAqIFxzYSBPbk5ld0RlbENsaWVudCwgT25DaGFu
Z2VMYXllcg0KICovDQp0eXBlZGVmIHZvaWQgKCogT05fQ0hBTkdFX0xBWUVSKSAoaW50IG9wLCBN
R19MYXllciogbGF5ZXIsIE1HX0NsaWVudCogY2xpZW50KTsNCg0KLyoqDQogKiBcdmFyIE9OX05F
V19ERUxfQ0xJRU5UIE9uTmV3RGVsQ2xpZW50DQogKiBcYnJpZWYgU2V0cyB0byBhIGZ1bmN0aW9u
IHRvIGhhbmRsZSBhIGNvbW1pbmcgaW4vZ29pbmcgYXdheSBjb25uZWN0aW9uLg0KICoNCiAqIFdo
ZW4gYSBjbGllbnQgaXMgY29ubmVjdGluZyB0byBvciBkaXNjb25uZWN0aW5nIGZyb20gdGhlIHNl
cnZlciwgTWluaUdVSQ0KICogd2lsbCBjYWxsIHRoaXMgZnVuY3Rpb24gdG8gdGVsbCB5b3UgdGhl
IGV2ZW50IGFuZCB0aGUgY2xpZW50IGlkZW50aWZpZXIuIA0KICogVGhlIGV2ZW50IGNvdWxkIGJl
IG9uZSBvZiB0aGUgZm9sbG93aW5nOg0KICoNCiAqICAtIExDT19ORVdfQ0xJRU5UXG4NCiAqICAg
IEEgbmV3IGNsaWVudCBpcyBjb25uZWN0aW5nIHRvIHRoZSBzZXJ2ZXIuDQogKiAgLSBMQ09fREVM
X0NMSUVOVFxuDQogKiAgICBBIG5ldyBjbGllbnQgaXMgZGlzY29ubmVjdGluZyBmcm9tIHRoZSBz
ZXJ2ZXIuDQogKg0KICogVGhlIGV2ZW50IHdpbGwgYmUgcGFzc2VkIHRocm91Z2ggdGhlIGFyZ3Vt
ZW50IG9mIFxhIG9wLCBhbmQgdGhlIGNsaWVudA0KICogaWRlbnRpZmllciB3aWxsIGJlIHBhc3Nl
ZCB0aHJvdWdoIHRoZSBhcmd1bWVudCBvZiBcYSBjbGkuDQogKiBZb3UgY2FuIGdldCB0aGUgaW5m
b3JtYXRpb24gb2YgdGhlIGNsaWVudCBieSB1c2luZyBcYSBjbGkgYW5kIFxhIG1nQ2xpZW50cy4N
CiAqDQogKiBcbm90ZSBPbmx5IGF2YWlsYWJsZSBmb3IgdGhlIHNlcnZlciBvZiBNaW5pR1VJLUxp
dGUuDQogKiANCiAqIFxzYSBPTl9ORVdfREVMX0NMSUVOVCwgbWdDbGllbnRzDQogKi8NCmV4dGVy
biBPTl9ORVdfREVMX0NMSUVOVCBPbk5ld0RlbENsaWVudDsNCg0KLyoqDQogKiBcdmFyIE9OX0NI
QU5HRV9MQVlFUiBPbkNoYW5nZUxheWVyDQogKiBcYnJpZWYgU2V0cyB0byBhIGZ1bmN0aW9uIHRv
IGhhbmRsZSBldmVudHMgb2YgbGF5ZXJzLg0KICoNCiAqIFdoZW4gYSBsYXllciBpcyBjaGFuZ2lu
ZywgTWluaUdVSSB3aWxsIGNhbGwgdGhpcyBmdW5jdGlvbiB0byB0ZWxsIA0KICogeW91IHRoZSBl
dmVudCBhbmQgdGhlIGxheWVyIG9yIHRoZSBjbGllbnQgd2hpY2ggbGVhZHMgdG8gdGhlIGV2ZW50
Lg0KICogVGhlIGV2ZW50IGNvdWxkIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nOg0KICoNCiAqICAt
IExDT19ORVdfTEFZRVJcbg0KICogICAgQSBuZXcgbGF5ZXIgaXMgY3JlYXRpbmcuDQogKiAgLSBM
Q09fREVMX0xBWUVSXG4NCiAqICAgIEEgbmV3IGxheWVyIGlzIGRlbGV0aW5nLg0KICogIC0gTENP
X0pPSU5fQ0xJRU5UXG4NCiAqICAgIEEgY2xpZW50IGlzIGpvaW5pbmcgdG8gdGhlIGxheWVyLg0K
ICogIC0gTENPX1JFTU9WRV9DTElFTlRcbg0KICogICAgQSBjbGllbnQgaXMgcmVtb3ZpbmcgZnJv
bSB0aGUgbGF5ZXIuDQogKiAgLSBMQ09fVE9QTU9TVF9DSEFOR0VEXG4NCiAqICAgIFRoZSB0b3Bt
b3N0IGxheWVyIGNoYW5nZWQsIHRoZSBsYXllciB3aWxsIGJlIHRoZSB0b3Btb3N0IGxheWVyLg0K
ICogIC0gTENPX0FDVElWRV9DSEFOR0VEXG4NCiAqICAgIFRoZSBhY3RpdmUgY2xpZW50IGNoYW5n
ZWQsIHRoZSBjbGllbnQgd2lsbCBiZSB0aGUgYWN0aXZlIG9uZS4NCiAqDQogKiBUaGUgZXZlbnQg
d2lsbCBiZSBwYXNzZWQgdGhyb3VnaCB0aGUgYXJndW1lbnQgb2YgXGEgb3AsIGFuZCB0aGUgcG9p
bnRlcnMgdG8gdGhlIHJlbGV2YW50DQogKiBsYXllciBhbmQgY2xpZW50IHdpbGwgYmUgcGFzc2Vk
IHRocm91Z2ggdGhlIGFyZ3VtZW50IG9mIFxhIGxheWVyIGFuZCBcYSBjbGllbnQgcmVzcGVjdGl2
ZWx5Lg0KICoNCiAqIFxub3RlIE9ubHkgYXZhaWxhYmxlIGZvciB0aGUgc2VydmVyIG9mIE1pbmlH
VUktTGl0ZS4NCiAqIA0KICogXHNhIE9OX05FV19ERUxfQ0xJRU5ULCBtZ0NsaWVudHMNCiAqLw0K
ZXh0ZXJuIE9OX0NIQU5HRV9MQVlFUiBPbkNoYW5nZUxheWVyOw0KDQovKiogDQogKiBcZm4gQk9P
TCBHVUlBUEkgU2VydmVyU3RhcnR1cCAodm9pZCkNCiAqIFxicmllZiBJbml0aWFsaXplcyB0aGUg
c2VydmVyIG9mIE1pbmlHVUktTGl0ZS4NCiAqDQogKiBUaGlzIGZ1bmN0aW9uIGluaXRpYWxpemVz
IHRoZSBzZXJ2ZXIsIGkuZS4gXGEgbWdpbml0LiBJdCBjcmVhdGVzDQogKiB0aGUgc2hhcmVkIHJl
c291cmNlLCB0aGUgbGlzdGVuaW5nIHNvY2tldCwgYW5kIG90aGVyIGludGVybmFsIG9iamVjdHMu
DQogKg0KICogXHJldHVybiBUUlVFIG9uIHN1Y2Nlc3MsIG90aGVyd2lzZSBGQUxTRS4NCiAqDQog
KiBcbm90ZSBTZXJ2ZXItb25seSBmdW5jdGlvbiwgaS5lLiBcZW0gb25seSBjYW4gYmUgY2FsbGVk
IGJ5IFxhIG1naW5pdC4NCiAqDQogKiBcc2EgU2V0Q2xpZW50U2NyZWVuDQogKg0KICovDQpCT09M
IEdVSUFQSSBTZXJ2ZXJTdGFydHVwICh2b2lkKTsNCg0KLyoqIA0KICogXGZuIEJPT0wgR1VJQVBJ
IFNldENsaWVudFNjcmVlbiAoaW50IGx4LCBpbnQgdHksIGludCByeCwgaW50IGJ5KQ0KICogXGJy
aWVmIFNldHMgdGhlIHNjcmVlbiByZWN0YW5nbGUgY2FuIGJlIHVzZWQgYnkgY2xpZW50cy4NCiAq
DQogKiBUaGlzIGZ1bmN0aW9uIHNldHMgdGhlIHNjcmVlbiByZWN0YW5nbGUgY2FuIGJlIHVzZWQg
YnkgY2xpZW50cy4NCiAqIEFsbCBjbGllbnRzJyBkcmF3aW5nIHdpbGwgYmUgY2xpcHBlZCB3aXRo
aW4gdGhlIHJlY3RhbmdsZS4NCiAqDQogKiBccGFyYW0gbHgsdHkscngsYnkgU3BlY2lmaWVzIHRo
ZSBzY3JlZW4gcmVjdGFuZ2xlLg0KICogXHJldHVybiBUUlVFIG9uIHN1Y2Nlc3MsIG90aGVyd2lz
ZSBGQUxTRS4NCiAqDQogKiBcbm90ZSBTZXJ2ZXItb25seSBmdW5jdGlvbiwgaS5lLiBcZW0gT05M
WSBjYW4gYmUgY2FsbGVkIGJ5IFxhIG1naW5pdC4NCiAqLw0KQk9PTCBHVUlBUEkgU2V0Q2xpZW50
U2NyZWVuIChpbnQgbHgsIGludCB0eSwgaW50IHJ4LCBpbnQgYnkpOw0KDQovKiogDQogKiBcZm4g
Qk9PTCBHVUlBUEkgT25seU1lQ2FuRHJhdyAodm9pZCkNCiAqIFxicmllZiBUZWxscyBjbGllbnRz
IGRvIG5vdCBkcmF3IGFueXRoaW5nIG9uIHNjcmVlbi4NCiAqDQogKiBccmV0dXJuIFRSVUUgb24g
c3VjY2Vzcywgb3RoZXJ3aXNlIEZBTFNFLg0KICoNCiAqIFxub3RlIFNlcnZlci1vbmx5IGZ1bmN0
aW9uLg0KICoNCiAqIFxzYSBDbGllbnRDYW5EcmF3Tm93RXgsIENsaWVudENhbkRyYXdOb3cNCiAq
Lw0KQk9PTCBHVUlBUEkgT25seU1lQ2FuRHJhdyAodm9pZCk7DQoNCi8qKiANCiAqIFxmbiBCT09M
IEdVSUFQSSBDbGllbnRDYW5EcmF3Tm93RXggKEJPT0wgYlJlcGFpbnQsIGNvbnN0IFJFQ1QqIGlu
dnJjKQ0KICogXGJyaWVmIFRlbGxzIGNsaWVudHMgdGhhdCB0aGV5IGNhbiBvdXRwdXQgdG8gc2Ny
ZWVuIG5vdy4NCiAqDQogKiBccGFyYW0gYlJlcGFpbnQgV2hldGhlciB0byByZXBhaW50IHRoZSBj
bGllbnRzIGluIHRvcG1vc3QgbGF5ZXIuDQogKiBccGFyYW0gaW52cmMgVGhlIGludmFsaWQgc2Ny
ZWVuIHJlY3QuIEl0IGNhbiBiZSBOVUxMLCBpbmRpY2F0ZXMgdGhlIHdob2xlIGRlc2t0b3Agb2Yg
Y2xpZW50cy4NCiAqIFxyZXR1cm4gVFJVRSBvbiBzdWNjZXNzLCBvdGhlcndpc2UgRkFMU0UuDQog
Kg0KICogXG5vdGUgU2VydmVyLW9ubHkgZnVuY3Rpb24uDQogKg0KICogXHNhIE9ubHlNZUNhbkRy
YXcsIENsaWVudENhbkRyYXdOb3cNCiAqLw0KQk9PTCBHVUlBUEkgQ2xpZW50Q2FuRHJhd05vd0V4
IChCT09MIGJSZXBhaW50LCBjb25zdCBSRUNUKiBpbnZyYyk7DQoNCi8qKiANCiAqIFxkZWYgQ2xp
ZW50Q2FuRHJhd05vdygpDQogKiBcYnJpZWYgVGVsbHMgY2xpZW50cyB0aGF0IHRoZXkgY2FuIG91
dHB1dCB0byBzY3JlZW4gbm93LCBhbmQgDQogKiAgICAgICAgbm90aWZ5IGNsaWVudHMgdG8gcmVw
YWludCB0aGUgd2hvbGUgZGVza3RvcC4NCiAqDQogKiBccmV0dXJuIFRSVUUgb24gc3VjY2Vzcywg
b3RoZXJ3aXNlIEZBTFNFLg0KICoNCiAqIFxub3RlIFNlcnZlci1vbmx5IGZ1bmN0aW9uLCBhbmQg
ZGVmaW5lZCBhcyBhIG1hY3JvIGNhbGxpbmcgXGEgQ2xpZW50Q2FuRHJhd05vd0V4IHdpdGgNCiAq
IFxhIGJSZXBhaW50IGlzIFRSVUUgYW5kIFxhIGludnJjIGlzIE5VTEwuDQogKg0KICogXHNhIENs
aWVudENhbkRyYXdOb3dFeA0KICovDQojZGVmaW5lIENsaWVudENhbkRyYXdOb3coKSAgICBDbGll
bnRDYW5EcmF3Tm93RXggKFRSVUUsIE5VTEwpDQoNCi8qKiANCiAqIFxmbiBCT09MIEdVSUFQSSBT
ZXRUb3BNb3N0Q2xpZW50IChpbnQgY2xpKQ0KICogXGJyaWVmIFNldHMgdG9wbW9zdCBsYXllciBi
eSBhIGNsaWVudCBpZGVudGlmaWVyLg0KICoNCiAqIFRoaXMgZnVuY3Rpb24gc2V0cyB0aGUgdG9w
bW9zdCBsYXllciBieSB0aGUgc3BlY2lmaWVkIGNsaWVudCBpZGVudGlmaWVyIFxhIGNsaS4NCiAq
IEl0IHdpbGwgYnJpbmcgdGhlIGxheWVyIGNvbnRhaW5zIHRoZSBjbGllbnQgdG8gYmUgdG9wbW9z
dC4NCiAqDQogKiBccGFyYW0gY2xpIFRoZSBpZGVudGlmaWVyIG9mIHRoZSBjbGllbnQuDQogKiBc
cmV0dXJuIFRSVUUgb24gc3VjY2Vzcywgb3RoZXJ3aXNlIEZBTFNFLg0KICoNCiAqIFxub3RlIFNl
cnZlci1vbmx5IGZ1bmN0aW9uLg0KICoNCiAqIFxzYSBTZXRUb3BNb3N0TGF5ZXIsIEJyaW5nTGF5
ZXIyVG9wbW9zdA0KICovDQpCT09MIEdVSUFQSSBTZXRUb3BNb3N0Q2xpZW50IChpbnQgY2xpKTsN
Cg0KLyoqIA0KICogXGZuIEJPT0wgR1VJQVBJIFNldFRvcE1vc3RMYXllciAoTUdfTGF5ZXIqIGxh
eWVyKQ0KICogXGJyaWVmIFNldHMgdG9wbW9zdCBsYXllci4NCiAqDQogKiBUaGlzIGZ1bmN0aW9u
cyBzZXRzIHRoZSBzcGVjaWZpZWQgbGF5ZXIgXGEgbGF5ZXIgdG8gYmUgdGhlIHRvcG1vc3QgbGF5
ZXIuDQogKg0KICogXHBhcmFtIGxheWVyIFRoZSBwb2ludGVyIHRvIHRoZSBsYXllci4NCiAqIFxy
ZXR1cm4gVFJVRSBvbiBzdWNjZXNzLCBvdGhlcndpc2UgRkFMU0UuDQogKg0KICogXG5vdGUgU2Vy
dmVyLW9ubHkgZnVuY3Rpb24uDQogKg0KICogXHNhIFNldFRvcE1vc3RDbGllbnQsIEJyaW5nTGF5
ZXIyVG9wbW9zdA0KICovDQpCT09MIEdVSUFQSSBTZXRUb3BNb3N0TGF5ZXIgKE1HX0xheWVyKiBs
YXllcik7DQoNCi8qKiANCiAqIFxmbiBpbnQgR1VJQVBJIEdldENsaWVudEJ5UElEIChpbnQgcGlk
KQ0KICogXGJyaWVmIFJldHVybnMgdGhlIGNsaWVudCBpZGVudGlmaWVyIGZyb20gUElEIG9mIGEg
Y2xpZW50Lg0KICoNCiAqIFRoaXMgZnVuY3Rpb24gZ2V0cyB0aGUgaWRlbnRpZmllciBvZiB0aGUg
c2VwY2lmaWVkIGNsaWVudCBcYSBjbGllbnQgZnJvbSB0aGUgUElEIG9mIGl0Lg0KICoNCiAqIFxw
YXJhbSBwaWQgVGhlIHByb2Nlc3MgSUQgb2YgdGhlIGNsaWVudC4NCiAqIFxyZXR1cm4gVGhlIGNs
aWVudCBpZGVudGlmaWVyIG9uIHN1Y2Nlc3MsIGxlc3MgdGhhbiAwIG9uIGVycm9yLg0KICoNCiAq
IFxub3RlIFNlcnZlci1vbmx5IGZ1bmN0aW9uLg0KICovDQppbnQgR1VJQVBJIEdldENsaWVudEJ5
UElEIChpbnQgcGlkKTsNCg0KICAgIC8qKiBAfSBlbmQgb2YgbGl0ZV9zZXJ2ZXJfZm5zICovDQoN
CiAgICAvKioNCiAgICAgKiBcZGVmZ3JvdXAgbGl0ZV9saXN0ZW5mZF9mbnMgTGlzdGVuaW5nIGEg
ZmlsZSBkZXNjcmlwdG9yDQogICAgICoNCiAgICAgKiBSZWdpc3Rlci9VbnJlZ2lzdGVyIGEgbGlz
dGVuIGZkIHRvIE1pbmlHVUkuDQogICAgICoNCiAgICAgKiBXaGVuIHlvdSBuZWVkIHRvIGxpc3Rl
biBhIGZpbGUgZGVzY3JpcHRvciwgeW91IGNhbiB1c2UgXGEgc2VsZWN0KDIpDQogICAgICogc3lz
dGVtIGNhbGwuIEluIE1pbmlHVUksIHlvdSBjYW4gYWxzbyByZWdpc3RlciBpdCB0byBNaW5pR1VJ
LCBhbmQgDQogICAgICogd2hlbiB0aGVyZSBpcyBhIHJlYWQvd3JpdGUvZXhjZXB0IGV2ZW50IG9u
IHRoZSByZWdpc3RlcmVkIGZkICwgTWluaUdVSQ0KICAgICAqIHdpbGwgc2VudCBhIG5vdGlmaWNh
dGlvbiBtZXNzYWdlIHRvIHRoZSByZWdpc3RlcmVkIHdpbmRvdy4NCiAgICAgKg0KICAgICAqIEV4
YW1wbGU6DQogICAgICoNCiAgICAgKiBcaW5jbHVkZSBsaXN0ZW5mZC5jDQogICAgICoNCiAgICAg
KiBAew0KICAgICAqLw0KDQojZGVmaW5lIE1BWF9OUl9MSVNURU5fRkQgICA1DQoNCi8qKiANCiAq
IFxmbiBCT09MIEdVSUFQSSBSZWdpc3Rlckxpc3RlbkZEIChpbnQgZmQsIGludCB0eXBlLCBIV05E
IGh3bmQsIHZvaWQqIGNvbnRleHQpDQogKiBcYnJpZWYgUmVnaXN0ZXJzIGEgbGlzdGVuaW5nIGZp
bGUgZGVzY3JpcHRvciB0byBNaW5pR1VJLUxpdGUuDQogKg0KICogVGhpcyBmdW5jdGlvbiByZWdp
c3RlcnMgdGhlIGZpbGUgZGVzY2lwdG9yIFxhIGZkIHRvIE1pbmlHVUktTGl0ZSBmb3IgbGlzdGVu
aW5nLg0KICoNCiAqIFdoZW4gdGhlcmUgaXMgYSByZWFkL3dyaXRlL2V4Y2VwdCBldmVudCBvbiB0
aGlzIFxhIGZkLCBNaW5pR1VJDQogKiB3aWxsIHBvc3QgYSBNU0dfRkRFVkVOVCBtZXNzYWdlIHdp
dGggd1BhcmFtIGJlaW5nIGVxdWFsIHRvDQogKiBNQUtFTE9ORyAoZmQsIHR5cGUpLCBhbmQgdGhl
IGxQYXJhbSBiZWluZyBzZXQgdG8gXGEgY29udGV4dA0KICogdG8gdGhlIHRhcmdldCB3aW5kb3cu
DQogKg0KICogXHBhcmFtIGZkIFRoZSBmaWxlIGRlc2NyaXB0b3IgdG8gYmUgbGlzdGVuZWQuDQog
KiBccGFyYW0gdHlwZSBUaGUgdHlwZSBvZiB0aGUgZXZlbnQgdG8gYmUgbGlzdGVuZWQsIGNhbiBi
ZSBQT0xMSU4sIFBPTExPVVQsIG9yIFBPTExFUlIuDQogKiBccGFyYW0gaHduZCBUaGUgaGFuZGxl
IHRvIHRoZSB3aW5kb3cgd2lsbCByZWNlaXZlIE1TR19GREVWRU5UIG1lc3NhZ2UuDQogKiBccGFy
YW0gY29udGV4dCBUaGUgdmFsdWUgd2lsbCBiZSBwYXNzZWQgdG8gdGhlIHdpbmRvdyBhcyBsUGFy
YW0gb2YgTVNHX0ZERVZFTlQgbWVzc2FnZS4NCiAqIFxyZXR1cm4gVFJVRSBpZiBhbGwgT0ssIGFu
ZCBGQUxTRSBvbiBlcnJvci4NCiAqDQogKiBcbm90ZSBPbmx5IGF2YWlsYWJsZSBvbiBNaW5pR1VJ
LUxpdGUuDQogKiBcc2EgVW5yZWdpc3Rlckxpc3RlbkZELCBzeXN0ZW1fbXNncw0KICovDQpCT09M
IEdVSUFQSSBSZWdpc3Rlckxpc3RlbkZEIChpbnQgZmQsIGludCB0eXBlLCBIV05EIGh3bmQsIHZv
aWQqIGNvbnRleHQpOw0KDQovKiogDQogKiBcZm4gQk9PTCBHVUlBUEkgVW5yZWdpc3Rlckxpc3Rl
bkZEIChpbnQgZmQpDQogKiBcYnJpZWYgVW5yZWdpc3RlcnMgYSBiZWluZyBsaXN0ZW5pbmcgZmls
ZSBkZXNjcmlwdG9yLg0KICoNCiAqIFRoaXMgZnVuY3Rpb24gdW5yZWdpc3RlcnMgdGhlIGJlaW5n
IGxpc3RlbmluZyBmaWxlIGRlc2NyaXB0b3IgXGEgZmQuDQogKg0KICogXHBhcmFtIGZkIFRoZSBm
aWxlIGRlc2NyaXB0b3IgdG8gYmUgdW5yZWdpc3RlcmVkLCBzaG91bGQgYmUgYSBiZWluZyBsaXN0
ZW5lZCBmaWxlIGRlc2NyaXB0b3IuDQogKiBccmV0dXJuIFRSVUUgaWYgYWxsIE9LLCBhbmQgRkFM
U0Ugb24gZXJyb3IuDQogKg0KICogXG5vdGUgT25seSBhdmFpbGFibGUgb24gTWluaUdVSS1MaXRl
Lg0KICogXHNhIFJlZ2lzdGVyTGlzdGVuRkQNCiAqLw0KQk9PTCBHVUlBUEkgVW5yZWdpc3Rlckxp
c3RlbkZEIChpbnQgZmQpOw0KDQogICAgLyoqIEB9IGVuZCBvZiBsaXRlX2xpc3RlbmZkX2ZucyAq
Lw0KDQogICAgLyoqDQogICAgICogXGRlZmdyb3VwIGxpdGVfcmVxdWVzdF9mbnMgU2ltcGxlIHJl
cXVlc3QvcmVwbHkgaW50ZXJmYWNlcw0KICAgICAqIA0KICAgICAqIFlvdSBjYW4gcmVnaXN0ZXIg
YSBjdXN0b21pemVkIHJlcXVlc3QgaGFuZGxlciB0byBleHRlbmQgeW91ciBzZXJ2ZXIsIGkuZS4g
DQogICAgICogXGEgbWdpbml0LCBvZiBNaW5pR1VJLUxpdGUuDQogICAgICoNCiAgICAgKiBBIHJl
cXVlc3QgY29uc2lzdHMgb2YgYW4gaWRlbnRpZmllciBhbmQgdGhlIGRhdGEgYXNzb2NpYXRlZCB3
aXRoIHRoZSByZXF1ZXN0Lg0KICAgICAqIFRoZSBpZGVudGlmaWVyIGlzIHVzZWQgYnkgTWluaUdV
SSB0byBkZXRlcm1pbmUgd2hpY2ggaGFuZGxlciBzaG91bGQgYmUgY2FsbGVkDQogICAgICogd2hl
biBhIHJlcXVlc3QgYXJyaXZlcy4gV2hlbiBNaW5pR1VJIGZpbmRzIG9uZSBoYW5kbGVyLCBpdCB3
aWxsIGNhbGwgdGhlIGhhbmRsZXINCiAgICAgKiBhbmQgcGFzcyB0aGUgc29ja2V0IGZkIGNvbm5l
Y3RlZCB0byB0aGUgY2xpZW50LCB0aGUgZGF0YSBhc3NvY2lhdGVkIHdpdGggdGhlIHJlcXVlc3Qs
DQogICAgICogYW5kIHRoZSBsZW5ndGggb2YgdGhlIGRhdGEuIEV2ZW50dWFsbHksIHRoZSBoYW5k
bGVyIHdpbGwgc2VudCB0aGUgcmVwbHkgdG8NCiAgICAgKiB0aGUgY2xpZW50Lg0KICAgICAqDQog
ICAgICogQWZ0ZXIgcmVnaXN0ZXIgYSBjdXN0b21pemVkIHJlcXVlc3QgaGFuZGxlciBpbiB5b3Vy
IHNlcnZlciwgeW91IGNhbiBjYWxsIA0KICAgICAqIFxhIGNsaV9yZXF1ZXN0IGZ1bmN0aW9uIGlu
IHRoZSBjbGllbnQgdG8gc2VuZCBhIHJlcXVlc3QgdG8gDQogICAgICogdGhlIHNlcnZlciBhbmQg
d2FpdCBmb3IgdGhlIHJlcGx5LiBPbiB0aGUgb3RoZXIgaGFuZCwgdGhlIHJlcXVlc3QgaGFuZGxl
ciBpbiB0aGUgc2VydmVyDQogICAgICogd2lsbCByZWNlaXZlIHRoZSByZXF1ZXN0IGFuZCBjYWxs
IFxhIHNlbmRfcmVwbHkgdG8gc2VuZCB0aGUgcmVwbHkgdG8gdGhlIGNsaWVudC4NCiAgICAgKiBJ
biB0aGlzIHdheSwgeW91IGNhbiBjcmVhdGUgYSBzaW1wbGUgSVBDIChpbnRlci1wcm9jZXNzIGNv
bm1tdW5pY2F0aW9uKSANCiAgICAgKiBtZWNoYW5pc20gYmV0d2VlbiBjbGllbnRzIGFuZCB0aGUg
c2VydmVyLg0KICAgICAqDQogICAgICogRXhhbXBsZToNCiAgICAgKg0KICAgICAqIFxpbmNsdWRl
IHJlcXVlc3QuYw0KICAgICAqDQogICAgICogQHsNCiAgICAgKi8NCg0KLyoqDQogKiBcZGVmIE1B
WF9TWVNfUkVRSUQNCiAqIFxicmllZiBNYXhpbWFsIHN5c3RlbSByZXNlcnZlZCByZXF1ZXN0IGlk
ZW50aWZpZXIuDQogKg0KICogXHNhIFJlZ2lzdGVyUmVxdWVzdEhhbmRsZXINCiAqLw0KI2RlZmlu
ZSBNQVhfU1lTX1JFUUlEICAgICAgICAgICAweDAwMTANCg0KLyoqDQogKiBcZGVmIE1BWF9SRVFJ
RA0KICogXGJyaWVmIE1heGltYWwgcmVxdWVzdCBpZGVudGlmaWVyLg0KICoNCiAqIFxzYSBSZWdp
c3RlclJlcXVlc3RIYW5kbGVyDQogKi8NCiNkZWZpbmUgTUFYX1JFUUlEICAgICAgICAgICAgICAg
MHgwMDE4DQoNCi8qKiBBIHJlcXVlc3Qgd2lsbCBiZSBzZW50IHRvIHRoZSBzZXJ2ZXIgb2YgTWlu
aUdVSS1MaXRlLiAqLw0KdHlwZWRlZiBzdHJ1Y3QgX1JFUVVFU1Qgew0KICAgIC8qKiBUaGUgaWRl
bnRpZmllciBvZiB0aGUgdHlwZSBvZiB0aGUgcmVxdWVzdC4gKi8NCiAgICBpbnQgaWQ7DQogICAg
LyoqIFRoZSBkYXRhIHdpbGwgYmUgc2VudCB0byB0aGUgc2VydmVyLiAqLw0KICAgIGNvbnN0IHZv
aWQqIGRhdGE7DQogICAgLyoqIFRoZSBsZW5ndGggb2YgdGhlIGRhdGEuICovDQogICAgc2l6ZV90
IGxlbl9kYXRhOw0KfSBSRVFVRVNUOw0KdHlwZWRlZiBSRVFVRVNUKiBQUkVRVUVTVDsNCg0KLyoq
IA0KICogXGZuIGNsaV9yZXF1ZXN0IChQUkVRVUVTVCByZXF1ZXN0LCB2b2lkKiByZXN1bHQsIGlu
dCBsZW5fcnNsdCkNCiAqIFxicmllZiBTZW5kcyBhIHJlcXVlc3QgdG8gdGhlIHNlcnZlciBhbmQg
d2FpdCByZXBseS4NCiAqDQogKiBJZiBcYSByZXN1bHQgaXMgTlVMTCBvciBcYSBsZW5fcnNsdCBp
cyB6ZXJvLCB0aGUgZnVuY3Rpb24gd2lsbCByZXR1cm4gDQogKiBpbW1lZGlhdGVseSBhZnRlciBz
ZW50IHRoZSBkYXRhIHRvIHRoZSBzZXJ2ZXIuDQogKg0KICogXHBhcmFtIHJlcXVlc3QgVGhlIHBv
aW50ZXIgdG8gUkVRVUVTVCwgd2hpY2ggY29udGFpbnMgdGhlIGRhdGEgb2YgdGhlIHJlcXVlc3Qu
DQogKiBccGFyYW0gcmVzdWx0IFRoZSBidWZmZXIgcmVjZWl2ZXMgdGhlIHJlcGx5Lg0KICogXHBh
cmFtIGxlbl9yc2x0IFRoZSBsZW5naHQgb2YgdGhlIGJ1ZmZlci4NCiAqIFxyZXR1cm4gWmVybyBv
biBzdWNjZXNzLCBuby16ZXJvIG9uIGVycm9yLg0KICoNCiAqIFxub3RlIE9ubHkgdXNlZCBieSBj
bGllbnRzIHRvIHNlbmQgYSByZXF1ZXN0IHRvIHRoZSBzZXJ2ZXIuDQogKiBcc2Egc2VuZF9yZXBs
eQ0KICovDQppbnQgY2xpX3JlcXVlc3QgKFBSRVFVRVNUIHJlcXVlc3QsIHZvaWQqIHJlc3VsdCwg
aW50IGxlbl9yc2x0KTsNCg0KLyoqIA0KICogXGZuIGludCBnZXRfc29ja19mZDJzcnYgKHZvaWQp
DQogKiBcYnJpZWYgR2V0cyB0aGUgZmlsZSBkZXNjcmlwdG9yIG9mIHRoZSBzb2NrZXQgY29ubmVj
dGVkIHRvIHRoZSBzZXJ2ZXIuDQogKg0KICogVGhpcyBmdW5jdGlvbiByZXR1cm5zIHRoZSBmaWxl
IGRlc2NyaXB0b3Igb2YgdGhlIHNvY2tldCBjb25uZWN0ZWQgdG8gdGhlIHNlcnZlciwNCiAqIGku
ZS4gXGEgbWdpbml0Lg0KICoNCiAqIFxyZXR1cm4gVGhlIGZpbGUgZGVzY3JpcHRvciBvZiB0aGUg
c29ja2V0IGNvbm5lY3RlZCB0byB0aGUgc2VydmVyLg0KICoNCiAqIFxub3RlIE9ubHkgdXNlZCBi
eSBjbGllbnRzLCBubyBtZWFuaW5nIGZvciB0aGUgc2VydmVyLg0KICovDQppbnQgZ2V0X3NvY2tf
ZmQyc3J2ICh2b2lkKTsNCg0KLyoqIA0KICogXGZuIHNlbmRfcmVwbHkgKGludCBjbGlmZCwgY29u
c3Qgdm9pZCogcmVwbHksIGludCBsZW4pDQogKiBcYnJpZWYgU2VuZHMgdGhlIHJlcGx5IHRvIHRo
ZSBjbGllbnQuDQogKg0KICogVGhpcyBmdW5jdGlvbiBzZW5kcyBhIHJlcGxheSBwb2ludGVkIHRv
IGJ5IFxhIHJlcGx5IHdoaWNoIGlzIA0KICogXGEgbGVuIGJ5dGVzIGxvbmcgdG8gdGhlIGNsaWVu
dC4NCiAqDQogKiBcbm90ZSBPbmx5IHVzZWQgYnkgdGhlIHNlcnZlciB0byBzZW5kIHRoZSByZXBs
eSB0byB0aGUgY2xpZW50Lg0KICogVGhpcyBmdW5jdGlvbiB0eXBpY2FsbHkgY2FsbGVkIGluIHlv
dXIgY3VzdG9taXplZCByZXF1ZXN0IGhhbmRsZXIuDQogKg0KICogXHBhcmFtIGNsaWZkIFRoZSBm
ZCBjb25uZWN0ZWQgdG8gdGhlIGNsaWVudC4NCiAqIFxwYXJhbSByZXBseSBUaGUgYnVmZmVyIGNv
bnRhaW5zIHRoZSByZXBseSBkYXRhLg0KICogXHBhcmFtIGxlbiBUaGUgbGVuZ3RoIG9mIHRoZSBy
ZXBseSBkYXRhIGluIGJ5dGVzLg0KICogXHJldHVybiBaZXJvIG9uIHN1Y2Nlc3MsIG5vLXplcm8g
b24gZXJyb3IuDQogKg0KICogXHNhIGNsaV9yZXF1ZXN0LCBSZWdpc3RlclJlcXVlc3RIYW5kbGVy
DQogKi8NCmludCBzZW5kX3JlcGx5IChpbnQgY2xpZmQsIGNvbnN0IHZvaWQqIHJlcGx5LCBpbnQg
bGVuKTsNCg0KLyoqDQogKiBcdmFyIHR5cGVkZWYgaW50ICgqIFJFUV9IQU5ETEVSKShpbnQgY2xp
LCBpbnQgY2xpZmQsIHZvaWQqIGJ1ZmYsIHNpemVfdCBsZW4pDQogKiBcYnJpZWYgUmVxdWVzdCBo
YW5kbGVyLg0KICoNCiAqIFxzYSBSZWdpc3RlclJlcXVlc3RIYW5kbGVyDQogKi8NCnR5cGVkZWYg
aW50ICgqIFJFUV9IQU5ETEVSKSAoaW50IGNsaSwgaW50IGNsaWZkLCB2b2lkKiBidWZmLCBzaXpl
X3QgbGVuKTsNCg0KLyoqIA0KICogXGZuIEJPT0wgR1VJQVBJIFJlZ2lzdGVyUmVxdWVzdEhhbmRs
ZXIgKGludCByZXFfaWQsIFJFUV9IQU5ETEVSIHlvdXJfaGFuZGxlcikNCiAqIFxicmllZiBSZWdp
c3RlcnMgYSBjdXN0b21pemUgcmVxdWVzdCBoYW5kbGVyLg0KICoNCiAqIFRoaXMgZnVuY3Rpb24g
cmVnaXN0ZXJzIGEgcmVxdWVzdCBoYW5kbGVyIHRvIHRoZSBzZXJ2ZXIsIGkuZS4gXGEgbWdpbml0
Lg0KICoNCiAqIFxwYXJhbSByZXFfaWQgVGhlIGlkZW50aWZpZXIgb2YgdGhlIGN1c3RvbWl6ZWQg
cmVxdWVzdC4NCiAqIFxwYXJhbSB5b3VyX2hhbmRsZXIgVGhlIGhhbmRsZXIgb2YgdGhlIHJlcXVl
c3QuIEl0IGNhbiBiZSBOVUxMLCB0byB1bnJlZ2lzdGVyIHRoZSByZXF1ZXN0IGhhbmRsZXIuDQog
KiBccmV0dXJuIFRSVUUgb24gc3VjY2VzcywgRkFMU0Ugb24gZXJyb3IuDQogKg0KICogXG5vdGUg
T25seSB1c2VkIGJ5IHRoZSBzZXJ2ZXIgdG8gcmVnaXN0ZXIgYSByZXF1ZXN0IGhhbmRsZXIuDQog
KiBBbmQgdGhlIGlkZW50aWZpZXIgc2hvdWxkIGJlIGxhcmdlciB0aGFuIFxhIE1BWF9TWVNfUkVR
SUQgYW5kIGxlc3MgdGhhbiBvciBlcXVhbA0KICogdG8gXGEgTUFYX1JFUUlELg0KICoNCiAqIFxz
YSBjbGlfcmVxdWVzdCwgc2VuZF9yZXBseSwgTUFYX1NZU19SRVFJRCwgTUFYX1JFUUlEDQogKi8N
CkJPT0wgR1VJQVBJIFJlZ2lzdGVyUmVxdWVzdEhhbmRsZXIgKGludCByZXFfaWQsIFJFUV9IQU5E
TEVSIHlvdXJfaGFuZGxlcik7DQoNCi8qKiANCiAqIFxmbiBFUV9IQU5ETEVSIEdVSUFQSSBHZXRS
ZXF1ZXN0SGFuZGxlciAoaW50IHJlcV9pZCkNCiAqIFxicmllZiBHZXRzIHRoZSByZXF1ZXN0IGhh
bmRsZXIgYnkgcmVxdWVzdCBpZGVudGlmaWVyLg0KICoNCiAqIFRoaXMgZnVuY3Rpb24gcmV0dXJu
cyB0aGUgcmVxdWVzdCBoYW5kbGVyIG9mIHRoZSBzcGVjaWZpZWQgcmVxdWVzdCBpZGVudGlmaWVy
IFxhIHJlcV9pZC4NCiAqDQogKiBccGFyYW0gcmVxX2lkIFRoZSByZXF1ZXN0IGlkZW50aWZpZXIu
DQogKiBccmV0dXJuIFRoZSBoYW5kbGVyIG9uIHN1Y2Nlc3MsIE5VTEwgb24gZXJyb3IuDQogKg0K
ICogXG5vdGUgT25seSBjYW4gYmUgdXNlZCBieSB0aGUgc2VydmVyLg0KICoNCiAqIFxzYSBSZWdp
c3RlclJlcXVlc3RIYW5kbGVyDQogKi8NClJFUV9IQU5ETEVSIEdVSUFQSSBHZXRSZXF1ZXN0SGFu
ZGxlciAoaW50IHJlcV9pZCk7DQoNCiAgICAvKiogQH0gZW5kIG9mIGxpdGVfcmVxdWVzdF9mbnMg
Ki8NCg0KICAgIC8qKg0KICAgICAqIFxkZWZncm91cCBsaXRlX3NvY2tldF9mbnMgR2VuZXJhbCBz
b2NrZXQgb3BlcmF0aW9ucw0KICAgICAqDQogICAgICogTWluaUdVSS1MaXRlIHVzZXMgVU5JWCBk
b21haW4gc29ja2V0IHRvIGJ1aWxkIHRoZSBjb21tdW5pY2F0aW9uDQogICAgICogYmV0d2VlbiB0
aGUgc2VydmVyIGFuZCB0aGUgY2xpZW50cy4NCiAgICAgKg0KICAgICAqIFlvdSBjYW4gYWxzbyB1
c2UgdGhlIHVuZGVybGF5IGludGVyZmFjZXMgd2hpY2ggTWluaUdVSSB1c2VzIHRvIGNyZWF0ZQ0K
ICAgICAqIHlvdXIgb3duIFVOSVggZG9tYWluIHNvY2tldC4NCiAgICAgKg0KICAgICAqIEV4YW1w
bGU6DQogICAgICoNCiAgICAgKiBcaW5jbHVkZSBzb2NrZXQuYw0KICAgICAqDQogICAgICogQHsN
CiAgICAgKi8NCg0KLyoqDQogKiBcZm4gaW50IHNlcnZfbGlzdGVuIChjb25zdCBjaGFyKiBuYW1l
KQ0KICogXGJyaWVmIENyZWF0ZXMgYSBsaXN0ZW4gc29ja2V0Lg0KICoNCiAqIFRoaXMgZnVuY3Rp
b24gaXMgdXNlZCBieSB0aGUgc2VydmVyIHRvIGNyZWF0ZSBhIGxpc3RlbmluZyBzb2NrZXQuIA0K
ICogQW55IE1pbmlHVUktTGl0ZSBhcHBsaWNhdGlvbiBjYW4gY2FsbCB0aGlzIGZ1bmN0aW9uIHRv
IGNyZWF0ZSBhIA0KICogbGlzdGVuaW5nIHNvY2tldC4gVGhlIHNlcnZlciwgaS5lLiBcYSBtZ2lu
aXQsIG9mIE1pbmlHVUktTGl0ZSB1c2VzIA0KICogdGhpcyBmdW5jdGlvbiB0byBjcmVhdGUgaXRz
IGxpc3RlbmluZyBzb2NrZXQsIGFuZCBuYW1lZCB0aGUgc29ja2V0IA0KICogdG8gJy92YXIvdG1w
L21pbmlndWknLg0KICoNCiAqIFxwYXJhbSBuYW1lIFRoZSBwYXRoIG5hbWUgb2YgdGhlIGxpc3Rl
bmluZyBzb2NrZXQuDQogKiBccmV0dXJuIFRoZSBmaWxlIGRpc2NyaXB0b3Igb2YgdGhlIGxpc3Rl
bmluZyBzb2NrZXQgY3JlYXRlZCwgLTEgb24gZXJyb3IuDQogKg0KICogXG5vdGUgQXMgYSBjb252
ZW50aW9uLCB5b3Ugc2hvdWxkIGxvY2F0ZWQgdGhlIHNvY2tldCBpbiAnL3Zhci90bXAvJyBkaXJl
Y3RvcnkuDQogKi8NCmludCBzZXJ2X2xpc3RlbiAoY29uc3QgY2hhciogbmFtZSk7DQoNCi8qKg0K
ICogXGZuIGludCBzZXJ2X2FjY2VwdCAoaW50IGxpc3RlbmZkLCBwaWRfdCAqcGlkcHRyLCB1aWRf
dCAqdWlkcHRyKQ0KICogXGJyaWVmIFdhaXRzIGZvciBhIGNsaWVudCBjb25uZWN0aW9uIHRvIGFy
cml2ZSwgYW5kIGFjY2VwdCBpdC4NCiAqDQogKiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgYnkgdGhl
IHNlcnZlciB0byB3YWl0IGEgY29ubmVjdGlvbiBhbmQgYWNjZXB0IGl0Lg0KICoNCiAqIEFmdGVy
IGNyZWF0aW5nIGEgbGlzdGVuIHNvY2tldCBieSBjYWxsaW5nIFxhIHNlcnZfbGlzdGVuLCB5b3Ug
Y2FuIGNhbGwgdGhpcw0KICogZnVuY3Rpb24gdG8gY3JlYXRlIGEgY29ubmVjdGlvbiB3aXRoIGEg
Y2xpZW50LiBXZSBhbHNvIG9idGFpbiB0aGUgY2xpZW50J3MgUElEIA0KICogYW5kIFVJRCBmcm9t
IHRoZSBwYXRobmFtZSB0aGF0IGl0IG11c3QgYmluZCBiZWZvcmUgY2FsbGluZyB1cy4NCiAqDQog
KiBccGFyYW0gbGlzdGVuZmQgVGhlIGZkIG9mIGxpc3RlbiBzb2NrZXQuDQogKiBccGFyYW0gcGlk
cHRyIFRoZSBjbGllbnQgUElEIHdpbGwgYmUgc2F2ZWQgdG8gdGhpcyBidWZmZXIgd2hlbiB0aGlz
IGZ1bmN0aW9uIHJldHVybnMuDQogKiBccGFyYW0gdWlkcHRyIFRoZSBjbGllbnQgVUlEIHdpbGwg
YmUgc2F2ZWQgdG8gdGhpcyBidWZmZXIgd2hlbiB0aGlzIGZ1bmN0aW9uIHJldHVybnMuDQogKiBc
cmV0dXJuIFRoZSBuZXcgY29ubmVjdGVkIGZkIGlmIGFsbCBPSywgPCAwIG9uIGVycm9yLg0KICoN
CiAqIFxzYSBzZXJ2X2xpc3RlbiwgY2xpX2Nvbm4NCiAqLw0KaW50IHNlcnZfYWNjZXB0IChpbnQg
bGlzdGVuZmQsIHBpZF90ICpwaWRwdHIsIHVpZF90ICp1aWRwdHIpOw0KDQovKioNCiAqIFxmbiBp
bnQgY2xpX2Nvbm4gKGNvbnN0IGNoYXIqIG5hbWUsIGNoYXIgcHJvamVjdCkNCiAqIFxicmllZiBV
c2VkIGJ5IGNsaWVudHMgdG8gY29ubmVjdCB0byBhIHNlcnZlci4NCiAqDQogKiBUaGlzIGZ1bmN0
aW9uIGlzIHVzZWQgYnkgY2xpZW50cyB0byBjb25uZWN0IHRvIGEgc2VydmVyLg0KICoNCiAqIFRo
ZSBjcmVhdGVkIHNvY2tldCB3aWxsIGJlIGxvY2F0ZWQgYXQgdGhlIGRpcmVjdG9yeSAnL3Zhci90
bXAnLA0KICogYW5kIHdpdGggbmFtZSBvZiAnL3Zhci90bXAveHh4eHgtYycsIHdoZXJlICd4eHh4
eCcgaXMgdGhlIHBpZCBvZiBjbGllbnQuDQogKiBhbmQgJ2MnIGlzIGEgY2hhcmFjdGVyIHRvIGRp
c3Rpbmd1aXNoIGRpZmVyZW50IHByb2plY3RzLg0KICogTWluaUdVSSBpdHNlbGYgdXNlICdhJyBh
cyB0aGUgcHJvamVjdCBjaGFyYWN0ZXIgdG8gY3JlYXRlIHNvY2tldCBiZXR3ZWVuDQogKiAnbWdp
bml0JyBhbmQgY2xpZW50cy4NCiAqDQogKiBccGFyYW0gbmFtZSBUaGUgbmFtZSBvZiB0aGUgd2Vs
bC1rbm93biBsaXN0ZW4gc29ja2V0IChjcmVhdGVkIGJ5IHRoZSBzZXJ2ZXIpLg0KICogXHBhcmFt
IHByb2plY3QgQSBjaGFyYWN0ZXIgdG8gZGlzdGluZ3Vpc2ggZGlmZXJlbnQgcHJvamVjdHMgKERv
IFxlbSBOT1QgdXNlICdhJykuDQogKiBccmV0dXJuIFRoZSBuZXcgY29ubmVjdGVkIGZkIGlmIGFs
bCBPSywgPCAwIG9uIGVycm9yLg0KICoNCiAqIFxzYSBzZXJ2X2xpc3Rlbiwgc2Vydl9hY2NlcHQN
CiAqLw0KaW50IGNsaV9jb25uIChjb25zdCBjaGFyKiBuYW1lLCBjaGFyIHByb2plY3QpOw0KDQoj
ZGVmaW5lIFNPQ0tFUlJfSU8gICAgICAgICAgLTENCiNkZWZpbmUgU09DS0VSUl9DTE9TRUQgICAg
ICAtMg0KI2RlZmluZSBTT0NLRVJSX0lOVkFSRyAgICAgIC0zDQojZGVmaW5lIFNPQ0tFUlJfVElN
RU9VVCAgICAgLTQNCiNkZWZpbmUgU09DS0VSUl9PSyAgICAgICAgICAwDQoNCi8qIFVOSVggZG9t
YWluIHNvY2tldCBJL08gZnVuY3Rpb25zLiAqLw0KDQovKioNCiAqIFxmbiBpbnQgc29ja193cml0
ZV90IChpbnQgZmQsIGNvbnN0IHZvaWQqIGJ1ZmYsIGludCBjb3VudCwgdW5zaWduZWQgaW50IHRp
bWVvdXQpIA0KICogXGJyaWVmIFdyaXRlcyBkYXRhIHRvIHNvY2tldC4NCiAqDQogKiBUaGlzIGZ1
bmN0aW9uIHdyaXRlcyB0aGUgZGF0YSBibG9jayBwb2ludGVkIHRvIGJ5IFxhIGJ1ZmYgDQogKiB3
aGljaCBpcyBcYSBjb3VudCBieXRlcyBsb25nIHRvIHRoZSBzb2NrZXQgXGEgZmQuDQogKg0KICog
XHBhcmFtIGZkIFRoZSBmaWxlIGRlc2NyaXB0b3Igb2YgdGhlIHNvY2tldC4NCiAqIFxwYXJhbSBi
dWZmIFRoZSBidWZmZXIgY29udGFpbnMgdGhlIGRhdGEuDQogKiBccGFyYW0gY291bnQgVGhlIGxl
bmd0aCBpbiBieXRlcyBvZiB0aGUgYnVmZmVyLg0KICogXHBhcmFtIHRpbWVvdXQgQW4gdXBwZXIg
Ym91bmQgb24gdGhlIGFtb3VudCBvZiB0aW1lIGVsYXBzZWQgYmVmb3JlIA0KICogICAgICAgIFxh
IHNvY2tfd3JpdGVfdCByZXR1cm5zLiBXaGVuIGl0IGlzIHplcm8sIFxhIHNvY2tfd3JpdGVfdCBj
YW4gDQogKiAgICAgICAgYmxvY2sgaW5kZWZpbml0ZWx5LiBUaGUgdGltZW91dCB2YWx1ZSBpcyBp
biB0aWNrIGNvdW50LCBhbmQgDQogKiAgICAgICAgdGljayBjb3VudCBvZiBNaW5pR1VJIGlzIGlu
IHVuaXQgb2YgMTAgbWlsbGlzZWNvbmRzLg0KICogXHJldHVybiBTT0NLRVJSX09LIGlmIGFsbCBP
SywgPCAwIG9uIGVycm9yLg0KICoNCiAqIFxyZXR2YWwgU09DS0VSUl9PSyAgICAgICBSZWFkIGRh
dGEgc3VjY2Vzc2Z1bGx5Lg0KICogXHJldHZhbCBTT0NLRVJSX0lPICAgICAgIFRoZXJlIGFyZSBz
b21lIEkvTyBlcnJvcnMgb2NjdXJyZWQuDQogKiBccmV0dmFsIFNPQ0tFUlJfQ0xPU0VEICAgVGhl
IHNvY2tldCBoYXMgYmVlbiBjbG9zZWQgYnkgdGhlIHBlZXIuDQogKiBccmV0dmFsIFNPQ0tFUlJf
SU5WQVJHICAgWW91IHBhc3NlZCBpbnZhbGlkIGFyZ3VtZW50cy4NCiAqIFxyZXR2YWwgU09DS0VS
Ul9USU1FT1VUICBUaW1lb3V0Lg0KICoNCiAqIFxub3RlIFRoZSBcYSB0aW1lb3V0IG9ubHkgZ29l
cyBpbnRvIGVmZmVjdCB3aGVuIHRoaXMgZnVuY3Rpb24gY2FsbGVkIA0KICogICAgICAgYnkgdGhl
IHNlcnZlciBvZiBNaW5pR1VJLUxpdGUsIGkuZS4gXGEgbWdpbml0LiANCiAqDQogKiBcc2Egc29j
a19yZWFkX3QNCiAqLw0KaW50IHNvY2tfd3JpdGVfdCAoaW50IGZkLCBjb25zdCB2b2lkKiBidWZm
LCBpbnQgY291bnQsIHVuc2lnbmVkIGludCB0aW1lb3V0KTsNCg0KLyoqDQogKiBcZm4gaW50IHNv
Y2tfcmVhZF90IChpbnQgZmQsIHZvaWQqIGJ1ZmYsIGludCBjb3VudCwgdW5zaWduZWQgaW50IHRp
bWVvdXQpDQogKiBcYnJpZWYgUmVhZHMgZGF0YSBmcm9tIHNvY2tldC4NCiAqDQogKiBUaGlzIGZ1
bmN0aW9uIHJlYWRzIGRhdGEgd2hpY2ggaXMgXGEgY291bnQgYnl0ZXMgbG9uZyB0byB0aGUgYnVm
ZmVyIFxhIGJ1ZmYNCiAqIGZyb20gdGhlIHNvY2tldCBcYSBmZC4NCiAqDQogKiBccGFyYW0gZmQg
VGhlIGZpbGUgZGVzY3JpcHRvciBvZiB0aGUgc29ja2V0Lg0KICogXHBhcmFtIGJ1ZmYgVGhlIGJ1
ZmZlciB1c2VkIHRvIHNhdmUgdGhlIGRhdGEuDQogKiBccGFyYW0gY291bnQgVGhlIGxlbmd0aCBp
biBieXRlcyBvZiB0aGUgYnVmZmVyLg0KICogXHBhcmFtIHRpbWVvdXQgQW4gdXBwZXIgYm91bmQg
b24gdGhlIGFtb3VudCBvZiB0aW1lIGVsYXBzZWQgYmVmb3JlIA0KICogICAgICAgIFxhIHNvY2tf
cmVhZF90IHJldHVybnMuIFdoZW4gaXQgaXMgemVybywgXGEgc29ja19yZWFkX3QgY2FuIA0KICog
ICAgICAgIGJsb2NrIGluZGVmaW5pdGVseS4gVGhlIHRpbWVvdXQgdmFsdWUgaXMgaW4gdGhlIHRp
Y2sgY291bnQgb2YgTWluaUdVSSwNCiAqICAgICAgICBhbmQgdGljayBjb3VudCBvZiBNaW5pR1VJ
IGlzIGluIHVuaXQgb2YgMTAgbWlsbGlzZWNvbmRzLg0KICogXHJldHVybiBTT0NLRVJSX09LIGlm
IGFsbCBPSywgPCAwIG9uIGVycm9yLg0KICoNCiAqIFxyZXR2YWwgU09DS0VSUl9PSyAgICAgICBS
ZWFkIGRhdGEgc3VjY2Vzc2Z1bGx5Lg0KICogXHJldHZhbCBTT0NLRVJSX0lPICAgICAgIFRoZXJl
IGFyZSBzb21lIEkvTyBlcnJvcnMgb2NjdXJyZWQuDQogKiBccmV0dmFsIFNPQ0tFUlJfQ0xPU0VE
ICAgVGhlIHNvY2tldCBoYXMgYmVlbiBjbG9zZWQgYnkgdGhlIHBlZXIuDQogKiBccmV0dmFsIFNP
Q0tFUlJfSU5WQVJHICAgWW91IHBhc3NlZCBpbnZhbGlkIGFyZ3VtZW50cy4NCiAqIFxyZXR2YWwg
U09DS0VSUl9USU1FT1VUICBUaW1lb3V0Lg0KICoNCiAqIFxub3RlIFRoZSBcYSB0aW1lb3V0IG9u
bHkgZ29lcyBpbnRvIGVmZmVjdCB3aGVuIHRoaXMgZnVuY3Rpb24gY2FsbGVkIA0KICogICAgICAg
YnkgdGhlIHNlcnZlciBvZiBNaW5pR1VJLUxpdGUsIGkuZS4gXGEgbWdpbml0LiANCiAqDQogKiBc
c2Egc29ja193cml0ZV90DQogKi8NCmludCBzb2NrX3JlYWRfdCAoaW50IGZkLCB2b2lkKiBidWZm
LCBpbnQgY291bnQsIHVuc2lnbmVkIGludCB0aW1lb3V0KTsNCg0KLyoqDQogKiBcZGVmIHNvY2tf
d3JpdGUoZmQsIGJ1ZmYsIGNvdW50KQ0KICogXGJyaWVmIFRoZSBibG9ja2luZyB2ZXJzaW9uIG9m
IFxhIHNvY2tfd3JpdGVfdCBmdW5jdGlvbi4NCiAqDQogKiBcc2Egc29ja193cml0ZV90DQogKi8N
CiNkZWZpbmUgc29ja193cml0ZShmZCwgYnVmZiwgY291bnQpIHNvY2tfd3JpdGVfdChmZCwgYnVm
ZiwgY291bnQsIDApDQoNCi8qKg0KICogXGRlZiBzb2NrX3JlYWQoZmQsIGJ1ZmYsIGNvdW50KQ0K
ICogXGJyaWVmIFRoZSBibG9ja2luZyB2ZXJzaW9uIG9mIFxhIHNvY2tfcmVhZF90IGZ1bmN0aW9u
Lg0KICoNCiAqIFxzYSBzb2NrX3JlYWRfdA0KICovDQojZGVmaW5lIHNvY2tfcmVhZChmZCwgYnVm
ZiwgY291bnQpIHNvY2tfcmVhZF90KGZkLCBidWZmLCBjb3VudCwgMCkNCg0KICAgIC8qKiBAfSBl
bmQgb2YgbGl0ZV9zb2NrZXRfZm5zICovDQoNCiAgICAvKiogQH0gZW5kIG9mIGxpdGVfZm5zICov
DQoNCiNlbmRpZiAvKiBMSVRFX1ZFUlNJT04gKi8NCg0KICAgIC8qKg0KICAgICAqIFxkZWZncm91
cCBpbml0X2ZucyBJbml0aWFsaXphdGlvbiBhbmQgdGVybWluYXRpb24gZnVuY3Rpb25zDQogICAg
ICoNCiAgICAgKiBOb3JtYWxseSwgdGhlIG9ubHkgZW50cnkgb2YgYW55IE1pbmlHVUkgYXBwbGlj
YXRpb24gaXMgXGEgTWluaUdVSU1haW4uDQogICAgICogVGhlIGFwcGxpY2F0aW9uIHdpbGwgdGVy
bWluYXRlIHdoZW4geW91IGNhbGwgXGEgZXhpdCgzKSBvciBqdXN0IHJldHVybiBmcm9tDQogICAg
ICogXGEgTWluaUdVSU1haW4uDQogICAgICoNCiAgICAgKiBFeGFtcGxlIDE6DQogICAgICoNCiAg
ICAgKiBcaW5jbHVkZSBtaW5pZ3VpbWFpbi5jDQogICAgICoNCiAgICAgKiBFeGFtcGxlIDI6DQog
ICAgICoNCiAgICAgKiBcaW5jbHVkZSBoZWxsb193b3JsZC5jDQogICAgICoNCiAgICAgKiBAew0K
ICAgICAqLw0KDQovKioNCiAqIFxmbiBCT09MIEdVSUFQSSBSZWluaXREZXNrdG9wRXggKEJPT0wg
aW5pdF9zeXNfdGV4dCkNCiAqIFxicmllZiBSZS1pbml0aWFsaXplcyB0aGUgZGVza3RvcC4NCiAq
DQogKiBXaGVuIHlvdSBjaGFuZ2VkIHRoZSBjaGFyc2V0IG9yIHRoZSBiYWNrZ3JvdW5kIHBpY3R1
cmUgb2YgdGhlIGRlc2t0b3AsDQogKiB5b3Ugc2hvdWxkIGNhbGwgdGhpcyBmdW5jdGlvbiB0byBy
ZS1pbml0aWFsaXplIHRoZSBsb2NhbCBzeXN0ZW0gdGV4dA0KICogKHdoZW4gXGEgaW5pdF9zeXNf
dGV4dCBpcyBUUlVFKSwgdGhlIGJhY2tncm91bmQgcGljdHVyZSwgYW5kIHRoZSBkZXNrdG9wDQog
KiBtZW51Lg0KICoNCiAqIFxwYXJhbSBpbml0X3N5c190ZXh0IEluZGljYXRlcyB3aGV0aGVyIHRv
IGluaXRpYWxpemUgdGhlIGxvY2FsIHN5c3RlbSB0ZXh0Lg0KICoNCiAqIFxyZXR1cm4gVFJVRSBv
biBzdWNjZXNzLCBvdGhlcndpc2UgRkFMU0UuDQogKg0KICogXHNhIFJlaW5pdERlc2t0b3ANCiAq
Lw0KQk9PTCBHVUlBUEkgUmVpbml0RGVza3RvcEV4IChCT09MIGluaXRfc3lzX3RleHQpOw0KDQov
KioNCiAqIFxkZWYgUmVpbml0RGVza3RvcCgpDQogKiBcYnJpZWYgUmUtaW5pdGlhbGl6ZXMgdGhl
IGRlc2t0b3AgaW5jbHVkaW5nIHRoZSBsb2NhbCBzeXN0ZW0gdGV4dC4NCiAqDQogKiBccmV0dXJu
IFRSVUUgb24gc3VjY2Vzcywgb3RoZXJ3aXNlIEZBTFNFLg0KICoNCiAqIFxub3RlIFRoaXMgZnVu
Y3Rpb24gZGVmaW5lZCBhcyBhIG1hY3JvIGNhbGxpbmcgXGEgUmVpbml0RGVza3RvcEV4IHdpdGgN
CiAqIFxhIGluaXRfc3lzX3RleHQgc2V0IHRvIFRSVUUuDQogKg0KICogXHNhIFJlaW5pdERlc2t0
b3BFeA0KICovDQojZGVmaW5lIFJlaW5pdERlc2t0b3AoKSAgICBSZWluaXREZXNrdG9wRXggKFRS
VUUpDQoNCi8qDQogKiBXZSByZW1vdmUgdGhlIFN1c3BlbmRHVUkgYW5kIFJlc3VtZUdVSSBmdW5j
dGlvbnMuIA0KICogRG9uJ3QgdXNlIHRoZXNlIHR3byBmdW5jdGlvcyBhbnkgbW9yZS4NCiAqIHZv
aWQgR1VJQVBJIFN1c3BlbmRHVUkgKHZvaWQpOw0KICogQk9PTCBHVUlBUEkgUmVzdW1lR1VJICh2
b2lkKTsgDQogKi8NCg0KLyoqDQogKiBcZm4gdm9pZCBHVUlBUEkgRXhpdEdVSVNhZmVseSAoaW50
IGV4aXRjb2RlKQ0KICogXGJyaWVmIEV4aXRzIHlvdXIgTWluaUdVSSBhcHBsaWNhdGlvbiBzYWZl
bHkuDQogKg0KICogQ2FsbGluZyB0aGlzIGZ1bmN0aW9uIHdpbGwgdGVybWluYXRlIHlvdXIgTWlu
aUdVSSBhcHBsaWNhdGlvbi4gVGhpcw0KICogZnVuY3Rpb24gd2lsbCByZXN0b3JlIGNvbnNvbGUg
c3RhdHVzIGFuZCBjYWxsIFxhIGV4aXQoKSBmdW5jdGlvbiBhbmQgDQogKiBwYXNzIFxhIGV4aXRj
b2RlIHRvIGl0Lg0KICoNCiAqIFxwYXJhbSBleGl0Y29kZSBUaGUgZXhpdCBzdGF0dXMgd2lsbCBi
ZSBwYXNzZWQgdG8gZXhpdCgzKSBmdW5jdGlvbi4NCiAqIFxyZXR1cm4gVGhpcyBmdW5jdGlvbiBk
b2VzIG5vdCByZXR1cm4uDQogKg0KICogXHNhIGV4aXQoMykNCiAqLw0Kdm9pZCBHVUlBUEkgRXhp
dEdVSVNhZmVseSAoaW50IGV4aXRjb2RlKTsNCg0KLyoqDQogKiBcZm4gaW50IE1pbmlHVUlNYWlu
IChpbnQgYXJncywgY29uc3QgY2hhciogYXJnW10pDQogKiBcYnJpZWYgVGhlIG1haW4gZW50cnkg
b2YgYWxsIE1pbmlHVUkgYXBwbGljYXRpb25zLg0KICoNCiAqIFRoaXMgZnVuY3Rpb24gc2hvdWxk
IGJlIGRlZmluZWQgYnkgeW91ciBhcHBsaWNhdGlvbi4gTWluaUdVSSBkZWZpbmVzIFxhIG1haW4o
KQ0KICogZnVuY3Rpb24gaW4gbGlibWluaWd1aSBsaWJyYXJ5IGZvciB5b3VyIGFwcGxpY2F0aW9u
LCBhbmQgY2FsbCBcYSBNaW5pR1VJTWFpbigpIA0KICogaW4gdGhpcyBcYSBtYWluKCkgZnVuY3Rp
b24uIFRoZSBcYSBtYWluKCkgZGVmaW5lZCBieSBNaW5pR1VJIGlzIHJlc3BvbnNpYmxlIG9mIA0K
ICogaW5pdGlhbGl6aW5nIGFuZCBleGl0aW5nIE1pbmlHVUksIGFuZCByZXN0b3JpbmcgdGV4dCBt
b2RlIG9mIGNvbnNvbGUuIA0KICoNCiAqIFxwYXJhbSBhcmdzIFRoZSBudW1iZXIgb2YgYXJndW1l
bnRzIHBhc3NlZCB0byBcYSBtYWluKCkgYnkgb3BlcmF0aW5nIHN5c3RlbS4NCiAqIFxwYXJhbSBh
cmcgVGhlIGFyZ3VtZW50cyBwYXNzZWQgdG8gXGEgbWFpbigpIGJ5IG9wZXJhdGluZyBzeXN0ZW0u
DQogKiBccmV0dXJuIFRoZSBleGl0IHN0YXR1cyB3aWxsIGJlIHJldHVyZWQgdG8gdGhlIHBhcmVu
dC4NCiAqDQogKi8NCmludCBNaW5pR1VJTWFpbiAoaW50IGFyZ3MsIGNvbnN0IGNoYXIqIGFyZ1td
KTsNCg0KLyoNCiAqIE5PVEU6IFRoZSBmb2xsb3dpbmcgdHdvIGZ1bmN0aW9ucyBpcyBvbmx5IHZh
bGlkIGZvciBNaW5pR1VJLVRocmVhZHMNCiAqIHNpbmNlIHZlcnNpb24gMS4wLjAxLg0KICovDQoj
aWZuZGVmIF9MSVRFX1ZFUlNJT04NCkJPT0wgR1VJQVBJIFByZUluaXRHVUkgKGludCBhcmdzLCBj
b25zdCBjaGFyKiBhcmdbXSwgaW50KiByZXRwKTsNCmludCBHVUlBUEkgUG9zdFRlcm1pbmF0ZUdV
SSAoaW50IGFyZ3MsIGNvbnN0IGNoYXIqIGFyZ1tdLCBpbnQgcmNCeUdVSSk7IA0KI2VuZGlmIC8q
IExJVEVfVkVSU0lPTiAqLw0KDQojZGVmaW5lIElETV9EVElfRklSU1QgICAoMzAwKQ0KDQovKg0K
ICogTk9URTogVGhlIGZvbGxvd2luZyB0d28gZnVuY3Rpb25zIGlzIG9ubHkgdmFsaWQgZm9yIE1p
bmlHVUktVGhyZWFkcw0KICogc2luY2UgdmVyc2lvbiAxLjAuMDEuDQogKi8NCiNpZm5kZWYgX0xJ
VEVfVkVSU0lPTg0Kdm9pZCBHVUlBUEkgQ3VzdG9taXplRGVza3RvcE1lbnUgKEhNRU5VIGhEZXNr
dG9wTWVudSwgaW50IGlQb3MpOw0KaW50IEdVSUFQSSBDdXN0b21EZXNrdG9wQ29tbWFuZCAoaW50
IGlkKTsNCiNlbmRpZg0KDQogICAgLyoqIEB9IGVuZCBvZiBpbml0X2ZucyAqLw0KDQogICAgLyoq
DQogICAgICogXGRlZmdyb3VwIGFib3V0X2RsZyBBYm91dCBNaW5pR1VJIGRpYWxvZw0KICAgICAq
IEB7DQogICAgICovDQojaWZkZWYgX01JU0NfQUJPVVRETEcNCiNpZm5kZWYgX0xJVEVfVkVSU0lP
Tg0KICB2b2lkIEdVSUFQSSBPcGVuQWJvdXREaWFsb2cgKHZvaWQpOw0KI2Vsc2UNCg0KLyoqDQog
KiBcZm4gSFdORCBHVUlBUEkgT3BlbkFib3V0RGlhbG9nIChIV05EIGhIb3N0aW5nKQ0KICogXGJy
aWVmIE9wZW5zIG9yIGFjdGl2ZXMgdGhlICdBYm91dCBNaW5pR1VJJyBkaWFsb2cuDQogKg0KICog
Q2FsbGluZyB0aGlzIGZ1bmN0aW9uIHdpbGwgY3JlYXRlIGEgbWFpbiB3aW5kb3cgZGlzcGxheWlu
ZyANCiAqIGNvcHlyaWdodCBhbmQgbGljZW5zZSBpbmZvcm1hdGlvbiBvZiBNaW5pR1VJLiBXaGVu
IHRoZSBhYm91dCBkaWFsb2cgDQogKiBpcyBkaXNwbGF5aW5nLCBjYWxsaW5nIHRoaXMgZnVuY3Rp
b24gYWdhaW4gd2lsbCBicmluZyB0aGUgZGlhbG9nIHRvIGJlIA0KICogdGhlIHRvcG1vc3QgbWFp
biB3aW5kb3csIG5vdCBjcmVhdGUgYSBuZXcgb25lLg0KICoNCiAqIFxwYXJhbSBoSG9zdGluZyBU
aGUgaG9zdGluZyBtYWluIHdpbmRvdyBvZiB0aGUgYWJvdXQgZGlhbG9nLg0KICogXHJldHVybiBU
aGUgaGFuZGxlIHRvIHRoZSBhYm91dCBkaWFsb2cgYm94Lg0KICoNCiAqIFxub3RlIFRoaXMgZnVu
Y3Rpb24gaXMgYXZhaWxhYmxlIGZvciBNaW5pR1VJLUxpdGUgYW5kIHdoZW4gX01JU0NfQUJPVVRE
TEcgZGVmaW5lZC4NCiAqIEZvciBNaW5pR1VJLVRocmVhZHMsIHlvdSBzaG91bGQgY2FsbCAndm9p
ZCBHVUlBUEkgT3BlbkFib3V0RGlhbG9nICh2b2lkKScgZnVuY3Rpb24NCiAqIGluc3RlYWQuDQog
Ki8NCiAgSFdORCBHVUlBUEkgT3BlbkFib3V0RGlhbG9nIChIV05EIGhIb3N0aW5nKTsNCiNlbmRp
ZiAvKiBfTElURV9WRVJTSU9OICovDQojZW5kaWYgLyogX01JU0NfQUJPVVRETEcgKi8NCg0KICAg
IC8qKiBAfSBlbmQgb2YgYWJvdXRfZGxnICovDQoNCiAgICAvKioNCiAgICAgKiBcZGVmZ3JvdXAg
ZXRjX2ZucyBDb25maWd1cmF0aW9uIGZpbGUgb3BlcmF0aW9ucw0KICAgICAqDQogICAgICogVGhl
IGNvbmZpZ3VyYXRpb24gZmlsZSB1c2VkIGJ5IE1pbmlHVUkgaGF2ZSBhIHNpbWlsaWFyIGZvcm1h
dCBhcyBNJCBXaW5kb3dzIElOSSBmaWxlLA0KICAgICAqIGkuZS4gdGhlIGZpbGUgY29uc2lzdHMg
b2Ygc2VjdGlvbnMsIGFuZCB0aGUgc2VjdGlvbiBjb25zaXN0cyBvZiBrZXktdmFsdWUgcGFpcnMs
IGxpa2UgdGhpczoNCiAgICAgKg0KICAgICAqIFxjb2RlDQogICAgICogW3N5c3RlbV0NCiAgICAg
KiAjIEdBTCBlbmdpbmUNCiAgICAgKiBnYWxfZW5naW5lPWZiY29uDQogICAgICoNCiAgICAgKiAj
IElBTCBlbmdpbmUNCiAgICAgKiBpYWxfZW5naW5lPWNvbnNvbGUNCiAgICAgKg0KICAgICAqIG1k
ZXY9L2Rldi9tb3VzZQ0KICAgICAqIG10eXBlPVBTMg0KICAgICAqIA0KICAgICAqIFtmYmNvbl0N
CiAgICAgKiBkZWZhdWx0bW9kZT0xMDI0eDc2OC0xNmJwcA0KICAgICAqIA0KICAgICAqIFtxdmZi
XQ0KICAgICAqIGRlZmF1bHRtb2RlPTY0MHg0ODAtMTZicHANCiAgICAgKiBkaXNwbGF5PTANCiAg
ICAgKiBcZW5kY29kZQ0KICAgICAqDQogICAgICogQXNzdW1lIHRoYXQgdGhlIGNvbmZpZ3VyYXRp
b24gZmlsZSBuYW1lZCBcYSBteS5jZmcsIGlmIHlvdSB3YW50IGdldCB0aGUgdmFsdWUgb2YgXGEg
bWRldg0KICAgICAqIGluIFxhIHN5c3RlbSBzZWN0aW9uLCB5b3UgY2FuIGNhbGwgXGEgR2V0VmFs
dWVGcm9tRXRjRmlsZSBpbiB0aGUgZm9sbG93aW5nIHdheToNCiAgICAgKg0KICAgICAqIFxjb2Rl
DQogICAgICogY2hhciBidWZmZXIgWzUxXTsNCiAgICAgKg0KICAgICAqIEdldFZhbHVlRnJvbUV0
Y0ZpbGUgKCJteS5jZmciLCAic3lzdGVtIiwgIm1kZXYiLCBidWZmZXIsIDUxKTsNCiAgICAgKiBc
ZW5kY29kZQ0KICAgICAqDQogICAgICogRXhhbXBsZToNCiAgICAgKg0KICAgICAqIFxpbmNsdWRl
IGNmZ2ZpbGUuYw0KICAgICAqDQogICAgICogQHsNCiAgICAgKi8NCg0KI2RlZmluZSBFVENfTUFY
TElORSAgICAgICAgICAgICAxMDI0DQojZGVmaW5lIEVUQ19GSUxFTk9URk9VTkQgICAgICAgIC0x
DQojZGVmaW5lIEVUQ19TRUNUSU9OTk9URk9VTkQgICAgIC0yDQojZGVmaW5lIEVUQ19LRVlOT1RG
T1VORCAgICAgICAgIC0zDQojZGVmaW5lIEVUQ19UTVBGSUxFRkFJTEVEICAgICAgIC00DQojZGVm
aW5lIEVUQ19GSUxFSU9GQUlMRUQgICAgICAgIC01DQojZGVmaW5lIEVUQ19JTlRDT05WICAgICAg
ICAgICAgIC02DQojZGVmaW5lIEVUQ19PSyAgICAgICAgICAgICAgICAgIDANCg0KLyoqDQogKiBc
dmFyIGNoYXIqIEVUQ0ZJTEVQQVRIDQogKiBcYnJpZWYgVGhlIHBhdGggbmFtZSBvZiBNaW5pR1VJ
IGNvbmZpZ3VyYXRpb24gZmlsZS4NCiAqDQogKiBCeSBkZWZhdWx0LCB0aGUgY29uZmlndXJhdGlv
biBmaWxlIG9mIE1pbmlHVUkgbXVzdCBiZSBpbnN0YWxsZWQgaW4gL2V0YywNCiAqIC91c3IvbG9j
YWwvZXRjIG9yIHlvdXIgaG9tZSBkaXJlY3RvcnkuIFdoZW4geW91IGluc3RhbGwgaXQgaW4geW91
cg0KICogaG9tZSBkaXJlY3RvcnksIHRoZSBuYW1lIHNob3VsZCBiZSAiLk1pbmlHVUkuY2ZnIi4N
CiAqDQogKiBNaW5pR1VJIHdpbGwgdHJ5IHRvIHVzZSBcYSB+Ly5NaW5pR1VJLmNmZywgdGhlbiBc
YSAvdXNyL2xvY2FsL2V0Yy9NaW5pR1VJLmNmZywgDQogKiBhbmQgXGEgL2V0Yy9NaW5pR1VJLmNm
ZyBsYXN0Lg0KICoNCiAqIElmIE1pbmlHVUkgY2FuIG5vdCBmaW5kIGFueSBcYSBNaW5pR1VJLmNm
ZyBmaWxlLCBvciBmaW5kIGEgYmFkIGZvcm1hdGVkIGNvbmZpZ3VyZQ0KICogZmlsZSwgdGhlIGlu
aXRpYWx6YXRpb24gb2YgTWluaUdVSSB3aWxsIGJlIGNhbmNlbGVkLg0KICovDQpleHRlcm4gY2hh
ciBFVENGSUxFUEFUSCBbXTsNCg0KLyoqDQogKiBcZm4gaW50IEdVSUFQSSBHZXRWYWx1ZUZyb21F
dGNGaWxlIChjb25zdCBjaGFyKiBwRXRjRmlsZSwgY29uc3QgY2hhciogcFNlY3Rpb24sIGNvbnN0
IGNoYXIqIHBLZXksIGNoYXIqIHBWYWx1ZSwgaW50IGlMZW4pDQogKiBcYnJpZWYgR2V0cyB2YWx1
ZSBmcm9tIGEgY29uZmlndXJhdGlvbiBmaWxlLg0KICoNCiAqIFRoaXMgZnVuY3Rpb24gZ2V0cyB0
aGUgdmFsdWUgb2YgdGhlIGtleSBcYSBwS2V5IGluIHRoZSBzZWN0aW9uIFxhIHBTZWN0aW9uIA0K
ICogb2YgdGhlIGNvbmZpZ3VyYXRpb24gZmlsZSBcYSBwRXRjRmlsZSwgYW5kIHNhdmVzIHRoZSB2
YWx1ZSB0byB0aGUgYnVmZmVyDQogKiBwb2ludGVkIHRvIGJ5IFxhIHBWYWx1ZS4gDQogKg0KICog
XHBhcmFtIHBFdGNGaWxlIFRoZSBwYXRoIG5hbWUgb2YgdGhlIGNvbmZpZ3VyYXRpb24gZmlsZS4N
CiAqIFxwYXJhbSBwU2VjdGlvbiBUaGUgc2VjdGlvbiBuYW1lIGluIHdoaWNoIHRoZSB2YWx1ZSBs
b2NhdGVkLg0KICogXHBhcmFtIHBLZXkgVGhlIGtleSBuYW1lIG9mIHRoZSB2YWx1ZS4NCiAqIFxw
YXJhbSBwVmFsdWUgVGhlIHZhbHVlIHdpbGwgYmUgc2F2ZWQgaW4gdGhpcyBidWZmZXIuDQogKiBc
cGFyYW0gaUxlbiBUaGUgbGVuZ3RoIGluIGJ5dGVzIG9mIHRoZSBidWZmZXIuDQogKiBccmV0dXJu
IEVUQ19PSyBvbiBzdWNjZXNzLCA8IDAgb24gZXJyb3IuDQogKg0KICogXHJldHZhbCBFVENfT0sg
ICAgICAgICAgICAgICBHZXRzIHZhbHVlIHN1Y2Nlc3NmdWxsbHkuDQogKiBccmV0dmFsIEVUQ19G
SUxFTk9URk9VTkQgICAgIENhbiBub3QgZmluZCB0aGUgc3BlY2lmaWVkIGNvbmZpZ3VyYXRpb24g
ZmlsZS4NCiAqIFxyZXR2YWwgRVRDX1NFQ1RJT05OT1RGT1VORCAgQ2FuIG5vdCBmaW5kIHRoZSBz
cGVjaWZpZWQgc2VjdGlvbiBpbiB0aGUgY29uZmlndXJhdGlvbiBmaWxlLg0KICogXHJldHZhbCBF
VENfS0VZTk9URk9VTkQgICAgICBDYW4gbm90IGZpbmQgdGhlIHNwZWNpZmllZCBrZXkgaW4gdGhl
IHNlY3Rpb24uDQogKiBccmV0dmFsIEVUQ19GSUxFSU9GQUlMRUQgICAgIEZpbGUgSS9PIG9wZXJh
dGlvbiBlcnJvciBvY2N1cnJlZC4NCiAqDQogKiBcbm90ZSBNaW5pR1VJIHVzZSBcYSBzdHJuY3B5
IHRvIGNvcHkgYWN0dWFsIHZhbHVlIHRvIFxhIHBWYWx1ZS4gVGh1cywgaWYgdGhlIGxlbmd0aCBv
ZiANCiAqIHRoZSBhY3R1YWwgdmFsdWUgaXMgbGFyZ2VyIHRoYW4gXGEgaUxlbiwgdGhlIHJlc3Vs
dCBjb3BpZWQgdG8gXGEgcFZhbHVlIA0KICogd2lsbCBcZW0gTk9UIGJlIG51bGwtdGVybWluYXRl
ZC4NCiAqDQogKiBcc2EgR2V0SW50VmFsdWVGcm9tRXRjRmlsZSwgU2V0VmFsdWVUb0V0Y0ZpbGUs
IHN0cm5jcHkoMykNCiAqLw0KaW50IEdVSUFQSSBHZXRWYWx1ZUZyb21FdGNGaWxlIChjb25zdCBj
aGFyKiBwRXRjRmlsZSwgY29uc3QgY2hhciogcFNlY3Rpb24sDQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgY2hhciogcEtleSwgY2hhciogcFZhbHVlLCBpbnQgaUxlbik7DQoN
Ci8qKg0KICogXGZuIGludCBHVUlBUEkgR2V0SW50VmFsdWVGcm9tRXRjRmlsZSAoY29uc3QgY2hh
ciogcEV0Y0ZpbGUsIGNvbnN0IGNoYXIqIHBTZWN0aW9uLCBjb25zdCBjaGFyKiBwS2V5LCBpbnQq
IHZhbHVlKQ0KICogXGJyaWVmIEdldHMgaW50ZWdlciB2YWx1ZSBmcm9tIGEgY29uZmlndXJhdGlv
biBmaWxlLg0KICoNCiAqIFRoaXMgZnVuY3Rpb24gZ2V0cyB0aGUgaW50ZWdlciB2YWx1ZSBvZiB0
aGUga2V5IFxhIHBLZXkgaW4gdGhlIHNlY3Rpb24gXGEgcFNlY3Rpb24gDQogKiBvZiB0aGUgY29u
ZmlndXJhdGlvbiBmaWxlIFxhIHBFdGNGaWxlLCBhbmQgcmV0dXJucyB0aGUgaW50ZWdlciB2YWx1
ZSB0aHJvdWdoIHRoZSBidWZmZXINCiAqIHBvaW50ZWQgdG8gYnkgXGEgdmFsdWUuIA0KICoNCiAq
IFxwYXJhbSBwRXRjRmlsZSBUaGUgcGF0aCBuYW1lIG9mIHRoZSBjb25maWd1cmF0aW9uIGZpbGUu
DQogKiBccGFyYW0gcFNlY3Rpb24gVGhlIHNlY3Rpb24gbmFtZSBpbiB3aGljaCB0aGUgdmFsdWUg
bG9jYXRlZC4NCiAqIFxwYXJhbSBwS2V5IFRoZSBrZXkgbmFtZSBvZiB0aGUgdmFsdWUuDQogKiBc
cGFyYW0gdmFsdWUgVGhlIGludGVnZXIgdmFsdWUgd2lsbCBiZSBzYXZlZCBpbiB0aGlzIGJ1ZmZl
ci4NCiAqIFxyZXR1cm4gRVRDX09LIG9uIHN1Y2Nlc3MsIDwgMCBvbiBlcnJvci4NCiAqDQogKiBc
cmV0dmFsIEVUQ19PSyAgICAgICAgICAgICAgIEdldHMgdmFsdWUgc3VjY2Vzc2Z1bGxseS4NCiAq
IFxyZXR2YWwgRVRDX0ZJTEVOT1RGT1VORCAgICAgQ2FuIG5vdCBmaW5kIHRoZSBzcGVjaWZpZWQg
Y29uZmlndXJhdGlvbiBmaWxlLg0KICogXHJldHZhbCBFVENfU0VDVElPTk5PVEZPVU5EICBDYW4g
bm90IGZpbmQgdGhlIHNwZWNpZmllZCBzZWN0aW9uIGluIHRoZSBjb25maWd1cmF0aW9uIGZpbGUu
DQogKiBccmV0dmFsIEVUQ19LRVlOT1RGT1VORCAgICAgIENhbiBub3QgZmluZCB0aGUgc3BlY2lm
aWVkIGtleSBpbiB0aGUgc2VjdGlvbi4NCiAqIFxyZXR2YWwgRVRDX0ZJTEVJT0ZBSUxFRCAgICAg
RmlsZSBJL08gb3BlcmF0aW9uIGVycm9yIG9jY3VycmVkLg0KICogXHJldHZhbCBFVENfSU5UQ09O
ViAgICAgICAgICBDYW4gbm90IGNvbnZlcnQgdGhlIHZhbHVlIHN0cmluZyB0byBhbiBpbnRlZ2Vy
Lg0KICoNCiAqIFxub3RlIE1pbmlHVUkgdXNlcyBcYSBzdHJ0b2wgdG8gY29udmVydCB0aGUgc3Ry
aW5nIHZhbHVlIHRvIGFuIGludGVnZXIsIGFuZCBwYXNzIHRoZSBiYXNlIGFzIDAuDQogKiBUaHVz
LCB0aGUgdmFsaWQgc3RyaW5nIHZhbHVlIGNhbiBiZSBjb252ZXJ0ZWQgdG8gaW50ZWdlciBzaG91
bGQgYmUgaW4gdGhlIGZvbGxvd2luZyBmb3JtczoNCiAqDQogKiAgLSBbK3wtXTB4WzAtOXxBLUZd
KlxuDQogKiAgICBXaWxsIGJlIHJlYWQgaW4gYmFzZSAxNi4NCiAqICAtIFsrfC1dMFswLTddKlxu
DQogKiAgICBXaWxsIGJlIHJlYWQgaW4gYmFzZSA4Lg0KICogIC0gWyt8LV1bMS05XVswLTldKlxu
DQogKiAgICBXaWxsIGJlIHJlYWQgaW4gYmFzZSAxMC4NCiAqDQogKiBcc2EgR2V0VmFsdWVGcm9t
RXRjRmlsZSwgU2V0VmFsdWVUb0V0Y0ZpbGUsIHN0cnRvbCgzKQ0KICovDQppbnQgR1VJQVBJIEdl
dEludFZhbHVlRnJvbUV0Y0ZpbGUgKGNvbnN0IGNoYXIqIHBFdGNGaWxlLCBjb25zdCBjaGFyKiBw
U2VjdGlvbiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBwS2V5
LCBpbnQqIHZhbHVlKTsNCg0KLyoqDQogKiBcZm4gaW50IEdVSUFQSSBTZXRWYWx1ZVRvRXRjRmls
ZSAoY29uc3QgY2hhciogcEV0Y0ZpbGUsIGNvbnN0IGNoYXIqIHBTZWN0aW9uLCBjb25zdCBjaGFy
KiBwS2V5LCBjaGFyKiBwVmFsdWUpDQogKiBcYnJpZWYgU2V0cyBhIHZhbHVlIGluIGEgY29uZmln
dXJhdGlvbiBmaWxlLg0KICoNCiAqIFRoaXMgZnVuY3Rpb24gc3RlcyB0aGUgdmFsdWUgb2YgdGhl
IGtleSBcYSBwS2V5IGluIHRoZSBzZWN0aW9uIFxhIHBTZWN0aW9uDQogKiBvZiB0aGUgY29uZmln
dXJhdGlvbiBmaWxlIFxhIHBFdGNGaWxlIHRvIGJlIHRoZSBzdHJpbmcgcG9pbnRlZCB0byBieSBc
YSBwVmFsdWUuDQogKg0KICogXHBhcmFtIHBFdGNGaWxlIFRoZSBwYXRoIG5hbWUgb2YgdGhlIGNv
bmZpZ3VyYXRpb24gZmlsZS4NCiAqIFxwYXJhbSBwU2VjdGlvbiBUaGUgc2VjdGlvbiBuYW1lIGlu
IHdoaWNoIHRoZSB2YWx1ZSBsb2NhdGVkLg0KICogXHBhcmFtIHBLZXkgVGhlIGtleSBuYW1lIG9m
IHRoZSB2YWx1ZS4NCiAqIFxwYXJhbSB2YWx1ZSBUaGUgbnVsbC10ZXJtaW5hdGVkIHZhbHVlIHN0
cmluZy4NCiAqIFxyZXR1cm4gRVRDX09LIG9uIHN1Y2Nlc3MsIDwgMCBvbiBlcnJvci4NCiAqDQog
KiBccmV0dmFsIEVUQ19PSyAgICAgICAgICAgICAgIFNldHMgdmFsdWUgc3VjY2Vzc2Z1bGxseS4N
CiAqIFxyZXR2YWwgRVRDX0ZJTEVJT0ZBSUxFRCAgICAgRmlsZSBJL08gb3BlcmF0aW9uIGVycm9y
IG9jY3VycmVkLg0KICogXHJldHZhbCBFVENfVE1QRklMRUZBSUxFRCAgICBDYW4gbm90IGNyZWF0
ZSB0ZW1wb3JhcnkgZmlsZS4NCiAqDQogKiBcbm90ZSBJZiB0aGUgc3BlY2lmaWVkIGNvbmZpZ3Vy
YXRpb24gZmlsZSBkb2VzIG5vdCBleGlzdCwgTWluaUdVSSB3aWxsIHRyeSB0bw0KICogY3JlYXRl
IHRoaXMgZmlsZS4NCiAqDQogKiBcc2EgR2V0VmFsdWVGcm9tRXRjRmlsZSwgR2V0SW50VmFsdWVG
cm9tRXRjRmlsZQ0KICovDQppbnQgR1VJQVBJIFNldFZhbHVlVG9FdGNGaWxlIChjb25zdCBjaGFy
KiBwRXRjRmlsZSwgY29uc3QgY2hhciogcFNlY3Rpb24sDQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgY2hhciogcEtleSwgY2hhciogcFZhbHVlKTsNCg0KICAgIC8qKiBAfSBl
bmQgb2YgZXRjX2ZucyAqLw0KDQogICAgLyoqDQogICAgICogXGFkZHRvZ3JvdXAgbWlzY19mbnMg
TWlzY2VsbGFuZW91cyBmdW5jdGlvbnMNCiAgICAgKiBAew0KICAgICAqLw0KDQovKioNCiAqIFxm
biB2b2lkIEdVSUFQSSBQaW5nICh2b2lkKQ0KICogXGJyaWVmIE1ha2VzIGEgYmVlcCBzb3VuZC4N
CiAqIFxzYSBCZWVwDQogKi8NCnZvaWQgR1VJQVBJIFBpbmcgKHZvaWQpOw0KDQovKioNCiAqIFxk
ZWYgQmVlcA0KICogXGJyaWVmIEFsaWFzIG9mIFBpbmcuDQogKiBcc2EgUGluZw0KICovDQojZGVm
aW5lIEJlZXAgUGluZw0KDQovKioNCiAqIFxmbiB2b2lkIEdVSUFQSSBUb25lIChpbnQgZnJlcXVl
bmN5X2h6LCBpbnQgZHVyYXRpb25fbXMpDQogKiBcYnJpZWYgTWFrZXMgYSB0b25lLg0KICoNCiAq
IFRoaXMgZnVuY3Rpb24gd2lsbCByZXR1cm4gYWZ0ZXIgdGhlIHRvbmUuIFRodXMsIHlvdXIgcHJv
Z3JhbQ0KICogd2lsbCBiZSBibG9ja2VkIHdoZW4gdGhlIHRvbmUgaXMgYmVpbmcgcGxheWVkLg0K
ICoNCiAqIFxwYXJhbSBmcmVxdWVuY3lfaHogVGhlIGZyZXF1ZW5jeSBvZiB0aGUgdG9uZSBpbiBo
ZXJ0ei4NCiAqIFxwYXJhbSBkdXJhdGlvbl9tcyBUaGUgZHVyYXRpb24gb2YgdGhlIHRvbmUgaW4g
bWlsbGlzZWNvbmQuDQogKg0KICogXGJ1ZyBXaGVuIE1pbmlHVUkgcnVucyBvbiBYIFdpbmRvdywg
dGhlIHRvbmUgY2FuIG5vdCBiZSBwbGF5ZWQgY29ycmVjdGx5Lg0KICoNCiAqIFxzYSBQaW5nDQog
Ki8NCnZvaWQgR1VJQVBJIFRvbmUgKGludCBmcmVxdWVuY3lfaHosIGludCBkdXJhdGlvbl9tcyk7
DQoNCi8qKg0KICogXGZuIHZvaWQqIEdVSUFQSSBHZXRPcmlnaW5hbFRlcm1JTyAodm9pZCkNCiAq
IFxicmllZiBHZXRzIFxhIHRlcm1pb3Mgc3RydWN0dXJlIG9mIHRoZSBvcmlnaW5hbCB0ZXJtaW5h
bCBiZWZvcmUgaW5pdGlhbGl6aW5nIE1pbmlHVUkuDQogKg0KICogXHJldHVybiBUaGUgcG9pbnRl
ciB0byB0aGUgb3JpZ2luYWwgXGEgdGVybWlvcyBzdHJ1Y3R1cmUuDQogKi8NCnZvaWQqIEdVSUFQ
SSBHZXRPcmlnaW5hbFRlcm1JTyAodm9pZCk7DQoNCi8qKg0KICogXGZuIHZvaWQgR1VJQVBJIERy
YXczRFVwRnJhbWUgKEhEQyBoREMsIGludCBsLCBpbnQgdCwgaW50IHIsIGludCBiLCBnYWxfcGl4
ZWwgZmlsbGMpDQogKiBcYnJpZWYgRHJhd3MgYSB0aGljayAzRCB1cCBmcmFtZS4NCiAqDQogKiBU
aGlzIGZ1bmN0aW9uIGRyYXdzIGEgdGhpY2sgM0QgdXAgZnJhbWUgKHRoZSBib3JkZXIgaXMgMi1w
aXhlbCB3aWRlKSwgDQogKiBhbmQgZmlsbHMgdGhlIGZyYW1lIGlmIGEgdmFsaWQgZmlsbGluZyBw
aXhlbCBpcyBzcGVjaWZpZWQuDQogKg0KICogXHBhcmFtIGhEQyBUaGUgZGV2aWNlIGNvbnRleHQu
DQogKiBccGFyYW0gbCBUaGUgeC1jb29yZGluYXRlIG9mIHVwcGVyLWxlZnQgY29ybmVyIG9mIHRo
ZSBmcmFtZS4NCiAqIFxwYXJhbSB0IFRoZSB5LWNvb3JkaW5hdGUgb2YgdXBwZXItbGVmdCBjb3Ju
ZXIgb2YgdGhlIGZyYW1lLg0KICogXHBhcmFtIHIgVGhlIHgtY29vcmRpbmF0ZSBvZiBsb3dlci1y
aWdodCBjb3JuZXIgb2YgdGhlIGZyYW1lLg0KICogXHBhcmFtIGIgVGhlIHktY29vcmRpbmF0ZSBv
ZiBsb3dlci1yaWdodCBjb3JuZXIgb2YgdGhlIGZyYW1lLg0KICogXHBhcmFtIGZpbGxjIFRoZSBm
aWxsaW5nIGNvbG9yLg0KICoNCiAqIFxub3RlIElmIFxhIGZpbGxjIGlzIHplcm8sIHRoaXMgZnVu
Y3Rpb24gd2lsbCBub3QgZmlsbCB0aGUgZnJhbWUuDQogKg0KICogXHNhIERyYXczRERvd25GcmFt
ZSwgRHJhdzNEVXBUaGluRnJhbWUNCiAqLw0Kdm9pZCBHVUlBUEkgRHJhdzNEVXBGcmFtZSAoSERD
IGhEQywgaW50IGwsIGludCB0LCBpbnQgciwgaW50IGIsIGdhbF9waXhlbCBmaWxsYyk7DQoNCi8q
Kg0KICogXGZuIHZvaWQgR1VJQVBJIERyYXczRERvd25GcmFtZSAoSERDIGhEQywgaW50IGwsIGlu
dCB0LCBpbnQgciwgaW50IGIsIGdhbF9waXhlbCBmaWxsYykNCiAqIFxicmllZiBEcmF3cyBhIHRo
aWNrIDNEIGRvd24gZnJhbWUuDQogKg0KICogVGhpcyBmdW5jdGlvbiBkcmF3cyBhIHRoaWNrIDNE
IGRvd24gZnJhbWUgKHRoZSBib3JkZXIgaXMgMi1waXhlbCB3aWRlKSwgDQogKiBhbmQgZmlsbHMg
dGhlIGZyYW1lIGlmIGEgdmFsaWQgZmlsbGluZyBwaXhlbCBpcyBzcGVjaWZpZWQuDQogKg0KICog
XHBhcmFtIGhEQyBUaGUgZGV2aWNlIGNvbnRleHQuDQogKiBccGFyYW0gbCBUaGUgeC1jb29yZGlu
YXRlIG9mIHVwcGVyLWxlZnQgY29ybmVyIG9mIHRoZSBmcmFtZS4NCiAqIFxwYXJhbSB0IFRoZSB5
LWNvb3JkaW5hdGUgb2YgdXBwZXItbGVmdCBjb3JuZXIgb2YgdGhlIGZyYW1lLg0KICogXHBhcmFt
IHIgVGhlIHgtY29vcmRpbmF0ZSBvZiBsb3dlci1yaWdodCBjb3JuZXIgb2YgdGhlIGZyYW1lLg0K
ICogXHBhcmFtIGIgVGhlIHktY29vcmRpbmF0ZSBvZiBsb3dlci1yaWdodCBjb3JuZXIgb2YgdGhl
IGZyYW1lLg0KICogXHBhcmFtIGZpbGxjIFRoZSBmaWxsaW5nIGNvbG9yLg0KICoNCiAqIFxub3Rl
IElmIFxhIGZpbGxjIGlzIHplcm8sIHRoaXMgZnVuY3Rpb24gd2lsbCBub3QgZmlsbCB0aGUgZnJh
bWUuDQogKg0KICogXHNhIERyYXczRFVwRnJhbWUsIERyYXczRERvd25UaGluRnJhbWUNCiAqLw0K
dm9pZCBHVUlBUEkgRHJhdzNERG93bkZyYW1lIChIREMgaERDLCBpbnQgbCwgaW50IHQsIGludCBy
LCBpbnQgYiwgZ2FsX3BpeGVsIGZpbGxjKTsNCg0KLyoqDQogKiBcZGVmIERyYXczRFVwVGhpY2tG
cmFtZQ0KICogXGJyaWVmIEFsaWFzIG9mIERyYXczRFVwRnJhbWUNCiAqLw0KI2RlZmluZSBEcmF3
M0RVcFRoaWNrRnJhbWUgICAgICBEcmF3M0RVcEZyYW1lDQoNCi8qKg0KICogXGRlZiBEcmF3M0RE
b3duVGhpY2tGcmFtZQ0KICogXGJyaWVmIEFsaWFzIG9mIERyYXczRERvd25GcmFtZQ0KICovDQoj
ZGVmaW5lIERyYXczRERvd25UaGlja0ZyYW1lICAgIERyYXczRERvd25GcmFtZQ0KDQovKioNCiAq
IFxmbiB2b2lkIEdVSUFQSSBEcmF3M0RVcFRoaW5GcmFtZSAoSERDIGhEQywgaW50IGwsIGludCB0
LCBpbnQgciwgaW50IGIsIGdhbF9waXhlbCBmaWxsYykNCiAqIFxicmllZiBEcmF3cyBhIHRoaW4g
M0QgdXAgZnJhbWUuDQogKg0KICogVGhpcyBmdW5jdGlvbiBkcmF3cyBhIHRoaW4gM0QgdXAgZnJh
bWUgKHRoZSBib3JkZXIgaXMgMS1waXhlbCB3aWRlKSwgDQogKiBhbmQgZmlsbHMgdGhlIGZyYW1l
IGlmIGEgdmFsaWQgZmlsbGluZyBwaXhlbCBpcyBzcGVjaWZpZWQuDQogKg0KICogXHBhcmFtIGhE
QyBUaGUgZGV2aWNlIGNvbnRleHQuDQogKiBccGFyYW0gbCBUaGUgeC1jb29yZGluYXRlIG9mIHVw
cGVyLWxlZnQgY29ybmVyIG9mIHRoZSBmcmFtZS4NCiAqIFxwYXJhbSB0IFRoZSB5LWNvb3JkaW5h
dGUgb2YgdXBwZXItbGVmdCBjb3JuZXIgb2YgdGhlIGZyYW1lLg0KICogXHBhcmFtIHIgVGhlIHgt
Y29vcmRpbmF0ZSBvZiBsb3dlci1yaWdodCBjb3JuZXIgb2YgdGhlIGZyYW1lLg0KICogXHBhcmFt
IGIgVGhlIHktY29vcmRpbmF0ZSBvZiBsb3dlci1yaWdodCBjb3JuZXIgb2YgdGhlIGZyYW1lLg0K
ICogXHBhcmFtIGZpbGxjIFRoZSBmaWxsaW5nIGNvbG9yLg0KICoNCiAqIFxub3RlIElmIFxhIGZp
bGxjIGlzIHplcm8sIHRoaXMgZnVuY3Rpb24gd2lsbCBub3QgZmlsbCB0aGUgZnJhbWUuDQogKg0K
ICogXHNhIERyYXczRERvd25UaGluRnJhbWUsIERyYXczRFVwRnJhbWUNCiAqLw0Kdm9pZCBHVUlB
UEkgRHJhdzNEVXBUaGluRnJhbWUgKEhEQyBoREMsIA0KICAgICAgICAgICAgICAgIGludCBsLCBp
bnQgdCwgaW50IHIsIGludCBiLCBnYWxfcGl4ZWwgZmlsbGMpOw0KDQovKioNCiAqIFxmbiB2b2lk
IEdVSUFQSSBEcmF3M0REb3duVGhpbkZyYW1lIChIREMgaERDLCBpbnQgbCwgaW50IHQsIGludCBy
LCBpbnQgYiwgZ2FsX3BpeGVsIGZpbGxjKQ0KICogXGJyaWVmIERyYXdzIGEgdGhpbiAzRCBkb3du
IGZyYW1lLg0KICoNCiAqIFRoaXMgZnVuY3Rpb24gZHJhd3MgYSB0aGluIDNEIGRvd24gZnJhbWUg
KHRoZSBib3JkZXIgaXMgMS1waXhlbCB3aWRlKSwgDQogKiBhbmQgZmlsbHMgdGhlIGZyYW1lIGlm
IGEgdmFsaWQgZmlsbGluZyBwaXhlbCBpcyBzcGVjaWZpZWQuDQogKg0KICogXHBhcmFtIGhEQyBU
aGUgZGV2aWNlIGNvbnRleHQuDQogKiBccGFyYW0gbCBUaGUgeC1jb29yZGluYXRlIG9mIHVwcGVy
LWxlZnQgY29ybmVyIG9mIHRoZSBmcmFtZS4NCiAqIFxwYXJhbSB0IFRoZSB5LWNvb3JkaW5hdGUg
b2YgdXBwZXItbGVmdCBjb3JuZXIgb2YgdGhlIGZyYW1lLg0KICogXHBhcmFtIHIgVGhlIHgtY29v
cmRpbmF0ZSBvZiBsb3dlci1yaWdodCBjb3JuZXIgb2YgdGhlIGZyYW1lLg0KICogXHBhcmFtIGIg
VGhlIHktY29vcmRpbmF0ZSBvZiBsb3dlci1yaWdodCBjb3JuZXIgb2YgdGhlIGZyYW1lLg0KICog
XHBhcmFtIGZpbGxjIFRoZSBmaWxsaW5nIGNvbG9yLg0KICoNCiAqIFxub3RlIElmIFxhIGZpbGxj
IGlzIHplcm8sIHRoaXMgZnVuY3Rpb24gd2lsbCBub3QgZmlsbCB0aGUgZnJhbWUuDQogKg0KICog
XHNhIERyYXczRFVwVGhpbkZyYW1lLCBEcmF3M0REb3duRnJhbWUNCiAqLw0Kdm9pZCBHVUlBUEkg
RHJhdzNERG93blRoaW5GcmFtZSAoSERDIGhEQywgDQogICAgICAgICAgICAgICAgaW50IGwsIGlu
dCB0LCBpbnQgciwgaW50IGIsIGdhbF9waXhlbCBmaWxsYyk7DQoNCi8qKg0KICogXGZuIHZvaWQg
R1VJQVBJIERyYXczREJvcmRlciAoSERDIGhkYywgaW50IGwsIGludCB0LCBpbnQgciwgaW50IGIp
DQogKiBcYnJpZWYgRHJhd3MgYSAzRCByZWN0YW5nbGUgYm9yZGVyLg0KICoNCiAqIFRoaXMgZnVu
Y3Rpb24gZHJhd3MgYSAzRCByZXRhbmdsZSBib3JkZXIgd2hpY2ggaXMgMi1waXhlbCB3aWRlLg0K
ICoNCiAqIFxwYXJhbSBoREMgVGhlIGRldmljZSBjb250ZXh0Lg0KICogXHBhcmFtIGwgVGhlIHgt
Y29vcmRpbmF0ZSBvZiB1cHBlci1sZWZ0IGNvcm5lciBvZiB0aGUgcmVjdGFuZ2xlLg0KICogXHBh
cmFtIHQgVGhlIHktY29vcmRpbmF0ZSBvZiB1cHBlci1sZWZ0IGNvcm5lciBvZiB0aGUgcmVjdGFu
Z2xlLg0KICogXHBhcmFtIHIgVGhlIHgtY29vcmRpbmF0ZSBvZiBsb3dlci1yaWdodCBjb3JuZXIg
b2YgdGhlIHJlY3RhbmdsZS4NCiAqIFxwYXJhbSBiIFRoZSB5LWNvb3JkaW5hdGUgb2YgbG93ZXIt
cmlnaHQgY29ybmVyIG9mIHRoZSByZWN0YW5nbGUuDQogKg0KICogXHNhIERyYXczRFVwVGhpbkZy
YW1lLCBEcmF3M0REb3duRnJhbWUNCiAqLw0Kdm9pZCBHVUlBUEkgRHJhdzNEQm9yZGVyIChIREMg
aGRjLCBpbnQgbCwgaW50IHQsIGludCByLCBpbnQgYik7DQoNCi8qKg0KICogXGZuIHZvaWQgR1VJ
QVBJIERpc2FibGVkVGV4dE91dCAoSERDIGhEQywgaW50IHgsIGludCB5LCBjb25zdCBjaGFyKiBz
elRleHQpDQogKiBcYnJpZWYgT3V0cHV0cyBkaXNhYmxlZCAoZ3JheWVkKSB0ZXh0Lg0KICoNCiAq
IFRoaXMgZnVuY3Rpb24gb3V0cHV0cyBhIGdyYXllZCB0ZXh0IGF0IHRoZSBzcGVjaWZpZWQgcG9z
aXRpb24uDQogKg0KICogXHBhcmFtIGhEQyBUaGUgZGV2aWNlIGNvbnRleHQuDQogKiBccGFyYW0g
eCBUaGUgeC1jb29yZGluYXRlIG9mIHN0YXJ0IHBvaW50Lg0KICogXHBhcmFtIHkgVGhlIHktY29v
cmRpbmF0ZSBvZiBzdGFydCBwb2ludC4NCiAqIFxwYXJhbSBzelRleHQgVGhlIG51bGwtdGVybWlu
YXRlZCB0ZXh0IHRvIGJlIG91dHB1dHRlZC4NCiAqDQogKiBcc2EgVGV4dE91dCwgRHJhd1RleHQN
CiAqLw0Kdm9pZCBHVUlBUEkgRGlzYWJsZWRUZXh0T3V0IChIREMgaERDLCBpbnQgeCwgaW50IHks
IGNvbnN0IGNoYXIqIHN6VGV4dCk7DQoNCiAgICAvKiogQH0gZW5kIG9mIG1pc2NfZm5zICovDQoN
CiAgICAvKioNCiAgICAgKiBcZGVmZ3JvdXAgZml4ZWRfc3RyIExlbmd0aC1GaXhlZCBzdHJpbmcg
b3BlcmF0aW9ucw0KICAgICAqDQogICAgICogTWluaUdVSSBtYWludGFpbnMgYSBwcml2YXRlIGhl
YXAgZm9yIGxlbmd0aC1maXhlZCBzdHJpbmdzLCBhbmQgYWxsb2NhdGVzDQogICAgICogbGVuZ3Ro
LWZpeGVkIHN0cmluZ3MgZnJvbSB0aGlzIGhlYXAgZm9yIHdpbmRvdyBjYXB0aW9uLCBtZW51IGl0
ZW0gdGV4dCwgDQogICAgICogYW5kIHNvIG9uLiBZb3UgY2FuIGFsc28gdXNlIHRoaXMgcHJpdmF0
ZSBoZWFwIHRvIGFsbG9jYXRlIGxlbmd0aC1maXhlZCBzdHJpbmdzLg0KICAgICAqDQogICAgICog
XGluY2x1ZGUgZml4c3RyLmMNCiAgICAgKg0KICAgICAqIEB7DQogICAgICovDQoNCi8qKg0KICog
XGZuIGNoYXIqIEdVSUFQSSBGaXhTdHJBbGxvYyAoaW50IGxlbikNCiAqIFxicmllZiBBbGxvY2F0
ZXMgYSBidWZmZXIgZm9yIGEgbGVuZ3RoLWZpeGVkIHN0cmluZy4NCiAqDQogKiBUaGlzIGZ1bmN0
aW9uIGFsbG9jYXRlcyBhIGJ1ZmZlciBmcm9tIHRoZSBsZW5ndGgtZml4ZWQgc3RyaW5nIGhlYXAN
CiAqIGZvciBhIHN0cmluZyB3aGljaCBpcyBcYSBsZW4gYnl0ZXMgbG9uZyAoZG9lcyBub3QgaW5j
bHVkZSANCiAqIHRoZSBudWxsIGNoYXJhY3RlciBvZiB0aGUgc3RyaW5nKS4gDQogKg0KICogXG5v
dGUgWW91IGNhbiBjaGFuZ2UgdGhlIGNvbnRlbnQgb2YgdGhlIHN0cmluZywgYnV0IGRvIG5vdCBj
aGFuZ2UgdGhlDQogKiBsZW5ndGggb2YgdGhpcyBzdHJpbmcgKHNob3J0ZXIgaXMgdmFsaWQpIHZp
YSBcYSBzdHJjYXQgZnVuY3Rpb24gb3IgDQogKiBvdGhlciBlcXVpdmFsZW50IGZ1bmN0aW9ucyBv
ciBvcGVyYXRpb25zLg0KICoNCiAqIFxwYXJhbSBsZW4gVGhlIGxlbmd0aCBvZiB0aGUgc3RyaW5n
Lg0KICogXHJldHVybiBUaGUgcG9pbnRlciB0byB0aGUgYnVmZmVyIG9uIHN1Y2Nlc3MsIG90aGVy
d2lzZSBOVUxMLg0KICoNCiAqIFxzYSBGcmVlRml4U3RyDQogKi8NCmNoYXIqIEdVSUFQSSBGaXhT
dHJBbGxvYyAoaW50IGxlbik7DQoNCi8qKg0KICogXGZuIHZvaWQgR1VJQVBJIEZyZWVGaXhTdHIg
KGNoYXIqIHN0cikNCiAqIFxicmllZiBGcmVlcyBhIGxlbmd0aC1maXhlZCBzdHJpbmcuDQogKg0K
ICogVGhpcyBmdW5jdGlvbiBmcmVlcyB0aGUgYnVmZmVyIHVzZWQgYnkgdGhlIGxlbmd0aC1maXhl
ZCBzdHJpbmcgXGEgc3RyLg0KICoNCiAqIFxwYXJhbSBzdHIgVGhlIGxlbmd0aC1maXhlZCBzdHJp
bmcuDQogKg0KICogXG5vdGUgRG8gbm90IHVzZSBcYSBmcmVlIHRvIGZyZWUgdGhlIGxlbmd0aC1m
aXhlZCBzdHJpbmcuDQogKg0KICogXHNhIEZpeFN0ckFsbG9jDQogKi8NCnZvaWQgR1VJQVBJIEZy
ZWVGaXhTdHIgKGNoYXIqIHN0cik7DQoNCiAgICAvKiogQH0gZW5kIG9mIGZpeGVkX3N0ciAqLw0K
DQogICAgLyoqDQogICAgICogXGRlZmdyb3VwIGN1cnNvcl9mbnMgQ3Vyc29yIG9wZXJhdGlvbnMN
CiAgICAgKiBAew0KICAgICAqLw0KDQojaWZuZGVmIF9DVVJTT1JfU1VQUE9SVA0Kc3RhdGljIGlu
bGluZSB2b2lkIGRvX25vdGhpbmcgKHZvaWQpIHsgfTsNCiNlbmRpZg0KDQojaWZkZWYgX0NVUlNP
Ul9TVVBQT1JUDQoNCi8qKg0KICogXGZuIEhDVVJTT1IgR1VJQVBJIExvYWRDdXJzb3JGcm9tRmls
ZSAoY29uc3QgY2hhciogZmlsZW5hbWUpDQogKiBcYnJpZWYgTG9hZHMgYSBjdXJzb3IgZnJvbSBh
IE0kIFdpbmRvd3MgY3Vyc29yIGZpbGUuDQogKg0KICogVGhpcyBmdW5jdGlvbiBsb2FkcyBhIGN1
cnNvciBmcm9tIE0kIFdpbmRvd3MgKi5jdXIgZmlsZSANCiAqIG5hbWVkIFxhIGZpbGVuYW1lIGFu
ZCByZXR1cm5zIHRoZSBoYW5kbGUgdG8gbG9hZGVkIGN1cnNvci4gDQogKiBUaGUgcmV0dXJuZWQg
aGFuZGxlIGNhbiBiZSB1c2VkIGJ5IFxhIFNldEN1cnNvciB0byBzZXQgbmV3IG1vdXNlIGN1cnNv
ci4NCiAqDQogKiBccGFyYW0gZmlsZW5hbWUgVGhlIHBhdGggbmFtZSBvZiB0aGUgY3Vyc29yIGZp
bGUuDQogKiBccmV0dXJuIEhhbmRsZSB0byB0aGUgY3Vyc29yLCB6ZXJvIG9uIGVycm9yLg0KICoN
CiAqIFxub3RlIE1pbmlHVUkgZG9lcyBub3Qgc3VwcG9ydCAyNTYtY29sb3Igb3IgYW5pbWF0aW9u
IGN1cnNvci4NCiAqDQogKiBcc2EgU2V0Q3Vyc29yDQogKi8NCiAgSENVUlNPUiBHVUlBUEkgTG9h
ZEN1cnNvckZyb21GaWxlIChjb25zdCBjaGFyKiBmaWxlbmFtZSk7DQoNCi8qKg0KICogXGZuIEhD
VVJTT1IgR1VJQVBJIENyZWF0ZUN1cnNvciAoaW50IHhob3RzcG90LCBpbnQgeWhvdHNwb3QsIGlu
dCB3LCBpbnQgaCwgY29uc3QgQllURSogcEFOREJpdHMsIGNvbnN0IEJZVEUqIHBYT1JCaXRzLCBp
bnQgY29sb3JudW0pDQogKiBcYnJpZWYgQ3JlYXRlcyBhIGN1cnNvciBmcm9tIG1lbW9yeSBkYXRh
Lg0KICoNCiAqIFRoaXMgZnVuY3Rpb24gY3JlYXRlcyBhIGN1cnNvciBmcm9tIG1lbW9yeSBkYXRh
IHJhdGhlciB0aGFuIGN1cnNvciBmaWxlLiANCiAqIFxhIHhob3RzcG90IGFuZCBcYSB5aG90c3Bv
dCBzcGVjaWZ5IHRoZSBob3Rwb3Qgb2YgdGhlIGN1cnNvciwgXGEgdyBhbmQgXGEgaCBhcmUgDQog
KiB0aGUgd2lkdGggYW5kIHRoZSBoZWlnaHQgb2YgdGhlIGN1cnNvciByZXNwZWN0aXZlbHkuIFxh
IHBBTkRCaXRzIGFuZCBcYSBwWE9SQml0cw0KICogYXJlIEFORCBiaXRtYXNrIGFuZCBYT1IgYml0
bWFzayBvZiB0aGUgY3Vyc29yLiANCiAqIE1pbmlHVUkgY3VycmVudGx5IHN1cHBvcnQgbW9uby1j
b2xvciBjdXJzb3IgYW5kIDE2LWNvbG9yIGN1cnNvciwgXGEgY29sb3JudW0gDQogKiBzcGVjaWZp
ZXMgdGhlIGN1cnNvcidzIGNvbG9yIGRlcHRoLiBGb3IgbW9uby1jb2xvciwgaXQgc2hvdWxkIGJl
IDEsIGFuZCBmb3INCiAqIDE2LWNvbG9yIGN1cnNvciwgaXQgc2hvdWxkIGJlIDQuDQogKg0KICog
XHBhcmFtIHhob3RzcG90IFRoZSB4LWNvb3JkaW5hdGUgb2YgdGhlIGhvdHNwb3QuDQogKiBccGFy
YW0geWhvdHNwb3QgVGhlIHktY29vcmRpbmF0ZSBvZiB0aGUgaG90c3BvdC4NCiAqIFxwYXJhbSB3
IFRoZSB3aWR0aCBvZiB0aGUgY3Vyc29yLg0KICogXHBhcmFtIGggVGhlIGhlaWdodCBvZiB0aGUg
Y3Vyc29yLg0KICogXHBhcmFtIHBBTkRCaXRzIFRoZSBwb2ludGVyIHRvIEFORCBiaXRzIG9mIHRo
ZSBjdXJzb3IuDQogKiBccGFyYW0gcFhPUkJpdHMgVGhlIHBvaW50ZXIgdG8gWE9SIGJpdHMgb2Yg
dGhlIGN1cnNvci4NCiAqIFxwYXJhbSBjb2xvcm51bSBUaGUgYml0LXBlci1waXhlbCBvZiBYT1Ig
Yml0cy4NCiAqIFxyZXR1cm4gSGFuZGxlIHRvIHRoZSBjdXJzb3IsIHplcm8gb24gZXJyb3IuDQog
Kg0KICogXG5vdGUgTWluaUdVSSBvbmx5IHN1cHBvcnQgMi1jb2xvciBvciAxNi1jb2xvciBjdXJz
b3IuDQogKi8NCiAgSENVUlNPUiBHVUlBUEkgQ3JlYXRlQ3Vyc29yIChpbnQgeGhvdHNwb3QsIGlu
dCB5aG90c3BvdCwgaW50IHcsIGludCBoLCANCiAgICAgICAgICAgICAgIGNvbnN0IEJZVEUqIHBB
TkRCaXRzLCBjb25zdCBCWVRFKiBwWE9SQml0cywgaW50IGNvbG9ybnVtKTsNCg0KLyoqDQogKiBc
Zm4gQk9PTCBHVUlBUEkgRGVzdHJveUN1cnNvciAoSENVUlNPUiBoY3NyKQ0KICogXGJyaWVmIERl
c3Ryb2llcyBhIGN1cnNvciBvYmplY3QuDQogKg0KICogVGhpcyBmdW5jdGlvbiBkZXN0cm95cyBh
IGN1cnNvciBvYmplY3Qgc3BlY2lmaWVkIGJ5IFxhIGhjc3IuDQogKg0KICogXHBhcmFtIGhjc3Ig
SGFuZGxlIHRvIHRoZSBjdXJzb3IuDQogKiBccmV0dXJuIFRSVUUgb24gc3VjY2Vzcywgb3RoZXJ3
aXNlIEZBTFNFLg0KICovDQogIEJPT0wgR1VJQVBJIERlc3Ryb3lDdXJzb3IgKEhDVVJTT1IgaGNz
cik7DQoNCi8qKg0KICogXGZuIEhDVVJTT1IgR1VJQVBJIEdldFN5c3RlbUN1cnNvciAoaW50IGNz
cmlkKQ0KICogXGJyaWVmIEdldHMgdGhlIGhhbmRsZSB0byBhIHN5c3RlbSBjdXJzb3IgYnkgaXRz
IGlkZW50aWZpZXIuDQogKg0KICogTWluaUdVSSBjcmVhdGVzIChNQVhfU1lTQ1VSU09SSU5ERVgg
KyAxKSBzeXN0ZW0gY3Vyc29ycyBmb3IgYXBwbGljYXRpb24uDQogKiBZb3UgY2FuIHVzZSBcYSBH
ZXRTeXN0ZW1DdXJzb3IgdG8gZ2V0IHRoZSBoYW5kbGUgdG8gdGhlc2Ugc3lzdGVtIGN1cnNvcnMu
DQogKiBUaGUgaWRlbnRpZmllciBjYW4gYmUgb25lIG9mIHRoZSBmb2xsb3dpbmc6DQogKiANCiAq
ICAtIElEQ19BUlJPV1xuDQogKiAgICBOb3JtYWwgYXJyb3cgY3Vyc29yLg0KICogIC0gSURDX0lC
RUFNXG4NCiAqICAgICdJJyBzaGFwZWQgYmVhbSBjdXJzb3IsIGluZGljYXRlIGFuIGlucHV0IGZp
ZWxkLg0KICogIC0gSURDX1BFTkNJTFxuDQogKiAgICBQZW5jaWwtc2hhcGUgY3Vyc29yLg0KICog
IC0gSURDX0NST1NTXG4NCiAqICAgIENyb3NzIGN1cnNvci4NCiAqICAtIElEQ19NT1ZFXG4NCiAq
ICAgIE1vdmluZyBjdXJzb3IuDQogKiAgLSBJRENfU0laRU5XU0Vcbg0KICogICAgU2l6aW5nIGN1
cnNvciwgYWxvbmcgbm9ydGgtd2VzdCBhbmQgc291dGgtZWFzdC4NCiAqICAtIElEQ19TSVpFTkVT
V1xuDQogKiAgICBTaXppbmcgY3Vyc29yLCBhbG9uZyBub3J0aC1lYXN0IGFuZCBzb3V0aC13ZXN0
Lg0KICogIC0gSURDX1NJWkVXRVxuDQogKiAgICBTaXppbmcgY3Vyc29yLCBhbG9uZyB3ZXN0IGFu
ZCBlYXN0Lg0KICogIC0gSURDX1NJWkVOU1xuDQogKiAgICBTaXppbmcgY3Vyc29yLCBhbG9uZyBu
b3J0aCBhbmQgc291dGguDQogKiAgLSBJRENfVVBBUlJPV1xuDQogKiAgICBVcCBhcnJvdyBjdXJz
b3IuDQogKiAgLSBJRENfTk9ORVxuDQogKiAgICBOb25lIGN1cnNvci4NCiAqICAtIElEQ19IRUxQ
XG4NCiAqICAgIEFycm93IHdpdGggcXVlc3Rpb24uDQogKiAgLSBJRENfQlVTWVxuDQogKiAgICBC
dXN5IGN1cnNvci4NCiAqICAtIElEQ19XQUlUXG4NCiAqICAgIFdhaXQgY3Vyc29yLg0KICogIC0g
SURDX1JBUlJPV1xuDQogKiAgICBSaWdodCBhcnJvdyBjdXJzb3IuDQogKiAgLSBJRENfQ09MT01O
XG4NCiAqICAgIEN1cnNvciBpbmRpY2F0ZXMgY29sdW1uLg0KICogIC0gSURDX1JPV1xuDQogKiAg
ICBDdXJzb3IgaW5kaWNhdGVzIHJvdy4NCiAqICAtIElEQ19EUkFHXG4NCiAqICAgIERyYWdpbmcg
Y3Vyc29yLg0KICogIC0gSURDX05PRFJPUFxuDQogKiAgICBObyBkcm9waW5nIGN1cnNvci4NCiAq
ICAtIElEQ19IQU5EX1BPSU5UXG4NCiAqICAgIEhhbmQgcG9pbnQgY3Vyc29yLg0KICogIC0gSURD
X0hBTkRfU0VMRUNUXG4NCiAqICAgIEhhbmQgc2VsZWN0aW9uIGN1cnNvci4NCiAqICAtIElEQ19T
UExJVF9IT1JaXG4NCiAqICAgIEhvcml6b250YWwgc3BsaXR0aW5nIGN1cnNvci4NCiAqICAtIElE
Q19TUExJVF9WRVJUXG4NCiAqICAgIFZlcnRpY2FsIHNwbGl0dGluZyBjdXJzb3IuDQogKg0KICog
XHBhcmFtIGNzcmlkIFRoZSBpZGVudGlmaWVyIG9mIHRoZSBzeXN0ZW0gY3Vyc29yLg0KICogXHJl
dHVybiBIYW5kbGUgdG8gdGhlIHN5c3RlbSBjdXJzb3IsIG90aGVyd2lzZSB6ZXJvLg0KICovDQog
IEhDVVJTT1IgR1VJQVBJIEdldFN5c3RlbUN1cnNvciAoaW50IGNzcmlkKTsNCg0KLyoqDQogKiBc
Zm4gSENVUlNPUiBHVUlBUEkgR2V0Q3VycmVudEN1cnNvciAodm9pZCkNCiAqIFxicmllZiBHZXRz
IHRoZSBoYW5kbGUgdG8gdGhlIGN1cnJlbnQgY3Vyc29yLg0KICoNCiAqIFRoaXMgZnVuY3Rpb24g
cmV0cml2ZXMgdGhlIGN1cnJlbnQgY3Vyc29yIGFuZCByZXR1cm5zIGl0cyBoYW5kbGUuDQogKg0K
ICogXHJldHVybiBIYW5kbGUgdG8gdGhlIGN1cnJlbnQgc3lzdGVtIGN1cnNvciwgemVybyBtZWFu
cyBubyBjdXJyZW50IGN1cnNvci4NCiAqLw0KICBIQ1VSU09SIEdVSUFQSSBHZXRDdXJyZW50Q3Vy
c29yICh2b2lkKTsNCiNlbHNlDQogICNkZWZpbmUgTG9hZEN1cnNvckZyb21GaWxlKGZpbGVuYW1l
KSAgICAoZG9fbm90aGluZygpLCAwKQ0KICAjZGVmaW5lIENyZWF0ZUN1cnNvcih4LCB5LCB3LCBo
LCBBTkRicywgWE9SYnMsIGNyKSAoZG9fbm90aGluZygpLCAwKQ0KICAjZGVmaW5lIERlc3Ryb3lD
dXJzb3IoaGNzcikgICAgICAgICAgICAgKGRvX25vdGhpbmcoKSwgMCkNCiAgI2RlZmluZSBHZXRT
eXN0ZW1DdXJzb3IoY3NyaWQpICAgICAgICAgIChkb19ub3RoaW5nKCksIDApDQogICNkZWZpbmUg
R2V0Q3VycmVudEN1cnNvcigpICAgICAgICAgICAgICAoZG9fbm90aGluZygpLCAwKQ0KI2VuZGlm
IC8qIF9DVVJTT1JfU1VQUE9SVCAqLw0KDQojZGVmaW5lIE1BWF9TWVNDVVJTT1JJTkRFWCAgICAy
Mg0KDQovKiBTeXN0ZW0gY3Vyc29yIGluZGV4LiAqLw0KI2RlZmluZSBJRENfQVJST1cgICAgICAg
MA0KI2RlZmluZSBJRENfSUJFQU0gICAgICAgMQ0KI2RlZmluZSBJRENfUEVOQ0lMICAgICAgMg0K
I2RlZmluZSBJRENfQ1JPU1MgICAgICAgMw0KI2RlZmluZSBJRENfTU9WRSAgICAgICAgNA0KI2Rl
ZmluZSBJRENfU0laRU5XU0UgICAgNQ0KI2RlZmluZSBJRENfU0laRU5FU1cgICAgNg0KI2RlZmlu
ZSBJRENfU0laRVdFICAgICAgNw0KI2RlZmluZSBJRENfU0laRU5TICAgICAgOA0KI2RlZmluZSBJ
RENfVVBBUlJPVyAgICAgOQ0KI2RlZmluZSBJRENfTk9ORSAgICAgICAgMTANCiNkZWZpbmUgSURD
X0hFTFAgICAgICAgIDExDQojZGVmaW5lIElEQ19CVVNZICAgICAgICAxMg0KI2RlZmluZSBJRENf
V0FJVCAgICAgICAgMTMNCiNkZWZpbmUgSURDX1JBUlJPVyAgICAgIDE0DQojZGVmaW5lIElEQ19D
T0xPTU4gICAgICAxNQ0KI2RlZmluZSBJRENfUk9XICAgICAgICAgMTYNCiNkZWZpbmUgSURDX0RS
QUcgICAgICAgIDE3DQojZGVmaW5lIElEQ19OT0RST1AgICAgICAxOA0KI2RlZmluZSBJRENfSEFO
RF9QT0lOVCAgMTkNCiNkZWZpbmUgSURDX0hBTkRfU0VMRUNUIDIwDQojZGVmaW5lIElEQ19TUExJ
VF9IT1JaICAyMQ0KI2RlZmluZSBJRENfU1BMSVRfVkVSVCAgMjINCg0KLyoqDQogKiBcZm4gdm9p
ZCBHVUlBUEkgQ2xpcEN1cnNvciAoY29uc3QgUkVDVCogcHJjKQ0KICogXGJyaWVmIENsaXBzIHRo
ZSBjdXJzb3IgcmFuZ2UuDQogKg0KICogVGhpcyBmdW5jdGlvbiBzZXRzIGN1cnNvcidzIGNsaXBw
aW5nIHJlY3RhbmdsZS4gXGEgcHJjIA0KICogaXMgdGhlIG5ldyBjbGlwcGluZyByZWN0YW5nbGUg
aW4gc2NyZWVuIGNvb3JkaW5hdGVzLiBJZiBcYSBwcmMgaXMgTlVMTCwgDQogKiBcYSBDbGlwQ3Vy
c29yIHdpbGwgZGlzYWJsZSBjdXJzb3IgY2xpcHBpbmcuDQogKg0KICogXHBhcmFtIHByYyBUaGUg
Y2xpcHBpbmcgcmVjdGFuZ2xlLg0KICogXHJldHVybiBOb25lLg0KICovDQp2b2lkIEdVSUFQSSBD
bGlwQ3Vyc29yIChjb25zdCBSRUNUKiBwcmMpOw0KDQovKioNCiAqIFxmbiB2b2lkIEdVSUFQSSBH
ZXRDbGlwQ3Vyc29yIChSRUNUKiBwcmMpDQogKiBcYnJpZWYgR2V0cyB0aGUgY3VycmVudCBjdXJz
b3IgY2xpcHBpbmcgcmVjdGFuZ2xlLg0KICoNCiAqIFRoaXMgZnVuY3Rpb24gY29waWVzIHRoZSBj
dXJyZW50IGNsaXBwaW5nIHJlY3RhbmdsZSB0byANCiAqIGEgUkVDVCBwb2ludGVkIHRvIGJ5IFxh
IHByYy4NCiAqDQogKiBccGFyYW0gcHJjIFRoZSBjbGlwcGluZyByZWN0YW5nbGUgd2lsbCBiZSBz
YXZlZCB0byB0aGlzIHJlY3RhbmdsZS4NCiAqIFxyZXR1cm4gTm9uZS4NCiAqLw0Kdm9pZCBHVUlB
UEkgR2V0Q2xpcEN1cnNvciAoUkVDVCogcHJjKTsNCg0KLyoqDQogKiBcZm4gdm9pZCBHVUlBUEkg
R2V0Q3Vyc29yUG9zIChQT0lOVCogcHB0KQ0KICogXGJyaWVmIEdldHMgcG9zaXRpb24gb2YgdGhl
IGN1cnJlbnQgY3Vyc29yLg0KICoNCiAqIFRoaXMgZnVuY3Rpb24gY29waWVzIHRoZSBjdXJyZW50
IG1vdXNlIGN1cnNvciBwb3NpdGlvbiB0byANCiAqIGEgUE9JTlQgc3RydWN0dXJlIHBvaW50ZWQg
dG8gYnkgXGEgcHB0Lg0KICoNCiAqIFxwYXJhbSBwcHQgVGhlIHBvc2l0aW9uIHdpbGwgYmUgc2F2
ZWQgaW4gdGhpcyBidWZmZXIuDQogKiBccmV0dXJuIE5vbmUuDQogKg0KICogXHNhIFNldEN1cnNv
clBvcywgUE9JTlQNCiAqLw0Kdm9pZCBHVUlBUEkgR2V0Q3Vyc29yUG9zIChQT0lOVCogcHB0KTsN
Cg0KLyoqDQogKiBcZm4gdm9pZCBHVUlBUEkgU2V0Q3Vyc29yUG9zIChpbnQgeCwgaW50IHkpDQog
KiBcYnJpZWYgU2V0cyBwb3NpdGlvbiBvZiB0aGUgY3VycmVudCBjdXJzb3IuDQogKg0KICogVGhp
cyBmdW5jdGlvbiBzZXRzIG1vdXNlIGN1cnNvciBwb3NpdGlvbiB3aXRoIHRoZSBnaXZlbiANCiAq
IGFyZ3VtZW50czogXGEgKHgseSkuDQogKg0KICogXHBhcmFtIHggVGhlIHgtY29ycmRpbmF0ZSBv
ZiB0aGUgZXhwZWN0ZWQgcG9pc3Rpb24uDQogKiBccGFyYW0geSBUaGUgeS1jb3JyZGluYXRlIG9m
IHRoZSBleHBlY3RlZCBwb2lzdGlvbi4NCiAqIFxyZXR1cm4gTm9uZS4NCiAqDQogKiBcc2EgR2V0
Q3Vyc29yUG9zDQogKi8NCnZvaWQgR1VJQVBJIFNldEN1cnNvclBvcyAoaW50IHgsIGludCB5KTsN
Cg0KI2lmZGVmIF9DVVJTT1JfU1VQUE9SVA0KLyoqDQogKiBcZm4gSENVUlNPUiBHVUlBUEkgU2V0
Q3Vyc29yRXggKEhDVVJTT1IgaGNzciwgQk9PTCBzZXRfZGVmKQ0KICogXGJyaWVmIENoYW5nZXMg
dGhlIGN1cnJlbnQgY3Vyc29yLg0KICoNCiAqIFRoaXMgZnVuY3Rpb24gY2hhbmdlcyB0aGUgY3Vy
cmVudCBjdXJzb3IgdG8gYmUgXGEgaGNzciwNCiAqIGFuZC9vciBzZXRzIGl0IHRvIGJlIHRoZSBk
ZWZhdWx0IGN1cnNvci4NCiAqDQogKiBJZiB5b3UgcGFzcyBcYSBzZXRfZGVmIGFzIFRSVUUsIHRo
ZSBleHBlY3RlZCBjdXJzb3Igd2lsbCBiZSB0aGUgZGVmYXVsdCBjdXJzb3IuIA0KICogVGhlIGRl
ZmF1bHQgY3Vyc29yIHdpbGwgYmUgdXNlZCB3aGVuIHlvdSBtb3ZlIGN1cnNvciB0byB0aGUgZGVz
a3RvcC4NCiAqDQogKiBccGFyYW0gaGNzciBUaGUgZXhwZWN0ZWQgY3Vyc29yIGhhbmRsZS4NCiAq
IFxwYXJhbSBzZXRfZGVmIEluZGljYXRlcyB3aGV0aGVyIHNldHRpbmcgdGhlIGN1cnNvciBhcyB0
aGUgZGVmYXVsdCBjdXJzb3IuDQogKiBccmV0dXJuIFRoZSBvbGQgY3Vyc29yIGhhbmRsZS4NCiAq
DQogKiBcc2EgU2V0Q3Vyc29yLCBTZXREZWZhdWx0Q3Vyc29yLCBHZXREZWZhdWx0Q3Vyc29yDQog
Ki8NCiAgSENVUlNPUiBHVUlBUEkgU2V0Q3Vyc29yRXggKEhDVVJTT1IgaGNzciwgQk9PTCBzZXRf
ZGVmKTsNCg0KLyoqDQogKiBcZGVmIFNldEN1cnNvcihoY3NyKQ0KICogXGJyaWVmIENoYW5nZXMg
dGhlIGN1cnJlbnQgY3Vyc29yLg0KICoNCiAqIFRoaXMgZnVuY3Rpb24gY2hhbmdlcyB0aGUgY3Vy
cmVudCBjdXJzb3IgdG8gYmUgXGEgaGNzci4NCiAqDQogKiBccGFyYW0gaGNzciBUaGUgZXhwZWN0
ZWQgY3Vyc29yIGhhbmRsZS4NCiAqIFxyZXR1cm4gVGhlIG9sZCBjdXJzb3IgaGFuZGxlLg0KICoN
CiAqIFxub3RlIFRoaXMgZnVuY3Rpb24gZGVmaW5lZCBhcyBhIG1hY3JvIGNhbGxpbmcgXGEgU2V0
Q3Vyc29yRXggd2l0aA0KICogcGFzc2luZyBcYSBzZXRfZGVmIGFzIEZBTFNFLg0KICoNCiAqIFxz
YSBTZXRDdXJzb3JFeCwgU2V0RGVmYXVsdEN1cnNvcg0KICovDQogICNkZWZpbmUgU2V0Q3Vyc29y
KGhjc3IpIFNldEN1cnNvckV4IChoY3NyLCBGQUxTRSkNCg0KLyoqDQogKiBcZGVmIFNldERlZmF1
bHRDdXJzb3IoaGNzcikNCiAqIFxicmllZiBDaGFuZ2VzIHRoZSBjdXJyZW50IGN1cnNvciwgYW5k
IHNldCBpdCBhcyB0aGUgZGVmYXVsdCBjdXJzb3IuDQogKg0KICogVGhpcyBmdW5jdGlvbiBjaGFu
Z2VzIHRoZSBjdXJyZW50IGN1cnNvciB0byBiZSBcYSBoY3NyLCBhbmQgc2V0IGl0IGFzIHRoZSBk
ZWZhdWx0IGN1cnNvci4NCiAqDQogKiBccGFyYW0gaGNzciBUaGUgZXhwZWN0ZWQgY3Vyc29yIGhh
bmRsZS4NCiAqIFxyZXR1cm4gVGhlIG9sZCBjdXJzb3IgaGFuZGxlLg0KICoNCiAqIFxub3RlIFRo
aXMgZnVuY3Rpb24gZGVmaW5lZCBhcyBhIG1hY3JvIGNhbGxpbmcgXGEgU2V0Q3Vyc29yRXggd2l0
aA0KICogcGFzc2luZyBcYSBzZXRfZGVmIGFzIFRSVUUuDQogKg0KICogXHNhIFNldEN1cnNvckV4
LCBTZXRDdXJzb3INCiAqLw0KICAjZGVmaW5lIFNldERlZmF1bHRDdXJzb3IoaGNzcikgU2V0Q3Vy
c29yRXggKGhjc3IsIFRSVUUpDQoNCi8qKg0KICogXGZuIEhDVVJTT1IgR1VJQVBJIEdldERlZmF1
bHRDdXJzb3IgKHZvaWQpDQogKiBcYnJpZWYgR2V0cyB0aGUgZGVmYXVsdCBjdXJzb3IuDQogKg0K
ICogVGhpcyBmdW5jdGlvbiBnZXRzIHRoZSBjdXJyZW50IGRlZmF1bHQgY3Vyc29yLg0KICoNCiAq
IFxyZXR1cm4gVGhlIGN1cnJlbnQgZGVmYXVsdCBjdXJzb3IgaGFuZGxlLg0KICoNCiAqIFxzYSBT
ZXRDdXJzb3JFeCwgU2V0RGVmYXVsdEN1cnNvcg0KICovDQogIEhDVVJTT1IgR1VJQVBJIEdldERl
ZmF1bHRDdXJzb3IgKHZvaWQpOw0KDQojZWxzZQ0KICAjZGVmaW5lIFNldEN1cnNvckV4KGhjc3Is
IHNldF9kZWYpICAgIChkb19ub3RoaW5nKCksIDApDQogICNkZWZpbmUgU2V0Q3Vyc29yKGhjc3Ip
ICAgICAgICAgICAgICAgKGRvX25vdGhpbmcoKSwgMCkNCiAgI2RlZmluZSBTZXREZWZhdWx0Q3Vy
c29yKGhjc3IpICAgICAgICAoZG9fbm90aGluZygpLCAwKQ0KICAjZGVmaW5lIEdldERlZmF1bHRD
dXJzb3IoKSAgICAgICAgICAgIChkb19ub3RoaW5nKCksIDApDQojZW5kaWYgLyogX0NVUlNPUl9T
VVBQT1JUICovDQoNCiNpZmRlZiBfQ1VSU09SX1NVUFBPUlQNCg0KLyoqDQogKiBcZm4gaW50IEdV
SUFQSSBTaG93Q3Vyc29yIChCT09MIGZTaG93KQ0KICogXGJyaWVmIFNob3dzIG9yIGhpZGVzIGN1
cnNvci4NCiAqDQogKiBUaGlzIGZ1bmN0aW9uIHNob3dzIG9yIGhpZGVzIGN1cnNvciBhY2NvcmRp
bmcgdG8gdGhlIGFyZ3VtZW50IFxhIGZTaG93LiANCiAqIFNob3cgY3Vyc29yIHdoZW4gXGEgZlNo
b3cgaXMgVFJVRSwgYW5kIGhpZGUgY3Vyc29yIHdoZW4gXGEgZlNob3cgaXMgRkFMU0UuDQogKiBN
aW5pR1VJIG1haW50YWlucyBhIHNob3dpbmcgY291bnQgdmFsdWUuIENhbGxpbmcgXGEgU2hvd0N1
cnNvciBvbmNlLCB0aGUgY291bnQgDQogKiB3aWxsIGluY3JlYXNlIHdoZW4gXGEgZlNob3cgaXMg
VFJVRSwgb3IgZGVjcmVhc2Ugb25lIHdoZW4gRkFMU0UuDQogKiBXaGVuIHRoZSBjb3VudCBpcyBs
ZXNzIHRoYW4gMCwgdGhlIGN1cnNvciB3aWxsIGRpc2FwZWFyIGFjdHVhbGx5Lg0KICoNCiAqIFxw
YXJhbSBmU2hvdyBJbmRpY2F0ZXMgc2hvdyBvciBoaWRlIHRoZSBjdXJzb3IuDQogKiBccmV0dXJu
IEN1cnNvciBzaG93aW5nIGNvdW50IHZhbHVlLiANCiAqLw0KICBpbnQgR1VJQVBJIFNob3dDdXJz
b3IgKEJPT0wgZlNob3cpOw0KI2Vsc2UNCiAgI2RlZmluZSBTaG93Q3Vyc29yKGZTaG93KSAgICAg
ICAgICAgICAoZG9fbm90aGluZygpLCAwKQ0KI2VuZGlmIC8qIF9DVVJTT1JfU1VQUE9SVCAqLw0K
DQogICAgLyoqIEB9IGVuZCBvZiBjdXJzb3JfZm5zICovDQoNCiAgICAvKioNCiAgICAgKiBcZGVm
Z3JvdXAga2V5X3N0YXR1cyBBc3luY2hyb25vdXMga2V5IHN0YXR1cyBmdW5jdGlvbnMNCiAgICAg
KiBAew0KICAgICAqLw0KDQovKioNCiAqIFxmbiBCT09MIEdVSUFQSSBHZXRLZXlTdGF0dXMgKFVJ
TlQgdUtleSkNCiAqIFxicmllZiBHZXRzIGEga2V5IG9yIGEgbW91c2UgYnV0dG9uIHN0YXR1cy4N
CiAqDQogKiBUaGlzIGZ1bmN0aW9uIGdldHMgYSBrZXkgb3IgYSBtb3VzZSBidXR0b24gc3RhdHVz
LCByZXR1cm5zIFRSVUUgDQogKiB3aGVuIHByZXNzZWQsIG9yIEZBTFNFIHdoZW4gcmVsZWFzZWQu
IFxhIHVLZXkgaW5kaWNhdGVzIA0KICogdGhlIGtleSBvciBtb3VzZSBidXR0b24uIEZvciBrZXlz
IG9uIGtleWJvYXJkLCBcYSB1S2V5IHNob3VsZCBiZSANCiAqIHRoZSBzY2FuY29kZSBvZiB0aGUg
a2V5LCBmb3IgbW91c2UgYnV0dG9uLCBcYSB1S2V5IHNob3VsZCBiZSBvbmUgDQogKiB2YWx1ZSBv
ZiB0aGUgZm9sbG93aW5nOg0KICoNCiAqICAtIFNDQU5DT0RFX0xFRlRCVVRUT05cbg0KICogICAg
TGVmdCBtb3VzZSBidXR0b24uDQogKiAgLSBTQ0FOQ09ERV9NSURETEJVVFRPTlxuDQogKiAgICBN
aWRkbGUgbW91c2UgYnV0dG9uLg0KICogIC0gU0NBTkNPREVfUklHSFRCVVRUT05cbg0KICogICAg
UmlnaHQgbW91c2UgYnV0dG9uLg0KICoNCiAqIFRoZXNlIGNvbnN0YW50cyBhbmQgdGhlIHNjYW5j
b2RlcyBvZiBrZXlzIGFyZSBkZWZpbmVkIGluIDxtaW5pZ3VpL2NvbW1vbi5oPi4NCiAqDQogKiBc
cGFyYW0gdUtleSBJbmRpY2F0ZXMgdGhlIGtleSBvciBtb3VzZSBidXR0b24uIA0KICogXHJldHVy
biBSZXR1cm5zIFRSVUUgd2hlbiBwcmVzc2VkLCBvciBGQUxTRSB3aGVuIHJlbGVhc2VkLg0KICoN
CiAqIFxzYSBHZXRTaGlmdEtleVN0YXR1cw0KICovDQpCT09MIEdVSUFQSSBHZXRLZXlTdGF0dXMg
KFVJTlQgdUtleSk7DQoNCi8qKg0KICogXGZuIERXT1JEIEdVSUFQSSBHZXRTaGlmdEtleVN0YXR1
cyAodm9pZCkNCiAqIFxicmllZiBHZXRzIHN0YXR1cyBvZiB0aGUgc2hpZnQga2V5cy4NCiAqDQog
KiBUaGlzIGZ1bmN0aW9uIGdldHMgdGhzIHN0YXR1cyBvZiB0aGUgc2hpZnQga2V5cywgdGhlIHJl
dHVybmVkIHZhbHVlIA0KICogaW5kaWNhdGVzIHRoZSBzdGF0dXMgb2Ygc2hpZnQga2V5cyAtLSBD
YXBzTG9jaywgU2Nyb2xsTG9jaywgTnVtTG9jaywgTGVmdCBTaGlmdCwgDQogKiBSaWdodCBTaGlm
dCwgTGVmdCBDdHJsLCBSaWdodCBDdHJsLCBMZWZ0IEFsdCwgYW5kIFJpZ2h0IEFsdC4gDQogKiBZ
b3UgY2FuIHVzZSBLU18qIE9SZWQgd2l0aCB0aGUgc3RhdHVzIHZhbHVlIHRvIGRldGVybWluZSBv
bmUgc2hpZnQga2V5J3Mgc3RhdHVzOg0KICoNCiAqICAtIEtTX0NBUFNMT0NLXG4NCiAqICAgIElu
ZGljYXRlcyB0aGF0IENhcHNMb2NrIGlzIGxvY2tlZC4NCiAqICAtIEtTX05VTUxPQ0tcbg0KICog
ICAgSW5kaWNhdGVzIHRoYXQgTnVtTG9jayBpcyBsb2NrZWQuDQogKiAgLSBLU19TQ1JPTExMT0NL
XG4NCiAqICAgIEluZGljYXRlcyB0aGF0IFNjcm9sbExvY2sgaXMgbG9ja2VkLg0KICogIC0gS1Nf
TEVGVENUUkxcbg0KICogICAgSW5kaWNhdGVzIHRoYXQgbGVmdCBDdHJsIGtleSBpcyBwcmVzc2Vk
Lg0KICogIC0gS1NfUklHSFRDVFJMXG4NCiAqICAgIEluZGljYXRlcyB0aGF0IHJpZ2h0IEN0cmwg
a2V5IGlzIHByZXNzZWQuDQogKiAgLSBLU19DVFJMXG4NCiAqICAgIEluZGljYXRlcyB0aGF0IGVp
dGhlciBsZWZ0IG9yIHJpZ2h0IEN0cmwga2V5IGlzIHByZXNzZWQuDQogKiAgLSBLU19MRUZUQUxU
XG4NCiAqICAgIEluZGljYXRlcyB0aGF0IGxlZnQgQWx0IGtleSBpcyBwcmVzc2VkLg0KICogIC0g
S1NfUklHSFRBTFRcbg0KICogICAgSW5kaWNhdGVzIHRoYXQgcmlnaHQgQWx0IGtleSBpcyBwcmVz
c2VkLg0KICogIC0gS1NfQUxUXG4NCiAqICAgIEluZGljYXRlcyB0aGF0IGVpdGhlciBsZWZ0IG9y
IHJpZ2h0IEFsdCBrZXkgaXMgcHJlc3NlZC4NCiAqICAtIEtTX0xFRlRTSElGVFxuDQogKiAgICBJ
bmRpY2F0ZXMgdGhhdCBsZWZ0IFNoaWZ0IGtleSBpcyBwcmVzc2VkLg0KICogIC0gS1NfUklHSFRT
SElGVFxuDQogKiAgICBJbmRpY2F0ZXMgdGhhdCByaWdodCBTaGlmdCBrZXkgaXMgcHJlc3NlZC4N
CiAqICAtIEtTX1NISUZUXG4NCiAqICAgIEluZGljYXRlcyB0aGF0IGVpdGhlciBsZWZ0IG9yIHJp
Z2h0IFNoaWZ0IGtleSBpcyBwcmVzc2VkLg0KICoNCiAqIFRoZXNlIGNvbnN0YW50cyBhcmUgZGVm
aW5lZCBpbiA8bWluaWd1aS9jb21tb24uaD4uDQogKg0KICogXHJldHVybiBUaGUgc3RhdHVzIG9m
IHRoZSBzaGlmdCBrZXlzLg0KICogXHNhIGtleV9kZWZzDQogKi8NCkRXT1JEIEdVSUFQSSBHZXRT
aGlmdEtleVN0YXR1cyAodm9pZCk7DQoNCiAgICAvKiogQH0gZW5kIG9mIGtleV9zdGF0dXMgKi8N
Cg0KICAgIC8qKg0KICAgICAqIFxkZWZncm91cCBzeXNfdGV4dCBJbnRlcm5hdGlvbmxpemF0aW9u
IG9mIHN5c3RlbSB0ZXh0DQogICAgICogQHsNCiAgICAgKi8NCg0KLyoqDQogKiBcZm4gY29uc3Qg
Y2hhciogR2V0U3lzVGV4dCAoY29uc3QgY2hhciogdGV4dCk7DQogKiBcYnJpZWYgVHJhbnNsYXRl
cyBzeXN0ZW0gdGV4dCB0byBsb2NhbGl6ZWQgdGV4dC4NCiAqDQogKiBXaGVuIE1pbmlHVUkgZGlz
cGxheSBzb21lIHN5c3RlbSBtZXNzYWdlcywgaXQgd2lsbCBjYWxsIFxhIEdldFN5c1RleHQgZnVu
Y3Rpb24gDQogKiB0byB0cmFuc2xhdGUgc3lzdGVtIHRleHQgZnJvbSBFbmdsaXNoIHRvIG90aGVy
IGxhbmd1YWdlLiANCiAqIEdsb2JhbCB2YXJpYWJsZSBcYSBTeXNUZXh0IGNvbnRhaW5zIGFsbCB0
ZXh0IHVzZWQgYnkgTWluaUdVSSBpbiBFbmdsaXNoLg0KICoNCiAqIFxhIEdldFN5c1RleHQgZnVu
Y3Rpb24gcmV0dXJucyBsb2NhbGl6ZWQgdGV4dCBmcm9tIFxhIGxvY2FsX1N5c1RleHQuIA0KICog
TWluaUdVSSBoYXZlIGFscmVhZHkgZGVmaW5lZCBsb2NhbGl6ZWQgc3l0ZW0gdGV4dCBmb3IgZW5f
VVMsIHpoX0NOLkdCMjMxMiANCiAqIGFuZCB6aF9UVy5CaWc1IGxvY2FsZXMuIE1pbmlHVUkgaW5p
dGlhbGl6ZXMgXGEgbG9jYWxfU3lzVGV4dCB0byANCiAqIHBvaW50IG9uZSBvZiBhYm92ZSBsb2Nh
bGl6ZWQgc3lzdGVtIHRleHQgd2hlbiBzdGFydHVwLiAgWW91IGNhbiBhbHNvIA0KICogbGV0IFxh
IGxvY2FsX1N5c1RleHQgcG9pbnQgdG8geW91ciBjdXN0b21pemVkIHN0cmluZyBhcnJheS4NCiAq
IA0KICogXHBhcmFtIHRleHQgVGhlIHN5c3RlbSB0ZXh0IGluIGVuX1VTIGxvY2FsZS4NCiAqIFxy
ZXR1cm4gVGhlIGxvY2FsaXplZCB0ZXh0Lg0KICoNCiAqIFxzYSBTeXNUZXh0LCBsb2NhbF9TeXNU
ZXh0DQogKi8NCmNvbnN0IGNoYXIqIEdldFN5c1RleHQgKGNvbnN0IGNoYXIqIHRleHQpOw0KDQov
KioNCiAqIFx2YXIgY29uc3QgY2hhciogU3lzVGV4dCBbXQ0KICogXGJyaWVmIENvbnRhaW5zIGFs
bCB0ZXh0IHVzZWQgYnkgTWluaUdVSSBpbiBFbmdsaXNoLg0KICoNCiAqIFN5c3RlbSB0ZXh0IGRl
ZmluZWQgYXMgZm9sbG93cyBpbiBNaW5pR1VJOg0KICoNCiAqIFxjb2RlDQogKiBjb25zdCBjaGFy
KiBTeXNUZXh0IFtdID0NCiAqIHsNCiAqICAgICJXaW5kb3dzLi4uIiwNCiAqICAgICJTdGFydC4u
LiIsDQogKiAgICAiUmVmcmVzaCBCYWNrZ3JvdW5kIiwNCiAqICAgICJDbG9zZSBBbGwgV2luZG93
cyIsDQogKiAgICAiRW5kIFNlc3Npb24iLA0KICogICAgIk9wZXJhdGlvbnMuLi4iLA0KICogICAg
Ik1pbmltaXplIiwNCiAqICAgICJNYXhpbWl6ZSIsDQogKiAgICAiUmVzdG9yZSIsDQogKiAgICAi
Q2xvc2UiLA0KICogICAgIk9LIiwNCiAqICAgICJOZXh0IiwNCiAqICAgICJDYW5jZWwiLA0KICog
ICAgIlByZXZpb3VzIiwNCiAqICAgICJZZXMiLA0KICogICAgIk5vIiwNCiAqICAgICJBYm9ydCIs
DQogKiAgICAiUmV0cnkiLA0KICogICAgIklnbm9yZSIsDQogKiAgICAiQWJvdXQgTWluaUdVSS4u
LiIsDQogKiAgICBOVUxMDQogKiB9Ow0KICogXGVuZGNvZGUNCiAqDQogKiBcc2EgR2V0U3lzVGV4
dCwgbG9jYWxfU3lzVGV4dA0KICovDQpleHRlcm4gY29uc3QgY2hhciogU3lzVGV4dCBbXTsNCg0K
LyoqDQogKiBcdmFyIGNvbnN0IGNoYXIqKiBsb2NhbF9TeXNUZXh0DQogKiBcYnJpZWYgVGhlIHBv
aW50ZXIgdG8gdGhlIGN1cnJlbnQgbG9jYWxpemVkIHN5c3RlbSB0ZXh0IGFycmF5Lg0KICoNCiAq
IENoYW5naW5nIFxhIGxvY2FsX1N5c1RleHQgd2lsbCBsZWFkIHRvIFxhIEdldFN5c1RleHQgcmV0
dXJucyBhIGRpZmZlcmVudCANCiAqIGxvY2FsaXplZCBzeXN0ZW0gdGV4dC4gUGxlYXNlIHNldCBp
dCBhZnRlciBjYWxsaW5nIFxhIFNldERlc2t0b3BSZWN0LCANCiAqIGFuZCBzZW5kIGRlc2t0b3Ag
YSBNU0dfUkVJTklUU0VTU0lPTiBtZXNzYWdlIChjYWxsIFxhIFJlaW5pdERlc2t0b3AgZnVuY3Rp
b24pIA0KICogYWZ0ZXIgYXNzaWduZWQgYSBkaWZmZXJlbnQgdmFsdWUgdG8gdGhpcyB2YXJpYWJs
ZS4NCiAqDQogKiBcc2EgR2V0U3lzVGV4dCwgU3lzVGV4dCwgUmVpbml0RGVza3RvcEV4DQogKi8N
CmV4dGVybiBjb25zdCBjaGFyKiogbG9jYWxfU3lzVGV4dDsNCg0KDQogICAgLyoqIEB9IGVuZCBv
ZiBzeXNfdGV4dCAqLw0KDQogICAgLyoqDQogICAgICogXGRlZmdyb3VwIHN0cl9oZWxwZXJzIFN0
cmluZyBvcGVyYXRpb24gaGVscGVycw0KICAgICAqIEB7DQogICAgICovDQoNCi8qKg0KICogXGZu
IGNoYXIqIHN0cm5jaHIgKGNvbnN0IGNoYXIqIHMsIHNpemVfdCBuLCBpbnQgYyk7DQogKiBcYnJp
ZWYgTG9jYXRlcyBjaGFyYWN0ZXIgaW4gdGhlIGZpcnN0IFxhIG4gY2hhcmFjdGVycyBvZiBzdHJp
bmcgXGEgcy4NCiAqDQogKiBccGFyYW0gcyBUaGUgcG9pbnRlciB0byB0aGUgc3RyaW5nLg0KICog
XHBhcmFtIG4gVGhlIG51bWJlciBvZiBmaXJzdCBjaGFyYWN0ZXJzIHdpbGwgYmUgc2VhcmNoZWQu
DQogKiBccGFyYW0gYyBUaGUgZXhwZWN0ZWQgY2hhcmFjdGVyLg0KICogXHJldHVybiBSZXR1cm5z
IGEgcG9pbnRlciB0byB0aGUgZmlyc3Qgb2NjdXJyZW5jZSBvZiB0aGUgY2hhcmFjdGVyIFxhIGMg
aW4gdGhlIHN0cmluZyBcYSBzDQogKg0KICogXHNhIHN0cmNocigzKQ0KICovDQpjaGFyKiBzdHJu
Y2hyIChjb25zdCBjaGFyKiBzLCBzaXplX3QgbiwgaW50IGMpOw0KDQovKioNCiAqIFxmbiBpbnQg
c3Vic3RybGVuIChjb25zdCBjaGFyKiB0ZXh0LCBpbnQgbGVuLCBjaGFyIGRlbGltaXRlciwgaW50
KiBucl9kZWxpbSkNCiAqIFxicmllZiBMb2NhdGVzIGEgc3Vic3RyaW5nIGRlbGltaXRlZCBieSBv
bmUgb3IgbW9yZSBkZWxpbWl0ZXJzIGluIHRoZSBmaXJzdCBcYSBsZW4gY2hhcmFjdGVycyBvZiBz
dHJpbmcgXGEgdGV4dC4NCiAqDQogKiBccGFyYW0gdGV4dCBUaGUgcG9pbnRlciB0byB0aGUgc3Ry
aW5nLg0KICogXHBhcmFtIGxlbiBUaGUgbnVtYmVyIG9mIGZpcnN0IGNoYXJhY3RlcnMgd2lsbCBi
ZSBzZWFyY2hlZC4NCiAqIFxwYXJhbSBkZWxpbWl0ZXIgVGhlIGRlbGltaXRlciB3aGljaCBkZWxp
bWl0ZXMgdGhlIHN1YnN0cmluZyBmcm9tIG90aGVyLg0KICogXHBhcmFtIG5yX2RlbGltICBUaGUg
bnVtYmVyIG9mIGNvbnRpbnVvdXMgZGVsaW1pdGVycyB3aWxsIGJlIHJldHVybmVkIHRocm91Z2gg
dGhpcyBwb2ludGVyLg0KICogXHJldHVybiBUaGUgbGVuZ3RoIG9mIHRoZSBzdWJzdHJpbmcuDQog
Kg0KICogXHNhIHN0cnN0cigzKQ0KICovDQppbnQgc3Vic3RybGVuIChjb25zdCBjaGFyKiB0ZXh0
LCBpbnQgbGVuLCBjaGFyIGRlbGltaXRlciwgaW50KiBucl9kZWxpbSk7DQoNCiAgICAvKiogQH0g
ZW5kIG9mIHN0cl9oZWxwZXJzICovDQoNCiAgICAvKiogQH0gZW5kIG9mIGdsb2JhbF9mbnMgKi8N
Cg0KICAgIC8qKiBAfSBlbmQgb2YgZm5zICovDQoNCiNpZmRlZiBfX2NwbHVzcGx1cw0KfQ0KI2Vu
ZGlmICAvKiBfX2NwbHVzcGx1cyAqLw0KDQojZW5kaWYgLyogX01HVUlfTUlOSUdVSV9IICovDQoN
Cg==
------_=_NextPart_001_01C34C40.E831C6E0
Content-Type: text/plain;
name="configure"
Content-Transfer-Encoding: base64
Content-Description: configure
Content-Disposition: attachment;
filename="configure"
IyEgL2Jpbi9zaA0KDQojIEd1ZXNzIHZhbHVlcyBmb3Igc3lzdGVtLWRlcGVuZGVudCB2YXJpYWJs
ZXMgYW5kIGNyZWF0ZSBNYWtlZmlsZXMuDQojIEdlbmVyYXRlZCBhdXRvbWF0aWNhbGx5IHVzaW5n
IGF1dG9jb25mIHZlcnNpb24gMi4xMyANCiMgQ29weXJpZ2h0IChDKSAxOTkyLCA5MywgOTQsIDk1
LCA5NiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4NCiMNCiMgVGhpcyBjb25maWd1cmUg
c2NyaXB0IGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24NCiMg
Z2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSwgZGlzdHJpYnV0ZSBhbmQgbW9kaWZ5
IGl0Lg0KDQojIERlZmF1bHRzOg0KYWNfaGVscD0NCmFjX2RlZmF1bHRfcHJlZml4PS91c3IvbG9j
YWwNCiMgQW55IGFkZGl0aW9ucyBmcm9tIGNvbmZpZ3VyZS5pbjoNCg0KIyBJbml0aWFsaXplIHNv
bWUgdmFyaWFibGVzIHNldCBieSBvcHRpb25zLg0KIyBUaGUgdmFyaWFibGVzIGhhdmUgdGhlIHNh
bWUgbmFtZXMgYXMgdGhlIG9wdGlvbnMsIHdpdGgNCiMgZGFzaGVzIGNoYW5nZWQgdG8gdW5kZXJs
aW5lcy4NCmJ1aWxkPU5PTkUNCmNhY2hlX2ZpbGU9Li9jb25maWcuY2FjaGUNCmV4ZWNfcHJlZml4
PU5PTkUNCmhvc3Q9Tk9ORQ0Kbm9fY3JlYXRlPQ0Kbm9ub3B0PU5PTkUNCm5vX3JlY3Vyc2lvbj0N
CnByZWZpeD1OT05FDQpwcm9ncmFtX3ByZWZpeD1OT05FDQpwcm9ncmFtX3N1ZmZpeD1OT05FDQpw
cm9ncmFtX3RyYW5zZm9ybV9uYW1lPXMseCx4LA0Kc2lsZW50PQ0Kc2l0ZT0NCnNyY2Rpcj0NCnRh
cmdldD1OT05FDQp2ZXJib3NlPQ0KeF9pbmNsdWRlcz1OT05FDQp4X2xpYnJhcmllcz1OT05FDQpi
aW5kaXI9JyR7ZXhlY19wcmVmaXh9L2JpbicNCnNiaW5kaXI9JyR7ZXhlY19wcmVmaXh9L3NiaW4n
DQpsaWJleGVjZGlyPScke2V4ZWNfcHJlZml4fS9saWJleGVjJw0KZGF0YWRpcj0nJHtwcmVmaXh9
L3NoYXJlJw0Kc3lzY29uZmRpcj0nJHtwcmVmaXh9L2V0YycNCnNoYXJlZHN0YXRlZGlyPScke3By
ZWZpeH0vY29tJw0KbG9jYWxzdGF0ZWRpcj0nJHtwcmVmaXh9L3ZhcicNCmxpYmRpcj0nJHtleGVj
X3ByZWZpeH0vbGliJw0KaW5jbHVkZWRpcj0nJHtwcmVmaXh9L2luY2x1ZGUnDQpvbGRpbmNsdWRl
ZGlyPScvdXNyL2luY2x1ZGUnDQppbmZvZGlyPScke3ByZWZpeH0vaW5mbycNCm1hbmRpcj0nJHtw
cmVmaXh9L21hbicNCg0KIyBJbml0aWFsaXplIHNvbWUgb3RoZXIgdmFyaWFibGVzLg0Kc3ViZGly
cz0NCk1GTEFHUz0gTUFLRUZMQUdTPQ0KU0hFTEw9JHtDT05GSUdfU0hFTEwtL2Jpbi9zaH0NCiMg
TWF4aW11bSBudW1iZXIgb2YgbGluZXMgdG8gcHV0IGluIGEgc2hlbGwgaGVyZSBkb2N1bWVudC4N
CmFjX21heF9oZXJlX2xpbmVzPTEyDQoNCmFjX3ByZXY9DQpmb3IgYWNfb3B0aW9uDQpkbw0KDQog
ICMgSWYgdGhlIHByZXZpb3VzIG9wdGlvbiBuZWVkcyBhbiBhcmd1bWVudCwgYXNzaWduIGl0Lg0K
ICBpZiB0ZXN0IC1uICIkYWNfcHJldiI7IHRoZW4NCiAgICBldmFsICIkYWNfcHJldj1cJGFjX29w
dGlvbiINCiAgICBhY19wcmV2PQ0KICAgIGNvbnRpbnVlDQogIGZpDQoNCiAgY2FzZSAiJGFjX29w
dGlvbiIgaW4NCiAgLSo9KikgYWNfb3B0YXJnPWBlY2hvICIkYWNfb3B0aW9uIiB8IHNlZCAncy9b
LV9hLXpBLVowLTldKj0vLydgIDs7DQogICopIGFjX29wdGFyZz0gOzsNCiAgZXNhYw0KDQogICMg
QWNjZXB0IHRoZSBpbXBvcnRhbnQgQ3lnbnVzIGNvbmZpZ3VyZSBvcHRpb25zLCBzbyB3ZSBjYW4g
ZGlhZ25vc2UgdHlwb3MuDQoNCiAgY2FzZSAiJGFjX29wdGlvbiIgaW4NCg0KICAtYmluZGlyIHwg
LS1iaW5kaXIgfCAtLWJpbmRpIHwgLS1iaW5kIHwgLS1iaW4gfCAtLWJpKQ0KICAgIGFjX3ByZXY9
YmluZGlyIDs7DQogIC1iaW5kaXI9KiB8IC0tYmluZGlyPSogfCAtLWJpbmRpPSogfCAtLWJpbmQ9
KiB8IC0tYmluPSogfCAtLWJpPSopDQogICAgYmluZGlyPSIkYWNfb3B0YXJnIiA7Ow0KDQogIC1i
dWlsZCB8IC0tYnVpbGQgfCAtLWJ1aWwgfCAtLWJ1aSB8IC0tYnUpDQogICAgYWNfcHJldj1idWls
ZCA7Ow0KICAtYnVpbGQ9KiB8IC0tYnVpbGQ9KiB8IC0tYnVpbD0qIHwgLS1idWk9KiB8IC0tYnU9
KikNCiAgICBidWlsZD0iJGFjX29wdGFyZyIgOzsNCg0KICAtY2FjaGUtZmlsZSB8IC0tY2FjaGUt
ZmlsZSB8IC0tY2FjaGUtZmlsIHwgLS1jYWNoZS1maSBcDQogIHwgLS1jYWNoZS1mIHwgLS1jYWNo
ZS0gfCAtLWNhY2hlIHwgLS1jYWNoIHwgLS1jYWMgfCAtLWNhIHwgLS1jKQ0KICAgIGFjX3ByZXY9
Y2FjaGVfZmlsZSA7Ow0KICAtY2FjaGUtZmlsZT0qIHwgLS1jYWNoZS1maWxlPSogfCAtLWNhY2hl
LWZpbD0qIHwgLS1jYWNoZS1maT0qIFwNCiAgfCAtLWNhY2hlLWY9KiB8IC0tY2FjaGUtPSogfCAt
LWNhY2hlPSogfCAtLWNhY2g9KiB8IC0tY2FjPSogfCAtLWNhPSogfCAtLWM9KikNCiAgICBjYWNo
ZV9maWxlPSIkYWNfb3B0YXJnIiA7Ow0KDQogIC1kYXRhZGlyIHwgLS1kYXRhZGlyIHwgLS1kYXRh
ZGkgfCAtLWRhdGFkIHwgLS1kYXRhIHwgLS1kYXQgfCAtLWRhKQ0KICAgIGFjX3ByZXY9ZGF0YWRp
ciA7Ow0KICAtZGF0YWRpcj0qIHwgLS1kYXRhZGlyPSogfCAtLWRhdGFkaT0qIHwgLS1kYXRhZD0q
IHwgLS1kYXRhPSogfCAtLWRhdD0qIFwNCiAgfCAtLWRhPSopDQogICAgZGF0YWRpcj0iJGFjX29w
dGFyZyIgOzsNCg0KICAtZGlzYWJsZS0qIHwgLS1kaXNhYmxlLSopDQogICAgYWNfZmVhdHVyZT1g
ZWNobyAkYWNfb3B0aW9ufHNlZCAtZSAncy8tKmRpc2FibGUtLy8nYA0KICAgICMgUmVqZWN0IG5h
bWVzIHRoYXQgYXJlIG5vdCB2YWxpZCBzaGVsbCB2YXJpYWJsZSBuYW1lcy4NCiAgICBpZiB0ZXN0
IC1uICJgZWNobyAkYWNfZmVhdHVyZXwgc2VkICdzL1stYS16QS1aMC05X10vL2cnYCI7IHRoZW4N
CiAgICAgIHsgZWNobyAiY29uZmlndXJlOiBlcnJvcjogJGFjX2ZlYXR1cmU6IGludmFsaWQgZmVh
dHVyZSBuYW1lIiAxPiYyOyBleGl0IDE7IH0NCiAgICBmaQ0KICAgIGFjX2ZlYXR1cmU9YGVjaG8g
JGFjX2ZlYXR1cmV8IHNlZCAncy8tL18vZydgDQogICAgZXZhbCAiZW5hYmxlXyR7YWNfZmVhdHVy
ZX09bm8iIDs7DQoNCiAgLWVuYWJsZS0qIHwgLS1lbmFibGUtKikNCiAgICBhY19mZWF0dXJlPWBl
Y2hvICRhY19vcHRpb258c2VkIC1lICdzLy0qZW5hYmxlLS8vJyAtZSAncy89LiovLydgDQogICAg
IyBSZWplY3QgbmFtZXMgdGhhdCBhcmUgbm90IHZhbGlkIHNoZWxsIHZhcmlhYmxlIG5hbWVzLg0K
ICAgIGlmIHRlc3QgLW4gImBlY2hvICRhY19mZWF0dXJlfCBzZWQgJ3MvWy1fYS16QS1aMC05XS8v
ZydgIjsgdGhlbg0KICAgICAgeyBlY2hvICJjb25maWd1cmU6IGVycm9yOiAkYWNfZmVhdHVyZTog
aW52YWxpZCBmZWF0dXJlIG5hbWUiIDE+JjI7IGV4aXQgMTsgfQ0KICAgIGZpDQogICAgYWNfZmVh
dHVyZT1gZWNobyAkYWNfZmVhdHVyZXwgc2VkICdzLy0vXy9nJ2ANCiAgICBjYXNlICIkYWNfb3B0
aW9uIiBpbg0KICAgICAgKj0qKSA7Ow0KICAgICAgKikgYWNfb3B0YXJnPXllcyA7Ow0KICAgIGVz
YWMNCiAgICBldmFsICJlbmFibGVfJHthY19mZWF0dXJlfT0nJGFjX29wdGFyZyciIDs7DQoNCiAg
LWV4ZWMtcHJlZml4IHwgLS1leGVjX3ByZWZpeCB8IC0tZXhlYy1wcmVmaXggfCAtLWV4ZWMtcHJl
ZmkgXA0KICB8IC0tZXhlYy1wcmVmIHwgLS1leGVjLXByZSB8IC0tZXhlYy1wciB8IC0tZXhlYy1w
IHwgLS1leGVjLSBcDQogIHwgLS1leGVjIHwgLS1leGUgfCAtLWV4KQ0KICAgIGFjX3ByZXY9ZXhl
Y19wcmVmaXggOzsNCiAgLWV4ZWMtcHJlZml4PSogfCAtLWV4ZWNfcHJlZml4PSogfCAtLWV4ZWMt
cHJlZml4PSogfCAtLWV4ZWMtcHJlZmk9KiBcDQogIHwgLS1leGVjLXByZWY9KiB8IC0tZXhlYy1w
cmU9KiB8IC0tZXhlYy1wcj0qIHwgLS1leGVjLXA9KiB8IC0tZXhlYy09KiBcDQogIHwgLS1leGVj
PSogfCAtLWV4ZT0qIHwgLS1leD0qKQ0KICAgIGV4ZWNfcHJlZml4PSIkYWNfb3B0YXJnIiA7Ow0K
DQogIC1nYXMgfCAtLWdhcyB8IC0tZ2EgfCAtLWcpDQogICAgIyBPYnNvbGV0ZTsgdXNlIC0td2l0
aC1nYXMuDQogICAgd2l0aF9nYXM9eWVzIDs7DQoNCiAgLWhlbHAgfCAtLWhlbHAgfCAtLWhlbCB8
IC0taGUpDQogICAgIyBPbWl0IHNvbWUgaW50ZXJuYWwgb3Igb2Jzb2xldGUgb3B0aW9ucyB0byBt
YWtlIHRoZSBsaXN0IGxlc3MgaW1wb3NpbmcuDQogICAgIyBUaGlzIG1lc3NhZ2UgaXMgdG9vIGxv
bmcgdG8gYmUgYSBzdHJpbmcgaW4gdGhlIEEvVVggMy4xIHNoLg0KICAgIGNhdCA8PCBFT0YNClVz
YWdlOiBjb25maWd1cmUgW29wdGlvbnNdIFtob3N0XQ0KT3B0aW9uczogW2RlZmF1bHRzIGluIGJy
YWNrZXRzIGFmdGVyIGRlc2NyaXB0aW9uc10NCkNvbmZpZ3VyYXRpb246DQogIC0tY2FjaGUtZmls
ZT1GSUxFICAgICAgIGNhY2hlIHRlc3QgcmVzdWx0cyBpbiBGSUxFDQogIC0taGVscCAgICAgICAg
ICAgICAgICAgIHByaW50IHRoaXMgbWVzc2FnZQ0KICAtLW5vLWNyZWF0ZSAgICAgICAgICAgICBk
byBub3QgY3JlYXRlIG91dHB1dCBmaWxlcw0KICAtLXF1aWV0LCAtLXNpbGVudCAgICAgICBkbyBu
b3QgcHJpbnQgXGBjaGVja2luZy4uLicgbWVzc2FnZXMNCiAgLS12ZXJzaW9uICAgICAgICAgICAg
ICAgcHJpbnQgdGhlIHZlcnNpb24gb2YgYXV0b2NvbmYgdGhhdCBjcmVhdGVkIGNvbmZpZ3VyZQ0K
RGlyZWN0b3J5IGFuZCBmaWxlIG5hbWVzOg0KICAtLXByZWZpeD1QUkVGSVggICAgICAgICBpbnN0
YWxsIGFyY2hpdGVjdHVyZS1pbmRlcGVuZGVudCBmaWxlcyBpbiBQUkVGSVgNCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgWyRhY19kZWZhdWx0X3ByZWZpeF0NCiAgLS1leGVjLXByZWZpeD1FUFJF
RklYICAgaW5zdGFsbCBhcmNoaXRlY3R1cmUtZGVwZW5kZW50IGZpbGVzIGluIEVQUkVGSVgNCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgW3NhbWUgYXMgcHJlZml4XQ0KICAtLWJpbmRpcj1ESVIg
ICAgICAgICAgICB1c2VyIGV4ZWN1dGFibGVzIGluIERJUiBbRVBSRUZJWC9iaW5dDQogIC0tc2Jp
bmRpcj1ESVIgICAgICAgICAgIHN5c3RlbSBhZG1pbiBleGVjdXRhYmxlcyBpbiBESVIgW0VQUkVG
SVgvc2Jpbl0NCiAgLS1saWJleGVjZGlyPURJUiAgICAgICAgcHJvZ3JhbSBleGVjdXRhYmxlcyBp
biBESVIgW0VQUkVGSVgvbGliZXhlY10NCiAgLS1kYXRhZGlyPURJUiAgICAgICAgICAgcmVhZC1v
bmx5IGFyY2hpdGVjdHVyZS1pbmRlcGVuZGVudCBkYXRhIGluIERJUg0KICAgICAgICAgICAgICAg
ICAgICAgICAgICBbUFJFRklYL3NoYXJlXQ0KICAtLXN5c2NvbmZkaXI9RElSICAgICAgICByZWFk
LW9ubHkgc2luZ2xlLW1hY2hpbmUgZGF0YSBpbiBESVIgW1BSRUZJWC9ldGNdDQogIC0tc2hhcmVk
c3RhdGVkaXI9RElSICAgIG1vZGlmaWFibGUgYXJjaGl0ZWN0dXJlLWluZGVwZW5kZW50IGRhdGEg
aW4gRElSDQogICAgICAgICAgICAgICAgICAgICAgICAgIFtQUkVGSVgvY29tXQ0KICAtLWxvY2Fs
c3RhdGVkaXI9RElSICAgICBtb2RpZmlhYmxlIHNpbmdsZS1tYWNoaW5lIGRhdGEgaW4gRElSIFtQ
UkVGSVgvdmFyXQ0KICAtLWxpYmRpcj1ESVIgICAgICAgICAgICBvYmplY3QgY29kZSBsaWJyYXJp
ZXMgaW4gRElSIFtFUFJFRklYL2xpYl0NCiAgLS1pbmNsdWRlZGlyPURJUiAgICAgICAgQyBoZWFk
ZXIgZmlsZXMgaW4gRElSIFtQUkVGSVgvaW5jbHVkZV0NCiAgLS1vbGRpbmNsdWRlZGlyPURJUiAg
ICAgQyBoZWFkZXIgZmlsZXMgZm9yIG5vbi1nY2MgaW4gRElSIFsvdXNyL2luY2x1ZGVdDQogIC0t
aW5mb2Rpcj1ESVIgICAgICAgICAgIGluZm8gZG9jdW1lbnRhdGlvbiBpbiBESVIgW1BSRUZJWC9p
bmZvXQ0KICAtLW1hbmRpcj1ESVIgICAgICAgICAgICBtYW4gZG9jdW1lbnRhdGlvbiBpbiBESVIg
W1BSRUZJWC9tYW5dDQogIC0tc3JjZGlyPURJUiAgICAgICAgICAgIGZpbmQgdGhlIHNvdXJjZXMg
aW4gRElSIFtjb25maWd1cmUgZGlyIG9yIC4uXQ0KICAtLXByb2dyYW0tcHJlZml4PVBSRUZJWCBw
cmVwZW5kIFBSRUZJWCB0byBpbnN0YWxsZWQgcHJvZ3JhbSBuYW1lcw0KICAtLXByb2dyYW0tc3Vm
Zml4PVNVRkZJWCBhcHBlbmQgU1VGRklYIHRvIGluc3RhbGxlZCBwcm9ncmFtIG5hbWVzDQogIC0t
cHJvZ3JhbS10cmFuc2Zvcm0tbmFtZT1QUk9HUkFNDQogICAgICAgICAgICAgICAgICAgICAgICAg
IHJ1biBzZWQgUFJPR1JBTSBvbiBpbnN0YWxsZWQgcHJvZ3JhbSBuYW1lcw0KRU9GDQogICAgY2F0
IDw8IEVPRg0KSG9zdCB0eXBlOg0KICAtLWJ1aWxkPUJVSUxEICAgICAgICAgICBjb25maWd1cmUg
Zm9yIGJ1aWxkaW5nIG9uIEJVSUxEIFtCVUlMRD1IT1NUXQ0KICAtLWhvc3Q9SE9TVCAgICAgICAg
ICAgICBjb25maWd1cmUgZm9yIEhPU1QgW2d1ZXNzZWRdDQogIC0tdGFyZ2V0PVRBUkdFVCAgICAg
ICAgIGNvbmZpZ3VyZSBmb3IgVEFSR0VUIFtUQVJHRVQ9SE9TVF0NCkZlYXR1cmVzIGFuZCBwYWNr
YWdlczoNCiAgLS1kaXNhYmxlLUZFQVRVUkUgICAgICAgZG8gbm90IGluY2x1ZGUgRkVBVFVSRSAo
c2FtZSBhcyAtLWVuYWJsZS1GRUFUVVJFPW5vKQ0KICAtLWVuYWJsZS1GRUFUVVJFWz1BUkddICBp
bmNsdWRlIEZFQVRVUkUgW0FSRz15ZXNdDQogIC0td2l0aC1QQUNLQUdFWz1BUkddICAgIHVzZSBQ
QUNLQUdFIFtBUkc9eWVzXQ0KICAtLXdpdGhvdXQtUEFDS0FHRSAgICAgICBkbyBub3QgdXNlIFBB
Q0tBR0UgKHNhbWUgYXMgLS13aXRoLVBBQ0tBR0U9bm8pDQogIC0teC1pbmNsdWRlcz1ESVIgICAg
ICAgIFggaW5jbHVkZSBmaWxlcyBhcmUgaW4gRElSDQogIC0teC1saWJyYXJpZXM9RElSICAgICAg
IFggbGlicmFyeSBmaWxlcyBhcmUgaW4gRElSDQpFT0YNCiAgICBpZiB0ZXN0IC1uICIkYWNfaGVs
cCI7IHRoZW4NCiAgICAgIGVjaG8gIi0tZW5hYmxlIGFuZCAtLXdpdGggb3B0aW9ucyByZWNvZ25p
emVkOiRhY19oZWxwIg0KICAgIGZpDQogICAgZXhpdCAwIDs7DQoNCiAgLWhvc3QgfCAtLWhvc3Qg
fCAtLWhvcyB8IC0taG8pDQogICAgYWNfcHJldj1ob3N0IDs7DQogIC1ob3N0PSogfCAtLWhvc3Q9
KiB8IC0taG9zPSogfCAtLWhvPSopDQogICAgaG9zdD0iJGFjX29wdGFyZyIgOzsNCg0KICAtaW5j
bHVkZWRpciB8IC0taW5jbHVkZWRpciB8IC0taW5jbHVkZWRpIHwgLS1pbmNsdWRlZCB8IC0taW5j
bHVkZSBcDQogIHwgLS1pbmNsdWQgfCAtLWluY2x1IHwgLS1pbmNsIHwgLS1pbmMpDQogICAgYWNf
cHJldj1pbmNsdWRlZGlyIDs7DQogIC1pbmNsdWRlZGlyPSogfCAtLWluY2x1ZGVkaXI9KiB8IC0t
aW5jbHVkZWRpPSogfCAtLWluY2x1ZGVkPSogfCAtLWluY2x1ZGU9KiBcDQogIHwgLS1pbmNsdWQ9
KiB8IC0taW5jbHU9KiB8IC0taW5jbD0qIHwgLS1pbmM9KikNCiAgICBpbmNsdWRlZGlyPSIkYWNf
b3B0YXJnIiA7Ow0KDQogIC1pbmZvZGlyIHwgLS1pbmZvZGlyIHwgLS1pbmZvZGkgfCAtLWluZm9k
IHwgLS1pbmZvIHwgLS1pbmYpDQogICAgYWNfcHJldj1pbmZvZGlyIDs7DQogIC1pbmZvZGlyPSog
fCAtLWluZm9kaXI9KiB8IC0taW5mb2RpPSogfCAtLWluZm9kPSogfCAtLWluZm89KiB8IC0taW5m
PSopDQogICAgaW5mb2Rpcj0iJGFjX29wdGFyZyIgOzsNCg0KICAtbGliZGlyIHwgLS1saWJkaXIg
fCAtLWxpYmRpIHwgLS1saWJkKQ0KICAgIGFjX3ByZXY9bGliZGlyIDs7DQogIC1saWJkaXI9KiB8
IC0tbGliZGlyPSogfCAtLWxpYmRpPSogfCAtLWxpYmQ9KikNCiAgICBsaWJkaXI9IiRhY19vcHRh
cmciIDs7DQoNCiAgLWxpYmV4ZWNkaXIgfCAtLWxpYmV4ZWNkaXIgfCAtLWxpYmV4ZWNkaSB8IC0t
bGliZXhlY2QgfCAtLWxpYmV4ZWMgXA0KICB8IC0tbGliZXhlIHwgLS1saWJleCB8IC0tbGliZSkN
CiAgICBhY19wcmV2PWxpYmV4ZWNkaXIgOzsNCiAgLWxpYmV4ZWNkaXI9KiB8IC0tbGliZXhlY2Rp
cj0qIHwgLS1saWJleGVjZGk9KiB8IC0tbGliZXhlY2Q9KiB8IC0tbGliZXhlYz0qIFwNCiAgfCAt
LWxpYmV4ZT0qIHwgLS1saWJleD0qIHwgLS1saWJlPSopDQogICAgbGliZXhlY2Rpcj0iJGFjX29w
dGFyZyIgOzsNCg0KICAtbG9jYWxzdGF0ZWRpciB8IC0tbG9jYWxzdGF0ZWRpciB8IC0tbG9jYWxz
dGF0ZWRpIHwgLS1sb2NhbHN0YXRlZCBcDQogIHwgLS1sb2NhbHN0YXRlIHwgLS1sb2NhbHN0YXQg
fCAtLWxvY2Fsc3RhIHwgLS1sb2NhbHN0IFwNCiAgfCAtLWxvY2FscyB8IC0tbG9jYWwgfCAtLWxv
Y2EgfCAtLWxvYyB8IC0tbG8pDQogICAgYWNfcHJldj1sb2NhbHN0YXRlZGlyIDs7DQogIC1sb2Nh
bHN0YXRlZGlyPSogfCAtLWxvY2Fsc3RhdGVkaXI9KiB8IC0tbG9jYWxzdGF0ZWRpPSogfCAtLWxv
Y2Fsc3RhdGVkPSogXA0KICB8IC0tbG9jYWxzdGF0ZT0qIHwgLS1sb2NhbHN0YXQ9KiB8IC0tbG9j
YWxzdGE9KiB8IC0tbG9jYWxzdD0qIFwNCiAgfCAtLWxvY2Fscz0qIHwgLS1sb2NhbD0qIHwgLS1s
b2NhPSogfCAtLWxvYz0qIHwgLS1sbz0qKQ0KICAgIGxvY2Fsc3RhdGVkaXI9IiRhY19vcHRhcmci
IDs7DQoNCiAgLW1hbmRpciB8IC0tbWFuZGlyIHwgLS1tYW5kaSB8IC0tbWFuZCB8IC0tbWFuIHwg
LS1tYSB8IC0tbSkNCiAgICBhY19wcmV2PW1hbmRpciA7Ow0KICAtbWFuZGlyPSogfCAtLW1hbmRp
cj0qIHwgLS1tYW5kaT0qIHwgLS1tYW5kPSogfCAtLW1hbj0qIHwgLS1tYT0qIHwgLS1tPSopDQog
ICAgbWFuZGlyPSIkYWNfb3B0YXJnIiA7Ow0KDQogIC1uZnAgfCAtLW5mcCB8IC0tbmYpDQogICAg
IyBPYnNvbGV0ZTsgdXNlIC0td2l0aG91dC1mcC4NCiAgICB3aXRoX2ZwPW5vIDs7DQoNCiAgLW5v
LWNyZWF0ZSB8IC0tbm8tY3JlYXRlIHwgLS1uby1jcmVhdCB8IC0tbm8tY3JlYSB8IC0tbm8tY3Jl
IFwNCiAgfCAtLW5vLWNyIHwgLS1uby1jKQ0KICAgIG5vX2NyZWF0ZT15ZXMgOzsNCg0KICAtbm8t
cmVjdXJzaW9uIHwgLS1uby1yZWN1cnNpb24gfCAtLW5vLXJlY3Vyc2lvIHwgLS1uby1yZWN1cnNp
IFwNCiAgfCAtLW5vLXJlY3VycyB8IC0tbm8tcmVjdXIgfCAtLW5vLXJlY3UgfCAtLW5vLXJlYyB8
IC0tbm8tcmUgfCAtLW5vLXIpDQogICAgbm9fcmVjdXJzaW9uPXllcyA7Ow0KDQogIC1vbGRpbmNs
dWRlZGlyIHwgLS1vbGRpbmNsdWRlZGlyIHwgLS1vbGRpbmNsdWRlZGkgfCAtLW9sZGluY2x1ZGVk
IFwNCiAgfCAtLW9sZGluY2x1ZGUgfCAtLW9sZGluY2x1ZCB8IC0tb2xkaW5jbHUgfCAtLW9sZGlu
Y2wgfCAtLW9sZGluYyBcDQogIHwgLS1vbGRpbiB8IC0tb2xkaSB8IC0tb2xkIHwgLS1vbCB8IC0t
bykNCiAgICBhY19wcmV2PW9sZGluY2x1ZGVkaXIgOzsNCiAgLW9sZGluY2x1ZGVkaXI9KiB8IC0t
b2xkaW5jbHVkZWRpcj0qIHwgLS1vbGRpbmNsdWRlZGk9KiB8IC0tb2xkaW5jbHVkZWQ9KiBcDQog
IHwgLS1vbGRpbmNsdWRlPSogfCAtLW9sZGluY2x1ZD0qIHwgLS1vbGRpbmNsdT0qIHwgLS1vbGRp
bmNsPSogfCAtLW9sZGluYz0qIFwNCiAgfCAtLW9sZGluPSogfCAtLW9sZGk9KiB8IC0tb2xkPSog
fCAtLW9sPSogfCAtLW89KikNCiAgICBvbGRpbmNsdWRlZGlyPSIkYWNfb3B0YXJnIiA7Ow0KDQog
IC1wcmVmaXggfCAtLXByZWZpeCB8IC0tcHJlZmkgfCAtLXByZWYgfCAtLXByZSB8IC0tcHIgfCAt
LXApDQogICAgYWNfcHJldj1wcmVmaXggOzsNCiAgLXByZWZpeD0qIHwgLS1wcmVmaXg9KiB8IC0t
cHJlZmk9KiB8IC0tcHJlZj0qIHwgLS1wcmU9KiB8IC0tcHI9KiB8IC0tcD0qKQ0KICAgIHByZWZp
eD0iJGFjX29wdGFyZyIgOzsNCg0KICAtcHJvZ3JhbS1wcmVmaXggfCAtLXByb2dyYW0tcHJlZml4
IHwgLS1wcm9ncmFtLXByZWZpIHwgLS1wcm9ncmFtLXByZWYgXA0KICB8IC0tcHJvZ3JhbS1wcmUg
fCAtLXByb2dyYW0tcHIgfCAtLXByb2dyYW0tcCkNCiAgICBhY19wcmV2PXByb2dyYW1fcHJlZml4
IDs7DQogIC1wcm9ncmFtLXByZWZpeD0qIHwgLS1wcm9ncmFtLXByZWZpeD0qIHwgLS1wcm9ncmFt
LXByZWZpPSogXA0KICB8IC0tcHJvZ3JhbS1wcmVmPSogfCAtLXByb2dyYW0tcHJlPSogfCAtLXBy
b2dyYW0tcHI9KiB8IC0tcHJvZ3JhbS1wPSopDQogICAgcHJvZ3JhbV9wcmVmaXg9IiRhY19vcHRh
cmciIDs7DQoNCiAgLXByb2dyYW0tc3VmZml4IHwgLS1wcm9ncmFtLXN1ZmZpeCB8IC0tcHJvZ3Jh
bS1zdWZmaSB8IC0tcHJvZ3JhbS1zdWZmIFwNCiAgfCAtLXByb2dyYW0tc3VmIHwgLS1wcm9ncmFt
LXN1IHwgLS1wcm9ncmFtLXMpDQogICAgYWNfcHJldj1wcm9ncmFtX3N1ZmZpeCA7Ow0KICAtcHJv
Z3JhbS1zdWZmaXg9KiB8IC0tcHJvZ3JhbS1zdWZmaXg9KiB8IC0tcHJvZ3JhbS1zdWZmaT0qIFwN
CiAgfCAtLXByb2dyYW0tc3VmZj0qIHwgLS1wcm9ncmFtLXN1Zj0qIHwgLS1wcm9ncmFtLXN1PSog
fCAtLXByb2dyYW0tcz0qKQ0KICAgIHByb2dyYW1fc3VmZml4PSIkYWNfb3B0YXJnIiA7Ow0KDQog
IC1wcm9ncmFtLXRyYW5zZm9ybS1uYW1lIHwgLS1wcm9ncmFtLXRyYW5zZm9ybS1uYW1lIFwNCiAg
fCAtLXByb2dyYW0tdHJhbnNmb3JtLW5hbSB8IC0tcHJvZ3JhbS10cmFuc2Zvcm0tbmEgXA0KICB8
IC0tcHJvZ3JhbS10cmFuc2Zvcm0tbiB8IC0tcHJvZ3JhbS10cmFuc2Zvcm0tIFwNCiAgfCAtLXBy
b2dyYW0tdHJhbnNmb3JtIHwgLS1wcm9ncmFtLXRyYW5zZm9yIFwNCiAgfCAtLXByb2dyYW0tdHJh
bnNmbyB8IC0tcHJvZ3JhbS10cmFuc2YgXA0KICB8IC0tcHJvZ3JhbS10cmFucyB8IC0tcHJvZ3Jh
bS10cmFuIFwNCiAgfCAtLXByb2dyLXRyYSB8IC0tcHJvZ3JhbS10ciB8IC0tcHJvZ3JhbS10KQ0K
ICAgIGFjX3ByZXY9cHJvZ3JhbV90cmFuc2Zvcm1fbmFtZSA7Ow0KICAtcHJvZ3JhbS10cmFuc2Zv
cm0tbmFtZT0qIHwgLS1wcm9ncmFtLXRyYW5zZm9ybS1uYW1lPSogXA0KICB8IC0tcHJvZ3JhbS10
cmFuc2Zvcm0tbmFtPSogfCAtLXByb2dyYW0tdHJhbnNmb3JtLW5hPSogXA0KICB8IC0tcHJvZ3Jh
bS10cmFuc2Zvcm0tbj0qIHwgLS1wcm9ncmFtLXRyYW5zZm9ybS09KiBcDQogIHwgLS1wcm9ncmFt
LXRyYW5zZm9ybT0qIHwgLS1wcm9ncmFtLXRyYW5zZm9yPSogXA0KICB8IC0tcHJvZ3JhbS10cmFu
c2ZvPSogfCAtLXByb2dyYW0tdHJhbnNmPSogXA0KICB8IC0tcHJvZ3JhbS10cmFucz0qIHwgLS1w
cm9ncmFtLXRyYW49KiBcDQogIHwgLS1wcm9nci10cmE9KiB8IC0tcHJvZ3JhbS10cj0qIHwgLS1w
cm9ncmFtLXQ9KikNCiAgICBwcm9ncmFtX3RyYW5zZm9ybV9uYW1lPSIkYWNfb3B0YXJnIiA7Ow0K
DQogIC1xIHwgLXF1aWV0IHwgLS1xdWlldCB8IC0tcXVpZSB8IC0tcXVpIHwgLS1xdSB8IC0tcSBc
DQogIHwgLXNpbGVudCB8IC0tc2lsZW50IHwgLS1zaWxlbiB8IC0tc2lsZSB8IC0tc2lsKQ0KICAg
IHNpbGVudD15ZXMgOzsNCg0KICAtc2JpbmRpciB8IC0tc2JpbmRpciB8IC0tc2JpbmRpIHwgLS1z
YmluZCB8IC0tc2JpbiB8IC0tc2JpIHwgLS1zYikNCiAgICBhY19wcmV2PXNiaW5kaXIgOzsNCiAg
LXNiaW5kaXI9KiB8IC0tc2JpbmRpcj0qIHwgLS1zYmluZGk9KiB8IC0tc2JpbmQ9KiB8IC0tc2Jp
bj0qIFwNCiAgfCAtLXNiaT0qIHwgLS1zYj0qKQ0KICAgIHNiaW5kaXI9IiRhY19vcHRhcmciIDs7
DQoNCiAgLXNoYXJlZHN0YXRlZGlyIHwgLS1zaGFyZWRzdGF0ZWRpciB8IC0tc2hhcmVkc3RhdGVk
aSBcDQogIHwgLS1zaGFyZWRzdGF0ZWQgfCAtLXNoYXJlZHN0YXRlIHwgLS1zaGFyZWRzdGF0IHwg
LS1zaGFyZWRzdGEgXA0KICB8IC0tc2hhcmVkc3QgfCAtLXNoYXJlZHMgfCAtLXNoYXJlZCB8IC0t
c2hhcmUgfCAtLXNoYXIgXA0KICB8IC0tc2hhIHwgLS1zaCkNCiAgICBhY19wcmV2PXNoYXJlZHN0
YXRlZGlyIDs7DQogIC1zaGFyZWRzdGF0ZWRpcj0qIHwgLS1zaGFyZWRzdGF0ZWRpcj0qIHwgLS1z
aGFyZWRzdGF0ZWRpPSogXA0KICB8IC0tc2hhcmVkc3RhdGVkPSogfCAtLXNoYXJlZHN0YXRlPSog
fCAtLXNoYXJlZHN0YXQ9KiB8IC0tc2hhcmVkc3RhPSogXA0KICB8IC0tc2hhcmVkc3Q9KiB8IC0t
c2hhcmVkcz0qIHwgLS1zaGFyZWQ9KiB8IC0tc2hhcmU9KiB8IC0tc2hhcj0qIFwNCiAgfCAtLXNo
YT0qIHwgLS1zaD0qKQ0KICAgIHNoYXJlZHN0YXRlZGlyPSIkYWNfb3B0YXJnIiA7Ow0KDQogIC1z
aXRlIHwgLS1zaXRlIHwgLS1zaXQpDQogICAgYWNfcHJldj1zaXRlIDs7DQogIC1zaXRlPSogfCAt
LXNpdGU9KiB8IC0tc2l0PSopDQogICAgc2l0ZT0iJGFjX29wdGFyZyIgOzsNCg0KICAtc3JjZGly
IHwgLS1zcmNkaXIgfCAtLXNyY2RpIHwgLS1zcmNkIHwgLS1zcmMgfCAtLXNyKQ0KICAgIGFjX3By
ZXY9c3JjZGlyIDs7DQogIC1zcmNkaXI9KiB8IC0tc3JjZGlyPSogfCAtLXNyY2RpPSogfCAtLXNy
Y2Q9KiB8IC0tc3JjPSogfCAtLXNyPSopDQogICAgc3JjZGlyPSIkYWNfb3B0YXJnIiA7Ow0KDQog
IC1zeXNjb25mZGlyIHwgLS1zeXNjb25mZGlyIHwgLS1zeXNjb25mZGkgfCAtLXN5c2NvbmZkIHwg
LS1zeXNjb25mIFwNCiAgfCAtLXN5c2NvbiB8IC0tc3lzY28gfCAtLXN5c2MgfCAtLXN5cyB8IC0t
c3kpDQogICAgYWNfcHJldj1zeXNjb25mZGlyIDs7DQogIC1zeXNjb25mZGlyPSogfCAtLXN5c2Nv
bmZkaXI9KiB8IC0tc3lzY29uZmRpPSogfCAtLXN5c2NvbmZkPSogfCAtLXN5c2NvbmY9KiBcDQog
IHwgLS1zeXNjb249KiB8IC0tc3lzY289KiB8IC0tc3lzYz0qIHwgLS1zeXM9KiB8IC0tc3k9KikN
CiAgICBzeXNjb25mZGlyPSIkYWNfb3B0YXJnIiA7Ow0KDQogIC10YXJnZXQgfCAtLXRhcmdldCB8
IC0tdGFyZ2UgfCAtLXRhcmcgfCAtLXRhciB8IC0tdGEgfCAtLXQpDQogICAgYWNfcHJldj10YXJn
ZXQgOzsNCiAgLXRhcmdldD0qIHwgLS10YXJnZXQ9KiB8IC0tdGFyZ2U9KiB8IC0tdGFyZz0qIHwg
LS10YXI9KiB8IC0tdGE9KiB8IC0tdD0qKQ0KICAgIHRhcmdldD0iJGFjX29wdGFyZyIgOzsNCg0K
ICAtdiB8IC12ZXJib3NlIHwgLS12ZXJib3NlIHwgLS12ZXJib3MgfCAtLXZlcmJvIHwgLS12ZXJi
KQ0KICAgIHZlcmJvc2U9eWVzIDs7DQoNCiAgLXZlcnNpb24gfCAtLXZlcnNpb24gfCAtLXZlcnNp
byB8IC0tdmVyc2kgfCAtLXZlcnMpDQogICAgZWNobyAiY29uZmlndXJlIGdlbmVyYXRlZCBieSBh
dXRvY29uZiB2ZXJzaW9uIDIuMTMiDQogICAgZXhpdCAwIDs7DQoNCiAgLXdpdGgtKiB8IC0td2l0
aC0qKQ0KICAgIGFjX3BhY2thZ2U9YGVjaG8gJGFjX29wdGlvbnxzZWQgLWUgJ3MvLSp3aXRoLS8v
JyAtZSAncy89LiovLydgDQogICAgIyBSZWplY3QgbmFtZXMgdGhhdCBhcmUgbm90IHZhbGlkIHNo
ZWxsIHZhcmlhYmxlIG5hbWVzLg0KICAgIGlmIHRlc3QgLW4gImBlY2hvICRhY19wYWNrYWdlfCBz
ZWQgJ3MvWy1fYS16QS1aMC05XS8vZydgIjsgdGhlbg0KICAgICAgeyBlY2hvICJjb25maWd1cmU6
IGVycm9yOiAkYWNfcGFja2FnZTogaW52YWxpZCBwYWNrYWdlIG5hbWUiIDE+JjI7IGV4aXQgMTsg
fQ0KICAgIGZpDQogICAgYWNfcGFja2FnZT1gZWNobyAkYWNfcGFja2FnZXwgc2VkICdzLy0vXy9n
J2ANCiAgICBjYXNlICIkYWNfb3B0aW9uIiBpbg0KICAgICAgKj0qKSA7Ow0KICAgICAgKikgYWNf
b3B0YXJnPXllcyA7Ow0KICAgIGVzYWMNCiAgICBldmFsICJ3aXRoXyR7YWNfcGFja2FnZX09JyRh
Y19vcHRhcmcnIiA7Ow0KDQogIC13aXRob3V0LSogfCAtLXdpdGhvdXQtKikNCiAgICBhY19wYWNr
YWdlPWBlY2hvICRhY19vcHRpb258c2VkIC1lICdzLy0qd2l0aG91dC0vLydgDQogICAgIyBSZWpl
Y3QgbmFtZXMgdGhhdCBhcmUgbm90IHZhbGlkIHNoZWxsIHZhcmlhYmxlIG5hbWVzLg0KICAgIGlm
IHRlc3QgLW4gImBlY2hvICRhY19wYWNrYWdlfCBzZWQgJ3MvWy1hLXpBLVowLTlfXS8vZydgIjsg
dGhlbg0KICAgICAgeyBlY2hvICJjb25maWd1cmU6IGVycm9yOiAkYWNfcGFja2FnZTogaW52YWxp
ZCBwYWNrYWdlIG5hbWUiIDE+JjI7IGV4aXQgMTsgfQ0KICAgIGZpDQogICAgYWNfcGFja2FnZT1g
ZWNobyAkYWNfcGFja2FnZXwgc2VkICdzLy0vXy9nJ2ANCiAgICBldmFsICJ3aXRoXyR7YWNfcGFj
a2FnZX09bm8iIDs7DQoNCiAgLS14KQ0KICAgICMgT2Jzb2xldGU7IHVzZSAtLXdpdGgteC4NCiAg
ICB3aXRoX3g9eWVzIDs7DQoNCiAgLXgtaW5jbHVkZXMgfCAtLXgtaW5jbHVkZXMgfCAtLXgtaW5j
bHVkZSB8IC0teC1pbmNsdWQgfCAtLXgtaW5jbHUgXA0KICB8IC0teC1pbmNsIHwgLS14LWluYyB8
IC0teC1pbiB8IC0teC1pKQ0KICAgIGFjX3ByZXY9eF9pbmNsdWRlcyA7Ow0KICAteC1pbmNsdWRl
cz0qIHwgLS14LWluY2x1ZGVzPSogfCAtLXgtaW5jbHVkZT0qIHwgLS14LWluY2x1ZD0qIHwgLS14
LWluY2x1PSogXA0KICB8IC0teC1pbmNsPSogfCAtLXgtaW5jPSogfCAtLXgtaW49KiB8IC0teC1p
PSopDQogICAgeF9pbmNsdWRlcz0iJGFjX29wdGFyZyIgOzsNCg0KICAteC1saWJyYXJpZXMgfCAt
LXgtbGlicmFyaWVzIHwgLS14LWxpYnJhcmllIHwgLS14LWxpYnJhcmkgXA0KICB8IC0teC1saWJy
YXIgfCAtLXgtbGlicmEgfCAtLXgtbGliciB8IC0teC1saWIgfCAtLXgtbGkgfCAtLXgtbCkNCiAg
ICBhY19wcmV2PXhfbGlicmFyaWVzIDs7DQogIC14LWxpYnJhcmllcz0qIHwgLS14LWxpYnJhcmll
cz0qIHwgLS14LWxpYnJhcmllPSogfCAtLXgtbGlicmFyaT0qIFwNCiAgfCAtLXgtbGlicmFyPSog
fCAtLXgtbGlicmE9KiB8IC0teC1saWJyPSogfCAtLXgtbGliPSogfCAtLXgtbGk9KiB8IC0teC1s
PSopDQogICAgeF9saWJyYXJpZXM9IiRhY19vcHRhcmciIDs7DQoNCiAgLSopIHsgZWNobyAiY29u
ZmlndXJlOiBlcnJvcjogJGFjX29wdGlvbjogaW52YWxpZCBvcHRpb247IHVzZSAtLWhlbHAgdG8g
c2hvdyB1c2FnZSIgMT4mMjsgZXhpdCAxOyB9DQogICAgOzsNCg0KICAqKQ0KICAgIGlmIHRlc3Qg
LW4gImBlY2hvICRhY19vcHRpb258IHNlZCAncy9bLWEtejAtOS5dLy9nJ2AiOyB0aGVuDQogICAg
ICBlY2hvICJjb25maWd1cmU6IHdhcm5pbmc6ICRhY19vcHRpb246IGludmFsaWQgaG9zdCB0eXBl
IiAxPiYyDQogICAgZmkNCiAgICBpZiB0ZXN0ICJ4JG5vbm9wdCIgIT0geE5PTkU7IHRoZW4NCiAg
ICAgIHsgZWNobyAiY29uZmlndXJlOiBlcnJvcjogY2FuIG9ubHkgY29uZmlndXJlIGZvciBvbmUg
aG9zdCBhbmQgb25lIHRhcmdldCBhdCBhIHRpbWUiIDE+JjI7IGV4aXQgMTsgfQ0KICAgIGZpDQog
ICAgbm9ub3B0PSIkYWNfb3B0aW9uIg0KICAgIDs7DQoNCiAgZXNhYw0KZG9uZQ0KDQppZiB0ZXN0
IC1uICIkYWNfcHJldiI7IHRoZW4NCiAgeyBlY2hvICJjb25maWd1cmU6IGVycm9yOiBtaXNzaW5n
IGFyZ3VtZW50IHRvIC0tYGVjaG8gJGFjX3ByZXYgfCBzZWQgJ3MvXy8tL2cnYCIgMT4mMjsgZXhp
dCAxOyB9DQpmaQ0KDQp0cmFwICdybSAtZnIgY29uZnRlc3QqIGNvbmZkZWZzKiBjb3JlIGNvcmUu
KiAqLmNvcmUgJGFjX2NsZWFuX2ZpbGVzOyBleGl0IDEnIDEgMiAxNQ0KDQojIEZpbGUgZGVzY3Jp
cHRvciB1c2FnZToNCiMgMCBzdGFuZGFyZCBpbnB1dA0KIyAxIGZpbGUgY3JlYXRpb24NCiMgMiBl
cnJvcnMgYW5kIHdhcm5pbmdzDQojIDMgc29tZSBzeXN0ZW1zIG1heSBvcGVuIGl0IHRvIC9kZXYv
dHR5DQojIDQgdXNlZCBvbiB0aGUgS3Vib3RhIFRpdGFuDQojIDYgY2hlY2tpbmcgZm9yLi4uIG1l
c3NhZ2VzIGFuZCByZXN1bHRzDQojIDUgY29tcGlsZXIgbWVzc2FnZXMgc2F2ZWQgaW4gY29uZmln
LmxvZw0KaWYgdGVzdCAiJHNpbGVudCIgPSB5ZXM7IHRoZW4NCiAgZXhlYyA2Pi9kZXYvbnVsbA0K
ZWxzZQ0KICBleGVjIDY+JjENCmZpDQpleGVjIDU+Li9jb25maWcubG9nDQoNCmVjaG8gIlwNClRo
aXMgZmlsZSBjb250YWlucyBhbnkgbWVzc2FnZXMgcHJvZHVjZWQgYnkgY29tcGlsZXJzIHdoaWxl
DQpydW5uaW5nIGNvbmZpZ3VyZSwgdG8gYWlkIGRlYnVnZ2luZyBpZiBjb25maWd1cmUgbWFrZXMg
YSBtaXN0YWtlLg0KIiAxPiY1DQoNCiMgU3RyaXAgb3V0IC0tbm8tY3JlYXRlIGFuZCAtLW5vLXJl
Y3Vyc2lvbiBzbyB0aGV5IGRvIG5vdCBwaWxlIHVwLg0KIyBBbHNvIHF1b3RlIGFueSBhcmdzIGNv
bnRhaW5pbmcgc2hlbGwgbWV0YWNoYXJhY3RlcnMuDQphY19jb25maWd1cmVfYXJncz0NCmZvciBh
Y19hcmcNCmRvDQogIGNhc2UgIiRhY19hcmciIGluDQogIC1uby1jcmVhdGUgfCAtLW5vLWNyZWF0
ZSB8IC0tbm8tY3JlYXQgfCAtLW5vLWNyZWEgfCAtLW5vLWNyZSBcDQogIHwgLS1uby1jciB8IC0t
bm8tYykgOzsNCiAgLW5vLXJlY3Vyc2lvbiB8IC0tbm8tcmVjdXJzaW9uIHwgLS1uby1yZWN1cnNp
byB8IC0tbm8tcmVjdXJzaSBcDQogIHwgLS1uby1yZWN1cnMgfCAtLW5vLXJlY3VyIHwgLS1uby1y
ZWN1IHwgLS1uby1yZWMgfCAtLW5vLXJlIHwgLS1uby1yKSA7Ow0KICAqIiAiKnwqIgkiKnwqW1xb
XF1cflwjXCRcXlwmXCpcKFwpXHtcfVxcXHxcO1w8XD5cP10qKQ0KICBhY19jb25maWd1cmVfYXJn
cz0iJGFjX2NvbmZpZ3VyZV9hcmdzICckYWNfYXJnJyIgOzsNCiAgKikgYWNfY29uZmlndXJlX2Fy
Z3M9IiRhY19jb25maWd1cmVfYXJncyAkYWNfYXJnIiA7Ow0KICBlc2FjDQpkb25lDQoNCiMgTkxT
IG51aXNhbmNlcy4NCiMgT25seSBzZXQgdGhlc2UgdG8gQyBpZiBhbHJlYWR5IHNldC4gIFRoZXNl
IG11c3Qgbm90IGJlIHNldCB1bmNvbmRpdGlvbmFsbHkNCiMgYmVjYXVzZSBub3QgYWxsIHN5c3Rl
bXMgdW5kZXJzdGFuZCBlLmcuIExBTkc9QyAobm90YWJseSBTQ08pLg0KIyBGaXhpbmcgTENfTUVT
U0FHRVMgcHJldmVudHMgU29sYXJpcyBzaCBmcm9tIHRyYW5zbGF0aW5nIHZhciB2YWx1ZXMgaW4g
YHNldCchDQojIE5vbi1DIExDX0NUWVBFIHZhbHVlcyBicmVhayB0aGUgY3R5cGUgY2hlY2suDQpp
ZiB0ZXN0ICIke0xBTkcrc2V0fSIgICA9IHNldDsgdGhlbiBMQU5HPUM7ICAgZXhwb3J0IExBTkc7
ICAgZmkNCmlmIHRlc3QgIiR7TENfQUxMK3NldH0iID0gc2V0OyB0aGVuIExDX0FMTD1DOyBleHBv
cnQgTENfQUxMOyBmaQ0KaWYgdGVzdCAiJHtMQ19NRVNTQUdFUytzZXR9IiA9IHNldDsgdGhlbiBM
Q19NRVNTQUdFUz1DOyBleHBvcnQgTENfTUVTU0FHRVM7IGZpDQppZiB0ZXN0ICIke0xDX0NUWVBF
K3NldH0iICAgID0gc2V0OyB0aGVuIExDX0NUWVBFPUM7ICAgIGV4cG9ydCBMQ19DVFlQRTsgICAg
ZmkNCg0KIyBjb25mZGVmcy5oIGF2b2lkcyBPUyBjb21tYW5kIGxpbmUgbGVuZ3RoIGxpbWl0cyB0
aGF0IERFRlMgY2FuIGV4Y2VlZC4NCnJtIC1yZiBjb25mdGVzdCogY29uZmRlZnMuaA0KIyBBSVgg
Y3BwIGxvc2VzIG9uIGFuIGVtcHR5IGZpbGUsIHNvIG1ha2Ugc3VyZSBpdCBjb250YWlucyBhdCBs
ZWFzdCBhIG5ld2xpbmUuDQplY2hvID4gY29uZmRlZnMuaA0KDQojIEEgZmlsZW5hbWUgdW5pcXVl
IHRvIHRoaXMgcGFja2FnZSwgcmVsYXRpdmUgdG8gdGhlIGRpcmVjdG9yeSB0aGF0DQojIGNvbmZp
Z3VyZSBpcyBpbiwgd2hpY2ggd2UgY2FuIGxvb2sgZm9yIHRvIGZpbmQgb3V0IGlmIHNyY2RpciBp
cyBjb3JyZWN0Lg0KYWNfdW5pcXVlX2ZpbGU9bWdpbml0L21naW5pdC5jDQoNCiMgRmluZCB0aGUg
c291cmNlIGZpbGVzLCBpZiBsb2NhdGlvbiB3YXMgbm90IHNwZWNpZmllZC4NCmlmIHRlc3QgLXog
IiRzcmNkaXIiOyB0aGVuDQogIGFjX3NyY2Rpcl9kZWZhdWx0ZWQ9eWVzDQogICMgVHJ5IHRoZSBk
aXJlY3RvcnkgY29udGFpbmluZyB0aGlzIHNjcmlwdCwgdGhlbiBpdHMgcGFyZW50Lg0KICBhY19w
cm9nPSQwDQogIGFjX2NvbmZkaXI9YGVjaG8gJGFjX3Byb2d8c2VkICdzJS9bXi9dW14vXSokJSUn
YA0KICB0ZXN0ICJ4JGFjX2NvbmZkaXIiID0gIngkYWNfcHJvZyIgJiYgYWNfY29uZmRpcj0uDQog
IHNyY2Rpcj0kYWNfY29uZmRpcg0KICBpZiB0ZXN0ICEgLXIgJHNyY2Rpci8kYWNfdW5pcXVlX2Zp
bGU7IHRoZW4NCiAgICBzcmNkaXI9Li4NCiAgZmkNCmVsc2UNCiAgYWNfc3JjZGlyX2RlZmF1bHRl
ZD1ubw0KZmkNCmlmIHRlc3QgISAtciAkc3JjZGlyLyRhY191bmlxdWVfZmlsZTsgdGhlbg0KICBp
ZiB0ZXN0ICIkYWNfc3JjZGlyX2RlZmF1bHRlZCIgPSB5ZXM7IHRoZW4NCiAgICB7IGVjaG8gImNv
bmZpZ3VyZTogZXJyb3I6IGNhbiBub3QgZmluZCBzb3VyY2VzIGluICRhY19jb25mZGlyIG9yIC4u
IiAxPiYyOyBleGl0IDE7IH0NCiAgZWxzZQ0KICAgIHsgZWNobyAiY29uZmlndXJlOiBlcnJvcjog
Y2FuIG5vdCBmaW5kIHNvdXJjZXMgaW4gJHNyY2RpciIgMT4mMjsgZXhpdCAxOyB9DQogIGZpDQpm
aQ0Kc3JjZGlyPWBlY2hvICIke3NyY2Rpcn0iIHwgc2VkICdzJVwoW14vXVwpLyokJVwxJSdgDQoN
CiMgUHJlZmVyIGV4cGxpY2l0bHkgc2VsZWN0ZWQgZmlsZSB0byBhdXRvbWF0aWNhbGx5IHNlbGVj
dGVkIG9uZXMuDQppZiB0ZXN0IC16ICIkQ09ORklHX1NJVEUiOyB0aGVuDQogIGlmIHRlc3QgIngk
cHJlZml4IiAhPSB4Tk9ORTsgdGhlbg0KICAgIENPTkZJR19TSVRFPSIkcHJlZml4L3NoYXJlL2Nv
bmZpZy5zaXRlICRwcmVmaXgvZXRjL2NvbmZpZy5zaXRlIg0KICBlbHNlDQogICAgQ09ORklHX1NJ
VEU9IiRhY19kZWZhdWx0X3ByZWZpeC9zaGFyZS9jb25maWcuc2l0ZSAkYWNfZGVmYXVsdF9wcmVm
aXgvZXRjL2NvbmZpZy5zaXRlIg0KICBmaQ0KZmkNCmZvciBhY19zaXRlX2ZpbGUgaW4gJENPTkZJ
R19TSVRFOyBkbw0KICBpZiB0ZXN0IC1yICIkYWNfc2l0ZV9maWxlIjsgdGhlbg0KICAgIGVjaG8g
ImxvYWRpbmcgc2l0ZSBzY3JpcHQgJGFjX3NpdGVfZmlsZSINCiAgICAuICIkYWNfc2l0ZV9maWxl
Ig0KICBmaQ0KZG9uZQ0KDQppZiB0ZXN0IC1yICIkY2FjaGVfZmlsZSI7IHRoZW4NCiAgZWNobyAi
bG9hZGluZyBjYWNoZSAkY2FjaGVfZmlsZSINCiAgLiAkY2FjaGVfZmlsZQ0KZWxzZQ0KICBlY2hv
ICJjcmVhdGluZyBjYWNoZSAkY2FjaGVfZmlsZSINCiAgPiAkY2FjaGVfZmlsZQ0KZmkNCg0KYWNf
ZXh0PWMNCiMgQ0ZMQUdTIGlzIG5vdCBpbiBhY19jcHAgYmVjYXVzZSAtZywgLU8sIGV0Yy4gYXJl
IG5vdCB2YWxpZCBjcHAgb3B0aW9ucy4NCmFjX2NwcD0nJENQUCAkQ1BQRkxBR1MnDQphY19jb21w
aWxlPScke0NDLWNjfSAtYyAkQ0ZMQUdTICRDUFBGTEFHUyBjb25mdGVzdC4kYWNfZXh0IDE+JjUn
DQphY19saW5rPScke0NDLWNjfSAtbyBjb25mdGVzdCR7YWNfZXhlZXh0fSAkQ0ZMQUdTICRDUFBG
TEFHUyAkTERGTEFHUyBjb25mdGVzdC4kYWNfZXh0ICRMSUJTIDE+JjUnDQpjcm9zc19jb21waWxp
bmc9JGFjX2N2X3Byb2dfY2NfY3Jvc3MNCg0KYWNfZXhlZXh0PQ0KYWNfb2JqZXh0PW8NCmlmIChl
Y2hvICJ0ZXN0aW5nXGMiOyBlY2hvIDEsMiwzKSB8IGdyZXAgYyA+L2Rldi9udWxsOyB0aGVuDQog
ICMgU3RhcmRlbnQgVmlzdHJhIFNWUjQgZ3JlcCBsYWNrcyAtZSwgc2F5cyBnaGF6aUBjYWlwLnJ1
dGdlcnMuZWR1Lg0KICBpZiAoZWNobyAtbiB0ZXN0aW5nOyBlY2hvIDEsMiwzKSB8IHNlZCBzLy1u
L3huLyB8IGdyZXAgeG4gPi9kZXYvbnVsbDsgdGhlbg0KICAgIGFjX249IGFjX2M9Jw0KJyBhY190
PScJJw0KICBlbHNlDQogICAgYWNfbj0tbiBhY19jPSBhY190PQ0KICBmaQ0KZWxzZQ0KICBhY19u
PSBhY19jPSdcYycgYWNfdD0NCmZpDQoNCg0KDQphY19hdXhfZGlyPQ0KZm9yIGFjX2RpciBpbiAk
c3JjZGlyICRzcmNkaXIvLi4gJHNyY2Rpci8uLi8uLjsgZG8NCiAgaWYgdGVzdCAtZiAkYWNfZGly
L2luc3RhbGwtc2g7IHRoZW4NCiAgICBhY19hdXhfZGlyPSRhY19kaXINCiAgICBhY19pbnN0YWxs
X3NoPSIkYWNfYXV4X2Rpci9pbnN0YWxsLXNoIC1jIg0KICAgIGJyZWFrDQogIGVsaWYgdGVzdCAt
ZiAkYWNfZGlyL2luc3RhbGwuc2g7IHRoZW4NCiAgICBhY19hdXhfZGlyPSRhY19kaXINCiAgICBh
Y19pbnN0YWxsX3NoPSIkYWNfYXV4X2Rpci9pbnN0YWxsLnNoIC1jIg0KICAgIGJyZWFrDQogIGZp
DQpkb25lDQppZiB0ZXN0IC16ICIkYWNfYXV4X2RpciI7IHRoZW4NCiAgeyBlY2hvICJjb25maWd1
cmU6IGVycm9yOiBjYW4gbm90IGZpbmQgaW5zdGFsbC1zaCBvciBpbnN0YWxsLnNoIGluICRzcmNk
aXIgJHNyY2Rpci8uLiAkc3JjZGlyLy4uLy4uIiAxPiYyOyBleGl0IDE7IH0NCmZpDQphY19jb25m
aWdfZ3Vlc3M9JGFjX2F1eF9kaXIvY29uZmlnLmd1ZXNzDQphY19jb25maWdfc3ViPSRhY19hdXhf
ZGlyL2NvbmZpZy5zdWINCmFjX2NvbmZpZ3VyZT0kYWNfYXV4X2Rpci9jb25maWd1cmUgIyBUaGlz
IHNob3VsZCBiZSBDeWdudXMgY29uZmlndXJlLg0KDQoNCiMgRG8gc29tZSBlcnJvciBjaGVja2lu
ZyBhbmQgZGVmYXVsdGluZyBmb3IgdGhlIGhvc3QgYW5kIHRhcmdldCB0eXBlLg0KIyBUaGUgaW5w
dXRzIGFyZToNCiMgICAgY29uZmlndXJlIC0taG9zdD1IT1NUIC0tdGFyZ2V0PVRBUkdFVCAtLWJ1
aWxkPUJVSUxEIE5PTk9QVA0KIw0KIyBUaGUgcnVsZXMgYXJlOg0KIyAxLiBZb3UgYXJlIG5vdCBh
bGxvd2VkIHRvIHNwZWNpZnkgLS1ob3N0LCAtLXRhcmdldCwgYW5kIG5vbm9wdCBhdCB0aGUNCiMg
ICAgc2FtZSB0aW1lLg0KIyAyLiBIb3N0IGRlZmF1bHRzIHRvIG5vbm9wdC4NCiMgMy4gSWYgbm9u
b3B0IGlzIG5vdCBzcGVjaWZpZWQsIHRoZW4gaG9zdCBkZWZhdWx0cyB0byB0aGUgY3VycmVudCBo
b3N0LA0KIyAgICBhcyBkZXRlcm1pbmVkIGJ5IGNvbmZpZy5ndWVzcy4NCiMgNC4gVGFyZ2V0IGFu
ZCBidWlsZCBkZWZhdWx0IHRvIG5vbm9wdC4NCiMgNS4gSWYgbm9ub3B0IGlzIG5vdCBzcGVjaWZp
ZWQsIHRoZW4gdGFyZ2V0IGFuZCBidWlsZCBkZWZhdWx0IHRvIGhvc3QuDQoNCiMgVGhlIGFsaWFz
ZXMgc2F2ZSB0aGUgbmFtZXMgdGhlIHVzZXIgc3VwcGxpZWQsIHdoaWxlICRob3N0IGV0Yy4NCiMg
d2lsbCBnZXQgY2Fub25pY2FsaXplZC4NCmNhc2UgJGhvc3QtLS0kdGFyZ2V0LS0tJG5vbm9wdCBp
bg0KTk9ORS0tLSotLS0qIHwgKi0tLU5PTkUtLS0qIHwgKi0tLSotLS1OT05FKSA7Ow0KKikgeyBl
Y2hvICJjb25maWd1cmU6IGVycm9yOiBjYW4gb25seSBjb25maWd1cmUgZm9yIG9uZSBob3N0IGFu
ZCBvbmUgdGFyZ2V0IGF0IGEgdGltZSIgMT4mMjsgZXhpdCAxOyB9IDs7DQplc2FjDQoNCg0KIyBN
YWtlIHN1cmUgd2UgY2FuIHJ1biBjb25maWcuc3ViLg0KaWYgJHtDT05GSUdfU0hFTEwtL2Jpbi9z
aH0gJGFjX2NvbmZpZ19zdWIgc3VuNCA+L2Rldi9udWxsIDI+JjE7IHRoZW4gOg0KZWxzZSB7IGVj
aG8gImNvbmZpZ3VyZTogZXJyb3I6IGNhbiBub3QgcnVuICRhY19jb25maWdfc3ViIiAxPiYyOyBl
eGl0IDE7IH0NCmZpDQoNCmVjaG8gJGFjX24gImNoZWNraW5nIGhvc3Qgc3lzdGVtIHR5cGUiIi4u
LiAkYWNfYyIgMT4mNg0KZWNobyAiY29uZmlndXJlOjU3MzogY2hlY2tpbmcgaG9zdCBzeXN0ZW0g
dHlwZSIgPiY1DQoNCmhvc3RfYWxpYXM9JGhvc3QNCmNhc2UgIiRob3N0X2FsaWFzIiBpbg0KTk9O
RSkNCiAgY2FzZSAkbm9ub3B0IGluDQogIE5PTkUpDQogICAgaWYgaG9zdF9hbGlhcz1gJHtDT05G
SUdfU0hFTEwtL2Jpbi9zaH0gJGFjX2NvbmZpZ19ndWVzc2A7IHRoZW4gOg0KICAgIGVsc2UgeyBl
Y2hvICJjb25maWd1cmU6IGVycm9yOiBjYW4gbm90IGd1ZXNzIGhvc3QgdHlwZTsgeW91IG11c3Qg
c3BlY2lmeSBvbmUiIDE+JjI7IGV4aXQgMTsgfQ0KICAgIGZpIDs7DQogICopIGhvc3RfYWxpYXM9
JG5vbm9wdCA7Ow0KICBlc2FjIDs7DQplc2FjDQoNCmhvc3Q9YCR7Q09ORklHX1NIRUxMLS9iaW4v
c2h9ICRhY19jb25maWdfc3ViICRob3N0X2FsaWFzYA0KaG9zdF9jcHU9YGVjaG8gJGhvc3QgfCBz
ZWQgJ3MvXlwoW14tXSpcKS1cKFteLV0qXCktXCguKlwpJC9cMS8nYA0KaG9zdF92ZW5kb3I9YGVj
aG8gJGhvc3QgfCBzZWQgJ3MvXlwoW14tXSpcKS1cKFteLV0qXCktXCguKlwpJC9cMi8nYA0KaG9z
dF9vcz1gZWNobyAkaG9zdCB8IHNlZCAncy9eXChbXi1dKlwpLVwoW14tXSpcKS1cKC4qXCkkL1wz
LydgDQplY2hvICIkYWNfdCIiJGhvc3QiIDE+JjYNCg0KZWNobyAkYWNfbiAiY2hlY2tpbmcgdGFy
Z2V0IHN5c3RlbSB0eXBlIiIuLi4gJGFjX2MiIDE+JjYNCmVjaG8gImNvbmZpZ3VyZTo1OTQ6IGNo
ZWNraW5nIHRhcmdldCBzeXN0ZW0gdHlwZSIgPiY1DQoNCnRhcmdldF9hbGlhcz0kdGFyZ2V0DQpj
YXNlICIkdGFyZ2V0X2FsaWFzIiBpbg0KTk9ORSkNCiAgY2FzZSAkbm9ub3B0IGluDQogIE5PTkUp
IHRhcmdldF9hbGlhcz0kaG9zdF9hbGlhcyA7Ow0KICAqKSB0YXJnZXRfYWxpYXM9JG5vbm9wdCA7
Ow0KICBlc2FjIDs7DQplc2FjDQoNCnRhcmdldD1gJHtDT05GSUdfU0hFTEwtL2Jpbi9zaH0gJGFj
X2NvbmZpZ19zdWIgJHRhcmdldF9hbGlhc2ANCnRhcmdldF9jcHU9YGVjaG8gJHRhcmdldCB8IHNl
ZCAncy9eXChbXi1dKlwpLVwoW14tXSpcKS1cKC4qXCkkL1wxLydgDQp0YXJnZXRfdmVuZG9yPWBl
Y2hvICR0YXJnZXQgfCBzZWQgJ3MvXlwoW14tXSpcKS1cKFteLV0qXCktXCguKlwpJC9cMi8nYA0K
dGFyZ2V0X29zPWBlY2hvICR0YXJnZXQgfCBzZWQgJ3MvXlwoW14tXSpcKS1cKFteLV0qXCktXCgu
KlwpJC9cMy8nYA0KZWNobyAiJGFjX3QiIiR0YXJnZXQiIDE+JjYNCg0KZWNobyAkYWNfbiAiY2hl
Y2tpbmcgYnVpbGQgc3lzdGVtIHR5cGUiIi4uLiAkYWNfYyIgMT4mNg0KZWNobyAiY29uZmlndXJl
OjYxMjogY2hlY2tpbmcgYnVpbGQgc3lzdGVtIHR5cGUiID4mNQ0KDQpidWlsZF9hbGlhcz0kYnVp
bGQNCmNhc2UgIiRidWlsZF9hbGlhcyIgaW4NCk5PTkUpDQogIGNhc2UgJG5vbm9wdCBpbg0KICBO
T05FKSBidWlsZF9hbGlhcz0kaG9zdF9hbGlhcyA7Ow0KICAqKSBidWlsZF9hbGlhcz0kbm9ub3B0
IDs7DQogIGVzYWMgOzsNCmVzYWMNCg0KYnVpbGQ9YCR7Q09ORklHX1NIRUxMLS9iaW4vc2h9ICRh
Y19jb25maWdfc3ViICRidWlsZF9hbGlhc2ANCmJ1aWxkX2NwdT1gZWNobyAkYnVpbGQgfCBzZWQg
J3MvXlwoW14tXSpcKS1cKFteLV0qXCktXCguKlwpJC9cMS8nYA0KYnVpbGRfdmVuZG9yPWBlY2hv
ICRidWlsZCB8IHNlZCAncy9eXChbXi1dKlwpLVwoW14tXSpcKS1cKC4qXCkkL1wyLydgDQpidWls
ZF9vcz1gZWNobyAkYnVpbGQgfCBzZWQgJ3MvXlwoW14tXSpcKS1cKFteLV0qXCktXCguKlwpJC9c
My8nYA0KZWNobyAiJGFjX3QiIiRidWlsZCIgMT4mNg0KDQp0ZXN0ICIkaG9zdF9hbGlhcyIgIT0g
IiR0YXJnZXRfYWxpYXMiICYmDQogIHRlc3QgIiRwcm9ncmFtX3ByZWZpeCRwcm9ncmFtX3N1ZmZp
eCRwcm9ncmFtX3RyYW5zZm9ybV9uYW1lIiA9IFwNCiAgICBOT05FTk9ORXMseCx4LCAmJg0KICBw
cm9ncmFtX3ByZWZpeD0ke3RhcmdldF9hbGlhc30tDQoNCg0KIyBNYWtlIHN1cmUgd2UgY2FuIHJ1
biBjb25maWcuc3ViLg0KaWYgJHtDT05GSUdfU0hFTEwtL2Jpbi9zaH0gJGFjX2NvbmZpZ19zdWIg
c3VuNCA+L2Rldi9udWxsIDI+JjE7IHRoZW4gOg0KZWxzZSB7IGVjaG8gImNvbmZpZ3VyZTogZXJy
b3I6IGNhbiBub3QgcnVuICRhY19jb25maWdfc3ViIiAxPiYyOyBleGl0IDE7IH0NCmZpDQoNCmVj
aG8gJGFjX24gImNoZWNraW5nIGhvc3Qgc3lzdGVtIHR5cGUiIi4uLiAkYWNfYyIgMT4mNg0KZWNo
byAiY29uZmlndXJlOjY0MTogY2hlY2tpbmcgaG9zdCBzeXN0ZW0gdHlwZSIgPiY1DQoNCmhvc3Rf
YWxpYXM9JGhvc3QNCmNhc2UgIiRob3N0X2FsaWFzIiBpbg0KTk9ORSkNCiAgY2FzZSAkbm9ub3B0
IGluDQogIE5PTkUpDQogICAgaWYgaG9zdF9hbGlhcz1gJHtDT05GSUdfU0hFTEwtL2Jpbi9zaH0g
JGFjX2NvbmZpZ19ndWVzc2A7IHRoZW4gOg0KICAgIGVsc2UgeyBlY2hvICJjb25maWd1cmU6IGVy
cm9yOiBjYW4gbm90IGd1ZXNzIGhvc3QgdHlwZTsgeW91IG11c3Qgc3BlY2lmeSBvbmUiIDE+JjI7
IGV4aXQgMTsgfQ0KICAgIGZpIDs7DQogICopIGhvc3RfYWxpYXM9JG5vbm9wdCA7Ow0KICBlc2Fj
IDs7DQplc2FjDQoNCmhvc3Q9YCR7Q09ORklHX1NIRUxMLS9iaW4vc2h9ICRhY19jb25maWdfc3Vi
ICRob3N0X2FsaWFzYA0KaG9zdF9jcHU9YGVjaG8gJGhvc3QgfCBzZWQgJ3MvXlwoW14tXSpcKS1c
KFteLV0qXCktXCguKlwpJC9cMS8nYA0KaG9zdF92ZW5kb3I9YGVjaG8gJGhvc3QgfCBzZWQgJ3Mv
XlwoW14tXSpcKS1cKFteLV0qXCktXCguKlwpJC9cMi8nYA0KaG9zdF9vcz1gZWNobyAkaG9zdCB8
IHNlZCAncy9eXChbXi1dKlwpLVwoW14tXSpcKS1cKC4qXCkkL1wzLydgDQplY2hvICIkYWNfdCIi
JGhvc3QiIDE+JjYNCg0KDQplY2hvICRhY19uICJjaGVja2luZyB3aGV0aGVyICR7TUFLRS1tYWtl
fSBzZXRzIFwke01BS0V9IiIuLi4gJGFjX2MiIDE+JjYNCmVjaG8gImNvbmZpZ3VyZTo2NjM6IGNo
ZWNraW5nIHdoZXRoZXIgJHtNQUtFLW1ha2V9IHNldHMgXCR7TUFLRX0iID4mNQ0Kc2V0IGR1bW15
ICR7TUFLRS1tYWtlfTsgYWNfbWFrZT1gZWNobyAiJDIiIHwgc2VkICd5JS4vKy0lX19wXyUnYA0K
aWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X3Byb2dfbWFrZV8ke2FjX21ha2V9X3Nl
dCcrc2V0fSdgXCIgPSBzZXQiOyB0aGVuDQogIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAx
PiY2DQplbHNlDQogIGNhdCA+IGNvbmZ0ZXN0bWFrZSA8PFxFT0YNCmFsbDoNCglAZWNobyAnYWNf
bWFrZXRlbXA9IiR7TUFLRX0iJw0KRU9GDQojIEdOVSBtYWtlIHNvbWV0aW1lcyBwcmludHMgIm1h
a2VbMV06IEVudGVyaW5nLi4uIiwgd2hpY2ggd291bGQgY29uZnVzZSB1cy4NCmV2YWwgYCR7TUFL
RS1tYWtlfSAtZiBjb25mdGVzdG1ha2UgMj4vZGV2L251bGwgfCBncmVwIHRlbXA9YA0KaWYgdGVz
dCAtbiAiJGFjX21ha2V0ZW1wIjsgdGhlbg0KICBldmFsIGFjX2N2X3Byb2dfbWFrZV8ke2FjX21h
a2V9X3NldD15ZXMNCmVsc2UNCiAgZXZhbCBhY19jdl9wcm9nX21ha2VfJHthY19tYWtlfV9zZXQ9
bm8NCmZpDQpybSAtZiBjb25mdGVzdG1ha2UNCmZpDQppZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyRh
Y19jdl9wcm9nX21ha2VfJyR7YWNfbWFrZX1fc2V0YFwiID0geWVzIjsgdGhlbg0KICBlY2hvICIk
YWNfdCIieWVzIiAxPiY2DQogIFNFVF9NQUtFPQ0KZWxzZQ0KICBlY2hvICIkYWNfdCIibm8iIDE+
JjYNCiAgU0VUX01BS0U9Ik1BS0U9JHtNQUtFLW1ha2V9Ig0KZmkNCg0KIyBFeHRyYWN0IHRoZSBm
aXJzdCB3b3JkIG9mICJnY2MiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdz
Lg0Kc2V0IGR1bW15IGdjYzsgYWNfd29yZD0kMg0KZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yICRh
Y193b3JkIiIuLi4gJGFjX2MiIDE+JjYNCmVjaG8gImNvbmZpZ3VyZTo2OTI6IGNoZWNraW5nIGZv
ciAkYWNfd29yZCIgPiY1DQppZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3ZfcHJvZ19D
Qycrc2V0fSdgXCIgPSBzZXQiOyB0aGVuDQogIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAx
PiY2DQplbHNlDQogIGlmIHRlc3QgLW4gIiRDQyI7IHRoZW4NCiAgYWNfY3ZfcHJvZ19DQz0iJEND
IiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4NCmVsc2UNCiAgSUZTPSIke0lGUz0g
CX0iOyBhY19zYXZlX2lmcz0iJElGUyI7IElGUz0iOiINCiAgYWNfZHVtbXk9IiRQQVRIIg0KICBm
b3IgYWNfZGlyIGluICRhY19kdW1teTsgZG8NCiAgICB0ZXN0IC16ICIkYWNfZGlyIiAmJiBhY19k
aXI9Lg0KICAgIGlmIHRlc3QgLWYgJGFjX2Rpci8kYWNfd29yZDsgdGhlbg0KICAgICAgYWNfY3Zf
cHJvZ19DQz0iZ2NjIg0KICAgICAgYnJlYWsNCiAgICBmaQ0KICBkb25lDQogIElGUz0iJGFjX3Nh
dmVfaWZzIg0KZmkNCmZpDQpDQz0iJGFjX2N2X3Byb2dfQ0MiDQppZiB0ZXN0IC1uICIkQ0MiOyB0
aGVuDQogIGVjaG8gIiRhY190IiIkQ0MiIDE+JjYNCmVsc2UNCiAgZWNobyAiJGFjX3QiIm5vIiAx
PiY2DQpmaQ0KDQppZiB0ZXN0IC16ICIkQ0MiOyB0aGVuDQogICMgRXh0cmFjdCB0aGUgZmlyc3Qg
d29yZCBvZiAiY2MiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLg0Kc2V0
IGR1bW15IGNjOyBhY193b3JkPSQyDQplY2hvICRhY19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQi
Ii4uLiAkYWNfYyIgMT4mNg0KZWNobyAiY29uZmlndXJlOjcyMjogY2hlY2tpbmcgZm9yICRhY193
b3JkIiA+JjUNCmlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9wcm9nX0NDJytzZXR9
J2BcIiA9IHNldCI7IHRoZW4NCiAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYNCmVs
c2UNCiAgaWYgdGVzdCAtbiAiJENDIjsgdGhlbg0KICBhY19jdl9wcm9nX0NDPSIkQ0MiICMgTGV0
IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0Lg0KZWxzZQ0KICBJRlM9IiR7SUZTPSAJfSI7IGFj
X3NhdmVfaWZzPSIkSUZTIjsgSUZTPSI6Ig0KICBhY19wcm9nX3JlamVjdGVkPW5vDQogIGFjX2R1
bW15PSIkUEFUSCINCiAgZm9yIGFjX2RpciBpbiAkYWNfZHVtbXk7IGRvDQogICAgdGVzdCAteiAi
JGFjX2RpciIgJiYgYWNfZGlyPS4NCiAgICBpZiB0ZXN0IC1mICRhY19kaXIvJGFjX3dvcmQ7IHRo
ZW4NCiAgICAgIGlmIHRlc3QgIiRhY19kaXIvJGFjX3dvcmQiID0gIi91c3IvdWNiL2NjIjsgdGhl
bg0KICAgICAgICBhY19wcm9nX3JlamVjdGVkPXllcw0KCWNvbnRpbnVlDQogICAgICBmaQ0KICAg
ICAgYWNfY3ZfcHJvZ19DQz0iY2MiDQogICAgICBicmVhaw0KICAgIGZpDQogIGRvbmUNCiAgSUZT
PSIkYWNfc2F2ZV9pZnMiDQppZiB0ZXN0ICRhY19wcm9nX3JlamVjdGVkID0geWVzOyB0aGVuDQog
ICMgV2UgZm91bmQgYSBib2dvbiBpbiB0aGUgcGF0aCwgc28gbWFrZSBzdXJlIHdlIG5ldmVyIHVz
ZSBpdC4NCiAgc2V0IGR1bW15ICRhY19jdl9wcm9nX0NDDQogIHNoaWZ0DQogIGlmIHRlc3QgJCMg
LWd0IDA7IHRoZW4NCiAgICAjIFdlIGNob3NlIGEgZGlmZmVyZW50IGNvbXBpbGVyIGZyb20gdGhl
IGJvZ3VzIG9uZS4NCiAgICAjIEhvd2V2ZXIsIGl0IGhhcyB0aGUgc2FtZSBiYXNlbmFtZSwgc28g
dGhlIGJvZ29uIHdpbGwgYmUgY2hvc2VuDQogICAgIyBmaXJzdCBpZiB3ZSBzZXQgQ0MgdG8ganVz
dCB0aGUgYmFzZW5hbWU7IHVzZSB0aGUgZnVsbCBmaWxlIG5hbWUuDQogICAgc2hpZnQNCiAgICBz
ZXQgZHVtbXkgIiRhY19kaXIvJGFjX3dvcmQiICIkQCINCiAgICBzaGlmdA0KICAgIGFjX2N2X3By
b2dfQ0M9IiRAIg0KICBmaQ0KZmkNCmZpDQpmaQ0KQ0M9IiRhY19jdl9wcm9nX0NDIg0KaWYgdGVz
dCAtbiAiJENDIjsgdGhlbg0KICBlY2hvICIkYWNfdCIiJENDIiAxPiY2DQplbHNlDQogIGVjaG8g
IiRhY190IiJubyIgMT4mNg0KZmkNCg0KICBpZiB0ZXN0IC16ICIkQ0MiOyB0aGVuDQogICAgY2Fz
ZSAiYHVuYW1lIC1zYCIgaW4NCiAgICAqd2luMzIqIHwgKldJTjMyKikNCiAgICAgICMgRXh0cmFj
dCB0aGUgZmlyc3Qgd29yZCBvZiAiY2wiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0
aCBhcmdzLg0Kc2V0IGR1bW15IGNsOyBhY193b3JkPSQyDQplY2hvICRhY19uICJjaGVja2luZyBm
b3IgJGFjX3dvcmQiIi4uLiAkYWNfYyIgMT4mNg0KZWNobyAiY29uZmlndXJlOjc3MzogY2hlY2tp
bmcgZm9yICRhY193b3JkIiA+JjUNCmlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9w
cm9nX0NDJytzZXR9J2BcIiA9IHNldCI7IHRoZW4NCiAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFj
X2MiIDE+JjYNCmVsc2UNCiAgaWYgdGVzdCAtbiAiJENDIjsgdGhlbg0KICBhY19jdl9wcm9nX0ND
PSIkQ0MiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0Lg0KZWxzZQ0KICBJRlM9IiR7
SUZTPSAJfSI7IGFjX3NhdmVfaWZzPSIkSUZTIjsgSUZTPSI6Ig0KICBhY19kdW1teT0iJFBBVEgi
DQogIGZvciBhY19kaXIgaW4gJGFjX2R1bW15OyBkbw0KICAgIHRlc3QgLXogIiRhY19kaXIiICYm
IGFjX2Rpcj0uDQogICAgaWYgdGVzdCAtZiAkYWNfZGlyLyRhY193b3JkOyB0aGVuDQogICAgICBh
Y19jdl9wcm9nX0NDPSJjbCINCiAgICAgIGJyZWFrDQogICAgZmkNCiAgZG9uZQ0KICBJRlM9IiRh
Y19zYXZlX2lmcyINCmZpDQpmaQ0KQ0M9IiRhY19jdl9wcm9nX0NDIg0KaWYgdGVzdCAtbiAiJEND
IjsgdGhlbg0KICBlY2hvICIkYWNfdCIiJENDIiAxPiY2DQplbHNlDQogIGVjaG8gIiRhY190IiJu
byIgMT4mNg0KZmkNCiA7Ow0KICAgIGVzYWMNCiAgZmkNCiAgdGVzdCAteiAiJENDIiAmJiB7IGVj
aG8gImNvbmZpZ3VyZTogZXJyb3I6IG5vIGFjY2VwdGFibGUgY2MgZm91bmQgaW4gXCRQQVRIIiAx
PiYyOyBleGl0IDE7IH0NCmZpDQoNCmVjaG8gJGFjX24gImNoZWNraW5nIHdoZXRoZXIgdGhlIEMg
Y29tcGlsZXIgKCRDQyAkQ0ZMQUdTICRMREZMQUdTKSB3b3JrcyIiLi4uICRhY19jIiAxPiY2DQpl
Y2hvICJjb25maWd1cmU6ODA1OiBjaGVja2luZyB3aGV0aGVyIHRoZSBDIGNvbXBpbGVyICgkQ0Mg
JENGTEFHUyAkTERGTEFHUykgd29ya3MiID4mNQ0KDQphY19leHQ9Yw0KIyBDRkxBR1MgaXMgbm90
IGluIGFjX2NwcCBiZWNhdXNlIC1nLCAtTywgZXRjLiBhcmUgbm90IHZhbGlkIGNwcCBvcHRpb25z
Lg0KYWNfY3BwPSckQ1BQICRDUFBGTEFHUycNCmFjX2NvbXBpbGU9JyR7Q0MtY2N9IC1jICRDRkxB
R1MgJENQUEZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgMT4mNScNCmFjX2xpbms9JyR7Q0MtY2N9IC1v
IGNvbmZ0ZXN0JHthY19leGVleHR9ICRDRkxBR1MgJENQUEZMQUdTICRMREZMQUdTIGNvbmZ0ZXN0
LiRhY19leHQgJExJQlMgMT4mNScNCmNyb3NzX2NvbXBpbGluZz0kYWNfY3ZfcHJvZ19jY19jcm9z
cw0KDQpjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8IEVPRg0KDQojbGluZSA4MTYgImNvbmZpZ3Vy
ZSINCiNpbmNsdWRlICJjb25mZGVmcy5oIg0KDQptYWluKCl7cmV0dXJuKDApO30NCkVPRg0KaWYg
eyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo4MjE6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFj
X2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbg0KICBh
Y19jdl9wcm9nX2NjX3dvcmtzPXllcw0KICAjIElmIHdlIGNhbid0IHJ1biBhIHRyaXZpYWwgcHJv
Z3JhbSwgd2UgYXJlIHByb2JhYmx5IHVzaW5nIGEgY3Jvc3MgY29tcGlsZXIuDQogIGlmICguL2Nv
bmZ0ZXN0OyBleGl0KSAyPi9kZXYvbnVsbDsgdGhlbg0KICAgIGFjX2N2X3Byb2dfY2NfY3Jvc3M9
bm8NCiAgZWxzZQ0KICAgIGFjX2N2X3Byb2dfY2NfY3Jvc3M9eWVzDQogIGZpDQplbHNlDQogIGVj
aG8gImNvbmZpZ3VyZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1DQogIGNhdCBjb25mdGVzdC4k
YWNfZXh0ID4mNQ0KICBhY19jdl9wcm9nX2NjX3dvcmtzPW5vDQpmaQ0Kcm0gLWZyIGNvbmZ0ZXN0
Kg0KYWNfZXh0PWMNCiMgQ0ZMQUdTIGlzIG5vdCBpbiBhY19jcHAgYmVjYXVzZSAtZywgLU8sIGV0
Yy4gYXJlIG5vdCB2YWxpZCBjcHAgb3B0aW9ucy4NCmFjX2NwcD0nJENQUCAkQ1BQRkxBR1MnDQph
Y19jb21waWxlPScke0NDLWNjfSAtYyAkQ0ZMQUdTICRDUFBGTEFHUyBjb25mdGVzdC4kYWNfZXh0
IDE+JjUnDQphY19saW5rPScke0NDLWNjfSAtbyBjb25mdGVzdCR7YWNfZXhlZXh0fSAkQ0ZMQUdT
ICRDUFBGTEFHUyAkTERGTEFHUyBjb25mdGVzdC4kYWNfZXh0ICRMSUJTIDE+JjUnDQpjcm9zc19j
b21waWxpbmc9JGFjX2N2X3Byb2dfY2NfY3Jvc3MNCg0KZWNobyAiJGFjX3QiIiRhY19jdl9wcm9n
X2NjX3dvcmtzIiAxPiY2DQppZiB0ZXN0ICRhY19jdl9wcm9nX2NjX3dvcmtzID0gbm87IHRoZW4N
CiAgeyBlY2hvICJjb25maWd1cmU6IGVycm9yOiBpbnN0YWxsYXRpb24gb3IgY29uZmlndXJhdGlv
biBwcm9ibGVtOiBDIGNvbXBpbGVyIGNhbm5vdCBjcmVhdGUgZXhlY3V0YWJsZXMuIiAxPiYyOyBl
eGl0IDE7IH0NCmZpDQplY2hvICRhY19uICJjaGVja2luZyB3aGV0aGVyIHRoZSBDIGNvbXBpbGVy
ICgkQ0MgJENGTEFHUyAkTERGTEFHUykgaXMgYSBjcm9zcy1jb21waWxlciIiLi4uICRhY19jIiAx
PiY2DQplY2hvICJjb25maWd1cmU6ODQ3OiBjaGVja2luZyB3aGV0aGVyIHRoZSBDIGNvbXBpbGVy
ICgkQ0MgJENGTEFHUyAkTERGTEFHUykgaXMgYSBjcm9zcy1jb21waWxlciIgPiY1DQplY2hvICIk
YWNfdCIiJGFjX2N2X3Byb2dfY2NfY3Jvc3MiIDE+JjYNCmNyb3NzX2NvbXBpbGluZz0kYWNfY3Zf
cHJvZ19jY19jcm9zcw0KDQplY2hvICRhY19uICJjaGVja2luZyB3aGV0aGVyIHdlIGFyZSB1c2lu
ZyBHTlUgQyIiLi4uICRhY19jIiAxPiY2DQplY2hvICJjb25maWd1cmU6ODUyOiBjaGVja2luZyB3
aGV0aGVyIHdlIGFyZSB1c2luZyBHTlUgQyIgPiY1DQppZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQn
J3snYWNfY3ZfcHJvZ19nY2MnK3NldH0nYFwiID0gc2V0IjsgdGhlbg0KICBlY2hvICRhY19uICIo
Y2FjaGVkKSAkYWNfYyIgMT4mNg0KZWxzZQ0KICBjYXQgPiBjb25mdGVzdC5jIDw8RU9GDQojaWZk
ZWYgX19HTlVDX18NCiAgeWVzOw0KI2VuZGlmDQpFT0YNCmlmIHsgYWNfdHJ5PScke0NDLWNjfSAt
RSBjb25mdGVzdC5jJzsgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo4NjE6IFwiJGFjX3RyeVwiKSAx
PiY1OyAoZXZhbCAkYWNfdHJ5KSAyPiY1OyB9OyB9IHwgZWdyZXAgeWVzID4vZGV2L251bGwgMj4m
MTsgdGhlbg0KICBhY19jdl9wcm9nX2djYz15ZXMNCmVsc2UNCiAgYWNfY3ZfcHJvZ19nY2M9bm8N
CmZpDQpmaQ0KDQplY2hvICIkYWNfdCIiJGFjX2N2X3Byb2dfZ2NjIiAxPiY2DQoNCmlmIHRlc3Qg
JGFjX2N2X3Byb2dfZ2NjID0geWVzOyB0aGVuDQogIEdDQz15ZXMNCmVsc2UNCiAgR0NDPQ0KZmkN
Cg0KYWNfdGVzdF9DRkxBR1M9IiR7Q0ZMQUdTK3NldH0iDQphY19zYXZlX0NGTEFHUz0iJENGTEFH
UyINCkNGTEFHUz0NCmVjaG8gJGFjX24gImNoZWNraW5nIHdoZXRoZXIgJHtDQy1jY30gYWNjZXB0
cyAtZyIiLi4uICRhY19jIiAxPiY2DQplY2hvICJjb25maWd1cmU6ODgwOiBjaGVja2luZyB3aGV0
aGVyICR7Q0MtY2N9IGFjY2VwdHMgLWciID4mNQ0KaWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7
J2FjX2N2X3Byb2dfY2NfZycrc2V0fSdgXCIgPSBzZXQiOyB0aGVuDQogIGVjaG8gJGFjX24gIihj
YWNoZWQpICRhY19jIiAxPiY2DQplbHNlDQogIGVjaG8gJ3ZvaWQgZigpe30nID4gY29uZnRlc3Qu
Yw0KaWYgdGVzdCAteiAiYCR7Q0MtY2N9IC1nIC1jIGNvbmZ0ZXN0LmMgMj4mMWAiOyB0aGVuDQog
IGFjX2N2X3Byb2dfY2NfZz15ZXMNCmVsc2UNCiAgYWNfY3ZfcHJvZ19jY19nPW5vDQpmaQ0Kcm0g
LWYgY29uZnRlc3QqDQoNCmZpDQoNCmVjaG8gIiRhY190IiIkYWNfY3ZfcHJvZ19jY19nIiAxPiY2
DQppZiB0ZXN0ICIkYWNfdGVzdF9DRkxBR1MiID0gc2V0OyB0aGVuDQogIENGTEFHUz0iJGFjX3Nh
dmVfQ0ZMQUdTIg0KZWxpZiB0ZXN0ICRhY19jdl9wcm9nX2NjX2cgPSB5ZXM7IHRoZW4NCiAgaWYg
dGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4NCiAgICBDRkxBR1M9Ii1nIC1PMiINCiAgZWxzZQ0KICAg
IENGTEFHUz0iLWciDQogIGZpDQplbHNlDQogIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuDQog
ICAgQ0ZMQUdTPSItTzIiDQogIGVsc2UNCiAgICBDRkxBR1M9DQogIGZpDQpmaQ0KDQoNCiMgRmlu
ZCBhIGdvb2QgaW5zdGFsbCBwcm9ncmFtLiAgV2UgcHJlZmVyIGEgQyBwcm9ncmFtIChmYXN0ZXIp
LA0KIyBzbyBvbmUgc2NyaXB0IGlzIGFzIGdvb2QgYXMgYW5vdGhlci4gIEJ1dCBhdm9pZCB0aGUg
YnJva2VuIG9yDQojIGluY29tcGF0aWJsZSB2ZXJzaW9uczoNCiMgU3lzViAvZXRjL2luc3RhbGws
IC91c3Ivc2Jpbi9pbnN0YWxsDQojIFN1bk9TIC91c3IvZXRjL2luc3RhbGwNCiMgSVJJWCAvc2Jp
bi9pbnN0YWxsDQojIEFJWCAvYmluL2luc3RhbGwNCiMgQUlYIDQgL3Vzci9iaW4vaW5zdGFsbGJz
ZCwgd2hpY2ggZG9lc24ndCB3b3JrIHdpdGhvdXQgYSAtZyBmbGFnDQojIEFGUyAvdXNyL2Fmc3dz
L2Jpbi9pbnN0YWxsLCB3aGljaCBtaXNoYW5kbGVzIG5vbmV4aXN0ZW50IGFyZ3MNCiMgU1ZSNCAv
dXNyL3VjYi9pbnN0YWxsLCB3aGljaCB0cmllcyB0byB1c2UgdGhlIG5vbmV4aXN0ZW50IGdyb3Vw
ICJzdGFmZiINCiMgLi9pbnN0YWxsLCB3aGljaCBjYW4gYmUgZXJyb25lb3VzbHkgY3JlYXRlZCBi
eSBtYWtlIGZyb20gLi9pbnN0YWxsLnNoLg0KZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yIGEgQlNE
IGNvbXBhdGlibGUgaW5zdGFsbCIiLi4uICRhY19jIiAxPiY2DQplY2hvICJjb25maWd1cmU6OTI0
OiBjaGVja2luZyBmb3IgYSBCU0QgY29tcGF0aWJsZSBpbnN0YWxsIiA+JjUNCmlmIHRlc3QgLXog
IiRJTlNUQUxMIjsgdGhlbg0KaWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X3BhdGhf
aW5zdGFsbCcrc2V0fSdgXCIgPSBzZXQiOyB0aGVuDQogIGVjaG8gJGFjX24gIihjYWNoZWQpICRh
Y19jIiAxPiY2DQplbHNlDQogICAgSUZTPSIke0lGUz0gCX0iOyBhY19zYXZlX0lGUz0iJElGUyI7
IElGUz0iOiINCiAgZm9yIGFjX2RpciBpbiAkUEFUSDsgZG8NCiAgICAjIEFjY291bnQgZm9yIHBl
b3BsZSB3aG8gcHV0IHRyYWlsaW5nIHNsYXNoZXMgaW4gUEFUSCBlbGVtZW50cy4NCiAgICBjYXNl
ICIkYWNfZGlyLyIgaW4NCiAgICAvfC4vfC4vL3wvZXRjLyp8L3Vzci9zYmluLyp8L3Vzci9ldGMv
Knwvc2Jpbi8qfC91c3IvYWZzd3MvYmluLyp8L3Vzci91Y2IvKikgOzsNCiAgICAqKQ0KICAgICAg
IyBPU0YxIGFuZCBTQ08gT0RUIDMuMCBoYXZlIHRoZWlyIG93biBuYW1lcyBmb3IgaW5zdGFsbC4N
CiAgICAgICMgRG9uJ3QgdXNlIGluc3RhbGxic2QgZnJvbSBPU0Ygc2luY2UgaXQgaW5zdGFsbHMg
c3R1ZmYgYXMgcm9vdA0KICAgICAgIyBieSBkZWZhdWx0Lg0KICAgICAgZm9yIGFjX3Byb2cgaW4g
Z2luc3RhbGwgc2NvaW5zdCBpbnN0YWxsOyBkbw0KICAgICAgICBpZiB0ZXN0IC1mICRhY19kaXIv
JGFjX3Byb2c7IHRoZW4NCgkgIGlmIHRlc3QgJGFjX3Byb2cgPSBpbnN0YWxsICYmDQogICAgICAg
ICAgICBncmVwIGRzcG1zZyAkYWNfZGlyLyRhY19wcm9nID4vZGV2L251bGwgMj4mMTsgdGhlbg0K
CSAgICAjIEFJWCBpbnN0YWxsLiAgSXQgaGFzIGFuIGluY29tcGF0aWJsZSBjYWxsaW5nIGNvbnZl
bnRpb24uDQoJICAgIDoNCgkgIGVsc2UNCgkgICAgYWNfY3ZfcGF0aF9pbnN0YWxsPSIkYWNfZGly
LyRhY19wcm9nIC1jIg0KCSAgICBicmVhayAyDQoJICBmaQ0KCWZpDQogICAgICBkb25lDQogICAg
ICA7Ow0KICAgIGVzYWMNCiAgZG9uZQ0KICBJRlM9IiRhY19zYXZlX0lGUyINCg0KZmkNCiAgaWYg
dGVzdCAiJHthY19jdl9wYXRoX2luc3RhbGwrc2V0fSIgPSBzZXQ7IHRoZW4NCiAgICBJTlNUQUxM
PSIkYWNfY3ZfcGF0aF9pbnN0YWxsIg0KICBlbHNlDQogICAgIyBBcyBhIGxhc3QgcmVzb3J0LCB1
c2UgdGhlIHNsb3cgc2hlbGwgc2NyaXB0LiAgV2UgZG9uJ3QgY2FjaGUgYQ0KICAgICMgcGF0aCBm
b3IgSU5TVEFMTCB3aXRoaW4gYSBzb3VyY2UgZGlyZWN0b3J5LCBiZWNhdXNlIHRoYXQgd2lsbA0K
ICAgICMgYnJlYWsgb3RoZXIgcGFja2FnZXMgdXNpbmcgdGhlIGNhY2hlIGlmIHRoYXQgZGlyZWN0
b3J5IGlzDQogICAgIyByZW1vdmVkLCBvciBpZiB0aGUgcGF0aCBpcyByZWxhdGl2ZS4NCiAgICBJ
TlNUQUxMPSIkYWNfaW5zdGFsbF9zaCINCiAgZmkNCmZpDQplY2hvICIkYWNfdCIiJElOU1RBTEwi
IDE+JjYNCg0KIyBVc2UgdGVzdCAteiBiZWNhdXNlIFN1bk9TNCBzaCBtaXNoYW5kbGVzIGJyYWNl
cyBpbiAke3Zhci12YWx9Lg0KIyBJdCB0aGlua3MgdGhlIGZpcnN0IGNsb3NlIGJyYWNlIGVuZHMg
dGhlIHZhcmlhYmxlIHN1YnN0aXR1dGlvbi4NCnRlc3QgLXogIiRJTlNUQUxMX1BST0dSQU0iICYm
IElOU1RBTExfUFJPR1JBTT0nJHtJTlNUQUxMfScNCg0KdGVzdCAteiAiJElOU1RBTExfU0NSSVBU
IiAmJiBJTlNUQUxMX1NDUklQVD0nJHtJTlNUQUxMX1BST0dSQU19Jw0KDQp0ZXN0IC16ICIkSU5T
VEFMTF9EQVRBIiAmJiBJTlNUQUxMX0RBVEE9JyR7SU5TVEFMTH0gLW0gNjQ0Jw0KDQplY2hvICRh
Y19uICJjaGVja2luZyB3aGV0aGVyIGJ1aWxkIGVudmlyb25tZW50IGlzIHNhbmUiIi4uLiAkYWNf
YyIgMT4mNg0KZWNobyAiY29uZmlndXJlOjk3NzogY2hlY2tpbmcgd2hldGhlciBidWlsZCBlbnZp
cm9ubWVudCBpcyBzYW5lIiA+JjUNCiMgSnVzdCBpbiBjYXNlDQpzbGVlcCAxDQplY2hvIHRpbWVz
dGFtcCA+IGNvbmZ0ZXN0ZmlsZQ0KIyBEbyBgc2V0JyBpbiBhIHN1YnNoZWxsIHNvIHdlIGRvbid0
IGNsb2JiZXIgdGhlIGN1cnJlbnQgc2hlbGwncw0KIyBhcmd1bWVudHMuICBNdXN0IHRyeSAtTCBm
aXJzdCBpbiBjYXNlIGNvbmZpZ3VyZSBpcyBhY3R1YWxseSBhDQojIHN5bWxpbms7IHNvbWUgc3lz
dGVtcyBwbGF5IHdlaXJkIGdhbWVzIHdpdGggdGhlIG1vZCB0aW1lIG9mIHN5bWxpbmtzDQojIChl
ZyBGcmVlQlNEIHJldHVybnMgdGhlIG1vZCB0aW1lIG9mIHRoZSBzeW1saW5rJ3MgY29udGFpbmlu
Zw0KIyBkaXJlY3RvcnkpLg0KaWYgKA0KICAgc2V0IFggYGxzIC1MdCAkc3JjZGlyL2NvbmZpZ3Vy
ZSBjb25mdGVzdGZpbGUgMj4gL2Rldi9udWxsYA0KICAgaWYgdGVzdCAiJCoiID0gIlgiOyB0aGVu
DQogICAgICAjIC1MIGRpZG4ndCB3b3JrLg0KICAgICAgc2V0IFggYGxzIC10ICRzcmNkaXIvY29u
ZmlndXJlIGNvbmZ0ZXN0ZmlsZWANCiAgIGZpDQogICBpZiB0ZXN0ICIkKiIgIT0gIlggJHNyY2Rp
ci9jb25maWd1cmUgY29uZnRlc3RmaWxlIiBcDQogICAgICAmJiB0ZXN0ICIkKiIgIT0gIlggY29u
ZnRlc3RmaWxlICRzcmNkaXIvY29uZmlndXJlIjsgdGhlbg0KDQogICAgICAjIElmIG5laXRoZXIg
bWF0Y2hlZCwgdGhlbiB3ZSBoYXZlIGEgYnJva2VuIGxzLiAgVGhpcyBjYW4gaGFwcGVuDQogICAg
ICAjIGlmLCBmb3IgaW5zdGFuY2UsIENPTkZJR19TSEVMTCBpcyBiYXNoIGFuZCBpdCBpbmhlcml0
cyBhDQogICAgICAjIGJyb2tlbiBscyBhbGlhcyBmcm9tIHRoZSBlbnZpcm9ubWVudC4gIFRoaXMg
aGFzIGFjdHVhbGx5DQogICAgICAjIGhhcHBlbmVkLiAgU3VjaCBhIHN5c3RlbSBjb3VsZCBub3Qg
YmUgY29uc2lkZXJlZCAic2FuZSIuDQogICAgICB7IGVjaG8gImNvbmZpZ3VyZTogZXJyb3I6IGxz
IC10IGFwcGVhcnMgdG8gZmFpbC4gIE1ha2Ugc3VyZSB0aGVyZSBpcyBub3QgYSBicm9rZW4NCmFs
aWFzIGluIHlvdXIgZW52aXJvbm1lbnQiIDE+JjI7IGV4aXQgMTsgfQ0KICAgZmkNCg0KICAgdGVz
dCAiJDIiID0gY29uZnRlc3RmaWxlDQogICApDQp0aGVuDQogICAjIE9rLg0KICAgOg0KZWxzZQ0K
ICAgeyBlY2hvICJjb25maWd1cmU6IGVycm9yOiBuZXdseSBjcmVhdGVkIGZpbGUgaXMgb2xkZXIg
dGhhbiBkaXN0cmlidXRlZCBmaWxlcyENCkNoZWNrIHlvdXIgc3lzdGVtIGNsb2NrIiAxPiYyOyBl
eGl0IDE7IH0NCmZpDQpybSAtZiBjb25mdGVzdCoNCmVjaG8gIiRhY190IiJ5ZXMiIDE+JjYNCmlm
IHRlc3QgIiRwcm9ncmFtX3RyYW5zZm9ybV9uYW1lIiA9IHMseCx4LDsgdGhlbg0KICBwcm9ncmFt
X3RyYW5zZm9ybV9uYW1lPQ0KZWxzZQ0KICAjIERvdWJsZSBhbnkgXCBvciAkLiAgZWNobyBtaWdo
dCBpbnRlcnByZXQgYmFja3NsYXNoZXMuDQogIGNhdCA8PFxFT0ZfU0VEID4gY29uZnRlc3RzZWQN
CnMsXFwsXFxcXCxnOyBzLFwkLCQkLGcNCkVPRl9TRUQNCiAgcHJvZ3JhbV90cmFuc2Zvcm1fbmFt
ZT0iYGVjaG8gJHByb2dyYW1fdHJhbnNmb3JtX25hbWV8c2VkIC1mIGNvbmZ0ZXN0c2VkYCINCiAg
cm0gLWYgY29uZnRlc3RzZWQNCmZpDQp0ZXN0ICIkcHJvZ3JhbV9wcmVmaXgiICE9IE5PTkUgJiYN
CiAgcHJvZ3JhbV90cmFuc2Zvcm1fbmFtZT0icyxeLCR7cHJvZ3JhbV9wcmVmaXh9LDsgJHByb2dy
YW1fdHJhbnNmb3JtX25hbWUiDQojIFVzZSBhIGRvdWJsZSAkIHNvIG1ha2UgaWdub3JlcyBpdC4N
CnRlc3QgIiRwcm9ncmFtX3N1ZmZpeCIgIT0gTk9ORSAmJg0KICBwcm9ncmFtX3RyYW5zZm9ybV9u
YW1lPSJzLFwkXCQsJHtwcm9ncmFtX3N1ZmZpeH0sOyAkcHJvZ3JhbV90cmFuc2Zvcm1fbmFtZSIN
Cg0KIyBzZWQgd2l0aCBubyBmaWxlIGFyZ3MgcmVxdWlyZXMgYSBwcm9ncmFtLg0KdGVzdCAiJHBy
b2dyYW1fdHJhbnNmb3JtX25hbWUiID0gIiIgJiYgcHJvZ3JhbV90cmFuc2Zvcm1fbmFtZT0icyx4
LHgsIg0KDQoNClBBQ0tBR0U9bWRlDQoNClZFUlNJT049MS4yLjMNCg0KaWYgdGVzdCAiYGNkICRz
cmNkaXIgJiYgcHdkYCIgIT0gImBwd2RgIiAmJiB0ZXN0IC1mICRzcmNkaXIvY29uZmlnLnN0YXR1
czsgdGhlbg0KICB7IGVjaG8gImNvbmZpZ3VyZTogZXJyb3I6IHNvdXJjZSBkaXJlY3RvcnkgYWxy
ZWFkeSBjb25maWd1cmVkOyBydW4gIm1ha2UgZGlzdGNsZWFuIiB0aGVyZSBmaXJzdCIgMT4mMjsg
ZXhpdCAxOyB9DQpmaQ0KY2F0ID4+IGNvbmZkZWZzLmggPDxFT0YNCiNkZWZpbmUgUEFDS0FHRSAi
JFBBQ0tBR0UiDQpFT0YNCg0KY2F0ID4+IGNvbmZkZWZzLmggPDxFT0YNCiNkZWZpbmUgVkVSU0lP
TiAiJFZFUlNJT04iDQpFT0YNCg0KDQoNCm1pc3NpbmdfZGlyPWBjZCAkYWNfYXV4X2RpciAmJiBw
d2RgDQplY2hvICRhY19uICJjaGVja2luZyBmb3Igd29ya2luZyBhY2xvY2FsIiIuLi4gJGFjX2Mi
IDE+JjYNCmVjaG8gImNvbmZpZ3VyZToxMDUzOiBjaGVja2luZyBmb3Igd29ya2luZyBhY2xvY2Fs
IiA+JjUNCiMgUnVuIHRlc3QgaW4gYSBzdWJzaGVsbDsgc29tZSB2ZXJzaW9ucyBvZiBzaCB3aWxs
IHByaW50IGFuIGVycm9yIGlmDQojIGFuIGV4ZWN1dGFibGUgaXMgbm90IGZvdW5kLCBldmVuIGlm
IHN0ZGVyciBpcyByZWRpcmVjdGVkLg0KIyBSZWRpcmVjdCBzdGRpbiB0byBwbGFjYXRlIG9sZGVy
IHZlcnNpb25zIG9mIGF1dG9jb25mLiAgU2lnaC4NCmlmIChhY2xvY2FsIC0tdmVyc2lvbikgPCAv
ZGV2L251bGwgPiAvZGV2L251bGwgMj4mMTsgdGhlbg0KICAgQUNMT0NBTD1hY2xvY2FsDQogICBl
Y2hvICIkYWNfdCIiZm91bmQiIDE+JjYNCmVsc2UNCiAgIEFDTE9DQUw9IiRtaXNzaW5nX2Rpci9t
aXNzaW5nIGFjbG9jYWwiDQogICBlY2hvICIkYWNfdCIibWlzc2luZyIgMT4mNg0KZmkNCg0KZWNo
byAkYWNfbiAiY2hlY2tpbmcgZm9yIHdvcmtpbmcgYXV0b2NvbmYiIi4uLiAkYWNfYyIgMT4mNg0K
ZWNobyAiY29uZmlndXJlOjEwNjY6IGNoZWNraW5nIGZvciB3b3JraW5nIGF1dG9jb25mIiA+JjUN
CiMgUnVuIHRlc3QgaW4gYSBzdWJzaGVsbDsgc29tZSB2ZXJzaW9ucyBvZiBzaCB3aWxsIHByaW50
IGFuIGVycm9yIGlmDQojIGFuIGV4ZWN1dGFibGUgaXMgbm90IGZvdW5kLCBldmVuIGlmIHN0ZGVy
ciBpcyByZWRpcmVjdGVkLg0KIyBSZWRpcmVjdCBzdGRpbiB0byBwbGFjYXRlIG9sZGVyIHZlcnNp
b25zIG9mIGF1dG9jb25mLiAgU2lnaC4NCmlmIChhdXRvY29uZiAtLXZlcnNpb24pIDwgL2Rldi9u
dWxsID4gL2Rldi9udWxsIDI+JjE7IHRoZW4NCiAgIEFVVE9DT05GPWF1dG9jb25mDQogICBlY2hv
ICIkYWNfdCIiZm91bmQiIDE+JjYNCmVsc2UNCiAgIEFVVE9DT05GPSIkbWlzc2luZ19kaXIvbWlz
c2luZyBhdXRvY29uZiINCiAgIGVjaG8gIiRhY190IiJtaXNzaW5nIiAxPiY2DQpmaQ0KDQplY2hv
ICRhY19uICJjaGVja2luZyBmb3Igd29ya2luZyBhdXRvbWFrZSIiLi4uICRhY19jIiAxPiY2DQpl
Y2hvICJjb25maWd1cmU6MTA3OTogY2hlY2tpbmcgZm9yIHdvcmtpbmcgYXV0b21ha2UiID4mNQ0K
IyBSdW4gdGVzdCBpbiBhIHN1YnNoZWxsOyBzb21lIHZlcnNpb25zIG9mIHNoIHdpbGwgcHJpbnQg
YW4gZXJyb3IgaWYNCiMgYW4gZXhlY3V0YWJsZSBpcyBub3QgZm91bmQsIGV2ZW4gaWYgc3RkZXJy
IGlzIHJlZGlyZWN0ZWQuDQojIFJlZGlyZWN0IHN0ZGluIHRvIHBsYWNhdGUgb2xkZXIgdmVyc2lv
bnMgb2YgYXV0b2NvbmYuICBTaWdoLg0KaWYgKGF1dG9tYWtlIC0tdmVyc2lvbikgPCAvZGV2L251
bGwgPiAvZGV2L251bGwgMj4mMTsgdGhlbg0KICAgQVVUT01BS0U9YXV0b21ha2UNCiAgIGVjaG8g
IiRhY190IiJmb3VuZCIgMT4mNg0KZWxzZQ0KICAgQVVUT01BS0U9IiRtaXNzaW5nX2Rpci9taXNz
aW5nIGF1dG9tYWtlIg0KICAgZWNobyAiJGFjX3QiIm1pc3NpbmciIDE+JjYNCmZpDQoNCmVjaG8g
JGFjX24gImNoZWNraW5nIGZvciB3b3JraW5nIGF1dG9oZWFkZXIiIi4uLiAkYWNfYyIgMT4mNg0K
ZWNobyAiY29uZmlndXJlOjEwOTI6IGNoZWNraW5nIGZvciB3b3JraW5nIGF1dG9oZWFkZXIiID4m
NQ0KIyBSdW4gdGVzdCBpbiBhIHN1YnNoZWxsOyBzb21lIHZlcnNpb25zIG9mIHNoIHdpbGwgcHJp
bnQgYW4gZXJyb3IgaWYNCiMgYW4gZXhlY3V0YWJsZSBpcyBub3QgZm91bmQsIGV2ZW4gaWYgc3Rk
ZXJyIGlzIHJlZGlyZWN0ZWQuDQojIFJlZGlyZWN0IHN0ZGluIHRvIHBsYWNhdGUgb2xkZXIgdmVy
c2lvbnMgb2YgYXV0b2NvbmYuICBTaWdoLg0KaWYgKGF1dG9oZWFkZXIgLS12ZXJzaW9uKSA8IC9k
ZXYvbnVsbCA+IC9kZXYvbnVsbCAyPiYxOyB0aGVuDQogICBBVVRPSEVBREVSPWF1dG9oZWFkZXIN
CiAgIGVjaG8gIiRhY190IiJmb3VuZCIgMT4mNg0KZWxzZQ0KICAgQVVUT0hFQURFUj0iJG1pc3Np
bmdfZGlyL21pc3NpbmcgYXV0b2hlYWRlciINCiAgIGVjaG8gIiRhY190IiJtaXNzaW5nIiAxPiY2
DQpmaQ0KDQplY2hvICRhY19uICJjaGVja2luZyBmb3Igd29ya2luZyBtYWtlaW5mbyIiLi4uICRh
Y19jIiAxPiY2DQplY2hvICJjb25maWd1cmU6MTEwNTogY2hlY2tpbmcgZm9yIHdvcmtpbmcgbWFr
ZWluZm8iID4mNQ0KIyBSdW4gdGVzdCBpbiBhIHN1YnNoZWxsOyBzb21lIHZlcnNpb25zIG9mIHNo
IHdpbGwgcHJpbnQgYW4gZXJyb3IgaWYNCiMgYW4gZXhlY3V0YWJsZSBpcyBub3QgZm91bmQsIGV2
ZW4gaWYgc3RkZXJyIGlzIHJlZGlyZWN0ZWQuDQojIFJlZGlyZWN0IHN0ZGluIHRvIHBsYWNhdGUg
b2xkZXIgdmVyc2lvbnMgb2YgYXV0b2NvbmYuICBTaWdoLg0KaWYgKG1ha2VpbmZvIC0tdmVyc2lv
bikgPCAvZGV2L251bGwgPiAvZGV2L251bGwgMj4mMTsgdGhlbg0KICAgTUFLRUlORk89bWFrZWlu
Zm8NCiAgIGVjaG8gIiRhY190IiJmb3VuZCIgMT4mNg0KZWxzZQ0KICAgTUFLRUlORk89IiRtaXNz
aW5nX2Rpci9taXNzaW5nIG1ha2VpbmZvIg0KICAgZWNobyAiJGFjX3QiIm1pc3NpbmciIDE+JjYN
CmZpDQoNCg0KDQplY2hvICRhY19uICJjaGVja2luZyBmb3Igd29ya2luZyBjb25zdCIiLi4uICRh
Y19jIiAxPiY2DQplY2hvICJjb25maWd1cmU6MTEyMDogY2hlY2tpbmcgZm9yIHdvcmtpbmcgY29u
c3QiID4mNQ0KaWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X2NfY29uc3QnK3NldH0n
YFwiID0gc2V0IjsgdGhlbg0KICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNg0KZWxz
ZQ0KICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GDQojbGluZSAxMTI1ICJjb25maWd1cmUi
DQojaW5jbHVkZSAiY29uZmRlZnMuaCINCg0KaW50IG1haW4oKSB7DQoNCi8qIFVsdHJpeCBtaXBz
IGNjIHJlamVjdHMgdGhpcy4gICovDQp0eXBlZGVmIGludCBjaGFyc2V0WzJdOyBjb25zdCBjaGFy
c2V0IHg7DQovKiBTdW5PUyA0LjEuMSBjYyByZWplY3RzIHRoaXMuICAqLw0KY2hhciBjb25zdCAq
Y29uc3QgKmNjcDsNCmNoYXIgKipwOw0KLyogTkVDIFNWUjQuMC4yIG1pcHMgY2MgcmVqZWN0cyB0
aGlzLiAgKi8NCnN0cnVjdCBwb2ludCB7aW50IHgsIHk7fTsNCnN0YXRpYyBzdHJ1Y3QgcG9pbnQg
Y29uc3QgemVybyA9IHswLDB9Ow0KLyogQUlYIFhMIEMgMS4wMi4wLjAgcmVqZWN0cyB0aGlzLg0K
ICAgSXQgZG9lcyBub3QgbGV0IHlvdSBzdWJ0cmFjdCBvbmUgY29uc3QgWCogcG9pbnRlciBmcm9t
IGFub3RoZXIgaW4gYW4gYXJtDQogICBvZiBhbiBpZi1leHByZXNzaW9uIHdob3NlIGlmLXBhcnQg
aXMgbm90IGEgY29uc3RhbnQgZXhwcmVzc2lvbiAqLw0KY29uc3QgY2hhciAqZyA9ICJzdHJpbmci
Ow0KY2NwID0gJmcgKyAoZyA/IGctZyA6IDApOw0KLyogSFBVWCA3LjAgY2MgcmVqZWN0cyB0aGVz
ZS4gKi8NCisrY2NwOw0KcCA9IChjaGFyKiopIGNjcDsNCmNjcCA9IChjaGFyIGNvbnN0ICpjb25z
dCAqKSBwOw0KeyAvKiBTQ08gMy4ydjQgY2MgcmVqZWN0cyB0aGlzLiAgKi8NCiAgY2hhciAqdDsN
CiAgY2hhciBjb25zdCAqcyA9IDAgPyAoY2hhciAqKSAwIDogKGNoYXIgY29uc3QgKikgMDsNCg0K
ICAqdCsrID0gMDsNCn0NCnsgLyogU29tZW9uZSB0aGlua3MgdGhlIFN1biBzdXBwb3NlZGx5LUFO
U0kgY29tcGlsZXIgd2lsbCByZWplY3QgdGhpcy4gICovDQogIGludCB4W10gPSB7MjUsIDE3fTsN
CiAgY29uc3QgaW50ICpmb28gPSAmeFswXTsNCiAgKytmb287DQp9DQp7IC8qIFN1biBTQzEuMCBB
TlNJIGNvbXBpbGVyIHJlamVjdHMgdGhpcyAtLSBidXQgbm90IHRoZSBhYm92ZS4gKi8NCiAgdHlw
ZWRlZiBjb25zdCBpbnQgKmlwdHI7DQogIGlwdHIgcCA9IDA7DQogICsrcDsNCn0NCnsgLyogQUlY
IFhMIEMgMS4wMi4wLjAgcmVqZWN0cyB0aGlzIHNheWluZw0KICAgICAiay5jIiwgbGluZSAyLjI3
OiAxNTA2LTAyNSAoUykgT3BlcmFuZCBtdXN0IGJlIGEgbW9kaWZpYWJsZSBsdmFsdWUuICovDQog
IHN0cnVjdCBzIHsgaW50IGo7IGNvbnN0IGludCAqYXBbM107IH07DQogIHN0cnVjdCBzICpiOyBi
LT5qID0gNTsNCn0NCnsgLyogVUxUUklYLTMyIFYzLjEgKFJldiA5KSB2Y2MgcmVqZWN0cyB0aGlz
ICovDQogIGNvbnN0IGludCBmb28gPSAxMDsNCn0NCg0KOyByZXR1cm4gMDsgfQ0KRU9GDQppZiB7
IChldmFsIGVjaG8gY29uZmlndXJlOjExNzQ6IFwiJGFjX2NvbXBpbGVcIikgMT4mNTsgKGV2YWwg
JGFjX2NvbXBpbGUpIDI+JjU7IH07IHRoZW4NCiAgcm0gLXJmIGNvbmZ0ZXN0Kg0KICBhY19jdl9j
X2NvbnN0PXllcw0KZWxzZQ0KICBlY2hvICJjb25maWd1cmU6IGZhaWxlZCBwcm9ncmFtIHdhczoi
ID4mNQ0KICBjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUNCiAgcm0gLXJmIGNvbmZ0ZXN0Kg0KICBh
Y19jdl9jX2NvbnN0PW5vDQpmaQ0Kcm0gLWYgY29uZnRlc3QqDQpmaQ0KDQplY2hvICIkYWNfdCIi
JGFjX2N2X2NfY29uc3QiIDE+JjYNCmlmIHRlc3QgJGFjX2N2X2NfY29uc3QgPSBubzsgdGhlbg0K
ICBjYXQgPj4gY29uZmRlZnMuaCA8PFxFT0YNCiNkZWZpbmUgY29uc3QgDQpFT0YNCg0KZmkNCg0K
DQplY2hvICRhY19uICJjaGVja2luZyBob3cgdG8gcnVuIHRoZSBDIHByZXByb2Nlc3NvciIiLi4u
ICRhY19jIiAxPiY2DQplY2hvICJjb25maWd1cmU6MTE5NjogY2hlY2tpbmcgaG93IHRvIHJ1biB0
aGUgQyBwcmVwcm9jZXNzb3IiID4mNQ0KIyBPbiBTdW5zLCBzb21ldGltZXMgJENQUCBuYW1lcyBh
IGRpcmVjdG9yeS4NCmlmIHRlc3QgLW4gIiRDUFAiICYmIHRlc3QgLWQgIiRDUFAiOyB0aGVuDQog
IENQUD0NCmZpDQppZiB0ZXN0IC16ICIkQ1BQIjsgdGhlbg0KaWYgZXZhbCAidGVzdCBcImBlY2hv
ICckJyd7J2FjX2N2X3Byb2dfQ1BQJytzZXR9J2BcIiA9IHNldCI7IHRoZW4NCiAgZWNobyAkYWNf
biAiKGNhY2hlZCkgJGFjX2MiIDE+JjYNCmVsc2UNCiAgICAjIFRoaXMgbXVzdCBiZSBpbiBkb3Vi
bGUgcXVvdGVzLCBub3Qgc2luZ2xlIHF1b3RlcywgYmVjYXVzZSBDUFAgbWF5IGdldA0KICAjIHN1
YnN0aXR1dGVkIGludG8gdGhlIE1ha2VmaWxlIGFuZCAiJHtDQy1jY30iIHdpbGwgY29uZnVzZSBt
YWtlLg0KICBDUFA9IiR7Q0MtY2N9IC1FIg0KICAjIE9uIHRoZSBOZVhULCBjYyAtRSBydW5zIHRo
ZSBjb2RlIHRocm91Z2ggdGhlIGNvbXBpbGVyJ3MgcGFyc2VyLA0KICAjIG5vdCBqdXN0IHRocm91
Z2ggY3BwLg0KICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GDQojbGluZSAxMjExICJjb25m
aWd1cmUiDQojaW5jbHVkZSAiY29uZmRlZnMuaCINCiNpbmNsdWRlIDxhc3NlcnQuaD4NClN5bnRh
eCBFcnJvcg0KRU9GDQphY190cnk9IiRhY19jcHAgY29uZnRlc3QuJGFjX2V4dCA+L2Rldi9udWxs
IDI+Y29uZnRlc3Qub3V0Ig0KeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZToxMjE3OiBcIiRhY190cnlc
IikgMT4mNTsgKGV2YWwgJGFjX3RyeSkgMj4mNTsgfQ0KYWNfZXJyPWBncmVwIC12ICdeICorJyBj
b25mdGVzdC5vdXQgfCBncmVwIC12ICJeY29uZnRlc3QuJHthY19leHR9XCQiYA0KaWYgdGVzdCAt
eiAiJGFjX2VyciI7IHRoZW4NCiAgOg0KZWxzZQ0KICBlY2hvICIkYWNfZXJyIiA+JjUNCiAgZWNo
byAiY29uZmlndXJlOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUNCiAgY2F0IGNvbmZ0ZXN0LiRh
Y19leHQgPiY1DQogIHJtIC1yZiBjb25mdGVzdCoNCiAgQ1BQPSIke0NDLWNjfSAtRSAtdHJhZGl0
aW9uYWwtY3BwIg0KICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GDQojbGluZSAxMjI4ICJj
b25maWd1cmUiDQojaW5jbHVkZSAiY29uZmRlZnMuaCINCiNpbmNsdWRlIDxhc3NlcnQuaD4NClN5
bnRheCBFcnJvcg0KRU9GDQphY190cnk9IiRhY19jcHAgY29uZnRlc3QuJGFjX2V4dCA+L2Rldi9u
dWxsIDI+Y29uZnRlc3Qub3V0Ig0KeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZToxMjM0OiBcIiRhY190
cnlcIikgMT4mNTsgKGV2YWwgJGFjX3RyeSkgMj4mNTsgfQ0KYWNfZXJyPWBncmVwIC12ICdeICor
JyBjb25mdGVzdC5vdXQgfCBncmVwIC12ICJeY29uZnRlc3QuJHthY19leHR9XCQiYA0KaWYgdGVz
dCAteiAiJGFjX2VyciI7IHRoZW4NCiAgOg0KZWxzZQ0KICBlY2hvICIkYWNfZXJyIiA+JjUNCiAg
ZWNobyAiY29uZmlndXJlOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUNCiAgY2F0IGNvbmZ0ZXN0
LiRhY19leHQgPiY1DQogIHJtIC1yZiBjb25mdGVzdCoNCiAgQ1BQPSIke0NDLWNjfSAtbm9sb2dv
IC1FIg0KICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GDQojbGluZSAxMjQ1ICJjb25maWd1
cmUiDQojaW5jbHVkZSAiY29uZmRlZnMuaCINCiNpbmNsdWRlIDxhc3NlcnQuaD4NClN5bnRheCBF
cnJvcg0KRU9GDQphY190cnk9IiRhY19jcHAgY29uZnRlc3QuJGFjX2V4dCA+L2Rldi9udWxsIDI+
Y29uZnRlc3Qub3V0Ig0KeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZToxMjUxOiBcIiRhY190cnlcIikg
MT4mNTsgKGV2YWwgJGFjX3RyeSkgMj4mNTsgfQ0KYWNfZXJyPWBncmVwIC12ICdeICorJyBjb25m
dGVzdC5vdXQgfCBncmVwIC12ICJeY29uZnRlc3QuJHthY19leHR9XCQiYA0KaWYgdGVzdCAteiAi
JGFjX2VyciI7IHRoZW4NCiAgOg0KZWxzZQ0KICBlY2hvICIkYWNfZXJyIiA+JjUNCiAgZWNobyAi
Y29uZmlndXJlOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUNCiAgY2F0IGNvbmZ0ZXN0LiRhY19l
eHQgPiY1DQogIHJtIC1yZiBjb25mdGVzdCoNCiAgQ1BQPS9saWIvY3BwDQpmaQ0Kcm0gLWYgY29u
ZnRlc3QqDQpmaQ0Kcm0gLWYgY29uZnRlc3QqDQpmaQ0Kcm0gLWYgY29uZnRlc3QqDQogIGFjX2N2
X3Byb2dfQ1BQPSIkQ1BQIg0KZmkNCiAgQ1BQPSIkYWNfY3ZfcHJvZ19DUFAiDQplbHNlDQogIGFj
X2N2X3Byb2dfQ1BQPSIkQ1BQIg0KZmkNCmVjaG8gIiRhY190IiIkQ1BQIiAxPiY2DQoNCmVjaG8g
JGFjX24gImNoZWNraW5nIGZvciBBTlNJIEMgaGVhZGVyIGZpbGVzIiIuLi4gJGFjX2MiIDE+JjYN
CmVjaG8gImNvbmZpZ3VyZToxMjc2OiBjaGVja2luZyBmb3IgQU5TSSBDIGhlYWRlciBmaWxlcyIg
PiY1DQppZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3ZfaGVhZGVyX3N0ZGMnK3NldH0n
YFwiID0gc2V0IjsgdGhlbg0KICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNg0KZWxz
ZQ0KICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GDQojbGluZSAxMjgxICJjb25maWd1cmUi
DQojaW5jbHVkZSAiY29uZmRlZnMuaCINCiNpbmNsdWRlIDxzdGRsaWIuaD4NCiNpbmNsdWRlIDxz
dGRhcmcuaD4NCiNpbmNsdWRlIDxzdHJpbmcuaD4NCiNpbmNsdWRlIDxmbG9hdC5oPg0KRU9GDQph
Y190cnk9IiRhY19jcHAgY29uZnRlc3QuJGFjX2V4dCA+L2Rldi9udWxsIDI+Y29uZnRlc3Qub3V0
Ig0KeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZToxMjg5OiBcIiRhY190cnlcIikgMT4mNTsgKGV2YWwg
JGFjX3RyeSkgMj4mNTsgfQ0KYWNfZXJyPWBncmVwIC12ICdeICorJyBjb25mdGVzdC5vdXQgfCBn
cmVwIC12ICJeY29uZnRlc3QuJHthY19leHR9XCQiYA0KaWYgdGVzdCAteiAiJGFjX2VyciI7IHRo
ZW4NCiAgcm0gLXJmIGNvbmZ0ZXN0Kg0KICBhY19jdl9oZWFkZXJfc3RkYz15ZXMNCmVsc2UNCiAg
ZWNobyAiJGFjX2VyciIgPiY1DQogIGVjaG8gImNvbmZpZ3VyZTogZmFpbGVkIHByb2dyYW0gd2Fz
OiIgPiY1DQogIGNhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQ0KICBybSAtcmYgY29uZnRlc3QqDQog
IGFjX2N2X2hlYWRlcl9zdGRjPW5vDQpmaQ0Kcm0gLWYgY29uZnRlc3QqDQoNCmlmIHRlc3QgJGFj
X2N2X2hlYWRlcl9zdGRjID0geWVzOyB0aGVuDQogICMgU3VuT1MgNC54IHN0cmluZy5oIGRvZXMg
bm90IGRlY2xhcmUgbWVtKiwgY29udHJhcnkgdG8gQU5TSS4NCmNhdCA+IGNvbmZ0ZXN0LiRhY19l
eHQgPDxFT0YNCiNsaW5lIDEzMDYgImNvbmZpZ3VyZSINCiNpbmNsdWRlICJjb25mZGVmcy5oIg0K
I2luY2x1ZGUgPHN0cmluZy5oPg0KRU9GDQppZiAoZXZhbCAiJGFjX2NwcCBjb25mdGVzdC4kYWNf
ZXh0IikgMj4mNSB8DQogIGVncmVwICJtZW1jaHIiID4vZGV2L251bGwgMj4mMTsgdGhlbg0KICA6
DQplbHNlDQogIHJtIC1yZiBjb25mdGVzdCoNCiAgYWNfY3ZfaGVhZGVyX3N0ZGM9bm8NCmZpDQpy
bSAtZiBjb25mdGVzdCoNCg0KZmkNCg0KaWYgdGVzdCAkYWNfY3ZfaGVhZGVyX3N0ZGMgPSB5ZXM7
IHRoZW4NCiAgIyBJU0MgMi4wLjIgc3RkbGliLmggZG9lcyBub3QgZGVjbGFyZSBmcmVlLCBjb250
cmFyeSB0byBBTlNJLg0KY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRg0KI2xpbmUgMTMyNCAi
Y29uZmlndXJlIg0KI2luY2x1ZGUgImNvbmZkZWZzLmgiDQojaW5jbHVkZSA8c3RkbGliLmg+DQpF
T0YNCmlmIChldmFsICIkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHQiKSAyPiY1IHwNCiAgZWdyZXAg
ImZyZWUiID4vZGV2L251bGwgMj4mMTsgdGhlbg0KICA6DQplbHNlDQogIHJtIC1yZiBjb25mdGVz
dCoNCiAgYWNfY3ZfaGVhZGVyX3N0ZGM9bm8NCmZpDQpybSAtZiBjb25mdGVzdCoNCg0KZmkNCg0K
aWYgdGVzdCAkYWNfY3ZfaGVhZGVyX3N0ZGMgPSB5ZXM7IHRoZW4NCiAgIyAvYmluL2NjIGluIEly
aXgtNC4wLjUgZ2V0cyBub24tQU5TSSBjdHlwZSBtYWNyb3MgdW5sZXNzIHVzaW5nIC1hbnNpLg0K
aWYgdGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgPSB5ZXM7IHRoZW4NCiAgOg0KZWxzZQ0KICBjYXQg
PiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GDQojbGluZSAxMzQ1ICJjb25maWd1cmUiDQojaW5jbHVk
ZSAiY29uZmRlZnMuaCINCiNpbmNsdWRlIDxjdHlwZS5oPg0KI2RlZmluZSBJU0xPV0VSKGMpICgn
YScgPD0gKGMpICYmIChjKSA8PSAneicpDQojZGVmaW5lIFRPVVBQRVIoYykgKElTTE9XRVIoYykg
PyAnQScgKyAoKGMpIC0gJ2EnKSA6IChjKSkNCiNkZWZpbmUgWE9SKGUsIGYpICgoKGUpICYmICEo
ZikpIHx8ICghKGUpICYmIChmKSkpDQppbnQgbWFpbiAoKSB7IGludCBpOyBmb3IgKGkgPSAwOyBp
IDwgMjU2OyBpKyspDQppZiAoWE9SIChpc2xvd2VyIChpKSwgSVNMT1dFUiAoaSkpIHx8IHRvdXBw
ZXIgKGkpICE9IFRPVVBQRVIgKGkpKSBleGl0KDIpOw0KZXhpdCAoMCk7IH0NCg0KRU9GDQppZiB7
IChldmFsIGVjaG8gY29uZmlndXJlOjEzNTY6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFj
X2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fSAmJiAoLi9jb25m
dGVzdDsgZXhpdCkgMj4vZGV2L251bGwNCnRoZW4NCiAgOg0KZWxzZQ0KICBlY2hvICJjb25maWd1
cmU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQ0KICBjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUN
CiAgcm0gLWZyIGNvbmZ0ZXN0Kg0KICBhY19jdl9oZWFkZXJfc3RkYz1ubw0KZmkNCnJtIC1mciBj
b25mdGVzdCoNCmZpDQoNCmZpDQpmaQ0KDQplY2hvICIkYWNfdCIiJGFjX2N2X2hlYWRlcl9zdGRj
IiAxPiY2DQppZiB0ZXN0ICRhY19jdl9oZWFkZXJfc3RkYyA9IHllczsgdGhlbg0KICBjYXQgPj4g
Y29uZmRlZnMuaCA8PFxFT0YNCiNkZWZpbmUgU1REQ19IRUFERVJTIDENCkVPRg0KDQpmaQ0KDQpl
Y2hvICRhY19uICJjaGVja2luZyBmb3Igc3lzL3dhaXQuaCB0aGF0IGlzIFBPU0lYLjEgY29tcGF0
aWJsZSIiLi4uICRhY19jIiAxPiY2DQplY2hvICJjb25maWd1cmU6MTM4MDogY2hlY2tpbmcgZm9y
IHN5cy93YWl0LmggdGhhdCBpcyBQT1NJWC4xIGNvbXBhdGlibGUiID4mNQ0KaWYgZXZhbCAidGVz
dCBcImBlY2hvICckJyd7J2FjX2N2X2hlYWRlcl9zeXNfd2FpdF9oJytzZXR9J2BcIiA9IHNldCI7
IHRoZW4NCiAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYNCmVsc2UNCiAgY2F0ID4g
Y29uZnRlc3QuJGFjX2V4dCA8PEVPRg0KI2xpbmUgMTM4NSAiY29uZmlndXJlIg0KI2luY2x1ZGUg
ImNvbmZkZWZzLmgiDQojaW5jbHVkZSA8c3lzL3R5cGVzLmg+DQojaW5jbHVkZSA8c3lzL3dhaXQu
aD4NCiNpZm5kZWYgV0VYSVRTVEFUVVMNCiNkZWZpbmUgV0VYSVRTVEFUVVMoc3RhdF92YWwpICgo
dW5zaWduZWQpKHN0YXRfdmFsKSA+PiA4KQ0KI2VuZGlmDQojaWZuZGVmIFdJRkVYSVRFRA0KI2Rl
ZmluZSBXSUZFWElURUQoc3RhdF92YWwpICgoKHN0YXRfdmFsKSAmIDI1NSkgPT0gMCkNCiNlbmRp
Zg0KaW50IG1haW4oKSB7DQppbnQgczsNCndhaXQgKCZzKTsNCnMgPSBXSUZFWElURUQgKHMpID8g
V0VYSVRTVEFUVVMgKHMpIDogMTsNCjsgcmV0dXJuIDA7IH0NCkVPRg0KaWYgeyAoZXZhbCBlY2hv
IGNvbmZpZ3VyZToxNDAxOiBcIiRhY19jb21waWxlXCIpIDE+JjU7IChldmFsICRhY19jb21waWxl
KSAyPiY1OyB9OyB0aGVuDQogIHJtIC1yZiBjb25mdGVzdCoNCiAgYWNfY3ZfaGVhZGVyX3N5c193
YWl0X2g9eWVzDQplbHNlDQogIGVjaG8gImNvbmZpZ3VyZTogZmFpbGVkIHByb2dyYW0gd2FzOiIg
PiY1DQogIGNhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQ0KICBybSAtcmYgY29uZnRlc3QqDQogIGFj
X2N2X2hlYWRlcl9zeXNfd2FpdF9oPW5vDQpmaQ0Kcm0gLWYgY29uZnRlc3QqDQpmaQ0KDQplY2hv
ICIkYWNfdCIiJGFjX2N2X2hlYWRlcl9zeXNfd2FpdF9oIiAxPiY2DQppZiB0ZXN0ICRhY19jdl9o
ZWFkZXJfc3lzX3dhaXRfaCA9IHllczsgdGhlbg0KICBjYXQgPj4gY29uZmRlZnMuaCA8PFxFT0YN
CiNkZWZpbmUgSEFWRV9TWVNfV0FJVF9IIDENCkVPRg0KDQpmaQ0KDQplY2hvICRhY19uICJjaGVj
a2luZyB3aGV0aGVyIHRpbWUuaCBhbmQgc3lzL3RpbWUuaCBtYXkgYm90aCBiZSBpbmNsdWRlZCIi
Li4uICRhY19jIiAxPiY2DQplY2hvICJjb25maWd1cmU6MTQyMjogY2hlY2tpbmcgd2hldGhlciB0
aW1lLmggYW5kIHN5cy90aW1lLmggbWF5IGJvdGggYmUgaW5jbHVkZWQiID4mNQ0KaWYgZXZhbCAi
dGVzdCBcImBlY2hvICckJyd7J2FjX2N2X2hlYWRlcl90aW1lJytzZXR9J2BcIiA9IHNldCI7IHRo
ZW4NCiAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYNCmVsc2UNCiAgY2F0ID4gY29u
ZnRlc3QuJGFjX2V4dCA8PEVPRg0KI2xpbmUgMTQyNyAiY29uZmlndXJlIg0KI2luY2x1ZGUgImNv
bmZkZWZzLmgiDQojaW5jbHVkZSA8c3lzL3R5cGVzLmg+DQojaW5jbHVkZSA8c3lzL3RpbWUuaD4N
CiNpbmNsdWRlIDx0aW1lLmg+DQppbnQgbWFpbigpIHsNCnN0cnVjdCB0bSAqdHA7DQo7IHJldHVy
biAwOyB9DQpFT0YNCmlmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6MTQzNjogXCIkYWNfY29tcGls
ZVwiKSAxPiY1OyAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNTsgfTsgdGhlbg0KICBybSAtcmYgY29u
ZnRlc3QqDQogIGFjX2N2X2hlYWRlcl90aW1lPXllcw0KZWxzZQ0KICBlY2hvICJjb25maWd1cmU6
IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQ0KICBjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUNCiAg
cm0gLXJmIGNvbmZ0ZXN0Kg0KICBhY19jdl9oZWFkZXJfdGltZT1ubw0KZmkNCnJtIC1mIGNvbmZ0
ZXN0Kg0KZmkNCg0KZWNobyAiJGFjX3QiIiRhY19jdl9oZWFkZXJfdGltZSIgMT4mNg0KaWYgdGVz
dCAkYWNfY3ZfaGVhZGVyX3RpbWUgPSB5ZXM7IHRoZW4NCiAgY2F0ID4+IGNvbmZkZWZzLmggPDxc
RU9GDQojZGVmaW5lIFRJTUVfV0lUSF9TWVNfVElNRSAxDQpFT0YNCg0KZmkNCg0KZm9yIGFjX2hk
ciBpbiBzeXMvdGltZS5oIHVuaXN0ZC5oDQpkbw0KYWNfc2FmZT1gZWNobyAiJGFjX2hkciIgfCBz
ZWQgJ3klLi8rLSVfX3BfJSdgDQplY2hvICRhY19uICJjaGVja2luZyBmb3IgJGFjX2hkciIiLi4u
ICRhY19jIiAxPiY2DQplY2hvICJjb25maWd1cmU6MTQ2MDogY2hlY2tpbmcgZm9yICRhY19oZHIi
ID4mNQ0KaWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X2hlYWRlcl8kYWNfc2FmZScr
c2V0fSdgXCIgPSBzZXQiOyB0aGVuDQogIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2
DQplbHNlDQogIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YNCiNsaW5lIDE0NjUgImNvbmZp
Z3VyZSINCiNpbmNsdWRlICJjb25mZGVmcy5oIg0KI2luY2x1ZGUgPCRhY19oZHI+DQpFT0YNCmFj
X3RyeT0iJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0ID4vZGV2L251bGwgMj5jb25mdGVzdC5vdXQi
DQp7IChldmFsIGVjaG8gY29uZmlndXJlOjE0NzA6IFwiJGFjX3RyeVwiKSAxPiY1OyAoZXZhbCAk
YWNfdHJ5KSAyPiY1OyB9DQphY19lcnI9YGdyZXAgLXYgJ14gKisnIGNvbmZ0ZXN0Lm91dCB8IGdy
ZXAgLXYgIl5jb25mdGVzdC4ke2FjX2V4dH1cJCJgDQppZiB0ZXN0IC16ICIkYWNfZXJyIjsgdGhl
bg0KICBybSAtcmYgY29uZnRlc3QqDQogIGV2YWwgImFjX2N2X2hlYWRlcl8kYWNfc2FmZT15ZXMi
DQplbHNlDQogIGVjaG8gIiRhY19lcnIiID4mNQ0KICBlY2hvICJjb25maWd1cmU6IGZhaWxlZCBw
cm9ncmFtIHdhczoiID4mNQ0KICBjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUNCiAgcm0gLXJmIGNv
bmZ0ZXN0Kg0KICBldmFsICJhY19jdl9oZWFkZXJfJGFjX3NhZmU9bm8iDQpmaQ0Kcm0gLWYgY29u
ZnRlc3QqDQpmaQ0KaWYgZXZhbCAidGVzdCBcImBlY2hvICckYWNfY3ZfaGVhZGVyXyckYWNfc2Fm
ZWBcIiA9IHllcyI7IHRoZW4NCiAgZWNobyAiJGFjX3QiInllcyIgMT4mNg0KICAgIGFjX3RyX2hk
cj1IQVZFX2BlY2hvICRhY19oZHIgfCBzZWQgJ3klYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXou
Ly0lQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpfX18lJ2ANCiAgY2F0ID4+IGNvbmZkZWZzLmgg
PDxFT0YNCiNkZWZpbmUgJGFjX3RyX2hkciAxDQpFT0YNCiANCmVsc2UNCiAgZWNobyAiJGFjX3Qi
Im5vIiAxPiY2DQpmaQ0KZG9uZQ0KDQoNCmhhdmVfbGlibWluaWd1aT1ubw0KZm9yIGFjX2hkciBp
biBtaW5pZ3VpL21pbmlndWkuaA0KZG8NCmFjX3NhZmU9YGVjaG8gIiRhY19oZHIiIHwgc2VkICd5
JS4vKy0lX19wXyUnYA0KZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yICRhY19oZHIiIi4uLiAkYWNf
YyIgMT4mNg0KZWNobyAiY29uZmlndXJlOjE1MDI6IGNoZWNraW5nIGZvciAkYWNfaGRyIiA+JjUN
CmlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9oZWFkZXJfJGFjX3NhZmUnK3NldH0n
YFwiID0gc2V0IjsgdGhlbg0KICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNg0KZWxz
ZQ0KICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GDQojbGluZSAxNTA3ICJjb25maWd1cmUi
DQojaW5jbHVkZSAiY29uZmRlZnMuaCINCiNpbmNsdWRlIDwkYWNfaGRyPg0KRU9GDQphY190cnk9
IiRhY19jcHAgY29uZnRlc3QuJGFjX2V4dCA+L2Rldi9udWxsIDI+Y29uZnRlc3Qub3V0Ig0KeyAo
ZXZhbCBlY2hvIGNvbmZpZ3VyZToxNTEyOiBcIiRhY190cnlcIikgMT4mNTsgKGV2YWwgJGFjX3Ry
eSkgMj4mNTsgfQ0KYWNfZXJyPWBncmVwIC12ICdeICorJyBjb25mdGVzdC5vdXQgfCBncmVwIC12
ICJeY29uZnRlc3QuJHthY19leHR9XCQiYA0KaWYgdGVzdCAteiAiJGFjX2VyciI7IHRoZW4NCiAg
cm0gLXJmIGNvbmZ0ZXN0Kg0KICBldmFsICJhY19jdl9oZWFkZXJfJGFjX3NhZmU9eWVzIg0KZWxz
ZQ0KICBlY2hvICIkYWNfZXJyIiA+JjUNCiAgZWNobyAiY29uZmlndXJlOiBmYWlsZWQgcHJvZ3Jh
bSB3YXM6IiA+JjUNCiAgY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1DQogIHJtIC1yZiBjb25mdGVz
dCoNCiAgZXZhbCAiYWNfY3ZfaGVhZGVyXyRhY19zYWZlPW5vIg0KZmkNCnJtIC1mIGNvbmZ0ZXN0
Kg0KZmkNCmlmIGV2YWwgInRlc3QgXCJgZWNobyAnJGFjX2N2X2hlYWRlcl8nJGFjX3NhZmVgXCIg
PSB5ZXMiOyB0aGVuDQogIGVjaG8gIiRhY190IiJ5ZXMiIDE+JjYNCiAgICBhY190cl9oZHI9SEFW
RV9gZWNobyAkYWNfaGRyIHwgc2VkICd5JWFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6Li8tJUFC
Q0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaX19fJSdgDQogIGNhdCA+PiBjb25mZGVmcy5oIDw8RU9G
DQojZGVmaW5lICRhY190cl9oZHIgMQ0KRU9GDQogaGF2ZV9saWJtaW5pZ3VpPXllcw0KZWxzZQ0K
ICBlY2hvICIkYWNfdCIibm8iIDE+JjYNCmZvbz1iYXINCmZpDQpkb25lDQoNCg0KDQppZiB0ZXN0
ICIkYWNfY3ZfcHJvZ19nY2MiID0gInllcyI7IHRoZW4NCiAgICBDRkxBR1M9IiRDRkxBR1MgLVdh
bGwgLVdzdHJpY3QtcHJvdG90eXBlcyAtcGlwZSINCmZpDQoNCkNGTEFHUz0iJENGTEFHUyAtRF9S
RUVOVFJBTlQgLURfVEhSRUFEX1NBRkUiDQoNCkxJQlM9IiRMSUJTIC1sbWluaWd1aSINCg0KdHJh
cCAnJyAxIDIgMTUNCmNhdCA+IGNvbmZjYWNoZSA8PFxFT0YNCiMgVGhpcyBmaWxlIGlzIGEgc2hl
bGwgc2NyaXB0IHRoYXQgY2FjaGVzIHRoZSByZXN1bHRzIG9mIGNvbmZpZ3VyZQ0KIyB0ZXN0cyBy
dW4gb24gdGhpcyBzeXN0ZW0gc28gdGhleSBjYW4gYmUgc2hhcmVkIGJldHdlZW4gY29uZmlndXJl
DQojIHNjcmlwdHMgYW5kIGNvbmZpZ3VyZSBydW5zLiAgSXQgaXMgbm90IHVzZWZ1bCBvbiBvdGhl
ciBzeXN0ZW1zLg0KIyBJZiBpdCBjb250YWlucyByZXN1bHRzIHlvdSBkb24ndCB3YW50IHRvIGtl
ZXAsIHlvdSBtYXkgcmVtb3ZlIG9yIGVkaXQgaXQuDQojDQojIEJ5IGRlZmF1bHQsIGNvbmZpZ3Vy
ZSB1c2VzIC4vY29uZmlnLmNhY2hlIGFzIHRoZSBjYWNoZSBmaWxlLA0KIyBjcmVhdGluZyBpdCBp
ZiBpdCBkb2VzIG5vdCBleGlzdCBhbHJlYWR5LiAgWW91IGNhbiBnaXZlIGNvbmZpZ3VyZQ0KIyB0
aGUgLS1jYWNoZS1maWxlPUZJTEUgb3B0aW9uIHRvIHVzZSBhIGRpZmZlcmVudCBjYWNoZSBmaWxl
OyB0aGF0IGlzDQojIHdoYXQgY29uZmlndXJlIGRvZXMgd2hlbiBpdCBjYWxscyBjb25maWd1cmUg
c2NyaXB0cyBpbg0KIyBzdWJkaXJlY3Rvcmllcywgc28gdGhleSBzaGFyZSB0aGUgY2FjaGUuDQoj
IEdpdmluZyAtLWNhY2hlLWZpbGU9L2Rldi9udWxsIGRpc2FibGVzIGNhY2hpbmcsIGZvciBkZWJ1
Z2dpbmcgY29uZmlndXJlLg0KIyBjb25maWcuc3RhdHVzIG9ubHkgcGF5cyBhdHRlbnRpb24gdG8g
dGhlIGNhY2hlIGZpbGUgaWYgeW91IGdpdmUgaXQgdGhlDQojIC0tcmVjaGVjayBvcHRpb24gdG8g
cmVydW4gY29uZmlndXJlLg0KIw0KRU9GDQojIFRoZSBmb2xsb3dpbmcgd2F5IG9mIHdyaXRpbmcg
dGhlIGNhY2hlIG1pc2hhbmRsZXMgbmV3bGluZXMgaW4gdmFsdWVzLA0KIyBidXQgd2Uga25vdyBv
ZiBubyB3b3JrYXJvdW5kIHRoYXQgaXMgc2ltcGxlLCBwb3J0YWJsZSwgYW5kIGVmZmljaWVudC4N
CiMgU28sIGRvbid0IHB1dCBuZXdsaW5lcyBpbiBjYWNoZSB2YXJpYWJsZXMnIHZhbHVlcy4NCiMg
VWx0cml4IHNoIHNldCB3cml0ZXMgdG8gc3RkZXJyIGFuZCBjYW4ndCBiZSByZWRpcmVjdGVkIGRp
cmVjdGx5LA0KIyBhbmQgc2V0cyB0aGUgaGlnaCBiaXQgaW4gdGhlIGNhY2hlIGZpbGUgdW5sZXNz
IHdlIGFzc2lnbiB0byB0aGUgdmFycy4NCihzZXQpIDI+JjEgfA0KICBjYXNlIGAoYWNfc3BhY2U9
JyAnOyBzZXQgfCBncmVwIGFjX3NwYWNlKSAyPiYxYCBpbg0KICAqYWNfc3BhY2U9XCAqKQ0KICAg
ICMgYHNldCcgZG9lcyBub3QgcXVvdGUgY29ycmVjdGx5LCBzbyBhZGQgcXVvdGVzIChkb3VibGUt
cXVvdGUgc3Vic3RpdHV0aW9uDQogICAgIyB0dXJucyBcXFxcIGludG8gXFwsIGFuZCBzZWQgdHVy
bnMgXFwgaW50byBcKS4NCiAgICBzZWQgLW4gXA0KICAgICAgLWUgInMvJy8nXFxcXCcnL2ciIFwN
CiAgICAgIC1lICJzL15cXChbYS16QS1aMC05X10qX2N2X1thLXpBLVowLTlfXSpcXCk9XFwoLipc
XCkvXFwxPVwke1xcMT0nXFwyJ30vcCINCiAgICA7Ow0KICAqKQ0KICAgICMgYHNldCcgcXVvdGVz
IGNvcnJlY3RseSBhcyByZXF1aXJlZCBieSBQT1NJWCwgc28gZG8gbm90IGFkZCBxdW90ZXMuDQog
ICAgc2VkIC1uIC1lICdzL15cKFthLXpBLVowLTlfXSpfY3ZfW2EtekEtWjAtOV9dKlwpPVwoLipc
KS9cMT0ke1wxPVwyfS9wJw0KICAgIDs7DQogIGVzYWMgPj4gY29uZmNhY2hlDQppZiBjbXAgLXMg
JGNhY2hlX2ZpbGUgY29uZmNhY2hlOyB0aGVuDQogIDoNCmVsc2UNCiAgaWYgdGVzdCAtdyAkY2Fj
aGVfZmlsZTsgdGhlbg0KICAgIGVjaG8gInVwZGF0aW5nIGNhY2hlICRjYWNoZV9maWxlIg0KICAg
IGNhdCBjb25mY2FjaGUgPiAkY2FjaGVfZmlsZQ0KICBlbHNlDQogICAgZWNobyAibm90IHVwZGF0
aW5nIHVud3JpdGFibGUgY2FjaGUgJGNhY2hlX2ZpbGUiDQogIGZpDQpmaQ0Kcm0gLWYgY29uZmNh
Y2hlDQoNCnRyYXAgJ3JtIC1mciBjb25mdGVzdCogY29uZmRlZnMqIGNvcmUgY29yZS4qICouY29y
ZSAkYWNfY2xlYW5fZmlsZXM7IGV4aXQgMScgMSAyIDE1DQoNCnRlc3QgIngkcHJlZml4IiA9IHhO
T05FICYmIHByZWZpeD0kYWNfZGVmYXVsdF9wcmVmaXgNCiMgTGV0IG1ha2UgZXhwYW5kIGV4ZWNf
cHJlZml4Lg0KdGVzdCAieCRleGVjX3ByZWZpeCIgPSB4Tk9ORSAmJiBleGVjX3ByZWZpeD0nJHtw
cmVmaXh9Jw0KDQojIEFueSBhc3NpZ25tZW50IHRvIFZQQVRIIGNhdXNlcyBTdW4gbWFrZSB0byBv
bmx5IGV4ZWN1dGUNCiMgdGhlIGZpcnN0IHNldCBvZiBkb3VibGUtY29sb24gcnVsZXMsIHNvIHJl
bW92ZSBpdCBpZiBub3QgbmVlZGVkLg0KIyBJZiB0aGVyZSBpcyBhIGNvbG9uIGluIHRoZSBwYXRo
LCB3ZSBuZWVkIHRvIGtlZXAgaXQuDQppZiB0ZXN0ICJ4JHNyY2RpciIgPSB4LjsgdGhlbg0KICBh
Y192cHN1Yj0nL15bIAldKlZQQVRIWyAJXSo9W146XSokL2QnDQpmaQ0KDQp0cmFwICdybSAtZiAk
Q09ORklHX1NUQVRVUyBjb25mdGVzdCo7IGV4aXQgMScgMSAyIDE1DQoNCiMgVHJhbnNmb3JtIGNv
bmZkZWZzLmggaW50byBERUZTLg0KIyBQcm90ZWN0IGFnYWluc3Qgc2hlbGwgZXhwYW5zaW9uIHdo
aWxlIGV4ZWN1dGluZyBNYWtlZmlsZSBydWxlcy4NCiMgUHJvdGVjdCBhZ2FpbnN0IE1ha2VmaWxl
IG1hY3JvIGV4cGFuc2lvbi4NCmNhdCA+IGNvbmZ0ZXN0LmRlZnMgPDxcRU9GDQpzJSNkZWZpbmUg
XChbQS1aYS16X11bQS1aYS16MC05X10qXCkgKlwoLipcKSUtRFwxPVwyJWcNCnMlWyAJYH4jJF4m
Kigpe31cXHw7JyI8Pj9dJVxcJiVnDQpzJVxbJVxcJiVnDQpzJVxdJVxcJiVnDQpzJVwkJSQkJWcN
CkVPRg0KREVGUz1gc2VkIC1mIGNvbmZ0ZXN0LmRlZnMgY29uZmRlZnMuaCB8IHRyICdcMDEyJyAn
ICdgDQpybSAtZiBjb25mdGVzdC5kZWZzDQoNCg0KIyBXaXRob3V0IHRoZSAiLi8iLCBzb21lIHNo
ZWxscyBsb29rIGluIFBBVEggZm9yIGNvbmZpZy5zdGF0dXMuDQo6ICR7Q09ORklHX1NUQVRVUz0u
L2NvbmZpZy5zdGF0dXN9DQoNCmVjaG8gY3JlYXRpbmcgJENPTkZJR19TVEFUVVMNCnJtIC1mICRD
T05GSUdfU1RBVFVTDQpjYXQgPiAkQ09ORklHX1NUQVRVUyA8PEVPRg0KIyEgL2Jpbi9zaA0KIyBH
ZW5lcmF0ZWQgYXV0b21hdGljYWxseSBieSBjb25maWd1cmUuDQojIFJ1biB0aGlzIGZpbGUgdG8g
cmVjcmVhdGUgdGhlIGN1cnJlbnQgY29uZmlndXJhdGlvbi4NCiMgVGhpcyBkaXJlY3Rvcnkgd2Fz
IGNvbmZpZ3VyZWQgYXMgZm9sbG93cywNCiMgb24gaG9zdCBgKGhvc3RuYW1lIHx8IHVuYW1lIC1u
KSAyPi9kZXYvbnVsbCB8IHNlZCAxcWA6DQojDQojICQwICRhY19jb25maWd1cmVfYXJncw0KIw0K
IyBDb21waWxlciBvdXRwdXQgcHJvZHVjZWQgYnkgY29uZmlndXJlLCB1c2VmdWwgZm9yIGRlYnVn
Z2luZw0KIyBjb25maWd1cmUsIGlzIGluIC4vY29uZmlnLmxvZyBpZiBpdCBleGlzdHMuDQoNCmFj
X2NzX3VzYWdlPSJVc2FnZTogJENPTkZJR19TVEFUVVMgWy0tcmVjaGVja10gWy0tdmVyc2lvbl0g
Wy0taGVscF0iDQpmb3IgYWNfb3B0aW9uDQpkbw0KICBjYXNlICJcJGFjX29wdGlvbiIgaW4NCiAg
LXJlY2hlY2sgfCAtLXJlY2hlY2sgfCAtLXJlY2hlYyB8IC0tcmVjaGUgfCAtLXJlY2ggfCAtLXJl
YyB8IC0tcmUgfCAtLXIpDQogICAgZWNobyAicnVubmluZyBcJHtDT05GSUdfU0hFTEwtL2Jpbi9z
aH0gJDAgJGFjX2NvbmZpZ3VyZV9hcmdzIC0tbm8tY3JlYXRlIC0tbm8tcmVjdXJzaW9uIg0KICAg
IGV4ZWMgXCR7Q09ORklHX1NIRUxMLS9iaW4vc2h9ICQwICRhY19jb25maWd1cmVfYXJncyAtLW5v
LWNyZWF0ZSAtLW5vLXJlY3Vyc2lvbiA7Ow0KICAtdmVyc2lvbiB8IC0tdmVyc2lvbiB8IC0tdmVy
c2lvIHwgLS12ZXJzaSB8IC0tdmVycyB8IC0tdmVyIHwgLS12ZSB8IC0tdikNCiAgICBlY2hvICIk
Q09ORklHX1NUQVRVUyBnZW5lcmF0ZWQgYnkgYXV0b2NvbmYgdmVyc2lvbiAyLjEzIg0KICAgIGV4
aXQgMCA7Ow0KICAtaGVscCB8IC0taGVscCB8IC0taGVsIHwgLS1oZSB8IC0taCkNCiAgICBlY2hv
ICJcJGFjX2NzX3VzYWdlIjsgZXhpdCAwIDs7DQogICopIGVjaG8gIlwkYWNfY3NfdXNhZ2UiOyBl
eGl0IDEgOzsNCiAgZXNhYw0KZG9uZQ0KDQphY19naXZlbl9zcmNkaXI9JHNyY2Rpcg0KYWNfZ2l2
ZW5fSU5TVEFMTD0iJElOU1RBTEwiDQoNCnRyYXAgJ3JtIC1mciBgZWNobyAiTWFrZWZpbGUNCnRv
b2xzL01ha2VmaWxlDQptZ2luaXQvTWFrZWZpbGUNCm1naW5pdC9yZXMvTWFrZWZpbGUNCiIgfCBz
ZWQgInMvOlteIF0qLy9nImAgY29uZnRlc3QqOyBleGl0IDEnIDEgMiAxNQ0KRU9GDQpjYXQgPj4g
JENPTkZJR19TVEFUVVMgPDxFT0YNCg0KIyBQcm90ZWN0IGFnYWluc3QgYmVpbmcgb24gdGhlIHJp
Z2h0IHNpZGUgb2YgYSBzZWQgc3Vic3QgaW4gY29uZmlnLnN0YXR1cy4NCnNlZCAncy8lQC9AQC87
IHMvQCUvQEAvOyBzLyVnXCQvQGcvOyAvQGdcJC9zL1tcXFxcJiVdL1xcXFwmL2c7DQogcy9AQC8l
QC87IHMvQEAvQCUvOyBzL0BnXCQvJWcvJyA+IGNvbmZ0ZXN0LnN1YnMgPDxcXENFT0YNCiRhY192
cHN1Yg0KJGV4dHJhc3ViDQpzJUBTSEVMTEAlJFNIRUxMJWcNCnMlQENGTEFHU0AlJENGTEFHUyVn
DQpzJUBDUFBGTEFHU0AlJENQUEZMQUdTJWcNCnMlQENYWEZMQUdTQCUkQ1hYRkxBR1MlZw0KcyVA
RkZMQUdTQCUkRkZMQUdTJWcNCnMlQERFRlNAJSRERUZTJWcNCnMlQExERkxBR1NAJSRMREZMQUdT
JWcNCnMlQExJQlNAJSRMSUJTJWcNCnMlQGV4ZWNfcHJlZml4QCUkZXhlY19wcmVmaXglZw0KcyVA
cHJlZml4QCUkcHJlZml4JWcNCnMlQHByb2dyYW1fdHJhbnNmb3JtX25hbWVAJSRwcm9ncmFtX3Ry
YW5zZm9ybV9uYW1lJWcNCnMlQGJpbmRpckAlJGJpbmRpciVnDQpzJUBzYmluZGlyQCUkc2JpbmRp
ciVnDQpzJUBsaWJleGVjZGlyQCUkbGliZXhlY2RpciVnDQpzJUBkYXRhZGlyQCUkZGF0YWRpciVn
DQpzJUBzeXNjb25mZGlyQCUkc3lzY29uZmRpciVnDQpzJUBzaGFyZWRzdGF0ZWRpckAlJHNoYXJl
ZHN0YXRlZGlyJWcNCnMlQGxvY2Fsc3RhdGVkaXJAJSRsb2NhbHN0YXRlZGlyJWcNCnMlQGxpYmRp
ckAlJGxpYmRpciVnDQpzJUBpbmNsdWRlZGlyQCUkaW5jbHVkZWRpciVnDQpzJUBvbGRpbmNsdWRl
ZGlyQCUkb2xkaW5jbHVkZWRpciVnDQpzJUBpbmZvZGlyQCUkaW5mb2RpciVnDQpzJUBtYW5kaXJA
JSRtYW5kaXIlZw0KcyVAaG9zdEAlJGhvc3QlZw0KcyVAaG9zdF9hbGlhc0AlJGhvc3RfYWxpYXMl
Zw0KcyVAaG9zdF9jcHVAJSRob3N0X2NwdSVnDQpzJUBob3N0X3ZlbmRvckAlJGhvc3RfdmVuZG9y
JWcNCnMlQGhvc3Rfb3NAJSRob3N0X29zJWcNCnMlQHRhcmdldEAlJHRhcmdldCVnDQpzJUB0YXJn
ZXRfYWxpYXNAJSR0YXJnZXRfYWxpYXMlZw0KcyVAdGFyZ2V0X2NwdUAlJHRhcmdldF9jcHUlZw0K
cyVAdGFyZ2V0X3ZlbmRvckAlJHRhcmdldF92ZW5kb3IlZw0KcyVAdGFyZ2V0X29zQCUkdGFyZ2V0
X29zJWcNCnMlQGJ1aWxkQCUkYnVpbGQlZw0KcyVAYnVpbGRfYWxpYXNAJSRidWlsZF9hbGlhcyVn
DQpzJUBidWlsZF9jcHVAJSRidWlsZF9jcHUlZw0KcyVAYnVpbGRfdmVuZG9yQCUkYnVpbGRfdmVu
ZG9yJWcNCnMlQGJ1aWxkX29zQCUkYnVpbGRfb3MlZw0KcyVAU0VUX01BS0VAJSRTRVRfTUFLRSVn
DQpzJUBDQ0AlJENDJWcNCnMlQElOU1RBTExfUFJPR1JBTUAlJElOU1RBTExfUFJPR1JBTSVnDQpz
JUBJTlNUQUxMX1NDUklQVEAlJElOU1RBTExfU0NSSVBUJWcNCnMlQElOU1RBTExfREFUQUAlJElO
U1RBTExfREFUQSVnDQpzJUBQQUNLQUdFQCUkUEFDS0FHRSVnDQpzJUBWRVJTSU9OQCUkVkVSU0lP
TiVnDQpzJUBBQ0xPQ0FMQCUkQUNMT0NBTCVnDQpzJUBBVVRPQ09ORkAlJEFVVE9DT05GJWcNCnMl
QEFVVE9NQUtFQCUkQVVUT01BS0UlZw0KcyVAQVVUT0hFQURFUkAlJEFVVE9IRUFERVIlZw0KcyVA
TUFLRUlORk9AJSRNQUtFSU5GTyVnDQpzJUBDUFBAJSRDUFAlZw0KDQpDRU9GDQpFT0YNCg0KY2F0
ID4+ICRDT05GSUdfU1RBVFVTIDw8XEVPRg0KDQojIFNwbGl0IHRoZSBzdWJzdGl0dXRpb25zIGlu
dG8gYml0ZS1zaXplZCBwaWVjZXMgZm9yIHNlZHMgd2l0aA0KIyBzbWFsbCBjb21tYW5kIG51bWJl
ciBsaW1pdHMsIGxpa2Ugb24gRGlnaXRhbCBPU0YvMSBhbmQgSFAtVVguDQphY19tYXhfc2VkX2Nt
ZHM9OTAgIyBNYXhpbXVtIG51bWJlciBvZiBsaW5lcyB0byBwdXQgaW4gYSBzZWQgc2NyaXB0Lg0K
YWNfZmlsZT0xICMgTnVtYmVyIG9mIGN1cnJlbnQgZmlsZS4NCmFjX2JlZz0xICMgRmlyc3QgbGlu
ZSBmb3IgY3VycmVudCBmaWxlLg0KYWNfZW5kPSRhY19tYXhfc2VkX2NtZHMgIyBMaW5lIGFmdGVy
IGxhc3QgbGluZSBmb3IgY3VycmVudCBmaWxlLg0KYWNfbW9yZV9saW5lcz06DQphY19zZWRfY21k
cz0iIg0Kd2hpbGUgJGFjX21vcmVfbGluZXM7IGRvDQogIGlmIHRlc3QgJGFjX2JlZyAtZ3QgMTsg
dGhlbg0KICAgIHNlZCAiMSwke2FjX2JlZ31kOyAke2FjX2VuZH1xIiBjb25mdGVzdC5zdWJzID4g
Y29uZnRlc3QucyRhY19maWxlDQogIGVsc2UNCiAgICBzZWQgIiR7YWNfZW5kfXEiIGNvbmZ0ZXN0
LnN1YnMgPiBjb25mdGVzdC5zJGFjX2ZpbGUNCiAgZmkNCiAgaWYgdGVzdCAhIC1zIGNvbmZ0ZXN0
LnMkYWNfZmlsZTsgdGhlbg0KICAgIGFjX21vcmVfbGluZXM9ZmFsc2UNCiAgICBybSAtZiBjb25m
dGVzdC5zJGFjX2ZpbGUNCiAgZWxzZQ0KICAgIGlmIHRlc3QgLXogIiRhY19zZWRfY21kcyI7IHRo
ZW4NCiAgICAgIGFjX3NlZF9jbWRzPSJzZWQgLWYgY29uZnRlc3QucyRhY19maWxlIg0KICAgIGVs
c2UNCiAgICAgIGFjX3NlZF9jbWRzPSIkYWNfc2VkX2NtZHMgfCBzZWQgLWYgY29uZnRlc3QucyRh
Y19maWxlIg0KICAgIGZpDQogICAgYWNfZmlsZT1gZXhwciAkYWNfZmlsZSArIDFgDQogICAgYWNf
YmVnPSRhY19lbmQNCiAgICBhY19lbmQ9YGV4cHIgJGFjX2VuZCArICRhY19tYXhfc2VkX2NtZHNg
DQogIGZpDQpkb25lDQppZiB0ZXN0IC16ICIkYWNfc2VkX2NtZHMiOyB0aGVuDQogIGFjX3NlZF9j
bWRzPWNhdA0KZmkNCkVPRg0KDQpjYXQgPj4gJENPTkZJR19TVEFUVVMgPDxFT0YNCg0KQ09ORklH
X0ZJTEVTPVwke0NPTkZJR19GSUxFUy0iTWFrZWZpbGUNCnRvb2xzL01ha2VmaWxlDQptZ2luaXQv
TWFrZWZpbGUNCm1naW5pdC9yZXMvTWFrZWZpbGUNCiJ9DQpFT0YNCmNhdCA+PiAkQ09ORklHX1NU
QVRVUyA8PFxFT0YNCmZvciBhY19maWxlIGluIC4uICRDT05GSUdfRklMRVM7IGRvIGlmIHRlc3Qg
IngkYWNfZmlsZSIgIT0geC4uOyB0aGVuDQogICMgU3VwcG9ydCAib3V0ZmlsZVs6aW5maWxlWzpp
bmZpbGUuLi5dXSIsIGRlZmF1bHRpbmcgaW5maWxlPSJvdXRmaWxlLmluIi4NCiAgY2FzZSAiJGFj
X2ZpbGUiIGluDQogICo6KikgYWNfZmlsZV9pbj1gZWNobyAiJGFjX2ZpbGUifHNlZCAncyVbXjpd
KjolJSdgDQogICAgICAgYWNfZmlsZT1gZWNobyAiJGFjX2ZpbGUifHNlZCAncyU6LiolJSdgIDs7
DQogICopIGFjX2ZpbGVfaW49IiR7YWNfZmlsZX0uaW4iIDs7DQogIGVzYWMNCg0KICAjIEFkanVz
dCBhIHJlbGF0aXZlIHNyY2RpciwgdG9wX3NyY2RpciwgYW5kIElOU1RBTEwgZm9yIHN1YmRpcmVj
dG9yaWVzLg0KDQogICMgUmVtb3ZlIGxhc3Qgc2xhc2ggYW5kIGFsbCB0aGF0IGZvbGxvd3MgaXQu
ICBOb3QgYWxsIHN5c3RlbXMgaGF2ZSBkaXJuYW1lLg0KICBhY19kaXI9YGVjaG8gJGFjX2ZpbGV8
c2VkICdzJS9bXi9dW14vXSokJSUnYA0KICBpZiB0ZXN0ICIkYWNfZGlyIiAhPSAiJGFjX2ZpbGUi
ICYmIHRlc3QgIiRhY19kaXIiICE9IC47IHRoZW4NCiAgICAjIFRoZSBmaWxlIGlzIGluIGEgc3Vi
ZGlyZWN0b3J5Lg0KICAgIHRlc3QgISAtZCAiJGFjX2RpciIgJiYgbWtkaXIgIiRhY19kaXIiDQog
ICAgYWNfZGlyX3N1ZmZpeD0iL2BlY2hvICRhY19kaXJ8c2VkICdzJV5cLi8lJSdgIg0KICAgICMg
QSAiLi4vIiBmb3IgZWFjaCBkaXJlY3RvcnkgaW4gJGFjX2Rpcl9zdWZmaXguDQogICAgYWNfZG90
cz1gZWNobyAkYWNfZGlyX3N1ZmZpeHxzZWQgJ3MlL1teL10qJS4uLyVnJ2ANCiAgZWxzZQ0KICAg
IGFjX2Rpcl9zdWZmaXg9IGFjX2RvdHM9DQogIGZpDQoNCiAgY2FzZSAiJGFjX2dpdmVuX3NyY2Rp
ciIgaW4NCiAgLikgIHNyY2Rpcj0uDQogICAgICBpZiB0ZXN0IC16ICIkYWNfZG90cyI7IHRoZW4g
dG9wX3NyY2Rpcj0uDQogICAgICBlbHNlIHRvcF9zcmNkaXI9YGVjaG8gJGFjX2RvdHN8c2VkICdz
JS8kJSUnYDsgZmkgOzsNCiAgLyopIHNyY2Rpcj0iJGFjX2dpdmVuX3NyY2RpciRhY19kaXJfc3Vm
Zml4IjsgdG9wX3NyY2Rpcj0iJGFjX2dpdmVuX3NyY2RpciIgOzsNCiAgKikgIyBSZWxhdGl2ZSBw
YXRoLg0KICAgIHNyY2Rpcj0iJGFjX2RvdHMkYWNfZ2l2ZW5fc3JjZGlyJGFjX2Rpcl9zdWZmaXgi
DQogICAgdG9wX3NyY2Rpcj0iJGFjX2RvdHMkYWNfZ2l2ZW5fc3JjZGlyIiA7Ow0KICBlc2FjDQoN
CiAgY2FzZSAiJGFjX2dpdmVuX0lOU1RBTEwiIGluDQogIFsvJF0qKSBJTlNUQUxMPSIkYWNfZ2l2
ZW5fSU5TVEFMTCIgOzsNCiAgKikgSU5TVEFMTD0iJGFjX2RvdHMkYWNfZ2l2ZW5fSU5TVEFMTCIg
OzsNCiAgZXNhYw0KDQogIGVjaG8gY3JlYXRpbmcgIiRhY19maWxlIg0KICBybSAtZiAiJGFjX2Zp
bGUiDQogIGNvbmZpZ3VyZV9pbnB1dD0iR2VuZXJhdGVkIGF1dG9tYXRpY2FsbHkgZnJvbSBgZWNo
byAkYWNfZmlsZV9pbnxzZWQgJ3MlLiovJSUnYCBieSBjb25maWd1cmUuIg0KICBjYXNlICIkYWNf
ZmlsZSIgaW4NCiAgKk1ha2VmaWxlKikgYWNfY29tc3ViPSIxaVxcDQojICRjb25maWd1cmVfaW5w
dXQiIDs7DQogICopIGFjX2NvbXN1Yj0gOzsNCiAgZXNhYw0KDQogIGFjX2ZpbGVfaW5wdXRzPWBl
Y2hvICRhY19maWxlX2lufHNlZCAtZSAicyVeJSRhY19naXZlbl9zcmNkaXIvJSIgLWUgInMlOiUg
JGFjX2dpdmVuX3NyY2Rpci8lZyJgDQogIHNlZCAtZSAiJGFjX2NvbXN1Yg0KcyVAY29uZmlndXJl
X2lucHV0QCUkY29uZmlndXJlX2lucHV0JWcNCnMlQHNyY2RpckAlJHNyY2RpciVnDQpzJUB0b3Bf
c3JjZGlyQCUkdG9wX3NyY2RpciVnDQpzJUBJTlNUQUxMQCUkSU5TVEFMTCVnDQoiICRhY19maWxl
X2lucHV0cyB8IChldmFsICIkYWNfc2VkX2NtZHMiKSA+ICRhY19maWxlDQpmaTsgZG9uZQ0Kcm0g
LWYgY29uZnRlc3QucyoNCg0KRU9GDQpjYXQgPj4gJENPTkZJR19TVEFUVVMgPDxFT0YNCg0KRU9G
DQpjYXQgPj4gJENPTkZJR19TVEFUVVMgPDxcRU9GDQoNCmV4aXQgMA0KRU9GDQpjaG1vZCAreCAk
Q09ORklHX1NUQVRVUw0Kcm0gLWZyIGNvbmZkZWZzKiAkYWNfY2xlYW5fZmlsZXMNCnRlc3QgIiRu
b19jcmVhdGUiID0geWVzIHx8ICR7Q09ORklHX1NIRUxMLS9iaW4vc2h9ICRDT05GSUdfU1RBVFVT
IHx8IGV4aXQgMQ0KDQoNCmlmIHRlc3QgIngkaGF2ZV9saWJtaW5pZ3VpIiAhPSAieHllcyI7IHRo
ZW4NCgllY2hvICJjb25maWd1cmU6IHdhcm5pbmc6IA0KCQlNaW5pR1VJIGlzIG5vdCBwcm9wZXJs
eSBpbnN0YWxsZWQgb24gdGhlIHN5c3RlbS4gWW91IG5lZWQgTWluaUdVSS1MaXRlIFZlciAxLjIu
MyBvciBsYXRlciBmb3INCgkJYnVpbGRpbmcgdGhpcyBwYWNrYWdlLiBQbGVhc2UgY29uZmlndXJl
IGFuZCBpbnN0YWxsIE1pbmlHVUktTGl0ZSBWZXIgMS4yLjMgZmlyc3QuDQoJIiAxPiYyDQpmaQ0K
DQo=
------_=_NextPart_001_01C34C40.E831C6E0--