QVBBQ0hFIERFUkJZIFNUQVRVUzoKTGFzdCBtb2RpZmllZCBhdCBbJERhdGUkXSBieSAkQXV0aG9yJC4KCldlYiBzaXRlOiBodHRwOi8vZGIuYXBhY2hlLm9yZy9kZXJieS8KClByb2plY3QgU3RhdHVzCgogIERlc2NyaXB0aW9uCgogICJEZXJieSIgYmVnYW4gYXMgYSBzbmFwc2hvdCBvZiB0aGUgSUJNJ3MgQ2xvdWRzY2FwZSBKYXZhIHJlbGF0aW9uYWwgZGF0YWJhc2UuIElCTQogIGNvbnRyaWJ1dGVkIHRoZSBjb2RlIHRvIFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiBhbmQgCiAgYmFzZXMgZnV0dXJlIHZlcnNpb25zIG9mIElCTSBDbG91ZHNjYXBlIG9uIHRoZSBBcGFjaGUtbWFuYWdlZCBjb2RlLgoKICBUbyBwYXJ0aWNpcGF0ZSBpbiBEZXJieSwgeW91IHNob3VsZCBqb2luIHRoZSBtYWlsaW5nIGxpc3QuIEp1c3QgCiAgc2VuZCBhbiBlbXB0eSBtZXNzYWdlIHRvIGRlcmJ5LWRldi1zdWJzY3JpYmVAZGIuYXBhY2hlLm9yZy4KClByb2plY3QgaW5mbwoKICAqIEFzIGEgc3VicHJvamVjdCBvZiB0aGUgQXBhY2hlIERCIHByb2plY3QsIERlcmJ5IGZvbGxvd3MgdGhlIGRpcmVjdGlvbiBvZgogICAgdGhlIEFwYWNoZSBEQiBQTUMuIFNpZ25pZmljYW50IGNvbnRyaWJ1dGlvbnMgb3ZlciBhIHN1c3RhaW5lZAogICAgcGVyaW9kIG9mIHRpbWUgY2FuIGVhcm4gYSBjb250cmlidXRvciBjb21taXQgYWNjZXNzIHRvIHRoZSBjb2RlYmFzZS4KCk9mZmljaWFsIHJlbGVhc2VzOgogKiAxMC4xMi4xLjEgOiBSZWxlYXNlZCAyMDE1LTEwLTExCiAqIDEwLjExLjEuMSA6IFJlbGVhc2VkIDIwMTQtMDgtMjcKICogMTAuMTAuMi4wIDogUmVsZWFzZWQgMjAxNC0wNC0xNQogKiAxMC4xMC4xLjEgOiBSZWxlYXNlZCAyMDEzLTA0LTE1CiAqIDEwLjguMy4wIDogUmVsZWFzZWQgMjAxMi0xMS0xNgogKiAxMC45LjEuMCA6IFJlbGVhc2VkIDIwMTItMDYtMjUKICogMTAuOC4yLjIgOiBSZWxlYXNlZCAyMDExLTEwLTI0CiAqIDEwLjguMS4yIDogUmVsZWFzZWQgMjAxMS0wNC0yOQogKiAxMC43LjEuMSA6IFJlbGVhc2VkIDIwMTAtMTItMTQKICogMTAuNi4yLjEgOiBSZWxlYXNlZCAyMDEwLTEwLTA2CiAqIDEwLjYuMS4wIDogUmVsZWFzZWQgMjAxMC0wNS0xOAogKiAxMC41LjMuMCA6IFJlbGVhc2VkIDIwMDktMDgtMjEKICogMTAuNS4yLjAgOiBSZWxlYXNlZCAyMDA5LTA3LTMwIChEZXByZWNhdGVkKQogKiAxMC41LjEuMSA6IFJlbGVhc2VkIDIwMDktMDQtMjgKICogMTAuNC4yLjAgOiBSZWxlYXNlZCAyMDA4LTA5LTA1CiAqIDEwLjQuMS4zIDogUmVsZWFzZWQgMjAwOC0wNC0yNAogKiAxMC4zLjMuMCA6IFJlbGVhc2VkIDIwMDgtMDUtMTIKICogMTAuMy4yLjEgOiBSZWxlYXNlZCAyMDA3LTEyLTEwCiAqIDEwLjMuMS40IDogUmVsZWFzZWQgMjAwNy0wOC0xMAogKiAxMC4yLjIuMCA6IFJlbGVhc2VkIDIwMDYtMTItMTkKICogMTAuMi4xLjYgOiBSZWxlYXNlZCAyMDA2LTEwLTAyCiAqIDEwLjEuMy4xIDogUmVsZWFzZWQgMjAwNi0wNi0zMAogKiAxMC4xLjIuMSA6IFJlbGVhc2VkIDIwMDUtMTEtMTgKICogMTAuMS4xLjAgOiBSZWxlYXNlZCAyMDA1LTA4LTAzCiAqIDEwLjAuMi4xIDogUmVsZWFzZWQgMjAwNC0xMi0wNgoKUEVORElORyBJU1NVRVMKPT09PT09PT09PT09PT0KCk5vbmUuCgpSRVNPTFZFRCBJU1NVRVMgU0lOQ0UgTEFTVCBTVEFUVVMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CgpOb25lLgoKUkVDRU5UIFZPVEVTCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoKVGhlIGNvbW11bml0eSB2b3RlZCB0byBzdW5zZXQgc3VwcG9ydCBmb3IgSmF2YSBTRSA3LiBUaGUgdm90ZSBjbG9zZWQgb24gMjAxNS0wOS0xMi4KVGhlIGNvbW11bml0eSB2b3RlZCB0byBzdW5zZXQgc3VwcG9ydCBmb3IgSmF2YSBTRSA2LiBUaGUgdm90ZSBjbG9zZWQgb24gMjAxNC0wOS0xNS4KUmVsZWFzZSAxMC4xMi4xLjEgd2FzIGFwcHJvdmVkIGFzIGEgcmVsZWFzZSBvbiAyMDE1LTEwLTA1LCBwdWJsaXNoZWQgb24gMjAxNS0xMC0xMCwgYW5kIGFubm91bmNlZCBvbiAyMDE1LTEwLTExLgpSZWxlYXNlIDEwLjExLjEuMSB3YXMgYXBwcm92ZWQgYXMgYSByZWxlYXNlIG9uIDIwMTQtMDgtMjUsIHB1Ymxpc2hlZCBvbiAyMDE0LTA4LTI2LCBhbmQgYW5ub3VuY2VkIG9uIDIwMTQtMDgtMjcuClJlbGVhc2UgMTAuMTAuMi4wIHdhcyBhcHByb3ZlZCBhcyBhIHJlbGVhc2Ugb24gMjAxNC0wNC0xMSwgcHVibGlzaGVkIG9uIDIwMTQtMDQtMTUsIGFuZCBhbm5vdW5jZWQgb24gMjAxNC0wNC0xNy4KUmVsZWFzZSAxMC4xMC4xLjEgd2FzIGFwcHJvdmVkIGFzIGEgcmVsZWFzZSBvbiAyMDEzLTA0LTE1LCBwdWJsaXNoZWQgb24gMjAxMy0wNC0xNiwgYW5kIGFubm91bmNlZCBvbiAyMDEzLTA0LTE3LgpSZWxlYXNlIDEwLjguMy4wIHdhcyBhcHByb3ZlZCBhcyBhIHJlbGVhc2Ugb24gMjAxMi0xMS0xNiwgcHVibGlzaGVkIG9uIDIwMTItMTItMTMsIGFuZCBhbm5vdW5jZWQgb24gMjAxMy0wMS0zMC4KUmVsZWFzZSAxMC45LjEuMCB3YXMgYXBwcm92ZWQgYXMgYSByZWxlYXNlIG9uIDIwMTItMDYtMjEsIHB1Ymxpc2hlZCBvbiAyMDEyLTA2LTIyLCBhbmQgYW5ub3VuY2VkIG9uIDIwMTItMDYtMjUuClJlbGVhc2UgMTAuOC4yLjIgd2FzIGFwcHJvdmVkIGFzIGEgcmVsZWFzZSBvbiAyMDExLTEwLTI0LCBwdWJsaXNoZWQgb24gMjAxMS0xMC0yNCwgYW5kIGFubm91bmNlZCBvbiAyMDExLTEwLTI2LgpSZWxlYXNlIDEwLjguMS4yIHdhcyBhcHByb3ZlZCBhcyBhIHJlbGVhc2Ugb24gMjAxMS0wNC0yOCwgcHVibGlzaGVkIG9uIDIwMTEtMDQtMjksIGFuZCBhbm5vdW5jZWQgb24gMjAxMS0wNS0wMi4KUmVsZWFzZSAxMC43LjEuMSB3YXMgYXBwcm92ZWQgYXMgYSByZWxlYXNlIG9uIDIwMTAtMTItMTMsIHB1Ymxpc2hlZCBvbiAyMDEwLTEyLTE0LCBhbmQgYW5ub3VuY2VkIG9uIDIwMTAtMTItMTUuClJlbGVhc2UgMTAuNi4yLjEgd2FzIGFwcHJvdmVkIGFzIGEgcmVsZWFzZSBvbiAyMDEwLTEwLTA2LCBwdWJsaXNoZWQgb24gMjAxMC0xMC0wOCwgYW5kIGFubm91bmNlZCBvbiAyMDEwLTEwLTEyLgoKT1RIRVIgTkVXUwo9PT09PT09PT09CgpSRUxFQVNFIFNUQVRVUwo9PT09PT09PT09PT09PQoKVGhlIGNvbW11bml0eSBpcyB3b3JraW5nIG9uIGEgMTAuMTMuMSBmZWF0dXJlIHJlbGVhc2UuCgoKCgoKUmVmZXJlbmNlczoKIAppdGVtICAgICAgICAgICAgdHlwZSAgICAgIHJlZmVyZW5jZQpTdGF0dXMgZmlsZSAgICAgd3d3ICAgICAgIGh0dHA6Ly9zdm4uYXBhY2hlLm9yZy9yZXBvcy9hc2YvZGIvZGVyYnkvY29kZS90cnVuay9TVEFUVVMKV2Vic2l0ZSAgICAgICAgIHd3dyAgICAgICBodHRwOi8vZGIuYXBhY2hlLm9yZy9kZXJieS8KTWFpbGluZyBsaXN0ICAgIGRldiAgICAgICBkZXJieS1kZXZAZGIuYXBhY2hlLm9yZwpNYWlsaW5nIGxpc3QgICAgdXNlcnMgICAgIGRlcmJ5LXVzZXJAZGIuYXBhY2hlLm9yZwpTb3VyY2UgY29kZSAgICAgU1ZOICAgICAgIC9yZXBvcy9hc2YvZGIvZGVyYnkvY29kZS90cnVuay8KQ29tbWl0dGVycyAgICAgIGp0YSAgICAgICAgICAgICAgICAgIEplYW4gQW5kZXJzb24gKENMQSBvbiBmaWxlKQpDb21taXR0ZXJzICAgICAga2FoYXRsZW4gICAgICAgICAgICAgS251dCBBbmRlcnMgSGF0bGVuIChDTEEgb24gZmlsZSkKQ29tbWl0dGVycyAgICAgIG95dmluZCAgICAgICAgICAgICAgINh5dmluZCBCYWtrc2r4IChDTEEgb24gZmlsZSkKQ29tbWl0dGVycyAgICAgIHNhdGhlZXNoICAgICAgICAgICAgIFNhdGhlZXNoIEJhbmRhcmFtIChDTEEgb24gZmlsZSkKQ29tbWl0dGVycyAgICAgIGpib3luZXMgICAgICAgICAgICAgIEplcmVteSBCb3luZXMgKENMQSBvbiBmaWxlKQpDb21taXR0ZXJzICAgICAgYWJyb3duICAgICAgICAgICAgICAgQXJteSBCcm93biAoQ0xBIG9uIGZpbGUpCkNvbW1pdHRlcnMgICAgICBjb2FyICAgICAgICAgICAgICAgICBLZW4gQ29hciAoQ0xBIG9uIGZpbGUpCkNvbW1pdHRlcnMgICAgICBkamQgICAgICAgICAgICAgICAgICBEYW5pZWwgRGVicnVubmVyIChDTEEgb24gZmlsZSkKQ29tbWl0dGVycyAgICAgIHJoaWxsZWdhcyAgICAgICAgICAgIFJpY2sgSGlsbGVnYXMgKENMQSBvbiBmaWxlKQpDb21taXR0ZXJzICAgICAgYmVybnQgICAgICAgICAgICAgICAgQmVybnQgTS4gSm9obnNlbiAoQ0xBIG9uIGZpbGUpCkNvbW1pdHRlcnMgICAgICBhbmRyZWFzayAgICAgICAgICAgICBBbmRyZWFzIEtvcm5lbGl1c3NlbiAoQ0xBIG9uIGZpbGUpCkNvbW1pdHRlcnMgICAgICBrbWFyc2RlbiAgICAgICAgICAgICBLYXRoZXJpbmUgTWFyc2RlbiAoQ0xBIG9uIGZpbGUpCkNvbW1pdHRlcnMgICAgICBtaWtlbSAgICAgICAgICAgICAgICBNaWtlIE1hdHJpZ2FsaSAoQ0xBIG9uIGZpbGUpCkNvbW1pdHRlcnMgICAgICBtY2ludHlyZSAgICAgICAgICAgICBTYW11ZWwgTWNJbnR5cmUgKENMQSBvbiBmaWxlKQpDb21taXR0ZXJzICAgICAgdG1uayAgICAgICAgICAgICAgICAgVG9tb2hpdG8gTmFrYXlhbWEgKENMQSBvbiBmaWxlKQpDb21taXR0ZXJzICAgICAgYnJ5YW5wZW5kbGV0b24gICAgICAgQnJ5YW4gUGVuZGxldG9uIChDTEEgb24gZmlsZSkKQ29tbWl0dGVycyAgICAgIGZlcm5hbmRhICAgICAgICAgICAgIEZlcm5hbmRhIFBpenpvcm5vIChDTEEgb24gZmlsZSkKQ29tbWl0dGVycyAgICAgIHN1cmVzaHQgICAgICAgICAgICAgIFN1cmVzaCBUaGFsYW1hdGkgKENMQSBvbiBmaWxlKQpDb21taXR0ZXJzICAgICAgZGF2aWR2YyAgICAgICAgICAgICAgRGF2aWQgVmFuIENvdXZlcmluZyAoQ0xBIG9uIGZpbGUpCkNvbW1pdHRlcnMgICAgICBteXJuYXZsICAgICAgICAgICAgICBNeXJuYSBWYW4gTHVudGVyZW4gKENMQSBvbiBmaWxlKQpDb21taXR0ZXJzICAgICAgbWFtdGEgICAgICAgICAgICAgICAgTWFtdGEgU2F0b29yIChDTEEgb24gZmlsZSkKQ29tbWl0dGVycyAgICAgIHNjb3RzbWF0cml4ICAgICAgICAgIExhdXJhIFN0ZXdhcnQgKENMQSBvbiBmaWxlKQpDb21taXR0ZXJzICAgICAga3Jpc3R3YWEgICAgICAgICAgICAgS3Jpc3RpYW4gV2FhZ2FuIChDTEEgb24gZmlsZSkKQ29tbWl0dGVycyAgICAgIGRhZyAgICAgICAgICAgICAgICAgIERhZyBILiBXYW52aWsgKENMQSBvbiBmaWxlKQpDb21taXR0ZXJzICAgICAgb3lzdGVpbmcgICAgICAgICAgICAg2HlzdGVpbiBHcvh2bGVuIChDTEEgb24gZmlsZSkKQ29tbWl0dGVycyAgICAgIGR5cmUgICAgICAgICAgICAgICAgIER5cmUgVGplbGR2b2xsIChDTEEgb24gZmlsZSkKQ29tbWl0dGVycyAgICAgIGNoYWFzZTMgICAgICAgICAgICAgIENhbWlsbGEgSGFhc2UgKENMQSBvbiBmaWxlKQpDb21taXR0ZXJzICAgICAgdm5hcmF5YW5hbiAgICAgICAgICAgViBOYXJheWFuYW4gKENMQSBvbiBmaWxlKQpDb21taXR0ZXJzICAgICAgam9yZ2VubG8gICAgICAgICAgICAgSvhyZ2VuIEz4bGFuZCAoQ0xBIG9uIGZpbGUpCkNvbW1pdHRlcnMgICAgICB0aG9tYW5pZSAgICAgICAgICAgICBUaG9tYXMgTmllbHNlbiAoQ0xBIG9uIGZpbGUpCkNvbW1pdHRlcnMgICAgICBqb2huZW1iICAgICAgICAgICAgICBKb2huIEVtYnJldHNlbiAoQ0xBIG9uIGZpbGUpCkNvbW1pdHRlcnMgICAgICBvbGUgICAgICAgICAgICAgICAgICBPbGUgU29sYmVyZyAoQ0xBIG9uIGZpbGUpCkNvbW1pdHRlcnMgICAgICBsaWx5d2VpICAgICAgICAgICAgICBMaWx5IFdlaSAoQ0xBIG9uIGZpbGUpCkNvbW1pdHRlcnMgICAgICB0aWFnbyAgICAgICAgICAgICAgICBUaWFnbyBFc3BpbmhhIChDTEEgb24gZmlsZSkK