Banned on MDN for adding referer warnings, please help.
Mark Richards <[email protected]> Sat, 6 Oct 2018 21:04:04 +0900
| Newsgroups | gmane.comp.mozilla.security |
|---|---|
| Message-ID | <CAHUjVGMLJZpNe+JmgVx4m58OtkqVf6dAueVxRNn2RGTUJTHoQw@mail.gmail.com> |
SGV5CgpJJ3ZlIGhhZCBteSBNRE4gYWNjb3VudCBiYW5uZWQgZm9yIHRyeWluZyB0byBhZGQgcmVm ZXJlciB3YXJuaW5ncyBvbnRvIDxhPgphbmQgPGltZz4gZWxlbWVudHMgb3Igd29yc2UgYmFubmVk IGZvciBpbnZvbHZpbmcgYXV0aG9yaXRpZXMgd2hvIGFyZQppbnZlc3RpZ2F0aW5nIHRoZSBtZXNz IG9mIG1pY3JvdGFyZ2V0aW5nLiBJdCBhcHBlYXJzIE1ETiBhcmUgcmVmdXNpbmcgYQp3YXJuaW5n IG9uIHRoZSBncm91bmRzIGl0IGlzbid0IGEgbmljZSBwcmVzZW50YXRpb24sIHJlZ2FyZGxlc3Mg b2YgaG93CmlycmVzcG9uc2libGUgaXQgaXMgdG8gbm90IGluY2x1ZGUgaXQuCgpJIG5lZWQgaGVs cCBhbmQgYXMgdGhlIHNlY3VyaXR5IGRldnMgSSBob3BlIGdpdmVuIHRoZSBleHRlbnQgdG8gd2hp Y2gKRmlyZWZveCBoYXMgYWRkZWQgY29uZmlnIGZlYXR1cmVzIGFuZCBwb2xpY2llcyB0byB0cnkg dG8gcmVkdWNlIHRoZSByZWZlcmVyCm1lc3MgdGhlcmUgYXJlIGNvbW11bml0eSBtZW1iZXJzIHdo byB1bmRlcnN0YW5kIGhvdyBzaWduaWZpY2FudCB0aGlzIGlzLgpXaGF0ZXZlciBGaXJlZm94IHRy aWVzLCBvdGhlciBicm93c2VycyBoYXZlIGEgYmlnZ2VyIG1hcmtldCBzaGFyZS4KRG9jdW1lbnRp bmcgdGhlIHJlZmVyZXIgcmlza3MgaW4gTUROIGRvZXMgc3RhbmQgYSBjaGFuY2Ugb2YgYmV0dGVy CmVkdWNhdGluZyBkZXZlbG9wZXJzIHNvIHRoZXkgc3RhcnQgcGF5aW5nIGF0dGVudGlvbiB0byB0 aGVpciB0aGlyZCBwYXJ0aWVzCmFuZCBmb3IgbWFueSBpdCBpcyBpbXBlcmF0aXZlIHRvIGRvIHNv IGdpdmVuIEdEUFIgY2hhbmdlcy4KCkEgZGV2ZWxvcGVyIEkga25vdyB3aG8gcmVjZW50bHkgZmlu aXNoZWQgYSB0aHJlZSBtb250aCBpbnRlbnNpdmUgY291cnNlIG9uCnRoZSB3ZWIgYWR2aXNlZCB0 aGVyZSB3YXMgbm8gY292ZXJhZ2Ugb2YgcmVmZXJlciwgd2hpY2ggbWF0Y2hlcyBteSBDUwpkZWdy ZWUgZXhwZXJpZW5jZSBvdmVyIGEgZGVjYWRlIGFnby4gVGhpcyBpc24ndCBhIG9uZS1vZmYgdG8g bWUsIEkgaGF2ZSBtZXQKbWFueSBkZXZlbG9wZXJzIHdobyBkb24ndCB1bmRlcnN0YW5kIHRoZSBy aXNrIG9yIGV2ZW4gaGF2ZSBtaXNjb25jZXB0aW9ucwphYm91dCBob3cgaXQgd29ya3MgKGxpa2Ug dGhpbmtpbmcgaXQncyBub3Qgc2VudCBvbiBodHRwcyBzaXRlcykuIEhvd2V2ZXIKdGhpcyBkZXZl bG9wZXIgZGlkIHNheSB0aGUgY291cnNlIHVzZWQgTUROIHRvIHRlYWNoIGFib3V0IHRoZSB3ZWIg ZmVhdHVyZXMKYW5kIHRoaXMgbWF0Y2hlcyBteSBkZXZlbG9wbWVudCBleHBlcmllbmNlLCBNRE4g aXMgdmVyeSBtdWNoIHJlc3BlY3RlZCBieQp0aGUgRGV2IGNvbW11bml0eS4gSXQgbWF5IHdlbGwg YmUgdGhlIGNhc2UgTUROIGhhcyBhIGdyZWF0ZXIgbWFya2V0IHNoYXJlCmluIHRoZSBEZXYgY29t bXVuaXR5IGFzIGFuIGVkdWNhdGlvbmFsIHJlc291cmNlLCB0aGFuIEZpcmVmb3ggZG9lcyB3aXRo CmNvbnN1bWVycyBhcyBhIGJyb3dzZXIuCgpUaGUgTW96aWxsYSBzZWN1cml0eSBibG9nIGhhcyBi ZWVuIG11bHRpcGxlIHJlZmVyZW5jZXMgdG8gcmVmZXJlcnMgb3ZlciB0aGUKeWVhcnMsIGJ1dCBt b3N0IHBlb3BsZSBhcmUgc3RpbGwgaGF2aW5nIHRoZWlyIGJyb3dzZXIgaGlzdG9yeSBkaXN0cmli dXRlZApwaWVjZW1lYWwgYnkgaXQuIEJyb3dzZXJzIHN0aWxsIGRvbid0IHByb3RlY3QgcmVmZXJl cnMgYnkgZGVmYXVsdCBhbmQgZXZlbgppZiB0aGF0IGNoYW5nZWQgdG9tb3Jyb3cgaXQgbWlnaHQg YmUgNS0xMCB5ZWFycyBiZWZvcmUgZXZlcnlvbmUgdXBncmFkZXMKdGhlaXIgdmFyaW91cyBkZXZp Y2VzLgoKaHR0cHM6Ly9ibG9nLm1vemlsbGEub3JnL3NlY3VyaXR5LzIwMTUvMDEvMjEvbWV0YS1y ZWZlcnJlci8KaHR0cHM6Ly9ibG9nLm1vemlsbGEub3JnL3NlY3VyaXR5LzIwMTgvMTAvMDIvc3Vw cG9ydGluZy1yZWZlcnJlci1wb2xpY3ktZm9yLWNzcy1pbi1maXJlZm94LTY0LwpodHRwczovL2Js b2cubW96aWxsYS5vcmcvc2VjdXJpdHkvMjAxOC8wMS8zMS9wcmV2ZW50aW5nLWRhdGEtbGVha3Mt Ynktc3RyaXBwaW5nLXBhdGgtaW5mb3JtYXRpb24taW4taHR0cC1yZWZlcnJlcnMvCgpXaXRoIEdE UFIsIHRoZSBydWxlcyBjaGFuZ2VkIGFuZCBhcmUgYmVpbmcgY29waWVkIGluIG90aGVyIGp1cmlz ZGljdGlvbnMuCkJ1c2luZXNzZXMgbXVzdCBoYXZlIGFjY291bnRhYmlsaXR5IGFuZCBwcml2YWN5 IGJ5IGRlZmF1bHQsIHNvIHJlZmVyZXIgaXMKaW4gY29uZmxpY3Qgd2l0aCBsb2NhbCBsZWdpc2xh dGlvbiBub3QganVzdCBiZWNhdXNlIHByaXZhY3kgb3Igc2VjdXJpdHkKYnJlYWNoZXMgbWF5IGhh dmUgaGFwcGVuZWQsIGJ1dCBwcmltYXJpbHkgYmVjYXVzZSBhIGJ1c2luZXNzIGhhcyB0byBhc3Nl c3MsCmRvY3VtZW50IGFuZCBkZWNpZGUgb24gdGhlIHJpc2tzIG9mIHdoaWNoIHN5c3RlbXMgZ2V0 IGRhdGEgYWJvdXQgYSB1c2VyIG9mCnRoZWlyIHNpdGVzLiBQcm9maWxpbmcgb2YgdXNlcnMsIG1h ZGUgcG9zc2libGUgYnkgcmVmZXJlcnMgYnkgZGVmYXVsdCwgd2FzCm9uZSBvZiB0aGUgbW90aXZl cyBmb3IgR0RQUiBzbyBpcyByaWdodGx5IHBhcnQgb2YgcmVndWxhdG9ycyBpbnZlc3RpZ2F0aW9u cwpub3csIGJ1dCBJJ20gbm90IHN1cmUgdGhlIHJlZ3VsYXRvcnMgcmVhbGlzZWQgdGhhdCB0aGUg dGVjaG5pY2FsIGZlYXR1cmUgYXQKdGhlIGNlbnRyZSBvZiBpdCBpcyB0aGUgcmVmZXJlciBhbmQg aG93IGJyb2tlbiB0aGUgd2ViIGlzIGZvciBwcml2YWN5LgpUcmFja2luZyBwaXhlbHMgYXJlIGFu IGltYWdlLCBhIGNvb2tpZSBhbmQgcmVmZXJlcnMuLi4gVGhlIGNvb2tpZXMgaGF2ZQpsb25nIGJl ZW4gcGFydCBvZiBkYXRhIHByb3RlY3Rpb24gZGlzY3Vzc2lvbnMgYW5kIGxhd3MsIHlldCB5b3Ug Y2FuIHByb2ZpbGUKc29tZW9uZSB3aXRob3V0IGEgY29va2llIChJUCBhZGRyZXNzKSB5b3UgY2Fu J3QgZG8gaXQgd2l0aG91dCB0aGUgcmVmZXJlcgoodW5sZXNzIGV4cGxpY2l0bHkgYWRkIHRoZSBz YW1lIGZ1bmN0aW9uYWxpdHkgYnkgY29kZSB0byB0aGUgdXJsLCBhdCB3aGljaApwb2ludCBpdCBp cyBhbiBleHBsaWNpdCBhY3QgYW5kIGNhbiBiZSBqdXN0aWZpZWQgYnkgdGhlIGF1dGhvcikuIE1h bnkKcGxhY2VzIHNob3VsZG4ndCBnZXQgYSByZWZlcmVyLCBsaWtlIENETnMuIE1vc3QgQ0ROcyBu ZWVkIHRvIGtub3cgd2hvIHRvCmNoYXJnZSAoQVBJIGtleT8pIG5vdCBhIGZ1bGwgcmVmZXJlci4K CkNoaW5hIGlzIHZlcnkgaW50ZXJlc3RpbmcsIHRoZSBoZWFkbGluZXMgYXJlbid0IG5lY2Vzc2Fy aWx5IGZpbmVzIGZvciBkYXRhCnByb3RlY3Rpb24gdmlvbGF0aW9ucyBidXQgb3ZlciAxMTAwMCBh cnJlc3RzLiBIb3cgbWFueSBvZiB0aG9zZSBhcmUgd2ViCmRldmVsb3BlcnMgb3IgZGlyZWN0b3Jz IG9mIGNvbXBhbmllcyBiZWNhdXNlIG9mIHRoZWlyIHdlYnNpdGU/IEhvdyBtYW55CndpbGwgaXQg YmUgaW4gdGhlIGZ1dHVyZSBhcyByZWd1bGF0b3JzIHJlYWxpc2UgaXQncyBub3QgdGhlIGFkIGNv bXBhbmllcwp0aGF0IHN0ZWFsIHRoaXMgZGF0YSwgYnV0IGl0J3MgZ2l2ZW4gYXdheSBieSB3ZWJz aXRlcyBwcm90ZWN0aW5nIHVzZXJzCnJlZmVyZXJzPwpodHRwczovL2FzaWEubmlra2VpLmNvbS9C dXNpbmVzcy9CdXNpbmVzcy1UcmVuZHMvQ2hpbmEtcy1zdHJpY3QtbmV3LWN5YmVyc2VjdXJpdHkt bGF3LWVuc25hcmVzLUphcGFuZXNlLWNvbXBhbmllcwouCgpVSyBoYXMgY3JpbWluYWwgcHJvc2Vj dXRpb24gb3B0aW9ucyBpbiBpdHMgZGF0YSBwcm90ZWN0aW9uIGxhd3MgYW5kIEkgaG9wZQp0aGF0 IHRob3NlIGluIHRoZSBVSyByZXNwb25zaWJsZSBmb3Iga2VlcGluZyB0cmFja2luZyBvbiB0aGUg TkhTIHdlYnNpdGUKZmFjZSBjcmltaW5hbCBwcm9zZWN1dGlvbiAodGhleSBoYWQgYW1wbGUgd2Fy bmluZyBnaXZlbiBpdCBoaXQgdGhlIG5ld3MgaW4KMjAxMCksIGJ1dCB3aGF0IGlzIG9mdGVuIGFt YXppbmcgaW4gcmFpc2luZyBjb21wbGFpbnRzICh3aGljaCBJJ3ZlIGJlZW4KZG9pbmcgZm9yIHll YXJzIG5vdyByZWxhdGluZyB0byByZWZlcmVyIGxlYWtzKSBpcyBob3cgb2Z0ZW4gSSdtIGFkdmlz ZWQgYnkKY29tcGFuaWVzIHRoZXkgZG9uJ3Qgc2VuZCBwZXJzb25hbCBkYXRhLCBldmVuIHdoZW4g dGhleSBsb2FkIHRyYWNraW5nIG9uCm1lbWJlcnNoaXAgcGFnZXMgb3Igc2ltaWxhciB0aGF0IGdp dmUgYXdheSBkYXRhIHRoYXQgbWlnaHQgcHV0IGxpdmVzIGF0CnJpc2sgaW4gdGhlIHdyb25nIGhh bmRzICh2YXJpb3VzIFVLIHBvbGl0aWNhbCBwYXJ0aWVzIGhhdmUgYSBoaXN0b3J5IG9mCmJlaW5n IHRhcmdldGVkIGJ5IHRlcnJvcmlzbSBhbmQgdGhleSBzZW50IHRoZWlyIG1lbWJlcnNoaXAgbGlz dHMgdG8gYWQKY29tcGFuaWVzIGJ5IGxvYWRpbmcgdHJhY2tpbmcgb24gbWVtYmVycyBvbmx5IGFy ZWFzLCBJJ3ZlIGJlZW4gYWR2aXNlZCBieSBhCm1ham9yIFVLIHBvbGl0aWNhbCBwYXJ0eSB0aGF0 IHRoZXkncmUgdW5kZXIgaW52ZXN0aWdhdGlvbiBmb3IgdHJhY2tpbmcpLgoKRm9yIGFueW9uZSBo YW5kcyBvbiB3aXRoIHByaXZhY3kgaW1wYWN0IGFzc2Vzc21lbnRzLCB5b3UnbGwga25vdyB5b3Ug aGF2ZQp0byBkb2N1bWVudCB3aGljaCBzeXN0ZW1zIGFuZCB0aGlyZCBwYXJ0aWVzIGdldCBwZXJz b25hbCBkYXRhIGFuZCBhIHVzZXIncwpicm93c2luZyBoYWJpdHMgbGlua2VkIHRvIGp1c3QgYW4g SVAgYWRkcmVzcywgbmV2ZXJtaW5kIGNvb2tpZXMsIGlzCnBlcnNvbmFsIGRhdGEgKG1vc3Qgb2Yg dXMgaGF2aW5nIHJlbGF0aXZlbHkgbG9uZyBsaXZlZCBJUCBhZGRyZXNzZXMsIGV2ZW4Kd2hlbiBu b3Qgc3RhdGljLCBsaWtlIHRob3NlIHVuaXF1ZSB0byBvdXIgbW9iaWxlIGRldmljZSBvciBmYW1p bHkKaW50ZXJuZXQpLiBJZiBkZXZlbG9wZXJzIGFyZW4ndCB0aGlua2luZyBhYm91dCByZWZlcmVy cywgdGhleSdyZSBub3QKY29tcGxldGluZyB0aGVpciBwcml2YWN5IGltcGFjdCBhc3Nlc3NtZW50 cyBwcm9wZXJseSBvciBhZHZpc2luZyB0aGVpciBkYXRhCnByb3RlY3Rpb24gb2ZmaWNlci9tYW5h Z2VtZW50IHByb3Blcmx5IGFib3V0IHRoaXJkIHBhcnRpZXMgdGhhdCBtYXkgYmUKYWRkZWQgb3V0 c2lkZSBvZiBEZXYgd29ya2Zsb3dzLiBCeSBub3QgZG9pbmcgdGhpcyB3b3JrIHRoZXkncmUgdW5s aWtlbHkgdG8KYmVpbmcgcHJpdmF0ZSBieSBkZWZhdWx0L2Rlc2lnbi4uLnRoZXkncmUgbGlrZWx5 IGJyZWFjaGluZyBHRFBSIGFuZCBzaW1pbGFyLgoKSSdtIHJlYWxseSBhcHBhbGxlZCBhdCBDaHJp cyBmb3IgdGVhcmluZyBkb3duIHRoaXMgd2FybmluZywgYnV0IGxlc3Mgc28gb2YKTW96aWxsYSBp ZiBpdCdzIGp1c3QgYSBjb3VwbGUgb2YgZ3V5cyB3aG8gdGhpbmsgcHJlc2VudGF0aW9uIGlzIG1v cmUKaW1wb3J0YW50IHRoYW4gcHJpdmFjeSBhbmQgc2VjdXJpdHkuIFdoaWNoIGlzIGl0PyBDYW4g eW91IGhlbHAgZml4IHRoaXMKbWVzcy4gV2hhdGV2ZXIgd2ViIGJyb3dzZXJzIGRvIGFib3V0IHJl ZmVyZXJzLCBhdCBsZWFzdCBtYWtlIGl0IGEgcHJpb3JpdHkKdG8gdGVsbCB3ZWIgZGV2ZWxvcGVy cyBzbyB0aGV5IGNhbiBwcm90ZWN0IHVzZXJzIGluc3RlYWQuCgpSZWdhcmRpbmcgdGhlIHNlY3Vy aXR5IGFzcGVjdCwgcGxlYXNlIGxvb2sgYXQgaG93IG1hbnkgd2Vic2l0ZXMgeW91IHVzZSBpbgp5 b3VyIHBhc3N3b3JkIG1hbmFnZXIgYW5kIHN0YXJ0IHJlc2V0dGluZyB5b3VyIHBhc3N3b3Jkcy4g WW91IG1pZ2h0IGJlCmFtYXplZCBhdCBob3cgbWFueSBhZCBjb21wYW5pZXMgZ2V0IHRva2VucyB0 byB0YWtlIG92ZXIgdXNlciBhY2NvdW50cywgaG93CmxvbmcgbGl2ZWQgdGhleSBhcmUgYW5kIGhv dyBtYW55IGFyZSByZS11c2FiYWxlIGZvciBkYXlzLi4gT25lIGZpbmFuY2UKY29tcGFueSBhZHZp c2VkIG1lIDUlIG9mIHRoZWlyIHJlc2V0IHBhc3N3b3JkIHJlcXVlc3RzIGludm9sdmVkIG11bHRp cGxlCklQcyBhcyB1c2VycyBkaWRuJ3QgY29tcGxldGUgdGhlIGZpcnN0IGF0dGVtcHQgYW5kIGhv cGVmdWxseSBqdXN0IGNoYW5nZWQKZGV2aWNlIG9yIG5ldHdvcmsuIE1lYW53aGlsZSBVUkxzIGFy ZSBvZnRlbiBhIHBsYWNlIG9mIHNlY3VyaXR5IGZhaWxpbmdzCmxpa2UganNlc3Npb25pZCBpbiB0 aGUgVVJMIG9yIGV2ZW4gdXNlcm5hbWVzIGFuZCBwYXNzd29yZHMgZm9yIHN0YXJ0dXBzIHdobwph Y2NpZGVudGFsbHkgdXNlIEdFVCBpbnN0ZWFkIG9mIFBPU1QgZm9yIGEgZm9ybSBvciBqdXN0IHVz ZXJzIHdobyB0eXBlIGEKcGFzc3dvcmQgYW5kIHByZXNzIGVudGVyLiBUaGUgc2hhcmluZyBsaW5r IHByb2JsZW0gaGl0IERyb3Bib3ggcHJldmlvdXNseQp3aGVyZSBpZiB5b3Ugb3BlbmVkIGNvbnRl bnQgaW4gRHJvcGJveCB0aGF0IGluY2x1ZGVkIGEgbGluayB0byBhIHRoaXJkCnBhcnR5LCB0aGF0 IHRoaXJkIHBhcnR5IHdhcyBzZW50IHRoZSByZWZlcmVyICh0aGUgc2hhcmUgbGluaykKaHR0cHM6 Ly93d3cuZ3JhaGFtY2x1bGV5LmNvbS9kcm9wYm94LXZ1bG5lcmFiaWxpdHktcHJpdmFjeS8KRHJv cGJveCBoYXZlIGhvcGVmdWxseSBmaXhlZCB0aGlzLCBidXQgd2hhdCB3aWxsIHRoZSBuZXh0IHBv cHVsYXIgdXNlcgpjb250ZW50IHNpdGUgZG8/IFdlIGtlZXAgcmVwZWF0aW5nIHRoZSBzYW1lIG1p c3Rha2VzIHdoZW4gaXQgY29tZXMgdG8KcmVmZXJlciBhbmQgYSB2ZXJ5IG9idmlvdXMgcmVhc29u IGZvciByZXBlYXRpbmcgYSBtaXN0YWtlIGluIGEgY29tbXVuaXR5IGlzCmEgbGFjayBvZiBlZHVj YXRpb24gYWJvdXQgaG93IGVhc3kgaXQgaXMgdG8gbWFrZSB0aGF0IG1pc3Rha2UuCgpSZWdhcmRz Ck1hcmsKCgoKCi0tLS0tLS0tLS0gRm9yd2FyZGVkIG1lc3NhZ2UgLS0tLS0tLS0tCkZyb206IE1h cmsgUmljaGFyZHMgPG1hcmsuYWxhbi5yaWNoYXJkc0BnbWFpbC5jb20+CkRhdGU6IEZyaSwgNSBP Y3QgMjAxOCwgMTM6MjUKU3ViamVjdDogUmU6IEVkaXRzIHRvIDxhPiBhbmQgPGltZz4gcGFnZXMg b24gTUROClRvOiA8aW5jbHVzaW9uQG1vemlsbGEuY29tPiwgQ2hyaXMgTWlsbHMgPGNtaWxsc0Bt b3ppbGxhLmNvbT4KQ2M6IEdlb2ZmIFdoaXRlIDxnZW9mZkBnd2hpdGUuaW5mbz4sIDxjYXNld29y a0BpY28ub3JnLnVrPiwgQ3VzdG9tZXIKQ29udGFjdCBDZW50cmUgPGNvbnN1bWVyLnF1ZXJpZXNA ZmNhLm9yZy51az4KCgpDaHJpcywKCldoYXQgaXMgd3Jvbmcgd2l0aCB0aGUgYWN0aW9uIG9mIHRy eWluZyB0byBwcm90ZWN0IHVzZXJzPwpXaHkgZG8geW91IHBlcmNlaXZlIHRoYXQgYWN0aW9uIGFz IHdyb25nPwoKSSd2ZSBleHBsYWluZWQgbXkgYXR0aXR1ZGUgYW5kIHRoZSBjb250ZW50LCBoYXMg YWx3YXlzIGJlZW4gdG8gcHJvdGVjdApwZW9wbGUuIFRoZSBjb250ZW50IGhhcyBrZXB0IHRvIHRo YXQgbmFycmF0aXZlIGFuZCBJIGRvbid0IG5lZWQgdG8gd3JpdGUgYW4KZXNzYXkgdG8ganVzdGlm eSBhbnl0aGluZyBtb3JlIHRoYW4gaXMgb2J2aW91cyBmcm9tIHdoYXQgSSd2ZSB3cml0dGVuLiBZ b3VyCnF1ZXN0aW9ucyBhcmUgbm90IGEgcmVxdWlyZW1lbnQgZm9yIG90aGVyIGNvbnRyaWJ1dG9y cyBhbmQgSSdtIG5vdCBzdXJlCndoYXQgeW91IGFyZSB0cnlpbmcgdG8gbW9kZXJhdGUgYnkgbWUg YW5zd2VyaW5nIHRoZW0/IERvIHlvdSB3YW50IHRvCm1vZGVyYXRlIHdoYXQga2luZHMgb2YgcGVv cGxlIGNhbiBjb250cmlidXRlIG9yIGp1c3Qgd2hldGhlciB0aGVpcgpjb250cmlidXRpb25zIGFy ZSBhcHByb3ByaWF0ZT8KCklmIE1vemlsbGEncyBwb3NpdGlvbiBpcyB0aGF0IGFueW9uZSB3aG8g dHVybnMgdG8gcmVndWxhdG9ycyBhbmQKam91cm5hbGlzdHMgdG8gcmFpc2UgYXdhcmVuZXNzIG9m IGFuIGlzc3VlIHNob3VsZCBiZSBiYW5uZWQgZnJvbQp2b2x1bnRlZXJpbmcgdGhlaXIgdGltZSwg dGhlbiBJIHRoaW5rIHRoZSByZWd1bGF0b3JzIHNob3VsZCBpbnZlc3RpZ2F0ZQp3aGV0aGVyIHRo aXMgYnJlYWNoZXMgbGF3cyBmb3IgcHJvdGVjdGluZyBkaXNjbG9zdXJlIGluIHRoZSBwdWJsaWMK aW50ZXJlc3QuIE9yZ2FuaXNhdGlvbnMgYXJlIG5vdCBzdXBwb3NlZCB0byBwdW5pc2ggaW5kaXZp ZHVhbHMgZm9yIHRoZSBhY3QKb2YgaW52b2x2aW5nIHJlZ3VsYXRvcnMgYW5kIHlvdXIganVzdGlm aWNhdGlvbiBmb3IgYmFubmluZyBtZSBhcHBlYXJzIHRvIGJlCmJhc2VkIGluIHBhcnQgb24gdGhl IGNsYWltIEkndmUgInRocmVhdGVuZWQiIGJ5IGludm9sdmluZyB0aGVtLiBTb3JyeSwgYnV0Cndo YXRldmVyIHRocmVhdCB5b3UgcGVyY2VpdmUsIGl0J3MganVzdGlmaWVkLiBMaWtlIHdoZW4gc29t ZW9uZSBjYWxscyB0aGUKcG9saWNlLCBpZiB0aGV5IHNwb3Qgc29tZXRoaW5nIHdyb25nIGFuZCB0 aGV5IGRvbid0IGhhdmUgY29udHJvbCBvdmVyIGl0Li4uClRoZXkgaW52b2x2ZSBhdXRob3JpdGll cyB0aGF0IGNhbiBwcm90ZWN0IG90aGVycyBvciByZWFjdC4gWW91IGRvbid0IGFwcGVhcgp0byBy ZWNvZ25pc2UgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBiZWluZyBjaGFsbGVuZ2VkIGFuZCBiZWlu Zwp0aHJlYXRlbmVkLi4uIEl0J3Mgbm90IG5pY2UgdG8gYmUgb24gdGhlIHJlY2VpdmluZyBlbmQs IGJ1dCB0aGF0IGRvZXNuJ3QKanVzdGlmeSBwZW5hbGlzaW5nIHRoZSBwZXJzb24gd2hvIGNoYWxs ZW5nZWQgeW91LgoKUmVnYXJkaW5nIHlvdXIgbW9kZXJhdGluZy4uCk11bHRpcGxlIHBlb3BsZSBo YXZlIHRyaWVkIHRvIHB1dCB0aGUgd2FybmluZyBvbiB0aGUgd2ViIGRvY3MgYW5kIHlvdSd2ZQp0 b3JuIGl0IGRvd24uIE1vemlsbGEgaXMgc3VwcG9zZWQgdG8gYmUgYSBjb21tdW5pdHkgZHJpdmVu IHByb2plY3QsIHlldAp5b3UndmUgc2h1bm5lZCB0aGUgY29tbXVuaXR5LiBEbyB0aGluayBJIG1p c2xlZCB0aG9zZSB1c2VycyBvciBkbyB5b3UgdGhpbmsKSSBleHBsYWluZWQgdGhlIHNpdHVhdGlv biBob25lc3RseSBhbmQgdGhleSB3ZXJlIGFwcGFsbGVkIHRvbz8KCkxldCdzIGJlIGNsZWFyLi4u CgpJZiBhIHRlYWNoZXIgc2hvd3Mga2lkcyBob3cgdG8gdXNlIHNjaXNzb3JzIGFuZCBkb2Vzbid0 IHRlbGwgdGhlbSB0aGUKZGFuZ2VycyBvZiBzaGFycCBvYmplY3RzLCBub3QgdG8gcnVuIHdpdGgg dGhlbSwgaG93IHRvIGhvbGQgdGhlbSBzYWZlbHksCmV0YyB1bnRpbCBhbiBvcHRpb25hbCBmdXJ0 aGVyIGxlc3NvbiwgSSdkIGhvcGUgdGhleSBjb3VsZCBiZSBqYWlsZWQgaWYgbWFkZQphd2FyZSBv ZiB0aGUgZXJyb3Igb2YgdGhlaXIgd2F5cyBhbmQgdG9sZCBvZiBudW1lcm91cyBpbmNpZGVudHMg YWxyZWFkeSwKdGhleSBjb250aW51ZSByZWdhcmRsZXNzLgoKWW91IHRvIG1lIGFyZSBsaWtlIHRo YXQgdGVhY2hlci4uLiBZb3UgYXJlIHRlYWNoaW5nIHdlYiBkZXZlbG9wZXJzIGhvdyB0bwpjcmVh dGUgd2Vic2l0ZXMsIHdpdGhvdXQgZXhwbGFpbmluZyB0aGF0IGJ5IGRlZmF1bHQgdGhleSB3aWxs IGJyZWFrIHRoZSBsYXcKaW4gbWFueSBjb3VudHJpZXMgYW5kIG1vcmUgaW1wb3J0YW50bHksIHRo ZXknbGwgYmUgYnJlYWNoaW5nIHVzZXIgcHJpdmFjeQp3aGljaCBpcyBhIGh1bWFuIHJpZ2h0IGJl eW9uZCB3aGV0aGVyIGxvY2FsIGxhd3MgaGF2ZSBjYXVnaHQgdXAuCgpZb3VyIGFjdGlvbnMgYW5k IGF0dGl0dWRlIHN1Z2dlc3QgeW91IGNhbm5vdCBiZSByZWFzb25lZCB3aXRoLiBZb3UgcmVmdXNl CnRvIGFja25vd2xlZGdlIHRoZSBjb25mbGljdCB3aXRoIHNvY2lhbCBub3JtcyBhbmQgdGhhdCBu byByZWFzb25hYmxlIHBlcnNvbgpjYW4gYWNjZXB0IHlvdXIgZGVsZXRpb24gb2YgdGhlIHdhcm5p bmcuIE5vYm9keSBpbiB0aGVpciByaWdodCBtaW5kIHRha2VzCmRvd24gYSB3YXJuaW5nIHNpZ24g d2hlbiB0aGVyZSBpcyBzaWduaWZpY2FudCBldmlkZW5jZSB0aGF0IHBlb3BsZSBuZWVkIGl0CmFu ZCBhcmUgc3VmZmVyaW5nLgoKQmlsbGlvbnMgb2YgcGVvcGxlIGFyZSBiZWluZyBzdXJ2ZWlsbGVk IGJ5IHRoZSBhZCBpbmR1c3RyeSwgdGhlcmUgaXMgYW4KaW5jcmVkaWJsZSBpbnZhc2lvbiBvZiBw cml2YWN5IGF0IHRoZSBjZW50cmUgb2YgdGhlIFJlZmVyZXIgbGVha2luZyB1c2Vycwp3ZWIgaGlz dG9yeS4gV2hhdGV2ZXIgcGVvcGxlIGNhbXBhaWduIGFib3V0IGNoYW5naW5nIHRoZSB3ZWIsIE1v emlsbGEgYXMgYW4Kb3JnYW5pc2F0aW9uIHRoYXQgbWFrZXMgYSB3ZWIgYnJvd3NlciBhbmQgb2Zm ZXJzIGRvY3VtZW50YXRpb24gZm9yIHdlYgpkZXZlbG9wZXJzLCBzaG91bGQgbm90IGJlIGRlbGV0 aW5nIHdhcm5pbmdzIG9mIHRoaXMgYW5kIGl0IHB1dHMgaW50bwpxdWVzdGlvbiBNb3ppbGxhJ3Mg cHVycG9zZSwgYXMgaXQncyBhIG5vdCBmb3IgcHJvZml0LCBvYmxpZ2VkIHRvIGFjdCBmb3IKdGhl IHB1YmxpYyBiZW5lZml0LCB0aGlzIGFwcGVhcnMgdG8gYmUgYW4gaW50ZW50IHRvIHB1dCBwZW9w bGUgaW4gaGFybXMgd2F5LgoKQWdhaW4sIHBsZWFzZSB0YWtlIGEgc3RlcCBiYWNrIGFuZCBjb25z aWRlciB0aGlzIGZyb20gdGhlIHBvc2l0aW9uIG9mCnNvbWVvbmUgd2hvIGhhcyByZWFsaXNlZCBo b3cgc2lnbmlmaWNhbnQgdGhlIGhhcm0gb2YgdGhlIHJlZmVyZXIgaXMsIHRvb2sKdGhlIHRpbWUg dG8gYWRkIGEgd2FybmluZyB0byBwcm90ZWN0IG90aGVycyBhbmQgaGFkIGl0IHRha2VuIGRvd24u CgpSZWdhcmRzCk1hcmsKCgoKCk9uIFRodSwgMjcgU2VwIDIwMTggYXQgMTI6MTMsIENocmlzIE1p bGxzIDxjbWlsbHNAbW96aWxsYS5jb20+IHdyb3RlOgoKPiBIaSBNYXJrLAo+Cj4gSSBnZXQgeW91 ciBmaXJzdCBwb2ludCBoZXJlLiBUaGUgdHJvdWJsZSBob3dldmVyIHdpdGggc3VjaCBzaXR1YXRp b25zIGlzCj4gdGhhdCB0aGUgaW50ZW50IGRvZXNu4oCZdCByZWFsbHkgbWF0dGVyIGlmIGhvdyBv dGhlcnMgcGVyY2VpdmUgeW91ciBhY3Rpb25zCj4gY29tZXMgb3V0IHdyb25nbHkvYmFkbHkuCj4K PiBZZXMsIHdlIGFyZSBhIGNvbW11bml0eSBzaXRlLCBhbmQgd2Ugc3BlbmQgYSBsb3Qgb2YgdGlt ZSBtZW50b3JpbmcKPiBjb21tdW5pdHkgbWVtYmVycywgaGVscGluZyB0aGVtIGdldCBjb250ZW50 IHVwIG9ubGluZSwgc2V0dGxpbmcgZGlzcHV0ZXMsCj4gZXRjLiBCdXQgb25lIGtleSBmZWF0dXJl IG9mIGEgY29tbXVuaXR5IGlzIHRoYXQgdGhlcmUgYXJlIG1vZGVyYXRvcnMsIGFuZAo+IGlmIGEg bW9kZXJhdG9yIGFza3MgeW91IHRvIHN0b3AgZG9pbmcgc29tZXRoaW5nLCB0aGV5IHByb2JhYmx5 IGhhdmUgYSBnb29kCj4gcmVhc29uIGZvciBkb2luZyBzby4gRnJvbSB0aGUgbW9kZXJhdG9y4oCZ cyBwb2ludCBvZiB2aWV3LCBpdCBpcyBhIHJlYWwgcmVkCj4gZmxhZyBpZiBhIG5ldyBjb21tdW5p dHkgbWVtYmVyIGlzIGFza2VkIHRvIHN0b3AgZG9pbmcgc29tZXRoaW5nLCBhbmQgdGhleQo+IHJl c3BvbmQgYnkgaWdub3JpbmcgeW91IGFuZCBzZW5kaW5nIHlvdSBsb25nLCBhZ2dyZXNzaXZlIG1h aWxzIHRoYXQgYXJlCj4gcGVyY2VpdmVkIGFzIHNob3V0eSBhbmQgdGhyZWF0ZW5pbmcuIEkgYmFu bmVkIHlvdSBiZWNhdXNlIEkgaG9uZXN0bHkgZGlkbuKAmXQKPiBmZWVsIHRoZXJlIHdhcyBhbnkg b3RoZXIgd2F5IGZvcndhcmQuIEkgZGlkbuKAmXQgYmVsaWV2ZSB0aGF0IHJlYXNvbmluZyB3aXRo Cj4geW91IHdvdWxkIHdvcmsgYmVjYXVzZSB5b3Ugc2VlbWVkIHVucmVhc29uYWJsZSwgaW4gdGhl IGxpdGVyYWwgc2Vuc2Ugb2YgdGhlCj4gd29yZC4KPgo+IEkgYWxzbyBhY2tub3dsZWRnZSB0aGF0 IHlvdSBkaWRu4oCZdCBkaXJlY3RseSB0aHJlYXRlbiBhbnlvbmUsIGJ1dCBzZXZlcmFsCj4gdGlt ZXMgeW91IHVzZWQgcHJvc2UgYWxvbmcgdGltZSBsaW5lcyBvZiDigJxhbGwgb2YgdGhlc2UgYmFk IHRoaW5ncyB3aWxsCj4gYmVmYWxsIHBlb3BsZSB3aG8gcmVhZCB5b3VyIHBhZ2VzIGlmIEkgZG9u 4oCZdCBnZXQgbXkgd2F54oCdLCB3aGljaCBkb2VzIGNvbWUKPiBhY3Jvc3MgYXMgdGhyZWF0ZW5p bmcsIGFsYmVpdCBpbmRpcmVjdGx5LiBBbmQgY2PigJlpbmcgcmVndWxhdG9yeSBib2RpZXMgYW5k Cj4gam91cm5hbGlzdHMgb24gdGhlIG1haWwgc2VydmVzIHRvIG1ha2UgdXMgZmVlbCBidWxsaWVk LCBsaWtlIGEgd2l0Y2ggaHVudC4KPiBBZ2FpbiwgdGhpcyBpc27igJl0IGdvaW5nIHRvIG1ha2Ug dXMgbW9yZSBsaWtlbHkgdG8gbGlzdGVuIHRvIHlvdXIgcG9pbnQgb2YKPiB2aWV3Lgo+Cj4gQW55 d2F5LCB3ZSBjb3VsZCBhcmd1ZSBhYm91dCB0aGUgbWludXRpYWUgb2Ygb3VyIGludGVyYWN0aW9u cyBhbGwgZGF5Cj4gbG9uZywgYnV0IGl0IHdvdWxkIHByb2JhYmx5IGJlIG1vcmUgcHJvZHVjdGl2 ZSB0byBkcmF3IGEgbGluZSBpbiB0aGUgc2FuZAo+IGFuZCBkbyBiZXR0ZXIgZ29pbmcgZm9yd2Fy ZC4KPgo+IC0tLS0tLQo+Cj4gSSBub3cgYmVsaWV2ZSB3ZSBjYW4gbWFrZSBzb21lIHByb2dyZXNz IOKAlCBpbiB0aGlzIGxhc3QgbWFpbCB5b3UgaGF2ZSBzaG93bgo+IHNvbWUgZW1wYXRoeSB0b3dh cmRzIG91ciBzaXR1YXRpb24uIEnigJlkIGxpa2UgdG8gYWZmb3JkIHlvdSB0aGUgc2FtZSBnb29k Cj4gdHJlYXRtZW50LCBhbmQgc2F5IHNvcnJ5IGlmIG91ciBhY3Rpb25zIGNhbWUgYWNyb3NzIGFz IGFnZ3Jlc3NpdmUuIEkgYWxzbwo+IGJlbGlldmUgdGhhdCB5b3UgaGF2ZSBnb29kIGludGVudGlv bnMg4oCUIHlvdSB3YW50IHRvIGNvbnRyaWJ1dGUgdG8gYSBtb3JlCj4gc2VjdXJlLCBwcml2YWN5 LWF3YXJlIHdlYiwgYW5kIEkgdGhpbmsgeW91IHNob3VsZCBiZSBhcHBsYXVkZWQgZm9yIHRoYXQu IEkKPiBhZ3JlZSB3aXRoIG1hbnkgb2YgeW91ciBwb2ludHM7IEnigJl2ZSBiZWVuIGEgd2ViIGRl dmVsb3BlciBhbmQgdGVjaCB3cml0ZXIKPiBmb3IgMjAgeWVhcnMsIGFuZCB1bmRlcnN0YW5kIG1h bnkgb2YgdGhlIGlzc3VlcyB5b3UgaGlnaGxpZ2h0IGhlcmUuIEkgdGhpbmsKPiB3ZSBib3RoIHdh bnQgYSBsb3Qgb2YgdGhlIHNhbWUgdGhpbmdzLCBhbmQgY2FuIGhlbHAgZWFjaCBvdGhlciwgcHJv dmlkZWQgd2UKPiBjYW4gY29tcHJvbWlzZSB0byBmaW5kIGEgbWlkZGxlIGdyb3VuZCB0aGF0IG1h a2VzIHlvdSBoYXBweSBidXQgYWxzbyB3b3Jrcwo+IHdpdGggb3VyIGNvbnRlbnQgc3RyYXRlZ3ku Cj4KPiBJ4oCYbSBoYXBweSB0byB1bmJhbiB5b3UgaWYgSSBjYW4gZ2V0IHlvdXIgYWdyZWVtZW50 IHRoYXQgeW914oCZbGwgbGlzdGVuIHRvCj4gb3VyIG1vZGVyYXRvcnMgYW5kIHJlc3BlY3Qgb3Vy IHdpc2hlcywgYW5kIGVuZ2FnZSBpbiBjb25zdHJ1Y3RpdmUKPiBkaXNjdXNzaW9uIGFib3V0IHBy b3NwZWN0aXZlIGNvbnRlbnQuCj4KPiBJ4oCZZCBhbHNvIGxpa2UgeW91IHRvIGFuc3dlciBhIHF1 ZXN0aW9uIGZvciBtZSDigJQgd2hhdCB3b3VsZCB5b3UgbGlrZSB0byBzZWUKPiBpbiB0ZXJtcyBv ZiBNRE4gY29udGVudCBnb2luZyBmb3J3YXJkPyBHaXZlIG1lIGEgaGlnaCBsZXZlbCBkZXNjcmlw dGlvbiwKPiBub3QgdG9vIG11Y2ggZGV0YWlsIGF0IHRoaXMgc3RhZ2UuCj4KPiBUaGluZ3Mgd2Ug Y2FuIGRvOgo+Cj4gKiBBZGQgbW9yZSBjb250ZW50IGFib3V0IHNlY3VyaXR5L3ByaXZhY3kgYmVz dCBwcmFjdGljZXMgcmVsYXRlZCB0byBmcm9udAo+IGVuZCB3ZWIgZGV2LiBXZSBhcmUgYSB3ZWIg ZGV2ZWxvcG1lbnQgdHV0b3JpYWwgc2l0ZSwgYW5kIHRoaXMgaXMgZGVmaW5pdGVseQo+IGluIG91 ciByZW1pdC4KPiAqIEFkZCB3YXJuaW5ncyBpbiBhIHRhc3RlZnVsIHdheSB0aGF0IHdvcmtzIGZv ciBvdXIgY29udGVudCBzdHJhdGVneS4gV2UKPiBoYXZlIGEgcGxhbiBmb3IgdGhlIG5lYXIgZnV0 dXJlIHRvIGFkZCBhIGR5bmFtaWNhbGx5LWNvbnN0cnVjdGVkIGJhbm5lciBhdAo+IHRoZSB0b3Ag b2YgcmVmZXJlbmNlIHBhZ2VzIHRoYXQgaGlnaGxpZ2h0cyBjb25jZXJucyB3aXRoIHRoYXQgd2Vi IGZlYXR1cmUsCj4gZS5nLiBwcml2YWN5LCBzZWN1cml0eSwgYWNjZXNzaWJpbGl0eSwgcGVyZm9y bWFuY2XigKYKPiAqIEFkZCBhZGRpdGlvbmFsIFNlY3VyaXR5IGFuZCBwcml2YWN5IGNvbmNlcm5z IHNlY3Rpb25zIHRvIG90aGVyIHBhZ2VzCj4gdGhhdCBuZWVkIGl0LiBJIGFtIHZlcnkgaW50ZXJl c3RlZCBpbiBwcm92aWRpbmcgc3VjaCBpbmZvcm1hdGlvbi4KPgo+IFRoaW5ncyB3ZSBjYW7igJl0 IGRvOgo+Cj4gKiBQcm92aWRlIGV4dGVuc2l2ZSByZWd1bGF0b3J5L3BvbGljeS9sZWdhbCBhZHZp Y2UuIFRoaXMgaXMgYSBtaW5lZmllbGQKPiB0aGF0IHdlIGRvIG5vdCBoYXZlIHRoZSB0aW1lIG9y IGtub3dsZWRnZSB0byB3YWxrIHRocm91Z2guCj4gKiBDaGFuZ2UgdGhlIHdlYiBwbGF0Zm9ybS4g SSBhbSBub3QgZ29pbmcgdG8sIGZvciBleGFtcGxlLCBoZWxwIHdpdGggYQo+IGNhbXBhaWduIGlu c2lkZSBNb3ppbGxhIHRvIGdldCByaWQgb2YgdGhlIFJlZmVycmVyIGhlYWRlciwgb3IgbWFrZSBp dCBsZWFrCj4gbm8gZGF0YSBieSBkZWZhdWx0LiBJZiBNb3ppbGxhIGRpZCB0aGF0LCBsb3RzIG9m IGh1Z2Ugc2l0ZXMgdGhhdCByZWx5IG9uCj4gdHJhY2tpbmcsIGV0Yy4gZm9yIHRoZWlyIGJ1c2lu ZXNzIG1vZGVsIHdvdWxkIGJsb2NrIEZpcmVmb3gsIHRoZW4gd2XigJlkIGxvc2UKPiBvdXIgbWFy a2V0IHNoYXJlIGFuZCB0aGVyZeKAmWQgYmUgbm8gRmlyZWZveCBhdCBhbGwuIFN1Y2ggZGlzY3Vz c2lvbnMgd291bGQKPiBoYXZlIHRvIHN0YXJ0IG9uIGEgVzNDIGxldmVsLiBJdOKAmXMgdGhlIHVn bHkgdHJ1dGguIEkgaGF0ZSBpdCBhcyBtdWNoIGFzIHlvdQo+IGRvLCBiZWxpZXZlIG1lLgo+ICog QWRkIGxvdHMgb2YgcmFuZG9tIHJlZCBiYW5uZXJzIGV2ZXJ5d2hlcmUuIElmIHdlIGRpZCB0aGlz IGZvciBldmVyeQo+IGRpZmZlcmVudCBwZXJzb24gd2hvIGNhbWUgYWxvbmcgYW5kIHdhbnRlZCBy ZWQgYmFubmVycyB0byBzdXBwb3J0IHRoZWlyCj4gY2hvc2VuIGNhdXNlLCBNRE4gd291bGQgYmUg YSBjb21wbGV0ZSBtZXNzLCBhbmQgbm8tb25lIHdvdWxkIHRha2UgaXQKPiBzZXJpb3VzbHkuIFdl IGhhdmUgbG90cyBvZiBldmlkZW5jZSB0byBzdXBwb3J0IHRoZSBub3Rpb24gdGhhdCBzY2FyeQo+ IGJhbm5lcnMgZG9u4oCZdCByZWFsbHkgbWFrZSBtdWNoIGRpZmZlcmVudCBhdCBhbGwg4oCUIGVz dGFibGlzaGVkIHdlYiBkZXZzIHRlbmQKPiB0byBqdW1wIGFyb3VuZCBhbmQgdXNlIHNwZWNpZmlj IGl0ZW1zIGluIHJlZmVyZW5jZSBwYWdlcywgc3VjaCBhcyB0aGUgY29kZQo+IGV4YW1wbGUsIG9y IHRoZSBjb21wYXQgZGF0YS4gVGhleSB0ZW5kIHRvIGlnbm9yZSBzdWNoIGJhbm5lcnMuIEJlZ2lu bmVycyBvbgo+IHRoZSBvdGhlciBoYW5kIGFyZSBtb3JlIGxpa2VseSB0byByZWFkIHRoZSBXaG9s ZSBwYWdlIGJ1dCBwcm9iYWJseSB3b27igJl0Cj4gcmVhbGx5IGdldCBpdCBvciB3aHkgaXTigJlz IGltcG9ydGFudCwgYW5kIGJlIHB1dCBvZmYgYnkgaXQuIFRoZXkgbmVlZCB0bwo+IGtub3cgd2hh dCBhbiA8YT4gZWxlbWVudCBpcyBmaXJzdCwgYmVmb3JlIGJlaW5nIGJvbWJhcmRlZCB3aXRoIHNj YXJ5Cj4gd2FybmluZ3MuIFdlIG5lZWQgYSBkaWZmZXJlbnQgYXBwcm9hY2guCj4KPiBCZXN0IHJl Z2FyZHMsCj4KPiAtLS0KPgo+IENocmlzIE1pbGxzCj4gTUROIGNvbnRlbnQgbGVhZCAmIHdyaXRl cnMnIHRlYW0gbWFuYWdlcgo+IE1ETiBXZWIgRG9jcwo+IE1vemlsbGEKPiBAY2hyaXNkYXZpZG1p bGxzCj4KPiBPbiBTZXAgMjYsIDIwMTgsIGF0IDk6MzUgUE0sIE1hcmsgUmljaGFyZHMgPG1hcmsu YWxhbi5yaWNoYXJkc0BnbWFpbC5jb20+Cj4gd3JvdGU6Cj4KPiBDaHJpcywKPgo+IFlvdSdyZSBt aXhpbmcgdXAgcHJvdGVzdCB3aXRoIGluYXBwcm9wcmlhdGUgYWdncmVzc2l2ZSBiZWhhdmlvdXIu Cj4KPiBUaGUgdHdvIGFyZSBkaWZmZXJlbnQgYW5kIHdoaWxzdCBwcm90ZXN0IGlzIGFnZ3Jlc3Np dmUsIGl0IGlzIGEgd2FycmFudGVkCj4gZm9ybSBvZiBleHByZXNzaW9uLCB0eXBpY2FsbHkgcHJv dGVjdGVkIGJ5IGxhdy4gSSBoYXZlIG5vdCBleHByZXNzZWQgYW55Cj4gYWdncmVzc2lvbiB0aGF0 IHdvdWxkIHNlZWsgdG8gaGFybSB5b3UuIFByb3Rlc3QgaXMgbm90IGFuIGVuam95YWJsZQo+IGV4 cGVyaWVuY2UgdG8gYmUgb24gdGhlIHJlY2VpdmluZyBzaWRlIG9mLCBzb3JyeSB0byB5b3UgYW5k IFdpbGwgZm9yIHRoaXMuCj4gSXQgaXMgbm90IGVuam95YWJsZSBmb3IgbWUgdG8gZmVlbCB0aGlz IGlzIGEgbmVjZXNzYXJ5IGFjdCBhbmQgeW91IGVuZ2FnZWQKPiBpbiBzdGFydGluZyBhIHByb3Rl c3QgYWdhaW5zdCBteSBhZGRpdGlvbiBvZiB0aGUgd2FybmluZywgc28gSSdtIGd1ZXNzaW5nCj4g d2UgcHJvYmFibHkgc2hhcmUgc29tZSAgc2ltaWxhciBmZWVsaW5ncyBhYm91dCB0aGlzIHNpdHVh dGlvbiBhbmQgZ2l2ZW4gYQo+IHBvc2l0aW9uIHJldmVyc2FsIG1heWJlIEkgd291bGQgaGF2ZSBi bG9ja2VkIHlvdS4KPgo+IEkndmUgYmVlbiBhY3RpdmUgb24gdGhlIHByb2JsZW0gb2YgUmVmZXJl cnMgb24gYW5kIG9mZiBmb3IgdGhyZWUgeWVhcnMsCj4gSSdtIG5vdCBzdG9wcGluZyB0b2RheS4g SSd2ZSBzZWVuIGVub3VnaCBkYXRhIGxvc3QgdG8gdGhpcmQgcGFydGllcyBhbmQgbm90Cj4ganVz dCByZXNldCBwYXNzd29yZCBsaW5rcywgYnV0IHNlc3Npb24gbG9naW4gdG9rZW5zIHRoYXQgZXhw aXJlZCBhZnRlciBhCj4geWVhciBhbmQgdXNlcm5hbWVzIGFuZCBwYXNzd29yZHMgdXNlZCBpbiBm b3JtIEdFVCByZXF1ZXN0cyAoZGVmYXVsdAo+IGJlaGF2aW91ciBvZiBhIGZvcm0gaXMgYSBHRVQg YW5kIG5vYm9keSBzaG91bGQgdXNlIHRoaXMsIGFub3RoZXIgcHJvYmxlbQo+IHdpdGggYnJvd3Nl cnMgZnJvbSByZXRhaW5pbmcgMTk5MHMgZGVzaWduLCBidXQgaWYgYSBzaXRlIHVzZXMgSmF2YVNj cmlwdCB0bwo+IHByb2Nlc3MgdGhlIGZvcm0gdGhlIERldiBjYW4gc3dhcCB0byBhbiBBamF4IHBv c3QsIGJ1dCBpZiB0aGUgZGV2ZWxvcGVyCj4gaXNuJ3QgZGVmZW5zaXZlIGluIHNldHRpbmcgdGhl IG1ldGhvZCBhbnl3YXkgdG8gcG9zdCBvciBwdXQsIHRoZW4gd2hlbiB0aGUKPiBzY3JpcHQgZmFp bHMgdG8gbG9hZCBpbiB0aW1lIG9yIGJlY2F1c2Ugb2YgYSBuZXR3b3JrIGZhaWx1cmUgKHdoaWNo IGlzbid0Cj4gdW5saWtlbHkgb24gbW9iaWxlcykgdGhlbiB0aGUgYnJvd3NlciB3aWxsIGJ5IGRl ZmF1bHQgcGVyZm9ybSBhIEdFVCBhbmQKPiBsZWFrIHRoZSB1c2VybmFtZSBhbmQgcGFzc3dvcmQg dG8gdGhpcmQgcGFydGllcyB0cmFja2luZyB0aGUgc2FtZSBwYWdlLi4uCj4gSGFkIHRoZSBzY3Jp cHQgbG9hZGVkIGl0IHdvdWxkIGhhdmUgb3ZlcndyaXR0ZW4gdGhlIGJlaGF2aW91ci4uIHRoaXMg aXMKPiBtb3JlIGNvbW1vbiB0aGF0IHlvdSBtaWdodCBoYXZlIHRob3VnaHQuIEl0J3Mgbm90IGp1 c3Qgc2NyaXB0cyBub3QgbG9hZGluZwo+IGVpdGhlciwgaWYgdGhlIHNjcmlwdCBoaXRzIGFuIGV4 Y2VwdGlvbiBiZWZvcmUgY2hhbmdpbmcgdGhlIGRlZmF1bHQKPiBiZWhhdmlvdXIgb2YgdGhlIGZv cm0sIHRoZSBmb3JtIHdpbGwgcmVtYWluIGluIHRoZSBHRVQgZGVmYXVsdCwgc28gaWYgdGhlCj4g Zm9ybSB2YWxpZGF0aW9uIGxvZ2ljIGhpdHMgc29tZXRoaW5nIHVuZXhwZWN0ZWQsIGl0IG1pZ2h0 IG5vdCBnZXQgYXJvdW5kIHRvCj4gY2hhbmdpbmcgdGhlIHN1Ym1pc3Npb24gYmVoYXZpb3VyKS4K Pgo+IFBsZWFzZSBkb24ndCBmaWdodCB0byBoaWRlIHRoaXMgd2FybmluZyBhcyBhIGZvb3Rub3Rl IGRldmVsb3BlcnMgbWlnaHQKPiBmaW5kLiBJJ20gbm90IHRoZSBvbmx5IG9uZSB3aG8gY2FyZXMg YWJvdXQgdGhpcyBhbmQgSSBob3BlIG90aGVycyBwcm90ZXN0Cj4gdG9vIGFib3V0IE1vemlsbGEg cmVtb3ZpbmcgdGhpcyB3YXJuaW5nLiBJIGFtIGxpa2VseSBvbmUgb2YgdGhlIG1pbm9yaXR5IG9m Cj4gZGV2ZWxvcGVycyB3aG8gZ29lcyBvdXQgb2YgdGhlaXIgd2F5IHRvIHJlc2VhcmNoIHRoaXMg dG9waWMgYW5kIEkgd291bGQKPiBlbmNvdXJhZ2UgeW91IHRvIHRyeSBzb21lIHJlc2VhcmNoLgo+ Cj4gTWF5aGUgdXNlIHRoZSB3ZWIgYW5kIGNoZWNrIHdoYXQgcmVmZXJlcnMgeW91IGNhbiBmaW5k IGxlYWtlZCBhbmQgdG8gd2hvbS4KPiBZb3UgY2FuIHByb2JhYmx5IHR1cm4gb24gaGFyIGRhdGEg bG9nZ2luZyBpbiBGaXJlZm94LCBjaHVjayBpdCBpbnRvIGEgSlNPTgo+IGZpbGUgb3ZlciBhIGZl dyBtb250aHMgYW5kIHRoZW4gcGFyc2UgdGhhdCBpbnRvIGEgZGF0YWJhc2UsIG1heWJlIEVsYXN0 aWMKPiBTZWFyY2ggYW5kIHNlYXJjaCBmb3Igd2hvIGdvdCB5b3VyIGVtYWlsLCB3aG8ga25vd3Mg d2hpY2ggd2Vic2l0ZXMgeW91Cj4gdmlzaXRlZCwgZGlkIGFueW9uZSBnZXQgYSBwYXNzd29yZCwg ZXRjLiBZb3UnbGwgbmVlZCB0byBkbyB0aGlzIHdpdGhvdXQgYW55Cj4gcHJpdmFjeSBwbHVnaW5z IGVuYWJsZWQgdGhhdCBtaWdodCBzdG9wIHRoaXJkIHBhcnRpZXMgbG9hZGluZyBvciBjaGFuZ2lu Zwo+IHJlZmVyZXJzLiBTYWRseSB0aGUgYmVzdCByZXNlYXJjaCBjYW4gb2Z0ZW4gcHV0IHRoZSBy ZXNlYXJjaGVyIGF0IHNvbWUKPiByaXNrcywgc28gb25seSBkbyB0aGlzIGlmIHlvdSBhcmUgY29t Zm9ydGFibGUgZG9pbmcgaXQuCj4KPiBNZWFud2hpbGUsIHBsZWFzZSB0YWtlIGEgc3RlcCBiYWNr IGFuZCBsb29rIGF0IHRoaXMgYWdhaW4uCj4KPiBOb3RlOiBJIGRpZCBhbHNvIHN5bXBhdGhpc2Ug d2l0aCB5b3VyIHBvc2l0aW9uIGFib3V0IGEgYm9sZCByZWQgd2FybmluZwo+IGFuZCB3aGVuIHRo ZSBibG9jayBvZiB0ZXh0IEkgd3JvdGUgbW92ZWQgZG93biB0aGUgcGFnZSwgSSBvbmx5IHB1dCBh IHNtYWxsCj4gMS0yIGxpbmUgd2FybmluZy4uLiBJIHdhcyB0cnlpbmcgdG8gYmUgcmVzcGVjdGZ1 bCBvZiB5b3VyIG9yIFdpbGwncwo+IHBvc2l0aW9uIGF0IHRoZSB0aW1lIGFuZCBzaW5jZSBhc2tl ZCByZXBlYXRlZGx5IGlmIHlvdSBoYWQgYW55IGlkZWFzIHRvCj4ga2VlcCBzb21ldGhpbmcgYXQg dGhlIHRvcCBvZiB0aGUgcGFnZSB0aGF0IGFjaGlldmVzIHRoZSBzYW1lIGdvYWwuIFRvIHdoaWNo Cj4geW91IGJvdGgganVzdCBrZXB0IGRlbGV0aW5nIGl0IGFuZCBsZWQgdXMgdG8gdGhpcyBzdGF0 ZS4KPgo+IEJlc3QKPiBNYXJrIFJpY2hhcmRzCj4KPgo+Cj4KPgo+Cj4gT24gV2VkLCAyNiBTZXAg MjAxOCwgMTc6NDUgQ2hyaXMgTWlsbHMsIDxjbWlsbHNAbW96aWxsYS5jb20+IHdyb3RlOgo+Cj4+ IChyZW1vdmluZyBhbGwgdGhlIG90aGVyIGUtbWFpbCBhZGRyZXNzZXMgeW91J3ZlIGF0dGFjaGVk IHRvIHRoZSBtYWlsLCBhcwo+PiBJIGRvbid0IGtub3cgdGhlc2UgcGVvcGxlIG9yIHRoZWlyIGlu dm9sdmVtZW50IGluIHRoaXMuIEFsc28gcmVtb3ZpbmcgV2lsbC4pCj4+Cj4+IEhpIE1hcmssCj4+ Cj4+IEknbSBDaHJpcywgV2lsbCdzIG1hbmFnZXIuCj4+Cj4+IEkgc2VlIHRoYXQgeW91J3ZlIGFn YWluIGlnbm9yZWQgb3VyIG11bHRpcGxlIHJlcXVlc3RzIHRvIHN0b3AgcmV2ZXJ0aW5nCj4+IG91 ciBjaGFuZ2VzLiBZb3UndmUgYWxzbyBzZW50IHVzIG11bHRpcGxlIGVtYWlscyB0aGF0IGhhdmUg Y29tZSBhY3Jvc3MgYXMKPj4gYWdncmVzc2l2ZSBhbmQgc29tZXdoYXQgdGhyZWF0ZW5pbmcuIEFu ZCBhbGwgb2YgdGhpcyBhZnRlciB3ZSBoYXZlIHRha2VuCj4+IG11bHRpcGxlIHN0ZXBzIHRvIG1l ZXQgeW91ciBjb250ZW50IGRlbWFuZHMsIGJ1dCBpbiBhIHdheSB0aGF0IHdvcmtzIGZvcgo+PiBv dXIgY29udGVudCBzdHJhdGVneS4gSSB0aGVyZWZvcmUgaGF2ZSBubyBjaG9pY2UgYnV0IHRvIGJh biB5b3VyIGFjY291bnQuCj4+Cj4+IFRoaXMgaXMgYSBzaGFtZSwgYW5kIG5vdCBzb21ldGhpbmcg SSBlbmpveSBkb2luZyBvciB0YWtlIGxpZ2h0bHkuIFdlCj4+IGFncmVlIHdpdGggbWFueSBvZiB5 b3VyIHBvaW50cyBvZiB2aWV3LCBob3dldmVyIHdlIGFsc28gaGF2ZSBvdXIgb3duCj4+IHJlYXNv bnMgZm9yIHdvcmRpbmcgYW5kIHByZXNlbnRpbmcgZG9jdW1lbnRhdGlvbiBsaWtlIHdlIGRvLCBh bmQgd2UgaGF2ZQo+PiB0aGUgdWx0aW1hdGUgc2F5IG9uIE1ETiBjb250ZW50IGRpc3B1dGVzLiBU aGlzIG11c3QgYmUgcmVzcGVjdGVkIGJlZm9yZSB3ZQo+PiBjYW4gZW5nYWdlIHdpdGggY29udHJp YnV0b3JzIGluIGEgbWVhbmluZ2Z1bCB3YXkuCj4+Cj4+IEJlc3QgcmVnYXJkcywKPj4KPj4gLS0t Cj4+Cj4+IENocmlzIE1pbGxzCj4+IE1ETiBjb250ZW50IGxlYWQgJiB3cml0ZXJzJyB0ZWFtIG1h bmFnZXIKPj4gTUROIFdlYiBEb2NzCj4+IE1vemlsbGEKPj4gQGNocmlzZGF2aWRtaWxscwo+Pgo+ PiBPbiBTZXAgMjUsIDIwMTgsIGF0IDI6NDUgQU0sIE1hcmsgUmljaGFyZHMgPG1hcmsuYWxhbi5y aWNoYXJkc0BnbWFpbC5jb20+Cj4+IHdyb3RlOgo+Pgo+PiBDaHJpcyBhbmQgV2lsbGlhbSwKPj4K Pj4gVGhpcyBwYWdlIHdpbGwgbWlzbGVhZCB3ZWIgZGV2ZWxvcGVycy4KPj4KPj4gaHR0cHM6Ly9k ZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvU2VjdXJpdHkvUmVmZXJlcl9oZWFk ZXI6X3ByaXZhY3lfYW5kX3NlY3VyaXR5X2NvbmNlcm5zCj4+Cj4+IEkgZG9uJ3Qgd2FudCB0byBp bXByb3ZlIGl0LCBiZWNhdXNlIHRoaXMgbmF0dXJlIG9mICBkb2N1bWVudCBzaG91bGQgYmUKPj4g Y2VudHJlIHN0YWdlIG9mIHRoZSBSZWZlcmVyIHBhZ2UKPj4gaHR0cHM6Ly9kZXZlbG9wZXIubW96 aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRUUC9IZWFkZXJzL1JlZmVyZXIKPj4KPj4gVGhlIHJl ZmVyZXIgdW5leHBlY3RlZGx5IChtb3N0IHVzZXJzIGRvbid0IGtub3cgdGhpcyBoYXBwZW5zLCBl dmVuIGEKPj4gc3VycHJpc2luZyBudW1iZXIgaW4gdGhlIHRlY2ggY29tbXVuaXR5IGRvbid0KSBz ZW5kcyB0aGUgcGFnZSB5b3UgYXJlCj4+IGN1cnJlbnRseSBvbiB0byB0aGUgdGFyZ2V0IHdoZW4g dGhlaXIgY29udGVudCBpcyBsb2FkZWQgb24gYSBwYWdlIChsaWtlIGFuCj4+IGltYWdlKSBvciB3 aGVuIHlvdSBmb2xsb3cgYSBsaW5rIHRvIHRoZWlyIHBhZ2UuCj4+Cj4+IEJ5IGRlc2lnbiB0aGlz IGlzIGEgYnJlYWNoIG9mIHByaXZhY3ksIGlmIHRoZSB0YXJnZXQgaXMgYSB0aGlyZCBwYXJ0eS4K Pj4gVGhleSBhcmUgYmVpbmcgdG9sZCB5b3UgYXJlIGEgdXNlZCBvZiB0aGUgb3JpZ2luIHdlYnNp dGUgYW5kIHRoYXQncwo+PiBwZXJzb25hbCBkYXRhIGFib3V0IHNvbWVvbmUncyBhY3Rpdml0aWVz LCBvZnRlbiBtYXBwZWQgdG8gYW4gYXBwcm94aW1hdGUKPj4gaWRlbnRpdHkgKHBzdWVkb255bSwg SVAgYWRkcmVzcywgZXRjKSBvciByZWFsIGlkZW50aXR5ICggYSB1c2VyIGFjY291bnQgb24KPj4g dGhlIHRhcmdldCkgYW5kIGFsbG93cyBmb3IgdGhpbmdzIGxpa2UgZGlzY3JpbWluYXRpb24uLiBj b21pbmcgZnJvbSBhCj4+IHJlbGlnaW91cyBzaXRlIHRvIGEgc2hvcHBpbmcgc2l0ZSBhbmQgd2ls bCB0aGVpciBzdG9jayBzdGlsbCBiZSBhdmFpbGFibGU/Cj4+IFRoZXJlIGFyZSBpbm5vY2VudCB1 c2UgY2FzZXMsIGJ1dCB5b3UncmUgbWlzcmVwcmVzZW50aW5nIHRoZW0uCj4+Cj4+IE9idmlvdXNs eSwgdGhlIGludGVybmV0IGlzIGZ1bGwgb2YgYWQgdHJhY2tpbmcgYW5kIHRoaXMgaXMgdGhlIGds YXJpbmdseQo+PiBvYnZpb3VzIHByb2JsZW0gaGl0dGluZyBoZWFkbGluZXMgYWJvdXQgbGVnYWwg Y2FzZXMgYW5kIHJlZ3VsYXRvcnkgYWN0aW9uCj4+IGluIHZhcmlvdXMgY291bnRyaWVzLCBidXQg d2hhdCB5b3UndmUgZGVzY3JpYmVkIGFzICJpbm5vY2VudCIgbGFyZ2VseSBpc250Cj4+IHRvIGJl IGlnbm9yZWQgYW5kIGl0IGlzIHRoZSByZWFzb24gd2h5IEkgdGl0bGVkIHRoZSBzZWN0aW9uIG9y aWdpbmFsbHkgYXMKPj4gbm90IGp1c3QgYWJvdXQgcHJpdmFjeSBhbmQgc2VjdXJpdHksIGJ1dCBy ZWd1bGF0b3J5IGNvbmNlcm5zLiBJZiB0aGUKPj4gdGFyZ2V0aW5nIGRpc2FwcGVhcmVkIHRvbW9y cm93LCB0aGlzIHdvdWxkIHN0aWxsIG5lZWQgdG8gYmUgYSBmZWF0dXJlIGFsbAo+PiB3ZWIgZGV2 ZWxvcGVycyBuZWVkIHRvIHVuZGVyc3RhbmQuCj4+Cj4+IElmIGEgd2Vic2l0ZSB1c2VzIGxvZ2dp bmcsIGFuYWx5dGljcyBvciBjYWNoZSBvcHRpbWl6YXRpb24sIGZyb20gYSB0aGlyZAo+PiBwYXJ0 eSwgd2hpY2ggaXMgb2Z0ZW4gdGhlIGNhc2UgdGhlc2UgZGF5cywgaWYgdGhlIHdlYiBkZXZlbG9w ZXIgZG9lcyBub3QKPj4gdW5kZXJzdGFuZCB3aGF0IGRhdGEgdGhlIHRoaXJkIHBhcnRpZXMgZ2V0 LCB0aGVuIHRoZXkgbWF5IGhhdmUganVzdCBwdXQKPj4gdGhlaXIgYnVzaW5lc3MgYXQgcmlzayBv ZiBicmVhY2hpbmcgcmVndWxhdGlvbnMsIGxpa2UgdGhlIGRhdGEgcHJvdGVjdGlvbgo+PiBsYXdz LCB3aGljaCByZXF1aXJlIGFwcHJvcHJpYXRlIGNvbnNpZGVyYXRpb24gZm9yIGNvbnNlbnRzLCBh Y2NvdW50YWJpbGl0eQo+PiBhbmQgaW5jbHVzaW9uIGluIGRvY3VtZW50YXRpb24gdG8gdXNlcnMg YXMgcHJpdmFjeSBwb2xpY2llcy4KPj4KPj4gU28gcmVnYXJkbGVzcyBvZiBob3cgaW5ub2NlbnQg YW55IG9mIHRoZXNlIHNlcnZpY2VzIGFyZSwgZGVlbG9wZXJzIHdpbGwKPj4gaGF2ZSBsZXQgZG93 biB0aGVtc2VsdmVzLCB0aGVpciBidXNpbmVzcyBhbmQgdGhlaXIgdXNlcnMsIHRvIGFuIGV4dGVu dCB0aGF0Cj4+IGNvdWxkIHJlc3VsdCBpbiBmaW5lcywgbGVnYWwgYWN0aW9uIGFuZCBkaXN0cmVz cywgaWYgdGhleSBmYWlsIHRvIHJlYWxpc2UKPj4gdGhlIGV4YWN0IHBhZ2UgdXNlcnMgYXJlIHZp c2l0aW5nIGlzIHNoYXJlZCB3aXRoIHRoZSB0YXJnZXQgYW5kIHRha2VuCj4+IGFwcHJvcHJpYXRl IHN0ZXBzIHRvIGxldCB0aGUgYnVzaW5lc3MgdXBkYXRlIGNvbnNlbnQgZmxvd3MsIHVwZGF0ZSBH RFBSCj4+IGltcGFjdCBhc3Nlc3NtZW50cywgcG9saWNpZXMsIHJpc2sgcmVnaXN0ZXJzIGFuZCBh bnl0aGluZyBlbHNlIHRoYXQgbWlnaHQKPj4gYmUgYSBmdXJ0aGVyIHJlcXVpcmVtZW50IG9mIGFu eSBpbmR1c3RyeSBzcGVjaWZpYyByZWd1bGF0aW9uIGZvciB3aGVyZSB0aGV5Cj4+IG1heSBvcGVy YXRlIChoZWFsdGgsIGZpbmFuY2UsIGdvdmVybm1lbnQsIG1pbGl0YXJ5IGNsaW5pY2FsIHRyaWFs cywgZXRjIG1heQo+PiB3ZWxsIHJlcXVpcmUgYWRkaXRpb25hbCBwcm9jZXNzZXMgYW5kIG91dHB1 dHMgYmV5b25kIEdEUFIpLgo+Pgo+PiBTbyB1bmxlc3MgeW91IHdhbnQgYSBsb3Qgb2YgZGF0YSBw cm90ZWN0aW9uIG9mZmljZXJzIGZhY2luZwo+PiBpbnZlc3RpZ2F0aW9ucywgYnVzaW5lc3NlcyBm YWNpbmcgZmluZXMgYW5kIHdlYiB1c2VycyBkaXN0cmVzc2VkLCBldmVuCj4+IGNvbnNpZGVyaW5n IGxlZ2FsIGFjdGlvbnMgYWdhaW5zdCB3ZWJzaXRlcywgcGxlYXNlIGRvbid0IHBsYXkgZG93biB0 aGUKPj4gc2lnbmlmaWNhbmNlIG9mIG1hbmFnaW5nIHJlZmVyZXIgaGVhZGVycyBwcm9wZXJseS4g RXZlcnkgc2luZ2xlIHdlYgo+PiBkZXZlbG9wZXIgbmVlZHMgdG8ga25vdyBhbmQgaXQgbWlnaHQg YmUgYWJvdXQgbmFzdHkgYWQgdHJhY2tpbmcsIGJ1dAo+PiB0aGVyZSdzIGEgbXVjaCBiaWdnZXIg cmVhc29uIHdoeSBldmVyeSBkZXZlbG9wZXIgbmVlZHMgdG8ga25vdyBhbmQgaXQgbWF5Cj4+IGdl dCB0aGVtIGZpcmVkLi4gYXMgZm9yIHRoZSB3aG9sZSBvZiB0aGUgRVUsIHRoZXJlIGhhcyB0byBi ZSBhbgo+PiB1bmRlcnN0YW5kaW5nIGFzIHBhcnQgb2YgbWVldGluZyBHRFBSIGFuZCBFVSBwcml2 YWN5IGRpcmVjdGl2ZSBhbmQgc2ltaWxhcgo+PiByZWd1bGF0aW9ucyBhcmUgYmVpbmcgZHJhZnRl ZCBvciBhbHJlYWR5IGV4aXN0IGluIHZhcmlvdXMgY291bnRyaWVzIGFyb3VuZAo+PiBtdWNoIG9m IHRoZSB3b3JsZC4KPj4KPj4gSWYgeW91IGRvbid0IHVuZGVyc3RhbmQgbXkgbW90aXZlcyBmb3Ig dGhlIGNoYW5nZXMgSSd2ZSBtYWRlIG9yIGRvbid0Cj4+IHVuZGVyc3RhbmQgdGhlIGJyZWFkdGgg b2Ygd2h5IGl0IGlzIHNvIGltcG9ydGFudCB0aGF0IE1vemlsbGEgZW5zdXJlIHRoZXJlCj4+IGlz IGFwcHJvcHJpYXRlIGd1aWRhbmNlIGZvciB3ZWIgZGV2ZWxvcGVycywgdGhlbiBhY3R1YWxseSB0 YWxrIGFib3V0IGl0Cj4+IGluc3RlYWQgb2YganVzdCBkZWxldGluZyBzb21lb25lJ3Mgd29yayBv ciBhbWVuZGluZyBpdCB0byBsZXNzZW4gdGhlCj4+IHNpZ25pZmljYW5jZS4uLmFzayBtZSBxdWVz dGlvbnMgYXMgdG8gd2h5IEkndmUgd29yZGVkIHNvbWV0aGluZyB0aGlzIHdheSwKPj4gaXQgaXMg bm90IHdpdGggbWFsaWNlLCBpdCBpcyB0byBoZWxwIHByb3RlY3Qgd2ViIHVzZXJzLCBkZXZlbG9w ZXJzIGFuZAo+PiBidXNpbmVzc2VzLgo+Pgo+PiBJJ20gcmVhbGx5IGZydXN0cmF0ZWQgdGhhdCBN b3ppbGxhIGhhcyBmYWlsZWQgb24gcHJpdmFjeSBzbyBzaWduaWZpY2FudGx5Cj4+IGZvciBzbyBs b25nLCBidXQgSSdtIHRyeWluZyB0byBwbGF5IGEgcG9zaXRpdmUgcm9sZSBpbiBoZWxwaW5nIHRv IGltcHJvdmUKPj4gdGhhdCBieSB1cGRhdGluZyBkb2NzIHRvIGhlbHAgZGV2ZWxvcGVycyBhdm9p ZCB0aGUgcHJpdmFjeSwgc2VjdXJpdHkgYW5kCj4+IHJlZ3VsYXRvcnkgY29tcGxpYW5jZSBob2xl cyBpdCdzIHNvIGVhc3kgdG8gZmFsbCBpbnRvIHdoZW4gbWFraW5nIHdlYnNpdGVzLgo+PiBJZiBi cm93c2VycyBjb3VsZCByZW1vdmUgdGhvc2UgaG9sZXMsIGdyZWF0IGJ1dCB1bnRpbCB0aGVuIHdl IG5lZWQgdGhlc2UKPj4gZG9jcy4KPj4KPj4gWW91J3JlIHN1cHBvc2VkIHRvIGNhcmUgYWJvdXQg cHJpdmFjeSB0b28sIHNvIHBsZWFzZSByZXNlYXJjaCBhbmQKPj4gdW5kZXJzdGFuZCB0aGUgcHJv YmxlbSBmdWxseS4gUmVhZCB0aGUgSUNPIGd1aWRhbmNlIG9uIGltcGFjdCBhc3Nlc3NtZW50cywK Pj4gcHJpdmFjeSBwb2xpY2llcywgbWljcm90YXJnZXRpbmcsIGNvbnNlbnQsIGFjY291bnRhYmls aXR5LCBwcml2YWN5IGJ5Cj4+IGRlc2lnbiBhbmQgZGVmYXVsdC4uLiBQbGVhc2UgdW5kZXJzdGFu ZCB3aGF0IHlvdSBhcmUgcmlza2luZyBieSByZW1vdmluZwo+PiB0aGlzIGFuZCB3aHkgd2hhdCBt YXkgYXBwZWFyIGFzIGFuIGlubm92YXRpdmUgdXNlIGNhc2UsIGlzIGFjdHVhbGx5IGEKPj4gdHJp Z2dlciBmb3IgYSBjaGFpbiBvZiBidXNpbmVzcyBwcm9jZXNzZXMgdG8gZW5zdXJlIHRoYXQgaXQg aXMgaW5ub2NlbnQgYW5kCj4+IHRoZSBidXNpbmVzcyBjYW4gYWNjb3VudCBmb3IgdGhhdCB0byBp dHMgdXNlcnMgYW5kIHJlZ3VsYXRvcnMuCj4+Cj4+IEkgYW0gZ3JhdGVmdWwgeW91J3ZlIG1hZGUg YW4gZWZmb3J0IHRvIGtlZXAgc29tZSBvZiB0aGUgaW50ZW50IG9mIG15Cj4+IHdvcmssIGJ1dCBJ J20gbm90IGF0IGFsbCBoYXBweSBhYm91dCB0aGUgYXR0aXR1ZGUgc2hvd24gaGVyZSBhbmQgaXQg ZG9lcwo+PiBub3QgaGVscCB0aGF0IHlvdSBkb24ndCBhcHBlYXIgdG8gdW5kZXJzdGFuZC4gSSBh c2tlZCBpbiBhIHByZXZpb3VzIGVtYWlsCj4+IHRvIGdldCB5b3VyIGxlZ2FsIHRlYW0gaW52b2x2 ZWQgYW5kIGNvcnBvcmF0ZSBzb2NpYWwgcmVzcG9uc2liaWxpdHkgdGVhbToKPj4gbm90IGJlY2F1 c2UgSSBwbGFuIHRvIHRha2UgbGVnYWwgYWN0aW9uIG9yIGFzayBmb3IgZG9uYXRpb25zLi4uIEJ1 dCBiZWNhdXNlCj4+IHRoZXkgaG9wZWZ1bGx5IGhhdmUgdGhlIGV4cGVydGlzZSB0byByZWFkIGlu dG8gdGhlIHJlZ3VsYXRvcnkgY29uY2VybnMgYW5kCj4+IHRoZSBwcml2YWN5IGlzc3VlcyByYWlz ZWQgYW5kIHBsYXkgYSBwYXJ0IGluIGlkZW50aWZ5aW5nIHRoZSBuZWVkIGZvciB0aGlzCj4+IGRv Y3VtZW50YXRpb24gaW5zdGVhZCBvZiB0aHJvd2luZyBidXNpbmVzc2VzIGludG8gdGhlIGxpbmUg b2YgZmlyZSBvZiBkYXRhCj4+IHByb3RlY3Rpb24gbWlzaGFwcy4KPj4KPj4gQmVzdAo+PiBNYXJr IFJpY2hhcmRzCj4+Cj4+Cj4+IE9uIE1vbiwgMjQgU2VwIDIwMTgsIDIxOjIwIE1hcmsgUmljaGFy ZHMsIDxtYXJrLmFsYW4ucmljaGFyZHNAZ21haWwuY29tPgo+PiB3cm90ZToKPj4KPj4+IENocmlz LAo+Pj4KPj4+IElzIGl0IHJlYWxseSBuZWNlc3NhcnkgdG8gY29udGludWUgdG8gcmVtb3ZlIHRo ZSB3YXJuaW5nPwo+Pj4KPj4+IElmIHlvdSB3YWxrIGludG8gYSBidWlsZGluZyBhbmQgdGhlIHRp bGVkIGZsb29yIGlzIHdldCwgcGVvcGxlIG1pZ2h0IGdldAo+Pj4gaHVydCwgc28geW91IHB1dCBh IHNpZ24gdXAgYW5kIHlvdSB3YXJuIHRoZW0uIFlvdSBkb24ndCBzdGF0ZSwgImJ1dCB0aGUKPj4+ IGJyaWdodCB5ZWxsb3cgc2lnbiBkb2Vzbid0IGZpdCB3aXRoIHRoZSBkZXNpZ24gb2YgdGhlIGVs ZWdhbnQgaGFsbHdheSIgLi4uCj4+PiBzb3JyeSwgYnV0IHNvbWV0aW1lcyB0aGVyZSBhcmUgbW9y ZSBpbXBvcnRhbnQgbWF0dGVycyB0aGFuIGRlc2lnbiBhbmQgeW91Cj4+PiBoYXZlIHRvIGxpdmUg d2l0aCBpbmNvbnZlbmllbmNlIGJlY2F1c2UgaXQncyB0aGUgcmlnaHQgdGhpbmcgdG8gZG8uCj4+ Pgo+Pj4gSWYgYSBicm93c2VyIGZlYXR1cmUgYnkgZGVmYXVsdCwgYnkgZGVzaWduLCBmdW5jdGlv bnMgaW4gYSBtYW5uZXIgdGhhdAo+Pj4gbGVha3MgcHJpdmF0ZSBkYXRhIChzb21ldGhpbmcgdGhh dCBsaWtlbHkgd2FzIG5vdCBhcyBvYnZpb3VzIGEgY29uY2VybiBpbgo+Pj4gd2hhdCAxOTk2KD8p IHdoZW4gcmVmZXJlciB3YXMgaW5jbHVkZWQgaW4gdGhlIEhUVFAgUkZDKSB0aGVuIHNob3VsZG4n dCB5b3UKPj4+IHB1dCBhIHdhcm5pbmcgdXAgZmlyc3QsIGJlZm9yZSBtb3JlIGRldmVsb3BlcnMg Y2F1c2UgbW9yZSBoYXJtIHRvIHRoZQo+Pj4gcHVibGljPwo+Pj4KPj4+IEl0IGlzIHdyb25nIHRv IHRha2UgdGhlIHNpZ24gZG93biBhbmQgbGVhdmUgYSBub3RlIHVwIHRvd2FyZHMgdGhlIGVuZCBv Zgo+Pj4gdGhlIHRpbGVkIGZsb29yLCBsb25nIGFmdGVyIG1hbnkgd2lsbCBoYXZlIGFscmVhZHkg ZmFsbGVuIG92ZXIgc3RhdGluZyBiZQo+Pj4gY2FyZWZ1bCwgZGV0YWlscyBpbiBhbm90aGVyIHJv b20uIFNvIHdoeSBhcmUgeW91IGRvaW5nIHRoaXM/Cj4+Pgo+Pj4gSSdtIHNvcnJ5IGl0J3Mgbm90 IHByZXR0eSwgd2FybmluZyBzaWducyBhcmVuJ3QgYW5kIEknbSBzdXJlIG1hbnkKPj4+IHByb2R1 Y3RzIHdpc2hlZCB0aGV5IGRpZG4ndCBuZWVkIHRvIGluY2x1ZGUgc21va2luZyBraWxscywgZmxh bW1hYmxlLCBub3QKPj4+IHN1aXRhYmxlIGZvciBjaGlsZHJlbiwgaGVhdnkgbG9hZCwgLi4uIHdh cm5pbmdzLiBXaHkgaXMgaXQgb2theSBmb3IgdGhlIHdlYgo+Pj4gdG8gbm90IHdhcm4gcGVvcGxl IGZpcnN0LCB3aGVuIGV2ZXJ5b25lIGVsc2UgaGFzIHRvPwo+Pj4KPj4+IEJlc3QKPj4+IE1hcmsg UmljaGFyZHMKPj4+Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+IE9uIFNhdCwgMjIgU2VwIDIwMTgs IDE1OjQ1IE1hcmsgUmljaGFyZHMsIDxtYXJrLmFsYW4ucmljaGFyZHNAZ21haWwuY29tPgo+Pj4g d3JvdGU6Cj4+Pgo+Pj4+IFdpbGxpYW0gcGxlYXNlIGNhbiB5b3UgaW52b2x2ZSB5b3VyIGNvcnBv cmF0ZSBzb2NpYWwgcmVzcG9uc2liaWxpdHkgb3IKPj4+PiBzaW1pbGFyIGRlcGFydG1lbnQgYW5k IGxlZ2FsIHRlYW0uCj4+Pj4KPj4+PiBJJ20gc29ycnksIGJ1dCBhZ2FpbiB0aGlzIGlzIG5vdCBh cHByb3ByaWF0ZS4KPj4+Pgo+Pj4+IElmIHlvdSBub3cgZ28gdG8KPj4+PiBodHRwczovL2RldmVs b3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvYQo+Pj4+Cj4+Pj4g WW91IGFyZSBmaXJzdCB0YXVnaHQgaG93IHRvIGFidXNlIHNvbWVvbmUncyBwcml2YWN5IGJ5IHdy aXRpbmcgaW5zZWN1cmUKPj4+PiBjb2RlIHRoYXQgbGVha3MgcmVmZXJlcnMgaWRlbnRpZnlpbmcg dXNlcnMgb25saW5lIGhhYml0cy4KPj4+Pgo+Pj4+IE9mIG1hbnkgY29tcGxhaW50cyB0byBkYXRh IHByb3RlY3Rpb24gb2ZmaWNlcnMgdGhpcyB5ZWFyLCBzaXR0aW5nIGluCj4+Pj4gdGhlIGNlbnRy ZSBvZiBteSBjb21wbGFpbnQgaXMgdGhhdCB0aGUgd2Vic2l0ZSBpcyBzaGFyaW5nIHRoZSBwYWdl cyBwZW9wbGUKPj4+PiB2aXNpdCwgc28gaGVhbHRoY2FyZSBvcmdhbml6YXRpb25zIGlkZW50aWZ5 aW5nIHBlb3BsZSB3aG8gYXJlIGludGVyZXN0ZWQgaW4KPj4+PiBISVYgdG8gYWQgY29tcGFuaWVz LCBwb2xpdGljYWwgcGFydGllcyByZXZlYWxpbmcgdGhlaXIgbWVtYmVyc2hpcCB0byBhZCBhbmQK Pj4+PiBhbmFseXRpY3MgY29tcGFuaWVzLCBldmVuIGEgcmVsaWdpb3VzIHNpdGUgaWRlbnRpZnlp bmcgd2hvIGludGVuZHMgdG8KPj4+PiBwcmF5Li4uIFRoZXNlIGFyZSBhbGwgc2Vuc2l0aXZlIGRh dGEuIFRoZSByZXNldCBwYXNzd29yZCBjb25jZXJucyBpbmNsdWRpbmcKPj4+PiBwdWJsaWMgaGVh bHRoIHNpdGVzIGFuZCBhIGNyZWRpdCByZXBvcnQgY29tcGFueS4KPj4+Pgo+Pj4+IE9ubHkgaWYg eW91ciBoYWJpdCBpcyAgdG8gcmVhZCB0aGUgd2hvbGUgZG9jdW1lbnQsIGJleW9uZCB3aGF0IHlv dSBuZWVkCj4+Pj4gdG8gZ2V0IHNvbWV0aGluZyB3b3JraW5nLCB3b3VsZCB5b3UgdGhlbiBsYXRl ciBkaXNjb3ZlciB0aGF0IHRoZSBkZWZhdWx0Cj4+Pj4gaW1wbGVtZW50YXRpb24gb2Ygd2ViIGxp bmtzIGlzIHRvIGJyZWFjaCBwcml2YWN5IGFuZCBpbiB0b28gbWFueSBjYXNlcwo+Pj4+IHNlY3Vy aXR5Lgo+Pj4+Cj4+Pj4gU28sIHlvdSd2ZSByZXBlYXRlZCBleGFjdGx5IHdoYXQgSSBhc2tlZCB5 b3Ugbm90IHRvIGRvIGFuZCBjb250aW51ZSB0bwo+Pj4+IHRlYWNoIHdlYiBkZXZlbG9wZXJzIGhv dyB0byBhYnVzZSBwZW9wbGUncyBwcml2YWN5IGFuZCBzZWN1cml0eSBhbmQgbGVhdmUKPj4+PiB0 aGVtIHRvIG1heWJlIGxhdGVyIGZpbmQgb3V0IHdoYXQgdGhleSBnb3Qgd3JvbmcuCj4+Pj4KPj4+ PiBGb3IgYSBjb21wYW55IHRoYXQgY2xhaW1zIHRvIGNhcmUgYWJvdXQgcHJpdmFjeSwgeW91IHNl ZW0gZGV0ZXJtaW5lZCB0bwo+Pj4+IHB1dCBwZW9wbGUgaW4gaGFybXMgd2F5Lgo+Pj4+Cj4+Pj4g U28gcGxlYXNlIHRyeSBhZ2FpbiBhbmQgc3RvcCBoaWRpbmcgdGhlIGRlc2lnbiBmYWlsdXJlcyBp biB5b3VyIHByb2R1Y3QKPj4+PiB0byBwYWdlcyBwZW9wbGUgbWlnaHQgY2hhbmNlIG9uLCBub3Qg bmVlZCB0byBzZWUuCj4+Pj4KPj4+PiBSZWdhcmRzCj4+Pj4KPj4+PiBNYXJrIFJpY2hhcmRzCj4+ Pj4KPj4+Pgo+Pj4+Cj4+Pj4KPj4+PiBPbiBTYXQsIDIyIFNlcCAyMDE4LCAxNToyMiBXaWxsaWFt IEJhbWJlcmcsIDx3YmFtYmVyZ0Btb3ppbGxhLmNvbT4KPj4+PiB3cm90ZToKPj4+Pgo+Pj4+PiBI aSBNYXJrCj4+Pj4+Cj4+Pj4+IFdlJ3ZlIGRpc2N1c3NlZCB0aGlzIGludGVybmFsbHksIGFuZCB0 aGlzIGlzIHdoYXQgd2UncmUgZ29pbmcgdG8gZG86Cj4+Pj4+Cj4+Pj4+ICogd3JpdGUgYSBzZXBh cmF0ZSBwYWdlIG91dGxpbmluZyBzZWN1cml0eSBhbmQgcHJpdmFjeSBjb25jZXJucyBhcm91bmQK Pj4+Pj4gdGhlIHJlZmVyZXIgaGVhZGVyLCBhbmQgbWl0aWdhdGlvbnMuIFdlJ3ZlIGRyYWZ0ZWQg c29tZSBjb250ZW50IGF0Cj4+Pj4+IGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVT L2RvY3MvV2ViL1NlY3VyaXR5L1JlZmVyZXJfaGVhZGVyOl9wcml2YWN5X2FuZF9zZWN1cml0eV9j b25jZXJucy4KPj4+Pj4gV2UgdGhpbmsgdGhpcyBzaG91bGQgY29uY2VudHJhdGUgb24gdG9vbHMg YW5kIGRlc2lnbnMgYXZhaWxhYmxlIHRvIGNvbWJhdAo+Pj4+PiB0aGVzZSBwcm9ibGVtcyAoc3Vj aCBhcyB0aGUgUmVmZXJyZXItUG9saWN5IGhlYWRlciwgYW5kIG1ha2luZyBwYXNzd29yZAo+Pj4+ PiByZXNldCBVUkxzIHNpbmdsZS11c2UpIHJhdGhlciB0aGFuIG9uIGF1ZGl0aW5nIGV2ZXJ5IHRh cmdldC4KPj4+Pj4KPj4+Pj4gKiBsaW5rIHRvIHRoaXMgcGFnZSBmcm9tIHJlbGV2YW50IHBhZ2Vz LCBzdWNoIGFzIHRoZSBwYWdlIGZvciB0aGUgPGE+Cj4+Pj4+IGFuZCA8aW1nPiBlbGVtZW50cy4K Pj4+Pj4KPj4+Pj4gV2UgZG9uJ3QgdGhpbmsgaXQncyBhcHByb3ByaWF0ZSB0byBoYXZlIGEgcmVk IHdhcm5pbmcgYmFubmVyIGF0IHRoZQo+Pj4+PiB0b3BzIG9mIHRoZSBwYWdlcy4gVGhhdCBraW5k IG9mIGRlc2lnbiBlbGVtZW50IGlzIG9uZSB3ZSB0cnkgdG8gYXZvaWQgb24KPj4+Pj4gTUROIHVu bGVzcyBpdCdzIGhpZ2hsaWdodGluZyB0aGUgdmVyeSBmaXJzdCB0aGluZyB5b3UgbmVlZCB0byBr bm93IGFib3V0Cj4+Pj4+IHRoZSBpdGVtLCB3aGljaCB3ZSBkb24ndCB0aGluayBpdCBpcyBpbiB0 aGlzIGNhc2UsIGFsdGhvdWdoIHdlIGRvCj4+Pj4+IGFwcHJlY2lhdGUgdGhhdCBpdCBpcyBpbXBv cnRhbnQuCj4+Pj4+Cj4+Pj4+IFRoYW5rcyBmb3IgYnJpbmdpbmcgdGhpcyB1cC4KPj4+Pj4KPj4+ Pj4gV2lsbAo+Pj4+Pgo+Pj4+Pgo+Pj4+PiBPbiBTYXQsIFNlcCAxNSwgMjAxOCBhdCA3OjUwIFBN IE1hcmsgUmljaGFyZHMgPAo+Pj4+PiBtYXJrLmFsYW4ucmljaGFyZHNAZ21haWwuY29tPiB3cm90 ZToKPj4+Pj4KPj4+Pj4+IFdoZW4gYSBmZWF0dXJlJ3MgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBw dXRzIHBlb3BsZSBpbiBoYXJtcyB3YXksCj4+Pj4+PiB0aGVuIHVzZXJzIG5lZWQgYSB3YXJuaW5n IHRvIHByb3RlY3QgdGhlbXNlbHZlcyBhbmQgb3RoZXJzLgo+Pj4+Pj4KPj4+Pj4+IElzIGl0IE1v emlsbGEncyBwb3NpdGlvbiB0byB0ZWFjaCBzb2Z0d2FyZSBkZXZlbG9wZXJzIGhvdyB0byB1c2UK Pj4+Pj4+IGZlYXR1cmVzIGluIGEgbWFubmVyIHRoYXQgbGVha3MgZGF0YSwgbGVhdmluZyBkZXRh aWxzIG9mIGhvdyB0byBhdm9pZCBpdCwKPj4+Pj4+IHRvd2FyZHMgdGhlIGVuZCBvZiBkb2N1bWVu dGF0aW9uLCByYXJlbHkgdG8gYmUgZm91bmQ/Cj4+Pj4+Pgo+Pj4+Pj4gSSdtIGhhdmUgYmVlbiBh bmQgY3VycmVudGx5IGFtIGludm9sdmVkIGluIHZhcmlvdXMgY29tcGxhaW50cyB0bwo+Pj4+Pj4g cmVndWxhdG9ycyByZWdhcmRpbmcgY29tcGFuaWVzIGluIGZpbmFuY2UsIGhlYWx0aCwgcG9saXRp Y3MgYW5kIHJlbGlnaW9uCj4+Pj4+PiBhbGwgZGlzY2xvc2luZyBkYXRhIGJlY2F1c2Ugb2YgdGhl c2UgcHJpdmFjeSBhbmQgc2VjdXJpdHkgZmFpbGluZ3MuCj4+Pj4+Pgo+Pj4+Pj4gSW4gc29tZSBj YXNlcyBwdXR0aW5nIGFjY291bnQgc2VjdXJpdHkgYXQgcmlzayBhbGxvd2luZyBmb3IgYWNjZXNz IHRvCj4+Pj4+PiBJbnZlc3RtZW50cyBvciB0byB0YWtlIG91dCBsb2FucyBpbiBzb21lb25lJ3Mg bmFtZSBvciBkYXRhIHRoYXQgY291bGQKPj4+Pj4+IGVhc2lseSBwdXQgc29tZSBwZW9wbGUgZWFz aWx5IGluIGhhcm1zIHdheSBpbiB0aGUgd3JvbmcgaGFuZHMuCj4+Pj4+Pgo+Pj4+Pj4gSSBkbyBu b3QgbWluZCBpZiB5b3UgaGF2ZSBhbiBpbm5vdmF0aXZlIHN1Z2dlc3Rpb24gdGhhdCBlZHVjYXRl cwo+Pj4+Pj4gZGV2ZWxvcGVycyBhYm91dCBob3cgdG8gcHJvdGVjdCBwcml2YWN5IHdoZW4gdXNp bmcgdGhlc2UgZmVhdHVyZXMsIGJ1dAo+Pj4+Pj4gdW50aWwgdGhlbiBpdCBzZWVtcyBhcHByb3By aWF0ZSB0byBjb25zaWRlciBsZW5ndGhzIGFzIGZhciBhcyB0aGUgInNtb2tpbmcKPj4+Pj4+IGtp bGxzIiBzdHlsZSB3YXJuaW5ncyBvbiBjaWdhcmV0dGUgcGFja2FnaW5nLCB0byB0aGUgZG9jdW1l bnRhdGlvbiBmb3IgdGhlCj4+Pj4+PiB3ZWJzaXRlLi4uIEkndmUgbm90IGdvbmUgdGhhdCBmYXIu Cj4+Pj4+Pgo+Pj4+Pj4gU28gZG8geW91IGNhcmUgYWJvdXQgcHJpdmFjeSBvciBkbyB5b3Ugd2Fu dCB0byB0ZWFjaCB0aGUgbmV4dAo+Pj4+Pj4gZ2VuZXJhdGlvbiBvZiB3ZWIgZGV2ZWxvcGVycyBo b3cgdG8gY3JlYXRlIHdlYnNpdGVzIHRoYXQgcHV0IHBlb3BsZSBhdCByaXNrPwo+Pj4+Pj4KPj4+ Pj4+IElmIHlvdSBoYXZlIGEgYmV0dGVyIHNvbHV0aW9uIHRoYW4gdGhlIHdhcm5pbmcgbWVzc2Fn ZSBwbGVhc2UgcHJvcG9zZQo+Pj4+Pj4gaXQgaW5zdGVhZCwgYnV0IGRvbid0IGRlbGV0ZSB3YXJu aW5ncyB0aGVyZSB0byBwcm90ZWN0IHBlb3BsZSBmcm9tIHRoZQo+Pj4+Pj4gcHJpdmFjeSBmYWls aW5ncyBlbmRlbWljIHRoZSBkZXNpZ24gb2YgdGhlIHdlYiBzcGVjcy4KPj4+Pj4+Cj4+Pj4+PiBC ZXN0Cj4+Pj4+PiBNYXJrCj4+Pj4+Pgo+Pj4+Pj4KPj4+Pj4+Cj4+Pj4+PiBPbiBTYXQsIDE1IFNl cCAyMDE4LCAxOToyOSBXaWxsaWFtIEJhbWJlcmcsIDx3YmFtYmVyZ0Btb3ppbGxhLmNvbT4KPj4+ Pj4+IHdyb3RlOgo+Pj4+Pj4KPj4+Pj4+PiBIaQo+Pj4+Pj4+Cj4+Pj4+Pj4gVGhhbmtzIGZvciB0 aGUgY29udHJpYnV0aW9ucyB5b3UndmUgbWFkZSB0byBNRE4uIEkgZG8gYXBwcmVjaWF0ZSB5b3UK Pj4+Pj4+PiBkcmF3aW5nIGF0dGVudGlvbiB0byB0aGUgcHJpdmFjeSBpc3N1ZXMgYXJvdW5kIGNl cnRhaW4gSFRNTCBlbGVtZW50cyBzdWNoCj4+Pj4+Pj4gYXMgPGE+IGFuZCA8aW1nPi4KPj4+Pj4+ Pgo+Pj4+Pj4+IEhvd2V2ZXIgSSdkIGxpa2UgdG8gcmVxdWVzdCB0aGF0IHlvdSBzdG9wIHJlaW5z dGF0aW5nIHRoZSAid2FybmluZyIKPj4+Pj4+PiBiYW5uZXIgYXQgdGhlIHRvcHMgb2YgdGhlIHBh Z2VzLiBUaGVyZSBhcmUgdmVyeSBmZXcgc2l0dWF0aW9ucyBpbiB3aGljaAo+Pj4+Pj4+IGl0J3Mg YXBwcm9wcmlhdGUgdG8gdXNlIHRoaXMgYmFubmVyIGF0IHRoZSB0b3Agb2YgdGhlIHBhZ2UsIGFu ZCBJIGRvbid0Cj4+Pj4+Pj4gdGhpbmsgaXQncyBhcHByb3ByaWF0ZSBpbiB0aGlzIHNpdHVhdGlv bi4KPj4+Pj4+Pgo+Pj4+Pj4+IFRoYW5rcwo+Pj4+Pj4+Cj4+Pj4+Pj4gV2lsbAo+Pj4+Pj4+Cj4+ Pj4+Pj4KPj4KPgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f XwpkZXYtc2VjdXJpdHkgbWFpbGluZyBsaXN0CmRldi1zZWN1cml0eUBsaXN0cy5tb3ppbGxhLm9y ZwpodHRwczovL2xpc3RzLm1vemlsbGEub3JnL2xpc3RpbmZvL2Rldi1zZWN1cml0eQo=