RELEASE: GStreamer 1.12.0 stable release
Sebastian Dröge <[email protected]> Thu, 04 May 2017 18:44:47 +0300
| Newsgroups | gmane.comp.video.gstreamer.devel,gmane.comp.gnome.multimedia,gmane.comp.kde.users.multimedia |
|---|---|
| Message-ID | <[email protected]> |
--===============1063011111== Content-Type: multipart/signed; micalg="pgp-sha512"; protocol="application/pgp-signature"; boundary="=-M+llD6ZcUJJIJbU77IaB" --=-M+llD6ZcUJJIJbU77IaB Content-Type: multipart/mixed; boundary="=-vMOSK/VkuoXOMXEF4zUG" --=-vMOSK/VkuoXOMXEF4zUG Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable The GStreamer team is pleased to announce the first release in the stable 1= .12 release series. The 1.12 release series is adding new features on top of th= e 1.0, 1.2, 1.4, 1.6, 1.8 and 1.10 series and is part of the API and ABI-stab= le 1.x release series of the GStreamer multimedia framework. Full release notes can be found here (and attached to this mail): https://gstreamer.freedesktop.org/releases/1.12/ Binaries for Android, iOS, Mac OS X and Windows will be provided in the next days. Release tarballs can be downloaded directly from: https://gstreamer.freedesktop.org/src/gstreamer/gstreamer-1.12.0.tar.xz 14d5eef8297d2bf2a728d38fa43cd92cc267a0ad260cf83d770215212aff4302 gstreamer= -1.12.0.tar.xz https://gstreamer.freedesktop.org/src/gst-plugins-base/gst-plugins-base-1.1= 2.0.tar.xz 345fc6877f54b8b6e97aacf2996be37a51a0e369f53fc2cf83108af9f764364d gst-plugi= ns-base-1.12.0.tar.xz https://gstreamer.freedesktop.org/src/gst-plugins-good/gst-plugins-good-1.1= 2.0.tar.xz 8a1d734db7338e00c28b794a7f0a5a9e67d1c5c8b0074075b50638207d372ebc gst-plugi= ns-good-1.12.0.tar.xz https://gstreamer.freedesktop.org/src/gst-plugins-bad/gst-plugins-bad-1.12.= 0.tar.xz 11b73cfff1b315a8e9be1756435ea84937e7cb90afbab0e8e6975367dbfb8534 gst-plugi= ns-bad-1.12.0.tar.xz https://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-1.1= 2.0.tar.xz 5e68ba5046e83ee87b17d7a13931e6091466fd771e1338c5b929ee0944d40ad6 gst-plugi= ns-ugly-1.12.0.tar.xz https://gstreamer.freedesktop.org/src/gst-libav/gst-libav-1.12.0.tar.xz 39d1477f642ee980b008e78d716b16801eec9a6e5958c5a6cdc0cb04ab0750c4 gst-libav= -1.12.0.tar.xz https://gstreamer.freedesktop.org/src/gst-rtsp-server/gst-rtsp-server-1.12.= 0.tar.xz 85ae6bbe173b365ddf4859967144f1999b436531ecbe09935914bfa9f6b37652 gst-rtsp-= server-1.12.0.tar.xz https://gstreamer.freedesktop.org/src/gst-python/gst-python-1.12.0.tar.xz be33de6b9f21e95f677ef91b142e5249e71c8d7e894a5a4a53e19cf18d5d9c07 gst-pytho= n-1.12.0.tar.xz https://gstreamer.freedesktop.org/src/gst-editing-services/gstreamer-editin= g-services-1.12.0.tar.xz 993372f80cafd5395e90a4bc8bf28733513949a2ae4df987ab0dcc99fc5bab66 gstreamer= -editing-services-1.12.0.tar.xz https://gstreamer.freedesktop.org/src/gst-validate/gst-validate-1.12.0.tar.= xz 73efaf123638b97159c1ff6575dd05ea0cf7dc6d71b07806b5a5f25188a67fbb gst-valid= ate-1.12.0.tar.xz https://gstreamer.freedesktop.org/src/gstreamer-vaapi/gstreamer-vaapi-1.12.= 0.tar.xz 4a1a5a174b3d3a76ce6c123203e7ee535a347d77f9d4f4ffaf69bfbbfeb03ddb gstreamer= -vaapi-1.12.0.tar.xz https://gstreamer.freedesktop.org/src/gst-omx/gst-omx-1.12.0.tar.xz acee8c8a88b995fb95601b7b43bf0c83f502d9026bca5705f9c0dc44a757997e gst-omx-1= .12.0.tar.xz As always, please let us know of any issues you run into by filing a bug in Bugzilla: http://gstreamer.freedesktop.org/bugs/ --=20 Sebastian Dr=C3=B6ge, Centricular Ltd =C2=B7 http://www.centricular.com --=-vMOSK/VkuoXOMXEF4zUG Content-Disposition: attachment; filename="release-notes-1.12.md" Content-Type: text/markdown; name="release-notes-1.12.md"; charset="UTF-8" Content-Transfer-Encoding: base64 IyBHU3RyZWFtZXIgMS4xMiBSZWxlYXNlIE5vdGVzCgpHU3RyZWFtZXIgMS4xMi4wIHdhcyBvcmln aW5hbGx5IHJlbGVhc2VkIG9uIDR0aCBNYXkgMjAxNy4KClRoZSBHU3RyZWFtZXIgdGVhbSBpcyBw cm91ZCB0byBhbm5vdW5jZSBhIG5ldyBtYWpvciBmZWF0dXJlIHJlbGVhc2UgaW4gdGhlCnN0YWJs ZSAxLnggQVBJIHNlcmllcyBvZiB5b3VyIGZhdm91cml0ZSBjcm9zcy1wbGF0Zm9ybSBtdWx0aW1l ZGlhIGZyYW1ld29yayEKCkFzIGFsd2F5cywgdGhpcyByZWxlYXNlIGlzIGFnYWluIHBhY2tlZCB3 aXRoIG5ldyBmZWF0dXJlcywgYnVnIGZpeGVzIGFuZCBvdGhlcgppbXByb3ZlbWVudHMuCgpTZWUg W2h0dHBzOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9yZWxlYXNlcy8xLjEyL11bbGF0ZXN0 XSBmb3IgdGhlIGxhdGVzdAp2ZXJzaW9uIG9mIHRoaXMgZG9jdW1lbnQuCgoqTGFzdCB1cGRhdGVk OiBUaHVyc2RheSA0IE1heSAyMDE3LCAxMTowMCBVVEMgWyhsb2cpXVtnaXRsb2ddKgoKW2xhdGVz dF06IGh0dHBzOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9yZWxlYXNlcy8xLjEyLwpbZ2l0 bG9nXTogaHR0cHM6Ly9jZ2l0LmZyZWVkZXNrdG9wLm9yZy9nc3RyZWFtZXIvd3d3L2xvZy9zcmMv aHRkb2NzL3JlbGVhc2VzLzEuMTIvcmVsZWFzZS1ub3Rlcy0xLjEyLm1kCgojIyBJbnRyb2R1Y3Rp b24KClRoZSBHU3RyZWFtZXIgdGVhbSBpcyBwcm91ZCB0byBhbm5vdW5jZSBhIG5ldyBtYWpvciBm ZWF0dXJlIHJlbGVhc2UgaW4gdGhlCnN0YWJsZSAxLnggQVBJIHNlcmllcyBvZiB5b3VyIGZhdm91 cml0ZSBjcm9zcy1wbGF0Zm9ybSBtdWx0aW1lZGlhIGZyYW1ld29yayEKCkFzIGFsd2F5cywgdGhp cyByZWxlYXNlIGlzIGFnYWluIHBhY2tlZCB3aXRoIG5ldyBmZWF0dXJlcywgYnVnIGZpeGVzIGFu ZCBvdGhlcgppbXByb3ZlbWVudHMuCgojIyBIaWdobGlnaHRzCgotIG5ldyBgbXNka2AgcGx1Z2lu IGZvciBJbnRlbCdzIE1lZGlhIFNESyBmb3IgaGFyZHdhcmUtYWNjZWxlcmF0ZWQgdmlkZW8KICBl bmNvZGluZyBhbmQgZGVjb2Rpbmcgb24gSW50ZWwgZ3JhcGhpY3MgaGFyZHdhcmUgb24gV2luZG93 cyBvciBMaW51eC4KCi0gYHgyNjRlbmNgIGNhbiBub3cgdXNlIG11bHRpcGxlIHgyNjQgbGlicmFy eSB2ZXJzaW9ucyBjb21waWxlZCBmb3IgZGlmZmVyZW50CiAgYml0IGRlcHRocyBhdCBydW50aW1l LCB0byB0cmFuc3BhcmVudGx5IHByb3ZpZGUgc3VwcG9ydCBmb3IgbXVsdGlwbGUgYml0CiAgZGVw dGhzLgoKLSBgdmlkZW9zY2FsZWAgYW5kIGB2aWRlb2NvbnZlcnRgIG5vdyBzdXBwb3J0IG11bHRp LXRocmVhZGVkIHNjYWxpbmcgYW5kCiAgY29udmVyc2lvbiwgd2hpY2ggaXMgcGFydGljdWxhcmx5 IHVzZWZ1bCB3aXRoIGhpZ2hlciByZXNvbHV0aW9uIHZpZGVvLgoKLSBgaDI2NHBhcnNlYCB3aWxs IG5vdyBhdXRvbWF0aWNhbGx5IGluc2VydCBBVSBkZWxpbWl0ZXJzIGlmIG5lZWRlZCB3aGVuCiAg b3V0cHV0dGluZyBieXRlLXN0cmVhbSBmb3JtYXQsIHdoaWNoIGltcHJvdmVzIHN0YW5kYXJkIGNv bXBsaWFuY2UgYW5kCiAgaXMgbmVlZGVkIGluIHBhcnRpY3VsYXIgZm9yIEhMUyBwbGF5YmFjayBv biBpT1MvbWFjT1MuCgotIGBydHBiaW5gIGhhcyBhY3F1aXJlZCBidW5kbGUgc3VwcG9ydCBmb3Ig aW5jb21pbmcgc3RyZWFtcwoKIyMgTWFqb3IgbmV3IGZlYXR1cmVzIGFuZCBjaGFuZ2VzCgojIyMg Tm90ZXdvcnRoeSBuZXcgQVBJCgotIFRoZSB2aWRlbyBsaWJyYXJ5IGdhaW5lZCBzdXBwb3J0IGZv ciBhIG51bWJlciBvZiBuZXcgdmlkZW8gZm9ybWF0czoKCiAgLSBgR0JSXzEyTEVgLCBgR0JSXzEy QkVgLCBgR0JSQV8xMkxFYCwgYEdCUkFfMTJCRWAgKHBsYW5hciA0OjQ6NCBSR0IvUkdCQSwgMTIg Yml0cyBwZXIgY2hhbm5lbCkKICAtIGBHQlJBXzEwTEVgLCBgR0JSQV8xMEJFYCAocGxhbmFyIDQ6 NDo0OjQgUkdCQSwgMTAgYml0cyBwZXIgY2hhbm5lbCkKICAtIGBHQlJBYCAocGxhbmFyIDQ6NDo0 OjQgQVJHQiwgOCBiaXRzIHBlciBjaGFubmVsKQogIC0gYEk0MjBfMTJCRWAsIGBJNDIwXzEyTEVg IChwbGFuYXIgNDoyOjAgWVVWLCAxMiBiaXRzIHBlciBjaGFubmVsKQogIC0gYEk0MjJfMTJCRWAs YEk0MjJfMTJMRWAgKHBsYW5hciA0OjI6MiBZVVYsIDEyIGJpdHMgcGVyIGNoYW5uZWwpCiAgLSBg WTQ0NF8xMkJFYCwgYFk0NDRfMTJMRWAgKHBsYW5hciA0OjQ6NCBZVVYsIDEyIGJpdHMgcGVyIGNo YW5uZWwpCiAgLSBgVllVWWAgKGFub3RoZXIgcGFja2VkIDQ6MjoyIFlVViBmb3JtYXQpCgotIFRo ZSBoaWdoLWxldmVsIGBHc3RQbGF5ZXJgIEFQSSB3YXMgZXh0ZW5kZWQgd2l0aCBmdW5jdGlvbnMg Zm9yIHRha2luZyB2aWRlbwogIHNuYXBzaG90cyBhbmQgZW5hYmxpbmcgYWNjdXJhdGUgc2Vla2lu Zy4gSXQgY2FuIG9wdGlvbmFsbHkgYWxzbyB1c2UgdGhlCiAgc3RpbGwtZXhwZXJpbWVudGFsIGBw bGF5YmluM2AgZWxlbWVudCBub3cuCgojIyMgTmV3IEVsZW1lbnRzCgotIG1zZGs6IG5ldyBwbHVn aW4gZm9yIEludGVsJ3MgTWVkaWEgU0RLIGZvciBoYXJkd2FyZS1hY2NlbGVyYXRlZCB2aWRlbyBl bmNvZGluZwogIGFuZCBkZWNvZGluZyBvbiBJbnRlbCBncmFwaGljcyBoYXJkd2FyZSBvbiBXaW5k b3dzIG9yIExpbnV4LiBUaGlzIGluY2x1ZGVzCiAgYW4gSC4yNjQgZW5jb2Rlci9kZWNvZGVyIChg bXNka2gyNjRkZWNgLCBgbXNka2gyNjRlbmNgKSwKICBhbiBILjI2NSBlbmNvZGVyL2RlY29kZXIg KGBtc2RraDI2NWRlY2AsIGBtc2RraDI2NWVuY2ApLAogIGFuIE1KUEVHIGVuY29kZXIvZW5jb2Rl ciAoYG1zZGttanBlZ2RlY2AsIGBtc2RrbWpwZWdlbmNgKSwKICBhbiBNUEVHLTIgdmlkZW8gZW5j b2RlciAoYG1zZGttcGVnMmVuY2ApIGFuZCBhIFZQOCBlbmNvZGVyIChgbXNka3ZwOGVuY2ApLgoK LSBgaXFhYCBpcyBhIG5ldyBJbWFnZSBRdWFsaXR5IEFzc2Vzc21lbnQgcGx1Z2luIGJhc2VkIG9u IFtEU1NJTV1bZHNzaW1dLAogIHNpbWlsYXIgdG8gdGhlIG9sZCAodW5wb3J0ZWQpIHZpZGVvbWVh c3VyZSBlbGVtZW50LgoKLSBUaGUgYGZhY2VvdmVybGF5YCBlbGVtZW50LCB3aGljaCBhbGxvd3Mg eW91IHRvIG92ZXJsYXkgU1ZHIGdyYXBoaWNzIG92ZXIKICBhIGRldGVjdGVkIGZhY2UgaW4gYSB2 aWRlbyBzdHJlYW0sIGhhcyBiZWVuIHBvcnRlZCBmcm9tIDAuMTAuCgotIG91ciBgZmZtcGVnYCB3 cmFwcGVyIHBsdWdpbiBub3cgZXhwb3Nlcy9tYXBzIHRoZSBmZm1wZWcgT3B1cyBhdWRpbyBkZWNv ZGVyCiAgKGBhdmRlY19vcHVzYCkgYXMgd2VsbCBhcyB0aGUgR29Qcm8gQ2luZUZvcm0gSEQgLyBD RkhEIGRlY29kZXIgKGBhdmRlY19jZmhkYCksCiAgYW5kIGFsc28gYSBwYXJzZXIvd3JpdGVyIGZv ciB0aGUgSVZGIGZvcm1hdCAoYGF2ZGVtdXhfaXZmYCBhbmQgYGF2bXV4X2l2ZmApLgoKLSBgYXVk aW9idWZmZXJzcGxpdGAgaXMgYSBuZXcgZWxlbWVudCB0aGF0IHNwbGl0cyByYXcgYXVkaW8gYnVm ZmVycyBpbnRvCiAgZXF1YWwtc2l6ZWQgYnVmZmVycwoKLSBgYXVkaW9taXhtYXRyaXhgIGlzIGEg bmV3IGVsZW1lbnQgdGhhdCBtaXhlcyBOOk0gYXVkaW8gY2hhbm5lbHMgYWNjb3JkaW5nIHRvCiAg YSBjb25maWd1cmVkIG1peCBtYXRyaXguCgotIFRoZSBgdGltZWNvZGV3YWl0YCBlbGVtZW50IGdv dCByZW5hbWVkIHRvIGBhdndhaXRgIGFuZCBjYW4gb3BlcmF0ZSBpbgogIGRpZmZlcmVudCBtb2Rl cyBub3cuCgotIFRoZSBgb3BlbmN2YCB2aWRlbyBwcm9jZXNzaW5nIHBsdWdpbiBoYXMgZ2FpbmVk IGEgbmV3IGBkZXdhcnBgIGVsZW1lbnQgdGhhdAogIGRld2FycHMgZmlzaGV5ZSBpbWFnZXMuCgot IGB0dG1sYCBpcyBhIG5ldyBwbHVnaW4gZm9yIHBhcnNpbmcgYW5kIHJlbmRlcmluZyBzdWJ0aXRs ZXMgaW4gVGltZWQgVGV4dAogIE1hcmt1cCBMYW5ndWFnZSAoVFRNTCkgZm9ybWF0LiBGb3IgdGhl IHRpbWUgYmVpbmcgdGhlc2UgZWxlbWVudHMgd2lsbCBub3QKICBiZSBhdXRvcGx1Z2dlZCBkdXJp bmcgbWVkaWEgcGxheWJhY2sgaG93ZXZlciwgdW5sZXNzIHRoZSBgR1NUX1RUTUxfQVVUT1BMVUc9 MWAKICBlbnZpcm9ubWVudCB2YXJpYWJsZSBpcyBzZXQuIE9ubHkgdGhlIEVCVS1UVC1EIHByb2Zp bGUgaXMgc3VwcG9ydGVkIGF0IHRoaXMKICBwb2ludC4KCltkc3NpbV06IGh0dHBzOi8vZ2l0aHVi LmNvbS9wb3JuZWwvZHNzaW0KCiMjIyBOZXcgZWxlbWVudCBmZWF0dXJlcyBhbmQgYWRkaXRpb25z CgotIGB4MjY0ZW5jYCBjYW4gbm93IHVzZSBtdWx0aXBsZSB4MjY0IGxpYnJhcnkgdmVyc2lvbnMg Y29tcGlsZWQgZm9yIGRpZmZlcmVudAogIGJpdCBkZXB0aHMgYXQgcnVudGltZSwgdG8gdHJhbnNw YXJlbnRseSBwcm92aWRlIHN1cHBvcnQgZm9yIG11bHRpcGxlIGJpdAogIGRlcHRocy4gQSBuZXcg Y29uZmlndXJlIHBhcmFtZXRlciBgLS13aXRoLXgyNjQtbGlicmFyaWVzYCBoYXMgYmVlbiBhZGRl ZCB0bwogIHNwZWNpZnkgYWRkaXRpb25hbCBwYXRocyB0byBsb29rIGZvciBhZGRpdGlvbmFsIHgy NjQgbGlicmFyaWVzIHRvIGxvYWQuCiAgQmFja2dyb3VuZCBpcyB0aGF0IHRoZSBsaWJ4MjY0IGxp YnJhcnkgaXMgYWx3YXlzIGNvbXBpbGUgZm9yIG9uZSBzcGVjaWZpYwogIGJpdCBkZXB0aCBhbmQg dGhlIGB4MjY0ZW5jYCBlbGVtZW50IHdvdWxkIHNpbXBseSBzdXBwb3J0IHRoZSBkZXB0aCBzdXBw b3J0ZWQKICBieSB0aGUgdW5kZXJseWluZyBsaWJyYXJ5LiBOb3cgd2UgY2FuIHN1cHBvcnQgbXVs dGlwbGUgZGVwdGhzLgoKLSBgeDI2NGVuY2AgYWxzbyBwaWNrcyB1cCB0aGUgaW50ZXJsYWNpbmcg bW9kZSBhdXRvbWF0aWNhbGx5IGZyb20gdGhlIGlucHV0CiAgY2FwcyBub3cgYW5kIHBhc3NlZCBp bnRlcmxhY2luZy9URkYgaW5mb3JtYXRpb24gY29ycmVjdGx5IHRvIHRoZSBsaWJyYXJ5LgoKLSBg dmlkZW9zY2FsZWAgYW5kIGB2aWRlb2NvbnZlcnRgIG5vdyBzdXBwb3J0IG11bHRpLXRocmVhZGVk IHNjYWxpbmcgYW5kCiAgY29udmVyc2lvbiwgd2hpY2ggaXMgcGFydGljdWxhcmx5IHVzZWZ1bCB3 aXRoIGhpZ2hlciByZXNvbHV0aW9uIHZpZGVvLgogIFRoaXMgaGFzIHRvIGJlIGVuYWJsZWQgZXhw bGljaXRseSB2aWEgdGhlIGAibi10aHJlYWRzImAgcHJvcGVydHkuCgotIGB2aWRlb3JhdGVgJ3Mg bmV3IGAicmF0ZSJgIHByb3BlcnR5IGxldHMgeW91IHNldCBhIHNwZWVkIGZhY3RvcgogIG9uIHRo ZSBvdXRwdXQgc3RyZWFtCgotIGBzcGxpdG11eHNpbmtgJ3MgYnVmZmVyIGNvbGxlY3Rpb24gYW5k IHNjaGVkdWxpbmcgd2FzIHJld3JpdHRlbiB0byBtYWtlCiAgcHJvY2Vzc2luZyBhbmQgc3BsaXR0 aW5nIGRldGVybWluaXN0aWM7IGJlZm9yZSBpdCB3YXMgcG9zc2libGUgZm9yIGEgYnVmZmVyCiAg dG8gZW5kIHVwIGluIGEgZGlmZmVyZW50IGZpbGUgY2h1bmsgaW4gZGlmZmVyZW50IHJ1bnMuIGBz cGxpdG11eHNpbmtgIGFsc28KICBnYWluZWQgYSBuZXcgYCJmb3JtYXQtbG9jYXRpb24tZnVsbCJg IHNpZ25hbCB0aGF0IHdvcmtzIGp1c3QgbGlrZSB0aGUgZXhpc3RpbmcKICBgImZvcm1hdC1sb2Nh dGlvbiJgIHNpZ25hbCBvbmx5IHRoYXQgaXQgaXMgYWxzbyBwYXNzZWQgdGhlIHByaW1hcnkgc3Ry ZWFtJ3MKICBmaXJzdCBidWZmZXIgYXMgYXJndW1lbnQsIHNvIHRoYXQgaXQgaXMgcG9zc2libGUg dG8gY29uc3RydWN0IHRoZSBmaWxlIG5hbWUKICBiYXNlZCBvbiBtZXRhZGF0YSBzdWNoIGFzIHRo ZSBidWZmZXIgdGltZXN0YW1wIG9yIGFueSBHc3RNZXRhIGF0dGFjaGVkIHRvCiAgdGhlIGJ1ZmZl ci4gVGhlIG5ldyBgIm1heC1zaXplLXRpbWVjb2RlImAgcHJvcGVydHkgYWxsb3dzIGZvciB0aW1l Y29kZS1iYXNlZAogIHNwbGl0dGluZy4gYHNwbGl0bXV4c2lua2Agd2lsbCBub3cgYWxzbyBhdXRv bWF0aWNhbGx5IHN0YXJ0IGEgbmV3IGZpbGUgaWYgdGhlCiAgaW5wdXQgY2FwcyBjaGFuZ2UgaW4g YW4gaW5jb21wYXRpYmxlIHdheS4KCi0gYGZha2VzaW5rYCBoYXMgYSBuZXcgYCJkcm9wLW91dC1v Zi1zZWdtZW50ImAgcHJvcGVydHkgdG8gbm90IGRyb3AKICBvdXQtb2Ytc2VnbWVudCBidWZmZXJz LCB3aGljaCBpcyB1c2VmdWwgZm9yIGRlYnVnZ2luZyBwdXJwb3Nlcy4KCi0gYGlkZW50aXR5YCBn YWluZWQgYSBgInRzLW9mZnNldCJgIHByb3BlcnR5LgoKLSBib3RoIGBmYWtlc2lua2AgYW5kIGBp ZGVudGl0eWAgbm93IGFsc28gcHJpbnQgd2hhdCBraW5kIG9mIG1ldGFzIGFyZSBhdHRhY2hlZAog IHRvIGJ1ZmZlcnMgd2hlbiBwcmludGluZyBidWZmZXIgZGV0YWlscyB2aWEgdGhlIGAibGFzdC1t ZXNzYWdlImAgcHJvcGVydHkKICB1c2VkIGJ5IGBnc3QtbGF1bmNoLTEuMCAtdmAuCgotIG11bHRp cXVldWU6IG1hZGUgYCJtaW4taW50ZXJsZWF2ZS10aW1lImAgYSBjb25maWd1cmFibGUgcHJvcGVy dHkuCgotIHZpZGVvIG5lcmRzIHdpbGwgYmUgdGhyaWxsZWQgdG8ga25vdyB0aGF0IGB2aWRlb3Rl c3RzcmNgJ3Mgc25vdyBpcyBub3cKICBkZXRlcm1pbmlzdGljLiBgdmlkZW90ZXN0c3JjYCBhbHNv IGdhaW5lZCBzb21lIG5ldyBwcm9wZXJ0aWVzIHRvIG1ha2UgdGhlCiAgYmFsbCBwYXR0ZXJuIGJh c2VkIG9uIHN5c3RlbSB0aW1lLCBhbmQgaW52ZXJ0IGNvbG91cnMgZWFjaCBzZWNvbmQKICAoYCJh bmltYXRpb24tbW9kZSJgLCBgIm1vdGlvbiJgLCBhbmQgYCJmbGlwImAgcHJvcGVydGllcykuCgot IGBvZ2dkZW11eGAgcmV2ZXJzZSBwbGF5YmFjayBzaG91bGQgd29yayBhZ2FpbiBub3cuIFlvdSdy ZSB3ZWxjb21lLgoKLSBgcGxheWJpbjNgIGFuZCBgdXJpc291cmNlYmluYCBub3cgaGF2ZSBidWZm ZXJpbmcgZW5hYmxlZCBieSBkZWZhdWx0LCBhbmQKICBidWZmZXJpbmcgbWVzc2FnZSBhZ2dyZWdh dGlvbiB3YXMgZml4ZWQuCgotIGB0Y3BjbGllbnRzcmNgIG5vdyBoYXMgYSBgInRpbWVvdXQiYCBw cm9wZXJ0eQoKLSBgYXBwc2lua2AgaGFzIGdhaW5lZCBzdXBwb3J0IGZvciBidWZmZXIgbGlzdHMu IEZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eQogIHJlYXNvbnMgdXNlcnMgbmVlZCB0byBlbmFi bGUgdGhpcyBleHBsaWNpdGx5IHdpdGggYGdzdF9hcHBfc2lua19zZXRfYnVmZmVyX2xpc3Rfc3Vw cG9ydCgpYCwKICBob3dldmVyLiBPbmNlIGFjdGl2YXRlZCwgYSBwdWxsZWQgYEdzdFNhbXBsZWAg Y2FuIGNvbnRhaW4gZWl0aGVyIGEgYnVmZmVyCiAgbGlzdCBvciBhIHNpbmdsZSBidWZmZXIuCgot IGBzcGxpdG11eHNyY2AgcmV2ZXJzZSBwbGF5YmFjayB3YXMgZml4ZWQgYW5kIGhhbmRsaW5nIG9m IHNwYXJzZSBzdHJlYW1zLCBzdWNoCiAgYXMgc3VidGl0bGUgdHJhY2tzIG9yIG1ldGFkYXRhIHRy YWNrcywgd2FzIGltcHJvdmVkLgoKLSBgbWF0cm9za2FtdXhgIGhhcyBhY3F1aXJlZCBzdXBwb3J0 IGZvciBtdXhpbmcgRzcyMiBhdWRpbzsgaXQgYWxzbyBtYXJrcyBhbGwKICBidWZmZXJzIGFzIGtl eWZyYW1lcyBub3cgd2hlbiBzdHJlYW1pbmcgb25seSBhdWRpbywgc28gdGhhdCBgdGNwc2VydmVy c2lua2AKICB3aWxsIGJlaGF2ZSBwcm9wZXJseSB3aXRoIGF1ZGlvLW9ubHkgc3RyZWFtcy4KCi0g YHF0bXV4YCBnYWluZWQgc3VwcG9ydCBmb3IgUHJvUmVzIDQ0NDQgWFEsIEhFVkMvSC4yNjUgYW5k IENpbmVGb3JtIChHb1BybykgZm9ybWF0cywKICBhbmQgZ2VuZXJhbGx5IHdyaXRlcyBtb3JlIHZp ZGVvIHN0cmVhbS1yZWxhdGVkIG1ldGFkYXRhIGludG8gdGhlIHRyYWNrIGhlYWRlcnMuCiAgSXQg aXMgYWxzbyBhbGxvd3MgY29uZmlndXJhdGlvbiBvZiB0aGUgbWF4aW11bSBpbnRlcmxlYXZlIHNp emUgaW4gYnl0ZXMgYW5kCiAgdGltZSBub3cuIEZvciBmcmFnbWVudGVkIG1wNCB3ZSBhbHdheXMg d3JpdGUgdGhlIGB0ZmR0YCBhdG9tIG5vdyBhcyByZXF1aXJlZAogIGJ5IHRoZSBEQVNIIHNwZWMu CgotIGBxdGRlbXV4YCBzdXBwb3J0cyBGTEFDLCB4dmlkLCBtcDIsIFMxNkwgYW5kIENpbmVGb3Jt IChHb1BybykgdHJhY2tzIG5vdywgYW5kCiAgZ2VuZXJhbGx5IHRyaWVzIGhhcmRlciB0byBleHRy YWN0IG1vcmUgdmlkZW8tcmVsYXRlZCBpbmZvcm1hdGlvbiBmcm9tIHRyYWNrCiAgaGVhZGVycywg c3VjaCBhcyBjb2xvcmltZXRyeSBvciBpbnRlcmxhY2luZyBkZXRhaWxzLiBJdCBhbHNvIHJlY2Vp dmVkIGEKICBjb3VwbGUgb2YgZml4ZXMgZm9yIHRoZSBzY2VuYXJpbyB3aGVyZSB1cHN0cmVhbSBv cGVyYXRlcyBpbiBUSU1FIGZvcm1hdCBhbmQKICBmZWVkcyBjaHVua3MgdG8gcXRkZW11eCAoZS5n LiBEQVNIIG9yIE1TRSkuCgotIGBhdWRpb2VjaG9gIGhhcyB0d28gbmV3IHByb3BlcnRpZXMgdG8g YXBwbHkgYSBkZWxheSBvbmx5IHRvIGNlcnRhaW4gY2hhbm5lbHMKICB0byBjcmVhdGUgYSBzdXJy b3VuZCBlZmZlY3QsIHJhdGhlciB0aGFuIGFuIGVjaG8gb24gYWxsIGNoYW5uZWxzLiBUaGlzIGlz CiAgdXNlZnVsIHdoZW4gdXBtaXhpbmcgZnJvbSBzdGVyZW8sIGZvciBleGFtcGxlLiBUaGUgYCJz dXJyb3VuZC1kZWxheSJgIHByb3BlcnR5CiAgZW5hYmxlcyB0aGlzLCBhbmQgdGhlIGAic3Vycm91 bmQtbWFzayJgIHByb3BlcnR5IGNvbnRyb2xzIHdoaWNoIGNoYW5uZWxzCiAgYXJlIGNvbnNpZGVy ZWQgc3Vycm91bmQgc291bmQgY2hhbm5lbHMgaW4gdGhpcyBjYXNlLgoKLSBgd2VicnRjZHNwYCBn YWluZWQgdmFyaW91cyBuZXcgcHJvcGVydGllcyBmb3IgZ2FpbiBjb250cm9sIGFuZCBhbHNvIGV4 cG9zZXMKICB2b2ljZSBhY3Rpdml0eSBkZXRlY3Rpb24gbm93LCBpbiB3aGljaCBjYXNlIGl0IHdp bGwgcG9zdCBgInZvaWNlLWFjdGl2aXR5ImAKICBtZXNzYWdlcyBvbiB0aGUgYnVzIHdoZW5ldmVy IHRoZSB2b2ljZSBkZXRlY3Rpb24gc3RhdHVzIGNoYW5nZXMuCgotIFRoZSBgZGVja2xpbmtgIGNh cHR1cmUgZWxlbWVudHMgZm9yIEJsYWNrbWFnaWMgRGVja2xpbmsgY2FyZHMgaGF2ZSBzZWVuIGEK ICBudW1iZXIgb2YgaW1wcm92ZW1lbnRzOgoKICAtIGBkZWNrbGlua3ZpZGVvc3JjYCB3aWxsIHBv c3QgYSB3YXJuaW5nIG1lc3NhZ2Ugb24gIm5vIHNpZ25hbCIgYW5kIGFuIGluZm8KICAgIG1lc3Nh Z2Ugd2hlbiB0aGUgc2lnbmFsIGxvY2sgaGFzIGJlZW4gKHJlKWFjcXVpcmVkLiBUaGVyZSBpcyBh bHNvIGEgbmV3CiAgICByZWFkLW9ubHkgYCJzaWduYWwiYCBwcm9wZXJ0eSB0aGF0IGNhbiBiZSB1 c2VkIHRvIHF1ZXJ5IHRoZSBzaWduYWwgbG9jawogICAgc3RhdHVzLiBUaGUgYEdBUGAgZmxhZyB3 aWxsIGJlIHNldCBvbiBidWZmZXJzIHRoYXQgYXJlIGNhcHR1cmVkIHdpdGhvdXQKICAgIGEgc2ln bmFsIGxvY2suIFRoZSBuZXcgYGRyb3Atbm8tc2lnbmFsLWZyYW1lc2Agd2lsbCBtYWtlIGBkZWNr bGlua3ZpZGVvc3JjYAogICAgZHJvcCBhbGwgYnVmZmVycyB0aGF0IGhhdmUgYmVlbiBjYXB0dXJl ZCB3aXRob3V0IGFuIGlucHV0IHNpZ25hbC4gVGhlCiAgICBgInNraXAtZmlyc3QtdGltZSJgIHBy b3BlcnR5IHdpbGwgbWFrZSB0aGUgc291cmNlIGRyb3AgdGhlIGZpcnN0IGZldwogICAgYnVmZmVy cywgd2hpY2ggaXMgaGFuZHkgc2luY2Ugc29tZSBkZXZpY2VzIHdpbGwgYXQgZmlyc3Qgb3V0cHV0 IGJ1ZmZlcnMKICAgIHdpdGggdGhlIHdyb25nIHJlc29sdXRpb24gYmVmb3JlIHRoZXkgbWFuYWdl IHRvIGZpZ3VyZSBvdXQgdGhlIHJpZ2h0IGlucHV0CiAgICBmb3JtYXQgYW5kIGRlY2lkZSBvbiB0 aGUgYWN0dWFsIG91dHB1dCBjYXBzLgoKICAtIGBkZWNrbGlua2F1ZGlvc3JjYCBzdXBwb3J0cyBt b3JlIHRoYW4ganVzdCAyIGF1ZGlvIGNoYW5uZWxzIG5vdy4KCiAgLSBUaGUgY2FwdHVyZSBzb3Vy Y2VzIG5vIGxvbmdlciB1c2UgdGhlICJoYXJkd2FyZSIgdGltZXN0YW1wcyB3aGljaCB0dXJuCiAg ICBvdXQgdG8gYmUgdXNlbGVzcyBhbmQgaW5zdGVhZCBqdXN0IHVzZSB0aGUgcGlwZWxpbmUgY2xv Y2sgZGlyZWN0bHkuCgotIGBzcnRwZGVjYCBub3cgYWxzbyBoYXMgYSByZWFkb25seSBgInN0YXRz ImAgcHJvcGVydHksIGp1c3QgbGlrZSBgc3J0cGVuY2AuCgotIGBydHBiaW5gIGdhaW5lZCBSVFAg YnVuZGxlIHN1cHBvcnQsIGFzIHVzZWQgYnkgZS5nLiBXZWJSVEMuIFRoZSBmaXJzdAogICBydHBz ZXNzaW9uIHdpbGwgaGF2ZSBhIGBydHBzc3JjZGVtdXhgIGVsZW1lbnQgaW5zaWRlIHNwbGl0dGlu ZyB0aGUgc3RyZWFtcwogICBiYXNlZCBvbiB0aGVpciBTU1JDIGFuZCBwb3RlbnRpYWxseSBkaXNw YXRjaCB0byBhIGRpZmZlcmVudCBydHBzZXNzaW9uLgogICBCZWNhdXNlIHJldHJhbnNtaXNzaW9u IFNTUkNzIG5lZWQgdG8gYmUgbWVyZ2VkIHdpdGggdGhlIGNvcnJlc3BvbmRpbmcgbWVkaWEKICAg c3RyZWFtIHRoZSBgOjpvbi1idW5kbGVkLXNzcmNgIHNpZ25hbCBpcyBlbWl0dGVkIG9uIGBydHBi aW5gIHNvIHRoYXQgdGhlCiAgIGFwcGxpY2F0aW9uIGNhbiBmaW5kIG91dCB0byB3aGljaCBzZXNz aW9uIHRoZSBTU1JDIGJlbG9uZ3MuCgotIGBydHBydHhxdWV1ZWAgZ2FpbmVkIHR3byBuZXcgcHJv cGVydGllcyBleHBvc2luZyByZXRyYW5zbWlzc2lvbgogIHN0YXRpc3RpY3MgKGAicmVxdWVzdHMi YCBhbmQgYCJmdWxmaWxsZWQtcmVxdWVzdHMiYCkKCi0gYGttc3NpbmtgIHdpbGwgbm93IHVzZSB0 aGUgcHJlZmVycmVkIG1vZGUgZm9yIHRoZSBtb25pdG9yIGFuZCByZW5kZXIgdG8gdGhlCiAgYmFz ZSBwbGFuZSBpZiBub3RoaW5nIGVsc2UgaGFzIHNldCBhIG1vZGUgeWV0LiBUaGlzIGNhbiBhbHNv IGJlIGRvbmUgZm9yY2libHkKICBpbiBhbnkgY2FzZSB2aWEgdGhlIG5ldyBgImZvcmNlLW1vZGVz ZXR0aW5nImAgcHJvcGVydHkuIEZ1cnRoZXJtb3JlLCBga21zc2lua2AKICBub3cgYWxsb3dzIG9u bHkgdGhlIHN1cHBvcnRlZCBjb25uZWN0b3IgcmVzb2x1dGlvbnMgYXMgaW5wdXQgY2FwcyBpbiBv cmRlciB0bwogIGF2b2lkIHNjYWxpbmcgb3IgcG9zaXRpb25pbmcgb2YgdGhlIGlucHV0IHN0cmVh bSwgYXMgYGttc3NpbmtgIGNhbid0IGtub3cKICB3aGV0aGVyIHNjYWxpbmcgb3IgcG9zaXRpb25p bmcgd291bGQgYmUgbW9yZSBhcHByb3ByaWF0ZSBmb3IgdGhlIHVzZSBjYXNlIGF0CiAgaGFuZC4K Ci0gYHdheWxhbmRzaW5rYCBjYW4gbm93IHRha2UgRE1BYnVmIGJ1ZmZlcnMgYXMgaW5wdXQgaW4g dGhlIHByZXNlbmNlCiAgb2YgYSBjb21wYXRpYmxlIFdheWxhbmQgY29tcG9zaXRvci4gVGhpcyBl bmFibGVzIHplcm8tY29weSB0cmFuc2ZlcgogIGZyb20gYSBkZWNvZGVyIG9yIHNvdXJjZSB0aGF0 IG91dHB1dHMgRE1BYnVmLgoKLSBgdWRwc3JjYCBjYW4gYmUgYm91bmQgdG8gbW9yZSB0aGFuIG9u ZSBpbnRlcmZhY2Ugd2hlbiBqb2luaW5nIGEKICBtdWx0aWNhc3QgZ3JvdXAsIHRoaXMgaXMgZG9u ZSBieSBnaXZpbmcgYSBjb21tYSBzZXBhcmF0ZSBsaXN0IG9mCiAgaW50ZXJmYWNlcyBzdWNoIGFz IG11bHRpY2FzdC1pZmFjZT0iZXRoMCxldGgxIi4KCiMjIyBQbHVnaW4gbW92ZXMKCi0gYGRhdGF1 cmlzcmNgIG1vdmVkIGZyb20gZ3N0LXBsdWdpbnMtYmFkIHRvIGNvcmUKCi0gVGhlIGByYXdwYXJz ZWAgcGx1Z2luIGNvbnRhaW5pbmcgdGhlIGByYXdhdWRpb3BhcnNlYCBhbmQgYHJhd3ZpZGVvcGFy c2VgCiAgZWxlbWVudHMgbW92ZWQgZnJvbSBnc3QtcGx1Z2lucy1iYWQgdG8gZ3N0LXBsdWdpbnMt YmFzZS4gVGhlc2UgZWxlbWVudHMKICBzdXBlcnNlZGUgdGhlIG9sZCBgdmlkZW9wYXJzZWAgYW5k IGBhdWRpb3BhcnNlYCBlbGVtZW50cy4gVGhleSB3b3JrIHRoZQogIHNhbWUsIHdpdGgganVzdCBz b21lIG1pbm9yIEFQSSBjaGFuZ2VzLiBUaGUgb2xkIGxlZ2FjeSBlbGVtZW50cyBzdGlsbAogIGV4 aXN0IGluIGdzdC1wbHVnaW5zLWJhZCwgYnV0IG1heSBiZSByZW1vdmVkIGF0IHNvbWUgcG9pbnQg aW4gdGhlIGZ1dHVyZS4KCi0gYHRpbWVjb2Rlc3RhbXBlcmAgaXMgYW4gZWxlbWVudCB0aGF0IGF0 dGFjaGVzIHRpbWUgY29kZXMgdG8gdmlkZW8gYnVmZmVycwogIGluIGZvcm0gb2YgYEdzdFZpZGVv VGltZUNvZGVNZXRhYHMuIEl0IGhhZCBhIGAiY2xvY2stc291cmNlImAgcHJvcGVydHkKICB3aGlj aCBoYXMgbm93IGJlZW4gcmVtb3ZlZCBiZWNhdXNlIGl0IHdhcyBmYWlybHkgdXNlbGVzcyBpbiBw cmFjdGljZS4gSXQKICBnYWluZWQgc29tZSBuZXcgcHJvcGVydGllcyBob3dldmVyOiB0aGUgYCJm aXJzdC10aW1lY29kZSJgIHByb3BlcnR5IGNhbgogIGJlIHVzZWQgdG8gc2V0IHRoZSBpbml0YWwg dGltZWNvZGU7IGFsdGVybmF0aXZlbHkgYCJmaXJzdC10aW1lY29kZS10by1ub3ciYAogIGNhbiBi ZSBzZXQsIGFuZCB0aGVuIHRoZSBjdXJyZW50IHN5c3RlbSB0aW1lIGF0IHRoZSB0aW1lIHRoZSBm aXJzdCBidWZmZXIKICBhcnJpdmVzIGlzIHVzZWQgYXMgYmFzZSB0aW1lIGZvciB0aGUgdGltZSBj b2Rlcy4KCgojIyMgUGx1Z2luIHJlbW92YWxzCgotIFRoZSBgbWFkYCBtcDEvbXAyL21wMyBkZWNv ZGVyIHBsdWdpbiB3YXMgcmVtb3ZlZCBmcm9tIGdzdC1wbHVnaW5zLXVnbHksCiAgYXMgbGlibWFk IGlzIEdQTCBsaWNlbnNlZCwgaGFzIGJlZW4gdW5tYWludGFpbmVkIGZvciBhIHZlcnkgbG9uZyB0 aW1lLCBhbmQKICB0aGVyZSBhcmUgYmV0dGVyIGFsdGVybmF0aXZlcyBhdmFpbGFibGUuIFVzZSB0 aGUgYG1wZzEyM2F1ZGlvZGVjYCBlbGVtZW50CiAgZnJvbSB0aGUgYG1wZzEyM2AgcGx1Z2luIGlu IGdzdC1wbHVnaW5zLXVnbHkgaW5zdGVhZCwgb3IgYGF2ZGVjX21wM2AgZnJvbQogIHRoZSBgZ3N0 LWxpYmF2YCBtb2R1bGUgd2hpY2ggd3JhcHMgdGhlIGZmbXBlZyBsaWJyYXJ5LiBXZSBleHBlY3Qg dGhhdCB3ZQogIHdpbGwgYmUgYWJsZSB0byBtb3ZlIG1wMyBkZWNvZGluZyB0byBnc3QtcGx1Z2lu cy1nb29kIGluIHRoZSBuZXh0IGN5Y2xlCiAgc2VlaW5nIHRoYXQgbW9zdCBwYXRlbnRzIGFyb3Vu ZCBtcDMgaGF2ZSBleHBpcmVkIHJlY2VudGx5IG9yIGFyZSBhYm91dCB0bwogIGV4cGlyZS4KCi0g VGhlIGBtaW1pY2AgcGx1Z2luIHdhcyByZW1vdmVkIGZyb20gZ3N0LXBsdWdpbnMtYmFkLiBJdCBj b250YWluZWQgYSBkZWNvZGVyCiAgYW5kIGVuY29kZXIgZm9yIGEgdmlkZW8gY29kZWMgdXNlZCBi eSBNU04gbWVzc2VuZ2VyIG1hbnkgbWFueSB5ZWFycyBhZ28gKGluCiAgYSBnYWxheHkgZmFyIGZh ciBhd2F5KS4gVGhlIHVuZGVybHlpbmcgbGlicmFyeSBpcyB1bm1haW50YWluZWQgYW5kIG5vIG9u ZQogIHJlYWxseSBuZWVkcyB0byB1c2UgdGhpcyBjb2RlYyBhbnkgbW9yZS4gUmVjb3JkZWQgdmlk ZW9zIGNhbiBzdGlsbCBiZSBwbGF5ZWQKICBiYWNrIHdpdGggdGhlIE1JTUlDIGRlY29kZXIgaW4g Z3N0LWxpYmF2LgoKIyMgTWlzY2VsbGFuZW91cyBBUEkgYWRkaXRpb25zCgotIFJlcXVlc3QgcGFk IG5hbWUgdGVtcGxhdGVzIHBhc3NlZCB0byBgZ3N0X2VsZW1lbnRfcmVxdWVzdF9wYWQoKWAgbWF5 IG5vdwogIGNvbnRhaW4gbXVsdGlwbGUgc3BlY2lmaWVycywgc3VjaCBhcyBlLmcuIGBzcmNfJXVf JXVgLgoKLSBbYGdzdF9idWZmZXJfaXRlcmF0ZV9tZXRhX2ZpbHRlcmVkKClgXVtidWZmZXItaXRl cmF0ZS1tZXRhLWZpbHRlcmVkXSBpcyBhCiAgdmFyaWFudCBvZiBgZ3N0X2J1ZmZlcl9pdGVyYXRl X21ldGEoKWAgdGhhdCBvbmx5IHJldHVybnMgbWV0YXMgb2YgdGhlCiAgcmVxdWVzdGVkIHR5cGUg YW5kIHNraXBzIGFsbCBvdGhlciBtZXRhcy4KCi0gW2Bnc3RfcGFkX3Rhc2tfZ2V0X3N0YXRlKClg XVtwYWQtdGFzay1nZXQtc3RhdGVdIGdldHMgdGhlIGN1cnJlbnQgc3RhdGUgb2YKICBhIHRhc2sg aW4gYSB0aHJlYWQtc2FmZSB3YXkuCgotIFtgZ3N0X3VyaV9nZXRfbWVkaWFfZnJhZ21lbnRfdGFi bGUoKWBdW3VyaS1nZXQtZnJhZ21lbnQtdGFibGVdIHByb3ZpZGVzIHRoZQogIG1lZGlhIGZyYWdt ZW50cyBvZiBhbiBVUkkgYXMgYSB0YWJsZSBvZiBrZXk9dmFsdWUgcGFpcnMuCgotIFtgZ3N0X3By aW50KClgXVtwcmludF0sIFtgZ3N0X3ByaW50bG4oKWBdW3ByaW50bG5dLCBbYGdzdF9wcmludGVy cigpYF1bcHJpbnRlcnJdLAogIGFuZCBbYGdzdF9wcmludGVycmxuKClgXVtwcmludGVycmxuXSBj YW4gYmUgdXNlZCB0byBwcmludCB0byBzdGRvdXQgb3Igc3RkZXJyLgogIFRoZXNlIGZ1bmN0aW9u cyBhcmUgc2ltaWxhciB0byBgZ19wcmludCgpYCBhbmQgYGdfcHJpbnRlcnIoKWAgYnV0IHRoZXkg YWxzbwogIHN1cHBvcnQgYWxsIHRoZSBhZGRpdGlvbmFsIGZvcm1hdCBzcGVjaWZpZXJzIHByb3Zp ZGVkIGJ5IHRoZSBHU3RyZWFtZXIKICBsb2dnaW5nIHN5c3RlbSwgc3VjaCBhcyBlLmcuIGBHU1Rf UFRSX0ZPUk1BVGAuCgotIGEgYEdzdFBhcmFtU3BlY0FycmF5YCBoYXMgYmVlbiBhZGRlZCwgZm9y IGVsZW1lbnRzIHdobyB3YW50IHRvIGhhdmUgYXJyYXkKICB0eXBlIHByb3BlcnRpZXMsIHN1Y2gg YXMgdGhlIGBhdWRpb21peG1hdHJpeGAgZWxlbWVudCBmb3IgZXhhbXBsZS4gVGhlcmUgYXJlCiAg YWxzbyB0d28gbmV3IGZ1bmN0aW9ucyB0byBzZXQgYW5kIGdldCBwcm9wZXJ0aWVzIG9mIHRoaXMg dHlwZSBmcm9tIGJpbmRpbmdzOgogICAtIGdzdF91dGlsX3NldF9vYmplY3RfYXJyYXkoKQogICAt IGdzdF91dGlsX2dldF9vYmplY3RfYXJyYXkoKQoKLSB2YXJpb3VzIGhlbHBlciBmdW5jdGlvbnMg aGF2ZSBiZWVuIGFkZGVkIHRvIG1ha2UgaXQgZWFzaWVyIHRvIHNldCBvciBnZXQKICBHc3RTdHJ1 Y3R1cmUgZmllbGRzIGNvbnRhaW5pbmcgY2Fwcy1zdHlsZSBhcnJheSBvciBsaXN0IGZpZWxkcyBm cm9tIGxhbmd1YWdlCiAgYmluZGluZ3MgKHdoaWNoIHVzdWFsbHkgc3VwcG9ydCBHVmFsdWVBcnJh eSBidXQgZG9uJ3Qga25vdyBhYm91dCB0aGUgR1N0cmVhbWVyCiAgc3BlY2lmaWMgZnVuZGFtZW50 YWwgdHlwZXMpOgogICAtIFtgZ3N0X3N0cnVjdHVyZV9nZXRfYXJyYXkoKWBdW2dldC1hcnJheV0K ICAgLSBbYGdzdF9zdHJ1Y3R1cmVfc2V0X2FycmF5KClgXVtzZXQtYXJyYXldCiAgIC0gW2Bnc3Rf c3RydWN0dXJlX2dldF9saXN0KClgXVtnZXQtbGlzdF0KICAgLSBbYGdzdF9zdHJ1Y3R1cmVfc2V0 X2xpc3QoKWBdW3NldC1saXN0XQoKLSBhIG5ldyBbJ2R5bmFtaWMgdHlwZScgcmVnaXN0cnkgZmFj dG9yeSB0eXBlXVtkeW5hbWljLXR5cGVdIHdhcyBhZGRlZCB0bwogIHJlZ2lzdGVyIGR5bmFtaWNh bGx5IGxvYWRhYmxlIEdUeXBlIHR5cGVzLiBUaGlzIGlzIHVzZWZ1bCBmb3IgYXV0b21hdGljYWxs eQogIGxvYWRpbmcgZW51bS9mbGFncyB0eXBlcyB0aGF0IGFyZSB1c2VkIGluIGNhcHMsIHN1Y2gg YXMgZm9yIGV4YW1wbGUgdGhlCiAgYEdzdFZpZGVvTXVsdGl2aWV3RmxhZ3NTZXRgIHR5cGUgdXNl ZCBpbiBtdWx0aXZpZXcgdmlkZW8gY2Fwcy4KCi0gdGhlcmUgaXMgYSBuZXcgW2BHc3RQcm94eUNv bnRyb2xCaW5kaW5nYF1bcHJveHktY29udHJvbC1iaW5kaW5nXSBmb3IgdXNlCiAgd2l0aCBHc3RD b250cm9sbGVyLiBUaGlzIGFsbG93cyBwcm94eWluZyB0aGUgY29udHJvbCBpbnRlcmZhY2UgZnJv bSBvbmUKICBwcm9wZXJ0eSBvbiBvbmUgR3N0T2JqZWN0IHRvIGFub3RoZXIgcHJvcGVydHkgKG9m IHRoZSBzYW1lIHR5cGUpIGluIGFub3RoZXIKICBHc3RPYmplY3QuIFNvIGUuZy4gaW4gcGFyZW50 LWNoaWxkIHJlbGF0aW9uc2hpcCwgb25lIG1heSBuZWVkIHRvIGNhbGwKICBgZ3N0X29iamVjdF9z eW5jX3ZhbHVlcygpYCBvbiB0aGUgY2hpbGQgYW5kIGhhdmUgYSBiaW5kaW5nIChzZXQgZWxzZXdo ZXJlKQogIG9uIHRoZSBwYXJlbnQgdXBkYXRlIHRoZSB2YWx1ZS4gVGhpcyBpcyB1c2VkIGluIGBn bHZpZGVvbWl4ZXJgIGFuZCBgZ2xzaW5rYmluYAogIGZvciBleGFtcGxlLCB3aGVyZSBgc3luY192 YWx1ZXMoKWAgb24gdGhlIGNoaWxkIHBhZCBvciBlbGVtZW50IHdpbGwgY2FsbAogIGBzeW5jX3Zh bHVlcygpYCBvbiB0aGUgZXhwb3NlZCBiaW4gcGFkIG9yIGVsZW1lbnQuCgogIE5vdGUgdGhhdCB0 aGlzIGRvZXNuJ3Qgc29sdmUgR09iamVjdCBwcm9wZXJ0eSBmb3J3YXJkaW5nLCB0aGF0IG11c3QK ICBiZSB0YWtlbiBjYXJlIG9mIGJ5IHRoZSBpbXBsZW1lbnRhdGlvbiBtYW51YWxseSBvciB1c2lu ZyBHQmluZGluZy4KCi0gYGdzdF9iYXNlX3BhcnNlX2RyYWluKClgIGhhcyBiZWVuIG1hZGUgcHVi bGljIGZvciBzdWJjbGFzc2VzIHRvIHVzZS4KCi0gYGdzdF9iYXNlX3Npbmtfc2V0X2Ryb3Bfb3V0 X29mX3NlZ21lbnQoKScgY2FuIGJlIHVzZWQgYnkgc3ViY2xhc3NlcyB0bwogIHByZXZlbnQgR3N0 QmFzZVNpbmsgZnJvbSBkcm9wcGluZyBidWZmZXJzIHRoYXQgZmFsbCBvdXRzaWRlIG9mIHRoZSBz ZWdtZW50LgoKLSBbYGdzdF9jYWxjdWxhdGVfbGluZWFyX3JlZ3Jlc3Npb24oKWBdW2NhbGMtbGlu LXJlZ3Jlc3Npb25dIGlzIGEgbmV3IHV0aWxpdHkKICBmdW5jdGlvbiB0byBjYWxjdWxhdGUgYSBs aW5lYXIgcmVncmVzc2lvbi4KCi0gW2Bnc3RfZGVidWdfZ2V0X3N0YWNrX3RyYWNlYF1bZ2V0LXN0 YWNrLXRyYWNlXSBpcyBhbiBlYXN5IHdheSB0byByZXRyaWV2ZSBhCiAgc3RhY2sgdHJhY2UsIHdo aWNoIGNhbiBiZSB1c2VmdWwgaW4gdHJhY2VyIHBsdWdpbnMuCgotIGFsbG9jYXRvcnM6IHRoZSBk bWFidWYgYWxsb2NhdG9yIGlzIG5vdyBzdWItY2xhc3NhYmxlLCBhbmQgdGhlcmUgaXMgYSBuZXcK ICBgR1NUX0NBUFNfRkVBVFVSRV9NRU1PUllfRE1BQlVGYCBkZWZpbmUuCgotIHZpZGVvIGRlY29k ZXIgc3ViY2xhc3NlcyBjYW4gdXNlIHRoZSBuZXdseS1hZGRlZCBmdW5jdGlvbgogIGBnc3Rfdmlk ZW9fZGVjb2Rlcl9hbGxvY2F0ZV9vdXRwdXRfZnJhbWVfd2l0aF9wYXJhbXMoKWAgdG8KICBwYXNz IGEgYEdzdEJ1ZmZlclBvb2xBY3F1aXJlUGFyYW1zYCB0byB0aGUgYnVmZmVyIHBvb2wgZm9yCiAg ZWFjaCBidWZmZXIgYWxsb2NhdGlvbi4KCi0gdGhlIHZpZGVvIHRpbWUgY29kZSBBUEkgaGFzIGdh aW5lZCBhIGRlZGljYXRlZCBbYEdzdFZpZGVvVGltZUNvZGVJbnRlcnZhbGBdW3RpbWVjb2RlLWlu dGVydmFsXQogIHR5cGUgcGx1cyByZWxhdGVkIEFQSSwgaW5jbHVkaW5nIGZ1bmN0aW9ucyB0byBh ZGQgaW50ZXJ2YWxzIHRvIHRpbWVjb2Rlcy4KCi0gVGhlcmUgaXMgYSBuZXcgYGxpYmdzdGJhZGFs bG9jYXRvcnMtMS4wYCBsaWJyYXJ5IGluIGdzdC1wbHVnaW5zLWJhZCwgd2hpY2gKICBtYXkgZ28g YXdheSBhZ2FpbiBpbiBmdXR1cmUgcmVsZWFzZXMgb25jZSB0aGUgYEdzdFBoeXNNZW1vcnlBbGxv Y2F0b3JgCiAgaW50ZXJmYWNlIEFQSSBoYXMgYmVlbiB2YWxpZGF0ZWQgYnkgbW9yZSB1c2VycyBh bmQgd2FzIG1vdmVkIHRvCiAgYGxpYmdzdGFsbG9jYXRvcnMtMS4wYCBmcm9tIGdzdC1wbHVnaW5z LWJhc2UuCgpbdGltZWNvZGUtaW50ZXJ2YWxdOiBodHRwczovL2dzdHJlYW1lci5mcmVlZGVza3Rv cC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0LXBsdWdpbnMtYmFzZS1saWJzL2h0bWwv Z3N0LXBsdWdpbnMtYmFzZS1saWJzLWdzdHZpZGVvLmh0bWwjZ3N0LXZpZGVvLXRpbWUtY29kZS1p bnRlcnZhbC1uZXcKW2J1ZmZlci1pdGVyYXRlLW1ldGEtZmlsdGVyZWRdOiBodHRwczovL2dzdHJl YW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0 bWwvR3N0QnVmZmVyLmh0bWwjZ3N0LWJ1ZmZlci1pdGVyYXRlLW1ldGEtZmlsdGVyZWQKW3BhZC10 YXNrLWdldC1zdGF0ZV06IGh0dHBzOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2Rv Yy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9Hc3RQYWQuaHRtbCNnc3QtcGFkLXRhc2st Z2V0LXN0YXRlClt1cmktZ2V0LWZyYWdtZW50LXRhYmxlXTogaHR0cHM6Ly9nc3RyZWFtZXIuZnJl ZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL2dzdHJl YW1lci1Hc3RVcmkuaHRtbCNnc3QtdXJpLWdldC1tZWRpYS1mcmFnbWVudC10YWJsZQpbcHJpbnRd OiBodHRwczovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hl YWQvZ3N0cmVhbWVyL2h0bWwvZ3N0cmVhbWVyLUdzdEluZm8uaHRtbCNnc3QtcHJpbnQKW3ByaW50 bG5dOiBodHRwczovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVy L2hlYWQvZ3N0cmVhbWVyL2h0bWwvZ3N0cmVhbWVyLUdzdEluZm8uaHRtbCNnc3QtcHJpbnRsbgpb cHJpbnRlcnJdOiBodHRwczovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0 cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvZ3N0cmVhbWVyLUdzdEluZm8uaHRtbCNnc3QtcHJp bnRlcnIKW3ByaW50ZXJybG5dOiBodHRwczovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0 YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvZ3N0cmVhbWVyLUdzdEluZm8uaHRt bCNnc3QtcHJpbnRlcnJsbgpbZ2V0LWFycmF5XTogaHR0cHM6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0 b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdFN0cnVjdHVy ZS5odG1sI2dzdC1zdHJ1Y3R1cmUtZ2V0LWFycmF5CltzZXQtYXJyYXldOiBodHRwczovL2dzdHJl YW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0 bWwvR3N0U3RydWN0dXJlLmh0bWwjZ3N0LXN0cnVjdHVyZS1zZXQtYXJyYXkKW2dldC1saXN0XTog aHR0cHM6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFk L2dzdHJlYW1lci9odG1sL0dzdFN0cnVjdHVyZS5odG1sI2dzdC1zdHJ1Y3R1cmUtZ2V0LWxpc3QK W3NldC1saXN0XTogaHR0cHM6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dz dHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdFN0cnVjdHVyZS5odG1sI2dzdC1zdHJ1Y3R1 cmUtc2V0LWxpc3QKW2R5bmFtaWMtdHlwZV06IGh0dHBzOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9w Lm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9Hc3REeW5hbWljVHlw ZUZhY3RvcnkuaHRtbApbcHJveHktY29udHJvbC1iaW5kaW5nXTogaHR0cHM6Ly9nc3RyZWFtZXIu ZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci1saWJzL2h0 bWwvZ3N0cmVhbWVyLWxpYnMtR3N0UHJveHlDb250cm9sQmluZGluZy5odG1sCltjYWxjLWxpbi1y ZWdyZXNzaW9uXTogaHR0cHM6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dz dHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL2dzdHJlYW1lci1Hc3RVdGlscy5odG1sI2dzdC1j YWxjdWxhdGUtbGluZWFyLXJlZ3Jlc3Npb24KW2dldC1zdGFjay10cmFjZV06IGh0dHBzOi8vZ3N0 cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIv aHRtbC9nc3RyZWFtZXItR3N0VXRpbHMuaHRtbCNnc3QtZGVidWctZ2V0LXN0YWNrLXRyYWNlCgoj IyMgR3N0UGxheWVyCgpOZXcgQVBJIGhhcyBiZWVuIGFkZGVkIHRvOgoKIC0gZ2V0IHRoZSBudW1i ZXIgb2YgYXVkaW8vdmlkZW8vc3VidGl0bGUgc3RyZWFtczoKICAgLSBgZ3N0X3BsYXllcl9tZWRp YV9pbmZvX2dldF9udW1iZXJfb2Zfc3RyZWFtcygpYAogICAtIGBnc3RfcGxheWVyX21lZGlhX2lu Zm9fZ2V0X251bWJlcl9vZl92aWRlb19zdHJlYW1zKClgCiAgIC0gYGdzdF9wbGF5ZXJfbWVkaWFf aW5mb19nZXRfbnVtYmVyX29mX2F1ZGlvX3N0cmVhbXMoKWAKICAgLSBgZ3N0X3BsYXllcl9tZWRp YV9pbmZvX2dldF9udW1iZXJfb2Zfc3VidGl0bGVfc3RyZWFtcygpYAoKIC0gZW5hYmxlIGFjY3Vy YXRlIHNlZWtpbmc6IGBnc3RfcGxheWVyX2NvbmZpZ19zZXRfc2Vla19hY2N1cmF0ZSgpYAogICBh bmQgYGdzdF9wbGF5ZXJfY29uZmlnX2dldF9zZWVrX2FjY3VyYXRlKClgCgogLSBnZXQgYSBzbmFw c2hvdCBpbWFnZSBvZiB0aGUgdmlkZW8gaW4gUkdCeCwgQkdSeCwgSlBFRywgUE5HIG9yCiAgIG5h dGl2ZSBmb3JtYXQ6IFtgZ3N0X3BsYXllcl9nZXRfdmlkZW9fc25hcHNob3QoKWBdW3NuYXBzaG90 XQoKIC0gc2VsZWN0aW5nIHVzZSBvZiBhIHNwZWNpZmljIHZpZGVvIHNpbmsgZWxlbWVudAogICAo W2Bnc3RfcGxheWVyX3ZpZGVvX292ZXJsYXlfdmlkZW9fcmVuZGVyZXJfbmV3X3dpdGhfc2luaygp YF1bcmVuZGVyZXItd2l0aC12c2lua10pCgogLSBJZiB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUg YEdTVF9QTEFZRVJfVVNFX1BMQVlCSU4zYCBpcyBzZXQsIEdzdFBsYXllciB3aWxsCiAgIHVzZSB0 aGUgc3RpbGwtZXhwZXJpbWVudGFsIGBwbGF5YmluM2AgZWxlbWVudCBhbmQgdGhlIGBHc3RTdHJl YW1zYCBBUEkgZm9yCiAgIHBsYXliYWNrLgoKW3NuYXBzaG90XTogaHR0cHM6Ly9nc3RyZWFtZXIu ZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdC1wbHVnaW5zLWJhZC1s aWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjZ3N0LXBsYXllci1n ZXQtdmlkZW8tc25hcHNob3QKW3JlbmRlcmVyLXdpdGgtdnNpbmtdOiBodHRwczovL2dzdHJlYW1l ci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0LXBsdWdpbnMtYmFk LWxpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItdmlkZW9vdmVybGF5dmlk ZW9yZW5kZXJlci5odG1sI2dzdC1wbGF5ZXItdmlkZW8tb3ZlcmxheS12aWRlby1yZW5kZXJlci1u ZXctd2l0aC1zaW5rCgojIyBNaXNjZWxsYW5lb3VzIGNoYW5nZXMKCi0gdmlkZW8gY2FwcyBmb3Ig aW50ZXJsYWNlZCB2aWRlbyBtYXkgY29udGFpbiBhbiBvcHRpb25hbCBgImZpZWxkLW9yZGVyImAg ZmllbGQKICBub3cgaW4gdGhlIGNhc2Ugb2YgYGludGVybGFjZWQtbW9kZT1pbnRlcmxlYXZlZGAg dG8gc2lnbmFsIHRoYXQgdGhlIGZpZWxkCiAgb3JkZXIgaXMgYWx3YXlzIHRoZSBzYW1lIHRocm91 Z2hvdXQgdGhlIHN0cmVhbS4gVGhpcyBpcyB1c2VmdWwgdG8gc2lnbmFsIHRvCiAgbXV4ZXJzIHN1 Y2ggYXMgbXA0bXV4LiBUaGUgbmV3IGZpZWxkIGlzIHBhcnNlZCBmcm9tL3RvIGBHc3RWaWRlb0lu Zm9gIG9mIGNvdXJzZS4KCi0gdmlkZW8gZGVjb2RlciBhbmQgdmlkZW8gZW5jb2RlciBiYXNlIGNs YXNzZXMgdHJ5IGhhcmRlciB0byBwcm94eQogIGludGVybGFjaW5nLCBjb2xvcmltZXRyeSBhbmQg Y2hyb21hLXNpdGUgcmVsYXRlZCBmaWVsZHMgaW4gY2FwcyBwcm9wZXJseS4KCi0gVGhlIGJ1ZmZl ciBzdG9yZWQgaW4gdGhlIGBQUk9URUNUSU9OYCBldmVudHMgaXMgbm93IGxlZnQgdW5jaGFuZ2Vk LiBUaGlzIGlzIGEKICBjaGFuZ2Ugb2YgYmVoYXZpb3VyIHNpbmNlIDEuOCwgZXNwZWNpYWxseSBm b3IgdGhlIG1zc2RlbXV4IGVsZW1lbnQgd2hpY2ggdXNlZCB0bwogIGRlY29kZSB0aGUgYmFzZTY0 IHBhcnNlZCBkYXRhIHdyYXBwZWQgaW4gdGhlIHByb3RlY3Rpb24gZXZlbnRzIGVtaXR0ZWQgYnkg dGhlCiAgZGVtdXhlci4KCi0gYFBST1RFQ1RJT05gIGV2ZW50cyBjYW4gbm93IGJlIGluamVjdGVk IGludG8gdGhlIHBpcGVsaW5lIGZyb20gdGhlIGFwcGxpY2F0aW9uOwogIHNvdXJjZSBlbGVtZW50 cyBkZXJpdmluZyBmcm9tIEdzdEJhc2VTcmMgd2lsbCBmb3J3YXJkIHRob3NlIGRvd25zdHJlYW0g bm93LgoKLSBUaGUgREFTSCBkZW11eGVyIGlzIG5vdyBjb3JyZWN0bHkgcGFyc2luZyB0aGUgTVNQ Ui0yLjAgQ29udGVudFByb3RlY3Rpb24gbm9kZXMKICBhbmQgZW1pdHMgUHJvdGVjdGlvbiBldmVu dHMgYWNjb3JkaW5nbHkuIEFwcGxpY2F0aW9ucyByZWx5aW5nIG9uIHRob3NlIGV2ZW50cwogIG1p Z2h0IG5lZWQgdG8gZGVjb2RlIHRoZSBiYXNlNjQgZGF0YSBzdG9yZWQgaW4gdGhlIGV2ZW50IGJ1 ZmZlciBiZWZvcmUgdXNpbmcgaXQuCgotIFRoZSByZWdpc3RyeSBjYW4gbm93IGFsc28gYmUgZGlz YWJsZWQgYnkgc2V0dGluZyB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUKICBgR1NUX1JFR0lTVFJZ X0RJU0FCTEU9eWVzYCwgd2l0aCBzaW1pbGFyIGVmZmVjdCBhcyB0aGUgYEdTVF9ESVNBQkxFX1JF R0lTVFJZYAogIGNvbXBpbGUgdGltZSBzd2l0Y2guCgotIFNlZWtpbmcgcGVyZm9ybWFuY2Ugd2l0 aCBnc3RyZWFtZXItdmFhcGkgYmFzZWQgZGVjb2RlcnMgd2FzIGltcHJvdmVkLiBJdCB3b3VsZAog IHJlY3JlYXRlIHRoZSBkZWNvZGVyIGFuZCBzdXJmYWNlcyBvbiBldmVyeSBzZWVrIHdoaWNoIGNh biBiZSBxdWl0ZSBzbG93LgoKLSBtb3JlIHJvYnVzdCBoYW5kbGluZyBvZiBpbnB1dCBjYXBzIGNo YW5nZXMgaW4gdmlkZW9hZ2dyZWdhdG9yLWJhc2VkIGVsZW1lbnRzCiAgc3VjaCBhcyBgY29tcG9z aXRvcmAuCgotIExvdHMgb2YgYWRhcHRpdmUgc3RyZWFtaW5nLXJlbGF0ZWQgZml4ZXMgYWNyb3Nz IHRoZSBib2FyZCAoREFTSCwgTVNTLCBITFMpLiBBbHNvOgoKICAtIGBtc3NkZW11eGAsIHRoZSBN aWNyb3NvZnQgU21vb3RoIFN0cmVhbWluZyBkZW11eGVyLCBoYXMgc2VlbiB2YXJpb3VzCiAgICBm aXhlcyBmb3IgbGl2ZSBzdHJlYW1zLCBkdXJhdGlvbiByZXBvcnRpbmcgYW5kIHNlZWtpbmcuCgog IC0gVGhlIERBU0ggbWFuaWZlc3QgcGFyc2VyIG5vdyBleHRyYWN0cyBNUyBQbGF5UmVhZHkgQ29u dGVudFByb3RlY3Rpb24gb2JqZWN0cwogICAgZnJvbSBtYW5pZmVzdHMgYW5kIHNlbmRzIHRoZW0g ZG93bnN0cmVhbSBhcyBgUFJPVEVDVElPTmAgZXZlbnRzLiBJdCBhbHNvCiAgICBzdXBwb3J0cyBt dWx0aXBsZSBQZXJpb2QgZWxlbWVudHMgaW4gZXh0ZXJuYWwgeG1sIG5vdy4KCi0gZ3N0LWxpYmF2 IHdhcyB1cGRhdGVkIHRvIGZmbXBlZyAzLjMgYnV0IHNob3VsZCBzdGlsbCB3b3JrIHdpdGggYW55 IDMueAogIHZlcnNpb24uCgotIEdzdEVuY29kaW5nUHJvZmlsZSBoYXMgYmVlbiBnZW5lcmFsbHkg ZW5oYW5jZWQgc28gaXQgY2FuLCBmb3IKICBleGFtcGxlLCBiZSB1c2VkIHRvIGdldCBwb3NzaWJs ZSBwcm9maWxlcyBmb3IgYSBnaXZlbiBmaWxlCiAgZXh0ZW5zaW9uLiBJdCBpcyBub3cgcG9zc2li bGUgdG8gZGVmaW5lIHByb2ZpbGVzIGJhc2VkIG9uIGVsZW1lbnQKICBmYWN0b3J5IG5hbWVzIG9y IHVzaW5nIGEgcGF0aCB0byBhIGAuZ2VwYCBmaWxlIGNvbnRhaW5pbmcgYQogIHNlcmlhbGl6ZWQg cHJvZmlsZS4KCi0gYGF1ZGlvY29udmVydGAgY2FuIG5vdyBkbyBlbmRpYW5uZXNzIGNvbnZlcnNp b24gaW4tcGxhY2UuIEFsbCBvdGhlcgogIGNvbnZlcnNpb25zIHN0aWxsIHJlcXVpcmUgYSBjb3B5 LCBidXQgZS5nLiBzaWduIGNvbnZlcnNpb24gYW5kIGEgZmV3IG90aGVycwogIGNvdWxkIGFsc28g YmUgaW1wbGVtZW50ZWQgaW4tcGxhY2Ugbm93LgoKLSBUaGUgbmV3LCBleHBlcmltZW50YWwgYHBs YXliaW4zYCBhbmQgYHVyaXNvdXJjZWJpbmAgZWxlbWVudHMgZ290IG1hbnkKICBidWdmaXhlcyBh bmQgaW1wcm92ZW1lbnRzIGFuZCBzaG91bGQgZ2VuZXJhbGx5IGJlIGNsb3NlciB0byBhIGZ1bGwK ICByZXBsYWNlbWVudCBvZiB0aGUgb2xkIGVsZW1lbnRzLgoKLSBgaW50ZXJsZWF2ZWAgbm93IHN1 cHBvcnRzID4gNjQgY2hhbm5lbHMuCgojIyMgT3BlbkdMIGludGVncmF0aW9uCgotIEFzIHVzdWFs IHRoZSBHU3RyZWFtZXIgT3BlbkdMIGludGVncmF0aW9uIGxpYnJhcnkgaGFzIHNlZW4gbnVtZXJv dXMKICBmaXhlcyBhbmQgcGVyZm9ybWFuY2UgaW1wcm92ZW1lbnRzIGFsbCBvdmVyIHRoZSBwbGFj ZSwgYW5kIGlzIGhvcGVmdWxseQogIHJlYWR5IG5vdyB0byBiZWNvbWUgQVBJIHN0YWJsZSBhbmQg YmUgbW92ZWQgdG8gZ3N0LXBsdWdpbnMtYmFzZSBkdXJpbmcgdGhlCiAgMS4xNCByZWxlYXNlIGN5 Y2xlLgoKLSBUaGUgR1N0cmVhbWVyIE9wZW5HTCBpbnRlZ3JhdGlvbiBsYXllciBoYXMgYWxzbyBn YWluZWQgc3VwcG9ydCBmb3IgdGhlCiAgVml2YW50ZSBFR0wgRkIgd2luZG93aW5nIHN5c3RlbSwg d2hpY2ggaW1wcm92ZXMgcGVyZm9ybWFuY2Ugb24gcGxhdGZvcm1zCiAgc3VjaCBhcyBGcmVlc2Nh bGUgaU1YLjYgZm9yIHRob3NlIHdobyBhcmUgc3R1Y2sgd2l0aCB0aGUgcHJvcHJpZXRhcnkgZHJp dmVyLgogIFRoZSBgcW1sZ2xzaW5rYCBlbGVtZW50IGFsc28gc3VwcG9ydHMgdGhpcyBub3cgaWYg UXQgaXMgdXNlZCB3aXRoIGVnbGZzIG9yCiAgd2F5bGFuZCBiYWNrZW5kLCBhbmQgaXQgd29ya3Mg aW4gY29uanVuY3Rpb24gd2l0aCBbZ3N0cmVhbWVyLWlteF1bZ3N0cmVhbWVyLWlteF0KICBvZiBj b3Vyc2UuCgotIHZhcmlvdXMgYHFtbGdsc3JjYCBpbXByb3ZlbWVudHMKCltnc3RyZWFtZXItaW14 XTogaHR0cHM6Ly9naXRodWIuY29tL0ZyZWVzY2FsZS9nc3RyZWFtZXItaW14CgojIyBUcmFjaW5n IGZyYW1ld29yayBhbmQgZGVidWdnaW5nIGltcHJvdmVtZW50cwoKLSBOZXcgdHJhY2luZyBob29r cyBoYXZlIGJlZW4gYWRkZWQgdG8gdHJhY2sgR3N0TWluaU9iamVjdCBhbmQgR3N0T2JqZWN0CiAg cmVmL3VucmVmIG9wZXJhdGlvbnMuCgotIFRoZSBtZW1vcnkgbGVha3MgdHJhY2VyIGNhbiBvcHRp b25hbGx5IHVzZSB0aGlzIHRvIHJldHJpZXZlIHN0YWNrIHRyYWNlcyBpZgogIGVuYWJsZWQgd2l0 aCBlLmcuIGBHU1RfVFJBQ0VSUz1sZWFrcyhmaWx0ZXJzPSJHc3RFdmVudCxHc3RNZXNzYWdlIixz dGFjay10cmFjZXMtZmxhZ3M9ZnVsbClgCgotIFRoZSBgR1NUX0RFQlVHX0ZJTEVgIGVudmlyb25t ZW50IHZhcmlhYmxlLCB3aGljaCBjYW4gYmUgdXNlZCB0byB3cml0ZSB0aGUKICBkZWJ1ZyBsb2cg b3V0cHV0IHRvIGEgZmlsZSBpbnN0ZWFkIG9mIHByaW50aW5nIGl0IHRvIHN0ZGVyciwgY2FuIG5v dyBjb250YWluCiAgYSBuYW1lIHBhdHRlcm4sIHdoaWNoIGlzIHVzZWZ1bCBmb3IgYXV0b21hdGVk IHRlc3RpbmcgYW5kIGNvbnRpbnVvdXMKICBpbnRlZ3JhdGlvbiBzeXN0ZW1zLiBUaGUgZm9sbG93 aW5nIGZvcm1hdCBzcGVjaWZpZXJzIGFyZSBzdXBwb3J0ZWQ6CgogICAtIGAlcGA6IHdpbGwgYmUg cmVwbGFjZWQgd2l0aCB0aGUgUElECiAgIC0gYCVyYDogd2lsbCBiZSByZXBsYWNlZCB3aXRoIGEg cmFuZG9tIG51bWJlciwgd2hpY2ggaXMgdXNlZnVsIGZvciBpbnN0YW5jZQogICAgIHdoZW4gcnVu bmluZyB0d28gcHJvY2Vzc2VzIHdpdGggdGhlIHNhbWUgUElEIGJ1dCBpbiBkaWZmZXJlbnQgY29u dGFpbmVycy4KCiMjIFRvb2xzCgotIGBnc3QtaW5zcGVjdC0xLjBgIGNhbiBub3cgbGlzdCBlbGVt ZW50cyBieSB0eXBlIHdpdGggdGhlIG5ldyBgLS10eXBlc2AKICAgY29tbWFuZC1saW5lIG9wdGlv biwgZS5nLiBgZ3N0LWluc3BlY3QtMS4wIC0tdHlwZXM9QXVkaW8vRW5jb2RlcmAgd2lsbAogICBz aG93IGEgbGlzdCBvZiBhdWRpbyBlbmNvZGVycy4KCi0gYGdzdC1sYXVuY2gtMS4wYCBhbmQgYGdz dF9wYXJzZV9sYXVuY2goKWAgaGF2ZSBnYWluZWQgYSBuZXcgb3BlcmF0b3IgKGA6YCkKICAgdGhh dCBhbGxvd3MgbGlua2luZyBhbGwgcGFkcyBiZXR3ZWVuIHR3byBlbGVtZW50cy4gVGhpcyBpcyB1 c2VmdWwgaW4gY2FzZXMKICAgd2hlcmUgdGhlIGV4YWN0IG51bWJlciBvZiBwYWRzIG9yIHR5cGUg b2YgcGFkcyBpcyBub3Qga25vd24gYmVmb3JlaGFuZCwgc3VjaAogICBhcyBpbiB0aGUgYHVyaWRl Y29kZWJpbiA6IGVuY29kZWJpbmAgc2NlbmFyaW8sIGZvciBleGFtcGxlLiBJbiB0aGlzIGNhc2Us CiAgIG11bHRpcGxlIGxpbmtzIHdpbGwgYmUgY3JlYXRlZCBpZiB0aGUgZW5jb2RlYmluIGhhcyBt dWx0aXBsZSBwcm9maWxlcwogICBjb21wYXRpYmxlIHdpdGggdGhlIG91dHB1dCBvZiB1cmlkZWNv ZGViaW4uCgotIGBnc3QtZGV2aWNlLW1vbml0b3ItMS4wYCBub3cgc2hvd3MgYSBgZ3N0LWxhdW5j aC0xLjBgIHNuaXBwZXQgZm9yIGVhY2gKICBkZXZpY2UgdGhhdCBzaG93cyBob3cgdG8gbWFrZSB1 c2Ugb2YgaXQgaW4gYSBgZ3N0LWxhdW5jaC0xLjBgIHBpcGVsaW5lIHN0cmluZy4KCiMjIEdTdHJl YW1lciBSVFNQIHNlcnZlcgoKLSBUaGUgUlRTUCBzZXJ2ZXIgbm93IGFsc28gc3VwcG9ydHMgRGln ZXN0IGF1dGhlbnRpY2F0aW9uIGluIGFkZGl0aW9uIHRvIEJhc2ljCiAgYXV0aGVudGljYXRpb24u CgotIFRoZSBgR3N0UlRTUENsaWVudGAgY2xhc3MgaGFzIGdhaW5lZCBhIGBwcmUtKi1yZXF1ZXN0 YCBzaWduYWwgYW5kIHZpcnR1YWwKICBtZXRob2QgZm9yIGVhY2ggY2xpZW50IHJlcXVlc3QgdHlw ZSwgZW1pdHRlZCBpbiB0aGUgYmVnaW5uaW5nIG9mIGVhY2ggcnRzcAogIHJlcXVlc3QuIFRoZXNl IHNpZ25hbHMgb3IgdmlydHVhbCBtZXRob2RzIGxldCB0aGUgYXBwbGljYXRpb24gdmFsaWRhdGUg dGhlCiAgcmVxdWVzdHMsIGNvbmZpZ3VyZSB0aGUgbWVkaWEvc3RyZWFtIGluIGEgY2VydGFpbiB3 YXkgYW5kIGFsc28gZ2VuZXJhdGUgZXJyb3IKICBzdGF0dXMgY29kZXMgaW4gY2FzZSBvZiBhbiBl cnJvciBvciBhIGJhZCByZXF1ZXN0LgoKIyMgR1N0cmVhbWVyIFZBQVBJCgotIEdzdFZhYXBpRGlz cGxheSBub3cgaW5oZXJpdHMgZnJvbSBHc3RPYmplY3QsIHRodXMgdGhlIFZBIGRpc3BsYXkgbG9n Z2luZwogIG1lc3NhZ2VzIGFyZSBiZXR0ZXIgYW5kIHRyYWNpbmcgdGhlIGNvbnRleHQgc2hhcmlu ZyBpcyBtb3JlIHJlYWRhYmxlLgoKLSBXaGVuIHVwbG9hZGluZyByYXcgaW1hZ2VzIGludG8gYSBW QSBzdXJmYWNlcyBub3cgVkFEZXJpdmVJbWFnZXMgYXJlIHRyaWVkCiAgZmlzdCwgaW1wcm92aW5n IHRoZSB1cGxvYWQgcGVyZm9ybWFuY2UsIGlmIGl0IGlzIHBvc3NpYmxlLgoKLSBUaGUgZGVjb2Rl cnMgYW5kIHRoZSBwb3N0LXByb2Nlc3NvciBub3cgY2FuIHB1c2ggZG1hYnVmLWJhc2VkIGJ1ZmZl cnMgdG8KICBkb3duc3RyZWFtIHVuZGVyIGNlcnRhaW4gY29uZGl0aW9ucy4gRm9yIGV4YW1wbGU6 CgogIGBHU1RfR0xfUExBVEZPUk09ZWdsIGdzdC1wbGF5LTEuMCB2aWRlby1zYW1wbGUubWt2IC0t dmlkZW9zaW5rPWdsaW1hZ2VzaW5rYAoKLSBSZWZhY3RvcmVkIHRoZSB3cmFwcGluZyBvZiBWQSBz dXJmYWNlIGludG8gZ3N0cmVhbWVyIG1lbW9yeSwgYWRkaW5nIGxvY2sKICB3aGVuIG1hcHBpbmcg YW5kIHVubWFwcGluZywgYW5kIG1hbnkgb3RoZXIgZml4ZXMuCgotIE5vdyBgdmFhcGlkZWNvZGVi aW5gIGxvYWRzIGB2YWFwaXBvc3Rwcm9jYCBkeW5hbWljYWxseS4gSXQgaXMgcG9zc2libGUgdG8K ICBhdm9pZCBpdCB1c2FnZSB3aXRoIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBgR1NUX1ZBQVBJ X0RJU0FCTEVfVlBQPTFgLgoKLSBSZWdhcmRpbmcgZW5jb2RlcnM6IHRoZXkgaGF2ZSBwcmltYXJ5 IHJhbmsgYWdhaW4sIHNpbmNlIHRoZXkgY2FuIGRpc2NvdmVyLAogIGluIHJ1bi10aW1lLCB0aGUg Y29sb3IgZm9ybWF0cyB0aGV5IGNhbiB1c2UgZm9yIHVwc3RyZWFtIHJhdyBidWZmZXJzIGFuZAog IGNhcHMgcmVuZWdvdGlhdGlvbiBpcyBub3cgcG9zc2libGUuIEFsc28gdGhlIGVuY29kZXJzIHB1 c2ggZW5jb2RpbmcgaW5mbwogIGRvd25zdHJlYW0gdmlhIHRhZ3MuCgotIEFib3V0IHNwZWNpZmlj IGVuY29kZXJzOiBhZGRlZCBjb25zdGFudCBiaXQtcmF0ZSBlbmNvZGluZyBtb2RlIGZvciBWUDgg YW5kCiAgSDI2NSBlbmNvZGVyIGhhbmRsZXMgUDAxMF8xMExFIGNvbG9yIGZvcm1hdC4KCi0gUmVn YXJkaW5nIGRlY29kZXJzLCBmbHVzaCBvcGVyYXRpb24gaGFzIGJlZW4gaW1wcm92ZWQsIG5vdyB0 aGUgaW50ZXJuYWwgVkEKICBlbmNvZGVyIGlzIG5vdCByZWNyZWF0ZWQgYXQgZWFjaCBmbHVzaC4g QWxzbyB0aGVyZSBhcmUgc2V2ZXJhbCBpbXByb3ZlbWVudHMKICBpbiB0aGUgaGFuZGxpbmcgb2Yg SDI2NCBhbmQgSDI2NSBzdHJlYW1zLgoKLSBWQUFQSSBwbHVnaW5zIHRyeSB0byBjcmVhdGUgdGhl aXIgb24gR3N0R0wgY29udGV4dCAod2hlbiBhdmFpbGFibGUpIGlmIHRoZXkKICBjYW5ub3QgZmlu ZCBpdCBpbiB0aGUgcGlwZWxpbmUsIHRvIGZpZ3VyZSBvdXQgd2hhdCB0eXBlIG9mIFZBIERpc3Bs YXkgdGhleQogIHNob3VsZCBjcmVhdGUuCgotIFJlZ2FyZGluZyBgdmFhcGlzaW5rYCBmb3IgWDEx LCBpZiB0aGUgYmFja2VuZCByZXBvcnRzIHRoYXQgaXQgaXMgdW5hYmxlIHRvCiAgcmVuZGVyIGNv cnJlY3RseSB0aGUgY3VycmVudCBjb2xvciBmb3JtYXQsIGFuIGludGVybmFsIFZBIHBvc3QtcHJv Y2Vzc29yLCBpcwogIGluc3RhbnRpYXRlZCAoaWYgYXZhaWxhYmxlKSBhbmQgY29udmVydHMgdGhl IGNvbG9yIGZvcm1hdC4KCiMjIEdTdHJlYW1lciBFZGl0aW5nIFNlcnZpY2VzIGFuZCBOTEUKCi0g RW5oYW5jZWQgYXV0byB0cmFuc2l0aW9uIGJlaGF2aW91cgoKLSBGaXggc29tZSByYWNlcyBpbiBg bmxlY29tcG9zaXRpb25gCgotIEFsbG93IGJ1aWxkaW5nIHdpdGggbXN2YwoKLSBBZGRlZCBhIFVO SVggbWFucGFnZSBmb3IgYGdlcy1sYXVuY2hgCgotIEFQSSBjaGFuZ2VzOgogIC0gQWRkZWQgZ2Vz X2RlaW5pdCAoYWxsb3dpbmcgdGhlIGxlYWsgdHJhY2VyIHRvIHdvcmsgcHJvcGVybHkpCiAgLSBB ZGRlZCBnZXNfbGF5ZXJfZ2V0X2NsaXBzX2luX2ludGVydmFsCiAgLSBGaW5hbGx5IGhpZGUgaW50 ZXJuYWwgc3ltYm9scyB0aGF0IHNob3VsZCBuZXZlciBoYXZlIGJlZW4gZXhwb3NlZAoKIyMgR1N0 cmVhbWVyIHZhbGlkYXRlCgotIFBvcnQgYGdzdC12YWxpZGF0ZS1sYXVuY2hlcmAgdG8gcHl0aG9u IDMKCi0gYGdzdC12YWxpZGF0ZS1sYXVuY2hlcmAgbm93IGNoZWNrcyBpZiBibGFja2xpc3RlZCBi dWdzIGhhdmUgYmVlbiBmaXhlZCBvbgogIGJ1Z3ppbGxhIGFuZCBlcnJvcnMgb3V0IGlmIGl0IGlz IHRoZSBjYXNlCgotIEFsbG93IGJ1aWxkaW5nIHdpdGggbXN2YwoKLSBBZGQgYWJpbGl0eSBmb3Ig dGhlIGxhdW5jaGVyIHRvIHJ1biBHU3RyZWFtZXIgdW5pdCB0ZXN0cwoKLSBBZGRlZCBhIHdheSB0 byBhY3RpdmF0ZSB0aGUgbGVha3MgdHJhY2VyIG9uIG91ciB0ZXN0cyBhbmQgZml4IGxlYWtzCgot IE1ha2UgdGhlIGh0dHAgc2VydmVyIG11bHRpdGhyZWFkZWQKCi0gTmV3IHRlc3RzdWl0ZSBmb3Ig cnVubmluZyB2YXJpb3VzIHRlc3Qgc2NlbmFyaW9zIG9uIHRoZSBEQVNILUlGIHRlc3QgdmVjdG9y cwoKIyMgQnVpbGQgYW5kIERlcGVuZGVuY2llcwoKLSBNZXNvbiBidWlsZCBmaWxlcyBhcmUgbm93 IGRpc3RlZCBpbiB0YXJiYWxscywgZm9yIGpoYnVpbGQgYW5kIHNvIGRpc3RybwogIHBhY2thZ2Vy cyBjYW4gc3RhcnQgdXNpbmcgaXQuIE5vdGUgdGhhdCB0aGUgTWVzb24tYmFzZWQgYnVpbGQgc3lz dGVtIGlzIG5vdAogIDEwMCUgZmVhdHVyZS1lcXVpdmFsZW50IHdpdGggdGhlIGF1dG90b29scy1i YXNlZCBvbmUgeWV0LgoKLSBTb21lIHBsdWdpbiBmaWxlbmFtZXMgaGF2ZSBiZWVuIGNoYW5nZWQg dG8gbWF0Y2ggdGhlIHBsdWdpbiBuYW1lczogZm9yIGV4YW1wbGUKICB0aGUgZmlsZSBuYW1lIG9m IHRoZSBgZW5jb2RpbmdgIHBsdWdpbiBpbiBnc3QtcGx1Z2lucy1iYXNlIGNvbnRhaW5pbmcgdGhl CiAgYGVuY29kZWJpbmAgZWxlbWVudCB3YXMgYGxpYmdzdGVuY29kZWJpbi5zb2AgYW5kIGhhcyBi ZWVuIGNoYW5nZWQgdG8KICBgbGliZ3N0ZW5jb2RlYmluLnNvYC4gVGhpcyBhZmZlY3RzIG9ubHkg YSBoYW5kZnVsIG9mIHBsdWdpbnMgYWNyb3NzIG1vZHVsZXMuCgogICoqRGV2ZWxvcGVycyB3aG8g aW5zdGFsbCBHU3RyZWFtZXIgZnJvbSBzb3VyY2UgYW5kIGp1c3QgZG8gYG1ha2UgaW5zdGFsbGAq KgogICoqYWZ0ZXIgdXBkYXRpbmcgdGhlIHNvdXJjZSBjb2RlLCB3aXRob3V0IGRvaW5nIGBtYWtl IHVuaW5zdGFsbGAgZmlyc3QsIHdpbGwqKgogICoqaGF2ZSB0byBtYW51YWxseSByZW1vdmUgdGhl IG9sZCBpbnN0YWxsZWQgcGx1Z2luIGZpbGVzIGZyb20gdGhlIGluc3RhbGxhdGlvbioqCiAgKipw cmVmaXgsIG9yIHRoZXkgd2lsbCBnZXQgJ0Nhbm5vdCByZWdpc3RlciBleGlzdGluZyB0eXBlJyBj cml0aWNhbCB3YXJuaW5ncy4qKgoKLSBNb3N0IG9mIHRoZSBkb2Nib29rLWJhc2VkIGRvY3VtZW50 YXRpb24gKEZBUSwgQXBwbGljYXRpb24gRGV2ZWxvcG1lbnQgTWFudWFsLAogIFBsdWdpbiBXcml0 ZXIncyBHdWlkZSwgZGVzaWduIGRvY3VtZW50cykgaGFzIGJlZW4gY29udmVydGVkIHRvIG1hcmtk b3duIGFuZAogIG1vdmVkIGludG8gYSBuZXcgZ3N0LWRvY3MgbW9kdWxlLiBUaGUgZ3RrLWRvYyBs aWJyYXJ5IEFQSSByZWZlcmVuY2VzIGFuZAogIHRoZSBwbHVnaW5zIGRvY3VtZW50YXRpb24gYXJl IHN0aWxsIGJ1aWx0IGFzIHBhcnQgb2YgdGhlIHNvdXJjZSBtb2R1bGVzIHRob3VnaC4KCi0gR1N0 cmVhbWVyIGNvcmUgbm93IG9wdGlvbmFsbHkgdXNlcyBsaWJ1bndpbmQgYW5kIGxpYmR3IHRvIGdl bmVyYXRlIGJhY2t0cmFjZXMuCiAgVGhpcyBpcyB1c2VmdWwgZm9yIHRyYWNlciBwbHVnaW5zIHVz ZWQgZHVyaW5nIGRlYnVnZ2luZyBhbmQgZGV2ZWxvcG1lbnQuCgotIFRoZXJlIGlzIGEgbmV3IGBs aWJnc3RiYWRhbGxvY2F0b3JzLTEuMGAgbGlicmFyeSBpbiBnc3QtcGx1Z2lucy1iYWQgKHdoaWNo CiAgbWF5IGdvIGF3YXkgYWdhaW4gaW4gZnV0dXJlIHJlbGVhc2VzIG9uY2UgdGhlIGBHc3RQaHlz TWVtb3J5QWxsb2NhdG9yYAogIGludGVyZmFjZSBBUEkgaGFzIGJlZW4gdmFsaWRhdGVkIGJ5IG1v cmUgdXNlcnMpLgoKLSBgZ3N0LW9teGAgYW5kIGBnc3RyZWFtZXItdmFhcGlgIG1vZHVsZXMgY2Fu IG5vdyBhbHNvIGJlIGJ1aWx0IHVzaW5nIHRoZQogIE1lc29uIGJ1aWxkIHN5c3RlbS4KCi0gVGhl IGBxdGtpdHZpZGVvc3JjYCBlbGVtZW50IGZvciBtYWNPUyB3YXMgcmVtb3ZlZC4gVGhlIEFQSSBp cyBkZXByZWNhdGVkCiAgc2luY2UgMTAuOSBhbmQgaXQgd2Fzbid0IHNoaXBwZWQgaW4gdGhlIGJp bmFyaWVzIHNpbmNlIGEgZmV3IHJlbGVhc2VzLgoKIyMgUGxhdGZvcm0tc3BlY2lmaWMgaW1wcm92 ZW1lbnRzCgojIyMgQW5kcm9pZAoKLSBhbmRyb2lkbWVkaWE6IGFkZCBzdXBwb3J0IGZvciBWUDkg dmlkZW8gZGVjb2RpbmcvZW5jb2RpbmcgYW5kIE9wdXMgYXVkaW8KICBkZWNvZGluZyAod2hlcmUg c3VwcG9ydGVkKQoKIyMjIE9TL1ggYW5kIGlPUwoKLSBgYXZmdmlkZW9zcmNgLCB3aGljaCByZXBy ZXNlbnRzIGFuIGlQaG9uZSBjYW1lcmEgb3IsIG9uIGEgTWFjLCBhIHNjcmVlbmNhcHR1cmUKICBz ZXNzaW9uLCBzbyBmYXIgYWxsb3dlZCB5b3UgdG8gc2VsZWN0IGFuIGlucHV0IGRldmljZSBieSBk ZXZpY2UgaW5kZXggb25seS4KICBOZXcgQVBJIGFkZHMgdGhlIGFiaWxpdHkgdG8gc2VsZWN0IHRo ZSBwb3NpdGlvbiAoZnJvbnQgb3IgYmFjayBmYWNpbmcpIGFuZAogIGRldmljZS10eXBlICh3aWRl IGFuZ2xlLCB0ZWxlcGhvdG8sIGV0Yy4pLiBGdXJ0aGVybW9yZSwgeW91IGNhbiBub3cgYWxzbwog IHNwZWNpZnkgdGhlIG9yaWVudGF0aW9uIChwb3J0cmFpdCwgbGFuZHNjYXBlLCBldGMuKSBvZiB0 aGUgdmlkZW9zdHJlYW0uCgojIyMgV2luZG93cwoKLSBgZHg5c2NyZWVuY2Fwc3JjYCBjYW4gbm93 IG9wdGlvbmFsbHkgYWxzbyBjYXB0dXJlIHRoZSBjdXJzb3IuCgojIyBDb250cmlidXRvcnMKCkFs ZWl4IENvbmNoaWxsbyBGbGFxdWUsIEFsZWphbmRybyBHLiBDYXN0cm8sIEFsZWtzYW5kciBTbG9i b2Rlbml1aywgQWxleGFuZHJ1CkLEg2x1yJssIEFsZXggQXNobGV5LCBBbmRyZSBNY0N1cmR5LCBB bmRyZXcsIEFudG9uIEVsaWFzc29uLCBBbnRvbmlvIE9zcGl0ZSwKQXJuYXVkIFZyYWMsIEFydW4g UmFnaGF2YW4sIEF1csOpbGllbiBaYW5lbGxpLCBBeGVsIE1lbnplbCwgQmVuamFtaW4gT3R0ZSwK QnJhbmtvIFN1YmFzaWMsIEJyZW5kYW4gU2hhbmtzLCBDYXJsIEthcnN0ZW4sIENhcmxvcyBSYWZh ZWwgR2lhbmksIENoYW5nQm9rCkNoYWUsIENocmlzIEJhc3MsIENocmlzdGlhbiBTY2hhbGxlciwg Y2hyaXN0b3BoZWN2ciwgQ2xhdWRpbyBTYWF2ZWRyYSwKQ29yZW50aW4gTm/Dq2wsIERhZyBHdWxs YmVyZywgRGFuaWVsIEdhcmJhbnpvLCBEYW5pZWwgU2hhaGFmLCBEYXZpZCBFdmFucywKRGF2aWQg U2NobGVlZiwgRGF2aWQgV2FybWFuLCBEb21pbmlxdWUgTGV1ZW5iZXJnZXIsIERvbmdpbCBQYXJr LCBEb3VnbGFzCkJhZ25hbGwsIEVkZ2FyZCBMaW1hLCBFZHdhcmQgSGVydmV5LCBFbWVyaWMgR3Jh bmdlLCBFbnJpY28gSm9ybnMsIEVucmlxdWUKT2Nhw7FhIEdvbnrDoWxleiwgRXZhbiBOZW1lcnNv biwgRmFiaWFuIE9yY2NvbiwgRmFiaWVuIERlc3Nlbm5lLCBGYWJyaWNlIEJlbGxldCwKRmxvcmVu dCBUaGnDqXJ5LCBGbG9yaWFuIFp3b2NoLCBGcmFuY2lzY28gVmVsYXpxdWV6LCBGcsOpZMOpcmlj IERhbGxlYXUsIEdhcmltYQpHYXVyLCBHYXVyYXYgR3VwdGEsIEdlb3JnZSBLaWFnaWFkYWtpcywg R2VvcmcgTGlwcGl0c2NoLCBHw7ZyYW4gSsO2bnNzb24sIEdyYWhhbQpMZWdnZXR0LCBHdWlsbGF1 bWUgRGVzbW90dGVzLCBHdXJraXJwYWwgU2luZ2gsIEhhaWh1YSBIdSwgSGFubm8gQm9lY2ssIEhh dmFyZApHcmFmZiwgSGVla3lvdW5nIFNlbywgaG9vbmhlZS5sZWUsIEh5dW5qdW4gS28sIEltcmUg RcO2cnMsIEnDsWFraSBHYXJjw61hCkV0eGViYXJyaWEsIEphZ2FkaXNoLCBKYWd5dW0gS29vLCBK YW4gQWxleGFuZGVyIFN0ZWZmZW5zIChoZWZ0aWcpLCBKYW4KU2NobWlkdCwgSmVhbi1DaHJpc3Rv cGhlIFRyb3RpbiwgSm9jaGVuIEhlbm5lYmVyZywgSm9uYXMgSG9sbWJlcmcsIEpvcmlzClZhbGV0 dGUsIEpvc2VwIFRvcnJhLCBKdWFuIFBhYmxvIFVnYXJ0ZSwgSnVsaWVuIElzb3JjZSwgSsO8cmdl biBTYWNocywgS29vcApNYXN0LCBLc2VuaWlhIFZhc2lsY2h1aywgTGFycyBXZW5kbGVyLCBsZWln aDEyM2xpbnV4QGdvb2dsZW1haWwuY29tLCBMdWlzIGRlCkJldGhlbmNvdXJ0LCBMeW9uIFdhbmcs IE1hcmNpbiBLb2xueSwgTWFyaW51cyBTY2hyYWFsLCBNYXJrIE5hdXdlbGFlcnRzLApNYXRoaWV1 IER1cG9uY2hlbGxlLCBNYXR0aGV3IFdhdGVycywgTWF0dCBTdGFwbGVzLCBNaWNoYWVsIER1dGth LCBNaWNoYWVsCk9sYnJpY2gsIE1pY2hhZWwgU21pdGgsIE1pY2hhZWwgVHJldHRlciwgTWlndWVs IFBhcsOtcyBEw61heiwgbmFtYW55YWRhdjEyLCBOZWhhCkFyb3JhLCBOaWNrIEthbGxlbiwgTmlj b2xhIE11cmlubywgTmljb2xhcyBEZWNoZXNuZSwgTmljb2xhcyBEdWZyZXNuZSwgTmljb2xhcwpI dWV0LCBOaXJiaGVlayBDaGF1aGFuLCBPbGUgQW5kcsOpIFZhZGxhIFJhdm7DpXMsIE9saXZpZXIg Q3LDqnRlLCBQYXRyaWNpYQpNdXNjYWx1LCBQZXRlciBLb3JzZ2FhcmQsIFBldGVyIFNlaWRlcmVy LCBQZXRyIEt1bGhhdnksIFBoaWxpcHBlIE5vcm1hbmQsClBoaWxpcHBlIFJlbm9uLCBQaGlsaXBw IFphYmVsLCBSYWh1bCBCZWRhcmthciwgUmV5bmFsZG8gSC4gVmVyZGVqbyBQaW5vY2hldCwKUmlj YXJkbyBSaWJhbGRhIERlbGdhZG8sIFJpY28gVHpzY2hpY2hob2x6LCDQoNGD0YHQu9Cw0L0g0JjQ ttCx0YPQu9Cw0YLQvtCyLCBTYW11ZWwgTWFyb3ksClNhbnRpYWdvIENhcm90LU5lbWVzaW8sIFNj b3R0IEQgUGhpbGxpcHMsIFNlYW4gRHVCb2lzLCBTZWJhc3RpYW4gRHLDtmdlLCBTZXJnZXkKQm9y b3Zrb3YsIFNldW5naGEgWWFuZywgc2hha2luIGNob3UsIFNvbmcgQmluZywgU8O4cmVuIEp1dWws IFNyZWVyZW5qCkJhbGFjaGFuZHJhbiwgU3RlZmFuIEtvc3QsIFN0ZWZhbiBTYXVlciwgU3RlcGFu IFNhbGVuaWtvdmljaCwgU3RpYW4gU2VsbmVzLApTdHVhcnQgV2VhdmVyLCBzdWhhczJnbywgVGhp YWdvIFNhbnRvcywgVGhpYmF1bHQgU2F1bmllciwgVGhvbWFzIEJsdWVtZWwsClRob21hcyBQZXRh enpvbmksIFRpbS1QaGlsaXBwIE3DvGxsZXIsIFRpbmctV2VpIExhbiwgVG9iaWFzIE11ZWxsZXIs IFRvZG9yClRvbW92LCBUb21hc3ogWmFqYWMsIFVsZiBPbHNzb24sIFVyc3VsYSBNYXBsZWh1cnN0 LCBWw61jdG9yIE1hbnVlbCBKw6FxdWV6IExlYWwsClZpY3RvciBUb3NvLCBWaW5jZW50IFBlbnF1 ZXJjJ2gsIFZpbmVldGggVE0sIFZpbm9kIEtlc3RpLCBWaXRvciBNYXNzYXJ1IEloYSwKVml2aWEg Tmlrb2xhaWRvdSwgV2VpQ2h1bmdDaGFuZywgV2lsbGlhbSBNYW5sZXksIFdpbSBUYXltYW5zLCBX b2pjaWVjaApQcnp5YnlsLCBXb25jaHVsIExlZSwgWGF2aWVyIENsYWVzc2VucywgWWFzdXNoaSBT SE9KSQoKLi4uIGFuZCBtYW55IG90aGVycyB3aG8gaGF2ZSBjb250cmlidXRlZCBidWcgcmVwb3J0 cywgdHJhbnNsYXRpb25zLCBzZW50CnN1Z2dlc3Rpb25zIG9yIGhlbHBlZCB0ZXN0aW5nLgoKIyMg QnVncyBmaXhlZCBpbiAxLjEyCgpNb3JlIHRoYW4gWzYzNSBidWdzXVtidWdzLWZpeGVkLWluLTEu MTJdIGhhdmUgYmVlbiBmaXhlZCBkdXJpbmcKdGhlIGRldmVsb3BtZW50IG9mIDEuMTIuCgpUaGlz IGxpc3QgZG9lcyBub3QgaW5jbHVkZSBpc3N1ZXMgdGhhdCBoYXZlIGJlZW4gY2hlcnJ5LXBpY2tl ZCBpbnRvIHRoZQpzdGFibGUgMS4xMCBicmFuY2ggYW5kIGZpeGVkIHRoZXJlIGFzIHdlbGwsIGFs bCBmaXhlcyB0aGF0IGVuZGVkIHVwIGluIHRoZQoxLjEwIGJyYW5jaCBhcmUgYWxzbyBpbmNsdWRl ZCBpbiAxLjEyLgoKVGhpcyBsaXN0IGFsc28gZG9lcyBub3QgaW5jbHVkZSBpc3N1ZXMgdGhhdCBo YXZlIGJlZW4gZml4ZWQgd2l0aG91dCBhIGJ1ZwpyZXBvcnQgaW4gYnVnemlsbGEsIHNvIHRoZSBh Y3R1YWwgbnVtYmVyIG9mIGZpeGVzIGlzIG11Y2ggaGlnaGVyLgoKW2J1Z3MtZml4ZWQtaW4tMS4x Ml06IGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL2J1Z2xpc3QuY2dpP2J1Z19zdGF0dXM9UkVT T0xWRUQmYnVnX3N0YXR1cz1WRVJJRklFRCZjbGFzc2lmaWNhdGlvbj1QbGF0Zm9ybSZsaW1pdD0w Jmxpc3RfaWQ9MjEzMjY1Jm9yZGVyPWJ1Z19pZCZwcm9kdWN0PUdTdHJlYW1lciZxdWVyeV9mb3Jt YXQ9YWR2YW5jZWQmcmVzb2x1dGlvbj1GSVhFRCZ0YXJnZXRfbWlsZXN0b25lPTEuMTAuMSZ0YXJn ZXRfbWlsZXN0b25lPTEuMTAuMiZ0YXJnZXRfbWlsZXN0b25lPTEuMTAuMyZ0YXJnZXRfbWlsZXN0 b25lPTEuMTAuNCZ0YXJnZXRfbWlsZXN0b25lPTEuMTEuMSZ0YXJnZXRfbWlsZXN0b25lPTEuMTEu MiZ0YXJnZXRfbWlsZXN0b25lPTEuMTEuMyZ0YXJnZXRfbWlsZXN0b25lPTEuMTEuNCZ0YXJnZXRf bWlsZXN0b25lPTEuMTEuOTAmdGFyZ2V0X21pbGVzdG9uZT0xLjExLjkxJnRhcmdldF9taWxlc3Rv bmU9MS4xMi4wCgojIyBTdGFibGUgMS4xMiBicmFuY2gKCkFmdGVyIHRoZSAxLjEyLjAgcmVsZWFz ZSB0aGVyZSB3aWxsIGJlIHNldmVyYWwgMS4xMi54IGJ1Zy1maXggcmVsZWFzZXMgd2hpY2gKd2ls bCBjb250YWluIGJ1ZyBmaXhlcyB3aGljaCBoYXZlIGJlZW4gZGVlbWVkIHN1aXRhYmxlIGZvciBh IHN0YWJsZSBicmFuY2gsCmJ1dCBubyBuZXcgZmVhdHVyZXMgb3IgaW50cnVzaXZlIGNoYW5nZXMg d2lsbCBiZSBhZGRlZCB0byBhIGJ1Zy1maXggcmVsZWFzZQp1c3VhbGx5LiBUaGUgMS4xMi54IGJ1 Zy1maXggcmVsZWFzZXMgd2lsbCBiZSBtYWRlIGZyb20gdGhlIGdpdCAxLjEyIGJyYW5jaCwgd2hp Y2gKaXMgYSBzdGFibGUgYnJhbmNoLgoKIyMjIDEuMTIuMAoKMS4xMi4wIHdhcyByZWxlYXNlZCBv biA0dGggTWF5IDIwMTcuCgojIyBLbm93biBJc3N1ZXMKCi0gVGhlIGB3ZWJydGNkc3BgIGVsZW1l bnQgaXMgY3VycmVudGx5IG5vdCBzaGlwcGVkIGFzIHBhcnQgb2YgdGhlIFdpbmRvd3MKICBiaW5h cnkgcGFja2FnZXMgZHVlIHRvIGEgW2J1aWxkIHN5c3RlbSBpc3N1ZV1bYnVnLTc3MDI2NF0uCgpb YnVnLTc3MDI2NF06IGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03 NzAyNjQKCiMjIFNjaGVkdWxlIGZvciAxLjE0CgpPdXIgbmV4dCBtYWpvciBmZWF0dXJlIHJlbGVh c2Ugd2lsbCBiZSAxLjE0LCBhbmQgMS4xMSB3aWxsIGJlIHRoZSB1bnN0YWJsZQpkZXZlbG9wbWVu dCB2ZXJzaW9uIGxlYWRpbmcgdXAgdG8gdGhlIHN0YWJsZSAxLjEyIHJlbGVhc2UuIFRoZSBkZXZl bG9wbWVudApvZiAxLjEzLzEuMTQgd2lsbCBoYXBwZW4gaW4gdGhlIGdpdCBtYXN0ZXIgYnJhbmNo LgoKVGhlIHBsYW4gZm9yIHRoZSAxLjE0IGRldmVsb3BtZW50IGN5Y2xlIGlzIHlldCB0byBiZSBj b25maXJtZWQsIGJ1dCBpdCBpcwpleHBlY3RlZCB0aGF0IGZlYXR1cmUgZnJlZXplIHdpbGwgYmUg YXJvdW5kIFNlcHRlbWJlciAyMDE3CmZvbGxvd2VkIGJ5IHNldmVyYWwgMS4xMyBwcmUtcmVsZWFz ZXMgYW5kIHRoZSBuZXcgMS4xNCBzdGFibGUgcmVsZWFzZQppbiBPY3RvYmVyLgoKMS4xNCB3aWxs IGJlIGJhY2t3YXJkcy1jb21wYXRpYmxlIHRvIHRoZSBzdGFibGUgMS4xMiwgMS4xMCwgMS44LCAx LjYsIDEuNCwKMS4yIGFuZCAxLjAgcmVsZWFzZSBzZXJpZXMuCgotIC0gLQoKKlRoZXNlIHJlbGVh c2Ugbm90ZXMgaGF2ZSBiZWVuIHByZXBhcmVkIGJ5IFNlYmFzdGlhbiBEcsO2Z2UsIFRpbS1QaGls aXBwIE3DvGxsZXIKYW5kIFbDrWN0b3IgTWFudWVsIErDoXF1ZXogTGVhbC4qCgoqTGljZW5zZTog W0NDIEJZLVNBIDQuMF0oaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbGljZW5zZXMvYnktc2Ev NC4wLykqCm== --=-vMOSK/VkuoXOMXEF4zUG-- --=-M+llD6ZcUJJIJbU77IaB Content-Type: application/pgp-signature; name="signature.asc" Content-Description: This is a digitally signed message part Content-Transfer-Encoding: 7bit -----BEGIN PGP SIGNATURE----- iQKTBAABCgB9FiEEf0vHzDygb5cza7/rBmjMFIbC17UFAlkLTG9fFIAAAAAALgAo aXNzdWVyLWZwckBub3RhdGlvbnMub3BlbnBncC5maWZ0aGhvcnNlbWFuLm5ldDdG NEJDN0NDM0NBMDZGOTczMzZCQkZFQjA2NjhDQzE0ODZDMkQ3QjUACgkQBmjMFIbC 17UDdQ/8DCy/5aRpIIyDGIQJa84iw0W+BTVuJGSC+jiWuWhZfR8o8IXxaEAwGSiM When3a0zOFHa2wbHY7qkXibhI3fjewMM+YPO2jdS8XSyoF7DQXd0rCeyM1s4PLZY fq+9mNxKBBumpx2FD1LLYvsvA/KgPuuvHXdeZgoykPp2RnXyiNGuReZ0FLBHcflL V9DA5EgPVziAze0JHU27CpXGZ3rqgNczgdcxvaoYkNZV2mc0dsxuGedhFE/QRXov GLuiqRUxOX11bj4SqXOvaTdYseIe4sdGXdgiNzHSuDyxkBy1WfvR0G2Qbhlkugk5 Jn59ZRMg0lEgxsXoAvmSQOgKkiYGFC7Yk5j/JdgUsDXYdFMEkh1s+CohtvtuGwJt 8SWqa05vA3+iTci7UzVc/U6vKVtTwMS0vzjhprZRUhzBFx+pNc25y6hxRny35Xzy vDaZGm98b1f+3IxmQC0T60QMXYVnyJf3BHDYpqojFVe+HBsxdmOxKeDSbSXPwu5E krvzD67qmiNBrMG8cB6Q/yCi1u+n6R2wq+lg7YV0EE/ot+HRtbOyxwlBW1lIVA4n X14iKH5WgYcCqECExKFDbrk96/6Ear20yljwbUEnTCg6jpDtnM+Jn5oKLmldPvjX KrQCqmyBsvAouXLNyzBrodqcCoik6klgr1uoOsYMjxeMhgnGuMI= =ezEd -----END PGP SIGNATURE----- --=-M+llD6ZcUJJIJbU77IaB-- --===============1063011111== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: inline X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZ3N0cmVhbWVy LWRldmVsIG1haWxpbmcgbGlzdApnc3RyZWFtZXItZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3Jn Cmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZ3N0cmVhbWVy LWRldmVsCg== --===============1063011111==--