PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iSVNPLTg4NTktMSI/Pgo8IS0tCiAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZSBvciBtb3JlCiAgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZSBkaXN0cmlidXRlZCB3aXRoCiAgdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLgogIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlIHRvIFlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wCiAgKHRoZSAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGgKICB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAoKICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCgogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLS0+CjwhRE9DVFlQRSBkb2N1bWVudCBbCiAgPCFFTlRJVFkgcHJvamVjdCBTWVNURU0gInByb2plY3QueG1sIj4KXT4KPD94bWwtc3R5bGVzaGVldCB0eXBlPSJ0ZXh0L3hzbCIgaHJlZj0idG9tY2F0LWRvY3MueHNsIj8+Cjxkb2N1bWVudCB1cmw9ImNoYW5nZWxvZy5odG1sIj4KCiAgJnByb2plY3Q7CgogIDxwcm9wZXJ0aWVzPgogICAgPGF1dGhvciBlbWFpbD0icmVtbUBhcGFjaGUub3JnIj5SZW15IE1hdWNoZXJhdDwvYXV0aG9yPgogICAgPGF1dGhvciBlbWFpbD0ieW9hdnNAYXBhY2hlLm9yZyI+WW9hdiBTaGFwaXJhPC9hdXRob3I+CiAgICA8YXV0aG9yIGVtYWlsPSJmaGFuaWtAYXBhY2hlLm9yZyI+RmlsaXAgSGFuaWs8L2F1dGhvcj4KICAgIDxhdXRob3IgZW1haWw9InBlcm9AYXBhY2hlLm9yZyI+UGV0ZXIgUm9zc2JhY2g8L2F1dGhvcj4KICAgIDxhdXRob3IgZW1haWw9Imtrb2xpbmtvQGFwYWNoZS5vcmciPktvbnN0YW50aW4gS29saW5rbzwvYXV0aG9yPgogICAgPGF1dGhvciBlbWFpbD0ia2Z1amlub0BhcGFjaGUub3JnIj5LZWlpY2hpIEZ1amlubzwvYXV0aG9yPgogICAgPGF1dGhvciBlbWFpbD0iamltQGFwYWNoZS5vcmciPkppbSBKYWdpZWxza2k8L2F1dGhvcj4KICAgIDxhdXRob3IgZW1haWw9Im10dXJrQGFwYWNoZS5vcmciPk1sYWRlbiBUdXJrPC9hdXRob3I+CiAgICA8dGl0bGU+Q2hhbmdlbG9nPC90aXRsZT4KICA8L3Byb3BlcnRpZXM+Cgo8Ym9keT4KPCEtLSBTZWN0aW9uIG5hbWVzOgogR2VuZXJhbCwgQ2F0YWxpbmEsIENveW90ZSwgSmFzcGVyLCBDbHVzdGVyLCBXZWJhcHBzLCBPdGhlcgotLT4KPHNlY3Rpb24gbmFtZT0iVG9tY2F0IDUuNS4zNiAobWFya3QpIiBydGV4dD0iIj4KICA8c3Vic2VjdGlvbiBuYW1lPSJHZW5lcmFsIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgVXBkYXRlIHRvIEFwYWNoZSBDb21tb25zIERhZW1vbiAxLjAuMTAuIChtYXJrdCkKICAgICAgPC91cGRhdGU+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgVXBkYXRlIHRvIEFwYWNoZSBDb21tb25zIFBvb2wgMS41LjcuIChtYXJrdCkKICAgICAgPC91cGRhdGU+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgVXBkYXRlIHRvIEFwYWNoZSBUb21jYXQgTmF0aXZlIDEuMS4yNC4gKG1hcmt0KQogICAgICA8L3VwZGF0ZT4KICAgICAgPHVwZGF0ZT4KICAgICAgICBVcGRhdGUgdG8gRWNsaXBzZSBKRFQgMy43LjIuIChtYXJrdCkKICAgICAgPC91cGRhdGU+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+CiAgPHN1YnNlY3Rpb24gbmFtZT0iQ2F0YWxpbmEiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjUyNjc3PC9idWc+OiBUaGUgbmV3IDxjb2RlPlNldENoYXJhY3RlckVuY29kaW5nRmlsdGVyPC9jb2RlPiBuZWVkcwogICAgICAgIHRvIGltcGxlbWVudCA8Y29kZT5GaWx0ZXI8L2NvZGU+IHRvIGJlIHVzZWZ1bC4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjUzMDUwPC9idWc+OiBGaXggWE9SIGFyaXRobWV0aWNzIGFuZCBjaGFyc2V0IGlzc3VlIHdoZW4gY2FsY3VsYXRpbmcKICAgICAgICBlbnRyb3B5IHRvIGluaXRpYWxpemUgcmFuZG9tIG51bWJlcnMgZ2VuZXJhdG9yIGluIHNlc3Npb24gbWFuYWdlci4gQmFzZWQKICAgICAgICBvbiBhIHByb3Bvc2FsIGJ5IEFuZHJhcyBSb3pzYS4gKGtrb2xpbmtvL2ppbSkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz41MzUzMTwvYnVnPjogQmV0dGVyIGNoZWNraW5nIGFuZCBpbXByb3ZlZCBlcnJvciBtZXNzYWdlcyBmb3IKICAgICAgICBkaXJlY3RvcnkgY3JlYXRpb24gZHVyaW5nIGF1dG9tYXRpYyBkZXBsb3ltZW50LiAoc2NodWx0ei9ra29saW5rbykKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgVmFyaW91cyBpbXByb3ZlbWVudHMgdG8gdGhlIERJR0VTVCBhdXRoZW50aWNhdG9yIGluY2x1ZGluZwogICAgICAgIDxidWc+NTI5NTQ8L2J1Zz4sIHRoZSBkaXNhYmxpbmcgY2FjaGluZyBvZiBhbiBhdXRoZW50aWNhdGVkIHVzZXIgaW4gdGhlCiAgICAgICAgc2Vzc2lvbiBieSBkZWZhdWx0LCB0cmFja2luZyBzZXJ2ZXIgcmF0aGVyIHRoYW4gY2xpZW50IG5vbmNlcyBhbmQgYmV0dGVyCiAgICAgICAgaGFuZGxpbmcgb2Ygc3RhbGUgbm9uY2UgdmFsdWVzLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8c2NvZGU+CiAgICAgICAgUmVtb3ZlIHVubmVlZGVkIGhhbmRsaW5nIG9mIEZPUk0gYXV0aGVudGljYXRpb24gaW4gUmVhbG1CYXNlLiAoa2tvbGlua28pCiAgICAgIDwvc2NvZGU+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz41MzgzMDwvYnVnPjogQmV0dGVyIGhhbmRsaW5nIG9mIE1hbmFnZXIucmFuZG9tRmlsZSBkZWZhdWx0IHZhbHVlIG9uCiAgICAgICAgV2luZG93cy4gKGtrb2xpbmtvKQogICAgICA8L2ZpeD4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KICA8c3Vic2VjdGlvbiBuYW1lPSJDb3lvdGUiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPGZpeD4KICAgICAgICBFbnN1cmUgdGhhdCB0aGUgY2h1bmtlZCBpbnB1dCBmaWx0ZXIgaXMgY29ycmVjdGx5IHJlY3ljbGVkIGJldHdlZW4KICAgICAgICByZXF1ZXN0cy4gKGtrb2xpbmtvL2ppbSkKICAgICAgPC9maXg+CiAgICAgIDxhZGQ+CiAgICAgICAgSW1wbGVtZW50IHRoZSBtYXhIZWFkZXJDb3VudCBmb3IgdGhlIEhUVFAgY29ubmVjdG9ycy4gKGtrb2xpbmtvKQogICAgICA8L2FkZD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQyMTgxPC9idWc+OiBCZXR0ZXIgaGFuZGxpbmcgb2YgZWRnZSBjb25kaXRpb25zIGluIGNodW5rIGhlYWRlcgogICAgICAgIHByb2Nlc3NpbmcuIEltcHJvdmUgY2h1bmsgaGVhZGVyIHBhcnNpbmcuIFByb3Blcmx5IGlnbm9yZQogICAgICAgIGNodW5rLWV4dGVuc2lvbiBzdWZmaXgsIG5vdCB0cnlpbmcgdG8gcGFyc2UgZGlnaXRzIGNvbnRhaW5lZCBpbiBpdC4KICAgICAgICBSZWplY3QgY2h1bmtzIHdob3NlIGhlYWRlciBpcyBpbmNvcnJlY3QuIChra29saW5rbykKICAgICAgPC9maXg+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+CiAgPHN1YnNlY3Rpb24gbmFtZT0iV2ViYXBwcyI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8Zml4PgogICAgICAgIDxidWc+NTI2NDE8L2J1Zz46IFJlbW92ZSBtZW50aW9uaW5nIG9mIGxkYXAuamFyIGZyb20gZG9jcy4KICAgICAgICBQYXRjaCBwcm92aWRlZCBieSBGZWxpeCBTY2h1bWFjaGVyLiAocmp1bmcpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NTMxNTg8L2J1Zz46IEZpeCBkb2N1bWVudGVkIGRlZmF1bHRzIGZvciBEQkNQLgogICAgICAgIFBhdGNoIHByb3ZpZGVkIGJ5IHBoLmRlemFubmVhdSBhdCBnbWFpbC5jb20uIChyanVuZykKICAgICAgPC9maXg+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+CiAgPHN1YnNlY3Rpb24gbmFtZT0iT3RoZXIiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjUyNjQwPC9idWc+OiBDb3JyZWN0IHNldCB0aGUgZW5kb3JzZWQgZGlyZWN0b3J5IGxvY2F0aW9uIHdoZW4gdXNpbmcKICAgICAgICB0aGUgV2luZG93cyBpbnN0YWxsZXIuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgPGJ1Zz41MjU3OTwvYnVnPjogQWRkIGEgbm90ZSBhYm91dCBTdW4ncyBDaGFyc2V0LmRlY29kZSgpIGJ1ZyB0byB0aGUKICAgICAgICBSRUxFQVNFLU5PVEVTIGZpbGUuIChra29saW5rbykKICAgICAgPC91cGRhdGU+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+Cjwvc2VjdGlvbj4KPHNlY3Rpb24gbmFtZT0iVG9tY2F0IDUuNS4zNSAoamltKSIgcnRleHQ9InJlbGVhc2VkIDIwMTItMDEtMTYiPgogIDxzdWJzZWN0aW9uIG5hbWU9IkNhdGFsaW5hIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDxhZGQ+CiAgICAgICAgTWFrZSBjb25maWd1cmF0aW9uIGlzc3VlcyBmb3Igc2VjdXJpdHkgcmVsYXRlZCBWYWx2ZXMgYW5kIEZpbHRlcnMgcmVzdWx0CiAgICAgICAgaW4gdGhlIGZhaWx1cmUgb2YgdGhlIHZhbHZlIG9yIGZpbHRlciByYXRoZXIgdGhhbiBqdXN0IGEgd2FybmluZwogICAgICAgIG1lc3NhZ2UuIChtYXJrdCkKICAgICAgPC9hZGQ+CiAgICAgIDxmaXg+CiAgICAgICAgRW5zdXJlIGNoYW5nZXMgdG8gdGhlIGNvbmZpZ3VyYXRpb24gb2YgdGhlIFJlbW90ZUhvc3RWYWx2ZSBhbmQgdGhlCiAgICAgICAgUmVtb3RlQWRkclZhbHZlIHZpYSBKTVggYXJlIHRocmVhZC1zYWZlLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8dXBkYXRlPgogICAgICAgIEluIDxjb2RlPlJlcXVlc3RGaWx0ZXJWYWx2ZTwvY29kZT4gKDxjb2RlPlJlbW90ZUFkZHJWYWx2ZTwvY29kZT4sCiAgICAgICAgPGNvZGU+UmVtb3RlSG9zdFZhbHZlPC9jb2RlPik6IHJlZmFjdG9yIHZhbHVlIG1hdGNoaW5nIGxvZ2ljIGludG8KICAgICAgICBzZXBhcmF0ZSBtZXRob2QgYW5kIGV4cG9zZSB0aGlzIG5ldyBtZXRob2QgPGNvZGU+aXNBbGxvd2VkPC9jb2RlPgogICAgICAgIHRocm91Z2ggSk1YLiAoa2tvbGlua28pCiAgICAgIDwvdXBkYXRlPgogICAgICA8YWRkPgogICAgICAgIEltcHJvdmUgcGVyZm9ybWFuY2Ugb2YgcGFyYW1ldGVyIHByb2Nlc3NpbmcgZm9yIEdFVCBhbmQgUE9TVCByZXF1ZXN0cy4KICAgICAgICBBbHNvIGFkZCBhbiBvcHRpb24gdG8gbGltaXQgdGhlIG1heGltdW0gbnVtYmVyIG9mIHBhcmFtZXRlcnMgcHJvY2Vzc2VkCiAgICAgICAgcGVyIHJlcXVlc3QuIFRoaXMgZGVmYXVsdHMgdG8gMTAwMDAuIEV4Y2Vzc2l2ZSBwYXJhbWV0ZXJzIGFyZSBpZ25vcmVkLgogICAgICAgIE5vdGUgdGhhdCA8Y29kZT5GYWlsZWRSZXF1ZXN0RmlsdGVyPC9jb2RlPiBjYW4gYmUgdXNlZCB0byByZWplY3QgdGhlCiAgICAgICAgcmVxdWVzdCBpZiBzb21lIHBhcmFtZXRlcnMgd2VyZSBpZ25vcmVkLiAobWFya3Qva2tvbGlua28pCiAgICAgIDwvYWRkPgogICAgICA8YWRkPgogICAgICAgIE5ldyBmaWx0ZXIgPGNvZGU+RmFpbGVkUmVxdWVzdEZpbHRlcjwvY29kZT4gdGhhdCB3aWxsIHJlamVjdCBhIHJlcXVlc3QKICAgICAgICBpZiB0aGVyZSB3ZXJlIGVycm9ycyBkdXJpbmcgSFRUUCBwYXJhbWV0ZXIgcGFyc2luZy4gKGtrb2xpbmtvKQogICAgICA8L2FkZD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjUyMzg0PC9idWc+OiBEbyBub3QgZmFpbCB3aXRoIHBhcmFtZXRlciBwYXJzaW5nIHdoZW4gZGVidWcgbG9nZ2luZwogICAgICAgIGlzIGVuYWJsZWQuIChra29saW5rbywgamltKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICBEbyBub3QgZmxhZyBleHRyYSAnJmFtcDsnIGNoYXJhY3RlcnMgaW4gcGFyYW1ldGVycyBhcyBwYXJzZSBlcnJvcnMuCiAgICAgICAgKGtrb2xpbmtvLCBqaW0pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIFNsaWdodGx5IGltcHJvdmUgcGVyZm9ybWFuY2Ugb2YgVURlY29kZXIuY29udmVydCgpLiBBbGlnbgogICAgICAgIDxjb2RlPiUyZjwvY29kZT4gaGFuZGxpbmcgYmV0d2VlbiBpbXBsZW1lbnRhdGlvbnMuIChra29saW5rbykKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz41MjIyNTwvYnVnPjogRml4IENsYXNzQ2FzdEV4Y2VwdGlvbiB3aGVuIGFkZGluZyBhbiBhbGlhcyBmb3IgYW4KICAgICAgICBleGlzdGluZyBob3N0IHZpYSBKTVguIChra29saW5rbykKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgRG8gbm90IHRocm93IGFuIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBmcm9tIGEKICAgICAgICA8Y29kZT5wYXJzZVBhcmFtZXRlcnMoKTwvY29kZT4gY2FsbCB3aGVuIGEgY2h1bmtlZCBQT1NUIHJlcXVlc3QgaXMgdG9vCiAgICAgICAgbGFyZ2UsIGJ1dCB0cmVhdCBpdCBsaWtlIGFuIElPIGVycm9yLiAoa2tvbGlua28pCiAgICAgIDwvZml4PgogICAgICA8YWRkPgogICAgICAgIEFkZCBTZXRDaGFyYWN0ZXJFbmNvZGluZ0ZpbHRlciAoc2ltaWxhciB0byB0aGUgb25lIGNvbnRhaW5lZCBpbiB0aGUKICAgICAgICBleGFtcGxlcyB3ZWIgYXBwbGljYXRpb24pCiAgICAgICAgdG8gdGhlIDxjb2RlPm9yZy5hcGFjaGUuY2F0YWxpbmEuZmlsdGVyczwvY29kZT4gcGFja2FnZSBzbyBpdCBpcwogICAgICAgIGF2YWlsYWJsZSBmb3IgYWxsIHdlYiBhcHBsaWNhdGlvbnMuIChra29saW5rbykKICAgICAgPC9hZGQ+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+CiAgPHN1YnNlY3Rpb24gbmFtZT0iR2VuZXJhbCI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8dXBkYXRlPgogICAgICAgIFVwZGF0ZSBFY2xpcHNlIGNvbXBpbGVyIHRvIDMuNyBhbmQgc3dpdGNoIHRvIHVzaW5nIGVjai5qYXIuIChtYXJrdCkgICAgICAgIAogICAgICA8L3VwZGF0ZT4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KICA8c3Vic2VjdGlvbiBuYW1lPSJDb3lvdGUiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPGZpeD4KICAgICAgICBJbXByb3ZlIG11bHRpLWJ5dGUgY2hhcmFjdGVyIGhhbmRsaW5nIGluIGFsbCBjb25uZWN0b3JzLiAocmp1bmcpCiAgICAgIDwvZml4PgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgogIDxzdWJzZWN0aW9uIG5hbWU9Ikphc3BlciI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8Zml4PgogICAgICAgIDxidWc+NTIzMzU8L2J1Zz46IE9ubHkgaGFuZGxlIDxjb2RlPiZsdDtcJTwvY29kZT4gYW5kIG5vdAogICAgICAgIDxjb2RlPlwlPC9jb2RlPiBhcyBlc2NhcGVkIGluIHRlbXBsYXRlIHRleHQuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+CiAgPHN1YnNlY3Rpb24gbmFtZT0iV2ViYXBwcyI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8Zml4PgogICAgICAgIDxidWc+NTIwNDk8L2J1Zz46IEltcHJvdmUgc2V0dXAgaW5zdHJ1Y3Rpb25zIGZvciBydW5uaW5nIGFzIGEgV2luZG93cwogICAgICAgIHNlcnZpY2U6IGNvcnJlY3QgaW5mb3JtYXRpb24gb24gaG93IGEgSlJFIGlzIGlkZW50aWZpZWQgYW5kIHNlbGVjdGVkLgogICAgICAgIChra29saW5rbykKICAgICAgPC9maXg+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgPGJ1Zz41MjE3MjwvYnVnPjogVXBkYXRlIFRvbWNhdCBidWlsZCBpbnN0cnVjdGlvbnMuIEluY2x1ZGVzIGNoYW5nZXMKICAgICAgICBwcm9wb3NlZCBieSBibWFyZ3VsaWVzLiAoa2tvbGlua28pCiAgICAgIDwvdXBkYXRlPgogICAgICA8Zml4PgogICAgICAgIDxidWc+NTIyNDM8L2J1Zz46IEltcHJvdmUgd2luZG93cyBzZXJ2aWNlIGRvY3VtZW50YXRpb24gdG8gY2xhcmlmeSBob3cKICAgICAgICB0byBpbmNsdWRlIDxjb2RlPiM8L2NvZGU+IGFuZC9vciA8Y29kZT47PC9jb2RlPiBpbiB0aGUgdmFsdWUgb2YgYW4KICAgICAgICBlbnZpcm9ubWVudCB2YXJpYWJsZSB0aGF0IGlzIHBhc3NlZCB0byB0aGUgc2VydmljZS4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KICA8c3Vic2VjdGlvbiBuYW1lPSJPdGhlciI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8Zml4PgogICAgICAgIDxidWc+NTIwNTk8L2J1Zz46IEVuc3VyZSBXaW5kb3dzIHJlZ2lzdHJ5IGtleXMgYXJlIHJlbW92ZWQgd2hlbiB1c2luZwogICAgICAgIHRoZSB1bi1pbnN0YWxsIG9wdGlvbiBvZiB0aGUgV2luZG93cyBpbnN0YWxsZXIuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+Cjwvc2VjdGlvbj4KPHNlY3Rpb24gbmFtZT0iVG9tY2F0IDUuNS4zNCAoamltKSIgcnRleHQ9InJlbGVhc2VkIDIwMTEtMDktMjIiPgogIDxzdWJzZWN0aW9uIG5hbWU9IkdlbmVyYWwiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPHVwZGF0ZT4KICAgICAgICBVcGRhdGUgVG9tY2F0LU5hdGl2ZSB0byAxLjEuMjIuIChqaW0pCiAgICAgIDwvdXBkYXRlPgogICAgICA8dXBkYXRlPgogICAgICAgIEZpeCBDVkUtMjAxMS0yNzI5LiBVcGRhdGUgdG8gQ29tbW9ucyBEYWVtb24gMS4wLjcuIChtYXJrdCkKICAgICAgPC91cGRhdGU+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zMzI2MjwvYnVnPjogV2hlbiB1c2luZyB0aGUgV2luZG93cyBpbnN0YWxsZXIsIHRoZSBtb25pdG9yIGlzIG5vdwogICAgICAgIGF1dG8tc3RhcnRlZCBmb3IgdGhlIGN1cnJlbnQgdXNlciByYXRoZXIgdGhhbiBhbGwgdXNlcnMgdG8gYmUgY29uc2lzdGVudAogICAgICAgIHdpdGggbWVudSBpdGVtIGNyZWF0aW9uLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDA1MTA8L2J1Zz46IFByb3ZpZGUgYW4gb3B0aW9uIHdpdGhpbiB0aGUgV2luZG93cyBpbnN0YWxsZXIgdG8KICAgICAgICBjcmVhdGUgbWVudSBlbnRyaWVzIGZvciB0aGUgY3VycmVudCB1c2VyIG9yIGFsbCB1c2Vycy4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjUwOTQ5PC9idWc+OiBBZGQgdGhlIGFiaWxpdHkgdG8gc3BlY2lmeSB0aGUgQUpQIHBvcnQgYW5kIHRoZQogICAgICAgIHNodXRkb3duIHBvcnQgd2hlbiB1c2luZyB0aGUgV2luZG93cyBpbnN0YWxsZXIuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz41MTEzNTwvYnVnPjogRml4IGF1dG8tZGV0ZWN0aW9uIG9mIEpBVkFfSE9NRSBmb3IgNjQtYml0IFdpbmRvd3MKICAgICAgICBwbGF0Zm9ybXMgdGhhdCBvbmx5IGhhdmUgYSAzMi1iaXQgSlZNIGluc3RhbGxlZCB3aGVuIHVzaW5nIHRoZSBXaW5kb3dzCiAgICAgICAgaW5zdGFsbGVyLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgogIDxzdWJzZWN0aW9uIG5hbWU9IkNhdGFsaW5hIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4yNzk4ODwvYnVnPjogSW1wcm92ZSByZXBvcnRpbmcgb2YgbWlzc2luZyBmaWxlcy4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjI4ODUyPC9idWc+OiBBZGQgVVJMIGVuY29kaW5nIHdoZXJlIG1pc3NpbmcgdG8gcGFyYW1ldGVycyBpbiBVUkxzCiAgICAgICAgcHJlc2VudGVkIGJ5IEFudCB0YXNrcyB0byB0aGUgTWFuYWdlciBhcHBsaWNhdGlvbi4gQmFzZWQgb24gYSBwYXRjaCBieQogICAgICAgIFN0ZXBoYW5lIEJhaWxsaWV6LiAobWFyaykgCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDExNzk8L2J1Zz46IFJldHVybiA0MDQgcmF0aGVyIHRoYW4gNDAwIGZvciByZXF1ZXN0cyB0byB0aGUgUk9PVAogICAgICAgIGNvbnRleHQgd2hlbiBubyBST09UIGNvbnRleHQgaGFzIGJlZW4gZGVwbG95ZWQuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz41MDE4OTwvYnVnPjogT25jZSB0aGUgYXBwbGljYXRpb24gaGFzIGZpbmlzaGVkIHdyaXRpbmcgdG8gdGhlCiAgICAgICAgcmVzcG9uc2UsIHByZXZlbnQgZnVydGhlciByZWFkcyBmcm9tIHRoZSByZXF1ZXN0IHNpbmNlIHRoaXMgY2F1c2VzCiAgICAgICAgdmFyaW91cyBwcm9ibGVtcyBpbiB0aGUgY29ubmVjdG9ycyB3aGljaCBkbyBub3QgZXhwZWN0IHRoaXMuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgRml4IENWRS0yMDExLTIyMDQuIFByZXZlbnQgdXNlciBwYXNzd29yZHMgYXBwZWFyaW5nIGluIGxvZyBmaWxlcyBpZiBhCiAgICAgICAgcnVudGltZSBleGNlcHRpb24gKGUuZy4gT09NRSkgb2NjdXJzIHdoaWxlIGNyZWF0aW5nIGEgbmV3IHVzZXIgZm9yIGEKICAgICAgICBNZW1vcnlVc2VyRGF0YWJhc2UgdmlhIEpNWC4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjUxMDQyPC9idWc+OiBEb24mYXBvczt0IHRyaWdnZXIgc2Vzc2lvbiBjcmVhdGlvbiBsaXN0ZW5lcnMgd2hlbiBhCiAgICAgICAgc2Vzc2lvbiBJRCBpcyBjaGFuZ2VkIGFzIHBhcnQgb2YgdGhlIGF1dGhlbnRpY2F0aW9uIHByb2Nlc3MuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz41MTMyNDwvYnVnPjogSW1wcm92ZSBoYW5kbGluZyBvZiBleGNlcHRpb25zIHdoZW4gZmx1c2hpbmcgdGhlCiAgICAgICAgcmVzcG9uc2UgYnVmZmVyIHRvIGVuc3VyZSB0aGF0IHRoZSBkb0ZsdXNoIGZsYWcgZG9lcyBub3QgZ2V0IHN0dWNrIGluCiAgICAgICAgdGhlIGVuYWJsZWQgc3RhdGUuIFBhdGNoIHByb3ZpZGVkIGJ5IEplcmVteSBOb3JyaXMuIChra29saW5rbykKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz41MTQwMzwvYnVnPjogQXZvaWQgTnVsbFBvaW50ZXJFeGNlcHRpb24gaW4gSlVMSSBGaWxlSGFuZGxlciBpZgogICAgICAgIGZvcm1hdHRlciBpcyBtaXNjb25maWd1cmVkLiAoa2tvbGlua28pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NTE0NzM8L2J1Zz46IEZpeCBjb25jYXRlbmF0aW9uIG9mIHZhbHVlcyBpbgogICAgICAgIFNlY3VyaXR5Q29uZmlnLnNldFNlY3VyaXR5UHJvcGVydHkoKSB3aGVuIHRoZSB2YWx1ZSBwcm92aWRlZCBieSBKUkUgaXMKICAgICAgICBudWxsLiAoa2tvbGlua28pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NTE1NTA8L2J1Zz46IEludGVybmFsIGVycm9ycyBpbiBUb21jYXQgY29tcG9uZW50cyB0aGF0IHByb2Nlc3MKICAgICAgICByZXF1ZXN0cyBiZWZvcmUgdGhleSBhcmUgcGFzc2VkIHRvIGEgd2ViIGFwcGxpY2F0aW9uLCBzdWNoIGFzCiAgICAgICAgQXV0aGVudGljYXRvcnMsIG5vdyByZXR1cm4gYSA1MDAgcmVzcG9uc2UgcmF0aGVyIHRoYW4gYSAyMDAgcmVzcG9uc2UuCiAgICAgICAgKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGFkZD4KICAgICAgICBDVkUtMjAxMS0xMTg0OiBBZGQgYWRkaXRpb25hbCBjb25maWd1cmF0aW9uIG9wdGlvbnMgdG8gdGhlIERJR0VTVAogICAgICAgIGF1dGhlbnRpY2F0b3IuIChtYXJrdCkKICAgICAgPC9hZGQ+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+CiAgPHN1YnNlY3Rpb24gbmFtZT0iQ295b3RlIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDxmaXg+CiAgICAgICAgRml4IENWRS0yMDExLTI1MjYuIFByb3RlY3QgYWdhaW5zdCBjcmFzaGVzIChIVFRQIEFQUikgaWYgc2VuZGZpbGUgaXMKICAgICAgICBjb25maWd1cmVkIHRvIHNlbmQgbW9yZSBkYXRhIHRoYW4gaXMgYXZhaWxhYmxlIGluIHRoZSBmaWxlLiAobWFya3QpIAogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjUwMzk0PC9idWc+OiBSZXR1cm4gLTEgZnJvbSByZWFkIG9wZXJhdGlvbiBpbnN0ZWFkIG9mIHRocm93aW5nIGFuCiAgICAgICAgZXhjZXB0aW9uIHdoZW4gZW5jb3VudGVyaW5nIGFuIEVPRiB3aXRoIHRoZSBIVFRQIEFQUiBjb25uZWN0b3IuCiAgICAgICAgKGtrb2xpbmtvKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjUwNzQ0PC9idWc+OiBTa2lwIHRoZSBTU0wgY29uZmlndXJhdGlvbiBjaGVjayBvbiBwbGF0Zm9ybXMgd2hlcmUgYW4KICAgICAgICB1bmJvdW5kZWQgc29ja2V0IGNhbm5vdCBiZSBjcmVhdGVkLiAoa2tvbGlua28pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NTEwNzM8L2J1Zz46IFRocm93IGFuIGV4Y2VwdGlvbiBhbmQgZG8gbm90IHN0YXJ0IHRoZSBBUFIgY29ubmVjdG9yCiAgICAgICAgaWYgaXQgaXMgY29uZmlndXJlZCBmb3IgU1NMIGFuZCBhbiBpbnZhbGlkIHZhbHVlIGlzIHByb3ZpZGVkIGZvcgogICAgICAgIFNTTFByb3RvY29sLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NTE2OTg8L2J1Zz46IEZpeCBDVkUtMjAxMS0zMTkwLiBQcmV2ZW50IEFKUCBtZXNzYWdlIGluamVjdGlvbi4KICAgICAgICAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8YWRkPgogICAgICAgIERldGVjdCBpbmNvbXBsZXRlIEFKUCBtZXNzYWdlcyBhbmQgcmVqZWN0IHRoZSBhc3NvY2lhdGVkIHJlcXVlc3QgaWYgb25lCiAgICAgICAgaXMgZm91bmQuIChtYXJrdCkgCiAgICAgIDwvYWRkPgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgogIDxzdWJzZWN0aW9uIG5hbWU9Ikphc3BlciI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzYzNjI8L2J1Zz46IEhhbmRsZSB0aGUgY2FzZSB3aGVyZSB0YWcgZmlsZSBhdHRyaWJ1dGVzICh3aGljaCBjYW4KICAgICAgICB1c2UgYW55IHZhbGlkIFhNTCBuYW1lKSBoYXZlIGEgbmFtZSB3aGljaCBpcyBub3QgYSBKYXZhIGlkZW50aWZpZXIuCiAgICAgICAgKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICBGaXggcG9zc2libGUgdGhyZWFkaW5nIGlzc3VlIGluIEpTUCBjb21waWxhdGlvbiB3aGVuIGRldmVsb3BtZW50IG1vZGUgaXMKICAgICAgICBlbmFibGVkLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgogIDxzdWJzZWN0aW9uIG5hbWU9IkNsdXN0ZXIiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQ4NzE3PC9idWc+OiBFbnN1cmUgc2Vzc2lvbiBhY3RpdmF0aW9uIGV2ZW50cyBhcmUgZmlyZWQuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz41MDc3MTwvYnVnPjogRW5zdXJlIEh0dHBTZXJ2bGV0UmVxdWVzdCNnZXRBdXRoVHlwZSgpIHJldHVybnMgdGhlCiAgICAgICAgbmFtZSBvZiB0aGUgYXV0aGVudGljYXRpb24gc2NoZW1lIGlmIHJlcXVlc3QgaGFzIGFscmVhZHkgYmVlbgogICAgICAgIGF1dGhlbnRpY2F0ZWQuIChrZnVqaW5vKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjUxNjQ3PC9idWc+OiBGaXggc2Vzc2lvbiByZXBsaWNhdGlvbiB3aGVuIGEgc2Vzc2lvbiBhdHRyaWJ1dGUgaXMgYQogICAgICAgIEphdmEgZHluYW1pYyBwcm94eS4gQmFzZWQgb24gYSBwYXRjaCBieSBUb21hc3ogU2t1dG5pay4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KICA8c3Vic2VjdGlvbiBuYW1lPSJXZWJhcHBzIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40MTQ5ODwvYnVnPjogQWRkIHRoZSBhbGxSb2xlc01vZGUgYXR0cmlidXRlIHRvIHRoZSBSZWFsbQogICAgICAgIGNvbmZpZ3VyYXRpb24gcGFnZSBpbiB0aGUgZG9jdW1lbnRhdGlvbiB3ZWIgYXBwbGljYXRpb24uIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgQ29uZmlndXJlIFNlY3VyaXR5IE1hbmFnZXIgSG93LVRvIHRvIGluY2x1ZGUgYSBjb3B5IG9mIHRoZSBhY3R1YWwKICAgICAgICBjb25mL2NhdGFsaW5hLnBvbGljeSBmaWxlIHdoZW4gdGhlIGRvY3VtZW50YXRpb24gaXMgYnVpbHQsIHJhdGhlcgogICAgICAgIHRoYW4gbWFpbnRhaW5pbmcgYSBjb3B5IG9mIGl0cyBjb250ZW50LiAoa2tvbGlua28pCiAgICAgIDwvdXBkYXRlPgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDg5OTc8L2J1Zz46IEZpeGVkIHNvbWUgdHlwb3MgYW5kIGltcHJvdmUgY3Jvc3MtcmVmZXJlbmNpbmcgdG8gdGhlCiAgICAgICAgSFRUUCBDb25uZWN0b3IgYW5kIEFQUiBkb2N1bWVudGF0aW9uIHdpdGggdGhlIFNTTCBIb3ctVG8gcGFnZSBvZiB0aGUKICAgICAgICBkb2N1bWVudGF0aW9uIHdlYiBhcHBsaWNhdGlvbi4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KICA8c3Vic2VjdGlvbiBuYW1lPSJPdGhlciI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8Zml4PgogICAgICAgIEFsaWduIGpwZGEgc2V0dGluZ3MgaW4gY2F0YWxpbmEuYmF0IHdpdGggY2F0YWxpbmEuc2gsIHRjNi4wLngsIHRjNy4wLngKICAgICAgICBhbmQgdHJ1bmsuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgQ2xhcmlmeSBlcnJvciBtZXNzYWdlcyBpbiAqLnNoIGZpbGVzIHRvIG1lbnRpb24gdGhhdCBpZiBhIHNjcmlwdCBpcwogICAgICAgIG5vdCBmb3VuZCBpdCBtaWdodCBiZSBiZWNhdXNlIGV4ZWN1dGUgcGVybWlzc2lvbiBpcyBuZWVkZWQuIChra29saW5rbykKICAgICAgPC91cGRhdGU+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+Cjwvc2VjdGlvbj4KPHNlY3Rpb24gbmFtZT0iVG9tY2F0IDUuNS4zMyAoamltKSIgcnRleHQ9InJlbGVhc2VkIDIwMTEtMDItMTAiPgogIDxzdWJzZWN0aW9uIG5hbWU9IkdlbmVyYWwiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPGZpeD4KICAgICAgICBGaXggcGVybWlzc2lvbnMgb2YgdmVyc2lvbi5zaCBpbiBiaW4gdGFyYmFsbC4gKHJqdW5nKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQ1MzMyPC9idWc+LCA8YnVnPjQ1ODUyPC9idWc+LCA8YnVnPjUwMTQwPC9idWc+OgogICAgICAgIEJhY2twb3J0IG51bWVyb3VzIGltcHJvdmVtZW50cyB0byB0aGUgV2luZG93cyBpbnN0YWxsZXIuCiAgICAgICAgU3BlY2lmeSB0aGUgY29ycmVjdCBlbmNvZGluZyAodGhlIGN1cnJlbnQgV2luZG93cyBjb2RlIHBhZ2UpIHJhdGhlcgogICAgICAgIHRoYW4gYXNzdW1pbmcgVVRGLTggd2hlbiBjcmVhdGluZyB0b21jYXQtdXNlcnMueG1sIC0gPGJ1Zz40NTMzMjwvYnVnPiwKICAgICAgICA8YnVnPjQ1ODUyPC9idWc+LgogICAgICAgIFVwZGF0ZSBpbnN0YWxsL3VuaW5zdGFsbCBpY29ucy4gQ3JlYXRlIGFuIGluc3RhbGxhdGlvbiBsb2cuCiAgICAgICAgQWxsb3cgMzItYml0IEpWTXMgdG8gYmUgc2VsZWN0ZWQgd2hlbiBpbnN0YWxsaW5nIG9uIGEgNjQtYml0IHBsYXRmb3JtLgogICAgICAgIERvIG5vdCBpZ25vcmUgaW5zdGFsbCBkaXJlY3RvcnkgaWYgaXQgaXMgc3BlY2lmaWVkIHdpdGggdGhlIGNvbW1hbmQKICAgICAgICBsaW5lIHN3aXRjaCBvbiA2NC1iaXQgcGxhdGZvcm1zIC0gPGJ1Zz41MDE0MDwvYnVnPi4KICAgICAgICBBZGQgc3VwcG9ydCBmb3IgdGhlIDxjb2RlPi8/PC9jb2RlPiBjb21tYW5kIGxpbmUgc3dpdGNoLgogICAgICAgIFJlcGxhY2UgdGhlIC5pbmkgZmlsZXMgd2l0aCB0aGUgc2NyaXB0IGVxdWl2YWxlbnRzLgogICAgICAgIFByb3ZpZGUgdGhlIGFiaWxpdHkgdG8gZWRpdCB0aGUgcm9sZXMgZm9yIHRoZSBhZGRlZCB1c2VyLgogICAgICAgIENsZWFuIHVwIGZ1bGx5IGFmdGVyIGluc3RhbGxhdGlvbi4KICAgICAgICBBZGQgRGV0YWlsUHJpbnQgc3RhdGVtZW50cyBmb3Igb3BlcmF0aW9ucyB0aGF0IG1heSB0YWtlIHRpbWUuCiAgICAgICAgSW1wcm92ZSB0aGUgZGVzY3JpcHRpb25zIG9mIHRoZSBjb21wb25lbnRzLgogICAgICAgIChra29saW5rbywgbXR1cmssIG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGFkZD4KICAgICAgICBBZGQgcm9sZXMgKGFkbWluLWd1aSwgYWRtaW4tc2NyaXB0LCBtYW5hZ2VyLWd1aSwgbWFuYWdlci1zY3JpcHQsCiAgICAgICAgbWFuYWdlci1qbXgsIG1hbmFnZXItc3RhdHVzKSB0byB0aGUgTWFuYWdlciwgSG9zdCBNYW5hZ2VyIGFuZCBBZG1pbgogICAgICAgIGFwcGxpY2F0aW9ucyB0byBhbGxvdyBtb3JlIGZpbmUtZ3JhaW5lZCBjb250cm9sIG9mIHBlcm1pc3Npb25zLiBUaGUgb2xkCiAgICAgICAgcm9sZXMgYXJlIGRlcHJlY2F0ZWQgYnV0IHdpbGwgc3RpbGwgd29yayBpbiB0aGUgc2FtZSB3YXkuIChra29saW5rbykKICAgICAgPC9hZGQ+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+CiAgPHN1YnNlY3Rpb24gbmFtZT0iQ2F0YWxpbmEiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPGZpeD4KICAgICAgICBJbXByb3ZlIEhUVFAgc3BlY2lmaWNhdGlvbiBjb21wbGlhbmNlIGluIHN1cHBvcnQgb2YKICAgICAgICA8Y29kZT5BY2NlcHQtTGFuZ3VhZ2U8L2NvZGU+IGhlYWRlci4gVGhpcyBwcm90ZWN0cyBmcm9tIGtub3duIGV4cGxvaXQKICAgICAgICBvZiB0aGUgT3JhY2xlIEpWTSBidWcgdGhhdCB0cmlnZ2VycyBhIERvUywgQ1ZFLTIwMTAtNDQ3Ni4gKGtrb2xpbmtvKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjUwNjIwPC9idWc+OiBTdG9wIGV4Y2VwdGlvbnMgdGhhdCBvY2N1ciBkdXJpbmcKICAgICAgICA8Y29kZT5TZXNzaW9uLmVuZEFjY2VzcygpPC9jb2RlPiBmcm9tIHByZXZlbnRpbmcgdGhlIG5vcm1hbCBjb21wbGV0aW9uCiAgICAgICAgb2YgPGNvZGU+UmVxdWVzdC5yZWN5Y2xlKCk8L2NvZGU+LiAobWFya3Qva2tvbGlua28pCiAgICAgIDwvZml4PgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgogIDxzdWJzZWN0aW9uIG5hbWU9IkNveW90ZSI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8dXBkYXRlPgogICAgICAgIFJlbW92ZSA8Y29kZT5KU1NFMTNGYWN0b3J5PC9jb2RlPiwgPGNvZGU+SlNTRTEzU29ja2V0RmFjdG9yeTwvY29kZT4KICAgICAgICBjbGFzc2VzLCBhcyBUb21jYXQgNS41IGFsd2F5cyBydW5zIG9uIEpSRSAxLjQgb3IgbGF0ZXIuIChra29saW5rbykKICAgICAgPC91cGRhdGU+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz41MDMyNTwvYnVnPjogV2hlbiB0aGUgSlZNIGluZGljYXRlcyBzdXBwb3J0IGZvciBSRkMgNTc0NiwgZGlzYWJsZQogICAgICAgIFRvbWNhdCZhcG9zO3MgPGNvZGU+YWxsb3dVbnNhZmVMZWdhY3lSZW5lZ290aWF0aW9uPC9jb2RlPiBjb25maWd1cmF0aW9uCiAgICAgICAgYXR0cmlidXRlIGFuZCB1c2UgdGhlIEpWTSBjb25maWd1cmF0aW9uIHRvIGNvbnRyb2wgcmVuZWdvdGlhdGlvbi4KICAgICAgICAobWFya3Qva2tvbGlua28pCiAgICAgIDwvZml4PgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgo8L3NlY3Rpb24+CjxzZWN0aW9uIG5hbWU9IlRvbWNhdCA1LjUuMzIgKGppbSkiIHJ0ZXh0PSJyZWxlYXNlZCAyMDExLTAyLTAxIj4KICA8c3Vic2VjdGlvbiBuYW1lPSJHZW5lcmFsIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgVXBkYXRlIHRvIENvbW1vbnMgRGFlbW9uIDEuMC41LiAobXR1cmspCiAgICAgIDwvdXBkYXRlPgogICAgICA8dXBkYXRlPgogICAgICAgIFVwZGF0ZSB0byBjb21tb25zLXBvb2wgMS41LjUuIChtYXJrdCkKICAgICAgPC91cGRhdGU+CiAgICAgIDxmaXg+CiAgICAgICAgRW5zdXJlIFBPTSBmaWxlcyBoYXZlIGNvcnJlY3QgbGluZSBlbmRpbmdzIGluIHNvdXJjZSBkaXN0cmlidXRpb25zLgogICAgICAgIChyanVuZy9tYXJrdCkKICAgICAgPC9maXg+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+CiAgPHN1YnNlY3Rpb24gbmFtZT0iQ2F0YWxpbmEiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPGFkZD4KICAgICAgICA8YnVnPjQzOTYwPC9idWc+OiBFeHBvc2UgPGNvZGU+YXZhaWxhYmxlPC9jb2RlPiBwcm9wZXJ0eSBvZgogICAgICAgIFN0YW5kYXJkV3JhcHBlciB2aWEgSk1YLiAobWFya3QpCiAgICAgIDwvYWRkPgogICAgICA8Zml4PgogICAgICAgIDxidWc+NTAxMzE8L2J1Zz46IEF2b2lkIHBvc3NpYmxlIE5QRSBpbiBkZWJ1ZyBvdXRwdXQgaW4gUGVyc2lzdGVudFZhbHZlLgogICAgICAgIFBhdGNoIHByb3ZpZGVkIGJ5IHNlYmIuIChra29saW5rbykKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz41MDQxMzwvYnVnPjogRW5zdXJlIDMwNHMgYXJlIG5vdCByZXR1cm5lZCB3aGVuIHVzaW5nIHN0YXRpYyBmaWxlcwogICAgICAgIGFzIGVycm9yIHBhZ2VzLiAobWFya3Qva2tvbGlua28pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIEF2b2lkIHVubmVjZXNzYXJ5IGNhc3QgaW4gU3RhbmRhcmRDb250ZXh0LiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NTA0NjA8L2J1Zz46IEF2b2lkIGEgcG9zc2libGUgbWVtb3J5IGxlYWsgY2F1c2VkIGJ5IHVzaW5nIGEgY2FjaGVkCiAgICAgICAgZXhjZXB0aW9uIGluc3RhbmNlLiAoa2tvbGlua28pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NTA1NTA8L2J1Zz46IFdoZW4gYSBuZXcgZGlyZWN0b3J5IGlzIGNyZWF0ZWQgKGUuZy4gdmlhIFdlYkRBVikKICAgICAgICBlbnN1cmUgdGhhdCBhIHN1YnNlcXVlbnQgcmVxdWVzdCBmb3IgdGhhdCBkaXJlY3RvcnkgZG9lcyBub3QgcmVzdWx0IGluIGEKICAgICAgICA0MDQgcmVzcG9uc2UuIChtYXJrdC9ra29saW5rbykKICAgICAgPC9maXg+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+CiAgPHN1YnNlY3Rpb24gbmFtZT0iQ295b3RlIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40NzkxMzwvYnVnPjogUmV0dXJuIHRoZSBJUCBhZGRyZXNzIHJhdGhlciB0aGFuIG51bGwgZm9yCiAgICAgICAgPGNvZGU+Z2V0UmVtb3RlSG9zdCgpPC9jb2RlPiB3aXRoIHRoZSBBUFIgY29ubmVjdG9yIGlmIHRoZSBJUCBhZGRyZXNzCiAgICAgICAgZG9lcyBub3QgcmVzb2x2ZS4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQ5NTIxPC9idWc+OiBEaXNhYmxlIHNjYW5uaW5nIGZvciBhIGZyZWUgcG9ydCBpbiBKayBBSlAvMS4zCiAgICAgICAgY29ubmVjdG9yIGJ5IGRlZmF1bHQuIERvIG5vdCBjaGFuZ2UgbWF4UG9ydCBmaWVsZCB2YWx1ZSBvZiBDaGFubmVsU29ja2V0CiAgICAgICAgaW4gaXRzIDxjb2RlPnNldFBvcnQoKTwvY29kZT4gYW5kIDxjb2RlPmluaXQoKTwvY29kZT4gbWV0aG9kcy4gQWRkCiAgICAgICAgc3VwcG9ydCBmb3IgPGNvZGU+bWF4UG9ydDwvY29kZT4gYXR0cmlidXRlIG9uIGEgPGNvZGU+Q29ubmVjdG9yPC9jb2RlPgogICAgICAgIGVsZW1lbnQgYXMgYSBzeW5vbnltIGZvciBjaGFubmVsU29ja2V0Lm1heFBvcnQuIChra29saW5rbykKICAgICAgPC9maXg+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+CiAgPHN1YnNlY3Rpb24gbmFtZT0iSmFzcGVyIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40OTkzNTwvYnVnPjogSGFuZGxlIGNvbXBpbGF0aW9uIG9mIHJlY3Vyc2l2ZSB0YWcgZmlsZXMuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+CiAgPHN1YnNlY3Rpb24gbmFtZT0iQ2x1c3RlciI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8Zml4PgogICAgICAgIEltcHJvdmUgc2VuZGluZyBhbiBhY2Nlc3MgbWVzc2FnZSBpbiBEZWx0YU1hbmFnZXIuCiAgICAgICAgbWF4SW5hY3RpdmVJbnRlcnZhbCBvZiBub3QgTWFuYWdlciBidXQgdGhlIHNlc3Npb24gaXMgdXNlZC4gCiAgICAgICAgSWYgbWF4SW5hY3RpdmVJbnRlcnZhbCBpcyBuZWdhdGl2ZSwgYW4gYWNjZXNzIG1lc3NhZ2UgaXMgbm90IHNlbmRpbmcuIAogICAgICAgIChrZnVqaW5vKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjUwNTQ3PC9idWc+OiBBZGQgdGltZSBzdGFtcCBmb3IgQ0hBTkdFX1NFU1NJT05fSUQgbWVzc2FnZSBhbmQgCiAgICAgICAgU0VTU0lPTl9FWFBJUkVEIG1lc3NhZ2UuIChrZnVqaW5vKQogICAgICA8L2ZpeD4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KICA8c3Vic2VjdGlvbiBuYW1lPSJXZWJhcHBzIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDxhZGQ+CiAgICAgICAgPGJ1Zz41MDI5NDwvYnVnPjogQWRkIG1vcmUgaW5mb3JtYXRpb24gdG8gZG9jdW1lbnRhdGlvbiByZWdhcmRpbmcgZm9ybWF0CiAgICAgICAgb2YgY29uZmlndXJhdGlvbiBmaWxlcy4gUGF0Y2ggcHJvdmlkZWQgYnkgTHVrZSBNZXllci4gKG1hcmt0KSAKICAgICAgPC9hZGQ+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgSW1wcm92ZSBkb2N1bWVudGF0aW9uIG9mIGRhdGFiYXNlIGNvbm5lY3Rpb24gZmFjdG9yeS4gKHJqdW5nKQogICAgICA8L3VwZGF0ZT4KICAgICAgPGZpeD4KICAgICAgICBJbXByb3ZlIGZpbHRlcmluZyBvZiBNYW5hZ2VyIGRpc3BsYXkgb3V0cHV0LiAoa2tvbGlua28pIAogICAgICA8L2ZpeD4KICAgICAgPHVwZGF0ZT4KICAgICAgICBDb25maWd1cmUgdGhlIEFkbWluLCBNYW5hZ2VyIGFuZCBIb3N0LU1hbmFnZXIgd2ViIGFwcGxpY2F0aW9ucyB0byB1c2UKICAgICAgICBIdHRwT25seSBmbGFnIGZvciB0aGVpciBzZXNzaW9uIGNvb2tpZXMuIChra29saW5rbykKICAgICAgPC91cGRhdGU+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+Cjwvc2VjdGlvbj4KPHNlY3Rpb24gbmFtZT0iVG9tY2F0IDUuNS4zMSAoamltKSIgcnRleHQ9InJlbGVhc2VkIDIwMTAtMDktMTYiPgogIDxzdWJzZWN0aW9uIG5hbWU9IkdlbmVyYWwiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPGZpeD4KICAgICAgICBBZGQgc3ZuOmV4ZWN1dGFibGUgcHJvcGVydHkgdG8gc29tZSBzY3JpcHQgZmlsZXMgYW5kCiAgICAgICAgcmVtb3ZlIGl0IGZyb20gbm9uLWV4ZWN1dGFibGUgZmlsZXMuIChyanVuZykKICAgICAgPC9maXg+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+CiAgPHN1YnNlY3Rpb24gbmFtZT0iQ2F0YWxpbmEiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM4MTEzPC9idWc+IEFkZCBzeXN0ZW0gcHJvcGVydHkgKEFMTE9XX0VNUFRZX1FVRVJZX1NUUklORykgdG8gYWxsb3cKICAgICAgICBzcGVjIGNvbXBsaWFudCBoYW5kbGluZyBvZiBxdWVyeSBzdHJpbmcuIChtYXJrdC9ra29saW5rby9qaW0pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIFJldHVybiBhIGNvcHkgb2YgdGhlIFVSTCBiZWluZyB1c2VkIGZyb20gdGhlIHdlYmFwcCBjbGFzcyBsb2FkZXIsIG5vdAogICAgICAgIHRoZSBvcmlnaW5hbCBhcnJheS4gKGtrb2xpbmtvL21hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQ5NzQ5PC9idWc+OiBVc2UgSHR0cE9ubHkgZmxhZyBvZiBjdXJyZW50IGNvbnRleHQgd2hlbiBnZW5yYXRpbmcKICAgICAgICBhIFNpbmdsZS1TaWduLU9uIGNvb2tpZS4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KICA8c3Vic2VjdGlvbiBuYW1lPSJDb3lvdGUiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQ5NzE4PC9idWc+OiBGaXggcmVncmVzc2lvbiBpbiBwcmV2aW91cyBmaXggZm9yIDxidWc+NDY5ODQ8L2J1Zz4KICAgICAgICBjYXVzZWQgYnkgdGhlIHBhdGNoIGJlaW5nIGFwcGxpZWQgdG8gdGhlIHdyb25nIHNlY3Rpb24gb2YgY29kZS4gVGhlCiAgICAgICAgcmVncmVzc2lvbiBjYXVzZWQgSFRUUCAwLjkgcmVxdWVzdHMgdG8gZmFpbC4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KICA8c3Vic2VjdGlvbiBuYW1lPSJXZWJhcHBzIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40OTU4NTwvYnVnPjogVXBkYXRlIEpTVkMgZG9jdW1lbnRhdGlvbiB0byByZWZsZWN0IG5ldyBwYWNrYWdpbmcKICAgICAgICBvZiBDb21tb25zIERhZW1vbi4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQ5Nzc0PC9idWc+OiBBZGQgc3VwcG9ydCBmb3IgU1NMIHdpdGggZWl0aGVyIEpTU0Ugb3IgQVBSIGJhYWVkCiAgICAgICAgY29ubmVjdG9ycyB0byB0aGUgYWRtaW4gYXBwLiAobWFya3QpIAogICAgICA8L2ZpeD4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KICA8c3Vic2VjdGlvbiBuYW1lPSJDbHVzdGVyIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDxmaXg+CiAgICAgICAgQWRkIE51bGwgY2hlY2sgd2hlbiBDSEFOR0VfU0VTU0lPTl9JRCBtZXNzYWdlIHJlY2VpdmVkLiAoa2Z1amlubykKICAgICAgPC9maXg+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+PC9zZWN0aW9uPgo8c2VjdGlvbiBuYW1lPSJUb21jYXQgNS41LjMwIChqaW0pIiBydGV4dD0icmVsZWFzZWQgMjAxMC0wNy0wOSI+CiAgPHN1YnNlY3Rpb24gbmFtZT0iR2VuZXJhbCI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8dXBkYXRlPlVwZGF0ZSB0byBDb21tb25zIERhZW1vbiAxLjAuMi4gVXNlIHNlcnZpY2UgbGF1bmNoZXIgKHByb2NydW4pCiAgICAgIGZyb20gdGhlIENvbW1vbnMgRGFlbW9uIHJlbGVhc2UuIERvIG5vdCBrZWVwIGEgY29weSBvZiBpdCBpbiBvdXIgc291cmNlCiAgICAgIHRyZWUuIChtdHVyay9ra29saW5rbyk8L3VwZGF0ZT4KICAgICAgPHVwZGF0ZT4KICAgICAgICBVcGRhdGUgdG8gTlNJUyAyLjQ2LiAoa2tvbGlua28pCiAgICAgIDwvdXBkYXRlPgogICAgICA8dXBkYXRlPgogICAgICAgIFVwZGF0ZSB0byBBcGFjaGUgQ29tbW9ucyBEQkNQIDEuMy4gKG1hcmt0KQogICAgICA8L3VwZGF0ZT4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQ4ODQwPC9idWc+OiBTd2FsbG93IG91dHB1dCAoaWYgYW55KSBmcm9tIHVzZSBvZiBjZCB3aGVuIGRldGVybWluaW5nCiAgICAgICAgJENBVEFMSU5BX0hPTUUgaW4gY2F0YWxpbmEuc2ggYW5kIHRvb2wtd3JhcHBlci5zaCBzY3JpcHRzLiBCYXNlZCBvbiBwYXRjaAogICAgICAgIHByb3ZpZGVkIGJ5IG1kaWV0emUuIChtYXJrdC9ra29saW5rbykKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40OTIzNjwvYnVnPjogRG8gbm90IHVzZSBpbmRleGluZyB3aGVuIHBhY2tpbmcgVG9tY2F0IEpBUnMuCiAgICAgICAgKGtrb2xpbmtvKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQ4OTkwPC9idWc+OiBCdWlsZCB3aW5kb3dzIGRpc3RyaWJ1dGlvbnMgY29ycmVjdGx5IG9uIExpbnV4IGFuZAogICAgICAgIGFkZCBzdXBwb3J0IGZvciB0aGUgc2tpcC5pbnN0YWxsZXIgcHJvcGVydHkuIChra29saW5rbykKICAgICAgPC9maXg+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+CiAgPHN1YnNlY3Rpb24gbmFtZT0iQ2F0YWxpbmEiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPGZpeD4KICAgICAgICBGaXggQ1ZFLTIwMTAtMTE1Ny4gUHJldmVudCBwb3NzaWJsZSBkaXNjbG9zdXJlIG9mIGhvc3QgbmFtZSBvciBJUAogICAgICAgIGFkZHJlc3MgdmlhIHRoZSBIVFRQIFdXVy1BdXRoZW50aWNhdGUgaGVhZGVyIHdoZW4gdXNpbmcgQkFTSUMgb3IgRElHRVNUCiAgICAgICAgYXV0aGVudGljYXRpb24uIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40NDA0MTwvYnVnPiwgPGJ1Zz40ODY5NDwvYnVnPjogRml4IGR1cGxpY2F0ZSBjbGFzcyBkZWZpbml0aW9uCiAgICAgICAgdW5kZXIgbG9hZC4gQXZvaWQgcG9zc2libGUgZGVhZGxvY2sgaW4gY2xhc3MgbG9hZGluZy4KICAgICAgICAobWFya3Qva2tvbGlua28pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDc3NzQ8L2J1Zz46IEVuc3VyZSB3ZWIgYXBwbGljYXRpb24gY2xhc3MgbG9hZGVyIGlzIHVzZWQgd2hlbiAKICAgICAgICBjYWxsaW5nIHNlc3Npb24gbGlzdGVuZXJzLiAoa2Z1amlubykKICAgICAgPC9maXg+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgPGJ1Zz40ODE3OTwvYnVnPjogSW1wcm92ZSBlcnJvciBoYW5kbGluZyB3aGVuIHJlYWRpbmcgb3Igd3JpdGluZwogICAgICAgIFRMRCBjYWNoZSBmaWxlICgidGxkQ2FjaGUuc2VyIikuIChra29saW5rbykKICAgICAgPC91cGRhdGU+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40OTM5ODwvYnVnPjogQnl0ZUNodW5rLmluZGV4T2YoU3RyaW5nLCBpbnQsIGludCwgaW50KSBjb3VsZCBub3QKICAgICAgICBmaW5kIGEgc3RyaW5nIG9mIGxlbmd0aCAxLiAoa2tvbGlua28pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIEVuc3VyZSBhbGwgcmVxdWlyZWQgaTE4biBtZXNzYWdlcyBhcmUgcHJlc2VudCBmb3IgdGhlIEFQUi9uYXRpdmUKICAgICAgICBMaXN0ZW5lci4gKGtrb2xpbmtvKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICBGaXggcG9zc2libGUgb3ZlcmZsb3dzIHdoZW4gY2FsY3VsYXRpbmcgc2Vzc2lvbiBzdGF0aXN0aWNzLiAoa2tvbGlua28pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDk0MjQ8L2J1Zz46IEF2b2lkIE5QRSBpZiBjbGllbnQgcHJvdmlkZXMgbm8gZGF0YSB3aXRoIGEgY2h1bmtlZAogICAgICAgIFBPU1QgcmVxdWVzdC4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICBNaW5vciBjb2RlIGNsZWFudXAgaW4gQWNjZXNzTG9nVmFsdmUgYW5kIEZhc3RDb21tb25BY2Nlc3NMb2dWYWx2ZQogICAgICAgIGNsYXNzZXMuIChra29saW5rbykKICAgICAgPC9maXg+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+CiAgPHN1YnNlY3Rpb24gbmFtZT0iQ295b3RlIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDxmaXg+QXJyYW5nZSBmaWx0ZXIgbG9naWMuIChqZmNsZXJlKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQ4NjEzPC9idWc+OiBPbmx5IGF0dGVtcHQgQVBSL25hdGl2ZSBjb25uZWN0b3IgaW5pdGlhbGl6YXRpb24gaWYKICAgICAgICB0aGUgTGlzdGVuZXIgZWxlbWVudCBoYXMgYmVlbiBzcGVjaWZpZWQgaW4gc2VydmVyLnhtbC4gKGZoYW5pay9ra29saW5rbykKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40ODg0MzwvYnVnPjogUHJldmVudCBwb3NzaWJsZSBkZWFkbG9jayBhbmQgY29ycmVjdCBxdWV1ZSBoYW5kbGluZwogICAgICAgIGZvciB3b3JrZXIgYWxsb2NhdGlvbiBpbiBBUFIgY29ubmVjdG9ycy4gKGtrb2xpbmtvKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICBVc2UgY2h1bmtlZCBlbmNvZGluZyBmb3IgaHR0cCAxLjEgcmVzcG9uc2VzIHdpdGggbm8gY29udGVudC1sZW5ndGgKICAgICAgICAocmVnYXJkbGVzcyBvZiBrZWVwLWFsaXZlKSBzbyBjbGllbnQgY2FuIGRpZmZlcmVudGlhdGUgYmV0d2VlbiBjb21wbGV0ZQogICAgICAgIGFuZCBwYXJ0aWFsIHJlc3BvbnNlcy4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KICA8c3Vic2VjdGlvbiBuYW1lPSJKYXNwZXIiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQyMzkwPC9idWc+LCA8YnVnPjQ4NjE2PC9idWc+OiBGaXggY29tcGlsYXRpb24gZXJyb3Igd2l0aCBzb21lCiAgICAgICAgbmVzdGVkIHRhZyBmaWxlcyBhbmQgc2ltcGxlIHRhZ3MuIERvIG5vdCBkZWNsYXJlIG9yIHN5bmNocm9uaXplCiAgICAgICAgc2NyaXB0aW5nIHZhcmlhYmxlcyBmb3IgSlNQIGZyYWdtZW50cyBzaW5jZSB0aGV5IGFyZSBzY3JpcHRsZXNzLgogICAgICAgIChra29saW5rbykKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40Nzg3ODwvYnVnPjogUmV0dXJuICYjeDIwMUM7NDA0JiN4MjAxRDtzIHJhdGhlciB0aGFuIGEgcGVybWFuZW50CiAgICAgICAgJiN4MjAxQzs1MDAmI3gyMDFEOyBpZiBhIEpTUCBpcyBkZWxldGVkLiBNYWtlIHN1cmUgZmlyc3QgcmVzcG9uc2UgYWZ0ZXIKICAgICAgICBkZWxldGlvbiBpcyBjb3JyZWN0LiAobWFya3Qva2tvbGlua28pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDg3MDE8L2J1Zz46IEFkZCBhIHN5c3RlbSBwcm9wZXJ0eSB0byBhbGxvdyBkaXNhYmxpbmcgZW5mb3JjZW1lbnQKICAgICAgICBvZiBKU1AuNS4zLiBUaGUgc3BlY2lmaWNhdGlvbiByZWNvbW1lbmRzLCBidXQgZG9lcyBub3QgcmVxdWlyZSwgdGhpcwogICAgICAgIGVuZm9yY2VtZW50LiAoa2tvbGlua28pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDg1ODA8L2J1Zz46IFByZXZlbnQgQWNjZXNzQ29udHJvbEV4Y2VwdGlvbiB3aGVuIHJ1bm5pbmcgdW5kZXIgYQogICAgICAgIHNlY3VyaXR5IG1hbmFnZXIgaWYgdGhlIGZpcnN0IGFjY2VzcyBpcyB0byBhIEpTUCB0aGF0IHVzZXMgYQogICAgICAgIEZ1bmN0aW9uTWFwcGVyLiAobWFya3Qva2tvbGlua28pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDkxOTY8L2J1Zz46IEF2b2lkIE51bGxQb2ludGVyRXhjZXB0aW9uIGluCiAgICAgICAgUGFnZUNvbnRleHQuZ2V0RXJyb3JEYXRhKCkgaWYgYW4gZXJyb3ItaGFuZGxpbmcgSlNQIHBhZ2UgaXMgY2FsbGVkCiAgICAgICAgZGlyZWN0bHkuIChra29saW5rbykKICAgICAgPC9maXg+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+CiAgPHN1YnNlY3Rpb24gbmFtZT0iQ2x1c3RlciI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDg3MTc8L2J1Zz46IFdoZW4gYSBub2RlIGpvaW5zIGEgY2x1c3RlciBhbmQgaXQgcmVjZWl2ZXMgYWxsIHRoZQogICAgICAgIGN1cnJlbnQgc2Vzc2lvbnMsIGVuc3VyZSB0aGUgc2Vzc2lvbkNyZWF0ZWQgZXZlbnQgaXMgZmlyZWQgaWYgdGhlCiAgICAgICAgTWFuYWdlciBpcyBjb25maWd1cmVkIHRvIHJlcGxpY2F0ZSBzZXNzaW9uIGV2ZW50cy4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQ5MTcwPC9idWc+OiBEbyBub3Qgc2VuZCBkdXBsaWNhdGVkIHNlc3Npb24uIChrZnVqaW5vKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQ5NDQ1PC9idWc+OiBXaGVuIHNlc3Npb24gSUQgaXMgY2hhbmdlZCBhZnRlciBhdXRoZW50aWNhdGlvbiwKICAgICAgICBlbnN1cmUgdGhlIERlbHRhTWFuYWdlciByZXBsaWNhdGVzIHRoZSBjaGFuZ2UgaW4gSUQgdG8gdGhlIG90aGVyIG5vZGVzCiAgICAgICAgaW4gdGhlIGNsdXN0ZXIuIChrZnVqaW5vKQogICAgICA8L2ZpeD4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KICA8c3Vic2VjdGlvbiBuYW1lPSJXZWJhcHBzIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDxhZGQ+CiAgICAgICAgQmFja3BvcnQgZG9jdW1lbnRhdGlvbiBzdHlsZXNoZWV0IGltcHJvdmVtZW50cyBmcm9tIFRvbWNhdCA2OgogICAgICAgIHVzZSBDU1Mgc3R5bGVzIHRvIHByb3ZpZGUgcHJpbnRlci1mcmllbmRseSBsYXlvdXQsCiAgICAgICAgc3VwcG9ydCBnZW5lcmF0aW9uIG9mIFRPQyB0YWJsZXMsCiAgICAgICAgc3VwcG9ydCBsaW5rcyB0byByZXZpc2lvbiBudW1iZXJzLAogICAgICAgIHVzZSB1bmRlcnNjb3JlcyBpbnN0ZWFkIG9mIHNwYWNlcyBpbiBhbmNob3IgbmFtZXMuIChra29saW5rbykKICAgICAgPC9hZGQ+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+Cjwvc2VjdGlvbj4KPHNlY3Rpb24gbmFtZT0iVG9tY2F0IDUuNS4yOSAoZmhhbmlrKSIgcnRleHQ9InJlbGVhc2VkIDIwMTAtMDQtMjAiPgogIDxzdWJzZWN0aW9uIG5hbWU9IkdlbmVyYWwiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPGFkZD4KICAgICAgICA8YnVnPjM3ODQ3PC9idWc+OiBNYWtlIGxvY2F0aW9uIGFuZCBmaWxlbmFtZSBvZiBjYXRhbGluYS5vdXQgY29uZmlndXJhYmxlCiAgICAgICAgaW4gY2F0YWxpbmEuc2guIChmaGFuaWsva2tvbGlua28pCiAgICAgIDwvYWRkPgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDc2MDk8L2J1Zz46IFByb3ZpZGUgZmFpbC1zYWZlIEVPTCBjb252ZXJzaW9uIGZvciBidWlsZCBwcm9jZXNzLgogICAgICAgIChzZWJiL21hcmt0L2trb2xpbmtvKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQ3Njg5PC9idWc+OiBFbmFibGUgdGhlIHRlc3QgQW50IHRhcmdldCB0byB3b3JrLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDc3MTI8L2J1Zz46IExvYWRpbmcgdGNuYXRpdmUgd2FzIGJyb2tlbiBpbiA1LjUuMjguIChyanVuZykKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgQ29ycmVjdCBDVkUtMjAwOS0zNTQ4LiBXaGVuIGluc3RhbGxlZCB2aWEgdGhlIFdpbmRvd3MgaW5zdGFsbGVyIGFuZAogICAgICAgIHVzaW5nIGRlZmF1bHRzLCBkb24ndCBjcmVhdGUgYW4gYWRtaW5pc3RyYXRpdmUgdXNlciB3aXRoIGEgYmxhbmsKICAgICAgICBwYXNzd29yZC4gQWRkaXRpb25hbGx5LCB0aGUgYWRtaW5pc3RyYXRpdmUgdXNlciBpcyBvbmx5IGNyZWF0ZWQgaWYgdGhlCiAgICAgICAgbWFuYWdlciBvciBob3N0LW1hbmFnZXIgd2ViIGFwcGxpY2F0aW9ucyBhcmUgc2VsZWN0ZWQgZm9yIGluc3RhbGxhdGlvbi4KICAgICAgICAobWFya3Qva2tvbGlua28pCiAgICAgIDwvZml4PgogICAgICA8dXBkYXRlPgogICAgICAgIERlcHJlY2F0ZSB0aGUgam5pIEJ1ZmZlciBhbmQgVGhyZWFkIGNsYXNzZXMuIChyanVuZykKICAgICAgPC91cGRhdGU+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgSW5jbHVkZSAzMi1iaXQgYW5kIDY0LWJpdCB2ZXJzaW9ucyBvZiBUb21jYXQgTmF0aXZlIERMTHMgaW50byB0aGUKICAgICAgICBXaW5kb3dzIGluc3RhbGxlciwgaW5zdGVhZCBvZiBkb3dubG9hZGluZyB0aGVtIGZyb20gYSB3ZWIgc2l0ZSBkdXJpbmcKICAgICAgICBpbnN0YWxsLCBhbmQgYWxsb3cgaXQgdG8gYXV0b21hdGljYWxseSBzZWxlY3QgdGhlIGNvcnJlY3Qgb25lIGZvciB0aGUKICAgICAgICBjdXJyZW50IHBsYXRmb3JtLiAoa2tvbGlua28vbXR1cmspCiAgICAgIDwvdXBkYXRlPgogICAgICA8dXBkYXRlPgogICAgICAgIFVwZGF0ZSBXaW5kb3dzIGluc3RhbGxlciB0byB1c2UgTlNJUyAyLjQ1LiAoa2tvbGlua28pCiAgICAgIDwvdXBkYXRlPgogICAgICA8dXBkYXRlPgogICAgICAgIFVwZGF0ZSB0byBjb21tb25zLXBvb2wgMS41LjQuIFRoaXMgZml4ZXMgcmVncmVzc2lvbnMgaW4gMS41LjIuIChtYXJrdCkKICAgICAgPC91cGRhdGU+CiAgICAgIDxmaXg+CiAgICAgICAgQWxpZ24gc2VydmVyLnhtbCBpbnN0YWxsZWQgYnkgdGhlIFdpbmRvd3MgaW5zdGFsbGVyIHdpdGggdGhlIG9uZQogICAgICAgIGJ1bmRsZWQgaW4gemlwL3Rhci5neiBhcmNoaXZlcy4gKGtrb2xpbmtvKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICBFbmNvZGUgYWxsIHByb3BlcnR5IGZpbGVzIHVzaW5nIGFzY2lpIGVzY2FwZWQgVVRGLTguIChyanVuZykKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgQ29ycmVjdCBNRDUgZ2VuZXJhdGlvbiBpbiB0aGUgYnVpbGQgcHJvY2Vzcy4gKGtrb2xpbmtvKQogICAgICA8L2ZpeD4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KICA8c3Vic2VjdGlvbiBuYW1lPSJDYXRhbGluYSI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8Zml4PgogICAgICAgIDxidWc+Mzc4NDg8L2J1Zz46IFJlLWZpeC4gRG9uJ3QgZGlzcGxheSBpbmZvIG91dHB1dCB3aGVuIHRoZXJlIGlzIG5vCiAgICAgICAgdGVybWluYWwuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zOTIzMTwvYnVnPjogQ2FsbCBMb2dpbk1vZHVsZS5sb2dvdXQoKSB3aGVuIHVzaW5nIEpBQVNSZWFsbS4KICAgICAgICAobWFya3Qva2tvbGlua28pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+Mzk4NDQ8L2J1Zz46IEZpeCBOUEUgd2hlbiBwZXJmb3JtaW5nIGEgbm9uLUhUVFAgZm9yd2FyZC4KICAgICAgICAoYmlsbGJhcmtlcikKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40MTA1OTwvYnVnPjogUmVkdWNlIHRoZSBjaGFuY2VzIG9mIGVycm9ycyB3aGVuIHVzaW5nCiAgICAgICAgRU5BQkxFX0NMRUFSX1JFRkVSRU5DRVMuIFBhdGNoIGJ5IEN1cnQgQXJub2xkLiAobWFya3QpIAogICAgICA8L2ZpeD4KICAgICAgPGFkZD4KICAgICAgICA8YnVnPjQ1MjU1PC9idWc+OiBBZGQgdGhlIGFiaWxpdHkgdG8gY2hhbmdlIHNlc3Npb24gSUQgb24KICAgICAgICBhdXRoZW50aWNhdGlvbiB0byBwcm90ZWN0IGFnYWluc3Qgc2Vzc2lvbiBmaXhhdGlvbiBhdHRhY2tzLiBUaGlzIGlzCiAgICAgICAgZGlzYWJsZWQgYnkgZGVmYXVsdC4gKG1hcmt0L2trb2xpbmtvKQogICAgICA8L2FkZD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQ2OTY3PC9idWc+OiBCZXR0ZXIgaGFuZGxpbmcgb2YgZXJyb3JzIHdoZW4gdHJ5aW5nIHRvIHVzZQogICAgICAgIE1hbmFnZXIucmFuZG9tRmlsZS4gQmFzZWQgb24gYSBwYXRjaCBieSBLaXJrIFdvbGYuIChra29saW5rbykKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40NzUxODwvYnVnPjogQ29ycmVjdCByZWZlcmVuY2UgaW4gVmFsdmUgSmF2YWRvYyB0aGF0IHJlZmVycmVkIHRvIGFuCiAgICAgICAgb2xkIG1ldGhvZC4gUGF0Y2ggcHJvdmlkZWQgYnkgQ2hyaXN0b3BoZXIgU2NodWx0ei4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQ3NTM3PC9idWc+OiBSZXR1cm4gYW4gZXJyb3IgcGFnZSByYXRoZXIgdGhhbiBhIHplcm8gbGVuZ3RoIDIwMAogICAgICAgIHJlc3BvbnNlIGlmIHRoZSBmb3J3YXJkIHRvIHRoZSBsb2dpbiBvciBlcnJvciBwYWdlIGZhaWxzIGR1cmluZyBGT1JNCiAgICAgICAgYXV0aGVudGljYXRpb24uIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40NzcxODwvYnVnPjogRml4IGZpbGUgZGVzY3JpcHRvciBsZWFrIG9uIGNvbnRleHQgc3RvcC9yZWxvYWQuIFBhdGNoCiAgICAgICAgcHJvdmlkZWQgYnkgR2VvcmdlIFNleHRvbi4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQ3ODI2PC9idWc+OiBDb3JyZWN0IGVycm9yIGluIGRlYnVnIG1lc3NhZ2UgaW4KICAgICAgICBvcmcuYXBhY2hlLmNhdGFsaW5hLkJvb3RzdHJhcCAobWFya3QpCiAgICAgIDwvZml4PgogICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQ3OTYzPC9idWc+OiBFbnN1cmUgdGhhdCBhbnkgSFRUUCBzdGF0dXMgbWVzc2FnZXMgYXJlIGNvbXBsaWFudAogICAgICAgIHdpdGggUkZDMjYxNi4gKG1hcmt0L2trb2xpbmtvKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQ3OTk3PC9idWc+OiBFbmFibGUgdGhlIE5hbWluZ1Jlc291cmNlc01CZWFuIHRvIHdvcmsgd2l0aAogICAgICAgIG5vbi1TZXJ2ZXIgKGkuZS4gQ29udGV4dCkgY29udGFpbmVycy4gUGF0Y2ggcHJvdmlkZWQgYnkgTWljaGFlbCBBbGxtYW4uCiAgICAgICAgKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQ4MDA0PC9idWc+OiBBbGxvdyBhcHBsaWNhdGlvbnMgdG8gc2V0IHRoZSBTZXJ2ZXIgaGVhZGVyLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDgwMDc8L2J1Zz46IEltcHJvdmUgZXhjZXB0aW9uIHByb2Nlc3NpbmcgaW4KICAgICAgICBDdXN0b21PYmplY3RJbnB1dFN0cmVhbS4gKGtrb2xpbmtvKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQ4MDQ5PC9idWc+OiBGaXggY29weSBhbmQgcGFzdGUgZXJyb3Igc28KICAgICAgICA8Y29kZT5OYW1pbmdDb250ZXh0LmRlc3Ryb3lTdWJDb250ZXh0KCk8L2NvZGU+IHdvcmtzIGNvcnJlY3RseS4KICAgICAgICBQYXRjaCBwcm92aWRlZCBieSBnaW5neWFuZy54dSAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8dXBkYXRlPgogICAgICAgIDxidWc+NDgwOTc8L2J1Zz46IE1ha2UgV2ViYXBwQ2xhc3NMb2FkZXIgdG8gZG8gbm90IHN3YWxsb3cKICAgICAgICBBY2Nlc3NDb250cm9sRXhjZXB0aW9uLiAoa2tvbGlua28pCiAgICAgIDwvdXBkYXRlPgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDgwOTc8L2J1Zz46IEF2b2lkIHRocm93aW5nIGFuIEFjY2Vzc0NvbnRyb2xFeGNlcHRpb24gd2hpY2ggY2FuCiAgICAgICAgbGVhZCB0byBhIE5vQ2xhc3NEZWZGb3VuZEVycm9yIG9uIGZpcnN0IGFjY2VzcyBvZiBmaXJzdCBqc3AuCiAgICAgICAgKGtrb2xpbmtvL21hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQ4MzIyPC9idWc+OiBTaW5nbGUgcXVvdGUgY2hhcmFjdGVycyBhcmUgbm90IEhUVFAgc2VwYXJhdG9ycyBhbmQKICAgICAgICBzaG91bGQgbm90IGJlIHRyZWF0ZWQgYXMgc3VjaCBpbiB0aGUgY29va2llIGhhbmRsaW5nLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8YWRkPgogICAgICAgIFByb3ZpZGUgYW4gb3B0aW9uIHRvIGFsbG93IHRoZSB1c2Ugb2YgZXF1YWxzIGNoYXJhY3RlcnMgaW4gY29va2llCiAgICAgICAgdmFsdWVzLiAobWFya3QpCiAgICAgIDwvYWRkPgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDg1MTY8L2J1Zz46IFByZXZlbnQgTlBFIGluIEpORElSZWFsbSBpZiByZXF1ZXN0ZWQgdXNlciBkb2VzIG5vdAogICAgICAgIGV4aXN0LiBQYXRjaCBwcm92aWRlZCBieSBLZXZpbiBDb25hd2F5LiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDg1Nzc8L2J1Zz46IEZpbHRlciBVUkwgd2hlbiBkaXNwbGF5aW5nIG1pc3NpbmcgaW5jbHVkZWQgcGFnZS4KICAgICAgICAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDg3NjA8L2J1Zz46IFJlbW92ZSByYWNlIGNvbmRpdGlvbiB0aGF0IGNhbiByZXN1bHQgaW4gbXVsdGlwbGUKICAgICAgICB0aHJlYWRzIHRyeWluZyB0byB1c2UgdGhlIHNhbWUgSW5wdXRTdHJlYW0uIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgQWRkIGFuIGFkZGl0aW9uYWwgcGVybWlzc2lvbiByZXF1aXJlZCBieSBKVUxJIHdoZW4gcnVubmluZyB1bmRlciBuZXdlcgogICAgICAgIEpES3MgYW5kIGEgc2VjdXJpdHkgbWFuYWdlci4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICBDbG9zZSByZXNvdXJjZSBzdHJlYW0gaW4gV2ViYXBwQ2xhc3NMb2FkZXIgYWZ0ZXIgcmVhZCBlcnJvci4gKHBlcm8pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIERvIG5vdCBzd2FsbG93IGV4Y2VwdGlvbnMgaW4gQXBwbGljYXRpb25Db250ZXh0RmFjYWRlLmRvUHJpdmlsZWdlZCgpCiAgICAgICAgKGtrb2xpbmtvKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICBWYXJpb3VzIHJlbGF0ZWQgKHVuKWRlcGxveSBpbXByb3ZlbWVudHMgaW5jbHVkaW5nOiBiZXR0ZXIgaGFuZGxpbmcgb2YKICAgICAgICBmYWlsZWQgKHVuKWRlcGxveW1lbnQ7IGFkZGluZyBjaGVja2luZyBmb3IgaW52YWxpZCB6aXAgZmlsZSBlbnRyaWVzIHRoYXQKICAgICAgICBkb24ndCBtYWtlIHNlbnNlIGluIGEgV0FSIGZpbGU7IGFuZCBpbXByb3ZlZCB2YWxpZGF0aW9uIG9mIFdBUiBmaWxlCiAgICAgICAgbmFtZXMuIFRoZXNlIGNoYW5nZXMgYWRkcmVzcyBDVkUtMjAwOS0yNjkzLCBDVkUtMjAwOS0yOTAxIGFuZAogICAgICAgIENWRS0yMDA5LTI5MDIuCiAgICAgIDwvZml4PgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgogIDxzdWJzZWN0aW9uIG5hbWU9IkNveW90ZSI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDMzMjc8L2J1Zz46IEFsbG93IEFQUi9uYXRpdmUgY29ubmVjdG9yIHRvIHdvcmsgY29ycmVjdGx5IG9uCiAgICAgICAgc3lzdGVtcyB3aGVuIElQdjYgaXMgZW5hYmxlZC4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQ2OTUwPC9idWc+OiBTdXBwb3J0IFNTTCByZW5lZ290aWF0aW9uIHdpdGggQVBSL25hdGl2ZSBjb25uZWN0b3IuCiAgICAgICAgTm90ZSB0aGF0IHRoaXMgcmVxdWlyZXMgQVBSL25hdGl2ZSAxLjEuMTcgb3IgbGF0ZXIuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40NzIyNTwvYnVnPjogRml4IGVycm9yIGluIGNhbGN1bGF0aW9uIG9mIGEgYnVmZmVyIGxlbmd0aCBpbiB0aGUKICAgICAgICBtYXBwZXIuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40Nzc0NDwvYnVnPjogUHJldmVudCBhIG1lZGl1bSB0ZXJtIG1lbW9yeSBsZWFrIGlmIHVzaW5nIFNTbCB3aXRoCiAgICAgICAgdGhlIEpTU0UgcHJvdmlkZXIgYW5kIGFsc28gdXNpbmcgYSBzZWN1cml0eSBtYW5hZ2VyLiBCYXNlZCBvbiBhIHBhdGNoIGJ5CiAgICAgICAgR3JlZyBWYW5vcmUuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40Nzk4NzwvYnVnPjogTGltaXQgc2l6ZSBvZiBub3QgZm91bmQgcmVzb3VyY2VzIGNhY2hlLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDgxMDk8L2J1Zz46IEVuc3VyZSBJbnB1dFN0cmVhbSBpcyBjbG9zZWQgaW4gV2ViYXBwQ2xhc3NMb2FkZXIKICAgICAgICBvbiBlcnJvciBjb25kaXRpb25zLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDgzMTE8L2J1Zz46IEFQUiBzaG91bGQgbm90IGJlIGluaXRpYWxpc2VkIGlmIHRoZSBBUFIgbGlmZS1jeWNsZQogICAgICAgIGxpc3RlbmVyIGlzIG5vdCBlbmFibGVkLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDg1ODE8L2J1Zz46IEF2b2lkIHNlY3VyaXR5IGV4Y2VwdGlvbiBvbiBmaXJzdCBhY2Nlc3MuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40ODU4NDwvYnVnPjogUHJldmVudCB0aGUgQVBSIGNvbm5lY3RvciBsb2dnaW5nIGFuIGVycm9yIGlmIHRoZQogICAgICAgIGFjY2VwdG9yIGZhaWxzIGR1cmluZyBzaHV0ZG93biBzaW5jZSB0aGlzIGlzIGV4cGVjdGVkLiAobXR1cmspIAogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICBDVkUtMjAwOS0zNTU1LiBQcm92aWRlIG9wdGlvbiB0byBkaXNhYmxlIGxlZ2FjeSBTU0wgcmVuZWdvdGlhdGlvbi4KICAgICAgICAobWFya3QvY29zdGluKSAKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgRml4IFdpbmRvd3MgaW5zdGFsbGVyIHRvIGJ1bmRsZSBhbiB1cC10by1kYXRlIHZlcnNpb24gb2YgbmF0aXZlL0FQUiB3aXRoCiAgICAgICAgaXQuIFdoZW4gYXNrZWQgdG8gaW5zdGFsbCBUQy1OYXRpdmUgaXQgd2FzIGRvd25sb2FkaW5nIHNvbWUgdmVyeSBvbGQgKDEuMS40KQogICAgICAgIHZlcnNpb24gb2YgaXQgZnJvbSB0aGUgSEVBbmV0IHNpdGUuIChra29saW5rbykKICAgICAgPC9maXg+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgVXBkYXRlIHRoZSBuYXRpdmUvQVBSIGxpYnJhcnkgdmVyc2lvbiBidW5kbGVkIHdpdGggVG9tY2F0IHRvIDEuMS4yMC4KICAgICAgICAoa2tvbGlua28pIAogICAgICA8L3VwZGF0ZT4KICAgICAgPHVwZGF0ZT4KICAgICAgICBVcGRhdGUgcmVjb21tZW5kZWQgdmVyc2lvbiBmb3IgbmF0aXZlIHRvIDEuMS4xOS4gKHJqdW5nKQogICAgICA8L3VwZGF0ZT4KICAgICAgPGZpeD4KICAgICAgICBSZW1vdmUgdW5uZWVkZWQgbGluZSBmcm9tIHRoZSBtZXRob2QgdGhhdCBub3JtYWxpemVzIGRlY29kZWRVUkkuCiAgICAgICAgKGtrb2xpbmtvKQogICAgICA8L2ZpeD4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KICA8c3Vic2VjdGlvbiBuYW1lPSJKYXNwZXIiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM4Nzk3PC9idWc+OiBGaXggcmVncmVzc2lvbiBpbiBwcmV2aW91cyBmaXggZm9yIHRoaXMgYnVnLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDE2NjE8L2J1Zz46IEZpeCB0aHJlYWQgc2FmZXR5IGlzc3VlIGluIEpzcENvbmZpZy5pbml0KCkgKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQxODI0PC9idWc+OiBOZWVkIHRvIHVzZSBjYW5vbmljYWwgcmF0aGVyIHRoYW4gYmluYXJ5IGZvcm0gd2hlbgogICAgICAgIHdyaXRpbmcgY29kZS4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQ2OTA3PC9idWc+OiBEb24ndCBzd2FsbG93IGlucHV0IHN0cmVhbSB3aGVuIGRlYnVnIGxvZ2dpbmcgaXMKICAgICAgICBlbmFibGVkLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDg1ODI8L2J1Zz46IEF2b2lkIE5QRSBvbiBiYWNrZ3JvdW5kIGNvbXBpbGUuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+CiAgPHN1YnNlY3Rpb24gbmFtZT0iQ2x1c3RlciI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8Zml4PgogICAgICAgIERlbHRhTWFuYWdlciBuZWVkcyB0byByZXBsaWNhdGUgY2hhbmdlZCBhdHRyaWJ1dGVzIGV2ZW4gaWYgc2Vzc2lvbgogICAgICAgIGdldHMgaW52YWxpZGF0ZWQuIE90aGVyd2lzZSBzZXNzaW9uIGxpc3RlbmVycyB3aWxsIG5vdCBzZWUgdGhlIHJpZ2h0CiAgICAgICAgZGF0YSBvbiB0aGUgc2Vjb25kYXJ5IG5vZGVzLiAocmp1bmcpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIFJlbW92ZSB1bm5lY2Vzc2FyeSBKYXZhNSBkZXBlbmRlbmNpZXMuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40NjM4NDwvYnVnPjogQ29ycmVjdCBzeW5jaHJvbmlzYXRpb24gaXNzdWUgdGhhdCBjb3VsZCBsZWFkIHRvIGEKICAgICAgICBjbHVzdGVyIG1lbWJlciBkaXNhcHBlcmluZyBwZXJtYW5lbnRseS4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQ3NTU0PC9idWc+OiBJbmNsdWRlIGh0dHBPbmx5IGF0dHJpYnV0ZSB3aGVuIHJlLXdyaXRpbmcgc2Vzc2lvbgogICAgICAgIGNvb2tpZSBhZnRlciBmYWlsIG92ZXIuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+CiAgPHN1YnNlY3Rpb24gbmFtZT0iV2ViYXBwcyI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDE1NjQ8L2J1Zz46IEFkZCBzb21lIGluZm9ybWF0aW9uIG9uIGluc3RhbGxpbmcgVG9tY2F0IGFzIGEgc2VydmljZQogICAgICAgIG9uIG9wZXJhdGluZyBzeXN0ZW1zIHdpdGggVXNlciBBY2NvdW50IENvbnRyb2wsIGUuZy4gVmlzdGEuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40NzY1NjwvYnVnPjogQWRkIGluZm9ybWF0aW9uIHRvIGRvY3VtZW50YXRpb24gb24gc3lzdGVtIHByb3BlcnR5CiAgICAgICAgcmVwbGFjZW1lbnQgaW4gY29uZmlndXJhdGlvbiBmaWxlcy4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQ3NzY5PC9idWc+OiBDbGFyaWZ5IHRoZSBKTkRJIGRvY3Mgd2l0aCByZXBlY3QgdG8gdXNlIG9mCiAgICAgICAgJmx0O3Jlc291cmNlLXJlZiZndDsgYW5kIHJlbGF0ZWQgZWxlbWVudHMsIHNwZWNpZmljYWxseSB3aGVuIHRoZXkgYXJlCiAgICAgICAgcmVxdWlyZWQgYW5kIHdoZW4gdGhleSBtYXkgYmUgb21pdHRlZC4gKG1hcmt0KSAKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40ODM4MTwvYnVnPjogQWRkIGluZm9ybWF0aW9uIG9uIGhvdyBUb21jYXQgdHJlYXRzIGhvc3QgbmFtZXMgdG8gdGhlCiAgICAgICAgaG9zdCBjb25maWd1cmF0aW9uIGRvY3VtZW50YXRpb24uIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxhZGQ+CiAgICAgICAgPGJ1Zz40ODUzMDwvYnVnPjogQWRkIGluZm9ybWF0aW9uIG9uIHRoZSBNYW5hZ2VyIFNlcnZlciBTdGF0dXMgcGFnZSB0bwogICAgICAgIHRoZSBNYW5hZ2VyIEhvdy1UbyBpbiB0aGUgZG9jdW1lbnRhdGlvbiB3ZWJhcHAuIEJhc2VkIG9uIGEgcGF0Y2ggYnkKICAgICAgICBBcm5hdWQgRXNweS4gKG1hcmt0KQogICAgICA8L2FkZD4KICAgICAgPGFkZD4KICAgICAgICA8YnVnPjQ4NTMyPC9idWc+OiBBZGQgaW5mb3JtYXRpb24gdG8gdGhlIEJJTy9OSU8gU1NMIGNvbmZpZ3VyYXRpb24gcGFnZQogICAgICAgIGluIHRoZSBkb2N1bWVudGF0aW9uIHdlYiBhcHBsaWNhdGlvbiB0byBzcGVjaWZ5IGhvdyB0aGUgZGVmYXVsdHMgZm9yIHRoZQogICAgICAgIHZhcmlvdXMgdHJ1c3Qgc3RvcmUgYXR0cmlidXRlcyBhcmUgZGV0ZXJtaW5lZC4gKG1hcmt0KQogICAgICA8L2FkZD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQ4Njg2PC9idWc+OiBGaXggZGVsZXRpbmcgYSBob3N0IHZpYSB0aGUgQWRtaW5pc3RyYXRpb24gd2ViCiAgICAgICAgYXBwbGljYXRpb24gcmF0aGVyIHRoYW4gZmFpbGlnbiB3aXRoIGEgSFRUUCA1MDAgcmVzcG9uc2UuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxhZGQ+CiAgICAgICAgTWFrZSBjaGFuZ2Vsb2cueG1sIGJlIGRpcmVjdGx5IHJlbmRlcmVkIGFzIEhUTUwgYnkgY2VydGFpbiBicm93c2Vycy4KICAgICAgICAoa2tvbGlua28pCiAgICAgIDwvYWRkPgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgo8L3NlY3Rpb24+CjxzZWN0aW9uIG5hbWU9IlRvbWNhdCA1LjUuMjggKGZoYW5paykiIHJ0ZXh0PSJyZWxlYXNlZCAyMDA5LTA5LTA0Ij4KICA8c3Vic2VjdGlvbiBuYW1lPSJHZW5lcmFsIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zOTE5NDwvYnVnPjogTWFrZSB0aGUgc2V0dGluZyBvZiB0aGUgY2xhc3NwYXRoIGNvbnNpc3RlbnQgZm9yIHRoZQogICAgICAgIC5zaCBhbmQgLmJhdCBzdGFydHVwIHNjcmlwdHMuIChtYXJrdC9ra29saW5rbykgCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDU4ODA8L2J1Zz46IEluY2x1ZGUgTk9USUNFIGZpbGUgaW4gV2luZG93cyBpbnN0YWxsZXIgYW5kIG1ha2Ugc3VyZQogICAgICAgIHNyYyBmaWxlcyBhcmUgZXhjbHVkZWQuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgVXBkYXRlIHRvIE5TSVMgMi40NCAoa2tvbGlua28pCiAgICAgIDwvdXBkYXRlPgogICAgICA8dXBkYXRlPgogICAgICAgIEJ1aWxkIHNjcmlwdHM6IFVzZSBkaWZmZXJlbnQgdmFsdWVzIGZvciAke3RvbWNhdC1kYmNwLmhvbWV9IGFuZAogICAgICAgICR7amFzcGVyLWNvbXBpbGVyLWpkdC5ob21lfSBpbiB0b21jYXQtZGVwcy4gRml4IGRvd25sb2FkIHRhc2sKICAgICAgICBjaGVja3MgZm9yIGNvbW1vbnMtcG9vbCBhbmQgY29tbW9ucy1kYmNwLiAoa2tvbGlua28pCiAgICAgIDwvdXBkYXRlPgogICAgICA8YWRkPgogICAgICAgIEFkZCB0aGUgNjQtYml0IHdpbmRvd3Mgc2VydmljZSBiaW5hcmllcyB0byB0aGUgZGlzdHJpYnV0aW9uIGFuZCBnZXQgdGhlCiAgICAgICAgV2luZG93cyBpbnN0YWxsZXIgdG8gYXV0b21hdGljYWxseSBzZWxlY3QgdGhlIGNvcnJlY3Qgb25lIGZvciB0aGUKICAgICAgICBjdXJyZW50IHBsYXRmb3JtLiAobWFya3Qva2tvbGlua28pCiAgICAgIDwvYWRkPgogICAgICA8dXBkYXRlPgogICAgICAgIFVwZGF0ZSB0byBjb21tb25zLXBvb2wgMS41LjIuIFRoaXMgaW5jbHVkZXMgdmFyaW91cyBmaXhlcyB0byBwcmV2ZW50CiAgICAgICAgZGVhZGxvY2tzLCByZWR1Y2Ugc3luY3MgYW5kIG1ha2Ugb2JqZWN0IGFsbG9jYXRpb24gb2NjdXIgZmFpcmx5IC0gaS5lLgogICAgICAgIG9iamVjdHMgYXJlIGFsbG9jYXRlZCB0byB0aHJlYWRzIGluIHRoZSBvcmRlciB0aGF0IHRoZSB0aHJlYWRzIHJlcXVlc3QKICAgICAgICB0aGVtLiBUaGlzIGZpeGVzIGEgbnVtYmVyIG9mIGlzc3VlcyB3aXRoIHRoZSB2ZXJzaW9uIG9mIERCQ1AgZW1iZWRkZWQKICAgICAgICB3aXRoaW4gVG9tY2F0LiAobWFya3QpCiAgICAgIDwvdXBkYXRlPgogICAgICA8dXBkYXRlPgogICAgICAgIFVwZGF0ZSBUb21jYXQgV2luZG93cyBzZXJ2aWNlIGFwcGxpY2F0aW9uIChwcm9jcnVuKSB0byB2ZXJzaW9uIDIuMC41LgogICAgICAgIEl0IGNvbnRhaW5zIGEgZml4IGZvciBpc3N1ZSA8YnVnPjQxNTM4PC9idWc+IChtdHVyaykKICAgICAgPC91cGRhdGU+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40NzE0OTwvYnVnPjogRXhwbGljaXRseSBzcGVjaWZ5IGVuY29kaW5nIHdoZW4gcGVyZm9ybWluZyBmaWx0ZXJpbmcKICAgICAgICBkdXJpbmcgY29weSwgZml4Y3JsZiBvciByZXBsYWNlIG9wZXJhdGlvbnMgaW4gYnVpbGQgc2NyaXB0cy4gRG9uJ3QgYWRkCiAgICAgICAgYmxhbmsgbGluZXMgdG8gZmlsZXMgd2hlbiBmaXhpbmcgbGluZSBlbmRpbmdzLiBFeHBsaWNpdGx5IHNwZWNpZnkKICAgICAgICBlbmNvZGluZyB3aGVuIGNvbXBpbGluZy4gKGtrb2xpbmtvKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQ3NDY0PC9idWc+OiBTb21lIGNsYXNzIGZpbGVzIHdlcmUgYWNjaWRlbnRhbGx5IGluY2x1ZGVkIGludG8gdGhlCiAgICAgICAgc291cmNlIGRpc3RyaWJ1dGlvbnMgb2YgVEMgNS41LjI3LiAoa2tvbGlua28pCiAgICAgIDwvZml4PgogICAgICA8ZG9jcz4KICAgICAgICBEb2N1bWVudCB0aGF0IGJ1aWxkaW5nIFRvbWNhdCByZXF1aXJlcyBBbnQgMS42LjIgb3IgbGF0ZXIuIChra29saW5rbykKICAgICAgPC9kb2NzPgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgogIDxzdWJzZWN0aW9uIG5hbWU9IkNhdGFsaW5hIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zNzQ1ODwvYnVnPjogRml4IHN5bmMgZXJyb3IgdGhhdCBtYXkgbGVhZCB0byBOUEUgaW4gcmFyZQogICAgICAgIGNpcmN1bXN0YW5jZXMuIFBhdGNoIGJ5IEtvbnN0YW50aW4gS29saW5rby4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM3NDk4PC9idWc+OiBGYWxsIGJhY2sgdG8gY29udGFpbmVyIGxvZyBpZiBhcHBsaWNhdGlvbiBsb2cgaXMKICAgICAgICB1bmF2YWlsYWJsZSBkdXJpbmcgY29udGV4dCBkZXN0cnVjdGlvbi4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM3Nzk0PC9idWc+OiBIYW5kbGUgUE9TVGVkIHBhcmFtZXRlcnMgd2hlbiBzZW50IHdpdGggY2h1bmtlZAogICAgICAgIGVuY29kaW5nLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+Mzc5ODQ8L2J1Zz46IFN0cmlwIHtNRDV9IGFzIHdlbGwgYXMge1NIQX0gaWYgcHJlc2VudCBpbiBkaWdlc3QKICAgICAgICBwYXNzd29yZHMgaW4gTERBUCBkaXJlY3Rvcmllcy4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM4NTUzPC9idWc+OiBBIGxhY2sgb2YgY2VydGlmaWNhdGVzIGlzIG5vcm1hbCBpZiBhIHVzZXIgZG9lc24ndAogICAgICAgIGhhdmUgYSBjZXJ0aWZpY2F0ZS4gUmV0dXJuIGEgNDAxIHJhdGhlciB0aGFuIGEgNDAwIGluIHRoaXMgY2FzZS4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM4NTcwPC9idWc+OiBXaGVuIGNoZWNraW5nIGRvY0Jhc2UgYWdhaW5zdCBhcHBCYXNlLCBtYWtlIHN1cmUgd2UKICAgICAgICBjaGVjayBmb3IgYW4gZXhhY3QgbWF0Y2ggYWdhaW5zdCB0aGUgYXBwQmFzZS4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM5MDEzPC9idWc+OiBXaGVuIHRlc3RpbmcgZm9yIGFuIGludmFsaWQgZG9jQmFzZSwgdXNlIGFuIGV4YWN0CiAgICAgICAgbWF0Y2ggZm9yIHRoZSBhcHBCYXNlLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzkzOTY8L2J1Zz46IE9ubHkgaW5jbHVkZSBUUkFDRSBpbiBhbiBPUFRJT05TIHJlc3BvbnNlIGlmIHdlIGtub3cKICAgICAgICBpdCBoYXMgYmVlbiBlbmFibGVkLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIFJlbW92ZSB3cm9uZyAiTm8gcm9sZSBmb3VuZCIgcmVhbG0gZGVidWcgbG9nIG1lc3NhZ2UsCiAgICAgICAgZXZlbiBpZiBhIHJvbGUgd2FzIGZvdW5kLiAocmp1bmcpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+Mzk5OTc8L2J1Zz46IEFkZCB0aGUgU1NMUmFuZG9tU2VlZCBvcHRpb24gdG8gdGhlCiAgICAgICAgQXByTGlmZWN5Y2xlTGlzdGVuZXIgdG8gZW5hYmxlIGZhc3RlciBzdGFydHMgb24gZGV2ZWxvcG1lbnQgc3lzdGVtcy4KICAgICAgICAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDAzODA8L2J1Zz46IEZpeCBwb3RlbnRpYWwgc3luY2hyb25pemF0aW9uIGlzc3VlIGluCiAgICAgICAgU3RhbmRhcmRTZXNzaW9uLmV4cGlyZSgpLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDE0MDc8L2J1Zz46IEpBQVMgUmVhbG0gbm93IHdvcmtzIHdpdGggQ0xJRU5ULUNFUlQgYXV0aGVudGljYXRpb24uCiAgICAgICAgKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGFkZD4KICAgICAgICA8YnVnPjQyNDE5PC9idWc+OiBBZGQgYSBzeXN0ZW0gcHJvcGVydHkgdGhhdCBlbmFibGVzIHRoZSBuYW1lIG9mIHRoZQogICAgICAgIHNlc3Npb24gY29va2llIGFuZCBzZXNzaW9uIHBhdGggcGFyYW1ldGVyIHRvIGJlIGNvbmZpZ3VyZWQuIChtYXJrdCkKICAgICAgPC9hZGQ+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40MjU3OTwvYnVnPjogU3VwcG9ydCBib3RoIHJlbGF0aXZlIGFuZCBhYnNvbHV0ZSBzZWFyY2ggcmVzdWx0cyBpbgogICAgICAgIHRoZSBKTkRJIFJlYWxtIGltcGxlbWVudGF0aW9uLiBQYXRjaCBwcm92aWRlZCBieSBCcmFuZG9uIER1UmV0dGUuCiAgICAgICAgKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQyNzA3PC9idWc+OiBNYWtlIGFkZGluZyBhIGhvc3QgYWxpYXMgdmlhIEpNWCB0YWtlIGVmZmVjdAogICAgICAgIGltbWVkaWF0ZWx5LiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDMzNDM8L2J1Zz46IENvcnJlY3RseSBoYW5kbGUgcmVxdWVzdGluZyBhIHNlc3Npb24gd2UgYXJlIGluIHRoZQogICAgICAgIG1pZGRsZSBvZiBwZXJzaXN0aW5nLiBCYXNlZCBvbiBhIHN1Z2dlc3Rpb24gYnkgV2FkZSBDaGFuZGxlci4KICAgICAgICAobWFya3Qva2tvbGlua28pCiAgICAgIDwvZml4PgogICAgICA8YWRkPgogICAgICAgICA8YnVnPjQ0MzgyPC9idWc+OiBBZGQgc3VwcG9ydCBmb3IgdXNpbmcgaHR0cE9ubHkgZm9yIHNlc3Npb24gY29va2llcy4KICAgICAgICAgVGhpcyBpcyBkaXNhYmxlZCBieSBkZWZhdWx0LiAobWFya3QvZmhhbmlrKQogICAgICA8L2FkZD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQ1NTc2PC9idWc+OiBKQUFTIFJlYWxtIG5vdyB3b3JrcyB3aXRoIERJR0VTVCBhdXRoZW50aWNhdGlvbi4KICAgICAgICAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDU2Mjg8L2J1Zz46IEpBUnMgdGhhdCBkbyBub3QgZGVjbGFyZSBhbnkgZGVwZW5kZW5jaWVzIHNob3VsZAogICAgICAgIGFsd2F5cyBiZSBjb25zaWRlcmVkIGFzIGZ1bGZpbGxlZC4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQ1OTMzPC9idWc+OiBEb24ndCB1c2UgYSB3ZWIgYXBwbGljYXRpb24gcHJvdmlkZWQgcGFyc2VyIHRvIHByb2Nlc3MKICAgICAgICBUTEQgZmlsZXMuIChtYXJrdCkgCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDU5OTY8L2J1Zz46IEFkZCBBY2NlcHQtUmFuZ2VzIGhlYWRlciB0byByZXNwb25zZXMgZnJvbSB0aGUKICAgICAgICBEZWZhdWx0U2VydmxldCB3aXRoIGFuIG9wdGlvbiB0byBkaXNhYmxlIGl0LiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDYxMDU8L2J1Zz46IENvcnJlY3RseSBzZXQgVVJJIGVuY29kaW5nIHdoZW4gcmVwbGF5aW5nIGEgcmVxdWVzdAogICAgICAgIGFmdGVyIEZPUk0gYXV0aGVudGljYXRpb24uIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40NjQwODwvYnVnPjogQ29ycmVjdCBwb3NzaWJsZSBpbnZhbGlkIGNhc2UgaW4gU2VjdXJpdHlVdGlsLiAobWFya3QpIAogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQ2NTUyPC9idWc+OiBSZXR1cm4gYSA0MDAgcmVzcG9uc2UgcmF0aGVyIHRoYW4gYSAyMDAgcmVzcG9uc2UgaWYKICAgICAgICB0aGUgcmVxdWVzdCBoZWFkZXJzIGFyZSB0b28gbGFyZ2UuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40NjU5NzwvYnVnPjogUG9ydCBhbGwgY29va2llIGhhbmRsaW5nIGNoYW5nZXMgZnJvbSBUb21jYXQgNi4wLnguCiAgICAgICAgKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQ2NjA2PC9idWc+OiBNYWtlIG1heCBkZXB0aCBsaW1pdCBmb3IgV2ViREFWIHNlcnZsZXQgY29uZmlndXJhYmxlLgogICAgICAgIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40NjcxNzwvYnVnPjogRml4IGhhcmQgdG8gcmVwcm9kdWNlIHRocmVhZCBzYWZldHkgaXNzdWUgd2l0aCBzZXNzaW9uCiAgICAgICAgZXhwaXJhdGlvbi4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQ2OTgyPC9idWc+OiBGaXggRFNUIHByb2JsZW0gd2l0aCBBY2Nlc3NMb2dWYWx2ZS4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICBJbXByb3ZlIGhhbmRsaW5nIG9mIHNpdHVhdGlvbiB3aGVyZSB3ZWIgYXBwbGljYXRpb24gdHJpZXMgdG8gY29uZmlndXJlCiAgICAgICAgbG9nZ2luZyBhdCB0aGUgY29udGV4dCBsZXZlbCBidXQgdGhlIHNlY3VyaXR5IHBvbGljeSBwcmV2ZW50cyB0aGlzLgogICAgICAgIChtYXJrdC9yanVuZykKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgRml4IGFuIGluZm9ybWF0aW9uIGRpc2Nsb3N1cmUgdnVsbmVyYWJpbGl0eSBpbiBhIG51bWJlciBvZiB0aGUgUmVhbG1zCiAgICAgICAgdGhhdCBhbGxvd2VkIHVzZXIgZW51bWVyYXRpb24gd2hlbiB1c2luZyBGT1JNIGF1dGhlbnRpY2F0aW9uLiBUaGlzIGlzCiAgICAgICAgQ1ZFLTIwMDktMDU4MC4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICBGaXggdmFyaW91cyBXZWJEQVYgY29tcGxpYW5jZSBpc3N1ZXMgaWRlbnRpZmllZCBieSB0aGUgTGl0bXVzIHRlc3QKICAgICAgICBzdWl0ZS4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICBVc2UgYSBiZXR0ZXIgZGVmYXVsdCAod2ViYXBwcykgZm9yIGEgSG9zdCdzIGFwcEJhc2UuIChpZGFyd2luL21hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQ0OTQzPC9idWc+OiBSZWR1Y2UgY29weS9wYXN0ZSBpc3N1ZXMgY2F1c2VkIGJ5IGRpZmZlcmVudCBlbmdpbmUKICAgICAgICBuYW1lcyBpbiBzZXJ2ZXIueG1sLiAobWFya3QsIGtrb2xpbmtvKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICBSZW1vdmUgb2Jzb2xldGUgY2xhc3NwYXRoIGVudHJ5IGZvciBjb21tb25zLWxvZ2dpbmcgZnJvbSBzdGFydCBzY3JpcHQuCiAgICAgICAgSXQgaXMgYWxyZWFkeSBwcmVzZW50IGluIHRoZSBjbGFzc3BhdGggc2V0IGJ5IHRoZSBtYW5pZmVzdCBpbiBib290c3RyYXAuamFyLgogICAgICAgIChyanVuZykKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zODQ4MzwvYnVnPjogVGhyZWFkIHNhZmV0eSBpc3N1ZXMgaW4gQWNjZXNzTG9nVmFsdmUgY2xhc3Nlcy4gKGtrb2xpbmtvKQogICAgICA8L2ZpeD4KICAgICAgPGFkZD4KICAgICAgICBBbGxvdyBsb2cgZmlsZSBlbmNvZGluZyB0byBiZSBjb25maWd1cmVkIGZvciBKVUxJIEZpbGVIYW5kbGVyLiAoa2tvbGlua28pCiAgICAgIDwvYWRkPgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgogIDxzdWJzZWN0aW9uIG5hbWU9Ikphc3BlciI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzY5MjM8L2J1Zz46IFBhcnNlIGRlYWN0aXZhdGVkIEVMIGV4cHJlc3Npb25zIGNvcnJlY3RseS4gKG1hcmt0KSAKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zNzA4NDwvYnVnPjogRml4IEpzcEMgY29tcGlsYXRpb24gd2l0aCBBbnQgd2hlbiBjb21waWxpbmcgSlNQcyB0aGF0CiAgICAgICAgdXNlIGEgY3VzdG9tIHRhZ2xpYi4gKG1hcmt0L2trb2xpbmtvKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM3NTE1PC9idWc+OiBBZGQgb3B0aW9ucyBmb3IgSmF2YSAxLjYgYW5kIDEuNyB0byB0aGUgSkRUIGNvbXBpbGVyLgogICAgICAgIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zODE5NzwvYnVnPjogRml4IHRhZyBwb29saW5nIHdoZW4gdGFncyBhcmUgdXNlZCB3aXRoIGpzcDphdHRyaWJ1dGUuCiAgICAgICAgKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM4MzUyPC9idWc+OiBNYWtlIHRoZSBkaXJlY3RvcnkgZGVmaW5lZCBieQogICAgICAgIGphdmF4LnNlcnZsZXQuY29udGV4dC50ZW1wZGlyIHJlYWRhYmxlIGZvciBKU1BzIHdoZW4gcnVubmluZyB1bmRlciBhCiAgICAgICAgc2VjdXJpdHkgbWFuYWdlciBhcyByZXF1aXJlZCBieSB0aGUgc3BlY2lmaWNhdGlvbi4gKG1hcmt0KSAKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zODc5NzwvYnVnPjogUmV2ZXJ0IHByZXZpb3VzIGZpeCBmb3IgPGJ1Zz4zNzkzMzwvYnVnPiBhbmQgaW1wbGVtZW50CiAgICAgICAgYSBuZXcgZml4IHRoYXQgZG9lcyBub3QgaGF2ZSB0aGUgc2lkZSBlZmZlY3RzIGRlc2NyaWJlZCBpbgogICAgICAgIDxidWc+Mzg3OTc8L2J1Zz4uICAKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zODg5NzwvYnVnPjogQWRkIHVyaSBvZiBicm9rZW4gVExEIHRvIGVycm9yIG1lc3NhZ2UgdG8gYWlkCiAgICAgICAgZGVidWdnaW5nLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDE2MDY8L2J1Zz46IEZpeCBkb3VibGUgaW5pdGlhbGlzYXRpb24gb2YgSlNQcy4gUGF0Y2ggcHJvdmlkZWQgYnkKICAgICAgICBDaHJpcyBIYWxzdGVhZC4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQ1NjY2PC9idWc+OiBGaXggaW5maW5pdGUgbG9vcCBvbiBpbmNsdWRlLiBQYXRjaCBwcm92aWRlZCBieSBUb20KICAgICAgICBXYWR6aW5za2kuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40NjM1NDwvYnVnPjogRml4IEFycmF5SW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbiB3aGVuIHVzaW5nCiAgICAgICAgb3JnLmFwYWNoZS5qYXNwZXIucnVudGltZS5Cb2R5Q29udGVudEltcGwuTElNSVRfQlVGRkVSPXRydWUuIFBhdGNoCiAgICAgICAgcHJvdmlkZWQgYnkgS29uc3RhbnRpbiBLb2xpbmtvLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDY5MDk8L2J1Zz46IE9ubHkgaW5jbHVkZSBzZW1pLWNvbG9uIGluIHR5cGUgYXR0cmlidXRlIGZvcgogICAgICAgICZsdDtqc3A6cGx1Z2luJmd0OyB3aGVuIGl0IGlzIHJlcXVpcmVkLiAobWFya3QpICAKICAgICAgPC9maXg+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+CiAgPHN1YnNlY3Rpb24gbmFtZT0iQ2x1c3RlciI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8Zml4PgogICAgICAgIEZpeCBtaW5vciBtZW1vcnkgbGVhayBmb3VuZCBieSBmaW5kIGJ1Z3MuIChtYXJrdCwgcmp1bmcpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDA1NTE8L2J1Zz46IEVuYWJsZSB0aGUgSnZtUm91dGVCaW5kZXJWYWx2ZSB0byB3b3JrIHdpdGgKICAgICAgICBQZXJzaXN0ZW50TWFuYWdlcnMgYXMgd2VsbCBhcyBjbHVzdGVyaW5nLiBQYXRjaCBieSBDaHJpcyBDaGFuZGxlci4KICAgICAgICAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDYzNTc8L2J1Zz46IENvcnJlY3RlZCB0ZXN0IGZvciBob3N0J3MgcGFyZW50IG11c3QgYmUgYW4gZW5naW5lLgogICAgICAgIChtYXJrdCwgcmp1bmcpCiAgICAgIDwvZml4PgogICAgICA8dXBkYXRlPgogICAgICAgIDxidWc+NDUzMTc8L2J1Zz46IFByb3Blcmx5IGxvZyB0aGUgdmFsdWUgb2YgdGhlIHN0YXRlIHRyYW5zZmVyIHRpbWVvdXQgZmxhZy4KICAgICAgICAoZmhhbmlrLCByanVuZykKICAgICAgPC91cGRhdGU+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40NTI3OTwvYnVnPjogUHJvcGVybHkgY2xvc2UgbXVsdGljYXN0IHNvY2tldC4gKGZoYW5paywgcmp1bmcpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDU0NDc8L2J1Zz46IEFkZCBTcGFuaXNoIHJlc291cmNlIGZpbGVzLgogICAgICAgIFBhdGNoIHByb3ZpZGVkIGJ5IEplc3VzIE1hcmluLiAobWFya3QsIHJqdW5nKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQ2OTkwPC9idWc+OiBGaXggc3luY2hyb25pemF0aW9uIGlzc3VlcyBpbiBjbHVzdGVyIG1lbWJlcnNoaXAKICAgICAgICByZXBvcnRlZCBieSBGaW5kQnVncy4gUGF0Y2ggcHJvdmlkZWQgYnkgU2ViYi4gKG1hcmt0LCByanVuZykKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40NzM4OTwvYnVnPjogRGVsdGFNYW5hZ2VyIGRvZXNuJ3QgZG8gc2Vzc2lvbiByZXBsaWNhdGlvbiBpZgogICAgICAgIG5vdGlmeVNlc3Npb25MaXN0ZW5lcnNPblJlcGxpY2F0aW9uPWZhbHNlLgogICAgICAgIFBhdGNoIGJ5IEtlaWljaGkgRnVqaW5vLiAoZmhhbmlrLCByanVuZykKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgU2VwYXJhdGUgc3RhdGlzdGljcyBjb3VudGVyIGxvY2sgaW4gRmFzdEFzeW5jU29ja2V0U2VuZGVyIGZyb20gaW5oZXJpdGVkCiAgICAgICAgRGF0YVNlbmRlciBsb2NrIHRvIHJlZHVjZSBibG9ja2luZyBkdXJpbmcgZmFpbGVkIG5vZGUgZGV0ZWN0aW9uLiAocmp1bmcpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIEhhbmRsZSBzaXR1YXRpb24gc2Vzc2lvbiBJRCByZXdyaXRpbmcgb24gZmFpbC1vdmVyIHdpdGggcGFyYWxsZWwgcmVxdWVzdHMKICAgICAgICBmcm9tIHRoZSBzYW1lIGNsaWVudC4gKHBlcm8pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDM2NDE8L2J1Zz46IFVzZSBvZiBiaW5kIGF0dHJpYnV0ZSBmb3IgbWVtYmVyc2hpcCBlbGVtZW50IGJyZWFrcwogICAgICAgIG11bHRpY2FzdC4gKHJqdW5nKQogICAgICA8L2ZpeD4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KICA8c3Vic2VjdGlvbiBuYW1lPSJXZWJhcHBzIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDxmaXg+CiAgICAgICAgRml4IENWRS0yMDA5LTA3ODEuIFhTUyBpbiBjYWxlbmRhciBleGFtcGxlLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzY1NzQ8L2J1Zz46IEZpeCBicm9rZW4gUERGcy4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM5NjAzPC9idWc+OiBBZG1pbiBhcHAgb25seSBzaG93ZWQgUk9PVCB3ZWIgYXBwbGljYXRpb24gd2hlbgogICAgICAgIGNsdXN0ZXJpbmcgd2FzIGVuYWJsZWQuIChtYXJrdCkgCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDcwMzI8L2J1Zz46IEZpeCAvc3RhdHVzL2FsbCBpbiBNYW5hZ2VyIHdlYmFwcCB3aGVuIHVzaW5nIHRoZQogICAgICAgIFBlcnNpc3RlbnRNYW5hZ2VyLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDcyMzU8L2J1Zz46IFJlbW92ZSB1c2Ugb2YgYXV0b1JlY29ubmVjdCBmcm9tIE15U1FMIGV4YW1wbGVzLgogICAgICAgIChtYXJrKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQ2NTA5PC9idWc+OiBVc2UgY29ycmVjdCBsaW5rIG9uIGVycm9yIHBhZ2UgaW4gSlNQIHNlY3VyaXR5CiAgICAgICAgZXhhbXBsZS4gUGF0Y2ggcHJvdmlkZWQgYnkgTWljaGFlbCBNb29keS4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQ2NTYyPC9idWc+OiBDbG9zZSBmaWxlIHdoZW4gcmVhZGluZyBoYXMgZmluaXNoZWQgd2hlbiB1c2luZyBTU0kuCiAgICAgICAgKG1hcmt0KQogICAgICA8L2ZpeD4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KICA8c3Vic2VjdGlvbiBuYW1lPSJDb3lvdGUiID4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zNzg2OTwvYnVnPjogQ29ycmVjdGx5IGV4dHJhY3QgY2xpZW50IGNlcnRpZmljYXRlcywgaW5jbHVkaW5nIHRoZQogICAgICAgIGZ1bGwgY2VydGlmaWNhdGUgY2hhaW4gd2hlbiB1c2luZyB0aGUgQVBSL25hdGl2ZSBIVFRQIGNvbm5lY3Rvci4gKG1hcmt0KSAKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zOTYzNzwvYnVnPjogQ29ycmVjdGx5IGV4dHJhY3QgY2xpZW50IGNlcnRpZmljYXRlcywgaW5jbHVkaW5nIHRoZQogICAgICAgIGZ1bGwgY2VydGlmaWNhdGUgY2hhaW4gd2hlbiB1c2luZyB0aGUgQUpQIGNvbm5lY3RvcnMuIFBhdGNoIGJ5IFBhdHJpawogICAgICAgIFNjaG5lbGxtYW5uLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8dXBkYXRlPgogICAgICAgIFNldCByZW1vdGUgcG9ydCBmb3IgQUpQIGNvbm5lY3RvcnMgZnJvbSB0aGUgb3B0aW9uYWwgcmVxdWVzdAogICAgICAgIGF0dHJpYnV0ZSBBSlBfUkVNT1RFX1BPUlQuIChyanVuZykKICAgICAgPC91cGRhdGU+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40NTAyNjwvYnVnPjogTmV2ZXIgcmV0dXJuIGFuIGVtcHR5IEhUVFAgc3RhdHVzIHJlYXNvbiBwaHJhc2UuCiAgICAgICAgbW9kX2prIGFuZCBodHRwZCAyLnggZG8gbm90IGxpa2UgdGhhdC4gKHJqdW5nKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQ1NTI4PC9idWc+OiBBbiBpbnZhbGlkIFNTTCBjb25maWd1cmF0aW9uIGNvdWxkIGNhdXNlIGFuIGluZmluaXRlCiAgICAgICAgbG9nZ2luZyBsb29wIG9uIHN0YXJ0dXAuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40Njk4NDwvYnVnPjogUmVqZWN0IHJlcXVlc3RzIHdpdGggaW52YWxpZCBIVFRQIG1ldGhvZHMgd2l0aCBhIDQwMAogICAgICAgIHJhdGhlciB0aGFuIGEgNTAxLiAobWFya3QpIAogICAgICA8L2ZpeD4KICAgICAgPHVwZGF0ZT4KICAgICAgICBVcGRhdGUgdGhlIEFQUi9uYXRpdmUgY29ubmVjdG9yIHRvIDEuMS4xNi4gKG1hcmt0LCBra29saW5rbykKICAgICAgPC91cGRhdGU+CiAgICAgIDxmaXg+CiAgICAgICAgQ29ycmVjdCBwb3RlbnRpYWwgRE9TIGlzc3VlIGluIEphdmEgQUpQIGNvbm5lY3RvciB3aGVuIHByb2Nlc3NpbmcKICAgICAgICBpbnZhbGlkIHJlcXVlc3QgaGVhZGVycy4gVGhpcyBpcyBDVkUtMjAwOS0wMDMzLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIE1ha2UgRGF0ZVRvb2wgdGhyZWFkIHNhZmUuIChmaGFuaWspIAogICAgICA8L2ZpeD4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KPC9zZWN0aW9uPgo8c2VjdGlvbiBuYW1lPSJUb21jYXQgNS41LjI3IChmaGFuaWspIiBydGV4dD0icmVsZWFzZWQgMjAwOC0wOS0wOCI+CiAgPHN1YnNlY3Rpb24gbmFtZT0iR2VuZXJhbCI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDQ0NjM8L2J1Zz46IFdhciBmaWxlIHVwbG9hZCBpbiBtYW5hZ2VyIHdlYmFwcCBmYWlscyBkdWUgdG8gbWlzc2luZwogICAgICAgIGNvbW1vbnMtaW8gZGVwZW5kZW5jeS4gQWRkZWQgY29tbW9ucy1pbyAxLjQuIChyanVuZykKICAgICAgPC9maXg+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+CiAgPHN1YnNlY3Rpb24gbmFtZT0iQ2F0YWxpbmEiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQ2NzcwPC9idWc+OiBEb24ndCBzZW5kIGR1cGxpY2F0ZSBoZWFkZXJzIHdoZW4gdXNpbmcgZmx1c2hCdWZmZXIoKS4gKHJqdW5nKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQ0MDIxPC9idWc+LCA8YnVnPjQzMDEzPC9idWc+OiBBZGQgc3VwcG9ydCBmb3IgIyB0byBzaWduaWZ5IG11bHRpLWxldmVsIGNvbnRleHRzIGZvciBkaXJlY3RvcmllcyBhbmQgd2Fycy4KICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40NDQ5NDwvYnVnPjogQmFja3BvcnQgZnJvbSA2LjAgKHJqdW5nKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICBBZGQgYWRkaXRpb25hbCBjaGVja3MgZm9yIFVSSSBub3JtYWxpemF0aW9uLiAocmVtbSkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgRG9uJ3QgdGhyb3cgYW4gQXJyYXlJbmRleE91dE9mQm91bmRzRXhjZXB0aW9uIHdoZW4gZW1wdHkgVVJMIGlzCiAgICAgICAgcmVxdWVzdGVkLiBQYXRjaCBwcm92aWRlZCBieSBDaGFybGVzIFIgQ2FsZGFyYWxlLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+Mjk5MzY8L2J1Zz46IERvbid0IHVzZSBwYXJzZXIgZnJvbSBhIHdlYmFwcCB0byBwYXJzZSB3ZWIueG1sIGFuZCBwb3NzaWJseQogICAgICAgIGNvbnRleHQueG1sIGZpbGVzLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDMwNzk8L2J1Zz46IENvcnJlY3QgcGF0dGVybiB2ZXJpZmljYXRpb24gZm9yIHN1c3BpY2lvdXMgVVJMcy4KICAgICAgICBQYXRjaCBwcm92aWRlZCBieSBKb2huIEtldy4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQzMDgwPC9idWc+OiBMb2cgc3VzcGljaW91cyBVUkwgcGF0dGVybiB3YXJuaW5ncyB0byB0aGUgY29ycmVjdAogICAgICAgIHdlYiBhcHBsaWNhdGlvbi4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQzMTE3PC9idWc+OiBTZXR0aW5nIGFuIGVtcHR5IHdvcmtESVIgY291bGQgZGVsZXRlIGFsbCBvZgogICAgICAgIENBVEFMSU5BX0hPTUUuIFBhdGNoIHByb3ZpZGVkIGJ5IFRha2F5dWtpIEthbmVrby4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQ0MjgyPC9idWc+OiBQcmV2ZW50IHNlY3VyaXR5IGV4Y2VwdGlvbiBpbiB0cmFjZSBsZXZlbCBsb2dnaW5nIGZvcgogICAgICAgIHdlYiBhcHBsaWNhdGlvbiBjbGFzcyBsb2FkZXIgd2hlbiBydW5uaW5nIHVuZGVyIGEgc2VjdXJpdHkgbWFuYWdlci4KICAgICAgICAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDQ1Mjk8L2J1Zz46IE5vIHJvbGVzIHNwZWNpZmllZCAoZGVueSBhbGwpIHNob3VsZCB0YWtlIHByZWNlZGVuY2UKICAgICAgICBvdmVyIG5vIGF1dGgtY29uc3RyYWludCBzcGVjaWZpZWQgKGFsbG93LWFsbCkuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40MzU3ODwvYnVnPjogRW5hYmxlIHN0YXJ0IG9uIExpbnV4IGlmICRDQVRBTElOQV9IT01FIGNvbnRhaW5zIGEKICAgICAgICBzcGFjZS4gT3JpZ2luYWwgcGF0Y2ggcHJvdmlkZWQgYnkgUmF5IFNhdWVycyB3aXRoIGltcHJvdmVtZW50cyBieSBJYW4KICAgICAgICBXYXJkIENvbWZvcnQuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40NDY3MzwvYnVnPjogVGhyb3cgSU9FIGlmIFNlcnZsZXRJbnB1dFN0cmVhbSBpcyBjbG9zZWQgYW5kIGEgY2FsbAogICAgICAgIGlzIG1hZGUgdG8gYW55IHJlYWQoKSwgcmVhZHkoKSwgbWFyaygpLCByZXNldCgpLCBvciBza2lwKCkgbWV0aG9kIGFzIHBlcgogICAgICAgIGphdmFkb2NzIGZvciBSZWFkZXIuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgRW5hYmxlIHRoZSBDR0lTZXJ2bGV0IHRvIHdvcmsgd2l0aCBXaW5kb3dzIFZpc3RhLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIEFkZCBhZGRpdGlvbmFsIHBlcm1pc3Npb24gcmVxdWlyZWQgdG8gcmVhZCBKREsgbG9nZ2luZyBjb25maWd1cmF0aW9uCiAgICAgICAgd2hlbiBydW5uaW5nIHdpdGggYSBzZWN1cml0eSBtYW5hZ2VyLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDQ5NDM8L2J1Zz46IFJlZHVjZSBjb3B5L3Bhc3RlIGlzc3VlcyBjYXVzZWQgYnkgZGlmZmVyZW50IGVuZ2luZQogICAgICAgIG5hbWVzIGluIHNlcnZlci54bWwuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40NTE5NTwvYnVnPjogUHJldmVudCBOUEUgd2hlbiBjYWxsaW5nCiAgICAgICAgPGNvZGU+U2Vzc2lvbi5nZXRBdHRyaWJ1dGUobnVsbCk8L2NvZGU+IGFuZCAKICAgICAgICA8Y29kZT5TZXNzaW9uLnJlbW92ZUF0dHJpYnV0ZShudWxsKTwvY29kZT4uIFRoZSBzcGVjIGlzIHVuY2xlYXIgYnV0IHRoaXMKICAJCWlzIGEgcmVncmVzc2lvbiBmcm9tIDUuMC54LiAobWFya3QpCiAgCSAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40NTI5MzwvYnVnPjogVXBkYXRlIG5hbWUgb2YgY29tbW9ucy1sb2dnaW5nIGphciBpbiBzZWN1cml0eSBwb2xpY3kuCiAgICAgICAgKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQ1NDUzPC9idWc+OiBGaXggcmFjZSBjb25kaXRpb24gaW4gSkRCQyBSZWFsbS4gQmFzZWQgb24gYSBwYXRjaAogICAgICAgIHByb3ZpZGVkIGJ5IFNhbnR0dSBIeXJray4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICBKQUFTIFJlYWxtIGRpZCBub3QgcmVhZCByb2xlIGluZm9ybWF0aW9uIGZvciB1c2Vycy4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQ2NjgzPC9idWc+OiBGaXggdHlwbyBpbiBGcmVuY2ggbG9jYWxpc2F0aW9uIGZpbGUgbmFtZSBmb3IgdGhlCiAgICAgICAgb3JnLmFwYWNoZS5jYXRhbGluYS5sb2FkZXIgcGFja2FnZS4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KICA8c3Vic2VjdGlvbiBuYW1lPSJDb3lvdGUiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPHVwZGF0ZT4KICAgICAgICBMb2cgZXJyb3JzIGZvciBBSlAgc2lnbm9mZnMgYXQgREVCVUcgbGV2ZWwsIHNpbmNlIGl0IGlzIGhhcm1sZXNzIGlmCiAgICAgICAgbW9kX2prIGhhcyBodW5nIHVwIHRoZSBwaG9uZS4gKGJpbGxiYXJrZXIpCiAgICAgIDwvdXBkYXRlPgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDI3Mjc8L2J1Zz46IEhhbmRsZSByZXF1ZXN0IGxpbmVzIHRoYXQgYXJlIGV4YWN0IG11bHRpcGxlcyBvZiA0MDk2CiAgICAgICAgaW4gbGVuZ3RoLiBQYXRjaCBwcm92aWRlZCBieSBXaWxsIFB1Z2guIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40MzE5MTwvYnVnPjogQ29tcHJlc3Npb24gY291bGQgbm90IGJlIGRpc2FibGVkIGZvciBzb21lIGZpbGUgdHlwZXMuCiAgICAgICAgQmFzZWQgb24gYSBwYXRjaCBieSBMZW4gUG9wcC4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQ1NTkxPC9idWc+OiBGaXggTlBFIG9uIHNodXRkb3duIGZhaWx1cmUgaW4gc29tZSBjYXNlcy4gQmFzZWQgb24gYQogICAgICAgIHBhdGNoIGJ5IE1hdHQgUGFzc2VsbC4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KICA8c3Vic2VjdGlvbiBuYW1lPSJKYXNwZXIiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjMxMjU3PC9idWc+OiBRdW90ZSBlbmRvcnNlZCBkaXJzIGlmIHRoZXkgY29udGFpbiBhIHNwYWNlLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDI5NDM8L2J1Zz46IE1ha2Ugc3VyZSBuZXN0ZWQgZWxlbWVudCBpcyBpbnNpZGUgJmx0O2pzcDp0ZXh0Jmd0OwogICAgICAgIGVsZW1lbnQgYmVmb3JlIHRocm93aW5nIGV4Y2VwdGlvbi4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQ0ODc3PC9idWc+OiBQcmV2ZW50IGNvbGxpc2lvbnMgaW4gdGFnIHBvb2wgbmFtZXMuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40NTAxNTwvYnVnPjogRW5mb3JlIEpTUCBzcGVjIHJ1bGVzIG9uIHF1b3RpbmcgaW4gYXR0cmJ1dGVzLiBUaGlzIGlzCiAgICAgICAgY29uZmlndXJhYmxlIHVzaW5nIHRoZSBzeXN0ZW0gcHJvcGVydHkKICAgICAgICA8Y29kZT5vcmcuYXBhY2hlLmphc3Blci5jb21waWxlci5QYXJzZXIuU1RSSUNUX1FVT1RFX0VTQ0FQSU5HPC9jb2RlPi4KICAgICAgICAobWFya3QpCiAgICAgIDwvZml4PgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgogIDxzdWJzZWN0aW9uIG5hbWU9IldlYmFwcHMiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQyODk5PC9idWc+OiBXaGVuIHNhdmluZyBjb25maWcgZnJvbSBhZG1pbiBhcHAsIGNvcnJlY3RseSBoYW5kbGUKICAgICAgICBjYXNlIHdoZXJlIHRoZSBvbGQgY29uZmlnIGZpbGUgZG9lcyBub3QgZXhpc3QuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40NDU0MTwvYnVnPjogRG9jdW1lbnQgcGFja2V0U2l6ZSBhdHRyaWJ1dGUgZm9yIEFKUCBjb25uZWN0b3IuCiAgICAgICAgKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQ0NzE1PC9idWc+OiBEb2N1bWVudCB1c2Ugb2Ygc2VjcmV0IGZvciBBSlAgY29ubmVjdG9yLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8dXBkYXRlPgogICAgICAgIDxidWc+NDUzMjM8L2J1Zz46IEFkZCBub3RlIHRoYXQgY29udGV4dC54bWwgZmlsZXMgY2FuIG9ubHkgY29udGFpbiBhCiAgICAgICAgc2luZ2xlIENvbnRleHQgZWxlbWVudC4gKG1hcmt0KQogICAgICA8L3VwZGF0ZT4KICAgICAgPGZpeD4KICAgICAgICBVcGRhdGUgSk5ESSBkYXRhc291cmNlIGRvY3Mgc2luY2UgbWF4QWN0aXZlIHNldHRpbmcgZm9yIHVubGltaXRlZAogICAgICAgIGNoYW5nZWQgaW4gY29tbW9ucy1wb29sID4gMS4yLiAobWFya3QpCiAgICAgIDwvZml4PiAKICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KICA8c3Vic2VjdGlvbiBuYW1lPSJTcGVjaWZpY2F0aW9uIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDxmaXg+CiAgICAgICAgVXNlIGEgbG9jYWxpc2VkIGVycm9yIG1lc3NhZ2UgaWYgYSB1c2VyIHRyaWVzIHRvIHdyaXRlIGEgbmVnYXRpdmUgbGVuZ3RoCiAgICAgICAgYnl0ZSBhcnJheSBkdXJpbmcgZGVmYXVsdCBwcm9jZXNzaW5nIG9mIGEgSEVBRCByZXF1ZXN0LiAobWFya3QpICAgCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDQ1NjI8L2J1Zz46IEhFQUQgcmVxdWVzdHMgY2Fubm90IHVzZSBpbmNsdWRlcy4gUGF0Y2ggcHJvdmlkZWQgYnkKICAgICAgICAgIERhdmlkIEplbmNrcy4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KPC9zZWN0aW9uPgo8c2VjdGlvbiBuYW1lPSJUb21jYXQgNS41LjI2IChmaGFuaWspIiBydGV4dD0icmVsZWFzZWQgMjAwOC0wMi0wNSI+CiAgPHN1YnNlY3Rpb24gbmFtZT0iR2VuZXJhbCI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8dXBkYXRlPgogICAgICAgIFVzZSBFY2xpcHNlIEpEVCAzLjMuMS4gKHBlcm8pCiAgICAgIDwvdXBkYXRlPgogICAgICA8dXBkYXRlPgogICAgICAgIFVzZSBuZXcgY29tbW9ucyBkb3dubG9hZCBsb2NhdGlvbi4gKG1hcmt0KQogICAgICA8L3VwZGF0ZT4KICAgICAgPHVwZGF0ZT4KICAgICAgICBVc2UgY29tbW9ucy1sYXVuY2hlciAxLjEuIChtYXJrdCkKICAgICAgPC91cGRhdGU+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgVXNlIGNvbW1vbnMtZGlnZXN0ZXIgMS44LiAobWFya3QpCiAgICAgIDwvdXBkYXRlPgogICAgICA8dXBkYXRlPgogICAgICAgIFVzZSBYZXJjZXMgMi45LjEuIChtYXJrdCkKICAgICAgPC91cGRhdGU+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgUmVtb3ZlIHVzdXNlZCBjb21tb25zLWh0dHBjbGllbnQuIChmdW5rbWFuKQogICAgICA8L3VwZGF0ZT4KICAgICAgPHVwZGF0ZT4KICAgICAgICBVc2UgY29tbW9ucy1jb2xsZWN0aW9ucyAzLjIuIChtYXJrdCkKICAgICAgPC91cGRhdGU+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgVXNlIGNvbW1vbnMtZmlsZXVwbG9hZCAxLjIuIChtYXJrdCkKICAgICAgPC91cGRhdGU+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgVXNlIE1YNEogMy4wLjIuIChtYXJrdCkKICAgICAgPC91cGRhdGU+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgVXNlIEpVbml0IDMuOC4yLiAobWFya3QpCiAgICAgIDwvdXBkYXRlPgogICAgICA8dXBkYXRlPgogICAgICAgIFVzZSBOU0lTIDIuMzQuIChtYXJrdCkKICAgICAgPC91cGRhdGU+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgVXNlIFN0cnV0cyAxLjIuOS4gKG1hcmt0KQogICAgICA8L3VwZGF0ZT4KICAgICAgPHVwZGF0ZT4KICAgICAgICBVc2UgSkFGIDEuMS4xLiAobWFya3QpCiAgICAgIDwvdXBkYXRlPgogICAgICA8dXBkYXRlPgogICAgICAgIFVzZSBKVEEgMS4xLiAobWFya3QpCiAgICAgIDwvdXBkYXRlPgogICAgICA8dXBkYXRlPgogICAgICAgIFVzZSBKYXZhTWFpbCAxLjQuMS4gKG1hcmt0KQogICAgICA8L3VwZGF0ZT4KICAgICAgPHVwZGF0ZT4KICAgICAgICBVc2UgUHVyZVRMUyAwLjliNS4gKG1hcmt0KQogICAgICA8L3VwZGF0ZT4KICAgICAgPHVwZGF0ZT4KICAgICAgICBVc2UgY29tbW9ucy1wb29sIDEuNC4gKG1hcmt0KQogICAgICA8L3VwZGF0ZT4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQzNTk0PC9idWc+OiBVc2Ugc2V0ZW52IGZyb20gQ0FUQUxJTkFfQkFTRSAoaWYgc2V0KSBpbiBwcmVmZXJlbmNlCiAgICAgICAgdG8gdGhlIG9uZSBpbiBDQVRBTElOQV9IT01FLiBQYXRjaCBwcm92aWRlZCBieSBTaGFkZHkgQmFkZGFoLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIEZpeCBDVkUtMjAwNy01MzQyIGJ5IGxpbWl0aW5nIHBlcm1pc3Npb25zIGdyYW50ZWQgdG8gSlVMSS4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4gIAogIDxzdWJzZWN0aW9uIG5hbWU9IkNhdGFsaW5hIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDxmaXg+PGJ1Zz4zODEzMTwvYnVnPjogV2F0Y2hlZFJlc291cmNlIGRvZXNuJ3Qgd29yayBpZiBhcHAgaXMgb3V0c2lkZSBob3N0IGFwcGJhc2Ugd2ViYXBwcy4gCiAgICAgICAgUGF0Y2ggcHJvdmlkZWQgYnkgUGV0ZXIgTHluY2ggKHBlcm8pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIFNldCBjb3JyZWN0IHNlc3Npb25Db3VudGVyIGF0IFN0YW5kYXJkTWFuYWdlciBhZnRlciByZWxvYWQgc2Vzc2lvbnMuIChwZXJvKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgCUZpeCBOUEUgc2l0dWF0aW9uIGF0IEFjY2Vzc0xvZ1ZhbHZlIChwZXJvKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjMwOTQ5PC9idWc+OiBJbXByb3ZlIHByZXZpb3VzIGZpeC4gRW5zdXJlIHJlcXVlc3RzIGFyZSByZWN5Y2xlZAogICAgICAgIG9uIGNyb3NzLWNvbnRleHQgaW5jbHVkZXMgYW5kIGZvcndhcmRzIHdoZW4gYW4gZXhjZXB0aW9uIG9jY3VycyBpbiB0aGUKICAgICAgICB0YXJnZXQgcGFnZS4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQzMjE2PC9idWc+OiBTZXQgY29ycmVjdCBTdGFuZGFyZFNlc3Npb24jYWNjZXNzQ291bnQgYXMgc3lzdGVtIHByb3BlcnR5IFNUUklDVF9TRVJWTEVUX0NPTVBMSUFOQ0UgaXMgdHJ1ZSBhZnRlciBhcHBsaWNhdGlvbiByZXN0YXJ0IHdpdGggU0VTU0lPTi5zZXIgZmlsZS4KICAgICAgICBQYXRjaCBwcm92aWRlZCBieSBUYWtheXVraSBLYW5la28gKHBlcm8pCiAgICAgIDwvZml4PgogICAgICA8YWRkPgogICAgICAgIE1hZGUgc2Vzc2lvbiBjcmVhdGVUaW1lIGFjY2Vzc2libGUgZm9yIGFsbCBTZXNzaW9uTWFuYWdlciB2aWEgSk1YIChwZXJvKQogICAgICA8L2FkZD4KICAgICAgPGFkZD4KICAgICAgICBTdXBwb3J0IGxvZ2dpbmcgb2YgYWxsIHJlc3BvbnNlIGhlYWRlciB2YWx1ZXMgYXQgRXh0ZW5kZWRBY2Nlc3NMb2dWYWx2ZSAoZXguIGFkZCB4LU8oU2V0LUNvb2tpZSkgdG8geW91ciBwYXR0ZXJuKS4gKHBlcm8pCiAgICAgIDwvYWRkPgogICAgICA8YWRkPgogICAgICAgIFN1cHBvcnQgbG9nZ2luZyBvZiBjdXJyZW50IHRocmVhZCBuYW1lIGF0IEFjY2Vzc0xvZ1ZhbHZlIChleC4gYWRkICVJIHRvIHlvdXIgcGF0dGVybikuCiAgICAgICAgVXNlZnVsbCB0byBjb21wYXJlIGFjY2VzcyBsb2dnaW5nIGVudHJ5IGxhdGVyIHdpdGggYSBzdGFja3RyYWNlcy4gKHBlcm8pCiAgICAgIDwvYWRkPiAgCiAgICAgIDxmaXg+CiAgICAgICAgby5hLmp1bGkuQ2xhc3NMb2FkZXJMb2dNYW5hZ2VyIGhhbmRsZSBtb3JlIHRoZW4gb25lIHN5c3RlbSBwcm9wZXJ0eSByZXBsYWNlbWVudCBhdCBmaWxlIGxvZ2dpbmcucHJvcGVydGllcy4gKHBlcm8pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDMyMzY8L2J1Zz46IFJlc2V0IHVzaW5nV3JpdGVyIGFuZCBhc3NvY2lhdGVkIGZsYWdzIHdoZW4gcmVzcG9uc2UKICAgICAgICBpcyByZXNldC4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQzMjQxPC9idWc+OiBTZXJ2bGV0Q29udGV4dC5nZXRSZXNvdXJjZUFzU3RyZWFtKCkgbm90IHNwZWMKICAgICAgICBjb21wbGlhbnQuIFBhdGNoIHByb3ZpZGVkIGJ5IEpvaG4gS2V3LiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDM2NzU8L2J1Zz46IEZpeCBhIHBvc3NpYmxlIGxvZ2dpbmcgcmVsYXRlZCBjbGFzcyBsb2FkZXIgbGVhay4KICAgICAgICAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDM2ODc8L2J1Zz46IFJlbW92ZSBjb25kaXRpb25hbCBoZWFkZXJzIG9uIEZvcm0gQXV0aCByZXBsYXksIHNpbmNlIHRoZSBVQSAoZXNwLiBGaXJlRm94KSBpc24ndCBleHBlY3RpbmcgaXQuIChiaWxsYmFya2VyKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICBGaXggYnVnIGluIENHSSBTZXJ2bGV0IHRoYXQgY2F1c2VkIGl0IHRvIGZhaWwgd2hlbiBhIENHSSByZXNvdXJjZSB3YXMKICAgICAgICBpbmNsdWRlZCBpbiBhbm90aGVyIHJlc291cmNlLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIENvb2tpZSBoYW5kbGluZy9wYXJzaW5nIGNoYW5nZXMhCiAgICAgICAgVGhlIGZvbGxvd2luZyBiZWhhdmlvciBoYXMgYmVlbiBjaGFuZ2VkIHdpdGggcmVnYXJkcyB0byBUb21jYXQncyBjb29raWUKICAgICAgICBoYW5kbGluZzo8YnIvPgogICAgICAgIGEpIENvb2tpZXMgY29udGFpbmluZyBjb250cm9sIGNoYXJhY3RlcnMsIGV4Y2VwdCAweDA5KEhUKSwgYXJlIHJlamVjdGVkCiAgICAgICAgdXNpbmcgYW4gSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uLjxici8+CiAgICAgICAgYikgSWYgY29va2llcyBhcmUgbm90IHF1b3RlZCwgdGhleSB3aWxsIGJlIHF1b3RlZCBpZiB0aGV5IGNvbnRhaW4KICAgICAgICA8Y29kZT50c3BlY2lhbHModmVyMCk8L2NvZGU+IG9yIDxjb2RlPnRzcGVjaWFsczIodmVyMSk8L2NvZGU+CiAgICAgICAgY2hhcmFjdGVycy48YnIvPgogICAgICAgIGMpIEVzY2FwZSBjaGFyYWN0ZXIgJ1xcJyBpcyBhbGxvd2VkIGFuZCByZXNwZWN0ZWQgYXMgYSBlc2NhcGUgY2hhcmFjdGVyLAogICAgICAgIGFuZCB3aWxsIGJlIHVuZXNjYXBlZCBkdXJpbmcgcGFyc2luZy4KICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40MzgzOTwvYnVnPjogVVJMIGJhc2VkIHNlc3Npb24gdHJhY2tpbmcgZmFpbHMgd2hlbiBzZXNzaW9uIGNvb2tpZQogICAgICAgIGZyb20gcGFyZW50IGNvbnRleHQgaXMgcHJlc2VudC4gQmFzZWQgb24gYSBwYXRjaCBieSBZdWFuIFFpbmd5dW4uCiAgICAgICAgKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQzODg3PC9idWc+OiBJbmNsdWRlIGV4Y2VwdGlvbiBpbiB0aGUgbG9nIG1lc3NhZ2UuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40MzkxNDwvYnVnPjogTG9jYXRpb24gaGVhZGVycyBtdXN0IGJlIGVuY29kZWQuIFBhdGNoIHByb3ZpZGVkIGJ5CiAgICAgICAgSXZhbiBUb2Rvcm9za2kuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40Mzk1NzwvYnVnPjogU2VydmljZS5iYXQgZGlkbid0IGNvbmZpZ3VyZSBsb2dnaW5nIGNvcnJlY3RseS4KICAgICAgICBQYXRjaCBwcm92aWRlZCBieSBSaWNoYXJkIEZlYXJuLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDQwNDE8L2J1Zz46IEZpeCBkdXBsaWNhdGUgY2xhc3MgZGVmaW5pdGlvbiBlcnJvciB1bmRlciBsb2FkLgogICAgICAgIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40NDA4NDwvYnVnPjogSkFTU1JlYWxtIGlzIGJyb2tlbiBmb3IgYXBwbGljYXRpb24gcHJvdmlkZWQKICAgICAgICBQcmluY2lwYWxzLiBQYXRjaCBwcm92aWRlZCBieSBOb2FoIExldml0dC4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KICA8c3Vic2VjdGlvbiBuYW1lPSJKYXNwZXIiID4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40MzcwMjwvYnVnPjogUmVkdWNlIGxlbmd0aCBvZiB1bm5lY2Vzc2FyaWx5IGxvbmcgY2xhc3MgbmFtZXMgZm9yCiAgICAgICAgdGhlIGlubmVyIGhlbHBlciBjbGFzcyB3aGVuIHVzaW5nIHNpbXBsZSB0YWdzLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDM3NTc8L2J1Zz46IFJhdGhlciB0aGFuIHVzZSBzdHJpbmcgbWF0Y2hpbmcgdG8gd29yayBvdXQgdGhlIGxpbmUKICAgICAgICBpbiB0aGUgSlNQIHdpdGggdGhlIGVycm9yLCB1c2UgdGhlIFNNQVAgaW5mbyBhbmQgdGhlIGtub3dsZWRnZSB0aGF0IGZvcgogICAgICAgIGEgc2NyaXB0bGV0IHRoZXJlIGlzIGEgb25lIHRvIG9uZSBsaW5lIG1hcHBpbmcuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+CiAgPHN1YnNlY3Rpb24gbmFtZT0iQ2x1c3RlciI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8Zml4PgogICAgICAgIEZpeCBGYXJtV2FyRGVwbG95ZXIgY2FuIGJlIG9ubHkgY29uZmlndXJlZCBhdCBob3N0IHN1YmVsZW1lbnQgKHBlcm8pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAJRml4IHdyb25nICZhbXA7JmFtcDsgYXQgUmVwbGljYXRpb25WYWx2ZSAocGVybykKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgRGVsdGFNYW5hZ2VyIHNlc3Npb25Db3VudGVyIG11c3QgYmUgYWxzbyBpbmNyZW1lbnQgYXQgcmVsaWNhdGVkIHNlc3Npb25zLiAocGVybykKICAgICAgPC9maXg+CiAgICAgIDxhZGQ+CiAgICAgICAgTWFkZSBhdHRyaWJ1dGUgY3JlYXRlVGltZSBhY2Nlc3NpYmxlIGZvciBhbGwgRGF0YVNlbmRlcnMuIChwZXJvKQogICAgICA8L2FkZD4gIAogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgogIDxzdWJzZWN0aW9uIG5hbWU9IldlYmFwcHMiID4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDxmaXg+CiAgICAgICAgRml4IENWRS0yMDA3LTU0NjEsIGFuIGltcG9ydGFudCBpbmZvcm1hdGlvbiBkaXNjbG9zdXJlIHZ1bG5lcmFiaWxpdHkgaW4KICAgICAgICB0aGUgV2ViREFWIFNlcnZsZXQuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40MzYxMTwvYnVnPjogUHJvdmlkZSBhbiBlcnJvciBtZXNzYWdlIHdoZW4gdHJ5aW5nIHRvIHVwbG9hZCBhIFdBUgogICAgICAgIGZvciBhIGNvbnRleHQgdGhhdCBoYXMgYmVlbiBkZWZpbmVkIGluIHNlcnZlci54bWwuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40NDA5NDwvYnVnPjogQWRkIG5vdGUgdG8gZG9jcyBhYm91dCBzaWRlLWVmZmVjdHMgb2Ygc2V0dGluZwogICAgICAgIHByaXZpbGVnZWQgb24gYSBjb250ZXh0LiAobWFya3QpCiAgICAgIDwvZml4PgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgogIDxzdWJzZWN0aW9uIG5hbWU9IkNveW90ZSIgPgogICAgPGNoYW5nZWxvZz4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQzNDc5PC9idWc+OiBGaXggbWVtb3J5IGxlYWsgY2xlYW5pbmcgdXAgc2VuZGZpbGUgY29ubmVjdGlvbnMuCiAgICAgICAgKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQzNjIyPC9idWc+OiBEb24ndCBhbHdheXMgb3ZlcndyaXRlIG1pbiBjb21wcmVzc2lvbiBzaXplIHdpdGgKICAgICAgICBkZWZhdWx0LiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDM5OTU8L2J1Zz46IE5vIHRpbWVvdXQgZm9yIHNlbmRmaWxlIChUT0RPIGl0ZW0gaGFkIGJlZW4KICAgICAgICBmb3Jnb3R0ZW4pLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgo8L3NlY3Rpb24+CiAgICAgCjxzZWN0aW9uIG5hbWU9IlRvbWNhdCA1LjUuMjUgKGZoYW5paykiIHJ0ZXh0PSJyZWxlYXNlZCAyMDA3LTA5LTA4Ij4KICA8c3Vic2VjdGlvbiBuYW1lPSJHZW5lcmFsIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDxkb2NzPgogICAgICAgIENvcnJlY3Qgai51LmwgbG9nIGxldmVscyBpbiBKVUxJIGRvY3MuIChyanVuZykKICAgICAgPC9kb2NzPgogICAgICA8dXBkYXRlPgogICAgICAgIFVwZGF0ZSB0byBDb21tb25zIE1vZGVsZXIgMi4wLjEsIGZpeCBlbWJlZCByZWxlYXNlIHN0YXJ0aW5nIGlzc3VlLiAocGVybykKICAgICAgPC91cGRhdGU+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+CiAgPHN1YnNlY3Rpb24gbmFtZT0iQ2F0YWxpbmEiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPGZpeD4KICAgICAgICBIYW5kbGUgc3BlY2lhbCBjYXNlIG9mIFJPT1Qgd2hlbiByZS1sb2FkaW5nIHdlYmFwcCBhZnRlciBST09ULnhtbCBoYXMKICAgICAgICBiZWVuIG1vZGlmaWVkLiBJbiBzb21lIGNpcmN1bXN0YW5jZXMgdGhlIHJlbG9hZGVkIFJPT1Qgd2ViYXBwIGhhZCBubwogICAgICAgIGFzc29jaWF0ZWQgcmVzb3VyY2VzLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIEZpeCBXZWJEQVYgU2VydmxldCBzbyBpdCB3b3JrcyBjb3JyZWN0bHkgd2l0aCBNUyBjbGllbnRzLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIFJlbW92ZSBpbnZhbGlkIGF0dHJpYnV0ZSAiZW5jb2RpbmciIG9mIE1CZWFuIE1lbW9yeVVzZXJEYXRhYmFzZSwKICAgICAgICB3aGljaCBsZWFkIHRvIGVycm9ycyBpbiB0aGUgbWFuYWdlciB3ZWJhcHAgSk1YUHJveHkgb3V0cHV0LiAocmp1bmcpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIEZpeCBYU1Mgc2VjdXJpdHkgdnVsbmVyYWJpbGl0eSAoQ1ZFLTIwMDctMjQ1MCkgaW4gdGhlIE1hbmFnZXIgYW5kIEhvc3QKICAgICAgICBNYW5hZ2VyLiBSZXBvcnRlZCBieSBEYWlraSBGdWt1bW9yaS4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGFkZD4KICAgICAgICA8YnVnPjM5MDU1PC9idWc+OiBBZGQgSk1YQWRhcHRvckxpZmVjeWNsZUxpc3RlbmVyIHRvIHN0YXJ0IEpNWCBDb25uZWN0b3IKICAgICAgICB3aXRoIGZpeGVkIG5hbWluZyBhbmQgZGF0YSBwb3J0cy4gVGhpcyBmZWF0dXJlIGlzIG5lZWRlZCB0byBoYXZlIHN0YWJsZQogICAgICAgIHJlbW90ZSBhY2Nlc3Mgd2hlbiBhIGZpcmV3YWxsIGlzIGFjdGl2ZS4gVGhlIGFkYXB0b3IgcmVhZHMgYWxsIHN0YW5kYXJkCiAgICAgICAgSk1YIHN5c3RlbSBwcm9wZXJ0aWVzICgtRGNvbS5zdW4ubWFuYWdlbWVudC5qbXhyZW1vdGUuWFhYKS4gQ3VycmVudGx5CiAgICAgICAgb25seSBpbmNsdWRlZCBhdCBzcmMgcmVsZWFzZSAodXNlcyBKREsgMS41IGNsYXNzZXMpLgogICAgICAgIEZlYXR1cmUgcHJvdmlkZWQgYnkgR2VvcmdlIExpbmRob2xtIGFuZCBKdWVyZ2VuIEhlcnJtYW4gKHBlcm8pCiAgICAgIDwvYWRkPgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDE3MjI8L2J1Zz46IE1ha2UgdGhlIHJvbGUtbGluayBlbGVtZW50IG9wdGlvbmFsIChhcyByZXF1aXJlZCBieQogICAgICAgIHRoZSBzcGVjKSB3aGVuIHVzaW5nIGEgc2VjdXJpdHktcm9sZS1yZWYgZWxlbWVudC4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQyNTQ3PC9idWc+OiBGaXggTlBFIHdoZW4gYSBSZXNvdXJjZUxpbmsgaW4gY29udGV4dC54bWwgdHJpZXMgdG8KICAgICAgICBvdmVycmlkZSBhbiBlbnYtZW50cnkgaW4gd2ViLnhtbC4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQyOTQ0PC9idWc+OiBDb3JyZWN0bHkgaGFuZGxlIHNlcnZsZXQgbWFwcGluZ3MgdGhhdCB1c2UgYSAnKycKICAgICAgICBjaGFyYWN0ZXIgYXMgcGFydCBvZiB0aGUgdXJsIHBhdHRlcm4uIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgSW1wcm92ZSBsYXJnZS1maWxlIHN1cHBvcnQgKG1vcmUgdGhlbiA0IEdiKSBhdCBhbGwgQWNjZXNzTG9nVmFsdmVzLiAocGVybykKICAgICAgPC9maXg+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgPGJ1Zz40MzEyOTwvYnVnPjogU3VwcG9ydCBsb2dnaW5nIG9mIHJlc3BvbnNlIGhlYWRlcnMgYXQgQWNjZXNzTG9nVmFsdmUgKGV4LiBhZGQgJXtTZXQtQ29va2llfW8gdG8geW91ciBwYXR0ZXJuKS4gKHBlcm8pCiAgICAgIDwvdXBkYXRlPgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgogIDxzdWJzZWN0aW9uIG5hbWU9Ikphc3BlciI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8Zml4PgogICAgICAgIDxidWc+MjUwMDwvYnVnPjogRmlsZU5vdEZvdW5kRXhjZXB0aW9uIHdpdGhpbiBhIEpTUCBwYWdlcyByZXN1bHRlZCBpbiBhCiAgICAgICAgNDA0IHJhdGhlciB0aGFuIGEgNTAwLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzczMjY8L2J1Zz46IE5vIGVycm9yIHJlcG9ydGVkIHdoZW4gYW4gaW5jbHVkZWQgcGFnZSBkb2VzIG5vdAogICAgICAgIGV4aXN0LiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDI2NDM8L2J1Zz46IFByZXZlbnQgY3JlYXRpb24gb2YgZHVwbGljYXRlIEpTUCBmdW5jdGlvbiBtYXBwZXIKICAgICAgICB2YXJpYWJsZXMuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40MjMxNDwvYnVnPjogUHJvdmlkZSBjb21waWxhdGlvbiBlcnJvciBkZXRhaWxzIGluIGNhc2VzIHdoZXJlIHRoZQogICAgICAgIGVycm9yIGNhbid0IGJlIG1hcHBlZCBiYWNrIHRvIGEgc291cmNlIGZpbGUuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+CiAgPHN1YnNlY3Rpb24gbmFtZT0iV2ViYXBwcyI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8Zml4PgogICAgICAgIERvbid0IHdyaXRlIGVycm9yIG9uIFN5c3RlbS5vdXQsIHVzZSBsb2coKSBpbnN0ZWFkLiAocmp1bmcpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIEZpeCBYU1Mgc2VjdXJpdHkgdnVsbmVyYWJpbGl0aWVzIChDVkUtMjAwNy0yNDQ5KSBpbiB0aGUgZXhhbXBsZXMuCiAgICAgICAgUmVwb3J0ZWQgYnkgVG9zaGloYXJ1IFN1Z2l5YW1hLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzkyMTI8L2J1Zz46IEZpeCBwb3NzaWJsZSBOUEUgaW4gRHVtbXlDYXJ0IGV4YW1wbGUgYW5kIHJlbW92ZQogICAgICAgIHJlZHVuZGFudCBjb2RlLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDI5Nzk8L2J1Zz46IFVwZGF0ZSBzYW1wbGUud2FyIHRvIGluY2x1ZGUgcmVjZW50IHNlY3VyaXR5IGZpeGVzCiAgICAgICAgaW4gdGhlIHNvdXJjZSBjb2RlLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgogIDxzdWJzZWN0aW9uIG5hbWU9IkNveW90ZSI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8Zml4PgogICAgICAgIFNlcGFyYXRlIHNlcXVlbmNlIGluY3JlbWVudCBmcm9tIGdldHRlciBpbiBUaHJlYWRQb29sIHRvIGF2b2lkCiAgICAgICAgbWlzbGVhZGluZyBpbmNyZW1lbnRzIGR1cmluZyBtb25pdG9yaW5nIHZpYSBKTVguIChyanVuZykKICAgICAgPC9maXg+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+IAogIDxzdWJzZWN0aW9uIG5hbWU9IkNsdXN0ZXIiPgogICA8Y2hhbmdlbG9nPgogICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40MDA0MjwvYnVnPjogUmVjb3ZlcnkgbWVtYmVyc2hpcCBoZWFydGJlYXQgYWZ0ZXIgaW50ZXJmYWNlIGRvd24uIChwZXJvKQogICAgIDwvZml4PgogICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40MjY5MTwvYnVnPjogRG9uJ3Qgc2V0IGFjY2VzcyB0aW1lIGFmdGVyIHNlc3Npb24gc3luYy4gRml4IHRoYXQgc2Vzc2lvbnMKICAgICAgICBhZnRlciBub2RlIHJlc3RhcnQgYmV0dGVyIGV4cGlyZS4gUmVxdWVzdGVkIGJ5IENhc2V5IEx1Y2FzIChwZXJvKQogICAgIDwvZml4PiAgIAogICAgIDxmaXg+CiAgICAgICAgQmFja3BvcnQgVG9tY2F0IDYgY2x1c3RlciBzb2NrZXQgcGFyYW1ldGVyLiAocGVybykKICAgICA8L2ZpeD4gICAKICAgICA8Zml4PgogICAgICAgIEZpeCB0eXBvIGluIG5ldyBNQmVhbiBhdHRyaWJ1dGUgd2hpY2ggbGVhZCB0byBlcnJvcnMgaW4gdGhlIG1hbmFnZXIgd2ViYXBwIEpNWFByb3h5IG91dHB1dC4gKHJqdW5nKQogICAgIDwvZml4PiAgICAgCiAgICAgPGZpeD4KICAgICAgICA8YnVnPjQyNjg5PC9idWc+OiBObyB3YXkgdG8gdGltZW91dCBuZXcgY29ubmVjdCBhdHRlbXB0cyBmb3IgcmVwbGljYXRpb24gc29ja2V0cy4gCiAgICAgICAgUGF0Y2ggYnkgQ2FzZXkgTHVjYXMgKHBlcm8pCiAgICAgPC9maXg+ICAgCiAgICAgPGZpeD4gIAogICAgICAgICBGaXggdGltZW91dCBzZXR0aW5nIG9uIGEgcmVwbGljYXRlZCBEZWx0YVNlc3Npb24uCiAgICAgICAgIFBhdGNoIGJ5IEFsZXhhbmRlciBNYWFzIChmaGFuaWsscGVybykKICAgICA8L2ZpeD4KICAgICA8Zml4PiAgCiAgICAgICAgIDxidWc+NDI3MjA8L2J1Zz46IERvbid0IHNlbmQgYSBtZXNzYWdlIGlmIG5vIGNsdXN0ZXIgbWVtYmVyIGV4aXN0cy4KICAgICAgICAgUGF0Y2ggYnkgS2VpaWNoaSBGdWppbm8gKHBlcm8pCiAgICAgPC9maXg+ICAKICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KPC9zZWN0aW9uPgo8c2VjdGlvbiBuYW1lPSJUb21jYXQgNS41LjI0IChmaGFuaWspIiBydGV4dD0ibm90IHJlbGVhc2VkIj4KICA8c3Vic2VjdGlvbiBuYW1lPSJHZW5lcmFsIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgVXBkYXRlIHRvIENvbW1vbnMgREJDUCBzcmMgMS4yLjIgKHBlcm8pCiAgICAgIDwvdXBkYXRlPgogICAgICA8dXBkYXRlPgogICAgICAgIFVwZGF0ZSB0byBDb21tb25zIFBvb2wgc3JjIDEuMyAocGVybykKICAgICAgPC91cGRhdGU+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+CiAgPHN1YnNlY3Rpb24gbmFtZT0iQ2F0YWxpbmEiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjMzNzc0PC9idWc+IFJldHJ5IEpOREkgYXV0aGVudGljdGlvbiBvbiBTZXJ2aWNlVW5hdmFpbGFibGVFeGNlcHRpb24KICAgICAgICBhcyBhdCBsZWFzdCBvbmUgcHJvdmlkZXIgdGhyb3dzIHRoaXMgYWZ0ZXIgYW4gaWRsZSBjb25uZWN0aW9uIGhhcyBiZWVuCiAgICAgICAgY2xvc2VkLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDA1OTM8L2J1Zz4gQ2xlYW51cCB0aGF0IExpc3RlbmVyIHN0b3AgYWZ0ZXIgTWFuYWdlciBzdG9wIAogICAgICAgIGF0IFN0YW5kYXJkQ29udGV4dC5zdG9wKCkuIFBhdGNoIGJ5IFN1enVraSBZdWljaGlybyAocGVybykKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40MTc0NzwvYnVnPiBDb3JyZWN0IGV4YW1wbGUgYW50IHNjcmlwdCBmb3IgZGVwbG95IHRhc2suIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40MTc1MjwvYnVnPiBDb3JyZWN0IGVycm9yIG1lc3NhZ2Ugb24gZXhjZXB0aW9uIGluIE1lbW9yeVJlYWxtLgogICAgICAgIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zOTg3NTwvYnVnPiBNaW5vciBjbGVhbnVwIGluIFJlYWxtQmFzZS5pbml0LCBhcyByZXF1ZXN0ZWQgYnkgVGFrYXlvc2hpIEtpbXVyYS4gKHlvYXZzKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQxNDc3PC9idWc+IEFkZCBjb21tb25zLWVsLmphciB0byBiaW4vY2F0YWxpbmEtdGFza3MueG1sLCByZXF1aXJlZCBmb3IgamFzcGVyMiB0YXNrcwogICAgICAgICAgdXNpbmcgRUwuIFBhdGNoIGJ5IERhbmllbCBTYW50b3MuICh5b2F2cykKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40MDE1MDwvYnVnPiBFbnN1cmUgdXNlciBhbmQgcm9sZSBjbGFzc25hbWVzIGFyZSB2YWxpZGF0ZWQgb24gc3RhcnR1cC4gIFBhdGNoIGJ5CiAgICAgICAgICBUb20uICh5b2F2cykKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40MjAzOTwvYnVnPiBMb2cgYSBzdGFjayB0cmFjZSBpZiBhIHNlcnZsZXQgdGhyb3dzIGFuCiAgICAgICAgIFVuYXZhaWxhYmxlRXhjZXB0aW9uLiBQYXRjaCBwcm92aWRlZCBieSBLYXdhc2ltYSBLYXp1aC4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQxOTkwPC9idWc+IEFkZCBzb21lIGFkZGl0aW9uYWwgbWltZS10eXBlIG1hcHBpbmdzLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDE2NTU8L2J1Zz4gRml4IG1lc3NhZ2UgdHJhbnNsYXRpb25zLiBKYXBhbmVzZSB0cmFuc2xhdGlvbnMKICAgICAgICBwcm92aWRlZCBieSBTdXp1a2kgWXVpY2hpcm8uIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40MTkzOTwvYnVnPiBBZGQgY29uZmlndXJhdGlvbiBvcHRpb24gdG8gZGlzYWJsZSBudWxsaW5nIG9mIHN0YXRpYwogICAgICAgIGFuZCBmaW5hbCBmaWVsZHMgb2YgbG9hZGVkIGNsYXNzZXMgd2hlbiBzdG9wcGluZyBhIHdlYiBhcHBsaWNhdGlvbgogICAgICAgIGNsYXNzbG9hZGVyLiBTZXR0aW5nIHRoZSBzeXN0ZW0gcHJvcGVydHkKICAgICAgICBvcmcuYXBhY2hlLmNhdGFsaW5hLmxvYWRlci5XZWJhcHBDbGFzc0xvYWRlci5FTkFCTEVfQ0xFQVJfUkVGRVJFTkNFUyB0bwogICAgICAgIGZhbHNlIHdpbGwgc3RvcCB0aGVzZSBmaWVsZHMgYmVpbmcgc2V0IHRvIG51bGwgb24gY29udGV4dCBzdG9wLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIEZpeCBhIGxvZ2dpbmcgcmVsYXRlZCBtZW1vcnkgbGVhayBpbiBNYW5hZ2VyQmFzZSBhbmQKICAgICAgICBBcHBsaWNhdGlvbkRpc3BhdGNoZXIuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgIDxidWc+NDIzNTQ8L2J1Zz46IEVuc3VyZSBKQVJzIGluIHdlYmFwcHMgYXJlIHNjYW5uZWQgZm9yIFRMRHMgd2hlbiB0aGUKICAgICAgICAgVG9tY2F0IGluc3RhbGxhdGlvbiBwYXRoIGNvbnRhaW5zIHNwYWNlcy4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICAgPGJ1Zz40MjM2MTwvYnVnPjogSGFuZGxlIG11bHRpLXBhcnQgZm9ybXMgd2hlbiBzYXZpbmcgcmVxdWVzdHMgZHVyaW5nCiAgICAgICAgIEZPUk0gYXV0aGVudGljYXRpb24gcHJvY2Vzcy4gUGF0Y2ggcHJvdmlkZWQgYnkgUGV0ZXIgUnVuZ2UuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgIDxidWc+NDI0MDE8L2J1Zz46IFVwZGF0ZSBSVU5OSU5HLnR4dCB3aXRoIGJldHRlciBKUkUvSkRLIGluZm9ybWF0aW9uLgogICAgICAgICAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgICA8YnVnPjQyNDk3PC9idWc+OiBFbnN1cmUgRVRhZyBoZWFkZXIgaXMgcHJlc2VudCBpbiBhIDMwNCByZXNwb25zZS4KICAgICAgICAgUGF0Y2ggcHJvdmlkZWQgYnkgTGVuIFBvcHAuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgIEFsbG93IGZvciBhIGZvcndhcmQvaW5jbHVkZSB0byBjYWxsIGdldEF0dHJpYnV0ZU5hbWVzIG9uIHRoZSBSZXF1ZXN0IGluIGEgc2FuZGJveC4gKGJpbGxiYXJrZXIpCiAgICAgIDwvZml4PgogICAgICA8YWRkPgogICAgICAgIEFuZCBnZXRTZXNzaW9uKCkgb3BlcmF0aW9uIHRvIFN0YW5kYXJkTWFuYWdlciBhbmQgRGVsdGFNYW5hZ2VyIEpNWCBJbnRlcmZhY2UgKHBlcm8pCiAgICAgIDwvYWRkPiAgICAgCiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+CiAgPHN1YnNlY3Rpb24gbmFtZT0iV2ViYXBwcyI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8dXBkYXRlPgogICAgICAgIFVwZGF0ZSBob3N0IGNvbmZpZ3VyYXRpb24gZG9jdW1lbnQgZm9yIG5ldyBiZWhhdmlvdXIgZm9yIGRpcmVjdG9yaWVzCiAgICAgICAgaW4gYXBwQmFzZS4gKG1hcmt0KQogICAgICA8L3VwZGF0ZT4KICAgICAgPHVwZGF0ZT4KICAgICAgICA8YnVnPjM5ODgzPC9idWc+ICBBZGQgbm90ZSB0byBjb250ZXh0IGNvbmZpZ3VyYXRpb24gZG9jdW1lbnQgYWJvdXQgdXNpbmcKICAgICAgICAgIGFudGlSZXNvdXJjZUxvY2tpbmcgb24gYSB3ZWJhcHAgb3V0c2lkZSB0aGUgSG9zdCdzIGFwcEJhc2UgZGlyZWN0b3J5LiAoeW9hdnMpCiAgICAgIDwvdXBkYXRlPgogICAgICA8dXBkYXRlPgogICAgICAgIDxidWc+Mzk1NDA8L2J1Zz4gQWRkIGxpbmsgdG8gaHR0cGQgMi4yIG1vZF9wcm94eV9hanAgZG9jcyBpbiBBSlAgY29ubmVjdG9yIGRvYy4gKHlvYXZzKQogICAgICA8L3VwZGF0ZT4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQxMjg5PC9idWc+OiBDcmVhdGUgY29uZmlnQmFzZSwgc2luY2UgaXQgaXMgbm8gbG9uZ2VyIGNyZWF0ZWQgZWxzZXdoZXJlLgogICAgICAgIFN1Ym1pdHRlZCBieSBTaGl2YSBLdW1hciBIIFIuIChwZXJvKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQyMTAzPC9idWc+OiBVc2UgY29ycmVjdCBuYW1lcyBmb3IgdHJ1c3RzdG9yZUZpbGUsIHRydXN0c3RvcmVUeXBlIGFuZCAKICAgICAgICB0cnVzdHN0b3JlUGFzcyB3aGVuIHNhdmluZyBzZXJ2ZXIueG1sIGluIEFkbWluIHdlYmFwcC4gUGF0Y2ggcHJvdmlkZWQgYnkKICAgICAgICBNYXRoZXVzIEJhc3Rvcy4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQyMDI1PC9idWc+OiBVcGRhdGUgdmFsdmUgZG9jdW1lbnRhdGlvbiB0byByZWZlciB0byBjb3JyZWN0IHJlZ3VsYXIKICAgICAgICBleHByZXNzaW9uIGltcGxlbWVudGF0aW9uLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDE5NTY8L2J1Zz46IERvbid0IHNraXAgdGhlIGNvbm5lY3RvciBhZGRyZXNzIGF0dHJpYnV0ZSB3aGVuCiAgICAgICAgcGVyc2lzdGluZyBzZXJ2ZXIueG1sIGNoYW5nZXMgdmlhIHRoZSBhZG1pbiB3ZWJhcHAuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+CiAgPHN1YnNlY3Rpb24gbmFtZT0iQ295b3RlIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40MDk2MDwvYnVnPiBJbmNvbnNpc3RlbnQgZXhjZXB0aW9uIHR5cGUgdGhyb3duIG9uIHNvY2tldCB0aW1lb3V0IGluCiAgICAgICAgICBJbnRlcm5hbEFwcklucHV0QnVmZmVyLiAgUGF0Y2ggYnkgQ2hyaXN0b3BoZSBQaWVycmV0LiAoeW9hdnMpCiAgICAgIDwvZml4PgogICAgICA8YWRkPgogICAgICAgIDxidWc+NDE2NzU8L2J1Zz4gQWRkIGEgY291cGxlIG9mIERFQlVHLWxldmVsIGxvZ2dpbmcgc3RhdGVtZW50cyB0byBIdHRwMTFQcm9jZXNzb3JzCiAgICAgICAgICB3aGVuIHNlbmRpbmcgZXJyb3IgcmVzcG9uc2VzLiAgUGF0Y2ggYnkgUmFsZiBIYXVzZXIuICh5b2F2cykKICAgICAgPC9hZGQ+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40MjExOTwvYnVnPiBGaXggcmV0dXJuIHZhbHVlIGZvciByZXF1ZXN0LmdldENoYXJhY3RlckVuY29kaW5nKCkgd2hlbgogICAgICAgIENvbnRlbnQtVHlwZSBoZWFkZXJzIGNvbnRhaW4gcGFyYW1ldGVycyBvdGhlciB0aGFuIGNoYXJzZXQuIFBhdGNoIGJ5CiAgICAgICAgTGVpZ2ggTCBLbG90eiBKci4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM2MTU1PC9idWc+IEFsd2F5cyByZXNldCB0aGUgTUIgd2hlbiBkb2luZyBnZXRCeXRlcyBpbiB0aGUgSksgQ29ubmVjdG9yIChiaWxsYmFya2VyKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICBJbXByb3ZlIGxhcmdlLWZpbGUgc3VwcG9ydCBpbiB0aGUgQUpQIENvbm5lY3RvcnMgKGJpbGxiYXJrZXIpCiAgICAgIDwvZml4PgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgogIDxzdWJzZWN0aW9uIG5hbWU9IkNsdXN0ZXIiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPGZpeD4KICAgICAgICBSZWNlaXZlciBjYW4gYWxzbyB1c2UgdGNwTGlzdGVuQWRkcmVzcyB3aXRoIGEgaG9zdG5hbWUuIChyanVuZywgcGVybykKICAgICAgPC9maXg+ICAgICAKICAgICAgPGZpeD4KICAgICAgICBEZWx0YVJlcXVlc3Qgc3luY2hyb25pemVkIGdldFNpemUoKSBhbmQgc2hvdyBsb2cgbWVzc2FnZSBhcyAKICAgICAgICByZWFkRXh0ZXJuYWwoKSBmYWlsdXJlLiAocmp1bmcsIHBlcm8pCiAgICAgIDwvZml4PgogICAgICA8YWRkPgogICAgICAgIEFkZCBEZWx0YU1hbmFnZXIgZXhwaXJlVG9sZXJhbmNlIGF0dHJpYnV0ZSB0byBxdWlja2VyIGF1dG8gZXhwaXJlIGxvbmcgYmFja3VwIHNlc3Npb25zLiAocmp1bmcsIHBlcm8pCiAgICAgIDwvYWRkPgogICAgICA8YWRkPgogICAgICAgIEFkZCBEZWx0YU1hbmFnZXIgdXBkYXRlQWN0aXZlSW50ZXJ2YWxsIGF0dHJpYnV0ZSB0byBzZW5kIGV2ZXJ5IDYwIHNlYyBhIHNlc3Npb24gYWNjZXNzIG1lc3NhZ2UuIChyanVuZywgcGVybykKICAgICAgPC9hZGQ+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zOTg2NjwvYnVnPiBEdXBsaWNhdGUgbmFtZXMgYXBwZW5kZWQgdG8gY2x1c3RlciBtYW5hZ2VyIG5hbWUuICh5b2F2cykKICAgICAgPC9maXg+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+ICAgCiAgPHN1YnNlY3Rpb24gbmFtZT0iSmFzcGVyIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zOTQyNTwvYnVnPiBBZGQgYWRkaXRpb25hbCBzeXN0ZW0gcHJvcGVydHkgcGVybWlzc2lvbiB0bwogICAgICAgIGNhdGFsaW5hLnBvbGljeSBmb3IgcHJlLWNvbXBpbGVkIEpTUHMuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40MTIyNzwvYnVnPiBBZGQgYSBiaXQgb2YgREVCVUctbGV2ZWwgbG9nZ2luZyB0byBKc3BDIHNvIHVzZXJzIGtub3cKICAgICAgICAgIHdoaWNoIGZpbGUgaXMgYmVpbmcgY29tcGlsZWQuICh5b2F2cykKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40MTg2OTwvYnVnPiBUYWdEYXRhLmdldEF0dHJpYnV0ZSgpIHNob3VsZCByZXR1cm4KICAgICAgICBUYWdEYXRhLlJFUVVFU1RfVElNRV9WQUxVRSB3aGVuIHRoZSBhdHRyaWJ1dGUgdmFsdWUgaXMgYW4gRUwgZXhwcmVzc2lvbi4KICAgICAgICAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDIwNzE8L2J1Zz4gRml4IElsbGVnYWxTdGF0ZUV4Y2VwdGlvbiBvbiBtdWx0aXBsZSByZXF1ZXN0cyB0bwogICAgICAgIGFuIHVuYXZhaWxhYmxlIEpTUC4gUGF0Y2ggcHJvdmlkZWQgYnkgS2F3YXNpbWEgS2F6dWguIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgQWZ0ZXIgYSBKU1AgdGhyb3dzIGFuIFVuYXZhaWxhYmxlRXhjZXB0aW9uIGFsbG93IGl0IHRvIGJlIGFjY2Vzc2VkIG9uY2UKICAgICAgICB0aGUgdW5hdmFpbGFibGUgcGVyaW9kIGhhcyBleHBpcmVkLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDIwNzI8L2J1Zz4gRG9uJ3QgY2FsbCBkZXN0cm95KCkgaWYgdGhlIGFzc29jaWF0ZWQgaW5pdCgpIGZhaWxzLgogICAgICAgIFBhdGNoIHByb3ZpZGVkIGJ5IEthd2FzaW1hIEthenVoLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIEZpeCBhIGxvZ2dpbmcgcmVsYXRlZCBtZW1vcnkgbGVhayBpbiBQYWdlQ29udGV4dEltcGwuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40MjQzODwvYnVnPiBEdXBsaWNhdGUgdGVtcG9yYXJ5IHZhcmlhYmxlcyB3ZXJlIGNyZWF0ZWQgd2hlbgogICAgICAgIGpzcDphdHRyaWJ1dGUgd2FzIHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aCBjdXN0b20gdGFncy4gUGF0Y2ggcHJvdmlkZWQKICAgICAgICBieSBCcmlhbiBMZW56LiAobWFya3QpCiAgICAgIDwvZml4PgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgo8L3NlY3Rpb24+Cgo8c2VjdGlvbiBuYW1lPSJUb21jYXQgNS41LjIzIChmaGFuaWspIiBydGV4dD0icmVsZWFzZWQgMjAwNy0wMy0wOSI+CiAgPHN1YnNlY3Rpb24gbmFtZT0iQ2F0YWxpbmEiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQxNjA4PC9idWc+IE1ha2UgbG9nIGxldmVscyBjb25zaXN0ZW50IHdoZW4gU2VydmxldC5zZXJ2aWNlKCkKICAgICAgICB0aHJvd3MgYW4gZXhjZXB0aW9uLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDE2NjY8L2J1Zz4gQ29ycmVjdCBoYW5kbGluZyBvZiBib3VuZGFyeSBjb25kaXRpb25zIGZvcgogICAgICAgIElmLVVubW9kaWZpZWQtU2luY2UgYW5kIElmLU1vZGlmaWVkLVNpbmNlIGhlYWRlcnMuIFBhdGNoIHByb3ZpZGVkIGJ5CiAgICAgICAgU3V6dWtpIFl1aWNoaXJvLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDE2NzQ8L2J1Zz4gRml4IGVycm9yIG1lc3NhZ2VzIHdoZW4gcGFyc2luZyBjb250ZXh0LnhtbCB0aGF0CiAgICAgICAgaW5jb3JyZWN0bHkgcmVmZXJyZWQgdG8gd2ViLnhtbC4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQxNzM5PC9idWc+IENvcnJlY3QgaGFuZGxpbmcgb2Ygc2VydmxldHMgd2l0aCBhIGxvYWQtb24tc3RhcnR1cAogICAgICAgIHZhbHVlIG9mIHplcm8uIFRoZXNlIGFyZSBub3cgdGhlIGZpcnN0IHNlcnZsZXRzIHRvIGJlIHN0YXJ0ZWQuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+CiAgPHN1YnNlY3Rpb24gbmFtZT0iQ295b3RlIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDxmaXg+CiAgICAgICAgUmVxdWVzdHMgd2l0aCBtdWx0aXBsZSBjb250ZW50LWxlbmd0aCBoZWFkZXJzIGFyZSBub3cgcmVqZWN0ZWQuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+Cjwvc2VjdGlvbj4KCjxzZWN0aW9uIG5hbWU9IlRvbWNhdCA1LjUuMjIgKGZoYW5paykiIHJ0ZXh0PSJub3QgcmVsZWFzZWQiPgogIDxzdWJzZWN0aW9uIG5hbWU9IkdlbmVyYWwiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPGZpeD4KICAgICAgICBGaXggcmVncmVzc2lvbiBpbiBidWlsZCB0aGF0IHByZXZlbnRlZCBjb25uZWN0b3JzIGZyb20gYnVpbGRpbmcuCiAgICAgICAgKG1hcmt0KQogICAgICA8L2ZpeD4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KPC9zZWN0aW9uPgoKPHNlY3Rpb24gbmFtZT0iVG9tY2F0IDUuNS4yMSAoZmhhbmlrKSIgcnRleHQ9Im5vdCByZWxlYXNlZCI+CiAgPHN1YnNlY3Rpb24gbmFtZT0iQ2F0YWxpbmEiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQxNDAxPC9idWc+OiBTdGFuZGFyZFNlcnZpY2UuZ2V0Q29ubmVjdG9yTmFtZXMoKSByZXR1cm4gYXJyYXkgb2YgCiAgICAgICAgQ29ubmVjdG9yIEpNWCBvYmplY3RuYW1lcy4gKHBlcm8pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+Mjk3Mjc8L2J1Zz46IElmIGVudi1lbnRyeSB2YWx1ZXMgaW4gd2ViLnhtbCBhcmUgY2hhbmdlZCB0aGVuCiAgICAgICAgZW5zdXJlIG5ldyB2YWx1ZXMgYXJlIGFwcGxpZWQgd2hlbiBjb250ZXh0IGlzIHJlbG9hZGVkLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzQ5NTY8L2J1Zz46IEVuc3VyZSByZXF1ZXN0IGFuZCByZXNwb25zZSBvYmplY3RzIHBhc3NlZCB0byBhCiAgICAgICAgUmVxdWVzdERpc3BhdGNoZXIgbWVldCB0aGUgcmVxdWlyZW1lbnRzIG9mIFNSVi44LjIgYW5kCiAgICAgICAgU1JWLjE0LjIuNS4xLiBUaGlzIGlzIGRpc2FibGVkIGJ5IGRlZmF1bHQuIFRoZSBKYXZhIG9wdGlvbiAKICAgICAgICA8Y29kZT4tRG9yZy5hcGFjaGUuY2F0YWxpbmEuU1RSSUNUX1NFUlZMRVRfQ09NUExJQU5DRT10cnVlPC9jb2RlPgogICAgICAgIGlzIHJlcXVpcmVkIHRvIGVuYWJsZSB0aGlzIHRlc3QuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zNjI3NDwvYnVnPjogV2hlbiBpbmNsdWRpbmcgc3RhdGljIGNvbnRlbnQgd2l0aCB0aGUKICAgICAgICBEZWZhdWx0U2VydmxldCBhbHNvIHRyZWF0IGNvbnRlbnQgdHlwZXMgZW5kaW5nIGluIHhtbCBhcyB0ZXh0LgogICAgICAgIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zNjk3NjwvYnVnPjogRG9uJ3QgdXNlIENBVEFMSU5BX09QVFMgd2hlbiBzdG9wcGluZyBUb21jYXQuIFRoaXMKICAgICAgICBhbGxvd3Mgb3B0aW9ucyBmb3Igc3RhcnRpbmcgYW5kIHN0b3BwaW5nIHRvIGJlIHNldCBvbiBKQVZBX09QVFMgYW5kCiAgICAgICAgb3B0aW9ucyBmb3Igc3RhcnRpbmcgb25seSB0byBiZSBzZXQgb24gQ0FUQUxJTkFfT1BUUy4gV2l0aG91dCB0aGlzCiAgICAgICAgZml4LCBzb21lIHN0YXJ0dXAgb3B0aW9ucyAoZWcgdGhlIHBvcnQgZm9yIHJlbW90ZSBKTVgpIHdvdWxkIGNhdXNlCiAgICAgICAgc3RvcCB0byBmYWlsLiBCYXNlZCBvbiBhIGZpeCBzdWdnZXN0ZWQgYnkgTWljaGFlbCBWb3JidXJnZXIuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zNzA3MDwvYnVnPjogVXBkYXRlIG1iZWFuIG5hbWUgZG9jdW1lbnRhdGlvbiB0byBpbmNsdWRlIHRoZQogICAgICAgIFN0YW5kYXJkV3JhcHBlci4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM3MzU2PC9idWc+OiBFbnN1cmUgc2Vzc2lvbnMgdGltZSBvdXQgY29ycmVjdGx5LiBUaGlzIGhhcyBiZWVuCiAgICAgICAgZml4ZWQgYnkgcmVtb3ZpbmcgdGhlIGFjY2Vzc0NvdW50IGZlYXR1cmUgYnkgZGVmYXVsdC4gVGhpcyBmZWF0dXJlCiAgICAgICAgcHJldmVudHMgdGhlIHNlc3Npb24gZnJvbSB0aW1pbmcgb3V0IHdoaWxzdCByZXF1ZXN0cyB0aGF0IGxhc3QKICAgICAgICBsb25nZXIgdGhhbiB0aGUgc2Vzc2lvbiB0aW1lIG91dCBhcmUgYmVpbmcgcHJvY2Vzc2VkLiBUaGlzIGZlYXR1cmUKICAgICAgICBpcyBlbmFibGVkIGJ5IHNldHRpbmcgdGhlIEphdmEgb3B0aW9uIAogICAgICAgIDxjb2RlPi1Eb3JnLmFwYWNoZS5jYXRhbGluYS5TVFJJQ1RfU0VSVkxFVF9DT01QTElBTkNFPXRydWU8L2NvZGU+CiAgICAgICAgVGhlIGZlYXR1cmUgaXMgbm93IGltcGxlbWVudGVkIHdpdGggc3luY2hyb25pemF0aW9uIHdoaWNoIGFkZHJlc3NlcwogICAgICAgIHRoZSB0aHJlYWQgc2FmZXR5IGlzc3VlcyBhc3NvY2lhdGVkIHdpdGggdGhlIG9yaWdpbmFsIGJ1ZyByZXBvcnQuCiAgICAgICAgKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM3NDM5PC9idWc+OiBVcGRhdGUgZG9jdW1lbnRhdGlvbiBmb3IgRW5naW5lIGNvbXBvbmVudCB0byBhZGQKICAgICAgICB0aGUgcmVxdWlyZW1lbnQgdGhhdCB0aGUgbmFtZSBtdXN0IGJlIHVuaXF1ZS4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM3NDU4PC9idWc+OiBBZGQgc3luY3MgdG8gdGhlIFdlYmFwcENsYXNzbG9hZGVyIHRvIGFkZHJlc3MKICAgICAgICByYXJlIGlzc3VlcyB3aGVuIG11bHRpcGxlIHRocmVhZHMgYXR0ZW1wdCB0byBsb2FkIHRoZSBzYW1lIGNsYXNzCiAgICAgICAgY29uY3VycmVudGx5LiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+Mzc1MDk8L2J1Zz46IERvIG5vdCByZW1vdmUgd2hpdGVzcGFjZSBmcm9tIHRoZSBlbmQgb2YgdmFsdWVzCiAgICAgICAgZGVmaW5lZCBpbiBsb2dnaW5nLnByb3BlcnRpZXMgZmlsZXMuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zODE5ODwvYnVnPjogQWRkIHJlZmVyZW5jZSB0byBDb250ZXh0IGRvY3VtZW50YXRpb24gZnJvbSBIb3N0CiAgICAgICAgZG9jdW1lbnRhdGlvbiB0aGF0IGV4cGxhaW5zIGhvdyBDb250ZXh0IG5hbWUgaXMgb2J0YWluZWQgZnJvbSB0aGUKICAgICAgICBDb250ZXh0IGZpbGVuYW1lLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzkwODg8L2J1Zz46IFByZXZlbnQgaW5maW50ZSBsb29wcyB3aGVuIGFuIGV4Y2VwdGlvbiBpcyB0aHJvd24KICAgICAgICB0aGF0IHJldHVybnMgaXRzZWxmIGZvciBnZXRSb290Q2F1c2UoKS4gQmFzZWQgb24gYSBwYXRjaCBieSBXb3V0ZXIKICAgICAgICBaZWxsZS4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM5NDM2PC9idWc+OiBDb3JyZWN0IE1JTUUgdHlwZSBmb3IgU1ZHLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+Mzk2Mjc8L2J1Zz46IEpVTEkgbm8gbG9uZ2VyIGlnbm9yZXMgYSAiLmxldmVsPVhYWCIgZGlyZWN0aXZlCiAgICAgICAgaW4gbG9nZ2luZy5wcm9wZXJ0aWVzLiBQYXRjaCBwcm92aWRlZCBieSBSb2dlciBLZWF5cyBhbmQgUmljaGFyZAogICAgICAgIEZlYXJuLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+Mzk3MjQ8L2J1Zz46IFJlbW92aW5nIHRoZSBsYXN0IHZhbHZlIGZyb20gYSBwaXBlbGluZSBkaWQgbm90CiAgICAgICAgcmV0dXJuIHRoZSBwaXBlbGluZSB0byB0aGUgb3JpZ2luYWwgc3RhdGUuIFBhdGNoIHByb3ZpZGVkIGJ5CiAgICAgICAgRGF2aWQgR2Fnb24uIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40MDM2NzwvYnVnPjogVXBkYXRlIEpLIGF1dG8gY29uZmlndXJhdGlvbiBkb2N1bWVudGF0aW9uIHRvIGNsYXJpZnkKICAgICAgICB0aGF0IHdvcmtlcnMucHJvcGVydGllcyBtdXN0IGFsc28gZXhpc3QuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40MDUyNDwvYnVnPjogSHR0cFNlcnZsZXRSZXF1ZXN0LmdldEF1dGhUeXBlKCkgbm93IHJldHVybnMKICAgICAgICBDTElFTlRfQ0VSVCByYXRoZXIgdGhhbiBDTElFTlQtQ0VSVCBmb3IgY2VydGlmaWNhdGUgYXV0aGVudGljYXRpb24KICAgICAgICBhcyBwZXIgdGhlIHNwZWMuIE5vdGUgdGhhdCB3ZWIueG1sIGNvbnRpbnVlcyB0byB1c2UgQ0xJRU5ULUNFUlQgdG8KICAgICAgICBzcGVjaWZ5IHRoZSBjZXJ0aWZpY2F0ZSBhdXRoZW50aWNhdGlvbiBzaG91bGQgYmUgdXNlZC4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQwNTI2PC9idWc+OiBBZGQgc3VwcG9ydCBmb3IgSlBEQV9PUFRTIHRvIGNhdGFsaW5hLmJhdCBhbmQgYWRkIGEKICAgICAgICBKUERBX1NVU1BFTkQgZW52aXJvbm1lbnQgdmFyaWFibGUgdG8gYm90aCBzdGFydHVwIHNjcmlwdHMuIFBhdGNoCiAgICAgICAgcHJvdmlkZWQgYnkgS3VydCBSb3kuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40MDUyODwvYnVnPjogQWRkIG1pc3NpbmcgbWVzc2FnZSBsb2NhbGlzYXRpb25zIGFzIHByb3ZpZGVkIGJ5CiAgICAgICAgQmVuIENsaWZmb3JkLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDA1ODU8L2J1Zz46IEZpeCBwYXJhbWV0ZXJpc2VkIGNvbnN0cnVjdG9yIGZvciBvLmEuanVsaS5GaWxlSGFuZGxlcgogICAgICAgIHNvIHBhcmFtZXRlcnMgaGF2ZSBhbiBlZmZlY3QuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40MDYyNTwvYnVnPjogU3RvcCBDR0lTZXJ2bGV0IHN3YWxsb3dpbmcgdGhlIHJvb3QgY2F1c2Ugb2YgYW4KICAgICAgICBleGNlcHRpb24uIFBhdGNoIHByb3ZpZGVkIGJ5IFRha2F5b3NoaSBLaW11cmEuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40MDcyMzwvYnVnPjogQ29ycmVjdCB0YWJsZSBjcmVhdGlvbiBleGFtcGxlIGluIEphdmFEb2MgZm9yCiAgICAgICAgSkRCQ0FjY2Vzc0xvZ1ZhbHZlLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDA4MDI8L2J1Zz46IEFkZCBqc3AtYXBpLmphciB0byBmaWxlc2V0IGluIGNhdGFsaW5hLXRhc2tzLnhtbCBhcyBwcm92aWRlZCBieQogICAgICAgIERhbmllbCBTYW50b3MuIChwZXJvKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQwODE3PC9idWc+OiBDb3JyZWN0IHByb2JsZW0gd2hlcmUgQ0dJIHNjcmlwdHMgaW4gdGhlIHJvb3Qgb2YgdGhlCiAgICAgICAgUk9PVCBjb250ZXh0IHRocmV3IGEgPGNvZGU+U3RyaW5nSW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbjwvY29kZT4uCiAgICAgICAgKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPHVwZGF0ZT4KICAgICAgICBTZXQgdGhlIDxjb2RlPlNDUklQVF9GSUxFTkFNRTwvY29kZT4gZW52aXJvbm1lbnQgdmFyaWFibGUgcmVxdWlyZWQKICAgICAgICBieSBQSFAgd2hlbiB1c2luZyB0aGUgQ0dJU2VydmxldCB0byBleGVjdXRlIFBIUC4gKG1hcmt0KQogICAgICA8L3VwZGF0ZT4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQwODIzPC9idWc+OiBVcGRhdGUgY29udGV4dCBkb2MgdG8gY2xhcmlmeSB1c2Ugb2YgUk9PVC54bWwsCiAgICAgICAgbXVsdGktbGV2ZWwgY29udGV4dCBwYXRocyBhbmQgdG8gZnVydGhlciBkaXNjb3VyYWdlIHVzZSBvZiBzZXJ2ZXIueG1sCiAgICAgICAgKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQwODQ0PC9idWc+OiBBZGQgYWRkaXRpb25hbCBzeW5jcyB0byBKREJDUmVhbG0gdG8gcmVzb2x2ZSBOUEUgd2hlbgogICAgICAgIHR3byB1c2VycyB0cnkgdG8gYXV0aGVudGljYXRlIHVzaW5nIERJR0VTVCBhdXRoZW50aWNhdGlvbiBhdCB0aGUgc2FtZQogICAgICAgIHRpbWUuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40MDg2MDwvYnVnPjogTG9nIGV4Y2VwdGlvbnMgYW5kIG90aGVyIHByb2JsZW1zIGR1cmluZyBwYXJhbWV0ZXIKICAgICAgICBwcm9jZXNzaW5nLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDA5MDE8L2J1Zz46IEVuY29kZSBkaXJlY3RvcnkgbGlzdGluZyBvdXRwdXQuIEJhc2VkIG9uIGEgcGF0Y2gKICAgICAgICBwcm92aWRlZCBieSBDaHJpcyBIYWxzdGVhZC4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQwOTI5PC9idWc+OiBDb3JyZWN0IEphdmFEb2MgZm9yIFN0YW5kYXJkQ2Fsc3NMb2FkZXIuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40MTAwODwvYnVnPjogQWxsb3cgUE9TVCB0byBiZSB1c2VkIGZvciBpbmRleGVkIHF1ZXJpZXMgd2l0aCBDR0kKICAgICAgICBTZXJ2bGV0LiBQYXRjaCBwcm92aWRlZCBieSBDaHJpcyBIYWxzdGVhZC4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQxMDIwPC9idWc+OiBJbXByb3ZlIGVycm9yIG1lc3NhZ2Ugd2hlbiBjdXN0b20gZXJyb3IgcmVwb3J0IFZhbHZlCiAgICAgICAgZmFpbHMgdG8gbG9hZC4gQWxzbyByZW1vdmUgcmVxdWlyZW1lbnQgdGhhdCBjdXN0b20gZXJyb3IgcmVwb3J0IFZhbHZlcwogICAgICAgIGV4dGVuZCBWYWx2ZUJhc2UuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40MTIxNzwvYnVnPjogU2V0IHNlY3VyZSBhdHRyaWJ1dGUgb24gU1NPIGNvb2tpZSB3aGVuIGNvb2tpZSBpcwogICAgICAgIGNyZWF0ZWQgZHVyaW5nIGEgc2VjdXJlIHJlcXVlc3QuIFBhdGNoIHByb3ZpZGVkIGJ5IENocmlzIEhhbHN0ZWFkLgogICAgICAgIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgRW5zdXJlIEFjY2VwdC1MYW5ndWFnZSBoZWFkZXJzIGNvbmZvcm0gdG8gUkZDIDI2MTYuIElnbm9yZSB0aGVtIGlmCiAgICAgICAgdGhleSBkbyBub3QuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgTWFrZSBwcm92aWRlZCBpbnN0YW5jZXMgb2YgUmVxdWVzdERpc3BhdGNoZXIgdGhyZWFkIHNhZmUuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgRml4IGZvcm1hdHRpbmcgb2YgQ0dJIHZhcmlhYmxlIFNDUklQVF9OQU1FLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzQ2NDM8L2J1Zz46IEltcHJvdmVkIGRvY3VtZW50YXRpb24gZm9yIHBlci11c2VyIC8gcGVyLXNlc3Npb24gY2xpZW50QXV0aAogICAgICAgIHVzYWdlIGluIFNTTCBBdXRoZW50aWNhdG9yLiAgRG9jcyBwcm92aWRlZCBieSBqYWNrIGFuZCBSYWxmIEhhdXNlci4gICh5b2F2cykKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40MDY2ODwvYnVnPjogVXBkYXRlIHJlbGVhc2Ugbm90ZXMgYW5kIHJlYWRtZSBmaWxlcyBzcGVjaWZpYyB0byB2NS41LjIwIHRvIAogICAgICAgIG5vdGlmeSB1c2VycyBvZiBtaXNzaW5nIE1haWxTZXNzaW9uRmFjdG9yeSBpbiBkaXN0cmlidXRpb24sIHN1Z2dlc3Qgd29ya2Fyb3VuZHMsCiAgICAgICAgYW5kIGxpbmsgdG8gcmVsZXZhbnQgQnVnemlsbGEgaXNzdWUuICh5b2F2cykKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zNzk3NzwvYnVnPjogYWRhcHQgQlVJTERJTkcudHh0IGFuZCBuZXQgYnVpbGQueG1sIGZvciBTVk4uICBQYXRjaCBieQogICAgICAgIENocmlzdG9waGVyIFNhaG53YWxkdC4gKHlvYXZzKQogICAgICA8L2ZpeD4KICAgICAgPHVwZGF0ZT4KICAgICAgICA8YnVnPjM5MDU1PC9idWc+OiBMaW5rIHRvIHNhbXBsZSB3b3JrYXJvdW5kIGNvZGUgZm9yIHVzaW5nIEpTUjE2MCBKTVggbW9uaXRvcmluZwogICAgICAgIHdpdGggYSBsb2NhbCBmaXJld2FsbC4gIFRoYW5rcyB0byBHZW9yZ2UgTGluZGhvbG0gZm9yIHRoZSBwYXRjaC4gKHlvYXZzKQogICAgICA8L3VwZGF0ZT4KICAgICAgPHVwZGF0ZT4KICAgICAgICA8YnVnPjM5NDc2PC9idWc+OiBhZGQgeG1sIGRlY2xhcmF0aW9uIHRvIG1vc3QgYnVpbGQueG1sIGZpbGVzLCBhcyBzdWdnZXN0ZWQgYnkKICAgICAgICBHcmVnb3J5IFMuIEhvZXJuZXIgU3IuICh5b2F2cykKICAgICAgPC91cGRhdGU+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40MDMyNjwvYnVnPjogc3RvcCB1c2luZyBGaWxlI2RlbGV0ZU9uRXhpdCBpbiBEZWZhdWx0U2VydmxldCB0byBhdm9pZAogICAgICAgIEpWTSBtZW1vcnkgbGVhaywgYXMgc3VnZ2VzdGVkIGJ5IHF1YXJ0ei4gKHlvYXZzKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQwMTkyPC9idWc+OiB1cGRhdGUgc2V0dXAuaHRtbCBub3RlcyByZWdhcmRpbmcgV2luZG93cyB0cmF5IGljb24uICh5b2F2cykKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40MDE3NzwvYnVnPjogYWRkIG1vcmUgd2FybmluZ3MgdG8gZG9jdW1lbnRhdGlvbiBhYm91dCBSZXF1ZXN0RHVtcGVyVmFsdmUKICAgICAgICBjaGFyYWN0ZXIgZW5jb2RpbmcuICAoeW9hdnMpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzkyNTU8L2J1Zz46IE5QRSBpbiBBdXRoZW50aWNhdG9yQmFzZSB3aGVuIGxvZ2dpbmcgbGV2ZWwgaXMgc2V0IHRvIERFQlVHCiAgICAgICAgYW5kIG5vIHByaW5pY3BhbCBmb3VuZC4gKHlvYXZzKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQxNDM3PC9idWc+OiBNYWtlIGxvZyBtZXNzYWdlcyBhbmQgbG9nbGV2ZWwgY29uc2lzdGVudCBkdXJpbmcgQ29udGV4dAogICAgICAgIHN0YXJ0LiBQYXRjaCBwcm92aWRlZCBieSBTdXp1a2kgWXVpY2hpcm8uIChtYXJrdCkKICAgICAgPC9maXg+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+IAogIDxzdWJzZWN0aW9uIG5hbWU9IkNveW90ZSI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzgzMzI8L2J1Zz46IEFkZCBiYWNrbG9nIGF0dHJpYnV0ZSB0byBDaGFubmVsU29ja2V0IGFzIHByb3ZpZGVkIGJ5CiAgICAgICAgIFRha2F5b3NoaSBLaW11cmEuIChwZXJvKQogICAgICA8L2ZpeD4KICAgICAgPHVwZGF0ZT4KICAgICAgICBCYWNrcG9ydCBwYWNrZXRTaXplIGZlYXR1cmUgZnJvbSBUb21jYXQgNi4wLnggYXQgc3RhbmRhcmQgY295b3RlIEFKUCBKayBoYW5kbGVyLiAocGVybykKICAgICAgPC91cGRhdGU+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40MDc3MTwvYnVnPjogRml4IGltcGxlbWVudGF0aW9uIG9mCiAgICAgICAgU2F2ZWRSZXF1ZXN0SW5wdXRGaWx0ZXIuZG9SZWFkKCkgc28gUE9TVCBkYXRhIG1heSBiZSByZWFkIHVzaW5nIGEKICAgICAgICBWYWx2ZSBvciBGaWx0ZXIuIFBhdGNoIHByb3ZpZGVkIGJ5IE1pY2hhZWwgRHVmZWwuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40MTAxNzwvYnVnPjogUmVzdG9yZSBiZWhhdmlvdXIgb2YgTWVzc2FnZUJ5dGVzLnNldFN0cmluZyhudWxsKS4KICAgICAgICAocmVtbS9tYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40MTA1NzwvYnVnPjogTW9kaWZ5IFN0cmluZ0NhY2hlIHRvIGFkZCBhIGNvbmZpZ3VyYWJsZSB1cHBlciBib3VuZAogICAgICAgIHRvIHRoZSBsZW5ndGggb2YgY2FjaGVkIHN0cmluZ3MuIChyZW1tL21hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM4Nzc0PC9idWc+OiBDaGVjayBqYXZheC5uZXQuc3NsLmtleVN0b3JlUGFzc3dvcmQgc3lzdGVtIHByb3BlcnR5IGFzIGEgc2Vjb25kYXJ5CiAgICAgICAgc291cmNlIGZvciBrZXlzdG9yZSBwYXNzd29yZCBpbiBKU1NFU29ja2V0RmFjdG9yeSwgYXMgc3VnZ2VzdGVkIGJ5IFRlZCBYLiBUb3RoLiAoeW9hdnMpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+Mzk0MDI8L2J1Zz46IE1vZGlmeSBleGlzdGluZyBWYXJ5IEhUVFAgaGVhZGVyLCByYXRoZXIgdGhhbiBvdmVyd3JpdGUgaXQsIGlmIGl0CiAgICAgICAgZXhpc3RzIHdoZW4gdXNpbmcgR1ppcCBjb21wcmVzc2lvbi4gIFBhdGNoIGJ5IE1hdHRoZXcgQ29va2UuICh5b2F2cykKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40MDI0MTwvYnVnPjogQ2F0Y2ggRXhjZXB0aW9ucyBpbnN0ZWFkIG9mIFRocm93YWJsZXMgaW4gRGVmYXVsdCBhbmQgU1NJIHNlcnZsZXRzLgogICAgICAgIEFsc28gaW1wcm92ZSByZWxldmFudCBsb2dnaW5nIHdoaWxlIHdlJ3JlIGF0IGl0LiAoeW9hdnMpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDAxMzM8L2J1Zz46IEJldHRlciBlcnJvciBtZXNzYWdlIHdoZW4gY29udGV4dCBuYW1lIGlzIG5vdCBhdmFpbGFibGUgb24gc3RhcnR1cCwKICAgICAgICBhcyBzdWdnZXN0ZWQgYnkgQW5kcmVhcyBQbGVzbmVyIEphY29ic2VuLiAoeW9hdnMpCiAgICAgIDwvZml4PgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPiAKICA8c3Vic2VjdGlvbiBuYW1lPSJKYXNwZXIiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM5OTc1PC9idWc+OiBkb24ndCBoYXZlIHN0YXRpYyBMb2cgcmVmZXJlbmNlcyB0byBwcmV2ZW50CiAgICAgICAgY2xhc3Nsb2FkZXIgbGVha3MuICh5b2F2cykKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40MDEwNDwvYnVnPjogV2hlbiBkaXNwbGF5aW5nIEpTUCBzb3VyY2UgYWZ0ZXIgYW4gZXhjZXB0aW9uLCBoYW5kbGUKICAgICAgICBpbmNsdWRlZCBmaWxlcy4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQwNzk3PC9idWc+OiBUaGlzIHdhcyBhIHJlZ3Jlc3Npb24gYXMgYSByZXN1bHQgb2YgdGhlIGZpeCBmb3IKICAgICAgICA8YnVnPjMzNDA3PC9idWc+LiBUTEQgdmFsaWRhdGlvbiB3YXMgZmFpbGluZyBhcyBhIHJlc3VsdCBvZiB0aGUgdXNlCiAgICAgICAgb2YgdGhlIGVzY2FwZSBjaGFyYWN0ZXIgKDB4MWIpIGFzIGEgdGVtcG9yYXJ5IHJlcGxhY2VtZW50IGZvciBcJC4KICAgICAgICBBbiBhbHRlcm5hdGl2ZSBjaGFyYWN0ZXIgKDB4ZTAwMCkgZnJvbSB0aGUgdW5pY29kZSBwcml2YXRlIHVzZSByYW5nZQogICAgICAgIGlzIG5vdyB1c2VkLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDEwNTc8L2J1Zz46IE1ha2UganNwOnBsdWdpbiBvdXRwdXQgWEhUTUwgY29tcGxpYW50LiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDEzMjc8L2J1Zz46IFNob3cgZnVsbCBVUkkgZm9yIGEgNDA0LiBQYXRjaCBwcm92aWRlZCBieSBWaWpheS4KICAgICAgICAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDEyNjU8L2J1Zz46IEFsbG93IEpzcFNlcnZsZXQgY2hlY2tJbnRlcnZhbCBpbml0IHBhcmFtZXRlciB0byBiZQogICAgICAgIGV4cGxpY2l0bHkgc2V0IHRvIHRoZSBzdGF0ZWQgZGVmYXVsdCB2YWx1ZSBvZiB6ZXJvIGJ5IHJlbW92aW5nIHRoZQogICAgICAgIGNvZGUgdGhhdCByZXNldHMgaXQgdG8gMzAwIGlmIGV4cGxpY2l0bHkgc3BlY2lmaWVkIGFzIHplcm8uIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgRGlzcGxheSB0aGUgSlNQIHNvdXJjZSB3aGVuIGEgY29tcGlsYXRpb24gZXJyb3Igb2NjdXJzIGFuZCBkaXNwbGF5CiAgICAgICAgdGhlIGNvcnJlY3QgbGluZSBudW1iZXIgcmF0aGVyIHRoYW4gc3RhcnQgb2YgYSBzY3JpcHRsZXQgYmxvY2suIChtYXJrdCkKICAgICAgPC9maXg+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+IAogIDxzdWJzZWN0aW9uIG5hbWU9IldlYmFwcHMiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM0OTUyPC9idWc+OiBDbGFyaWZ5IHRoYXQgdGhlIFdpbmRvd3MgSW5zdGFsbGVyIGFsd2F5cyBpbnN0YWxscwogICAgICAgIGEgV2luZG93cyBzZXJ2aWNlLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzU5Njg8L2J1Zz46IE1ha2UgZW52aXJvbm1lbnQgZW50cnkgcHJvcGVydGllcyBpbnB1dCBhIHRleHQgYXJlYS4KICAgICAgICBQYXRjaCBwcm92aWRlZCBieSBUcmlzdGFuIE1hcmx5LiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+Mzc1ODg8L2J1Zz46IEZpeCBjcmVhdGlvbiBvZiBKTkRJIFJlYWxtIGluIGFkbWluIGFwcGxpY2F0aW9uLiBQYXRjaAogICAgICAgIHByb3ZpZGVkIGJ5IFRlcnJ5IFpob3UuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zODA0ODwvYnVnPjogRml4IG1lbW9yeSBsZWFrIGFzc29hY2lhdGVkIHdpdGggdXNlIG9mIGV4cHJlc3Npb24KICAgICAgICBsYW5ndWFnZSBpbiBKU1BzLiBQYXRjaCBwcm92aWRlZCBieSBUYXJhcyBUaWVsa2VzLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+Mzk1NzI8L2J1Zz46IEltcHJvdmVtZW50cyB0byBDb21wcmVzc2lvbkZpbHRlciBleGFtcGxlIHByb3ZpZGVkIGJ5CiAgICAgICAgRXJpYyBIZWRzdHL2bS4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPHVwZGF0ZT4KICAgICAgICA8YnVnPjQwNTA3PC9idWc+OiBVcGRhdGUgaG9zdC1tYW5hZ2VyIGFuZCBzZXJ2bGV0LWV4YW1wbGVzIHdlYi1hcHBzIHRvCiAgICAgICAgdXNlIHRoZSBzZXJ2bGV0IDIuNCB4c2QuIFBhdGNoIHByb3ZpZGVkIGJ5IENocmlzIEhhbHN0ZWFkLiAobWFya3QpCiAgICAgIDwvdXBkYXRlPgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDA1ODE8L2J1Zz46IEFkZCBpbmZvcm1hdGlvbiBvbiB0aGUgdXNlIG9mIGEgc3ltYmxvaWMgbGluayBhcyB0aGUKICAgICAgICBkb2NCYXNlIGZvciBhIENvbnRleHQgdG8gdGhlIENvbnRleHQgZG9jdW1lbnRhdGlvbi4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQwNjMzPC9idWc+OiBSZW1vdmUgcmVmZXJlbmNlcyB0byB0aGUgRGVmYXVsdENvbnRleHQgZnJvbSB0aGUKICAgICAgICBkb2N1bWVudGF0aW9uLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDA2Nzc8L2J1Zz46IFVwZGF0ZSBTU0wgZG9jdW1lbnRhdGlvbiB0byBpbmRpY2F0ZSB0aGF0IFBLQ1MxMQogICAgICAgIGtleXN0b3JlcyBtYXkgYmUgdXNlZC4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQwNzE0PC9idWc+OiBBZG1pbiB3ZWJhcHAgbm8gbG9uZ2VyIHJlcXVpcmVzIGEgdXNlcm5hbWUgZm9yIGEKICAgICAgICBEYXRhU291cmNlIHNpbmNlIGl0IGlzIG5vdCByZXF1aXJlZCBpbiBhbGwgY2FzZXMuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40MDcyMDwvYnVnPjogRml4IGV4Y2VwdGlvbiBpbiBhZG1pbiB3ZWJhcHAgd2hlbiBhZGRpbmcgYSBncm91cCB0bwogICAgICAgIGEgdXNlci4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjQwODc0PC9idWc+OiBDb3JyZWN0IGxvZzRqIGNvbmZpZ3VyYXRpb24gaW4gZG9jdW1lbnRhdGlvbiB3ZWJhcHAuCiAgICAgICAgUGF0Y2ggcHJvdmlkZWQgYnkgRnJhbmNrIEJvcmVsLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDA5OTk8L2J1Zz46IEFkZCB0cnVzdCBzdG9yZSBjb25maWd1cmF0aW9uIGZvciBTU0wgY29ubmVjdG9ycyB0bwogICAgICAgIHRoZSBhZG1pbiB3ZWJhcHAuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40MTA1MTwvYnVnPjogQWRkIGluZm9ybWF0aW9uIG9uIGtleXN0b3JlIGFsaWFzZXMgYW5kIGNhc2UKICAgICAgICBzZW5zaXRpdml0eSB0byBTU0wgSE9XLVRPLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDExODI8L2J1Zz46IFVwZGF0ZSB0aGUgSmFzcGVyIGRvY3VtZW50YXRpb24gZm9yIHRoZSBjbGFzc3BhdGgKICAgICAgICBhdHRyaWJ1dGUuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40MTQ5MzwvYnVnPjogRml4IGhhbmRsaW5nIG9mIEFQUiBjb25uZWN0b3JzIGluIEFkbWluIHdlYmFwcC4KICAgICAgICAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDE1MTI8L2J1Zz46IFZlcnNpb24gbnVtYmVyIHdhcyBub3QgaW5zZXJ0ZWQgaW4gcmVsZWFzZSBub3Rlcy4KICAgICAgICAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDAyNTc8L2J1Zz46IFVwZGF0ZSBNYW5hZ2VyIHdlYmFwcCBob3d0byBvbiByZW1vdGUgZGVwbG95bWVudCB0byByZWZsZWN0CiAgICAgICAgbmVlZCBmb3IgZXhwbGljaXQgcGF0aCBpbiBvbmUgc3BlY2lmaWMgdXNlLWNhc2UuICBUaGFua3MgdG8gVmVua2F0ZXNoIEpheWFyYW1hbi4gKHlvYXZzKQogICAgICA8L2ZpeD4KICAgICAgPHVwZGF0ZT4KICAgICAgICA8YnVnPjQwMTYwPC9idWc+OiBhZGQgcmVmZXJlbmNlIHRvIHRoZSBGaWx0ZXIgcHJvcG9zZWQgaW4gdGhpcyBCdWd6aWxsYSBpdGVtIHRvIHRoZSBXZWJkYXZTZXJ2bGV0LgogICAgICAgIFdoaWxlIGF0IGl0LCBnaXZlIHRoZSBXZWJkYXZTZXJ2bGV0IHNvbWUgbG9uZy1vdmVyZHVlIFRMQyBieSBjbGVhbmluZyB1cCBzb21lIG9mIHRoZSBvbGQgZGF0YQogICAgICAgIHN0cnVjdHVyZXMgaW4gZmF2b3Igb2YgbW9kZXJuIChidXQgc3RpbGwgSkRLIDEuNC1jb21wbGlhbnQpIGludGVyZmFjZXMuICh5b2F2cykKICAgICAgPC91cGRhdGU+CiAgICAgIDxkb2NzPgogICAgICAgIEFkZCBhIHZpcnR1YWwgaG9zdGluZyBob3ctdG8gY29udHJpYnV0ZWQgYnkgSGFzc2FuIFNjaHJvZWRlci4gKG1hcmt0KQogICAgICA8L2RvY3M+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+IAogIDxzdWJzZWN0aW9uIG5hbWU9IkNsdXN0ZXIiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPGFkZD4KICAgICAgICBBZGQgY2x1c3RlcmVkIFNTTyBjb2RlIGFuZCBiYWNrcG9ydCBmZWF0dXJlIGZyb20gVG9tY2F0IDYuMC54LAogICAgICAgIHN1Ym1pdHRlZCBieSBGYWJpZW4gQ2FycmlvbiAocGVybykKICAgICAgPC9hZGQ+ICAgIAogICAgICA8YWRkPgogICAgICAgIEFkZCBiZXR0ZXIgcmVjb3ZlcnkgYXQgRmFzdEFzeW5jUXVldWVTZW5kZXIuIE1hZGUgdGhlIHN0YXJ0ZWd5IG1vcmUgcm9idXN0IGZvciB0ZW1wb3JhcnkgY29ubmVjdGlvbiBwcm9ibGVtcyAocGVybykKICAgICAgPC9hZGQ+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+ICAgCjwvc2VjdGlvbj4KCgo8c2VjdGlvbiBuYW1lPSJUb21jYXQgNS41LjIwIChmaGFuaWspIiBydGV4dD0icmVsZWFzZWQgMjAwNi0wOS0yOCI+CiAgPHN1YnNlY3Rpb24gbmFtZT0iQ2F0YWxpbmEiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPGZpeD4KICAgICAgICBGaXggbG9naWMgZXJyb3IgaW4gVXNlckRhdGJhc2VSZWFsbS5nZXRwcmluY2lwYWwoKSB0aGF0IGNhdXNlZCB1c2VyCiAgICAgICAgcm9sZXMgYXNzaWduZWQgdmlhIGdyb3VwcyB0byBiZSBpZ25vcmVkLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+NDA1MTg8L2J1Zz46IFVzZSBjb3JyZWN0IG1lc3NhZ2Ugd2hlbiBhIFJ1bnRpbWVFeGNlcHRpb24gaXMKICAgICAgICB0aHJvd24gZnJvbSB0aGUgcmVxdWVzdEluaXRpYWxpemVkIG9yIHJlcXVlc3REZXN0cm95ZWQgbWV0aG9kIG9mCiAgICAgICAgYSBsaXN0ZW5lciB0aGF0IGltcGxlbWVudHMgU2VydmxldFJlcXVlc3RMaXN0ZW5lci4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4gCiAgPHN1YnNlY3Rpb24gbmFtZT0iSmFzcGVyIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zMTgwNDwvYnVnPjogVW5uZXN0ZWQgdGFncyB3aXRoaW4gYSB0YWcgZmlsZSBhcmUgbm93IGNvbmZpZ3VyZWQKICAgICAgICB3aXRoIHRoZSBUYWcgcmVwcmVzZW50ZWQgYnkgdGhlIGNvbnRhaW5pbmcgdGFnIGZpbGUgYXMgdGhlaXIgcGFyZW50CiAgICAgICAgdGFnLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzMzNTY8L2J1Zz46IFRhZyBhdHRyaWJ1dGVzIHRoYXQgY29udGFpbmVkICQgZm9sbG93ZWQgYnkgMSBvcgogICAgICAgIG1vcmUgbm9uLXNwZWNpYWwgY2hhcmFjdGVycyBhbmQgdGhlbiBhIHsgY2hhcmFjdGVyIGNhdXNlZCBhbgogICAgICAgIGV4Y2VwdGlvbi4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjMzNDA3PC9idWc+OiBUaGUgc3RyaW5nIFwkIGluIHRlbXBsYXRlIHRleHQgd2FzIHJlZHVjZWQgdG8gJAogICAgICAgIHdoZW4gdGhlIGlzRUxJZ25vcmVkIHBhZ2UgZGlyZWN0aXZlIHdhcyBzZXQgdG8gdHJ1ZS4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM0NTA5PC9idWc+OiBUYWcgbmFtZXMgbWF5IG5vdyB1c2UgdGhlIGZ1bGwgcmFuZ2Ugb2YKICAgICAgICBjaGFyYWN0ZXJzIHBlcm1pdHRlZCBieSB4c2Q6bm10b2tlbi4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4gICAKICA8c3Vic2VjdGlvbiBuYW1lPSJXZWJhcHBzIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zNDM5OTwvYnVnPjogRGlzYWJsZSB1bmRlcGxveSBmb3IgYXBwbGljYXRpb25zIHRoYXQgaGF2ZSBub3QKICAgICAgICBiZWVuIGRlcGxveWVkIHN1Y2ggYXMgdGhvc2UgZGVmaW5lZCBpbiBzZXJ2ZXIueG1sIChtYXJrdCkKICAgICAgPC9maXg+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+IAo8L3NlY3Rpb24+CgoKPHNlY3Rpb24gbmFtZT0iVG9tY2F0IDUuNS4xOSAoZmhhbmlrKSIgcnRleHQ9Im5vdCByZWxlYXNlZCI+CiAgPHN1YnNlY3Rpb24gbmFtZT0iR2VuZXJhbCI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8dXBkYXRlPgogICAgICAgICBBZGQgbXVsdGkgYXR0cmlidXRlIHNldHRpbmcgdG8gam14OnNldCBKTVggcmVtb3RlIGFudCB0YXNrLgogICAgICAgICBQYXRjaCBjb250cmlidXRlZCBieSBEaWRpZXIgRG9uc2V6IChwZXJvKQogICAgICA8L3VwZGF0ZT4gICAgICAKICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KICA8c3Vic2VjdGlvbiBuYW1lPSJDYXRhbGluYSI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzA3NjI8L2J1Zz46IFJlLWZpeCB0aGlzIGJ1ZyB0aGF0IHdhcyByZS1pbnRyb2R1Y2VkIGJ5IHRoZSBmaXgKICAgICAgICB0byA8YnVnPjM3MjY0PC9idWc+LiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+Mzc1ODg8L2J1Zz46IEZpeCBKTkRJIHJlYWxtIGNyZWF0aW9uIHRocm91Z2ggSk1YLiBQYXRjaCBjb250cmlidXRlZCBieSBUZXJyeVpob3UgIChmaGFuaWspCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+Mzk3MDQ8L2J1Zz46IFRoZSB1c2Ugb2YgY3VzdG9tIGNsYXNzbG9hZGVycyBmYWlsZWQgd2hlbiB0aGUgY29udGV4dAogICAgICAgIHdhcyBzcGVjaWZpZWQgaW4gc2VydmVyLnhtbC4gQ29ycmVjdGlvbiBvZiB0aGUgZmF1bHQgd2lsbCByZXF1aXJlIHNldHRpbmcKICAgICAgICB0aGUgbmV3IGxvYWRlciBhdHRyaWJ1dGUgdXNlU3lzdGVtQ2xhc3NMb2FkZXJBc1BhcmVudCB0byBmYWxzZS4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4gCiAgPHN1YnNlY3Rpb24gbmFtZT0iQ295b3RlIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40MDQxODwvYnVnPjogQVBSIEVuZHBvaW50IHNvY2tldCBldmFsdWF0aW9uIChyZW1tKQogICAgICA8L2ZpeD4KICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+IAogIDxzdWJzZWN0aW9uIG5hbWU9IldlYmFwcHMiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjMxMzM5PC9idWc+OiBBZG1pbiBhcHAgdGhyZXcgZXhjZXB0aW9ucyBpZiBhIG5hbWUgb3RoZXIgdGhhbiBDYXRhbGluYQogICAgICAgIHdhcyBjb25maWd1cmVkIGZvciB0aGUgRW5naW5lLiBQYXRjaCBiYXNlZCBvbiBhIHN1Z2dlc3Rpb24gZnJvbSBBbWlsYQogICAgICAgIFN1cmlhcmFjaGNoaS4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4gCjwvc2VjdGlvbj4KCgo8c2VjdGlvbiBuYW1lPSJUb21jYXQgNS41LjE4ICh5b2F2cykiIHJ0ZXh0PSJub3QgcmVsZWFzZWQiPgogIDxzdWJzZWN0aW9uIG5hbWU9IkdlbmVyYWwiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPHVwZGF0ZT4KICAgICAgICBDaGFuZ2UgTUQ1IHJlbGVhc2Ugc2lnbmF0dXJlIGZpbGVzIHRvIGhhdmUgbWQ1IChsb3dlcmNhc2UpIGV4dGVuc2lvbiBpbnN0ZWFkIG9mIE1ENSAodXBwZXJjYXNlKSwKICAgICAgICBhcyBzdWdnZXN0ZWQgYnkgSGVuayBQZW5uaW5nIGFuZCBzcGVjaWZpZWQgaW4gdGhlCiAgICAgICAgPGEgaHJlZj0iaHR0cDovL3d3dy5hcGFjaGUub3JnL2Rldi9yZWxlYXNlLXB1Ymxpc2hpbmcuaHRtbCI+QVNGIHJlbGVhc2UgcHVibGlzaGluZyBndWlkZWxpbmVzPC9hPi4gKHlvYXZzKQogICAgICA8L3VwZGF0ZT4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KICA8c3Vic2VjdGlvbiBuYW1lPSJDYXRhbGluYSI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8Zml4PgogICAgICAgIEZpeCB0aGF0IE1hbmFnZXJCYXNlIGluY3JlbWVudCBleHBpcmVTZXNzaW9ucyBjb3VudGVyIGF0IGJhY2tncm91bmQgdGFzayB0d28gdGltZXMuIChwZXJvKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM5NDA2PC9idWc+OiBGaXggdGhhdCBTdGFuZGFyZFNlc3Npb24jZ2V0TGFzdEFjY2Vzc2VkVGltZSgpIHVzZXMgY29ycmVjdCBleGNlcHRpb24gbWVzc2FnZSwKICAgICAgICBzdWdnZXN0ZWQgYnkgVGFrYXlvc2hpIEtpbXVyYS4gKHBlcm8pCiAgICAgIDwvZml4PgogICAgICA8YWRkPgogICAgICAgIDxidWc+Mzk2NjE8L2J1Zz46IEFkZCBkb2N1bWVudGF0aW9uIG9uIEpVTEkgRmlsZUhhbmRsZXIgcHJvcGVydGllcy4gKHlvYXZzKQogICAgICA8L2FkZD4KICAgICAgPGFkZD4KICAgICAgICA8YnVnPjM5NjU3PC9idWc+OiBXYXJuIChhbmQgZG9uJ3QgbG9hZCBqYXIpIGlmIEpTUCBBUEkgaXMgaW4gd2ViYXBwIGNsYXNzbG9hZGVyIHJlcG9zaXRvcnksIGFzIHN1Z2dlc3RlZCBieQogICAgICAgICAgRGF2aWQgU2FuY2hleiBDcmVzcGlsbG8uICh5b2F2cykKICAgICAgPC9hZGQ+CiAgICAgIDxhZGQ+CiAgICAgICAgPGJ1Zz4zOTY3NDwvYnVnPjogU3VwcG9ydCBKUm9ja2l0IEpWTSBpbiBzZXJ2aWNlLmJhdCBzY3JpcHQsIGFzIHN1Z2dlc3RlZCBieSBsaXpvbmdiby4gKHlvYXZzKQogICAgICA8L2FkZD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM5NzExPC9idWc+OiBVcGRhdGUgTG9hZGVyIGNvbmZpZ3VyYXRpb24gZG9jdW1lbnRhdGlvbiwgYXMgc3VnZ2VzdGVkIGJ5IFN0ZXBoYW5lIEJhaWxsaWV6LiAoeW9hdnMpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+Mzk4NjU8L2J1Zz46IEFkZCBPcGVuIE9mZmljZSBtaW1lIHR5cGVzIHRvIGNvbmYvd2ViLnhtbC4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM4ODE0PC9idWc+OiBBbGlnbiBDR0kgaGFuZGxpbmcgb2YgaW5kZXhlZCBxdWVyaWVzLCBwYXJhbWV0ZXJzIGFuZAogICAgICAgIFBPU1QgY29udGVudCB3aXRoIG90aGVyIENHSSBwcm92aWRlcnMuIFRoZSBjaGFuZ2VzOiBvbmx5IHByb3ZpZGUKICAgICAgICBwYXJhbWV0ZXJzIG9uIHRoZSBjb21tYW5kIGxpbmUgZm9yIGluZGV4ZWQgcXVlcmllczsgYWx3YXlzIHByb3ZpZGUgdGhlCiAgICAgICAgcXVlcnkgc3RyaW5nIHZpYSB0aGUgUVVFUllfU1RSSU5HIGVudmlyb25tZW50IHZhcmlhYmxlOyBwcm92aWRlIFBPU1QKICAgICAgICBjb250ZW50IHVubW9kaWZpZWQgdG8gc3RkaW47IGFuZCBuZXZlciBjYWxsIGdldFBhcmFtZXRlcnMoKS4gKG1hcmt0KSAKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zNDgwMTwvYnVnPjogUGFydGlhbCBmaXggdGhhdCBhZGRzIGhhbmRsaW5nIG9mIElPRXhjZXB0aW9ucyBkdXJpbmcKICAgICAgICBsb25nIHJ1bm5pbmcgQ0dJIHJlcXVlc3RzLiBCYXNlZCBvbiBhIHBhdGNoIGJ5IENocmlzIERhdmV5LiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+Mzk2ODk8L2J1Zz46IEFsbG93IHNpbmdsZSBxdW90ZXMgKCcpIGFuZCBiYWNrdGlja3MgKGApIGFzIHdlbGwgYXMKICAgICAgICBkb3VibGUgcXVvdGVzICgiKSB0byBiZSB1c2VkIHRvIGRlbGltaXQgU1NJIGF0dHJpYnV0ZSB2YWx1ZXMuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz40MDA1MzwvYnVnPjogQ29ycmVjdCBhcHBsaWNhdGlvbiBkZXBsb3ltZW50IGRvY3VtZW50YXRpb24gc28gaXQKICAgICAgICBhZ3JlZXMgd2l0aCB0aGUgY2xhc3Nsb2FkZXIgZG9jdW1lbnRhdGlvbiByZWdhcmRpbmcgc2hhcmVkIGxpYiBhbmQKICAgICAgICBDQVRBTElOQV9CQVNFLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+Mzk1OTI8L2J1Zz46IFN0b3AgSEVBRCByZXF1ZXN0cyBmb3IgcmVzb3VyY2VzIGhhbmRsZWQgYnkgU1NJCiAgICAgICAgc2VydmxldCBvciBmaWx0ZXIgZ2VuZXJhdGluZyBzdGFjayB0cmFjZXMgaW4gdGhlIGxvZ3MuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgSW1wcm92ZSBoYW5kbGluZyBvZiB0aGUgJzsnIGNoYXJhY3RlciBpbiB0aGUgVVJMIHNvIHRoYXQgaXQgaXMgbm93CiAgICAgICAgYWxsb3dlZCBpZiBwcm9wZXJseSAleHggZW5jb2RlZC4gKHJlbW0pCiAgICAgIDwvZml4PgogIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4gCiAgPHN1YnNlY3Rpb24gbmFtZT0iQ295b3RlIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDxmaXg+CiAgICAgICAgRml4IEFQUiBlbmRwb2ludCBzbyB0aGF0IHRoZSBhY2NlcHRvciB0aHJlYWQgbm93IG9ubHkgcHJvY2Vzc2VzIHNvY2tldAogICAgICAgIGFjY2VwdHMuIChyZW1tKQogICAgICA8L2ZpeD4KICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+IAogIDxzdWJzZWN0aW9uIG5hbWU9IldlYmFwcHMiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM5ODEzPC9idWc+OiBDb3JyZWN0IGhhbmRsaW5nIG9mIG5ldyBsaW5lIGNoYXJhY3RlcnMgaW4gSk1YCiAgICAgICAgYXR0cmlidXRlcy4gUGF0Y2ggcHJvdmlkZWQgYnkgUiBCcmFtbGV5LiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+Mzc3ODE8L2J1Zz46IE1ha2Ugc3VyZSB0aGF0IFN0b3JlQ29uZmlnIHNhdmUgZXh0ZXJuYWwgcmVmZXJlbmNlZCB3YXIgZmlsZXMgYXQgY29udGV4dC54bWwgY29ycmVjdC4gKHBlcm8pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+Mzk3OTE8L2J1Zz46IFVzZSBjb3JyZWN0IGRlZmF1bHQgZm9yIHVzZU5hbWluZyB3aXRoaW4gYSBDb250ZXh0LiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIENvcnJlY3RseSBnZW5lcmF0ZSByZS1kaXJlY3QgZm9yIGFkbWluIGFwcCBpbmRleC5qc3AgdG8gcHJldmVudCBsb2dpbiBwYWdlCiAgICAgICAgYmVpbmcgZGlzcGxheWVkIHR3aWNlIHdoZW4gY29va2llcyBhcmUgZGlzYWJsZWQuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+IAogIDxzdWJzZWN0aW9uIG5hbWU9IkNsdXN0ZXIiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM5NDczPC9idWc+OiBTZXNzaW9uIHRpbWVvdXQgbXVjaCBzaG9ydGVyIHRoYW4gc2V0dGluZwogICAgICAgICBhdCB3ZWIueG1sIGF0IGNsdXN0ZXIgZW52aXJvbm1lbnQsIHN1Z2dlc3RlZCBieSBKaW4gSmlhbmcuIChwZXJvKQogICAgICA8L2ZpeD4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4gICAKPC9zZWN0aW9uPgoKPHNlY3Rpb24gbmFtZT0iVG9tY2F0IDUuNS4xNyAoeW9hdnMpIiBydGV4dD0icmVsZWFzZWQgMjAwNi0wNC0yNyI+CiAgPHN1YnNlY3Rpb24gbmFtZT0iR2VuZXJhbCI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8dXBkYXRlPgogICAgICAgIFVwZGF0ZSB0byBYZXJjZXMgMi44LjAgKHJlbW0pCiAgICAgIDwvdXBkYXRlPgogICAgICA8dXBkYXRlPgogICAgICAgIFVwZGF0ZSB0byB0Y25hdGl2ZSAxLjEuMyAocmVtbSkKICAgICAgPC91cGRhdGU+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+CiAgPHN1YnNlY3Rpb24gbmFtZT0iQ2F0YWxpbmEiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPGZpeD4KICAgICAgICBGaXggU2luZ2xlU2lnbk9uIFZhbHZlIGFuZCBhZGQgU2Vzc2lvbi5nZXRMYXN0QWNjZXNzVGltZUludGVybmFsKCkgd2l0aG91dCBzZXNzaW9uIGludmFsaWRhdGlvbiB0ZXN0LiAocGVybykKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zODgxNDwvYnVnPjogQ0dJU2VydmxldCBjb3JyZWN0bHkgaGFuZGxlcyBTaGlmdF9KSVMgb3V0cHV0LiAobWFya3QpIAogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICBBZGQgbWlzc2luZyBSRVFVRVNUX1VSSSBlbnZpcm9ubWVudCB2YXJpYWJsZSB0byBDR0kgZW52aXJvbm1lbnQuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4yNzYxNzwvYnVnPjogU3luYyBleGlzdGluZyBtaW1lIHR5cGVzIHdpdGggaHR0cGQuIChrZWl0aCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zODc2MTwvYnVnPjogSGFuZGxlIHJlbGF0aXZlIHN5bWxpbmtzIHRvIHNoZWxsIHNjcmlwdHMgYXMgc3VnZ2VzdGVkIGJ5IEFkYW0gTXVycmF5IChrZWl0aCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zODc5NTwvYnVnPjogQXNzb2NpYXRlIG1vcmUgY2xvc2VseSBiaW5kIHdpdGggYSBmaW5hbGx5IHVuYmluZCBpbiBTdGFuZGFyZENvbnRleHQgc3RhcnQgYW5kCiAgICAgICAgc3RvcCwgYmFzZWQgb24gYSBwYXRjaCBieSBEYXJyeWwgTWlsZXMgKHJlbW0pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIEltcHJvdmUgdW5kZXBsb3ltZW50IHJvYnVzdG5lc3MgKHJlbW0pCiAgICAgIDwvZml4PgogICAgICA8dXBkYXRlPgogICAgICAgIEV4cGFuZCB0aGUgc2VtYXBob3JlIHZhbHZlIChyZW1tKQogICAgICA8L3VwZGF0ZT4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM5MDIxPC9idWc+OiBBZGQgYmFjayBzdXBwb3J0IGZvciBhdXRoZW50aWNhdGlvbiBvbmx5LCBzdWJtaXR0ZWQgYnkgU2NvdHQgU3RhcmsgKHJlbW0pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIFJldmVydCBmaXggZm9yIDxidWc+MzgxMTM8L2J1Zz4sIHdoaWNoIGRvZXMgbm90IHNlZW0gYSBsZWdpdGltYXRlIHByb2JsZW0sIGFuZCBjYXVzZXMKICAgICAgICByZWdyZXNzaW9ucyAocmVtbSkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgQ29ycmVjdGx5IHJlc2V0IGxpc3RlbmVycyB3aGVuIHJlbG9hZGluZyBhIHdlYmFwcCAocmVtbSkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zODE5NDwvYnVnPjogRG9uJ3QgZmFpbCBzaWxlbnRseSBpZiAtZm9yY2UgaXMgdXNlZCB3aXRob3V0IENBVEFMSU5BX1BJRCwgc3VibWl0dGVkIGJ5IE1hdHRoZXcgQnVja2V0dC4gKHlvYXZzKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM4MTU0PC9idWc+OiBBdm9pZCBOUEUgaW4gRmlsZURpckNvbnRleHQgYWZ0ZXIgd2ViYXBwIHVuZGVwbG95LCByZXBvcnRlZCBieSBKYW1pZSBNYWhlci4gKHlvYXZzKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM4MjE3PC9idWc+OiBBZGRlZCBjYXV0aW9uYXJ5IG5vdGUgYWJvdXQga2V5c3RvcmUgcGFzc3dvcmQgdG8gU1NMIEhvd1RvLCBhcyBzdWdnZXN0ZWQgYnkgUmFsZiBIYXVzZXIuICh5b2F2cykKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zODI2MjwvYnVnPjogQ2xlYXJlZCBhbWJpZ3VpdHkgaW4gaG9zdCBkb2N1bWVudGF0aW9uLCBhcyBzdWdnZXN0ZWQgYnkgSmVmZnJleSBCZW5uZXR0LiAoeW9hdnMpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+Mzg0NzY8L2J1Zz46IE1vZGlmaWVkIGNoZWNrIGZvciBudWxsIFRMRCBzdHJlYW0sIGFzIHN1Z2dlc3RlZCBieSBGYWJyaXppbyBHaXVzdGluYS4gKHlvYXZzKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM4MDUyPC9idWc+OiBVc2UgPGk+dXNlck5hbWU8L2k+IGFzIHVzZXJGaWVsZCBkZWZhdWx0LiBVc2VyIGlzIGF0IG1hbnkgZGF0YWJhc2VzIGEgCiAgICAgICAgcmVzZXJ2ZWQga2V5d29yZCwgYXMgc3VnZ2VzdGVkIGJ5IHJpay4gKHBlcm8pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIEZpeCBoYW5kbGluZyBvZiBub24gbWF0Y2hpbmcgaWYtcmFuZ2UgaGVhZGVyIChyZW1tKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM3ODQ4PC9idWc+OiBPbmx5IG91dHB1dCBjYXRhbGluYS5zaCBkaWFnbm9zdGljIG1lc3NhZ2VzIGlmIHdlIGhhdmUgYSBUVFksIHN1Ym1pdHRlZCBieQogICAgICAgICAgRGF2aWQgU2hhdy4gKHlvYXZzKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM4NTk2PC9idWc+OiBNaW5vciBwZXJmb3JtYW5jZSBvcHRpbWl6YXRpb24gaW4gRGF0YVNvdXJjZVJlYWxtLCBzdWdnZXN0ZWQgYnkgU2FuZHkKICAgICAgICAgIE1jQXJ0aHVyLiAoeW9hdnMpCiAgICAgIDwvZml4PgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgogIDxzdWJzZWN0aW9uIG5hbWU9IkNveW90ZSI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8Zml4PgogICAgICAgIE1ha2UgdGhlIGRlZmF1bHQgY2lwaGVyIHN1aXRlcyBhdmFpbGFibGUgZm9yIFNTTCB0aGUgc2FtZSBhcyB0aGUgc2V0IG9mIGNpcGhlcgogICAgICAgIHN1aXRlcyBlbmFibGVkIGJ5IGRlZmF1bHQgcmF0aGVyIHRoYW4gdGhlIHNldCBvZiBhbGwgY2lwaGVyIHN1aXRlcy4gVGhpcyBwcmV2ZW50cwogICAgICAgIGNpcGhlcnMgc3VpdGVzIHRoYXQgZG8gbm90IHByb3ZpZGUgY29uZmlkZW50aWFsaXR5IHByb3RlY3Rpb24gYW5kL29yIHNlcnZlcgogICAgICAgIGF1dGhlbnRpY2F0aW9uIGJlaW5nIHVzZWQgYnkgZGVmYXVsdC4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICBNb3ZlIEFwckVuZHBvaW50LmdldFdvcmtlclRocmVhZCBpbnNpZGUgdGhlIHRyeS9jYXRjaCBmb3IgdGhlIG1haW4gYWNjZXB0IGxvb3AsIHRvIGd1YXJkCiAgICAgICAgYWJvdXQgYW4gT09NICh3aGljaCB3b3VsZCBtb3N0IGxpa2VseSBkb29tIHRoZSBzZXJ2ZXIgYW55d2F5KSAocmVtbSkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgQXMgZXhoaWJpdGVkIGluIHRoZSBBU0YncyBKSVJBIGluc3RhbGxhdGlvbiwgaXQgc2VlbXMgRUlOVFIgaXMgYSBzdGF0dXMgY29kZSB0aGF0IHNob3VsZAogICAgICAgIGJlIGlnbm9yZWQgYXMgYSByZXN1bHQgdG8gYSBwb2xsIGNhbGwgKHJlbW0pCiAgICAgIDwvZml4PgogICAgICA8dXBkYXRlPgogICAgICAgIE5ldyBBUFIgY29ubmVjdG9ycyBkZWZhdWx0cyAocmVtbSkKICAgICAgPC91cGRhdGU+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgQWRkIG11bHRpcGxlIHRocmVhZHMgZm9yIEFQUiBwb2xsZXJzLCB0byB3b3JrIGFyb3VuZCBXaW5kb3dzIGxpbWl0YXRpb25zIChwZXJmb3JtYW5jZSBkZWdyYWRlcwogICAgICAgIHZlcnkgcmFwaWRseSBpZiBwb2xsZXIgc2l6ZXMgb3ZlciAxMDI0IGFyZSBhbGxvd2VkIHdoZW4gY29tcGlsaW5nIEFQUikgKHJlbW0pCiAgICAgIDwvdXBkYXRlPgogICAgICA8dXBkYXRlPgogICAgICAgIE5ldyBtb2RlcyBmb3IgZmlyc3RSZWFkVGltZW91dCAoLTEgYmVpbmcgdGhlIG5ldyBkZWZhdWx0KSAocmVtbSkKICAgICAgPC91cGRhdGU+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgUmVwbGFjZSBqYXZhLnV0aWwuU3RhY2sgdXNhZ2Ugd2l0aCBhIHNpbXBsZSBhcnJheSBpbiB0aGUgQVBSIGVuZHBvaW50IChyZW1tKQogICAgICA8L3VwZGF0ZT4KICAgICAgPGZpeD4KICAgICAgICB0Y25hdGl2ZSBqbmlsaWIuYyBub3cgcmVwb3J0IGNvcnJlY3QgY29tcGlsZSBmbGFncyBmb3IgcnVudGltZSAKICAgICAgICBMaWJyYXJ5LmphdmEgY2hlY2tzIGxpa2Ugc2VuZGZpbGUgc3VwcG9ydCBkZWZhdWx0IHRydWUvZmFsc2UgKHBlcm8pCiAgICAgIDwvZml4PgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgogIDxzdWJzZWN0aW9uIG5hbWU9Ikphc3BlciI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzgwMTU8L2J1Zz46IFJlbW92ZSBtaXNsZWFkaW5nIHdhcm5pbmdzIGxvZ2dlZCBpbiBUYWdMaWJyYXJ5SW5mb0ltcGwsIGFzIHN1Z2dlc3RlZCBieSBBbmRyZXcgSG91Z2h0b24uICh5b2F2cykKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zODM3NjwvYnVnPjogTWFrZSBzdXJlIGJvZHkgY29udGVudCBzdGFjayBpcyBhbHdheXMgcHJvcGVybHkgYWxpZ25lZCwgYXMgc3VibWl0dGVkIGJ5IFRvbnkgRGVpZ2guICh5b2F2cykKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgQ29tcGF0aWJpbGl0eSB3aXRoIEpEVCAzLjIgKHJlbW0pCiAgICAgIDwvZml4PgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgogIDxzdWJzZWN0aW9uIG5hbWU9IldlYmFwcHMiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM5MjkyPC9idWc+OiBVcGRhdGUgY2F0YWxpbmEucG9saWN5IGF0IGRlbW8gYmFsYW5jZXIgYXBwLiBGaXggcHJvdmlkZWQgYnkgS2VycnkgU2FpbnNidXJ5IChwZXJvKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM2ODQ3PC9idWc+OiBGaXhlZCB0aGUgbWFuYWdlciBhcHAgY29weSBmdW5jdGlvbiB0byBub3Qgb3ZlcndyaXRlIGZpbGVBIHdpdGggZmlsZUIgd2hlbiBmaWxlQT09ZmlsZUIuCiAgICAgICAgRml4IHByb3ZpZGVkIGJ5IEhhcm9vbiBSYWZpcXVlIChmaGFuaWspCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+Mzg1MDg8L2J1Zz46IFNldmVyYWwgZW5oYW5jZW1lbnRzIHRvIEhvc3QgTWFuYWdlciBhcHBsaWNhdGlvbiwgaW5jbHVkaW5nIGNvbmZpZ3VyYWJsZQogICAgICAgICAgbWFuYWdlciBhcHAgc3VwcG9ydCBhbmQgZGlhbG9nIGJveCBlbmhhbmNlbWVudHMuICBUaGFua3MgdG8gR2VvcmdlIFNleHRvbiBmb3IgdGhlIHBhdGNoLiAoeW9hdnMpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+Mzc3ODE8L2J1Zz46IE1ha2Ugc3VyZSBjb250ZXh0IGNvbmZpZyBmaWxlIGlzIHdyaXRlYWJsZSwgc3VnZ2VzdGVkIGJ5IEdlb3JnZSBTZXh0b24uICh5b2F2cyxwZXJvKQogICAgICA8L2ZpeD4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KICA8c3Vic2VjdGlvbiBuYW1lPSJDbHVzdGVyIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgICA8dXBkYXRlPgogICAgICAgIEFkZCBhdCBQb29sZWRTb2NrZXRTZW5kZXIgdGhlIGpteCBhdHRyaWJ1dGVzIGluUG9vbFNpemUgYW5kIGluVXNlUG9vbFNpemUuIChwZXJvKQogICAgICAgPC91cGRhdGU+CiAgICAgICA8Zml4PgogICAgICAgICBEZWx0YU1hbmFnZXIgc2V0IHNlc3Npb24gY3JlYXRpb25UaW1lIGF0IGJhY2t1cCBub2RlLiAocGVybykKICAgICAgIDwvZml4PgogICAgICAgPHVwZGF0ZT4KICAgICAgICBBZGQgSnZtUm91dGVCaW5kZXJWYWx2ZSBkb2N1bWVudGF0aW9uIGF0IGNsdXN0ZXItaG93dG8ueG1sLiAocGVybykKICAgICAgIDwvdXBkYXRlPgogICAgICAgPGFkZD4KICAgICAgICBKdm1Sb3V0ZUJpbmRlclZhbHZlIG5vdyBzdXBwb3J0cyBub3cgc2Vzc2lvbmlkJ3MgZnJvbSByZXF1ZXN0IGFuZCBjb29raWVzLgogICAgICAgIFRoYW5rcyB0byBCcmlhbiBTdGFuc2JlcnJ5IGZvciByZXBvcnRpbmcgaXQuIChwZXJvKQogICAgICAgPC9hZGQ+CiAgICAgICA8Zml4PgogICAgICAJPGJ1Zz4zODc3OTwvYnVnPiBGaXggd3Jvbmcgam14IG1lc3NhZ2UgYXJnIGF0IFNpbXBsZVRjcENsdXN0ZXIKICAgICAgICAgIGF0IG8uYS5jLmNsdXN0ZXIudGNwLm1iZWFucy1kZXNjcmlwdG9ycy54bWwsIHN1Ym1pdHRlZCBieSBQYXdlbCBUdWNob2xza2kgKHBlcm8pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIEZpeCB0aGF0IG5vdCBhZnRlciBldmVyeSAiS2VlcCBBbGl2ZSBTb2NrZXQgY2xvc2UiIGEgbG9nIHdhcm5pbmcgaXMgZ2VuZXJhdGVkIGF0IFRjcFJlcGxpY2F0aW9uVGhyZWFkIChwZXJvKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM5MTc4PC9idWc+OiBOb3cgUk9PVC53YXIgZGVwbG95bWVudCB3aXRoIEZhcm1XYXJEZXBsb3llciBpcyBwb3NzaWJsZSAocGVybykKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgUmVwbGljYXRpb25WYWx2ZSBub3Qgc2V0IHByaW1hcnlTZXNzaW9uIGZsYWcgd2hlbiBhbGwgYmFja3VwIG5vZGVzIGdvbmUgKHBlcm8pCiAgICAgIDwvZml4PgogICAgICA8dXBkYXRlPgogICAgICAgIEFkZCBEZWx0YVNlc3Npb24uZ2V0TGFzdEFjY2Vzc1RpbWVJbnRlcm5hbCgpIHdpdGhvdXQgc2Vzc2lvbiBpbnZhbGlkYXRpb24gdGVzdC4gKHBlcm8pCiAgICAgIDwvdXBkYXRlPgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgogPC9zZWN0aW9uPgoKPHNlY3Rpb24gbmFtZT0iVG9tY2F0IDUuNS4xNiAoeW9hdnMpIiBydGV4dD0icmVsZWFzZWQgMjAwNi0wMy0xNSI+CiAgPHN1YnNlY3Rpb24gbmFtZT0iR2VuZXJhbCI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8dXBkYXRlPgogICAgICAgIFVwZGF0ZWQgLyBlbmhhbmNlZCBkb2NzIHRvIHJlbW92ZSBvbGQgRklYTUUgcmVmZXJlbmNlcy4gKHlvYXZzKQogICAgICA8L3VwZGF0ZT4KICAgICAgPHVwZGF0ZT4KICAgICAgICBSZXF1aXJlZCB0Y25hdGl2ZSBsaWJyYXJ5IHZlcnNpb24gdXBncmFkZWQgdG8gMS4xLjIgKHJlbW0pCiAgICAgIDwvdXBkYXRlPgogICAgICA8dXBkYXRlPgogICAgICAgIFVwZGF0ZSB0byBFY2xpcHNlIEpEVCAzLjEuMiAocmVtbSkKICAgICAgPC91cGRhdGU+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+CiAgPHN1YnNlY3Rpb24gbmFtZT0iQ2F0YWxpbmEiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjIzOTUwPC9idWc+OiBDb250ZXh0Lmxpc3RCaW5kaW5ncygpIHNob3VsZCByZXR1cm4gb2JqZWN0cyBub3QKICAgICAgICByZWZlcmVuY2VzLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzgxMjQ8L2J1Zz46IEFkZCBzdXBwb3J0IGZvciBXaW5kb3dzIDIweHggd2hlbiByZWFkaW5nIGVudmlyb25tZW50CiAgICAgICAgdmFyaWFibGVzIGluIENHSVNlcnZsZXQuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4yOTIxNDwvYnVnPjogcmVzcG9uc2UuY29udGFpbnNIZWFkZXIoKSBub3cgcmV0dXJucyB0aGUgY29ycmVjdAogICAgICAgIHZhbHVlIGZvciBDb250ZW50LVR5cGUgYW5kIENvbnRlbnQtTGVuZ3RoIGhlYWRlcnMuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgQWxsb3cgdXNpbmcgYSBjdXN0b20gQ29udGV4dENvbmZpZyB3aGVuIHVzaW5nIEpNWCBlbWJlZGRpbmcgb2YgVG9tY2F0LCBhcwogICAgICAgIGlzIGRvbmUgYnkgdGhlIHJlZ3VsYXIgZGVwbG95ZXIuIChyZW1tKQogICAgICA8L2ZpeD4KICAgICAgPGFkZD4KICAgICAgICBBZGQgSk1YIHNlcnZlckluZm8gYXR0cmlidXRlIHRvIFNlcnZlciBNQmVhbiwgdGhhdCB3ZSBjYW4gaWRlbnRpZnkKICAgICAgICB0aGUgdG9tY2F0IHJlbGVhc2UgcmVtb3RlbHkuIChwZXJvKQogICAgICA8L2FkZD4KICAgICAgPGZpeD4KICAgICAgICBGaXggdGhlIEpNWCBNQmVhbkZhY3RvcnkuY3JlYXRlU3RhbmRhcmRIb3N0IHNpZ25hdHVyZSBhdCBtYmVhbi1kZXNjcmlwdG9ycy54bWwgKHBlcm8pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIEZpeCBzb21lIGNhc2VzIChmb3IgZXhhbXBsZSB3aXRoIHJlYWxtIHVzYWdlKSB3aGVyZSB0aGUgY29udGFpbmVyIGxvZ2dlciBmb3IgYSBjb250ZXh0CiAgICAgICAgd291bGQgYmUgcmV0cmlldmVkIHVzaW5nIHRoZSB3cm9uZyBjbGFzc2xvYWRlciAocmVtbSkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgSHR0cFNlc3Npb24uZ2V0SWQgd2lsbCBubyBsb25nZXIgdGhyb3cgYW4gSVNFIHdoZW4gdGhlIHNlc3Npb24gaXMgaW52YWxpZCAocmVtbSkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgIE1vcmUgZGV0YWlsZWQgZXJyb3JzIGZvciBuYW1pbmcgaXNzdWVzIChyZW1tKQogICAgICA8L2ZpeD4KICAgICAgPGRvY3M+CiAgICAgICAgQWRkIGRvY3VtZW50YXRpb24gZm9yIHRoZSBUcmFuc2FjdGlvbiBlbGVtZW50IChyZW1tKQogICAgICA8L2RvY3M+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgQWRkIGdldENvbnRleHRQYXRoIHRvIHRoZSBpbnRlcm5hbCBzZXJ2bGV0IGNvbnRleHQgaW1wbGVtZW50YXRpb24gKHJlbW0pCiAgICAgIDwvdXBkYXRlPgogICAgICA8Zml4PgogICAgICAgIE9ubHkgbnVsbCBpbnN0YW5jZXMgbG9hZGVkIGJ5IHRoZSB3ZWJhcHAgQ0wsIHN1Ym1pdHRlZCBieSBNYXR0IEplbnNlbiAocmVtbSkKICAgICAgPC9maXg+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgRGVwbG95IGZvbGRlcnMgd2hpY2ggZG9uJ3QgaGF2ZSBhIFdFQi1JTkYsIGFuZCByZXR1cm4gYW4gZXJyb3Igd2hlbiBhIGNvbnRleHQKICAgICAgICBmaWxlIGRvZXMgbm90IGNvbnRhaW4gYSBDb250ZXh0IGVsZW1lbnQgKHJlbW0pCiAgICAgIDwvdXBkYXRlPgogICAgICA8Zml4PgogICAgICAgIDxidWc+Mzg2NTM8L2J1Zz46IEZpeCBwcm9wZXJ0eSBuYW1lIChyZW1tKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICBTbGlnaHRseSBtb2RpZnkgdGhlIHRpbWluZyBvZiB0aGUgbWFuYWdlciBzdGFydCwgc28gdGhhdCBpdCBpcyBub3Qgc3RhcnRlZCBieSBhCiAgICAgICAgbGlzdGVuZXIgKHJlbW0pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIFJlZnJlc2ggbG9nZ2VycyB1c2VkIGJ5IHRoZSBkaWdlc3RlciAocmVtbSkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgVXNlIHNlbmRFcnJvciBpbnN0ZWFkIG9mIHNldFN0YXR1cyB0byBzZW5kIHRoZSA0MDEgY29kZS4gKGJpbGxiYXJrZXIpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIERvbid0IGFwcGVuZCB0aGUgcG9ydCBmb3IgYW4gU1NMIHJlZGlyZWN0IGlmIGl0IGlzIHRoZSBkZWZhdWx0IHBvcnQuIChiaWxsYmFya2VyKQogICAgICA8L2ZpeD4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KICA8c3Vic2VjdGlvbiBuYW1lPSJDb3lvdGUiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPGZpeD4KICAgICAgICBMb2cgZXJyb3JzIHdoZW4gc2V0dGluZyBzb2NrZXQgb3B0aW9ucyB3aXRoIGRlYnVnIHByaW9yaXR5IHJhdGhlciB0aGFuIGVycm9yLiAocmVtbSkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zODEwMDwvYnVnPjogTWFrZSBjZXJ0YWluIHRoYXQgYSB2YWxpZCBIb3N0IG5hbWUgaXMgc2V0LCBvciBub25lIGF0IGFsbC4gKGJpbGxiYXJrZXIpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+Mzg0ODU8L2J1Zz46IEZpeCBtaW5vciByZWdyZXNzaW9uIHNldHRpbmcgY29ubmVjdGlvbiB0aW1lb3V0IChhcyB3ZWxsIGFzIGxpbmdlciBhbmQKICAgICAgICBubyBkZWxheSkgd2hlcmUgdGhlIGRlZmF1bHQgdmFsdWUgd2FzIGFsd2F5cyB1c2VkIHdoZW4gdXNpbmcgdGhlIHJlZ3VsYXIgCiAgICAgICAgSFRUUCBjb25uZWN0b3IgKHJlbW0pCiAgICAgIDwvZml4PgogICAgICA8dXBkYXRlPgogICAgICAgIFBhc3MgYWxvbmcgbW9yZSBvZiB0aGUgU1NMIHJlbGF0ZWQgZmllbGRzIHRvIE9wZW5TU0wgKHJlbW0pCiAgICAgIDwvdXBkYXRlPgogICAgICA8dXBkYXRlPgogICAgICAgIENoYXJDaHVuayBub3cgaW1wbGVtZW50cyBDaGFyU2VxdWVuY2UgKHJlbW0pCiAgICAgIDwvdXBkYXRlPgogICAgICA8Zml4PgogICAgICAgIEZpeCBjb2RpbmcgZXJyb3Igd2hpY2ggY291bGQgY2F1c2UgYSByYXJlIGNyYXNoIHdoZW4gYSBwb2xsZXIgZXJyb3Igb2NjdXJyZWQgYW5kIHNvY2tldHMKICAgICAgICB3aGVyZSBwZW5kaW5nIGJlaW5nIGFkZGVkIHRvIHRoZSBrZWVwYWxpdmUgcG9sbGVyIChyZW1tKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICBGaXggcG90ZW50aWFsIHN5bmMgaXNzdWVzIHdoZW4gcmVzdGFydGluZyBhIHBvbGxlciAocmVtbSkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgVXBkYXRlIEFQUiBlcnJvciByZXBvcnRzLCBpbmNsdWRpbmcgdGhlIGVycm9yIGNvZGVzIChyZW1tKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM4NzI2PC9idWc+OiBSZW1vdmUgZHVwbGljYXRlIHJlcXVlc3QgZ3JvdXAgZmllbGQgY2F1c2luZyBibGFuayBzdGF0aXN0aWNzIGZvciB0aGUKICAgICAgICBIVFRQIGNvbm5lY3RvciAocmVtbSkgCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIEZpeCBpbnZhbGlkIGxlbmd0aCB1c2VkIGJ5IHNvbWUgQUpQIHBhY2tldHMgZm9yIHRoZSBBSlAgQVBSIGNvbm5lY3Rvciwgd2hpY2ggY291bGQgY2F1c2UgCiAgICAgICAgY29ycnVwdGlvbiwgc3VibWl0dGVkIGJ5IFJ1ZGlnZXIgUGx1bSAoamltKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM4MzQ2PC9idWc+OiBGaXggcHJvYmxlbXMgd2l0aCByZXF1ZXN0LmdldFJlYWRlcigpLnJlYWRMaW5lKCkuIAogICAgICAgIFBhdGNoIGJ5IFJhaW5lciBKdW5nIChiaWxsYmFya2VyKQogICAgICA8L2ZpeD4KICAgICAgPHVwZGF0ZT4KICAgICAgICBMb2NhbCBhZGRyZXNzIHJldXNlIGZvciBBUFIgRW5kcG9pbnRzICh2aWEgQVBSX1NPX1JFVVNFQUREUikgbm93IGVuYWJsZWQgKGppbSkKICAgICA8L3VwZGF0ZT4KICAgICAgPGZpeD4KICAgICAgICBEb24ndCB3cml0ZSBvdXQgdGhlIHNodXRkb3duIHNlY3JldCBmaWxlIGlmIHNodXRkb3duIGlzIGRpc2FibGVkICh0aGUgZGVmYXVsdCkgKGJpbGxiYXJrZXIpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIEZpeCBOUEUgd2hlbiBubyBzaW5rIGlzIHN1cHBsaWVkLiAoYmlsbGJhcmtlcikKICAgICAgPC9maXg+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgQVBSIEVuZHBvaW50cyBub3cgSVB2NiBhd2FyZSAoamltKQogICAgIDwvdXBkYXRlPgogICAgICA8dXBkYXRlPgogICAgICAgIERvd25ncmFkZSAiUmVzcG9uc2UgYWxyZWFkeSBjb21taXR0ZWQiIGxvZ2dpbmcgZW50cnkgdG8gREVCVUcuIChiaWxsYmFya2VyKQogICAgIDwvdXBkYXRlPgogICAgIDxmaXg+CiAgICAgICA8YnVnPjM4MTEzPC9idWc+OiBSZXR1cm4gdGhlIGVtcHR5IFN0cmluZyBmb3IgYW4gZW1wdHkgcXVlcnktc3RyaW5nIGluc3RlYWQgb2YgbnVsbC4gKGJpbGxiYXJrZXIpCiAgICAgPC9maXg+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+CiAgPHN1YnNlY3Rpb24gbmFtZT0iSmFzcGVyIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zODM4OTwvYnVnPjogU2V0IGNvcnJlY3QgSkRUIENvbXBpbGVyIG9wdGlvbiB0byBqYXZhIDEuNSBjb21wbGlhbmNlLiAKICAgICAgICBQYXRjaCBmcm9tIE9saXZpZXIgVGhvbWFubiBhbmQgUGF1bCBIYW1lciAocGVybykKICAgICAgPC9maXg+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgQWRkIHNvbWUgdXNlZnVsIGhpbnRzIHRvIGphc3Blci1ob3d0by4gKHBlcm8pLgogICAgICA8L3VwZGF0ZT4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM4Nzc2PC9idWc+OiBGaXggc291cmNlIGZpbGUgYXR0cmlidXRlLCBzdWJtaXR0ZWQgYnkgT2xpdmllciBUaG9tYW5uIChyZW1tKQogICAgICA8L2ZpeD4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KICA8c3Vic2VjdGlvbiBuYW1lPSJDbHVzdGVyIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDxmaXg+CiAgICAgICAgVXBkYXRlIERlbHRhTWFuYWdlciBzZXNzaW9uIGFjY2VzcyBzdGF0cyAgKHBlcm8pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIERlbHRhU2Vzc2lvbiBnZXRJZCB3aWxsIG5vIGxvbmdlciB0aHJvdyBhbiBJU0Ugd2hlbiB0aGUgc2Vzc2lvbiBpcyBpbnZhbGlkIChwZXJvKQogICAgICA8L2ZpeD4KICAgICAgPHVwZGF0ZT4KICAgICAgICAgIFJlc3VycmVjdGVkIHRoZSAmcXVvdDtzdXNwZWN0JnF1b3Q7IHByb3BlcnR5IHNvIHRoYXQgdGhlIGxvZ3MgZG9uJ3QgZmlsbAogICAgICAgICAgdXAgd2l0aCBlcnJvcnMgd2hlbiBtZW1iZXIgZGlzYXBwZWFycyBvciBhIGNvbm5lY3Rpb24gaXMgbG9zdC4gT25seSB1c2VmdWwgZm9yIHBvb2xlZCBtb2RlIChmaGFuaWspCiAgICAgIDwvdXBkYXRlPgogICAgICA8YWRkPgogICAgICAgPGJ1Zz4zNTcxMDwvYnVnPjogQWRkIHNlc3Npb24gcmVwbGljYXRpb24gZm9yIGNyb3NzIGNvbnRleHQgc2Vzc2lvbiBjaGFuZ2VzLgogICAgICAgVGhlIHBvcnRsZXQgYXBpIG5lZWQgdGhpcyBzdXBwb3J0LCBzZWUgcmVmYWN0b3JlZCBSZXBsaWNhdGlvblZhbHZlLiAocGVybykKICAgICAgPC9hZGQ+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgUmVwbGljYXRpb25WYWx2ZSByZXNldCBEZWx0YVNlc3Npb24gd2hlbiBjbHVzdGVyIG5vZGUgaGFzIG5vIGJhY2t1cCBub2RlLiAocGVybykKICAgICAgPC91cGRhdGU+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgRGF0YVNlbmRlciBjbG9zZSBjb25uZWN0aW9uIGFuZCB0aHJvdyBleGNlcHRpb24gYWxzbyBldmVuIGlmIHdhaXRGb3JBY2sgaXMgZmFsc2UuICAocGVybykKICAgICAgPC91cGRhdGU+CiAgICAgIDxmaXg+CiAgICAgICAgQWN0aXZlIGNsdXN0ZXIganVuaXQgdGVzdCBhZ2Fpbi4gKHBlcm8pCiAgICAgIDwvZml4PgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgogIDxzdWJzZWN0aW9uIG5hbWU9IldlYmFwcHMiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPGZpeD4KICAgICAgICBGaXggc29tZSBYU1MgaXNzdWVzIGluIHRoZSBKU1AgZXhhbXBsZXMuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgRml4IGxvZ29zIGluIHRoZSBtYW5hZ2VyIHdlYmFwcCAocmVtbSkKICAgICAgPC9maXg+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+Cjwvc2VjdGlvbj4KCjxzZWN0aW9uIG5hbWU9IlRvbWNhdCA1LjUuMTUgKHlvYXZzKSIgcnRleHQ9InJlbGVhc2VkIDIwMDYtMDEtMjEiPgogIDxzdWJzZWN0aW9uIG5hbWU9IkdlbmVyYWwiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjMyMDgxPC9idWc+OiBSZW1vdmUgdGhlIEpESyByZXF1aXJlbWVudCBmcm9tIHRoZSBXaW4zMiBzY3JpcHRzLiAoa2VpdGgpCiAgICAgIDwvZml4PgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgogIDxzdWJzZWN0aW9uIG5hbWU9IkNhdGFsaW5hIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDxmaXg+CiAgICAgICA8YnVnPjM3ODUyPC9idWc+OiBGaXggcmVncmVzc2lvbiB3aGVyZSB0aGUgbWFnaWMgcm9sZSAnKicgd2FzIGRlbnlpbmcgYWxsIGFjY2Vzcy4gUGF0Y2ggYnkgeHJjYXQgKGJpbGxiYXJrZXIpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgPGJ1Zz4zNzkzNDwvYnVnPjogRG9uJ3QgYXNrIGZvciBhdXRoZW50aWNhdGlvbiBpZiBkZW55LWZyb20tYWxsIGlzIGluIGVmZmVjdC4gKGJpbGxiYXJrZXIpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+MTU1NzA8L2J1Zz46IGF1dGgtY29uc3RyYWludCBvZiAqIHdhcyBpbnRlcnByZXR0ZWQgYXMgYWxsCiAgICAgICAgYXV0aGVudGljYXRlZCB1c2VycyByYXRoZXIgdGhhbiBhcyBhbGwgcm9sZXMgZGVmaW5lZCBpbiB3ZWIueG1sLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgUmVtb3ZlIGxlZnRvdmVyIHN0YXRpYyBsb2dnZXIgd2hpY2ggd2FzIHVzZWQgdG8gbG9nIGFwcGxpY2F0aW9uIGxldmVsIG1lc3NhZ2VzIGluCiAgICAgICBBcHBsaWNhdGlvbkNvbnRleHRGYWNhZGUgKHJlbW0pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzgwMTI8L2J1Zz46IFdoZXJlIGEgQ0dJIHNjcmlwdCBzZXRzIGEgcmVzcG9uc2UgY29kZSwgdXNlIGl0LiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+Mzc4NTQ8L2J1Zz46IEV4dGVuc2lvbi1MaXN0IGNoZWNraW5nIHdhcyB0b28gc3RyaWN0LiAobWFya3QpCiAgICAgIDwvZml4PgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgogIDxzdWJzZWN0aW9uIG5hbWU9IkNveW90ZSI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8Zml4PgogICAgICAgUmVwb3J0IGJpbmRpbmcgZXJyb3JzIGluIHRoZSBBUFIgZW5kcG9pbnQgYXMgc3RyaW5ncyByYXRoZXIgdGhhbiBwbGF0Zm9ybSBzcGVjaWZpYwogICAgICAgc3RhdHVzIGNvZGVzIChyZW1tKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgIDxidWc+Mzc5MzQ8L2J1Zz46IERvbid0IGFzayBmb3IgYXV0aGVudGljYXRpb24gaWYgZGVueS1mcm9tLWFsbCBpcyBpbiBlZmZlY3QuIChiaWxsYmFya2VyKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD48YnVnPjM4MDQ3PC9idWc+OiBIYW5kbGUgdGhlIGNhc2Ugd2hlcmUgdGhlIFNlcnZsZXQgYXR0ZW1wdHMgdG8gcmVhZAogICAgICAgICAgICAgIHRoZSBSZXF1ZXN0IGJvZHkgZnJvbSB0aGUgQUpQLzEuMyBDb25uZWN0b3IsIGluIHRoZSBjYXNlIHRoYXQgbm8KICAgICAgICAgICAgICBib2R5IHdhcyBzZW50LiAoYmlsbGJhcmtlcikKICAgICAgPC9maXg+CiAgICAgIDxmaXg+PGJ1Zz4zODAzMDwvYnVnPjogVW5jb25kaXRpb25hbGx5IHJldHVybiBFT1MgZm9yIGFuIGF0dGVtcHQgdG8gcmVhZCAKICAgICAgICAgICAgICB0aGUgYm9keSBvZiBhbnkgcmVxdWVzdCB0aGF0IGRvZXNuJ3Qgc2VuZCBDTCBvciBURS4gCiAgICAgICAgICAgICAgKHJlbW0sIGJpbGxiYXJrZXIpLgogICAgICA8L2ZpeD4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KICA8c3Vic2VjdGlvbiBuYW1lPSJKYXNwZXIiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM1MzUxPC9idWc+OiBGaXggcHJvYmxlbSB1c2luZyBhbiBpbm5lciBjbGFzcyBmb3IgYSAmbHQ7anNwOnVzZUJlYW4gLyZndDsuIChraW5tYW4pLgogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM3OTI5PC9idWc+OiBEb24ndCBzdG9wIG9uIHRoZSBnZW5lcmljIGF0dHJpYnV0ZSBtZXRob2RzIGp1c3QgYmVjYXVzZSB0aGUgc2Vzc2lvbiBpcyBpbnZhbGlkLiBQYXRjaCBieSBQaWVycmUgRGVsaXNsZS4gKGJpbGxiYXJrZXIpCiAgICAgIDwvZml4PgogICAgICA8dXBkYXRlPgogICAgICAgIEFkZCBzeXN0ZW0gcHJvcGVydGllcyBvcmcuYXBhY2hlLmphc3Blci5ydW50aW1lLkJvZHlDb250ZW50SW1wbC5MSU1JVF9CVUZGRVIgYW5kCiAgICAgICAgb3JnLmFwYWNoZS5qYXNwZXIucnVudGltZS5Kc3BGYWN0b3J5SW1wbC5VU0VfUE9PTCB0byBhbGxvdyBjb25maWd1cmluZyBKYXNwZXIKICAgICAgICBtZW1vcnkgdXNhZ2UgKHJlbW0pCiAgICAgIDwvdXBkYXRlPgogICAgICA8Zml4PgogICAgICAgIDxidWc+Mzc5MzM8L2J1Zz46IFJlc3RyaWN0ICZsdDtqc3A6Z2V0QXR0cmlidXRlIC8mZ3Q7IHRvIG9ubHkgbG9vayBpbiBQQUdFX1NDT1BFLiAoYmlsbGJhcmtlcikKICAgICAgPC9maXg+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+CiAgPHN1YnNlY3Rpb24gbmFtZT0iQ2x1c3RlciI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8Zml4PgogICAgICAgPGJ1Zz4zNzgwODwvYnVnPjogRml4IEFycmF5SW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbiBpbnNpZGUgWEJ5dGVCdWZmZXIuIFJlcG9ydGVkIGJ5IERpZXRtYXIgTXVlbGxlciAocGVybykKICAgICAgPC9maXg+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgPGJ1Zz4zNzg5NjwvYnVnPkRhdGFTZW5kZXIgc3RhcnRzIG5ldyBTb2NrZXQgYWZ0ZXIgSU9FeGNlcHRpb24uIChwZXJvKQogICAgICA8L3VwZGF0ZT4KICAgICAgPHVwZGF0ZT4KICAgICAgICBSZWR1Y2UgbWVtb3J5IHVzYWdlIGF0IG1lbWJlcnNoaXAgc2VydmljZS4gKHBlcm8pCiAgICAgIDwvdXBkYXRlPgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgo8L3NlY3Rpb24+Cgo8c2VjdGlvbiBuYW1lPSJUb21jYXQgNS41LjE0ICh5b2F2cykiPgogIDxzdWJzZWN0aW9uIG5hbWU9IkdlbmVyYWwiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPHVwZGF0ZT4KICAgICAgICBVcGRhdGUgb3B0aW9uYWwgbmF0aXZlIEFQUiBjb25uZWN0b3IgdmVyc2lvbiB0byAxLjEuMS4gKG10dXJrKQogICAgICA8L3VwZGF0ZT4KICAgICAgPHVwZGF0ZT4KICAgICAgICBVcGRhdGUgYnVpbGQucHJvcGVydGllcy5kZWZhdWx0IHRvIGdldCBuYXRpdmUgY29ubmVjdG9yIGZyb20gbmV3IGxvY2F0aW9uLiAoeW9hdnMpCiAgICAgIDwvdXBkYXRlPgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgoKICA8c3Vic2VjdGlvbiBuYW1lPSJDYXRhbGluYSI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8Zml4PgogICAgICAgIDxidWc+MTMwNDA8L2J1Zz46IEZpeCBnZXRDb250ZXh0KCkgd2hlbiB1c2VkIHRvIG9idGFpbiBhIGNvbnRleHQgdGhhdCBpcyBhIHN1Yi1jb250ZXh0CiAgICAgICAgb2YgdGhlIGN1cnJlbnQgY29udGV4dC4gUG9ydGVkIGZyb20gVEM0LiAobWFya3QpIAogICAgICA8L2ZpeD4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KCiAgPHN1YnNlY3Rpb24gbmFtZT0iSmFzcGVyIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zNzc0NjwvYnVnPjogUmVtb3ZlIGV4dHJhIHNwYWNlIGZyb20gU3RyaW5nVG9rZW5pemVyIHBhdHRlcm4gaW4gSnNwQywgYXMgc3VnZ2VzdGVkIGJ5CiAgICAgICAgRXJpYyBIZWRzdHJvbS4gKHlvYXZzKQogICAgICA8L2ZpeD4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KICA8c3Vic2VjdGlvbiBuYW1lPSJDb3lvdGUiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPGZpeD4KICAgICAgIDxidWc+MzY4NjM8L2J1Zz46IFN0cmlwIHF1b3RlcyB3aGVuIHBhcnNpbmcgQ29va2llIHZhbHVlcywgZXZlbiBmb3IgdjAgQ29va2llcy4gKGJpbGxiYXJrZXIpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgPGJ1Zz4zNzgwMzwvYnVnPjogRG9uJ3QgY2xhaW0gdGhhdCB3ZSBoYXZlIGEgc3RyaW5nIHZhbHVlIGluIE1lc3NhZ2VCeXRlcyB1bnRpbCB3ZSBhY3R1YWxseSBkby4gCiAgICAgICAgICAgUGF0Y2ggYnkgRG91ZyBSYW5kIChiaWxsYmFya2VyKQogICAgICA8L2ZpeD4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KPC9zZWN0aW9uPgoKPHNlY3Rpb24gbmFtZT0iVG9tY2F0IDUuNS4xMyAoeW9hdnMpIj4KICA8c3Vic2VjdGlvbiBuYW1lPSJHZW5lcmFsIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zNjcxMTwvYnVnPjogVW51c2VkIGxpbmUgb2YgY29kZS4gKHlvYXZzKQogICAgICA8L2ZpeD4KICAgICAgPHVwZGF0ZT4KICAgICAgICBSZW1vdmVkIHVudXNlZCBTQVhQYXRoLCBKYXhlbiBkZXBlbmRlbmNpZXMuICh5b2F2cykKICAgICAgPC91cGRhdGU+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgVXBkYXRlIGxvZzRqIGRlcGVuZGVuY3kgdG8gdmVyc2lvbiAxLjIuMTIsIFN0cnV0cyB0byAxLjIuNy4gKHlvYXZzKQogICAgICA8L3VwZGF0ZT4KICAgICAgPHVwZGF0ZT4KICAgICAgICBSZW1vdmVkIEpEQkMgMi4wIFN0ZEV4dCBkZXBlbmRlbmN5IChvbmx5IGNsYXNzIGZyb20gdGhlcmUgaXMgamF2YXguc3FsLlhBRGF0YVNvdXJjZSwgd2hpY2ggaXMKICAgICAgICBwcmVzZW50IGluIEpESyAxLjQgYW5kIGxhdGVyLiAoeW9hdnMpCiAgICAgIDwvdXBkYXRlPgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzcwMzk8L2J1Zz46IHR5cG8gb24gSksgUXVpY2sgY29uZmlndXJhdGlvbiBob3ctdG8uICh5b2F2cykKICAgICAgPC9maXg+CiAgICAgIDxhZGQ+CiAgICAgICAgPGJ1Zz4zNzAzNTwvYnVnPjogQWRkIGEgcGxhY2Vob2xkZXIgZmlsZSBpbiB0aGUgdGVtcCBkaXJlY3RvcnkgZm9yIFdpblppcCB0YXIuZ3ogaGFuZGxpbmcuICh5b2F2cykKICAgICAgPC9hZGQ+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgVXBkYXRlIEpBRiBkZXBlbmRlbmN5IHRvIDEuMC4yLCBKVEEgdG8gMS4wLjFiIGFuZCBKYXZhTWFpbCB0byAxLjMuM18wMS4gKG1hcmt0KQogICAgICA8L3VwZGF0ZT4KICAgICAgPGFkZD4KICAgICAgICBBZGRlZCBFY2xpcHNlIC5wcm9qZWN0LCAuY2xhc3NwYXRoLCBhbmQgYXNzb2NpYXRlZCBmaWxlcyB0byBtYWtlIGJ1aWxkaW5nIFRvbWNhdCBmcm9tCiAgICAgICAgRWNsaXBzZSBzaWduaWZpY2FudGx5IGVhc2llci4gKG1hcmt0KQogICAgICA8L2FkZD4KICAgICAgPGFkZD4gCiAgICAgICAgPGJ1Zz4zNzI4NDwvYnVnPjogR3Vlc3MgSlNFIDUuMCBsb2NhdGlvbiBvbiBNYWMgT1MgWCwgcGF0Y2ggYnkgU3RlcGFuIEtvbHRzb3YuICh5b2F2cykKICAgICAgPC9hZGQ+CiAgICAgIDxmaXg+CiAgICAgICAgV3JvbmcgY2xhc3MgbmFtZSBpbiBhbnRsaWIueG1sIGZvciBKa1N0YXR1c1VwZGF0ZVRhc2suICh5b2F2cykKICAgICAgPC9maXg+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+CiAgPHN1YnNlY3Rpb24gbmFtZT0iQ2F0YWxpbmEiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM2ODAyPC9idWc+OiBGaXggcHJvYmxlbSBvZiBkb3VibGUtaW5pdCB3aGVuIEpNWC1kZXBsb3lpbmcgYSAKICAgICAgICBDb250ZXh0IGludG8gYSBzdGFydGVkIEhvc3QuIChiaWxsYmFya2VyKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM2ODQwPC9idWc+OiBQcm92aWRlIGluZm9ybWF0aW9uIGFzIHRvIHdoaWNoIHdlYi54bWwgaXMgYmVpbmcgcHJvY2Vzc2VkIG9uIHN0YXJ0dXAgdG8KICAgICAgICBoZWxwIGRlYnVnIHBhcnNpbmcgZXJyb3JzLiAoeW9hdnMpCiAgICAgIDwvZml4PgogICAgICA8YWRkPgogICAgICAgIDxidWc+MzQ3MjQ8L2J1Zz46IEFiaWxpdHkgdG8gc2V0IGRvbWFpbiBmb3IgU2luZ2xlLVNpZ24tT24gY29va2llLiAgUGF0Y2ggYnkgT2xpdmVyCiAgICAgICAgUm9zc211ZWxsZXIuICh5b2F2cykKICAgICAgPC9hZGQ+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zNzA0NDwvYnVnPjogUmVhbG1CYXNlLmhhc1Jlc291cmNlUGVybWlzc2lvbiBuZWVkcyB0byBhY2Nlc3MgdGhlIEdlbmVyaWNQcmluY2lwYWwgYXMKICAgICAgICBzZXQgYnkgdGhlIHJlYWxtIHVubGVzcyBoYXNSb2xlIGlzIG92ZXJyaWRlbiwgd2hpY2ggd2FzIG5vIGxvbmdlciBiZWluZyBkb25lIHByb3Blcmx5IGZvcgogICAgICAgIHRoZSBKQUFTIHJlYWxtIChyZW1tKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM3MjY0PC9idWc+OiBKTkRJIHJlc291cmNlcyB3ZXJlIG5vIGxvbmdlciBhdmFpbGFibGUgd2hlbiBzdG9wcGluZyBsaXN0ZW5lcnMsCiAgICAgICAgc3VibWl0dGVkIGJ5IEJvZ2RhbiBDYWxtYWMgKHJlbW0pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzcxNTA8L2J1Zz46IFR1cm4gb2ZmIGRpcmVjdG9yeSBsaXN0aW5nIGJ5IGRlZmF1bHQgYW5kIGFkZCBhIHdhcm5pbmcKICAgICAgICByZWdhcmRpbmcgZW5hYmxpbmcgbGlzdGluZyBvZiBkaXJlY3RvcmllcyB3aXRoIG1hbnkgZW50cmllcy4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPHVwZGF0ZT4KICAgICAgICBBZGQgY29uZmlndXJhYmlsaXR5IGZvciB0aGUgYW1vdW50IG9mIHRpbWUgdGhhdCB0aGUgY29udGFpbmVyIHdpbGwgd2FpdCBmb3IgcmVxdWVzdHMKICAgICAgICB0byBjb21wbGV0ZSB3aGVuIHVubG9hZGluZyBzZXJ2bGV0cywgdXNpbmcgdGhlIHVubG9hZERlbGF5IHByb3BlcnR5LiAocmVtbSkKICAgICAgPC91cGRhdGU+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgQWRkIGNvZGUgdG8gc2V0IHRvIG51bGwgZmllbGRzIGluIGxvYWRlZCBjbGFzc2VzIHdoZW4gc3RvcHBpbmcgYSB3ZWIgYXBwbGljYXRpb24sIGFzIGEKICAgICAgICBwb3NzaWJsZSB3b3JrYXJvdW5kIGZvciBzdXNwaWNpb3VzIGdhcmJhZ2UgY29sbGVjdGlvbiBiZWhhdmlvci4gKHJlbW0pCiAgICAgIDwvdXBkYXRlPgogICAgICA8dXBkYXRlPgogICAgICAgIFVwZGF0ZSBtZXNzYWdlcyBhbmQgc3RhY2sgdHJhY2VzIGZvciBjbGFzc2xvYWRpbmcgZXJyb3JzIHdoaWNoIG1heSBvY2N1ciB3aGVuIHJlbW92aW5nCiAgICAgICAgYSB3ZWIgYXBwbGljYXRpb24sIGFuZCBmb3Igc3RvcHBlZCB3ZWIgYXBwbGljYXRpb25zLiAocmVtbSkKICAgICAgPC91cGRhdGU+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zNzMxOTwvYnVnPjogRml4IGNhdGFsaW5hLmJhdCByZWZlcmVuY2UgdG8gQ0FUQUxJTkFfQkFTRSBmb3IgbG9nZ2luZy5wcm9wZXJ0aWVzLiAgVGhhbmtzCiAgICAgICAgdG8gUGllcnJlLVl2ZXMgQmVuemFrZW4uICh5b2F2cykKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zNjg1MjwvYnVnPjogQ3VzdG9tIGNsYXNzbG9hZGVycyBkb24ndCBob25vciBDb250ZXQgcHJpdmlsZWdlZCBhdHRyaWJ1dGUuICBUaGFua3MgdG8KICAgICAgICBNYXR0IEJyaW5rbGV5IGZvciB0aGUgYW5hbHlzaXMgYW5kIHBhdGNoLiAoeW9hdnMpCiAgICAgIDwvZml4PgogICAgICA8Zml4PkZpeCBmb3IgYSBjb3VwbGUgb2YgKG1vc3RseSBzaWxseSkgZWRnZS1jYXNlcyBpbiB0ZXN0aW5nIGF1dGguCiAgICAgICAgICAgVGhhbmtzIHRvIE5hbSBULiBOZ3V5ZW4gZm9yIHRoZSByZXBvcnQuIChiaWxsYmFya2VyKSAKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zNzA2MDwvYnVnPjogQWN0dWFsbHkgY29weSB0aGUgUmVxdWVzdCBoZWFkZXJzIHdoZW4gcmVwbGF5aW5nIGFmdGVyIEZvcm0gYXV0aC4gKGJpbGxiYXJrZXIpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+Mzc1OTE8L2J1Zz46IFR5cG8gaW4gRW5naW5lIGNvbmZpZ3VyYXRpb24gcmVmZXJlbmNlLiAoeW9hdnMpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+Mzc2Njg8L2J1Zz46IEFkZGVkIG5vdGUgYWJvdXQgSlNQIHJlY29tcGlsYXRpb24gdG8gQ29udGV4dCBjb25maWd1cmF0aW9uIGRvY3VtZW50YXRpb24uICh5b2F2cykKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zNzEzMjwvYnVnPjogSGF2ZSBEaWdlc3RBdXRoZW50aWNhdG9yIEhhbmRsZSB1c2VyIG5hbWVzIHdpdGggY29tbWFzLiAgVGhhbmtzIHRvIAogICAgICAgICAgUm9iZXJ0IFdpbGxlIGZvciB0aGUgcGF0Y2guICh5b2F2cykKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zNzIxMjwvYnVnPjogQmV0dGVyIGVycm9yIHJlcG9ydGluZyBpbiBDb25uZWN0b3IuamF2YS4gIFRoYW5rcyB0byBSYWxmIEhhdXNlciBmb3IKICAgICAgICB0aGUgcGF0Y2guICh5b2F2cykKICAgICAgPC9maXg+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+CiAgPHN1YnNlY3Rpb24gbmFtZT0iQ295b3RlIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDxmaXg+CiAgICAgICAgR3JhY2VmdWxseSBoYW5kbGUgdGhlIGNhc2Ugd2hlcmUgc29tZSBTb2NrZXQgb3B0aW9ucyBhcmUgZGlzYWJsZWQgYXQgCiAgICAgICAgdGhlIE9TIGxldmVsIGZvciB0aGUgQUpQLzEuMyBDb25uZWN0b3IuIChiaWxsYmFya2VyKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM2MzY2PC9idWc+OiBVc2UgcmV3cml0dGVuIGRlcGxveWVyLWhvd3RvIHBhZ2UgYnkgQWxsaXN0YWlyIENyb3NzbGV5LiAocmVtbSkKICAgICAgPC9maXg+CiAgICAgIDxhZGQ+CiAgICAgICAgPGJ1Zz4zNjYzMDwvYnVnPjogQWRkZWQgZXh0cmEgbG9nIG91dHB1dCBmb3IgY2xhc3MgaW5zdGFudGlhdGlvbiBmYWlsdXJlLiAoeW9hdnMpCiAgICAgIDwvYWRkPgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzcxMjE8L2J1Zz46IFNlbmRmaWxlIGFsd2F5cyBuZWVkcyB0byBiZSBnaXZlbiB0aGUgbGVuZ3RoIG9mIGRhdGEgdG8gd3JpdGUsCiAgICAgICAgd2hpY2ggZml4ZXMgcmFuZ2VkIHJlcXVlc3RzLiAocmVtbSkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgT3B0aW1pemVkIGRpcmVjdCBieXRlIGJ1ZmZlcnMgYXNzb2NpYXRpb24gd2l0aCB0aGUgc29ja2V0IGZvciBBUFIgY29ubmVjdG9ycy4gKG10dXJrKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICBGaXggaGlkZGVuIE5QRXMgd2hlbiB1c2luZyB0aGUgQVBSIGNvbm5lY3RvcnMgYW5kIHRoZXJlJ3Mgbm8gaG9zdCBoZWFkZXIuIChwZXJvLCByZW1tKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICBIdHRwMTFQcm90b2NvbCBub3cgcmVnaXN0ZXIgUmVxdWVzdFByb2Nlc3NvciBhdCBKTVggYW5kIHNob3cgY3VycmVudCB1c2FnZSBpbnNpZGUgbWFuYWdlciBhcHAuIChwZXJvKQogICAgICA8L2ZpeD4KICAgICAgPGFkZD4KICAgICAgICBKa1N0YXR1cyBBbnQgdGFza3MgZm9yIG1vZF9qayAxLjIuMTUuIChwZXJvKQogICAgICA8L2FkZD4KICAgICAgPHVwZGF0ZT5Db25uZWN0aW9uIFRpbWVvdXQgaXMgbm9ybWFsLCBzbyByZWR1Y2UgbG9nZ2luZyB0byBERUJVRyAoYmlsbGJhcmtlcikgCiAgICAgIDwvdXBkYXRlPgogICAgICA8Zml4PgogICAgICAgIEZpeCBjcmFzaCB3aGljaCBjb3VsZCBvY2N1ciB3aXRoIHRoZSBIVFRQIEFQUiBjb25uZWN0b3Igd2hlbiBhY2Nlc3NpbmcgcmVxdWVzdCBKTVggb2JqZWN0cwogICAgICAgIG91dHNpZGUgb2YgdGhlIHByb2Nlc3Npbmcgb2YgdGhlIHNhaWQgcmVxdWVzdCAocmVtbSkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zNzYyNzwvYnVnPjogRml4IGJ1ZmZlcmluZyBpc3N1ZSBpbiB0aGUgSFRUUCBBUFIgY29ubmVjdG9yIHdoZW4gYSBsYXJnZSBidWZmZXIgc2l6ZSB3YXMKICAgICAgICB1c2VkIGZvciBzZXJ2bGV0cyAocmVtbSkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zNzY3MzwvYnVnPjogRml4IGltcGxlbWVudGF0aW9uIG9mIGdldExvY2FsUG9ydCBhbmQgZ2V0TG9jYWxBZGRyIGluIHRoZSBIVFRQIEFQUiBjb25uZWN0b3IKICAgICAgICAocmVtbSkKICAgICAgPC9maXg+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+CiAgPHN1YnNlY3Rpb24gbmFtZT0iSmFzcGVyIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zNTI1MjwvYnVnPjogSmFzcGVyIFBhZ2VEYXRhSW1wbCBvdXRwdXRzIG1hbGZvcm1lZCBYTUwuICBQYXRjaCBieSBSYWh1bCBBa29sa2FyLiAoeW9hdnMpCiAgICAgIDwvZml4PgogICAgICA8YWRkPgogICAgICAgIDxidWc+MzcwNjI8L2J1Zz46IEhlbHBmdWwgSlNQIGV4Y2VwdGlvbiBtZXNzYWdlIGNvbnRhaW5pbmcgZmlsZSwgbGluZSBudW1iZXJzLiAgUGF0Y2ggYnkKICAgICAgICBUaW0gRmVubmVsbCBhdCBodHRwOi8vd3d3LnRmZW5uZS5jb20vamFzcGVyLy4gKHlvYXZzKQogICAgICA8L2FkZD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM3NDA3PC9idWc+OiBGaWxlIGRlc2NyaXB0b3IgbGVhayBpbiBKc3BSZWFkZXIuICBUaGFua3MgdG8gRnJlZCBmb3IgdGhlIHBhdGNoLiAgSSBhbHNvCiAgICAgICAgZGlkIHNvbWUgbWlub3IgY2xlYW51cCBpbiB0aGUgY2xhc3MuICh5b2F2cykKICAgICAgPC9maXg+CiAgICAgIDxhZGQ+CiAgICAgICAgPGJ1Zz4zNzYxMjwvYnVnPjogQWRkIGZpbGUgbG9jYXRpb24gdG8gSlNQIFZhbGlkYXRvciBlcnJvciBtZXNzYWdlLiAgVGhhbmtzIHRvIFJlbmF1ZCBCcnV5ZXJvbgogICAgICAgIGZvciB0aGUgcGF0Y2guICh5b2F2cykKICAgICAgPC9hZGQ+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+CiAgPHN1YnNlY3Rpb24gbmFtZT0iQ2x1c3RlciI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8Zml4PgogICAgICAgIEZpeCB0aGF0IHNlc3Npb24gcmVwbGFjZSBtZXNzYWdlcyBhcmUgbG9nZ2VkIGFmdGVyIG5vZGUgcmVjb3ZlcnkgZ2V0IGFsbCBzZXNzaW9uIGZyb20gbWFzdGVyIG5vZGUuIChwZXJvKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM3ODk2PC9idWc+IEZpeCB0aGF0IHNlbmRNZXNzYWdlIHNpZ25hdHVyZSBhdCBhbGwgRGF0YVNlbmRlciBzdWJjbGFzc2VzIG11c3QgYmUgY2hhbmdlZC4KICAgICAgICBOb3cgcG9vbGVkIGFuZCBhc3luYyBtb2RlcyB3b3JraW5nIGFzIGV4cGVjdGVkLiAocGVybykKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgRml4IHRoYXQgc29ja2V0IGF0IG8uYS5jLmNsdXN0ZXIudGNwLkZhc3RBc3luY1NvY2tldFNlbmRlciBjYW4gYmUgZGlzY29ubmVjdC9jb25uZWN0LiAocGVybykKICAgICAgPC9maXg+ICAgIAogICAgICA8Zml4PgogICAgICAgIEZpeCBjbHVzdGVyIG1vZHVsZSBidWlsZC54bWwgc2NyaXB0IGZvciBuZXcgc3ZuIHJlcG9zaXRvcnkgc3RydWN0dXJlIChwZXJvKQogICAgICA8L2ZpeD4gICAgCiAgICAgIDxmaXg+CiAgICAgICAgRml4IGNsb3NlZCBzb2NrZXQgZXhjZXB0aW9ucyBhdCBub3JtYWwgc2VydmVyIHNodXRkb3duLCByZXBvcnRlZCBieSBPbHZlIEhhbnNlbiAocGVybykKICAgICAgPC9maXg+ICAgIAogICAgICA8Zml4PgogICAgICAgIEZpeCBjbG9zZWQgc29ja2V0IGV4Y2VwdGlvbnMgaW5zaWRlIGFzeW5jIG1lc3NhZ2UgdHJhbnNmZXIgbW9kZXMgKHBlcm8pCiAgICAgIDwvZml4PiAgICAKICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM0OTg0PC9idWc+OiBIdHRwU2Vzc2lvbkJpbmRpbmdFdmVudC5nZXRWYWx1ZSgpIGdldCBjb3JyZWN0IHZhbHVlIChwZXJvKQogICAgICA8L2ZpeD4gICAgCiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zNTkxNjwvYnVnPjogc2VuZCBzZXNzaW9uQ3JlYXRlZCB0byBTZXNzaW9uTGlzdGVuZXIgYWZ0ZXIgY2x1c3RlciBub2RlIHJlY292ZXJ5IChwZXJvKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM2NTQxPC9idWc+OiBVc2VkIGFsc28gSGFzaHRhYmxlIGF0IERlbHRhU2Vzc2lvbiAocGVybykKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgQmV0dGVyIHN1cHBvcnQgY2x1c3RlciBhdCBlbmdpbmUgbGV2ZWwuIChwZXJvKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM2ODY2PC9idWc+OiBDb3JyZWN0IGF0dHJpYnV0ZSBuYW1lIGluIGNvbmYvc2VydmVyLnhtbCBkb2N1bWVudGF0aW9uIGZvciBDbHVzdGVyIGVsZW1lbnQuICh5b2F2cykKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zNzI2MTwvYnVnPjogQWxsb3cgeGVyY2VzIHRvIGtub3cgd2hlcmUgdGhlIHdlYi54bWwgZmlsZSBpcyBzbyB0aGF0IHJlbGF0aXZlIGVudGl0aWVzIGNhbiBiZSByZXNvbHZlZC4KICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zNzUyOTwvYnVnPjogRml4ZWQgcmFjZSBjb25kaXRpb24gaW4gUmVwbGljYXRpb25MaXN0ZXIjc3RvcExpc3RlbmluZy4gIFRoYW5rcyB0byAKICAgICAgICBDaHJpcyBXYWxrZXIgZm9yIHRoZSBwYXRjaC4gKHlvYXZzKQogICAgICA8L2ZpeD4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KICA8c3Vic2VjdGlvbiBuYW1lPSJXZWJhcHBzIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDxmaXg+UmVtb3ZlIG9ic29sZXRlIFRhZ1BsdWdpbiBmaWxlIGZyb20gSlNQIGV4YW1wbGVzIChiaWxsYmFya2VyKTwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzYwMTk8L2J1Zz46IE1hZGUgY2xlYXIgdGhlIEhvc3QtTWFuYWdlciBIb3dUbyBpcyBjb21pbmcgc29vbiwgbm90IHJlYWR5IHlldC4gKHlvYXZzKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM2MzM2PC9idWc+OiBDaGVjayBXQVIgZXh0ZW5zaW9uIGluIGJvdGggdXBwZXIgYW5kIGxvd2VyIGNhc2UsIGFzIHN1Z2dlc3RlZCBieQogICAgICAgIEEuIEdyYXNvZmYuICh5b2F2cykKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zNTk4MjwvYnVnPjogQ2FuJ3QgZGVsZXRlIG1haWwgc2Vzc2lvbnMgaW4gYWRtaW4gd2ViYXBwLiAoeW9hdnMpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzY2NzM8L2J1Zz46IFNpbWlsYXIgdG8gdGhlIG9uZSBhYm92ZSwgZm9yIGRhdGEgc291cmNlcy4gKHlvYXZzKQogICAgICA8L2ZpeD4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KPC9zZWN0aW9uPgoKPHNlY3Rpb24gbmFtZT0iVG9tY2F0IDUuNS4xMiAoeW9hdnMpIj4KICA8c3Vic2VjdGlvbiBuYW1lPSJHZW5lcmFsIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDxmaXg+CiAgICAgICAgUmVtb3ZlIHVuZWVkZWQgZmlsZXMgaW4gY29uZi4gKHJlbW0pCiAgICAgIDwvZml4PgogICAgICA8dXBkYXRlPgogICAgICAgIENoYW5nZSBkaXN0cmlidXRpb24gZmlsZSBuYW1lcyBmcm9tIGpha2FydGEtKiB0byBhcGFjaGUtKi4gKHJlbW0pCiAgICAgIDwvdXBkYXRlPgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgogIAogIDxzdWJzZWN0aW9uIG5hbWU9IkNhdGFsaW5hIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDxhZGQ+CiAgICAgICAgQWRkIEpNWCBSZW1vdGUgY3JlYXRlIGFuZCB1bnJlZ2lzdGVyIGFudCB0YXNrcyAocGVybykKICAgICAgPC9hZGQ+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zNjM0MzwvYnVnPjogT25seSBub3JtYWxpemUgb3V0IGJhY2tzbGFzaCBvbiBXaW5kb3dzIHBsYXRmb3Jtcy4gKGJpbGxiYXJrZXIpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIEFsbG93IGNvbmZpZ3VyaW5nIHN0YW5kYXJkIHN0cmVhbSByZWRpcmVjdGlvbi4gKHJlbW0pCiAgICAgIDwvZml4PgogICAgICA8YWRkPgogICAgICAgIDxidWc+MzYwODg8L2J1Zz46IEFkZCBSVU5OSU5HLnR4dCBhbmQgUkVMRUFTRS1OT1RFUy50eHQgdG8gZnVsbGRvY3MgZGlzdHJvLiAoeW9hdnMpCiAgICAgIDwvYWRkPgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzY1MzQ8L2J1Zz46IGZpeCBlcXVhbHMgZm9yIFVSTHMgcmV0dXJuZWQgYnkgU2VydmxldENvbnRleHQuZ2V0UmVzb3VyY2UoKSAobHVlaGUpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzY1NTg8L2J1Zz46IENsZWFyIEludHJvc3BlY3Rpb25VdGlscyBjYWNoZSB3aGVuIHN0b3BwaW5nIGEgd2ViYXBwLCBhcyBpdCAKICAgICAgICBjb3VsZCBsZWFrIHRvIGtlZXBpbmcgYSByZWZlcmVuY2UgdG8gdGhlIGNsYXNzbG9hZGVyIChyZW1tKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM2MTEzPC9idWc+OiBTZXNzaW9uIHBlcnNpc3RlbmNlIGZvciBvYmplY3RzIHdpdGggcHJpbWl0aXZlIHR5cGVzIGNvdWxkIGZhaWwgaW4KICAgICAgICBzb21lIHJhcmUgY2FzZXMgKHJlbW0pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzY1NDE8L2J1Zz46IEZ1bGwgc3luY2hyb25pemF0aW9uIGZvciBzZXNzaW9uIG9iamVjdHMgYXR0cmlidXRlcyBjb2xsZWN0aW9ucyAocmVtbSkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zNTYwOTwvYnVnPjogc2VydmljZS5iYXQgZWNobyBjb21tYW5kIHdoZW4gd3JvbmcgYXJndW1lbnRzIGdpdmVuIFtwYXRjaCBieSBSb2JlcnQKICAgICAgICBMb25nc29uXSAoeW9hdnMpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzQ3NDk8L2J1Zz46IGpzZXNzaW9uaWQgZHJvcHBlZCBvbiB0cmFpbGluZyBzbGFzaCAoLykgcmVkaXJlY3QgKHJlbW0pCiAgICAgIDwvZml4PgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgogIAogICA8c3Vic2VjdGlvbiBuYW1lPSJDb3lvdGUiPgogICAgIDxjaGFuZ2Vsb2c+CiAgICAgICA8dXBkYXRlPgogICAgICAgICBBZGQgc3VwcG9ydCBmb3Igc2VjcmV0IGZvciBBSlAgQVBSIChyZW1tKQogICAgICAgPC91cGRhdGU+CiAgICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgoKICA8c3Vic2VjdGlvbiBuYW1lPSJKYXNwZXIiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPGZpeD4KICAgICAgICBGaXggTlBFIHdpdGggYW4gZXJyb3IgbWVzc2FnZSB3aGVuIG5vIEphdmEgY29tcGlsZXIgaXMgYXZhaWxhYmxlIChyZW1tKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICBSZXN0cmljdCBTeXN0ZW0gZXJyIHN0cmVhbSBjYXB0dXJlIHRvIHRoZSBBbnQgY29tcGlsZXIsIGFzIHRoZSBFY2xpcHNlIGNvbXBpbGVyCiAgICAgICAgZG9lcyBub3QgbmVlZCBpdCAocmVtbSkKICAgICAgPC9maXg+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgSlNQIGNvbXBpbGF0aW9uIHNwZWVkIGltcHJvdmVtZW50IHVzaW5nIHRhZyBsaWJyYXJ5IGluZm9ybWF0aW9uIGNhY2hpbmcsIAogICAgICAgIHN1Ym1pdHRlZCBieSBYaW5nYm8gR2FvIChyZW1tKQogICAgICA8L3VwZGF0ZT4KICAgICAgPGFkZD4KICAgICAgICBJbml0aWFsIGNvbnRyaWJ1dGlvbiBvZiBKU1RMIHRhZyBwbHVnaW5zIHN1cHBvcnRpbmcgdGhlIGNvcmUgdGFnIGxpYnJhcnkgb2YKICAgICAgICBKU1RMLCBzdWJtaXR0ZWQgYnkgSmluZyBMaSAocmVtbSkKICAgICAgPC9hZGQ+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+CiAgCiAgPHN1YnNlY3Rpb24gbmFtZT0iQ2x1c3RlciI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzY1NDE8L2J1Zz46IFN5bmMgYWxsIHNlc3Npb24gYXR0cmlidXRlIGFjY2VzcyAocmVhZCBhbmQgd3JpdGUpIGF0IERlbHRhU2Vzc2lvbiAocGVybykKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zNjUxODwvYnVnPjogQ2xhc3NuYW1lIHR5cG9zIGZvciBzZW5kZXJzLCBzdWJtaXR0ZWQgYnkgQ2hyaXN0b3BoIEJhY2hodWJlci1IYWxsZXIgKHJlbW0pCiAgICAgIDwvZml4PgogICAgICA8YWRkPgogICAgICAgIDxidWc+MzU2MTM8L2J1Zz46IEFkZGVkIEZBUSBxdWVzdGlvbiBhbmQgYW5zd2VyIGFib3V0IHRjcExpc3RlbkFkZHJlc3M9ImF1dG8iIGFuZCAvZXRjL2hvc3RzICh5b2F2cykKICAgICAgPC9hZGQ+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgTW92ZWQgRkFRIHNlY3Rpb24gZm9yIENsdXN0ZXJpbmcgZnJvbSBDbHVzdGVyaW5nIEhvd1RvIHBhZ2UgdG8gaXRzIG93biBGQVEgcGFnZS4gKHlvYXZzKQogICAgICA8L3VwZGF0ZT4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KICAKICA8c3Vic2VjdGlvbiBuYW1lPSJXZWJhcHBzIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDxkb2NzPgogICAgICAgIDxidWc+MzYzMTk8L2J1Zz46IEZpeCBicm9rZW4gbGluayB0byBEQkNQIGRvY3MsIHN1Ym1pdHRlZCBieSBYYXZpZXIgUG9pbnNhcmQgKHJlbW0pCiAgICAgIDwvZG9jcz4KICAgICAgPGRvY3M+CiAgICAgICAgQnJhbmQgbmV3IGRlcGxveWVyIHNwZWNzLCBzdWJtaXR0ZWQgYnkgQWxsaXN0YWlyIENyb3NzbGV5IChyZW1tKQogICAgICA8L2RvY3M+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+CiA8L3NlY3Rpb24+Cgo8c2VjdGlvbiBuYW1lPSJUb21jYXQgNS41LjExICh5b2F2cykiPgogIDxzdWJzZWN0aW9uIG5hbWU9IkdlbmVyYWwiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPHVwZGF0ZT4KICAgICAgICBVcGRhdGUgdG8gWGVyY2VzIDIuNy4xIChyZW1tKQogICAgICA8L3VwZGF0ZT4KICAgICAgPGFkZD4KICAgICAgICBBZGQgcmVhZHkgdG8gYnVpbGQgYmluL3RvbWNhdC1uYXRpdmUudGFyLmd6IGZvciB0aGUgQVBSIEpOSSB3cmFwcGVyIGxpYnJhcnkgKHJlbW0pCiAgICAgIDwvYWRkPgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzU5MzA8L2J1Zz46IEJhZCBsb2dnaW5nIGNvbmZpZyB1c2VkIGJ5IHRoZSBUb21jYXQgV2luZG93cyBzZXJ2aWNlIChyZW1tKQogICAgICA8L2ZpeD4KICAgICAgPGFkZD4KICAgICAgICA8YnVnPjMzMjYxPC9idWc+OiBXaW5kb3dzIGluc3RhbGxlciBub3cgY2hlY2tzIHRoZSB1c2VyIHR5cGUgYW5kIHdhcm5zIG5vbi1hZG1pbnMgYXMgbmVlZGVkLiAoeW9hdnMpCiAgICAgIDwvYWRkPgogICAgICA8dXBkYXRlPgogICAgICAgIFRoZSBXaW5kb3dzIGluc3RhbGxlciB3aWxsIG5vdyBvcHRpb25hbGx5IGRvd25sb2FkIGEgKDMyYml0KSBXaW5kb3dzIC5kbGwgZm9yIFRvbWNhdCBuYXRpdmUKICAgICAgICBmcm9tIEhFQW5ldCAocmVtbSkKICAgICAgPC91cGRhdGU+CiAgICAgIDxmaXg+CiAgICAgICAgRGVjbGFyYXRpb24gb2YganNwYyBBbnQgdGFzayB0byBmaXggdGhlIGRlcGxveWVyIHBhY2thZ2UgKHJlbW0pCiAgICAgIDwvZml4PgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgogIAogIDxzdWJzZWN0aW9uIG5hbWU9IkNhdGFsaW5hIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDxhZGQ+CiAgICAgICAgQWRkIGNvbmN1cnJlbmN5IGNvbnRyb2wgdmFsdmUgKG8uYS5jLnZhbHZlcy5TZW1hcGhvcmVWYWx2ZSkuIEFzIHRoZSBUb21jYXQgZGlzdHJpYnV0aW9uIAogICAgICAgIGlzIG5vdCBidWlsdCBmb3IgSmF2YSA1LCB0aGUgdmFsdmUgd2lsbCBoYXZlIHRvIGJlIGNvbXBpbGVkIGZyb20gdGhlIHNvdXJjZXMgCiAgICAgICAgdXNpbmcgSmF2YSA1IChyZW1tKQogICAgICA8L2FkZD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM1ODgwPC9idWc+OiBJZ25vcmUgSlNTRTE1U29ja2V0RmFjdG9yeSB3aGVuIGdlbmVyYXRpbmcgSmF2YURvYywgYXMgaXQgYnJlYWtzCiAgICAgICAgICB0aGUgSkRLIDEuNCBKYXZhRG9jIHRvb2wuICh5b2F2cykKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zNTg2NTwvYnVnPjogc2V0Y2xhc3NwYXRoLnNoIGNhbm5vdCBiZSBleGN1dGl2ZSB1bmRlciBjeWd3aW4uIChmdW5rbWFuKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjMzMjY3PC9idWc+OiBTZXQgd29ya2luZyBwYXRoIGluIHNlcnZpY2UgaW5zdGFsbGVyLCBhcyBzdWdnZXN0ZWQgYnkgRG9taW5pawogICAgICAgICAgRHJ6ZXdpZWNraS4gKHlvYXZzKQogICAgICA8L2ZpeD4KICAgICAgPHVwZGF0ZT4KICAgICAgICA8YnVnPjM0Nzk0PC9idWc+OiBVcGRhdGUgY29ubmVjdG9yIGRvY3VtZW50YXRpb24gdG8gaW5jbHVkZSBjbGllbnRBdXRoIGF0dHJpYnV0ZS4gKHlvYXZzKQogICAgICA8L3VwZGF0ZT4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM1ODk0PC9idWc+LCA8YnVnPjM2MjI4PC9idWc+OiBGaXggQ05GRSB3aGVuIHN0YXJ0aW5nIGluIGEgc2FuZGJveC4gKGJpbGxiYXJrZXIsIHJlbW0pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIEFkZCB2ZXJzaW9uIGNoZWNrIGZvciBUb21jYXQgbmF0aXZlIHNvIHRoYXQgaW5jb21wYXRpYmxlIEFQSSBjaGFuZ2VzIGFyZSBkZXRlY3RlZCBlYXJseSAocmVtbSkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zNjAyMDwvYnVnPjogQWxsb3cgTWVtb3J5VXNlckRhdGFiYXNlIHRvIHdvcmsgYmV0dGVyIG9uIHdyaXRlIHByb3RlY3RlZCBtZWRpdW1zLAogICAgICAgIHN1Ym1pdHRlZCBieSBSYWluZXIgSnVuZyAocmVtbSkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zNTk3ODwvYnVnPjogQmFkIGhhbmRsaW5nIG9mIHNpbmdsZSByYW5nZSByZXF1ZXN0cyBncmVhdGVyIHRoYW4gMkdCIGluIHRoZSBEZWZhdWx0U2VydmxldAogICAgICAgIChyZW1tKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM1OTg0PC9idWc+OiBDbGllbnQgYWJvcnQgZXhjZXB0aW9ucyB3aWxsIG5vdyB1c2UgZ2V0Q2F1c2UgKHJlbW0pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIEZpeCBoYW5kbGluZyBvZiBub24tZmlsZSBiYXNlZCBpbmNsdWRlcyB3aXRoIFNTSSwgc3VibWl0dGVkIGJ5IERhdmlkIEJlY2tlciAobWFya3QpCiAgICAgIDwvZml4PgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgogIAogICA8c3Vic2VjdGlvbiBuYW1lPSJDb3lvdGUiPgogICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDxmaXg+CiAgICAgICAgRml4IGRlZmF1bHQgcG9ydHMgZm9yIGh0dHAgYW5kIGh0dHBzIHdoaWNoIGFyZSBzZXQgaW4gdGhlIHJlcXVlc3Qgd2hlbiB0aGUgcGFyc2VkCiAgICAgICAgaG9zdG5hbWUgZG9lcyBub3Qgc3BlY2lmeSB0aGUgcG9ydCwgYW5kIHdoaWNoIHdlcmUgaW52ZXJ0ZWQgKGh0dHBzIHdhcyBzZXQgYXMgODAgCiAgICAgICAgYW5kIGh0dHAgYXMgNDQzKS4gKHJlbW0pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIEFkZCBtaXNzaW5nIHRvbWNhdEF1dGhlbnRpY2F0aW9uIGF0dHJpYnV0ZSB0byB0aGUgQUpQIEFQUiBpbXBsZW1lbnRhdGlvbi4gKHJlbW0pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIENoZWNrIGZpbGVuYW1lIHNlbmRmaWxlIGF0dHJpYnV0ZSBvbmx5IGlmIHNlbmRmaWxlIGlzIGVuYWJsZWQuIChyZW1tKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICBGaXggb3V0cHV0IGJ1ZmZlcmluZyBmb3IgQVBSIEFKUCBpbXBsZW1lbnRhdGlvbi4gKHJlbW0pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzU5NDE8L2J1Zz46IEZpeCBnZXRSZW1vdGVBZGRyIGZvciBBUFIgQUpQIGltcGxlbWVudGF0aW9uLiAocmVtbSkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zNTk0MjwvYnVnPjogRml4IE5QRSByZXRyaXZpbmcgY2lwaGVyIHN1aXRlIGF0dHJpYnV0ZSB3aGVuIG5vIGNlcnRpZmljYXRlIAogICAgICAgIHdhcyBzdWJtaXR0ZWQgKGZvciBleGFtcGxlIHdpdGggbm8gU1NMKS4gKHJlbW0pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIEludGVybmF0aW9uYWxpemF0aW9uIGFuZCBjb2RlIGNsZWFudXBzIGZvciBBUFIgQUpQIGltcGxlbWVudGF0aW9uLiAocmVtbSkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgU2VjdXJpdHkgZXhjZXB0aW9uIGluIEFQUiBBSlAgaW1wbGVtZW50YXRpb24gd2hlbiBydW5uaW5nIHdpdGggdGhlIHNlY3VyaXR5CiAgICAgICAgbWFuYWdlciBlbmFibGVkLiAocmVtbSkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zNjE3MzwvYnVnPjogQWRkIG1pc3Npbmcgc3luYyBpbiBGYXN0SHR0cERhdGVGb3JtYXQuZm9ybWF0RGF0ZSwgc3VibWl0dGVkIAogICAgICAgIGJ5IEFsZXhlaSBLcmFpbmlvdWsgKHJlbW0pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIERpc2FibGUgSFRUUCBjb21wcmVzc2lvbiB3aGVuIHNlbmRmaWxlIGlzIHVzZWQgZm9yIGEgcmVzb3VyY2UgKHJlbW0pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIEFKUCBzZWNyZXQgYXR0cmlidXRlIHJlcG9ydCBvbmx5IGF0IHRyYWNlIGxldmVsLiAocGVybykKICAgICAgPC9maXg+CiAgICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgoKICA8c3Vic2VjdGlvbiBuYW1lPSJKYXNwZXIiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM2MTI3PC9idWc+OiBWYWxpZGF0aW9uIGNvbXBhdGliaWxpdHkgd2l0aCBYZXJjZXMgMi43LjEsIHN1Ym1pdHRlZCAKICAgICAgICBieSBGbG9yZW50IEJlbm9pdCAocmVtbSkKICAgICAgPC9maXg+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+CiAgCiAgPHN1YnNlY3Rpb24gbmFtZT0iQ2x1c3RlciI+CiAgICA8Y2hhbmdlbG9nPiAgICAgICAgCiAgICAgIDxmaXg+CiAgICAgICAgRml4IE5QRSB3aGVuIGNsdXN0ZXIgc3RvcHMgKHBlcm8pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzYyMTg8L2J1Zz46IE1lbW9yeVJlYWxtIG5vdyBzdXBwb3J0IGFsc28gR2VuZXJpY1ByaW5jaXBhbCwgYnV0IAogICAgICAgIEpBQVNSZWFsbSB3aXRoIGNsdXN0ZXIgcmVwbGljYXRpb24gc3RpbGwgaGFzIGEgcHJvYmxlbSwgZGV0ZWN0ZWQgYnkgRGlyayBEZWtvayAocGVybykKICAgICAgPC9maXg+ICAgCiAgICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgogIAogIDxzdWJzZWN0aW9uIG5hbWU9IldlYmFwcHMiPgogICAgPGNoYW5nZWxvZz4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KIDwvc2VjdGlvbj4KCjxzZWN0aW9uIG5hbWU9IlRvbWNhdCA1LjUuMTAgKHlvYXZzKSI+CiAgPHN1YnNlY3Rpb24gbmFtZT0iR2VuZXJhbCI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8YWRkPgogICAgICAgICBBZGQgSk1YIHJlbW90ZSBhbnQgdGFzayB0byBjb250cm9sIHRvbWNhdCBNQmVhbnNlcnZlciB2aWEgYW50IHNjcmlwdHMuCiAgICAgICAgIEFudCBsaWIgaXMgaW5jbHVkZWQgYXQgInNlcnZlci9saWIvY2F0YWxpbmEtYW50LWpteC5qYXIiIGFuZCBkb2N1bWVudGF0aW9uCiAgICAgICAgIGlzIGFkZGVkIHRvIDxhIGhyZWY9Im1vbml0b3JpbmcuaHRtbCI+TW9uaXRvcmluZyBhbmQgTWFuYWdpbmcgVG9tY2F0IEhvdy1UbzwvYT4gKHBlcm8pCiAgICAgIDwvYWRkPgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzQzNjE8L2J1Zz46IEludGVncmF0ZSBiZXR0ZXIgYW50bGliIGFuZCBpbXBvcnQgc3VwcG9ydCBmb3IgCiAgICAgICAgY2F0YWxpbmEgbWFuYWdlciB0YXNrcyBbTW9kaWZpZWQgcGF0Y2ggZnJvbSBEYW5pZWwgU2FudG9zXSAgKHBlcm8pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIFN0b3JlQ29uZmlnIHNhdmUgbm93IHRoZSBDb25uZWN0b3Iuc3NsUHJvdG9jb2wgYXR0cmlidXRlLiAocGVybykKICAgICAgPC9maXg+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgQ2hhbmdlIGxvZyBkaXIgYXQgc2VydmljZS5iYXQgdG8gIiRDQVRBTElOQV9CQVNFL2xvZ3MiIGZvciBiZXR0ZXIgbXVsdGkgaW5zdGFuY2Ugc3VwcG9ydC4gKHBlcm8pCiAgICAgIDwvdXBkYXRlPgogICAgICA8dXBkYXRlPgogICAgICAgIDxidWc+MzQyMzc8L2J1Zz46IEFkZGVkIG5vdGUgYW5kIGxpbmtzIHRvIGNvbnRleHQgYW5kIGhvc3QgY29uZmlndXJhdGlvbgogICAgICAgICAgcmVmZXJlbmNlcyBpbiBKTkRJIERhdGFTb3VyY2VzIEhvd1RvIHRvIGFpZCB0aGUgY2x1ZWxlc3MuICh5b2F2cykKICAgICAgPC91cGRhdGU+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgPGJ1Zz4zNDI0ODwvYnVnPjogVXBkYXRlIEphdmFNYWlsIGRvd25sb2FkIGluc3RydWN0aW9ucyB0byBpbmNsdWRlIEpBRi4gKHlvYXZzKQogICAgICA8L3VwZGF0ZT4KICAgICAgPHVwZGF0ZT4KICAgICAgICBVcGRhdGUgdG8gSkRUIGZyb20gRWNsaXBzZSAzLjEsIHdpdGggc3VwcG9ydCBmb3IgSmF2YSA1IChyZW1tKQogICAgICA8L3VwZGF0ZT4KICAgICAgPHVwZGF0ZT4KICAgICAgICBSZWZhY3RvcmluZywgcmVkZXNpZ24gYW5kIGV4dGVuZCB0aGUgY2x1c3RlciBtb2R1bGUKICAgICAgICAgIC0gQ2x1c3RlciBjYW4gYmUgY29uZmlndXJlZCBhcyBzdWJlbGVtZW50IGZyb20gRW5naW5lIGFuZCBIb3N0LgogICAgICAgICAgLSBPcHRpbWl6ZWQgcGVyZm9ybWFuY2UgYW5kIHJlZHVjZSBtZW1vcnkgdXNhZ2UKICAgICAgICAgIC0gQmV0dGVyIEpNWCBzdXBwb3J0CiAgICAgICAgICAtIGFkZCBhIGxvdCBvZiBKTVggc3RhdHMgYXR0cmlidXRlIGZvciBiZXR0ZXIgbW9uaXRvcmluZyAKICAgICAgICAgIC0gYWRkIGEgc2luZ2xlIGVsZW1lbnQgZGVmYXVsdCBjbHVzdGVyIGNvbmZpZ3VyYXRpb24KICAgICAgICAgIC0gbW9yZSBjb25maWcgb3B0aW9ucwogICAgICAgICAgICAgTGlmZWN5Y2xlTGlzdGVuZXIKICAgICAgICAgICAgIENsdXN0ZXJMaXN0ZW5lcgogICAgICAgICAgICAgbW9yZSB0aGFuIG9uZSBjbHVzdGVyIHZhbHZlcwogICAgICAgICAgLSBiZXR0ZXIgc3ViY2xhc3Mgc3VwcG9ydAogICAgICAgICAgLSBjaGFuZ2UgYSBsb3Qgb2YgZXhpc3RpbmcgY2x1c3RlciBBUEkncyAocGVybykKICAgICAgIDwvdXBkYXRlPgogICAgICAgPGFkZD4KICAgICAgICAgQWRkIEFwYWNoZSBQb3J0YWJsZSBSdW50aW1lIEpOSSB3cmFwcGVyIGFuZCBoZWxwZXIgQVBJIChtdHVyaykKICAgICAgIDwvYWRkPgogICAgICAgPHVwZGF0ZT4KICAgICAgICAgVXBkYXRlIEpVTEkgdG8gcHJvdmlkZSBzdXBwb3J0IGZvciB0YWtpbmcgb3ZlciBqYXZhLnV0aWwubG9nZ2luZyBib290c3RyYXAgY29uZmlndXJhdGlvbiwKICAgICAgICAgYW5kIG1vdmUgdGhlIGRlZmF1bHQgcHJvcGVydGllcyBmaWxlIHRvICR7Y2F0YWxpbmEuYmFzZX0vY29uZi9sb2dnaW5nLnByb3BlcnRpZXMgKHJlbW0pCiAgICAgICA8L3VwZGF0ZT4KICAgICAgIDxmaXg+CiAgICAgICAgIDxidWc+MzQ3NDY8L2J1Zz46IFVwZGF0ZWQgY2F0YWxpbmEucHJvcGVydGllcyBpbnN0cnVjdGlvbnMgcGVyIEJpbGwgRWR3YXJkcycgc3VnZ2VzdGlvbi4gKHlvYXZzKQogICAgICAgPC9maXg+CiAgICAgICA8Zml4PgogICAgICAgICA8YnVnPjM1MDkwPC9idWc+OiBNaW5vciBkb2N1bWVudGF0aW9uIHR5cG8gZml4LiAoeW9hdnMpCiAgICAgICA8L2ZpeD4KICAgICAgIDxmaXg+CiAgICAgICAgIDxidWc+MzQ5MzE8L2J1Zz46IFJld3JvdGUgUk9PVC9pbmRleC5qc3AgdG8gYmUgWEhUTUwgc3RyaWN0IGNvbXBsaWFudCwgcGVyIFJpY2hhcmQKICAgICAgICAgICBCZXRvbidzIHBhdGNoLiAoeW9hdnMpCiAgICAgICA8L2ZpeD4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KICAKICA8c3Vic2VjdGlvbiBuYW1lPSJDYXRhbGluYSI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8Zml4PgogICAgICAgIDxidWc+MjAzODA8L2J1Zz46IEFjY2VzcyBsb2cgdGltZXN0YW1wcyBub3cgdGFrZSBhY2NvdW50IG9mIERheWxpZ2h0IFNhdmluZwogICAgICAgIFRpbWUgKERTVCkuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxhZGQ+CiAgICAgICAgPGJ1Zz4zNDIyMDwvYnVnPjogUHJvdmlkZSBiZXR0ZXIgZXJyb3IgbWVzc2FnZSB3aGVuIHNlcnZlci54bWwgY2FuJ3QgYmUgbG9jYXRlZC4KICAgICAgICAgIFtNb2RpZmllZCBwYXRjaCBmcm9tIFJhbGYgSGF1c2VyXSAoeW9hdnMpCiAgICAgIDwvYWRkPgogICAgICA8YWRkPgogICAgICAgICAgQWRkIE1lc3NhZ2VMaXN0ZW5lciBhbmQgTGlmZWN5bGNlTGlzdGVuZXIgY2x1c3RlciBzYXZpbmcgdG8gc3RvcmVjb25maWcgbW9kdWxlCiAgICAgICAgICAoJmx0O0NsdXN0ZXIgLi4uICZndDsmbHQ7Q2x1c3Rlckxpc3RlbmVyIGNsYXNzTmFtZT0ib3JnLmFwYWNoZS5jYXRhbGluYS5jbHVzdGVyLnNlc3Npb24uSnZtUm91dGVTZXNzaW9uSURCaW5kZXJMaXN0ZW5lciIgJmd0OykgKHBlcm8pCiAgICAgIDwvYWRkPiAgCiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zMzc0MzwvYnVnPjogQWRkIGFkZGl0aW9uYWwgc3luY2hyb25pemF0aW9uIGluIHdlYmFwcCBjbGFzc2xvYWRlciB0byBhdm9pZAogICAgICAgIHBvc3NpYmxlIHJhY2UgY29uZGl0aW9uIHdoZW4gZGVmaW5pbmcgYSBjbGFzcyAocmVtbSkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zMzcxMTwvYnVnPjogQWRkIGV2ZW50cyBvbiBwYXNzaXZhdGUgYW5kIGFjdGl2YXRlIHRvIGNsZWFudXAgU1NPLCBhbmQgcmVjeWNsZQogICAgICAgIHNlc3Npb24gb2JqZWN0cyB3aGVuIHJlbW92aW5nIHRoZW0gZnJvbSBhIG1hbmFnZXIgKHNvIHRoYXQgYW55b25lIGtlZXBpbmcgcmVmZXJlbmNlcwogICAgICAgIHRvIGl0IHdvdWxkIGxlYWsgYSBtaW5pbWFsIGFtb3VudCBvZiBtZW1vcnkpIChyZW1tKQogICAgICA8L2ZpeD4KICAgICAgPHVwZGF0ZT4KICAgICAgICBSZS1hZGQgcGF0Y2ggY2F1c2luZyBTZXNzaW9uLmdldElkIHRvIHRocm93IGFuIElTRSwgYW5kIG1ha2UgYWxsIGludGVybmFsIGNvbXBvbmVudHMKICAgICAgICB1c2UgYSBzYWZlIGdldElkSW50ZXJuYWwgbWV0aG9kIChyZW1tKQogICAgICA8L3VwZGF0ZT4KICAgICAgPHVwZGF0ZT4KICAgICAgICBTdG9yZSBwcmluY2lwYWwgdG8gYmUgZXhwb3NlZCBmb3IgUmVxdWVzdC5nZXRVc2VyUHJpbmNpcGFsIGluc2lkZSB0aGUgR2VuZXJpY1ByaW5jaXBhbCwKICAgICAgICB0byByZW1vdmUgaGFja3MgZnJvbSB0aGUgSkFBUyByZWFsbSAocmVtbSkKICAgICAgPC91cGRhdGU+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4xMDM4NTwvYnVnPjogU1NJIFNlcnZsZXQgbm93IGluY2x1ZGVzIGJldHRlciBzdXBwb3J0IGZvciBmaWxlcyB0aGF0IHVzZSBjaGFyYWN0ZXIKICAgICAgICBlbmNvZGluZ3Mgb3RoZXIgdGhhbiB0aGUgcGxhdGZvcm0gZGVmYXVsdC4obWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIFJlbW92ZSBDb3B5UGFyZW50Q2xhc3NMb2FkZXIgcnVsZSwgd2hpY2ggZG9lc24ndCBzZWVtIHRvIGJlIGRvaW5nIGFueXRoaW5nIHVzZWZ1bAogICAgICAgIGFueW1vcmUuIChyZW1tKQogICAgICA8L2ZpeD4KICAgICAgPGFkZD4KICAgICAgICBQcm92aWRlIGFuIFNlcnZsZXRGaWx0ZXIgaW1wbGVtZW50YXRpb24gb2YgU2VydmVyIFNpZGUgSW5jbHVkZXMgKFNTSSkuIFRoaXMgd2FzCiAgICAgICAgc3VibWl0dGVkIGJ5IERhdmlkIEJlY2tlciB1bmRlciA8YnVnPjMzMTA2PC9idWc+LiAobWFya3QpCiAgICAgIDwvYWRkPgogICAgICA8YWRkPgogICAgICAgIEFkZCBzZW5kZmlsZSBzdXBwb3J0IHRvIGRlZmF1bHQgc2VydmxldCwgd2l0aCBhIHNlbmRmaWxlU2l6ZSBjb25maWd1cmF0aW9uIGF0dHJpYnV0ZS4KICAgICAgICAocmVtbSkKICAgICAgPC9hZGQ+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgSWYgQVBSIGFzIHdlbGwgYXMgVG9tY2F0J3MgSk5JIHdyYXBwZXIgZm9yIEFQUiBhcmUgcHJlc2VudCwgdXNlIEFQUml6ZWQgcHJvdG9jb2wgaGFuZGxlcnMKICAgICAgICBpbnN0ZWFkIG9mIHRoZSByZWd1bGFyIG9uZXMgKHJlbW0pCiAgICAgIDwvdXBkYXRlPgogICAgICA8Zml4PgogICAgICAgIDxidWc+MjI2MTc8L2J1Zz46IFdoZW4gdXNlZCB3aXRoIGFuIEVKQiBjb250YWluZXIgYW5kIGEgcmVhbG0gdGhhdCBzdXBwb3J0cyB0aGUgY29uY2VwdAogICAgICAgIG9mIGFuIHVuYXV0aGVudGljYXRlZCB1c2VyIChKMkVFLjMuNC4zKSBCQVNJQyBhdXRoZW50aWNhdGlvbiB3YXMgYWx3YXlzIGF1dGhlbnRpY2F0aW5nCiAgICAgICAgdXNlcnMgYXMgdGhlIHVuYXV0aGVudGljYXRlZCB1c2VyIHdpdGhvdXQgZ2l2aW5nIHRoZW0gYSBjaGFuY2UgdG8gc3VwcGx5IGEgdXNlcm5hbWUgYW5kCiAgICAgICAgcGFzc3dvcmQuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgUHJldmVudCBmYWNhZGUgb2JqZWN0cyBjbG9uaW5nIChyZW1tKQogICAgICA8L2ZpeD4KICAgICAgPHVwZGF0ZT4KICAgICAgICBBZGQgbWlzc2luZyBDR0kgdmFyaWFibGVzIHRvIFNTSSBzZXJ2bGV0LiBQYXRjaCBzdWJtaXR0ZWQgYnkgRnJpdHogU2NobmVpZGVyLiAobWFya3QpCiAgICAgIDwvdXBkYXRlPgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzQ1Nzg8L2J1Zz46IFVwZGF0ZWQgSk5ESVJlYWxtIGNvbW1lbnQuICh5b2F2cykKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zNDI3MzwvYnVnPjogQmV0dGVyIEJvb3RzdHJhcCB3YXJuaW5nIG1lc3NhZ2UuIFtQYXRoIGZyb20gUmFsZiBIYXVzZXJdICh5b2F2cykKICAgICAgPC9maXg+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgPGJ1Zz4zNDY3NTwvYnVnPjogVXBkYXRlZCBQcm94eS1Ib3dUbyBwYWdlIHdpdGggU2VydmxldCBBUEkgY2FsbHMuICh5b2F2cykKICAgICAgPC91cGRhdGU+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zNDU0NjwvYnVnPjogRml4IHByb2JsZW0gd2hlcmUgdGhlICJmaXJzdCIgVmFsdmUgY291bGRuJ3QgYmUgcmVtb3ZlZCBmcm9tIGEgUGlwZWxpbmUuIChiaWxsYmFya2VyKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICBGaXggTlBFIHdoZW4gUE9TVCBzaXplIGV4Y2VlZHMgbGltaXQgZGVmaW5lZCBieSBtYXhQb3N0U2l6ZS4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICBGaXggRk9STSBhdXRoZW50aWNhdGlvbiBzbyBQT1NUZWQgcGFyYW1ldGVycyBhcmUgbm90IGFzc3VtZWQgdG8gYmUgZW5jb2RlZCB3aXRoIHBsYXRmb3JtCiAgICAgICAgZGVmYXVsdCBlbmNvZGluZy4gQSBzaWRlIGVmZmVjdCBvZiB0aGlzIGZpeCBpcyB0aGF0IHRoZSBib2RpZXMgb2YgUE9TVCByZXF1ZXN0cyB0aGF0CiAgICAgICAgcmVxdWlyZSBGT1JNIGF1dGhlbnRpY2F0aW9uIGFyZSBub3cgYnVmZmVyZWQgYW5kIG1hZGUgYXZhaWxhYmxlIGFmdGVyIGEgc3VjZXNzZnVsIGxvZ2luLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzQ4NDA8L2J1Zz46IEJldHRlciBoYW5kbGluZyBvZiBleHRlcm5hbCBXQVJzIHJlZGVwbG95bWVudCwgYW5kIGlnbm9yZSBkb2NCYXNlIHNwZWNpZmllZAogICAgICAgIGluIGNvbnRleHQgZmlsZSBpZiB3aXRoaW4gdGhlIEhvc3QgYXBwQmFzZSAocmVtbSkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgRml4IGhhbmRsaW5nIG9mIHN5bWJvbGljIGxpbmtzIHdoZW4gdGhlIERlZmF1bHRTZXJ2bGV0IGlzIGdlbmVyYXRpbmcgZGlyZWN0b3J5CiAgICAgICAgbGlzdGluZ3MuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zNTc2OTwvYnVnPjogQ29ycmVjdCBpbXBsZW1lbnRhdGlvbiBvZiBqYXZheC5uYW1pbmcuQ29udGV4dC5jb21wb3NlTmFtZSggTmFtZSwgTmFtZSkKICAgICAgICBpbiBtdWx0aXBsZSBwbGFjZXMuIFBhdGNoIHByb3ZpZGVkIGJ5IExhdXJlbnQgU2ltb24uIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxhZGQ+CiAgICAgICAgPGJ1Zz4zNDgwNTwvYnVnPjogQWRkIHdhcm5pbmcgZm9yIHN1c3BpY2lvdXMgc2VjdXJpdHkgcGF0dGVybnMsIGFzIHN1Z2dlc3RlZCBieSBSYWxmIEhhdXNlci4gKHlvYXZzKQogICAgICA8L2FkZD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM1ODE5PC9idWc+OiBVc2UgZ2V0V29ya1BhdGggZm9yIGRlbGV0aW5nIHdvcmsgZGlyZWN0b3J5IG9uIGNvbnRleHQgZGVzdHJveSwgYXMgc3VnZ2VzdGVkCiAgICAgICAgICBieSBSb2IgU3RlZWxlLiAoeW9hdnMpCiAgICAgIDwvZml4PgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgogIAogICA8c3Vic2VjdGlvbiBuYW1lPSJDb3lvdGUiPgogICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgQWRkIHN1cHBvcnQgZm9yIHVzaW5nICJTbWFydCBDYXJkcyIgYXMgdHJ1c3Qva2V5U3RvcmUuIChiaWxsYmFya2VyKQogICAgICA8L3VwZGF0ZT4KICAgICAgPHVwZGF0ZT4KICAgICAgICBBZGQgc29tZSBNYmVhbiBhdHRyaWJ1dGVzIGFuZCBvcGVyYXRpb25zIHRvIENoYW5uZWxTb2NrZXQgKHBlcm8pCiAgICAgIDwvdXBkYXRlPiAgICAKICAgICAgPGFkZD4KICAgICAgICBBcGFjaGUgUG9ydGFibGUgUnVudGltZSBiYXNlZCBIVFRQLzEuMSBwcm90b2NvbCBoYW5kbGVyLCB3aXRoIFNTTCBzdXBwb3J0IChyZW1tKQogICAgICA8L2FkZD4KICAgICAgPGFkZD4KICAgICAgICBBZGQgc3VwcG9ydCBmb3Igc2ltcGxlIGZpbGUtYmFzZWQgQ1JMcyB1bmRlciBKREsgMS41IChiaWxsYmFya2VyKQogICAgICA8L2FkZD4KICAgICAgPGFkZD4KICAgICAgICBBZGQgZXhwZXJpbWVudGFsIE5JTy1Tb2NrZXQgY2hhbm5lbCBmb3IgdGhlIEFKUC8xLjMgQ29ubmVjdG9yIChiaWxsYmFya2VyKQogICAgICA8L2FkZD4KICAgICAgPGFkZD4KICAgICAgICA8YnVnPjM0NjQ4PC9idWc+OiBBZGQgY29uZmlndXJhdGlvbiBvcHRpb24gdG8gZW5hYmxlIElQLWJhc2VkIFZpcnR1YWwgSG9zdHMuIChiaWxsYmFya2VyKQogICAgICA8L2FkZD4KICAgICAgPHVwZGF0ZT4KICAgICAgICBSZWZhY3RvciB0aGUgQUpQLzEuMyBDb25uZWN0b3IgdG8gYmUgYWJsZSB0byBoYW5kbGUgbW9yZSBhZHZhbmNlZCBBY3Rpb25zLiAoYmlsbGJhcmtlcikKICAgICAgPC91cGRhdGU+CiAgICAgIDxmaXg+CiAgICAgICAgRml4IGNvbm5lY3RvciBpbml0aWFsaXNhdGlvbiBzbyBzc2xQcm90b2NvbCBpcyBub3QgcmVxdWlyZWQgZm9yIFNTTC4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGFkZD4KICAgICAgICBBZGQgYnVmZmVyU2l6ZSBvcHRpb24gdG8gdGhlIEFKUC8xLjMgSmF2YSBjb25uZWN0b3IgdG8gY29udHJvbCBvdXRwdXQgYnVmZmVyaW5nLiAoYmlsbGJhcmtlcikKICAgICAgPC9hZGQ+CiAgICAgIDxhZGQ+CiAgICAgICAgQXBhY2hlIFBvcnRhYmxlIFJ1bnRpbWUgYmFzZWQgQUpQLzEuMyBwcm90b2NvbCBoYW5kbGVyIChyZW1tKQogICAgICA8L2FkZD4KICAgICAgPGZpeD4KICAgICAgICBEZWxheSByZWFkaW5nIHRoZSBpbml0YWwgcmVxdWVzdCBib2R5IHBhY2tldCBieSBkZWZhdWx0IGZvciB0aGUgQUpQLzEuMyBKYXZhIGNvbm5lY3Rvci4gKGJpbGxiYXJrZXIpCiAgICAgIDwvZml4PgogICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KCiAgPHN1YnNlY3Rpb24gbmFtZT0iSmFzcGVyIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4xODQ3NzwvYnVnPjogQWxsb3cgc3ltYm9saWMgbGlua3Mgd2hlbiBwcmVjb21waWxpbmcgSlNQcyAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8YWRkPgogICAgICAgIDxidWc+MzQyNzI8L2J1Zz46IEFsbG93IHNwZWNpZnlpbmcgdGhlIE9wdGlvbiBjbGFzcyB1c2VkIGJ5IHRoZSBKYXNwZXIgZW5naW5lLAogICAgICAgIHN1Ym1pdHRlZCBieSBTY290dCBTdGFyayAocmVtbSkKICAgICAgPC9hZGQ+CiAgICAgIDxhZGQ+CiAgICAgICAgU3VwcG9ydCBmb3IgSmF2YSA1LjAgaW4gSlNQcyAocmVtbSkKICAgICAgPC9hZGQ+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgSmF2YSA1IHdpbGwgYmUgdGhlIHNvdXJjZSBhbmQgdGFyZ2V0IGZvciBKU1BzIHdoZW4gcnVubmluZyBvbiBKYXZhIDUgKHJlbW0pCiAgICAgIDwvdXBkYXRlPgogICAgICA8dXBkYXRlPgogICAgICAgIDxidWc+MzQ2NTI8L2J1Zz46IEFkZCB0aGUgYWJpbGl0eSB0byBnZXQgU01BUHMgd2hlbiBwcmVjb21waWxpbmcsIHN1Ym1pdHRlZCBieQogICAgICAgIERhcnlsIFJvYmJpbnMgKHJlbW0pCiAgICAgIDwvdXBkYXRlPgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzQ0NjU8L2J1Zz46IEpzcGMgZmFpbHVyZSBpZiB0aGVyZSBpcyBubyB3ZWIueG1sIChyZW1tKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM1Njk2PC9idWc+OiBNYWtlIGNlcnRhaW4gdGhhdCByZWxlYXNlIGlzIGNhbGxlZCBmb3IgY3VzdG9tIHRhZ3MgCiAgICAgICAgIHdoZW4gdGFnLXBvb2xpbmcgaXMgZGlzYWJsZWQuIChiaWxsYmFya2VyKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM1Mzg2PC9idWc+OiBNYWtlIHVzZUJlYW4gcmVzb3VyY2VzIHVzZSBjb25zaXN0ZW50IHNwZWxsaW5nLCBmcm9tIEt1cnQgSHV3aWcuICh5b2F2cykKICAgICAgPC9maXg+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgPGJ1Zz4zMzUyMjwvYnVnPjogVXBkYXRlIGphc3Blci1ob3d0byB0byByZWZsZWN0IHVzZSBvZiBqYXZhYyBzd2l0Y2guICh5b2F2cykKICAgICAgPC91cGRhdGU+CiAgICAgIDxhZGQ+CiAgICAgICAgPGJ1Zz4zNTExNDwvYnVnPjogQWRkIGZhaWxPbkVycm9yIGZsYWcgdG8gSnNwQywgYnkgeml3ZXRoLiAoeW9hdnMpCiAgICAgIDwvYWRkPgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzU0MTA8L2J1Zz46IEZpeGVkIE5QRSBpbiBKc3BXcml0ZXJJbXBsLiAoeW9hdnMpCiAgICAgIDwvZml4PgogICAgICA8YWRkPgogICAgICAgIDxidWc+MzU1NzE8L2J1Zz46IEpzcEMgcmVzb2x2ZWQgdXJpUm9vdCByZWxhdGl2ZSB0byBBbnQgcHJvamVjdCBiYXNlZGlyLCBpZiBhbnksIGFzIHN1Z2dlc3RlZAogICAgICAgICAgYnkgSmFzb24gUGV0dGlzcy4gKHlvYXZzKQogICAgICA8L2FkZD4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KICAKICA8c3Vic2VjdGlvbiBuYW1lPSJDbHVzdGVyIj4KICAgIDxjaGFuZ2Vsb2c+ICAgICAgICAKICAgICAgPGFkZD4KICAgICAgICBBZGQgdGhhdCBjbHVzdGVyIGNhbiBjb25maWd1cmUgYXMgRW5naW5lIGFuZCBIb3N0IGVsZW1lbnQuIChwZXJvKQogICAgICA8L2FkZD4gICAgICAKICAgICAgPGFkZD4KICAgICAgICBBZGQgc2luZ2xlIGNsdXN0ZXIgZGVmYXVsdCBjb25maWd1cmF0aW9uIGVsZW1lbnQgLSBkaXNjdXNzZWQgYXQgSkFYIDIwMDUgY29uZmVyZW5jZSBDbHVzdGVyIFdvcmtzaG9wLiAocGVybykKICAgICAgPC9hZGQ+ICAgICAgCiAgICAgIDxmaXg+CiAgICAgICAgRml4IHJlc2VuZCBHRVRfQUxMX1NFU1NJT05TIHdoZW4gd2FpdCBBQ0sgZmFpbGVkIGF0IHJlY2VpdmVyIHNpZGUgKHBlcm8pCiAgICAgIDwvZml4PiAgCiAgICAgIDxmaXg+CiAgICAgICAgQ2x1c3RlclZhbHZlIG5vdyByZW1vdmUgZnJvbSBjb250YWluZXIgZWxlbWVudCB3aGVuIGNsdXN0ZXIgc3RvcHMgYW5kIGFkZGVkIHdpdGggbmV4dCBzdGFydCBhZ2Fpbi4gKHBlcm8pCiAgICAgIDwvZml4PiAgICAgCiAgICAgIDxhZGQ+CiAgICAgICAgU2V0IHRpbWVzdGFtcCBvbmx5IGF0IGZpcnN0IHRpbWUgaW5zaWRlIFNlc3Npb25NZXNzYWdlSW1wbCAocGVybykKICAgICAgPC9hZGQ+ICAgIAogICAgICA8YWRkPgogICAgICAgU2V0IHRpbWVzdGFtcCBmcm9tIGZpbmRzZXNzaW9ucyBtZXRob2QgY2FsbCwgd2hlbiBoYW5kbGluZyBHRVRfQUxMX1NFU1NJT04KICAgICAgIHRvIGFsbCBTRU5EX1NFU1NJT05fREFUQSBhbmQgVFJBTlNGRVIgY29tcGxldGUgbWVzc2FnZXMuIChwZXJvPgogICAgICA8L2FkZD4KICAgICAgPGFkZD4gCiAgICAgICBEcm9wIGFsbCByZWNlaXZlZCBtZXNzYWdlIGluc2lkZSBHRVRfQUxMX1NFU1NJT04gbWVzc2FnZSBxdWV1ZSBiZWZvcmUgc3RhdGUgCiAgICAgICB0cmFuc2ZlciBtZXNzYWdlIHRpbWVzdGFtcC4gKHBlcm8pCiAgICAgIDwvYWRkPiAgICAgIAogICAgICA8YWRkPgogICAgICAgIENsdXN0ZXIgcGluZyBub3cgdHJhbnNmZXIgY2x1c3RlciBkb21haW4gaW5mb3JtYXRpb24gYW5kIERlbHRhTWFuYWdlciBvbmx5CiAgICAgICAgc2VuZCBhbmQgcmVjZWl2ZSBtZXNzYWdlIGZyb20gc2FtZSBkb21haW4gbWVtYmVycyAocGVybykKICAgICAgPC9hZGQ+ICAgICAgCiAgICAgIDxhZGQ+CiAgICAgICAgSk1YIFN1cHBvcnQgZm9yIE1jYXN0U2VydmljZSAoTWVtYmVyc2hpcCkgKHBlcm8pCiAgICAgIDwvYWRkPiAgICAgIAogICAgICA8YWRkPgogICAgICAgIFJlZGVzaWduIFNpbXBsZVRjcENsdXN0ZXIgbWVzc2FnZSByZWNlaXZpbmcgdG8gQ2x1c3RlclJlY2VpdmVyQmFzZSAocGVybykKICAgICAgPC9hZGQ+ICAgICAgCiAgICAgIDxhZGQ+CiAgICAgICAgQ2x1c3RlciB0cmFuc2ZlciBhbGwgYXR0cmlidXRlcyB0byB0aGUgZ2VuZXJhdGUgc2Vzc2lvbiBtYW5hZ2VyIGF0IGFkZE1hbmFnZXIuIAogICAgICAgIFJlbW92ZSBzb21lIHVudXNlZCBhdHRyaWJ1dGVzIGF0IFNpbXBsZVRjcENsdXN0ZXIgYW5kIFJlcGxpY2F0aW9uVHJhbnNtaXR0ZXIgKHBlcm8pCiAgICAgIDwvYWRkPiAgICAKICAgICAgPHVwZGF0ZT4KICAgICAgICBSZWZhY3RvciBEZWx0YU1hbmFnZXI6CiAgICAgICAgICAtIGNyZWF0ZVNlc3Npb24gY2FsbCBub3cgTWFuYWdlckJhc2Ugc3VwZXIgY2xhc3MgbWV0aG9kCiAgICAgICAgICAtIGV4dHJhY3Qgc29tZSBsb25nIG1ldGhvZHMKICAgICAgICAgIC0gc2VuZCBHRVRfQUxMX1NFU1NJT04gd2l0aCBzZXNzaW9uIGJsb2NrcwogICAgICAgICAgLSBkb24ndCBzeW5jIHNlc3Npb25zIG1hcCB3aGVuIHNlbmQgYWxsIHNlc3Npb25zIChwZXJvKSAgCiAgICAgIDwvdXBkYXRlPiAgICAgICAgICAKICAgICAgPHVwZGF0ZT4KICAgICAgICBBZGQgZGV2ZWxvcGVyIGFjdGlvbnMgYXQgdG8tZG8udHh0IChQcm9wb3NhbCBvZiBjaGFuZ2VzKSAocGVybykgIAogICAgICA8L3VwZGF0ZT4gICAgICAgICAgCiAgICAgIDx1cGRhdGU+CiAgICAgICAgU21hbGwgcmVmYWN0b3JpbmdzIGF0IEZhc3RBc3luY1NvY2tldFNlbmRlciAocGVybykgIAogICAgICA8L3VwZGF0ZT4gICAgICAgICAgCiAgICAgIDx1cGRhdGU+CiAgICAgICAgUmVkZXNpZ24gY2x1c3RlciBtZXNzYWdlIHNlbmRpbmcgdG8gbGVzc2VyIGNwdSBhbmQgbWVtb3J5IHVzYWdlLiAKICAgICAgICBTZXQgYXQgUmVwbGljYXRpb25UcmFuc21pdHRlciNjb21wcmVzcz1mYWxzZSBhcyBkZWZhdWx0LiBDaGFuZ2UgQVBJIGZyb20KICAgICAgICBDbHVzdGVyU2VuZGVyLCBSZXBsaWNhaXRvblRyYW5zbWl0dGVyLCBEYXRhU2VuZGVyLCBTaW1wbGVUY3BDbHVzdGVyIChwZXJvKSAgCiAgICAgIDwvdXBkYXRlPiAgICAgICAgICAKICAgICAgPGFkZD4KICAgICAgICBEZWx0YU1hbmFnZXIgaGFzIG5vdyBKTVggZXhwaXJlQWxsTG9jYWxTZXNzaW9ucyBhbmQgcHJvY2Vzc0V4aXByZSBvcGVyYXRpb24gCiAgICAgICAgZm9yIGJldHRlciBjbHVzdGVyIG5vZGUgc2h1dGRvd24gaGFuZGxpbmcgKHVzZWZ1bGwgZm9yIHRlc3Rpbmcgb25seSkgKHBlcm8pICAgCiAgICAgIDwvYWRkPiAgCiAgICAgIDxhZGQ+CiAgICAgICAgRGF0YVNlbmRlciBkb1dhaXRBY2tTdGF0cyBmb3IgYmV0dGVyIHVuZGVyc3RhbmRpbmcgd2FpdCBhY2sgcHJvYmxlbXMgKHBlcm8pICAgCiAgICAgIDwvYWRkPiAgCiAgICAgIDx1cGRhdGU+CiAgICAgICAgUmVmYWN0b3IgRGVsdGFNYW5hZ2VyIGFuZCBhZGQgY291bnRlciBmb3IgY2x1c3RlciBtZXNzYWdlIHNlbmQvcmVjZWl2ZSBtZXNzYWdlIChwZXJvKSAgCiAgICAgIDwvdXBkYXRlPiAgICAgICAgICAKICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM0Mzg5PC9idWc+OlBvcnRpbmcgQ2x1c3RlcmluZyBmaXggcGFjayB0byA1LjUuMTAgY29kZSBiYXNlLgogICAgICAgIFJlbW92ZSBzeW5jaG9uaXplZCBmcm9tIERhdGFTZW5kZXIucHVzaE1lc3NhZ2UoKS4gVmVyeSBvZmZlbiB0aGUgCiAgICAgICAgY29tcGxldGUgY2x1c3RlciBibG9ja2luZyBhZnRlciByZXBsaWNhdGVkIGEgYnVsayBvZiBuZXcgc2Vzc2lvbiBtZXNzYWdlcyB1bmRlciBoZWF2eSBsb2FkLgogICAgICAgIEFsbCBjbHVzdGVyIG5vZGUgc3RhbmRpbmcgZm9yIGEgbG90IG9mIHRpbWUgYW5kIG1hZGUgbm90aGluZy4gCiAgICAgICAgRml4IGl0IGZvciBwb29sZWQsIGFzeW5jaHJvbm91cyBhbmQgZmFzdGFzeW5jcXVldWUgcmVwbGljYXRpb24gbW9kZS4gVmVyeSBiYWQgdGhpbmcsIHNvcnJ5ISAocGVybykgIAogICAgICA8L2ZpeD4KICAgICAgPGFkZD4KICAgICAgICBBZGQgbm90aWZ5U2Vzc2lvbkxpc3RlbmVyc09uUmVwbGljYXRpb24gYXR0cmlidXRlIHRvIFNpbXBsZVRjcENsdXN0ZXIgdG8gc3RvcCBub3RpZnkgCiAgICAgICAgZXZlbnQgdG8gU2Vzc2lvbkxpc3RlbmVyIGF0IGJhY2t1cCBub2RlcyBmcm9tIGNyZWF0ZSBhbmQgZGVzdHJveSByZXBsaWNhdGVkIHNlc3Npb24gKHBlcm8pCiAgICAgIDwvYWRkPgogICAgICA8YWRkPgogICAgICAgIEFkZCBjb21wcmVzcyBhdHRyaWJ1dGUgdG8gQ2x1c3RlclNlbmRlciBhbmQgQ2x1c3RlclJlY2VpdmVyIGludGVyZmFjZS4gTm93IGNvbXByZXNzIGNvbmZpZwogICAgICAgIHRyYW5zZmVyIGZyb20gc2VuZGVyIHRvIHJlY2VpdmVyIGF0IFNpbXBsZVRjcENsdXN0ZXIuIChwZXJvKSAKICAgICAgPC9hZGQ+ICAgIAogICAgICA8YWRkPgogICAgICAgIEFkZCBDbHVzdGVyVmFsdmUgaW50ZXJmYWNlIGFuZCBpbXBsZW1lbnQgaXQgYXMgUmVwbGljYXRpb25WYWx2ZSBhbmQgSnZtUm91dGVCaW5kZXJWYWx2ZS4gTm93IGJvdGgKICAgICAgICBWYWx2ZXMgY2FuIGJlIGRpcmVjdGx5IGNvbmZpZ3VyZWQgYXQgc2VydmVyLnhtbCBIb3N0L0NsdXN0ZXIvVmFsdmUgc3ViZWxlbWVudHMuCiAgICAgICAgQWxzbyB0aGlzIGNvbmZpZ3VyYXRpb24gYXJlIGNvcnJlY3RseSBoYW5kbGVkIHdpdGggdGhlIFN0b3JlQ29uZmlnIG1vZHVsZS4gKHBlcm8pICAKICAgICAgPC9hZGQ+ICAgIAogICAgICA8dXBkYXRlPgogICAgICAgIERlYWN0aXZhdGUgRGF0YVNlbmRlciBrZWVwQWxpdmVNYXhSZXF1ZXN0Q291bnQgY2hhbmdlIGRlZmF1bHQgdG8gLTEuIAogICAgICAgIENsdXN0ZXIgcmVwbGljYXRpb24gc29ja2V0cyBhcmUgZmFzdCBhbmQgdmVyeSBzdGFibGUhIChwZXJvKSAgCiAgICAgIDwvdXBkYXRlPiAgICAgICAgICAKICAgICAgPHVwZGF0ZT4KICAgICAgICBTZXR1cCBKdm1Sb3V0ZUJpbmRlclZhbHZlIGFzIGhvc3QgdmFsdmUgaW5zdGVhZCBjb250ZXh0IHZhbHZlLiBSZWZhY3RvciB0aGUgQVBJIGEgbGl0dGxlIGJpdC4gKHBlcm8pCiAgICAgIDwvdXBkYXRlPgogICAgICA8Zml4PgogICAgICAgIERvbid0IGluY3JlbWVudCBvcGVuIHNvY2tldCBjb3VudGVyIGJlZm9yZSBzb2NrZXQgaXMgcmVhbGx5IG9wZW4uIEFkZCBzb2NrZXQgb3BlbiBmYWlsdXJlcyBjb3VudGVyIChwZXJvKSAKICAgICAgPC9maXg+ICAKICAgICAgPGFkZD4KICAgICAgICBBZGQgTWVzc2FnZUxpc3RlbmVyIHN1cHBvcnQgdG8gY2x1c3RlciBzZXJ2ZXIueG1sIGVsZW1lbnQgKENsdXN0ZXJMaXN0ZW5lcikgdG8gCiAgICAgICAgcmVnaXN0ZXIgeW91ciBvd24gY2x1c3RlciBtZXNzYWdlIHJlY2VpdmVyIChwZXJvKQogICAgICA8L2FkZD4gIAogICAgICA8YWRkPgogICAgICAgIEFkZCBMaWZlY3ljbGVMaXN0ZW5lciBzdXBwb3J0IHRvIGNsdXN0ZXIgc2VydmVyLnhtbCBlbGVtZW50IChMaXN0ZW5lcikKICAgICAgICBhbmQgbm90aWZ5IHRob3NlIGxpc3RlbmVyIGZyb20gc3RhcnQvc3RvcCBjbHVzdGVyLAogICAgICAgIGFkZC9yZW1vdmUgc2Vzc2lvbiBtYW5hZ2VyLCBzZW5kaW5nIGZhdWx0IGFuZCBzdGFydC9zdG9wIG1lbWJlciAgKHBlcm8pCiAgICAgIDwvYWRkPiAgCiAgICAgIDxhZGQ+CiAgICAgICAgQWRkIGFjdGl2ZSBiYWNrZ3JvdW5kUHJvY2VzcyBrZWVwQWxpdmUgdGltZW91dCBhbmQgcmVxdWVzdCBjb3VudCBzb2NrZXQgY2xvc2UgY2hlY2sKICAgICAgICBhdCBSZXBsaWNhdGlvblRyYW5zbWl0dGVyLiAgQ2hlY2sgZnJlcXVlbmN5IGNhbiBiZSBjaGFuZ2Ugd2l0aCBhdHRyaWJ1dGUgCiAgICAgICAgcHJvY2Vzc1NlbmRlckZyZXF1ZW5jeSAoZGVmYXVsdCAyKS4gKHBlcm8pCiAgICAgIDwvYWRkPgogICAgICA8YWRkPgogICAgICAgIFJlbW92ZSB1c2VsZXNzIEpkazEzUmVwbGljYXRpb25MaXN0ZW5lcixKZGsxM09iamVjdFJlYWRlci4gCiAgICAgICAgQWRkIFNvY2tldFJlcGxpY2F0aW9uTGlzdGVuZXIgYW5kIFNvY2tldE9iamVjdFJlYWRlciB0byBoYXZlIG5hdGl2IHNvY2tldCBDbHVzdGVyUmVjZWl2ZXIuIAogICAgICAgIEFsc28gZXh0cmFjdCBDbHVzdGVyUmVjZWl2ZXJCYXNlIHN1cGVyY2xhc3MgZm9yIFNvY2tldFJlcGxpY2F0aW9uTGlzdGVuZXIgYW5kIFJlcGxpY2F0aW9uTGlzdGVuZXIgKHBlcm8pIAogICAgICA8L2FkZD4KICAgICAgPHVwZGF0ZT4KICAgICAgICBBZGQgYW5kIHVwZGF0ZSBzb21lIEFQSSBhbmQgdGhlIDxhIGhyZWY9ImNsdXN0ZXItaG93dG8uaHRtbCI+Y2x1c3RlciBob3d0byBkb2N1bWVudGF0aW9uPC9hPiAocGVybykKICAgICAgPC91cGRhdGU+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgUmVmYWN0b3IgUmVwbGljYXRpb25WYWx2ZSBmb3IgYmV0dGVyIHVuZGVyc3RhbmRpbmcgYW5kIHNtYWxsIG9wdGltaXphdGlvbiAocGVybykKICAgICAgPC91cGRhdGU+CiAgICAgIDxhZGQ+CiAgICAgICAgU3RhcnRpbmcgYSB1bml0IHRlc3Qgc3VpdGUgZm9yIGNsdXN0ZXIgbW9kdWxlIC0gdmVyeSBtdWNoIHRvZG8gKHBlcm8pCiAgICAgIDwvYWRkPgogICAgICA8Zml4PgogICAgICAgIEZpeCBhbnQgYnVpbGQueG1sIHRvIGRpcmVjdCBjb21waWxlIGF0IGNsdXN0ZXIgbW9kdWxlIGRpcmVjdG9yeSAocGVybykKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgRml4IHNvbWUgSTE4TiBtZXNzYWdlcywgYnV0IGEgbG90IG9mIHdvcmsgaXMgd2FpdGluZyBmb3IgZml4IChwZXJvKQogICAgICA8L2ZpeD4KICAgICAgPGFkZD4KICAgICAgICBBZGQgUmVwbGljYXRpb25WYWx2ZSBNYmVhbnMgc3RhdHMgYXR0cmlidXRlIGdldHRlciBhbmQgcmVzZXRTdGF0aXN0aWNzIG9wZXJhdGlvbiAocGVybykKICAgICAgPC9hZGQ+CiAgICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgogIAogIDxzdWJzZWN0aW9uIG5hbWU9IldlYmFwcHMiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM1NzU4PC9idWc+OiBBZG1pbiB3ZWJhcHAgbWlzaGFuZGxpbmcgZGlnZXN0IGF0dHJpYnV0ZSBvZiBKREJDRGF0YVNvdXJjZVJlYWxtLiAoeW9hdnMpCiAgICAgIDwvZml4PgogICAgICA8YWRkPgogICAgICAgIDxidWc+MzQyNTA8L2J1Zz46IEFkbWluIHdlYmFwcCBDb21taXQgQ2hhbmdlcyBidXR0b24gbm93IGFza3MgZm9yIGNvbmZpcm1hdGlvbi4gKHlvYXZzKQogICAgICA8L2FkZD4KICAgICAgPGFkZD4KICAgICAgICA8YnVnPjM0ODE4PC9idWc+OiBBbHRlcm5hdGluZyByb3cgZm9yIGFwcHMgaW4gSFRNTCBtYW5hZ2VyLCBhcyBzdWdnZXN0ZWQgYnkgSmVmZgogICAgICAgICAgRG9tZXllci4gKHlvYXZzKQogICAgICA8L2FkZD4KICAgICAgPGFkZD4KICAgICAgICA8YnVnPjM1Mzc5PC9idWc+OiBBZGRlZCBjb21tb25zLWxvZ2dpbmcgdG8gYnVpbGQgcGF0aCBvZiBtYW5hZ2VyIGFuZCBob3N0LW1hbmFnZXIgYXBwcywKICAgICAgICAgIHRvIG1ha2UgdGhlbSBidWlsZCB3aXRoIEppa2VzLCBhcyBzdWdnZXN0ZWQgYnkgQWFyb24gSXNvdHRvbi4gKHlvYXZzKQogICAgICA8L2FkZD4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KIDwvc2VjdGlvbj4KCjxzZWN0aW9uIG5hbWU9IlRvbWNhdCA1LjUuOSAoeW9hdnMpIj4KICA8c3Vic2VjdGlvbiBuYW1lPSJHZW5lcmFsIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDxhZGQ+CiAgICAgICAgQWRkIEpVTEksIGEgamF2YS51dGlsLmxvZ2dpbmcgaW1wbGVtZW50YXRpb24sIHVzZWQgdG8gcHJvdmlkZSBzYW5lIGRlZmF1bHRzIGFuZAogICAgICAgIGNvbmZpZ3VyYWJpbGl0eSBlcXVpdmFsZW50IHRvIFRvbWNhdCA0LjAgZm9yIFRvbWNhdCA1LjUgbG9nZ2luZyAocmVtbSkKICAgICAgPC9hZGQ+CiAgICAgIDxkb2NzPgogICAgICAgIEFkZCBKVUxJIGRvY3VtZW50YXRpb24gdG8gdGhlIGxvZ2dpbmcgcGFnZSAocmVtbSkKICAgICAgPC9kb2NzPgogICAgICA8YWRkPgogICAgICAgIEFkZCBob3N0IG1hbmFnZXIgd2ViYXBwIChyZW1tKQogICAgICA8L2FkZD4KICAgICAgPGFkZD4KICAgICAgICBBZGQgYW50IEprU3RhdHVzVXBkYXRlVGFzayBmb3IgcmVtb3RlIHN0YXR1cyB3b3JrZXIgaGFuZGxpbmcgKCA+PW1vZF9qayAxLjIuOSkgKHBlcm8pCiAgICAgIDwvYWRkPgogICAgICA8YWRkPgogICAgICAgIDxidWc+MzM3Mzk8L2J1Zz46IEFkZCByZWZlcmVuY2UgdG8gUlVOTklORy50eHQgaW4gc2V0dXAuaHRtbC4gKHlvYXZzKQogICAgICA8L2FkZD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjMzNzE5PC9idWc+OiBVcGRhdGUgcmVmZXJlbmNlIHRvIEFudCBkb3dubG9hZCBwYWdlLiAoeW9hdnMpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzM4ODM8L2J1Zz46IEJhZCBvcHRpb25zIGluIFNTTC1Ib3dUby4gKHlvYXZzKQogICAgICA8L2ZpeD4KICAgICAgPHVwZGF0ZT4KICAgICAgICBVcGRhdGUgdG8gTVg0SiAzLjAuMSAocGVybykKICAgICAgPC91cGRhdGU+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgPGJ1Zz4zNDEzOTwvYnVnPjogVXBkYXRlZCBSZWFsbS1Ib3dUbyB0byBzcGVjaWZ5IEpNWCwgQ29tbW9ucy1Mb2dnaW5nIGphcnMgZm9yIFJlYWxtQmFzZS4gKHlvYXZzKQogICAgICA8L3VwZGF0ZT4KICAgICAgPGFkZD4KICAgICAgICA8YnVnPjMzMzI1PC9idWc+OiBBZGRlZCB0b3AtbGV2ZWwgY2xlYW4gdGFyZ2V0IHRvIE5ldGJ1aWxkIGJ1aWxkLnhtbCBmaWxlLiAoeW9hdnMpCiAgICAgIDwvYWRkPgogICAgICA8dXBkYXRlPgogICAgICAgIDxidWc+MzM3NTU8L2J1Zz46IENsYXJpZmllZCBQb3N0Z3Jlc3FsIEpOREkgZGF0YXNvdXJjZSBleGFtcGxlLiBbcGF0Y2ggc3VibWl0dGVkIGJ5CiAgICAgICAgICBUb20gV2l0bWVyXSAoeW9hdnMpCiAgICAgIDwvdXBkYXRlPgogICAgPC9jaGFuZ2Vsb2c+CiAgIDwvc3Vic2VjdGlvbj4KCiAgPHN1YnNlY3Rpb24gbmFtZT0iQ2F0YWxpbmEiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPGZpeD4KICAgICAgICBSZW1vdmUgc29tZSBpbnN0YW5jZXMgb2YgZXhwYW5kZWQgZm9sZGVyIHJlbW92YWwgKHJlbW0pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIERvbid0IGNhbGwgbWtkaXJzIGlmIHdlJ3JlIG5vdCBnb2luZyB0byBzYXZlIHRoZSBjb25maWd1cmF0aW9uIGluIFN0YW5kYXJkQ29udGV4dCAocmVtbSkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgRml4IGNvbnRleHQgY2xhc3Nsb2FkZXIgYmluZGluZyBkdXJpbmcgbG9hZGVyIGluaXRpYWxpemF0aW9uIChpdCB3YXMgc2V0IHRvIG51bGwgYmVmb3JlKSAocmVtbSkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgVGhlIHdlYmFwcCBsb2dnZXIgc2hvdWxkIG9ubHkgYmUgcmV0cmlldmVkIHdoZW4gdGhlIGNvbnRleHQgY2xhc3Nsb2FkZXIgaXMgc2V0IHRvIHRoZSAKICAgICAgICB3ZWJhcHAncyBjbGFzc2xvYWRlciAocmVtbSkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zNDE3MDwvYnVnPjogQWRkIGJhY2sgcmV0cnkgbG9naWMgaW4gSkRCQyByZWFsbSBpbiBjYXNlIG9mIGEgY29ubmVjdGlvbiBmYWlsdXJlIChyZW1tKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjIyMDQxPC9idWc+OiBTdXBwb3J0IGR5bmFtaWMgcHJveGllcyBhcyBzZXNzaW9uIG9iamVjdHMuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgRml4IGxvZ2dlciBuYW1lcyBmb3Igd3JhcHBlcnMgKHJlbW0pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzQwMDY8L2J1Zz46IElmIGFudGlSZXNvdXJjZUxvY2tpbmcgd2FzIHVzZWQsIEhvc3RDb25maWcgY29uc2lkZXJlZCB0aGUgcGF0aCBhcyBleHRlcm5hbCwKICAgICAgICBhbmQgd2ViIGFwcGxpY2F0aW9uIHJlc291cmNlcyB3ZXJlIG5vdCBjb3JyZWN0bHkgcmVtb3ZlZCBvciB0YWNrZWQ7IGFsc28gc2ltcGxpZnkgdGhlIGNvZGUgYSBsb3QKICAgICAgICAocmVtbSkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zNDAxNjwvYnVnPjogU2F2ZSBhbmQgcmVzdG9yZSBkb2NCYXNlIHdoZW4gdXNpbmcgYW50aVJlc291cmNlTG9ja2luZywgZm9yIGNvbXBhdGliaWxpdHkgd2l0aAogICAgICAgIHRoZSBhZG1pbiB3ZWJhcHAgKHJlbW0pCiAgICAgIDwvZml4PgogICAgICA8YWRkPgogICAgICAgIDxidWc+MzM2MzY8L2J1Zz46IFNldCBsYXN0TW9kaWZpZWQgYXR0cmlidXRlIHdoZW4gZXhwYW5kaW5nIFdBUiBmaWxlcy4gKHlvYXZzKQogICAgICA8L2FkZD4KICAgICAgPGFkZD4KICAgICAgICA8YnVnPjMyOTM4PC9idWc+OiBBbGxvdyBTYWx0ZWQgU0hBIChTU0hBKSBwYXNzd29yZHMgaW4gSk5ESVJlYWxtLiAoeW9hdnMpCiAgICAgIDwvYWRkPgogICAgICA8YWRkPgogICAgICAgIDxidWc+MzEyODg8L2J1Zz46IEFsbG93IFNNVFAgYXV0aGVudGljYXRpb24gZm9yIEpOREkgTWFpbFNlc3Npb25GYWN0b3J5LiAoeW9hdnMpCiAgICAgIDwvYWRkPgogICAgICA8dXBkYXRlPgogICAgICAgIEhhcm1vbml6ZSBwcm9jZXNzaW5nIG9mIHRoZSBjb250ZXh0LnhtbCBkZWZhdWx0cyB3aXRoIHRoZSB3YXkgd2ViLnhtbCBpcyBwcm9jZXNzZWQKICAgICAgICAocmVtbSkKICAgICAgPC91cGRhdGU+CiAgICAgIDxmaXg+CiAgICAgICAgSWdub3JlICc7JyBpZiBpdCBpcyBpbiB0aGUgcXVlcnkgc3RyaW5nIChyZW1tKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICBwcml2YXRlIHRvIHByb3RlY3RlZCBmb3IgdGhlIHdlYmFwcCBjbGFzc2xvYWRlciAocmVtbSkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgSW1wcm92ZSBsb2dnaW5nIG9mIGZpbHRlcnMgYW5kIGxpc3RlbmVycyBzdGFydHVwIGVycm9ycyAocmVtbSkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zMzc3NDwvYnVnPjogUmV0cnkgb25jZSBpbiBKTkRJIHJlYWxtIGF1dGhlbnRpY2F0ZSBmYWlsdXJlIHJlZ2FyZGxlc3Mgb2YgdGhlIAogICAgICAgIGV4Y2VwdGlvbiBtZXNzYWdlIChyZW1tKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjMzOTYxPC9idWc+OiBEb24ndCBlbmNvZGUgJ34nIGluIGNvbnRleHQgcGF0aHMgKHJlbW0pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzI4NjY8L2J1Zz46IFByb3BhZ2F0ZSBkaXN0cmlidXRhYmxlIHByb3BlcnR5IGZyb20gY29udGV4dCB0byBtYW5hZ2VyICh5b2F2cykKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zMjg2NzwvYnVnPjogUmVzZXQgZGlzdHJpYnV0YWJsZSBhdHRyaWJ1dGUgaW4gY29udGV4dCBmb3IgY2xlYW4gcmVsb2FkIGhhbmRsaW5nICh5b2F2cykKICAgICAgPC9maXg+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgICBGaXggc29tZSBSZWFsbUJhc2UvSk5ESVJlYWxtIGxvZy5pc1hYWEVuYWJsZWQgKHBlcm8pCiAgICAgIDwvdXBkYXRlPgogICAgICA8Zml4PgogICAgICAgICAgPGJ1Zz4zNDE2MTwvYnVnPjogSGFybW9uaXplIFN0YW5kYXJkQ29udGV4dC5zdG9wIHdpdGggQ29udGFpbmVyQmFzZS5zdG9wIChyZW1tKQogICAgICA8L2ZpeD4KICAgIDwvY2hhbmdlbG9nPgogICA8L3N1YnNlY3Rpb24+CiAgIAogICA8c3Vic2VjdGlvbiBuYW1lPSJDb3lvdGUiPgogICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zMzk3MTwvYnVnPjogU2V0IHJlbW90ZUhvc3QgdG8gbnVsbCB3aGVuIEFwYWNoZSBkb2Vzbid0IHNlbmQgb25lLiAoYmlsbGJhcmtlcikKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgRml4IGNhbGN1bGF0aW9uIG9mIHRocmVhZFJhdGlvIGZvciB0aGUgbXMgdGhyZWFkIHBvb2wsIGFuZCBmaXggc2V0dGluZyB0aGUgdXBkYXRlZAogICAgICAgIHRpbWVvdXQgdmFsdWUgKHJlbW0pCiAgICAgIDwvZml4PgogICAgICA8dXBkYXRlPgogICAgICAgIFVwZGF0ZSB0aGUgbXMgdGhyZWFkIHBvb2wgc28gdGhhdCB3ZSBhbGxvY2F0ZSBhIHdvcmtlciBiZWZvcmUgYWNjZXB0aW5nIGEgbmV3IHNvY2tldCwKICAgICAgICBhbmQgd2FpdCBhIGxpdHRsZSBpZiB0aGUgcG9vbCBpcyBleGhhdXN0ZWQ7IHRoaXMgc2hvdWxkIG1ha2UgbG93IG1heFRocmVhZHMgdmFsdWVzIHdvcmsgYSAKICAgICAgICBsb3QgYmV0dGVyIChyZW1tKQogICAgICA8L3VwZGF0ZT4KICAgICAgPHVwZGF0ZT4KICAgICAgICA8YnVnPjMzODU3PC9idWc+OiBVcGRhdGUgaW5mb3JtYXRpb24gb24gYXV0b21hdGljIG1vZF9qayBjb25maWd1cmF0aW9uIGluIEFwYWNoZS1Ib3dUbyAoeW9hdnMpCiAgICAgIDwvdXBkYXRlPgogICAgICA8Zml4PgogICAgICAgIEZpeCBzeW5jIGJsb2NrIHBsYWNlbWVudCBpbiBNYXBwZXIuYWRkQ29udGV4dCAocmVtbSkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zMjc0MTwvYnVnPjogRml4IHNwZWxsaW5nIG9mICJjb21taXR0ZWQiIFtwYXRjaCBmcm9tIEJlbiBTb3V0aGVyXSAoeW9hdnMpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzQxMzM8L2J1Zz46IE1ha2Ugc2V0SGVhZGVyIGNsZWFyIG11bHRpLXZhbHVlZCBoZWFkZXJzIChiaWxsYmFya2VyKQogICAgICA8L2ZpeD4KICAgICA8L2NoYW5nZWxvZz4KICAgPC9zdWJzZWN0aW9uPgoKICA8c3Vic2VjdGlvbiBuYW1lPSJKYXNwZXIiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjM0MDM0PC9idWc+OiBKYXNwZXIgZG9lcyBub3QgcmVzcGVjdCBleHRlcm5hbCBlbnRpdGllcyAoYmlsbGJhcmtlcikKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zMzgxMDwvYnVnPjogSW5jb3JyZWN0IHJlY3ljbGluZyBvZiBCb2R5Q29udGVudCBpZiBjbG9zZSBpcyBjYWxsZWQgKHJlbW0pCiAgICAgIDwvZml4PgogICAgICA8dXBkYXRlPgogICAgICAgIFBlciBpbnN0YW5jZSBsb2dnZXJzIGluIEphc3BlciAocmVtbSkKICAgICAgPC91cGRhdGU+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+CiAgIAogICA8c3Vic2VjdGlvbiBuYW1lPSJDbHVzdGVyIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDxmaXg+CiAgICAgICAgRml4IEp2bVJvdXRlQmluZGVyVmFsdmUgcHJpbWFyeSBmYWlsb3ZlciBhdHRyaWJ1dGUgdG8KICAgICAgICBvcmcuYXBhY2hlLmNhdGFsaW5hLmNsdXN0ZXIuc2Vzc2lvbi5Kdm1Sb3V0ZU9yaWduYWxTZXNzaW9uSUQgKHBlcm8pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIENoYW5nZSBhdHRyaWJ1dGUgbmFtZSB3YWl0Rm9yQWNrIHRvIHNlbmRBY2sgYXQgUmVwbGljYXRpb25MaXN0ZW5lciAocGVybykKICAgICAgPC9maXg+CiAgICAgIDxhZGQ+CiAgICAgICAgSW50ZWdyYXRlIG5ldyBmYXN0YXN5bmNxdWV1ZSBjbHVzdGVyIHNlbmRlciBtb2RlLgogICAgICAgIFN1cHBvcnQgcXVldWUgc2l6ZSBsaW1pdGF0aW9uLAogICAgICAgIGdldCBhbGwgcXVldWVkIG9iamVjdHMgYW5kIHNlbmQgaXQgdG8gdGhlIGJhY2t1cCBub2RlLAogICAgICAgIG5vIHF1ZXVlIHRocmVhZCBsb2NrIGNvbnRlbnRpb24gdW5kZXIgaGlnaCByZXBsaWNhdGlvbiBsb2FkLAogICAgICAgIHN1Ym1pdHRlZCBieSBSYWluZXIgSnVuZyAocGVybykKICAgICAgPC9hZGQ+CiAgICAgIDxhZGQ+CiAgICAgICAgQWRkIGNvbXByZXNzIGF0dHJpYnV0ZSB0byBTZW5kZXIgYW5kIFJlY2VpdmVyIHRvIHRyYW5zZmVyIGRhdGEgdW5jb21wcmVzc2VkLiAKICAgICAgICBBdCBoaWdoIGNsdXN0ZXIgbG9hZCB0aGlzIG9wdGlvbiBjb25zdW1lIGxlc3NlciBjcHUgYW5kIG1lbW9yeS4KICAgICAgICBJbXBsZW1lbnQgdGhlIGNvbXByZXNzIGhhbmRsaW5nIHRvIFJlcGxpY2F0aW9uVHJhbnNtaXR0ZXIsIFJlcGxpY2F0aW9uTGlzdGVuZXIsIAogICAgICAgIFhCeXRlQnVmZmVyIGFuZCBKZGsxM1JlcGxpY2F0aW9uTGlzdGVuZXIgKHBlcm8pCiAgICAgIDwvYWRkPgogICAgICA8YWRkPgogICAgICAgIEFkZCBkb1Byb2Nlc3NpbmdTdGF0cyB0byBzeW5jaHJvbm91cywgYXN5bmNocm9ub3VzIGFuZCBmYXN0cXVldWVhc3luYyBzZW5kZXIgbW9kZXMKICAgICAgICB0byBnZXQgbWluLCBhdmcsIG1heCBwcm9jZXNzaW5nIHRpbWVzIGFzIElEYXRhU2VuZGVyIEpNWCBNQmVhbnMgKHBlcm8pCiAgICAgIDwvYWRkPgogICAgICA8Zml4PgogICAgICAgIFRjcFRocmVhZFBvb2wgdXNlIGNvbnN0YW50IEFDSyBieXRlIGFycmF5IGluc3RlYWQgY3JlYXRlIAogICAgICAgIG5ldyAzIGJ5dGUgYnVmZmVyIGZvciBldmVyeSBtZXNzYWdlIGFjayAocGVybykKICAgICAgPC9maXg+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgUmVmYWN0b3IgUmVwbGljYXRpb25UcmFuc21pdHRlciBhbmQgUmVwbGljYXRpb25MaXN0ZW5lciAocGVybykKICAgICAgPC91cGRhdGU+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgYWRkIGdldENhdGFsaW5hQ2x1c3RlcigpIHRvIENsdXN0ZXJSZWNlaXZlciBhbmQgU2ltcGxlVGNwQ2x1c3RlciAocGVybykKICAgICAgPC91cGRhdGU+ICAgIAogICAgICA8dXBkYXRlPgogICAgICAgIFVwZGF0ZSB0aGUgQXBpIGRvY3VtZW50YXRpb24gKHBlcm8pCiAgICAgIDwvdXBkYXRlPgogICAgPC9jaGFuZ2Vsb2c+CiAgIDwvc3Vic2VjdGlvbj4KICAgPHN1YnNlY3Rpb24gbmFtZT0iV2ViYXBwcyI+CiAgICAgPGNoYW5nZWxvZz4KICAgICAgIDx1cGRhdGU+CiAgICAgICAgIFVzZSB0aGUgc3RhbmRhcmQgc3RydXRzIHRhZ2xpYiBVUklzIGluIGFkbWluIEpTUHMuIChiaWxsYmFya2VyKQogICAgICAgPC91cGRhdGU+CiAgICAgIDxhZGQ+CiAgICAgICAgQWRkIG1vcmUgaG9zdCBwYXJhbWV0ZXJzIHRvIGNyZWF0ZSBuZXcgaG9zdCB3aXRoIGhvc3QtbWFuYWdlciAocGVybykKICAgICAgPC9hZGQ+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zNDAzMzwvYnVnPjogRml4IHF1b3RpbmcgcmVsYXRlZCBidWdzIChyZW1tKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjMzNzEzPC9idWc+OiBBZGQgU3RydXRzIGluaXQgY29kZSBpbiBmcmFtZXNldC5qc3AgYXMgd2VsbCAocmVtbSkKICAgICAgPC9maXg+CiAgICAgPC9jaGFuZ2Vsb2c+CiAgIDwvc3Vic2VjdGlvbj4KPC9zZWN0aW9uPgoKPHNlY3Rpb24gbmFtZT0iVG9tY2F0IDUuNS44ICh5b2F2cykiPgogIDxzdWJzZWN0aW9uIG5hbWU9IkdlbmVyYWwiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjMzMjA0PC9idWc+OiBGaXhlZCBTU0wgSG93VG8gcGFnZS4gKHlvYXZzKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjMzMzUxPC9idWc+OiBGaXggc2lsZW50IHVuaW5zdGFsbGF0aW9uLiAocmVtbSkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zMzQ4OTwvYnVnPjogTWlzc2luZyBzcGFjZSBpbiB1bmluc3RhbGxlciBtZXNzYWdlLiAoeW9hdnMpCiAgICAgIDwvZml4PgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgoKICA8c3Vic2VjdGlvbiBuYW1lPSJDYXRhbGluYSI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8Zml4PgogICAgICAgIFVucmVnaXN0ZXIgaG9zdCBtYmVhbiBhbmQgYWxsIGNvbnRleHQgbWJlYW5zIGF0IHJlbW92ZSBhIGhvc3QsIHMuIFN0YW5kYXJkSG9zdC5kZXN0cm95KCkgYW5kIE1CZWFuRmFjdG9yeS5jcmVhdGVTdGFuZGFyZEhvc3QvcmVtb3ZlSG9zdCgsKSBkZXRlY3RlZCBieSBUaG9yc3RlbiBLYW1hbm4gKHBlcm8pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIG1ha2UgaXQgcG9zc2libGUgdG8gcmVzdGFydCBjb25uZWN0b3IsIG5vdyBzZXJ2ZXJzb2NrZXQgcmVjcmVhdGVkIGFmdGVyIHN0b3Asc3RhcnQgKHBlcm8pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIGNoYW5nZSBtYmVhbiBuYW1lcyBmcm9tIE1hcHBlciBhbmQgUHJvdG9jb2xIYW5kbGVyIHRvIGNvbm5lY3RvciBuYW1pbmcgc3R5bGUgKHBlcm8pCiAgICAgIDwvZml4PgogICAgICA8dXBkYXRlPgogICAgICAgIEFkZCBzb21lIGxvZy5pc1hYWEVuYWJsZWQgKHBlcm8pCiAgICAgIDwvdXBkYXRlPgogICAgICA8Zml4PgogICAgICAgIERlcmVnaXN0ZXIgTWFwcGVyTGlzdGVuZXIgYWZ0ZXIgcmVtb3ZlIGNvbm5lY3RvciAocGVybykKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgUmVtb3ZlIGhvc3Qgb25seSBhdCBvd24gZG9tYWluIHdpdGggc2FtZSBuYW1lIGF0IGFsbCBzZXJ2aWNlcywgZGV0ZWN0ZWQgYnkgVGhvcnN0ZW4gS2FtYW5uIChwZXJvKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjMzMTg3PC9idWc+OiBSZW1vdmUgYW55IGxvZ2dpbmcgb2YgdGhlIHBhc3N3b3JkIGluIHRoZSBKQUFTIHJlYWxtLAogICAgICAgIHN1Ym1pdHRlZCBieSBBbmRyZXcgSmFxdWl0aCAocmVtbSkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zMzAzMzwvYnVnPjogRG9uJ3QgZG8gYW55dGhpbmcgdG8gdGhlIHJlc3BvbnNlIGluIHRoZSBFcnJvclJlcG9ydFZhbHZlCiAgICAgICAgaWYgZGF0YSBoYXMgYWxyZWFkeSBiZWVuIHdyaXR0ZW4gKHJlbW0pCiAgICAgIDwvZml4PgogICAgICA8dXBkYXRlPgogICAgICAgIEFkZCBjaGFyc2V0IHN1cHBvcnQgZm9yIHRoZSBVUkxzIHVzZWQgYnkgdGhlIHRhc2tzLCB0byByZW1vdmUgZGVwcmVjYXRpb24gKHJlbW0pCiAgICAgIDwvdXBkYXRlPgogICAgICA8Zml4PgogICAgICAgIDxidWc+MjYxMzU8L2J1Zz46IFdvcmthcm91bmQgZm9yIG1lbW9yeSBsZWFrIHdoZW4gcmVsb2FkaW5nIFN0cnV0cwogICAgICAgIGJhc2VkIHdlYiBhcHBsaWNhdGlvbnMgYnkgY2xlYXJpbmcgdGhlIGJlYW4gaW5zdHJvc3BlY3RvciBjYWNoZSBvZiB0aGUgSlZNIG9uCiAgICAgICAgY2xhc3Nsb2FkZXIgc3RvcCwgc3VibWl0dGVkIGJ5IFRvYmlhcyBMb2ZzdHJhbmQuIChyZW1tKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICAgRW5zdXJlIHRoYXQgaWYgQ0xBU1NQQVRIIGlzIGRlY2xhcmVkIG9uIHN0YXJ0dXAgLSBpdCBpcyBub3QgdXNlZC4gKGZ1bmttYW4pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgICBBZGQgYmFjayB1c2Ugb2YgZGVwbG95T25TdGFydHVwIGluIEhvc3RDb25maWcgKHJlbW0pCiAgICAgIDwvZml4PgogICAgICA8ZG9jcz4KICAgICAgICAgQW50IHRhc2tzIGRvY3MgcGF0Y2hlcywgc3VibWl0dGVkIGJ5IEdhYnJpZWxlIEdhcnVnbGllcmkuIChyZW1tKQogICAgICA8L2RvY3M+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgIFVzZSBOSU8gZm9yIHRoZSByYXcgY29weWluZyBvcGVyYXRpb24sIGFzIGl0IGlzIGZhc3RlciAoYSBsaXR0bGUgdW5kZXIgMzAlKSwgCiAgICAgICAgIGFuZCBkZWNyZWFzZXMgYSBsaXR0bGUgdGhlIGltcGFjdCBvZiBhbnRpUmVzb3VyY2VMb2NraW5nLiAocmVtbSkKICAgICAgPC91cGRhdGU+CiAgICAgIDxmaXg+CiAgICAgICAgIDxidWc+MzMzNTc8L2J1Zz46IEZpeCBjb25uZWN0aW9uIGxlYWtzIHdpdGggdGhlIERhdGFTb3VyY2VSZWFsbSwgYXMgd2VsbCAKICAgICAgICAgYXMgaW1wcm92ZSBlZmZpY2llbmN5LCBzdWJtaXR0ZWQgYnkgRG9taW5payBEcnpld2llY2tpLiAocmVtbSkKICAgICAgPC9maXg+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgIEltcHJvdmUgYSBsaXR0bGUgbG9nZ2luZyBvZiBzZXJ2bGV0IGV4Y2VwdGlvbnMsIHdoaWNoIHNob3VsZCBhbGwgbG9nIHRoZSByb290IGNhdXNlLiAocmVtbSkKICAgICAgPC91cGRhdGU+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgIEFkZCBuZXcgTWFuYWdlci5jcmVhdGVTZXNzaW9uKHNlc3Npb25JZCkgbWV0aG9kLCBhbGxvd2luZyB0aGUgY2xpZW50IHRvICJzcGVjaWZ5IiB0aGUgc2Vzc2lvbiBpZCB3aGljaCBzaG91bGQgYmUgdXNlZCB1c2luZyBhIGNvb2tpZQogICAgICAgICB3aGVuIHVzaW5nIGVtcHR5U2Vzc2lvblBhdGg9InRydWUiLiBUaGlzIGZpeGVzIHNlc3Npb24gdHJhY2tpbmcgaW4gdGhpcyBjYXNlLiAocmVtbSkKICAgICAgPC91cGRhdGU+CiAgICAgIDxmaXg+CiAgICAgICAgIDxidWc+MzMzNjg8L2J1Zz46IEZpeCBtZW1vcnkgbGVhayBpbiBzd2FsbG93T3V0cHV0IGZlYXR1cmUgd2hpY2ggb2NjdXJyZWQgd2hlbiB0aGUgdGhyZWFkIHBvb2wgc2l6ZSBpcwogICAgICAgICByZWR1Y2VkLCBzdWJtaXR0ZWQgYnkgUmFpbmVyIEp1bmcuIChyZW1tKQogICAgICA8L2ZpeD4KCSAgPGZpeD4KICAgICAgICAgIFN0b3JlQ29uZmlnOiBjYW4ndCBzYXZlIGNsdXN0ZXIgTWVtYmVyc2hpcCBlbGVtZW50IChwZXJvKQogICAgICAgPC9maXg+CgkgIDxhZGQ+CiAgICAgICAgICBTdG9yZUNvbmZpZzogc3VwcHJlc3MgZGVmYXVsdCBqa0hvbWUgYXR0cmlidXRlIGF0IGNvbm5lY3RvciAgKHBlcm8pCiAgICAgIDwvYWRkPgoJICA8YWRkPgogICAgICAgICAgU3RvcmVDb25maWc6IFNhdmUgbmV3IGR5bWFuaWMgcHJvcGVydGllcyBmcm9tIFJlcGxpY2F0aW9uVHJhbnNtaXR0ZXIgIChwZXJvKQogICAgICA8L2FkZD4KICAgICAgPGZpeD4KICAgICAgICAgPGJ1Zz4zMzQ2MzwvYnVnPjogUmVtb3ZlIGF0dHJpYnV0ZXMgYWZ0ZXIgY29udGV4dCBkZXN0cm95LiAocmVtbSkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgIDxidWc+MzM1NzI8L2J1Zz46IGNvbnRleHQueG1sIHNob3VsZCBiZSBhIHJlZGVwbG95IHJlc291cmNlLCBhbmQgYWRkIHByaW9yaXRpemF0aW9uIGZvcgogICAgICAgICByZWRlcGxveSByZXNvdXJjZXMuIChyZW1tKQogICAgICA8L2ZpeD4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KICAKICA8c3Vic2VjdGlvbiBuYW1lPSJDb3lvdGUiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPGZpeD4KICAgICAgICAgUG9vbFRjcEVuZHBvaW50IHJlY3JlYXRlIFNlcnZlclNvY2tldCBhZnRlciBzdGFydCxzdG9wLHN0YXJ0IGNvbm5lY3RvciAocGVybykKICAgICAgPC9maXg+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgQWRkIHNvbWUgbG9nLmlzWFhYRW5hYmxlZCAocGVybykKICAgICAgPC91cGRhdGU+CgkgIDxhZGQ+CgkgICAgSmtNWDogbWFrZSBsb2c0aiBtYmVhbiBjb25maWd1cmFibGUgd2l0aCBhdHRyaWJ1dGUgbG9nNGpFbmFibGVkIChwZXJvKQoJICA8L2FkZD4KCSAgPGZpeD4KCSAgICBXaGVuIFRvbWNhdCBydW5zIG9uIFdpbmRvd3MgYW5kIElFIGlzIHVwbG9hZGluZyBkYXRhIHRvIHRoZSBzZXJ2ZXIsIHRoZSBmaXJzdCByZWFkIAoJICAgIG11c3QgYmUgYXQgbGVhc3QgOEtCLCBvdGhlcndpc2UgdXBsb2FkIHNwZWVkIGlzIGV4dHJlbWVseSBsb3csIHN1Ym1pdHRlZCBieSBOb2VsIAoJICAgIFJvY2hlciAocmVtbSkKCSAgPC9maXg+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+CiAKICA8c3Vic2VjdGlvbiBuYW1lPSJKYXNwZXIiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjMzMjIzPC9idWc+OiBwYWdlQ29udGV4dC5mb3J3YXJkIGFuZCBqc3A6aW5jbHVkZSByZXN1bHQKICAgICAgICBpbiBTdHJpbmdJbmRleE91dE9mQm91bmRzRXhjZXB0aW9uIChsdWVoZSkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zMzM3MzwvYnVnPjogRml4IGhhbmRsaW5nIG9mIGNvbnRleHQgY2xhc3Nsb2FkZXIgaW4ganNwYyAocmVtbSkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zMzUzODwvYnVnPjogSWdub3JlIGV4YW1wbGUgYW5kIHRhZy1leHRlbnNpb24gZWxlbWVudHMgaW4gVGFnTGlicmFyeUluZm9JbXBsLiAoeW9hdnMpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzM1Mzk8L2J1Zz46IEJldHRlciBlcnJvciBtZXNzYWdlIHdoZW4gYW4gdW5rbm93biBlbGVtZW50IGlzIGVuY291bnRlcmVkIGluIHRoZSB0YWcgZmlsZS4gKHlvYXZzKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjMzMjE5PC9idWc+OiBNaW5vciBKc3BTZXJ2bGV0V3JhcHBlciBjb2RlIGNsZWFudXAuICh5b2F2cykKICAgICAgPC9maXg+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+CiAgCiAgPHN1YnNlY3Rpb24gbmFtZT0iQ2x1c3RlciI+CiAgICA8Y2hhbmdlbG9nPgogICAgICAgPGZpeD4KICAgICAgICAgIEFkZCBpbnN0YW5jZSBiYXNlZCBSZXBsaWNhdGlvblZhbHZlIHN0YXRpc3RpY3MgdG8gTWJlYW4gZGVzY3JpcHRvciAocGVybykKICAgICAgIDwvZml4PgogICAgICAgPGZpeD4KICAgICAgICAgIEJldHRlciBJMThOIHN1cHBvcnQgdG8gY2x1c3RlciBzZXNzaW9uIGFuZCB0Y3AgY2xhc3NlcyAocGVybykKICAgICAgIDwvZml4PgogICAgICAgPGFkZD4KICAgICAgICAgIFN1cHBvcnQgb3B0aW9uYWwgcHJpbWFyeUluZGljYXRvciBhdCBSZXBsaWNhdGlvblZhbHZlIHRvIG1hcmsgdGhhdCAKICAgICAgICAgIHJlcXVlc3QgcHJvY2Vzc2luZyB0byBleGlzdGluZyBzZXNzaW9uIGlzIGF0IHByaW1hcnkgY2x1c3RlciBub2RlLiAKICAgICAgICAgIEVhc3kgZmFpbG92ZXIgZGV0ZWN0aW9uLCB3aGVuIG1hcmsgaXMgbm90IGF0IAogICAgICAgICAgY29uZmlndXJhYmxlIHByaW1hcnlJbmRpY2F0b3IgYXR0cmlidXRlLCBzdWJtaXR0ZWQgYnkgUmFpbmVyIEp1bmcgKHBlcm8pCiAgICAgICA8L2FkZD4KICAgICAgIDx1cGRhdGU+CiAgICAgICAgICBSZWZhY3RvciBhbGwgaW1wbGVtZW50YXRpb24gZnJvbSBpbnRlcmZhY2UgSURhdGFTZW5kZXJzIChwZXJvKQogICAgICAgPC91cGRhdGU+CiAgICAgIDxhZGQ+CiAgICAgICAgICBBZGQgc29tZSB1c2VmdWxsIGF0dHJpYnV0ZXMgYW5kIG9wZXJhdGlvbnMgdG8gdGhlIGFsbCBzZW5kZXIgTUJlYW5zLiAocGVybykKICAgICAgIDwvYWRkPgogICAgICA8YWRkPgogICAgICAgICAgQWRkIGtlZXBBbGl2ZSBhbmQgd2FpdEZvckFjayBoYW5kbGluZyB0byBBc3luY1NvY2tldFNlbmRlciBhbmQgZmFjdG9yIG91dCBhIERhdGFTZW5kZXIgYmFzZSBjbGFzcy4ocGVybykKICAgICAgIDwvYWRkPgogICAgICAgPGFkZD4KICAgICAgICAgIFJlcGxpY2F0aW9uVHJhbnNtaXR0ZXI6IEVuYWJsZSBhbmQgRGlzYWJsZSBhdXRvcmVjb25uZWN0IHNlbmRlciBhbmQgd2FpdEZvckFjay4gKHBlcm8pCiAgICAgICA8L2FkZD4KICAgICAgIDxhZGQ+CiAgICAgICAgICBSZXBsaWNhdGlvblRyYW5zbWl0dGVyOiB0cmFuc2ZlciBhbGwgcHJvcGVydGllcyB0byBzb2NrZXQgc2VuZGVyIGZyb20gc2VydmVyLnhtbCBjb25maWd1cmF0aW9uLiAocGVybykKICAgICAgIDwvYWRkPgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgoKICA8c3Vic2VjdGlvbiBuYW1lPSJXZWJhcHBzIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDxmaXg+CiAgICAgICAgRml4IGNyZWF0ZSBhbmQgcmVtb3ZlIEhvc3QgZm9yIEFkbWluIGFwcC4gKHBlcm8pCiAgICAgIDwvZml4PgogICAgPC9jaGFuZ2Vsb2c+CiAgIDwvc3Vic2VjdGlvbj4KPC9zZWN0aW9uPgoKPHNlY3Rpb24gbmFtZT0iVG9tY2F0IDUuNS43IChyZW1tKSI+CiAgPHN1YnNlY3Rpb24gbmFtZT0iR2VuZXJhbCI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8YWRkPgogICAgICAgIEFkZCBpbnN0YWxsZXIgZm9yIG1vZF9qayBvbiBJSVMuIChtdHVyaykKICAgICAgPC9hZGQ+CiAgICAgIDxhZGQ+CiAgICAgICAgTmV3IHN0b3JlIGNvbmZpZyBtb2R1bGUgZm9yIGJldHRlciBzZXJ2ZXIueG1sIHNhdmluZyBzdXBwb3J0Ljxici8+CiAgICAgICAgQWRkICZsdDtMaXN0ZW5lciBjbGFzc05hbWU9Im9yZy5hcGFjaGUuY2F0YWxpbmEuc3RvcmVjb25maWcuU3RvcmVDb25maWdMaWZlY3ljbGVMaXN0ZW5lciIgLyZndDsgdG8geW91ciBzZXJ2ZXIueG1sIChwZXJvKQogICAgICA8L2FkZD4KICAgICAgPHVwZGF0ZT4KICAgICAgICA8YnVnPjMyMDgxPC9idWc+OiBSZW1vdmUgdGhlIEpESyByZXF1aXJlbWVudCBmcm9tIHRoZSBVbml4IHNjcmlwdHMsIHN1Ym1pdHRlZAogICAgICAgIGJ5IEJlbiBTb3V0aGVyIChyZW1tKQogICAgICA8L3VwZGF0ZT4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjMyOTUzPC9idWc+OiBTRVJWTEVUQVBJOiBYU1MgSXNzdWVzLCBzdWJtaXR0ZWQgYnkgTWFyayBUaG9tYXMgKGpmYXJjYW5kKQogICAgICA8L2ZpeD4KICAgICAgPHVwZGF0ZT4KICAgICAgICBVcGRhdGUgdG8gY29tbW9ucy1kaWdlc3RlciAxLjYsIEpEVCAzLjAuMSwgTVg0SiAyLjEuMCwgU3RydXRzIDEuMi42IChyZW1tKQogICAgICA8L3VwZGF0ZT4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KCiAgPHN1YnNlY3Rpb24gbmFtZT0iQ2F0YWxpbmEiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPHVwZGF0ZT4KICAgICAgICAgRmlyc3QgaW50ZWdyYXRpb24gYXQgU3RvcmVDb25maWcgdG8gU3RhbmRhcmRTZXJ2ZXIgKHBlcm8pCiAgICAgIDwvdXBkYXRlPgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzI3MTQgPC9idWc+OiBEb24ndCBtYWtlIHRoZSBBY2Nlc3NMb2dWYWx2ZSBmaW5hbCAoZnVua21hbikKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zMjY5NDwvYnVnPjogRml4IGJhZCBjb2RlIHRvIG1ha2UgZG9jQmFzZSBwYXRoIGFib3NsdXRlIGluIGFudGlMb2NraW5nCiAgICAgICAgbWV0aG9kLiAocmVtbSkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zMjcxMzwvYnVnPjogRml4IHJlc291cmNlLWVudi1yZWYgaGFuZGxpbmcuIChyZW1tKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjMxMjAxPC9idWc+OiBJbXByb3ZlIGkxOG4gc3VwcG9ydCBpbiBEZWZhdWx0U2VydmxldC4gVGhpcyB3YXMgY2F1c2luZwogICAgICAgIHByb2JsZW1zIHdpdGggSlNQIGluY2x1ZGUgYWN0aW9ucyBhbmQgc3RhdGljIGZpbGVzLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIEFkZCBzb21lIGxvZy5pc1hYWEVuYWJsZWQgdG8gby5hLmMuY29yZS5TdGFuZGFyZEhvc3QgU3RhbmRhcmRFbmdpbmUsIFN0YW5kYXJkU2VydmljZSAocGVybykKICAgICAgPC9maXg+CiAgICAgIDxhZGQ+CiAgICAgICAgRmVhdHVyZSBhZGRpdGlvbiB0byBhZGQgUmVkaXJlY3RvciBhbmQgZmFpbE9uRXJyb3Igc3VwcG9ydCBmb3IgYWxsIENhdGFsaW5hIEFudCB0YXNrcywKICAgICAgICBzdWJtaXR0ZWQgYnkgR2FicmllbGUgR2FydWdsaWVyaSAocmVtbSkKICAgICAgPC9hZGQ+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zMTE5ODwvYnVnPjogRml4IEZPUk0gYW5kIERJR0VTVCBhdXRoZW50aWNhdGlvbiBmb3Igbm9uLUFTQ0lJCiAgICAgICAgdXNlcm5hbWVzIGFuZCBwYXNzd29yZHMuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgUmVpbXBsZW1lbnQgY2hhcnNldCBtYXBwZXIgKHJlbW0pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIEFkZCBsb2dnaW5nIG9mIGV4Y2VwdGlvbiB3aGljaCBjb3VsZCBvY2N1ciB3aGVuIHJldHJpZXZpbmcgdGhlIHBhc3N3b3JkIGluIEpEQkNSZWFsbSAocmVtbSkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4yNTg4OTwvYnVnPjogRG9uJ3QgZXhlY3V0ZSBxdWVyaWVzIHR3aWNlLCBzdWJtaXR0ZWQgYnkgVG9tIEFuZGVyc29uIChyZW1tKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjMyODMyPC9idWc+OiByZXF1ZXN0LmdldFNlc3Npb24oZmFsc2UpIGZhaWxzIHRvIHJldHVybiBudWxsIChsdWVoZSkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4yODIyMjwvYnVnPjogcmVxdWVzdC5nZXRSZXF1ZXN0VVJMKCkgaW4gZm9yd2FyZGVkIGpzcC9zZXJ2bGV0IHJldHVybnMKICAgICAgICBvcmlnaW5hbCB1cmwgcmF0aGVyIHRoYW4gbmV3IHVybCBhcyBwZXIgU1JWOC40IChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zMzE1NzwvYnVnPjogRml4IGhhbmRsaW5nIG9mIHRoZSBidWZmZXIgbGVuZ3RoIGZvciBiYXNpYyBhdXRoZW50aWNhdGlvbiBwYXJzaW5nIChyZW1tKQogICAgICA8L2ZpeD4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KCiAgPHN1YnNlY3Rpb24gbmFtZT0iQ295b3RlIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zMjcwODwvYnVnPjogQmV0dGVyIGhhbmRsaW5nIG9mIGJhZCBlbmNvZGluZyB3aXRoIHRoZSBzdHJpbmcgY2FjaGUuIChyZW1tKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjMyNzgxPC9idWc+OiBGaXggYmFkIGluaXRpYWxpemF0aW9uIG9mIHRoZSAic2NoZW1lIiBmaWVsZCBvZiB0aGUgcmVxdWVzdAogICAgICAgIG9iamVjdCwgd2hpY2ggd291bGQgY2F1c2UgZ2V0U2NoZW1lIHRvIHJldHVybiAiaHR0cCIgZm9yIHRoZSBmaXJzdCByZXF1ZXN0LiAocmVtbSkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgQ29udGVudCBsZW5ndGggc2hvdWxkIGJlIGlnbm9yZWQgaWYgdGhlcmUgaXMgY2h1bmtpbmcgKHJlbW0pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIFJlbW92ZSBtb3N0IGRlcHJlY2F0aW9uIHByb2JsZW1zIGZvciB0aGUgQUpQIGNvbm5lY3RvciAocmVtbSkKICAgICAgPC9maXg+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+CgogIDxzdWJzZWN0aW9uIG5hbWU9Ikphc3BlciI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzI3NDY8L2J1Zz46IEF2b2lkIEpBUiBsb2NraW5nIHdoZW4gbG9hZGluZyBjbGFzc2VzIGFuZCBpbXByb3ZlIGxvYWRpbmcKICAgICAgICBwZXJmb3JtYW5jZSBieSB0YWtpbmcgYWR2YW50YWdlIG9mIGNhY2hpbmcsIHN1Ym1pdHRlZCBieSBEb21pbmlrIERyemV3aWVja2kuIChyZW1tKQogICAgICA8L2ZpeD4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KCiAgPHN1YnNlY3Rpb24gbmFtZT0iQ2x1c3RlciI+CiAgICA8Y2hhbmdlbG9nPgogICAgICAgPGZpeD4KICAgICAgICAgIGNvcnJlY3QgSnZtUm91dGVTZXNzaW9uSURCaW5kZXJMaXN0ZW5lciBNQmVhbiBuYW1lIHRvICZsdDtkb21haW4mZ3Q7OnR5cGU9TGlzdGVuZXIsbmFtZT1Kdm1Sb3V0ZVNlc3Npb25JREJpbmRlckxpc3RlbmVyLGhvc3Q9Jmx0O2hvc3QmZ3Q7IChwZXJvKQogICAgICAgPC9maXg+CiAgICAgICA8YWRkPgogICAgICAgICAgSk1YIHN1cHBvcnQgdG8gU2ltcGxlVGNwQ2x1c3RlciwgUmVwbGljYXRpb25UcmFuc21pdHRlciBhbmQgYWxsIHNlbmRlcnMgKHBlcm8pCiAgICAgICA8L2FkZD4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KCiAgPHN1YnNlY3Rpb24gbmFtZT0iV2ViYXBwcyI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8Zml4PgogICAgICAgIEZpeCB0aGUgd2ViREFWIHNlcnZsZXQgc28gaXQgY2FuIGJlIHVzZWQgdmlhIGFueSBhcmJpdHJhcnkgbWFwcGluZwogICAgICAgIChlZyAvd2ViZGF2LyopIHRvIGVkaXQgdGhlIGNvbnRlbnRzIG9mIGEgd2ViIGFwcGxpY2F0aW9uLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzI3Mjk8L2J1Zz46IFN0b3AgaXMgb3B0aW9uYWwgYW5kIG1heSBmYWlsLCBzbyBpdCBuZWVkcyB0byBiZSBpbiBhIHNlcGFyYXRlIHRyeS9jYXRjaCAocmVtbSkKICAgICAgPC9maXg+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgUmVtb3ZlIHRoZSByZW1vdmUgbWV0aG9kIG9mIHRoZSBtYW5hZ2VyIHNlcnZsZXQsIGFuZCB1c2UgdGhlIHVuZGVwbG95IG1ldGhvZCBpbnN0ZWFkIChyZW1tKQogICAgICA8L3VwZGF0ZT4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjMyNzc3PC9idWc+OiBGYWlsIGlmIGFwcGxpY2F0aW9uIGlzbid0IGNvbmZpZ3VyZWQgcHJvcGVybHksIHN1Ym1pdHRlZCBieSBHYWJyaWVsZSBHYXJ1Z2xpZXJpCiAgICAgICAgKHJlbW0pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzI3NzE8L2J1Zz46IENhbm5vdCB1bmRlcGxveS9kZXBsb3kgbWlzY29uZmlndXJlZCBhcHAgYWZ0ZXIgdG9tY2F0IHN0YXJ0dXAsCiAgICAgICAgc3VibWl0dGVkIGJ5IEdhYnJpZWxlIEdhcnVnbGllcmkgKHJlbW0pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+Mjg4Njc8L2J1Zz46IENvcnJlY3QgbWFuYWdlciBkb2N1bWVudGF0aW9uIHRvIGRvY3VtZW50IGNvcnJlY3Qgd2F5IHRvCiAgICAgICAgcmVmZXJlbmNlIHRoZSBST09UIGNvbnRleHQuIFN1Ym1pdHRlZCBieSBTdGVwaGFuZSBCYWlsbGllei4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjMzMDg1PC9idWc+OiBBZGQgc3VwcG9ydCBmb3Igc2V0dGluZyBwcml2aWxlZ2VkIGF0dHJpYnV0ZSBvZiBjb250ZXh0CiAgICAgICAgdG8gYWRtaW4gd2ViYXBwLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzMxMTc8L2J1Zz46IEZpeCBPcGVuIGJ1Z3MgbGluayBicm9rZW4gb24gZGVmYXVsdCBob21lcGFnZS4KICAgICAgICBQYXRjaCBzdXBwbGllZCBieSBTYW5kZXIgVGVtbWUuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgSW1wcm92ZSBqYXZhZG9jIGdlbmVyYXRpb24gZm9yIENhdGFsaW5hLiAocmVtbSkKICAgICAgPC9maXg+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+Cjwvc2VjdGlvbj4KCjxzZWN0aW9uIG5hbWU9IlRvbWNhdCA1LjUuNiAoeW9hdnMpIj4KICA8c3Vic2VjdGlvbiBuYW1lPSJHZW5lcmFsIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgPGJ1Zz4zMjUzMjwvYnVnPjogdXBkYXRlZCBsb2dnaW5nIGRvY3VtZW50YXRpb24uICh5b2F2cykKICAgICAgPC91cGRhdGU+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgPGJ1Zz4zMjM4MjwvYnVnPjogSW5kZXggcGFnZSBhbmQgcGFja2FlZCBXQVIgZm9yIHNhbXBsZSB3ZWJhcHAuICh5b2F2cykKICAgICAgPC91cGRhdGU+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zMjYwMzwvYnVnPjogVXBkYXRlZCBob3N0LnhtbCB0byByZWZsZWN0IGFwcEJhc2UgcmVzb2x1dGlvbi4gKHlvYXZzKQogICAgICA8L2ZpeD4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KCiAgPHN1YnNlY3Rpb24gbmFtZT0iQ2F0YWxpbmEiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPGZpeD4KICAgICAgICBBZGQgY2hpbGQgdG8gdGhlIG1hcCBvZiB0aGUgcGFyZW50IGJlZm9yZSBzdGFydGluZyBpdC4gKHJlbW0pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIERlY291cGxlIHVzYWdlIG9mIHRoZSBzY2hlbWUgYW5kIHNlY3VyZSBhdHRyaWJ1dGVzIGZyb20gZW5hYmxpbmcgU1NMLiAocmVtbSkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zMjUwMjwvYnVnPjogbWVtb3J5IGxlYWsgaW4gRGlnZXN0QXV0aGVudGljYXRvci4gKHlvYXZzKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjI4NzA5PC9idWc+OiBqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlcnZsZXRSZXF1ZXN0LmlzUmVxdWVzdGVkU2Vzc2lvbklkVmFsaWQoKSByZXR1cm5zIHRydWUgZm9yIGFuIGludmFsaWRhdGVkIHNlc3Npb24uIChsdWVoZSkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zMjEzNzwvYnVnPjogUG9zc2libGUgdGhyZWFkLXNhZmV0eSBpc3N1ZSBpbiBSZWFsbUJhc2UuICh5b2F2cykKICAgICAgPC9maXg+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+CgogIDxzdWJzZWN0aW9uIG5hbWU9IkNveW90ZSI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzI1ODU8L2J1Zz46IEJldHRlciBoYW5kbGluZyBmb3IgY29udGVudCBsZW5ndGggZ3JlYXRlciB0aGFuIEludGVnZXIuTUFYX1ZBTFVFIGluIHJlc3BvbnNlLiAobWFya3QpCiAgICAgIDwvZml4PgogICAgICA8dXBkYXRlPgogICAgICAgIEFsbG93IEFwYWNoZUNvbmZpZyBhbmQgZnJpZW5kcyB0byBsaXZlIHVuZGVyIGFuIEVuZ2luZS4gKGJpbGxiYXJrZXIpCiAgICAgIDwvdXBkYXRlPgogICAgICA8dXBkYXRlPgogICAgICAgIFN5bmNyb25pemUgYWNjZXNzIHRvIHRoZSBKayBSZXF1ZXN0IHJlZ2lzdHJhdGlvbiBjb3VudC4gKGJpbGxiYXJrZXIpCiAgICAgIDwvdXBkYXRlPgogICAgICA8dXBkYXRlPgogICAgICAgIFNwZWVkIHRoZSBNc2dDb250ZXh0IG9uIGl0cyB3YXkgdG8gR0MuIChiaWxsYmFya2VyKQogICAgICA8L3VwZGF0ZT4KICAgICAgPGZpeD4KICAgICAgICBLZWVwIGNvcnJlY3QgdGhyZWFkIGNvdW50cyBpbiBUaHJlYWQgcG9vbCB3aGVuIHRocmVhZCBlbmRzIGluIGFuIGV4Y2VwdGlvbiAoYmlsbGJhcmtlcikKICAgICAgPC9maXg+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+CgogIDxzdWJzZWN0aW9uIG5hbWU9Ikphc3BlciI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8dXBkYXRlPgogICAgICAgIFVwZGF0ZWQgSmFzcGVyLUhvd1RvIHNlY3Rpb24gb24gdXNpbmcgSmlrZXMsIGNoYW5nZWQgY29uZi93ZWIueG1sIEpTUFNlcnZsZXQgdG8gcmVmZXIgcGVvcGxlIHRvIEphc3Blci1Ib3dUbyBzbyB0aGF0IHdlIGRvbid0IGhhdmUgdGhlc2UgaW5zdHJ1Y3Rpb25zIGluIHR3byBwbGFjZXMuICh5b2F2cykKICAgICAgPC91cGRhdGU+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+CgogIDxzdWJzZWN0aW9uIG5hbWU9IldlYmFwcHMiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjMyNTA1PC9idWc+OiBGaXggaGFuZGxpbmcgb2YgYW4gZW1wdHkgY29udGV4dCBwYXJhbWV0ZXIgKHdoaWNoIG9jY3VycmVkIGV2ZXJ5IHRpbWUgdGhlIEhUTUwKICAgICAgICBtYW5hZ2VyIHdhcyB1c2VkIHRvIGRlcGxveSBhIGxvY2FsIHdhciB3aXRob3V0IHNwZWNpZnlpbmcgYWxzbyBhIGNvbnRleHQgZmlsZSkuIChyZW1tKQogICAgICA8L2ZpeD4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KPC9zZWN0aW9uPgoKPHNlY3Rpb24gbmFtZT0iVG9tY2F0IDUuNS41ICh5b2F2cykiPgogIDxzdWJzZWN0aW9uIG5hbWU9IkdlbmVyYWwiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPHVwZGF0ZT4KICAgICAgICA8YnVnPjMyMjM1PC9idWc+OiBTeW5jIGNvbmYvd2ViLnhtbCBNSU1FIHR5cGVzIHdpdGggQXBhY2hlIGh0dHBkLiAoeW9hdnMpCiAgICAgIDwvdXBkYXRlPgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzExMzI8L2J1Zz46IEJldHRlciAteC8tciBzdXBwb3J0IGZvciBPUy80MDAgaW4gc3RhcnR1cCBzY3JpcHRzLiAoeW9hdnMpCiAgICAgIDwvZml4PgogICAgICA8dXBkYXRlPgogICAgICAgIDxidWc+MjI2Nzk8L2J1Zz46IEFkZGVkIG1pc2Mgbm90ZSBvbiBhY2Nlc3Npbmcgc2Vzc2lvbiBJRCB0byBTU0wtSG93VG8uICh5b2F2cykKICAgICAgPC91cGRhdGU+CiA8IS0tIEJ5dGVCdWZmZXJBY2Nlc3NMb2dWYWx2ZS5qYXZhIGlzIG5vdCBpbnNpZGUhIQogICAgICA8dXBkYXRlPgogICAgICAgIEFkZCBhbiBhc3luY2hyb3Vub3VzIGFjY2VzcyBsb2cgdmFsdmUgYmFzZWQgb24gTklPIChqZmFyY2FuZCkKICAgICAgPC91cGRhdGU+CiAtLT4KICAgICAgIDx1cGRhdGU+CiAgICAgICAgPGJ1Zz4zMjI0OTwvYnVnPjogVXBkYXRlZCBsb2dnaW5nIGRvY3VtZW50YXRpb24uICh5b2F2cykKICAgICAgPC91cGRhdGU+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgPGJ1Zz4zMjI4MjwvYnVnPjogTW9kaWZ5IFdpbmRvd3MgVW5pbnN0YWxsZXIgdG8gb25seSByZW1vdmUgd2ViYXBwcy9ST09UIGFuZCB3ZWJhcHBzIGlmIHVzZXIgYXNrcyB0byByZW1vdmUgZXZlcnl0aGluZy4gKHlvYXZzKQogICAgICA8L3VwZGF0ZT4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjMyMzcxPC9idWc+OiBvdXRkYXRlZCBpbnRyb2R1Y3Rpb24ueG1sIHBhZ2UuICh5b2F2cykKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zMjM3MzwvYnVnPjogb3V0ZGF0ZWQgaW5zdGFsbGF0aW9uLnhtbCBwYWdlLiAoeW9hdnMpCiAgICAgIDwvZml4PgogICAgICA8dXBkYXRlPgogICAgICAgIDxidWc+MzI0NTQ8L2J1Zz46IGFtZW5kZWQgSk5ESSBkb2N1bWVudGF0aW9uIGZvciBKYXZhTWFpbC9KYXZhQWN0aXZhdGlvbkZyYW1ld29yayB1c2FnZS4gKHlvYXZzKQogICAgICA8L3VwZGF0ZT4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KCiAgPHN1YnNlY3Rpb24gbmFtZT0iQ2F0YWxpbmEiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjMyMTMwPC9idWc+OiBBZGQgc2FmZXR5IGNoZWNrIHRvIEZpbGVTdG9yZSNrZXlzIG1ldGhvZC4gKHlvYXZzKQogICAgICA8L2ZpeD4KICAgICAgPHVwZGF0ZT4KICAgICAgICA8YnVnPjMyMjc2PC9idWc+OiBBZGQgZGV2ZWxvcGVyIGluZm8gdG8gUmVhbG0gSG93LVRvLiAoeW9hdnMpCiAgICAgIDwvdXBkYXRlPgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzIwODI8L2J1Zz46IEFkZGVkIHByb3RlY3RlZCBnZXRQcmluY2lwYWxzIG1ldGhvZCB0byBNZW1vcnlSZWFsbSBmb3IgZWFzaWVyIGV4dGVuc2lvbi4gKHlvYXZzKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjMyMDIzPC9idWc+OiBDR0lTZXJ2bGV0IGZhaWxzIHRvIGhhbmRsZSBwb3N0IG1lc3NhZ2Ugd2l0aCBtdWx0aXBhcnQvZm9ybSBkYXRhLiAoeW9hdnMpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzIyNjk8L2J1Zz46IEpORElSZWFsbSBmYWlscyB3aXRoIEludmFsaWROYW1lRXhjZXB0aW9uIHRvIGF1dGhlbnRpY2F0ZSB1c2VycyBpZiBMREFQIGRpc3Rpbmd1aXNoZWQgbmFtZSAoRE4pIGNvbnRhaW5zIHNsYXNoIG9yIGRvdWJsZSBxdW90ZSBjaGFyYWN0ZXIocykuICh5b2F2cykKICAgICAgPC9maXg+CiAgICAgPGZpeD4KICAgICAgICBNb3ZlIHByb2Nlc3NFeHBpcmVzRnJlcXVlbmN5IGNoZWNrIHRvIE1hbmFnZXJCYXNlIGFuZCByZWZsZWN0IGNoYW5nZSB0byBhbGwgc3ViY2xhc3NlcyAoU3RhbmRhcmRNYW5hZ2VyLCBQZXJzaWVudE1hbmFnZXJCYXNlLCBEZWx0YU1hbmFnZXIpLiAocGVybykKICAgICAgPC9maXg+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgQWRkIERJR0VTVCBhdXRoZW50aWNhdGlvbiBzdXBwb3J0IHRvIHRoZSBKREJDIGFuZCBEYXRhU291cmNlIHJlYWxtcy4gU3VwcG9ydHMgYm90aCBkaWdlc3RlZCBhbmQgY2xlYXJ0ZXh0IHBhc3N3b3Jkcy4gKG1hcmt0KQogICAgICA8L3VwZGF0ZT4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjMyNDI5PC9idWc+OiBDR0lTZXJ2bGV0IGNhbGN1bGF0ZXMgbnVtYmVyIG9mIGxpbmVzIHJlY2VpdmVkIG9uIHN0ZGVyciBpbmNvcnJlY3RseS4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjMyNDMxPC9idWc+OiBGaXggdHlwbyBpbiBjb2RlIHRoYXQgcGFzc2VzIGRhdGEgdG8gQ0dJIHNjcmlwdC4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjMyNDMwPC9idWc+OiBDbGFzcyBjYXN0IGV4Y2VwdGlvbiBpbiB0b1N0cmluZygpIG1ldGhvZCB3aXRoaW4gQ0dJIHNlcnZsZXQuIChtYXJrdCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgIEFkZCBzb21lIGxvZy5pc1hYWEVuYWJsZWQgY2hlY2tzIGF0IFN0YW5kYXJkQ29udGV4dCBhbmQgSG9zdENvbmZpZyAocGVybykKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgIFJlbW92ZSB0aGUgbGFzdCBEZWZhdWx0Q29udGV4dCBhcnRpZmFjdHMgKHBlcm8pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgICA8YnVnPjMyMDMxPC9idWc+OiB1c2luZyBjcmVhdGVDb25uZWN0b3Igd2l0aCAiaHR0cCIgcHJvdG9jb2wgKHJlbW0pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgICBBZGQgY29uZmlnRmlsZSBhdHRyaWJ1dGUgaW4gSk1YIGRlc2NyaXB0b3JzIChyZW1tKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICAgRml4IGF1dG9kZXBsb3llciBoYW5kbGluZyBvZiBhIHdhciB3aGljaCBpbmNsdWRlcyBhIC9NRVRBLUlORi9jb250ZXh0LnhtbCwgc28gdGhhdCBpdCBpcwogICAgICAgICBjb3JyZWN0bHkgcmVnaXN0ZXJlZCBhbmQgY2FuIGJlIHJlbG9hZGVkIGNvcnJlY3RseSAocmVtbSkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgIDxidWc+MzIxMzc8L2J1Zz46IFVzZSBvZiBNZXNzYWdlRGlnZXN0IHNob3VsZCBiZSBzeW5jZWQgaW4gRElHRVNUIChyZW1tKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICAgQWRkIGluZm8gbG9nIHdoZW4gdGhlIGF1dG9kZXBsb3llciByZWxvYWRzIGEgY29udGV4dCAocmVtbSkKICAgICAgPC9maXg+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+CgogIDxzdWJzZWN0aW9uIG5hbWU9IkNveW90ZSI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8dXBkYXRlPgogICAgICAgIFNtYWxsIEhUVFAvMS4xIG9wdGltaXphdGlvbnM6IHJlcGxhY2UgdXNhZ2Ugb2YgU3RyaW5ncyB3aXRoIGNvbnN0YW50IGJ5dGUgYXJyYXlzLCBhbmQKICAgICAgICBzaW1wbGlmeSB0aGUgY29kZSBjb252ZXJ0aW5nIFN0cmluZ3MgdG8gYnl0ZXMgKHJlbW0pCiAgICAgIDwvdXBkYXRlPgogICAgICA8dXBkYXRlPgogICAgICAgIEdyZWF0bHkgcmVkdWNlIHRoZSBhbW91bnQgb2YgcmVjeWNsZSBtZXRob2QgY2FsbHMgb24gdGhlIGJ1ZmZlcnMgKHJlbW0pCiAgICAgIDwvdXBkYXRlPgogICAgICA8Zml4PkFkZCBudWxsIE9OYW1lIGNoZWNrIGZvciBSZXF1ZXN0IHVucmVnaXN0cmF0aW9uIGluIEprLCB0byByZW1vdmUKICAgICAgICAgICBleGNlcHRpb24gdW5kZXIgSkRLIDEuNS4gKGJpbGxiYXJrZXIpCiAgICAgIDwvZml4PgogICAgICA8Zml4PjxidWc+MzIyOTI8L2J1Zz46IERvbid0IHNlbmQga2VlcC1hbGl2ZSBoZWFkZXIgd2hlbiB0aGUgcHJvdG9jb2wKICAgICAgICAgICBjYW4ndCBiZSBwYXJzZWQuIChiaWxsYmFya2VyKQogICAgICA8L2ZpeD4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KCiAgPHN1YnNlY3Rpb24gbmFtZT0iSmFzcGVyIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgVXBkYXRlZCBKc3BDIHVzYWdlIG1lc3NhZ2VzIHRvIGluY2x1ZGUgcmVjZW50bHkgYWRkZWQgY29uZmlndXJhYmxlIHBhcmFtZXRlcnMuICh5b2F2cykKICAgICAgPC91cGRhdGU+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zMjMzMDwvYnVnPjogSnNwQyBjaGFuZ2VzIGNvbnRleHQgY2xhc3Nsb2FkZXIuICh5b2F2cykKICAgICAgPC9maXg+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+CgogIDxzdWJzZWN0aW9uIG5hbWU9IkNsdXN0ZXIiPgogICAgPGNoYW5nZWxvZz4KICAgICAgIDxhZGQ+CiAgICAgICAgICBKdm1Sb3V0ZUJpbmRlclZhbHZlL0p2bVJvdXRlU2Vzc2lvbklEQmluZGVyTGlzdGVuZXIgdG8gYmluZCBjbHVzdGVyIHNlc3Npb24gYWZ0ZXIgcHJpbWFyeSBub2RlIGZhaWx1cmUgYXQgZmlyc3QgY2FsbGluZyBiYWNrdXAgbm9kZS4KICAgICAgICAgIFRoaXMgd2FzIGFuIG9wdGlvbiB0byBoYXZlIHNlc3Npb24gc3RpY2t5bmVzcyBhZnRlciBjbHVzdGVyIG5vZGUgY3Jhc2hlZC4gV29yayBvbmx5IHdpdGggSkVTU0lPTklEIGNvb2tpZXMuIChwZXJvKQogICAgICAgPC9hZGQ+CiAgICAgICA8YWRkPgogICAgICAgICAgQmV0dGVyIGxvZyBzdXBwb3J0IHRvIERlbHRhTWFuYWdlciB0byBzZWUgZGV0YWlsIGluZm9ybWF0aW9uIGF0IGRlYnVnIGxldmVsLiAocGVybykKICAgICAgIDwvYWRkPgogICAgICAgPGZpeD4KICAgICAgICAgIEZpeCBGYXJtV2FyRGVwbG95ZXIgYmFzZWQgb24gbmV3IEhvc3RDb25maWcgZGVwbG95ZXIuIChwZXJvKQogICAgICAgPC9maXg+CiAgICAgICA8Zml4PgogICAgICAgICAgRmFybVdhckRlcGxveWVyIGNvbnRyb2xsZWQgV2FyV2F0Y2hlciB3aXRoIGVuZ2luZSBiYWNrZ3JvdW5kUHJvY2VzcyBjYWxsLgogICAgICAgICAgQWRkZWQgcHJvY2Vzc0RlcGxveUZyZXF1ZW5jeSBhdHRyaWJ1dGUgdG8gRGVwbG95ZXIgc2VydmVyLnhtbCBlbGVtZW50LiAocGVybykKICAgICAgIDwvZml4PgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgoKICA8c3Vic2VjdGlvbiBuYW1lPSJXZWJhcHBzIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgPGJ1Zz4zMjAxOTwvYnVnPjogUmVtb3ZlIG1heGxlbmd0aD02NCByZXN0cmljdGlvbiBvbiBlbnYgZW50cnkgdmFsdWVzIGluIGFkbWluIHdlYmFwcC4gKHlvYXZzKQogICAgICA8L3VwZGF0ZT4KICAgICAgPGZpeD4KICAgICAgICBGaXggdmFyaW91cyBwcm9ibGVtcyBpbiByZWFsbSBkb2NzLCBzdWJtaXR0ZWQgYnkgUGhpbCBNb2Nlay4gKHJlbW0pCiAgICAgIDwvZml4PgogICAgICA8dXBkYXRlPgogICAgICAgIEFkZCBsb2c0aiBkb2NzIHN1Ym1pdHRlZCBieSBBbGxpc3RhaXIgQ3Jvc3NsZXkuIChyZW1tKQogICAgICA8L3VwZGF0ZT4KICAgICAgPGZpeD48YnVnPjMyMzgxPC9idWc+OiBGaXggcHJvYmxlbSB3aGVyZSBFTCBleHByZXNzaW9uIGlzIHVzZWQgYXMgYQogICAgICAgIHBsYWNlIGhvbGRlciBpbiB0aGUgYWRtaW4gd2ViYXBwLgogICAgICAgIFN1Ym1pdHRlZCBieSBBbGxpc3RhaXIgQ3Jvc3NsZXkuIChiaWxsYmFya2VyKQogICAgICA8L2ZpeD4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KPC9zZWN0aW9uPgoKPHNlY3Rpb24gbmFtZT0iVG9tY2F0IDUuNS40ICh5b2F2cykiPgogIDxzdWJzZWN0aW9uIG5hbWU9IkdlbmVyYWwiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPHVwZGF0ZT4KICAgICAgICA8YnVnPjMxNjcxPC9idWc+OiBVcGRhdGUgd2ViLnhtbCBmaWxlcyB0byAyLjQgc2NoZW1hIHdoZXJlIGFwcGxpY2FibGUuICh5b2F2cykKICAgICAgPC91cGRhdGU+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgPGJ1Zz4zMTkxMjwvYnVnPjogQWRkIFBORyBhbmQgQ1NTIGZpbGUgdHlwZXMgdG8gcmVwbGljYXRpb24gZmlsdGVyIGRlZmF1bHQuICh5b2F2cykKICAgICAgPC91cGRhdGU+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+CgogIDxzdWJzZWN0aW9uIG5hbWU9IkNhdGFsaW5hIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDxmaXg+CiAgICAgICAgQWRkIHByb2Nlc3NFeHBpcmVzRnJlcXVlbmN5IHRvIFBlcnNpc3RlbnRNYW5hZ2VyQmFzZSBhbmQgbWFkZSBzb21lIHNtYWxsIEpEQkNTdG9yZSBvcHRpbWl6YXRpb25zIChwZXJvKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICBSZWdpc3RlciBKU1AgbW9uaXRvcmluZyBtYmVhbiBmb3IgZWFjaCBzZXJ2bGV0IHRoYXQgZGVjbGFyZXMgYSBqc3AtZmlsZSBpbiB3ZWIueG1sLiAobHVlaGUpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzE1Nzg8L2J1Zz46IFVwZGF0ZSBNYW5hZ2VyIGNvbmZpZ3VyYXRpb24gZG9jdW1lbnRhdGlvbi4gKHlvYXZzKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjMxMjczPC9idWc+OiBBZGQgc3VwcG9ydCBmb3IgZGVyZWZhbGlhc2VzIGluIEpORElSZWFsbS4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjMxNjIzPC9idWc+OiBCZXR0ZXIgT1M0MDAgc3VwcG9ydCBpbiBzZXRjbGFzc3BhdGguc2guICh5b2F2cykKICAgICAgPC9maXg+CiAgICAgIDxhZGQ+CiAgICAgICAgRXh0ZW5kIGJhY2tncm91bmQgcHJvY2Vzc2luZyB0byBtb3N0IGNvbnRhaW5lciBjb21wb25lbnRzLiAocmVtbSkKICAgICAgPC9hZGQ+CiAgICAgIDxmaXg+CiAgICAgICAgUmVtb3ZlIGFsbCBNWDRKIHJlbGF0ZWQgY29kZS4gKHJlbW0pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIFVwZGF0ZSBKQVIgbGlzdCBpbiBUbGRDb25maWcuIChyZW1tKQogICAgICA8L2ZpeD4KICAgICAgPGFkZD4KICAgICAgICBSZWdpc3RlciBkYXRhc291cmNlcyB3aXRoIEpNWC4gV2l0aCBEQkNQLCB0aGlzIGlzIGVub3VnaCB0byBwcm92aWRlIEpNWCBtYW5hZ2VtZW50IGFuZCBtb25pdG9yaW5nLgogICAgICAgIEl0IG1pZ2h0IHdvcmsgd2VsbCB3aXRoIG1hbnkgb3RoZXIgZGF0YSBzb3VyY2VzIHdoaWNoIG1pZ2h0IG5vdCByZWdpc3RlciB0aGVtc2VsdmVzIGluIEpNWAogICAgICAgIGJ1dCBkbyBleHBvc2UgdGhlaXIgc3R1ZmYgaW4gYSBqYXZhIGJlYW4gZmFzaGlvbi4gKHJlbW0pCiAgICAgIDwvYWRkPgogICAgICA8dXBkYXRlPgogICAgICAgIEFkZCB0aGUgYWJpbGl0eSB0byBmb3JjZSBzZXNzaW9uIGNvb2tpZXMgdG8gYmUgc2V0IHRvIHRoZSByb290IHBhdGggIi8iLiBUaGlzIHNob3VsZCBub3QgYmUgdXNlZAogICAgICAgIG9uIGxhcmdlIHNlcnZlcnMsIG90aGVyd2lzZSB0b25zIG9mIGNvb2tpZXMgbWF5IGJlIHNlbnQuIChyZW1tKQogICAgICA8L3VwZGF0ZT4KICAgICAgPGZpeD4KICAgICAgICBXb3JrYXJvdW5kIGZvciBjbGllbnQgc29ja2V0IGV4Y2VwdGlvbnMgb2NjdXJyaW5nIHdoaWxlIHJ1bm5pbmcgYSBDR0ksIHdoaWNoIGNvdWxkIGNhdXNlCiAgICAgICAgdGhlIGV4dGVybmFsIHByb2Nlc3MgdG8gaGFuZy4gKHJlbW0pCiAgICAgIDwvZml4PgogICAgICA8dXBkYXRlPgogICAgICAgIE9wdGltaXplIHNlc3Npb24gY29va2llIElEcyBjb252ZXJzaW9uIHRvIFN0cmluZywgc2luY2UgdGhpcyBpcyBhbiB1bmF2b2lkYWJsZSBhbmQgdW5jYWNoZWFibGUKICAgICAgICBvcGVyYXRpb24uIChyZW1tKQogICAgICA8L3VwZGF0ZT4KICAgICAgPGZpeD4KICAgICAgICBBZGQgZXhwbGljaXQgZXJyb3IgbWVzc2FnZSBpZiB0ZW1wIGRpciBkb2VzIG5vdCBleGlzdCwgYW5kIHJlbW92ZSB1c2VsZXNzIGNhbGxzIHRvIGluaXREaXJzLiAocmVtbSkKICAgICAgPC9maXg+CiAgICAgIDxhZGQ+CiAgICAgICAgQWRkIGFuIG9wdGltaXplZCBhY2Nlc3MgbG9nIHZhbHZlLCBzdXBwb3J0aW5nIGhhcmRjb2RlZCBzdXBwb3J0IGZvciB0aGUgY29tbW9uIGFuZCBjb21iaW5lZCBwYXR0ZXJucywKICAgICAgICBhbmQgZG9pbmcgYSBtYWpvcml0eSBvZiBpdHMgd3JpdGUtdG8tbG9nZmlsZSBvcGVyYXRpb25zIGFzeW5jaHJvbm91c2x5LiAocmVtbSkKICAgICAgPC9hZGQ+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgUmVnaXN0ZXIgYW4gTUJlYW4gdG8gbW9uaXRvciBhbmQgbWFuYWdlIHRoZSBTdHJpbmdDYWNoZSwgYW5kIGFsbG93IGludm9raW5nIHRoZSByZXNldCBvcGVyYXRpb24uIChyZW1tKQogICAgICA8L3VwZGF0ZT4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjMxNjc3PC9idWc+OiBMb2cgd2FybmluZyBpZiB3b3JrIGRpciBmb3IgY29udGV4dCBjYW4ndCBiZSBkZXRlcm1pbmVkLiAoeW9hdnMpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzE5MDM8L2J1Zz46IEZpeCBjb25kaXRpb24gd2hpY2ggc2VlbXMgdG8gbm90IGhhdmUgYmVlbiBwcm9wZXJseSB1cGRhdGVkIGFmdGVyIGFkZGluZwogICAgICAgIGVudHJ5LmJpbmFyeUNvbnRlbnQgPSBudWxsIGEgbGl0dGxlIGJlbG93LCBzdWJtaXR0ZWQgYnkgSm9lIFpob3UuIChyZW1tKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICBQcmV2ZW50IHNpbGVudCBOUEVzIGR1cmluZyBTdGFuZGFyZENvbnRleHQuc3RhcnQgZGVhbGluZyB3aXRoIEpNWCByZWdpc3RyYXRpb24gb2YgcmVhbG0sIHN1Ym1pdHRlZAogICAgICAgIGJ5IEtlaXRoIFdhbm5hbWFrZXIuIChyZW1tKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjMxNTkyPC9idWc+OiBTdXBwb3J0IG90aGVyIGVuY29kaW5ncyBmb3IgZGlnZXN0cy4gKHlvYXZzKQogICAgICA8L2ZpeD4KICAgICAgPHVwZGF0ZT4KICAgICAgICA8YnVnPjMxNzM5PC9idWc+OiBNaW5vciByZWFsbS1ob3d0byBhbmQgQUpQIGNvbm5lY3RvciBkb2MgdXBkYXRlcy4gKHlvYXZzKQogICAgICA8L3VwZGF0ZT4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjMxNzUzPC9idWc+OiBNaW5vciBpbmNvbnNpc3RlbmN5IGJldHdlZW4gSkRCQyBhbmQgRGF0YVNvdXJjZVJlYWxtI2F1dGhlbnRpY2F0ZS4gKHlvYXZzKQogICAgICA8L2ZpeD4KICAgICAgPHVwZGF0ZT4KICAgICAgICA8YnVnPjMxNjgzPC9idWc+OiBNaW5vciBjbGFyaWZpY2F0aW9ucyB0byByZWFsbSBkb2N1bWVudGF0aW9uLiAoeW9hdnMpCiAgICAgIDwvdXBkYXRlPgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgoKICA8c3Vic2VjdGlvbiBuYW1lPSJDb3lvdGUiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPGZpeD4KICAgICAgICBJbXByb3ZlIGkxOG4gaW4gVENQIGVuZHBvaW50LCBhbmQgYWRkIGEgYmV0dGVyIGVycm9yIG1lc3NhZ2Ugd2hlbiBhbiBleGNlcHRpb24gb2NjdXJzCiAgICAgICAgaW4gc2V0U29ja2V0T3B0aW9ucy4gKHJlbW0pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzE2NjM8L2J1Zz46IFVzZSBpbnRlcnZhbCBmaWVsZCBhcyB0aGUgZGVsYXkgZm9yIG1vbml0b3IgdGhyZWFkLiAocmVtbSkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgUmVtb3ZlIGJhZCBzaHV0ZG93biBsb2dpYyBmb3IgbXMgcG9vbCBzdHJhdGVneS4gKHJlbW0pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIFN5bmMgd2l0aCBDb29raWUsIGJ5IGFkZGluZyAnICcgYXMgYSBzcGVjaWFsIGNoYXIuIElmIGEgc3BlY2lhbCBjaGFyIGlzIHByZXNlbnQsCiAgICAgICAgdGhlIHN0cmluZyB3aWxsIGJlIHF1b3RlZC4gSWYgdGhlIGNsaWVudCBkb2Vzbid0IHN1cHBvcnQgaXQsIHRoZSBTdHJpbmcgd2lsbCBubyBiZSBxdW90ZWQgYW55d2F5CiAgICAgICAgYW5kIG5vIElBRSB3aWxsIGJlIHRocm93bi4gKHJlbW0pCiAgICAgIDwvZml4PgogICAgICA8YWRkPgogICAgICAgIEFkZCBhbiBvcHRpb25hbCBTdHJpbmcgY2FjaGUgZm9yIEJ5dGVDaHVuay50b1N0cmluZyBhbmQgQ2hhckNodW5rLnRvU3RyaW5nLiBUaGUgY2FjaGUgaXMKICAgICAgICB1bnN5bmNocm9uaXplZCBkdXJpbmcgbW9zdCBvZiBpdHMgb3BlcmF0aW9uLCBhbmQgaXMgc3RhdGljIGFmdGVyIGEgdHJhaW5pbmcgcGVyaW9kLiBBbiBvcGVyYXRpb24KICAgICAgICBpcyBwcm92aWRlZCB0byBhbGxvdyByZXNldHRpbmcgdGhlIGNhY2hlLiAocmVtbSkKICAgICAgPC9hZGQ+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgU3RyaW5nIGNhY2hpbmcgaXMgZW5hYmxlZCBieSBkZWZhdWx0IGZvciBCeXRlQ2h1bmsuIChyZW1tKQogICAgICA8L3VwZGF0ZT4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjMxMDkwPC9idWc+OiBVc2UgYSBVUkwgZW5jb2RlZCBwYXRoIHdoZW4gc2V0dGluZyBzZXNzaW9uIGNvb2tpZXMuIChyZW1tKQogICAgICA8L2ZpeD4KICAgICAgIDxhZGQ+CiAgICAgICAgICBBZGQgZ2V0QXR0cmlidXRlTmFtZSgpIHRvIFByb3RvY29sSGFuZGxlciB0byBnZXQgYWxsIGF0dHJpYnV0ZXMgYXQgcnVudGltZSAocGVybykKICAgICAgIDwvYWRkPgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgoKICA8c3Vic2VjdGlvbiBuYW1lPSJKYXNwZXIiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPHVwZGF0ZT4KICAgICAgICBFeHBvc2VkIGNvbXBpbGVyU291cmNlVk0gYW5kIGNvbXBpbGVyVGFyZ2V0Vk0gb3B0aW9ucyB0byBKc3BDLiAoeW9hdnMpCiAgICAgIDwvdXBkYXRlPgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgoKICA8c3Vic2VjdGlvbiBuYW1lPSJDbHVzdGVyIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgICA8Zml4PgogICAgICAgICAgRGVsdGFNYW5hZ2VyIGFuZCBTaW1wbGVUY3BSZXBsaWNhdGlvbk1hbmFnZXIgZ2VuZXJhdGUgZG91YmxlIGp2bVJvdXRlIChwZXJvKQogICAgICAgPC9maXg+CiAgICAgICA8YWRkPgogICAgICAgICAgQWRkIHNvbWUgbWlzc2luZyBHZXR0ZXJzIGFuZCBsb2cuaXNYWFhFbmFibGVkcyAocGVybykKICAgICAgIDwvYWRkPgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgoKICA8c3Vic2VjdGlvbiBuYW1lPSJXZWJhcHBzIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zMTcwNzwvYnVnPjogQnJva2VuIEphdmFTY3JpcHQgY29uZmlybWF0aW9uIGluIEhUTUwgbWFuYWdlci4gKHlvYXZzKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICBSZW1vdmUgaGFyZC1jb2RlZCBhZG1pbiBjb250ZXh0IHBhdGggZnJvbSBhZG1pbidzIGJhbm5lci5qc3AuICh5b2F2cykKICAgICAgPC9maXg+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgTWFqb3IgY29ubmVjdG9yIGRvY3MgdXBkYXRlLiAocmVtbSkKICAgICAgPC91cGRhdGU+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zMTczMjwvYnVnPjogRml4IEphcGFuZXNlIGxvY2FsaXphdGlvbiBvZiBNYW5hZ2VyJ3MgbGlzdCBvdXRwdXQuICh5b2F2cykKICAgICAgPC9maXg+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+Cgo8L3NlY3Rpb24+Cgo8c2VjdGlvbiBuYW1lPSJUb21jYXQgNS41LjMgKHlvYXZzKSI+CgogIDxzdWJzZWN0aW9uIG5hbWU9IkdlbmVyYWwiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjMwNTY4PC9idWc+OiBJbmNvbXBsZXRlIHNldHVwLmh0bWwgZG9jdW1lbnRhdGlvbiBmb3IgbGF1bmNoaW5nIGpzdmMuICh5b2F2cykKICAgICAgPC9maXg+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgUmVwYWNrYWdlIG5hbWluZyBmZWF0dXJlcy4gKHJlbW0pCiAgICAgIDwvdXBkYXRlPgogICAgICA8Zml4PgogICAgICAgIEZpeCBkZXBsb3llciBwYWNrYWdpbmcuIChyZW1tKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICBGaXggZW1iZWQgcGFja2FnaW5nLiAocmVtbSkKICAgICAgPC9maXg+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+CgogIDxzdWJzZWN0aW9uIG5hbWU9IkNhdGFsaW5hIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDxmaXg+CiAgICAgICAgRml4IG1lbW9yeSBsZWFrIHdoZW4gU2VjdXJpdHkgTWFuYWdlciBpcyB0dXJuZWQgb24uIChqZmFyY2FuZCkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgV2hlbiBjaGVja2luZyBzdGF0dXMgY29kZXMgZm9yIGVycm9yIGhhbmRsaW5nLCBvbmx5IGNoZWNrIGlmCiAgICAgICAgUmVzcG9uc2UuaXNFcnJvcigpIGlzIHRydWUuIFRoaXMgd2F5LCB1c2VycyBtYXkgdXNlIHNldFN0YXR1cygpIHRvIHNldCB0aGVpciBvd24KICAgICAgICBlcnJvciBzdGF0dXMgd2l0aG91dCBoYXZpbmcgdGhlIGVycm9yIHBhZ2UgaW52b2tlZC4gKGluIHdoaWNoIGNhc2UsIHRoZSB1c2VyIHNob3VsZCd2ZQogICAgICAgIHVzZSBzZW5kRXJyb3IoKSkgKGZ1bmttYW4pCiAgICAgIDwvZml4PgogICAgICA8dXBkYXRlPgogICAgICAgIFJlbW92ZSBEaWdlc3RlciBjb2RlIGZvciBYZXJjZXMgd29ya2Fyb3VuZC4gKGpmYXJjYW5kKQogICAgICA8L3VwZGF0ZT4KICAgICAgPGZpeD4KICAgICAgICBHaXZlIHByb3BlciBwZXJtaXNzaW9uIHRvIHRoZSBiYWxhbmNlciBhcHAgd2hlbiBydW5uaW5nIHVuZGVyIHRoZSBzZWN1cml0eSBtYW5hZ2VyLiAoamZhcmNhbmQpCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIDxidWc+MzA4Njk8L2J1Zz46IE1ha2Ugc3VyZSBKQUFTIHJlYWxtIG5hbWUgaXMgbGVnYWwuICh5b2F2cykKICAgICAgPC9maXg+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgICBtZDVIZWxwZXIsIG1kNUVuY29kZXIsIGFuZCBub3JtYWxpemUgYXJlIHVzZWQgYnkgV2ViZGF2U2VydmxldCwKICAgICAgICAgIG5vdCBEZWZhdWx0U2VydmVsdCBzbyBtb3ZlIHRoZW0gaW50byBXZWJkYXZTZXJ2bGV0LgogICAgICA8L3VwZGF0ZT4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjMxMjc3PC9idWc+OiBDbGFyaWZpZWQgYXV0b21hdGljIGFwcGxpY2F0aW9uIGRlcGxveW1lbnQgc2VjdGlvbiBvZiBIb3N0IGNvbmZpZ3VyYXRpb24gcGFnZS4gKHlvYXZzKQogICAgICA8L2ZpeD4KICAgICA8Zml4PgogICAgICAgPGJ1Zz4yODYzMTwvYnVnPjogSkFBU1JlYWxtIGVuaGFuY2VtZW50cyB0byBzdXBwb3J0IGN1c3RvbSB1c2VyIGFuZCByb2xlIGNsYXNzZXMgIHVzZSBDb21tb25zLUxvZ2dpbmcuICh5b2F2cykKICAgICA8L2ZpeD4KICAgICA8Zml4PgogICAgICAgPGJ1Zz4zMTM2NDwvYnVnPjogTWlzc2luZyByZXNvdXJjZSBpbiBvcmcuYXBhY2hlLmNhdGFsaW5hLmNvcmUuTG9jYWxTdHJpbmcucHJvcGVydGllcy4gKHlvYXZzKQogICAgIDwvZml4PgogICAgIDxmaXg+CiAgICAgICA8YnVnPjMxMzYyPC9idWc+OiBNaXNzaW5nIC1YZGVidWcgaW4gY2F0YWxpbmEuYmF0IHdoZW4gbGF1bmNoaW5nIHdpdGggSlBEQSBhbmQgU2VjdXJpdHkuICh5b2F2cykKICAgICA8L2ZpeD4KICAgICA8Zml4PgogICAgICAgPGJ1Zz4zMTM1NjwvYnVnPjogRHVwbGljYXRlcyBub3QgY291bnRlZCBpbiBzZXNzaW9uIGdlbmVyYXRpb24uICh5b2F2cykKICAgICA8L2ZpeD4KICAgICA8Zml4PgogICAgICAgPGJ1Zz4zMDk0OTwvYnVnPjogTWFrZSBzdXJlIEFwcGxpY2F0aW9uRGlzcGF0Y2hlciB1bndyYXBzIHJlcXVlc3QvcmVzcG9uc2UgZXZlbiBpZiBpbmNsdWRlIGVycm9yIG9jY3Vycy4gKHlvYXZzKQogICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIEZpeGVkIFN0YW5kYXJkQ29udGV4dC5nZXRTdGFydFRpbWUoKSB0byByZXR1cm4gYWN0dWFsIHN0YXJ0IHRpbWUvZGF0ZSBpbnN0ZWFkIG9mIHRpbWUgKHN0YXJ0dXBUaW1lKSBpdCB0b29rIHRvIHN0YXJ0IGNvbnRleHQuIChsdWVoZSkKICAgICAgPC9maXg+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgZ2V0UmVxdWVzdC9nZXRSZXNwb25zZSBzaG91bGQgcmV0dXJuIHRoZSBtb3N0IHJlbGV2YW50IGludGVyZmFjZSwgdG8gYXZvaWQgY2FzdHMuIChyZW1tKQogICAgICA8L3VwZGF0ZT4KICAgICAgPHVwZGF0ZT4KICAgICAgICBBZGQgY2hlY2sgZm9yIGRpcmVjdG9yeSBiZWZvcmUgY29uc2lkZXJpbmcgc29tZXRoaW5nIGlzIGEgY29tcHJlc3NlZCBXQVIuIChyZW1tKQogICAgICA8L3VwZGF0ZT4KICAgICAgPGRvY3M+CiAgICAgICAgVXBkYXRlIHRoZSBjb25uZWN0b3IgZG9jdW1lbnRhdGlvbi4gKHJlbW0pCiAgICAgIDwvZG9jcz4KICAgICAgPGZpeD4KICAgICAgICBXaGVuIHBhcnNpbmcgYSBjb250ZXh0IGZpbGUsIGlnbm9yZSB0aGUgInBhdGgiIGF0dHJpYnV0ZToKICAgICAgICB0aGUgb25seSBwbGFjZSB3aGVyZSBpdCBpcyBhY2NlcHRhYmxlIGlzIGluIHNlcnZlci54bWwuIChyZW1tKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICBEaWdlc3RlciBoYW5kbGluZyBmaXhlczogYWx3YXlzIGNhbGwgcmVzZXQgaW4gYSBmaW5hbGx5IGJsb2NrIGFmdGVyIHVzaW5nIGEgZGlnZXN0ZXIuIChyZW1tKQogICAgICA8L2ZpeD4KICAgICAgPHVwZGF0ZT4KICAgICAgICBSZW1vdmUgbWFueSBmaWVsZHMgZnJvbSBDb25uZWN0b3IsIGFuZCB0aWUgdGhlIGNyZWF0aW9uIG9mIHRoZSBDb25uZWN0b3IgdG8gdGhlCiAgICAgICAgY3JlYXRpb24gb2YgdGhlIHByb3RvY29sIGhhbmRsZXIuIChyZW1tKQogICAgICA8L3VwZGF0ZT4KICAgICAgPHVwZGF0ZT4KICAgICAgICBSZW1vdmUgcGFja2FnZSB0cmlnZ2VycyBmcm9tIHRoZSBjbGFzc2xvYWRlciwgd2hpY2ggc2VlbSB1c2VsZXNzIHdoZW4gdXNpbmcgSmF2YSA1LiAocmVtbSkKICAgICAgPC91cGRhdGU+CiAgICAgIDxmaXg+CiAgICAgICAgUmVhbG1zIHdpbGwgbm93IHVzZSBzZXQgYXR0cmlidXRlIHRvIHNldCB0aGVtc2VsdmVzIGluIHRoZWlyIGNvbnRhaW5lciB3aGVuIHVzaW5nIEpNWC4gKHJlbW0pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIEZpeCBKTVggcmVsYXRlZCBvcGVyYXRpb25zIHdpdGggdGhlIENvbm5lY3Rvci4gKHJlbW0pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIEZpeCBzYXZlLXRvLVhNTCBmb3IgbmFtaW5nIHJlc291cmNlcy4gKHJlbW0pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIFJlbW92ZSBhdXRoZW50aWNhdG9yICJkZWJ1ZyIgYXR0cmlidXRlcyBmcm9tIHRoZSBkZXNjcmlwdG9ycy4gKHJlbW0pCiAgICAgIDwvZml4PgogICAgICA8dXBkYXRlPgogICAgICAgIFJlZmFjdG9yIG9yZy5hcGFjaGUuY2F0YWxpbmEuZGVwbG95LkNvbnRleHRYWFggdG8gdXNlIG5ldyBzdXBlciBjbGFzcyBSZXNvdXJjZUJhc2UuIChwZXJvKQogICAgICA8L3VwZGF0ZT4KICAgICAgPGZpeD4KICAgICAgICBFbmFibGUgQ29ubmVjdG9yLmZpbmRMaWZlY3ljbGVMaXN0ZW5lciB0aGF0IHdlIGNhbiBsaXN0ZW4gc3RhcnQvc3RvcCBDb25uZWN0b3IgZXZlbnRzIGFuZCBzYXZlIHRoZSBsaXN0ZW5lciB0byB4bWwuIChwZXJvKQogICAgICA8L2ZpeD4KICAgICAgPHVwZGF0ZT4KICAgICAgICBSZW1vdmUgV2F0Y2hkb2cgcmVmZXJlbmNlcywgYXMgaXQgaXMgbm8gbG9uZ2VyIHVzZWQuICh5b2F2cykKICAgICAgPC91cGRhdGU+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zMTUxMTwvYnVnPjogRG9uJ3QgY2FsbCBzZXRlbnYuYmF0IGlmIG5vdCBmb3VuZCwgaW4gKnVzaW5nLWxhdW5jaGVyIHNjcmlwdHMuICh5b2F2cykKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zMTU0OTwvYnVnPjogQWRkIG5hbWUgdG8gV2ViYXBwQ2xhc3NMb2FkZXIncyBzdG9wcGVkIG1lc3NhZ2UuICh5b2F2cykKICAgICAgPC9maXg+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+CgogIDxzdWJzZWN0aW9uIG5hbWU9IkNveW90ZSI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8dXBkYXRlPgogICAgICAgIEFsbG93IGN1c3RvbWl6ZWQgc2VydmVyIGhlYWRlciBmb3IgU3RhbmRhbG9uZS4gKGZ1bmttYW4pCiAgICAgIDwvdXBkYXRlPgogICAgICA8Zml4PgogICAgICAgIERpZ2VzdGVyLnJlc2V0IG5vdyByZW1vdmVzIHRoZSBlcnJvciBoYW5kbGVyLCB0aGUgcm9vdCBhbmQgY2FsbHMgY2xlYXIsIHRvIHByZXZlbnQKICAgICAgICBhbnkgbWVtb3J5IGxlYWsuIChyZW1tKQogICAgICA8L2ZpeD4KICAgICAgPHVwZGF0ZT4KICAgICAgICBSZW1vdmUgdXNlbGVzcyBzdHVmZiBpbiBkaWdlc3Rlci4gKHJlbW0pCiAgICAgIDwvdXBkYXRlPgogICAgICA8dXBkYXRlPgogICAgICAgIEluIEhUVFAsIGFkZCBhIHV0aWxpdHkgbWV0aG9kIHRvIGNvbnZlcnQgc3RyaW5ncyB0byBieXRlIGFycmF5cywgYW5kIG91dHB1dCB0aGUgc2VydmVyIGhlYWRlcgogICAgICAgIGRpcmVjdGx5IGFzIGJ5dGVzLiAocmVtbSkKICAgICAgPC91cGRhdGU+CiAgICAgIDxhZGQ+CiAgICAgICAgQWRkIGEgbWFzdGVyIHNsYXZlIHRocmVhZCBwb29sIGJhc2VkIG9uIHRoZSBjb2RlIGZyb20gVG9tY2F0IDQuMC4gSXQgaXMgbGVzcyBleG90aWMgdGhhbiB0aGUKICAgICAgICBkZWZhdWx0IG9uZSwgYW5kIG1pZ2h0IGZhcmUgYmV0dGVyIG9uIHNvbWUgcGlja3kgc3lzdGVtcywgc3VjaCBhcyBSZWRoYXQgOS4gVGhlIHR3byB0aHJlYWRwb29scwogICAgICAgIHdpbGwgbGlrZWx5IGJlIHJlbW92ZWQgb25jZSB3ZSB1c2UgdGhlIEphdmEgNSBBUEksIGFsdGhvdWdoIG1vcmUgaW52ZXN0aWdhdGlvbiBpcyBuZWVkZWQuIChyZW1tKQogICAgICA8L2FkZD4KICAgICAgPGZpeD4KICAgICAgICBGaXggaXNzdWUgd2l0aCBnZXRQcm9wZXJ0eSBpbiBJbnRyb3NwZWN0aW9uVXRpbHMuIChyZW1tKQogICAgICA8L2ZpeD4KICAgICAgPHVwZGF0ZT4KICAgICAgICBSZW1vdmUgYXR0cmlidXRlIHRyYW5zbGF0aW9uIGZvciBTU0wgaW4gdGhlIEhUVFAgcHJvdG9jb2wgaGFuZGxlcjogaXQgd2lsbCBub3cgYmUgZG9uZSBpbiB0aGUKICAgICAgICBDYXRhbGluYSBDb25uZWN0b3IgY2xhc3MuIChyZW1tKQogICAgICA8L3VwZGF0ZT4KICAgICAgPGZpeD4KICAgICAgICBGaXggaGFuZGxpbmcgb2YgdGhlICJ0aW1lb3V0IiBhdHRyaWJ1dGUgb2YgdGhlIEhUVFAgcHJvdG9jb2wgaGFuZGxlci4gKHJlbW0pCiAgICAgIDwvZml4PgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgoKICA8c3Vic2VjdGlvbiBuYW1lPSJKYXNwZXIiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjMxMTcxPC9idWc+OiBXcmFwIHRvIGF2b2lkIENsYXNzQ2FzdEV4Y2VwdGlvbiBpbiBQYWdlQ29udGV4dEltcGwuICh5b2F2cykKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zMTI1NzwvYnVnPjogQWRkZWQgc3BlY2lmaWNhdGlvbiBvZiBlbmRvcnNlZCBkaXJzIGlmIGZvcmtpbmcuICBOb3RlIHRoYXQgdGhpcyBpcyBmYWlybHkgdXNlbGVzcyBmb3Igbm93IGluIDUuNSBzaW5jZSBpdCB1c2VzIEpEVCBhbmQgbm90IGphdmFjIGJ5IGRlZmF1bHQuICh5b2F2cykKICAgICAgPC9maXg+CiAgICAgIDxkb2NzPgogICAgICAgIERvY3VtZW50IG5ldyBKYXNwZXIgZGVmYXVsdHMsIGFuZCB1cGRhdGUgdGhlIHByb2R1Y3Rpb24gY29uZmlndXJhdGlvbi4gKHJlbW0pCiAgICAgIDwvZG9jcz4KICAgICAgPGZpeD4KICAgICAgICBDb3BpZWQgWE1MIGVuY29kaW5nIGRldGVjdGlvbiBsb2dpYyBpbnRvIEpBU1BFUiwgc28gd2UncmUgbm8gbG9uZ2VyIGRlcGVuZGVudCBvbiBYZXJjZXMuIChsdWVoZSkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgRml4IGNvc21ldGljIGlzc3VlIHdoZXJlIGV4dHJhIENSTEYgd291bGQgYmUgaW5zZXJ0ZWQgZHVyaW5nIGVhY2ggcHJlY29tcGlsYXRpb24gaW4gd2ViLnhtbC4gKHJlbW0pCiAgICAgIDwvZml4PgogICAgICA8dXBkYXRlPgogICAgICAgIEFsbG93IGNvbmZpZ3VyaW5nIHRoZSBpbnRlcnZhbCBmb2xsb3dpbmcgYSBjb21waWxhdGlvbiBkdXJpbmcgd2hpY2ggYSBKU1Agd2lsbCBub3QgYmUgY2hlY2tlZAogICAgICAgIGZvciBtb2RpZmljYXRpb25zLiAocmVtbSkKICAgICAgPC91cGRhdGU+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zMTQ2NTwvYnVnPjogRW5zdXJlIHRoYXQgdGhlIGNvbXBpbGVyIHJlYWRzIHRoZSAuamF2YSBmaWxlIHVzaW5nIHRoZSBzYW1lIGVuY29kaW5nIGFzIHRoYXQgd2l0aCB3aGljaCBpdCB3YXMgd3JpdHRlbi4gKG1hcmt0KQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjMxNTEwPC9idWc+OiBOdWxsIG91dCByZXNwb25zZSBpbiBKc3BXcml0ZXJJbXBsI3JlY3ljbGUgdG8gYWlkIGluIEpCb3NzIG1lbW9yeSBsZWFrLiAoeW9hdnMpCiAgICAgIDwvZml4PgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgoKICA8c3Vic2VjdGlvbiBuYW1lPSJDbHVzdGVyIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgQWRkZWQgZmxhZyB0byB0aGUgY2x1c3RlciAobm90aWZ5TGlzdGVuZXJzT25SZXBsaWNhdGlvbikgdG8gZW5hYmxlL2Rpc2FibGUgdGhlCiAgICAgICAgbm90aWZpY2F0aW9ucyBvZiBhdHRyaWJ1dGUvY29udGV4dCBsaXN0ZW5lcnMgdXBvbiByZXBsaWNhdGlvbiBvZiBhIHNlc3Npb24gZGVsdGEKICAgICAgICBXb3JrcyBvbmx5IHdpdGggdGhlIERlbHRhTWFuYWdlciAoZmhhbmlrKQogICAgICA8L3VwZGF0ZT4KICAgICAgPHVwZGF0ZT4KICAgICAgICBBZGRlZCBmbGFnIHRvIHRoZSBjbHVzdGVyIChDbHVzdGVyL1NlbmRlci9hY2tUaW1lb3V0KSB0byBzZXQgdGhlIHRpbWVvdXQgaW4gbWlsbGlzZWNvbmRzCiAgICAgICAgZm9yIGEgc3luY2hyb25vdXMgcmVxdWVzdCB0byBnbyB0aHJvdWdoLCBkZWZhdWx0cyB0byAxNTAwMG1zIChmaGFuaWspCiAgICAgIDwvdXBkYXRlPgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgoKICA8c3Vic2VjdGlvbiBuYW1lPSJXZWJhcHBzIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4yOTQ4NTwvYnVnPjogSSBicm9rZSB0aGUgSFRNTCBtYW5hZ2VyIHdoZW4gYWRkaW5nIEphdmFTY3JpcHQgY29uZmlybWF0aW9uLCBmaXhlZCBub3cgOykgKHlvYXZzKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjMxMDU4PC9idWc+OiBFbnN1cmUgU3RhdHVzVHJhbnNmb3JtZXIgZXNjYXBlcyBxdWVyeSBzdHJpbmcgZm9yIFhNTC4gKHlvYXZzKQogICAgICA8L2ZpeD4KICAgICAgPHVwZGF0ZT4KICAgICAgICBBZGRlZCBjb250ZXh0cycgc3RhcnQgdGltZSAoYXZhaWxhYmxlIGZyb20gJ3N0YXJ0VGltZScgTUJlYW4gYXR0cmlidXRlIG9mIFN0YW5kYXJkQ29udGV4dCkgdG8gc3RhdHVzIHBhZ2UgKGx1ZWhlKQogICAgICA8L3VwZGF0ZT4KICAgICAgPGZpeD4KICAgICAgICA8YnVnPjMxMjY0PC9idWc+OiB0aGUgZGVwbG95IHRhc2sgc2hvdWxkIG5vdyBiZWhhdmUgY29ycmVjdGx5LiAocmVtbSkKICAgICAgPC9maXg+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgUmVmYWN0b3IgdGhlIG1hbmFnZXIgc2VydmxldCB0byBtYWtlIGNhbGxzIHRvIHRoZSBkZXBsb3llciBtb3JlIHJvYnVzdC4gKHJlbW0pCiAgICAgIDwvdXBkYXRlPgogICAgICA8Zml4PgogICAgICAgIFVzZSB0aGUgbW9yZSByb2J1c3QgU3RyaW5nLnZhbHVlT2YgaW4gdGhlIGZvcm0gZWRpdCBhY3Rpb24gb2YgdGhlIGNvbm5lY3Rvci4gKHJlbW0pCiAgICAgIDwvZml4PgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgo8L3NlY3Rpb24+CgoKPHNlY3Rpb24gbmFtZT0iVG9tY2F0IDUuNS4yICh5b2F2cykiPgogIDxzdWJzZWN0aW9uIG5hbWU9IkdlbmVyYWwiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPGZpeD4KICAgICAgICBUaGUgaW5zdGFsbGVyIHdpbGwgbm93IHVzZSB0aGUgc3lzdGVtJ3MgSlJFLiAocmVtbSkKICAgICAgPC9maXg+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+CgogIDxzdWJzZWN0aW9uIG5hbWU9IkNhdGFsaW5hIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDxmaXg+CiAgICAgICAgRml4IFVSTCBnZW5lcmF0aW9uIGZvciBjbGFzc2xvYWRlcnMgb24gV2luZG93cywgY2F1c2luZyBjb21tb24vY2xhc3NlcyBhbmQgc2hhcmVkL2NsYXNzZXMKICAgICAgICB0byBiZSB1bnVzYWJsZSAocmVtbSkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zMTExMDwvYnVnPjogRml4IHJlc291cmNlIHBhY2thZ2luZyBidWcgZm9yIHNlcnZsZXRzIChyZW1tKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICBGaXggNS41IHJlZ3Jlc3Npb24gd2hlcmUgZ29pbmcgdGhyb3VnaCB0aGUgYXV0aGVudGljYXRvciB3b3VsZCBjcmVhdGUgYSBzZXNzaW9uIGVhY2ggdGltZS4gKHJlbW0pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIEZpeCBjbGFzc25hbWUgb2YgdGhlIGNvbm5lY3RvciBpbiBFbWJlZGRlZCwgYW5kIHJlbW92ZSB0aGUgc29ja2V0IGZhY3RvcnkuIChyZW1tKQogICAgICA8L2ZpeD4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KCiAgPHN1YnNlY3Rpb24gbmFtZT0iQ295b3RlIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDxmaXg+CiAgICAgICAgUmVkbyBzZXJ2ZXIgaGVhZGVyIGhhbmRsaW5nIGFnYWluLiAocmVtbSkKICAgICAgPC9maXg+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgQ2xlYW51cCBhIGxpdHRsZSBhY2Nlc3MgdG8gdGhlIGhlYWRlcnMgdXNpbmcgYSBsb2NhbCB2YXJpYWJsZSBhbmQKICAgICAgICB1c2Ugc2V0VmFsdWUgZm9yIFNlcnZlciBhbmQgRGF0ZSBoZWFkZXJzLiAocmVtbSkKICAgICAgPC91cGRhdGU+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+CgogIDxzdWJzZWN0aW9uIG5hbWU9Ikphc3BlciI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8Zml4PgogICAgICAgIFJlbW92ZSBtYXhUYWdOZXN0aW5nIGFuZCBjdXJUYWdOZXN0aW5nIHNpbmNlIHRoZXkgYXJlIHVudXNlZC4gKGZ1bmttYW4pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIEZpeCB0YWcgZmlsZXMgaGFuZGxpbmcgd2l0aCBKRFQsIHdoaWNoIHdlcmUgdXN1c2FibGUsIGFuZCByZWZhY3RvciB0aGUgbGlmZWN5Y2xlIGhhbmRsaW5nIG9mCiAgICAgICAgdGhlIHBhZ2UgbG9hZGVyLiAocmVtbSkKICAgICAgPC9maXg+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+CgogIDxzdWJzZWN0aW9uIG5hbWU9IkNsdXN0ZXIiPgogICAgPGNoYW5nZWxvZz4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KCiAgPHN1YnNlY3Rpb24gbmFtZT0iV2ViYXBwcyI+CiAgICA8Y2hhbmdlbG9nPgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgo8L3NlY3Rpb24+Cgo8c2VjdGlvbiBuYW1lPSJUb21jYXQgNS41LjEgKHlvYXZzKSI+CiAgPHN1YnNlY3Rpb24gbmFtZT0iR2VuZXJhbCI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8dXBkYXRlPgogICAgICAgIFRvbWNhdCA1LjUgY2FuIGJlIGJ1aWx0IG9uIEpESyA1LjAuICh5b2F2cykKICAgICAgPC91cGRhdGU+CiAgICAgIDxmaXg+CiAgICAgICAgV2luZG93cyBpbnN0YWxsZXIgcG9saXNoLiAobWxhZGVuLCByZW1tKQogICAgICA8L2ZpeD4KICAgICAgPHVwZGF0ZT4KICAgICAgICBSZW1vdmUgZGVwZW5kZW5jeSBvbiBKYWthcnRhIHJlZ2V4cC4gKHJlbW0pCiAgICAgIDwvdXBkYXRlPgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgoKICA8c3Vic2VjdGlvbiBuYW1lPSJDYXRhbGluYSI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8Zml4PgogICAgICAgIEFsbG93IG92ZXJyaWRpbmcgdGhlIGxvY2F0aW9uIG9mIHRoZSBkZWZhdWx0IGNvbnRleHQgZmlsZSwgc2ltaWxhciB0byB0aGUgZGVmYXVsdAogICAgICAgIHdlYi54bWwuIChyZW1tKQogICAgICA8L2ZpeD4KICAgICAgPHVwZGF0ZT4KICAgICAgICBCYWNrcG9ydCBpZi1lbHNlIGxvZ2ljIGZvciBTU0kgc2VydmxldCBmcm9tIDQuMSAoZnVua21hbikKICAgICAgPC91cGRhdGU+CiAgICAgIDxmaXg+CiAgICAgICAgUmVtb3ZlIERlZmF1bHRDb250ZXh0IGVsZW1lbnRzIGZyb20gdGhlIGRpZ2VzdGVyIHJ1bGVzLiAocmVtbSkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgRml4IFJlc291cmNlTGluayBoYW5kbGluZy4gKHJlbW0pCiAgICAgIDwvZml4PgogICAgICA8Zml4PgogICAgICAgIE1vZGlmeSB0aGUgYXV0byBkZXBsb3llciB0byBnZXQgYWxvbmcgd2l0aCBjb250ZXh0cyB3aGljaCBhcmUgc3RhdGljYWxseSBkZWZpbmVkIGluIHNlcnZlci54bWwuIChyZW1tKQogICAgICA8L2ZpeD4KICAgICAgPGZpeD4KICAgICAgICBFeHRlcm5hbGl6ZSBjb25zdGFudCBzdHJpbmdzIGRlZmluaW5nIHRoZSBsb2NhdGlvbiBvZiBkZXBsb3ltZW50IHJlbGF0ZWQgcmVzb3VyY2VzLiAocmVtbSkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zMTA1MjwvYnVnPjogQmVhbkZhY3Rvcnkgc3dhbGxvd3Mgcm9vdCBjYXVzZSBvZiBleGNlcHRpb24uICh5b2F2cykKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgQWxsb3cgdXNpbmcgZGVwbG95IEFudCB0YXNrIHdpdGgganVzdCBjb25maWcgYXR0cmlidXRlLCBzdWJtaXR0ZWQgYnkgTWljaGFlbCBTY2h1ZXJpZy4gKHJlbW0pCiAgICAgIDwvZml4PgogICAgICA8YWRkPgogICAgICAgIEFkZGVkIGxvbmdlc3QgdGltZSBhbiBleHBpcmVkIHNlc3Npb24gaGFkIGJlZW4gYWxpdmUgdG8gc2V0IG9mIG1vbml0b3JhYmxlIHNlc3Npb24gbWFuYWdlciBhdHRyaWJ1dGVzLiAobHVlaGUpCiAgICAgIDwvYWRkPgogICAgICA8YWRkPgogICAgICAgIEFkZGVkIGF2ZXJhZ2UgdGltZSBhbiBleHBpcmVkIHNlc3Npb24gaGFkIGJlZW4gYWxpdmUgdG8gc2V0IG9mIG1vbml0b3JhYmxlIHNlc3Npb24gbWFuYWdlciBhdHRyaWJ1dGVzLiAobHVlaGUpCiAgICAgIDwvYWRkPgogICAgICA8Zml4PgogICAgICAgIENsZWFyIGEgcmVmZXJlbmNlIGluIHRoZSBkaWdlc3RlciB3aGVyZSBhIGNvbnRleHQgd291bGQgYmUgcmVmZXJlbmNlZCBmb3IgbW9yZSB0aW1lIHRoYW4gaXQKICAgICAgICBuZWVkZWQsIHVudGlsIHRoZSBuZXh0IGNvbnRleHQgZGVwbG95bWVudCBvcGVyYXRpb24uIChyZW1tKQogICAgICA8L2ZpeD4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KCiAgPHN1YnNlY3Rpb24gbmFtZT0iQ295b3RlIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDxmaXg+CiAgICAgICAgPGJ1Zz4zMTAxODwvYnVnPjogUmFjZSBjb25kaXRpb24gaW4gU3lzdGVtTG9nSGFuZGxlci4gKHlvYXZzKQogICAgICA8L2ZpeD4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KCiAgPHN1YnNlY3Rpb24gbmFtZT0iSmFzcGVyIj4KICAgIDxjaGFuZ2Vsb2c+CiAgICAgIDxmaXg+CiAgICAgICAgVXNlIHRoZSAiY29tcGlsZXIiIHBhcmFtZXRlciB0byBhbGxvdyBzcGVjaWZ5aW5nIHRoYXQgQW50IHNob3VsZCBiZSB1c2VkLiAocmVtbSkKICAgICAgPC9maXg+CiAgICAgIDxmaXg+CiAgICAgICAgSWdub3JlIEpEVCBjb21waWxlciB3YXJuaW5ncy4gKHJlbW0pCiAgICAgIDwvZml4PgogICAgICA8YWRkPgogICAgICAgIEFkZGVkIGNvbXBpbGVyVGFyZ2V0Vk0gb3B0aW9uIHN1cHBvcnQsICIxLjQiIGRlZmF1bHQuICh5b2F2cykKICAgICAgPC9hZGQ+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+CgogIDxzdWJzZWN0aW9uIG5hbWU9IkNsdXN0ZXIiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPGZpeD4KICAgICAgICBGaXggYWRkaW5nIHRoZSBjbHVzdGVyaW5nIHZhbHZlLCBzbyB0aGF0IHNlc3Npb24gcmVwbGljYXRpb24gYWN0dWFsbHkgb2NjdXJzLiAoZmhhbmlrKQogICAgICA8L2ZpeD4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KCiAgPHN1YnNlY3Rpb24gbmFtZT0iV2ViYXBwcyI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8dXBkYXRlPgogICAgICAgIE1ham9yIGRvY3VtZW50YXRpb24gdXBkYXRlIHdpdGggY3VycmVudCBUb21jYXQgNS41IGNoYW5nZXMuIChyZW1tKQogICAgICA8L3VwZGF0ZT4KICAgICAgPHVwZGF0ZT4KICAgICAgICBBZGRlZCBKYXZhU2NyaXB0IGNvbmZpcm1hdGlvbiBkaWFsb2cgdG8gImRhbmdlcm91cyIgTWFuYWdlciBzZXJ2bGVyIGxpbmtzLiAoeW9hdnMpCiAgICAgIDwvdXBkYXRlPgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgo8L3NlY3Rpb24+Cgo8c2VjdGlvbiBuYW1lPSJUb21jYXQgNS41LjAgKHlvYXZzKSI+CiAgPHN1YnNlY3Rpb24gbmFtZT0iR2VuZXJhbCI+CiAgICA8Y2hhbmdlbG9nPgogICAgICA8dXBkYXRlPgogICAgICAgIE1hbnkgdXBkYXRlZCBhbmQgZml4ZWQgSmF2YURvY3MuICh5b2F2cykKICAgICAgPC91cGRhdGU+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgRGVzaWduZWQgYW5kIHRlc3RlZCBUb21jYXQgb24gSjJTRSA1LjAgKGFrYSBKREsgMS41KS4gKGV2ZXJ5b25lKQogICAgICA8L3VwZGF0ZT4KICAgICAgPHVwZGF0ZT4KICAgICAgICBCdW5kbGVkIEVjbGlwc2UgSkRUIChuZXcgZGVwZW5kZW5jeSkgdG8gYWxsb3cgVG9tY2F0IHRvIHJ1biBvbiBhIEpSRSBvbmx5LCBpLmUuIG5vIEpESyByZXF1aXJlZC4gKHJlbW0pCiAgICAgIDwvdXBkYXRlPgogICAgICA8dXBkYXRlPgogICAgICAgIFJlcGFja2FnZSBjb21tb25zLWRiY3AgYW5kIGl0cyBkZXBlbmRlbmNpZXMgYXMgYSBzaWdsZSBzbWFsbGVyIFdBUiwgd2l0aCByZW5hbWVkIHBhY2thZ2VzLiAocmVtbSkKICAgICAgPC91cGRhdGU+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgUmVtb3ZlZCBkZXBlbmRlbmNpZXMgb24gY29tbW9ucy1kaWdlc3RlciwgY29tbW9ucy1iZWFudXRpbHMsIGFuZCBjb21tb25zLWNvbGxlY3Rpb25zLgogICAgICAgIFRoZSByZWxldmFudCBkaWdlc3RlciBmdW5jdGlvbmFsaXR5IGlzIG5vdyBtZXJnZWQgaW4gdG9tY2F0LXV0aWwuIChyZW1tKQogICAgICA8L3VwZGF0ZT4KICAgIDwvY2hhbmdlbG9nPgogIDwvc3Vic2VjdGlvbj4KCiAgPHN1YnNlY3Rpb24gbmFtZT0iQ2F0YWxpbmEiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPHVwZGF0ZT4KICAgICAgICBSZW1vdmVkIHVzYWdlIG9mIG9yZy5hcGFjaGUuY2F0YWxpbmEuTG9nZ2VyLCBpbmNyZWFzZWQgdXNhZ2Ugb2YgY29tbW9ucy1sb2dnaW5nIGV2ZXJ5d2hlcmUuIChyZW1tKQogICAgICA8L3VwZGF0ZT4KICAgICAgPHVwZGF0ZT4KICAgICAgICBSZWZhY3RvcmVkIGNsYXNzbG9hZGVyIGNvZGUgdG8gYmV0dGVyIGhhbmRsZSBKQVIgYW5kIGdlbmVyYWwgcmVzb3VyY2UgbG9ja2luZy4gKHJlbW0pCiAgICAgIDwvdXBkYXRlPgogICAgICA8dXBkYXRlPgogICAgICAgIFdyaXR0ZW4gSk1YLXJlbGF0ZWQgY29kZSB0byBwbGF5IG5pY2VseSB3aXRoIEoyU0UgNS4wIGJ1aWx0LWluIEpNWCBhYmlsaXRpZXMuIChyZW1tLCBjb3N0aW4pCiAgICAgIDwvdXBkYXRlPgogICAgICA8dXBkYXRlPgogICAgICAgIEV4dGVuc2l2ZWx5IHByb2ZpbGVkIGFuZCBvcHRpbWl6ZWQgdGhlIHNlcnZlciBzdGFydHVwIHBlcmZvcm1hbmNlIGFzIHdlbGwgYXMgdGhlIHJlcXVlc3QgbWFwcGluZyBhbmQgcHJvY2Vzc2luZyBwaXBlbGluZS4gKHJlbW0pCiAgICAgIDwvdXBkYXRlPgogICAgICA8dXBkYXRlPgogICAgICAgIFRoZSBjb250YWluZXIgd2lsbCBub3cgYWx3YXlzIHByb2Nlc3MgYSAvTUVUQS1JTkYvY29udGV4dC54bWwgcmVzb3VyY2UsIHVubGVzcyB0aGUgd2ViYXBwIGhhcyBhIHNwZWNpZmllZCBleHRlcm5hbCBjb250ZXh0IGZpbGUuIChyZW1tKQogICAgICA8L3VwZGF0ZT4KICAgICAgPHVwZGF0ZT4KICAgICAgICBOZXcgZGVmYXVsdCBjb25maWd1cmF0aW9uIG1lY2hhbmlzbSBmb3Igd2ViIGFwcGxpY2F0aW9ucywgcmVwbGFjaW5nIERlZmF1bHRDb250ZXh0LiBUaGlzIHVzZXMgYQogICAgICAgIHNoYXJlZCBjb250ZXh0IGZpbGUgbG9jYXRlZCBpbiBjb25mL2NvbnRleHQueG1sLiAocmVtbSkKICAgICAgPC91cGRhdGU+CiAgICAgIDx1cGRhdGU+CiAgICAgICAgUmV2YW1wZWQgZGVwbG95ZXIsIGFsbG95aW5nIGZ1bGwgaG90ZGVwbG95IChub3RlOiBvbiBXaW5kb3dzLCB0aGlzIHJlcXVpcmVzIHRoZSBhbnRpIGZpbGUgbG9ja2luZwogICAgICAgIGZlYXR1cmVzKS4gKHJlbW0pCiAgICAgIDwvdXBkYXRlPgogICAgICA8dXBkYXRlPgogICAgICAgIFJlbW92ZSB2ZXJib3NpdHkgZnJvbSB0aGUgSk5ESSByZXNvdXJjZXMgY29uZmlndXJhdGlvbiwgYnkgYWxsb3dpbmcgYXJiaXRyYXJ5IGF0dHJpYnV0ZXMgb24gdGhlIFJlc291cmNlIGVsZW1lbnQuIChyZW1tKQogICAgICA8L3VwZGF0ZT4KICAgICAgPHVwZGF0ZT4KICAgICAgICBTaW1wbGVyIFZhbHZlIGludGVyZmFjZSwgdG8gYWxsb3cgc21hbGxlciBzdGFjayB0cmFjZXMgYW5kIHJlZHVjaW5nIHRoZSBhbW91bnQgb2YgbWV0aG9kIGNhbGxzLiAocmVtbSkKICAgICAgPC91cGRhdGU+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+CgogIDxzdWJzZWN0aW9uIG5hbWU9IkNveW90ZSI+CiAgPC9zdWJzZWN0aW9uPgoKICA8c3Vic2VjdGlvbiBuYW1lPSJKYXNwZXIiPgogICAgPGNoYW5nZWxvZz4KICAgICAgPHVwZGF0ZT4KICAgICAgICBFY2xpcHNlIEpEVCBpcyBub3cgdGhlIGRlZmF1bHQgSmF2YSBjb21waWxlciBpbiBKYXNwZXIuIFNvdXJjZSBkZXBlbmRlbmNpZXMgYXJlIG5vdyBsb2FkZWQgZnJvbQogICAgICAgIHRoZSBjb250YWluZXIgY2xhc3Nsb2FkZXIsIGFuZCBjb21waWxhdGlvbiB0aW1lcyBhcmUgbXVjaCBmYXN0ZXIuIChyZW1tKQogICAgICA8L3VwZGF0ZT4KICAgICAgPHVwZGF0ZT4KICAgICAgICBKYXNwZXIgZGV2ZWxvcG1lbnQgbW9kZSBzaG91bGQgbm93IGhhdmUgYWNjZXB0YWJsZSBwZXJmb3JtYW5jZSBmb3IgaGVhdmlseSBhY2Nlc3NlZCBwYWdlcy4KICAgICAgICBQcmVjb21waWxpbmcgSlNQcyBpcyBzdGlsbCBzaWduaWZpY2FudGx5IG1vcmUgZWZmaWNpZW50LCBob3dldmVyLiAocmVtbSkKICAgICAgPC91cGRhdGU+CiAgICA8L2NoYW5nZWxvZz4KICA8L3N1YnNlY3Rpb24+CgogIDxzdWJzZWN0aW9uIG5hbWU9IkNsdXN0ZXIiPgogIDwvc3Vic2VjdGlvbj4KCiAgPHN1YnNlY3Rpb24gbmFtZT0iV2ViYXBwcyI+CiAgICA8Y2hhbmdlbG9nPgogICAgPC9jaGFuZ2Vsb2c+CiAgPC9zdWJzZWN0aW9uPgo8L3NlY3Rpb24+Cgo8L2JvZHk+CjwvZG9jdW1lbnQ+Cg==