SF.net SVN: phpwiki:[11113] trunk
carstenklapp--- via phpwiki-checkins <[email protected]> Sun, 16 Feb 2025 00:36:19 +0000
| Newsgroups | gmane.comp.web.wiki.phpwiki.checkins |
|---|---|
| Message-ID | <[email protected]> |
UmV2aXNpb246IDExMTEzCiAgICAgICAgICBodHRwOi8vc291cmNlZm9yZ2UubmV0L3AvcGhwd2lr aS9jb2RlLzExMTEzCkF1dGhvcjogICBjYXJzdGVua2xhcHAKRGF0ZTogICAgIDIwMjUtMDItMTYg MDA6MzY6MTkgKzAwMDAgKFN1biwgMTYgRmViIDIwMjUpCkxvZyBNZXNzYWdlOgotLS0tLS0tLS0t LQp1c2UgdW5peCBsaW5lIGVuZGluZ3MgZm9yIHBhZ2VkdW1wcwoKTW9kaWZpZWQgUGF0aHM6Ci0t LS0tLS0tLS0tLS0tCiAgICB0cnVuay9saWIvbG9hZHNhdmUucGhwCiAgICB0cnVuay9saWIvbWlt ZWxpYi5waHAKICAgIHRydW5rL3Bnc3JjL1JlbGVhc2VOb3RlcwoKTW9kaWZpZWQ6IHRydW5rL2xp Yi9sb2Fkc2F2ZS5waHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdHJ1bmsvbGliL2xvYWRzYXZlLnBocAkyMDI1 LTAyLTE1IDIxOjAzOjMzIFVUQyAocmV2IDExMTEyKQorKysgdHJ1bmsvbGliL2xvYWRzYXZlLnBo cAkyMDI1LTAyLTE2IDAwOjM2OjE5IFVUQyAocmV2IDExMTEzKQpAQCAtMTM1LDM0ICsxMzUsMzUg QEAKIHsKICAgICAkY3VycmVudCA9ICRwYWdlLT5nZXRDdXJyZW50UmV2aXNpb24oZmFsc2UpOwog ICAgICRoZWFkID0gJyc7CisgICAgJExFID0gIlxuIjsgLy8gIlxyXG4iCiAKICAgICBpZiAoZGVm aW5lZCgnU1RSSUNUX01BSUxBQkxFX1BBR0VEVU1QUycpIGFuZCBTVFJJQ1RfTUFJTEFCTEVfUEFH RURVTVBTKSB7CiAgICAgICAgICRmcm9tID0gZGVmaW5lZCgnU0VSVkVSX0FETUlOJykgPyBTRVJW RVJfQURNSU4gOiAnZm9vQGJhcic7CiAgICAgICAgIC8vVGhpcyBpcyBmb3IgdW5peCBtYWlsYm94 IGZvcm1hdDogKG5vdCBSRkMgKDIpODIyKQotICAgICAgICAvLyAkaGVhZCAuPSAiRnJvbSAkZnJv bSAgIiAuIENUaW1lKHRpbWUoKSkgLiAiXHJcbiI7Ci0gICAgICAgICRoZWFkIC49ICJTdWJqZWN0 OiAiIC4gcmF3dXJsZW5jb2RlKCRwYWdlLT5nZXROYW1lKCkpIC4gIlxyXG4iOwotICAgICAgICAk aGVhZCAuPSAiRnJvbTogJGZyb20gKFBocFdpa2kpXHJcbiI7CisgICAgICAgIC8vICRoZWFkIC49 ICJGcm9tICRmcm9tICAiIC4gQ1RpbWUodGltZSgpKSAuICRMRTsKKyAgICAgICAgJGhlYWQgLj0g IlN1YmplY3Q6ICIgLiByYXd1cmxlbmNvZGUoJHBhZ2UtPmdldE5hbWUoKSkgLiAkTEU7CisgICAg ICAgICRoZWFkIC49ICJGcm9tOiAkZnJvbSAoUGhwV2lraSkiIC4gJExFOwogICAgICAgICAvLyBS RkMgMjgyMiByZXF1aXJlcyBvbmx5IGEgRGF0ZTogYW5kIG9yaWdpbmF0b3IgKEZyb206KQogICAg ICAgICAvLyBmaWVsZCwgaG93ZXZlciB0aGUgb2Jzb2xldGUgc3RhbmRhcmQgUkZDIDgyMiBhbHNv CiAgICAgICAgIC8vIHJlcXVpcmVzIGEgZGVzdGluYXRpb24gZmllbGQuCi0gICAgICAgICRoZWFk IC49ICJUbzogJGZyb20gKFBocFdpa2kpXHJcbiI7CisgICAgICAgICRoZWFkIC49ICJUbzogJGZy b20gKFBocFdpa2kpIiAuICRMRTsKICAgICB9CiAgICAgaWYgKCEkZm9yc3ZuKSB7CiAgICAgICAg IC8vIG5vcm1hbCBkdW1wcyB1c2UgZGF0ZSBtb2RpZmllZAotICAgICAgICAkaGVhZCAuPSAiRGF0 ZTogIiAuIFJmYzI4MjJEYXRlVGltZSgkY3VycmVudC0+Z2V0KCdtdGltZScpKSAuICJcclxuIjsK KyAgICAgICAgJGhlYWQgLj0gIkRhdGU6ICIgLiBSZmMyODIyRGF0ZVRpbWUoJGN1cnJlbnQtPmdl dCgnbXRpbWUnKSkgLiAkTEU7CiAgICAgfSBlbHNlIHsKICAgICAgICAgJHVzZV9wYWdlX2NyZWF0 aW9uZGF0ZV9pbnN0ZWFkID0gMDsKICAgICAgICAgaWYgKCR1c2VfcGFnZV9jcmVhdGlvbmRhdGVf aW5zdGVhZCkgewotICAgICAgICAgICAgJGhlYWQgLj0gIkRhdGU6ICIgLiBSZmMyODIyRGF0ZVRp bWUoJHBhZ2UtPmdldCgnZGF0ZScpKSAuICJcclxuIjsKKyAgICAgICAgICAgICRoZWFkIC49ICJE YXRlOiAiIC4gUmZjMjgyMkRhdGVUaW1lKCRwYWdlLT5nZXQoJ2RhdGUnKSkgLiAkTEU7CiAgICAg ICAgICAgICAvLyBmb3Igc3BlY2lhbCBwYWdlZHVtcHMgd2hlcmUgeW91IGRvbid0IHdhbnQgdG8g Y2hhbmdlIHRoZSBkYXRlCiAgICAgICAgICAgICAvLyAgaW4gZHVtcGVkIHBnc3JjLCB1c2UgY3Jl YXRpb24gZGF0ZQogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgLy8gbm9ybWFsIGR1bXBz IHVzZSBkYXRlIG1vZGlmaWVkCi0gICAgICAgICAgICAkaGVhZCAuPSAiRGF0ZTogIiAuIFJmYzI4 MjJEYXRlVGltZSgkY3VycmVudC0+Z2V0KCdtdGltZScpKSAuICJcclxuIjsKKyAgICAgICAgICAg ICRoZWFkIC49ICJEYXRlOiAiIC4gUmZjMjgyMkRhdGVUaW1lKCRjdXJyZW50LT5nZXQoJ210aW1l JykpIC4gJExFOwogICAgICAgICB9CiAgICAgfQogICAgICRoZWFkIC49IHNwcmludGYoCi0gICAg ICAgICJNaW1lLVZlcnNpb246IDEuMCAoUHJvZHVjZWQgYnkgUGhwV2lraSAlcylcclxuIiwKKyAg ICAgICAgIk1pbWUtVmVyc2lvbjogMS4wIChQcm9kdWNlZCBieSBQaHBXaWtpICVzKSIgLiAkTEUs CiAgICAgICAgIFBIUFdJS0lfVkVSU0lPTgogICAgICk7CiAKCk1vZGlmaWVkOiB0cnVuay9saWIv bWltZWxpYi5waHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQotLS0gdHJ1bmsvbGliL21pbWVsaWIucGhwCTIwMjUtMDIt MTUgMjE6MDM6MzMgVVRDIChyZXYgMTExMTIpCisrKyB0cnVuay9saWIvbWltZWxpYi5waHAJMjAy NS0wMi0xNiAwMDozNjoxOSBVVEMgKHJldiAxMTExMykKQEAgLTM2LDYgKzM2LDcgQEAKICAqLwog ZnVuY3Rpb24gUXVvdGVkUHJpbnRhYmxlRW5jb2RlKCRzdHJpbmcpCiB7CisgICAgJExFID0gIlxu IjsgLy8gIlxyXG4iCiAgICAgLy8gUXVvdGUgc3BlY2lhbCBjaGFyYWN0ZXJzIGluIGxpbmUuCiAg ICAgJHF1b3RlZCA9ICIiOwogICAgIHdoaWxlICgkc3RyaW5nKSB7CkBAIC01MCwxMCArNTEsMTAg QEAKICAgICAvLyBTcGxpdCBsaW5lLgogICAgIC8vIFRoaXMgc3BsaXRzIHRoZSBsaW5lIChwcmVm ZXJhYmx5IGFmdGVyIHdoaXRlLXNwYWNlKSBpbnRvIGxpbmVzCiAgICAgLy8gd2hpY2ggYXJlIG5v IGxvbmdlciB0aGFuIDc2IGNoYXJzIChhZnRlciBhZGRpbmcgdHJhaWxpbmcgJz0nIGZvcgotICAg IC8vIHNvZnQgbGluZSBicmVhaywgYnV0IGJlZm9yZSBhZGRpbmcgXHJcbi4pCisgICAgLy8gc29m dCBsaW5lIGJyZWFrLCBidXQgYmVmb3JlIGFkZGluZyAkTEUuKQogICAgIHJldHVybiBwcmVnX3Jl cGxhY2UoCiAgICAgICAgICcvKD89Lns3N30pKC57MTAsNzR9WyBcdF18Lns3MSw3M31bXj1dW149 XSkvcycsCi0gICAgICAgICJcXDE9XHJcbiIsCisgICAgICAgICJcXDE9IiAuICRMRSwKICAgICAg ICAgJHF1b3RlZAogICAgICk7CiB9CkBAIC03NCw2ICs3NSw3IEBACiAKIGZ1bmN0aW9uIE1pbWVD b250ZW50VHlwZUhlYWRlcigkdHlwZSwgJHN1YnR5cGUsICRwYXJhbXMpCiB7CisgICAgJExFID0g IlxuIjsgLy8gIlxyXG4iCiAgICAgJGhlYWRlciA9ICJDb250ZW50LVR5cGU6ICR0eXBlLyRzdWJ0 eXBlIjsKICAgICByZXNldCgkcGFyYW1zKTsKICAgICBmb3JlYWNoICgkcGFyYW1zIGFzICRrZXkg PT4gJHZhbCkgewpAQCAtODEsMTMgKzgzLDE0IEBACiAgICAgICAgIGlmICghcHJlZ19tYXRjaCgn L14nIC4gTUlNRV9UT0tFTl9SRUdFWFAgLiAnJC8nLCAkdmFsKSkgewogICAgICAgICAgICAgJHZh bCA9ICciJyAuIGFkZHNsYXNoZXMoJHZhbCkgLiAnIic7CiAgICAgICAgIH0KLSAgICAgICAgJGhl YWRlciAuPSAiO1xyXG4gICRrZXk9JHZhbCI7CisgICAgICAgICRoZWFkZXIgLj0gIjskTEUgICRr ZXk9JHZhbCI7CiAgICAgfQotICAgIHJldHVybiAiJGhlYWRlclxyXG4iOworICAgIHJldHVybiAi JGhlYWRlciIgLiAkTEU7CiB9CiAKIGZ1bmN0aW9uIE1pbWVNdWx0aXBhcnQoJHBhcnRzKQogewor ICAgICRMRSA9ICJcbiI7IC8vICJcclxuIgogICAgIGdsb2JhbCAkbWltZV9tdWx0aXBhcnRfY291 bnQ7CiAKICAgICAvLyBUaGUgc3RyaW5nICI9XyIgY2Fubm90IG9jY3VyIGluIHF1b3RlZC1wcmlu dGFibGUgZW5jb2RlZCBkYXRhLgpAQCAtOTksOSArMTAyLDkgQEAKICAgICAgICAgYXJyYXkoJ2Jv dW5kYXJ5JyA9PiAkYm91bmRhcnkpCiAgICAgKTsKIAotICAgICRzZXAgPSAiXHJcbi0tJGJvdW5k YXJ5XHJcbiI7CisgICAgJHNlcCA9ICRMRSAuICItLSRib3VuZGFyeSIgLiAkTEU7CiAKLSAgICBy ZXR1cm4gJGhlYWQgLiAkc2VwIC4gaW1wbG9kZSgkc2VwLCAkcGFydHMpIC4gIlxyXG4tLXskYm91 bmRhcnl9LS1cclxuIjsKKyAgICByZXR1cm4gJGhlYWQgLiAkc2VwIC4gaW1wbG9kZSgkc2VwLCAk cGFydHMpIC4gJExFIC4gIi0teyRib3VuZGFyeX0tLSIgLiAkTEU7CiB9CiAKIC8qKgpAQCAtMTM1 LDYgKzEzOCw3IEBACiAKIGZ1bmN0aW9uIE1pbWVpZnlQYWdlUmV2aXNpb24oJiRwYWdlLCAmJHJl dmlzaW9uLCAkZm9yc3ZuKQogeworICAgICRMRSA9ICJcbiI7IC8vICJcclxuIgogICAgIC8vICR3 aWtpZGIgPSYgJHJldmlzaW9uLT5fd2lraWRiOwogICAgIC8vICRwYWdlID0gJHdpa2lkYi0+Z2V0 UGFnZSgkcmV2aXNpb24tPmdldE5hbWUoKSk7CiAgICAgLy8gRklYTUU6IGFkZCAnaGl0cycgdG8g JHBhcmFtcwpAQCAtMjIxLDExICsyMjUsMTEgQEAKIAogICAgICRvdXQgPSBNaW1lQ29udGVudFR5 cGVIZWFkZXIoJ2FwcGxpY2F0aW9uJywgJ3gtcGhwd2lraScsICRwYXJhbXMpOwogICAgICRvdXQg Lj0gc3ByaW50ZigKLSAgICAgICAgIkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6ICVzXHJcbiIs CisgICAgICAgICJDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiAlcyIgLiAkTEUsCiAgICAgICAg IFNUUklDVF9NQUlMQUJMRV9QQUdFRFVNUFMgPyAncXVvdGVkLXByaW50YWJsZScgOiAnYmluYXJ5 JwogICAgICk7CiAKLSAgICAkb3V0IC49ICJcclxuIjsKKyAgICAkb3V0IC49ICRMRTsKIAogICAg IGZvcmVhY2ggKCRyZXZpc2lvbi0+Z2V0Q29udGVudCgpIGFzICRsaW5lKSB7CiAgICAgICAgIC8v IFRoaXMgaXMgYSBkaXJ0eSBoYWNrIHRvIGFsbG93IHNhdmluZyBiaW5hcnkgdGV4dCBmaWxlcy4g U2VlIGFib3ZlLgpAQCAtMjMzLDcgKzIzNyw3IEBACiAgICAgICAgIGlmIChTVFJJQ1RfTUFJTEFC TEVfUEFHRURVTVBTKSB7CiAgICAgICAgICAgICAkbGluZSA9IFF1b3RlZFByaW50YWJsZUVuY29k ZShydHJpbSgkbGluZSkpOwogICAgICAgICB9Ci0gICAgICAgICRvdXQgLj0gIiRsaW5lXHJcbiI7 CisgICAgICAgICRvdXQgLj0gIiRsaW5lIiAuICRMRTsKICAgICB9CiAgICAgcmV0dXJuICRvdXQ7 CiB9CgpNb2RpZmllZDogdHJ1bmsvcGdzcmMvUmVsZWFzZU5vdGVzCj09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRy dW5rL3Bnc3JjL1JlbGVhc2VOb3RlcwkyMDI1LTAyLTE1IDIxOjAzOjMzIFVUQyAocmV2IDExMTEy KQorKysgdHJ1bmsvcGdzcmMvUmVsZWFzZU5vdGVzCTIwMjUtMDItMTYgMDA6MzY6MTkgVVRDIChy ZXYgMTExMTMpCkBAIC0xLDEyMjMgKzEsMTIyNSBAQAotRGF0ZTogU2F0LCAxNSBGZWIgMjAyNSAy MDo1MjozNiArMDAwMAotTWltZS1WZXJzaW9uOiAxLjAgKFByb2R1Y2VkIGJ5IFBocFdpa2kgMS42 LjUpCi1Db250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL3gtcGhwd2lraTsKLSAgcGFnZW5hbWU9UmVs ZWFzZU5vdGVzOwotICBmbGFncz1QQUdFX0xPQ0tFRDsKLSAgYXV0aG9yPVRoZSUyMFBocFdpa2kl MjBUZWFtOwotICBjaGFyc2V0PVVURi04Ci1Db250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiBiaW5h cnkKLQotPDxDcmVhdGVUb2Mgd2l0aF90b2NsaW5rfHw9MSBoZWFkZXJzfHw9MSwyLDMgd2lkdGg9 MzAwcHggcG9zaXRpb249cmlnaHQ+PgotCi09PSAxLjYuNSAyMDI1LVhYLVhYIE1hcmMtRXRpZW5u ZSBWYXJnZW5hdSwgQ2Fyc3RlbiBLbGFwcCA9PQotCi0qIFVwZ3JhZGUgUEVBUiB0byByZWxlYXNl IDEuMTAuMTYsIFBFQVIgREIgdG8gcmVsZWFzZSAxLjEyLjIKLSogUmVhZG1lIGZvciBiYXNpYyBX aW5kb3dzIDExIGluc3RhbGwgaW5zdHJ1Y3Rpb25zLgotKiBDb21wbGV0ZSByZXdyaXRlIG9mIH5T cGFjZVdpa2kgdGhlbWUgdXNpbmcgbW9kZXJuIGNzcy4KLSogcGFzc2VuY3J5cHQucGhwOiBJbXBy b3ZlZCBwYXNzd29yZCBlbmNyeXB0aW9uIGFuZCByYW5kb20gcHcgZ2VuZXJhdGlvbi4KLSAgQWRk ZWQgY29weSB0byBjbGlwYm9hcmQgYnV0dG9ucy4KLSogVXBkYXRlZCAjIy5odGFjY2VzcyMjIGZp bGVzIHRvIHdvcmsgd2l0aCBBcGFjaGUgMi40LiBXaWxsIHN0aWxsIHdvcmsgd2l0aAotICBvbGRl ciB2ZXJzaW9ucyBidXQgcmVxdWlyZXMgbW9kX3ZlcnNpb24gbW9kdWxlIHdoaWNoIGlzIGF2YWls YWJsZSBpbgotICBBcGFjaGUgMi4wLjU2IGFuZCBsYXRlci4KLSogTWlub3IgdXBkYXRlcyB0byBI YXdhaWlhbiB0aGVtZSBhbmQgUG9ydGxhbmQgdGhlbWUuCi0qIEZpeGVkIE1hY09TWCB0aGVtZSBi dXR0b25zIG5vdCBsb2FkaW5nLCBvdGhlciB2aXN1YWwgaW1wcm92ZW1lbnRzIGFuZAotICBSZWNl bnRDaGFuZ2VzIHVzZXMgYSB0YWJsZSBub3cuCi0qIEltcHJvdmVkIGZvcm1hdHRpbmcgb3V0cHV0 IGZvciBkZWJ1Z2dpbmcsIGFkanVzdGVkIGNvZGUgZm9yIHRoZW1lcwotICB3aGljaCBkZXBlbmQg b24gZGVmYXVsdCB0aGVtZS4gQWRkZWQgc2lnbmF0dXJlIHRlbXBsYXRlLiBUaGlzIGNhbiBiZQot ICBkaXNhYmxlZCBieSBhZGRpbmcgdGhpcyBsaW5lIHRvIHRoZW1laW5mby5waHA6Ci0gICMjJHRo aXMtPmFkZEltYWdlQWxpYXMoJ3NpZ25hdHVyZScsIGZhbHNlKTsjIwotKiBBZGRlZCA0MDQgZXJy b3IgdG8gfkh0dHBDbGllbnQucGhwIHdoaWNoIGlzIGRpc3BsYXllZCBub3cgaW4KLSAgflBob3Rv QWxidW1QbHVnaW4uIFJlbW92ZWQgdXJsIG9mIGRlZnVuY3QgZXhhbXBsZSB3ZWJzaXRlIHRoYXQg YnJva2UKLSAgUGhwV2lraU1hbnVhbC4KLSogKipJbXBvcnRhbnQgYnVnZml4IGZvciBQSFA4LjMg YW5kIG5ld2VyOioqIEZpeGVkIGdhcmJsZWQgZGlzcGxheSBvZiBwYWdlcwotICBkdWUgdG8gZGVw cmVjaWF0ZWQgZXJyb3JzLiBBbHNvIHRyeSBoYXJkZXIgdG8gc3VwcHJlc3MgZGVwcmVjaWF0ZWQg ZXJyb3JzIG9uCi0gIGFsbCBQSFAgdmVyc2lvbnMuIFNldCAjI0RFQlVHPTIjIyBpbiAjI2NvbmZp Zy5pbmkjIyB0byB2aWV3IGRlcHJlY2lhdGVkCi0gIGVycm9ycywgYW5kICMjREVCVUc9MSMjIGZv ciBiYXNpYyBlcnJvcnMuIEFkZGVkIGhvb2tzIGZvciBjc3MgZm9ybWF0dGluZyBvZgotICBkZXBy ZWNpYXRlZCBlcnJvcnMuCi0qIEltcHJvdmVtZW50cyBhbmQgYnVnZml4ZXMgdG8gbG9hZGluZyBh bmQgc2F2aW5nIHBhZ2VzIHRvIGZpbGVkdW1wczoKLSAgLSBmaXhlZCBkb3dubG9hZCBvZiBpbmRp dmlkdWFsIGR1bXAgZmlsZXMgc3RhbGxpbmcgaW4gY2hyb21lIChtdXN0IGFsd2F5cwotICAgIGNs aWNrIHJlc3VtZSkuCi0gIC0gZml4ZWQgcGFnZSBsb2NrIHN0YXR1cyBub3QgYWx3YXlzIGxvYWRp bmcsIGVzcGVjaWFsbHkgZm9yIHZpcmdpbiB3aWtpLgotICAtIFNlY3VyaXR5OiBQcmV2ZW50ZWQg dW5sb2NraW5nIGV4aXN0aW5nIHBhZ2Ugd2hlbiBsb2FkaW5nIGR1bXBlZCBmaWxlCi0gICAgd2l0 aG91dCBsb2NrIGZsYWcuCi0gIC0gU2VjdXJpdHk6IFBhZ2UgaGl0cyBhbmQgYWNsIGFyZSBvbmx5 IGxvYWRlZCB3aGVuIHBhZ2UgZG9lc24ndCBleGlzdCBpbgotICAgIGRhdGFiYXNlLiBUbyBkbyBh IGNvbXBsZXRlIHJlc3RvcmUgb2YgYSBwYWdlLCBkZWxldGUgaXQgZmlyc3QuCi0gIC0gRml4ZWQg cGFnZSBtZXRhZGF0YSBjaGFuZ2VzIGluY29ycmVjdGx5IGJlaW5nIGFwcGxpZWQgdG8gZGF0YWJh c2Ugd2hlbgotICAgIGF0dGVtcHRpbmcgdG8gbG9hZCBhIGZpbGUgYW5kIGl0IHdhcyBza2lwcGVk LgotICAtIFdoZW4gYSBmaWxlIGlzIGxvYWRlZCB0aGUgc3RhdHVzIG5vdyByZXBvcnRzIHRoZSBs b2FkZWQgcGFnZSBsb2NrIHN0YXR1cy4KLSAgLSBSZW1vdmVkIGludmFsaWQgaHR0cCBoZWFkZXJz LgotICAtIEFkZGVkIGR1bXBzdm4gYWN0aW9uLCBtYWlubHkgZm9yIGRldmVsb3BlcnMgYW5kIHRy YW5zbGF0b3JzIG9mIHBnc3JjIGZpbGVzLgotICAtIEZpeGVkIGZpbGVuYW1lcyBzb21ldGltZXMg bm90IGJlaW5nIHVybGVuY29kZWQgcHJvcGVybHkuCi0gIC0gSW1wcm92ZWQgZmlsdGVyaW5nIG9m IHVua25vd24gcGFnZSBtZXRhZGF0YSBiZWluZyBsb2FkZWQgaW50byBkYXRhYmFzZS4KLSogY29u ZmlndXJhdG9yLnBocCBpcyBub3cgaW4gYSBsZXNzLWJyb2tlbiBzdGF0ZS4gVXNlYWJsZSBidXQg bmVlZHMgbW9yZSB3b3JrLgotCi09PSAxLjYuNCAyMDI0LTAzLTEzIE1hcmMtRXRpZW5uZSBWYXJn ZW5hdSwgQ2hyaXN0b2YgTWVlcndhbGQgPT0KLQotKiBVcGdyYWRlIFBFQVIgdG8gcmVsYXNlIDEu MTAuMTQsIFBFQVIgREIgdG8gcmVsZWFzZSAxLjEyLjEKLSogQ2hlY2sgZm9yICJzaGVsbF9leGVj IiBiZWZvcmUgdXNpbmcgaXQgKENocmlzdG9mIE1lZXJ3YWxkKQotKiBJbXByb3ZlIFJTUyAoQ2hy aXN0b2YgTWVlcndhbGQpCi0qIEFkZCBzdXBwb3J0IGZvciBTUUxpdGUgaW4gUERPLCBhZGQgc3Vw cG9ydCBmb3IgU1FMaXRlMyBpbiBQRUFSIChDaHJpc3RvZiBNZWVyd2FsZCkKLQotPT0gMS42LjMg MjAyMy0xMS0xNSBNYXJjLUV0aWVubmUgVmFyZ2VuYXUgPT0KLQotVGhpcyBpcyBhIGJ1Zy1maXgg cmVsZWFzZS4KLQotSXQgZml4ZXMgYSBidWcgaW4gfkV4dGVybmFsUmVmZXJyZXIgd2l0aCBQSFAg OC4yLgotUmVwb3J0ZWQgYnkgVGhvbSBKZWVyYS4KLQotPT0gMS42LjIgMjAyMy0wNy0xMyBNYXJj LUV0aWVubmUgVmFyZ2VuYXUgPT0KLQotUGhwV2lraSAxLjYuMiBpcyB0aGUgbGFzdCByZWxlYXNl IGNvbXBhdGlibGUgd2l0aCBQSFAgNS4KLUl0IHNob3VsZCB3b3JrIGZvciBhbGwgUEhQIHJlbGVh c2VzIGZyb20gNS4zLjMgdG8gOC4yLnguCi1QaHBXaWtpIDEuNy4wIHdpbGwgcmVxdWlyZSBhdCBs ZWFzdCBQSFAgNy40LgotCi09PT0gRml4ZXMgPT09Ci0qIE1ha2UgcmVuYW1pbmcgb2YgcGFnZXMg d29yayBmb3IgREFUQUJBU0VfVFlQRSA9IFBETyBhbmQgZmlsZS4KLSogTWFrZSBXYW50ZWRQYWdl cyB3b3JrIGZvciBEQVRBQkFTRV9UWVBFID0gZGJhIGFuZCBmaWxlCi0qIEJhY2sgbGlua3Mgbm93 IHdvcmsgd2hlbiB0aGUgbGluayBpcyBpbnNpZGUgYSB0YWJsZSwgaW4gYSB0ZW1wbGF0ZSBvciBp biBhbiBpbmNsdWRlZCBwYWdlLgotCi09PT0gTWlzYyA9PT0KLSogQWRkIFNvdXJjZUZvcmdlIE9w ZW4gU291cmNlIEV4Y2VsbGVuY2UgYmFkZ2UgdG8gZm9vdGVyCi0KLT09IDEuNi4xIDIwMjItMDEt MjQgTWFyYy1FdGllbm5lIFZhcmdlbmF1ID09Ci0KLVRoaXMgcmVsZWFzZSBtYWtlcyB+UGhwV2lr aSBjb21wYXRpYmxlIHdpdGggUEhQIDguMS4KLSMjUkVBRE9OTFkjIyBpcyByZW5hbWVkIGFzICMj SVNSRUFET05MWSMjLCBzaW5jZSAjI3JlYWRvbmx5IyMgaXMgbm93IGEga2V5d29yZCBpbiBQSFAg OC4xLgotCi09PT0gRml4ZXMgPT09Ci0qIE1ha2UgbGlzdCBvZiBwYWdlcyB3b3JrIHdpdGggUERP ICh+QWxsUGFnZXMsIH5Nb3N0UG9wdWxhci4uLikuCi0qIEJldHRlciBoYW5kbGluZyBvZiB0aGVt ZSBjaGFuZ2UgaW4gflVzZXJQcmVmZXJlbmNlcy4KLSogSW4gREFUQUJBU0VfVFlQRSA9IGZpbGUs IGRvIG5vdCB1cGRhdGUgbWV0YWRhdGEgaWYgcGFnZSBkb2VzIG5vdCBleGlzdCAocmVwb3J0ZWQg YnkgSGFyb2xkIEhhbGxpa2FpbmVuKS4KLSogTWFrZSB0aGUgdG9vbGJhciBpbWFnZSBidXR0b24g d29yayB3aGVuICMjVVBMT0FEX1VTRVJESVIjIyBpcyBzZXQuCi0qIGJsb2cgdGhlbWUgaW1wcm92 ZWQuCi0KLT09PSBDaGFuZ2VzID09PQotKiBXYXJuIHVzZXIgdGhhdCBsZWF2aW5nIHRoZSBwYWdl IHdpbGwgbG9zZSBtb2RpZmljYXRpb25zLgotKiBBZGQgYnV0dG9uIHRvIGNyZWF0ZSB0aGUgcGFn ZSBpZiBpdCBkb2VzIG5vdCBleGlzdC4KLSogVE9PTEJBUl9JTUFHRV9QVUxMRE9XTiBpcyB0cnVl IGJ5IGRlZmF1bHQuCi0qIFJlbW92ZSBBRE9EQiBEQVRBQkFTRV9UWVBFLiBVc2UgU1FMIChQZWFy KSBvciBQRE8uCi0qIEFkZCDigJxSZW5hbWXigJ0gdGFiIGluIFNpZGViYXIgdGhlbWUuCi0qIFBh Z2UgbG9ja2luZyBhbmQgdW5sb2NraW5nIGlzIG5vdyBzYXZlZCBpbiBwYWdlIGhpc3RvcnkgKGlu IEVkaXQgbW9kZSkuCi0qIEFkZCBzYW1wbGUgaW1hZ2VzIGZvciB+UGhvdG9BbGJ1bSBpbiBibG9n IHRoZW1lLgotKiBSZW1vdmUgRURJVElOR19QT0xJQ1kKLSogUmVtb3ZlIEVOQUJMRV9YSFRNTF9Y TUwKLSogUmVtb3ZlIFVTRUNBQ0hFLCBhbHdheXMgdHJ1ZQotKiBNb3JlIHRyYW5zbGF0aW9ucwot Ci09PT0gUGx1Z2lucyA9PT0KLSogQ2hhcnQgcGx1Z2luOiBuZXcgYXJndW1lbnQg4oCcbGVnZW5k 4oCdCi0qIFVwTG9hZCBwbHVnaW46IGFsbG93IG1vcmUgZmlsZW5hbWVzIChlLmcuIHdpdGggQ2hp bmVzZSBjaGFyYWN0ZXJzKQotKiB+UHJlZmVyZW5jZXNJbmZvIHBsdWdpbiByZW1vdmVkCi0qIH5D YXRlZ29yeVBhZ2UgcGx1Z2luIHJlbW92ZWQsIGNhdGVnb3JpZXMgYXJlIGJldHRlciBjcmVhdGVk IHdpdGggdGhlIGJ1dHRvbiBpbiB0aGUgdG9vbGJhcgotKiB+UmVjZW50Q2hhbmdlc0NhY2hlZCBw bHVnaW4gcmVtb3ZlZCwgflJlY2VudENoYW5nZXMgcGx1Z2luIGlzIGZhc3QgZW5vdWdoCi0KLT09 IDEuNi4wIDIwMjEtMDgtMTIgTWFyYy1FdGllbm5lIFZhcmdlbmF1ID09Ci0KLU1ham9yIHJlbGVh c2U6Ci0qIFBIUCA3IGFuZCA4IGNvbXBhdGlibGUgKHdvcmtzIGZyb20gUEhQIDUuMy4zIHRvIFBI UCA4LjApCi0qIEZ1bGwgSFRNTCA1OiBBZGQgSFRNTCA1IDxtYWluPiA8aGVhZGVyPiA8Zm9vdGVy PiA8bmF2PiBpbiBhbGwgdGhlbWVzLiBBZGQgQVJJQSByb2xlcy4KLSogRmxhc2ggaXMgZGVhZAot KiBJbnRlcm5ldCBFeHBsb3JlciBpcyBkZWFkCi0KLT09PSBGaXhlcyA9PT0KLSogTWFrZSBmdW5j dGlvbiBJc1NhZmVVUkwgbW9yZSBzdHJpY3QKLSogTWFrZSBYSFRNTCBaSVAgU25hcHNob3Qgd29y ayBhZ2FpbiAoYnJva2VuIHNpbmNlIH5QaHBXaWtpIDEuNS4zKQotKiBJdCB3YXMgcG9zc2libGUg dG8gcmVuYW1lIGEgcGFnZSB0byBhIG5hbWUgd2l0aCBpbGxlZ2FsIGNoYXJhY3RlcnMsIGxpa2Ug flt+XQotKiBCZXR0ZXIgaGFuZGxpbmcgb2YgcGFnZSBuYW1lcyB3aXRoIHNsYXNoCi0qIFJlbW92 ZSB3cm9uZyBjYWxscyB0byBzZXRUaWdodG5lc3MgaW4gIyNsaWIvfklubGluZVBhcnNlci5waHAj IyAoYnVnIHJlcG9ydGVkIGJ5IEhhcm9sZCBIYWxsaWthaW5lbikKLSogSW1wb3J0aW5nIGEgWklQ IGZyb20gYW4gb2xkIHdpa2kgaW4gTGF0aW4gMSAoSVNPIDg4NTktMSkgZmFpbGVkLiBSZXBvcnRl ZCBieSBGcmFuayBNaWNoYWVsLgotKiBCZXR0ZXIgY2hlY2sgYXJndW1lbnRzIGZvciB+R29vZ2xl TWFwcyBwbHVnaW4KLSogUmV2ZXJ0IFN1YnZlcnNpb24gY29tbWl0IDkxMTEsIGJhZCBzaWRlIGVm ZmVjdHM7IHJlLW9wZW5pbmcgQnVnIzYwNyBCYWNrTGlua3MgZG8gbm90IHdvcmsgaW5zaWRlIGEg flJpY2hUYWJsZQotKiBTZWN1cml0eSBmaXhlcwotCi09PT0gQ2hhbmdlcyA9PT0KLSogQWxsIHJl dmlzaW9ucyBhcmUga2VwdC4KLSogQWRkIG5ldyBidXR0b24gaW4gRWRpdCBUb29sYmFyOiBjb252 ZXJ0IFRhYiBTZXBhcmF0ZWQgVmFsdWVzIHRvIFdpa2ljcmVvbGUgdGFibGUKLSogVXBkYXRlIGpR dWVyeSB0byAyLjIuNAotKiBQZWFyOiB1c2UgIyNteXNxbGkjIyBpbnN0ZWFkIG9mICMjbXlzcWwj IwotKiBVcGRhdGUgUEVBUi5waHAgdG8gcmVsZWFzZSAxLjEwLjEyCi0qIFVwZGF0ZSBQZWFyIERC IGxpYnJhcnkgdG8gMS4xMC4wCi0qIFVwZGF0ZSBQZWFyIENhY2hlIGxpYnJhcnkgdG8gMS41LjYK LSogVXBkYXRlIEFkb2RiIHRvIHZlcnNpb24gNS4yMC4xOQotKiBVcGRhdGUgQVNDSUlNYXRoUEhQ IHRvIHZlcnNpb24gMi4xIChmcm9tIFplZmxpbmcvQVNDSUlNYXRoUEhQIG9uIGdpdGh1Yi5jb20p Ci0qIFVwZGF0ZSBoaWdobGlnaHQuanMgdG8gdmVyc2lvbiA5LjE1LjYKLSogQWxsb3cgV2lraWNy ZW9sZSBzeW50YXggZm9yIHBsdWdpbnMgaW4gdGhlbWUgdGVtcGxhdGVzCi0qIFZhbGlkIEhUTUw1 IGFuZCBDU1MzIGxvZ29zIChpbiBkZWJ1ZyBtb2RlKQotKiBCZXR0ZXIgaXNfbG9jYWxob3N0KCkg ZnVuY3Rpb24gKGFsbG93IElQdjYsIGFsbG93IFdpbmRvd3MgSUlTKS4gUGF0Y2ggYnkgVGhpZXJy eSBOYWJldGguCi0qIFJlbW92ZSBGdXNpb25mb3JnZS1zcGVjaWZpYyBmaWxlcyAoZyB2aWV3LnBo cCB3aWtpYWRtaW4ucGhwIHdpa2lsaXN0LnBocCkKLSogUmVtb3ZlIFVTRV9TQUZFX0RCU0VTU0lP TiAoYWx3YXlzIHRydWUpLCBESVNBQkxFX0hUVFBfUkVESVJFQ1QKLSogUERPIHBhdGNoIGJ5IFPD qWJhc3RpZW4gTGUgQ2FsbG9ubmVjCi0qIFVwZGF0ZWQgcGdzcmMgcGFnZXMgaW4gYWxsIGxhbmd1 YWdlcwotKiBBZGRpbmcgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXIgaW4gUEhQIHNvdXJjZSBmaWxl cwotCi09PT0gUGx1Z2lucyA9PT0KLSogflVwTG9hZCBwbHVnaW46IHB1dCBkYXRlIGFuZCBhdXRo b3IgaW4gaGlzdG9yeQotKiB+VXBMb2FkIHBsdWdpbjogZG9uJ3QgaW5saW5lIGltYWdlcwotKiB+ UGhwV2VhdGhlciByZW1vdmVkLCB1c2VzIGRlcHJlY2F0ZWQgbXlzcWwgZnVuY3Rpb25zCi0qIH5I dG1sQ29udmVydGVyIHBsdWdpbjogY2hlY2sgZmlsZSBpcyBlbmNvZGVkIGluIFVURi04OyB+SHRt bENvbnZlcnRlciBwbHVnaW4gYWxsb3dlZCBpbiBGdXNpb25mb3JnZQotKiBVc2UganF1ZXJ5LmF1 dG9oZWlnaHQuanMgcGx1Z2luIGZvciBUcmFuc2NsdWRlIHBsdWdpbgotKiBSZXBhaXIgW1tIZWxw OlBob3RvQWxidW1QbHVnaW58UGhvdG9BbGJ1bVBsdWdpbl1dCi0qIFJlbmFtZSBhY3Rpb24gcGFn ZSB+RGVidWdJbmZvIGFzIH5EZWJ1Z0JhY2tlbmRJbmZvICh0byBiZSBjb25zaXN0ZW50IHdpdGgg cGx1Z2luIG5hbWUpCi0qIEJldHRlciBjaGVjayBib29sZWFuIGFyZ3VtZW50cyBpbiBwbHVnaW5z Ci0KLT09IDEuNS41IDIwMTUtMTItMTEgTWFyYy1FdGllbm5lIFZhcmdlbmF1ID09Ci0KLSogRml4 IHRvb2x0aXAgdHJhbnNsYXRpb24gaW4gfkNyZWF0ZVRvYyBwbHVnaW4KLSogUmVtb3ZlIGFjY2Vz cyBrZXlzCi0qIENoZWNrIE1BWF9QQUdFTkFNRV9MRU5HVEggaW4gQ3JlYXRlUGFnZQotKiBGaXgg ZmF0YWwgZGF0YWJhc2UgZXJyb3Igd2l0aCBtdWx0aXBsZSBjb21tYS1kZWxpbWl0ZWQgc29ydGJ5 IGFyZ3MKLSogUmVtb3ZlIGZvcmJpZGRlbiBjaGFyYWN0ZXJzOiB+PH4+flt+XX57fn1+In58fiMg ZnJvbSBwYWdlbmFtZQotKiBOZXcgcHJvcGVydHk6IEFMTE9XRURfTE9BRCBnaXZpbmcgbGlzdCBv ZiBkaXJlY3RvcmllcyBmcm9tIHdoaWNoIGl0IGlzIGFsbG93ZWQgdG8gbG9hZCBwYWdlcy4KLSog VXBsb2FkfjogcmVwbGFjZSBtdWx0aXBsZSBzcGFjZXMgYnkgc2luZ2xlIHNwYWNlCi0qIE1ha2Ug ZnVuY3Rpb25zIG1lcmdlZCBhbmQgaXNfY29uZmxpY3QgcHVibGljIGluIGxpYi9kaWZmMy5waHAg KHN1cHBvcnQgcmVxdWVzdCAjMTYyKQotCi09PSAxLjUuNCAyMDE1LTA2LTI5IE1hcmMtRXRpZW5u ZSBWYXJnZW5hdSA9PQotCi0qIEZpeCB+V2FudGVkUGFnZXMgZm9yIEZ1c2lvbmZvcmdlCi0qIFJl bW92ZSB+V2FudGVkUGFnZXNPbGQgKHVzZSB+V2FudGVkUGFnZXMgaW5zdGVhZCkKLSogQWRkIFdl Yk0gZm9ybWF0IGluIFZpZGVvIHBsdWdpbgotKiBVcGRhdGUganNjYWxlbmRhciB0byAxLjAKLSog UmVtb3ZlIFdpZHRoIGFuZCBIZWlnaHQgcHJlZmVyZW5jZXMgbW9kaWZpY2F0aW9uIGluIEVkaXQg VG9vbGJhcgotKiBOZXcgaWNvbnMgaW4gRWRpdCBUb29sYmFyCi0qIE1ha2Ugc3RhdGljIHRlbXBs YXRlcyBpbiBFZGl0IFRvb2xiYXIgd29yawotKiBGaXggbWVtb3J5X2xpbWl0IGZvciBXSUtJX1NP QVAKLSogUmVtb3ZlIH5Nb2NrUmVxdWVzdAotKiBVcGRhdGUganF1ZXJ5IHRvIDEuMTEuMwotCi09 PSAxLjUuMyAyMDE1LTAzLTA0IE1hcmMtRXRpZW5uZSBWYXJnZW5hdSA9PQotCi0qIEZpeCBCdWcj NjQ4IENhbGwgdG8gcHJvdGVjdGVkIG1ldGhvZAotKiBlYXNpZXIgZmlsZSB1cGxvYWQ6IGZvcmJp ZGRlbiBjaGFyYWN0ZXJzIGluIGZpbGVuYW1lIGFyZSByZXBsYWNlZCBieSBkYXNoZXMgKGluc3Rl YWQgb2YgcmVqZWN0aW5nIHVwbG9hZCkKLSogaW1wcm92ZSBoYW5kbGluZyBvZiBpbWFnZSBpbnNl cnRpb24gaWNvbiBpbiBlZGl0IHRvb2xiYXIgKGljb24gZGlkIG5vdCBhbHdheXMgYXBwZWFyIGFm dGVyIGltYWdlIHVwbG9hZGluZykKLSogYmlnZ2VyIHdpa2lwYWdpbmcgZm9udAotKiB0ZXN0IGFn YWluIGZvciBmdW5jdGlvbiAncG9zaXhfdGltZXMnLCBpdCBkb2VzIG5vdCBleGlzdCBvbiBXaW5k b3dzIChyZXBvcnRlZCBieSBqZGViZXJ0KQotKiByZW1vdmUgRlBERiwgbGliL2dpZi5waHAsIGxp Yi9mb250ICh3ZXJlIG5vdCB1c2VkKQotKiByZW5hbWUgcGx1Z2luIF9SZXRyYW5zZm9ybSB0byB+ RGVidWdSZXRyYW5zZm9ybQotKiB1c2UgUEhQIFpJUCBjbGFzcyBpbnN0ZWFkIG9mIGhvbWUtbWFk ZSBmdW5jdGlvbnMuIHppcGxpYiByZW5hbWVkIHRvIG1pbWVsaWIKLSogYWRkIFNPQVAgc2NyaXB0 cwotKiByZW5hbWUgRkNLZWRpdG9yIHRvIENLZWRpdG9yCi0qIGxvYWQgdGhlbWUgcGdzcmMsIGlm IGl0IGV4aXN0cwotKiBTVUJQQUdFX1NFUEFSQVRPUiByZW1vdmVkLCBpdCBtdXN0IGJlICcvJwot KiBSYXRlSXQgcGx1Z2luIGZvciBGdXNpb25mb3JnZQotKiByZW1vdmUgYWNkcm9wZG93biBhbmQg bGl2ZXNlYXJjaAotKiByZW1vdmUgQ1ZTIGJhY2tlbmQKLQotPT0gMS41LjIgMjAxNC0xMC0xMCBN YXJjLUV0aWVubmUgVmFyZ2VuYXUgPT0KLQotVGhpcyBpcyBhIHNlY3VyaXR5IGZpeCByZWxlYXNl LgotKiBGaXggQ1ZFLTIwMTQtNTUxOTogdnVsbmVyYWJpbGl0eSBpbiBQbG90aWN1cyBwbHVnaW4u IFtbaHR0cDovL3d3dy5jdmVkZXRhaWxzLmNvbS9jdmUvQ1ZFLTIwMTQtNTUxOS9dXQotCi1UaGlz IHZ1bG5lcmFiaWxpdHkgaXMgcHJlc2VudCBpbiB+UGhwV2lraSAxLjUuMCBhbmQgMS41LjEuIEFs bCB1c2VycyBhcmUgYWR2aXNlZCB0byB1cGdyYWRlIHRvIH5QaHBXaWtpIDEuNS4yLgotCi09PSAx LjUuMSAyMDE0LTEwLTAyIE1hcmMtRXRpZW5uZSBWYXJnZW5hdSA9PQotCi0qIGZpeCBCdWcjNDU2 ICdPcHRpbWl6aW5nIERhdGFiYXNlJyBtZXNzYWdlIHNvbWV0aW1lcyBwcmludGVkIG9uIHBhZ2UK LSogcmVtb3ZlIH5GcmFtZUluY2x1ZGUgcGx1Z2luIChmcmFtZXMgYXJlIG5vdCBzdXBwb3J0ZWQg aW4gSFRNTCA1KQotKiBzb3J0IHRhYmxlcyB3aXRoIFtbaHR0cDovL3RhYmxlc29ydGVyLmNvbXx0 YWJsZXNvcnRlciBqUXVlcnkgcGx1Z2luXV0gaW5zdGVhZCBvZiBzb3J0YWJsZS5qcwotKiBmaXgg QnVnIzYzNiBSZWN1cnNpdmUgaW5jbHVkZSBpcyBub3QgdHJhcHBlZAotKiBmaXggQnVnIzY0NyB1 bmRlZmluZWQgbWV0aG9kIHt7e1dpa2lEQl9iYWNrZW5kX2RiYTo6V2lraURCX2JhY2tlbmRfZGJh QmFzZX19fQotKiBjb3JyZWN0IHRvdGFsIG51bWJlciBvZiBwYWdlcyBmb3IgQWxsUGFnZXNDcmVh dGVkQnlNZSwgQWxsUGFnZXNPd25lZEJ5TWUsIEFsbFBhZ2VzTGFzdEVkaXRlZEJ5TWUKLSogZml4 IEJ1ZyM2MDcgQmFja0xpbmtzIGRvIG5vdCB3b3JrIGluc2lkZSBhIFtbSGVscDpSaWNoVGFibGVQ bHVnaW58UmljaFRhYmxlXV0KLSogZml4IEJ1ZyM2NDYgV3JvbmcgbnVtYmVyIG9mIGxpbmtzIGlu IEJhY2tMaW5rcwotKiBtYWtlIDxpbmNsdWRlb25seT4gd29yawotKiByZW1vdmUgb2xkIH5XaWtp VXNlciBjb2RlIChFTkFCTEVfVVNFUl9ORVcpCi0qIGFkbWluIGFsd2F5cyBoYXMgcmlnaHRzIHRv IHNlZSBhbmQgbW9kaWZ5IHBhZ2VzLCByZWdhcmRsZXNzIG9mIEFDTHMsIHRvIGF2b2lkIGxvY2tp bmcgaGltc2VsZiBvdXQKLSogYWRkIG1pc3NpbmcgaW1hZ2VzIGluIFNpZGViYXIgdGhlbWUKLQot PT0gMS41LjAgMjAxNC0wNy0yOSBNYXJjLUV0aWVubmUgVmFyZ2VuYXUgPT0KLQotPT09IE1haW4g Q2hhbmdlcyA9PT0KLSogflBocFdpa2kgMS41LjAgbmVlZHMgYXQgbGVhc3QgUEhQIDUuMy4gSXQg aXMgY29tcGF0aWJsZSB3aXRoIFBIUCA1LjMsIDUuNCBhbmQgNS41LgotKiBPbmUgc2luZ2xlIHdp a2kgbWFya3VwLCBiYXNlZCBvbiBXaWtpY3Jlb2xlIGFuZCBjb21wYXRpYmxlIHdpdGggY2xhc3Np YyBwaHBXaWtpIG1hcmt1cC4KLSogRnVsbCBIVE1MIDUgYW5kIENTUyAzLiBBIG1vZGVybiBicm93 c2VyIGlzIG5lZWRlZC4KLSogRnVsbCBVVEYtOC4KLQotPT09IE90aGVyIENoYW5nZXMgPT09Ci0q IEZpeCBiYWQgZGlzcGxheSBpbiBUb29sYm94IG1lbnUgKFNpZGViYXIgYW5kIE1vbm9ib29rIHRo ZW1lcykgcmVwb3J0ZWQgYnkgSGFyb2xkIEhhbGxpa2FpbmVuCi0qIEZpeCBDYXB0Y2hhIHByb2Js ZW0gcmVwb3J0ZWQgYnkgSGFyb2xkIEhhbGxpa2FpbmVuCi0qIE1lcmdlIH5PbGRUZXh0Rm9ybWF0 dGluZ1J1bGVzIGludG8gflRleHRGb3JtYXR0aW5nUnVsZXMKLSogflN5bnRheEhpZ2hsaWdodGVy IHBsdWdpbiBpcyBub3cgaW1wbGVtZW50ZWQgd2l0aCBbW2h0dHA6Ly9oaWdobGlnaHRqcy5vcmcv XV0gaW5zdGVhZCBvZiBbW2h0dHA6Ly93d3cuYW5kcmUtc2ltb24uZGVdXS4KLSogQ2htb2QgYWN0 aW9uIGlzIHJlbW92ZWQuCi0qIE5ldyBhY3Rpb246IH5EZWxldGVBY2wKLSogVXBkYXRlZCBkb2N1 bWVudGF0aW9uIHBhZ2VzIGluIHBnc3JjLgotKiBVcGRhdGVkIHRyYW5zbGF0aW9ucy4KLQotPT0g MS40LjAgMjAxNC0wNy0yNSBSZWluaSBVcmJhbiwgTWFyYy1FdGllbm5lIFZhcmdlbmF1LCBTYWJy aSBMYWJiZW5lcywgU8OpYmFzdGllbiBMZSBDYWxsb25uZWMgPT0KLQotflBocFdpa2kgMS40LjAg aXMgdGhlIHNhbWUgYXMgflBocFdpa2kgMS40LjBSQzEuIEl0IGlzIHRoZSBsYXN0IHJlbGVhc2Ug Y29tcGF0aWJsZSB3aXRoIFBIUCA0LgotCi09PSAxLjQuMFJDMSAyMDEwLTA5LTE3IFJlaW5pIFVy YmFuLCBNYXJjLUV0aWVubmUgVmFyZ2VuYXUsIFNhYnJpIExhYmJlbmVzLCBTw6liYXN0aWVuIExl IENhbGxvbm5lYyA9PQotCi1UaGlzIGlzIGEgbmV3IG1ham9yIHJlbGVhc2UsIHdoZXJlIGV2ZXJ5 dGhpbmcgY2hhbmdlZCBmcm9tIDEuMiwgYW5kIGxvdHMgb2YgY2hhbmdlcyBzaW5jZSAxLjMuMTQu Ci0KLUFuIGltcG9ydGFudCBtb2RpZmljYXRpb24gaW4gdGhpcyByZWxlYXNlIGlzIHRoZSBpbXBs ZW1lbnRhdGlvbgotb2YgZnVsbCBXaWtpY3Jlb2xlIDEuMCBzeW50YXgsIGluY2x1ZGluZyBhZGRp dGlvbnMuCi0KLVRoZSAiY2xhc3NpYyIgUGhwd2lraSBzeW50YXggaXMgc3RpbGwgc3VwcG9ydGVk LgotCi1UaGUgZG9jdW1lbnRhdGlvbiBwYWdlcyBmb3VuZCBpbiBwZ3NyYyBoYXZlIGJlZW4gbW9z dGx5IGNvbnZlcnRlZCB0byBVVEYtOCBhbmQKLVdpa2ljcmVvbGUgc3ludGF4ICh3aXRoIHRoZSBh ZGRpdGlvbiBvZiB0YWJsZXMgaW4gTWVkaWF3aWtpIHN5bnRheCwgc2luY2UgV2lraWNyZW9sZSAx LjAKLWRvZXMgbm90IHN1cHBvcnQgImNvbXBsZXgiIHRhYmxlcyB3aXRoIGJsb2NrIGVsZW1lbnRz IGluIGNlbGxzLCBsaWtlIGxpc3RzIG9yCi1wYXJhZ3JhcGhzKS4KLQotSW1wcm92ZWQgZHVtcGlu ZywgcGFnZXNldCBoYW5kbGluZyBmb3IgZm9ybWF0PSB3aXRoIH5BY3Rpb25QYWdlcy4KLWUuZy4g ZHVtcCBwYWdlc2V0cyBvciBtdWx0aS1wYWdlIHBkZidzLgotCi1UaGUgU2lkZWJhciB0aGVtZSBp cyBub3cgYW4gZXh0ZW5zaW9uIG9mIHRoZSBNb25vYm9vayB0aGVtZSAoa25vd24gZnJvbSBXaWtp cGVkaWEpLAotdGhlIG5ldyBmdXNpb25mb3JnZSB0aGVtZSBpcyB0byBiZSB1c2VkIHRvZ2V0aGVy IHdpdGggW1todHRwOi8vZnVzaW9uZm9yZ2Uub3JnfEZ1c2lvbkZvcmdlXV0gKHRoZSBzdWNjZXNz b3Igb2YgR2ZvcmdlKS4KLQotPT09IEZpeGVzID09PQotKiBmaXggflBhZ2VQZXJtIGZvciBtdWx0 aXBsZSBncm91cHM6IG5vdCBhIG1lbWJlciBhbmQgdW5kZWNpZGVkOiBjaGVjayBvdGhlciBncm91 cHMKLSogZml4IHJzcyBidXR0b24gYWN0aW9ucyBmb3Igc3BlY2lhbCBSZWNlbnRDaGFuZ2VzIGFj dGlvbnMgKFVzZXJDb250cmlicywgUGFnZUhpc3RvcnksIC4uLikKLSogZml4IEJ1ZyMxNzQ5OTUw IGFjY2Vzc2xvZyBTUUwgZHVyYXRpb24gZmxvYXQgd2l0aCAiLCIKLSogZml4IHRlbXBsYXRlIGlu Y2x1c2lvbiB3aXRoIGEgcmVjdXJzaW9uIGN5Y2xlIGxlYWRpbmcgdG8gY3Jhc2hlcyBpbiBibG9n IFBhZ2VJbmZvCi0qIHJlbW92ZWQgZHluYW1pYyBmZWF0dXJlcyBmcm9tIGh0bWxkdW1wIHBhZ2Vz IGZvciBtb3JlIHN0YXRpYyBwbGVhc3VyZQotKiBpZ25vcmUgZmF0YWxzIGFuZCBhY2Nlc3MtZGVu aWVkIHN0b3dzdG9wcGVycyBvbiBtdWx0aS1wYWdlIGR1bXBzCi0qIGxpbmsgb25seSB0byBleGlz dGluZyBwYWdlcyBvbiBtdWx0aS1wYWdlIGR1bXBzIChwYWdlc2V0cykKLSogZml4IEJ1ZyMxNzk1 NDIwIGJ5IFN2ZW4gR2lua2E6IFVzZSAvVSBpbiBwcmVnX21hdGNoCi0qIGVuc3VyZSBlbmRpbmcg dXBsb2FkcyBzbGFzaCBldmVuIG9uIHVzZXIgcHJvdmlkZWQgVVBMT0FEIGNvbnN0YW50cy4gRml4 ZXMgcGx1Z2luL35VcExvYWQKLSogc3RhYmlsaXplIENvbW1lbnQuIHN1YnN0cmluZyBzZWFyY2gg Zm9yIGJhc2VwYWdlcywgZG8gbm90IHRva2VuaXplLgotKiBmaXggQnVnIzE3OTIxNzAgSGFuZGxl ICIgKCAiIG9yICIodGVzdCIgd2l0aG91dCBjbG9zaW5nICIpIiBhcyBwbGFpbiB3b3JkLiBBbGxv dyBzaW5nbGUgc3RyaW5nIHRva2VuICIwIgotKiBmaXggQnVnIzE3NTIxNzIgdW5kZWZpbmVkIG1l dGhvZCB7e3tUZXh0U2VhcmNoUXVlcnlfbm9kZV9vcjo6X3NxbF9xdW90ZSgpfX19Ci0qIGRiYTog Zml4IHNvcnRpbmcgZm9yIGVtcHR5IG10aW1lIGZpZWxkCi0qIH5MZGFwU2VhcmNoOiBmaXggbGF5 b3V0IGFuZCBsb2dpYwotKiB+RmlsZUluZm86IGZpeCAjI1VwbG9hZH46IyMgbGlua3MKLSogWEhU TUwgdmFsaWRhdGlvbiBjb3JyZWN0aW9ucyAodmFyZ2VuYXUpCi0qIGF2b2lkIHJlY3Vyc2l2ZSBt b2RpZmljYXRpb24gd2hlbiByZW5hbWluZyBhIHBhZ2UgbGlrZSAnflBhZ2VGb28gdG8gJ35QYWdl Rm9vVHdvJyAodmFyZ2VuYXUpCi0qIGZpeCBCdWcjMTgwODAwMiBUYWJsZSBvZiBjb250ZW50cyBw bHVnaW4gZG9lcyBub3QgbmVzdCBudW1iZXJpbmcgKHZhcmdlbmF1KQotKiBmaXggQnVnIzE5MDM4 MTUgQ2Fubm90IHB1dCAiMCIgaW4gflJpY2hUYWJsZSBjZWxsLCBjZWxsIGJlY29tZXMgZW1wdHkg KHZhcmdlbmF1KQotKiBmaXggQnVnIzE5MDQwODggIFNvbWUgYnJhY2tldHMgbGlua3Mgd2l0aCBc biBjYXVzZSB0aGUgcGFyc2VyIHRvIGNyYXNoCi0qIGZpeGVkIGluY29ycmVjdCBudW1iZXJpbmcg aW4gVGFibGUgb2YgQ29udGVudHMgbnVtYmVyaW5nICh2YXJnZW5hdSkKLSogZml4IEJ1ZyMxOTY3 MTQ3IH5GaWxlSW5mb1BsdWdpbiBkb2VzIG5vdCBhbGxvdyBkaXNwbGF5PW93bmVyCi0qIGZpeCBC dWcjMTk5MjE3MiBJbnRlcndpa2kgbGluayBkb2VzIG5vdCB3b3JrIGluIH5SaWNoVGFibGUgKHZh cmdlbmF1KQotKiBmaXggQnVnIzIwMTA3NDggTWlzc2luZyBpbWFnZQotKiBmaXggQnVnIzE4MzE4 ODEgRmF0YWwgZGF0YWJhc2UgZXJyb3Igd2hlbiBzb3J0aW5nIGNvbHVtbnMgKHZhcmdlbmF1KQot KiBmaXggflBhZ2VMaXN0IHByZXYvbmV4dCBsaW5rcyBvbiBtdWx0aS1jb2x1bW5zIGxpc3RzLCBp bXByb3ZlIGhhbmRsaW5nIG9mIG9yZGVyZWQgbGlzdHMKLSAgZml4ZWQgc2xpY2luZyB3aXRoIGxp c3QtYmFzZWQgYmFja2VuZHMgKGRiYSwgZmlsZSkuCi0qIGFsbG93IHNpbmdsZSAiMCIgYXMgbm90 LWVtcHR5IHBhZ2UgY29udGVudAotKiBmaXggYWN0aW9uPXJlbmFtZSwgc3VwcG9ydCBuZXcgb3B0 aW9uYWwgYXJndW1lbnQgdG89bmV3cGFnZW5hbWUKLSogZml4IG11bHRpcGxlIFVTRVJfQVVUSF9N RVRIT0Qgd2hlcmUgdGhlIGZpcnN0IG1ldGhvZCBkaWQgbm90IHN1Y2NlZWQuCi0KLT09PSBDaGFu Z2VzID09PQotLSBjaGFuZ2VkIH5TZW1hbnRpY1NlYXJjaCBxdWVyeSBzZW1hbnRpY3M6IGFsbCBy ZWdleD1hdXRvIHRlcm1zIHdpdGggbm8gcmVnZXggY2hhcnMgKC4rKj9eJCIpCi0gIHdpbGwgYmUg c2VhcmNoZWQgZXhhY3QsIGFuZCBub3Qgd2l0aCByZWdleD1hdXRvLiBUaGlzIG1lYW5zIG5vIHdv cmQgc3BsaXR0aW5nLCBubyBzdWJzdHJpbmdzLgotKiByYW5rZWQgc2VhcmNoIGZvciB0aXRsZSBh bmQgZnVsbHRleHQgZm9yIG5vbi1TUUwgYmFja2VuZHMuIFNpbXBsZSBzY29yZSBmdW5jdGlvbi4K LSogYWxsb3cgY29tbWVudHMgaW4gfldpa2lHcm91cCBsaXN0cyBhZnRlciB1c2VybmFtZQotKiBh ZXN0aGV0aWMgcmVxdWVzdDogcmVtb3ZlID9hY3Rpb249ZWRpdCBhZnRlciBlZGl0Ci0qIGNyZWF0 ZSBpbnRlcmltIHBhZ2VzIGFzIG1pbm9yIG5vdCBzZWUgdGhlbSBpbiBSZWNlbnRDaGFuZ2VzCi0q IGRlZmF1bHQgdGhlbWU6IHVzZSBzdGFuZGFyZCBzZWFyY2ggdGVtcGxhdGUgKH5MaXZlU2VhcmNo KQotKiBbW0hlbHA6Q2FsZW5kYXJQbHVnaW5dXSBjaGFuZ2VkIGRlZmF1bHQgc3RhcnRfd2RheSBm cm9tIDAgdG8gMSAoTW9uZGF5KQotKiBbW0hlbHA6Q2FsZW5kYXJMaXN0UGx1Z2luXV0gcGFnZXMg bm93IGluIHBhcmFsbGVsIHdpdGggQ2FsZW5kYXI6IHllYXIgKyBtb250aCBhcmdzIGFzIHN0YXJ0 IGJhc2UuCi0gIFRoZSBiZWhhdmlvdXIgYmVmb3JlIDIwMDcgd2l0aCBsYXN0L25leHRfbl9kYXlz IHdhcyB0byBzdGFydCBub3cuCi0qIHJlbW92ZWQgZnBkZiBzdXBwb3J0LiBvbmx5IHVzZSBleHRl cm5hbCBjb252ZXJ0ZXJzCi0qIGNoYW5nZSByZW5hbWUgYWN0aW9uIGZyb20gYWNjZXNzIHBlcm0g Y2hhbmdlIHRvIGVkaXQ6IGFsbG93IHRoZSBzaWduZWQtaW4gdXNlciB0byByZW5hbWUuCi0qIGh0 bWxkdW1wIGNvcGllcyBsb2NhbGx5IHVwbG9hZGVkIGltYWdlcyBhbHNvCi0qIGltcHJvdmUgU2Vt YW50aWNSZWxhdGlvbnMgbGF5b3V0OiBkaXJlY3QgbGlua3MsIHN1cHBvcnQgYXR0cmlidXRlcyBh bmQgcmVsYXRpb25zIGZpbHRlcnMKLSogfkxkYXBTZWFyY2g6IHVzZSBkZWZhdWx0IGJhc2Vkbgot KiBXaG9Jc09ubGluZSBjbGVhbnMgc3RhbGUgc2Vzc2lvbnMKLSogcmVtb3ZlIFVwbG9hZCBidXR0 b24gZnJvbSBlZGl0Ci0qIGNoYW5nZWQgV2lraXd5ZyBlZGl0b3Igd29ya2Zsb3cgKGxhYmJlbmVz KQotKiBhbGxvdyA8cz4gdG8gc3RyaWtlOyB1cGRhdGUgSGVscCBmb3IgPHM+IGFuZCA8c3RyaWtl PiAodmFyZ2VuYXUpCi0qIH5SaWNoVGFibGUgcGx1Z2luOiBlbnJpY2ggc3ludGF4IGZvciBhdHRy aWJ1dGVzICh2YXJnZW5hdSkKLSogbW9yZSBpY29ucyBmb3IgdG9vbGJhciAodmFyZ2VuYXUpCi0q IFVzZXJQcmVmZXJlbmNlczogc3BlY2lmaWMgbWVzc2FnZSB3aGVuIG9ubHkgb25lIHByZWZlcmVu Y2UgaXMgdXBkYXRlZCAodmFyZ2VuYXUpCi0qIHJlbmFtZWQgY2xhc3MgVGhlbWUgdG8gfldpa2lU aGVtZSB0byBhdm9pZCBHZm9yZ2UgbmFtZSBjbGFzaCAodmFyZ2VuYXUpCi0qIG51bWVyaWMgY2Vs bHMgaW4gdGFibGVzIGFyZSBub3cgcmlnaHQtYWxpZ25lZCBieSBkZWZhdWx0ICh2YXJnZW5hdSkK LSogPG5vaW5jbHVkZT4gYW5kIDwvbm9pbmNsdWRlPiBzaG91bGQgbm90IGFwcGVhciBldmVuIHdo ZW4gbm90IGluY2x1ZGVkICh2YXJnZW5hdSkKLSogc3BsaXQgUGhwV2lraUFkbWluaXN0cmF0aW9u IGluIHR3byBwYWdlczogUGhwV2lraUFkbWluaXN0cmF0aW9uIGFuZCBQaHBXaWtpRGVidWcgKHZh cmdlbmF1KQotKiBJbXByb3ZlIGhhbmRsaW5nIG9mIGNvbG9yIHRleHQgKGVzcGVjaWFsbHkgaW4g Y2FzZSBvZiBlcnJvcnMpLiBNb3JlIGNvbG9yIG5hbWVzIGFyZSBhbGxvd2VkLiAodmFyZ2VuYXUp Ci0qIH5TZXRBY2wsIENob3duLCBNYXJrdXAgYW5kIFJlbmFtZSBhcmUgbWFya2VkIGFzIG1pbm9y IGVkaXRzLiAodmFyZ2VuYXUpCi0qIERpc3BsYXkgIm1pbm9yIGVkaXQiIGZvciBtaW5vciBlZGl0 cyBpbiB+UmVjZW50Q2hhbmdlcyAobGlrZSBpbiB+UGFnZUhpc3RvcnkpLiAodmFyZ2VuYXUpCi0q IEluIFdpa2lBZG1pblNlbGVjdCwgcHV0IGJ1dHRvbnMgaW4gYWxwaGFiZXRpYyBvcmRlciBsaWtl IGluIHBhZ2UgflBocFdpa2lBZG1pbmlzdHJhdGlvbi4gKHZhcmdlbmF1KQotKiBJbiB+UGhwV2lr aUFkbWluaXN0cmF0aW9uLCBhbGwgcGFnZXMgYXJlIHNob3duIGluc3RlYWQgb2YgZmlyc3QgNTAu IE5vIHBhZ2luZyBpcyBkb25lLiAodmFyZ2VuYXUpCi0qIEluIH5XaWtpQWRtaW5TZWFyY2hSZXBs YWNlLCBvbmx5IHBhZ2VzIHdoZXJlIGEgcmVwbGFjZW1lbnQgd2FzIGRvbmUgYXJlIHNob3duIGFz IGZlZWRiYWNrLiAodmFyZ2VuYXUpCi0qIEluIH5XaWtpQWRtaW5TZWFyY2hSZXBsYWNlLCBzaG93 IHBhZ2VzIHdoZXJlIHJlcGxhY2VtZW50IHdpbGwgYmUgZG9uZS4gKHZhcmdlbmF1KQotKiBGb3Ig ZmlsZSB1cGxvYWQsIHVzZSBibGFjayBsaXN0IG9mIGV4dGVuc2lvbnMgaW5zdGVhZCBvZiB3aGl0 ZSBsaXN0LiAodmFyZ2VuYXUpCi0qIEl0IGlzIG5vdyBwb3NzaWJsZSB0byBpbnNlcnQgcHJlZGVm aW5lZCBpY29ucyBpbiB3aWtpIHRleHQuIFNlZSBbW0hlbHA6UHJlZGVmaW5lZEljb25zXV0uICh2 YXJnZW5hdSkKLSogQWxsb3cgInt7eyNbW319fSIgc3ludGF4IGZvciBhbmNob3JzLiAodmFyZ2Vu YXUpCi0qIEhhbmRsZSByZWRpcmVjdGlvbnMgaW4gVGVtcGxhdGUgcGx1Z2luLiAodmFyZ2VuYXUp Ci0qIEFsbG93IFdpa2ljcmVvbGUgc3ludGF4IGZvciByZWRpcmVjdGlvbnMgaW4gfkluY2x1ZGVQ YWdlIHBsdWdpbi4gKHZhcmdlbmF1KQotKiBOZXcgcHJlZmVyZW5jZSB0byBhdm9pZCBlLW1haWwg bm90aWZpY2F0aW9ucyBmb3IgbWlub3IgZWRpdHMgb24gV2lraSAodmFyZ2VuYXUpCi0qIE5vIGRl Y29yYXRpb24gZm9yIGFiYnJldmlhdGlvbnMgd2hlbiBwcmludGluZyAodmFyZ2VuYXUpCi0qIEFk ZCBDU1MzIGNvZGUgZm9yIHBhZ2UgaGVhZGVycyBhbmQgZm9vdGVycyAod29ya3MgZm9yIFBERiBn ZW5lcmF0aW9uIHdpdGggUHJpbmNlIFhNTCkgKHZhcmdlbmF1KQotKiBSZW1vdmUgc3VwZXJmbHVv dXMgc2Nyb2xsYmFyIGZyb20gcHJpbnRhYmxlIHByZSdzCi0KLT09PSBOZXcgPT09Ci0qIH5QYWdl TGlzdCBzdXBwb3J0cyBsaXN0dHlwZT11bCxvbCxkbC4gZGwgdXNlZCBieSBGdWxsVGV4dFNlYXJj aAotKiBwYWdlYWJsZSB0ZXh0c2VhcmNoIHJlc3VsdHMKLSogZXh0ZXJuYWwgc2VhcmNoIGJ1dHRv biBieSB1c2luZyBTZWFyY2g6IGFuZCBzZWFyY2h0eXBlPWV4dGVybmFsCi0qIGFkZGVkIH5Vbml2 ZXJzYWxXaWtpRWRpdEJ1dHRvbiB0byB+TW9ub0Jvb2ssIGRlZmF1bHQsIGJsb2cuIE1vcmUgdGhl bWVzIGxhdGVyLgotKiBhZGQgSU5TRUNVUkVfQUNUSU9OU19MT0NBTEhPU1RfT05MWSBmb3IgYWR2 YW5jZWQgc2VjdXJpdHkgYWN0aW9ucwotKiBlbmFibGUgIl5BIG9yIF5CIiBwYWdlcyBhcmd1bWVu dCBmb3IgflBhZ2VMaXN0czogZS5nLiBzcGxpdHRlZCBhY3Rpb25zIGZvciBsYXJnZSBodG1sZHVt cCdzCi0qIGRiYTogYWRkIGFyZ3MgdG8gY2hlY2sgYW5kIHJlYnVpbGQgKGZ1bGwgb3IgbGlua3Mg b25seSkKLSogUmVjZW50Q2hhbmdlczogYWRkIGNhdGVnb3J5LCBwYWdlbWF0Y2ggYXJndW1lbnRz Ci0qIGFkZCBVcmlSZXNvbHZlciBuZWVkZWQgZm9yIGV4dGVybmFsIHJkZiBhY2Nlc3MKLSogQXBw ZW5kVGV4dDogc3VwcG9ydCBwYWdlcyBhcmd1bWVudDogYXBwZW5kIHRvIG11bHRpcGxlIHBhZ2Vz Ci0qIG5ldyByZWFkb25seSBkYXRhYmFzZSBkZXRlY3Rpb24gZm9yIGRiYSwgYW5kIG9wdGlvbmFs IGNvbmZpZyBSRUFET05MWSBmb3IgbWFpbnRlbmFuY2UKLSogbmV3IHBhZ2VzOiBTcGVjaWFsUGFn ZXMsIExvY2tlZFBhZ2VzICh2YXJnZW5hdSkKLSogaW1wbGVtZW50ZWQgTWVkaWF3aWtpLWxpa2Ug c3ludGF4IGZvciB0YWJsZXMgKHZhcmdlbmF1KQotKiBlbmFibGUgflJlY2VudENoYW5nZXNDYWNo ZWQgYXMgYm94LCBpbXByb3ZlIHBlcmZvcm1hbmNlLgotKiBpbXBsZW1lbnRlZCBXaWtpY3Jlb2xl IDEuMCBzeW50YXgsIGluY2x1ZGluZyBhZGRpdGlvbnMgKHZhcmdlbmF1KQotKiBpbXBsZW1lbnRl ZCBzaW1wbGUgW1tIZWxwOlNwcmVhZHNoZWV0fHNwcmVhZHNoZWV0XV0gZnVuY3Rpb25zIGZvciBX aWtpY3Jlb2xlIHRhYmxlcyAodmFyZ2VuYXUpCi0qIG5ldyBwbHVnaW46IFtbSGVscDpDdXJyZW50 VGltZVBsdWdpbnxDdXJyZW50VGltZV1dICh2YXJnZW5hdSkKLSogbmV3IHBsdWdpbjogW1tIZWxw OkNoYXJ0UGx1Z2lufENoYXJ0XV0gKHZhcmdlbmF1KQotKiBuZXcgbXNzcWxuYXRpdmUgYmFja2Vu ZCAoTVMgU1FMIFNlcnZlciAyMDA1KykgKGNocmlzZHB1Y2NpKQotCi09PSAxLjMuMTQgSnVseSwg MSAyMDA3LCBSZWluaSBVcmJhbiA9PQotCi09PT0gRml4ZXMgPT09Ci0qIEZpeCB0aGUgYnJva2Vu IExEQVAgZml4IGZyb20gMS4zLjEzcDEKLSogZml4ZWQgc29ydGJ5IHdpdGggbXVsdGlwbGUgcGFn ZWxpc3RzCi0KLT09PSBDaGFuZ2VzID09PQotKiBjaGFuZ2VzIGFsbCB0aGVtZWluZm8ucGhwIGZp bGVzLCBtb3ZlZCBnbG9iYWwgdG8gbWV0aG9kIGxvYWQoKSB0byBiZQotICBlYXNpZXIgZGVyaXZl ZCBmcm9tIGN1c3RvbSB0aGVtZSBjbGFzc2VzLCBtYWluIG5vdyBjYWxscyAkfldpa2lUaGVtZS0+ bG9hZAotKiB+TWFpbE5vdGlmeSBpcyBub3cgc2lsZW50IHVubGVzcyBERUJVRwotCi09PT0gTmV3 ID09PQotKiBhZGRlZCBleHBlcmltZW50YWwgQVRPTSBzdXBwb3J0Ci0qIGFkZGVkIENoYW5nZXMg YW5kIFVwbG9hZCBidXR0b24gdG8gZWRpdAotCi09PSAxLjMuMTNwMSBKdW5lLCA5IDIwMDcsIFJl aW5pIFVyYmFuID09Ci0KLUFuIGltbWVkaWF0ZSBzZWN1cml0eSBmaXggZm9yIDEuMy4xMywgcGx1 cyBzb21lIG1pbm9yIGZpeGVzLgotCi09PT0gRml4ZXMgPT09Ci0qIExEQVAgQXV0aDogRGlzYWxs b3cgZW1wdHkgcGFzc3dvcmRzISBDZXJ0YWluIGxkYXAgaW1wbGVtZW50YXRpb25zIHJldHVybiB0 cnVlCi0gIG9uIGVtcHR5IHBhc3N3b3JkcyB3aXRoIGxkYXBfYmluZCgpLgotKiBMREFQIEF1dGg6 IGZpeCBwYXNzd29yZCBxdW90aW5nCi0qIGZpeCBhY3Rpb249dXBncmFkZSBmb3IgZGJhLCByZW5h bWUgbm9zcWwgdG8gbm9kYgotKiBmaXhlcyB+U3BhbUJsb2NrTGlzdCBjb25maWcgZmlsZSBsb2Nh dGlvbnMgKGNvbmZpZy90d28tbGV2ZWwtdGxkcywgY29uZmlnL3doaXRlbGlzdCkKLSogZW5hYmxl ICR+TWFpbE5vdGlmeS0+b25DaGFuZ2VQYWdlCi0qIGZpeCBkaXNwbGF5IG9mIHBhZ2VuYW1lcyBj b250YWluaW5nICI6IiBpbiBjZXJ0YWluIGxpc3RzCi0qIGZpeGVkIGJhY2tlbmQgYXNBcnJheSBh Y2Nlc3MgdG8gaXRlcmF0b3JzICh+RGVidWdJbmZvIHdpdGggU1FMKQotKiBmaXggd3JvbmcgflBo cFdpa2lDdnMgSW50ZXJXaWtpTWFwIGVudHJ5Ci0qIGZpeCBzeW50YXggZXJyb3IgaW4gcGdzcmMv SGVscCUyRkFjdGlvblBhZ2UKLSogZml4IGNhc2UgaW4gcGdzcmMvSGVscCUyRkFzY2lpU1ZHUGx1 Z2luCi0qIGZpeCBsaW5rcyBpbiBwZ3NyYy9IZWxwJTJGU2VtYW50aWNSZWxhdGlvbnMKLSogZml4 IHBnc3JjL0hlbHAlMkZXaWtpUGx1Z2luCi0KLT09PSBDaGFuZ2VzID09PQotKiBhbGxvdyBcbiBh bmQgc2luZ2xlIGxldHRlciBwYWdlcyBpbiB+e357IH59fn0gdGVtcGxhdGUgc3ludGF4LgotICBw YXRjaCAjMTczMjc5MyBieSB+QWxKZXV4IGFuZCB+UmVpbmlVcmJhbgotKiB3aXRoIEVOQUJMRV9T UEFNQkxPQ0tMSVNUIGNoZWNrIG9ubHkgbmV3IGV4dGVybmFsIGxpbmtzOgotICBtYXggNSwgYWxs b3cgaW50ZXJ3aWtpIGxpbmtzLCBhbmQgaW1wcm92ZSBmYWlsZWQgb3V0cHV0LgotCi09PSAxLjMu MTMgSnVuZSwgMiAyMDA3LCBSZWluaSBVcmJhbiA9PQotCi1UaGlzIGlzIG1ham9yIGZlYXR1cmUg cmVsZWFzZSB3aGljaCB3aWxsIGJlIHRoZSBiYXNlIGZvciB0aGUgc3RhYmxlCi0xLjQuMC4gIFRo ZSBoaWdobGlnaHRzIGFyZSB+U2VtYW50aWNXZWIgc3VwcG9ydCwgYmFzaWMgc3VwcG9ydCBmb3IK LXZhcmlvdXMgV1lTSVdZRyBlZGl0b3JzIChub3QgeWV0IHN0YWJsZSksIGEgc3RhYmxlIH5Nb25v Qm9vayAod2lraXBlZGlhKQotYW5kIEJsb2cgdGhlbWUsIGVuYWJsZWQgYWNkcm9wZG93biBzdXBw b3J0ICh+TGl2ZVNlYXJjaCksIHBvc3RncmVzcWwgYW5kCi1vcmFjbGUgZW5oYW5jZW1lbnRzLCBt b3ZpbmcgSGVscCBwYWdlcyBpbnRvIEhlbHAvLCBzdXBwb3J0IGRpZmZlcmVudAotY2hhcnNldHMg aW4gcGdzcmMgYW5kIFdpbmRvd3MgTlRMTSBhdXRoIHN1cHBvcnQgdmlhIH5IdHRwQXV0aCwgYSBs b3QKLW1vcmUgcGx1Z2lucyBhbmQgZW5oYW5jZW1lbnRzLiBVVEYtOCBzaG91bGQgd29yay4KLQot PT09IEZpeGVzID09PQotKiBmaXggflVwTG9hZCB0byBkaXNhbGxvdyBhbGwgcGhwIGV4dGVuc2lv bnMKLSogREI6IHVzZSBBTlNJIFNRTCBzdGF0ZW1lbnRzIChvcmFjbGUgYnkgQm9iIFBlZWxlICYg Q2hyaXN0b3BoZXIgSm9uZXMsCi0gIHBvc3RncmVzcWwgYnkgUmVpbmkgVXJiYW4pCi0qIGZpeGVk IGJsb2csIH5Nb25vQm9vaywgc2lkZWJhciBhbmQgd2lraWxlbnMgdGhlbWUgbGF5b3V0Ci0qIGZp eCBUZW1wbGF0ZSBhbmQgfkNyZWF0ZVBhZ2UgdmFyaWFibGUgZXhwYW5zaW9uCi0qIHhodG1sIGR1 bXAgZm9yIHN1YnBhZ2VzIGludG8gc3ViZGlyZWN0b3JpZXMsIGZpeGVkIGZpbGVuYW1lcyBhbmQg c3ViZGlyIG5hbWVzCi0qIGZpeGVkIGxvYWRpbmcgcGFnZXMgaW50byBmb3JlaWduIGNoYXJzZXRz IChzdWNoIGFzIHV0Zi04KQotKiB+RXJyb3JNYW5hZ2VyOiBwYXRjaCAjMTQzODQzOSBieSBNYXR0 IEJyb3duOgotICBPbmx5IHNldCBuby1jYWNoZSBoZWFkZXJzIHdoZW4gZXJyb3Igb3V0cHV0IGlz IGdlbmVyYXRlZAotKiB+SW1hZ2VMaW5rczogcGF0Y2ggIzEzNDg5OTYgYnkgUm9iZXJ0IExpdHdp bmllYwotKiBmaXggYnVnICMxMzI3OTEyIG51bWVyaWMgcGFnZW5hbWVzIGNhbiBicmVhayBwbHVn aW5zIChKb2FjaGltIExvdXMpCi0qIGltcHJvdmUgcGRmIG91dHB1dCB2aWEgZXh0ZXJuYWwgY29u dmVydGVyCi0qIGZvcmNlIGludGVnZXIgY29uc3RhbnRzIHRvIGJlIHNldCBhcyBpbnRlZ2VyCi0q IHBhcnRpYWxseSBmaXggQ1JDIG92ZXJmbG93IGluIHppcGxpYiAoQm9iIEFwdGhvcnBlKQotKiB0 ZXN0c3VpdGU6IGZvcmNlIEMgbG9jYWxlIGFuZCBFTiAkTEFORwotKiBmaXhlZCBkaXNwbGF5IG9m IGVkaXRlZCBJbnRlcldpa2lNYXAuIHN0YXRpYyB2YXIgaXNzdWUKLSogZml4ZWQgZGlzcGxheSBv ZiAiTWVyZ2UgYW5kIEVkaXQ6IHBhZ2VuYW1lIiBoZWFkZXIgaW4gbWVyZ2UgZWRpdCAoaGFjayEp Ci0qIH5XaWtpRm9ybVJpY2g6IGZpeCBuYW1lPXZhbHVlIHBhcnNpbmcuIGZpeCBsaW1pdCB3aXRo IHBsdWdpbi1saXN0IGludm9jYXRpb25zCi0qIHBsdWdpbi9EaWZmOiBmaXggbGliL2RpZmYgbG9h ZGluZyBjb25mbGljdHMgYnkgcmVtb3ZpbmcgZHVwbGljYXRlIGNsYXNzZXMKLSogcGx1Z2luL1Bs b3RpY3VzOiBzdXBwb3J0IFBMT1RJQ1VTX1BSRUZBQlMgY29uZmlnLmluaSBzZXR0aW5nIChkb2N1 bWVudGVkIGJ1dCBuZXZlciB3b3JrZWQpCi0qIGZpeCBlZGl0OmxvY2tlZCBsYWJlbCBzZWxlY3Rp b246IHR5cG8sIHdhcyBlZGl0OmxvY2sKLSogZml4ZWQgbW9hY2Ryb3Bkb3duIGludGVncmF0aW9u Ci0qIGZpeGVkIGZvcnR1bmUgZXJyb3IgaGFuZGxpbmcKLSogZml4ZWQgbGltaXQgaGFuZGxpbmcg d2l0aCBtdWx0aXBsZSBwYWdlbGlzdHM6IGRvbid0IG92ZXJ3cml0ZSByZXF1ZXN0IGFyZwotKiBj aGFuZ2UgUGFnZUR1bXAgQ29udGVudC1UeXBlIGhlYWRlciBmb3IgZG93bmxvYWQgdG8gYXBwbGlj YXRpb24vb2N0ZXQtc3RyZWFtIHRvIGF2b2lkCi0gIHBlc3R5IC50eHQgc3VmZml4ZXMgb24gV2lu ZG93cyBjbGllbnRzCi0qIGZpeGVkIHdpa2lsZW5zIHdpdGggZGJhIGFuZCBSQVRJTkdfU1RPUkFH RT1TUUwuIFJBVElOR19TVE9SQUdFPVdJS0lQQUdFIG5vdCB5ZXQgZml4ZWQuCi0qIGZpeGVkIGFj dGlvbj1kaWZmIGVycm9yIHdpdGggZXh0ZXJuYWwgbGlua3MKLQotPT09IENoYW5nZXMgPT09Ci0q IGFkZCB+VXBMb2FkIHBvbGljeSBESVNBQkxFX1VQTE9BRF9PTkxZX0FMTE9XRURfRVhURU5TSU9O UywgZGVmYXVsdDogZmFsc2UKLSogflNlbWFudGljV2ViOiBhZGQgbGlua3JlbGF0aW9uIHN1cHBv cnQsIGdldFBhZ2VMaW5rcyByZXR1cm5zIG5vdyBhbiBhcnJheSBvZiBoYXNoZXMuCi0gIG9wdGlt aXplIGdldF9saW5rcyBmb3IgcmVsYXRpb25zLgotKiBhZGQgbmV3IGxpbmtzeW50YXggIn5bOnBh Z2VuYW1lfl0iIGluc2lkZSBzcXVhcmUgYnJhY2tldHMgb25seSwgbm90IHRvIHN0b3JlIGJhY2ts aW5rcy4KLSAgfls6fkRvbnRTdG9yZUxpbmt+XSAoZXhwZXJpbWVudGFsKQotKiBtb3ZlZCBkZWZh dWx0IGhlbHAgcGFnZXMgdG8gSGVscC8gc3VicGFnZXMuIFBhcnRpYWxseSBmb3IgImRlIiBhbHNv LgotKiBnZW5lcmFsaXplZCBFTkFCTEVfSFRNTEFSRUEzIHRvIEVOQUJMRV9XWVNJV1lHCi0qIHN1 cHBvcnQgbW9yZSB+V2lraUZvcm1SaWNoIG1ldGhvZCBhcmd1bWVudHM6IHVybCwgZHludXJsLCB4 bWxycGMsIGR5bnhtbHJwYywgcGx1Z2luLAotICB0aGUgYXV0b2NvbXBsZXRlIG9wdGlvbiBmb3Ig cHVsbGRvd25+W35dIGFuZCBlZGl0Ym94flt+XSBhbmQgdGhlIG5ldyBjb21ib2JveH5bfl0gd2lk Z2V0LgotICBJbXByb3ZlIH5XaWtpRm9ybVJpY2ggbGF5b3V0LgotKiBEQjogZm9yZWlnbiBrZXkg c3VwcG9ydCBpbiBzY2hlbWFzLCBzaW1wbGlmeSBtZXRob2RzCi0qIHJlbW92ZSB1c2VyIHRhYmxl OiB1cGdyYWRlIGZyb20gU1FMIGRiLgotKiB1cGRhdGVkIGxvY2FsZSBmb3IgaXQsIGRlIGFuZCBl cyAoZ29vZ2xlIHRyYW5zbGF0aW9uKQotKiBpbXByb3ZlIGxvYWRpbmcgbXVsdGlwbGUgdmVyc2lv biBhcmNoaXZlcyBzdWNoIGFzIGZ1bGwgemlwZHVtcHMuIGZvcmNlIHRlbXAuIG92ZXJ3cml0ZS4K LSAgc3VwcG9ydCBsb2FkZmlsZSBmb3IgbXVsdGlwYXJ0IGFyY2hpdmVzIChmdWxsIGR1bXBzKSBh dXRvbWF0aWNhbGx5Ci0qIG9taXQgYWN0aW9uYmFyIGZyb20gcGRmIG91dHB1dAotKiBzdXBwb3J0 IGNoYXJzZXRzIGluIHBhZ2VkdW1wcyBmb3IgbG9hZGZpbGUgYW5kIHZpcmdpbiBzZXR1cAotKiBf fkJhY2tlbmRJbmZvUGx1Z2luIHByaW50cyBsaW5raW5mbyBhbHNvLgotKiB+RXh0ZXJuYWxTZWFy Y2hQbHVnaW4gZGlzcGxheXMgdGhlIGJ1dHRvbiBhdCB0aGUgcmlnaHQuIENoYW5nZSBpdCB3aXRo Ci0gIEVYVEVSTkFMU0VBUkNIX0RFRkFVTFRfQlVUVE9OX1BPU0lUSU9OID0gbGVmdCwgb3IgdGhl IGFyZ3VtZW50IGJ1dHRvbl9wb3NpdGlvbj1sZWZ0IG9yIG5vbmUuCi0qIGRpc2FibGVkIHBvc3Rn cmVzcWwgb3B0aW1pemUoKSBpbiBmYXZvciBvZiBhdXRvdmFjdXVtLAotICBlbmFibGUgaXQgaW4g dGhlIGJhY2tlbmQgbWV0aG9kIGlmIHRoZSB3ZWIgdXNlciBpcyB0aGUgdGFibGUgb3duZXIgKHNl Y3VyaXR5IHJpc2spCi0qIHByaW50ICJJZ25vcmVkIHN0b3BsaXN0IHdvcmRzIiBvbiBGdWxsVGV4 dFNlYXJjaCwKLSAgYWRkIEZVTExURVhUU0VBUkNIX1NUT1BMSVNUIGNvbnN0YW50LAotICBtYWtl IH5UZXh0U2VhcmNoUXVlcnktPl9zdG9wbGlzdCBsb2NhbGl6YWJsZQotKiBmaXggYXJnIG9yZGVy IGluIFdpa2lEQl9iYWNrZW5kX3NlYXJjaCgpCi0qIHByb3RlY3RlZCB0ZXN0cy4gb25seSBhbGxv dyBsb2NhbGhvc3QKLSogb3B0aW1pemUgfkFyY2hpdmVDbGVhbmVyIGZvciB0aGUgbmV3IGRlZmF1 bHQgY2FzZSAoc2luY2UgMS4zLjExKTogS2VlcCBhbGwgcmV2aXNpb25zLgotKiBjaGFuZ2VkIHRo ZSBkZWZhdWx0IERCIGJhY2tlbmQgZnJvbSBnZGJtIHRvIGRiYSBkYjQKLSogY2hhbmdlZCBhY3Rp b249dXBncmFkZSB0byBjaGVjayBhbmQgc3RvcmUgYSBkYiB2ZXJzaW9uCi0qIGRvbid0IGxvYWRm aWxlICoub3JpZyBmaWxlcyAodGhpcyBtaWdodCBiZSBhIGxpbWl0YXRpb24uIHNvcnJ5KQotKiBy ZW5hbWUgX35BdXRoRmlsZSB0byB+RGVidWdBdXRoRmlsZSBpbiB1cGdyYWRlCi0qIHVwZGF0ZWQg bW9zdCB0ZW1wbGF0ZSBmaWxlcyBmb3IgaGFybW9uaXNhdGlvbgotKiBjaGFuZ2VkIGRlZmF1bHQg fkxpdmVTZWFyY2ggbWV0aG9kIGluIHNlYXJjaC50bXBsIGZyb20gdXJsIHRvIHhtbHJwYy4gZmFz dGVyIGFuZCBsZXNzIGhhY2tpc2guCi0qIGZpeGVkIGFsbCB0ZW1wbGF0ZXMgd2l0aCBtaXNzaW5n IHJldmlzaW9uIGNoZWNrLiBjYW4gYmUgZmFsc2UuCi0qIHJld3JvdGUgYW5kIHJlZGVmaW5lZCB7 e3tXaWtpREI6Omxpc3RSZWxhdGlvbnN9fX0uIGxpc3Qgb25seSBhbGwgcmVsYXRpb25zIGFzIGFy cmF5LgotKiBjaGFuZ2VkIFNlbWFudGljIGF0dHJpYnV0ZSBzeW50YXggZnJvbSAiOi0iIHRvICI6 PSIgKHJlbGV2YW50IHRvIGN2cyB1c2VycyBvbmx5KQotKiBjaGFuZ2UgflRleHRTZWFyY2hRdWVy eSBoYW5kbGluZyBvZiByZWdleD1wY3JlOiBwbGFpbiBzdHJpbmcsIG5vIHBhcnNpbmcgYXQgYWxs LAotICBkZXRlY3QgYW5kIGFwcGx5IG1vZGlmaWVycy4KLSogZW5oYW5jZSB0ZXh0MnBuZyBhcmd1 bWVudHMgYW5kIGZlYXR1cmVzLiBTZWUgW1tIZWxwOnRleHQycG5nUGx1Z2luXV0KLSogVGVtcGxh dGUgcGx1Z2luOiBhbGxvdyBwYXNzaW5nIGFyYml0cmFyeSBhcmdzLCBub3QganVzdCBpbiB2YXJz LgotKiBhZGRlZCBvbGQgZ2Qgc3VwcG9ydCB0byB+UGhvdG9BbGJ1bSB0aHVtYnMgKH5JbWFnZVRp bGUpCi0qIEltcHJvdmUgfkxkYXBTZWFyY2ggcGx1Z2luIGFuZCBhZGQgYWN0aW9uIHBhZ2UuCi0q IEltcHJvdmVkIHdpa2lsZW5zIHRoZW1lLgotKiBDaGFuZ2VkIGFsbCBkZWZhdWx0IFRlbXBsYXRl IHZhcnMgdG8gZXhwYW5kZWQgdG8gdXBwZXJjYXNlOiBQQUdFTkFNRSwgVVNFUklELCAuLi4KLSog Q1NTOiBubyB+TW9ub0Jvb2sgY3NzIGhhY2tzL3JlcXVlc3RzLCBjaGVjayBzcGVjaWFsIGJyb3dz ZXIgdmVyc2lvbnMgaW4gcGhwCi0KLT09PSBOZXcgPT09Ci0qIGFkZCB+U2VtYW50aWNSZWxhdGlv bnMgc3ludGF4LCBkYiBzdHJ1Y3R1cmUgYW5kIGF0dHJpYnV0ZSB1bml0cy4KLSAgU2FtcGxlOiBw YWdlbmFtZT1+U2FuRGllZ28gaXNfYSA6OiBjaXR5ID0+IH5TYW5EaWVnbyByZWxhdGlvbiA9IGlz X2EsIGxpbmt0byA9IGNpdHkKLSAgICAgICAgICBwb3B1bGF0aW9uIDo9IDEsMzA1LDczNiAobnVt ZXJpYyB1bml0cykKLSAgU3RvcmUgdW5pZmllZCBhdHRyaWJ1dGUgaW4gcGFnZWRhdGEuCi0qIG5l dyBleHBlcmltZW50YWwgV1lTSVdZRyBlZGl0IGxpYnJhcnkgZnJhbWV3b3JrOgotICB+V2lraVd5 ZywgdGlueW1jZSwgRkNLZWRpdG9yLCBodG1sYXJlYTMsIGh0bWxhcmVhMiwgc3BhdwotKiBuZXcg d3lzaXd5Z19lZGl0b3IgZmVhdHVyZSBieSBKZWFuLU5pY29sYXMgR0VSRU9ORSBhbmQgU2Ficmkg TEFCQkVORSAoZXhwZXJpbWVudGFsKQotKiBhZGRlZCBwb3N0Z3Jlc3FsIHRzZWFyY2gyIHN1cHBv cnQKLSogbmV3IGV4cGVyaW1lbnRhbCBmbGF0ZmlsZSBiYWNrZW5kOiByZWFkYWJsZSBwYWdlIHNv dXJjZSBmaWxlcyAoZXhwZXJpbWVudGFsKQotKiBhZGRlZCBuZXcgeG1scnBjIGFuZCBTT0FQIG1l dGhvZHM6IH5saXN0UGx1Z2lucywgfmdldFBsdWdpblN5bm9wc2lzLCB+bWFpbFBhc3N3b3JkVG9V c2VyLAotICB+Z2V0VXBsb2FkZWRGaWxlSW5mbywgfmxpc3RSZWxhdGlvbnMsIH5jYWxsUGx1Z2lu LCB+bGlua1NlYXJjaAotKiBuZXcgcGx1Z2luczogflNlbWFudGljU2VhcmNoLCB+U2VtYW50aWNS ZWxhdGlvbnMsIH5MaW5rU2VhcmNoLCB+TGlzdFJlbGF0aW9ucywKLSAgfkZpbGVJbmZvLCB+Qm94 UmlnaHQsIH5QYXNzd29yZFJlc2V0LCB+V2F0Y2hQYWdlLCB+U3BlbGxDaGVjaywgflNlYXJjaEhp Z2hsaWdodCwKLSAgQXNjaWlTVkcKLSogYWRkIDxub3dpa2k+PC9ub3dpa2k+IHRhZzogVHJhbnNm b3JtIG9ubHkgaHRtbCBtYXJrdXAgYW5kIGVudGl0aWVzCi0qIG5ldyBvcHRpb24gRElTQUJMRV9N QVJLVVBfV0lLSVdPUkQgdG8gZm9yY2UgWyBdIGZvciBsaW5rcwotKiBuZXcgb3B0aW9uIEVOQUJM RV9NQVJLVVBfRElWU1BBTiAoZXhwZXJpbWVudGFsKQotKiBuZXcgb3B0aW9uIFBMVUdJTl9NQVJL VVBfTUFQIGZvciB4bWwtc3R5bGUgcGx1Z2luIHN5bnRheCAoZXhwZXJpbWVudGFsKQotKiBzdXBw b3J0IFdpbmRvd3MgTlRMTSBBdXRoIHZpYSB+SHR0cEF1dGg6IG1vZF9udGxtIChhcGFjaGUxKzIu IGFsc28gb24gbGludXgpCi0gIGFuZCBtb2RfYXV0aF9zc3BpIChhcGFjaGUyLiBiZXR0ZXIsIGJ1 dCB3aW5kb3dzIG9ubHkpCi0qIG5ldyBzdGFibGUgb3B0aW9uIEVOQUJMRV9TRUFSQ0hISUdITElH SFQgd2l0aCBhY3Rpb25wYWdlIGFuZCBwbHVnaW4gU2VhcmNoSGlnaGxpZ2h0LgotICBJbiBDVlMg Zm9yIHNvbWUgdGltZSBjYWxsZWQgVVNFX1NFQVJDSEhJR0hMSUdIVC4KLSogcGF0Y2ggIzEzNzcw MTEgYnkgTWF0dCBCcm93bjogYWRkIERBVEFCQVNFX09QVElNSVNFX0ZSRVFVRU5DWQotKiBuZXcg b3B0aW9ucyBkYi1jaGVjayBhbmQgZGItcmVidWlsZCBmb3Igfldpa2lBZG1pblBsdWdpbi4KLSAg WW91IGNhbiBub3cgcmV0cmFuc2Zvcm0gYWxsIHBhZ2VzIGF0IG9uY2UuCi0qIG5ldyB+TWFpbE5v dGlmeSBjbGFzcywgc2ltcGxpZmllZCBXaWtpREIucGhwCi0qIGFkZGVkICJQcmludGFibGUgdmVy c2lvbiIganMgdG8gbW9ub2Jvb2sgdGhlbWUuIFNlZSBMaWNlbnNlIGluCi0gIGh0dHA6Ly93d3cu aG93dG9jcmVhdGUuY28udWsvanNsaWJzL3Rlcm1zT2ZVc2UuaHRtbAotKiBuZXcgfkFjdGlvbkJ1 dHRvbiBmdW5jdGlvbiBmb3Igfk1vbm9Cb29rIHdpdGggc2VsZWN0ZWQgc3RhdGUuICh0YWIgc3Rh dGUpCi0qIGFkZGVkIH5TeW5jV2lraSBwbHVnaW4gdG8gc3luYyBwYWdlcyBhbmQgdXBsb2FkcyB3 aXRoIGEgbWFzdGVyIHdpa2kuCi0gIChmb3JlaWduIGF1dGggbm90IHlldCBzb2x2ZWQpCi0qIGFk ZGVkIGJvb2xlYW4gVVBMT0FEX1VTRVJESVIgdG8gdXBsb2FkIGludG8gdXNlci1zcGVjaWZpYyBk aXJlY3RvcnkuCi0qIGFkZGVkIHN1cHBvcnQgZm9yIG11bHRpcGxlIHBhZ2UgYXJndW1lbnRzIGlu IEJhY2tMaW5rcy4gTG9naWNhbCBBTkQuCi0qIGFkZGVkIHdpa2lkYi0+YmFja2VuZC0+cmVidWls ZCgpCi0qIGFkZGVkICJLZWVwIG9sZCIgYW5kICJPdmVyd3JpdGUgd2l0aCBuZXciIGJ1dHRvbnMg YW5kIGFjdGlvbnMgZm9yIGxvYWRmaWxlIG1lcmdlIGVkaXQuCi0qIGFkZGVkIGxpYi9+WG1sUnBj Q2xpZW50LCB4bWxycGMgbWV0aG9kcyB0byBsaWIvfkh0dHBDbGllbnQgYW5kIGFjZHJvcGRvd24u anMuIEpTT04gbm90IHlldC4KLSogY3JlYXRlZCBIZWxwL34qUGx1Z2luIHN0dWJzIGZvciAqQUxM KiBwbHVnaW5zIGluIHBnc3JjCi0qIGFkZGVkIGEgbmV3IF9ERUJVR19SRU1PVEUgZmxhZyB0byBk ZWJ1ZyBpbnRvIHJlbW90ZSBzZXNzaW9ucyAoeG1scnBjLCBhamF4LCAuLi4pCi0qIGFkZGVkIHt7 e1dpa2lEQjo6bGlua1NlYXJjaH19fSBhbmQgYmFja2VuZC9kdW1iL35MaW5rU2VhcmNoSXRlci5w aHAuIE1haW5seSBmb3IgflNlbWFudGljU2VhcmNoLAotICBhbmQgTGlua1NlYXJjaCwgYnV0IGNh biBiZSB1c2VkIGZvciB+U2VtYW50aWNTZWFyY2hBZHZhbmNlZCAoY29tYmluZWQgcXVlcmllcyBh cyA8YXNrPikgYW5kCi0gIEJhY2tMaW5rcyBldCBhbCBhbHNvLgotKiBhZGRlZCBDYWxlbmRhciBk aXNwbGF5X3dlZWtudW0gYXJndW1lbnQKLSogYWRkZWQgbmV3IH5Bc2NpaVNWRyBwbHVnaW4KLSog YWRkZWQgbmV3IH5Zb3VUdWJlIHBsdWdpbgotKiBhZGRlZCB+WG1sUnBjVGVzdCB0ZXN0cwotKiBB ZGRlZCBub3BhZ2UgYXJndW1lbnQgdG8gflBhZ2VMaXN0IGFuZCBhbGwgaXRzIHBsdWdpbnMuIFVu aXF1ZSByb3dzIG9ubHkgbm90IHlldC4KLSogQWRkZWQgYXV0aG9yLCBvd25lciBhcmd1bWVudCB0 byBSZWNlbnRDaGFuZ2VzIGFuZCBhZGRlZCBhY3Rpb24gcGFnZXM6Ci0gIE15UmVjZW50Q2hhbmdl cywgTXlSZWNlbnRFZGl0cywgVXNlckNvbnRyaWJzCi0qIGFkZGVkIFJlY2VudENoYW5nZXMgZm9y bWF0PWNvbnRyaWJzIGZvciB+TW9ub0Jvb2sgdGhlbWU6ID0+IFVzZXJDb250cmlicwotKiBhZGRl ZCB+TW9ub0Jvb2sgYWNjZXNza2V5cwotCi09PSAxLjMuMTJwMyBKdW4sIDE4IDIwMDYsIFJlaW5p IFVyYmFuID09Ci0KLSogZml4IH5bL1N1YnBhZ2V+XSBsaW5rcwotKiBmaXggcHJlZiBzdG9yaW5n IG9mIGFscmVhZHkgY3J5cHRlZCBwYXNzd29yZHMuIGJ1ZyAjMTMyNzQ3MCAoVG9tIEhhcmRpbmcp Ci0qIGZpeCBjYWNoZSBoZWFkZXJzIG9uIGVycm9ycyAoQG9iX2VuZF9mbHVzaCBpc3N1ZSkuICht YXR0IGJyb3duKQotKiBmaXggfkJvZ29Mb2dpbiB3aGVuIEVOQUJMRV9QQUdFUEVSTT1mYWxzZS4g cGF0Y2ggIzE0MzgzOTIgYnkgTWF0dCBCcm93bgotKiB1bmlxdWUgV0lLSV9JRCBjb29raWVzIHBl ciBXSUtJX05BTUUuIHBhdGNoICMxMzMzOTU3IGJ5IE1hdHQgQnJvd24KLSogYWRkZWQgREFUQUJB U0VfT1BUSU1JU0VfRlJFUVVFTkNZIGZlYXR1cmUuIHBhdGNoICMxMzc3MDExIGJ5IE1hdHQgQnJv d24KLSogZG9uJ3QgY2hlY2sgbG9ja190YWJsZSBwcml2IG9uIGFjdGlvbj11cGdyYWRlCi0qIGZp eCBfYWNjZXNzbG9nLT5sb2d0YWJsZSBhbmQgX2lzX2J1ZmZlcmluZ19vdXRwdXQgd2FybmluZ3Mg KHVja2VsbWFuKQotKiBkbyBub3QgcHJpbnQgd3JvbmcgbGVuZ3RoIGhlYWRlciBvbiB1cmwtcmV3 cml0aW5nLiBidWcgIzEzNzYwMDcKLSogZml4IHByZWYtPnNldDogRXJyb3IgZ2VuZXJhdGVkIHdo ZW4gbG9naW4gb3V0LiBidWcgIzEzNTU1MzMgKFRoaWVycnkgTmFiZXRoKQotKiBmaXggZGVmYXVs dCBwcmVmZXJlbmNlcyBmb3IgZWRpdGhlaWdodCBtYXhyb3dzLCBieSBNYW51ZWwgVmFjZWxldC4K LSogZml4IERCQVVUSCBhcmd1bWVudHMgdG8gYmUgcG9zaXRpb24gaW5kZXBlbmRlbnQsIGJ1ZyAj MTM1ODk3MwotKiBhZGQgflBkb0RiUGFzc1VzZXIgdXNlcgotKiBmaXggb3V0cHV0IG9mIEhvbWVw YWdlIHByZWZzIHVwZGF0ZQotKiB1cGRhdGUgY29uZmlnLWRpc3QuaW5pIGZvcm1hdCBmcm9tIENW UwotKiB1cGRhdGUgY29uZmlndXJhdG9yLnBocCBmcm9tIENWUwotKiBwcmludCBvcHRpbWl6ZSB3 aWtpZGIgb25seSB3aGVuIERFQlVHCi0qIHNpbXBsaWZ5IG1lc3NhZ2VzIGZvciB0cmFuc2xhdG9y cwotKiBhZGRlZCB+SW1hZ2VUaWxlLnBocAotKiBhZGRlZCB0c2VhcmNoMiB0byBkb2MvSU5TVEFM TC5wZ3NxbAotKiBhZGRlZCBiYXNlcGFnZSB0byB7e3tDYWNoZWRfV2lraUxpbms6OmFzWE1MfX19 IGZvciBzdWJwYWdlcyB3aXRoaW4gfkNyZWF0ZVRPQwotKiBwcmludCBmaWxlbmFtZSBvbiBkYmEg YWNjZXNzIGVycm9yCi0qIHVzZSBiaW5kX3RleHRkb21haW5fY29kZXNldC4gYnVnICMxNDgwMDc3 IChLYWkgS3Jha293KQotKiBtYWtlIH5UZXh0U2VhcmNoUXVlcnktPl9zdG9wbGlzdCBsb2NhbGl6 YWJsZSBhbmQgb3ZlcnJpZGFibGUgd2l0aGluIGNvbmZpZy5pbmkKLSogZml4ZXMgZm9yIG15c3Fs IDUueCB3YW50ZWRwYWdlcyBqb2luCi0qIGFkZCByZWw9bm9mb2xsb3cgdG8gbW9yZSBhY3Rpb25z LiBwYXRjaCBieSBNYXR0IEJyb3duCi0qIGFkZCB2ZXJpZnkgdG8gflJldmVydFBhZ2UsIGRpc3Bs YXkgcmV2ZXJ0ZWQgcGFnZSBhcyB0ZW1wbGF0ZQotKiB1cGRhdGUgcGx1Z2luL35DYWxlbmRhckxp c3Q6IHBhdGNoZXMgYnkgbXB1bGxlbiBhbmQgYmFuam8KLSogdXBkYXRlIHBsdWdpbi9+R3JhcGhW aXoKLSogYWRkZWQgcGx1Z2luL35QYXNzd29yZFJlc2V0Ci0qIGZpeGVkIGhhc2goKSBpbiBwbHVn aW4vflJhdGVJdAotKiBwbHVnaW4vX35BdXRoSW5mbzogcHJvdGVjdCBGaWxlIHBhc3N3b3Jkcwot KiBhZGRlZCBDYXB0Y2hhIHRvIENyYW8gZWRpdCB0ZW1wbGF0ZQotKiBhZGRlZCBNYWNPU1ggUGRm IGJ1dHRvbgotKiBmaXhlZCBQb3J0bGFuZCBhbmQgV29yZHByZXNzIGVkaXRwYWdlIHRlbXBsYXRl Ci0qIHJlbW92ZWQgV29yZHByZXNzIGJ1dHRvbnMsIHRyYW5zcGFyZW50IGRlZmF1bHQgYnV0dG9u cyBzaG91bGQgYmUgdXNlZC4KLSogZGlzYWJsZWQgUmVsYXRlZENoYW5nZXMgYnV0dG9uCi0KLT09 IDEuMy4xMnAyIE1hciwgNyAyMDA2LCBSZWluaSBVcmJhbiA9PQotCi0qIGZpeCBjaGFuZ2UgcHJl ZnMgZm9yIEZpbGUgfldpa2lVc2VyCi0qIGZpeCB+SG9tZXBhZ2VQcmVmcyB1cGRhdGUgbWVzc2Fn ZQotKiByZW1vdmUgcGx1Z2luL0ltZGIKLSogYXBwbHkgflBsdWdpblRvb2xiYXJCdXR0b24gZml4 IGZyb20gY3ZzCi0KLT09IDEuMy4xMnAxIE1hciwgNCAyMDA2LCBSZWluaSBVcmJhbiA9PQotCi0q IGZpeCAiQ2FsbC10aW1lIHBhc3MtYnktcmVmZXJlbmNlIiBpbiB+Q3JlYXRlQmliCi0qIGZpeCBw YXJzZSBlcnJvciBpbiB+U2l0ZU1hcC5waHAKLQotPT0gMS4zLjEyIE1hciwgNCAyMDA2LCBSZWlu aSBVcmJhbiA9PQotCi1SZW5hbWUgZnVuY3Rpb24gaGFzaCgpIGFuZCBtZXRob2QgZmluYWwoKSBm b3IgcGhwLTUuMSBjb21wYXRpYmlsaXR5LgotQWRkIHZhcmlvdXMgYmFja3BvcnRzIGZyb20gY3Zz OgotCi09PT0gRml4ZXMgPT09Ci0qIGZpeCB+WmlwUmVhZGVyCi0qIEZpeCAiQ2FsbC10aW1lIHBh c3MtYnktcmVmZXJlbmNlIGhhcyBiZWVuIGRlcHJlY2F0ZWQiIGVycm9ycywKLSAgYWxsb3dfY2Fs bF90aW1lX3Bhc3NfcmVmZXJlbmNlID0gT2ZmCi0qIGZpeCBicm9rZW4gbG9jYWxlIHVwZGF0ZSBm b3IgcGhwLTUuMS4xCi0qIGRlZmF1bHQgbG9jYWxlIGZpeCBieSBUaG9tYXMgSGFyZGluZwotKiBm aXggQnVnICMxMzgxNDY0ICJEdXBsaWNhdGUgZnVuY3Rpb25zIiB3aXRoIHBocC01LjEuMQotKiBJ bnRlcldpa2lNYXA6IGFsbG93IHNwYWNlcyBpbiBwYXRocywgZXZlbiBpbXBsaWNpdGx5LiBmaXhl cyBidWcgIzEyMTg3MzMKLSogZml4ICdWT0lEJyBpbiB+VGV4dFNlYXJjaFF1ZXJ5Ci0qIHJlbW92 ZSBMSU1JVCAxIGluIEFET0RCCi0qIGZpeCBTUUwgV2FudGVkUGFnZXMKLSogZml4ZWQgZnVsbHRl eHQgc2VhcmNoIGFuZCBzdG9wbGlzdCBoYW5kbGluZwotKiBmaXggYnVnICMxMzI3OTEyIG51bWVy aWMgcGFnZW5hbWVzIGNhbiBicmVhayBwbHVnaW5zIChKb2FjaGltIExvdXMpCi0qIGZpeCB4bWxy cGMgYW5kIHRlc3RzL3VuaXQgZm9yICFyZWdpc3Rlcl9sb25nX2FycmF5cwotKiBlbnN1cmUgYWJz b2x1dGUgdXBsb2FkcyBwYXRoCi0qIGZpeCB+R29vZ2xlTWFwcyBzeW50YXggZXJyb3IKLSogZml4 IH5MaXN0UGFnZXMgZm9yIG5vbi1TUUwgYmFja2VuZHMuIEFkZCB0b3AzcmVjcyBhcyBkZWZhdWx0 IG9ubHkgaWYKLSAgcmF0aW5ncyBhcmUgYXZhaWxhYmxlCi0qIHBsdWdpbi9+UGFnZVRyYWlsIGlt cHJvdmVkIGVtcHR5IGNvb2tpZQotKiBwbHVnaW4vX35XaWtpVHJhbnNsYXRpb246IHByb3RlY3Qg YWdhaW5zdCAyeCBkZWZpbmUKLSogcmVtb3ZlIG15c3FsIHNwZWNpZmljIElTTlVMTCgpCi0qIGZp eCBzaWdub3V0IHByZWYgZXJyb3IKLSogZG9uJ3QgbG9nIG9uIEFDQ0VTU19MT0dfU1FMIDwgMgot Ci09PT0gQ2hhbmdlcyA9PT0KLSogY2FjaGUgfkVkaXRUb29sYmFyIHBvcHVwIGNvbnRlbnQKLSog YmVhdXRpZnkgU0NSSVBUIGxpbmVzCi0qIGFkZGVkIGNmZy1hYmxlIG1hcmt1cHMgb25seSBmb3Ig ZGVmYXVsdCB+VGV4dFRyYW5zZm9ybWF0aW9uLCBub3QKLSAgZm9yIGxpbmtzIGFuZCBvdGhlcnMK LSogYWRkIGEgcHJvcGVyIENvbnRlbnQtRW5jb2Rpbmc6IGd6aXAgaWYgY29tcHJlc3NlZCwgYW5k IG9taXQgQ29udGVudC1MZW5ndGggdGhlbi4KLSAgVHJpY2sgdG8gc2VuZCB0aGUgY29ycmVjdCBn emlwcGVkIENvbnRlbnQtTGVuZ3RoCi0qIHNldCBkc24gYWZ0ZXIgU1FML0FET0RCIHN3aXRjaGVz IGluIFdpa2lEQiBiYWNrZW5kcyBmb3IgZWFzaWVyIHVuaXQgdGVzdGluZwotKiBlLW1haWwgbm90 aWZpY2F0aW9uczogYmV0dGVyIEZyb206IGhlYWRlcgotKiBhZGQgREJBVVRIX1BSRUZfSU5TRVJU OiBzZWxmLWNyZWF0aW5nIHVzZXJzLiBieSBKb2huIFN0ZXZlbnMKLSogaW1wcm92ZWQgfldpa2lV c2VyL0xkYXAgZXJyb3IgZGVzY3JpcHRpb24KLSogY2FjaGUgU3lzdGVtSW5mbyBtZXRob2RzCi0q IH5WaXN1YWxXaWtpOiByZW1vdmUgSU5DTFVERUQgZnJvbSBFWENMVURFRCwgaW5jbHVkZXMgb3Zl cnJpZGUgZXhjbHVkZXMuCi0qIGltcHJvdmUgcG9zdGdyZXNxbCBzY2hlbWFzICh0c2VhcmNoMiBh bmQgc3RvcmVkIHByb2NlZHVyZXMgbm90IHlldCkKLQotPT09IE5ldyA9PT0KLSogYWRkZWQgTlVN X1NQQU1fTElOS1MgYXMgY29uZmlnLmluaSBvcHRpb24KLSogbmV3IEVOQUJMRV9TUEFNQkxPQ0tM SVNULCBsaWIvflNwYW1CbG9ja2xpc3QucGhwOgotICBjaGVjayBleHRlcm5hbCBsaW5rcyBhZ2Fp bnN0IHN1cmJsLm9yZyBhbmQgYmwuc3BhbWNvcC5uZXQKLSogYWRkZWQgQ2FwdGNoYSBjbGFzcyBh bmQgYmV0dGVyIHNwaXJhbAotKiBhZGRlZCBnZXRfY2FwdGNoYV9yYW5kb21fd29yZCgpIGNvbnRy aWJ1dGVkIGJ5IERhbiBGcmFua293c2tpCi0qIGR1bXBodG1sIHdoZW4gbm90IGF0IGFkbWluIHBh Z2U6IGR1bXAgdGhlIGN1cnJlbnQgb3IgZ2l2ZW4gcGFnZQotKiBhZGRlZCBwbHVnaW4gfkZpbGVJ bmZvCi0qIG1ham9yIH5QaG90b0FsYnVtIGZlYXR1cmUgZW5oYW5jZW1lbnRzIGJ5IFRob21hcyBI YXJkaW5nOgotICBzbGlkZXMgbW9kZSwgcmVhbCB0aHVtYm5haWxzCi0qIGFkZCBtb3JlIGJhY2tl bmRzIHRvIHRoZSB0ZXN0c3VpdGUgKFBlYXJEQl9wZ3NxbCwgLi4uKQotCi09PSAxLjMuMTFwMSBT ZXAsIDE4IDIwMDUsIFJlaW5pIFVyYmFuID09Ci0KLT09PSBGaXhlcyA9PT0KLSogYWRkZWQgbWlz c2luZyBwZ3NyYy9+T2xkU3R5bGVUYWJsZXNQbHVnaW4KLSogZml4ZWQgfk9sZFN0eWxlVGFibGVz IHBsdWdpbiB3aXRoIGFyZ3MKLSogcHJvdGVjdCBhZ2FpbnN0IENvbnRlbnQtTGVuZ3RoIGlmIGhl YWRlcnNfc2VudCgpCi0qIGZpeGVkIEVOQUJMRV9NQVJLVVBfVEVNUExBVEUgd2FybmluZyBpZiB1 bmRlZmluZWQKLSogZml4ZWQgd3JpdGluZyB1bndhbnRlZCBhY2Nlc3Nsb2cgc3FsIGVudHJpZXMK LSogZml4ZWQgV2lraUFkbWluU2VsZWN0IHByZXNlbGVjdGlvbgotKiBmaXhlZCBwYXNzZW5jcnlw dC5waHAgZm9yIFBIUDUgIXJlZ2lzdGVyX2xvbmdfYXJyYXlzCi0qIGZpeGVkIGNvbmZpZ3VyYXRv ciBmb3IgREFUQUJBU0VfRFNOLCBVU0VSX0FVVEhfT1JERVIKLQotPT09IENoYW5nZXMgPT09Ci0q IG9wdGltaXplZCBleHBsb2RlUGFnZUxpc3QgdG8gdXNlIFNRTCB3aGVuIGF2YWlsYWJsZQotICAo dGl0bGVTZWFyY2ggaW5zdGVhZCBvZiBnZXRBbGxQYWdlcykKLSogYWRkZWQgb3B0aW1pemF0aW9u IGZvciBhIG5ldyBBTEwgdGV4dHNlYXJjaCB0b2tlbgotICAoKiA9PiBwY3JlOiAuKiwgc3FsOiAl KQotKiBjb25maWd1cmF0b3IgdGFrZXMgZGVmYXVsdCBkZXNjcmlwdGlvbiBmcm9tIGNvbmZpZy1k aXN0LmluaQotKiBhZGRlZCBzb21lIG1pc3NpbmcgY29uZmlndXJhdG9yIGNvbnN0YW50cwotCi09 PSAxLjMuMTEgU2VwLCAxMSAyMDA1LCBSZWluaSBVcmJhbiwgSm9lbCBVY2tlbG1hbiA9PQotCi1M b3RzIG9mIGJ1Z2ZpeGVzLCBhbmQgc29tZSBmZWF0dXJlIGFuZCBwZXJmb3JtYW5jZSBlbmhhbmNl bWVudHMuCi0KLUEgbmV3IEVESVRfVE9PTEJBUiBmcm9tIE1lZGlhd2lraSwgbW9yZSBwYWdlIHBl cm1pc3Npb24gZW5oYW5jZW1lbnRzLAotcmVkdWNlZCBtZW1vcnkgdXNhZ2UgZm9yIHBhZ2VsaXN0 cyB3aGljaCBuZWVkIG5vIHBhZ2UgY29udGVudCwKLXJlbGF0ZWQgaW1wcm92ZW1lbnQgZm9yIH5P bGRNYXJrdXAgY3Jhc2hlcyBiZWNhdXNlIG9mIFBDUkUgbWVtb3J5IGV4aGF1c3Rpb24uCi0KLU5l dyA8IXBsdWdpbi1saXN0ICE+IHN5bnRheCBhbmQgflBocFdpa2k6flBhZ2VMaXN0TGlicmFyeSBh cmdzLgotCi1CZWNhdXNlIG9mIFNRTCBjaGFuZ2VzIHlvdSdkIG5lZWQgdG8gP2FjdGlvbj11cGdy YWRlIHRvIHVwZGF0ZSBmb3IgU1FMLgotCi09PT0gRml4ZXMgPT09Ci0qIGZpeGVkIGNyYXNoIGFm dGVyIGxvZ2luLCBieSBlbGltaW5hdGluZyBlbmRsZXNzIHJlY3Vyc2lvbiBpbgotICBncm91cCBp c0FkbWluKCkgY2hlY2tzCi0qIGZpeGVkIHN5bnRheCBlcnJvcnMgaW4gc2lnbmluLnRtcGwKLSog Zml4ZWQgbWlzc2luZyBERUJVRyB3YXJuaW5ncyAoU3VwcG9ydCAjOTU0MjYwKQotKiB+UGhwV2lr aSBpcyBub3cgYWxsb3dfY2FsbF90aW1lX3Bhc3NfcmVmZXJlbmNlID0gT2ZmIHNhZmUgKHBocC5p bmkpCi0gIFNvbWUgZXh0ZXJuYWwgbGlicmFyaWVzIGFyZSBub3QgKFBlYXJfREIgb2RiYywgYWRv ZGIgb3JhY2xlKQotKiBmaXhlZCBzcWwgc3RhdGVtZW50cyBmb3IgcGFnZWRhdGEgd2hlcmUgaXQg aXMgbm90IG5lZWRlZCwgZml4aW5nIHRoZQotICB0eXBpY2FsIH5QYWdlTGlzdCBtZW1vcnkgZXho YXVzdGlvbiBvbiBzaW1wbGUgcGFnZSBsaXN0cy4KLSAgY2FjaGVkX2h0bWwgaXMgaGFuZGxlZCBj b21wbGV0ZSBzZXBhcmF0ZSBub3cuCi0qIGZpeGVkIGFuZCBpbXByb3ZlZCBXaWtpREIgcGFnZWlk IGNhY2hpbmcuCi0qIGZpeGVkIHNvbWUgfldpa2lHcm91cCBlcnJvcnMgZm9yIFdJS0lQQUdFIGFu ZCBEQgotKiBmaXhlZCBKU19TRUFSQ0hSRVBMQUNFCi0qIGZpeGVkIHJlbmFtZSB3aXRoIGRiYQot KiBmaXhlZCBUb2RheSBsaW5rIGluIGFsbCB0ZW1wbGF0ZXMgaWYgVVNFX1BBVEhfSU5GTyA9IGZh bHNlCi0qIGZpeGVkIFBsdWdpbk1hbmFnZXIgZmF0YWwgZXJyb3IgbGluZSAyMjIKLSogdXRmLTgg cGFnZW5hbWVzIGZpeGVkICh0eXBlZCBmb3JlaWduIG5hbWVzIGZyb20gSUUpCi0qIENHSTogbm8g UEFUSF9JTkZPIGZpeAotKiBmaXggc29tZSB0b28gbG9vc2UgUGhwV2lraTpQYWdlUGVybWlzc2lv bnMgZm9yIHNpZ25lZCwgYnV0IG5vdCBhdXRoZW50aWNhdGVkIHVzZXJzCi0gIChhZG1pbiwgb3du ZXIsIGNyZWF0b3IpLCBhbmQgZWRpdCBhbmQgdmlldyBmb3IgQm9nbyBhbmQgUGFzc3dvcmQgdXNl cnMKLSogc2VjdXJpdHkgZml4IGZvciBjcmVhdGUgQUNMOiBhY3Rpb249ZWRpdCBpcyBub3cgY2hl Y2tlZCBmb3IgY3JlYXRlCi0qIGZpeGVkIGltcG9ydGFudCBXaWtpREIgYnVnIHdpdGggREVCVUcg PiAwOiB3cm9uZyBhc3NlcnRpb24KLSAgYXJvdW5kIGxpbmUgMTcyICgjOTU0NjQ4KQotKiBmaXhl ZCBmbGF0ZmlsZSB+QXJjaGl2ZUNsZWFuZXIgYXNzZXJ0aW9uCi0qIH5Sc3NGZWVkUGx1Z2luIHN0 YWJpbGl0eSBmaXggZm9yIGVtcHR5IGZlZWRzIG9yIGJyb2tlbiBjb25uZWN0aW9ucwotKiBmaXhl ZCBTaWRlYmFyIHRoZW1lIENTUywgYWRkZWQgZXhpc3RpbmcgZGF0ZXMgdG8ganNjYWxlbmRhcgot KiBmaXhlZCBQaHBXaWtpOkltYWdlTGlua3MsIGJyb2tlbiBzaW5jZSAxLjMuMTAgKEJ1ZyAjOTU2 MDY4KQotKiBmaXhlZCBsaWIvcGVhci9GaWxlX1Bhc3N3ZCBsb2FkaW5nCi0qIH5UcmFuc2xhdGVU ZXh0OiB2ZXJiYXRpbSBuZWVkZWQgYSBwYWdlYnJlYWsKLSogZml4ZWQgZHVwbGljYXRlIHNlc3Np b25faWQgd2FybmluZyB3aXRoIGFkb2RiCi0qIGZpeGVkIGFkb2RiIH5EYlBhc3NVc2VyIGxvZ2lu Ci0qIGZpeGVkIGV4dGVybmFsIH5EYlBhc3NVc2VyIGxvZ2luCi0qIGZpeGVkIGFkb2RiIGFjdGlv bj11cGdyYWRlCi0qIGZpeGVkIH5GaWxlUGFzc1VzZXIgbG9ja2luZyBwcm9ibGVtcyBhbmQgc2Vz c2lvbiBoYW5kbGluZwotKiBmaXhlZCBhIGxvdCBvZiBMREFQIGF1dGggYW5kIGdyb3VwIGlzc3Vl cwotKiBmaXhlZCBMREFQIG9wdGlvbnMgaGFuZGxpbmcgKGJ5IEpvaG4gQ29sZSkKLSogZml4ZWQg cG9zc2libGUgc2VjdXJpdHkgcHJvYmxlbXM6IGFsbG93aW5nIG9ubHkgcG9zaXhseSBzdHJpY3Qg dXNlcm5hbWVzLAotICBhbmQgYW4gYWN0dWFsIExEQVAgSW5qZWN0aW9uIHByb2JsZW0sIGRldGVj dGVkIGJ5IFN0ZXZlIENocmlzdGV5LCBNSVRSRS4KLSogaG9ub3Igcz13aWxkY2FyZCBhcmd1bWVu dHMgZm9yIH5XaWtpQWRtaW4gcGx1Z2lucwotKiBmaXhlZCBmbGF0ZmlsZSBhc3NlcnRpb24gKCM5 NjMyNjgpIC0gY2hlY2sgZXhpc3RpbmcgcHJldmlvdXMgdmVyc2lvbgotKiBmaXhlZCBhbGwgbXNn IHJlZmVyZW5jZXMgZnJvbSBpbmRleC5waHAgdG8gY29uZmlnL2NvbmZpZy5pbmkKLSogZml4ZWQg aW1tZWRpYXRlIExBTkcgYW5kIFRIRU1FIGluLXNlc3Npb24gdXBkYXRlcyBpZiBub3Qgc3RvcmVk IGluIHByZWZzCi0qIGZpeGVkIFVTRVJfQVVUSF9QT0xJQ1k9b2xkLCB1c2Ugb25seSBVU0VSX0FV VEhfT1JERVIgbWV0aG9kcyAoYmVzaWRlcyB+SHR0cEF1dGgpCi0gIGFuZCByZW1vdmVkIExEQVAs IFBPUDMsIElNQVAgZGVmYXVsdCBjb25maWdzLgotKiBSZWxhdGVkQ2hhbmdlczogZml4ZWQgZGF5 cyBsaW5rcwotKiBmaXggUmVuYW1lOiBDaGFuZ2UgcGFnZW5hbWUgaW4gYWxsIGxpbmtlZCBwYWdl cwotKiBmaXhlZCBQaHBXaWtpOn5QYWdlQ2hhbmdlTm90aWZpY2F0aW9uIGZvciBub3QtY3VycmVu dCB1c2VycwotKiBmaXhlZCB+VXBMb2FkUGx1Z2luIGZvciBmaWxlbmFtZXMgd2l0aCBzcGFjZSAo QnVnICM5Njk1MzIpCi0qIGZpeGVkIGxhYmVsIHN1cHBvcnQgZm9yIH5DcmVhdGVUb2NQbHVnaW4g KEJ1ZyAjOTY5NDk1KQotKiBmaXhlZCBBcGFjaGUyIGNyYXNoaW5nIHdpdGggb2xkIG1hcmt1cCBh bmQgdGhlIH5DcmVhdGVUb2NQbHVnaW4uCi0qIGNhdGNoIGZhdGFscyBhbmQgcmVxdWVzdC0+YXJn cyBjaGFuZ2VzIG9uIGR1bXBpbmcKLSogZml4ZWQgdW5uZWVkZWQgVXNlclByZWZlcmVuY2VzIHBs dWdpbiBsb2dpbiBzY3JlZW4gb24gZHVtcGh0bWwKLSogY2F0Y2ggU09BUCBmYXRhbCBvbiB+R29v Z2xlUGx1Z2luIHdpdGhvdXQgR09PR0xFX0xJQ0VOU0VfS0VZCi0qIHNpbGVudGx5IGlnbm9yZSBq c2hpZGUgYXJndW1lbnQgb24gTWFjSUUgZm9yIH5BZGRDb21tZW50UGx1Z2luIGFuZCB+Q3JlYXRl VG9jUGx1Z2luCi0qIGZpeGVkIHhtbHJwYyB0byBiZSBhYmxlIHRvIHVzZSB0aGUgbmF0aXZlIHht bHJwYyBleHRlbnNpb24uCi0qIGZpeGVkIHhtbHJwYyB3aWtpLmxpc3RMaW5rcyBtZXRob2Q6ICJu YW1lIiA9PiAicGFnZSIgcGFyYW0KLSogZml4ZWQgeG1scnBjIHNlY3VyaXR5IG5vdCB1c2luZyBl dmFsIG9uIHVzZXJjb2RlIGFueW1vcmUKLSogZml4ZWQgfldpa2lBZG1pblV0aWxzIGJlaGF2aW91 ciBvbiBQT1NUCi0qIGZpeGVkIHN0cmljdCBsb2dpbiBvbiAiRGIiIChieSBNaWtoYWlsIFZsYWRp bWlyb3YpCi0qIG1vcmUgL3RtcCB3YXJuaW5ncyBvbiBmbGF0ZmlsZSAoYnkgSm9lbCBVY2tlbG1h bikKLQotPT09IENoYW5nZXMgPT09Ci0qIH5XaWtpQWRtaW5TZXRBY2wgZnVuY3Rpb25hbAotKiBl bmFibGVkIFBocFdpa2k6UGFnZVBlcm1pc3Npb25zIGZvciBhbGwgYWRtaW4gcGx1Z2lucyAobm8g YWRtaW4gcmVxdWlyZWQpOgotICBSZW1vdmUsIFJlbmFtZSwgUmVwbGFjZSwgflNldEFjbCwgQ2hv d24KLSogcmVuYW1lZCBEQl9TZXNzaW9uLnBocCB0byB+RGJTZXNzaW9uLnBocCBhbmQgbW92ZWQg bGlicyB0byBhIHN1YmRpcgotKiBuZXcgRXJyb3Itc3R5bGUgd2l0aCBjb2xsYXBzZWQgb3V0cHV0 IG9mIHJlcGVhdGVkIG1lc3NhZ2VzCi0qIHdoaXRlc3BhY2UgdHJpbSBwYWdlbmFtZXMgdG8gYXZv aWQgYWJ1c2UKLSogbm8gZG91YmxlIGxvZ2luIHBhZ2UgaGVhZGVyLCBiZXR0ZXIgbG9naW4gbXNn LgotKiBpbXByb3ZlZCB+RmlsZUZpbmRlciBpbmNsdWRlX3BhdGggbG9naWMgKH5ub3JtYWxpemVM b2NhbEZpbGVOYW1lLCAuLi4pCi0qKiBpbml0IGdsb2JhbCB+RmlsZUZpbmRlciB0byBhZGQgcHJv cGVyIGluY2x1ZGUgcGF0aHMgYXQgc3RhcnR1cAotICAgYWRkcyBQSFBXSUtJX0RJUiB0byB0aGUg ZnJvbnQgaWYgc3RhcnRlZCBmcm9tIGFub3RoZXIgZGlyLCBsaWIvcGVhciB0byB0aGUgZW5kLgot KiogZml4IHNsYXNoaWZ5IGZvciBXaW5kb3dzCi0qIGNoZWNrIG1vcmUgY29uZmlnLWRlZmF1bHQg YW5kIHByZWRlZmluZWQgY29uc3RhbnRzCi0qIH5BdXRvU3BsaXQgcGFnZW5hbWVzIGF0IHN1YnBh Z2Ugc2VwYXJhdG9ycywgZXNwIGZvciBTaWRlYmFyIHRoZW1lCi0qIGltcHJvdmUgUGFnZWxpc3Qg bGF5b3V0IGJ5IGVxdWFsIHBhZ2VuYW1lIHdpZHRoIGZvciBsaW1pdGVkIGxpc3RzCi0qIGFkZGVk IENQQU4sIH5Pc0ZhcTIsIH5XaWtpTGVucyB0byBpbnRlcndpa2kubWFwCi0qIH5FeHRlcm5hbFNl YXJjaFBsdWdpbiB1c2VpbWFnZSBhcmcgKFJGRSAjOTUyMzIzKQotKiBzaW1wbGlmaWVkIHNvbWUg c3RyaW5ncyBmb3IgZWFzaWVyIHRyYW5zbGF0aW9uCi0qIGFkZGVkIGhhc2ggYW5kIG9iamVjdCBz dXBwb3J0IGZvciB+U2Vzc2lvblBhc3NVc2VyIHVzZXJpZCBzZXNzaW9uIHZhcmlhYmxlCi0qIGF1 dGggcGFnZT0+REIgflBhc3NVc2VyIHVwZ3JhZGU6IGRlbGV0ZSBleGlzdGluZyBQYWdlIHByZWZz LCBpZiBEYiBwcmVmcyBhcmUgc2F2ZWQuCi0qIHZhc3RseSBpbXByb3ZlZCBmcmVuY2ggbG9jYWxl IHN1cHBvcnQsIHdoaWNoIGlzIG5vdyBjb21wbGV0ZSAoYnkgUGllcnJpY2sgTWVpZ25lbikuCi0g IGVuZ2xpc2gsIGdlcm1hbiBhbmQgZnJlbmNoIGFyZSBub3cgY29tcGxldGVseSB0cmFuc2xhdGVk LiBUaGUgb3RoZXJzIHBhcnRpYWxseS4KLSogaW1wcm92ZWQgflNldHVwV2lraSAodmlyZ2luIHNl dHVwKSBsb2FkaW5nIGFsbCByZXF1aXJlZCBhY3Rpb24gcGFnZXMgaW4gZW5nbGlzaCwKLSAgaWYg bm8gZm9yZWlnbiB0cmFuc2xhdGlvbiBmb3VuZCAoYnkgUGllcnJpY2sgTWVpZ25lbikKLSogc2hv dyBSZWxhdGVkQ2hhbmdlcyBvbmx5IGlmIG1pbmltdW0gdHdvIGxpbmtzIG9uIHRoZSBjdXJyZW50 IHBhZ2UuCi0qIFBhZ2VEdW1wOiB+Vmlld1NvdXJjZSBsaW5rLCBiZXR0ZXIgYWN0aW9ucGFnZSB1 c2FnZSwgTWVzc2FnZUlEIFRaCi0qIGJyb3VnaHQgfldpa2lVc2VyIChvbGQpIHVwdG9kYXRlCi0q IGFkZGVkIG93bmVyIGFuZCBhY2wgZmllbGRzIHRvIGR1bXBzCi0qIGltcG9ydCBHT09HTEVfTElD RU5TRV9LRVkgYW5kIEZPUlRVTkVfRElSIGZyb20gY29uZmlnLmluaQotKiByZW5hbWVkIGdsb2Jh bCAkVGhlbWUgdG8gJH5XaWtpVGhlbWUgKEdmb3JnZSBuYW1lY2xhc2gpCi0qIGFnZ3Jlc3NpdmUg V2lraURCIGFuZCBjYWNoZSBtZW1vcnkgb3B0aW1pemF0aW9uOiBkb24ndCBjYWNoZSAlY29udGVu dAotICBhbmQgX2NhY2hlZF9odG1sIGlmIG5vdCBuZWVkZWQuCi0qIFBhZ2VEdW1wIGFkZGVkIGZv cm1hdD1iYWNrdXA6IGR1bXAgYWxsIHJldmlzaW9ucy4KLSogZm9yY2UgbXlzcWwgdG8gdXNlIGF1 dG9faW5jcmVtZW50IHBhZ2UuaWQgZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMuCi0gIGNhbGwgP2Fj dGlvbj11cGdyYWRlCi0qIGV4dGVuZGVkIGFsbCBwbHVnaW5zIHdoaWNoIHRha2UgInBhZ2VzIiBh bmQgImV4Y2x1ZGUiIHBhcmFtcyB0byBhY2NlcHQKLSAgPCFwbHVnaW4tbGlzdCAhPiBwYWdlbGlz dHMKLSogZW5hYmxlZCBsaW1pdCwgZXhjbHVkZSBhbmQgc29ydGJ5IH5QYWdlTGlzdCBvcHRpb25z IGZvciBhbG1vc3QgYWxsIGRiIGJhY2tlbmRzIG5hdGl2ZWx5Ci0qIGltcHJvdmVkIH5TcWxSZXN1 bHQ6IHRlbXBsYXRlcyBhbmQgdmFyaWFibGUgZXhwYW5zaW9uLgotICBhdXRvbWF0aWMgcGFnaW5n IG5vdCB5ZXQuCi0qIHVzZSBsYXRlc3QgUGVhciBEQiBmZWF0dXJlcywgd2hpY2ggd2lsbCBicmVh ayBvbiBvbGRlciBQZWFyREIgbGlicy4KLSAgKGVzY2FwZVNpbXBsZSkuIFVzZSBJTkNMVURFX1BB VEggdG8gb3ZlcnJpZGUuCi0qIElOQ0xVREVfUEFUSCBpcyBub3cgcHJlcGVuZGVkLCBub3QgYXBw ZW5kZWQuIFBIUFdJS0lfRElSIGlzIGZvcmNlZCB0byBiZSBmaXJzdC4KLSogcmV3cm90ZSB+T2xk VGV4dEZvcm1hdHRpbmdSdWxlcywgfkFuY2llbm5lc35SJUU4Z2xlc35EZUZvcm1hdGFnZQotICBm b3IgcHJvcGVyIGltcG9ydGluZyAoUENSRSttZW1vcnkgcmVsYXRlZCBjcmFzaGVzIG9uIG9sZGVy IHBocCdzKQotKiBhZGRlZCBleHRyYSBwYWdlLmNhY2hlZF9odG1sIGNvbHVtbi4gP2FjdGlvbj11 cGdyYWRlIG9yIFBocFdpa2lBZG1pbmlzdHJhdGlvbgotICAiQ29udmVydCBjYWNoZWRfaHRtbCIg aXMgbmVlZGVkIHRvIGNvbnZlcnQgeW91ciBvbGQgcGFnZWRhdGEgIl9jYWNoZWRfaHRtbCIuCi0q IHBhZ2UgZGVsZXRpb24gaXMgbm93IHVuZG9hYmxlIGFuZCBiZWluZyBzZWVuIGluIFJlY2VudENo YW5nZXMuIFB1cmdlIHBhZ2VzCi0gIGJ5IG5ldyBhZG1pbiBidXR0b24uCi0qIHppcGR1bXAgYW5k IGR1bXBodG1sIGNvbnRhaW5zIG5vdyBpbWFnZXMsIGJ1dHRvbnMgYW5kIGNzcwotKiBpbXByb3Zl ZCBffldpa2lUcmFuc2xhdGlvbiBwZXJmb3JtYW5jZSB3aXRoIGdldHRleHQgZXh0ZW5zaW9uCi0q IG1vdmVkIH5EYlNlc3Npb24gbWV0aG9kcyB0byBleHRyYSBmaWxlcyBhcyB3aXRoIH5XaWtpVXNl ciBmaWxlcy4KLSogY2hhbmdlZCBjb25maWcuaW5pIG9wdGlvbnM6Ci0gIEtFWVdPUkRTOiAiQ2F0 ZWdvcnk6VG9waWMiID0+ICJDYXRlZ29yeSogT1IgVG9waWMqIiwKLSAgS0VZV09SRF9MSU5LX1JF R0VYUCByZW1vdmVkLAotKiBhY3Rpb249ZHVtcGh0bWwgZHVtcHMgb25seSB0aGUgY3VycmVudCBw YWdlIHVubGVzcyBkb25lIGZyb20gUGhwV2lraUFkbWluaXN0cmF0aW9uCi0KLT09PSBOZXcgPT09 Ci0qIG5ldyBFTkFCTEVfRURJVF9UT09MQkFSIChmcm9tIG1lZGlhd2lraSksIEpTX1NFQVJDSFJF UExBQ0UsCi0gIH5BZGRDYXRlZ29yeSwgfkFkZFBsdWdpbiBidXR0b25zCi0qIG5ldyBvdGhlciBj b25maWcgb3B0aW9uczoKLSoqIEVOQUJMRV9QQUdFUEVSTSB0byB0dXJuIG9mZiBBQ0wgKG5vIG93 bmVyIGF0IHRoZSBzdGF0dXNsaW5lIGlmIG9mZikKLSoqIEZPUlRVTkVfRElSIHRvIGVuYWJsZSBy YW5kb20gcXVvdGVzIGZvciBuZXcgcGFnZXMKLSoqIEdPT0dMRV9MSU5LU19OT0ZPTExPVywgQUND RVNTX0xPR19TUUwsIEJBQllDQVJUX1BBVEgsIEJMT0dfREVGQVVMVF9FTVBUWV9QUkVGSVgsCi0g ICAgQ0FURUdPUllfR1JPVVBfUEFHRSwgREFUQUJBU0VfUEVSU0lTVEVOVCwgREJBRE1JTl9QQVNT V0QsIERCQURNSU5fVVNFUiwKLSAgICBERUZBVUxUX0RVTVBfRElSLCBESVNBQkxFX0dFVElNQUdF U0laRSwgRU5BQkxFX0RPVUJMRUNMSUNLRURJVCwKLSAgICBFTkFCTEVfTElWRVNFQVJDSCwgRU5B QkxFX01PREVSQVRFRFBBR0VfQUxMLCBFTkFCTEVfUkFXX0hUTUxfTE9DS0VET05MWSwKLSAgICBF TkFCTEVfUkFXX0hUTUxfU0FGRSwgRU5BQkxFX1NQQU1BU1NBU1NJTiwgRU5BQkxFX1hIVE1MX1hN TCwKLSAgICBHT09HTEVfTElDRU5TRV9LRVksIEhUTUxfRFVNUF9ESVIsIExEQVBfT1VfR1JPVVAs IExEQVBfT1VfVVNFUlMKLSAgICBQTFVHSU5fQ0FDSEVEX0NBQ0hFX0RJUiwgUExVR0lOX0NBQ0hF RF9EQVRBQkFTRSwgUExVR0lOX0NBQ0hFRF9GSUxFTkFNRV9QUkVGSVgsCi0gICAgUExVR0lOX0NB Q0hFRF9GT1JDRV9TWU5DTUFQLCBQTFVHSU5fQ0FDSEVEX0hJR0hXQVRFUiwKLSAgICBQTFVHSU5f Q0FDSEVEX0lNR1RZUEVTLCBQTFVHSU5fQ0FDSEVEX0xPV1dBVEVSLCBQTFVHSU5fQ0FDSEVEX01B WEFSR0xFTiwKLSAgICBQTFVHSU5fQ0FDSEVEX01BWExJRkVUSU1FLCBQTFVHSU5fQ0FDSEVEX1VT RUNBQ0hFLCBURU1QX0RJUiwgVVNFQ0FDSEUsCi0gICAgVVNFX0VYVEVSTkFMX0hUTUwyUERGLCBF TkFCTEVfTUFSS1VQX0NPTE9SLCBFTkFCTEVfTUFSS1VQX1RFTVBMQVRFCi0qIGltcGxlbWVudGVk IFdpa2lEQiBwYWdlIGNyZWF0b3IgYW5kIG93bmVyc2hpcAotKiBhZGRlZCBwYWdpbmcgc3VwcG9y dCBmb3Igc2ltcGxlIG9uZS1jb2x1bW4gcGFnZWxpc3RzCi0qIGFkZGVkIG5ldyB+UGFnZUxpc3Qg b3B0aW9uczogY29scywgYXpoZWFkLCBjb21tYSwgY29tbWFzZXAsIG9yZGVyZWQgYW5kIGVuYWJs ZWQgdGhlIG5ldyBhcmdzIG9uIG1vc3QgcGx1Z2lucy4KLSogbmV3IHBhZ2VuYW1lIHV0ZjggZGV0 ZWN0aW9uIGxvZ2ljIChmcm9tIG1lZGlhd2lraSkKLSogYWRkZWQgYWN0aW9uIHJldmVydCwgd2l0 aCBidXR0b24gZnJvbSBhY3Rpb249ZGlmZgotKiBhZGRlZCBuZXcgPCFwbHVnaW4tbGlzdCB+UGx1 Z2luTmFtZSBhcmdzIT4gc3ludGF4IHdpdGhpbiBwbHVnaW4gYXJncwotKiBuZXcgcGx1Z2luIH5J bmNsdWRlUGFnZXMsIGVzcC4gZm9yIDwhcGx1Z2luLWxpc3QgIT4KLSogYWRkZWQgdGVtcGxhdGUg dmFyaWFibGUgZXhwYW5zaW9uIHN1cHBvcnQgdG8gdGhlIH5DcmVhdGVQYWdlUGx1Z2luCi0qIH5X aWtpU3BhbSBwcmV2ZW50aW9uOgotKiogT24gR09PR0xFX0xJTktTX05PRk9MTE9XIGFkZCByZWw9 bm93Zm9sbG93IHRvIGFsbCBleHRlcm5hbCBsaW5rcywgdW5sZXNzIHRoZSBhdXRob3Igd2FzIGF1 dGhlbnRpY2F0ZWQuCi0qKiBtYXggMjAgbmV3IGxpbmtzIGhhcmRjb2RlZAotKiogbmV3IGJhYnlj YXJ0IG1vZHVsZSBpbnRlcmZhY2luZyB+U3BhbUFzc2Fzc2luCi0qIGFkZGVkIH5XaWtpUGx1Z2lu Q2FjaGVkIHN1cHBvcnQgZm9yIGltYWdlIG1hcHMsIHN0YXRpYyBjYWNoZSBpbiB1cGxvYWRzLyBh bmQgU1ZHCi0qIGFkZGVkIGNhc2Utc2Vuc2l0aXZlL2luc2Vuc2l0aXZlIGFuZCByZWdleCBzZWFy Y2hpbmcsIHJlcGxhY2UgYWxzbwotKiBhZGRlZCBhY3Rpb249cGRmOiBvbmx5IHBhZ2UgZm9ybWF0 dGVyIG1pc3NpbmcsIHVzZSBVU0VfRVhURVJOQUxfSFRNTDJQREYgaW5zdGVhZAotKiBuZXcgflht bFBhcnNlciwgfkh0bWxQYXJzZXI6IG5ldyBsaWJzIGZvciBIVE1MLT53aWtpIGltcG9ydCBhbmQg aHRtbGFyZWEzIHN1cHBvcnQKLSogbmV3IGFjdGlvbj1jaG93bnxzZXRhY2x8cmVuYW1lfGR1bXAg YWN0aW9uIHNob3J0Y3V0cyBwb2ludGluZyB0byB0aGUgcGx1Z2luCi0qIG5ldyB+U3ludGF4SGln aGxpZ2h0ZXIgcGx1Z2luIChiYXNlZCBvbiB3b3JrIGJ5IGFsZWN0aG9tYXMpLAotICBuZWVkcyBo aWdobGlnaHQgZnJvbSBodHRwOi8vd3d3LmFuZHJlLXNpbW9uLmRlLwotKiBuZXcgflBsb3RpY3Vz UGx1Z2luLiBGdWxsIGFwcGxpY2F0aW9uL3hodG1sK3htbCBzdXBwb3J0IG5vdCB5ZXQKLSAgKGph dmFzY3JpcHQgZG9jdW1lbnQud3JpdGUoKSBub3Qgc3VwcG9ydGVkIHdpdGggRU5BQkxFX1hIVE1M X1hNTCkKLSogbmV3IH5MaXN0UGFnZXMgcGx1Z2luIChieSBEYW4gRnJhbmtvd3NraSkKLSogbmV3 IH5UZVgycG5nUGx1Z2luIChieSBQaWVycmljayBNZWlnbmVuKQotKiBhZGRlZCBzdXBwb3J0IGZv ciA/Zm9yY2VfdW5sb2NrPTEgcGFyYW1ldGVyIGZvciBzdGFsZSBGaWxlX1Bhc3N3ZCBsb2Nrcwot ICAoc2hvdWxkIG5vdCBiZSBuZWVkZWQgYW55bW9yZSwgd2UgbG9jayBvbmx5IHdoZW4gd2UgYWN0 dWFsbHkgY2hhbmdlIHRoZSBwYXNzd2QpCi0qIGFkZGVkIG15c3FsLTQuMSBmaXggYXQgYWN0aW9u PXVwZ3JhZGUsCi0gIGFkZGVkIENBQ0hFX0NPTlRST0wgTk9ORSA9PiBOT19DQUNIRSBjb25maWcu aW5pIGZpeCB0byBhY3Rpb249dXBncmFkZQotKiBhdXRob3IsIG93bmVyLCBjcmVhdG9yIHN1cHBv cnQgZm9yIH5XaWtpQWRtaW4qIGFuZCBBbGxQYWdlcyBwbHVnaW5zOgotKiogQWxsUGFnZXNDcmVh dGVkQnlNZSwgQWxsUGFnZXNMYXN0RWRpdGVkQnlNZSwgQWxsUGFnZXNPd25lZEJ5TWUKLSogYWRk ZWQgb3B0aW9uIHJlZ2V4IHRvIH5XaWtpQWRtaW5TZWFyY2hSZXBsYWNlIGFuZCB+V2lraUFkbWlu UmVuYW1lCi0qIGFkZGVkIG9yYWNsZSBQZWFyREIgYmFja2VuZCAoYnkgUGhpbGlwcGUgVmFuaGFl c2VuZG9uY2spCi0qIGFkZGVkIGV4cGVyaW1lbnRhbCBTZWFyY2hIaWdobGlnaHQgZmVhdHVyZSAo bm90IGZvciBIVE1MIHlldCkKLSogYWRkZWQgZXhwZXJpbWVudGFsIH5MaXZlU2VhcmNoIGZlYXR1 cmUKLSogYWRkZWQgflt+T3ZlcldyaXRlIEFsbF0gYnV0dG9uIHRvIGxvYWRmaWxlIGFjdGlvbiBv biB0aGUgZmlyc3QgcGFnZS4KLSogYWRkZWQgfltMb2FkICYgfk92ZXJXcml0ZV0gYnV0dG9uIHRv IFBocFdpa2lBZG1pbmlzdHJhdGlvbgotKiBwZXJmb3JtYW5jZTogdXNlIGNhY2hlZCBzdGF0aWMg Y29uZmlnL2NvbmZpZy5waHAsIGlmIGl0J3Mgd3JpdGFibGUgYnkKLSAgdGhlIHdlYnNlcnZlci4g KGV4cGVyaW1lbnRhbCkKLSogYWRkZWQgQUNDRVNTX0xPR19TUUwgJjE6IHJlYWQsICYyIHdyaXRl LiBuZXcgYWNjZXNzbG9nIHNxbCB0YWJsZS4KLSAgZm9yIHZhcmlvdXMgbG9nIGFuYWx5c2lzOiBh YnVzZSBwcmV2ZW50aW9uLCByZWNlbnQgcmVmZXJyZXJzLgotKiBhZGRlZCBtb3JlIH5QYWdlQ2hh bmdlTm90aWZpY2F0aW9uIG9uIG90aGVyIGFjdGlvbnM6IHJlbmFtZSwgcmVtb3ZlLgotICBjaGFu Z2VkIHN1YmplY3Qgb24gY3JlYXRlLiBDb2xsYXBzZSBtdWx0LiBlbWFpbHMgdG8gb25lLgotKiBh ZGRlZCBuZXcgUGhwV2lraTp+V2lraUZvcm1SaWNoIHBsdWdpbgotKiBhZGRlZCBuZXcgfkFwcGVu ZFRleHRQbHVnaW4gKGJ5IFBhc2NhbCBHaWFyZCkKLSogYWRkZWQgUlNTMiBsaW5rIChmb3JtYXQ9 cnNzMikgIGluIFJlY2VudENoYW5nZXMuIChubyBjbG91ZCBjaGFubmVsIHlldCkKLSogYWRkZWQg UGhwV2lraUFkbWluaXN0cmF0aW9uIFdpa2lEQiBidXR0b25zOgotICB+W1B1cmdlIGFsbCBlbXB0 eSB1bnJlZmVyZW5jZWQgcGFnZXNdLCB+W0NvbnZlcnQgY2FjaGVkX2h0bWxdCi0qIChueWkpIG5l dyBleHBlcmltZW50YWwgTW9kZXJhdGVkUGFnZSBmZWF0dXJlLiAoaS5lLiBkZWxheWVkIFBPU1Qg YWN0aW9ucykKLSogbmV3IGVkaXQgIn5bfl0gb2xkIG1hcmt1cCB+W0NvbnZlcnR+XSIgYnV0dG9u IHRvIGNvbnZlcnQgYW5kIHNhdmUgdG8gbmV3IG1hcmt1cC4KLSogbmV3IExpbmtEYXRhYmFzZSBw bHVnaW4gYW5kIGFjdGlvbnBhZ2UgZm9yIHRoZSBodHRwOi8vdG91Y2hncmFwaC5zb3VyY2Vmb3Jn ZS5uZXQvIH5XaWtpQnJvd3NlcgotKiBuZXcgaHlwZXJ3aWtpIGFwcGxldCBpbiB0aGUgU2lkZWJh ciB0aGVtZS4gU2VlIGh0dHA6Ly9oeXBlcmdyYXBoLnNvdXJjZWZvcmdlLm5ldC8KLSogbmV3IHht bHJwYyBtZXRob2RzOiBwdXRQYWdlLCBtYWlsUGFzc3dvcmRUb1VzZXIKLSogbmV3IHhtbHJwYyB0 ZXN0IGZyYW1ld29yawotKiBhY3Rpb249dXBncmFkZSBwZXJmb3JtcyBub3cgYSBteXNxbCBMT0NL IFRBQkxFIHByaXZpbGVnZXMgY2hlY2sgYW5kIGZpeAotKiBhY3Rpb249dXBncmFkZSBhc2tzIG5v dyBmb3IgdGhlIGFkbWluJ3MgdXNlciBhbmQgcGFzc3dvcmQgaWYgbm90IGRlZmluZWQKLSogYWRk ZWQgbGliL0FTQ0lJTWF0aFBIUCBhbmQgfkFzY2lpTWF0aCBwbHVnaW4KLSogbmV3IH5BbmFseXNl QWNjZXNzTG9nU3FsUGx1Z2luIChieSBDaGFybGVzIENvcnJpZ2FuKQotKiBuZXcgflRlbXBsYXRl UGx1Z2luLCBvcHRpb25hbGx5IG1lZGlhd2lraS1zdHlsZSB+e357VGVtcGxhdGV+fX59IHN5bnRh eAotKiBuZXcgRU5BQkxFX0FDRFJPUERPV04gbW9hY2Ryb3Bkb3duIGxpYnJhcnkuIGZhc3QgeG1s cnBjIGNvbW11bmljYXRpb24gbnlpCi0KLT09IDEuMi4xMSA9PQotKiBzdXBwb3J0IHJlbW92ZSBm b3IgJH5XaGljaERhdGFiYXNlID0gZmlsZQotCi09PSAxLjIuMTAgPT0KLSogc3VwcG9ydCBwaHA1 IHdpdGggcmVnaXN0ZXJfbG9uZ19hcnJheXMgPSBvZmYKLQotPT0gMS4yLjkgYnVnZml4ID09Ci0q IEpvc2UgVmluYSBmaXhlZCBNb3N0UG9wdWxhciBzb3J0aW5nIGZvciBkYmEgYW5kIGRibSwKLSAg d2hpY2ggd2FzIGJyb2tlbiBzaW5jZSAxLjIuMwotCi09PSAxLjIuOCAodGhlIG9sZC1zdGFibGUg YnJhbmNoKSBKYW4sIDMwIDIwMDUsIFJlaW5pIFVyYmFuID09Ci0qIHJlZ2lzdGVyX2dsb2JhbHM9 b2ZmIGZpeDoKLSAgZml4IGFuZCBjZW50cmFsaXplIGJyb2tlbiByZWdpc3Rlcl9nbG9iYWxzPW9m ZiBsb2dpYy4KLSogdXBkYXRlIG1lc3NhZ2UgY2F0YWxvZwotKiByZXBsYWNlIG15c3FsX3Bjb25u ZWN0IGJ5IG15c3FsX2Nvbm5lY3QKLQotPT0gMS4yLjcgKHRoZSBvbGQtc3RhYmxlIGJyYW5jaCkg SmFuLCA2IDIwMDUsIFJlaW5pIFVyYmFuID09Ci0KLX5QaHBXaWtpIDEuMi43IGJhY2twb3J0IGN2 cyByZWxlYXNlLTFfMi1icmFuY2ggZW5oYW5jZW1lbnRzIG5ldmVyIHJlbGVhc2VkIHdpdGggMS4y LjMtMS4yLjY6Ci0qIGZ1bGwgeGh0bWwgY29uZm9ybWl0eQotKiBzcGxpdF9wYWdlbmFtZSBpbiB0 aXRsZSBhbmQgaGVhZGVyIHRvIGhlbHAgZ29vZ2xlCi0qICJJTlNUQUxMLk1hYyBPUyBYIiBhZGRl ZCBmcm9tIGN2cwotKiBsaWIvemlwZmlsZS5waHA6IENvbnRlbnQtRGlzcG9zaXRpb246IGF0dGFj aG1lbnQKLSogbGliL2NvbmZpZy5waHAsIGxpYi9zdGRsaWIucGhwOiBzdXBwb3J0IG5ldyBVU0Vf TElOS19JQ09OUyBhbmQgQVVUT1NQTElUX1dJS0lXT1JEUywKLSAgYmV0dGVyIGkxOG4gJCF+V2lr aU5hbWVSZWdleHAKLS0gcmUtYWRkZWQgaW1hZ2VzLyogTElOS19JQ09OUywgcHJlLWNhbGN1bGF0 ZSBEQVRBX1BBVEgKLS0gbG9jYWxlLyo6IGZpeCBhbmQgdXBkYXRlIHN0cmluZ3MgYW5kIHRlbXBs YXRlcyBlc3AuIGZvciBnZXJtYW4sCi0qIGluZGV4LnBocDogdXJscGFyc2VyIGV4dGVuZGVkIHRv IG9taXQgJnN0YXJ0X2RlYnVnPTEgYW5kIG90aGVyIGFyZ3MKLSogYWRkZWQgbWlub3JfZWRpdCBj aGVja2JveAotKiBwcmludCBtb3JlIG1ldGEgdGFnczogcm9ib3RzLCBmYXZpY29uLCBsYW5ndWFn ZSBhbmQgUEhQV0lLSV9WRVJTSU9OCi0KLT09IDEuMi42ICh0aGUgb2xkLXN0YWJsZSBicmFuY2gp IERlYywgMTkgMjAwNCwgUmVpbmkgVXJiYW4gPT0KLQotRmxhdGZpbGUgZml4ZXMgYW5kIGVuaGFu Y2VtZW50OgotKiBmaXhlZCAhVGl0bGVTZWFyY2ggYW5kIEJhY2tsaW5rcyBmb3IgZmxhdGZpbGUu Ci0qIGVuYWJsZSBNb3N0UG9wdWxhciAoaGl0Y291bnQgc3RvcmFnZSkgZm9yIGZsYXRmaWxlCi0K LT09IDEuMi41ICh0aGUgb2xkLXN0YWJsZSBicmFuY2gpIE5vdiwgMjggMjAwNCwgUmVpbmkgVXJi YW4gPT0KLSogd29ya3Mgd2l0aCByZWdpc3Rlcl9nbG9iYWxzPW9mZgotKiBhZGRzIHVzZXIvcGFz c3dvcmQgdG8gcGdzcWwsCi0qIGZpeCB6aXAgYW5kIGR1bXBzZXJpYWwgb24gZGJhLCBkYm0sIG1z cWwgYW5kIGZpbGUsCi0qIGFuZCBmaXhlcyBhIG1pbm9yICh1bilsb2NrIGlzc3VlLCBkaXNwbGF5 aW5nIHRoZSAodW4pbG9ja2VkIHBhZ2UgYWZ0ZXJ3YXJkcwotICBhbmQgbm90IHRoZSB+RnJvbnRQ YWdlLgotCi09PSAxLjMuMTAgTWF5LCAxMyAyMDA0LCBSZWluaSBVcmJhbiwgSm9ieSBXYWxrZXIg PT0KLQotSW4gc2hvcnQ6IHBhZ2luZyBzdXBwb3J0LCBhZG9kYiByZXdyaXRlLCBwZXJtaXNzaW9u IHByb2JsZW0gZml4ZWQuCi0KLT09PSBGaXhlcyA9PT0KLSogZml4ZWQgc2V2ZXJlIHBlcm1pc3Np b24gcHJvYmxlbToKLSAgRGVmYXVsdCBwZXJtaXNzaW9ucyBub3QgaG9ub3JlZC4gRXZlcnlib2R5 IHdhcyBhYmxlIHRvIGVkaXQuCi0qIHNldCBVc2VyUHJlZmVyZW5jZXMgZm9yIGJvb2wgYW5kIGlu dCBmaXhlZAotKiBQT1AzIGF1dGgKLSogZGJhIG9wZW4gcHJvYmxlbXMgaW1wcm92ZWQsIGJ1dCBu b3QgZ2VuZXJhbGx5IGZpeGVkCi0qIGZpeGVkIGRiYSBzZXNzaW9uIHJlYWRpbmcsIGJ1dCBzdGls bCBicm9rZW4KLSogc3VwcG9ydCB3aWtpd29yZCBsaW5rcyBhbmQgaW1hZ2UgbGlua3MgaW4gflJp Y2hUYWJsZSBjb250ZW50LAotICBiYWNrbGlua3Mgc3RpbGwgbm90IHdvcmtpbmcuCi0qIGZpeGVk IG5hdmJhciBsaW5rcyBpbiB0aGVtZSBzbWFsbGVyLCBhbmQgbWFkZSB0aGVtIGRlZmF1bHQKLSog Zml4ZWQgbG9hZGluZyBvZiBsb2NhbGl6ZWQgcGFnZW5hbWVzIG9uIGFjdGlvbj11cGdyYWRlCi0q IGZpeGVkIGludGVyd2lraS5tYXAgbG9hZGluZyBvbiBjZXJ0YWluIH5QcmV0dHlXaWtpIHNldHVw cwotKiByZS1lbmFibGVkIHBocC00LjAuNiBzdXBwb3J0IChicm9rZW4gc2luY2UgMS4zLjg6IHN1 cGVyZ2xvYmFscywgYXJyYXlfa2V5X2V4aXN0cyksCi0gIDQuMC40LXBsMSBhbmQgNC4wLjUgZG8g d29yaywgYnV0IG5vdCBzdGFibGUgZW5vdWdoLgotKiBmaXggcnVubmluZyBwaHB3aWtpIGluICJo dHRwOi8vc2VydmVyLyIgKGVtcHR5IERBVEFfUEFUSCkKLSogZml4IFBocFdpa2k6flByZXR0eVdp a2kgZGV0ZWN0aW9uOiBzdGFydGVyIHNjcmlwdCBpbmNsdWRlcyBpbmRleC5waHAsCi0gIGFuZCBp bmNsdWRlIG1haW4ucGhwIGJ5IGl0cyBvd24gdG8gb3ZlcnJpZGUgY2VydGFpbiBjb25maWcgdmFs dWVzLgotKiBmaXggfldpa2lBZG1pblJlbW92ZSBhcmd1bWVudHMgcGFzc2VkIGZyb20gV2lraUFk bWluU2VsZWN0LAotICB+V2lraUFkbWluUmVtb3ZlIGRlbGV0ZWQgdG9vIG1hbnkgYXJncyBpZiBw YXNzZWQgZnJvbSBXaWtpQWRtaW5TZWxlY3QKLSogc2Vzc2lvbiB0cmFuc3BvcnRhdGlvbiBpbXBy b3ZlZCwgbm8gZGIgb2JqZWN0cyBzdG9yZWQKLSogflBhZ2VHcm91cCBzdXBwb3J0IGZvciB+W2xp bmtzXSBhbmQgc3VicGFnZXMKLSogfkh0dHBDbGllbnQgZml4ZXMgZm9yIG9sZGVyIHBocCdzCi0q IH5Sc3NGZWVkIGZvciBhbGxvd191cmxfZm9wZW49ZmFsc2UsIElNQUdFIHN1cHBvcnQsIGVtcHR5 IElURU0gbGlzdAotKiBUaGVtZSBidXR0b25zIGFyZSBub3cgYWxzbyBzZWFyY2hlZCBpbiB0aGUg ZGVmYXVsdCB0aGVtZQotKiBudW1lcm91cyBvdGhlciBtaW5vciBidWdmaXhlcy4KLQotPT09IENo YW5nZXMgPT09Ci0qIEFET0RCIHVwZGF0ZSBmcm9tIGFuY2llbnQgbXlzcWwtb25seSwgdG8gNC4y MSB3aXRoIGFsbCBzdXBwb3J0ZWQgZGF0YWJhc2VzLgotICB0cmFuc2FjdGlvbiBzdXBwb3J0LCB3 aXRoIG15c3FsIGxvY2tpbmctd29ya2Fyb3VuZHMKLSogcGVhciBub3QgaW4gb3VyIGluY2x1ZGVf cGF0aCBhbnltb3JlOiBlaXRoZXIgdXNlIHlvdXIgcGVhciBvciBvdXIgcGVhciwKLSAgYnkgYWRk aW5nIGl0IHRvIHlvdXIgaW5jbHVkZV9wYXRoIG9yIG5vdC4gdXNlIG5vdyAxOjEgY29waWVzIG9m IHBlYXIgbGlicy4KLSogfkNyZWF0ZVRvYyBwYXJzZXMgbm93IGhlYWRlcnMgd2l0aCBsaW5rcyBh bmQgZm9ybWF0dGluZyBvcHRpb25hbGx5LCBpZgotICBUT0NfRlVMTF9TWU5UQVggaXMgZGVmaW5l ZAotKiB+UGFnZUNoYW5nZU5vdGlmaWNhdGlvbjogdXNlcmlkcywgbm90IGVtYWlscyBhcmUgcHJp bnRlZAotKiBkZWZhdWx0IHRoZW1lIG5hdmJhciBjb25zaXN0ZW5jeTogbGlua0J1dHRvbnMgaW5z dGVhZCBvZiBhY3Rpb24gYnV0dG9ucwotKiBffldpa2lUcmFuc2xhdGlvbiB3aGF0PWJ1dHRvbnMs IG5vVD0xLCBub2xpbmtzPTEKLSogflNldHVwV2lraSAodmlyZ2luIHNldHVwKSBhbHNvIGxvYWRz IGFsbCBtYW5kYXRvcnkgcGFnZXMgbm93Ci0gIGFuZCBvdmVyd3JpdGVzIFJlbGVhc2VOb3Rlcwot KiB+UGFnZUNoYW5nZU5vdGlmaWNhdGlvbiBjaGFuZ2VkIHN1YmplY3QgdG8gIn5bfldpa2lOYW1l XSBQYWdlIGNoYW5nZSAlcyIsCi0gIHVwZGF0ZSB5b3VyIGZpbHRlcnMgYWNjb3JkaW5nbHkKLSog YWN0aW9uPXVwZ3JhZGUgbm93IGxpbmtlZCBpbiBQaHBXaWtpQWRtaW5pc3RyYXRpb24sCi0gIGRi OiBmaXggcGFnZS5pZCBhdXRvX2luY3JlbWVudCBhbmQgQUREIHNlc3Npb24uc2Vzc19pcAotKiBz b21lIGludGVybmFsIH5JbmxpbmVQYXJzZXIgb3B0aW1pemF0aW9uCi0qIERCQXV0aFBhcmFtIHN0 YXRlbWVudCBzeW50YXggY2hhbmdlOiB2YXJpYWJsZXMgbm93IGxpa2UgJyR1c2VyaWQnCi0KLT09 PSBOZXcgPT09Ci0qIG5ldyBpbmktc3R5bGUgY29uZmlnIGluc3RlYWQgb2Ygb2xkIGluZGV4LnBo cCwgYnkgSm9ieSBXYWxrZXIKLSogcGFnaW5nIHN1cHBvcnQgZm9yIHBhZ2VsaXN0cyBsb25nZXIg dGhhbiBsaW1pdAotKiB+UG9wdWxhck5lYXJieSBwbHVnaW46IHNhbWUgYXMgdGhlIGNsYXNzaWMg bW9zdCBwb3B1bGFyIGZvb3RlcgotKiBmb3JtYXR0ZWQgc2luZ2xlLWxpbmUgcGx1Z2lucyBzdXBw b3J0ZWQKLSogUmVsYXRlZENoYW5nZXMgcGx1Z2luOiBvbmx5IHRob3NlIHdoaWNoIGFyZSBsaW5r cyBhdCB0aGUgY3VycmVudCBwYWdlCi0qIG5ldyB+R29vZ2xlTGluayBwcmVmOiBhZGQgIn5bR10i IGxvb2t1cCBvbiB1bmtub3duIGxpbmtzCi0qIGFkZGVkIGNoaW5lc2UgbGFuZ3VhZ2Ugc3VwcG9y dCwgYnkgWWFuLXJlbiBUc2FpIChkcnVyeWwpCi0qIGFkZGVkIG1pc3NpbmcgTWFjT1NYIGJ1dHRv bnMsIGJ5IENhcnN0ZW4gS2xhcHAuCi0qIG5ldyBDcmFvIHRoZW1lIGZyb20gaHR0cDovL3dpa2ku Y3Jhby5uZXQsIGJ5IEFybmF1ZCBGb250YWluZSBhbmQgTGF1cmVudCBMdW5hdGkKLSogZXh0ZW5k ZWQgUGhwV2lraTpJbmxpbmVJbWFnZXMgbWFya3VwIChzaXplLCBib3JkZXIsIC4uLikKLQotPT0g MS4zLjktcDEgTWF5LDUgMjAwNCwgUmVpbmkgVXJiYW4gPT0KLQotQnVnZml4IHBhdGNoIGZvciB0 aGUgZm9sbG93aW5nIDEuMy45IHByb2JsZW1zOgotKiBEZWZhdWx0IHBlcm1pc3Npb25zIG5vdCBo b25vcmVkLiBFdmVyeWJvZHkgd2FzIGFibGUgdG8gZWRpdC4KLSogc2V0IFVzZXJQcmVmZXJlbmNl cyBmb3IgYm9vbCBhbmQgaW50IGZpeGVkCi0qIGRiYSBvcGVuIHByb2JsZW1zIGltcHJvdmVkCi0q IHNlc3Npb24gdHJhbnNwb3J0YXRpb24gaW1wcm92ZWQsIG5vIGRiIG9iamVjdHMgc3RvcmVkCi0q IHBocC00LjAuNiBzdXBwb3J0IHJlLWVuYWJsZWQgKHN1cGVyZ2xvYmFscywgYXJyYXlfa2V5X2V4 aXN0cykKLSogfldpa2lBZG1pblJlbW92ZSBkZWxldGVkIHRvbyBtYW55IGlmIGFyZ3MgcGFzc2Vk IGZyb20gV2lraUFkbWluU2VsZWN0Ci0qIH5QYWdlR3JvdXAgc3VwcG9ydCBmb3IgfltsaW5rc10g YW5kIHN1YnBhZ2VzCi0qIGRpc2FibGVkIGRlZmF1bHQgZGJhIHNlc3Npb25zLCBicm9rZW4hCi0q IH5IdHRwQ2xpZW50IGZpeGVzIGZvciBvbGRlciBwaHAncwotKiB+UnNzRmVlZCBmb3IgYWxsb3df dXJsX2ZvcGVuPWZhbHNlLCBJTUFHRSBzdXBwb3J0LCBlbXB0eSBJVEVNIGxpc3QKLQotPT0gMS4y LjQgKHRoZSBvbGQtc3RhYmxlIHZlcnNpb24pIE1heSwgNCAyMDA0LCBSZWluaSBVcmJhbiA9PQot KiBpbXByb3ZlcyBwb3NzaWJsZSBkZWFkbG9ja3MgaW4gREJBLAotKiBmaXhlcyBwcm9ibGVtcyB3 aXRoIERCQSBvcGVuIGZhaWx1cmVzLgotCi09PSAxLjIuMyAodGhlIG9sZC1zdGFibGUgdmVyc2lv bikgQXByLCAyOSAyMDA0LCBSZWluaSBVcmJhbiA9PQotKiBhZGRlZCB0aGUgbW9zdCBwb3B1bGFy IGZvb3RlciBmb3IgZGJhCi0qIGFkZGVkIHJlbW92ZSBmb3IgZGJhCi0qIGZpeGVkIGEgd2Fybmlu ZyBvbiBpbmZvIHBhZ2UKLQotPT0gMS4zLjkgQXByLCAxMiAyMDA0LCBSZWluaSBVcmJhbiA9PQot Ci1CdWdmaXggcmVsZWFzZSBmb3IgdGhlIGZvbGxvd2luZyAxLjMuOCBwcm9ibGVtczoKLSogc3lu dGF4IGVycm9ycyBpbiBsaWIvcGx1Z2luL35VcExvYWQucGhwCi0qIHN5bnRheCBlcnJvcnMgaW4g bGliL3BsdWdpbi9+V2lraUFkbWluUmVtb3ZlLnBocAotKiBzeW50YXggZXJyb3IgaW4gc2NoZW1h cy9teXNxbC5zcWwKLSogc2V2ZXJhbCBwYXRoIGlzc3VlcyAoY2Fubm90IGZpbmRmaWxlLi4uKSwg d2hpY2ggd2VyZSBjYXVzZWQKLSAgYnkgYSBjaGRpciBmb3IgYmluZHRleHRkb21haW4gaW4gbGli L2NvbmZpZy5waHAuCi0gICAgRmFpbGVkIG9wZW5pbmcgcmVxdWlyZWQgJ2xpYi9zdGRsaWIucGhw JywKLSAgICB0ZW1wbGF0ZXMvaHRtbC50bXBsOiBub3QgZm91bmQsIGFuZCBtb3JlCi0qIGFkZGVk IHNlbGYtcmVnaXN0cmF0aW9uIGZvciB+RGJQYXNzVXNlcgotKiBhZGRlZCB+R29UbyBwbHVnaW4s IH5SYXRlSXQgYWN0aW9uIHBhZ2UKLQotPT0gMS4zLjggSmFuLUFwciAyMDA0LCBSZWluaSBVcmJh biA9PQotCi1FeHRlcm5hbCBwbHVnYWJsZSBhdXRoZW50aWNhdGlvbiwgREIgcHJlZnMgYW5kIHNl c3Npb25zLAotc29tZSBtb3JlIGZpeGVzLCBkb2NzLCB0aGVtZXMgYW5kIHBsdWdpbnMuCi0KLSog bmV3IH5XaWtpVXNlck5ldyBjbGFzcyAoc3RhcnRlZCBieSBDYXJzdGVuIEtsYXBwKSwKLSogbmV3 IFByZWZlcmVuY2VzIChvcHRpb25hbGx5IGZyb20gREIsIG5vIGNvb2tpZXMgYW55bW9yZSkKLSog aW1wcm92ZWQgREJfU2Vzc2lvbiAoYWRkZWQgQURPREIgKyBkYmEgc3VwcG9ydCwKLSAgV2hvSXNP bmxpbmUgc3VwcG9ydCkKLSogZW5hYmxlZCB+V2lraUdyb3VwIChKb2J5IFdhbGtlciBhbmQgUmVp bmkgVXJiYW4pCi0qIG5ldyBpbmRpdmlkdWFsIH5QYWdlUGVybWlzc2lvbnMgKGVuYWJsZWQsIGJ1 dCBub3QgeWV0IGVuZm9yY2VkKQotKiBuZXcgfldpa2lBZG1pblJlbmFtZSwgfldpa2lBZG1pblNl YXJjaFJlcGxhY2UsIH5XaWtpQWRtaW5TZXRBY2wKLSogc2V2ZXJhbCBvdGhlciBuZXcgcGx1Z2lu czogfldpa2lQb2xsLCBXaG9Jc09ubGluZSwKLSAgfkNyZWF0ZVRvYyAoZXhwZXJpbWVudGFsKSwg fkFkZENvbW1lbnQsCi0gIF9+V2lraVRyYW5zbGF0aW9uIGFuZCB+VHJhbnNsYXRlVGV4dCwgfk5v Q2FjaGUsCi0gIH5VcExvYWQgKGJ5IE5hdGhhbiBHYXNzLCBxdWJpdCBhbmQgUmVpbmkgVXJiYW4p LAotICB+SW5jbHVkZVNpdGVNYXAgKGJ5IGN1dGhiZXJ0Y2F0IGFuZCBSZWluaSBVcmJhbiksCi0g IH5SaWNoVGFibGUgKGJ5IFNhbWVlciBELiBTYWhhc3JhYnVkZGhlKSwKLSAgfkNyZWF0ZVBhZ2Ug YW5kIH5SYXRlSXQgKGJ5IERhbiBGcmFua293c2tpKSwKLSAgflJzc0ZlZWQgKGJ5IEFybmF1ZCBG b250YWluZSkKLSogYWRkZWQgfkludGVyV2lraSBpbWFnZSBidXR0b24gc3VwcG9ydAotKiBhZGRl ZCBKYXBhbmVzZSBsYW5ndWFnZSBzdXBwb3J0IChieSBUYWRhc2hpIEpva2FnaSkKLSogYWRkZWQg c3FsaXRlIHN1cHBvcnQgKHRoYW5rcyB0byBNYXR0aGV3IFBhbG1lcikKLSogYWRkZWQgdGhlbWUg YW5kIHBsdWdpbi1zcGVjaWZpYyB+UGFnZUxpc3QgY29sdW1uIHR5cGVzIGFuZCB0aGVtZS1zcGVj aWZpYyBVc2VyUHJlZmVyZW5jZXMKLSogYWRkZWQgfkVtYWlsVmVyaWZpY2F0aW9uIGFuZCB+UGFn ZUNoYW5nZU5vdGlmaWNhdGlvbiAoZXhwZXJpbWVudGFsKQotKiBhZGRlZCBuZXcgc2Vzc19pcCBj b2x1bW4gKERCX1Nlc3Npb24pIGZvciBpcC1iYXNlZCByb2JvdCB0aHJvdHRsaW5nCi0KLSogUGVh ciBEQiB1cGRhdGUsIG1pbm9yIHBlcmZvcm1hbmNlIGltcHJvdmVtZW50IGZvciBQZWFyREIKLSog flBhZ2VMaXN0OiBlbmhhbmNlZCBzb3J0YnkgKyBsaW1pdCBzdXBwb3J0LCBzb3J0YWJsZSBncmlk YnV0dG9ucyBlbmZvcmNlZCwgY2xlYW51cC4KLSogbWlub3IgdGhlbWUvZGVmYXVsdCBvdmVyaGF1 bCwgbmV3IHRoZW1lL3NtYWxsZXIsIG5ldyBleHBlcmltZW50YWwgdGhlbWUvd2lraWxlbnMKLSog bmV3IHRoZW1lL1dvcmRwcmVzcyBieSBNaWtlIFBpY2tlcmluZwotKiB1cGRhdGVkIHRoZW1lL1Np ZGViYXI6IGJveCBtZXRob2RzLCBmYXN0IGpzY2FsZW5kYXIgYW5kIGVhc2llciB0byBjdXN0b21p emUKLSogbW9yZSB+T2xkU3R5bGVUYWJsZSBhcmd1bWVudHMsIH5QaG90b0FsYnVtIGxvY2FsIGZz IHN1cHBvcnQKLSogcHJlbGltaW5hcnkgYWN0aW9uPXVwZ3JhZGUgKFRvIGltcG9ydCBuZXcgcGdz cmMgcGFnZXMgb25seSB5ZXQuIG5vdCBmb3IgREIpCi0qIHByZWxpbWluYXJ5IFNPQVAgc3VwcG9y dAotKiBhZGRlZCB+UGRmT3V0cHV0IGxpYnJhcmllcwotKiBleHBlcmltZW50YWwgamF2YXNjcmlw dCBTZWFyY2gmUmVwbGFjZSBlZGl0IGJ1dHRvbnMKLSogZXhwZXJpbWVudGFsIG9sZC1icm93c2Vy IGNvbXBhdGliaWxpdHkgY29kZS4KLSogZml4ZWQgV2lraUFkbWluU2VsZWN0LCB+V2lraUFkbWlu UmVtb3ZlCi0qIGZpeGVkIGFuZCBpbXByb3ZlZCBYSFRNTCBkdW1wcyAoY3NzLCBpbWFnZXMsIHVu bGlua2VkIHBhZ2VzLCBcclxyXG4gaXNzdWUpCi0qIGZpeGVkIEFET0RCIGxpbWl0IHByb2JsZW0s IGZpeGVkIGRiYSBvbiBXaW5kb3dzIFBIUCA0LjMueAotKiBmaXhlZCB+QmxvY2tQYXJzZXIgcHJv YmxlbSB3aXRoICIwIiBhcyB0ZXh0Ci0qIGZpeGVkIH5VbmZvbGRTdWJwYWdlcyBzb3J0YnkKLSog Zml4ZXMgZm9yIFBIUDUgY29tcGF0aWJpbGl0eSBzdGFydGVkCi0qIGZpeGVkIGdldHRleHQsIHNl dGxvY2FsZSBhbmQgdXBkYXRlX2xvY2FsZSBwcm9ibGVtcwotCi09PSAxLjMuNCB1bnRpbCAxLjMu NywgMjAwMi0yMDAzIEplZmYsIENhcnN0ZW4gYW5kIFN0ZXZlIFdhaW5zdGVhZCA9PQotCi0qIHNl dmVyYWwgc3RhYmxlIHJlbGVhc2VzIHdpdGggYmV0dGVyIGRvY3VtZW50YXRpb24gKG1vc3QgcGx1 Z2lucykgYW5kIHZhcmlvdXMgYnVnZml4ZXMuCi0qIH5FZGl0TWV0YURhdGEgKGJ5IE1pY2hhZWwg VmFuIERhbSkgZm9yIGV4YW1wbGUuIChmb3Jnb3Qgd2hhdCBlbHNlIHdhcyBuZXcpCi0qIEpvY2hl biBLYWxtYmFjaCdzIG5ldyB+VXNlckZpbGVNYW5hZ2VtZW50IGFuZCB+VXNlclJlZ2lzdHJhdGlv biBkaWRuJ3Qgd2VudCB1cHN0cmVhbS4KLSAgKHBlcnNvbmFsIHVwbG9hZHMsIC4uLikKLQotPT0g MS4zLjMgZWFybHkgMjAwMiwgSmVmZiBzdHJpa2VzIGJhY2ssIHdpdGggdGhlIGhlbHAgb2YgQ2Fy c3RlbiBLbGFwcCA9PQotCi0qIG1ham9yIGZlYXR1cmUgZW5oYW5jZW1lbnRzOgotKiBDYWNoZSBh bGwgb3V0cHV0IGFuZCB1c2UgYSBjbGV2ZXIgcGFnZSBjYWNoZS4gR2V0IHJpZCBvZiBwbHVnaW4t aGVhZC4KLSogbmV3IH5QYWdlVHlwZSBjbGFzcy4gRm9ybWF0dGVyIGFuZCBTZWFyY2ggZW5naW5l IHJld3JpdGUuCi0qIFZhbGlkYXRvcgotKiBicm9rZSBzZXZlcmFsIG9sZGVyIHBsdWdpbnM6IElu dGVyV2lraVNlYXJjaCwgV2lraUFkbWluU2VsZWN0LiBicm9rZSBpbWFnZSBidXR0b25zCi0qIENh cnN0ZW4gS2xhcHAncyBiZWxvdmVkIE1hYyBPUyBYIHRoZW1lLCBidXR0b24gZmFjdG9yeSBhbmQg Q1NTIHdpemFyZHJ5IGluIGdlbmVyYWwuCi0qIFhIVE1MIGR1bXBzLCBXaWtpQmxvZyBhcyBwYWdl IHR5cGUuCi0qIFBsdWdpbk1hbmFnZXIgYW5kIHNldmVyYWwgbW9yZSBwbHVnaW5zLgotCi09PSAx LjMuMiBlYXJseSAyMDAyLCBSZWluaSBVcmJhbiBzdHJpa2VzOiA9PQotCi0qIFN0YXJ0IG9mIGV4 dGVybmFsIGF1dGhvcmlzYXRpb24gaW4gdGhlIGNvbmZpZywgYnV0IG5vdCBpbiBjb2RlLgotKiBT dG9yZSBQcmVmZXJlbmNlcyBpbiB0aGUgdXNlcnMgflBlcnNvbmFsUGFnZSAoSmVmZikKLSogU2Vz c2lvbnMgaW4gREIsIHBlYXIgREIgdXBkYXRlCi0qIGNvbmNlcHQgb2YgU3VicGFnZXMsIH5VbmZv bGRTdWJwYWdlcywgflNpdGVNYXAsIEFsbFBhZ2VzLCBBbGxVc2VycywgLi4uCi0qIH5QYWdlTGlz dCAoSmVmZiBhbmQgUmVpbmkpCi0qIFNldmVyYWwgbmV3IHBsdWdpbnM6IH5SZWRpcmVjdFRvLCBw bHVnaW4taGVhZCBhcmNoaXRlY3R1cmUuCi0gIE5vcm1hbGl6ZSB0ZW1wbGF0ZSBuYW1lcy4gV2lr aUFkbWluU2VsZWN0IGFyY2hpdGVjdHVyZTogfldpa2lBZG1pblJlbW92ZQotKiB+VmlzdWFsV2lr aSwgflRleFRvUG5nLCB0ZXh0MnBuZyArIHNldmVyYWwgY2FjaGVkIHBsdWdpbnMgKGJ5IEpvaGFu bmVzIEdyb8OfZSkKLSogflBocFdlYXRoZXIgKD8pLCB+UHJldk5leHQsIGltYWdlIGJ1dHRvbnMs Ci0qIH5JbmNsdWRlUGFnZSAoSm9lIEVkZWxtYW4pLCB+RnJhbWVJbmNsdWRlIChSZWluaSksIFRy YW5zY2x1ZGUgKEplZmYpCi0qIENhbGVuZGFyIChjb250cmlidXRlZCBieSA/KSwgfkNhbGVuZGFy TGlzdCwgV2lraUJsb2csIC4uLgotCi0uLi4uIGEgc21hbGwgaG9sZSBoZXJlIC4uLi4gKHRocmVl IHllYXJzIG5vIGRldGFpbGVkIEhJU1RPUlkuIHNlZSB0aGUgb3V0bGluZSBhYm92ZSkKLQotPT0g SmVmZnMgSGFja3MgPT0KLQotKiBOZXcgZGF0YWJhc2UgQVBJLiAgU2VlID1saWIvV2lraURCLnBo cD0gYW5kID1saWIvV2lraURCL2JhY2tlbmQucGhwPQotICBmb3IgdGhlIGJ1bGsgb2YgdGhlIGRv Y3VtZW50YXRpb24gb24gdGhpcy4gIFRoZSBuZXcgZGF0YWJhc2UgY2FuCi0gIHNhdmUgbXVsdGlw bGUgYXJjaGl2ZWQgdmVyc2lvbnMgb2YgZWFjaCBwYWdlLiAgQSBtZWNoYW5pc20gZm9yCi0gIHB1 cmdpbmcgYXJjaGl2ZWQgcmV2aXNpb25zIGlzIG5vdyBpbiBwbGFjZSBhcyB3ZWxsLiAgU2VlIHRo ZQotICAkfkV4cGlyZVBhcmFtcyBzZXR0aW5nIGluID1pbmRleC5waHA9LCBhbmQgPWxpYi9+QXJj aGl2ZUNsZWFuZXIucGhwPQotICBmb3IgZGV0YWlscy4gIEF0IHRoaXMgcG9pbnQsIHRoZSBEQkEs IE15U1FMIGFuZCBQb3N0Z3JlcyBiYWNrZW5kcwotICBhcmUgZnVuY3Rpb25hbC4gIFRoZSBEQkEg YmFja2VuZCBjb3VsZCB1c2Ugc29tZSBwZXJmb3JtYW5jZQotICBvcHRpbWl6YXRpb24uICBUaGUg d2hvbGUgQVBJIGlzIHN0aWxsIHN1YmplY3QgdG8gc29tZSBjaGFuZ2UgYXMgSQotICBmaWd1cmUg b3V0IGEgY2xlYW4gd2F5IHRvIHByb3ZpZGUgZm9yIGEgdmFyaWV0eSBvZiAobm90IGFsbCBmb3Jz ZWVuKQotICBtZXRob2RzIG9mIGluZGV4aW5nIGFuZCBzZWFyY2hpbmcgdGhlIHdpa2kuCi0qIE5l dyB+V2lraVBsdWdpbiBhcmNoaXRlY3R1cmUuCi0qIE5ldyB0ZW1wbGF0ZSBlbmdpbmUuICBUaGlz IG5lZWRzIHRvIGJlIGRvY3VtZW50ZWQgZnVydGhlciwgYnV0LCBmb3IKLSAgbm93LCBzZWUgPWxp Yi9UZW1wbGF0ZS5waHA9LiAgT24gc2Vjb25kIHRob3VnaHQsIGRvbid0Ci0gICg9bGliL1RlbXBs YXRlLnBocD0gZGVzcGVyYXRlbHkgbmVlZHMgcmVmYWN0b3JpbmcsIHN0aWxsLikgIFRoZQotICBi YXNpYyBhZHZhbmNlIGlzIHRoYXQgUEhQNCdzID1vYl8qKCk9IGZ1bmN0aW9ucyBjYW4gYmUgdXNl ZCB0bwotICBjYXB0dXJlIG91dHB1dCBmcm9tIGNvZGUgdGhhdCBpcyBydW4gdGhyb3VnaCA9ZXZh bCgpLiAgVGhpcyBhbGxvd3MKLSAgdGhlIHRlbXBsYXRlcyB0byBiZSBQSFAgY29kZS4uLgotKiBF ZGl0IHByZXZpZXcgYnV0dG9uIG9uIHRoZSBlZGl0IHBhZ2UuICBOb3cgeW91IGNhbiBzZWUgd2hh dCB5b3VyCi0gIGVkaXRzIGxvb2sgbGlrZSBiZWZvcmUgY29tbWl0dGluZyB0aGVtLgotKiBSZXdv cmtlZCB0aGUgc3R5bGUtc2hlZXRzLiAgSSBzdGlsbCBuZWVkIHRvIGNsZWFuIHRoaXMgdXAgc29t ZSBtb3JlLgotICBJIHdvdWxkIGFwcHJlY2lhdGUgY29tbWVudHMgYW5kIGJ1ZyByZXBvcnRzIG9u IGl0LiAgU28gZmFyIEkndmUgb25seQotICB0ZXN0ZWQgdGhlIG5ldyBzdHlsZSBzaGVldHMgd2l0 aCBOZXRzY2FwZSA0Ljc3IGFuZCBNb3ppbGxhIDAuOS4zCi0gIChib3RoIHJ1bm5pbmcgdW5kZXIg TGludXguKQotKiBFeHBhbmRlZCBzeW50YXggZm9yIHRleHQgc2VhcmNoLCBTZWFyY2hlcyBsaWtl ICJ3aWtpIG9yIHdlYiAtcGFnZSIKLSAgKG9yICIod2lraSBvciB3ZWIpIGFuZCBub3QgcGFnZSIp IHdpbGwgbm93IGRvIG1vcmUtb3ItbGVzcyB3aGF0IHRoZXkKLSAgbG9vayBsaWtlIHRoZXknbGwg ZG8uCi0qIFNlY3VyaXR5IElzc3VlczogflBocFdpa2kgd2lsbCBub3cgd29yayB3aXRoIFBIUCdz ID1yZWdpc3Rlcl9nbG9iYWxzPQotICBzZXQgdG8gb2ZmLgotCi09PSAxLjMueCBkZXZlbG9wbWVu dCBicmFuY2ggPT0KLQotKiBQYWdlbmFtZXMgaW4gPVBBVEhfSU5GTz0uCi0qIEZpbGUgdXBsb2Fk czogc2VlIFBocFdpa2lBZG1pbmlzdHJhdGlvbi4KLSogVXNlclByZWZlcmVuY2VzLgotKiBVZ2x5 IH5NYWdpY1BocFdpa2lVUkxzIGZvciBhZG1pbmlzdHJhdGl2ZSBsaW5rcy4KLQotPT0gMS4yID09 Ci0KLSogRGF0YWJhc2Ugc3VwcG9ydCBmb3IgTXlTUUwsIFBvc3RncmVzcWwsIG1TUUwsIGZsYXQg ZmlsZSBhbmQgdGhlIG5ldwotICBkYmFfIGxpYnJhcnkgaW4gUEhQNCBpcyBpbmNsdWRlZC4KLSog SW50ZXJuYXRpb25hbGl6YXRpb246IHN1cHBvcnQgZm9yIGRpZmZlcmVudCBsYW5ndWFnZXMsIGRv d24gdG8gdGhlCi0gIHNvdXJjZSBsZXZlbCwgaXMgaW5jbHVkZWQuIEdlcm1hbiwgU3BhbmlzaCwg U3dlZGlzaCBhbmQgRHV0Y2ggYXJlCi0gIGN1cnJlbnRseSBzaGlwcGVkIHdpdGggflBocFdpa2ku IEFuIGFyY2hpdGVjdHVyZSBpcyBpbiBwbGFjZSB0bwotICBlYXNpbHkgYWRkIG1vcmUgbGFuZ3Vh Z2VzLgotKiBOZXcgbGlua2luZyBzY2hlbWVzIHVzaW5nIHNxdWFyZSBicmFja2V0cyBpbiBhZGRp dGlvbiB0byB0aGUgb2xkCi0gIHN0eWxlIH5CdW1weVRleHQuCi0qIEFkbWluaXN0cmF0aW9uIGZl YXR1cmVzIGluY2x1ZGUgcGFnZSBsb2NraW5nLCBkdW1waW5nIHRoZSBXaWtpIHRvIGEKLSAgemlw IGZpbGUsIGFuZCBkZWxldGluZyBwYWdlcy4KLSogQSBNb3N0UG9wdWxhciBwYWdlIHNob3dpbmcg dGhlIG1vc3QgZnJlcXVlbnRseSBoaXQgcGFnZXMuCi0qIEZ1bGwgSFRNTCBjb21wbGlhbmNlLgot KiBMaW5rcyBhdCB0aGUgYm90dG9tIG9mIHBhZ2VzIGRlc2NyaWJpbmcgcmVsYXRpb25zaGlwcyBs aWtlIGluY29taW5nCi0gIGxpbmtzIGZyb20gb3RoZXIgcGFnZXMgYW5kIHRoZWlyIGhpdHMsIG91 dGdvaW5nIGFuZCB0aGVpciBoaXRzLCBhbmQKLSAgdGhlIG1vc3QgcG9wdWxhciBuZWFyYnkgcGFn ZXMuCi0qIENvbG9yIHBhZ2UgZGlmZnMgYmV0d2VlbiB0aGUgY3VycmVudCBhbmQgcHJldmlvdXMg dmVyc2lvbi4KLSogQW4gaW5mbyBwYWdlIHRvIHZpZXcgcGFnZSBtZXRhZGF0YS4KLSogRmFyIG1v cmUgY3VzdG9taXphdGlvbiBjYXBhYmlsaXR5IGZvciB0aGUgYWRtaW4uCi0qIEEgdGVtcGxhdGlu ZyBzeXN0ZW0gdG8gc2VwYXJhdGUgdGhlIHBhZ2UgSFRNTCBmcm9tIHRoZSBQSFAgY29kZS4KLSog TmV3IG1hcmt1cCBjb25zdHJ1Y3RzIGZvciA9PEI+PSwgPTxJPj0sID08REQ+PSwgPTxCUj49IGFu ZCBtb3JlLgotKiBUYWJsZXNzIG1hcmt1cCB0byBzdXBlcmNlZGUgdGhlIG9sZGVyIG1hcmt1cCAo Ym90aCBzdGlsbCBzdXBwb3J0ZWQpLgotCi09PSAxLjEuOSA9PQotCi1+UGhwV2lraSAxLjEuOSBp bmNsdWRlcyBTcGFuaXNoIGxhbmd1YWdlIHBhZ2VzLCBhIGZ1bGwgaW1wbGVtZW50YXRpb24KLWZv ciBQb3N0Z3Jlc3FsLCBudW1lcm91cyBidWcgZml4ZXMgYW5kIG1vcmUuIFNlZSB0aGUgPUhJU1RP Ulk9IGZpbGUKLWZvciBtb3JlIGluZm86IGh0dHA6Ly9waHB3aWtpLnNvdXJjZWZvcmdlLm5ldC9w aHB3aWtpL0hJU1RPUlkKLQotPT0gMS4xLjYgPT0KLQotflBocFdpa2kgMS4xLjYgaXMgYSBtYWpv ciByZXZpc2lvbiBvZiB+UGhwV2lraS4gVGhlIGFiaWxpdHkgdG8gaGF2ZQotdGhlbWVzICh2aWEg YW4gZWFzeS10by1lZGl0IHRlbXBsYXRlIHN5c3RlbSkgaGFzIGJlZW4gYWRkZWQ7IHRoZQotc2No ZW1hIGZvciBNeVNRTCBoYXMgYmVlbiBjb21wbGV0ZWx5IG92ZXJoYXVsZWQsIGJyZWFraW5nIHRo ZSBwYWdlCi1kZXRhaWxzIGludG8gY29sdW1ucyAoZm9yIGVmZmljaWVuY3kgd2UgYWdyZWVkIG5v dCB0byBwdXQgcmVmZXJlbmNlcwotaW4gYSBzZXBhcmF0ZSB0YWJsZSwgc28gaXQncyBub3QgY29t cGxldGVseSBub3JtYWxpemVkLiAiRG9uJ3QgbGV0IHRoZQotYmVzdCBiZSB0aGUgZW5lbXkgb2Yg dGhlIGdvb2QuIikKLQotUG9zdGdyZXNxbCBzdXBwb3J0IGhhcyBiZWVuIGFkZGVkIGFuZCB0aGUg bWFya3VwIGxhbmd1YWdlIGlzIGV2b2x2aW5nLCBub3cgYWxsb3dpbmcgISEhIGZvciA8aDI+LCAh ISBmb3IgPGgzPiwgISBmb3IgPGg0PiB0YWdzIGFuZCB+X19hIG5ldyB3YXkgdG8gbWFrZSB0ZXh0 IGJvbGRfXywgYW5kIG9mIGNvdXJzZSB0aGUgfltuZXcgbGlua2luZyBzY2hlbWVdLgotCi1UaGVy ZSBpcyBhIG5ldyBmZWF0dXJlIG9uIGFsbCBwYWdlcyBjYWxsZWQgLy9tb3JlIGluZm8vLyB0aGF0 IGdpdmVzCi15b3UgYSBsb3cgbGV2ZWwgZGV0YWlsZWQgdmlldyBvZiBhIHBhZ2UsIHdoaWNoIGlz IHByb2JhYmx5IG1vcmUgdXNlZnVsCi1mb3IgZGVidWdnaW5nIHRoYW4gYW55dGhpbmcuCi0KLUFz IHdlIG1vdmUgdG93YXJkcyBhIDEuMiByZWxlYXNlIHdlIHdpbGwgYmUgYWRkaW5nIGxvZ2dpbmcs IHRvcCB0ZW4KLW1vc3QgYWN0aXZlIHBhZ2VzIGFuZCBvdGhlciBuZXcgZmVhdHVyZXMgd2l0aCB0 aGUgbmV3IGRhdGFiYXNlIHNjaGVtYQotKGFuZCB5ZXMsIHRoZXNlIGZlYXR1cmVzIHdpbGwgbWFr ZSBpdCBpbnRvIHRoZSBEQk0gdmVyc2lvbiB0b28pLiBJCi1hbHNvIHdhbnQgdG8gYWRkIG1TUUwg c3VwcG9ydCBhbmQgdGVzdCBpdCB1bmRlciBaZW5kLCB0aGUgbmV3IFBIUDQuCi0KLT09IDEuMC4z ID09Ci0KLUJlbG93IGFyZSB0aGUgcmVsZWFzZSBub3RlcyBmb3IgdmVyc2lvbiAxLjAzLCB0aGUg bGFzdCByZWxlYXNlIG9mIHRoZQotMS4wIH5QaHBXaWtpIHNlcmllcy4KLQotLS1TdGV2ZSBXYWlu c3RlYWQsIG1haWx0bzpzd2FpbkBwYW5peC5jb20KLQotflBocFdpa2kgd2FzIHdyaXR0ZW4gYmVj YXVzZSBJIGFtIHNvIGludGVyZXN0ZWQgaW4gfldpa2lXaWtpV2VifnMsIGFuZCBJCi1oYXZlbid0 IHVzZWQgUEhQIHNpbmNlIHZlcnNpb24gMi4wLiBJIHdhbnRlZCB0byBzZWUgaG93IGl0IGhhZAot YWR2YW5jZWQuCi0KLVZlcnNpb24gMS4wIGlzIGEgbmVhci1wZXJmZWN0IGNsb25lIG9mIHRoZSBQ b3J0bGFuZCBQYXR0ZXJuCi1SZXBvc2l0b3J5LCBodHRwOi8vYzIuY29tL2NnaS1iaW4vd2lraT9X aWtpV2lraVdlYi4gSW4gdHJ1dGgsIEkgd2FzCi11c2luZyB0aGUgV2lraSBzY3JpcHQgeW91IGNh biBkb3dubG9hZCBmcm9tIHRoZXJlIGFzIGEgbW9kZWw7IHRoYXQKLVdpa2kgbGFja3MgYSBudW1i ZXIgb2YgZmVhdHVyZXMgdGhlIFBQUiBoYXMsIGxpa2UgfkVkaXRDb3B5LiBTbyBpbgotdHJ1dGgg flBocFdpa2kgaXMgYSBraW5kIG9mIGh5YnJpZCBvZiB0aGUgUFBSIGFuZCB0aGUgZ2VuZXJpYyBX aWtpIHlvdQotY2FuIGdldCBmcm9tIHRoZXJlICh3aGljaCBpcyB3cml0dGVuIGluIFBlcmwpLgot Ci1UaGUgb25lIGNhdmVhdCBvZiB+UGhwV2lraSBpcyB0aGUgYWxsb3dhbmNlIG9mIEhUTUwgaWYg dGhlIGxpbmUgaXMKLXByZWNlZGVkIGJ5IGEgYmFyIChvciBwaXBlLCB3aGljaCBpcyBob3cgSSB1 c3VhbGx5IHNheSBpdCkuIChUaGF0J3MgYQotJz18PScpLiBJdCB3YXMgdmVyeSBzaW1wbGUgdG8g YWRkLCBhbmQgdGhlIGlkZWEgY2FtZSBmcm9tIGEgcG9zdGluZwotc29tZXdoZXJlIG9uIHRoZSBQ UFIgYWJvdXQgaG93IEFUJlQgaGFkIGFuIGludGVybmFsIFdpa2kgY2xvbmUgYW5kCi11c2VkIHRo ZSBzYW1lIHRlY2huaXF1ZS4gVGhlIGFiaWxpdHkgdG8gZW1iZWQgSFRNTCBpcyBkaXNhYmxlZCBi eQotZGVmYXVsdCBmb3Igc2VjdXJpdHkgcmVhc29ucy4KLQotVmVyc2lvbiAxLjAxIGluY2x1ZGVz IGEgcGF0Y2ggdGhhdCBmaXhlcyBhIHNtYWxsIGVycm9yIHdpdGggcmVuZGVyaW5nCi08aHI+IGxp bmVzLiBUaGFua3MgdG8gR2VycnkgQmFya3NkYWxlLgotCi1TZWUgdGhlICMjSElTVE9SWSMjIGZp bGUgZm9yIGEgcnVuZG93biBvbiB0aGUgd2hvbGUgZGV2ZWxvcG1lbnQgcHJvY2VzcwotaWYgdGhh dCBzb3J0IG9mIHRoaW5nIHJlYWxseSBpbnRlcmVzdHMgeW91IDotKQotCi0tLSBbW0hlbHA6U3Rl dmUgV2FpbnN0ZWFkfFN0ZXZlIFdhaW5zdGVhZF1dCi0KLS0tLS0KLVtbUGhwV2lraURvY3VtZW50 YXRpb25dXQorRGF0ZTogU2F0LCAxNSBGZWIgMjAyNSAyMzowNDoxMCArMDAwMAorTWltZS1WZXJz aW9uOiAxLjAgKFByb2R1Y2VkIGJ5IFBocFdpa2kgMS42LjUpCitDb250ZW50LVR5cGU6IGFwcGxp Y2F0aW9uL3gtcGhwd2lraTsKKyAgcGFnZW5hbWU9UmVsZWFzZU5vdGVzOworICBmbGFncz1QQUdF X0xPQ0tFRDsKKyAgYXV0aG9yPVRoZSUyMFBocFdpa2klMjBUZWFtOworICBjaGFyc2V0PVVURi04 CitDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiBiaW5hcnkKKworPDxDcmVhdGVUb2Mgd2l0aF90 b2NsaW5rfHw9MSBoZWFkZXJzfHw9MSwyLDMgd2lkdGg9MzAwcHggcG9zaXRpb249cmlnaHQ+Pgor Cis9PSAxLjYuNSAyMDI1LVhYLVhYIE1hcmMtRXRpZW5uZSBWYXJnZW5hdSwgQ2Fyc3RlbiBLbGFw cCA9PQorCisqIFVwZ3JhZGUgUEVBUiB0byByZWxlYXNlIDEuMTAuMTYsIFBFQVIgREIgdG8gcmVs ZWFzZSAxLjEyLjIKKyogUmVhZG1lIGZvciBiYXNpYyBXaW5kb3dzIDExIGluc3RhbGwgaW5zdHJ1 Y3Rpb25zLgorKiBDb21wbGV0ZSByZXdyaXRlIG9mIH5TcGFjZVdpa2kgdGhlbWUgdXNpbmcgbW9k ZXJuIGNzcy4KKyogcGFzc2VuY3J5cHQucGhwOiBJbXByb3ZlZCBwYXNzd29yZCBlbmNyeXB0aW9u IGFuZCByYW5kb20gcHcgZ2VuZXJhdGlvbi4KKyAgQWRkZWQgY29weSB0byBjbGlwYm9hcmQgYnV0 dG9ucy4KKyogVXBkYXRlZCAjIy5odGFjY2VzcyMjIGZpbGVzIHRvIHdvcmsgd2l0aCBBcGFjaGUg Mi40LiBXaWxsIHN0aWxsIHdvcmsgd2l0aAorICBvbGRlciB2ZXJzaW9ucyBidXQgcmVxdWlyZXMg bW9kX3ZlcnNpb24gbW9kdWxlIHdoaWNoIGlzIGF2YWlsYWJsZSBpbgorICBBcGFjaGUgMi4wLjU2 IGFuZCBsYXRlci4KKyogTWlub3IgdXBkYXRlcyB0byBIYXdhaWlhbiB0aGVtZSBhbmQgUG9ydGxh bmQgdGhlbWUuCisqIEZpeGVkIE1hY09TWCB0aGVtZSBidXR0b25zIG5vdCBsb2FkaW5nLCBvdGhl ciB2aXN1YWwgaW1wcm92ZW1lbnRzIGFuZAorICBSZWNlbnRDaGFuZ2VzIHVzZXMgYSB0YWJsZSBu b3cuCisqIEltcHJvdmVkIGZvcm1hdHRpbmcgb3V0cHV0IGZvciBkZWJ1Z2dpbmcsIGFkanVzdGVk IGNvZGUgZm9yIHRoZW1lcworICB3aGljaCBkZXBlbmQgb24gZGVmYXVsdCB0aGVtZS4gQWRkZWQg c2lnbmF0dXJlIHRlbXBsYXRlLiBUaGlzIGNhbiBiZQorICBkaXNhYmxlZCBieSBhZGRpbmcgdGhp cyBsaW5lIHRvIHRoZW1laW5mby5waHA6CisgICMjJHRoaXMtPmFkZEltYWdlQWxpYXMoJ3NpZ25h dHVyZScsIGZhbHNlKTsjIworKiBBZGRlZCA0MDQgZXJyb3IgdG8gfkh0dHBDbGllbnQucGhwIHdo aWNoIGlzIGRpc3BsYXllZCBub3cgaW4KKyAgflBob3RvQWxidW1QbHVnaW4uIFJlbW92ZWQgdXJs IG9mIGRlZnVuY3QgZXhhbXBsZSB3ZWJzaXRlIHRoYXQgYnJva2UKKyAgUGhwV2lraU1hbnVhbC4K KyogKipJbXBvcnRhbnQgYnVnZml4IGZvciBQSFA4LjMgYW5kIG5ld2VyOioqIEZpeGVkIGdhcmJs ZWQgZGlzcGxheSBvZiBwYWdlcworICBkdWUgdG8gZGVwcmVjaWF0ZWQgZXJyb3JzLiBBbHNvIHRy eSBoYXJkZXIgdG8gc3VwcHJlc3MgZGVwcmVjaWF0ZWQgZXJyb3JzIG9uCisgIGFsbCBQSFAgdmVy c2lvbnMuIFNldCAjI0RFQlVHPTIjIyBpbiAjI2NvbmZpZy5pbmkjIyB0byB2aWV3IGRlcHJlY2lh dGVkCisgIGVycm9ycywgYW5kICMjREVCVUc9MSMjIGZvciBiYXNpYyBlcnJvcnMuIEFkZGVkIGhv b2tzIGZvciBjc3MgZm9ybWF0dGluZyBvZgorICBkZXByZWNpYXRlZCBlcnJvcnMuCisqIEltcHJv dmVtZW50cyBhbmQgYnVnZml4ZXMgdG8gbG9hZGluZyBhbmQgc2F2aW5nIHBhZ2VzIHRvIGZpbGVk dW1wczoKKyAgLSBmaXhlZCBkb3dubG9hZCBvZiBpbmRpdmlkdWFsIGR1bXAgZmlsZXMgc3RhbGxp bmcgaW4gY2hyb21lIChtdXN0IGFsd2F5cworICAgIGNsaWNrIHJlc3VtZSkuCisgIC0gZml4ZWQg cGFnZSBsb2NrIHN0YXR1cyBub3QgYWx3YXlzIGxvYWRpbmcsIGVzcGVjaWFsbHkgZm9yIHZpcmdp biB3aWtpLgorICAtIFNlY3VyaXR5OiBQcmV2ZW50ZWQgdW5sb2NraW5nIGV4aXN0aW5nIHBhZ2Ug d2hlbiBsb2FkaW5nIGR1bXBlZCBmaWxlCisgICAgd2l0aG91dCBsb2NrIGZsYWcuCisgIC0gU2Vj dXJpdHk6IFBhZ2UgaGl0cyBhbmQgYWNsIGFyZSBvbmx5IGxvYWRlZCB3aGVuIHBhZ2UgZG9lc24n dCBleGlzdCBpbgorICAgIGRhdGFiYXNlLiBUbyBkbyBhIGNvbXBsZXRlIHJlc3RvcmUgb2YgYSBw YWdlLCBkZWxldGUgaXQgZmlyc3QuCisgIC0gRml4ZWQgcGFnZSBtZXRhZGF0YSBjaGFuZ2VzIGlu Y29ycmVjdGx5IGJlaW5nIGFwcGxpZWQgdG8gZGF0YWJhc2Ugd2hlbgorICAgIGF0dGVtcHRpbmcg dG8gbG9hZCBhIGZpbGUgYW5kIGl0IHdhcyBza2lwcGVkLgorICAtIFdoZW4gYSBmaWxlIGlzIGxv YWRlZCB0aGUgc3RhdHVzIG5vdyByZXBvcnRzIHRoZSBsb2FkZWQgcGFnZSBsb2NrIHN0YXR1cy4K KyAgLSBSZW1vdmVkIGludmFsaWQgaHR0cCBoZWFkZXJzLgorICAtIEFkZGVkIGR1bXBzdm4gYWN0 aW9uLCBtYWlubHkgZm9yIGRldmVsb3BlcnMgYW5kIHRyYW5zbGF0b3JzIG9mIHBnc3JjIGZpbGVz LgorICAtIEZpeGVkIGZpbGVuYW1lcyBzb21ldGltZXMgbm90IGJlaW5nIHVybGVuY29kZWQgcHJv cGVybHkuCisgIC0gSW1wcm92ZWQgZmlsdGVyaW5nIG9mIHVua25vd24gcGFnZSBtZXRhZGF0YSBi ZWluZyBsb2FkZWQgaW50byBkYXRhYmFzZS4KKyAgLSBEdW1wZWQgcGFnZXMgbm93IHVzZSB1bml4 IGxpbmUgZW5kaW5ncyBpbnN0ZWFkIG9mIHdpbmRvd3MuIEltcG9ydCBvZiBmaWxlcworICAgIHdp dGggd2luZG93cyBsaW5lIGVuZGluZ3Mgc2hvdWxkIHN0aWxsIHdvcmsuCisqIGNvbmZpZ3VyYXRv ci5waHAgaXMgbm93IGluIGEgbGVzcy1icm9rZW4gc3RhdGUuIFVzZWFibGUgYnV0IG5lZWRzIG1v cmUgd29yay4KKworPT0gMS42LjQgMjAyNC0wMy0xMyBNYXJjLUV0aWVubmUgVmFyZ2VuYXUsIENo cmlzdG9mIE1lZXJ3YWxkID09CisKKyogVXBncmFkZSBQRUFSIHRvIHJlbGFzZSAxLjEwLjE0LCBQ RUFSIERCIHRvIHJlbGVhc2UgMS4xMi4xCisqIENoZWNrIGZvciAic2hlbGxfZXhlYyIgYmVmb3Jl IHVzaW5nIGl0IChDaHJpc3RvZiBNZWVyd2FsZCkKKyogSW1wcm92ZSBSU1MgKENocmlzdG9mIE1l ZXJ3YWxkKQorKiBBZGQgc3VwcG9ydCBmb3IgU1FMaXRlIGluIFBETywgYWRkIHN1cHBvcnQgZm9y IFNRTGl0ZTMgaW4gUEVBUiAoQ2hyaXN0b2YgTWVlcndhbGQpCisKKz09IDEuNi4zIDIwMjMtMTEt MTUgTWFyYy1FdGllbm5lIFZhcmdlbmF1ID09CisKK1RoaXMgaXMgYSBidWctZml4IHJlbGVhc2Uu CisKK0l0IGZpeGVzIGEgYnVnIGluIH5FeHRlcm5hbFJlZmVycmVyIHdpdGggUEhQIDguMi4KK1Jl cG9ydGVkIGJ5IFRob20gSmVlcmEuCisKKz09IDEuNi4yIDIwMjMtMDctMTMgTWFyYy1FdGllbm5l IFZhcmdlbmF1ID09CisKK1BocFdpa2kgMS42LjIgaXMgdGhlIGxhc3QgcmVsZWFzZSBjb21wYXRp YmxlIHdpdGggUEhQIDUuCitJdCBzaG91bGQgd29yayBmb3IgYWxsIFBIUCByZWxlYXNlcyBmcm9t IDUuMy4zIHRvIDguMi54LgorUGhwV2lraSAxLjcuMCB3aWxsIHJlcXVpcmUgYXQgbGVhc3QgUEhQ IDcuNC4KKworPT09IEZpeGVzID09PQorKiBNYWtlIHJlbmFtaW5nIG9mIHBhZ2VzIHdvcmsgZm9y IERBVEFCQVNFX1RZUEUgPSBQRE8gYW5kIGZpbGUuCisqIE1ha2UgV2FudGVkUGFnZXMgd29yayBm b3IgREFUQUJBU0VfVFlQRSA9IGRiYSBhbmQgZmlsZQorKiBCYWNrIGxpbmtzIG5vdyB3b3JrIHdo ZW4gdGhlIGxpbmsgaXMgaW5zaWRlIGEgdGFibGUsIGluIGEgdGVtcGxhdGUgb3IgaW4gYW4gaW5j bHVkZWQgcGFnZS4KKworPT09IE1pc2MgPT09CisqIEFkZCBTb3VyY2VGb3JnZSBPcGVuIFNvdXJj ZSBFeGNlbGxlbmNlIGJhZGdlIHRvIGZvb3RlcgorCis9PSAxLjYuMSAyMDIyLTAxLTI0IE1hcmMt RXRpZW5uZSBWYXJnZW5hdSA9PQorCitUaGlzIHJlbGVhc2UgbWFrZXMgflBocFdpa2kgY29tcGF0 aWJsZSB3aXRoIFBIUCA4LjEuCisjI1JFQURPTkxZIyMgaXMgcmVuYW1lZCBhcyAjI0lTUkVBRE9O TFkjIywgc2luY2UgIyNyZWFkb25seSMjIGlzIG5vdyBhIGtleXdvcmQgaW4gUEhQIDguMS4KKwor PT09IEZpeGVzID09PQorKiBNYWtlIGxpc3Qgb2YgcGFnZXMgd29yayB3aXRoIFBETyAofkFsbFBh Z2VzLCB+TW9zdFBvcHVsYXIuLi4pLgorKiBCZXR0ZXIgaGFuZGxpbmcgb2YgdGhlbWUgY2hhbmdl IGluIH5Vc2VyUHJlZmVyZW5jZXMuCisqIEluIERBVEFCQVNFX1RZUEUgPSBmaWxlLCBkbyBub3Qg dXBkYXRlIG1ldGFkYXRhIGlmIHBhZ2UgZG9lcyBub3QgZXhpc3QgKHJlcG9ydGVkIGJ5IEhhcm9s ZCBIYWxsaWthaW5lbikuCisqIE1ha2UgdGhlIHRvb2xiYXIgaW1hZ2UgYnV0dG9uIHdvcmsgd2hl biAjI1VQTE9BRF9VU0VSRElSIyMgaXMgc2V0LgorKiBibG9nIHRoZW1lIGltcHJvdmVkLgorCis9 PT0gQ2hhbmdlcyA9PT0KKyogV2FybiB1c2VyIHRoYXQgbGVhdmluZyB0aGUgcGFnZSB3aWxsIGxv c2UgbW9kaWZpY2F0aW9ucy4KKyogQWRkIGJ1dHRvbiB0byBjcmVhdGUgdGhlIHBhZ2UgaWYgaXQg ZG9lcyBub3QgZXhpc3QuCisqIFRPT0xCQVJfSU1BR0VfUFVMTERPV04gaXMgdHJ1ZSBieSBkZWZh dWx0LgorKiBSZW1vdmUgQURPREIgREFUQUJBU0VfVFlQRS4gVXNlIFNRTCAoUGVhcikgb3IgUERP LgorKiBBZGQg4oCcUmVuYW1l4oCdIHRhYiBpbiBTaWRlYmFyIHRoZW1lLgorKiBQYWdlIGxvY2tp bmcgYW5kIHVubG9ja2luZyBpcyBub3cgc2F2ZWQgaW4gcGFnZSBoaXN0b3J5IChpbiBFZGl0IG1v ZGUpLgorKiBBZGQgc2FtcGxlIGltYWdlcyBmb3IgflBob3RvQWxidW0gaW4gYmxvZyB0aGVtZS4K KyogUmVtb3ZlIEVESVRJTkdfUE9MSUNZCisqIFJlbW92ZSBFTkFCTEVfWEhUTUxfWE1MCisqIFJl bW92ZSBVU0VDQUNIRSwgYWx3YXlzIHRydWUKKyogTW9yZSB0cmFuc2xhdGlvbnMKKworPT09IFBs dWdpbnMgPT09CisqIENoYXJ0IHBsdWdpbjogbmV3IGFyZ3VtZW50IOKAnGxlZ2VuZOKAnQorKiBV cExvYWQgcGx1Z2luOiBhbGxvdyBtb3JlIGZpbGVuYW1lcyAoZS5nLiB3aXRoIENoaW5lc2UgY2hh cmFjdGVycykKKyogflByZWZlcmVuY2VzSW5mbyBwbHVnaW4gcmVtb3ZlZAorKiB+Q2F0ZWdvcnlQ YWdlIHBsdWdpbiByZW1vdmVkLCBjYXRlZ29yaWVzIGFyZSBiZXR0ZXIgY3JlYXRlZCB3aXRoIHRo ZSBidXR0b24gaW4gdGhlIHRvb2xiYXIKKyogflJlY2VudENoYW5nZXNDYWNoZWQgcGx1Z2luIHJl bW92ZWQsIH5SZWNlbnRDaGFuZ2VzIHBsdWdpbiBpcyBmYXN0IGVub3VnaAorCis9PSAxLjYuMCAy MDIxLTA4LTEyIE1hcmMtRXRpZW5uZSBWYXJnZW5hdSA9PQorCitNYWpvciByZWxlYXNlOgorKiBQ SFAgNyBhbmQgOCBjb21wYXRpYmxlICh3b3JrcyBmcm9tIFBIUCA1LjMuMyB0byBQSFAgOC4wKQor KiBGdWxsIEhUTUwgNTogQWRkIEhUTUwgNSA8bWFpbj4gPGhlYWRlcj4gPGZvb3Rlcj4gPG5hdj4g aW4gYWxsIHRoZW1lcy4gQWRkIEFSSUEgcm9sZXMuCisqIEZsYXNoIGlzIGRlYWQKKyogSW50ZXJu ZXQgRXhwbG9yZXIgaXMgZGVhZAorCis9PT0gRml4ZXMgPT09CisqIE1ha2UgZnVuY3Rpb24gSXNT YWZlVVJMIG1vcmUgc3RyaWN0CisqIE1ha2UgWEhUTUwgWklQIFNuYXBzaG90IHdvcmsgYWdhaW4g KGJyb2tlbiBzaW5jZSB+UGhwV2lraSAxLjUuMykKKyogSXQgd2FzIHBvc3NpYmxlIHRvIHJlbmFt ZSBhIHBhZ2UgdG8gYSBuYW1lIHdpdGggaWxsZWdhbCBjaGFyYWN0ZXJzLCBsaWtlIH5bfl0KKyog QmV0dGVyIGhhbmRsaW5nIG9mIHBhZ2UgbmFtZXMgd2l0aCBzbGFzaAorKiBSZW1vdmUgd3Jvbmcg Y2FsbHMgdG8gc2V0VGlnaHRuZXNzIGluICMjbGliL35JbmxpbmVQYXJzZXIucGhwIyMgKGJ1ZyBy ZXBvcnRlZCBieSBIYXJvbGQgSGFsbGlrYWluZW4pCisqIEltcG9ydGluZyBhIFpJUCBmcm9tIGFu IG9sZCB3aWtpIGluIExhdGluIDEgKElTTyA4ODU5LTEpIGZhaWxlZC4gUmVwb3J0ZWQgYnkgRnJh bmsgTWljaGFlbC4KKyogQmV0dGVyIGNoZWNrIGFyZ3VtZW50cyBmb3Igfkdvb2dsZU1hcHMgcGx1 Z2luCisqIFJldmVydCBTdWJ2ZXJzaW9uIGNvbW1pdCA5MTExLCBiYWQgc2lkZSBlZmZlY3RzOyBy ZS1vcGVuaW5nIEJ1ZyM2MDcgQmFja0xpbmtzIGRvIG5vdCB3b3JrIGluc2lkZSBhIH5SaWNoVGFi bGUKKyogU2VjdXJpdHkgZml4ZXMKKworPT09IENoYW5nZXMgPT09CisqIEFsbCByZXZpc2lvbnMg YXJlIGtlcHQuCisqIEFkZCBuZXcgYnV0dG9uIGluIEVkaXQgVG9vbGJhcjogY29udmVydCBUYWIg U2VwYXJhdGVkIFZhbHVlcyB0byBXaWtpY3Jlb2xlIHRhYmxlCisqIFVwZGF0ZSBqUXVlcnkgdG8g Mi4yLjQKKyogUGVhcjogdXNlICMjbXlzcWxpIyMgaW5zdGVhZCBvZiAjI215c3FsIyMKKyogVXBk YXRlIFBFQVIucGhwIHRvIHJlbGVhc2UgMS4xMC4xMgorKiBVcGRhdGUgUGVhciBEQiBsaWJyYXJ5 IHRvIDEuMTAuMAorKiBVcGRhdGUgUGVhciBDYWNoZSBsaWJyYXJ5IHRvIDEuNS42CisqIFVwZGF0 ZSBBZG9kYiB0byB2ZXJzaW9uIDUuMjAuMTkKKyogVXBkYXRlIEFTQ0lJTWF0aFBIUCB0byB2ZXJz aW9uIDIuMSAoZnJvbSBaZWZsaW5nL0FTQ0lJTWF0aFBIUCBvbiBnaXRodWIuY29tKQorKiBVcGRh dGUgaGlnaGxpZ2h0LmpzIHRvIHZlcnNpb24gOS4xNS42CisqIEFsbG93IFdpa2ljcmVvbGUgc3lu dGF4IGZvciBwbHVnaW5zIGluIHRoZW1lIHRlbXBsYXRlcworKiBWYWxpZCBIVE1MNSBhbmQgQ1NT MyBsb2dvcyAoaW4gZGVidWcgbW9kZSkKKyogQmV0dGVyIGlzX2xvY2FsaG9zdCgpIGZ1bmN0aW9u IChhbGxvdyBJUHY2LCBhbGxvdyBXaW5kb3dzIElJUykuIFBhdGNoIGJ5IFRoaWVycnkgTmFiZXRo LgorKiBSZW1vdmUgRnVzaW9uZm9yZ2Utc3BlY2lmaWMgZmlsZXMgKGcgdmlldy5waHAgd2lraWFk bWluLnBocCB3aWtpbGlzdC5waHApCisqIFJlbW92ZSBVU0VfU0FGRV9EQlNFU1NJT04gKGFsd2F5 cyB0cnVlKSwgRElTQUJMRV9IVFRQX1JFRElSRUNUCisqIFBETyBwYXRjaCBieSBTw6liYXN0aWVu IExlIENhbGxvbm5lYworKiBVcGRhdGVkIHBnc3JjIHBhZ2VzIGluIGFsbCBsYW5ndWFnZXMKKyog QWRkaW5nIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyIGluIFBIUCBzb3VyY2UgZmlsZXMKKworPT09 IFBsdWdpbnMgPT09CisqIH5VcExvYWQgcGx1Z2luOiBwdXQgZGF0ZSBhbmQgYXV0aG9yIGluIGhp c3RvcnkKKyogflVwTG9hZCBwbHVnaW46IGRvbid0IGlubGluZSBpbWFnZXMKKyogflBocFdlYXRo ZXIgcmVtb3ZlZCwgdXNlcyBkZXByZWNhdGVkIG15c3FsIGZ1bmN0aW9ucworKiB+SHRtbENvbnZl cnRlciBwbHVnaW46IGNoZWNrIGZpbGUgaXMgZW5jb2RlZCBpbiBVVEYtODsgfkh0bWxDb252ZXJ0 ZXIgcGx1Z2luIGFsbG93ZWQgaW4gRnVzaW9uZm9yZ2UKKyogVXNlIGpxdWVyeS5hdXRvaGVpZ2h0 LmpzIHBsdWdpbiBmb3IgVHJhbnNjbHVkZSBwbHVnaW4KKyogUmVwYWlyIFtbSGVscDpQaG90b0Fs YnVtUGx1Z2lufFBob3RvQWxidW1QbHVnaW5dXQorKiBSZW5hbWUgYWN0aW9uIHBhZ2UgfkRlYnVn SW5mbyBhcyB+RGVidWdCYWNrZW5kSW5mbyAodG8gYmUgY29uc2lzdGVudCB3aXRoIHBsdWdpbiBu YW1lKQorKiBCZXR0ZXIgY2hlY2sgYm9vbGVhbiBhcmd1bWVudHMgaW4gcGx1Z2lucworCis9PSAx LjUuNSAyMDE1LTEyLTExIE1hcmMtRXRpZW5uZSBWYXJnZW5hdSA9PQorCisqIEZpeCB0b29sdGlw IHRyYW5zbGF0aW9uIGluIH5DcmVhdGVUb2MgcGx1Z2luCisqIFJlbW92ZSBhY2Nlc3Mga2V5cwor KiBDaGVjayBNQVhfUEFHRU5BTUVfTEVOR1RIIGluIENyZWF0ZVBhZ2UKKyogRml4IGZhdGFsIGRh dGFiYXNlIGVycm9yIHdpdGggbXVsdGlwbGUgY29tbWEtZGVsaW1pdGVkIHNvcnRieSBhcmdzCisq IFJlbW92ZSBmb3JiaWRkZW4gY2hhcmFjdGVyczogfjx+Pn5bfl1+e359fiJ+fH4jIGZyb20gcGFn ZW5hbWUKKyogTmV3IHByb3BlcnR5OiBBTExPV0VEX0xPQUQgZ2l2aW5nIGxpc3Qgb2YgZGlyZWN0 b3JpZXMgZnJvbSB3aGljaCBpdCBpcyBhbGxvd2VkIHRvIGxvYWQgcGFnZXMuCisqIFVwbG9hZH46 IHJlcGxhY2UgbXVsdGlwbGUgc3BhY2VzIGJ5IHNpbmdsZSBzcGFjZQorKiBNYWtlIGZ1bmN0aW9u cyBtZXJnZWQgYW5kIGlzX2NvbmZsaWN0IHB1YmxpYyBpbiBsaWIvZGlmZjMucGhwIChzdXBwb3J0 IHJlcXVlc3QgIzE2MikKKworPT0gMS41LjQgMjAxNS0wNi0yOSBNYXJjLUV0aWVubmUgVmFyZ2Vu YXUgPT0KKworKiBGaXggfldhbnRlZFBhZ2VzIGZvciBGdXNpb25mb3JnZQorKiBSZW1vdmUgfldh bnRlZFBhZ2VzT2xkICh1c2UgfldhbnRlZFBhZ2VzIGluc3RlYWQpCisqIEFkZCBXZWJNIGZvcm1h dCBpbiBWaWRlbyBwbHVnaW4KKyogVXBkYXRlIGpzY2FsZW5kYXIgdG8gMS4wCisqIFJlbW92ZSBX aWR0aCBhbmQgSGVpZ2h0IHByZWZlcmVuY2VzIG1vZGlmaWNhdGlvbiBpbiBFZGl0IFRvb2xiYXIK KyogTmV3IGljb25zIGluIEVkaXQgVG9vbGJhcgorKiBNYWtlIHN0YXRpYyB0ZW1wbGF0ZXMgaW4g RWRpdCBUb29sYmFyIHdvcmsKKyogRml4IG1lbW9yeV9saW1pdCBmb3IgV0lLSV9TT0FQCisqIFJl bW92ZSB+TW9ja1JlcXVlc3QKKyogVXBkYXRlIGpxdWVyeSB0byAxLjExLjMKKworPT0gMS41LjMg MjAxNS0wMy0wNCBNYXJjLUV0aWVubmUgVmFyZ2VuYXUgPT0KKworKiBGaXggQnVnIzY0OCBDYWxs IHRvIHByb3RlY3RlZCBtZXRob2QKKyogZWFzaWVyIGZpbGUgdXBsb2FkOiBmb3JiaWRkZW4gY2hh cmFjdGVycyBpbiBmaWxlbmFtZSBhcmUgcmVwbGFjZWQgYnkgZGFzaGVzIChpbnN0ZWFkIG9mIHJl amVjdGluZyB1cGxvYWQpCisqIGltcHJvdmUgaGFuZGxpbmcgb2YgaW1hZ2UgaW5zZXJ0aW9uIGlj b24gaW4gZWRpdCB0b29sYmFyIChpY29uIGRpZCBub3QgYWx3YXlzIGFwcGVhciBhZnRlciBpbWFn ZSB1cGxvYWRpbmcpCisqIGJpZ2dlciB3aWtpcGFnaW5nIGZvbnQKKyogdGVzdCBhZ2FpbiBmb3Ig ZnVuY3Rpb24gJ3Bvc2l4X3RpbWVzJywgaXQgZG9lcyBub3QgZXhpc3Qgb24gV2luZG93cyAocmVw b3J0ZWQgYnkgamRlYmVydCkKKyogcmVtb3ZlIEZQREYsIGxpYi9naWYucGhwLCBsaWIvZm9udCAo d2VyZSBub3QgdXNlZCkKKyogcmVuYW1lIHBsdWdpbiBfUmV0cmFuc2Zvcm0gdG8gfkRlYnVnUmV0 cmFuc2Zvcm0KKyogdXNlIFBIUCBaSVAgY2xhc3MgaW5zdGVhZCBvZiBob21lLW1hZGUgZnVuY3Rp b25zLiB6aXBsaWIgcmVuYW1lZCB0byBtaW1lbGliCisqIGFkZCBTT0FQIHNjcmlwdHMKKyogcmVu YW1lIEZDS2VkaXRvciB0byBDS2VkaXRvcgorKiBsb2FkIHRoZW1lIHBnc3JjLCBpZiBpdCBleGlz dHMKKyogU1VCUEFHRV9TRVBBUkFUT1IgcmVtb3ZlZCwgaXQgbXVzdCBiZSAnLycKKyogUmF0ZUl0 IHBsdWdpbiBmb3IgRnVzaW9uZm9yZ2UKKyogcmVtb3ZlIGFjZHJvcGRvd24gYW5kIGxpdmVzZWFy Y2gKKyogcmVtb3ZlIENWUyBiYWNrZW5kCisKKz09IDEuNS4yIDIwMTQtMTAtMTAgTWFyYy1FdGll bm5lIFZhcmdlbmF1ID09CisKK1RoaXMgaXMgYSBzZWN1cml0eSBmaXggcmVsZWFzZS4KKyogRml4 IENWRS0yMDE0LTU1MTk6IHZ1bG5lcmFiaWxpdHkgaW4gUGxvdGljdXMgcGx1Z2luLiBbW2h0dHA6 Ly93d3cuY3ZlZGV0YWlscy5jb20vY3ZlL0NWRS0yMDE0LTU1MTkvXV0KKworVGhpcyB2dWxuZXJh YmlsaXR5IGlzIHByZXNlbnQgaW4gflBocFdpa2kgMS41LjAgYW5kIDEuNS4xLiBBbGwgdXNlcnMg YXJlIGFkdmlzZWQgdG8gdXBncmFkZSB0byB+UGhwV2lraSAxLjUuMi4KKworPT0gMS41LjEgMjAx NC0xMC0wMiBNYXJjLUV0aWVubmUgVmFyZ2VuYXUgPT0KKworKiBmaXggQnVnIzQ1NiAnT3B0aW1p emluZyBEYXRhYmFzZScgbWVzc2FnZSBzb21ldGltZXMgcHJpbnRlZCBvbiBwYWdlCisqIHJlbW92 ZSB+RnJhbWVJbmNsdWRlIHBsdWdpbiAoZnJhbWVzIGFyZSBub3Qgc3VwcG9ydGVkIGluIEhUTUwg NSkKKyogc29ydCB0YWJsZXMgd2l0aCBbW2h0dHA6Ly90YWJsZXNvcnRlci5jb218dGFibGVzb3J0 ZXIgalF1ZXJ5IHBsdWdpbl1dIGluc3RlYWQgb2Ygc29ydGFibGUuanMKKyogZml4IEJ1ZyM2MzYg UmVjdXJzaXZlIGluY2x1ZGUgaXMgbm90IHRyYXBwZWQKKyogZml4IEJ1ZyM2NDcgdW5kZWZpbmVk IG1ldGhvZCB7e3tXaWtpREJfYmFja2VuZF9kYmE6Oldpa2lEQl9iYWNrZW5kX2RiYUJhc2V9fX0K KyogY29ycmVjdCB0b3RhbCBudW1iZXIgb2YgcGFnZXMgZm9yIEFsbFBhZ2VzQ3JlYXRlZEJ5TWUs IEFsbFBhZ2VzT3duZWRCeU1lLCBBbGxQYWdlc0xhc3RFZGl0ZWRCeU1lCisqIGZpeCBCdWcjNjA3 IEJhY2tMaW5rcyBkbyBub3Qgd29yayBpbnNpZGUgYSBbW0hlbHA6UmljaFRhYmxlUGx1Z2lufFJp Y2hUYWJsZV1dCisqIGZpeCBCdWcjNjQ2IFdyb25nIG51bWJlciBvZiBsaW5rcyBpbiBCYWNrTGlu a3MKKyogbWFrZSA8aW5jbHVkZW9ubHk+IHdvcmsKKyogcmVtb3ZlIG9sZCB+V2lraVVzZXIgY29k ZSAoRU5BQkxFX1VTRVJfTkVXKQorKiBhZG1pbiBhbHdheXMgaGFzIHJpZ2h0cyB0byBzZWUgYW5k IG1vZGlmeSBwYWdlcywgcmVnYXJkbGVzcyBvZiBBQ0xzLCB0byBhdm9pZCBsb2NraW5nIGhpbXNl bGYgb3V0CisqIGFkZCBtaXNzaW5nIGltYWdlcyBpbiBTaWRlYmFyIHRoZW1lCisKKz09IDEuNS4w IDIwMTQtMDctMjkgTWFyYy1FdGllbm5lIFZhcmdlbmF1ID09CisKKz09PSBNYWluIENoYW5nZXMg PT09CisqIH5QaHBXaWtpIDEuNS4wIG5lZWRzIGF0IGxlYXN0IFBIUCA1LjMuIEl0IGlzIGNvbXBh dGlibGUgd2l0aCBQSFAgNS4zLCA1LjQgYW5kIDUuNS4KKyogT25lIHNpbmdsZSB3aWtpIG1hcmt1 cCwgYmFzZWQgb24gV2lraWNyZW9sZSBhbmQgY29tcGF0aWJsZSB3aXRoIGNsYXNzaWMgcGhwV2lr aSBtYXJrdXAuCisqIEZ1bGwgSFRNTCA1IGFuZCBDU1MgMy4gQSBtb2Rlcm4gYnJvd3NlciBpcyBu ZWVkZWQuCisqIEZ1bGwgVVRGLTguCisKKz09PSBPdGhlciBDaGFuZ2VzID09PQorKiBGaXggYmFk IGRpc3BsYXkgaW4gVG9vbGJveCBtZW51IChTaWRlYmFyIGFuZCBNb25vYm9vayB0aGVtZXMpIHJl cG9ydGVkIGJ5IEhhcm9sZCBIYWxsaWthaW5lbgorKiBGaXggQ2FwdGNoYSBwcm9ibGVtIHJlcG9y dGVkIGJ5IEhhcm9sZCBIYWxsaWthaW5lbgorKiBNZXJnZSB+T2xkVGV4dEZvcm1hdHRpbmdSdWxl cyBpbnRvIH5UZXh0Rm9ybWF0dGluZ1J1bGVzCisqIH5TeW50YXhIaWdobGlnaHRlciBwbHVnaW4g aXMgbm93IGltcGxlbWVudGVkIHdpdGggW1todHRwOi8vaGlnaGxpZ2h0anMub3JnL11dIGluc3Rl YWQgb2YgW1todHRwOi8vd3d3LmFuZHJlLXNpbW9uLmRlXV0uCisqIENobW9kIGFjdGlvbiBpcyBy ZW1vdmVkLgorKiBOZXcgYWN0aW9uOiB+RGVsZXRlQWNsCisqIFVwZGF0ZWQgZG9jdW1lbnRhdGlv biBwYWdlcyBpbiBwZ3NyYy4KKyogVXBkYXRlZCB0cmFuc2xhdGlvbnMuCisKKz09IDEuNC4wIDIw MTQtMDctMjUgUmVpbmkgVXJiYW4sIE1hcmMtRXRpZW5uZSBWYXJnZW5hdSwgU2FicmkgTGFiYmVu ZXMsIFPDqWJhc3RpZW4gTGUgQ2FsbG9ubmVjID09CisKK35QaHBXaWtpIDEuNC4wIGlzIHRoZSBz YW1lIGFzIH5QaHBXaWtpIDEuNC4wUkMxLiBJdCBpcyB0aGUgbGFzdCByZWxlYXNlIGNvbXBhdGli bGUgd2l0aCBQSFAgNC4KKworPT0gMS40LjBSQzEgMjAxMC0wOS0xNyBSZWluaSBVcmJhbiwgTWFy Yy1FdGllbm5lIFZhcmdlbmF1LCBTYWJyaSBMYWJiZW5lcywgU8OpYmFzdGllbiBMZSBDYWxsb25u ZWMgPT0KKworVGhpcyBpcyBhIG5ldyBtYWpvciByZWxlYXNlLCB3aGVyZSBldmVyeXRoaW5nIGNo YW5nZWQgZnJvbSAxLjIsIGFuZCBsb3RzIG9mIGNoYW5nZXMgc2luY2UgMS4zLjE0LgorCitBbiBp bXBvcnRhbnQgbW9kaWZpY2F0aW9uIGluIHRoaXMgcmVsZWFzZSBpcyB0aGUgaW1wbGVtZW50YXRp b24KK29mIGZ1bGwgV2lraWNyZW9sZSAxLjAgc3ludGF4LCBpbmNsdWRpbmcgYWRkaXRpb25zLgor CitUaGUgImNsYXNzaWMiIFBocHdpa2kgc3ludGF4IGlzIHN0aWxsIHN1cHBvcnRlZC4KKworVGhl IGRvY3VtZW50YXRpb24gcGFnZXMgZm91bmQgaW4gcGdzcmMgaGF2ZSBiZWVuIG1vc3RseSBjb252 ZXJ0ZWQgdG8gVVRGLTggYW5kCitXaWtpY3Jlb2xlIHN5bnRheCAod2l0aCB0aGUgYWRkaXRpb24g b2YgdGFibGVzIGluIE1lZGlhd2lraSBzeW50YXgsIHNpbmNlIFdpa2ljcmVvbGUgMS4wCitkb2Vz IG5vdCBzdXBwb3J0ICJjb21wbGV4IiB0YWJsZXMgd2l0aCBibG9jayBlbGVtZW50cyBpbiBjZWxs cywgbGlrZSBsaXN0cyBvcgorcGFyYWdyYXBocykuCisKK0ltcHJvdmVkIGR1bXBpbmcsIHBhZ2Vz ZXQgaGFuZGxpbmcgZm9yIGZvcm1hdD0gd2l0aCB+QWN0aW9uUGFnZXMuCitlLmcuIGR1bXAgcGFn ZXNldHMgb3IgbXVsdGktcGFnZSBwZGYncy4KKworVGhlIFNpZGViYXIgdGhlbWUgaXMgbm93IGFu IGV4dGVuc2lvbiBvZiB0aGUgTW9ub2Jvb2sgdGhlbWUgKGtub3duIGZyb20gV2lraXBlZGlhKSwK K3RoZSBuZXcgZnVzaW9uZm9yZ2UgdGhlbWUgaXMgdG8gYmUgdXNlZCB0b2dldGhlciB3aXRoIFtb aHR0cDovL2Z1c2lvbmZvcmdlLm9yZ3xGdXNpb25Gb3JnZV1dICh0aGUgc3VjY2Vzc29yIG9mIEdm b3JnZSkuCisKKz09PSBGaXhlcyA9PT0KKyogZml4IH5QYWdlUGVybSBmb3IgbXVsdGlwbGUgZ3Jv dXBzOiBub3QgYSBtZW1iZXIgYW5kIHVuZGVjaWRlZDogY2hlY2sgb3RoZXIgZ3JvdXBzCisqIGZp eCByc3MgYnV0dG9uIGFjdGlvbnMgZm9yIHNwZWNpYWwgUmVjZW50Q2hhbmdlcyBhY3Rpb25zIChV c2VyQ29udHJpYnMsIFBhZ2VIaXN0b3J5LCAuLi4pCisqIGZpeCBCdWcjMTc0OTk1MCBhY2Nlc3Ns b2cgU1FMIGR1cmF0aW9uIGZsb2F0IHdpdGggIiwiCisqIGZpeCB0ZW1wbGF0ZSBpbmNsdXNpb24g d2l0aCBhIHJlY3Vyc2lvbiBjeWNsZSBsZWFkaW5nIHRvIGNyYXNoZXMgaW4gYmxvZyBQYWdlSW5m bworKiByZW1vdmVkIGR5bmFtaWMgZmVhdHVyZXMgZnJvbSBodG1sZHVtcCBwYWdlcyBmb3IgbW9y ZSBzdGF0aWMgcGxlYXN1cmUKKyogaWdub3JlIGZhdGFscyBhbmQgYWNjZXNzLWRlbmllZCBzdG93 c3RvcHBlcnMgb24gbXVsdGktcGFnZSBkdW1wcworKiBsaW5rIG9ubHkgdG8gZXhpc3RpbmcgcGFn ZXMgb24gbXVsdGktcGFnZSBkdW1wcyAocGFnZXNldHMpCisqIGZpeCBCdWcjMTc5NTQyMCBieSBT dmVuIEdpbmthOiBVc2UgL1UgaW4gcHJlZ19tYXRjaAorKiBlbnN1cmUgZW5kaW5nIHVwbG9hZHMg c2xhc2ggZXZlbiBvbiB1c2VyIHByb3ZpZGVkIFVQTE9BRCBjb25zdGFudHMuIEZpeGVzIHBsdWdp bi9+VXBMb2FkCisqIHN0YWJpbGl6ZSBDb21tZW50LiBzdWJzdHJpbmcgc2VhcmNoIGZvciBiYXNl cGFnZXMsIGRvIG5vdCB0b2tlbml6ZS4KKyogZml4IEJ1ZyMxNzkyMTcwIEhhbmRsZSAiICggIiBv ciAiKHRlc3QiIHdpdGhvdXQgY2xvc2luZyAiKSIgYXMgcGxhaW4gd29yZC4gQWxsb3cgc2luZ2xl IHN0cmluZyB0b2tlbiAiMCIKKyogZml4IEJ1ZyMxNzUyMTcyIHVuZGVmaW5lZCBtZXRob2Qge3t7 VGV4dFNlYXJjaFF1ZXJ5X25vZGVfb3I6Ol9zcWxfcXVvdGUoKX19fQorKiBkYmE6IGZpeCBzb3J0 aW5nIGZvciBlbXB0eSBtdGltZSBmaWVsZAorKiB+TGRhcFNlYXJjaDogZml4IGxheW91dCBhbmQg bG9naWMKKyogfkZpbGVJbmZvOiBmaXggIyNVcGxvYWR+OiMjIGxpbmtzCisqIFhIVE1MIHZhbGlk YXRpb24gY29ycmVjdGlvbnMgKHZhcmdlbmF1KQorKiBhdm9pZCByZWN1cnNpdmUgbW9kaWZpY2F0 aW9uIHdoZW4gcmVuYW1pbmcgYSBwYWdlIGxpa2UgJ35QYWdlRm9vIHRvICd+UGFnZUZvb1R3bycg KHZhcmdlbmF1KQorKiBmaXggQnVnIzE4MDgwMDIgVGFibGUgb2YgY29udGVudHMgcGx1Z2luIGRv ZXMgbm90IG5lc3QgbnVtYmVyaW5nICh2YXJnZW5hdSkKKyogZml4IEJ1ZyMxOTAzODE1IENhbm5v dCBwdXQgIjAiIGluIH5SaWNoVGFibGUgY2VsbCwgY2VsbCBiZWNvbWVzIGVtcHR5ICh2YXJnZW5h dSkKKyogZml4IEJ1ZyMxOTA0MDg4ICBTb21lIGJyYWNrZXRzIGxpbmtzIHdpdGggXG4gY2F1c2Ug dGhlIHBhcnNlciB0byBjcmFzaAorKiBmaXhlZCBpbmNvcnJlY3QgbnVtYmVyaW5nIGluIFRhYmxl IG9mIENvbnRlbnRzIG51bWJlcmluZyAodmFyZ2VuYXUpCisqIGZpeCBCdWcjMTk2NzE0NyB+Rmls ZUluZm9QbHVnaW4gZG9lcyBub3QgYWxsb3cgZGlzcGxheT1vd25lcgorKiBmaXggQnVnIzE5OTIx NzIgSW50ZXJ3aWtpIGxpbmsgZG9lcyBub3Qgd29yayBpbiB+UmljaFRhYmxlICh2YXJnZW5hdSkK KyogZml4IEJ1ZyMyMDEwNzQ4IE1pc3NpbmcgaW1hZ2UKKyogZml4IEJ1ZyMxODMxODgxIEZhdGFs IGRhdGFiYXNlIGVycm9yIHdoZW4gc29ydGluZyBjb2x1bW5zICh2YXJnZW5hdSkKKyogZml4IH5Q YWdlTGlzdCBwcmV2L25leHQgbGlua3Mgb24gbXVsdGktY29sdW1ucyBsaXN0cywgaW1wcm92ZSBo YW5kbGluZyBvZiBvcmRlcmVkIGxpc3RzCisgIGZpeGVkIHNsaWNpbmcgd2l0aCBsaXN0LWJhc2Vk IGJhY2tlbmRzIChkYmEsIGZpbGUpLgorKiBhbGxvdyBzaW5nbGUgIjAiIGFzIG5vdC1lbXB0eSBw YWdlIGNvbnRlbnQKKyogZml4IGFjdGlvbj1yZW5hbWUsIHN1cHBvcnQgbmV3IG9wdGlvbmFsIGFy Z3VtZW50IHRvPW5ld3BhZ2VuYW1lCisqIGZpeCBtdWx0aXBsZSBVU0VSX0FVVEhfTUVUSE9EIHdo ZXJlIHRoZSBmaXJzdCBtZXRob2QgZGlkIG5vdCBzdWNjZWVkLgorCis9PT0gQ2hhbmdlcyA9PT0K Ky0gY2hhbmdlZCB+U2VtYW50aWNTZWFyY2ggcXVlcnkgc2VtYW50aWNzOiBhbGwgcmVnZXg9YXV0 byB0ZXJtcyB3aXRoIG5vIHJlZ2V4IGNoYXJzICguKyo/XiQiKQorICB3aWxsIGJlIHNlYXJjaGVk IGV4YWN0LCBhbmQgbm90IHdpdGggcmVnZXg9YXV0by4gVGhpcyBtZWFucyBubyB3b3JkIHNwbGl0 dGluZywgbm8gc3Vic3RyaW5ncy4KKyogcmFua2VkIHNlYXJjaCBmb3IgdGl0bGUgYW5kIGZ1bGx0 ZXh0IGZvciBub24tU1FMIGJhY2tlbmRzLiBTaW1wbGUgc2NvcmUgZnVuY3Rpb24uCisqIGFsbG93 IGNvbW1lbnRzIGluIH5XaWtpR3JvdXAgbGlzdHMgYWZ0ZXIgdXNlcm5hbWUKKyogYWVzdGhldGlj IHJlcXVlc3Q6IHJlbW92ZSA/YWN0aW9uPWVkaXQgYWZ0ZXIgZWRpdAorKiBjcmVhdGUgaW50ZXJp bSBwYWdlcyBhcyBtaW5vciBub3Qgc2VlIHRoZW0gaW4gUmVjZW50Q2hhbmdlcworKiBkZWZhdWx0 IHRoZW1lOiB1c2Ugc3RhbmRhcmQgc2VhcmNoIHRlbXBsYXRlICh+TGl2ZVNlYXJjaCkKKyogW1tI ZWxwOkNhbGVuZGFyUGx1Z2luXV0gY2hhbmdlZCBkZWZhdWx0IHN0YXJ0X3dkYXkgZnJvbSAwIHRv IDEgKE1vbmRheSkKKyogW1tIZWxwOkNhbGVuZGFyTGlzdFBsdWdpbl1dIHBhZ2VzIG5vdyBpbiBw YXJhbGxlbCB3aXRoIENhbGVuZGFyOiB5ZWFyICsgbW9udGggYXJncyBhcyBzdGFydCBiYXNlLgor ICBUaGUgYmVoYXZpb3VyIGJlZm9yZSAyMDA3IHdpdGggbGFzdC9uZXh0X25fZGF5cyB3YXMgdG8g c3RhcnQgbm93LgorKiByZW1vdmVkIGZwZGYgc3VwcG9ydC4gb25seSB1c2UgZXh0ZXJuYWwgY29u dmVydGVycworKiBjaGFuZ2UgcmVuYW1lIGFjdGlvbiBmcm9tIGFjY2VzcyBwZXJtIGNoYW5nZSB0 byBlZGl0OiBhbGxvdyB0aGUgc2lnbmVkLWluIHVzZXIgdG8gcmVuYW1lLgorKiBodG1sZHVtcCBj b3BpZXMgbG9jYWxseSB1cGxvYWRlZCBpbWFnZXMgYWxzbworKiBpbXByb3ZlIFNlbWFudGljUmVs YXRpb25zIGxheW91dDogZGlyZWN0IGxpbmtzLCBzdXBwb3J0IGF0dHJpYnV0ZXMgYW5kIHJlbGF0 aW9ucyBmaWx0ZXJzCisqIH5MZGFwU2VhcmNoOiB1c2UgZGVmYXVsdCBiYXNlZG4KKyogV2hvSXNP bmxpbmUgY2xlYW5zIHN0YWxlIHNlc3Npb25zCisqIHJlbW92ZSBVcGxvYWQgYnV0dG9uIGZyb20g ZWRpdAorKiBjaGFuZ2VkIFdpa2l3eWcgZWRpdG9yIHdvcmtmbG93IChsYWJiZW5lcykKKyogYWxs b3cgPHM+IHRvIHN0cmlrZTsgdXBkYXRlIEhlbHAgZm9yIDxzPiBhbmQgPHN0cmlrZT4gKHZhcmdl bmF1KQorKiB+UmljaFRhYmxlIHBsdWdpbjogZW5yaWNoIHN5bnRheCBmb3IgYXR0cmlidXRlcyAo dmFyZ2VuYXUpCisqIG1vcmUgaWNvbnMgZm9yIHRvb2xiYXIgKHZhcmdlbmF1KQorKiBVc2VyUHJl ZmVyZW5jZXM6IHNwZWNpZmljIG1lc3NhZ2Ugd2hlbiBvbmx5IG9uZSBwcmVmZXJlbmNlIGlzIHVw ZGF0ZWQgKHZhcmdlbmF1KQorKiByZW5hbWVkIGNsYXNzIFRoZW1lIHRvIH5XaWtpVGhlbWUgdG8g YXZvaWQgR2ZvcmdlIG5hbWUgY2xhc2ggKHZhcmdlbmF1KQorKiBudW1lcmljIGNlbGxzIGluIHRh YmxlcyBhcmUgbm93IHJpZ2h0LWFsaWduZWQgYnkgZGVmYXVsdCAodmFyZ2VuYXUpCisqIDxub2lu Y2x1ZGU+IGFuZCA8L25vaW5jbHVkZT4gc2hvdWxkIG5vdCBhcHBlYXIgZXZlbiB3aGVuIG5vdCBp bmNsdWRlZCAodmFyZ2VuYXUpCisqIHNwbGl0IFBocFdpa2lBZG1pbmlzdHJhdGlvbiBpbiB0d28g cGFnZXM6IFBocFdpa2lBZG1pbmlzdHJhdGlvbiBhbmQgUGhwV2lraURlYnVnICh2YXJnZW5hdSkK KyogSW1wcm92ZSBoYW5kbGluZyBvZiBjb2xvciB0ZXh0IChlc3BlY2lhbGx5IGluIGNhc2Ugb2Yg ZXJyb3JzKS4gTW9yZSBjb2xvciBuYW1lcyBhcmUgYWxsb3dlZC4gKHZhcmdlbmF1KQorKiB+U2V0 QWNsLCBDaG93biwgTWFya3VwIGFuZCBSZW5hbWUgYXJlIG1hcmtlZCBhcyBtaW5vciBlZGl0cy4g KHZhcmdlbmF1KQorKiBEaXNwbGF5ICJtaW5vciBlZGl0IiBmb3IgbWlub3IgZWRpdHMgaW4gflJl Y2VudENoYW5nZXMgKGxpa2UgaW4gflBhZ2VIaXN0b3J5KS4gKHZhcmdlbmF1KQorKiBJbiBXaWtp QWRtaW5TZWxlY3QsIHB1dCBidXR0b25zIGluIGFscGhhYmV0aWMgb3JkZXIgbGlrZSBpbiBwYWdl IH5QaHBXaWtpQWRtaW5pc3RyYXRpb24uICh2YXJnZW5hdSkKKyogSW4gflBocFdpa2lBZG1pbmlz dHJhdGlvbiwgYWxsIHBhZ2VzIGFyZSBzaG93biBpbnN0ZWFkIG9mIGZpcnN0IDUwLiBObyBwYWdp bmcgaXMgZG9uZS4gKHZhcmdlbmF1KQorKiBJbiB+V2lraUFkbWluU2VhcmNoUmVwbGFjZSwgb25s eSBwYWdlcyB3aGVyZSBhIHJlcGxhY2VtZW50IHdhcyBkb25lIGFyZSBzaG93biBhcyBmZWVkYmFj ay4gKHZhcmdlbmF1KQorKiBJbiB+V2lraUFkbWluU2VhcmNoUmVwbGFjZSwgc2hvdyBwYWdlcyB3 aGVyZSByZXBsYWNlbWVudCB3aWxsIGJlIGRvbmUuICh2YXJnZW5hdSkKKyogRm9yIGZpbGUgdXBs b2FkLCB1c2UgYmxhY2sgbGlzdCBvZiBleHRlbnNpb25zIGluc3RlYWQgb2Ygd2hpdGUgbGlzdC4g KHZhcmdlbmF1KQorKiBJdCBpcyBub3cgcG9zc2libGUgdG8gaW5zZXJ0IHByZWRlZmluZWQgaWNv bnMgaW4gd2lraSB0ZXh0LiBTZWUgW1tIZWxwOlByZWRlZmluZWRJY29uc11dLiAodmFyZ2VuYXUp CisqIEFsbG93ICJ7e3sjW1t9fX0iIHN5bnRheCBmb3IgYW5jaG9ycy4gKHZhcmdlbmF1KQorKiBI YW5kbGUgcmVkaXJlY3Rpb25zIGluIFRlbXBsYXRlIHBsdWdpbi4gKHZhcmdlbmF1KQorKiBBbGxv dyBXaWtpY3Jlb2xlIHN5bnRheCBmb3IgcmVkaXJlY3Rpb25zIGluIH5JbmNsdWRlUGFnZSBwbHVn aW4uICh2YXJnZW5hdSkKKyogTmV3IHByZWZlcmVuY2UgdG8gYXZvaWQgZS1tYWlsIG5vdGlmaWNh dGlvbnMgZm9yIG1pbm9yIGVkaXRzIG9uIFdpa2kgKHZhcmdlbmF1KQorKiBObyBkZWNvcmF0aW9u IGZvciBhYmJyZXZpYXRpb25zIHdoZW4gcHJpbnRpbmcgKHZhcmdlbmF1KQorKiBBZGQgQ1NTMyBj b2RlIGZvciBwYWdlIGhlYWRlcnMgYW5kIGZvb3RlcnMgKHdvcmtzIGZvciBQREYgZ2VuZXJhdGlv biB3aXRoIFByaW5jZSBYTUwpICh2YXJnZW5hdSkKKyogUmVtb3ZlIHN1cGVyZmx1b3VzIHNjcm9s bGJhciBmcm9tIHByaW50YWJsZSBwcmUncworCis9PT0gTmV3ID09PQorKiB+UGFnZUxpc3Qgc3Vw cG9ydHMgbGlzdHR5cGU9dWwsb2wsZGwuIGRsIHVzZWQgYnkgRnVsbFRleHRTZWFyY2gKKyogcGFn ZWFibGUgdGV4dHNlYXJjaCByZXN1bHRzCisqIGV4dGVybmFsIHNlYXJjaCBidXR0b24gYnkgdXNp bmcgU2VhcmNoOiBhbmQgc2VhcmNodHlwZT1leHRlcm5hbAorKiBhZGRlZCB+VW5pdmVyc2FsV2lr aUVkaXRCdXR0b24gdG8gfk1vbm9Cb29rLCBkZWZhdWx0LCBibG9nLiBNb3JlIHRoZW1lcyBsYXRl ci4KKyogYWRkIElOU0VDVVJFX0FDVElPTlNfTE9DQUxIT1NUX09OTFkgZm9yIGFkdmFuY2VkIHNl Y3VyaXR5IGFjdGlvbnMKKyogZW5hYmxlICJeQSBvciBeQiIgcGFnZXMgYXJndW1lbnQgZm9yIH5Q YWdlTGlzdHM6IGUuZy4gc3BsaXR0ZWQgYWN0aW9ucyBmb3IgbGFyZ2UgaHRtbGR1bXAncworKiBk YmE6IGFkZCBhcmdzIHRvIGNoZWNrIGFuZCByZWJ1aWxkIChmdWxsIG9yIGxpbmtzIG9ubHkpCisq IFJlY2VudENoYW5nZXM6IGFkZCBjYXRlZ29yeSwgcGFnZW1hdGNoIGFyZ3VtZW50cworKiBhZGQg VXJpUmVzb2x2ZXIgbmVlZGVkIGZvciBleHRlcm5hbCByZGYgYWNjZXNzCisqIEFwcGVuZFRleHQ6 IHN1cHBvcnQgcGFnZXMgYXJndW1lbnQ6IGFwcGVuZCB0byBtdWx0aXBsZSBwYWdlcworKiBuZXcg cmVhZG9ubHkgZGF0YWJhc2UgZGV0ZWN0aW9uIGZvciBkYmEsIGFuZCBvcHRpb25hbCBjb25maWcg UkVBRE9OTFkgZm9yIG1haW50ZW5hbmNlCisqIG5ldyBwYWdlczogU3BlY2lhbFBhZ2VzLCBMb2Nr ZWRQYWdlcyAodmFyZ2VuYXUpCisqIGltcGxlbWVudGVkIE1lZGlhd2lraS1saWtlIHN5bnRheCBm b3IgdGFibGVzICh2YXJnZW5hdSkKKyogZW5hYmxlIH5SZWNlbnRDaGFuZ2VzQ2FjaGVkIGFzIGJv eCwgaW1wcm92ZSBwZXJmb3JtYW5jZS4KKyogaW1wbGVtZW50ZWQgV2lraWNyZW9sZSAxLjAgc3lu dGF4LCBpbmNsdWRpbmcgYWRkaXRpb25zICh2YXJnZW5hdSkKKyogaW1wbGVtZW50ZWQgc2ltcGxl IFtbSGVscDpTcHJlYWRzaGVldHxzcHJlYWRzaGVldF1dIGZ1bmN0aW9ucyBmb3IgV2lraWNyZW9s ZSB0YWJsZXMgKHZhcmdlbmF1KQorKiBuZXcgcGx1Z2luOiBbW0hlbHA6Q3VycmVudFRpbWVQbHVn aW58Q3VycmVudFRpbWVdXSAodmFyZ2VuYXUpCisqIG5ldyBwbHVnaW46IFtbSGVscDpDaGFydFBs dWdpbnxDaGFydF1dICh2YXJnZW5hdSkKKyogbmV3IG1zc3FsbmF0aXZlIGJhY2tlbmQgKE1TIFNR TCBTZXJ2ZXIgMjAwNSspIChjaHJpc2RwdWNjaSkKKworPT0gMS4zLjE0IEp1bHksIDEgMjAwNywg UmVpbmkgVXJiYW4gPT0KKworPT09IEZpeGVzID09PQorKiBGaXggdGhlIGJyb2tlbiBMREFQIGZp eCBmcm9tIDEuMy4xM3AxCisqIGZpeGVkIHNvcnRieSB3aXRoIG11bHRpcGxlIHBhZ2VsaXN0cwor Cis9PT0gQ2hhbmdlcyA9PT0KKyogY2hhbmdlcyBhbGwgdGhlbWVpbmZvLnBocCBmaWxlcywgbW92 ZWQgZ2xvYmFsIHRvIG1ldGhvZCBsb2FkKCkgdG8gYmUKKyAgZWFzaWVyIGRlcml2ZWQgZnJvbSBj dXN0b20gdGhlbWUgY2xhc3NlcywgbWFpbiBub3cgY2FsbHMgJH5XaWtpVGhlbWUtPmxvYWQKKyog fk1haWxOb3RpZnkgaXMgbm93IHNpbGVudCB1bmxlc3MgREVCVUcKKworPT09IE5ldyA9PT0KKyog YWRkZWQgZXhwZXJpbWVudGFsIEFUT00gc3VwcG9ydAorKiBhZGRlZCBDaGFuZ2VzIGFuZCBVcGxv YWQgYnV0dG9uIHRvIGVkaXQKKworPT0gMS4zLjEzcDEgSnVuZSwgOSAyMDA3LCBSZWluaSBVcmJh biA9PQorCitBbiBpbW1lZGlhdGUgc2VjdXJpdHkgZml4IGZvciAxLjMuMTMsIHBsdXMgc29tZSBt aW5vciBmaXhlcy4KKworPT09IEZpeGVzID09PQorKiBMREFQIEF1dGg6IERpc2FsbG93IGVtcHR5 IHBhc3N3b3JkcyEgQ2VydGFpbiBsZGFwIGltcGxlbWVudGF0aW9ucyByZXR1cm4gdHJ1ZQorICBv biBlbXB0eSBwYXNzd29yZHMgd2l0aCBsZGFwX2JpbmQoKS4KKyogTERBUCBBdXRoOiBmaXggcGFz c3dvcmQgcXVvdGluZworKiBmaXggYWN0aW9uPXVwZ3JhZGUgZm9yIGRiYSwgcmVuYW1lIG5vc3Fs IHRvIG5vZGIKKyogZml4ZXMgflNwYW1CbG9ja0xpc3QgY29uZmlnIGZpbGUgbG9jYXRpb25zIChj b25maWcvdHdvLWxldmVsLXRsZHMsIGNvbmZpZy93aGl0ZWxpc3QpCisqIGVuYWJsZSAkfk1haWxO b3RpZnktPm9uQ2hhbmdlUGFnZQorKiBmaXggZGlzcGxheSBvZiBwYWdlbmFtZXMgY29udGFpbmlu ZyAiOiIgaW4gY2VydGFpbiBsaXN0cworKiBmaXhlZCBiYWNrZW5kIGFzQXJyYXkgYWNjZXNzIHRv IGl0ZXJhdG9ycyAofkRlYnVnSW5mbyB3aXRoIFNRTCkKKyogZml4IHdyb25nIH5QaHBXaWtpQ3Zz IEludGVyV2lraU1hcCBlbnRyeQorKiBmaXggc3ludGF4IGVycm9yIGluIHBnc3JjL0hlbHAlMkZB Y3Rpb25QYWdlCisqIGZpeCBjYXNlIGluIHBnc3JjL0hlbHAlMkZBc2NpaVNWR1BsdWdpbgorKiBm aXggbGlua3MgaW4gcGdzcmMvSGVscCUyRlNlbWFudGljUmVsYXRpb25zCisqIGZpeCBwZ3NyYy9I ZWxwJTJGV2lraVBsdWdpbgorCis9PT0gQ2hhbmdlcyA9PT0KKyogYWxsb3cgXG4gYW5kIHNpbmds ZSBsZXR0ZXIgcGFnZXMgaW4gfnt+eyB+fX59IHRlbXBsYXRlIHN5bnRheC4KKyAgcGF0Y2ggIzE3 MzI3OTMgYnkgfkFsSmV1eCBhbmQgflJlaW5pVXJiYW4KKyogd2l0aCBFTkFCTEVfU1BBTUJMT0NL TElTVCBjaGVjayBvbmx5IG5ldyBleHRlcm5hbCBsaW5rczoKKyAgbWF4IDUsIGFsbG93IGludGVy d2lraSBsaW5rcywgYW5kIGltcHJvdmUgZmFpbGVkIG91dHB1dC4KKworPT0gMS4zLjEzIEp1bmUs IDIgMjAwNywgUmVpbmkgVXJiYW4gPT0KKworVGhpcyBpcyBtYWpvciBmZWF0dXJlIHJlbGVhc2Ug d2hpY2ggd2lsbCBiZSB0aGUgYmFzZSBmb3IgdGhlIHN0YWJsZQorMS40LjAuICBUaGUgaGlnaGxp Z2h0cyBhcmUgflNlbWFudGljV2ViIHN1cHBvcnQsIGJhc2ljIHN1cHBvcnQgZm9yCit2YXJpb3Vz IFdZU0lXWUcgZWRpdG9ycyAobm90IHlldCBzdGFibGUpLCBhIHN0YWJsZSB+TW9ub0Jvb2sgKHdp a2lwZWRpYSkKK2FuZCBCbG9nIHRoZW1lLCBlbmFibGVkIGFjZHJvcGRvd24gc3VwcG9ydCAofkxp dmVTZWFyY2gpLCBwb3N0Z3Jlc3FsIGFuZAorb3JhY2xlIGVuaGFuY2VtZW50cywgbW92aW5nIEhl bHAgcGFnZXMgaW50byBIZWxwLywgc3VwcG9ydCBkaWZmZXJlbnQKK2NoYXJzZXRzIGluIHBnc3Jj IGFuZCBXaW5kb3dzIE5UTE0gYXV0aCBzdXBwb3J0IHZpYSB+SHR0cEF1dGgsIGEgbG90Cittb3Jl IHBsdWdpbnMgYW5kIGVuaGFuY2VtZW50cy4gVVRGLTggc2hvdWxkIHdvcmsuCisKKz09PSBGaXhl cyA9PT0KKyogZml4IH5VcExvYWQgdG8gZGlzYWxsb3cgYWxsIHBocCBleHRlbnNpb25zCisqIERC OiB1c2UgQU5TSSBTUUwgc3RhdGVtZW50cyAob3JhY2xlIGJ5IEJvYiBQZWVsZSAmIENocmlzdG9w aGVyIEpvbmVzLAorICBwb3N0Z3Jlc3FsIGJ5IFJlaW5pIFVyYmFuKQorKiBmaXhlZCBibG9nLCB+ TW9ub0Jvb2ssIHNpZGViYXIgYW5kIHdpa2lsZW5zIHRoZW1lIGxheW91dAorKiBmaXggVGVtcGxh dGUgYW5kIH5DcmVhdGVQYWdlIHZhcmlhYmxlIGV4cGFuc2lvbgorKiB4aHRtbCBkdW1wIGZvciBz dWJwYWdlcyBpbnRvIHN1YmRpcmVjdG9yaWVzLCBmaXhlZCBmaWxlbmFtZXMgYW5kIHN1YmRpciBu YW1lcworKiBmaXhlZCBsb2FkaW5nIHBhZ2VzIGludG8gZm9yZWlnbiBjaGFyc2V0cyAoc3VjaCBh cyB1dGYtOCkKKyogfkVycm9yTWFuYWdlcjogcGF0Y2ggIzE0Mzg0MzkgYnkgTWF0dCBCcm93bjoK KyAgT25seSBzZXQgbm8tY2FjaGUgaGVhZGVycyB3aGVuIGVycm9yIG91dHB1dCBpcyBnZW5lcmF0 ZWQKKyogfkltYWdlTGlua3M6IHBhdGNoICMxMzQ4OTk2IGJ5IFJvYmVydCBMaXR3aW5pZWMKKyog Zml4IGJ1ZyAjMTMyNzkxMiBudW1lcmljIHBhZ2VuYW1lcyBjYW4gYnJlYWsgcGx1Z2lucyAoSm9h Y2hpbSBMb3VzKQorKiBpbXByb3ZlIHBkZiBvdXRwdXQgdmlhIGV4dGVybmFsIGNvbnZlcnRlcgor KiBmb3JjZSBpbnRlZ2VyIGNvbnN0YW50cyB0byBiZSBzZXQgYXMgaW50ZWdlcgorKiBwYXJ0aWFs bHkgZml4IENSQyBvdmVyZmxvdyBpbiB6aXBsaWIgKEJvYiBBcHRob3JwZSkKKyogdGVzdHN1aXRl OiBmb3JjZSBDIGxvY2FsZSBhbmQgRU4gJExBTkcKKyogZml4ZWQgZGlzcGxheSBvZiBlZGl0ZWQg SW50ZXJXaWtpTWFwLiBzdGF0aWMgdmFyIGlzc3VlCisqIGZpeGVkIGRpc3BsYXkgb2YgIk1lcmdl IGFuZCBFZGl0OiBwYWdlbmFtZSIgaGVhZGVyIGluIG1lcmdlIGVkaXQgKGhhY2shKQorKiB+V2lr aUZvcm1SaWNoOiBmaXggbmFtZT12YWx1ZSBwYXJzaW5nLiBmaXggbGltaXQgd2l0aCBwbHVnaW4t bGlzdCBpbnZvY2F0aW9ucworKiBwbHVnaW4vRGlmZjogZml4IGxpYi9kaWZmIGxvYWRpbmcgY29u ZmxpY3RzIGJ5IHJlbW92aW5nIGR1cGxpY2F0ZSBjbGFzc2VzCisqIHBsdWdpbi9QbG90aWN1czog c3VwcG9ydCBQTE9USUNVU19QUkVGQUJTIGNvbmZpZy5pbmkgc2V0dGluZyAoZG9jdW1lbnRlZCBi dXQgbmV2ZXIgd29ya2VkKQorKiBmaXggZWRpdDpsb2NrZWQgbGFiZWwgc2VsZWN0aW9uOiB0eXBv LCB3YXMgZWRpdDpsb2NrCisqIGZpeGVkIG1vYWNkcm9wZG93biBpbnRlZ3JhdGlvbgorKiBmaXhl ZCBmb3J0dW5lIGVycm9yIGhhbmRsaW5nCisqIGZpeGVkIGxpbWl0IGhhbmRsaW5nIHdpdGggbXVs dGlwbGUgcGFnZWxpc3RzOiBkb24ndCBvdmVyd3JpdGUgcmVxdWVzdCBhcmcKKyogY2hhbmdlIFBh Z2VEdW1wIENvbnRlbnQtVHlwZSBoZWFkZXIgZm9yIGRvd25sb2FkIHRvIGFwcGxpY2F0aW9uL29j dGV0LXN0cmVhbSB0byBhdm9pZAorICBwZXN0eSAudHh0IHN1ZmZpeGVzIG9uIFdpbmRvd3MgY2xp ZW50cworKiBmaXhlZCB3aWtpbGVucyB3aXRoIGRiYSBhbmQgUkFUSU5HX1NUT1JBR0U9U1FMLiBS QVRJTkdfU1RPUkFHRT1XSUtJUEFHRSBub3QgeWV0IGZpeGVkLgorKiBmaXhlZCBhY3Rpb249ZGlm ZiBlcnJvciB3aXRoIGV4dGVybmFsIGxpbmtzCisKKz09PSBDaGFuZ2VzID09PQorKiBhZGQgflVw TG9hZCBwb2xpY3kgRElTQUJMRV9VUExPQURfT05MWV9BTExPV0VEX0VYVEVOU0lPTlMsIGRlZmF1 bHQ6IGZhbHNlCisqIH5TZW1hbnRpY1dlYjogYWRkIGxpbmtyZWxhdGlvbiBzdXBwb3J0LCBnZXRQ YWdlTGlua3MgcmV0dXJucyBub3cgYW4gYXJyYXkgb2YgaGFzaGVzLgorICBvcHRpbWl6ZSBnZXRf bGlua3MgZm9yIHJlbGF0aW9ucy4KKyogYWRkIG5ldyBsaW5rc3ludGF4ICJ+WzpwYWdlbmFtZX5d IiBpbnNpZGUgc3F1YXJlIGJyYWNrZXRzIG9ubHksIG5vdCB0byBzdG9yZSBiYWNrbGlua3MuCisg IH5bOn5Eb250U3RvcmVMaW5rfl0gKGV4cGVyaW1lbnRhbCkKKyogbW92ZWQgZGVmYXVsdCBoZWxw IHBhZ2VzIHRvIEhlbHAvIHN1YnBhZ2VzLiBQYXJ0aWFsbHkgZm9yICJkZSIgYWxzby4KKyogZ2Vu ZXJhbGl6ZWQgRU5BQkxFX0hUTUxBUkVBMyB0byBFTkFCTEVfV1lTSVdZRworKiBzdXBwb3J0IG1v cmUgfldpa2lGb3JtUmljaCBtZXRob2QgYXJndW1lbnRzOiB1cmwsIGR5bnVybCwgeG1scnBjLCBk eW54bWxycGMsIHBsdWdpbiwKKyAgdGhlIGF1dG9jb21wbGV0ZSBvcHRpb24gZm9yIHB1bGxkb3du flt+XSBhbmQgZWRpdGJveH5bfl0gYW5kIHRoZSBuZXcgY29tYm9ib3h+W35dIHdpZGdldC4KKyAg SW1wcm92ZSB+V2lraUZvcm1SaWNoIGxheW91dC4KKyogREI6IGZvcmVpZ24ga2V5IHN1cHBvcnQg aW4gc2NoZW1hcywgc2ltcGxpZnkgbWV0aG9kcworKiByZW1vdmUgdXNlciB0YWJsZTogdXBncmFk ZSBmcm9tIFNRTCBkYi4KKyogdXBkYXRlZCBsb2NhbGUgZm9yIGl0LCBkZSBhbmQgZXMgKGdvb2ds ZSB0cmFuc2xhdGlvbikKKyogaW1wcm92ZSBsb2FkaW5nIG11bHRpcGxlIHZlcnNpb24gYXJjaGl2 ZXMgc3VjaCBhcyBmdWxsIHppcGR1bXBzLiBmb3JjZSB0ZW1wLiBvdmVyd3JpdGUuCisgIHN1cHBv cnQgbG9hZGZpbGUgZm9yIG11bHRpcGFydCBhcmNoaXZlcyAoZnVsbCBkdW1wcykgYXV0b21hdGlj YWxseQorKiBvbWl0IGFjdGlvbmJhciBmcm9tIHBkZiBvdXRwdXQKKyogc3VwcG9ydCBjaGFyc2V0 cyBpbiBwYWdlZHVtcHMgZm9yIGxvYWRmaWxlIGFuZCB2aXJnaW4gc2V0dXAKKyogX35CYWNrZW5k SW5mb1BsdWdpbiBwcmludHMgbGlua2luZm8gYWxzby4KKyogfkV4dGVybmFsU2VhcmNoUGx1Z2lu IGRpc3BsYXlzIHRoZSBidXR0b24gYXQgdGhlIHJpZ2h0LiBDaGFuZ2UgaXQgd2l0aAorICBFWFRF Uk5BTFNFQVJDSF9ERUZBVUxUX0JVVFRPTl9QT1NJVElPTiA9IGxlZnQsIG9yIHRoZSBhcmd1bWVu dCBidXR0b25fcG9zaXRpb249bGVmdCBvciBub25lLgorKiBkaXNhYmxlZCBwb3N0Z3Jlc3FsIG9w dGltaXplKCkgaW4gZmF2b3Igb2YgYXV0b3ZhY3V1bSwKKyAgZW5hYmxlIGl0IGluIHRoZSBiYWNr ZW5kIG1ldGhvZCBpZiB0aGUgd2ViIHVzZXIgaXMgdGhlIHRhYmxlIG93bmVyIChzZWN1cml0eSBy aXNrKQorKiBwcmludCAiSWdub3JlZCBzdG9wbGlzdCB3b3JkcyIgb24gRnVsbFRleHRTZWFyY2gs CisgIGFkZCBGVUxMVEVYVFNFQVJDSF9TVE9QTElTVCBjb25zdGFudCwKKyAgbWFrZSB+VGV4dFNl YXJjaFF1ZXJ5LT5fc3RvcGxpc3QgbG9jYWxpemFibGUKKyogZml4IGFyZyBvcmRlciBpbiBXaWtp REJfYmFja2VuZF9zZWFyY2goKQorKiBwcm90ZWN0ZWQgdGVzdHMuIG9ubHkgYWxsb3cgbG9jYWxo b3N0CisqIG9wdGltaXplIH5BcmNoaXZlQ2xlYW5lciBmb3IgdGhlIG5ldyBkZWZhdWx0IGNhc2Ug KHNpbmNlIDEuMy4xMSk6IEtlZXAgYWxsIHJldmlzaW9ucy4KKyogY2hhbmdlZCB0aGUgZGVmYXVs dCBEQiBiYWNrZW5kIGZyb20gZ2RibSB0byBkYmEgZGI0CisqIGNoYW5nZWQgYWN0aW9uPXVwZ3Jh ZGUgdG8gY2hlY2sgYW5kIHN0b3JlIGEgZGIgdmVyc2lvbgorKiBkb24ndCBsb2FkZmlsZSAqLm9y aWcgZmlsZXMgKHRoaXMgbWlnaHQgYmUgYSBsaW1pdGF0aW9uLiBzb3JyeSkKKyogcmVuYW1lIF9+ QXV0aEZpbGUgdG8gfkRlYnVnQXV0aEZpbGUgaW4gdXBncmFkZQorKiB1cGRhdGVkIG1vc3QgdGVt cGxhdGUgZmlsZXMgZm9yIGhhcm1vbmlzYXRpb24KKyogY2hhbmdlZCBkZWZhdWx0IH5MaXZlU2Vh cmNoIG1ldGhvZCBpbiBzZWFyY2gudG1wbCBmcm9tIHVybCB0byB4bWxycGMuIGZhc3RlciBhbmQg bGVzcyBoYWNraXNoLgorKiBmaXhlZCBhbGwgdGVtcGxhdGVzIHdpdGggbWlzc2luZyByZXZpc2lv biBjaGVjay4gY2FuIGJlIGZhbHNlLgorKiByZXdyb3RlIGFuZCByZWRlZmluZWQge3t7V2lraURC OjpsaXN0UmVsYXRpb25zfX19LiBsaXN0IG9ubHkgYWxsIHJlbGF0aW9ucyBhcyBhcnJheS4KKyog Y2hhbmdlZCBTZW1hbnRpYyBhdHRyaWJ1dGUgc3ludGF4IGZyb20gIjotIiB0byAiOj0iIChyZWxl dmFudCB0byBjdnMgdXNlcnMgb25seSkKKyogY2hhbmdlIH5UZXh0U2VhcmNoUXVlcnkgaGFuZGxp bmcgb2YgcmVnZXg9cGNyZTogcGxhaW4gc3RyaW5nLCBubyBwYXJzaW5nIGF0IGFsbCwKKyAgZGV0 ZWN0IGFuZCBhcHBseSBtb2RpZmllcnMuCisqIGVuaGFuY2UgdGV4dDJwbmcgYXJndW1lbnRzIGFu ZCBmZWF0dXJlcy4gU2VlIFtbSGVscDp0ZXh0MnBuZ1BsdWdpbl1dCisqIFRlbXBsYXRlIHBsdWdp bjogYWxsb3cgcGFzc2luZyBhcmJpdHJhcnkgYXJncywgbm90IGp1c3QgaW4gdmFycy4KKyogYWRk ZWQgb2xkIGdkIHN1cHBvcnQgdG8gflBob3RvQWxidW0gdGh1bWJzICh+SW1hZ2VUaWxlKQorKiBJ bXByb3ZlIH5MZGFwU2VhcmNoIHBsdWdpbiBhbmQgYWRkIGFjdGlvbiBwYWdlLgorKiBJbXByb3Zl ZCB3aWtpbGVucyB0aGVtZS4KKyogQ2hhbmdlZCBhbGwgZGVmYXVsdCBUZW1wbGF0ZSB2YXJzIHRv IGV4cGFuZGVkIHRvIHVwcGVyY2FzZTogUEFHRU5BTUUsIFVTRVJJRCwgLi4uCisqIENTUzogbm8g fk1vbm9Cb29rIGNzcyBoYWNrcy9yZXF1ZXN0cywgY2hlY2sgc3BlY2lhbCBicm93c2VyIHZlcnNp b25zIGluIHBocAorCis9PT0gTmV3ID09PQorKiBhZGQgflNlbWFudGljUmVsYXRpb25zIHN5bnRh eCwgZGIgc3RydWN0dXJlIGFuZCBhdHRyaWJ1dGUgdW5pdHMuCisgIFNhbXBsZTogcGFnZW5hbWU9 flNhbkRpZWdvIGlzX2EgOjogY2l0eSA9PiB+U2FuRGllZ28gcmVsYXRpb24gPSBpc19hLCBsaW5r dG8gPSBjaXR5CisgICAgICAgICAgcG9wdWxhdGlvbiA6PSAxLDMwNSw3MzYgKG51bWVyaWMgdW5p dHMpCisgIFN0b3JlIHVuaWZpZWQgYXR0cmlidXRlIGluIHBhZ2VkYXRhLgorKiBuZXcgZXhwZXJp bWVudGFsIFdZU0lXWUcgZWRpdCBsaWJyYXJ5IGZyYW1ld29yazoKKyAgfldpa2lXeWcsIHRpbnlt Y2UsIEZDS2VkaXRvciwgaHRtbGFyZWEzLCBodG1sYXJlYTIsIHNwYXcKKyogbmV3IHd5c2l3eWdf ZWRpdG9yIGZlYXR1cmUgYnkgSmVhbi1OaWNvbGFzIEdFUkVPTkUgYW5kIFNhYnJpIExBQkJFTkUg KGV4cGVyaW1lbnRhbCkKKyogYWRkZWQgcG9zdGdyZXNxbCB0c2VhcmNoMiBzdXBwb3J0CisqIG5l dyBleHBlcmltZW50YWwgZmxhdGZpbGUgYmFja2VuZDogcmVhZGFibGUgcGFnZSBzb3VyY2UgZmls ZXMgKGV4cGVyaW1lbnRhbCkKKyogYWRkZWQgbmV3IHhtbHJwYyBhbmQgU09BUCBtZXRob2RzOiB+ bGlzdFBsdWdpbnMsIH5nZXRQbHVnaW5TeW5vcHNpcywgfm1haWxQYXNzd29yZFRvVXNlciwKKyAg fmdldFVwbG9hZGVkRmlsZUluZm8sIH5saXN0UmVsYXRpb25zLCB+Y2FsbFBsdWdpbiwgfmxpbmtT ZWFyY2gKKyogbmV3IHBsdWdpbnM6IH5TZW1hbnRpY1NlYXJjaCwgflNlbWFudGljUmVsYXRpb25z LCB+TGlua1NlYXJjaCwgfkxpc3RSZWxhdGlvbnMsCisgIH5GaWxlSW5mbywgfkJveFJpZ2h0LCB+ UGFzc3dvcmRSZXNldCwgfldhdGNoUGFnZSwgflNwZWxsQ2hlY2ssIH5TZWFyY2hIaWdobGlnaHQs CisgIEFzY2lpU1ZHCisqIGFkZCA8bm93aWtpPjwvbm93aWtpPiB0YWc6IFRyYW5zZm9ybSBvbmx5 IGh0bWwgbWFya3VwIGFuZCBlbnRpdGllcworKiBuZXcgb3B0aW9uIERJU0FCTEVfTUFSS1VQX1dJ S0lXT1JEIHRvIGZvcmNlIFsgXSBmb3IgbGlua3MKKyogbmV3IG9wdGlvbiBFTkFCTEVfTUFSS1VQ X0RJVlNQQU4gKGV4cGVyaW1lbnRhbCkKKyogbmV3IG9wdGlvbiBQTFVHSU5fTUFSS1VQX01BUCBm b3IgeG1sLXN0eWxlIHBsdWdpbiBzeW50YXggKGV4cGVyaW1lbnRhbCkKKyogc3VwcG9ydCBXaW5k b3dzIE5UTE0gQXV0aCB2aWEgfkh0dHBBdXRoOiBtb2RfbnRsbSAoYXBhY2hlMSsyLiBhbHNvIG9u IGxpbnV4KQorICBhbmQgbW9kX2F1dGhfc3NwaSAoYXBhY2hlMi4gYmV0dGVyLCBidXQgd2luZG93 cyBvbmx5KQorKiBuZXcgc3RhYmxlIG9wdGlvbiBFTkFCTEVfU0VBUkNISElHSExJR0hUIHdpdGgg YWN0aW9ucGFnZSBhbmQgcGx1Z2luIFNlYXJjaEhpZ2hsaWdodC4KKyAgSW4gQ1ZTIGZvciBzb21l IHRpbWUgY2FsbGVkIFVTRV9TRUFSQ0hISUdITElHSFQuCisqIHBhdGNoICMxMzc3MDExIGJ5IE1h dHQgQnJvd246IGFkZCBEQVRBQkFTRV9PUFRJTUlTRV9GUkVRVUVOQ1kKKyogbmV3IG9wdGlvbnMg ZGItY2hlY2sgYW5kIGRiLXJlYnVpbGQgZm9yIH5XaWtpQWRtaW5QbHVnaW4uCisgIFlvdSBjYW4g bm93IHJldHJhbnNmb3JtIGFsbCBwYWdlcyBhdCBvbmNlLgorKiBuZXcgfk1haWxOb3RpZnkgY2xh c3MsIHNpbXBsaWZpZWQgV2lraURCLnBocAorKiBhZGRlZCAiUHJpbnRhYmxlIHZlcnNpb24iIGpz IHRvIG1vbm9ib29rIHRoZW1lLiBTZWUgTGljZW5zZSBpbgorICBodHRwOi8vd3d3Lmhvd3RvY3Jl YXRlLmNvLnVrL2pzbGlicy90ZXJtc09mVXNlLmh0bWwKKyogbmV3IH5BY3Rpb25CdXR0b24gZnVu Y3Rpb24gZm9yIH5Nb25vQm9vayB3aXRoIHNlbGVjdGVkIHN0YXRlLiAodGFiIHN0YXRlKQorKiBh ZGRlZCB+U3luY1dpa2kgcGx1Z2luIHRvIHN5bmMgcGFnZXMgYW5kIHVwbG9hZHMgd2l0aCBhIG1h c3RlciB3aWtpLgorICAoZm9yZWlnbiBhdXRoIG5vdCB5ZXQgc29sdmVkKQorKiBhZGRlZCBib29s ZWFuIFVQTE9BRF9VU0VSRElSIHRvIHVwbG9hZCBpbnRvIHVzZXItc3BlY2lmaWMgZGlyZWN0b3J5 LgorKiBhZGRlZCBzdXBwb3J0IGZvciBtdWx0aXBsZSBwYWdlIGFyZ3VtZW50cyBpbiBCYWNrTGlu a3MuIExvZ2ljYWwgQU5ELgorKiBhZGRlZCB3aWtpZGItPmJhY2tlbmQtPnJlYnVpbGQoKQorKiBh ZGRlZCAiS2VlcCBvbGQiIGFuZCAiT3ZlcndyaXRlIHdpdGggbmV3IiBidXR0b25zIGFuZCBhY3Rp b25zIGZvciBsb2FkZmlsZSBtZXJnZSBlZGl0LgorKiBhZGRlZCBsaWIvflhtbFJwY0NsaWVudCwg eG1scnBjIG1ldGhvZHMgdG8gbGliL35IdHRwQ2xpZW50IGFuZCBhY2Ryb3Bkb3duLmpzLiBKU09O IG5vdCB5ZXQuCisqIGNyZWF0ZWQgSGVscC9+KlBsdWdpbiBzdHVicyBmb3IgKkFMTCogcGx1Z2lu cyBpbiBwZ3NyYworKiBhZGRlZCBhIG5ldyBfREVCVUdfUkVNT1RFIGZsYWcgdG8gZGVidWcgaW50 byByZW1vdGUgc2Vzc2lvbnMgKHhtbHJwYywgYWpheCwgLi4uKQorKiBhZGRlZCB7e3tXaWtpREI6 OmxpbmtTZWFyY2h9fX0gYW5kIGJhY2tlbmQvZHVtYi9+TGlua1NlYXJjaEl0ZXIucGhwLiBNYWlu bHkgZm9yIH5TZW1hbnRpY1NlYXJjaCwKKyAgYW5kIExpbmtTZWFyY2gsIGJ1dCBjYW4gYmUgdXNl ZCBmb3IgflNlbWFudGljU2VhcmNoQWR2YW5jZWQgKGNvbWJpbmVkIHF1ZXJpZXMgYXMgPGFzaz4p IGFuZAorICBCYWNrTGlua3MgZXQgYWwgYWxzby4KKyogYWRkZWQgQ2FsZW5kYXIgZGlzcGxheV93 ZWVrbnVtIGFyZ3VtZW50CisqIGFkZGVkIG5ldyB+QXNjaWlTVkcgcGx1Z2luCisqIGFkZGVkIG5l dyB+WW91VHViZSBwbHVnaW4KKyogYWRkZWQgflhtbFJwY1Rlc3QgdGVzdHMKKyogQWRkZWQgbm9w YWdlIGFyZ3VtZW50IHRvIH5QYWdlTGlzdCBhbmQgYWxsIGl0cyBwbHVnaW5zLiBVbmlxdWUgcm93 cyBvbmx5IG5vdCB5ZXQuCisqIEFkZGVkIGF1dGhvciwgb3duZXIgYXJndW1lbnQgdG8gUmVjZW50 Q2hhbmdlcyBhbmQgYWRkZWQgYWN0aW9uIHBhZ2VzOgorICBNeVJlY2VudENoYW5nZXMsIE15UmVj ZW50RWRpdHMsIFVzZXJDb250cmlicworKiBhZGRlZCBSZWNlbnRDaGFuZ2VzIGZvcm1hdD1jb250 cmlicyBmb3Igfk1vbm9Cb29rIHRoZW1lOiA9PiBVc2VyQ29udHJpYnMKKyogYWRkZWQgfk1vbm9C b29rIGFjY2Vzc2tleXMKKworPT0gMS4zLjEycDMgSnVuLCAxOCAyMDA2LCBSZWluaSBVcmJhbiA9 PQorCisqIGZpeCB+Wy9TdWJwYWdlfl0gbGlua3MKKyogZml4IHByZWYgc3RvcmluZyBvZiBhbHJl YWR5IGNyeXB0ZWQgcGFzc3dvcmRzLiBidWcgIzEzMjc0NzAgKFRvbSBIYXJkaW5nKQorKiBmaXgg Y2FjaGUgaGVhZGVycyBvbiBlcnJvcnMgKEBvYl9lbmRfZmx1c2ggaXNzdWUpLiAobWF0dCBicm93 bikKKyogZml4IH5Cb2dvTG9naW4gd2hlbiBFTkFCTEVfUEFHRVBFUk09ZmFsc2UuIHBhdGNoICMx NDM4MzkyIGJ5IE1hdHQgQnJvd24KKyogdW5pcXVlIFdJS0lfSUQgY29va2llcyBwZXIgV0lLSV9O QU1FLiBwYXRjaCAjMTMzMzk1NyBieSBNYXR0IEJyb3duCisqIGFkZGVkIERBVEFCQVNFX09QVElN SVNFX0ZSRVFVRU5DWSBmZWF0dXJlLiBwYXRjaCAjMTM3NzAxMSBieSBNYXR0IEJyb3duCisqIGRv bid0IGNoZWNrIGxvY2tfdGFibGUgcHJpdiBvbiBhY3Rpb249dXBncmFkZQorKiBmaXggX2FjY2Vz c2xvZy0+bG9ndGFibGUgYW5kIF9pc19idWZmZXJpbmdfb3V0cHV0IHdhcm5pbmdzICh1Y2tlbG1h bikKKyogZG8gbm90IHByaW50IHdyb25nIGxlbmd0aCBoZWFkZXIgb24gdXJsLXJld3JpdGluZy4g YnVnICMxMzc2MDA3CisqIGZpeCBwcmVmLT5zZXQ6IEVycm9yIGdlbmVyYXRlZCB3aGVuIGxvZ2lu IG91dC4gYnVnICMxMzU1NTMzIChUaGllcnJ5IE5hYmV0aCkKKyogZml4IGRlZmF1bHQgcHJlZmVy ZW5jZXMgZm9yIGVkaXRoZWlnaHQgbWF4cm93cywgYnkgTWFudWVsIFZhY2VsZXQuCisqIGZpeCBE QkFVVEggYXJndW1lbnRzIHRvIGJlIHBvc2l0aW9uIGluZGVwZW5kZW50LCBidWcgIzEzNTg5NzMK KyogYWRkIH5QZG9EYlBhc3NVc2VyIHVzZXIKKyogZml4IG91dHB1dCBvZiBIb21lcGFnZSBwcmVm cyB1cGRhdGUKKyogdXBkYXRlIGNvbmZpZy1kaXN0LmluaSBmb3JtYXQgZnJvbSBDVlMKKyogdXBk YXRlIGNvbmZpZ3VyYXRvci5waHAgZnJvbSBDVlMKKyogcHJpbnQgb3B0aW1pemUgd2lraWRiIG9u bHkgd2hlbiBERUJVRworKiBzaW1wbGlmeSBtZXNzYWdlcyBmb3IgdHJhbnNsYXRvcnMKKyogYWRk ZWQgfkltYWdlVGlsZS5waHAKKyogYWRkZWQgdHNlYXJjaDIgdG8gZG9jL0lOU1RBTEwucGdzcWwK KyogYWRkZWQgYmFzZXBhZ2UgdG8ge3t7Q2FjaGVkX1dpa2lMaW5rOjphc1hNTH19fSBmb3Igc3Vi cGFnZXMgd2l0aGluIH5DcmVhdGVUT0MKKyogcHJpbnQgZmlsZW5hbWUgb24gZGJhIGFjY2VzcyBl cnJvcgorKiB1c2UgYmluZF90ZXh0ZG9tYWluX2NvZGVzZXQuIGJ1ZyAjMTQ4MDA3NyAoS2FpIEty YWtvdykKKyogbWFrZSB+VGV4dFNlYXJjaFF1ZXJ5LT5fc3RvcGxpc3QgbG9jYWxpemFibGUgYW5k IG92ZXJyaWRhYmxlIHdpdGhpbiBjb25maWcuaW5pCisqIGZpeGVzIGZvciBteXNxbCA1Lnggd2Fu dGVkcGFnZXMgam9pbgorKiBhZGQgcmVsPW5vZm9sbG93IHRvIG1vcmUgYWN0aW9ucy4gcGF0Y2gg YnkgTWF0dCBCcm93bgorKiBhZGQgdmVyaWZ5IHRvIH5SZXZlcnRQYWdlLCBkaXNwbGF5IHJldmVy dGVkIHBhZ2UgYXMgdGVtcGxhdGUKKyogdXBkYXRlIHBsdWdpbi9+Q2FsZW5kYXJMaXN0OiBwYXRj aGVzIGJ5IG1wdWxsZW4gYW5kIGJhbmpvCisqIHVwZGF0ZSBwbHVnaW4vfkdyYXBoVml6CisqIGFk ZGVkIHBsdWdpbi9+UGFzc3dvcmRSZXNldAorKiBmaXhlZCBoYXNoKCkgaW4gcGx1Z2luL35SYXRl SXQKKyogcGx1Z2luL19+QXV0aEluZm86IHByb3RlY3QgRmlsZSBwYXNzd29yZHMKKyogYWRkZWQg Q2FwdGNoYSB0byBDcmFvIGVkaXQgdGVtcGxhdGUKKyogYWRkZWQgTWFjT1NYIFBkZiBidXR0b24K KyogZml4ZWQgUG9ydGxhbmQgYW5kIFdvcmRwcmVzcyBlZGl0cGFnZSB0ZW1wbGF0ZQorKiByZW1v dmVkIFdvcmRwcmVzcyBidXR0b25zLCB0cmFuc3BhcmVudCBkZWZhdWx0IGJ1dHRvbnMgc2hvdWxk IGJlIHVzZWQuCisqIGRpc2FibGVkIFJlbGF0ZWRDaGFuZ2VzIGJ1dHRvbgorCis9PSAxLjMuMTJw MiBNYXIsIDcgMjAwNiwgUmVpbmkgVXJiYW4gPT0KKworKiBmaXggY2hhbmdlIHByZWZzIGZvciBG aWxlIH5XaWtpVXNlcgorKiBmaXggfkhvbWVwYWdlUHJlZnMgdXBkYXRlIG1lc3NhZ2UKKyogcmVt b3ZlIHBsdWdpbi9JbWRiCisqIGFwcGx5IH5QbHVnaW5Ub29sYmFyQnV0dG9uIGZpeCBmcm9tIGN2 cworCis9PSAxLjMuMTJwMSBNYXIsIDQgMjAwNiwgUmVpbmkgVXJiYW4gPT0KKworKiBmaXggIkNh bGwtdGltZSBwYXNzLWJ5LXJlZmVyZW5jZSIgaW4gfkNyZWF0ZUJpYgorKiBmaXggcGFyc2UgZXJy b3IgaW4gflNpdGVNYXAucGhwCisKKz09IDEuMy4xMiBNYXIsIDQgMjAwNiwgUmVpbmkgVXJiYW4g PT0KKworUmVuYW1lIGZ1bmN0aW9uIGhhc2goKSBhbmQgbWV0aG9kIGZpbmFsKCkgZm9yIHBocC01 LjEgY29tcGF0aWJpbGl0eS4KK0FkZCB2YXJpb3VzIGJhY2twb3J0cyBmcm9tIGN2czoKKworPT09 IEZpeGVzID09PQorKiBmaXggflppcFJlYWRlcgorKiBGaXggIkNhbGwtdGltZSBwYXNzLWJ5LXJl ZmVyZW5jZSBoYXMgYmVlbiBkZXByZWNhdGVkIiBlcnJvcnMsCisgIGFsbG93X2NhbGxfdGltZV9w YXNzX3JlZmVyZW5jZSA9IE9mZgorKiBmaXggYnJva2VuIGxvY2FsZSB1cGRhdGUgZm9yIHBocC01 LjEuMQorKiBkZWZhdWx0IGxvY2FsZSBmaXggYnkgVGhvbWFzIEhhcmRpbmcKKyogZml4IEJ1ZyAj MTM4MTQ2NCAiRHVwbGljYXRlIGZ1bmN0aW9ucyIgd2l0aCBwaHAtNS4xLjEKKyogSW50ZXJXaWtp TWFwOiBhbGxvdyBzcGFjZXMgaW4gcGF0aHMsIGV2ZW4gaW1wbGljaXRseS4gZml4ZXMgYnVnICMx MjE4NzMzCisqIGZpeCAnVk9JRCcgaW4gflRleHRTZWFyY2hRdWVyeQorKiByZW1vdmUgTElNSVQg MSBpbiBBRE9EQgorKiBmaXggU1FMIFdhbnRlZFBhZ2VzCisqIGZpeGVkIGZ1bGx0ZXh0IHNlYXJj aCBhbmQgc3RvcGxpc3QgaGFuZGxpbmcKKyogZml4IGJ1ZyAjMTMyNzkxMiBudW1lcmljIHBhZ2Vu YW1lcyBjYW4gYnJlYWsgcGx1Z2lucyAoSm9hY2hpbSBMb3VzKQorKiBmaXggeG1scnBjIGFuZCB0 ZXN0cy91bml0IGZvciAhcmVnaXN0ZXJfbG9uZ19hcnJheXMKKyogZW5zdXJlIGFic29sdXRlIHVw bG9hZHMgcGF0aAorKiBmaXggfkdvb2dsZU1hcHMgc3ludGF4IGVycm9yCisqIGZpeCB+TGlzdFBh Z2VzIGZvciBub24tU1FMIGJhY2tlbmRzLiBBZGQgdG9wM3JlY3MgYXMgZGVmYXVsdCBvbmx5IGlm CisgIHJhdGluZ3MgYXJlIGF2YWlsYWJsZQorKiBwbHVnaW4vflBhZ2VUcmFpbCBpbXByb3ZlZCBl bXB0eSBjb29raWUKKyogcGx1Z2luL19+V2lraVRyYW5zbGF0aW9uOiBwcm90ZWN0IGFnYWluc3Qg MnggZGVmaW5lCisqIHJlbW92ZSBteXNxbCBzcGVjaWZpYyBJU05VTEwoKQorKiBmaXggc2lnbm91 dCBwcmVmIGVycm9yCisqIGRvbid0IGxvZyBvbiBBQ0NFU1NfTE9HX1NRTCA8IDIKKworPT09IENo YW5nZXMgPT09CisqIGNhY2hlIH5FZGl0VG9vbGJhciBwb3B1cCBjb250ZW50CisqIGJlYXV0aWZ5 IFNDUklQVCBsaW5lcworKiBhZGRlZCBjZmctYWJsZSBtYXJrdXBzIG9ubHkgZm9yIGRlZmF1bHQg flRleHRUcmFuc2Zvcm1hdGlvbiwgbm90CisgIGZvciBsaW5rcyBhbmQgb3RoZXJzCisqIGFkZCBh IHByb3BlciBDb250ZW50LUVuY29kaW5nOiBnemlwIGlmIGNvbXByZXNzZWQsIGFuZCBvbWl0IENv bnRlbnQtTGVuZ3RoIHRoZW4uCisgIFRyaWNrIHRvIHNlbmQgdGhlIGNvcnJlY3QgZ3ppcHBlZCBD b250ZW50LUxlbmd0aAorKiBzZXQgZHNuIGFmdGVyIFNRTC9BRE9EQiBzd2l0Y2hlcyBpbiBXaWtp REIgYmFja2VuZHMgZm9yIGVhc2llciB1bml0IHRlc3RpbmcKKyogZS1tYWlsIG5vdGlmaWNhdGlv bnM6IGJldHRlciBGcm9tOiBoZWFkZXIKKyogYWRkIERCQVVUSF9QUkVGX0lOU0VSVDogc2VsZi1j cmVhdGluZyB1c2Vycy4gYnkgSm9obiBTdGV2ZW5zCisqIGltcHJvdmVkIH5XaWtpVXNlci9MZGFw IGVycm9yIGRlc2NyaXB0aW9uCisqIGNhY2hlIFN5c3RlbUluZm8gbWV0aG9kcworKiB+VmlzdWFs V2lraTogcmVtb3ZlIElOQ0xVREVEIGZyb20gRVhDTFVERUQsIGluY2x1ZGVzIG92ZXJyaWRlIGV4 Y2x1ZGVzLgorKiBpbXByb3ZlIHBvc3RncmVzcWwgc2NoZW1hcyAodHNlYXJjaDIgYW5kIHN0b3Jl ZCBwcm9jZWR1cmVzIG5vdCB5ZXQpCisKKz09PSBOZXcgPT09CisqIGFkZGVkIE5VTV9TUEFNX0xJ TktTIGFzIGNvbmZpZy5pbmkgb3B0aW9uCisqIG5ldyBFTkFCTEVfU1BBTUJMT0NLTElTVCwgbGli L35TcGFtQmxvY2tsaXN0LnBocDoKKyAgY2hlY2sgZXh0ZXJuYWwgbGlua3MgYWdhaW5zdCBzdXJi bC5vcmcgYW5kIGJsLnNwYW1jb3AubmV0CisqIGFkZGVkIENhcHRjaGEgY2xhc3MgYW5kIGJldHRl ciBzcGlyYWwKKyogYWRkZWQgZ2V0X2NhcHRjaGFfcmFuZG9tX3dvcmQoKSBjb250cmlidXRlZCBi eSBEYW4gRnJhbmtvd3NraQorKiBkdW1waHRtbCB3aGVuIG5vdCBhdCBhZG1pbiBwYWdlOiBkdW1w IHRoZSBjdXJyZW50IG9yIGdpdmVuIHBhZ2UKKyogYWRkZWQgcGx1Z2luIH5GaWxlSW5mbworKiBt YWpvciB+UGhvdG9BbGJ1bSBmZWF0dXJlIGVuaGFuY2VtZW50cyBieSBUaG9tYXMgSGFyZGluZzoK KyAgc2xpZGVzIG1vZGUsIHJlYWwgdGh1bWJuYWlscworKiBhZGQgbW9yZSBiYWNrZW5kcyB0byB0 aGUgdGVzdHN1aXRlIChQZWFyREJfcGdzcWwsIC4uLikKKworPT0gMS4zLjExcDEgU2VwLCAxOCAy MDA1LCBSZWluaSBVcmJhbiA9PQorCis9PT0gRml4ZXMgPT09CisqIGFkZGVkIG1pc3NpbmcgcGdz cmMvfk9sZFN0eWxlVGFibGVzUGx1Z2luCisqIGZpeGVkIH5PbGRTdHlsZVRhYmxlcyBwbHVnaW4g d2l0aCBhcmdzCisqIHByb3RlY3QgYWdhaW5zdCBDb250ZW50LUxlbmd0aCBpZiBoZWFkZXJzX3Nl bnQoKQorKiBmaXhlZCBFTkFCTEVfTUFSS1VQX1RFTVBMQVRFIHdhcm5pbmcgaWYgdW5kZWZpbmVk CisqIGZpeGVkIHdyaXRpbmcgdW53YW50ZWQgYWNjZXNzbG9nIHNxbCBlbnRyaWVzCisqIGZpeGVk IFdpa2lBZG1pblNlbGVjdCBwcmVzZWxlY3Rpb24KKyogZml4ZWQgcGFzc2VuY3J5cHQucGhwIGZv ciBQSFA1ICFyZWdpc3Rlcl9sb25nX2FycmF5cworKiBmaXhlZCBjb25maWd1cmF0b3IgZm9yIERB VEFCQVNFX0RTTiwgVVNFUl9BVVRIX09SREVSCisKKz09PSBDaGFuZ2VzID09PQorKiBvcHRpbWl6 ZWQgZXhwbG9kZVBhZ2VMaXN0IHRvIHVzZSBTUUwgd2hlbiBhdmFpbGFibGUKKyAgKHRpdGxlU2Vh cmNoIGluc3RlYWQgb2YgZ2V0QWxsUGFnZXMpCisqIGFkZGVkIG9wdGltaXphdGlvbiBmb3IgYSBu ZXcgQUxMIHRleHRzZWFyY2ggdG9rZW4KKyAgKCogPT4gcGNyZTogLiosIHNxbDogJSkKKyogY29u ZmlndXJhdG9yIHRha2VzIGRlZmF1bHQgZGVzY3JpcHRpb24gZnJvbSBjb25maWctZGlzdC5pbmkK KyogYWRkZWQgc29tZSBtaXNzaW5nIGNvbmZpZ3VyYXRvciBjb25zdGFudHMKKworPT0gMS4zLjEx IFNlcCwgMTEgMjAwNSwgUmVpbmkgVXJiYW4sIEpvZWwgVWNrZWxtYW4gPT0KKworTG90cyBvZiBi dWdmaXhlcywgYW5kIHNvbWUgZmVhdHVyZSBhbmQgcGVyZm9ybWFuY2UgZW5oYW5jZW1lbnRzLgor CitBIG5ldyBFRElUX1RPT0xCQVIgZnJvbSBNZWRpYXdpa2ksIG1vcmUgcGFnZSBwZXJtaXNzaW9u IGVuaGFuY2VtZW50cywKK3JlZHVjZWQgbWVtb3J5IHVzYWdlIGZvciBwYWdlbGlzdHMgd2hpY2gg bmVlZCBubyBwYWdlIGNvbnRlbnQsCityZWxhdGVkIGltcHJvdmVtZW50IGZvciB+T2xkTWFya3Vw IGNyYXNoZXMgYmVjYXVzZSBvZiBQQ1JFIG1lbW9yeSBleGhhdXN0aW9uLgorCitOZXcgPCFwbHVn aW4tbGlzdCAhPiBzeW50YXggYW5kIH5QaHBXaWtpOn5QYWdlTGlzdExpYnJhcnkgYXJncy4KKwor QmVjYXVzZSBvZiBTUUwgY2hhbmdlcyB5b3UnZCBuZWVkIHRvID9hY3Rpb249dXBncmFkZSB0byB1 cGRhdGUgZm9yIFNRTC4KKworPT09IEZpeGVzID09PQorKiBmaXhlZCBjcmFzaCBhZnRlciBsb2dp biwgYnkgZWxpbWluYXRpbmcgZW5kbGVzcyByZWN1cnNpb24gaW4KKyAgZ3JvdXAgaXNBZG1pbigp IGNoZWNrcworKiBmaXhlZCBzeW50YXggZXJyb3JzIGluIHNpZ25pbi50bXBsCisqIGZpeGVkIG1p c3NpbmcgREVCVUcgd2FybmluZ3MgKFN1cHBvcnQgIzk1NDI2MCkKCkBAIERpZmYgb3V0cHV0IHRy dW5jYXRlZCBhdCAxMDAwMDAgY2hhcmFjdGVycy4gQEAKVGhpcyB3YXMgc2VudCBieSB0aGUgU291 cmNlRm9yZ2UubmV0IGNvbGxhYm9yYXRpdmUgZGV2ZWxvcG1lbnQgcGxhdGZvcm0sIHRoZSB3b3Js ZCdzIGxhcmdlc3QgT3BlbiBTb3VyY2UgZGV2ZWxvcG1lbnQgc2l0ZS4KCgoKX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KcGhwd2lraS1jaGVja2lucyBtYWls aW5nIGxpc3QKcGhwd2lraS1jaGVja2luc0BsaXN0cy5zb3VyY2Vmb3JnZS5uZXQKaHR0cHM6Ly9s aXN0cy5zb3VyY2Vmb3JnZS5uZXQvbGlzdHMvbGlzdGluZm8vcGhwd2lraS1jaGVja2lucwo=