PGh0bWw+Cgo8aGVhZD4KPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1MYW5ndWFnZSIgY29udGVudD0iZW4tdXMiPgo8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD13aW5kb3dzLTEyNTIiPgo8dGl0bGU+TXlsYXIgdG8gTXlseW4gUHJvamVjdCBSZW5hbWUgRkE8L3RpdGxlPgo8L2hlYWQ+Cgo8Ym9keT4KCjxoMiBhbGlnbj0iY2VudGVyIj5NeWxhciB0byBNeWx5biBQcm9qZWN0IFJlbmFtZSBGQVE8L2gyPgo8cD5BYm91dCB0aGUgbmFtZTogdGhlIDxhIGhyZWY9Imh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTXllbGluIj5teWVsaW48L2E+IApzdWJzdGFuY2UgYWNjZWxlcmF0ZXMgb3VyIHRob3VnaHRzIGJ5IG1ha2luZyBuZXVyb25zIG11Y2ggbW9yZSBlZmZpY2llbnQgYXQgCmNvbmR1Y3RpbmcgZWxlY3RyaWNpdHkuIFRoZSA8YSBocmVmPSJodHRwOi8vZWNsaXBzZS5vcmcvbXlseW4iPk15bHluPC9hPiAKbmFtZSBpcyBhIHRyaWJ1dGUgdG8gdGhpcyBzdWJzdGFuY2UsIGFzIG1hbnkgdXNlcnMgY2xhaW0gdGhhdCBvdXIgdG9vbHMgaW5jcmVhc2UgCmVmZmljaWVuY3kgdG8gdGhlIHBvaW50IHdoZXJlIHdlIGNhbiBjb2RlIGF0IHRoZSBzcGVlZCBvZiB0aG91Z2h0LiBUaGUgcHJlZmVycmVkIApwcm9udW5jaWF0aW9uIGlzJm5ic3A7IDx0dD4nbUlsJmFtcDtuPC90dD4sIGxpa2Ugc2F5aW5nICZxdW90O215JnF1b3Q7IGFuZCAmcXVvdDtseW5uJnF1b3Q7IHF1aWNrbHkuPC9wPgo8aDM+V2h5IGlzIHRoZSBFY2xpcHNlIE15bGFyIHByb2plY3QgY2hhbmdpbmcgaXRzIG5hbWUgdG8gTXlseW4/PC9oMz4KPHA+VGhlIEVjbGlwc2UgRm91bmRhdGlvbiB0YWtlcyBhIGxvdCBvZiBwcmlkZSBmcm9tIHRoZSBlZmZvcnRzIGl0IHB1dHMgaW50byAKc2hpcHBpbmcgY2xlYW4gaW50ZWxsZWN0dWFsIHByb3BlcnR5LiBXZSB3YW50IG91ciBlY29zeXN0ZW0gdG8gYmUgYWJsZSB0byBhZG9wdCAKdGVjaG5vbG9neSBmcm9tIG91ciBwcm9qZWN0cyB3aXRob3V0IGZlYXIgb2YgZW5jdW1icmFuY2VzLiBUcmFkZW1hcmtzIGFyZSAKaW50ZWxsZWN0dWFsIHByb3BlcnR5LCBzbyB3ZSBtdXN0IGVuc3VyZSB0aGF0IHdlIGhhdmUgY2xlYXIgcHJvdmVuYW5jZSBvZiAKRWNsaXBzZSB0cmFkZW1hcmtzIGFzIHdlbGwuIDwvcD4KPHA+VGhlIEVjbGlwc2UgRm91bmRhdGlvbiBpcyBjdXJyZW50bHkgZ29pbmcgdGhyb3VnaCB0aGUgcHJvY2VzcyBvZiByZS13cml0aW5nIAppdHMgdHJhZGVtYXJrIGd1aWRlbGluZXMgdG8gaW5jbHVkZSBFY2xpcHNlIHByb2plY3QgbmFtZXMgYXMgdHJhZGVtYXJrcyBvZiB0aGUgCkVjbGlwc2UgRm91bmRhdGlvbi4gQXMgcGFydCBvZiB0aGF0IHByb2Nlc3MsIHdlIGhhdmUgbGVhcm5lZCB0aGF0IHRoZXJlIGFyZSAKY29tcGxleGl0aWVzIHJlZ2FyZGluZyB0aGUgYXNzZXJ0aW9uIG9mIGNsZWFyIG93bmVyc2hpcCBvZiB0aGUgTXlsYXIgbmFtZS4gQWZ0ZXIgCm11Y2ggcmVzZWFyY2ggYW5kIGRpc2N1c3Npb24gLS0tIGluY2x1ZGluZyBkaXNjdXNzaW9uIGJ5IHRoZSBJUCBBZHZpc29yeSAKQ29tbWl0dGVlIG9mIHRoZSBCb2FyZCBvZiBEaXJlY3RvcnMgLS0tIHdlIGRlY2lkZWQgdGhhdCB0aGUgYmVzdCB3YXkgZm9yd2FyZCB3YXMgCnRvIGNoYW5nZSB0aGUgbmFtZSBvZiB0aGUgcHJvamVjdC48L3A+CjxwPldlIHVuZGVyc3RhbmQgdGhlIG1hcmtldGluZyBhbmQgdGVjaG5pY2FsIGlzc3VlcyB0byB0aGUgTXlsYXIgcHJvamVjdCwgCmNvbW11bml0eSBhbmQgYWRvcHRlcnMgcmVsYXRlZCB0byB0aGlzIG5hbWUgY2hhbmdlLiBXZSBoYXZlIG5vdCB0YWtlbiB0aGlzIApkZWNpc2lvbiBsaWdodGx5LCBhbmQgd2UgYWxsIHdpc2ggdGhhdCB0aGlzIGNoYW5nZSBkaWQgbm90IGhhdmUgdG8gaGFwcGVuIG9yIAp0aGF0IHdlIGhhZCBkaXNjb3ZlcmVkIHRoZSBpc3N1ZXMgZWFybGllci4gVGhlIHBvcHVsYXJpdHkgb2YgdGhlIE15bGFyIHByb2plY3QgCmhhcyBiZWVuIGdyb3dpbmcgdmVyeSByYXBpZGx5LCBhbmQgdGhpcyBpcyB0aGUgYmVzdCBkZWNpc2lvbiBmb3IgdGhlIHByb2plY3QsIGFzIAp3ZWxsIGFzIHRoZSBvdmVyYWxsIEVjbGlwc2UgY29tbXVuaXR5IGFuZCBlY29zeXN0ZW0uPC9wPgo8aDM+V2h5IHdvdWxkIEVjbGlwc2Ugbm90IHVzZSB0aGUgbmFtZSBNeWxhciBpZiB0aGUgcHJvZHVjdCBpcyBub3QgaW4gdGhlIApzb2Z0d2FyZSBkb21haW4/PC9oMz4KPHA+SW4gbW9zdCBjYXNlcywgdHJhZGVtYXJrcyBhcmUgcmVzdHJpY3RlZCB0byBhIHBhcnRpY3VsYXIgZmllbGQgb2YgdXNlIGFuZCAKcmVsYXRlZCBhcmVhcy4gSG93ZXZlciwgTXlsYXIgd2FzIGludmVudGVkIGFuZCByZWdpc3RlcmVkIGFzIGEgbWFyayBpbiB0aGUgCjE5NTCScyBhbmQgaGFzIGJlZW4gYSB3ZWxsLXByb3RlY3RlZCBtYXJrLiBNeWxhciBpcyBhIG1hcmsgY29pbmVkIGJ5IGl0cyBvd25lciAKLS0tIGFzIG9wcG9zZWQgdG8gYW4gRW5nbGlzaCBsYW5ndWFnZSB3b3JkIHRoYXQgd2FzIGFkb3B0ZWQgYXMgYSB0cmFkZW1hcmsuIApUaGVyZWZvcmUsIGl0cyBvd25lciBtYXkgaGF2ZSBhIHZlcnkgc3Ryb25nIGNsYWltIGFnYWluc3QgYW55b25lIHdobyB1c2VzIE15bGFyIAppbiBhbnkgc2Vuc2UsIGluY2x1ZGluZyBzb2Z0d2FyZS48L3A+CjxoMz5Ib3cgY2FuIGl0cyBvd25lciBoYXZlIGludmVudGVkIHRoZSB3b3JkIGlmIGl0IGhhcyBiZWVuIGEgc3VybmFtZSBzaW5jZSB0aGUgCjE2MDBzPyA8L2gzPgo8cD5BIGNvbXBhbnkgY2FuIGFzc2VydCB0cmFkZW1hcmsgcmlnaHRzIGluIGEgbWFyayB3aGljaCBoYXBwZW5zIHRvIGJlIHNvbWVvbmUncyAKc3VybmFtZS4gVGhlIHN0cmVuZ3RoIG9mIHRoZSBtYXJrIGlzIGEgZnVuY3Rpb24gb2Ygd2hldGhlciB0aGF0IHN1cm5hbWUgaXMgYSAKcmVhbCB3b3JkLCBhbmQgd2hldGhlciB0aGF0IHN1cm5hbWUgaXMgYWxyZWFkeSBiZWluZyB1c2VkIGFzIGEgdHJhZGVtYXJrLCBieSB0aGUgCnN1cm5hbWUgaG9sZGVyIG9yIHNvbWVvbmUgZWxzZS4gSW4gdGhpcyBjYXNlLCB0aGVyZSBpcyBubyBldmlkZW5jZSB0aGF0IE15bGFyIAp3YXMgdXNlZCBhcyBhIHRyYWRlbWFyayBieSBtb3JlIHRoYW4gb25lIGNvbXBhbnkuIFRodXMsIHRoZXJlIGlzIGEgZ29vZCBhcmd1bWVudCAKdG8gdGhlIHN0cmVuZ3RoIG9mIHRoYXQgbWFyay48L3A+CjxoMz5XaHkgZGlkIHlvdSBub3QgY2hvb3NlIGEgbGVzcyBkaXNydXB0aXZlIG5hbWUgbGlrZSBNaWxhciBvciBNeWwtcj88L2gzPgo8cD5XZSBjb25zaWRlcmVkIGEgbGFyZ2UgbnVtYmVyIG9mIHBvc3NpYmxlIG9wdGlvbnMuIEJ1dCBzaW5jZSB3ZSBhcmUgZ29pbmcgCnRocm91Z2ggdGhlIHByb2Nlc3Mgb2YgY2hhbmdpbmcgdGhlIG5hbWUgaXQgbWFkZSB0aGUgbW9zdCBzZW5zZSB0byBjaGFuZ2UgaXQgdG8gCmEgbmFtZSB3aGljaCBoYXMgbm8gb2J2aW91cyBlbmN1bWJyYW5jZXMuIFVuZGVyIHRyYWRlbWFyayBsYXcsIHRoZXJlIGFyZSAKcG9zc2libGUgY29tcGxpY2F0aW9ucyB3aXRoIHRob3NlIG5hbWVzIGJhc2VkIG9uIHRoZSBwb3NzaWJpbGl0eSB0aGF0IHRoZXkgbWF5IApiZSBwZXJjZWl2ZWQgYXMgk2NvbmZ1c2luZ2x5IHNpbWlsYXKUIHRvIE15bGFyLiBXZSBsaWtlIHRoZSBNeWx5biBuYW1lLCBpdHMgCmNvbm5vdGF0aW9ucywgYW5kIHRoZSBmYWN0IHRoYXQgaXQgd2FzIGNyZWF0ZWQgYnkgdGhlIHByb2plY3SScyBjb21taXR0ZXJzLiA8L3A+CjxoMz5XYXMgaXQgcG9zc2libGUgdG8ga2VlcCB0aGUgcGFja2FnZSBvciBwbHVnLWluIElEcyBhcyCTb3JnLmVjbGlwc2UubXlsYXKUIHRvIAptaW5pbWl6ZSBkaXNydXB0aW9uPzwvaDM+CjxwPk5vLCBFY2xpcHNlknMgcHJvamVjdHMgbXVzdCBhbGlnbiB0aGVpciBuYW1lcyB3aXRoIHRoZSBuYW1lIHNwYWNlcyB0aGV5IHVzZS4gClRoZSByaWdodCB0aW1lIHRvIGRvIHRoaXMgZm9yIHRoZSBNeWxhciBwcm9qZWN0IHdhcyBqdXN0IHByaW9yIHRvIHRoZSBFdXJvcGEgCnJlbGVhc2Ugd2hlbiBhZG9wdGVycyBoYWQgdG8gcG9ydCBmcm9tIHRoZSBNeWxhciAxLjAgdG8gdGhlIE15bHluIDIuMCBBUElzLiBXZSAKZG8gYXBwcmVjaWF0ZSB0aGF0IHRoZXJlIGlzIGEgc2lnbmlmaWNhbnQgcG9zc2liaWxpdHkgdGhhdCB0aGlzIGNoYW5nZSB3aWxsIGJlIApkaXNydXB0aXZlIHRvIHVzZXJzIGFuZCBhZG9wdGVycy4gV2UgYXJlIG1ha2luZyBzdXJlIHRoYXQgdGhpcyBjaGFuZ2UgaXMgd2VsbCAKcHVibGljaXplZCB0byB0aGUgY29tbXVuaXR5IGFuZCBhcmUgdGFraW5nIHRlY2huaWNhbCBzdGVwcyB0byBtYWtlIHRoZSBzd2l0Y2ggYXMgCnBhaW5sZXNzIGFzIHBvc3NpYmxlLiA8L3A+CjxoMz5JIHJlZGlzdHJpYnV0ZS9yZXBhY2thZ2UvcmV1c2UgTXlsYXIuIEhvdyBkb2VzIHRoaXMgYWZmZWN0IGV4aXN0aW5nIApwcm9kdWN0cy9zZXJ2aWNlcy90b29scyB0aGF0IGluY2x1ZGUgdGhlIHdvcmQgTXlsYXI/PC9oMz4KPHA+QXMgeW91IG1pZ3JhdGUgdG8gdGhlIG5ldyB2ZXJzaW9uIG9mIE15bHluIHNoaXBwaW5nIHdpdGggdGhlIEVjbGlwc2UgRXVyb3BhIApyZWxlYXNlIGluIEp1bmUgMjAwNywgeW91IHNob3VsZCBlbnN1cmUgdGhhdCB5b3UgdXBkYXRlIHlvdXIgcHJvZHVjdCAKZG9jdW1lbnRhdGlvbiB0byByZWZsZWN0IHRoZSBuZXcgbmFtZS48L3A+CjxwPiZuYnNwOzwvcD4KCjwvYm9keT4KCjwvaHRtbD4K