Large System Seeing Single CPU Core Spiking
I am working with a very large customer running Asterisk with PJSIP. Systems total channels have been over 2500 (which includes hundreds of local channels and ConfBridges) when the issues occur. It’s running on a Hyper-V VM with 12 CPU cores. Things work fine most of the time.
They periodically see 10-30 minute periods where audio starts sounding like jitter buffer type issues. Can literally have someone spelling their name and a ConfBridge recording of it shows the audio is missing a letter or two. The odd part is another system (not running Asterisk) was handling these calls previously. The overall network has plenty of bandwidth (as evidenced by another system able to handle the call volume)
One area that has perplexed us is when using htop, we see a single CPU core will spike to 100%. Which core does keep changing.
Asterisk is definitely the process using the vast majority of the CPU cycles.
We recently found a setting on Hyper-V networking SR-IOV which improved things. Prior to changing this setting, we were seeing SIP OPTIONS packets/responses would occasionally take more than 3 seconds causing devices to drop and come back online.
We have configured a similar system running at Amazon handling far more traffic and can’t get the single CPU core to spike. Only small static pops during the calls.
The sheer scale of the system is making it hard to diagnose the problem.
Any thoughts on how to diagnose what is causing the single CPU core to spike?
Any thoughts on how to diagnose the problem?
Any other thoughts/comments?
Dan
This email is intended only for the use of the party to which it is addressed and may contain information that is privileged, confidential, or protected by law. If you are not the intended recipient you are hereby notified that any dissemination, copying or distribution of this email or its contents is strictly prohibited. If you have received this message in error, please notify us immediately by replying to the message and deleting it from your computer.
5 thoughts on - Large System Seeing Single CPU Core Spiking
The first thing I’d do is see where the CPU is spending time: userspace, system, nice, wait, etc. Is it actually the asterisk process consuming the CPU?
Is Asterisk running with local file-based configs, local database, remote database, etc?
If call quality is really bad already and your customer agrees, you could try the following the next time it happens…
1. Run “top -p `pidof asterisk` -n 1 -H -b” to get a list of all of Asterisk’s threads and their CPU utilization.
2. Run ast_coredumper with the –RUNNING option. This will pause Asterisk while the dump is being generated!
3. See if you can correlate the high cpu thread IDs from the top output to the threads listed in the coredumper’s -brief.txt file.
That _may_ give you an idea of where to look.
VGhhbmsgeW91IEdlb3JnZS4NCg0KSXQgaXMgdXNpbmcgbG9jYWwgZmlsZSBiYXNlZCBjb25maWd1
cmF0aW9uIGZpbGVzLg0KDQpPdGhlciBmYWN0b3JzLg0KV2UgcnVuIEFzdGVyaXNrIGluIHJlYWx0
aW1lIG1vZGUgdG8gYWxsb3cgaXQgdG8gcnVuIGFzIGZhc3QgYXMgcG9zc2libGUuDQoNCkkganVz dCBsZWFybmVkIGN1c3RvbWVyIHVwZ3JhZGVkIHRvIDI0IENQVSBjb3Jlcy4gIEFsdGhvdWdoLCBJ
4oCZbSBub3Qgc3VyZSB0aGV5IGFjdHVhbGx5IGFzc2lnbmVkIDI0IHBoeXNpY2FsIGNvcmVzIHRv IHRoaXMgbWFjaGluZSBvciBqdXN0IGluY3JlYXNpbmcgSHlwZXItViB2YWx1ZXMuDQoNCkkgd2ls bCBtb25pdG9yIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIGFuZCBzZWUgaWYgdGhlIGN1c3Rv bWVyIHdpbGwgYWxsb3cgbWUgdG8gY2FwdHVyZSBhIGNvcmVkdW1wIHdoZW4gcHJvYmxlbXMgYXJl IGhhcHBlbmluZy4NCldhaXRpbmcgZm9yIHRoZW0gdG8gcmVwb3J0IGFuIGluY2lkZW50Lg0KDQpI
ZXJlIGlzIGEgc21hbGwgc2FtcGxlIG9mIHRoZSBzeXN0ZW0gcmlnaHQgbm93ICgyNCBjb3Jlcyks IHRvIHRoZSBiZXN0IG9mIG15IGtub3dsZWRnZSBpdOKAmXMgcnVubmluZyBmaW5lLg0KDQp0b3Ag LXAgMTUwOSAtbiAxIC1IIC1iDQp0b3AgLSAxNTowNjozMiB1cCAgOTowNiwgIDIgdXNlcnMsICBs b2FkIGF2ZXJhZ2U6IDYuMDIsIDUuNTksIDUuMjYNClRocmVhZHM6IDE3MDkgdG90YWwsICAgOCBy dW5uaW5nLCAxNzAxIHNsZWVwaW5nLCAgIDAgc3RvcHBlZCwgICAwIHpvbWJpZQ0KJUNwdShzKTog IDMuMSB1cywgIDIuNSBzeSwgIDAuMCBuaSwgOTQuMyBpZCwgIDAuMCB3YSwgIDAuMCBoaSwgIDAu MSBzaSwgIDAuMCBzdA0KS2lCIE1lbSA6IDMyMTQzMDcyIHRvdGFsLCAyOTc1MDA3MiBmcmVlLCAg MTAxNjEzMiB1c2VkLCAgMTM3Njg2OCBidWZmL2NhY2hlDQpLaUIgU3dhcDogIDgzODg2MDQgdG90
YWwsICA4Mzg4NjA0IGZyZWUsICAgICAgICAwIHVzZWQuIDMwNjk3MDYwIGF2YWlsIE1lbQ0KDQog ICBQSUQgVVNFUiAgICAgIFBSICBOSSAgICBWSVJUICAgIFJFUyAgICBTSFIgUyAlQ1BVICVNRU0g ICAgIFRJTUUrIENPTU1BTkQNCiAgMTgzMCByb290ICAgICAtMTEgICAwIDEzLjc0MWcgNDkzNjgw ICAyODgyOCBSIDk5LjkgIDEuNSAxNzQ6MTMuMzkgYXN0ZXJpc2sNCiAgMTU0MSByb290ICAgICAt MTEgICAwIDEzLjc0MWcgNDkzNjgwICAyODgyOCBSIDE0LjMgIDEuNSAgMjA6MDMuMzAgYXN0ZXJp c2sNCjMzNjAxIHJvb3QgICAgIC0xMSAgIDAgMTMuNzQxZyA0OTM2ODAgIDI4ODI4IFMgIDkuNSAg MS41ICAgMDoxNi4zMCBhc3Rlcmlzaw0KNDY2MDUgcm9vdCAgICAgLTExICAgMCAxMy43NDFnIDQ5
MzY4MCAgMjg4MjggUyAgOS41ICAxLjUgICAwOjMwLjA2IGFzdGVyaXNrDQogIDIyOTUgcm9vdCAg ICAgLTExICAgMCAxMy43NDFnIDQ5MzY4MCAgMjg4MjggUyAgNC44ICAxLjUgIDEyOjI1LjUwIGFz dGVyaXNrDQogIDIyOTcgcm9vdCAgICAgLTExICAgMCAxMy43NDFnIDQ5MzY4MCAgMjg4MjggUyAg NC44ICAxLjUgICAxOjEwLjU5IGFzdGVyaXNrDQoNCg0KRnJvbTogYXN0ZXJpc2stdXNlcnMgPGFz dGVyaXNrLXVzZXJzLWJvdW5jZXNAbGlzdHMuZGlnaXVtLmNvbT4gT24gQmVoYWxmIE9mIEdlb3Jn ZSBKb3NlcGgNClNlbnQ6IFR1ZXNkYXksIFNlcHRlbWJlciAxNCwgMjAyMSA5OjM5IEFNDQpUbzog QXN0ZXJpc2sgVXNlcnMgTWFpbGluZyBMaXN0IC0gTm9uLUNvbW1lcmNpYWwgRGlzY3Vzc2lvbiA8
YXN0ZXJpc2stdXNlcnNAbGlzdHMuZGlnaXVtLmNvbT4NClN1YmplY3Q6IFJlOiBbYXN0ZXJpc2st dXNlcnNdIExhcmdlIHN5c3RlbSBzZWVpbmcgc2luZ2xlIENQVSBjb3JlIHNwaWtpbmcNCg0KDQoN
Ck9uIFR1ZSwgU2VwIDE0LCAyMDIxIGF0IDg6MDcgQU0gRGFuIENyb3BwIDxkYW5AYW10ZWxjby5j b208bWFpbHRvOmRhbkBhbXRlbGNvLmNvbT4+IHdyb3RlOg0KSSBhbSB3b3JraW5nIHdpdGggYSB2
ZXJ5IGxhcmdlIGN1c3RvbWVyIHJ1bm5pbmcgQXN0ZXJpc2sgd2l0aCBQSlNJUC4gIFN5c3RlbXMg dG90YWwgY2hhbm5lbHMgaGF2ZSBiZWVuIG92ZXIgMjUwMCAod2hpY2ggaW5jbHVkZXMgaHVuZHJl ZHMgb2YgbG9jYWwgY2hhbm5lbHMgYW5kIENvbmZCcmlkZ2VzKSB3aGVuIHRoZSBpc3N1ZXMgb2Nj dXIuDQpJdOKAmXMgcnVubmluZyBvbiBhIEh5cGVyLVYgVk0gd2l0aCAxMiBDUFUgY29yZXMuDQpU
aGluZ3Mgd29yayBmaW5lIG1vc3Qgb2YgdGhlIHRpbWUuDQoNClRoZXkgcGVyaW9kaWNhbGx5IHNl ZSAxMC0zMCBtaW51dGUgcGVyaW9kcyB3aGVyZSBhdWRpbyBzdGFydHMgc291bmRpbmcgbGlrZSBq aXR0ZXIgYnVmZmVyIHR5cGUgaXNzdWVzLiAgQ2FuIGxpdGVyYWxseSBoYXZlIHNvbWVvbmUgc3Bl bGxpbmcgdGhlaXIgbmFtZSBhbmQgYSBDb25mQnJpZGdlIHJlY29yZGluZyBvZiBpdCBzaG93cyB0
aGUgYXVkaW8gaXMgbWlzc2luZyBhIGxldHRlciBvciB0d28uDQpUaGUgb2RkIHBhcnQgaXMgYW5v dGhlciBzeXN0ZW0gKG5vdCBydW5uaW5nIEFzdGVyaXNrKSB3YXMgaGFuZGxpbmcgdGhlc2UgY2Fs bHMgcHJldmlvdXNseS4gIFRoZSBvdmVyYWxsIG5ldHdvcmsgaGFzIHBsZW50eSBvZiBiYW5kd2lk dGggKGFzIGV2aWRlbmNlZCBieSBhbm90aGVyIHN5c3RlbSBhYmxlIHRvIGhhbmRsZSB0aGUgY2Fs bCB2b2x1bWUpDQoNCk9uZSBhcmVhIHRoYXQgaGFzIHBlcnBsZXhlZCB1cyBpcyB3aGVuIHVzaW5n IGh0b3AsIHdlIHNlZSBhIHNpbmdsZSBDUFUgY29yZSB3aWxsIHNwaWtlIHRvIDEwMCUuICBXaGlj aCBjb3JlIGRvZXMga2VlcCBjaGFuZ2luZy4NCg0KQXN0ZXJpc2sgaXMgZGVmaW5pdGVseSB0aGUg cHJvY2VzcyB1c2luZyB0aGUgdmFzdCBtYWpvcml0eSBvZiB0aGUgQ1BVIGN5Y2xlcy4NCg0KV2Ug cmVjZW50bHkgZm91bmQgYSBzZXR0aW5nIG9uIEh5cGVyLVYgbmV0d29ya2luZyBTUi1JT1Ygd2hp Y2ggaW1wcm92ZWQgdGhpbmdzLiAgUHJpb3IgdG8gY2hhbmdpbmcgdGhpcyBzZXR0aW5nLCB3ZSB3
ZXJlIHNlZWluZyBTSVAgT1BUSU9OUyBwYWNrZXRzL3Jlc3BvbnNlcyB3b3VsZCBvY2Nhc2lvbmFs bHkgdGFrZSBtb3JlIHRoYW4gMyBzZWNvbmRzIGNhdXNpbmcgZGV2aWNlcyB0byBkcm9wIGFuZCBj b21lIGJhY2sgb25saW5lLg0KDQpXZSBoYXZlIGNvbmZpZ3VyZWQgYSBzaW1pbGFyIHN5c3RlbSBy dW5uaW5nIGF0IEFtYXpvbiBoYW5kbGluZyBmYXIgbW9yZSB0cmFmZmljIGFuZCBjYW7igJl0IGdl dCB0aGUgc2luZ2xlIENQVSBjb3JlIHRvIHNwaWtlLiAgT25seSBzbWFsbCBzdGF0aWMgcG9wcyBk dXJpbmcgdGhlIGNhbGxzLg0KDQpUaGUgc2hlZXIgc2NhbGUgb2YgdGhlIHN5c3RlbSBpcyBtYWtp bmcgaXQgaGFyZCB0byBkaWFnbm9zZSB0aGUgcHJvYmxlbS4NCg0KQW55IHRob3VnaHRzIG9uIGhv dyB0byBkaWFnbm9zZSB3aGF0IGlzIGNhdXNpbmcgdGhlIHNpbmdsZSBDUFUgY29yZSB0byBzcGlr ZT8NCkFueSB0aG91Z2h0cyBvbiBob3cgdG8gZGlhZ25vc2UgdGhlIHByb2JsZW0/DQpBbnkgb3Ro ZXIgdGhvdWdodHMvY29tbWVudHM/DQoNCg0KVGhlIGZpcnN0IHRoaW5nIEknZCBkbyBpcyBzZWUg d2hlcmUgdGhlIENQVSBpcyBzcGVuZGluZyB0aW1lOiB1c2Vyc3BhY2UsIHN5c3RlbSwgbmljZSwg d2FpdCwgZXRjLg0KSXMgaXQgYWN0dWFsbHkgdGhlIGFzdGVyaXNrIHByb2Nlc3MgY29uc3VtaW5n IHRoZSBDUFU/DQpJcyBBc3RlcmlzayBydW5uaW5nIHdpdGggbG9jYWwgZmlsZS1iYXNlZCBjb25m aWdzLCBsb2NhbCBkYXRhYmFzZSwgcmVtb3RlIGRhdGFiYXNlLCBldGM/DQoNCklmIGNhbGwgcXVh bGl0eSBpcyByZWFsbHkgYmFkIGFscmVhZHkgYW5kIHlvdXIgY3VzdG9tZXIgYWdyZWVzLCB5b3Ug Y291bGQgdHJ5IHRoZSBmb2xsb3dpbmcgdGhlIG5leHQgdGltZSBpdCBoYXBwZW5zLi4uDQogMS4g UnVuICJ0b3AgLXAgYHBpZG9mIGFzdGVyaXNrYCAtbiAxIC1IIC1iIiB0byBnZXQgYSBsaXN0IG9m IGFsbCBvZiBBc3RlcmlzaydzIHRocmVhZHMgYW5kIHRoZWlyIENQVSB1dGlsaXphdGlvbi4NCiAy LiBSdW4gYXN0X2NvcmVkdW1wZXIgd2l0aCB0aGUgLS1SVU5OSU5HIG9wdGlvbi4gIFRoaXMgd2ls bCBwYXVzZSBBc3RlcmlzayB3aGlsZSB0aGUgZHVtcCBpcyBiZWluZyBnZW5lcmF0ZWQhDQogMy4g U2VlIGlmIHlvdSBjYW4gY29ycmVsYXRlIHRoZSBoaWdoIGNwdSB0aHJlYWQgSURzIGZyb20gdGhl IHRvcCBvdXRwdXQgdG8gdGhlIHRocmVhZHMgbGlzdGVkIGluIHRoZSBjb3JlZHVtcGVyJ3MgLWJy aWVmLnR4dCBmaWxlLg0KDQpUaGF0IF9tYXlfIGdpdmUgeW91IGFuIGlkZWEgb2Ygd2hlcmUgdG8g bG9vay4NCg0KDQoNCkRhbg0KDQpUaGlzIGVtYWlsIGlzIGludGVuZGVkIG9ubHkgZm9yIHRoZSB1
c2Ugb2YgdGhlIHBhcnR5IHRvIHdoaWNoIGl0IGlzIGFkZHJlc3NlZCBhbmQgbWF5IGNvbnRhaW4g aW5mb3JtYXRpb24gdGhhdCBpcyBwcml2aWxlZ2VkLCBjb25maWRlbnRpYWwsIG9yIHByb3RlY3Rl ZCBieSBsYXcuIElmIHlvdSBhcmUgbm90IHRoZSBpbnRlbmRlZCByZWNpcGllbnQgeW91IGFyZSBo ZXJlYnkgbm90aWZpZWQgdGhhdCBhbnkgZGlzc2VtaW5hdGlvbiwgY29weWluZyBvciBkaXN0cmli dXRpb24gb2YgdGhpcyBlbWFpbCBvciBpdHMgY29udGVudHMgaXMgc3RyaWN0bHkgcHJvaGliaXRl ZC4gSWYgeW91IGhhdmUgcmVjZWl2ZWQgdGhpcyBtZXNzYWdlIGluIGVycm9yLCBwbGVhc2Ugbm90
aWZ5IHVzIGltbWVkaWF0ZWx5IGJ5IHJlcGx5aW5nIHRvIHRoZSBtZXNzYWdlIGFuZCBkZWxldGlu ZyBpdCBmcm9tIHlvdXIgY29tcHV0ZXIuDQotLQ0KX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fDQotLSBCYW5kd2lkdGgg YW5kIENvbG9jYXRpb24gUHJvdmlkZWQgYnkgaHR0cDovL3d3dy5hcGktZGlnaXRhbC5jb20gLS0N
Cg0KQ2hlY2sgb3V0IHRoZSBuZXcgQXN0ZXJpc2sgY29tbXVuaXR5IGZvcnVtIGF0OiBodHRwczov L2NvbW11bml0eS5hc3Rlcmlzay5vcmcvDQoNCk5ldyB0byBBc3Rlcmlzaz8gU3RhcnQgaGVyZToN
CiAgICAgIGh0dHBzOi8vd2lraS5hc3Rlcmlzay5vcmcvd2lraS9kaXNwbGF5L0FTVC9HZXR0aW5n K1N0YXJ0ZWQNCg0KYXN0ZXJpc2stdXNlcnMgbWFpbGluZyBsaXN0DQpUbyBVTlNVQlNDUklCRSBv ciB1cGRhdGUgb3B0aW9ucyB2aXNpdDoNCiAgIGh0dHA6Ly9saXN0cy5kaWdpdW0uY29tL21haWxt YW4vbGlzdGluZm8vYXN0ZXJpc2stdXNlcnMNCg0KVGhpcyBlbWFpbCBpcyBpbnRlbmRlZCBvbmx5
IGZvciB0aGUgdXNlIG9mIHRoZSBwYXJ0eSB0byB3aGljaCBpdCBpcyBhZGRyZXNzZWQgYW5kIG1h eSBjb250YWluIGluZm9ybWF0aW9uIHRoYXQgaXMgcHJpdmlsZWdlZCwgY29uZmlkZW50aWFsLCBv ciBwcm90ZWN0ZWQgYnkgbGF3LiBJZiB5b3UgYXJlIG5vdCB0aGUgaW50ZW5kZWQgcmVjaXBpZW50
IHlvdSBhcmUgaGVyZWJ5IG5vdGlmaWVkIHRoYXQgYW55IGRpc3NlbWluYXRpb24sIGNvcHlpbmcg b3IgZGlzdHJpYnV0aW9uIG9mIHRoaXMgZW1haWwgb3IgaXRzIGNvbnRlbnRzIGlzIHN0cmljdGx5
IHByb2hpYml0ZWQuIElmIHlvdSBoYXZlIHJlY2VpdmVkIHRoaXMgbWVzc2FnZSBpbiBlcnJvciwg cGxlYXNlIG5vdGlmeSB1cyBpbW1lZGlhdGVseSBieSByZXBseWluZyB0byB0aGUgbWVzc2FnZSBh bmQgZGVsZXRpbmcgaXQgZnJvbSB5b3VyIGNvbXB1dGVyLg0K
Well, that’s good at least. It eliminates the database layer which can be troublesome in virtualized environments, especially if a SAN and/or a remote database server is used.
Running at “realtime” level is usually NOT a good thing for Asterisk and rarely needed when there are adequate resources. Let’s say you have a local DNS resolver running. If the system is stressed, Asterisk could actually starve the resolver of resources, which then causes Asterisk to back up waiting for DNS resolution to complete. We’ve seen this happen when using a database backend for configuration. Someone thinks “I’ll just give Asterisk more resources” forgetting that Asterisk needs the database engine to run.
How is this VM’s priority versus other VMs on the same cluster? Just because it has 24 threads doesn’t mean it’s got 24 threads dedicated. Does using a realtime priority in the VM trickle down to Hyper-V’s hypervisor’s resource management algorithms?
There’s definitely one thread that’s pegging a CPU. If that thread is one of the few “singleton” threads, that can be an issue. What does “core show taskprocessors” indicate? Are there any that are hitting their limits?
VGhhbmsgeW91IEdlb3JnZS4NCg0KDQpUaGF04oCZcyBnb29kIGFkdmljZSBvbiB0aGUgcmVhbHRp bWUgbW9kZS4NCkkgY2FuIGhhdmUgdGhlbSBjaGFuZ2UgdGhpcyBzbyByZWFsdGltZSBtb2RlIGxh dGVyIHRoaXMgd2Vlay4NCg0KDQpDdXN0b21lcuKAmXMgdGFza3Byb2Nlc3NvciBsaXN0IGlzIHZl cnkgbGFyZ2UuDQoNClRoZXJlIGFyZSBhIGxhcmdlIG51bWJlciBvZiBlbnRyaWVzIGZyb20gY29y ZSBzaG93IHRhc2twcm9jZXNzb3JzIGRhdGENClRoZSBhcmUgb25lIGEgZmV3IHRoYXQgYXJlIHNo b3dpbmcgdGhlIE1heCBEZXB0aCBvZiAxMCBvciBtb3JlLiAgT25seSBpbmNsdWRpbmcgdGhvc2Ug YW5kIHRoZSBzdGFzaXMvcG9vbA0KDQpQcm9jZXNzb3IgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcm9jZXNzZWQgICBJbiBRdWV1
ZSAgTWF4IERlcHRoICBMb3cgd2F0ZXIgSGlnaCB3YXRlcg0KcGpzaXAvcG9vbC1jb250cm9sICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNTAx NTk5ICAgICAgICAgIDAgICAgICAgICA4OSAgICAgICAgNDUwICAgICAgICA1MDANCnN0YXNpcy9t OmNhY2hlX3BhdHRlcm46MC9lbmRwb2ludDphbGwtMDAwMDE1ZjAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDM4MzIyNCAgICAgICAgICAwICAgICAgICAgMjEgICAgICAgIDQ1MCAgICAgICAg NTAwDQpzdGFzaXMvbTpkZXZpY2VzdGF0ZTphbGwtMDAwMDAwMDIgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAyMzM4MzYgICAgICAgICAgMCAgICAgICAgIDI4ICAgICAg ICA0NTAgICAgICAgIDUwMA0Kc3Rhc2lzL206bWFuYWdlcjpjb3JlLTAwMDAwMDA2ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0NjQ5MzE2ICAgICAgICAgIDAgICAg ICAgICA2OSAgICAgICAyNzAwICAgICAgIDMwMDANCnN0YXNpcy9wb29sICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMTY3MCAg ICAgICAgICAwICAgICAgICAgIDIgICAgICAgIDQ1MCAgICAgICAgNTAwDQpzdGFzaXMvcG9vbC1j b250cm9sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgMjM1MDUgICAgICAgICAgMCAgICAgICAgIDc1ICAgICAgICA0NTAgICAgICAgIDUwMA0K
DQo1OTIyIHRhc2twcm9jZXNzb3JzDQoNCg0KV2UgZG8gdXNlIEFNSSBmb3IgYSBzaWduaWZpY2Fu dCBhbW91bnQgb2YgY29tbXVuaWNhdGlvbiAoYWN0aW9uL2V2ZW50cykuDQpNaWdodCB0aGlzIGJl IGEgc2luZ2xldG9uIHRoYXQgY291bGQgZXhwbGFpbiB0aGUgaGlnaCB1c2UgZm9yIGEgc2luZ2xl IGFzdGVyaXNrIHByb2Nlc3MgaWQ/DQpOT1RFOiB3b3JraW5nIG9uIG1pZ3JhdGluZyB0byBBUkkg d2hpY2ggSSBrbm93IHdpbGwgaGVscCBpbiB0aGUgY2FsbCBjb250cm9sLg0KDQpEYW4NCg0KDQpG
cm9tOiBhc3Rlcmlzay11c2VycyA8YXN0ZXJpc2stdXNlcnMtYm91bmNlc0BsaXN0cy5kaWdpdW0u Y29tPiBPbiBCZWhhbGYgT2YgR2VvcmdlIEpvc2VwaA0KU2VudDogVHVlc2RheSwgU2VwdGVtYmVy IDE0LCAyMDIxIDEyOjU2IFBNDQpUbzogQXN0ZXJpc2sgVXNlcnMgTWFpbGluZyBMaXN0IC0gTm9u LUNvbW1lcmNpYWwgRGlzY3Vzc2lvbiA8YXN0ZXJpc2stdXNlcnNAbGlzdHMuZGlnaXVtLmNvbT4N
ClN1YmplY3Q6IFJlOiBbYXN0ZXJpc2stdXNlcnNdIExhcmdlIHN5c3RlbSBzZWVpbmcgc2luZ2xl IENQVSBjb3JlIHNwaWtpbmcNCg0KDQoNCk9uIFR1ZSwgU2VwIDE0LCAyMDIxIGF0IDk6MTkgQU0g RGFuIENyb3BwIDxkYW5AYW10ZWxjby5jb208bWFpbHRvOmRhbkBhbXRlbGNvLmNvbT4+IHdyb3Rl Og0KVGhhbmsgeW91IEdlb3JnZS4NCg0KSXQgaXMgdXNpbmcgbG9jYWwgZmlsZSBiYXNlZCBjb25m aWd1cmF0aW9uIGZpbGVzLg0KDQpXZWxsLCB0aGF0J3MgZ29vZCBhdCBsZWFzdC4gIEl0IGVsaW1p bmF0ZXMgdGhlIGRhdGFiYXNlIGxheWVyIHdoaWNoIGNhbiBiZSB0cm91Ymxlc29tZSBpbiB2aXJ0
dWFsaXplZCBlbnZpcm9ubWVudHMsIGVzcGVjaWFsbHkgaWYgYSBTQU4gYW5kL29yIGEgcmVtb3Rl IGRhdGFiYXNlIHNlcnZlciBpcyB1c2VkLg0KDQpPdGhlciBmYWN0b3JzLg0KV2UgcnVuIEFzdGVy aXNrIGluIHJlYWx0aW1lIG1vZGUgdG8gYWxsb3cgaXQgdG8gcnVuIGFzIGZhc3QgYXMgcG9zc2li bGUuDQoNClJ1bm5pbmcgYXQgInJlYWx0aW1lIiBsZXZlbCBpcyB1c3VhbGx5IE5PVCBhIGdvb2Qg dGhpbmcgZm9yIEFzdGVyaXNrIGFuZCByYXJlbHkgbmVlZGVkIHdoZW4gdGhlcmUgYXJlIGFkZXF1
YXRlIHJlc291cmNlcy4gIExldCdzIHNheSB5b3UgaGF2ZSBhIGxvY2FsIEROUyByZXNvbHZlciBy dW5uaW5nLiAgIElmIHRoZSBzeXN0ZW0gaXMgc3RyZXNzZWQsIEFzdGVyaXNrIGNvdWxkIGFjdHVh bGx5IHN0YXJ2ZSB0aGUgcmVzb2x2ZXIgb2YgcmVzb3VyY2VzLCB3aGljaCB0aGVuIGNhdXNlcyBB
c3RlcmlzayB0byBiYWNrIHVwIHdhaXRpbmcgZm9yIEROUyByZXNvbHV0aW9uIHRvIGNvbXBsZXRl LiAgV2UndmUgc2VlbiB0aGlzIGhhcHBlbiB3aGVuIHVzaW5nIGEgZGF0YWJhc2UgYmFja2VuZCBm b3IgY29uZmlndXJhdGlvbi4gIFNvbWVvbmUgdGhpbmtzICJJJ2xsIGp1c3QgZ2l2ZSBBc3Rlcmlz ayBtb3JlIHJlc291cmNlcyIgZm9yZ2V0dGluZyB0aGF0IEFzdGVyaXNrIG5lZWRzIHRoZSBkYXRh YmFzZSBlbmdpbmUgdG8gcnVuLg0KDQoNCkkganVzdCBsZWFybmVkIGN1c3RvbWVyIHVwZ3JhZGVk IHRvIDI0IENQVSBjb3Jlcy4gIEFsdGhvdWdoLCBJ4oCZbSBub3Qgc3VyZSB0aGV5IGFjdHVhbGx5
IGFzc2lnbmVkIDI0IHBoeXNpY2FsIGNvcmVzIHRvIHRoaXMgbWFjaGluZSBvciBqdXN0IGluY3Jl YXNpbmcgSHlwZXItViB2YWx1ZXMuDQoNCkhvdyBpcyB0aGlzIFZNJ3MgcHJpb3JpdHkgdmVyc3Vz IG90aGVyIFZNcyBvbiB0aGUgc2FtZSBjbHVzdGVyPyAgSnVzdCBiZWNhdXNlIGl0IGhhcyAyNCB0
aHJlYWRzIGRvZXNuJ3QgbWVhbiBpdCdzIGdvdCAyNCB0aHJlYWRzIGRlZGljYXRlZC4gIERvZXMg dXNpbmcgYSByZWFsdGltZSBwcmlvcml0eSBpbiB0aGUgVk0gdHJpY2tsZSBkb3duIHRvIEh5cGVy LVYncyBoeXBlcnZpc29yJ3MgcmVzb3VyY2UgbWFuYWdlbWVudCBhbGdvcml0aG1zPw0KDQoNCkkg d2lsbCBtb25pdG9yIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIGFuZCBzZWUgaWYgdGhlIGN1
c3RvbWVyIHdpbGwgYWxsb3cgbWUgdG8gY2FwdHVyZSBhIGNvcmVkdW1wIHdoZW4gcHJvYmxlbXMg YXJlIGhhcHBlbmluZy4NCldhaXRpbmcgZm9yIHRoZW0gdG8gcmVwb3J0IGFuIGluY2lkZW50Lg0K
DQpIZXJlIGlzIGEgc21hbGwgc2FtcGxlIG9mIHRoZSBzeXN0ZW0gcmlnaHQgbm93ICgyNCBjb3Jl cyksIHRvIHRoZSBiZXN0IG9mIG15IGtub3dsZWRnZSBpdOKAmXMgcnVubmluZyBmaW5lLg0KDQp0
b3AgLXAgMTUwOSAtbiAxIC1IIC1iDQp0b3AgLSAxNTowNjozMiB1cCAgOTowNiwgIDIgdXNlcnMs ICBsb2FkIGF2ZXJhZ2U6IDYuMDIsIDUuNTksIDUuMjYNClRocmVhZHM6IDE3MDkgdG90YWwsICAg OCBydW5uaW5nLCAxNzAxIHNsZWVwaW5nLCAgIDAgc3RvcHBlZCwgICAwIHpvbWJpZQ0KJUNwdShz KTogIDMuMSB1cywgIDIuNSBzeSwgIDAuMCBuaSwgOTQuMyBpZCwgIDAuMCB3YSwgIDAuMCBoaSwg IDAuMSBzaSwgIDAuMCBzdA0KS2lCIE1lbSA6IDMyMTQzMDcyIHRvdGFsLCAyOTc1MDA3MiBmcmVl LCAgMTAxNjEzMiB1c2VkLCAgMTM3Njg2OCBidWZmL2NhY2hlDQpLaUIgU3dhcDogIDgzODg2MDQg dG90YWwsICA4Mzg4NjA0IGZyZWUsICAgICAgICAwIHVzZWQuIDMwNjk3MDYwIGF2YWlsIE1lbQ0K
DQogICBQSUQgVVNFUiAgICAgIFBSICBOSSAgICBWSVJUICAgIFJFUyAgICBTSFIgUyAlQ1BVICVN
RU0gICAgIFRJTUUrIENPTU1BTkQNCiAgMTgzMCByb290ICAgICAtMTEgICAwIDEzLjc0MWcgNDkz NjgwICAyODgyOCBSIDk5LjkgIDEuNSAxNzQ6MTMuMzkgYXN0ZXJpc2sNCiAgMTU0MSByb290ICAg ICAtMTEgICAwIDEzLjc0MWcgNDkzNjgwICAyODgyOCBSIDE0LjMgIDEuNSAgMjA6MDMuMzAgYXN0
ZXJpc2sNCjMzNjAxIHJvb3QgICAgIC0xMSAgIDAgMTMuNzQxZyA0OTM2ODAgIDI4ODI4IFMgIDku NSAgMS41ICAgMDoxNi4zMCBhc3Rlcmlzaw0KNDY2MDUgcm9vdCAgICAgLTExICAgMCAxMy43NDFn IDQ5MzY4MCAgMjg4MjggUyAgOS41ICAxLjUgICAwOjMwLjA2IGFzdGVyaXNrDQogIDIyOTUgcm9v dCAgICAgLTExICAgMCAxMy43NDFnIDQ5MzY4MCAgMjg4MjggUyAgNC44ICAxLjUgIDEyOjI1LjUw IGFzdGVyaXNrDQogIDIyOTcgcm9vdCAgICAgLTExICAgMCAxMy43NDFnIDQ5MzY4MCAgMjg4Mjgg UyAgNC44ICAxLjUgICAxOjEwLjU5IGFzdGVyaXNrDQoNClRoZXJlJ3MgZGVmaW5pdGVseSBvbmUg dGhyZWFkIHRoYXQncyBwZWdnaW5nIGEgQ1BVLiAgSWYgdGhhdCB0aHJlYWQgaXMgb25lIG9mIHRo ZSBmZXcgInNpbmdsZXRvbiIgdGhyZWFkcywgdGhhdCBjYW4gYmUgYW4gaXNzdWUuICBXaGF0IGRv ZXMgImNvcmUgc2hvdyB0YXNrcHJvY2Vzc29ycyIgaW5kaWNhdGU/ICBBcmUgdGhlcmUgYW55IHRo YXQgYXJlIGhpdHRpbmcgdGhlaXIgbGltaXRzPw0KDQoNCg0KRnJvbTogYXN0ZXJpc2stdXNlcnMg PGFzdGVyaXNrLXVzZXJzLWJvdW5jZXNAbGlzdHMuZGlnaXVtLmNvbTxtYWlsdG86YXN0ZXJpc2st dXNlcnMtYm91bmNlc0BsaXN0cy5kaWdpdW0uY29tPj4gT24gQmVoYWxmIE9mIEdlb3JnZSBKb3Nl cGgNClNlbnQ6IFR1ZXNkYXksIFNlcHRlbWJlciAxNCwgMjAyMSA5OjM5IEFNDQpUbzogQXN0ZXJp c2sgVXNlcnMgTWFpbGluZyBMaXN0IC0gTm9uLUNvbW1lcmNpYWwgRGlzY3Vzc2lvbiA8YXN0ZXJp c2stdXNlcnNAbGlzdHMuZGlnaXVtLmNvbTxtYWlsdG86YXN0ZXJpc2stdXNlcnNAbGlzdHMuZGln aXVtLmNvbT4+DQpTdWJqZWN0OiBSZTogW2FzdGVyaXNrLXVzZXJzXSBMYXJnZSBzeXN0ZW0gc2Vl aW5nIHNpbmdsZSBDUFUgY29yZSBzcGlraW5nDQoNCg0KDQpPbiBUdWUsIFNlcCAxNCwgMjAyMSBh dCA4OjA3IEFNIERhbiBDcm9wcCA8ZGFuQGFtdGVsY28uY29tPG1haWx0bzpkYW5AYW10ZWxjby5j b20+PiB3cm90ZToNCkkgYW0gd29ya2luZyB3aXRoIGEgdmVyeSBsYXJnZSBjdXN0b21lciBydW5u aW5nIEFzdGVyaXNrIHdpdGggUEpTSVAuICBTeXN0ZW1zIHRvdGFsIGNoYW5uZWxzIGhhdmUgYmVl biBvdmVyIDI1MDAgKHdoaWNoIGluY2x1ZGVzIGh1bmRyZWRzIG9mIGxvY2FsIGNoYW5uZWxzIGFu ZCBDb25mQnJpZGdlcykgd2hlbiB0aGUgaXNzdWVzIG9jY3VyLg0KSXTigJlzIHJ1bm5pbmcgb24g YSBIeXBlci1WIFZNIHdpdGggMTIgQ1BVIGNvcmVzLg0KVGhpbmdzIHdvcmsgZmluZSBtb3N0IG9m IHRoZSB0aW1lLg0KDQpUaGV5IHBlcmlvZGljYWxseSBzZWUgMTAtMzAgbWludXRlIHBlcmlvZHMg d2hlcmUgYXVkaW8gc3RhcnRzIHNvdW5kaW5nIGxpa2Ugaml0dGVyIGJ1ZmZlciB0eXBlIGlzc3Vl cy4gIENhbiBsaXRlcmFsbHkgaGF2ZSBzb21lb25lIHNwZWxsaW5nIHRoZWlyIG5hbWUgYW5kIGEg Q29uZkJyaWRnZSByZWNvcmRpbmcgb2YgaXQgc2hvd3MgdGhlIGF1ZGlvIGlzIG1pc3NpbmcgYSBs ZXR0ZXIgb3IgdHdvLg0KVGhlIG9kZCBwYXJ0IGlzIGFub3RoZXIgc3lzdGVtIChub3QgcnVubmlu ZyBBc3Rlcmlzaykgd2FzIGhhbmRsaW5nIHRoZXNlIGNhbGxzIHByZXZpb3VzbHkuICBUaGUgb3Zl cmFsbCBuZXR3b3JrIGhhcyBwbGVudHkgb2YgYmFuZHdpZHRoIChhcyBldmlkZW5jZWQgYnkgYW5v dGhlciBzeXN0ZW0gYWJsZSB0byBoYW5kbGUgdGhlIGNhbGwgdm9sdW1lKQ0KDQpPbmUgYXJlYSB0
aGF0IGhhcyBwZXJwbGV4ZWQgdXMgaXMgd2hlbiB1c2luZyBodG9wLCB3ZSBzZWUgYSBzaW5nbGUg Q1BVIGNvcmUgd2lsbCBzcGlrZSB0byAxMDAlLiAgV2hpY2ggY29yZSBkb2VzIGtlZXAgY2hhbmdp bmcuDQoNCkFzdGVyaXNrIGlzIGRlZmluaXRlbHkgdGhlIHByb2Nlc3MgdXNpbmcgdGhlIHZhc3Qg bWFqb3JpdHkgb2YgdGhlIENQVSBjeWNsZXMuDQoNCldlIHJlY2VudGx5IGZvdW5kIGEgc2V0dGlu ZyBvbiBIeXBlci1WIG5ldHdvcmtpbmcgU1ItSU9WIHdoaWNoIGltcHJvdmVkIHRoaW5ncy4gIFBy aW9yIHRvIGNoYW5naW5nIHRoaXMgc2V0dGluZywgd2Ugd2VyZSBzZWVpbmcgU0lQIE9QVElPTlMg cGFja2V0cy9yZXNwb25zZXMgd291bGQgb2NjYXNpb25hbGx5IHRha2UgbW9yZSB0aGFuIDMgc2Vj b25kcyBjYXVzaW5nIGRldmljZXMgdG8gZHJvcCBhbmQgY29tZSBiYWNrIG9ubGluZS4NCg0KV2Ug aGF2ZSBjb25maWd1cmVkIGEgc2ltaWxhciBzeXN0ZW0gcnVubmluZyBhdCBBbWF6b24gaGFuZGxp bmcgZmFyIG1vcmUgdHJhZmZpYyBhbmQgY2Fu4oCZdCBnZXQgdGhlIHNpbmdsZSBDUFUgY29yZSB0
byBzcGlrZS4gIE9ubHkgc21hbGwgc3RhdGljIHBvcHMgZHVyaW5nIHRoZSBjYWxscy4NCg0KVGhl IHNoZWVyIHNjYWxlIG9mIHRoZSBzeXN0ZW0gaXMgbWFraW5nIGl0IGhhcmQgdG8gZGlhZ25vc2Ug dGhlIHByb2JsZW0uDQoNCkFueSB0aG91Z2h0cyBvbiBob3cgdG8gZGlhZ25vc2Ugd2hhdCBpcyBj YXVzaW5nIHRoZSBzaW5nbGUgQ1BVIGNvcmUgdG8gc3Bpa2U/DQpBbnkgdGhvdWdodHMgb24gaG93
IHRvIGRpYWdub3NlIHRoZSBwcm9ibGVtPw0KQW55IG90aGVyIHRob3VnaHRzL2NvbW1lbnRzPw0K
DQoNClRoZSBmaXJzdCB0aGluZyBJJ2QgZG8gaXMgc2VlIHdoZXJlIHRoZSBDUFUgaXMgc3BlbmRp bmcgdGltZTogdXNlcnNwYWNlLCBzeXN0ZW0sIG5pY2UsIHdhaXQsIGV0Yy4NCklzIGl0IGFjdHVh bGx5IHRoZSBhc3RlcmlzayBwcm9jZXNzIGNvbnN1bWluZyB0aGUgQ1BVPw0KSXMgQXN0ZXJpc2sg cnVubmluZyB3aXRoIGxvY2FsIGZpbGUtYmFzZWQgY29uZmlncywgbG9jYWwgZGF0YWJhc2UsIHJl bW90ZSBkYXRhYmFzZSwgZXRjPw0KDQpJZiBjYWxsIHF1YWxpdHkgaXMgcmVhbGx5IGJhZCBhbHJl YWR5IGFuZCB5b3VyIGN1c3RvbWVyIGFncmVlcywgeW91IGNvdWxkIHRyeSB0aGUgZm9sbG93aW5n IHRoZSBuZXh0IHRpbWUgaXQgaGFwcGVucy4uLg0KIDEuIFJ1biAidG9wIC1wIGBwaWRvZiBhc3Rl cmlza2AgLW4gMSAtSCAtYiIgdG8gZ2V0IGEgbGlzdCBvZiBhbGwgb2YgQXN0ZXJpc2sncyB0aHJl YWRzIGFuZCB0aGVpciBDUFUgdXRpbGl6YXRpb24uDQogMi4gUnVuIGFzdF9jb3JlZHVtcGVyIHdp dGggdGhlIC0tUlVOTklORyBvcHRpb24uICBUaGlzIHdpbGwgcGF1c2UgQXN0ZXJpc2sgd2hpbGUg dGhlIGR1bXAgaXMgYmVpbmcgZ2VuZXJhdGVkIQ0KIDMuIFNlZSBpZiB5b3UgY2FuIGNvcnJlbGF0
ZSB0aGUgaGlnaCBjcHUgdGhyZWFkIElEcyBmcm9tIHRoZSB0b3Agb3V0cHV0IHRvIHRoZSB0aHJl YWRzIGxpc3RlZCBpbiB0aGUgY29yZWR1bXBlcidzIC1icmllZi50eHQgZmlsZS4NCg0KVGhhdCBf bWF5XyBnaXZlIHlvdSBhbiBpZGVhIG9mIHdoZXJlIHRvIGxvb2suDQoNCg0KDQpEYW4NCg0KVGhp cyBlbWFpbCBpcyBpbnRlbmRlZCBvbmx5IGZvciB0aGUgdXNlIG9mIHRoZSBwYXJ0eSB0byB3aGlj aCBpdCBpcyBhZGRyZXNzZWQgYW5kIG1heSBjb250YWluIGluZm9ybWF0aW9uIHRoYXQgaXMgcHJp dmlsZWdlZCwgY29uZmlkZW50aWFsLCBvciBwcm90ZWN0ZWQgYnkgbGF3LiBJZiB5b3UgYXJlIG5v dCB0aGUgaW50ZW5kZWQgcmVjaXBpZW50IHlvdSBhcmUgaGVyZWJ5IG5vdGlmaWVkIHRoYXQgYW55
IGRpc3NlbWluYXRpb24sIGNvcHlpbmcgb3IgZGlzdHJpYnV0aW9uIG9mIHRoaXMgZW1haWwgb3Ig aXRzIGNvbnRlbnRzIGlzIHN0cmljdGx5IHByb2hpYml0ZWQuIElmIHlvdSBoYXZlIHJlY2VpdmVk IHRoaXMgbWVzc2FnZSBpbiBlcnJvciwgcGxlYXNlIG5vdGlmeSB1cyBpbW1lZGlhdGVseSBieSBy ZXBseWluZyB0byB0aGUgbWVzc2FnZSBhbmQgZGVsZXRpbmcgaXQgZnJvbSB5b3VyIGNvbXB1dGVy Lg0KLS0NCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXw0KLS0gQmFuZHdpZHRoIGFuZCBDb2xvY2F0aW9uIFByb3ZpZGVk IGJ5IGh0dHA6Ly93d3cuYXBpLWRpZ2l0YWwuY29tIC0tDQoNCkNoZWNrIG91dCB0aGUgbmV3IEFz dGVyaXNrIGNvbW11bml0eSBmb3J1bSBhdDogaHR0cHM6Ly9jb21tdW5pdHkuYXN0ZXJpc2sub3Jn Lw0KDQpOZXcgdG8gQXN0ZXJpc2s/IFN0YXJ0IGhlcmU6DQogICAgICBodHRwczovL3dpa2kuYXN0
ZXJpc2sub3JnL3dpa2kvZGlzcGxheS9BU1QvR2V0dGluZytTdGFydGVkDQoNCmFzdGVyaXNrLXVz ZXJzIG1haWxpbmcgbGlzdA0KVG8gVU5TVUJTQ1JJQkUgb3IgdXBkYXRlIG9wdGlvbnMgdmlzaXQ6
DQogICBodHRwOi8vbGlzdHMuZGlnaXVtLmNvbS9tYWlsbWFuL2xpc3RpbmZvL2FzdGVyaXNrLXVz ZXJzDQoNClRoaXMgZW1haWwgaXMgaW50ZW5kZWQgb25seSBmb3IgdGhlIHVzZSBvZiB0aGUgcGFy dHkgdG8gd2hpY2ggaXQgaXMgYWRkcmVzc2VkIGFuZCBtYXkgY29udGFpbiBpbmZvcm1hdGlvbiB0
aGF0IGlzIHByaXZpbGVnZWQsIGNvbmZpZGVudGlhbCwgb3IgcHJvdGVjdGVkIGJ5IGxhdy4gSWYg eW91IGFyZSBub3QgdGhlIGludGVuZGVkIHJlY2lwaWVudCB5b3UgYXJlIGhlcmVieSBub3RpZmll ZCB0aGF0IGFueSBkaXNzZW1pbmF0aW9uLCBjb3B5aW5nIG9yIGRpc3RyaWJ1dGlvbiBvZiB0aGlz IGVtYWlsIG9yIGl0cyBjb250ZW50cyBpcyBzdHJpY3RseSBwcm9oaWJpdGVkLiBJZiB5b3UgaGF2
ZSByZWNlaXZlZCB0aGlzIG1lc3NhZ2UgaW4gZXJyb3IsIHBsZWFzZSBub3RpZnkgdXMgaW1tZWRp YXRlbHkgYnkgcmVwbHlpbmcgdG8gdGhlIG1lc3NhZ2UgYW5kIGRlbGV0aW5nIGl0IGZyb20geW91
ciBjb21wdXRlci4NCi0tDQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18NCi0tIEJhbmR3aWR0aCBhbmQgQ29sb2NhdGlv biBQcm92aWRlZCBieSBodHRwOi8vd3d3LmFwaS1kaWdpdGFsLmNvbSAtLQ0KDQpDaGVjayBvdXQg dGhlIG5ldyBBc3RlcmlzayBjb21tdW5pdHkgZm9ydW0gYXQ6IGh0dHBzOi8vY29tbXVuaXR5LmFz dGVyaXNrLm9yZy8NCg0KTmV3IHRvIEFzdGVyaXNrPyBTdGFydCBoZXJlOg0KICAgICAgaHR0cHM6
Ly93aWtpLmFzdGVyaXNrLm9yZy93aWtpL2Rpc3BsYXkvQVNUL0dldHRpbmcrU3RhcnRlZA0KDQph c3Rlcmlzay11c2VycyBtYWlsaW5nIGxpc3QNClRvIFVOU1VCU0NSSUJFIG9yIHVwZGF0ZSBvcHRp b25zIHZpc2l0Og0KICAgaHR0cDovL2xpc3RzLmRpZ2l1bS5jb20vbWFpbG1hbi9saXN0aW5mby9h c3Rlcmlzay11c2Vycw0KDQpUaGlzIGVtYWlsIGlzIGludGVuZGVkIG9ubHkgZm9yIHRoZSB1c2Ug b2YgdGhlIHBhcnR5IHRvIHdoaWNoIGl0IGlzIGFkZHJlc3NlZCBhbmQgbWF5IGNvbnRhaW4gaW5m b3JtYXRpb24gdGhhdCBpcyBwcml2aWxlZ2VkLCBjb25maWRlbnRpYWwsIG9yIHByb3RlY3RlZCBi eSBsYXcuIElmIHlvdSBhcmUgbm90IHRoZSBpbnRlbmRlZCByZWNpcGllbnQgeW91IGFyZSBoZXJl Ynkgbm90aWZpZWQgdGhhdCBhbnkgZGlzc2VtaW5hdGlvbiwgY29weWluZyBvciBkaXN0cmlidXRp b24gb2YgdGhpcyBlbWFpbCBvciBpdHMgY29udGVudHMgaXMgc3RyaWN0bHkgcHJvaGliaXRlZC4g SWYgeW91IGhhdmUgcmVjZWl2ZWQgdGhpcyBtZXNzYWdlIGluIGVycm9yLCBwbGVhc2Ugbm90aWZ5
IHVzIGltbWVkaWF0ZWx5IGJ5IHJlcGx5aW5nIHRvIHRoZSBtZXNzYWdlIGFuZCBkZWxldGluZyBp dCBmcm9tIHlvdXIgY29tcHV0ZXIuDQo
QW55b25lIGtub3cgd2hhdCB0aGUgcGpzaXAvZGlzdHJpYnV0b3IgdGFza3MgYXJlIGRvaW5nPw0K
DQpDdXN0b21lciBzaXRlIGhhZCBpc3N1ZSB0aGlzIG1vcm5pbmcgYW5kIEkgd2FzIGFibGUgdG8g Y2FwdHVyZSBwYXJ0IG9mIHRoZSB0YXNrcHJvY2Vzc29ycy4gIFRoaXMgaXMgdGhlIGZpcnN0IHRp bWUgSSBoYXZlIG5vdGljZWQgYW55IG9mIG91ciBzeXN0ZW1zIG9yIGxvYWQgdGVzdHMgd2l0aCBw anNpcC9kaXN0cmlidXRvciBNYXggRGVwdGggcmVhY2hpbmcgZG91YmxlIGRpZ2l0cy4NClJpZ2h0
IG5vdywgdGhlaXIgc3lzdGVtIGhhcyBtb3JlIGFjdGl2ZSBjaGFubmVscyBhbmQgYWN0aXZlIGNh bGxzIGluIHRoZSBzeXN0ZW0gdGhhbiB3aGVuIHRoZXkgZXhwZXJpZW5jZWQgcHJvYmxlbXMsIGJ1
dCB0aGUgcGpzaXAvZGlzdHJpYnV0b3JzIGFsbCBoYXZlIGEgTWF4RGVwdGggb2YgMiBvciAzLg0K
DQpBbnkgcmVjb21tZW5kYXRpb25zIG9yIHRob3VnaHRzIG9uIHdoYXQgbWF5IGNhdXNlIHBqc2lw L2Rpc3RyaWJ1dG9yIHRhc2tzIHRvIHNlZSBNYXhEZXB0aCBpbmNyZWFzZT8NCkNvdWxkIHRoaXMg Y2F1c2Ugaml0dGVyIGFuZCBQSlNJUCBwYWNrZXQgcHJvY2Vzc2luZyB0byBiZSBzbG93PyAgKE90
aGVyIGVuZCBkcm9wcyBvZmZsaW5lIGJlY2F1c2UgT1BUSU9OUyByZXBseSBub3QgcmVjZWl2ZWQg b3IgbWF5YmUgbm90IHByb2Nlc3NlZCBpbiB0aW1lKQ0KDQpwanNpcC9kaXN0cmlidXRvci0wMDAw MGFlOSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMw MTAgICAgICAgICAgMCAgICAgICAgIDEzICAgICAgICA0NTAgICAgICAgIDUwMA0KcGpzaXAvZGlz dHJpYnV0b3ItMDAwMDBhZWEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAyOTc4ICAgICAgICAgIDAgICAgICAgICAzMCAgICAgICAgNDUwICAgICAgICA1
MDANCnBqc2lwL2Rpc3RyaWJ1dG9yLTAwMDAwYWViICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgMzEzMiAgICAgICAgICAwICAgICAgICAgMTEgICAgICAg IDQ1MCAgICAgICAgNTAwDQpwanNpcC9kaXN0cmlidXRvci0wMDAwMGFlYyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI3NTcgICAgICAgICAgMCAgICAg ICAgICA2ICAgICAgICA0NTAgICAgICAgIDUwMA0KcGpzaXAvZGlzdHJpYnV0b3ItMDAwMDBhZWQg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzMzM2ICAg ICAgICAgIDAgICAgICAgICAxNSAgICAgICAgNDUwICAgICAgICA1MDANCnBqc2lwL2Rpc3RyaWJ1
dG9yLTAwMDAwYWVlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgMjk0NiAgICAgICAgICAwICAgICAgICAgMTQgICAgICAgIDQ1MCAgICAgICAgNTAwDQpw anNpcC9kaXN0cmlidXRvci0wMDAwMGFlZiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIDI5NjYgICAgICAgICAgMCAgICAgICAgICA4ICAgICAgICA0NTAg ICAgICAgIDUwMA0KcGpzaXAvZGlzdHJpYnV0b3ItMDAwMDBhZjAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyODA1ICAgICAgICAgIDAgICAgICAgICAx OCAgICAgICAgNDUwICAgICAgICA1MDANCnBqc2lwL2Rpc3RyaWJ1dG9yLTAwMDAwYWYxICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzM0MSAgICAgICAg ICAwICAgICAgICAgMTIgICAgICAgIDQ1MCAgICAgICAgNTAwDQpwanNpcC9kaXN0cmlidXRvci0w MDAwMGFmMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IDMyODIgICAgICAgICAgMCAgICAgICAgICA5ICAgICAgICA0NTAgICAgICAgIDUwMA0KcGpzaXAv ZGlzdHJpYnV0b3ItMDAwMDBhZjMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAzMjI4ICAgICAgICAgIDAgICAgICAgICAxMSAgICAgICAgNDUwICAgICAg ICA1MDANCnBqc2lwL2Rpc3RyaWJ1dG9yLTAwMDAwYWY0ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgMjg2NiAgICAgICAgICAwICAgICAgICAgIDkgICAg ICAgIDQ1MCAgICAgICAgNTAwDQpwanNpcC9kaXN0cmlidXRvci0wMDAwMGFmNSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI5MDIgICAgICAgICAgMCAg ICAgICAgIDEwICAgICAgICA0NTAgICAgICAgIDUwMA0KcGpzaXAvZGlzdHJpYnV0b3ItMDAwMDBh ZjYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzMDMy ICAgICAgICAgIDAgICAgICAgICAyNCAgICAgICAgNDUwICAgICAgICA1MDANCnBqc2lwL2Rpc3Ry aWJ1dG9yLTAwMDAwYWY3ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgMjg3MiAgICAgICAgICAwICAgICAgICAgIDggICAgICAgIDQ1MCAgICAgICAgNTAw DQpwanNpcC9kaXN0cmlidXRvci0wMDAwMGFmOCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIDI4ODEgICAgICAgICAgMCAgICAgICAgICA5ICAgICAgICA0
NTAgICAgICAgIDUwMA0KcGpzaXAvZGlzdHJpYnV0b3ItMDAwMDBhZjkgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyOTMzICAgICAgICAgIDAgICAgICAg ICAxMiAgICAgICAgNDUwICAgICAgICA1MDANCnBqc2lwL2Rpc3RyaWJ1dG9yLTAwMDAwYWZhICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzAwMiAgICAg ICAgICAwICAgICAgICAgIDggICAgICAgIDQ1MCAgICAgICAgNTAwDQpwanNpcC9kaXN0cmlidXRv ci0wMDAwMGFmYiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIDI4NzMgICAgICAgICAgMCAgICAgICAgICA2ICAgICAgICA0NTAgICAgICAgIDUwMA0KcGpz aXAvZGlzdHJpYnV0b3ItMDAwMDBhZmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAzMzMzICAgICAgICAgIDAgICAgICAgICAgNSAgICAgICAgNDUwICAg ICAgICA1MDANCnBqc2lwL2Rpc3RyaWJ1dG9yLTAwMDAwYWZkICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjk0NyAgICAgICAgICAwICAgICAgICAgMTAg ICAgICAgIDQ1MCAgICAgICAgNTAwDQpwanNpcC9kaXN0cmlidXRvci0wMDAwMGFmZSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMwNzUgICAgICAgICAg MCAgICAgICAgICA4ICAgICAgICA0NTAgICAgICAgIDUwMA0KcGpzaXAvZGlzdHJpYnV0b3ItMDAw MDBhZmYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAz MjA0ICAgICAgICAgIDAgICAgICAgICAzNyAgICAgICAgNDUwICAgICAgICA1MDANCnBqc2lwL2Rp c3RyaWJ1dG9yLTAwMDAwYjAwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgMzIzMCAgICAgICAgICAwICAgICAgICAgIDggICAgICAgIDQ1MCAgICAgICAg NTAwDQpwanNpcC9kaXN0cmlidXRvci0wMDAwMGIwMSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIDMwNDEgICAgICAgICAgMCAgICAgICAgICA2ICAgICAg ICA0NTAgICAgICAgIDUwMA0KcGpzaXAvZGlzdHJpYnV0b3ItMDAwMDBiMDIgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyOTQzICAgICAgICAgIDAgICAg ICAgICAxMCAgICAgICAgNDUwICAgICAgICA1MDANCnBqc2lwL2Rpc3RyaWJ1dG9yLTAwMDAwYjAz ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzA1NiAg ICAgICAgICAwICAgICAgICAgMTQgICAgICAgIDQ1MCAgICAgICAgNTAwDQpwanNpcC9kaXN0cmli dXRvci0wMDAwMGIwNCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIDI3NTYgICAgICAgICAgMCAgICAgICAgICA4ICAgICAgICA0NTAgICAgICAgIDUwMA0K
cGpzaXAvZGlzdHJpYnV0b3ItMDAwMDBiMDUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAyODQ4ICAgICAgICAgIDAgICAgICAgICAgOSAgICAgICAgNDUw ICAgICAgICA1MDANCnBqc2lwL2Rpc3RyaWJ1dG9yLTAwMDAwYjA2ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjk2NSAgICAgICAgICAwICAgICAgICAg MTAgICAgICAgIDQ1MCAgICAgICAgNTAwDQpwanNpcC9kaXN0cmlidXRvci0wMDAwMGIwNyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI5MDIgICAgICAg ICAgMCAgICAgICAgICA4ICAgICAgICA0NTAgICAgICAgIDUwMA0KDQpBbnkgdGhvdWdodHM/DQoN
CkRhbg0KDQoNCkZyb206IERhbiBDcm9wcA0KU2VudDogVHVlc2RheSwgU2VwdGVtYmVyIDE0LCAy MDIxIDI6MDAgUE0NClRvOiBBc3RlcmlzayBVc2VycyBNYWlsaW5nIExpc3QgLSBOb24tQ29tbWVy Y2lhbCBEaXNjdXNzaW9uIDxhc3Rlcmlzay11c2Vyc0BsaXN0cy5kaWdpdW0uY29tPg0KU3ViamVj dDogUkU6IFthc3Rlcmlzay11c2Vyc10gTGFyZ2Ugc3lzdGVtIHNlZWluZyBzaW5nbGUgQ1BVIGNv cmUgc3Bpa2luZw0KDQpUaGFuayB5b3UgR2VvcmdlLg0KDQoNClRoYXTigJlzIGdvb2QgYWR2aWNl IG9uIHRoZSByZWFsdGltZSBtb2RlLg0KSSBjYW4gaGF2ZSB0aGVtIGNoYW5nZSB0aGlzIHNvIHJl YWx0aW1lIG1vZGUgbGF0ZXIgdGhpcyB3ZWVrLg0KDQoNCkN1c3RvbWVy4oCZcyB0YXNrcHJvY2Vz c29yIGxpc3QgaXMgdmVyeSBsYXJnZS4NCg0KVGhlcmUgYXJlIGEgbGFyZ2UgbnVtYmVyIG9mIGVu dHJpZXMgZnJvbSBjb3JlIHNob3cgdGFza3Byb2Nlc3NvcnMgZGF0YQ0KVGhlIGFyZSBvbmUgYSBm ZXcgdGhhdCBhcmUgc2hvd2luZyB0aGUgTWF4IERlcHRoIG9mIDEwIG9yIG1vcmUuICBPbmx5IGlu Y2x1ZGluZyB0aG9zZSBhbmQgdGhlIHN0YXNpcy9wb29sDQoNClByb2Nlc3NvciAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb2Nl c3NlZCAgIEluIFF1ZXVlICBNYXggRGVwdGggIExvdyB3YXRlciBIaWdoIHdhdGVyDQpwanNpcC9w b29sLWNvbnRyb2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICA1MDE1OTkgICAgICAgICAgMCAgICAgICAgIDg5ICAgICAgICA0NTAgICAgICAg IDUwMA0Kc3Rhc2lzL206Y2FjaGVfcGF0dGVybjowL2VuZHBvaW50OmFsbC0wMDAwMTVmMCAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgMzgzMjI0ICAgICAgICAgIDAgICAgICAgICAyMSAgICAg ICAgNDUwICAgICAgICA1MDANCnN0YXNpcy9tOmRldmljZXN0YXRlOmFsbC0wMDAwMDAwMiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIzMzgzNiAgICAgICAgICAwICAg ICAgICAgMjggICAgICAgIDQ1MCAgICAgICAgNTAwDQpzdGFzaXMvbTptYW5hZ2VyOmNvcmUtMDAw MDAwMDYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQ2NDkzMTYg ICAgICAgICAgMCAgICAgICAgIDY5ICAgICAgIDI3MDAgICAgICAgMzAwMA0Kc3Rhc2lzL3Bvb2wg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIDExNjcwICAgICAgICAgIDAgICAgICAgICAgMiAgICAgICAgNDUwICAgICAgICA1MDAN
CnN0YXNpcy9wb29sLWNvbnRyb2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAyMzUwNSAgICAgICAgICAwICAgICAgICAgNzUgICAgICAgIDQ1
MCAgICAgICAgNTAwDQoNCjU5MjIgdGFza3Byb2Nlc3NvcnMNCg0KDQpXZSBkbyB1c2UgQU1JIGZv ciBhIHNpZ25pZmljYW50IGFtb3VudCBvZiBjb21tdW5pY2F0aW9uIChhY3Rpb24vZXZlbnRzKS4N
Ck1pZ2h0IHRoaXMgYmUgYSBzaW5nbGV0b24gdGhhdCBjb3VsZCBleHBsYWluIHRoZSBoaWdoIHVz ZSBmb3IgYSBzaW5nbGUgYXN0ZXJpc2sgcHJvY2VzcyBpZD8NCk5PVEU6IHdvcmtpbmcgb24gbWln cmF0aW5nIHRvIEFSSSB3aGljaCBJIGtub3cgd2lsbCBoZWxwIGluIHRoZSBjYWxsIGNvbnRyb2wu DQoNCkRhbg0KDQoNCkZyb206IGFzdGVyaXNrLXVzZXJzIDxhc3Rlcmlzay11c2Vycy1ib3VuY2Vz QGxpc3RzLmRpZ2l1bS5jb208bWFpbHRvOmFzdGVyaXNrLXVzZXJzLWJvdW5jZXNAbGlzdHMuZGln aXVtLmNvbT4+IE9uIEJlaGFsZiBPZiBHZW9yZ2UgSm9zZXBoDQpTZW50OiBUdWVzZGF5LCBTZXB0
ZW1iZXIgMTQsIDIwMjEgMTI6NTYgUE0NClRvOiBBc3RlcmlzayBVc2VycyBNYWlsaW5nIExpc3Qg LSBOb24tQ29tbWVyY2lhbCBEaXNjdXNzaW9uIDxhc3Rlcmlzay11c2Vyc0BsaXN0cy5kaWdpdW0u Y29tPG1haWx0bzphc3Rlcmlzay11c2Vyc0BsaXN0cy5kaWdpdW0uY29tPj4NClN1YmplY3Q6IFJl OiBbYXN0ZXJpc2stdXNlcnNdIExhcmdlIHN5c3RlbSBzZWVpbmcgc2luZ2xlIENQVSBjb3JlIHNw aWtpbmcNCg0KDQoNCk9uIFR1ZSwgU2VwIDE0LCAyMDIxIGF0IDk6MTkgQU0gRGFuIENyb3BwIDxk YW5AYW10ZWxjby5jb208bWFpbHRvOmRhbkBhbXRlbGNvLmNvbT4+IHdyb3RlOg0KVGhhbmsgeW91
IEdlb3JnZS4NCg0KSXQgaXMgdXNpbmcgbG9jYWwgZmlsZSBiYXNlZCBjb25maWd1cmF0aW9uIGZp bGVzLg0KDQpXZWxsLCB0aGF0J3MgZ29vZCBhdCBsZWFzdC4gIEl0IGVsaW1pbmF0ZXMgdGhlIGRh dGFiYXNlIGxheWVyIHdoaWNoIGNhbiBiZSB0cm91Ymxlc29tZSBpbiB2aXJ0dWFsaXplZCBlbnZp cm9ubWVudHMsIGVzcGVjaWFsbHkgaWYgYSBTQU4gYW5kL29yIGEgcmVtb3RlIGRhdGFiYXNlIHNl cnZlciBpcyB1c2VkLg0KDQpPdGhlciBmYWN0b3JzLg0KV2UgcnVuIEFzdGVyaXNrIGluIHJlYWx0
aW1lIG1vZGUgdG8gYWxsb3cgaXQgdG8gcnVuIGFzIGZhc3QgYXMgcG9zc2libGUuDQoNClJ1bm5p bmcgYXQgInJlYWx0aW1lIiBsZXZlbCBpcyB1c3VhbGx5IE5PVCBhIGdvb2QgdGhpbmcgZm9yIEFz dGVyaXNrIGFuZCByYXJlbHkgbmVlZGVkIHdoZW4gdGhlcmUgYXJlIGFkZXF1YXRlIHJlc291cmNl cy4gIExldCdzIHNheSB5b3UgaGF2ZSBhIGxvY2FsIEROUyByZXNvbHZlciBydW5uaW5nLiAgIElm IHRoZSBzeXN0ZW0gaXMgc3RyZXNzZWQsIEFzdGVyaXNrIGNvdWxkIGFjdHVhbGx5IHN0YXJ2ZSB0
aGUgcmVzb2x2ZXIgb2YgcmVzb3VyY2VzLCB3aGljaCB0aGVuIGNhdXNlcyBBc3RlcmlzayB0byBi YWNrIHVwIHdhaXRpbmcgZm9yIEROUyByZXNvbHV0aW9uIHRvIGNvbXBsZXRlLiAgV2UndmUgc2Vl biB0aGlzIGhhcHBlbiB3aGVuIHVzaW5nIGEgZGF0YWJhc2UgYmFja2VuZCBmb3IgY29uZmlndXJh dGlvbi4gIFNvbWVvbmUgdGhpbmtzICJJJ2xsIGp1c3QgZ2l2ZSBBc3RlcmlzayBtb3JlIHJlc291
cmNlcyIgZm9yZ2V0dGluZyB0aGF0IEFzdGVyaXNrIG5lZWRzIHRoZSBkYXRhYmFzZSBlbmdpbmUg dG8gcnVuLg0KDQoNCkkganVzdCBsZWFybmVkIGN1c3RvbWVyIHVwZ3JhZGVkIHRvIDI0IENQVSBj b3Jlcy4gIEFsdGhvdWdoLCBJ4oCZbSBub3Qgc3VyZSB0aGV5IGFjdHVhbGx5IGFzc2lnbmVkIDI0
IHBoeXNpY2FsIGNvcmVzIHRvIHRoaXMgbWFjaGluZSBvciBqdXN0IGluY3JlYXNpbmcgSHlwZXIt ViB2YWx1ZXMuDQoNCkhvdyBpcyB0aGlzIFZNJ3MgcHJpb3JpdHkgdmVyc3VzIG90aGVyIFZNcyBv biB0aGUgc2FtZSBjbHVzdGVyPyAgSnVzdCBiZWNhdXNlIGl0IGhhcyAyNCB0aHJlYWRzIGRvZXNu J3QgbWVhbiBpdCdzIGdvdCAyNCB0aHJlYWRzIGRlZGljYXRlZC4gIERvZXMgdXNpbmcgYSByZWFs dGltZSBwcmlvcml0eSBpbiB0aGUgVk0gdHJpY2tsZSBkb3duIHRvIEh5cGVyLVYncyBoeXBlcnZp c29yJ3MgcmVzb3VyY2UgbWFuYWdlbWVudCBhbGdvcml0aG1zPw0KDQoNCkkgd2lsbCBtb25pdG9y IGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIGFuZCBzZWUgaWYgdGhlIGN1c3RvbWVyIHdpbGwg YWxsb3cgbWUgdG8gY2FwdHVyZSBhIGNvcmVkdW1wIHdoZW4gcHJvYmxlbXMgYXJlIGhhcHBlbmlu Zy4NCldhaXRpbmcgZm9yIHRoZW0gdG8gcmVwb3J0IGFuIGluY2lkZW50Lg0KDQpIZXJlIGlzIGEg c21hbGwgc2FtcGxlIG9mIHRoZSBzeXN0ZW0gcmlnaHQgbm93ICgyNCBjb3JlcyksIHRvIHRoZSBi ZXN0IG9mIG15IGtub3dsZWRnZSBpdOKAmXMgcnVubmluZyBmaW5lLg0KDQp0b3AgLXAgMTUwOSAt biAxIC1IIC1iDQp0b3AgLSAxNTowNjozMiB1cCAgOTowNiwgIDIgdXNlcnMsICBsb2FkIGF2ZXJh Z2U6IDYuMDIsIDUuNTksIDUuMjYNClRocmVhZHM6IDE3MDkgdG90YWwsICAgOCBydW5uaW5nLCAx NzAxIHNsZWVwaW5nLCAgIDAgc3RvcHBlZCwgICAwIHpvbWJpZQ0KJUNwdShzKTogIDMuMSB1cywg IDIuNSBzeSwgIDAuMCBuaSwgOTQuMyBpZCwgIDAuMCB3YSwgIDAuMCBoaSwgIDAuMSBzaSwgIDAu MCBzdA0KS2lCIE1lbSA6IDMyMTQzMDcyIHRvdGFsLCAyOTc1MDA3MiBmcmVlLCAgMTAxNjEzMiB1
c2VkLCAgMTM3Njg2OCBidWZmL2NhY2hlDQpLaUIgU3dhcDogIDgzODg2MDQgdG90YWwsICA4Mzg4
NjA0IGZyZWUsICAgICAgICAwIHVzZWQuIDMwNjk3MDYwIGF2YWlsIE1lbQ0KDQogICBQSUQgVVNF
UiAgICAgIFBSICBOSSAgICBWSVJUICAgIFJFUyAgICBTSFIgUyAlQ1BVICVNRU0gICAgIFRJTUUr IENPTU1BTkQNCiAgMTgzMCByb290ICAgICAtMTEgICAwIDEzLjc0MWcgNDkzNjgwICAyODgyOCBS
IDk5LjkgIDEuNSAxNzQ6MTMuMzkgYXN0ZXJpc2sNCiAgMTU0MSByb290ICAgICAtMTEgICAwIDEz Ljc0MWcgNDkzNjgwICAyODgyOCBSIDE0LjMgIDEuNSAgMjA6MDMuMzAgYXN0ZXJpc2sNCjMzNjAx IHJvb3QgICAgIC0xMSAgIDAgMTMuNzQxZyA0OTM2ODAgIDI4ODI4IFMgIDkuNSAgMS41ICAgMDox Ni4zMCBhc3Rlcmlzaw0KNDY2MDUgcm9vdCAgICAgLTExICAgMCAxMy43NDFnIDQ5MzY4MCAgMjg4
MjggUyAgOS41ICAxLjUgICAwOjMwLjA2IGFzdGVyaXNrDQogIDIyOTUgcm9vdCAgICAgLTExICAg MCAxMy43NDFnIDQ5MzY4MCAgMjg4MjggUyAgNC44ICAxLjUgIDEyOjI1LjUwIGFzdGVyaXNrDQog IDIyOTcgcm9vdCAgICAgLTExICAgMCAxMy43NDFnIDQ5MzY4MCAgMjg4MjggUyAgNC44ICAxLjUg ICAxOjEwLjU5IGFzdGVyaXNrDQoNClRoZXJlJ3MgZGVmaW5pdGVseSBvbmUgdGhyZWFkIHRoYXQn cyBwZWdnaW5nIGEgQ1BVLiAgSWYgdGhhdCB0aHJlYWQgaXMgb25lIG9mIHRoZSBmZXcgInNpbmds ZXRvbiIgdGhyZWFkcywgdGhhdCBjYW4gYmUgYW4gaXNzdWUuICBXaGF0IGRvZXMgImNvcmUgc2hv dyB0YXNrcHJvY2Vzc29ycyIgaW5kaWNhdGU/ICBBcmUgdGhlcmUgYW55IHRoYXQgYXJlIGhpdHRp bmcgdGhlaXIgbGltaXRzPw0KDQoNCg0KRnJvbTogYXN0ZXJpc2stdXNlcnMgPGFzdGVyaXNrLXVz ZXJzLWJvdW5jZXNAbGlzdHMuZGlnaXVtLmNvbTxtYWlsdG86YXN0ZXJpc2stdXNlcnMtYm91bmNl c0BsaXN0cy5kaWdpdW0uY29tPj4gT24gQmVoYWxmIE9mIEdlb3JnZSBKb3NlcGgNClNlbnQ6IFR1
ZXNkYXksIFNlcHRlbWJlciAxNCwgMjAyMSA5OjM5IEFNDQpUbzogQXN0ZXJpc2sgVXNlcnMgTWFp bGluZyBMaXN0IC0gTm9uLUNvbW1lcmNpYWwgRGlzY3Vzc2lvbiA8YXN0ZXJpc2stdXNlcnNAbGlz dHMuZGlnaXVtLmNvbTxtYWlsdG86YXN0ZXJpc2stdXNlcnNAbGlzdHMuZGlnaXVtLmNvbT4+DQpT
dWJqZWN0OiBSZTogW2FzdGVyaXNrLXVzZXJzXSBMYXJnZSBzeXN0ZW0gc2VlaW5nIHNpbmdsZSBD
UFUgY29yZSBzcGlraW5nDQoNCg0KDQpPbiBUdWUsIFNlcCAxNCwgMjAyMSBhdCA4OjA3IEFNIERh biBDcm9wcCA8ZGFuQGFtdGVsY28uY29tPG1haWx0bzpkYW5AYW10ZWxjby5jb20+PiB3cm90ZToN
CkkgYW0gd29ya2luZyB3aXRoIGEgdmVyeSBsYXJnZSBjdXN0b21lciBydW5uaW5nIEFzdGVyaXNr IHdpdGggUEpTSVAuICBTeXN0ZW1zIHRvdGFsIGNoYW5uZWxzIGhhdmUgYmVlbiBvdmVyIDI1MDAg KHdoaWNoIGluY2x1ZGVzIGh1bmRyZWRzIG9mIGxvY2FsIGNoYW5uZWxzIGFuZCBDb25mQnJpZGdl cykgd2hlbiB0aGUgaXNzdWVzIG9jY3VyLg0KSXTigJlzIHJ1bm5pbmcgb24gYSBIeXBlci1WIFZN
IHdpdGggMTIgQ1BVIGNvcmVzLg0KVGhpbmdzIHdvcmsgZmluZSBtb3N0IG9mIHRoZSB0aW1lLg0K
DQpUaGV5IHBlcmlvZGljYWxseSBzZWUgMTAtMzAgbWludXRlIHBlcmlvZHMgd2hlcmUgYXVkaW8g c3RhcnRzIHNvdW5kaW5nIGxpa2Ugaml0dGVyIGJ1ZmZlciB0eXBlIGlzc3Vlcy4gIENhbiBsaXRl cmFsbHkgaGF2ZSBzb21lb25lIHNwZWxsaW5nIHRoZWlyIG5hbWUgYW5kIGEgQ29uZkJyaWRnZSBy ZWNvcmRpbmcgb2YgaXQgc2hvd3MgdGhlIGF1ZGlvIGlzIG1pc3NpbmcgYSBsZXR0ZXIgb3IgdHdv Lg0KVGhlIG9kZCBwYXJ0IGlzIGFub3RoZXIgc3lzdGVtIChub3QgcnVubmluZyBBc3Rlcmlzaykg d2FzIGhhbmRsaW5nIHRoZXNlIGNhbGxzIHByZXZpb3VzbHkuICBUaGUgb3ZlcmFsbCBuZXR3b3Jr IGhhcyBwbGVudHkgb2YgYmFuZHdpZHRoIChhcyBldmlkZW5jZWQgYnkgYW5vdGhlciBzeXN0ZW0g YWJsZSB0byBoYW5kbGUgdGhlIGNhbGwgdm9sdW1lKQ0KDQpPbmUgYXJlYSB0aGF0IGhhcyBwZXJw bGV4ZWQgdXMgaXMgd2hlbiB1c2luZyBodG9wLCB3ZSBzZWUgYSBzaW5nbGUgQ1BVIGNvcmUgd2ls bCBzcGlrZSB0byAxMDAlLiAgV2hpY2ggY29yZSBkb2VzIGtlZXAgY2hhbmdpbmcuDQoNCkFzdGVy aXNrIGlzIGRlZmluaXRlbHkgdGhlIHByb2Nlc3MgdXNpbmcgdGhlIHZhc3QgbWFqb3JpdHkgb2Yg dGhlIENQVSBjeWNsZXMuDQoNCldlIHJlY2VudGx5IGZvdW5kIGEgc2V0dGluZyBvbiBIeXBlci1W
IG5ldHdvcmtpbmcgU1ItSU9WIHdoaWNoIGltcHJvdmVkIHRoaW5ncy4gIFByaW9yIHRvIGNoYW5n aW5nIHRoaXMgc2V0dGluZywgd2Ugd2VyZSBzZWVpbmcgU0lQIE9QVElPTlMgcGFja2V0cy9yZXNw b25zZXMgd291bGQgb2NjYXNpb25hbGx5IHRha2UgbW9yZSB0aGFuIDMgc2Vjb25kcyBjYXVzaW5n IGRldmljZXMgdG8gZHJvcCBhbmQgY29tZSBiYWNrIG9ubGluZS4NCg0KV2UgaGF2ZSBjb25maWd1
cmVkIGEgc2ltaWxhciBzeXN0ZW0gcnVubmluZyBhdCBBbWF6b24gaGFuZGxpbmcgZmFyIG1vcmUg dHJhZmZpYyBhbmQgY2Fu4oCZdCBnZXQgdGhlIHNpbmdsZSBDUFUgY29yZSB0byBzcGlrZS4gIE9u bHkgc21hbGwgc3RhdGljIHBvcHMgZHVyaW5nIHRoZSBjYWxscy4NCg0KVGhlIHNoZWVyIHNjYWxl IG9mIHRoZSBzeXN0ZW0gaXMgbWFraW5nIGl0IGhhcmQgdG8gZGlhZ25vc2UgdGhlIHByb2JsZW0u DQoNCkFueSB0aG91Z2h0cyBvbiBob3cgdG8gZGlhZ25vc2Ugd2hhdCBpcyBjYXVzaW5nIHRoZSBz aW5nbGUgQ1BVIGNvcmUgdG8gc3Bpa2U/DQpBbnkgdGhvdWdodHMgb24gaG93IHRvIGRpYWdub3Nl IHRoZSBwcm9ibGVtPw0KQW55IG90aGVyIHRob3VnaHRzL2NvbW1lbnRzPw0KDQoNClRoZSBmaXJz dCB0aGluZyBJJ2QgZG8gaXMgc2VlIHdoZXJlIHRoZSBDUFUgaXMgc3BlbmRpbmcgdGltZTogdXNl cnNwYWNlLCBzeXN0ZW0sIG5pY2UsIHdhaXQsIGV0Yy4NCklzIGl0IGFjdHVhbGx5IHRoZSBhc3Rl cmlzayBwcm9jZXNzIGNvbnN1bWluZyB0aGUgQ1BVPw0KSXMgQXN0ZXJpc2sgcnVubmluZyB3aXRo IGxvY2FsIGZpbGUtYmFzZWQgY29uZmlncywgbG9jYWwgZGF0YWJhc2UsIHJlbW90ZSBkYXRhYmFz ZSwgZXRjPw0KDQpJZiBjYWxsIHF1YWxpdHkgaXMgcmVhbGx5IGJhZCBhbHJlYWR5IGFuZCB5b3Vy IGN1c3RvbWVyIGFncmVlcywgeW91IGNvdWxkIHRyeSB0aGUgZm9sbG93aW5nIHRoZSBuZXh0IHRp bWUgaXQgaGFwcGVucy4uLg0KIDEuIFJ1biAidG9wIC1wIGBwaWRvZiBhc3Rlcmlza2AgLW4gMSAt SCAtYiIgdG8gZ2V0IGEgbGlzdCBvZiBhbGwgb2YgQXN0ZXJpc2sncyB0aHJlYWRzIGFuZCB0aGVp ciBDUFUgdXRpbGl6YXRpb24uDQogMi4gUnVuIGFzdF9jb3JlZHVtcGVyIHdpdGggdGhlIC0tUlVO
TklORyBvcHRpb24uICBUaGlzIHdpbGwgcGF1c2UgQXN0ZXJpc2sgd2hpbGUgdGhlIGR1bXAgaXMg YmVpbmcgZ2VuZXJhdGVkIQ0KIDMuIFNlZSBpZiB5b3UgY2FuIGNvcnJlbGF0ZSB0aGUgaGlnaCBj cHUgdGhyZWFkIElEcyBmcm9tIHRoZSB0b3Agb3V0cHV0IHRvIHRoZSB0aHJlYWRzIGxpc3RlZCBp biB0aGUgY29yZWR1bXBlcidzIC1icmllZi50eHQgZmlsZS4NCg0KVGhhdCBfbWF5XyBnaXZlIHlv dSBhbiBpZGVhIG9mIHdoZXJlIHRvIGxvb2suDQoNCg0KDQpEYW4NCg0KVGhpcyBlbWFpbCBpcyBp bnRlbmRlZCBvbmx5IGZvciB0aGUgdXNlIG9mIHRoZSBwYXJ0eSB0byB3aGljaCBpdCBpcyBhZGRy ZXNzZWQgYW5kIG1heSBjb250YWluIGluZm9ybWF0aW9uIHRoYXQgaXMgcHJpdmlsZWdlZCwgY29u ZmlkZW50aWFsLCBvciBwcm90ZWN0ZWQgYnkgbGF3LiBJZiB5b3UgYXJlIG5vdCB0aGUgaW50ZW5k ZWQgcmVjaXBpZW50IHlvdSBhcmUgaGVyZWJ5IG5vdGlmaWVkIHRoYXQgYW55IGRpc3NlbWluYXRp b24sIGNvcHlpbmcgb3IgZGlzdHJpYnV0aW9uIG9mIHRoaXMgZW1haWwgb3IgaXRzIGNvbnRlbnRz IGlzIHN0cmljdGx5IHByb2hpYml0ZWQuIElmIHlvdSBoYXZlIHJlY2VpdmVkIHRoaXMgbWVzc2Fn ZSBpbiBlcnJvciwgcGxlYXNlIG5vdGlmeSB1cyBpbW1lZGlhdGVseSBieSByZXBseWluZyB0byB0
aGUgbWVzc2FnZSBhbmQgZGVsZXRpbmcgaXQgZnJvbSB5b3VyIGNvbXB1dGVyLg0KLS0NCl9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXw0KLS0gQmFuZHdpZHRoIGFuZCBDb2xvY2F0aW9uIFByb3ZpZGVkIGJ5IGh0dHA6Ly93
d3cuYXBpLWRpZ2l0YWwuY29tIC0tDQoNCkNoZWNrIG91dCB0aGUgbmV3IEFzdGVyaXNrIGNvbW11
bml0eSBmb3J1bSBhdDogaHR0cHM6Ly9jb21tdW5pdHkuYXN0ZXJpc2sub3JnLw0KDQpOZXcgdG8g QXN0ZXJpc2s/IFN0YXJ0IGhlcmU6DQogICAgICBodHRwczovL3dpa2kuYXN0ZXJpc2sub3JnL3dp a2kvZGlzcGxheS9BU1QvR2V0dGluZytTdGFydGVkDQoNCmFzdGVyaXNrLXVzZXJzIG1haWxpbmcg bGlzdA0KVG8gVU5TVUJTQ1JJQkUgb3IgdXBkYXRlIG9wdGlvbnMgdmlzaXQ6DQogICBodHRwOi8v bGlzdHMuZGlnaXVtLmNvbS9tYWlsbWFuL2xpc3RpbmZvL2FzdGVyaXNrLXVzZXJzDQoNClRoaXMg ZW1haWwgaXMgaW50ZW5kZWQgb25seSBmb3IgdGhlIHVzZSBvZiB0aGUgcGFydHkgdG8gd2hpY2gg aXQgaXMgYWRkcmVzc2VkIGFuZCBtYXkgY29udGFpbiBpbmZvcm1hdGlvbiB0aGF0IGlzIHByaXZp bGVnZWQsIGNvbmZpZGVudGlhbCwgb3IgcHJvdGVjdGVkIGJ5IGxhdy4gSWYgeW91IGFyZSBub3Qg dGhlIGludGVuZGVkIHJlY2lwaWVudCB5b3UgYXJlIGhlcmVieSBub3RpZmllZCB0aGF0IGFueSBk aXNzZW1pbmF0aW9uLCBjb3B5aW5nIG9yIGRpc3RyaWJ1dGlvbiBvZiB0aGlzIGVtYWlsIG9yIGl0
cyBjb250ZW50cyBpcyBzdHJpY3RseSBwcm9oaWJpdGVkLiBJZiB5b3UgaGF2ZSByZWNlaXZlZCB0
aGlzIG1lc3NhZ2UgaW4gZXJyb3IsIHBsZWFzZSBub3RpZnkgdXMgaW1tZWRpYXRlbHkgYnkgcmVw bHlpbmcgdG8gdGhlIG1lc3NhZ2UgYW5kIGRlbGV0aW5nIGl0IGZyb20geW91ciBjb21wdXRlci4N
Ci0tDQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX18NCi0tIEJhbmR3aWR0aCBhbmQgQ29sb2NhdGlvbiBQcm92aWRlZCBi eSBodHRwOi8vd3d3LmFwaS1kaWdpdGFsLmNvbSAtLQ0KDQpDaGVjayBvdXQgdGhlIG5ldyBBc3Rl cmlzayBjb21tdW5pdHkgZm9ydW0gYXQ6IGh0dHBzOi8vY29tbXVuaXR5LmFzdGVyaXNrLm9yZy8N
Cg0KTmV3IHRvIEFzdGVyaXNrPyBTdGFydCBoZXJlOg0KICAgICAgaHR0cHM6Ly93aWtpLmFzdGVy aXNrLm9yZy93aWtpL2Rpc3BsYXkvQVNUL0dldHRpbmcrU3RhcnRlZA0KDQphc3Rlcmlzay11c2Vy cyBtYWlsaW5nIGxpc3QNClRvIFVOU1VCU0NSSUJFIG9yIHVwZGF0ZSBvcHRpb25zIHZpc2l0Og0K
ICAgaHR0cDovL2xpc3RzLmRpZ2l1bS5jb20vbWFpbG1hbi9saXN0aW5mby9hc3Rlcmlzay11c2Vy cw0KDQpUaGlzIGVtYWlsIGlzIGludGVuZGVkIG9ubHkgZm9yIHRoZSB1c2Ugb2YgdGhlIHBhcnR5
IHRvIHdoaWNoIGl0IGlzIGFkZHJlc3NlZCBhbmQgbWF5IGNvbnRhaW4gaW5mb3JtYXRpb24gdGhh dCBpcyBwcml2aWxlZ2VkLCBjb25maWRlbnRpYWwsIG9yIHByb3RlY3RlZCBieSBsYXcuIElmIHlv dSBhcmUgbm90IHRoZSBpbnRlbmRlZCByZWNpcGllbnQgeW91IGFyZSBoZXJlYnkgbm90aWZpZWQg dGhhdCBhbnkgZGlzc2VtaW5hdGlvbiwgY29weWluZyBvciBkaXN0cmlidXRpb24gb2YgdGhpcyBl bWFpbCBvciBpdHMgY29udGVudHMgaXMgc3RyaWN0bHkgcHJvaGliaXRlZC4gSWYgeW91IGhhdmUg cmVjZWl2ZWQgdGhpcyBtZXNzYWdlIGluIGVycm9yLCBwbGVhc2Ugbm90aWZ5IHVzIGltbWVkaWF0
ZWx5IGJ5IHJlcGx5aW5nIHRvIHRoZSBtZXNzYWdlIGFuZCBkZWxldGluZyBpdCBmcm9tIHlvdXIg Y29tcHV0ZXIuDQo