This article is encoded due to copyright reasons.

CjxhcnRpY2xlIGxhbmc9ImVuIj4KPGgxPkJldHRlciBOZXZlciB0byBIYXZlIEJlZW46IFRoZSBIYXJtIG9mIENvbWluZyBpbnRvIEV4aXN0ZW5jZTwvaDE+CjxwIGNsYXNzPSJ0ZXh0LWFsaWduLXJpZ2h0Ij5EYXZpZCBCZW5hdGFyPC9wPgo8YmxvY2txdW90ZSBjbGFzcz0iZm9udC1zdHlsZS1pdGFsaWMgdGV4dC1hbGlnbi1jZW50ZXIiPgogIFRvIG15IHBhcmVudHMsPGJyPgogICAgZXZlbiB0aG91Z2ggdGhleSBicm91Z2h0IG1lIGludG8gZXhpc3RlbmNlOzxicj4KICAgIGFuZCB0byBteSBicm90aGVycyw8YnI+CiAgICBlYWNoIG9mIHdob3NlIGV4aXN0ZW5jZSwgYWx0aG91Z2ggYSBoYXJtIHRvIGhpbSw8YnI+CiAgICBpcyBhIGdyZWF0IGJlbmVmaXQgdG8gdGhlIHJlc3Qgb2YgdXMuCjwvYmxvY2txdW90ZT4KCjxuYXY+PGEgaHJlZj0iI3ByZWZhY2UiPlByZWZhY2U8L2E+IDxhIGhyZWY9IiMxLWludHJvZHVjdGlvbiI+SS4gSW50cm9kdWN0aW9uPC9hPjwvbmF2PgoKCjxoMiBpZD0icHJlZmFjZSI+UHJlZmFjZTwvaDI+CjxwPkVhY2ggb25lIG9mIHVzIHdhcyBoYXJtZWQgYnkgYmVpbmcgYnJvdWdodCBpbnRvIGV4aXN0ZW5jZS4gVGhhdCBoYXJtIGlzIG5vdCBuZWdsaWdpYmxlLCBiZWNhdXNlIHRoZSBxdWFsaXR5IG9mIGV2ZW4gdGhlIGJlc3QgbGl2ZXMgaXMgdmVyeSBiYWQgJm5kYXNoOyBhbmQgY29uc2lkZXJhYmx5IHdvcnNlIHRoYW4gbW9zdCBwZW9wbGUgcmVjb2duaXplIGl0IHRvIGJlLgogIEFsdGhvdWdoIGl0IGlzIG9idmlvdXNseSB0b28gbGF0ZSB0byBwcmV2ZW50IG91ciBvd24gZXhpc3RlbmNlLCBpdCBpcyBub3QgdG9vIGxhdGUgdG8gcHJldmVudCB0aGUgZXhpc3RlbmNlIG9mIGZ1dHVyZSBwb3NzaWJsZSBwZW9wbGUuIENyZWF0aW5nIG5ldyBwZW9wbGUgaXMgdGh1cyBtb3JhbGx5IHByb2JsZW1hdGljLgogIEluIHRoaXMgYm9vayBJIGFyZ3VlIGZvciB0aGVzZSBjbGFpbXMgYW5kIHNob3cgd2h5IHRoZSB1c3VhbCByZXNwb25zZXMgdG8gdGhlbSZtZGFzaDs8Yj5pbmNyZWR1bGl0eTwvYj4sIGlmIG5vdCA8Yj5pbmRpZ25hdGlvbjwvYj4mbWRhc2g7YXJlIDxiPmRlZmVjdGl2ZTwvYj4uPC9wPgo8dGFibGU+CiAgPHRyPgogICAgPHRkPmluY3JlZHVsaXR5PC90ZD4KICAgIDx0ZD50aGUgcXVhbGl0eSBvciBzdGF0ZSBvZiBiZWluZyBpbmNyZWR1bG91cyA6IGRpc2JlbGllZjwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQ+aW5jcmVkdWxvdXM8L3RkPgogICAgPHRkPnVud2lsbGluZyB0byBhZG1pdCBvciBhY2NlcHQgd2hhdCBpcyBvZmZlcmVkIGFzIHRydWUgOiBub3QgY3JlZHVsb3VzIDogc2tlcHRpY2FsPC90ZD4KICA8L3RyPgogIDx0cj4KICAgIDx0ZD5pbmRpZ25hdGlvbjwvdGQ+CiAgICA8dGQ+YW5nZXIgYXJvdXNlZCBieSBzb21ldGhpbmcgdW5qdXN0LCB1bndvcnRoeSwgb3IgbWVhbjwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQ+ZGVmZWN0aXZlPC90ZD4KICAgIDx0ZD5oYXZpbmcgYSBkZWZlY3Qgb3IgZmxhdyA6IGltcGVyZmVjdCBpbiBmb3JtLCBzdHJ1Y3R1cmUsIG9yIGZ1bmN0aW9uPC90ZD4KICA8L3RyPgogIDx0cj4KICAgIDx0ZD5kZWZlY3Q8L3RkPgogICAgPHRkPmFuIGltcGVyZmVjdGlvbiBvciBhYm5vcm1hbGl0eSB0aGF0IGltcGFpcnMgcXVhbGl0eSwgZnVuY3Rpb24sIG9yIHV0aWxpdHkgOiBzaG9ydGNvbWluZywgZmxhdzwvdGQ+CiAgPC90cj4KPC90YWJsZT4KPHA+R2l2ZW4gdGhlIGRlZXAgcmVzaXN0YW5jZSB0byB0aGUgdmlld3MgSSBzaGFsbCBiZSBkZWZlbmRpbmcsIEkgaGF2ZQogIG5vIGV4cGVjdGF0aW9uIHRoYXQgdGhpcyBib29rIG9yIGl0cyBhcmd1bWVudHMgd2lsbCBoYXZlIGFueSBpbXBhY3QKICBvbiBiYWJ5LW1ha2luZy4gUHJvY3JlYXRpb24gd2lsbCBjb250aW51ZSA8Yj51bmRldGVycmVkPC9iPiwgY2F1c2luZyBhIHZhc3QgYW1vdW50IG9mIGhhcm0uPC9wPgo8dGFibGU+CiAgPHRyPgogICAgPHRkPmRldGVyPC90ZD4KICAgIDx0ZD50byB0dXJuIGFzaWRlLCBkaXNjb3VyYWdlLCBvciBwcmV2ZW50IGZyb20gYWN0aW5nPC90ZD4KICA8L3RyPgo8L3RhYmxlPgo8cD5JIGhhdmUgd3JpdHRlbiB0aGlzIGJvb2ssIHRoZW4sIG5vdCB1bmRlcgogIHRoZSA8Yj5pbGx1c2lvbjwvYj4gdGhhdCBpdCB3aWxsIG1ha2UgKG11Y2gpIGRpZmZlcmVuY2UgdG8gdGhlIG51bWJlciBvZgogIHBlb3BsZSB0aGVyZSB3aWxsIGJlIGJ1dCByYXRoZXIgZnJvbSB0aGUgb3BpbmlvbiB0aGF0IHdoYXQgSSBoYXZlCiAgdG8gc2F5IG5lZWRzIHRvIGJlIHNhaWQgd2hldGhlciBvciBub3QgaXQgaXMgYWNjZXB0ZWQuPC9wPgo8dGFibGU+CiAgPHRyPgogICAgPHRkPmlsbHVzaW9uPC90ZD4KICAgIDx0ZD5hbiBpbmNvcnJlY3QgaWRlYSA6IGFuIGlkZWEgdGhhdCBpcyBiYXNlZCBvbiBzb21ldGhpbmcgdGhhdCBpcyBub3QgdHJ1ZTwvdGQ+CiAgPC90cj4KPC90YWJsZT4KPHA+TWFueSByZWFkZXJzIHdpbGwgYmUgPGI+aW5jbGluZWQ8L2I+IHRvIGRpc21pc3MgbXkgYXJndW1lbnRzIGFuZAogIHdpbGwgZG8gc28gdG9vIDxiPmhhc3RpbHk8L2I+LiBXaGVuIHJlamVjdGluZyBhbiB1bnBvcHVsYXIgdmlldywgaXQgaXMKICBleHRyYW9yZGluYXJpbHkgZWFzeSB0byBiZSBvdmVybHkgY29uZmlkZW50IGluIHRoZSBmb3JjZSBvZiBvbmXigJlzCiAgcmVzcG9uc2VzLiBUaGlzIGlzIHBhcnRseSBiZWNhdXNlIHRoZXJlIGlzIGxlc3MgZmVsdCBuZWVkIHRvIGp1c3RpZnkKICBvbmXigJlzIHZpZXdzIHdoZW4gb25lIGlzIGRlZmVuZGluZyBhbiBvcnRob2RveHkuIEl0IGlzIGFsc28gcGFydGx5CiAgYmVjYXVzZSBjb3VudGVyLXJlc3BvbnNlcyBmcm9tIHRob3NlIGNyaXRpY2FsIG9mIHRoaXMgb3J0aG9kb3h5LAogIGdpdmVuIHRoZWlyIHJhcml0eSwgYXJlIGhhcmRlciB0byBhbnRpY2lwYXRlLgogIDwvcD4KPHRhYmxlPgogIDx0cj48dGQ+aW5jbGluZTwvdGQ+PHRkPnRvIGxlYW4sIHRlbmQsIG9yIGJlY29tZSBkcmF3biB0b3dhcmQgYW4gb3BpbmlvbiBvciBjb3Vyc2Ugb2YgY29uZHVjdDwvdGQ+PC90cj4KICA8dHI+CiAgICA8dGQ+aGFzdGlseTwvdGQ+CiAgICA8dGQ+aW4gaGFzdGUgOiBodXJyaWVkbHk8L3RkPgogIDwvdHI+CiAgPHRyPgogICAgPHRkPmhhc3RlPC90ZD4KICAgIDx0ZD5yYXNoIG9yIGhlYWRsb25nIGFjdGlvbiA6IHByZWNpcGl0YXRlbmVzczwvdGQ+CiAgPC90cj4KPC90YWJsZT4KPHA+VGhlIGFyZ3VtZW50IEkgYWR2YW5jZSBpbiB0aGlzIGJvb2sgaGFzIGJlZW4gZW5oYW5jZWQgYXMgYQogIHJlc3VsdCBvZiBhIG51bWJlciBvZiBlbmdhZ2luZyBjcml0aWNhbCByZXNwb25zZXMgdG8gZWFybGllciB2ZXJzaW9ucy4KICBBbm9ueW1vdXMgcmV2aWV3ZXJzIGZvciB0aGUgPGNpdGU+QW1lcmljYW4gUGhpbG9zb3BoaWNhbCBRdWFydGVybHk8L2NpdGU+CiAgb2ZmZXJlZCB3b3J0aHkgY2hhbGxlbmdlcywgZm9yY2luZyBtZSB0byBpbXByb3ZlIHRoZSBlYXJsaWVzdCB2ZXJzaW9ucy4KICBUaGUgdHdvIHBhcGVycyBJIHB1Ymxpc2hlZCBpbiB0aGF0IGpvdXJuYWwgcHJvdmlkZWQgdGhlIGJhc2lzCiAgZm9yIENoYXB0ZXIgMiBvZiB0aGlzIGJvb2sgYW5kIEkgYW0gZ3JhdGVmdWwgZm9yIHBlcm1pc3Npb24gdG8gdXNlCiAgdGhhdCBlYXJsaWVyIG1hdGVyaWFsLiBUaG9zZSBwYXBlcnMgd2VyZSBjb25zaWRlcmFibHkgcmV3b3JrZWQKICBhbmQgZGV2ZWxvcGVkIHBhcnRseSBhcyBhIHJlc3VsdCBvZiBtYW55IGNvbW1lbnRzIHJlY2VpdmVkIGluIHRoZQogIGludGVydmVuaW5nIHllYXJzIGFuZCBlc3BlY2lhbGx5IHdoaWxlIEkgd2FzIHdyaXRpbmcgdGhpcyBib29rLiBJIGFtCiAgZ3JhdGVmdWwgdG8gdGhlIFVuaXZlcnNpdHkgb2YgQ2FwZSBUb3duIGZvciBhIDxiPnNhYmJhdGljYWw8L2I+IHNlbWVzdGVyCiAgaW4gMjAwNCwgZHVyaW5nIHdoaWNoIGZvdXIgb2YgdGhlIGJvb2vigJlzIGNoYXB0ZXJzIHdlcmUgd3JpdHRlbi4KICBJIHByZXNlbnRlZCBtYXRlcmlhbCBmcm9tIHZhcmlvdXMgY2hhcHRlcnMgaW4gYSBudW1iZXIgb2YgPGI+Zm9yYTwvYj4sCiAgaW5jbHVkaW5nIHRoZSBQaGlsb3NvcGh5IERlcGFydG1lbnQgYXQgdGhlIFVuaXZlcnNpdHkgb2YgQ2FwZQogIFRvd24sIFJob2RlcyBVbml2ZXJzaXR5IGluIEdyYWhhbXN0b3duLCBTb3V0aCBBZnJpY2EsIHRoZSBTZXZlbnRoIFdvcmxkIENvbmdyZXNzIG9mIEJpb2V0aGljcyBpbiBTeWRuZXksIEF1c3RyYWxpYSwgYW5kIGluIHRoZQogIFVuaXRlZCBTdGF0ZXMgYXQgdGhlIEplYW4gQmVlciBCbHVtZW5mZWxkIENlbnRlciBmb3IgRXRoaWNzIGF0IEdlb3JnaWEgU3RhdGUgVW5pdmVyc2l0eSwgdGhlIENlbnRlciBmb3IgQmlvZXRoaWNzIGF0IHRoZSBVbml2ZXJzaXR5IG9mCiAgTWlubmVzb3RhLCBhbmQgdGhlIFBoaWxvc29waHkgRGVwYXJ0bWVudCBhdCB0aGUgVW5pdmVyc2l0eSBvZgogIEFsYWJhbWEgYXQgQmlybWluZ2hhbS4gSSBhbSBncmF0ZWZ1bCBmb3IgdGhlIGxpdmVseSBkaXNjdXNzaW9uCiAgb24gdGhlc2Ugb2NjYXNpb25zLiBGb3IgdGhlaXIgaGVscGZ1bCBjb21tZW50cyBhbmQgc3VnZ2VzdGlvbnMsIEkKICBzaG91bGQgbGlrZSB0byB0aGFuaywgYW1vbmcgb3RoZXJzLCBBbmR5IEFsdG1hbiwgRGFuIEJyb2NrLCBCZW5ndAogIEJydWxkZSwgTmljayBGb3Rpb24sIFN0ZXBoZW4gTmF0aGFuc29uLCBNYXJ0eSBQZXJsbXV0dGVyLCBSb2JlcnQKICBTZWdhbGwsIERhdmlkIFdlYmVybWFuLCBCZXJuaGFyZCBXZWlzcywgYW5kIEtpdCBXZWxsbWFuLjwvcD4KICA8dGFibGU+CiAgICA8dHI+CiAgICAgIDx0ZD5zYWJiYXRpY2FsPC90ZD4KICAgICAgPHRkPm9mIG9yIHJlbGF0aW5nIHRvIGEgc2FiYmF0aWNhbCB5ZWFyPC90ZD4KICAgIDwvdHI+CiAgICA8dHI+CiAgICAgIDx0ZD5zYWJiYXRpY2FsIHllYXI8L3RkPgogICAgICA8dGQ+YSBsZWF2ZSBvZnRlbiB3aXRoIHBheSBncmFudGVkIHVzdWFsbHkgZXZlcnkgc2V2ZW50aCB5ZWFyIChhcyB0byBhIGNvbGxlZ2UgcHJvZmVzc29yKSBmb3IgcmVzdCwgdHJhdmVsLCBvciByZXNlYXJjaDwvdGQ+CiAgICA8L3RyPgogICAgPHRyPgogICAgICA8dGQ+Zm9yYTwvdGQ+CiAgICAgIDx0ZD5wbHVyYWwgb2YgZm9ydW08L3RkPgogICAgPC90cj4KICA8L3RhYmxlPgo8cD5JIGFtIG1vc3QgZ3JhdGVmdWwgdG8gdGhlIHR3byByZXZpZXdlcnMgZm9yIE94Zm9yZCBVbml2ZXJzaXR5CiAgUHJlc3MsIERhdmlkIFdhc3Nlcm1hbiBhbmQgRGF2aWQgQm9vbmluLiBUaGV5IGdhdmUgZXh0ZW5zaXZlCiAgY29tbWVudHMgdGhhdCBoZWxwZWQgbWUgYW50aWNpcGF0ZSB0aGUga2luZHMgb2YgcmVzcG9uc2VzIGNyaXRpY2FsCiAgcmVhZGVycyBvZiB0aGUgcHVibGlzaGVkIHdvcmsgY291bGQgaGF2ZS4gSSBoYXZlIGF0dGVtcHRlZCB0byByYWlzZQogIGFuZCByZXBseSB0byB0aGVzZSBpbiByZXZpc2luZyB0aGUgbWFudXNjcmlwdC4gSSBhbSBzdXJlIHRoYXQgdGhlCiAgYm9vayBpcyBtdWNoIGJldHRlciBmb3IgaGF2aW5nIGNvbnNpZGVyZWQgdGhlaXIgb2JqZWN0aW9ucywgZXZlbgogIGlmIHRoZXkgYXJlIG5vdCBjb252aW5jZWQgYnkgbXkgcmVwbGllcy4gSSBhbSBhY3V0ZWx5IGF3YXJlLCBob3dldmVyLAogIHRoYXQgdGhlcmUgaXMgYWx3YXlzIHJvb20gZm9yIGltcHJvdmVtZW50IGFuZCBJIG9ubHkgd2lzaAogIHRoYXQgSSBrbmV3IG5vdywgcmF0aGVyIHRoYW4gbGF0ZXIgKG9yIG5ldmVyKSwgd2hhdCBpbXByb3ZlbWVudHMKICBjb3VsZCBiZSBtYWRlLgogIDwvcD4KPHA+RmluYWxseSwgSSBzaG91bGQgbGlrZSB0byB0aGFuayBteSBwYXJlbnRzIGFuZCBicm90aGVycyBmb3IgYWxsCiAgdGhleSBkbyBhbmQgZm9yIGFsbCB0aGV5IGFyZS4gVGhpcyBib29rIGlzIGRlZGljYXRlZCB0byB0aGVtLjwvcD4KCgo8aDIgaWQ9IjEtaW50cm9kdWN0aW9uIj5JLiBJbnRyb2R1Y3Rpb248L2gyPgoKPGZpZ3VyZT4KICA8YmxvY2txdW90ZT5MaWZlIGlzIHNvIHRlcnJpYmxlLCBpdCB3b3VsZCBoYXZlIGJlZW4gYmV0dGVyIG5vdCB0byBoYXZlIGJlZW4KICAgIGJvcm4uIFdobyBpcyBzbyBsdWNreT8gTm90IG9uZSBpbiBhIGh1bmRyZWQgdGhvdXNhbmQhPC9ibG9ja3F1b3RlPgogIDxmaWdjYXB0aW9uIGNsYXNzPSJ0ZXh0LWFsaWduLXJpZ2h0Ij4mbWRhc2g7SmV3aXNoIHNheWluZzwvZmlnY2FwdGlvbj4KPC9maWd1cmU+Cgo8cD5UaGUgY2VudHJhbCBpZGVhIG9mIHRoaXMgYm9vayBpcyB0aGF0IGNvbWluZyBpbnRvIGV4aXN0ZW5jZSBpcyBhbHdheXMKICBhIHNlcmlvdXMgaGFybS4gVGhhdCBpZGVhIHdpbGwgYmUgZGVmZW5kZWQgYXQgbGVuZ3RoLCBidXQgdGhlIGJhc2ljCiAgaW5zaWdodCBpcyBxdWl0ZSBzaW1wbGU6IEFsdGhvdWdoIHRoZSBnb29kIHRoaW5ncyBpbiBvbmXigJlzIGxpZmUgbWFrZQogIGl0IGdvIGJldHRlciB0aGFuIGl0IG90aGVyd2lzZSB3b3VsZCBoYXZlIGdvbmUsCiAgPHNwYW4gY2xhc3M9InRleHQtZGVjb3JhdGlvbi11bmRlcmxpbmUiPm9uZSBjb3VsZCBub3QgaGF2ZQogICAgYmVlbiBkZXByaXZlZCBieSB0aGVpciBhYnNlbmNlIGlmIG9uZSBoYWQgbm90IGV4aXN0ZWQuIFRob3NlIHdobwogICAgbmV2ZXIgZXhpc3QgY2Fubm90IGJlIGRlcHJpdmVkLjwvc3Bhbj4KICBIb3dldmVyLCBieSBjb21pbmcgaW50byBleGlzdGVuY2UKICBvbmUgZG9lcyBzdWZmZXIgcXVpdGUgc2VyaW91cyBoYXJtcyB0aGF0IGNvdWxkIG5vdCBoYXZlIDxiPmJlZmFsbGVuPC9iPgogIG9uZSBoYWQgb25lIG5vdCBjb21lIGludG8gZXhpc3RlbmNlLgo8L3A+Cjx0YWJsZT4KICA8dHI+CiAgICA8dGQ+YmVmYWxsZW48L3RkPgogICAgPHRkPnRvIGhhcHBlbiB0bzwvdGQ+CiAgPC90cj4KPC90YWJsZT4KPHA+VG8gc2F5IHRoYXQgdGhlIGJhc2ljIGluc2lnaHQgaXMgcXVpdGUgc2ltcGxlIGlzIG5vdCB0byBzYXkgdGhhdAogIGVpdGhlciBpdCBvciB3aGF0IHdlIGNhbiBkZWR1Y2UgZnJvbSBpdCB3aWxsIGJlIHVuZGlzcHV0ZWQuIEkKICBzaGFsbCBjb25zaWRlciBhbGwgdGhlIGFudGljaXBhdGVkIG9iamVjdGlvbnMgaW4gZHVlIGNvdXJzZSwgYW5kCiAgc2hhbGwgYXJndWUgdGhhdCB0aGV5IGZhaWwuIFRoZSBpbXBsaWNhdGlvbiBvZiBhbGwgdGhpcyBpcyB0aGF0CiAgY29taW5nIGludG8gZXhpc3RlbmNlLCBmYXIgZnJvbSBldmVyIGNvbnN0aXR1dGluZyBhIG5ldCBiZW5lZml0LAogIGFsd2F5cyBjb25zdGl0dXRlcyBhIG5ldCBoYXJtLiBNb3N0IHBlb3BsZSwgdW5kZXIgdGhlIGluZmx1ZW5jZQogIG9mIHBvd2VyZnVsIGJpb2xvZ2ljYWwgPGI+ZGlzcG9zaXRpb25zPC9iPiB0b3dhcmRzIG9wdGltaXNtLCBmaW5kIHRoaXMKICBjb25jbHVzaW9uIGludG9sZXJhYmxlLiBUaGV5IGFyZSBzdGlsbCBtb3JlIGluZGlnbmFudCBhdCB0aGUgZnVydGhlcgogIGltcGxpY2F0aW9uIHRoYXQgd2Ugc2hvdWxkIG5vdCBjcmVhdGUgbmV3IHBlb3BsZS4KPC9wPgo8dGFibGU+CiAgPHRyPgogICAgPHRkPmRpc3Bvc2l0aW9uPC90ZD4KICAgIDx0ZD50aGUgdXN1YWwgYXR0aXR1ZGUgb3IgbW9vZCBvZiBhIHBlcnNvbiBvciBhbmltYWw8L3RkPgogIDwvdHI+CjwvdGFibGU+CjxwPkNyZWF0aW5nIG5ldyBwZW9wbGUsIGJ5IGhhdmluZyBiYWJpZXMsIGlzIHNvIG11Y2ggYSBwYXJ0IG9mCiAgaHVtYW4gbGlmZSB0aGF0IGl0IGlzIHJhcmVseSB0aG91Z2h0IGV2ZW4gdG8gcmVxdWlyZSBhIGp1c3RpZmljYXRpb24uCiAgSW5kZWVkLCBtb3N0IHBlb3BsZSBkbyBub3QgZXZlbiB0aGluayBhYm91dCB3aGV0aGVyIHRoZXkgc2hvdWxkCiAgb3Igc2hvdWxkIG5vdCBtYWtlIGEgYmFieS4gVGhleSBqdXN0IG1ha2Ugb25lLiBJbiBvdGhlciB3b3JkcywKICBwcm9jcmVhdGlvbiBpcyB1c3VhbGx5IHRoZSBjb25zZXF1ZW5jZSBvZiBzZXggcmF0aGVyIHRoYW4gdGhlIHJlc3VsdAogIG9mIGEgZGVjaXNpb24gdG8gYnJpbmcgcGVvcGxlIGludG8gZXhpc3RlbmNlLiA8c3BhbiBjbGFzcz0idGV4dC1kZWNvcmF0aW9uLXVuZGVybGluZSI+VGhvc2Ugd2hvIGRvIGluZGVlZAogIDxlbT5kZWNpZGU8L2VtPiB0byBoYXZlIGEgY2hpbGQgbWlnaHQgZG8gc28gZm9yIGFueSBudW1iZXIgb2YgcmVhc29ucywgYnV0CiAgYW1vbmcgdGhlc2UgcmVhc29ucyBjYW5ub3QgYmUgdGhlIGludGVyZXN0cyBvZiB0aGUgcG90ZW50aWFsIGNoaWxkLgogIE9uZSBjYW4gbmV2ZXIgaGF2ZSBhIGNoaWxkIGZvciB0aGF0IGNoaWxk4oCZcyBzYWtlLjwvc3Bhbj4gVGhhdCBtdWNoIHNob3VsZAogIGJlIGFwcGFyZW50IHRvIGV2ZXJ5Ym9keSwgZXZlbiB0aG9zZSB3aG8gcmVqZWN0IHRoZSBzdHJvbmdlciB2aWV3CiAgZm9yIHdoaWNoIEkgYXJndWUgaW4gdGhpcyBib29rJm1kYXNoO3RoYXQgbm90IG9ubHkgZG9lcyBvbmUgbm90IGJlbmVmaXQKICBwZW9wbGUgYnkgYnJpbmdpbmcgdGhlbSBpbnRvIGV4aXN0ZW5jZSwgYnV0IG9uZSA8ZW0+YWx3YXlzPC9lbT4gaGFybXMgdGhlbS48L3A+CjxwPk15IGFyZ3VtZW50IGFwcGxpZXMgbm90IG9ubHkgdG8gaHVtYW5zIGJ1dCBhbHNvIHRvIGFsbCBvdGhlcgogIDxiPnNlbnRpZW50PC9iPiBiZWluZ3MuIFN1Y2ggYmVpbmdzIGRvIG5vdCBzaW1wbHkgZXhpc3QuIFRoZXkgZXhpc3QgaW4gYQogIHdheSB0aGF0IHRoZXJlIGlzIHNvbWV0aGluZyB0aGF0IGl0IGZlZWxzIGxpa2UgdG8gZXhpc3QuIEluIG90aGVyIHdvcmRzLAogIHRoZXkgYXJlIG5vdCBtZXJlbHkgb2JqZWN0cyBidXQgYWxzbyBzdWJqZWN0cy4gQWx0aG91Z2ggc2VudGllbmNlCiAgaXMgYSBsYXRlciBldm9sdXRpb25hcnkgZGV2ZWxvcG1lbnQgYW5kIGlzIGEgbW9yZSBjb21wbGV4IHN0YXRlIG9mCiAgYmVpbmcgdGhhbiBpbnNlbnRpZW5jZSwgaXQgaXMgZmFyIGZyb20gY2xlYXIgdGhhdCBpdCBpcyBhIGJldHRlciBzdGF0ZQogIG9mIGJlaW5nLiBUaGlzIGlzIGJlY2F1c2Ugc2VudGllbnQgZXhpc3RlbmNlIGNvbWVzIGF0IGEgc2lnbmlmaWNhbnQKICBjb3N0LiBJbiBiZWluZyBhYmxlIHRvIGV4cGVyaWVuY2UsIHNlbnRpZW50IGJlaW5ncyBhcmUgYWJsZSB0bywgYW5kCiAgZG8sIGV4cGVyaWVuY2UgPGVtPnVucGxlYXNhbnRuZXNzPC9lbT4uPC9wPgo8dGFibGU+PHRyPgogIDx0ZD5zZW50aWVudDwvdGQ+CiAgPHRkPnJlc3BvbnNpdmUgdG8gb3IgY29uc2Npb3VzIG9mIHNlbnNlIGltcHJlc3Npb25zPC90ZD4KPC90cj48L3RhYmxlPgo8cD5BbHRob3VnaCBJIHRoaW5rIHRoYXQgY29taW5nIGludG8gZXhpc3RlbmNlIGhhcm1zIGFsbCBzZW50aWVudAogIGJlaW5ncyBhbmQgSSBzaGFsbCBzb21ldGltZXMgc3BlYWsgYWJvdXQgYWxsIHN1Y2ggYmVpbmdzLCBteSBmb2N1cwogIHdpbGwgYmUgb24gaHVtYW5zLiBUaGVyZSBhcmUgYSBmZXcgcmVhc29ucyBmb3IgdGhpcyBmb2N1cywgb3RoZXIKICB0aGFuIHRoZSA8Yj5zaGVlcjwvYj4gY29udmVuaWVuY2Ugb2YgaXQuIFRoZSBmaXJzdCBpcyB0aGF0IHBlb3BsZSBmaW5kIHRoZQogIGNvbmNsdXNpb24gaGFyZGVzdCB0byBhY2NlcHQgd2hlbiBpdCBhcHBsaWVzIHRvIHRoZW1zZWx2ZXMuIFRoZQogIGZvY3VzIG9uIGh1bWFucywgcmF0aGVyIHRoYW4gb24gYWxsIHNlbnRpZW50IGxpZmUsIHJlaW5mb3JjZXMgaXRzCiAgYXBwbGljYXRpb24gdG8gaHVtYW5zLiBBIHNlY29uZCByZWFzb24gaXMgdGhhdCwgd2l0aCBvbmUgZXhjZXB0aW9uLAogIHRoZSBhcmd1bWVudCBoYXMgbW9zdCBwcmFjdGljYWwgc2lnbmlmaWNhbmNlIHdoZW4gYXBwbGllZCB0bwogIGh1bWFucyBiZWNhdXNlIHdlIGNhbiBhY3Qgb24gaXQgYnkgPGI+ZGVzaXN0aW5nPC9iPiBmcm9tIHByb2R1Y2luZwogIGNoaWxkcmVuLiBUaGUgZXhjZXB0aW9uIGlzIHRoZSBjYXNlIG9mIGh1bWFuIGJyZWVkaW5nIG9mIGFuaW1hbHMsPHN1cD48YSBocmVmPSIjZm9vdG5vdGUtMS0xIj4xPC9hPjwvc3VwPgogIGZyb20gd2hpY2ggd2UgY291bGQgYWxzbyBkZXNpc3QuIEEgdGhpcmQgcmVhc29uIGZvciBmb2N1c2luZyBvbgogIGh1bWFucyBpcyB0aGF0IHRob3NlIGh1bWFucyB3aG8gZG8gbm90IGRlc2lzdCBmcm9tIHByb2R1Y2luZwogIGNoaWxkcmVuIGNhdXNlIHN1ZmZlcmluZyB0byB0aG9zZSBhYm91dCB3aG9tIHRoZXkgdGVuZCB0byBjYXJlCiAgbW9zdCZtZGFzaDt0aGVpciBvd24gY2hpbGRyZW4uIFRoaXMgbWF5IG1ha2UgdGhlIGlzc3VlcyBtb3JlIHZpdmlkCiAgZm9yIHRoZW0gdGhhbiB0aGV5IG90aGVyd2lzZSB3b3VsZCBiZS48L3A+Cjx0YWJsZT4KICA8dHI+CiAgICA8dGQ+c2hlZXI8L3RkPgogICAgPHRkPmJlaW5nIGZyZWUgZnJvbSBhbiBhZHVsdGVyYW50IDogcHVyZSwgdW5taXhlZDwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQ+YWR1bHRlcmFudDwvdGQ+CiAgICA8dGQ+YW4gYWR1bHRlcmF0aW5nIHN1YnN0YW5jZSBvciBhZ2VudDwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQ+YWR1bHRlcmF0ZTwvdGQ+CiAgICA8dGQ+dG8gY29ycnVwdCwgZGViYXNlLCBvciBtYWtlIGltcHVyZSBieSB0aGUgYWRkaXRpb24gb2YgYSBmb3JlaWduIG9yIGluZmVyaW9yIHN1YnN0YW5jZSBvciBlbGVtZW50PC90ZD4KICA8L3RyPgogIDx0cj4KICAgIDx0ZD5kZXNpc3Q8L3RkPgogICAgPHRkPnRvIGNlYXNlIHRvIHByb2NlZWQgb3IgYWN0PC90ZD4KICA8L3RyPgo8L3RhYmxlPgo8cCBpZD0iZm9vdG5vdGUtMS0xIj48c3VwPjE8L3N1cD5JIHRyZWF0IHRoaXMgYXMgYW4gZXhjZXB0aW9uIGJlY2F1c2UgaHVtYW5zIGJyZWVkIG9ubHkgYSBzbWFsbCBwcm9wb3J0aW9uIG9mCiAgYWxsIHNwZWNpZXMgb2Ygc2VudGllbnQgYW5pbWFscy4gQWx0aG91Z2ggdGhpcyBpcyBhbiBleGNlcHRpb25hbCBjYXNlLCBpdCBoYXMgZ3JlYXQKICBzaWduaWZpY2FuY2UsIGdpdmVuIHRoZSBhbW91bnQgb2YgaGFybSBpbmZsaWN0ZWQgb24gdGhvc2UgYW5pbWFscyB0aGF0IGh1bWFucyBicmVlZAogIGZvciBmb29kIGFuZCBvdGhlciBjb21tb2RpdGllcywgYW5kIGlzIHRodXMgd29ydGh5IG9mIGJyaWVmIGRpc2N1c3Npb24gbm93LiBPbmUKICBwYXJ0aWN1bGFybHkgcG9vciBhcmd1bWVudCBpbiBkZWZlbmNlIG9mIGVhdGluZyBtZWF0IGlzIHRoYXQgaWYgaHVtYW5zIGRpZCBub3QgZWF0CiAgYW5pbWFscywgdGhvc2UgYW5pbWFscyB3b3VsZCBub3QgaGF2ZSBiZWVuIGJyb3VnaHQgaW50byBleGlzdGVuY2UgaW4gdGhlIGZpcnN0IHBsYWNlLgogIEh1bWFucyB3b3VsZCBzaW1wbHkgbm90IGhhdmUgYnJlZCB0aGVtIGluIHRoZSBudW1iZXJzIHRoZXkgZG8gYnJlZWQgdGhlbS4KICBUaGUgY2xhaW0gaXMgdGhhdCBhbHRob3VnaCB0aGVzZSBhbmltYWxzIGFyZSBraWxsZWQsIHRoaXMgY29zdCB0byB0aGVtIGlzIG91dHdlaWdoZWQKICBieSB0aGUgYmVuZWZpdCB0byB0aGVtIG9mIGhhdmluZyBiZWVuIGJyb3VnaHQgaW50byBleGlzdGVuY2UuIFRoaXMgaXMgYW4gYXBwYWxsaW5nCiAgYXJndW1lbnQgZm9yIG1hbnkgcmVhc29ucyAoc29tZSBvZiB3aGljaCBhcmUgb3V0bGluZWQgYnkgUm9iZXJ0IE5vemljay4gU2VlIGhpcwogIEFuYXJjaHksIFN0YXRlIGFuZCBVdG9waWEgKE94Zm9yZDogQmxhY2t3ZWxsLCAxOTc0KSAzOCZtZGFzaDs5KS4gRmlyc3QsIHRoZSBsaXZlcyBvZiBtYW55IG9mCiAgdGhlc2UgYW5pbWFscyBhcmUgc28gYmFkIHRoYXQgZXZlbiBpZiBvbmUgcmVqZWN0ZWQgbXkgYXJndW1lbnQgb25lIHdvdWxkIHN0aWxsIGhhdmUKICB0byB0aGluayB0aGF0IHRoZXkgd2VyZSBoYXJtZWQgYnkgYmVpbmcgYnJvdWdodCBpbnRvIGV4aXN0ZW5jZS4gU2Vjb25kbHksIHRob3NlIHdobwogIGFkdmFuY2UgdGhpcyBhcmd1bWVudCBmYWlsIHRvIHNlZSB0aGF0IGl0IGNvdWxkIGFwcGx5IGFzIHJlYWRpbHkgdG8gaHVtYW4gYmFiaWVzIHRoYXQKICBhcmUgcHJvZHVjZWQgb25seSB0byBiZSBlYXRlbi4gSGVyZSB3ZSBzZWUgcXVpdGUgY2xlYXJseSB0aGF0IGJlaW5nIGJyb3VnaHQgaW50bwogIGV4aXN0ZW5jZSBvbmx5IHRvIGJlIGtpbGxlZCBmb3IgZm9vZCBpcyBubyBiZW5lZml0LiBJdCBpcyBvbmx5IGJlY2F1c2Uga2lsbGluZyBhbmltYWxzCiAgaXMgdGhvdWdodCB0byBiZSBhY2NlcHRhYmxlIHRoYXQgdGhlIGFyZ3VtZW50IGlzIHRob3VnaHQgdG8gaGF2ZSBhbnkgZm9yY2UuIEluIGZhY3QKICBpdCBhZGRzIG5vdGhpbmcgdG8gdGhlIChtaXN0YWtlbikgdmlldyB0aGF0IGtpbGxpbmcgYW5pbWFscyBmb3IgZm9vZCBpcyBhY2NlcHRhYmxlLgogIEZpbmFsbHksIHRoZSBhcmd1bWVudCB0aGF0IGFuaW1hbHMgYXJlIGJlbmVmaXRlZCBieSBiZWluZyBicm91Z2h0IGludG8gZXhpc3RlbmNlCiAgb25seSB0byBiZSBraWxsZWQgaWdub3JlcyB0aGUgYXJndW1lbnQgdGhhdCBJIHNoYWxsIGRldmVsb3AgaW4gQ2hhcHRlcnMgMiBhbmQgMyZtZGFzaDt0aGF0CiAgY29taW5nIGludG8gZXhpc3RlbmNlIGlzIGl0c2VsZiwgcXVpdGUgaW5kZXBlbmRlbnRseSBvZiBob3cgbXVjaCB0aGUgYW5pbWFsIHRoZW4KICBzdWZmZXJzLCBhbHdheXMgYSBzZXJpb3VzIGhhcm0uPC9wPgo8aDM+V2hvIGlzIHNvIGx1Y2t5PzwvaDM+CjxwPkEgdmVyc2lvbiBvZiB0aGUgdmlldyBJIGRlZmVuZCBpbiB0aGlzIGJvb2sgaXMgdGhlIHN1YmplY3Qgb2Ygc29tZQogIGh1bW91cjo8L3A+CiAgPGZpZ3VyZT4KICAgIDxibG9ja3F1b3RlPkxpZmUgaXMgc28gdGVycmlibGUsIGl0IHdvdWxkIGhhdmUgYmVlbiBiZXR0ZXIgbm90IHRvIGhhdmUgYmVlbiBib3JuLiBXaG8KICAgICAgaXMgc28gbHVja3k/IE5vdCBvbmUgaW4gYSBodW5kcmVkIHRob3VzYW5kITxzdXA+PGEgaHJlZj0iI2Zvb3Rub3RlLTEtMiI+MjwvYT48L3N1cD48L2Jsb2NrcXVvdGU+CiAgPC9maWd1cmU+CjxwPlNpZ211bmQgRnJldWQgZGVzY3JpYmVzIHRoaXMgcXVpcCBhcyBhIOKAmG5vbnNlbnNpY2FsIGpva2XigJksPHN1cD48YSBocmVmPSIjZm9vdG5vdGUtMS0zIj4zPC9hPjwvc3VwPiB3aGljaAogIHJhaXNlcyB0aGUgcXVlc3Rpb24gd2hldGhlciBteSB2aWV3IGlzIHNpbWlsYXJseSBub25zZW5zaWNhbC4gSXMgaXQKICBzaGVlciBkcml2ZWwgdG8gc2F5IHRoYXQgY29taW5nIGludG8gZXhpc3RlbmNlIGlzIGEgaGFybSBhbmQgdGh1cwogIHRoYXQgaXQgaXMgYmV0dGVyIG5ldmVyIHRvIGNvbWUgaW50byBleGlzdGVuY2U/IE1hbnkgcGVvcGxlIHRoaW5rCiAgdGhhdCBpdCBpcy4gTXVjaCBvZiB0aGUgYXJndW1lbnQgaW4gQ2hhcHRlciAyIHdpbGwgc2hvdyB0aGF0IHRoZXkKICBhcmUgbWlzdGFrZW4uIEJ1dCBmaXJzdCBzb21lIGdyb3VuZCBtdXN0IGJlIGNsZWFyZWQgb2YgY29uZnVzaW9uLjwvcD4KPHRhYmxlPgogIDx0cj4KICAgIDx0ZD5xdWlwPC90ZD4KICAgIDx0ZD5hIGNsZXZlciB1c3VhbGx5IHRhdW50aW5nIHJlbWFyayA6IGdpYmU8L3RkPgogIDwvdHI+CiAgPHRyPgogICAgPHRkPmRyaXZlbDwvdGQ+CiAgICA8dGQ+bm9uc2Vuc2U8L3RkPgogIDwvdHI+PC90YWJsZT4KPHA+RHIgRnJldWQgc2F5cyB0aGF0IGFueWJvZHkg4oCYd2hvIGlzIG5vdCBib3JuIGlzIG5vdCBhIG1vcnRhbCBtYW4KICBhdCBhbGwsIGFuZCB0aGVyZSBpcyBubyBnb29kIGFuZCBubyBiZXN0IGZvciBoaW3igJkuPHN1cD48YSBocmVmPSIjZm9vdG5vdGUtMS00Ij40PC9hPjwvc3VwPgogIEhlcmUgRHIgRnJldWQgYW50aWNpcGF0ZXMgYW4gYXNwZWN0IG9mIHdoYXQgaXMgY2FsbGVkIHRoZSDigJhub24taWRlbnRpdHnigJkgcHJvYmxlbSwKICB3aGljaCBJIHNoYWxsIGRpc2N1c3MgYXQgbGVuZ3RoIGluIENoYXB0ZXIgMi4gU29tZSBjb250ZW1wb3JhcnkKICBwaGlsb3NvcGhlcnMgb2ZmZXIgYSBzaW1pbGFyIG9iamVjdGlvbiB3aGVuIHRoZXkgZGVueSB0aGF0IG9uZQogIGNvdWxkIGJlIGJldHRlciBvZmYgbm90IGJlaW5nIGJvcm4uIFRoZSBuZXZlci1leGlzdGVudCBjYW5ub3QgYmUKICBiZW5lZml0ZWQgYW5kIGNhbm5vdCBiZSBiZXR0ZXIgb2ZmLjwvcD4KPHA+SSBzaGFsbCBub3QgY2xhaW0gdGhhdCB0aGUgbmV2ZXItZXhpc3RlbnQgbGl0ZXJhbGx5IGFyZSBiZXR0ZXIgb2ZmLgogIEluc3RlYWQsIEkgc2hhbGwgYXJndWUgdGhhdCBjb21pbmcgaW50byBleGlzdGVuY2UgaXMgYWx3YXlzIGJhZCBmb3IKICB0aG9zZSB3aG8gY29tZSBpbnRvIGV4aXN0ZW5jZS4gSW4gb3RoZXIgd29yZHMsIGFsdGhvdWdoIHdlIG1heQogIG5vdCBiZSBhYmxlIHRvIHNheSBvZiB0aGUgbmV2ZXItZXhpc3RlbnQgdGhhdCBuZXZlciBleGlzdGluZyBpcyBnb29kCiAgZm9yIHRoZW0sIHdlIGNhbiBzYXkgb2YgdGhlIGV4aXN0ZW50IHRoYXQgZXhpc3RlbmNlIGlzIGJhZCBmb3IgdGhlbS4KICBUaGVyZSBpcyBubyBhYnN1cmRpdHkgaGVyZSwgb3Igc28gSSBzaGFsbCBhcmd1ZS48L3A+Cjx0YWJsZT4KICA8dHI+CiAgICA8dGQ+YWJzdXJkPC90ZD4KICAgIDx0ZD5yaWRpY3Vsb3VzbHkgdW5yZWFzb25hYmxlLCB1bnNvdW5kLCBvciBpbmNvbmdydW91czwvdGQ+CiAgPC90cj4KPC90YWJsZT4KPHA+T25jZSB3ZSBhY2tub3dsZWRnZSB0aGF0IGNvbWluZyBpbnRvIGV4aXN0ZW5jZSBjYW4gYmUgYQogIGhhcm0sIHdlIG1pZ2h0IHRoZW4gd2FudCB0byBzcGVhayBsb29zZWx5IGFib3V0IG5ldmVyIGNvbWluZwogIGludG8gZXhpc3RlbmNlIGJlaW5nIOKAmGJldHRlcuKAmS4gVGhpcyBpcyBub3QgdG8gc2F5IHRoYXQgaXQgaXMgYmV0dGVyIGZvcgogIHRoZSBuZXZlci1leGlzdGVudCwgbm9yIHRoYXQgdGhlIG5ldmVyLWV4aXN0ZW50IGFyZSBiZW5lZml0ZWQuIEkgZ3JhbnQKICB0aGF0IHRoZXJlIGlzIGV2ZW4gc29tZXRoaW5nIG9kZCBhYm91dCBzcGVha2luZyBhYm91dCB0aGUg4oCYbmV2ZXItZXhpc3RlbnTigJksIGJlY2F1c2UgdGhhdCBpcyBzdXJlbHkgYSByZWZlcmVudGxlc3MgdGVybS4gVGhlcmUgY2xlYXJseQogIGFyZSBub3QgYW55IG5ldmVyLWV4aXN0ZW50IHBlb3BsZS4gSXQgaXMsIGhvd2V2ZXIsIGEgY29udmVuaWVudAogIHRlcm0sIG9mIHdoaWNoIHdlIGNhbiBtYWtlIHNvbWUgc2Vuc2UuIEJ5IGl0IHdlIG1lYW4gdGhvc2UKICBwb3NzaWJsZSBwZW9wbGUgd2hvIG5ldmVyIGJlY29tZSBhY3R1YWwuPC9wPgo8cD5XaXRoIHRoaXMgaW4gbWluZCwgY29uc2lkZXIgdGhlIGpva2UgYWdhaW4uIEl0IGNhbiBiZSB2aWV3ZWQgYXMKICBtYWtpbmcgdHdvIGNsYWltczogKDEpIHRoYXQgaXQgaXMgYmV0dGVyIG5vdCB0byBiZSBib3JuLCBhbmQgKDIpIHRoYXQKICBub2JvZHkgaXMgbHVja3kgZW5vdWdoIG5vdCB0byBiZSBib3JuLiBXZSBub3cgc2VlIHRoYXQgdGhlcmUgPGVtPmlzPC9lbT4KICBhIChsb29zZSkgc2Vuc2UgaW4gd2hpY2ggb25lIGNhbiBzYXkgdGhhdCBpdCBpcyBiZXR0ZXIgbm90IHRvIGJlIGJvcm4uCiAgSXQgaXMgYW4gaW5kaXJlY3Qgd2F5IG9mIHNheWluZyB0aGF0IGNvbWluZyBpbnRvIGV4aXN0ZW5jZSBpcyBhbHdheXMKICBhIGhhcm0uIEFuZCB0aGVyZSBpcyBub3RoaW5nIG5vbnNlbnNpY2FsIGluIGNsYWltaW5nIHRoYXQgPGVtPm5vYm9keTwvZW0+CiAgaXMgbHVja3kgZW5vdWdoIG5ldmVyIHRvIGhhdmUgY29tZSBpbnRvIGV4aXN0ZW5jZSwgZXZlbiB0aG91Z2ggaXQKICB3b3VsZCBoYXZlIGJlZW4gKHBsYXlmdWwpIG5vbnNlbnNlIHRvIGNsYWltIHRoYXQgdGhlcmUgYXJlIHNvbWUKICBwZW9wbGUgd2hvIDxlbT5hcmU8L2VtPiBsdWNreSBlbm91Z2ggbm90IHRvIGNvbWUgaW50byBleGlzdGVuY2UuPC9wPgo8cD5JbiBhbnkgZXZlbnQsIHRoZSBmYWN0IHRoYXQgb25lIGNhbiBjb25zdHJ1Y3QgYSBqb2tlIGFib3V0IHRoZQogIHZpZXcgdGhhdCBjb21pbmcgaW50byBleGlzdGVuY2UgaXMgYWx3YXlzIGEgaGFybSwgZG9lcyBub3Qgc2hvdwogIHRoYXQgdGhhdCB2aWV3IGl0c2VsZiBpcyBsYXVnaGFibGUgbm9uc2Vuc2UuIEFsdGhvdWdoIHdlIGNhbiBsYXVnaAogIGF0IHNpbGxpbmVzcyB3ZSBjYW4gYWxzbyBsYXVnaCBhYm91dCB2ZXJ5IHNlcmlvdXMgbWF0dGVycy4gSXQgaXMgaW50bwogIHRoZSBsYXR0ZXIgY2F0ZWdvcnkgdGhhdCBJIHBsYWNlIGpva2VzIGFib3V0IHRoZSBoYXJtIG9mIGNvbWluZwogIGludG8gZXhpc3RlbmNlLjxzdXA+PGEgaHJlZj0iI2Zvb3Rub3RlLTEtNSI+NTwvYT48L3N1cD4gTGVzdCBpdCBiZSB0aG91Z2h0IHRoYXQgdGhlIGFyZ3VtZW50cyBJIGFkdmFuY2UgYXJlCiAgaW50ZW5kZWQgYXMgbWVyZSBwaGlsb3NvcGhpY2FsIGdhbWVzIG9yIGpva2VzLCBJIHNob3VsZCBlbXBoYXNpemUKICB0aGF0IEkgYW0gZW50aXJlbHkgc2VyaW91cyBpbiBteSBhcmd1bWVudHMgYW5kIEkgYmVsaWV2ZSB0aGUKICBjb25jbHVzaW9ucy48L3A+CjxwPkkgYW0gc2VyaW91cyBhYm91dCB0aGVzZSBtYXR0ZXJzIGJlY2F1c2Ugd2hhdCBsaWVzIGluIHRoZSBiYWxhbmNlCiAgaXMgdGhlIHByZXNlbmNlIG9yIGFic2VuY2Ugb2YgdmFzdCBhbW91bnRzIG9mIGhhcm0uIEkgc2hhbGwgc2hvdyBpbgogIENoYXB0ZXIgMyB0aGF0IGVhY2ggbGlmZSBjb250YWlucyBhIGdyZWF0IGRlYWwgb2YgYmFkJm1kYXNoO211Y2ggbW9yZQogIHRoYW4gcGVvcGxlIHVzdWFsbHkgdGhpbmsuIFRoZSBvbmx5IHdheSB0byBndWFyYW50ZWUgdGhhdCBzb21lCiAgZnV0dXJlIHBvc3NpYmxlIHBlcnNvbiB3aWxsIG5vdCBzdWZmZXIgdGhpcyBoYXJtIGlzIHRvIGVuc3VyZSB0aGF0CiAgdGhhdCBwb3NzaWJsZSBwZXJzb24gbmV2ZXIgYmVjb21lcyBhbiBhY3R1YWwgcGVyc29uLiBOb3Qgb25seSBpcwogIHRoaXMgaGFybSBhbGwgcmVhZGlseSBhdm9pZGFibGUsIGJ1dCBpdCBpcyBhbHNvIHNvIHV0dGVybHkgcG9pbnRsZXNzIChhdAogIGxlYXN0IGlmIHdlIGNvbnNpZGVyIG9ubHkgdGhlIGludGVyZXN0cyBvZiB0aGUgcG90ZW50aWFsIHBlcnNvbiBhbmQKICBub3QgYWxzbyB0aGUgaW50ZXJlc3RzIG90aGVycyBtaWdodCBoYXZlIGluIHRoYXQgcGVyc29u4oCZcyBjb21pbmcKICBpbnRvIGV4aXN0ZW5jZSkuIEFzIEkgc2hhbGwgc2hvdyBpbiBDaGFwdGVyIDIsIHRoZSBwb3NpdGl2ZSBmZWF0dXJlcwogIG9mIGxpZmUsIGFsdGhvdWdoIGdvb2QgZm9yIHRob3NlIHdobyBleGlzdCwgY2Fubm90IGp1c3RpZnkgdGhlIG5lZ2F0aXZlIGZlYXR1cmVzIHRoYXQgYWNjb21wYW55IHRoZW0uCiAgVGhlaXIgYWJzZW5jZSB3b3VsZCBub3QgaGF2ZSBiZWVuIGEgZGVwcml2YXRpb24gZm9yIG9uZSB3aG8gbmV2ZXIgY2FtZSBpbnRvIGV4aXN0ZW5jZS48L3A+Cgo8L2FydGljbGU+