RELEASE: GStreamer 1.10.0 stable release
Sebastian Dröge <[email protected]> Tue, 01 Nov 2016 18:35:39 +0200
| Newsgroups | gmane.comp.video.gstreamer.devel,gmane.comp.gnome.multimedia,gmane.comp.kde.users.multimedia |
|---|---|
| Message-ID | <[email protected]> |
--===============0230598697== Content-Type: multipart/signed; micalg="pgp-sha512"; protocol="application/pgp-signature"; boundary="=-UlkmqSkQbQYnOwdygcuy" --=-UlkmqSkQbQYnOwdygcuy Content-Type: multipart/mixed; boundary="=-Q09Z4YPTe446fd1F8iqt" --=-Q09Z4YPTe446fd1F8iqt Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable The GStreamer team is proud to announce a new major feature release in the stable 1.x API series of your favourite cross-platform multimedia framework= ! As always, this release is again packed with new features, bug fixes and ot= her improvements. See=C2=A0https://gstreamer.freedesktop.org/releases/1.10/ for the full list= of changes. Binaries for Android, iOS, Mac OS X and Windows will be provided shortly af= ter the source release by the GStreamer project during the stable 1.10 release series. Release tarballs can be downloaded directly from: http://gstreamer.freedesktop.org/src/gstreamer/gstreamer-1.10.0.tar.xz 1e7778fabe480185bfc4ce552f0860de1443f6618a68a86ccdd65854fed37207 gstreamer= -1.10.0.tar.xz http://gstreamer.freedesktop.org/src/gst-plugins-base/gst-plugins-base-1.10= .0.tar.xz bfcdef97dfc69a0bbdb4403c47aae4e53def176bf0b781c5d818550536cfe94a gst-plugi= ns-base-1.10.0.tar.xz http://gstreamer.freedesktop.org/src/gst-plugins-good/gst-plugins-good-1.10= .0.tar.xz 7a03559763f5634ab1b4b2edd3e9f7442bdd4657187e20ea5e1887ae46371de2 gst-plugi= ns-good-1.10.0.tar.xz http://gstreamer.freedesktop.org/src/gst-plugins-bad/gst-plugins-bad-1.10.0= .tar.xz 3d5f9d16e1a3ee7c5c024494cc3a3420007bfdce6f94511317ae004972811c4f gst-plugi= ns-bad-1.10.0.tar.xz http://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-1.10= .0.tar.xz 97de8d1903abb54305732e6b8781c8c42f5cc5a2a548a8f31b38c189e81a55e0 gst-plugi= ns-ugly-1.10.0.tar.xz http://gstreamer.freedesktop.org/src/gst-libav/gst-libav-1.10.0.tar.xz af98204411c78abb98233c1858f2886be6401304d24be218752bbbcede9bd85b gst-libav= -1.10.0.tar.xz http://gstreamer.freedesktop.org/src/gst-rtsp-server/gst-rtsp-server-1.10.0= .tar.xz aa72a94cccdd2387ad25dc65c5c0b1f76269c3997cbde348232eec2a1565b3cd gst-rtsp-= server-1.10.0.tar.xz http://gstreamer.freedesktop.org/src/gst-python/gst-python-1.10.0.tar.xz de59b493e47bf0221421873f6c80811dd7ff7b1929521264d3a559bc410dc741 gst-pytho= n-1.10.0.tar.xz http://gstreamer.freedesktop.org/src/gst-editing-services/gstreamer-editing= -services-1.10.0.tar.xz 1f2c8b8ba33c1cc746f129bb9d6b85e5fc4eff5fbb1c85bbc2c5b6683362560c gstreamer= -editing-services-1.10.0.tar.xz http://gstreamer.freedesktop.org/src/gst-validate/gst-validate-1.10.0.tar.x= z a99a5cd1dfa5d021dd0197b32b04a20348479c097ebeb1f4c36161d70048a176 gst-valid= ate-1.10.0.tar.xz http://gstreamer.freedesktop.org/src/gstreamer-vaapi/gstreamer-vaapi-1.10.0= .tar.xz 9d6afc273f6e35d051b56819b8943655dbe7b216e3433472a4636aa37bfa04f8 gstreamer= -vaapi-1.10.0.tar.xz http://gstreamer.freedesktop.org/src/gst-omx/gst-omx-1.10.0.tar.xz 89f7da36abcf278200f561fa9d8d7042ad1459aa211cdc81c4c1a3d2162e9e7f gst-omx-1= .10.0.tar.xz As always, please let us know of any issues you run into by filing a bug in Bugzilla:=C2=A0http://gstreamer.freedesktop.org/bugs/ --=20 Sebastian Dr=C3=B6ge, Centricular Ltd =C2=B7 http://www.centricular.com --=-Q09Z4YPTe446fd1F8iqt Content-Disposition: attachment; filename="release-notes-1.10.md" Content-Type: text/markdown; name="release-notes-1.10.md"; charset="UTF-8" Content-Transfer-Encoding: base64 IyBHU3RyZWFtZXIgMS4xMCBSZWxlYXNlIE5vdGVzCgoqKkdTdHJlYW1lciAxLjEwLjAgd2FzIHJl bGVhc2VkIG9uIDFzdCBOb3ZlbWJlciAyMDE2LioqCgpUaGUgR1N0cmVhbWVyIHRlYW0gaXMgcHJv dWQgdG8gYW5ub3VuY2UgYSBuZXcgbWFqb3IgZmVhdHVyZSByZWxlYXNlIGluIHRoZQpzdGFibGUg MS54IEFQSSBzZXJpZXMgb2YgeW91ciBmYXZvdXJpdGUgY3Jvc3MtcGxhdGZvcm0gbXVsdGltZWRp YSBmcmFtZXdvcmshCgpBcyBhbHdheXMsIHRoaXMgcmVsZWFzZSBpcyBhZ2FpbiBwYWNrZWQgd2l0 aCBuZXcgZmVhdHVyZXMsIGJ1ZyBmaXhlcyBhbmQgb3RoZXIKaW1wcm92ZW1lbnRzLgoKU2VlIFto dHRwczovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvcmVsZWFzZXMvMS4xMC9dW2xhdGVzdF0g Zm9yIHRoZSBsYXRlc3QKdmVyc2lvbiBvZiB0aGlzIGRvY3VtZW50LgoKKkxhc3QgdXBkYXRlZDog VHVlc2RheSAxIE5vdiAyMDE2LCAxNTowMCBVVEMgWyhsb2cpXVtnaXRsb2ddKgoKW2xhdGVzdF06 IGh0dHBzOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9yZWxlYXNlcy8xLjEwLwpbZ2l0bG9n XTogaHR0cHM6Ly9jZ2l0LmZyZWVkZXNrdG9wLm9yZy9nc3RyZWFtZXIvd3d3L2xvZy9zcmMvaHRk b2NzL3JlbGVhc2VzLzEuMTAvcmVsZWFzZS1ub3Rlcy0xLjEwLm1kCgojIyBJbnRyb2R1Y3Rpb24K ClRoZSBHU3RyZWFtZXIgdGVhbSBpcyBwcm91ZCB0byBhbm5vdW5jZSBhIG5ldyBtYWpvciBmZWF0 dXJlIHJlbGVhc2UgaW4gdGhlCnN0YWJsZSAxLnggQVBJIHNlcmllcyBvZiB5b3VyIGZhdm91cml0 ZSBjcm9zcy1wbGF0Zm9ybSBtdWx0aW1lZGlhIGZyYW1ld29yayEKCkFzIGFsd2F5cywgdGhpcyBy ZWxlYXNlIGlzIGFnYWluIHBhY2tlZCB3aXRoIG5ldyBmZWF0dXJlcywgYnVnIGZpeGVzIGFuZCBv dGhlcgppbXByb3ZlbWVudHMuCgojIyBIaWdobGlnaHRzCgotIFNldmVyYWwgY29udmVuaWVuY2Ug QVBJcyBoYXZlIGJlZW4gYWRkZWQgdG8gbWFrZSBkZXZlbG9wZXJzJyBsaXZlcyBlYXNpZXIKLSBB IG5ldyBgR3N0U3RyZWFtYCBBUEkgcHJvdmlkZXMgYXBwbGljYXRpb25zIGEgbW9yZSBtZWFuaW5n ZnVsIHZpZXcgb2YgdGhlCiAgc3RydWN0dXJlIG9mIHN0cmVhbXMsIHNpbXBsaWZ5aW5nIHRoZSBw cm9jZXNzIG9mIGRlYWxpbmcgd2l0aCBtZWRpYSBpbgogIGNvbXBsZXggY29udGFpbmVyIGZvcm1h dHMKLSBFeHBlcmltZW50YWwgYGRlY29kZWJpbjNgIGFuZCBgcGxheWJpbjNgIGVsZW1lbnRzIHdo aWNoIGJyaW5nIGEgbnVtYmVyIG9mCiAgaW1wcm92ZW1lbnRzIHdoaWNoIHdlcmUgaGFyZCB0byBp bXBsZW1lbnQgd2l0aGluIGBkZWNvZGViaW5gIGFuZCBgcGxheWJpbmAKLSBBIG5ldyBgcGFyc2Vi aW5gIGVsZW1lbnQgdG8gYXV0b21hdGljYWxseSB1bnBhY2sgYW5kIHBhcnNlIGEgc3RyZWFtLCBz dG9wcGluZwogIGp1c3Qgc2hvcnQgb2YgZGVjb2RpbmcKLSBFeHBlcmltZW50YWwgbmV3IGBtZXNv bmAtYmFzZWQgYnVpbGQgc3lzdGVtLCBicmluZ2luZyBmYXN0ZXIgYnVpbGQgYW5kIG11Y2gKICBi ZXR0ZXIgV2luZG93cyBzdXBwb3J0IChpbmNsdWRpbmcgZm9yIGJ1aWxkaW5nIHdpdGggVmlzdWFs IFN0dWRpbykKLSBBIG5ldyBgZ3N0LWRvY3NgIG1vZHVsZSBoYXMgYmVlbiBjcmVhdGVkLCBhbmQg d2UgYXJlIGluIHRoZSBwcm9jZXNzIG9mIG1vdmluZwogIG91ciBkb2N1bWVudGF0aW9uIHRvIGEg bWFya2Rvd24tYmFzZWQgZm9ybWF0IGZvciBlYXNpZXIgbWFpbnRlbmFuY2UgYW5kCiAgdXBkYXRl cwotIEEgbmV3IGBnc3QtZXhhbXBsZXNgIG1vZHVsZSBoYXMgYmVlbiBjcmVhdGUsIHdoaWNoIGNv bnRhaW5zIGV4YW1wbGUKICBHU3RyZWFtZXIgYXBwbGljYXRpb25zIGFuZCBpcyBleHBlY3RlZCB0 byBncm93IHdpdGggbWFueSBtb3JlIGV4YW1wbGVzIGluCiAgdGhlIGZ1dHVyZQotIFZhcmlvdXMg T3BlbkdMIGFuZCBPcGVuR0x8RVMtcmVsYXRlZCBmaXhlcyBhbmQgaW1wcm92ZW1lbnRzIGZvciBn cmVhdGVyCiAgZWZmaWNpZW5jeSBvbiBkZXNrdG9wIGFuZCBtb2JpbGUgcGxhdGZvcm1zLCBhbmQg VnVsa2FuIHN1cHBvcnQgb24gV2F5bGFuZCB3YXMKICBhbHNvIGFkZGVkCi0gRXh0ZW5zaXZlIGlt cHJvdmVtZW50cyB0byB0aGUgVkFBUEkgcGx1Z2lucyBmb3IgaW1wcm92ZWQgcm9idXN0bmVzcyBh bmQKICBlZmZpY2llbmN5Ci0gTG90cyBvZiBmaXhlcyBhbmQgaW1wcm92ZW1lbnRzIGFjcm9zcyB0 aGUgYm9hcmQsIHNwYW5uaW5nIFJUUC9SVFNQLCBWNEwyLAogIEJsdWV0b290aCwgYXVkaW8gY29u dmVyc2lvbiwgZWNobyBjYW5jZWxsYXRpb24sIGFuZCBtb3JlIQoKIyMgTWFqb3IgbmV3IGZlYXR1 cmVzIGFuZCBjaGFuZ2VzCgojIyMgTm90ZXdvcnRoeSBuZXcgQVBJLCBmZWF0dXJlcyBhbmQgb3Ro ZXIgY2hhbmdlcwoKIyMjIyBDb3JlIEFQSSBhZGRpdGlvbnMKCiMjIyMjIFJlY2VpdmUgcHJvcGVy dHkgY2hhbmdlIG5vdGlmaWNhdGlvbnMgdmlhIGJ1cyBtZXNzYWdlcwoKTmV3IEFQSSB3YXMgYWRk ZWQgdG8gcmVjZWl2ZSBlbGVtZW50IHByb3BlcnR5IGNoYW5nZSBub3RpZmljYXRpb25zIHZpYQpi dXMgbWVzc2FnZXMuIFNvIGZhciwgYXBwbGljYXRpb25zIGhhZCB0byBjb25uZWN0IGEgY2FsbGJh Y2sgdG8gYW4gZWxlbWVudCdzCmBub3RpZnk6OnByb3BlcnR5LW5hbWVgIHNpZ25hbCB2aWEgdGhl IEdPYmplY3QgQVBJLCB3aGljaCB3YXMgaW5jb252ZW5pZW50IGZvcgphdCBsZWFzdCB0d28gcmVh c29uczogb25lIGhhZCB0byBpbXBsZW1lbnQgYSBzaWduYWwgY2FsbGJhY2sgZnVuY3Rpb24sIGFu ZCB0aGF0CmNhbGxiYWNrIGZ1bmN0aW9uIHdvdWxkIHVzdWFsbHkgYmUgY2FsbGVkIGZyb20gb25l IG9mIHRoZSBzdHJlYW1pbmcgdGhyZWFkcywgc28Kb25lIGhhZCB0byBtYXJzaGFsIChzZW5kKSBh bnkgaW5mb3JtYXRpb24gZ2F0aGVyZWQgb3IgcGVuZGluZyByZXF1ZXN0cyB0byB0aGUKbWFpbiBh cHBsaWNhdGlvbiB0aHJlYWQgd2hpY2ggd2FzIHRlZGlvdXMgYW5kIGVycm9yLXByb25lLgoKRW50 ZXIgW2Bnc3RfZWxlbWVudF9hZGRfcHJvcGVydHlfbm90aWZ5X3dhdGNoKClgXVtub3RpZnktd2F0 Y2hdIGFuZApbYGdzdF9lbGVtZW50X2FkZF9wcm9wZXJ0eV9kZWVwX25vdGlmeV93YXRjaCgpYF1b ZGVlcC1ub3RpZnktd2F0Y2hdIHdoaWNoIHdpbGwKd2F0Y2ggZm9yIGNoYW5nZXMgb2YgYSBwcm9w ZXJ0eSBvbiB0aGUgc3BlY2lmaWVkIGVsZW1lbnQsIGVpdGhlciBvbmx5IGZvciB0aGlzCmVsZW1l bnQgb3IgcmVjdXJzaXZlbHkgZm9yIGEgd2hvbGUgYmluIG9yIHBpcGVsaW5lLiBXaGVuZXZlciBz dWNoIGEKcHJvcGVydHkgY2hhbmdlIGhhcHBlbnMsIGEgYEdTVF9NRVNTQUdFX1BST1BFUlRZX05P VElGWWAgbWVzc2FnZSB3aWxsIGJlIHBvc3RlZApvbiB0aGUgcGlwZWxpbmUgYnVzIHdpdGggZGV0 YWlscyBvZiB0aGUgZWxlbWVudCwgdGhlIHByb3BlcnR5IGFuZCB0aGUgbmV3CnByb3BlcnR5IHZh bHVlLCBhbGwgb2Ygd2hpY2ggY2FuIGJlIHJldHJpZXZlZCBsYXRlciBmcm9tIHRoZSBtZXNzYWdl IGluIHRoZQphcHBsaWNhdGlvbiB2aWEgW2Bnc3RfbWVzc2FnZV9wYXJzZV9wcm9wZXJ0eV9ub3Rp ZnkoKWBdW3BhcnNlLW5vdGlmeV0uIFVubGlrZQp0aGUgR3N0QnVzIHdhdGNoIGZ1bmN0aW9ucywg dGhpcyBBUEkgZG9lcyBub3QgcmVseSBvbiBhIHJ1bm5pbmcgR0xpYiBtYWluIGxvb3AuCgpUaGUg YWJvdmUgY2FuIGJlIHVzZWQgdG8gYmUgbm90aWZpZWQgYXN5bmNocm9ub3VzbHkgb2YgY2FwcyBj aGFuZ2VzIGluIHRoZQpwaXBlbGluZSwgb3Igdm9sdW1lIGNoYW5nZXMgb24gYW4gYXVkaW8gc2lu ayBlbGVtZW50LCBmb3IgZXhhbXBsZS4KCltub3RpZnktd2F0Y2hdOiBodHRwczovL2dzdHJlYW1l ci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwv R3N0RWxlbWVudC5odG1sI2dzdC1lbGVtZW50LWFkZC1wcm9wZXJ0eS1ub3RpZnktd2F0Y2gKW2Rl ZXAtbm90aWZ5LXdhdGNoXTogaHR0cHM6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEv ZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdEVsZW1lbnQuaHRtbCNnc3QtZWxl bWVudC1hZGQtcHJvcGVydHktZGVlcC1ub3RpZnktd2F0Y2gKW3BhcnNlLW5vdGlmeV06IGh0dHBz Oi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3Ry ZWFtZXIvaHRtbC9Hc3RNZXNzYWdlLmh0bWwjZ3N0LW1lc3NhZ2UtcGFyc2UtcHJvcGVydHktbm90 aWZ5CgojIyMjIyBHc3RCaW4gImRlZXAiIGVsZW1lbnQtYWRkZWQgYW5kIGVsZW1lbnQtcmVtb3Zl ZCBzaWduYWxzCgpHc3RCaW4gaGFzIGdhaW5lZCBgImRlZXAtZWxlbWVudC1hZGRlZCJgIGFuZCBg ImRlZXAtZWxlbWVudC1yZW1vdmVkImAgc2lnbmFscwp3aGljaCBtYWtlcyBpdCBlYXNpZXIgZm9y IGFwcGxpY2F0aW9ucyBhbmQgaGlnaGVyLWxldmVsIHBsdWdpbnMgdG8gdHJhY2sgd2hlbgplbGVt ZW50cyBhcmUgYWRkZWQgb3IgcmVtb3ZlZCBmcm9tIGEgY29tcGxleCBwaXBlbGluZSB3aXRoIG11 bHRpcGxlIHN1Yi1iaW5zLgoKYHBsYXliaW5gIG1ha2VzIHVzZSBvZiB0aGlzIHRvIGltcGxlbWVu dCB0aGUgbmV3IGAiZWxlbWVudC1zZXR1cCJgIHNpZ25hbCB3aGljaApjYW4gYmUgdXNlZCB0byBj b25maWd1cmUgZWxlbWVudHMgYXMgdGhleSBhcmUgYWRkZWQgdG8gYHBsYXliaW5gLCBqdXN0IGxp a2UgdGhlCmV4aXN0aW5nIGAic291cmNlLXNldHVwImAgc2lnbmFsIHdoaWNoIGNhbiBiZSB1c2Vk IHRvIGNvbmZpZ3VyZSB0aGUgc291cmNlCmVsZW1lbnQgY3JlYXRlZC4KCiMjIyMjIEVycm9yIG1l c3NhZ2VzIGNhbiBjb250YWluIGFkZGl0aW9uYWwgc3RydWN0dXJlZCBkZXRhaWxzCgpJdCBpcyBv ZnRlbiB1c2VmdWwgdG8gcHJvdmlkZSBhZGRpdGlvbmFsLCBzdHJ1Y3R1cmVkIGluZm9ybWF0aW9u IGluIGVycm9yLAp3YXJuaW5nIG9yIGluZm8gbWVzc2FnZXMgZm9yIGFwcGxpY2F0aW9ucyAob3Ig aGlnaGVyLWxldmVsIGVsZW1lbnRzKSB0byBtYWtlCmludGVsbGlnZW50IGRlY2lzaW9ucyBiYXNl ZCBvbiB0aGVtLiBUbyBhbGxvdyB0aGlzLCBlcnJvciwgd2FybmluZyBhbmQgaW5mbwptZXNzYWdl cyBub3cgaGF2ZSBBUEkgZm9yIGFkZGluZyBhcmJpdHJhcnkgYWRkaXRpb25hbCBpbmZvcm1hdGlv biB0byB0aGVtCnVzaW5nIGEgYEdzdFN0cnVjdHVyZWA6CltgR1NUX0VMRU1FTlRfRVJST1JfV0lU SF9ERVRBSUxTYF1bZWxlbWVudC1lcnJvci13aXRoLWRldGFpbHNdIGFuZApjb3JyZXNwb25kaW5n IEFQSSBmb3IgdGhlIG90aGVyIG1lc3NhZ2UgdHlwZXMuCgpUaGlzIGlzIG5vdyB1c2VkIGUuZy4g YnkgdGhlIG5ldyBbYEdTVF9FTEVNRU5UX0ZMT1dfRVJST1JgXVtlbGVtZW50LWZsb3ctZXJyb3Jd CkFQSSB0byBpbmNsdWRlIHRoZSBhY3R1YWwgZmxvdyBlcnJvciBpbiB0aGUgZXJyb3IgbWVzc2Fn ZSwgYW5kIHRoZQpbc291cGh0dHBzcmMgZWxlbWVudF1bc291cGh0dHBzcmMtZGV0YWlsZWQtZXJy b3JzXSB0byBwcm92aWRlIHRoZSBIVFRQCnN0YXR1cyBjb2RlLCBhbmQgdGhlIFVSTCAoaWYgYW55 KSB0byB3aGljaCBhIHJlZGlyZWN0aW9uIGhhcyBoYXBwZW5lZC4KCltlbGVtZW50LWVycm9yLXdp dGgtZGV0YWlsc106IGh0dHBzOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9n c3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9Hc3RFbGVtZW50Lmh0bWwjR1NULUVMRU1FTlQt RVJST1ItV0lUSC1ERVRBSUxTOkNBUFMKW2VsZW1lbnQtZmxvdy1lcnJvcl06IGh0dHBzOi8vZ3N0 cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIv aHRtbC9Hc3RFbGVtZW50Lmh0bWwjR1NULUVMRU1FTlQtRkxPVy1FUlJPUjpDQVBTCltzb3VwaHR0 cHNyYy1kZXRhaWxlZC1lcnJvcnNdOiBodHRwczovL2NnaXQuZnJlZWRlc2t0b3Aub3JnL2dzdHJl YW1lci9nc3QtcGx1Z2lucy1nb29kL3RyZWUvZXh0L3NvdXAvZ3N0c291cGh0dHBzcmMuYz9pZD02 MGQzMGRiOTEyYTFhZWRkNzQzZTY2YjlkY2QyZTIxZDcxZmJiMjRmI24xMzE4CgojIyMjIyBSZWRp cmVjdCBtZXNzYWdlcyBoYXZlIG9mZmljaWFsIEFQSSBub3cKClNvbWV0aW1lcywgZWxlbWVudHMg bmVlZCB0byByZWRpcmVjdCB0aGUgY3VycmVudCBzdHJlYW0gVVJMIGFuZCB0ZWxsIHRoZQphcHBs aWNhdGlvbiB0byBwcm9jZWVkIHdpdGggdGhpcyBuZXcgVVJMLCBwb3NzaWJseSB1c2luZyBhIGRp ZmZlcmVudApwcm90b2NvbCB0b28gKHRodXMgY2hhbmdpbmcgdGhlIHBpcGVsaW5lIGNvbmZpZ3Vy YXRpb24pLiBVbnRpbCBub3csIHRoaXMgd2FzCmluZm9ybWFsbHkgaW1wbGVtZW50ZWQgdXNpbmcg YEVMRU1FTlRgIG1lc3NhZ2VzIG9uIHRoZSBidXMuCgpOb3cgdGhpcyBoYXMgYmVlbiBmb3JtYWxp emVkIGluIHRoZSBmb3JtIG9mIGEgbmV3IGBHU1RfTUVTU0FHRV9SRURJUkVDVGAgbWVzc2FnZS4K QSBuZXcgcmVkaXJlY3QgbWVzc2FnZSBjYW4gYmUgY3JlYXRlZCB1c2luZyBbYGdzdF9tZXNzYWdl X25ld19yZWRpcmVjdCgpYF1bbmV3LXJlZGlyZWN0XS4KSWYgbmVlZGVkLCBtdWx0aXBsZSByZWRp cmVjdCBsb2NhdGlvbnMgY2FuIGJlIHNwZWNpZmllZCBieSBjYWxsaW5nCltgZ3N0X21lc3NhZ2Vf YWRkX3JlZGlyZWN0X2VudHJ5KClgXVthZGQtcmVkaXJlY3RdIHRvIGFkZCBmdXJ0aGVyIHJlZGly ZWN0CmVudHJpZXMsIGFsbCB3aXRoIG1ldGFkYXRhLCBzbyB0aGUgYXBwbGljYXRpb24gY2FuIGRl Y2lkZSB3aGljaCBpcwptb3N0IHN1aXRhYmxlIChlLmcuIGRlcGVuZGluZyBvbiB0aGUgYml0cmF0 ZSB0YWdzKS4KCltuZXctcmVkaXJlY3RdOiBodHRwczovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5v cmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvR3N0TWVzc2FnZS5odG1s I2dzdC1tZXNzYWdlLW5ldy1yZWRpcmVjdApbYWRkLXJlZGlyZWN0XTogaHR0cHM6Ly9nc3RyZWFt ZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1s L0dzdE1lc3NhZ2UuaHRtbCNnc3QtbWVzc2FnZS1hZGQtcmVkaXJlY3QtZW50cnkKCiMjIyMjIE5l dyBwYWQgbGlua2luZyBjb252ZW5pZW5jZSBmdW5jdGlvbnMgdGhhdCBhdXRvbWF0aWNhbGx5IGNy ZWF0ZSBnaG9zdCBwYWRzCgpOZXcgcGFkIGxpbmtpbmcgY29udmVuaWVuY2UgZnVuY3Rpb25zIHdl cmUgYWRkZWQ6CltgZ3N0X3BhZF9saW5rX21heWJlX2dob3N0aW5nKClgXVtwYWQtbWF5YmUtZ2hv c3RdIGFuZApbYGdzdF9wYWRfbGlua19tYXliZV9naG9zdGluZ19mdWxsKClgXVtwYWQtbWF5YmUt Z2hvc3QtZnVsbF0gd2hpY2ggd2VyZQpwcmV2aW91c2x5IGludGVybmFsIHRvIEdTdHJlYW1lciBo YXZlIG5vdyBiZWVuIGV4cG9zZWQgZm9yIGdlbmVyYWwgdXNlLgoKVGhlIGV4aXN0aW5nIHBhZCBs aW5rIGZ1bmN0aW9ucyB3aWxsIHJlZnVzZSB0byBsaW5rIHBhZHMgb3IgZWxlbWVudHMgYXQKZGlm ZmVyZW50IGxldmVscyBpbiB0aGUgcGlwZWxpbmUgaGllcmFyY2h5LCByZXF1aXJpbmcgdGhlIGRl dmVsb3BlciB0bwpjcmVhdGUgZ2hvc3QgcGFkcyB3aGVyZSBuZWNlc3NhcnkuIFRoZXNlIG5ldyB1 dGlsaXR5IGZ1bmN0aW9ucyB3aWxsCmF1dG9tYXRpY2FsbHkgY3JlYXRlIGdob3N0cGFkcyBhcyBu ZWVkZWQgd2hlbiBsaW5raW5nIHBhZHMgYXQgZGlmZmVyZW50CmxldmVscyBvZiB0aGUgaGllcmFy Y2h5IChlLmcuIGZyb20gYW4gZWxlbWVudCBpbnNpZGUgYSBiaW4gdG8gb25lIHRoYXQncyBhdAp0 aGUgc2FtZSBsZXZlbCBpbiB0aGUgaGllcmFyY2h5IGFzIHRoZSBiaW4sIG9yIGluIGFub3RoZXIg YmluKS4KCltwYWQtbWF5YmUtZ2hvc3RdOiBodHRwczovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5v cmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvR3N0UGFkLmh0bWwjZ3N0 LXBhZC1saW5rLW1heWJlLWdob3N0aW5nCltwYWQtbWF5YmUtZ2hvc3QtZnVsbF06IGh0dHBzOi8v Z3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFt ZXIvaHRtbC9Hc3RQYWQuaHRtbCNnc3QtcGFkLWxpbmstbWF5YmUtZ2hvc3RpbmctZnVsbAoKIyMj IyMgTWlzY2VsbGFuZW91cwoKUGFkIHByb2JlczogSURMRSBhbmQgQkxPQ0sgcHJvYmVzIG5vdyB3 b3JrIHNsaWdodGx5IGRpZmZlcmVudGx5IGluIHB1bGwgbW9kZSwKc28gdGhhdCBwdXNoIGFuZCBw dWxsIG1vZGUgaGF2ZSBvcHBvc2l0ZSBzY2VuYXJpb3MgZm9yIGlkbGUgYW5kIGJsb2NraW5nIHBy b2Jlcy4KSW4gcHVzaCBtb2RlLCBpdCB3aWxsIGJsb2NrIHdpdGggc29tZSBkYXRhIHR5cGUgYW5k IElETEUgd29uJ3QgaGF2ZSBhbnkgZGF0YS4KSW4gcHVsbCBtb2RlLCBpdCB3aWxsIGJsb2NrIF9i ZWZvcmVfIGdldHRpbmcgYSBidWZmZXIgYW5kIHdpbGwgYmUgSURMRSBvbmNlIHNvbWUKZGF0YSBo YXMgYmVlbiBvYnRhaW5lZC4gKFtjb21taXRdW2NvbW1pdC1wYWQtcHJvYmVzXSwgW2J1Z11bYnVn LXBhZC1wcm9iZXNdKQoKW2NvbW1pdC1wYWQtcHJvYmVzXTogaHR0cHM6Ly9jZ2l0LmZyZWVkZXNr dG9wLm9yZy9nc3RyZWFtZXIvZ3N0cmVhbWVyL2NvbW1pdC9nc3QvZ3N0cGFkLmM/aWQ9MzY4ZWU4 YTMzNmQwYzg2OGQ4MWZkYWNlNTRiMjQ0MzFhOGI0OGNiZgpbYnVnLXBhZC1wcm9iZXNdOiBodHRw czovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzYxMjExCgpbYGdzdF9wYXJz ZV9sYXVuY2hfZnVsbCgpYF1bcGFyc2UtbGF1bmNoLWZ1bGxdIGNhbiBub3cgYmUgbWFkZSB0byBy ZXR1cm4gYQpgR3N0QmluYCBpbnN0ZWFkIG9mIGEgdG9wLWxldmVsIHBpcGVsaW5lIGJ5IHBhc3Np bmcgdGhlIG5ldwpgR1NUX1BBUlNFX0ZMQUdfUExBQ0VfSU5fQklOYCBmbGFnLgoKW3BhcnNlLWxh dW5jaC1mdWxsXTogaHR0cHM6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dz dHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL2dzdHJlYW1lci1Hc3RQYXJzZS5odG1sI2dzdC1w YXJzZS1sYXVuY2gtZnVsbAoKVGhlIGRlZmF1bHQgR1N0cmVhbWVyIGRlYnVnIGxvZyBoYW5kbGVy IGNhbiBub3cgYmUgcmVtb3ZlZCBiZWZvcmUKY2FsbGluZyBgZ3N0X2luaXQoKWAsIHNvIHRoYXQg aXQgd2lsbCBuZXZlciBnZXQgaW5zdGFsbGVkIGFuZCB3b24ndCBiZSBhY3RpdmUKZHVyaW5nIGlu aXRpYWxpemF0aW9uLgoKQSBuZXcgW2BTVFJFQU1fR1JPVVBfRE9ORWAgZXZlbnRdW3N0cmVhbS1n cm91cC1kb25lLWV2ZW50XSB3YXMgYWRkZWQuIEluIHNvbWUKd2F5cyBpdCB3b3JrcyBzaW1pbGFy IHRvIHRoZSBgRU9TYCBldmVudCBpbiB0aGF0IGl0IGNhbiBiZSB1c2VkIHRvIHVuYmxvY2sKZG93 bnN0cmVhbSBlbGVtZW50cyB3aGljaCBtYXkgYmUgd2FpdGluZyBmb3IgZnVydGhlciBkYXRhLCBz dWNoIGFzIGZvciBleGFtcGxlCmBpbnB1dC1zZWxlY3RvcmAuIFVubGlrZSBgRU9TYCwgZnVydGhl ciBkYXRhIGZsb3cgbWF5IGhhcHBlbiBhZnRlciB0aGUKYFNUUkVBTV9HUk9VUF9ET05FYCBldmVu dCB0aG91Z2ggKGFuZCB3aXRob3V0IHRoZSBuZWVkIHRvIGZsdXNoIHRoZSBwaXBlbGluZSkuClRo aXMgaXMgdXNlZCB0byB1bmJsb2NrIGlucHV0LXNlbGVjdG9yIHdoZW4gc3dpdGNoaW5nIGJldHdl ZW4gc3RyZWFtcyBpbgphZGFwdGl2ZSBzdHJlYW1pbmcgc2NlbmFyaW9zIChlLmcuIEhMUykuCgpb c3RyZWFtLWdyb3VwLWRvbmUtZXZlbnRdOiBodHRwczovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5v cmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvR3N0RXZlbnQuaHRtbCNn c3QtZXZlbnQtbmV3LXN0cmVhbS1ncm91cC1kb25lCgpUaGUgYGdzdC1sYXVuY2gtMS4wYCBjb21t YW5kIGxpbmUgdG9vbCB3aWxsIG5vdyBwcmludCB1bmVzY2FwZWQgY2FwcyBpbiB2ZXJib3NlCm1v ZGUgKGVuYWJsZWQgYnkgdGhlIC12IHN3aXRjaCkuCgpbYGdzdF9lbGVtZW50X2NhbGxfYXN5bmMo KWBdW2NhbGwtYXN5bmNdIGhhcyBiZWVuIGFkZGVkIGFzIGNvbnZlbmllbmNlIEFQSSBmb3IKcGx1 Z2luIGRldmVsb3BlcnMuIEl0IGlzIHVzZWZ1bCBmb3Igb25lLXNob3Qgb3BlcmF0aW9ucyB0aGF0 IG5lZWQgdG8gYmUgZG9uZQpmcm9tIGEgdGhyZWFkIG90aGVyIHRoYW4gdGhlIGN1cnJlbnQgc3Ry ZWFtaW5nIHRocmVhZC4gSXQgaXMgYmFja2VkIGJ5IGEKdGhyZWFkLXBvb2wgdGhhdCBpcyBzaGFy ZWQgYnkgYWxsIGVsZW1lbnRzLgoKW2NhbGwtYXN5bmNdOiBodHRwczovL2dzdHJlYW1lci5mcmVl ZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvR3N0RWxl bWVudC5odG1sI2dzdC1lbGVtZW50LWNhbGwtYXN5bmMKClZhcmlvdXMgcmFjZSBjb25kaXRpb25z IGhhdmUgYmVlbiBmaXhlZCBhcm91bmQgdGhlIGBHc3RQb2xsYCBBUEkgdXNlZCBieSBlLmcuCmBH c3RCdXNgIGFuZCBgR3N0QnVmZmVyUG9vbGAuIFNvbWUgb2YgdGhlc2UgbWFuaWZlc3RlZCB0aGVt c2VsdmVzIHByaW1hcmlseQpvbiBXaW5kb3dzLgoKYEdzdEFkYXB0ZXJgIGNhbiBub3cga2VlcCB0 cmFjayBvZiBkaXNjb250aW51aXRpZXMgc2lnbmFsbGVkIHZpYSB0aGUgYERJU0NPTlRgCmJ1ZmZl ciBmbGFnLCBhbmQgaGFzIGdhaW5lZCBbbmV3IEFQSV1bbmV3LWFkYXB0ZXItYXBpXSB0byB0cmFj ayBQVFMsIERUUyBhbmQKb2Zmc2V0IGF0IHRoZSBsYXN0IGRpc2NvbnQuIFRoaXMgaXMgdXNlZnVs IGZvciBwbHVnaW5zIGltcGxlbWVudGluZyBhZHZhbmNlZAp0cmljayBtb2RlIHNjZW5hcmlvcy4K CltuZXctYWRhcHRlci1hcGldOiBodHRwczovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0 YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyLWxpYnMvaHRtbC9Hc3RBZGFwdGVyLmh0bWwj Z3N0LWFkYXB0ZXItcHRzLWF0LWRpc2NvbnQKCmBHc3RUZXN0Q2xvY2tgIGdhaW5lZCBhIG5ldyBb YCJjbG9jay10eXBlImAgcHJvcGVydHldW2Nsb2NrLXR5cGUtcHJvcF0uCgpbY2xvY2stdHlwZS1w cm9wXTogaHR0cHM6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1l ci9oZWFkL2dzdHJlYW1lci1saWJzL2h0bWwvR3N0VGVzdENsb2NrLmh0bWwjR3N0VGVzdENsb2Nr LS1jbG9jay10eXBlCgojIyMjIEdzdFN0cmVhbSBBUEkgZm9yIHN0cmVhbSBhbm5vdW5jZW1lbnQg YW5kIHN0cmVhbSBzZWxlY3Rpb24KCk5ldyBzdHJlYW0gbGlzdGluZyBhbmQgc3RyZWFtIHNlbGVj dGlvbiBBUEk6IG5ldyBBUEkgaGFzIGJlZW4gYWRkZWQgdG8KcHJvdmlkZSBoaWdoLWxldmVsIGFi c3RyYWN0aW9ucyBmb3Igc3RyZWFtcyAoW2BHc3RTdHJlYW1gXVtzdHJlYW0tYXBpXSkKYW5kIGNv bGxlY3Rpb25zIG9mIHN0cmVhbXMgKFtgR3N0U3RyZWFtQ29sbGVjdGlvbnNgXVtzdHJlYW0tY29s bGVjdGlvbi1hcGldKS4KCiMjIyMjIFN0cmVhbSBsaXN0aW5nCgpBIFtgR3N0U3RyZWFtYF1bc3Ry ZWFtLWFwaV0gY29udGFpbnMgYWxsIHRoZSBpbmZvcm1hdGlvbiBwZXJ0aW5lbnQgdG8gYSBzdHJl YW0sCnN1Y2ggYXMgc3RyZWFtIGlkLCBjYXBzLCB0YWdzLCBmbGFncyBhbmQgc3RyZWFtIHR5cGUo cyk7IGl0IGNhbiByZXByZXNlbnQgYQpzaW5nbGUgZWxlbWVudGFyeSBzdHJlYW0gKGUuZy4gYXVk aW8sIHZpZGVvLCBzdWJ0aXRsZXMsIGV0Yy4pIG9yIGEgY29udGFpbmVyCnN0cmVhbS4gVGhpcyB3 aWxsIGRlcGVuZCBvbiB0aGUgY29udGV4dC4gSW4gYSBkZWNvZGViaW4zL3BsYXliaW4zIG9uZQpp dCB3aWxsIHR5cGljYWxseSBiZSBlbGVtZW50YXJ5IHN0cmVhbXMgdGhhdCBjYW4gYmUgc2VsZWN0 ZWQgYW5kIHVuc2VsZWN0ZWQuCgpBIFtgR3N0U3RyZWFtQ29sbGVjdGlvbmBdW3N0cmVhbS1jb2xs ZWN0aW9uLWFwaV0gcmVwcmVzZW50cyBhIGdyb3VwIG9mIHN0cmVhbXMKYW5kIGlzIHVzZWQgdG8g YW5ub3VuY2Ugb3IgcHVibGlzaCBhbGwgYXZhaWxhYmxlIHN0cmVhbXMuIEEgR3N0U3RyZWFtQ29s bGVjdGlvbgppcyBpbW11dGFibGUgLSBvbmNlIGNyZWF0ZWQgaXQgd29uJ3QgY2hhbmdlLiBJZiB0 aGUgYXZhaWxhYmxlIHN0cmVhbXMgY2hhbmdlLAplLmcuIGJlY2F1c2UgYSBuZXcgc3RyZWFtIGFw cGVhcmVkIG9yIHNvbWUgc3RyZWFtcyBkaXNhcHBlYXJlZCwgYSBuZXcgc3RyZWFtCmNvbGxlY3Rp b24gd2lsbCBiZSBwdWJsaXNoZWQuIFRoaXMgbmV3IHN0cmVhbSBjb2xsZWN0aW9uIG1heSBjb250 YWluIHN0cmVhbXMKZnJvbSB0aGUgcHJldmlvdXMgY29sbGVjdGlvbiBpZiB0aG9zZSBzdHJlYW1z IHBlcnNpc3QsIG9yIGNvbXBsZXRlbHkgbmV3IG9uZXMuClN0cmVhbSBjb2xsZWN0aW9ucyBkbyBu b3QgeWV0IGxpc3QgYWxsIHRoZW9yZXRpY2FsbHkgYXZhaWxhYmxlIHN0cmVhbXMsCmUuZy4gb3Ro ZXIgYXZhaWxhYmxlIERWRCBhbmdsZXMgb3IgYWx0ZXJuYXRpdmUgcmVzb2x1dGlvbnMvYml0cmF0 ZSBvZiB0aGUgc2FtZQpzdHJlYW0gaW4gY2FzZSBvZiBhZGFwdGl2ZSBzdHJlYW1pbmcuCgpOZXcg ZXZlbnRzIGFuZCBtZXNzYWdlcyBoYXZlIGJlZW4gYWRkZWQgdG8gbm90aWZ5IG9yIHVwZGF0ZSBv dGhlciBlbGVtZW50cyBhbmQKdGhlIGFwcGxpY2F0aW9uIGFib3V0IHdoaWNoIHN0cmVhbXMgYXJl IGN1cnJlbnRseSBhdmFpbGFibGUgYW5kL29yIHNlbGVjdGVkLgpUaGlzIHdheSwgd2UgY2FuIGVh c2lseSBhbmQgc2VhbWxlc3NseSBsZXQgdGhlIGFwcGxpY2F0aW9uIGtub3cgd2hlbmV2ZXIgdGhl CmF2YWlsYWJsZSBzdHJlYW1zIGNoYW5nZSwgYXMgaGFwcGVucyBmcmVxdWVudGx5IHdpdGggZGln aXRhbCB0ZWxldmlzaW9uIHN0cmVhbXMKZm9yIGV4YW1wbGUuIFRoZSBuZXcgc3lzdGVtIGlzIGFs c28gbW9yZSBmbGV4aWJsZS4gRm9yIGV4YW1wbGUsIGl0IGlzIG5vdyBhbHNvCnBvc3NpYmxlIGZv ciB0aGUgYXBwbGljYXRpb24gdG8gc2VsZWN0IG11bHRpcGxlIHN0cmVhbXMgb2YgdGhlIHNhbWUg dHlwZQooZS5nLiBpbiBhIHRyYW5zY29kaW5nL3RyYW5zbXV4aW5nIHNjZW5hcmlvKS4KCkEgW2BT VFJFQU1fQ09MTEVDVElPTmAgbWVzc2FnZV1bc3RyZWFtLWNvbGxlY3Rpb24tbXNnXSBpcyBwb3N0 ZWQgb24gdGhlIGJ1cwp0byBpbmZvcm0gdGhlIHBhcmVudCBiaW4gKGUuZy4gYHBsYXliaW4zYCwg YGRlY29kZWJpbjNgKSBhbmQvb3IgdGhlIGFwcGxpY2F0aW9uCmFib3V0IHdoYXQgc3RyZWFtcyBh cmUgYXZhaWxhYmxlLCBzbyB5b3Ugbm8gbG9uZ2VyIGhhdmUgdG8gaHVudCBmb3IgdGhpcwppbmZv cm1hdGlvbiBhdCBkaWZmZXJlbnQgcGxhY2VzLiBUaGUgYXZhaWxhYmxlIGluZm9ybWF0aW9uIGlu Y2x1ZGVzIG51bWJlciBvZgpzdHJlYW1zIG9mIGVhY2ggdHlwZSwgY2FwcywgdGFncyBldGMuICBC aW5zIGFuZC9vciB0aGUgYXBwbGljYXRpb24gY2FuIGludGVyY2VwdAp0aGUgbWVzc2FnZSBzeW5j aHJvbm91c2x5IHRvIHNlbGVjdCBhbmQgZGVzZWxlY3Qgc3RyZWFtcyBiZWZvcmUgYW55IGRhdGEg aXMKcHJvZHVjZWQgLSBmb3IgdGhlIGNhc2Ugd2hlcmUgZWxlbWVudHMgc3VjaCBhcyB0aGUgZGVt dXhlcnMgc3VwcG9ydCB0aGUgbmV3CnN0cmVhbSBBUEksIG5vdCBuZWNlc3NhcmlseSBpbiB0aGUg cGFyc2ViaW4gY29tcGF0aWJpbGl0eSBmYWxsYmFjayBjYXNlLgoKU2ltaWxhcmx5LCB0aGVyZSBp cyBhbHNvIGEgW2BTVFJFQU1fQ09MTEVDVElPTmAgZXZlbnRdW3N0cmVhbS1jb2xsZWN0aW9uLWV2 ZW50XQp0byBpbmZvcm0gZG93bnN0cmVhbSBlbGVtZW50cyBvZiB0aGUgYXZhaWxhYmxlIHN0cmVh bXMuIFRoaXMgZXZlbnQgY2FuIGJlIHVzZWQKYnkgZWxlbWVudHMgdG8gYWdncmVnYXRlIHN0cmVh bXMgZnJvbSBtdWx0aXBsZSBpbnB1dHMgaW50byBvbmUgc2luZ2xlIGNvbGxlY3Rpb24uCgpUaGUg YFNUUkVBTV9TVEFSVGAgZXZlbnQgd2FzIGV4dGVuZGVkIHNvIHRoYXQgaXQgY2FuIGFsc28gY29u dGFpbiBhIEdzdFN0cmVhbQpvYmplY3Qgd2l0aCBhbGwgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGN1 cnJlbnQgc3RyZWFtLCBzZWUKW2Bnc3RfZXZlbnRfc2V0X3N0cmVhbSgpYF1bZXZlbnQtc2V0LXN0 cmVhbV0gYW5kCltgZ3N0X2V2ZW50X3BhcnNlX3N0cmVhbSgpYF1bZXZlbnQtcGFyc2Utc3RyZWFt XS4KW2Bnc3RfcGFkX2dldF9zdHJlYW0oKWBdW3BhZC1nZXQtc3RyZWFtXSBpcyBhIG5ldyB1dGls aXR5IGZ1bmN0aW9uIHRoYXQgY2FuIGJlCnVzZWQgdG8gbG9vayB1cCB0aGUgR3N0U3RyZWFtIGZy b20gdGhlIGBTVFJFQU1fU1RBUlRgIHN0aWNreSBldmVudCBvbiBhIHBhZC4KCltzdHJlYW0tYXBp XTogaHR0cHM6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9o ZWFkL2dzdHJlYW1lci9odG1sL2dzdHJlYW1lci1Hc3RTdHJlYW0uaHRtbApbc3RyZWFtLWNvbGxl Y3Rpb24tYXBpXTogaHR0cHM6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dz dHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL2dzdHJlYW1lci1Hc3RTdHJlYW1Db2xsZWN0aW9u Lmh0bWwKW3N0cmVhbS1jb2xsZWN0aW9uLW1zZ106IGh0dHBzOi8vZ3N0cmVhbWVyLmZyZWVkZXNr dG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9Hc3RNZXNzYWdl Lmh0bWwjZ3N0LW1lc3NhZ2UtbmV3LXN0cmVhbS1jb2xsZWN0aW9uCltzdHJlYW0tY29sbGVjdGlv bi1ldmVudF06IGh0dHBzOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3Ry ZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9Hc3RFdmVudC5odG1sI2dzdC1ldmVudC1uZXctc3Ry ZWFtLWNvbGxlY3Rpb24KW2V2ZW50LXNldC1zdHJlYW1dOiBodHRwczovL2dzdHJlYW1lci5mcmVl ZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvR3N0RXZl bnQuaHRtbCNnc3QtZXZlbnQtc2V0LXN0cmVhbQpbZXZlbnQtcGFyc2Utc3RyZWFtXTogaHR0cHM6 Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJl YW1lci9odG1sL0dzdEV2ZW50Lmh0bWwjZ3N0LWV2ZW50LXBhcnNlLXN0cmVhbQpbcGFkLWdldC1z dHJlYW1dOiBodHRwczovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVh bWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvR3N0UGFkLmh0bWwjZ3N0LXBhZC1nZXQtc3RyZWFtCgoj IyMjIyBTdHJlYW0gc2VsZWN0aW9uCgpPbmNlIHRoZSBhdmFpbGFibGUgc3RyZWFtcyBoYXZlIGJl ZW4gcHVibGlzaGVkLCBzdHJlYW1zIGNhbiBiZSBzZWxlY3RlZCB2aWEKdGhlaXIgc3RyZWFtIElE IHVzaW5nIHRoZSBuZXcgYFNFTEVDVF9TVFJFQU1TYCBldmVudCwgd2hpY2ggY2FuIGJlIGNyZWF0 ZWQKd2l0aCBbYGdzdF9ldmVudF9uZXdfc2VsZWN0X3N0cmVhbXMoKWBdW2V2ZW50LXNlbGVjdC1z dHJlYW1zXS4gVGhlIG5ldyBBUEkKc3VwcG9ydHMgc2VsZWN0aW5nIG11bHRpcGxlIHN0cmVhbXMg cGVyIHN0cmVhbSB0eXBlLiBJbiB0aGUgZnV0dXJlLCB3ZSBtYXkgYWxzbwppbXBsZW1lbnQgZXhw bGljaXQgZGVzZWxlY3Rpb24gb2Ygc3RyZWFtcyB0aGF0IHdpbGwgbmV2ZXIgYmUgdXNlZCwgc28K ZWxlbWVudHMgY2FuIHNraXAgdGhlc2UgYW5kIG5ldmVyIGV4cG9zZSB0aGVtIG9yIG91dHB1dCBk YXRhIGZvciB0aGVtIGluIHRoZQpmaXJzdCBwbGFjZS4KClRoZSBhcHBsaWNhdGlvbiBpcyB0aGVu IG5vdGlmaWVkIG9mIHRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgc3RyZWFtcyB2aWEgdGhlCm5ldyBg U1RSRUFNU19TRUxFQ1RFRGAgbWVzc2FnZSBvbiB0aGUgcGlwZWxpbmUgYnVzLCBjb250YWluaW5n IGJvdGggdGhlIGN1cnJlbnQKc3RyZWFtIGNvbGxlY3Rpb24gYXMgd2VsbCBhcyB0aGUgc2VsZWN0 ZWQgc3RyZWFtcy4gVGhpcyBtaWdodCBiZSBwb3N0ZWQgaW4KcmVzcG9uc2UgdG8gdGhlIGFwcGxp Y2F0aW9uIHNlbmRpbmcgYSBgU0VMRUNUX1NUUkVBTVNgIGV2ZW50IG9yIHdoZW4KYGRlY29kZWJp bjNgIG9yIGBwbGF5YmluM2AgZGVjaWRlIG9uIHRoZSBzdHJlYW1zIHRvIGJlIGluaXRpYWxseSBz ZWxlY3RlZCB3aXRob3V0CmFwcGxpY2F0aW9uIGlucHV0LgoKW2V2ZW50LXNlbGVjdC1zdHJlYW1z XTogaHR0cHM6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9o ZWFkL2dzdHJlYW1lci9odG1sL0dzdEV2ZW50Lmh0bWwjZ3N0LWV2ZW50LW5ldy1zZWxlY3Qtc3Ry ZWFtcwoKIyMjIyMgRnVydGhlciByZWFkaW5nCgpTZWUgZnVydGhlciBiZWxvdyBmb3Igc29tZSBu b3RlcyBvbiB0aGUgbmV3IGVsZW1lbnRzIHN1cHBvcnRpbmcgdGhpcyBuZXcKc3RyZWFtIEFQSSwg bmFtZWx5OiBgZGVjb2RlYmluM2AsIGBwbGF5YmluM2AgYW5kIGBwYXJzZWJpbmAuCgpNb3JlIGlu Zm9ybWF0aW9uIGFib3V0IHRoZSBuZXcgQVBJIGFuZCB0aGUgbmV3IGVsZW1lbnRzIGNhbiBhbHNv IGJlIGZvdW5kIGhlcmU6CgotIEdTdHJlYW1lciBbc3RyZWFtIHNlbGVjdGlvbiBkZXNpZ24gZG9j c11bc3RyZWFtcy1kZXNpZ25dCi0gRWR3YXJkIEhlcnZleSdzIHRhbGsgWyJUaGUgbmV3IHN0cmVh bXMgQVBJOiBEZXNpZ24gYW5kIHVzYWdlIl1bc3RyZWFtcy10YWxrXSAoW3NsaWRlc11bc3RyZWFt cy1zbGlkZXNdKQotIEVkd2FyZCBIZXJ2ZXkncyB0YWxrIFsiRGVjb2RlYmluMzogRGVhbGluZyB3 aXRoIG1vZGVybiBwbGF5YmFjayB1c2UgY2FzZXMiXVtkYjMtdGFsa10gKFtzbGlkZXNdW2RiMy1z bGlkZXNdKQoKW3N0cmVhbXMtZGVzaWduXTogaHR0cHM6Ly9jZ2l0LmZyZWVkZXNrdG9wLm9yZy9n c3RyZWFtZXIvZ3N0cmVhbWVyL3RyZWUvZG9jcy9kZXNpZ24vcGFydC1zdHJlYW0tc2VsZWN0aW9u LnR4dApbc3RyZWFtcy10YWxrXTogaHR0cHM6Ly9nc3Rjb25mLnViaWNhc3QudHYvdmlkZW9zL3Ro ZS1uZXctZ3N0c3RyZWFtLWFwaS1kZXNpZ24tYW5kLXVzYWdlLwpbc3RyZWFtcy1zbGlkZXNdOiBo dHRwczovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9ldmVudHMvZ3N0cmVhbWVyLWNv bmZlcmVuY2UvMjAxNi9FZHdhcmQlMjBIZXJ2ZXklMjAtJTIwVGhlJTIwTmV3JTIwU3RyZWFtcyUy MEFQSSUyMERlc2lnbiUyMGFuZCUyMFVzYWdlLnBkZgpbZGIzLXRhbGtdOiBodHRwczovL2dzdGNv bmYudWJpY2FzdC50di92aWRlb3MvZGVjb2RlYmluMy1vci1kZWFsaW5nLXdpdGgtbW9kZXJuLXBs YXliYWNrLXVzZS1jYXNlcy8KW2RiMy1zbGlkZXNdOiBodHRwczovL2dzdHJlYW1lci5mcmVlZGVz a3RvcC5vcmcvZGF0YS9ldmVudHMvZ3N0cmVhbWVyLWNvbmZlcmVuY2UvMjAxNS9FZHdhcmQlMjBI ZXJ2ZXklMjAtJTIwZGVjb2RlYmluMy5wZGYKCiMjIyMgQXVkaW8gY29udmVyc2lvbiBhbmQgcmVz YW1wbGluZyBBUEkKClRoZSBhdWRpbyBjb252ZXJzaW9uIGxpYnJhcnkgcmVjZWl2ZWQgYSBjb21w bGV0ZWx5IG5ldyBhbmQgcmV3cml0dGVuIGF1ZGlvCnJlc2FtcGxlciwgY29tcGxlbWVudGluZyB0 aGUgYXVkaW8gY29udmVyc2lvbiByb3V0aW5lcyBtb3ZlZCBpbnRvIHRoZSBhdWRpbwpsaWJyYXJ5 IGluIHRoZSBbcHJldmlvdXMgcmVsZWFzZV1bcmVsZWFzZS1ub3Rlcy0xLjhdLiBJbnRlZ3JhdGlu ZyB0aGUgcmVzYW1wbGVyCndpdGggdGhlIG90aGVyIGF1ZGlvIGNvbnZlcnNpb24gbGlicmFyeSBh bGxvd3MgdXMgdG8gaW1wbGVtZW50IGdlbmVyaWMKY29udmVyc2lvbiBtdWNoIG1vcmUgZWZmaWNp ZW50bHksIGFzIGZvcm1hdCBjb252ZXJzaW9uIGFuZCByZXNhbXBsaW5nIGNhbiBub3cKYmUgZG9u ZSBpbiB0aGUgc2FtZSBwcm9jZXNzaW5nIGxvb3AgaW5zdGVhZCBvZiBoYXZpbmcgdG8gZG8gaXQg aW4gc2VwYXJhdGUKc3RlcHMgKG91ciBlbGVtZW50IGltcGxlbWVudGF0aW9ucyBkbyBub3QgbWFr ZSB1c2Ugb2YgdGhpcyB5ZXQgdGhvdWdoKS4KClRoZSBuZXcgYXVkaW8gcmVzYW1wbGVyIGxpYnJh cnkgaXMgYSBjb21iaW5hdGlvbiBvZiBzb21lIG9mIHRoZSBiZXN0IGZlYXR1cmVzCm9mIG90aGVy IHNhbXBsZXJzIHN1Y2ggYXMgZmZtcGVnLCBzcGVleCBhbmQgU1JDLiBJdCBuYXRpdmVseSBzdXBw b3J0cyBTMTYsIFMzMiwKRjMyIGFuZCBGNjQgZm9ybWF0cyBhbmQgdXNlcyBvcHRpbWl6ZWQgeDg2 IGFuZCBuZW9uIGFzc2VtYmx5IGZvciBtb3N0IG9mIGl0cwpwcm9jZXNzaW5nLiBJdCBhbHNvIGhh cyBzdXBwb3J0IGZvciBkeW5hbWljYWxseSBjaGFuZ2luZyBzYW1wbGUgcmF0ZXMgYnkgaW5jcmVt ZW50YWxseQp1cGRhdGluZyB0aGUgZmlsdGVyIHRhYmxlcyB1c2luZyBsaW5lYXIgb3IgY3ViaWMg aW50ZXJwb2xhdGlvbi4gQWNjb3JkaW5nIHRvCnNvbWUgYmVuY2htYXJrcywgaXQncyBvbmUgb2Yg dGhlIGZhc3Rlc3QgYW5kIG1vc3QgYWNjdXJhdGUgcmVzYW1wbGVycyBhcm91bmQuCgpUaGUgYGF1 ZGlvcmVzYW1wbGVgIHBsdWdpbiBoYXMgYmVlbiBwb3J0ZWQgdG8gdGhlIG5ldyBhdWRpbyBsaWJy YXJ5IGZ1bmN0aW9ucwp0byBtYWtlIHVzZSBvZiB0aGUgbmV3IHJlc2FtcGxlci4KCltyZWxlYXNl LW5vdGVzLTEuOF06IGh0dHBzOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9yZWxlYXNlcy8x LjgvCgojIyMjIFN1cHBvcnQgZm9yIFNNUFRFIHRpbWVjb2RlcwoKU3VwcG9ydCBmb3IgU01QVEUg dGltZWNvZGVzIHdhcyBhZGRlZCB0byB0aGUgR1N0cmVhbWVyIHZpZGVvIGxpYnJhcnkuIFRoaXMK Y29tZXMgd2l0aCBhbiBhYnN0cmFjdGlvbiBmb3IgdGltZWNvZGVzLCBbYEdzdFZpZGVvVGltZUNv ZGVgXVt2aWRlby10aW1lY29kZV0KYW5kIGEgW2BHc3RNZXRhYF1bdmlkZW8tdGltZWNvZGUtbWV0 YV0gdGhhdCBjYW4gYmUgcGxhY2VkIG9uIHZpZGVvIGJ1ZmZlcnMgZm9yCmNhcnJ5aW5nIHRoZSB0 aW1lY29kZSBpbmZvcm1hdGlvbiBmb3IgZWFjaCBmcmFtZS4gQWRkaXRpb25hbGx5IHRoZXJlIGlz CnZhcmlvdXMgQVBJIGZvciBtYWtpbmcgaGFuZGxpbmcgb2YgdGltZWNvZGVzIGVhc3kgYW5kIHRv IGRvIHZhcmlvdXMKY2FsY3VsYXRpb25zIHdpdGggdGhlbS4KCkEgbmV3IHBsdWdpbiBjYWxsZWQg W2B0aW1lY29kZWBdW3RpbWVjb2RlLXBsdWdpbl0gd2FzIGFkZGVkLCB0aGF0IGNvbnRhaW5zIGFu CmVsZW1lbnQgY2FsbGVkIGB0aW1lY29kZXN0YW1wZXJgIGZvciBwdXR0aW5nIHRoZSB0aW1lY29k ZSBtZXRhIG9uIHZpZGVvIGZyYW1lcwpiYXNlZCBvbiBjb3VudGluZyB0aGUgZnJhbWVzIGFuZCBh bm90aGVyIGVsZW1lbnQgY2FsbGVkIGB0aW1lY29kZXdhaXRgIHRoYXQKZHJvcHMgYWxsIHZpZGVv IChhbmQgYXVkaW8pIHVudGlsIGEgc3BlY2lmaWMgdGltZWNvZGUgaXMgcmVhY2hlZC4KCkFkZGl0 aW9uYWxseSBzdXBwb3J0IHdhcyBhZGRlZCB0byB0aGUgRGVja2xpbmsgcGx1Z2luIGZvciBpbmNs dWRpbmcgdGhlCnRpbWVjb2RlIGluZm9ybWF0aW9uIHdoZW4gc2VuZGluZyB2aWRlbyBvdXQgb3Ig Y2FwdHVyaW5nIGl0IHZpYSBTREksIHRoZQpgcXRtdXhgIGVsZW1lbnQgaXMgYWJsZSB0byB3cml0 ZSB0aW1lY29kZSBpbmZvcm1hdGlvbiBpbnRvIHRoZSBNT1YgY29udGFpbmVyLAphbmQgdGhlIGB0 aW1lb3ZlcmxheWAgZWxlbWVudCBjYW4gb3ZlcmxheSB0aW1lY29kZXMgb24gdG9wIG9mIHRoZSB2 aWRlby4KCk1vcmUgaW5mb3JtYXRpb24gY2FuIGJlIGZvdW5kIGluIHRoZSBbdGFsayBhYm91dCB0 aW1lY29kZXNdW3RpbWVjb2RlLXRhbGtdIGF0CnRoZSBHU3RyZWFtZXIgQ29uZmVyZW5jZSAyMDE2 LgoKW3ZpZGVvLXRpbWVjb2RlXTogaHR0cHM6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2Rh dGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdC1wbHVnaW5zLWJhc2UtbGlicy9odG1sL2dzdC1wbHVn aW5zLWJhc2UtbGlicy1nc3R2aWRlby5odG1sI0dzdFZpZGVvVGltZUNvZGUKW3ZpZGVvLXRpbWVj b2RlLW1ldGFdOiBodHRwczovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0 cmVhbWVyL2hlYWQvZ3N0LXBsdWdpbnMtYmFzZS1saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFzZS1s aWJzLWdzdHZpZGVvbWV0YS5odG1sI2dzdC1idWZmZXItYWRkLXZpZGVvLXRpbWUtY29kZS1tZXRh Clt0aW1lY29kZS1wbHVnaW5dOiBodHRwczovL2NnaXQuZnJlZWRlc2t0b3Aub3JnL2dzdHJlYW1l ci9nc3QtcGx1Z2lucy1iYWQvdHJlZS9nc3QvdGltZWNvZGUKW3RpbWVjb2RlLXRhbGtdOiBodHRw czovL2dzdGNvbmYudWJpY2FzdC50di92aWRlb3Mvc21wdGUtdGltZWNvZGVzLWluLWdzdHJlYW1l ci8KCiMjIyMgR1N0cmVhbWVyIE9wZW5NQVggSUwgcGx1Z2luCgpUaGUgbGFzdCBnc3Qtb214IHJl bGVhc2UsIDEuMi4wLCB3YXMgaW4gSnVseSAyMDE0LiBJdCB3YXMgYWJvdXQgdGltZSB0byBnZXQK YSBuZXcgb25lIG91dCB3aXRoIGFsbCB0aGUgaW1wcm92ZW1lbnRzIHRoYXQgaGF2ZSBoYXBwZW5l ZCBpbiB0aGUgbWVhbnRpbWUuCkZyb20gbm93IG9uLCB3ZSB3aWxsIHRyeSB0byByZWxlYXNlIGdz dC1vbXggdG9nZXRoZXIgd2l0aCBhbGwgb3RoZXIgbW9kdWxlcy4KClRoaXMgcmVsZWFzZSBmZWF0 dXJlcyBhIGxvdCBvZiBidWdmaXhlcywgaW1wcm92ZWQgc3VwcG9ydCBmb3IgdGhlIFJhc3BiZXJy eSBQaQphbmQgaW4gZ2VuZXJhbCBpbXByb3ZlZCBzdXBwb3J0IGZvciB6ZXJvY29weSByZW5kZXJp bmcgdmlhIEVHTCBhbmQgYSBmZXcgbWlub3IKbmV3IGZlYXR1cmVzLgoKQXQgdGhpcyBwb2ludCwg Z3N0LW9teCBpcyBrbm93biB0byB3b3JrIGJlc3Qgb24gdGhlIFJhc3BiZXJyeSBQaSBwbGF0Zm9y bSBidXQKaXQgaXMgYWxzbyBrbm93biB0byB3b3JrIG9uIHZhcmlvdXMgb3RoZXIgcGxhdGZvcm1z LiBVbmZvcnR1bmF0ZWx5LCB3ZSBhcmUKbm90IGluY2x1ZGluZyBjb25maWd1cmF0aW9ucyBmb3Ig YW55IG90aGVyIHBsYXRmb3Jtcywgc28gaWYgeW91IGhhcHBlbiB0byB1c2UKZ3N0LW9teDogcGxl YXNlIHNlbmQgdXMgcGF0Y2hlcyB3aXRoIHlvdXIgY29uZmlndXJhdGlvbiBhbmQgY29kZSBjaGFu Z2VzIQoKIyMjIE5ldyBFbGVtZW50cwoKIyMjIyBkZWNvZGViaW4zLCBwbGF5YmluMywgcGFyc2Vi aW4gKGV4cGVyaW1lbnRhbCkKClRoaXMgcmVsZWFzZSBmZWF0dXJlcyBuZXcgZGVjb2RpbmcgYW5k IHBsYXliYWNrIGVsZW1lbnRzIGFzIGV4cGVyaW1lbnRhbAp0ZWNobm9sb2d5IHByZXZpZXdzOiBg ZGVjb2RlYmluM2AgYW5kIGBwbGF5YmluM2Agd2lsbCBzb29uIHN1cGVyc2VkZSB0aGUKZXhpc3Rp bmcgYGRlY29kZWJpbmAgYW5kIGBwbGF5YmluYCBlbGVtZW50cy4gV2Ugc2tpcHBlZCB0aGUgbnVt YmVyIDIgYmVjYXVzZQppdCB3YXMgYWxyZWFkeSB1c2VkIGJhY2sgaW4gdGhlIDAuMTAgZGF5cywg d2hpY2ggbWlnaHQgY2F1c2UgY29uZnVzaW9uLgpFeHBlcmltZW50YWwgdGVjaG5vbG9neSBwcmV2 aWV3IG1lYW5zIHRoYXQgZXZlcnl0aGluZyBzaG91bGQgd29yayBmaW5lIGFscmVhZHksCmJ1dCB3 ZSBjYW4ndCBndWFyYW50ZWUgdGhlcmUgd29uJ3QgYmUgbWlub3IgYmVoYXZpb3VyYWwgY2hhbmdl cyBpbiB0aGUKbmV4dCBjeWNsZS4gSW4gYW55IGNhc2UsIHBsZWFzZSB0ZXN0IGFuZCByZXBvcnQg YW55IHByb2JsZW1zIGJhY2suCgpCZWZvcmUgd2UgZ28gaW50byBkZXRhaWwgYWJvdXQgd2hhdCB0 aGVzZSBuZXcgZWxlbWVudHMgaW1wcm92ZSwgbGV0J3MgbG9vayBhdAp0aGUgbmV3IFtgcGFyc2Vi aW5gXVtwYXJzZWJpbl0gZWxlbWVudC4gSXQgd29ya3Mgc2ltaWxhcmx5IHRvIGBkZWNvZGViaW5g IGFuZApgZGVjb2RlYmluM2AsIG9ubHkgdGhhdCBpdCBzdG9wcyBvbmUgc3RlcCBzaG9ydCBhbmQg ZG9lcyBub3QgcGx1ZyBhbnkgYWN0dWFsCmRlY29kZXIgZWxlbWVudHMuIEl0IHdpbGwgb25seSBw bHVnIHBhcnNlcnMsIHRhZyByZWFkZXJzLCBkZW11eGVycyBhbmQKZGVwYXlsb2FkZXJzLiBBbHNv IG5vdGUgdGhhdCBwYXJzZWJpbiBkb2VzIG5vdCBjb250YWluIGFueSBxdWV1ZWluZyBlbGVtZW50 LgoKW2BkZWNvZGViaW4zYCdzXVtkZWNvZGViaW4zXSBpbnRlcm5hbCBhcmNoaXRlY3R1cmUgaXMg c2xpZ2h0bHkgZGlmZmVyZW50IGZyb20KdGhlIGV4aXN0aW5nIGBkZWNvZGViaW5gIGVsZW1lbnQg YW5kIGZpeGVzIG1hbnkgbG9uZy1zdGFuZGluZyBpc3N1ZXMgd2l0aCBvdXIKZGVjb2RpbmcgZW5n aW5lLiBGb3Igb25lLCBkYXRhIGlzIG5vdyBmZWQgaW50byB0aGUgaW50ZXJuYWwgYG11bHRpcXVl dWVgIGVsZW1lbnQKKmFmdGVyKiBpdCBoYXMgYmVlbiBwYXJzZWQgYW5kIHRpbWVzdGFtcGVkLCB3 aGljaCBtZWFucyB0aGF0IHRoZSBgbXVsdGlxdWV1ZWAKZWxlbWVudCBub3cgaGFzIG1vcmUga25v d2xlZGdlIGFuZCBpcyBhYmxlIHRvIGNhbGN1bGF0ZSB0aGUgaW50ZXJsZWF2aW5nIG9mIHRoZQp2 YXJpb3VzIHN0cmVhbXMsIHRodXMgbWluaW1pemluZyBtZW1vcnkgcmVxdWlyZW1lbnRzIGFuZCBk b2luZyBhd2F5IHdpdGggbWFnaWMKdmFsdWVzIGZvciBidWZmZXJpbmcgbGltaXRzIHRoYXQgd2Vy ZSBjb25jZWl2ZWQgd2hlbiB2aWRlb3Mgd2VyZSAyNDBwIG9yIDM2MHAuCkFueW9uZSB3aG8gaGFz IHRyaWVkIHRvIHBsYXkgYmFjayA0ayB2aWRlbyBzdHJlYW1zIHdpdGggZGVjb2RlYmluMgp3aWxs IGhhdmUgbm90aWNlZCB0aGUgbGltaXRhdGlvbnMgb2YgdGhhdCBhcHByb2FjaC4gVGhlIGltcHJv dmVkIHRpbWVzdGFtcAp0cmFja2luZyBhbHNvIGVuYWJsZXMgYG11bHRpcXVldWVgIHRvIGtlZXAg c3RyZWFtcyBvZiB0aGUgc2FtZSB0eXBlIChhdWRpbywKdmlkZW8pIGFsaWduZWQgYmV0dGVyLCBt YWtpbmcgc3VyZSBzd2l0Y2hpbmcgYmV0d2VlbiBzdHJlYW1zIG9mIHRoZSBzYW1lIHR5cGUKaXMg dmVyeSBmYXN0LgoKQW5vdGhlciBtYWpvciBpbXByb3ZlbWVudCBpbiBgZGVjb2RlYmluM2AgaXMg dGhhdCBpdCB3aWxsIG5vIGxvbmdlciBkZWNvZGUKc3RyZWFtcyB0aGF0IGFyZSBub3QgYmVpbmcg dXNlZC4gV2l0aCB0aGUgb2xkIGBkZWNvZGViaW5gIGFuZCBgcGxheWJpbmAsIHdoZW4KdGhlcmUg d2VyZSA4IGF1ZGlvIHN0cmVhbXMgd2Ugd291bGQgYWx3YXlzIGRlY29kZSBhbGwgOCBzdHJlYW1z IGV2ZW4KaWYgNyB3ZXJlIG5vdCBhY3R1YWxseSB1c2VkLiBUaGlzIGNhdXNlZCBhIGxvdCBvZiBD UFUgb3ZlcmhlYWQsIHdoaWNoIHdhcwpwYXJ0aWN1bGFybHkgcHJvYmxlbWF0aWMgb24gZW1iZWRk ZWQgZGV2aWNlcy4gV2hlbiBzd2l0Y2hpbmcgYmV0d2VlbiBzdHJlYW1zCmBkZWNvZGViaW4zYCB3 aWxsIHRyeSBoYXJkIHRvIHJlLXVzZSBleGlzdGluZyBkZWNvZGVycy4gVGhpcyBpcyB1c2VmdWwg d2hlbgpzd2l0Y2hpbmcgYmV0d2VlbiBtdWx0aXBsZSBzdHJlYW1zIG9mIHRoZSBzYW1lIHR5cGUg aWYgdGhleSBhcmUgZW5jb2RlZCBpbiB0aGUKc2FtZSBmb3JtYXQuCgpSZS11c2luZyBkZWNvZGVy cyBpcyBhbHNvIHVzZWZ1bCB3aGVuIHRoZSBhdmFpbGFibGUgc3RyZWFtcyBjaGFuZ2Ugb24gdGhl IGZseSwKYXMgbWlnaHQgaGFwcGVuIHdpdGggcmFkaW8gc3RyZWFtcyAoY2hhaW5lZCBPZ2dzKSwg ZGlnaXRhbCB0ZWxldmlzaW9uCmJyb2FkY2FzdHMsIHdoZW4gYWRhcHRpdmUgc3RyZWFtaW5nIHN0 cmVhbXMgY2hhbmdlIGJpdHJhdGUsIG9yIHdoZW4gc3dpdGNoaW5nCmdhcGxlc3NseSB0byB0aGUg bmV4dCB0aXRsZS4gSW4gb3JkZXIgdG8gZ3VhcmFudGVlIGEgc2VhbWxlc3MgdHJhbnNpdGlvbiwg dGhlCm9sZCBgZGVjb2RlYmluMmAgd291bGQgcGx1ZyBhIHNlY29uZCBkZWNvZGVyIGZvciB0aGUg bmV3IHN0cmVhbSB3aGlsZSBmaW5pc2hpbmcKdXAgdGhlIG9sZCBzdHJlYW0uIFdpdGggYGRlY29k ZWJpbjNgLCB0aGlzIGlzIG5vIGxvbmdlciBuZWVkZWQgLSBhdCBsZWFzdCBub3QKd2hlbiB0aGUg bmV3IGFuZCBvbGQgZm9ybWF0IGFyZSB0aGUgc2FtZS4gVGhpcyB3aWxsIGJlIHBhcnRpY3VsYXJs eSB1c2VmdWwKb24gZW1iZWRkZWQgc3lzdGVtcyB3aGVyZSBpdCBpcyBvZnRlbiBub3QgcG9zc2li bGUgdG8gcnVuIG11bHRpcGxlIGRlY29kZXJzCmF0IHRoZSBzYW1lIHRpbWUsIG9yIHdoZW4gdGVh cmluZyBkb3duIGFuZCBzZXR0aW5nIHVwIGRlY29kZXJzIGlzIGZhaXJseQpleHBlbnNpdmUuCgpg ZGVjb2RlYmluM2AgYWxzbyBhbGxvd3MgZm9yIG11bHRpcGxlIGlucHV0IHN0cmVhbXMsIG5vdCBq dXN0IGEgc2luZ2xlIG9uZS4KVGhpcyB3aWxsIGJlIHVzZWZ1bCwgaW4gdGhlIGZ1dHVyZSwgZm9y IGdhcGxlc3MgcGxheWJhY2ssIG9yIGZvciBmZWVkaW5nCm11bHRpcGxlIGV4dGVybmFsIHN1YnRp dGxlIHN0cmVhbXMgdG8gZGVjb2RlYmluL3BsYXliaW4uCgpgcGxheWJpbjNgIHVzZXMgYGRlY29k ZWJpbjNgIGludGVybmFsbHksIGFuZCB3aWxsIHN1cGVyY2VkZSBgcGxheWJpbmAuCkl0IHdhcyBk ZWNpZGVkIHRoYXQgaXQgd291bGQgYmUgdG9vIHJpc2t5IHRvIG1ha2UgdGhlIG9sZCBgcGxheWJp bmAgdXNlIHRoZQpuZXcgYGRlY29kZWJpbjNgIGluIGEgYmFja3dhcmRzLWNvbXBhdGlibGUgd2F5 LiBUaGUgbmV3IGFyY2hpdGVjdHVyZQptYWtlcyBpdCBhd2t3YXJkLCBpZiBub3QgaW1wb3NzaWJs ZSwgdG8gbWFpbnRhaW4gcGVyZmVjdCBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eQppbiBzb21lIGFz cGVjdHMsIGhlbmNlIGBwbGF5YmluM2Agd2FzIGJvcm4sIGFuZCBkZXZlbG9wZXJzIGNhbiBtaWdy YXRlIHRvIHRoZQpuZXcgZWxlbWVudCBhbmQgbmV3IEFQSSBhdCB0aGVpciBvd24gcGFjZS4KCkFs bCBvZiB0aGVzZSBuZXcgZWxlbWVudHMgbWFrZSB1c2Ugb2YgdGhlIG5ldyBgR3N0U3RyZWFtYCBB UEkgZm9yIGxpc3RpbmcgYW5kCnNlbGVjdGluZyBzdHJlYW1zLCBhcyBkZXNjcmliZWQgYWJvdmUu IGBwYXJzZWJpbmAgcHJvdmlkZXMgYmFja3dhcmRzCmNvbXBhdGliaWxpdHkgZm9yIGRlbXV4ZXJz IGFuZCBwYXJzZXJzIHdoaWNoIGRvIG5vdCBhZHZlcnRpc2UgdGhlaXIgc3RyZWFtcwp1c2luZyB0 aGUgbmV3IEFQSSB5ZXQgKHdoaWNoIGlzIG1vc3QpLgoKVGhlIG5ldyBlbGVtZW50cyBhcmUgbm90 IGVudGlyZWx5IGZlYXR1cmUtY29tcGxldGUgeWV0OiBgcGxheWJpbjNgIGRvZXMgbm90CnN1cHBv cnQgc28tY2FsbGVkIGRlY29kZXJzaW5rcyB5ZXQgd2hlcmUgdGhlIGRhdGEgaXMgbm90IGRlY29k ZWQgaW5zaWRlCkdTdHJlYW1lciBidXQgcGFzc2VkIGRpcmVjdGx5IGZvciBkZWNvZGluZyB0byB0 aGUgc2luay4gYGRlY29kZWJpbjNgIGlzIG1pc3NpbmcKdGhlIHZhcmlvdXMgYGF1dG9wbHVnLSpg IHNpZ25hbHMgdG8gaW5mbHVlbmNlIHdoaWNoIGRlY29kZXJzIGdldCBhdXRvcGx1Z2dlZAppbiB3 aGljaCBvcmRlci4gV2UncmUgbG9va2luZyB0byBhZGQgYmFjayB0aGlzIGZ1bmN0aW9uYWxpdHks IGJ1dCBpdCB3aWxsIHByb2JhYmx5CmJlIGluIGEgZGlmZmVyZW50IHdheSwgd2l0aCBhIHNpbmds ZSB1bmlmaWVkIHNpZ25hbCBhbmQgdXNpbmcgR3N0U3RyZWFtIHBlcmhhcHMuCgpGb3IgbW9yZSBp bmZvcm1hdGlvbiBvbiB0aGVzZSBuZXcgZWxlbWVudHMsIGNoZWNrIG91dCBFZHdhcmQgSGVydmV5 J3MgdGFsawpbKmRlY29kZWJpbjMgLSBkZWFsaW5nIHdpdGggbW9kZXJuIHBsYXliYWNrIHVzZSBj YXNlcypdW2RiMy10YWxrXQoKW3BhcnNlYmluXTogaHR0cHM6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0 b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdC1wbHVnaW5zLWJhc2UtcGx1Z2lucy9o dG1sL2dzdC1wbHVnaW5zLWJhc2UtcGx1Z2lucy1wYXJzZWJpbi5odG1sCltkZWNvZGViaW4zXTog aHR0cHM6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFk L2dzdC1wbHVnaW5zLWJhc2UtcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhc2UtcGx1Z2lucy1k ZWNvZGViaW4zLmh0bWwKW2RiMy10YWxrXTogaHR0cHM6Ly9nc3Rjb25mLnViaWNhc3QudHYvdmlk ZW9zL2RlY29kZWJpbjMtb3ItZGVhbGluZy13aXRoLW1vZGVybi1wbGF5YmFjay11c2UtY2FzZXMv CgojIyMjIExWMiBwb3J0ZWQgZnJvbSAwLjEwIGFuZCBzd2l0Y2hlZCBmcm9tIHNsdjIgdG8gbGls djIKClRoZSBMVjIgd3JhcHBlciBwbHVnaW4gaGFzIGJlZW4gcG9ydGVkIHRvIDEuMCBhbmQgbW92 ZWQgZnJvbSB1c2luZyB0aGUKZGVwcmVjYXRlZCBzbHYyIGxpYnJhcnkgdG8gaXRzIHJlcGxhY2Vt ZW50IGxpYmx2Mi4gV2Ugc3VwcG9ydCBzb3VyY2VzIGFuZApmaWx0ZXIgZWxlbWVudHMuIGx2MiBp cyBzaG9ydCBmb3IgKkxpbnV4IEF1ZGlvIERldmVsb3BlcidzIFNpbXBsZSBQbHVnaW4gQVBJCihM QURTUEEpIHZlcnNpb24gMiogYW5kIGlzIGFuIG9wZW4gc3RhbmRhcmQgZm9yIGF1ZGlvIHBsdWdp bnMgd2hpY2ggaW5jbHVkZXMKc3VwcG9ydCBmb3IgYXVkaW8gc3ludGhlc2lzIChnZW5lcmF0aW9u KSwgZGlnaXRhbCBzaWduYWwgcHJvY2Vzc2luZyBvZiBkaWdpdGFsCmF1ZGlvLCBhbmQgTUlESS4g VGhlIG5ldyBsdjIgcGx1Z2luIHN1cGVyc2VkZXMgdGhlIGV4aXN0aW5nIExBRFNQQSBwbHVnaW4u CgojIyMjIFdlYlJUQyBEU1AgUGx1Z2luIGZvciBlY2hvLWNhbmNlbGxhdGlvbiwgZ2FpbiBjb250 cm9sIGFuZCBub2lzZSBzdXBwcmVzc2lvbgoKQSBzZXQgb2YgbmV3IGVsZW1lbnRzIChbd2VicnRj ZHNwXVt3ZWJydGNkc3BdLCBbd2VicnRjZWNob3Byb2JlXVt3ZWJydGNlY2hvcHJvYmVdKQpiYXNl ZCBvbiB0aGUgV2ViUlRDIERTUCBzb2Z0d2FyZSBzdGFjayBjYW4gbm93IGJlIHVzZWQgdG8gaW1w cm92ZSB5b3VyIGF1ZGlvCnZvaWNlIGNvbW11bmljYXRpb24gcGlwZWxpbmVzLiBUaGV5IHN1cHBv cnQgZWNobyBjYW5jZWxsYXRpb24sIGdhaW4gY29udHJvbCwKbm9pc2Ugc3VwcHJlc3Npb24gYW5k IG1vcmUuIEZvciBtb3JlIGRldGFpbHMgeW91IG1heSByZWFkCltOaWNvbGFzJyBibG9nIHBvc3Rd W3dlYnJ0Yy1ibG9nLXBvc3RdLgoKW3dlYnJ0Y2RzcF06IGh0dHBzOi8vZ3N0cmVhbWVyLmZyZWVk ZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lu cy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXdlYnJ0Y2RzcC5odG1sClt3ZWJydGNlY2hv cHJvYmVdOiBodHRwczovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVh bWVyL2hlYWQvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1 Z2lucy13ZWJydGNlY2hvcHJvYmUuaHRtbApbd2VicnRjLWJsb2ctcG9zdF06IGh0dHBzOi8vbmR1 ZnJlc25lLmNhLzIwMTYvMDYvZ3N0cmVhbWVyLWVjaG8tY2FuY2VsbGVyLwoKIyMjIyBGcmF1bmhv ZmVyIEZESyBBQUMgZW5jb2RlciBhbmQgZGVjb2RlcgoKTmV3IGVuY29kZXIgYW5kIGRlY29kZXIg ZWxlbWVudHMgd3JhcHBpbmcgdGhlIEZyYXVuaG9mZXIgRkRLIEFBQyBsaWJyYXJ5IGhhdmUKYmVl biBhZGRlZCAoYGZka2FhY2RlY2AsIGBmZGthYWNkZWNgKS4gVGhlIEZyYXVuaG9mZXIgRkRLIEFB QyBlbmNvZGVyIGlzCmdlbmVyYWxseSBjb25zaWRlcmVkIHRvIGJlIGEgdmVyeSBoaWdoLXF1YWxp dHkgQUFDIGVuY29kZXIsIGJ1dCB1bmZvcnR1bmF0ZWx5Cml0IGNvbWVzIHVuZGVyIGEgbm9uLWZy ZWUgbGljZW5zZSB3aXRoIHRoZSBvcHRpb24gdG8gb2J0YWluIGEgcGFpZCwgY29tbWVyY2lhbAps aWNlbnNlLgoKIyMjIE5vdGV3b3J0aHkgZWxlbWVudCBmZWF0dXJlcyBhbmQgYWRkaXRpb25zCgoj IyMjIE1ham9yIFJUUCBhbmQgUlRTUCBpbXByb3ZlbWVudHMKCi0gVGhlIFJUU1Agc2VydmVyIGFu ZCBzb3VyY2UgZWxlbWVudCwgYXMgd2VsbCBhcyB0aGUgUlRQIGppdHRlcmJ1ZmZlciBub3cgc3Vw cG9ydAogIHJlbW90ZSBjbG9jayBzeW5jaHJvbml6YXRpb24gYWNjb3JkaW5nIHRvIFtSRkM3Mjcz XVtodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNzI3M10uCi0gU3VwcG9ydCBmb3IgYXBw bGljYXRpb24gYW5kIHByb2ZpbGUgc3BlY2lmaWMgUlRDUCBwYWNrZXRzIHdhcyBhZGRlZC4KLSBU aGUgSDI2NS9IRVZDIHBheWxvYWRlci9kZXBheWxvYWRlciBpcyBhZ2FpbiBpbiBzeW5jIHdpdGgg dGhlIGZpbmFsIFJGQy4KLSBTZWVraW5nIHN0YWJpbGl0eSBvZiB0aGUgUlRTUCBzb3VyY2UgYW5k IHNlcnZlciB3YXMgaW1wcm92ZWQgYSBsb3QgYW5kCiAgcnVucyBzdGFibHkgbm93LCBldmVuIHdo ZW4gZG9pbmcgc2NydWItc2Vla2luZy4KLSBUaGUgUlRTUCBzZXJ2ZXIgcmVjZWl2ZWQgdmFyaW91 cyBtYWpvciBidWdmaXhlcywgaW5jbHVkaW5nIGZvciByZWdyZXNzaW9ucyB0aGF0CiAgY2F1c2Vk IHRoZSBJUC9wb3J0IGFkZHJlc3MgcG9vbCB0byBub3QgYmUgY29uc2lkZXJlZCwgb3IgTkFUIGhv bGUgcHVuY2hpbmcKICB0byBub3Qgd29yayBhbnltb3JlLiBbQnVnemlsbGEgIzc2NjYxMl1baHR0 cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc2NjYxMl0KLSBWYXJpb3Vz IG90aGVyIGJ1Z2ZpeGVzIHRoYXQgaW1wcm92ZSB0aGUgc3RhYmlsaXR5IG9mIFJUUCBhbmQgUlRT UCwgaW5jbHVkaW5nCiAgbWFueSBuZXcgdW5pdCAvIGludGVncmF0aW9uIHRlc3RzLgoKIyMjIyBJ bXByb3ZlbWVudHMgdG8gc3BsaXRtdXhzcmMgYW5kIHNwbGl0bXV4c2luawoKLSBUaGUgc3BsaXRt dXggZWxlbWVudCByZWNlaXZlZCByZWxpYWJpbGl0eSBhbmQgZXJyb3IgaGFuZGxpbmcgaW1wcm92 ZW1lbnRzLAogIHJlbW92aW5nIGF0IGxlYXN0IG9uZSBkZWFkbG9jayBjYXNlLiBgc3BsaXRtdXhz cmNgIG5vdyBzdG9wcyBjbGVhbmx5IGF0IHRoZSBlbmQKICBvZiB0aGUgc2VnbWVudCB3aGVuIGhh bmRsaW5nIHNlZWtzIHdpdGggYSBzdG9wIHRpbWUuIFdlIGZpeGVkIGEgYnVnIHdpdGggbGFyZ2UK ICBhbW91bnRzIG9mIGRvd25zdHJlYW0gYnVmZmVyaW5nIGNhdXNpbmcgaW5jb3JyZWN0IG91dC1v Zi1zZXF1ZW5jZSBwbGF5YmFjay4KCi0gYHNwbGl0bXV4c3JjYCBub3cgaGFzIGEgYCJmb3JtYXQt bG9jYXRpb24iYCBzaWduYWwgdG8gZGlyZWN0bHkgc3BlY2lmeSB0aGUgbGlzdAogIG9mIGZpbGVz IHRvIHBsYXkgZnJvbS4KCi0gYHNwbGl0bXV4c2lua2AgY2FuIG5vdyBvcHRpb25hbGx5IHNlbmQg Zm9yY2Uta2V5dW5pdCBldmVudHMgdG8gdXBzdHJlYW0KICBlbGVtZW50cyB0byBhbGxvdyBzcGxp dHRpbmcgZmlsZXMgbW9yZSBhY2N1cmF0ZWx5IGluc3RlYWQgb2YgaGF2aW5nIHRvIHdhaXQKICBm b3IgdXBzdHJlYW0gdG8gcHJvdmlkZSBhIG5ldyBrZXlmcmFtZSBieSBpdHNlbGYuCgojIyMjIE9w ZW5HTC9HTEVTIGltcHJvdmVtZW50cwoKIyMjIyMgaU9TIGFuZCBtYWNPUyAoT1MvWCkKCi0gV2Ug bm93IGNyZWF0ZSBPcGVuR0x8RVMgMy54IGNvbnRleHRzIG9uIGlPUyBieSBkZWZhdWx0IHdpdGgg YSBmYWxsYmFjayB0bwogIE9wZW5HTHxFUyAyLnggaWYgdGhhdCBmYWlscy4KLSBWYXJpb3VzIHpl cm9jb3B5IGRlY29kaW5nIGZpeGVzIGFuZCBlbmhhbmNlbWVudHMgd2l0aCB0aGUKICBlbmNvZGlu Zy9kZWNvZGluZy9jYXB0dXJpbmcgZWxlbWVudHMuCi0gbGliZGlzcGF0Y2ggaXMgbm93IHVzZWQg b24gYWxsIEFwcGxlIHBsYXRmb3JtcyBpbnN0ZWFkIG9mIEdNYWluTG9vcCwgcmVtb3ZpbmcKICB0 aGUgZXhwZW5zaXZlIHBvbGwoKS9wdGhyZWFkXyooKSBvdmVyaGVhZC4KCiMjIyMjIE5ldyBBUEkK Ci0gYEdzdEdMRnJhbWVidWZmZXJgIC0gZm9yIHdyYXBwaW5nIE9wZW5HTCBmcmFtZSBidWZmZXIg b2JqZWN0cy4gIEl0IHByb3ZpZGVzCiAgZmFjaWxpdGllcyBmb3IgYXR0YWNoaW5nIGBHc3RHTE1l bW9yeWAgb2JqZWN0cyB0byB0aGUgbmVjZXNzYXJ5IGF0dGFjaG1lbnQKICBwb2ludHMsIGJpbmRp bmcgYW5kIHVuYmluZGluZyBhbmQgcnVubmluZyBhIHVzZXItc3VwcGxpZWQgZnVuY3Rpb24gd2l0 aCB0aGUKICBmcmFtZWJ1ZmZlciBib3VuZC4KLSBgR3N0R0xSZW5kZXJidWZmZXJgIChhIGBHc3RH TEJhc2VNZW1vcnlgIHN1YmNsYXNzKSAtIGZvciB3cmFwcGluZyBPcGVuR0wKICByZW5kZXIgYnVm ZmVyIG9iamVjdHMgdGhhdCBhcmUgdHlwaWNhbGx5IHVzZWQgZm9yIGRlcHRoL3N0ZW5jaWwgYnVm ZmVycyBvcgogIGZvciBjb2xvciBidWZmZXJzIHdoZXJlIHdlIGRvbid0IGNhcmUgYWJvdXQgdGhl IG91dHB1dC4KLSBgR3N0R0xNZW1vcnlFR0xgIChhIGBHc3RHTE1lbW9yeWAgc3ViY2xhc3MpIC0g Zm9yIGNvbWJpbmluZyBgRUdMSW1hZ2VgcyB3aXRoIGEgR0wKICB0ZXh0dXJlIHRoYXQgcmVwbGFj ZXMgYEdzdEVHTEltYWdlTWVtb3J5YCBicmluZ2luZyB0aGUgaW1wcm92ZW1lbnRzIG1hZGUgdG8g dGhlCiAgb3RoZXIgYEdzdEdMTWVtb3J5YCBpbXBsZW1lbnRhdGlvbnMuICBUaGlzIGZpeGVzIGEg cGVyZm9ybWFuY2UgcmVncmVzc2lvbiBpbgogIHplcm9jb3B5IGRlY29kaW5nIG9uIHRoZSBSYXNw YmVycnkgUGkgd2hlbiB1c2VkIHdpdGggYW4gdXBkYXRlZCBnc3Qtb214LgoKIyMjIyMgTWlzY2Vs bGFuZW91cyBpbXByb3ZlbWVudHMKCi0gYGdsdGVzdHNyY2AgaXMgbm93IHVzYWJsZSBvbiBkZXZp Y2VzL3BsYXRmb3JtcyB3aXRoIE9wZW5HTCAzLnggYW5kIE9wZW5HTHxFUwogIGFuZCBoYXMgY29t cGxldGVkIG9yIGdhaW5lZCBzdXBwb3J0IGZvciBuZXcgcGF0dGVybnMgaW4gbGluZSB3aXRoIHRo ZQogIGV4aXN0aW5nIG9uZXMgaW4gYHZpZGVvdGVzdHNyY2AuCi0gYGdsZGVpbnRlcmxhY2VgIGlz IG5vdyBhdmFpbGFibGUgb24gZGV2aWNlcy9wbGF0Zm9ybXMgd2l0aCBPcGVuR0x8RVMKICBpbXBs ZW1lbnRhdGlvbnMuCi0gVGhlIGRpc3BtYW54IGJhY2tlbmQgKHVzZWQgb24gdGhlIFJhc3BiZXJy eSBQaSkgbm93IHN1cHBvcnRzIHRoZQogIGBnc3RfdmlkZW9fb3ZlcmxheV9zZXRfd2luZG93X2hh bmRsZSgpYCBhbmQKICBgZ3N0X3ZpZGVvX292ZXJsYXlfc2V0X3JlbmRlcl9yZWN0YW5nbGUoKWAg ZnVuY3Rpb25zLgotIFRoZSBgZ2x0cmFuc2Zvcm1hdGlvbmAgZWxlbWVudCBub3cgY29ycmVjdGx5 IHRyYW5zZm9ybXMgbW91c2UgY29vcmRpbmF0ZXMgKGluCiAgd2luZG93IHNwYWNlKSB0byBzdHJl YW0gY29vcmRpbmF0ZXMgZm9yIGJvdGggcGVyc3BlY3RpdmUgYW5kIG9ydGhvZ3JhcGhpYwogIHBy b2plY3Rpb25zLgotIFRoZSBgZ2x0cmFuc2Zvcm1hdGlvbmAgZWxlbWVudCBub3cgZGV0ZWN0cyBp ZiB0aGUKICBgR3N0VmlkZW9BZmZpbmVUcmFuc2Zvcm1hdGlvbk1ldGFgIGlzIHN1cHBvcnRlZCBk b3duc3RyZWFtIGFuZCB3aWxsIGVmZmljaWVudGx5CiAgcGFzcyBpdHMgdHJhbnNmb3JtYXRpb24g ZG93bnN0cmVhbS4gVGhpcyBpcyBhIHBlcmZvcm1hbmNlIGltcHJvdmVtZW50IGFzIGl0CiAgcmVz dWx0cyBpbiBsZXNzIHByb2Nlc3NpbmcgYmVpbmcgcmVxdWlyZWQuCi0gVGhlIHdheWxhbmQgaW1w bGVtZW50YXRpb24gbm93IHVzZXMgdGhlIG11bHRpLXRocmVhZGVkIHNhZmUgZXZlbnQtbG9vcCBB UEkKICBhbGxvd2luZyBjb3JyZWN0IHVzYWdlIGluIGFwcGxpY2F0aW9ucyB0aGF0IGNhbGwgd2F5 bGFuZCBmdW5jdGlvbnMgZnJvbQogIG11bHRpcGxlIHRocmVhZHMuCi0gU3VwcG9ydCBmb3IgbmF0 aXZlIDkwIGRlZ3JlZSByb3RhdGlvbnMgYW5kIGhvcml6b250YWwvdmVydGljYWwgZmxpcHMKICBp biBgZ2xpbWFnZXNpbmtgLgoKIyMjIyBWdWxrYW4KCi0gVGhlIFZ1bGthbiBlbGVtZW50cyBub3cg d29yayB1bmRlciBXYXlsYW5kIGFuZCBoYXZlIHJlY2VpdmVkIG51bWVyb3VzCiAgYnVnZml4ZXMu CgojIyMjIFFNTCBlbGVtZW50cwoKLSBgcW1sZ2xzaW5rYCB2aWRlbyBzaW5rIG5vdyB3b3JrcyBv biBtb3JlIHBsYXRmb3Jtcywgbm90YWJseSwgV2luZG93cywgV2F5bGFuZCwKICBhbmQgUXQncyBl Z2xmcyAoZm9yIGVtYmVkZGVkIGRldmljZXMgd2l0aCBhbiBPcGVuR0wgaW1wbGVtZW50YXRpb24p IGluY2x1ZGluZwogIHRoZSBSYXNwYmVycnkgUGkuCi0gTmV3IGVsZW1lbnQgYHFtbGdsc3JjYCB0 byByZWNvcmQgYSBRTUwgc2NlbmUgaW50byBhIEdTdHJlYW1lciBwaXBlbGluZS4KCiMjIyMgS01T IHZpZGVvIHNpbmsKCi0gTmV3IGVsZW1lbnQgYGttc3NpbmtgIHRvIHJlbmRlciB2aWRlbyB1c2lu ZyBEaXJlY3QgUmVuZGVyaW5nIE1hbmFnZXIKICAoRFJNKSBhbmQgS2VybmVsIE1vZGUgU2V0dGlu ZyAoS01TKSBzdWJzeXN0ZW1zIGluIHRoZSBMaW51eAogIGtlcm5lbC4gSXQgaXMgb3JpZW50ZWQg dG8gYmUgdXNlZCBtb3N0bHkgaW4gZW1iZWRkZWQgc3lzdGVtcy4KCiMjIyMgV2F5bGFuZCB2aWRl byBzaW5rCgotIGB3YXlsYW5kc2lua2Agbm93IHN1cHBvcnRzIHRoZSB3bF92aWV3cG9ydGVyIGV4 dGVuc2lvbiBhbGxvd2luZwogIHZpZGVvIHNjYWxpbmcgYW5kIGNyb3BwaW5nIHRvIGJlIGRlbGVn YXRlZCB0byB0aGUgV2F5bGFuZAogIGNvbXBvc2l0b3IuIFRoaXMgZXh0ZW5zaW9uIGlzIGFsc28g YmVlbiBtYWRlIG9wdGlvbmFsLCBzbyB0aGF0IGl0IGNhbgogIGFsc28gd29yayBvbiBjdXJyZW50 IGNvbXBvc2l0b3JzIHRoYXQgZG9uJ3Qgc3VwcG9ydCBpdC4gSXQgYWxzbyBub3cgaGFzCiAgc3Vw cG9ydCBmb3IgdGhlIHZpZGVvIG1ldGEsIGFsbG93aW5nIHplcm8tY29weSBvcGVyYXRpb25zIGlu IG1vcmUKICBjYXNlcy4KCiMjIyMgRFZCIGltcHJvdmVtZW50cwoKLSBgZHZic3JjYCBub3cgaGFz IGJldHRlciBkZWxpdmVyeS1zeXN0ZW0gYXV0b2RldGVjdGlvbiBhbmQgc2V2ZXJhbAogIG5ldyBw YXJhbWV0ZXIgc2FuaXR5LWNoZWNrcyB0byBpbXByb3ZlIGl0cyByZXNpbGllbmNlIHRvIGNvbmZp Z3VyYXRpb24KICBvbWlzc2lvbnMgYW5kIGVycm9ycy4gU3VwZXJmbHVvdXMgcG9sbGluZyBjb250 aW51ZXMgdG8gYmUgdHJpbW1lZCBkb3duLAogIGFuZCB0aGUgZGVidWdnaW5nIG91dHB1dCBoYXMg YmVlbiBtYWRlIG1vcmUgY29uc2lzdGVudCBhbmQgcHJlY2lzZS4KICBBZGRpdGlvbmFsbHksIHRo ZSBjaGFubmVsLWNvbmZpZ3VyYXRpb24gcGFyc2VyIG5vdyBzdXBwb3J0cyB0aGUgbmV3IGR2YnY1 CiAgZm9ybWF0LCBlbmFibGluZyBgZHZiYmFzZWJpbmAgdG8gYXV0b21hdGljYWxseSBwbGF5YmFj ayBjb250ZW50IHRyYW5zbWl0dGVkCiAgb24gZGVsaXZlcnkgc3lzdGVtcyB0aGF0IHByZXZpb3Vz bHkgcmVxdWlyZWQgbWFudWFsIGRlc2NyaXB0aW9uLCBsaWtlIElTREItVC4KCiMjIyMgREFTSCwg SExTIGFuZCBhZGFwdGl2ZWRlbXV4CgotIEhMUyBub3cgaGFzIHN1cHBvcnQgZm9yIEFsdGVybmF0 ZSBSZW5kaXRpb24gYXVkaW8gYW5kIHZpZGVvIHRyYWNrcy4gRnVsbAogIHN1cHBvcnQgZm9yIEFs dGVybmF0ZSBSZW5kaXRpb24gc3VidGl0bGUgdHJhY2tzIHdpbGwgYmUgaW4gYW4gdXBjb21pbmcg cmVsZWFzZS4KLSBEQVNIIHJlY2VpdmVkIHN1cHBvcnQgZm9yIGtleWZyYW1lLW9ubHkgdHJpY2sg bW9kZXMgaWYgdGhlCiAgYEdTVF9TRUVLX0ZMQUdfVFJJQ0tNT0RFX0tFWV9VTklUU2AgZmxhZyBp cyBnaXZlbiB3aGVuIHNlZWtpbmcuIEl0IHdpbGwKICBvbmx5IGRvd25sb2FkIGtleWZyYW1lcyB0 aGVuLCB3aGljaCBzaG91bGQgaGVscCB3aXRoIGhpZ2gtc3BlZWQgcGxheWJhY2suCiAgQ2hhbmdl cyB0byBza2lwIG92ZXIgbXVsdGlwbGUgZnJhbWVzIGJhc2VkIG9uIGJhbmR3aWR0aCBhbmQgb3Ro ZXIgbWV0cmljcwogIHdpbGwgYmUgYWRkZWQgaW4gdGhlIG5lYXIgZnV0dXJlLgotIExvdHMgb2Yg cmVsaWFiaWxpdHkgZml4ZXMgYXJvdW5kIHNlZWsgaGFuZGxpbmcgYW5kIGJpdHJhdGUgc3dpdGNo aW5nLgoKIyMjIyBCbHVldG9vdGggaW1wcm92ZW1lbnRzCgotIFRoZSBgYXZkdHBzcmNgIGVsZW1l bnQgbm93IHN1cHBvcnRzIG1ldGFkYXRhIHN1Y2ggYXMgdHJhY2sgdGl0bGUsIGFydGlzdAogIG5h bWUsIGFuZCBtb3JlLCB3aGljaCBkZXZpY2VzIGNhbiBzZW5kIHZpYSBBVlJDUC4gVGhlc2UgYXJl IHB1Ymxpc2hlZCBhcwogIHRhZ3Mgb24gdGhlIHBpcGVsaW5lLgotIFRoZSBgYTJkcHNpbmtgIGVs ZW1lbnQgcmVjZWl2ZWQgc29tZSBsb3ZlIGFuZCB3YXMgY2xlYW5lZCB1cCBzbyB0aGF0IGl0CiAg YWN0dWFsbHkgd29ya3MgYWZ0ZXIgdGhlIGluaXRpYWwgR1N0cmVhbWVyIDEuMCBwb3J0LgoKIyMj IyBHU3RyZWFtZXIgVkFBUEkKCi0gQWxsIHRoZSBkZWNvZGVycyBoYXZlIGJlZW4gc3BsaXQsIG9u ZSBwbHVnaW4gZmVhdHVyZSBwZXIgY29kZWMuIFNvCiAgZmFyLCB0aGUgYXZhaWxhYmxlIG9uZXMs IGRlcGVuZGluZyBvbiB0aGUgZHJpdmVyLCBhcmU6CiAgYHZhYXBpbXBlZzJkZWNgLCBgdmFhcGlo MjY0ZGVjYCwgYHZhYXBpaDI2NWRlY2AsIGB2YWFwaXZjMWRlY2AsIGB2YWFwaXZwOGRlY2AsCiAg YHZhYXBpdnA5ZGVjYCBhbmQgYHZhYXBpanBlZ2RlY2AgKHdoaWNoIGFscmVhZHkgd2FzIHNwbGl0 KS4KLSBJbXByb3ZlbWVudHMgd2hlbiBtYXBwaW5nIFZBIHN1cmZhY2VzIGludG8gbWVtb3J5LiBJ dCBub3cgZGlmZmVyZW50aWF0ZXMKICBiZXR3ZWVuIG5lZ290aWF0aW9uIGNhcHMgYW5kIGFsbG9j YXRpb25zIGNhcHMsIHNpbmNlIHRoZSBhbGxvY2F0aW9uCiAgbWVtb3J5IGZvciBzdXJmYWNlcyBt YXkgYmUgYmlnZ2VyIHRoYW4gb25lIHRoYXQgaXMgZ29pbmcgdG8gYmUKICBtYXBwZWQuCi0gYHZh YXBpaDI2NWVuY2Agbm93IHN1cHBvcnRzIGNvbnN0YW50IGJpdHJhdGUgbW9kZSAoQ0JSKS4KLSBT aW5jZSBzZXZlcmFsIFZBIGRyaXZlcnMgYXJlIHVubWFpbnRhaW5lZCwgd2UgZGVjaWRlIHRvIGtl ZXAgYSB3aGl0ZWxpc3QKICB3aXRoIHRoZSB2YSBkcml2ZXJzIHdlIGFjdHVhbGx5IHRlc3QsIHdo aWNoIGlzIG1vc3RseSB0aGUgaTkxNSBhbmQgdG8gYSBsZXNzZXIKICBkZWdyZWUgZ2FsbGl1bSBm cm9tIHRoZSBtZXNhIHByb2plY3QuIEV4cG9ydGluZyB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUK ICBgR1NUX1ZBQVBJX0FMTF9EUklWRVJTYCBkaXNhYmxlcyB0aGUgd2hpdGVsaXN0LgotIFBsdWdp biBmZWF0dXJlcyBhcmUgcmVnaXN0ZXJlZCBhdCBydW4tdGltZSwgYWNjb3JkaW5nIHRvIHRoZWly IHN1cHBvcnQgYnkKICB0aGUgbG9hZGVkIFZBIGRyaXZlci4gU28gb25seSB0aGUgZGVjb2RlcnMg YW5kIGVuY29kZXIgc3VwcG9ydGVkIGJ5IHRoZQogIHN5c3RlbSBhcmUgcmVnaXN0ZXJlZC4gU2lu Y2UgdGhlIGRyaXZlciBjYW4gY2hhbmdlLCBzb21lIGRlcGVuZGVuY2llcyBhcmUKICB0cmFja2Vk IHRvIGludmFsaWRhdGUgdGhlIEdTdHJlYW1lciByZWdpc3RyeSBhbmQgcmVsb2FkIHRoZSBwbHVn aW4uCi0gYGRtYWJ1ZmAgaW1wb3J0YXRpb24gZnJvbSB1cHN0cmVhbSBoYXMgYmVlbiBpbXByb3Zl ZCwgZ2FpbmluZyBwZXJmb3JtYW5jZS4KLSBgdmFhcGlwb3N0cHJvY2Agbm93IGNhbiBuZWdvdGlh dGUgYnVmZmVyIHRyYW5zZm9ybWF0aW9ucyB2aWEgY2Fwcy4KLSBEZWNvZGVycyBub3cgY2FuIGRv IEktZnJhbWUgb25seSByZXZlcnNlIHBsYXliYWNrLiBUaGlzIGRlY29kZXMgSS1mcmFtZXMKICBv bmx5IGJlY2F1c2UgdGhlIHN1cmZhY2UgcG9vbCBpcyBzbWFsbGVyIHRoYW4gdGhlIHJlcXVpcmVk IGJ5IHRoZSBHT1AgdG8gc2hvdyBhbGwgdGhlCiAgZnJhbWVzLgotIFRoZSB1cGxvYWQgb2YgZnJh bWVzIG9udG8gbmF0aXZlIEdMIHRleHR1cmVzIGhhcyBiZWVuIG9wdGltaXplZCB0b28sIGtlZXBp bmcKICBhIGNhY2hlIG9mIHRoZSBpbnRlcm5hbCBzdHJ1Y3R1cmVzIGZvciB0aGUgb2ZmZXJlZCB0 ZXh0dXJlcyBieSB0aGUgc2luay4KCiMjIyMgVjRMMiBjaGFuZ2VzCgotIE1vcmUgcGl4ZWxzIGZv cm1hdHMgYXJlIG5vdyBzdXBwb3J0ZWQKLSBEZWNvZGVyIGlzIG5vdyB1c2luZyBgR19TRUxFQ1RJ T05gIGluc3RlYWQgb2YgdGhlIGRlcHJlY2F0ZWQgYEdfQ1JPUGAKLSBEZWNvZGVyIG5vdyB1c2Vz IHRoZSBgU1RPUGAgY29tbWFuZCB0byBoYW5kbGUgRU9TCi0gVHJhbnNmb3JtIGVsZW1lbnQgY2Fu IG5vdyBzY2FsZSB0aGUgcGl4ZWwgYXNwZWN0IHJhdGlvCi0gQ29sb3JpbWV0cnkgc3VwcG9ydCBo YXMgYmVlbiBpbXByb3ZlZCBldmVuIG1vcmUKLSBXZSBub3cgc3VwcG9ydCB0aGUgYE9VVFBVVF9P VkVSTEFZYCB0eXBlIG9mIHZpZGVvIG5vZGUgaW4gdjRsMnNpbmsKCiMjIyMgTWlzY2VsbGFuZW91 cwoKLSBgbXVsdGlxdWV1ZWAncyBpbnB1dCBwYWRzIGdhaW5lZCBhIG5ldyBgImdyb3VwLWlkImAg cHJvcGVydHkgd2hpY2gKICBjYW4gYmUgdXNlZCB0byBncm91cCBpbnB1dCBzdHJlYW1zLiBUeXBp Y2FsbHkgb25lIHdpbGwgYXNzaWduCiAgZGlmZmVyZW50IGlkIG51bWJlcnMgdG8gYXVkaW8sIHZp ZGVvIGFuZCBzdWJ0aXRsZSBzdHJlYW1zIGZvcgogIGV4YW1wbGUuIFRoaXMgd2F5IGBtdWx0aXF1 ZXVlYCBjYW4gbWFrZSBzdXJlIHN0cmVhbXMgb2YgdGhlIHNhbWUKICB0eXBlIGFkdmFuY2UgaW4g bG9ja3N0ZXAgaWYgc29tZSBvZiB0aGUgc3RyZWFtcyBhcmUgdW5saW5rZWQgYW5kIHRoZQogIGAi c3luYy1ieS1ydW5uaW5nLXRpbWUiYCBwcm9wZXJ0eSBpcyBzZXQuIFRoaXMgaXMgdXNlZCBpbgog IGRlY29kZWJpbjMvcGxheWJpbjMgdG8gaW1wbGVtZW50IGFsbW9zdC1pbnN0YW50YW5lb3VzIHN0 cmVhbQogIHN3aXRjaGluZy4gIFRoZSBncm91cGluZyBpcyByZXF1aXJlZCBiZWNhdXNlIGRpZmZl cmVudCBkb3duc3RyZWFtCiAgcGF0aHMgKGF1ZGlvLCB2aWRlbywgZXRjLikgIG1heSBoYXZlIGRp ZmZlcmVudCBidWZmZXJpbmcvbGF0ZW5jeQogIGV0Yy4gc28gbWlnaHQgYmUgY29uc3VtaW5nIGRh dGEgZnJvbSBtdWx0aXF1ZXVlIHdpdGggYSBzbGlnaHRseQogIGRpZmZlcmVudCBwaGFzZSwgYW5k IGlmIHdlIHRyYWNrIGRpZmZlcmVudCBzdHJlYW0gZ3JvdXBzIHNlcGFyYXRlbHkKICB3ZSBtaW5p bWl6ZSBzdHJlYW0gc3dpdGNoaW5nIGRlbGF5cyBhbmQgYnVmZmVyaW5nIGluc2lkZSB0aGUKICBg bXVsdGlxdWV1ZWAuCi0gYGFsc2FzcmNgIG5vdyBzdXBwb3J0cyBBTFNBIGRyaXZlcnMgd2l0aG91 dCBhIHBvc2l0aW9uIGZvciBlYWNoCiAgY2hhbm5lbCwgdGhpcyBpcyBjb21tb24gaW4gc29tZSBw cm9mZXNzaW9uYWwgb3IgaW5kdXN0cmlhbCBoYXJkd2FyZS4KLSBgbGlidnB4YCBiYXNlZCBkZWNv ZGVycyAoYHZwOGRlY2AgYW5kIGB2cDlkZWNgKSBub3cgY3JlYXRlIG11bHRpcGxlIHRocmVhZHMg b24KICBjb21wdXRlcnMgd2l0aCBtdWx0aXBsZSBDUFVzIGF1dG9tYXRpY2FsbHkuCi0gYHJmYnNy Y2AgLSB1c2VkIGZvciBjYXB0dXJpbmcgZnJvbSBhIFZOQyBzZXJ2ZXIgLSBoYXMgc2VlbiBhIGxv dCBvZgogIGRlYnVnZ2luZy4gSXQgbm93IHN1cHBvcnRzIHRoZSBsYXRlc3QgdmVyc2lvbiBvZiB0 aGUgUkZCCiAgcHJvdG9jb2wgYW5kIHVzZXMgR0lPIGV2ZXJ5d2hlcmUuCi0gYHRzZGVtdXhgIGNh biBub3cgcmVhZCBBVFNDIEUtQUMtMyBzdHJlYW1zLgotIE5ldyBgR3N0VmlkZW9EaXJlY3Rpb25g IHZpZGVvIG9yaWVudGF0aW9uIGludGVyZmFjZSBmb3Igcm90YXRpbmcsIGZsaXBwaW5nCiAgYW5k IG1pcnJvcmluZyB2aWRlbyBpbiA5MMKwIHN0ZXBzLiBJdCBpcyBpbXBsZW1lbnRlZCBieSB0aGUg YHZpZGVvZmxpcGAgYW5kCiAgYGdsdmlkZW9mbGlwYCBlbGVtZW50cyBjdXJyZW50bHkuCi0gSXQg aXMgbm93IHBvc3NpYmxlIHRvIGdpdmUgYGFwcHNyY2AgYSBkdXJhdGlvbiBpbiB0aW1lLCBhbmQg dGhlcmUgaXMgbm93IGEKICBub24tYmxvY2tpbmcgdHJ5LXB1bGwgQVBJIGZvciBgYXBwc2lua2Ag dGhhdCByZXR1cm5zIE5VTEwgaWYgbm90aGluZyBpcwogIGF2YWlsYWJsZSByaWdodCBub3cuCi0g YHgyNjRlbmNgIGhhcyBzdXBwb3J0IG5vdyBmb3IgY2hyb21hLXNpdGUgYW5kIGNvbG9yaW1ldHJ5 IHNldHRpbmdzCi0gQSBuZXcgSlBFRzIwMDAgcGFyc2VyIGVsZW1lbnQgd2FzIGFkZGVkLCBhbmQg dGhlIEpQRUcyMDAwIGNhcHMgd2VyZSBjbGVhbmVkCiAgdXAgYW5kIGdhaW5lZCBtb3JlIGluZm9y bWF0aW9uIG5lZWRlZCBpbiBjb21iaW5hdGlvbiB3aXRoIFJUUCBhbmQgdmFyaW91cwogIGNvbnRh aW5lciBmb3JtYXRzLgotIFJldmVyc2UgcGxheWJhY2sgc3VwcG9ydCBmb3IgYHZpZGVvcmF0ZWAg YW5kIGBkZWludGVybGFjZWAgd2FzIGltcGxlbWVudGVkCi0gVmFyaW91cyBpbXByb3ZlbWVudHMg ZXZlcnl3aGVyZSBmb3IgcmV2ZXJzZSBwbGF5YmFjayBhbmQgYEtFWV9VTklUU2AgdHJpY2sgbW9k ZQotIE5ldyBjbGVhbmVkIHVwIGByYXdhdWRpb3BhcnNlYCBhbmQgYHJhd3ZpZGVvcGFyc2VgIGVs ZW1lbnRzIHRoYXQgcmVwbGFjZSB0aGUKICBvbGQgYGF1ZGlvcGFyc2VgIGFuZCBgdmlkZW9wYXJz ZWAgZWxlbWVudHMuIFRoZXJlIGFyZSBjb21wYXRpYmlsaXR5IGVsZW1lbnQKICBmYWN0b3JpZXMg cmVnaXN0ZXJlZCB3aXRoIHRoZSBvbGQgbmFtZXMgdG8gYWxsb3cgZXhpc3RpbmcgY29kZSB0byBj b250aW51ZQogIHRvIHdvcmsuCi0gVGhlIERlY2tsaW5rIHBsdWdpbiBnYWluZWQgc3VwcG9ydCBm b3IgMTAgYml0IHZpZGVvIFNNUFRFIHRpbWVjb2RlcywgYW5kCiAgZ2VuZXJhbGx5IGdvdCBtYW55 IGJ1Z2ZpeGVzIGZvciB2YXJpb3VzIGlzc3Vlcy4KLSBOZXcgQVBJIGluIGBHc3RQbGF5ZXJgIGZv ciBzZXR0aW5nIHRoZSBtdWx0aXZpZXcgbW9kZSBmb3Igc3RlcmVvc2NvcGljCiAgdmlkZW8sIHNl dHRpbmcgYW4gSFRUUC9SVFNQIHVzZXIgYWdlbnQgYW5kIGEgdGltZSBvZmZzZXQgYmV0d2VlbiBh dWRpbyBhbmQKICB2aWRlby4gSW4gYWRkaXRpb24gdG8gdGhhdCwgdGhlcmUgd2VyZSB2YXJpb3Vz IGJ1Z2ZpeGVzIGFuZCB0aGUgbmV3CiAgZ3N0LWV4YW1wbGVzIG1vZHVsZSBjb250YWlucyBBbmRy b2lkLCBpT1MsIEdUSysgYW5kIFF0IGV4YW1wbGUgYXBwbGljYXRpb25zLgotIGBHc3RCaW5gIGhh cyBuZXcgQVBJIGZvciBzdXBwcmVzc2luZyB2YXJpb3VzIGBHc3RFbGVtZW50YCBvciBgR3N0T2Jq ZWN0YAogIGZsYWdzIHRoYXQgd291bGQgb3RoZXJ3aXNlIGJlIGFmZmVjdGVkIGJ5IGFkZGVkL3Jl bW92ZWQgY2hpbGQgZWxlbWVudHMuIFRoaXMKICBuZXcgQVBJIGFsbG93cyBgR3N0QmluYCBzdWJj bGFzc2VzIHRvIGhhbmRsZSBmb3IgdGhlbXNlbHZlcyBpZiB0aGV5CiAgc2hvdWxkIGJlIGNvbnNp ZGVyZWQgYSBzaW5rIG9yIHNvdXJjZSBlbGVtZW50LCBmb3IgZXhhbXBsZS4KLSBUaGUgYHN1YnBh cnNlYCBlbGVtZW50IGNhbiBoYW5kbGUgV2ViVlRUIHN0cmVhbXMgbm93LgotIEEgbmV3IGBzZHBz cmNgIGVsZW1lbnQgd2FzIGFkZGVkIHRoYXQgY2FuIHJlYWQgYW4gU0RQIGZyb20gYSBmaWxlLCBv ciBnZXQgaXQKICBhcyBhIHN0cmluZyBhcyBwcm9wZXJ0eSBhbmQgdGhlbiBzZXRzIHVwIGFuIFJU UCBwaXBlbGluZSBhY2NvcmRpbmdseS4KCiMjIyBQbHVnaW4gbW92ZXMKCk5vIHBsdWdpbnMgd2Vy ZSBtb3ZlZCB0aGlzIGN5Y2xlLiBXZSdsbCBtYWtlIHVwIGZvciBpdCBuZXh0IGN5Y2xlLCBwcm9t aXNlIQoKIyMjIFJld3JpdHRlbiBtZW1vcnkgbGVhayB0cmFjZXIKCkdTdHJlYW1lciBoYXMgaGFk IGJhc2ljIGZ1bmN0aW9uYWxpdHkgdG8gdHJhY2UgYWxsb2NhdGlvbiBhbmQgZnJlZWluZyBvZgpi b3RoIG1pbmktb2JqZWN0cyAoYnVmZmVycywgZXZlbnRzLCBjYXBzLCBldGMuKSBhbmQgb2JqZWN0 cyBpbiB0aGUgZm9ybSBvZiB0aGUKaW50ZXJuYWwgYEdzdEFsbG9jVHJhY2VgIHRyYWNpbmcgc3lz dGVtLiBUaGlzIEFQSSB3YXMgbmV2ZXIgZXhwb3NlZCBpbiB0aGUKMS54IEFQSSBzZXJpZXMgdGhv dWdoLiBXaGVuIHJlcXVlc3RlZCwgdGhpcyB3b3VsZCBkdW1wIGEgbGlzdCBvZiBvYmplY3RzIGFu ZAptaW5pLW9iamVjdHMgYXQgZXhpdCB0aW1lIHdoaWNoIGhhZCBzdGlsbCBub3QgYmVlbiBmcmVl ZCBhdCB0aGF0IHBvaW50LAplbmFibGVkIHdpdGggYW4gZW52aXJvbm1lbnQgdmFyaWFibGUuIFRo aXMgc3Vic3lzdGVtIGhhcyBub3cgYmVlbiByZW1vdmVkCmluIGZhdm91ciBvZiBhIG5ldyBpbXBs ZW1lbnRhdGlvbiBiYXNlZCBvbiB0aGUgcmVjZW50bHktYWRkZWQgdHJhY2luZyBmcmFtZXdvcmsu CgpUcmFjaW5nIGhvb2tzIGhhdmUgYmVlbiBhZGRlZCB0byB0cmFjZSB0aGUgY3JlYXRpb24gYW5k IGRlc3RydWN0aW9uIG9mCkdzdE9iamVjdHMgYW5kIG1pbmktb2JqZWN0cywgYW5kIGEgbmV3IHRy YWNlciBwbHVnaW4gaGFzIGJlZW4gd3JpdHRlbiB1c2luZwp0aG9zZSBuZXcgaG9va3MgdG8gdHJh Y2sgd2hpY2ggb2JqZWN0cyBhcmUgc3RpbGwgbGl2ZSBhbmQgd2hpY2ggYXJlIG5vdC4gSWYKR1N0 cmVhbWVyIGhhcyBiZWVuIGNvbXBpbGVkIGFnYWluc3QgdGhlIGxpYnVud2luZCBsaWJyYXJ5LCB0 aGUgbmV3IGxlYWtzIHRyYWNlcgp3aWxsIHJlbWVtYmVyIHdoZXJlIG9iamVjdHMgd2VyZSBhbGxv Y2F0ZWQgZnJvbSBhcyB3ZWxsLiBCeSBkZWZhdWx0IHRoZSBsZWFrcwp0cmFjZXIgd2lsbCBzaW1w bHkgb3V0cHV0IGEgd2FybmluZyBpZiBsZWFrcyBoYXZlIGJlZW4gZGV0ZWN0ZWQgb24gYGdzdF9k ZWluaXQoKWAuCgpJZiB0aGUgYEdTVF9MRUFLU19UUkFDRVJfU0lHYCBlbnZpcm9ubWVudCB2YXJp YWJsZSBpcyBzZXQsIHRoZSBsZWFrcyB0cmFjZXIKd2lsbCBhbHNvIGhhbmRsZSB0aGUgZm9sbG93 aW5nIFVOSVggc2lnbmFsczoKCiAtIGBTSUdVU1IxYDogbG9nIGFsaXZlIG9iamVjdHMKIC0gYFNJ R1VTUjJgOiBjcmVhdGUgYSBjaGVja3BvaW50IGFuZCBwcmludCBhIGxpc3Qgb2Ygb2JqZWN0cyBj cmVhdGVkIGFuZAogICBkZXN0cm95ZWQgc2luY2UgdGhlIHByZXZpb3VzIGNoZWNrcG9pbnQuCgpV bmZvcnR1bmF0ZWx5IHRoaXMgd2lsbCBub3Qgd29yayBvbiBXaW5kb3dzIGR1ZSB0byBubyBzaWdu YWxzLCBob3dldmVyLgoKSWYgdGhlIGBHU1RfTEVBS1NfVFJBQ0VSX1NUQUNLX1RSQUNFYCBlbnZp cm9ubWVudCB2YXJpYWJsZSBpcyBzZXQsIHRoZSBsZWFrcwp0cmFjZXIgd2lsbCBhbHNvIGxvZyB0 aGUgY3JlYXRpb24gc3RhY2sgdHJhY2Ugb2YgbGVha2VkIG9iamVjdHMuIFRoaXMgbWF5CnNpZ25p ZmljYW50bHkgaW5jcmVhc2UgbWVtb3J5IGNvbnN1bXB0aW9uIGhvd2V2ZXIuCgpOZXcgYE1BWV9C RV9MRUFLRURgIGZsYWdzIGhhdmUgYmVlbiBhZGRlZCB0byBHc3RPYmplY3QgYW5kIEdzdE1pbmlP YmplY3QsIHNvCnRoYXQgb2JqZWN0cyBhbmQgbWluaS1vYmplY3RzIHRoYXQgYXJlIGxpa2VseSB0 byBzdGF5IGFyb3VuZCBmb3JldmVyIGNhbiBiZQpmbGFnZ2VkIGFuZCBibGFja2xpc3RlZCBmcm9t IHRoZSBsZWFrIG91dHB1dC4KClRvIGdpdmUgdGhlIG5ldyBsZWFrIHRyYWNlciBhIHNwaW4sIHNp bXBseSBjYWxsIGFueSBHU3RyZWFtZXIgYXBwbGljYXRpb24gc3VjaAphcyBgZ3N0LWxhdW5jaC0x LjBgIG9yIGBnc3QtcGxheS0xLjBgIGxpa2UgdGhpczoKCiAgICBHU1RfVFJBQ0VSUz1sZWFrcyBn c3QtbGF1bmNoLTEuMCB2aWRlb3Rlc3RzcmMgbnVtLWJ1ZmZlcnM9MTAgISBmYWtlc2luawoKSWYg dGhlcmUgYXJlIGFueSBsZWFrcywgYSB3YXJuaW5nIHdpbGwgYmUgcmFpc2VkIGF0IHRoZSBlbmQu CgpJdCBpcyBhbHNvIHBvc3NpYmxlIHRvIHRyYWNlIG9ubHkgY2VydGFpbiB0eXBlcyBvZiBvYmpl Y3RzIG9yIG1pbmktb2JqZWN0czoKCiAgICBHU1RfVFJBQ0VSUz0ibGVha3MoR3N0RXZlbnQsR3N0 TWVzc2FnZSkiIGdzdC1sYXVuY2gtMS4wIHZpZGVvdGVzdHNyYyBudW0tYnVmZmVycz0xMCAhIGZh a2VzaW5rCgpUaGlzIGRlZGljYXRlZCBsZWFrcyB0cmFjZXIgaXMgbXVjaCBtdWNoIGZhc3RlciB0 aGFuIHZhbGdyaW5kIHNpbmNlIGFsbCBjb2RlIGlzCmV4ZWN1dGVkIG5hdGl2ZWx5IGluc3RlYWQg b2YgYmVpbmcgaW5zdHJ1bWVudGVkLiBUaGlzIG1ha2VzIGl0IHZlcnkgc3VpdGFibGUKZm9yIHVz ZSBvbiBzbG93IG1hY2hpbmVzIG9yIGVtYmVkZGVkIGRldmljZXMuIEl0IGlzIGhvd2V2ZXIgbGlt aXRlZCB0byBjZXJ0YWluCnR5cGVzIG9mIGxlYWtzIGFuZCB3b24ndCBjYXRjaCBtZW1vcnkgbGVh a3Mgd2hlbiB0aGUgYWxsb2NhdGlvbiBoYXMgYmVlbiBtYWRlCnZpYSBwbGFpbiBvbGQgYG1hbGxv YygpYCBvciBgZ19tYWxsb2MoKWAgb3Igb3RoZXIgbWVhbnMuIEl0IHdpbGwgYWxzbyBub3QgdHJh Y2UKbm9uLUdzdE9iamVjdCBHT2JqZWN0cy4KClRoZSBnb2FsIGlzIHRvIGVuYWJsZSBsZWFrIHRy YWNpbmcgb24gR1N0cmVhbWVyJ3MgQ29udGludW91cy1JbnRlZ3JhdGlvbiBhbmQKdGVzdGluZyBz eXN0ZW0sIGJvdGggZm9yIHRoZSByZWd1bGFyIHVuaXQgdGVzdHMgKG1ha2UgY2hlY2spIGFuZCBt ZWRpYSB0ZXN0cwooZ3N0LXZhbGlkYXRlKSwgc28gdGhhdCBhY2NpZGVudGFsIGxlYWtzIGluIGNv bW1vbiBjb2RlIHBhdGhzIGNhbiBiZSBkZXRlY3RlZAphbmQgZml4ZWQgcXVpY2tseS4KCkZvciBt b3JlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBuZXcgdHJhY2VyLCBjaGVjayBvdXQgR3VpbGxhdW1l IERlc21vdHRlcydzClsiVHJhY2tpbmcgTWVtb3J5IExlYWtzIl1bbGVha3MtdGFsa10gdGFsayBv ciBoaXMgW2Jsb2cgcG9zdF1bbGVha3MtYmxvZ10gYWJvdXQKdGhlIHRvcGljLgoKW2xlYWtzLXRh bGtdOiBodHRwczovL2dzdGNvbmYudWJpY2FzdC50di92aWRlb3MvdHJhY2tpbmctbWVtb3J5LWxl YWtzLwpbbGVha3MtYmxvZ106IGh0dHBzOi8vYmxvZy5kZXNtb3R0ZXMuYmUvP3Bvc3QvMjAxNi8w Ni8yMC9HU3RyZWFtZXItbGVha3MtdHJhY2VyCgojIyMgR0VTIGFuZCBOTEUgY2hhbmdlcwoKLSBD bGlwIHByaW9yaXRpZXMgYXJlIG5vdyBoYW5kbGVkIGJ5IHRoZSBsYXllcnMsIGFuZCB0aGUgR0VT VGltZWxpbmVFbGVtZW50CiAgcHJpb3JpdHkgcHJvcGVydHkgaXMgbm93IGRlcHJlY2F0ZWQgYW5k IHVudXNlZAotIEVuaGFuY2VkIChkZSlpbnRlcmxhY2luZyBzdXBwb3J0IHRvIGFsd2F5cyB1c2Ug dGhlIGBkZWludGVybGFjZWAgZWxlbWVudAogIGFuZCBleHBvc2UgbmVlZGVkIHByb3BlcnRpZXMg dG8gdXNlcnMKLSBBbGxvdyByZXVzaW5nIGNsaXBzIGNoaWxkcmVuIGFmdGVyIHJlbW92aW5nIHRo ZSBjbGlwIGZyb20gYSBsYXllcgotIFdlIGFyZSBub3cgdGVzdGluZyBtYW55IG1vcmUgcmVuZGVy aW5nIGZvcm1hdHMgaW4gdGhlIGdzdC12YWxpZGF0ZQogIHRlc3Qgc3VpdGUsIGFuZCBmYWlsdXJl cyBoYXZlIGJlZW4gZml4ZWQuCi0gQWxzbyBtYW55IGJ1Z3MgaGF2ZSBiZWVuIGZpeGVkIGluIHRo aXMgY3ljbGUhCgojIyMgR1N0cmVhbWVyIHZhbGlkYXRlIGNoYW5nZXMKClRoaXMgY3ljbGUgaGFz IGJlZW4gZm9jdXNlZCBvbiBtYWtpbmcgR3N0VmFsaWRhdGUgbW9yZSB0aGFuIGp1c3QgYSB2YWxp ZGF0aW5nCnRvb2wsIGJ1dCBhbHNvIGEgdG9vbCB0byBoZWxwIGRldmVsb3BlcnMgZGVidWcgdGhl aXIgR1N0cmVhbWVyIGlzc3Vlcy4gV2hlbgpyZXBvcnRpbmcgaXNzdWVzLCB3ZSB0cnkgdG8gZ2F0 aGVyIGFzIG11Y2ggaW5mb3JtYXRpb24gYXMgcG9zc2libGUgYW5kIGV4cG9zZQppdCB0byBlbmQg dXNlcnMgaW4gYSB1c2VmdWwgd2F5LiBGb3IgYW4gZXhhbXBsZSBvZiBzdWNoIGVuaGFuY2VtZW50 cywgY2hlY2sgb3V0ClRoaWJhdWx0IFNhdW5pZXIncyBbYmxvZyBwb3N0XShpbXByb3ZpbmctZGVi dWdnaW5nLWdzdHJlYW1lci12YWxpZGF0ZSkgYWJvdXQKdGhlIG5ldyBOb3QgTmVnb3RpYXRlZCBF cnJvciByZXBvcnRpbmcgbWVjaGFuaXNtLgoKUGxheWJpbjMgc3VwcG9ydCBoYXMgYmVlbiBhZGRl ZCBzbyB3ZSBjYW4gcnVuIHZhbGlkYXRlIHRlc3RzIHdpdGggYHBsYXliaW4zYAppbnN0ZWFkIG9m IHBsYXliaW4uCgpXZSBhcmUgbm93IGFibGUgdG8gcHJvcGVybHkgY29tbXVuaWNhdGUgYmV0d2Vl biBgZ3N0LXZhbGlkYXRlLWxhdW5jaGVyYCBhbmQKbGF1bmNoZWQgc3VicHJvY2Vzc2VzIHdpdGgg YWN0dWFsIElQQyBiZXR3ZWVuIHRoZW0uIFRoYXQgaGFzIGVuYWJsZWQgdGhlIHRlc3QKbGF1bmNo ZXIgdG8gaGFuZGxlIGZhaWxpbmcgdGVzdHMgc3BlY2lmeWluZyB0aGUgZXhhY3QgZXhwZWN0ZWQg aXNzdWUocykuCgpbaW1wcm92aW5nLWRlYnVnZ2luZy1nc3RyZWFtZXItdmFsaWRhdGVdOiBodHRw czovL2Jsb2dzLnMtb3NnLm9yZy9pbXByb3ZpbmctZGVidWdnaW5nLWdzdHJlYW1lci12YWxpZGF0 ZS8KCiMjIyBnc3QtbGliYXYgY2hhbmdlcwoKZ3N0LWxpYmF2IHVzZXMgdGhlIHJlY2VudGx5IHJl bGVhc2VkIGZmbXBlZyAzLjIgbm93LCB3aGljaCBicmluZ3MgYSBsb3Qgb2YKaW1wcm92ZW1lbnRz IGFuZCBidWdmaXhlcyBmcm9tIHRoZSBmZm1wZWcgdGVhbSBpbiBhZGRpdGlvbiB0byB2YXJpb3Vz IG5ldwpjb2RlYyBtYXBwaW5ncyBvbiB0aGUgR1N0cmVhbWVyIHNpZGUgYW5kIHF1aXRlIGEgZmV3 IGJ1Z2ZpeGVzIHRvIHRoZSBHU3RyZWFtZXIKaW50ZWdyYXRpb24gdG8gbWFrZSBpdCBtb3JlIHJv YnVzdC4KCiMjIEJ1aWxkIGFuZCBEZXBlbmRlbmNpZXMKCiMjIyBFeHBlcmltZW50YWwgc3VwcG9y dCBmb3IgTWVzb24gYXMgYnVpbGQgc3lzdGVtCgojIyMjIE92ZXJ2aWV3CgpXZSBoYXZlIGhhdmUg YWRkZWQgc3VwcG9ydCBmb3IgYnVpbGRpbmcgR1N0cmVhbWVyIHVzaW5nIHRoZQpbTWVzb24gYnVp bGQgc3lzdGVtXVttZXNvbl0uIFRoaXMgaXMgY3VycmVudGx5IGV4cGVyaW1lbnRhbCwgYnV0IHNo b3VsZCB3b3JrCmZpbmUgYXQgbGVhc3Qgb24gTGludXggdXNpbmcgdGhlIGdjYyBvciBjbGFuZyB0 b29sY2hhaW5zIGFuZCBvbiBXaW5kb3dzIHVzaW5nCnRoZSBNaW5nVyBvciBNU1ZDIHRvb2xjaGFp bnMuCgpBdXRvdG9vbHMgcmVtYWlucyB0aGUgcHJpbWFyeSBidWlsZCBzeXN0ZW0gZm9yIHRoZSB0 aW1lIGJlaW5nLCBidXQgd2UgaG9wZSB0bwpzb21lZGF5IHJlcGxhY2UgaXQgYW5kIHdpbGwgc3Rl YWRpbHkgd29yayB0b3dhcmRzIHRoYXQgZ29hbC4KCk1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhl IGJhY2tncm91bmQgYW5kIGltcGxpY2F0aW9ucyBvZiBhbGwgdGhpcyBhbmQgd2hlcmUKd2UncmUg aG9waW5nIHRvIGdvIGluIGZ1dHVyZSB3aXRoIHRoaXMgY2FuIGJlIGZvdW5kIGluIFtUaW0ncyBt YWlsXVttZXNvbi1tYWlsXQp0byB0aGUgZ3N0cmVhbWVyLWRldmVsIG1haWxpbmcgbGlzdC4KCkZv ciBtb3JlIGluZm9ybWF0aW9uIG9uIE1lc29uIGNoZWNrIG91dCBbdGhlc2UgdmlkZW9zXVttZXNv bi12aWRlb3NdIGFuZCBhbHNvCnRoZSBbTWVzb24gdGFsa11bbWVzb24tZ3N0Y29uZl0gYXQgdGhl IEdTdHJlYW1lciBDb25mZXJlbmNlLgoKSW1tZWRpYXRlIGJlbmVmaXRzIGZvciBMaW51eCB1c2Vy cyBhcmUgZmFzdGVyIGJ1aWxkcyBhbmQgcmVidWlsZHMuIEF0IHRoZSB0aW1lCm9mIHdyaXRpbmcg dGhlIE1lc29uIGJ1aWxkIG9mIEdTdHJlYW1lciBpcyB1c2VkIGJ5IGRlZmF1bHQgaW4gR05PTUUn cyBqaGJ1aWxkCnN5c3RlbS4KClRoZSBNZXNvbiBidWlsZCBjdXJyZW50bHkgc3RpbGwgbGFja3Mg bWFueSBvZiB0aGUgZmluZS1ncmFpbmVkIGNvbmZpZ3VyYXRpb24Kb3B0aW9ucyB0byBlbmFibGUv ZGlzYWJsZSBzcGVjaWZpYyBwbHVnaW5zLiBUaGVzZSB3aWxsIGJlIGFkZGVkIGJhY2sgaW4gZHVl CmNvdXJzZS4KCk5vdGU6IFRoZSBtZXNvbiBidWlsZCBmaWxlcyBhcmUgbm90IGRpc3RyaWJ1dGVk IGluIHRoZSBzb3VyY2UgdGFyYmFsbHMsIHlvdSB3aWxsCm5lZWQgdG8gZ2V0IEdTdHJlYW1lciBm cm9tIGdpdCBpZiB5b3Ugd2FudCB0cnkgaXQgb3V0LgoKW21lc29uXTogaHR0cDovL21lc29uYnVp bGQuY29tLwpbbWVzb24tbWFpbF06IGh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL2FyY2hp dmVzL2dzdHJlYW1lci1kZXZlbC8yMDE2LVNlcHRlbWJlci8wNjAyMzEuaHRtbApbbWVzb24tdmlk ZW9zXTogaHR0cDovL21lc29uYnVpbGQuY29tL3ZpZGVvcy5odG1sClttZXNvbi1nc3Rjb25mXTog aHR0cHM6Ly9nc3Rjb25mLnViaWNhc3QudHYvdmlkZW9zL2dzdHJlYW1lci1kZXZlbG9wbWVudC1v bi13aW5kb3dzLWFucy1mYXN0ZXItYnVpbGRzLWV2ZXJ5d2hlcmUtd2l0aC1tZXNvbi8KCiMjIyMg V2luZG93cyBWaXN1YWwgU3R1ZGlvIHRvb2xjaGFpbiBzdXBwb3J0CgpXaW5kb3dzIHVzZXJzIG1p Z2h0IGFwcHJlY2lhdGUgYmVpbmcgYWJsZSB0byBidWlsZCBHU3RyZWFtZXIgdXNpbmcgdGhlIE1T VkMKdG9vbGNoYWluLCB3aGljaCBpcyBub3QgcG9zc2libGUgdXNpbmcgYXV0b3Rvb2xzLiBUaGlz IG1lYW5zIHRoYXQgaXQgd2lsbCBiZQpwb3NzaWJsZSB0byBkZWJ1ZyBHU3RyZWFtZXIgYW5kIGFw cGxpY2F0aW9ucyBpbiBWaXN1YWwgU3R1ZGlvLCBmb3IgZXhhbXBsZS4KV2UgcmVxdWlyZSBWUzIw MTUgb3IgbmV3ZXIgZm9yIHRoaXMgYXQgdGhlIG1vbWVudC4KClRoZXJlIGFyZSB0d28gd2F5cyB0 byBidWlsZCBHU3RyZWFtZXIgdXNpbmcgdGhlIE1TVkMgdG9vbGNoYWluOgoKMS4gVXNpbmcgdGhl IE1TVkMgY29tbWFuZC1saW5lIHRvb2xzIChgY2wuZXhlYCBldGMuKSB2aWEgTWVzb24ncyAibmlu amEiIGJhY2tlbmQuCjIuIExldHRpbmcgTWVzb24ncyAidnMyMDE1IiBiYWNrZW5kIGdlbmVyYXRl IFZpc3VhbCBTdHVkaW8gcHJvamVjdCBmaWxlcyB0aGF0CiAgIGNhbiBiZSBvcGVuZWQgaW4gVmlz dWFsIFN0dWRpbyBhbmQgY29tcGlsZWQgZnJvbSB0aGVyZS4KClRoaXMgaXMgY3VycmVudGx5IG9u bHkgZm9yIGFkdmVudHVyb3VzIHNvdWxzIHRob3VnaC4gQWxsIHRoZSBiaXRzIGFyZSBpbiBwbGFj ZSwKYnV0IHN1cHBvcnQgZm9yIGFsbCBvZiB0aGlzIGhhcyBub3QgYmVlbiBtZXJnZWQgaW50byBH U3RyZWFtZXIncyBjZXJiZXJvIGJ1aWxkCnRvb2wgeWV0IGF0IHRoZSB0aW1lIG9mIHdyaXRpbmcu IFRoaXMgd2lsbCBob3BlZnVsbHkgaGFwcGVuIGluIHRoZSBuZXh0IGN5Y2xlLApidXQgZm9yIG5v dyB0aGlzIG1lYW5zIHRoYXQgdGhvc2Ugd2lzaGluZyB0byBjb21waWxlIEdTdHJlYW1lciB3aXRo IE1TVkMgd2lsbApoYXZlIHRvIGdldCB0aGVpciBoYW5kcyBkaXJ0eS4KClRoZXJlIGFyZSBhbHNv IG5vIGJpbmFyeSBTREsgYnVpbGRzIHVzaW5nIHRoZSBNU1ZDIHRvb2xjaGFpbiB5ZXQuCgpGb3Ig bW9yZSBpbmZvcm1hdGlvbiBvbiBHU3RyZWFtZXIgYnVpbGRzIHVzaW5nIE1lc29uIGFuZCB0aGUg V2luZG93cyB0b29sY2hhaW4KY2hlY2sgb3V0IE5pcmJoZWVrIENoYXVoYW4ncyBibG9nIHBvc3Qg WyJCdWlsZGluZyBhbmQgZGV2ZWxvcGluZyBHU3RyZWFtZXIgdXNpbmcgVmlzdWFsIFN0dWRpbyJd W21zdmMtYmxvZ10uCgpbbXN2Yy1ibG9nXTogaHR0cDovL2Jsb2cubmlyYmhlZWsuaW4vMjAxNi8w Ny9idWlsZGluZy1hbmQtZGV2ZWxvcGluZy1nc3RyZWFtZXItdXNpbmcuaHRtbAoKIyMjIERlcGVu ZGVuY2llcwoKIyMjIyBnc3RyZWFtZXIKCmxpYnVud2luZCB3YXMgYWRkZWQgYXMgYW4gb3B0aW9u YWwgZGVwZW5kZW5jeS4gSXQgaXMgdXNlZCBvbmx5IGZvciBkZWJ1Z2dpbmcKYW5kIHRyYWNpbmcg cHVycG9zZXMuCgpUaGUgYG9wZW5jdmAgcGx1Z2luIGluIGdzdC1wbHVnaW5zLWJhZCBjYW4gbm93 IGJlIGJ1aWx0IGFnYWluc3QgT3BlbkNWCnZlcnNpb24gMy4xLCBwcmV2aW91c2x5IG9ubHkgMi4z LTIuNSB3ZXJlIHN1cHBvcnRlZC4KCiMjIyMgZ3N0LXBsdWdpbnMtdWdseQoKLSBgbXBlZzJkZWNg IG5vdyByZXF1aXJlcyBhdCBsZWFzdCBsaWJtcGVnMiAwLjUuMSAoZnJvbSAyMDA4KS4KCiMjIyMg Z3N0LXBsdWdpbnMtYmFkCgotIGBnbHRyYW5zZm9ybWF0aW9uYCBub3cgcmVxdWlyZXMgYXQgbGVh c3QgZ3JhcGhlbmUgMS40LjAuCgotIGBsdjJgIG5vdyBwbHVnaW4gcmVxdWlyZXMgYXQgbGVhc3Qg bGlsdiAwLjE2IGluc3RlYWQgb2Ygc2x2Mi4KCiMjIyBQYWNrYWdpbmcgbm90ZXMKClBhY2thZ2Vy cyBwbGVhc2Ugbm90ZSB0aGF0IHRoZSBgZ3N0L2dzdGNvbmZpZy5oYCBwdWJsaWMgaGVhZGVyIGZp bGUgaW4gdGhlCkdTdHJlYW1lciBjb3JlIGxpYnJhcnkgbW92ZWQgYmFjayBmcm9tIGJlaW5nIGFu IGFyY2hpdGVjdHVyZSBkZXBlbmRlbnQgaW5jbHVkZQp0byBiZWluZyBhcmNoaXRlY3R1cmUgaW5k ZXBlbmRlbnQsIGFuZCB0aHVzIGl0IGlzIG5vIGxvbmdlciBpbnN0YWxsZWQgaW50bwpgJChsaWJk aXIpL2dzdHJlYW1lci0xLjAvaW5jbHVkZS9nc3RgIGJ1dCBpbnRvIHRoZSBub3JtYWwgaW5jbHVk ZSBkaXJlY3RvcnkKd2hlcmUgaXQgbGl2ZXMgaGFwcGlseSBldmVyIGFmdGVyIHdpdGggYWxsIHRo ZSBvdGhlciBwdWJsaWMgaGVhZGVyIGZpbGVzLiBUaGUKcmVhc29uIGZvciB0aGlzIGlzIHRoYXQg d2Ugbm93IGNoZWNrIHdoZXRoZXIgdGhlIHRhcmdldCBzdXBwb3J0cyB1bmFsaWduZWQKbWVtb3J5 IGFjY2VzcyBiYXNlZCBvbiBwcmVkZWZpbmVkIGNvbXBpbGVyIG1hY3JvcyBhdCBjb21waWxlIHRp bWUgaW5zdGVhZCBvZgpjaGVja2luZyBpdCBhdCBjb25maWd1cmUgdGltZS4KCiMjIFBsYXRmb3Jt LXNwZWNpZmljIGltcHJvdmVtZW50cwoKIyMjIEFuZHJvaWQKCiMjIyMgTmV3IHVuaXZlcnNhbCBi aW5hcmllcyBmb3IgYWxsIHN1cHBvcnRlZCBBQklzCgpXZSBub3cgcHJvdmlkZSBhICJ1bml2ZXJz YWwiIHRhcmJhbGwgdG8gYWxsb3cgYnVpbGRpbmcgYXBwcyBhZ2FpbnN0IGFsbCB0aGUKYXJjaGl0 ZWN0dXJlcyBjdXJyZW50bHkgc3VwcG9ydGVkICh4ODYsIHg4Ni02NCwgYXJtZWFiaSwgYXJtZWFi aS12N2EsCmFybWVhYmktdjhhKS4gVGhpcyBpcyBuZWVkZWQgZm9yIGJ1aWxkaW5nIHdpdGggcmVj ZW50IHZlcnNpb25zIG9mIHRoZSBBbmRyb2lkCk5ESyB3aGljaCBkZWZhdWx0cyB0byBidWlsZGlu ZyBhZ2FpbnN0IGFsbCBzdXBwb3J0ZWQgQUJJcy4gVXNlIFt0aGUgQW5kcm9pZApwbGF5ZXIgZXhh bXBsZV1bYW5kcm9pZC1wbGF5ZXItZXhhbXBsZS1idWlsZF0gYXMgYSByZWZlcmVuY2UgZm9yIHRo ZSByZXF1aXJlZApjaGFuZ2VzLgoKW2FuZHJvaWQtcGxheWVyLWV4YW1wbGUtYnVpbGRdOiBodHRw czovL2NnaXQuZnJlZWRlc2t0b3Aub3JnL2dzdHJlYW1lci9nc3QtZXhhbXBsZXMvY29tbWl0L3Bs YXliYWNrL3BsYXllci9hbmRyb2lkP2lkPWE1Y2RkZTkxMTlmMDM4YTFlYjM2NWFjYTIwZmFhOTc0 MWEzOGU3ODgKCiMjIyMgTWlzY2VsbGFuZW91cwoKLSBOZXcgYGFoc3NyY2AgZWxlbWVudCB0aGF0 IGFsbG93cyByZWFkaW5nIHRoZSBoYXJkd2FyZSBzZW5zb3JzLCBlLmcuIGNvbXBhc3MKICBvciBh Y2NlbGVyb21ldGVyLgoKIyMjIG1hY09TIChPUy9YKSBhbmQgaU9TCgotIFN1cHBvcnQgZm9yIHF1 ZXJ5aW5nIGF2YWlsYWJsZSBkZXZpY2VzIG9uIE9TL1ggdmlhIHRoZSBHc3REZXZpY2VQcm92aWRl cgogIEFQSSB3YXMgYWRkZWQuCi0gSXQgaXMgbm93IHBvc3NpYmxlIHRvIGNyZWF0ZSBPcGVuR0x8 RVMgMy54IGNvbnRleHRzIG9uIGlPUyBhbmQgdXNlIHRoZW0gaW4KICBjb21iaW5hdGlvbiB3aXRo IHRoZSBWaWRlb1Rvb2xib3ggYmFzZWQgZGVjb2RlciBlbGVtZW50LgotIG1hbnkgT3BlbkdML0dM RVMgaW1wcm92ZW1lbnRzLCBzZWUgT3BlbkdMIHNlY3Rpb24gYWJvdmUKCiMjIyBXaW5kb3dzCgot IGdzdGNvbmZpZy5oOiBBbHdheXMgdXNlIGRsbGV4cG9ydC9pbXBvcnQgb24gV2luZG93cyB3aXRo IE1TVkMKLSBNaXNjZWxsYW5lb3VzIGZpeGVzIHRvIG1ha2UgbGlicyBhbmQgcGx1Z2lucyBjb21w aWxlIHdpdGggdGhlIE1WU0MgdG9vbGNoYWluCi0gTVNWQyB0b29sY2hhaW4gc3VwcG9ydCAoc2Vl IE1lc29uIHNlY3Rpb24gYWJvdmUgZm9yIG1vcmUgZGV0YWlscykKCiMjIE5ldyBNb2R1bGVzIGZv ciBEb2N1bWVudGF0aW9uLCBFeGFtcGxlcywgTWVzb24gQnVpbGQKClRocmVlIG5ldyBnaXQgbW9k dWxlcyBoYXZlIGJlZW4gYWRkZWQgcmVjZW50bHk6CgojIyMgZ3N0LWRvY3MKClRoaXMgaXMgYSBu ZXcgbW9kdWxlIHdoZXJlIHdlIHdpbGwgbWFpbnRhaW4gZG9jdW1lbnRhdGlvbiBpbiB0aGUgbWFy a2Rvd24KZm9ybWF0LgoKSXQgY29udGFpbnMgdGhlIGZvcm1lciBnc3RyZWFtZXIuY29tIFNESyB0 dXRvcmlhbHMgd2hpY2ggaGF2ZSBraW5kbHkgYmVlbiBtYWRlCmF2YWlsYWJsZSBieSBGbHVlbmRv IHVuZGVyIGEgQ3JlYXRpdmUgQ29tbW9ucyBsaWNlbnNlLiBUaGUgdHV0b3JpYWxzIGhhdmUgYmVl bgpyZXZpZXdlZCBhbmQgdXBkYXRlZCBmb3IgR1N0cmVhbWVyIDEueCBhbmQgd2lsbCBiZSBhdmFp bGFibGUgYXMgcGFydCBvZiB0aGUKW29mZmljaWFsIEdTdHJlYW1lciBkb2N1bWVudGF0aW9uXVtk b2NdIGdvaW5nIGZvcndhcmQuIFRoZSBvbGQgZ3N0cmVhbWVyLmNvbQpzaXRlIHdpbGwgdGhlbiBi ZSBzaHV0IGRvd24gd2l0aCByZWRpcmVjdHMgcG9pbnRpbmcgdG8gdGhlIHVwZGF0ZWQgdHV0b3Jp YWxzLgoKU29tZSBvZiB0aGUgZXhpc3RpbmcgZG9jYm9vayBYTUwtZm9ybWF0dGVkIGRvY3VtZW50 YXRpb24gZnJvbSB0aGUgR1N0cmVhbWVyCmNvcmUgbW9kdWxlIHN1Y2ggYXMgdGhlICpBcHBsaWNh dGlvbiBEZXZlbG9wbWVudCBNYW51YWwqIGFuZCB0aGUgKlBsdWdpbgpXcml0ZXIncyBHdWlkZSog aGF2ZSBiZWVuIGNvbnZlcnRlZCB0byBtYXJrZG93biBhcyB3ZWxsIGFuZCB3aWxsIGJlIG1haW50 YWluZWQKaW4gdGhlIGdzdC1kb2NzIG1vZHVsZSBpbiBmdXR1cmUuIFRoZXkgd2lsbCBiZSByZW1v dmVkIGZyb20gdGhlIEdTdHJlYW1lciBjb3JlCm1vZHVsZSBpbiB0aGUgbmV4dCBjeWNsZS4KClRo aXMgaXMganVzdCB0aGUgYmVnaW5uaW5nLiBPdXIgZ29hbCBpcyB0byBwcm92aWRlIGEgbW9yZSBj b2hlc2l2ZSBkb2N1bWVudGF0aW9uCmV4cGVyaWVuY2UgZm9yIG91ciB1c2VycyBnb2luZyBmb3J3 YXJkLCBhbmQgZWFzaWVyIHRvIGNyZWF0ZSBhbmQgbWFpbnRhaW4KZG9jdW1lbnRhdGlvbiBmb3Ig ZGV2ZWxvcGVycy4gVGhlcmUgaXMgYSBsb3QgbW9yZSB3b3JrIHRvIGRvLCBnZXQgaW4gdG91Y2gg aWYKeW91IHdhbnQgdG8gaGVscCBvdXQuCgpJZiB5b3UgZW5jb3VudGVyIGFueSBwcm9ibGVtcyBv ciBzcG90IGFueSBvbWlzc2lvbnMgb3Igb3V0ZGF0ZWQgY29udGVudCBpbiB0aGUKbmV3IGRvY3Vt ZW50YXRpb24sIHBsZWFzZSBbZmlsZSBhIGJ1ZyBpbiBidWd6aWxsYV1bZG9jLWJ1Z10gdG8gbGV0 IHVzIGtub3cuCgpXZSB3aWxsIHByb2JhYmx5IHJlbGVhc2UgZ3N0LWRvY3MgYXMgYSBzZXBhcmF0 ZSB0YXJiYWxsIGZvciBkaXN0cmlidXRpb25zIHRvCnBhY2thZ2UgaW4gdGhlIG5leHQgY3ljbGUu CgpbZG9jXTogaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZG9jdW1lbnRhdGlvbi8K W2RvYy1idWddOiBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9lbnRlcl9idWcuY2dpP3Byb2R1 Y3Q9R1N0cmVhbWVyJmNvbXBvbmVudD1kb2N1bWVudGF0aW9uCgojIyMgZ3N0LWV4YW1wbGVzCgpB IG5ldyBbbW9kdWxlXVtleGFtcGxlcy1naXRdIGhhcyBiZWVuIGFkZGVkIGZvciBleGFtcGxlcy4g SXQgZG9lcyBub3QgY29udGFpbgptdWNoIHlldCwgY3VycmVudGx5IGl0IG9ubHkgY29udGFpbnMg YSBzbWFsbCBbaHR0cC1sYXVuY2hdW2h0dHAtbGF1bmNoXSB1dGlsaXR5CnRoYXQgc2VydmVzIGEg cGlwZWxpbmUgb3ZlciBodHRwIGFzIHdlbGwgYXMgdmFyaW91cyBbR3N0UGxheWVyIHBsYXliYWNr IGZyb250ZW5kc11bcHVpc10KZm9yIEFuZHJvaWQsIGlPUywgR3RrKyBhbmQgUXQuCgpNb3JlIGV4 YW1wbGVzIHdpbGwgYmUgYWRkZWQgb3ZlciB0aW1lLiBUaGUgZXhhbXBsZXMgaW4gdGhpcyByZXBv c2l0b3J5IHNob3VsZApiZSBtb3JlIHVzZWZ1bCBhbmQgbW9yZSBzdWJzdGFudGlhbCB0aGFuIG1v c3Qgb2YgdGhlIGV4YW1wbGVzIHdlIHNoaXAgYXMgcGFydApvZiBvdXIgb3RoZXIgbW9kdWxlcywg YW5kIGFsc28gd3JpdHRlbiBpbiBhIHdheSB0aGF0IG1ha2VzIHRoZW0gZ29vZCBleGFtcGxlCmNv ZGUuIElmIHlvdSBoYXZlIGlkZWFzIGZvciBleGFtcGxlcywgbGV0IHVzIGtub3cuCgpObyBkZWNp c2lvbiBoYXMgYmVlbiBtYWRlIHlldCBpZiB0aGlzIG1vZHVsZSB3aWxsIGJlIHJlbGVhc2VkIGFu ZC9vciBwYWNrYWdlZC4KSXQgcHJvYmFibHkgbWFrZXMgc2Vuc2UgdG8gZG8gc28gdGhvdWdoLgoK W2V4YW1wbGVzLWdpdF06IGh0dHBzOi8vY2dpdC5mcmVlZGVza3RvcC5vcmcvZ3N0cmVhbWVyL2dz dC1leGFtcGxlcy90cmVlLwpbaHR0cC1sYXVuY2hdOiBodHRwczovL2NnaXQuZnJlZWRlc2t0b3Au b3JnL2dzdHJlYW1lci9nc3QtZXhhbXBsZXMvdHJlZS9uZXR3b3JrL2h0dHAtbGF1bmNoLwpbcHVp c106IGh0dHBzOi8vY2dpdC5mcmVlZGVza3RvcC5vcmcvZ3N0cmVhbWVyL2dzdC1leGFtcGxlcy90 cmVlL3BsYXliYWNrL3BsYXllcgoKIyMjIGdzdC1idWlsZAoKW2dzdC1idWlsZF1bZ3N0LWJ1aWxk LWdpdF0gaXMgYSBuZXcgbWV0YSBtb2R1bGUgdG8gYnVpbGQgR1N0cmVhbWVyIHVzaW5nIHRoZQpu ZXcgTWVzb24gYnVpbGQgc3lzdGVtLiBUaGlzIG1vZHVsZSBpcyBub3QgcmVxdWlyZWQgdG8gYnVp bGQgR1N0cmVhbWVyIHdpdGgKTWVzb24sIGl0IGlzIG1lcmVseSBmb3IgY29udmVuaWVuY2UgYW5k IGFpbXMgdG8gcHJvdmlkZSBhIGRldmVsb3BtZW50IHNldHVwCnNpbWlsYXIgdG8gdGhlIGV4aXN0 aW5nIGBnc3QtdW5pbnN0YWxsZWRgIHNldHVwLgoKZ3N0LWJ1aWxkIG1ha2VzIHVzZSBvZiBNZXNv bidzIFtzdWJwcm9qZWN0IGZlYXR1cmVdW21lc29uLXN1YnByb2plY3RzXSBhbmQgc2V0cwp1cCB0 aGUgdmFyaW91cyBHU3RyZWFtZXIgbW9kdWxlcyBhcyBzdWJwcm9qZWN0cywgc28gdGhleSBjYW4g YWxsIGJlIHVwZGF0ZWQgYW5kCmJ1aWx0IGluIHBhcmFsbGVsLgoKVGhpcyBtb2R1bGUgaXMgc3Rp bGwgdmVyeSBuZXcgYW5kIGhpZ2hseSBleHBlcmltZW50YWwuIEl0IHNob3VsZCB3b3JrIGF0IGxl YXN0Cm9uIExpbnV4IGFuZCBXaW5kb3dzIChPUy9YIG5lZWRzIHNvbWUgYnVpbGQgZml4ZXMpLiBM ZXQgdXMga25vdyBvZiBhbnkgaXNzdWVzCnlvdSBlbmNvdW50ZXIgYnkgcG9wcGluZyBpbnRvIHRo ZSBgI2dzdHJlYW1lcmAgSVJDIGNoYW5uZWwgb3IgYnkKW2ZpbGluZyBhIGJ1Z11bZ3N0LWJ1aWxk LWJ1Z10uCgpUaGlzIG1vZHVsZSB3aWxsIHByb2JhYmx5IG5vdCBiZSByZWxlYXNlZCBvciBwYWNr YWdlZCAoZG9lcyBub3QgcmVhbGx5IG1ha2Ugc2Vuc2UpLgoKW2dzdC1idWlsZC1naXRdOiBodHRw czovL2NnaXQuZnJlZWRlc2t0b3Aub3JnL2dzdHJlYW1lci9nc3QtYnVpbGQvdHJlZS8KW2dzdC1i dWlsZC1idWddOiBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9lbnRlcl9idWcuY2dpP3Byb2R1 Y3Q9R1N0cmVhbWVyJmNvbXBvbmVudD1nc3QtYnVpbGQKW21lc29uLXN1YnByb2plY3RzXTogaHR0 cHM6Ly9naXRodWIuY29tL21lc29uYnVpbGQvbWVzb24vd2lraS9TdWJwcm9qZWN0cwoKIyMgQ29u dHJpYnV0b3JzCgpBYXJvbiBCb3hlciwgQWxlaXggQ29uY2hpbGxvIEZsYXF1w6ksIEFsZXNzYW5k cm8gRGVjaW5hLCBBbGV4YW5kcnUgQsSDbHXImywgQWxleApBc2hsZXksIEFsZXgtUC4gTmF0c2lv cywgQWxpc3RhaXIgQnV4dG9uLCBBbGxlbiBaaGFuZywgQW5kcmVhcyBOYXVtYW5uLCBBbmRyZXcK RWlrdW0sIEFuZHkgRGV2YXIsIEFudGhvbnkgRy4gQmFzaWxlLCBBcmplbiBWZWVuaHVpemVuLCBB cm5hdWQgVnJhYywgQXJ0ZW0KTWFydHlub3ZpY2gsIEFydW4gUmFnaGF2YW4sIEF1csOpbGllbiBa YW5lbGxpLCBCYXJ1biBLdW1hciBTaW5naCwgQmVybmhhcmQKTWlsbGVyLCBCcmFkIExhY2tleSwg QnJhbmtvIFN1YmFzaWMsIENhcmxvcyBHYXJjaWEgQ2FtcG9zLCBDYXJsb3MgUmFmYWVsCkdpYW5p LCBDaHJpc3RvZmZlciBTdGVuZ3JlbiwgRGFpa2kgVWVubywgRGFtaWFuIFppb2JybywgRGFuaWxv IENlc2FyIExlbWVzIGRlClBhdWxhLCBEYXZpZCBCdWNobWFubiwgRGltaXRyaW9zIEthdHNhcm9z LCBEdW5jYW4gUGFsbWVyLCBFZHdhcmQgSGVydmV5LApFbW1hbnVlbCBQb2l0aWVyLCBFbnJpY28g Sm9ybnMsIEVucmlxdWUgT2Nhw7FhIEdvbnrDoWxleiwgRmFicmljZSBCZWxsZXQsCkZsb3JpYW4g WndvY2gsIEZsb3JpbiBBcG9zdG9sLCBGcmFuY2lzY28gVmVsYXpxdWV6LCBGcsOpZMOpcmljIEJl cnRvbHVzLCBGcmVkcmlrCkZvcm53YWxsLCBHYXVyYXYgR3VwdGEsIEdlb3JnZSBLaWFnaWFkYWtp cywgR2VvcmcgTGlwcGl0c2NoLCBHw7ZyYW4gSsO2bnNzb24sCkdyYWhhbSBMZWdnZXR0LCBHcmVn b2lyZSBHZW50aWwsIEd1aWxsYXVtZSBEZXNtb3R0ZXMsIEd3YW5nIFlvb24gSHdhbmcsIEhhYWtv bgpTcG9yc2hlaW0sIEhhaWh1YSBIdSwgSGF2YXJkIEdyYWZmLCBIZWlucmljaCBGaW5rLCBIb29u aGVlIExlZSwgSHl1bmp1biBLbywKSWFpbiBMYW5lLCBJYW4sIElhbiBKYW1pc29uLCBKYWd5dW0g S29vLCBKYWtlIEZveXRpaywgSmFrdWIgQWRhbSwgSmFuCkFsZXhhbmRlciBTdGVmZmVucyAoaGVm dGlnKSwgSmFuIFNjaG1pZHQsIEphdmllciBNYXJ0aW5leiBDYW5pbGxhcywgSmVyb21lCkxhaGV1 cnRlLCBKZXNwZXIgTGFyc2VuLCBKaWUgSmlhbmcsIEppaGFlIFlpLCBKaW1teSBPaG4sIEppbndv byBBaG4sIEpvYWtpbQpKb2hhbnNzb24sIEpvYW4gUGF1IEJlbHRyYW4sIEpvbmFzIEhvbG1iZXJn LCBKb25hdGhhbiBNYXR0aGV3LCBKb25hdGhhbiBSb3ksCkpvc2VwIFRvcnJhLCBKdWxpZW4gSXNv cmNlLCBKdW4gSmksIErDvHJnZW4gU2xvd2FjaywgSnVzdGluIEtpbSwgS2F6dW5vcmkKS29iYXlh c2hpLCBLaWVyYW4gQmluZ2hhbSwgS2lwcCBDYW5ub24sIEtvb3AgTWFzdCwgS291aGVpIFN1dG91 LCBLc2VuaWlhLCBLeWxlClNjaHdhcnosIEt5dW5neW9uZyBLaW0sIExpbnVzIFN2ZW5zc29uLCBM dWlzIGRlIEJldGhlbmNvdXJ0LCBNYXJjaW4gS29sbnksCk1hcmNpbiBMZXdhbmRvd3NraSwgTWFy aWFubmEgU21pZHRoIEJ1c2NobGUsIE1hcmlvIFNhbmNoZXogUHJhZGEsIE1hcmsKQ29tYmVsbGFj aywgTWFyayBOYXV3ZWxhZXJ0cywgTWFydGluIEtlbGx5LCBNYXRlaiBLbm9wcCwgTWF0aGlldSBE dXBvbmNoZWxsZSwKTWF0cyBMaW5kZXN0YW0sIE1hdHRoZXcgR3J1ZW5rZSwgTWF0dGhldyBXYXRl cnMsIE1pY2hhZWwgT2xicmljaCwgTWljaGFsIExhem8sCk1pZ3VlbCBQYXLDrXMgRMOtYXosIE1p a2hhaWwgRmx1ZGtvdiwgTWluamFlIEtpbSwgTW9oYW4gUiwgTXVuZXosIE5pY29sYSBNdXJpbm8s Ck5pY29sYXMgRHVmcmVzbmUsIE5pY29sYXMgSHVldCwgTmlraXRhIEJvYmtvdiwgTmlyYmhlZWsg Q2hhdWhhbiwgT2xpdmllcgpDcsOqdGUsIFBhb2xvIFBldHRpbmF0bywgUGF0cmljaWEgTXVzY2Fs dSwgUGF1bG8gTmV2ZXMsIFBlbmcgTGl1LCBQZXRlcgpTZWlkZXJlciwgUGhpbGlwcGUgTm9ybWFu ZCwgUGhpbGlwcGUgUmVub24sIFBoaWxpcHAgWmFiZWwsIFBpZXJyZSBMYW1vdCwgUGlvdHIKRHLE hWcsIFByYXNoYW50IEdvdGFybmUsIFJhZmZhZWxlIFJvc3NpLCBSYXkgU3Ryb2RlLCBSZXluYWxk byBILiBWZXJkZWpvClBpbm9jaGV0LCBTYW50aWFnbyBDYXJvdC1OZW1lc2lvLCBTY290dCBEIFBo aWxsaXBzLCBTZWJhc3RpYW4gRHLDtmdlLCBTZWJhc3RpYW4KUmFzbXVzc2VuLCBTZXJnZWkgU2F2 ZWxpZXYsIFNlcmdleSBCb3JvdmtvdiwgU2VyZ2V5IE1hbW9ub3YsIFNlcmdpbyBUb3JyZXMKU29s ZGFkbywgU2V1bmdoYSBZYW5nLCBzZXplcm8sIFNvbmcgQmluZywgU3JlZXJlbmogQmFsYWNoYW5k cmFuLCBTdGVmYW4gU2F1ZXIsClN0ZXBoZW4sIFN0ZXZlbiBIb3ZpbmcsIFN0aWFuIFNlbG5lcywg VGhpYWdvIFNhbnRvcywgVGhpYmF1bHQgU2F1bmllciwgVGhpanMKVmVybWVpciwgVGhvbWFzIEJs dWVtZWwsIFRob21hcyBKb25lcywgVGhvbWFzIEtsYXVzbmVyLCBUaG9tYXMgU2NoZXVlcm1hbm4s ClRpbS1QaGlsaXBwIE3DvGxsZXIsIFRpbmctV2VpIExhbiwgVG9tIFNjaG9vbmphbnMsIFVyc3Vs YSBNYXBsZWh1cnN0LCBWYW5lc3NhCkNoaXBpcnJhcyBOYXZhbG9uLCBWw61jdG9yIE1hbnVlbCBK w6FxdWV6IExlYWwsIFZpbmNlbnQgUGVucXVlcmMnaCwgVmluZWV0aCBUTSwKVml2aWEgTmlrb2xh aWRvdSwgVm9vdGVsZSBWZXN0ZXJibG9tLCBXYW5nIFhpbi15dSAo546L5piV5a6HKSwgV2lsbGlh bSBNYW5sZXksCldpbSBUYXltYW5zLCBXb25jaHVsIExlZSwgWGFiaWVyIFJvZHJpZ3VleiBDYWx2 YXIsIFhhdmllciBDbGFlc3NlbnMsIHhsYXpvbTAwLApZYW5uIEpvdWFuaW4sIFphaGVlciBBYmJh cyBNZXJhbGkKCi4uLiBhbmQgbWFueSBvdGhlcnMgd2hvIGhhdmUgY29udHJpYnV0ZWQgYnVnIHJl cG9ydHMsIHRyYW5zbGF0aW9ucywgc2VudApzdWdnZXN0aW9ucyBvciBoZWxwZWQgdGVzdGluZy4K CiMjIEJ1Z3MgZml4ZWQgaW4gMS4xMAoKTW9yZSB0aGFuIFs3NTAgYnVnc11bYnVncy1maXhlZC1p bi0xLjEwXSBoYXZlIGJlZW4gZml4ZWQgZHVyaW5nCnRoZSBkZXZlbG9wbWVudCBvZiAxLjEwLgoK VGhpcyBsaXN0IGRvZXMgbm90IGluY2x1ZGUgaXNzdWVzIHRoYXQgaGF2ZSBiZWVuIGNoZXJyeS1w aWNrZWQgaW50byB0aGUKc3RhYmxlIDEuOCBicmFuY2ggYW5kIGZpeGVkIHRoZXJlIGFzIHdlbGws IGFsbCBmaXhlcyB0aGF0IGVuZGVkIHVwIGluIHRoZQoxLjggYnJhbmNoIGFyZSBhbHNvIGluY2x1 ZGVkIGluIDEuMTAuCgpUaGlzIGxpc3QgYWxzbyBkb2VzIG5vdCBpbmNsdWRlIGlzc3VlcyB0aGF0 IGhhdmUgYmVlbiBmaXhlZCB3aXRob3V0IGEgYnVnCnJlcG9ydCBpbiBidWd6aWxsYSwgc28gdGhl IGFjdHVhbCBudW1iZXIgb2YgZml4ZXMgaXMgbXVjaCBoaWdoZXIuCgpbYnVncy1maXhlZC1pbi0x LjEwXTogaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvYnVnbGlzdC5jZ2k/YnVnX3N0YXR1cz1S RVNPTFZFRCZidWdfc3RhdHVzPVZFUklGSUVEJmNsYXNzaWZpY2F0aW9uPVBsYXRmb3JtJmxpbWl0 PTAmbGlzdF9pZD0xNjQwNzQmb3JkZXI9YnVnX2lkJnByb2R1Y3Q9R1N0cmVhbWVyJnF1ZXJ5X2Zv cm1hdD1hZHZhbmNlZCZyZXNvbHV0aW9uPUZJWEVEJnRhcmdldF9taWxlc3RvbmU9MS44LjEmdGFy Z2V0X21pbGVzdG9uZT0xLjguMiZ0YXJnZXRfbWlsZXN0b25lPTEuOC4zJnRhcmdldF9taWxlc3Rv bmU9MS44LjQmdGFyZ2V0X21pbGVzdG9uZT0xLjkuMSZ0YXJnZXRfbWlsZXN0b25lPTEuOS4yJnRh cmdldF9taWxlc3RvbmU9MS45LjkwJnRhcmdldF9taWxlc3RvbmU9MS4xMC4wCgojIyBTdGFibGUg MS4xMCBicmFuY2gKCkFmdGVyIHRoZSAxLjEwLjAgcmVsZWFzZSB0aGVyZSB3aWxsIGJlIHNldmVy YWwgMS4xMC54IGJ1Zy1maXggcmVsZWFzZXMgd2hpY2gKd2lsbCBjb250YWluIGJ1ZyBmaXhlcyB3 aGljaCBoYXZlIGJlZW4gZGVlbWVkIHN1aXRhYmxlIGZvciBhIHN0YWJsZSBicmFuY2gsCmJ1dCBu byBuZXcgZmVhdHVyZXMgb3IgaW50cnVzaXZlIGNoYW5nZXMgd2lsbCBiZSBhZGRlZCB0byBhIGJ1 Zy1maXggcmVsZWFzZQp1c3VhbGx5LiBUaGUgMS4xMC54IGJ1Zy1maXggcmVsZWFzZXMgd2lsbCBi ZSBtYWRlIGZyb20gdGhlIGdpdCAxLjEwIGJyYW5jaCwKd2hpY2ggaXMgYSBzdGFibGUgYnJhbmNo LgoKIyMjIDEuMTAuMAoKMS4xMC4wIHdhcyByZWxlYXNlZCBvbiAxc3QgTm92ZW1iZXIgMjAxNi4K CiMjIEtub3duIElzc3VlcwoKLSBpT1MgYnVpbGRzIHdpdGggaU9TIDYgU0RLIGFuZCBvbGQgQysr IFNUTC4gWW91IG5lZWQgdG8gc2VsZWN0IGlPUyA2IGluc3RlYWQKICBvZiA3IG9yIDggaW4geW91 ciBwcm9qZWN0cyBzZXR0aW5ncyB0byBiZSBhYmxlIHRvIGxpbmsgYXBwbGljYXRpb25zLgogIFtC dWcgIzc2NjM2Nl0oaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc2 NjM2NikKLSBDb2RlIHNpZ25pbmcgZm9yIEFwcGxlIHBsYXRmb3JtcyBoYXMgc29tZSBwcm9ibGVt cyBjdXJyZW50bHksIHJlcXVpcmluZwogIG1hbnVhbCB3b3JrIHRvIGdldCB5b3VyIGFwcGxpY2F0 aW9uIHNpZ25lZC4gW0J1ZyAjNzcxODYwXShodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93 X2J1Zy5jZ2k/aWQ9NzcxODYwKQotIEJ1aWxkaW5nIGFwcGxpY2F0aW9ucyB3aXRoIEFuZHJvaWQg TkRLIHIxMyBvbiBXaW5kb3dzIGRvZXMgbm90IHdvcmsuIE90aGVyCiAgcGxhdGZvcm1zIGFuZCBl YXJsaWVyL2xhdGVyIHZlcnNpb25zIG9mIHRoZSBOREsgYXJlIG5vdCBhZmZlY3RlZC4KICBbQnVn ICM3NzI4NDJdKGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NzI4 NDIpCi0gVGhlIG5ldyBsZWFrcyB0cmFjZXIgbWF5IGRlYWRsb2NrIHRoZSBhcHBsaWNhdGlvbiAo b3IgZXhoaWJpdCBvdGhlciB1bmRlZmluZWQKICBiZWhhdmlvdXIpIHdoZW4gYFNJR1VTUmAgaGFu ZGxpbmcgaXMgZW5hYmxlZCB2aWEgdGhlIGBHU1RfTEVBS1NfVFJBQ0VSX1NJR2AKICBlbnZpcm9u bWVudCB2YXJpYWJsZS4gW0J1ZyAjNzcwMzczXShodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9z aG93X2J1Zy5jZ2k/aWQ9NzcwMzczKQotIHZwOGVuYyBjcmFzaGVzIG9uIDMyIGJpdCBXaW5kb3dz LCBidXQgd2FzIHdvcmtpbmcgZmluZSBpbiAxLjYuIDY0IGJpdCBXaW5kb3dzIGlzIHVuYWZmZWN0 ZWQuCiAgW0J1ZyAjNzYzNjYzXShodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5j Z2k/aWQ9NzYzNjYzKQoKIyMgU2NoZWR1bGUgZm9yIDEuMTIKCk91ciBuZXh0IG1ham9yIGZlYXR1 cmUgcmVsZWFzZSB3aWxsIGJlIDEuMTIsIGFuZCAxLjExIHdpbGwgYmUgdGhlIHVuc3RhYmxlCmRl dmVsb3BtZW50IHZlcnNpb24gbGVhZGluZyB1cCB0byB0aGUgc3RhYmxlIDEuMTIgcmVsZWFzZS4g VGhlIGRldmVsb3BtZW50Cm9mIDEuMTEvMS4xMiB3aWxsIGhhcHBlbiBpbiB0aGUgZ2l0IG1hc3Rl ciBicmFuY2guCgpUaGUgcGxhbiBmb3IgdGhlIDEuMTIgZGV2ZWxvcG1lbnQgY3ljbGUgaXMgeWV0 IHRvIGJlIGNvbmZpcm1lZCwgYnV0IGl0IGlzCmV4cGVjdGVkIHRoYXQgZmVhdHVyZSBmcmVlemUg d2lsbCBiZSBhcm91bmQgZWFybHkvbWlkLUphbnVhcnksCmZvbGxvd2VkIGJ5IHNldmVyYWwgMS4x MSBwcmUtcmVsZWFzZXMgYW5kIHRoZSBuZXcgMS4xMiBzdGFibGUgcmVsZWFzZQppbiBNYXJjaC4K CjEuMTIgd2lsbCBiZSBiYWNrd2FyZHMtY29tcGF0aWJsZSB0byB0aGUgc3RhYmxlIDEuMTAsIDEu OCwgMS42LCAxLjQsIDEuMiBhbmQKMS4wIHJlbGVhc2Ugc2VyaWVzLgoKLSAtIC0KCipUaGVzZSBy ZWxlYXNlIG5vdGVzIGhhdmUgYmVlbiBwcmVwYXJlZCBieSBPbGl2aWVyIENyw6p0ZSwgU2ViYXN0 aWFuIERyw7ZnZSwKTmljb2xhcyBEdWZyZXNuZSwgRWR3YXJkIEhlcnZleSwgVsOtY3RvciBNYW51 ZWwgSsOhcXVleiBMZWFsLCBUaW0tUGhpbGlwcApNw7xsbGVyLCBSZXluYWxkbyBILiBWZXJkZWpv IFBpbm9jaGV0LCBBcnVuIFJhZ2hhdmFuLCBUaGliYXVsdCBTYXVuaWVyLApKYW4gU2NobWlkdCwg V2ltIFRheW1hbnMsIE1hdHRoZXcgV2F0ZXJzKgoKKkxpY2Vuc2U6IFtDQyBCWS1TQSA0LjBdKGh0 dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL2xpY2Vuc2VzL2J5LXNhLzQuMC8pKgo= --=-Q09Z4YPTe446fd1F8iqt-- --=-UlkmqSkQbQYnOwdygcuy Content-Type: application/pgp-signature; name="signature.asc" Content-Description: This is a digitally signed message part Content-Transfer-Encoding: 7bit -----BEGIN PGP SIGNATURE----- iQJ8BAABCgBmBQJYGMRbXxSAAAAAAC4AKGlzc3Vlci1mcHJAbm90YXRpb25zLm9w ZW5wZ3AuZmlmdGhob3JzZW1hbi5uZXQ3RjRCQzdDQzNDQTA2Rjk3MzM2QkJGRUIw NjY4Q0MxNDg2QzJEN0I1AAoJEAZozBSGwte1aiEQAI99VJvOO5qNVgRTvEPIFAPk KXzx6oi2ra1s+C616vcPVQtR38tBTPlRyudWUpFBfzCi4xn7WPnhBip5oCY9MGK8 zeiNZ8WR6UzzOVCHAU6Nh/TJjJUzEAetxzqex2/S+UWYd6g5G+R9SqlsmYDXFl0W gEnHXv/mW9h5VrM2HybMG6ZAv47jDY9sImIc56IywWLUUS+/Om+EDG+rhIJVr3BN huov9dsEOGR/Bc03cBeWeucmlBCINBrRSVRYwBvrAaZOKMrA2QeB3veWt8QOM7eP hqhT1zDSlVKDwjwb7YQFGGJbPn2iljAzQ1jD+M7/XIC8nWLk9bSH0qAQIj5N0ut3 wo14RXosEgb5DNdyZcv8rjBGlOR0y5PsUj/sJFEM/Tw96ZaGDhbNoFUCsJp5zbfY XfkKdM7IoG1UrPhIf4ZVe4LAy2nAfHyIIRGexaUFThHTEjcgtbh6kfS5m5+vPTK7 DjHgOPg+2JurN8i2xIVy1SEuAv8YhWPpaJz/OdGKBmn1cKRGcNIvvKrUlvKfuDd2 vqRmSP8waQpRWNXMnP/XM53L0G7PQK0gudV2w0H9wqjz2zPWhHXwCUn2iMvdGUOo RR2EoUqif/Id1HC+lNdX6+5lYCH4hhDpy6x2i8qSdFUfBE+3LwK1blxE/5jcWd+J LUbUwTspeqwEJ5oli9UF =CDO4 -----END PGP SIGNATURE----- --=-UlkmqSkQbQYnOwdygcuy-- --===============0230598697== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: inline X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZ3N0cmVhbWVy LWRldmVsIG1haWxpbmcgbGlzdApnc3RyZWFtZXItZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3Jn Cmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZ3N0cmVhbWVy LWRldmVsCg== --===============0230598697==--