PCFkb2N0eXBlIGh0bWwgcHVibGljICItLy93M2MvL2R0ZCBodG1sIDQuMCB0cmFuc2l0aW9uYWwvL2VuIj4KCjxodG1sPgoKPGhlYWQ+CgogICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD13aW5kb3dzLTEyNTIiPgoKICAgPG1ldGEgbmFtZT0iQXV0aG9yIiBjb250ZW50PSJFY2xpcHNlIFByb2plY3QgUE1DIj4KCiAgIDxtZXRhIG5hbWU9IkdFTkVSQVRPUiIgY29udGVudD0iTWljcm9zb2Z0IEZyb250UGFnZSA0LjAiPgoKICAgPG1ldGEgbmFtZT0iUHJvZ0lkIiBjb250ZW50PSJGcm9udFBhZ2UuRWRpdG9yLkRvY3VtZW50Ij4KCiAgIDx0aXRsZT5FY2xpcHNlIFByb2plY3QgRHJhZnQgMi4yIFBsYW48L3RpdGxlPgoKICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9kZWZhdWx0X3N0eWxlLmNzcyIgdHlwZT0idGV4dC9jc3MiPgoKPC9oZWFkPgoKPGJvZHk+CgoKCjxoMT4gRWNsaXBzZSBQcm9qZWN0PGJyPgogIERSQUZUIDIuMiBQbGFuPC9oMT4KPHA+PGZvbnQgc2l6ZT0iKzIiPjxlbT5UaGlzIGRvY3VtZW50IGlzIG9ic29sZXRlLiBUaGUgMi4yIHJlbGVhc2UgaGFzIGJlZW4gcmVuYW1lZCAKICB0aGUgMy4wIHJlbGVhc2UgKDxhIGhyZWY9ImVjbGlwc2VfcHJvamVjdF9wbGFuXzNfMC5odG1sIj4zLjAgcGxhbjwvYT4pLjwvZW0+PC9mb250PjwvcD4KPHA+TGFzdCByZXZpc2VkIEZyaWRheSwgRGVjZW1iZXIgMjAsIDIwMDIgKDxpbWcgYm9yZGVyPSIwIiBzcmM9Im5ldy5naWYiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxMiI+IAogIG1hcmtzIGludGVyZXN0aW5nIGNoYW5nZXMgb3ZlciB0aGUgPGEgaHJlZj0iaHR0cDovL2VjbGlwc2Uub3JnL2VjbGlwc2UvZGV2ZWxvcG1lbnQvZWNsaXBzZV9wcm9qZWN0X3BsYW5fMl8xLmh0bWwiPjIuMSAKICBwbGFuPC9hPik8YnI+Cjxicj4KPGk+Jm5ic3A7Jm5ic3A7Jm5ic3A7IFBsZWFzZSBzZW5kIGNvbW1lbnRzIGFib3V0IHRoaXMgZHJhZnQgcGxhbiB0byB0aGUgPC9pPjxhIGhyZWY9Im1haWx0bzplY2xpcHNlLWRldkBlY2xpcHNlLm9yZyI+ZWNsaXBzZS1kZXZAZWNsaXBzZS5vcmc8L2E+CjxpPmRldmVsb3BlciBtYWlsaW5nIGxpc3QuPC9pPgo8L3A+Cgo8cD5UaGlzIGRvY3VtZW50IGxheXMgb3V0IHRoZSBmZWF0dXJlIGFuZCBBUEkgc2V0IGZvciB0aGUgbmV4dCBmZWF0dXJlIHJlbGVhc2UgCiAgb2YgRWNsaXBzZSwgZGVzaWduYXRlZCByZWxlYXNlIDIuMi4gCjxwPlBsYW5zIGRvIG5vdCBtYXRlcmlhbGl6ZSBvdXQgb2Ygbm93aGVyZSwgbm9yIGFyZSB0aGV5IGVudGlyZWx5IHN0YXRpYy4gVG8gZW5zdXJlIAogIHRoZSBwbGFubmluZyBwcm9jZXNzIGlzIHRyYW5zcGFyZW50IGFuZCBvcGVuIHRvIHRoZSBlbnRpcmUgRWNsaXBzZSBjb21tdW5pdHksIAogIHdlICh0aGUgRWNsaXBzZSBQTUMpIHBvc3QgcGxhbnMgaW4gYW4gZW1icnlvbmljIGZvcm0gYW5kIHJldmlzZSB0aGVtIHRocm91Z2hvdXQgCiAgdGhlIHJlbGVhc2UgY3ljbGUuIAo8cD5UaGUgZmlyc3QgcGFydCBvZiB0aGUgcGxhbgpkZWFscyB3aXRoIHRoZSBpbXBvcnRhbnQgbWF0dGVycyBvZiByZWxlYXNlIGRlbGl2ZXJhYmxlcywgcmVsZWFzZSBtaWxlc3RvbmVzLAp0YXJnZXQgb3BlcmF0aW5nIGVudmlyb25tZW50cywgYW5kIHJlbGVhc2UtdG8tcmVsZWFzZSBjb21wYXRpYmlsaXR5LiBUaGVzZSBhcmUKYWxsIHRoaW5ncyB0aGF0IG5lZWQgdG8gYmUgY2xlYXIgZm9yIGFueSByZWxlYXNlLCBldmVuIGlmIG5vIGZlYXR1cmVzIHdlcmUgdG8KY2hhbmdlLiZuYnNwOzxwPlRoZSByZW1haW5kZXIgb2YgdGhlIHBsYW4gY29uc2lzdHMgb2YgcGxhbiBpdGVtcyBmb3IgdGhlIHZhcmlvdXMKRWNsaXBzZSBzdWJwcm9qZWN0cy4gRWFjaCBwbGFuIGl0ZW0gY292ZXJzIGEgZmVhdHVyZSBvciBBUEkgdGhhdCBpcyB0byBiZSBhZGRlZAp0byBFY2xpcHNlLCBvciBzb21lIGFzcGVjdCBvZiBFY2xpcHNlIHRoYXQgaXMgdG8gYmUgaW1wcm92ZWQuIEVhY2ggcGxhbiBpdGVtIGhhcwphIHRpdGxlIGFuZCBhIGNvbmNpc2Ugc3VtbWFyeSAodXN1YWxseSBhIHNpbmdsZSBwYXJhZ3JhcGgpIHRoYXQgZXhwbGFpbnMgdGhlCndvcmsgaXRlbSBhdCBhIHN1aXRhYmx5IGhpZ2ggZW5vdWdoIGxldmVsIHNvIHRoYXQgZXZlcnlvbmUgY2FuIHJlYWRpbHkKdW5kZXJzdGFuZCB3aGF0IHRoZSB3b3JrIGl0ZW0gaXMgd2l0aG91dCBoYXZpbmcgdG8gdW5kZXJzdGFuZCB0aGUgbml0dHktZ3JpdHR5CmRldGFpbHMgKHdoaWNoIGNhbiBiZSBoYXNoZWQgb3V0IGVsc2V3aGVyZSkuJm5ic3A7CjxwPk5vdCBhbGwgcGxhbiBpdGVtcyByZXByZXNlbnQgdGhlIHNhbWUgYW1vdW50IG9mIHdvcms7IHNvbWUgbWF5IGJlIHF1aXRlIGxhcmdlLCAKICBvdGhlcnMsIHF1aXRlIHNtYWxsLiBTb21lIHBsYW4gaXRlbXMgbWF5IGludm9sdmUgd29yayB0aGF0IGlzIGxvY2FsaXplZCB0byBhIAogIHNpbmdsZSBQbGF0Zm9ybSBjb21wb25lbnQ7IG90aGVycyBtYXkgaW52b2x2ZSBjb29yZGluYXRlZCBjaGFuZ2VzIHRvIHNldmVyYWwgCiAgY29tcG9uZW50czsgb3RoZXIgbWF5IHBlcnZhZGUgdGhlIGVudGlyZSBQbGF0Zm9ybS4KPHA+V2l0aCB0aGUgcHJldmlvdXMgcmVsZWFzZSBhcyB0aGUgc3RhcnRpbmcgcG9pbnQsIHRoaXMgaXMgdGhlIHBsYW4gZm9yIGhvdyB3ZSAKICB3aWxsIGVuaGFuY2UgYW5kIGltcHJvdmUgaXQuIEZpeGluZyBidWdzLCBpbXByb3ZpbmcgdGVzdCBjb3ZlcmFnZSwgZG9jdW1lbnRhdGlvbiwgCiAgZXhhbXBsZXMsIHBlcmZvcm1hbmNlLCB1c2FiaWxpdHksIGV0Yy4gYXJlIGNvbnNpZGVyZWQgcm91dGluZSBvbmdvaW5nIG1haW50ZW5hbmNlIGFjdGl2aXRpZXMgYW5kIGFyZSAKICBub3QgaW5jbHVkZWQgaW4gdGhpcyBwbGFuIHVubGVzcyB0aGV5IHdvdWxkIGFsc28gaW52b2x2ZSBhIHNpZ25pZmljYW50IGNoYW5nZSAKICB0byB0aGUgQVBJIG9yIGZlYXR1cmUgc2V0LCBvciBpbnZvbHZlIGEgc2lnbmlmaWNhbnQgYW1vdW50IG9mIHdvcmsuIEFsbCBpbnRlcmVzdGluZyAKICBmZWF0dXJlIHdvcmsgaXMgYWNjb3VudGVkIGZvciBpbiB0aGlzIHBsYW4uCjxwPlRoZSBjdXJyZW50IHN0YXR1cyBvZiBlYWNoIHBsYW4gaXRlbSBpcwpub3RlZDoKPHVsPgogIDxsaT48Yj5Qcm9wb3NlZDwvYj4gcGxhbiBpdGVtIC0gQSBwcm9wb3NhbCBmb3IgYW4gYXNwZWN0IHRvIHdvcmsgb24gZm9yIHRoZQogICAgcmVsZWFzZS4gQWZ0ZXIgZHVlIGNvbnNpZGVyYXRpb24sIGEgcHJvcG9zYWwgd2lsbCBlaXRoZXIgYmUgY29tbWl0dGVkLAogICAgcmVqZWN0ZWQsIG9yIGRlZmVycmVkLjwvbGk+CiAgPGxpPjxiPkNvbW1pdHRlZDwvYj4gcGxhbiBpdGVtIC0gQSBjb21taXR0ZWQgcGxhbiBpdGVtIGlzIG9uZSB0aGF0IHdlIGhhdmUgZGVjaWRlZCAKICAgIHRvIGFkZHJlc3MgZm9yIHRoZSByZWxlYXNlLjwvbGk+CiAgPGxpPjxiPkRlZmVycmVkPC9iPiBwbGFuIGl0ZW0gLSBBIHJlYXNvbmFibGUgcHJvcG9zYWwgdGhhdCBkaWQgbm90IG1ha2UgaXQgaW4gCiAgICB0byB0aGlzIHJlbGVhc2UgZm9yIHNvbWUgcmVhc29uIGlzIG1hcmtlZCBhcyBkZWZlcnJlZCB3aXRoIGEgYnJpZWYgbm90ZSBhcyAKICAgIHRvIHdoeSB0aGV5IHdlcmUgZGVmZXJyZWQuIERlZmVycmVkIHBsYW4gaXRlbXMgbWF5IHJlc3VyZmFjZSBhcyBwcm9wb3NlZCBwbGFuIAogICAgaXRlbXMgYXQgYSBsYXRlciBwb2ludC48L2xpPgogIDxsaT48Yj5SZWplY3RlZDwvYj4gcGxhbiBpdGVtIC0gUGxhbiBpdGVtcyB0aGF0IHdlcmUgcHJvcG9zZWQgYnV0IGp1ZGdlZCB1bndvcmthYmxlIAogICAgYXJlIG1hcmtlZCBhcyByZWplY3RlZCBwbGFuIGl0ZW1zLCB3aXRoIGFuIGFjY29tcGFueWluZyBzdW1tYXJ5IG9mIHdoeSB0aGV5IAogICAgd2VyZSBkaXNtaXNzZWQuIEtlZXBpbmcgdHJhY2sgb2YgcmVqZWN0ZWQgaXRlbXMgYXZvaWRzIHJlcGVhdGluZyB0aGUgZGlzY3Vzc2lvbi48L2xpPgo8L3VsPgo8aDI+UmVsZWFzZSBkZWxpdmVyYWJsZXM8L2gyPgoKPHA+VGhlIHJlbGVhc2UgZGVsaXZlcmFibGVzIGhhdmUgdGhlIHNhbWUgZm9ybSBhcyBwcmV2aW91cyByZWxlYXNlcywgbmFtZWx5OgoKPHVsPgoKICA8bGk+U291cmNlIGNvZGUgcmVsZWFzZSBmb3IgRWNsaXBzZSBQcm9qZWN0LCBhdmFpbGFibGUgYXMgdmVyc2lvbnMgdGFnZ2VkICZxdW90O1IyXzImcXVvdDsgCiAgICBpbiB0aGUgRWNsaXBzZSBQcm9qZWN0IDxhIGhyZWY9Imh0dHA6Ly9kZXYuZWNsaXBzZS5vcmcvdmlld2N2cy8iPkNWUyByZXBvc2l0b3J5PC9hPi48L2xpPgoKICA8bGk+RWNsaXBzZSBQcm9qZWN0IFNESyAoaW5jbHVkZXMgUGxhdGZvcm0sIEpEVCwgYW5kIFBERSBzb3VyY2UgemlwcykKCiAgICAoZG93bmxvYWRhYmxlKS48L2xpPgoKICA8bGk+RWNsaXBzZSBQbGF0Zm9ybSBydW50aW1lIGJpbmFyeSBkaXN0cmlidXRpb24gKGRvd25sb2FkYWJsZSkuPC9saT4KCiAgPGxpPkpEVCBydW50aW1lIGJpbmFyeSBkaXN0cmlidXRpb24gKGRvd25sb2FkYWJsZSkuPC9saT4KCiAgPGxpPkVjbGlwc2UgU0RLIEV4YW1wbGVzIChkb3dubG9hZGFibGUpLjwvbGk+Cgo8L3VsPgoKPGgyPjxhIG5hbWU9Ik1pbGVzdG9uZXMiPjwvYT5SZWxlYXNlIG1pbGVzdG9uZXM8L2gyPgoKPHA+UmVsZWFzZSBtaWxlc3RvbmUgb2NjdXJyaW5nIGF0IHJvdWdobHkKNSB3ZWVrIGludGVydmFscyBleGlzdCB0byBmYWNpbGl0YXRlCmNvYXJzZS1ncmFpbmVkIHBsYW5uaW5nIGFuZCBzdGFnaW5nLiBBc3N1bWluZyAyLjIgZGV2ZWxvcG1lbnQgY29tbWVuY2VzIG9uIEFwcmlsIDEsCjIwMDMsIHRoZSBtaWxlc3RvbmVzIGZvciAyMDAzIGFyZTo8L3A+Cgo8dWw+CiAgPGxpPkZyaWRheSBNYXkgMiwgMjAwMyAtIE1pbGVzdG9uZSAxIC0gKDIuMiBNMSkgLSBzdGFibGUgYnVpbGQgcmVmbGVjdGluZyBwcm9ncmVzczwvbGk+CiAgPGxpPkZyaWRheSBKdW5lIDYsIDIwMDMgLSBNaWxlc3RvbmUgMiAtICgyLjIgTTIpIC0gc3RhYmxlIGJ1aWxkIHJlZmxlY3RpbmcgcHJvZ3Jlc3M8L2xpPgogIDxsaT5GcmlkYXkgQXVndXN0IDEsIDIwMDMgLSBNaWxlc3RvbmUgMyAtICgyLjIgTTMpIC0gc3RhYmxlIGJ1aWxkIHJlZmxlY3RpbmcKICAgIHByb2dyZXNzPC9saT4KICA8bGk+RnJpZGF5IFNlcHRlbWJlciAxMiwgMjAwMyAtIE1pbGVzdG9uZSA0IC0gKDIuMiBNNCkgLSBzdGFibGUgYnVpbGQgcmVmbGVjdGluZwogICAgcHJvZ3Jlc3M8L2xpPgogIDxsaT5GcmlkYXkgT2N0b2JlciAxNywgMjAwMyAtIE1pbGVzdG9uZSA1IC0gKDIuMiBNNSkgLSBzdGFibGUgYnVpbGQgcmVmbGVjdGluZwogICAgcHJvZ3Jlc3M8L2xpPgogIDxsaT5GcmlkYXkgTm92ZW1iZXIgMjEsIDIwMDMgLSBNaWxlc3RvbmUgNiAtICgyLjIgTTYpIC0gc3RhYmxlIGJ1aWxkIHJlZmxlY3RpbmcKICAgIHByb2dyZXNzPC9saT4KPC91bD4KCjxwPiAoTm90ZSB0aGF0IHRoZSB0d28gbWlkLXN1bW1lciBtaWxlc3RvbmVzIGFyZSBleHRlbmRlZCBieSB0d28gd2Vla3MgZWFjaCB0bwphbGxvdyBmb3Igcm91Z2hseSBoYWxmIHRoZSBkZXZlbG9wbWVudCB0ZWFtIHRvIGJlIGF3YXkgb24gdmFjYXRpb24uKTwvcD4KCjxwPiBPdXIgdGFyZ2V0CmlzIHRvIGNvbXBsZXRlIDIuMiBlYXJseSAxUTIwMDQuIEFsbCByZWxlYXNlIGRlbGl2ZXJhYmxlcyB3aWxsIGJlIGF2YWlsYWJsZSBmb3IgZG93bmxvYWQgYXMgCiAgc29vbiBhcyB0aGUgcmVsZWFzZSBoYXMgYmVlbiB0ZXN0ZWQgYW5kIHZhbGlkYXRlZCBpbiB0aGUgdGFyZ2V0IG9wZXJhdGluZyBjb25maWd1cmF0aW9ucyAKICBsaXN0ZWQgYmVsb3cuPC9wPgoKPGgyPjxhIG5hbWU9IlRhcmdldE9wZXJhdGluZ0Vudmlyb25tZW50cyI+PC9hPlRhcmdldCBPcGVyYXRpbmcgRW52aXJvbm1lbnRzPC9oMj4KCgoKPHA+SW4gb3JkZXIgdG8gcmVtYWluIGN1cnJlbnQsIGVhY2ggRWNsaXBzZSByZWxlYXNlIHRhcmdldHMgcmVhc29uYWJseSBjdXJyZW50CnZlcnNpb25zIG9mIHRoZSB1bmRlcmx5aW5nIG9wZXJhdGluZyBlbnZpcm9ubWVudHMuPC9wPgoKPHA+TW9zdCBvZiB0aGUgRWNsaXBzZSBTREsgaXMgJnF1b3Q7cHVyZSZxdW90OyBKYXZhmSBjb2RlIGFuZCBoYXMgbm8gZGlyZWN0CmRlcGVuZGVuY2Ugb24gdGhlIHVuZGVybHlpbmcgb3BlcmF0aW5nIHN5c3RlbS4gVGhlIGNoaWVmIGRlcGVuZGVuY2UgaXMgdGhlcmVmb3JlCm9uIHRoZSBKYXZhIDIgUGxhdGZvcm0gaXRzZWxmLiA8aW1nIGJvcmRlcj0iMCIgc3JjPSJuZXcuZ2lmIiB3aWR0aD0iMTIiIGhlaWdodD0iMTIiPgogVGhlIDIuMiByZWxlYXNlIG9mIHRoZSBFY2xpcHNlIFByb2plY3QgaXMgd3JpdHRlbgphbmQgY29tcGlsZWQgYWdhaW5zdCB2ZXJzaW9uIDEuNCBvZiB0aGUgSmF2YSAyIFBsYXRmb3JtIEFQSXMsIGFuZCB0YXJnZXRlZCB0bwpydW4gb24gdmVyc2lvbiAxLjQgb2YgdGhlIEphdmEgMiBSdW50aW1lIEVudmlyb25tZW50LCBTdGFuZGFyZApFZGl0aW9uLjwvcD4KPHA+RWNsaXBzZSBTREsgMi4yIHdpbGwgYmUgdGVzdGVkIGFuZCB2YWxpZGF0ZWQgb24gdGhlIGZvbGxvd2luZyBKYXZhIDIKUGxhdGZvcm0gaW1wbGVtZW50YXRpb25zOjwvcD4KPHRhYmxlIHdpZHRoPSI5MSUiIGJvcmRlcj0iMSI+CiAgPHRib2R5PgogICAgPHRyPgogICAgICA8dGQgd2lkdGg9IjIxJSI+PGI+T3BlcmF0aW5nIHN5c3RlbTwvYj48L3RkPgogICAgICA8dGQgd2lkdGg9IjE4JSI+PGI+UHJvY2Vzc29yIGFyY2hpdGVjdHVyZTwvYj48L3RkPgogICAgICA8dGQgd2lkdGg9IjczJSI+PGI+SmF2YSAyIFBsYXRmb3JtczwvYj48L3RkPgogICAgPC90cj4KICAgIDx0cj4KICAgICAgPHRkIHdpZHRoPSIyMSUiIHJvd1NwYW49IjIiPk1pY3Jvc29mdK4gV2luZG93c648L3RkPgogICAgICA8dGQgd2lkdGg9IjE4JSIgcm93U3Bhbj0iMiI+SW50ZWwgeDg2PC90ZD4KICAgICAgPHRkIHdpZHRoPSI3MyUiPlN1biBKYXZhIDIgU0RLLCBTdGFuZGFyZCBFZGl0aW9uLCB2ZXJzaW9uIDEuNCBmb3IgTWljcm9zb2Z0IAogICAgICAgIFdpbmRvd3MgPGk+W2V4YWN0IHZlcnNpb24gVEJEXTwvaT48L3RkPgogICAgPC90cj4KICAgIDx0cj4KICAgICAgPHRkIHdpZHRoPSI3MyUiPklCTSAzMi1iaXQgU0RLIGZvciBXaW5kb3dzLCBKYXZhIDIgVGVjaG5vbG9neSBFZGl0aW9uLCB2ZXJzaW9uIAogICAgICAgIDEuNCA8aT5bZXhhY3QgdmVyc2lvbiBUQkRdPC9pPjwvdGQ+CiAgICA8L3RyPgogICAgPHRyPgogICAgICA8dGQgd2lkdGg9IjIxJSIgcm93U3Bhbj0iMiI+TGludXg8L3RkPgogICAgICA8dGQgd2lkdGg9IjE4JSIgcm93U3Bhbj0iMiI+SW50ZWwgeDg2PC90ZD4KICAgICAgPHRkIHdpZHRoPSI3MyUiPlN1biBKYXZhIDIgU0RLLCBTdGFuZGFyZCBFZGl0aW9uLCB2ZXJzaW9uIDEuNCBmb3IgTGludXggCiAgICAgICAgeDg2IDxpPltleGFjdCB2ZXJzaW9uIFRCRF08L2k+PC90ZD4KICAgIDwvdHI+CiAgICA8dHI+CiAgICAgIDx0ZCB3aWR0aD0iNzMlIj5JQk0gRGV2ZWxvcGVyIEtpdCBmb3IgTGludXgsIEphdmEgMiBUZWNobm9sb2d5IEVkaXRpb24sIAogICAgICAgIHZlcnNpb24gMS40IDxpPltleGFjdCB2ZXJzaW9uIFRCRF08L2k+PC90ZD4KICAgIDwvdHI+CiAgICA8dHI+CiAgICAgIDx0ZCB3aWR0aD0iMjElIj5TdW4gU29sYXJpczwvdGQ+CiAgICAgIDx0ZCB3aWR0aD0iMTglIj5TUEFSQzwvdGQ+CiAgICAgIDx0ZCB3aWR0aD0iNzMlIj5TdW4gSmF2YSAyIFNESywgU3RhbmRhcmQgRWRpdGlvbiwgdmVyc2lvbiAxLjQgZm9yIFNvbGFyaXMgCiAgICAgICAgU1BBUkMgPGk+W2V4YWN0IHZlcnNpb24gVEJEXTwvaT48L3RkPgogICAgPC90cj4KICAgIDx0cj4KICAgICAgPHRkIHdpZHRoPSIyMSUiPkhQIEhQLVVYPC90ZD4KICAgICAgPHRkIHdpZHRoPSIxOCUiPmhwOTAwMCBQQS1SSVNDPC90ZD4KICAgICAgPHRkIHdpZHRoPSI3MyUiPjxzcGFuIGNsYXNzPSJoZWFkZXIiPkhQLVVYIFNESyBmb3IgdGhlIEphdmEgMiBwbGF0Zm9ybSwgCiAgICAgICAgdmVyc2lvbiAxLjQgZm9yIGhwOTAwMCBQQS1SSVNDPC9zcGFuPiA8aT5bZXhhY3QgdmVyc2lvbiBUQkRdPC9pPjwvdGQ+CiAgICA8L3RyPgogICAgPHRyPgogICAgICA8dGQgd2lkdGg9IjIxJSI+SUJNriBBSVg8L3RkPgogICAgICA8dGQgd2lkdGg9IjE4JSI+UG93ZXJQQzwvdGQ+CiAgICAgIDx0ZCB3aWR0aD0iNzMlIj5JQk0gRGV2ZWxvcGVyIEtpdCBmb3IgQUlYLCBKYXZhIDIgVGVjaG5vbG9neSBFZGl0aW9uLCB2ZXJzaW9uIAogICAgICAgIDEuNCA8aT5bZXhhY3QgdmVyc2lvbiBUQkRdPC9pPjwvdGQ+CiAgICA8L3RyPgogICAgPHRyPgogICAgICA8dGQgd2lkdGg9IjIxJSI+QXBwbGWuIE1hY64gT1M8L3RkPgogICAgICA8dGQgd2lkdGg9IjE4JSI+UG93ZXJQQzwvdGQ+CiAgICAgIDx0ZCB3aWR0aD0iNzMlIj5KYXZhIDIgU3RhbmRhcmQgRWRpdGlvbiAxLjQgZm9yIE1hYyBPUyBYIDxpPltleGFjdCB2ZXJzaW9uIAogICAgICAgIFRCRF08L2k+PC90ZD4KICAgIDwvdHI+CiAgICA8dHI+CiAgICAgIDx0ZCB3aWR0aD0iMjElIj48c3BhbiBjbGFzcz0idGl0bGUiPlFOWDwvc3Bhbj6uPHNwYW4gY2xhc3M9InRpdGxlIj4KICAgICAgICBOZXV0cmlubzwvc3Bhbj6uPHNwYW4gY2xhc3M9InRpdGxlIj4gUlRPUzwvc3Bhbj48L3RkPgogICAgICA8dGQgd2lkdGg9IjE4JSI+SW50ZWwgeDg2PC90ZD4KICAgICAgPHRkIHdpZHRoPSI3MyUiPklCTSBKOSBWTSBmb3IgUU5YIDxpPltleGFjdCB2ZXJzaW9uIFRCRF08L2k+PC90ZD4KICAgIDwvdHI+CiAgPC90Ym9keT4KPC90YWJsZT4KPHA+PHNwYW4gY2xhc3M9ImhlYWRlciI+VGhlIGZvbGxvd2luZyB0YWJsZSBkZXNjcmliZXMgdGhlIGNvbWJpbmF0aW9ucyBvZiBvcGVyYXRpbmcgCiAgc3lzdGVtIGFuZCBKYXZhIDIgUGxhdGZvcm0gdXNlZCB3aGVuIHRlc3RpbmcgdGhlIEVjbGlwc2UgU0RLIGNvbmZpZ3VyYXRpb25zLiAKICBUaGUgc3RhdHVzIGNvbHVtbiBpbmRpY2F0ZXMgdGhlIGxldmVsIG9mIHRlc3Rpbmc6ICZxdW90O1ByaW1hcnkmcXVvdDsgbWVhbnMgCiAgYSBmdWxsIHRlc3RlZCBjb25maWd1cmF0aW9uOyAmcXVvdDs8L3NwYW4+U2Vjb25kYXJ5JnF1b3Q7IG1lYW5zIGEgY29uZmlndXJhdGlvbiAKICB3aGljaCBpcyBvbmx5IGxpZ2h0bHkgdGVzdGVkOyAmcXVvdDtVbnRlc3RlZCZxdW90OyBtZWFucyBhIGNvbmZpZ3VyYXRpb24gdGhhdCAKICBoYXMgcmVjZWl2ZWQgbm8gdGVzdGluZywgYnV0IHdoaWNoIHNob3VsZCB3b3JrOyAmcXVvdDtBcy1pcyZxdW90OyBtZWFucyBhIGNvbmZpZ3VyYXRpb24gCiAgdGhhdCBoYXMgcmVjZWl2ZWQgbm8gdGVzdGluZywgYW5kIHdoaWNoIG1heSBvciBtYXkgbm90IHdvcmsuIFRoZSAmcXVvdDtBcy1pcyZxdW90OyAKICBkZXNpZ25hdGlvbiBpcyB1c2VkIGZvciBvcGVyYXRpbmcgZW52aXJvbm1lbnRzIG5lYXJpbmcgdGhlIGVuZCBvZiB0aGVpciBzdXBwb3J0ZWQgCiAgbGlmZTsgYnVncyB0aGF0IHNob3cgdXAgb25seSBpbiAmcXVvdDtBcy1pcyZxdW90OyBjb25maWd1cmF0aW9ucyBvZiBFY2xpcHNlIAogIGFyZSB1bmxpa2VseSB0byBnZXQgZml4ZWQuPC9wPgo8dGFibGUgaGVpZ2h0PSI0MTUiIHdpZHRoPSI5MSUiIGJvcmRlcj0iMSI+CiAgPHRib2R5PgogICAgPHRyPgogICAgICA8dGQgd2lkdGg9IjExJSIgaGVpZ2h0PSIzMiI+PGI+V2luZG93IHN5c3RlbTwvYj48L3RkPgogICAgICA8dGQgd2lkdGg9IjI4JSIgaGVpZ2h0PSIzMiI+PGI+SmF2YSAyIFBsYXRmb3JtPGJyPgogICAgICAgIChzZWUgYWJvdmUgdGFibGUpPC9iPjwvdGQ+CiAgICAgIDx0ZCB3aWR0aD0iNDIlIiBoZWlnaHQ9IjMyIj48Yj5PcGVyYXRpbmcgRW52aXJvbm1lbnQ8L2I+PC90ZD4KICAgICAgPHRkIHdpZHRoPSIxOSUiIGhlaWdodD0iMzIiPjxiPlRlc3RpbmcgU3RhdHVzPC9iPjwvdGQ+CiAgICA8L3RyPgogICAgPHRyPgogICAgICA8dGQgd2lkdGg9IjExJSIgaGVpZ2h0PSIxMDQiIHJvd1NwYW49IjUiPldpbjMyPC90ZD4KICAgICAgPHRkIHdpZHRoPSIyOCUiIGhlaWdodD0iMTA0IiByb3dTcGFuPSI1Ij5XaW5kb3dzIG9uIEludGVsIHg4NjwvdGQ+CiAgICAgIDx0ZCB3aWR0aD0iNDIlIiBoZWlnaHQ9IjE2Ij5XaW5kb3dzIFhQPC90ZD4KICAgICAgPHRkIHdpZHRoPSIxOSUiIGhlaWdodD0iMTYiPlByaW1hcnk8L3RkPgogICAgPC90cj4KICAgIDx0cj4KICAgICAgPHRkIHdpZHRoPSI0MiUiIGhlaWdodD0iMTYiPldpbmRvd3MgMjAwMDwvdGQ+CiAgICAgIDx0ZCB3aWR0aD0iMTklIiBoZWlnaHQ9IjE2Ij48aW1nIGJvcmRlcj0iMCIgc3JjPSJuZXcuZ2lmIiB3aWR0aD0iMTIiIGhlaWdodD0iMTIiPgogICAgICAgIFNlY29uZGFyeTwvdGQ+CiAgICA8L3RyPgogICAgPHRyPgogICAgICA8dGQgd2lkdGg9IjQyJSIgaGVpZ2h0PSIxNiI+V2luZG93cyBNRTwvdGQ+CiAgICAgIDx0ZCB3aWR0aD0iMTklIiBoZWlnaHQ9IjE2Ij48aW1nIGJvcmRlcj0iMCIgc3JjPSJuZXcuZ2lmIiB3aWR0aD0iMTIiIGhlaWdodD0iMTIiPgogICAgICAgIFVudGVzdGVkPC90ZD4KICAgIDwvdHI+CiAgICA8dHI+CiAgICAgIDx0ZCB3aWR0aD0iNDIlIiBoZWlnaHQ9IjE2Ij5XaW5kb3dzIDk4U0U8L3RkPgogICAgICA8dGQgd2lkdGg9IjE5JSIgaGVpZ2h0PSIxNiI+PGltZyBib3JkZXI9IjAiIHNyYz0ibmV3LmdpZiIgd2lkdGg9IjEyIiBoZWlnaHQ9IjEyIj4gCiAgICAgICAgQXMtaXM8L3RkPgogICAgPC90cj4KICAgIDx0cj4KICAgICAgPHRkIHdpZHRoPSI0MiUiIGhlaWdodD0iMTYiPldpbmRvd3MgTlQ8L3RkPgogICAgICA8dGQgd2lkdGg9IjE5JSIgaGVpZ2h0PSIxNiI+PGltZyBib3JkZXI9IjAiIHNyYz0ibmV3LmdpZiIgd2lkdGg9IjEyIiBoZWlnaHQ9IjEyIj4gCiAgICAgICAgQXMtaXM8L3RkPgogICAgPC90cj4KICAgIDx0cj4KICAgICAgPHRkIHdpZHRoPSIxMSUiIGhlaWdodD0iMTUyIiByb3dTcGFuPSI2Ij5Nb3RpZjwvdGQ+CiAgICAgIDx0ZCB3aWR0aD0iMjglIiBoZWlnaHQ9Ijg2IiByb3dTcGFuPSIzIj4mbmJzcDsKICAgICAgICA8cD5MaW51eCBvbiBJbnRlbCB4ODY8L3A+CiAgICAgICAgPHA+Jm5ic3A7PC9wPgogICAgICA8L3RkPgogICAgICA8dGQgd2lkdGg9IjQyJSIgaGVpZ2h0PSIyNSI+UmVkSGF0IExpbnV4IHg4NiA8aT5bdmVyc2lvbiBUQkRdPC9pPjwvdGQ+CiAgICAgIDx0ZCB3aWR0aD0iMTklIiBoZWlnaHQ9IjI1Ij5QcmltYXJ5PC90ZD4KICAgIDwvdHI+CiAgICA8dHI+CiAgICAgIDx0ZCB3aWR0aD0iNDIlIiBoZWlnaHQ9IjI1Ij5TdVNFIExpbnV4IHg4NiA8aT5bdmVyc2lvbiBUQkRdPC9pPjwvdGQ+CiAgICAgIDx0ZCB3aWR0aD0iMTklIiBoZWlnaHQ9IjI1Ij5QcmltYXJ5PC90ZD4KICAgIDwvdHI+CiAgICA8dHI+CiAgICAgIDx0ZCB3aWR0aD0iNDIlIiBoZWlnaHQ9IjI0Ij5PdGhlciBMaW51eCA8aT5bdmVyc2lvbiBUQkRdPC9pPjwvdGQ+CiAgICAgIDx0ZCB3aWR0aD0iMTklIiBoZWlnaHQ9IjI0Ij5VbnRlc3RlZDwvdGQ+CiAgICA8L3RyPgogICAgPHRyPgogICAgICA8dGQgd2lkdGg9IjI4JSIgaGVpZ2h0PSIxNiI+U29sYXJpcyBvbiBTUEFSQyZuYnNwOzwvdGQ+CiAgICAgIDx0ZCB3aWR0aD0iNDIlIiBoZWlnaHQ9IjE2Ij5TdW4gU29sYXJpcyBTUEFSQyA8aT5bdmVyc2lvbiBUQkRdPC9pPjwvdGQ+CiAgICAgIDx0ZCB3aWR0aD0iMTklIiBoZWlnaHQ9IjE2Ij5QcmltYXJ5PC90ZD4KICAgIDwvdHI+CiAgICA8dHI+CiAgICAgIDx0ZCB3aWR0aD0iMjglIiBoZWlnaHQ9IjE2Ij5IUC1VWCBvbiBocDkwMDAgUEEtUklTQzwvdGQ+CiAgICAgIDx0ZCB3aWR0aD0iNDIlIiBoZWlnaHQ9IjE2Ij5IUC1VWCBocDkwMDAgPGk+W3ZlcnNpb24gVEJEXTwvaT48L3RkPgogICAgICA8dGQgd2lkdGg9IjE5JSIgaGVpZ2h0PSIxNiI+UHJpbWFyeTwvdGQ+CiAgICA8L3RyPgogICAgPHRyPgogICAgICA8dGQgd2lkdGg9IjI4JSIgaGVpZ2h0PSIxNiI+QUlYIG9uIFBvd2VyUEM8L3RkPgogICAgICA8dGQgd2lkdGg9IjQyJSIgaGVpZ2h0PSIxNiI+SUJNIEFJWCBvbiBQb3dlclBDIDxpPlt2ZXJzaW9uIFRCRF08L2k+PC90ZD4KICAgICAgPHRkIHdpZHRoPSIxOSUiIGhlaWdodD0iMTYiPlByaW1hcnk8L3RkPgogICAgPC90cj4KICAgIDx0cj4KICAgICAgPHRkIHdpZHRoPSIxMSUiIGhlaWdodD0iODEiIHJvd1NwYW49IjQiPkdUSzwvdGQ+CiAgICAgIDx0ZCB3aWR0aD0iMjglIiBoZWlnaHQ9IjgxIiByb3dTcGFuPSI0Ij5MaW51eCBvbiBJbnRlbCB4ODY8L3RkPgogICAgPC90cj4KICAgIDx0cj4KICAgICAgPHRkIGhlaWdodD0iMTUiPlJlZEhhdCBMaW51eCB4ODYgPGk+W3ZlcnNpb24gVEJEXTwvaT48L3RkPgogICAgICA8dGQgaGVpZ2h0PSIxNSI+UHJpbWFyeTwvdGQ+CiAgICA8L3RyPgogICAgPHRyPgogICAgICA8dGQgd2lkdGg9IjQyJSIgaGVpZ2h0PSIxNiI+U3VTRSBMaW51eCB4ODYgPGk+W3ZlcnNpb24gVEJEXTwvaT48L3RkPgogICAgICA8dGQgd2lkdGg9IjE5JSIgaGVpZ2h0PSIxNiI+UHJpbWFyeTwvdGQ+CiAgICA8L3RyPgogICAgPHRyPgogICAgICA8dGQgd2lkdGg9IjQyJSIgaGVpZ2h0PSIxNiI+T3RoZXIgTGludXggPGk+W3ZlcnNpb24gVEJEXTwvaT48L3RkPgogICAgICA8dGQgd2lkdGg9IjE5JSIgaGVpZ2h0PSIxNiI+VW50ZXN0ZWQ8L3RkPgogICAgPC90cj4KICAgIDx0cj4KICAgICAgPHRkIHdpZHRoPSIxMSUiIGhlaWdodD0iMTYiPkNhcmJvbjwvdGQ+CiAgICAgIDx0ZCB3aWR0aD0iMjglIiBoZWlnaHQ9IjE2Ij5NYWMgT1MgWCBvbiBQb3dlclBDPC90ZD4KICAgICAgPHRkIHdpZHRoPSI0MiUiIGhlaWdodD0iMTYiPk1hYyBPUyBYIDxpPlt2ZXJzaW9uIFRCRF08L2k+PC90ZD4KICAgICAgPHRkIHdpZHRoPSIxOSUiIGhlaWdodD0iMTYiPjxpbWcgYm9yZGVyPSIwIiBzcmM9Im5ldy5naWYiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxMiI+CiAgICAgICAgUHJpbWFyeTwvdGQ+CiAgICA8L3RyPgogICAgPHRyPgogICAgICA8dGQgd2lkdGg9IjExJSIgaGVpZ2h0PSIxNiI+CiAgICAgICAgUGhvdG9urjwvdGQ+CiAgICAgIDx0ZCB3aWR0aD0iMjglIiBoZWlnaHQ9IjE2Ij5JQk0gSjkgVk0gZm9yIFFOWDwvdGQ+CiAgICAgIDx0ZCB3aWR0aD0iNDIlIiBoZWlnaHQ9IjE2Ij5RTlggTmV1dHJpbm8gUlRPUyA8aT5bdmVyc2lvbiBUQkRdPC9pPjwvdGQ+CiAgICAgIDx0ZCB3aWR0aD0iMTklIiBoZWlnaHQ9IjE2Ij5QcmltYXJ5PC90ZD4KICAgIDwvdHI+CiAgPC90Ym9keT4KPC90YWJsZT4KPGg0PkludGVybmF0aW9uYWxpemF0aW9uPC9oND4KPHA+VGhlIEVjbGlwc2UgUGxhdGZvcm0gaXMgZGVzaWduZWQgYXMgdGhlIGJhc2lzIGZvciBpbnRlcm5hdGlvbmFsaXplZCBwcm9kdWN0cy4KVGhlIHVzZXIgaW50ZXJmYWNlIGVsZW1lbnRzIHByb3ZpZGVkIGJ5IHRoZSBFY2xpcHNlIFNESyBjb21wb25lbnRzLCBpbmNsdWRpbmcKZGlhbG9ncyBhbmQgZXJyb3IgbWVzc2FnZXMsIGFyZSBleHRlcm5hbGl6ZWQuIFRoZSBFbmdsaXNoIHN0cmluZ3MgYXJlIHByb3ZpZGVkCmFzIHRoZSBkZWZhdWx0IHJlc291cmNlIGJ1bmRsZXMuPC9wPgo8cD5MYXRpbi0xIGxvY2FsZXMgYXJlIHN1cHBvcnRlZCBieSB0aGUgRWNsaXBzZSBTREsgb24gYWxsIG9mIHRoZSBhYm92ZQpvcGVyYXRpbmcgZW52aXJvbm1lbnRzOyBEQkNTIGxvY2FsZXMgYXJlIHN1cHBvcnRlZCBieSB0aGUgRWNsaXBzZSBTREsgb24gdGhlCldpbmRvd3MsIEdUSywgYW5kIE1vdGlmIHdpbmRvdyBzeXN0ZW1zOyBCSURJIGxvY2FsZXMgYXJlIHN1cHBvcnRlZCBieSB0aGUKRWNsaXBzZSBTREsgb25seSBvbiBXaW5kb3dzIG9wZXJhdGluZyBlbnZpcm9ubWVudHMuCjxwPlRoZSBFY2xpcHNlIFNESyBzdXBwb3J0cyBHQiAxODAzMCwgdGhlIG5ldyBDaGluZXNlIGNvZGUgcGFnZSBzdGFuZGFyZCwgb24KV2luZG93cyAyMDAwIGFuZCBYUCBvbmx5LiBOb3RlIHRoYXQgR0IgMTgwMzAgYWxzbyByZXF1aXJlcyBsb2NhbGUgYW5kIGNoYXJhY3RlcgplbmNvZGluZyBzdXBwb3J0IGZyb20gdGhlIEphdmEgMiBSdW50aW1lIEVudmlyb25tZW50IHZlcnNpb24gMS40Lgo8cD5HZXJtYW4gYW5kIEphcGFuZXNlIGxvY2FsZXMgaGF2ZSBiZWVuIHRlc3RlZC48L3A+CjxoND5CSURJIHN1cHBvcnQ8L2g0Pgo8cD5UaGUgRWNsaXBzZSBTREsgaXMgYSBkZXZlbG9wbWVudCBlbnZpcm9ubWVudCB0YXJnZXRlZCBhdCB0ZWNobmljYWwKcHJvZmVzc2lvbmFscyAtIG5vdCBhbiBlbmQgdXNlciBhcHBsaWNhdGlvbi4gSG93ZXZlciwgdGhlIEVjbGlwc2UgU0RLIHRvb2xzIHdpbGwKcGVybWl0IHRlY2huaWNhbCBwcm9mZXNzaW9uYWxzIHdobyBhcmUgd29ya2luZyBpbiBFbmdsaXNoIHRvIGJ1aWxkIEhlYnJldy9BcmFiaWMKZW5kIHVzZXIgSmF2YSBwcm9ncmFtcyB3aGljaCBhcmUgdGhlbXNlbHZlcyBub3QgYmFzZWQgb24gdGhlIEVjbGlwc2UgU0RLLiBUaGUKQklESSBzdXBwb3J0IGluIHRoZSBFY2xpcHNlIFNESyBhbGxvd3MgYSBKYXZhIHByb2dyYW1tZXIgdG8gd29yayB3aXRoIEJJREkKc3RyaW5ncywgY29kZSBjb21tZW50cywgZXRjLiBidXQgdGhlIEVjbGlwc2UgU0RLIGl0c2VsZiBpcyBub3QgZGVzaWduZWQgdG8gYmUKbG9jYWxpemVkIGZvciBCSURJIGxvY2FsZXMgYW5kIGl0cyB3aWRnZXQgb3JpZW50YXRpb24gY2FuIG5vdCBiZSBjaGFuZ2VkLjwvcD4KPHA+PGk+SU1QT1JUQU5UOiBUaGUgYWJvdmUgQklESSBzdXBwb3J0IGlzIGF2YWlsYWJsZSBvbmx5IG9uIFdpbmRvd3MgcGxhdGZvcm1zLjwvaT48L3A+Cgo8aDI+PGEgbmFtZT0iQ29tcGF0aWJpbGl0eSI+PC9hPkNvbXBhdGliaWxpdHkgd2l0aCBQcmV2aW91cyBSZWxlYXNlczwvaDI+Cgo8cD4KCiBFY2xpcHNlIDIuMiB3aWxsIGJlIHVwd2FyZHMgY29tcGF0aWJsZSB3aXRoIEVjbGlwc2UgMi4wIGFuZCAyLjEuPC9wPgoKPGgzPgoKQ29tcGF0aWJpbGl0eSBvZiBSZWxlYXNlIDIuMiB3aXRoIDIuMCBhbmQgMi4xPC9oMz4KCiBFY2xpcHNlIFNESyAyLjIgd2lsbCBiZSB1cHdhcmRzIGNvbXBhdGlibGUgd2l0aCBFY2xpcHNlIFNESyAyLjAgYW5kIDIuMSB0byB0aGUgCmdyZWF0ZXN0IGV4dGVudCBwb3NzaWJsZS4gV2UgYW50aWNpcGF0ZSBhIHNtYWxsIG51bWJlciBvZiBhcmVhcyB3aGVyZSBzbGF2aXNobHkgCm1haW50YWluaW5nIGNvbXBhdGliaWxpdHkgd291bGQgbm90IGJlIGluIHRoZSBiZXN0IGludGVyZXN0cyBvZiB0aGUgUGxhdGZvcm0gb3IgCml0cyBjbGllbnRzLiBBbGwgc3VjaCBleGNlcHRpb25zIHdpbGwgYmUgbm90ZWQgaW4gdGhlIDIuMiByZWxlYXNlIG5vdGVzIHNvIHRoYXQgCmNsaWVudHMgY2FuIGFzc2VzcyB0aGUgaW1wYWN0IG9mIHRoZXNlIGNoYW5nZXMgb24gdGhlaXIgcGx1Zy1pbnMgYW5kIHByb2R1Y3RzLjxwPjxiPkFQSSBDb250cmFjdCBDb21wYXRpYmlsaXR5OjwvYj4gRWNsaXBzZSBTREsgMi4yIHdpbGwgYmUgdXB3YXJkcyBjb250cmFjdC1jb21wYXRpYmxlIAogIHdpdGggRWNsaXBzZSBTREsgMi4wIGFuZCAyLjEgdW5sZXNzIG5vdGVkLiBUaGlzIG1lYW5zIHRoYXQgcHJvZ3JhbXMgaW4gZnVsbCBjb21wbGlhbmNlIAogIHdpdGggY29udHJhY3RzIHNwZWNpZmllZCBpbiBFY2xpcHNlIFNESyAyLjAgb3IgMi4xIEFQSXMgd2lsbCBhdXRvbWF0aWNhbGx5IGJlIGluIAogIGZ1bGwgY29tcGxpYW5jZSB3aXRoIEVjbGlwc2UgU0RLIDIuMiBBUElzLiAoQVBJIGlzIGNvbnN0cnVlZCBicm9hZGx5IHRvIAogIGluY2x1ZGUgc3VjaCB0aGluZ3MgYXMgcGx1Zy1pbiBleHRlbnNpb24gcG9pbnRzLikgRG93bndhcmQgY29udHJhY3QgY29tcGF0aWJpbGl0eSAKICBpcyBub3Qgc3VwcG9ydGVkLiBUaGVyZSBpcyBubyBndWFyYW50ZWUgdGhhdCBjb21wbGlhbmNlIHdpdGggRWNsaXBzZSBTREsgMi4yIEFQSXMgd291bGQgZW5zdXJlIGNvbXBsaWFuY2Ugd2l0aCBFY2xpcHNlIFNESyAyLjAKb3IgMi4xIEFQSXMuIFJlZmVyIHRvIDxpPjxhIGhyZWY9Imh0dHA6Ly9lY2xpcHNlLm9yZy9lY2xpcHNlL2RldmVsb3BtZW50L2phdmEtYXBpLWV2b2x1dGlvbi5odG1sIj5Fdm9sdmluZwpKYXZhLWJhc2VkIEFQSXM8L2E+PC9pPiBmb3IgYSBkaXNjdXNzaW9uIG9mIHRoZSBraW5kcyBvZiBBUEkgY2hhbmdlcyB0aGF0Cm1haW50YWluIGNvbnRyYWN0IGNvbXBhdGliaWxpdHkuIAo8cD48Yj5CaW5hcnkgKHBsdWctaW4pIENvbXBhdGliaWxpdHk6PC9iPiBFY2xpcHNlIFNESyAyLjIgd2lsbCBiZSB1cHdhcmRzIAogIGJpbmFyeS1jb21wYXRpYmxlIHdpdGggRWNsaXBzZSBTREsgMi4wIGFuZCAyLjEgdW5sZXNzIG5vdGVkLiBUaGlzIG1lYW5zIHRoYXQgcGx1Zy1pbnMgCiAgYnVpbHQgZm9yIEVjbGlwc2UgU0RLIDIuMCBvciAyLjEgd2lsbCBjb250aW51ZSB0byB3b3JrIGNvcnJlY3RseSBpbiBFY2xpcHNlIAogIFNESyAyLjIgd2l0aG91dCBjaGFuZ2UuIERvd253YXJkIHBsdWctaW4gY29tcGF0aWJpbGl0eSBpcyBub3Qgc3VwcG9ydGVkLiBQbHVnLWlucyAKICBmb3IgRWNsaXBzZSBTREsgMi4yIGFyZSB1bmxpa2VseSB0byBiZSB1c2FibGUgaW4gRWNsaXBzZSBTREsgMi4wIG9yIDIuMS4gUGx1Zy1pbnMgCiAgd2l0aCBoYXJkLWNvZGVkIHJlZmVyZW5jZXMgaW4gdGhlaXIgcGx1Zy1pbiBtYW5pZmVzdCBmaWxlIHRvIDIuMCBvciAyLjEgdmVyc2lvbnMgb2YgCiAgcHJlcmVxdWlzaXRlIEVjbGlwc2UgUHJvamVjdCBwbHVnLWlucyB3aWxsIHdvcmsgaW4gMi4yIHByb3ZpZGVkIHRoZSB2ZXJzaW9uIG1hdGNoCnJ1bGUgaXMgJnF1b3Q7Z3JlYXRlck9yRXF1YWwmcXVvdDsKb3IgJnF1b3Q7Y29tcGF0aWJsZSZxdW90OyAodGhlIGRlZmF1bHQpOyByZWZlcmVuY2VzCnVzaW5nICZxdW90O3BlcmZlY3QmcXVvdDsgb3IgJnF1b3Q7ZXF1aXZhbGVudCZxdW90OyBtYXRjaCBydWxlcyB3aWxsIGJlIGJyb2tlbi4gUmVmZXIgdG8gPGk+PGEgaHJlZj0iaHR0cDovL2VjbGlwc2Uub3JnL2VjbGlwc2UvZGV2ZWxvcG1lbnQvamF2YS1hcGktZXZvbHV0aW9uLmh0bWwiPkV2b2x2aW5nCkphdmEtYmFzZWQgQVBJczwvYT48L2k+IGZvciBhIGRpc2N1c3Npb24gb2YgdGhlIGtpbmRzIG9mIEFQSSBjaGFuZ2VzIHRoYXQKbWFpbnRhaW4gYmluYXJ5IGNvbXBhdGliaWxpdHkuIAo8cD48Yj5Tb3VyY2UgQ29tcGF0aWJpbGl0eTo8L2I+IEVjbGlwc2UgU0RLIDIuMiB3aWxsIGJlIHVwd2FyZHMgc291cmNlLWNvbXBhdGlibGUgCiAgd2l0aCBFY2xpcHNlIFNESyAyLjAgb3IgMi4xIHVubGVzcyBub3RlZC4gVGhpcyBtZWFucyB0aGF0IHNvdXJjZSBmaWxlcyB3cml0dGVuIAogIHRvIHVzZSBFY2xpcHNlIFNESyAyLjAgb3IgMi4xIEFQSXMgY2FuIGJlIHN1Y2Nlc3NmdWxseSBjb21waWxlZCBhbmQgcnVuIGFnYWluc3QgRWNsaXBzZSBTREsKMi4yIEFQSXMuIFNpbmNlIHNvdXJjZSBpbmNvbXBhdGliaWxpdGllcyBhcmUgZWFzeSB0byBkZWFsIHdpdGgsIAogIG1haW50YWluaW5nIHNvdXJjZSBjb21wYXRpYmlsaXR5IGlzIGNvbnNpZGVyZWQgbXVjaCBsZXNzIGltcG9ydGFudCB0aGFuIG1haW50YWluaW5nIAogIGNvbnRyYWN0IGFuZCBiaW5hcnkgY29tcGF0aWJpbGl0eS4gRG93bndhcmQgc291cmNlIGNvbXBhdGliaWxpdHkgaXMgbm90IHN1cHBvcnRlZC4gCiAgSWYgc291cmNlIGZpbGVzIHVzZSBuZXcgRWNsaXBzZSBTREsgQVBJcywgdGhleSB3aWxsIG5vdCBiZSB1c2FibGUgd2l0aCBhbiBlYXJsaWVyIAogIHZlcnNpb24gb2YgdGhlIEVjbGlwc2UgU0RLLiAKPHA+PGI+V29ya3NwYWNlIENvbXBhdGliaWxpdHk6PC9iPiBFY2xpcHNlIFNESyAyLjIgd2lsbCBiZSB1cHdhcmRzIHdvcmtzcGFjZS1jb21wYXRpYmxlIAogIHdpdGggRWNsaXBzZSBTREsgMi4wIG9yIDIuMSB1bmxlc3Mgbm90ZWQuIFRoaXMgbWVhbnMgdGhhdCB3b3Jrc3BhY2VzIGFuZCBwcm9qZWN0cyAKICBjcmVhdGVkIHdpdGggRWNsaXBzZSBTREsgMi4wIG9yIDIuMSBjYW4gYmUgc3VjY2Vzc2Z1bGx5IG9wZW5lZCBieSBFY2xpcHNlIFNESyAKICAyLjIgYW5kIHVwZ3JhZGVkIHRvIGEgMi4yIHdvcmtzcGFjZS4gVGhpcyBpbmNsdWRlcyBib3RoIGhpZGRlbiBtZXRhZGF0YSwgd2hpY2ggCiAgaXMgbG9jYWxpemVkIHRvIGEgcGFydGljdWxhciB3b3Jrc3BhY2UsIGFzIHdlbGwgYXMgbWV0YWRhdGEgZmlsZXMgZm91bmQgd2l0aGluIAogIGEgd29ya3NwYWNlIHByb2plY3QgKGUuZy4sIHRoZSAucHJvamVjdCBmaWxlKSwgd2hpY2ggbWF5IHByb3BhZ2F0ZSBiZXR3ZWVuIHdvcmtzcGFjZXMgCiAgdmlhIGZpbGUgY29weWluZyBvciB0ZWFtIHJlcG9zaXRvcmllcy4gSW5kaXZpZHVhbCBwbHVnLWlucyBkZXZlbG9wZWQgZm9yIEVjbGlwc2UgCiAgU0RLIDIuMiBzaG91bGQgcHJvdmlkZSBzaW1pbGFyIHVwd2FyZHMgY29tcGF0aWJpbGl0eSBmb3IgdGhlaXIgaGlkZGVuIGFuZCB2aXNpYmxlIAogIHdvcmtzcGFjZSBtZXRhZGF0YSBjcmVhdGVkIGJ5IGVhcmxpZXIgdmVyc2lvbnM7IDIuMiBwbHVnLWluIGRldmVsb3BlcnMgYXJlIHJlc3BvbnNpYmxlIAogIGZvciBlbnN1cmluZyB0aGF0IHRoZWlyIHBsdWctaW5zIHJlY29nbml6ZSAyLjIsIDIuMSwgYW5kIDIuMCBtZXRhZGF0YSBhbmQgcHJvY2VzcyAKICBpdCBhcHByb3ByaWF0ZWx5LiBVc2VyIGludGVyZmFjZSBzZXNzaW9uIHN0YXRlIG1heSBiZSBkaXNjYXJkZWQgd2hlbiBhIHdvcmtzcGFjZSAKICBpcyB1cGdyYWRlZC4gRG93bndhcmQgd29ya3NwYWNlIGNvbXBhdGliaWxpdHkgaXMgbm90IHN1cHBvcnRlZC4gQSB3b3Jrc3BhY2UgCiAgY3JlYXRlZCAob3Igb3BlbmVkKSBieSBFY2xpcHNlIFNESyAyLjIgd2lsbCBiZSB1bnVzYWJsZSB3aXRoIGFuIGVhcmxpZXIgdmVyc2lvbiAKICBvZiBFY2xpcHNlIFNESy4mbmJzcDtWaXNpYmxlIG1ldGFkYXRhIGZpbGVzIGNyZWF0ZWQgKG9yIG92ZXJ3cml0dGVuKSBieSBFY2xpcHNlIAogIFNESyAyLjIgd2lsbCBnZW5lcmFsbHkgYmUgdW51c2FibGUgd2l0aCBlYXJsaWVyIHZlcnNpb25zIG9mIEVjbGlwc2UgU0RLLiZuYnNwOyZuYnNwOyAKPHA+PGI+Tm9uLWNvbXBsaWFudCB1c2FnZSBvZiBBUEknczwvYj46IEFsbCBub24tQVBJIG1ldGhvZHMgYW5kIGNsYXNzZXMsIGFuZCBjZXJ0YWlubHkgCiAgZXZlcnl0aGluZyBpbiBhIHBhY2thZ2Ugd2l0aCAmcXVvdDtpbnRlcm5hbCZxdW90OyBpbiBpdHMgbmFtZSwgYXJlIGNvbnNpZGVyZWQgCiAgaW1wbGVtZW50YXRpb24gZGV0YWlscyB3aGljaCBtYXkgdmFyeSBiZXR3ZWVuIG9wZXJhdGluZyBlbnZpcm9ubWVudCBhbmQgYXJlIAogIHN1YmplY3QgdG8gY2hhbmdlIHdpdGhvdXQgbm90aWNlLiBDbGllbnQgcGx1Zy1pbnMgdGhhdCBkaXJlY3RseSBkZXBlbmQgb24gYW55dGhpbmcgCiAgb3RoZXIgdGhhbiB3aGF0IGlzIHNwZWNpZmllZCBpbiB0aGUgRWNsaXBzZSBTREsgQVBJIGFyZSBpbmhlcmVudGx5IHVuc3VwcG9ydGFibGUgCiAgYW5kIHJlY2VpdmUgbm8gZ3VhcmFudGVlcyBhYm91dCBjb21wYXRpYmlsaXR5IHdpdGhpbiBhIHNpbmdsZSByZWxlYXNlIG11Y2ggbGVzcyAKICB3aXRoIGFuIGVhcmxpZXIgcmVsZWFzZXMuIFJlZmVyIHRvIDxpPjxhIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvYXJ0aWNsZXMvQXJ0aWNsZS1BUEklMjB1c2UvZWNsaXBzZS1hcGktdXNhZ2UtcnVsZXMuaHRtbCI+SG93IAogIHRvIFVzZSB0aGUgRWNsaXBzZSBBUEk8L2E+PC9pPiBmb3IgaW5mb3JtYXRpb24gYWJvdXQgaG93IHRvIHdyaXRlIGNvbXBsaWFudCAKICBwbHVnLWlucy4gCjxoMj4gRWNsaXBzZSBQcm9qZWN0IFN1YnByb2plY3RzPC9oMj4KClRoZSA8YSBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2VjbGlwc2UvIj5FY2xpcHNlIFByb2plY3Q8L2E+IGNvbnNpc3RzIG9mIAozIHN1YnByb2plY3RzLiBFYWNoIHN1YnByb2plY3QgaXMgY292ZXJlZCBpbiBpdHMgb3duIHNlY3Rpb246IAo8YmxvY2txdW90ZT48YSBocmVmPSIjUGxhdGZvcm0iPkVjbGlwc2UgUGxhdGZvcm08L2E+PGJyPgogIDxhIGhyZWY9IiNKRFQiPkpEVCAtIEphdmEgZGV2ZWxvcG1lbnQgdG9vbHM8L2E+PGJyPgogIDxhIGhyZWY9IiNQREUiPlBERSAtIFBsdWctaW4gZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQ8L2E+PC9ibG9ja3F1b3RlPgoKPHA+Rm9yIGVhY2ggc3VicHJvamVjdCwgdGhlIGl0ZW1zIGxpc3RlZCByZWZsZWN0IG5ldyBmZWF0dXJlcyBvZiB0aGUgRWNsaXBzZSBQbGF0Zm9ybSwgCiAgb3IgYXJlYXMgd2hlcmUgZXhpc3RpbmcgZmVhdHVyZXMgd2lsbCBiZSBzaWduaWZpY2FudGx5IHJld29ya2VkLiBFYWNoIGl0ZW0gaW5kaWNhdGVzIAogIHRoZSBjb21wb25lbnRzIGFmZmVjdGVkIGJ5IHRoYXQgd29yayBpdGVtIChtYW55IGl0ZW1zIGludm9sdmUgY29vcmRpbmF0ZWQgY2hhbmdlcyAKICB0byBzZXZlcmFsIGNvbXBvbmVudHMpLgoKPGgzPgoKPGEgbmFtZT0iUGxhdGZvcm0iPkVjbGlwc2UgUGxhdGZvcm0gc3VicHJvamVjdDwvYT48L2gzPgoKVGhlIDxhIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvcGxhdGZvcm0vaW5kZXguaHRtbCI+RWNsaXBzZSAKUGxhdGZvcm08L2E+IHByb3ZpZGVzIHRoZSBtb3N0IGZ1bmRhbWVudGFsIGJ1aWxkaW5nIGJsb2Nrcy4gVGhlIGZvbGxvd2luZyBpdGVtcyAKcmVmbGVjdCBuZXcgZmVhdHVyZXMgb2YgdGhlIEVjbGlwc2UgUGxhdGZvcm0sIG9yIGFyZWFzIHdoZXJlIGV4aXN0aW5nIGZlYXR1cmVzIAp3aWxsIGJlIHNpZ25pZmljYW50bHkgcmV3b3JrZWQuIAo8aDQ+Q29tbWl0dGVkIEl0ZW1zIChFY2xpcHNlIFBsYXRmb3JtIHN1YnByb2plY3QpPC9oND4KPGJsb2NrcXVvdGU+CiAgPHA+PGk+Tm9uZSBhdCB0aGlzIHRpbWUuPC9pPjwvcD4KPC9ibG9ja3F1b3RlPgo8aDQ+UHJvcG9zZWQgSXRlbXMgKEVjbGlwc2UgUGxhdGZvcm0gc3VicHJvamVjdCk8L2g0Pgo8YmxvY2txdW90ZT4KICA8cD4gKDIuMSBkZWZlcnJlZCBpdGVtKSA8Yj5BZGQgY2hlYXQgc2hlZXRzPC9iPi4mbmJzcDsgQSBjaGVhdCBzaGVldCBpcyBhbiBpbnN0YW5jZSAKICAgIG9mIGEgc2ltcGxlIGtpbmQgb2Ygd29ya2Zsb3cgc3VwcG9ydCB1c2VkIHRvIGhlbHAgdGhlIHVzZXIgY2Fycnkgb3V0IGEgc2VxdWVuY2UgCiAgICBvZiBzdGVwcy4gRm9yIGV4YW1wbGUsICZxdW90O2NyZWF0ZSBhbmQgZGVwbG95IGEgcGx1Zy1pbiZxdW90OyBpcyBhIG11bHRpLXN0ZXAgCiAgICBwcm9jZXNzIHRoYXQgY291bGQgYmUgbWFkZSBlYXNpZXIgdG8gZm9sbG93IGlmIHRoZXJlIHdhcyBhIGd1aWRlLCBzaW1pbGFyIAogICAgdG8gYSByZWNpcGUgdGhhdCB3b3VsZCB0cmFjayB0aGUgdXNlcidzIHByb2dyZXNzIGFuZCBwcm92aWRlIGJvdGggZGVzY3JpcHRpdmUgCiAgICB0ZXh0IHRoYXQgZXhwbGFpbnMgdGhlIHN0ZXBzIGludm9sdmVkIGFuZCBpbnRlZ3JhdGlvbiB3aXRoIEVjbGlwc2UgdG8gYXV0b21hdGUgCiAgICB0aGUgcHJvY2Vzcy4gVGhlIFdlbGNvbWUgUGFnZSBlZGl0b3IgaXMgYSBzaW1wbGUgZXhhbXBsZSBvZiBhIGNoZWF0IHNoZWV0LiAKICAgIFByb3ZpZGUgYSBzdGFuZGFyZCBBUEkgZm9yIGNyZWF0aW5nIGNoZWF0IHNoZWV0cy4gW1BsYXRmb3JtIFVJXTwvcD4KICA8cD4gKDIuMSBkZWZlcnJlZCBpdGVtKSA8Yj5BZGQgPC9iPjxiPnRhYmxlIG9mIGNvbnRlbnRzIHN1cHBvcnQgdG8gPC9iPjxiPndpPC9iPjxiPnphcmRzLjwvYj4gCiAgICBFeHRlbmQgdGhlIHdvcmtiZW5jaCB3aXphcmQgZnJhbWV3b3JrIHRvIGFsbG93IEVjbGlwc2Ugd2l6YXJkIGRldmVsb3BlcnMgdG8gCiAgICBwcm92aWRlIG11Y2ggbW9yZSBzdWJzdGFudGlhbCBhbmQgc2lnbmlmaWNhbnQgdXNlciBmZWVkYmFjay4gW1BsYXRmb3JtIFVJXTwvcD4KICA8cD4gKDIuMSBkZWZlcnJlZCBpdGVtKSA8Yj5TdXBwb3J0IGZsb2F0aW5nIHRvb2xiYXJzIGFuZCB2aWV3cy48L2I+IEFsbG93IHRoZSAKICAgIHVzZXIgdG8gY3VzdG9taXplIHRoZSB3b3JrYmVuY2ggYnkgY3JlYXRpbmcgZmxvYXRpbmcgdG9vbGJhcnMgYW5kIHZpZXdzLiBbUGxhdGZvcm0gCiAgICBVSV08L3A+CiAgPHA+ICgyLjEgZGVmZXJyZWQgaXRlbSkgPGI+QWxsb3cgZWRpdG9ycyB0byBvcGVuIGZpbGVzIG91dHNpZGUgd29ya3NwYWNlLjwvYj4gCiAgICBBIGNvbW1vbiByZXF1ZXN0IGlzIHRvIGJlIGFibGUgdG8gb3BlbiBhIGZpbGUgdGhhdCBpcyBub3QgcGFydCBvZiB0aGUgd29ya3NwYWNlIAogICAgdXNpbmcgRWNsaXBzZS4gSW4gYWRkaXRpb24sIGFwcGxpY2F0aW9ucyB3b3VsZCBsaWtlIHRvIHByb3ZpZGUgZmlsZSBleHRlbnNpb24gCiAgICBhc3NvY2lhdGlvbnMgc28gdGhhdCBkb3VibGUtY2xpY2tpbmcgb24gYSBmaWxlIGluIHRoZSBPUyBkZXNrdG9wIHdvdWxkIG9wZW4gCiAgICB0aGUgYXNzb2NpYXRlZCBFY2xpcHNlIGVkaXRvci4gVGhlIG9wZXJhdGlvbnMgYW5kIGNhcGFiaWxpdGllcyBhdmFpbGFibGUgb24gCiAgICB0aGVzZSAmcXVvdDtvdXRzaWRlIG9mIHRoZSB3b3Jrc3BhY2UmcXVvdDsgZmlsZXMgd291bGQgbmVlZCB0byBiZSBkZWZpbmVkLiAKICAgIFtQbGF0Zm9ybSBVSV08L3A+CiAgPHA+ICgyLjEgZGVmZXJyZWQgaXRlbSkgPGI+SW1wcm92ZSBzZXJ2aWNlYWJpbGl0eS4gPC9iPlByb2dyZXNzIHdhcyBtYWRlIGF0IAogICAgaW1wcm92aW5nIHNlcnZpY2VhYmlsaXR5IGluIDIuMDsgaG93ZXZlciwgYWRkaXRpb25hbCBpbXByb3ZlbWVudHMgYXJlIG5lZWRlZCwgCiAgICBwYXJ0aWN1bGFybHkgaW4gZGVhbGluZyB3aXRoIGVycm9yIGNvbmRpdGlvbnMgYW5kIHJlcG9ydGluZyB0aGVtIGluIGFuIGFwcHJvcHJpYXRlIAogICAgbWFubmVyLiBbUGxhdGZvcm0gQ29yZSwgU1dULCBQbGF0Zm9ybSBVSV08YnI+CiAgICA8YnI+CiAgICAoMi4xIGRlZmVycmVkIGl0ZW0pIDxiPkltcHJvdmUgZmlsZSBlbmNvZGluZyBzdXBwb3J0LjwvYj4gRWNsaXBzZSAyLjAgYW5kIAogICAgMi4xIHVzZXMgYSBzaW5nbGUgZ2xvYmFsIGZpbGUgZW5jb2Rpbmcgc2V0dGluZyBmb3IgcmVhZGluZyBhbmQgd3JpdGluZyBmaWxlcyAKICAgIGluIHRoZSB3b3Jrc3BhY2UuIFRoaXMgaXMgcHJvYmxlbWF0aWM7IGZvciBleGFtcGxlLCB3aGVuIEphdmEgc291cmNlIGZpbGVzIAogICAgaW4gdGhlIHdvcmtzcGFjZSB1c2UgT1MgZGVmYXVsdCBmaWxlIGVuY29kaW5nIHdoaWxlIFhNTCBmaWxlcyBpbiB0aGUgd29ya3NwYWNlIAogICAgdXNlIFVURi04IGZpbGUgZW5jb2RpbmcuIFRoZSBQbGF0Zm9ybSBzaG91bGQgc3VwcG9ydCBub24tdW5pZm9ybSBmaWxlIGVuY29kaW5ncy4gCiAgICAoUmVmOiA8YSBocmVmPSJodHRwOi8vZGV2LmVjbGlwc2Uub3JnL2J1Z3Mvc2hvd19idWcuY2dpP2lkPTUzOTkiPmJ1ZyA1Mzk5PC9hPikgCiAgICBbUGxhdGZvcm0gQ29yZSwgUGxhdGZvcm0gVUksIFRleHQsIFNlYXJjaCwgQ29tcGFyZSwgSkRUIFVJLCBKRFQgQ29yZV08L3A+CiAgPHA+KDIuMSBkZWZlcnJlZCBpdGVtKSA8Yj5JbXByb3ZlIFNXVCBzdXBwb3J0IGZvciByaWdodC10by1sZWZ0IGxhbmd1YWdlczwvYj4uJm5ic3A7QWxsb3cgCiAgICB0aGUgYXBwcm9wcmlhdGUgd2lkZ2V0IG9yaWVudGF0aW9uIGZvciByaWdodC10by1sZWZ0IGxhbmd1YWdlcy4gW1NXVF08L3A+CjxwPiAoPGltZyBib3JkZXI9IjAiIHNyYz0ibmV3LmdpZiIgd2lkdGg9IjEyIiBoZWlnaHQ9IjEyIj4KIG5ldykgPGI+RGlzcGxheSBIVE1MIGluIGEgd2lkZ2V0LjwvYj4gSW4gRWNsaXBzZSAyLjAgYW5kIDIuMSwgdGhlIG9ubHkgc3VwcG9ydGVkIG9wdGlvbiBmb3IKcmVuZGVyaW5nIEhUTUwgaW4gdGhlIHdvcmtiZW5jaCBpcyB0byB1c2UgT0xFIHRvIGxpbmsgdG8gSUUuIFRoaXMgc3VwcG9ydCBpcwpXaW5kb3dzIG9ubHk7IHRoZXJlIGlzIG5vIHN1Y2ggb3B0aW9uIGluIG90aGVyIG9wZXJhdGluZyBlbnZpcm9ubWVudHMuIEV2ZW4gb24KV2luZG93cywgdGhpcyBvbmx5IHdvcmtzIGZvciBJRSBhbmQgbm90IG90aGVyIGJyb3dzZXJzLiBUaGVyZSBhcmUgYWxyZWFkeQpzZXZlcmFsIEVjbGlwc2UgY29tcG9uZW50cyB0aGF0IGNvdWxkIGJlbmVmaXQgZnJvbSBIVE1MIGRpc3BsYXkgZnVuY3Rpb25hbGl0eSBpbgphIHdpZGdldDogd2VsY29tZSBwYWdlczsgdXBkYXRlIG1hbmFnZXIgdXBkYXRlIHNpdGUgb3ZlcnZpZXc7IGhvdmVycyB0aGF0IHNob3cKSmF2YWRvYy4gVGhlIFBsYXRmb3JtIHNob3VsZCBwcm92aWRlIGEgcG9ydGFibGUgd2F5IHRvIGRpc3BsYXkgSFRNTCBpbiBhIHdpZGdldCBhbmQKc3VwcG9ydCBpdCBpbiBhbGwgb3BlcmF0aW5nIGVudmlyb25tZW50cy4gW1BsYXRmb3JtIFVJXTwvcD4KPHA+ICg8aW1nIGJvcmRlcj0iMCIgc3JjPSJuZXcuZ2lmIiB3aWR0aD0iMTIiIGhlaWdodD0iMTIiPgogbmV3KSA8Yj5TdXBwb3J0IGF1dG9tYXRpb24gb2YgY29tbW9uIHRhc2tzLjwvYj4gVG8gbWFrZSBpdCBlYXNpZXIgZm9yIHVzZXJzIHRvIGF1dG9tYXRlCmNvbW1vbiBhbmQgcmVwZXRpdGl2ZSB0YXNrcywgdGhlIHVzZXIgc2hvdWxkIGhhdmUgYSBzaW1wbGUgd2F5IG9mIHJlY29yZGluZyB0aGUgc2VxdWVuY2Ugb2YKYWN0aW9ucyBhcyB0aGV5IHBlcmZvcm0gdGhlbS4gVGhlIHJlY29yZGluZyBjYW4gYmUgZWRpdGVkLCBzYXZlZCBwZXJzaXN0ZW50bHksIGFuZApwbGF5ZWQgYmFjayB1bmRlciBzaW1pbGFyIGNpcmN1bXN0YW5jZXMgaW4gdGhlIHNhbWUgb3IgbGF0ZXIgc2Vzc2lvbiwgb3IKcG9zc2libHkgYW5vdGhlciB3b3Jrc3BhY2UuIFtQbGF0Zm9ybSBVSSwgUGxhdGZvcm0gQ29yZSwgUGxhdGZvcm0gVGV4dCwgSkRUCkNvcmUsIEpEVCBVSSwgUERFXTwvcD4KPHA+ICg8aW1nIGJvcmRlcj0iMCIgc3JjPSJuZXcuZ2lmIiB3aWR0aD0iMTIiIGhlaWdodD0iMTIiPgogbmV3KSA8Yj5SZWR1Y2Ugd29ya2JlbmNoIGNsdXR0ZXIuPC9iPiBEZXNwaXRlIGVmZm9ydHMgdG8gZW5zdXJlIFVJIHNjYWxhYmlsaXR5CndpdGggYSBsYXJnZSBiYXNlcyBvZiBhdmFpbGFibGUgdG9vbHMsIHRoZSBFY2xpcHNlIHdvcmtiZW5jaCBzdGlsbCBpbnRpbWlkYXRlcwptYW55IHVzZXJzIHdpdGggb3Zlcmx5IGxvbmcgbWVudXMgYW5kIHdpZGUgdG9vbGJhcnMuIFRoaXMgcHJvYmxlbSBpcyBhY3V0ZSBpbgpsYXJnZSBFY2xpcHNlLWJhc2VkIHByb2R1Y3RzIChlLmcuLCBJQk0gV2ViU3BoZXJlIEFwcGxpY2F0aW9uIERldmVsb3BlcikuIFRoZQpQbGF0Zm9ybSBzaG91bGQgcHJvdmlkZSBhZGRpdGlvbmFsIHdheXMgZm9yIGNvbnRyb2xsaW5nIHdvcmtiZW5jaCBjbHV0dGVyLCBzdWNoCmFzIGZ1cnRoZXIgbWVudSBhbmQgdG9vbGJhciBjdXN0b21pemFiaWxpdHksIGRpc3Rpbmd1aXNoaW5nIGJldHdlZW4gbm92aWNlCmFuZCBhZHZhbmNlZCBmdW5jdGlvbnMsIHN1cHBvcnRpbmcgZGlmZmVyZW50IGRldmVsb3BlciByb2xlcywgYW5kIG1vcmUgc3BlY2lmaWMKb2JqZWN0IGNvbnRyaWJ1dGlvbnMgZm9yIHBhcnRpY3VsYXIgZmlsZSB0eXBlcy4gW1BsYXRmb3JtIFVJLApQbGF0Zm9ybSBEZWJ1ZywgSkRUIFVJXTwvcD4KPHA+ICg8aW1nIGJvcmRlcj0iMCIgc3JjPSJuZXcuZ2lmIiB3aWR0aD0iMTIiIGhlaWdodD0iMTIiPgogbmV3KSA8Yj5BbGxvdyBwbHVnLWluIGRlYWN0aXZhdGlvbi48L2I+IEluIG9yZGVyIHRvIHNjYWxlIHRvIGEgbGFyZ2UgbnVtYmVyIG9mCnBsdWctaW5zLCBFY2xpcHNlIGRvZXMgbm90IGFjdGl2YXRlIGEgcGx1Zy1pbiB1bnRpbCBpdHMgY29kZSBpcyBhY3R1YWxseSBuZWVkZWQuCkhvd2V2ZXIsIG9uY2UgYWN0aXZhdGVkIGEgcGx1Zy1pbiByZW1haW5zIGFjdGl2ZSBmb3IgdGhlIHJlbWFpbmRlciBvZiB0aGUKc2Vzc2lvbi4gVW5mb3J0dW5hdGVseSwgdGhpcyBtZWFucyB0aGF0IGFuIGFjdGl2ZSBwbHVnLWluIHdpbGwgb2NjdXB5IG1lbW9yeQpzcGFjZSBmb3IgaXRzIGNvZGUgYW5kIG9iamVjdHMgZXZlbiBpZiBpdCBpcyBvbmx5IHVzZWQgb2NjYXNpb25hbGx5LiBNYW55IHVzZXJzCmhhdmUgc2Vzc2lvbnMgbGFzdGluZyBkYXlzIG9yIHdlZWtzLCBhbmQgdGhpcyBibG9hdCB0YXhlcyBwcm9jZXNzb3IgbWVtb3J5IGFuZApKVk0gcGVyZm9ybWFuY2UuIFRoZSBhbmFsb2d5IGlzIGEgbG9uZyBwbGF5IHdoZXJlIHRoZSBhY3RvcnMgZW50ZXIgdGhlIHN0YWdlIG9uCmN1ZSwgYnV0IGNhbm5vdCBsZWF2ZSBpdCB1bnRpbCB0aGUgcGxheSBpcyBvdmVyLiBUaGUgRWNsaXBzZSBQbGF0Zm9ybSBzaG91bGQKc3VwcG9ydCBwbHVnLWlucyB0aGF0IGNhbiBiZSBzYWZlbHkgZGVhY3RpdmF0ZWQgd2hlbiB0aGUgdXNlciBuZWVkcyB0byByZWNvdmVyIHZhbHVhYmxlCm1lbW9yeSBzcGFjZS4gQW5vdGhlciBhbHRlcm5hdGl2ZSBpcyB0byBwcm92aWRlIGEgd2F5IHRvIHF1aWV0bHkgc2h1dGRvd24gYW5kIHJlc3RhcnQKdGhlIFBsYXRmb3JtLiBbUGxhdGZvcm0gQ29yZSwgUGxhdGZvcm0gVUldPC9wPgo8cD4gKDxpbWcgYm9yZGVyPSIwIiBzcmM9Im5ldy5naWYiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxMiI+CiBuZXcpIDxiPlN1cHBvcnQgYmFja2dyb3VuZCBhY3Rpdml0aWVzLjwvYj4gSW4gRWNsaXBzZSAyLjAgYW5kIDIuMSwgY2VydGFpbgpvcGVyYXRpb25zIGxpa2UgYnVpbGRzIGFuZCBzZWFyY2hlcyBhbHdheXMgcnVuCnN5bmNocm9ub3VzbHkgYW5kIGJsb2NrIHRoZSB1c2VyIGF0IHRoZSBVSSBmcm9tIGRvaW5nIHdvcmsgdW50aWwgdGhlIGJ1aWxkIGhhcwpjb21wbGV0ZWQuIFRoZSBFY2xpcHNlIFBsYXRmb3JtIHNob3VsZCBzdXBwb3J0IG9wZXJhdGlvbnMgcnVubmluZyBhc3luY2hyb25vdXNseSBpbiB0aGUKYmFja2dyb3VuZCwgc28gdGhhdCB0aGUgdXNlciBpcyBub3QgZm9yY2VkIHRvIGJlIGVudGlyZWx5IGlkbGUgd2hpbGUKbG9uZy1ydW5uaW5nIG9wZXJhdGlvbnMgYXJlIGluIHByb2dyZXNzLgpbUGxhdGZvcm0gVUksIFBsYXRmb3JtIENvcmUsIFBsYXRmb3JtIFRleHQsIEpEVCBDb3JlLCBKRFQgVUksIFBERV08L3A+CjxwPiAoPGltZyBib3JkZXI9IjAiIHNyYz0ibmV3LmdpZiIgd2lkdGg9IjEyIiBoZWlnaHQ9IjEyIj4KIG5ldykgPGI+U3VwcG9ydCB3b3Jrc3BhY2UgY2hlY2twb2ludCBhbmQgcm9sbGJhY2suPC9iPiBTb21ldGltZXMgYSBzZXQgb2YKcmVzb3VyY2UgY2hhbmdlcyBtdXN0IGJlIGV4cGxvcmVkIHRvIHNlZSBpZiB0aGV5IGFyZSBwb3NzaWJsZSBvciB3b3J0aHdoaWxlLgpXaGVuIHRoZSBjaGFuZ2VzIGRvIG5vdCBwYW4gb3V0LCB0aGVyZSBuZWVkcyB0byBiZSBhIHdheSB0byByb2xsIGJhY2sgdGhlCndvcmtzcGFjZSB0byB0aGUgcHJpb3Igc3RhdGUuIEVjbGlwc2Ugc2hvdWxkIHN1cHBvcnQgbG9uZyB3b3Jrc3BhY2UgdHJhbnNhY3Rpb25zCndpdGggdGhlIGFiaWxpdHkgdG8gY2hlY2twb2ludCBhbmQgcm9sbGJhY2suIFRoZSBmYWNpbGl0eSBzaG91bGQgYmUgYXZhaWxhYmxlIHRvCnVzZXJzIGFuZCBwcm9ncmFtbWF0aWNhbGx5IChlLmcuLCBKRFQgcmVmYWN0b3JpbmcpLiBbUGxhdGZvcm0gVUksIFBsYXRmb3JtIENvcmUsCkpEVCBDb3JlLCBKRFQgVUldPC9wPgo8cD4gKDxpbWcgYm9yZGVyPSIwIiBzcmM9Im5ldy5naWYiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxMiI+CiBuZXcpIDxiPkFkZCBjYXBhYmlsaXRpZXMuPC9iPiBJbiBFY2xpcHNlIDIuMCB3ZSBkaWQgc29tZSBlYXJseSB3b3JrIG9uIGEKbWVjaGFuaXNtIGNhbGxlZCAmcXVvdDtjYXBhYmlsaXRpZXMmcXVvdDsgdG8gYWxsb3cgdXNlcnMgdG8gZHluYW1pY2FsbHkKY29uZmlndXJlIHByb2plY3QgbmF0dXJlcy4gVGhlIEVjbGlwc2UgUGxhdGZvcm0gc2hvdWxkIGV4cG9zZSB0aGlzIG1lY2hhbmlzbSB0bwp1c2Vycy4gW1BsYXRmb3JtIFVJLCBKRFQgVUksIFBERV08L3A+CiAgPHA+ICg8aW1nIGJvcmRlcj0iMCIgc3JjPSJuZXcuZ2lmIiB3aWR0aD0iMTIiIGhlaWdodD0iMTIiPiBleHBhbmRlZCAyLjEgUERFIAogICAgZGVmZXJyZWQgaXRlbSkgPGI+QWRkIHByb2plY3QgdGVtcGxhdGVzLjwvYj4gRWNsaXBzZSBzaG91bGQgcHJvdmlkZSBhIHN0cmVhbWxpbmVkIAogICAgd2F5IHRvIGNyZWF0ZSBwcm9qZWN0cyB1c2luZyB0ZW1wbGF0ZXMgY29udHJpYnV0ZWQgYnkgcGx1Zy1pbnMuIFRoZXNlIHByb2plY3QgCiAgICB0ZW1wbGF0ZXMgd291bGQgYmUgYWJsZSB0byBwb3B1bGF0ZSB0aGUgcHJvamVjdHMgd2l0aCBzdG9jayBjb250ZW50IHNvIHRoYXQgCiAgICBwcm9qZWN0cyBkb24ndCBzdGFydCBvZmYgY29tcGxldGVseSBlbXB0eS4gUERFJ3MgY3VycmVudCBtZWNoYW5pc20gc2hvdWxkIAogICAgYmUgZ2VuZXJhbGl6ZWQsIHB1c2hlZCBkb3duIGludG8gdGhlIFBsYXRmb3JtLCBhbmQgcHV0IHRvIGdvb2QgdXNlIGJ5IEpEVC4gCiAgICBbUGxhdGZvcm0gVUksIEpEVCBVSSwgUERFIFVJXTwvcD4KPHA+ICg8aW1nIGJvcmRlcj0iMCIgc3JjPSJuZXcuZ2lmIiB3aWR0aD0iMTIiIGhlaWdodD0iMTIiPgogbmV3KSA8Yj5Qcm92aWRlIGEgZ2VuZXJhbCBwdXJwb3NlIG5hdmlnYXRvci48L2I+IFRoZSBFY2xpcHNlIE5hdmlnYXRvciZuYnNwO3ZpZXcKcHJlc2VudHMgYSB2aWV3IG9mIHJlc291cmNlcyBpbiB0aGUgd29ya3NwYWNlLiBUaGUgRWNsaXBzZSBQbGF0Zm9ybSBzaG91bGQKcHJvdmlkZSBhIG1vcmUgZmxleGlibGUsIGdlbmVyYWwgcHVycG9zZSwgZXh0ZW5zaWJsZSBuYXZpZ2F0b3IgaW5mcmFzdHJ1Y3R1cmUgdGhhdAp3b3VsZCBtYWtlIGl0IHBvc3NpYmxlIHRvIHNob3cgb3RoZXIgb2JqZWN0cyBhcyB3ZWxsIChsaWtlIGFuIHRoZSBleHRlbmRlZApwaHlzaWNhbCB2aWV3IHByb3ZpZGVkIGJ5IFdpbmRvd3MgRXhwbG9yZXIpLiBbUGxhdGZvcm0KVUksIEpEVCBVSV08L3A+CjxwPiAoPGltZyBib3JkZXI9IjAiIHNyYz0ibmV3LmdpZiIgd2lkdGg9IjEyIiBoZWlnaHQ9IjEyIj4KIG5ldykgPGI+SW1wcm92ZSB3b3Jrc3BhY2Ugc3luY2hyb25pemF0aW9uIHdpdGggZmlsZSBzeXN0ZW0uPC9iPiBBIGZpbGUgcmVzb3VyY2UKaW4gdGhlIHdvcmtzcGFjZSBnZXRzIG91dCBvZiBzeW5jIHdoZW4gdGhlIHVuZGVybHlpbmcgZmlsZSBpbiB0aGUgZmlsZSBzeXN0ZW0gaXMKY3JlYXRlZCwgZGVsZXRlZCwgb3IgcmV3cml0dGVuIG91dHNpZGUgb2YgRWNsaXBzZS4gRmlsZSByZXNvdXJjZXMgdXN1YWxseQpyZW1haW5zIG91dCBvZiBzeW5jIHVudGlsIHRoZSB1c2VyIGV4cGxpY2l0bHkgaGl0cyBSZWZyZXNoLiBUaGUgRWNsaXBzZSBQbGF0Zm9ybQpzaG91bGQgcHJvdmlkZSB3YXlzIHRvIGtlZXAgdGhlIGluLW1lbW9yeSByZXByZXNlbnRhdGlvbiBpbiBzeW5jIHdpdGggdGhlIGZpbGUKc3lzdGVtOyBmb3IgZXhhbXBsZSwgYnkgaG9va2luZyBPUyBmaWxlIHN5c3RlbSBjYWxsYmFja3Mgd2hlcmUgYXZhaWxhYmxlLCBhbmQgYnkKcG9sbGluZyBmb3IgZmlsZSBzeXN0ZW0gY2hhbmdlcyBpbiBhIGJhY2tncm91bmQgdGhyZWFkLiBbUGxhdGZvcm0gQ29yZSwgUGxhdGZvcm0KVUldPC9wPgo8cD4gKDxpbWcgYm9yZGVyPSIwIiBzcmM9Im5ldy5naWYiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxMiI+CiBuZXcpIDxiPlByb3ZpZGUgaW1wcm92ZWQgdGFibGUgYW5kIHRhYmxlIHRyZWUgd2lkZ2V0cy4gPC9iPiBFY2xpcHNlIGN1c3RvbWVycyBhcmUgZmluZGluZwp0aGF0IHRoZSBleGlzdGluZyB0YWJsZSBhbmQgdGFibGUgdHJlZSBjdXN0b20gU1dUIHdpZGdldHMgbGFja3MgcmVxdWlyZWQgZnVuY3Rpb25hbGl0eSwKZXhoaWJpdCB1bmRlc2lyYWJsZSBsYXlvdXQgYW5kIHJlc2l6aW5nIGJlaGF2aW9yLCBhbmQgYXJlIGdlbmVyYWxseSBpbGwtc3VpdGVkIGZvciBwcmVzZW50aW5nIGxhcmdlIGRhdGEgbW9kZWxzLiBUaGVpciBsYXJnZWx5IHVuc3VjY2Vzc2Z1bCBhdHRlbXB0cwp0byBkZWZpbmUgdGhlaXIgb3duIGN1c3RvbSB0YWJsZSB0cmVlIHdpZGdldCBoYXZlIHNob3duIGl0IHRvIGJlIGEgdmVyeSBjaGFsbGVuZ2luZwp0YXNrIHJlcXVpcmluZyBleHBlcnQtbGV2ZWwga25vd2xlZGdlIG9mIFNXVC4gVGhlIEVjbGlwc2UgUGxhdGZvcm0gdGVhbSB3aWxsCndvcmsgd2l0aCB0aGUgY29tbXVuaXR5IHRvIGRlZmluZSBhIG5ldyBjdXN0b20gdGFibGUgYW5kIHRhYmxlIHRyZWUgd2lkZ2V0cyB0aGF0IHdpbGwgbWVldAp0aGVpciBuZWVkcy4gW1NXVCwgUGxhdGZvcm0gVUldPC9wPgo8cD4gKDxpbWcgYm9yZGVyPSIwIiBzcmM9Im5ldy5naWYiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxMiI+CiBuZXcpIDxiPkltcHJvdmUgc3RydWN0dXJlIG9mIGV4aXN0aW5nIGRvY3VtZW50YXRpb24uPC9iPiAgVGhlIEVjbGlwc2UgaGVscApib29rcyBhcmUgY3VycmVudGx5IGJsYWNrIGJveGVzLiBUaGVyZSBpcyBubyBlYXN5IHdheSB0byBpbnNlcnQgYWRkaXRpb25hbAptYXRlcmlhbCBpbnRvIGFuIGV4aXN0aW5nIEVjbGlwc2UgYm9vaywgc3VjaCBhcyBhZGRpbmcgYSBzZWN0aW9uIGRlc2NyaWJpbmcgYQpuZXcgdG9vbC4gQW5kIHRoZXJlIGlzIG5vIHdheSB0byBpbmNvcnBvcmF0ZSBwb3J0aW9ucyBvZiB0aGUgRWNsaXBzZSBib29rcyBpbnRvCnNvbWUgb3RoZXIgYm9vay4gVGhlIEVjbGlwc2UgUGxhdGZvcm0gaGVscCBib29rcyBzaG91bGQgYmUgcmVzdHJ1Y3R1cmVkIGluIGEKbW9yZSBtb2R1bGFyIG1hbm5lciBieSBtYWtpbmcgYmV0dGVyIHVzZSBvZiBleGlzdGluZyBoZWxwIHN5c3RlbSBjYXBhYmlsaXRpZXMuCltQbGF0Zm9ybSwgSkRULCBQREUsIFBsYXRmb3JtIEhlbHBdPC9wPgo8cD4gKDxpbWcgYm9yZGVyPSIwIiBzcmM9Im5ldy5naWYiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxMiI+CiBuZXcpIDxiPlByb3ZpZGUgdXNlciBwcmVmZXJlbmNlcy48L2I+IEl0IHNob3VsZCBiZSBwb3NzaWJsZSB0byBzdG9yZSB1c2VyCnByZWZlcmVuY2VzIHRoYXQgYXJlIG5vdCBzcGVjaWZpYyB0byBhIHdvcmtzcGFjZSBzZXBhcmF0ZSBmcm9tIHRoZSB3b3Jrc3BhY2UsIHNvCnRoYXQgdGhleSBjYW4gYmUgdXNlZCBpbiBhbnkgd29ya3NwYWNlLiBbUGxhdGZvcm0gQ29yZSwgUGxhdGZvcm0gVUldPC9wPgo8cD4gKDxpbWcgYm9yZGVyPSIwIiBzcmM9Im5ldy5naWYiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxMiI+CiBuZXcpIDxiPkV2b2x2ZSB0aGUgRWNsaXBzZSB1c2VyIGV4cGVyaWVuY2UuPC9iPiBUaGUgY3VycmVudCBFY2xpcHNlIEdVSSBpcwpzb2xpZGx5IGdyb3VuZGVkIGluIHRyYWRpdGlvbmFsIG9wYXF1ZSwgcmVjdGFuZ3VsYXIgd2luZG93cy4gUmVjZW50IGFkdmFuY2VzIGluClVJIGRlc2lnbiBpbXByb3ZlIHRoZSB1c2VyIGV4cGVyaWVuY2Ugd2l0aCBzdWNoIHRoaW5ncyBhcyB0cmFuc3BhcmVudCBvdmVybGF5cwphbmQgYXNzb2NpYXRpbmcgc291bmRzIHdpdGggc2lnbmlmaWNhbnQgZXZlbnRzLiBFY2xpcHNlIDIuMiBzaG91bGQgaGF2ZSBhIG5ldwpsb29rIHRoYXQgbWFrZXMgbW9yZSBlZmZlY3RpdmUgdXNlIG9mIHRoZSBjYXBhYmlsaXRpZXMgb2YgY3VycmVudCBkZXNrdG9wCmNvbXB1dGVycy4gW1BsYXRmb3JtIFVJLCBKRFQgVUksIERlYnVnIFVJXTwvcD4KPHA+KDxpbWcgYm9yZGVyPSIwIiBzcmM9Im5ldy5naWYiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxMiI+CiBuZXcpIDxiPjwvYj4gPGI+RW5hYmxlIEVjbGlwc2UgdG8gYmUgdXNlZCBhcyBhIGdlbmVyYWwgcHVycG9zZSBhcHBsaWNhdGlvbgpmcmFtZXdvcmsuPC9iPiBFY2xpcHNlIHdhcyBkZXNpZ25lZCBhcyBhIHVuaXZlcnNhbCB0b29sIGludGVncmF0aW9uIHBsYXRmb3JtLgpIb3dldmVyLCBtYW55IGZhY2V0cyBhbmQgY29tcG9uZW50cyBvZiBFY2xpcHNlIGFyZSBub3QgcGFydGljdWxhcmx5IHNwZWNpZmljIHRvCklERXMgYW5kIHdvdWxkIG1ha2UgZXF1YWwgc2Vuc2UgaW4gbm9uLUlERSBhcHBsaWNhdGlvbnMgKGUuZy4sIHdpbmRvdy1iYXNlZCBHVUksCnBsdWctaW5zLCBoZWxwIHN5c3RlbSwgdXBkYXRlIG1hbmFnZXIpLiBUaGUgRWNsaXBzZSBQbGF0Zm9ybSBzaG91bGQgZmFjdG9yIG91dAphbmQgc2VncmVnYXRlIElERS1zcGVjaWZpYyBmYWNpbGl0aWVzIChlLmcuLCBldmVyeXRoaW5nIGhhdmluZyB0byBkbyB3aXRoCndvcmtzcGFjZSByZXNvdXJjZXMpIHNvIHRoYXQgYSBzdWJzZXQgb2YgaXQgY2FuIGJlIHVzZWQgYXMgYSBnZW5lcmFsIHB1cnBvc2UKYXBwbGljYXRpb24gZnJhbWV3b3JrLiBbUGxhdGZvcm0gQ29yZSwgUGxhdGZvcm0gVUldPC9wPgo8cD4gKDxpbWcgYm9yZGVyPSIwIiBzcmM9Im5ldy5naWYiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxMiI+CiBuZXcpIDxiPkltcHJvdmUgYWN0aW9uIGNvbnRyaWJ1dGlvbnMuPC9iPiBUaGUgY3VycmVudCBhY3Rpb24gY29udHJpYnV0aW9uIHN0b3J5CmlzIGRpdmVyc2UgYW5kIGNvbXBsZXgsIGFuZCB0aGUgaW50ZXJhY3Rpb25zIGJldHdlZW4ga2V5IGJpbmRpbmdzIGFuZCByZXRhcmdldGFibGUgYWN0aW9ucywKdW5jbGVhci4gRWNsaXBzZSBzaG91bGQgdW5pZnkgdGhlIGFjdGlvbiBjb250cmlidXRpb24gc3VwcG9ydCwgcHJvdmlkZQpzaW1wbGlmaWVkIHN1cHBvcnQgZm9yIGtleSBiaW5kaW5ncywgYW5kIGNsYXJpZnkgdGhlIGludGVyYWN0aW9ucyBiZXR3ZWVuIGtleQpiaW5kaW5ncyBhbmQgcmV0YXJnZXRhYmxlIGFjdGlvbnMuIEVjbGlwc2Ugc2hvdWxkIGFsc28gc3VwcG9ydCBuZXcgdHlwZXMgb2YKYWN0aW9ucyBjb250cmlidXRpb25zLCBzdWNoIGFzIGNvbWJvIGJveGVzIGluIHRvb2xiYXJzLCBhbmQgZW5hYmxlIGFkZGl0aW9uYWwgVUkgY3VzdG9taXphdGlvbi4KW1BsYXRmb3JtIFVJXTwvcD4KPHA+ICg8aW1nIGJvcmRlcj0iMCIgc3JjPSJuZXcuZ2lmIiB3aWR0aD0iMTIiIGhlaWdodD0iMTIiPgogbmV3KSA8Yj5BZGQgYSAmcXVvdDt0aXBzICZhbXA7IHRyaWNrcyZxdW90OyBmYWNpbGl0eS48L2I+IEVjbGlwc2Ugc2hvdWxkCnByb3ZpZGUgYW4gb3BlbiwgZmxleGlibGUgbWVjaGFuaXNtIGZvciBvZmZlcmluZyBzdWdnZXN0aW9ucyBhbmQgdGlwcyB0byB0aGUKdXNlciBmb3IgdGhlIHZhcmlvdXMgdG9vbHMgYXZhaWxhYmxlIGFuZCBhY3RpdmUgaW4gdGhlIElERS4gW1BsYXRmb3JtIFVJXTwvcD4KPC9ibG9ja3F1b3RlPgo8aDQ+RGVmZXJyZWQgSXRlbXMgKEVjbGlwc2UgUGxhdGZvcm0gc3VicHJvamVjdCk8L2g0Pgo8YmxvY2txdW90ZT4KICA8cD48aT5Ob25lIGF0IHRoaXMgdGltZS48L2k+PC9wPgo8L2Jsb2NrcXVvdGU+CjxoND5SZWplY3RlZCBJdGVtcyAoRWNsaXBzZSBQbGF0Zm9ybSBzdWJwcm9qZWN0KTwvaDQ+CjxibG9ja3F1b3RlPgogIDxwPjxpPk5vbmUgYXQgdGhpcyB0aW1lLjwvaT48L3A+CjwvYmxvY2txdW90ZT4KCgoKPHA+KEVuZCBvZiBpdGVtcyBmb3IgRWNsaXBzZSBQbGF0Zm9ybSBzdWJwcm9qZWN0LikKCgoKPGgzPiA8YSBuYW1lPSJKRFQiPkphdmEgZGV2ZWxvcG1lbnQgdG9vbHMgCiAgKEpEVCkgc3VicHJvamVjdDwvYT48L2gzPgoKPGEgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9qZHQvaW5kZXguaHRtbCI+IEphdmEgZGV2ZWxvcG1lbnQgdG9vbHM8L2E+IChKRFQpIAppbXBsZW1lbnRzIGEgSmF2YSBJREUgYmFzZWQgb24gdGhlIEVjbGlwc2UgUGxhdGZvcm0uIFRoZSBmb2xsb3dpbmcgd29yayBpdGVtcyAKcmVmbGVjdCBuZXcgZmVhdHVyZXMgb2YgSkRULCBvciBhcmVhcyB3aGVyZSBleGlzdGluZyBmZWF0dXJlcyB3aWxsIGJlIHNpZ25pZmljYW50bHkgCnJld29ya2VkLiAKPGg0PkNvbW1pdHRlZCBJdGVtcyAoRWNsaXBzZSBKRFQgc3VicHJvamVjdCk8L2g0Pgo8YmxvY2txdW90ZT4KPHA+PGk+Tm9uZSBhdCB0aGlzIHRpbWUuPC9pPjwvcD4KPC9ibG9ja3F1b3RlPgo8aDQ+UHJvcG9zZWQgSXRlbXMgKEVjbGlwc2UgSkRUIHN1YnByb2plY3QpPC9oND4KPGJsb2NrcXVvdGU+CiAgPHA+ICg8aW1nIGJvcmRlcj0iMCIgc3JjPSJuZXcuZ2lmIiB3aWR0aD0iMTIiIGhlaWdodD0iMTIiPgogbmV3KSA8Yj5BZGQgZWFybHkgc3VwcG9ydCBmb3IgSjJTRSAxLjUgZmVhdHVyZXMuPC9iPiBUaGUgbmV4dCBmZWF0dXJlIHJlbGVhc2UKICBvZiBKMlNFIGlzIHZlcnNpb24gMS41ICgmcXVvdDtUaWdlciZxdW90OyksIHRhcmdldGVkIHRvIHNoaXAgaW4gdGhlIGZpcnN0IGhhbGYKICBvZiAyMDA0LiBXaGlsZSB0aGUgY29udGVudHMgb2YgdGhpcyByZWxlYXNlIGFyZSBzdGlsbCB1bmRlciBkaXNjdXNzaW9uICg8YSBocmVmPSJodHRwOi8vamNwLm9yZy9lbi9qc3IvZGV0YWlsP2lkPTE3NiIgdGFyZ2V0PSJfYmxhbmsiPkpTUi0xNzY8L2E+KSwKICB0aGlzIHJlbGVhc2UgaXMgZXhwZWN0ZWQgdG8gY29udGFpbiBleHRlbnNpb25zIHRvIHRoZSBKYXZhIGxhbmd1YWdlLCBpbmNsdWRpbmcKICBnZW5lcmljIHR5cGVzICg8YSBocmVmPSJodHRwOi8vamNwLm9yZy9lbi9qc3IvZGV0YWlsP2lkPTAxNCIgdGFyZ2V0PSJfYmxhbmsiPkpTUi0wMTQ8L2E+KSwKICBlbnVtZXJhdGlvbnMsIGF1dG9ib3hpbmcsIGVuaGFuY2VkIGZvciBsb29wcywgc3RhdGljIGltcG9ydHMgKGFsbCA8YSBocmVmPSJodHRwOi8vamNwLm9yZy9lbi9qc3IvZGV0YWlsP2lkPTIwMSIgdGFyZ2V0PSJfYmxhbmsiPkpTUi0yMDE8L2E+KSwKICBtZXRhZGF0YSBmYWNpbGl0eSAoPGEgaHJlZj0iaHR0cDovL2pjcC5vcmcvZW4vanNyL2RldGFpbD9pZD0xNzUiPkpTUi0xNzU8L2E+KSwKICBhbmQgY29tcGlsZXIgQVBJcyAoPGEgaHJlZj0iaHR0cDovL2pjcC5vcmcvZW4vanNyL2RldGFpbD9pZD0xOTkiIHRhcmdldD0iX2JsYW5rIj5KU1ItMTk5PC9hPikuCiAgU3VwcG9ydGluZyB0aGVzZSBuZXcgbGFuZ3VhZ2UgYW5kIGNvbXBpbGVyIGZlYXR1cmVzIHdpbGwgcmVxdWlyZSBtYWpvciBjaGFuZ2VzIHRvIHRoZQogIEVjbGlwc2UgSmF2YSBjb21waWxlciwgSkRUIENvcmUgQVBJcywgYW5kIEpEVCBVSS4gQWx0aG91Z2ggRWNsaXBzZSAyLjIgd2lsbAogIGxpa2VseSBzaGlwIGJlZm9yZSBKMlNFIDEuNSBkb2VzLCBFY2xpcHNlIHNob3VsZCBjb250YWluIGVhcmx5IHN1cHBvcnQgZm9yCiAgSjJTRSAxLjUgZmVhdHVyZXMgd2hlcmV2ZXIgcG9zc2libGUgW0pEVCBDb3JlLCBKRFQgVUksIEpEVCBEZWJ1Z108L3A+CiAgPHA+ICg8aW1nIGJvcmRlcj0iMCIgc3JjPSJuZXcuZ2lmIiB3aWR0aD0iMTIiIGhlaWdodD0iMTIiPgogbmV3KSA8Yj5JbXByb3ZlIHN1cHBvcnQgZm9yIEphdmEtbGlrZSBzb3VyY2UgZmlsZXMuPC9iPiAgSlNQIGFuZCBKU1FMIGFyZSB0d28KICBpbnN0YW5jZXMgb2YgbGFuZ3VhZ2VzIHRoYXQgZW1iZWQgcGFzc2FnZXMgb2YgSmF2YSBsYW5ndWFnZSBjb2RlLiBFY2xpcHNlCiAgc2hvdWxkIHByb3ZpZGUgYmV0dGVyIHN1cHBvcnQgZm9yIEphdmEtbGlrZSBzb3VyY2UgZmlsZXMuIEZvciBpbnN0YW5jZSwKICBvdXRsaW5lIHZpZXdzIHNob3VsZCBiZSBhYmxlIHRvIHNob3cgdGhlIGhpZXJhcmNoeSBvZiBKYXZhIGVsZW1lbnRzOyBpdCBzaG91bGQKICBiZSBwb3NzaWJsZSB0byBpbmRleCB0aGVzZSBmaWxlcyBzbyB0aGF0IEphdmEgc2VhcmNoIGNhbiBmaW5kIHRoZSBKYXZhCiAgZGVjbGFyYXRpb25zIGFuZCByZWZlcmVuY2VzIHdpdGhpbjsgaXQgc2hvdWxkIGJlIHBvc3NpYmxlIHRvIHVzZSBKYXZhIGNvZGUKICBhc3Npc3Qgb24gdGhlIEphdmEgcGFzc2FnZXM7IHJlZmFjdG9yaW5nIHNob3VsZCBiZSBhYmxlIHRvIHRha2UgdGhlc2UgZmlsZXMKICBpbnRvIGFjY291bnQ7IHRoZSBkZWJ1Z2dlciBzaG91bGQgYmUgYWJsZSB0byBzdGVwIHRocm91Z2ggdGhlIEphdmEgcGFzc2FnZXMgKDxhIGhyZWY9Imh0dHA6Ly9qY3Aub3JnL2VuL2pzci9kZXRhaWw/aWQ9MDQ1IiB0YXJnZXQ9Il9ibGFuayI+SlNSLTA0NTwvYT4pOyBlcnJvciBoaWdobGlnaHRpbmcgc2hvdWxkIGJlIHN1cHBvcnRlZCBhY3Jvc3Mgc2VjdGlvbnM7CiAgZXRjLiBbSkRUIENvcmUsIEpEVCBVSSwgSkRUIERlYnVnXTwvcD4KICA8cD4gKDxpbWcgYm9yZGVyPSIwIiBzcmM9Im5ldy5naWYiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxMiI+CiBuZXcpIDxiPlN1cHBvcnQgSmF2YSByZWZlcmVuY2VzIGZyb20gbm9uLUphdmEgZmlsZXMuPC9iPiBSZWZlcmVuY2VzIHRvIEphdmEgZWxlbWVudHMgaW4gcGFydGljdWxhciBjbGFzc2VzCiAgY2FuIHNob3cgdXAgaW4gc3BlY2lmaWMga2luZHMgb2Ygbm9uLUphdmEgZmlsZXMsIHN1Y2ggYXMgcGx1Zy1pbiBtYW5pZmVzdAogIGZpbGVzIChwbHVnaW4ueG1sKS4gVGhlc2UgcmVmZXJlbmNlcyBzaG91bGQgYWxzbyBwYXJ0aWNpcGF0ZSBpbiBKYXZhCiAgb3BlcmF0aW9ucyBsaWtlIHNlYXJjaCwgbW92ZSwgcmVuYW1lLCBhbmQgb3RoZXIgcmVmYWN0b3Jpbmcgb3BlcmF0aW9ucy4gSkRUIHdpbGwgc3VyZmFjZSBBUElzIHRoYXQgZW5hYmxlCiAgb3RoZXIgcGx1Zy1pbnMgdG8gY29udHJpYnV0ZSB0byBhbmQgcGFydGljaXBhdGUgaW4gdGhlc2Ugb3BlcmF0aW9ucy4gW0pEVCBDb3JlLCBKRFQgVUksIEpEVCBEZWJ1Z108YnI+CiAgPGJyPgogKDxpbWcgYm9yZGVyPSIwIiBzcmM9Im5ldy5naWYiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxMiI+CiBuZXcpIDxiPkhhcm1vbml6ZSBKYXZhIHNvdXJjZSBtYW5pcHVsYXRpb24uPC9iPiBUaGUgSmF2YSBtb2RlbCBpcyBjdXJyZW50bHkKICBpbXBsZW1lbnRlZCBpbiB0ZXJtcyBvZiBKRE9NLCBhbiBlYXJseSBwcmVjdXJzb3Igb2YgdGhlIEFTVCBmYWNpbGl0eSBhZGRlZCBpbgogIDIuMC4gSkRUIHdpbGwgbW92ZSB0byBhbiBBU1QtIGJhc2VkIGltcGxlbWVudGF0aW9uIG9mIHRoZSBKYXZhIG1vZGVsLCBhbmQKICBkZXByZWNhdGUgSkRPTS4gW0pEVCBDb3JlXTwvcD4KICA8cD4gCiAoPGltZyBib3JkZXI9IjAiIHNyYz0ibmV3LmdpZiIgd2lkdGg9IjEyIiBoZWlnaHQ9IjEyIj4KIG5ldykgPGI+UHJlc2VudCA8L2I+PGI+bG9naWNhbCB2aWV3IG9mIEphdmEgb2JqZWN0cyBpbiBkZWJ1Z2dlci48L2I+IFRoZQogIGN1cnJlbnQgZGVidWdnZXIgYWx3YXlzIHByZXNlbnRzIHRoZSBpbnRlcm5hbCBzdHJ1Y3R1cmUgb2YgSmF2YSBvYmplY3RzLiBGb3IKICBpbnN0YW5jZXMgb2Ygc3RhbmRhcmQgZGF0YSBzdHJ1Y3R1cmVzIGxpa2UgamF2YS51dGlsLkhhc2hNYXAsIHRoZSBKYXZhCiAgZGVidWdnZXIgc2hvdWxkIGJlIGFibGUgdG8gcHJlc2VudCBhIGhpZ2hlciBsZXZlbCBsb2dpY2FsIHZpZXcgb2YgdGhlIG9iamVjdAogIChpLmUuLCB0byBzaG93IGl0IGFzIGEgdGFibGUgb2Yga2V5LXRvIHZhbHVlIG1hcHBpbmdzKS4gW0pEVCBEZWJ1Z108L3A+CiAgPHA+ICg8aW1nIGJvcmRlcj0iMCIgc3JjPSJuZXcuZ2lmIiB3aWR0aD0iMTIiIGhlaWdodD0iMTIiPgogbmV3KSA8Yj5Qcm92aWRlIEFQSSBmb3IgcmVmYWN0b3Jpbmc8L2I+PGI+LjwvYj4gIEpEVCBzaG91bGQgYWxsb3cgb3RoZXIgcGx1Zy1pbnMgdG8KICBjb250cmlidXRlIHNwZWNpYWxpemVkIHJlZmFjdG9yaW5nIG9wZXJhdGlvbnMsIGFuZCBwcm92aWRlIHRoZSBpbmZyYXN0cnVjdHVyZQogIHRvIG1ha2UgaXQgcG9zc2libGUgZm9yIHRoZW0gdG8gZG8gc28uIFtKRFQgQ29yZSwgSkRUIFVJXTwvcD4KPC9ibG9ja3F1b3RlPgo8aDQ+RGVmZXJyZWQgSXRlbXMgKEVjbGlwc2UgSkRUIHN1YnByb2plY3QpPC9oND4KPGJsb2NrcXVvdGU+CiAgPHA+PGk+Tm9uZSBhdCB0aGlzIHRpbWUuPC9pPjwvcD4KPC9ibG9ja3F1b3RlPgo8aDQ+UmVqZWN0ZWQgSXRlbXMgKEVjbGlwc2UgSkRUIHN1YnByb2plY3QpPC9oND4KPGJsb2NrcXVvdGU+CiAgPHA+PGk+Tm9uZSBhdCB0aGlzIHRpbWUuPC9pPjwvcD4KPC9ibG9ja3F1b3RlPgoKCgo8cD4oRW5kIG9mIGl0ZW1zIGZvciBFY2xpcHNlIEpEVCBzdWJwcm9qZWN0LikKCgoKPGgzPgoKPGEgbmFtZT0iUERFIj5QbHVnLWluIGRldmVsb3BtZW50IGVudmlyb25tZW50IChQREUpIHN1YnByb2plY3Q8L2E+PC9oMz4KClRoZSA8YSBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3BkZS9pbmRleC5odG1sIj4gcGx1Zy1pbiBkZXZlbG9wbWVudCBlbnZpcm9ubWVudDwvYT4gCihQREUpIGNvbnNpc3RzIG9mJm5ic3A7dG9vbHMgZm9yIGRldmVsb3BpbmcgcGx1Zy1pbnMgZm9yIHRoZSBFY2xpcHNlIFBsYXRmb3JtLgoKVGhlIGZvbGxvd2luZyB3b3JrIGl0ZW1zIHJlZmxlY3QgbmV3IGZlYXR1cmVzIG9mIFBERSwgb3IgYXJlYXMgd2hlcmUgZXhpc3RpbmcKCmZlYXR1cmVzIHdpbGwgYmUgc2lnbmlmaWNhbnRseSByZXdvcmtlZC4KPGg0PkNvbW1pdHRlZCBJdGVtcyAoRWNsaXBzZSBQREUgc3VicHJvamVjdCk8L2g0Pgo8YmxvY2txdW90ZT4KICA8cD48aT5Ob25lIGF0IHRoaXMgdGltZS48L2k+PC9wPgo8L2Jsb2NrcXVvdGU+CjxoND5Qcm9wb3NlZCBJdGVtcyAoRWNsaXBzZSBQREUgc3VicHJvamVjdCk8L2g0Pgo8YmxvY2txdW90ZT4KICA8cD4oPGltZyBib3JkZXI9IjAiIHNyYz0ibmV3LmdpZiIgd2lkdGg9IjEyIiBoZWlnaHQ9IjEyIj4gbmV3KSA8Yj5IZWxwIGRldmVsb3BlcnMgCiAgICB0dW5lIHBsdWctaW4gcGVyZm9ybWFuY2UuPC9iPiBPYnNlcnZpbmcgYW5kIG1lYXN1cmluZyB0aGUgZHluYW1pYyBiZWhhdmlvciAKICAgIG9mIGEgcGx1Zy1pbiBpcyBrZXkgdG8gZGV2ZWxvcGluZyBwbHVnLWlucyB0aGF0IHBlcmZvcm0gd2VsbC4gUERFIHZpc3VhbGl6YXRpb25zIAogICAgc2hvdWxkIGhlbHAgdGhlIGRldmVsb3BlciB1bmRlcnN0YW5kIHRoZSBkeW5hbWljIGJlaGF2aW9yIG9mIHRoZWlyIHJ1bm5pbmcgCiAgICBwbHVnLWluOyBlLmcuLCByZWFzb24gZm9yIHBsdWctaW4gYWN0aXZhdGlvbiwgZWxhcHNlIHRpbWUgdG8gc3RhcnQgdXAsIGRlcGVuZGVudCAKICAgIHBsdWctaW5zIGFjdGl2YXRlZCwgZXRjLjwvcD4KICA8L2Jsb2NrcXVvdGU+CjxibG9ja3F1b3RlPgo8cD4oPGltZyBib3JkZXI9IjAiIHNyYz0ibmV3LmdpZiIgd2lkdGg9IjEyIiBoZWlnaHQ9IjEyIj4KIG5ldykgPGI+UzwvYj48Yj51cHBvcnQgY29udGV4dC1zZW5zaXRpdmUgaGVscCBmb3IgcGx1Zy1pbnMuPC9iPiBBbGwgcGx1Zy1pbgpzaG91bGQgcHJvdmlkZSBjb250ZXh0LXNlbnNpdGl2ZSAoRjEpIGhlbHAgZm9yIHRoZWlyIFVJIGNvbXBvbmVudHMuIEhvd2V2ZXIsCmltcGxlbWVudGluZyBGMSBzdXBwb3J0IGlzIHNvbWV3aGF0IGN1bWJlcnNvbWUgYW5kIGVycm9yIHByb25lLiBQREUgc2hvdWxkCnByb3ZpZGUgYWRkaXRpb25hbCBzdXBwb3J0IGluIHRoaXMgYXJlYSwgc3VjaCBhcyBhc3NpZ25pbmcgaGVscCBjb250ZXh0cyB0byBVSQplbGVtZW50cywgdXBkYXRpbmcgY29ycmVzcG9uZGluZyBYTUwgZmlsZXMsIGFuZCBjaGVja2luZyBjb25zaXN0ZW5jeSBvZiBjb250ZXh0Cmlkcy48L3A+CjwvYmxvY2txdW90ZT4KPGg0PkRlZmVycmVkIEl0ZW1zIChFY2xpcHNlIFBERSBzdWJwcm9qZWN0KTwvaDQ+CjxibG9ja3F1b3RlPgogIDxwPjxpPk5vbmUgYXQgdGhpcyB0aW1lLjwvaT48L3A+CjwvYmxvY2txdW90ZT4KPGg0PlJlamVjdGVkIEl0ZW1zIChFY2xpcHNlIFBERSBzdWJwcm9qZWN0KTwvaDQ+CjxibG9ja3F1b3RlPgogIDxwPjxpPk5vbmUgYXQgdGhpcyB0aW1lLjwvaT48L3A+CjwvYmxvY2txdW90ZT4KCgoKPHA+KEVuZCBvZiBpdGVtcyBmb3IgRWNsaXBzZSBQREUgc3VicHJvamVjdC4pCgo8L2JvZHk+Cgo8L2h0bWw+Cgo=