c29uIHdoeSwgYmVjYXVzZSBvZiB0aGF0LCB0aGV5IHNob3VsZCByZS0gCmxhcHNlIGludG8gY2FyZWxlc3NuZXNzIGFuZCBldmlsIGxpdmluZy4gSGUgCnNob3dlZCB0aGVtIHRoYXQgYSBoaWdoZXIgbGlmZSBpcyBfcG9zc2ktIApibGUgZm9yIHRoZSBtYW4gXyBzdGlsbCBpbiB0aGUgd29ybGQsIGFuZCAKdGhhdCwgdGhvdWdoIHRoZXkgbWlnaHQgbm90IGJlIGFibGUgdG8gZGUtIAp2b3RlIHRoZW1zZWx2ZXMgdG8gbWV0YXBoeXNpY3MgYW5kIHRvIGhhaXItIApzcGxpdHRpbmcgYXJndW1lbnRzLCB0aGV5IGNvdWxkIHN0aWxsIG9idGFpbiAKc3VmZmljaWVudCBncmFzcCBvZiB0aGUgZ3JlYXQgZmFjdHMgb2YgZXZvbHUtIAp0aW9uIHRvIGZvcm0gYSBzYXRpc2ZhY3RvcnkgZ3VpZGUgdG8gdGhlbSAKaW4gdGhlaXIgbGl2ZXMuIAoKSGUgZGVjbGFyZWQgdGhhdCBleHRyZW1lcyBpbiBlaXRoZXIgCmRpcmVjdGlvbiBhcmUgZXF1YWxseSBpcnJhdGlvbmFsOyB0aGF0IG9uIHRoZSAKb25lIGhhbmQgdGhlIGxpZmUgb2YgdGhlIG9yZGluYXJ5IG1hbiBvZiAKdGhlIHdvcmxkLCB3cmFwcGVkIHVwIGVudGlyZWx5IGluIGhpcyBidXNpLSAKbmVzcywgcHVyc3VpbmcgZHJlYW1zIG9mIHdlYWx0aCBhbmQgcG93ZXIsIAppcyBmb29saXNoIGFuZCBkZWZlY3RpdmUgYmVjYXVzZSBpdCBsZWF2ZXMgCm91dCBvZiBhY2NvdW50IGFsbCB0aGF0IGlzIHJlYWxseSB3b3J0aHkgCm9mIGNvbnNpZGVyYXRpb247IGJ1dCB0aGF0IG9uIHRoZSBvdGhlciAKaGFuZCB0aGUgZXh0cmVtZSBhc2NldGljaXNtIHRoYXQgdGVhY2hlcyAKZWFjaCBtYW4gdG8gdHVybiBoaXMgYmFjayB1cG9uIHRoZSB3b3JsZCAKYWx0b2dldGhlciwgYW5kIHRvIGRldm90ZSBoaW1zZWxmIGV4Y2xuLSAKc2l2ZWx5IGFuZCBzZWxmaXNobHkgdG8gdGhlIGVuZGVhdm91ciB0byAKc2h1dCBoaW1zZWxmIGF3YXkgZnJvbSBpdCBhbmRfIGVzY2FwZSAKZnJvbSBpdCwgaXMgYWxzbyBmb29saXNoLiBIZSBoZWxkIHRoYXQgdGhlIAptaWRkbGUgcGF0aCBvZiB0cnV0aCBhbmQgYmVhdXR5IGlzIHRoZSAKYmVzdCBhbmQgc2FmZXN0LCBhbmQgdGhhdCB3aGlsZSBjZXJ0YWlubHkgCnRoZSBsaWZlIGRldm90ZWQgZW50aXJlbHkgdG8gc3Bpcml0dWFsaXR5IGlzIAoKCnRoZSBoaWdoZXN0IG9mIGFsbCBmb3IgdGhvc2Ugd2hvIGFyZSByZWFkeSAKMjAgCgoKMTU0IEFEWUFSIFRBTEtTIAoKCmZvciBpdCwgdGhlcmUgaXMgYWxzbyBhIGdvb2QgYW5kIHRydWUgYW5kIApzcGlyaXR1YWwgbGlmZSBwb3NzaWJsZSBmb3IgdGhlIG1hbiB3aG8geWV0IApob2xkcyBoaXMgcGxhY2UgYW5kIGRvZXMgaGlzIHdvcmsgaW4gdGhlIAp3b3JsZC4gCgpIZSBiYXNlZCBIaXMgZG9jdHJpbmVzIHNvbGVseSBvbiByZWEtIApzb24gYW5kIGNvbW1vbi1zZW5zZTsgSGUgYXNrZWQgbm8gbWFuIAp0byBiZWxpZXZlIGFueXRoaW5nIGJsaW5kbHksIGJ1dCByYXRoZXIgdG9sZCAKaGltIHRvIG9wZW4gaGlzIGV5ZXMgYW5kIGxvb2sgYXJvdW5kIApoaW0uIEhlIGRlY2xhcmVkIHRoYXQgaW4gc3BpdGUgb2YgYWxsIHRoZSAKc29ycm93IGFuZCBtaXNlcnkgb2YgdGhlIHdvcmxkLCB0aGUgZ3JlYXQgCnNjaGVtZSBvZiB3aGljaCBtYW4gaXMgYSBwYXJ0IGlzIGEgc2NoZW1lIApvZiBldGVybmFsIGp1c3RpY2UsIGFuZCB0aGF0IHRoZSBsYXcgdW5kZXIgCndoaWNoIHdlIGFyZSBodmluZyBpcyBhIGdvb2QgbGF3LCBhbmQgCm5lZWRzIG9ubHkgdGhhdCB3ZSBzaG91bGQgdW5kZXJzdGFuZCBpdCAKYW5kIGFkYXB0IG91cnNlbHZlcyB0byBpdC4gSGUgdGF1Z2h0IAp0aGF0IGFsbCBsaWZlIGlzIHN1ZmZlcmluZywgYnV0IHRoYXQgbWFuIApjYXVzZXMgaGlzIG93biB0cm91YmxlIGZvciBoaW1zZWxmLCBiZWNhdXNlIApoZSB5aWVsZHMgaGltc2VsZiBwZXJwZXR1YWxseSB0byBkZXNpcmUgZm9yIAp0aGF0IHdoaWNoIGhlIGhhcyBub3QsIGFuZCBIZSBzYWlkIHRoYXQgCmhhcHBpbmVzcyBhbmQgY29udGVudG1lbnQgY2FuIGJlIGdhaW5lZCAKYmV0dGVyIGJ5IGhtaXRpbmcgZGVzaXJlcyB0aGFuIGJ5IGluY3JlYXMtIApJbmcgcG9zc2Vzc2lvbnMuIAoKVG8gdGhpcyBlbmQgSGUgdGFidWxhdGVkIEhpcyB0ZWFjaGluZyAKaW4gdGhlIG1vc3QgbWFydmVsbG91cyBtYW5uZXIsIGFycmFuZ2luZyAKZXZlcnl0aGluZyB1bmRlciBjZXJ0YWluIGhlYWRpbmdzIHdoaWNoIApjb3VsZCBiZSByZWFkaWx5IG1lbW9yaXNlZC4gVGhpcyBjb25zdGl0dXRlcyAKaW4gcmVhbGl0eSBhIGNhcmVmdWxseSBncmFkZWQgc3lzdGVtIG9mIAptbmVtb25pY3MuIEl0IGlzIHNvIHNpbXBsZSBpbiBpdHMgYnJvYWQgb3V0bGluZSAKCgpCVURESElTTSAxNTUgCgoKdGhhdCBhbnkgY2hpbGQgY2FuIHJlbWVtYmVyIGFuZCB1bmRlci0gCnN0YW5kIGl0cyBmb3VyIG5vYmxlIHRydXRocywgaXRzIG5vYmxlIAplaWdodGZvbGQgcGF0aCwgYW5kIHRoZSBfIHByaW5jaXBsZXMgXyBvZiAKbGlmZSB3aGljaCB0aGV5IHN1Z2dlc3Q7IHlldCBpdCBpcyBjYXJyaWVkIApvdXQgc28gZWxhYm9yYXRlbHkgdGhhdCBpdCBjb25zdGl0dXRlcyBhIApzeXN0ZW0gb2YgcGhpbG9zb3BoeSB3aGljaCB0aGUgd2lzZXN0IAptYW4gbWF5IHN0dWR5IGFsbCBoaXMgbGl0ZSB0aHJvdWdoLCAKYW5kIHlldCBmaW5kIGluIGl0IGV2ZXIgbW9yZSBhbmQgbW9yZSAKaGlnaHQgdXBvbiB0aGUgcHJvYmxlbXMgb2YgbGlmZS4gCgpIZSBhbmFseXNlZCBldmVyeXRoaW5nIHRvIGFuIGFsbW9zdCBpbi0gCmNyZWRpYmxlIGV4dGVudCwgYXMgbWF5IGJlIHNlZW4gYnkgYSBzdHVkeSBvZiAKdGhlIHR3ZWx2ZSBuaWRhbmFzLCBvciBieSBIaXMgZW51bWVyYXRpb24gb2YgCnRoZSBzdGVwcyB3aGljaCBpbnRlcnZlbmUgYmV0d2VlbiB0aG91Z2h0IAphbmQgYWN0aW9uLiBIYWNoIG9mIEhpcyBmb3VyIG5vYmxlIHRydXRocyAKaXMgcmVwcmVzZW50ZWQgYnkgYSBzaW5nbGUgd29yZCwgYW5kIHlldCAKdG8gYW55IG9uZSB3aG8gaGFzIGV2ZXIgLWhlYXJkIHRoZSBleHBvc2l0aW9uIApvZiB0aGUgc3lzdGVtIGVhY2ggb2YgdGhvc2Ugd29yZHMgaW5ldml0YS0gCmJseSBjYWxscyB1cCBhIGdyZWF0IHJhbmdlIG9mIGlkZWFzLiBUaGUgCnNhbWUgdGhpbmcgaXMgdHJ1ZSBvZiB0aGUgd29yZHMgc2lnbmlmeWluZyAKdGhlIHN0ZXBzIG9mIHRoZSBub2JsZSBlaWdodGZvbGQgcGF0aCwgYW5kIApvZiB0aGUg4oCc4oCYZ3JlZ2F0IHBlcmZlY3Rpb25z4oCZ4oCZIHdoaWNoIGFyZSBzcG9rZW4gCm9mIGluIFRoZSBWb3JjZSBvZiB0aGUgU2lsZW5jZS4gQWxsIG9mIHRoZXNlIApwZXJmZWN0aW9ucyBhcmUgc2ltcGx5IHdpc2RvbSwgcG93ZXIgYW5kIApsb3ZlIGFwcGVhcmluZyBpbiBkaWZmZXJlbnQgZm9ybXMuIFRoZXkgYXJlIApzb21ldGltZXMgcmVja29uZWQgYXMgc2l4LCBidXQgbW9yZSBjb20tIAptb25seSBhcyB0ZW4uIFRoZSBzaXggYXJlIGdpdmVuIGFzIHBlcmZlY3QgCmNoYXJpdHksIHBlcmZlY3QgbW9yYWxpdHksIHBlcmZlY3QgcGF0aWVuY2UsIApwZXJmZWN0IGVuZXJneSwgcGVyZmVjdCB0cnV0aCBhbmQgXyBwZXJmZWN0IAoKCjE1NiBBRFlBUiBUQUxLUyAKCgp3aXNkb207IGFuZCB0aGUgb3RoZXIgZm91ciB3aGljaCBhcmUgc29tZS0gCnRpbWVzIGFkZGVkIGFyZSBwZXJmZWN0IHJlc2lnbmF0aW9uLCBwZXJmZWN0IApyZXNvbHV0aW9uLCBwZXJmZWN0IGtpbmRuZXNzIGFuZCBfX3BlcnRlY3QgCmFibmVnYXRpb24uIHwgCgpUaGUgcmVsaWdpb24gb2YgQnVkZGhpc20gaGFzIF9wcmFjdGktIApjYWxseSBkaXNhcHBlYXJlZCBmcm9tIEluZGlhLCB5ZXQgaXQgaGFzIGxlZnQgCmJlaGluZCBpdCBsYXN0aW5nIHJlc3VsdHMsIGFuZCB0aGUgY291bnRyeSAKYmVhcnMgZXZlcnl3aGVyZSB0aGUgc3Ryb25nIGltcHJlc3Mgb2YgSGlzIAp0ZWFjaGluZ3MuIEJlZm9yZSBIaXMgY29taW5nIGJsb29kLXNhY3JpLSAKZmljZXMgYXBwZWFyIHRvIGhhdmUgYmVlbiB1bml2ZXJzYWw7IGV2ZW4gCm5vdyB0aGV5IHN0aWxsIGV4aXN0LCBidXQgYXJlIGNvbXBhcmF0aXZlbHkgCnJhcmUsIGZvciBIZSB0YXVnaHQgdGhhdCBzdWNoIHRoaW5ncyB3ZXJlIApub3QgcGxlYXNpbmcgdG8gYW55IG5vYmxlIGRlaXR5LCBidXQgdGhhdCAKdGhlIEdvZHMgZGVzaXJlZCByYXRoZXIgdGhlIHNhY3JpZmljZSBvZiBhIApob2x5IGxpZmUuIAoKSW4gbG9va2luZyBiYWNrIHVwb24gdGhlIHJlY29yZCBvZiAKdGhvc2UgdGltZXMgd2Ugc2VlIHRoYXQgSGUgcHJlYWNoZWQgbW9zdGx5IAppbiB0aGUgb3BlbiBhaXIsIGFuZCBuZWFybHkgYWx3YXlzIHNpdHRpbmcgCmF0IHRoZSBmb290IG9mIGEgdHJlZSwgd2l0aCB0aGUgbGlzdGVuZXJzIHNpdC0gCnRpbmcgb24gdGhlIGdyb3VuZCBhYm91dCBIaW0sIG9yIHN0YW5kLSAKaW5nIGxlYW5pbmcgYWdhaW5zdCB0aGUgdHJlZXMsIG1lbiBhbmQgCndvbWVuIGludGVybWluZ2xpbmcsIGFuZCBsaXR0bGUgY2hpbGRyZW4gCnJ1bm5pbmcgYWJvdXQgYW5kIHBsYXlpbmcgdXBvbiB0aGUgCm91dHNraXJ0cyBvZiB0aGUgY3Jvd2QuIFRoZSBncmVhdCB0ZWFjaGVyIApoYWQgYSBtb3N0IHdvbmRlcmZ1bCB2b2ljZSwgZ2xvcmlvdXNseSBmdWxsIAphbmQgc29ub3JvdXMsIGFuZCBhIHBlcnNvbmFsaXR5IHdoaWNoIGluLSAKc3RhbnRseSBjb21tYW5kZWQgdGhlIGF0dGVudGlvbiBvZiBhbGwgd2hvIApoZWFyZCBIaW0sIGFuZCBpbnZhcmlhYmx5IHdvbiB0aGVpciBoZWFydHMsIAoKCkJVRERISVNNIDE1NyAKCgpldmVuIGluIHRoZSByYXJlIGNhc2VzIHdoZXJlIHRoZXkgZGlkIG5vdCAKYWdyZWUgd2l0aCB3aGF0IEhlIHNhaWQuIFRoZSBhdWRpZW5jZXMgCndlcmUgc3RpcnJlZCB1cCB0byBncmVhdCByZWxpZ2lvdXMgZmVydm91cjsgCndlIGZpbmQgdGhlbSBjb25zdGFudGx5IHJhaXNpbmcgY3JpZXMgb3QgCuKAnFNhZGh1LCBTYWRodSzigJ0gYnkgd2F5IG9mIGFwcGxhdXNlLCB3aGVuIAphbnl0aGluZyB3YXMgc2FpZCB3aGljaCBlc3BlY2lhbGx5IG1vdmVkIAp0aGVtLCBhbmQgYXQgdGhlIHNhbWUgdGltZSByYWlzaW5nIHRoZWlyIApqb2luZWQgaGFuZHMgaW4gYW4gYXR0aXR1ZGUgb2Ygc2FsdXRhdGlvbi4gClBhcnQgYXQgbGVhc3Qgb2YgdGhpcyBpbmZsdWVuY2Ugd2FzIGR1ZSAKdG8gdGhlIHRyZW1lbmRvdXNseSBzdHJvbmcgdmlicmF0aW9ucyBvZiBIaXMgCmF1cmEsIHdoaWNoIHdhcyBvZiB2ZXJ5IGdyZWF0IHNpemUsIHNvIAp0aGF0IHRoZSBhdWRpZW5jZSB3ZXJlIGFjdHVhbGx5IHNpdHRpbmcgCndpdGhpbiBpdCBhbmQgYmVpbmcgYXR0dW5lZCB0byBpdCB3aGlsZSAKdGhleSBsaXN0ZW5lZCB0byBIaXMgZGlzY291cnNlLiBJdHMgbWFnLSAKbmV0aWMgZWZmZWN0IHdhcyBhbG1vc3QgaW5kZXNjcmliYWJsZSwgYW5kIAp3aGlsZSBIaXMgaGVhcmVycyB3ZXJlIHdpdGhpbiBpdHMgaW5mbHVlbmNlIApldmVuIHRoZSBtb3N0IHN0dXBpZCBvZiB0aGVtIGNvdWxkIHVuLSAKZGVyc3RhbmQgdG8gdGhlIGZ1bGwgd2hhdGV2ZXIgSGUgLSBzYWlkLCAKdGhvdWdoIG9mdGVuIGFmdGVyd2FyZHMgd2hlbiB0aGV5IGhhZCAKcGFzc2VkIGF3YXkgZnJvbSB0aGF0IGluZmx1ZW5jZSB0aGV5IGZvdW5kIAppdCBkaWZmaWN1bHQgdG8gY29tcHJlaGVuZCBpdCBhdCBhbGwgaW4gdGhlIHNhbWUgCndheS4gVG8gdGhpcyBtYXJ2ZWxsb3VzIGluZmx1ZW5jZSBhbHNvIGlzIApkdWUgdGhlIHBoZW5vbWVub24gc28gb2Z0ZW4gZGVzY3JpYmVkIGluIAp0aGUgQnVkZGhpc3QgYm9va3PigJR0aGUgYXR0YWlubWVudCBvZiB0aGUgCmFyaGF0IGxldmVsIGJ5IHN1Y2ggbGFyZ2UgbnVtYmVycyBvZiBIaXMgCmhlYXJlcnMuIEl0IGlzIHF1aXRlIGEgY29tbW9uIHRoaW5nIHRvIApyZWFkIGluIHRoZSBhY2NvdW50cyBnaXZlbiBpbiB0aGUgQnVkZGhpc3QgCnNjcmlwdHVyZXMgdGhhdCBhZnRlciBhIHNlcm1vbiBvZiB0aGUgQnVwcEhhIAoKCjE1OCBBRFlBUiBUQUxLUyAKCgpodW5kcmVkcyBvZiBtZW4sIGV2ZW4gdGhvdXNhbmRzLCByZWFjaGVkIAp0aGUgYXJoYXQgbGV2ZWwuIEtub3dpbmcgd2hhdCBhXyB2ZXJ5IApoaWdoIGRlZ3JlZSBvZiBhdHRhaW5tZW50IHRoaXMgbWVhbnMsIHRoaXMgCnNlZW1lZCB0byB1cywgd2hlbiB3ZSByZWFkIGl0LCBhbG1vc3QgCmluY3JlZGlibGUsIGFuZCB3ZSBzdXBwb3NlZCBpdCB0byBiZSBzaW1wbHkgCmEgY2FzZSBvZiBvcmllbnRhbCBleGFnZ2VyYXRpb247IGJ1dCBsYXRlciAKYW5kIGNsb3NlciBzdHVkeSBoYXMgc2hvd24gdXMgdGhhdCB0aGUgCmFjY291bnRzIGFyZSBhY3R1YWxseSB0cnVlLiBTbyByZW1hcmthYmxlIAphIHJlc3VsdCBzZWVtZWQgdG8gY2FsbCBmb3IgZnVydGhlciBpbnZlc3RpZ2EtIAp0aW9uIGludG8gaXRzIGNhdXNlcywgYW5kIHdlIGZvdW5kIHRoYXQgaW4gCm9yZGVyIHRvIHVuZGVyc3RhbmQgYWxsIHRoaXMgaXQgd2FzIG5lY2Vzc2FyeSAKdG8gdGFrZSBpbnRvIGFjY291bnQgbm90IHRoaXMgb25lIGxpZmUgb25seSwgCmJ1dCB0aGUgd29yayBvZiBtYW55IHByZXZpb3VzIGluY2FybmF0aW9ucy4gCgpXZSBtdXN0IHJlbWVtYmVyIHRoYXQgdGhlIExvcmQgR2F1dGFtYSAKaXMgdGhlIEJ1cHB1YSBvZiB0aGUgZm91cnRoIHJvb3QtcmFjZSwgZXZlbiAKdGhvdWdoIHRoaXMgbGFzdCBpbmNhcm5hdGlvbiBvZiBIaXMgd2FzIHRha2VuIAppbiB0aGUgZmlmdGgsIEhlIGhhZCBiZWVuIGJvcm4gbWFueSB0aW1lcyAKaW4gdmFyaW91cyBBdGxhbnRlYW4gcmFjZXMsIGFuZCBhbHdheXMgYXMgYSAKZ3JlYXQgdGVhY2hlci4gSW4gZWFjaCBvZiB0aG9zZSBsaXZlcyBIZSAKaGFkIGRyYXduIGFyb3VuZCBIaW0gbWFueSBwdXBpbHMsIHdobyAKaGFkIGdyYWR1YWxseSBiZWVuIHJhaXNlZCB0byBoaWdoZXIgbGV2ZWxzIApvZiB0aG91Z2h0IGFuZCBvZiBoZmUsIGFuZCB3aGVuIEhlIGNhbWUgCmludG8gSW5kaWEgZm9yIHRoaXMgbGFzdCBjdWxtaW5hdGluZyBiaXJ0aCBIZSAKYXJyYW5nZWQgdGhhdCBhbGwgdGhvc2Ugd2hvbSBhdCBtYW55IGRpZmZlci0gCmVudCB0aW1lcyBhbmQgaW4gbWFueSBkaWZmZXJlbnQgbGFuZHMgSGUgCmhhZCBpbmZsdWVuY2VkIHNob3VsZCBiZSBicm91Z2h0IHRvZ2V0aGVyIAppbnRvIGluY2FybmF0aW9uIGF0IHRoZSBzYW1lIHRpbWUuIFRodXMgSGlzIAphdWRpZW5jZXMgd2VyZSB0byBhIGxhcmdlIGV4dGVudCBjb21wb3NlZCAKCgpCVURESElTTSAxNTkgCgoKb2YgZnVsbHkgcHJlcGFyZWQgYW5kLCBhcyBpdCB3ZXJlLCBoaWdobHkgCnNwZWNpYWxpc2VkIHNvdWxzLCBhbmQgd2hlbiB0aGVzZSBjYW1lIHVuZGVyIAp0aGUgaW5mbHVlbmNlIG9mIHRoZSBleHRyYW9yZGluYXJpbHkgcG93ZXJmdWwgCm1hZ25ldGlzbSBvZiBhIEJ1cHB1YSwgdGhleSB1bmRlcnN0b29kIAphbmQgZm9sbG93ZWQgZXZlcnkgd29yZCB3aGljaCBIZSBzYWlkLCAKYW5kIHRoZSBhY3Rpb24gdXBvbiB0aGVtIGFzIGVnb3Mgd2FzIG9mIAp0aGUgbW9zdCB3b25kZXJmdWxseSBzdGltdWxhdGluZyBuYXR1cmUuIApUaGVyZWZvcmUgaXQgd2FzIHRoYXQgdGhleSBzbyByZWFkaWx5IHJlLSAKc3BvbmRlZDsgdGhlcmVmb3JlIGl0IHdhcyB0aGF0IHNvIGxhcmdlIGEgCm51bWJlciBvZiB0aGVtIGNvdWxkIGJlIGFuZCB3ZXJlIHJhaXNlZCAKc28gcmFwaWRseSB0byBzdWNoIGRpenp5IGhlaWdodHMuIAoKSW4gdGhlIHRoaXJkIHZvbHVtZSBvZiBUaGUgU2VjcmV0IERvYy0gCnRpaW5lIHdlIHNoYWxsIGZpbmQgYW4gZXhjZWVkaW5nbHkgaW50ZXJlc3RpbmcgCmFuZCBzdWdnZXN0aXZlIHNlY3Rpb24gY2FsbGVkIFRoZSBNeXN0ZXJ5IG9mIApCdWRkaGEsIHdoaWNoIHJlZmVycyB0byB0aGUgZmFjdCB0aGF0IHRoZSAKQnVwcHVhIHByZXBhcmVkIEhpcyBvd24gaW5uZXIgYm9kaWVzIG9mIAp2ZXJ5IGxpZ2ggZ3JhZGVzIG9mIG1hdHRlciwgd2l0aCB0aGUgZnVsbGVzdCAKZGV2ZWxvcG1lbnQgb2YgdGhlIHNwaXJpbGxlLiBIaXMgYnVkZGhpY2UsIApjYXVzYWwgYW5kIG1lbnRhbCBib2RpZXMgYXJlIGtlcHQgdG9nZXRoZXIgCmZvciBvdGhlciBHcmVhdCBPbmVzIHRvIHVzZSwgYmVjYXVzZSBvZiAKdGhlIGV4Y2VlZGluZyBkaWZmaWN1bHR5IG9mIHByb2R1Y2luZyBvdGhlcnMgCmVxdWFsIHRvIHRoZW0uIFRoZSBDaHJpc3QgdXNlZCB0aGVtIArigJhhbG9uZyB3aXRoIHRoZSBwaHlzaWNhbCBib2R5IG9mIEplc3VzLCAKd2hpbGUgdGhlIGxhdHRlciB3YWl0ZWQgb24gaGlnaGVyIHBsYW5lcyBpbiAKaGlzIG93biB2ZWhpY2xlcy4gU2Fua2FyYWNoYXJ5YSBhbHNvIHVzZWQgCnRoZXNlIOKAnHJlbWFpbnMu4oCdIEhlbmNlIGFyb3NlIHRoZSBpbmNvcnJlY3QgCmlkZWEgdGhhdCBIZSB3YXMgYSByZWluY2FybmF0aW9uIG9mIHRoZSAKQnVwcHVhLiBUaGUgY29taW5nIENocmlzdCB3aWxsIGFsc28gdXNlIAoKCjE2MCBBRFlBUiBUQUxLUyAKCgp0aGVzZSB2ZWhpY2xlcywgd2VkZGluZyB0aGVtIHRvIGFub3RoZXIgCnBoeXNpY2FsIGJvZHkgd2hpY2ggaXMgZXZlbiBub3cgYmVpbmcgCnByZXBhcmVkIGZvciBIaW0uIAoKQnVkZGhpc20gc3RpbGwgY2xhaW1zIGEgbGFyZ2VyIG51bWJlciBvZiAKYWRoZXJlbnRzIHRoYW4gYW55IG90aGVyIHJlbGlnaW9uIGluIHRoZSAKd29ybGQsIGFuZCBpcyBhIGh2aW5nIGluZmx1ZW5jZSBpbiB0aGUgbGl2ZXMgCm9mIG1pbGxpb25zIG9mIG91ciBmZWxsb3ctbWVuLiBJdCB3b3VsZCBiZSAKcXVpdGUgdW5mYWlyIHRvIGp1ZGdlIGl0IGJ5IHdoYXQgaXMgd3JpdHRlbiAKYWJvdXQgaXQgYnkgSEt1cm9wZWFuIG9yaWVudGFsaXN0cy4gV2hlbiBJIAp3YXMgaW4gQ2V5bG9uIGFuZCBCdXJtYSBJIGNvbXBhcmVkIHRoZXNlIAphY2NvdW50cyB3aXRoIHRoZSBpbnRlcnByZXRhdGlvbiBnaXZlbiB0byB0aGUgCmRvY3RyaW5lcyBieSB0aGUgbGl2aW5nIGZvbGxvd2VycyBvZiBIaXMgcmVsaS0gCmdpb24uIExlYXJuZWQgbW9ua3MgaW4gdGhlc2UgY291bnRyaWVzIAphcHByb2FjaCB0aGUgc3ViamVjdCB3aXRoIGFuIGFjY3VyYWN5IG9mIAprbm93bGVkZ2UgYXQgbGVhc3QgZXF1YWwgdG8gdGhhdCBvZiB0aGUgCm1vc3QgYWR2YW5jZWQgb3JpZW50YWxpc3RzLCBidXQgdGhlaXIgaW50ZXItIApwcmV0YXRpb24gb2YgdGhlIGRvY3RyaW5lcyBpcyB2ZXJ5IGZhciBsZXNzIAp3b29kZW4gYW5kIGxpZmVsZXNzLiBCeSBmYXIgdGhlIGJlc3QgYm9vayAKaW4gRW5nbGlzaCB0byBnaXZlIG9uZSBhIHJlYWwgaWRlYSBvZiB0aGUgCnJlbGlnaW9uIGFzIGl0IGlzIGhlbGQgYnkgbGl2aW5nIG1lbiBpcyBUaGUgCkluZ2h0IG9mIEFzaWEsIGJ5IFNpciBFZHdpbiBBcm5vbGQ7IGFuZCAKYW5vdGhlciBib29rLCB3aGljaCBtYWtlcyBhIGdvb2Qgc2Vjb25kIAp0byBpdCwgaXMgVGhlIFNvdWwgb2YgwqsgUGVvcGxlLCBieSBILiBGaWVsZGluZyAKSGFsbC4gU29tZSBjcml0aWNzIGhhdmUgc2FpZCB0aGF0IFNpciBFZHdpbiAKQXJub2xkIGhhcyBnb25lIGEgbGl0dGxlIGJleW9uZCB0aGUgYmFyZSAKbGl0ZXJhbCBtZWFuaW5nIG9mIHRoZSB3b3JkcyBvZiB0aGUgdGV4dCwgCmFuZCBpcyB0cnlpbmcgdG8gcmVhZCBDaHJpc3RpYW4gaWRlYXMgaW50byAKdGhlbS4gSSBkbyBub3QgdGhpbmsgdGhpcyB0byBiZSBzbywgYW5kIAoKCkJVRERISVNNIDE2XSAKCgpJIGhhdmUgY2VydGFpbmx5IGZvdW5kIHRoYXQgaGUgZXhwcmVzc2VzIApmYXIgbW9yZSBjbG9zZWx5IHRoZSBmZWVsaW5nIGFuZCBhdHRpdHVkZSBvZiAKdGhlIEJ1ZGRoaXN0cyB0aGFuIGFueSBvdGhlciB3cml0ZXIuIAoKQnVkZGhpc20gaXMgbm93IGRpdmlkZWQgaW50byB0d28gZ3JlYXQgCkdodXJjaGVzLCB0aGUgTm9ydGhlcm4gYW5kIHRoZSBTb3V0aGVybiwgCmFuZCBib3RoIG9mIHRoZW0gaGF2ZSBkZXBhcnRlZCB0byBzb21lIApleHRlbnQgZnJvbSB0aGUgb3JpZ2luYWwgdGVhY2hpbmcgb2YgdGhlIApCdXBwbnJhLCB0aG91Z2ggaW4gZGlmZmVyZW50IGRpcmVjdGlvbnMuIFRoZSAKcmVsaWdpb24gaXMgc28gcGxhaW4gYW5kIF8gc3RyYWlnaHRmb3J3YXJkLCAKYW5kIHNvIG9idmlvdXNseSBjb21tb24tc2Vuc2UgdGhhdCBhbG1vc3QgCmFueSBwZXJzb24gbWF5IHJlYWRpbHkgYWRhcHQgaGltc2VsZiB0byBpdCwgCndpdGhvdXQgbmVjZXNzYXJpbHkgZ2l2aW5nIHVwIHRoZSBiZWxpZWZzIAphbmQgcHJhY3RpY2VzIG9mIG90aGVyIGZhaXRocy4gQXMgYSBjb25zZS0gCnF1ZW5jZSBvZiB0aGlzIGluIHRoZSBOb3J0aGVybiBDaHVyY2ggd2UgCmhhdmUgYSBmb3JtIG9mIEJ1ZGRoaXNtIHdpdGggYW4gaW1tZW5zZSAKYW1vdW50IG9mIGFjY3JldGlvbi4gSXQgc2VlbXMgdG8gaGF2ZSAKYWJzb3JiZWQgaW50byBpdHNlbGYgbWFpZnkgY2VyZW1vbmllcyBhbmQgCmJlbGllZnMgb2YgdGhlIGFib3JpZ2luYWwgZmFpdGggd2hpY2ggaXQgc3VwLSAKcGxhbnRlZDsgc28gdGhhdCBpbiBUaWJldCwgZm9yIGV4YW1wbGUsIHdlIApmaW5kIGl0IGluY2x1ZGluZyBhXyB3aG9sZSBoaWVyYXJjaHkgb2YgCm1pbm9yIGRlaXRpZXMsIGRldmFzIGFuZCBkZW1vbnMgd2hpY2ggd2VyZSAKZW50aXJlbHkgdW5rbm93biB0byB0aGUgb3JpZ2luYWwgc2NoZW1lIG9mIAp0aGUgQnVwcHVhLiBUaGUgU291dGhlcm4gQ2h1cmNoLCBvbiB0aGUgCm90aGVyIGhhbmQsIGluc3RlYWQgb2YgYWRkaW5nIHRvIHRoZSB0ZWFjaC0gCmluZyBvZiB0aGUgQnVwcEhhLCBoYXMgbG9zdCBzb21ldGhtZyBmcm9tIAppdC4gSXQgaGFzIGludGVuc2lmaWVkIHRoZSBtYXRlcmlhbCBhbmQgdGhlIAphYnN0cmFjdCBzaWRlIG9mIHRoZSBwaGlsb3NvcGh5LiAKCgpJdCB0ZWFjaGVzIHRoYXQgbm90aGluZyBidXQgS2FybWEgCn0gMjEgCgoKMTYyIEFEWUFSIFRBTEtTIAoKCnBhc3NlcyBvdmVyIGZyb20gbGlmZSB0byBoZmXigJR0aGF0IHRoZXJlIGlzIApubyBwZXJtYW5lbnQgZWdvIGluIG1hbiwgYnV0IHRoYXQgaW0gCmhpcyBuZXh0IGJpcnRoIGhlIGlzIGluIGVmZmVjdCBhIG5ldyAKbWFuLCB3aG8gaXMgdGhlIHJlc3VsdCBvZiB0aGUga2FybWEgCm9mIHRoZSBwcmV2aW91cyBsaWZlOyBhbmQgdGhleSBxdW90ZSB2YXJpb3VzIApzYXlpbmdzIG9mIHRoZSBCdXBwSGEgaW4gc3VwcG9ydCBvZiB0aGlzLiAKSXQgaXMgdHJ1ZSB0aGF0IEhlIG9mdGVuIHNwb2tlIHZlcnkgCnN0cm9uZ2x5IGFnYWluc3QgdGhlIHBlcnNpc3RlbmNlIG9mIHRoZSBwZXItIApzb25hbGl0eSwgYW5kIHRoYXQgSGUgYXNzdXJlZCBIaXMgaGVhcmVycyAKYWdhaW4gYW5kIGFnYWluIHRoYXQgbm90aGluZ+KAmSB3aGF0ZXZlciAKd2hpY2ggdGhleSBrbmV3IGluIGNvbm5lY3Rpb24gd2l0aCBhIG1hbiAKY291bGQgcGFzcyBvdmVyIHRvIGFub3RoZXIgYmlydGguIEJ1dCBIZSAKbm93aGVyZSBkZW5pZWQgdGhlIGluZGl2aWR1YWh0eTsgaW4gZmFjdCAKbWFueSBvZiBIaXMgc2F5aW5ncyBhYnNvbHV0ZWx5IGFmZmlybSBpdC4gClRha2UgZm9yIGV4YW1wbGUgYSB0ZXh0IHdoaWNoIG9jY3VycyBpbiB0aGUgClNhbWFuaWFwaGFsYXN1dHRhIG9mIHRoZSBEaWdoYS1OaWtheWEuIApXaGVuIGZpcnN0IG1lbnRpb25pbmcgdGhlIGNvbmRpdGlvbiBhbmQgCnRyYWluaW5nIG9mIHRoZSBtaW5kIHRoYXQgYXJlIG5lY2Vzc2FyeSAKZm9yIHN1Y2Nlc3MgaW4gc3Bpcml0dWFsIHByb2dyZXNzLCB0aGUgQnVwcHVhIApkZXNjcmliZXMgaG93IGEgbWFuIGNhbiByZWNvdmVyIHRoZSBtZW1vcnkgCm9mIGhpcyBwYXN0IGxpdmVzLCBhbmQgaG93IGhlIHNlZXMgYWxsIHRoZSBzY2VuZXMgCmluIHdoaWNoIGhlIHdhcyBpbiBhbnkgd2F5IGNvbmNlcm5lZCBfcGFzcy0gCmluZyBpbiBzdWNjZXNzaW9uIGJlZm9yZSBoaXMgbWluZOKAmXMgZXllLiBIZSAKaWxsdXN0cmF0ZXMgaXQgYnkgc2F5aW5nOiAKCuKAnFRmIGFtYW4gZ29lcyBvdXQgZnJvbSBoaXMgb3duIHZpbGxhZ2UgCnRvIGFub3RoZXIgYW5kIHRoZW5jZSB0byBhbm90aGVyLCBhbmQgZnJvbSAKdGhlcmUgY29tZXMgYmFjayBhZ2FpbiB0byBoaXMgb3duIHZpbGxhZ2UsIApoZSBtYXkgdGhpbmsgdGh1czsg4oCYSSBpbmRlZWQgd2VudCBmcm9tIG15IAoKCkJVRERISVNNIDE2MyAKCgpvd24gdmlsbGFnZSB0byB0aGF0IG90aGVyLiBUaGVyZSBJIHN0b29kIHRodXMgOyAKSSBzYXQgaW4gdGhpcyBtYW5uZXI7IHRodXMgSSBzcG9rZSwgYW5kIHRodXMgSSAKcmVtYWluZWQgc2lsZW50LiBGcm9tIHRoYXQgdmlsbGFnZSBhZ2FpbiAKSSB3ZW50IHRvIGFub3RoZXIsIGFuZCBJIGRpZCB0aGUgc2FtZSB0aGVyZS4gClRoZSBzYW1lIOKAmEkgYW3igJkgcmV0dXJuZWQgZnJvbSBfXyB0aGF0IAp2aWxsYWdlIHRvIG15IG93biB2aWxsYWdlLuKAmSBJbiB0aGUgdmVyeSAKc2FtZSB3YXksIE8gS2luZywgdGhlIGFzY2V0aWMsIHdoZW4gaGlzIAptaW5kIGlzIHB1cmUsIGtub3dzIGhpcyBmb3JtZXIgYmlydGhzLiBIZSAKdGhpbmtzOiDigJhJbiBzdWNoIGEgcGxhY2UgSSBoYWQgc3VjaCBhIG5hbWUuIApJIHdhcyBib3JuIGltIHN1Y2ggYV8gZmFtaWx5LCBzdWNoIAp3YXMgbXkgY2FzdGUsIHN1Y2ggd2FzIG15IGZvb2QsIGFuZCBpbiAKc3VjaCBhbmQgc3VjaCBhIHdheSBJIGV4cGVyaWVuY2VkIHBsZWEtIApzdXJlIGFuZCBwYWluLCBhbmQgbXkgbGlmZSBleHRlbmRlZCAKdGhyb3VnaCBpbiBzb21lIG90aGVyIHBsYWNlLCBhbmRfIHRoZXJlIAphbHNvIEkgaGFkIHN1Y2ggYW5kXyBzdWNoIF8gY29uZGl0aW9ucy4gClRoZW5jZSByZW1vdmVkLCB0aGUgc2FtZSDigJhJ4oCZIGFtIG5vdyBib3JuIApoZXJl4oCZLiAKClRoaXMgcXVvdGF0aW9uIHNob3dzIHZlcnkgY2xlYXJseSB0aGUgCmRvY3RybWUgb2YgdGhlIEJ1YnBIYSB3aXRoIHJlZ2FyZCB0byAKdGhlIHJlaW5jYXJuYXRpbmcgZWdvLiBIZSBnaXZlcyBpbGx1c3RyYXRpb25zIAphbHNvIGluIHRoZSBzYW1lIFN1dHRhIG9mIHRoZSBtYW5uZXIgaW4gCndoaWNoIGFuIGFzY2V0aWMgY2FuIGtub3cgdGhlIHBhc3QgYmlydGhzIApvZiBvdGhlcnPigJRob3cgaGUgY2FuIHNlZSB0aGVtIGRpZSBpbiAKb25lIHBsYWNlLCBhbmQgYWZ0ZXIgdGhlIHNvcnJvd3MgYW5kIGpveXMgCm9mIGhlbGwgYW5kIGhlYXZlbiB0aGUgc2FtZSBtZW4gYXJlIGJvcm4gCmFnYWluIHNvbWV3aGVyZSBlbHNlLiBJdCBpcyB0cnVlIHRoYXQgaW4gCnRoZSBCcmFobWFqZGxhIFN1dHRhIEhlIG1lbnRpb25zIGFsbCB0aGUgCnZhcmlvdXMgYXNwZWN0cyBvZiB0aGUgc291bCwgYW5kIHNheXMgdGhhdCAKCgoxNjQgQURZQVIgVEFMS1MgCgoKdGhleSBkbyBub3QgYWJzb2x1dGVseSBleGlzdCwgYmVjYXVzZSB0aGVpciAKZXhpc3RlbmNlIGRlcGVuZHMgdXBvbiDigJxjb250YWN0LOKAnSB0aGF0IGlzIAp0byBzYXkgdXBvbiByZWxhdGlvbi4gQnV0IGluIHRodXMgZGVueWluZyAKdGhlIGFic29sdXRlIHJlYWxpdHkgb2YgdGhlIHNvdWwgSGUgYWdyZWVzIAp3aXRoIHRoZSBvdGhlciBncmVhdCBJbmRpYW4gdGVhY2hlcnMsIGZvciAKdGhlIGV4aXN0ZW5jZSBub3Qgb25seSBvZiB0aGUgc291bCBidXQgZXZlbiAKb2YgdGhlIExvdW9zIEhpbXNlbGYgaXMgdHJ1ZSBvbmx5IHJlbGF0aXZlbHkuIAoKVW50cmFpbmVkIG1pbmRz4oCZIGZyZXF1ZW50bHkgbWlzdW5kZXItIApzdGFuZCB0aGVzZSBpZGVhcywgYnV0IHRoZSBjYXJlZnVsIHN0dWRlbnQgCm9mIG9yaWVudGFsIHRob3VnaHQgd2lsbCBub3QgZmFpbCB0byBncmFzcCAKZXhhY3RseSB3aGF0IGlzIG1lYW50LCBhbmQgdG8gcmVhbGlzZSB0aGF0IAp0aGUgdGVhY2hpbmcgb2YgdGhlIEJ1cHB5YSBpbiB0aGlzIHJlc3BlY3QgCmlzIGV4YWN0bHkgdGhhdCBub3cgZ2l2ZW4gYnkgVGhlb3NvcGh5LiAKSXQgaXMgbm90IGRpZmZpY3VsdCB0byBzZWUgaG93IHRoZXNlIHZhcmlvdXMgCnRleHRzIG1pZ2h0IGJlIHNvIGVtcGhhc2lzZWQgb3IgZGlzdG9ydGVkIAphcyB0byBzZWVtIHRvIGNvbnRyYWRpY3Qgb25lIGFub3RoZXIsIGFuZCAKdGhlIFNvdXRoZXJuIENodXJjaCBoYXMgY2hvc2VuIHRvIGNsaW5nIApyYXRoZXIgdG8gdGhlIGRlbmlhbCBvZiB0aGUgcGVybWFuZW5jZSBvZiB0aGUgCnBlcnNvbmFsaXR5IHRoYW4gdG8gdGhlIGFzc2VydGlvbiBvZiB0aGUgCmNvbnRpbnVpdHkgb2YgdGhlIGluZGl2aWR1YWxpdHksIGp1c3QgYXMgaW4gCkNocmlzdGlhbml0eSBzb21lIHBlb3BsZSBoYXZlIGFjcXVpcmVkIHRoZSAKdGhlIGhhYml0IG9mIGxheWluZyBzdHJlc3Mgb24gXyBwYXJ0aWN1bGFyIAp0ZXh0cywgYW5kIGlnbm9yaW5nIG90aGVycyB3aGljaCBjb250cmFkaWN0IAp0aGVtLiAKCkFub3RoZXIgcG9pbnQgYXMgdG8gd2hpY2ggdGhlcmUgaXMgYSAKdmVyeSBzaW1pbGFyIG1pc3VuZGVyc3RhbmRpbmcgaXMgdGhlIGNvbi0gCnN0YW50bHkgcmVwZWF0ZWQgYXNzZXJ0aW9uIHRoYXQgbmlydmFuYSBpcyAKZXF1aXZhbGVudCB0byBhbm5paGlsYXRpb24uIEV2ZW4gTWF4IE1paWxsZXIsIAoKCkJVRERISVNNIMKwIDE2NSAKCgp0aGUgZ3JlYXQgT3hmb3JkIFNhbnNrcml0aXN0LCB3YXMgdW5kZXIgdGhpcyAKZGVsdXNpb24gZm9yIG1hbnkgeWVhcnMsIGJ1dCBsYXRlciBpbiBoaXMgCmxpZmUgd2l0aCBmdXJ0aGVyIGFuZCBkZWVwZXIgc3R1ZHkgaGUgY2FtZSAKdG8gdW5kZXJzdGFuZCB0aGF0IGluIHRoaXMgaGUgaGFkIGJlZW4gCm1pc3Rha2VuLiBUaGUgZGVzY3JpcHRpb24gd2hpY2ggdGhlIExvcmQgCkJ1cHB1YSBIaW1zZWxmIGdpdmVzIG9mIG5pcnZhbmEgaXMgc28gZmFyIAphYm92ZSB0aGUgY29tcHJlaGVuc2lvbiBvZiBhbnkgbWFuIHdobyAKaXMgdHJhaW5lZCBvbmx5IGluIG9yZGluYXJ5IGFuZCBfIHdvcmxkbHkgCm1ldGhvZHMgb2YgdGhvdWdodCB0aGF0IGl0IGlzIGxpdHRsZSB3b25kZXIgCnRoYXQgaXQgc2hvdWxkIGhhdmUgYmVlbiBtaXN1bmRlcnN0b29kIAphdCBmaXJzdCBzaWdodCBieSB0aGUgRXVyb3BlYW4gb3JpZW50YWxpc3RzIDsgCmJ1dCBubyBvbmUgd2hvIGhhcyBsaXZlZCBpbiB0aGUgS2FzdCAKYW1vbmcgdGhlIEJ1ZGRoaXN0cyBjYW4gZm9yIGEgbW9tZW50IApzdXBwb3NlIHRoYXQgdGhleSByZWdhcmQgYW5uaWhpbGF0aW9uIGFzIAp0aGUgZW5kIHdoaWNoIHRoZXkgYXJlIHN0cml2aW5nIHRvIHJlYWNoLiAKCkl0IGlzIHF1aXRlIHRydWUgdGhhdCB0aGUgYXR0YWluaW5nIG9mIG5pci0gCnZhbmEgZG9lcyBpbnZvbHZlIHRoZSB1dHRlciBhbm1pYmlsYXRpb24gb2YgCnRoYXQgbG93ZXIgc2lkZSBvZiBtYW4gd2hpY2ggaXMgaW4gdHJ1dGggCmFsbCB0aGF0IHdlIGtub3cgb2YgaGltIGF0IHRoZSBwcmVzZW50IHRpbWUuIApUaGUgcGVyc29uYWxpdHksIGxpa2UgZXZlcnl0aGluZyBjb25uZWN0ZWQgCndpdGggdGhlIGxvd2VyIHZlaGljbGVzLCBpcyBpbXBlcm1hbmVudCBhbmQgCndpbGwgZGlzYXBwZWFyLiBJZiB3ZSBlbmRlYXZvdXIgdG8gcmVhbGlzZSAKd2hhdCBtYW4gd291bGQgYmUgd2hlbiBkZXByaXZlZCBvZiBhbGwgCndoaWNoIGlzIGluY2x1ZGVkIHVuZGVyIHRoZXNlIHRlcm1zIHdlIHNoYWxsIApzZWUgdGhhdCBmb3IgdXMgYXQgb3VyIHByZXNlbnQgc3RhZ2UgaXQgd291bGQgCmJlIGRpZmZpY3VsdCB0byBjb21wcmVoZW5kIHRoYXQgYW55dGhpbmcgCnJlbWFpbmVkLCBhbmQgeWV0IHRoZSB0cnV0aCBpcyB0aGF0IGV2ZXJ5LSAKdGhpbmcgcmVtYWluc+KAlHRoYXQgaW4gdGhlIGdsb3JpZmllZCBzcGlyaXQgCgoKMTY2IEFEWUFSIFRBTEtTIAoKCndoaWNoIHRoZW4gZXhpc3RzLCBhbGwgdGhlIGVzc2VuY2Ugb2YgYWxsIHRoZSAKcXVhbGl0aWVzIHdoaWNoIGhhdmUgYmVlbiBkZXZlbG9wZWQgdGhyb3VnaCAKdGhlIGNlbnR1cmllcyBvZiBzdHJpZmUgYW5kIHN0cmVzcyBpbiBlYXJ0aGx5IAppbmNhcm5hdGlvbiB3aWxsIGluaGVyZSB0byB0aGUgZnVsbGVzdCBwb3NzaWJsZSAKZGVncmVlLiBUaGUgbWFuIGhhcyBiZWNvbWUgbW9yZSB0aGFuIAptYW4sIHNpbmNlIGhlIGlzIG5vdyBvbiB0aGUgdGhyZXNob2xkIG9mIApEaXZpbml0eTsgeWV0IGhlIGlzIHN0aWxsIGhpbXNlbGYsIGV2ZW4gdGhvdWdoIAppdCBiZSBhIHNvIG11Y2ggd2lkZXIgc2VsZi4gCgpNYW55IGRlZmluaXRpb25zIGhhdmUgYmVlbiBnaXZlbiBvZiAKbmlydmFuYSwgYW5kIG5hdHVyYWxseSBub25lIG9mIHRoZW0gY2FuIApwb3NzaWJseSBiZSBzYXRpc2ZhY3Rvcnk7IHBlcmhhcHMgdGhlIGJlc3QgCm9uIHRoZSB3aG9sZSBpcyB0aGF0IG9mIHBlYWNlIGluIG9tbmlzY2llbmNlLiAKTWFueSB5ZWFycyBhZ28gd2hlbiBJIHdhcyBwcmVwYXJpbmcgYSAKc2ltcGxlIGludHJvZHVjdG9yeSBjYXRlY2hpc20gb2YgdGhlaXIgcmUtIApsaWdpb24gZm9yIEJ1ZGRoaXN0IGNoaWxkcmVuLCB0aGUgY2hpZWYgQWJib3QgClN1bWFuZ2FsYSBoaW1zZWxmIGdhdmUgbWUgYXMgdGhlIGJlc3QgCmRlZmluaXRpb24gb2YgbmlydmFuYSB0byBwdXQgYmVmb3JlIHRoZW0gCnRoYXQgaXQgd2FzIGEgXyBjb25kaXRpb24gb2YgcGVhY2UgYW5kIApibGVzc2VkbmVzcyBzbyBoaWdoIGFib3ZlIG91ciBwcmVzZW50IHN0YXRlIAp0aGF0IGl0IHdhcyBpbXBvc3NpYmxlIGZvciB1cyB0byB1bmRlci0gCnN0YW5kIGl0LiBTdXJlbHkgdGhhdCBpcyBmYXIgcmVtb3ZlZCBmcm9tIAp0aGUgaWRlYSBvZiBhbm1pdWxhdGlvbi4gVHJ1bHkgYWxsIHRoYXQgd2UgCm5vdyBjYWxsIHRoZSBtYW4gaGFzIF8gZGlzYXBwZWFyZWQsIGJ1dCAKdGhhdCBpcyBub3QgYmVjYXVzZSB0aGUgaW5kaXZpZHVhbGl0eSBpcyAKYW5uaWhpbGF0ZWQsIGJ1dCBiZWNhdXNlIGl0IGlzIGxvc3QgaW4gCmRpdmluaXR5LiAKClRoZSBCdXBwYWEgSGltc2VsZiBvbmNlIHNhaWQ6IOKAmCBOaXJ2YW5hIAppcyBub3QgYmVpbmcsIGJ1dCBhbHNvIGl0IDFzIG5vdCBub24tYmVpbmcu4oCd4oCZIAoKCkJVRERISVNNIDE2NyAKCgpBbm90aGVyIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUgTm9ydGhlcm4gCkNodXJjaCBvZiBCdWRkaGlzbSBhbmQgdGhlIFNvdXRoZXJuIDFzIAp0aGF0IHRoZXkgYWRvcHQgZGlmZmVyZW50IHZlcnNpb25zIG9mIHRoZSAKc2NyaXB0dXJlcy4gSXQgaXMgdXN1YWxseSBzdGF0ZWQgdGhhdCB0aGUgCk5vcnRoZXJuIENodXJjaCBhZG9wdHMgdGhlIE1haGF5YW5hIGFuZCAKdGhlIFNvdXRoZXJuIHRoZSBIaW5heWFuYSwgYnV0IHdoZXRoZXIgCmV2ZW4gdGhpcyBtdWNoIG1heSBiZSBzYWZlbHkgc2FpZCBkZXBlbmRzIAp1cG9uIHRoZSBzaGFkZSBvZiBtZWFuaW5nIHdoaWNoIHdlIGF0dGFjaCAKdG8gYSBtdWNoLWRpc3B1dGVkIHdvcmQuIFlhbmEgbWVhbnMgdmVoaS0gCmNsZSwgYW5kIGl0aXMgYWdyZWVkIHRoYXQgaXQgMXMgdG8gYmUgYXBwbGllZCAKdG8gdGhlIGRoYW1tYSBvciBsYXcsIGFzIHRoZSB2ZXNzZWwgd2hpY2ggCmNvbnZleXMgdXMgYWNyb3NzIHRoZSBzZWEgb2YgbGlmZSB0byBuaXJ2YW5hLCAKYnV0IHRoZXJlIGFyZSBhdCBsZWFzdCBmaXZlIHRoZW9yaWVzIGFzIHRvIHRoZSAKZXhhY3Qgc2Vuc2UgaW4gd2hpY2ggaXQgaXMgdG8gYmUgdGFrZW4uIAoKMS4gVGhhdCBpdCByZWZlcnMgc2ltcGx5IHRvIHRoZSBsYW5ndWFnZSAKaW4gd2hpY2ggdGhlIGxhdyBpcyB3cml0dGVuLCB0aGUgZ3JlYXRlciAKdmVoaWNsZSBiZWluZyBieSB0aGlzIGh5cG90aGVzaXMgU2Fuc2tyaXQsIAphbmQgdGhlIGxlc3NlciB2ZWhpY2xlIFBhbGnigJRhIHRoZW9yeSB3aGljaCAKc2VlbXMgdG8gbWUgdW50ZW5hYmxlLiBJdCBpcyB0cnVlIHRoYXQgCnRoZSBOb3J0aGVybiBDaHVyY2ggdXNlcyB0aGUgU2Fuc2tyaXQgCnRyYW5zbGF0aW9uLCB3aGlsZSB0aGUgU291dGhlcm4gc2NyaXB0dXJlcyBhcmUgCmluIFBhbGksIHRoZSBsYW5ndWFnZSB3aGljaCB0aGUgTG9yZCAKQnVwcHVhIHNwb2tlIHdoZW4gb24gZWFydGguIEl0IGlzIHN0YXRlZCAKdGhhdCB0aGUgUGFsaSBzY3JpcHR1cmVzIHdoaWNoIHdlIG5vdyAKcG9zc2VzcyBhcmUgbm90IGluIHRoZSBvcmlnaW5hbCBmb3JtLCAKYnV0IHRoYXQgYWxsIHRoZSBvcmlnaW5hbHMgZXhpc3RpbmcgKGluIENleWxvbiAKYXQgbGVhc3QpIHdlcmUgY2FyZWZ1bGx5IGRlc3Ryb3llZCBieSB0aGUgClRhbWlsIGludmFkZXJzLCBzbyB0aGF0IHRoZSBQYWxpIHNjcmlwdHVyZXMgCgoKMTY4IEFEWUFSIFRBTEtTIAoKCndoaWNoIHdlIG5vdyBoYXZlIGFyZSBhIHJlLXRyYW5zbGF0aW9uIAptYWRlIGZyb20gYSBjb3B5IGluIEVsdSwgdGhlbiB0aGUgdmVyLSAKbmFjdWxhciBsYW5ndWFnZSBvZiBDZXlsb24uIAoKMi4gSGluYSBtYXkgYXBwYXJlbnRseSBiZSB0YWtlbiBhcyBzaWctIApuaWZ5aW5nIG1lYW4gb3IgZWFzeSwgYXMgd2VsbCBhcyBzbWFsbC4gCk9uZSBpbnRlcnByZXRhdGlvbiB0aGVyZWZvcmUgY29uc2lkZXJzIHRoYXQgCnRoZSBIaW5heWFuYSBpcyB0aGUgbWVhbmVyIG9yIGVhc2llciByb2FkIAp0byBsaWJlcmF0aW9u4oCUdGhlIGlycmVkdWNpYmxlIG1pbmltdW0gb2YgCmtub3dsZWRnZSBhbmQgY29uZHVjdCByZXF1aXJlZCB0byBhdHRhaW4gCml0LCB3aGlsZSB0aGUgTWFoYXlhbmEgaXMgdGhlIGZ1bGxlciBhbmQgCm1vcmUgcGhpbG9zb3BoaWNhbCBkb2N0cmluZSwgd2hpY2ggaW5jbHVkZXMgCm11Y2ggdHJhZGl0aW9uYWwga25vd2xlZGdlIGFib3V0IGhpZ2hlciAKcmVhbG1zIG9mIG5hdHVyZS4gTmVlZGxlc3MgdG8gc2F5LCB0aGlzIGluLSAKdGVycHJldGF0aW9uIGNvbWVzIGZyb20gYSBNYWhheWFuYSBzb3VyY2UsIAoKMy4gVGhhdCBCdWRkaGlzbSwgaW4gaXRzIHVuZmFpbGluZyBjb3VydC0gCmVzeSB0b3dhcmRzIG90aGVyIHJlbGlnaW9ucywgYWNjZXB0cyB0aGVtIAphbGwgYXMgd2F5cyB0byBsaWJlcmF0aW9uLCB0aG91Z2ggaXQgcmVnYXJkcyAKdGhlIG1ldGhvZCB0YXVnaHQgYnkgaXRzIGZvdW5kZXIgYXMgb2ZmZXItIAppbmcgdGhlIHNob3J0ZXN0IGFuZCBzdXJlc3Qgcm91dGUuIEFjY29yZC0gCmluZyB0byB0aGlzIHZpZXcgQnVkZGhpc20gaXMgdGhlIE1haGEtIAp5YW5hLCBhbmQgdGhlIEhpbmF5YW5hIGluY2x1ZGVzIEJyYWhtYW4tIAppc20sIFpvcm9hc3RyaWFuaXNtLCBKYWluaXNtLCBhbmQgYW55IG90aGVyIApyZWxpZ2lvbnMgd2hpY2ggd2VyZSBleGlzdGluZyBhdCB0aGUgdGltZSAKd2hlbiB0aGUgZGVmaW5pdGlvbiB3YXMgZm9ybXVsYXRlZC4gCgo0LCBUaGF0IHRoZSB0d28gZG9jdHJpbmVzIGFyZSBzaW1wbHkgCnR3byBzdGFnZXMgb2Ygb25lIGRvY3RyaW5l4oCUdGhlIEhpbmF5YW5hIApmb3IgdGhlIFNyYXZha2FzIG9yIGhlYXJlcnMsIGFuZCB0aGUgCk1haGF5YW5hIGZvciBtb3JlIGFkdmFuY2VkIHN0dWRlbnRzLCAKCgpCVURESElTTSAxNjkgCgoKNi4gVGhhdCB0aGUgd29yZCBZYW5hIGlzIHRvIGJlIHVuZGVyLSAKc3Rvb2Qgbm90IGV4YWN0bHkgaW4gaXRzIHByaW1hcnkgc2Vuc2Ugb2YgCuKAmHZlaGljbGUsIGJ1dCByYXRoZXIgaW4gaXRzIHNlY29uZGFyeSBzZW5zZSwgCm5lYXJseSBlcXVpdmFsZW50IHRvIHRoZSBFbmdsaXNoIHdvcmQgCuKAmGNhcmVlci4uIEFjY29yZGluZyB0byB0aGlzIGludGVycHJldGF0aW9uIAp0aGUgTWFoYXlhbmEgcHV0cyBiZWZvcmUgdGhlIG1hbiB0aGUgCuKAmGdyYW5kIGNhcmVlcuKAmSBvZiBiZWNvbWluZyBhIEJvZGhpc2F0dHdhIAphbmQgZGV2b3RpbmcgaGltc2VsZiB0byB0aGUgd2VsZmFyZSBvZiB0aGUgCndvcmxkLCB3aGlsZSB0aGUgSGluYXlhbmEgc2hvd3MgaGltIG9ubHkgCnRoZSBzbWFsbGVyIOKAmGNhcmVlcuKAmSBvZiBzbyBsaHZpbmcgYXMgXyB0byAKYXR0YWluIG5pcnZhbmEgZm9yIGhpbXNlbGYuIAoKVGhlcmUgaGFzIGFsc28gYmVlbiBtdWNoIGRpc2N1c3Npb24gYXMgCnRvIHRoZSBleGFjdCBtZWFuaW5nIG9mIHRoZSB0ZXJtcyA8QWRpLSAKQnVkZGhhIGFuZCBBdmFsb2tpdGVzaHdhcmEuIEkgaGF2ZSBtYWRlIApubyBzcGVjaWFsIHN0dWR5IG9mIHRoZXNlIHRoaW5ncyBmcm9tIHRoZSAKcGhpbG9zb3BoaWNhbCBzdGFuZHBvaW50LCBidXQgc28gZmFyIGFzIEkgCmhhdmUgYmVlbiBhYmxlIHRvIGdhdGhlciBpZGVhcyBmcm9tIGRpcy0gCmN1c3Npb24gb2YgdGhlIG1hdHRlciB3aXRoIHRoZSBsaXZpbmcgZXgtIApwb25lbnRzIG9mIHRoZSByZWxpZ2lvbiwgQWRpLUJ1ZGRoYSBzZWVtcyAKdG8gYmUgdGhlIGN1bG1pbmF0aW9uIG9mIG9uZSBvZiB0aGUgZ3JlYXQgCmxpbmVzIG9mIHN1cGVyaHVtYW4gZGV2ZWxvcG1lbnTigJR3aGF0IAptaWdodCBiZSBjYWxsZWQgdGhlIGFic3RyYWN0IHByaW5jaXBsZSBvZiAKYWxsIHRoZSBCdWRkaGFzLiBBdmFsb2tpdGVzaHdhcmEgaXMgYSB0ZXJtIApiZWxvbmdpbmcgdG8gdGhlIE5vcnRoZXJuIENodXJjaCzigJkgYW5kIApzZWVtcyB0byBiZSB0aGUgQnVkZGhpc3Rz4oCZIG5hbWUgZm9yIHRoZWlyIApjb25jZXB0aW9uIG9mIHRoZSBMb2Nvcy4gRXVyb3BlYW4gc2Nob2xhcnMgCmhhdmUgdHJhbnNsYXRlZCBpdDog4oCYVGhlIExvcmQgd2hvIGxvb2tzIAoKCmRvd24gZnJvbSBvbi0gaGlnaCzigJ0gYnV0IHRoaXMgc2VlbXMgdG8gCjIyIAoKCjE3MCBBRFlBUiBUQUxLUyAKCgpoYXZlIGluIGl0IGEgc29tZXdoYXQgaW5hY2N1cmF0ZSBpbXBsaWNhdGlvbiwgCmZvciBpdCBpcyBjbGVhcmx5IGFsd2F5cyB0aGUgbWFuaWZlc3RlZCBMb2NvczsgCnNvbWV0aW1lcyB0aGUgTG9jb3Mgb2YgYSBzb2xhciBzeXN0ZW0gCmFuZCBzb21ldGltZXMgaGlnaGVyIHRoYW4gdGhhdCwgYnV0IGFsd2F5cyAKbWFuaWZlc3QuIFdlIG11c3Qgbm90IGZvcmdldCB0aGF0IHdoaWxlIAp0aGUgZm91bmRlcnMgb2YgdGhlIGdyZWF0IHJlbGlnaW9ucyBzZWUgCmFuZCBrbm93IHRoZSB0aGluZ3Mgd2hpY2ggVGhleSBuYW1lLCAKVGhlaXIgZm9sbG93ZXJzIHVzdWFsbHkgZG8gbm90IHNlZTsgdGhleSAKaGF2ZSBvbmx5IHRoZSBuYW1lcywgYW5kIHRoZXkganVnZ2xlIHdpdGggCnRoZW0gYXMgaW50ZWxsZWN0dWFsIGNvdW50ZXJzLCBhbmQgYnVpbGQgdXAgCm11Y2ggd2hpY2ggaXMgaW5jb3JyZWN0IGFuZCBpbmNvbnNpc3RlbnQuIApUaGUgQnVkZGhpc20gb2YgdGhlIFNvdXRoZXJuIENodXJjaCwgCndoaWNoIGluY2x1ZGVzIENleWxvbiwgQnVybWEsIFNpYW0gYW5kIApDYW1ib2RpYSwgaGFzIG9uIHRoZSB3aG9sZSBrZXB0IGl0cyByZWhpLSAKZ2lvbiBmcmVlIGZyb20gdGhlIGFjY3JldGlvbnMgd2hpY2ggaGF2ZSAKYmVjb21lIHNvIHByb21pbmVudCBpbiB0aGUgTm9ydGhlcm4gZGl2aS0gCnNpb24gb2YgSmFwYW4sIENoaW5hIGFuZCBUaWJldC4gSW4gQnVybWEgCm5vIGltYWdlIGFwcGVhcnMgaW4gdGhlIHRlbXBsZXMgZXhjZXB0IAp0aGF0IG9mIHRoZSBCdXBwc2EsIHRob3VnaCBvZiBIaW0gdGhlcmUgCmFyZSBpbiBzb21lIGNhc2VzIGh1bmRyZWRzIG9mIGltYWdlcywgb2YgCmRpZmZlcmVudCBtYXRlcmlhbCwgaW4gZGlmZmVyZW50IHBvc2l0aW9ucywgcHJlLSAKc2VudGVkIGJ5IHZhcmlvdXMgd29yc2hpcHBlcnMuIEluIENleWxvbiAKYSBjZXJ0YWluIGNvbmNlc3Npb24gc2VlbXMgdG8gaGF2ZSBiZWVuIAptYWRlIHRvIHBvcHVsYXIgZmVlbGluZywgb3IgcGVyaGFwcyB0byBhIApmb3JlaWduIGdvdmVybm1lbnQgZHVyaW5nIHRoZSB0aW1lIG9mIAp0aGUg4oCY4oCZYW1pbCBraW5ncywgZm9yIHRoZSBpbWFnZXMgb2YgY2VyLSAKdGFpbiBIaW5kdSBkZWl0aWVzIGFyZSBvZnRlbiB0byBiZSBzZWVuIAppbiB0aGUgdGVtcGxlcywgdGhvdWdoIHRoZXkgYXJlIGFsd2F5cyAKCgpCVURESElTTSAxNzEgCgoKcGxhY2VkIGluIGEgc3Vib3JkaW5hdGUgcG9zaXRpb24gYW5kIGNvbi0gCnNpZGVyZWQgYXMgYSBraW5kIG9mIGF0dGVuZGFudHMgdXBvbiB0aGllIApCdXBwdWEuIFdlIG5lZWQgbm90IGhvd2V2ZXIgYmxhbWUgdGhlIArigJhUaWJldGFucyB2ZXJ5IG11Y2ggZm9yIHRoZSBmYWN0IHRoYXQgY2VyLSAKdGFpbiBzdXBlcnN0aXRpb25zIGhhdmUgY3JlcHQgaW50byB0aGVpciAKQnVkZGhpc20uIFRoZSBzYW1lIHRoaW5nIGhhcHBlbnMgaW4gYWxsIApjb3VudHJpZXMsIGFuZCB3aXRoIGFsbCByZWxpZ2lvbnMsIGFzIHRpbWUgCmdvZXMgb24uIEluIEl0YWx5LCBmb3IgZXhhbXBsZSwgbnVtYmVycyAKb2YgdGhlIHBlYXNhbnRzIGluIHRoZSBJdWxscyBzdGlsbCBmb2xsb3cgCndoYXQgdGhleSBjYWxsIHRoZSBvbGQgcmVoZ2lvbiwgYW5kIGNvbi0gCnRpbnVlIGV2ZW4gaW0gdGhlIHByZXNlbnQgZGF5IHRoZSB3b3JzbHVwIApvZiBCYWNjaHVzLCB1bmRlciBhbiBIS3RydXNjYW4gbmFtZSB3aGljaCAKYW50ZWRhdGVzIGV2ZW4gdGhlIHRpbWUgb2YgdGhlIFJvbWF1IEttLSAKcGlyZS4gVGhlIENhdGhvbGljIHByaWVzdHMgcXVpdGUgcmVjb2duaXNlIAp0aGUgZXhpc3RlbmNlIG9mIHRoaXMgb2xkZXIgZmFpdGgsIGFuZCBzZXQgCnRoZW1zZWx2ZXMgYWdhaW5zdCBpdCwgYnV0IHdpdGhvdXQgYXZhaWwuIApJbiBTb3V0aGVybiBCdWRkaGlzbSB0aGVyZSBpcyByZW1hcmthYmx5IApsaXR0bGUgY2VyZW1vbnkgb2YgYW55IGtpbmTigJRwcmFjdGljYWxseSBuby0gCnRoaW5nIGluZGVlZCB0aGF0IGluIGFueSB3YXkgY29ycmVzcG9uZHMgdG8gCnRoZSBDaHJpc3RpYW4gc2VydmljZS4gV2hlbiB0aGUgcGVvcGxlIHBheSAKdGhlaXIgbW9ybmluZyB2aXNpdCB0byB0aGUgdGVtcGxlIHRoZXkgCnVzdWFsbHkgY2FsbCB1cG9uIHRoZSBtb25rcyB0byByZWNpdGUgCmZvciB0aGVtIHRoZSB0aHJlZSBndWlkZXMgYW5kIHRoZSBmaXZlIApwcmVjZXB0cywgd2hpY2ggdGhleSB0aGVuIHJlcGVhdCBhZnRlciBoaW0sIApidXQgZXZlbiB0aGlzIGNhbiBoYXJkbHkgYmUgY2FsbGVkIGEgCnB1YmxpYyBzZXJ2aWNlLCBmb3IgaXQgaXMgcmVjaXRlZCBub3Qgb25jZSBhdCAKYSBzZXQgdGltZSwgYnV0IGZvciBlYWNoIGdyb3VwIG9mIHBlb3BsZSBhcyAKdGhleSBoYXBwZW4gdG8gYXJyaXZlLiBUaGVyZSBpcyBhbm90aGVyIAoKCjE3MiBBRFlBUiBUQUxLUyAKCgpjZXJlbW9ueSBjYWxsZWQgUGFyaXR0YSBvciBQaXJpdCAod2hpY2ggCm1lYW5zIOKAmGJsZXNzaW5nc+KAmSkgYnV0IHRoaXMgaXMgbm90IHBlcmZvcm1lZCAKaW4gdGhlIHRlbXBsZSBpdHNlbGYgbm9yIGF0IGFueSBzdGF0ZWQgdGltZXMsIApidXQgaXQgaXMgY29uc2lkZXJlZCBhIGdvb2Qgd29yayBvbiB0aGUgCnBhcnQgb2YgdGhlIGxhaXR5IHRvIGNlbGVicmF0ZSBhbnkgc3BlY2lhbCAKb2NjYXNpb24gYnkgZ2l2aW5nIGEgUGlyaXQgY2VyZW1vbnnigJR0aGF0IAppcyB0byBzYXkgYnkgZXJlY3RpbmcgYW5kIGVsYWJvcmF0ZWx5IGRlY29yYXQtIAppbmcgYSB0ZW1wb3JhcnkgYnVpbGRpbmcgaW4gd2hpY2ggdGhlIApjZXJlbW9ueSBpcyBoZWxkLiBJdCBjb25zaXN0cyBvZiB0aGUgY2hhbnRpbmcgCm9mIGJlbmVkaWN0b3J5IHZlcnNlcyBmcm9tIHRoZSBzYWNyZWQgc2NyaXAtIAp0dXJlcywgYW5kIGlzIGNhcnJpZWQgb24gZm9yIGEgY2VydGFpbiBudW1iZXIgCm9mIGRheXMsIHVzdWFsbHkgYSBmb3J0bmlnaHQsIGJ5IHJlbGF5cyBvZiAKbW9ua3Mgd2hvIHJlbGlldmUgb25lIGFub3RoZXIgZXZlcnkgaG91ci4gCgpTb21ldGltZXMgd2hlbiBhIG1hbiBmYWxscyBpbGwgb25lIG9mIAp0aGVzZSBQaXJpdCBjZXJlbW9uaWVzIGlzIGFycmFuZ2VkIGZvciBoaW0sIAp3aXRoIHRoZSBpZGVhIHRoYXQgaXQgd2lsbCBwcm9tb3RlIGhpcyByZS0gCmNvdmVyeS4gSXQgaXMgaW4gcmVhbGl0eSBhIG1lc21lcmljIGNlcmVtb255LCAKZm9yIHRoZSBtb25rcyBzaXQgaW4gYSBjaXJjbGUgYW5kIGhvbGQgaW4gCnRoZWlyIGhhbmRzIGEgcm9wZSB3aGljaCBydW5zIHJvdW5kIHRoZSAKY2lyY2xlLCBhbmQgdGhleSBhcmUgaW5zdHJ1Y3RlZCB0byByZWNpdGUgdGhlaXIgCnRleHRzLCBrZWVwaW5nIGNsZWFybHkgaW4gdGhlaXIgbWluZHMgYWxsIHRoZSAKdGltZSB0aGUgd2lsbCB0byBibGVzcy4gTmF0dXJhbGx5IHRoaXMgcm9wZSAKYmVjb21lcyB2ZXJ5IHN0cm9uZ2x5IG1hZ25ldGlzZWQgYXMgdGhlIApjZXJlbW9ueSBwcm9ncmVzc2VzLCBhbmQgc3RyaW5ncyBydW4gZnJvbSAKaXQgdG8gYSBodWdlIHBvdCBvZiB3YXRlciwgd2hpY2ggb2YgY291cnNlIAphbHNvIGJlY29tZXMgaGlnaGx5IGNoYXJnZWQgd2l0aCBtYWduZXRpc20uIApBdCB0aGUgY29uY2x1c2lvbiBvZiB0aGUgY2VyZW1vbnkgdGhpcyB3YXRlciAKaXMgZGlzdHJpYnV0ZWQgYW1vbmcgdGhlIHBlb3BsZSwgYW5kIHRoZSBzaWNrIAoKCkJVRERISVNNIDE3MyAKCgptYW4gb2Z0ZW4gaG9sZHMgYSB0aHJlYWQgd2hpY2ggaXMgY29ubmVjdGVkIAp3aXRoIHRoZSByb3BlLiAKClRoZSBTb3V0aGVybiBCdWRkaGlzdHMgZ2l2ZSBhIGxpc3Qgb2YgCmZpdmUgcHN5Y2hpYyBwb3dlcnMgd2hpY2ggbWF5IGJlIGdhaW5lZCAKYnkgdGhlIG1hbiB3aG8gaXMgbWFraW5nIHByb2dyZXNzIG9uIHRoZSAKUGF0aC4gKDEpIFRoZSBhYmlsaXR5IHRvIHBhc3MgdGhyb3VnaCB0aGUgCmFpciBhbmQgdGhyb3VnaCBzb2xpZCBvYmplY3RzLCBhbmQgdG8gdmlzaXQgCnRoZSBoZWF2ZW4td29ybGQgd2hpbGUgc3RpbGwgYWxpdmUuIEl0IGlzIGhvdy0gCmV2ZXIgcG9zc2libGUgdGhhdCB0aGlzIG1heSBtZWFuIG5vdGhpbmcgCm1vcmUgdGhhbiBhYmlsaXR5IHRvIGZ1bmN0aW9uIGZyZWVseSBpbiB0aGUgCmFzdHJhbCBib2R5LCBiZWNhdXNlIGl0IGlzIHF1aXRlIGxpa2VseSB0aGF0IAppbiBzcGVha2luZyBvZiB0aGUgaGVhdmVuLXdvcmxkIHRoZXkgZG8gbm90IApyZWFsbHkgbWVhbiB0aGUgbWVudGFsIHBsYW5lLCBidXQgb25seSB0aGUgCmhpZ2hlciBsZXZlbHMgb2YgdGhlIGFzdHJhbC4gKDIpIERpdmluZWx5IGNsZWFyIApoZWFyaW5n4oCUd2hpY2ggaXMgZXZpZGVudGx5IG1lcmVseSB0aGUgYXN0cmFsIApmYWN1bHR5IG9mIGNsYWlyYXVkaWVuY2UuICgzKSBUaGUgYWJpbGl0eSB0byAKY29tcHJlaGVuZCBhbmQgc3ltcGF0aGlzZSB3aXRoIGFsbCB0aGF0IAppcyBpbiB0aGUgbWluZHMgb2Ygb3RoZXJz4oCUd2hpY2ggYXBwZWFycyAKdG8gYmUgdGhvdWdodC1yZWFkaW5nLCBvciBwZXJoYXBzIHRlbGVwYXRoeS4gCig0KSBUaGUgcG93ZXIgdG8gcmVtZW1iZXIgZm9ybWVyIGJpcnRocy4gCig1KSBEaXZpbmVseSBjbGVhciB2aXNpb27igJR0aGF0IGlzIHRvIHNheSwgCmNsYWlydm95YW5jZS4g4oCYVG8gdGhpcyBpcyBhZGRlZCBpbiBzb21lIGxpc3RzIAp0aGUgYXR0YWlubWVudCBvZiBkZWxpdmVyYW5jZSBieSB3aXNkb20uIApUaGlzIG11c3Qgb2YgY291cnNlIG1lYW4gdGhlIGF0dGFpbm1lbnQgCm9mIGZyZWVkb20gZnJvbSB0aGUgbmVjZXNzaXR5IG9mIHJlYmlydGgsIGJ1dCAKaXQgZG9lcyBub3Qgc2VlbSB0byBiZSBvZiB0aGUgc2FtZSBuYXR1cmUgCmFzIHRoZSBvdGhlciBwb3dlcnMsIGFuZCBwZXJoYXBzIHNob3VsZCAKaGFyZGx5IGFwcGVhciBpbiB0aGUgc2FtZSBjYXRlZ29yeS4gCgoKMTc0IEFEWUFSIFRBTEtTIAoKCkFuYW5kYSBpcyBzYWlkIHRvIGhhdmUgYmVlbiB0aGUgZmF2b3VyLSAKaXRlIGRpc2NpcGxlIG9mIHRoZSBMb3JkIEJ1cHB1YSwuIGp1c3QgYXMgCkpvaHUgaXMgc3Bva2VuIG9mIGFzIHRoZSBiZWxvdmVkIGRpc2NpcGxlIG9mIAp0aGUgQ2hyaXN0LCBhbmQgbm8gZG91YnQgaW4gYm90aCBjYXNlcyB0aGU6IApzcGVjaWFsIGludGltYWN5IHdhcyB0aGUgcmVzdWx0IG9mIHJlbGF0aW9uLSAKc2hpcCBpbiBwcmV2aW91cyBsaXZlcy4gQW5hbmRhIHdhcyBjZXItIAp0YWlubHkgbm90IHNvIGNob3NlbiBiZWNhdXNlIGhlIHdhcyB0aGUgCm1vc3QgYWR2YW5lZWQsIGZvciBldmVuIGFmdGVyIHRoZSBkZWF0aCBvZiAKdGhlIEJ1cHBIYSB3ZSBoZWFyIHRoYXQgd2hlbiB0aGUgZmlyc3QgCmdyZWF0IGNvdW5jaWwgd2FzIGhlbGQgaW4gYSBjYXZlIHdpdGhpbiAKdGhlIGxpdmluZyByb2NrLCBhbmQgdGhlIGNvbmRpdGlvbiBvZjogdGFrLSAKaW5nIHBhcnQgaW4gaXQgd2FzIHRoYXQgbm9uZSBzaG91bGQgZW50ZXIgCndobyBjb3VsZCBub3QgcGFzcyB0aHJvdWdoIHRoZSByb2NrLCAKQW5hbmRhIGZvdW5kIGhpbXNlbGYgc2h1dCBvdXQgZnJvbSBpdCAKYmVjYXVzZSBoZSBoYWQgbm90IHlldCBhdHRhaW5lZCB0aGlzIHBvd2VyLiAKQnV0IGl0IGlzIHNhaWQgdGhhdCBoaXMgZXJpZWYgYXQgdGhpcyBleC0gCmNsdXNpb24gZnJvbSBhIGdyYW5kIG9wcG9ydHVtdHkgb2Ygc2VydmluZyAKaGlzIGRlcGFydGVkIE1hc3RlciB3YXMgc28gZ3JlYXQgdGhhdCBieSAKYXcgc3VwcmVtZSBlZmZvcnQgb2Ygd2lsbCBoZSB0aGVuIGFuZCB0aGVyZSAKZGV2ZWxvcGVkIHRoZSBwb3dlciB3aGljaCBoYWQgYmVlbiBsYWNrLSAKaW5nLCBhbmQgcGFzc2VkIGluIHRyaXVtcGhhbnRseSB0byB0YWtlIApoaXMgcGxhY2UgYW1vbmcgaGlzIGJyb3RoZXJzLCB0aG91Z2ggYSBsaXR0bGUgCmxhdGUuIAoKVGhpcyBzaG93cyB3dXMgdGhhdCBldmVuIHRob3NlIHdobyAKYXJlIHRoZSBtb3N0IGhpZ2hseSBhZHZhbmNlZCBvZiBhbGwgaHUtIAptYW5pdHkgaGF2ZSBzdGlsbCB0aGVpciBzcGVjaWFsIGZyaWVuZHNoaXBzLCAKYW5kIHRoYXQgdGhlcmVmb3JlIHRvIGxvdmUgb25lIHBlcnNvbiBtb3JlIAp0aGFuIGFub3RoZXIgY2Fubm90IGJlIGltcHJvcGVyLiBJdCBpcyAKCgpCVURESElTTSBfIDE3NSAKCgp0cnVlIHRoYXQgc3VjaCBhZmZlY3Rpb24gYXMgeW91IG5vdyBmZWVsIApmb3IgeW91ciBuZWFyZXN0IGFuZCBkZWFyZXN0IHlvdSB3aWxsIGZlZWwgCmxhdGVyIG9uIGZvciB0aGUgd2hvbGUgd29ybGQsIGJ1dCBhdCB0aGF0IAp0aW1lIHlvdSB3aWxsIGZlZWwgYSB0aG91c2FuZCB0aW1lcyBtb3JlIAphZmZlY3Rpb24gZm9yIHRob3NlIHdobyBhcmUgbmVhcmVzdCB0byB5b3UuIApZb3VyIGxvdmUgd2lsbCBuZXZlciBiZSB0aGUgc2FtZSBmb3IgYWxsLCAKYWx0aG91Z2ggYWxsIHdpbGwgYmUgaW5jbHVkZWQgd2l0aGluIGl0LiBJdCAKaXMgaW1wb3NzaWJsZSB0aGF0IHdlIHNob3VsZCBmZWVsIHRvd2FyZHMgCmFub3RoZXIgYXMgd2UgZG8gdG93YXJkcyBvdXIgTWFzdGVyLCBmb3IgCndoZW4gSGUgYmVjb21lcyBhIExvY29zIHdlIHNoYWxsIGJlIHBhcnQgCm9mIEhpcyBzeXN0ZW0sIGFuZCBldmVuIHdoZW4gZmFyIGxhdGVyIG9uIAp3ZSBvdXJzZWx2ZXMgYmVjb21lIExvY29yIHdlIHNoYWxsIHN0aWxsIGJlIApwYXJ0IG9mIEhpbSwgZm9yIEhlIHdpbGwgcmVwcmVzZW50IHNvbWUgCmZhciBncmVhdGVyIHN5c3RlbS4gQWx0aG91Z2ggdGhlcmUgd2lsbCAKYWx3YXlzIGJlIGdyZWF0ZXIgbG92ZSBmb3Igc29tZSB0aGFuIG90aGVycywgCndlIHNoYWxsIGhlbHAgdGhvc2Ugd2hvbSB3ZSBsb3ZlIGxlc3MgCmp1c3QgYXMgZnVsbHkgYXMgdGhvc2Ugd2hvbSB3ZSBsb3ZlIG1vcmUuIApXZSBzaGFsbCBhbHdheXMgZG8gb3VyIGJlc3QgZm9yIGFsbCwganVzdCAKYXMgYSBkb2N0b3IgZXF1YWxseSBoZWxwcyBoaXMgcGF0aWVudCAKd2hldGhlciBoZSBiZSBhIGZyaWVuZCBvciBub3QsIGZvciBhbnl0aGluZyAKaGtlIMKraXNoa2Ugb3IgaGF0cmVkIHdpbGwgaGF2ZSBjZWFzZWQgb25zIApiZWZvcmUuIAoKQXQgdGhlIHRpbWUgb2YgdGhlIExvcmQgQnVwcHl1YSBtYW55IApvdGhlciBzcGlyaXR1YWwgdGVhY2hlcnMgd2VyZSBzZW50IGZvcnRoIHRvIAp0aGUgd29ybGQuIFdlIGZpbmQgZm9yIGV4YW1wbGUgTGFvLXRzZSwgCkNvbmZ1Y2l1cyBhbmQgUHl0aGFnb3JhcywgYWxsIHdvcmtpbmcgaW4gCnRoZWlyIGRpZmZlcmVudCBzcGhlcmVzLiBBZHZhbnRhZ2Ugd2FzIAp0YWtlbiBvZiB0aGUgc3R1cGVuZG91cyBvdXRwb3VyaW5nIG9mIC0gCgoKMTc2IEFEWUFSIFRBTEtTIAoKCnNwaXJpdHVhbCBmb3JjZSBhdCB0aGUgdGltZSB0byBzZW5kIGZvcnRoIAp0ZWFjaGVycyBpbnRvIG1hbnkgcGFydHMgb2YgdGhlIHdvcmxkLiAKCgpDSFJJU1RJQU5JVFkgCgoKVGhlcmUgaXMgbm90aGluZyBpbSB0aGUgcHJpbmNpcGxlcyBvZiAKVGhlb3NvcGh5IHdoaWNoIGlzIGF0IGFsbCBpbiBvcHBvc2l0aW9uIHRvIAp0aGUgdHJ1ZSBwcmltaXRpdmUgQ2hyaXN0aWFuaXR5LCB0aG91Z2ggdGhlcmUgCm1heSBiZSBzdGF0ZW1lbnRzIHdoaWNoIGNhbm5vdCBiZSByZWNvbmNpbGVkIAp3aXRoIHNvbWUgb2YgdGhlIG1pc3Rha2VzIG9mIG1vZGVybiBwb3B1bGFyIAp0aGVvbG9neS4gVGhpcyBtb2Rlcm4gdGhlb2xvZ3kgYXR0YWNoZXMgaW0tIAptZW5zZSBpbXBvcnRhbmNlIHRvIHRleHRzOyBpbiBmYWN0IGl0IGFwcGVhcnMgCnRvIG1lIHRvIGJlIGJhc2VkIHVwb24gb25lIG9yIHR3byB0ZXh0cyAKYWxtb3N0IGVudGlyZWx5LiBJdCB0YWtlcyB0aGVzZSBhbmQgZ2l2ZXMgdG8gCnRoZW0gYSBwYXJ0aWN1bGFyIGludGVycHJldGF0aW9uLCBvZnRlbiBpbiAKZGlyZWN0IG9wcG9zaXRpb24gdG8gdGhlIHBsYWluIG1lYW5pbmcgb2YgCm90aGVyIHRleHRzIGZyb20gdGhlIHNhbWUgYmlibGUuIE9mIGNvdXJzZSAKdGhlcmUgYXJlIGNvbnRyYWRpY3Rpb25zIGluIHRoZSBDaHJpc3RpYW4gCnNjcmlwdHVyZSBqdXN0IGFzIHRoZXJlIG11c3QgbmVjZXNzYXJpbHkgYmUgCmluIGFueSBib29rIG9mIHRoYXQgc2l6ZSwgdGhlIHZhcmlvdXMgcGFydHMgCm9mIHdoaWNoIHdlcmUgd3JpdHRlbiBhdCBzdWNoIHdpZGVseSAKc2VwYXJhdGVkIHBlcmlvZHMgb2YgdGhlIHdvcmxk4oCZcyBoaXN0b3J5LCAKYW5kIGJ5IHBlb3BsZSBzbyB1bmVxdWFsIGluIGtub3dsZWRnZSAKYW5kIGluIGNpdmlsaXNhdGlvbi4gCgpJdCBpcyBpbXBvc3NpYmxlIHRoYXQgYWxsIHRoZSBzdGF0ZW1lbnRzIAptYWRlIGluIGl0IGNhbiBiZSBsaXRlcmFsbHkgdHJ1ZSwgYnV0IHdlIAoKCkNIUklTVElBTklUWSAxNzcgCgoKY2FuIGdvIGJhY2sgYmVoaW5kIHRoZW0gYWxsLCBhbmQgdHJ5IHRvIApmaW5kIG91dCB3aGF0IHRoZSBvcmlnaW5hbCDigJh0ZWFjaGVyIGRpZCBsYXkgCmJlZm9yZSBIaXMgcHVwaWxzLiBTaW5jZSB0aGVyZSBhcmUgbWFueSAKY29udHJhZGljdGlvbnMgYW5kIG1hbnkgaW50ZXJwcmV0YXRpb25zIGl0IGlzIApvYnZpb3VzbHkgdGhlIGR1dHkgb2YgYSB0aGlua2luZyBDaHJpc3RpYW4gCnRvIHdlaWdoIGNhcmVmdWxseSB0aGUgZGlmZmVyZW50IHZlcnNpb25zIG9mIApoaXMgZmFpdGggd2hpY2ggZXhpc3QgaW4gdGhlIHdvcmxkLCBhbmQgCmRlY2lkZSBiZXR3ZWVuIHRoZW0gYWNjb3JkaW5nIHRvIGhpcyBvd24gCnJlYXNvbiBhbmQgY29tbW9uLXNlbnNlLiAKCkV2ZXJ5IENocmlzdGlhbiBkb2VzLCBhcyBhIG1hdHRlciBvZiBmYWN0LCAKZGVjaWRlIGZvciBoaW1zZWxmIG5vdzsgaGUgY2hvb3NlcyB0byBiZSBhIApSb21hbiBDYXRob2xpYywgb3IgYSBtZW1iZXIgb2YgdGhlIENodXJjaCAKb2YgRW5nbGFuZCwgb3IgYSBNZXRob2Rpc3QsIG9yIGEgU2FsdmF0aW9uaXN0LCAKdGhvdWdoIGVhY2ggb2YgdGhlc2Ugc2VjdHMgcHJvZmVzc2VzIHRvIGhhdmUgCnRoZSBvbmx5IGdlbnVpbmUgYnJhbmQgb2YgQ2hyaXN0aWFuaXR5LCBhbmQgCmp1c3RpZmllcyBpdHMgY2xhaW0gYnkgdGhlIHF1b3RhdGlvbiBvZiB0ZXh0cy4gCkhvdyB0aGVuIGRvZXMgdGhlIG9yZGluYXJ5IGxheW1hbiBkZWNpZGUgCmJldHdlZW4gdGhlaXIgcml2YWwgY2xhaW1zPyBIaXRoZXIgaGUgYWNjZXB0cyAKYmxpbmRseSB0aGUgZmFpdGggd2hpY2ggaGlzIGZhdGhlciBoZWxkLCBhbmQgCmRvZXMgbm90IGV4YW1pbmUgdGhlIG1hdHRlciBhdCBhbGwsIG9yIGVsc2UgCmhlIGRvZXMgZXhhbWluZSBpdCwgYW5kIHRoZW4gaGUgZGVjaWRlcyBieSAKdGhlIGV4ZXJjaXNlIG9mIGhpcyBvd24ganVkZ21lbnQuIAoKSWYgaGUgaXMgYWxyZWFkeSBkb2luZyB0aGF0LCBpdCB3b3VsZCBiZSAKYWJzdXJkIGFuZCBpbmNvbnNpc3RlbnQgZm9yIGhpbSB0byByZWZ1c2UgCnRvIGV4YW1pbmUgYWxsIHRleHRzLCBpbnN0ZWFkIG9mIGJhc2luZyBoaXMgCmJlbGllZiBvbmx5IHVwb24gb25lIG9yIHR3by4gSWYgaGUgZG9lcyAKaW1wYXJ0aWFsbHkgZXhhbWluZSBhbGwgdGV4dHMsIGhlIHdpbGwgY2VydGFpbmx5IAoKCmZpbmQgbWFueSB3aGljaCBzdXBwb3J0IFRoZW9zb3BoaWNhbCB0cnV0aC4gCjI4IHwgCgoKMTc4IEFEWUFSIFRBTEtTIAoKCkhlIHdpbGwgZmluZCBhbHNvIHRoYXQgdGhlIGNyZWVkcyBjYW4gYmUgCnJhdGlvbmFsbHkgaW50ZXJwcmV0ZWQgb25seSBieSBUaGVvc29waHkuIApPZiBjb3Vyc2UgaW4gb3JkZXIgdG8gbWFrZSBhbl8gaW50ZWxsaWdlbnQgCmNvbXBhcmlzb24gYmV0d2VlbiB0aGVzZSBkaWZmZXJlbnQgc3lzdGVtcyAKaXQgd2lsbCBiZSBuZWNlc3NhcnkgZm9yIGhpbSB0byBtYWtlIHNvbWUgCmVucXVpcmllcyBpbnRvIHRoZSBoaXN0b3J5IG9mIGhpcyBvd24gcmVsaWdpb24sIAphbmQgdG8gc2VlIGhvdyB0aGUgQ2hyaXN0aWFuIGRvY3RyaW5lIGNhbWUgCnRvIGJlIHdoYXQgaXQgbm93IGlzLiAKCkhlIHdpbGwgZmluZCB0aGF0IGluIHRoZSBlYXJseSBDaHJpc3RpYW4gCkNodXJjaCB0aGVyZSB3ZXJlIHRocmVlIHByaW5jaXBhbCBkaXZpc2lvbnMgb3IgCnBhcnRpZXMuIFRoZXJlIHdlcmUgZmlyc3Qgb2YgYWxsIHRoZSBHbm9zdGljIApEb2N0b3JzIG9yIHRlYWNoZXJzLCB3aXNlIGFuZCBjdWx0dXJlZCBtZW4gCndobyBoZWxkIHRoYXQgdGhlIENocmlzdGlhbiBDaHVyY2ggaGFkIGl0cyAKc3lzdGVtIG9mIHBoaWxvc29waHkgb2YgdGhlIHNhbWUgbmF0dXJlIGFzIAp0aGUgZ3JlYXQgR3JlZWsgYW5kIFJvbWFuIHN5c3RlbXMgd2hpY2ggCmV4aXN0ZWQgYXQgdGhhdCB0aW1lLiBUaGV5IHNhaWQgdGhhdCB0aGlzIApzeXN0ZW0sIFdoaWxlIHRob3JvdWdobHkgY29tcHJlaGVuc2l2ZSBhbmQgCnZlcnkgYmVhdXRpZnVsLCB3YXMgZGlmaWN1bHQgdG8gdW5kZXJzdGFuZCwgCmFuZCB0aGVyZWZvcmUgdGhleSBkaWQgbm90IHJlY29tbWVuZCBpdHMgCnN0dWR5IHRvIHRoZSBpZ25vcmFudC4gVGhleSBzcG9rZSBvZiBpdCAKYXMgdGhlIEdub3NpcyBvciBrbm93bGVkZ2XigJR0aGUga25vd2xlZGdlIAp3aGljaCB3YXMgcG9zc2Vzc2VkIGJ5IHRob3NlIHdobyB3ZXJlIApmdWxsIG1lbWJlcnMgb2YgdGhlIGNodXJjaCwgYnV0IHdhcyBub3QgCmdpdmVuIG91dCB0byB0aGUgd29ybGQgYXQgbGFyZ2UsIGFuZCBub3QgCmV2ZW4gdG9sZCB0byB0aGUgbW9yZSBpZ25vcmFudCBtZW1iZXJzIG9mIAp0aGUgY2h1cmNoIHdoaWxlIHRoZXkgd2VyZSBpbiB0aGF0IHByZWxpLSAKbWluYXJ5IHN0YWdlIHdoZW4gdGhleSBoYWQgbm90IHJlY2VpdmVkIAp0aGUgc2FjcmFtZW50cywgCgoKQ0hSSVNUSUFOSVRZIDE3OSAKCgpUaGVuIHRoZXJlIHdhcyB0aGUgc2Vjb25kIGRpdmlzaW9uLCBhIApib2R5IG9mIHJlc3BlY3RhYmxlIGluaWRkbGUtY2xhc3MgcGVvcGxlLCB3aG8gCnRyb3VibGVkIHRoZW1zZWx2ZXMgbm90IGF0IGFsbCBhYm91dCB0aGUgCnBoaWxvc29waHksIGJ1dCBzaW1wbHkgd2VyZSBjb250ZW50IHRvIHRha2UgCnRoZSB3b3JkcyBvZiB0aGUgQ2hyaXN0IGFzIHRoZWlyIGd1aWRlIGluIApoZmUuIFRoZXkgdXNlZCBhcyBhIHNhY3JlZCBib29rIGEgY29sbGVjLSAKdGlvbiBvZiBIdWlzIHNheWluZ3MsIHNvbWUgbGVhdmVzIG9mIHdoaWNoIApoYXZlIHJlY2VudGx5IGJlZW4gZGlzY292ZXJlZCBieSBhbnRpcXVhcmlhbnMuIAoKVGhlbiB0aGVyZSB3YXMgdW5mb3J0dW5hdGVseSBhIGdyZWF0IAptYXNzIG9mIGlnbm9yYW50IGFuZCB0dXJidWxlbnQgcGVvcGxlIHdobyAKbmV2ZXIgaGFkIGFueSBncmFzcCB3aGF0ZXZlciBvZiBDaHJpc3RpYW4gCmRvY3RyaW5lLCBidXQgYmVjYW1lIG1lbWJlcnMgb2YgdGhlIGNodXJjaCAKbWVyZWx5IGJlY2F1c2Ugb2YgdGhlIHByb3BoZWNpZXMsIGdpdmVuIGJ5IAp0aGUgQ2hyaXN0LCBvZiBhIGdvb2QgdGltZSB0byBjb21lLiBIZSAKd2FzIHZlcnkgbXVjaCBtb3ZlZCBieSB0aGUgc3VmZmVybWdzIG9mIAp0aGUgcG9vciwgYW5kIGZ1bGwgb2YgY29tcGFzc2lvbiBhbmQgcGl0eSAKZm9yIHRoZW0uIEhlIHRvbGQgdGhlbSBjb25zdGFudGx5LCBpbiBIaXMgCnRlYWNoaW5ncywgdG8gdGFrZSBjb21mb3J0LCBiZWNhdXNlIHRoZSBwb29yIAptYW4gd2hvIGVuZHVyZXMgdGhlIHN0cnVnZ2xlIGJyYXZlbHkgYW5kIAp3ZWxsIHdpbGwgaW4gdGhlIGZ1dHVyZSBoYXZlIGEgYmV0dGVyIHBvc2ktIAp0aW9uIGFuZCBncmVhdGVyIGFkdmFuY2VtZW50IHRoYW4gdGhlIHJpY2ggCm1hbiB3aG8gbWlzdXNlcyBoaXMgb3Bwb3J0dW5pdGllcy4gT25lIGNhbiAKcmVhZGlseSBzZWUgaG93IHRoYXQgZG9jdHJpbmUgcHJlYWNoZWQgdG8gCmFuIGV4Y2VlZGluZ2x5IGlnbm9yYW50IHBlb3BsZSBtaWdodCBiZSAKdGFrZW4gaW4gYSBvbmUtc2lkZWQgbWFubmVyLiDigJhUaGV5IHdvdWxkIAp0YWtlIHRoZSBwcm9taXNlcyBhbmQgbm90IHRoZSBjb25kaXRpb25zLCAKYW5kIHRoZWlyIGlkZWEgb2YgdGhhdCBnb29kIHRpbWUgbWlnaHQgCmVhc2lseSBiZSB0aGF0IHRoZXkgaW4gdHVybiB3b3VsZCBiZSB0aGUgCgoKMTgwIEFEWUFSIFRBTEtTIAoKCm9wcHJlc3NvcnMgYW5kIHdvdWxkIHRha2UgYWR2YW50YWdlIG9mIHRoZSAKcmljaCBtYW7igJRzb21ldGhpbmcgd2hpY2ggb2YgY291cnNlIHRoZSAKQ2hyaXN0IG5ldmVyIHByZWFjaGVkLiBTbyBpdCBjYW1lIHRvIHBhc3MgCnRoYXQgSGUgYXR0cmFjdGVkIHRvIGhpbXNlbGYgYSBncmVhdCBjcm93ZCAKb2YgbWVuIHdobyBmb3IgdmFyaW91cyByZWFzb25zIHdlcmUgCmFnYWluc3QgdGhlIGV4aXN0aW5nIGdvdmVybm1lbnQ7IGFuZCB3aGVuIAp0aGVzZSBpZ25vcmFudCBwZW9wbGUgaW4gdHVybiBwcmVhY2hlZCAKd2hhdCB0aGV5IGNhbGxlZCBDaHJpc3RpYW5pdHkgdG8gb3RoZXJzLCB0aGV5IApuYXR1cmFsbHkgaW50ZW5zaWZpZWQgYW5kIGV4YWdnZXJhdGVkIHRoZWlyIApvd24gbWlzY29uY2VwdGlvbnMgb2YgaXQuIFRoaXMgZ3JlYXQgbWFzcyAKb2YgdGhlIGNvbW1vbiBwZW9wbGUsIHdobyBjYWxsZWQgdGhlbXNlbHZlcyAK4oCYdGhlIC1wb29yIG1lbizigJkgc3BlZWRpbHkgYmVjYW1lIGFfIHZhc3QgCm1ham9yaXR5IGluIHRoZSBpbmZhbnQgY2h1cmNoLCBhbmQgZ2FpbmVkIApzbyBtdWNoIHBvd2VyIHRoYXQgdGhleSB3ZXJlIGV2ZW50dWFsbHkgCmFibGUgdG8gdGhyb3cgb3V0IHRoZSBHbm9zdGljIERvY3RvcnMgYXMgCmhlcmV0aWNzOyBmb3IgdGhlIOKAmHBvb3IgbWVu4oCZIHJlc2VudGVkIHRoZSAKaWRlYSB0aGF0IGFueSBrbm93bGVkZ2Ugd2hpY2ggdGhleSBkaWQgCm5vdCBwb3NzZXNzIGNvdWxkIGJlIHJlZ2FyZGVkIGFzIGFuIGVzc2VuLSAKdGlhbCBwYXJ0IG9mIENocmlzdGlhbml0eS4gCgpUaGVyZSBpcyB5ZXQgYW5vdGhlciBwb2ludCBvZiB2aWV3IGZyb23igJQgCndoaWNoIHRoZSBDaHJpc3RpYW4gbWF5IGZpbmQgVGhlb3NvcGh5IG9mIAp0aGUgZ3JlYXRlc3QgdXNlIHRvIGhpbS4gSnVzdCBub3cgdGhlIAptaW5kcyBvZiBtYW55IG9ydGhvZG94IENocmlzdGlhbnMgYXJlIG11Y2ggCmV4ZXJjaXNlZCB3aXRoIHJlZ2FyZCB0byB3aGF0IHRoZXkgY2FsbCAKdGhlIGhpZ2hlciBjcml0aWNpc23igJR0aGF0IGlzLCB0aGUgYXR0ZW1wdCAKdG8gYXBwbHkgb3JkaW5hcnkgY29tbW9uLXNlbnNlIGFuZCAKc2NpZW50aWZpYyBtZXRob2RzIHRvIHRoZSBleGFtaW5hdGlvbiBvZiAKdGhlIHJlbGlnaW91cyB0ZWFjaGluZ+KAlHRoZSBlbmRlYXZvdXIgdG8gCgoKQ0hSSVNUSUFOSVRZIDE4MSAKCgp1bmRlcnN0YW5kIHJlbGlnaW9uIGluc3RlYWQgb2YgYmxpbmRseSBiZWxpZXYtIAppbmcgaXQuIEZvciBtYW55IGFnZXMgdGhlIHdvcmxkIGhhcyBiZWVuIAp0b2xkIHRoYXQgZWNjbGVzaWFzdGljYWwgZG9nbWFzIG11c3QgYmUgCnN3YWxsb3dlZCBsaWtlIHBpbGxzLCBhbmQgdGhhdCB0byBhdHRlbXB0IAp0byByZWFzb24gYWJvdXQgdGhlbSBpcyBpbXBpb3VzLiDigJhUaGVyZSAKdXJlIG1hbnkgbWVuIGluIHRoZSB3b3JsZCwgYW5kIHRoZXkgYXJlIAphbW9uZyB0aGUgbW9zdCBpbnRlbGxlY3R1YWwgb2YgaXRzIGNpdGl6ZW5zLCAKd2hvIHNpbXBseSBjYW5ub3QgYWNjZXB0IGRvY3RyaW5lcyB0aHVzIApiaHVkbHkgYW5kIHVuY29tcHJlaGVuZGluZ2x5LiBCZWZvcmUgdGhleSAKY2FuIGJlbGlldmUgdGhleSBtdXN0IHRvIHNvbWUgZXh0ZW50IAp1dWRlcnN0YW5kLCBhbmQgYSBzdGF0ZW1lbnQgZG9lcyBub3QgYmUtIApjb21lIGEgbGl2aW5nIGZhY3QgdG8gdGhlbSB1bnRpbCB0aGV5IGNhbiAKcmVsYXRlIGl0IHJhdGlvbmFsbHkgdG8gb3RoZXIgZmFjdHMsIGFuZCByZS0gCmdhcmQgaXQgYXMgcGFydCBvZiBhIG1vcmUgb3IgbGVzcyBjb21wcmUtIApoZW5zaWJsZSBzY2hlbWUgb2YgdGhpbmdzLiAKCkl0IGlzIHJpZGljdWxvdXMgdG8gc2F5IChhcyBzb21lIG9mIHRoZSAKb3J0aG9kb3ggZG8pIHRoYXQgdGhlc2UgcGVvcGxlIGFyZSBpbi18IApoZXJlbnRseSB3aWNrZWQgYW5kIHRoYXQgdGhlaXIgYXR0aXR1ZGUgaXMgCmluc3BpcmVkIGJ5IHRoZSBkZXZpbC4gT24gdGhlIGNvbnRyYXJ5IAp0aGV5IGFyZSBwcmVjaXNlbHkgdGhlIG1lbiB3aG8gdHJ1bHkgYXAtIApwcmVjaWF0ZSBHb2TigJlzIGdyZWF0IGdpZnQgb2YgcmVhc29uLCBhbmQgCmFyZSBkZXRlcm1pbmVkIHRvIGVtcGxveSBpdCBpbSB0aGUgaGlnaGVzdCAKb2YgYWxsIHBvc3NpYmxlIGRpcmVjdGlvbnPigJRmb3IgdGhlIGVsdWNpZGEtIAp0aW9uIG9mIHRoZSB0cnV0aCBhYm91dCByZWxpZ2lvbi4gVGhlIHRydXRoIAppcyB0aGF0IHRoZSBjcml0aWNzIGFyZSBvZiB0aGUgZ3JlYXRlc3QgcG9zLSAKc2libGUgc2VydmljZSB0byByZWxpZ2lvbjsgdGhleSBhcmUgY2xlYXItIAppbmcgdXAgcG9pbnRzIGluIGl0IHdoaWNoIGhlcmV0b2ZvcmUgaGF2ZSAKYmVlbiB2YWd1ZTsgdGhleSBhcmUgc3RhdGluZyB3aXRoIGFjY3VyYWN5IAoKCjE4MiBBRFlBUiBUQUxLUyAKCgptYXR0ZXJzIGluIGNvbm5lY3Rpb24gd2l0aCBpdCB3aGljaCB3ZXJlIApwcmV2aW91c2x5IHZlcnkgcGFydGlhbGx5IHVuZGVyc3Rvb2Q7IHRoZXkgCmFyZSB0cnlpbmcgdG8gbWFrZSBhIHJlYXNvbmFibGUgc3lzdGVtIG91dCAKb2Ygd2hhdCBoYXMgdW50aWwgbm93IGJlZW4gbm90aGluZyBidXQgCmEgbWFzcyBvZiBtZWFuaW5nbGVzcyBjb25mdXNpb24uIAoKbGYgYW55IG9mIG91ciBtZW1iZXJzIGhhdmUgb3J0aG9kb3ggCmZyaWVuZHMgd2hvIGFyZSBkaXN0dXJiZWQgYnkgdGhlc2UgZWZmb3J0cywgCndobyBmZWFyIGxlc3QgdGhpcyBoYmVyYWxpc21nIGFuZCBfIHJhdGlvbmFsLSAKaXNpbmcgb2YgdGhlaXIgZmFpdGggc2hvdWxkIHJlZmluZSBpdCBhbHRvLSAKZ2V0aGVyIG91dCBvZiBleGlzdGVuY2UsIGxldCB0aGVtIHJlY29tbWVuZCAKdG8gdGhlbSB0aGUgdGVhY2hpbmdzIG9mIFRoZW9zb3BoeSwgZm9yIAp0aGF0IGlzIHRoZSB2ZXJ5IHRoaW5nIHdoaWNoIHRoZXkgbmVlZC4gCkl0IHdpbGwgdGVhY2ggdGhlbSB0byBwYXVzZSBiZWZvcmUgdGhyb3ctIAppbmcgYXNpZGUgYW5jZXN0cmFsIGJlbGllZiwgYW5kIGl0IHdpbGwgc2hvdyAKdGhlbSB0aGF0IHdoZW4gcHJvcGVybHkgdW5kZXJzdG9vZCB0aGF0IApiZWhlZiBoYXMgYSByZWFsIG1lYW5pbmcgYW5kIGEgcmVhbCAKZm91bmRhdGlvbiwgYW5kIHRoYXQsIHdoaWxlIHNvbWUgb2YgdGhlIAp2YWdhcmljcyBvZiBtZWRpZXZhbCBlY2NsZXNpYXN0aWNhbCBkb2dpbmEgCm1heSBiZSBpbWVjb21wcmVoZW5zaWJsZSBhbmQgaW5jcmVkaWJsZSwgCnRoZSBvcmlnaW5hbCB0ZWFjaGluZyBvZiB0aGUgQ2hyaXN0IHdhcyBhIAptYWduaWZpY2VudCBwcmVzZW50bWVudCBvZiB1bml2ZXJzYWwgdHJ1dGguIAoKSWYgdGhleSBoYXZlIHNvbWV3aGF0IG91dGdyb3duIHRoZSBvdXRlciAKZm9ybSBvZiB0aGVpciByZWxpZ2lvbiwgaWYgdGhleSBoYXZlIGJyb2tlbiAKdGhyb3VnaCB0aGUgY2hyeXNhbGlzIG9mIGJsaW5kIGZhaXRoLCBhbmQgCm1vdW50ZWQgb24gdGhlIHdpbmdzIG9mIHJlYXNvbiBhbmQgaW50dWktIAp0aW9uIHRvIHRoZSBmcmVlciwgbm9ibGVyIG1lbnRhbCBsaWZlIG9mIAptb3JlIGV4YWx0ZWQgbGV2ZWxzLCBUaGVvc29waHkgd2lsbCBzaG93IAp0aGVtIHRoYXQgaW4gYWxsIHRoaXMgdGhlcmUgaGFzIGJlZW4gbm8gCgoKQ0hSSVNUSUFOSVRZIDE4MyAKCgpsb3NzLCBidXQgYSBncmVhdCBhbmQgZ2xvcmlvdXMgZ2Fpbi4gRm9yIAppdCB0ZWxscyB0aGVtIHRoYXQgdGhlIGdsb3cgb2YgZGV2b3Rpb24gCndoaWNoIGhhcyBtZWFudCBzbyBtdWNoIHRvIHRoZW0gaW4gdGhlaXIgCnNwaXJpdHVhbCBsaWZlIGlzIG1vcmUgdGhhbiBqdXN0aWZpZWQsIHRoYXQgCnRoZSBzcGxlbmRvdXIgYW5kIGJlYXV0eSBhbmQgXyBwb2V0cnkgb2YgCnJlbGlnaW91cyB0aG91Z2h0IGV4aXN0IGluIGZ1bGxlciBtZWFzdXJlIAp0aGFuIHRoZXkgaGF2ZSBldmVyIGhvcGVkIGJlZm9yZeKAlG5vIApsb25nZXIgYXMgbWVyZSBwbGVhc2FudCBkcmVhbXMgZnJvbSB3aGljaCAKdGhlIGNvbGQgaGdodCBvZiBjb21tb24tc2Vuc2UgbWF5IGF0IAphbnkgdGltZSBydWRlbHkgYXdha2VuIHRoZW0sIGJ1dCBhcyAKdHJ1dGhzIG9mIG5hdHVyZSB3aGljaCB3aWxsIGJlYXIgaW52ZXN0aS0gCmdhdGlvbiwgd2hpY2ggYmVjb21lIG9ubHkgYnJpZ2h0ZXIgYW5kIAptb3JlIHBlcmZlY3QgYXMgdGhleSBhcmUgbW9yZSBhY2N1cmF0ZWx5IAp1bmRlcnN0b29kLiAKCkNlcnRhaW5seSB0aGUgQ2hyaXN0aWFuIGJpYmxlIG91Z2h0IG5vdCB0byAKYmUgdGFrZW4gbGl0ZXJhbGx5LCBmb3IgbWFueSBvZiBpdHMgc3RhdGUtIAptZW50cyBhcmUgc3ltYm9saWNhbCwgYW5kIG90aGVycyBhcmUgc2ltcGx5IApub3QgdHJ1ZS4gV2hlbiB3ZSBleGFtaW5lIGNsYWlydm95YW50bHkgCnRoZSBsaWZlIG9mIHRoZSBmb3VuZGVyIG9mIENocmlzdGlhbml0eSwgZm9yIApleGFtcGxlLCB3ZSBjYW4gZmluZCBubyB0cmFjZSBvZiB0aGUgYWwtIApsZWdlZCB0d2VsdmUgYXBvc3RsZXM7IGl0IHdvdWxkIHNlZW0gdGhhdCAKYXMgbWVuIHRoZXkgbmV2ZXIgZXhpc3RlZCwgYnV0IHRoYXQgdGhleSB3ZXJlIAppbnRyb2R1Y2VkIGludG8gdGhlIHN0b3J5IGZvciBzb21lIHJlYXNvbuKAlCAKcG9zc2libHkgdG8gdHlwaWZ5IHRoZSB0d2VsdmUgc2lnbnMgb2YgdGhlIAp2b2RpYWMuIFRoZSBkaXNjaXBsZSBKZXN1cywgd2hvc2UgYm9keSAKd2FzIHRha2VuIGJ5IHRoZSBDaHJpc3QsIHdhcyDigJhub3QgYW4gaWxsZWctIAppdGltYXRlIHNvbiwgYXMgaXMgaW1wbGllZCBpbiB0aGUgZ29zcGVsLCBub3IgCndhcyBoaXMgZmF0aGVyIGEgY2FycGVudGVyLiBIZSB3YXMgaW4gCgoKMTg0IEFEWUFSIFRBTEtTIAoKCnJlYWxpdHkgb2YgdGhlIGhpZ2hlc3QgYXJpc3RvY3JhY3kgb2YgdGhlIApKZXdzLCBhIGRlc2NlbmRhbnQgb2YgdGhlaXIgb3duIG9sZCByb3lhbCAKaG5lLiBIZSBtYXkgaG93ZXZlciBoYXZlIGhhZCBhIHRpbmdlIApvZiBBcnlhbiBibG9vZCBpbiBoaW0sIHdoaWNoIHdvdWxkIGJlIApxdWl0ZSBlbm91Z2ggdG8gY2F1c2UgdGhlIGV4Y2x1c2l2ZSBKZXdzIAp0byBzYXkgdGhhdCBoZSB3YXMgbm90IGxlZ2l0aW1hdGVseSBvZiAKdGhlIHNlZWQgb2YgRGF2aWQsIGFuZCB0aGF0IHN0YXRlbWVudCAKbWlnaHQgdmVyeSBlYXNpbHkgYmUgdGFrZW4gdG8gbWVhbiBzdWNoIGFuIAppcnJlZ3VsYXIgYmlydGggYXMgaXMgc3VnZ2VzdGVkIGJ5IHRoZSAKbmFycmF0aXZlLiB8IApUaGUgdHJ1dGggaXMgdGhhdCB0aGUgZm91ciBnb3NwZWxzIGF0IAphbnkgcmF0ZSB3ZXJlIG5ldmVyIGludGVuZGVkIHRvIGJlIHRha2VuIAphcyBpbiBhbnkgc2Vuc2UgaGlzdG9yaWNhbC4gVGhleSBhcmUgYWxsIApmb3VuZGVkIHVwb24gYSBtdWNoIHNob3J0ZXIgZG9jdW1lbnQgd3JpdHRlbiAKaW4gSGVicmV3IGJ5IGEgbW9uayBuYW1lZCBNYXR0aGV1cywgCndobyBsaXZlZCBpbiBhIG1vbmFzdGVyeSBpbiBhIGRlc2VydCB0byAKdGhlIHNvdXRoIG9mIFBhbGVzdGluZS4gSGUgc2VlbXMgdG8gaGF2ZSAKY29uY2VpdmVkIHRoZSBpZGVhIG9mIGNhc3Rpbmcgc29tZSBvZiB0aGUgCmdyZWF0IGZhY3RzIG9mIGluaXRpYXRpb24gaW50byBhIG5hcnJhdGl2ZSAKZm9ybSBhbmQgbWluZ2xpbmcgd2l0aCBpdCBzb21lIHBvaW50cyAKb3V0IG9mIHRoZSBoZmUgb2YgdGhlIHJlYWwgSmVzdXMgd2hvIHdhcyAKYm9ybiAxMDUgcFJCLiBjLiwgYW5kIHNvbWUgZnJvbSB0aGUgbGlmZSAKb2YgYW5vdGhlciBxdWl0ZSBvYnNjdXJlIGZhbmF0aWNhbCBwcmVhY2hlciwgCndobyBoYWQgYmVlbiBjb25kZW1uZWQgdG8gZGVhdGggYW5kIGV4LSAKZWN1dGVkIGluIEplcnVzYWxlbSBhYm91dCAzMCBBLiBELiAK4oCcSGUgc2VudCB0aGlzIGRvY3VtZW50IHRvIGEgZ3JlYXQgZnJpZW5kIApvZiBoaXMgd2hvIHdhcyB0aGUgY2hpZWYgYWJib3Qgb2YgYSBodWdlIAptb25hc3RlcnkgYXQgQWxleGFuZHJpYSwgYW5kIHN1Z2dlc3RlZCB0by4gCgoKQ0hSSVNUSUFOSVRZIDE4NSAKaGltIHRoYXQgaGUsIG9yIHNvbWUgb2YgaGlzIGFzc2lzdGFudHMsIG1pZ2h0IApwZXJoYXBzIHJlY2FzdCBpdCwgYW5kIGlzc3VlIGl0IGluIHRoZSBHcmVlayAKbGFuZ3VhZ2UuIFRoZSBBbGV4YW5kcmlhbiBhYmJvdCBzZWVtcyB0byAKaGF2ZSBlbXBsb3llZCBhIG51bWJlciBvZiBoaXMgeW91bmcgbW9ua3MgCuKAmHVwb24gdGhpcyB3b3JrLCBhbGxvd2luZyBlYWNoIG9mIHRoZW0gdG8gCnRyeSB0aGUgdGFzayBmb3IgaGltc2VsZiwgYW5kIHRvIHRyZWF0IGl0IG0gCmhpcyBvd24gd2F5LiBBIG51bWJlciBvZiBkb2N1bWVudHMgb2YgCnZlcnkgdmFyeWluZyBtZXJpdCDigJh3ZXJlIHRodXMgXyBwcm9kdWNlZCwgCmVhY2ggaW5jb3Jwb3JhdGluZyBpbiBoaXMgc3RvcnkgbW9yZSBvciBsZXNzIApvZiB0aGUgb3JpZ2luYWwgbWFudXNjcmlwdCBvZiBNYXR0aGV1cywgYnV0IAplYWNoIGFsc28gYWRkaW5nIHRvIGl0IHN1Y2ggbGVnZW5kcyBhcyBoZSAKaGFwcGVuZWQgdG8ga25vdywgb3IgYXMgaGlzIHRhc3RlIGFuZCBmYW5jeSAKZGljdGF0ZWQuIEZvdXIgb2YgdGhlc2Ugc3RpbGwgc3Vydml2ZSB0byB1cywgCmFuZCB0byB0aGVtIGFyZSBhdHRhY2hlZCB0aGUgbmFtZXMgb2YgdGhlIAptb25rcyB3aG8gd3JvdGUgdGhlbSwgTWF0dGhldywgTWFyaywgCkx1a2UgYW5kIEpvaG4uIOKAmFRoZSBzcGxlbmRpZCBwYXNzYWdlIHdpdGggCndoaWNoIHRoZSBnb3NwZWwgb2YgU3QuIEpvaG4gb3BlbnMgd2FzIApub3Qgb3JpZ2luYWwgYnV0IHF1b3RlZCwgZm9yIHdlIGZvdW5kIGl0IAppbiBleGlzdGVuY2UgbWFueSB5ZWFycyBiZWZvcmUgdGhlIHRpbWUgb2YgCnRoZSBDaHJpc3QgaW4gYSBtYW51c2NyaXB0IHdoaWNoIHdhcyBldmVuIAp0aGVuIG9mIGhvYXJ5IGFudGlxdWl0eS4gCgpJdCB3YXMgYXNzb2NpYXRlZCBpbiB0aGF0IG1hbnVzY3JpcHQgd2l0aCAKYSBxdW90YXRpb24gZnJvbSB0aGUgU3RhbnphcyBvZiBEenlhbiwgdGhpcyAKbGF0dGVyIGFsc28gYmVpbmcgdHJhbnNsYXRlZCBpbnRvIEdyZWVrLiAKCgoyNCAKCgoxODYgQURZQVIgVEFMS1MgCgoKU0lOIAoKCllvdSBhc2sgd2hhdCBpcyB0aGUgcmVhbCBtZWFuaW5nIG9mIHNpbi4gCkluIHRoZSBzZW5zZSBpbiB3aGljaCB0aGUgd29yZCBpcyBvcmRpbmFyaS0gCmx5IGVtcGxveWVkLCBhdCBsZWFzdCBieSBDaHJpc3RpYW4gcHJlYWNoZXJzLCB8IApJIHRoaW5rIHNpbiBtYXkgYmUgZGVmaW5lZCBhcyBhIGZpZ21lbnQgCm9mIHRoZSB0aGVvbG9naWNhbCBpbWFnaW5hdGlvbi4gSXQgaXMgcG9wdS0gCmxhcmx5IHN1cHBvc2VkIHRvIGluZGljYXRlIGEgZGVmaWFuY2Ugb2YgCmRpdmluZSBsYXfigJR0aGUgcGVyZm9ybWFuY2Ugb2Ygc29tZSBhY3Rpb24gCndoaWNoIHRoZSBhY3RvciBrbm93cyB0byBiZSB3cm9uZy4gSXQgCmlzIGV4Y2VlZGluZ2x5IGRvdWJ0ZnVsIHdoZXRoZXIgdGhpcyBwaGUtIApub21lbm9uIGV2ZXIgb2NjdXJzLiBJbiBhbG1vc3QgZXZlcnkgY29uLSAKY2VpdmFibGUgY2FzZSBtYW4gXyBicmVha3MgdGhlIGxhdyB0aHJvdWdoIAppZ25vcmFuY2Ugb3IgaGVlZGxlc3NuZXNzLCBhbmQgbm90IG9mIGRlbGliZXJhdGUgCmludGVudGlvbi4gV2hlbiBvbmNlIGEgbWFuIHJlYWxseSBrbm93cyAKYW5kIHNlZXMgdGhlIGRpdmluZSBpbnRlbnRpb24gaGUgaW1ldml0YWJseSAKY29tZXMgaW50byBoYXJtb255IHdpdGggaXQsIGZvciB0d28gcmVhLSAKc29uczogYXQgYW4gZWFybGllciBzdGFnZSBiZWNhdXNlIGhlIHNlZXMgCnRoZSB1dHRlciBmdXRpbGl0eSBvZiBkb2luZyBvdGhlcndpc2UsIGFuZCAKbGF0ZXIgYmVjYXVzZSwgc2VlaW5nIHRoZSBnbG9yeSBhbmQgXyBiZWF1dHkgCm9mIHRoZSBkZXNpZ24sIGhlIGNhbm5vdCBidXQgdGhyb3cgaGltLSAKc2VsZiBpbnRvIGl0cyBleGVjdXRpb24gd2l0aCBhbGwgdGhlIHBvd2VycyAKb2YgaGlzIGhlYXJ0IGFuZCBfIHNvdWwuIAoKT25lIG9mIHRoZSBtb3N0IHNlcmlvdXMgb2YgdGhlIG1hbnkgbWlzLSAKY29uY2VwdGlvbnMgd2hpY2ggd2UgaGF2ZSBpbmhlcml0ZWQgZnJvbSB0aGUgCmRhcmsgYWdlcyBpcyB0aGF0IHdoYXQgaXMgY2FsbGVkIOKAmHNpbuKAmSBpcyBhIApwZXJ2ZXJzaXR5IHRvIGJlIG1ldCB3aXRoIHB1bmlzaG1lbnQgYW5kIApzYXZhZ2UgcGVyc2VjdXRpb24sIGluc3RlYWQgb2Ygd2hhdCBpdCByZWFsbHkgCgoKU0lOIDE4NyAKCgppcywgdGhlIHJlc3VsdCBvZiBhIGNvbmRpdGlvbiBvZiBpZ25vcmFuY2UgdGhhdCAKY2FuIG9ubHkgYmUgZGVhbHQgd2l0aCBieSBlbmxpZ2h0ZW5tZW50IGFuZCAKZWR1Y2F0aW9uLiBJdCBtYXkgYmUgb2JqZWN0ZWQgdGhhdCBpbiAKZGFpbHkgbGlmZSB3ZSBjb25zdGFudGx5IHNlZSBwZW9wbGUgZG9pbmcgCuKAmHdoYXQgdGhleSBtdXN0IGtub3cgdG8gYmUgd3JvbmcsIGJ1dCAKdGhpcyBpcyBhIG1pc3N0YXRlbWVudCBvZiB0aGUgY2FzZS4gVGhleSAKYXJlIGRvaW1nIHdoYXQgdGhleSBoYXZlIGJlZW4gZm9sZCAxIAp3cm9uZywgd2hpY2ggaXMgcXVpdGUgYSBkaWZmZXJlbnQgbWF0dGVyLiAKSWYgYSBtYW4gcmVhbGx5IHNub3dzIHRoYXQgYW4gYWN0aW9uIDFzIAp3cm9uZywgYW5kIHRoYXQgaXQgd2lsbCBpbmV2aXRhYmx5IGJlIGZvbGxvdy0gCmVkIGJ5IGV2aWwgY29uc2VxdWVuY2VzLCBoZSBpcyBjYXJlZnVsIHRvIAphdm9pZCBpdC4gQSBtYW4gcmVhbGx5IGtub3dzIHRoYXQgZmlyZSB3aWxsIApidXJuIGhpbTsgdGhlcmVmb3JlIGhlIGRvZXMgbm90IHB1dCBJbnMgCmhhbmQgaW50byBpdC4gSGUgaGFzIGJlZW4gdG9sZCB0aGF0IHRoZSAKZmlyZSBvZiBoZWxsIHdpbGwgYnVybiBoaW0gYXMgdGhlIHJlc3VsdCBvZiAKYSBjZXJ0YWluIGFjdGlvbuKAlHNheSBwbGF5aW5nIGNhcmRzIG9uIGEgClN1bmRheeKAlGJ1dCBoZSBkb2VzIG5vdCByZWFsbHkgLzpub3cgdGhpcywgCmFuZCB0aGVyZWZvcmUgd2hlbiBoZSBmZWVscyB0aGUgaW5jbGluYXRpb24gCnRvIHBsYXkgY2FyZHMgaGUgZG9lcyBzbyBpbiBzcGl0ZSBvZiB0aGUgCnRocmVhdGVuZWQgY29uc2VxdWVuY2VzLiBJdCB3aWxsIGJlIGZvdW5kIAp0aGF0IGV2ZXJ5IG9uZSB3aG8gZG9lcyB3cm9uZyBqdXN0aWZpZXMgdGhlIAp3cm9uZyBhY3Rpb24gdG8gaGltc2VsZiBhdCB0aGUgdGltZSBvZiBpdHMgCmNvbW1pc3Npb24sIHdoYXRldmVyIGhlIG1heSB0aGluayBhYm91dCAKaXQgYWZ0ZXJ3YXJkcyBpbiBjb2xkIGJsb29kLiBTbyBJIHNheSB0aGF0IApzaW4gYXMgb3JkaW5hcmlseSB1bmRlcnN0b29kIGlzIGFfIGZpZ21lbnQgCm9mIHRoZSB0aGVvbG9naWNhbCBpbWFnaW5hdGlvbjsgd2hhdCByZWFsbHkgCmV4aXN0cyAxcyBhbiB1bmZvcnR1bmF0ZSBjb25kaXRpb24gb2YgaWdub3ItIAphbmNlIHdoaWNoIG9mdGVuIGxlYWRzIHRvIGluZnJhY3Rpb24gb2YgdGhlIAoKCjE4OCBBRFlBUiBUQUxLUyAKCgpkaXZpbmUgTGF3LiBUaGlzIGlnbm9yYW5jZSBpdCBpcyBvdXIgZHV0eSAKdG8gZW5kZWF2b3VyIHRvIGRpc3BlbCBieSB0aGUgbGlnaHQgb2YgClRoZW9zb3BoeS4gCgoKVHVzIFBvciAKCgpBIG1hZ25pZmljZW50IG9wcG9ydHVuaXR5IGlzIHdhaXRpbmcgZm9yIAp0aGUgUG9wZSB3aG8gc2hhbGwgYmUgcmVhZHkgYW5kXyBicmF2ZSAKZW5vdWdoIHRvIHRha2UgaXQuIEluc3RlYWQgb2YgZnVsbWluYXRpbmcgCnJlc2NyaXB0cyBhbmQgYnVsbHMgYWdhaW5zdCBUaGVvc29waHkgYW5kIApsaWJlcmFsaXNtLCBoZSBtaWdodCBoaW1zZWxmIHByb3BvdW5kIHRoZSAK4oCYVGhlb3NvcGhpY2FsIGludGVycHJldGF0aW9uIG9mIENocmlzdGlhbml0eS4gClJlbWVtYmVyIHRoYXQgdGhlIENhdGhvbGljIENodXJjaCBwb3NzZXNzLSAKZXMgd2hhdCBpcyBjYWxsZWQgdGhlIGRvY3RyaW5lIG9mIGRldmVsb3AtIAptZW50LCBhbmQgYWxzbyB0aGF0IGl0IGhhcyBwcm9jbGFpbWVkIHRoZSAKUG9wZSB0byBiZSB0aGUgaW5mYWxsaWJsZSBleHBvbmVudCBvZiBkaXZpbmUgCmRvY3RyaW5lLCB0aGUgdmljZWdlcmVudCBvZiBHb2QgdXBvbiAKZWFydGguIEhlIHdvdWxkIHRoZXJlZm9yZSBiZSBwZXJmZWN0bHkgCndpdGhpbiBsaXMgcmlnaHRzIGlmLCB3aXRoIHJlZ2FyZCB0byB0aGUgClRoZW9zb3BoaWNhbCBpbnRlcnByZXRhdGlvbiwgaGUgc2hvdWxkIHByby0gCm5vdW5jZSBxdWl0ZSBib2xkbHk6IAoK4oCcQ2VydGFpbmx5IHRoaXMgd2hpY2ggeW91IGJyaW5nIGZvcndhcmQgCmlzIHRoZSB0cnVlIG1lYW5pbmcgb2YgQ2hyaXN0aWFuIGRvY3RyaW5lLiAKV2UgaGF2ZSBhbHdheXMga25vd24gdGhpcywgYW5kIHdlIGhhdmUgCnBsZW50eSBvZiBtYW51c2NyaXB0cyBpIHRoZSBWYXRpY2FuIExpYnJhcnkgCnRvIHByb3ZlIGl0LiBXZSBkaWQgbm90IHRlbGwgeW91IHRoaXMgYmUtIAoKClRIRSBQT1BFIDE4OSAKCgpmb3JlLCBiZWNhdXNlIGFsbCB0aHJvdWdoIHRoZSBhZ2VzIHVudGlsIApub3cgbWVuIGhhdmUgbm90IGJlZW4gZml0IGZvciBzdWNoIGEgCnJldmVsYXRpb24uIFRoZXkgaGF2ZSBiZWVuIHRvbyBjcnVkZSwgCnRvbyByb3VnaCwgdG9vIHVuZGV2ZWxvcGVkIHRvIHVuZGVyLSAK4oCYc3RhbmQgYSBwaGlsb3NvcGhpY2FsIGFuZCBteXN0aWNhbCBpbnRlci0gCnByZXRhdGlvbi4gVGhlIG91dGVyIGh1c2sgb2YgdGhlIHJlbGlnaW9uIApoYXMgYmVlbiBhbGwgdGhhdCBjb3VsZCB1c2VmdWxseSBiZSBvZmZlcmVkIAp0byB0aGVtLiBOb3cgb25lIHN0YWdlIG1vcmUgaGFzIGJlZW4gCmF0dGFpbmVkIGFuZCB0aGUgd29ybGQgaXMgcmVhZHkgZm9yIHRoaXMgCmZ1cnRoZXIgcmV2ZWxhdGlvbi4gVGhlIHNlY29uZCBhbmQgaW1uZXIgCm1lYW5pbmcgb2Ygb3VyIGRvY3RyaW5lIGlzIHRoZXJlZm9yZSBwdXQgCmJlZm9yZSB5b3UsIGFuZCB3aGlsZSB3ZSBtdXN0IG5vdCBjb25kZW1uIAp0aG9zZSB3aG8gYXJlIHN0aWxsIGF0IHRoZSBzdGFnZSB3aGVuIHRoZXkgCm11c3QgY2xpbmcgdG8gdGhlIG91dGVyIGh1c2ssIG5laXRoZXIgbXVzdCAKdGhleSBvbiB0aGVpciBwYXJ0IGJlIGFsbG93ZWQgdG8gY29uZGVtbiAKdGhvc2Ugd2hvIGFyZSByZWFkeSB0byB0YWtlIHRoZSBmdXJ0aGVyIApzdGVwIGFuZCB0byByZWNlaXZlIGEgaGlnaGVyIGlsbHVtaW5hdGlvbi7igJ0gCgpCdXQgb2YgY291cnNlIGxlIG11c3QgaW5kZWVkIGJlIGEgc3Ryb25nIAp1cyB3ZWxsIGFzIGEgd2lzZSBtYW4gd2hvIHNob3VsZCBkbyB0aGlzLCAKZm9yIGxpa2UgYWxsIG90aGVyIGdyZWF0IHBlcnNvbmFnZXMgdGhlIFBvcGUgCmlzIHN1cnJvdW5kZWQgYnkgZW5vcm1vdXMgbWFzc2VzIG9mIHRob3VnaHQtIApmb3JtcywgYW5kIGhlIHdvdWxkIGZpbmQgaXQgYSBtYXR0ZXIgb2YgCmV4dHJlbWUgZGlmZmljdWx0eSB0byBicmVhayB0aHJvdWdoIHRoZXNlIAphbmQgbWFrZSBhIG5ldyBkZXBhcnR1cmUuIAoKCjE5MCBBRFlBUiBUQUxLUyAKCgpDRVJFTU9OSUFMIAoKClRoZSBsaW5lIG9mIGNlcmVtb25pYWwgaXMgb25lIGFsb25nIHdoaWNoIAptYW55IHBlb3BsZSBjb21lLCBidXQgb2YgY291cnNlIGl0IG11c3QgCmJlIHVuZGVyc3Rvb2QgdGhhdCBubyByZWxpZ2lvdXMgY2VyZW1vbmlhbOKAmSAKd2hhdGV2ZXIgaXMgZXZlciByZWFsbHkgZXNzZW50aWFsLCBhbmQgdGhlIG1hbiAKd2hvIHdpc2hlcyB0byBlbnRlciB1cG9uIHRoZSBQYXRoIG9mIApIb2xpbmVzcyBtdXN0IHJlYWxpc2UgdGhpcyBmdWxseSBhbmQgbXVzdCAKY2FzdCBvZmYgYmVsaWVmIGluIHRoZSBuZWNlc3NpdHkgb2YgY2VyZW1vbmllcywgCmFzIG9uZSBvZiB0aGUgZmV0dGVycyB3aGljaCBob2xkIGhpbSBiYWNrIApmcm9tIG5pcnZhbmEuIFRoaXMgZG9lcyBub3QgbWVhbiB0aGF0IApjZXJlbW9uaWVzIG1heSBub3QgYmUgc29tZXRpbWVzIHF1aXRlIAplZmZlY3RpdmUgaW4gcHJvZHVjaW5nIHRoZSByZXN1bHRzIHdoaWNoIGFyZSAKaW50ZW5kZWQsIGJ1dCBvbmx5IHRoYXQgdGhleSBhcmUgbmV2ZXIgCnJlYWxseSBuZWNlc3NhcnkgZm9yIGFueSBvbmUsIGFuZCB0aGF0IHRoZSAKY2FuZGlkYXRlIGZvciBoaWdoZXIgcHJvZ3Jlc3MgbXVzdCBsZWFybiAKdG8gZG8gdXR0ZXJseSB3aXRob3V0IHRoZW0uIFRoZSBjZXJlbW9uaS0gCmFsIGxpbmUgaXMgYW4gZWFzeSByb2FkIGZvciBhIGNlcnRhaW4gdHlwZSAKb2YgcGVvcGxlLCBhbmQgaXMgcmVhbGx5IGhlbHBmdWwgYW5kIHVwbGlmdC0gCmluZyBmb3IgdGhlbTsgYnV0IHRoZXJlIGlzIGFub3RoZXIgdHlwZSAKb2YgbWVuIHdobyBhbHdheXMgZmVlbCBjZXJlbW9uaWFsIGFzIAphbiBvYnN0YWNsZSBiZXR3ZWVuIHRoZW1zZWx2ZXMgYW5kXyB0aGUgCmRlaXRpZXMgd2hpY2ggdGhleSB3aXNoIHRvIHJlYWNoLiAKCkluIENocmlzdGlhbml0eSB0aGlzIGNlcmVtb25pYWwgbGluZSBpcyB0aGUgCm9uZSBhcHBvaW50ZWQgYnkgaXRzIGZvdW5kZXIsIHRocm91Z2ggd2hpY2ggCmhpcyBtYWdpYyBpcyB0byB3b3JrLiBUaGUgXyBjb25zZWNyYXRpb24gCm9mIHRoZSBob3N0LCBmb3IgZXhhbXBsZSwgaXMgYSBtZWFucyBieSAKd2hpY2ggc3Bpcml0dWFsIGZvcmNlIGlzIHBvdXJlZCBvdXQgb3ZlciAKCgpDRVJFTU9OSUFMIDE5MSAKCgp0aGUgcGVvcGxlLiBUaGVyZSBpcyBvZnRlbiBhIHZhc3QgYW1vdW50IApvZiBkZXZvdGlvbmFsIGZlZWxpbmcgYXQgdGhlIG1vbWVudCBvZiAKdGhlIGNvbnNlY3JhdGlvbiwgYW5kIHRoZSB3b3JraW5nIG9mIHRoZSAKbWFnaWMgaXMgYXNzaXN0ZWQgYnkgdGhhdCwgdGhvdWdoIGl0IGRvZXMgCm5vdCBkZXBlbmQgdXBvbiBpdC4gVGhvc2Ugd2hvIGFyZSAKZGV2b3Rpb25hbCB1bnF1ZXN0aW9uYWJseSByZWNlaXZlIG1vcmUsIApiZWNhdXNlIHRoZXkgYnJpbmcgd2l0aCB0aGVtIGFuIGFkZGl0aW9uLSAKYWwgZmFjdWx0eSBvZiByZWNlcHRpb24uIE9uIHRoZSBvdGhlciBoYW5kLCAKdGhlcmUgaXMgYWx3YXlzIHRoZSBwcm9iYWJpbGl0eSB0aGF0IGlnbm9yYW50IApkZXZvdGlvbiB3aWxsIGRlZ2VuZXJhdGUgaW50byBzdXBlcnN0aXRpb24uIEluIAphIHJlY2VudCBlbnF1aXJ5IGludG8gdGhlc2UgbWF0dGVycyBmcm9tIAp0aGUgb2NjdWx0IHBvaW50IG9mIHZpZXcsIG1hZGUgaW4gU2ljaWx5LCAKWyBmb3VuZCB0aGF0IHRoZXJlIHdhcyBjZXJ0YWlubHkgcGxlbnR5IApvZiBzdXBlcnN0aXRpb24sIGFuZCBtdWNoIGhhcm1mdWwgaW50ZXJmZXItIAplbmNlIGluIGZhbWlseSBtYXR0ZXJzIG9uIHRoZSBwYXJ0IG9mIHRoZSAKcHJpZXN0czsgYnV0IHN0aWxsIG9uIHRoZSB3aG9sZSB0aGUgY291bi0gCnRyeSB3YXMgZGlzdGluY3RseSBiZXR0ZXIgb2Zm4oCUdmVyeSBtdWNoIGJldHRlciAKb2Zm4oCUd2l0aCBpdHMgcmVpZ2lvbiB0aGFuIGl0IHdvdWxkIGhhdmUgYmVlbiAKd2l0aG91dCBpdC4gV2Ugc2hvdWxkIHJlbWVtYmVyIGFsc28gdGhhdCAKaW4gaGlzdG9yeSB3ZSB1c3VhbGx5IGhlYXIgbXVjaCBvZiB0aGUgd29yc3QgCmVmZmVjdHMgb2YgcmVsaWdpb3VzIGVudGh1c2lhc20sIHdoZXJlYXMgdGhlIApjdm9vZCBzdGVhZHkgcHJvZ3Jlc3Mgb2YgbWFueSB0aG91c2FuZHMgdW5kZXIgCml0cyBpbmZsdWVuY2UgbWFrZXMgYnV0IGh0dGxlIGltcHJlc3Npb24uIAoKCjE5MiBBRFlBUiBUQUxLUyAKCgpQUkFZRVIgCgoKVHQgaXMgZGlmZmljdWx0IHRvIHNheSBhbnl0aGluZyBvbiB0aGUgCnF1ZXN0aW9uIG9mIHByYXllciB0aGF0IHdvdWxkIGJlIHVuaXZlcnNhbGx5IAphcHBsaWNhYmxlLCBiZWNhdXNlIHRoZXJlIGFyZSBzdWNoIHZlcnkgZGlmZmVyLSAKZW50IGtpbmRzIG9mIHByYXllciwgYW5kIHRoZXkgYXJlIGFkZHJlc3MtIAplZCB0byBiZWluZ3Mgd2hvIGRpZmZlciB2ZXJ5IHdpZGVseSBpbiBldm9sdS0gCnRpb24uIFRoZSBmb3VuZGVycyBvZiBtb3N0IGdyZWF0IHJlbGlnaW9ucyAKbmV2ZXIgaW4gYW55IHdheSBlbmNvdXJhZ2VkIHRoZWlyIGZvbGxvd2VycyB0byAKcHJheSB0byB0aGVtLCBhbmQgYXMgYSBydWxlIHRoZSBsYXR0ZXIgCmhhdmUgYmVlbiBmYXIgdG9vIGVubGlnaHRlbmVkIHRvIGRvIGFueS0gCnRoaW5nIG9mIHRoZSBraW5kLiBXaGV0aGVyIGEgdmVyeSBzdHJvbmcgCnRob3VnaHQgZGlyZWN0ZWQgdG93YXJkcyB0aGVtIHdvdWxkIHJlYWNoIAp0aGVtIG9yIG5vdCB3b3VsZCBkZXBlbmQgdXBvbiB0aGUgXyBsaW5lIApvZiBldm9sdXRpb24gd2hpY2ggdGhleSBoYXZlIHNpbmNlIGZvbGxvd2Vk4oCUIAppbiBmYWN0IHVwb24gd2hldGhlciB0aGV5IF8gc3RpbGwgcmVtYWluIAp3aXRoaW4gdG91Y2ggb2YgdGhpcyBlYXJ0aCBvciBub3QuIElmIHRoZXkgCndlcmUgc3RpbGwgc28gd2l0aGluIHJlYWNoLCBhbmQgaWYgc3VjaCBhIAp0aG91Z2h0IGRpZCByZWFjaCB0aGVtLCBpdCBpcyBwcm9iYWJsZSB0aGF0IAppZiB0aGV5IHNhdyB0aGF0IGl0IHdvdWxkIGJlIGdvb2QgZm9yIAp0aGUgdGhpbmtlciB0aGF0IGFueSBub3RpY2Ugc2hvdWxkIGJlIAp0YWtlbiB0aGV5IHdvdWxkIHR1cm4gaW5fIGhpcyBkaXJlY3Rpb24gCnRoZSBhdHRlbnRpb24gb2Ygc29tZSBvZiB0aGVpciBwdXBpbHMgd2hvIAphcmUgc3RpbGwgdXBvbiBlYXJ0aC4gQnV0IGl0IGlzIHF1aXRlIGluLSAKY29uY2VpdmFibGUgdGhhdCBhIG1hbiB3aG8gaGFkIGFueSBzb3J0IG9mIApjb25jZXB0aW9uIG9mIHRoZSBtYWduaWZpY2VudCBhbmQgZmFyLXJlYWNoLSAKaW5nIHdvcmsgZG9uZSBmb3IgZXZvbHV0aW9uIGJ5IHRoZSBHcmVhdCAKT25lcyBvbiBoaWdoZXIgcGxhbmVzIGNvdWxkIGRyZWFtIG9mIGluLSAKCgpQUkFZRVIgMTkzIAoKCnRydWRpbmcgaGlzIG93biBwZXR0eSBjb25jZXJucyB1cG9uIFRoZWlyIApub3RpY2U7IGhlIGNvdWxkIG5vdCBidXQga25vdyB0aGF0IGFueSAKa2luZCBvZiBoZWxwIHRoYXQgaGUgcmVxdWlyZWQgd291bGQgYmUgCmZhciBtb3JlIGZpdGx5IGdpdmVuIHRvIGhpbSBieSBzb21lb25lIApuZWFyZXIgdG8gaGlzIG93biBsZXZlbC4gRXZlbiBkb3duIGhlcmUgb24gCnRoaXMgcGh5c2ljYWwgcGxhbmUgd2UgYXJlIHdpc2VyIHRoYW4gdGhhdCwgCmZvciB3ZSBkbyBub3Qgd2FzdGUgdGhlIHRpbWUgb2YgdGhlIGdyZWF0LSAKZXN0IHNjaG9sYXJzIG9mIG91ciB1bml2ZXJzaXRpZXMgaW4gaGVscGluZyAKYmFiaWVzIG92ZXIgdGhlIGRpZmZpY3VsdGllcyBvZiB0aGUgYWxwaGFiZXQuIAoKQXMgcmVnYXJkcyB0aGUgc2FpbnRzIG9mIGFueSBvZiB0aGUgCmNodXJjaGVzIHRoZSBwb3NpdGlvbiBpcyBkaWZmZXJlbnQsIHRob3VnaCAKZXZlbiB3aXRoIHRoZW0gdGhlIGFiaWxpdHkgdG8gaGVhciAKcHJheWVycyB3aWxsIGRlcGVuZCB1cG9uIHRoZWlyIHBvc2l0aW9uIAppbiBldm9sdXRpb24sIFRoZSBvcmRpbmFyeSBzYWludCwgd2hvIAppcyBzaW1wbHkgYSBnb29kIGFuZCBob2x5IG1hbiwgd2lsbCAKb2YgY291cnNlIHRha2UgaGlzIGhlYXZlbi1oZmUgYXMgXyB1c3VhbCwgCmFuZCB3aWxsIHByb2JhYmx5IHRha2UgYSBKb25nIG9uZS4gSGlzIApsaWZlIG9uIHRoZSBhc3RyYWwgcGxhbmUgd291bGQgYmUgXyBoa2VseSAKdG8gYmUgYnV0IHNob3J0LCBhbmQgaXQgd291bGQgYmUgb25seSAKZHVyaW5nIHRoYXQgdGhhdCBpdCB3b3VsZCBiZSBfIHBvc3NpYmxlIApmb3IgYSBwcmF5ZXIgdG8gcmVhY2ggaGltIGFuZCBhdHRyYWN0IGhpcyAKYXR0ZW50aW9uLiBJZiBkdXJtZyB0aGF0IHRpbWUgaXQgZGlkIHNvIApyZWFjaCBoaW0sIG5vIGRvdWJ0IGhlIHdvdWxkIGRvIGFueXRoaW5nIAp0aGF0IGhlIGNvdWxkIHRvIHNhdGlzZnkgdGhlIHBldGl0aW9uZXIgOyAKYnV0IGl0IGlzIGJ5IG5vIG1lYW5zIGNlcnRhaW4gdGhhdCBpdCAKd291bGQgYXR0cmFjdCBoaXMgYXR0ZW50aW9uLCBmb3IgaGUgd291bGQgCm5hdHVyYWxseSBiZSBmdWxseSBvY2N1cGllZCB3aXRoIGhpcyBuZXcgCgoKc3Vycm91bmRpbmdzLiAKMjUgCgoKMTk0IEFEWUFSIFRBTEtTIAoKCldoZW4gaGUgZW50ZXJlZCB1cG9uIGhpcyBsb25nIHJlc3QgCmluIHRoZSBoZWF2ZW4td29ybGQgaGUgd291bGQgYmUgZW50aXJlLSAKbHkgYmV5b25kIGFueSBwb3NzaWJpbGl0eSBvZiBiZWltZyBkaXN0dXJiLSAKZWQgYnkgZWFydGhseSB0aGluZ3M7IHlldCBldmVuIGluIHN1Y2ggYSAKY2FzZSBhIHByYXllciB0byBodG0gbWlnaHQgbm90IGJlIHdpdGgtIApvdXQgZWZmZWN0IGluIGNvbm5lY3Rpb24gd2l0aCBoaW0uIFN1Y2ggYSAKbWFuIHdvdWxkIGFsbW9zdCBjZXJ0YWlubHkgYmUgcG91cmluZyBvdXQgCmEgY29uc3RhbnQgc3RyZWFtIG9mIGxvdmluZyB0aG91Z2h0IHRvLSAKd2FyZHMgaHVtYW5pdHksIGFuZCB0aGlzIHRob3VnaHQgd291bGQgCmJlIGEgcmVhbCBhbmQgcG90ZW50IHNob3dlciBvZiBibGVzc2luZywgCnRlbmRpbmcgZ2VuZXJhbGx5IHRvd2FyZHMgdGhlIHNwaXJpdHVhbCBoZWxwLSAKaW5nIG9mIHRob3NlIHVwb24gd2hvbSBpdCBmZWxsOyBhbmQgCnRoZXJlIGlzIG5vIGRvdWJ0IHRoYXQgdGhlIG1hbiB3aG8gd2FzIAplYXJuZXN0bHkgdGhpbmtpbmcgb2Ygb3IgcHJheWluZyB0byB0aGF0IHNhaW50IAp3b3VsZCBjb21lIGludG8gcmFwcG9ydCB3aXRoIGhpbSwgYW5kIHdvdWxkIAp0aGVyZWZvcmUgZHJhdyBkb3duIHVwb24gaGltc2VsZiBhIGdyZWF0IGRlYWwgCm9mIHRoYXQgZm9yY2UsIHRob3VnaCBlbnRpcmVseSB3aXRob3V0IHRoZSAKa25vd2xlZGdlIG9mIHRoZSBzYWludCBmcm9tIHdob20gaXQgY2FtZS4gCklmIHRoZSBzYWludCB3ZXJlIHN1ZmZpY2llbnRseSBhZHZhbmNlZCB0byBoYXZlIAplbnRlcmVkIHVwb24gYSBzcGVjaWFsIHNlcmllcyBvZiBiaXJ0aHMgcmFwaWRseSAKZm9sbG93aW5nIG9uZSBhbm90aGVyIHRoZSBjYXNlIHdvdWxkIGJlIApkaWZmZXJlbnQgYWdhaW4uIEhlIHdvdWxkIHRoZW4gYmUgYWxsIHRoZSAKdGltZSB3aXRoaW4gcmVhY2ggb2YgZWFydGgsIGVpdGhlciBodmluZyBvbiAKdGhlIGFzdHJhbCBwbGFuZSBvciBpbiBpbmNhcm5hdGlvbiB1cG9uIHRoZSAK4oCYcGh5c2ljYWwsIGFuZCBpZiB0aGUgcHJheWVyIHdlcmUgc3Ryb25nIGVub3VnaCAKdG8gYXR0cmFjdCBoaXMgYXR0ZW50aW9uIGF0IGFueSB0aW1lIHdoZW4gaGUgCndhcyBmb3IgYSBtb21lbnQgb3V0IG9mIGhpcyBib2R5LCBoZSAKd291bGQgcHJvYmFibHkgZ2l2ZSBhbnkgaGVscCBpbiBoaXMgcG93ZXIuIAoKClBSQVlFUiDigJggMTk1IAoKCkJ1dCBmb3J0dW5hdGVseSBmb3IgdGhlIG1hbnkgdGhvdXNhbmRzIAp3aG8gYXJlIGNvbnN0YW50bHkgcG91cmluZyBmb3J0aCB0aGVpciDigJhzb3VscyAKaW4gcHJheWVy4oCUaW4gdGhlIGJsaW5kZXN0IGlnbm9yYW5jZSwgb2YgY291cnNlLCAKYnV0IHN0aWxsIGluIHBlcmZlY3QgZ29vZCBmYWl0aOKAlHRoZXJlIAppcyBzb21ldGhpbmcgZWxzZSB0byBkZXBlbmQgdXBvbiB3aGljaCBpcyAKaW5kZXBlbmRlbnQgb2YgYWxsIHRoZXNlIGNvbnNpZGVyYXRpb25zLiBTaHJpIApLcmlzaG5hIHRlbGxzIHVzLCBpbiB0aGUgQmhhZ2F2YWQgKHJpdGEsIGhvdyAKYWxsIHRydWUgcHJheWVycyBjb21lIHRvIEhpbSwgdG8gd2hvbXNvZXZlciAKdGhleSBtYXkgaGF2ZSBiZWVuIGlnbm9yYW50bHkgb2ZmZXJlZDsgdGhlcmUgCmlzIGEgQ29uc2Npb3VzbmVzcyB3aWRlIGVub3VnaCB0byBjb21wcmVoZW5kIAphbGwsIHdoaWNoIG5ldmVyIGZhaWxzIGluIGl0cyByZXNwb25zZSB0byAKYW55IGVhcnVlc3QgZWZmb3J0IGluIHRoZSBkaXJlY3Rpb24gb2YgYW4gCmluY3JlYXNlZCBzcGlyaXR1YWxpdHkuIEl0IHdvcmtzIHRocm91Z2ggbWFueSAKbWVhbnM7IHNvbWV0aW1lcyBwZXJoYXBzIGJ5IGRpcmVjdGluZyB0aGUgCmF0dGVudGlvbiBvZiBhIGRldmEgdG8gdGhlIHN1cHBsaWFudCwgc29tZS0gCnRpbWVzIHRocm91Z2ggdGhlIGFnZW5jeSBvZiB0aG9zZSBodW1hbiAKaGVscGVycyB3aG8gd29yayB1cG9uIHRoZSBhc3RyYWwgb3IgbWVudGFsIApwbGFuZXMgZm9yIHRoZSBnb29kIG9mIGh1bWFuaXR5LiBTdWNoIGEgCmRldmEgb3IgaGVscGVyIHNvIHVzZWQgd291bGQsIGlmIGhlIHNob3dlZCAKaGltc2VsZiwgaW5ldml0YWJseSBiZSB0YWtlbiBieSB0aGUgcGV0aXRpb25lciAKZm9yIHRoZSBzYW10IHRvIHdob20gaGUgaGFkIHByYXllZCwgCmFuZCB0aGVyZSBhcmUgbWFueSBzdG9yaWVzIHdoaWNoIGlsbHVzdHJhdGUgCnRoaXMuIAoKSSBteXNlbGYsIGZvciBleGFtcGxlLCBoYXZlIGJlZW4gdGFrZW4gCnVuZGVyIHN1Y2ggY2lyY3Vtc3RhbmNlcyBmb3IgOFMuIFBoaWxpcCBOZXJpLCAKYW5kIGEganVuaW9yIGhlbHBlciB3aG8gd2FzIHdpdGggbWUgb24gCnRoZSBvY2Nhc2lvbiB3YXMgc3VwcG9zZWQgdG8gYmUgUy4gU3RhbmlzLSAKbGF1cyBLb3N0a2EuIE91ciBQcmVzaWRlbnQsIHRvbywgaGFzIG1vcmUgCgoKMTk2IEFEWUFSIFRBTEtTIAoKCnRoYW4gb25jZSBiZWVuIHJlZ2FyZGVkIGFzIGFuIGFuZ2VsIGJ5IAp0aG9zZSB3aG9tIHNoZSB3YXMgYXNzaXN0aW5nLiAKCgpUSEUgRGVydmlzIAoKClRoZSBkZXZpbCBpcyBub24tZXhpc3RlbnQuIFRoZXJlIGFyZSAKcGVyc29ucyB3aG8gaW1hZ2luZSB0aGVtc2VsdmVzIHRvIGhhdmUgbWFkZSAKcGFjdHMgd2l0aCBoaW0sIHNvbWV0aW1lcyBzaWduZWQgd2l0aCB0aGVpciAKb3duIGJsb29kLiBUaGUgcmVzdWx0IGRlcGVuZHMgbGFyZ2VseSB1cG9uIAp3aGF0IHNvcnQgb2YgZW50aXR5IGhhcHBlbmVkIHRvIHBlcnNvbmF0ZSAKaGltIGZvciB0aGUgb2NjYXNpb24uIFRoZXJlIGFyZSBwbGVudHkgb2YgCmNyZWF0dXJlcyBvZiB2YXJpb3VzIHNvcnRzIHdobyB3b3VsZCBodWdlbHkgCmVuam95IHN1Y2ggYSBqb2tlIGF0IHRoZSBleHBlbnNlIG9mIGEgbWFuOyAKYnV0IG5vIHN1Y2ggZW50aXR5LCB3aGF0ZXZlciBoZSBtYXkgYmUsIApjb3VsZCBwb3NzaWJseSBoYXZlIGFueSB1c2UgZm9yIHRoZSDigJhzb3Vs4oCZIApvZiBhIG1hbuKAlG5vciB3b3VsZCB0aGUg4oCYc291bOKAmSBvZiBhbnlib2R5IApmb29saXNoIGVub3VnaCB0byBtYWtlIHN1Y2ggYSBjb21wYWN0IGJlIApsaWtlbHkgdG8gYmUgb2YgYW55IHVzZSwgZWl0aGVyIHRvIHRoZSBvd25lciAKb3IgYW55Ym9keSBlbHNlLiBBbGwgdGhlc2UgYWJzdXJkIHN1cGVyc3RpLSAKdGlvbnMgYXJlIGRpc3Byb3ZlZCBieSB0aGUgZmFjdCB0aGF0IHRoZSAKbWFuIGlzIHRoZSBlZ28sIGFuZCB0aGVyZWZvcmUgY2Fubm90IHNlbGwgCmhpbXNlbGYsIGFuZCBhbHNvIHRoYXQgdGhlcmUgYXJlIG5vIGJ1eWVycyAKaW4gc3VjaCBhIHRyYW5zYWN0aW9uOyBzbyB0aGUgd2hvbGUgdGhpbmcgCmlzIG5vdGhpbmcgYnV0IGZvb2xpc2huZXNzLiAKClRoZXJlIGFyZSBtYW55IGVudGl0aWVzIHdobyBtYXkgYmUgCmJvdGggd2lsbGltZyBhbmQgYWJsZSB0byBhcnJhbmdlIHR3ZW50eSAKCgpUSEUgREVWSUwgMTk3IAoKCnllYXJzIG9mIG1hdGVyaWFsIHByb3NwZXJpdHkgZm9yIGEgcGVyc29uLiAKVGhleSBhcmUgZ2VuZXJhbGx5IHdpbGxpbmcgdG8gZG8gaXQgaW4gcmUtIAp0dXJuIGZvciBzb21lIG1hdGVyaWFsIGNvbnNpZGVyYXRpb24sIHN1Y2ggCmFzIHRoZSBzYWNyaWZpY2Ugb2YgYmFiaWVzLCBnb2F0cyBvciBmb3dscy4gClRoZSBlZ28gaGFzIG5vIHNoYXJlIGluIHRoZXNlIHBhY3RzLCAKZWl0aGVyIGluIHRoZSByYXJlIGluZGl2aWR1YWwgY2FzZXMsIG9yIGluIApnZW5lcmFsIGZldGlzaCB3b3JzaGlwLiBUaGVzZSBlbnRpdGllcyBjYW4tIApub3QgcG9zc2VzcyB0aGUgaHVtYW4gZWdvLCBub3IgY291bGQgCnRoZXkgdXNlIGl0IGlmIGl0IGNvdWxkIGNvbWUgaW50byB0aGVpciAKcG9zc2Vzc2lvbi4gQSBodW1hbiBib2R5IGlzIHNvbWV0aW1lcyAKY29udmVuaWVudCBmb3IgdGhlbSwgYW5kIGZvciB0aGUgc2FrZSBvZiAKYmVpbmcgcGVybWl0dGVkIHRvIG9ic2VzcyBpdCB0aGV5IHdpbGwgc29tZS0gCnRpbWVzIGVudGVyIGludG8gYW4gYXJyYW5nZW1lbnQuIFRoZSBtYWstIAppbmcgb2YgYSBjb21wYWN0IG9mIHRoaXMgbmF0dXJlIGdpdmVzIHRoZSAKZW50aXR5IGEgc3Ryb25nIGhvbGQgdXBvbiB0aGUgbWFuOyBfIGJ1dCAKYXMgc29vbiBhcyBoZSBkaXNjb3ZlcnMgdGhlIGZvbGx5IG9mIGhpcyAKYWN0aW9uLCB0aGUgcHJvcGVyIGNvdXJzZSBmb3IgdGhlIG1hbiBfIHRvIAp0YWtlIDFzIHRvIHJlc2lzdCBzdWNoIG9ic2Vzc2lvbiB0byB0aGUgdXQtIAppbm1vc3QuIENoaWxkaXNoIGNlcmVtb25pZXMsIHN1Y2ggYXMgc2lnbWluZyAKd2l0aCBoaXMgb3duIGJsb29kLCB3b3VsZCBvZiBjb3Vyc2UgbWFrZSAKbm8gZGlmZmVyZW5jZSB3aGF0ZXZlci4gCgpUaGVyZSBpcyBubyBoaWVyYXJjaHkgb2YgZXZpbC4gVGhlcmUgYXJlIApibGFjayBtYWdpY2lhbnMgY2VydGFpbmx5LCBidXQgdGhlIGJsYWNrIG1hZ2ktIApjbGFuIGlzIHVzdWFsbHkgbWVyZWx5IGFfIHNpbmdsZSBzb2xpdGFyeSAKZW50aXR5LiBIZSBpcyB3b3JraW5nIGZvciBoaW1zZWxmLCBhcyBhIApzZXBhcmF0ZSBlbnRpdHksIGFuZCBmb3IgaGlzIG93biBlbmRzLiBZb3UgCmNhbm5vdCBoYXZlIGEgaGllcmFyY2h5IG9mIHBlb3BsZSB3aG8gZGlzLSAKdHJ1c3Qgb25lIGFub3RoZXIuIEpuIHRoZSBXaGl0ZSBCcm90aGVyaG9vZCAKCgoxOTggQURZQVIgVEFMS1MgCgoKZXZlcnkgbWVtYmVyIHRydXN0cyB0aGUgb3RoZXJzOyBidXQgeW91IApjYW5ub3QgaGF2ZSB0cnVzdCB3aXRoIHRoZSBkYXJrIHBlb3BsZSwgYmUtIApjYXVzZSB0aGVpciBpbnRlcmVzdHMgYXJlIGJ1aWx0IHVwb24gc2VsZi4gCgpZb3UgbXVzdCwgaG93ZXZlciwgdGFrZSBjYXJlIHdoYXQgeW91IAptZWFuIHdoZW4geW91IHNwZWFrIG9mIGV2aWwuIOKAmFRoZSBwcmluY2lwbGUgCm9mIGRlc3RydWN0aW9uIGlzIG9mdGVuIHBlcnNvbmlmaWVkLCBidXQgaXQgMXMgCm9ubHkgdGhhdCBvbGQgZm9ybXMgYXJlIGJyb2tlbiBkb3duIHRvIGJlIAp1c2VkIGFzIG1hdGVyaWFsIGZvciBidWlsZGluZyBuZXcgYW5kIGhpZ2hlciAKb25lcy4gSGVyZSBpbiBJbmRpYSB0aGVyZSBpcyBTaGl2YSwgdGhlIApEZXN0cm95ZXIsIGJ1dCBubyBvbmUgd291bGQgdGhpbmsgb2YgSGltIAphcyBldmlsOyBIZSBpcyBvbmUgb2YgdGhlIGhpZ2hlc3QgbWFtaWZlc3QtIAphdGlvbnMgb2YgdGhlIGRlaXR5LiBUaGUgcHJpbmNpcGxlIG9mIHRoZSAKZGVzdHJ1Y3Rpb24gb2YgZm9ybXMgaXMgbmVjZXNzYXJ5IGluIG9yZGVyIAp0aGF0IGxpZmUgbWF5IHByb2dyZXNzLiBUaGVyZSBpcyBhIEdyZWF0IApPbmUsIGEgcGFydCBvZiB3aG9zZSBmdW5jdGlvbiBpdCAxcyB0byBhci0gCnJhbmdlIHdoZW4gdGhlIGdyZWF0IGNhdGFjbHlzbXMgc2hhbGwgdGFrZSAKcGxhY2XigJRidXQgSGUgd29ya3MgZm9yIHRoZSBnb29kIG9mIHRoZSAKd29ybGQuIFRoZXNlIHRoaW5ncyBhcmUgbm90IHRvIGJlIHRob3VnaHQgCm9mIGFzIGluIGFueSB3YXkgZXZpbC4gVGhlIG5vdGlvbiBvZiBhIApzdXBwb3NlZCBhbmdlbCB3aG8gcmV2b2x0ZWQgYW5kIHdhcyB0dXJuZWQgCm91dCBvZiBoZWF2ZW4gaXMgdmVyeSBtdWNoIGJhc2VkIHVwb24gCkpvaG4gTWlsdG9uLiBUaGUgY29uY2VwdGlvbiBpcyBub3QgYXQgYWxsIAp0aGUgc2FtZSBpbiB0aGUgQm9vayBvZiBKb2IuIEluIHRoYXQgc3RvcnkgCnRoZSBkZXZpbCBpcyBxdWl0ZSBhIGRpZmZlcmVudCBwZXJzb24gZnJvbSAKdGhlIGdsb29teSBoZXJvIGluIHRoZSBNaWx0b25pYyBjb25jZXB0aW9uLiAKVGhlbiB0aGUgQnVkZGhpc3RzIGhhdmUgTWFyYeKAlGEgcGVyc29uaS0gCmZpY2F0aW9uIG9mIHRoZSBrYXJtYSBvZiB0aGUgcGFzdCBkZXNjZW5kaW5nIAp1cG9uIHRoZSBtYW4gYXQgb25jZSBhbmQgdGFraW5nIG1hbnkgCgoKVEhFIERFVklMIDE5OSAKCgpmb3Jtcy4gVGhlcmUgaXMgYW4gaW5zdGFudCB3b3JraW5nLW91dCBvZiAKa2FybWEgdXBvbiB0aGUgYXR0YW1tZW50IG9mIGVubGlnaHRlbm1lbnQuIApUaGUgc3RhdGVtZW50IHRoYXQgYWxsIG1hdGVyaWFsIHRoaW5ncywgYWxsIApkaWZmZXJlbmNlcyBhbmQgbGltaXRhdGlvbnMgYXJlIGV2aWwgaXMgbWlzLSAKbGVhZGluZy4gSWYgYnkgZXZpbCB5b3UgbWVhbiB3aGF0IGlzIApvcmRpbmFyaWx5IGNvbm5vdGVkIGJ5IHRoYXQgd29yZCwgYW5kIG5vdCAKc29tZSBvdGhlciBhbmQgcXVpdGUgZGlmZmVyZW50IG5vdGlvbiBvZiAKYW4gYWJzdHJhY3Qga2luZCwgdGhlbiBtYXR0ZXIgaXMgbm90IGV2aWwuIApTcGlyaXQgYW5kIG1hdHRlciBhcmUgZXF1YWwuIE1hdHRlciBpcyBub3QgCmluIG9wcG9zaXRpb24gdG8gc3Bpcml0LiBXZSBmaW5kIG1hdHRlciAKdHJvdWJsZXNvbWUgYmVjYXVzZSBvZiB0aGUgYm9kaWVzIHdlIGhhdmUgCnRvIHVzZTsgYnV0IHdlIGFyZSBoZXJlIGluIG9yZGVyIHRvIApsZWFybiB3aGF0IHdpdGhvdXQgdGhlIHBoeXNpY2FsIGxpZmUgY291bGQgCm5vdCBiZSBjb252ZXllZCB0byB1cy4gVGhlIHBoeXNpY2FsIApwbGFuZSBleHBlcmllbmNlcyBnaXZlIGEgZGVmaW5pdGVuZXNzIGFuZCAKcHJlY2lzaW9uIHRvIG91ciBjb25zY2lvdXNuZXNzIGFuZCBwb3dlcnMgCndoaWNoIHdlIGNvdWxkIG5ldmVyIGFjcXVpcmUgb24gYW55IHBsYW5lIAp1bmxlc3Mgd2UgaGFkIHNwZW50IHRoZSBuZWNlc3NhcnkgdGltZSBvbiAKdGhpcy4gQnV0IHdoeSBkbyBwZW9wbGUgYm90aGVyIGFib3V0IGV2aWw/IApUaGVyZSBpcyBwbGVudHkgb2YgZ29vZCBpbiB0aGUgd29ybGQsIGFuZCAKaXQgaXMgYmV0dGVyIHRvIHRoaW5rIG9mIHRoYXQsIGZvciB5b3VyIHRob3VnaHQgCnN0cmVuZ3RoZW5zIHRoYXQgb2Ygd2hpY2ggeW91IHRoaW5rLiBUbyAKdGhpbmsgYW5kIHRhbGsgc28gbXVjaCBhYm91dCBibGFjayBtYWdpLSAKY2lhbnMgdW5xdWVzdGlvbmFibHkgYXR0cmFjdHMgdGhlaXIgYXR0ZW50aW9uIAp0byB5b3UsIGFuZCB0aGUgcmVzdWx0cyBhcmUgb2Z0ZW4gZXhjZWVkaW5nLSAKbHkgdW5kZXNpcmFibGUuIHwgCgoKMjAwIEFEWUFSIFRBTEtTIAoKCkhJbnB2aXNNIAoKCldoZW4gaWdub3JhbnQgbWlzc2lvbmFyaWVzIGRpbGF0ZSB1cG9uIAp0aGUgdGhyZWUgaHVuZHJlZCBhbmQgdGhpcnR5IG1pbGxpb24gZ29kcyAKb2YgdGhlIEhpbmR0aXMgdGhleSBhcmUgbWFraW5nIGEgdmVyeSBncm9zcyAKbWlzcmVwcmVzZW50YXRpb24gb2YgYSByZWxpZ2lvbiB3aGljaCBpcyBmYXIgCm1vcmUgc2NpZW50aWZpYyB0aGFuIHRoZWlyIG93bi4gSGluZGl1c20sIApsaWtlIGV2ZXJ5IG90aGVyIHJlbGlnaW9uLCBrbm93cyBwZXJmZWN0bHkgCndlbGwgdGhhdCB0aGVyZSBjYW4gYmUgb25seSBvbmUgR29kLCB0aG91Z2ggCnRoZXJlIG1heSBiZSBjb3VudGxlc3MgbWFuaWZlc3RhdGlvbnMgb2YgCkhpbS4gVG8gY2FsbCB0aGVzZSDigJhnb2Rz4oCZIGlzIG9mIGNvdXJzZSAKcmlkaWN1bG91cy4gW3QgaXMgcGVyaGFwcyBiZXR0ZXIgdG8gYXZvaWQgCnRoZSB3b3JkIOKAmGdvZOKAmSBhbHRvZ2V0aGVyLCBiZWNhdXNlIG9mIHRoZSAKZXhjZWVkaW5nbHkgdW5wbGVhc2FudCBpZGVhcyB3aGljaCBoYXZlIApiZWVuIGFzc29jaWF0ZWQgd2l0aCBpdCBieSB0aGUgQ2hyaXN0aWFucyA7IApidXQgaWYgaXQgMXMgdG8gYmUgdXNlZCwgYXQgbGVhc3QgaXQgc2hvbmxkIApuZXZlciBiZSBhcHBsaWVkIHRvIGFueSBiZWluZyBsb3dlciB0aGFuIAp0aGUgTG9nb3Mgb2YgdGhlIHNvbGFyIHN5c3RlbS4gQWxsIHRoZSAKZ29vZCB0aGluZ3MgYXR0cmlidXRlZCB0byB0aGUgQ2hyaXN0aWFuIEdvZCAKYXJlIHRydWUgb2YgdGhlIExvY29zOyB0aGVyZSBpcyBub3RoaW5nIGluIAp0aGUgc3lzdGVtIHRoYXQgaXMgbm90IEhlLCBhbmQgeWV0IEhlIGlzIAptdWNoIG1vcmUgdGhhbiBIaXMgc3lzdGVtLiBXZSBjb3VsZCAKbm90IHBvc3NpYmx5IGdyYXNwIHRoZSB0cnV0aCBhYm91dCB0aGUgCkFic29sdXRlOyBhbnl0aGluZyB3aGljaCB3ZSBhcmUgYWJsZSB0byAKZ3Jhc3AgbXVzdCBhZnRlciBhbGwgYmUgc21hbGwsIHNpbmNlIG91ciAKbWluZHMgYXJlIHNvIHNtYWxsLiBUaGUgYWR2aWNlIG9mIHRoZSAKTG9yZCBCdXBwSGEgdG8gSGlzIHBlb3BsZSB3YXMgYWx3YXlzIAp0aGF0IHRoZXkgc2hvdWxkIC4gbmV0LeKAlHRyb3VibGUgdGhlbXNlbHZlcyAKCgpISU5EVUlTTSAtIDkwMSAKCgphYm91dCBzdWNoIHJlbW90ZSBtYXR0ZXJzLCBzaW5jZSBpdCB3YXMgCmltcG9zc2libGUgdG8gYXJyaXZlIGF0IGFueSBjb25jbHVzaW9uLCBhbmQgCm5vdGhpbmcgdXNlZnVsIGNhbWUgZnJvbSBpdC4gfCAKClRoZSBpbWFnZXMgb2YgdGhlIEluZGlhbiBkZWl0aWVzIGFyZSAK4oCYdXN1YWxseSBoaWdobHkgbWFnbmV0aXNlZCwgYW5kIHdoZW4gdGhleSAKYXJlIGNhcnJpZWQgcm91bmQgdGhlIHN0cmVldHMgYXQgdGhlIGZlc3RpdmFscyAKdGhlaXIgaW5mbHVlbmNlIHVwb24gdGhlIHBlb3BsZSBpcyB1bi0gCnF1ZXN0aW9uYWJseSBwcm9kdWN0aXZlIG9mIG11Y2ggZ29vZC4gSW4gCm1hbnkgb2YgdGhlIEhpbmRp4oCZIHRlbXBsZXMgdGhlcmUgYXJlIApzdHJvbmcgcGVybWFuZW50IGluZmx1ZW5jZXMgYXQgd29yaywgYXMg4oCYaXMgCnRoZSBjYXNlIGZvciBleGFtcGxlIGF0IE1hZHVyYS4gT25jZSB3aGVuIApJIHZpc2l0ZWQgdGhhdCBjaXR5IHNvbWUgd2hpdGUgYXNoZXMgZnJvbSAKdGhlIHRlbXBsZSBvZiBTaGl2YSB3ZXJlIGdpdmVuIHRvIG1lLCAKYW5kIGFsc28gYSBicmlnaHQgY3JpbXNvbiBwb3dkZXIgZnJvbSAKdGhlIHRlbXBsZSBvZiBQYXJ2YXRpLCBhbmQgSSBmb3VuZCB0aGF0IApib3RoIG9mIHRoZXNlIHdlcmUgc28gcG93ZXJmdWxseSBtYWduZXRpc2VkIAphcyB0byByZXRhaW4gdGhlaXIgaW5mbHVlbmNlIGZvciBzb21lIHllYXJzIAphbmQgYWZ0ZXIgbXVjaCB0cmF2ZWxsaW5nLiAKCkluZGlhIGlzIGVzc2VudGlhbGx5IGEgY291bnRyeSBvZiByaXRlcyAKYW5kIGNlcmVtb25pZXMuIFRoZSByZWxpZ2lvbiBpc18gZnVsbCBvZiAKdGhlbSwgYW5kIGEgZ3JlYXQgbWFueSBvZiB0aGVtIGFyZSBzYWlkIAp0byBoYXZlIGJlZW4gcHJlc2NyaWJlZCBieSB0aGUgTWFudSBIaW0tIApzZWxmLCB0aG91Z2ggaXQgaXMgcXVpdGUgb2J2aW91cyB0aGF0IG1hbnkgCm90aGVycyBoYXZlIGJlZW4gYWRkZWQgYXQgYSBtdWNoIGxhdGVyIApkYXRlLiBTb21lIG9mIHRoZW0gYXBwZWFyIHRvIGJlIHJlZ3VsYS0gCnRpb25zIHN1Y2ggYXMgd291bGQgYmUgcXVpdGUgbmVjZXNzYXJ5IGF0IAp0aGUgYmVnaW5uaW5nIG9mIGEgbmV3IHJhY2UsIGJ1dCBub3cgdGhhdCAKaXQgaXMgdGhvcm91Z2hseSBlc3RhYmxpc2hlZCBpdCBzZWVtcyBjbGVhciAKCgoyMDIgQURZQVIgVEFMS1MgCgoKdGhhdCB0aGV5IGFyZSB1c2VsZXNzLiBJbiBtYW55IGNhc2VzIHdoZW4gCm9uZSB3YXRjaGVzIHRoZWlyIHBlcmZvcm1hbmNlIG9uZSBjYW4gc2VlIApxdWl0ZSBjbGVhcmx5IHdoYXQgbXVzdCBvcmlnbWFsbHkgaGF2ZSBiZWVuIAppbnRlbmRlZCwgZXZlbiB0aG91Z2ggbm93IHRoZSBjZXJlbW9ueSAKaGFzIGJlY29tZSBhIG1lcmUgZW1wdHkgc2hlbGwsIGFuZCBubzogCnJlc3VsdCBmb2xsb3dzIHVwb24gaXQuIFN1Y2ggdGhpbmdzIGFyZSAKbm90IHdpdGhvdXQgdGhlaXIgdmFsdWUgZm9yIHlvdW5nZXIgc291bHM7IAppbmRlZWQgdGhlcmUgYXJlIG1hbnkgd2hvIGRlbGlnaHQgaW4gdGhlbSAKYW5kIG9idGFpbiBncmVhdCBiZW5lZml0IGZyb20gdGhlbTsgYnV0IG9mIApjb3Vyc2Ugbm9uZSBvZiB0aGVtIGNhbiBldmVyIGJlIHJlYWxseSAKbmVjZXNzYXJ5LCBhbmQgYWxsIHN1Y2ggYm9uZGFnZSBmYWxscyBhd2F5IAphbHRvZ2V0aGVyIGZyb20gdGhlIHJlYWxseSBkZXZlbG9wZWQgbWFuLiAKT3JpZ2luYWxseSBldmVyeSBob3VzZWhvbGRlciB3YXMgdGhlIHByaWVzdCAKb2YgbGlzIG93biBmYW1pbHksIGJ1dCBhcyB0aGUgY2l2aWxpc2F0aW9uIApiZWNhbWUgbW9yZSBjb21wbGV4IHRoZSByaXRlcyBhbmQgY2VyZS0gCm1vbmllcyBncmV3IG1vcmUgY29tcGxleCBhbHNvLCBhbmRfdGhlcmUtIApmb3JlIGEgY2xhc3Mgb2Ygc3BlY2lhbGx5IGluc3RydWN0ZWQg4oCUIHByaWVzdHMgCmhhZCB0byBzcHJpbmcgdXAsIGJlY2F1c2Ugbm8gb25lIHdobyAKaGFkIGFueXRoaW5nIGVsc2UgdG8gZG8gY291bGQgXyBwb3NzaWJseSAKcmVtZW1iZXIgdGhlIHdlYWx0aCBvZiB1bm5lY2Vzc2FyeSBkZXRhaWwuIApJbiB0aGVzZSBkYXlzIGl0IHdvdWxkIHNlZW0gdGhhdCBtb3N0IApwZW9wbGUgcGVyZm9ybSB0aGVtLCBvciBoYXZlIHRoZW0gcGVyLSAKcGVyZm9ybWVkIGZvciB0aGVtLCBtdWNoIGluIHRoZSBzYW1lIApzcGlyaXQgYXMgdGhleSB0YWtlIG1lZGljaW5lIGZyb20gYSBkb2N0b3IsIAp3aXRob3V0IHVuZGVyc3RhbmRpbmcgd2hhdCBpdCBpcywgYnV0IHdpdGggCnRoZSBmYWl0aCB0aGF0IGl0IHdpbGwgc29tZWhvdyBkbyB0aGVtIApnb29kLCBUaGVyZSBhcmUsIGhvd2V2ZXIsIG1hbnkgcGVvcGxlIAp3aG8gY2Fubm90IHB1dCBoZWFydCBhbmQgc291bCBpbnRvIGEgY2VyZS0gCgoKSElORFVJU00gMjAzIAoKCm1vbnkgdW5sZXNzIHRoZXkgZG8gdW5kZXJzdGFuZCBpdCwgYW5kIAp0aGVzZSBwZW9wbGUgdXN1YWxseSBlbmQgYnkgYnJlYWtpbmcgYXdheSAKZnJvbSBjZXJlbW9uaWVzIGFsdG9nZXRoZXIuIAoKSXQgaXMgc2FkIHRvIHNlZSBwcmllc3RzIHBlcmZvcm1pbmcgdGhlIG9sZCAK4oCYY2VyZW1vbmllcyBhbmQgdXNpbmcgdGhlIG9sZCBmb3JtcyB3aGljaCAKb25jZSB3ZXJlIHNvIGVmZmVjdGl2ZSwgYW5kIHlldCBwcm9kdWNpbmcgCm5vIHJlc3VsdCB3b3J0aCBtZW50aW9uaW5nLiDigJhUaGVyZSBzZWVtcyB0byAKYmUgbm8gd2lsbCBpbiB0aGVzZSBkYXlzLiBUaGV5IGNvbW1lbmNlIApzb21lIG9mIHRoZWlyIHJlY2l0YXRpb25zIOKAnE9tLCBCaHVyLCBCaHV2YXIsIAoKClBdIAoKClN3YXI74oCdIGJ1dCBub3RoaW5nIHdoYXRldmVyIGhhcHBlbnMgd2hlbiAKdGhleSByZWNpdGUgdGhlIHdvcmRzLiBJbiB0aGUgb2xkIGRheXMgCnRoZSBvZmZpY2lhbnQgd2hvIHNhaWQgdGhpcyB0aHJldyBzb21lIAp3aWxsIGludG8gaXQsIGFuZCByYWlzZWQgaGlzIG93biBjb25zY2lvdXNuZXNzLCAKYXMgd2VsbCBhcyB0aGF0IG9mIHRob3NlIHByZXNlbnQgd2hvLiB3ZXJlIApyZXNwb25zaXZlLCBmcm9tIC5vbmUgcGxhbmUgdG8gdGhlIG90aGVyIGFzIApoZSBzcG9rZS4gCgpJIHJlbWVtYmVyIHNlZWluZyB0aGlzIHN0cm9uZ2x5IOKAlCBleC0gCmVtcGxpZmllZCBpbiB0aGUgcGVyZm9ybWFuY2Ugb2YgYSBzdHJpa2luZyAKY2VyZW1vbnksIHdoZW4gd2Ugd2VyZSBleGFtaW5pbmcgb25lIG9mIAp0aGUgZWFybGllciBsaXZlcyB3aGljaCBvY2N1cnJlZCBtYW55IAp0aG91c2FuZHMgb2YgeWVhcnMgYWdvIGhlcmUgaW4gSW5kaWEuIFRoZSAKcGVvcGxlIGFsbCBlbnRlcmVkIGFuIGltbmVyIHJvb20gYW5kXyBzdG9vZCAKaW4gYWJzb2x1dGUgZGFya25lc3MuIEluIHRoZSBiZWdpbm5pbmcgb2YgCnRoZSBjZXJlbW9ueSB0aGUgb2ZmaWNpYW50IHNsb3dseSBhbmQgCnNvbGVtbmx5IHV0dGVyZWQgdGhvc2Ugd29yZHMsIGFuZCBfIGVhY2ggCnByb2R1Y2VkIGl0cyBkdWUgZWZmZWN0IHVwb24gdGhlIG1ham9yaXR5IApvZiB0aG9zZSB3aG8gc3Rvb2QgYXJvdW5kIGhpbS4gVGhlIHdvcmQgCuKAnE9t4oCdIGJyb3VnaHQgYWxsIHRoZSBwZW9wbGUgaXRvIGNsb3NlIAoKCjIwNCBBRFlBUiBUQUxLUyAKCgpoYXJtb255IHdpdGggaGltLCBhbmQgd2l0aCB0aGUgZmVlbC0gCmluZ3Mgd2hpY2ggZmlsbGVkIGhpcyBtaW5kLiBUaGVuLCBhdCB0aGUgCnV0dGVyYW5jZSBvZiB0aGUgd29yZCDigJxCaGFyLOKAnSB0byB0aGVpciAKc2Vuc2VzIHRoZSByb29tIHdhcyBmaWxsZWQgd2l0aCBvcmRpbmFyeSAKbGlnaHQsIGFuZCB0aGV5IHdlcmUgYWJsZSB0byBzZWUgYWxsIHRoZSAKcGh5c2ljYWwgb2JqZWN0cyBpbiBpdDsgd2hlbiwgYWZ0ZXIgYW4gaW4tIAp0ZXJ2YWwsIHRoZSBzZWNvbmQgd29yZCBjYW1lLCBhc3RyYWwgc2lnaHQgd2FzIAp0ZW1wb3JhcmlseSBvcGVuZWQgZm9yIHRoZW07IGFuZCB0aGUgdGhpcmQgCndvcmQgcHJvZHVjZWQgdGhlIHNhbWUgZWZmZWN0IHVwb24gdGhlaXIgCm1lbnRhbCBzaWdodCwgYW5kIGJyb3VnaHQgcm91bmQgdGhlbSBhbGwgCnRoZSBibGlzcyBhbmQgcG93ZXIgb2YgdGhlIGhpZ2hlciBwbGFuZSwgCmFuZCB0aGF0IGNvbmRpdGlvbiBwZXJzaXN0ZWQgZHVyaW5nIHRoZSAKcmVjaXRhdGlvbiBvZiB0aGUgdmFyaW91cyB2ZXJzZXMgd2hpY2ggZm9sLSAKbG93ZWQuIAoKT2YgY291cnNlIHRoZXNlIGVmZmVjdHMgd2VyZSBvbmx5IHRlbS0gCnBvcmFyeSwgYW5kIHdoZW4gdGhlIGNlcmVtb255IHdhcyBvdmVyIAp0aGUgaGlnaGVyIGNvbnNjaW91c25lc3MgZmFkZWQgYXdheSBmcm9tIAp0aG9zZSB3aG8gaGFkIHRha2VuIHBhcnQgbSBpdCwgYnV0IApuZXZlcnRoZWxlc3MgaXQgcmVtYWluZWQgZm9yIHRoZW0gYSB0cmVtZW5kLSAKb3VzIGV4cGVyaWVuY2UsIGFuZCB0aGUgZWZmZWN0IG9mIGl0IHdhcyAKdGhhdCBvbiBhbm90aGVyIHNpbWlsYXIgb2NjYXNpb24gdGhpcyBoaWdoZXIgCmNvdXNjaW91c25lc3Mgd2FzIG1vcmUgcmVhZGlseSBhbmQgbW9yZSAKZnVsbHkgYXJvdXNlZCBpbiB0aGVtLiBCdXQgbm93IG5vdGhpbmcgCm9mIHRoaXMgc29ydCBzZWVtcyB0byBiZSBkb25lIGFueXdoZXJlLiAKTm93IHRoZSBwcmllc3QgYXJyYW5nZXMgaGlzIGZ1ZWwgYW5kIHV0dGVycyAKYSBzb2xlbW4gaW52b2NhdGlvbiB0byBBZ20sIGFuZCB0aGVu4oCUIApsaWdodHMgdGhlIGZpcmUgd2l0aCBhIG1hdGNoISBJbiB0aGUgb2xkIApkYXlzIHRoYXQgd2hpY2gganMgcmVwcmVzZW50ZWQgYnkgQWduaSAKCgpISU5EVUlTTSAyMDUgCgoKcmVhbGx5IGRpZCBjb21lLCBhbmQgdGhlIGZpcmUgZmVsbCBmcm9tIApoZWF2ZW4sIHRvIHVzZSBhbiBvbGQgZXhwcmVzc2lvbi4gQnV0IGFsbCAKdGhpcyBoYXMgbm93IGJlZW4gZm9yZ290dGVuIGFuZCBvbmx5IHRoZSAKb3V0ZXIgaHVza3Mgc2VlbSB0byByZW1haW4uIHwgCgpUaGVyZSBpcyBhIHF1aXRlIHJhdGlvbmFsIGFuZCBzY2llbnRpZmljIAppZGVhIHVuZGVybHlpbmcgdGhlIHByYWN0aWNlIG9mIHBpbGdyaW1hZ2UuIApHcmVhdCBzaHJpbmVzIGFyZSB1c3VhbGx5IGVyZWN0ZWQgb24gdGhlIApzcG90IHdoZXJlIHNvbWUgaG9seSBtYW4gaGFzIF8gbGl2ZWQgb3IgCndoZXJlIHNvbWUgZ3JlYXQgZXZlbnQgaGFzIGhhcHBlbmVkIAooc3VjaCBhcyBhbiBpbml0aWF0aW9uKSBvciBlbHNlIGluIGNvbm5lYy0gCnRpb24gd2l0aCBzb21lIHJlbGljIG9mIGEgZ3JlYXQgcGVyc29uLiAKSW4gYW55IG9uZSBvZiB0aGVzZSBjYXNlcyBhIF8gcG93ZXJmdWwgCm1hZ25ldGljIGNlbnRyZSBvZiBpbmZsdWVuY2UgaGFzIGJlZW4gCmNyZWF0ZWQsIHdoaWNoIHdpbGwgcGVyc2lzdCBmb3IgdGhvdXNhbmRzIApvZiB5ZWFycy4gQW55IHNlbnNpdGl2ZSBwZXJzb24gd2hvIGFwLSAKcHJvYWNoZXMgdGhlIHNwb3Qgd2lsbCBmZWVsIHRoaXMgaW5mbHVlbmNlLCAKYW5kIGl0cyBlZmZlY3QgdXBvbiBoaW0gaXMgdW5xdWVzdGlvbmFibHkgCmdvb2QuIFdoZXJlIHRoZXJlIGlzIGFfIHN0cm9uZyB2aWJyYS0gCnRpb24gYXQgYSBtdWNoIGhpZ2hlciBsZXZlbCB0aGFuIGFueSAKYXR0YWluZWQgYnkgb3JkaW5hcnkgaHVtYW5pdHksIGl0cyBhY3Rpb24gCnVwb24gYW55IG1hbiB3aG8gY29tZXMgd2l0aGluIGl0cyBpbmZsdS0gCmVuY2UgaXMgdG8gcmFpc2UgaGlzIG93biB2aWJyYXRpb25zIGZvciB0aGUgCnRpbWUgdG93YXJkcyB1bmlzb24gd2l0aCBpdC4gCgpUaGUgcGlsZ3JpbSB3aG8gY29tZXMgdG8gc3VjaCBhIHNwb3QgCmFuZCBiYXRoZXMgaGltc2VsZiBpbiBpdHMgbWFnbmV0aXNtLCBwZXItIApoYXBzIGZvciBzZXZlcmFsIGRheXMgdG9nZXRoZXIsIGlzIGNlcnRhaW5seSAKdGhlIGJldHRlciBmb3IgaXQsIGFsdGhvdWdoIGRpZmZlcmVudCBwZW8tIApwbGUgd2lsbCBiZSBhZmZlY3RlZCBpbiBkaWZmZXJlbnQuIGRlZ3JlZXMsIAoKCjIwNiBBRFlBUiBUQUxLUyAKCgphY2NvcmRpbmcgdG8gdGhlaXIgcG93ZXIgb2YgcmVjZXB0aXZpdHkuIApTdWNoIGEgcGxhY2Ugb2YgcGlsZ3JpbWFnZSBpcyB0aGUgQm9kaGkgCnRyZWUgYXQgQnVkZGhhLWdheWEsIHRoZSBzcG90IHdoZXJlIHRoZSAKTG9yZCBHYXV0YW1hIGF0dGFpbmVkIEhpcyBCdWRkaGFob29kLiAKVGhpcyBpcyB0cnVlIGFsdGhvdWdoIHRoZSB0cmVlIHdoaWNoIDFz4oCZIAp0aGVyZSBub3cgaXMgbm90IHRoZSBvcmlnaW5hbCBvbmUuIFRoYXQgCmZlbGwgc29tZSB0aW1lIGluIHRoZSBtaWRkbGUgYWdlcywgYW5kIHRoZSAKcHJlc2VudCB0cmVlIGlzIG9ubHkgYW4gb2Zmc2hvb3QgZnJvbSBpdC4gCkJ1dCBuZXZlcnRoZWxlc3MgdGhlIHRyZW1lbmRvdXNseSBzdHJvbmcgCm1hZ25ldGlzbSBvZiAtdGhlIHNwb3QgcmVtYWlucywgYW5kIDFzIApsaWtlbHkgdG8gZG8gc28gZm9yIG1hbnkgYSBjZW50dXJ5IHlldCAKdG8gY29sZS4gCgoKQ0FTVEVTIAoKCkl0IGlzIHNhaWQgdGhhdCBvcmlnaW5hbGx5IGNhY2ggY2FzdGUgaGFkIAppdHMgZGlzdGluY3RpdmUgY29sb3VyOyBpbmRlZWQsIHRoZSBhY3R1YWwgCm1lYW5pbmcgb2YgdmFybmEgKHRoZSBTYW5za3JpdCB3b3JkIGZvciAKY2FzdGUpIGlzIGNvbG91ci4gSSBoYXZlIG5vdCBzdHVkaWVkIHRoZSBxdWVzLSAKdGlvbiwgYnV0IGF0IGxlYXN0IGl0IGlzIGNsZWFyIHRoYXQgdGhlIGNvbG91cnMgCndoaWNoIGFyZSB1c3VhbGx5IGdpdmVuIGRvIG5vdCBpbmRpY2F0ZSBpbiAKYW55IHdheSB0aGUgYXVyYXMgb2YgdGhlIHBlb3BsZS4gT25seSBhIAp5b3VuZyBjaGlsZCBoYXMgYSB3aGl0ZSBhdXJhLCBhdWQgZXZlbiB0aGUgCmFkZXB0cyBoYXZlIHZhcmlvdXMgY29sb3VycyBpbiBUaGVpciB0cmVtZW5kLSAKb3VzIGdsb3c7IHlldCBmb3Igc29tZSByZWFzb3UgdGhlIGJyYWhtYW4gCmlzIHRyYWRpdGlvbmFsbHkgbWVudGlvbmNkIGFzIHdoaXRlLiBBIGtzaGF0LSAKCgpDQVNURVMgMjA3IAoKCnRyaXlhIGlzIHNhaWQgdG8gaGF2ZSBzb21lIGNvbm5lY3Rpb24gd2l0aCAKdGhlIGNvbG91ciByZWQ7IHRoZXJlIGFyZSBzZXZlcmFsIHJlZHMgaW4gCnRoZSBodW1hbiBhdXJhLCBmcm9tIHRoZSByb3NlIG9mIGFmZmVjdGlvbiAKdG8gdGhlIHNjYXJsZXQgb2YgYW5nZXIgYW5kIGluZGlnbmF0aW9uLCAK4oCYYW5kIHRoZSBicm93bi1yZWRzIG9mIHNlbnN1YWxpdHkuIEJ1dCB0aGUgCmtzaGF0dHJpeWEgaGFzIG5vIG1vcmUgb2YgdGhlc2UgdGhhbiBvdGhlciAKbWVuLiBZZWxsb3cgaXNfIHRyYWRpdGlvbmFsbHkgYXNjcmliZWQgdG8gCnRoZSB2YWlzaHlhLiBCdXQgeWVsbG93IGluIHRoZSBhdXJhIHNpZy0gCm5pZmllcyBpbnRlbGxlY3QsIGFuZCB3ZSBoYXZlIG5vIHJlYXNvbiB0byAKY29uc2lkZXIgdGhlIHZhaXNoeWEgZXNwZWNpYWxseSBlbmRvd2VkIHdpdGggCnRoaXMgcXVhbGl0eS4gQSBzaGlkcmEgaXMgc3Bva2VuIG9mIGFzIApibGFjay4gCgpJZiB3ZSBhZG9wdCB0aGUgc3VnZ2VzdGlvbiB0aGF0IHRoZXNlIApjb2xvdXJzIGhhZCB0byBkbyB3aXRoIHRoZSBhbmNpZW50IGFuZCAKcHJpbWl0aXZlIHJhY2VzLCB3ZSBzaGFsbCBmaW5kIHRoZSBmYWN0cyBtb3JlIAp0cmFjdGFibGUuIFRoZSBBcnlhbnMsIHJlcHJlc2VudGluZyB0aGUgCmJyYWhtYW4gY2FzdGUsIHdlcmUgdW5kb3VidGVkbHkgbXVjaCAKbGlnaHRlciBpbiBjb2xvdXIgdGhhbiB0aGUgcGVvcGxlIGFtb25nc3QgCndob20gdGhleSBjYW1lLiBUaGUgcmVkZGlzaCBUb2x0ZWMgcGVvLSAKcGxlIHdobyB3ZXJlIHJ1bGluZyBsYXJnZSBwb3J0aW9ucyBvZiB0aGUgCmxhbmQgd2hlbiB0aGUgQXJ5YW4gaW52YXNpb24gdG9vayBwbGFjZSAKbWF5IGhhdmUgc29tZSBjb25uZWN0aW9uIHdpdGggdGhlIG9yaWdpbmFsIAprc2hhdHRyaXlhIGNhc3RlLiBUaGUgYWJvcmlnaW5hbHMsIHdobyB3ZXJlIApMZW11cmlhbnMsIGFuZCBhcmUgbm93IG9ubHkgcmVwcmVzZW50ZWQgCmJ5IHNvbWUgb2YgdGhlIGhpbGwgdHJpYmVzLCB3ZXJlIGFsbW9zdCAKYmxhY2sgaW4gY29sb3VyLiBUaGV5IG1heSBiZSBjb25uZWN0ZWQgCndpdGggdGhlIHNodWRyYXMuIEJldHdlZW4gdGhlbSBhbmQgdGhlIApUb2x0ZWNzIHRoZXJlIGFwcGVhciB0byBoYXZlIGJlZW4gc2V2ZXJhbCAKCgo5MDggQURZQVIgVEFMS1MgCgoKd2F2ZXMgb2YgZGlmZmVyZW50IEF0bGFudGVhbiBzdWItcmFjZXMgd2hvIApzZXR0bGVkIGRvd24gYXMgdHJhZGVyczsgYW5kIHRoZXNlIG1lbiAKd2VyZSBvZiBhIHllbGxvd2lzaCBjb2xvdXIsIGFzIGlzXyB0aGUgCnByZXNlbnQgZGF5IENoaW5hbWFuLiBQZXJoYXBzIHRoZXkgd2VyZSAKdGhlIG9yaWdpbmFsIHZhaXNoeWFzLiB8IApObyBkb3VidCBhcyB3ZSBjYXJyeSBmdXJ0aGVyIGFuZCBmdXJ0aGVyIApiYWNrIHRoZSBpbnZlc3RpZ2F0aW9ucyB3aGljaCB3ZSBhcmUgbWFrLSAKaW5nIGluIGNvbm5lY3Rpb24gd2l0aCB0aGUgbGluZXMgb2YgcGFzdCAKbGl2ZXMgd2hpY2ggYXJlIG5vdyBiZWluZyBleGFtaW5lZCwgd2UgCnNoYWxsIG9idGFpbiBtb3JlIGRlZmluaXRlIGluZm9ybWF0aW9uIG9uIHRoZSAKc3ViamVjdCBvZiB0aGUgb3JpZ2luIG9mIHRoZXNlIGNhc3RlcywgYW5kIApvZiB0aGlzIHF1ZXN0aW9uIG9mIHRoZWlyIHJlbGF0aW9uIHRvIGNvbG91ci4gCgoKU1BJUklUVUFMSVNNIAoKCk5ldmVyIGZvcmdldCB0aGF0IHRoZSBzcGlyaXR1YWxpc3RzIGFyZSBlbi0gCnRpcmVseSB3aXRoIHVzIG9uIHNvbWUgbW9zdCBpbXBvcnRhbnQgCnBvaW50cy4gVGhleSBhbGwgaG9sZCAoYSkgbGlmZSBhZnRlciBkZWF0aCAKYXMgYW4gYWN0dWFsIHZpdmlkIGV2ZXItcHJlc2VudCBjZXJ0YWludHksIGFuZCAKKDYpIGV0ZXJuYWwgcHJvZ3Jlc3MgYW5kLiB1bHRpbWF0ZSBoYXBwaW5lc3MgCmZvciBldmVyeW9uZSwgZ29vZCBhbmQgYmFkIGFsaWtlLiBOb3cgdGhlc2UgCnR3byBpdGVtcyBhcmUgb2Ygc3VjaCB0cmVtZW5kb3VzLCBzdWNoIApwYXJhbW91bnQgaW1wb3J0YW5jZeKAlHRoZXkgY29uc3RpdHV0ZSBzbyAKZW5vcm1vdXMgYW4gYWR2YW5jZSBmcm9tIHRoZSBvcmRpbmFyeSAKb3J0aG9kb3ggcG9zaXRpb27igJR0aGF0IEkgZm9yIG9uZSBzaG91bGQgYmUgCndlbGwgY29udGVudCB0byBqb2luIGhhbmRzIHdpdGggdGhlbSBvbiBzdWNoIAoKClNQSVJJVFVBTElTTSAyMDkgCgoKYS4gcGxhdGZvcm0sIGFuZCBwb3N0cG9uZSB0aGUgZGlzY3Vzc2lvbiBvZiAKdGhlIG1pbm9yIHBvaW50cyB1cG9uIHdoaWNoIHdlIGRpZmZlciB1bnRpbCAKd2UgaGF2ZSBjb252ZXJ0ZWQgdGhlIHdvcmxkIGF0IGxhcmdlIHRvIAp0aGF0IG11Y2ggb2YgdGhlIHRydXRoLiBJIGFsd2F5cyBmZWVsIHRoYXQsIAp0aGVyZSBpcyBwbGVudHkgb2Ygcm9vbSBmb3IgYm90aCBvZiB1cy4gCgpQZW9wbGUgd2hvIHdhbnQgdG8gc2VlIHBoZW5vbWVuYSwgcGVvcGxlIAp3aG8gY2Fubm90IGJlbGlldmUgYW55dGhpbmcgd2l0aG91dCBvY3VsYXIgCmRlbW9uc3RyYXRpb24sIHdpbGwgb2J0YWluIG5vIHNhdGlzZmFjdGlvbiB3aXRoIAp1cywgd2hpbGUgZnJvbSB0aGUgc3Bpcml0dWFsaXN0cyB0aGV5IHdpbGwgCmdldCBleGFjdGx5IHdoYXQgdGhleSB3YW50LiBPbiB0aGUgb3RoZXIgCmhhbmQsIHBlb3BsZSB3aG8gd2FudCBtb3JlIF8gcGhpbG9zb3BoeSAKdGhhbiBzcGlyaXR1YWxpc20gdXN1YWxseSBwcm92aWRlcyB3aWxsIG5hdHUtIApyYWxseSBncmF2aXRhdGUgaW4gb3VyIGRpcmVjdGlvbi4gVGhvc2Ugd2hvIAphZG1pcmUgdGhlIGF2ZXJhZ2UgdHJhbmNlLWFkZHJlc3MgY2VydGFpbmx5IAp3b3VsZCBub3QgYXBwcmVjaWF0ZSBUaGVvc29waHksIHdoaWxlIHRob3NlIAp3aG8gZW5qb3kgVGhlb3NvcGhpY2FsIHRlYWNoaW5nIHdvdWxkIApuZXZlciBiZSBzYXRpc2ZpZWQgd2l0aCB0aGUgdHJhbmNlLWFkZHJlc3MuIApXZSBib3RoIGNhdGVyIGZvciB0aGUgbGliZXJhbCwgdGhlIG9wZW4tIAptaW5kZWQsIGJ1dCBmb3IgcXVpdGUgZGlmZmVyZW50IHR5cGVzIG9mIHRoZW07IAptZWFudGltZSwgd2Ugc3VyZWx5IG5lZWQgbm90IHF1YXJyZWwuIAoKSW4gd2hhdCBNYWRhbWUgQmxhdmF0c2t5IHdyb3RlIG9uIHRoZSAKc3ViamVjdCBzaGUgbGFpZCBncmVhdCBzdHJlc3Mgb24gdGhlIHV0dGVyIAp1bmNlcnRhaW50eSBvZiB0aGUgd2hvbGUgdGhpbmcsIGFuZCB0aGUgcHJlLSAKcG9uZGVyYW5jZSBvZiBwZXJzb25hdGlvbnMgb3ZlciByZWFsIGFwcGVhci0gCmFuY2VzLiBNeSBvd24gXyBwZXJzb25hbCBleHBlcmllbmNlIGhhcyAKYmVlbiBtb3JlIGZhdm91cmFibGUgdGhhbiB0aGF0LiBJIHNwZW50IApzb21lIHllYXJzIGluIGV4cGVyaW1lbnRpbmcgd2l0aCBzcGlyaXR1YWwtIAoKCmlzbSwgYW5kIEkgc3VwcG9zZSB0aGVyZSBpcyBoYXJkbHkgYSBwaGVuby0gCjI3IAoKCjIxMCBBRFlBUiBUQUxLUyAKCgptZW5vbiBvZiB3aGljaCB5b3UgbWF5IHJlYWQgaW4gdGhlIGJvb2tzIAp3aGljaCBJIGhhdmUgbm90IHJlcGVhdGVkbHkgc2Vlbi4gSSBoYXZlIAplbmNvdW50ZXJlZCBtYW55IHBlcnNvbmF0aW9ucywgYnV0IHN0aWxsIGluIApteSBleHBlcmllbmNlIGEgZGlzdGluY3QgbWFqb3JpdHkgb2YgdGhlIAphcHBhcml0aW9ucyBoYXZlIGJlZW4gZ2VudWluZSwgYW5kIHRoZXJlLSAKZm9yZSBJIGFtIGJvdW5kIHRvIGJlYXIgdGVzdGltb255IHRvIHRoZSAKZmFjdC4gVGhlIG1lc3NhZ2VzIHdoaWNoIHRoZXkgZ2l2ZSBhcmUgb2Z0ZW4gCnVuaW50ZXJlc3RpbmcsIGFuZCB0aGVpciByZWxpZ2lvdXMgdGVhY2hpbmcgaXMgCnVzdWFsbHkgQ2hyaXN0aWFuaXR5IGFuZCB3YXRlciwgYnV0IHN0aWxsIGl0IAppc+KAmSBsaWJlcmFsIGFzIGZhciBhcyBpdCBnb2VzLCBhbmQgYW55dGhpbmcgaXMgCmFuIGFkdmFuY2UgdXBvbiB0aGUgYmlnb3RlZCBvcnRob2RveCAKcG9zaXRpb24uIAoKTm90IHRoYXQgc29tZSBzcGlyaXR1YWxpc3RzIGFyZSBub3QgYmlnb3RlZCAKbnVsc2/igJRuYXJyb3cgYW5kIGludG9sZXJhbnQgYXMgYW55IHNlY3RhLSAKcmFu4oCUd2hlbiBpdCBjb21lcyB0byBkaXNjdXNzaW5nIChzYXkpIAp0aGUgcXVlc3Rpb24gb2YgcmVpbmNhcm5hdGlvbiEgVGhlIG1ham9yLSAKaXR5IG9mIEhLbmdoc2ggYW5kIEFtZXJpY2FuIOKAlCBzcGlyaXR1YWxpc3RzIApkbyBub3QgeWV0IGtub3cgb2YgdGhhdCBmYWN0LCBidXQgdGhlIApGcmVuY2ggc3Bpcml0aXN0cywgdGhlIGZvbGxvd2VycyBvZiBBbGxhbiAKS2FyZGVjLCBob2xkIGl0LCBhbmQgYWxzbyB0aGUgc2Nob29sIG9mIApNYWRhbWUgZOKAmUhzcMOpcmFuY2UgaW4gRW5nbGFuZC4gTWFueSAKc3R1ZGVudHMgd29uZGVyIHRoYXQgZGVhZCBwZW9wbGUgc2hvdWxkIG5vdCAKYWxsIGtub3cgYW5kIHJlY29nbmlzZSB0aGUgZmFjdCBvZiByZWluY2FybmEtIAp0aW9uOyBidXQgYWZ0ZXIgYWxsIHdoeSBzaG91bGQgdGhleT8gV2hlbiAKYSBtYW4gZGllcyBoZSByZXNvcnRzIHRvIHRoZSBjb21wYW55IG9mIAp0aG9zZSB3aG9tIGhlIGhhcyBrbm93biBvbiBlYXJ0aDsgaGUgbW92ZXMgCmFtb25nIGV4YWN0bHkgdGhlIHNhbWUga2luZCBvZiBwZW9wbGUgYXMgCmR1cm1nIHBoeXNpY2FsIGhpZS4gVGhlIGF2ZXJhZ2UgY291bnRyeSAKCgpTUElSSVRVQUxJU00gMjExIAoKCmdyb2NlciBpcyBubyBtb3JlIGxpa2VseSBhZnRlciBkZWF0aCB0aGFuIApiZWZvcmUgaXQgdG8gY29tZSBpbnRvIGNvbnRhY3Qgd2l0aCBhbnkgCm9uZSB3aG8gY2FuIGdpdmUgaGltIGluZm9ybWF0aW9uIGFib3V0IApyZWluY2FybmF0aW9uLiBNb3N0IG1lbiBhcmUgc2h1dCBpbSBmcm9tIAphbGwgbmV3IGlkZWFzIGJ5IGEgaG9zdCBvZiBwcmVqdWRpY2VzOyB0aGV5IApjYXJyeSB0aGVzZSBwcmVqdWRpY2VzIGludG8gdGhlIGFzdHJhbCB3b3JsZCAKd2l0aCB0aGVtLCBhbmQgYXJlIG5vIG1vcmUgYW1lbmFibGUgdG8gCnJlYXNvbiBhbmQgY29tbW9uLXNlbnNlIHRoZXJlIHRoYW4gaGVyZS4gCgpUcnVlLCBhIG1hbiB3aG8gaXMgcmVhbGx5IG9wZW4tbWluZGVkIApjYW4gbGVhcm4gYSBncmVhdCBkZWFsIG9uIHRoZSBhc3RyYWwgcGxhbmM7IApoZSBtYXkgc3BlZWRpbHkgYWNxdWFpbnQgaGltc2VsZiB3aXRoIHRoZSAKd2hvbGUgb2YgdGhlIOKAmFRoZW9zb3BoaWNhbCB0ZWFjaGluZywgYW5kIAp0aGVyZSBhcmUgZGVhZCBtZW4gd2hvIGRvIHRoaXMuIFRoZXJlLSAKZm9yZSBpdCBvZnRlbiBoYXBwZW5zIHRoYXQgc2NyYXBzIG9mIFRoZW8tIApzb3BoeSBhcmUgZm91bmQgYW1vbmcgc3Bpcml0LWNvbW11bmljYS0gCnRpb25zLiBXZSBtdXN0IG5vdCBmb3JnZXQgdGhhdCB0aGVyZSBpcyBhIApoaWdoZXIgc3Bpcml0dWFsaXNtIG9mIHdoaWNoIHRoZSBwdWJsaWMgCmtub3dzIG5vdGhpbmcsIHdoaWNoIG5ldmVyIHB1Ymxpc2hlcyBhbnkgCmFjY291bnQgb2YgaXRzIHJlc3VsdHMuIFRoZSBiZXN0IGNpcmNsZXMgb2YgCmFsbCBhcmUgc3RyaWN0bHkgcHJpdmF0ZeKAlHJlc3RyaWN0ZWQgZW50aXJlbHkgCnRvIG9uZSBmYW1pbHksIG9yIHRvIGEgc21hbGwgbnVtYmVyIG9mIApmcmllbmRzLiBJbiBzdWNoIGNpcmNsZXMgdGhlIHNhbWUgcGVvcGxlIAptZWV0IG92ZXIgYW5kIG92ZXIgYWdhaW4sIGFuZCBubyBvdXRzaWRlciAKaXMgZXZlciBhZG1pdHRlZCB0byBtYWtlIGFueSBjaGFuZ2UgaW4gCnRoZSBtYWduZXRpc207IHNvIHRoZSBjb25kaXRpb25zIHNldCB1cCAKYXJlIHNpbmd1bGFybHkgcGVyZmVjdCwgYW5kIHRoZSByZXN1bHRzIG9iLSAKdGFpbmVkIGFyZSBvZiB0aGUgbW9zdCBzdXJwcmlzaW5nIGNoYXJhY3Rlci4gCkF0IHB1YmxpYyBzw6lhbmNlcywgdG8gd2hpY2ggYW55IG9uZSBtYXkgYmUgCgoKOTEyIEFEWUFSIFRBTEtTIAoKCmFkbWl0dGVkIG9uIHBheW1lbnQsIGFuIGFsdG9nZXRoZXIgbG93ZXIgCmNsYXNzIG9mIGRlYWQgcGVvcGxlIGFwcGVhciwgYmVjYXVzZSBvZiAKdGhlIHByb21pc2N1b3VzIGp1bWJsZSBvZiBpbmhhcm1vbmlvdXMgCm1hZ25ldGlzaW5zLiAKCgpTWU1CT0xPR1kgCgoKU3ltYm9sb2d5IGlzIGEgdmVyeSBpbnRlcmVzdGluZyBzdHVkeS4gClRvIGEgY2VydGFpbiB0eXBlIG9mIG1pbmQgZXZlcnZ0aGluZyBleC0gCnByZXNzZXMgaXRzZWxmIGltIHN5bWJvbHMsIGFuZCB0byBzb21lIApwZW9wbGUgdGhleSBhcmUgb2YgdGhlIGdyZWF0ZXN0IHBvc3NpYmxlIApoZWxwLiB8IG15c2VsZiBkbyBub3QgaGFwcGVuIHRvIGJlIG9mIAp0aGF0IHR5cGUsIGFuZCB0aGVyZWZvcmUgfCBoYXZlIG5vdCBwYWlkIApzcGVjaWFsIGF0dGVudGlvbiB0byB0aGVtIG9yIG1hZGUgYW55IApwYXJ0aWN1bGFyIHN0dWR5IG9mIHRoZW0uIFNvbWUgb2YgdGhlbSAKaG93ZXZlciBhcmUgb2J2aW91cywgYW5kIHJlYWRpbHkgY29tcHJlLSAKaGVuc2libGUgdG8gYW55IG9uZSB3aG8gdW5kZXJzdGFuZHMgZXZlbiAKYSBsaXR0bGUgb2YgdGhlIHByaW5jaXBsZXMgb2YgdGhlaXIgaW50ZXItIApwcmV0YXRpb24uIFRoaW5rLCBmb3IgZXhhbXBsZSwgb2YgdGhvc2UgCndoaWNoIGFwcGVhciBvbiB0aGUgZWFybGllciBwYWdlcyBvZiBUaGUgCkJvb2sgb2YgRHp5YW4uIE9uIHRoZSBmaXJzdCBwYWdlIGlzIGEgCndoaXRlIGRpc2MsIHNpZ3VpZnlpbmcgdGhlIGNvbmRpdGlvbiBvZiB0aGUgCnVubWFuaXRlc3RlZDsgb24gdGhlIHNlY29uZCBwYWdlIGEgc3BvdCBhcC0gCnBlYXJzIGluIHRoZSBjZW50cmUgb2YgdGhlIHdoaXRlIGRpc2MsIHNpZ25pZnktIAppbmcgdGhlIGZpcnN0IG1hbmlmZXN0YXRpb27igJR0aGUgRmlyc3QgTG9nb3MsIApvciB0aGUgQ2hyaXN0IGluIHRoZSBib3NvbSBvZiB0aGUgRmF0aGVyOyAKCgpTWU1CT0xPR1kgMjEzIAoKCm9uIHRoZSB0aGlyZCBwYWdlIHRoaXMgc3BvdCBoYXMgZXhwYW5kZWQgCmludG8gYSBiYXIsIGRpdmlkaW5nIHRoZSBkaXNjIGludG8gdHdvIApoYWx2ZXMgYW5kIHNvIHNpZ25pZnlpbmcgdGhlIGZpcnN0IGdyZWF0IHNlLSAKcGFyYXRpb24gaW50byBzcGlyaXQgYW5kIG1hdHRlcuKAlGFsc28gdGhlIApTZWNvbmQgTG9jb3MsIGFsd2F5cyBzcG9rZW4gb2YgYXMgXyBkdWFsIApvciBhbmRyb2d5bm91czsgb24gdGhlIGZvdXJ0aCBwYWdlIAphbm90aGVyIGJhciBoYXMgYXBwZWFyZWQgYXQgcmlnaHQgYW5nbGVzIAp0byB0aGUgZmlyc3QsIGdpdmluZyB1cyB0aGUgZm9ybSBvZiBhIApjaXJjbGUgZGl2aWRlZCBpbnRvIGZvdXIgZXF1YWwgcGFydHMgb3IgCnF1YXJ0ZXJzLCBzaWduaWZ5aW5nIHRoZSBlbWVyZ2VuY2Ugb2YgdGhlIApUaGlyZCBMb2N1cywgdGhvdWdoIEhlIGlzIHN0aWxsIGluIGEgY29uZGktIAp0aW9uIG9mIGluYWN0aXZpdHkuIE9uIHRoZSBuZXh0IHBhZ2UgdGhlIApvdXRlciBjaXJjbGUgZmFsbHMgYXdheSwgbGVhdmluZyB1cyB0aGUgZXF1YWwtIAp3cm1lZCBvciBHcmVlayBjcm9zcy4g4oCYVGhpcyBkZW5vdGVzIAp0aGUgVGhpcmQgTG9jb3MgcmVhZHkgZm9yIGFjdGlvbiwganVzdCAKYWJvdXQgdG8gZGVzY2VuZCBpbnRvIHRoZSBtYXR0ZXIgb2YgSGlzIApDT1NNT1MuIGkgCgpUaGUgbmV4dCBzdGFnZSBvZiB0aGlzIGFjdGl2aXR5IGlzIHNob3duIApieSB2YXJpb3VzIGZvcm1zIG9mIHRoZSBzeW1ib2wuIFNvbWV0aW1lcyAKdGhlIGFybXMgb2YgdGhlIEdyZWVrIGNyb3NzIHdpZGVuIG91dCBhcyAKdGhleSByZWNlZGUgZnJvbSB0aGUgY2VudHJlLCBhbmQgdGhlbiB3ZSBnZXQgCnRoZSBmb3JtIGNhbGxlZCB0aGUgTWFsdGVzZSBjcm9zcy4gQW5vdGhlciAKbGluZSBvZiBzeW1ib2xvZ3kgcmV0YWlucyB0aGUgc3RyYWlnaHQgYXJtcyAKb2YgdGhlIEdyZWVrIGNyb3NzLCBidXQgZHJhd3MgYSBmbGFtZSAKc2hvb3Rpbmcgb3V0IGZyb20gdGhlIGVuZCBvZiBlYWNoIGFybSwgCnRvIHNpZ25pZnkgdGhlIGJ1cm5pbmcgbGlnaHQgd2l0aGluLiBBIApmdXJ0aGVyIGV4dGVuc2lvbiBvZiB0aGlzIGlkZWEgc2V0cyB0aGUgCmNyb3NzIHdoaXJsaW5nIHJvdW5kIGl0cyBjZW50cmUsIGlrZSBhIHJlLSAKCgoyMTQgQURZQVIgVEFMS1MgCgoKdm9sdmluZyB3aGVlbCwgYW5kIHdoZW4gdGhhdC4gaXMgZG9uZSB0aGUgCmZsYW1lcyBhcmUgZHJhd24gYXMgc3RyZWFtaW5nIGJhY2t3YXJkcyBhcyAKdGhlIGNyb3NzIHJldm9sdmVzLCBhbmQgaW4gdGhhdCB3YXkgd2UgZ2V0IApvbmUgb2YgdGhlIG1vc3QgdW5pdmVyc2FsIG9mIGFsbCBzeW1ib2xzLCAKdGhhdCBvZiB0aGUgc3Zhc3Rpa2EsIHdoaWNoIGlzIHRvIGJlIGZvdW5kIAppbiBldmVyeSBTTWludHJ5IGluIHRoZSB3b3JsZCwgYW5kIGluIApjb25uZWN0aW9uIHdpdGggZXZlcnkgcmVsaWdpb24uIAoKVGhlIHN5bWJvbGljIG1lYW5pbmcgb2YgdGhlIG9yZGluYXJ5IApMYXRpbiBjcm9zcywgYXMgaXQgaXMgdXNlZCBpbiB0aGUgQ2hyaXN0aWFuIApDaHVyY2gsIGhhcyBubyBjb25uZWN0aW9uIHdoYXRldmVyIHdpdGggCnRoaXMgbGluZSBvZiB0aG91Z2h0LiBJdHMgbWVhbmluZyBpcyBlbnRpcmUtIApseSBkaWZmZXJlbnQsIGZvciBpdCBzeW1ib2xpc2VzIHRoZSBTZWNvbmQgCkxvdm9zLCBhbmQgSGlzIGRlc2NlbnQgaW50byBtYXR0ZXIsIGFuZCAKaXQgaXMgYWxzbyBjbG9zZWx5IGNvbm5lY3RlZCB3aXRoIHRoZSBpbS0gCnRpYXRpb24gcml0ZXMgb2YgYW5jaWVudCBLZXlwdC4gSW4gdGhlIGNhc2UgCm9mIFRoZSBCb29rIG9mIER6eWFuIHRoZSBjb21wcmVoZW5zaW9uIApvZiB0aGUgc3ltYm9sIGlzIGVub3Jtb3VzbHkgYXNzaXN0ZWQgYnkgCnRoZSBmYWN0IHRoYXQgdGhlIGJvb2sgaXRzZWxmIGlzIGhpZ2hseSAKaW5hZ25ldGlzZWQgaW0gYSBwZWN1bGlhciB3YXksIHNvIHRoYXQgCndoZW4gdGhlIHN0dWRlbnQgd2hvIGlzIHByaXZpbGVnZWQg4oCUIHRvIApzZWUgMXQgdGFrZXMgb25lIG9mIHRoZSBwYWdlcyBpbiBoaXMgaGFuZCAKYSB5dmVtYXJrYWJsZSBlZmZlY3QgaXMgcHJvZHVjZWQgdXBvbiAKaGltLiBCZWZvcmUgaGlzIG1pbmTigJlzIGV5ZSBhcmlzZXMuIHRoZSAKcGljdHVyZSBvZiB0aGF0IHdoaWNoIHRoZSBwYWdlIGlzIGludGVuZGVkIAp0byBzeW1ib2xpc2UsIGFuZCBzaW11bHRhbmVvdXNseSBoZSBoZWFycyAKYSBzb3J0IG9mIHJlY2l0YXRpb24gb2YgdGhlIHN0YW56YSB3aGljaCAKZGVzY3JpYmVzIGl0LiBJdCBpcyB2ZXJ5IGRpZmZpY3VsdCB0byBwdXQgCnRoaXMgY2xlYXJseSBpbnRvIHdvcmRzLCBidXQgdGhlIGV4cGVyaWVuY2UgCgoKU1lNQk9MT0dZIFYxNSAKCgppcyBhIHdvbmRlcmZ1bCBvbmUuIAoKSSBoYXZlIG15c2VsZiBzZWVuIGFuZCBoYW5kbGVkIHRoZSAKY29weSB3aGljaCBNYWRhbWUgQmxhdmF0c2t5IGRlc2NyaWJlc+KAlCAKZnJvbSB0aGUgc3R1ZHkgb2Ygd2hpY2ggc2hlIHdyb3RlIFRoZSAKU2NlcmV0IERvY3RyaW5lLiBUaGF0IGlzIG9mIGNvdXJzZSBub3QgdGhlIApvcmlnaW5hbCBib29rLCBidXQgdGhlIGNvcHkgb2YgaXQgd2hpY2ggCmlzIGtlcHQgaW4gdGhlIG9jY3VsdCBtdXNldW0gd2hpY2ggaXMgdW5kZXIgCnRoZSBjYXJlIG9mIHRoZSBNYXN0ZXIgSy4gSC4gVGhlIG9yaWdpLSAKbmFsIGRvY3VtZW50IGlzIGF0IFNoYW1iYWxsYSwgaW4gdGhlIGNhcmUgCm9mIHRoZSBIZWFkIG9mIHRoZSBIaWVyYXJjaHksIGFuZCBpcyBjZXItIAp0YWlubHkgdGhlIG9sZGVzdCBib29rIGluIHRoZSB3b3JsZC4gSW5kZWVkIAppdCBoYXMgYmVlbiBzYWlkIHRoYXQgcGFydCBvZiBpdCAodGhlIApmaXJzdCBzaXggc3RhbnphcywgSSB0aGluaykgaXMgZXZlbiBvbGRlciAKdGhhbiB0aGUgd29ybGQsIGZvciBpdCBpcyBzYWlkIHRvIGhhdmUgYmVlbiAKYnJvbmdodCBvdmVyIGZyb20gc29tZSBwcmV2aW91cyBjaGFpbi4gClRoYXQgbW9zdCBhbmNpZW50IHBhcnQgb2YgaXQgaXMgcmVnYXJkZWQgYnkgCnNvbWUgYXMgbm90IGltbmVyZWx5IGFuIGFjY291bnQgb2YgdGhlIApwcm9jZXNzZXMgb2YgdGhlIGNvbWluZyBpbnRvIGV4aXN0ZW5jZSBvZiBhIApzeXN0ZW0sIGJ1dCByYXRoZXIgYSBraW5kIG9mIG1hbnVhbCBvZiAKZGlyZWN0aW9ucyBmb3Igc3VjaCBhbiBhY3Qgb2YgY3JlYXRpb24uIEV2ZW4gCnRoZSBjb3B5IG11c3QgYmUgbWlsbGlvbnMgb2YgeWVhcnMgb2xkLiAKCkFub3RoZXIgd2VsbC1rbm93biBzeW1ib2wgaXMgdGhhdCBvZiB0aGUgCuKAmEdyZWF0IEJpcmQs4oCZIHdoaWNoIGlzIHVzZWQgdG8gZGVub3RlIAp0aGUgRGVpdHkgaW4gdGhlIGFjdCBvZiBob3ZlcmluZyBvdmVyIApIaXMgdW5pdmVyc2UsIGJyb29kaW5nIG92ZXIgdGhlIHdhdGVycyBvZiAKc3BhY2UsIG9yIGRhcnRpbmcgb253YXJkIGFsb25nIHRoZSBsaW5lIG9mIApIaXMgZXZvbHV0aW9uLiBUbyByZXBvc2XigJkgYmV0d2VlbiB0aGUgCndpbmdzIG9mIHRoZSBHcmVhdCBCaXJkIG1lYW5zIHNvIF8gdG8gCgoKMjE2IEFEWUFSIFRBTEtTIAoKCm1lZGl0YXRlIGFzLCB0byByZWFsaXNlIHVuaW9uIHdpdGggdGhlIExvZ29zLCAKYW5kIGl0IGlzIHNhaWQgdGhhdCB0aGUgbWFuIHdobyByZWFjaGVzIAp0aGF0IGxldmVsIG1heSByZXN0IHRoZXJlIGZvciB1bnRvbGQgeWVhcnMuIAoKVGhlIHdvcmQgT20gaXMgYW5vdGhlciBwcmVzZW50YXRpb24uIG9mIAp0aGUgc2FtZSBpZGVhOyBpdCBpcyB0aGUgc2FjcmVkIHdvcmQgb2YgCnRoZSBmaWZ0aCBvciBBcnlhbiByb290LXJhY2Uu4oCZIFRoZSBBdGxhbnRlYW4gCmdhY3JlZCB3b3JkIHdhcyBUYXUsIGFuZCBpdCBoYXMgYmVlbiAKc2FpZCB0aGF0IHRoZSBzYWNyZWQgd29yZHMgZ2l2ZW4gdG8gdGhlIApyb290LXJhY2VzIGluIHN1Y2Nlc3Npb24gYXJlIGFsbCBvZiB0aGVtIGNvbi0gCnNlY3V0aXZlIHN5bGxhYmxlcyBvZiBvbmUgZ3JlYXQpIHdvcmQsIHdoaWNoIAppcyB0aGUgdHJ1ZSBzYWNyZWQgTmFtZS4gCgpBbm90aGVyIG9idmlvdXMgc3ltYm9sLCB0aGUgaGVhcnQsIHdhcyAKcHJvbWluZW50IGluIHRoZSBvbGQgQXRsYW50ZWFuIF8gcmVsaS0gCmdpb24uIEluIHRoZSBpbm5lcm1vc3Qgc2hyaW1lIG9mIHRoZSBncmVhdCAKdGVtcGxlIGluIHRoZSBDaXR5IG9mIHRoZSBHb2xkZW4gR2F0ZSB0aGVyZSAKbGF5IHVwb24gdGhlIGFsdGFyIGEgbWFzc2l2ZSBnb2xkZW4gYm94IAppbiB0aGUgc2hhcGUgb2YgYSBoZWFydCwgdGhlIHNlY3JldCBvcGVuaW5nIApvdCB3aGljaCB3YXMga25vd24gb25seSB0byB0aGUgaGlnaC1wcmllc3QuIApUaGlzIHdhcyBjYWxsZWQg4oCYVGhlIEhlYXJ0IG9mIHRoZSBXb3JsZCzigJkgCmFuZCBzaWduaWZpZWQgdG8gdGhlbSB0aGUgaW5uZXJtb3N0IG15c3Rlci0gCmllcyB0aGF0IHRoZXkga25ldy4gSW4gaXQgdGhleSBrZXB0IHRoZWlyIAptb3N0IHNhY3JlZCB0aGluZ3MsIGFuZCBtdWNoIG9mIHRoZWlyIApzeW1ib2xpc20gY2VudHJlZCBhcm91bmQgaXQuIFRoZXkga25ld+KAmSAKdGhhdCBldmVyeSBhdG9tIGJlYXRzIGFzIGEgaGVhcnQsIGFuZCAKdGhleSBjb25zaWRlcmVkIHRoYXQgdGhlIHN1biBoYWQgYSBzaW1pLSAKbGFyIG1vdmVtZW50LCB3aGljaCB0aGV5IGNvbm5lY3RlZCB3aXRoIAp0aGUgc3VuLXNwb3QgcGVyaW9kLiBTb21ldGltZXMgb25lIGNvbWVzIAphY3Jvc3MgcGFzc2FnZXMgaW4gdGhlaXIgYm9va3Mgd2hpY2ggZ2l2ZSAKCgpTWU1CT0xPR1kgMjE3IAoKCnRoZSBpbXByZXNzaW9uIHRoYXQgdGhleSBrbmV3IG1vcmUgdGhhbiAKd2UgZG8gaW4gbWF0dGVycyBvZiBzY2llbmNlLCB0aG91Z2ggdGhleSAKcmVnYXJkZWQgaXQgYWxsIHJhdGhlciBmcm9tIHRoZSBwb2V0aWMgdGhhbiAKZnJvbSB0aGUgc2NpZW50aWZpYyBwb2ludCBvZiB2aWV3LiBUaGV5IAp0aG91Z2h0LCBmb3IgZXhhbXBsZSwgdGhhdCB0aGUgZWFydGggYnJlYXRoZXMgCmFuZCBtb3ZlcywgYW5kIGl0IGlzIGNlcnRhaW5seSB0cnVlIHRoYXQgCnF1aXRlIHJlY2VudGx5IHNjaWVudGlmaWMgbWVuIGhhdmUgZGlzY292ZXItIAplZCB0aGF0IHRoZXJlIGlzIGEgcmVndWxhciBkYWlseSBkaXNwbGFjZS0gCm1lbnQgb2YgdGhlIGVhcnRo4oCZcyBzdXJmYWNlLCB3aGljaCBtYXkgYmUgCnRob3VnaHQgb2YgYXMgY29ycmVzcG9uZGluZyBpbiBhIGNlcnRhaW4gd2F5IAp0byBicmVhdGhpbmcuIAoKQW5vdGhlciBzeW1ib2wgaXMgdGhhdCBvZiB0aGUgbG90dXMsIAphbmQgaXQgaXMgdXNlZCB0byBzaWduaWZ5IHRoZSBzb2xhciBzeXN0ZW0gCmluIGl0cyByZWxhdGlvbiB0byBpdHMgTG9jb3MuIFRoZXJlIGlzIAphIHJlYWwgcmVhc29uIGZvciB0aGlzIGNvbXBhcmlzb24gaW4gCnRoZSBhY3R1YWwgZmFjdHMgb2YgbmF0dXJlLiBUaGUgc2V2ZW4gClBsYW5ldGFyeSBMb2NvciwgYWx0aG91Z2ggdGhleSBhcmUgZ3JlYXQgaW4tIApkaXZpZHVhbCBlbnRpdGllcywgYXJlIGF0IHRoZSBzYW1lIHRpbWUgYXMtIApwZWN0cyBvZiB0aGUgU29sYXIgTG9jb3MsIGZvcmNlLWNlbnRyZXMgYXMgCml0IHdlcmUgaW4gSGlzIGJvZHkuIE5vdyBlYWNoIG9mIAp0aGVzZSBncmVhdCBsaXZpbmcgY2VudHJlcyBvciBfIHN1YnNpZGlhcnkgCkxvY290IGhhcyBhIHNvcnQgb2Ygb3JkZXJseSBwZXJpb2RpYyBjaGFuZ2UgCm9yIG1vdGlvbiBvZiBoaXMgb3duLCBjb3JyZXNwb25kaW5nIHBlci0gCmhhcHMgb24gc29tZSBpbmZpbml0ZWx5IGhpZ2hlciBsZXZlbCB0byB0aGUgCnJlZ3VsYXIgYmVhdGluZyBvZiB0aGUgaHVtYW4gaGVhcnQsIApvciB0byB0aGUgaW5zcGlyYXRpb24gYW5kIGV4cGlyYXRpb24gb2YgdGjDqS0gCmJyZWF0aC4gCgpTb21lIG9mIHRoZXNlIHBlcmlvZGljIGNoYW5nZXMgYXJlIAoKMjggfCAKCgo5MTggQURZQVIgVEFMS1MgCgoKbW9yZSByYXBpZCB0aGFuIG90aGVycywgc28gdGhhdCBhIHZlcnkgCmNvbXBsaWNhdGVkIHNlcmllcyBvZiBlZmZlY3RzIGlzIHByb2R1Y2VkLCAKYW5kIGl0IGhhcyBiZWVuIG9ic2VydmVkIHRoYXQgdGhlIG1vdmUtIAptZW50cyBvZiB0aGUgcGh5c2ljYWwgcGxhbmV0cyBpbiB0aGVpciByZWxhLSAKdGlvbiB0byBvbmUgYW5vdGhlciBmdXJuaXNoIGEgY2x1ZSB0byB0aGUgCm9wZXJhdGlvbiBvZiB0aGVzZSBncmVhdCBjb3NtaWMgaW5mbHVlbmNlcyAKYXQgYW55IGdpdmVuIG1vbWVudC4gSGFjaCBvZiB0aGVzZSBjZW4tIAp0cmVzIGhhcyBIaXMgc3BlY2lhbCBsb2NhdGlvbiBvciBtYWpvciAKZm9jdXMgd2l0aGluIHRoZSBib2R5IG9mIHRoZSBzdW4sIGFuZCAKaGFzIGFsc28gYSBtaW5vciBmb2N1cyB3aGljaCBpcyBhbHdheXMgCmV4dGVyaW9yIHRvIHRoZSBzdW4uIFRoZSBwb3NpdGlvbiBvZiB0aGlzIAptaW5vciBmb2N1cyBpcyBhbHdheXMgaW5kaWNhdGVkIGJ5IGEgCnBoeXNpY2FsIHBsYW5ldC4gCgpUaGUgZXhhY3QgcmVsYXRpb24gY2FuIGhhcmRseSBiZSBtYWRlIApjbGVhciBpbiBvdXIgdGhyZWUtZGltZW5zaW9uYWwgcGhyYXNlb2xvZ3kgOyAKYnV0IHdlIG1heSBwZXJoYXBzIHB1dCBpdCB0aGF0IGVhY2ggY2VudHJlIApoYXMgYWZpZWxkIG9mIGluZmx1ZW5jZSBwcmFjdGljYWxseSBjby0gCmV4dGVuc2l2ZSB3aXRoIHRoZSBzb2xhciBzeXN0ZW07IHRoYXQgaWYgYSAKc2VjdGlvbiBvZiB0aGUgZmllbGQgY291bGQgYmUgdGFrZW4gaXQgd291bGQgCmJlIGZvdW5kIHRvIGJlIGVsbGlwdGljYWw7IGFuZCB0aGF0IG9uZSBvZiB0aGUgCmZvY2kgb2YgZWFjaCBlbGxpcHNlIHdvdWxkIGFsd2F5cyBiZSBpbiB0aGUgCnN1biwgYW5kIHRoZSBvdGhlciB3b3VsZCBiZSB0aGUgc3BlY2lhbCBwbGFuZXQgCnJ1bGVkIGJ5IHRoYXQgc3Vic2lkaWFyeSBMb2Nvcy4gSXQgaXMgcHJvLSAKYmFibGUgdGhhdCwgbSB0aGUgZ3JhZHVhbCBjb25kZW5zYXRpb24gb2YgCnRoZSBvcmlnaW5hbCBnbG93aW5nIG5lYnVsYSBmcm9tIHdoaWNoIHRoZSAKc3lzdGVtIHdhcyBmb3JtZWQsIHRoZSBsb2NhdGlvbiBvZiB0aGUgCnBsYW5ldHMgd2FzIGRldGVybWluZWQgYnkgdGhlIGZvcm1hdGlvbiBvZiAKdm9ydGljZXMgYXQgdGhlc2UgbWlub3IgZm9jaSwgdGhleSBiZWluZyAKCgpTWU1CT0xPR1kgMjE5IAoKCmF1eGlsaWFyeSBwb2ludHMgb2YgZGlzdHJpYnV0aW9u4oCUZ2FuZ2xpYSBhcyBpdCAKd2VyZSBpbiB0aGUgc29sYXIgc3lzdGVtLiBBbGwgdGhlIHBoeXNpY2FsIApwbGFuZXRzIGFyZSBpbmNsdWRlZCB3aXRoaW4gdGhlIHBvcnRpb24gb2YgCnRoZSBzeXN0ZW0gd2hpY2ggaXMgY29tbW9uIHRvIGFsbCB0aGUgCm92b2lkczsgc28gdGhhdCBhbnkgb25lIHdobyB0cmllcyBtZW50YWxseSAKdG8gY29uc3RydWN0IHRoZSBmaWd1cmUgd2lsbCBzZWUgdGhhdCB0aGVzZSAKcmV2b2x2aW5nIG92b2lkcyBtdXN0IGhhdmUgdGhlaXIgcHJvamVjdGluZyAKc2VnbWVudHMsIGFuZCBoZSB3aWxsIHRoZXJlZm9yZSBiZSBwcmUtIApwYXJlZCB0byB1bmRlcnN0YW5kIHRoZSBjb21wYXJpc29uIG9mIHRoZSAKc3lzdGVtIGFzIGEgd2hvbGUgdG8gYSBmbG93ZXIgd2l0aCBtYW55IApwZXRhbHMuIAoKQW5vdGhlciByZWFzb24gZm9yIHRoaXMgY29tcGFyaXNvbiBvZiB0aGUgCnN5c3RlbSB0byBhIGxvdHVzIGlzIGV2ZW4gbW9yZSBiZWF1dGlmdWwsIGJ1dCAKcmVxdWlyZXMgZGVlcGVyIHRob3VnaHQuIEFzIHdlIHNlZSB0aGVtIAp0aGUgcGxhbmV0cyBhcHBlYXIgYXMgc2VwYXJhdGUgZ2xvYmVzOyBidXQgCnRoZXJlIGlzIGluIHJlYWxpdHkgYSBjb25uZWN0aW9uIGJldHdlZW4gdGhlbSAKd2hpY2ggaXMgb3V0IG9mIHJlYWNoIG9mIG91ciBicmFpbi1jb25zY2lvdXMtIApuZXNzLiBUaG9zZSB3aG8gaGF2ZSBzdHVkaWVkIHRoZSBzdWJqZWN0IApvZiB0aGUgZm91cnRoIGRpbWVuc2lvbiBhcmUgZmFtaWxpYXIgd2l0aCAKdGhlIGlkZWEgb2YgYW4gZXh0ZW5zaW9uIGluIGEgZGlyZWN0aW9uIGluLSAKdmlzaWJsZSB0byB1cywgYnV0IGl0IG1heSBub3QgaGF2ZSBvY2N1cnJlZCAKdG8gdGhlbSB0aGF0IGl0IGlzIGFwcGxpY2FibGUgdG8gdGhlIHNvbGFyIApzeXN0ZW0gYXMgYSB3aG9sZS4gCgpXZSBtYXkgb2J0YWluIGEgc3VnZ2VzdGlvbiBvZiB0aGUgZmFjdHMgCmJ5IGhvbGRpbmcgdGhlIGhhbmQgcGFsbSB1cHdhcmRzIGJlbnQgCnNvIGFzIHRvIGZvcm0gYSBraW5kIG9mIGN1cCwgYnV0IHdpdGggCnRoZSBmaW5nZXJzIHNlcGFyYXRlZCwgYW5kIHRoZW4gbGF5aW5nIGEgCnNoZWV0IG9mIHBhcGVyIHVwb24gdGhlIHRpcHMgb2YgdGhlIGZpbmdlcnMuIAoKCjIyMCBBRFlBUiBUQUxLUyAKCgpBIHR3by1kaW1lbnNpb25hbCBiZWluZyBsaXZpbmcgb24gdGhlIHBsYW5lIApvZiB0aGF0IHNoZWV0IG9mIHBhcGVyIGNvdWxkIG5vdCBwb3NzaWJseSAKYmUgY29uc2Npb3VzIG9mIHRoZSBoYW5kIGFzIGEgd2hvbGUsIGJ1dCAKY291bGQgcGVyY2VpdmUgb25seSB0aGUgdGlueSBjaXJjbGVzIGF0IHRoZSAKcG9pbnRzIG9mIGNvbnRhY3QgYmV0d2VlbiB0aGUgZmluZ2VycyBhbmQgCnRoZSBwYXBlci4gVG8gaGltIHRoZXNlIGNpcmNsZXMgd291bGQgYmUgCmVudGlyZWx5IHVuY29ubmVjdGVkLCBidXQgd2UsIHVzaW5nIHRoZSBzaWdodCAKb2YgYSBoaWdoZXIgZGltZW5zaW9uLCBjYW4gc2VlIHRoYXQgZWFjaCBvZiAKdGhlbSBoYXMgYSBkb3dud2FyZCBleHBhbnNpb24sIGFuZCB0aGF0IAppbiB0aGF0IHdheSB0aGV5IGFyZSBhbGwgcGFydHMgb2YgYSBoYW5kLiAKSW4gZXhhY3RseSB0aGUgc2FtZSB3YXkgdGhlIG1hbiBfIHVzaW5nIAp0aGUgc2lnaHQgb2YgdGhlIGZvdXJ0aCBkaW1lbnNpb24gbWF5IG9iLSAKc2VydmUgdGhhdCB0aGUgcGxhbmV0cyB3aGljaCBhcmUgXyBpc29sYXRlZCAKaW4gb3VyIHRocmVlIGRpbWVuc2lvbnMgYXJlIGFsbCB0aGUgdGltZSAKam9pbmVkIGltIGFub3RoZXIgd2F5IHdoaWNoIHdlIGNhbm5vdCB5ZXQgCnNlZSA7IGFuZCBmcm9tIHRoZSBwb210IG9mIHZpZXcgb2YgdGhhdCAKaGlnaGVyIHNpZ2h0IHRoZXNlIGdsb2JlcyBhcmUgYnV0IHRoZSBwb2ludHMgCm9mIHBldGFscyB3aGljaCBhcmUgcGFydCBvZiBvbmUgZ3JlYXQgZmxvd2VyLiAKQXVkIHRoZSBnbG93aW5nIGhlYXJ0IG9mIHRoYXQgZmxvd2VyIHRocm93cyAKdXAgYSBjZW50cmFsIHBpc3RpbCB3aGljaCBhcHBlYXJzIHRvIHVzIGFzIAp0aGUgc3VuLiAKCkl0IDFzIG5vdCB3aXNlIGZvciB0aGUgdm90YXJ5IG9mIG1vZGVybiAKc2NpZW5jZSB0byByaWRpY3VsZSBvciBkZXNwaXNlIGVpdGhlciB0aGUgbGVhcm4tIAppbmcgb2Ygb2xkIHRpbWUgb3IgdGhlIHN0cmFuZ2UgYW5kIGZhbmNpZnVsIApzeW1ib2xzIGluIHdoaWNoIDF0IHdhcyBleHByZXNzZWQsIGZvciBtYW55IApvZiAudGhlc2UgYW5jaWVudCBzeW1ib2xzIGFyZSBwcmVnbmFudCB3aXRoIAptZWFuaW5n4oCUb2Z0ZW4gd2l0aCBtZWFuaW5nIHNob3dpbmcgZGVlcGVyIAprbm93bGVkZ2UgdGhhbiB0aGUgb3V0ZXIgd29ybGQgbm93IHBvc3Nlc3Nlcy4gCgoKRklSRSAyMjEgCgoKVGhlIFRoZW9zb3BoaWNhbCBzdHVkZW50IGF0IGxlYXN0IHdpbGwgYXZvaWQgCnRoZSBtaXN0YWtlIG9mIGRlc3Bpc2luZyBhbnl0aGluZyBtZXJlbHkgYmUtIApjYXVzZSBoZSBkb2VzIG5vdCB5ZXQgY29tcHJlaGVuZCBpdOKAlGJlY2F1c2UgCmhlIGhhcyBub3QgeWV0IGxlYXJudCB0aGUgbGFuZ3VhZ2UgaW4gd2hpY2ggCml0IGlzIHdyaXR0ZW4uIAoKCkZJUkUgCgoKT24gaGlnaGVyIHBsYW5lcyBldmVyeXRoaW5nIGlzIHdoYXQgZG93biAKaGVyZSB3ZSBzaG91bGQgY2FsbCBsdW1pbm91cywgYW5kIGFib3ZlIGEgCmNlcnRhaW4gbGV2ZWwgZXZlcnl0aGluZyBtYXkgYmUgc2FpZCB0byBiZSAKcGVybWVhdGVkIGJ5IGZpcmUsIHlldCBub3QgYXQgYWxsIHN1Y2ggZmlyZSAKYXMgd2Uga25vdyBvbiB0aGUgcGh5c2ljYWwgcGxhbmUuIFdoYXQgCndlIGNhbGwgYnkgdGhhdCBuYW1lIGRvd24gaGVyZSBjYW5ub3QgCmV4aXN0IHdpdGhvdXQgc29tZXRoaW5nIHdoaWNoIGVpdGhlciBidXJucyAKb3IgZ2xvd3MsIGFuZCBpdCAxcyBvbmx5IGEga2luZCBvZiByZWZsZWMtIAp0aW9uIG9yIGxvd2VyIGV4cHJlc3Npb24gb2YgYSBoaWdoZXIgYWJzdHJhY3QgCnRoaW5nIHdoaWNoIHdlIGNhbm5vdCBzZW5zZS4gVHJ5IHRvIHRoaW5rIApvZiBhIGZpcmUgd2hpY2ggZG9lcyBub3QgYnVybiwgYnV0IGlzIGluIGEgCmxpcXVpZCBmb3JtLCBzb21ldGhpbmcgaGtlIHdhdGVyLiBUaGlzIHdhcyAKa25vd24gdG8gdGhlIGZvbGxvd2VycyBvZiB0aGUgZmlyc3QgZ3JlYXQgClpvcm9hc3RlciwgZm9yIHRoZXkgaGFkIHRoaXMgZnJlIHdoaWNoIGJ1cm5lZCAKbm8gZnVlbCBvbiB0aGVpciBhbHRhcnMsIGEgc2FjcmVkIGZpcmUgYnkgbWVhbnMgCm9mIHdoaWNoIHRoZXkgc3ltYm9saXNlZCBkaXZpbmUgbGlmZS4gCgpPbmUgd2F5IG9mIHJlYWNoaW5nIHRoZSBMb2dvcyBpcyBhbG9uZyAKdGhlIGxpbmUgb2YgZmlyZSwgYW5kIHRoZSBhbmNpZW50IFBhcnNpcyBrbmV3IAoKCjkyMiBBRFlBUiBUQUxLUyAKCgp0aGlzIHdlbGwsIGFuZCByYWlzZWQgdGhlbXNlbHZlcyB1bnRpbCB0aGV5IAp3ZXJlIG9uZSB3aXRoIHRoZSBmaXJlLCBzbyBhcyB0byByZWFjaCBIaW0gCmJ5IHdheSBvZiBpdC4gVGhlIC1vbmx5IHdheSBpbiB3aGljaCBpdCAKY2FuIGJlIGRvbmUgaXMgdGhyb3VnaCB0aGUgYXNzaXN0YW5jZSBvZiAKY2VydGFpbiBjbGFzc2VzIG9mIGRldmFzLCBidXQgYXQgdGhpcyBwZXJpb2QgCm9mIHRoZSB3b3JsZOKAmXMgaGlzdG9yeSB3ZSBhcmUgc29fIGdyb3NzbHkgCm1hdGVyaWFsIHRoYXQgdmVyeSBmZXcgY2FuIHN0YW5kIHRoZSBvcmRlYWwuIApUaGUgZmlyc3QgWm9yb2FzdGVyIGhhZCBhcm91bmQgaGltIG1hbnkgCndobyB3ZXJlIGFibGUgdG8gdGFrZSB0aGF0IHdheTsgYW5kLCB0aG91Z2ggCnVuZGVyIHByZXNlbnQgY29uZGl0aW9ucyBvdXIgbG93ZXIgdmVoaWNsZXMgCndvdWxkIHByb2JhYmx5IGJlIGRlc3Ryb3llZCBpZiB3ZSBzaG91bGQgCm1ha2Ugc3VjaCBhbiBhdHRlbXB0LCBpbiBuZXcgcmFjZXMgYW5kIApvbiBvdGhlciBwbGFuZXRzIHdlIHNoYWxsIGJlIGFibGUgdG8gCnRha2UgdGhhdCB3YXkgYWdhaW4uIEFsbCB0aGlzIHNvdW5kcyBzdHJhbmdlIAphbmQgd2VpcmQgYW5kIGluY29tcHJlaGVuc2libGUsIGJlY2F1c2UgaXQgCmRlYWxzIHdpdGggY29uZGl0aW9ucyB3aGljaCBhcmUgdXR0ZXJseSB1bi0gCmtub3duIG9uIHRoZSBwaHlzaWNhbCBwbGFuZSwgYnV0IHRoZSBzdHUtIApkZW50IG9mIG9jY3VsdGlzbSB3aWxsIGZpbmQgdGhhdCBpbiB0aGUgY291cnNlIApvZiBoaXMgcHJvZ3Jlc3MgaGUgaGFzIHRvIGZhY2UgbWFueSB0aGluZ3MgCndoaWNoIGNhbm5vdCBhdCBhbGwgYmUgZXhwcmVzc2VkIGluIHdvcmRzIApkb3duIGhlcmUuIAoKCkBoaXJkIFNlY3Rpb24gCgoKYWQgCgoKR0RRaGUgVGhlYXNvcGhpY2FsIEF0dGl0dWRlIAoKClRISVJEIFNFQ1RJT04gCgoKQ09NTU9OLVNFTlNFIAoKCkFib3ZlIGFsbCB0aGluZ3MgYW5kIHVuZGVyIGFsbCBjaXJjdW0tIApzdGFuY2VzIHRoZSBzdHVkZW50IG9mIG9jY3VsdGlzbSBtdXN0IGhvbGQgCmZhc3QgdG8gY29tbW9uLXNlbnNlLiBIZSB3aWxsIG1lZXQgd2l0aCAKbWFueSBuZXcgaWRlYXMsIHdpdGggbWFueSBzdGFydGxpbmcgZmFjdHMsIAphbmQsIGlmIGhlIGFsbG93cyB0aGUgc3RyYW5nZW5lc3Mgb2YgdGhpbmdzIAp0byBvdmVyYmFsYW5jZSBoaW0sIGhhcm0gaW5zdGVhZCBvZiDigJxnb29kIAp3aWxsIHJlc3VsdCBmcm9tIHRoZSBpbmNyZWFzZSBvZiBoaXMga25vdy0gCmxlZGdlLiBNYW55IG90aGVyIHF1YWxpdGllcyBhcmUgZGVzaXJhYmxlIApmb3IgcHJvZ3Jlc3MsIGJ1dCBhIHdlbGwtYmFsYW5jZWQgbWluZCBpcyAKYW4gYWN0dWFsIG5lY2Vzc2l0eS4g4oCYVGhlIHN0dWR5IG9mIG9jY3VsdGlzbSAKbWF5IGluZGVlZCBiZSBzdW1tZWQgdXAgaW4gdGhpczogaXQgaXMgCnRoZSBzdHVkeSBvZiBtdWNoIHRoYXQgaXMgdW5yZWNvZ25pc2VkIGJ5IAp0aGUgb3JkaW5hcnkgbWFu4oCUdGhlIGFjcXVpc2l0aW9uIHRoZXJlZm9yZSAKb2YgYSBncmVhdCBtdWx0aXR1ZGUgb2YgbmV3IGZhY3RzLCBhbmQgCnRoZW4gdGhlIGFkYXB0YXRpb24gb2Ygb25l4oCZcyBsaWZlIHRvIHRoZSBuZXcgCmZhY3RzIGluIGEgcmVhc29uYWJsZSBhbmQgY29tbW9uLXNlbnNlIHdheS4gCkFsbCwgb2NjdWx0aXNtIG9mIHdoaWNoIEkga25vdyBhbnl0aGluZyBpcyAKCgpzaW1wbHkgYW4gYXBvdGhlb3NpcyBvZiBjb21tb24tc2Vuc2UuIAoyOSAKCgoyMjYgQURZQVIgVEFMS1MgCgoKQlJPVEhFUkhPT0QgCgoKVGhlIGJyb3RoZXJob29kIG9mIG1hbiBpcyBhIGZhY3QgaW4gCm5hdHVyZTsgdGhvc2Ugd2hvIGRlbnkgaXQgYXJlIHNpbXBseSB0aG9zZSAKd2hvIGFyZSBibGluZCB0byBpdCwgYmVjYXVzZSB0aGV5IHNodXQgdGhlaXIgCmV5ZXMgdG8gYWN0dWFsaXRpZXMgd2hpY2ggdGhleSBkbyBub3Qgd2lzaCAKdG8gYWNrbm93bGVkZ2UuIFdlIG5lZWQgd2FzdGUgbGl0dGxlIHRpbWUgCm92ZXIgdGhvc2Ugd2hvIGRlbnkgaXQ7IG5hdHVyZSBpdHNlbGYgd2lsbCAKcmVmdXRlIHRoZWlyIGhlcmVzeS4gTW9yZeKAmSBzdWJ0bHkgZGFuZ2Vyb3VzIAphcmUgdGhvc2Ugd2hvIG1pc3VuZGVyc3RhbmQgaXQsIGFuZCB0aGVpciAKbmFtZSBpcyBsZWdpb24uIAoKUmVtZW1iZXIgbm90IG9ubHkgd2hhdCBicm90aGVyaG9vZCAKbWVhbnMsIGJ1dCBhbHNvIHdoYXQgaXQgZG9lcyBub3QgbWVhbiwgSXQgCmVtcGhhdGljYWxseSBkb2VzIG5vdCBtZWFuIGVxdWFsaXR5LCBmb3IgCnR3aW5zIGFuZCB0cmlwbGV0cyBhcmUgY29tcGFyYXRpdmVseSByYXJlOyAKdW5kZXIgYWxsIGJ1dCB0aGUgbW9zdCBhYm5vcm1hbCBjaXJjdW0tIApzdGFuY2VzLCBicm90aGVyaG9vZCBpbXBsaWVzLiBhIGRpZmZlcmVuY2UgaW4gCmFnZSwgYW5kIGNvbnNlcXVlbnRseSBhbGwgc29ydHMgb2Ygb3RoZXIgCmRpZmZlcmVuY2VzLCBpbiBzdHJlbmd0aCwgaW4gY2xldmVybmVzcywgaW4gCmNhcGFjaXR5LiAKCkJyb3RoZXJob29kIGltcGxpZXMgY29tbXVuaXR5IG9mIGludGVyZXN0LCAKYnV0IG5vdCBjb21tdW5pdHkgb2YgaW50ZXJlc3RzLiBJZiB0aGUgZmFtaS0gCmx5IGJlIHJpY2ggYWxsIGl0cyBtZW1iZXJzIHByb2ZpdCB0aGVyZWJ5IDsgCmlmIHRoZSBmYW1pbHkgYmUgcG9vciwgYWxsIGl0cyBtZW1iZXJzIHN1ZmZlciAKYWNjb3JkaW5nbHkuIFNvIHRoZXJlIGlzIGEgY29tbXVuaXR5IG9mIGluLSAKdGVyZXN0LiBCdXQgdGhlIGluZGl2aWR1YWwgaW50ZXJlc3RzIG9mIHRoZSAKYnJvdGhlcnMgbm90IG9ubHkgbWF5IGJlLCBidXQgYWxzbyBmb3IgbWFueSAKeWVhcnMgbXVzdCBiZSwgYWJzb2x1dGVseSBkaWZmZXJlbnQuIFdoYXQgCgoKQlJPVEhFUkhPT0QgOTI3IAoKCmludGVyZXN0cyBoYXMgdGhlIGJveSBvZiBmb3VydGVlbiBpbiBjb21tb24gCndpdGggaGlzIGJyb3RoZXIgb2Ygc2l4PyBIYWNoIGxpdmVzIGhpcyAKb3duIGxpZmUgYW1vbmcgZnJpZW5kcyBvZiBoaXMgb3duIGFnZSwgYW5kIApoYXMgZmFyIG1vcmUgaW4gY29tbW9uIHdpdGggdGhlbSB0aGFuIAp3aXRoIGhpcyBicm90aGVyLiBXaGF0IGNhcmVzIHRoZSBlbGRlciAKYnJvdGhlciBvZiB0d2VudHktZml2ZSwgZmlnaHRpbmcgaGlzIHdheSBpbiAKdGhlIHdvcmxkLCBmb3IgYWxsIHRoZSBwcml6ZXMgYW5kIGFueGlldGllcyAKb2Ygc2Nob29sLWxmZSB3aGljaCBmaWxsIHRoZSBob3Jpem9uIG9mIHRoYXQgCnNlY29uZCBicm90aGVyID8gfCAKCkl0IGlzIG5vdCB0byBiZSBleHBlY3RlZCwgdGhlbiwgdGhhdCBiZS0gCmNhdXNlIHRoZXkgYXJlIGJyb3RoZXJzIG1lbiBzaGFsbCBmZWVsIGFsaWtlIApvciBiZSBpbnRlcmVzdGVkIGluIHRoZSBzYW1lIHRoaW5ncy4gSXQgCndvdWxkIG5vdCBiZSBkZXNpcmFibGUsIGV2ZW4gaWYgaXQgd2VyZSAKcG9zc2libGUsIGZvciB0aGVpciBkdXRpZXMgZGlmZmVyIGFjY29yZGluZyB0byAKdGhlaXIgYWdlcywgYW5kIHRoZSBvbmUgdGhpbmcgd2hpY2ggbW9zdCAKcHJvbW90ZXMgdGhlIGV2b2x1dGlvbiBvZiB0aGUgaHVtYW4gZmFtaWx5IAphcyBhIHdob2xlIGlzIHRoYXQgZXZlcnkgbWFuIHNob3VsZCBzdHJpdmUgCmVhcm5lc3RseSB0byBkbyBoaXMgZHV0eSBpbiB0aGF0IHN0YXRlIG9mIApsaWZlIHRvIHdoaWNoIGl0IHNoYWxsIHBsZWFzZSBHb2QgdG8gY2FsbCAKaGltLCBhcyB0aGUgQ2h1cmNoIGNhdGVjaGlzbSBwdXRzIGl0LiAKVGhpcyBkb2VzIG5vdCBpbiB0aGUgbGVhc3QgaW1wbHkgdGhhdCAKZXZlcnkgbWFuIG11c3QgYWx3YXlzIHJlbWFpbiBpbiB0aGUgCnN0YXRpb24gaW4gd2hpY2ggaGlzIGthcm1hIGhhcyBwbGFjZWQgaGltIAphdCBiaXJ0aDsgaWYgaGUgY2FuIGhvbmVzdGx5IGFuZCBoYXJtLSAKbGVzc2x5IG1ha2Ugc3VjaCBmdXJ0aGVyIGthcm1hIGFzXyB3aWxsIApyYWlzZSBoaW0gb3V0IG9mIGl0IGhlIGlzIGF0IHBlcmZlY3QgbGliZXJ0eSAKdG8gZG8gc28uIEJ1dCBhdCB3aGF0ZXZlciBzdGFnZSBoZSBtYXkgCmJlLCBoZSBzaG91bGQgZG8gdGhlIGR1dGllcyBvZiB0aGF0IHN0YWdlLiAKCgoyMjggQURZQUJSIFRBTEtTIAoKClRoZSBjaGlsZCBncm93cyBzdGVhZGlseTsgYnV0IHdoaWxlIGhlIGlzIAphdCBhIGNlcnRhaW4gYWdlLCBoaXMgZHV0aWVzIGFyZSB0aG9zZSBhcC0gCnByb3ByaWF0ZSB0byB0aGF0IGFnZSwgYW5kIG5vdCB0aG9zZSBvZiAKc29tZSBvbGRlciBicm90aGVyLiBFYWNoIGFnZSBoYXMgaXRzIGR1dGllcyAK4oCUdGhlIHlvdW5nZXIgdG8gbGVhcm4gYW5kIHRvIHNlcnZlLCBhbmQgCnRoZSBvbGRlciB0byBkaXJlY3QgYW5kIHByb3RlY3Q7IGJ1dCBhbGwgCmFsaWtlIHRvIGJlIGxvdmluZyBhbmQgaGVscGZ1bCwgYWxsIGFsaWtlIAp0byB0cnkgdG8gcmVhbGlzZSB0aGUgaWRlYSBvZiB0aGUgZ3JlYXQgCmZhbWlseSBvZiBodW1hbml0eS4gRWFjaCB3aWxsIGJlc3QgaGVscCAKaGlzIGJyb3RoZXJzLCBub3QgYnkgaW50ZXJmZXJpbmcgd2l0aCB0aGVtLCAKYnV0IGJ5IHRyeWluZyBlYXJuZXN0bHkgdG8gZG8gaGlzIG93biAKZHV0eSBhcyBhIG1lbWJlciBvZiB0aGlzIGZhbWlseS4gCgpUaGUgYnJvdGhlcmhvb2Qgb2Ygb3VyIFNvY2lldHkgb3VnaHQgCnRvIGJlIGEgdmVyeSByZWFsIHRoaW5nLiBJdCBpcyBpbXBvcnRhbnQgCnRoYXQgd2Ugc2hvdWxkIHJlY29nbmlzZSBhbmQgcmVhbGlzZSBhIGNsb3NlIApmZWxsb3dzaGlwLCBhIGZlZWxpbmcgb2YgcmVhbCB1bml0eSBhbmQgZHJhdy0gCmluZyB0b2dldGhlci4gVGhpcyB3aWxsIGJlIGFjaGlldmVkIGlmIG1lbS0gCmJlcnMgd2lsbCBmb3JnZXQgdGhlaXIgb3duIHBlcnNvbmFsIGZlZWwtIAppbmdzIGFuZCB0aGluayBjaGllZmx5IG9mIHRoZSBpbnRlcmVzdHMgb2YgCm90aGVycy4gVGhlIGhlYXJ0IG9mIHRoZSBTb2NpZXR5IGlzIG1hay0gCmluZyBmb3IgaXRzZWxmIGEgYm9keSBvbiB0aGUgYnVkZGhpYyBwbGFuZSwgCmEgY2hhbm5lbCB0aHJvdWdoIHdoaWNoIHRoZSBHcmVhdCBPbmVzIApjYW4gd29yay4gVGhlIHBlcmZlY3Rpb24gb2YgdGhlIGNoYW5uZWwgYXMgCnN1Y2ggZGVwZW5kcyB1cG9uIHRoZSBhdHRpdHVkZSBvZiB0aGUgCmVhcm5lc3QgYW5kIGRldm90ZWQgbWVtYmVycy4gQXMgeWV0IGl0IAppcyB2ZXJ5IGltcGVyZmVjdCwgYmVjYXVzZSBvZiB0aGUgdGVuZGVuY3kgCm9mIGVhY2ggbWVtYmVyIHRvIHRoaW5rIHRvbyBtdWNoIG9mIGhpbS0gCnNlbGYgYXMgYSB1bml0LCBhbmQgdG9vIGxpdHRsZSBvZiB0aGUgZ29vZCAKCgpCUk9USEVSSE9PRCAyMjkgCgoKYW5kIHdlbGwtYmVpbmcgb2YgdGhlIHdob2xlLiBUaGUgc3RvbmVzIApvZiB0aGUgd2FsbCBtdXN0IGJlIGJ1aWx0IGVhY2ggaW4gXyBpdHMgCm93biBwbGFjZTsgb25lIHN0YW5kaW5nIG91dCBvZiBwbGFjZSBoZXJlLCAKb3IgcHJvamVjdGluZyB0aGVyZSwgY2F1c2VzIHJvdWdobmVzcywgYW5kIAp0aGUgd2FsbCBhcyBhIHdob2xlIGlzIGEgbGVzcyBwZXJmZWN0IHdhbGwuIApXZSBmb3JtIGJ1dCBhIGxpdHRsZSBwYXJ0IG9mIGEgdmFzdCAKc2NoZW1lLCBvbmUgd2hlZWwgYXMgaXQgd2VyZSBvZiBhIG1hY2hpbmUuIApJdCBpcyBmb3IgdXMgdG8gbWFrZSBvdXJzZWx2ZXMgcmVhbGx5IGZpdCAKZm9yIG91ciBsaXR0bGUgcGFydDsgaWYgd2UgZG8gdGhhdCwgdGhvdWdoIAp3ZSBtYXkgYmUgcXVpdGUgdW5maXQgdG8gdGFrZSBhIGxlYWRpbmcgCnBvc2l0aW9uIGluIHRoZSBkcmFtYSBvZiB0aGUgd29ybGQsIHlldCAKd2hhdCBsaXR0bGUgd2UgZG8gaXMgd2VsbCBkb25lIGFuZCBfbGFzdC0gCmluZywgYW5kIHdpbGwgaG9ub3VyYWJseSBmaWxsIGl0cyBwbGFjZSBpbiAKdGhlIGdyZWF0ZXIgd2hvbGUuIAoKWW91IGFyZSBhbGwgYXdhcmUgdGhhdCBpbiBzZXZlbiBodW5kcmVkIAp5ZWFyc+KAmSB0aW1lIG91ciB0d28gTWFzdGVycyB3aWxsIGNvbS0gCm1lbmNlIHRoZSBmb3VuZGluZyBvZiAtdGhlIHNpeHRoIHJvb3QtcmFjZSwgCmFuZCB0aGF0IGV2ZW4gYWxyZWFkeSBUaGV5IGFyZSBsb29raW5nIAphYm91dCBmb3IgdGhvc2Ugd2hvIHdpbGwgYmUgc3VpdGFibGUgYXNzaXN0LSAKYW50cyBmb3IgVGhlbSBpbiB0aGF0IHdvcmsuIEJ1dCB0aGVyZSAKaXMgc29tZXRoaW5nIG5lYXJlciB0aGFuIHRoYXQgdG8gYmUgZG9uZeKAlCAKYW5kIGl0IGlnIGEgd29yayB3aGljaCB3aWxsIGFmZm9yZCBleGNlbGxlbnQgCnByYWN0aWNlIGluIGRldmVsb3BpbmcgdGhlIHF1YWxpdGllcyBuZWNlc3MtIAphcnkgZm9yIHRoYXQgbGFyZ2VyIHdvcms7IGFuZCB0aGlzIGlzIHRoZSAKZGV2ZWxvcG1lbnQgb2YgdGhlIHNpeHRoIHN1Yi1yYWNlIG9mIHRoZSAKQXJ5YW4gcmFjZSwgd2hpY2ggaXMgbm93IGp1c3QgYmVnaW5uaW5nIHRvIApiZSBmb3JtZWQgaW4gTm9ydGggQW1lcmljYS4gQWxyZWFkeSBzaWducyAKYXJlIHRvIGJlIHNlZW4gb2YgdGhlIHByZXBhcmF0aW9ucyBmb3IgCgoKMjMwIEFEWUFSIFRBTEtTIAoKCnRoaXMgd29yazsgZGlmZmVyZW50IHJhY2VzIGFyZSBiZWluZyB3ZWxkZWQgCnRvZ2V0aGVyIGluIG9uZTsgYW5kIHdlIHRvbyBoYXZlIG91ciAKcGFydCB0byBwbGF5IGluIHRoaXMuIFdlIGFsbCByZWNvZ25pc2UgaG93IAppbXBvcnRhbnQgaXQgaXMgdGhhdCBhIGNoaWxk4oCZcyBlYXJseSB5ZWFycyAKc2hvdWxkIGJlIHN1cnJvdW5kZWQgYnkgZ29vZCBpbmZsdWVuY2VzLCAKYW5kIGl0IGlzIGp1c3QgdGhlIHNhbWUgd2l0aCB0aGUgY2hpbGRob29kIApvZiBhIHJhY2UuIElmIHdlIGNhbiBzdWNjZWVkIGluIHN0YXJ0aW5nIAp0aGlzIHlvdW5nIHJhY2UgYWxvbmcgcmlnaHQgbGluZXMgbXVjaCAKd2lsbCBiZSBnYWluZWQ7IGFuZCB3ZSwgZXZlbiBhdCB0aGlzIGRpcy0gCnRhbmNlIGZyb20gQW1lcmljYSwgY2FuIGJlIG9mIGdyZWF0IGhlbHAgCmF0IHRoaXMgY3JpdGljYWwgcGVyaW9kIG9mIGhpc3RvcnksIGlmIHdlIAp3aWxsLiAKClBhcnQgb2YgdGhlIHNjaGVtZSB2ZXJ5IHNob3J0bHkgdG8gYmUgCnJlYWxpc2VkIGlzIHRoZSBkcmF3aW5nIHRvZ2V0aGVyIG9mIHRoZSAKdmFyaW91cyBicmFuY2hlcyBvZiBvdXIgZmlmdGggc3ViLXJhY2UsIAp0aGUgVGV1dG9uaWMuIE1hbnkgb2YgdXMgYmVsb25nIHRvIHRoYXQgCuKAlHRoZSBFbmdsaXNoIGNvbG9uaWVzLCB0aGUgQW1lcmljYW5zLCAKdGhlIFNjYW5kaW5hdmlhbnMsIHRoZSBEdXRjaCBhbmRfIHRoZSAKR2VybWFuczsgYW5kIG1hbnkgYWxzbyBpbiBGcmFuY2UgYW5kIApJdGFseSwgYXMgZm9yIGV4YW1wbGUgdGhlIE5vcm1hbnMsIHdobyAKYXJlIHRoZSBkZXNjZW5kYW50cyBvZiB0aGUgTm9yc2VtZW4sIGFuZCAKYWxzbyB0aG9zZSBpbiBzb3V0aGVybiBjb3VudHJpZXMgd2hvIGFyZSAKZGVzY2VuZGFudHMgb2YgdGhlIEdvdGhzIGFuZCBfIFZpc2lnb3RocywgCldoYXQgaXMgZGVzaXJlZCBpbiBvcmRlciB0byBfIHByb21vdGUgCnRoZSB3b3JrIG9mIHRoZSBncmVhdCBwbGFuIGlzIHRoYXQgYWxsIAp0aGVzZSByYWNlcyBzaG91bGQgYmUgZHJhd24gaW50byBtdWNoIApjbG9zZXIgc3ltcGF0aHkuIFRoaXMgaGFzIGFscmVhZHkgYmVlbiAKYWNoaWV2ZWQgdG8gYSBncmVhdCBleHRlbnQgaW4gdGhlIGNhc2Ugb2YgCgoKQlJPVEhFUkhPT0QgOTMxIAoKCkVuZ2xhbmQgYW5kIEFtZXJpY2E7IGl0IGlzIHZlcnkgbXVjaCAKdG8gYmUgcmVncmV0dGVkIHRoYXQgaXQgY2Fubm90IGJlIGRvbmUgaW4gCnRoZSBjYXNlIG9mIEdlcm1hbnkgYWxzbywgYnV0IGZvciB0aGUgCnByZXNlbnQgdGhhdCBncmVhdCBjb3VudHJ5IHNlZW1zIGRpc3Bvc2VkIAp0byBob2xkIGFsb29mIGZyb20gdGhlIGRlc2lyZWQgY29hbGl0aW9uLCAKYW5kIHRvIHN0YW5kIG91dCBmb3Igd2hhdCBpdCBjb25zaWRlcnMgaXRzIApvd24gcHJpdmF0ZSBpbnRlcmVzdHMuIEl0IGlzIG11Y2ggdG8gYmUgCmhvcGVkIHRoYXQgdGhpcyBkaWZmaWN1bHR5IG1heSBiZSBvdmVyY29tZS4gCgpUaGUgZ3JlYXQgcHVycG9zZSBvZiB0aGlzIGRyYXdpbmcgdG8tIApnZXRoZXIgaXMgdG8gcHJlcGFyZSB0aGUgd2F5IGZvciB0aGUgCmNvbWluZyBvZiB0aGUgbmV3IE1lc3NpYWgsIG9yLCBhcyB3ZSBzaG91bGQgCnNheSBpbiBUaGVvc29waGljYWwgY2lyY2xlcywgdGhlIG5leHQgYWR2ZW50IApvZiB0aGUgTG9yZCBNYWl0cmV5YSwgYXMgYSBncmVhdCBzcGlyaXR1YWwgCnRlYWNoZXIsIGJyaW5naW5nIGEgbmV3IHJlbGlnaW9uLiBUaGUgdGltZSAKaXMgcmFwaWRseSBhcHByb2FjaGluZyB3aGVuIHRoaXMgc2hhbGwgYmUgCmxhdW5jaGVk4oCUYSB0ZWFjaGluZyB3aGljaCBzaGFsbCB1bmlmeSB0aGUgCm90aGVyIHJlbGlnaW9ucywgYW5kIGNvcm1ucGFyZWQgd2l0aCB0aGVtIApzaGFsbCBzdGFuZCB1cG9uIGEgYnJvYWRlciBiYXNpcyBhbmQga2VlcCAKaXRzIHB1cml0eSBsb25nZXIuIEJ1dCBiZWZvcmUgdGhpcyBjYW4gY29tZSAKYWJvdXQgd2UgbXVzdCBoYXZlIGdvdCByaWQgb2YgdGhlIGluY3VidXMgCm9mIHdhciwgd2hpY2ggYXQgcHJlc2VudCBpcyBhbHdheXMgaGFuZ2luZyAKb3ZlciBvdXIgaGVhZHMgbGlrZSBhIGdyZWF0IHNwZWN0cmUsIHBhcmFseXMtIAppbmcgdGhlIGJlc3QgaW50ZWxsZWN0cyBvZiBhbGwgY291bnRyaWVzIGFzIApyZWdhcmRzIHNvY2lhbCBleHBlcmltZW50cywgbWFraW5nIGl0IGltLSAKcG9zc2libGUgZm9yIG91ciBzdGF0ZXNtZW4gdG8gdHJ5IG5ldyBwbGFucyAKYW5kIG1ldGhvZHMgb24gYSBsYXJnZSBzY2FsZS4gVGhlcmVmb3JlIApvbmUgZXNzZW50aWFsIHRvd2FyZHMgY2Fycnlpbmcgb3V0IHRoZSBzY2hlbWUgCmlzIGEgcGVyaW9kIG9mIHVuaXZlcnNhbCBwZWFjZS4gTWFueSAKCgoyMzIgQURZQVIgVEFMS1MgCgoKZWZmb3J0cyBoYXZlIGFscmVhZHkgYmVlbiBtYWRlIGluIHZhcmlvdXMgCndheXMgdG8gYnJpbmcgYWJvdXQgdGhpcyByZXN1bHTigJRmb3IgZXgtIAphbXBsZSB0aGUgUGVhY2UgQ29uZmVyZW5jZTsgYnV0IGl0IHNlZW1zIAp0aGF0IHNvbWUgb3RoZXIgd2F5IHdpbGwgaGF2ZSB0byBiZSB0cmllZC4gCgpJZiB3ZSBvZiB0aGUgZmlmdGggc3ViLXJhY2UgY2FuIGJ1dCBwdXQgCmFzaWRlIG91ciBwcmVqdWRpY2VzIGFuZCBzdGFuZCBzaWRlIGJ5IApzaWRlLCBhIGdyZWF0IHdvcmsgbGllcyBiZWZvcmUgdXMgaW4gdGhlIApmdXR1cmUuIE91cnMgaXMgdGhlIGxhdGVzdCBzdWItcmFjZSwgYW5kIAp0aGVyZWZvcmUgY29udGFpbnMsIGdlbmVyYWxseSBzcGVha2luZywgdGhlIApoaWdoZXN0IGVnb3MgaW4gZXZvbHV0aW9uLiBZZXQgdGhlIG1ham9yaS0gCnR5IG9mIHRoZSBwZW9wbGUgaW4gaXQgYXJlIGJ5IG5vIG1lYW5zIApyZWFkeSB0byByZXNwb25kIHRvIGFfIHB1cmVseSB1bnNlbGZpc2ggCm1vdGl2ZSBhcyBhIG1lYW5zIG9mIGJyaW5naW5nIGFib3V0IHRoZSAKdW5pdmVyc2FsIHBlYWNlIHJlcXVpcmVkLiAKCkhvdyB0aGVuIGNhbiB0aGlzIGJlc3QgYmUgYXR0YWluZWQ/IEJ5IAptYWtpbmcgaXQgdG8gdGhlIGludGVyZXN0IG9mIGFsbCB0aGVzZSBuYXRpb25zIAp0byBpbnNpc3QgdXBvbiB1bml2ZXJzYWwgcGVhY2UuIFJlbWVtYmVyIAp0aGF0IHRyYWRlIHN1ZmZlcnMgZHVyaW5nIHdhci4gV2Ugb2YgdGhlc2UgCnZhcmlvdXMgYnJhbmNoZXMgb2YgdGhlIFRldXRvbmljIHJhY2UgYXJlIHRoZSAKZ3JlYXRlc3QgdHJhZGluZyBuYXRpb25zIG9mIHRoZSB3b3JsZCwgYW5kIApbIGhvcGUgdGhhdCB3ZSBtYXkgc2hvcnRseSByZWFsaXNlIHRoYXQgCml0IGlzIHRvIG91ciBpbnRlcmVzdCB0byBiaW5kIG91cnNlbHZlcyB0by0gCmdldGhlciwgYW5kIHRvIHN0YW5kIGZvciBwZWFjZS4gVHJ1bHkgdGhpcyAKaXMgbm90IGEgdmVyeSBoaWdoIG1vdGl2ZSwgZm9yIGl0IGlzIG1lcmVseSAKc2VsZi1pbnRlcmVzdDsgYnV0IHN0aWxsIHdoZW4gdGhlIHJ1bGVycyBhbmQgCmdyZWF0IHN0YXRlc21lbiBhcmUgbW92ZWQgdG8gZGVzaXJlIHVuaXR5IApmcm9tIHRoZSBhYnN0cmFjdCBsb3ZlIGZvciBodW1hbml0eSwgdGhpcyAKbG93ZXIgbW90aXZlIG1heSBoZWxwIHRvIGJyaW5nIHRoZWlyIGxlc3MgCgoKQlJPVEhFUkhPT0QgOTMzIAoKCmRldmVsb3BlZCBmZWxsb3ctY291bnRyeW1lbiBpbnRvIGxpbmUgd2l0aCAKdGhlbSwgYW5kIGNhdXNlIHRoZW0gd2FybWx5IHRvIHN1cHBvcnQgCmFueSBtb3ZlbWVudCB3aGljaCB0aGV5IG1heSBzZXQgb24gZm9vdCAKZm9yIHRoYXQgb2JqZWN0LiAKCkFsbCBzb3J0cyBvZiBldmVudHMgYXJlIGJlaW5nIHV0aWxpc2VkIAp0byBoZWxwIHRoaXMgYmluZGluZyB0b2dldGhlciBvZiBvdXIgcmFjZS4gCkZvciBleGFtcGxlLCB0aGUgZGVhdGggb2YgSGVyIE1hamVzdHkgCnRoZSBsYXRlIFF1ZWVuIFZpY3RvcmlhIHdhcyB2ZXJ5IGRlY2lkLSAKZWRseSB1dGlsaXNlZCBmb3IgdGhhdCBwdXJwb3NlLiBIZXIgbGlmZSAKZGlkIHZlcnkgbXVjaCBpbiBkcmF3aW5nIHRoZSBDb2xvbmllcyAKdG9nZXRoZXIgaW50byBjbG9zZXIgYm9uZHMgd2l0aCB0aGUgTW90aGVyLSAKY291bnRyeS4gVGhvc2Ugd2hvIHNhdyB0aGUgSnViaWxlZSBwcm8tIApjZXNzaW9uIGZyb20gdGhlIHBzeWNoaWMgc3RhbmRwb2ltdCB3ZXJlIApncmVhdGx5IGltcHJlc3NlZCB3aXRoIHRoZSBtaWdodHkgY3VycmVudCAKb2YgaGlnaCBlbW90aW9uIHRoZXJlYnkgZXZva2VkLiBJbiBoZXIgCmhmZSBzaGUgZGlkIG11Y2gsIGJ1dCBhdCBoZXIgZGVhdGggCnN0aWxsIG1vcmUgd2FzIGFjY29tcGxpc2hlZC4gQnkgaGVyIGRlYXRoIApzaGUgZHJldyBjbG9zZSBub3Qgb25seSBvdXIgQ29sb25pZXMsIGJ1dCAKYWxzbyB0aGUgVW5pdGVkIFN0YXRlcy4gSSB3YXMgaW4gQW1lcmljYSAKYXQgdGhlIHRpbWUgb2YgaGVyIGRlYXRoLCBhbmQgcmVhbGx5IGl0IAptaWdodCBoYXZlIGJlZW4gdGhlaXIgb3duIHJ1bGVyIGZvciB3aG9tIAp0aGUgQW1lcmljYW5zIHdlcmUgbW91cm5pbmcsIHNvIHNwb250YW5lb3VzIAphbmQgc28gc2luY2VyZSB3ZXJlIHRoZWlyIGV4cHJlc3Npb25zIG9mIAp0aGUgc2Vuc2Ugb2YgbG9zcy4gU28gaW4gaGVyIGRlYXRoIHRoZSAKZ3JlYXQgUXVlZW4gZGlkIGdyYW5kIHNlcnZpY2UsIGFzIHdlbGwgYXMgCmluIGhlciBsaWZlLiAKCkthY2ggcmFjZSBoYXMgaXRzIG93biBwZWN1bGlhcml0aWVzLCBqdXN0IAoKCmFzIGVhY2ggaW5kaXZpZHVhbCBoYXMuIElmIHdlIHdpc2ggdG8gY28tIAo4MCAKCgoyMzQuIEFEWUFSIFRBTEtTIAoKCm9wZXJhdGUgaW4gdGhlIGdyZWF0IHdvcmsgd2UgbXVzdCBsZWFybiAKdG8gYWxsb3cgZm9yIHRoZXNlLCB0byBiZSB0b2xlcmFudCBvZiB0aGVtLCAKYW5kIHRvIHJlZ2FyZCB0aGVtIHdpdGggYSBraW5kbHkgaW50ZXJlc3QsIAppbnN0ZWFkIG9mIHNuZWVyaW5nIGF0IHRoZW0gb3IgbGV0dGluZyB0aGVtIApnZXQgb24gb3VyIG5lcnZlcy4gV2hhdCB0aGVuIGNhbiB3ZSBkbyAKcHJhY3RpY2FsbHkgdG8gaGVscCB0aGVzZSBncmVhdCBuYXRpb25hbCAKYWZmYWlycz8gVGhpcyBhdCBsZWFzdDogdGhhdCB3aGVuIGluIG91ciAKcHJlc2VuY2UgdW5raW5kIG9yIHNuZWVyaW5nIHJlbWFya3MgYXJlIAptYWRlIGFib3V0IG90aGVyIG5hdGlvbnMsIHdlIGNhbiBtYWtlIGEgCnBvaW50IG9mIGFsd2F5cyBwdXR0aW5nIGZvcndhcmQgY29uc2lkZXJhLSAKdGlvbnMgb24gdGhlIG90aGVyIHNpZGUsIGFuZCBzYXlpbmcgc29tZS0gCnRoaW5nIGtpbmRseS4gV2UgbWF5IG5vdCBhbHdheXMgYmUgYWJsZSAKdG8gY29udHJhZGljdCB0aGUgZXZpbCB0aGluZyBzYWlkLCBidXQgYXQgCmxlYXN0IHdlIG1heSBzdXBwbGVtZW50IGl0IHdpdGggc29tZXRoaW5nIAp0aGF0IDFzIGdvb2QuIAoKVGhlcmUgYXJlIHBlcmhhcHMgYnV0IGZldyBvZiB1cywgYnV0IAphdCBsZWFzdCBpbiB0aGUgY291cnNlIG9mIGEgeWVhciBlYWNoIG9mIAp1cyBwcm9iYWJseSBtZWV0cyBhdCBsZWFzdCBhIHRob3VzYW5kIApvdGhlcnMsIGFuZCBlYWNoIG9mIHVzIG1heSB0byB0aGF0IApleHRlbnQgYmUgYSBjZW50cmUgZm9yIGhlbHBpbmcgb3VyIG93biAKbmF0aW9uIHRvIHNlZSBnb29kIGluIG90aGVycywgYW5kIHRodXMsIAp0aG91Z2ggaXQgbWF5IGJlIG9ubHkgaW4gYSBzbWFsbCB3YXksIHdlIAptYXkgYmUgYWJsZSB0byBzbW9vdGggdGhlIHBhdGggYW5kIHRvIG1ha2UgCnRoZSB3YXkgZm9yIHVuaW9uIGVhc2llci4gTWFueSBwZW9wbGUgYXJlIApjb25zdGFudGx5IGluIHRoZSBoYWJpdCBvZiBzcGVha2luZyB3aXRoIApuYXJyb3cgcHJlanVkaWNlIGFnYWluc3QgdGhlIHBlY3VsaWFyaXRpZXMgb2YgCm90aGVyIG5hdGlvbnM7IGxldCB1cyBhdCBsZWFzdCB0YWtlIGNhcmUgbm90IAp0byBkbyB0aGlzLCBidXQgYWx3YXlzIGJlYXIgaW4gbWluZCB0aGUgCgoKQlJPVEhFUkhPT0QgMjM1IAoKCmltcG9ydGFuY2Ugb2YgcHJvbW90aW5nIGZyaWVuZGx5IGZlZWxpbmcuIApEbyBub3QgbGV0IHVzIGRlc3BhaXIgd2hlbiB3ZSBfIHRoaW5rIApob3cgbGl0dGxlIGVhY2ggb25lIG9mIHVzIGNhbiBkbyBpbiAKdGhlIG1hdHRlcjsgbGV0IHVzIHJhdGhlciByZW1lbWJlciB0aGF0IApldmVyeSBsaXR0bGUgZWZmb3J0IHdpbGwgYmUgdXNlZCBieSBUaG9zZSAKd2hvIGFyZSB3b3JraW5nIGZyb20gYmVoaW5kLiBObyBkb3VidCAKdGhlIHNjaGVtZSB3aWxsIGJlIGNhcnJpZWQgb3V0IHdoZXRoZXIgCm9yIG5vdCB3ZSB0YWtlIHRoZSBwcml2aWxlZ2Ugd2hpY2ggaXMgb2ZmZXJlZCAKdG8gdXMgb2YgaGVscGluZyBpbiBpdDsgYnV0IHRoYXQgaXMgbm8gcmVhc29uIAp3aHkgd2Ugc2hvdWxkIG5vdCBkbyBvdXIgYmVzdC4gCgpOb3IgaXMgaXQgb25seSBnb29kIHBlb3BsZSB3aG8gYXJlIAp1c2VkIGluIHRoZSBwcm9tb3Rpb24gb2YgdGhlIHNjaGVtZS4gCkFsbCBzb3J0cyBvZiBmb3JjZXMgYXJlIGJlaW5nIHVzZWQgYnkgCnRoZSBHcmVhdCBCcm90aGVyaG9vZCB0aGF0IHN0YW5kcyBiZWhpbmQgCnRvIGZvcndhcmQgdGhlIG5lY2Vzc2FyeSB3b3JrLiBZZXMsIGV2ZW4gCnRoZSB2ZXJ5IHNlbGZpc2huZXNzIGFuZCB0aGUgZmFpbGluZ3Mgb2YgCm1lbi4g4oCY4oCcIEJsaW5kbHkgdGhlIHdpY2tlZCB3b3JrIHRoZSByaWdodC0gCmVvdXMgd2lsbCBvZiBoZWF2ZW4s4oCZIGFzIFNvdXRoZXkgd3JpdGVzIGluIApUaGFsYWJhLiBBbmQg4oCcQWxsIHRoaW5ncyB3b3JrIHRvZ2V0aGVyIApmb3IgZ29vZCB0byB0aGVtIHRoYXQgbG92ZSBHb2Qu4oCdIFRoaXMgCndhcyBzcG9rZW4gYXNfIHJlZ2FyZHMgcGVyc29uYWwga2FybWEsIApidXQgdGhlIHNhbWUgdGhpbmcgaG9sZHMgZ29vZCBpbiByZWdhcmQgdG8gCmdyZWF0ZXIgYW5kIGJyb2FkZXIgc2NoZW1lcy4gRm9yIGV4YW1wbGUsIAp0aGUgYmlnb3RyeSBvZiB0aGUgQ2hyaXN0aWFuIENodXJjaCwgZXZpbCAKdGhvdWdoIGl0IGlzLCBoYXMgbm90IGJlZW4gYWx0b2dldGhlciB2YWx1ZWxlc3MsIApmb3IgaXQgaGFzIGhlbHBlZCB0byBkZXZlbG9wZSBzdHJlbmd0aCBvZiAKZmFpdGgsIHNpbmNlIHRoZSBpZ25vcmFudCBjYW5ub3QgYmVsaWV2ZSAKc3Ryb25nbHkgd2l0aG91dCBiZWluZyBiaWdvdGVkLiBTZWxmLXNlZWtpbmcgCgoKMjM2IEFEWUFSIFRBTEtTIAoKCmluIGNvbW1lcmNpYWwgcHVyc3VpdHMgaXMgZXZpbCBhbHNvLCB5ZXQgaXQgCmhhcyBpbiBpdCBhIGNlcnRhaW4gcG93ZXIgd2hpY2ggY2FuIGJlIAp0dXJuZWQgdG8gYWNjb3VudCBieSB0aG9zZSB3aG8gc3RhbmQgCmJlaGluZCwgZm9yIGl0IGRldmVsb3BlcyBzdHJlbmd0aCBvZiB3aWxsIAphbmQgY29uY2VudHJhdGlvbiwgcXVhbGl0aWVzIHdoaWNoIGluIGEgCmZ1dHVyZSBoZmUgbWF5IGJlIHB1dCB0byBtb3N0IHZhbHVhYmxlIAp1c2VzLiAKCldlIGVhY2ggaGF2ZSBhbiBvcHBvcnR1bml0eSB0byBoZWxwIGluIAp0aGlzIHNjaGVtZSwgdG8gY28tb3BlcmF0ZSBvbiB0aGUgc2lkZSBvZiAKZ29vZC4gSWYgd2UgZG8gbm90IHRha2UgdGhlIG9wcG9ydHVuaXR5IApvZmZlcmVkIHRvIHVzLCBhbm90aGVyIHdpbGwsIGFuZCBpZiBub3QgdGhhdCAKb3RoZXIsIHRoZW4gYW5vdGhlciwgYnV0IGluIGFueSBjYXNlIHRoZSAKd29yayB3aWxsIGJlIGRvbmUuIHwgCgpXZSBrbm93IHRoYXQgYWxyZWFkeSBzb21lIHRvIHdob20gdGhlIApvcHBvcnR1bml0eSBoYXMgYmVlbiBvZmZlcmVkIGhhdmUgY2FzdCBpdCAKYXNpZGU7IGJ1dCB0aGF0IGlzIG9ubHkgYWxsIHRoZSBtb3JlIHJlYXNvbiAKd2h5IHdlIHNob3VsZCB3b3JrIHdpdGggZ3JlYXRlciB2aWdvdXIsIApzbyBhcyB0byBhdG9uZSBmb3IgdGhlaXIgZGVmZWN0aW9u4oCUdG8gZG8gCnRoZWlyIHNoYXJlIGFzIHdlbGwgYXMgb3VyIG93bi4gTmV2ZXIgZm9yIAphIG1vbWVudCBtdXN0IHdlIGZlYXIgdGhhdCBiZWNhdXNlIG9mIApzdWNoIGRlZmVjdGlvbiB0aGUgd29yayB3aWxsIGJlIGFsbG93ZWQgdG8gCnN1ZmZlci4gV2UgY2Fubm90IGJ1dCByZWdyZXQgdGhhdCBvdXIgcG9vciAKZnJpZW5kcyBzaG91bGQgbG9zZSB0aGVpciBvcHBvcnR1bml0aWVz4oCUdGhhdCAKZnJvbSBpZ25vcmFuY2UgYW5kIGxhY2sgb2YgY2xlYXItc2lnaHRlZG5lc3MgCnRoZXkgYXJlIHdvcmtpbmcgc28gc2FkbHkgYWdhaW5zdCB0aGVpciAKb3duIGludGVyZXN0cy4gWWV0IHJlbWVtYmVyIHRoYXQgdGhlaXIgCmZvbGx5IGlzIGJ1dCB0ZW1wb3Jhcnk7IHRoZXkgd2lsbCBhd2FrZW4gCnRvIHRoZSB0cnV0aCBzb21lIGRheeKAlGlmIG5vdCBpbiB0aGlzIGxpZmUsIAoKCkJST1RIRVJIT09EIHwgOTM3IAoKCnRoZW4gaW4gc29tZSBvdGhlci4gTWVhbnRpbWUgaW5zaWRlIGFsbCBpcyAKd2VsbCwgYW5kIHRoZSBHcmVhdCBXb3JrIGlzIGdvaW5nIGZvcndhcmQuIAoKVGhlIGV2b2x1dGlvbiBvZiB0aGUgd29ybGQgaXMsIGFmdGVyIGFsbCwgCmxpa2UgYW55IG90aGVyIGxhcmdlIHVuZGVydGFraW5nLiBUaGluayBvZiAKdGhlIG1ha2luZyBvZiBhXyByYWlsd2F5LCBmb3IgaW5zdGFuY2UuIApJdCBkb2VzIG5vdCBtYXR0ZXIgdG8gdGhlIHJhaWx3YXkgY29tLSAKcGFueSBvciB0byB0aGUgZnV0dXJlIHBhc3NlbmdlcnMgd2hpY2ggCndvcmttYW4gbGF5cyBhIGNlcnRhaW4gcmFpbCBvciBkcml2ZXMgYSAKY2VydGFpbiBib2x0LCBzbyBsb25nIGFzIGl0IGlzIHdlbGwgYW5kIAp0cnVseSBkb25lOyBhbmQgdGhlIG92ZXJzZWVyIHdpbGwgYXR0ZW5kIAp0byB0aGF0LiBJdCBtYXR0ZXJzIHZlcnkgbXVjaCB0byBfIHRoZSAKd29ya21hbiwgZm9yIGhlIHdobyB3b3JrcyByZWNlaXZlcyB0aGUgCnBheSwgd2hpbGUgdGhlIG90aGVyIGdldHMgbm90aGluZy4gVGhlIApvdmVyc2VlciByZWdyZXRzIDF0IHdoZW4gYSB3b3JrbWFuIGdvZXMgb2ZmIAppbiBhIGZpdCBvZiB0ZW1wZXIgb3Igb2YgZHJ1bmtlbm5lc3MgYW5kIApyZWZ1c2VzIHRvIHdvcmsgZm9yIGEgZGF5OyBidXQgaGUgdGhpbmtzLCAK4oCY4oCYIE5ldmVyIG1pbmQsIGhlIHdpbGwgY29tZSBiYWNrIHRvbW9ycm93LOKAnSAKYW5kIG1lYW50aW1lIGhlIGVtcGxveXMgc29tZSBvbmUgZWxzZS4gCk1hbnkgaGF2ZSBsZWZ0IHRoZSB3b3JrIGluIGp1c3QgdGhhdCB3YXkgCmluIGFuIG91dGJ1cnN0IG9mIHBlcnNvbmFsaXR5LCBidXQgdGhleSB3aWxsIApyZXR1cm4uIFRoZSBxdWVzdGlvbiBpcyBub3QgYXMgdG8gd2hldGhlciAKdGhlIHdvcmsgc2hhbGwgYmUgZG9uZeKAlHRoZSBNYXN0ZXJzIHdpbGwgc2VlIAp0byB0aGF0IGluIGFueSBjYXNlOyBpdCBpcyBvbmx5IGFzIHRvIHdobyAKd2lsbCBlbWJyYWNlIHRoZSBvcHBvcnR1bml0eSBvZiBkb2luZyBpdC4gCgpNYW55IHBlb3BsZSB3aG8gY29udGVuZCBiaXR0ZXJseSBhZ2FpbnN0IAp0aGUgcmlnaHQgYXJlIG1lcmVseSBzaG93aW5nIHRoYXQgdGhleSBhcmUgCm5vdCB5ZXQgZml0IHRvIHBhc3MgdGhpcyB0ZXN0OyB0aGV5IGhhdmUgbm90IAp5ZXQgcmVhY2hlZCB0aGUgc3RhZ2Ugd2hlcmUgdGhleSBjYW4gZm9yZ2V0IAoKCjIzOCBBRFlBUiBUQUxLUyAKCgp0aGVtc2VsdmVzIHV0dGVybHkgaW4gdGhlIHdvcms7IHRoZWlyIHBlci0gCnNvbmFsaXRpZXMgYXJlIHN0aWxsIHJhbXBhbnQsIGFuZCBzbyB0aGV5IGFyZSAKY2FwYWJsZSBvZiBiZWluZyBzaG9ja2VkIGFuZCB0aHJvd24gb2ZmIAp0aGVpciBiYWxhbmNlLCBpZiBzb21lIG5ldyBmYWN0IGNvbWVzIApiZWZvcmUgdGhlbS4gSXQgaXMgc2FkLCBvZiBjb3Vyc2UsIGJ1dCBpdCAKaXMgb25seSB0ZW1wb3Jhcnk7IHRoZXkgaGF2ZSBsb3N0IGEgZ29vZCAKb3Bwb3J0dW5pdHkgZm9yIHRoaXMgbGlmZSwgYmVjYXVzZSB0aGV5IGFyZSAKbm90IHlldCBzdHJvbmcgZW5vdWdoIGZvciBpdDsgYnV0IHRoZXJlIAphcmUgbWFueSBsaXZlcyB5ZXQgdG8gY29tZS4gTWVhbnRpbWUgCm90aGVycyB3aWxsIHRha2UgdGhlaXIgcGxhY2VzLiBOZXZlciBmb3JnZXQgCnRoYXQgdGhlIG9uZSB0aGluZyBvZiBpbXBvcnRhbmNlIGlzXyB0aGF0IAp0aGUgTWFzdGVyc+KAmSB3b3JrIHNob3VsZCBiZSBkb25lOyBsZXQgdXMgCmF0IGxlYXN0IGJlIGFtb25nIHRob3NlIHdobyBhcmUgZG9pbmcgaXQgCm5vdywgZXZlbiB0aG91Z2ggdGhlcmUgYXJlIG1hbnkgd2hvIApjYW5ub3QgeWV0IHNlZSBjbGVhcmx5IGVub3VnaCB0byBoZWxwIHVzLiAKVGhleSByZXB1ZGlhdGUgdGhlIE1hc3RlcnMgZm9yIHRoaXMgbGlmZSwgCmhpa2UgYSBuYXVnaHR5IGxpdHRsZSBib3kgd2hvIGdldHMgYW5ncnkgCndpdGggaGlzIHBhcmVudHMsIGFuZCBpbiBhIGZpdCBvZiBwYXNzaW9uIApydW5zIGF3YXkgYW5kIGhpZGVzIGhpbXNlbGY7IGJ1dCBwcmVzZW50bHkgCmh1bmdlciBicmluZ3MgdGhlIG5hdWdodHkgbGl0dGxlIGJveSBob21lIAphZ2FpbiwgYW5kIGluIHRoZSBzYW1lIHdheSBodW5nZXIgZm9yIAp0aGUgdHJ1dGggd2hpY2ggdGhleSBoYXZlIG9uY2UgdGFzdGVkIHdpbGwgCmJyaW5nIG1vc3Qgb2YgdGhlbSBiYWNrIHRvIHRoZSBmZWV0IG9mIAp0aGUgTWFzdGVycyBtIHRoZWlyIG5leHQgbGl2ZXMuIE1lYW50aW1lIApsZXQgdXMgc3RhbmQgZmlybSwgYW5kIGZpbGwgb3VyIGhlYXJ0cyB3aXRoIApwZWFjZSBldmVuIGluIHRoZSBtaWRzdCBvZiBzdHJpZmUuIMKrIAoKSWYgd2Ugd291bGQgcmlzZSB0byBvdXIgb3Bwb3J0dW5pdHkgd2UgCm11c3QgcnViLiBkb3duIG91ciBjb3JuZXJzIGFuZCBnZXQgcmlkIG9mIAoKCkJST1RIRVJIT09EIDIzOSAKCgpvdXIgYXdrd2FyZCBwZXJzb25hbGl0aWVzLCBhbmQgZm9yZ2V0IHRoZW0gCmluIGVuY291cmFnaW5nIGdvb2QgZmVlbGluZyBpbiBldmVyeSBwb3NzaS0gCmJsZSB3YXkuIElmIHdlIGhlYXIgc29tZXRoaW5nIHNhaWQgYWdhaW5zdCAKc29tZWJvZHkgZWxzZSBsZXQgdXMgYXQgb25jZSB0cnkgdG8gcHV0IAp0aGUgb3RoZXIgc2lkZSwgYW5kIHRoaXMgYm90aCB3aXRoIHJlZ2FyZCAKdG8gbmF0aW9ucyBhbmQgaW5kaXZpZHVhbHMuIENvdW50ZXJiYWxhbmNlIAp0aGUgZXZpbCBieSBzcGVha2luZyB0aGUgZ29vZOKAlG5vdCB0byBnaXZlIAphIGZhbHNlIGltcHJlc3Npb24sIGJ1dCB0byBnaXZlIHRoZSBiZXN0IApwb3NzaWJsZSBhc3BlY3Qgb3IgaW50ZXJwcmV0YXRpb24gb2YgdGhlIApmYWN0cy4gT3VyIHdvcmsgaXMgdG8gbWFrZSB0aGUgbWFjaGluZSAKcnVuIHNtb290aGx5LCBhbmQgdG8gbmV1dHJhbGlzZSB0aGUgZnJpY3Rpb24uIApPdXIgYWltIGlzIHRvIGJlIGEgdW5pdGVkIHdob2xlIGFzIGEgClNvY2lldHksIGFuZCB0byBoZWxwIHRvd2FyZHMgaGFybW9ueSBpbiAKdGhlIG91dHNpZGUgd29ybGQuIFRoZSBzY2hlbWUgaXNfIGdyZWF0LCAKdGhlIG9wcG9ydHVuaXR5IGdsb3Jpb3VzOyBzaGFsbCB3ZSB0YWtlIGl0PyAKCllldCBiZXdhcmUgbGVzdCB5b3Ugc2hvdWxkIG1ha2UgdGhlIAppZGVhIG9mIHByZXBhcmluZyB5b3Vyc2VsZiBmb3IgZ3JhbmQgd29yayAKaW4gdGhlIGZ1dHVyZSBhbiBleGN1c2UgZm9yIG5lZ2xlY3RpbmcgdGhlIAptaW5vciBvcHBvcnR1bml0aWVzIG9mIGV2ZXJ5LWRheSBsaWZlLiBBIApnb29kIGV4YW1wbGUgb2Ygd2hhdCBJIG1lYW4gaXMgb2ZmZXJlZCAKYnkgYSBsZXR0ZXIgd2hpY2ggSSByZWNlbnRseSByZWNlaXZlZCwgaW4gCndoaWNoIHRoZSB3cml0ZXIgc2F5cyB0aGF0IGhlIGZpbmRzIGhpbXNlbGYgCmluIHRoZSBwb3NpdGlvbiBvZiBoYXZpbmcgdG8gdGVhY2ggYSBUaGVvLSAKc29waGljYWwgQnJhbmNoLCBhbmQgdGhhdCBoZSBmZWVscyBpdCAqYSAKZ3JlYXQgcmVzcG9uc2liaWxpdHksIG9mIHdoaWNoIGhlIGNhbm5vdCAKdGhpbmsgaGltc2VsZiB3b3J0aHkgYmVjYXVzZSBoaXMga25vd2xlZGdlIAppcyBhdCBwcmVzZW50IHNvIGltcGVyZmVjdC4gTm93IGluIHJlcGx5IAp0byB0aGlzIEkgc2hhbGwgc2F5OiAKCgo5NDAgQURZQVIgVEFMS1MgCgoKRG8gbm90IGJlIGluIHRoZSBsZWFzdCB0cm91YmxlZCBhYm91dCAKeW91ciBwb3NpdGlvbiB0b3dhcmRzIHlvdXIgQnJhbmNoLiBBcy0gCnN1cmVkbHkgaXQgaXMgYSByZXNwb25zaWJpbGl0eSB0byB0ZWFjaCwgCmJ1dCBvbiB0aGUgb3RoZXIgaGFuZCBpdCBpcyBhXyB2ZXJ5IApncmVhdCBwcml2aWxlZ2UuIFRoaW5rIG9mIGl0IHJhdGhlciBpbi0gCnRoaXMgd2F5LCB0aGF0IGhlcmUgYXJlIGEgbnVtYmVyIG9mIApodW5ncnkgc291bHMsIGFuZCBUaG9zZSB3aG8gc3RhbmQgYmVoaW5kIApoYXZlIGJlZW4gc28ga2luZCB0byB5b3UgYXMgdG8gZ2l2ZSB5b3UgCnRoZSBvcHBvcnR1bml0eSBvZiBiZWluZyB0aGUgY2hhbm5lbCB0aHJvdWdoIAp3aGljaCB0aGVzZSBjYW4gYmUgZmVkLiBZb3UgaGF2ZSB0aGUgCmJyb2FkIHByaW5jaXBsZXMgb2YgdGhlIHRlYWNoaW5nIGNsZWFybHkgaW4gCm1pbmQsIGFuZCB5b3VyIG93biBjb21tb24tc2Vuc2Ugd2lsbCAKa2VlcCB5b3UgZnJvbSBnb2luZyBmYXIgd3JvbmcgaW4gZGV0YWlscy4gCkkgYWRtaXJlIHlvdXIgZXh0cmVtZSBjb25zY2llbnRpb3VzbmVzcywgCmJ1dCBpZiB5b3Uga2VlcCB0aGVzZSBtYWluIHByaW5jaXBsZXMgc3RlYWRpLSAKbHkgYmVmb3JlIHlvdXIgcHVwaWxzLCB5b3UgYXJlIHZlcnkgbGl0dGxlIApsaWtlbHkgdG8gZ28gd3JvbmcgaW4geW91ciB0ZWFjaGluZy4gCgpXZSBhbGwgaGF2ZSB0aGUgcmVzcG9uc2liaWxpdHkgb2Ygd2hpY2ggCnlvdSBzcGVhaywgYW5kIHRob3NlIG9mIHVzIHdobyBoYXZlIAp0byB3cml0ZSB0aGUgYm9va3MgYW5kIGdpdmUgdGhlIF9sZWMtIAp0dXJlcyBmZWVsIGl0IGZhciBtb3JlIGFjdXRlbHkgdGhhbiB5b3UgY2FuIAppbWFnaW5lLiBJbmRlZWQgd2UgaGF2ZSBzb21ldGltZXMgYmVlbiAKdG9sZCBieSBmcmVuZHMgdGhhdCB3ZSBvdWdodCB0byBoYXZlIAphdHRhaW5lZCBhZGVwdHNoaXAgYmVmb3JlIHdlIHdyb3RlIGFueSAKYm9va3MsIHNvIHRoYXQgaXQgbWlnaHQgYmUgcXVpdGUgY2VydGFpbiAKdGhhdCB0aGVyZSBzaG91bGQgYmUgbm8gbWlzdGFrZXMgaW4gdGhlbS4gCkkgY2FuIG9ubHkgc2F5IHRoYXQgd2UgZGVjaWRlZCB0byBzaGFyZSAKb3VyIGltcGVyZmVjdCBrbm93bGVkZ2Ugd2l0aCBvdXIgYnJvdGhlcnMsIAoKCkhFTFBJTkcgVEhFIFdPUkxEIFFBXSAKCgpldmVuIHdoaWxlIHdlIHN0aWxsIGhhZCB2ZXJ5IG11Y2ggdG8gYWMtIApxdWlyZTsgYW5kIEkgdGhpbmsgdGhhdCB0aGUgcmVzdWx0IGhhcyAKanVzdGlmaWVkIG91ciBkZWNpc2lvbi4gSWYgd2UgaGFkIHdhaXRlZCAKdW50aWwgd2UgYXR0YWluZWQgYWRlcHRzaGlwLCBpdCBpcyB0cnVlIHRoYXQgCm91ciBib29rcyB3b3VsZCBoYXZlIGJlZW4gcGVyZmVjdOKAlGFuZCAKdGhleSBhcmUgdmVyeSBmYXIgZnJvbSBiZWluZyBwZXJmZWN0IG5vdyAK4oCUYnV0IHRoZW4geW91IHNlZSB5b3Ugd291bGQgYWxsIGhhdmUgCmhhZCB0byB3YWl0IGEgdGhvdXNhbmQgeWVhcnMgb3Igc28gZm9yIAp0aGVtLCB3aGljaCB3b3VsZCBoYXZlIG1hZGUgYSBjb25zaWRlci0gCmFibGXigJkgZGlmZmVyZW5jZSB0byB0aGUgd29yayBvZiB0aGUgU29jaWV0eSAKaW4gdGhlIHByZXNlbnQgY2VudHVyeS4gSXQgc2VlbXMgdG8gbWUgCnRoYXQgdGhlIHByb2JsZW0gdGhhdCBoZXMgYmVmb3JlIHlvdSBpcyBhbiAKZXhhY3RseSBzaW1pbGFyIG9uZS4gWW91IGFsc28gbWh0IHJlZnJhaW4gCmZyb20gdGVhY2hpbmcgdW50aWwgeW91IGtuZXcgZXZlcnl0aGluZzsgCmJ1dCB3aGF0IHdvdWxkIGJlY29tZSBvZiB5b3VyIEJyYW5jaCBpbiAKCgp0aGUgbWVhbnRpbWUgciAKCgpIZXZlbWEgdHVuIFdvcm5wIAoKLCAKXyBPbmUgb2YgdGhlIGZpcnN0IHF1YWxpZmljYXRpb25zIHdoaWNoIGFyZSAK4oCYcmVxdWlyZWQgZm9yIHRoZSB0cmVhZGluZyBvZiB0aGUgUGF0aCBnaXMgCiEgZ2luZ2xlLW1pbmRlZG5lc3Mgb3Igb25lLXBvaW50ZWRuZXNzLiBFdmVuIAonIHdvcmxkbHkgbWVuIHN1Y2NlZWQgYmVjYXVzZSB0aGV5IGFyZSBvbmUtIApwb2ludGVkLCBhbmQgd2UgY2FuIGxlYXJuIGZyb20gdGhlbSB0aGUgCnZhbHVlIG9mIGRldGVybWluYXRpb24gb24gb3VyIG93biBsaW5lLiBPdXIgCmdvYWwgaXMgbm90IHNvIHRhbmdpYmxlIGFzIHRoZWlycywgc28gd2UgCgozMSAKCgo5NDkyIEFEWUFSIFRBTEtTIAoKCmhhdmUgbW9yZSBkaWZmaWN1bHR5IGluIGtlZXBpbmcgdGhlIG9uZS0gCnBvaW50ZWQgYXR0aXR1ZGUgb2YgbWluZDsgYnV0IGluIEluZGlhIHRoZSAKaW1wb3J0YW5jZSBvZiB0aGUgdW5zZWVuIGlzIG1vcmUgZWFzaWx5IApyZWFsaXNlZCB0aGFuIGluIHRoZSBXZXN0LiBJdCBpcyBnb29kIHRvIApzZWVrIHRoZSBjb21wYW55IG9mIHRob3NlIHdobyBhcmUgbW9yZSAKYWR2YW5jZWQsIHRvIHdob20gdGhlIHJlYWxpdGllcyBvZiB0aGUgClBhdGggYXJlIGNvbnN0YW50bHkgcHJlc2VudDsgYWxzbyB0byByZWFkIAphbmQgaGVhciBhbmQgdGhpbmsgYWJvdXQgb3VyIF8gcHVycG9zZSAKZnJlcXVlbnRseSwgYW5kIHVud2F2ZXJpbmdseSB0byBwcmFjdGlzZSB0aGUgCnZpcnR1ZXMgYnkgd2hpY2ggYWxvbmUgdGhlIHBlcmZlY3Qga25vdy0gCmxlZGdlIGNhbiBjb21lIHRvIHVzLiAKClRoaXMgaXMgYW4gYWdlIG9mIGh1cnJ5IGFuZCBzY3Vycnk7IHRoZSAKdGVuZGVuY3kgaXMgZm9yIHBlb3BsZSB0byBkbyBhIGxpdHRsZSBvZiAKbWFueSB0aGluZ3MsIGJ1dCBub3RoaW5nIHRob3JvdWdobHnigJR0byAKZmx1dHRlciBmcm9tIG9uZSB0aGluZyB0byBhbm90aGVyLiBObyBtYW4gCm5vdyBkZXZvdGVzIGhpcyBsaXRlIHRvIGEgbWFzdGVycGllY2UsIGFzIAp3YXMgc28gb2Z0ZW4gZG9uZSBpbiB0aGUgTWlkZGxlIEFnZXMgaW4gCkt1cm9wZSwgb3IgaW4gb2xkIGRheXMgaW4gSW5kaWEuIAoKT2NjdWx0aXNtLiBjaGFuZ2VzIGEgbWFu4oCZcyBsaWZlIGluIG1hbnkgCndheXMsIGJ1dCBpbiBub25lIG1vcmUgdGhhbiBpbiB0aGlzOyBpdCAKbWFrZXMgaGltIGFic29sdXRlbHkgb25lLXBvaW50ZWQuIE9mIGNvdXJzZSAKSSBkbyBub3QgbWVhbiB0aGF0IGl0IGNhdXNlcyBoaW0gdG8gCm5lZ2xlY3QgYW55IGR1dHkgdGhhdCBoZSB1c2VkIHRvIGRvOyBvbiAKdGhlIGNvbnRyYXJ5LCB0aGUgbmV2ZXItY2Vhc2luZyB3YXRjaCB0byAKZnVsZmlsIGV2ZXJ5IGR1dHkgaXMgaXRzIGZpcnN0IHByZXNjcmlwLSAKdGlvbi4gQnV0IGl0IGdpdmVzIGhpbSBhIGtleS1ub3RlIG9mIGxpZmUgCndoaWNoIDFzIGFsd2F5cyBzb3VuZGluZyBpbiBoaXMgZWFycywgd2hpY2ggCmhlIG5ldmVyIGZvcmdldHMgZm9yIGFuIGluc3RhbnTigJR0aGUga2V5LSAKCgpIRUxQSU5HIFRIRSBXT1JMRCAyNDMgCgoKbm90ZSBvZiBoZWxwZnVsbmVzcy4gV2h5PyBCZWNhdXNlIGhlIGxlYXJucyAKd2hhdCBpcyB0aGUgcGxhbiBvZiB0aGUgTG9jb3MsIGFuZCB0cmllcyAKdG8gY28tb3BlcmF0ZSBpbiBpdC4gCgpUaGlzIGltdm9sdmVzIG1hbnkgbGluZXMgb2YgYWN0aW9uLiBUbyAK4oCcYmUgYWJsZSB0byBoZWxwIGVmZmVjdGl2ZWx5IGhlIG11c3QgbWFrZSAKaGltc2VsZiBmaXQgdG8gaGVscDsgaGVuY2UgaGUgbXVzdCB1bmRlci0gCnRha2UgdGhlIG1vc3QgY2FyZWZ1bCBzZWxmLXRyYWltaW5nLCB0aGUgCmVsaW1pbmF0aW9uIG9mIGV2aWwgcXVhbGl0aWVzIGZyb20gaGltc2VsZiwgCnRoZSBkZXZlbG9wbWVudCBvZiBnb29kIG9uZXMuIEFsc28gaGUgCm11c3QgbWFpbnRhaW4gYSBjb25zdGFudCB3YXRjaGZ1bG5lc3MgZm9yIApvcHBvcnR1bml0aWVzIHRvIGhlbHAuIAoKT25lIHNwZWNpYWwgbWV0aG9kIG9mIGhlbHBpbmcgdGhlIHdvcmxkIApoZXMgcmVhZHkgdG8gdGhlIGhhbmQgb2YgbWVtYmVycyBvZiBvdXIgClNvY2lldHnigJR0aGF0IG9mIHNwcmVhZGluZyBUaGVvc29waGljIHRydXRoLiAKV2UgaGF2ZSBubyByaWdodCBhbmQgbm8gZGVzaXJlIHRvIGZvcmNlIApvdXIgaWRlYXMgb24gYW55IG9uZSwgYnV0IGl0IDFzIG91ciBkdXR5IAphbmQgb3VyIHByaXZpbGVnZSB0byBnaXZlIHBlb3BsZSB0aGUgb3AtIApwb3J0dW5pdHkgb2Yga25vd2luZyB0aGUgcmVhbCBleHBsYW5hdGlvbiAKb2YgdGhlIHByb2JsZW1zIG9mIGhmZS4gSWYgd2hlbiB0aGUgd2F0ZXIgCm9mIGxpZmUgaXMgb2ZmZXJlZCwgYSBtYW4gd2lsbCBub3QgZHJpbmssIAp0aGF0IGlzIGhpcyBvd24gYWZmYWlyOyBidXQgYXQgbGVhc3Qgd2UgCnNob3VsZCBzZWUgdGhhdCBub25lIHBlcmlzaGVzIHRocm91Z2ggaWctIApub3JhbmNlIG9mIHRoZSBleGlzdGVuY2Ugb2YgdGhhdCB3YXRlci4gCgpXZSBoYXZlIHRoZW4gdGhpcyBkdXR5IG9mIHNwcmVhZGluZyB0aGUgCnRydXRoLCBhbmQgbm90aGluZyBzaG91bGQgYmUgYWxsb3dlZCB0byAKaW50ZXJmZXJlIHdpdGggaXQuIFRoaXMgaXMgdGhlIHdvcmsgdGhhdCAKYXMgYSBTb2NpZXR5IHdlIGhhdmUgdG8gZG8sIGFuZCB3ZSBtdXN0IApyZW1lbWJlciB0aGF0IHRoZSBkdXR5IGlzIGJpbmRpbmcgdXBvbiAKCgoyNCw0LCBBRFlBUiBUQUxLUyAKCgplYWNoIG9uZSBvZiB1cy4gT3VyIG1pbmRzIG11c3QgYmUgZmlsbGVkIAp3aXRoIGl0LCB3ZSBtdXN0IGJlIGNvbnN0YW50bHkgdGhpbmtpbmcgCmFuZCBwbGFubmluZyBmb3IgaXQsIHNlaXppbmcgZXZlcnkgb3Bwb3J0dW4tIAppdHkgdGhhdCBvZmZlcnMuIEl0IDFzIG5vdCBmb3IgdXMgdG8gZXhjdXNlIApvdXJzZWx2ZXMgYmVjYXVzZSBzb21lIG90aGVyIG1lbWJlciBzZWVtcyAKdG8gYmUgZG9pbmcgbm90aGluZzsgdGhhdCBpcyBoaXMgYnVzaW5lc3MsIAphbmQgd2UgYXJlIGluIG5vIHdheSBjb25jZXJuZWQgaW4gaXQ7IGJ1dCAKaWYgd2Ugb3Vyc2VsdmVzIG5lZ2xlY3QgdG8gZG8gb3VyIHZlcnkgYmVzdCwgCndlIGFyZSBmYWlsbWcgaW4gb3VyIGR1dHkuIEl0IHdhcyBub3QgdG8gCmlsbHVtaW5lIG91ciBvd24gcGF0aCBvbmx5IHRoYXQgdGhpcyBnbG9yaW91cyAKaGdodCBjYW1lIHRvIHVzLCBidXQgdGhhdCB3ZSBhbHNvIGluIG91ciAKdHVybiBtaWdodCBiZSBsaGdodC1iZWFyZXJzIHRvIG91ciBzdWZmZXJpbmcgCmJyb3RoZXJzLiAKCgpDcml0aWNpc20gCgoKSWYgd2Ugd2lzaCB0byBtYWtlIGFueSBwcm9ncmVzcyBpbiBvYy0gCmN1bHRpc20sIHdlIG1pc3QgbGVhcm4gdG8gbWluZCBvdXIgb3duIApidXNpbmVzcyBhbmQgbGV0IG90aGVyIHBlb3BsZSBhbG9uZS4gVGhleSAKaGF2ZSB0aGVpciByZWFzb25zIGFuZCB0aGVpciBsaW5lcyBvZiB0aG91Z2h0IAp3aGljaCB3ZSBkbyBub3QgdW5kZXJzdGFuZC4gVG8gdGhlaXIgb3duIApNYXN0ZXIgdGhleSBzdGFuZCBvciBmYWxsLiBPbmNlIG1vcmUsIHdlIApoYXZlIG91ciB3b3JrIHRvIGRvLCBhbmQgd2UgZGVjbGluZSB0byBiZSAKZGl2ZXJ0ZWQgZnJvbSBpdC4gV2UgYXVzdCBsZWFybiBjaGFyaXR5IGFuZCAKdG9sZXJhbmNlLCBhbmQgcmVwcmVzcyB0aGUgbWFkIGRlc2lyZSB0byBiZSAKYWx3YXlzIGZpbmRpbmcgZmF1bHQgd2l0aCBzb21lIG9uZSBlbHNlLiAKCgpPUklUSUNJU00gREFTIAoKCkl0IHcgYSBtYWQgZGVzaXJlLCBhbmQgaXQgZG9taW5hdGVzIG1vZGVybiAKaGZl4oCUdGhpcyBzcGlyaXQgb2YgY3JpdGljaXNtLiBIdmVyeSBvbmUgCndhbnRzIHRvIGludGVyZmVyZSB3aXRoIHNvbWVib2R5IGVsc2XigJlzIApkdXR5LCBpbnN0ZWFkIG9mIGF0dGVuZGluZyB0byBoaXMgb3duOyBldmVyeSAKb25lIHRoaW5rcyBoZSBjYW4gZG8gdGhlIG90aGVyIG1hbuKAmXMgd29yayAKYmV0dGVyIHRoYW4gaXQgaXMgYmVpbmcgZG9uZS4gV2Ugc2VlIGl0IAppbiBwb2xpdGljcywgaW4gcmVsaWdpb24sIGluIHNvY2lhbCBsaWZlLiBGb3IgCmV4YW1wbGUsIHRoZSBvYnZpb3VzIGR1dHkgb2YgYSBHb3Zlcm5tZW50IAppcyB0byBnb3Zlcm4sIGFuZCB0aGUgZHV0eSBvZiBpdHMgcGVvcGxlIGlzIHRvIApiZSBnb29kIGNpdGl6ZW5zIGFuZCB0byBtYWtlIHRoYXQgd29yayAKb2YgZ292ZXJubWVudCBlYXN5IGFuZCBlZmZlY3RpdmUuIEJ1dCBpbiAKdGhlc2UgZGF5cyBwZW9wbGUgYXJlIHNvIGVhZ2VyIHRvIHRlYWNoIAp0aGVpciBHb3Zlcm5tZW50cyBob3cgdG8gZ292ZXJuIHRoYXQgdGhleSAKZm9yZ2V0IGFsbCBhYm91dCB0aGVpciBvd24gcHJpbWFyeSBkdXR5IApvZiBiZW1nIGdvb2QgY2l0aXplbnMuIE1lbiB3aWxsIG5vdCByZWFsaXNlIAp0aGF0IGlmIHRoZXkgd2lsbCBidXQgZG8gdGhlaXIgZHV0aWVzLCBrYXJtYSAKd2lsbCBsb29rIGFmdGVyIHRoZSDigJhuZ2h0c+KAmSBhYm91dCB3aGljaCAKdGhleSBhcmUgc28gY2xhbW9yb3VzLiAKCkhvdyBjb21lcyB0aGlzIHNwaXJpdCBvZiBjcml0aWNpc20gdG8gYmUgCnNvIGdlbmVyYWwgYW5kIHNvIHNhdmFnZSBhdCB0aGlzIHN0YWdlIG9mIAp0aGUgd29ybGTigJlzIGhpc3RvcnkgciBMaWtlIG1vc3Qgb3RoZXIgZXZpbHMsIAppdCBpZ3MgdGhlIGV4Y2VzcyBvZiBhIGdvb2QgYW5kIF8gbmVjZXNzYXJ5IApxdWFsaXR5LiBJbiB0aGUgY291cnNlIG9mIGV2b2x1dGlvbiB3ZSBoYXZlIAphcnJpdmVkIGF0IHRoZSBmaWZ0aCBzdWItcmFjZSBvZiB0aGUgZmlmdGggCnJvb3QtcmFjZS4gMSBtZWFuIHRoYXQgdGhhdCByYWNlIGlzIHRoZSAKbGF0ZXN0IHlldCBkZXZlbG9wZWQsIHRoYXQgaXRzIHNwaXJpdCBpcyAKZG9taW5hbnQgaW4gdGhlIHdvcmxkIGp1c3Qgbm93LCBhbmQgdGhhdCAKZXZlbiB0aG9zZSB3aG8gZG8gbm90IGJlbG9uZyB0byBpdCBhcmUgCgoKMjQ2IEFEWUFSIFRBTEtTIAoKCm5lY2Vzc2FyaWx5IG11Y2ggaW5mbHVlbmNlZCBieSB0aGF0IHNwaXJpdC4gCgpOb3cgZWFjaCByYWNlIGhhcyBpdHMgb3duIHNwZWNpYWwgbGVzc29ucyAKdG8gbGVhcm4sIGl0cyBvd24gc3BlY2lhbCBxdWFsaXR5IHRvIHVuZm9sZC4gClRoZSBxdWFsaXR5IG9mIHRoZSBmaWZ0aC1yYWNlIGlzIHdoYXQgaXMgCnNvbWV0aW1lcyBjYWxsZWQgbWFuYXPigJR0aGUgdHlwZSBvZiBpbnRlbC0gCmxlY3QgdGhhdCBkaXNjcmltaW5hdGVzLCB0aGF0IG5vdGVzIHRoZSBkaWZmZXItIAplbmNlcyBiZXR3ZWVuIHRoaW5ncy4gV2hlbiBpdCBpc18gcGVyZmVjdGx5IApkZXZlbG9wZWQsIG1lbiB3aWxsIG5vdGUgdGhlc2UgZGlmZmVyZW5jZXMgCmNhbG1seSwgc29sZWx5IGZvciB0aGUgcHVycG9zZSBvZiB1bmRlcnN0YW5kLSAKaW5nIHRoZW0gYW5kIGp1ZGdpbmcgd2hpY2ggaXMgYmVzdC4gQnV0IApub3csIGluIHRoaXMgc3RhZ2Ugb2YgaGFsZi1kZXZlbG9wbWVudCBtb3N0IApwZW9wbGUgbG9vayBmb3IgZGlmZmVyZW5jZXMgZnJvbSB0aGVpciBvd24gCnBvaW50IG9mIHZpZXcgbm90IGluIG9yZGVyIHRvIHVuZGVyc3RhbmQgCnRoZW0gYnV0IGluIG9yZGVyIHRvIG9wcG9zZSB0aGVt4oCUb2Z0ZW4gCnZpb2xlbnRseSB0byBwZXJzZWN1dGUgdGhlbS4gSXQgaXMgc2ltcGx5IAp0aGUgcG9pbnQgb2YgdmlldyBvZiB0aGUgaWdub3JhbnQgYW5kIAp1bmV2b2x2ZWQgbWFuLCB3aG8gMSBmdWxsIG9mIGludG9sZXJhbmNlIAphbmQgc2VsZi1jb25jZWl0LCBhYnNvbHV0ZWx5IHN1cmUgdGhhdCBoZSBpcyAKcmlnaHQgKHBlcmhhcHMgaGUgbWF5IGJlIHVwIHRvIGEgY2VydGFpbiAKcG9pbnQpIGFuZCB0aGF0IGV2ZXJ5Ym9keSBlbHNlIHRoZXJlZm9yZSAKbXVzdCBiZSBlbnRpcmVseSB3cm9uZ+KAlHdoaWNoIGRvZXMgbm90IApmb2xsb3cuIFJlbWVtYmVyIHdoYXQgT2x2ZXIgQ3JvbXdlbGwgCnNhaWQgdG8gaGlzIGNvdW5jaWw6IOKAmOKAnCBCcmV0aHJlbiwgSSBiZXNlZWNoIAp5b3UgaW4gdGhlIHNhY3JlZCBuYW1lIG9mIHRoZSBDaHJpc3QgdG8gCnRoaW5rIGl0IHBvc3NpYmxlIHRoYXQgeW91IG1heSBzb21ldGltZXMgCm1pc3Rha2UgIeKAneKAmSDigJTigJQgCgpXZSB0b28gbXVzdCBkZXZlbG9wZSB0aGUgY3JpdGljYWwgZmFjdWx0eSA7IApidXQgd2Ugc2hvdWxkIGNyaXRpY2lzZS4gb3Vyc2VsdmVzLCBub3Qgb3RoZXJzLiAKCgpDUklUSUNJU00gOTQ3IAoKClRoZXJlIGFyZSBhbHdheXMgdHdvIHNpZGVzIHRvIGV2ZXJ5IApxdWVzdGlvbjsgZ2VuZXJhbGx5IG1vcmUgdGhhbiB0d28uIEtyaXRlaW4gCm1lYW5zIHRvIGp1ZGdlOyB0aGVyZWZvcmUsIGNyaXRpY2lzbSBpcyB1c2UtIApsZXNzIGFuZCBjYW4gb25seSBkbyBoYXJtIHVubGVzcyBpdCBpcyAKYWJzb2x1dGVseSBjYWxtIGFuZCBqdWRpY2lhbC4gSXQgaXMgbm90IGEgCm1hZCBhdHRhY2sgdXBvbiBhbiBvcHBvbmVudCwgYnV0IGEgcXVpZXQgCnVucHJlanVkaWNlZCB3ZWlnaGluZyBvZiByZWFzb25zIGZvciBhbmQgCmFnYWluc3QgYSBjZXJ0YWluIG9waW5pb24gb3IgYSBjZXJ0YWluIGNvdXJzZSAKb2YgYWN0aW9uLiBXZSBtYXkgZGVjaWRlIGluIG9uZSB3YXksIGJ1dCAKd2UgbXVzdCByZWNvZ25pc2UgdGhhdCBhbm90aGVyIG1hbiBvZiAKZXF1YWwgaW50ZWxsZWN0IG1heSBlbXBoYXNpc2UgYW5vdGhlciBhcy0gCnBlY3Qgb2YgdGhlIHF1ZXN0aW9uLCBhbmQgdGhlcmVmb3JlLCBkZWNpZGUgCnF1aXRlIG90aGVyd2lzZS4gQW5kIHlldCBpbiBzbyBkZWNpZGluZyBoZSAKbWF5IGJlIGp1c3QgYXMgZ29vZCwganVzdCBhcyB3aXNlLCBqdXN0IGFzIApob25lc3QgYXMgd2Ugb3Vyc2VsdmVzLiAKCllldCBob3cgZmV3IHJlY29nbmlzZSB0aGF0OyBob3cgZmV3IApyYWJpZCBwcm90ZXN0YW50cyByZWFsbHkgYmVsaWV2ZSBDYXRob2xpY3MgdG8gCmJlIGdvb2QgbWVuOyBob3cgZmV3IGNvbnZpbmNlZCByZWQtaG90IApyYWRpY2FscyByZWFsbHkgYmVsaWV2ZSB0aGF0IGFuIG9sZCBUb3J5IApzcXVpcmUgbWF5IGJlIGp1c3QgYXMgZ29vZCBhbmQgZWFybmVzdCBhIAptYW4gYXMgdGhlbXNlbHZlcywgdHJ5aW5nIGhvbmVzdGx5IHRvIGRvIAp3aGF0IGhlIHRoaW5rcyBoaXMgZHV0eSEgCgpJZiBhIG1hbiBjb21lcyB0byBhIGRlY2lzaW9uIGRpZmZlcmVudCBmcm9tIApvdXIgb3duIHdlIG5lZWQgbm90IHByZXRlbmQgdG8gYWdyZWUgd2l0aCAKaGltLCBidXQgd2UgbXVzdCBnaXZlIGhpbSBjcmVkaXQgZm9yIGdvb2QgCmludGVudGlvbnMuIE9uZSBvZiB0aGUgd29yc3QgZmVhdHVyZXMgb2YgCm1vZGVybiBsaWZlKiBpcyBpdHMgZWFnZXIgcmVhZGluZXNzIHRvIGJlbGlldmUgCmV2aWzigJRpdHMgaGFiaXQgb2YgZGVsaWJlcmF0ZWx5IHNlZWtpbmcgb3V0IAoKCjJRQTggQURZQVIgVEFMS1MgCgoKdGhlIHdvcnN0IGNvbmNlaXZhYmxlIGNvbnN0cnVjdGlvbiB0aGF0IGNhbiAKYmUgcHV0IHVwb24gZXZlcnl0aGluZy4gQW5kIHRoaXMgYXR0aXR1ZGUgCmlzIHN1cmVseSBhdCBpdHMgdmVyeSB3b3JzdCB3aGVuIGFkb3B0ZWQgCnRvd2FyZHMgdGhvc2Ugd2hvIGhhdmUgaGVscGVkIHVzLCB0byB3aG9tIAp3ZSBvd2UgdGhhbmtzIGZvciBrbm93bGVkZ2Ugb3IgaW5zcGlyYS0gCnRpb24gcmVjZWl2ZWQuIFJlbWVtYmVyIHRoZSB3b3JkcyBvZiB0aGUgCk1hc3Rlcjog4oCY4oCcSW5ncmF0aXR1ZGUgaXMgbm90IG9uZSBvZiBvdXIgCnZpY2VzLuKAnSBJdCBpcyBhbHdheXMgYSBtaXN0YWtlIHRvIHJ1c2ggCm1hZGx5IGludG8gY3JpdGljaXNtIG9mIHRob3NlIHdobyBrbm93IAptb3JlIHRoYW4gd2U7IGl0IGlzIG1vcmUgc2VlbWx5IHRvIHdhaXQgCmFuZCB0aGluayBtYXR0ZXJzIG92ZXIsIHRvIHdhaXQgYW5kIHNlZSAKd2hhdCB0aGUgZnV0dXJlIGJyaW5ncyBmb3J0aC4gQXBwbHkgdGhlIAp0ZXN0IG9mIHRpbWUgYW5kIHJlc3VsdDsg4oCcQnkgdGhlaXIgZnJ1aXRzIAp5ZSBzaGFsbCBrbm93IHRoZW0u4oCdIExldCB1cyBtYWtlIGEgcnVsZSAKdG8gdGhpbmsgdGhlIGJlc3Qgb2YgZXZlcnkgbWFuOyBsZXQgdXMgCmRvIG91ciB3b3JrIGFuZCBfID1JbGVhdmUgb3RoZXJzIGZyZWUgdG8gCmRvIHRoZWlycy4gCgoKUFJFSlVESUNFIAoKCkJld2FyZSBvZiB0aGUgYmVnaW5uaW5ncyBvZiBzdXNwaWNpb24gOiAKaXQgd2lsbCBkaXN0b3J0IGV2ZXJ5dGhpbmcuIEkgaGF2ZSBzZWVuIGl0IApjb21lIGJldHdlZW4gZnJpZW5kcyBhbmQgbm90aWNlZCBob3cgYSAKbGl0dGxlIHN1c3BpY2lvbiBzb29uIGdyb3dzIGludG8gYV8gZ2lhbnQgCm1pc3VuZGVyc3RhbmRpbmcuIEV2ZXJ5IGhhcm1pc3Mgd29yZCBpcyAKZGlzdG9ydGVkLCBhbmQgbWlzdGFrZW4gdG8gYmUgdGhlIGV4cHJlc3Npb24gCgoKJyBQUkVKVURJQ0ggOS40OSAKCgpvZiBzb21lIHVua2luZCBvcuKAmSBpbXByb3BlciBtb3RpdmUsIAp3aGlsZSBhbGwgdGhlIHRpbWUgdGhlIHNwZWFrZXIgaXMgdXR0ZXJseSAKdW5jb25zY2lvdXMgb2YgdGhlIHN1c3BpY2lvbi4gSXQgaXMgdGhlIApzYW1lIHdoZW4gb3BpbmlvbnMgZGlmZmVyIGFib3V0IGJvb2tzIG9yIArigJhyZWxpZ2lvbjsgYSBzbGlnaHQgwqtkaWZmZXJlbmNlIG9mIG9waW5pb24gaXMgCmZvc3RlcmVkIGJ5IGR3ZWxsaW5nIHVwb24gYWxsIHRoYXQgdGVsbHMgb24gCm9uZeKAmXMgb3duIHNpZGUgYW5kIGFnYWluc3QgdGhlIG90aGVyIHNpZGUsIAp1bnRpbCB0aGUgcmVzdWx0IGlzIGFuIGFic3VyZGx5IGRpc3RvcnRlZCAKdmlldy4gT25lIGZpbmRzIGl0IGFnYWluIHdpdGggY29sb3VyIHByZS0gCmp1ZGljZSwgYWx0aG91Z2ggdGhvc2Ugbm93IHdlYXJpbmcgd2hpdGUgCmJvZGllcyBoYXZlIHdvcm4gYnJvd24gb25lcyBhbmQgdmljZSAKdmVyc2EsIGFuZCB0aGUgaGFiaXRzIG9mIG9uZSBoYXZl4oCZIGJlZW4gCm9yIHdpbGwgYmUgdGhlIGhhYml0cyBvZiB0aGUgb3RoZXIuIEJyb3RoZXItIApob29kIG1lYW5zIHRoZSBnZXR0aW5nIHJpZCBvZiBwcmVqdWRpY2VzOyAKa25vd2xlZGdlIG9mIHRoZSBmYWN0IG9mIHJlaW5jYXJuYXRpb24gCm91Z2h0IHRvIGhlbHAgdXMgdG8gb3ZlcmNvbWUgb3VyIGxpbWl0YS0gCnRpb25zIGFuZCB1bmNoYXJpdGFibGVuZXNzLiAKCldlIHdobyBhcmUgc3R1ZGVudHMgb2YgdGhlIGhpZ2hlciAKaGZlIG11c3QgcmlzZSBhYm92ZeKAmSB0aGVzZSBwcmVqdWRpY2VzLiBJdCAKaXMgYSBkaWZmaWN1bHQgdGFzaywgYmVjYXVzZSB0aGV5IGFyZSBpbi0gCmdyYWluZWTigJRwcmVqdWRpY2VzIG9mIHJhY2UsIG9mIGNhc3RlLCBvZiAKcmVsaWdpb247IGJ1dCB0aGV5IG11c3QgYWxsIGJlIHJvb3RlZCBvdXQsIApiZWNhdXNlIHRoZXkgcHJldmVudCBjbGVhciBzaWdodCBhbmQgdHJ1ZSAKanVkZ21lbnQuIFRoZXkgYXJlIGxpa2UgY29sb3VyZWQgZ2xhc3PigJQgCnN0aWxsIG1vcmUgbGtlIGNoZWFwLCBpbXBlcmZlY3QgZ2xhc3M7IGV2ZXJ5LSAKdGhpbmcgc2VlbiB0aHJvdWdoIHRoZW0gaXMgZGlzdG9ydGVkLCBvZnRlbiAKc28gbXVjaCBzb0BhcyB0byBsb29rIGVudGlyZWx5IGRpZmZlcmVudCBmcm9tIAoKCndoYXQgaXQgcmVhbGx5IDFzLiBCZWZvcmUgd2UgY2FuIGp1ZGdlIGFuZCAKMzIgCgoKMjUwIEFEWUFSIFRBTEtTIAoKCmRpc2NyaW1pbmF0ZSB3ZSBhaXRzdCBzZWUgY2xlYXJseS4gCgpbdCBpcyBhbHdheXMgdmVyeSBlYXN5IHRvIGF0dHJpYnV0ZSBzb21lIApldmlsIG1vdGl2ZSB0byBvdGhlcnMgd2hvbSB3ZSBoYXZlIGFsbG93LSAKZWQgb3Vyc2VsdmVzIHRvIGRpc2xpa2UsIGFuZCB0byBkaXNjb3ZlciAKc29tZSBldmlsIGV4cGxhbmF0aW9uIGZvciB0aGVpciBhY3RzLiBUaGlzIAp0ZW5kZW5jeSBmb3JtcyBhIHZlcnkgc2VyaW91cyBpbXBlZGltZW50IAppbiB0aGUgcGF0aCBvZiBwcm9ncmVzcy4gV2UgbXVzdCB0ZWFyIAphd2F5IG91ciBvd24gcGVyc29uYWxpdGllcywgZm9yIG9ubHkgdGhlbiAKc2hhbGwgd2UgYmUgYXQgYWxsIGFibGUgdG8gc2VlIHRoZSBvdGhlciAKcGVyc29uIGFzIGhlIGlzLiBBIHByZWp1ZGljZSBpcyBhIGtpbmQgb2YgCndhcnQgdXBvbiB0aGUgbWVudGFsIGJvZHksIGFuZCBvZiBjb3Vyc2UgCndoZW4gYSBtYW4gdHJpZXMgdG8gbG9vayBvdXQgdGhyb3VnaCB0aGF0IApwYXJ0aWN1bGFyIHBhcnQgb2YuIHRoZSBib2R5IGhlIGNhbm5vdCBzZWUgCmNsZWFybHkuIEl0IGlzIGlu4oCZIHJlYWxpdHkgYSBjb25nZXN0ZWQgc3BvdCAKaW4gdGhlIG1lbnRhbCBib2R5LCBhIHBvaW10IGF0IHdoaWNoIHRoZSAKbWF0dGVyIGlzIG5vIGxvbmdlciBsaXZpbmcgYW5kIGZsb3dpbmcsIGJ1dCAKaXMgc3RhZ25hbnQgYW5kIHJvdHRlbi4gVGhlIHdheSB0byBjdXJlIAppdCBpcyB0byBhY3F1aXJlIG1vcmUga25vd2xlZGdlLCB0byBnZXQgCnRoZSBtYXR0ZXIgb2YgdGhlIG1lbnRhbCBib2R5IGludG8gbW90aW9uLCAKYW5kIHRoZW4gb25lIGJ5IG9uZSB0aGUgcHJlanVkaWNlcyB3aWxsIApiZSB3YXNoZWQgYXdheSBhbmQgZGlzc29sdmVkLiAKClRoaXMgZXZpbCBlZmZlY3Qgb2YgcHJlanVkaWNlIHdhcyB3aGF0IApBcnlhc2FuZ2hhIG1lYW50IHdoZW4gaGUgc2FpZCwgaW4gVGhlIFZvaWNlIApvZiB0aGUgU2lsZW5jZSwgdGhhdCB0aGUgbWluZCB3YXMgdGhlIGdyZWF0IApzbGF5ZXIgb2YgdGhlIHJlYWwuIEJ5IHRoYXQgaGUgd2FzIGRyYXctIAppbmcgYXR0ZW50aW9uIHRvIHRoZSBmYWN0IHRoYXQgd2UgZG8gbm90IApzZWUgYW55IG9iamVjdCBhcyBpdCBpcy4gV2Ugw6llZSBvbmx5IHRoZSAKaW1hZ2VzIHRoYXQgd2UgYXJlIGFibGUgdG8gbWFrZSBvZiBpdCwgCgoKUFJFSlVESUNFIDI1MSAKCgphbmQgZXZlcnl0aGluZyBpcyBuZWNlc3NhcmlseSBjb2xvdXJlZCBmb3IgCnVzIGJ5IHRoZXNlIHRob3VnaHQtZm9ybXMgb2Ygb3VyIG93biAKY3JlYXRpb24uIE5vdGljZSBob3cgdHdvIHBlcnNvbnMgd2l0aCBwcmUtIApjb25jZWl2ZWQgaWRlYXMsIHNlZWluZyB0aGUgc2FtZSBzZXQgb2YgCmNpcmN1bXN0YW5jZXMsIGFuZCBhZ3JlZWluZyBhcyB0byB0aGUgYWN0dWFsIApoYXBwZW5pbmdzLCB3aWxsIHlldCBtYWtlIHR3byBfIHRvdGFsbHkgCmRpZmZlcmVudCBzdG9yaWVzIGZyb20gdGhlbS4gS3hhY3RseSB0aGlzIApzb3J0IG9mIHRoaW5nIGlzIGdvaW5nIG9uIGFsbCB0aGUgdGltZSB3aXRoIApldmVyeSBvcmRpbmFyeSBtYW4sIGFuZCB3ZSBkbyBub3QgcmVhbGlzZSAKaG93IGFic3VyZGx5IHdlIGRpc3RvcnQgdGhpbmVzLiAKClRoZSBkdXR5IG9mIHRoZSBUaGVvc29waGljYWwgc3R1ZGVudCB0cyAKdG8gbGVhcm4gdG8gc2VjIHRoaW5ncyBhcyB0aGV5IGFyZSwgYW5kIHRoaXMgCm1lYXVzIGNvbnRyb2wsIHZpZ2lsYW5jZSBhbmQgYSB2ZXJ5IGdyZWF0IApkZWFsIG9mIGhhcmQgd29yay4gSW4gdGhlIFdlc3QsIGZvciBleGF0aW4tIApwbGUsIHBlb3BsZSBhcmUgdmVyeSBtdWNoIHByZWp1ZGljZWQgYWxvbmUgCnJlaWdpb3VzIGxpbmVzLCBmb3Igd2UgYXJlIGJvcm4gaXRvIGEgCmNlcnRhaW4gcmVsaWdpb24gYW5kIF8gc2VkdWxvdXNseSB0YXVnaHQgdGhhdCAKYWxsIG90aGVycyBhcmUgc3VwZXJzdGl0aW9ucy4gT3VyIGlkZWFzIHRoZXJlLSAKZm9yZSBhcmUgYmlhc2VkIGZyb20gdGhlIGZpcnN0LCBhbmQgZXZlbiAKd2hlbiB3ZSBkbyBsZWFybiB0byBrbm93IGEgaGl0dGxlIGFib3V0IApvdGhlciByZWxpZ2lvbnMgYW5kIHJlc3BlY3QgdGhlbSBpdCB3b3VsZCAKYmUgZGlmZmljdWx0IGZvciB1cyB0byBpbWFnaW5lIG91cnNlbHZlcyBib3JuIAppbnRvIHRoZW0uIFRob3NlIHdobyBhcmUgSGluZHRpcyBjYW4gCnNjYXJjZWx5IHRoaW5rIG9mIHRoZW1zZWx2ZXMgYXMgYmVpbWcgYm9ybiAKYXMgQ2hyaXN0aWFucyBvciBNdWhhbW1hZGFucywgYW5kIGp1c3QgaW4gCnRoZSBzYW1lIHdheSB0aGUgQ2hyaXN0aWFuIG9yIE11aGFtbWFkYW4gCmhhcyBhbiBlcXVhbCBkaWZmaWN1bHR5IGluIHRoaW5raW5nIG9mIGhpbS0gCnNlbGYgYXMgYSBIaW5kaSBvciBhIEJ1ZGRoaXN0LCBhbHRob3VnaCAKCgoyNTIgQURZQVIgVEFMS1MgCgoKaXQgaXMgcHJhY3RpY2FsbHkgY2VydGFpbiB0aGF0IGluIHNvaW1lXyBwYXN0IApsaWZlIGhlIGhhcyBiZWVuIGluIG9uZSBvciBvdGhlciBvZiB0aGVzZSAKcmVsaWdpb25zLiAKCk1hbnkgc28tY2FsbGVkIHByb3Rlc3RhbnQgQ2hyaXN0aWFucyB3aWxsIApwb3QgZXZlbiBub3cgdHJ2c3QgYSBSb21hbiBDYXRob2xpYywgCmFuZCB0aGUgbW9yZSBpZ25vcmFudCBwZW9wbGUgYXJlLCB0aGUgCmVyZWF0ZXIgaXMgdGhlaXIgZGlzdHJ1c3Qgb2YgdGhhdCB0byB3aGljaCAKdGhleSBhcmUgdW5hY2N1c3RvbWVkLiBUaGUgcGVhc2FudHJ5LCAKZm9yIGV4YW1wbGUsIGhhdmUgYWkgaW5zdGluY3RpdmUgZGlzdHJ1c3QgCm9mIGFsbCBmb3JlaWduZXJzLCBhbmQgdGhlcmUgYXJlIG1hbnkgY291bnRyeSAKcGxhY2VzIGluIEVuZ2xhbmQgd2hlcmUsIGxldCB1cyBzYXksIGEgCkZyZW5jaG1hbiwgdW5sZXNzIGltIHBvdmVydHkgYW5kIG5lZWRpbmcgCmhlbHAsIHdvdWxkIGNlcnRhaW5seSBiZSByZWdhcmRlZCB3aXRoIHN1c3BpLSAKY2lvbi4gSWYgaGUgaXMgaHVuZ3J5IGhlIHdpbGwgYmUgZmVkLCBhbmQgCnRyZWF0ZWQgd2l0aCA9IGNvbXBhc3Npb247IGJ1dCBsZXQgaGltIApjb21lIGFzIGEgZmVsbG93LXdvcmttYW4gYW5kIGFsbCB0aGF0IGhlIApkb2VzIHdpbGwgYmUgY210aWNpc2VkLCBsYXVnaGVkIGF0LCBhbmQgCnN1c3BlY3RlZC4gTm93IG9mIGNvdXJzZSBhbGwgdGhpcyBjb21lcyBmcm9tIAppdm5vcmFuY2UsIGFuZCBvY2N1cnMgYmVjYXVzZSB0aGUgcGVhc2FudHJ5IAphcmUgdW5hY2N1c3RvbWVkIHRvIG1lZXRpbmcgd2l0aCBmb3JlaWduZXJzLiAKClRoZSByZW1vdmFsIG9mIHN1Y2ggcHJlanVkaWNlIGlzIG9uZSAKb2YgLSB0aGUgZ3JlYXQgYWR2YW50YWdlcyBnYWluZWQgYnkgYW4gCmludGVsaGdlbnQgbWFuIHdoZW4gaGUgdHJhdmVscy4gSW4gdGhlIApUaGVvc29waGljYWwgU29jaWV0eSBtZW4gb2YgZGlmZmVyZW50IG5hdGlvbnMgCmFyZSBiZW1nIGRyYXduIG11Y2ggbW9yZSBjbG9zZWx5IHRvZ2V0aGVyOyAKSW5kaWFucyBhcmUgbGVhcm5tZyB0byB0cnVzdCB3aGl0ZSBwZW9wbGUsIAphbmQgd2hpdGUgcGVvcGxlIG0gdHVybiBhcmUgbGVhcm5pbmcgCnRoYXQgSW5kaWFucyBhcmUgbXVjaCB0aGUgc2FtZSBhcyB0aGVtLSAKCgpQUkVKVURJQ0UgMjUzIAoKCnNlbHZlcy4gSWYgd2FzIHdvcmtpbmcgaW4gQW1zdGVyZGFtIApkdXJpbmcgdGhlIEJvZXIgd2FyLCBhbmQgdGhvdWdoIGluIEhvbGxhbmQgCmdlbmVyYWxseSB0aGVyZSB3YXMgYSBzdHJvbmcgZmVlbGluZyBhdCAKdGhlIHRpbWUgYWdhaW5zdCBFbmdsYW5kLCB0aGVyZSB3YXMgbmV2ZXIgCuKAmHRoZSBzbGlnaHRlc3QgdHJhY2Ugb2YgaXQgYW1vbmcgdGhlIER1dGNoIApUaGVvc29waGljYWwgbWVtYmVycy4gSXQgaXMgbW9zdCBpbnRlcmVzdGluZyAKdG8gYXR0ZW5kIG9uZSBvZiB0aGUgRXVyb3BlYW4gVGhlb3NvcGgtIAppY2FsIENvbmZlcmVuY2VzLCBhbmQgdG8gc2VlIHRoZSByZWFsbHkgCmhlYXJ0eSBnb29kIGZlZWxpbmcgd2hpY2ggZXhpc3RzIGJldHdlZW4gCm1lbiBvZiBkaWZmZXJlbnQgbmF0aW9uc+KAlGhvdyB1bmZlaWduZWRseSAKdmxhZCB0aGV5IGFyZSB0byBzZWUgb25lIGFub3RoZXIsIGFuZCBob3cgCnRoZXkgcmVqb2ljZSBpbiBvbmUgYW5vdGhlcuKAmXMgY29tcGFueS4gCk9uZSBzZWVzIGF0IG9uY2UgdGhhdCBpZiBzdWNoIGZlbGxvdy1mZWVsaW5nIAphcyBleGlzdHMgPWJldHdlZW4gdGhlIG1lbWJlcnMgb2YgdGhlIApUaGVvc29waGljYWwgU29jaWV0eSBjb3VsZCBvbmx5IHNwcmVhZCB0byBhIAptYWpvcml0eSBvZiB0aGVtIGZlbGxvdy1jb3VudHJ5bWVuIGltIHRoZSAKdmFyaW91cyBuYXRpb25zLCB3YXIgd291bGQgYXQgb25jZSBiZWNvbWUgCmEgcmlkaWN1bG91cyBpbXBvc3NpYmlsaXR5LiAKCkFzIHRoaW5ncyBhcmUgbm93IHdlIGZvcm0gb3BpbmlvbnMgb24gCnZlcnkgc2hnaHQgZ3JvdW5kczsgeW91IG1lZXQgYV8gcGVyc29uIApmb3IgdGhlIGZpcnN0IHRpbWUsIGFuZCBzb21ldGhpbmcg4oCUIHRoYXQgCmhlIHNheXMsIG9yIHNvbWUgdHJpdmlhbCBnZXN0dXJlLCBhcm91c2VzIAppbiB5b3UgYSBsaXR0bGUgZGlzaGtlIG9mIGxpbSwgc28gdGhhdCAKdGhlcmUgaXMgYSBzaGdodCB3YWxsIGJldHdlZW4geW91IGFuZCBiaW4uIApUaGlzIG1heSBzZWVtIGFuIHVuaW1wb3J0YW50IG1hdHRlciwgCnlldCBpZiB5b3UgYXJlIG5vdCBjYXJlZnVsIHRoYXQgc2xpZ2h0IGJpYXMgCmFnYWluc3QgdGhlIHBlcnNvbiB3aWxsIGdyb3cgaW50byBhIGJhcnJpZXIgCndoaWNoIHdpbGwgZm9yIGV2ZXIgcHJldmVudCB5b3UgZnJvbSB1bmRlci0gCgoKMjU0LiBBRFlBUiAnVEFMS1MgCgoKc3RhbmRpbmcgaGltLiBUbyBhIGNlcnRhaW4gZXh0ZW50IHlvdSBzZWUgCmhpbSB0aHJvdWdoIHRoaXMgdGhvdWdodC1mb3JtIHRoYXQgeW91IApoYXZlIG1hZGUsIGFuZCB5b3UgY2Fubm90IHNlZSBoaW0gY29yLSAKcmVjdGx5LCBmb3IgaXQgaXMgbGlrZSBsb29raW5nIHRocm91Z2ggYSAKdHdpc3RlZCBhbmQgY29sb3VyZWQgZ2xhc3Mgd2hpY2ggZGlzdG9ydHPigJkgCmV2ZXJ5dGhpbmcuIAoKU29tZXRpbWVzLCBidXQgbm90IHNvIG9mdGVuLCBhIHByZS0gCmp1ZGljZSBpcyBpbiBmYXZvdXIgb2YgdGhlIHBlcnNvbiwgYXMgMW0gCnRoZSBjYXNlIG9mIGEgbW90aGVyIHdobyBjYW4gc2VlIG5vIApoYXJtIGltIHdoYXQgaGVyIGNoaWxkIGRvZXMsIGV2ZW4gdGhvdWdoIApoZSBtYXkgc2VyaW91c2x5IGhhcm0gb3RoZXJzLiBOb3cgd2hldGhlciAKdGhleSBiZSBhZ2FpbnN0IGEgcGVyc29uIG9yIGluIGZhdm91ciBvZiAKaGltLCBib3RoIG9mIHRoZXNlIGFyZSBlcXVhbGx5IHByZWp1ZGljZXMsIAptZW50YWwgZGVsdXNpb25zIHdoaWNoIHNsYXkgdGhlIHJlYWwuIFRoZSAKYmVzdCB3YXkgdG8gc2VlIHRydWx5IGlzIHRvIGJlZ2luIGRldGVyLSAKbWluZWRseSB0byBsb29rIGFsd2F5cyBmb3IgdGhlIGdvb2QgaW4gCmV2ZXJ5IG9uZSwgYXMgb3VyIHByZWp1ZGljZXMgYXJlIGdlbmVyYWxseSAKb24gdGhlIG90aGVyIHNpZGUsIGFuZCB3ZSBhcmUgc2FkbHkgcHJvbmUgCnRvIHNlZSBldmlsIHdoZXJlIG5vbmUgZXhpc3RzLiBXZSBkaWZmZXIgCmZyb20gb3RoZXIgcGVvcGxlIGltIGNvbG91ciwgaW4gZHJlc3MsIDEgCm1hbm5lcnMgYW5kIGN1c3RvbXMsIGFuZCBpbiBvdXRlciBmb3JtcyAKb2YgcmVsaWdpb24sIGJ1dCBhbGwgdGhlc2UgYXJlIG1lcmVseSBleHRlci0gCm5hbHMsIGFuZCBhbGwgdGhhdCBnb2VzIHRvIG1ha2UgdXAgdGhlIHJlYWwgCm1hbiBiZWhpbmQgYW5kIGJlbmVhdGggYWxsIHRoaXMgaXMgbXVjaCAKdGhlIHNhbWUgaW4gdXMgYWxsLiAKCkl0IGlzIG5vdCBhZnRlciBhbGwgc28gZGlmZmljdWx0IHRvIApsZWFybiB0byBsb29rIGJlaGluZCB0aGUgb3V0ZXIgc2hlbGxzIGluIAp3aGljaCBwZW9wbGUgY29uY2VhbCB0aGVtc2VsdmVzLiBUaGVyZWJ5IAoKClBSRUpVRElDRSAyNTUgCgoKdGhleSB1c3VhbGx5IG1ha2UgdGhlIHdvcnN0IG9mIHRoZW1zZWx2ZXMsIApmb3IgdGhlIG1haW4gZmF1bHRzIG5lYXJseSBhbHdheXMgbGUgb24gCnRoZSBzdXJmYWNlLCBhbmQgdGhlIHJlYWwgZ29sZCBpc18gb2Z0ZW4gCnN1Y2Nlc3NmdWxseSBjb25jZWFsZWQuIE9uZSB3aG8gYXNwaXJlcyAK4oCYdG8gbWFrZSBwcm9ncmVzcyBtdXN0IG92ZXJjb21lIHRoaXMgYmxpbmQtIApuZXNzIHRvIHRoZSB3b3J0aCBvZiBvdGhlcnMsIHRoaXMgdGVuZGVuY3kgCnRvIGp1ZGdlIGJ5IHN1cmZhY2UgY2hhcmFjdGVyaXN0aWNzLiAKClJlbWVtYmVyIHRoYXQgbm8gb25lIHdobyBkZXNpcmVzIHRvIApzdGFuZCBvbiB0aGUgc2lkZSBvZiBnb29kIGFzIGFnYWluc3QgZXZpbCBjYW4gCmV2ZXIgYmUgcmVmdXNlZCB0aGUgb3Bwb3J0dW10eSwgbm8gbWF0dGVyIApob3cgaWdub3JhbnQgb3IgYmlnb3RlZCBoZSBtYXkgYmUuIFRoZSAKTWFzdGVycyBhbHdheXMgdGFrZSB0aGUgZ29vZCBhbmQgdXNlIGl0IAp3aGVyZXZlciBpdCBhcHBlYXJzLCBldmVuIGlmIHRoZXJlIGlzIGluIHRoZSAKc2FtZSBtYW4gbXVjaCB0aGF0IGlzIGJhZCBhbHNvOyBhbmQgClRoZWlyIHVzZSBvZiB0aGlzIGZvcmNlIGZvciBnb29kIGdyZWF0bHkgCmhlbHBzIHRoZSBtYW4gd2hvIGhhcyBnZW5lcmF0ZWQgaXQuIEZvciAKZXhhbXBsZSwgVGhleSB3aWxsIHVzZSDigJh0aGUgZGV2b3Rpb25hbCBmb3JjZSAKd2hpY2ggaXMgdG8gYmUgZm91bmQgZXZlbiBpbiBhIG11cmRlcm91cyAKZmFuYXRpYywgYW5kIHRodXMgVGhleSB3aWxsIGFsbG93IGhpbSB0byAKZG8gc29tZSBnb29kIHdvcmsgYW5kIGNvbnNlcXVlbnRseSB0byBiZSAKaGVscGVkLiAKCldlIGFsc2/igJkgc2hvdWxkIGltaXRhdGUgdGhlIEdyZWF0IApPbmVzOyB3ZSBzaG91bGQgYWx3YXlzIHRyeSB0byB0YWtlIHRoZSAKZ29vZCBpbiBldmVyeXRoaW5nIGFuZCBldmVyeWJvZHkuIERvIG5vdCAKbG9vayBmb3IgYW5kIGFjY2VudHVhdGUgdGhlIGV2aWwgaW4gYW55b25lLCAKYnV0IHNlbGVjdCBhbmQgZW1waGFzaXNlIHRoZSBnb29kLiBHbyBvbiAKZG9pbmcgeW91ciBvd24gd29yayB0byB0aGUgYmVzdCBvZiB5b3VyIAphYmlsaXR5LCBhbmQgZG8gbm90IHRyb3VibGUgeW91cnNlbGYgYWJvdXQgCgoKMjk1NiA/IEFEWUFSIFRBTEtTIAoKCnRoZSB3b3JrIG9mIGFub3RoZXIsIG9yIGFib3V0IGhvdyBoZSBpcyAKZG9pbmcgaXQuIEV2ZW4gaWYgb3RoZXIgcGVvcGxlIG1ha2UgZGlmZmktIApjdWx0aWVzIGluIHlvdXIgd2F5LCBjbGltYiBvdmVyIHRoZW0gYW5kIApkbyBub3Qgd29ycnk7IHRoZXkgYXJlIHlvdXIga2FybWEsIGFuZCAKYWZ0ZXIgYWxsIHRoZXNlIHRoaW5ncyBmcm9tIG91dHNpZGUgZG8gbm90IApyZWFsbHkgbWF0dGVyLiBEbyBub3QgbWFrZSB0aGUgbWlzdGFrZSBvZiAKdGhpbmtpbmcgdGhhdCBvdGhlcnMgYXJlIHRyeWluZyB0byB0aHdhcnQgCnlvdXIgZ29vZCBwdXJwb3Nlcy4gQWxsIHRoZXNlIHBlb3BsZSBhcmUgCm11Y2ggbGlrZSB5b3Vyc2VsZjsgdGhpbmsgb2YgaXTigJR3b3VsZCAKeW91IGRlbGliZXJhdGVseSBjaG9vc2UgdG8gZG8gYSB3aWNrZWQgdGhpbmcgCmhpa2UgdGhhdD8gCgoKQ3VydG9zaXJ5IAoKCkJlIHNvIGNlbnRyZWQgaW0geW91ciB3b3JrIHRoYXQgeW9uIApoYXZlIG5vIHRpbWUgdG8gZmluZCBmYXVsdCB3aXRoIG90aGVycywgCm9yIHRvIHByeSBpbnRvIHRoZWlyIGFmZmFpcnMuIElmIG9ubHkgCmVhY2ggbWFuIHdvdWxkIG1pbmQgaGlzIG93biBidXNpbmVzcyB0aGUgCndvcmxkIHdvdWxkIGJlIGluZmluaXRlbHkgaGFwcGllci4gCgpUaGlzIHByeWluZyBpbnRvIG90aGVyIHBlb3BsZeKAmXMgYWZmYWlycyAKd29ya3MgbXVjaCBvZiBldmlsLCBhbmQgaXQgaXMgZ3VpdGUgYWNjdXJhdGUgCnRvIHNheSB0aGF0IHRoZSBwZXJzb24gd2hvIGRvZXMgaXQgaXMgCnN1ZmZlcmluZyBmcm9tIGEgZGlzZWFzZS4gVGhlIG1hbiB3aG8gaXMgCnByeWluZyBpcyBub3QgdXN1YWxseSBkb2luZyBpdCBmb3IgdGhlIApwdXJwb3NlIG9mIGhlbHBpbmcsIGJ1dCBzaW1wbHkgdG8gc2F0aXNmeSAKaGlzIGN1cmlvc2l0eSBhYm91dCBzb21ldGhpbmcgd2hpY2ggZG9lcyAKCgpDVVJJT1NJVFkgOiAyNTcgCgoKbm90IGNvbmNlcm4gaGltLCB3aGljaCBpcyBzeW1wdG9tYXRpYyBvZiAKaGlzIGRpc2Vhc2UuIEFub3RoZXIgc3ltcHRvbSBpcyB0aGF0IHRoZSAKbWFuIGNhbm5vdCBrZWVwIHRvIGhpbXNlbGYgdGhlIGluZm9ybWF0aW9uIAp3aGljaCBoZSBoYXMgc28gbmVmYXJpb3VzbHkgYWNxdWlyZWQsIGJ1dCAKbXVzdCBldmVybGFzdGluZ2x5IGJlIHBvdXJpbmcgaXQgb3V0IHRvIApvdGhlcnMgYXMgZm9vbGlzaCBhbmQgYXMgd2lja2VkIGFzIGhpbXNlbGYuIApGb3IgaXQgaXMgd2lja2VkIGJleW9uZCBhbGwgZG91YnQsIHRoaXMgCnNvc3NpcOKAlG9uZSBvZiB0aGUgd2lja2VkZXN0IHRoaW5ncyBpbiB0aGUgCndvcmxkLiBOaW5ldHktbmluZSB0aW1lcyBvdXQgb2YgYSBodW5kcmVkIAp3aGF0IGlzIHNhaWQgaXMgYW4gYWJzb2x1dGUgZmFicmljYXRpb24sIGJ1dCAKaXQgZG9lcyBhbiBlbm9ybW91cyBhbW91bnQgb2YgaGFybS4gCgpJdCBpcyBub3Qgb25seSB0aGUgZGFtYWdlIGRvbmUgdG8gYW5vdGhlciAKcGVyc29u4oCZcyByZXB1dGF0aW9uOyB0aGF0IGlzIHRoZSBsZWFzdCBwYXJ0IApvZiB0aGUgZXZpbC4gVGhlIGdvc3NpcCBhbmQgaGlzIF8gcGVzdGlsZW50aWFsIApjcm9uaWVzIHBlcnBldHVhbGx5IG1ha2UgdGhvdWdodC1mb3JtcyBvZiAKc29tZSBldmlsIHF1YWxpdHkgd2hpY2ggdGhleSBjaG9vc2UgdG8gYXQtIAp0cmlidXRlIHRvIHRoZWlyIHZpY3RpbSwgYW5kIHRoZW4gcHJvY2VlZCB0byAKaHVybCB0aGVtIHVwb24gaGltIGluIGFuIHVuY2Vhc2luZyBzdHJlYW0uIApUaGUgbmF0dXJhbCBlZmZlY3Qgb2YgdGhpcyB3aWxsIGJlIHRvIGF3YWtlbiAKaW4gaGltIHRoZSBldmlsIHF1YWxpdHkgb2Ygd2hpY2ggdGhleSBhYy0gCmN1c2UgaGltLCBpZiB0aGVyZSBpcyBhbnl0aGluZyBhdCBhbGwgaW0gCmhpcyBuYXR1cmUgd2hpY2ggd2lsbCByZXNwb25kIHRvIHRoZWlyIAptYWxpY2lvdXMgZWZmb3J0cy4gSW4gdGhlIG9uZSBjYXNlIG91dCBvZiBhIApodW5kcmVkIGluIHdoaWNoIHRoZXJlIGlzIHNvbWUgdHJ1dGggaW4gCnRoZWlyIHNwaXRlZnVsIHByYXR0bGUsIHRoZWlyIHRob3VnaHQuIGZvcm1zIAppbnRlbnNpZnkgdGhlIGV2aWwsIGFuZCBzbyB0aGV5IHBpbGUgdXAgZm9yIAp0aGVtc2VsdmVzIGEgc3RvcmUgb2YgdGhlIHRlcnJpYmxlIGthcm1hIAoKCndoaWNoIGNvbWVzIGZyb20gbGVhZGluZyBhIGJyb3RoZXIgaW50byAKMzMgCgoKMjU4IEFEWUFSIFRBTEtTIAoKCnNpbi4gVGhlb3NvcGhpc3RzIGVzcGVjaWFsbHkgc2hvdWxkIGJlIGNhcmVmdWwgCnRvIGF2b2lkIHRoZXNlIGV2aWxzLCBiZWNhdXNlIG1hbnkgb2YgdGhlbSAKYXJlIG1ha2luZyBzb21lIGVmZm9ydCBpbiB0aGUgZGlyZWN0aW9uIG9mIApkZXZlbG9waW5nIHBzeWNoaWMgcG93ZXJzLCBhbmQgaWYgdGhleSBzaG91bGQgCnVzZSB0aG9zZSBmb3IgdGhlIHB1cnBvc2Ugb2YgcHJ5aW5nIGludG8gCm90aGVyIHBlb3BsZeKAmXMgYWZmYWlycyBvciBmb3Igc2VuZGluZyBldmlsIAp0aG91Z2h0cyB0byB0aGVtLCB0aGVpciBrYXJtYSB3b3VsZCBiZSAKb2YgdGhlIG1vc3QgdGVycmlibGUgbmF0dXJlLiAKCk5ldmVyIHNwZWFrIHVubGVzcyB5b3Uga25vdywgYW5kIF8gbm90IApldmVuIHRoZW4gdW5sZXNzIHlvdSBhcmUgYWJzb2x1dGVseSBjZXJ0YWluIAp0aGF0IHNvbWUgZGVmaW5pdGUgZ29vZCB3aWxsIGNvbWUgb2YgaXQuIApCZWZvcmUgeW91IHNwZWFrIGFzayB5b3Vyc2VsZiBhYm91dCB3aGF0IAp5b3UgYXJlIGdvaW5nIHRvIHNheTog4oCcSXMgaXQgdHJ1ZT8gSXMgaXQgCmtpbmQ/IElzIGl0IHVzZWZ1bD/igJ0gQW5kIHVubGVzcyB5b3UgY2FuIAphbnN3ZXIgdGhlc2UgdGhyZWUgcXVlc3Rpb25zIGluIHRoZSBhZmZpcm1hLSAKdGl2ZSwgeW91ciBkdXR5IGlzIHRvIHJlbWFpbiBzaWxlbnQuIFtJIGFtIAp3ZWxsIGF3YXJlIHRoYXQgYW4gYWJzb2x1dGUgZm9sbG93aW5nIG9mIAp0aGlzIHJ1bGUgd291bGQgcmVkdWNlIHRoZSBjb252ZXJzYXRpb24gb2YgCnRoZSB3b3JsZCBieSBhYm91dCBuaW5ldHkgcGVyIGNlbnQsIGJ1dCAKdGhhdCB3b3VsZCBiZSBhbiB1bnNwZWFrYWJsZSBhZHZhbnRhZ2UsIAphbmQgdGhlIHdvcmxkIHdvdWxkIGFkdmFuY2UgbXVjaCBtb3JlIApyYXBpZGx5LiAKCldoZW4gd2UgdW5kZXJzdGFuZCB0aGUgdW5kZXJseWluZyB1bml0eSAKb2YgYWxsIHdlIGNhbm5vdCBiZSBvdGhlcndpc2UgdGhhbiBoZWxwZnVsLCAKd2UgY2Fubm90IHN0YW5kIGFzaWRlIGZyb20gb3VyIF8gYnJvdGhlcuKAmXMgCnNvcnJvdy4gT2YgY291cnNlIHRoZXJlIG1heSBiZSBtYW55IGNhc2VzIAp3aGVyZSBwaHlzaWNhbCBhaWQgaXMgaW1wb3NzaWJsZSwgYnV0IGF0IGxlYXN0IAp3ZSBjYW4gYWx3YXlzIGdpdmUgdGhlIGhlbHAgb2Ygc3ltcGF0aHksIAoKCkNVQkxPU0knTFkgMjU5IAoKCmNvbXBhc3Npb24gYW5kIGxvdmUsIGFuZCB0aGlzIGlzIGNsZWFybHkgb3VyIApkdXR5LiBGb3IgYSBtYW4gd2hvIHJlYWxpc2VzIFRoZW9zb3BoeSAKaGFyc2huZXNzIGlzIGltcG9zc2libGUuIEFueSBtZW1iZXIgd2hvIAphY3RzIHJvdWdobHkgb3IgY29hcnNlbHkgaXMgZmFpbGluZyBpbiBoaXMgCi0gVGhlb3NvcGh5LCBhbmQgaWYgaGUgZmFpbHMgaW4gcGF0aWVuY2UgCmhlIGlzIGZhaWxpbmcgaW4gY29tcHJlaGVuc2lvbi4gVG8gdW5kZXItIApzdGFuZCBhbGwgaXMgdG8gZm9yZ2l2ZSBhbGwsIHRvIGxvdmUgYWxsLiBLdmVyeSAKbWFuIGhhcyBoaXMgb3duIHBvaW50IG9mIHZpZXcsIGFuZCB0aGUgCnNob3J0ZXN0IHJvYWQgZm9yIG9uZSBtYW4gaXMgbm90IGJ5IGFueSAKbWVhbnMgdWVjZXNzYXJpbHkgdGhlIGJlc3QgZm9yIGFub3RoZXIuIEh2ZXJ5IAptYW4gaGFzIGEgcGVyZmVjdCByaWdodCB0byB0YWtlIGhpcyBvd24gCmV2b2x1dGlvbiBpbiBoYW5kIGluIGhpcyBvd24gd2F5LCBhbmQgdG8gZG8gCndpdGggcmVnYXJkIHRvIGl0IHdoYXQgaGUgY2hvb3Nlcywgc28gbG9uZyBhcyAKaGUgZG9lcyBub3QgY2F1c2Ugc3VmZmVyaW5nIG9yIGluY29udmVuaWVuY2UgCnRvIGFueW9uZSBlbHNlLiBJdCAxcyBlbXBoYXRpY2FsbHkgbm90IG91ciAKYnVzaW5lc3MgdG8gdHJ5IHRvIHB1dCBldmVyeWJvZHkgcmlnaHQsIGJ1dCAKb25seSB0byBzZWUgdGhhdCBhbGwgaXMgcmlnaHQgb24gb3VyIHNpZGUgCmluIG91ciByZWxhdGlvbnMgd2l0aCBvdGhlcnMuIEJlZm9yZSB3ZSB1bi0gCmRlcnRha2UgYW4gZWZmb3J0IHRvIGZvcmNlIHNvbWVvbmUgZWxzZSBpbnRvIApvdXIgcGF0aCBpdCB3aWxsIGJlIGJlc3QgZm9yIHVzIGNhcmVmdWxseSAKdG8gZXhhbWluZSBoaXMsIGZvciBpdCBtYXkgYmUgYmV0dGVyIGZvciBoaW0uIApXZSBvdWdodCB0byBiZSBhbHdheXMgcmVhZHkgdG8gaGVscCBmcmVlbHkgCnRvIHRoZSBmdWxsZXN0IGV4dGVudCBvZiBvdXIgcG93ZXIsIGJ1dCB3ZSAKb3VnaHQgbmV2ZXIgdG8gaW50ZXJmZXJlLiAKCgoyNjAgQURZQVIgVEFMS1MgCgoKS25vdyBUSFlTRUxGIAoKClRoZSBvbGQgR3JlZWsgc2F5aW5nIChybm90aHQgc2VhdXRvbiwgCmtub3cgdGh5c2VsZiwgaXMgYSBmaW5lIHBpZWNlIG9mIGFkdmljZSwgCmFuZCBzZWxmLWtub3dsZWRnZSBpcyBhYnNvbHV0ZWx5IG5lY2Vzc2FyeSB0byDigJQgCmFueSBjYW5kaWRhdGUgZm9yIHByb2dyZXNzLiBBbmQgeWV0IHdlIAptdXN0IGJld2FyZSBsZXN0IG91ciBuZWNlc3Nhcnkgc2VsZi1leGFtaW4tIAp1dGlvbiBzaG91bGQgZGVnZW5lcmF0ZSBpbXRvIG1vcmJpZCBpbi0gCnRyb3NwZWN0aW9uLCBhcyBpdCBvZnRlbiBkb2VzIHdpdGggc29tZSAKb2YgdGhlIGJlc3Qgb2Ygb3Vy4oCZIHN0dWRlbnRzLiBNYW55IApwZW9wbGUgYXJlIGNvbnN0YW50bHkgd29ycnlpbmcgdGhlbXNlbHZlcyAKbGVzdCB1bmF3YXJlcyB0aGV5IHNob3VsZCBiZSDigJggc2xpZGluZyBiYWNrLOKAmSAKYXMgdGhleSBjYWxsIGl0LiBJZiB0aGV5IHVuZGVyc3Rvb2QgdGhlIAptZXRob2Qgb2YgZXZvbHV0aW9uIGEgbGl0dGxlIGJldHRlciB0aGV5IAp3b3VsZCBzZWUgdGhhdCBubyBvbmUgY2FuIHNsaWRlIGJhY2sgd2hlbiAKdGhlIHdob2xlIGN1cnJlbnQgaXMgbW92aW5nIHN0ZWFkaWx5IGZvci0gCndhcmQuIAoKQXMgYSB0b3JyZW50IGNvbWVzIHJ1c2htZyBkb3duIGEgCnNsb3BlLCBtYW55IGxpdHRsZSBlZGRpZXMgYXJlIGZvcm1lZCBfIGJlLSAKaGluZCByb2Nrcywgb3IgcGVyaGFwcyB3aGVyZSB0aGUgd2F0ZXIgaXMgCndoaXJsaW5nIHJvdW5kIGFuZCByb3VuZCwgYW5kXyB0aGVyZWZvcmUgCmZvciB0aGUgbW9tZW50IHNvbWUgb2YgaXQgMXMgbW92aW5nIGJhY2stIAp3YXJkczsgYnV0IHlldCB0aGUgd2hvbGUgYm9keSBvZiB3YXRlciwgCmVkZGllcyBhbmQgYWxsLCBpcyBiZWluZyBzd2VwdCBvbiBpbiB0aGUgCnJ1c2ggb2YgdGhlIHRvcnJlbnQsIHNvIHRoYXQgZXZlbiB0aGF0IHdoaWNoIAppcyBhcHBhcmVudGx5IG1vdmluZyBiYWNrd2FyZHMgaW4gcmVsYS0gCnRpb24gdG8gdGhlIHJlc3Qgb3RmIHRoZSBzdHJlYW0gaXMgcmVhbGx5IApiZWluZyBodXJyaWVkIGZvcndhcmQgYWxvbmcgd2l0aCB0aGUgcmVzdC4gCgoKS05PVyBUSFlTRUxGIDI2MSAKCgpIdmVuIHRoZSBwZW9wbGUgd2hvIGFyZSBkb2luZyBub3RoaW5nIAp0b3dhcmRzIHRoZWlyIGV2b2x1dGlvbiwgYW5kIGxldCBldmVyeXRoaW5nIApnbyBhcyBpdCB3aWxsLCBhcmUgYWxsIHRoZSB3aGlsZSBncmFkdWFsbHkgCmV2b2x2aW5nLCBiZWNhdXNlIG9mIHRoZSBpcnJlc2lzdGlibGUgZm9yY2Ugb2YgCnRoZSBMb2dvcyB3aGljaCBpcyBzdGVhZGlseSBwcmVzc2luZyB0aGVtIApvbndhcmRzOyBidXQgdGhleSBhcmUgbW92aW5nIHNvIHNsb3dseSAKdGhhdCBpdCB3aWxsIHRha2UgdGhlbSBtdWxob25zIG9mIHllYXJzIApvZiBpbmNhcm5hdGlvbiBhbmQgdHJvdWJsZSBhbmQgXyB1c2VsZXNzbmVzcyAKdG8gZ2FpbiBldmVuIGEgc3RlcC4gCgpUaGUgbWV0aG9kIGluIHdoaWNoIHRoaXMgaXMgbWFuYWdlZCBpcyAKZGVsaWdodGZ1bGx5IHNpbXBsZSBhbmQgaW5nZW5pb3VzLiBBbGwgdGhlIApldmlsIHF1YWxpdGllcyBpbiBtYW4gYXJlIHZpYnJhdGlvbnMgb2YgdGhlIApsb3dlciBtYXR0ZXIgb2YgdGhlIHJlc3BlY3RpdmUgXyBwbGFuZXMuIApJbiB0aGUgYXN0cmFsIGJvZHksIGZvciBleGFtcGxlLCBfIHNlbGZpc2gtIApuZXNzLCBhbmdlciwgaGF0cmVkLCBqZWFsb3VzeSwgc2Vuc3VhbGl0eSwgCmFuZCBhbGwgcXVhbGl0aWVzIG9mIHRoaXMga2luZCBhcmUgaW4tIAp2YXJpYWJseSBleHByZXNzZWQgYnkgdnZpYnJhdGlvbnMgb2YgdGhlIApsb3dlciB0eXBlIG9mIGFzdHJhbCBtYXR0ZXIsIHdoaWxlIGxvdmUsIApkZXZvdGlvbiwgc3ltcGF0aHksIGFuZCBlbW90aW9ucyBvZiB0aGF0IApjbGFzcyBhcmUgZXhwcmVzc2VkIG9ubHkgaW5fIG1hdHRlciBvZiAKdGhlIC50aHJlZSBoaWdoZXIgc3ViLXBsYW5lcy4gRnJvbSBfIHRoaXMgCmZsb3cgdHdvIHJlbWFya2FibGUgXyByZXN1bHRzLiBJdCBtdXN0IApiZSBib3JuZSBpbiBtaW5kIHRoYXQgZWFjaCBzdWItcGxhbmUgb2YgdGhlIAphc3RyYWwgdmVoaWNsZSBoYXMgYSBzcGVjaWFsIHJlbGF0aW9uIHRvIHRoZSAKY29ycmVzcG9uZGluZyBzdWItcGxhbmUgaW4gdGhlIG1lbnRhbCBib2R5IDsgCm9yLCB0byBwdXQgaXQgbW9yZSBhY2N1cmF0ZWx5LCB0aGUgZm91ciAKbG93ZXIgc3ViLXBsYW5lcyBvZiB0aGUgYXN0cmFsIGNvcnJlc3BvbmQgCnRvIHRoZSBmb3VyIGtpbmRzIG9mIG1hdHRlciBpbiB0aGUgbWVudGFsIAoKCjI2MiBBRFlBUiBUQUxLUyAKCgpib2R5LCB3aGlsZSB0aGUgdGhyZWUgaGlnaGVyIGNvcnJlc3BvbmQgdG8gCnRoZSBjYXVzYWwgdmVoaWNsZS4gCgpUaGVyZWZvcmUgaXQgd2lsbCBiZSBzZWVuIHRoYXQgb25seSAKaGlnaGVyIHF1YWxpdGllcyBjYW4gYmUgYnVpbHQgaW50byB0aGUgCmNhdXNhbCBib2R5LCBzaW5jZSB0aGUgdmlicmF0aW9ucyBjcmVhdGVkIApieSB0aGUgbG93ZXIgY2FuIGZpbmQgaW4gaXQgbm8gbWF0dGVyIAp3aGljaCBpcyBjYXBhYmxlIG9mIHJlc3BvbmRpbmcgdG8gdGhlbS4gClRoZW5jZSBpdCBlbWVyZ2VzIHRoYXQgd2hpbGUgYW55IGdvb2QgCndoaWNoIHRoZSBtYW4gZGV2ZWxvcGVzIHdpdGhpbiBoaW1zZWxmIApyZWNvcmRzIGl0c2VsZiBwZXJtYW5lbnRseSBieSBhIGNoYW5nZSAKaW4gaGlzIGNhdXNhbCBib2R5LCB0aGUgZXZpbCB3aGljaCBoZSAKZG9lcyBhbmQgdGhpbmtzIGFuZCBmZWVscyBjYW5ub3QgcG9zc2ktIApibHkgdG91Y2ggdGhlIHJlYWwgZWdvLCBidXQgY2FuIG9ubHkgCmNhdXNlIGRpc3R1cmJhbmNlIGFuZCB0cm91YmxlIHRvIHRoZSBtZW50YWwgCmJvZHksIHdoaWNoIGlzIHJlbmV3ZWQgZm9yIGVhY2ggZnJlc2ggaW4tIApjYXJuYXRpb24uIE9mIGNvdXJzZSB0aGUgcmVzdWx0IG9mIHRoaXMgZXZpbCAKZG9lcyBzdG9yZSBpdHNlbGYgaW4gdGhlIG1lbnRhbCBhbmQgYXN0cmFsIApwZXJtYW5lbnQgYXRvbXMsIGFuZCBzbyB0aGUgbWFuIGhhcyB0byAKZmFjZSBpdCBvdmVyIGFuZCBvdmVyIGFnYWluLCBidXQgdGhhdCBpcyAKYSB2ZXJ5IGRpZmZlcmVudCBtYXR0ZXIgZnJvbSB0YWtpbmcgaXQgaW50byAKdGhlIGVnbyBhbmQgbWFraW5nIGl0IHJlYWxseSBhXyBwYXJ0IG9mIApoaW1zZWxmLiAKClRoZSBzZWNvbmQgcmVtYXJrYWJsZSByZXN1bHQgcHJvZHVjZWQgCmlzIHRoYXQgYSBjZXJ0YWluIGFtb3VudCBvZiBmb3JjZSBkaXJlY3RlZCAKdG93YXJkcyBnb29kIHByb2R1Y2VzIGFuIGVub3Jtb3VzbHkgZ3JlYXRlciAKZWZmZWN0IGluIHByb3BvcnRpb24gdGhhbiB0aGUgc2FtZSBhbW91bnQgCm9mIGZvcmNlIGRpcmVjdGVkIHRvd2FyZHMgZXZpbC4gSWYgYSBtYW4gCnRocm93cyBhIGNlcnRhaW4gYW1vdW50IG9mIGVuZXJneSBpbnRvIAoKCktOT1cgVEhZU0VMRiAyNjMgCgoKc29tZSBldmlsIHF1YWxpdHkgaXQgaGFzIHRvIGV4cHJlc3MgaXRzZWxmIAp0aHJvdWdoIHRoZSBsb3dlciBhbmQgaGVhdmllciBhc3RyYWwgbWF0LSAKdGVyOyBhbmQgd2hpbGUgYW55IGtpbmQgb2YgYXN0cmFsIG1hdHRlciAKaXMgZXhjZWVkaW5nbHkgc3VidGxlIGFzIGNvbXBhcmVkIHdpdGggCuKAmGFueXRoaW5nIG9uIHRoZSBwaHlzaWNhbCBwbGFuZSwgeWV0IGFzIApjb21wYXJlZCB3aXRoIHRoZSBoaWdoZXIgbWF0dGVyIG9mIGl0cyAKb3duIHBsYW5lIGl0IGlzIGp1c3QgYXMgZ3Jvc3MgYXMgbGVhZCBpcyAKb24gdGhlIHBoeXNpY2FsIHBsYW5lIHdoZW4gY29tcGFyZWQgd2l0aCAKdGhlIGZpbmVzdCBldGhlci4gCgpJZiB0aGVyZWZvcmUgYSBtYW4gc2hvdWxkIGV4ZXJ0IGV4YWN0bHkgCnRoZSBzYW1lIGFtb3VudCBvZiBmb3JjZSBpbiB0aGUgZGlyZWN0aW9uIApvZiBnb29kLCBpdCB3b3VsZCBoYXZlIHRvIG1vdmUgdGhyb3VnaCAKdGhlIG11Y2ggZmluZXIgbWF0dGVyIG9mIHRoZXNlIApoaWdoZXIgc3ViLXBsYW5lcyBhbmQgd291bGQgcHJvZHVjZSBhdCAKbGVhc3QgYSBodW5kcmVkIHRpbWVzIGFzIG11Y2ggZWZmZWN0LCBvciAKaWYgd2UgY29tcGFyZSB0aGUgbG93ZXN0IHdpdGggdGhlIGhpZ2hlc3QsIApwcm9iYWJseSBtb3JlIHRoYW4gYSB0aG91c2FuZCB0aW1lcy4gUmUtIAptZW1iZXIgdGhhdCBldmVuIGltIGFkZGl0aW9uIHRvIHdoYXQgaGFzIApiZWVuIHNhaWQgYXMgdG8gdGhlIGVmZmVjdCBvZiBmb3JjZSBpbiBkaWZmZXJlbnQgCmdyYWRlcyBvZiBtYXR0ZXIsIHdlIGhhdmUgdGhlIG90aGVyIGdyZWF0IApmYWN0IHRoYXQgdGhlIExvY29zIEhpbXNlbGYgaXMgYnkgSGlzIApyZXNpc3RsZXNzIHBvd2VyIHN0ZWFkaWx5IHByZXNzaW5nIHRoZSB3aG9sZSAKc3lzdGVtIG9ud2FyZHMgYW5kIHVwd2FyZHMsIGFuZCB0aGF0LCAKaG93ZXZlciBzbG93IHRoaXMgY3ljbGljIHByb2dyZXNzaW9uIG1heSAKc2VlbSB0byB1cywgaXQgaXMgYSBmYWN0IHdoaWNoIGNhbm5vdCBiZSAKbmVnbGVjdGVkLCBmb3IgaXRzIGVmZmVjdCBpcyB0aGF0IGEgbWFuIHdobyAKYWNjdXJhdGVseSBiYWxhbmNlcyBoaXMgZ29vZCBhbmRfIGV2aWwgCmNvbWVzIGJhY2ssIG5vdCB0byB0aGUgc2FtZSBhY3R1YWwgcG9zaXRpb24sIAoKCjI2NCBBRFlBUiBUQUxLUyAKCgpidXQgdG8gdGhlIHNhbWUgcmVsYXRpdmUgcG9zaXRpb24sIGFuZCB0aGVyZS0gCmZvcmUgZXZlbiBoZSBoYXMgbWFkZSBzb21lIHNsaWdodCBhZHZhbiAiIAphbmQgaXMgYXMgaXQgd2VyZSBpbiBhIHBvc2l0aW9uIGp1c3QgYSBsaXR0bGUgCmJldHRlciB0aGFuIHRoYXQgd2hpY2ggaGUgaGFzIGFjdHVhbGx5IApkZXNlcnZlZCBhbmQgbWFkZSBmb3IgaGltc2VsZi4gCgpJdCB3aWxsIGJlIGNsZWFyIGZyb20gdGhlc2UgY29uc2lkZXJhdGlvbnMgCnRoYXQsIGlmIGFueSBvbmUgaXMgc28gZm9vbGlzaCBhcyB0byB3YW50IHRvIApnZXQgcmVhbGx5IGJhY2t3YXJkcyBhZ2FpbnN0IHRoZSBzdHJlYW0sIGhlIAp3aWxsIGhhdmUgdG8gd29yayBoYXJkIGFuZCBfIGRlZmluaXRlbHkgCnRvd2FyZHMgZXZpbDsgdGhlcmUgaXMgbm8gZmVhciBvZiDigJhzbGlkaW5n4oCZIApiYWNrLiBUaGF0IGlzIG9uZSBvZiB0aGUgb2xkIGRlbHVzaW9ucyAKd2hpY2ggcmVtYWlucyBmcm9tIHRoZSB0aW1lcyBvZiB0aGUgYmVsaWVmIAppbiB0aGUgb3J0aG9kb3ggZGV2aWwsIHdobyB3YXMgc28gbXVjaCAKc3Ryb25nZXIgdGhhbiAoR29kIHRoYXQgZXZlcnl0aGluZyBpbiB0aGUgCndvcmxkIHdhcyB3b3JraW5nIGluIGhpcyBmYXZvdXIuIFJlYWxseSAKdGhlIGV4YWN0IG9wcG9zaXRlIGlzIHRoZSBjYXNlLCBhbmQgZXZlcnktIAp0aGluZyByb3VuZCBhIG1hbiBpcyBjYWxjdWxhdGVkIHRvIGFzc2lzdCAKaGltLCBpZiBoZSBvbmx5IHVuZGVyc3RhbmRzIGl0LiAKClNvIG1hbnkgb2Ygb3VyIG1vc3QgY29uc2NpZW50aW91cyBwZW9wbGUgCmFyZSBqdXN0IGhrZSB0aGUgY2hpbGQgd2hvIGhhcyBhIGxpdHRsZSAKZ2FyZGVuIG9mIGhpcyBvd24sIGFuZCBjb25zdGFudGx5IHB1bGxzIHVwIApoaXMgcGxhbnRzIHRvIHNlZSBob3cgdGhlIHJvb3RzIGFyZSBncm93LSAKaW5n4oCUd2l0aCB0aGUgcmVzdWx0IG9mIGNvdXJzZSB0aGF0IG5vdGhpbmcgCmdyb3dzIGF0IGFsbC4gV2UgbXVzdCBsZWFybiBub3QgdG8gdGhpbmsgCm9mIG91cnNlbHZlcyBwZXJzb25hbGx5LCBub3Igb2Ygb3VyIHBlcnNvbmFsIApwcm9ncmVzcywgYnV0IGVudGVyIHRoZSBwYXRoIG9mIGRldmVsb3BtZW50LCAKZ28gb24gd29ya2luZyBmb3Igb3RoZXJzIHRvIHRoZSBiZXN0IG9mIApvdXIgYWJpbGl0eSwgYW5kIHRydXN0IG91ciBwcm9ncmVzcyB0byB0YWtlIAoKCktOT1cgVEhZU0VMRiAyNjUgCgoKY2FyZSBvZiBpdHNlbGYuIFRoZSBtb3JlIGEgc2NpZW50aXN0IHRoaW5rcyAK4oCYYWJvdXQgaGltc2VsZiB0aGUgbGVzcyBtZW50YWwgZW5lcmd5IGhlIApoYXMgZm9yIHRoZSBwcm9ibGVtcyBvZiBzY2llbmNlOyB0aGUgCm1vcmUgYSBkZXZvdGVlIHRoaW5rcyBhYm91dCBoaW1zZWxmIHRoZSAKbGVzcyBkZXZvdGlvbiBoYXMgaGUgdG8gbGF2aXNoIHVwb24gaGlzIApvYmplcnQuIAoKU2M6IHRoZSBzZWxmLWV4YW1pbmF0aW9uIGlzIG5lY2Vzc2FyeSwgYnV0IGl0IAppcyBhIGZhdGFsIG1pc3Rha2UgdG8gc3BlbmQgdG9vIG11Y2ggdGltZSAKaW4gc2VsZi1leGFtaW5hdGlvbjsgaXQgaXMgbGtlIHNwZW5kaW5nIGFsbCAKb25l4oCZcyB0aW1lIGluIG9pbGluZyBhbmQgdGlua2VyaW5nIGF0IHRoZSAKbWFjaGluZXJ5LiBXZSB1c2Ugd2hhdCBmYWN1bHRpZXMgd2UgaGF2ZSwgCmFuZCBpbiB0aGUgdXNlIG9mIHRoZW0gb3RoZXJzIHdpbGwgZGV2ZWxvcGUsIAphbmQgdHJ1ZSBwcm9ncmVzcyB3aWxsIGJlIG1hZGUuIElmIHlvdSAKYXJlIGxlYXJuaW5nIGEgbGFuZ3VhZ2UsIGZvciBleGFtcGxlLCBpdCBpcyAKYSBtaXN0YWtlIHRvIHRyeSB0byBsZWFybiBpdCBmcm9tIF8gYm9va3MgCnF1aXRlIHBlcmZlY3RseSBiZWZvcmUgeW91IG1ha2UgYW55LiAKYXR0ZW1wdCB0byBzcGVhayBpdDsg4oCYeW91IG11c3QgcGx1bmdlIAppbnRvIGl0LCBhbmQgbWFrZSBtaXN0YWtlcyBpbiBpdCwgYW5kIGluIHRoZSAKZWZmb3J0IHlvdSB3aWxsIGxlYXJuIGluIGR1ZSBjb3Vyc2UgdG8gc3BlYWsgCndpdGhvdXQgbWlzdGFrZS4gU28gaW4gdGhlIGNvdXJzZSBvZiB0aW1lIAp3aGF0IGlzIGNhbGxlZCByZW51bmNpYXRpb24gd2lsbCBjb21lIApuYXR1cmFsbHksIGFuZCBldmVuIGVhc2lseS4gTm8gZG91YnQgd2hlbiAKbWVuIGZpcnN0IGF0dGVtcHQgdG8gbGl2ZSB0aGUgaGlnaGVyIGxpZmUgCnRoZXkgZG8gZGVmaW5pdGVseSByZW5vdW5jZSBtYW55IHRoaW5ncyAKd2hpY2ggYXJlIHBsZWFzdXJlcyB0byBvdGhlcnPigJR3aGljaCBzdGlsbCAKaGF2ZSBhIHN0cm9uZyBhdHRyYWN0aW9uIGV2ZW4gZm9yIHRoZW07IGJ1dCAKc29vbiB0aGUgbWFuIGZpbmRzIHRoYXQgdGhlIGF0dHJhY3Rpb24gb2YgCgoKc3VjaCBwbGVhc3VyZXMgaGFzIGNlYXNlZCwgYW5kIHRoYXQgaGUgaGFzIAo4NCAKCgoyNjYgQURZQVIgVEFMS1MgCgoKbmVpdGhlciB0aW1lIG5vciBpbmNsaW5hdGlvbiBmb3IgdGhlIGxvd2VyIAplbmpveW1lbnRzLiAyIAoKTGVhcm4gYWJvdmUgYWxsIHRoaW5ncyBub3QgdG8gd29ycnkuIEJlIApoYXBweSwgYW5kIG1ha2UgdGhlIGJlc3Qgb2YgZXZlcnl0aGluZy4gClRyeSB0byByYWlzZSB5b3Vyc2VsZiBhbmQgaGVscCBvdGhlcnMuIApDb250ZW50bWVudCBpcyBub3QgaW5jb21wYXRpYmxlIHdpdGggYXNwaXJhLSAKdGlvbi4gT3B0aW1pc20gaXMganVzdGlmaWVkIGJ5IHRoZSBjZXRhaW50eSAKb2YgdGhlIHVsdGltYXRlIHRyaXVtcGggb2YgZ29vZCwgdGhvdWdoIGlmIAp3ZSB0YWtlIG9ubHkgdGhlIHBoeXNpY2FsIHBsYW5lIGludG8gYWNjb3VudCAKaXQgaXMgbm90IGVhc3kgdG8gbWFpbnRhaW4gdGhhdCBwb3NpdGlvbi4gCk9uZeKAmXMgYXR0aXR1ZGUgaW4gdGhpcyBtYXR0ZXIgZGVwZW5kcyBjaGllZmx5IAp1cG9uIHRoZSBsZXZlbCBhdCB3aGljaCBvbmUgaGFiaXR1YWxseSBrZWVwcyAKb25l4oCZcyBjb25zY2lvdXNuZXNzLiBJZiBpdCBpcyBjZW50cmVkIGNoaWVmbHkgCmluIHRoZSBwaHlzaWNhbCBwbGFuZSBvbmUgc2VlcyBsaXR0bGUgYnV0IAp0aGUgbWlzZXJ5LCBidXQgd2hlbiBpdCBiZWNvbWVzIHBvc3NpYmxlIAp0byBjZW50cmUgaXQgYXQgYSBoaWdoZXIgbGV2ZWwgdGhlIGpveSAKYmV5b25kIGFsd2F5cyBzaGluZXMgdGhyb3VnaC4gSSBrbm93IHRoZSAKQnVwcHlhIHNhaWQgdGhhdCBsaWZlIHdhcyBtaXNlcnksIGFuZCBpdCAKaXMgcXVpdGUgdHJ1ZSBvbiB0aGUgd2hvbGUgd2l0aCByZWdhcmQgdG8gCnRoZSBtYW5pZmVzdGVkIGxpZmUgZG93biBoZXJlLCB5ZXQgdGhlIApHcmVla3MgYW5kIEVneXB0aWFucyBtYW5hZ2VkIHRvIGV4dHJhY3QgCm11Y2ggam95IGV2ZW4gZnJvbSB0aGlzIGxvd2VyIGxpZmUgYnkgdGFrLSAKaW5nIGl0IGZyb20gdGhlIHBoaWxvc29waGljYWwgcG9pbnQgb2Ygdmlldy4gCgpXZSBuZXZlciBsb3NlIGFueXRoaW5nIGJ5IG1ha2luZyAKdGhlIGJlc3Qgb2YgdGhpbmdzLCBidXQgZ2FpbiB2ZXJ5IG11Y2ggaW4gCmhhcHBpbmVzcyBhbmQgaW4gdGhlIHBvd2VyIG9mIG1ha2luZyAKb3RoZXJzIGhhcHB5LiBBcyBvdXIgc3ltcGF0aHkgYW5kIG91ciAKbG92ZSBncm93IHdlIHNoYWxsIGJlIGFibGUgdG8gcmVjZWl2ZSAKCgpLTk9XIFRIWVNFTEYgMjY3IAoKCndpdGhpbiBvdXJzZWx2ZXMgYWxsIHRoZSBzdHJlYW1zIG9mIGVtb3Rpb24gCmFuZCBvZiB0aG91Z2h0IHdoaWNoIGNvbWUgdG8gdXMgZnJvbSAKb3RoZXJzLCBhbmQgeWV0IHdlIF8gc2hhbGwgcmVtYWlu4oCZIHdpdGhpbiAKb3Vyc2VsdmVzIHVuYWZmZWN0ZWQsIGNhbG0gYW5kIGpveW91cywgbGlrZSAKdGhlIGdyZWF0IG9jZWFuIHdoaWNoIHJlY2VpdmVzIHRoZSB3YXRlcnMgCm9mIG1hbnkgcml2ZXJzIGFuZCB5ZXQgcmVtYWlucyBhbHdheXMgaW4gCmVxdWlsaWJyaXVtLiAKClRoZSBpbm5lciBsaWZlIG9mIGFuIGFzcGlyYW50IG91Z2h0IG5vdCAKdG8gYmUgb25lIG9mIGNvbnRpbnVhbCBvc2NpbGxhdGlvbi4gT3V0ZXIgCm1vb2RzIGNoYW5nZSBjb25zdGFudGx5IGJlY2F1c2UgdGhleSBhcmUgCmFmZmVjdGVkIGJ5IGFsbCBzb3J0cyBvZiBvdXRzaWRlIGluZmx1ZW5jZXMuIApJZiB5b3UgZmluZCB5b3Vyc2VsZiBkZXByZXNzZWQsIGl0IG1heSBiZSAKZHVlIHRvIGFueSBvbmUgb2YgaGFsZi1hLWRvemVuIHJlYXNvbnMsIG5vbmUgCm9mIHRoZW0gb2YgYW55IHJlYWwgaW1wb3J0YW5jZS4gVGhlIHBoeXMtIAppY2FsIGJvZHkgaXMgYSBmZXJ0aWxlIHNvdXJjZSBvZiBzdWNoIGlsbHM7IAphIHRyaWZsaW5nIGluZGlnZXN0aW9uLCBhIHNsaWdodCBjb25nZXN0aW9uIGluIAp0aGUgY2lyY3VsYXRpb24sIG9yIGEgbGl0dGxlIG92ZXItZmF0aWd1ZSBtYXkgCmFjY291bnQgZm9yIG1hbnkgY29uZGl0aW9ucyB3aGljaCBmZWVsIHF1aXRlIApzZXJpb3VzLiBFdmVuIG1vcmUgZnJlcXVlbnRseSBkZXByZXNzaW9uIGlzIApjYXVzZWQgYnkgdGhlIHByZXNlbmNlIG9mIHNvbWUgYXN0cmFsIGVudGl0eSAKd2hvIGlzIGhpbXNlbGYgZGVwcmVzc2VkLCBhbmQgaXMgaG92ZXJpbmcgCnJvdW5kIHlvdSBlaXRoZXIgaW4gc2VhcmNoIG9mIHN5bXBhdGh5IG9yIAppbiB0aGUgaG9wZSBvZiBkcmF3aW5nIGZyb20geW91IHRoZSB2aXRhbC0gCml0eSB3aGljaCBoZSBsYWNrcy4gV2UgbXVzdCBzaW1wbHkgbGVhcm4gCnRvIGRpc3JlZ2FyZCBkZXByZXNzaW9uIGFsdG9nZXRoZXLigJR0byB0aHJvdyAKaXQgb2ZmIGFzIGEgc2luIGFuZCBhIGNyaWluZSBhZ2FpbnN0IG91ciAKbmVpZ2hib3Vycywgd2hpY2ggaXQgcmVhbGx5IGlzOyBidXQsIGFueWhvdywgCndoZXRoZXIgd2UgY2FuIHN1Y2NlZWQgZnVsbHkgaW4gZGlzcGVyc2luZyAKCgoyNjggQURZQVIgVEFMS1MgCgoKaXRzIGNsb3VkcyBvciBub3Qgd2UgbXVzdCBsZWFybiBzaW1wbHkgdG8gCmdvIG9uIGFzIHRob3VnaCBpdCB3ZXJlIG5vdCB0aGVyZS4gCgpZb3VyIG1pbmQgaXMgeW91ciBvd24gbWluZCwgaW50byB3aGljaCAKeW91IHNob3VsZCBhbGxvdyBlbnRyYW5jZSBvbmx5IHRvIHN1Y2ggCnRob3VnaHRzIGFzIHlvdSwgdGhlIGVnbywgY2hvb3NlLiBZb3VyIAphc3RyYWwgYm9keSBpcyBhbHNvIHlvdXIgb3duLCBhbmQgXyB5b3UgCnNob3VsZCBub3QgYWxsb3cgaW4gaXQgYW55IHNlbnNhdGlvbnMgZXhjZXB0IAp0aG9zZSB3aGljaCBhcmUgZ29vZCBmb3IgdGhlIGhpZ2hlciBzZWxmLiAKU28geW91IG11c3QgbWFuYWdlIHRoZXNlIHZpYnJhdGlvbnMgb2YgCmRlcHJlc3Npb24sIGFuZCBhYnNvbHV0ZWx5IGRlY2xpbmUgdG8gZ2l2ZSAKaGFyYm91cmFnZSB0byB0aGVtLiDigJhUaGV5IG11c3Qgbm90IGJlIAphbGxvd2VkIHRvLiBpbXBpbmdlIHVwb24geW91LiBJZiB0aGV5IGRvIApzTyBpbXBpbmdlIHRoZXkgbXVzdCBub3QgYmUgcGVybWl0dGVkIAp0byBlZmZlY3QgYSBsb2RnbWVudC4gSWYsIHRvIHNvbWUgc2xpZ2h0IApleHRlbnQsIGluIHNwaXRlIG9mIHlvdXIgZWZmb3J0cywgdGhleSBkbyAKaGFuZyBhYm91dCB5b3UsIHRoZW4gaXQgaXMgeW91ciBkdXR5IHRvIAppZ25vcmUgdGhlbSBhbmQgdG8gbGV0IG5vIG9uZSBlbHNlIGtub3cgCnRoYXQgdGhleSBldmVuIGV4aXN0LiAKClNvbWV0aW1lcyBwZW9wbGUgdGVsbCBtZSB0aGV5IGhhdmUgaGFkIAptb21lbnRzIG9mIHNwbGVuZGlkIGluc3BpcmF0aW9uIGFuZCBleC0gCmFsdGF0aW9uLCBhbmQgZ2xvd2luZyBkZXZvdGlvbiBhbmQgXyBqb3kuIApUaGV5IGRvIG5vdCByZWFsaXNlIHRoYXQgdGhlc2UgYXJlIHByZWNpc2VseSAKdGhlIG1vbWVudHMgd2hlbiB0aGUgaGlnaGVyIHNlbGYgc3VjY2VlZHMgCmluIGltcHJlc3NpbmcgaGltc2VsZiB1cG9uIHRoZSBsb3dlciwgYW5kIAp0aGF0IGFsbCB0aGF0IHdoaWNoIHRoZXkgZmVlbCBpcyB0aGVyZSBhbGwgdGhlIAp0aW1lLCBidXQgdGhlIGxvd2VyIHNlbGYgaXMgbm90IGFsd2F5cyBjb25zY2lvdXMgCm9mIGl0LiBSZWFsaXNlIGJ5IHJlYXNvbiBhbmQgYnkgZmFpdGggdGhhdCAKaXQsIGlzIGFsd2F5cyB0aGVyZSwgYW5kIGl0IGJlY29tZXMgYXMgdGhvdWdoIAoKCktOT1cgVEhZU0VMRiAyNjkgCgoKd2UgZmVsdCBpdCwgZXZlbiBpbiB0aGUgdGltZSB3aGVuIHRoZSBsaW5rIAppcyBpbXBlcmZlY3QgYW5kIGRvd24gaGVyZSB3ZSBmZWVsIGl0IApub3QuIAoKQnV0IG1hbnkgYSBtYW4sIHdoaWxlIGFkbWl0dGluZyB0aGUgCnRydXRoIG9mIHRoaXMgaW4gdGhlIGFic3RyYWN0LCB5ZXQgc2F5cyB0aGF0IApoZSBjYW5ub3QgcGVycGV0dWFsbHkgZmVlbCB0aGlzIGhhcHBpbmVzcyAKYmVjYXVzZSBvZiBoaXMgb3duIGRlZmVjdHMgYW5kIF8gY29uc3RhbnQgCmZhaWx1cmVzLiBIaXMgYXR0aXR1ZGUgaW4gZmFjdCBpcyB2ZXJ5IG11Y2ggCnRoYXQgYWRvcHRlZCBpbiB0aGUgbGl0YW55OiDigJwgSGF2ZSBtZXJjeSAKdXBvbiB3dXMgbWlzZXJhYmxlIHNpbm5lcnMu4oCdIE5vdyB3ZSBhcmUgCmFsbCBzaW5uZXJzIGluIHRoZSBzZW5zZSB0aGF0IHdlIGFsbCBmYWxsIApzaG9ydCBvZiB3aGF0IHdlIG91Z2h0IHRvIGRvLCBhbmQgXyBjb24tIApzdGFudGx5IGRvIHdoYXQgd2Ugb3VnaHQgbm90IHRvIGRvLCBidXQgCnRoZXJlIGlzIG5vIG5lZWQgdG8gYWdncmF2YXRlIHRoZSBvZmZlbmNlIApieSBiZWluZyBtaXNlcmFibGUgc2lubmVycy4gQSBtaXNlcmFibGUgCnBlcnNvbiBpcyBhIHB1YmxpYyBudWlzYW5jZSwgYmVjYXVzZSBoZSBpcyAKYSBjZW50cmUgb2YgaW5mZWN0aW9uLCDigJxhbmQgaXMgc3ByZWFkaW5nIAptaXNlcnkgYW5kIHNvcnJvdyBhbGwgcm91bmQgdXBvbiBoaXMgdW4tIApmb3J0dW5hdGUgbmVpZ2hib3Vyc+KAlGEgdGhpbmcgd2hpY2ggbm8gbWFuIApoYXMgYSByaWdodCB0byBkby4gQW55IG1hbiB3aXRoIGp1c3QgdGhlIApzYW1lIGZlZWxpbmdzLCB3aG8gY29udHJpdmVzIHRvIGtlZXAgaGltc2VsZiAKcmVhc29uYWJseSBoYXBweSBldmVuIHdoaWxlIG1ha2luZyBkZXRlci0gCm1pbmVkIGVmZm9ydHMgZm9yIHJlZm9ybSwgaXMgbm90IGluanVyaW5nIApvdGhlcnMgaW4gYXQgYWxsIHRoZSBzYW1lIHdheS4gCgpQZW9wbGUgd2hvIHRoaW5rIGFuZCBzcGVhayBvZiB0aGVtc2VsdmVzIAphcyBtaXNlcmFibGUgd29ybXMgYXJlIGdvaW5nIGV4YWN0bHkgdGhlIApyaWdodCB3YXkgdG8gbWFrZSB0aGVtc2VsdmVzIG1pc2VyYWJsZSAKd29ybXMsIGZvciB3aGF0IGEgbWFuIHRoaW5rcywgdGhhdCBoZSAxcy4gCgoKMjcwIEFEWUFSIFRBTEtTIAoKCkFsbCBzdWNoIHRhbGsgaXMgdXN1YWxseSBoeXBvY3Jpc3ksIGFzIHlvdSAKbWF5IGVhc2lseSBzZWUgZnJvbSB0aGUgZmFjdCB0aGF0IHRoZSBtYW4gCndobyBzbyByZWFkaWx5IGNhbGxzIGhpbXNlbGYgYSBtaXNlcmFibGUgCndvcm0gaW4gY2h1cmNoIHdvdWxkIGZlZWwgZGlzdGluY3RseSBtc3VsdGVkIAppZiBhbnlib2R5IGVsc2UgY2FsbGVkIGhpbSBzbyBpbiBvcmRpbmFyeSDCsCAKZGFpbHkgbGlmZS4gQW5kIHdoZXRoZXIgaXQgaXMgaHlwb2NyaXRpY2FsIG9yIApub3QgaXQgaXMgY2VydGFpbmx5IG5vbnNlbnNlLCBmb3Igd2UgcGFzc2VkIAp0aGUgcmVwdGlsaWFuIHN0YWdlIG9mIGV2b2x1dGlvbiBsb25nIGFnbywgaWYgCndlIGV2ZXIgd2VyZSBpbiBpdC4gQW55b25lIHdobyB1bmRlcnN0YW5kcyAKYXQgYWxsIHRoZSBpbmZsdWVuY2Ugb2YgdGhvdWdodCB3aWxsIHJlYWxpc2UgCnRoYXQgYSBtYW4gd2hvIHJlYWxseSB0aGlua3MgaGltc2VsZiBhIAptaXNlcmFibGUgd29ybSBoYXMgYWxyZWFkeSBkZXByaXZlZCBoaW1uc2VsdCAKb2YgYW55IHBvd2VyIG9mIHJpc2luZyBvdXQgb2YgdGhhdCBzdGF0ZSwgd2hpbGUgCnRoZSBtYW4gd2hvIHJlYWxpc2VzIHN0cm9uZ2x5IHRoYXQgaGUgaXMgYSAKc3Bhcmsgb2YgdGhlIGRpeWluZSBsaWZlIHdpbGwgZmVlbCBldmVyIGhvcGVmdWwgCmFuZCBqb3lvdXMsIGJlY2F1c2UgaW4gZXNzZW5jZSB0aGUgZGl2aW5lIGlzIAphbHdheXMgam95LiBJdCBpcyBhIGdyZWF0IG1pc3Rha2UgdG8gd2FzdGUgCnRpbWUgaW4gcmVwZW50YW5jZTsgd2hhdCBpcyBwYXN0IGlzIHBhc3QsIGFuZCAKbm8gYW1vdW50IG9mIHJlbW9yc2UgY2FuIHVuZG8gaXQuIEFzIG9uZSAKb2Ygb3VyIG93biBNYXN0ZXJzIG9uY2Ugc2FpZCwg4oCcVGhlIG9ubHkgCnJlcGVudGFuY2UgdGhhdCBpcyB3b3J0aCBhbnl0aGluZyB3aGF0ZXZlciAKaXMgdGhlIHJlc29sdmUgbm90IHRvIGRvIGl0IGFnYWluLuKAnSAKCgpBU0NFVElDSVNNIAoKClNvbWUgbWlzdGFrZW4gaWRlYXMgc2VlbSBwcmV2YWxlbnQgYW1vbmcgCm91ciBtZW1iZXJzIHVwb24gdGhlIHN1YmplY3Qgb2YgYXNjZXRpY2lzbSwgCgoKQVNDRVRJQ0lTTSAyNzEgCgoKYW5kIGl0IG1heSBiZSB3b3J0aCB3aGlsZSB0byBjb25zaWRlciAKd2hhdCBpdCByZWFsbHkgaXMsIGFuZCBob3cgZmFyIGl0IG1heSBiZSAKdXNlZnVsLiBUaGUgd29yZCBpcyB1c3VhbGx5IHRha2VuIHRvIHNpZ25pZnkgCmEgbGlmZSBvZiBhdXN0ZXJpdGllcyBhbmQgb2YgbW9ydGlmaWNhdGlvbiBvZiAKdGhlIGJvZHksIHRob3VnaCB0aGlzIGlzIHNvbWV3aGF0IG9mIGEgCmRlcGFydHVyZSBmcm9tIHRoZSBvcmlnaW5hbCBtZWFuaW5nIG9mIHRoZSAKR3JlZWsgd29yZCBhc2tldGVzLCB3aGljaCBpcyBzaW1wbHkgb25lIAp3aG8gZXhlcmNpc2VzIGhpbXNlbGYgYXMgYW4gYXRobGV0ZSBkb2VzLiAKQnV0IGVjY2xlc2lhc3RpY2lzbSBpbXBvdW5kZWQgdGhlIHdvcmQgYW5kIApjaGFuZ2VkIGl0cyBzZW5zZSwgYXBwbHlpbmcgaXQgdG8gdGhlIHByYWMtIAp0aWNlIG9mIGFsbCBzb3J0cyBvZiBzZWxmLWRlbmlhbCBmb3IgdGhlIApwdXJwb3NlIG9mIHNwaXJpdHVhbCBwcm9ncmVzcywgb24gdGhlIHRoZW9yeSAKdGhhdCB0aGUgYm9kaWx5IG5hdHVyZSB3aXRoIGl0cyBwYXNzaW9ucyBhbmQgCmRlc2lyZXMgaXMgdGhlIHN0cm9uZ2hvbGQgb2YgdGhlIGV2aWwgaW4tIApoZXJlbnQgaW4gbWFuIHNpbmNlIHRoZSBmYWxsIG9mIEFkYW0sIGFuZCAKdGhhdCBpdCBtdXN0IHRoZXJlZm9yZSBiZSBzdXBwcmVzc2VkIGJ5IApmYXN0aW5nIGFuZCBwZW5hbmNlLiBJbiB0aGUgZ3JhbmRlciBPcmllbnQtIAphbCByZWxpZ2lvbnMgd2Ugc29tZXRpbWVzIGVuY291bnRlciBhIApzaW1pbGFyIGlkZWEsIGJhc2VkIG9uIHRoZSBjb25jZXB0aW9uIG9mIAptYXR0ZXIgYXMgZXNzZW50aWFsbHkgZXZpbCwgYW5kIGZvbGxvd21nIGZyb20gCnRoYXQgdGhlIGRlZHVjdGlvbiB0aGF0IGFuIGFwcHJvYWNoIHRvIAppZGVhbCBnb29kIG9yIGFuIGVzY2FwZSBmcm9tIHRoZSBtaXNlcmllcyAKb2YgZXhpc3RlbmNlIGNhbiBiZSBlZmZlY3RlZCBvbmx5IGJ5IHN1Yi0gCmR1aW5nIG9yIHRvcnR1cmluZyB0aGUgYm9keS4gCgpUaGUgc3R1ZGVudCBvZiBUaGVvc29waHkgd2lsbCBhdCBvbmNlIApzZWUgdGhhdCBpbiBib3RoIHRoZXNlIHRoZW9yaWVzIHRoZXJlIGlzIGRpcmUgCmNvbmZ1c2lvbiBvZiB0aG91Z2h0LiBUaGVyZSBpcyBubyBldmlsIGluLSAKaGVyZW50IGluIG1hbiBleGNlcHQgc3VjaCBhcyBoZSBoYXMgaGltLSAKCgoyNzIgQURZQVIgVEFMS1MgCgoKc2VsZiBnZW5lcmF0ZWQgaW4gcHJldmlvdXMgYmlydGhzOyBub3IgaXMgCm1hdHRlciBlc3NlbnRpYWxseSBldmlsLCBzaW5jZSBpdCBpcyBqdXN0IGFzIAptdWNoIGRpdmluZSBhcyBpcyBzcGlyaXQsIGFuZCB3aXRob3V0IGl0IGFsbCAKbWFuaWZlc3RhdGlvbiBvZiB0aGUgRGVpdHkgd291bGQgYmUgaW1wb3NzaS0gCmJsZS4gVGhlIGJvZHkgYW5kIGl0cyBkZXNpcmVzIGFyZSBub3QgaW7igJkgCnRoZW1zZWx2ZXMgZXZpbCBvciBnb29kLCBidXQgaXQgaXMgdHJ1ZSB0aGF0IApiZWZvcmUgcmVhbCBwcm9ncmVzcyBjYW4gYmUgbWFkZSB0aGV5IG11c3QgCmJlIGJyb3VnaHQgdW5kZXIgdGhlIGNvbnRyb2wgb2YgdGhlIGhpZ2hlciAKc2VsZiB3aXRoaW4uIFRvIHRvcnR1cmUgdGhlIGJvZHkgaXMgZm9vbGlzaCA7IAp0byBnb3Zlcm4gaXQgaXMgbmVjZXNzYXJ5LiDigJxUaGUgbWVuIHdobyAKcGVyZm9ybSBzZXZlcmUgYXVzdGVyaXRpZXMgLi4uIHVuaW50ZWxsaWdlbnQsIAp0b3JtZW50aW5nIHRoZSBhZ2dyZWdhdGVkIGVsZW1lbnRzIGZvcm1pbmcgCnRoZSBib2R5LCBhbmQgTWUgYWxzbywgc2VhdGVkIGluIHRoZSBpbm5lciAKYm9keeKAlGtub3cgdGhlc2UgZGVtb25pYWNhbCBpbiB0aGVpciByZS0gCnNvbHZlcy7igJ0gKEJoYWdxYXZhZC1HaXRhICwgeHZpaS4gNSwgNi4pIEFuZCAKYWdhaW4sIOKAmOKAnOKAmFRoZSBhdXN0ZXJpdHkgZG9uZSB1bmRlciBhIGRlbHVkLSAKZWQgdW5kZXJzdGFuZGluZywgd2l0aCBzZWxmLXRvcnR1cmUsIC4uLiB0aGF0IAppcyBkZWNsYXJlZCBvZiBkYXJrbmVzcy7igJ0gKEpiaWQsIHh2aS4gMTkuKSAKClRoZXJlIGFwcGVhcnMgdG8gYmUgYSB3aWRlbHktc3ByZWFkIGRlLSAKbHVzaW9uIHRoYXQgdG8gYmUgcmVhbGx5IGdvb2Qgb25lIG11c3QgYWwtIAp3YXlzIGJlIHVuY29tdG9ydGFibGXigJR0aGF0IGRpc2NvbWZvcnQgYXMgCnN1Y2ggaXMgZGlyZWN0bHkgcGxlYXNpbmcgdG8gdGhlIExvZ29zLiAKTm90aGluZyBjYW4gYmUgbW9yZSBncm90ZXNxdWUgdGhhbiB0aGlzIAppZGVhLCBhbmQgaW4gdGhlIGFib3ZlIHF1b3RlZCB0ZXh0cyBmcm9tIAp0aGUgQmhhZ2F2YWQtR2l0YSB3ZSBoYXZlIGEgaGludCB0aGF0IGl0IAppcyBwZXJoYXBzIHdvcnNlIHRoYW4gZ3JvdGVzcXVlLCBmb3IgaXQgaXMgCnRoZXJlIHNhaWQgdGhhdCB0aGV5IHdobyB0b3JtZW50IHRoZSBib2R5IAphcmUgdG9ybWVudGluZyB0aGUgTG9jb3MgZW5zaHJpbmVkIGluIGl0LiAKCgpBU0NFVElDSVNNIDI3MyAKCgpXaXRoIHVzIGluIEV1cm9wZSB0aGlzIHVuZm9ydHVuYXRlbHkgY29tLSAKbW9uIHRoZW9yeSBpcyBvbmUgb2YgdGhlIG1hbnkgXyBob3JyaWJsZSAKbGVnYWNpZXMgbGVmdCB1cyBieSB0aGUgZ2hhc3RseSBibGFzcGhlbXkgCm9mIENhbHZpbmlzbS4gSSBteXNlbGYgaGF2ZSBhY3R1YWxseSBoZWFyZCAKYSBjaGlsZCBzYXk6IOKAnEkgZmVlbCBzbyBoYXBweSB0aGF0IEkgYW0gCnN1cmUgW0kgbXVzdCBiZSB2ZXJ5IHdpY2tlZOKAneKAlGEgXyB0cnVseSAKYXdmdWwgcmVzdWx0IG9mIGNyaW1pbmFsbHkgZGlzdG9ydGVkIHRlYWNoaW5nLiAKCk91ciBNYXN0ZXJzLCB3aG8gYXJlIHNvIGZhciBhYm92ZSB1cywgCmFyZSBmdWxsIG9mIGpveTsgZnVsbCBvZiBzeW1wYXRoeSwgYnV0IG5vdCAKb2Ygc29ycm93LiBXZSBhbHNvIG11c3QgZmVlbCBzeW1wYXRoeSAKd2l0aCBvdGhlcnMsIGJ1dCBub3QgaWRlbnRpZnkgb3Vyc2VsdmVzIHdpdGggCnRoZWlyIHNvcnJvdy4gQSBtYW4gaW4gZ3JlYXQgdHJvdWJsZSBjYW4gCmp1ZGdlIG5vdGhpbmcgY2xlYXJseS4gVG8gaGlzIHZpc2lvbiBhbGxdIHRoZSAKd29ybGQgc2VlbXMgZGFyaywgYW5kIGl0IGFwcGVhcnMgYXMgaWYgbm8gCm9uZSBzaG91bGQgYmUgaGFwcHkuIFdoZW4gaGUgaXMgaW4gZ3JlYXQgCmpveSwgYWxsIHRoZSB3b3JsZCBhcHBlYXJzIGJyaWdodCwgYW5kIGl0IApzZWVtcyBhcyBpZiBubyBvbmUgb3VnbGl0IHRvIGJlIHVuaGFwcHkuIApZZXQgbm90aGluZyBpcyBjaGFuZ2VkLCBub3QgZXZlbiBoZSBoaW0tIApzZWxmLCBidXQgb25seSBoaXMgYXN0cmFsIGJvZHkuIEFsbCB0aGUgd29ybGQgCmlzIGdvaW5nIG9uIGp1c3QgdGhlIHNhbWUsIHdoZXRoZXIgeW91IGFyZSAKaGFwcHkgb3IgdW5oYXBweS4gRG8gbm90IGlkZW50aWZ5IHlvdXItIApzZWxmIHdpdGggeW91ciBhc3RyYWwgYm9keSwgYnV0IHRyeSB0byBnZXQgCm91dCBvZiB0aGlzIHdlYiBvZiBpbGx1c2lvbiwgdGhlc2UgcGVyc29uYWwgCm1vb2RzLiAKCk5vIGRvdWJ0IHRoaXMgbHVkaWNyb3VzIHRoZW9yeSBvZiB0aGUgCm1lcml0IG9mIGRpc2NvbWZvcnQgY29tZXMgcGFydGx5IGZyb20gdGhlIAprbm93bGVkZ2UgdGhhdCBpbiBvcmRlciB0byBtYWtlIHByb2dyZXNzIAoKCm1hbiBtdXN0IGNvbnRyb2wgaGlzIHBhc3Npb25zLCBhbmQgZnJvbSAKMzUgCgoKMjc0IEFEWUFSIFRBTEtTIAoKCuKAmHRoZSBmYWN0IHRoYXQgc3VjaCBjb250cm9sIGlzIGRpc2FncmVlYWJsZSAKdG8gdGhlIHVuZXZvbHZlZCBwZXJzb24uIEJ1dCB0aGUgZGlzY29tZm9ydCAKaXMgdmVyeSBmYXIgZnJvbSBiZWluZyBtZXJpdG9yaW91czsgb24gdGhlIApjb250cmFyeSwgaXQgaXMgYSBzaWduIHRoYXQgdGhlIHZpY3RvcnkgaXMgbm90IAp5ZXQgYWNoaWV2ZWQuIEl0IGFyaXNlcyBmcm9tIHRoZSBmYWN0IHRoYXQgCnRoZSBsb3dlciBuYXR1cmUgaXMgbm90IHlldCBkb21pbmF0ZWQsIGFuZCAKdGhhdCBhIHN0cnVnZ2xlIGlzIHN0aWxsIHRha2luZyBwbGFjZS4gV2hlbiAKdGhlIGNvbnRyb2wgaXMgcGVyZmVjdCB0aGVyZSB3aWxsIG5vIGxvbmdlciBiZSAKYW55IGRlc2lyZSBmb3IgdGhlIGxvd2VyLCBjb25zZXF1ZW50bHkgbm8gCnN0cnVnZ2xlIGFuZCBubyBkaXNjb21mb3J0LiBUaGUgbWFuIF8gd2lsbCAKbGl2ZSB0aGUgcm1naHQgaGZlIGFuZCBhdm9pZCB0aGUgbG93ZXIgYmVjYXVzZSAKaXQgaXMgcGVyZmVjdGx5IG5hdHVyYWwgZm9yIGhpbSB0byBkbyBzb+KAlG5vIApsb25nZXIgYmVjYXVzZSBoZSB0aGlua3MgaGUgb3VnaHQgdG8gbWFrZSAKdGhlIGVmZm9ydCwgZXZlbiB0aG91Z2ggaXQgbWF5IGJlIGRpZmZpY3VsdCAKZm9yIGhpbS4gTm8gdGhhdCB0aGUgZGlzY29tZm9ydCBleGlzdHMgb25seSAKYXQgYW4gaW50ZXJtZWRpYXRlIHN0YWdlLCBhbmQgbm90IGl0LCBidXQgaXRzIAphYnNlbmNlLCAxcyB0aGUgc2lnbiBvZiBzdWNjZXNzLiAKCkFub3RoZXIgcmVhc29uIGZvciB0aGUgZ29zcGVsIG9mIHRoZSB1bi0gCmNvbWZvcnRhYmxlIGlzIGEgY29uZnVzaW9uIG9mIGNhdXNlIGFuZCBlZmZlY3QuIApJdCBpcyBvYnNlcnZlZCB0aGF0IHRoZSByZWFsbHkgYWR2YW5jZWQgcGVyc29uIAppcyBzaW1wbGUgaW4gaGlzIGhhYml0cywgYW5kIG9mdGVuIGNhcmVsZXNzIAphYm91dCBhIGxhcmdlIG51bWJlciBvZiBtaW5vciBsdXh1cmllcyB0aGF0IAphcmUgY29uc2lkZXJlZCBpbXBvcnRhbnQgYW5kIHJlYWxseSBuZWNlcy0gCnNhcnkgYnkgdGhlIG9yZGluYXJ5IG1hbi4gQnV0IHN1Y2ggCmNhcmVsZXNzbmVzcyBhYm91dCBsdXh1cnkgaXMgdGhlIGVmZmVjdCwgbm90IAp0aGUgY2F1c2UsIG9mIGhpcyBhZHZhbmNlbWVudC4gSGUgZG9lcyAKbm90IHRyb3VibGUgaGltc2VsZiBhYm91dCB0aGVzZSBsaXR0bGUgbWF0LSAKdGVycyBiZWNhdXNlIGhlIGhhcyBsYXJnZWx5IG91dGdyb3duIHRoZW0gCgoKQVNPRVRJQ0lTTSAyNzUgCgoKYW5kIHRoZXkgbm8gbG9uZ2VyIGludGVyZXN0IGhpbeKAlG5vdCBpbiAKdGhlIGxlYXN0IGJlY2F1c2UgaGUgY29uc2lkZXJzIHRoZW0gYXMgCndyb25nOyBhdWQgb25lIHdobywgd2hpbGUgc3RpbGwgY3JhdmluZyAKZm9yIHRoZW0sIGltaXRhdGVzIGhpbSBpbiBhYnN0YWluaW5nIGZyb20gCuKAmCB0aGVtLCBkb2VzIG5vdCB0aGVyZWJ5IGJlY29tZSBhZHZhbmNlZC4gCkF0IGEgY2VydGFpbiBzdGFnZSBhIGNoaWxkIHBsYXlzIHdpdGggZG9sbHMgCmFuZCBicmlja3M6IGEgZmV3IHllYXJzIGxhdGVyIGhlIGhhcyBiZS0gCmNvbWUgYSBib3kgYW5kIGhpcyBwbGF5IGlzIGNyaWNrZXQgYW5kIApmb290YmFsbDsgbGF0ZXIgYWdhaW4gd2hlbiBoZSBpcyBhIHlvdW5nIAptYW4gdGhlc2UgaW0gdHVybiBsb3NlIG11Y2ggb2YgdGhlaXIgaW4tIAp0ZXJlc3QsIGFuZCBoZSBiZWdpbnMgdG8gcGxheSB0aGUgZ2FtZSBvZiAKbG92ZSBhbmQgaGZlLiBCdXQgYW4gaW5mYW50IHdobyBjaG9vc2VzIAp0byBpbWl0YXRlIGhpcyBlbGRlcnMsIHdobyB0aHJvd3MgYXNpZGUgaGlzIApkb2xscyBhbmQgYnJpY2tzIGFuZCBhdHRlbXB0cyB0byBwbGF5IApjcmlja2V0LCBkb2VzIG5vdCB0aGVyZWJ5IHRyYW5zY2VuZCBoaXMgaW4tIApmYW5jeS4gQXMgaGlzIG5hdHVyYWwgZ3Jvd3RoIHRha2VzIHBsYWNlIApoZSBwdXRzIGF3YXkgY2hpbGRpc2ggdGhpbmdzOyBidXQgaGUgY2FuLSAKbm90IGZvcmNlIHRoZSBncm93dGggbWVyZWx5IGJ5IHB1dHRpbmcgCnRoZXNlIGF3YXksIGFuZCBwbGF5aW5nIGF0IGJlaW5nIG9sZGVyLiAKVGhlcmUgaXMgbm8gdmlydHVlIHdoYXRldmVyIG1lcmVseSBtIApiZWluZyB1bmNvbWZvcnRhYmxlIGZvciBkaXNjb21mb3J04oCZcyBzYWtlIDsgCmJ1dCB0aGVyZSBhcmUgdGhyZWUgY2FzZXMgbSB3aGljaCB2b2x1bi0gCnRhcnkgZGlzY29tZm9ydCBtYXkgYmUgYSBwYXJ0IG9mIHByb2dyZXNzLiAKVGhlIGZpcnN0IGlzIHdoZW4gaXQgaXMgdW5kZXJ0YWtlbiBmb3IgdGhlIApzYWtlIG9mIGhlbHBpbmcgYW5vdGhlciwgYXMgd2hlbiBhIG1hbiAKbnVyc2VzIGEgc2ljayBmcmllbmQgb3IgbGFib3VycyBoYXJkIHRvIHN1cC0gCnBvcnQgaGlzIGZhbWlseS4gVGhlIHNlY29uZCBpcyB3aGVuIGEgCm1hbiByZWFsaXNlcyB0aGF0IHNvbWUgaGFiaXQgdG8gd2hpY2ggaGUgCgoKKDI3NiBBRFlBUiBUQUxLUyAKCgppcyBhZGRpY3RlZCBpcyBhIGhpbmRyYW5jZSBpbiBoaXMgdXB3YXJkIAp3YXnigJRzdWNoIGEgaGFiaXQsIHNheSwgYXMgdG9iYWNjby1zbW9rLSAKaW5nLCBhbGNvaG9sLWRyaW5raW5nLCBvciBjb3Jwc2UtZWF0aW5nLiAKSWYgaGUgYmUgaW4gZWFybmVzdCBoZSBnaXZlcyB1cCB0aGUgaGFiaXQgCmluc3RhbnRseSwgYnV0IGJlY2F1c2UgdGhlIGJvZHkgMXMgYWNjdXN0b20tICcgCmVkIHRvIHRoYXQgcGFydGljdWxhciBmb3JtIG9mIHBvbGx1dGlvbiBpdCAKbWlzc2VzIGl0LCBjcmllcyBvdXQgZm9yIGl0LCBhbmQgY2F1c2VzIHRoZSAKbWFuIGEgZ3JlYXQgZGVhbCBvZiB0cm91YmxlLiBJZiBoZSBob2xkcyAKZmlybSB0byBoaXMgcmVzb2x1dGlvbiBoaXMgYm9keSB3aWxsIHByZXNlbnQtIApseSBhZGFwdCBpdHNlbGYgdG8gdGhlIG5ldyBjb25kaXRpb25zLCBhbmQgCndoZW4gaXQgaGFzIGRvbmUgc28gdGhlcmUgd2lsbCBiZSBubyBmdXItIAp0aGVyIGRpc2NvbWZvcnQuIEJ1dCBpbiB0aGUgaW50ZXJtZWRpYXRlIApzdGFnZSwgd2hpbGUgdGhlIGJhdHRsZSBmb3IgbWFzdGVyeSBiZXR3ZWVuIAp0aGUgbWFuIGFuZCBoaXMgYm9keSBpcyBzdGlsbCBiZWluZyBmb3VnaHQsIAp0aGVyZSBtYXkgYmUgYSBnb29kIGRlYWwgb2Ygc3VmZmVyaW5nLCBhbmQgCnRoaXMgbXVzdCBiZSB0YWtlbiBhcyB0aGUga2FybWEgb2YgaGF2aW5nIAphZG9wdGVkIHRoZSB2aWNlIHdoaWNoIGhlIGlzIG5vdyBmb3JzYWstIAppbmcuIFdoZW4gdGhlIHN1ZmZlcmluZyBwYXNzZXMgdGhlIGthcm1hIAppcyBwYWlkLCB0aGUgdmljdG9yeSBpcyB3b24sIGFuZCBhIHN0ZXAgaW4gCmV2b2x1dGlvbiBpcyBhY2hpZXZlZC4gCgpJIGFtIGF3YXJlIHRoYXQgdGhlcmUgYXJlIHJhcmUgY2FzZXMgKHdoZW4gCnBlb3BsZSBhcmUgcGh5c2ljYWxseSB2ZXJ5IHdlYWspIGluIHdoaWNoIGl0IAptaWdodCBiZSBkYW5nZXJvdXMgdG8gcmVsaW5xdWlzaCBhXyBiYWQgaGFiaXQgCmluc3RhbnRhbmVvdXNseS4gVGhlIG1vcnBoaW5lIGhhYml0IGlzIGFuIAppbnN0YW5jZSBpbiBwb2ludDsgb25lIHdobyBpcyBhIHZpY3RpbSB0byBpdHMgCmhvcnJvcnMgdXN1YWxseSBmaW5kcyBpdCBuZWNlc3NhcnkgZ3JhZHVhbGx5IAp0byBkZWNyZWFzZSB0aGUgZG9zZSwgYmVjYXVzZSB0aGUgc3RyYWluIApvZiBhYnJ1cHQgY2Vzc2F0aW9uIG1pZ2h0IHdlbGwgYmUgZ3JlYXRlciAKCgpBU0NFVElDSVNNIDI3NyAKCgp0aGFuIHRoZSBwaHlzaWNhbCBib2R5IGNvdWxkIGVuZHVyZS4gSXQgd291bGQgCnNlZW0gdGhhdCB0aGVyZSBhcmUgY2VydGFpbiBwaXRpYWJsZSBjYXNlcyAKaW4gd2hpY2ggdGhlIHNhbWUgc3lzdGVtIG9mIGdyYWR1YWwgZGVjcmVhc2UgCm11c3QgYmUgYXBwbGllZCB0byB0aGUgZmxlc2gtZWF0aW5nIGhhYml0LiAK4oCYIERvY3RvcnMgdGVsbCB1cyB0aGF0IHdoaWxlIHRoZSBkaWdlc3Rpb24gb2YgCmZsZXNoIHRha2VzIHBsYWNlIGNoaWVmbHkgaW4gdGhlIHN0b21hY2gsIAp0aGF0IG9mIG1vc3Qg4oCYZm9ybXMgb2YgdmVnZXRhYmxlIGZvb2QgYmUtIApsb25ncyByYXRoZXIgdG8gdGhlIHdvcmsgb2YgdGhlIGludGVzdGluZXMgOyAKYW5kIHRoZXJlZm9yZSBhIHBlcnNvbiBpbiB2ZXJ5IHdlYWsgaGVhbHRoIApzb21ldGltZXMgZmluZHMgaXQgYWR2aXNhYmxlIHRvIGdpdmUgdG8gdGhlc2UgCnZhcmlvdXMgb3JnYW5zIGEgY2VydGFpbiBhbW91bnQgb2YgdGltZSB0byAKYWRqdXN0IHRoZW1zZWx2ZXMgdG8gdGhlIG5lY2Vzc2FyeSBjaGFuZ2UsIAphbmQgdG8gcHJhY3Rpc2UsIGFzIGl0IHdlcmUsIHRoZSBmdW5jdGlvbnMgCndoaWNoIHRoZXkgYXJlIG5vdyByZXF1aXJlZCB0byBmdWxmaWwuIFRoZSAKc3RlYWR5IHByZXNzdXJlIG9mIHRoZSB3aWxsLCBob3dldmVyLCB3aWxsIApzb29uIGJyaW5nIHRoZSBib2R5IGludG8g4oCYc3ViamVjdGlvbiBhbmQgCmFkYXB0IGl0IHRvIHRoZSBuZXcgb3JkZXIgb2YgdGhpbmdzLiAKClRoZSB0aGlyZCBjYXNlIGluIHdoaWNoIGRpc2NvbWZvcnQgbWF5IApoYXZlIGl0cyB1c2UgaXMgd2hlbiBhIG1hbiBkZWxpYmVyYXRlbHkuIApmb3JjZXMgaGlzIGJvZHkgdG8gZG8gc29tZXRoaW5nIHdoaWNoIGl0IApkaXNsaWtlcywgaW4gb3JkZXIgdG8gbWFrZSBzdXJlIHRoYXQgaXQgCndpbGwgb2JleSBoaW0gd2hlbiBuZWNlc3NhcnkuIEJ1dCBpdCAKbXVzdCBiZSBkaXN0aW5jdGx5IHVuZGVyc3Rvb2QgdGhhdCBldmVuIHRoZW4gCnRoZSBtZXJpdCBpcyBpbiB0aGUgcmVhZHkgb2JlZGllbmNlIG9mIHRoZSAKYm9keSwgYW5kIG5vdCBpbiBpdHMgc3VmZmVyaW5nLiBJbiB0aGlzIAp3YXkgYSBtYW4gbWF5IGdyYWR1YWxseSBsZWFybiBpbmRpZmZlcmVuY2UgCnRvIG1hbnkgb2YgdGhlIG1pbW9yIGlsbHMgb2YgbGlmZSwgYW5kIApzbyBzYXZlIGhpbXNlbGYgbXVjaCB3b3JyeSBhbmQgXyBpcnJpdGF0aW9uLiAKCgoyNzggQURZQVIgVEFMS1MgCgoKSW4gdGh1cyB0cmFpbmluZyBoaW1zZWxmIGluIHdpbGwsIGFuZCBoaXMgCmJvZHkgaW4gb2JlZGllbmNlLCBoZSBtdXN0IGJlIGNhcmVmdWwgdG8gCmF0dGVtcHQgb25seSBzdWNoIHRoaW5ncyBhcyBhcmUgYWR2YW50YWdlLSAKb3VzLiBUaGUgSGF0aGEgWW9naSBkZXZlbG9wZXMgd2lsbC1wb3dlciwgCmFzc3VyZWRseSwgd2hlbiBoZSBob2xkcyBoaXMgYXJtIGFib3Zl4oCZIApoaXMgaGVhZCB1bnRpbCBpdCB3aXRoZXJzOyBidXQgd2hpbGUgaGUgCmdhaW5zIGVub3Jtb3VzbHkgaW4gd2lsbC1wb3dlciBoZSBhbHNvIGxvc2VzIAp0aGUgdXNlIG9mIGhpcyBhcm0uIFRoZSB3aWxsLXBvd2VyIGNhbiAKYmUgZGV2ZWxvcGVkIGp1c3QgYXMgd2VsbCBieSBzb21lIGVmZm9ydCAKdGhlIHJlc3VsdCBvZiB3aGljaCB3aWxsIGJlIHBlcm1hbmVudGx5IAp1c2VmdWwgaW5zdGVhZCBvZiBwZXJtYW5lbnRseSBoYW1wZXJpbmfigJRieSAKdGhlIGNvbnF1ZXN0LCBmb3IgZXhhbXBsZSwgb2YgaXJyaXRhYmlsaXR5IG9yIApwcmlkZSwgaW1wYXRpZW5jZSBvciBzZW5zdWFsaXR5LiBJdCB3b3VsZCBiZSAKd2VsbCBpZiBhbGwgd2hvIGZlZWwgYSB5ZWFybmluZyBmb3IgYXNjZXQtIAppY2lzbSB3b3VsZCB0YWtlIHRvIGhlYXJ0IHRoZSB3b3JkcyBvZiAKd2lzZG9pbiBpbiB0aGUgQmhhZ2F2dWQtKGl0ZWEgOiAKCuKAnFB1cml0eSwgc3RyYWlnaHRmb3J3YXJkbmVzcywgY29udGluZW5jZSAKdW5kIGhhcm1sZXNzbmVzcyBhcmUgY2FsbGVkIHRoZSBhdXN0ZXJpdHkgCm9mIHRoZSBib2R5LiBTcGVlY2ggY2F1c2luZyBubyBhbm5veWFuY2UsIAp0cnV0aGZ1bCwgcGxlYXNhbnQgYW5kIGJlbmVmaWNpYWwuIC4gLmlzIGNhbGxlZCAKdGhlIGF1c3Rlcml0eSBvZiBzcGVlY2guIE1lbnRhbCBoYXBwaW5lc3MsIAplcXVpbGlicml1bSwgc2lsZW5jZSwgc2VsZi1jb250cm9sLCBwdXJpdHkgb2YgCm5hdHVyZeKAlHRoaXMgaXMgY2FsbGVkIHRoZSBhdXN0ZXJpdHkgb2YgdGhlIAptaW5kLuKAnSAoeHZuLiAxNCwgMTUsIDE2LikgCgpOb3RlIGVzcGVjaWFsbHkgdGhhdCBpbiB0aGlzIGxhc3QgdmVyc2UgbWVuLSAKdGFsIGhhcHBpbmVzcyBpcyBkZXNjcmliZWQgYXMgdGhlIGZpcnN0IApjaGFyYWN0ZXJpc3RpYyBvZiB0aGUgYXVzdGVyaXR5IG9mIHRoZSBtaW5k4oCUIAp0aGUgZmlyc3Qgc2lnbiBvZiB0aGUgcGVyZmVjdCBzZWxmLWNvbnRyb2wgCgoKQVNDRVRJQ0lTTSAyNzkgCgoKbmVjZXNzYXJ5IGZvciBvbmUgd2hvIHdpc2hlcyB0byBtYWtlIHJlYWwgCnByb2dyZXNzLiBJdCBpcyBlbXBoYXRpY2FsbHkgb3VyIGR1dHkgdG8gCmJlIGhhcHB5OyBtb3JiaWRpdHksIGdsb29tIG9yIGRlcHJlc3Npb24gCm1lYW4gYWx3YXlzIGZhaWx1cmUgYW5kIHdlYWtuZXNzLCBiZWNhdXNlIArigJggdGhleSBtZWFuIHNlbGZpc2huZXNzLiBUaGUgbWFuIHdobyBhbGxvd3MgCmhpbXNlbGYgdG8gYnJvb2Qgb3ZlciBoaXMgb3duIHNvcnJvd3Mgb3IgCndyb25ncyBpcyBmb3JnZXR0aW5nIGlzIGR1dHkgdG8gaGlzIApmZWxsb3dzLiBIZSBwZXJtaXRzIGhpbXNlbGYgdG8gYmVjb21lIGEgCmNlbnRyZSBvZiBpbmZlY3Rpb24sIHNwcmVhZGluZyBnbG9vbSBpbnN0ZWFkIApvZiBqb3kgYW1vbmcgaGlzIGJyZXRocmVuOyB3aGF0IGlzIHRoaXMgCmJ1dCB0aGUgZ3Jvc3Nlc3Qgc2VsZmlzaG5lc3M/IElmIHRoZXJlIApiZSBhbnkgb25lIHdobyBmZWVscyBhIF8geWVhcm5pbmcgZm9yIAphc2NldGljaXNtLCBsZXQgaGltIHRha2UgdXAgdGhpcyBtZW50YWwgCmF1c3Rlcml0eSBhZHZpc2VkIGluIHRoZSBzY3JpcHR1cmUsIGFuZCAKcmVzb2x2ZSB0aGF0IHdoYXRldmVyIG1heSBiZSBfIGhpcyBwcml2YXRlIAp0cm91YmxlcyBvciBzdWZmZXJpbmdzIGhlIHdpbGwgZm9yZ2V0IGhpbXNlbGYsIAphbmQgdGhlbSBmb3IgdGhlIHNha2XigJkgb2Ygb3RoZXJzLCBzbyBfIHRoYXQgCmhlIG1heSBldmVyIGJlIHBvdXJpbmcgZm9ydGggdXBvbiBoaXMgCmZlbGxvdy1waWxncmltcyB0aGUgcmFkaWFudCBoYXBwaW5lc3Mgd2hpY2ggCmNvbWVzIGZyb20gdGhlIGZ1bGxlciBrbm93bGVkZ2Ugb2YgdGhlIApUaGVvc29waGlzdCwgZXZlciBoZWxwaW5nIHRoZW0gdG93YXJkcyB0aGUgCnJlYWxpc2F0aW9uIHRoYXQg4oCcIEJyYWhtYW4gaXNfIGJsaXNzLuKAnSAKCgoyODAgQURZQVIgVEFMS1MgCgoKU21hTHQgV29yclJ0Z3MgCgoKVW5uZWNlc3Nhcnkgd29ycnkgYXBwZWFycyB0byBiZSB0aGUgCmtleS1ub3RlIG9mIG1vZGVybiBsaWZlLiBOb3Qgb25seSB0aG9zZSAKd2hvIGFyZSBtYWtpbmcgc3BlY2lhbCBlZmZvcnRzIHRvIHByb2dyZXNzIAphcmUgbWFraW5nIHRoZW1zZWx2ZXMgdW5yZWFzb25hYmx5IHVuY29tLSAKZm9ydGFibGUsIGJ1dCB0aGUgc2FtZSB2aWNlIGlzIHF1aXRlIGNvbW1vbiAKZXZlbiBpbiBvcmRpbmFyeSBsaWZlLiBUaGUgYXN0cmFsIGJvZHkgb2YgCnRoZSBhdmVyYWdlIG1hbiBpcyBhIHNhZCBzaWdodCBmb3IgYSAKY2xhaXJ2b3lhbnQuIFRoZSBpbGx1c3RyYXRpb24gaW4gTWFuIFZpc2libGUgCmFuZCBJbnZpc2libGUgKHAuIDEzMSkgc2hvd3Mgd2hhdCBhbiBhc3RyYWwgCmJvZHkgb3VnaHQgdG8gYmXigJRtZXJlbHkgYSByZWZsZWN0aW9uIG9mIAp0aGUgY29sb3VycyBvZiB0aGUgbWVudGFsLCBpbmRpY2F0aW5nIHRoYXQgCnRoZSBtYW4gYWxsb3dz4oCdIGhpbXNlbGYgdG8gZmVlbCBvbmx5IHdoYXQgCmhpcyByZWFzb24gZGljdGF0ZXMuIEJ1dCBpZiB0aGF0IGJlIF8gdG9vIApnbnVjaCB0byBleHBlY3QgYXQgdGhpcyBzdGFnZSBvZiBldm9sdXRpb24sIAp0aGUgcGljdHVyZSBvbiBwLiAxMDIgZ2l2ZXMgdXMgYW4gYXNzb3J0LSAKbWVudCBvZiBjb2xvdXJzIHdoaWNoIHJlcHJlc2VudHMgLWFuIGF2ZXJhZ2UgCmFzdHJhbCBib2R5IHdoZW4gY29tcGFyYXRpdmVseSBhdCByZXN0LiBJbiAKaXQgdGhlcmUgYXJlIG1hbnkgaHVlcyB3aGljaCBzaG93IHRoZSAKcHJlc2VuY2Ugb2YgdW5kZXNpcmFibGUgcXVhbGl0aWVz4oCUcXVhbGl0aWVzIAp3aGljaCBzaG91bGQgYmUgd2VlZGVkIG91dCBhcyBzb29uIGFzIAptYXkgYmU6IGJ1dCB0aGF0IHNpZGUgb2YgdGhlIHN1YmplY3QgaXMgCnRyZWF0ZWQgaW4gdGhlIGJvb2ssIGFuZCBpdCBpcyB0byBhbm90aGVyIApmZWF0dXJlIHRoYXQgSSB3aXNoIG5vdyB0byBkcmF3IGF0dGVudGlvbi4gCgpJIGhhdsOpIHNhaWQgdGhhdCB0aGUgaWxsdXN0cmF0aW9uIHNob3dzIAp3aGF0IGFuIG9yZGluYXJ5IHVuZGV2ZWxvcGVkIGFzdHJhbCBib2R5IAp3b3VsZCBsb29rIGxpa2UgaWYgY29tcGFyYXRpdmVseSBhdCByZXN0OyAKCgpTTUFMTCBXT1JSSUVTIDI4MSAKCgpidXQgb25lIG9mIHRoZSBldmlscyBvZiB3aGF0IHdlIGhhdmUgCmFncmVlZCB0byBjYWxsIGNpdmlsaXNhdGlvbiBpcyB0aGF0IGhhcmRseSAKYW55IGFzdHJhbCBib2R5IGV2ZXIgaXMgZXZlbiBjb21wYXJhdGl2ZWx5IAphdCByZXN0LiBPZiBjb3Vyc2UgaXQgaXMgdW5kZXJzdG9vZCB0aGF0IAp0aGUgbWF0dGVyIG9mIGFuIGFzdHJhbCBib2R5IG11c3QgYWx3YXlzIApiZSBpbiBwZXJwZXR1YWwgdmlicmF0aW9uLCBhbmQgZWFjaCBvZiB0aGUgCmNvbG91cnMgdGhhdCB3ZSBzZWUgaW4gdGhlIGRyYXdpbmcgbWFya3MgCmEgZGlmZmVyZW50IHJhdGUgb2YgdGhhdCB2aWJyYXRpb247IGJ1dCB0aGVyZSAKc2hvdWxkIGJlIGEgY2VydGFpbiBvcmRlciBpbiB0aGlzLCBhbmQgYSAKY2VydGFpbiBsaW1pdCB0byBpdC4gVGhlIG1vcmUgZGV2ZWxvcGVkIAptYW4gKG9uIHAuIDEzMSkgaGFzIGZpdmUgcmF0ZXMgb2YgdmlicmF0aW9uLCAKYnV0IHRoZSBvcmRpbmFyeSBtYW4gc2hvd3MgYXQgbGVhc3QgbmluZSAKcmF0ZXMsIHdpdGggYSBtaXh0dXJlIG9mIHZhcnlpbmcgc2hhZGVzIGluIAphZGRpdGlvbi4gVGhhdCBpcyBjbGVhcmx5IG5vdCBzbyBnb29kIGFzIAp0aGUgb3RoZXIsIGJ1dCB0aGUgY2FzZSBvZiB0aGUgbWFqb3JpdHkgCm9mIHBlb3BsZSBpbiB0aGUgV2VzdCBpcyByZWFsbHkgZmFyIHdvcnNlIAp0aGFuIHRoYXQuIFRvIGhhdmUgZXZlbiBuaW5lIHJhdGVzIG9mIApzaW11bHRhbmVvdXMgdmlicmF0aW9uIGlzIGFscmVhZHkgYmFkIGVub3VnaCwgCmJ1dCBpbiB0aGUgYXN0cmFsIGJvZHkgb2YgbWFueSBhIG1hbiAKYW5kIHdvbWFuIG9uZSBtaWdodCBlYXNpbHkgb2JzZXJ2ZSBmaWZ0eSAKcmF0ZXMgb3IgZXZlbiBhIGh1bmRyZWQuIFRoZSBib2R5IHNob3VsZCAKYmUgZGl2aWRlZCBpbnRvIGEgZmV3IGZhaXJseSBkZWZpbml0ZSBhcmVhc3MgCmVhY2ggc3dpbmdpbmcgc3RlYWRpbHkgYXQgaXRzIG5vcm1hbCByYXRlLCAKYnV0IGluc3RlYWQgb2YgdGhhdCwgaXRzIHN1cmZhY2UgaXMgdXN1YWxseSAKYnJva2VuIHVwIGludG8gYSBtdWx0aXBsaWNpdHkgb2YgdHRsZSB3aGlybC0gCnBvb2xzIGFuZCBjcm9zcy1jdXJyZW50cywgYWxsIGJhdHRsaW5nIG9uZSAKYWdhaW5zdCB0aGUgb3RoZXIgaW4gdGhlIG1hZGRlc3QgY29uZnVzaW9uLiAKCkFsbCB0aGVzZSBhcmUgdGhlIHJlc3VsdCBvZiBodHRsZSB1bm5lY2VzLSAKCgoyODIgQURZQVIgVEFMS1MgCgoKc2FyeSBlbW90aW9ucyBhbmQgd29ycmllcywgYW5kIHRoZSBvcmRpbmFyeSAKcGVyc29uIG9mIHRoZSBXZXN0IGlzIHNpbXBseSBhIG1hc3Mgb2YgCnRoZXNlLiBIZSBpcyB0cm91YmxlZCBhYm91dCB0aGlzIHRoaW5nLCBoZSAKaXMgYW5ub3llZCBhYm91dCB0aGF0LCBoZSBpcyBpbiBmZWFyIGFib3V0IGEgCnRoaXJkLCBhbmQgc28gb247IGhpcyB3aG9sZSBsaWZlIGlzIGZpbGxlZCAKd2l0aCBwZXR0eSBsaXR0bGUgZW1vdGlvbnMsIGFuZCBhbGwgaGlzIApzdHJlbmd0aCBpcyBmcml0dGVyZWQgYXdheSBvbiB0aGVtLiBBIApyZWFsbHkgZ3JlYXQgZW1vdGlvbiwgYmUgaXQgZ29vZCBvciBiYWQsIApzd2VlcHMgb3ZlciB0aGUgd2hvbGUgb2YgYSBtYW7igJlzIGFzdHJhbCAKYm9keSBhbmQgZm9yIHRoZSB0aW1lIGJyaW5ncyBpdCBhbGwgdG8gb25lIApyYXRlIG9mIHZpYnJhdGlvbjsgYnV0IHRoZXNlIHNtYWxsIHdvcnJpZXMgCm1ha2UgbGl0dGxlIHZvcnRpY2VzIG9yIGNlbnRyZXMgb2YgbG9jYWwgZGlzLSAKdHVyYmFuY2UsIGVhY2ggb2Ygd2hpY2ggcGVyc2lzdHMgZm9yIGEgCmNvbnNpZGVyYWJsZSB0aW1lLiAKClRoZSBhc3RyYWwgYm9keSB3aGljaCB0aHVzIHZpYnJhdGVzIGZpZnR5IAp3YXlzIGF0IG9uY2UgaXMgYSBibG90IHVwb24gdGhlIGxhbmRzY2FwZSAKYW5kIGEgbnVpc2FuY2UgdG8gaXRzIG5laWdoYm91cnMuIEl0IGlzIApub3Qgb25seSBhIHZlcnkgdWdseSBvYmplY3TigJRpdCBpcyBhbHNvIGEgCnNlcmlvdXMgYW5ub3lhbmNlLiBJdCBtYXkgYmUgY29tcGFyZWQgdG8gCmEgcGh5c2ljYWwgYm9keSBzdWZmZXJtZyBmcm9tIHNvbWUgdW51c3VhbC0gCmx5IGFnZ3JhdmF0ZWQgZm9ybSBvZiBwYWxzeSwgd2l0aCBhbGwgaXRzIAptdXNjbGVzIGplcmtpbmcgc2ltdWx0YW5lb3VzbHkgaW4gZGlmZmVyZW50IApkaXJlY3Rpb25zLiBCdXQgdG8gbWFrZSB0aGUgaWxsdXN0cmF0aW9uIGV2ZW4gCnBhcnRpYWxseSBhZGVxdWF0ZSB3ZSBzaG91bGQgaGF2ZSB0byBhc3N1bWUgCnRoYXQgdGhpcyBwYWxzeSB3YXMgY29udGFnaW91cywgb3IgdGhhdCBldmVyeSAKb25lIHdobyBzYXcgaXRzIHVuZm9ydHVuYXRlIHJlc3VsdHMgZmVsdCAKYW4gaXJyZXNpc3RpYmxlIHRlbmRlbmN5IHRvIHJlcHJvZHVjZSB0aGVtLiAKRm9yIHRoaXMgaG9ycmlibGUgY2hhb3Mgb2YgY2F0YXN0cm9waGljIGNvbi0gCgoKU01BTEwgV09SUklFUyAyODMgCgoKZnVzaW9uIHByb2R1Y2VzIGFuIHVucGxlYXNhbnQgYW5kIG1vc3QgCmRpc3R1cmJpbmcgZWZmZWN0IHVwb24gYWxsIHNlbnNpdGl2ZSBwZW9wbGUgCndobyBhcHByb2FjaCBpdDsgaXQgaW5mZWN0cyB0aGVpciBhc3RyYWwgCmJvZGllcyBhbmQgY29tbXVuaWNhdGVzIHRvIHRoZW0gYSBwYWluZnVsIApzZW5zYXRpb24gb2YgdW5yZXN0IGFuZCB3b3JyeS4gCgpPbmx5IGEgZmV3IGhhdmUgeWV0IHVuZm9sZGVkIHRoZSBmYWN1bC0gCnRpZXMgd2hpY2ggZW5hYmxlIHRoZW0gdG8gc2VlIHRoaXMgbWFsZWZpY2VudCAKaW5mbHVlbmNlIGluIGFjdGlvbjsgYSBsYXJnZXIgbnVtYmVyIGFyZSAKdmFndWVseSBjb25zY2lvdXMgb2YgZGlzY29tZm9ydCB3aGVuIHRoZXkgCmFwcHJvYWNoIG9uZSBvZiB0aGVzZSBmdXNzeSBwZXJzb25zOyBidXQgCnByb2JhYmx5IHRoZSBtYWpvcml0eSBmZWVsIG5vdGhpbmcgZGVmaW5pdGUgCmF0IHRoZSB0aW1lIG9mIG1lZXRpbmcsIHRob3VnaCBsYXRlciBpbiB0aGUgCmRheSB0aGV5IHdpbGwgcHJvYmFibHkgd29uZGVyIHdoeSB0aGV5IAphcmUgc28gaW5leHBsaWNhYmx5IGZhdGlndWVkLiBUaGUgZWZmZWN0IGlzIAp0aGVyZSBhbmQgdGhlIGhhcm0gaXMgZG9uZSwgd2hldGhlciBpdCBiZSAKaW1tZWRpYXRlbHkgcGVyY2VwdGlibGUgb3Igbm90LiAKCkEgcGVyc29uIHdobyBpcyBzby1mb29saXNoIGFzIHRvIGFsbG93IApoaW1zZWxmIHRvIGdldCBpbnRvIHRoaXMgY29uZGl0aW9uIGRvZXMgbXVjaCAKaGFybSB0byBtYW55LCBidXQgbW9zdCBvZiBhbGwgdG8gaGltc2VsZi4gCkZyZXF1ZW50bHkgdGhlIHBlcnBldHVhbCBhc3RyYWwgZGlzdHVyYmFuY2UgCnJlYWN0cyB0aHJvdWdoIHRoZSBldGhlcmljIHVwb24gdGhlIGRlbnNlIApwaHlzaWNhbCB2ZWhpY2xlLCBhbmQgYWxsIHNvcnRzIG9mIG5lcnZvdXMgCmRpc2Vhc2VzIGFyZSBwcm9kdWNlZC4gTmVhcmx5IGFsbCBuZXJ2ZS0gCnRyb3VibGVzIGFyZSB0aGUgZGlyZWN0IHJlc3VsdCBvZiB1bm5lY2Vzc2FyeSAKd29ycnkgYW5kIGVtb3Rpb24sIGFuZCB3b3VsZCBzb29uIGRpc2FwcGVhciAKaWYgdGhlIHBhdGllbnQgd291bGQgYnV0IGhvbGQgaGlzIHZlaGljbGVzIApzdGlsbCBhbmQgcG9zc2VzcyBoaXMgc291bCBpbiBwZWFjZS4gCgpCdXQgZXZlbiBpbiBjYXNlcyB3aGVyZSBhIHN0cm9uZyBwaHlzLSAKCgo5ODQsIEFEWUFSIFRBTEtTIAoKCmljYWwgYm9keSBpcyBhYmxlIHN1Y2Nlc3NmdWxseSB0byByZXNpc3QgdGhpcyAKY29uc3RhbnQgaXJyaXRhdGlvbiBmcm9tIHRoZSBhc3RyYWwsIGl0cyBlZmZlY3QgCnVwb24gaXRzIG93biBwbGFuZSBpcyBubyBsZXNzIGRpc2FzdHJvdXMuIApUaGVzZSB0aW55IGNlbnRyZXMgb2YgaW5mbGFtbWF0aW9uIHdoaWNoIAp0aHVzIGNvdmVyIHRoZSB3aG9sZSBhc3RyYWwgYm9keSBhcmUgCnRvIGl0IHdoYXQgYm9pbHMgYXJlIHRvIHRoZSBwaHlzaWNhbCAKYm9keeKAlG5vdCBvbmx5IHRoZW1zZWx2ZXMgY2F1c2VzIG9mIGFjdXRlIApkaXNjb21mb3J0LCBzb3JlIHNwb3RzIHRoZSBsZWFzdCB0b3VjaCB1cG9uIAp3aGljaCBwcm9kdWNlcyB0ZXJyaWJsZSBwYWluLCBidXQgYWxzbyB3ZWFsIApzcG90cyB0aHJvdWdoIHdoaWNoIHRoZSBsaWZlLWJsb29kIG9mIHZpdGFsaXR5IApkcmFpbnMgYXdheSwgYW5kIHRocm91Z2ggd2hpY2ggYWxzbyBibG9vZC0gCnBvaXNvbmluZyBmcm9tIHdpdGhvdXQgbWF5IHRha2UgcGxhY2UuIEEgCnBlcnNvbiB3aG9zZSBhc3RyYWwgYm9keSBpcyBpbiB0aGlzIGRpc3RyYWN0LSAKZWQgY29uZGl0aW9uIGNhbiBvZmZlciBwcmFjdGljYWxseSBubyByZXNpc3QtIAphbmNlIHRvIGFueSBldmlsIGluZmx1ZW5jZSB3aGljaCBoZSBtYXkgCmVuY291bnRlciwgd2hpbGUgaGUgaXMgcXVpdGUgdW5hYmxlIHRvIHByb2ZpdCAKYnkgZ29vZCBpbmZsdWVuY2VzLiBIaXMgc3RyZW5ndGggZmxvd3Mgb3V0IAp0aHJvdWdoIHRoZXNlIG9wZW4gc29yZXMsIGF0IHRoZSBzYW1lIAp0aW1lIHRoYXQgYWxsIHNvcnRzIG9mIGRpc2Vhc2UtZ2VybXMgZmluZCAKZW50cmFuY2UgYnkgdGhlbS4gSGUgaXMgbm90IHVzaW5nIGFuZCAKY29udHJvbGxpbmcgbGlzIGFzdHJhbCBib2R5IGFzIGEgd2hvbGUsIGJ1dCAKYWxsb3dpbmcgaXQgdG8gYnJlYWsgdXAgaW50byBhIG51bWJlciAKb2Ygc2VwYXJhdGUgY2VudHJlcyBhbmQgY29udHJvbCAvaW0uIEhpcyAKbGl0dGxlIHdvcnJpZXMgYW5kIHZleGF0aW9ucyBlc3RhYmxpc2ggdGhlbS0gCnNlbHZlcyBhbmQgY29uZmlybSB0aGVpciBlbXBpcmUgb3ZlciBoaW0gCnVudGlsIHRoZXkgYmVjb21lIGEgbGVnaW9uIG9mIGRldmlscyB3aG8gCnBvc3Nlc3MgaGltIHNvIHRoYXQgaGUgY2Fubm90IGVzY2FwZSBmcm9tIAp0aGVtLiAKCgpTTUFMTCBXT1JSSUVTIDI4OSAKCgpUaGlzIGlzIGEgcGFpbmZ1bGx5IGNvbW1vbiBfIGNvbmRpdGlvbiA7IApob3cgaXMgYSBtYW4gdG8gYXZvaWQgZmFsbGluZyBpbnRvIGl0LCBhbmQgCmlmIGhlIGlzIGFscmVhZHkgaW4gaXQsIGhvdyBpcyBoZSB0byBnZXQgCm91dCBvZiBpdD8gVGhlIGFuc3dlciBpcyB0aGUgc2FtZSB0byBib3RoIApxdWVzdGlvbnM7IGxldCBoaW0gbGVhcm4gbm90IHRvIHdvcnJ5LCBub3QgCnRvIGZlYXIsIG5vdCB0byBiZSBhbm5veWVkLiBMZXQgaGltIHJlYXNvbiAKd2l0aCBoaW1zZWxmIGFzIHRvIHRoZSB1dHRlciB1bmltcG9ydGFuY2UgCm9mIGFsbCB0aGVzZSBsaXR0bGUgcGVyc29uYWwgbWF0dGVycyB3aGljaCAKaGF2ZSBsb29tZWQgc28gbGFyZ2UgdXBvbiBoaXMgaG9yaXpvbi4gCkxldCBoaW0gY29uc2lkZXIgaG93IHRoZXkgd2lsbCBhcHBlYXIgCndoZW4gaGUgbG9va3MgYmFjayB1cG9uIHRoZW0gZnJvbSB0aGUgCm5leHQgbGlmZSwgb3IgZXZlbiB0d2VudHkgeWVhcnMgaGVuY2UuIExldCAKaGltIGxheSB3ZWxsIHRvIGhlYXJ0IHRoZSB3b3JkcyBvZiB3aXNkb20sIAp0aGF0IG9mIGFsbCB0aGUgb3V0d2FyZCB0aGluZ3MgdGhhdCBoYXBwZW4gCnRvIGEgbWFuIOKAnG5vdGhpbmcgbWF0dGVycyBtdWNoLCBhbmQgbW9zdCAKdGhpbmdzIG1hdHRlciBub3QgYXQgYWxsLuKAnSBXaGF0IGhlIGhpbXNlbGYgCmRvZXMgb3Igc2F5cyBvciB0aGlua3MgdHMgb2YgaW1wb3J0YW5jZSB0byAKaGltLCBmb3IgdGhhdCBmb3JtcyBoaXMgZnV0dXJlOyB3aGF0IG90aGVyIApwZW9wbGUgZG8gb3Igc2F5IG9yIHRoaW5rIG1hdHRlcnMgdG8gaGltIApub3RoaW5nIHdoYXRldmVyLiBMZXQgaGltIGFic3RyYWN0IGhpbS0gCnNlbGYgZnJvbSBhbGwgdGhlc2UgbGl0dGxlIHBpbi1wcmlja3Mgb2YgZGFpbHkgCmxpZmUsIGFuZCBzaW1wbHkgZGVjbGluZSB0byBiZSB3b3JyaWVkIGJ5IAp0aGVtLiAKCkl0IHdpbGwgbmVlZCBzb21lIHJlc29sdXRpb24gYXQgZmlyc3QsIGZvciAKaXQgcmVxdWlyZXMgZWZmb3J0IHRvIGNvbnF1ZXIgYSB3ZWxsLWVzdGFibGlzaC0gCmVkIGJhZCBoYWJpdC4gSGUgd2lsbCBmaW5kIGhpcyBtaW5kIG11dHRlci0gCmluZyB0byBoaW0gb3ZlciBhbmQgb3ZlciBhZ2Fpbjog4oCcIE1ycy4gSm9uZXMgCnNwb2tlIGV2aWwgb2YgbWU7IHBlcmhhcHMgc2hlIGlzIGRvbWcgCgoKMjg2IEFEWUFSIOKAmFRBTEtTIAoKCml0IG5vdzsgcGVyaGFwcyBvdGhlciBwZW9wbGUgbWF5IGJlbGlldmUgCmhlcjsgcGVyaGFwcyBpdCBtYXkgZG8gbWUgaGFybSzigJ0gYW5kIHNvIG9uIAphZCBpbmZpbXR1bS4gQnV0IGhlIG11c3QgcmVwbHk7IOKAnEkgZG9u4oCZdCAKY2FyZSB3aGF0IE1ycy4gSm9uZXMgaGFzIHNhaWQsIHRob3VnaCBJIAphbSBzb3JyeSB0aGUgcG9vciB3b21hbiBzaG91bGQgbWFrZSAKc3VjaCBiYWQga2FybWEuIFsgYWJzb2x1dGVseSBkZWNsaW5lIHRvIAp0aGluayBvZiBpdCBvciBvZiBoZXIuIEkgaGF2ZSBteSB3b3JrIHRvIApkbywgYW5kIGhhdmUgbm8gdGltZSB0byB3YXN0ZSBpbiB0aGlua2luZyAKb2YgZm9vbGlzaCBnb3NzaXAu4oCdIAoKT3IgaXQgbWF5IGJlIHRoYXQgZm9yZWJvZGluZ3Mgb2YgY29taW5nIApldmlsIGFyZSBjb25zdGFudGx5IHRocnVzdGluZyB0aGVtc2VsdmVzIGludG8gCmhpcyBicmFpbjog4oCYIFBlcmhhcHMgbmV4dCB5ZWFyIEkgbWF5IGxvc2UgCm15IHBvc2l0aW9uOyBwZXJoYXBzIEkgc2hhbGwgYmUgc3RhcnZpbmcgOyAKcGVyaGFwcyBJIHNoYWxsIGJlIGJhbmtydXB0OyBwZXJoYXBzIEkgCm1heSBsb3NlIHRoZSBhZmZlY3Rpb24gb2Ygc29tZSBmcmllbmQu4oCdIApUaGlzIGFsc28gc2hvdWxkIGJlIG1ldCBmaXJtbHk6IOKAmCogUGVyaGFwcyAKYWxsIHRoZXNlIHRoaW5ncyBtYXkgaGFwcGVuLCBidXQgYWxzbyAKcGVyaGFwcyB0aGV5IG1heSBub3QsIGFuZCBpdCAxOCB1c2UtIApsZXNzIHRvIHRyeSB0byBjcm9zcyBhIGJyaWRnZSBiZWZvcmUgb25lIApjb21lcyB0byBpdC4gSSBzaGFsbCB0YWtlIGFsbCByZWFzb25hYmxlIApwcmVjYXV0aW9ucywgYW5kIHdoZW4gdGhhdCBpcyBkb25lIElsIApkZWNsaW5lIHRvIHRoaW5rIGZ1cnRoZXIgb2YgdGhlIG1hdHRlci4gCldvcnJ5aW5nIGNhbm5vdCBhZmZlY3Qgd2hhdGV2ZXIgbWF5IGJlIApjb21pbmcsIGJ1dCBpdCBjYW4gYW5kIGNlcnRhaW5seSB3aWxsIG1ha2UgCm1lIHVuZml0IHRvIG1lZXQgaXQuIFRoZXJlZm9yZSAxIHJlZnVzZSAKdG8gd29ycnk7IEkgZGVmaW5pdGVseSB0dXJuIG15IGJhY2sgb24gCnRoZSB3aG9sZSBzdWJqZWN0LuKAnSDigJggCgpBbm90aGVyIGNvbW1vbiBmb3JtIG9mIHdvcnJ5IHdoaWNoIAoKClNNQUxMIFdPUlJJRVMgMjg3IAoKCmxlYWRzIHRvIHRoZSBtb3N0IHNlcmlvdXMgcmVzdWx0cyBpcyAKdGhlIGZvbGx5IG9mIHRha2luZyBvZmZlbmNlIGF0IHNvbWV0aGluZyAKd2hpY2ggc29tZWJvZHkgZWxzZSBzYXlzIG9yIGRvZXMuIE9yZGluYXJ5IApjb21tb24tc2Vuc2Ugd291bGQgbGVhZCBhIG1hbiB0byBhdm9pZCAK4oCYdGhpcyBtaXN0YWtlLCBhbmQgeWV0IHRob3NlIHdobyBkbyBhdm9pZCAKaXQgYXJlIGZldy4gSXQgbmVlZHMgb25seSB0aGF0IHdlIApzaG91bGQgdGhpbmsgZGlzcGFzc2lvbmF0ZWx5IGFib3V0IHRoZSAKbWF0dGVyLCBhbmQgd2Ugc2hhbGwgc2VlIHRoYXQgd2hhdCB0aGUgCm90aGVyIG1hbiBoYXMgc2FpZCBvciBkb25lIOKAnGNhbm5vdCBtYWtlIAphbnkgZGlmZmVyZW5jZSB0byB1cy4gSWYgaGUgaGFzIHNhaWQgc29tZS0gCnRoaW5nIHdoaWNoIGhhcyBodXJ0IG91ciBmZWVsaW5ncywgd2UgbWF5IApiZSBzdXJlIHRoYXQgaW4gbmluZSBjYXNlcyBvbnQgb2YgdGVuIGhlIApoYXMgbm90IG1lYW50IGl0IHRvIGJlIG9mZmVuc2l2ZTsgd2h5IAp0aGVuIHNob3VsZCB3ZSBhbGxvdyBvdXJzZWx2ZXMgdG8gYmUgZGlzLSAKdHVyYmVkIGFib3V0IHRoZSBtYXR0ZXI/IEV2ZW4gaW4gdGhlIHJhcmUgCmNhc2VzIHdoZW4gYSByZW1hcmsgaXMgaW50ZW50aW9uYWxseSBydWRlIApvciBzcGl0ZWZ1bCwgd2hlcmUgYSBtYW4gaGFzIHNhaWQgc29tZS0gCnRoaW5nIHB1cnBvc2VseSB0byB3b3VuZCBhbm90aGVyLCBpdCBpcyAKc3RpbGwgZXhjZWVkaW5nbHkgZm9vbGlzaCBvZiB0aGF0IG90aGVyIHRvIAphbGxvdyBoaW1zZWxmIHRvIGZlZWwgaHVydC4gSWYgdGhlIG1hbiBoYWQgCmFuIGV2aWwgaW50ZW50aW9uIGluIHdoYXQgaGUgc2FpZCwgaGUgaXMgCm11Y2ggdG8gYmUgcGl0aWVkLCBmb3Igd2Uga25vdyB0aGF0IHVuZGVyIAp0aGUgbGF3IG9mIGRpdmluZSBqdXN0aWNlIGhlIHdpbGwgY2VydGFpbmx5IApzdWZmZXIgZm9yIGhpcyBmb29saXNobmVzcy4gV2hhdCBoZSBoYXMgc2FpZCAKbmVlZCBpbiBubyB3YXkgYWZmZWN0IHVzOyBmb3IsIGlmIHdlIHRoaW5rIApvZiBpdCwgbm8gZWZmZWN0IHdoYXRldmVyIGhhcyByZWFsbHkgYmVlbiAKcHJvZHVjZWQuIAoKVGhlIGlycml0YXRpbmcgd29yZCBkb2VzIG5vdCBpbiBhbnkgd2F5LSAKCgoyODggQURZQVIgVEFMS1MgCgoKaW5qdXJlIHVzLCBleGNlcHQgaW4gc28gZmFyIGFzIHdlIG1heSAKY2hvb3NlIHRvIHRha2UgaXQgdXAgYW5kIGluanVyZSBvdXJzZWx2ZXMgCmJ5IGJyb29kaW5nIG92ZXIgaXQgb3IgYWxsb3dpbmcgb3Vyc2VsdmVzIAp0byBiZSB3b3VuZGVkIGluIG91ciBmZWVsaW5ncy4gV2hhdCBhcmUgCnRoZSB3b3JkcyBvZiBhbm90aGVyLCB0aGF0IHdlIHNob3VsZCBsZXQgCm91ciBzZXJlbml0eSBiZSBkaXN0dXJiZWQgYnkgdGhlbT8gVGhleSAKYXJlIG1lcmVseSBhIHZpYnJhdGlvbiBpbiB0aGUgYXRtb3NwaGVyZSA7IAppZiBpdCBoYWQgbm90IGhhcHBlbmVkIHRoYXQgd2UgaGVhcmQgdGhlbSwgCm9yIGhlYXJkIG9mIHRoZW0sIHdvdWxkIHRoZXkgaGF2ZSBhZmZlY3RlZCAKdXM/IElmIG5vdCwgdGhlbiBpdCBpcyBvYnZpb3VzbHkgbm90IHRoZSAKd29yZHMgdGhhdCBoYXZlIGluanVyZWQgdXMsIGJ1dCB0aGUgZmFjdCAKdGhhdCB3ZSBoZWFyZCB0aGVtLiBTbyBpZiB3ZSBhbGxvdyBvdXItIApzZWx2ZXMgdG8gY2FyZSBhYm91dCB3aGF0IGEgbWFuIGhhcyBzYWlkLCAKaXQgaXMgd2Ugd2hvIGFyZSByZXNwb25zaWJsZSBmb3IgdGhlIGRpc3R1cmItIAphbmNlIGNyZWF0ZWQgaW4gb3VyIGFzdHJhbCBib2RpZXMsIGFuZCBfIG5vdCAKaGUuIHwgCgpUaGUgbWFuIGhhcyBkb25lIGFuZCBjYW4gZG8gXyBuby0gCnRoaW5nIHRoYXQgY2FuIGhhcm0gdXM7IGlmIHdlIF8gZmVlbCBodXJ0IAphbmQgaW5qdXJlZCBhbmQgdGhlcmVieSBtYWtlIG91cnNlbHZlcyBhIApncmVhdCBkZWFsIG9mIHRyb3VibGUsIHdlIGhhdmUgb25seSBvdXItIApzZWx2ZXMgdG8gdGhhbmsgZm9yIGl0LiBJZiBhIGRpc3R1cmJhbmNlIAphcmlzZXMgd2l0aGluIG91ciBhc3RyYWwgYm9kaWVzIGluIHJlZmVyZW5jZSAKdG8gd2hhdCBoZSBoYXMgc2FpZCwgdGhhdCBpcyBtZXJlbHkgYmUtIApjYXVzZSB3ZSBoYXZlIG5vdCB5ZXQgZ2FpbmVkIGNvbnRyb2wgb3ZlciAKdGhvc2UgYm9kaWVzOyB3ZSBoYXZlIG5vdCB5ZXQgZGV2ZWxvcGVkIHRoZSAKY2FsbW5lc3Mgd2hpY2ggZW5hYmxlcyB1cyB0byBsb29rIGRvd24gYXMgCnNvdWxzIHVwb24gYWxsIHRoaXMsIGFuZCBnbyBvbiBvdXIgd2F5IGFuZCAKYXR0ZW5kIHRvIG91ciBvd24gd29yayB3aXRob3V0IHRha2luZyB0aGUgCgoKU01BTEwgV09SUklFUyAyODkgCgoKc2xpZ2h0ZXN0IG5vdGljZSBvZiBmb29saXNoIG9yIHNwaXRlZnVsIHJlbWFya3MgCm1hZGUgYnkgb3RoZXIgbWVuLiBUaGlzIGlzIHRoZSBtZXJlc3QgCmNvbW1vbi1zZW5zZSwgeWV0IG5vdCBvbmUgaW4gYSBodW5kcmVkIHdpbGwgCmFjdCB1cG9uIGl0LiAKClRoZSBmYWN0IGlzIHRoYXQgYW55IG9uZSB3aG8gd2lzaGVzIHRvIApiZWNvbWUgYSBzdHVkZW50IG9mIG9jY3VsdGlzbSBtdXN0IG5vdCBoYXZlIAphbnkgcGVyc29uYWwgZmVlbGluZ3MgdGhhdCBjYW4gYmUgb2ZmZW5kZWQgCnVuZGVyIGFueSBjaXJjdW1zdGFuY2VzIHdoYXRldmVyLiBBIG1hbiAKd2hvIGhhcyB0aGVtIGlzIHN0aWxsIHRoaW5raW5nIG9mIGhpbXNlbGYgOyAKd2hlcmVhcyBvdXIgZHV0eSBpcyB0byBmb3JnZXQgb3Vyc2VsdmVzLCBpbiAKb3JkZXIgdG8gcmVtZW1iZXIgdGhlIGdvb2Qgb2Ygb3RoZXJzLiBOby0gCnRoaW5nIGNhbiBvZmZlbmQgeW91IGlmIHlvdSBoYXZlIHJlc29sdmVkIApub3QgdG8gYmUgb2ZmZW5kZWTigJRpZiB5b3UgYXJlIHRoaW5raW5nIG9ubHkgCmhvdyB0byBoZWxwIHRoZSBvdGhlciBtYW4sIGFuZCBub3QgYXQgYWxsIApvZiB5b3Vyc2VsZi4gCgpBbm90aGVyIHZhcmlhbnQgb2YgdGhlIGRpc2Vhc2UgaXMgbGVzcyBwZXItIApzb25hbCBhbmQgdGhlcmVmb3JlIGlzICQwIGZhciBsZXNzIGJsYW1lLSAKd29ydGh5LCBidXQgaGFyZGx5IGxlc3MgcHJlanVkaWNpYWwgdG8gcHJvLSAKZ3Jlc3MuIEl0IGlzIHRoZSBoYWJpdCBvZiBmdXNzaW5nIG92ZXIgdHJpZmxlcyAKaW4gYnVzaW5lc3Mgb3IgaW4gaG91c2Vob2xkIGFmZmFpcnMuIFRoaXMgCmFsd2F5cyBpbnZvbHZlcyBhIGxhY2sgb2YgZGlzY3JpbWluYXRpb24gYW5kIApvZiB0aGUgc2Vuc2Ugb2YgcGVyc3BlY3RpdmUuIEl0IGlzIHF1aXRlIHRydWUgCnRoYXQgYSBob3VzZWhvbGQgb3IgYV8gYnVzaW5lc3MgbXVzdCBiZSAKb3JkZXJseSwgdGhhdCB0aG5ncyBtdXN0IGJlIGRvbmUgcHVuY3R1YWxseSAKYW5kIGV4YWN0bHkgOyBidXQgdGhlIHdheSB0byBhY2hpZXZlIHRoaXMgaXMgCnRvIHNldCB1cCBhIGhpZ2ggaWRlYWwgYW5kIHByZXNzIHN0ZWFkaWx5IAp0b3dhcmRzIGl04oCUbm90IHRvIGlycml0YXRlIGV2ZXJ5IG9uZSBieSAKCgpjZWFzZWxlc3MsIHVzZWxlc3Mgd29ycnkuIFRoZSBwZXJzb24gd2hvIAo4NyB8IAoKCjI5MCBBRFlBUiBUQUxLUyAKCgppcyBzbyB1bmZvcnR1bmF0ZSBhcyB0byBiZSBhZmZsaWN0ZWQgd2l0aCAKYSBkaXNwb3NpdGlvbiBvZiB0aGlzIGtpbmQgc2hvdWxkIG1ha2UgYSAKbW9zdCBkZXRlcm1pbmVkIGZpZ2h0IGFnYWluc3QgaXQsIGZvciB1bnRpbCAKaGUgY29ucXVlcnMgaXQgaGUgd2lsbCBiZSBhIGZvcmNlIHdvcmtpbmcgCmFsd2F5cyBmb3IgZnJpY3Rpb24gYW5kIG5vdCBmb3IgcGVhY2UsIGFuZCAKc28gd2lsbCBiZSBvZiBsaXR0bGUgcmVhbCB1c2UgaW4gdGhlIHdvcmxkLiAKSGlzIHN5bXB0b21zIGRpZmZlciBzbGlnaHRseSBmcm9tIHRob3NlIG9mIAp0aGUgbW9yZSBwZXJzb25hbCB3b3JyaWVyOyBpbiBoaXMgY2FzZSB0aGVyZSAKYXJlIGZld2VyIG9mIHRoZSBjYXJidW5jdWxhciBfIHZvcnRpY2VzLCAKYnV0IHRoZXJlIGlzIGEgcGVycGV0dWFsIHRyZW1vciwgYW4gCnVucmVzdCBvZiB0aGUgd2hvbGUgYXN0cmFsIGJvZHkgd2hpY2ggaXMgCmVxdWFsbHkgZGlzcXVpZXRpbmcgdG8gb3RoZXJzLCBlcXVhbGx5IHN1Yi0gCnZlcnNpdmUgb2YgaGFwcGluZXNzIGFuZCBhZHZhbmNlbWVudCBmb3IgCnRoZSBmdXNzZXIgaGltc2VsZi4gCgpUaGUgbWFuIGludXN0IGxlYXJuIHRvIGJlIG1hc3RlciBvZiBoaXMgCm1pbmQgYW5kIGhpcyBmZWVsaW5ncywgYW5kIHN0ZWFkaWx5IHJlamVjdCAKZXZlcnkgdGhvdWdodCBhbmQgZW1vdGlvbiB3aGljaCBoaXMgaGlnaC0gCmVzdCBzZWxmIGRvZXMgbm90IGFwcHJvdmUuIEEgY2hhb3Mgb2YgCnBldHR5IGVtb3Rpb25zIGlzIHVud29ydGh5IG9mIGEgcmF0aW9uYWwgCmJlaW5nLCBhbmQgaXQgaXMgdG8gdGhlIGxhc3QgZGVncmVlIHVuZGlnbmktIApmaWVkIHRoYXQgbWFuLCB3aG8gaXMgYV8gc3Bhcmsgb2YgdGhlIApEaXZpbmUsIHNob3VsZCBhbGxvdyBoaW1zZWxmIHRvIGZhbGwgd25kZXIgCnRoZSBzd2F5IG9mIGhpcyBkZXNpcmUtZWxlbWVudGFs4oCUYSBfIHRoaW5nIAp0aGF0IGlzIG5vdCBldmVuIGEgbWluZXJhbCB5ZXQuIAoKSSBoYXZlIGFscmVhZHkgc2FpZCB0aGF0IHRoaXMgZGlzYXN0cm91cyAKYXN0cmFsIGNvbmZ1c2lvbiBpcyBvZnRlbiBwcmVqdWRpY2lhbCB0byBwaHlzLSAKaWNhbCBoZWFsdGg7IGJ1dCBpdCBpcyBpbnZhcmlhYmx5IHdvcnNlIHRoYW4gCnByZWp1ZGljaWFsIHRvIHByb2dyZXNzIG9uIHRoZSBwYXRo4oCUaXQgaXMgCgoKU01BTEwgV09SUklFUyAyOTEgCgoKYWJzb2x1dGVseSBmYXRhbCB0byBpdC4gT25lIG9mIHRoZSBmaXJzdCBncmVhdCAKbGVzc29ucyB0byBiZSBsZWFybnQgb24gdGhhdCBwYXRoIGlzIHBlcmZlY3QgCnNlbGYtY29udHJvbCwgYW5kIGEgbG9uZyBzdGFnZSBvbiB0aGUgd2F5IAp0byB0aGF0IGlzIGNvbXBsZXRlIGFic2VuY2Ugb2Ygd29ycnkuIEF0IApmaXJzdCwgZnJvbSBtZXJlIGhhYml0LCB0aGUgbWF0dGVyIG9mIHRoZSAKYXN0cmFsIGJvZHkgd2lsbCBzdGlsbCBiZSBzd2VwdCByZWFkaWx5IGludG8gCnVubmVjZXNzYXJ5IHZvcnRpY2VzLCBidXQgZXZlcnkgdGltZSB0aGF0IApoYXBwZW5zIHRoZSBtYW4gbXVzdCBmaXJtbHkgb2JsaXRlcmF0ZSAKdGhlbSwgYW5kIHJlc3RvcmUgdGhlIHN0ZWFkeSBzd2luZyBvZiB0aGUgCmZlZWxpbmdzIHdoaWNoIGhlLCBhcyBhbiBlZ28sIHJlYWxseSBkZXNpcmVzIAp0byBoYXZlLiAKCkxldCBoaW0gZmlsbCBoaW1zZWxmIHNvIGVudGlyZWx5IHdpdGggdGhlIApkaXZpbmUgbG92ZSB0aGF0IGl0IG1heSBiZSBldmVyIHBvdXJpbmcgCmZyb20gaGltIGluIGFsbCBkaXJlY3Rpb25zIGluIHRoZSBzaGFwZSBvZiAKbG92ZSBmb3IgaGlzIGZlbGxvdy1tZW4sIGFuZCB0aGVuIHRoZXJlIHdpbGwgCmJlIG5vIHJvb20gZm9yIHVubmVjZXNzYXJ5IHZpYnJhdGlvbnM7IGhlIAp3aWxsIGhhdmUgbm8gdGltZSB0byB3b3JyeSBvdmVyIHRyaWZsaW5nIApwZXJzb25hbCBtYXR0ZXJzIGlmIGhpcyB3aG9sZSBsaWZlIGlzIHNwZW50IAppbiB0aGUgc2VydmljZSBvZiB0aGUgTG9jb3MsIGluIHRyeWluZyB0byAKaGVscCBmb3J3YXJkIHRoZSBldm9sdXRpb24gb2YgdGhlIHdvcmxkLiAKVG8gbWFrZSBhbnkgcmVhbCBwcm9ncmVzcyBvciB0byBkbyBhbnkgCnJlYWwgd29yayBhIG1hbiBtdXN0IHR1cm4gZnJvbSB0aGUgbG93ZXIgCmFuZCByZWFjaCB0b3dhcmRzIHRoZSBoaWdoZXI7IGhlIG11c3QgCmNvbWUgb3V0IG9mIG91ciB3b3JsZCBpbnRvIFRoZWlyc+KAlG91dCBvZiAKdGhlIHJlc3RsZXNzbmVzcyBpbnRvIHRoZSBwZWFjZSB3aGljaCBwYXNzZXRoIAp1bmRlcnN0YW5kaW5nLiAKCgoyOTIgOiBBRFlBUiBUQUxLUyAKCgpLaXV1aW5lIG91ciBEZXNpcmUgCgoKV2UgYXJlIG9mdGVuIHRvbGQgdGhhdCB3ZSBtdXN0IGtpbGwgCm91dCBkZXNpcmU7IGJ1dCBpdCBzaG91bGQgYmUgcmVtZW1iZXJlZCAKdGhhdCB0aGF0IGlzIGEgZ3JhZHVhbCBwcm9jZXNzLiBUaGUgbG93ZXIgCmFuZCBjb2Fyc2VyIGRlc2lyZXMgd2hpY2ggYXJlIG1lYW50IGJ5IAp0aGUgU2Fuc2tyaXQgd29yZCBrYW5hIG11c3QgY2VydGFpbmx5IApiZSBraWxsZWQgb3V0IGVudGlyZWx5IGJlZm9yZSBhbnkgc29ydCBvZiAKYWR2YW5jZW1lbnQgY2FuIGJlIG1hZGUsIGJ1dCBpbiB0aGUgCkVuZ2xpc2ggc2Vuc2Ugb2YgdGJlIHdvcmQgd2UgYWxsIG9mIHVzIApzdGlsbCBoYXZlIGNlcnRhaW4gZGVzaXJlcywgYW5kIGFyZSBsaWtlbHkgCnRvIGhhdmUgdGhlbSBmb3IgYSB2ZXJ5IGxvbmcgdGltZSAKdG8gY29tZS4gV2UgZGVzaXJlIGtlZW5seSBmb3IgZXhhbXBsZSAKdG8gc2VydmUgdGhlIE1hc3RlcjsgdG8gYmVjb21lIEhpcyBwdXBpbHMgOyAKdG8gaGVscCBodW1hbml0eS4gVGhlc2UgYWxzbyBhcmUgZGVzaXJlcywgCmJ1dCB0aGV5IHNob3VsZCBub3QgYmUga2lsbGVkLiDigJxXaGF0IGlzIApuZWNlc3NhcnkgaXMgdG8ga2lsbCBvdXQgdGhlIGxvd2VyIGFuZCByZWFjaCAKdXAgdG8gdGhlIGhpZ2hlciwgdGhhdCBpcyB0byBzYXksIHRvIHB1cmlmeSAKb3VyIGRlc2lyZXMgYW5kIHRvIHRyYW5zbXV0ZSB0aGVtIGludG8gYXMtIApwaXJhdGlvbnMuIAoKTGF0ZXIgb24gYW5vdGhlciB0cmFuc211dGF0aW9uIHdpbGwgdGFrZSAKcGxhY2UuIEZvciBleGFtcGxlLCBub3cgd2UgZGVzaXJlIHRvIAptYWtlIHByb2dyZXNzOyBidXQgYSB0aW1lIHdpbGwgY29tZSAKd2hlbiB3ZSBzaGFsbCBiZSBzbyBzdXJlIG9mIGl0IHRoYXQgd2UgCnNoYWxsIGNlYXNlIHRvIGRlc2lyZSwgYmVjYXVzZSB3ZSBrbm93IHRoYXQgCmFsbCB0aGUgdGltZSBpdCBpcyBnb2luZyBvbiBhcyByYXBpZGx5IGFzIAppcyBwb3NzaWJsZSBmb3IgdXMsIGFuZCBiZWNhdXNlIHdlIG1lYW4gCnRoYXQgaXQgc2hhbGwgc28gZ2/igJ0gb24uIERlc2lyZSBpcyB0aGVuIAoKCktJTExJTkcuIE9VVCBERVNJUkUgMjkzIAoKCnRyYW5zbXV0ZWQgaW50byByZXNvbHV0aW9uLiBBdCB0aGlzIHBvaW50IAp0aGVyZSBjYW4gYmUgbm8gbW9yZSByZWdyZXQgZm9yIGFueXRoaW5nIDsgCnlvdSBkbyB5b3VyIGJlc3QgYW5kIHlvdSBrbm93IHRoYXQgaW4gCnJlc3BvbnNlIHRvIHRoYXQgdGhlIGJlc3QgbXVzdCBjb21lLiBTb21lIApwZW9wbGUgZGVzaXJlIGVhcm5lc3RseSB0byBnYWluIHRoaXMgcXVhbGl0eSAKb3IgdGhhdDsgZG8gbm90IHdhc3RlIHlvdXIgcG93ZXIgaW4gZGUtIApnaXJpbmcgYW5kIHdpc2hpbmcsIGJ1dCB3aWxsIGluc3RlYWQuIAoKSW4gdGhlIHNhbWUgd2F5IGl0IGlzIHNhaWQgdGhhdCB3ZSAKc2hvdWxkIHNsYXkgdGhlIGx1bmFyIGZvcm0sIHRoYXQgaXMgdG8gc2F5IAp0aGUgYXN0cmFsIGJvZHkuIEJ1dCB0aGF0IGRvZXMgbm90IG1lYW4gCnRoYXQgdGhlIGFzdHJhbCBib2R5IG11c3QgYmUgZGVzdHJveWVkIG9yIAp0aGF0IHdlIG11c3QgYmUgd2l0aG91dCBmZWVsaW5ncyBhbmQgZW1vLSAKdGlvbnMuIExmIHRoYXQgY291bGQgYmUgc28gd2Ugc2hvdWxkIGhhdmUgCm5vIHN5bXBhdGh5IGFuZCBubyB1bmRlcnN0YW5kaW5nIG9mIG90aGVycy4gCldoYXQgaXMgaW50ZW5kZWQgaXMgdGhhdCB3ZSBzaG91bGQga2VlcCAKaXQgY29tcGxldGVseSB1bmRlciBjb250cm9sLCB0aGF0IHdlIHNob3VsZCAKaGF2ZSB0aGUgZmFjdWx0eSB0byBzbGF5IHRoZSBsdW5hciBmb3JtIGF0IAp3bGwsIFB1cml0eSBpcyBuZWNlc3NhcnksIGJ1dCAxdCBtZWFucyBub3QgCm9ubHkgdGhlIGFic3RpbmVuY2UgZnJvbSBzcGVjaWZpZWQgZmF1bHRzLCBidXQgCmFic29sdXRlIHNlbGZsZXNzbmVzcy4gQWltYnVpdGlvbiwgZm9yIGV4YW0tIApwbGUsIDFzIGEgdmVyeSBjb21tb24gZm9ybSBvZiBkZXNpcmUsIGJ1dCAKaW4gaXQgdGhlcmUgaXMgYWx3YXlzIGEgdGhvdWdodCBvZiBzZWxmLiAKVGhlIGFkZXB0IGNhbm5vdCBiZSBhbWJpdGlvdXMuIEhpcyB3aWxsIAppcyBvbmUgd2l0aCB0aGUgd2lsbCBvZiB0aGUgTG9nb3MsIGFuZCBIZSAKd2lsbHMgZXZvbHV0aW9uLiBXZSBhcmUgYWxsIHBhcnRzIG9mIHRoZSAKTG9nb3MsIGFuZCBvdXIgd2lsbHMgYXJlIHBhcnQgb2YgSGlzLiBJdCAKaXMgb25seSB3aGVuIHdlIGRvIG5vdCByZWFsaXNlIHRoaXMgdGhhdCAKd2Ugc2V0IHVwIGRlc2lyZXMg4oCcb24gb3VyIG93biBzZXBhcmF0ZSAKCgoyOTQsIEFEWUFSIFRBTEtTIAoKCmxpbmVzOiBUaGUgcmVndWxhdGlvbnMgZm9yIG91ciBsaXZlcyB3ZXJlIAp2ZXJ5IHdlbGwgc3VtbWVkIHVwIGJ5IHRoZSBMb3JkIEJ1cHB1YSAKaW4gb25lIGxpdHRsZSB2ZXJzZSBvZiBmb3VyIHNob3J0IGxpbmVzOiAKCgpTYWJiYXBhcGFzc2EgYWthcmFuYW0gCkt1c2FsYXNzYSB1cGFzYW1wYWRhIApTYWNoaXR0YSBwYXJseW8gZGFwYW5hbSAKS3RhbSBCdWRkaGFuYSBzYXNhbmFpbi4gCgoKQ2Vhc2UgZnJvbSBhbGwgZXZpbDsgCgpMZWFybiB0byBkbyB3ZWxsOyAKCkNsZWFuc2UgeW91ciBvd24gaGVhcnQgOyAKClRoaXMgaXMgdGhlIHJlbGlnaW9uIG9mIHRoZSBCdXBwdWFzLiAKCgpUSGUgQ3l1bnJyZSBvciBNeSBDcnJjbnVyIAoKCk9mIGFsbCB0aGUgbWFueSBvYnN0YWNsZXMgdGhhdCBzdGFuZCBpbSAKdGhlIHdheSBvZiB0aGUgYXNwaXJhbnQgd2hvIHdpc2hlcyB0byAKZW50ZXIgdXBvbiB0aGUgUGF0aCwgdGhlIG1vc3Qgc2VyaW91cywgCmJlY2F1c2UgdGhlIG1vc3QgZmFyLXJlYWNoaW5nIGFuZCBmdW5kYS0gCm1lbnRhbCwgaXMgc2VsZi1jZW50cmVkbmVzcy4gTm90ZSB0aGF0IGJ5IAp0aGlzIEkgZG8gbm90IG1lYW4gdGhlIGNydWRlIGFuZCB1Z2x5IApzZWxmaXNobmVzcywgd2hpY2ggZGVmaW5pdGVseSBzZWVrcyBldmVyeS0gCnRoaW5nIGZvciBpdHNlbGYgZXZlbiBhdCB0aGUgY29zdCBvZiBvdGhlcnMuIApJIGFtIG9mIGNvdXJzZSBzdXBwb3NpbmcgdGhhdCB0aGF0IGF0IGxlYXN0IApoYXMgYmVlbiBsZWZ0IGJlaGluZCBsb25nIGFnby4gQnV0IGluIAp0aGFzZSB3aG8gaGF2ZSBsZWZ0IGl0IGJlaGluZCwgdGhlcmUgXyBzdGlsbCAKCgpUSEUgQ0VOVFJFIE9GIE1ZIE9JUkNMRSAyOTUgCgoKbGluZ2VycyB0aGlzIG90aGVyIGV2aWzigJRzbyBzdWJ0bGUgYW5kIHNvIApkZWVwbHktcm9vdGVkIHRoYXQgdGhleSBkbyBub3QgcmVjb2duaXNlIGl0IAphcyBhbiBldmlsIGF0IGFsbOKAlGluZGVlZCB0aGV5IGFyZSBub3QgZXZlbiAKYXdhcmUgb2YgaXRzIGV4aXN0ZW5jZS4gQnV0IGxldCBhIG1hbiAKZXhhbWluZSBoaW1zZWxmIGhvbmVzdGx5IGFuZCBfIGltcGFydGlhbGx5LCAKYW5kIGhlIHdpbGwgZmluZCB0aGF0IGFsbCBoaXMgdGhvdWdodCBpcyBzZWxmLSAKY2VudHJlZDsgaGUgdGhpbmtzIG9mdGVuIG9mIG90aGVyIHBlb3BsZSAKYW5kIG9mIG90aGVyIHRoaW5ncywgYnV0IGFsd2F5cyBpbiB0aGVpciAKcmVsYXRpb24gdG8gaGltc2VsZjsgaGUgd2VhdmVzIG1hbnkgaW0tIAphZ2luYXJ5IGRyYW1hcywgYnV0IGhlIGhpbXNlbGYgb2NjdXBpZXMgCmFsd2F5cyBhIHByb21pbmVudCByw6lsZSBpbiB0aGVtLiBIZSBtdXN0IAphbHdheXMgYmUgaW4gdGhlIGNlbnRyZSBvZiBoaXMgbGl0dGxlIHN0YWdlLCAKd2l0aCB0aGUgbGltZWxpZ2h0IHBsYXlpbmcgdXBvbiBoaW07IGlmIGhlIAppcyBub3QgaW4gdGhhdCBwb3NpdGlvbiBoZSBhdCBvbmNlIGZlZWxzIApodXJ0LCBhbm5veWVkLCBhbmdyeSwgYW5kIGplYWxvdXMgb2YgYW55IApvdGhlciBwZXJzb24gd2hvIGhhcHBlbnMgZm9yIHRoZSBtb21lbnQgCnRvIGJlIGF0dHJhY3RpbmcgdGhlIGF0dGVudGlvbiBvZiB0aG9zZSB3aG8gCm91Z2h0IHRvIGJlIHdvcnNoaXBwaW5nIGF0IGZpcyBzaHJpbmUuIFRvIApjaGFuZ2Ugc28gZnVuZGFtZW50YWwgYSBxdWFsaXR5IGlzIHRvIApjaGFuZ2UgZm9yIGhpbSB0aGUgcm9vdCBvZiBhbGwgdGhpbmdzLCB0byAKbWFrZSBoaW1zZWxmIGludG8gYW4gYWx0b2dldGhlciBkaWZmZXJlbnQgCm1hbi4gTW9zdCBwZW9wbGUgY2Fubm90IGZvciBhIG1vbWVudCAKZmFjZSB0aGUgcG9zc2liaWxpdHkgb2Ygc3VjaCBhIHJhZGljYWwgY2hhbmdlIApiZWNhdXNlIHRoZXkgZG8gbm90IGV2ZW4ga25vdyB0aGF0IHRoZSAKY29uZGl0aW9uIGV4aXN0cy4gCgpOb3cgdGhpcyBhdHRpdHVkZSBpcyBhYnNvbHV0ZWx5IGZhdGFsIHRvIAphbnkga2luZCBvZiBwcm9ncmVzcy4gSXQgbXVzdCBiZSB1dHRlcmx5IApjaGFuZ2VkLCBhbmQgeWV0IHNvIGZldyBhcmUgbWFraW5nIGFueSAKCgoyOTYgQURZQVIgVEFMS1MgCgoKYXR0ZW1wdCB0byBjaGFuZ2UgaXQuIFRoZXJlIGlzIG9uZSB3YXkgCm91dCBvZiB0aGlzIHZpY2lvdXMgY2lyY2xlLCBhbmQgb25seSBvbmU7IAphbmQgdGhhdCBpcyB0aGUgd2F5IG9mIGxvdmUuIFRoYXQgaXMgdGhlIApvbmx5IHRoaW5nIGluIHRoZSBsaWZlIG9mIHRoZSBvcmRpbmFyeSBtYW4gCndoaWNoIC1ldmVyIGNoYW5nZXMgdGhpcyBjb25kaXRpb24gZm9yIGhpbSwgCndoaWNoIHNlaXplcyB1cG9uIGhpbSB3aXRoIGEgc3Ryb25nIGhhbmQgCmFuZCBmb3IgdGhlIHRpbWUgYmVpbmcgYWx0ZXJzIGhpcyB3aG9sZSBhdC0gCnRpdHVkZS4gRm9yIGEgdGltZSBhdCBsZWFzdCwgd2hlbiBoZSBmYWxscyAKaW4gbG92ZSwgYXMgaXQgaXMgY2FsbGVkLCBzb21lIG90aGVyIHBlcnNvbiAKb2NjdXBpZXMgdGhlIGNlbnRyZSBvZiBoaXMgY2lyY2xlLCBhbmQgaGUgCnRoaW5rcyBvZiBldmVyeXRoaW5nIGluIGFsbCB0aGUgd29ybGQgaW4gaXRzIApyZWxhdGlvbiB0byBoZXIsIGFuZCBub3QgaW0gaXRzIHJlbGF0aW9uIHRvIApoaW1zZWxmLiBUaGUgZGl2aW5pdHkgYXQgd2hvc2Ugc2hyaW5lIGhlIApvZmZlcnMgdGhpcyB3b3JzaGlwIG1heSBpbiB0cnV0aCBzZWVtIHRvIHRoZSAKcmVzdCBvZiB0aGUgd29ybGQgdG8gYmUgYnV0IGEgdmVyeSBvcmRpbmFyeSAKcGVyc29uLCBidXQgZm9yIGhpbSBzaGUgaXNfIHRlbXBvcmEtIApyaWx5IHRoZSBpbmNhcm5hdGlvbiBvZiBncmFjZSBhbmQgYmVhdXR5IDsgCmhlIHNlZXMgaW4gaGVyIHRoZSBkaXZpbml0eSB3aGljaCBpcyBpbiAKdHJ1dGggaGVycywgYmVjYXVzZSBpdCBsaWVzIGxhdGVudCBpbiBhbGwgb2YgCnVzLCB0aG91Z2ggbm9ybWFsbHkgd2UgZG8gbm90IHNlZSBpdC4gLCBJdCAKaXMgdHJ1ZSB0aGF0IGltIG1hbnkgY2FzZXMgYWZ0ZXIgYSB0aW1lIApoaXMgZW50aHVzaWFzbSBmYWRlcyBhbmQgaGUgdHJhbnNmZXJzIGl0IHRvIAphbm90aGVyIG9iamVjdDsgYnV0IG5ldmVydGhlbGVzcyBmb3IgdGhlIAp0aW1lIGhlIGhhcyBjZWFzZWQgdG8gYmUgc2VsZi1jZW50cmVkLCBmb3IgCnRoZSB0aW1lIGhlIGhhcyBoYWQgYSB3aWRlciBvdXRsb29rLiAKCi0gTm93IHRoaXMsIHdoaWNoIHRoZSBvcmRpbWFyeSBtYW4gdGh1cyAKZG9lcyB1bmNvbnNjaW91c2x5LCB0aGUgc3R1ZGVudCBvZiBvY2N1bHRpc20gCm11c3QgZG8gY29uc2Npb3VzbHkuIEhlIG11c3QgZGVsaWJlcmF0ZWx5IAoKClRIRSBDRU5UUkUgT0YgTVkgQ0lSQ0xFIDI5NyAKCgpkZXRocm9uZSBoaW1zZWxmIGZyb20gdGhlIGNlbnRyZSBvZiB0aGUgCmNpcmNsZS4gb2YgaGlzIGxpZmUsIGFuZCBoZSBtdXN0IGVudGhyb25lIAp0aGUgTWFzdGVyIHRoZXJlIGluc3RlYWQuIEhlIGhhcyBiZWVuIGluIAp0aGUgaGFiaXQgb2YgdGhpbmtpbmcgaW5zdGluY3RpdmVseSBob3cgCmV2ZXJ5dGhpbmcgd2lsbCBhZmZlY3QgaGltLCBvciB3aGF0IGhlIGNhbiAKbWFrZSBvZiBpdCwgaG93IGhlIGNhbiB0dXJuIGl0IHRvIGhpcyBwcm8tIApmaXQgYW5kIHBsZWFzdXJlLiBJbnN0ZWFkIG9mIHRoYXQgaGUgbXVzdCAKbm93IGxlYXJuIHRvIHRoaW5rIG9mIGV2ZXJ5dGhpbmcgYXMgaXQgCmFmZmVjdHMgdGhlIE1hc3RlciwgYW5kIHNpbmNlIHRoZSBNYXN0ZXIgCmxpdmVzIG9ubHkgdG8gaGVscCB0aGUgZXZvbHV0aW9uIG9mIGh1bWFuLSAKaXR5LCB0aGF0IG1lYW5zIHRoYXQgaGUgbXVzdCByZWdhcmQgZXZlcnktIAp0aGluZyBmcm9tIHRoZSBzdGFuZHBvaW50IG9mIGl0cyBoZWxwZnVsLSAKbmVzcyBvciBoaW5kcmFuY2UgdG8gdGhlIGNhdXNlIG9mIGV2b2x1dGlvbi4gCkFuZCB0aG91Z2ggYXQgZmlyc3QgaGUgd2lsbCBoYXZlIHRvIGRvIAp0aGlzIGNvbnNjaW91c2x5IGFuZCB3aXRoIGEgY2VydGFpbiBlZmZvcnQsIApoZSBtdXN0IHBlcnNldmVyZSB1bnRpbCBoZSBkb2VzIGl0IGp1c3QgYXMgCnVuY29uc2Npb3VzbHksIGp1c3QgYXMgaW5zdGluY3RpdmVseSBhcyBoZXJlLSAKdG9mb3JlIGhlIGNlbnRyZWQgZXZlcnl0aGluZyBhcm91bmQgaGltc2VsZi4gClRvIHVzZSB0aGUgd29yZHMgb2YgYSBNYXN0ZXIsIGhlIG11c3QgCmZvcmdldCBoaW1zZWxmLiB1dHRlcmx5IG9ubHkgdG8gcmVtZW1iZXIgdGhlIApnb29kIG9mIG90aGVycy4gCgpCdXQgZXZlbiB3aGVuIGhlIGhhcyBkZXRocm9uZWQgaGltc2VsZiAKYW5kIGVudGhyb25lZCB0aGUgd29yayB3aGljaCBoZSBoYXMgdG8gCmRvLCBoZSBtdXN0IGJlIGV4Y2VlZGluZ2x5IGNhcmVmdWwgdGhhdCBoZSAKZG9lcyBub3QgZGVsdWRlIGhpbXNlbGYsIHRoYXQgaGUgZG9lcyBub3QgCnJldHVybiB0byB0aGUgb2xkIHNlbGYtY2VudHJlZG5lc3MgaW4gYSBzdWJ0LSAKbGVyIGZvcm0uIE1hbnkgYV8gZ29vZCBhbmQgX+KAlCBlYXJuZXN0IAoKClRoZW9zb3BoaWNhbCB3b3JrZXIgaGF2ZSBJIGtub3duIHdobyBjb20tIAo4OCAKCgo5OTggQURZQVIgVEFMS1MgCgoKbWl0dGVkIHRoaXMgdmVyeSBtaXN0YWtlLCB3aG8gaWRlbnRpZmllZCAKVGhlb3NvcGhpY2FsIHdvcmsgd2l0aCBoaW1zZWxmLCBhbmQgXyBmZWx0IAp0aGF0IGFueW9uZSB3aG8gZGlkIG5vdCBleGFjdGx5IGFncmVlIAp3aXRoIGhpcyBpZGVhcyBhbmQgaGlzIG1ldGhvZHMgd2FzIGFuIAplbmVteSBvZiBUaGVvc29waHkuIFNvIG9mdGVuIHRoZSB3b3JrZXIgCnRoaW5rcyB0aGF0IGhpcyB3YXkgaXMgdGhlIG9ubHkgd2F5LCBhbmQgCnRoYXQgdG8gZGlmZmVyIGZyb20gaGltIGluIG9waW5pb24gaXMgdG8gCmJlIGEgdHJhaXRvciB0byB0aGUgY2F1c2UuIEJ1dCB0aGlzIG1lYW5zIApvbmx5IHRoYXQgdGhlIHNlbGYgaGFzIGNyZXB0IHNraWxmdWxseSBiYWNrIAppbnRvIGl0cyBvbGQgcGxhY2UgaW4gdGhlIGNlbnRyZSBvZiB0aGUgY2lyLSAKY2xlLCBhbmQgdGhhdCB0aGUgd29yayBvZiBkaXNsb2RnaW5nIGl0IAptdXN0IGJlIGJlZ3VuIGFsbCBvdmVyIGFnYWluLiBUaGUgb25seSAKcG93ZXIgd2hpY2ggdGhlIGRpc2NpcGxlIHNob3VsZCBkZXNpcmUgaXMgCnRoYXQgd2hpY2ggbWFrZXMgaGltIHNlZW0gYXMgbm90aGluZyBpbiAKdGhlIGV5ZXMgb2YgbWVuLiBXaGVuIGhlIGlzIHRoZSBjZW50cmUgCm9mIGhpcyBjaXJjbGUgaGUgbWF5IGRvIGdvb2Qgd29yaywgYnV0IGl0IAppcyBhbHdheXMgd2l0aCB0aGUgZmVlbGluZyB0aGF0IGhlIGlzIGRvaW5nIAppdCwgZXZlbiBsYXJnZWx5IHdpdGggdGhlIG9iamVjdCB0aGF0IGl0IG1heSAKYmUgaGUgdGhhdCBkb2VzIGl0OyBidXQgd2hlbiB0aGUgTWFzdGVyIAppcyB0aGUgY2VudHJlIG9mIGhpcyBjaXJjbGUgaGUgd2lsbCBkbyB0aGUgd29yayAKc2ltcGx5IGluIG9yZGVyIHRoYXQgaXQgbWF5IGJlIGRvbmUuIFRoZSAKd29yayBpcyBkb25lIGZvciB0aGUgc2FrZSBvZiB0aGUgCndvcmsgYW5kIG5vdC4gZm9yIHRoZSBzYWtlIG9mIHRoZSBkb2VyLiAKQW5kIGhlIG11c3QgbGVhcm4gdG8gbG9vayB1cG9uIGhpcyBvd24gCndvcmsgcHJlY2lzZWx5IGFzIHRob3VnaCBpdCB3ZXJlIHRoYXQgb2YgCnNvbWUgb25lIGVsc2UsIGFuZCB1cG9uIHRoZSB3b3JrIG9mIHNvbWUgCm9uZSBlbHNlIHByZWNpc2VseSBhcyB0aG91Z2ggaXQgd2VyZSBoaXMgCm93bi4gVGhlIG9uZSB0aGluZyB0aGF0IGlzIGltcG9ydGFudCBpcyAKCgpUSEUgQ0VOVFJFIE9GIE1ZIENJUkNMRSAyOTkgCgoKdGhhdCB0aGUgd29yayBzaG91bGQgYmUgZG9uZS4gSXQgbWF0dGVycyAKbGl0dGxlIHdobyBkb2VzIGl0LCBUaGVyZWZvcmUgaGUgb3VnaHQgCm5laXRoZXIgdG8gYmUgcHJlanVkaWNlZCBpbiBmYXZvdXIgb2YgaGlzIApvd24gd29yayBhbmQgdW5kdWx5IGNyaXRpY2FsIG9mIHRoYXQgCm9mIGFub3RoZXIsIG5vciBiZSBoeXBvY3JpdGljYWxseSBkZXByZS0gCmNpYXRvcnkgb2YgaGlzIG93biB3b3JrIGluIG9yZGVyIHRoYXQgCm90aGVycyBtYXkgcHJhaXNlIGl0LiBUbyBxdW90ZSB0aGUgd29yZHMgCm9mIFJ1c2tpbiB3aXRoIHJlZ2FyZCB0byBhcnQsIGhlIG91Z2h0IHRvIApiZSBhYmxlIHRvIHNheSBzZXJlbmVseTog4oCcQmUgaXQgbWluZSBvciAKeW91cnMsIG9yIHdob3NlIGVsc2UgaXQgbWF5LCB0aGlzIGFsc28gaXMgCndlbGwu4oCdIAoKQW5vdGhlciBkYW5nZXIgdGhlcmUgaXMgdG9vLCB3aGljaCBpcyAKc3BlY2lhbCB0byB0aGUgVGhlb3NvcGhpY2FsIHdvcmtlcuKAlHRoZSAKZGFuZ2VyIG9mIGNvbmdyYXR1bGF0aW5nIGhpbXNlbGYgdG9vIHNvb24gCnRoYXQgaGUgZGlmZmVycyBmcm9tIHRoZSByZXN0IG9mIHRoZSB3b3JsZC4gClRoZW9zb3BoaWNhbCB0ZWFjaGluZyBwdXRzIGEgbmV3IGNvbXBsZXhpb24gCnVwb24gZXZlcnl0aGluZywgc28gbmF0dXJhbGx5IHdlIGZlZWwgdGhhdCAKb3VyIGF0dGl0dWRlIGlzIHF1aXRlIGRpZmZlcmVudCBmcm9tIHRoYXQgb2YgCm1vc3Qgb3RoZXIgcGVvcGxlLiBUaGVyZSBpcyBubyBoYXJtIGluIAp0aGlua2luZyB0aGlzIG9idmlvdXMgdHJ1dGgsIGJ1dCBJIGhhdmUgCmZvdW5kIHRoYXQgc29tZSBvZiBvdXIgbWVtYmVycyBhcmUgYXB0IHRvIApwcmlkZSB0aGVtc2VsdmVzIHVwb24gdGhlIGZhY3QgdGhhdCB0aGV5IAphcmUgYWJsZSB0byByZWNvZ25pc2UgdGhlc2UgdGhpbmdzLiBJdCBkb2VzIApub3QgaW4gdGhlIGxlYXN0IGZvbGxvdyB0aGF0IHdlLCB3aG8gZmluZCBvdXItIApzZWx2ZXMgYWJsZSB0byByZWNvZ25pc2UgdGhlbSwgYXJlIHRoZXJlZm9yZSAKYmV0dGVyIHRoYW4gb3RoZXJzLiBPdGhlciBtZW4gaGF2ZSBkZXZlbG9wZWQgCnRoZW1zZWx2ZXMgYWxvbmcgb3RoZXIgbGluZXMsIGFuZCBhbG9uZyB0aG9zZSAKbGluZXMgdGhleSBtYXkgYmUgdmVyeSBmYXIgaW0gYWR2YW5jZSBvZiAKCgozMDAgQURZQVIgVEFMS1MgCgoKdXMsIHRob3VnaCBhbG9uZyBvdXIgb3duIGxpbmUgdGhleSBsYWNrIHNvbWUtIAp0aGluZyB3aGljaCB3ZSBhbHJlYWR5IGhhdmUuIFJlbWVtYmVyLCAKdGhlIGFkZXB0IGlzIHRoZSBwZXJmZWN0IG1hbiB3aG8gaXMgZnVsbHkgCmRldmVsb3BlZCBhbG9uZyBhbGwgcG9zc2libGUgbGluZXMsIGFuZCBzbyB3aGlsZSAKd2UgaGF2ZSBzb21ldGhpbmcgdG8gdGVhY2ggdGhlc2Ugb3RoZXJzIHdlIAphbHNvIGhhdmUgbXVjaCB0byBsZWFybiBmcm9tIHRoZW0sIGFuZCBpdCAKd291bGQgYmUgdGhlIGhlaWdodCBvZiBmb2xseSB0byBkZXNwaXNlIGEgCm1hbiBiZWNhdXNlIGhlIGhhcyBub3QgeWV0IGFjcXVpcmVkIFRoZW8tIApzb3BoaWNhbCBrbm93bGVkZ2UsIG5vciBldmVuIHBlcmhhcHMgdGhlIApxdWFsaXRpZXMgd2hpY2ggZW5hYmxlIGhpbiB0byBhcHByZWNpYXRlIGl0LiAKVGhlcmVmb3JlIGluIHRoaXMgc2Vuc2UgYWxzbyB3ZSBtdXN0IHRha2UgCmNhcmUgbm90IHRvIGJlIHRoZSBjZW50cmUgb2Ygb3VyIG93biBjaXJjbGUuIAoKQSBnb29kIHBsYW4gdGhhdCB5b3UgbWF5IGFkb3B0IGluIApvcmRlciB0byBrZWVwIHlvdXJzZWxmIGZyb20gc2xpcHBpbmcgYmFjayAKaW50byB0aGUgY2VudHJlIG1heSBiZSB0byByZW1lbWJlciwgYXMgYSAKc3ltYm9sIG9mIHdoYXQgb3VnaHQgdG8gYmUgeW91ciBhdHRpdHVkZSwgCndoYXQgMSBoYXZlIGJlZm9yZSBleHBsYWluZWQgdG8geW91IHdpdGggCnJlZ2FyZCB0byB0aGUgb2NjdWx0IHZpZXcgb2YgdGhlIGNvdXJzZSAKYW5kIGluZmx1ZW5jZSBvZiB0aGUgcGxhbmV0cy4gWW91IHJlbWVtYmVyIApob3cgSSBleHBsYWluZWQgdG8geW91IHRoYXQgZWFjaCBwbGFuZXQgCmlzICMgbWlub3IgZm9jdXMgaW4gYW4gZWxsaXBzZSwgdGhlIG1ham9yIApmb2N1cyBvZiB3aGljaCBpcyB3aXRoaW4gdGhlIGJvZHkgb2YgdGhlIHN1bi4gCllvdSBhcmUgbGlrZSB0aGF0IG1pbm9yIGZvY3VzOyB5b3UgYXJlIApnb2lnIHVwb24geW91ciBvd24gY291cnNlIGFuZCBkb2luZyB0aGUgCndvcmsgYXBwb2ludGVkIHRvIHlvdSwgYW5kIHlldCBhbGwgdGhlIAp0aW1lIHlvdSBhcmUgYnV0IGEgcmVmbGVjdGlvbiBvZiB0aGUgbWFqb3IgCmZvY3VzLCBhbmQgeW91ciBjb25zY2lvdXNuZXNzIGlzIGNlbnRyZWQgCndpdGhpbiB0aGUgc3VuLCBmb3IgdGhlIE1hc3RlciBvZiB3aG9tIAoKClRIRSBDRU5UUkUgT0YgTVkgQ0lSQ0xFIDMwMSAKCgp5b3UgYXJlIGEgcGFydCBpcyBhIG1lbWJlciBvZiB0aGUgR3JlYXQgCkhpZXJhcmNoeSB3aGljaCBpcyBldmVyIGRvaW5nIHRoZSB3b3JrIApvZiB0aGUgTG9jb3MuIAoKV2hpbGUgYSBtYW4gaXMgdGhlIGNlbnRyZSBvZiBoaXMgb3duLiAKY2lyY2xlIGhlIGlzIHBlcnBldHVhbGx5IG1ha2luZyB0aGUgbWlzdGFrZSAKb2YgdGhpbmtpbmcgdGhhdCBoZSBpcyB0aGUgY2VudHJlIG9mIGV2ZXJ5LSAKYm9keSBlbHNl4oCZcy4gSGUgY29uc3RhbnRseSBzdXBwb3NlcyB0aGF0IGluIApldmVyeXRoaW5nIHdoaWNoIG90aGVyIHBlb3BsZSBzYXkgb3IgZG8gCnRoZXkgYXJlIHNvbWVob3cgdGhpbmtpbmcgb2YgaGltLCBvciAKYWltaW5nIHRoZWlyIHJlbWFya3MgYXQgaGltLCBhbmQgXyB3aXRoIAptYW55IHRoaXMgYmVjb21lcyBhIF8ga2luZCBvZiBvYnNlc3Npb24sIAphbmQgdGhleSBzZWVtIHRvdGFsbHkgdW5hYmxlIHRvIHJlYWxpc2UgCnRoYXQgZWFjaCBvZiB0aGVpciBuZWlnaGJvdXJzIGlzIGFzIGEgcnVsZSAKYWxzbyBlbnRpcmVseSB3cmFwcGVkIHVwIGluIGhpbXNlbGYgYW5kIApub3QgLCB0aGlua2luZyBvZiB0aGVtIGF0IGFsbC4gU28gdGhlIG1hbiAKbWFrZXMgZm9yIGhpbXNlbGYgYSBncmVhdCBkZWFsIG9mIHRvdGFsbHkgCnVubmVjZXNzYXJ5IHRyb3VibGUgYW5kIHdvcnJ5LCBhbGwgb2Ygd2hpY2ggCm1pZ2h0IGJlIGF2b2lkZWQgaWYgaGUgd291bGQgYnV0IHNlZSAKdGhpbmdzIGluIGEgc2FuZSBhbmQgcmF0aW9uYWwgcGVyc3BlY3RpdmUuIApBZ2FpbiwgaXQgaXMgYmVjYXVzZSBoZSBpcyB0aGUgY2VudHJlIG9mIApoaXMgb3duIGNpcmNsZSB0aGF0IGhlIGlzIGhhYmxlIHRvIGRlcHJlcy0gCnNpb24sIGZvciB0aGF0IGNvbWVzIG9ubHkgdG8gb25lIHdobyBpcyAKdGhpbmtpbmcgb2YgaGltc2VsZi4gSWYgdGhlIE1hc3RlciBiZSB0aGUgCmNlbnRyZSBvZiBoaXMgY2lyY2xlLCBhbmQgYWxsIGhpcyBlbmVyZ2llcyAKYXJlIGNlbnRyZWQgdXBvbiBzZXJ2aW5nIEhpbSwgaGUgaGFzIApubyB0aW1lIGZvciBkZXByZXNzaW9uLCBub3IgaGFzIGhlIHRoZSAKc2xpZ2h0ZXN0IGluY2xpbmF0aW9uIHRvd2FyZHMgaXQuIEhlIGlzIGZhciAKdG9vIGVhZ2VybHkgd2lzaGluZyBmb3Igd29yayB0aGF0IGhlIGNhbiAKCgozMDIgQURZQVIgVEFMS1MgCgoKZG8uIEhpcyBhdHRpdHVkZSBzaG91bGQgYmUgdGhhdCBpbmRpY2F0ZWQgCmJ5IG91ciBQcmVzaWRlbnQgaW4gaGVyIEF1dG9iaW9ncmFwaHnigJR0aGF0IAp3aGVuIGEgbWFuIHNlZXMgYSBwaWVjZSBvZiB3b3JrIHdhaXRpbmcgCnRvIGJlIGRvbmUgaGUgc2hvdWxkIHNheSwgbm90IGFzIHRoZSAKb3JkaW5hcnkgbWFuIHVzdWFsbHkgZG9lczog4oCcWWVzLCBpdCB3b3VsZCAKYmUgYSBnb29kIHRoaW5nLCBhbmQgc29tZWJvZHkgb3VnaHQgdG8gCmRvIGl0LiBCdXQgd2h5IHNob3VsZCBJID/igJ3igJRidXQgcmF0aGVyIApoZSBzaG91bGQgc2F5OiDigJhTb21lYm9keSBvdWdodCB0byBkbyAKdGhpcy4gV2h5IHNob3VsZCBpdCBub3QgYmUgST/igJ0gCgpBcyBoZSBldm9sdmVzIGhpcyBjaXJjbGUgd2lsbCB3aWRlbiwgYW5kIAppbiB0aGUgZW5kIHRoZXJlIHdpbGwgY29tZSBhIHRpbWUgd2hlbiAKaGlzIGNpcmNsZSB3aWxsIGJlIGluZmluaXRlIGluIGV4dGVudCwgYW5kIAp0aGVuIGluIGEgc2Vuc2UgaGUgaGltc2VsZiB3aWxsIGFnYWluIGJlIAppdHMgY2VudHJlLCBiZWNhdXNlIGhlIGhhcyBpZGVudGlmaWVkIGhpbS0gCnNlbGYgd2l0aCB0aGUgTG91b3MsIHdobyBpcyB0aGUgY2VudHJlIApvZiBhbGwgcG9zc2libGUgY2lyY2xlcywgc2luY2UgZXZlcnkgcG9pbnQgaXMgCmVxdWFsbHkgdGhlIGNlbnRyZSBvZiBhIGNpcmNsZSB3aG9zZSByYWRpdXMgCmlzIGluZmluaXRlLiAKCgpPdXIgRHVyeSB0byBBTklNQUxTIAoKCldoaWxlIHlvdSBhcmUgdHJ5aW5nIHRvIGRvIHlvdXIgYmVzdCAKZm9yIGFsbCB0aG9zZSBhcm91bmQgeW91LCBkbyBub3QgZm9yZ2V0IHRoYXQgCnlvdSBhbHNvIGhhdmUgYSBkdXR5IHRvd2FyZHMgZm9ybXMgb2YgbGlmZSAKbG93ZXIgdGhhbiB0aGUgaHVtYW4uIEluIG9yZGVyIHRoYXQgeW91IAoKCk9VUiBEVVRZIFRPIEFOSU1BTFMgMzAzIAoKCm1heSBiZSBhYmxlIHRvIGRvIHRoYXQsIHRyeSB0byB1bmRlcnN0YW5kIAp5b3VyIGxvd2VyIGJyb3RoZXJzLCB0cnkgdG8gdW5kZXJzdGFuZCAKdGhlIGFuaW1hbHMsIGp1c3QgYXMgeW91IHRyeSB0byB1bmRlcnN0YW5kIApvbiBhIGhpZ2hlciBsZXZlbCB0aGUgY2hpbGRyZW4gd2l0aCB3aG9tIAp5b3UgaGF2ZSB0byBkZWFsLiBKdXN0IGFzIHlvdSBsZWFybiwgaWYgCnlvdSB3YW50IHRvIGhlbHAgYSBjaGlsZCwgdG8gbG9vayBhdCAKdGhpbmdzIGZyb20gdGhlIGNoaWxk4oCZcyBwb2ludCBvZiB2aWV3LCAKc28sIGlmIHlvdSB3YW50IHRvIGhlbHAgdGhlIGFuaW1hbCBldm9sdS0gCnRpb24sIHRyeSB0byBzZWUgd2hhdCBpcyB0aGUgYW5pbWFs4oCZcyBwb2ludCAKb2Ygdmlldy4gSW4gYWxsIGNhc2VzIGFuZCB3aXRoIGFsbCBmb3JtcyAKb2YgbGlmZSBvdXIgYnVzaW5lc3MgaXMgdG8gbG92ZSBhbmQgdG8gaGVscCwgCmFuZCB0byB0cnkgdG8gYnJpbmcgbmVhcmVyIHRoZSBnb2xkZW4gYWdlIAp3aGVuIGFsbCBzaGFsbCB1bmRlcnN0YW5kIG9uZSBhbm90aGVyIGFuZCAKYWxsIHNoYWxsIGNvLW9wZXJhdGUgaW4gdGhlIGdsb3Jpb3VzIHdvcmsgCnRoYXQgaXMgdG8gY29tZS4gCgpUaGVyZSBpcyBubyByZWFzb24gd2h5IG91ciBkb21lc3RpYyAKYW5pbWFscyBzaG91bGQgbm90IGJlIHRyYWluZWQgdG8gaGVscCAKbWFuLCBhbmQgdG8gd29yayBpbl8gaGlzIHNlcnZpY2UsIHNvIApsb25nIGFzIHRoZSB3b3JrIGlzIG5vdCBwYWluZnVsIG9yIGV4LSAKY2Vzc2l2ZS4gQnV0IGFsbCB0aGUgY3JlYXR1cmVzIGFyb3VuZCB1cyAKc2hvdWxkIGJlIHRyYWluZWQgaW4gdGhlIHdheSBiZXN0IGZvciB0aGVtLSAKc2VsdmVzOyB0aGF0IDFzIHRvIHNheSwgd2Ugc2hvdWxkIGFsd2F5cyAKcmVtZW1iZXIgdGhhdCB0aGVpciBldm9sdXRpb24gaXMgdGhlIG9iamVjdCAKb2YgdGhlIGRpdmluZSB3aWxsLiBTbyB0aGF0IHdoaWxlIHdlIHNob3VsZCAKc3VyZWx5IHRlYWNoIG91ciBhbmltYWxzIGFsbCB0aGF0IHdlIGNhbiwgCmJlY2F1c2UgdGhhdCBkZXZlbG9wZXMgdGhlaXIgaW50ZWxsaWdlbmNlLCB3ZSAKbXVzdCB0YWtlIGNhcmUgdGhhdCB3ZSBpbnN0aWwgaW50byB0aGVtIApnb29kIHF1YWxpdGllcyBhbmQgbm90IGV2aWwuIFdlIGhhdmUgCgoKMzA0IEFEWUFSIFRBTEtTIAoKCnZhcmlvdXMgY3JlYXR1cmVzIGJyb3VnaHQgYW1vbmcgdXMuIFdlIApoYXZlIHRoZSBkb2csIHRoZSBjYXQsIHRoZSBob3JzZSBhbmQgb3RoZXIgCm9yaWdpbmFsbHkgd2lsZCBhbmltYWxzIGdpdmVuIGludG8gb3VyIGNhcmXigJQgCmJyb3VnaHQgdG8gdXMgZm9yIGFmZmVjdGlvbiBhbmQgaGVscC4gV2h5PyAKVGhhdCB3ZSBtYXkgdHJhaW4gdGhlbSBvdXQgb2YgdGhlaXIgCmZlcm9jaXR5LCBhbmQgaW50byBhIGhpZ2hlciBhbmQgbW9yZSBpbi0gCnRlbGxpZ2VudCBzdGF0ZSBvZiBsZmXigJR0aGF0IHdlIG1heSBldm9rZSAKaW4gdGhlbSBkZXZvdGlvbiwgYWZmZWN0aW9uIGFuZCBfIGludGVsbGVjdC4gCkJ1dCB3ZSBtdXN0IHRha2UgZ29vZCBjYXJlIHRoYXQgd2UgaGVscCwgCm5vdCBoaW5kZXI7IHdlIG11c3Qgc2VlIHRoYXQgd2UgZG8gbm90IAppbmNyZWFzZSBpbiBvdXIgYW5pbWFsIHRoZSBmZXJvY2lvdXMgcXVhbGktIAp0aWVzIHdoaWNoIGl0IGlzIHRoZSBidXNpbmVzcyBvZiBoaXMgZXZvbHUtIAp0aW9uIHRvIGdldCByaWQgb2YuIEZvciBleGFtcGxlLCBhIG1hbiAKd2hvIHRyYWlucyBhIGRvZyB0byBodW50IGFuZCBraWxsIGlzIGluLSAKdGVuc2lmeWluZyB3aXRoaW4gaGltIHRoZSB2ZXJ5IGluc3RpbmN0cyAKd2hpY2ggbXVzdCBiZSBlbGltaW5hdGVkIGlmIHRoZSBhbmltYWwgaXMgCnRvIGV2b2x2ZSwgYW5kIGluIHRoaXMgd2F5IGhlIGlzIGRlZ3JhZGluZyAKYSBjcmVhdHVyZSBnaXZlbiBpbnRvIGhpcyBjaGFyZ2UgaW5zdGVhZCBvZiAKaGVscGluZyBoaW0gb24gaGlzIHdheSwgZXZlbiB0aG91Z2ggYXQgCnRoZSBzYW1lIHRpbWUgaGUgbWF5IGJlIGRldmVsb3BpbmcgdGhlIAphbmltYWzigJlzIGludGVsbGlnZW5jZTsgYW5kIHRodXMgdGhvdWdoIGhlIAptYXkgZG8gYSBsaXR0bGUgZ29vZCwgaGUgaXMgYXQgdGhlIHNhbWUgCnRpbWUgZG9pbmcgYSBncmVhdCBkZWFsIG9mIGhhcm0gd2hpY2ggCmZhciBtb3JlIHRoYXQgY291bnRlcmJhbGFuY2VzIGl0LiBUaGUgc2FtZSAKdGhpbmcgaXMgdHJ1ZSBvZiBhIG1hbiB3aG8gdHJhaW5zIGhpcyAKZG9nIHRvIGJlIGZlcm9jaW91cyBpbiBvcmRlciB0aGF0IGhlIG1heSAKYmUg4oCYYW4gZWZmaWNpZW50IHByb3RlY3RvciBvZiBoaXMgcHJvcGVydHk6IApBIG1hbiB3aG8gdHJlYXRzIGFuIGFuaW1hbCBoYXJzaGx5IG9yIAoKCk9VUiBEVVRZIFRPIEFOSU1BSVMgMzA1IAoKCmNydWVsbHkgbWF5IHBvc3NpYmx5IGJlIGV2b2x2aW5nIGhpcyBpbnRlbGxlY3QsIApzaW5jZSB0aGUgYW5pbWFsIG1heSBsZWFybiB0byB0aGluayBtb3JlIAprZWVubHkgaW4gb3JkZXIgdG8gc2VlIGhvdyB0byBhdm9pZCB0aGUgCmNydWVsdHkuIEJ1dCBhbG9uZyB3aXRoIHdoYXRldmVyIGV2b2x1dGlvbiAK4oCYbWF5IGJlIGdhaW5lZCBpbiB0aGlzIHdheSwgdGhlcmUgaXMgYWxzbyAKdGhlIGRldmVsb3BtZW50IG9mIHRoZSBleGNlZWRpbmdseSB1bmRlc2lyLSAKYWJsZSBxdWFsaXRpZXMgb2YgZmVhciBhbmQgaGF0cmVkLiBUaHVzIAp3aGVuLCBsYXRlciBvbiwgdGhhdCBhbmltYWwgd2F2ZSBvZiBsaWZlIGdvZXMgCnVwIGludG8gaHVtYW5pdHksIHdlIHNoYWxsIGhhdmUgLmEgaHVtYW4tIAppdHkgc3RhcnRpbmcgdGVybmJseSBoYW5kaWNhcHBlZOKAlHN0YXJ0aW5nIAp3aXRoIHRoZXNlIGF3ZnVsIHF1YWxpdGllcyBvZiBmZWFyIGFuZCAKaGF0cmVkIGluZ3JhaW5lZCBpbiBpdCwgaW5zdGVhZCBvZiBhIGh1LSAKbWFuaXR5IGFsbCBhc3BpcmluZywgZGV2b3Rpb25hbCwgbG92aW5nIGFuZCAKZ2VudGxlLCBzdWNoIGFzIHdlIG1pZ2h0IGhhdmUgaGFkIGlmIHRoZSAKbWVuIHRvIHdob20gdGhlIGFuaW1hbCBwYXJ0IG9mIHRoYXQgZXZvbHUtIAp0aW9uIHdhcyBjb21taXR0ZWQgaGFkIGRvbmUgdGhlaXIgZHV0eS4gCgpXZSBoYXZlIGFsc28gb3VyIGR1dHkgdG93YXJkcyBvdGhlciBhbmQgCmV2ZW4gbG93ZXIgZm9ybXMgb2YgbGlmZSB0aGFuIHRoYXQuIFRoZXJlIAppcyB0aGUgZWxlbWVudGFsIGVzc2VuY2UsIHdoaWNoIGlzIHN1cnJvdW5kLSAKaW5nIHVzIGV2ZXJ5d2hlcmU7IHRoYXQgZWxlbWVudGFsIGVzc2VuY2UgCnByb2dyZXNzZXMgYnkgbWVhbnMgb2Ygb3VyIHRob3VnaHQsIGFuZCBvZiAKdGhlIGFjdGlvbiB3aGljaCB3ZSBwcm9kdWNlIHVwb24gaXQgYnkgCm91ciB0aG91Z2h0cywgcGFzc2lvbnMsIGVtb3Rpb25zIGFuZCBmZWVsLSAKaW5ncy4gV2UgbmVlZCBub3QgdHJvdWJsZSBvdXJzZWx2ZXMgZXMtIApwZWNpYWxseSBhYm91dCB0aGF0LCBiZWNhdXNlIGlmIHdlIGNhcnJ5IG91dCAKb3VyIGhpZ2hlciBpZGVhbHMsIGlmIHdlIHRyeSB0byBzZWUgdG8gaXQgCnRoYXQgYWxsIG91ciB0aG91Z2h0IGFuZCBhbGwgb3VyIGVtb3Rpb24gCnNoYWxsIGJlIG9mIHRoZSBoaWdoZXN0IHBvc3NpYmxlIHR5cGUsIHRoZW4gCgoKMzA2IEFEWUFSIFRBTEtTIAoKCnRoYXQgYWxzbyB3aWxsLCBhdCB0aGUgc2FtZSB0aW1lIGFuZCB3aXRoLSAKb3V0IGZ1cnRoZXIgZGlmZmljdWx0eSwgYmUgdGhlIGRpc2NoYXJnaW5nIG9mIApvdXIgZHV0eSB0b3dhcmRzIHRoZSBlbGVtZW50YWwgZXNzZW5jZXMgCndoaWNoIGFyZSBpbmZsdWVuY2VkIGJ5IG91ciB0aG91Z2h0OyB0aGV5IAp3aWxsIGJlIHJhaXNlZCBhbmQgbm90LiBkZXByZXNzZWQ7IHRoZSBoaWdoZXIgCnF1YWxpdGllcyB3aGljaCB3ZSBhbG9uZSBjYW4gcmVhY2ggd2lsbCBiZSAKc2V0IGluIG1vdGlvbiwgdml2aWZpZWQgYW5kIGhlbHBlZCBhdCB0aGVpciAKcmVzcGVjdGl2ZSBsZXZlbHMuIAoKQWxsIHRocm91Z2ggZXZvbHV0aW9uIHRoZSBhc3Npc3RhbmNlIG9mIAp0aGUgaGlnaGVyIGlzIGV4cGVjdGVkIGluIHRoZSBkZXZlbG9wbWVudCAKb2YgdGhlIGxvd2VyLCBhbmQgaXQgaXMgbm90IG9ubHkgYnkgaW4tIApkaXZpZHVhbGlzbmcgdGhlbSB0aGF0IG1hbiBoYXMgaGVscGVkIHRoZSAKbWVtYmVycyBvZiB0aGUgYW5pbWFsIGtpbmdkb20uIEluIEF0LSAKbGFudGVhbiBkYXlzIHRoZSB2ZXJ5IGZvcm1hdGlvbiBvZiB0aGVpciAKc3BlY2llcyB3YXMgbGFyZ2VseSBnaXZlbiBvdmVyIGludG8gaGlzIApoYW5kcywgYW5kIGl0IGlzIGJlY2F1c2UgaGUgZmFpbGVkIHRvIGRvIGhpcyAKZHV0eSBwcm9wZXJseSB0aGF0IG1hbnkgdGhpbmdzIHR1cm5lZCBvdXQgCnJhdGhlciBkaWZmZXJlbnRseSBmcm9tIHdoYXQgd2FzIG9yaWdpbmFsbHkgCmludGVuZGVkLiBIaXMgbWlzdGFrZXMgYXJlIGxhcmdlbHkgcmUtIApzcG9uc2libGUgZm9yIHRoZSBleGlzdGVuY2Ugb2YgY2Fybml2b3JvdXMgCmNyZWF0dXJlcyB3aGljaCBsaXZlIG9ubHkgdG8gZGVzdHJveSBvbmUgCmFub3RoZXIuIE5vdCB0aGF0IGhlIHdhcyByZXNwb25zaWJsZSBmb3IgCmFsbCBjYXJuaXZvcm91cyBjcmVhdHVyZXM7IHRoZXJlIHdlcmUgc3VjaCAKYW1vbmcgdGhlIGdpZ2FudGljIHJlcHRpbGVzIG9mIHRoZSBMZW11cmlhbiAKcGVyaW9kLCBhbmQgbWFuIHdhcyBub3QgaW4gYW55IHdheSAKZGlyZWN0bHkgZW5nYWdlZCBpbiB0aGVpciBldm9sdXRpb247IGJ1dCBpdCAKd2FzIGluIHBhcnQgaGlzIHdvcmsgdG8gYXNzaXN0IGluIHRoZSAKZGV2ZWxvcG1lbnQgZnJvbSB0aG9zZSByZXB0aWxlIGZvcm1zIG9mIAoKCk9VUiBEVVRZIFRPIEFOSU1BTFMgMzA3IAoKCnRoZSBtYW1tYWxpYSB3aGljaCBwbGF5IHNvIHByb21pbmVudCBhIApwYXJ0IGluIHRoZSB3b3JsZCBub3cuIEhlcmUgd2FzIGhpcyAKb3Bwb3J0dW5pdHkgdG8gaW1wcm92ZSB0aGUgYnJlZWRzIGFuZCB0byAKY3VyYiB0aGUgdW5kZXNpcmFibGUgcXVhbGl0aWVzIG9mIHRoZSBjcmVhdHVyZXMgCnRoYXQgY2FtZSB1bmRlciBoaXMgaGFuZHM7IGFuZCBpdCBpc18gYmUtIApjYXVzZSBoZSBmYWlsZWQgdG8gZG8gYWxsIHRoYXQgaGUgbWlnaHQgCmhhdmUgZG9uZSBpbiB0aGlzIGRpcmVjdGlvbiB0aGF0IGhlIGlzIHRvIApzb21lIGV4dGVudCByZXNwb25zaWJsZSBmb3IgbXVjaCB0aGF0IGhhcyAKc2luY2UgZ29uZSB3cm9uZyBpbiB0aGUgd29ybGQuIElmIGhlIGhhZCAKZG9uZSBhbGwgaGlzIGR1dHkgaXQgaXMgcXVpdGUgY29uY2VpdmFibGUgCnRoYXQgd2UgbWlnaHQgaGF2ZSBoYWQgbm8uIGNhcm5pdm9yb3VzIAptYW1tYWxzLiAKCk1hbmtpbmQgaGFzIGZvciBzbyBsb25nIHRyZWF0ZWQgYW5pbWFscyAKY3J1ZWxseSB0aGF0IHRoZSB3aG9sZSBhbmltYWwgd29ybGQgaGFzIGEgCmdlbmVyYWwgZmVlbGluZyBvZiBmZWFyIGFuZCBlbm1pdHkgdG93YXJkcyAKbWVuLCBNZW4gaGF2ZSBnZW5lcmF0ZWQgaW4gdGhpcyB3YXkgYW4gCmF3ZnVsIGthcm1hLCB3aGljaCBjb21lcyBiYWNrIHVwb24gdGhlbSBpbiAKdGVycmlibGUgc3VmZmVyaW5nLCBpbiB2YXJpb3VzIGZvcm1zIG9mIGRpc2Vhc2UgCmFuZCBvZiBpbnNhbml0eS4gWWV0IGV2ZW4gYWZ0ZXIgYWxsIHRoaXMgYmFkIApiZWhhdmlvdXIgb24gdGhlIHBhcnQgb2YgbWFuLCBmZXcgYW5pbWFscyAKd2lsbCBoYXJtIGhpbSBpZiBsZWZ0IGFsb25lLiBBIHNlcnBlbnQsIGZvciAKZXhhbXBsZSwgd2lsbCBub3QgdXN1YWxseSBkbyBhbnkgaW5qdXJ5IHRvIGEgCmh1bWFuIGJlaW5nLCB1bmxlc3MgaGUgaXMgZmlyc3QgaHVydCBvciBmcmlnaHQtIAplbmVkOyBhbmQgdGhlIHNhbWUgdGhpbmcgaXMgdHJ1ZSBvZiBuZWFybHkgYWxsIAp3aWxkIGFuaW1hbHMsIGV4Y2VwdCB0aGUgdmVyeSBmZXcgd2hvIAptYXkgcmVnYXJkIG1hbiBhcyBmb29kLCBhbmQgZXZlbiB0aGV5IAp1c3VhbGx5IHdpbGwgbm90IHRvdWNoIG1hbiBpZiB0aGV5IGNhbiBnZXQgCmFueXRoaW5nIGVsc2UuIEh4Y2VwdCB3aGVuIGl0IGlzIGFic29sdXRlbHkgCgoKMzA4IEFEWUFSIFRBTEtTIAoKCm5lY2Vzc2FyeSBpbiBzZWxmLWRlZmVuY2Ugb3IgaW4gZGVmZW5jZSBvZiAKYW5vdGhlciB0aGUgZGVzdHJ1Y3Rpb24gb2YgYW55IGZvcm0gb2YgbGlmZSAKb3VnaHQgYWx3YXlzIHRvIGJlIGF2b2lkZWQsIGFzIGl0IHRlbmRzIHRvIHJlLSAKdGFyZCBuYXR1cmXigJlzIHdvcmsuIFRoYXQgaXMgb25lIG9mIHRoZSByZWEtIApzb25zIHdoeSBhbGwgY29uc2lzdGVudCBUaGVvc29waGlzdHMgcmVmdXNlIAp0byBzaGFyZSB0aGUgc2luIG9mIHNsYXVnaHRlciBieSBlYXRpbmcgbWVhdCAKb3IgZmlzaCwgb3IgYnkgd2VhcmluZyBzdWNoIHRoaW5ncyBhcyBhcmUgCm9idGFpbmVkIG9ubHkgYnkgdGhlIHNsYXVnaHRlciBvZiBhbmltYWxzLCAKbGlrZSBzZWFsc2tpbiBvciB0aGUgZmVhdGhlcnMgb2YgYmlyZHMuIC5TaWxrIAp1c2VkIHRvIGJlIG9idGFpbmVkIGJ5IHRoZSB3aG9sZXNhbGUgCnNsYXVnaHRlciBvZiBzaWxrd29ybXMsIGJ1dCBJIGhlYXIgdGhhdCAKdGhlcmUgaXMgbm93IGEgbmV3IHdheSBvZiBvYnRhaW5pbmcgaXQgCndpdGhvdXQgZGVzdHJveWluZyB0aGUgd29ybS4gCgoKU1lNUEFUSFkgCgoKTmV2ZXIgc2V0IHlvdXJzZWxmIGFnYWluc3QgdGhlIGxhdyBvZiAKbmF0dXJlLiBMYXRlbHksIG1hbiBoYXMgZ29uZSBhc3RyYXkgZnJvbSAKbmF0dXJlIHZlcnkgbXVjaCwgYW5kIG1hdGVyaWFsaXNtIGhhcyAKYmVjb21lIHdpZGVseSBzcHJlYWQuIE1hbnkgc2NpZW50aWZpYyBtZW4gCndobyBrbm93IGEgZ3JlYXQgZGVhbCBtb3JlIGFib3V0IG5hdHVyZSAKYXJlIHZlcnkgbXVjaCBsZXNzIGluIHN5bXBhdGh5IHdpdGggaGVyIAp0aGFuIHdlcmUgdGhlaXIgbGVzcyBpbnN0cnVjdGVkIGZvcmVmYXRoZXJzLiAKSW4gdGhlIHVzZWZ1bCwgYW5kIGluZGVlZCBuZWNlc3NhcnksIHN0dWR5IApvZiB0aGUgZXh0ZXJpb3IgbWFueSBoYXZlIGZvcmdvdHRlbiB0aGUgCmludGVyaW9yOyBidXQgbWVuIHdpbGwgcGFzcyB0aHJvdWdoIHRoaXMgCgoKU1lNUEFUSFkgwrsgMzA5IAoKCmludGVybWVkaWF0ZSBzdGFnZSBvZiBtaXN1bmRlcnN0YW5kaW5nIGFuZCAKY29tZSBiYWNrIGludG8gc3ltcGF0aHkuIFRoZSBvbGRlciBwZW8tIApwbGUsIHdobyBoYWQgYSBjbG9zZXIga2luc2hpcCB3aXRoIG5hdHVyZSwgCmNhcnJpZWQgb24gbGl0dGxlIG9mIGRldGFpbGVkIGV4YW1pbmF0aW9uLCAKd2hpY2ggd291bGQgaGF2ZSBzZWVtZWQgaXJyZXZlcmVudCB0byB0aGVtLiAKQmVjYXVzZSB3ZSBoYXZlIGJlY29tZSBpcnJldmVyZW50LCBoYXZlIApsb3N0IHRoZSBsaXZpbmcgZmVlbGluZywgd2UgcHJ5IHJlbW9yc2VsZXNzbHkuIApXZSBtdXN0IHRha2UgY2FyZSBub3QgdG8gbG9zZSB0aGUgcHJlLSAKY2lzaW9uIHRoYXQgd2UgaGF2ZSBnYWluZWQgYnkgdGhpcyBpbnRlci0gCm1lZGlhdGUgc3RhZ2UsIGJ1dCBtdXN0IHJlY292ZXIgdGhlIHN5bXBhLSAKdGh5LiBCeSBzeW1wYXRoeSBvbmUgbWF5IGZpbmQgb3V0IGEgCmdyZWF0IGRlYWwgd2hpY2ggc2NpZW5jZSBhbG9uZSBjYW4gbmV2ZXIgCmRpc2NvdmVyLiBJbiB0aGUgdGVhY2hpbmcgb2YgY2hpbGRyZW4sIHdlIApuZWVkIHRvIG1ha2UgdGhlbSBmZWVsIHRoYXQgd2UgdW5kZXJzdGFuZCAKdGhlbSwgZXZlbiB0aG91Z2ggaW4gZG9pbmcgc28gd2UgbWF5IApzYWNyaWZpY2Ugc29tZSBzY2hvbGFzdGljIGFkdmFudGFnZXMuIFRoZSAKYXZlcmFnZSBjaGlsZCByZWdhcmRzIGdyb3duLXVwIHBlb3BsZSBhcyAKZm9yZWlnbiBlbnRpdGllcywgc3RyYW5nZSBhcmJpdHJhcnkgYmVpbmdzLg==
sabato 1 gennaio 2000
[AL CORPUS] The Inner Life — Vol. I [2/4]
Iscriviti a:
Commenti sul post (Atom)
[AL CORPUS] Occult Chemistry [2/2]
VGhlc2UgdW5pdHMgYXJlIGFsbCBhbGlrZSwgc3BoZXJpY2FsIGFuZCBhYnNvbHV0ZWx5IHNpbXBsZSBpbiAKY29uc3RydWN0aW9uLiBUaG91Z2ggdGhleSBhcmUgdGhlIGJhc2lzIG9m...
-
VGhlc2UgdW5pdHMgYXJlIGFsbCBhbGlrZSwgc3BoZXJpY2FsIGFuZCBhYnNvbHV0ZWx5IHNpbXBsZSBpbiAKY29uc3RydWN0aW9uLiBUaG91Z2ggdGhleSBhcmUgdGhlIGJhc2lzIG9m...
-
XFwiXiAKCgpzICwgCgoKLl4gCgoKT0NDVUxUIENIRU1JU1RSWSAKCgpDbGFpcnZveWFudCBPYnNlcnZhdGlvbnMgb24gdGhlIApDaGVtaWNhbCBFbGVtZW50cyAKCgpCWSAKCgpBTk5J...
-
VEhPVUdIVC1GT1JNUyAKCgpCWSAKCkFOTklFIEJFU0FOVCAKCkFORCAKCkMuIFcuIExFQUQgQkVBVEVSIAoKCldJVEggRklGVFktRUlHSFQgSUxMVVNUUkFUSU9OUyAKCgpMT05ET04g...
Nessun commento:
Posta un commento