PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4KPCEtLSBTY2hlbWEgZmlsZSB3cml0dGVuIGJ5IFBERSAtLT4KPHNjaGVtYSB0YXJnZXROYW1lc3BhY2U9Im9yZy5lY2xpcHNlLmNvbXBhcmUuZXhhbXBsZXMueG1sIj4KPGFubm90YXRpb24+CiAgICAgIDxhcHBJbmZvPgogICAgICAgICA8bWV0YS5zY2hlbWEgcGx1Z2luPSJvcmcuZWNsaXBzZS5jb21wYXJlLmV4YW1wbGVzLnhtbCIgaWQ9ImlkTWFwcGluZyIgbmFtZT0iWE1MIElkIE1hcHBpbmciLz4KICAgICAgPC9hcHBJbmZvPgogICAgICA8ZG9jdW1lbnRhdGlvbj4KICAgICAgICAgVGhpcyBleHRlbnNpb24gcG9pbnQgYWxsb3dzIHRvIGRlZmluZSBpbnRlcm5hbCBYTUwgSUQgTWFwcGluZyBzY2hlbWVzIHVzaW5nIHRoZSAmbHQ7aSZndDttYXBwaW5nJmx0Oy9pJmd0OyBlbGVtZW50LgpUaGVzZSBzY2hlbWVzIGNhbiB0aGVuIGJlIHVzZWQgd2hlbiBwZXJmb3JtaW5nIGFuIFhNTCBjb21wYXJlIHRvIHVuaXF1ZWx5IGlkZW50aWZ5IFhNTCBlbGVtZW50cyBieSB0aGUKdmFsdWUgb2YgYW4gYXR0cmlidXRlIG9yIHRoZSB0ZXh0IGluIGEgY2hpbGQgZWxlbWVudC4KQWRkaXRpb25hbGx5LCAmbHQ7aSZndDtvcmRlcmVkJmx0Oy9pJmd0OyBlbGVtZW50cyBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IHRoYXQgdGhlIGRpcmVjdCBjaGlsZHJlbiBvZiBhbiBlbGVtZW50CnNob3VsZCBiZSBjb21wYXJlZCBpbiBhbiBvcmRlcmVkIGZhc2hpb24gaW5zdGVhZCBvZiB0aGUgZGVmYXVsdCB1bm9yZGVyZWQgd2F5LgogICAgICA8L2RvY3VtZW50YXRpb24+CiAgIDwvYW5ub3RhdGlvbj4KCiAgIDxlbGVtZW50IG5hbWU9ImV4dGVuc2lvbiI+CiAgICAgIDxjb21wbGV4VHlwZT4KICAgICAgICAgPHNlcXVlbmNlPgogICAgICAgICAgICA8ZWxlbWVudCByZWY9ImlkTWFwIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIi8+CiAgICAgICAgIDwvc2VxdWVuY2U+CiAgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0icG9pbnQiIHR5cGU9InN0cmluZyIgdXNlPSJyZXF1aXJlZCI+CiAgICAgICAgICAgIDxhbm5vdGF0aW9uPgogICAgICAgICAgICAgICA8ZG9jdW1lbnRhdGlvbj4KICAgICAgICAgICAgICAgICAgYSBmdWxseSBxdWFsaWZpZWQgaWRlbnRpZmllciBvZiB0aGUgdGFyZ2V0IGV4dGVuc2lvbiBwb2ludAogICAgICAgICAgICAgICA8L2RvY3VtZW50YXRpb24+CiAgICAgICAgICAgIDwvYW5ub3RhdGlvbj4KICAgICAgICAgPC9hdHRyaWJ1dGU+CiAgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0iaWQiIHR5cGU9InN0cmluZyI+CiAgICAgICAgICAgIDxhbm5vdGF0aW9uPgogICAgICAgICAgICAgICA8ZG9jdW1lbnRhdGlvbj4KICAgICAgICAgICAgICAgICAgYW4gb3B0aW9uYWwgaWRlbnRpZmllciBvZiB0aGUgZXh0ZW5zaW9uIGluc3RhbmNlCiAgICAgICAgICAgICAgIDwvZG9jdW1lbnRhdGlvbj4KICAgICAgICAgICAgPC9hbm5vdGF0aW9uPgogICAgICAgICA8L2F0dHJpYnV0ZT4KICAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJuYW1lIiB0eXBlPSJzdHJpbmciPgogICAgICAgICAgICA8YW5ub3RhdGlvbj4KICAgICAgICAgICAgICAgPGRvY3VtZW50YXRpb24+CiAgICAgICAgICAgICAgICAgIGFuIG9wdGlvbmFsIG5hbWUgb2YgdGhlIGV4dGVuc2lvbiBpbnN0YW5jZS4KICAgICAgICAgICAgICAgPC9kb2N1bWVudGF0aW9uPgogICAgICAgICAgICA8L2Fubm90YXRpb24+CiAgICAgICAgIDwvYXR0cmlidXRlPgogICAgICA8L2NvbXBsZXhUeXBlPgogICA8L2VsZW1lbnQ+CgogICA8ZWxlbWVudCBuYW1lPSJpZE1hcCI+CiAgICAgIDxjb21wbGV4VHlwZT4KICAgICAgICAgPHNlcXVlbmNlPgogICAgICAgICAgICA8ZWxlbWVudCByZWY9Im1hcHBpbmciLz4KICAgICAgICAgICAgPGVsZW1lbnQgcmVmPSJvcmRlcmVkIi8+CiAgICAgICAgIDwvc2VxdWVuY2U+CiAgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0ibmFtZSIgdHlwZT0ic3RyaW5nIiB1c2U9InJlcXVpcmVkIj4KICAgICAgICAgICAgPGFubm90YXRpb24+CiAgICAgICAgICAgICAgIDxkb2N1bWVudGF0aW9uPgogICAgICAgICAgICAgICAgICB0aGUgbmFtZSBvZiB0aGUgSUQgTWFwcGluZyBzY2hlbWUuIFNob3VsZCBiZSB1bmlxdWUuCiAgICAgICAgICAgICAgIDwvZG9jdW1lbnRhdGlvbj4KICAgICAgICAgICAgPC9hbm5vdGF0aW9uPgogICAgICAgICA8L2F0dHJpYnV0ZT4KICAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJleHRlbnNpb24iIHR5cGU9InN0cmluZyI+CiAgICAgICAgICAgIDxhbm5vdGF0aW9uPgogICAgICAgICAgICAgICA8ZG9jdW1lbnRhdGlvbj4KICAgICAgICAgICAgICAgICAgYSBmaWxlIGV4dGVuc2lvbiBhc3NvY2lhdGVkIHdpdGggdGhpcyBJRCBNYXBwaW5nIFNjaGVtZS4KV2hlbiBjb21wYXJpbmcgZmlsZXMgd2l0aCB0aGlzIGV4dGVuc2lvbiwgdGhlIGN1cnJlbnQgSUQgTWFwcGluZwpTY2hlbWUgd2lsbCBhdXRvbWF0aWNhbGx5IGJlIHVzZWQuIApJZiBhbiBleHRlbnNpb24gaXMgc3BlY2lmaWVkLCB0aGVuIHRoZSBleHRlbnNpb24gc2hvdWxkIGFsc28gYmUgYWRkZWQKaW4gdGhlIHBsdWdpbi54bWwgZmlsZSBvZiB0aGUgWE1MIENvbXBhcmUgUGx1Z2luLiBGb3IgZXhhbXBsZSwgaWYgd2UKY3JlYXRlIGFuIElEIE1hcHBpbmcgU2NoZW1lIHdpdGggZXh0ZW5zaW9uIGNkLCB0aGUgcGx1Z2luLnhtbCBvZiB0aGUKWE1MIENvbXBhcmUgUGx1Z2luIGlzIHVwZGF0ZWQgYXMgZm9sbG93cyAodXBkYXRlIHNob3duIGluIGJvbGQpOiAKJmx0O3AmZ3Q7CiZsdDtwcmUmZ3Q7CiZsdDtleHRlbnNpb24gCsrKysrKynBvaW50PSZxdW90O29yZy5lY2xpcHNlLmNvbXBhcmUuc3RydWN0dXJlTWVyZ2VWaWV3ZXJzJnF1b3Q7Jmd0OyAKICZsdDtzdHJ1Y3R1cmVNZXJnZVZpZXdlciAKysrKysrKysrKZXh0ZW5zaW9ucz0mcXVvdDt4bWwsY2xhc3NwYXRoLGNkJnF1b3Q7CsrKysrKysrKymNsYXNzPSZxdW90O29yZy5lY2xpcHNlLmNvbXBhcmUueG1sLlhNTFN0cnVjdHVyZVZpZXdlckNyZWF0b3ImcXVvdDsKIC8mZ3Q7CiZsdDsvZXh0ZW5zaW9uJmd0OwombHQ7L3ByZSZndDsKJmx0Oy9wJmd0OwombHQ7cCZndDsKV2FybmluZzogSWYgYW4gZXh0ZW5zaW9uIGlzIGFzc29jaWF0ZWQgbW9yZSB0aGFuIG9uY2UsIG9ubHkgdGhlIGZpcnN0CmFzc29jaWF0aW9uIHdpbGwgYmUgY29uc2lkZXJlZC4gQWxzbywgaW50ZXJuYWwgSUQgTWFwcGluZyBzY2hlbWVzIGhhdmUKcHJpb3JpdHkgb3ZlciB1c2VyIElEIE1hcHBpbmcgc2NoZW1lcyB3aGVuIGR1cGxpY2F0ZSBleHRlbnNpb25zIGFyZSBkZWZpbmVkLiAKJmx0Oy9wJmd0OwombHQ7cCZndDsKV2FybmluZzogV2hlbiBhbiBpbnRlcm5hbCBJRCBNYXBwaW5nIHNjaGVtZSB3aXRoIGV4dGVuc2lvbiBhc3NvY2lhdGlvbiBpcwpyZW1vdmVkIChmcm9tIGEgcGx1Z2luLnhtbCApLCB0aGUgWE1MIENvbXBhcmUgcGx1Z2luIGhhcyB0byBiZSByZWxvYWRlZAp0byBkaXNhc3NvY2lhdGUgaXRzZWxmIGZyb20gdGhlIGV4dGVuc2lvbi4gSWYgbm90LCBvbiB0aGUgZmlyc3QgY29tcGFyZQpvZiBmaWxlcyB3aXRoIHRoaXMgZXh0ZW5zaW9uLCB0aGUgWE1MIENvbXBhcmUgcGx1Z2luIHdpbGwgYmUgdXNlZCB3aXRoCnRoZSBkZWZhdWx0IFVub3JkZXJlZCBhbGdvcml0aG0uIChIb3dldmVyLCBhdCB0aGlzIHBvaW50IHRoZSBleHRlbnNpb24Kd2lsbCBoYXZlIGJlZW4gZGlzYXNzb2NpYXRlZCBmcm9tIHRoZSBYTUwgUGx1Z2luLCBhcyB0aGUgcGx1Z2luIGhhcyBiZWVuIGxvYWRlZC4pCiZsdDsvcCZndDsKICAgICAgICAgICAgICAgPC9kb2N1bWVudGF0aW9uPgogICAgICAgICAgICA8L2Fubm90YXRpb24+CiAgICAgICAgIDwvYXR0cmlidXRlPgogICAgICA8L2NvbXBsZXhUeXBlPgogICA8L2VsZW1lbnQ+CgogICA8ZWxlbWVudCBuYW1lPSJtYXBwaW5nIj4KICAgICAgPGNvbXBsZXhUeXBlPgogICAgICAgICA8YXR0cmlidXRlIG5hbWU9InNpZ25hdHVyZSIgdHlwZT0ic3RyaW5nIiB1c2U9InJlcXVpcmVkIj4KICAgICAgICAgICAgPGFubm90YXRpb24+CiAgICAgICAgICAgICAgIDxkb2N1bWVudGF0aW9uPgogICAgICAgICAgICAgICAgICB0aGUgWE1MIHBhdGggZnJvbSB0aGUgcm9vdCB0byB0aGUgY3VycmVudCBlbGVtZW50IChzZWUgZXhhbXBsZXMgYmVsb3cpLgogICAgICAgICAgICAgICA8L2RvY3VtZW50YXRpb24+CiAgICAgICAgICAgIDwvYW5ub3RhdGlvbj4KICAgICAgICAgPC9hdHRyaWJ1dGU+CiAgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0iaWQiIHR5cGU9InN0cmluZyIgdXNlPSJyZXF1aXJlZCI+CiAgICAgICAgICAgIDxhbm5vdGF0aW9uPgogICAgICAgICAgICAgICA8ZG9jdW1lbnRhdGlvbj4KICAgICAgICAgICAgICAgICAgdGhlIGF0dHJpYnV0ZSB0aGF0IGlkZW50aWZpZXMgdGhpcyBlbGVtZW50IG9yIHRoZSBuYW1lIG9mIHRoZSBjaGlsZCBlbGVtZW50IHdob3NlIHRleHQgaWRlbnRpZmllcyB0aGlzIGVsZW1lbnQuCiAgICAgICAgICAgICAgIDwvZG9jdW1lbnRhdGlvbj4KICAgICAgICAgICAgPC9hbm5vdGF0aW9uPgogICAgICAgICA8L2F0dHJpYnV0ZT4KICAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJpZC1zb3VyY2UiIHR5cGU9InN0cmluZyI+CiAgICAgICAgICAgIDxhbm5vdGF0aW9uPgogICAgICAgICAgICAgICA8ZG9jdW1lbnRhdGlvbj4KICAgICAgICAgICAgICAgICAgaWYgaWQgaXMgdGhlIG5hbWUgb2YgYSBjaGlsZCBlbGVtZW50LCB0aGVuIHRoaXMgYXR0cmlidXRlIG11c3QgaGF2ZSB0aGUgdmFsdWUgYm9keS4KSWYgaWQtc291cmNlIGlzIGxlZnQgb3V0LCBpdCBpcyBhc3N1bWVkIHRoYXQgaWQgaXMgYW4gYXR0cmlidXRlLgogICAgICAgICAgICAgICA8L2RvY3VtZW50YXRpb24+CiAgICAgICAgICAgIDwvYW5ub3RhdGlvbj4KICAgICAgICAgPC9hdHRyaWJ1dGU+CiAgICAgIDwvY29tcGxleFR5cGU+CiAgIDwvZWxlbWVudD4KCiAgIDxlbGVtZW50IG5hbWU9Im9yZGVyZWQiPgogICAgICA8Y29tcGxleFR5cGU+CiAgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0ic2lnbmF0dXJlIiB0eXBlPSJzdHJpbmciIHVzZT0icmVxdWlyZWQiPgogICAgICAgICAgICA8YW5ub3RhdGlvbj4KICAgICAgICAgICAgICAgPGRvY3VtZW50YXRpb24+CiAgICAgICAgICAgICAgICAgIHRoZSBYTUwgcGF0aCBmcm9tIHRoZSByb290IHRvIHRoZSBlbGVtZW50IHdob3NlIGRpcmVjdCBjaGlsZHJlbiB3aWxsIGJlCmNvbXBhcmVkIGluIG9yZGVyZWQgZmFzaGlvbiBpbnN0ZWFkIG9mIHRoZSBkZWZhdWx0IHVub3JkZXJlZCB3YXkuCiAgICAgICAgICAgICAgIDwvZG9jdW1lbnRhdGlvbj4KICAgICAgICAgICAgPC9hbm5vdGF0aW9uPgogICAgICAgICA8L2F0dHJpYnV0ZT4KICAgICAgPC9jb21wbGV4VHlwZT4KICAgPC9lbGVtZW50PgoKICAgPGFubm90YXRpb24+CiAgICAgIDxhcHBJbmZvPgogICAgICAgICA8bWV0YS5zZWN0aW9uIHR5cGU9InNpbmNlIi8+CiAgICAgIDwvYXBwSW5mbz4KICAgICAgPGRvY3VtZW50YXRpb24+CiAgICAgICAgIDMuMC4wCiAgICAgIDwvZG9jdW1lbnRhdGlvbj4KICAgPC9hbm5vdGF0aW9uPgoKICAgPGFubm90YXRpb24+CiAgICAgIDxhcHBJbmZvPgogICAgICAgICA8bWV0YS5zZWN0aW9uIHR5cGU9ImV4YW1wbGVzIi8+CiAgICAgIDwvYXBwSW5mbz4KICAgICAgPGRvY3VtZW50YXRpb24+CiAgICAgICAgIFRoZSBmb2xsb3dpbmcgaXMgYW4gZXhhbXBsZSBJRCBNYXBwaW5ncyBTY2hlbWUgZm9yIEFOVCBmaWxlcy4gCiZsdDtpJmd0O3Byb2plY3QmbHQ7L2kmZ3Q7IGVsZW1lbnRzIGFyZSBpZGVudGlmaWVkIGJ5IGFuICZsdDtpJmd0O2F0dHJpYnV0ZSBuYW1lJmx0Oy9pJmd0Oy4gJmx0O2kmZ3Q7dGFyZ2V0Jmx0Oy9pJmd0OyBlbGVtZW50cyAod2hpY2ggYXJlIGNoaWxkcmVuIG9mICZsdDtpJmd0O3Byb2plY3QmbHQ7L2kmZ3Q7KSBhcmUgYWxzbyBpZGVudGlmaWVkIGJ5IGFuIGF0dHJpYnV0ZSAmbHQ7aSZndDtuYW1lJmx0Oy9pJmd0Oy4gQWxzbywgdGhlIGNoaWxkcmVuIG9mICZsdDtpJmd0O3RhcmdldCZsdDsvaSZndDsgd2lsbCBiZSBjb21wYXJlZCBpbiB0aGUgb3JkZXIgaW4gd2hpY2ggdGhleSBhcHBlYXIgaW4gdGhlIGRvY3VtZW50LgombHQ7cCZndDsKJmx0O3ByZSZndDsKJmx0O2V4dGVuc2lvbiBwb2ludCA9ICZxdW90O29yZy5lY2xpcHNlLmNvbXBhcmUuZXhhbXBsZXMueG1sLmlkTWFwcGluZyZxdW90OyZndDsgCiAmbHQ7aWRtYXAgbmFtZT0mcXVvdDtBTlQmcXVvdDsmZ3Q7CiAgJmx0O21hcHBpbmcgc2lnbmF0dXJlPSZxdW90O3Byb2plY3QmcXVvdDsgaWQ9JnF1b3Q7bmFtZSZxdW90Oy8mZ3Q7CiAgJmx0O21hcHBpbmcgc2lnbmF0dXJlPSZxdW90O3Byb2plY3QmZ3Q7dGFyZ2V0JnF1b3Q7IGlkPSZxdW90O25hbWUmcXVvdDsvJmd0OwogICZsdDtvcmRlcmVkIHNpZ25hdHVyZT0mcXVvdDtwcm9qZWN0Jmd0O3RhcmdldCZxdW90Oy8mZ3Q7CiAmbHQ7aWRtYXAmZ3Q7CiZsdDsvZXh0ZW5zaW9uJmd0OyAKJmx0Oy9wcmUmZ3Q7CiZsdDsvcCZndDsKVGhlIGZvbGxvd2luZyBleGFtcGxlIGlsbHVzdHJhdGVzIGEgY2FzZSB3aGVyZSB0aGUgdGV4dCBvZiBhIGNoaWxkIGVsZW1lbnQgaXMgdXNlZCBhcyB0aGUgaWQ6CiZsdDtwJmd0OwombHQ7cHJlJmd0OwombHQ7ZXh0ZW5zaW9uIHBvaW50ID0gJnF1b3Q7b3JnLmVjbGlwc2UuY29tcGFyZS5leGFtcGxlcy54bWwuaWRNYXBwaW5nJnF1b3Q7Jmd0OyAKICZsdDtpZG1hcCBuYW1lPSZxdW90O0Jvb2sgQ2F0YWxvZyZxdW90OyBleHRlbnNpb249JnF1b3Q7Ym9vayZxdW90OyZndDsKICAmbHQ7bWFwcGluZyBzaWduYXR1cmU9JnF1b3Q7Y2F0YWxvZyZndDtib29rJnF1b3Q7IGlkPSZxdW90O2lzYm4mcXVvdDsgaWQtc291cmNlPSZxdW90O2JvZHkmcXVvdDsvJmd0OwogJmx0O2lkbWFwJmd0OwombHQ7L2V4dGVuc2lvbiZndDsKJmx0Oy9wcmUmZ3Q7CiZsdDsvcCZndDsKICAgICAgPC9kb2N1bWVudGF0aW9uPgogICA8L2Fubm90YXRpb24+CgogICA8YW5ub3RhdGlvbj4KICAgICAgPGFwcEluZm8+CiAgICAgICAgIDxtZXRhLnNlY3Rpb24gdHlwZT0iYXBpSW5mbyIvPgogICAgICA8L2FwcEluZm8+CiAgICAgIDxkb2N1bWVudGF0aW9uPgogICAgICAgICBbRW50ZXIgQVBJIGluZm9ybWF0aW9uIGhlcmUuXQogICAgICA8L2RvY3VtZW50YXRpb24+CiAgIDwvYW5ub3RhdGlvbj4KCiAgIDxhbm5vdGF0aW9uPgogICAgICA8YXBwSW5mbz4KICAgICAgICAgPG1ldGEuc2VjdGlvbiB0eXBlPSJpbXBsZW1lbnRhdGlvbiIvPgogICAgICA8L2FwcEluZm8+CiAgICAgIDxkb2N1bWVudGF0aW9uPgogICAgICAgICBUaGUgWE1MIENvbXBhcmUgcGx1Z2luIGRlZmluZXMgYW4gSUQgTWFwcGluZyBzY2hlbWUgZm9yIEVjbGlwc2UgJmx0O3NhbXAmZ3Q7cGx1Z2luLnhtbCZsdDsvc2FtcCZndDsgZmlsZXMsIG9uZSBmb3IgJmx0O3NhbXAmZ3Q7LmNsYXNzcGF0aCZsdDsvc2FtcCZndDsgZmlsZXMgYW5kIG9uZSBmb3IgQW50IGZpbGVzLgogICAgICA8L2RvY3VtZW50YXRpb24+CiAgIDwvYW5ub3RhdGlvbj4KCiAgIDxhbm5vdGF0aW9uPgogICAgICA8YXBwSW5mbz4KICAgICAgICAgPG1ldGEuc2VjdGlvbiB0eXBlPSJjb3B5cmlnaHQiLz4KICAgICAgPC9hcHBJbmZvPgogICAgICA8ZG9jdW1lbnRhdGlvbj4KICAgICAgICAgQ29weXJpZ2h0IChjKSAyMDAwLCAyMDAzIElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLiZsdDticiZndDsKQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQgJmx0O2EgaHJlZj0mcXVvdDtodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbCZxdW90OyZndDtodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbCZsdDsvYSZndDsKICAgICAgPC9kb2N1bWVudGF0aW9uPgogICA8L2Fubm90YXRpb24+Cgo8L3NjaGVtYT4K