*match*
Provides a map of all the matched values from inside a :then block. This is no longer necessary, because it is accessible via `match` directly.
Source
(
def
*match*
nil
)
ezpkeW5hZG9jLmNvbW1vbi9oaWRlLXNpZGViYXI/IHRydWUsIDpkeW5hZG9jLmNvbW1vbi9zdGF0aWM/IHRydWUsIDpkeW5hZG9jLmNvbW1vbi90eXBlIDpjbGpzLCA6ZHluYWRvYy5jb21tb24vbnNlcyBbezp2YXItc3ltcyBbcHJvY2Vzcy1hcmdzIGtleXRvb2wta2V5cyBrZXl0b29sLWNtZCBrZXl0b29sXSwgOnR5cGUgOmNsaiwgOnN5bSBjZXJ0aWZpYWJsZS5rZXl0b29sfSB7OnZhci1zeW1zIFsqb3V0cHV0LWZuKiBsb2ctbGV2ZWxzICpsb2ctbGV2ZWwqIGxldmVsLXRhZyB3YXJuIGRlYnVnIGxvZyogZmF0YWwgKmxvZy1mbiogaW5mbyBlcnJvcl0sIDp0eXBlIDpjbGosIDpzeW0gY2VydGlmaWFibGUubG9nfSB7OnZhci1zeW1zIFtzZWN1cml0eS1jb21tYW5kPyBoYXMtY2VydD8gc2VjdXJpdHktY29tbWFuZCBhZGQtdHJ1c3RlZC1jZXJ0ISByZW1vdmUtY2VydCBtYWNvcy1sb2dpbi1rZXljaGFpbi1kaXIgaW5zdGFsbC10cnVzdCEgYWRkLWNlcnRdLCA6dHlwZSA6Y2xqLCA6c3ltIGNlcnRpZmlhYmxlLm1hY29zLXRydXN0fSB7OnZhci1zeW1zIFtwYXJzZS1kb21haW4taXAtYXJndW1lbnRzIGNyZWF0ZS1kZXYtY2VydGlmaWNhdGUtamtzICpzZXJ2ZXIta2V5c3RvcmUtbmFtZSogKnBhc3N3b3JkKiBpcC1hZGRyZXNzPyBmaW5kLWNlcnQtaW5mbyBlbWl0LW1ldGEtZGF0YSAqc2VydmVyLXBlbS1uYW1lKiAqcm9vdC1wZW0tbmFtZSogZ2VuZXJhdGUtamtzLWZvci1kb21haW4ga2V5c3RvcmUtaW5mbyBkb21haW5zLWFuZC1pcHMtPnNhbiBjbGVhbiEgbGlzdC1jb21tYW5kIHJlbW92ZS1jZXJ0IC1tYWluIGRuYW1lICpjYS1wZW0tbmFtZSogaW5zdGFsbC10by10cnVzdC1zdG9yZXMhIGZpbGUtcGF0aHMgY2xpLW9wdGlvbnMgbGlzdC1rZXlzdG9yZXMgaG9zdG5hbWU/IG1ldGEtZGF0YSAqaW5mby1uYW1lKiBnZW4tdGhpcmQtcGFydHktY2EgcmVtb3ZlLXRydXN0ICpjYS1rZXlzdG9yZS1uYW1lKiBsaXN0LWRpcnMgKmNhLWRpciogc3RhYmxlLW5hbWUgZW1pdC1rZXlzdG9yZSB1c2FnZSBkZWxldGUtZGlyZWN0b3J5IGdlbi1rZXktcGFpciBpbmZvLWZpbGUgZmluYWwtaW5zdHJ1Y3Rpb25zIGRldi1jZXJ0LWV4aXN0cz8gKnJvb3Qta2V5c3RvcmUtbmFtZSogcmVtb3ZlLWFsbF0sIDp0eXBlIDpjbGosIDpzeW0gY2VydGlmaWFibGUubWFpbn0gezp2YXItc3ltcyBbcHJlZml4LXByb2ZpbGUtcGF0aCBoYXMtY2VydD8gcmVtb3ZlLWNlcnQgZmlyZWZveC1wcm9maWxlLWRpciBjZXJ0LXZhbGlkLWNtZCBjZXJ0LWRlbGV0ZS1jbWQgY2EtdW5pcS1uYW1lIGNlcnR1dGlsLWNtZCBjZXJ0LWFkZC1jbWQgaW5zdGFsbC10cnVzdCEgY2VydHV0aWwtaW5zdGFsbGVkPyBhZGQtY2VydCBmaXJlZm94LXByb2ZpbGVzIGNlcnR1dGlsLXBhdGhdLCA6dHlwZSA6Y2xqLCA6c3ltIGNlcnRpZmlhYmxlLm5zcy10cnVzdH0gezp2YXItc3ltcyBbc2hhLXNpZ25hdHVyZSBzaGEtc2lnbmF0dXJlLXNob3J0XSwgOnR5cGUgOmNsaiwgOnN5bSBjZXJ0aWZpYWJsZS5zaGF9IHs6dmFyLXN5bXMgW2NvbW1hbmQtZXhpc3RzPyBieXRlcy0+aGV4LXN0ciBvcz8gY2VydGlmaWNhdGUgY2VydC1zaGEtMS1maW5nZXJwcmludF0sIDp0eXBlIDpjbGosIDpzeW0gY2VydGlmaWFibGUudXRpbH0gezp2YXItc3ltcyBbY2xvanVyZS1mbi1zdWJzIHBhcnNlLXRyYWNlLWVsZW1zIHBhcnNlLXRyYWNlLWVsZW0gcGFyc2UtZXhjZXB0aW9uXSwgOnR5cGUgOmNsaiwgOnN5bSBjbGotc3RhY2t0cmFjZS5jb3JlfSB7OnZhci1zeW1zIFtwc3QtZWxlbXMtb24gcHN0LXN0ciBlbGVtLWNvbG9yIHBzdC1vbiBwc3QrIHBzdC1jYXVzZWQtYnktb24gcHN0IHNvdXJjZS1zdHIgZmluZC1zb3VyY2Utd2lkdGggamF2YS1tZXRob2Qtc3RyIG1ldGhvZC1zdHIgY2xvanVyZS1tZXRob2Qtc3RyIHBzdC1lbGVtLXN0ciBjb2xvci1jb2RlcyBwc3QtbWVzc2FnZS1vbiBwc3QtY2xhc3Mtb25dLCA6dHlwZSA6Y2xqLCA6c3ltIGNsai1zdGFja3RyYWNlLnJlcGx9IHs6dmFyLXN5bXMgW3F1YXJ0aWxlMyBxdWFydGlsZTEgcmp1c3QgZmVuY2VdLCA6dHlwZSA6Y2xqLCA6c3ltIGNsai1zdGFja3RyYWNlLnV0aWxzfSB7OnZhci1zeW1zIFt2YXItPnN5bSB2YXItZmlsdGVyIGZpbHRlci12YXJzIV0sIDp0eXBlIDpjbGpzLCA6c3ltIGNsanMtdGVzdC1ydW5uZXIuZ2VufSB7OnZhci1zeW1zIFt0eXBlPyBnZXQtbmFtZXNwYWNlIGVycm9yLW1lc3NhZ2UgZWxpZGUtcmVhZGVyLW1ldGEgbWlzc2luZy1yZW5hbWU/IHJlc29sdmUtaW52b2tlYWJsZS1ucyBhbmFseXplLWxldCB3aXRoLWNvcmUtbWFjcm9zIHZhci1tZXRhIGRlc3VnYXItbnMtc3BlY3MganMtdGFnPyBlbnN1cmUtZGVmcyBhbmFseXplLW1hcCBOVU1FUklDX1NFVCBhbmFseXplLXJlY29yZCBhbmFseXplLXNlcSogY29uc3RhbnRzLW5zLXN5bSByZXNvbHZlLWFsaWFzICpjbGpzLWRlcC1zZXQqIHJlc29sdmUtdmFyIHdyaXRlLWFuYWx5c2lzLWNhY2hlIGRpc2FsbG93aW5nLW5zKiBwcm9jZXNzLXJld3JpdGUtZm9ybSBqcy1zdGFyLXNlZyBkZXAtaGFzLWdsb2JhbC1leHBvcnRzPyByZWdpc3Rlci1zcGVjcyBnZXQtZXh0ZXJucyBnZW4tdXNlci1ucyAqcGFzc2VzKiBoYXMtZXh0ZXJuPyogaGFuZGxlLXN5bWJvbC1sb2NhbCBnZXQtZXhwYW5kZXItbnMgbWVzc2FnZSBwYXJzZS1pbnZva2UgKmNsanMtd2FybmluZy1oYW5kbGVycyogZGlzYWxsb3dpbmctcmVjdXIgYW5hbHl6ZS1zZXEqLXdyYXAgY29uZmlybS1iaW5kaW5ncyBoYXMtZXh0ZXJuPyBmb3JlaWduLWRlcD8gbWlzc2luZy1yZW5hbWUtbWFjcm8/IG1pc3NpbmctdXNlcyBtaXNzaW5nLXVzZT8gd2l0aC13YXJuaW5nLWhhbmRsZXJzIGVzNS1hbGxvd2VkIGFuYWx5emUgdXNlZD8gbm9kZS1tb2R1bGUtZGVwPyBwYXJzZS10eXBlIGdldHMgY2hlY2stcmVuYW1lLW1hY3Jvcy1pbmZlcnJpbmctbWlzc2luZyAqYWxsb3ctbnMqIGFuYWx5emUtY29uc3QgdHJhbnNpdC13cml0ZS1vcHRzIGZvcm1zLXNlcSogbXVuZ2UtZ29vZy1tb2R1bGUtbGliIGluZmVyLWludm9rZSAqY2xqcy1zdGF0aWMtZm5zKiBhcnJheS10eXBlcyAqY2hlY2stYWxpYXMtZHVwZXMqIG1hY3JvLW5zLW5hbWUgKnJlbG9hZC1tYWNyb3MqIGNvbXBpbGVyLW9wdGlvbnMgcmVzb2x2ZS1leGlzdGluZy12YXIgcmVxdWlyZWQ/IG5vZGUtbGlrZT8gKnVuY2hlY2tlZC1hcnJheXMqIHBhcnNlLWludm9rZSogKmNoZWNrZWQtYXJyYXlzKiBhbGlhc2FibGUtY2xqLW5zPyBhc3QtY2hpbGRyZW4gbG9hZGVkLWpzLW5zPyBhbmFseXplLXZlY3RvciB0cmFuc2l0LXJlYWQtb3B0cyB1bndyYXAtcXVvdGUgbmFtZXNwYWNlcyBlbGlkZS1hbmFseXplci1tZXRhIGFuYWx5emUtbGV0LWJvZHkgZXh0ZXJuLXByZSBnZXQtY29sIGJhc2ljLXZhbGlkYXRlLW5zLXNwZWMgKmNsanMtd2FybmluZ3MqIGFsaWFzLT50eXBlIGFuYWx5emVkPyBhbmFseXplLWRlcHMgYXJyYXktdHlwZT8gZG90dGVkLXN5bWJvbD8gKmNsanMtbWFjcm9zLWlzLWNsYXNzcGF0aCogbG9jYXRlLXNyYyBucy1zaWRlLWVmZmVjdHMgKmFsbG93LXJlZGVmKiBhbmFseXplLWZuLW1ldGhvZC1ib2R5IGluZmVyLXR5cGUgcGFyc2UtaW1wb3J0LXNwZWMgY2xqLW5zLT5jbGpzLW5zIGNvbnN0YW50LXZhbHVlPyBkdW1wLXNwZWNzICpmbi1pbnZva2UtZGlyZWN0KiB1c2UtPnJlcXVpcmUgaW5mZXJyZWQtdXNlLW1hY3JvcyByZWFkLWFuYWx5c2lzLWNhY2hlIGFuYWx5emUtc3ltYm9sIGNvbmZpcm0tdmFyLWV4aXN0cyBhbmFseXplLWtleXdvcmQgU0VOVElORUwgYW5hbHl6ZS1sZXQtYmluZGluZ3MgbXVuZ2UtZ2xvYmFsLWV4cG9ydCAqbG9vcC1sZXRzKiAtPnR5cGUtc2V0IGpzLXRhZyBqcy1yZXNlcnZlZCAqbG9hZC10ZXN0cyogcmVxdWlyZXMtYW5hbHlzaXM/IGNoZWNrLXVzZS1tYWNyb3MtaW5mZXJyaW5nLW1pc3NpbmcgY2Fub25pY2FsaXplLXR5cGUgbG9hZC1jb3JlIG1hY3JvZXhwYW5kLTEqIGNoZWNrLXVzZS1tYWNyb3MgZ2V0LWV4cGFuZGVyIGFuYWx5emUtanMtc3RhciBidWlsZC1hZmZlY3Rpbmctb3B0aW9ucy1zaGEgYnVpbGQtZG90LWZvcm0ganMtc3Rhci1pbnRlcnAgKnJlY3VyLWZyYW1lcyogY2FjaGVhYmxlLWZpbGVzIGFuYWx5emUtZm4tbWV0aG9kcy1wYXNzMiogbWFjcm9leHBhbmQtMSBhbmFseXplLWZpbGUgcmVzb2x2ZS1tYWNyby12YXIgYW5hbHl6ZS1sZXQtYmluZGluZy1pbml0IGluZmVyLXRhZyBjYW5vbmljYWxpemUtaW1wb3J0LXNwZWNzIGFuYWx5emUtZm9ybS1zZXEgYW5hbHl6ZS1sZXQtYm9keSogYW5hbHl6ZS1qcy1zdGFyKiBpbmZlcnJlZC1yZW5hbWUtbWFjcm9zIHBhcnNlLW5zLWVycm9yLW1zZyBtaXNzaW5nLXVzZS1tYWNybz8gcmVjb3JkLW5zK25hbWUgYW5hbHl6ZWQgcmVzb2x2ZS1zeW1ib2wgYWxsLXdhcm4gbWlzc2luZy1yZW5hbWVzIHJlc29sdmUqIGRlZmF1bHQtcGFzc2VzICpjbGpzLW1hY3Jvcy1wYXRoKiBsb2FkLW11dGV4IGNvbmZpcm0tdmFyLWV4aXN0LXdhcm5pbmcgdW5jaGVja2VkLWFycmF5cz8gYW5hbHl6ZS1kb3QgYW5hbHl6ZS1kby1zdGF0ZW1lbnRzIGdldC1saW5lIGFuYWx5emUtZG8tc3RhdGVtZW50cyogYW5hbHl6ZS1zZXEgY2FjaGUtYmFzZS1wYXRoIGRlc3VnYXItZG90dGVkLWV4cHIgZmluZC1kZWYtY2xhc2ggaGFzLWVycm9yLWRhdGE/IGdldC1leHBhbmRlciogbm8td2FybiBhbGxvd2luZy1yZWRlZiBmbi1uYW1lLXZhciBnb29nLW1vZHVsZS1kZXA/IG11bmdlLW5vZGUtbGliICpsb2FkLW1hY3JvcyogYWRkLXR5cGVzIGV4Y2x1ZGVkPyBlbXB0eS1lbnYgcHVibGljLW5hbWU/IGRlZmF1bHQtd2FybmluZy1oYW5kbGVyIHJlc29sdmUtbnMtYWxpYXMgaW50ZXJuLW1hY3JvcyBjb25zdC1leHByLT5jb25zdGFudC12YWx1ZSAqbWFjcm8taW5mZXIqIGdlbi1jb25zdGFudC1pZCBjYWNoZS1maWxlIGxpYiZzdWJsaWIgbWFjcm8tYXV0b2xvYWQtbnM/IGdldC10YWcgaW1wbGljaXQtbnNlcyB2YWxpZC1wcm90byBwYXJzZS1ucyBub3JtYWxpemUtanMtdGFnIGFuYWx5emUtbGlzdCB3YXJuaW5nIGltcGxpY2l0LWltcG9ydD8gbWlzc2luZy11c2UtbWFjcm9zIHJld3JpdGUtY2xqcy1hbGlhc2VzIGFuYWx5emUqIC1jbGpzLW1hY3Jvcy1sb2FkZWQgY2hlY2stdXNlcyBmaW5kLW1hdGNoaW5nLW1ldGhvZCAqcHJpdmF0ZS12YXItYWNjZXNzLW5vd2FybiogaW52b2tlLWFyZy10eXBlLXZhbGlkYXRvcnMgKmNsanMtZmlsZSogKmZpbGUtZGVmcyogYnVpbGQtYWZmZWN0aW5nLW9wdGlvbnMgaW5mZXItaWYgKnZlcmJvc2UqIGFuYWx5emUtanMtdmFsdWUgbnMtPm1vZHVsZS10eXBlIHNvdXJjZS1pbmZvIHdyYXBwaW5nLWVycm9ycyB0cmFuc2l0IGFuYWx5emUtZm4tbWV0aG9kLXBhcmFtIGFuYWx5emUtc2V0IG51bWVyaWMtdHlwZT8gYXN0PyBjaGVja2VkLWFycmF5cyBlbGlkZS1lbnYganMtbW9kdWxlLWV4aXN0cz8qIHBhcnNlLXJlcXVpcmUtc3BlYyBhbmFseXplLXdyYXAtbWV0YSBnZXQtanMtdGFnIHBhcnNlIGZvcm1zLXNlcSAqYW5hbHl6ZS1kZXBzKiBhbmFseXplLWxldC1iaW5kaW5ncyogcmVzb2x2ZS1pbXBvcnQgYW5hbHlzaXMtZXJyb3I/IHJlcGxhY2UtZW52LXBhc3MgcGFyc2UtbnMtZXhjbHVkZXMgYW5hbHl6ZS1mbi1tZXRob2RzLXBhc3MyIGNvcmUtbmFtZT8gZ2V0LWxldC10YWcgc3BlY2lhbHMgZWxpZGUtaXJyZWxldmFudC1tZXRhIHJlc29sdmUtbWFjcm8tbnMtYWxpYXMgY2hlY2staW52b2tlLWFyZy10eXBlcyBjb25maXJtLW5zIGRlZmF1bHQtbmFtZXNwYWNlcyAqdW5jaGVja2VkLWlmKiBjYW5vbmljYWxpemUtc3BlY3MgY29uZmlybS12YXItZXhpc3RzLXRocm93IGpzLW1vZHVsZS1leGlzdHM/IGFuYWx5emUtZm9ybSB3aXRoLWNvcmUtbWFjcm9zLWZpbGUgdmFyLWFzdCBhZGQtY29uc3RzIGVycm9yIGludm9rZWFibGUtbnM/ICpjbGpzLW5zKl0sIDp0eXBlIDpjbGosIDpzeW0gY2xqcy5hbmFseXplcn0gezp2YXItc3ltcyBbdHlwZT8gZ2V0LW5hbWVzcGFjZSBlbGlkZS1yZWFkZXItbWV0YSBtaXNzaW5nLXJlbmFtZT8gcmVzb2x2ZS1pbnZva2VhYmxlLW5zIGFuYWx5emUtbGV0IHZhci1tZXRhIGRlc3VnYXItbnMtc3BlY3MganMtdGFnPyBlbnN1cmUtZGVmcyBhbmFseXplLW1hcCBOVU1FUklDX1NFVCBhbmFseXplLXJlY29yZCBhbmFseXplLXNlcSogY29uc3RhbnRzLW5zLXN5bSByZXNvbHZlLWFsaWFzICpjbGpzLWRlcC1zZXQqIHJlc29sdmUtdmFyIGpzLXN0YXItc2VnIGRlcC1oYXMtZ2xvYmFsLWV4cG9ydHM/IHJlZ2lzdGVyLXNwZWNzIGdldC1leHRlcm5zICpwYXNzZXMqIGhhcy1leHRlcm4/KiBoYW5kbGUtc3ltYm9sLWxvY2FsIGdldC1leHBhbmRlci1ucyBtZXNzYWdlIHBhcnNlLWludm9rZSAqY2xqcy13YXJuaW5nLWhhbmRsZXJzKiBhbmFseXplLXNlcSotd3JhcCBjb25maXJtLWJpbmRpbmdzIGhhcy1leHRlcm4/IGZvcmVpZ24tZGVwPyBtaXNzaW5nLXJlbmFtZS1tYWNybz8gbWlzc2luZy11c2VzIG1pc3NpbmctdXNlPyBlczUtYWxsb3dlZCBhbmFseXplIHVzZWQ/IG5vZGUtbW9kdWxlLWRlcD8gcGFyc2UtdHlwZSBnZXRzIGNoZWNrLXJlbmFtZS1tYWNyb3MtaW5mZXJyaW5nLW1pc3NpbmcgKmFsbG93LW5zKiBhbmFseXplLWNvbnN0IG11bmdlLWdvb2ctbW9kdWxlLWxpYiBpbmZlci1pbnZva2UgKmNsanMtc3RhdGljLWZucyogYXJyYXktdHlwZXMgKmNoZWNrLWFsaWFzLWR1cGVzKiBtYWNyby1ucy1uYW1lICpyZWxvYWQtbWFjcm9zKiBjb21waWxlci1vcHRpb25zIHJlc29sdmUtZXhpc3RpbmctdmFyIHJlcXVpcmVkPyBub2RlLWxpa2U/IHBhcnNlLWludm9rZSogKmNoZWNrZWQtYXJyYXlzKiBhc3QtY2hpbGRyZW4gbG9hZGVkLWpzLW5zPyBhbmFseXplLXZlY3RvciB1bndyYXAtcXVvdGUgbmFtZXNwYWNlcyBlbGlkZS1hbmFseXplci1tZXRhIGFuYWx5emUtbGV0LWJvZHkgZXh0ZXJuLXByZSBnZXQtY29sIGJhc2ljLXZhbGlkYXRlLW5zLXNwZWMgKmNsanMtd2FybmluZ3MqIGFsaWFzLT50eXBlIGFuYWx5emVkPyBhbmFseXplLWRlcHMgYXJyYXktdHlwZT8gZG90dGVkLXN5bWJvbD8gKmNsanMtbWFjcm9zLWlzLWNsYXNzcGF0aCogKmFsbG93LXJlZGVmKiBhbmFseXplLWZuLW1ldGhvZC1ib2R5IGluZmVyLXR5cGUgcGFyc2UtaW1wb3J0LXNwZWMgY2xqLW5zLT5jbGpzLW5zIGNvbnN0YW50LXZhbHVlPyBkdW1wLXNwZWNzICpmbi1pbnZva2UtZGlyZWN0KiB1c2UtPnJlcXVpcmUgaW5mZXJyZWQtdXNlLW1hY3JvcyBhbmFseXplLXN5bWJvbCBjb25maXJtLXZhci1leGlzdHMgYW5hbHl6ZS1rZXl3b3JkIGFuYWx5emUtbGV0LWJpbmRpbmdzIG11bmdlLWdsb2JhbC1leHBvcnQgKmxvb3AtbGV0cyogLT50eXBlLXNldCBqcy10YWcganMtcmVzZXJ2ZWQgKmxvYWQtdGVzdHMqIGNoZWNrLXVzZS1tYWNyb3MtaW5mZXJyaW5nLW1pc3NpbmcgY2Fub25pY2FsaXplLXR5cGUgbWFjcm9leHBhbmQtMSogY2hlY2stdXNlLW1hY3JvcyBnZXQtZXhwYW5kZXIgYW5hbHl6ZS1qcy1zdGFyIGpzLXN0YXItaW50ZXJwICpyZWN1ci1mcmFtZXMqIGFuYWx5emUtZm4tbWV0aG9kcy1wYXNzMiogbWFjcm9leHBhbmQtMSByZXNvbHZlLW1hY3JvLXZhciBhbmFseXplLWxldC1iaW5kaW5nLWluaXQgaW5mZXItdGFnIGNhbm9uaWNhbGl6ZS1pbXBvcnQtc3BlY3MgYW5hbHl6ZS1mb3JtLXNlcSBhbmFseXplLWxldC1ib2R5KiBhbmFseXplLWpzLXN0YXIqIGluZmVycmVkLXJlbmFtZS1tYWNyb3MgcGFyc2UtbnMtZXJyb3ItbXNnIG1pc3NpbmctdXNlLW1hY3JvPyByZWNvcmQtbnMrbmFtZSBhbmFseXplZCByZXNvbHZlLXN5bWJvbCBtaXNzaW5nLXJlbmFtZXMgZGVmYXVsdC1wYXNzZXMgKmNsanMtbWFjcm9zLXBhdGgqIGNvbmZpcm0tdmFyLWV4aXN0LXdhcm5pbmcgdW5jaGVja2VkLWFycmF5cz8gYW5hbHl6ZS1kb3QgYW5hbHl6ZS1kby1zdGF0ZW1lbnRzIGdldC1saW5lIGFuYWx5emUtZG8tc3RhdGVtZW50cyogYW5hbHl6ZS1zZXEgZGVzdWdhci1kb3R0ZWQtZXhwciBmaW5kLWRlZi1jbGFzaCBoYXMtZXJyb3ItZGF0YT8gZm4tbmFtZS12YXIgZ29vZy1tb2R1bGUtZGVwPyBtdW5nZS1ub2RlLWxpYiAqbG9hZC1tYWNyb3MqIGFkZC10eXBlcyBleGNsdWRlZD8gZW1wdHktZW52IHB1YmxpYy1uYW1lPyBkZWZhdWx0LXdhcm5pbmctaGFuZGxlciByZXNvbHZlLW5zLWFsaWFzIGludGVybi1tYWNyb3MgY29uc3QtZXhwci0+Y29uc3RhbnQtdmFsdWUgKm1hY3JvLWluZmVyKiBnZW4tY29uc3RhbnQtaWQgbGliJnN1YmxpYiBtYWNyby1hdXRvbG9hZC1ucz8gZ2V0LXRhZyBpbXBsaWNpdC1uc2VzIHZhbGlkLXByb3RvIG5vcm1hbGl6ZS1qcy10YWcgYW5hbHl6ZS1saXN0IHdhcm5pbmcgaW1wbGljaXQtaW1wb3J0PyBtaXNzaW5nLXVzZS1tYWNyb3MgYW5hbHl6ZSogLWNsanMtbWFjcm9zLWxvYWRlZCBjaGVjay11c2VzIGZpbmQtbWF0Y2hpbmctbWV0aG9kICpwcml2YXRlLXZhci1hY2Nlc3Mtbm93YXJuKiBpbnZva2UtYXJnLXR5cGUtdmFsaWRhdG9ycyAqY2xqcy1maWxlKiAqZmlsZS1kZWZzKiBpbmZlci1pZiAqdmVyYm9zZSogYW5hbHl6ZS1qcy12YWx1ZSBucy0+bW9kdWxlLXR5cGUgc291cmNlLWluZm8gYW5hbHl6ZS1mbi1tZXRob2QtcGFyYW0gYW5hbHl6ZS1zZXQgbnVtZXJpYy10eXBlPyBhc3Q/IGNoZWNrZWQtYXJyYXlzIGVsaWRlLWVudiBqcy1tb2R1bGUtZXhpc3RzPyogcGFyc2UtcmVxdWlyZS1zcGVjIGFuYWx5emUtd3JhcC1tZXRhIGdldC1qcy10YWcgKmFuYWx5emUtZGVwcyogYW5hbHl6ZS1sZXQtYmluZGluZ3MqIHJlc29sdmUtaW1wb3J0IGFuYWx5c2lzLWVycm9yPyByZXBsYWNlLWVudi1wYXNzIHBhcnNlLW5zLWV4Y2x1ZGVzIGFuYWx5emUtZm4tbWV0aG9kcy1wYXNzMiBjb3JlLW5hbWU/IGdldC1sZXQtdGFnIHNwZWNpYWxzIGVsaWRlLWlycmVsZXZhbnQtbWV0YSByZXNvbHZlLW1hY3JvLW5zLWFsaWFzIGNoZWNrLWludm9rZS1hcmctdHlwZXMgY29uZmlybS1ucyBkZWZhdWx0LW5hbWVzcGFjZXMgY2Fub25pY2FsaXplLXNwZWNzIGNvbmZpcm0tdmFyLWV4aXN0cy10aHJvdyBqcy1tb2R1bGUtZXhpc3RzPyB2YXItYXN0IGFkZC1jb25zdHMgZXJyb3IgaW52b2tlYWJsZS1ucz8gKmNsanMtbnMqXSwgOnR5cGUgOmNsanMsIDpzeW0gY2xqcy5hbmFseXplcn0gezp2YXItc3ltcyBbd2l0aC1zdGF0ZSBmaW5kLW5zIHJlbW92ZS1ucyBucy1wdWJsaWNzIGdldC1vcHRpb25zIGluLWNsanMtdXNlciB3YXJuaW5nLW1lc3NhZ2Ugd2l0aC13YXJuaW5nLWhhbmRsZXJzIGFuYWx5emUgd2FybmluZy1lbmFibGVkPyBjdXJyZW50LXN0YXRlIG5zLXJlc29sdmUgcmVhZC1hbmFseXNpcy1jYWNoZSBlbmFibGVkLXdhcm5pbmdzIGVtcHR5LXN0YXRlIGFuYWx5emUtZmlsZSBkZWZhdWx0LXBhc3NlcyBuby13YXJuIGVtcHR5LWVudiBkZWZhdWx0LXdhcm5pbmctaGFuZGxlciB3aXRoLXBhc3NlcyBwYXJzZS1ucyBucy1pbnRlcm5zIGFsbC1ucyBjdXJyZW50LWZpbGUgY3VycmVudC1ucyBmb3Jtcy1zZXEgcmVzb2x2ZSBnZXQtanMtaW5kZXhdLCA6dHlwZSA6Y2xqLCA6c3ltIGNsanMuYW5hbHl6ZXIuYXBpfSB7OnZhci1zeW1zIFtOT1RfTkFUSVZFIElHTk9SRV9TWU0gQk9PTEVBTl9PUl9TRVEgQk9PTEVBTl9TWU0gQU5ZX1NZTV0sIDp0eXBlIDpjbGosIDpzeW0gY2xqcy5hbmFseXplci5pbXBsfSB7OnZhci1zeW1zIFtBTllfU1lNIEJPT0xFQU5fT1JfU0VRIEJPT0xFQU5fU1lNIElHTk9SRV9TWU0gTk9UX05BVElWRV0sIDp0eXBlIDpjbGpzLCA6c3ltIGNsanMuYW5hbHl6ZXIuaW1wbH0gezp2YXItc3ltcyBbd2l0aC1jb3JlLW1hY3JvcyBkaXNhbGxvd2luZy1ucyogZGlzYWxsb3dpbmctcmVjdXIgd2l0aC13YXJuaW5nLWhhbmRsZXJzIG5vLXdhcm4gYWxsb3dpbmctcmVkZWYgd3JhcHBpbmctZXJyb3JzIHdpdGgtY29yZS1tYWNyb3MtZmlsZV0sIDp0eXBlIDpjbGosIDpzeW0gY2xqcy5hbmFseXplci5tYWNyb3N9IHs6dmFyLXN5bXMgW2FwcGx5LXBhc3NlcyB3YWxrXSwgOnR5cGUgOmNsaiwgOnN5bSBjbGpzLmFuYWx5emVyLnBhc3Nlc30gezp2YXItc3ltcyBbYXBwbHktcGFzc2VzIHdhbGtdLCA6dHlwZSA6Y2xqcywgOnN5bSBjbGpzLmFuYWx5emVyLnBhc3Nlc30gezp2YXItc3ltcyBbcmVtb3ZlLWxvb3AtbGV0IHNpbXBsZS1vcHMgb3B0aW1pemUtb3Igbm8tc3RhdGVtZW50cz8gc2ltcGxlLW9yPyB0ZXN0PXRoZW4/IHRlc3Q9ZWxzZT8gc2ltcGxlLXRlc3QtYmluZGluZy1sZXQ/IHNpbXBsZS1vcD8gb3B0aW1pemFibGUtYW5kPyBvcHRpbWl6YWJsZS1vcj8gLT5leHByLWVudiByZXR1cm5zLWlmPyByZW1vdmUtbG9jYWwtcGFzcyBzaW1wbGUtYW5kPyBvcHRpbWl6ZS1hbmQgc2ltcGxlLXRlc3QtZXhwcj8gc2luZ2xlLWJpbmRpbmctbGV0PyBvcHRpbWl6ZV0sIDp0eXBlIDpjbGosIDpzeW0gY2xqcy5hbmFseXplci5wYXNzZXMuYW5kLW9yfSB7OnZhci1zeW1zIFtyZW1vdmUtbG9vcC1sZXQgc2ltcGxlLW9wcyBvcHRpbWl6ZS1vciBuby1zdGF0ZW1lbnRzPyBzaW1wbGUtb3I/IHRlc3Q9dGhlbj8gdGVzdD1lbHNlPyBzaW1wbGUtdGVzdC1iaW5kaW5nLWxldD8gc2ltcGxlLW9wPyBvcHRpbWl6YWJsZS1hbmQ/IG9wdGltaXphYmxlLW9yPyAtPmV4cHItZW52IHJldHVybnMtaWY/IHJlbW92ZS1sb2NhbC1wYXNzIHNpbXBsZS1hbmQ/IG9wdGltaXplLWFuZCBzaW1wbGUtdGVzdC1leHByPyBzaW5nbGUtYmluZGluZy1sZXQ/IG9wdGltaXplXSwgOnR5cGUgOmNsanMsIDpzeW0gY2xqcy5hbmFseXplci5wYXNzZXMuYW5kLW9yfSB7OnZhci1zeW1zIFtnZXQtbm9kZS1kZXBzIGNvbXBpbGUgaW5zdGFsbC1ub2RlLWRlcHMhIGFkZC1kZXBlbmRlbmN5LXNvdXJjZXMgYWRkLWltcGxpY2l0LW9wdGlvbnMgYWRkLWRlcGVuZGVuY2llcyBucy0+bG9jYXRpb24gdGFyZ2V0LWZpbGUtZm9yLWNsanMtbnMgbm9kZS1tb2R1bGVzIGNvbXBpbGVyLW9wdHM/IG1hcmstY2xqcy1ucy1mb3ItcmVjb21waWxlISBub2RlLWlucHV0cyBzcmMtZmlsZS0+dGFyZ2V0LWZpbGUgc291cmNlLW9uLWRpc2sgbnMtPnNvdXJjZSBzcmMtZmlsZS0+Z29vZy1yZXF1aXJlIGlucHV0cyBidWlsZCBoYW5kbGUtanMtbW9kdWxlcyBjbGpzLWRlcGVuZGVudHMtZm9yLW1hY3JvLW5hbWVzcGFjZXMgY29tcGlsYWJsZS0+aWpzIGdvb2ctZGVwLXN0cmluZyB3YXRjaCBwYXJzZS1qcy1ucyBvdXRwdXQtdW5vcHRpbWl6ZWQgaW5kZXgtaWpzIGRlcGVuZGVuY3ktb3JkZXJdLCA6dHlwZSA6Y2xqLCA6c3ltIGNsanMuYnVpbGQuYXBpfSB7OnZhci1zeW1zIFtkZWZhdWx0LWNvbXBpbGUgbWFpbiByZWFkLWVkbi1vcHRzIGdldC1vcHRpb25zIGFkZC1jb21tYW5kcyBub3JtYWxpemUgZ2V0LWRpc3BhdGNoIGRpc3BhdGNoPyBkZWZhdWx0LWNvbW1hbmRzIGhlbHAtc3RyIGxvYWQtZWRuLW9wdHMgZ2V0LW1haW4tbnMgd2F0Y2gtcHJvYyBkZWZhdWx0LW1haW4gaW5pdGlhbGl6ZSBib29sLWluaXQtb3B0aW9ucyBtZXJnZWQtY29tbWFuZHMgdGVtcC1vdXQtZGlyIG1pc3NpbmctcmVzb3VyY2UgdGFyZ2V0LT5yZXBsLWVudiBtaXNzaW5nLWZpbGVdLCA6dHlwZSA6Y2xqLCA6c3ltIGNsanMuY2xpfSB7OnZhci1zeW1zIFtvdXRwdXQtZGlyZWN0b3J5IC1jb21waWxlIHJ1bi1idW5kbGUtY21kIGFkZC1nb29nLWJhc2UgY2xqcy1kZXBlbmRlbmNpZXMgbWFwLT5qYXZhc2NyaXB0LWZpbGUgZW5zdXJlLWNsanMtYmFzZS1tb2R1bGUgb3B0aW1pemUtbW9kdWxlcyBjb252ZXJ0LWpzLW1vZHVsZXMgcGF0aC1mcm9tLWphcmZpbGUgY29tcHV0ZS11cHN0cmVhbS1ucG0tZGVwcyBhb3QtY2FjaGUtY29yZSBnZXQtZGF0YS1yZWFkZXJzIGNvbXBpbGFibGUtaW5wdXQtcGF0aHMgSVNvdXJjZU1hcCBzaGltLXByb2Nlc3M/IGNvbXBpbGUgZXhwb3J0LWRlcCBjaGVjay1vdXRwdXQtdG8gdmFsaWRhdGUtb3B0cyBjaGVjay1vdXRwdXQtd3JhcHBlciBhZGQtZGVwZW5kZW5jeS1zb3VyY2VzIGdldC1jb21waWxlZC1jbGpzIGFic29sdXRlLXBhcmVudCBleHBhbmQtbGlicyBsYW5nLWxldmVsIGtub3duLW9wdHMgYWRkLWdvb2ctbG9hZCBjb21waWxlLWRpciBhZGQtaW1wbGljaXQtb3B0aW9ucyBwcmVwcm9jZXNzLWpzIGFkZC1kZXBlbmRlbmNpZXMgLXBhdGhzIGdldC1kYXRhLXJlYWRlcnMqIHdhcm5pbmctdHlwZXMgY2xvc3VyZS10cmFuc3BpbGUgcGF0aC1yZWxhdGl2ZS10byBjaGVjay1wcmVsb2FkcyBlbnN1cmUtbW9kdWxlLW9wdHMgY2hlY2stdW5wcm92aWRlZCB0YXJnZXQtZmlsZS1mb3ItY2xqcy1ucyBtYXliZS1pbnN0YWxsLW5vZGUtZGVwcyEgZmluZ2VycHJpbnRlZC1tb2R1bGVzIC1zb3VyY2UtdXJsIElucHV0cyBhZGQtaGVhZGVyIHJlbC1vdXRwdXQtcGF0aCBtYXJrLWNsanMtbnMtZm9yLXJlY29tcGlsZSEgbmFtZS1jaGFycyBjb21waWxlLXNvdXJjZXMgb3V0cHV0LW9uZS1maWxlIGxvYWQtZXh0ZXJucyBmaW5kLWNsanMtZGVwZW5kZW5jaWVzIENvbXBpbGFibGUgamF2YXNjcmlwdC1uYW1lIHJhbmRvbS1jaGFyIHRvLWNoYXJzZXQgY29tcGlsZS1pbnB1dHMgYWRkLXByZWxvYWRzIHBhcmFsbGVsLWNvbXBpbGUtc291cmNlcyBhZGQtZXh0ZXJucy1zb3VyY2VzIHByZWFtYmxlLWZyb20tcGF0aHMgamF2YXNjcmlwdC1maWxlIGphci1maWxlLXRvLWRpc2sgcHJvY2Vzcy1qcy1tb2R1bGVzIG5vZGUtbW9kdWxlLWRlcHMgLT5qcy1zb3VyY2UtZmlsZXMgcmVtb3ZlLWdvb2ctYmFzZSAtPkphdmFTY3JpcHRGaWxlIG1ha2UtY29udmVydC1qcy1tb2R1bGUtb3B0aW9ucyBjaGVjay1ucG0tZGVwcyBjb21waWxlZC1maWxlIG5vZGUtaW5wdXRzIGFkZC1jb252ZXJ0ZWQtc291cmNlIG91dHB1dC1kZXBzLWZpbGUgbWFrZS1wcmVhbWJsZSBjaGVjay1zb3VyY2UtbWFwIGRlcHMtZmlsZSBjb21waWxlLW5zIGluZGV4LW5vZGUtbW9kdWxlcy1kaXIgcmVzb2x2ZS13YXJuaW5nLWhhbmRsZXJzIGpzLWRlcGVuZGVuY2llcyBzcmMtZmlsZS0+dGFyZ2V0LWZpbGUgY2hlY2stb3V0cHV0LWRpciBjb21waWxlLWZpbGUgbGFuZy1rZXktPmxhbmctbW9kZSBjb21waWxlLWNsaWVudC1qcyBqcy10cmFuc2Zvcm1zIGxvYWQtZGF0YS1yZWFkZXJzISB0cmFuc3BpbGUgY2xqcy1zb3VyY2UtZm9yLW5hbWVzcGFjZSB3cml0ZS1qcz8gc291cmNlLW9uLWRpc2sgd3JpdGUtamF2YXNjcmlwdCBwcmVsb2FkcyByYW5kb20tc3RyaW5nIGZvcmVpZ24tc291cmNlPyBzdHJpbmctPmNoYXJzZXQgY29tcGlsZS1mcm9tLWphciBhZGQtanMtc291cmNlcyBjcmVhdGUtY2xpZW50LWpzLWZpbGUgLWZpbmQtc291cmNlcyBjb21waWxlLWxvYWRlciBvdXRwdXQtYm9vdHN0cmFwIGJ1bmRsZT8gYWRkLWRlcC1zdHJpbmcgcmVxdWlyZXMtdHJhbnNwaWxlPyBhZGQtY29yZS1tYWNyb3MtaWYtY2xqcy1qcyBqcy1zb3VyY2UtZmlsZSBpbi1zYW1lLWRpcj8gc291cmNlLWZvci1uYW1lc3BhY2Ugbm9kZS1maWxlLXNlcS0+bGlicy1zcGVjIGNoZWNrLWNhY2hlLWFuYWx5c2lzLWZvcm1hdCBzcmMtZmlsZS0+Z29vZy1yZXF1aXJlIHRyYW5zcGlsZS1vcHRpb25zIC1zb3VyY2UtbWFwIGNoZWNrLW5vZGUtdGFyZ2V0IGdldC11cHN0cmVhbS1kZXBzKiBidWlsZCBoYW5kbGUtanMtbW9kdWxlcyB3cml0ZS12YXJpYWJsZS1tYXBzIGNsanMtZGVwZW5kZW50cy1mb3ItbWFjcm8tbmFtZXNwYWNlcyBucG0tZGVwcy1qcyB0cmFuc3BpbGU/IGZpbmdlcnByaW50LW91dC1maWxlIGVzNS13YXJuaW5ncyBjaGVjay1zb3VyY2UtbWFwLXBhdGggZ2V0LXNvdXJjZS1maWxlcyBsaWItcmVsLXBhdGggbWFwLT5KYXZhU2NyaXB0RmlsZSBub3JtYWxpemUtY2xvc3VyZS1kZWZpbmVzIGluZGV4LW5vZGUtbW9kdWxlcyBidWlsZC1wcm92aWRlcyBidWlsZC1tb2R1bGVzIGZpbmQtamFyLXNvdXJjZXMgd2F0Y2ggb3V0cHV0LW1haW4tZmlsZSBmaW5kLXNvdXJjZXMgb3V0cHV0LW1vZHVsZXMgc2FtZS1vci1zdWJkaXJlY3Rvcnktb2Y/IHJlcG9ydC1mYWlsdXJlIG1ha2UtY2xvc3VyZS1jb21waWxlciBleHBhbmQtbGFuZy1rZXkgYWRkLXNvdXJjZS1tYXAtbGluayBlbGlkZS1zdHJpY3QgcGFyc2UtanMtbnMgY2hlY2stbGV2ZWwgbW9kdWxlLXR5cGUtPmtleXdvcmQgY29tcGlsZS1mb3JtLXNlcSBjb21waWxlLXRhc2sgb3V0cHV0LXVub3B0aW1pemVkIGFic29sdXRlLXBhdGg/IGVtaXQtb3B0aW1pemVkLXNvdXJjZS1tYXAgY2hlY2stbWFpbiB1cmwtPm5pby1wYXRoIHJlYWQtanMgYWRkLXdyYXBwZXIgbWFrZS1vcHRpb25zIHNldC1vcHRpb25zIGdldC11cHN0cmVhbS1kZXBzIGZvcmVpZ24tZGVwcy1zdHIgb3B0aW1pemVdLCA6dHlwZSA6Y2xqLCA6c3ltIGNsanMuY2xvc3VyZX0gezp2YXItc3ltcyBbZW1pdC1jb25zdGFudHMtdGFibGUtdG8tZmlsZSBwcm90b2NvbC1wcmVmaXggZW1pdC1hcmd1bWVudHMtdG8tYXJyYXkgZW1pdC1qcy1vYmplY3QgY29tcGlsZS1maWxlKiBkaXN0aW5jdC1rZXlzPyBtdW5nZSBjb21waWxlLXJvb3QgZ2V0LWRlZmluZSB2YWxpZC1kZWZpbmUtdmFsdWU/IGZpbmQtc291cmNlIGVtaXQtc2V0IGVtaXQtY2FjaGVkLWNvcmUgZW1pdHMta2V5d29yZCBlbWl0LWluZmVycmVkLWV4dGVybnMtdG8tZmlsZSAqbGV4aWNhbC1yZW5hbWVzKiBlbWl0LWxldCB3aXRoLWNvcmUtY2xqcyBmaW5kLXJvb3Qtc291cmNlcyBzdWJsaWItc2VsZWN0IGFsbC1kaXN0aW5jdD8gY2xqcy1yZXNlcnZlZC1maWxlLW5hbWVzIGJhc2UtdHlwZXMgcmVzb2x2ZS10eXBlICpzb3VyY2UtbWFwLWRhdGEtZ2VuLWNvbCogZW1pdC13aXRoLW1ldGEgZW1pdC12YXJpYWRpYy1mbi1tZXRob2QganMtcmVzZXJ2ZWQgKnJlY29tcGlsZWQqIHJlbmFtZS10by1qcyByZXF1aXJlcy1jb21waWxhdGlvbj8gZW1pdHMgZW1pdC1jb25zdGFudCBlbWl0LWRvdCBlbWl0LWNvbnN0YW50cy10YWJsZSBlbWl0LWxpc3QgZ2V0LWZpcnN0LW5zLXNlZ21lbnQgZW1pdC1mbi1wYXJhbXMgbXVuZ2UtcmVzZXJ2ZWQgZW1pdC1zb3VyY2UgZm4tc2VsZi1uYW1lIGxvYWQtbGlicyBjb21waWxlLWZpbGUgbWFjcm8tbnM/IGVtaXQtY29uc3RhbnQtbm8tbWV0YSBtdW5nZS1wYXJhbS1yZXR1cm4gZW1pdC1qcy1hcnJheSBmaW5kLW5zLXN0YXJ0cy13aXRoIGVtaXQqIGVtaXQtY29uc3RhbnQqIGNoZWNraW5nLXR5cGVzPyBjbGpzLWZpbGVzLWluIGVtaXQtZm4tbWV0aG9kIGVtaXQtY29tbWVudCBoYXNoLXNjb3BlIGVtaXQtYXBwbHktdG8gZW1pdHMtc3ltYm9sIGZhbHNleS1jb25zdGFudD8gZW1pdC1jb25zdGFudHMtY29tbWEtc2VwICpzb3VyY2UtbWFwLWRhdGEqIGVtaXQtcmVjb3JkLXZhbHVlIGVtaXQtdmFyIG1hcHBlZC10eXBlcyByZXNvbHZlLXR5cGVzIGNhY2hlZC1jb3JlICppbnB1dHMqIGVtaXQtc3RyIGNvbXBpbGVkLWJ5LXN0cmluZyBlbWl0LW1hcCBlbWl0LXZlY3RvciB0cnV0aHktY29uc3RhbnQ/IGVtaXRsbiB1cmwtcGF0aCBlbWl0IHNhZmUtdGVzdD8gZW1pdC1leHRlcm5zIGVtaXQtZ2xvYmFsLWV4cG9ydCBlbWl0LXNvdXJjZS1tYXAgZGlzdGluY3QtY29uc3RhbnRzPyBlbWl0LXdyYXAgc2hhZG93LWRlcHRoXSwgOnR5cGUgOmNsaiwgOnN5bSBjbGpzLmNvbXBpbGVyfSB7OnZhci1zeW1zIFtwcm90b2NvbC1wcmVmaXggZW1pdC1hcmd1bWVudHMtdG8tYXJyYXkgZW1pdC1qcy1vYmplY3QgZGlzdGluY3Qta2V5cz8gbXVuZ2UgZ2V0LWRlZmluZSB2YWxpZC1kZWZpbmUtdmFsdWU/IGVtaXQtc2V0IGVtaXRzLWtleXdvcmQgKmxleGljYWwtcmVuYW1lcyogZW1pdC1sZXQgc3VibGliLXNlbGVjdCBhbGwtZGlzdGluY3Q/IGNsanMtcmVzZXJ2ZWQtZmlsZS1uYW1lcyBiYXNlLXR5cGVzIHJlc29sdmUtdHlwZSAqc291cmNlLW1hcC1kYXRhLWdlbi1jb2wqIGVtaXQtd2l0aC1tZXRhIGVtaXQtdmFyaWFkaWMtZm4tbWV0aG9kIGpzLXJlc2VydmVkICpyZWNvbXBpbGVkKiBlbWl0cyBlbWl0LWNvbnN0YW50IGVtaXQtZG90IGVtaXQtY29uc3RhbnRzLXRhYmxlIGVtaXQtbGlzdCBnZXQtZmlyc3QtbnMtc2VnbWVudCBlbWl0LWZuLXBhcmFtcyBtdW5nZS1yZXNlcnZlZCBmbi1zZWxmLW5hbWUgbG9hZC1saWJzIG11bmdlLXBhcmFtLXJldHVybiBlbWl0LWpzLWFycmF5IGZpbmQtbnMtc3RhcnRzLXdpdGggY2hlY2tpbmctdHlwZXM/IGVtaXQtZm4tbWV0aG9kIGVtaXQtY29tbWVudCBoYXNoLXNjb3BlIGVtaXQtYXBwbHktdG8gZW1pdHMtc3ltYm9sIGZhbHNleS1jb25zdGFudD8gZW1pdC1jb25zdGFudHMtY29tbWEtc2VwICpzb3VyY2UtbWFwLWRhdGEqIGVtaXQtcmVjb3JkLXZhbHVlIGVtaXQtdmFyIG1hcHBlZC10eXBlcyByZXNvbHZlLXR5cGVzICppbnB1dHMqIGVtaXQtc3RyIGVtaXQtbWFwIGVtaXQtdmVjdG9yIHRydXRoeS1jb25zdGFudD8gZW1pdGxuIGVtaXQgc2FmZS10ZXN0PyBlbWl0LWV4dGVybnMgZW1pdC1nbG9iYWwtZXhwb3J0IGRpc3RpbmN0LWNvbnN0YW50cz8gc2hhZG93LWRlcHRoXSwgOnR5cGUgOmNsanMsIDpzeW0gY2xqcy5jb21waWxlcn0gezp2YXItc3ltcyBbbXVuZ2UgY29tcGlsZS1yb290IHdpdGgtY29yZS1jbGpzIHJlcXVpcmVzLWNvbXBpbGF0aW9uPyBjb21waWxlLWZpbGUgY2xqcy1maWxlcy1pbiBlbWl0XSwgOnR5cGUgOmNsaiwgOnN5bSBjbGpzLmNvbXBpbGVyLmFwaX0gezp2YXItc3ltcyBbZW1pdC13cmFwXSwgOnR5cGUgOmNsaiwgOnN5bSBjbGpzLmNvbXBpbGVyLm1hY3Jvc30gezp2YXItc3ltcyBbdW5zYWZlLWJpdC1hbmQgbWFjcm9leHBhbmQgdW5jaGVja2VkLXJlbWFpbmRlci1pbnQgd2hlbi1maXJzdCBjb25kLT4+IGJpdC1zZXQgaW1wb3J0LW1hY3JvcyB3aGlsZSBzYXRpc2ZpZXM/IHVuY2hlY2tlZC1zdWJ0cmFjdC1pbnQgbnMtdW5tYXAgaW1wb3J0IGJpdC1zaGlmdC1yaWdodCBhZ2V0IHNwZWNpZnkgdnN3YXAhIGNhY2hpbmctaGFzaCBiaXQtc2hpZnQtbGVmdCBjb2VyY2l2ZS1ub3QgZGVjIHVuY2hlY2tlZC1nZXQgbnMtcHVibGljcyA8IGpzLWZuPyB0aGlzLWFzIC4uIGRlbGF5IHNvbWU/IHVuY2hlY2tlZC1uZWdhdGUgc2ltcGxlLWJlbmNobWFyayB1bmNoZWNrZWQtaW5jLWludCB1bmNoZWNrZWQtc2V0IGpzLXN0ciBiaXQtc2hpZnQtcmlnaHQtemVyby1maWxsIGltcGxlbWVudHM/IGdvb2ctZGVmaW5lIHBvcz8gc3BlY2lmeSEgaWYtbm90IGFsZW5ndGggYml0LXhvciBkb3NlcSB1bnNpZ25lZC1iaXQtc2hpZnQtcmlnaHQgbmVnPyB1bmNoZWNrZWQtZmxvYXQgdW5kZWZpbmVkPyBkZWZ0eXBlIG1hc2sgd2hlbi1sZXQgZGl2aWRlIGNvZXJjaXZlLWJvb2xlYW4gPD0gaWYtc29tZSAqIG1pbiBsYXp5LXNlcSBqcy1kZWxldGUgdHJ1dGhfIGpzLWRlYnVnZ2VyIGxldCAtPiBjb2VyY2l2ZS1ub3Q9IGRvdG8gYXJlZHVjZSBkb3VibGUgYml0LWFuZC1ub3QgdW5jaGVja2VkLWFkZC1pbnQgZm4gc2hvcnQgdW5jaGVja2VkLWRvdWJsZSBmYXN0LXBhdGgtcHJvdG9jb2xzIHN0cmluZz8ganMtYXJndW1lbnRzIHVuY2hlY2tlZC1tdWx0aXBseS1pbnQgYXMtPiB3aGVuLW5vdCB3aGVuIGludCA+IGtleXdvcmQ/IHVzZS1tYWNyb3MgdW5jaGVja2VkLW11bHRpcGx5IGdlbi1hcHBseS10byBzb21lLT4+IHVuY2hlY2tlZC1kZWMgZGVmbiBmbG9hdCBqcy1pbiBlczYtaXRlcmFibGUgYW1hcCB1c2UgZGVjbGFyZSBmYXN0LXBhdGgtcHJvdG9jb2wtcGFydGl0aW9ucy1jb3VudCAtIGhhc2gtc2V0IG9yIGV4dGVuZC10eXBlIG1hY3JvZXhwYW5kLTEgYml0LXRlc3QgZGVmbWV0aG9kIHRpbWUgemVybz8gcmVxdWlyZSB1bmNoZWNrZWQtZGVjLWludCBtZW1mbiBqcy1vYmogbmlsPyBleHRlbmQtcHJvdG9jb2wgY29uZC0+IGRvdGltZXMgYml0LWFuZCByZWlmeSBpbnN0YW5jZT8gbG9hZC1maWxlKiBkZWZvbmNlIHVuY2hlY2tlZC1hZGQgaWRlbnRpY2FsPyB1bmNoZWNrZWQtZGl2aWRlLWludCBkZWZuLSBkZWZwcm90b2NvbCB1bmNoZWNrZWQtc3VidHJhY3QgYXNzZXJ0IHRydWU/IGFycmF5IGxldGZuIC8gYml0cG9zIGJpdC1vciB2ZWN0b3IgPj0gbG9vcCBiaXQtZmxpcCBqcy1tb2Qgd2l0aC1vdXQtc3RyIGNvbmRwIGNvbmQgc29tZS0+IG5zLWludGVybnMgZm9yIGJpbmRpbmcgYXJyYXktbWFwIHVuY2hlY2tlZC1ieXRlIG5zLWltcG9ydHMgZGVmbWFjcm8gdW5jaGVja2VkLXNob3J0IGluYyB3aXRoLXJlZGVmcyBiaXQtY2xlYXIgbG9ja2luZyBsaXN0ICsgYXNldCBkZXN0cnVjdHVyZSBkZWZtdWx0aSBzdHIgY29lcmNpdmUtPSBoYXNoLW1hcCBnZW4tYXBwbHktdG8tc2ltcGxlIGlmLWxldCBmYWxzZT8gY2FzZSBleGlzdHM/IGJpdC1ub3QgYnl0ZSBtYXggPT0gbGF6eS1jYXQgY29tbWVudCBjb3B5LWFyZ3VtZW50cyB1bnNhZmUtY2FzdCByZXNvbHZlIGRlZnJlY29yZCBtYWtlLWFycmF5IHVuY2hlY2tlZC1uZWdhdGUtaW50IHVuY2hlY2tlZC1pbmMgYW5kIG51bWJlcj8ganMtY29tbWVudCBzeW1ib2w/IHdoZW4tc29tZSB1bmNoZWNrZWQtY2hhciByZXF1aXJlLW1hY3JvcyAtPj4ganMtaW5saW5lLWNvbW1lbnQgZHQtPmV0IHJlZmVyLWNsb2p1cmVdLCA6dHlwZSA6Y2xqLCA6c3ltIGNsanMuY29yZX0gezp2YXItc3ltcyBbanMtPmNsaiBzb3J0LWJ5IElUcmFuc2llbnRBc3NvY2lhdGl2ZSBjaHVuay1maXJzdCBwcmludC1tZXRhPyBtMy1oYXNoLWludCBwci1zdHIqIGVkdWN0aW9uIHRyZWUtc2VxIHVuY2hlY2tlZC1yZW1haW5kZXItaW50IHV1aWQgc2VxIHJlZHVjZSBJVVVJRCBJTklUIGZpbmQtbnMgY29udGFpbnM/IGV2ZXJ5PyBrZWVwLWluZGV4ZWQgc3VicyBqcy1zeW1ib2w/IElGaW5kIHNldCBNT0RVTEVfVVJJUyB0YWtlLWxhc3QgYml0LXNldCBzdHJpbmctaGFzaC1jYWNoZS1jb3VudCBxdWFsaWZpZWQta2V5d29yZD8gLXdpdGgtbWV0YSBidXRsYXN0IHVuY2hlY2tlZC1zdWJ0cmFjdC1pbnQgLWl0ZXJhdG9yICpwcmludC1uYW1lc3BhY2UtbWFwcyogdGFrZS1udGggZmlyc3QgbmF0aXZlLXNhdGlzZmllcz8gc2VxPyAtc29ydGVkLXNlcS1mcm9tIHByaW50bG4tc3RyIGluc3QtbXMgaXRlcmF0ZSAtZW1wdHkgbmV3bGluZSBJTG9va3VwIC1jaHVua2VkLXJlc3Qgd3JpdGUtYWxsIGZuPyAtcHJlZmVyLW1ldGhvZCAtYXNzb2MgZG9hbGwga2V5d29yZC1pZGVudGljYWw/ICpwcmludC1lcnItZm4qIHByZWZlcnMgLWpzLT5jbGogZGVkdXBlIGRpc3NvYyBhdG9tIGJpdC1zaGlmdC1yaWdodCAqY2xvanVyZXNjcmlwdC12ZXJzaW9uKiAtZmlyc3QgcGVlayBJS1ZSZWR1Y2UgYWdldCAtd3JpdGUgaXRlciBtay1ib3VuZC1mbiBsYXN0IC1kZWZhdWx0LWRpc3BhdGNoLXZhbCBwciBuYW1lc3BhY2Ugb2JqLW1hcCAtY29uaiA9IElUcmFuc2llbnRNYXAgdGFrZSB2ZWN0b3I/IGJvb2xlYW4gSUNodW5rIGJpdC1zaGlmdC1sZWZ0IHJhbmRvbS11dWlkIGFueT8gcmFuZC1pbnQgYWNsb25lIHZyZXNldCEgY2h1bmsgZGVjIEFQZXJzaXN0ZW50VmVjdG9yIG1hcCBqdXh0IDwgKmV2YWwqIHRlc3QgcmVzdCBleC1kYXRhIC1kcm9wLWZpcnN0IGlzYT8gYm9vbGVhbj8gLWNsb25lIG11bmdlIERFTVVOR0VfTUFQIHJlLXNlcSBjaGFyPyBtYWtlLWhpZXJhcmNoeSBQUk9UT0NPTF9TRU5USU5FTCAtcmVkdWNlIC1jb3VudCBzd2FwLXZhbHMhIGtlZXAgY2hhciBtYXBjYXQgdW5jaGVja2VkLWxvbmcgbTMtc2VlZCBzb21lPyB1bmNoZWNrZWQtbmVnYXRlIHJlbW92ZS10YXAgc3ltYm9sLWlkZW50aWNhbD8gKmNvbW1hbmQtbGluZS1hcmdzKiByZXZlcnNlIGluc3Q/IHJhbmdlIGJpdC1jb3VudCBzb3J0IHVuY2hlY2tlZC1pbmMtaW50IC1jb21wYXJlIG1hcC1pbmRleGVkIGFycmF5LWxpc3QgcmFuZC1udGggY29tcCBhcnJheS1jaHVuayBkaXNwYXRjaC1mbiBiaXQtc2hpZnQtcmlnaHQtemVyby1maWxsIC1hcy10cmFuc2llbnQgZG9ydW4gcHItc2VxdWVudGlhbC13cml0ZXIgc2ltcGxlLXN5bWJvbD8gSUluZGV4ZWQgZGlzaiBJUHJpbnRXaXRoV3JpdGVyIElWZWN0b3IgSUl0ZXJhYmxlIGV2YWwgY29ucyBmbG9hdHMgcG9zPyBmbmlsIG1lcmdlLXdpdGggbnRocmVzdCAqd2Fybi1vbi1pbmZlciogLWZpbmQgc2VxdWVudGlhbD8gTG9uZ0ltcGwgbTMtbWl4LUgxIHByaW0tc2VxICpwcmludC1sZXZlbCogc2h1ZmZsZSBoYXNoLWtleXdvcmQgZmluZCBhbGVuZ3RoIGJpdC14b3IgdW5zaWduZWQtYml0LXNoaWZ0LXJpZ2h0IG5lZz8gLXJlbW92ZS1tZXRob2QganMtaW52b2tlIG0zLW1peC1LMSB1bmNoZWNrZWQtZmxvYXQgdW5kZWZpbmVkPyBJTWV0YSByZWR1Y2VkPyBkaXNqISAtbG9va3VwIGZsb2F0PyBJQ2xvbmVhYmxlIElFbmNvZGVDbG9qdXJlIGJvb2xlYW5zIGludC1hcnJheSBzZXQ/IGl0ZXJhYmxlPyBjYXQgLXByLXdyaXRlciBmbHVzaCBzZXQtZnJvbS1pbmRleGVkLXNlcSB0YWtlLXdoaWxlIHZhcnktbWV0YSBJTmV4dCBpc19wcm90b18gU1RBUlQgSUNvdW50ZWQgSU1hcEVudHJ5IDw9IE1PRFVMRV9JTkZPUyBjb25qISAtcG9wIHJlcGVhdGVkbHkgemlwbWFwIHJlc2V0LXZhbHMhIElTdGFjayAtcmVtb3ZlLXdhdGNoIElWb2xhdGlsZSByZW1vdmUgKiByZS1wYXR0ZXJuIG1pbiAtcGVyc2lzdGVudCEgLW50aCBwb3AhIGNodW5rLWFwcGVuZCAqdW5jaGVja2VkLWFycmF5cyogcHJuLXN0ciBJUmV2ZXJzaWJsZSByZXZlcnNpYmxlPyAtcmVhbGl6ZWQ/IC1hZGQtd2F0Y2ggLWRlcmVmLXdpdGgtdGltZW91dCBjb25qIC1zb3J0ZWQtc2VxIHRyYW5zZHVjZSAtc3dhcCEgKnByaW50LWxlbmd0aCoganMtZGVsZXRlIHRydXRoXyBhcnJheS1pbmRleC1vZiBrZXktPmpzIElFbmNvZGVKUyBjb21wYXJlLWFuZC1zZXQhIGFycmF5LXNlcSBpbnRlcmxlYXZlIHByaW50LW1hcCBtYXA/IG0zLUMxIGdldCBpZGVudGl0eSBpbnRvIGxvbmcgZG91YmxlIHZvbGF0aWxlPyAta2V5IG5maXJzdCBtZXRhIC1rdi1yZWR1Y2UgSUhhc2ggYml0LWFuZC1ub3QgdmFyPyAtY29tcGFyYXRvciB1bmNoZWNrZWQtYWRkLWludCBoYXNoLW9yZGVyZWQtY29sbCByZXNldC1tZXRhISBJRXF1aXYgY3ljbGUgLWRlcmVmIGVtcHR5PyBzaG9ydCAtY2xqLT5qcyAtY2h1bmtlZC1maXJzdCBhZGQtdGFwIGZpbHRlcnYgaGFzaCBxdW90IG5zLWludGVybnMqIHVuY2hlY2tlZC1kb3VibGUgcmFuZ2VkLWl0ZXJhdG9yIElUcmFuc2llbnRWZWN0b3Iga2V5IGxvbmdzIG5vdD0gc2V0LXByaW50LWVyci1mbiEgZmFzdC1wYXRoLXByb3RvY29scyBzdHJpbmc/IHVyaT8gZXM2LWl0ZXJhdG9yIHByLXN0ci13aXRoLW9wdHMgbTMtQzIgKnByaW50LW5ld2xpbmUqIHVuY2hlY2tlZC1tdWx0aXBseS1pbnQgY2h1bmstcmVzdCByZW1vdmUtYWxsLW1ldGhvZHMgdHJhbXBvbGluZSBkb3VibGU/IHZlYyAqcHJpbnQtbWV0YSogLW5vdGlmeS13YXRjaGVzIGludCBtYXAtZW50cnk/IHJhbmQgc2Vjb25kIGZpbmQtbnMtb2JqIElFZGl0YWJsZUNvbGxlY3Rpb24gaGFzaC1jb21iaW5lID4gLW5hbWUgcmVwbGFjZSBpbnQ/IGFzc29jaWF0aXZlPyB1bmNoZWNrZWQtaW50IGpzLWtleXMgaW5zdC1tcyoga2V5d29yZD8gYXJyYXktaXRlciBmb3JjZSBncm91cC1ieSAtcnNlcSBwcm4gZGVmYXVsdC1kaXNwYXRjaC12YWwganMtaXRlcmFibGU/IHVuY2hlY2tlZC1tdWx0aXBseSBldmVuPyBlczYtaXRlcmF0b3Itc2VxIHVuY2hlY2tlZC1kZWMgSW5zdCBwZXJzaXN0ZW50LWFycmF5LW1hcC1zZXEgdGFnZ2VkLWxpdGVyYWw/IGRvdWJsZS1hcnJheSBjcmVhdGUtbnMgZGVmbiBzcHJlYWQgcnNlcSBleC1jYXVzZSBJUmVzZXQgSUVtcHR5YWJsZUNvbGxlY3Rpb24gZXgtbWVzc2FnZSAqcHJpbnQtZm4tYm9kaWVzKiBzdHJpbmctcHJpbnQgZmxvYXQgSVJlY29yZCBwci1zdHIgZXM2LXNldC1lbnRyaWVzLWl0ZXJhdG9yIGNvbmNhdCAtbWV0aG9kcyBqcy1yZXNlcnZlZCBJRGVyZWZXaXRoVGltZW91dCBzeW1ib2wgdG8tYXJyYXktMmQgRXhjZXB0aW9uSW5mbyBtb2QgSVNldCBwb3AgSVBlbmRpbmcgLWVudHJ5LWtleSBDSEFSX01BUCBkaXNzb2MhIHJlZHVjdGlvbnMgZmFzdC1wYXRoLXByb3RvY29sLXBhcnRpdGlvbnMtY291bnQgaW5kZXhlZD8gLSAtZXF1aXYgYXNzb2MhIGhhc2gtc2V0IHJlZHVjZS1rdiByZXNldCEgbmFtZSBGbiBmZmlyc3Qgc29ydGVkLXNldCBjb3VudGVkPyB0YWdnZWQtbGl0ZXJhbCBwcmludGxuIGFzc29jLWluIGJpdC10ZXN0IElTd2FwIG1lbW9pemUgYWx0ZXItbWV0YSEgemVybz8gc2ltcGxlLWtleXdvcmQ/ICptYWluLWNsaS1mbiogLWFzc29jLW4gdW5jaGVja2VkLWRlYy1pbnQgcGVyc2lzdGVudCEgc2V0LXByaW50LWZuISBubmV4dCBhZGQtd2F0Y2ggbm90LWV2ZXJ5PyByZW0gaWZpbmQ/IHNvbWUgSU5hbWVkIElSZWR1Y2UgbmVnLWludD8gZHJvcCBqcy1vYmogSVRyYW5zaWVudENvbGxlY3Rpb24gbnRoIHNvcnRlZD8gbmlsPyBzcGxpdC1hdCBwcm4tc3RyLXdpdGgtb3B0cyBub3QtbmF0aXZlIHJhbmRvbS1zYW1wbGUgc2VsZWN0LWtleXMgYml0LWFuZCBib3VuZGVkLWNvdW50IHVwZGF0ZSBnZW5zeW1fY291bnRlciBmaW5kLW1hY3Jvcy1ucyBsaXN0KiB1cGRhdGUtaW4gcHJlZmVyLW1ldGhvZCBlbnN1cmUtcmVkdWNlZCBpbnN0YW5jZT8gbWl4LWNvbGxlY3Rpb24taGFzaCByZS1maW5kIHJ1biEgdmFsIHVuY2hlY2tlZC1hZGQgdHJhbnNmb3JtZXItaXRlcmF0b3Igbm90IC12cmVzZXQhIHdpdGgtbWV0YSB1bnJlZHVjZWQgcmVjb3JkPyB0eXBlIGlkZW50aWNhbD8gLW5hbWVzcGFjZSB1bmNoZWNrZWQtZGl2aWRlLWludCBucy1uYW1lIG1heC1rZXkgKm91dCogaGFzaC1zdHJpbmcgLXByZWZlcnMgc2V0LXZhbGlkYXRvciEgaWRlbnQ/IC1tZXRhIC1kaXNwYXRjaC1mbiAtYWRkLW1ldGhvZCBzd2FwISB2YWxzIC1jaHVua2VkLW5leHQgdW5jaGVja2VkLXN1YnRyYWN0IHRhcD4gSU1hcCBzb3J0ZWQtc2V0LWJ5IGNsb25lYWJsZT8gcXVhbGlmaWVkLWlkZW50PyBoYXNoLXN0cmluZyoga2V5LXRlc3QgLXJlc2V0IHRydWU/IGFycmF5IHByaW50IC1wZWVrIElTZXEgZW1wdHkgcmVtb3ZlLW1ldGhvZCB2b2xhdGlsZSEgLyBiaXQtb3IgbTMtZm1peCB2ZWN0b3IgPj0gZHJvcC1sYXN0IG9iamVjdD8gbm90LWVtcHR5IGRpc3RpbmN0IHBhcnRpdGlvbiBJTXVsdGlGbiBERU1VTkdFX1BBVFRFUk4gSUFzc29jaWF0aXZlIGJpdC1mbGlwIGxvbmctYXJyYXkgZGVzY2VuZGFudHMgbWVyZ2UgSVNlcWFibGUganMtbW9kIGludGVnZXI/IE5TX0NBQ0hFIG1hcHYgaW5maW5pdGU/IHBhcnRpdGlvbi1hbGwgcGFydGl0aW9uLWJ5IElTZXF1ZW50aWFsIGVxdWl2LW1hcCBvYmplY3QtYXJyYXkgZGVyaXZlIHNlcS1pdGVyIElDaHVua2VkU2VxIHNwZWNpYWwtc3ltYm9sPyBhbmNlc3RvcnMgc3Vic2VxIGdlbnN5bSAtbmV4dCBkZWxheT8gZmxhdHRlbiAtZGlzc29jIGRvdWJsZXMgaGFsdC13aGVuIC1jb250YWlucy1rZXk/IHJlbW92ZS13YXRjaCBleC1pbmZvIGlmbj8gSUF0b20gbmF0LWludD8gSVdhdGNoYWJsZSBzdWJ2ZWMgLXBvcCEgcGFydGlhbCBjaHVua2VkLXNlcT8gcmVwbGljYXRlIG1pbi1rZXkgcmVkdWNlZCByZS1tYXRjaGVzIGFycmF5LW1hcCBJVHJhbnNpZW50U2V0IHVuY2hlY2tlZC1ieXRlIGV2ZXJ5LXByZWQga2V5cyBtaXNzaW5nLXByb3RvY29sIGxvYWQtZmlsZSBkaXN0aW5jdD8gcG9zLWludD8gdW5jaGVja2VkLXNob3J0IG1ldGhvZHMgb2RkPyAtZ2V0LW1ldGhvZCBmcmVxdWVuY2llcyByZWR1Y2VhYmxlPyBzdHJpbmctaGFzaC1jYWNoZSByc3Vic2VxIGluYyB0eXBlLT5zdHIgZ2V0LW1ldGhvZCB1dWlkPyBlczYtZW50cmllcy1pdGVyYXRvciBiaXQtY2xlYXIgZmlsdGVyIC1hc3NvYy1uISBJV2l0aE1ldGEgbGlzdCArIHNwbGl0LXdpdGggYXNldCBpbnQtcm90YXRlLWxlZnQga2V5d29yZCAqbnMqICphc3NlcnQqIElDb2xsZWN0aW9uIGNoYXJzIHN0ciBuZXh0IEFTZXEgcHItc2VxLXdyaXRlciBJRm4gcmVnZXhwPyBoYXNoLW1hcCAqZXhlYy10YXAtZm4qIHVuZGVyaXZlIC1yZXNldCEgLXJlc3QgLS1kZXN0cnVjdHVyZS1tYXAgbmlsLWl0ZXIgZmFsc2U/ICpwcmludC1yZWFkYWJseSogaW50cyBzb21lLWZuICpmbHVzaC1vbi1uZXdsaW5lKiB0by1hcnJheSBsaXN0PyBhcnJheT8gc2ltcGxlLWlkZW50PyBjbG9uZSBkZW11bmdlIGJpdC1ub3QgYnl0ZSBtYXggSUNvbXBhcmFibGUgPT0gcGFyZW50cyBjb3VudCAtZGlzam9pbiEgKmxvYWRlZC1saWJzKiBzb3J0ZWQtbWFwLWJ5IGFwcGx5IGFkZC10by1zdHJpbmctaGFzaC1jYWNoZSBjbGotPmpzIElDaHVua2VkTmV4dCBpbnRlcnBvc2UgZGVyZWYgYXNzb2MgdHJhbnNpZW50IC1kaXNqb2luIGNodW5rLWNvbnMgY29tcGFyYXRvciBwcmludC1wcmVmaXgtbWFwIHNvcnRlZC1tYXAgZHJvcC13aGlsZSBJV3JpdGVyIHJlYWxpemVkPyAqcHJpbnQtZm4qIGNvbXBhcmUgY29tcGxlbWVudCAtYXNzb2MhICpwcmludC1kdXAqIHN0cmluZy1pdGVyIC1rZXktPmpzIElEZXJlZiBzZXF1ZW5jZSBjb25zdGFudGx5IGNodW5rZWQtc2VxIElTb3J0ZWQgbWFrZS1hcnJheSBzaG9ydHMgKnVuY2hlY2tlZC1pZiogZW5hYmxlLWNvbnNvbGUtcHJpbnQhIC1mbHVzaCBjb21wbGV0aW5nIHVuY2hlY2tlZC1uZWdhdGUtaW50IGhhc2gtdW5vcmRlcmVkLWNvbGwgcmVwZWF0IHVuY2hlY2tlZC1pbmMgbnRobmV4dCBnZXQtdmFsaWRhdG9yIG51bWJlcj8gLWNvbmohIGNodW5rLW5leHQgcHJpbnQtc3RyIG5vdC1hbnk/IGludG8tYXJyYXkgLWhhc2ggcXVhbGlmaWVkLXN5bWJvbD8gLWRpc3NvYyEgY2h1bmstYnVmZmVyIHNlcWFibGU/IHN5bWJvbD8gbTMtaGFzaC11bmVuY29kZWQtY2hhcnMgdW5jaGVja2VkLWNoYXIgc3lzdGVtLXRpbWUgLWludm9rZSBjb2xsPyBnZXQtaW4gZm5leHQgSUxpc3QgLXZhbCBieXRlcyAtc2VxXSwgOnR5cGUgOmNsanMsIDpzeW0gY2xqcy5jb3JlfSB7OnZhci1zeW1zIFtnbyBhbHQhIGdvLWxvb3AgZG8tYWx0XSwgOnR5cGUgOmNsaiwgOnN5bSBjbGpzLmNvcmUuYXN5bmN9IHs6dmFyLXN5bXMgW1B1YiByZWR1Y2UgcmVtb3ZlPiB0aW1lb3V0IHVuc3ViKiBhZG1peCogdW5taXgqIG1peCBwdWIgdGFrZSB1bnN1Yi1hbGwqIDwhIG1hcCBNdXggbWFwY2F0PiBidWZmZXIgY2xvc2UhIG9mZmVyISBjaGFuIHNvbG8tbW9kZSogb250by1jaGFuISB0YXAgYWRtaXggcHJvbWlzZS1jaGFuIHVuaXF1ZSBtdXhjaCogc29sby1tb2RlIHRyYW5zZHVjZSBvbnRvLWNoYW4gdG8tY2hhbiBkcm9wcGluZy1idWZmZXIgdW50YXAtYWxsIGludG8gdG8tY2hhbiEgcGlwZWxpbmUgc3ViIG1hcD4gcGlwZSB1bm1peCBmaWx0ZXI8IHN1YiogcmVtb3ZlPCB1bnRhcCogdG9nZ2xlIHVudGFwLWFsbCogc2xpZGluZy1idWZmZXIgcGFydGl0aW9uIE11bHQgbWVyZ2UgcGFydGl0aW9uLWJ5IHVuc3ViLWFsbCA+ISB1bm1peC1hbGwqIHNwbGl0IHVubWl4LWFsbCBmaWx0ZXI+IHRhcCogdW50YXAgYWx0cyEgdW5zdWIgcG9sbCEgbWFwPCBkby1hbHRzIHBpcGVsaW5lLWFzeW5jIE1peCB0b2dnbGUqIG11bHQgbWFwY2F0PCBpb2MtYWx0cyEgdW5ibG9ja2luZy1idWZmZXI/IHB1dCEgdGFrZSFdLCA6dHlwZSA6Y2xqcywgOnN5bSBjbGpzLmNvcmUuYXN5bmN9IHs6dmFyLXN5bXMgW2Fjb3B5IHJpbmctYnVmZmVyIGZpeGVkLWJ1ZmZlciBkcm9wcGluZy1idWZmZXIgc2xpZGluZy1idWZmZXIgcHJvbWlzZS1idWZmZXJdLCA6dHlwZSA6Y2xqcywgOnN5bSBjbGpzLmNvcmUuYXN5bmMuaW1wbC5idWZmZXJzfSB7OnZhci1zeW1zIFtib3ggcHV0LWFjdGl2ZT8gTUFYX0RJUlRZIGFib3J0IE1NQyBjaGFuXSwgOnR5cGUgOmNsanMsIDpzeW0gY2xqcy5jb3JlLmFzeW5jLmltcGwuY2hhbm5lbHN9IHs6dmFyLXN5bXMgW3Rhc2tzIHJ1bm5pbmc/IHF1ZXVlZD8gVEFTS19CQVRDSF9TSVpFIHByb2Nlc3MtbWVzc2FnZXMgcXVldWUtZGlzcGF0Y2hlciBydW4gcXVldWUtZGVsYXldLCA6dHlwZSA6Y2xqcywgOnN5bSBjbGpzLmNvcmUuYXN5bmMuaW1wbC5kaXNwYXRjaH0gezp2YXItc3ltcyBbRVhDRVBUSU9OLUZSQU1FUyBTVEFURS1JRFggYXNldC1vYmplY3QgcnVuLXN0YXRlLW1hY2hpbmUtd3JhcHBlZCBGTi1JRFggYWdldC1vYmplY3QgcmV0dXJuLWNoYW4gQklORElOR1MtSURYIENVUlJFTlQtRVhDRVBUSU9OIHJ1bi1zdGF0ZS1tYWNoaW5lIGZpbmlzaGVkPyBVU0VSLVNUQVJULUlEWCBwdXQhIHRha2UhIFZBTFVFLUlEWF0sIDp0eXBlIDpjbGpzLCA6c3ltIGNsanMuY29yZS5hc3luYy5pbXBsLmlvYy1oZWxwZXJzfSB7OnZhci1zeW1zIFtpbmRleC1zdGF0ZS1tYWNoaW5lIGZpeHVwLWFsaWFzZXMgLT5Qb3BUcnkgRVhDRVBUSU9OLUZSQU1FUyBibG9jay1yZWZlcmVuY2VzIHJlYWRzLWZyb20gaW5kZXgtYmxvY2sgbG9jYWwtaW5pdC10by1zc2EgbWFwLT5DYXNlIGFkZC1ibG9jayBpbnN0cnVjdGlvbj8gZXhwYW5kIGxldC1iaW5kaW5nLXRvLXNzYSBtYXAtPkNvbmRCciBtYXAtPkNvbnN0IC0+Q2FsbCAtPkptcCAtPkNvbmRCciBtYXAtPlB1c2hUcnkgY291bnQtcGVyc2lzdGVudC12YWx1ZXMgZ2V0LWJpbmRpbmcgZ2VuLXBsYW4gLWl0ZW0tdG8tc3NhIC0+Q2FzZSBnZXQtYmxvY2sgaWQtZm9yLWluc3QgaW5kZXgtaW5zdHJ1Y3Rpb24gd3JpdGVzLXRvIC0+RG90IG1hcC0+Q3VzdG9tVGVybWluYXRvciB0ZXJtaW5hdG9yLWNvZGUgc2V0LWJsb2NrIC0+Q2F0Y2hIYW5kbGVyIFNUQVRFLUlEWCAtPlB1c2hUcnkgc2V4cHItdG8tc3NhIC0+Rm4gbWFwLT5DYXRjaEhhbmRsZXIgLT5SZXR1cm4gSUVtaXR0YWJsZUluc3RydWN0aW9uIG1hcC0+Q2FsbCBJVGVybWluYXRvciBtYXAtPkZuIHNwZWNpYWwtb3ZlcnJpZGU/IGRlZmF1bHQtc2V4cHIgZW1pdC1pbnN0cnVjdGlvbiBJSW5zdHJ1Y3Rpb24gbWFwLT5Eb3QgdGVybWluYXRlLWJsb2NrIG1hcC0+UG9wVHJ5IHBlcnNpc3RlbnQtdmFsdWU/IC0+U2V0ISBhc3NvYy1pbi1wbGFuIHB1c2gtYWx0ZXItYmluZGluZyBhc2V0LWFsbCEgZGVidWcgcGFyc2UtdG8tc3RhdGUtbWFjaGluZSBnZXQtcGxhbiBGTi1JRFggYWxsIHBvcC1iaW5kaW5nIC0+RW5kRmluYWxseSAtPlJlY3VyIGFkZC1pbnN0cnVjdGlvbiBuby1vcCBwdXNoLWJpbmRpbmcgLT5DdXN0b21UZXJtaW5hdG9yIGRlc3RydWN0dXJlLXRyeSBCSU5ESU5HUy1JRFggbWFwLT5SZXR1cm4gaXRlbS10by1zc2EgdGVybWluYXRlLWN1c3RvbSBtYXAtPkVuZEZpbmFsbHkgYXN5bmMtY3VzdG9tLXRlcm1pbmF0b3JzIGlzLXNwZWNpYWw/IENVUlJFTlQtRVhDRVBUSU9OIC0+Q29uc3QgcHJpbnQtcGxhbiBtYXAtPlNldCEgZ2V0LWluLXBsYW4gdXBkYXRlLWluLXBsYW4gbWFwLT5SZWN1ciBtYXAtPkptcCBVU0VSLVNUQVJULUlEWCBzdGF0ZS1tYWNoaW5lIFZBTFVFLUlEWF0sIDp0eXBlIDpjbGosIDpzeW0gY2xqcy5jb3JlLmFzeW5jLmltcGwuaW9jLW1hY3Jvc30gezp2YXItc3ltcyBbcmVtb3ZlISBjbG9zZS1idWYhIGNsb3NlISBIYW5kbGVyIGJsb2NrYWJsZT8gYWN0aXZlPyBCdWZmZXIgZnVsbD8gYWRkISBhZGQhKiBSZWFkUG9ydCBDaGFubmVsIGNsb3NlZD8gVW5ibG9ja2luZ0J1ZmZlciBNQVgtUVVFVUUtU0laRSBjb21taXQgcHV0ISB0YWtlISBXcml0ZVBvcnRdLCA6dHlwZSA6Y2xqcywgOnN5bSBjbGpzLmNvcmUuYXN5bmMuaW1wbC5wcm90b2NvbHN9IHs6dmFyLXN5bXMgW3RpbWVvdXQgcmFuZG9tLWxldmVsIHNraXAtbGlzdCBNQVhfTEVWRUwgUCB0aW1lb3V0cy1tYXAgc2tpcC1saXN0LW5vZGUgbGVhc3QtZ3JlYXRlci1ub2RlIFRJTUVPVVRfUkVTT0xVVElPTl9NU10sIDp0eXBlIDpjbGpzLCA6c3ltIGNsanMuY29yZS5hc3luYy5pbXBsLnRpbWVyc30gezp2YXItc3ltcyBbZ28gYWx0ISBnby1sb29wXSwgOnR5cGUgOmNsaiwgOnN5bSBjbGpzLmNvcmUuYXN5bmMubWFjcm9zfSB7OnZhci1zeW1zIFtlbnN1cmUgd2l0aC1jb21waWxlci1lbnYgZGVmYXVsdC1jb21waWxlci1lbnYqIGRlZmF1bHQtY29tcGlsZXItZW52ICpjb21waWxlcipdLCA6dHlwZSA6Y2xqLCA6c3ltIGNsanMuZW52fSB7OnZhci1zeW1zIFsqY29tcGlsZXIqIGRlZmF1bHQtY29tcGlsZXItZW52KiBkZWZhdWx0LWNvbXBpbGVyLWVudl0sIDp0eXBlIDpjbGpzLCA6c3ltIGNsanMuZW52fSB7OnZhci1zeW1zIFtlbnN1cmUgd2l0aC1jb21waWxlci1lbnZdLCA6dHlwZSA6Y2xqLCA6c3ltIGNsanMuZW52Lm1hY3Jvc30gezp2YXItc3ltcyBbcGFyYW1zLT5tZXRob2QtcGFyYW1zIHBhcnNlLWV4dGVybi1ub2RlIHJlc291cmNlLT5zb3VyY2UtZmlsZSAqaWdub3JlLXZhciogZ3R5cGUtPmNsanMtdHlwZSBnZW5lcmljPyAqZ29vZy1ucyogcGFyc2UtZXh0ZXJucyBleHRlcm5zLW1hcCBleHRlcm5zLW1hcCogYW5ub3RhdGUgaW5kZXgtZXh0ZXJucyBwYXJzZWQtPmRlZnMgKnNvdXJjZS1maWxlKiBnZXQtdGFnIG5zLW1hdGNoPyBhbmFseXplLWdvb2ctZmlsZSBnZXQtdmFyLWluZm9dLCA6dHlwZSA6Y2xqLCA6c3ltIGNsanMuZXh0ZXJuc30gezp2YXItc3ltcyBbcmVhZC1pbnN0YW50LWluc3RhbnRdLCA6dHlwZSA6Y2xqLCA6c3ltIGNsanMuaW5zdGFudH0gezp2YXItc3ltcyBbd2l0aC1zdGF0ZSBkdW1wLWNvcmVdLCA6dHlwZSA6Y2xqLCA6c3ltIGNsanMuanN9IHs6dmFyLXN5bXMgWypsb2FkLWZuKiBldmFsIGNvbXBpbGUtc3RyIG5zLT5yZWxwYXRoIGVtcHR5LXN0YXRlICpsb2FkZWQqIHJlcXVpcmUgZmlsZS0+bnMgZXZhbC1zdHIganMtZXZhbCBsb2FkLXNvdXJjZS1tYXAhIGxvYWQtYW5hbHlzaXMtY2FjaGUhIGFuYWx5emUtc3RyICpldmFsLWZuKl0sIDp0eXBlIDpjbGpzLCA6c3ltIGNsanMuanN9IHs6dmFyLXN5bXMgW3ppcC1maWxlIGdvb2ctZGVwZW5kZW5jaWVzIGxvYWQtZm9yZWlnbi1saWJyYXJ5IGZpbmQtanMtamFyIGZpbmQtanMtZnMgZmluZC1qcy1yZXNvdXJjZXMgdG8tdXJsIC1yZXF1aXJlcyBidWlsZC1pbmRleCBqYXItZW50cnktbmFtZXMgZmluZC1qcy1jbGFzc3BhdGggZ29vZy1kZXBlbmRlbmNpZXMqIC1wcm92aWRlcyBuYXRpdmUtbm9kZS1tb2R1bGVzIElKYXZhU2NyaXB0IC1zb3VyY2UgbGliLXNwZWMtbWVyZ2UgZGVwZW5kZW5jeS1vcmRlci12aXNpdCBqcy1kZXBlbmRlbmN5LWluZGV4IC1yZWxhdGl2ZS1wYXRoIGxvYWQtZm9yZWlnbi1saWJyYXJ5KiBsb2FkLWxpYnJhcnkgLXVybCBmaW5kLXVybCAtZm9yZWlnbj8gZ2V0LWZpbGUgbG9hZC1saWJyYXJ5KiBqYXItZW50cnktbmFtZXMqIC1jbG9zdXJlLWxpYj8gbGlicmFyeS1kZXBlbmRlbmNpZXMgZmluZC1jbGFzc3BhdGgtbGliIHBhcnNlLWpzLW5zIGRlcGVuZGVuY3ktb3JkZXJdLCA6dHlwZSA6Y2xqLCA6c3ltIGNsanMuanMtZGVwc30gezp2YXItc3ltcyBbbm9ybWFsaXplIHNpbmdsZS1zZWdtZW50PyAtbWFpbl0sIDp0eXBlIDpjbGosIDpzeW0gY2xqcy5tYWlufSB7OnZhci1zeW1zIFthZGQtY2xqcy1iYXNlLWRlcCBkZXBzLWZvci1tb2R1bGUgbm9ybWFsaXplIGluZGV4LWlucHV0cyB2YWxpZGF0ZS1pbnB1dHMgc29ydC1tb2R1bGVzIGlucHV0cy0+YXNzaWduZWQtbW9kdWxlcyBhZGQtY2xqcy1iYXNlIHBhcmVudD8gZGVwcy1mb3IgYW5ub3RhdGUtZGVwdGhzIGRlcHRoLW9mIG1vZHVsZS1mb3IgbW9kdWxlcy0+bW9kdWxlLXVyaXMgdmFsaWRhdGUtbW9kdWxlcyBkZXBzLWZvci1lbnRyeSBjYW5vbmljYWwtbmFtZSBkZWVwZXN0LWNvbW1vbi1wYXJlbnQgdmFsaWRhdGUtaW5wdXRzKiBleHBhbmQtbW9kdWxlcyBtYXliZS1hZGQtb3V0LWZpbGUgdG9wby1zb3J0IG5vcm1hbGl6ZS1pbnB1dCBtb2R1bGVzLT5tb2R1bGUtaW5mb3MgZmluZC1zb3VyY2VzLWZvci1tb2R1bGUtZW50cnldLCA6dHlwZSA6Y2xqLCA6c3ltIGNsanMubW9kdWxlLWdyYXBofSB7OnZhci1zeW1zIFtyZXF1aXJlIHByb2Nlc3MgZW5hYmxlLXV0aWwtcHJpbnQhXSwgOnR5cGUgOmNsanMsIDpzeW0gY2xqcy5ub2RlanN9IHs6dmFyLXN5bXMgW2RlZnR5cGUgcHJpbnQtbGVuZ3RoLWxvb3AgZ2V0ZiBwcHJpbnQtbG9naWNhbC1ibG9jayBwcCBmb3JtYXR0ZXItb3V0IGZvcm1hdHRlciB3aXRoLXByZXR0eS13cml0ZXIgc2V0ZiB3aXRoLXBwcmludC1kaXNwYXRjaF0sIDp0eXBlIDpjbGosIDpzeW0gY2xqcy5wcHJpbnR9IHs6dmFyLXN5bXMgW3BwcmludCBnZXQtcHJldHR5LXdyaXRlciAqcHJpbnQtc3VwcHJlc3MtbmFtZXNwYWNlcyogY2hhci1jb2RlICpwcmludC1wcmV0dHkqICpwcmludC1wcHJpbnQtZGlzcGF0Y2gqIHBwcmludC1uZXdsaW5lIGZsb2F0PyBwcHJpbnQtdGFiIHBwcmludC1zZXQgcHJpbnQtdGFibGUgc2V0LXBwcmludC1kaXNwYXRjaCBmcmVzaC1saW5lIHBwcmludC1pbmRlbnQgKnByaW50LXJhZGl4KiBJUHJldHR5Rmx1c2ggY2wtZm9ybWF0ICpwcmludC1taXNlci13aWR0aCogd3JpdGUgLXBwZmx1c2ggKnByaW50LXJpZ2h0LW1hcmdpbiogd3JpdGUtb3V0ICpwcmludC1iYXNlKl0sIDp0eXBlIDpjbGpzLCA6c3ltIGNsanMucHByaW50fSB7OnZhci1zeW1zIFthZGQtZGF0YS1yZWFkZXJzXSwgOnR5cGUgOmNsaiwgOnN5bSBjbGpzLnJlYWRlcn0gezp2YXItc3ltcyBbKmRlZmF1bHQtZGF0YS1yZWFkZXItZm4qIHJlYWQgKnRhZy10YWJsZSogcGFyc2UtYW5kLXZhbGlkYXRlLXRpbWVzdGFtcCByZWdpc3Rlci10YWctcGFyc2VyISByZWdpc3Rlci1kZWZhdWx0LXRhZy1wYXJzZXIhIGRlcmVnaXN0ZXItZGVmYXVsdC10YWctcGFyc2VyISByZWFkLXN0cmluZyBkZXJlZ2lzdGVyLXRhZy1wYXJzZXIhIHBhcnNlLXRpbWVzdGFtcF0sIDp0eXBlIDpjbGpzLCA6c3ltIGNsanMucmVhZGVyfSB7OnZhci1zeW1zIFtzb3VyY2UtZm4gSUdldEVycm9yIElKYXZhU2NyaXB0RW52IC1zZXR1cCBtYXliZS1pbnN0YWxsLW5wbS1kZXBzIGRvYyAqY2xqcy12ZXJib3NlKiBucy0+aW5wdXQgcmVwbC1vcHRpb25zIGluaXRpYWwtcHJvbXB0IGxvYWQgSVJlcGxFbnZPcHRpb25zIHNwZWNpYWwtZG9jLW1hcCAqcmVwbC1vcHRzKiBJUHJpbnRTdGFja3RyYWNlIGxvYWQtc3RyZWFtIGNvbXBpbGFibGU/IElQYXJzZVN0YWNrdHJhY2UgZmluZC1kb2MgcmVwbC1jYXVnaHQgLXBhcnNlLWVycm9yIGtub3duLXJlcGwtb3B0cyBldmFsdWF0ZSBkaXIgcmVwbC10aXRsZSAtcGFyc2Utc3RhY2t0cmFjZSBwc3QgbnMtaW5mbyBmaWxlLWRpc3BsYXkgLWxvYWQgLXByaW50LXN0YWNrdHJhY2UgcmVwbC1xdWl0LXByb21wdCByZWFkLXNvdXJjZS1tYXAgcmVwbCoganMtc3JjLT5jbGpzLXNyYyByZXBsLXJlYWQgdGVhci1kb3duIGRlY29yYXRlLXNwZWNzIHNraXAtaWYtZW9sIHJlcGwtbmlsPyAtZXZhbHVhdGUgLXJlcGwtb3B0aW9ucyBhbmFseXplLXNvdXJjZSAqcmVwbC1lbnYqIHNvdXJjZSByZXBsLXNwZWNpYWwtZG9jLW1hcCAtdGVhci1kb3duIC1nZXQtZXJyb3IgYWRkLXVybCBza2lwLXdoaXRlc3BhY2Ugc2V0dXAgcHJpbnQtbWFwcGVkLXN0YWNrdHJhY2UgcnVuLWluaXRzIGxvYWQtbmFtZXNwYWNlIGxvYWQtZmlsZSBtYXBwZWQtc3RhY2t0cmFjZSBldmFsdWF0ZS1mb3JtIGRlbXVuZ2UgZXgtc3RyIGV2YWwtY2xqcyByZXBsIGRlZmF1bHQtc3BlY2lhbC1mbnMgcmVwbC1wcm9tcHQgSVBhcnNlRXJyb3IgZXgtdHJpYWdlIGFwcm9wb3NdLCA6dHlwZSA6Y2xqLCA6c3ltIGNsanMucmVwbH0gezp2YXItc3ltcyBbY29uc3RyYWluLW9yZGVyIHNlbmQtZm9yLWV2YWwgYnJvd3Nlci1ldmFsIHJlcGwtZW52KiBvdXRzIGxvY2sgc2VydmUgZGVmYXVsdC1pbmRleCBhZGQtaW4tb3JkZXIgc2VuZC1zdGF0aWMgbG9hZC1qYXZhc2NyaXB0IGVzIGJyb3dzZXItc3RhdGUgLW1haW4gcmVwbC1lbnYgc2VuZC1yZXBsLWNsaWVudC1wYWdlIHJ1bi1pbi1vcmRlciBoYW5kbGUtcG9zdCBzZXR1cCBvcmRlcmluZyByZXBsLWNsaWVudC1qcyBtYXAtPkJyb3dzZXJFbnYgbWltZS10eXBlLT5lbmNvZGluZyBleHQtPm1pbWUtdHlwZSAtPkJyb3dzZXJFbnYgdGhyZWFkLW5hbWVdLCA6dHlwZSA6Y2xqLCA6c3ltIGNsanMucmVwbC5icm93c2VyfSB7OnZhci1zeW1zIFtyZXBsLWVudl0sIDp0eXBlIDpjbGosIDpzeW0gY2xqcy5yZXBsLmZpZ3doZWVsfSB7OnZhci1zeW1zIFtkaXNwYXRjaC1vbiBjb25uZWN0aW9uIGxvY2sgcmVhZC1nZXQgcmVhZC1oZWFkZXJzIHJlYWQtcmVxdWVzdCBzZW5kLTQwNCByZWFkLXBvc3QgcGFyc2UtaGVhZGVycyBzZXQtY29ubmVjdGlvbiBwcm9taXNlcSBjb25ucSBzdGFydCBzZW5kLWFuZC1jbG9zZSBoYW5kbGVycyBzdGF0ZSBnemlwIHN0b3AgcGFyc2UtZmlsZS1wYXJ0c10sIDp0eXBlIDpjbGosIDpzeW0gY2xqcy5yZXBsLnNlcnZlcn0gezp2YXItc3ltcyBbdXBkYXRlLXJlc3VsdCBlbmNvZGUgaW52ZXJ0LXJldmVyc2UtbWFwIHJlbGF0aXZpemUtcGF0aCBkZWNvZGUgc2VnLT5tYXAgc291cmNlLWNvbXBhcmUgZGVjb2RlLXJldmVyc2UgbGluZXMtPnNlZ3MgbWVyZ2Utc291cmNlLW1hcHMgdXBkYXRlLXJldmVyc2UtcmVzdWx0IGluZGV4ZWQtc291cmNlcyBlbmNvZGUqIHNlZy1jb21iaW5lXSwgOnR5cGUgOmNsaiwgOnN5bSBjbGpzLnNvdXJjZS1tYXB9IHs6dmFyLXN5bXMgW3VwZGF0ZS1yZXN1bHQgZW5jb2RlIGludmVydC1yZXZlcnNlLW1hcCBkZWNvZGUgc2VnLT5tYXAgc291cmNlLWNvbXBhcmUgZGVjb2RlLXJldmVyc2UgbGluZXMtPnNlZ3MgbWVyZ2Utc291cmNlLW1hcHMgdXBkYXRlLXJldmVyc2UtcmVzdWx0IGluZGV4ZWQtc291cmNlcyBzZWctY29tYmluZV0sIDp0eXBlIDpjbGpzLCA6c3ltIGNsanMuc291cmNlLW1hcH0gezp2YXItc3ltcyBbY2hhcnM2NCBlbmNvZGUgaW50LT5jaGFyIGRlY29kZSBjaGFyLT5pbnRdLCA6dHlwZSA6Y2xqLCA6c3ltIGNsanMuc291cmNlLW1hcC5iYXNlNjR9IHs6dmFyLXN5bXMgW2NoYXJzNjQgY2hhci0+aW50IGludC0+Y2hhciBlbmNvZGUgZGVjb2RlXSwgOnR5cGUgOmNsanMsIDpzeW0gY2xqcy5zb3VyY2UtbWFwLmJhc2U2NH0gezp2YXItc3ltcyBbZW5jb2RlLXZhbCBlbmNvZGUgdmxxLWNvbnRpbnVhdGlvbi1iaXQgdmxxLWJhc2UtbWFzayBiaXQtc2hpZnQtcmlnaHQtemVyby1maWxsIGRlY29kZSB2bHEtYmFzZS1zaGlmdCBmcm9tLXZscS1zaWduZWQgdG8tdmxxLXNpZ25lZCB2bHEtYmFzZV0sIDp0eXBlIDpjbGosIDpzeW0gY2xqcy5zb3VyY2UtbWFwLmJhc2U2NC12bHF9IHs6dmFyLXN5bXMgW2VuY29kZS12YWwgZW5jb2RlIHZscS1jb250aW51YXRpb24tYml0IHZscS1iYXNlLW1hc2sgZGVjb2RlIHZscS1iYXNlLXNoaWZ0IGZyb20tdmxxLXNpZ25lZCB0by12bHEtc2lnbmVkIHZscS1iYXNlXSwgOnR5cGUgOmNsanMsIDpzeW0gY2xqcy5zb3VyY2UtbWFwLmJhc2U2NC12bHF9IHs6dmFyLXN5bXMgWyYgZnNwZWMgZXZlcnkga2V5cyogc3BlY2VkLXZhcnMgcmVnaXN0cnktcmVmIG5pbGFibGUgY29sbC1vZiBjYXQgKiBldmVyeS1rdiBpbnQtaW4gYWx0IG9yIGV4ZXJjaXNlLWZuIG11bHRpLXNwZWMgdHVwbGUgYXNzZXJ0ID8gbWVyZ2UgY29uZm9ybWVyIHNwZWMga2V5cyArIG1hcC1vZiBkb3VibGUtaW4gaW5zdC1pbiBhbmQgZGVmIGZkZWZdLCA6dHlwZSA6Y2xqLCA6c3ltIGNsanMuc3BlYy5hbHBoYX0gezp2YXItc3ltcyBbZm9ybSBuaWxhYmxlLWltcGwgKnJlY3Vyc2lvbi1saW1pdCogKmNvbGwtZXJyb3ItbGltaXQqIGV4cGxhaW4tcHJpbnRlciBTcGVjaXplIGFsdC1pbXBsIGRlZi1pbXBsICpleHBsYWluLW91dCogcmVnZXgtc3BlYy1pbXBsIG1lcmdlLXNwZWMtaW1wbCBleHBsYWluLWRhdGEqIE1BWF9JTlQgY2hlY2stYXNzZXJ0cyBhc3NlcnQqIGZuLXN5bSBpbnN0LWluLXJhbmdlPyBhbmQtc3BlYy1pbXBsIGRlc2NyaWJlKiBtYXAtc3BlYy1pbXBsIGV4cGxhaW4gd2l0aC1nZW4qIG9yLXNwZWMtaW1wbCAqZnNwZWMtaXRlcmF0aW9ucyogU3BlYyB1bmZvcm0gdmFsaWQ/IGdlbiBub25jb25mb3JtaW5nIHVuZm9ybSogYWJicmV2IHJlZ2V4PyBpbnQtaW4tcmFuZ2U/IHNwZWM/IHJlZ2lzdHJ5IHJlcCtpbXBsIGV4ZXJjaXNlIGV4cGxhaW4tZGF0YSB0dXBsZS1pbXBsIG11bHRpLXNwZWMtaW1wbCBjb25mb3JtIGdlbiogZnNwZWMtaW1wbCAqY29sbC1jaGVjay1saW1pdCogZ2V0LXNwZWMgZXZlcnktaW1wbCBzcGVjLWltcGwgaW52YWxpZD8gYW1wLWltcGwgY2F0LWltcGwgZXhwbGFpbi1zdHIgKmNvbXBpbGUtYXNzZXJ0cyogd2l0aC1nZW4gY29uZm9ybSogY2hlY2stYXNzZXJ0cz8gcmVwLWltcGwgZGVzY3JpYmUgZXhwbGFpbi1vdXQgc3BlY2l6ZSogbWF5YmUtaW1wbCBleHBsYWluKl0sIDp0eXBlIDpjbGpzLCA6c3ltIGNsanMuc3BlYy5hbHBoYX0gezp2YXItc3ltcyBbbGF6eS1wcmltIGRlbGF5IGxhenktcHJpbXMgZHluYWxvYWQgbGF6eS1jb21iaW5hdG9ycyBsYXp5LWNvbWJpbmF0b3JdLCA6dHlwZSA6Y2xqLCA6c3ltIGNsanMuc3BlYy5nZW4uYWxwaGF9IHs6dmFyLXN5bXMgW3F1aWNrLWNoZWNrIGZvci1hbGwqIGRlbGF5LWltcGwgY2F0IGdlbi1mb3ItcHJlZF0sIDp0eXBlIDpjbGpzLCA6c3ltIGNsanMuc3BlYy5nZW4uYWxwaGF9IHs6dmFyLXN5bXMgW2NoZWNrLWZuIGluc3RydW1lbnQgdW5zdHJ1bWVudC0xIHVuc3RydW1lbnQgY2hlY2sgd2l0aC1pbnN0cnVtZW50LWRpc2FibGVkIGNoZWNrYWJsZS1zeW1zIGluc3RydW1lbnQtMSBlbnVtZXJhdGUtbmFtZXNwYWNlIGNoZWNrYWJsZS1zeW1zKiBjaGVjay0xXSwgOnR5cGUgOmNsaiwgOnN5bSBjbGpzLnNwZWMudGVzdC5hbHBoYX0gezp2YXItc3ltcyBbZ2V0LWVudiBkaXN0aW5jdC1ieSBzdW1tYXJpemUtcmVzdWx0cyBpbnN0cnVtZW50YWJsZS1zeW1zIGdldC1ob3N0LXBvcnQgZ2V0LXVhLXByb2R1Y3QgLT5zeW0gYWJicmV2LXJlc3VsdCB2YWxpZGF0ZS1jaGVjay1vcHRzXSwgOnR5cGUgOmNsanMsIDpzeW0gY2xqcy5zcGVjLnRlc3QuYWxwaGF9IHs6dmFyLXN5bXMgW291dHB1dC1kaXJlY3RvcnkgZW5kcy13aXRoPyBzdGFydHMtd2l0aD8gcmVtb3ZlLWV4dCBzdHJpbmctPnJlZ2V4IHNhZmFyaS1zdC1lbC0+ZnJhbWUgbWFwcGVkLWZyYW1lIGZpcmVmb3gtc3QtZWwtPmZyYW1lIGZpcmVmb3gtY2xlYW4tZnVuY3Rpb24gY2hyb21lLXN0LWVsLT5mcmFtZSBtYXBwZWQtbGluZS1jb2x1bW4tY2FsbCBtYXBwZWQtc3RhY2t0cmFjZS1zdHIgbWFwcGVkLXN0YWNrdHJhY2UgcGFyc2Utc3RhY2t0cmFjZSBwYXJzZS1pbnQgcGFyc2UtZmlsZSBwYXJzZS1maWxlLWxpbmUtY29sdW1uXSwgOnR5cGUgOmNsaiwgOnN5bSBjbGpzLnN0YWNrdHJhY2V9IHs6dmFyLXN5bXMgW291dHB1dC1kaXJlY3RvcnkgZW5kcy13aXRoPyBzdGFydHMtd2l0aD8gcmVtb3ZlLWV4dCBzdHJpbmctPnJlZ2V4IHNhZmFyaS1zdC1lbC0+ZnJhbWUgbWFwcGVkLWZyYW1lIGZpcmVmb3gtc3QtZWwtPmZyYW1lIGZpcmVmb3gtY2xlYW4tZnVuY3Rpb24gY2hyb21lLXN0LWVsLT5mcmFtZSBtYXBwZWQtbGluZS1jb2x1bW4tY2FsbCBtYXBwZWQtc3RhY2t0cmFjZS1zdHIgbWFwcGVkLXN0YWNrdHJhY2UgcGFyc2UtaW50IHBhcnNlLWZpbGUgcGFyc2UtZmlsZS1saW5lLWNvbHVtbl0sIDp0eXBlIDpjbGpzLCA6c3ltIGNsanMuc3RhY2t0cmFjZX0gezp2YXItc3ltcyBbYXNzZXJ0LWFyZ3NdLCA6dHlwZSA6Y2xqLCA6c3ltIGNsanMuc3VwcG9ydH0gezp2YXItc3ltcyBbcmVhZC11dWlkIHZhbGlkLWpzLWxpdGVyYWwta2V5PyByZWFkLWluc3QgcmVhZC1xdWV1ZSAqY2xqcy1kYXRhLXJlYWRlcnMqIC0+SlNWYWx1ZSByZWFkLWpzXSwgOnR5cGUgOmNsaiwgOnN5bSBjbGpzLnRhZ2dlZC1saXRlcmFsc30gezp2YXItc3ltcyBbcmVhZC1xdWV1ZSB2YWxpZC1qcy1saXRlcmFsLWtleT8gcmVhZC1qcyAqY2xqcy1kYXRhLXJlYWRlcnMqXSwgOnR5cGUgOmNsanMsIDpzeW0gY2xqcy50YWdnZWQtbGl0ZXJhbHN9IHs6dmFyLXN5bXMgW3Rlc3QtdmFyIGRvLXJlcG9ydCBhc3luYz8gdGVzdGluZy1jb250ZXh0cy1zdHIgam9pbi1maXh0dXJlcyBpbmMtcmVwb3J0LWNvdW50ZXIhIGdldC1jdXJyZW50LWVudiBmaWxlLWFuZC1saW5lIGJsb2NrIGNvbXBvc2UtZml4dHVyZXMganMtbGluZS1hbmQtY29sdW1uIElBc3luY1Rlc3QgdGVzdC12YXJzLWJsb2NrIGNsZWFyLWVudiEgc2V0LWVudiEgbWFwcGVkLWxpbmUtYW5kLWNvbHVtbiB0ZXN0LXZhcnMgZ2V0LWFuZC1jbGVhci1lbnYhIHRlc3QtdmFyLWJsb2NrIHN1Y2Nlc3NmdWw/IGVtcHR5LWVudiB0ZXN0aW5nLXZhcnMtc3RyICpjdXJyZW50LWVudiogcnVuLWJsb2NrIHVwZGF0ZS1jdXJyZW50LWVudiEganMtZmlsZW5hbWVdLCA6dHlwZSA6Y2xqcywgOnN5bSBjbGpzLnRlc3R9IHs6dmFyLXN5bXMgW3JlYWQrc3RyaW5nIGJvb2w/ICpzdXBwcmVzcy1yZWFkKiAqZGVmYXVsdC1kYXRhLXJlYWRlci1mbiogcmVhZCBkZWZhdWx0LWRhdGEtcmVhZGVycyAqZGF0YS1yZWFkZXJzKiAqcmVhZC1kZWxpbSogcmVzb2x2ZS1zeW1ib2wgKmFsaWFzLW1hcCogcmVhZC1yZWdleCBzYiByZWFkLXN0cmluZyBtYXAtZnVuY10sIDp0eXBlIDpjbGpzLCA6c3ltIGNsanMudG9vbHMucmVhZGVyfSB7OnZhci1zeW1zIFtyZWFkIHJlYWQtc3RyaW5nXSwgOnR5cGUgOmNsanMsIDpzeW0gY2xqcy50b29scy5yZWFkZXIuZWRufSB7OnZhci1zeW1zIFttYXRjaC1udW1iZXIgc2tpcC1saW5lIGludC1wYXR0ZXJuIHJlYWQtY29tbWVudCBwYXJzZS1zeW1ib2wgbnVtYmVyLWxpdGVyYWw/IHJlYWQtcGFzdCBmbG9hdC1wYXR0ZXJuIG1hdGNoZXM/IHRocm93aW5nLXJlYWRlciByYXRpby1wYXR0ZXJuXSwgOnR5cGUgOmNsanMsIDpzeW0gY2xqcy50b29scy5yZWFkZXIuaW1wbC5jb21tb25zfSB7OnZhci1zeW1zIFt0aHJvdy1pbnZhbGlkLXVuaWNvZGUtZXNjYXBlIHRocm93LWR1cC1rZXlzIHRocm93LWJhZC1ucyB0aHJvdy11bmtub3duLXJlYWRlci10YWcgdGhyb3ctZW9mLWF0LWRpc3BhdGNoIHRocm93LWJhZC1tZXRhZGF0YS10YXJnZXQgdGhyb3ctaW52YWxpZC1udW1iZXIgcmVhZGVyLWVycm9yIHRocm93LWludmFsaWQtdW5pY29kZS1saXRlcmFsIHRocm93LW5zLW1hcC1uby1tYXAgdGhyb3ctdW5zdXBwb3J0ZWQtY2hhcmFjdGVyIHRocm93LWZlYXR1cmUtbm90LWtleXdvcmQgdGhyb3ctZW9mLWRlbGltaXRlZCB0aHJvdy1lb2YtaW4tY2hhcmFjdGVyIHRocm93LWJhZC1jaGFyIGVvZi1lcnJvciB0aHJvdy1iYWQtbWV0YWRhdGEgdGhyb3ctZW9mLXJlYWRpbmcgdGhyb3ctZW9mLWVycm9yIGlsbGVnYWwtYXJnLWVycm9yIHRocm93LWludmFsaWQtb2N0YWwtbGVuIHRocm93LWludmFsaWQtdW5pY29kZS1kaWdpdCB0aHJvdy1pbnZhbGlkLXVuaWNvZGUtZGlnaXQtaW4tdG9rZW4gdGhyb3ctaW52YWxpZC11bmljb2RlLWxlbiB0aHJvdy1zaW5nbGUtY29sb24gdGhyb3ctb2RkLW1hcCB0aHJvdy1iYWQtb2N0YWwtbnVtYmVyIHRocm93LWJhZC1yZWFkZXItdGFnIHRocm93LXVubWF0Y2gtZGVsaW1pdGVyIHRocm93LWludmFsaWQtY2hhcmFjdGVyLWxpdGVyYWwgdGhyb3ctaW52YWxpZC11bmljb2RlLWNoYXIgdGhyb3ctYmFkLWVzY2FwZS1jaGFyIHRocm93LWVvZi1hdC1zdGFydCB0aHJvdy1pbnZhbGlkXSwgOnR5cGUgOmNsanMsIDpzeW0gY2xqcy50b29scy5yZWFkZXIuaW1wbC5lcnJvcnN9IHs6dmFyLXN5bXMgW2luc3BlY3RdLCA6dHlwZSA6Y2xqcywgOnN5bSBjbGpzLnRvb2xzLnJlYWRlci5pbXBsLmluc3BlY3R9IHs6dmFyLXN5bXMgW3JlYWRlci1jb25kaXRpb25hbCB3aGl0ZXNwYWNlPyBjaGFyLWNvZGUgbGFzdC1pZCBjaGFyIG51bWVyaWM/IHNlY29uZCcgZGVzdWdhci1tZXRhIG5leHQtaWQgZXgtaW5mbz8gcmVhZGVyLWNvbmRpdGlvbmFsPyBuZXdsaW5lPyBuYW1lc3BhY2Uta2V5cyB3cy1yeF0sIDp0eXBlIDpjbGpzLCA6c3ltIGNsanMudG9vbHMucmVhZGVyLmltcGwudXRpbHN9IHs6dmFyLXN5bXMgW2xvZy1zb3VyY2VdLCA6dHlwZSA6Y2xqLCA6c3ltIGNsanMudG9vbHMucmVhZGVyLnJlYWRlci10eXBlc30gezp2YXItc3ltcyBbaW5kZXhpbmctcHVzaC1iYWNrLXJlYWRlciBsb2ctc291cmNlKiBtZXJnZS1tZXRhIFJlYWRlciBzb3VyY2UtbG9nZ2luZy1wdXNoLWJhY2stcmVhZGVyIHVucmVhZCBwZWVrLWNoYXIgSVB1c2hiYWNrUmVhZGVyIGluZGV4aW5nLXJlYWRlcj8gc3RyaW5nLXJlYWRlciByZWFkLWNoYXIgZ2V0LWNvbHVtbi1udW1iZXIgZ2V0LWZpbGUtbmFtZSByZWFkLWxpbmUgc3RyaW5nLXB1c2gtYmFjay1yZWFkZXIgbGluZS1zdGFydD8gc291cmNlLWxvZ2dpbmctcmVhZGVyPyBJbmRleGluZ1JlYWRlciBub2RlLXJlYWRhYmxlLXB1c2gtYmFjay1yZWFkZXIgZ2V0LWxpbmUtbnVtYmVyXSwgOnR5cGUgOmNsanMsIDpzeW0gY2xqcy50b29scy5yZWFkZXIucmVhZGVyLXR5cGVzfSB7OnZhci1zeW1zIFtvdXRwdXQtZGlyZWN0b3J5IHdpbmRvd3M/ICpjbG9qdXJlc2NyaXB0LXZlcnNpb24qIHNwbGl0LXBhdGhzIGJvb2xlYW4/IGZpbGUtb3ItcmVzb3VyY2UgZGlzdGluY3QtYnkgcGF0aCBub3JtYWxpemUtcGF0aCBjbGpzLWJ1aWx0LWRlcD8gY2xvanVyZXNjcmlwdC12ZXJzaW9uIGNvbXBpbGF0aW9uLWVycm9yIGV4dCBjb250ZW50LXNoYSB2YWxpZC1qcy1pZC1zdGFydD8gbnMtPnJlbHBhdGggZ2V0LW5hbWUgZGVidWctcHJuLW11dGV4IG1hcC1tZXJnZSB0by10YXJnZXQtZmlsZSBta2RpcnMgY29tcGlsZS1pZiBzeW50aGV0aWMtdmVyc2lvbj8gdXJsPyBtb2R1bGUtZmlsZS1zZXEgY29uanVuY3Rpb24tc3RyIHN1Z2dlc3Rpb24gcGF0aC1zZXEgY29tcGlsZWQtYnktdmVyc2lvbiBtZWFzdXJlIG5zLT5zb3VyY2UgbGFzdC1tb2RpZmllZCBkZWJ1Zy1wcm4gZmlsZT8gdW5rbm93bi1vcHRzIGxldmVuc2h0ZWluLWRpc3RhbmNlIGZpbGVuYW1lIHRvLXBhdGggdG9wby1zb3J0IG11bmdlLXBhdGggYnVpbGQtb3B0aW9ucyBjb21waWxlLXdoZW4gY2hhbmdlZD8gcmVsYXRpdmUtbmFtZV0sIDp0eXBlIDpjbGosIDpzeW0gY2xqcy51dGlsfSB7OnZhci1zeW1zIFtwcmltaXRpdmVzLWNsYXNzbmFtZXMgKycgZGVjaW1hbD8gcmVzdGFydC1hZ2VudCBzb3J0LWJ5IG1hY3JvZXhwYW5kIGVuc3VyZSBjaHVuay1maXJzdCBlZHVjdGlvbiB0cmVlLXNlcSB1bmNoZWNrZWQtcmVtYWluZGVyLWludCBzZXEgcmVkdWNlIHdoZW4tZmlyc3QgZmluZC1ucyBnZXQtdGhyZWFkLWJpbmRpbmdzIGNvbnRhaW5zPyBldmVyeT8gcHJveHktbWFwcGluZ3Mga2VlcC1pbmRleGVkIGNvbmQtPj4gc3VicyByZWYtbWluLWhpc3Rvcnkgc2V0IHRha2UtbGFzdCBiaXQtc2V0IHJlYWRlci1jb25kaXRpb25hbCBnZW4tY2xhc3MgcXVhbGlmaWVkLWtleXdvcmQ/IHdoaWxlIC0+RWR1Y3Rpb24gYnV0bGFzdCBzYXRpc2ZpZXM/IGxpbmUtc2VxIHVuY2hlY2tlZC1zdWJ0cmFjdC1pbnQgKnByaW50LW5hbWVzcGFjZS1tYXBzKiB0YWtlLW50aCBmaXJzdCByZS1ncm91cHMgc2VxPyBkZWMnIG5zLXVubWFwIHByaW50bG4tc3RyIHdpdGgtYmluZGluZ3MqIGluc3QtbXMgaXRlcmF0b3Itc2VxIGl0ZXJhdGUgc2x1cnAgbmV3bGluZSBzaG9ydC1hcnJheSBmbj8gZG9hbGwgcHJlZmVycyBlbnVtZXJhdGlvbi1zZXEgZGVkdXBlIGRpc3NvYyBhdG9tIGltcG9ydCBiaXQtc2hpZnQtcmlnaHQgcHJpbnQtbWV0aG9kIHBlZWsgYWdldCBwdmFsdWVzIGJvdW5kLWZuIHZzd2FwISBsYXN0IHByIG5hbWVzcGFjZSBwdXNoLXRocmVhZC1iaW5kaW5ncyBiYXNlcyA9IHJlYWQrc3RyaW5nIGRvc3luYyByZW1vdmUtbnMgdGFrZSB2ZWN0b3I/IHNlcS10by1tYXAtZm9yLWRlc3RydWN0dXJpbmcgdGhyZWFkLWJvdW5kPyBzZW5kLXZpYSBib29sZWFuIGJpdC1zaGlmdC1sZWZ0IHJhbmRvbS11dWlkIGFueT8gZmluZC12YXIgcmFuZC1pbnQgYWNsb25lIFByaW50V3JpdGVyLW9uIHZyZXNldCEgY2h1bmsgZGVjIGZ1dHVyZS1jYWxsIHJlc3VsdHNldC1zZXEgc3RydWN0IG1hcCBqdXh0IG5zLXB1YmxpY3MgPCAqc291cmNlLXBhdGgqIHdpdGgtbG9hZGluZy1jb250ZXh0IHRlc3QgcmVzdCBleC1kYXRhIE5hTj8gY29tcGlsZSBpc2E/IGJvb2xlYW4/IC4uIG11bmdlIGRlbGF5IHNldC1lcnJvci1tb2RlISByZS1zZXEgY2hhcj8gbWFrZS1oaWVyYXJjaHkgc2V0LWFnZW50LXNlbmQtZXhlY3V0b3IhIHN3YXAtdmFscyEga2VlcCBjaGFyIG1hcGNhdCB1bmNoZWNrZWQtbG9uZyBhc2V0LWxvbmcgc29tZT8gdW5jaGVja2VkLW5lZ2F0ZSByZW1vdmUtdGFwIGdlbi1pbnRlcmZhY2UgKmNvbW1hbmQtbGluZS1hcmdzKiByZXZlcnNlIGluc3Q/IHJhbmdlIHNvcnQgLWNhY2hlLXByb3RvY29sLWZuIHVuY2hlY2tlZC1pbmMtaW50IG1hcC1pbmRleGVkIHdpdGgtYmluZGluZ3MgcmFuZC1udGggY29tcCBhd2FpdCBzcGl0IGZ1dHVyZS1kb25lPyAqcmVhZC1ldmFsKiBkb3J1biBzaW1wbGUtc3ltYm9sPyBkaXNqICoyIGV2YWwgY29ucyByZWZlciBwcmludC1kdXAgLXJlc2V0LW1ldGhvZHMgZmxvYXRzIHBvcz8gZm5pbCBtZXJnZS13aXRoIG50aHJlc3QgbG9hZCBpZi1ub3QgKnZlcmJvc2UtZGVmcmVjb3Jkcyogc2VxdWVudGlhbD8gKnByaW50LWxldmVsKiBzaHVmZmxlIGJvb2xlYW4tYXJyYXkgZmluZCBhbGVuZ3RoIGJpdC14b3IgZGVsaXZlciBkb3NlcSB1bnNpZ25lZC1iaXQtc2hpZnQtcmlnaHQgbmVnPyB2YXItc2V0IHVuY2hlY2tlZC1mbG9hdCBwbWFwIGVycm9yLW1vZGUgbnVtIHJlZHVjZWQ/IGRpc2ohIGZsb2F0PyBhc2V0LWZsb2F0IGRlZnR5cGUgYmVhbiBib29sZWFucyBucy11bmFsaWFzIHdoZW4tbGV0IGludC1hcnJheSBzZXQ/IGluYycgY2F0IFN0YWNrVHJhY2VFbGVtZW50LT52ZWMgKnN1cHByZXNzLXJlYWQqIGZsdXNoIHRha2Utd2hpbGUgdmFyeS1tZXRhIDw9IGFsdGVyIC0nIGlmLXNvbWUgY29uaiEgcmVwZWF0ZWRseSB6aXBtYXAgcmVzZXQtdmFscyEgYWx0ZXItdmFyLXJvb3QgYmlnaW50ZWdlciByZW1vdmUgKiByZS1wYXR0ZXJuIG1pbiBwb3AhIGNodW5rLWFwcGVuZCBwcm4tc3RyIHdpdGgtcHJlY2lzaW9uIGZvcm1hdCByZXZlcnNpYmxlPyBzaHV0ZG93bi1hZ2VudHMgY29uaiBib3VuZD8gdHJhbnNkdWNlIGxhenktc2VxICpwcmludC1sZW5ndGgqICpmaWxlKiBjb21wYXJlLWFuZC1zZXQhICp1c2UtY29udGV4dC1jbGFzc2xvYWRlciogYXdhaXQxIGxldCByZWYtc2V0IHBvcC10aHJlYWQtYmluZGluZ3MgaW50ZXJsZWF2ZSBwcmludGYgbWFwPyAtPiBkZWZzdHJ1Y3QgKmVyciogZ2V0IGRvdG8gaWRlbnRpdHkgaW50byBhcmVkdWNlIGxvbmcgZG91YmxlIHZvbGF0aWxlPyB1cGRhdGUtdmFscyBkZWZpbmxpbmUgbmZpcnN0IG1ldGEgZmluZC1wcm90b2NvbC1pbXBsIGJpdC1hbmQtbm90ICpkZWZhdWx0LWRhdGEtcmVhZGVyLWZuKiB2YXI/IG1ldGhvZC1zaWcgdW5jaGVja2VkLWFkZC1pbnQgdW5xdW90ZS1zcGxpY2luZyBoYXNoLW9yZGVyZWQtY29sbCBmdXR1cmUgcmVzZXQtbWV0YSEgY3ljbGUgZm4gc2VxdWUgZW1wdHk/IHNob3J0IGRlZmludGVyZmFjZSBhZGQtdGFwIGZpbHRlcnYgaGFzaCBxdW90IG5zLWFsaWFzZXMgcmVhZCB1bmNoZWNrZWQtZG91YmxlIGtleSBsb25ncyBub3Q9IHN0cmluZz8gdXJpPyBhc2V0LWRvdWJsZSB1bmNoZWNrZWQtbXVsdGlwbHktaW50IGNodW5rLXJlc3QgcGNhbGxzICphbGxvdy11bnJlc29sdmVkLXZhcnMqIHJlbW92ZS1hbGwtbWV0aG9kcyBucy1yZXNvbHZlIGFzLT4gYXNldC1ib29sZWFuIHRyYW1wb2xpbmUgZG91YmxlPyB3aGVuLW5vdCAqMSB2ZWMgKnByaW50LW1ldGEqIHdoZW4gaW50IG1hcC1lbnRyeT8gbnMtcmVmZXJzIHJhbmQgc2Vjb25kIHZlY3Rvci1vZiBoYXNoLWNvbWJpbmUgPiByZXBsYWNlIGludD8gYXNzb2NpYXRpdmU/IHVuY2hlY2tlZC1pbnQgc2V0LWVycm9yLWhhbmRsZXIhIGluc3QtbXMqIGtleXdvcmQ/IGZvcmNlIGJvdW5kLWZuKiBuYW1lc3BhY2UtbXVuZ2UgZ3JvdXAtYnkgcHJuIGV4dGVuZCB1bmNoZWNrZWQtbXVsdGlwbHkgc29tZS0+PiBkZWZhdWx0LWRhdGEtcmVhZGVycyAtPlZlY1NlcSBldmVuPyB1bmNoZWNrZWQtZGVjIEluc3QgdGFnZ2VkLWxpdGVyYWw/IGRvdWJsZS1hcnJheSBpbi1ucyBjcmVhdGUtbnMgcmUtbWF0Y2hlciBkZWZuIHJlZiBiaWdpbnQgZXh0ZW5kcz8gcHJvbWlzZSBhc2V0LWNoYXIgcnNlcSBleC1jYXVzZSBjb25zdHJ1Y3QtcHJveHkgYWdlbnQtZXJyb3JzICpjb21waWxlLWZpbGVzKiBleC1tZXNzYWdlICptYXRoLWNvbnRleHQqIGZsb2F0IHByLXN0ciBjb25jYXQgYXNldC1zaG9ydCBzZXQtYWdlbnQtc2VuZC1vZmYtZXhlY3V0b3IhIG5zIHN5bWJvbCB0by1hcnJheS0yZCBtb2QgYW1hcCBwb3AgdXNlIHVucXVvdGUgZGVjbGFyZSBkaXNzb2MhIHJlZHVjdGlvbnMgYXNldC1ieXRlIGluZGV4ZWQ/IHJlZi1oaXN0b3J5LWNvdW50IC0gYXNzb2MhIGhhc2gtc2V0IHJlZHVjZS1rdiBvciBjYXN0IHJlc2V0ISBuYW1lIGZmaXJzdCBzb3J0ZWQtc2V0IGNvdW50ZWQ/IGJ5dGUtYXJyYXkgcGFyc2UtZG91YmxlIHRhZ2dlZC1saXRlcmFsIHByaW50bG4gZXh0ZW5kLXR5cGUgbWFjcm9leHBhbmQtMSBhc3NvYy1pbiBjaGFyLW5hbWUtc3RyaW5nIGJpdC10ZXN0IGRlZm1ldGhvZCByZXF1aXJpbmctcmVzb2x2ZSBFTVBUWS1OT0RFIHRpbWUgbWVtb2l6ZSBhbHRlci1tZXRhISBmdXR1cmU/IHplcm8/IHNpbXBsZS1rZXl3b3JkPyByZXF1aXJlIHVuY2hlY2tlZC1kZWMtaW50IHBlcnNpc3RlbnQhIG5uZXh0IGFkZC13YXRjaCBub3QtZXZlcnk/IGNsYXNzPyByZW0gYWdlbnQtZXJyb3Igc29tZSBmdXR1cmUtY2FuY2VsbGVkPyBtZW1mbiBuZWctaW50PyBzdHJ1Y3QtbWFwIGRyb3AgKmRhdGEtcmVhZGVycyogbnRoIHNvcnRlZD8gbmlsPyBleHRlbmQtcHJvdG9jb2wgc3BsaXQtYXQgKmUgbG9hZC1yZWFkZXIgcmFuZG9tLXNhbXBsZSBjb25kLT4gZG90aW1lcyBzZWxlY3Qta2V5cyBiaXQtYW5kIGJvdW5kZWQtY291bnQgdXBkYXRlIGxpc3QqIHJlaWZ5IHVwZGF0ZS1pbiBwcmVmZXItbWV0aG9kIGFzZXQtaW50ICpjbG9qdXJlLXZlcnNpb24qIGVuc3VyZS1yZWR1Y2VkIConIGluc3RhbmNlPyB3aXRoLW9wZW4gbWl4LWNvbGxlY3Rpb24taGFzaCByZS1maW5kIHJ1biEgdmFsIGRlZm9uY2UgdW5jaGVja2VkLWFkZCBsb2FkZWQtbGlicyAtPlZlYyBieXRlcz8gbm90IHdpdGgtbWV0YSB1bnJlZHVjZWQgdGhlLW5zIHJlY29yZD8gdHlwZSBpZGVudGljYWw/IHVuY2hlY2tlZC1kaXZpZGUtaW50IG5zLW5hbWUgbWF4LWtleSAqdW5jaGVja2VkLW1hdGgqIGRlZm4tICpvdXQqIGZpbGUtc2VxIGFnZW50IG5zLW1hcCBzZXQtdmFsaWRhdG9yISBpZGVudD8gZGVmcHJvdG9jb2wgc3dhcCEgdmFscyB1bmNoZWNrZWQtc3VidHJhY3QgdGFwPiAqd2Fybi1vbi1yZWZsZWN0aW9uKiBzb3J0ZWQtc2V0LWJ5IHN5bmMgcXVhbGlmaWVkLWlkZW50PyBhc3NlcnQgKmNvbXBpbGUtcGF0aCogdHJ1ZT8gcmVsZWFzZS1wZW5kaW5nLXNlbmRzIHByaW50IGVtcHR5IHJlbW92ZS1tZXRob2QgKmluKiBwcmludC1jdG9yIGxldGZuIHZvbGF0aWxlISAvIHJlYWQtbGluZSByZWFkZXItY29uZGl0aW9uYWw/IGJpdC1vciBjbGVhci1hZ2VudC1lcnJvcnMgdmVjdG9yIHByb3h5LXN1cGVyID49IGRyb3AtbGFzdCBub3QtZW1wdHkgZGlzdGluY3QgcGFydGl0aW9uIGxvb3AgYWRkLWNsYXNzcGF0aCBiaXQtZmxpcCBsb25nLWFycmF5IGRlc2NlbmRhbnRzIGl0ZXJhdGlvbiBtZXJnZSBhY2Nlc3NvciBpbnRlZ2VyPyBtYXB2IGluZmluaXRlPyBwYXJ0aXRpb24tYWxsIHBhcnRpdGlvbi1ieSBudW1lcmF0b3Igb2JqZWN0LWFycmF5IHdpdGgtb3V0LXN0ciBjb25kcCBkZXJpdmUgbG9hZC1zdHJpbmcgc3BlY2lhbC1zeW1ib2w/IGFuY2VzdG9ycyBzdWJzZXEgZXJyb3ItaGFuZGxlciBnZW5zeW0gY29uZCByYXRpbz8gZGVsYXk/IGludGVybiBwcmludC1zaW1wbGUgZmxhdHRlbiBkb3VibGVzIGhhbHQtd2hlbiB3aXRoLWluLXN0ciByZW1vdmUtd2F0Y2ggZXgtaW5mbyBpZm4/IHNvbWUtPiBuYXQtaW50PyBwcm94eS1uYW1lIG5zLWludGVybnMgYWxsLW5zIGZpbmQtcHJvdG9jb2wtbWV0aG9kIHN1YnZlYyBmb3IgYmluZGluZyBwYXJ0aWFsIGNodW5rZWQtc2VxPyBmaW5kLWtleXdvcmQgcmVwbGljYXRlIG1pbi1rZXkgcmVkdWNlZCBjaGFyLWVzY2FwZS1zdHJpbmcgcmUtbWF0Y2hlcyBhcnJheS1tYXAgdW5jaGVja2VkLWJ5dGUgd2l0aC1sb2NhbC12YXJzIG5zLWltcG9ydHMgc2VuZC1vZmYgZGVmbWFjcm8gZXZlcnktcHJlZCBrZXlzIHJhdGlvbmFsaXplIGxvYWQtZmlsZSBkaXN0aW5jdD8gcG9zLWludD8gZXh0ZW5kZXJzIHVuY2hlY2tlZC1zaG9ydCBtZXRob2RzIG9kZD8gLT5BcnJheUNodW5rIGZsb2F0LWFycmF5ICozIGFsaWFzIGZyZXF1ZW5jaWVzIHJlYWQtc3RyaW5nIHByb3h5IHJzdWJzZXEgaW5jIGdldC1tZXRob2Qgd2l0aC1yZWRlZnMgdXVpZD8gYml0LWNsZWFyIGZpbHRlciBsb2NraW5nIGxpc3QgKyBzcGxpdC13aXRoIGFzZXQgLT5WZWNOb2RlIGFicyBrZXl3b3JkICpucyogZGVzdHJ1Y3R1cmUgKmFzc2VydCogZGVmbXVsdGkgY2hhcnMgc3RyIG5leHQgaGFzaC1tYXAgaWYtbGV0IHVuZGVyaXZlIHJlZi1tYXgtaGlzdG9yeSBUaHJvd2FibGUtPm1hcCBmYWxzZT8gKnByaW50LXJlYWRhYmx5KiBpbnRzIGNsYXNzIHNvbWUtZm4gY2FzZSAqZmx1c2gtb24tbmV3bGluZSogdG8tYXJyYXkgYmlnZGVjIGxpc3Q/IHNpbXBsZS1pZGVudD8gYml0LW5vdCBwYXJzZS11dWlkIGlvISB4bWwtc2VxIGJ5dGUgbWF4IHVwZGF0ZS1rZXlzID09ICphZ2VudCogbGF6eS1jYXQgY29tbWVudCBwYXJlbnRzIGNvdW50IHN1cGVycyAqZm4tbG9hZGVyKiBzb3J0ZWQtbWFwLWJ5IGFwcGx5IGludGVycG9zZSBkZXJlZiBwYXJzZS1ib29sZWFuIGFzc29jIHJhdGlvbmFsPyB0cmFuc2llbnQgY2xvanVyZS12ZXJzaW9uIGNodW5rLWNvbnMgY29tcGFyYXRvciBzb3J0ZWQtbWFwIHNlbmQgZHJvcC13aGlsZSBwcm94eS1jYWxsLXdpdGgtc3VwZXIgcmVhbGl6ZWQ/IGNoYXItYXJyYXkgcmVzb2x2ZSBjb21wYXJlIGNvbXBsZW1lbnQgKmNvbXBpbGVyLW9wdGlvbnMqICpwcmludC1kdXAqIGRlZnJlY29yZCB3aXRoLXJlZGVmcy1mbiBzZXF1ZW5jZSBjb25zdGFudGx5IGdldC1wcm94eS1jbGFzcyBtYWtlLWFycmF5IHNob3J0cyBjb21wbGV0aW5nIHVwZGF0ZS1wcm94eSB1bmNoZWNrZWQtbmVnYXRlLWludCBoYXNoLXVub3JkZXJlZC1jb2xsIHJlcGVhdCB1bmNoZWNrZWQtaW5jICpyZWFkZXItcmVzb2x2ZXIqIG50aG5leHQgYW5kIGNyZWF0ZS1zdHJ1Y3QgZ2V0LXZhbGlkYXRvciBudW1iZXI/IGF3YWl0LWZvciBjaHVuay1uZXh0IHByaW50LXN0ciBub3QtYW55PyBpbnRvLWFycmF5IHF1YWxpZmllZC1zeW1ib2w/IHBhcnNlLWxvbmcgaW5pdC1wcm94eSBjaHVuay1idWZmZXIgc2VxYWJsZT8gc3ltYm9sPyB3aGVuLXNvbWUgdW5jaGVja2VkLWNoYXIgLT4+IGZ1dHVyZS1jYW5jZWwgdmFyLWdldCBjb21tdXRlIGNvbGw/IGdldC1pbiBmbmV4dCBkZW5vbWluYXRvciBieXRlcyByZWZlci1jbG9qdXJlXSwgOnR5cGUgOmNsaiwgOnN5bSBjbG9qdXJlLmNvcmV9IHs6dmFyLXN5bXMgW1B1YiByZWR1Y2UgcmVtb3ZlPiB0aW1lb3V0IHVuc3ViKiBhZG1peCogdW5taXgqIG1peCBwdWIgdGFrZSB1bnN1Yi1hbGwqIDwhIG1hcCBNdXggbWFwY2F0PiBidWZmZXIgY2xvc2UhIG9mZmVyISBjaGFuIHNvbG8tbW9kZSogb250by1jaGFuISB0YXAgZ28gYWRtaXggcHJvbWlzZS1jaGFuIHVuaXF1ZSBtdXhjaCogc29sby1tb2RlIHRyYW5zZHVjZSBvbnRvLWNoYW4gdG8tY2hhbiBkcm9wcGluZy1idWZmZXIgdW50YXAtYWxsIGludG8gPiEhIHRvLWNoYW4hIGFsdCEgcGlwZWxpbmUgc3ViIGdvLWxvb3AgbWFwPiBwaXBlIHVubWl4IG9udG8tY2hhbiEhIGZpbHRlcjwgc3ViKiByZW1vdmU8IGFsdCEhIHVudGFwKiA8ISEgdG9nZ2xlIHVudGFwLWFsbCogc2xpZGluZy1idWZmZXIgcGFydGl0aW9uIE11bHQgbWVyZ2UgcGFydGl0aW9uLWJ5IHVuc3ViLWFsbCA+ISB0by1jaGFuISEgdW5taXgtYWxsKiBzcGxpdCB1bm1peC1hbGwgZmlsdGVyPiB0YXAqIGRlZmJsb2NraW5nb3AgdW50YXAgYWx0cyEgdW5zdWIgcG9sbCEgdGhyZWFkIG1hcDwgZm4taGFuZGxlciBkby1hbHRzIHBpcGVsaW5lLWJsb2NraW5nIHBpcGVsaW5lLWFzeW5jIE1peCB0b2dnbGUqIG11bHQgdGhyZWFkLWNhbGwgYWx0cyEhIG1hcGNhdDwgaW9jLWFsdHMhIHVuYmxvY2tpbmctYnVmZmVyPyBkby1hbHQgcHV0ISB0YWtlIV0sIDp0eXBlIDpjbGosIDpzeW0gY2xvanVyZS5jb3JlLmFzeW5jfSB7OnZhci1zeW1zIFstPlByb21pc2VCdWZmZXIgLT5Ecm9wcGluZ0J1ZmZlciBkcm9wcGluZy1idWZmZXIgZml4ZWQtYnVmZmVyIC0+Rml4ZWRCdWZmZXIgc2xpZGluZy1idWZmZXIgLT5TbGlkaW5nQnVmZmVyIHByb21pc2UtYnVmZmVyXSwgOnR5cGUgOmNsaiwgOnN5bSBjbG9qdXJlLmNvcmUuYXN5bmMuaW1wbC5idWZmZXJzfSB7OnZhci1zeW1zIFtjbGVhbnVwIGNoYW4gYm94IE1NQyBhYm9ydCBhc3NlcnQtdW5sb2NrIC0+TWFueVRvTWFueUNoYW5uZWxdLCA6dHlwZSA6Y2xqLCA6c3ltIGNsb2p1cmUuY29yZS5hc3luYy5pbXBsLmNoYW5uZWxzfSB7OnZhci1zeW1zIFtjb3VudGVkLXRocmVhZC1mYWN0b3J5IHByb2Nlc3NvcnNdLCA6dHlwZSA6Y2xqLCA6c3ltIGNsb2p1cmUuY29yZS5hc3luYy5pbXBsLmNvbmN1cnJlbnR9IHs6dmFyLXN5bXMgW2V4ZWN1dG9yIGluLWRpc3BhdGNoLXRocmVhZD8gcnVuIGNoZWNrLWJsb2NraW5nLWluLWRpc3BhdGNoXSwgOnR5cGUgOmNsaiwgOnN5bSBjbG9qdXJlLmNvcmUuYXN5bmMuaW1wbC5kaXNwYXRjaH0gezp2YXItc3ltcyBbdGhyZWFkLXBvb2wtZXhlY3V0b3JdLCA6dHlwZSA6Y2xqLCA6c3ltIGNsb2p1cmUuY29yZS5hc3luYy5pbXBsLmV4ZWMudGhyZWFkcG9vbH0gezp2YXItc3ltcyBbaW5kZXgtc3RhdGUtbWFjaGluZSAtPlBvcFRyeSBFWENFUFRJT04tRlJBTUVTIGJsb2NrLXJlZmVyZW5jZXMgcmVhZHMtZnJvbSBpbmRleC1ibG9jayBtYXAtPkNhc2UgbWFwLT5JbnN0YW5jZUludGVyb3AgYWRkLWJsb2NrIGluc3RydWN0aW9uPyAtPlJhd0NvZGUgbGV0LWJpbmRpbmctdG8tc3NhIG1hcC0+Q29uZEJyIG1hcC0+Q29uc3QgLT5DYWxsIC0+Sm1wIC0+Q29uZEJyIG1hcC0+UHVzaFRyeSBjb3VudC1wZXJzaXN0ZW50LXZhbHVlcyBnZXQtYmluZGluZyBnZW4tcGxhbiAtaXRlbS10by1zc2EgLT5DYXNlIGdldC1ibG9jayBpZC1mb3ItaW5zdCBpbmRleC1pbnN0cnVjdGlvbiBwZGVidWcgd3JpdGVzLXRvIC0+RG90IG1hcC0+Q3VzdG9tVGVybWluYXRvciB0ZXJtaW5hdG9yLWNvZGUgc2V0LWJsb2NrIC0+Q2F0Y2hIYW5kbGVyIFNUQVRFLUlEWCAtPlB1c2hUcnkgbWFyay10cmFuc2l0aW9ucyAtPkZuIG1hcC0+Q2F0Y2hIYW5kbGVyIC0+UmV0dXJuIGFzZXQtb2JqZWN0IHJ1bi1wYXNzZXMgSUVtaXR0YWJsZUluc3RydWN0aW9uIG1hcC0+Q2FsbCBJVGVybWluYXRvciBtYXAtPkZuIGVtaXQtaW5zdHJ1Y3Rpb24gSUluc3RydWN0aW9uIG1hcC0+RG90IG1ha2UtZW52IHByb3BhZ2F0ZS1yZWN1ciB0ZXJtaW5hdGUtYmxvY2sgLT5JbnN0YW5jZUludGVyb3AgbWFwLT5Qb3BUcnkgcGVyc2lzdGVudC12YWx1ZT8gcHJvcGFnYXRlLXRyYW5zaXRpb25zIGFzc29jLWluLXBsYW4gcnVuLXN0YXRlLW1hY2hpbmUtd3JhcHBlZCBwdXNoLWFsdGVyLWJpbmRpbmcgYXNldC1hbGwhIGRlYnVnIHBhcnNlLXRvLXN0YXRlLW1hY2hpbmUgZ2V0LXBsYW4gRk4tSURYIGFnZXQtb2JqZWN0IHJldHVybi1jaGFuIGFsbCBwb3AtYmluZGluZyAtPkVuZEZpbmFsbHkgbmVzdGVkLWdvPyAtPlJlY3VyIGFkZC1pbnN0cnVjdGlvbiBuby1vcCBwYXNzZXMgcHVzaC1iaW5kaW5nIC0+Q3VzdG9tVGVybWluYXRvciBCSU5ESU5HUy1JRFggbWFwLT5SZXR1cm4gaXRlbS10by1zc2EgbWFwLT5FbmRGaW5hbGx5IGFzeW5jLWN1c3RvbS10ZXJtaW5hdG9ycyAtPlN0YXRpY0NhbGwgbWFwLT5SYXdDb2RlIGVtaXQtaGludGVkIC0+Q29uc3QgbWFwLT5TdGF0aWNDYWxsIHByaW50LXBsYW4gcnVuLXN0YXRlLW1hY2hpbmUgZ2V0LWluLXBsYW4gdXBkYXRlLWluLXBsYW4gbWFwLT5SZWN1ciBtYXAtPkptcCBmaW5pc2hlZD8gVVNFUi1TVEFSVC1JRFggcHV0ISB0YWtlISB2YXItbmFtZSBzdGF0ZS1tYWNoaW5lIFZBTFVFLUlEWF0sIDp0eXBlIDpjbGosIDpzeW0gY2xvanVyZS5jb3JlLmFzeW5jLmltcGwuaW9jLW1hY3Jvc30gezp2YXItc3ltcyBbbXV0ZXhdLCA6dHlwZSA6Y2xqLCA6c3ltIGNsb2p1cmUuY29yZS5hc3luYy5pbXBsLm11dGV4fSB7OnZhci1zeW1zIFtyZW1vdmUhIGNsb3NlLWJ1ZiEgY2xvc2UhIEhhbmRsZXIgYmxvY2thYmxlPyBhY3RpdmU/IEJ1ZmZlciBmdWxsPyBhZGQhIGxvY2staWQgZXhlYyBFeGVjdXRvciBhZGQhKiBSZWFkUG9ydCBDaGFubmVsIGNsb3NlZD8gVW5ibG9ja2luZ0J1ZmZlciBNQVgtUVVFVUUtU0laRSBjb21taXQgcHV0ISB0YWtlISBXcml0ZVBvcnRdLCA6dHlwZSA6Y2xqLCA6c3ltIGNsb2p1cmUuY29yZS5hc3luYy5pbXBsLnByb3RvY29sc30gezp2YXItc3ltcyBbLT5UaW1lb3V0UXVldWVFbnRyeSB0aW1lb3V0IHRpbWVvdXQtZGFlbW9uIFRJTUVPVVRfUkVTT0xVVElPTl9NU10sIDp0eXBlIDpjbGosIDpzeW0gY2xvanVyZS5jb3JlLmFzeW5jLmltcGwudGltZXJzfSB7OnZhci1zeW1zIFt0aHJvdWdoLWNhY2hlIGRlZmNhY2hlIGNsZWFyLXNvZnQtY2FjaGUhIG1ha2UtcmVmZXJlbmNlIC0+Rm5DYWNoZSAtPlNvZnRDYWNoZSBzb2Z0LWNhY2hlLWZhY3RvcnkgaGFzPyBldmljdCBtaXNzIGxvb2t1cCBoaXQgdGhyb3VnaCB0dGwtY2FjaGUtZmFjdG9yeSBsdS1jYWNoZS1mYWN0b3J5IC0+TElSU0NhY2hlIC0+TFJVQ2FjaGUgLT5CYXNpY0NhY2hlIGxpcnMtY2FjaGUtZmFjdG9yeSBiYXNpYy1jYWNoZS1mYWN0b3J5IENhY2hlUHJvdG9jb2wgc2VlZCBmaWZvLWNhY2hlLWZhY3RvcnkgLT5GSUZPQ2FjaGUgLT5UVExDYWNoZVEgLT5MVUNhY2hlIGxydS1jYWNoZS1mYWN0b3J5XSwgOnR5cGUgOmNsaiwgOnN5bSBjbG9qdXJlLmNvcmUuY2FjaGV9IHs6dmFyLXN5bXMgW21lbW8tdHRsIC0+UGx1Z2dhYmxlTWVtb2l6YXRpb24gbWVtbyBtZW1vaXplZD8gbGF6eS1zbmFwc2hvdCBsdSBmaWZvIG1lbW8tdW53cmFwIG1lbW8tZmlmbyBtZW1vaXplciBtZW1vLXN3YXAhIC0+UmV0cnlpbmdEZWxheSBscnUgYnVpbGQtbWVtb2l6ZXIgc25hcHNob3QgdHRsIG1lbW8tbHUgbWVtby1jbGVhciEgbWVtby1yZXNldCEgbWVtby1scnVdLCA6dHlwZSA6Y2xqLCA6c3ltIGNsb2p1cmUuY29yZS5tZW1vaXplfSB7OnZhci1zeW1zIFtJS1ZSZWR1Y2UgTmF2aWdhYmxlIG5hdiBEYXRhZmlhYmxlIENvbGxSZWR1Y2UgZGF0YWZ5IGNvbGwtcmVkdWNlIGludGVybmFsLXJlZHVjZSBJbnRlcm5hbFJlZHVjZSBrdi1yZWR1Y2VdLCA6dHlwZSA6Y2xqLCA6c3ltIGNsb2p1cmUuY29yZS5wcm90b2NvbHN9IHs6dmFyLXN5bXMgW3JlZHVjZSB0YWtlIG1hcCBmb2xkY2F0IHJlZHVjZXIgbWFwY2F0IGNhdCB0YWtlLXdoaWxlIHJlbW92ZSBwb29sIENvbGxGb2xkIGZvbGRlciBhcHBlbmQhIC0+Q2F0IGRyb3AgZm9sZCBmbGF0dGVuIGZpbHRlciBmanRhc2sgbW9ub2lkIGNvbGwtZm9sZF0sIDp0eXBlIDpjbGosIDpzeW0gY2xvanVyZS5jb3JlLnJlZHVjZXJzfSB7OnZhci1zeW1zIFtjYXR2ZWMgc3VidmVjIHZlY3RvciB2ZWNdLCA6dHlwZSA6Y2xqcywgOnN5bSBjbG9qdXJlLmNvcmUucnJiLXZlY3Rvcn0gezp2YXItc3ltcyBbcmFuZ2VzIHJlZ3VsYXI/IHJlbW92ZS1sZWZ0bW9zdC1jaGlsZCBsYXN0LXJhbmdlIGZpcnN0LWNoaWxkIG5ldy1wYXRoKiByZWd1bGFyLXJhbmdlcyBmb2xkLXRhaWwgaW5kZXgtb2YtbmlsIG92ZXJmbG93PyBlbXB0eS1ub2RlIHJlcGxhY2UtbGVmdG1vc3QtY2hpbGQgY2xvbmUgbGFzdC1jaGlsZCBpbmRleC1vZi0wIHJlcGxhY2UtcmlnaHRtb3N0LWNoaWxkXSwgOnR5cGUgOmNsanMsIDpzeW0gY2xvanVyZS5jb3JlLnJyYi12ZWN0b3Iubm9kZXN9IHs6dmFyLXN5bXMgWy1zcGxpY2V2IFBTcGxpY2VhYmxlVmVjdG9yIC1zbGljZXYgUFNsaWNlYWJsZVZlY3Rvcl0sIDp0eXBlIDpjbGpzLCA6c3ltIGNsb2p1cmUuY29yZS5ycmItdmVjdG9yLnByb3RvY29sc30gezp2YXItc3ltcyBbc2hpZnQtZnJvbS10byBzbG90LWNvdW50IHppcHBhdGggcnJiLWNodW5rZWQtc2VxIC1hcy1ycmJ0IEFzUlJCVCBzbGljZS1sZWZ0IHN1YnRyZWUtYnJhbmNoLWNvdW50IHJyYnQtY29uY2F0LXRocmVzaG9sZCBzbGljZS1yaWdodCBtYXgtZXh0cmEtc2VhcmNoLXN0ZXBzIGNoaWxkLXNlcSByZWJhbGFuY2UtbGVhdmVzIHJlYmFsYW5jZSBsZWFmLXNlcSBzcXVhc2gtbm9kZXMgc3BsaWNlLXJyYnRzXSwgOnR5cGUgOmNsanMsIDpzeW0gY2xvanVyZS5jb3JlLnJyYi12ZWN0b3IucnJidH0gezp2YXItc3ltcyBbZW5zdXJlLWVkaXRhYmxlIGVkaXRhYmxlLXJvb3QgZWRpdGFibGUtdGFpbCBwdXNoLXRhaWwhIHBvcC10YWlsISBkby1hc3NvYyFdLCA6dHlwZSA6Y2xqcywgOnN5bSBjbG9qdXJlLmNvcmUucnJiLXZlY3Rvci50cmFuc2llbnRzfSB7OnZhci1zeW1zIFt0YWlsLW9mZnNldCBhcnJheS1mb3IgbmV3LXBhdGggcHVzaC10YWlsIHBvcC10YWlsIGRvLWFzc29jXSwgOnR5cGUgOmNsanMsIDpzeW0gY2xvanVyZS5jb3JlLnJyYi12ZWN0b3IudHJlZXN9IHs6dmFyLXN5bXMgW3N0b3Atc2VydmVyIHJlcGwtaW5pdCBzdGFydC1zZXJ2ZXIgc3RhcnQtc2VydmVycyBzdG9wLXNlcnZlcnMgcmVwbC1yZWFkICpzZXNzaW9uKiBpby1wcmVwbCBwcmVwbCByZXBsIHJlbW90ZS1wcmVwbF0sIDp0eXBlIDpjbGosIDpzeW0gY2xvanVyZS5jb3JlLnNlcnZlcn0gezp2YXItc3ltcyBbZXZlbi1udW1iZXItb2YtZm9ybXM/XSwgOnR5cGUgOmNsaiwgOnN5bSBjbG9qdXJlLmNvcmUuc3BlY3MuYWxwaGF9IHs6dmFyLXN5bXMgW2VxdWFsaXR5LXBhcnRpdGlvbiBFcXVhbGl0eVBhcnRpdGlvbiBkaWZmLXNpbWlsYXIgRGlmZiBkaWZmXSwgOnR5cGUgOmNsanMsIDpzeW0gY2xvanVyZS5kYXRhfSB7OnZhci1zeW1zIFtwYWQtbGVuZ3RoIGVuY29kZSBkZWNvZGUhIGRlYy1sZW5ndGggZGVjb2RlIGVuYy1sZW5ndGggZW5jb2RlISBlbmNvZGluZy10cmFuc2ZlciBkZWNvZGluZy10cmFuc2Zlcl0sIDp0eXBlIDpjbGosIDpzeW0gY2xvanVyZS5kYXRhLmNvZGVjLmJhc2U2NH0gezp2YXItc3ltcyBbcHByaW50IC13cml0ZSByZWFkLWpzb24gcmVhZC1zdHIgcmVhZCBqc29uLXN0ciB3cml0ZS1zdHIgcHByaW50LWpzb24gSlNPTldyaXRlciB3cml0ZSB3cml0ZS1qc29uIHByaW50LWpzb25dLCA6dHlwZSA6Y2xqLCA6c3ltIGNsb2p1cmUuZGF0YS5qc29ufSB7OnZhci1zeW1zIFstPlBlcnNpc3RlbnRQcmlvcml0eU1hcCBwcmlvcml0eS1tYXAtYnkgcHJpb3JpdHktPnNldC1vZi1pdGVtcyBhcHBseS1rZXlmbiBwcmlvcml0eS1tYXAta2V5Zm4gcHJpb3JpdHktbWFwLWtleWZuLWJ5IHN1YnNlcSByc3Vic2VxIHByaW9yaXR5LW1hcF0sIDp0eXBlIDpjbGosIDpzeW0gY2xvanVyZS5kYXRhLnByaW9yaXR5LW1hcH0gezp2YXItc3ltcyBbbmF2IGRhdGFmeV0sIDp0eXBlIDpjbGosIDpzeW0gY2xvanVyZS5kYXRhZnl9IHs6dmFyLXN5bXMgW3JlYWQgcmVhZC1zdHJpbmddLCA6dHlwZSA6Y2xqLCA6c3ltIGNsb2p1cmUuZWRufSB7OnZhci1zeW1zIFt2YWxpZGF0ZWQgcmVhZC1pbnN0YW50LXRpbWVzdGFtcCByZWFkLWluc3RhbnQtY2FsZW5kYXIgcmVhZC1pbnN0YW50LWRhdGUgcGFyc2UtdGltZXN0YW1wXSwgOnR5cGUgOmNsaiwgOnN5bSBjbG9qdXJlLmluc3RhbnR9IHs6dmFyLXN5bXMgW2Jyb3dzZS11cmwgKm9wZW4tdXJsLXNjcmlwdCpdLCA6dHlwZSA6Y2xqLCA6c3ltIGNsb2p1cmUuamF2YS5icm93c2V9IHs6dmFyLXN5bXMgW2RlZmF1bHQtc3RyZWFtcy1pbXBsIG1ha2Utb3V0cHV0LXN0cmVhbSBtYWtlLXBhcmVudHMgZGVsZXRlLWZpbGUgaW5wdXQtc3RyZWFtIG1ha2Utd3JpdGVyIGFzLXJlbGF0aXZlLXBhdGggY29weSBhcy1maWxlIG91dHB1dC1zdHJlYW0gbWFrZS1yZWFkZXIgQ29lcmNpb25zIGZpbGUgbWFrZS1pbnB1dC1zdHJlYW0gSU9GYWN0b3J5IHJlc291cmNlIHdyaXRlciBhcy11cmwgcmVhZGVyXSwgOnR5cGUgOmNsaiwgOnN5bSBjbG9qdXJlLmphdmEuaW99IHs6dmFyLXN5bXMgW3NoICpzaC1kaXIqIHdpdGgtc2gtZGlyICpzaC1lbnYqIHdpdGgtc2gtZW52XSwgOnR5cGUgOmNsaiwgOnN5bSBjbG9qdXJlLmphdmEuc2hlbGx9IHs6dmFyLXN5bXMgW21haW4gd2l0aC1iaW5kaW5ncyBzdGFjay1lbGVtZW50LXN0ciByZXBsLWNhdWdodCByZXBsLWV4Y2VwdGlvbiBlcnItPm1zZyByZXBsLXJlYWQgbG9hZC1zY3JpcHQgc2tpcC1pZi1lb2wgc2tpcC13aGl0ZXNwYWNlIHJlcG9ydC1lcnJvciByb290LWNhdXNlIHJlcGwtcmVxdWlyZXMgZGVtdW5nZSB3aXRoLXJlYWQta25vd24gZXgtc3RyIHJlbnVtYmVyaW5nLXJlYWQgcmVwbCByZXBsLXByb21wdCBleC10cmlhZ2VdLCA6dHlwZSA6Y2xqLCA6c3ltIGNsb2p1cmUubWFpbn0gezp2YXItc3ltcyBbcHByaW50IHNpbXBsZS1kaXNwYXRjaCBnZXQtcHJldHR5LXdyaXRlciAqcHJpbnQtc3VwcHJlc3MtbmFtZXNwYWNlcyogKnByaW50LXByZXR0eSogKnByaW50LXBwcmludC1kaXNwYXRjaCogcHByaW50LW5ld2xpbmUgY29kZS1kaXNwYXRjaCBwcmludC1sZW5ndGgtbG9vcCBwcHJpbnQtdGFiIHBwcmludC1sb2dpY2FsLWJsb2NrIHByaW50LXRhYmxlIHBwIHNldC1wcHJpbnQtZGlzcGF0Y2ggZnJlc2gtbGluZSBmb3JtYXR0ZXItb3V0IGZvcm1hdHRlciBwcHJpbnQtaW5kZW50ICpwcmludC1yYWRpeCogY2wtZm9ybWF0ICpwcmludC1taXNlci13aWR0aCogd3JpdGUgKnByaW50LXJpZ2h0LW1hcmdpbiogd3JpdGUtb3V0IHdpdGgtcHByaW50LWRpc3BhdGNoICpwcmludC1iYXNlKl0sIDp0eXBlIDpjbGosIDpzeW0gY2xvanVyZS5wcHJpbnR9IHs6dmFyLXN5bXMgWy0+RmllbGQgLT5NZXRob2QgVHlwZVJlZmVyZW5jZSByZWZsZWN0IG1hcC0+RmllbGQgbWFwLT5NZXRob2QgdHlwZW5hbWUgLT5KYXZhUmVmbGVjdG9yIC0+QXNtUmVmbGVjdG9yIHJlc29sdmUtY2xhc3MgZmxhZy1kZXNjcmlwdG9ycyBkby1yZWZsZWN0IENsYXNzUmVzb2x2ZXIgUmVmbGVjdG9yIC0+Q29uc3RydWN0b3IgbWFwLT5Db25zdHJ1Y3RvciB0eXBlLXJlZmxlY3RdLCA6dHlwZSA6Y2xqLCA6c3ltIGNsb2p1cmUucmVmbGVjdH0gezp2YXItc3ltcyBbc291cmNlLWZuIGRvYyBzdGFjay1lbGVtZW50LXN0ciBmaW5kLWRvYyBkaXIgcHN0IGRpci1mbiBzb3VyY2Ugc2V0LWJyZWFrLWhhbmRsZXIhIHJvb3QtY2F1c2UgZGVtdW5nZSB0aHJlYWQtc3RvcHBlciBhcHJvcG9zXSwgOnR5cGUgOmNsaiwgOnN5bSBjbG9qdXJlLnJlcGx9IHs6dmFyLXN5bXMgW3VuaW9uIG1hcC1pbnZlcnQgam9pbiBzZWxlY3QgaW50ZXJzZWN0aW9uIHN1cGVyc2V0PyBpbmRleCBzdWJzZXQ/IHJlbmFtZSByZW5hbWUta2V5cyBwcm9qZWN0IGRpZmZlcmVuY2VdLCA6dHlwZSA6Y2xqLCA6c3ltIGNsb2p1cmUuc2V0fSB7OnZhci1zeW1zIFt1bmlvbiBtYXAtaW52ZXJ0IGpvaW4gc2VsZWN0IGludGVyc2VjdGlvbiBzdXBlcnNldD8gaW5kZXggc3Vic2V0PyByZW5hbWUgcmVuYW1lLWtleXMgcHJvamVjdCBkaWZmZXJlbmNlXSwgOnR5cGUgOmNsanMsIDpzeW0gY2xvanVyZS5zZXR9IHs6dmFyLXN5bXMgW2Zvcm0gJiBuaWxhYmxlLWltcGwgKnJlY3Vyc2lvbi1saW1pdCogKmNvbGwtZXJyb3ItbGltaXQqIGZzcGVjIGV4cGxhaW4tcHJpbnRlciBTcGVjaXplIGV2ZXJ5IGtleXMqIGFsdC1pbXBsIGRlZi1pbXBsICpleHBsYWluLW91dCogcmVnZXgtc3BlYy1pbXBsIG1lcmdlLXNwZWMtaW1wbCBleHBsYWluLWRhdGEqIGNoZWNrLWFzc2VydHMgYXNzZXJ0KiBpbnN0LWluLXJhbmdlPyBuaWxhYmxlIGFuZC1zcGVjLWltcGwgZGVzY3JpYmUqIG1hcC1zcGVjLWltcGwgY29sbC1vZiBjYXQgKiBleHBsYWluIHdpdGgtZ2VuKiBvci1zcGVjLWltcGwgKmZzcGVjLWl0ZXJhdGlvbnMqIFNwZWMgdW5mb3JtIHZhbGlkPyBnZW4gZXZlcnkta3YgaW50LWluIGFsdCBub25jb25mb3JtaW5nIHVuZm9ybSogYWJicmV2IHJlZ2V4PyBpbnQtaW4tcmFuZ2U/IG9yIHNwZWM/IHJlZ2lzdHJ5IHJlcCtpbXBsIGV4ZXJjaXNlLWZuIGV4ZXJjaXNlIG11bHRpLXNwZWMgZXhwbGFpbi1kYXRhIHR1cGxlLWltcGwgbXVsdGktc3BlYy1pbXBsIHR1cGxlIGNvbmZvcm0gZ2VuKiBmc3BlYy1pbXBsIGFzc2VydCA/ICpjb2xsLWNoZWNrLWxpbWl0KiBtZXJnZSBnZXQtc3BlYyBjb25mb3JtZXIgZXZlcnktaW1wbCBzcGVjIGtleXMgc3BlYy1pbXBsICsgaW52YWxpZD8gYW1wLWltcGwgbWFwLW9mIGNhdC1pbXBsIGV4cGxhaW4tc3RyICpjb21waWxlLWFzc2VydHMqIHdpdGgtZ2VuIGNvbmZvcm0qIGNoZWNrLWFzc2VydHM/IHJlcC1pbXBsIGRvdWJsZS1pbiBpbnN0LWluIGRlc2NyaWJlIGV4cGxhaW4tb3V0IGFuZCBzcGVjaXplKiBkZWYgbWF5YmUtaW1wbCBleHBsYWluKiBmZGVmXSwgOnR5cGUgOmNsaiwgOnN5bSBjbG9qdXJlLnNwZWMuYWxwaGF9IHs6dmFyLXN5bXMgW3V1aWQgZ2VuLWZvci1wcmVkIGxhenktcHJpbSBzZXQgb25lLW9mIGFueS1wcmludGFibGUgdmVjdG9yLWRpc3RpbmN0IGJvb2xlYW4gc3RyaW5nLWFscGhhbnVtZXJpYyBtYXAgZGVsYXkgc2ltcGxlLXR5cGUgY2hhciBiaW5kIHN5bWJvbC1ucyBhbnkgc2h1ZmZsZSBsYXp5LXByaW1zIGNhdCBkb3VibGUgY2hhci1hbHBoYSBpbnQgcmV0dXJuIGdlbi1mb3ItbmFtZSBzeW1ib2wgcXVpY2stY2hlY2sgY2hhci1hbHBoYW51bWVyaWMgY2hvb3NlIGZvci1hbGwqIHN0cmluZy1hc2NpaSBmcmVxdWVuY3kgZG91YmxlKiBnZW5lcmF0ZSBkZWxheS1pbXBsIGxhenktY29tYmluYXRvcnMgdHVwbGUgc3RyaW5nIHZlY3RvciBsYXJnZS1pbnRlZ2VyIGtleXdvcmQtbnMgbm90LWVtcHR5IGVsZW1lbnRzIHNhbXBsZSBsaXN0IGxhcmdlLWludGVnZXIqIGtleXdvcmQgaGFzaC1tYXAgcmF0aW8gc3VjaC10aGF0IGZtYXAgY2hhci1hc2NpaSBzaW1wbGUtdHlwZS1wcmludGFibGUgbGF6eS1jb21iaW5hdG9yIGJ5dGVzXSwgOnR5cGUgOmNsaiwgOnN5bSBjbG9qdXJlLnNwZWMuZ2VuLmFscGhhfSB7OnZhci1zeW1zIFtlbmRzLXdpdGg/IGNhcGl0YWxpemUgcmV2ZXJzZSBqb2luIHJlcGxhY2UtZmlyc3Qgc3RhcnRzLXdpdGg/IGVzY2FwZSBsYXN0LWluZGV4LW9mIHJlLXF1b3RlLXJlcGxhY2VtZW50IGluY2x1ZGVzPyByZXBsYWNlIHNwbGl0LWxpbmVzIGxvd2VyLWNhc2UgdHJpbS1uZXdsaW5lIHVwcGVyLWNhc2Ugc3BsaXQgdHJpbXIgaW5kZXgtb2YgdHJpbSB0cmltbCBibGFuaz9dLCA6dHlwZSA6Y2xqLCA6c3ltIGNsb2p1cmUuc3RyaW5nfSB7OnZhci1zeW1zIFtlbmRzLXdpdGg/IGNhcGl0YWxpemUgcmV2ZXJzZSBqb2luIHJlcGxhY2UtZmlyc3Qgc3RhcnRzLXdpdGg/IGVzY2FwZSBsYXN0LWluZGV4LW9mIGluY2x1ZGVzPyByZXBsYWNlIHNwbGl0LWxpbmVzIGxvd2VyLWNhc2UgdHJpbS1uZXdsaW5lIHVwcGVyLWNhc2Ugc3BsaXQgdHJpbXIgaW5kZXgtb2YgdHJpbSB0cmltbCBibGFuaz9dLCA6dHlwZSA6Y2xqcywgOnN5bSBjbG9qdXJlLnN0cmluZ30gezp2YXItc3ltcyBbcXVpY2stY2hlY2tdLCA6dHlwZSA6Y2xqcywgOnN5bSBjbG9qdXJlLnRlc3QuY2hlY2t9IHs6dmFyLXN5bXMgW2dlbi1mbWFwIHV1aWQgc2V0IG9uZS1vZiBhbnktcHJpbnRhYmxlIHZlY3Rvci1kaXN0aW5jdCBib29sZWFuIGxpc3QtZGlzdGluY3Qgc3RyaW5nLWFscGhhbnVtZXJpYyBtYXAgc2ltcGxlLXR5cGUgY2hhciBhbnktZXF1YXRhYmxlIHBvcy1pbnQgYmluZCBzeW1ib2wtbnMgYW55IHNodWZmbGUgY29udGFpbmVyLXR5cGUgcy1wb3MtaW50IGFueS1wcmludGFibGUtZXF1YXRhYmxlIGRvdWJsZSBsaXN0LWRpc3RpbmN0LWJ5IHNpbXBsZS10eXBlLXByaW50YWJsZS1lcXVhdGFibGUgY2hhci1hbHBoYSBnZW5lcmF0b3I/IHNhbXBsZS1zZXEgaW50IGdlbi1wdXJlIHJlY3Vyc2l2ZS1nZW4gY2hhci1hbHBoYS1udW1lcmljIHJldHVybiBnZW4tYmluZCBzY2FsZSBzeW1ib2wgY2hhci1hbHBoYW51bWVyaWMgbWFrZS1zaXplLXJhbmdlLXNlcSBjaG9vc2Ugc3RyaW5nLWFzY2lpIHNvcnRlZC1zZXQgZnJlcXVlbmN5IHNtYWxsLWludGVnZXIgZG91YmxlKiBnZW5lcmF0ZSBzaXplZCBzLW5lZy1pbnQgbmF0IHNpbXBsZS10eXBlLWVxdWF0YWJsZSB0dXBsZSBsYXp5LXJhbmRvbS1zdGF0ZXMgc2hyaW5rLTIgc3RyaW5nLWFscGhhLW51bWVyaWMgcmVzaXplIG5lZy1pbnQgc3RyaW5nIHZlY3RvciBsYXJnZS1pbnRlZ2VyIGtleXdvcmQtbnMgbm90LWVtcHR5IGVsZW1lbnRzIHNhbXBsZSBsaXN0IGxhcmdlLWludGVnZXIqIGtleXdvcmQgaGFzaC1tYXAgY2FsbC1nZW4gcmF0aW8gc3VjaC10aGF0IHZlY3Rvci1kaXN0aW5jdC1ieSBmbWFwIG5vLXNocmluayBjaGFyLWFzY2lpIHNpbXBsZS10eXBlLXByaW50YWJsZV0sIDp0eXBlIDpjbGpzLCA6c3ltIGNsb2p1cmUudGVzdC5jaGVjay5nZW5lcmF0b3JzfSB7OnZhci1zeW1zIFtnZXQtY3VycmVudC10aW1lLW1pbGxpc10sIDp0eXBlIDpjbGpzLCA6c3ltIGNsb2p1cmUudGVzdC5jaGVjay5pbXBsfSB7OnZhci1zeW1zIFtmb3ItYWxsKl0sIDp0eXBlIDpjbGpzLCA6c3ltIGNsb2p1cmUudGVzdC5jaGVjay5wcm9wZXJ0aWVzfSB7OnZhci1zeW1zIFtyYW5kLWxvbmcgcmFuZC1kb3VibGUgc3BsaXQgc3BsaXQtbiBJUmFuZG9tIG1ha2UtamF2YS11dGlsLXNwbGl0dGFibGUtcmFuZG9tIG1ha2UtcmFuZG9tXSwgOnR5cGUgOmNsanMsIDpzeW0gY2xvanVyZS50ZXN0LmNoZWNrLnJhbmRvbX0gezp2YXItc3ltcyBbcmFuZC1sb25nLT5yYW5kLWRvdWJsZV0sIDp0eXBlIDpjbGpzLCA6c3ltIGNsb2p1cmUudGVzdC5jaGVjay5yYW5kb20uZG91Ymxlc30gezp2YXItc3ltcyBbZnJvbS1udW1iZXIgYml0LWNvdW50IGJpdC14b3IgdW5zaWduZWQtYml0LXNoaWZ0LXJpZ2h0ICogZnJvbS1zdHJpbmcgLT5sb25nIGJpdC1vciBPTkUgK10sIDp0eXBlIDpjbGpzLCA6c3ltIGNsb2p1cmUudGVzdC5jaGVjay5yYW5kb20ubG9uZ3N9IHs6dmFyLXN5bXMgW2JpdC1jb3VudF0sIDp0eXBlIDpjbGpzLCA6c3ltIGNsb2p1cmUudGVzdC5jaGVjay5yYW5kb20ubG9uZ3MuYml0LWNvdW50LWltcGx9IHs6dmFyLXN5bXMgW3Bhc3M/IHJlc3VsdC1kYXRhIFJlc3VsdF0sIDp0eXBlIDpjbGpzLCA6c3ltIGNsb2p1cmUudGVzdC5jaGVjay5yZXN1bHRzfSB7OnZhci1zeW1zIFtzZXEgcHVyZSBqb2luIGJpbmQgY2hpbGRyZW4gcmVtb3ZlIHBlcm11dGF0aW9ucyBzaHJpbmsgbWFrZS1yb3NlIGZpbHRlciByb290IHNocmluay12ZWN0b3IgemlwIGZtYXAgY29sbGFwc2VdLCA6dHlwZSA6Y2xqcywgOnN5bSBjbG9qdXJlLnRlc3QuY2hlY2sucm9zZS10cmVlfSB7OnZhci1zeW1zIFttYWNyb2V4cGFuZCB2YWxpZC1iaW5kaW5nLXN5bWJvbD8gYW5hbHl6ZS1sZXQgYW5hbHl6ZS1tYXAgcGFyc2UtZGVmIHBhcnNlLXF1b3RlIHBhcnNlLW5ldyBhbmFseXplLWZuLW1ldGhvZCBwYXJzZS1pbnZva2UgYW5hbHl6ZSBwYXJzZS1kb3QgcGFyc2UtZG8gYW5hbHl6ZS1jb25zdCBwYXJzZS1sb29wKiBhbmFseXplLXZlY3RvciB2YXI/IHBhcnNlLWlmIC1hbmFseXplLWZvcm0gY3JlYXRlLXZhciBwYXJzZS10cnkgYW5hbHl6ZS1zeW1ib2wgbWFjcm9leHBhbmQtMSBhbmFseXplLWJvZHkgcGFyc2UtbGV0Zm4qIHBhcnNlLWNhdGNoIGFuYWx5emUtc2VxIHBhcnNlLXJlY3VyIGVtcHR5LWVudiBhbmFseXplLWluLWVudiBwYXJzZS1mbiogdmFsaWRhdGUtYmluZGluZ3MgcGFyc2UtbGV0KiBwYXJzZS10aHJvdyBhbmFseXplLXNldCAtcGFyc2UgcGFyc2Ugd3JhcHBpbmctbWV0YSBwYXJzZS1zZXQhIHNwZWNpYWxzIGFuYWx5emUtZm9ybSBwYXJzZS12YXJdLCA6dHlwZSA6Y2xqLCA6c3ltIGNsb2p1cmUudG9vbHMuYW5hbHl6ZXJ9IHs6dmFyLXN5bXMgW3VwZGF0ZS1jaGlsZHJlbiBwb3N0d2FsayBjaGlsZHJlbiB3YWxrIHByZXdhbGsgY2hpbGRyZW4qIGN5Y2xpbmcgYXN0LT5lYXYgdXBkYXRlLWNoaWxkcmVuLXJlZHVjZWQgbm9kZXNdLCA6dHlwZSA6Y2xqLCA6c3ltIGNsb2p1cmUudG9vbHMuYW5hbHl6ZXIuYXN0fSB7OnZhci1zeW1zIFtlbnN1cmUgZGVyZWYtZW52ICplbnYqIHdpdGgtZW52XSwgOnR5cGUgOmNsaiwgOnN5bSBjbG9qdXJlLnRvb2xzLmFuYWx5emVyLmVudn0gezp2YXItc3ltcyBbYW5hbHl6ZS1ucyBwYXJzZS1jYXNlKiBnbG9iYWwtZW52IGFuYWx5emUgcXVhbGlmeS1hcmdsaXN0cyBwYXJzZS1yZWlmeSogYW5hbHl6ZStldmFsIGFuYWx5emUtbWV0aG9kLWltcGxzIGRlc3VnYXItc3ltYm9sIGNyZWF0ZS12YXIgcnVuLXBhc3NlcyBwYXJzZS1tb25pdG9yLWVudGVyIHBhcnNlLWltcG9ydCogYnVpbGQtbnMtbWFwIG1hY3JvZXhwYW5kLTEgZGVzdWdhci1ob3N0LWV4cHIgcGFyc2UtZGVmdHlwZSogcGFyc2Utb3B0cyttZXRob2RzIC1kZWZ0eXBlIGRlZmF1bHQtcGFzc2VzIGVtcHR5LWVudiB1cGRhdGUtbnMtbWFwISBtYWNyb2V4cGFuZC1hbGwgc2NoZWR1bGVkLWRlZmF1bHQtcGFzc2VzIHBhcnNlIGRlZmF1bHQtcGFzc2VzLW9wdHMgcGFyc2UtbW9uaXRvci1leGl0IHNwZWNpYWxzIC0+RXhjZXB0aW9uVGhyb3duIG5zLXNhZmUtbWFjcm9dLCA6dHlwZSA6Y2xqLCA6c3ltIGNsb2p1cmUudG9vbHMuYW5hbHl6ZXIuanZtfSB7OnZhci1zeW1zIFt1bmJveCBzdGF0aWMtbWV0aG9kcyBtZW1iZXJzIHNwZWNpYWwtYXJyYXlzIHN0YXRpYy1maWVsZCBwcmltaXRpdmU/IGluc3RhbmNlLW1ldGhvZHMgbnVtZXJpYz8gaW5zdGFuY2UtbWV0aG9kIHN0YXRpYy1tZW1iZXJzIHdpZGVyLXRhZyBzdGF0aWMtbWV0aG9kIHdpZGVyLXByaW1pdGl2ZSBwcmltLW9yLW9iaiBucy0+cmVscGF0aCB0cnktYmVzdC1tYXRjaCBtYXliZS1jbGFzcyBpbnN0YW5jZS1tZW1iZXJzIG1heWJlLWNsYXNzLWZyb20tc3RyaW5nIGJveCBhcnJheS1jbGFzcyBucy11cmwgbWVtYmVycyogc3Vic3VtZXM/IHdpZGVyLXRhZyogbmFtZS1tYXRjaGVzPyBjb252ZXJ0aWJsZT8gaW5zdGFuY2UtZmllbGQgcHJpbS1pbnRlcmZhY2UgaW5saW5lPyB0YWctbWF0Y2g/IG1heWJlLWNsYXNzLWxpdGVyYWwgc3BlY2lhbHMgbWFjcm8/IHdpZGVyLXRoYW4gb2JqZWN0LW1lbWJlcnNdLCA6dHlwZSA6Y2xqLCA6c3ltIGNsb2p1cmUudG9vbHMuYW5hbHl6ZXIuanZtLnV0aWxzfSB7OnZhci1zeW1zIFtzY2hlZHVsZS1wYXNzZXMgc2F0aXNmaWVzLWFmZmVjdGVkPyBzY2hlZHVsZSBncm91cCBjb21waWxlLXBhc3NlcyBzY2hlZHVsZSogY2FsY3VsYXRlLWRlcHMgZGVzdWdhci1kZXBzIG1heWJlLWxvb3BpbmctcGFzcyBjb2xsYXBzZV0sIDp0eXBlIDpjbGosIDpzeW0gY2xvanVyZS50b29scy5hbmFseXplci5wYXNzZXN9IHs6dmFyLXN5bXMgW2FkZC1iaW5kaW5nLWF0b21dLCA6dHlwZSA6Y2xqLCA6c3ltIGNsb2p1cmUudG9vbHMuYW5hbHl6ZXIucGFzc2VzLmFkZC1iaW5kaW5nLWF0b219IHs6dmFyLXN5bXMgW2NsZWFudXBdLCA6dHlwZSA6Y2xqLCA6c3ltIGNsb2p1cmUudG9vbHMuYW5hbHl6ZXIucGFzc2VzLmNsZWFudXB9IHs6dmFyLXN5bXMgW2NvbnN0YW50LWxpZnRdLCA6dHlwZSA6Y2xqLCA6c3ltIGNsb2p1cmUudG9vbHMuYW5hbHl6ZXIucGFzc2VzLmNvbnN0YW50LWxpZnRlcn0gezp2YXItc3ltcyBbZWxpZGVzIGVsaWRlLW1ldGEgcmVwbGFjZS1tZXRhIGdldC1lbGlkZXMgLWVsaWRlLW1ldGFdLCA6dHlwZSA6Y2xqLCA6c3ltIGNsb2p1cmUudG9vbHMuYW5hbHl6ZXIucGFzc2VzLmVsaWRlLW1ldGF9IHs6dmFyLXN5bXMgW2VtaXQtYmluZGluZ3MgLWVtaXQtZm9ybSBlbWl0LWZvcm0gLWVtaXQtZm9ybSogZW1pdC1oeWdpZW5pYy1mb3JtXSwgOnR5cGUgOmNsaiwgOnN5bSBjbG9qdXJlLnRvb2xzLmFuYWx5emVyLnBhc3Nlcy5lbWl0LWZvcm19IHs6dmFyLXN5bXMgWy1hbmFseXplLWhvc3QtZXhwciBhbmFseXplLWhvc3QtZXhwciBtYXliZS1zdGF0aWMtZmllbGQgbWF5YmUtaW5zdGFuY2UtbWV0aG9kIGFuYWx5emUtaG9zdC1jYWxsIG1heWJlLWluc3RhbmNlLWZpZWxkIGFuYWx5emUtaG9zdC1maWVsZCBtYXliZS1zdGF0aWMtbWV0aG9kXSwgOnR5cGUgOmNsaiwgOnN5bSBjbG9qdXJlLnRvb2xzLmFuYWx5emVyLnBhc3Nlcy5qdm0uYW5hbHl6ZS1ob3N0LWV4cHJ9IHs6dmFyLXN5bXMgW2Fubm90YXRlLWhvc3QtaW5mb10sIDp0eXBlIDpjbGosIDpzeW0gY2xvanVyZS50b29scy5hbmFseXplci5wYXNzZXMuanZtLmFubm90YXRlLWhvc3QtaW5mb30gezp2YXItc3ltcyBbYW5ub3RhdGUtbG9vcHMgY2hlY2stcmVjdXIgLWNoZWNrLXJlY3VyIC1sb29wc10sIDp0eXBlIDpjbGosIDpzeW0gY2xvanVyZS50b29scy5hbmFseXplci5wYXNzZXMuanZtLmFubm90YXRlLWxvb3BzfSB7OnZhci1zeW1zIFstYW5ub3RhdGUtdGFnIGFubm90YXRlLXRhZ10sIDp0eXBlIDpjbGosIDpzeW0gY2xvanVyZS50b29scy5hbmFseXplci5wYXNzZXMuanZtLmFubm90YXRlLXRhZ30gezp2YXItc3ltcyBbaWYtbGV0LWJveCBib3hlZD8gLWJveCBib3hdLCA6dHlwZSA6Y2xqLCA6c3ltIGNsb2p1cmUudG9vbHMuYW5hbHl6ZXIucGFzc2VzLmp2bS5ib3h9IHs6dmFyLXN5bXMgW2NsYXNzaWZ5LWludm9rZV0sIDp0eXBlIDpjbGosIDpzeW0gY2xvanVyZS50b29scy5hbmFseXplci5wYXNzZXMuanZtLmNsYXNzaWZ5LWludm9rZX0gezp2YXItc3ltcyBbY29uc3RhbnQtbGlmdCBjb25zdGFudC1saWZ0Kl0sIDp0eXBlIDpjbGosIDpzeW0gY2xvanVyZS50b29scy5hbmFseXplci5wYXNzZXMuanZtLmNvbnN0YW50LWxpZnRlcn0gezp2YXItc3ltcyBbLWVtaXQtZm9ybSBlbWl0LWZvcm0gLWVtaXQtZm9ybSogY2xhc3MtPnN0ciBlbWl0LWh5Z2llbmljLWZvcm0gY2xhc3MtPnN5bV0sIDp0eXBlIDpjbGosIDpzeW0gY2xvanVyZS50b29scy5hbmFseXplci5wYXNzZXMuanZtLmVtaXQtZm9ybX0gezp2YXItc3ltcyBbZml4LWNhc2UtdGVzdF0sIDp0eXBlIDpjbGosIDpzeW0gY2xvanVyZS50b29scy5hbmFseXplci5wYXNzZXMuanZtLmZpeC1jYXNlLXRlc3R9IHs6dmFyLXN5bXMgWy1pbmZlci10YWcgaW5mZXItdGFnID0tYXJnbGlzdHM/XSwgOnR5cGUgOmNsaiwgOnN5bSBjbG9qdXJlLnRvb2xzLmFuYWx5emVyLnBhc3Nlcy5qdm0uaW5mZXItdGFnfSB7OnZhci1zeW1zIFt2YWxpZGF0ZS10YWcgdmFsaWRhdGUtY2FsbCB2YWxpZGF0ZSB2YWxpZGF0ZS1pbnRlcmZhY2VzIC12YWxpZGF0ZV0sIDp0eXBlIDpjbGosIDpzeW0gY2xvanVyZS50b29scy5hbmFseXplci5wYXNzZXMuanZtLnZhbGlkYXRlfSB7OnZhci1zeW1zIFtmaW5kLW1pc21hdGNoZXMgZGlydHkgLXZhbGlkYXRlLWxvb3AtbG9jYWxzIHZhbGlkYXRlLWxvb3AtbG9jYWxzIC12YWxpZGF0ZS1sb29wLWxvY2FscyogLWNsZWFudXAtZGlydHktbm9kZXNdLCA6dHlwZSA6Y2xqLCA6c3ltIGNsb2p1cmUudG9vbHMuYW5hbHl6ZXIucGFzc2VzLmp2bS52YWxpZGF0ZS1sb29wLWxvY2Fsc30gezp2YXItc3ltcyBbdmFsaWRhdGUtcmVjdXJdLCA6dHlwZSA6Y2xqLCA6c3ltIGNsb2p1cmUudG9vbHMuYW5hbHl6ZXIucGFzc2VzLmp2bS52YWxpZGF0ZS1yZWN1cn0gezp2YXItc3ltcyBbd2Fybi1vbi1yZWZsZWN0aW9uIHdhcm5dLCA6dHlwZSA6Y2xqLCA6c3ltIGNsb2p1cmUudG9vbHMuYW5hbHl6ZXIucGFzc2VzLmp2bS53YXJuLW9uLXJlZmxlY3Rpb259IHs6dmFyLXN5bXMgWy1tZXJnZS1zb3VyY2UtaW5mbyBzb3VyY2UtaW5mb10sIDp0eXBlIDpjbGosIDpzeW0gY2xvanVyZS50b29scy5hbmFseXplci5wYXNzZXMuc291cmNlLWluZm99IHs6dmFyLXN5bXMgW3ByZXNlcnZpbmctcmF3LWZvcm1zIHRyaW0gLXRyaW1dLCA6dHlwZSA6Y2xqLCA6c3ltIGNsb2p1cmUudG9vbHMuYW5hbHl6ZXIucGFzc2VzLnRyaW19IHs6dmFyLXN5bXMgW25vcm1hbGl6ZSB1bmlxdWlmeS1sb2NhbHMqIC11bmlxdWlmeS1sb2NhbHMgKmxvY2Fscy1mcmFtZSogdW5pcXVpZnktYmluZGluZyAqbG9jYWxzLWNvdW50ZXIqIHVuaXF1aWZ5LWxvY2Fscy1hcm91bmQgdW5pcXVpZnktbG9jYWxzIHVuaXF1aWZ5XSwgOnR5cGUgOmNsaiwgOnN5bSBjbG9qdXJlLnRvb2xzLmFuYWx5emVyLnBhc3Nlcy51bmlxdWlmeX0gezp2YXItc3ltcyBbd2Fybi1lYXJtdWZmXSwgOnR5cGUgOmNsaiwgOnN5bSBjbG9qdXJlLnRvb2xzLmFuYWx5emVyLnBhc3Nlcy53YXJuLWVhcm11ZmZ9IHs6dmFyLXN5bXMgW3R5cGU/IGN0eCBib29sZWFuPyBtYXB2JyByc2VxdiBwcm90b2NvbC1ub2RlPyBzZWxlY3Qta2V5cycgLXNvdXJjZS1pbmZvIGNsYXNzaWZ5IHJlZmVyZW5jZT8gdXBkYXRlLXZhbHMgcmVzb2x2ZS1zeW0gcHJpdmF0ZT8gY29uc3RhbnQ/IHJlZ2V4PyBkeW5hbWljPyBjb21waWxlLWlmIGludG8hIGNvbnN0LXZhbCBkaXNzb2MtZW52IHVwZGF0ZS1rdiByZWNvcmQ/IGJ1dGxhc3QrbGFzdCBvYmo/IHNvdXJjZS1pbmZvIG1tZXJnZSByZXNvbHZlLW5zIHVwZGF0ZS1rZXlzIGFyZ2xpc3QtZm9yLWFyaXR5IG1hY3JvPyBtZXJnZSddLCA6dHlwZSA6Y2xqLCA6c3ltIGNsb2p1cmUudG9vbHMuYW5hbHl6ZXIudXRpbHN9IHs6dmFyLXN5bXMgW2NsaSBwYXJzZS1vcHRzIHN1bW1hcml6ZSBnZXQtZGVmYXVsdC1vcHRpb25zIGZvcm1hdC1saW5lcyBtYWtlLXN1bW1hcnktcGFydF0sIDp0eXBlIDpjbGosIDpzeW0gY2xvanVyZS50b29scy5jbGl9IHs6dmFyLXN5bXMgW3JlYWQrc3RyaW5nICpyZWFkLWV2YWwqICpzdXBwcmVzcy1yZWFkKiAqZGVmYXVsdC1kYXRhLXJlYWRlci1mbiogcmVhZCByZWFkLXN5bWJvbCBkZWZhdWx0LWRhdGEtcmVhZGVycyAqZGF0YS1yZWFkZXJzKiAqcmVhZC1kZWxpbSogcmVzb2x2ZS1zeW1ib2wgKmFsaWFzLW1hcCogcmVhZC1yZWdleCBzeW50YXgtcXVvdGUgcmVhZC1zdHJpbmcgbWFwLWZ1bmNdLCA6dHlwZSA6Y2xqLCA6c3ltIGNsb2p1cmUudG9vbHMucmVhZGVyfSB7OnZhci1zeW1zIFtkZWZhdWx0LXV1aWQtcmVhZGVyIHZhbGlkYXRlZCByZWFkLWluc3RhbnQtdGltZXN0YW1wIHJlYWQtaW5zdGFudC1jYWxlbmRhciByZWFkLWluc3RhbnQtZGF0ZSBwYXJzZS10aW1lc3RhbXBdLCA6dHlwZSA6Y2xqLCA6c3ltIGNsb2p1cmUudG9vbHMucmVhZGVyLmRlZmF1bHQtZGF0YS1yZWFkZXJzfSB7OnZhci1zeW1zIFtyZWFkIHJlYWQtc3RyaW5nXSwgOnR5cGUgOmNsaiwgOnN5bSBjbG9qdXJlLnRvb2xzLnJlYWRlci5lZG59IHs6dmFyLXN5bXMgW21hdGNoLW51bWJlciBza2lwLWxpbmUgaW50LXBhdHRlcm4gcmVhZC1jb21tZW50IHBhcnNlLXN5bWJvbCBudW1iZXItbGl0ZXJhbD8gcmVhZC1wYXN0IGZsb2F0LXBhdHRlcm4gdGhyb3dpbmctcmVhZGVyIHJhdGlvLXBhdHRlcm5dLCA6dHlwZSA6Y2xqLCA6c3ltIGNsb2p1cmUudG9vbHMucmVhZGVyLmltcGwuY29tbW9uc30gezp2YXItc3ltcyBbdGhyb3ctaW52YWxpZC11bmljb2RlLWVzY2FwZSB0aHJvdy1iYWQtbnMgdGhyb3ctdW5rbm93bi1yZWFkZXItdGFnIHRocm93LWVvZi1hdC1kaXNwYXRjaCB0aHJvdy1iYWQtbWV0YWRhdGEtdGFyZ2V0IHRocm93LWludmFsaWQtbnVtYmVyIHJlYWRlci1lcnJvciB0aHJvdy1pbnZhbGlkLXVuaWNvZGUtbGl0ZXJhbCB0aHJvdy1ucy1tYXAtbm8tbWFwIHRocm93LXVuc3VwcG9ydGVkLWNoYXJhY3RlciB0aHJvdy1mZWF0dXJlLW5vdC1rZXl3b3JkIHRocm93LWVvZi1kZWxpbWl0ZWQgdGhyb3ctZW9mLWluLWNoYXJhY3RlciB0aHJvdy1iYWQtY2hhciBlb2YtZXJyb3IgdGhyb3ctYmFkLW1ldGFkYXRhIHRocm93LWVvZi1yZWFkaW5nIHRocm93LWVvZi1lcnJvciBpbGxlZ2FsLWFyZy1lcnJvciB0aHJvdy1pbnZhbGlkLW9jdGFsLWxlbiB0aHJvdy1pbnZhbGlkLXVuaWNvZGUtZGlnaXQgdGhyb3ctaW52YWxpZC11bmljb2RlLWRpZ2l0LWluLXRva2VuIHRocm93LWludmFsaWQtdW5pY29kZS1sZW4gdGhyb3ctc2luZ2xlLWNvbG9uIHRocm93LW9kZC1tYXAgdGhyb3ctYmFkLW9jdGFsLW51bWJlciB0aHJvdy1iYWQtcmVhZGVyLXRhZyB0aHJvdy11bm1hdGNoLWRlbGltaXRlciB0aHJvdy1pbnZhbGlkLWNoYXJhY3Rlci1saXRlcmFsIHRocm93LWludmFsaWQtdW5pY29kZS1jaGFyIHRocm93LWJhZC1lc2NhcGUtY2hhciB0aHJvdy1lb2YtYXQtc3RhcnQgdGhyb3ctaW52YWxpZF0sIDp0eXBlIDpjbGosIDpzeW0gY2xvanVyZS50b29scy5yZWFkZXIuaW1wbC5lcnJvcnN9IHs6dmFyLXN5bXMgW2luc3BlY3QgaW5zcGVjdCpdLCA6dHlwZSA6Y2xqLCA6c3ltIGNsb2p1cmUudG9vbHMucmVhZGVyLmltcGwuaW5zcGVjdH0gezp2YXItc3ltcyBbd2hpdGVzcGFjZT8gY2hhciBudW1lcmljPyBtYWtlLXZhciBzZWNvbmQnIGRlc3VnYXItbWV0YSA8PWNsb2p1cmUtMS03LWFscGhhNSBleC1pbmZvPyBuZXdsaW5lPyBuYW1lc3BhY2Uta2V5cyBjb21waWxlLXdoZW5dLCA6dHlwZSA6Y2xqLCA6c3ltIGNsb2p1cmUudG9vbHMucmVhZGVyLmltcGwudXRpbHN9IHs6dmFyLXN5bXMgW1JlYWRlckNvZXJjZXIgaW5kZXhpbmctcHVzaC1iYWNrLXJlYWRlciBsb2ctc291cmNlKiBtZXJnZS1tZXRhIC0+U3RyaW5nUmVhZGVyIHRvLXBiciB0by1yZHIgUmVhZGVyIHNvdXJjZS1sb2dnaW5nLXB1c2gtYmFjay1yZWFkZXIgdW5yZWFkIHBlZWstY2hhciBwdXNoLWJhY2stcmVhZGVyIElQdXNoYmFja1JlYWRlciBpbmRleGluZy1yZWFkZXI/IHN0cmluZy1yZWFkZXIgcmVhZC1jaGFyIGdldC1jb2x1bW4tbnVtYmVyIGdldC1maWxlLW5hbWUgcmVhZC1saW5lIC0+UHVzaGJhY2tSZWFkZXIgUHVzaGJhY2tSZWFkZXJDb2VyY2VyIHN0cmluZy1wdXNoLWJhY2stcmVhZGVyIGxvZy1zb3VyY2UgLT5Tb3VyY2VMb2dnaW5nUHVzaGJhY2tSZWFkZXIgLT5JbnB1dFN0cmVhbVJlYWRlciBsaW5lLXN0YXJ0PyBpbnB1dC1zdHJlYW0tcHVzaC1iYWNrLXJlYWRlciBzb3VyY2UtbG9nZ2luZy1yZWFkZXI/IEluZGV4aW5nUmVhZGVyIGdldC1saW5lLW51bWJlciBpbnB1dC1zdHJlYW0tcmVhZGVyIC0+SW5kZXhpbmdQdXNoYmFja1JlYWRlcl0sIDp0eXBlIDpjbGosIDpzeW0gY2xvanVyZS50b29scy5yZWFkZXIucmVhZGVyLXR5cGVzfSB7OnZhci1zeW1zIFtwb3N0d2FsayBrZXl3b3JkaXplLWtleXMgd2FsayBwcmV3YWxrLXJlcGxhY2Ugc3RyaW5naWZ5LWtleXMgcHJld2FsayBwb3N0d2Fsay1kZW1vIHByZXdhbGstZGVtbyBtYWNyb2V4cGFuZC1hbGwgcG9zdHdhbGstcmVwbGFjZV0sIDp0eXBlIDpjbGosIDpzeW0gY2xvanVyZS53YWxrfSB7OnZhci1zeW1zIFt3YWxrIHBvc3R3YWxrIHByZXdhbGsga2V5d29yZGl6ZS1rZXlzIHN0cmluZ2lmeS1rZXlzIHByZXdhbGstcmVwbGFjZSBwb3N0d2Fsay1yZXBsYWNlXSwgOnR5cGUgOmNsanMsIDpzeW0gY2xvanVyZS53YWxrfSB7OnZhci1zeW1zIFtzdXBwb3J0cy1leHRlbmRlZC1hdHRyaWJ1dGVzPyBjaGVja3N1bS1maWxlIGFkZC1maWxlLWV0YWcgY2hlY2tzdW0tYXR0cmlidXRlLW5hbWUgd3JhcC1maWxlLWV0YWcgc2V0LWF0dHJpYnV0ZSBnZXQtdXNlci1kZWZpbmVkLWF0dHJpYnV0ZS12aWV3IGdldC1hdHRyaWJ1dGVdLCA6dHlwZSA6Y2xqLCA6c3ltIGNvLmRlcHMucmluZy1ldGFnLW1pZGRsZXdhcmV9IHs6dmFyLXN5bXMgWy0+SGFuZGxlck1hcENvbnRhaW5lciB3cml0ZS1tZXRhIHJlYWQtYXJyYXktaGFuZGxlciB3cml0ZS1oYW5kbGVyIHJlYWQgaGFuZGxlci1tYXAgbGlzdC1idWlsZGVyIG1hcC1idWlsZGVyIC0+V3JpdGVyIHRhZ2dlZC12YWx1ZSByZWNvcmQtd3JpdGUtaGFuZGxlcnMgcmVjb3JkLXdyaXRlLWhhbmRsZXIgd3JpdGUtaGFuZGxlci1tYXAgLT5SZWFkZXIgLT5XaXRoTWV0YSByZWFkLWhhbmRsZXIgd3JpdGUgZGVmYXVsdC13cml0ZS1oYW5kbGVycyByZWFkLWhhbmRsZXItbWFwIG5zZWQtbmFtZSByZWNvcmQtcmVhZC1oYW5kbGVyIEhhbmRsZXJNYXBQcm92aWRlciB3cml0ZXIgZGVmYXVsdC1yZWFkLWhhbmRsZXJzIHJlYWRlciByZWNvcmQtcmVhZC1oYW5kbGVycyByZWFkLW1hcC1oYW5kbGVyXSwgOnR5cGUgOmNsaiwgOnN5bSBjb2duaXRlY3QudHJhbnNpdH0gezp2YXItc3ltcyBbcGFyZW4tbW9kZSBhZGQtaW5kZW50IGluZGVudC1jb3VudCByb3ctY29sLT5wb3NpdGlvbiBwb3NpdGlvbi0+cm93LWNvbCBzcGxpdC1saW5lcyB1cGRhdGUtaW5kZW50IG1vZGUgaW5kZW50LW1vZGUgYWRkLXBhcmluZmVyXSwgOnR5cGUgOmNsanMsIDpzeW0gY3Jvc3MtcGFyaW5mZXIuY29yZX0gezp2YXItc3ltcyBbZXE/XSwgOnR5cGUgOmNsaiwgOnN5bSBjcnlwdG8uZXF1YWxpdHl9IHs6dmFyLXN5bXMgW3VybC1wYXJ0IGJhc2UzMiBiYXNlNjQgaGV4IGJ5dGVzXSwgOnR5cGUgOmNsaiwgOnN5bSBjcnlwdG8ucmFuZG9tfSB7OnZhci1zeW1zIFsqaW5zdGFsbGVkKiBmaXhlZC1jaHJvbWUtdmVyc2lvbi1mb3ItYXN5bmMgKm9yaWdpbmFsLXNldC1pbW1lZGlhdGUqIGluc3RhbGwtYXN5bmMtc2V0LWltbWVkaWF0ZSEgaW5zdGFsbCEgZ2V0LW5vdC1uZWVkZWQtbWVzc2FnZSBuZWVkZWQ/IGF2YWlsYWJsZT8gdW5pbnN0YWxsLWFzeW5jLXNldC1pbW1lZGlhdGUhIGluc3RhbGxlZD8gcmV0aHJvdy1vdXRzaWRlLXByb21pc2UgdW5pbnN0YWxsISBwcm9taXNlLWJhc2VkLXNldC1pbW1lZGlhdGVdLCA6dHlwZSA6Y2xqcywgOnN5bSBkZXZ0b29scy5hc3luY30gezp2YXItc3ltcyBbZ2V0LXJvb3QgZ2V0LWNvbnNvbGVdLCA6dHlwZSA6Y2xqcywgOnN5bSBkZXZ0b29scy5jb250ZXh0fSB7OnZhci1zeW1zIFtpcy1mZWF0dXJlLWF2YWlsYWJsZT8gZ2V0LXByZWZzIHNldC1wcmVmISBpbnN0YWxsISBzZXQtcHJlZnMhIGF2YWlsYWJsZT8gaW5zdGFsbGVkPyB1bmluc3RhbGwhIGlzLWZlYXR1cmUtaW5zdGFsbGVkP10sIDp0eXBlIDpjbGpzLCA6c3ltIGRldnRvb2xzLmNvcmV9IHs6dmFyLXN5bXMgW2tub3duLWZlYXR1cmVzIGRlZmF1bHQtZmVhdHVyZXMgZmVhdHVyZS1ncm91cHMgY29uZmlnXSwgOnR5cGUgOmNsanMsIDpzeW0gZGV2dG9vbHMuZGVmYXVsdHN9IHs6dmFyLXN5bXMgW21ha2UtdGVtcGxhdGUgLWhlYWRlciBJRGV2dG9vbHNGb3JtYXQgbWFrZS1zdXJyb2dhdGUgZ3JvdXAgc3Vycm9nYXRlIHNldHVwISAtaGFzLWJvZHkgc3RhbmRhcmQtcmVmZXJlbmNlIHN0YW5kYXJkLWJvZHktdGVtcGxhdGUgdGVtcGxhdGUgYnVpbGQtaGVhZGVyIG1ha2UtZ3JvdXAgLWJvZHkgcmVmZXJlbmNlXSwgOnR5cGUgOmNsanMsIDpzeW0gZGV2dG9vbHMuZm9ybWF0fSB7OnZhci1zeW1zIFtwcmVzZW50PyAqaW5zdGFsbGVkKiBpbnN0YWxsISAqc2FuaXRpemVyLWVuYWJsZWQqIGF2YWlsYWJsZT8gaW5zdGFsbGVkPyBvYnNvbGV0ZS1mb3JtYXR0ZXIta2V5IHVuaW5zdGFsbCEgKm1vbml0b3ItZW5hYmxlZCpdLCA6dHlwZSA6Y2xqcywgOnN5bSBkZXZ0b29scy5mb3JtYXR0ZXJzfSB7OnZhci1zeW1zIFt0cmFuc2Zlci1yZW1haW5pbmctZGVwdGgtYnVkZ2V0ISB3YXMtb3Zlci1idWRnZXQ/ISBkZXRlcm1pbmUtZGVwdGggYWRkLW92ZXItYnVkZ2V0LXZhbHVlISBvdmVyLWJ1ZGdldC12YWx1ZXMgaGFzLWFueS1vYmplY3QtcmVmZXJlbmNlPyBkaXN0cmlidXRlLWJ1ZGdldCEgaGFzLW92ZXItYnVkZ2V0LXZhbHVlPyBkZWxldGUtb3Zlci1idWRnZXQtdmFsdWUhIGhlYWRlci1leHBhbmRlci1kZXB0aC1jb3N0IG9iamVjdC1yZWZlcmVuY2U/IGFsdGVyLWpzb24tbWwtdG8tZml0LWluLXJlbWFpbmluZy1idWRnZXQhXSwgOnR5cGUgOmNsanMsIDpzeW0gZGV2dG9vbHMuZm9ybWF0dGVycy5idWRnZXRpbmd9IHs6dmFyLXN5bXMgW2JvZHkgYm9keS1hcGktY2FsbCB3YW50LXZhbHVlPyBoYXMtYm9keSogYm9keSogd3JhcC13aXRoLWV4Y2VwdGlvbi1ndWFyZCBoZWFkZXIgd2FudC12YWx1ZT8qIGhlYWRlciogaGFzLWJvZHktYXBpLWNhbGwgYnVpbGQtYXBpLWNhbGwgaGVhZGVyLWFwaS1jYWxsIGhhcy1ib2R5IGNvbmZpZy13cmFwcGVyXSwgOnR5cGUgOmNsanMsIDpzeW0gZGV2dG9vbHMuZm9ybWF0dGVycy5jb3JlfSB7OnZhci1zeW1zIFtleHBhbmRhYmxlPyBpcy1wcm90b3R5cGU/IGNsanMtbGFuZC12YWx1ZT8gc2hvdWxkLXJlbmRlcj8gYm9vbD8gY2xqcy1pbnN0YW5jZT8gZ2V0LWNvbnN0cnVjdG9yIGluc3RhbmNlLW9mLWEtd2VsbC1rbm93bi10eXBlPyBkaXJlY3RseS1wcmludGFibGU/IHByZWYgZ2V0LXByb3RvdHlwZSB3cmFwLWFyaXR5IGNsanMtZnVuY3Rpb24/IGdldC1tb3JlLW1hcmtlciBmZXRjaC1maWVsZHMtdmFsdWVzIGFiYnJldmlhdGVkPyBoYXMtZm9ybWF0dGluZy1wcm90b2NvbD8gaXMtanMtc3ltYm9sPyBhYmJyZXZpYXRlLWxvbmctc3RyaW5nIGNsanMtdmFsdWU/IGNsanMtdHlwZT8gc2hvdWxkLXJlbmRlci1pbnN0YW5jZT8gZmV0Y2gtZmllbGQtdmFsdWVdLCA6dHlwZSA6Y2xqcywgOnN5bSBkZXZ0b29scy5mb3JtYXR0ZXJzLmhlbHBlcnN9IHs6dmFyLXN5bXMgWzxhbGlnbmVkLWJvZHk+IDxuYXRpdmUtcmVmZXJlbmNlPiA8cmVmZXJlbmNlLXN1cnJvZ2F0ZT4gPGtleXdvcmQ+IHByaW50LXZpYS13cml0ZXIgPHByb3RvY29sLW1ldGhvZC1hcml0aWVzPiA8c3Vycm9nYXRlLWhlYWRlcj4gPGRldGFpbHM+IDxtb3JlLXByb3RvY29scz4gPGZpZWxkPiA8c3ltYm9sPiA8ZmllbGRzLWRldGFpbHM+IDxhdG9taWM+IDxzdHJpbmc+IDxzdGFuZGFyZC1ib2R5PiA8dHlwZS1iYXNpcz4gcHJpbnQtdmlhLXByb3RvY29sIHByaW50LXdpdGggPGJvb2w+IDxzdGFuZGFsb25lLXR5cGU+IDxwcmV2aWV3PiA8aGVhZGVyPiA8cHJvdG9jb2wtbWV0aG9kPiA8Y2xqcy1sYW5kPiA8dHlwZS1iYXNpcy1pdGVtPiA8cHJvdG9jb2wtbWV0aG9kLWFyaXRpZXMtZGV0YWlscz4gPGZpZWxkcy1kZXRhaWxzLXJvdz4gPHN0YW5kYXJkLWJvZHktcmVmZXJlbmNlPiA8c3Vycm9nYXRlLWJvZHk+IGdldC1tYXJrdXAtZGIgPGV4cGFuZGFibGU+IDx0eXBlPiA8cHJvdG9jb2wtbWV0aG9kLWFyaXR5PiA8cmF3LXN1cnJvZ2F0ZT4gPHR5cGUtZGV0YWlscz4gPGxpc3Q+IDxtZXRhLXdyYXBwZXI+IDxwcm90b2NvbD4gPGluZGV4PiA8c3Vycm9nYXRlPiA8cHJvdG9jb2xzLWxpc3Q+IDxtZXRhPiA8aW5zdGFuY2U+IDxyZWZlcmVuY2U+IDxmdW5jdGlvbi1kZXRhaWxzPiA8ZnVuY3Rpb24+IDxhcml0aWVzPiA8aGVhZGVyLWV4cGFuZGVyPiA8bGlzdC1kZXRhaWxzPiA8Y2lyY3VsYXItcmVmZXJlbmNlPiA8c3Vycm9nYXRlLXRhcmdldD4gPGZpZWxkcz4gPG5pbD4gPGJvZHk+IDxudW1iZXI+IDxwcm90b2NvbC1kZXRhaWxzPl0sIDp0eXBlIDpjbGpzLCA6c3ltIGRldnRvb2xzLmZvcm1hdHRlcnMubWFya3VwfSB7OnZhci1zeW1zIFthbHQtcHJpbnRlci1pbXBsIG1hcmt1cD8gd3JhcC1ncm91cC1pbi1tZXRhLWlmLW5lZWRlZCBtYXJrLWFzLW1hcmt1cCBkZXRlY3QtZWRnZS1jYXNlLWFuZC1wYXRjaC1pdCB3cmFwLWdyb3VwLWluLXJlZmVyZW5jZS1pZi1uZWVkZWQgbWFuYWdlZC1wcmludC12aWEtd3JpdGVyIGFscmVhZHktcmVmZXJlbmNlPyB3cmFwLXZhbHVlLWFzLXJlZmVyZW5jZS1pZi1uZWVkZWQgbWFuYWdlZC1wcmludC12aWEtcHJvdG9jb2wgYWx0LXByaW50ZXItam9iIG1ha2UtdGVtcGxhdGUtd3JpdGVyIHdyYXAtZ3JvdXAtaW4tY2lyY3VsYXItd2FybmluZy1pZi1uZWVkZWQgbWFuYWdlZC1wcmludCBidWlsZC1tYXJrdXAgcG9zdC1wcm9jZXNzLXByaW50ZWQtb3V0cHV0IHdyYXAtZ3JvdXAtd2l0aC1wYXRoLWFubm90YXRpb25dLCA6dHlwZSA6Y2xqcywgOnN5bSBkZXZ0b29scy5mb3JtYXR0ZXJzLnByaW50aW5nfSB7OnZhci1zeW1zIFtwcmV2ZW50LXJlY3Vyc2lvbj8gYWRkLW9iamVjdC10by1jdXJyZW50LXBhdGgtaW5mbyEgZmluZC1wYXRoLWluLWZha2UtdmVjdG9yIGdldC1tYW5hZ2VkLXByaW50LWxldmVsIGdldC1jdXJyZW50LXN0YXRlIGdldC1jdXJyZW50LWhpc3RvcnkgbWFwcGluZz8gaWdub3JlLXBhdGgtaW4tZmFrZS12ZWN0b3Igc2V0LW1hbmFnZWQtcHJpbnQtbGV2ZWwgZXh0ZW5kLXBhdGgtaW5mbyBwdXNoLW9iamVjdC10by1jdXJyZW50LWhpc3RvcnkhIHVwZGF0ZS1jdXJyZW50LXN0YXRlISBnZXQtZGVwdGgtYnVkZ2V0IGJ1aWxkLXBhdGgtc2VnbWVudCAqY3VycmVudC1zdGF0ZSogc2Vlay1wYXRoLXNlZ21lbnQgZ2V0LWN1cnJlbnQtcGF0aC1pbmZvIGdldC1kZWZhdWx0LXN0YXRlIGdldC1zZWNvbmQtbGFzdC1vYmplY3QtZnJvbS1jdXJyZW50LWhpc3RvcnkgdmFsaWQtY3VycmVudC1zdGF0ZT8gcmVzZXQtZGVwdGgtbGltaXRzIHNldC1wcmV2ZW50LXJlY3Vyc2lvbiBnZXQtbGFzdC1vYmplY3QtZnJvbS1jdXJyZW50LWhpc3RvcnkgZmluZC1wYXRoIHByZXNlbnQtcGF0aC1zZWdtZW50IHNldC1kZXB0aC1idWRnZXQgaXMtY2lyY3VsYXI/XSwgOnR5cGUgOmNsanMsIDpzeW0gZGV2dG9vbHMuZm9ybWF0dGVycy5zdGF0ZX0gezp2YXItc3ltcyBbbWFrZS10ZW1wbGF0ZSBtYXJrLWFzLXN1cnJvZ2F0ZSEgY29uY2F0LXRlbXBsYXRlcyEgbWFrZS1yZWZlcmVuY2UgbWFrZS1zdXJyb2dhdGUgcHByaW50LXJlbmRlci1wYXRoIGdldC1zdXJyb2dhdGUtYm9keSByZWZlcmVuY2U/IHJlcGxhY2UtZm5zLXdpdGgtbWFya2VycyAqY3VycmVudC1yZW5kZXItcGF0aCogcmVuZGVyLXN1YnRyZWUgZW1wdHlpc2g/IGFzc2VydC1mYWlsZWQtbWFya3VwLXJlbmRlcmluZyBwcHJpbnQtcmVuZGVyLWNhbGxzIHJlbmRlci1tYXJrdXAgYXNzZXJ0LW1hcmt1cC1lcnJvciBtYWtlLWFubm90YXRpb24gc3Vycm9nYXRlLW1hcmt1cD8gcmVuZGVyLW1hcmt1cCogYWRkLXN0YWNrLXNlcGFyYXRvcnMgbWFrZS1ncm91cCBnZXQtc3Vycm9nYXRlLWhlYWRlciByZW5kZXItanNvbi1tbCogc3Vycm9nYXRlPyByZW5kZXItanNvbi1tbCAqY3VycmVudC1yZW5kZXItc3RhY2sqIG1hcmstYXMtZ3JvdXAhIGdldC1zdXJyb2dhdGUtdGFyZ2V0IGdldC1zdXJyb2dhdGUtc3RhcnQtaW5kZXggbWFyay1hcy10ZW1wbGF0ZSEgcHByaW50LXJlbmRlci1zdGFjayB0ZW1wbGF0ZT8gcmVuZGVyLXNwZWNpYWwgcHJpbnQtcHJldmlldyBncm91cD8gZXh0ZW5kLXRlbXBsYXRlIV0sIDp0eXBlIDpjbGpzLCA6c3ltIGRldnRvb2xzLmZvcm1hdHRlcnMudGVtcGxhdGluZ30gezp2YXItc3ltcyBbbWFyay1udWxsLWNhbGwtc2l0ZS1sb2NhdGlvbiBtYXJrLWNhbGwtY2xvc2VkLWF0LWNvbHVtbiBzZXQtcHJvY2Vzc2VkLWVycm9ycyEgZXJyb3Itb2JqZWN0LXNlbnNlICpvcmlnaW5hbC1nbG9iYWwtZXJyb3ItaGFuZGxlciogKmluc3RhbGxlZCogKm9yaWdpbmFsLXR5cGUtZXJyb3ItcHJvdG90eXBlLXRvLXN0cmluZyogcHJvY2Vzc2VkLWVycm9ycyBnbG9iYWwtZXJyb3ItaGFuZGxlciBpbnN0YWxsISBhamF4LXJlYWRlciBnZXQtbGluZSBleHRlbmQtY29udGVudCByZXRyaWV2ZS1qYXZhc2NyaXB0LXNvdXJjZSBhdmFpbGFibGU/IGVtcHR5LWFzLW5pbCBtYWtlLXNlbnNlLW9mLXRoZS1lcnJvciBpbnN0YWxsZWQ/IHR5cGUtZXJyb3ItdG8tc3RyaW5nIHBhcnNlLXN0YWNrdHJhY2UgZ2V0LXByb2Nlc3NlZC1lcnJvcnMhIHVuaW5zdGFsbCEgaW5zdGFsbC10eXBlLWVycm9yLWVuaGFuY2VyXSwgOnR5cGUgOmNsanMsIDpzeW0gZGV2dG9vbHMuaGludHN9IHs6dmFyLXN5bXMgW2FyZ3MtbGlzdHMtdG8tc3RyaW5ncyBnZXQtYmFzaXMgaHVtYW5pemUtbmFtZSBmaW5kLWluZGV4LW9mLWh1bWFuLXByZWZpeCBwcm90b2NvbC1kZXNjcmlwdG9ycy1jb21wYXJhdG9yIG1ha2Utc3Vic2NyaXB0IHRyaXZpYWwtZm4tc291cmNlPyBjaGFyLXRvLXN1YnNjcmlwdCBwcm9wZXItYXJnLWRlbXVuZ2UganMtcmVzZXJ2ZWQ/IGZhc3QtcGF0aC1wcm90b2NvbHMtbG9va3VwLXRhYmxlIHByZXNlbnQtZm4tcGFydCBjb2xsZWN0LWZuLWFyaXRpZXMgcHJvdG9jb2wtcGF0aCBrZXktZm9yLXByb3RvY29sLXBhcnRpdGlvbiBjb2xsZWN0LXByb3RvY29sLW1ldGhvZHMgcmVzZXJ2ZWQtYXdhcmUtZGVtdW5nZSBhcml0eS1rZXl3b3Jkcy1jb21wYXJhdG9yIGV4dHJhY3QtYXJpdGllcyBhcml0aWVzLWtleS1jb21wYXJhdG9yIGdldC1mbi1tYXgtZml4ZWQtYXJpdHkgY29tbW9uLXByb3RvY29sPyBicmVhay1tdW5nZWQtbmFtZSBwcmVzZW50LWZ1bmN0aW9uLW5hbWUgY2hhci10by1zdXBlcnNjcmlwdCBnZXQtZm4tdmFyaWFkaWMtYXJpdHkgc2Nhbi1wcm90b2NvbHMgZ2V0LXByb3RvY29sLW9iamVjdCBwYXJzZS1mbi1zb3VyY2UgbnMtZXhpc3RzPyBnZXQtcHJvdG9jb2wtc2VsZWN0b3IgY29udmVydC10by1wcm90b2NvbC1kZXNjcmlwdG9yIHJldmlldy1hcml0aWVzIHNjYW4tZmFzdC1wYXRoLXByb3RvY29scy1wYXJ0aXRpb24gcHJvcGVyLW5zLWRlbXVuZ2Ugc3RyaXAtYXJpdHkgc2Nhbi1zbG93LXBhdGgtcHJvdG9jb2xzIGFyaXRpZXMtdG8tYXJncy1saXN0cyBjb2xsZWN0LWZuLXZhcmlhZGljLWFyaXRpZXMgZ2V0LWZuLWZpeGVkLWFyaXR5IGRvbGxhci1yZXBsYWNlbWVudCBnZXQtZ2xvYmFsLXNjb3BlIHJldmVydC1yZXNlcnZlZCBkZXRlY3QtbmFtZXNwYWNlLXByZWZpeCBwYXJzZS1mbi1pbmZvLWRlZXAgcGFyc2UtZm4tc291cmNlLWluZm8gYXJpdGllcy10by1hcmdzLWxpc3RzKiBjbGpzLWZuLW5hbWU/IGJyZWFrLWFuZC1kZW11bmdlLW5hbWUgcGFyc2UtY29uc3RydWN0b3ItaW5mbyBjb2xsZWN0LWZuLWZpeGVkLWFyaXRpZXMgZ2V0LWZuLXNvdXJjZS1zYWZlbHkgY2xqcy1mbj8gcHJvdG9jb2wtZXhpc3RzPyBwYXJzZS1mbi1pbmZvIG1ha2Utc3VwZXJzY3JpcHQgZGVtdW5nZS1wcm90b2NvbC1zZWxlY3RvciBwcm9wZXItZGVtdW5nZSBub3JtYWxpemUtYXJpdHkgcHJlc2VudC1wcm90b2NvbC1wYXJ0IHBhcnNlLXByb3RvY29sIGh1bWFuaXplLW5hbWVzIHJldmlldy1hcml0eSBkb2xsYXItcHJlc2VydmluZy1kZW11bmdlIHNjYW4tZmFzdC1wYXRoLXByb3RvY29scyBtYXgtZml4ZWQtYXJpdHktdG8tc2NhbiBtYWtlLXByb3RvY29sLWRlc2NyaXB0b3IgZ2V0LXR5cGUtbmFtZV0sIDp0eXBlIDpjbGpzLCA6c3ltIGRldnRvb2xzLm11bmdpbmd9IHs6dmFyLXN5bXMgW21lcmdlLXByZWZzISBleHRlcm5hbC1jb25maWcgZ2V0LXByZWZzIGluaXRpYWwtY29uZmlnIHNldC1wcmVmISBkZWZhdWx0LWNvbmZpZyBwcmVmICpjdXJyZW50LWNvbmZpZyogc2V0LXByZWZzISB1cGRhdGUtcHJlZiFdLCA6dHlwZSA6Y2xqcywgOnN5bSBkZXZ0b29scy5wcmVmc30gezp2YXItc3ltcyBbSVRlbXBsYXRlIElHcm91cCBJU3Vycm9nYXRlIC1oZWFkZXIgLWhhcy1ib2R5IC1ib2R5IElGb3JtYXRdLCA6dHlwZSA6Y2xqcywgOnN5bSBkZXZ0b29scy5wcm90b2NvbHN9IHs6dmFyLXN5bXMgW2lzc3Vlcy11cmwgcmVwb3J0LWludGVybmFsLWVycm9yIV0sIDp0eXBlIDpjbGpzLCA6c3ltIGRldnRvb2xzLnJlcG9ydGVyfSB7OnZhci1zeW1zIFtlbnZlbG9wZSBmb3JjZS1mb3JtYXRdLCA6dHlwZSA6Y2xqcywgOnN5bSBkZXZ0b29scy50b29sYm94fSB7OnZhci1zeW1zIFtsaWItaW5mby1zdHlsZSB1bmRlci1hZHZhbmNlZC1idWlsZD8gY29udmVydC1sZWdhY3ktZmVhdHVyZSBhZHZhbmNlZC1idWlsZC1leHBsYW5hdGlvbi11cmwgaW4tbm9kZS1jb250ZXh0PyBkaXNwbGF5LWJhbm5lci1pZi1uZWVkZWQhIG1ha2UtdmVyc2lvbi1pbmZvICpjb25zb2xlLW9wZW4qICpjdXN0b20tZm9ybWF0dGVycy1hY3RpdmUqIGdldC1ub2RlLWluZm8gdW5rbm93bi1mZWF0dXJlLW1zZyByZXNldC1zdHlsZSBjb252ZXJ0LWxlZ2FjeS1mZWF0dXJlcyBpbnN0YWxsLWRldGVjdG9yISBjdXN0b20tZm9ybWF0dGVycy1ub3QtYWN0aXZlLW1zZyBjaGVjay1jdXN0b20tZm9ybWF0dGVycy1hY3RpdmUhIGluc3RhbGwtZmVhdHVyZSEgKmN1c3RvbS1mb3JtYXR0ZXJzLXdhcm5pbmctcmVwb3J0ZWQqIGZlYXR1cmUtbGlzdC1kaXNwbGF5IGRpc3BsYXktYmFubmVyISBnZXQtbGliLWluZm8gbWFrZS1saWItaW5mbyByZXNvbHZlLWZlYXR1cmVzISBnZXQtZm9ybWF0dGVycy1zYWZlIGZvcm1hdHRlci1rZXkgZmVhdHVyZS1mb3ItZGlzcGxheSBwcmludC1jb25maWctb3ZlcnJpZGVzLWlmLXJlcXVlc3RlZCEgaXMta25vd24tZmVhdHVyZT8gc2V0LWZvcm1hdHRlcnMtc2FmZSEgbWFrZS1kZXRlY3Rpb24tcHJpbnRlciB3cmFwLXdpdGgtY3VzdG9tLWZvcm1hdHRlci1kZXRlY3Rpb24hIG1ha2UtZGV0ZWN0b3IgcHByaW50LXN0ciBmZWF0dXJlLW5vdC1hdmFpbGFibGUtbXNnIGdldC1ub2RlLWRlc2NyaXB0aW9uIGdldC1qcy1jb250ZXh0LWRlc2NyaXB0aW9uIHVuaW5zdGFsbC1kZXRlY3RvciEgc2FuaXRpdHplLWZlYXR1cmVzISByZXBvcnQtdW5rbm93bi1mZWF0dXJlcyEgZGlzcGxheS1hZHZhbmNlZC1idWlsZC13YXJuaW5nLWlmLW5lZWRlZCEgdW5pbnN0YWxsLWRldGVjdG9yLWFuZC1jaGVjay1jdXN0b20tZm9ybWF0dGVycy1hY3RpdmUhXSwgOnR5cGUgOmNsanMsIDpzeW0gZGV2dG9vbHMudXRpbH0gezp2YXItc3ltcyBbY3VycmVudC12ZXJzaW9uIGdldC1jdXJyZW50LXZlcnNpb25dLCA6dHlwZSA6Y2xqcywgOnN5bSBkZXZ0b29scy52ZXJzaW9ufSB7OnZhci1zeW1zIFtzZXQtcHJpbnQtZm4hIGthcm1hPyAqZXhpdC1mbiogc2V0LWV4aXQtcG9pbnQhIGV4aXQhIHJ1biEgc2V0LWVudHJ5LXBvaW50IV0sIDp0eXBlIDpjbGpzLCA6c3ltIGRvby5ydW5uZXJ9IHs6dmFyLXN5bXMgW2luaXQgaW5pdGlhbC1zZXNzaW9uIHRpY2sgcnVuXSwgOnR5cGUgOmNsanMsIDpzeW0gZHVuZ2Vvbi1jcmF3bGVyLmNsYXJhfSB7OnZhci1zeW1zIFstPmVudGl0eSBkaXJlY3Rpb25zIHZlbG9jaXRpZXMgcGxheWVyLXNwYXduLXBvaW50IHJvd3MgY29scyBzcGF3bi1kYXRhIHNwYXduLXBvaW50cyB0aWxlLXNpemVdLCA6dHlwZSA6Y2xqcywgOnN5bSBkdW5nZW9uLWNyYXdsZXIuZW50aXRpZXN9IHs6dmFyLXN5bXMgW21heC1tb3ZlbWVudC1wZXItZnJhbWUgbWF4LWF0dGFjay1kaXN0YW5jZSBnZXQtZW5lbXktdmVsb2NpdHkgbWF4LXZlbG9jaXR5IGdldC1kaXJlY3Rpb24gZGVjZWxlcmF0ZSBtYXgtYWdncm8tZGlzdGFuY2UgZGVjZWxlcmF0aW9uIG1pbi1tb3ZlbWVudC1wZXItZnJhbWUgY2FsYy1kaXN0YW5jZSBtaW4tYWdncm8tZGlzdGFuY2UgZGFtcGluZyBhbmltYXRpb24tc2VjcyBtYXgtZW5lbXktdmVsb2NpdHldLCA6dHlwZSA6Y2xqcywgOnN5bSBkdW5nZW9uLWNyYXdsZXIubW92ZX0gezp2YXItc3ltcyBbaW5pdCBpbml0aWFsLXNlc3Npb24gdGljayBydW5dLCA6dHlwZSA6Y2xqcywgOnN5bSBkdW5nZW9uLWNyYXdsZXIub2RveWxlfSB7OnZhci1zeW1zIFtjaGFuIDwhISBwdXQhXSwgOnR5cGUgOmNsaiwgOnN5bSBkeW5hZG9jLmFsaWFzZXN9IHs6dmFyLXN5bXMgW2NoYW4gcHV0ISA8ISFdLCA6dHlwZSA6Y2xqcywgOnN5bSBkeW5hZG9jLmFsaWFzZXN9IHs6dmFyLXN5bXMgW3Zhci1zeW0tPnVybCBzb3VyY2UtPmh0bWwqIHNwZWMtPmh0bWwgZXhhbXBsZS0+aHRtbCBleGFtcGxlLT5odG1sKiBpbml0LWVkaXRvciBleHBhbmRhYmxlLXNlY3Rpb24gYXBwLXJvb3QgbnMtc3ltLT51cmwgKnNlc3Npb24gZ2V0LXN0YXRlIHNpZGViYXIgdmFyLT5odG1sIHVwZGF0ZS1zZXNzaW9uIGV4cG9ydC1mb3JtIGV4cG9ydCBpbml0aWFsLXNlc3Npb24gcnVsZXMgc3BlYy0+aHRtbCogY29tcG9uZW50cyBzb3VyY2UtPmh0bWwgaW5pdC1leGFtcGxlLWVkaXRvcl0sIDp0eXBlIDpjbGosIDpzeW0gZHluYWRvYy5jb21tb259IHs6dmFyLXN5bXMgW3Zhci1zeW0tPnVybCBpbml0LWVkaXRvciBucy1zeW0tPnVybCAqc2Vzc2lvbiBnZXQtc3RhdGUgdXBkYXRlLXNlc3Npb24gaW5pdGlhbC1zZXNzaW9uIHJ1bGVzIGNvbXBvbmVudHMgaW5pdC1leGFtcGxlLWVkaXRvcl0sIDp0eXBlIDpjbGpzLCA6c3ltIGR5bmFkb2MuY29tbW9ufSB7OnZhci1zeW1zIFtwcmludC1zZXJ2ZXIgaGFuZGxlciBwYWdlLXN0YXRlIGRlZHVwZS1uc2VzIGdldC1jbGotdmFycyBkZXYtc3RhcnQgZ2V0LWNsanMtbnNlcy1hbmQtdmFycy1keW5hbWljYWxseSAtbWFpbiBnZXQtY2xqLW5zZXMgZ2V0LWV4YW1wbGVzIGV4Y2x1ZGUtdmFyPyB2YXItbWFwLT52YXJzIGdldC1jbGpzLW5zZXMtYW5kLXZhcnMgc3RhcnQgKm9wdGlvbnMgcHVibGljLWZpbGVzIGdldC1jbGpzLXZhcnMgcGFnZSBleHBvcnQgKndlYi1zZXJ2ZXIgZ2V0LWNsanMtbnNlcyBnZXQtY2xqLXZhci1pbmZvXSwgOnR5cGUgOmNsaiwgOnN5bSBkeW5hZG9jLmNvcmV9IHs6dmFyLXN5bXMgW2Nsai1jb21waWxlci1mbiBmb3JtLT5zZXJpYWxpemFibGUgaW5pdC1lZGl0b3IgY2xqcy1jb21waWxlci1mbiB0cmFuc2Zvcm0gaW5pdCByZWFkLXN0cmluZyBpbml0LWV4YW1wbGUtZWRpdG9yIGluaXQtd2F0Y2hlciFdLCA6dHlwZSA6Y2xqcywgOnN5bSBkeW5hZG9jLmNvcmV9IHs6dmFyLXN5bXMgW2RlZmV4YW1wbGUgcmVnaXN0cnktcmVmIHBhcnNlLWV4YW1wbGUgZGVmZXhhbXBsZXMgcGFyc2UtdmFsIHBhcnNlLW5zIGRlZmV4YW1wbGUqIHBhcnNlLWtleXMgZGVmZXhhbXBsZXMqXSwgOnR5cGUgOmNsaiwgOnN5bSBkeW5hZG9jLmV4YW1wbGV9IHs6dmFyLXN5bXMgW3JlYWQtY2xqcy1maWxlIHZpc2libGU/IGdldC1jbGpzLWFyZ2xpc3RzIGdldC1jbGpzLW5zZXMtYW5kLXZhcnNdLCA6dHlwZSA6Y2xqLCA6c3ltIGR5bmFkb2Muc3RhdGljfSB7OnZhci1zeW1zIFt3aXRoLWZvY3VzLT5iaW5kaW5nIGFkZC1mb2N1cyBhZGQtY2FyZCBhZGQtY2FsbGJhY2sgdHJhbnNmb3JtXSwgOnR5cGUgOmNsanMsIDpzeW0gZHluYWRvYy50cmFuc2Zvcm19IHs6dmFyLXN5bXMgW2Zvcm0tPnNlcmlhbGl6YWJsZSBwYXJzZS11cmkgZmxhdHRlbi12YWxzIGNsaS1vcHRpb25zIHByb2Nlc3MtZXhhbXBsZV0sIDp0eXBlIDpjbGosIDpzeW0gZHluYWRvYy51dGlsc30gezp2YXItc3ltcyBbKmNsanMtaW5mbyB3YXRjaGVyIHdhdGNoLXJlcXVlc3QgKmNoYW5uZWwtPnVyaSBpbml0LXdhdGNoZXIhXSwgOnR5cGUgOmNsaiwgOnN5bSBkeW5hZG9jLndhdGNofSB7OnZhci1zeW1zIFt0aHVuay10aW1lb3V0IHVnbGlmeS10aW1lLXVuaXRdLCA6dHlwZSA6Y2xqLCA6c3ltIGV2YWwtc291cC5jbG9qYWlsfSB7OnZhci1zeW1zIFt3cmFwLXNlY3VyaXR5IGNvZGUtPnJlc3VsdHMgd3JhcC10aW1lb3V0IGV2YWxfc291cC5jb3JlLnByb3h5JGphdmEubGFuZy5TZWN1cml0eU1hbmFnZXIkZmYxOTI3NGEgd2l0aC1zZWN1cml0eV0sIDp0eXBlIDpjbGosIDpzeW0gZXZhbC1zb3VwLmNvcmV9IHs6dmFyLXN5bXMgW2NvZGUtPnJlc3VsdHNdLCA6dHlwZSA6Y2xqcywgOnN5bSBldmFsLXNvdXAuY29yZX0gezp2YXItc3ltcyBbZXJyb3ItbWVzc2FnZSBleHBsYWluLXJlc3VsdCBjdXN0b20tcHJpbnRlciB2YWx1ZS1zdHIgcHJpbnRlciBleHBsYWluLXJlc3VsdC1zdHIgdW5kZWZtc2cgZXhwbGFpbi1yZXN1bHRzIGV4cGVjdGVkLXN0ciBleHBvdW5kLXN0ciBwcm9ibGVtLWdyb3VwLXN0ciBleHBsYWluLXJlc3VsdHMtc3RyIGV4cG91bmQgZGVmbXNnIGRlZl0sIDp0eXBlIDpjbGosIDpzeW0gZXhwb3VuZC5hbHBoYX0gezp2YXItc3ltcyBbZXJyb3ItbWVzc2FnZSBleHBsYWluLXJlc3VsdCBjdXN0b20tcHJpbnRlciBwcmludGVyIGV4cGxhaW4tcmVzdWx0LXN0ciB1bmRlZm1zZyBleHBsYWluLXJlc3VsdHMgZXhwb3VuZC1zdHIgZXhwbGFpbi1yZXN1bHRzLXN0ciBleHBvdW5kIGRlZm1zZ10sIDp0eXBlIDpjbGpzLCA6c3ltIGV4cG91bmQuYWxwaGF9IHs6dmFyLXN5bXMgWypwcmludC1zdHlsZXMqICplbmFibGUtY29sb3IqIHNnci1jb2RlIGVzY2FwZSBjb2xvciBlc2Mgc2dyIHJlc29sdmUtc3R5bGVzXSwgOnR5cGUgOmNsaiwgOnN5bSBleHBvdW5kLmFuc2l9IHs6dmFyLXN5bXMgW3Nnci1jb2RlICplbmFibGUtY29sb3IqIGVzYyBlc2NhcGUgc2dyICpwcmludC1zdHlsZXMqIHJlc29sdmUtc3R5bGVzIGNvbG9yXSwgOnR5cGUgOmNsanMsIDpzeW0gZXhwb3VuZC5hbnNpfSB7OnZhci1zeW1zIFttYXAtPktleVBhdGhTZWdtZW50IHBhdGhzLXRvLXZhbHVlIGVxdWFsaXNoPyBpbi13aXRoLWtwcyAtPktleVZhbHVlUGF0aFNlZ21lbnQgdmFsdWUtaW4ga3Zwcz8gLT5LZXlQYXRoU2VnbWVudCBpbi13aXRoLWtwcy1pbnRzLWFyZS1rZXlzIGNvbXBhcmUtcGF0aC1zZWdtZW50IGNvbXBhcmUtcGF0aHMgaW4td2l0aC1rcHMtZnV6enktbWF0Y2gtZm9yLXJlZ2V4LWZhaWx1cmVzIG1hcC0+S2V5VmFsdWVQYXRoU2VnbWVudCBpbi13aXRoLWtwcyogaW4td2l0aC1rcHMtbWFwcy1hcy1zZXFzIGluLXdpdGgta3BzLWludHMtYXJlLWtleS12YWx1ZS1pbmRpY2F0b3JzIGZuLWVxdWFsIGtwcz8gYm90aC1uYW4/XSwgOnR5cGUgOmNsaiwgOnN5bSBleHBvdW5kLnBhdGhzfSB7OnZhci1zeW1zIFtwYXRocy10by12YWx1ZSBlcXVhbGlzaD8gaW4td2l0aC1rcHMgdmFsdWUtaW4ga3Zwcz8gaW4td2l0aC1rcHMtaW50cy1hcmUta2V5cyBjb21wYXJlLXBhdGgtc2VnbWVudCBjb21wYXJlLXBhdGhzIGluLXdpdGgta3BzLWZ1enp5LW1hdGNoLWZvci1yZWdleC1mYWlsdXJlcyBpbi13aXRoLWtwcyogaW4td2l0aC1rcHMtbWFwcy1hcy1zZXFzIGluLXdpdGgta3BzLWludHMtYXJlLWtleS12YWx1ZS1pbmRpY2F0b3JzIGZuLWVxdWFsIGtwcz8gYm90aC1uYW4/XSwgOnR5cGUgOmNsanMsIDpzeW0gZXhwb3VuZC5wYXRoc30gezp2YXItc3ltcyBbbWlzc2luZy1rZXkgaW5kZW50LWxldmVsIGFub24tZm4tc3RyIGhpZ2hsaWdodC1saW5lIHByaW50LXNwZWMta2V5cyBmb3JtYXQgc2luZ2xldG9uPyBpbmRlbnQgc2ltcGxlLXNwZWMtb3ItbmFtZSB0YWJsZS1zdHIgcHJpbnQtdGFibGUgc3BlY3MtZnJvbS1mb3JtIGVsaWRlLXNwZWMtbnMgZXNjYXBlLXJlcGxhY2VtZW50IGtleS0+c3BlYyBwcmludC1zcGVjLWtleXMqIGhpZ2hsaWdodGVkLXZhbHVlIGVsaWRlLWNvcmUtbnMgcHJpbnQtbWlzc2luZy1rZXlzIHN1bW1hcnktZm9ybSBibGFuay1mb3JtIGV4cGFuZC1zcGVjIGtleXdvcmRzIG5vLXRyYWlsaW5nLXdoaXRlc3BhY2UgcHByaW50LXN0ciBzdW1tYXJpemUta2V5LWNsYXVzZSBwcHJpbnQtZm5dLCA6dHlwZSA6Y2xqLCA6c3ltIGV4cG91bmQucHJpbnRlcn0gezp2YXItc3ltcyBbbWlzc2luZy1rZXkgaW5kZW50LWxldmVsIGFub24tZm4tc3RyIGhpZ2hsaWdodC1saW5lIHByaW50LXNwZWMta2V5cyBzaW5nbGV0b24/IGluZGVudCBzaW1wbGUtc3BlYy1vci1uYW1lIHRhYmxlLXN0ciBwcmludC10YWJsZSBzcGVjcy1mcm9tLWZvcm0gZWxpZGUtc3BlYy1ucyBlc2NhcGUtcmVwbGFjZW1lbnQga2V5LT5zcGVjIHByaW50LXNwZWMta2V5cyogaGlnaGxpZ2h0ZWQtdmFsdWUgZWxpZGUtY29yZS1ucyBwcmludC1taXNzaW5nLWtleXMgc3VtbWFyeS1mb3JtIGJsYW5rLWZvcm0gZXhwYW5kLXNwZWMga2V5d29yZHMgbm8tdHJhaWxpbmctd2hpdGVzcGFjZSBwcHJpbnQtc3RyIHN1bW1hcml6ZS1rZXktY2xhdXNlIHBwcmludC1mbl0sIDp0eXBlIDpjbGpzLCA6c3ltIGV4cG91bmQucHJpbnRlcn0gezp2YXItc3ltcyBbdmFsdWUtaW4gZml4LXZpYSBhbm5vdGF0ZSB0eXBlXSwgOnR5cGUgOmNsaiwgOnN5bSBleHBvdW5kLnByb2JsZW1zfSB7OnZhci1zeW1zIFtmaXgtdmlhIGFubm90YXRlIHR5cGUgdmFsdWUtaW5dLCA6dHlwZSA6Y2xqcywgOnN5bSBleHBvdW5kLnByb2JsZW1zfSB7OnZhci1zeW1zIFtzcGVjLXZhbHMgbmFuPyBhc3NlcnQtbWVzc2FnZV0sIDp0eXBlIDpjbGosIDpzeW0gZXhwb3VuZC51dGlsfSB7OnZhci1zeW1zIFthc3NlcnQtbWVzc2FnZSBuYW4/IHNwZWMtdmFsc10sIDp0eXBlIDpjbGpzLCA6c3ltIGV4cG91bmQudXRpbH0gezp2YXItc3ltcyBbc291cmNlcy0+bW9kaWZpZWQtbWFwIG5vdGlmeS1vbi1leGNlcHRpb24gZmluZC1maWd3aGVlbC1tZXRhIHJlbG9hZC1jbGotZmlsZXMgc3RyLWV4Y2VycHQganNvbi13cml0ZS1zdHIgaW52ZXJ0LWRlcHMgYnVpbGQtdG9wby1zb3J0IHBhcnNlLWNsai1ucyBjaGFuZ2VkLWRlcGVuZGVuY3ktdHJlZT8gcmVsb2FkLWNsai1uYW1lc3BhY2VzIHNvdXJjZXMtbW9kaWZpZWQgYWxsLWRlcGVuZGVuY3ktY29kZSBhbGwtc291cmNlcyBqcy1kZXBlbmRlbmNpZXMtd2l0aC1maWxlLXVybHMgKmNvbmZpZyogcm9vdC1uYW1lc3BhY2VzIGRpc3RpbmN0LWJ5IHNvdXJjZXMtPm5hbWVzcGFjZXMtdG8tcmVsb2FkIHJlbG9hZC1uYW1lc3BhY2UtY29kZSBoYW5kbGUtd2FybmluZ3MgZXhjZXB0aW9uLWNvZGUgd2FybmluZ3MtPndhcm5pbmctaW5mb3Mgb3V0cHV0LWRpciBoYW5kbGUtZXhjZXB0aW9uIGhvb2tzLWZvci1uYW1lc3BhY2UgcmVxdWlyZS1tYXAgYWxsLWFkZC1kZXBlbmRlbmNpZXMgYWRkLWRlcGVuZGVuY2llcy1qcyBjb21waWxlci13YXJuaW5ncy1jb2RlIGxhc3QtY29tcGlsZXItZW52IHNvdXJjZXMtd2l0aC1wYXRocyBzb3VyY2VzLW1vZGlmaWVkISBzdGFydCogaW5saW5lLW1lc3NhZ2UtZGlzcGxheS1kYXRhIGZpbGUtZXhjZXJwdCBob29rLWNsanMtY2xvc3VyZS1idWlsZCBleHBhbmQtdG8tZGVwZW5kZW50cyBzY3JhdGNoIG1hcC1rZXlzIHN0YXJ0LWZyb20tcmVwbCBqcy1kZXBlbmRlbmNpZXMtd2l0aC1wYXRocyBnZXQtc291cmNlcyBmaWxlLWxpbmUtY29sdW1uIHBhdGhzLT5uYW1lc3BhY2VzLXRvLXJlbG9hZCBpbi11cHBlci1sZXZlbD8gZGVidWctcHJuIHJlYWQtY2xqLWZvcm1zIGNyb3NzLWZvcm1hdCBjbGllbnQtZXZhbCBjbGotcGF0aHMtPm5hbWVzcGFjZXMgd2FybmluZy1pbmZvIHN0b3AgYnVpbGQgc291cmNlLWZpbGUgKmlubGluZS1jb2RlLW1lc3NhZ2UtbWF4LWNvbHVtbiogcmVsb2FkLW5hbWVzcGFjZXMgZmlnd2hlZWwtYWx3YXlzLW5hbWVzcGFjZXMgd3JhcC1saW5lIGhvb2stY2xqcy1idWlsZF0sIDp0eXBlIDpjbGosIDpzeW0gZmlnd2hlZWwuY29yZX0gezp2YXItc3ltcyBbZGlzdGluY3QtYnkgbWFwLWtleXMgKmlubGluZS1jb2RlLW1lc3NhZ2UtbWF4LWNvbHVtbiogd3JhcC1saW5lIGNyb3NzLWZvcm1hdCBpbmxpbmUtbWVzc2FnZS1kaXNwbGF5LWRhdGEgZmlsZS1saW5lLWNvbHVtbl0sIDp0eXBlIDpjbGpzLCA6c3ltIGZpZ3doZWVsLmNvcmV9IHs6dmFyLXN5bXMgW3N0YXR1cyogZml4LXNpbXBsZS1ib29sLWFyZ3MgZGVmYXVsdC10YXJnZXQtZGlyIHN0YXJ0LWJhY2tncm91bmQtYnVpbGRzIHJ1bi1idW5kbGUtY21kKiBjb25maWctPnJlbG9hZC1jb25maWcgcnVuLWJ1bmRsZS1jbWQgZGVmYXVsdC1jb21waWxlIGNsZWFuKiByZWFkLWVkbi1maWxlIHZhbGlkYXRlLWNvbmZpZyEgY29uZmlnLXNldC1sb2ctbGV2ZWwhIGN1cnJlbnRseS1hdmFpbGFibGUtaWRzIGNvbmZpZy1jbGVhbiBidWlsZC1vcHRpb24tYXJnPyBjb25maWctbG9nLXN5bnRheC1lcnJvci1zdHlsZSEgbWVyZ2UtbWV0YSBleHBhbmQtYnVpbGQtaW5wdXRzIHByb2Nlc3MtbWFpbi1jb25maWcgY2xvc3VyZS1kZWZpbmVzLWhhcy1rZXktdmFsdWU/IGJ1aWxkLW9uY2Utb3B0IHZhbGlkYXRlLWNsaSEgTlBNLURFUFMtRklMRSByZWFkLWVkbi1vcHRzIGNvbmZpZy13YXRjaC1jc3MgZ2V0LWJ1aWxkIGJ1bmRsZS1zbWFydD8gY29uZmlnLXVzZS1zc2wgZ2V0LXJlcGwtZW52LW9wdGlvbnMgZmFsbGJhY2staWQgcmVsb2FkLWNvbmZpZyogKmNvbmZpZyogYnVuZGxlLW9uY2Utb3B0cyBjb25maWctPmlucHV0cyBjbGVhbiBucmVwbC1yZXBsIGJ1aWxkLW1haW4tb3B0IHNlcnZlIHJlcGwtYWN0aW9uIGJ1bmRsZS1hbHdheXM/IGFkZC10by1xdWVyeSB3YXJuLW9uLWJhZC1pZCBkZWZhdWx0LWJ1bmRsZS1vdXRwdXQtdG8qIGhlbHAtb3B0IGNsZWFuLWJ1aWxkLW91dHB1dHMhIGJyb3dzZXItdGFyZ2V0PyBtYWtlLXRlbXAtZGlyIGJ1aWxkLW9uY2UqIGhlbHAtdGVtcGxhdGUgZXh0cmEtbWFpbi1mbiBmaWd3aGVlbC1vcHQgd2F0Y2gtYnVpbGQgY29uZmlnLWNvbXBpbGUtaXMtYnVpbGQtb25jZSBjb25maWctZXh0cmEtbWFpbnMgcHJvY2Vzcy11bmlxdWUgaGVscGVyLXJpbmctYXBwIGRlZmF1bHQtb3V0cHV0LXRvKiByZXBsLWNhdWdodCBkZWZhdWx0LW91dHB1dC10byAqYmFzZS1jb25maWcqIHN0b3AtYnVpbGRzKiBzdG9wLWJ1aWxkcyAtbWFpbiBtZXJnZS1leHRyYS1jbGpzLW9wdGlvbnMgcmVzZXQgYm91bmQtdmFyPyBzdGFydCogaGVscC1zdHIgb3V0cHV0LXRvLWZvci1leHRyYS1tYWluIHN0YXJ0LWJ1aWxkcyogZXh0cmEtbWFpbi1vcHRpb25zIGF2YWlsYWJsZS1idWlsZC1pZHMgZ2V0LXJlcGwtb3B0aW9ucyBzdGFydC1qb2luIGJ1aWxkLW9uY2UgY29tcGlsZS1vcHRzLW9wdCBidWlsZC1jbGVhbmluZyEgZGVmYXVsdC1vdXRwdXQtZGlyKiBidW5kbGUtc21hcnQtb3B0cyByZWdpc3Rlci1idWlsZCEgd3JhcC13aXRoLWNvbXBpbGVyLXBhc3NlcyBnZXQtZWRuLWZpbGUta2V5IGNvbmZpZy1zeXN0ZW0tZXhpdCBmaWd3aGVlbC1jb21tYW5kcyB2YWxpZGF0ZS1jb25maWchKiBiYWNrZ3JvdW5kLWJ1aWxkLW9wdCBpbi1ucmVwbD8gbG9hZC1lZG4tb3B0cyBleHRyYS1jb25maWctbWVyZ2UgZmV0Y2gtZmlnd2hlZWwtbWFpbi1lZG4gdXBkYXRlLWNvbmZpZyBzdGFydC1idWlsZHMgY29uZmlnLW9wZW4tZmlsZS1jb21tYW5kIHN0YXJ0IHJlc29sdmUtZm4tdmFyIGNvbmZpZy1maW5hbGl6ZS1yZXBsLW9wdGlvbnMgcmVwbC1lbnYtb3B0cy1vcHQgZmlnd2hlZWwtbW9kZT8gcmVhZC1lZG4tc3RyaW5nIHJ1bi1ob29rcyB3YXJuLXRoYXQtZGlyLW5vdC1vbi1jbGFzc3BhdGggYnVpbGQtb3B0IHByZXAtY2xpZW50LWNvbmZpZyBwcmludC1jb25mIGJ1aWxkLW9uY2UtbWFpbi1vcHQgY29uZmlnLXJlcGwtY29ubmVjdCBjb25maWctY2xqc2Mtb3B0cy1qc29uIGNvbmZpZy1jbGpzLWRldnRvb2xzIGJ1aWxkLWNsanMgZmlndXJlLWRlZmF1bHQtYXNzZXQtcGF0aCBjb25maWctYW5zaS1jb2xvci1vdXRwdXQhIGFkanVzdC1vcHRpb24tZG9jcyBkZWZhdWx0LW1haW4gY29uZmlnLXJ1bi1wcmUtc3RhcnQtaG9va3MgYWRkLXRlbXAtZGlyIHdhdGNoLWNzcyBwcm9jZXNzLWZpZ3doZWVsLW1haW4tZWRuIGJ1aWxkLXJlZ2lzdHJ5IGNvbmZpZy1jbGVhbi1vdXRwdXRzISBhZGQtZGVmYXVsdC1zeXN0ZW0tYXBwLWhhbmRsZXIgcmVzb2x2ZS1yaW5nLWhhbmRsZXIgYmFja2dyb3VuZC1idWlsZCBjb25maWctYXV0by1idW5kbGUgZ2V0LWJ1aWxkLXdpdGgtZXJyb3IgdmFsaWRhdGUtYnVuZGxlLWFkdmFuY2VkISBob3N0LXBvcnQtYXJnPyByZXBsLWFwaS1kb2NzIGJ1aWxkIHZhbGlkYXRlLW91dHB1dC1wYXRocy1yZWxhdGlvbnNoaXAhIGZpeC1zaW1wbGUtYm9vbC1hcmcqIHByaW50LWNvbmZpZy1vcHQgdmFsaWRhdGUtZml4LXRhcmdldC1jbGFzc3BhdGghIHN0YXR1cyBzZXJ2ZS1hY3Rpb24gdmFsaWRhdGUtYmFzaWMtYXNzdW1wdGlvbnMhIG1lcmdlLWV4dHJhLWtleS13aXRoIGNsZWFuLW91dHB1dHMtb3B0IHJlcGwtbWFpbi1vcHQgb3V0cHV0LXRvLWluc2lkZS1vdXRwdXQtZGlyPyBkZWZhdWx0LW1haW4tcmVwbC1pbmRleC1ib2R5IGJ1bmRsZS1vbmNlPyByZXBsLWhlYWRlciBmaWd3aGVlbC1vcHRzLW9wdCBzaG91bGQtYWRkLXRlbXAtZGlyPyByZXBsIGNvbmZpZy1ldmFsLWJhY2sgcHdkLWxpa2VseS1wcm9qZWN0LXJvb3QtZGlyPyBsb2ctc2VydmVyLXN0YXJ0IHdhdGNoLWRpci1mcm9tLW5zIGRlZmF1bHQtb3V0cHV0LWRpciBzdGFydC1maWxlLWxvZ2dlciBzdGFydC1idWlsZCogY2xlYW4tb3V0cHV0cyogY29uZmlnLWJ1aWxkLWlucHV0cyByZXBsLWNvbm5lY3Rpb24/IGF1dG9idWlsZGluZy1pZHMgZmlnLWNvcmUtYnVpbGQgcmVzZXQqIGNsZWFuLWFsbC1idWlsZHMhIHZhbGlkYXRlLWNsaSEqIGNsZWFuLWJ1aWxkIGV4dHJhLW1haW4tYWx0ZXJlZC1vdXRwdXQtZmlsZW5hbWVzIGNvbmZpZy1wcmUtcG9zdC1ob29rcyBjb25maWctZm9yLWlkIHNlcnZlLW1haW4tb3B0IHVwZGF0ZS1zZXJ2ZXItaG9zdC1wb3J0XSwgOnR5cGUgOmNsaiwgOnN5bSBmaWd3aGVlbC5tYWlufSB7OnZhci1zeW1zIFtBTlNJLUNPREVTIGFuc2ktY29kZSAqdXNlLWNvbG9yKiAqZm9ybWF0dGVycyogc3R5bGUqIGFuc2ktZm4gd2l0aC1hZGRlZC1mb3JtYXR0ZXJzIGFuc2ktZm4qIGZvcm1hdC1zdHIgc3R5bGVdLCA6dHlwZSA6Y2xqLCA6c3ltIGZpZ3doZWVsLm1haW4uYW5zaS1wYXJ0eX0gezp2YXItc3ltcyBbbGlzdGVuXSwgOnR5cGUgOmNsaiwgOnN5bSBmaWd3aGVlbC5tYWluLmFzeW5jLXJlc3VsdH0gezp2YXItc3ltcyBbY3VycmVudC1zdGF0ZSByZWFkLWFuYWx5c2lzLWNhY2hlIGRlZmF1bHQtcGFzc2VzIGN1cnJlbnQtZmlsZSBjdXJyZW50LW5zXSwgOnR5cGUgOmNsaiwgOnN5bSBmaWd3aGVlbC5tYWluLmNvbXBhdC5hbmEtYXBpfSB7OnZhci1zeW1zIFtkZWZhdWx0LWluZGV4LWNvZGUgbWFpbi1hY3Rpb24gc2VydmUtb25seS1taWRkbGV3YXJlIGV4dHJhLW1haW4tYm9keSBtaXNzaW5nLWluZGV4IGV4dHJhLW1haW4taG9zdGluZyBtaWRkbGV3YXJlIGRldi1lbmRwb2ludCBtaXNzaW5nLWluZGV4LW1pZGRsZXdhcmUgbWFpbi13cmFwcGVyXSwgOnR5cGUgOmNsaiwgOnN5bSBmaWd3aGVlbC5tYWluLmhlbHBlcn0gezp2YXItc3ltcyBbZXhjZXB0aW9uLXRpdGxlIGZvcm1hdC1zdGFja3RyYWNlLWV4IHNpbXBsZS1lcnJvciBleGNlcHRpb24tbWVzc2FnZSBmaWxlLWxpbmUtY29sIHN3aXRjaC10by1maWxlLWhhbmRsZXIhIGxldmVscy1tYXAgKnN5bnRheC1lcnJvci1zdHlsZSogZm9ybWF0LWV4IGRlZmF1bHQtbG9nZ2VyIGZpZ3doZWVsLm1haW4ubG9nZ2luZy5wcm94eSRqYXZhLnV0aWwubG9nZ2luZy5Gb3JtYXR0ZXIkZmYxOTI3NGEgZXhjZXB0LWRhdGEtPmZvcm1hdC1kYXRhIGV4Y2VwdC1kYXRhLT5mb3JtYXQtbGluZXMtZGF0YSBmaWd3aGVlbC5tYWluLmxvZ2dpbmcucHJveHkkamF2YS51dGlsLmxvZ2dpbmcuSGFuZGxlciRmZjE5Mjc0YSBjbGpzLXN5bnRheC13YXJuaW5nIHN5bnRheC1leGNlcHRpb24gZndzZXRsZXZlbCEgZm9ybWF0LXRyYWNlLWxpbmUgZmFpbHVyZSB3YXJuIHRyYWNlIExvZyBkZWJ1ZyBmb3JtYXQtZXhjZXB0aW9uLXdhcm5pbmcgZXhjZXB0aW9uLXdpdGgtZXhjZXJwdCByZW1vdmUtaGFuZGxlcnMgd3JpdGVyLWhhbmRsZXIgZndsb2chIHNldC1sZXZlbCAqbG9nZ2VyKiBpbmZvIGZvcm1hdC1sb2ctcmVjb3JkIGZvcm1hdC1leGNlcHRpb24td2FybmluZy1jb25jaXNlIGVycm9yIGZpZy1mb3JtYXR0ZXIgc3VjY2VlZF0sIDp0eXBlIDpjbGosIDpzeW0gZmlnd2hlZWwubWFpbi5sb2dnaW5nfSB7OnZhci1zeW1zIFtpbmRleC1qcy1mcm9tLWRhdGEga2ViYWItY2FzZSBidW5kbGUtPmZvcmVpZ24tbGliIGJ1bmRsZXMtPmZvcmVpZ24tbGlicyBoYW5kbGUtanMtZXhwb3J0cyBpbXBvcnQtZmlsZS0+Zm9yZWlnbi1saWIgY29uZmlnIHdpbmRvdy1zdGF0ZW1lbnRzIGV4cG9ydHMtPmZvcmVpZ24tbGlicyBlbWl0LWpzLWV4cG9ydCBjb250ZW50LT53aW5kb3ctZXhwb3J0cyBjYW1lbC1jYXNlIGltcG9ydC1zdGF0ZW1lbnQgY2hlY2stdGhhdC1maWxlcy1leGlzdF0sIDp0eXBlIDpjbGosIDpzeW0gZmlnd2hlZWwubWFpbi5ucG19IHs6dmFyLXN5bXMgW2ZpZ2JyaWRnZS1zZXR1cC1jb2RlIHByb2QtbW9kdWxlLWpzIHBsdWdpbiBzZXR1cC1yZWFjdC1uYXRpdmUgcmVhY3QtbmF0aXZlLXNvdXJjZS1kaXIgaW5kZXhqcyB0b29sLW5hbWVdLCA6dHlwZSA6Y2xqLCA6c3ltIGZpZ3doZWVsLm1haW4ucmVhY3QtbmF0aXZlfSB7OnZhci1zeW1zIFtyZWxhdGl2aXplIGFzc2V0LXJlcXVpcmUgcmV3cml0ZS1hc3NldC1yZXF1aXJlcyB3cml0ZS1pZi1kaWZmZXJlbnQgbm9ybWFsaXplIGV4cG9ydC1kZXAgY3VzdG9tLXBhc3NlcyBqcy1yZXF1aXJlLWFzc2V0PyBqcz8gY29sbGVjdC1saWItcmVxdWlyZXMgYWxsLWZpZy1hc3NldHMganMtcmVxdWlyZS1saWI/IGNvbnRlbnRzLWVxdWFsPyBta2RpcnMgbG9hZC1hbmFseXNpcyBrcmVsbC1ucG0tZGVwcy1qcyBjb2xsZWN0LW5zISBqcy1yZXF1aXJlPyBwb3N0LWJ1aWxkLWhvb2sgd3JpdGUtYXNzZXRzLWpzIGNhY2hlLWtyZWxsLXJlcXVpcmVzIGFsbC1hc3NldHMgbnMtPmNhY2hlLWZpbGUgYXNzZXRzLWpzIGFsbC1yZXF1aXJlcyBhc3NldD8gd3JpdGUta3JlbGwtbnBtLWRlcHMtanMgZmlsZS1leHQgdXBkYXRlLXJlcXVpcmUtcGF0aCBsaWI/XSwgOnR5cGUgOmNsaiwgOnN5bSBmaWd3aGVlbC5tYWluLnJlYWN0LW5hdGl2ZS5rcmVsbC1wYXNzZXN9IHs6dmFyLXN5bXMgW3Vua25vd24tZmxhZz8gc2ltaWxhci1mbGFncyBtaXNzaW5nLWJ1aWxkLWZpbGU/IGdldC1leHBsYWluLWRhdGEgZXhwZWN0ZWQtc3RyLXdpdGgtZG9jIGVycm9yLWJlZm9yZS1tYWluLWZsYWc/IHZhbGlkYXRlLWNsaSEgZXJyb3ItYWZ0ZXItbWFpbi1mbGFnPyBidWlsZC1leGlzdHM/IGFkZC1wcm9ibGVtLXR5cGVzIHVwZGF0ZS1wcm9ibGVtcyBpZ25vcmVkLWFyZ3M/IGRvYy1mb3ItZmxhZyBhbGwtZmlsZXMtYW5kLXJlc291cmNlcy1zaG91bGQtZXhpc3QgdmFsaWRhdGUtY2xpLWV4dHJhIGNsanMtbmFtZXNwYWNlLWF2YWlsYWJsZT8gY2FuLXJlcXVpcmUtYW5kLXJlc29sdmUtdmFyPyByZXNvdXJjZS1leGlzdHM/IGdldC1maXJzdC1tYWluLWFyZyBleHRyYS1pbnB1dD8gaW5saW5lLWVkbi1zdHJpbmc/IHVua25vd24tc2NyaXB0LWlucHV0PyBub3QtcmVwbC1lbnYtb3B0IHByb2JsZW0tdHlwZSBlcnJvci1wb3MgcmVhZGFibGU/IGFkZC1wcm9ibGVtLXR5cGUgZmlsZS1vci1yZXNvdXJjZS1zaG91bGQtZXhpc3Qgbm90LWNvbXBpbGUtb3B0IHVwZGF0ZS1wcm9ibGVtIHBvc2l0aW9uLW9mLWZpcnN0LW1haW4tYXJnIHJlc291cmNlLXBhdGg/IGhvc3QtcG9ydD9dLCA6dHlwZSA6Y2xqLCA6c3ltIGZpZ3doZWVsLm1haW4uc2NoZW1hLmNsaX0gezp2YXItc3ltcyBbbm9uLWJsYW5rLXN0cmluZz8gdmFsaWRhdGUtY29uZmlnISBmaWxlLWV4aXN0cz8gZXhwZWN0ZWQtc3RyLXdpdGgtZG9jIGV4cG91bmQtc3RyaW5nIG1hcmtkb3duLWRvY3Mgc3BlYy1kb2MgbWFya2Rvd24tb3B0aW9uLWRvY3MgZGlyZWN0b3J5LWV4aXN0cz8gZGVmLXNwZWMtbWV0YSBoYXMtY2xqcy1zb3VyY2UtZmlsZXM/ICpzcGVjLW1ldGEqIHVucXVvdGVkLXN5bWJvbD8gbm90LWZsYWc/IG91dHB1dC1kb2NzIGVuc3VyZS1hbGwtcmVnaXN0ZXJlZC1rZXlzLWluY2x1ZGVkIGludGVnZXItbGlrZT8gZmxhZy1hcmc/IGtleS1tZXRhLWZvci1wcm9ibGVtXSwgOnR5cGUgOmNsaiwgOnN5bSBmaWd3aGVlbC5tYWluLnNjaGVtYS5jb3JlfSB7OnZhci1zeW1zIFtucz8gYWRkLWV4dHJhLW1haW4gZ2V0LXRlc3QtbmFtZXNwYWNlcyB0ZXN0aW5nLWZpbGUtY29udGVudCBwbHVnaW4gbm8tbmFtZXNwYWNlcy1jb250ZW50IGZpbmQtdGVzdC1uYW1lc3BhY2VzIGFkZC1maWxlLWdlbiBnZW5uZWQtdGVzdC1ucyBnZXQtcXVvdGVkLXRlc3QtbnNlcyBhZGQtYXV0by10ZXN0aW5nPyBydW4tdGVzdHMtYXN5bmMgcHJlLWhvb2sgcnVuLXRlc3RzIG5hbWVzcGFjZS1oYXMtdGVzdD8gY2xqcy10ZXN0LWRpc3BsYXk/IHRlc3QtZmlsZS1vdXRwdXQtdG9dLCA6dHlwZSA6Y2xqLCA6c3ltIGZpZ3doZWVsLm1haW4udGVzdGluZ30gezp2YXItc3ltcyBbZHluYW1pYy1jbGFzc3BhdGggcmVxdWlyZS1yZXNvbHZlLXZhci1vci1lcnJvciBzeXN0ZW0tb3MgZmlsZS1oYXMtY2hhbmdlZD8gY29tbWFuZC1leGlzdHM/IHJlcXVpcmUtcmVzb2x2ZS1oYW5kbGVyLW9yLWVycm9yIG5zLT5sb2NhdGlvbiBkaXItb24tY2xhc3NwYXRoPyAtPnBhdGggZmluZC1zb3VyY2UtZGlyLWZvci1jbGpzLW5zIHJlcXVpcmUtcmVzb2x2ZS12YXIgZGlyLW9uLWN1cnJlbnQtY2xhc3NwYXRoPyByZXF1aXJlLXJlc29sdmUtaGFuZGxlciBvcz8gbnMtYXZhaWxhYmxlPyBucHgtZXhlY3V0YWJsZSBkZWxldGUtZmlsZS1vci1kaXJlY3Rvcnkgc3RhdGljLWNsYXNzcGF0aCBmaWxsLWNvbm5lY3QtdXJsLXRlbXBsYXRlIHZhbGlkLXNvdXJjZS1wYXRoPyByZWJlbC1yZWFkbGluZT8gZG90LXNsYXNoIGVuc3VyZS1keW5jbGFzcy1sb2FkZXIhICpjb21waWxlLWNvbGxlY3RvciogcGF0aC1wYXJ0cyByb290LWR5bmNsYXNzLWxvYWRlciBmaW5kLW5zLXNvdXJjZS1pbi1sb2NhbC1kaXIgcmVxdWlyZT8gc2V0dXAtY29ubmVjdC11cmwgc291cmNlLWZpbGUtdHlwZXMtaW4tZGlyIHNhZmUtbnMtPmxvY2F0aW9uIHJlbGF0aXZpemVkLXBhdGgtcGFydHMgYWRkLWNsYXNzcGF0aCFdLCA6dHlwZSA6Y2xqLCA6c3ltIGZpZ3doZWVsLm1haW4udXRpbH0gezp2YXItc3ltcyBbcmVzZXQtd2F0Y2ghIGpvaW4gc3RvcC13YXRjaGVycyEgcmVhbC1maWxlPyBydW5uaW5nPyBzdWZmaXgtZmlsdGVyIHJlbW92ZS13YXRjaCEgc3RvcCEgKndhdGNoZXIqIGZpbGUtc3VmZml4IGFsdGVyLXdhdGNoZXMgYWRkLXdhdGNoISB0aHJvdHRsZV0sIDp0eXBlIDpjbGosIDpzeW0gZmlnd2hlZWwubWFpbi53YXRjaGluZ30gezp2YXItc3ltcyBbYWJzdHJhY3Qtd2Vic29ja2V0LWNvbm5lY3Rpb24gYnJvYWRjYXN0LWZvci1yZXNwb25zZSBhc3ljLWh0dHAtcG9sbGluZy1taWRkbGV3YXJlIGxvbmctcG9sbC1jYXB0dXJlLXJlc3BvbmQgaHR0cC1wb2xsaW5nLWNvbm5lY3Qgc2VuZC1mb3ItZXZhbCAtPkZpZ3doZWVsUmVwbEVudiBuZWdvdGlhdGUtaWQgcnVuLWRlZmF1bHQtc2VydmVyIGh0dHAtbG9uZy1wb2xsaW5nLWNvbm5lY3QgKmNvbm5lY3Rpb25zKiByZXBsLWVudiogbG9nIG5vLWNvbm5lY3Rpb24tcmVzdWx0IHJ1bi1kZWZhdWx0LXNlcnZlciogd2FpdC1mb3ItY29ubmVjdGlvbiBzZW5kLWZvci1yZXNwb25zZSBwcmludC10by1zdHJlYW0ganNvbi1yZXNwb25zZSByZXBsLWVudi1wcmludCBmaWxsLXNlcnZlci11cmwtdGVtcGxhdGUgZGVmYXVsdC1zc2wtcG9ydCBjb25ucyBwaW5nIHRyaW0tbGFzdC1uZXdsaW5lIGFkZC1saXN0ZW5lciB0YWtlbi1uYW1lcyBjb25uZWN0aW9uLXNlbmQgcGluZy10aHJlYWQgaHR0cC1sb25nLXBvbGxpbmctZW5kcG9pbnQgZXZhbHVhdGUgbmFtZS1saXN0IGRlZmF1bHQtcG9ydCBmb2N1cyogcmVtb3ZlLWxpc3RlbmVyIHdpbGwtZXZhbC1vbiBsYXVuY2gtYnJvd3NlciBzZW5kLWZvci1yZXNwb25zZSogcmVwbC1lbnYgY2xlYXItbGlzdGVuZXJzIHNjcmF0Y2ggaHR0cC1wb2xsaW5nLW1pZGRsZXdhcmUgbG9uZy1wb2xsLXNlbmQgdHJ5LXBvcnQgY3JlYXRlLWNvbm5lY3Rpb24hIGh0dHAtcG9sbGluZy1zZW5kIGR5bmxvYWQgbGF1bmNoLWpzIGxhdW5jaC1ub2RlIHBhcnNlLXF1ZXJ5LXN0cmluZyBhdmFpbGFibGUtbmFtZXMgc2V0dXAgdGVhci1kb3duLWV2ZXJ5dGhpbmctYnV0LXNlcnZlciBsYXVuY2gtanMtaGVscGVyIHRlYXItZG93bi1zZXJ2ZXIgb3Blbi1jb25uZWN0aW9ucyByZW1vdmUtY29ubmVjdGlvbiEgbGlzdC1jb25uZWN0aW9ucyBjb25ucyogaHR0cC1wb2xsaW5nLWVuZHBvaW50IGV2YWwtY29ubmVjdGlvbnMgbmFtaW5nLXJlc3BvbnNlIGZvY3VzIHJlY2VpdmUtbWVzc2FnZSEgbWFwLT5GaWd3aGVlbFJlcGxFbnYgY29ubmVjdGlvbnMtYXZhaWxhYmxlICpzZXJ2ZXIqXSwgOnR5cGUgOmNsaiwgOnN5bSBmaWd3aGVlbC5yZXBsfSB7OnZhci1zeW1zIFtkZWZhdWx0LXBvcnQgZGVmYXVsdC1zc2wtcG9ydF0sIDp0eXBlIDpjbGpzLCA6c3ltIGZpZ3doZWVsLnJlcGx9IHs6dmFyLXN5bXMgW3NldC1sb2ctbGV2ZWwgY29uc29sZS1sb2dnaW5nIGdldC1sb2dnZXIgbG9nLWxldmVscyBMb2dMZXZlbCBkZWJ1ZyBsb2ctY29uc29sZSB3YXJuaW5nIGluZm8gZmluZSBlcnJvcl0sIDp0eXBlIDpjbGpzLCA6c3ltIGZpZ3doZWVsLnJlcGwubG9nZ2luZ30gezp2YXItc3ltcyBbcnVuLWpldHR5IHJ1bi1zZXJ2ZXIgZGVmYXVsdC1vcHRpb25zIGFzeW5jLXdlYnNvY2tldC1jb25maWd1cmF0b3Igd2Vic29ja2V0LWNvbm5lY3Rpb24tZGF0YSBmaWd3aGVlbC5zZXJ2ZXIuamV0dHlfd2Vic29ja2V0LnByb3h5JG9yZy5lY2xpcHNlLmpldHR5LndlYnNvY2tldC5hcGkuV2ViU29ja2V0QWRhcHRlciRmZjE5Mjc0YSBhZGFwdC1maWd3aGVlbC13cyBwcm94eS13cy1oYW5kbGVyIGZpZ3doZWVsLnNlcnZlci5qZXR0eV93ZWJzb2NrZXQucHJveHkkb3JnLmVjbGlwc2UuamV0dHkud2Vic29ja2V0LnNlcnZlci5XZWJTb2NrZXRIYW5kbGVyJGZmMTkyNzRhIGJ1aWxkLXJlcXVlc3QtbWFwIHNldC1sb2ctbGV2ZWwhXSwgOnR5cGUgOmNsaiwgOnN5bSBmaWd3aGVlbC5zZXJ2ZXIuamV0dHktd2Vic29ja2V0fSB7OnZhci1zeW1zIFt3cmFwLWFzeW5jLWNvcnMgZml4LWluZGV4LW1pbWUtdHlwZSB3cmFwLWZpZ3doZWVsLWRlZmF1bHRzIGhhbmRsZS1maXJzdCBkZWZhdWx0LXN0YWNrIGRlZmF1bHQtb3B0aW9ucyByZXNvdXJjZS1yb290LWluZGV4IGRlZmF1bHQtaW5kZXgtaHRtbCBiZXN0LWd1ZXNzLXNjcmlwdC1wYXRoIHdyYXAtbm8tY2FjaGUgaW5kZXgtaHRtbCBub3QtZm91bmQgc3RhY2sgaGFuZGxlLWFzeW5jLWNvcnNdLCA6dHlwZSA6Y2xqLCA6c3ltIGZpZ3doZWVsLnNlcnZlci5yaW5nfSB7OnZhci1zeW1zIFt1bi1jbG9qdXJlLWVycm9yLWtleXdvcmRzIHN0ci1leGNlcnB0IGNsanMtbWlzc2luZy1yZXF1aXJlZC1ucz8gZW9mLXJlYWRlci1leD8gY2xqcy1hbmFseXNpcy1leD8gYWRkLWV4Y2VycHQgbWVzc2FnZSBkYXRhIGZpcnN0LWZpbGUtc291cmNlIGNvcnJlY3QtZmlsZS1wYXRoIGZpbGUtZXhjZXJwdCBibGFtZS1wb3MgbWFwLWtleXMgZXgtdHlwZSByZWxhdGl2aXplLWxvY2FsIHJvb3Qtc291cmNlLT5maWxlLWV4Y2VycHQgY2xqcy1mYWlsZWQtY29tcGlsaW5nPyBjbGotY29tcGlsZXItZXg/IHBhcnNlLWV4Y2VwdGlvbiBjbGpzLW5vLWZpbGUtZm9yLW5hbWVzcGFjZT8gcmVhZGVyLWV4PyBzb3VyY2UtZmlsZSBjbGotc3BlYy1lcnJvcj8gZXhjZXB0aW9uLXR5cGU/XSwgOnR5cGUgOmNsaiwgOnN5bSBmaWd3aGVlbC50b29scy5leGNlcHRpb25zfSB7OnZhci1zeW1zIFtnZXQtY29udGVudCBkaXNwbGF5LWV4Y2VwdGlvbiBzZXQtc3R5bGUhIGhlYWRpbmcgY2xlYXIgZXNjYXBlIGlubGluZS1lcnJvci1saW5lIHBhZC1saW5lLW51bWJlciBnZXQtZGF0YXNldCBmbGF0dGVuLWV4Y2VwdGlvbiBkaXNwbGF5LWhlYWRzLXVwIGJhZC1jb21waWxlLXNjcmVlbiBmb3JtYXQtbGluZSBmb3JtYXQtaW5saW5lLWVycm9yLWxpbmUgcGFkLWxpbmUtbnVtYmVycyBoZWFkcy11cC1vbmNsaWNrLWhhbmRsZXIgc2V0LWNvbnRlbnQhIHdhcm5pbmctZGF0YS0+ZGlzcGxheS1kYXRhIGFwcGVuZC13YXJuaW5nLW1lc3NhZ2UgZGlzcGxheS13YXJuaW5nIGZpbGUtc2VsZWN0b3ItZGl2IGRpc3BsYXktbG9hZGVkLXN0YXJ0IGVuc3VyZS1jb250YWluZXIgbm9kZSBleGNlcHRpb24tPmRpc3BsYXktZGF0YSBjbGpzLWxvZ28tc3ZnIHRpbWVvdXQqIGNsb3NlLWJhZC1jb21waWxlLXNjcmVlbiBmb3JtYXQtaW5saW5lLWVycm9yIGZvcm1hdC13YXJuaW5nLW1lc3NhZ2UgZGlzcGxheS1zeXN0ZW0td2FybmluZyBjbG9zZS1saW5rIGFuY2VzdG9yLW5vZGVzIGZsYXNoLWxvYWRlZF0sIDp0eXBlIDpjbGpzLCA6c3ltIGZpZ3doZWVsLnRvb2xzLmhlYWRzLXVwfSB7OnZhci1zeW1zIFtwcmV0dHktYmluZGluZ3MgcHJldHR5LWZuKiBwcHJpbnQgcHJldHR5LWNvbmRwIHByZXR0eS1xdW90ZSBtYXliZS1hIHByZXR0eS1saWJzcGVjIHByZXR0eS1tZXRob2QgcHJldHR5LWNvbmQtY2xhdXNlIGJsb2NrIHByZXR0eS1jb25kIHByZXR0eS1mbiBwcmV0dHktYXJyb3cgZGVmYXVsdC1zeW1ib2xzIGJ1aWxkLXN5bWJvbC1tYXAgcHJldHR5LXJlaWZ5IHByZXR0eS1sZXQgcHJldHR5LXR5cGUgcHJldHR5LWlmIHByZXR0eS1kZWZuIHByZXR0eS1ucyBwcmV0dHktaW1wbHMgbGlzdC1ncm91cCBwcmV0dHktY2FzZV0sIDp0eXBlIDpjbGpzLCA6c3ltIGZpcHAuY2xvanVyZX0gezp2YXItc3ltcyBbY3JlYXRlIGVtcHR5IHBvcGwgY29uanIgY29uamxyIGNvbmNhdF0sIDp0eXBlIDpjbGpzLCA6c3ltIGZpcHAuZGVxdWV9IHs6dmFyLXN5bXMgW3ByZXR0eS1jb2xsIHBwcmludF0sIDp0eXBlIDpjbGpzLCA6c3ltIGZpcHAuZWRufSB7OnZhci1zeW1zIFstZWRuIElFZG4gSU92ZXJyaWRlIG92ZXJyaWRlPyBlZG4gcmVjb3JkLT50YWdnZWRdLCA6dHlwZSA6Y2xqcywgOnN5bSBmaXBwLmVkbml6ZX0gezp2YXItc3ltcyBbc2VyaWFsaXplIGFubm90YXRlLXJpZ2h0cyB1cGRhdGUtcmlnaHQgYW5ub3RhdGUtYmVnaW5zIGZvcm1hdC1ub2RlcyBwcHJpbnQtZG9jdW1lbnRdLCA6dHlwZSA6Y2xqcywgOnN5bSBmaXBwLmVuZ2luZX0gezp2YXItc3ltcyBbYm9vbGVhbj8gZWRuPyB2YWx1ZS1vYmo/XSwgOnR5cGUgOmNsanMsIDpzeW0gZmlwcC51dGlsfSB7OnZhci1zeW1zIFt2aXNpdC1yZWNvcmQgdmlzaXQtbWV0YSB2aXNpdC1udW1iZXIgdmlzaXQtcGF0dGVybiB2aXNpdC11bmtub3duIElWaXNpdG9yIHZhbHVlLW1ldGEgdmlzaXQtc3ltYm9sIHZpc2l0LXNlcSB2aXNpdC1ib29sZWFuIHZpc2l0LXRhZ2dlZCB2aXNpdC1rZXl3b3JkIHZpc2l0LW1hcCB2aXNpdCogdmlzaXQtbmlsIHZpc2l0LWNoYXJhY3RlciB2aXNpdCB2aXNpdC1zdHJpbmcgdmlzaXQtdmFyIHZpc2l0LXNldCB2aXNpdC12ZWN0b3JdLCA6dHlwZSA6Y2xqcywgOnN5bSBmaXBwLnZpc2l0fSB7OnZhci1zeW1zIFtwcm9jZXNzLWhhbmRsZXIgcHJvY2Vzcy1wYXRocyBleHRyYWN0LXBhdGhzLWJ5LXR5cGUgY3JlYXRlZD8gd2F0Y2ghIHN0b3AhIGRlbGV0ZWQ/IHJlbW92ZS1kdXBsaWNhdGUtcGF0aHMgZmlsZT8gcmVtb3ZlLWNoaWxkcmVuLXBhdGhzIHByb2Nlc3MtY29udGV4dCBkaXJlY3Rvcnk/IG1vZGlmaWVkPyBjYXRjaC1lcnJvcnNdLCA6dHlwZSA6Y2xqLCA6c3ltIGhhd2suY29yZX0gezp2YXItc3ltcyBbc3RhbmRhcmQtd2F0Y2gtZXZlbnQta2luZHMgcG9sbGluZy13YXRjaGVyLWltcGwgYmFyYmFyeS13YXRjaC1ldmVudC1raW5kcyBzdG9wISBuZXctd2F0Y2hlciBiYXJiYXJ5LXdhdGNoZXItaW1wbCBzZW5zaXRpdml0eS13YXRjaC1ldmVudC1tb2RpZmllcnMgV2F0Y2hlciBqYXZhLXdhdGNoZXItaW1wbCB0YWtlISByZWdpc3RlciFdLCA6dHlwZSA6Y2xqLCA6c3ltIGhhd2sud2F0Y2hlcn0gezp2YXItc3ltcyBbbm9ybWFsaXplLWVsZW1lbnQgY29tcGlsZS1hdHRyLW1hcCByZW5kZXItaHRtbCBIdG1sUmVuZGVyZXIgY29tcGlsZS1odG1sXSwgOnR5cGUgOmNsaiwgOnN5bSBoaWNjdXAuY29tcGlsZXJ9IHs6dmFyLXN5bXMgW2h0bWwgaF0sIDp0eXBlIDpjbGosIDpzeW0gaGljY3VwLmNvcmV9IHs6dmFyLXN5bXMgW3dyYXAtYXR0cnMgZGVmZWxlbSBkZWZodG1sXSwgOnR5cGUgOmNsaiwgOnN5bSBoaWNjdXAuZGVmfSB7OnZhci1zeW1zIFt4aHRtbCBkb2N0eXBlIHhtbC1kZWNsYXJhdGlvbiBodG1sNCBpbmNsdWRlLWpzIGluY2x1ZGUtY3NzIGh0bWw1IHhodG1sLXRhZ10sIDp0eXBlIDpjbGosIDpzeW0gaGljY3VwLnBhZ2V9IHs6dmFyLXN5bXMgW1VSTEVuY29kZSAqZW5jb2RpbmcqIHdpdGgtYmFzZS11cmwgdG8tc3RyIHdpdGgtZW5jb2RpbmcgKmJhc2UtdXJsKiBhcy1zdHIgdXJsLWVuY29kZSBUb1N0cmluZyBUb1VSSSAqaHRtbC1tb2RlKiBlc2NhcGUtaHRtbCB0by11cmkgdXJsXSwgOnR5cGUgOmNsaiwgOnN5bSBoaWNjdXAudXRpbH0gezp2YXItc3ltcyBbbGluZS0+c2VnbWVudHMgdGFnLT5oaWNjdXAgbGluZS0+aHRtbCBjb2RlLT5oaWNjdXAgc3BsaXQtbGluZXMgY29kZS0+aHRtbCBsaW5lLT5oaWNjdXAgdGFncy1mb3ItbGluZS0+aGljY3VwIHRhZy0+aHRtbCBlc2NhcGUtaHRtbC1zdHIgdGFncy1mb3ItbGluZS0+aHRtbCBzdHJ1Y3R1cml6ZS1oaWNjdXAgZXNjYXBlLWh0bWwtY2hhciBwYXJzZS1saW5lc10sIDp0eXBlIDpjbGosIDpzeW0gaHRtbC1zb3VwLmNvcmV9IHs6dmFyLXN5bXMgW2xpbmUtPnNlZ21lbnRzIHRhZy0+aGljY3VwIGxpbmUtPmh0bWwgY29kZS0+aGljY3VwIHNwbGl0LWxpbmVzIGNvZGUtPmh0bWwgbGluZS0+aGljY3VwIHRhZ3MtZm9yLWxpbmUtPmhpY2N1cCB0YWctPmh0bWwgZXNjYXBlLWh0bWwtc3RyIHRhZ3MtZm9yLWxpbmUtPmh0bWwgc3RydWN0dXJpemUtaGljY3VwIGVzY2FwZS1odG1sLWNoYXIgcGFyc2UtbGluZXNdLCA6dHlwZSA6Y2xqcywgOnN5bSBodG1sLXNvdXAuY29yZX0gezp2YXItc3ltcyBba2FybWEga2FybWE/IHRlc3QtdmFyLXJlc3VsdCB0ZXN0LXZhci10aW1lLXN0YXJ0IHN0YXJ0XSwgOnR5cGUgOmNsanMsIDpzeW0gangucmVwb3J0ZXIua2FybWF9IHs6dmFyLXN5bXMgW2Nhbi1yZWRvPyBhdG9tPyBnZXQtY3VycmVudC1zdGF0ZSB1bmRvISByZWRvISBjYW4tdW5kbz8gZ2V0LW5leHQtc3RhdGUgdXBkYXRlLWN1cnNvci1wb3NpdGlvbiEgdXBkYXRlLWVkaXQtaGlzdG9yeSEgY3JlYXRlLWVkaXQtaGlzdG9yeSBnZXQtcHJldmlvdXMtc3RhdGVdLCA6dHlwZSA6Y2xqcywgOnN5bSBtaXN0YWtlcy13ZXJlLW1hZGUuY29yZX0gezp2YXItc3ltcyBbd2F0Y2gtYmxvY2tpbmcgc3RvcCB3YXRjaF0sIDp0eXBlIDpjbGosIDpzeW0gbmV4dGpvdXJuYWwuYmVob2xkZXJ9IHs6dmFyLXN5bXMgW3JlYWQrc3RyaW5nIGJvb2w/ICpzdXBwcmVzcy1yZWFkKiAqZGVmYXVsdC1kYXRhLXJlYWRlci1mbiogcmVhZCBkZWZhdWx0LWRhdGEtcmVhZGVycyAqZGF0YS1yZWFkZXJzKiAqcmVhZC1kZWxpbSogcmVzb2x2ZS1zeW1ib2wgKmFsaWFzLW1hcCogKndyYXAtdmFsdWUtYW5kLWFkZC1tZXRhZGF0YT8qIHJlYWQtcmVnZXggc2IgcmVhZC1zdHJpbmcgbWFwLWZ1bmNdLCA6dHlwZSA6Y2xqcywgOnN5bSBvYWtjbGpzLnRvb2xzLnJlYWRlcn0gezp2YXItc3ltcyBbbWF0Y2gtbnVtYmVyIHNraXAtbGluZSBpbnQtcGF0dGVybiByZWFkLWNvbW1lbnQgcGFyc2Utc3ltYm9sIG51bWJlci1saXRlcmFsPyByZWFkLXBhc3QgZmxvYXQtcGF0dGVybiBtYXRjaGVzPyB0aHJvd2luZy1yZWFkZXIgcmF0aW8tcGF0dGVybl0sIDp0eXBlIDpjbGpzLCA6c3ltIG9ha2NsanMudG9vbHMucmVhZGVyLmltcGwuY29tbW9uc30gezp2YXItc3ltcyBbdGhyb3ctYmFkLWRpc3BhdGNoIHRocm93LWludmFsaWQtdW5pY29kZS1lc2NhcGUgdGhyb3ctZHVwLWtleXMgdGhyb3ctYmFkLW5zIHRocm93LXVua25vd24tcmVhZGVyLXRhZyB0aHJvdy1lb2YtYXQtZGlzcGF0Y2ggdGhyb3ctYmFkLW1ldGFkYXRhLXRhcmdldCB0aHJvdy1pbnZhbGlkLW51bWJlciByZWFkZXItZXJyb3IgdGhyb3ctaW52YWxpZC11bmljb2RlLWxpdGVyYWwgdGhyb3ctbnMtbWFwLW5vLW1hcCB0aHJvdy11bnN1cHBvcnRlZC1jaGFyYWN0ZXIgdGhyb3ctZmVhdHVyZS1ub3Qta2V5d29yZCB0aHJvdy1lb2YtZGVsaW1pdGVkIHRocm93LWVvZi1pbi1jaGFyYWN0ZXIgdGhyb3ctYmFkLWNoYXIgZW9mLWVycm9yIHRocm93LWJhZC1tZXRhZGF0YSB0aHJvdy1lb2YtcmVhZGluZyB0aHJvdy1lb2YtZXJyb3IgaWxsZWdhbC1hcmctZXJyb3IgdGhyb3ctaW52YWxpZC1vY3RhbC1sZW4gdGhyb3ctaW52YWxpZC11bmljb2RlLWRpZ2l0IHRocm93LWludmFsaWQtdW5pY29kZS1kaWdpdC1pbi10b2tlbiB0aHJvdy1pbnZhbGlkLXVuaWNvZGUtbGVuIHRocm93LXNpbmdsZS1jb2xvbiB0aHJvdy1vZGQtbWFwIHRocm93LWJhZC1vY3RhbC1udW1iZXIgdGhyb3ctYmFkLXJlYWRlci10YWcgdGhyb3ctdW5tYXRjaC1kZWxpbWl0ZXIgdGhyb3ctaW52YWxpZC1jaGFyYWN0ZXItbGl0ZXJhbCB0aHJvdy1pbnZhbGlkLXVuaWNvZGUtY2hhciB0aHJvdy1iYWQtZXNjYXBlLWNoYXIgdGhyb3ctbm8tZGlzcGF0Y2ggdGhyb3ctZW9mLWF0LXN0YXJ0IHRocm93LWludmFsaWRdLCA6dHlwZSA6Y2xqcywgOnN5bSBvYWtjbGpzLnRvb2xzLnJlYWRlci5pbXBsLmVycm9yc30gezp2YXItc3ltcyBbaW5zcGVjdF0sIDp0eXBlIDpjbGpzLCA6c3ltIG9ha2NsanMudG9vbHMucmVhZGVyLmltcGwuaW5zcGVjdH0gezp2YXItc3ltcyBbcmVhZGVyLWNvbmRpdGlvbmFsIHdoaXRlc3BhY2U/IGNoYXItY29kZSBsYXN0LWlkIGNoYXIgbnVtZXJpYz8gc2Vjb25kJyBkZXN1Z2FyLW1ldGEgbmV4dC1pZCBleC1pbmZvPyByZWFkZXItY29uZGl0aW9uYWw/IG5ld2xpbmU/IG5hbWVzcGFjZS1rZXlzIHdzLXJ4XSwgOnR5cGUgOmNsanMsIDpzeW0gb2FrY2xqcy50b29scy5yZWFkZXIuaW1wbC51dGlsc30gezp2YXItc3ltcyBbbG9nLXNvdXJjZV0sIDp0eXBlIDpjbGosIDpzeW0gb2FrY2xqcy50b29scy5yZWFkZXIucmVhZGVyLXR5cGVzfSB7OnZhci1zeW1zIFtpbmRleGluZy1wdXNoLWJhY2stcmVhZGVyIGxvZy1zb3VyY2UqIG1lcmdlLW1ldGEgUmVhZGVyIHNvdXJjZS1sb2dnaW5nLXB1c2gtYmFjay1yZWFkZXIgdW5yZWFkIHBlZWstY2hhciBJUHVzaGJhY2tSZWFkZXIgaW5kZXhpbmctcmVhZGVyPyBzdHJpbmctcmVhZGVyIHJlYWQtY2hhciBnZXQtY29sdW1uLW51bWJlciBnZXQtZmlsZS1uYW1lIHJlYWQtbGluZSBzdHJpbmctcHVzaC1iYWNrLXJlYWRlciBsaW5lLXN0YXJ0PyBzb3VyY2UtbG9nZ2luZy1yZWFkZXI/IEluZGV4aW5nUmVhZGVyIG5vZGUtcmVhZGFibGUtcHVzaC1iYWNrLXJlYWRlciBnZXQtbGluZS1udW1iZXJdLCA6dHlwZSA6Y2xqcywgOnN5bSBvYWtjbGpzLnRvb2xzLnJlYWRlci5yZWFkZXItdHlwZXN9IHs6dmFyLXN5bXMgW3JlYWQrc3RyaW5nICpyZWFkLWV2YWwqICpzdXBwcmVzcy1yZWFkKiAqZGVmYXVsdC1kYXRhLXJlYWRlci1mbiogcmVhZCByZWFkLXN5bWJvbCBkZWZhdWx0LWRhdGEtcmVhZGVycyAqZGF0YS1yZWFkZXJzKiAqcmVhZC1kZWxpbSogcmVzb2x2ZS1zeW1ib2wgKmFsaWFzLW1hcCogKndyYXAtdmFsdWUtYW5kLWFkZC1tZXRhZGF0YT8qIHJlYWQtcmVnZXggc3ludGF4LXF1b3RlIHJlYWQtc3RyaW5nIG1hcC1mdW5jXSwgOnR5cGUgOmNsaiwgOnN5bSBvYWtjbG9qdXJlLnRvb2xzLnJlYWRlcn0gezp2YXItc3ltcyBbZGVmYXVsdC11dWlkLXJlYWRlciB2YWxpZGF0ZWQgb2FrY2xvanVyZS50b29scy5yZWFkZXIuZGVmYXVsdF9kYXRhX3JlYWRlcnMucHJveHkkamF2YS5sYW5nLlRocmVhZExvY2FsJGZmMTkyNzRhIHJlYWQtaW5zdGFudC10aW1lc3RhbXAgcmVhZC1pbnN0YW50LWNhbGVuZGFyIHJlYWQtaW5zdGFudC1kYXRlIHBhcnNlLXRpbWVzdGFtcF0sIDp0eXBlIDpjbGosIDpzeW0gb2FrY2xvanVyZS50b29scy5yZWFkZXIuZGVmYXVsdC1kYXRhLXJlYWRlcnN9IHs6dmFyLXN5bXMgW21hdGNoLW51bWJlciBza2lwLWxpbmUgaW50LXBhdHRlcm4gcmVhZC1jb21tZW50IHBhcnNlLXN5bWJvbCBudW1iZXItbGl0ZXJhbD8gcmVhZC1wYXN0IGZsb2F0LXBhdHRlcm4gdGhyb3dpbmctcmVhZGVyIHJhdGlvLXBhdHRlcm5dLCA6dHlwZSA6Y2xqLCA6c3ltIG9ha2Nsb2p1cmUudG9vbHMucmVhZGVyLmltcGwuY29tbW9uc30gezp2YXItc3ltcyBbdGhyb3ctYmFkLWRpc3BhdGNoIHRocm93LWludmFsaWQtdW5pY29kZS1lc2NhcGUgdGhyb3ctYmFkLW5zIHRocm93LXVua25vd24tcmVhZGVyLXRhZyB0aHJvdy1lb2YtYXQtZGlzcGF0Y2ggdGhyb3ctYmFkLW1ldGFkYXRhLXRhcmdldCB0aHJvdy1pbnZhbGlkLW51bWJlciByZWFkZXItZXJyb3IgdGhyb3ctaW52YWxpZC11bmljb2RlLWxpdGVyYWwgdGhyb3ctbnMtbWFwLW5vLW1hcCB0aHJvdy11bnN1cHBvcnRlZC1jaGFyYWN0ZXIgdGhyb3ctZmVhdHVyZS1ub3Qta2V5d29yZCB0aHJvdy1lb2YtZGVsaW1pdGVkIHRocm93LWVvZi1pbi1jaGFyYWN0ZXIgdGhyb3ctYmFkLWNoYXIgZW9mLWVycm9yIHRocm93LWJhZC1tZXRhZGF0YSB0aHJvdy1lb2YtcmVhZGluZyB0aHJvdy1lb2YtZXJyb3IgaWxsZWdhbC1hcmctZXJyb3IgdGhyb3ctaW52YWxpZC1vY3RhbC1sZW4gdGhyb3ctaW52YWxpZC11bmljb2RlLWRpZ2l0IHRocm93LWludmFsaWQtdW5pY29kZS1kaWdpdC1pbi10b2tlbiB0aHJvdy1pbnZhbGlkLXVuaWNvZGUtbGVuIHRocm93LXNpbmdsZS1jb2xvbiB0aHJvdy1vZGQtbWFwIHRocm93LWJhZC1vY3RhbC1udW1iZXIgdGhyb3ctYmFkLXJlYWRlci10YWcgdGhyb3ctdW5tYXRjaC1kZWxpbWl0ZXIgdGhyb3ctaW52YWxpZC1jaGFyYWN0ZXItbGl0ZXJhbCB0aHJvdy1pbnZhbGlkLXVuaWNvZGUtY2hhciB0aHJvdy1iYWQtZXNjYXBlLWNoYXIgdGhyb3ctbm8tZGlzcGF0Y2ggdGhyb3ctZW9mLWF0LXN0YXJ0IHRocm93LWludmFsaWRdLCA6dHlwZSA6Y2xqLCA6c3ltIG9ha2Nsb2p1cmUudG9vbHMucmVhZGVyLmltcGwuZXJyb3JzfSB7OnZhci1zeW1zIFtpbnNwZWN0IGluc3BlY3QqXSwgOnR5cGUgOmNsaiwgOnN5bSBvYWtjbG9qdXJlLnRvb2xzLnJlYWRlci5pbXBsLmluc3BlY3R9IHs6dmFyLXN5bXMgW3doaXRlc3BhY2U/IGNoYXIgbnVtZXJpYz8gbWFrZS12YXIgc2Vjb25kJyBkZXN1Z2FyLW1ldGEgPD1jbG9qdXJlLTEtNy1hbHBoYTUgZXgtaW5mbz8gbmV3bGluZT8gbmFtZXNwYWNlLWtleXMgY29tcGlsZS13aGVuXSwgOnR5cGUgOmNsaiwgOnN5bSBvYWtjbG9qdXJlLnRvb2xzLnJlYWRlci5pbXBsLnV0aWxzfSB7OnZhci1zeW1zIFtSZWFkZXJDb2VyY2VyIGluZGV4aW5nLXB1c2gtYmFjay1yZWFkZXIgbG9nLXNvdXJjZSogbWVyZ2UtbWV0YSAtPlN0cmluZ1JlYWRlciB0by1wYnIgdG8tcmRyIFJlYWRlciBzb3VyY2UtbG9nZ2luZy1wdXNoLWJhY2stcmVhZGVyIHVucmVhZCBwZWVrLWNoYXIgcHVzaC1iYWNrLXJlYWRlciBJUHVzaGJhY2tSZWFkZXIgaW5kZXhpbmctcmVhZGVyPyBzdHJpbmctcmVhZGVyIHJlYWQtY2hhciBnZXQtY29sdW1uLW51bWJlciBnZXQtZmlsZS1uYW1lIHJlYWQtbGluZSAtPlB1c2hiYWNrUmVhZGVyIFB1c2hiYWNrUmVhZGVyQ29lcmNlciBzdHJpbmctcHVzaC1iYWNrLXJlYWRlciBsb2ctc291cmNlIC0+U291cmNlTG9nZ2luZ1B1c2hiYWNrUmVhZGVyIC0+SW5wdXRTdHJlYW1SZWFkZXIgbGluZS1zdGFydD8gaW5wdXQtc3RyZWFtLXB1c2gtYmFjay1yZWFkZXIgc291cmNlLWxvZ2dpbmctcmVhZGVyPyBJbmRleGluZ1JlYWRlciBnZXQtbGluZS1udW1iZXIgaW5wdXQtc3RyZWFtLXJlYWRlciAtPkluZGV4aW5nUHVzaGJhY2tSZWFkZXJdLCA6dHlwZSA6Y2xqLCA6c3ltIG9ha2Nsb2p1cmUudG9vbHMucmVhZGVyLnJlYWRlci10eXBlc30gezp2YXItc3ltcyBbcnVsZXMgZW1wdHktc2Vzc2lvbiBzZXNzaW9uXSwgOnR5cGUgOmNsanMsIDpzeW0gb2RveWxlLmV4YW1wbGVzfSB7OnZhci1zeW1zIFtvbi13aW5kb3ctcmVzaXplIGZhY3RzIHJ1bGVzLTEyIHRlc3QtZGVyaXZlZC1mYWN0LXdpdGgtd2luZG93LWRpbWVuc2lvbnMhIHJ1bGVzLTUgdGVzdC1kZXJpdmVkLWZhY3QhIHJ1bGUgKnNlc3Npb24gcnVsZXMtNCB3aXRoaW4/IHJ1bGVzLTMgLT5jaGFyYWN0ZXItcnVsZSBydWxlcy02IHJ1bGVzLTEgcnVsZXMtMl0sIDp0eXBlIDpjbGpzLCA6c3ltIG9kb3lsZS5yZWFkbWV9IHs6dmFyLXN5bXMgW2NvbnRhaW5zPyBydWxlc2V0IG1hcC0+TWVtb3J5Tm9kZSAtPkpvaW5Ob2RlIC0+cnVsZSBtYXAtPkZhY3QgLT5CaW5kaW5nIG1hcC0+QWxwaGFOb2RlIC0+RmFjdCBmaXJlLXJ1bGVzIGluc2VydCAqbWF0Y2gqIC0+UnVsZSAtPkFscGhhTm9kZSBhZGQtcnVsZSByZW1vdmUtcnVsZSAtPlNlc3Npb24gLT5Db25kaXRpb24gLT5zZXNzaW9uIHJlc2V0ISByZXRyYWN0ISBtYXAtPkNvbmRpdGlvbiAtPk1hdGNoIG1hcC0+UnVsZSBpbnNlcnQhICpzZXNzaW9uKiBtYXAtPk1hdGNoIG1hcC0+U2Vzc2lvbiAtPk1lbW9yeU5vZGUgcmV0cmFjdCBtYXAtPlRva2VuIG1hcC0+Sm9pbk5vZGUgbWFwLT5CaW5kaW5nIHF1ZXJ5LWFsbCBwYXJzZSB3cmFwLXJ1bGUgLT5Ub2tlbl0sIDp0eXBlIDpjbGosIDpzeW0gb2RveWxlLnJ1bGVzfSB7OnZhci1zeW1zIFtjb250YWlucz8gLT5ydWxlIGZpcmUtcnVsZXMgaW5zZXJ0ICptYXRjaCogYWRkLXJ1bGUgcmVtb3ZlLXJ1bGUgLT5zZXNzaW9uIHJlc2V0ISByZXRyYWN0ISBpbnNlcnQhICpzZXNzaW9uKiByZXRyYWN0IHF1ZXJ5LWFsbCBwYXJzZSB3cmFwLXJ1bGVdLCA6dHlwZSA6Y2xqcywgOnN5bSBvZG95bGUucnVsZXN9IHs6dmFyLXN5bXMgW2F0b20gcnVsZXNldCByZWFjdGl2ZSBwcm9wICptYXRjaGVzKl0sIDp0eXBlIDpjbGosIDpzeW0gb2RveWxlLnJ1bX0gezp2YXItc3ltcyBbKm1hdGNoZXMqIGF0b20gcHJvcCByZWFjdGl2ZV0sIDp0eXBlIDpjbGpzLCA6c3ltIG9kb3lsZS5ydW19IHs6dmFyLXN5bXMgW2Fzc2lnbi1yZWFjdC1jaGVja3N1bSBNT0QgYWRsZXIzMl0sIDp0eXBlIDpjbGosIDpzeW0gb20uY2hlY2tzdW1zfSB7OnZhci1zeW1zIFtmb3JtIGF1ZGlvIGxvd2VyLWNhc2UtYXR0cnMgaW5wdXQgbWVudWl0ZW0gcmFkaWFsR3JhZGllbnQgYmFzZSBoMSBlbWJlZCBoMyBib2R5IG5vcm1hbGl6ZS1zdHlsZXMhIGtleWdlbiBnZW4tdGFnLWZuIHByb2dyZXNzIG1haW4gY2l0ZSByZWN0IHBvbHlsaW5lIG1hcCBvYmplY3QgaSBwIG5hdiBydWJ5IGEgbWVudSBibG9ja3F1b3RlIGltZyB0ZXh0IHNwYW4gdHJhY2sgZGF0YSB1IGRsIHNlbGVjdCBwb2x5Z29uIHBhdHRlcm4gaHRtbCB0aGVhZCBwYXRoIGRlbCBmaWVsZHNldCBhc2lkZSBmaWd1cmUgbWFwLT5UZXh0IGZpZ2NhcHRpb24gbWFzayBxIHRhZ3MgYmRpIHZpZGVvIGFkZHJlc3MgY2FwdGlvbiBjb250YWluZXItdGFnPyBkZCBjYW1lbC0+a2ViYWItY2FzZSBycCBociBtZXRhIHRib2R5IHRhYmxlIHByZSBlbGVtZW50IC0+UmVhY3RFbXB0eSB1bCBzdXAgZGZuIHN1YiBjb2VyY2UtYXR0ci1rZXkgbWFyayBzY3JpcHQgYmlnIGJ1dHRvbiB3YnIgc3Ryb25nIC0+RWxlbWVudCBsaSBkdCB0ZCB0ciBtYXAtPkVsZW1lbnQgY2lyY2xlIGNhbWVsLT5jb2xvbi1iZXR3ZWVuIHNlY3Rpb24gdGggdGltZSBvcHRncm91cCBhcHBlbmQhIGlmcmFtZSBsZWdlbmQgZW0ga2JkIGFydGljbGUgY2xpcFBhdGggY29sb24tYmV0d2Vlbi1hdHRycyBhYmJyIHRleHQtbm9kZSByZWFjdC10ZXh0LW5vZGUgLT5UZXh0IHNvdXJjZSBvdXRwdXQgcmVuZGVyLWF0dHJpYnV0ZSEgaGVhZGVyIGRhdGFsaXN0IHRmb290IHMgaW5zIG5vZGUgZm9vdGVyIHRpdGxlIGtlYmFiLWNhc2UtYXR0cnMgaDUgY2FudmFzIHBhcmFtIHJlbmRlci10by1zdHIgZGl2IG9wdGlvbiBzdW1tYXJ5IHNhbXAgc21hbGwgc3R5bGUgdGV4dGFyZWEgaDQgaGVhZCBnIG1hcC0+UmVhY3RFbXB0eSBnZW4tYWxsLXRhZ3Mgc3RvcCB2YXIgdHNwYW4gb2wgZGV0YWlscyByZW5kZXItdW5lc2NhcGVkLWh0bWwhIHJlbmRlci1zdHlsZXMhIGxpbmUgY29sIGxhYmVsIHBpY3R1cmUgcnQgcmVuZGVyLWVsZW1lbnQhIGg2IGxpbmsga2V5LWVzY2FwZS1sb29rdXAgZGVmcyBlc2NhcGUtaHRtbCBzdXBwb3J0ZWQtYXR0cnMgY2FtZWwtPm90aGVyLWNhc2UgY29sZ3JvdXAgbWV0ZXIgYmRvIGIgc3ZnIGVsbGlwc2UgbWFwLT5SZWFjdFRleHQgcmVuZGVyLXhtbC1hdHRyaWJ1dGUhIHJlbmRlci1hdHRyLW1hcCEgY29kZSBkaWFsb2cgbGluZWFyR3JhZGllbnQgLT5SZWFjdFRleHQgbm9zY3JpcHQgbm8tc3VmZml4IGgyIGFyZWEgYnIgY3JlYXRlLWVsZW1lbnRdLCA6dHlwZSA6Y2xqLCA6c3ltIG9tLmRvbX0gezp2YXItc3ltcyBbaW5kZXhlcyBxdWV1ZSEgaW5pdExvY2FsU3RhdGUgcXVldWUtc2VuZHMhIGNvbXBvbmVudFdpbGxNb3VudCBzZW5kISBjb21wb25lbnREaWRVcGRhdGUgZHJvcC1jb21wb25lbnQhIElSZWFjdExpZmVjeWNsZSAtcmVuZGVyLXRvLXN0cmluZyBJSW5kZXhlciBpbmRleC1jb21wb25lbnQhIHJlY29uY2lsZSEgc2NoZWR1bGUtcmVuZGVyISBJUmVjb25jaWxlciBJUmVhY3RET01FbGVtZW50IHNjaGVkdWxlLXNlbmRzISBiYXNpcy10IGNvbXBvbmVudFdpbGxVbm1vdW50IElSZWFjdENvbXBvbmVudCBjb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzIGtleS0+Y29tcG9uZW50cyBhZGQtcm9vdCEgLXJlbmRlciBpbmRleC1yb290IHNob3VsZENvbXBvbmVudFVwZGF0ZSByZW5kZXIgY29tcG9uZW50V2lsbFVwZGF0ZSByZWYtZm9yIHJlaW5kZXghIHJlbW92ZS1yb290ISBjb21wb25lbnREaWRNb3VudF0sIDp0eXBlIDpjbGosIDpzeW0gb20ubmV4dC5wcm90b2NvbHN9IHs6dmFyLXN5bXMgW2Jhc2U2NC1lbmNvZGVdLCA6dHlwZSA6Y2xqLCA6c3ltIG9yZy5odHRwa2l0LmVuY29kZX0gezp2YXItc3ltcyBbYXMtY2hhbm5lbCBvbi1yZWNlaXZlIHdlYnNvY2tldC1oYW5kc2hha2UtY2hlY2sgYWNjZXB0IHJ1bi1zZXJ2ZXIgc2VuZCEgc2VydmVyLXN0b3AhIHNlbmQtd2Vic29ja2V0LWhhbmRzaGFrZSEgb24tY2xvc2Ugb24tcGluZyBzZW5kLWNoZWNrZWQtd2Vic29ja2V0LWhhbmRzaGFrZSEgd2l0aC1jaGFubmVsIENoYW5uZWwgY2xvc2Ugc2VydmVyLXBvcnQgc2VydmVyLXN0YXR1cyBzZWMtd2Vic29ja2V0LWFjY2VwdCB3ZWJzb2NrZXQ/IElIdHRwU2VydmVyIG9wZW4/XSwgOnR5cGUgOmNsaiwgOnN5bSBvcmcuaHR0cGtpdC5zZXJ2ZXJ9IHs6dmFyLXN5bXMgW2NyZWF0ZS1jb25zb2xlLWhpc3RvcnkgZ2V0LWNvbnNvbGUtc3RhcnQgdXBkYXRlLWNvbnNvbGUtc3RhcnQhIHVwZGF0ZS1jb25zb2xlLWhpc3RvcnkhIGdldC1wcmV2aW91cy1saW5lIGdldC1uZXh0LWxpbmUgdXAhIGRvd24hXSwgOnR5cGUgOmNsanMsIDpzeW0gcGFyZW4tc291cC5jb25zb2xlfSB7OnZhci1zeW1zIFtjYW4tdW5kbyBzaG93LWVycm9yLW1lc3NhZ2UhIGZvY3VzZWQtdGV4dCBzZWxlY3RlZC10ZXh0IGNhbi1yZWRvPyBjYW4tcmVkbyByYWluYm93LWRlbGltaXRlcnMgdXAhIHJlZnJlc2ghIHVuZG8hIHJlZnJlc2gtY3Vyc29yLXBvc2l0aW9uISBrZXktbmFtZT8gZXZhbCBjaGFubmVsPyBjcmVhdGUtZWRpdG9yIGtleS1jb2RlIHJlZG8hIHRhYiEgdHJhbnNpZW50LW1hcD8gcmVmcmVzaC1jb250ZW50LWVsZW1lbnQhIGVsZW0/IGVudGVyISBhcHBlbmQtdGV4dCEgbGluZS1udW1iZXJzIHVwZGF0ZS1oaWdobGlnaHQhIGluaXQgY2FuLXVuZG8/IHJlZnJlc2gtY29udGVudCEgcmVkbyBkZWJvdW5jZS1mdW5jdGlvbiByZWZyZXNoLWluc3RhcmVwbCEgZWRpdC1hbmQtcmVmcmVzaCEgcmFpbmJvdy1jb3VudCB1cGRhdGUtY3Vyc29yLXBvc2l0aW9uISBpbml0LXN0YXRlIGV2YWwhIGFkZC1wYXJpbmZlci1hZnRlci1jb25zb2xlLXN0YXJ0IHJlZnJlc2gtbnVtYmVycyEgcmVmcmVzaC1hZnRlci1jdXQtcGFzdGUhIHJlZnJlc2gtYWZ0ZXIta2V5LWV2ZW50ISBhZGQtbmV3bGluZSB1cGRhdGUtZWRpdC1oaXN0b3J5ISByZWZyZXNoLWNvbnNvbGUtY29udGVudCEgcmVmcmVzaC1lcnJvcnMtYW5kLWRlbGltaXRlcnMhIGFwcGVuZC10ZXh0IHByZXZlbnQtZGVmYXVsdD8gaW5pdGlhbGl6ZSEgaW5pdC1hbGwgYWRkLXBhcmluZmVyIHVuZG8gb2JqPyBkb3duISBhZGQtZXZlbnQtbGlzdGVuZXJzISByZXNldC1lZGl0LWhpc3RvcnkhIGhpZGUtZXJyb3ItbWVzc2FnZXMhIEVkaXRvcl0sIDp0eXBlIDpjbGpzLCA6c3ltIHBhcmVuLXNvdXAuY29yZX0gezp2YXItc3ltcyBbdG9wLWxldmVsPyBnZXQtc2VsZWN0aW9uIGdldC1jdXJzb3ItcG9zaXRpb24gdGV4dC1ub2RlPyBnZXQtZm9jdXNlZC1mb3JtIGdldC1mb2N1c2VkLXRvcC1sZXZlbCBnZXQtcGFyZW50IGNvbGwtbm9kZT8gZ2V0LW5lYXJlc3QtbnMgaW5zZXJ0LXRleHQhIGdldC1jb21wbGV0aW9uLWluZm8gc2V0LWN1cnNvci1wb3NpdGlvbiEgZ2V0LWZvY3VzZWQtZWxlbSBlcnJvci1ub2RlPyBnZXQtY29tcGxldGlvbi1jb250ZXh0IGNvbW1vbi1hbmNlc3RvciBnZXQtcGFyZW50cyBub2RlPyBzY3JvbGwtdG8tbmVhcmVzdC1lbGVtXSwgOnR5cGUgOmNsanMsIDpzeW0gcGFyZW4tc291cC5kb219IHs6dmFyLXN5bXMgWyp3ZWItd29ya2VyLXBhdGgqIGZvcm0tPnNlcmlhbGl6YWJsZSByZXN1bHRzLT5odG1sIHVzZS13ZWItd29ya2VyISBlbGVtPyBjb2xsZWN0aW9uLT5jb250ZW50IHRydW5jYXRlIGNyZWF0ZS1jb21waWxlci1mbiBnZXQtY29sbGVjdGlvbnMgZWxlbXMtPmxvY2F0aW9uc10sIDp0eXBlIDpjbGpzLCA6c3ltIHBhcmVuLXNvdXAuaW5zdGFyZXBsfSB7OnZhci1zeW1zIFtuZXh0LWVpZCByYW5kb20tbWFuIHBlb3BsZSBwZW9wbGUyMGtdLCA6dHlwZSA6Y2xqcywgOnN5bSBwZW9wbGUuY29yZX0gezp2YXItc3ltcyBbc2NoZW1hIGluaXQgaW5pdGlhbC1kYiBydW5dLCA6dHlwZSA6Y2xqcywgOnN5bSBwZW9wbGUuZGF0YXNjcmlwdH0gezp2YXItc3ltcyBbaW5pdGlhbC1zZXNzaW9uIHF1ZXJ5IHJ1bl0sIDp0eXBlIDpjbGpzLCA6c3ltIHBlb3BsZS5vZG95bGV9IHs6dmFyLXN5bXMgW3JpbmcuYWRhcHRlci5qZXR0eS5wcm94eSRvcmcuZWNsaXBzZS5qZXR0eS5zZXJ2ZXIuaGFuZGxlci5BYnN0cmFjdEhhbmRsZXIkZmYxOTI3NGEgcnVuLWpldHR5IHJpbmcuYWRhcHRlci5qZXR0eS5wcm94eSRqYXZhLmxhbmcuT2JqZWN0JEFzeW5jTGlzdGVuZXIkYmFmN2UwYThdLCA6dHlwZSA6Y2xqLCA6c3ltIHJpbmcuYWRhcHRlci5qZXR0eX0gezp2YXItc3ltcyBbU3RyZWFtYWJsZVJlc3BvbnNlQm9keSB3cml0ZS1ib2R5LXRvLXN0cmVhbV0sIDp0eXBlIDpjbGosIDpzeW0gcmluZy5jb3JlLnByb3RvY29sc30gezp2YXItc3ltcyBbYWJzb2x1dGUtcmVkaXJlY3RzLXJlc3BvbnNlIHdyYXAtYWJzb2x1dGUtcmVkaXJlY3RzXSwgOnR5cGUgOmNsaiwgOnN5bSByaW5nLm1pZGRsZXdhcmUuYWJzb2x1dGUtcmVkaXJlY3RzfSB7OnZhci1zeW1zIFt3cmFwLWFudGktZm9yZ2VyeSAqYW50aS1mb3JnZXJ5LXRva2VuKl0sIDp0eXBlIDpjbGosIDpzeW0gcmluZy5taWRkbGV3YXJlLmFudGktZm9yZ2VyeX0gezp2YXItc3ltcyBbLT5TZXNzaW9uU3RyYXRlZ3kgc2Vzc2lvbi1zdHJhdGVneV0sIDp0eXBlIDpjbGosIDpzeW0gcmluZy5taWRkbGV3YXJlLmFudGktZm9yZ2VyeS5zZXNzaW9ufSB7OnZhci1zeW1zIFtnZXQtdG9rZW4gU3RyYXRlZ3kgd3JpdGUtdG9rZW4gdmFsaWQtdG9rZW4/XSwgOnR5cGUgOmNsaiwgOnN5bSByaW5nLm1pZGRsZXdhcmUuYW50aS1mb3JnZXJ5LnN0cmF0ZWd5fSB7OnZhci1zeW1zIFt3cmFwLWNvbnRlbnQtdHlwZSBjb250ZW50LXR5cGUtcmVzcG9uc2VdLCA6dHlwZSA6Y2xqLCA6c3ltIHJpbmcubWlkZGxld2FyZS5jb250ZW50LXR5cGV9IHs6dmFyLXN5bXMgW0Nvb2tpZURhdGVUaW1lIHJmYzgyMi1mb3JtYXQgY29va2llcy1yZXNwb25zZSAtPnNlY29uZHMgd3JhcC1jb29raWVzIGNvb2tpZXMtcmVxdWVzdCBDb29raWVJbnRlcnZhbF0sIDp0eXBlIDpjbGosIDpzeW0gcmluZy5taWRkbGV3YXJlLmNvb2tpZXN9IHs6dmFyLXN5bXMgW3ByZWZsaWdodD8gbm9ybWFsaXplLWhlYWRlcnMgaGVhZGVyLW5hbWUgbG93ZXItY2FzZS1zZXQgYWxsb3ctbWV0aG9kPyBhbGxvdy1yZXF1ZXN0PyBwcmVmbGlnaHQtY29tcGxldGUtcmVzcG9uc2Ugbm9ybWFsaXplLWNvbmZpZyB3cmFwLWNvcnMgYWxsb3ctcHJlZmxpZ2h0LWhlYWRlcnM/IHBhcnNlLWhlYWRlcnMgYWRkLWhlYWRlcnMgYWRkLWFjY2Vzcy1jb250cm9sIGhhbmRsZS1jb3JzIG9yaWdpbiBhZGQtYWxsb3dlZC1oZWFkZXJzXSwgOnR5cGUgOmNsaiwgOnN5bSByaW5nLm1pZGRsZXdhcmUuY29yc30gezp2YXItc3ltcyBbd3JhcC1kZWZhdWx0LWNoYXJzZXQgZGVmYXVsdC1jaGFyc2V0LXJlc3BvbnNlXSwgOnR5cGUgOmNsaiwgOnN5bSByaW5nLm1pZGRsZXdhcmUuZGVmYXVsdC1jaGFyc2V0fSB7OnZhci1zeW1zIFtzZWN1cmUtYXBpLWRlZmF1bHRzIGFwaS1kZWZhdWx0cyB3cmFwLWRlZmF1bHRzIHNlY3VyZS1zaXRlLWRlZmF1bHRzIHNpdGUtZGVmYXVsdHNdLCA6dHlwZSA6Y2xqLCA6c3ltIHJpbmcubWlkZGxld2FyZS5kZWZhdWx0c30gezp2YXItc3ltcyBbZmlsZS1yZXF1ZXN0IHdyYXAtZmlsZV0sIDp0eXBlIDpjbGosIDpzeW0gcmluZy5taWRkbGV3YXJlLmZpbGV9IHs6dmFyLXN5bXMgW2ZsYXNoLXJlc3BvbnNlIHdyYXAtZmxhc2ggZmxhc2gtcmVxdWVzdF0sIDp0eXBlIDpjbGosIDpzeW0gcmluZy5taWRkbGV3YXJlLmZsYXNofSB7OnZhci1zeW1zIFtoZWFkLXJlcXVlc3Qgd3JhcC1oZWFkIGhlYWQtcmVzcG9uc2VdLCA6dHlwZSA6Y2xqLCA6c3ltIHJpbmcubWlkZGxld2FyZS5oZWFkfSB7OnZhci1zeW1zIFtrZXl3b3JkLXBhcmFtcy1yZXF1ZXN0IHdyYXAta2V5d29yZC1wYXJhbXNdLCA6dHlwZSA6Y2xqLCA6c3ltIHJpbmcubWlkZGxld2FyZS5rZXl3b3JkLXBhcmFtc30gezp2YXItc3ltcyBbbXVsdGlwYXJ0LXBhcmFtcy1yZXF1ZXN0IHdyYXAtbXVsdGlwYXJ0LXBhcmFtc10sIDp0eXBlIDpjbGosIDpzeW0gcmluZy5taWRkbGV3YXJlLm11bHRpcGFydC1wYXJhbXN9IHs6dmFyLXN5bXMgW25lc3RlZC1wYXJhbXMtcmVxdWVzdCBwYXJzZS1uZXN0ZWQta2V5cyB3cmFwLW5lc3RlZC1wYXJhbXNdLCA6dHlwZSA6Y2xqLCA6c3ltIHJpbmcubWlkZGxld2FyZS5uZXN0ZWQtcGFyYW1zfSB7OnZhci1zeW1zIFt3cmFwLW5vdC1tb2RpZmllZCBub3QtbW9kaWZpZWQtcmVzcG9uc2VdLCA6dHlwZSA6Y2xqLCA6c3ltIHJpbmcubWlkZGxld2FyZS5ub3QtbW9kaWZpZWR9IHs6dmFyLXN5bXMgW3dyYXAtcGFyYW1zIHBhcmFtcy1yZXF1ZXN0IGFzc29jLWZvcm0tcGFyYW1zIGFzc29jLXF1ZXJ5LXBhcmFtc10sIDp0eXBlIDpjbGosIDpzeW0gcmluZy5taWRkbGV3YXJlLnBhcmFtc30gezp2YXItc3ltcyBbd3JhcC1mb3J3YXJkZWQtcmVtb3RlLWFkZHIgZm9yd2FyZGVkLXJlbW90ZS1hZGRyLXJlcXVlc3RdLCA6dHlwZSA6Y2xqLCA6c3ltIHJpbmcubWlkZGxld2FyZS5wcm94eS1oZWFkZXJzfSB7OnZhci1zeW1zIFt3cmFwLXJlc291cmNlIHJlc291cmNlLXJlcXVlc3RdLCA6dHlwZSA6Y2xqLCA6c3ltIHJpbmcubWlkZGxld2FyZS5yZXNvdXJjZX0gezp2YXItc3ltcyBbc2Vzc2lvbi1yZXF1ZXN0IHNlc3Npb24tcmVzcG9uc2Ugd3JhcC1zZXNzaW9uXSwgOnR5cGUgOmNsaiwgOnN5bSByaW5nLm1pZGRsZXdhcmUuc2Vzc2lvbn0gezp2YXItc3ltcyBbbWVtb3J5LXN0b3JlXSwgOnR5cGUgOmNsaiwgOnN5bSByaW5nLm1pZGRsZXdhcmUuc2Vzc2lvbi5tZW1vcnl9IHs6dmFyLXN5bXMgW2RlbGV0ZS1zZXNzaW9uIHdyaXRlLXNlc3Npb24gcmVhZC1zZXNzaW9uIFNlc3Npb25TdG9yZV0sIDp0eXBlIDpjbGosIDpzeW0gcmluZy5taWRkbGV3YXJlLnNlc3Npb24uc3RvcmV9IHs6dmFyLXN5bXMgW2hzdHMtcmVzcG9uc2Ugd3JhcC1oc3RzIHdyYXAtc3NsLXJlZGlyZWN0IGZvcndhcmRlZC1zY2hlbWUtcmVxdWVzdCBkZWZhdWx0LXNjaGVtZS1oZWFkZXIgd3JhcC1mb3J3YXJkZWQtc2NoZW1lIHNzbC1yZWRpcmVjdC1yZXNwb25zZV0sIDp0eXBlIDpjbGosIDpzeW0gcmluZy5taWRkbGV3YXJlLnNzbH0gezp2YXItc3ltcyBbd3JhcC1zdGFja3RyYWNlLXdlYiB3cmFwLXN0YWNrdHJhY2UtbG9nIHdyYXAtc3RhY2t0cmFjZV0sIDp0eXBlIDpjbGosIDpzeW0gcmluZy5taWRkbGV3YXJlLnN0YWNrdHJhY2V9IHs6dmFyLXN5bXMgW3hzcy1wcm90ZWN0aW9uLXJlc3BvbnNlIHdyYXAtY29udGVudC10eXBlLW9wdGlvbnMgZnJhbWUtb3B0aW9ucy1yZXNwb25zZSBjb250ZW50LXR5cGUtb3B0aW9ucy1yZXNwb25zZSB3cmFwLWZyYW1lLW9wdGlvbnMgd3JhcC14c3MtcHJvdGVjdGlvbl0sIDp0eXBlIDpjbGosIDpzeW0gcmluZy5taWRkbGV3YXJlLngtaGVhZGVyc30gezp2YXItc3ltcyBbcGVyY2VudC1lbmNvZGUgdXJsLWRlY29kZSBmaXgtc3RyaW5nLXJlcGxhY2UtYnVnIGZvcm0tZW5jb2RlIGZvcm0tZGVjb2RlLXN0ciBmb3JtLWRlY29kZSBhc3NvYy1jb25qIHVybC1lbmNvZGUgRm9ybUVuY29kZWFibGUgZm9ybS1lbmNvZGUqIGJhc2U2NC1kZWNvZGUgcGVyY2VudC1kZWNvZGUgYmFzZTY0LWVuY29kZV0sIDp0eXBlIDpjbGosIDpzeW0gcmluZy51dGlsLmNvZGVjfSB7OnZhci1zeW1zIFtsYXN0LW1vZGlmaWVkLWRhdGUgY2xvc2UhIHBpcGVkLWlucHV0LXN0cmVhbSBzdHJpbmctaW5wdXQtc3RyZWFtXSwgOnR5cGUgOmNsaiwgOnN5bSByaW5nLnV0aWwuaW99IHs6dmFyLXN5bXMgW2V4dC1taW1lLXR5cGUgZGVmYXVsdC1taW1lLXR5cGVzXSwgOnR5cGUgOmNsaiwgOnN5bSByaW5nLnV0aWwubWltZS10eXBlfSB7OnZhci1zeW1zIFtyZS10b2tlbiByZS1xdW90ZWQgcmUtY2hhcnNldCByZS12YWx1ZSBmaW5kLWNvbnRlbnQtdHlwZS1jaGFyc2V0XSwgOnR5cGUgOmNsaiwgOnN5bSByaW5nLnV0aWwucGFyc2luZ30gezp2YXItc3ltcyBbcmVxdWVzdC11cmwgYm9keS1zdHJpbmcgY29udGVudC1sZW5ndGggY29udGVudC10eXBlIHBhdGgtaW5mbyBjaGFyYWN0ZXItZW5jb2RpbmcgdXJsZW5jb2RlZC1mb3JtPyBzZXQtY29udGV4dCBpbi1jb250ZXh0P10sIDp0eXBlIDpjbGosIDpzeW0gcmluZy51dGlsLnJlcXVlc3R9IHs6dmFyLXN5bXMgW2dldC1oZWFkZXIgYmFkLXJlcXVlc3QgcmVkaXJlY3QgcmVkaXJlY3Qtc3RhdHVzLWNvZGVzIHNldC1jb29raWUgcmVzcG9uc2UgZmluZC1oZWFkZXIgZmlsZS1yZXNwb25zZSByZXNvdXJjZS1yZXNwb25zZSBnZXQtY2hhcnNldCBjcmVhdGVkIGhlYWRlciBjaGFyc2V0IHVybC1yZXNwb25zZSByZWRpcmVjdC1hZnRlci1wb3N0IHVwZGF0ZS1oZWFkZXIgcmVzb3VyY2UtZGF0YSBzdGF0dXMgbm90LWZvdW5kIGNvbnRlbnQtdHlwZSByZXNwb25zZT9dLCA6dHlwZSA6Y2xqLCA6c3ltIHJpbmcudXRpbC5yZXNwb25zZX0gezp2YXItc3ltcyBbcmluZy51dGlsLnNlcnZsZXQucHJveHkkamF2YS5pby5GaWx0ZXJPdXRwdXRTdHJlYW0kZmYxOTI3NGEgdXBkYXRlLXNlcnZsZXQtcmVzcG9uc2UgbWVyZ2Utc2VydmxldC1rZXlzIG1ha2Utc2VydmljZS1tZXRob2Qgc2VydmxldCBidWlsZC1yZXF1ZXN0LW1hcCBkZWZzZXJ2aWNlIHJpbmcudXRpbC5zZXJ2bGV0LnByb3h5JGphdmF4LnNlcnZsZXQuaHR0cC5IdHRwU2VydmxldCRmZjE5Mjc0YV0sIDp0eXBlIDpjbGosIDpzeW0gcmluZy51dGlsLnNlcnZsZXR9IHs6dmFyLXN5bXMgW2h0dHAtZGF0ZS1mb3JtYXRzIGZvcm1hdC1kYXRlIHBhcnNlLWRhdGVdLCA6dHlwZSA6Y2xqLCA6c3ltIHJpbmcudXRpbC50aW1lfSB7OnZhci1zeW1zIFttb3VudCB1bm1vdW50IGxvY2FsIHJlYWN0aXZlIHJlZi1ub2RlIHJlYWN0IHJlbmRlci1zdGF0aWMtbWFya3VwIHJlcXVlc3QtcmVuZGVyIHdpdGgta2V5IGJ1aWxkLWRlZmNzIHJlZiBkZWZjIHN0YXRpYyBkZWZjcyBjdXJzb3Igc3RhdGUgY3Vyc29yLWluIGRvbS1ub2RlIHdpdGgtcmVmIGJ1aWxkLWRlZmMgcmVuZGVyLWh0bWwgYnVpbGQtZGVmY2MgZGVyaXZlZC1hdG9tIGRlZmNjXSwgOnR5cGUgOmNsaiwgOnN5bSBydW0uY29yZX0gezp2YXItc3ltcyBbbW91bnQgdW5tb3VudCBsb2NhbCByZWFjdGl2ZSByZWYtbm9kZSByZWFjdCByZXF1ZXN0LXJlbmRlciBwb3J0YWwgd2l0aC1rZXkgYnVpbGQtZGVmY3MgcmVmIHN0YXRpYyBjdXJzb3Igc3RhdGUgY3Vyc29yLWluIGRvbS1ub2RlIHdpdGgtcmVmIGJ1aWxkLWRlZmMgaHlkcmF0ZSBidWlsZC1kZWZjYyBkZXJpdmVkLWF0b21dLCA6dHlwZSA6Y2xqcywgOnN5bSBydW0uY29yZX0gezp2YXItc3ltcyBbLT5DdXJzb3JdLCA6dHlwZSA6Y2xqLCA6c3ltIHJ1bS5jdXJzb3J9IHs6dmFyLXN5bXMgW2Rlcml2ZWQtYXRvbV0sIDp0eXBlIDpjbGosIDpzeW0gcnVtLmRlcml2ZWQtYXRvbX0gezp2YXItc3ltcyBbZGVyaXZlZC1hdG9tXSwgOnR5cGUgOmNsanMsIDpzeW0gcnVtLmRlcml2ZWQtYXRvbX0gezp2YXItc3ltcyBbbm9ybWFsaXplLWNzcy12YWx1ZSByZW5kZXItY2xhc3MhIHJlbmRlci1pbm5lci1odG1sISAqc2VsZWN0LXZhbHVlKiByZW5kZXItYXR0cnMhIHJlbmRlci1zdHlsZS1rdiEgbm9ybWFsaXplLWNzcy1rZXkgdW5pdGxlc3MtY3NzLXByb3BzIHJlbmRlci1zdGF0aWMtbWFya3VwIHRvLXN0ciBub3JtYWxpemUtYXR0ci1rZXkgcmVuZGVyLXRleHRhcmVhLXZhbHVlISByZW5kZXItY29udGVudCEgbm90aGluZz8gbm9ybWFsaXplLWVsZW1lbnQgcmVuZGVyLWF0dHIhIHJlbmRlci1jbGFzc2VzISBhcHBlbmQhIGdldC12YWx1ZSBUb1N0cmluZyBwYXJzZS1zZWxlY3RvciAtcmVuZGVyLWh0bWwgcmVuZGVyLWh0bWwgSHRtbFJlbmRlcmVyIHJlbmRlci1lbGVtZW50ISBub3JtYWxpemVkLWF0dHJzIGVzY2FwZS1odG1sIHJlbmRlci1zdHlsZSFdLCA6dHlwZSA6Y2xqLCA6c3ltIHJ1bS5zZXJ2ZXItcmVuZGVyfSB7OnZhci1zeW1zIFtjYWxsLWFsbCBjb2xsZWN0IGNvbGxlY3QqXSwgOnR5cGUgOmNsaiwgOnN5bSBydW0udXRpbH0gezp2YXItc3ltcyBbY29sbGVjdCBjb2xsZWN0KiBjYWxsLWFsbF0sIDp0eXBlIDpjbGpzLCA6c3ltIHJ1bS51dGlsfSB7OnZhci1zeW1zIFtjb21waWxlLW1lcmdlLWF0dHJzIGNvbXBpbGUtcmVhY3QgY29tcGlsZS1yZWFjdC1lbGVtZW50IHRvLWpzIGNvbXBpbGUtYXR0ciBJQ29tcGlsZSBjb21waWxlLWF0dHJzIGNvbXBpbGUtaHRtbCBJSlNWYWx1ZV0sIDp0eXBlIDpjbGosIDpzeW0gc2FibG9uby5jb21waWxlcn0gezp2YXItc3ltcyBbaHRtbC1leHBhbmQgd2l0aC1ncm91cCBodG1sIHdpdGgtYmFzZS11cmwgaW5wdXQtZmllbGRzIGdlbi1pbnB1dC1maWVsZHMgZGVmZWxlbSBkZWZodG1sIGh0bWwqIGF0dHJzIGdlbi1pbnB1dC1maWVsZF0sIDp0eXBlIDpjbGosIDpzeW0gc2FibG9uby5jb3JlfSB7OnZhci1zeW1zIFt3cmFwLWF0dHJzIGluY2x1ZGUtY3NzIGluY2x1ZGUtanMgaW5jbHVkZS1yZWFjdCAqZ3JvdXAqIGZpbGUtdXBsb2FkXSwgOnR5cGUgOmNsanMsIDpzeW0gc2FibG9uby5jb3JlfSB7OnZhci1zeW1zIFthdHRyaWJ1dGVzIGludGVycHJldCBjb250cm9sbGVkLWlucHV0PyBlbGVtZW50IElJbnRlcnByZXRlciBjcmVhdGUtZWxlbWVudF0sIDp0eXBlIDpjbGosIDpzeW0gc2FibG9uby5pbnRlcnByZXRlcn0gezp2YXItc3ltcyBbaW50ZXJwcmV0IElJbnRlcnByZXRlciBjb250cm9sbGVkLWlucHV0PyBjcmVhdGUtZWxlbWVudCBhdHRyaWJ1dGVzIGVsZW1lbnRdLCA6dHlwZSA6Y2xqcywgOnN5bSBzYWJsb25vLmludGVycHJldGVyfSB7OnZhci1zeW1zIFttYXAtbG9va3VwPyBhdHRyaWJ1dGVzIGNvbXBhY3QtbWFwIGNoaWxkcmVuIGVsZW1lbnQgbWF0Y2gtdGFnIHN0cmlwLWNzcyBjbGFzcyBjbGFzcy1uYW1lIG1lcmdlLXdpdGgtY2xhc3NdLCA6dHlwZSA6Y2xqLCA6c3ltIHNhYmxvbm8ubm9ybWFsaXplfSB7OnZhci1zeW1zIFttYXAtbG9va3VwPyBhdHRyaWJ1dGVzIGNvbXBhY3QtbWFwIGNoaWxkcmVuIGVsZW1lbnQgbWF0Y2gtdGFnIHN0cmlwLWNzcyBjbGFzcyBjbGFzcy1uYW1lIG1lcmdlLXdpdGgtY2xhc3NdLCA6dHlwZSA6Y2xqcywgOnN5bSBzYWJsb25vLm5vcm1hbGl6ZX0gezp2YXItc3ltcyBbam9pbi1jbGFzc2VzIHRvLXN0ciByZWFjdC1mbiBjYW1lbC1jYXNlLWtleXMgZWxlbWVudD8gKmJhc2UtdXJsKiBhcy1zdHIgaHRtbC10by1kb20tYXR0cnMgVG9TdHJpbmcgVG9VUkkgY2FtZWwtY2FzZSB0by11cmldLCA6dHlwZSA6Y2xqLCA6c3ltIHNhYmxvbm8udXRpbH0gezp2YXItc3ltcyBbam9pbi1jbGFzc2VzIHRvLXN0ciByZWFjdC1mbiBjYW1lbC1jYXNlLWtleXMgZWxlbWVudD8gKmJhc2UtdXJsKiBhcy1zdHIgaHRtbC10by1kb20tYXR0cnMgVG9TdHJpbmcgVG9VUkkgY2FtZWwtY2FzZSB0by11cmldLCA6dHlwZSA6Y2xqcywgOnN5bSBzYWJsb25vLnV0aWx9IHs6dmFyLXN5bXMgW2luaXRpYWwtc2Vzc2lvbiB0aWNrIHJ1bl0sIDp0eXBlIDpjbGpzLCA6c3ltIHNpbXBsZS5vZG95bGV9IHs6dmFyLXN5bXMgWypsZW5ndGgtPnRocmVzaG9sZCogbWFwLWV4cGxhaW4gc3BlYy1ucy12YXIgaW4tY2xqcy1jb21waWxlPyB3YXJuLWtleXMgc3RyaWN0LWtleXMgKndhcm4tb25seSogd2FybmluZy1tZXNzYWdlKiAqdmFsdWUqIHdhcm4tb25seS1pbXBsIG5vdC1taXNzcGVsbGVkLXNwZWMgZW5oYW5jZS1wcm9ibGVtIGtub3duLWtleXMtc3BlYyBsZW5ndGgtPnRocmVzaG9sZCBsaWtlbHktbWlzc3BlbGxlZCB3YXJuaW5nLXNwZWMgZGVmYXVsdC13YXJuaW5nLWhhbmRsZXIgbm90LW1pc3NwZWxsZWQgcHJlLWNoZWNrIGtleXMgKndhcm5pbmctaGFuZGxlciogd2Fybi1zdHJpY3Qta2V5c10sIDp0eXBlIDpjbGosIDpzeW0gc3BlbGwtc3BlYy5hbHBoYX0gezp2YXItc3ltcyBbZXhwLWZvcm1hdGVkIGZvcm1hdC1jb3JyZWN0aW9uLWxpc3RdLCA6dHlwZSA6Y2xqLCA6c3ltIHNwZWxsLXNwZWMuZXhwb3VuZH0gezp2YXItc3ltcyBbc3BlY2lhbC1pbmRlbnQgY29kZS0+dGFncyBpbmRlbnQtZm9yLWxpbmUgYWRqdXN0LWluZGVudCByZWFkLXNhZmUgdW53cmFwLXZhbHVlIGdldC10YWdzLWJlZm9yZS1saW5lIGZvcndhcmQtaW5kZW50LWZvci1saW5lIHRhZy1tYXAgYmFjay1pbmRlbnQtZm9yLWxpbmVdLCA6dHlwZSA6Y2xqLCA6c3ltIHRhZy1zb3VwLmNvcmV9IHs6dmFyLXN5bXMgW3NwZWNpYWwtaW5kZW50IGNvZGUtPnRhZ3MgaW5kZW50LWZvci1saW5lIGFkanVzdC1pbmRlbnQgcmVhZC1zYWZlIHVud3JhcC12YWx1ZSBnZXQtdGFncy1iZWZvcmUtbGluZSBmb3J3YXJkLWluZGVudC1mb3ItbGluZSB0YWctbWFwIGJhY2staW5kZW50LWZvci1saW5lXSwgOnR5cGUgOmNsanMsIDpzeW0gdGFnLXNvdXAuY29yZX0gezp2YXItc3ltcyBbdG9kb3MgdG9kb3MtYWx0XSwgOnR5cGUgOmNsanMsIDpzeW0gdG9kb3MuY29yZX0gezp2YXItc3ltcyBbaW5pdCBpbml0aWFsLWRiIHJ1bl0sIDp0eXBlIDpjbGpzLCA6c3ltIHRvZG9zLmRhdGFzY3JpcHR9IHs6dmFyLXN5bXMgW2luaXQgaW5pdGlhbC1zZXNzaW9uIHF1ZXJ5IHJ1bl0sIDp0eXBlIDpjbGpzLCA6c3ltIHRvZG9zLm9kb3lsZX0gezp2YXItc3ltcyBbaW5pdCBpbml0aWFsLXNlc3Npb24gcXVlcnkgcnVuXSwgOnR5cGUgOmNsanMsIDpzeW0gdG9kb3Mub2RveWxlLWFsdH1dLCA6ZHluYWRvYy5jb21tb24vdmFycyBbezpzeW0gKm1hdGNoKiwgOm1ldGEgezpkb2MgIlByb3ZpZGVzIGEgbWFwIG9mIGFsbCB0aGUgbWF0Y2hlZCB2YWx1ZXMgZnJvbSBpbnNpZGUgYSA6dGhlbiBibG9jay5cblRoaXMgaXMgbm8gbG9uZ2VyIG5lY2Vzc2FyeSwgYmVjYXVzZSBpdCBpcyBhY2Nlc3NpYmxlIHZpYSBgbWF0Y2hgIGRpcmVjdGx5LiJ9LCA6c291cmNlICIoZGVmICptYXRjaCogbmlsKVxuIn1dLCA6ZHluYWRvYy5jb21tb24vbnMtbWV0YSBuaWwsIDpkeW5hZG9jLmNvbW1vbi9ucy1zeW0gb2RveWxlLnJ1bGVzLCA6ZHluYWRvYy5jb21tb24vcmVsLXBhdGggIi4uLy4uLyIsIDpkeW5hZG9jLmNvbW1vbi9oaWRlLWJhZGdlPyBmYWxzZSwgOmR5bmFkb2MuY29tbW9uL2NsanMtbnNlcy1hbmQtdmFycyB7ZGV2dG9vbHMuZm9ybWF0dGVycy5jb3JlICh7OnN5bSBib2R5LCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiBib2R5IChjb25maWctd3JhcHBlciBib2R5KikpXG4ifSB7OnN5bSBib2R5LWFwaS1jYWxsLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZlxuIGJvZHktYXBpLWNhbGxcbiAoYnVpbGQtYXBpLWNhbGwgYm9keSA6Ym9keS1wcmUtaGFuZGxlciA6Ym9keS1wb3N0LWhhbmRsZXIpKVxuIn0gezpzeW0gd2FudC12YWx1ZT8sIDptZXRhIHt9LCA6c291cmNlICIoZGVmIHdhbnQtdmFsdWU/IChjb25maWctd3JhcHBlciB3YW50LXZhbHVlPyopKVxuIn0gezpzeW0gaGFzLWJvZHkqLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3ZhbHVlXSl9LCA6c291cmNlICIoZGVmblxuIGhhcy1ib2R5KlxuIFt2YWx1ZV1cbiAoaWZcbiAgKHdhcy1vdmVyLWJ1ZGdldD8hIHZhbHVlKVxuICBmYWxzZVxuICAoYm9vbGVhblxuICAgKGNvbmRcbiAgICAoc3Vycm9nYXRlPyB2YWx1ZSlcbiAgICAoc29tZT8gKGdldC1zdXJyb2dhdGUtYm9keSB2YWx1ZSkpXG4gICAgKHNhZmUtY2FsbCBzYXRpc2ZpZXM/IGZhbHNlIElEZXZ0b29sc0Zvcm1hdCB2YWx1ZSlcbiAgICAoZGV2dG9vbHMuZm9ybWF0Ly1oYXMtYm9keSB2YWx1ZSlcbiAgICAoc2FmZS1jYWxsIHNhdGlzZmllcz8gZmFsc2UgSUZvcm1hdCB2YWx1ZSlcbiAgICAoZGV2dG9vbHMucHJvdG9jb2xzLy1oYXMtYm9keSB2YWx1ZSlcbiAgICA6ZWxzZVxuICAgIGZhbHNlKSkpKVxuIn0gezpzeW0gYm9keSosIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbdmFsdWVdKX0sIDpzb3VyY2UgIihkZWZuXG4gYm9keSpcbiBbdmFsdWVdXG4gKHVwZGF0ZS1jdXJyZW50LXN0YXRlISByZXNldC1kZXB0aC1saW1pdHMpXG4gKGNvbmRcbiAgKHN1cnJvZ2F0ZT8gdmFsdWUpXG4gIChyZW5kZXItbWFya3VwICg8c3Vycm9nYXRlLWJvZHk+IHZhbHVlKSlcbiAgKHNhZmUtY2FsbCBzYXRpc2ZpZXM/IGZhbHNlIElEZXZ0b29sc0Zvcm1hdCB2YWx1ZSlcbiAgKGRldnRvb2xzLmZvcm1hdC8tYm9keSB2YWx1ZSlcbiAgKHNhZmUtY2FsbCBzYXRpc2ZpZXM/IGZhbHNlIElGb3JtYXQgdmFsdWUpXG4gIChkZXZ0b29scy5wcm90b2NvbHMvLWJvZHkgdmFsdWUpKSlcbiJ9IHs6c3ltIHdyYXAtd2l0aC1leGNlcHRpb24tZ3VhcmQsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZl0pfSwgOnNvdXJjZSAiKGRlZm5cbiB3cmFwLXdpdGgtZXhjZXB0aW9uLWd1YXJkXG4gW2ZdXG4gKGZuXG4gIFsmIGFyZ3NdXG4gICh0cnlcbiAgIChhcHBseSBmIGFyZ3MpXG4gICAoY2F0Y2hcbiAgICA6ZGVmYXVsdFxuICAgIGVcbiAgICAocmVwb3J0ZXIvcmVwb3J0LWludGVybmFsLWVycm9yIVxuICAgICBlXG4gICAgIFwiYW4gZXhjZXB0aW9uIHdhcyByYWlzZWQgZHVyaW5nIHZhbHVlIGZvcm1hdHRpbmdcIilcbiAgICBuaWwpKSkpXG4ifSB7OnN5bSBoZWFkZXIsIDptZXRhIHt9LCA6c291cmNlICIoZGVmIGhlYWRlciAoY29uZmlnLXdyYXBwZXIgaGVhZGVyKikpXG4ifSB7OnN5bSB3YW50LXZhbHVlPyosIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbdmFsdWVdKX0sIDpzb3VyY2UgIihkZWZuXG4gd2FudC12YWx1ZT8qXG4gW3ZhbHVlXVxuIChhbmRcbiAgKG5vdCAocHJldmVudC1yZWN1cnNpb24/KSlcbiAgKG9yIChjbGpzLXZhbHVlPyB2YWx1ZSkgKHN1cnJvZ2F0ZT8gdmFsdWUpKSkpXG4ifSB7OnN5bSBoZWFkZXIqLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3ZhbHVlXSl9LCA6c291cmNlICIoZGVmblxuIGhlYWRlcipcbiBbdmFsdWVdXG4gKGxldFxuICBbanNvbi1tbFxuICAgKGNvbmRcbiAgICAoc3Vycm9nYXRlPyB2YWx1ZSlcbiAgICAocmVuZGVyLW1hcmt1cCAoPHN1cnJvZ2F0ZS1oZWFkZXI+IHZhbHVlKSlcbiAgICAoc2FmZS1jYWxsIHNhdGlzZmllcz8gZmFsc2UgSURldnRvb2xzRm9ybWF0IHZhbHVlKVxuICAgIChkZXZ0b29scy5mb3JtYXQvLWhlYWRlciB2YWx1ZSlcbiAgICAoc2FmZS1jYWxsIHNhdGlzZmllcz8gZmFsc2UgSUZvcm1hdCB2YWx1ZSlcbiAgICAoZGV2dG9vbHMucHJvdG9jb2xzLy1oZWFkZXIgdmFsdWUpXG4gICAgOmVsc2VcbiAgICAocmVuZGVyLW1hcmt1cCAoPGhlYWRlcj4gdmFsdWUpKSldXG4gIChhbHRlci1qc29uLW1sLXRvLWZpdC1pbi1yZW1haW5pbmctYnVkZ2V0ISB2YWx1ZSBqc29uLW1sKSkpXG4ifSB7OnN5bSBoYXMtYm9keS1hcGktY2FsbCwgOm1ldGEge30sIDpzb3VyY2UgIihkZWZcbiBoYXMtYm9keS1hcGktY2FsbFxuIChidWlsZC1hcGktY2FsbCBoYXMtYm9keSA6aGFzLWJvZHktcHJlLWhhbmRsZXIgOmhhcy1ib2R5LXBvc3QtaGFuZGxlcikpXG4ifSB7OnN5bSBidWlsZC1hcGktY2FsbCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtyYXctZm4gcHJlLWhhbmRsZXIta2V5IHBvc3QtaGFuZGxlci1rZXldKX0sIDpzb3VyY2UgIihkZWZuXG4gYnVpbGQtYXBpLWNhbGxcbiBbcmF3LWZuIHByZS1oYW5kbGVyLWtleSBwb3N0LWhhbmRsZXIta2V5XVxuIFwiV3JhcHMgcmF3IEFQSSBjYWxsIGluIGEgZnVuY3Rpb24gd2hpY2ggY2FsbHMgcHJlLWhhbmRsZXIgYW5kIHBvc3QtaGFuZGxlci5cXG5cXG4gICBwcmUtaGFuZGxlciBnZXRzIGEgY2hhbmNlIHRvIHByZS1wcm9jZXNzIHZhbHVlIGJlZm9yZSBpdCBpcyBwYXNzZWQgdG8gY2xqcy1kZXZ0b29sc1xcbiAgIHBvc3QtaGFuZGxlciBnZXRzIGEgY2hhbmNlIHRvIHBvc3QtcHJvY2VzcyB2YWx1ZSByZXR1cm5lZCBieSBjbGpzLWRldnRvb2xzLlwiXG4gKGxldFxuICBbaGFuZGxlclxuICAgKGZuXG4gICAgW3ZhbHVlIGNvbmZpZ11cbiAgICAobGV0XG4gICAgIFtwcmUtaGFuZGxlclxuICAgICAgKG9yIChwcmVmIHByZS1oYW5kbGVyLWtleSkgaWRlbnRpdHkpXG4gICAgICBwb3N0LWhhbmRsZXJcbiAgICAgIChvciAocHJlZiBwb3N0LWhhbmRsZXIta2V5KSBpZGVudGl0eSlcbiAgICAgIHByZXByb2Nlc3NlZC12YWx1ZVxuICAgICAgKHByZS1oYW5kbGVyIHZhbHVlKVxuICAgICAgcmVzdWx0XG4gICAgICAoaWZcbiAgICAgICAod2FudC12YWx1ZT8gcHJlcHJvY2Vzc2VkLXZhbHVlIGNvbmZpZylcbiAgICAgICAocmF3LWZuIHByZXByb2Nlc3NlZC12YWx1ZSBjb25maWcpKV1cbiAgICAgKHBvc3QtaGFuZGxlciByZXN1bHQpKSldXG4gICh3cmFwLXdpdGgtZXhjZXB0aW9uLWd1YXJkIGhhbmRsZXIpKSlcbiJ9IHs6c3ltIGhlYWRlci1hcGktY2FsbCwgOm1ldGEge30sIDpzb3VyY2UgIihkZWZcbiBoZWFkZXItYXBpLWNhbGxcbiAoYnVpbGQtYXBpLWNhbGwgaGVhZGVyIDpoZWFkZXItcHJlLWhhbmRsZXIgOmhlYWRlci1wb3N0LWhhbmRsZXIpKVxuIn0gezpzeW0gaGFzLWJvZHksIDptZXRhIHt9LCA6c291cmNlICIoZGVmIGhhcy1ib2R5IChjb25maWctd3JhcHBlciBoYXMtYm9keSopKVxuIn0gezpzeW0gY29uZmlnLXdyYXBwZXIsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbcmF3LWZuXSl9LCA6c291cmNlICIoZGVmblxuIGNvbmZpZy13cmFwcGVyXG4gW3Jhdy1mbl1cbiAoZm5cbiAgW3ZhbHVlIGNvbmZpZ11cbiAgKGJpbmRpbmdcbiAgIFsqY3VycmVudC1zdGF0ZSogKG9yIGNvbmZpZyAoZ2V0LWRlZmF1bHQtc3RhdGUpKV1cbiAgIChyYXctZm4gdmFsdWUpKSkpXG4ifSksIGV2YWwtc291cC5jb3JlICh7OnN5bSBjb2RlLT5yZXN1bHRzLCA6bWV0YSB7OmRvYyAiRXZhbHVhdGVzIGVhY2ggZm9ybSwgcHJvdmlkaW5nIHRoZSByZXN1bHRzIGluIGEgY2FsbGJhY2suXG4gIElmIGFueSBvZiB0aGUgZm9ybXMgYXJlIHN0cmluZ3MsIGl0IHdpbGwgcmVhZCB0aGVtIGZpcnN0LiIsIDphcmdsaXN0cyBbW2Zvcm1zIGNiXSBbZm9ybXMgY2IgezprZXlzIFsqY3VycmVudC1ucyAqc3RhdGUgY3VzdG9tLWxvYWQgdGltZW91dCBkaXNhYmxlLXRpbWVvdXQ/XSwgOm9yIHsqY3VycmVudC1ucyAoYXRvbSAocXVvdGUgY2xqcy51c2VyKSksICpzdGF0ZSAqY2xqcy1zdGF0ZSwgY3VzdG9tLWxvYWQgY3VzdG9tLWxvYWQhLCB0aW1lb3V0IDQwMDAsIGRpc2FibGUtdGltZW91dD8gZmFsc2V9LCA6YXMgb3B0c31dXX0sIDpzb3VyY2UgIihkZWZuXG4gY29kZS0+cmVzdWx0c1xuIFwiRXZhbHVhdGVzIGVhY2ggZm9ybSwgcHJvdmlkaW5nIHRoZSByZXN1bHRzIGluIGEgY2FsbGJhY2suXFxuICBJZiBhbnkgb2YgdGhlIGZvcm1zIGFyZSBzdHJpbmdzLCBpdCB3aWxsIHJlYWQgdGhlbSBmaXJzdC5cIlxuIChbZm9ybXMgY2JdIChjb2RlLT5yZXN1bHRzIGZvcm1zIGNiIHt9KSlcbiAoW2Zvcm1zXG4gICBjYlxuICAgezprZXlzIFsqY3VycmVudC1ucyAqc3RhdGUgY3VzdG9tLWxvYWQgdGltZW91dCBkaXNhYmxlLXRpbWVvdXQ/XSxcbiAgICA6b3JcbiAgICB7KmN1cnJlbnQtbnMgKGF0b20gJ2NsanMudXNlciksXG4gICAgICpzdGF0ZSAqY2xqcy1zdGF0ZSxcbiAgICAgY3VzdG9tLWxvYWQgY3VzdG9tLWxvYWQhLFxuICAgICB0aW1lb3V0IDQwMDAsXG4gICAgIGRpc2FibGUtdGltZW91dD8gZmFsc2V9LFxuICAgIDphcyBvcHRzfV1cbiAgKGxldFxuICAgW2Zvcm1zXG4gICAgKG1hcHZcbiAgICAgKGZuKlxuICAgICAgW3AxX180MzIwNiNdXG4gICAgICAoaWZcbiAgICAgICAoc3RyaW5nPyBwMV9fNDMyMDYjKVxuICAgICAgIChzdHItPmZvcm0gQCpjdXJyZW50LW5zIHAxX180MzIwNiMpXG4gICAgICAgcDFfXzQzMjA2IykpXG4gICAgIGZvcm1zKVxuICAgIGluaXQtZm9ybXNcbiAgICAodmVjXG4gICAgIChjb25jYXRcbiAgICAgIFsnKG5zIGNsanMudXNlcildXG4gICAgICAod2hlbi1ub3RcbiAgICAgICBkaXNhYmxlLXRpbWVvdXQ/XG4gICAgICAgWycoZGVmIHBzLWxhc3QtdGltZSAoYXRvbSAwKSlcbiAgICAgICAgJyhkZWZuXG4gICAgICAgICAgcHMtcmVzZXQtdGltZW91dCFcbiAgICAgICAgICBbXVxuICAgICAgICAgIChyZXNldCEgcHMtbGFzdC10aW1lICguZ2V0VGltZSAoanMvRGF0ZS4pKSkpXG4gICAgICAgICcoZGVmblxuICAgICAgICAgIHBzLWNoZWNrLWZvci10aW1lb3V0IVxuICAgICAgICAgIFt0aW1lb3V0XVxuICAgICAgICAgICh3aGVuXG4gICAgICAgICAgICg+ICgtICguZ2V0VGltZSAoanMvRGF0ZS4pKSBAcHMtbGFzdC10aW1lKSB0aW1lb3V0KVxuICAgICAgICAgICAodGhyb3cgKGpzL0Vycm9yLiBcIkV4ZWN1dGlvbiB0aW1lZCBvdXQuXCIpKSkpXSlcbiAgICAgIFsnKHNldCEgKnByaW50LWVyci1mbiogKGZuIFtfXSkpIChsaXN0ICducyBAKmN1cnJlbnQtbnMpXSkpXG4gICAgdGltZW91dC1jYlxuICAgIChmblxuICAgICBbcmVzdWx0c11cbiAgICAgKGV2YWwtZm9ybXNcbiAgICAgIChhZGQtdGltZW91dHMtaWYtbmVjZXNzYXJ5IHRpbWVvdXQgZm9ybXMgcmVzdWx0cylcbiAgICAgIGNiXG4gICAgICAqc3RhdGVcbiAgICAgICpjdXJyZW50LW5zXG4gICAgICBjdXN0b20tbG9hZCkpXG4gICAgaW5pdC1jYlxuICAgIChmblxuICAgICBbcmVzdWx0c11cbiAgICAgKGV2YWwtZm9ybXNcbiAgICAgIChpZiBkaXNhYmxlLXRpbWVvdXQ/IGZvcm1zIChtYXAgd3JhcC1tYWNyb2V4cGFuZCBmb3JtcykpXG4gICAgICAoaWYgZGlzYWJsZS10aW1lb3V0PyBjYiB0aW1lb3V0LWNiKVxuICAgICAgKnN0YXRlXG4gICAgICAqY3VycmVudC1uc1xuICAgICAgY3VzdG9tLWxvYWQpKV1cbiAgIChldmFsLWZvcm1zIGluaXQtZm9ybXMgaW5pdC1jYiAqc3RhdGUgKmN1cnJlbnQtbnMgY3VzdG9tLWxvYWQpKSkpXG4ifSksIGR1bmdlb24tY3Jhd2xlci5jbGFyYSAoezpzeW0gaW5pdCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtzZXNzaW9uXSl9LCA6c291cmNlICIoZGVmblxuIGluaXRcbiBbc2Vzc2lvbl1cbiAobGV0XG4gIFsqaWQgKGF0b20gMCldXG4gIChjbGFyYS9maXJlLXJ1bGVzXG4gICAocmVkdWNlXG4gICAgKGZuXG4gICAgIFtzZXNzaW9uIHs6a2V5cyBbcGF0aCBpbnN0YW5jZXNdLCA6YXMgc3Bhd24tZGF0YX1dXG4gICAgIChyZWR1Y2VcbiAgICAgIChmblxuICAgICAgIFtzZXNzaW9uIGluc3RhbmNlXVxuICAgICAgIChsZXRcbiAgICAgICAgW2lkXG4gICAgICAgICAoc3dhcCEgKmlkIGluYylcbiAgICAgICAgIGVcbiAgICAgICAgIChyZWR1Y2Uta3ZcbiAgICAgICAgICAoZm4gW20gayB2XSAoYXNzb2MgbSAoa2V5d29yZCAobmFtZSBrKSkgdikpXG4gICAgICAgICAgezppZCBpZH1cbiAgICAgICAgICAoZS8tPmVudGl0eSBzcGF3bi1kYXRhIGluc3RhbmNlKSldXG4gICAgICAgIChjbGFyYS9pbnNlcnRcbiAgICAgICAgIHNlc3Npb25cbiAgICAgICAgIChtYXAtPkVudGl0eVxuICAgICAgICAgIChzZWxlY3Qta2V5c1xuICAgICAgICAgICBlXG4gICAgICAgICAgIFs6aWRcbiAgICAgICAgICAgIDpraW5kXG4gICAgICAgICAgICA6eFxuICAgICAgICAgICAgOnlcbiAgICAgICAgICAgIDp4LWNoYW5nZVxuICAgICAgICAgICAgOnktY2hhbmdlXG4gICAgICAgICAgICA6eC12ZWxvY2l0eVxuICAgICAgICAgICAgOnktdmVsb2NpdHldKSlcbiAgICAgICAgICgtPlNpemUgKDppZCBlKSAoOndpZHRoIGUpICg6aGVpZ2h0IGUpKVxuICAgICAgICAgKC0+RGlyZWN0aW9uICg6aWQgZSkgKDpkaXJlY3Rpb24gZSkpXG4gICAgICAgICAoLT5EaXN0YW5jZUZyb21QbGF5ZXIgKDppZCBlKSAoaW5jIG1vdmUvbWF4LWF0dGFjay1kaXN0YW5jZSkpXG4gICAgICAgICAoLT5IZWFsdGggKDppZCBlKSAoOmhlYWx0aCBlKSlcbiAgICAgICAgICgtPkRhbWFnZSAoOmlkIGUpICg6ZGFtYWdlIGUpKSkpKVxuICAgICAgc2Vzc2lvblxuICAgICAgaW5zdGFuY2VzKSlcbiAgICAoY2xhcmEvaW5zZXJ0IHNlc3Npb24gKC0+R2FtZSAwKSlcbiAgICBlL3NwYXduLWRhdGEpKSkpXG4ifSB7OnN5bSBpbml0aWFsLXNlc3Npb24sIDptZXRhIHt9LCA6c291cmNlICIoZGVmXG4gaW5pdGlhbC1zZXNzaW9uXG4gKC0+XG4gIHs6Z2V0LWdhbWUgKGZuIFtdIChsZXQgW2dhbWUgR2FtZV0gZ2FtZSkpLFxuICAgOmdldC1lbnRpdGllc1xuICAgKGZuIFtdIChsZXQgW2VudGl0eSBFbnRpdHkgOmFjY3VtdWxhdG9yIChhY2MvYWxsKV0gZW50aXR5KSksXG4gICA6bW92ZS1lbmVteVxuICAgKGxldFxuICAgIFtnYW1lXG4gICAgIEdhbWVcbiAgICAgcGxheWVyXG4gICAgIEVudGl0eVxuICAgICA6d2hlblxuICAgICAoPSAoOmtpbmQgcGxheWVyKSA6cGxheWVyKVxuICAgICBwbGF5ZXItaGVhbHRoXG4gICAgIEhlYWx0aFxuICAgICA6d2hlblxuICAgICAoPSAoOmlkIHBsYXllcikgKDppZCBwbGF5ZXItaGVhbHRoKSlcbiAgICAgZW5lbXlcbiAgICAgRW50aXR5XG4gICAgIDp3aGVuXG4gICAgIChhbmRcbiAgICAgIChub3Q9ICg6Z2FtZS1hbmNob3IgZW5lbXkpIGdhbWUpXG4gICAgICAobm90PSAoOmtpbmQgZW5lbXkpIDpwbGF5ZXIpKVxuICAgICBlbmVteS1oZWFsdGhcbiAgICAgSGVhbHRoXG4gICAgIDp3aGVuXG4gICAgIChhbmRcbiAgICAgICg9ICg6aWQgZW5lbXkpICg6aWQgZW5lbXktaGVhbHRoKSlcbiAgICAgICg+ICg6dmFsdWUgZW5lbXktaGVhbHRoKSAwKSlcbiAgICAgZGlzdGFuY2UtZnJvbS1wbGF5ZXJcbiAgICAgRGlzdGFuY2VGcm9tUGxheWVyXG4gICAgIDp3aGVuXG4gICAgICg9ICg6aWQgZW5lbXkpICg6aWQgZGlzdGFuY2UtZnJvbS1wbGF5ZXIpKV1cbiAgICAobGV0XG4gICAgIFtbeHYgeXZdXG4gICAgICAobW92ZS9nZXQtZW5lbXktdmVsb2NpdHlcbiAgICAgICBlbmVteVxuICAgICAgIChhc3NvYyBwbGF5ZXIgOmhlYWx0aCAoOnZhbHVlIHBsYXllci1oZWFsdGgpKVxuICAgICAgICg6dmFsdWUgZGlzdGFuY2UtZnJvbS1wbGF5ZXIpKV1cbiAgICAgKGNsYXJhL3JldHJhY3QhIGVuZW15KVxuICAgICAoLT4+XG4gICAgICAobW92ZS9tb3ZlICg6eCBlbmVteSkgKDp5IGVuZW15KSB4diB5diAwLjEgZmFsc2UpXG4gICAgICAobWVyZ2UgZW5lbXkgezpnYW1lLWFuY2hvciBnYW1lfSlcbiAgICAgIGNsYXJhL2luc2VydC11bmNvbmRpdGlvbmFsISkpKSxcbiAgIDp1cGRhdGUtZGlzdGFuY2UtZnJvbS1wbGF5ZXJcbiAgIChsZXRcbiAgICBbcGxheWVyXG4gICAgIEVudGl0eVxuICAgICA6d2hlblxuICAgICAoPSAoOmtpbmQgcGxheWVyKSA6cGxheWVyKVxuICAgICBlbmVteVxuICAgICBFbnRpdHlcbiAgICAgOndoZW5cbiAgICAgKG5vdD0gKDppZCBwbGF5ZXIpICg6aWQgZW5lbXkpKVxuICAgICBkaXN0YW5jZVxuICAgICBEaXN0YW5jZUZyb21QbGF5ZXJcbiAgICAgOndoZW5cbiAgICAgKD0gKDppZCBkaXN0YW5jZSkgKDppZCBlbmVteSkpXVxuICAgIChsZXRcbiAgICAgW25ldy1kaXN0YW5jZVxuICAgICAgKGFzc29jXG4gICAgICAgZGlzdGFuY2VcbiAgICAgICA6dmFsdWVcbiAgICAgICAobW92ZS9jYWxjLWRpc3RhbmNlXG4gICAgICAgICg6eCBlbmVteSlcbiAgICAgICAgKDp5IGVuZW15KVxuICAgICAgICAoOnggcGxheWVyKVxuICAgICAgICAoOnkgcGxheWVyKSkpXVxuICAgICAod2hlblxuICAgICAgKG5vdD0gZGlzdGFuY2UgbmV3LWRpc3RhbmNlKVxuICAgICAgKGNsYXJhL3JldHJhY3QhIGRpc3RhbmNlKVxuICAgICAgKGNsYXJhL2luc2VydC11bmNvbmRpdGlvbmFsISBuZXctZGlzdGFuY2UpKSkpfVxuICAtPnNlc3Npb25cbiAgaW5pdCkpXG4ifSB7OnN5bSB0aWNrLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3Nlc3Npb24gY291bnRlcl0pfSwgOnNvdXJjZSAiKGRlZm5cbiB0aWNrXG4gW3Nlc3Npb24gY291bnRlcl1cbiAoLT5cbiAgc2Vzc2lvblxuICAoY2xhcmEvcmV0cmFjdCAoY2xhcmEvcXVlcnkgc2Vzc2lvbiA6Z2V0LWdhbWUpKVxuICAoY2xhcmEvaW5zZXJ0ICgtPkdhbWUgY291bnRlcikpXG4gIGNsYXJhL2ZpcmUtcnVsZXMpKVxuIn0gezpzeW0gcnVuLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2l0ZXJhdGlvbnNdKX0sIDpzb3VyY2UgIihkZWZuXG4gcnVuXG4gW2l0ZXJhdGlvbnNdXG4gKGxvb3BcbiAgW3Nlc3Npb24gaW5pdGlhbC1zZXNzaW9uIGNvdW50ZXIgMF1cbiAgKGlmXG4gICAoPSBjb3VudGVyIGl0ZXJhdGlvbnMpXG4gICBzZXNzaW9uXG4gICAocmVjdXIgKHRpY2sgc2Vzc2lvbiBjb3VudGVyKSAoaW5jIGNvdW50ZXIpKSkpKVxuIn0pLCBjbGpzLmNvbXBpbGVyICh7OnN5bSBwcm90b2NvbC1wcmVmaXgsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbcHN5bV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBwcm90b2NvbC1wcmVmaXhcbiBbcHN5bV1cbiAoc3ltYm9sXG4gIChzdHJcbiAgICgtPlxuICAgIChzdHIgcHN5bSlcbiAgICAoLnJlcGxhY2UgIz8oOmNsaiBcXC4gOmNsanMgKGpzL1JlZ0V4cC4gXCJcXFxcLlwiIFwiZ1wiKSkgXFwkKVxuICAgICgucmVwbGFjZSBcXC8gXFwkKSlcbiAgIFwiJFwiKSkpXG4ifSB7OnN5bSBlbWl0LWFyZ3VtZW50cy10by1hcnJheSwgOm1ldGEgezpkb2MgIkVtaXQgY29kZSB0aGF0IGNvcGllcyBmdW5jdGlvbiBhcmd1bWVudHMgaW50byBhbiBhcnJheSBzdGFydGluZyBhdCBhbiBpbmRleC5cbiAgUmV0dXJucyBuYW1lIG9mIHZhciBob2xkaW5nIHRoZSBhcnJheS4iLCA6YXJnbGlzdHMgKFtzdGFydHNsaWNlXSl9LCA6c291cmNlICIoZGVmblxuIGVtaXQtYXJndW1lbnRzLXRvLWFycmF5XG4gXCJFbWl0IGNvZGUgdGhhdCBjb3BpZXMgZnVuY3Rpb24gYXJndW1lbnRzIGludG8gYW4gYXJyYXkgc3RhcnRpbmcgYXQgYW4gaW5kZXguXFxuICBSZXR1cm5zIG5hbWUgb2YgdmFyIGhvbGRpbmcgdGhlIGFycmF5LlwiXG4gW3N0YXJ0c2xpY2VdXG4gKGFzc2VydCAoYW5kICg+PSBzdGFydHNsaWNlIDApIChpbnRlZ2VyPyBzdGFydHNsaWNlKSkpXG4gKGxldFxuICBbbW5hbWUgKG11bmdlIChnZW5zeW0pKSBpIChzdHIgbW5hbWUgXCJfX2lcIikgYSAoc3RyIG1uYW1lIFwiX19hXCIpXVxuICAoZW1pdGxuXG4gICBcInZhciBcIlxuICAgaVxuICAgXCIgPSAwLCBcIlxuICAgYVxuICAgXCIgPSBuZXcgQXJyYXkoYXJndW1lbnRzLmxlbmd0aCAtICBcIlxuICAgc3RhcnRzbGljZVxuICAgXCIpO1wiKVxuICAoZW1pdGxuXG4gICBcIndoaWxlIChcIlxuICAgaVxuICAgXCIgPCBcIlxuICAgYVxuICAgXCIubGVuZ3RoKSB7XCJcbiAgIGFcbiAgIFwiW1wiXG4gICBpXG4gICBcIl0gPSBhcmd1bWVudHNbXCJcbiAgIGlcbiAgIFwiICsgXCJcbiAgIHN0YXJ0c2xpY2VcbiAgIFwiXTsgKytcIlxuICAgaVxuICAgXCI7fVwiKVxuICBhKSlcbiJ9IHs6c3ltIGVtaXQtanMtb2JqZWN0LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2l0ZW1zIGVtaXQtanMtb2JqZWN0LXZhbF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBlbWl0LWpzLW9iamVjdFxuIFtpdGVtcyBlbWl0LWpzLW9iamVjdC12YWxdXG4gKGVtaXRzIFwiKHtcIilcbiAod2hlbi1sZXRcbiAgW2l0ZW1zIChzZXEgaXRlbXMpXVxuICAobGV0XG4gICBbW1trIHZdICYgcl0gaXRlbXNdXG4gICAoZW1pdHMgXCJcXFwiXCIgKG5hbWUgaykgXCJcXFwiOiBcIiAoZW1pdC1qcy1vYmplY3QtdmFsIHYpKVxuICAgKGRvc2VxXG4gICAgW1trIHZdIHJdXG4gICAgKGVtaXRzIFwiLCBcXFwiXCIgKG5hbWUgaykgXCJcXFwiOiBcIiAoZW1pdC1qcy1vYmplY3QtdmFsIHYpKSkpKVxuIChlbWl0cyBcIn0pXCIpKVxuIn0gezpzeW0gZGlzdGluY3Qta2V5cz8sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChba2V5c10pfSwgOnNvdXJjZSAiKGRlZm5cbiBkaXN0aW5jdC1rZXlzP1xuIFtrZXlzXVxuIChsZXRcbiAgW2tleXMgKG1hcCBhbmEvdW53cmFwLXF1b3RlIGtleXMpXVxuICAoYW5kXG4gICAoZXZlcnk/IChmbiogW3AxX180MzAwOCNdICg9ICg6b3AgcDFfXzQzMDA4IykgOmNvbnN0KSkga2V5cylcbiAgICg9IChjb3VudCAoaW50byAje30ga2V5cykpIChjb3VudCBrZXlzKSkpKSlcbiJ9IHs6c3ltIG11bmdlLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyBbW3NdIFtzIHJlc2VydmVkXV19LCA6c291cmNlICIoZGVmblxuIG11bmdlXG4gKFtzXSAobXVuZ2UgcyBqcy1yZXNlcnZlZCkpXG4gKFtzIHJlc2VydmVkXVxuICAoaWZcbiAgICM/KDpjbGogKG1hcD8gcykgOmNsanMgKGFuYS5pbXBsL2NsanMtbWFwPyBzKSlcbiAgIChsZXRcbiAgICBbbmFtZS12YXJcbiAgICAgc1xuICAgICBuYW1lXG4gICAgICg6bmFtZSBuYW1lLXZhcilcbiAgICAgZmllbGRcbiAgICAgKDpmaWVsZCBuYW1lLXZhcilcbiAgICAgaW5mb1xuICAgICAoOmluZm8gbmFtZS12YXIpXVxuICAgIChpZi1ub3RcbiAgICAgKG5pbD8gKDpmbi1zZWxmLW5hbWUgaW5mbykpXG4gICAgIChmbi1zZWxmLW5hbWUgcylcbiAgICAgKGxldFxuICAgICAgW2RlcHRoXG4gICAgICAgKHNoYWRvdy1kZXB0aCBzKVxuICAgICAgIGNvZGVcbiAgICAgICAoaGFzaC1zY29wZSBzKVxuICAgICAgIHJlbmFtZWRcbiAgICAgICAoZ2V0ICpsZXhpY2FsLXJlbmFtZXMqIGNvZGUpXG4gICAgICAgbmFtZVxuICAgICAgIChjb25kXG4gICAgICAgICh0cnVlPyBmaWVsZClcbiAgICAgICAgKHN0ciBcInNlbGZfXy5cIiBuYW1lKVxuICAgICAgICAobm90IChuaWw/IHJlbmFtZWQpKVxuICAgICAgICByZW5hbWVkXG4gICAgICAgIDplbHNlXG4gICAgICAgIG5hbWUpXG4gICAgICAgbXVuZ2VkLW5hbWVcbiAgICAgICAobXVuZ2UgbmFtZSByZXNlcnZlZCldXG4gICAgICAoaWZcbiAgICAgICAob3IgKHRydWU/IGZpZWxkKSAoemVybz8gZGVwdGgpKVxuICAgICAgIG11bmdlZC1uYW1lXG4gICAgICAgKHN5bWJvbCAoc3RyIG11bmdlZC1uYW1lIFwiX18kXCIgZGVwdGgpKSkpKSlcbiAgIChsZXRcbiAgICBbc3NcbiAgICAgKHN0cmluZy9yZXBsYWNlIChzdHIgcykgXCIuLlwiIFwiX0RPVF9fRE9UX1wiKVxuICAgICBzc1xuICAgICAoc3RyaW5nL3JlcGxhY2VcbiAgICAgIHNzXG4gICAgICAjPyg6Y2xqICNcIlxcLyguKVwiIDpjbGpzIChqcy9SZWdFeHAuIFwiXFxcXC8oLilcIikpXG4gICAgICBcIi4kMVwiKVxuICAgICByZlxuICAgICAobXVuZ2UtcmVzZXJ2ZWQgcmVzZXJ2ZWQpXG4gICAgIHNzXG4gICAgIChtYXAgcmYgKHN0cmluZy9zcGxpdCBzcyAjXCJcXC5cIikpXG4gICAgIHNzXG4gICAgIChzdHJpbmcvam9pbiBcIi5cIiBzcylcbiAgICAgbXNcbiAgICAgIz8oOmNsaiAoY2xvanVyZS5sYW5nLkNvbXBpbGVyL211bmdlIHNzKSA6Y2xqcyAoKHZhciBjbGpzLmNvcmUvbXVuZ2Utc3RyKSBzcykpXVxuICAgIChpZiAoc3ltYm9sPyBzKSAoc3ltYm9sIG1zKSBtcykpKSkpXG4ifSB7OnN5bSBnZXQtZGVmaW5lLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW21uYW1lIGpzZG9jXSl9LCA6c291cmNlICIoZGVmblxuIGdldC1kZWZpbmVcbiBbbW5hbWUganNkb2NdXG4gKGxldFxuICBbb3B0cyAoZ2V0IEBlbnYvKmNvbXBpbGVyKiA6b3B0aW9ucyldXG4gIChhbmRcbiAgIChzb21lXG4gICAgIz8oOmNsaiAoZm4qIFtwMV9fNDMwMTMjXSAoLnN0YXJ0c1dpdGggcDFfXzQzMDEzIyBcIkBkZWZpbmVcIikpIDpjbGpzIChmbiogW3AxX180MzAxNCNdIChnc3RyaW5nL3N0YXJ0c1dpdGggcDFfXzQzMDE0IyBcIkBkZWZpbmVcIikpKVxuICAgIGpzZG9jKVxuICAgb3B0c1xuICAgKD0gKDpvcHRpbWl6YXRpb25zIG9wdHMpIDpub25lKVxuICAgKGxldFxuICAgIFtkZWZpbmUgKGdldC1pbiBvcHRzIFs6Y2xvc3VyZS1kZWZpbmVzIChzdHIgbW5hbWUpXSldXG4gICAgKHdoZW4gKHZhbGlkLWRlZmluZS12YWx1ZT8gZGVmaW5lKSAocHItc3RyIGRlZmluZSkpKSkpKVxuIn0gezpzeW0gdmFsaWQtZGVmaW5lLXZhbHVlPywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmblxuIHZhbGlkLWRlZmluZS12YWx1ZT9cbiBbeF1cbiAob3IgKHN0cmluZz8geCkgKHRydWU/IHgpIChmYWxzZT8geCkgKG51bWJlcj8geCkpKVxuIn0gezpzeW0gZW1pdC1zZXQsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbaXRlbXMgY29tbWEtc2VwIGRpc3RpbmN0LWNvbnN0YW50cz9dKX0sIDpzb3VyY2UgIihkZWZuXG4gZW1pdC1zZXRcbiBbaXRlbXMgY29tbWEtc2VwIGRpc3RpbmN0LWNvbnN0YW50cz9dXG4gKGNvbmRcbiAgKGVtcHR5PyBpdGVtcylcbiAgKGVtaXRzIFwiY2xqcy5jb3JlLlBlcnNpc3RlbnRIYXNoU2V0LkVNUFRZXCIpXG4gIChkaXN0aW5jdC1jb25zdGFudHM/IGl0ZW1zKVxuICAoZW1pdHNcbiAgIFwibmV3IGNsanMuY29yZS5QZXJzaXN0ZW50SGFzaFNldChudWxsLCBuZXcgY2xqcy5jb3JlLlBlcnNpc3RlbnRBcnJheU1hcChudWxsLCBcIlxuICAgKGNvdW50IGl0ZW1zKVxuICAgXCIsIFtcIlxuICAgKGNvbW1hLXNlcCAoaW50ZXJsZWF2ZSBpdGVtcyAocmVwZWF0IFwibnVsbFwiKSkpXG4gICBcIl0sIG51bGwpLCBudWxsKVwiKVxuICA6ZWxzZVxuICAoZW1pdHNcbiAgIFwiY2xqcy5jb3JlLlBlcnNpc3RlbnRIYXNoU2V0LmNyZWF0ZUFzSWZCeUFzc29jKFtcIlxuICAgKGNvbW1hLXNlcCBpdGVtcylcbiAgIFwiXSlcIikpKVxuIn0gezpzeW0gZW1pdHMta2V5d29yZCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtrd10pfSwgOnNvdXJjZSAiKGRlZm5cbiBlbWl0cy1rZXl3b3JkXG4gW2t3XVxuIChsZXRcbiAgW25zIChuYW1lc3BhY2Uga3cpIG5hbWUgKG5hbWUga3cpXVxuICAoZW1pdHMgXCJuZXcgY2xqcy5jb3JlLktleXdvcmQoXCIpXG4gIChlbWl0LWNvbnN0YW50IG5zKVxuICAoZW1pdHMgXCIsXCIpXG4gIChlbWl0LWNvbnN0YW50IG5hbWUpXG4gIChlbWl0cyBcIixcIilcbiAgKGVtaXQtY29uc3RhbnQgKGlmIG5zIChzdHIgbnMgXCIvXCIgbmFtZSkgbmFtZSkpXG4gIChlbWl0cyBcIixcIilcbiAgKGVtaXQtY29uc3RhbnQgKGhhc2gga3cpKVxuICAoZW1pdHMgXCIpXCIpKSlcbiJ9IHs6c3ltICpsZXhpY2FsLXJlbmFtZXMqLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiAqbGV4aWNhbC1yZW5hbWVzKiB7fSlcbiJ9IHs6c3ltIGVtaXQtbGV0LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3tleHByIDpib2R5LCA6a2V5cyBbYmluZGluZ3MgZW52XX0gaXMtbG9vcF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBlbWl0LWxldFxuIFt7ZXhwciA6Ym9keSwgOmtleXMgW2JpbmRpbmdzIGVudl19IGlzLWxvb3BdXG4gKGxldFxuICBbY29udGV4dCAoOmNvbnRleHQgZW52KV1cbiAgKHdoZW4gKD0gOmV4cHIgY29udGV4dCkgKGVtaXRzIFwiKGZ1bmN0aW9uICgpe1wiKSlcbiAgKGJpbmRpbmdcbiAgIFsqbGV4aWNhbC1yZW5hbWVzKlxuICAgIChpbnRvXG4gICAgICpsZXhpY2FsLXJlbmFtZXMqXG4gICAgICh3aGVuXG4gICAgICAoPSA6c3RhdGVtZW50IGNvbnRleHQpXG4gICAgICAobWFwXG4gICAgICAgKGZuXG4gICAgICAgIFtiaW5kaW5nXVxuICAgICAgICAobGV0XG4gICAgICAgICBbbmFtZSAoOm5hbWUgYmluZGluZyldXG4gICAgICAgICAodmVjdG9yIChoYXNoLXNjb3BlIGJpbmRpbmcpIChnZW5zeW0gKHN0ciBuYW1lIFwiLVwiKSkpKSlcbiAgICAgICBiaW5kaW5ncykpKV1cbiAgIChkb3NlcVxuICAgIFt7OmtleXMgW2luaXRdLCA6YXMgYmluZGluZ30gYmluZGluZ3NdXG4gICAgKGVtaXRzIFwidmFyIFwiKVxuICAgIChlbWl0IGJpbmRpbmcpXG4gICAgKGVtaXRsbiBcIiA9IFwiIGluaXQgXCI7XCIpKVxuICAgKHdoZW4gaXMtbG9vcCAoZW1pdGxuIFwid2hpbGUodHJ1ZSl7XCIpKVxuICAgKGVtaXRzIGV4cHIpXG4gICAod2hlbiBpcy1sb29wIChlbWl0bG4gXCJicmVhaztcIikgKGVtaXRsbiBcIn1cIikpKVxuICAod2hlbiAoPSA6ZXhwciBjb250ZXh0KSAoZW1pdHMgXCJ9KSgpXCIpKSkpXG4ifSB7OnN5bSBzdWJsaWItc2VsZWN0LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3N1YmxpYl0pfSwgOnNvdXJjZSAiKGRlZm5cbiBzdWJsaWItc2VsZWN0XG4gW3N1YmxpYl1cbiAod2hlblxuICBzdWJsaWJcbiAgKGxldFxuICAgW3hzIChzdHJpbmcvc3BsaXQgc3VibGliICNcIlxcLlwiKV1cbiAgIChhcHBseSBzdHIgKG1hcCAoZm4qIFtwMV9fNDMwMjAjXSAoc3RyIFwiWydcIiBwMV9fNDMwMjAjIFwiJ11cIikpIHhzKSkpKSlcbiJ9IHs6c3ltIGFsbC1kaXN0aW5jdD8sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbeHNdKX0sIDpzb3VyY2UgIihkZWZuIGFsbC1kaXN0aW5jdD8gW3hzXSAoYXBwbHkgZGlzdGluY3Q/IHhzKSlcbiJ9IHs6c3ltIGNsanMtcmVzZXJ2ZWQtZmlsZS1uYW1lcywgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgY2xqcy1yZXNlcnZlZC1maWxlLW5hbWVzICN7XCJkZXBzLmNsanNcIn0pXG4ifSB7OnN5bSBiYXNlLXR5cGVzLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZlxuIGJhc2UtdHlwZXNcbiAje1wiYm9vbGVhblwiXG4gICBcIm9iamVjdFwiXG4gICBcIipcIlxuICAgXCJzdHJpbmdcIlxuICAgXCJPYmplY3RcIlxuICAgXCJOdW1iZXJcIlxuICAgXCJudWxsXCJcbiAgIFwiRGF0ZVwiXG4gICBcIm51bWJlclwiXG4gICBcIlN0cmluZ1wiXG4gICBcIlJlZ0V4cFwiXG4gICBcIi4uLipcIlxuICAgXCJBcnJheVwiXG4gICBcImFycmF5XCJcbiAgIFwiQm9vbGVhblwifSlcbiJ9IHs6c3ltIHJlc29sdmUtdHlwZSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtlbnYgdF0pfSwgOnNvdXJjZSAiKGRlZm5cbiByZXNvbHZlLXR5cGVcbiBbZW52IHRdXG4gKGNvbmRcbiAgKGdldCBiYXNlLXR5cGVzIHQpXG4gIHRcbiAgKGdldCBtYXBwZWQtdHlwZXMgdClcbiAgKGdldCBtYXBwZWQtdHlwZXMgdClcbiAgIz8oOmNsaiAoLnN0YXJ0c1dpdGggdCBcIiFcIikgOmNsanMgKGdzdHJpbmcvc3RhcnRzV2l0aCB0IFwiIVwiKSlcbiAgKHN0ciBcIiFcIiAocmVzb2x2ZS10eXBlIGVudiAoc3VicyB0IDEpKSlcbiAgIz8oOmNsaiAoLnN0YXJ0c1dpdGggdCBcIntcIikgOmNsanMgKGdzdHJpbmcvc3RhcnRzV2l0aCB0IFwie1wiKSlcbiAgdFxuICAjPyg6Y2xqICguc3RhcnRzV2l0aCB0IFwiZnVuY3Rpb25cIikgOmNsanMgKGdzdHJpbmcvc3RhcnRzV2l0aCB0IFwiZnVuY3Rpb25cIikpXG4gIChsZXRcbiAgIFtpZHhcbiAgICAoLmxhc3RJbmRleE9mIHQgXCI6XCIpXG4gICAgW2ZzdHIgcnN0cl1cbiAgICAoaWYtbm90XG4gICAgICg9PSAtMSBpZHgpXG4gICAgIFsoc3VicyB0IDAgaWR4KSAoc3VicyB0IChpbmMgaWR4KSAoY291bnQgdCkpXVxuICAgICBbdCBuaWxdKVxuICAgIHJldC10XG4gICAgKHdoZW4gcnN0ciAocmVzb2x2ZS10eXBlIGVudiByc3RyKSlcbiAgICBheHN0clxuICAgIChzdWJzIGZzdHIgOSAoZGVjIChjb3VudCBmc3RyKSkpXG4gICAgYXJncy10c1xuICAgICh3aGVuLW5vdFxuICAgICAoc3RyaW5nL2JsYW5rPyBheHN0cilcbiAgICAgKG1hcFxuICAgICAgKGNvbXBcbiAgICAgICAoZm4qIFtwMV9fNDMwMTAjXSAocmVzb2x2ZS10eXBlIGVudiBwMV9fNDMwMTAjKSlcbiAgICAgICBzdHJpbmcvdHJpbSlcbiAgICAgIChzdHJpbmcvc3BsaXQgYXhzdHIgI1wiLFwiKSkpXVxuICAgKGNvbmQtPlxuICAgIChzdHIgXCJmdW5jdGlvbihcIiAoc3RyaW5nL2pvaW4gXCIsXCIgYXJncy10cykgXCIpXCIpXG4gICAgcmV0LXRcbiAgICAoc3RyIFwiOlwiIHJldC10KSkpXG4gICM/KDpjbGogKC5lbmRzV2l0aCB0IFwiPVwiKSA6Y2xqcyAoZ3N0cmluZy9lbmRzV2l0aCB0IFwiPVwiKSlcbiAgKHN0ciAocmVzb2x2ZS10eXBlIGVudiAoc3VicyB0IDAgKGRlYyAoY291bnQgdCkpKSkgXCI9XCIpXG4gIDplbHNlXG4gIChtdW5nZSAoc3RyICg6bmFtZSAoYW5hL3Jlc29sdmUtdmFyIGVudiAoc3ltYm9sIHQpKSkpKSkpXG4ifSB7OnN5bSAqc291cmNlLW1hcC1kYXRhLWdlbi1jb2wqLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiAqc291cmNlLW1hcC1kYXRhLWdlbi1jb2wqIG5pbClcbiJ9IHs6c3ltIGVtaXQtd2l0aC1tZXRhLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2V4cHIgbWV0YV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBlbWl0LXdpdGgtbWV0YVxuIFtleHByIG1ldGFdXG4gKGVtaXRzIFwiY2xqcy5jb3JlLndpdGhfbWV0YShcIiBleHByIFwiLFwiIG1ldGEgXCIpXCIpKVxuIn0gezpzeW0gZW1pdC12YXJpYWRpYy1mbi1tZXRob2QsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbe2V4cHIgOmJvZHksIG1heC1maXhlZC1hcml0eSA6Zml4ZWQtYXJpdHksIHZhcmlhZGljIDp2YXJpYWRpYz8sIDprZXlzIFt0eXBlIG5hbWUgcGFyYW1zIGVudiByZWN1cnNdLCA6YXMgZn1dKX0sIDpzb3VyY2UgIihkZWZuXG4gZW1pdC12YXJpYWRpYy1mbi1tZXRob2RcbiBbe2V4cHIgOmJvZHksXG4gICBtYXgtZml4ZWQtYXJpdHkgOmZpeGVkLWFyaXR5LFxuICAgdmFyaWFkaWMgOnZhcmlhZGljPyxcbiAgIDprZXlzIFt0eXBlIG5hbWUgcGFyYW1zIGVudiByZWN1cnNdLFxuICAgOmFzIGZ9XVxuIChlbWl0LXdyYXBcbiAgZW52XG4gIChsZXRcbiAgIFtuYW1lXG4gICAgKG9yIG5hbWUgKGdlbnN5bSkpXG4gICAgbW5hbWVcbiAgICAobXVuZ2UgbmFtZSlcbiAgICBkZWxlZ2F0ZS1uYW1lXG4gICAgKHN0ciBtbmFtZSBcIl9fZGVsZWdhdGVcIildXG4gICAoZW1pdGxuIFwiKGZ1bmN0aW9uKCkgeyBcIilcbiAgIChlbWl0cyBcInZhciBcIiBkZWxlZ2F0ZS1uYW1lIFwiID0gZnVuY3Rpb24gKFwiKVxuICAgKGRvc2VxXG4gICAgW3BhcmFtIHBhcmFtc11cbiAgICAoZW1pdCBwYXJhbSlcbiAgICAod2hlbi1ub3QgKD0gcGFyYW0gKGxhc3QgcGFyYW1zKSkgKGVtaXRzIFwiLFwiKSkpXG4gICAoZW1pdGxuIFwiKXtcIilcbiAgICh3aGVuIHR5cGUgKGVtaXRsbiBcInZhciBzZWxmX18gPSB0aGlzO1wiKSlcbiAgICh3aGVuIHJlY3VycyAoZW1pdGxuIFwid2hpbGUodHJ1ZSl7XCIpKVxuICAgKGVtaXRzIGV4cHIpXG4gICAod2hlbiByZWN1cnMgKGVtaXRsbiBcImJyZWFrO1wiKSAoZW1pdGxuIFwifVwiKSlcbiAgIChlbWl0bG4gXCJ9O1wiKVxuICAgKGVtaXRsblxuICAgIFwidmFyIFwiXG4gICAgbW5hbWVcbiAgICBcIiA9IGZ1bmN0aW9uIChcIlxuICAgIChjb21tYS1zZXBcbiAgICAgKGlmIHZhcmlhZGljIChjb25jYXQgKGJ1dGxhc3QgcGFyYW1zKSBbJ3Zhcl9hcmdzXSkgcGFyYW1zKSlcbiAgICBcIil7XCIpXG4gICAod2hlbiB0eXBlIChlbWl0bG4gXCJ2YXIgc2VsZl9fID0gdGhpcztcIikpXG4gICAod2hlblxuICAgIHZhcmlhZGljXG4gICAgKGVtaXRzIFwidmFyIFwiKVxuICAgIChlbWl0IChsYXN0IHBhcmFtcykpXG4gICAgKGVtaXRsbiBcIiA9IG51bGw7XCIpXG4gICAgKGVtaXRsbiBcImlmIChhcmd1bWVudHMubGVuZ3RoID4gXCIgKGRlYyAoY291bnQgcGFyYW1zKSkgXCIpIHtcIilcbiAgICAobGV0XG4gICAgIFthIChlbWl0LWFyZ3VtZW50cy10by1hcnJheSAoZGVjIChjb3VudCBwYXJhbXMpKSldXG4gICAgIChlbWl0bG5cbiAgICAgIFwiICBcIlxuICAgICAgKGxhc3QgcGFyYW1zKVxuICAgICAgXCIgPSBuZXcgY2xqcy5jb3JlLkluZGV4ZWRTZXEoXCJcbiAgICAgIGFcbiAgICAgIFwiLDAsbnVsbCk7XCIpKVxuICAgIChlbWl0bG4gXCJ9IFwiKSlcbiAgIChlbWl0cyBcInJldHVybiBcIiBkZWxlZ2F0ZS1uYW1lIFwiLmNhbGwodGhpcyxcIilcbiAgIChkb3NlcVxuICAgIFtwYXJhbSBwYXJhbXNdXG4gICAgKGVtaXQgcGFyYW0pXG4gICAgKHdoZW4tbm90ICg9IHBhcmFtIChsYXN0IHBhcmFtcykpIChlbWl0cyBcIixcIikpKVxuICAgKGVtaXRzIFwiKTtcIilcbiAgIChlbWl0bG4gXCJ9O1wiKVxuICAgKGVtaXRsbiBtbmFtZSBcIi5jbGpzJGxhbmckbWF4Rml4ZWRBcml0eSA9IFwiIG1heC1maXhlZC1hcml0eSBcIjtcIilcbiAgIChlbWl0cyBtbmFtZSBcIi5jbGpzJGxhbmckYXBwbHlUbyA9IFwiKVxuICAgKGVtaXQtYXBwbHktdG8gKGFzc29jIGYgOm5hbWUgbmFtZSkpXG4gICAoZW1pdGxuIFwiO1wiKVxuICAgKGVtaXRsblxuICAgIG1uYW1lXG4gICAgXCIuY2xqcyRjb3JlJElGbiRfaW52b2tlJGFyaXR5JHZhcmlhZGljID0gXCJcbiAgICBkZWxlZ2F0ZS1uYW1lXG4gICAgXCI7XCIpXG4gICAoZW1pdGxuIFwicmV0dXJuIFwiIG1uYW1lIFwiO1wiKVxuICAgKGVtaXRsbiBcIn0pKClcIikpKSlcbiJ9IHs6c3ltIGpzLXJlc2VydmVkLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiBqcy1yZXNlcnZlZCBhbmEvanMtcmVzZXJ2ZWQpXG4ifSB7OnN5bSAqcmVjb21waWxlZCosIDptZXRhIHt9LCA6c291cmNlICIoZGVmICpyZWNvbXBpbGVkKiBuaWwpXG4ifSB7OnN5bSBlbWl0cywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgW1tdIFthXSBbYSBiXSBbYSBiIGNdIFthIGIgYyBkXSBbYSBiIGMgZCBlXSBbYSBiIGMgZCBlICYgeHNdXX0sIDpzb3VyY2UgIihkZWZuXG4gZW1pdHNcbiAoW10pXG4gKFthXVxuICAoY29uZFxuICAgKG5pbD8gYSlcbiAgIG5pbFxuICAgIz8oOmNsaiAobWFwPyBhKSA6Y2xqcyAoYW5hLmltcGwvY2xqcy1tYXA/IGEpKVxuICAgKGVtaXQgYSlcbiAgICM/KDpjbGogKHNlcT8gYSkgOmNsanMgKGFuYS5pbXBsL2NsanMtc2VxPyBhKSlcbiAgIChhcHBseSBlbWl0cyBhKVxuICAgIz8oOmNsaiAoZm4/IGEpIDpjbGpzIChqcy1mbj8gYSkpXG4gICAoYSlcbiAgIDplbHNlXG4gICAobGV0XG4gICAgW3MgKGNvbmQtPiBhIChub3QgKHN0cmluZz8gYSkpIC50b1N0cmluZyldXG4gICAgIz8oOmNsaiAod2hlbi1zb21lIFtnZW4tY29sICpzb3VyY2UtbWFwLWRhdGEtZ2VuLWNvbCpdICguYWRkQW5kR2V0IGdlbi1jb2wgKC5sZW5ndGggcykpKSA6Y2xqcyAod2hlbi1zb21lIFtzbS1kYXRhICpzb3VyY2UtbWFwLWRhdGEqXSAoc3dhcCEgc20tZGF0YSB1cGRhdGUgOmdlbi1jb2wgKGZuKiBbcDFfXzQzMDA1I10gKCsgcDFfXzQzMDA1IyAoLi1sZW5ndGggcykpKSkpKVxuICAgICM/KDpjbGogKC53cml0ZSAqb3V0KiBzKSA6Y2xqcyAocHJpbnQgcykpKSlcbiAgbmlsKVxuIChbYSBiXSAoZW1pdHMgYSkgKGVtaXRzIGIpKVxuIChbYSBiIGNdIChlbWl0cyBhKSAoZW1pdHMgYikgKGVtaXRzIGMpKVxuIChbYSBiIGMgZF0gKGVtaXRzIGEpIChlbWl0cyBiKSAoZW1pdHMgYykgKGVtaXRzIGQpKVxuIChbYSBiIGMgZCBlXSAoZW1pdHMgYSkgKGVtaXRzIGIpIChlbWl0cyBjKSAoZW1pdHMgZCkgKGVtaXRzIGUpKVxuIChbYSBiIGMgZCBlICYgeHNdXG4gIChlbWl0cyBhKVxuICAoZW1pdHMgYilcbiAgKGVtaXRzIGMpXG4gIChlbWl0cyBkKVxuICAoZW1pdHMgZSlcbiAgKGRvc2VxIFt4IHhzXSAoZW1pdHMgeCkpKSlcbiJ9IHs6c3ltIGVtaXQtY29uc3RhbnQsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbdl0pfSwgOnNvdXJjZSAiKGRlZm5cbiBlbWl0LWNvbnN0YW50XG4gW3ZdXG4gKGxldFxuICBbbSAoYW5hL2VsaWRlLWlycmVsZXZhbnQtbWV0YSAobWV0YSB2KSldXG4gIChpZlxuICAgKHNvbWU/IChzZXEgbSkpXG4gICAoZW1pdC13aXRoLW1ldGFcbiAgICAoZm4qIFtdIChlbWl0LWNvbnN0YW50LW5vLW1ldGEgdikpXG4gICAgKGZuKiBbXSAoZW1pdC1jb25zdGFudC1uby1tZXRhIG0pKSlcbiAgIChlbWl0LWNvbnN0YW50LW5vLW1ldGEgdikpKSlcbiJ9IHs6c3ltIGVtaXQtZG90LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3s6a2V5cyBbdGFyZ2V0IGZpZWxkIG1ldGhvZCBhcmdzIGVudl19XSl9LCA6c291cmNlICIoZGVmblxuIGVtaXQtZG90XG4gW3s6a2V5cyBbdGFyZ2V0IGZpZWxkIG1ldGhvZCBhcmdzIGVudl19XVxuIChlbWl0LXdyYXBcbiAgZW52XG4gIChpZlxuICAgZmllbGRcbiAgIChlbWl0cyB0YXJnZXQgXCIuXCIgKG11bmdlIGZpZWxkICN7fSkpXG4gICAoZW1pdHMgdGFyZ2V0IFwiLlwiIChtdW5nZSBtZXRob2QgI3t9KSBcIihcIiAoY29tbWEtc2VwIGFyZ3MpIFwiKVwiKSkpKVxuIn0gezpzeW0gZW1pdC1jb25zdGFudHMtdGFibGUsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbdGFibGVdKX0sIDpzb3VyY2UgIihkZWZuXG4gZW1pdC1jb25zdGFudHMtdGFibGVcbiBbdGFibGVdXG4gKGVtaXRsbiBcImdvb2cucHJvdmlkZSgnXCIgKG11bmdlIGFuYS9jb25zdGFudHMtbnMtc3ltKSBcIicpO1wiKVxuIChlbWl0bG4gXCJnb29nLnJlcXVpcmUoJ2NsanMuY29yZScpO1wiKVxuIChkb3NlcVxuICBbW3N5bSB2YWx1ZV0gdGFibGVdXG4gIChsZXRcbiAgIFtucyAobmFtZXNwYWNlIHN5bSkgbmFtZSAobmFtZSBzeW0pXVxuICAgKGVtaXRzIFwiY2xqcy5jb3JlLlwiIHZhbHVlIFwiID0gXCIpXG4gICAoY29uZFxuICAgIChrZXl3b3JkPyBzeW0pXG4gICAgKGVtaXRzLWtleXdvcmQgc3ltKVxuICAgIChzeW1ib2w/IHN5bSlcbiAgICAoZW1pdHMtc3ltYm9sIHN5bSlcbiAgICA6ZWxzZVxuICAgICh0aHJvd1xuICAgICAoZXgtaW5mb1xuICAgICAgKHN0ciBcIkNhbm5vdCBlbWl0IGNvbnN0YW50IGZvciB0eXBlIFwiICh0eXBlIHN5bSkpXG4gICAgICB7OmVycm9yIDppbnZhbGlkLWNvbnN0YW50LXR5cGUsXG4gICAgICAgOmNsb2p1cmUuZXJyb3IvcGhhc2UgOmNvbXBpbGF0aW9ufSkpKVxuICAgKGVtaXRzIFwiO1xcblwiKSkpKVxuIn0gezpzeW0gZW1pdC1saXN0LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2l0ZW1zIGNvbW1hLXNlcF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBlbWl0LWxpc3RcbiBbaXRlbXMgY29tbWEtc2VwXVxuIChpZlxuICAoZW1wdHk/IGl0ZW1zKVxuICAoZW1pdHMgXCJjbGpzLmNvcmUuTGlzdC5FTVBUWVwiKVxuICAoZW1pdHMgXCJjbGpzLmNvcmUubGlzdChcIiAoY29tbWEtc2VwIGl0ZW1zKSBcIilcIikpKVxuIn0gezpzeW0gZ2V0LWZpcnN0LW5zLXNlZ21lbnQsIDptZXRhIHs6ZG9jICJHZXRzIHRoZSBwYXJ0IHVwIHRvIHRoZSBmaXJzdCBgLmAgb2YgYSBuYW1lc3BhY2UuXG4gICBSZXR1cm5zIHRoZSBlbXB0eSBzdHJpbmcgZm9yIG5pbC5cbiAgIFJldHVybnMgdGhlIGVudGlyZSBzdHJpbmcgaWYgbm8gYC5gIGluIG5hbWVzcGFjZSIsIDphcmdsaXN0cyAoW25zXSl9LCA6c291cmNlICIoZGVmblxuIGdldC1maXJzdC1ucy1zZWdtZW50XG4gXCJHZXRzIHRoZSBwYXJ0IHVwIHRvIHRoZSBmaXJzdCBgLmAgb2YgYSBuYW1lc3BhY2UuXFxuICAgUmV0dXJucyB0aGUgZW1wdHkgc3RyaW5nIGZvciBuaWwuXFxuICAgUmV0dXJucyB0aGUgZW50aXJlIHN0cmluZyBpZiBubyBgLmAgaW4gbmFtZXNwYWNlXCJcbiBbbnNdXG4gKGxldFxuICBbbnMgKHN0ciBucykgaWR4ICguaW5kZXhPZiBucyBcIi5cIildXG4gIChpZiAoPT0gLTEgaWR4KSBucyAoc3VicyBucyAwIGlkeCkpKSlcbiJ9IHs6c3ltIGVtaXQtZm4tcGFyYW1zLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3BhcmFtc10pfSwgOnNvdXJjZSAiKGRlZm5cbiBlbWl0LWZuLXBhcmFtc1xuIFtwYXJhbXNdXG4gKGRvc2VxXG4gIFtwYXJhbSBwYXJhbXNdXG4gIChlbWl0IHBhcmFtKVxuICAod2hlbi1ub3QgKD0gcGFyYW0gKGxhc3QgcGFyYW1zKSkgKGVtaXRzIFwiLFwiKSkpKVxuIn0gezpzeW0gbXVuZ2UtcmVzZXJ2ZWQsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbcmVzZXJ2ZWRdKX0sIDpzb3VyY2UgIihkZWZuXG4gbXVuZ2UtcmVzZXJ2ZWRcbiBbcmVzZXJ2ZWRdXG4gKGZuIFtzXSAoaWYtbm90IChuaWw/IChnZXQgcmVzZXJ2ZWQgcykpIChzdHIgcyBcIiRcIikgcykpKVxuIn0gezpzeW0gZm4tc2VsZi1uYW1lLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3s6a2V5cyBbbmFtZSBpbmZvXSwgOmFzIG5hbWUtdmFyfV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBmbi1zZWxmLW5hbWVcbiBbezprZXlzIFtuYW1lIGluZm9dLCA6YXMgbmFtZS12YXJ9XVxuIChsZXRcbiAgW25hbWVcbiAgIChzdHJpbmcvcmVwbGFjZSAoc3RyIG5hbWUpIFwiLi5cIiBcIl9ET1RfX0RPVF9cIilcbiAgIHs6a2V5cyBbbnMgZm4tc2NvcGVdfVxuICAgaW5mb1xuICAgc2NvcGVkLW5hbWVcbiAgIChhcHBseVxuICAgIHN0clxuICAgIChpbnRlcnBvc2UgXCJfJF9cIiAoY29uY2F0IChtYXAgKGNvbXAgc3RyIDpuYW1lKSBmbi1zY29wZSkgW25hbWVdKSkpXVxuICAoc3ltYm9sXG4gICAobXVuZ2UgKHN0ciAoc3RyaW5nL3JlcGxhY2UgKHN0ciBucykgXCIuXCIgXCIkXCIpIFwiJFwiIHNjb3BlZC1uYW1lKSkpKSlcbiJ9IHs6c3ltIGxvYWQtbGlicywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtsaWJzIHNlZW4gcmVsb2FkcyBkZXBzIG5zLW5hbWVdKX0sIDpzb3VyY2UgIihkZWZuXG4gbG9hZC1saWJzXG4gW2xpYnMgc2VlbiByZWxvYWRzIGRlcHMgbnMtbmFtZV1cbiAobGV0XG4gIFt7OmtleXMgW29wdGlvbnMganMtZGVwZW5kZW5jeS1pbmRleF19XG4gICBAZW52Lypjb21waWxlcipcbiAgIHs6a2V5cyBbdGFyZ2V0IG5vZGVqcy1ydCBvcHRpbWl6YXRpb25zXX1cbiAgIG9wdGlvbnNcbiAgIGxvYWRlZC1saWJzXG4gICAobXVuZ2UgJ2NsanMuY29yZS4qbG9hZGVkLWxpYnMqKVxuICAgbG9hZGVkLWxpYnMtdGVtcFxuICAgKG11bmdlIChnZW5zeW0gJ2NsanMuY29yZS4qbG9hZGVkLWxpYnMqKSlcbiAgIFtub2RlLWxpYnMgbGlicy10by1sb2FkXVxuICAgKGxldFxuICAgIFtsaWJzIChyZW1vdmUgKHNldCAodmFscyBzZWVuKSkgKGZpbHRlciAoc2V0ICh2YWxzIGxpYnMpKSBkZXBzKSldXG4gICAgKGlmXG4gICAgICg9IDpub2RlanMgdGFyZ2V0KVxuICAgICAobGV0XG4gICAgICBbe25vZGUtbGlicyB0cnVlLCBsaWJzLXRvLWxvYWQgZmFsc2V9XG4gICAgICAgKGdyb3VwLWJ5IGFuYS9ub2RlLW1vZHVsZS1kZXA/IGxpYnMpXVxuICAgICAgW25vZGUtbGlicyBsaWJzLXRvLWxvYWRdKVxuICAgICBbbmlsIGxpYnNdKSlcbiAgIFtnb29nLW1vZHVsZXMgbGlicy10by1sb2FkXVxuICAgKGxldFxuICAgIFt7Z29vZy1tb2R1bGVzIHRydWUsIGxpYnMtdG8tbG9hZCBmYWxzZX1cbiAgICAgKGdyb3VwLWJ5IGFuYS9nb29nLW1vZHVsZS1kZXA/IGxpYnMtdG8tbG9hZCldXG4gICAgW2dvb2ctbW9kdWxlcyBsaWJzLXRvLWxvYWRdKVxuICAgZ2xvYmFsLWV4cG9ydHMtbGlic1xuICAgKGZpbHRlciBhbmEvZGVwLWhhcy1nbG9iYWwtZXhwb3J0cz8gbGlicy10by1sb2FkKV1cbiAgKHdoZW5cbiAgICgtPiBsaWJzIG1ldGEgOnJlbG9hZC1hbGwpXG4gICAoZW1pdGxuXG4gICAgXCJpZighQ09NUElMRUQpIFwiXG4gICAgbG9hZGVkLWxpYnMtdGVtcFxuICAgIFwiID0gXCJcbiAgICBsb2FkZWQtbGlic1xuICAgIFwiIHx8IGNsanMuY29yZS5zZXQoW1xcXCJjbGpzLmNvcmVcXFwiXSk7XCIpXG4gICAoZW1pdGxuXG4gICAgXCJpZighQ09NUElMRUQpIFwiXG4gICAgbG9hZGVkLWxpYnNcbiAgICBcIiA9IGNsanMuY29yZS5zZXQoW1xcXCJjbGpzLmNvcmVcXFwiXSk7XCIpKVxuICAoZG9zZXFcbiAgIFtsaWIgbGlicy10by1sb2FkXVxuICAgKGNvbmRcbiAgICAjP0AoOmNsaiBbKGFuYS9mb3JlaWduLWRlcD8gbGliKSAod2hlbiAoYW5kICg9IDpub25lIG9wdGltaXphdGlvbnMpIChub3QgKGNvbnRhaW5zPyBvcHRpb25zIDptb2R1bGVzKSkpIChsZXQgW1tsaWIgX10gKGFuYS9saWImc3VibGliIGxpYildIChpZiBub2RlanMtcnQgKGxldCBbaWpzIChnZXQganMtZGVwZW5kZW5jeS1pbmRleCAobmFtZSBsaWIpKV0gKGVtaXRsbiBcImNsanMuY29yZS5sb2FkX2ZpbGUoXCIgKC0+IChpby9maWxlICh1dGlsL291dHB1dC1kaXJlY3Rvcnkgb3B0aW9ucykgKG9yIChkZXBzLy1yZWxhdGl2ZS1wYXRoIGlqcykgKHV0aWwvcmVsYXRpdmUtbmFtZSAoOnVybCBpanMpKSkpIHN0ciBlc2NhcGUtc3RyaW5nIHdyYXAtaW4tZG91YmxlLXF1b3RlcykgXCIpO1wiKSkgKGVtaXRsbiBcImdvb2cucmVxdWlyZSgnXCIgKG11bmdlIGxpYikgXCInKTtcIikpKSldIDpjbGpzIFsoYW5kIChhbmEvZm9yZWlnbi1kZXA/IGxpYikgKG5vdCAoa2V5d29yZC1pZGVudGljYWw/IG9wdGltaXphdGlvbnMgOm5vbmUpKSkgbmlsXSlcbiAgICAob3IgKC0+IGxpYnMgbWV0YSA6cmVsb2FkKSAoPSAoZ2V0IHJlbG9hZHMgbGliKSA6cmVsb2FkKSlcbiAgICAoZW1pdGxuIFwiZ29vZy5yZXF1aXJlKCdcIiAobXVuZ2UgbGliKSBcIicsICdyZWxvYWQnKTtcIilcbiAgICAob3IgKC0+IGxpYnMgbWV0YSA6cmVsb2FkLWFsbCkgKD0gKGdldCByZWxvYWRzIGxpYikgOnJlbG9hZC1hbGwpKVxuICAgIChlbWl0bG4gXCJnb29nLnJlcXVpcmUoJ1wiIChtdW5nZSBsaWIpIFwiJywgJ3JlbG9hZC1hbGwnKTtcIilcbiAgICA6ZWxzZVxuICAgICh3aGVuLW5vdFxuICAgICAoPSBsaWIgJ2dvb2cpXG4gICAgIChlbWl0bG4gXCJnb29nLnJlcXVpcmUoJ1wiIChtdW5nZSBsaWIpIFwiJyk7XCIpKSkpXG4gIChkb3NlcVxuICAgW2xpYiBub2RlLWxpYnNdXG4gICAobGV0XG4gICAgW1tsaWInIHN1YmxpYl0gKGFuYS9saWImc3VibGliIGxpYildXG4gICAgKGVtaXRsblxuICAgICAobXVuZ2UgbnMtbmFtZSlcbiAgICAgXCIuXCJcbiAgICAgKGFuYS9tdW5nZS1ub2RlLWxpYiBsaWIpXG4gICAgIFwiID0gcmVxdWlyZSgnXCJcbiAgICAgbGliJ1xuICAgICBcIicpXCJcbiAgICAgKHN1YmxpYi1zZWxlY3Qgc3VibGliKVxuICAgICBcIjtcIikpKVxuICAoZG9zZXFcbiAgIFtsaWIgZ29vZy1tb2R1bGVzXVxuICAgKGxldFxuICAgIFtbbGliJyBzdWJsaWJdIChhbmEvbGliJnN1YmxpYiBsaWIpXVxuICAgIChlbWl0bG4gXCJnb29nLnJlcXVpcmUoJ1wiIGxpYicgXCInKTtcIilcbiAgICAoZW1pdGxuIFwiZ29vZy5zY29wZShmdW5jdGlvbigpe1wiKVxuICAgIChlbWl0bG5cbiAgICAgKG11bmdlIG5zLW5hbWUpXG4gICAgIFwiLlwiXG4gICAgIChhbmEvbXVuZ2UtZ29vZy1tb2R1bGUtbGliIGxpYilcbiAgICAgXCIgPSBnb29nLm1vZHVsZS5nZXQoJ1wiXG4gICAgIGxpYidcbiAgICAgXCInKVwiXG4gICAgIChzdWJsaWItc2VsZWN0IHN1YmxpYilcbiAgICAgXCI7XCIpXG4gICAgKGVtaXRsbiBcIn0pO1wiKSkpXG4gIChkb3NlcVxuICAgW2xpYiBnbG9iYWwtZXhwb3J0cy1saWJzXVxuICAgKGxldFxuICAgIFt7OmtleXMgW2dsb2JhbC1leHBvcnRzXX1cbiAgICAgKGdldCBqcy1kZXBlbmRlbmN5LWluZGV4IChuYW1lICgtPiBsaWIgYW5hL2xpYiZzdWJsaWIgZmlyc3QpKSldXG4gICAgKGVtaXQtZ2xvYmFsLWV4cG9ydCBucy1uYW1lIGdsb2JhbC1leHBvcnRzIGxpYikpKVxuICAod2hlblxuICAgKC0+IGxpYnMgbWV0YSA6cmVsb2FkLWFsbClcbiAgIChlbWl0bG5cbiAgICBcImlmKCFDT01QSUxFRCkgXCJcbiAgICBsb2FkZWQtbGlic1xuICAgIFwiID0gY2xqcy5jb3JlLmludG8oXCJcbiAgICBsb2FkZWQtbGlicy10ZW1wXG4gICAgXCIsIFwiXG4gICAgbG9hZGVkLWxpYnNcbiAgICBcIik7XCIpKSkpXG4ifSB7OnN5bSBtdW5nZS1wYXJhbS1yZXR1cm4sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZW52IGxpbmVdKX0sIDpzb3VyY2UgIihkZWZuXG4gbXVuZ2UtcGFyYW0tcmV0dXJuXG4gW2VudiBsaW5lXVxuIChjb25kXG4gIChyZS1maW5kICNcIkBwYXJhbVwiIGxpbmUpXG4gIChsZXRcbiAgIFtbcCB0cyBuICYgeHNdXG4gICAgKG1hcCBzdHJpbmcvdHJpbSAoc3RyaW5nL3NwbGl0IChzdHJpbmcvdHJpbSBsaW5lKSAjXCIgXCIpKV1cbiAgIChpZlxuICAgIChhbmRcbiAgICAgKD0gXCJAcGFyYW1cIiBwKVxuICAgICB0c1xuICAgICAjPyg6Y2xqICguc3RhcnRzV2l0aCB0cyBcIntcIikgOmNsanMgKGdzdHJpbmcvc3RhcnRzV2l0aCB0cyBcIntcIikpKVxuICAgIChzdHJpbmcvam9pbiBcIiBcIiAoY29uY2F0IFtwIChyZXNvbHZlLXR5cGVzIGVudiB0cykgKG11bmdlIG4pXSB4cykpXG4gICAgbGluZSkpXG4gIChyZS1maW5kICNcIkByZXR1cm5cIiBsaW5lKVxuICAobGV0XG4gICBbW3AgdHMgJiB4c11cbiAgICAobWFwIHN0cmluZy90cmltIChzdHJpbmcvc3BsaXQgKHN0cmluZy90cmltIGxpbmUpICNcIiBcIikpXVxuICAgKGlmXG4gICAgKGFuZFxuICAgICAoPSBcIkByZXR1cm5cIiBwKVxuICAgICB0c1xuICAgICAjPyg6Y2xqICguc3RhcnRzV2l0aCB0cyBcIntcIikgOmNsanMgKGdzdHJpbmcvc3RhcnRzV2l0aCB0cyBcIntcIikpKVxuICAgIChzdHJpbmcvam9pbiBcIiBcIiAoY29uY2F0IFtwIChyZXNvbHZlLXR5cGVzIGVudiB0cyldIHhzKSlcbiAgICBsaW5lKSlcbiAgOmVsc2VcbiAgbGluZSkpXG4ifSB7OnN5bSBlbWl0LWpzLWFycmF5LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2l0ZW1zIGNvbW1hLXNlcF0pfSwgOnNvdXJjZSAiKGRlZm4gZW1pdC1qcy1hcnJheSBbaXRlbXMgY29tbWEtc2VwXSAoZW1pdHMgXCJbXCIgKGNvbW1hLXNlcCBpdGVtcykgXCJdXCIpKVxuIn0gezpzeW0gZmluZC1ucy1zdGFydHMtd2l0aCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtuZWVkbGVdKX0sIDpzb3VyY2UgIihkZWZuXG4gZmluZC1ucy1zdGFydHMtd2l0aFxuIFtuZWVkbGVdXG4gKHJlZHVjZS1rdlxuICAoZm5cbiAgIFt4cyBucyBfXVxuICAgKHdoZW4gKD0gbmVlZGxlIChnZXQtZmlyc3QtbnMtc2VnbWVudCBucykpIChyZWR1Y2VkIG5lZWRsZSkpKVxuICBuaWxcbiAgKDpjbGpzLmFuYWx5emVyL25hbWVzcGFjZXMgQGVudi8qY29tcGlsZXIqKSkpXG4ifSB7OnN5bSBjaGVja2luZy10eXBlcz8sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbXSl9LCA6c291cmNlICIoZGVmblxuIGNoZWNraW5nLXR5cGVzP1xuIFtdXG4gKCN7Ondhcm5pbmcgOmVycm9yfVxuICAoZ2V0LWluIEBlbnYvKmNvbXBpbGVyKiBbOm9wdGlvbnMgOmNsb3N1cmUtd2FybmluZ3MgOmNoZWNrLXR5cGVzXSkpKVxuIn0gezpzeW0gZW1pdC1mbi1tZXRob2QsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbe2V4cHIgOmJvZHksIDprZXlzIFt0eXBlIG5hbWUgcGFyYW1zIGVudiByZWN1cnNdfV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBlbWl0LWZuLW1ldGhvZFxuIFt7ZXhwciA6Ym9keSwgOmtleXMgW3R5cGUgbmFtZSBwYXJhbXMgZW52IHJlY3Vyc119XVxuIChlbWl0LXdyYXBcbiAgZW52XG4gIChlbWl0cyBcIihmdW5jdGlvbiBcIiAobXVuZ2UgbmFtZSkgXCIoXCIpXG4gIChlbWl0LWZuLXBhcmFtcyBwYXJhbXMpXG4gIChlbWl0bG4gXCIpe1wiKVxuICAod2hlbiB0eXBlIChlbWl0bG4gXCJ2YXIgc2VsZl9fID0gdGhpcztcIikpXG4gICh3aGVuIHJlY3VycyAoZW1pdGxuIFwid2hpbGUodHJ1ZSl7XCIpKVxuICAoZW1pdHMgZXhwcilcbiAgKHdoZW4gcmVjdXJzIChlbWl0bG4gXCJicmVhaztcIikgKGVtaXRsbiBcIn1cIikpXG4gIChlbWl0cyBcIn0pXCIpKSlcbiJ9IHs6c3ltIGVtaXQtY29tbWVudCwgOm1ldGEgezpkb2MgIkVtaXQgYSBuaWNlbHkgZm9ybWF0dGVkIGNvbW1lbnQgc3RyaW5nLiIsIDphcmdsaXN0cyBbW2RvYyBqc2RvY10gW2VudiBkb2MganNkb2NdXX0sIDpzb3VyY2UgIihkZWZuXG4gZW1pdC1jb21tZW50XG4gXCJFbWl0IGEgbmljZWx5IGZvcm1hdHRlZCBjb21tZW50IHN0cmluZy5cIlxuIChbZG9jIGpzZG9jXSAoZW1pdC1jb21tZW50IG5pbCBkb2MganNkb2MpKVxuIChbZW52IGRvYyBqc2RvY11cbiAgKGxldFxuICAgW2RvY3NcbiAgICAod2hlbiBkb2MgW2RvY10pXG4gICAgZG9jc1xuICAgIChpZiBqc2RvYyAoY29uY2F0IGRvY3MganNkb2MpIGRvY3MpXG4gICAgZG9jc1xuICAgIChyZW1vdmUgbmlsPyBkb2NzKV1cbiAgIChsZXRmblxuICAgIFsocHJpbnQtY29tbWVudC1saW5lc1xuICAgICAgW2VdXG4gICAgICAobGV0XG4gICAgICAgW1t4ICYgeXNdXG4gICAgICAgIChtYXBcbiAgICAgICAgIChmbipcbiAgICAgICAgICBbcDFfXzQzMDEyI11cbiAgICAgICAgICAoaWZcbiAgICAgICAgICAgKGNoZWNraW5nLXR5cGVzPylcbiAgICAgICAgICAgKG11bmdlLXBhcmFtLXJldHVybiBlbnYgcDFfXzQzMDEyIylcbiAgICAgICAgICAgcDFfXzQzMDEyIykpXG4gICAgICAgICAoc3RyaW5nL3NwbGl0LWxpbmVzIGUpKV1cbiAgICAgICAoZW1pdGxuIFwiICogXCIgKHN0cmluZy9yZXBsYWNlIHggXCIqL1wiIFwiKiAvXCIpKVxuICAgICAgIChkb3NlcVxuICAgICAgICBbbmV4dC1saW5lIHlzXVxuICAgICAgICAoZW1pdGxuXG4gICAgICAgICBcIiAqIFwiXG4gICAgICAgICAoLT5cbiAgICAgICAgICBuZXh0LWxpbmVcbiAgICAgICAgICAoc3RyaW5nL3JlcGxhY2UgI1wiXiAgIFwiIFwiXCIpXG4gICAgICAgICAgKHN0cmluZy9yZXBsYWNlIFwiKi9cIiBcIiogL1wiKSkpKSkpXVxuICAgICh3aGVuXG4gICAgIChzZXEgZG9jcylcbiAgICAgKGVtaXRsbiBcIi8qKlwiKVxuICAgICAoZG9zZXEgW2UgZG9jc10gKHdoZW4gZSAocHJpbnQtY29tbWVudC1saW5lcyBlKSkpXG4gICAgIChlbWl0bG4gXCIgKi9cIikpKSkpKVxuIn0gezpzeW0gaGFzaC1zY29wZSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtzXSl9LCA6c291cmNlICIoZGVmblxuIGhhc2gtc2NvcGVcbiBbc11cbiAoaGFzaC1jb21iaW5lXG4gICM/KDpjbGogKGhhc2ggKDpuYW1lIHMpKSA6Y2xqcyAoLWhhc2ggKDpuYW1lIHMpKSlcbiAgKHNoYWRvdy1kZXB0aCBzKSkpXG4ifSB7OnN5bSBlbWl0LWFwcGx5LXRvLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3s6a2V5cyBbbmFtZSBwYXJhbXMgZW52XX1dKX0sIDpzb3VyY2UgIihkZWZuXG4gZW1pdC1hcHBseS10b1xuIFt7OmtleXMgW25hbWUgcGFyYW1zIGVudl19XVxuIChsZXRcbiAgW2FyZ2xpc3RcbiAgIChnZW5zeW0gXCJhcmdsaXN0X19cIilcbiAgIGRlbGVnYXRlLW5hbWVcbiAgIChzdHIgKG11bmdlIG5hbWUpIFwiX19kZWxlZ2F0ZVwiKV1cbiAgKGVtaXRsbiBcIihmdW5jdGlvbiAoXCIgYXJnbGlzdCBcIil7XCIpXG4gIChkb3NlcVxuICAgW1tpIHBhcmFtXSAobWFwLWluZGV4ZWQgdmVjdG9yIChkcm9wLWxhc3QgMiBwYXJhbXMpKV1cbiAgIChlbWl0cyBcInZhciBcIilcbiAgIChlbWl0IHBhcmFtKVxuICAgKGVtaXRzIFwiID0gY2xqcy5jb3JlLmZpcnN0KFwiKVxuICAgKGVtaXRsbiBhcmdsaXN0IFwiKTtcIilcbiAgIChlbWl0bG4gYXJnbGlzdCBcIiA9IGNsanMuY29yZS5uZXh0KFwiIGFyZ2xpc3QgXCIpO1wiKSlcbiAgKGlmXG4gICAoPCAxIChjb3VudCBwYXJhbXMpKVxuICAgKGRvXG4gICAgKGVtaXRzIFwidmFyIFwiKVxuICAgIChlbWl0IChsYXN0IChidXRsYXN0IHBhcmFtcykpKVxuICAgIChlbWl0bG4gXCIgPSBjbGpzLmNvcmUuZmlyc3QoXCIgYXJnbGlzdCBcIik7XCIpXG4gICAgKGVtaXRzIFwidmFyIFwiKVxuICAgIChlbWl0IChsYXN0IHBhcmFtcykpXG4gICAgKGVtaXRsbiBcIiA9IGNsanMuY29yZS5yZXN0KFwiIGFyZ2xpc3QgXCIpO1wiKVxuICAgIChlbWl0cyBcInJldHVybiBcIiBkZWxlZ2F0ZS1uYW1lIFwiKFwiKVxuICAgIChkb3NlcVxuICAgICBbcGFyYW0gcGFyYW1zXVxuICAgICAoZW1pdCBwYXJhbSlcbiAgICAgKHdoZW4tbm90ICg9IHBhcmFtIChsYXN0IHBhcmFtcykpIChlbWl0cyBcIixcIikpKVxuICAgIChlbWl0bG4gXCIpO1wiKSlcbiAgIChkb1xuICAgIChlbWl0cyBcInZhciBcIilcbiAgICAoZW1pdCAobGFzdCBwYXJhbXMpKVxuICAgIChlbWl0bG4gXCIgPSBjbGpzLmNvcmUuc2VxKFwiIGFyZ2xpc3QgXCIpO1wiKVxuICAgIChlbWl0cyBcInJldHVybiBcIiBkZWxlZ2F0ZS1uYW1lIFwiKFwiKVxuICAgIChkb3NlcVxuICAgICBbcGFyYW0gcGFyYW1zXVxuICAgICAoZW1pdCBwYXJhbSlcbiAgICAgKHdoZW4tbm90ICg9IHBhcmFtIChsYXN0IHBhcmFtcykpIChlbWl0cyBcIixcIikpKVxuICAgIChlbWl0bG4gXCIpO1wiKSkpXG4gIChlbWl0cyBcIn0pXCIpKSlcbiJ9IHs6c3ltIGVtaXRzLXN5bWJvbCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtzeW1dKX0sIDpzb3VyY2UgIihkZWZuXG4gZW1pdHMtc3ltYm9sXG4gW3N5bV1cbiAobGV0XG4gIFtuc1xuICAgKG5hbWVzcGFjZSBzeW0pXG4gICBuYW1lXG4gICAobmFtZSBzeW0pXG4gICBzeW1zdHJcbiAgIChpZi1ub3QgKG5pbD8gbnMpIChzdHIgbnMgXCIvXCIgbmFtZSkgbmFtZSldXG4gIChlbWl0cyBcIm5ldyBjbGpzLmNvcmUuU3ltYm9sKFwiKVxuICAoZW1pdC1jb25zdGFudCBucylcbiAgKGVtaXRzIFwiLFwiKVxuICAoZW1pdC1jb25zdGFudCBuYW1lKVxuICAoZW1pdHMgXCIsXCIpXG4gIChlbWl0LWNvbnN0YW50IHN5bXN0cilcbiAgKGVtaXRzIFwiLFwiKVxuICAoZW1pdC1jb25zdGFudCAoaGFzaCBzeW0pKVxuICAoZW1pdHMgXCIsXCIpXG4gIChlbWl0LWNvbnN0YW50IG5pbClcbiAgKGVtaXRzIFwiKVwiKSkpXG4ifSB7OnN5bSBmYWxzZXktY29uc3RhbnQ/LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2V4cHJdKX0sIDpzb3VyY2UgIihkZWZuXG4gZmFsc2V5LWNvbnN0YW50P1xuIFtleHByXVxuIChsZXRcbiAgW3s6a2V5cyBbb3AgZm9ybSBjb25zdC1leHByXX0gKGFuYS91bndyYXAtcXVvdGUgZXhwcildXG4gIChvclxuICAgKGFuZCAoPSBvcCA6Y29uc3QpIChvciAoZmFsc2U/IGZvcm0pIChuaWw/IGZvcm0pKSlcbiAgIChhbmQgKHNvbWU/IGNvbnN0LWV4cHIpIChmYWxzZXktY29uc3RhbnQ/IGNvbnN0LWV4cHIpKSkpKVxuIn0gezpzeW0gZW1pdC1jb25zdGFudHMtY29tbWEtc2VwLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2NzXSl9LCA6c291cmNlICIoZGVmblxuIGVtaXQtY29uc3RhbnRzLWNvbW1hLXNlcFxuIFtjc11cbiAoZm5cbiAgW11cbiAgKGRvYWxsXG4gICAobWFwLWluZGV4ZWRcbiAgICAoZm4gW2kgbV0gKGlmIChldmVuPyBpKSAoZW1pdC1jb25zdGFudCBtKSAoZW1pdHMgbSkpKVxuICAgIChjb21tYS1zZXAgY3MpKSkpKVxuIn0gezpzeW0gKnNvdXJjZS1tYXAtZGF0YSosIDptZXRhIHt9LCA6c291cmNlICIoZGVmICpzb3VyY2UtbWFwLWRhdGEqIG5pbClcbiJ9IHs6c3ltIGVtaXQtcmVjb3JkLXZhbHVlLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW25zIG5hbWUgaXRlbXNdKX0sIDpzb3VyY2UgIihkZWZuXG4gZW1pdC1yZWNvcmQtdmFsdWVcbiBbbnMgbmFtZSBpdGVtc11cbiAoZW1pdHMgbnMgXCIubWFwX19HVF9cIiBuYW1lIFwiKFwiIGl0ZW1zIFwiKVwiKSlcbiJ9IHs6c3ltIGVtaXQtdmFyLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3s6a2V5cyBbaW5mbyBlbnYgZm9ybV0sIDphcyBhc3R9XSl9LCA6c291cmNlICIoZGVmblxuIGVtaXQtdmFyXG4gW3s6a2V5cyBbaW5mbyBlbnYgZm9ybV0sIDphcyBhc3R9XVxuIChpZi1sZXRcbiAgW2NvbnN0LWV4cHIgKDpjb25zdC1leHByIGFzdCldXG4gIChlbWl0IChhc3NvYyBjb25zdC1leHByIDplbnYgZW52KSlcbiAgKGxldFxuICAgW3s6a2V5cyBbb3B0aW9uc10sIDphcyBjZW52fVxuICAgIEBlbnYvKmNvbXBpbGVyKlxuICAgIHZhci1uYW1lXG4gICAgKDpuYW1lIGluZm8pXG4gICAgaW5mb1xuICAgIChpZlxuICAgICAoPSAobmFtZXNwYWNlIHZhci1uYW1lKSBcImpzXCIpXG4gICAgIChsZXRcbiAgICAgIFtqcy1tb2R1bGUtbmFtZVxuICAgICAgIChnZXQtaW4gY2VudiBbOmpzLW1vZHVsZS1pbmRleCAobmFtZSB2YXItbmFtZSkgOm5hbWVdKV1cbiAgICAgIChvciBqcy1tb2R1bGUtbmFtZSAobmFtZSB2YXItbmFtZSkpKVxuICAgICBpbmZvKV1cbiAgIChpZlxuICAgICg6YmluZGluZy1mb3JtPyBhc3QpXG4gICAgKGVtaXRzIChtdW5nZSBhc3QpKVxuICAgICh3aGVuLW5vdFxuICAgICAoPSA6c3RhdGVtZW50ICg6Y29udGV4dCBlbnYpKVxuICAgICAobGV0XG4gICAgICBbcmVzZXJ2ZWRcbiAgICAgICAoY29uZC0+XG4gICAgICAgIGpzLXJlc2VydmVkXG4gICAgICAgIChhbmRcbiAgICAgICAgIChlczU+PSAoOmxhbmd1YWdlLW91dCBvcHRpb25zKSlcbiAgICAgICAgIChzb21lPyAobmFtZXNwYWNlIHZhci1uYW1lKSkpXG4gICAgICAgIChzZXQvZGlmZmVyZW5jZSBhbmEvZXM1LWFsbG93ZWQpKVxuICAgICAgIGpzLW1vZHVsZVxuICAgICAgIChnZXQtaW5cbiAgICAgICAgY2VudlxuICAgICAgICBbOmpzLW5hbWVzcGFjZXMgKG9yIChuYW1lc3BhY2UgdmFyLW5hbWUpIChuYW1lIHZhci1uYW1lKSldKVxuICAgICAgIGluZm9cbiAgICAgICAoY29uZC0+IGluZm8gKG5vdD0gZm9ybSAnanMvLUluZmluaXR5KSAobXVuZ2UgcmVzZXJ2ZWQpKV1cbiAgICAgIChlbWl0LXdyYXBcbiAgICAgICBlbnZcbiAgICAgICAoY2FzZVxuICAgICAgICAoOm1vZHVsZS10eXBlIGpzLW1vZHVsZSlcbiAgICAgICAgOmNvbW1vbmpzXG4gICAgICAgIChpZlxuICAgICAgICAgKG5hbWVzcGFjZSB2YXItbmFtZSlcbiAgICAgICAgIChlbWl0c1xuICAgICAgICAgIChtdW5nZSAobmFtZXNwYWNlIHZhci1uYW1lKSByZXNlcnZlZClcbiAgICAgICAgICBcIltcXFwiZGVmYXVsdFxcXCJdLlwiXG4gICAgICAgICAgKG11bmdlIChuYW1lIHZhci1uYW1lKSByZXNlcnZlZCkpXG4gICAgICAgICAoZW1pdHMgKG11bmdlIChuYW1lIHZhci1uYW1lKSByZXNlcnZlZCkgXCJbXFxcImRlZmF1bHRcXFwiXVwiKSlcbiAgICAgICAgOmVzNlxuICAgICAgICAoaWZcbiAgICAgICAgIChhbmQgKG5hbWVzcGFjZSB2YXItbmFtZSkgKD0gXCJkZWZhdWx0XCIgKG5hbWUgdmFyLW5hbWUpKSlcbiAgICAgICAgIChlbWl0cyAobXVuZ2UgKG5hbWVzcGFjZSB2YXItbmFtZSkgcmVzZXJ2ZWQpIFwiW1xcXCJkZWZhdWx0XFxcIl1cIilcbiAgICAgICAgIChlbWl0cyBpbmZvKSlcbiAgICAgICAgKGVtaXRzIGluZm8pKSkpKSkpKSlcbiJ9IHs6c3ltIG1hcHBlZC10eXBlcywgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgbWFwcGVkLXR5cGVzIHtcIm5pbFwiIFwibnVsbFwifSlcbiJ9IHs6c3ltIHJlc29sdmUtdHlwZXMsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZW52IHRzXSl9LCA6c291cmNlICIoZGVmblxuIHJlc29sdmUtdHlwZXNcbiBbZW52IHRzXVxuIChsZXRcbiAgW3RzXG4gICAoLT4gdHMgc3RyaW5nL3RyaW0gKHN1YnMgMSAoZGVjIChjb3VudCB0cykpKSlcbiAgIHhzXG4gICAoc3RyaW5nL3NwbGl0IHRzICNcIlxcfFwiKV1cbiAgKHN0clxuICAgXCJ7XCJcbiAgIChzdHJpbmcvam9pblxuICAgIFwifFwiXG4gICAgKG1hcCAoZm4qIFtwMV9fNDMwMTEjXSAocmVzb2x2ZS10eXBlIGVudiBwMV9fNDMwMTEjKSkgeHMpKVxuICAgXCJ9XCIpKSlcbiJ9IHs6c3ltICppbnB1dHMqLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiAqaW5wdXRzKiBuaWwpXG4ifSB7OnN5bSBlbWl0LXN0ciwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtleHByXSl9LCA6c291cmNlICIoZGVmbiBlbWl0LXN0ciBbZXhwcl0gKHdpdGgtb3V0LXN0ciAoZW1pdCBleHByKSkpXG4ifSB7OnN5bSBlbWl0LW1hcCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtrZXlzIHZhbHMgY29tbWEtc2VwIGRpc3RpbmN0LWtleXM/XSl9LCA6c291cmNlICIoZGVmblxuIGVtaXQtbWFwXG4gW2tleXMgdmFscyBjb21tYS1zZXAgZGlzdGluY3Qta2V5cz9dXG4gKGNvbmRcbiAgKHplcm8/IChjb3VudCBrZXlzKSlcbiAgKGVtaXRzIFwiY2xqcy5jb3JlLlBlcnNpc3RlbnRBcnJheU1hcC5FTVBUWVwiKVxuICAoPD0gKGNvdW50IGtleXMpIGFycmF5LW1hcC10aHJlc2hvbGQpXG4gIChpZlxuICAgKGRpc3RpbmN0LWtleXM/IGtleXMpXG4gICAoZW1pdHNcbiAgICBcIm5ldyBjbGpzLmNvcmUuUGVyc2lzdGVudEFycmF5TWFwKG51bGwsIFwiXG4gICAgKGNvdW50IGtleXMpXG4gICAgXCIsIFtcIlxuICAgIChjb21tYS1zZXAgKGludGVybGVhdmUga2V5cyB2YWxzKSlcbiAgICBcIl0sIG51bGwpXCIpXG4gICAoZW1pdHNcbiAgICBcImNsanMuY29yZS5QZXJzaXN0ZW50QXJyYXlNYXAuY3JlYXRlQXNJZkJ5QXNzb2MoW1wiXG4gICAgKGNvbW1hLXNlcCAoaW50ZXJsZWF2ZSBrZXlzIHZhbHMpKVxuICAgIFwiXSlcIikpXG4gIDplbHNlXG4gIChlbWl0c1xuICAgXCJjbGpzLmNvcmUuUGVyc2lzdGVudEhhc2hNYXAuZnJvbUFycmF5cyhbXCJcbiAgIChjb21tYS1zZXAga2V5cylcbiAgIFwiXSxbXCJcbiAgIChjb21tYS1zZXAgdmFscylcbiAgIFwiXSlcIikpKVxuIn0gezpzeW0gZW1pdC12ZWN0b3IsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbaXRlbXMgY29tbWEtc2VwXSl9LCA6c291cmNlICIoZGVmblxuIGVtaXQtdmVjdG9yXG4gW2l0ZW1zIGNvbW1hLXNlcF1cbiAoaWZcbiAgKGVtcHR5PyBpdGVtcylcbiAgKGVtaXRzIFwiY2xqcy5jb3JlLlBlcnNpc3RlbnRWZWN0b3IuRU1QVFlcIilcbiAgKGxldFxuICAgW2NudCAoY291bnQgaXRlbXMpXVxuICAgKGlmXG4gICAgKDwgY250IDMyKVxuICAgIChlbWl0c1xuICAgICBcIm5ldyBjbGpzLmNvcmUuUGVyc2lzdGVudFZlY3RvcihudWxsLCBcIlxuICAgICBjbnRcbiAgICAgXCIsIDUsIGNsanMuY29yZS5QZXJzaXN0ZW50VmVjdG9yLkVNUFRZX05PREUsIFtcIlxuICAgICAoY29tbWEtc2VwIGl0ZW1zKVxuICAgICBcIl0sIG51bGwpXCIpXG4gICAgKGVtaXRzXG4gICAgIFwiY2xqcy5jb3JlLlBlcnNpc3RlbnRWZWN0b3IuZnJvbUFycmF5KFtcIlxuICAgICAoY29tbWEtc2VwIGl0ZW1zKVxuICAgICBcIl0sIHRydWUpXCIpKSkpKVxuIn0gezpzeW0gdHJ1dGh5LWNvbnN0YW50PywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtleHByXSl9LCA6c291cmNlICIoZGVmblxuIHRydXRoeS1jb25zdGFudD9cbiBbZXhwcl1cbiAobGV0XG4gIFt7OmtleXMgW29wIGZvcm0gY29uc3QtZXhwcl19IChhbmEvdW53cmFwLXF1b3RlIGV4cHIpXVxuICAob3JcbiAgIChhbmRcbiAgICAoPSBvcCA6Y29uc3QpXG4gICAgZm9ybVxuICAgIChub3RcbiAgICAgKG9yXG4gICAgICAoYW5kIChzdHJpbmc/IGZvcm0pICg9IGZvcm0gXCJcIikpXG4gICAgICAoYW5kIChudW1iZXI/IGZvcm0pICh6ZXJvPyBmb3JtKSkpKSlcbiAgIChhbmQgKHNvbWU/IGNvbnN0LWV4cHIpICh0cnV0aHktY29uc3RhbnQ/IGNvbnN0LWV4cHIpKSkpKVxuIn0gezpzeW0gZW1pdGxuLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyBbW10gW2FdIFthIGJdIFthIGIgY10gW2EgYiBjIGRdIFthIGIgYyBkIGVdIFthIGIgYyBkIGUgJiB4c11dfSwgOnNvdXJjZSAiKGRlZm5cbiBlbWl0bG5cbiAoW10gKF9lbWl0bG4pKVxuIChbYV0gKGVtaXRzIGEpIChfZW1pdGxuKSlcbiAoW2EgYl0gKGVtaXRzIGEpIChlbWl0cyBiKSAoX2VtaXRsbikpXG4gKFthIGIgY10gKGVtaXRzIGEpIChlbWl0cyBiKSAoZW1pdHMgYykgKF9lbWl0bG4pKVxuIChbYSBiIGMgZF0gKGVtaXRzIGEpIChlbWl0cyBiKSAoZW1pdHMgYykgKGVtaXRzIGQpIChfZW1pdGxuKSlcbiAoW2EgYiBjIGQgZV1cbiAgKGVtaXRzIGEpXG4gIChlbWl0cyBiKVxuICAoZW1pdHMgYylcbiAgKGVtaXRzIGQpXG4gIChlbWl0cyBlKVxuICAoX2VtaXRsbikpXG4gKFthIGIgYyBkIGUgJiB4c11cbiAgKGVtaXRzIGEpXG4gIChlbWl0cyBiKVxuICAoZW1pdHMgYylcbiAgKGVtaXRzIGQpXG4gIChlbWl0cyBlKVxuICAoZG9zZXEgW3ggeHNdIChlbWl0cyB4KSlcbiAgKF9lbWl0bG4pKSlcbiJ9IHs6c3ltIGVtaXQsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbYXN0XSl9LCA6c291cmNlICIoZGVmblxuIGVtaXRcbiBbYXN0XVxuICh3aGVuXG4gICpzb3VyY2UtbWFwLWRhdGEqXG4gIChsZXRcbiAgIFt7OmtleXMgW2Vudl19IGFzdF1cbiAgICh3aGVuXG4gICAgKDpsaW5lIGVudilcbiAgICAobGV0XG4gICAgIFt7OmtleXMgW2xpbmUgY29sdW1uXX0gZW52XVxuICAgICAoc3dhcCFcbiAgICAgICpzb3VyY2UtbWFwLWRhdGEqXG4gICAgICAoZm5cbiAgICAgICBbbV1cbiAgICAgICAobGV0XG4gICAgICAgIFttaW5mb1xuICAgICAgICAgKGNvbmQtPlxuICAgICAgICAgIHs6Z2NvbFxuICAgICAgICAgICAjPyg6Y2xqICguZ2V0ICpzb3VyY2UtbWFwLWRhdGEtZ2VuLWNvbCopIDpjbGpzICg6Z2VuLWNvbCBtKSksXG4gICAgICAgICAgIDpnbGluZSAoOmdlbi1saW5lIG0pfVxuICAgICAgICAgICgjezpiaW5kaW5nIDp2YXIgOmpzLXZhciA6bG9jYWx9ICg6b3AgYXN0KSlcbiAgICAgICAgICAoYXNzb2MgOm5hbWUgKHN0ciAoLT4gYXN0IDppbmZvIDpuYW1lKSkpKV1cbiAgICAgICAgKHVwZGF0ZS1pblxuICAgICAgICAgbVxuICAgICAgICAgWzpzb3VyY2UtbWFwIChkZWMgbGluZSldXG4gICAgICAgICAoZm5pbFxuICAgICAgICAgIChmblxuICAgICAgICAgICBbbGluZV1cbiAgICAgICAgICAgKHVwZGF0ZS1pblxuICAgICAgICAgICAgbGluZVxuICAgICAgICAgICAgWyhpZiBjb2x1bW4gKGRlYyBjb2x1bW4pIDApXVxuICAgICAgICAgICAgKGZuaWwgKGZuIFtjb2x1bW5dIChjb25qIGNvbHVtbiBtaW5mbykpIFtdKSkpXG4gICAgICAgICAgKHNvcnRlZC1tYXApKSkpKSkpKSkpXG4gKGVtaXQqIGFzdCkpXG4ifSB7OnN5bSBzYWZlLXRlc3Q/LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2VudiBlXSl9LCA6c291cmNlICIoZGVmblxuIHNhZmUtdGVzdD9cbiBbZW52IGVdXG4gKGxldFxuICBbdGFnIChhbmEvaW5mZXItdGFnIGVudiBlKV1cbiAgKG9yICgjeydzZXEgJ2Jvb2xlYW59IHRhZykgKHRydXRoeS1jb25zdGFudD8gZSkpKSlcbiJ9IHs6c3ltIGVtaXQtZXh0ZXJucywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgW1tleHRlcm5zXSBbcHJlZml4IGV4dGVybnMgdG9wLWxldmVsIGtub3duLWV4dGVybnNdXX0sIDpzb3VyY2UgIihkZWZuXG4gZW1pdC1leHRlcm5zXG4gKFtleHRlcm5zXVxuICAoZW1pdC1leHRlcm5zXG4gICBbXVxuICAgZXh0ZXJuc1xuICAgKGF0b20gI3t9KVxuICAgKHdoZW4gZW52Lypjb21waWxlciogKGFuYS9nZXQtZXh0ZXJucykpKSlcbiAoW3ByZWZpeCBleHRlcm5zIHRvcC1sZXZlbCBrbm93bi1leHRlcm5zXVxuICAobG9vcFxuICAgW2tzIChzZXEgKGtleXMgZXh0ZXJucykpXVxuICAgKHdoZW5cbiAgICBrc1xuICAgIChsZXRcbiAgICAgW2sgKGZpcnN0IGtzKSBbdG9wIDphcyBwcmVmaXgnXSAoY29uaiBwcmVmaXggayldXG4gICAgICh3aGVuXG4gICAgICAoYW5kIChub3Q9ICdwcm90b3R5cGUgaykgKG5pbD8gKGdldC1pbiBrbm93bi1leHRlcm5zIHByZWZpeCcpKSlcbiAgICAgIChpZi1ub3RcbiAgICAgICAob3IgKGNvbnRhaW5zPyBAdG9wLWxldmVsIHRvcCkgKGNvbnRhaW5zPyBrbm93bi1leHRlcm5zIHRvcCkpXG4gICAgICAgKGRvXG4gICAgICAgIChlbWl0bG4gXCJ2YXIgXCIgKHN0cmluZy9qb2luIFwiLlwiIChtYXAgbXVuZ2UgcHJlZml4JykpIFwiO1wiKVxuICAgICAgICAoc3dhcCEgdG9wLWxldmVsIGNvbmogdG9wKSlcbiAgICAgICAoZW1pdGxuIChzdHJpbmcvam9pbiBcIi5cIiAobWFwIG11bmdlIHByZWZpeCcpKSBcIjtcIikpKVxuICAgICAobGV0XG4gICAgICBbbSAoZ2V0IGV4dGVybnMgayldXG4gICAgICAod2hlbi1ub3RcbiAgICAgICAoZW1wdHk/IG0pXG4gICAgICAgKGVtaXQtZXh0ZXJucyBwcmVmaXgnIG0gdG9wLWxldmVsIGtub3duLWV4dGVybnMpKSkpXG4gICAgKHJlY3VyIChuZXh0IGtzKSkpKSkpXG4ifSB7OnN5bSBlbWl0LWdsb2JhbC1leHBvcnQsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbbnMtbmFtZSBnbG9iYWwtZXhwb3J0cyBsaWJdKX0sIDpzb3VyY2UgIihkZWZuXG4gZW1pdC1nbG9iYWwtZXhwb3J0XG4gW25zLW5hbWUgZ2xvYmFsLWV4cG9ydHMgbGliXVxuIChsZXRcbiAgW1tsaWInIHN1YmxpYl0gKGFuYS9saWImc3VibGliIGxpYildXG4gIChlbWl0bG5cbiAgIChtdW5nZSBucy1uYW1lKVxuICAgXCIuXCJcbiAgIChhbmEvbXVuZ2UtZ2xvYmFsLWV4cG9ydCBsaWIpXG4gICBcIiA9IGdvb2cuZ2xvYmFsXCJcbiAgICgtPj5cbiAgICAoc3RyaW5nL3NwbGl0XG4gICAgIChuYW1lXG4gICAgICAob3JcbiAgICAgICAoZ2V0IGdsb2JhbC1leHBvcnRzIChzeW1ib2wgbGliJykpXG4gICAgICAgKGdldCBnbG9iYWwtZXhwb3J0cyAobmFtZSBsaWInKSkpKVxuICAgICAjXCJcXC5cIilcbiAgICAobWFwIChmbiBbcHJvcF0gKHN0ciBcIltcXFwiXCIgcHJvcCBcIlxcXCJdXCIpKSlcbiAgICAoYXBwbHkgc3RyKSlcbiAgIChzdWJsaWItc2VsZWN0IHN1YmxpYilcbiAgIFwiO1wiKSkpXG4ifSB7OnN5bSBkaXN0aW5jdC1jb25zdGFudHM/LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2l0ZW1zXSl9LCA6c291cmNlICIoZGVmblxuIGRpc3RpbmN0LWNvbnN0YW50cz9cbiBbaXRlbXNdXG4gKGxldFxuICBbaXRlbXMgKG1hcCBhbmEvdW53cmFwLXF1b3RlIGl0ZW1zKV1cbiAgKGFuZFxuICAgKGV2ZXJ5PyAoZm4qIFtwMV9fNDMwMDkjXSAoPSAoOm9wIHAxX180MzAwOSMpIDpjb25zdCkpIGl0ZW1zKVxuICAgKD0gKGNvdW50IChpbnRvICN7fSBpdGVtcykpIChjb3VudCBpdGVtcykpKSkpXG4ifSB7OnN5bSBzaGFkb3ctZGVwdGgsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbc10pfSwgOnNvdXJjZSAiKGRlZm5cbiBzaGFkb3ctZGVwdGhcbiBbc11cbiAobGV0XG4gIFt7OmtleXMgW25hbWUgaW5mb119IHNdXG4gIChsb29wXG4gICBbZCAwIHs6a2V5cyBbc2hhZG93XX0gaW5mb11cbiAgIChjb25kXG4gICAgc2hhZG93XG4gICAgKHJlY3VyIChpbmMgZCkgc2hhZG93KVxuICAgIChmaW5kLW5zLXN0YXJ0cy13aXRoIChzdHIgbmFtZSkpXG4gICAgKGluYyBkKVxuICAgIDplbHNlXG4gICAgZCkpKSlcbiJ9KSwgY2xvanVyZS50ZXN0LmNoZWNrLnJlc3VsdHMgKHs6c3ltIHBhc3M/LCA6bWV0YSB7OmRvYyAiQSBib29sZWFuIGluZGljYXRpbmcgaWYgdGhlIHJlc3VsdCBwYXNzZWQuIiwgOmFyZ2xpc3RzIChbcmVzdWx0XSl9LCA6cHJvdG9jb2wgUmVzdWx0fSB7OnN5bSByZXN1bHQtZGF0YSwgOm1ldGEgezpkb2MgIkEgbWFwIG9mIGRhdGEgYWJvdXQgdGhlIHRyaWFsLiIsIDphcmdsaXN0cyAoW3Jlc3VsdF0pfSwgOnByb3RvY29sIFJlc3VsdH0gezpzeW0gUmVzdWx0LCA6bWV0YSB7OmRvYyBuaWx9LCA6bWV0aG9kcyAocGFzcz8gcmVzdWx0LWRhdGEpfSksIGNsanMuc291cmNlLW1hcC5iYXNlNjQgKHs6c3ltIGNoYXJzNjQsIDptZXRhIHt9LCA6c291cmNlICIoZGVmXG4gY2hhcnM2NFxuIFwiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrL1wiKVxuIn0gezpzeW0gY2hhci0+aW50LCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiBjaGFyLT5pbnQgKHppcG1hcCBjaGFyczY0IChyYW5nZSAwIDY0KSkpXG4ifSB7OnN5bSBpbnQtPmNoYXIsIDptZXRhIHt9LCA6c291cmNlICIoZGVmIGludC0+Y2hhciAoemlwbWFwIChyYW5nZSAwIDY0KSBjaGFyczY0KSlcbiJ9IHs6c3ltIGVuY29kZSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtuXSl9LCA6c291cmNlICIoZGVmblxuIGVuY29kZVxuIFtuXVxuIChsZXRcbiAgW2UgKGZpbmQgaW50LT5jaGFyIG4pXVxuICAoaWZcbiAgIGVcbiAgIChzZWNvbmQgZSlcbiAgICh0aHJvdyAoanMvRXJyb3IuIChzdHIgXCJNdXN0IGJlIGJldHdlZW4gMCBhbmQgNjM6IFwiIG4pKSkpKSlcbiJ9IHs6c3ltIGRlY29kZSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtjXSl9LCA6c291cmNlICIoZGVmblxuIGRlY29kZVxuIFtjXVxuIChsZXRcbiAgW2UgKGZpbmQgY2hhci0+aW50IGMpXVxuICAoaWZcbiAgIGVcbiAgIChzZWNvbmQgZSlcbiAgICh0aHJvdyAoanMvRXJyb3IuIChzdHIgXCJOb3QgYSB2YWxpZCBiYXNlIDY0IGRpZ2l0OiBcIiBjKSkpKSkpXG4ifSksIGNsb2p1cmUuY29yZS5ycmItdmVjdG9yICh7OnN5bSBjYXR2ZWMsIDptZXRhIHs6ZG9jICJDb25jYXRlbmF0ZXMgdGhlIGdpdmVuIHZlY3RvcnMgaW4gbG9nYXJpdGhtaWMgdGltZS4iLCA6YXJnbGlzdHMgW1tdIFt2MV0gW3YxIHYyXSBbdjEgdjIgdjNdIFt2MSB2MiB2MyB2NF0gW3YxIHYyIHYzIHY0ICYgdm5dXX0sIDpzb3VyY2UgIihkZWZuXG4gY2F0dmVjXG4gXCJDb25jYXRlbmF0ZXMgdGhlIGdpdmVuIHZlY3RvcnMgaW4gbG9nYXJpdGhtaWMgdGltZS5cIlxuIChbXSBbXSlcbiAoW3YxXSB2MSlcbiAoW3YxIHYyXSAoLXNwbGljZXYgdjEgdjIpKVxuIChbdjEgdjIgdjNdICgtc3BsaWNldiAoLXNwbGljZXYgdjEgdjIpIHYzKSlcbiAoW3YxIHYyIHYzIHY0XSAoLXNwbGljZXYgKC1zcGxpY2V2IHYxIHYyKSAoLXNwbGljZXYgdjMgdjQpKSlcbiAoW3YxIHYyIHYzIHY0ICYgdm5dXG4gICgtc3BsaWNldlxuICAgKC1zcGxpY2V2ICgtc3BsaWNldiB2MSB2MikgKC1zcGxpY2V2IHYzIHY0KSlcbiAgIChhcHBseSBjYXR2ZWMgdm4pKSkpXG4ifSB7OnN5bSBzdWJ2ZWMsIDptZXRhIHs6ZG9jICJSZXR1cm5zIGEgbmV3IHZlY3RvciBjb250YWluaW5nIHRoZSBlbGVtZW50cyBvZiB0aGUgZ2l2ZW4gdmVjdG9yIHZcbiAgbHlpbmcgYmV0d2VlbiB0aGUgc3RhcnQgKGluY2x1c2l2ZSkgYW5kIGVuZCAoZXhjbHVzaXZlKSBpbmRpY2VzIGluXG4gIGxvZ2FyaXRobWljIHRpbWUuIGVuZCBkZWZhdWx0cyB0byBlbmQgb2YgdmVjdG9yLiBUaGUgcmVzdWx0aW5nXG4gIHZlY3RvciBzaGFyZXMgc3RydWN0dXJlIHdpdGggdGhlIG9yaWdpbmFsLCBidXQgZG9lcyBub3QgaG9sZCBvbiB0b1xuICBhbnkgZWxlbWVudHMgb2YgdGhlIG9yaWdpbmFsIHZlY3RvciBseWluZyBvdXRzaWRlIHRoZSBnaXZlbiBpbmRleFxuICByYW5nZS4iLCA6YXJnbGlzdHMgW1t2IHN0YXJ0XSBbdiBzdGFydCBlbmRdXX0sIDpzb3VyY2UgIihkZWZuXG4gc3VidmVjXG4gXCJSZXR1cm5zIGEgbmV3IHZlY3RvciBjb250YWluaW5nIHRoZSBlbGVtZW50cyBvZiB0aGUgZ2l2ZW4gdmVjdG9yIHZcXG4gIGx5aW5nIGJldHdlZW4gdGhlIHN0YXJ0IChpbmNsdXNpdmUpIGFuZCBlbmQgKGV4Y2x1c2l2ZSkgaW5kaWNlcyBpblxcbiAgbG9nYXJpdGhtaWMgdGltZS4gZW5kIGRlZmF1bHRzIHRvIGVuZCBvZiB2ZWN0b3IuIFRoZSByZXN1bHRpbmdcXG4gIHZlY3RvciBzaGFyZXMgc3RydWN0dXJlIHdpdGggdGhlIG9yaWdpbmFsLCBidXQgZG9lcyBub3QgaG9sZCBvbiB0b1xcbiAgYW55IGVsZW1lbnRzIG9mIHRoZSBvcmlnaW5hbCB2ZWN0b3IgbHlpbmcgb3V0c2lkZSB0aGUgZ2l2ZW4gaW5kZXhcXG4gIHJhbmdlLlwiXG4gKFt2IHN0YXJ0XSAoLXNsaWNldiB2IHN0YXJ0IChjb3VudCB2KSkpXG4gKFt2IHN0YXJ0IGVuZF0gKC1zbGljZXYgdiBzdGFydCBlbmQpKSlcbiJ9IHs6c3ltIHZlY3RvciwgOm1ldGEgezpkb2MgIkNyZWF0ZXMgYSBuZXcgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIGFyZ3MuIiwgOmFyZ2xpc3RzIFtbXSBbeDFdIFt4MSB4Ml0gW3gxIHgyIHgzXSBbeDEgeDIgeDMgeDRdIFt4MSB4MiB4MyB4NCAmIHhuXV19LCA6c291cmNlICIoZGVmblxuIHZlY3RvclxuIFwiQ3JlYXRlcyBhIG5ldyB2ZWN0b3IgY29udGFpbmluZyB0aGUgYXJncy5cIlxuIChbXSAoZ2VuLXZlY3Rvci1tZXRob2QpKVxuIChbeDFdIChnZW4tdmVjdG9yLW1ldGhvZCB4MSkpXG4gKFt4MSB4Ml0gKGdlbi12ZWN0b3ItbWV0aG9kIHgxIHgyKSlcbiAoW3gxIHgyIHgzXSAoZ2VuLXZlY3Rvci1tZXRob2QgeDEgeDIgeDMpKVxuIChbeDEgeDIgeDMgeDRdIChnZW4tdmVjdG9yLW1ldGhvZCB4MSB4MiB4MyB4NCkpXG4gKFt4MSB4MiB4MyB4NCAmIHhuXSAoaW50byAodmVjdG9yIHgxIHgyIHgzIHg0KSB4bikpKVxuIn0gezpzeW0gdmVjLCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIHZlY3RvciBjb250YWluaW5nIHRoZSBjb250ZW50cyBvZiBjb2xsLlxuXG4gIElmIGNvbGwgaXMgYSB2ZWN0b3IsIHJldHVybnMgYW4gUlJCIHZlY3RvciB1c2luZyB0aGUgaW50ZXJuYWwgdHJlZVxuICBvZiBjb2xsLiIsIDphcmdsaXN0cyAoW2NvbGxdKX0sIDpzb3VyY2UgIihkZWZuXG4gdmVjXG4gXCJSZXR1cm5zIGEgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIGNvbnRlbnRzIG9mIGNvbGwuXFxuXFxuICBJZiBjb2xsIGlzIGEgdmVjdG9yLCByZXR1cm5zIGFuIFJSQiB2ZWN0b3IgdXNpbmcgdGhlIGludGVybmFsIHRyZWVcXG4gIG9mIGNvbGwuXCJcbiBbY29sbF1cbiAoaWYgKHZlY3Rvcj8gY29sbCkgKC1hcy1ycmJ0IGNvbGwpIChhcHBseSB2ZWN0b3IgY29sbCkpKVxuIn0pLCBvYWtjbGpzLnRvb2xzLnJlYWRlci5pbXBsLnV0aWxzICh7OnN5bSByZWFkZXItY29uZGl0aW9uYWwsIDptZXRhIHs6ZG9jICJDb25zdHJ1Y3QgYSBkYXRhIHJlcHJlc2VudGF0aW9uIG9mIGEgcmVhZGVyIGNvbmRpdGlvbmFsLlxuICBJZiB0cnVlLCBzcGxpY2luZz8gaW5kaWNhdGVzIHJlYWQtY29uZC1zcGxpY2luZy4iLCA6YXJnbGlzdHMgKFtmb3JtIHNwbGljaW5nP10pfSwgOnNvdXJjZSAiKGRlZm5cbiByZWFkZXItY29uZGl0aW9uYWxcbiBcIkNvbnN0cnVjdCBhIGRhdGEgcmVwcmVzZW50YXRpb24gb2YgYSByZWFkZXIgY29uZGl0aW9uYWwuXFxuICBJZiB0cnVlLCBzcGxpY2luZz8gaW5kaWNhdGVzIHJlYWQtY29uZC1zcGxpY2luZy5cIlxuIFtmb3JtIHNwbGljaW5nP11cbiAoUmVhZGVyQ29uZGl0aW9uYWwuIHNwbGljaW5nPyBmb3JtKSlcbiJ9IHs6c3ltIHdoaXRlc3BhY2U/LCA6bWV0YSB7OmRvYyAiQ2hlY2tzIHdoZXRoZXIgYSBnaXZlbiBjaGFyYWN0ZXIgaXMgd2hpdGVzcGFjZSIsIDphcmdsaXN0cyAoW2NoXSl9LCA6c291cmNlICIoZGVmblxuIHdoaXRlc3BhY2U/XG4gXCJDaGVja3Mgd2hldGhlciBhIGdpdmVuIGNoYXJhY3RlciBpcyB3aGl0ZXNwYWNlXCJcbiBbY2hdXG4gKHdoZW4tbm90IChuaWw/IGNoKSAoaWYgKGlkZW50aWNhbD8gY2ggXFwsKSB0cnVlICgudGVzdCB3cy1yeCBjaCkpKSlcbiJ9IHs6c3ltIGNoYXItY29kZSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtjaCBiYXNlXSl9LCA6c291cmNlICIoZGVmblxuIGNoYXItY29kZVxuIFtjaCBiYXNlXVxuIChsZXQgW2NvZGUgKGpzL3BhcnNlSW50IGNoIGJhc2UpXSAoaWYgKGpzL2lzTmFOIGNvZGUpIC0xIGNvZGUpKSlcbiJ9IHs6c3ltIGxhc3QtaWQsIDptZXRhIHt9LCA6c291cmNlICIoZGVmIGxhc3QtaWQgKGF0b20gMCkpXG4ifSB7OnN5bSBjaGFyLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuIGNoYXIgW3hdICh3aGVuLW5vdCAobmlsPyB4KSAoY2xqcy5jb3JlL2NoYXIgeCkpKVxuIn0gezpzeW0gbnVtZXJpYz8sIDptZXRhIHs6ZG9jICJDaGVja3Mgd2hldGhlciBhIGdpdmVuIGNoYXJhY3RlciBpcyBudW1lcmljIiwgOmFyZ2xpc3RzIChbY2hdKX0sIDpzb3VyY2UgIihkZWZuXG4gbnVtZXJpYz9cbiBcIkNoZWNrcyB3aGV0aGVyIGEgZ2l2ZW4gY2hhcmFjdGVyIGlzIG51bWVyaWNcIlxuIFtjaF1cbiAod2hlbi1ub3QgKG5pbD8gY2gpIChnc3RyaW5nL2lzTnVtZXJpYyBjaCkpKVxuIn0gezpzeW0gc2Vjb25kJywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtbYSBiXV0pfSwgOnNvdXJjZSAiKGRlZm4gc2Vjb25kJyBbW2EgYl1dICh3aGVuLW5vdCBhIGIpKVxuIn0gezpzeW0gZGVzdWdhci1tZXRhLCA6bWV0YSB7OmRvYyAiUmVzb2x2ZXMgc3ludGFjdGljYWwgc3VnYXIgaW4gbWV0YWRhdGEiLCA6YXJnbGlzdHMgKFtmXSl9LCA6c291cmNlICIoZGVmblxuIGRlc3VnYXItbWV0YVxuIFwiUmVzb2x2ZXMgc3ludGFjdGljYWwgc3VnYXIgaW4gbWV0YWRhdGFcIlxuIFtmXVxuIChjb25kXG4gIChrZXl3b3JkPyBmKVxuICB7ZiB0cnVlfVxuICAoc3ltYm9sPyBmKVxuICB7OnRhZyBmfVxuICAoc3RyaW5nPyBmKVxuICB7OnRhZyBmfVxuICA6ZWxzZVxuICBmKSlcbiJ9IHs6c3ltIG5leHQtaWQsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbXSl9LCA6c291cmNlICIoZGVmbiBuZXh0LWlkIFtdIChzd2FwISBsYXN0LWlkIGluYykpXG4ifSB7OnN5bSBleC1pbmZvPywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtleF0pfSwgOnNvdXJjZSAiKGRlZm4gZXgtaW5mbz8gW2V4XSAoaW5zdGFuY2U/IGNsanMuY29yZS5FeGNlcHRpb25JbmZvIGV4KSlcbiJ9IHs6c3ltIHJlYWRlci1jb25kaXRpb25hbD8sIDptZXRhIHs6ZG9jICJSZXR1cm4gdHJ1ZSBpZiB0aGUgdmFsdWUgaXMgdGhlIGRhdGEgcmVwcmVzZW50YXRpb24gb2YgYSByZWFkZXIgY29uZGl0aW9uYWwiLCA6YXJnbGlzdHMgKFt2YWx1ZV0pfSwgOnNvdXJjZSAiKGRlZm5cbiByZWFkZXItY29uZGl0aW9uYWw/XG4gXCJSZXR1cm4gdHJ1ZSBpZiB0aGUgdmFsdWUgaXMgdGhlIGRhdGEgcmVwcmVzZW50YXRpb24gb2YgYSByZWFkZXIgY29uZGl0aW9uYWxcIlxuIFt2YWx1ZV1cbiAoaW5zdGFuY2U/IFJlYWRlckNvbmRpdGlvbmFsIHZhbHVlKSlcbiJ9IHs6c3ltIG5ld2xpbmU/LCA6bWV0YSB7OmRvYyAiQ2hlY2tzIHdoZXRoZXIgdGhlIGNoYXJhY3RlciBpcyBhIG5ld2xpbmUiLCA6YXJnbGlzdHMgKFtjXSl9LCA6c291cmNlICIoZGVmblxuIG5ld2xpbmU/XG4gXCJDaGVja3Mgd2hldGhlciB0aGUgY2hhcmFjdGVyIGlzIGEgbmV3bGluZVwiXG4gW2NdXG4gKG9yIChpZGVudGljYWw/IFxcbmV3bGluZSBjKSAoaWRlbnRpY2FsPyBcIlxcblwiIGMpIChuaWw/IGMpKSlcbiJ9IHs6c3ltIG5hbWVzcGFjZS1rZXlzLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW25zIGtleXNdKX0sIDpzb3VyY2UgIihkZWZuXG4gbmFtZXNwYWNlLWtleXNcbiBbbnMga2V5c11cbiAoZm9yXG4gIFtrZXkga2V5c11cbiAgKGlmXG4gICAob3IgKHN5bWJvbD8ga2V5KSAoa2V5d29yZD8ga2V5KSlcbiAgIChsZXRcbiAgICBbW2tleS1ucyBrZXktbmFtZV1cbiAgICAgKChqdXh0IG5hbWVzcGFjZSBuYW1lKSBrZXkpXG4gICAgIC0+a2V5XG4gICAgIChpZiAoc3ltYm9sPyBrZXkpIHN5bWJvbCBrZXl3b3JkKV1cbiAgICAoY29uZFxuICAgICAobmlsPyBrZXktbnMpXG4gICAgICgtPmtleSBucyBrZXktbmFtZSlcbiAgICAgKD0gXCJfXCIga2V5LW5zKVxuICAgICAoLT5rZXkga2V5LW5hbWUpXG4gICAgIDplbHNlXG4gICAgIGtleSkpXG4gICBrZXkpKSlcbiJ9IHs6c3ltIHdzLXJ4LCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiB3cy1yeCAjXCJbXFxzXVwiKVxuIn0pLCBjbGpzLmNvcmUuYXN5bmMuaW1wbC5jaGFubmVscyAoezpzeW0gYm94LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3ZhbF0pfSwgOnNvdXJjZSAiKGRlZm4gYm94IFt2YWxdIChyZWlmeSBjbGpzLmNvcmUvSURlcmVmICgtZGVyZWYgW19dIHZhbCkpKVxuIn0gezpzeW0gcHV0LWFjdGl2ZT8sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbYm94XSl9LCA6c291cmNlICIoZGVmbiBwdXQtYWN0aXZlPyBbYm94XSAoaW1wbC9hY3RpdmU/ICguLWhhbmRsZXIgYm94KSkpXG4ifSB7OnN5bSBNQVhfRElSVFksIDptZXRhIHt9LCA6c291cmNlICIoZGVmIE1BWF9ESVJUWSA2NClcbiJ9IHs6c3ltIGFib3J0LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3RoaXNdKX0sIDpwcm90b2NvbCBNTUN9IHs6c3ltIE1NQywgOm1ldGEgezpkb2MgbmlsfSwgOm1ldGhvZHMgKGFib3J0KX0gezpzeW0gY2hhbiwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgW1tidWZdIFtidWYgeGZvcm1dIFtidWYgeGZvcm0gZXhoXV19LCA6c291cmNlICIoZGVmblxuIGNoYW5cbiAoW2J1Zl0gKGNoYW4gYnVmIG5pbCkpXG4gKFtidWYgeGZvcm1dIChjaGFuIGJ1ZiB4Zm9ybSBuaWwpKVxuIChbYnVmIHhmb3JtIGV4aF1cbiAgKE1hbnlUb01hbnlDaGFubmVsLlxuICAgKGJ1ZmZlcnMvcmluZy1idWZmZXIgMzIpXG4gICAwXG4gICAoYnVmZmVycy9yaW5nLWJ1ZmZlciAzMilcbiAgIDBcbiAgIGJ1ZlxuICAgZmFsc2VcbiAgIChsZXRcbiAgICBbYWRkISAoaWYgeGZvcm0gKHhmb3JtIGltcGwvYWRkISkgaW1wbC9hZGQhKV1cbiAgICAoZm5cbiAgICAgKFtidWZdICh0cnkgKGFkZCEgYnVmKSAoY2F0Y2ggOmRlZmF1bHQgdCAoaGFuZGxlIGJ1ZiBleGggdCkpKSlcbiAgICAgKFtidWYgdmFsXVxuICAgICAgKHRyeSAoYWRkISBidWYgdmFsKSAoY2F0Y2ggOmRlZmF1bHQgdCAoaGFuZGxlIGJ1ZiBleGggdCkpKSkpKSkpKVxuIn0pLCBjbGpzLmNvcmUuYXN5bmMuaW1wbC5kaXNwYXRjaCAoezpzeW0gdGFza3MsIDptZXRhIHt9LCA6c291cmNlICIoZGVmIHRhc2tzIChidWZmZXJzL3JpbmctYnVmZmVyIDMyKSlcbiJ9IHs6c3ltIHJ1bm5pbmc/LCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiBydW5uaW5nPyBmYWxzZSlcbiJ9IHs6c3ltIHF1ZXVlZD8sIDptZXRhIHt9LCA6c291cmNlICIoZGVmIHF1ZXVlZD8gZmFsc2UpXG4ifSB7OnN5bSBUQVNLX0JBVENIX1NJWkUsIDptZXRhIHt9LCA6c291cmNlICIoZGVmIFRBU0tfQkFUQ0hfU0laRSAxMDI0KVxuIn0gezpzeW0gcHJvY2Vzcy1tZXNzYWdlcywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtdKX0sIDpzb3VyY2UgIihkZWZuXG4gcHJvY2Vzcy1tZXNzYWdlc1xuIFtdXG4gKHNldCEgcnVubmluZz8gdHJ1ZSlcbiAoc2V0ISBxdWV1ZWQ/IGZhbHNlKVxuIChsb29wXG4gIFtjb3VudCAwXVxuICAobGV0XG4gICBbbSAoLnBvcCB0YXNrcyldXG4gICAod2hlbi1ub3RcbiAgICAobmlsPyBtKVxuICAgIChtKVxuICAgICh3aGVuICg8IGNvdW50IFRBU0tfQkFUQ0hfU0laRSkgKHJlY3VyIChpbmMgY291bnQpKSkpKSlcbiAoc2V0ISBydW5uaW5nPyBmYWxzZSlcbiAod2hlbiAoPiAoLi1sZW5ndGggdGFza3MpIDApIChxdWV1ZS1kaXNwYXRjaGVyKSkpXG4ifSB7OnN5bSBxdWV1ZS1kaXNwYXRjaGVyLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW10pfSwgOnNvdXJjZSAiKGRlZm5cbiBxdWV1ZS1kaXNwYXRjaGVyXG4gW11cbiAod2hlbi1ub3RcbiAgKGFuZCBxdWV1ZWQ/IHJ1bm5pbmc/KVxuICAoc2V0ISBxdWV1ZWQ/IHRydWUpXG4gIChnb29nLmFzeW5jLm5leHRUaWNrIHByb2Nlc3MtbWVzc2FnZXMpKSlcbiJ9IHs6c3ltIHJ1biwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtmXSl9LCA6c291cmNlICIoZGVmbiBydW4gW2ZdICgudW5ib3VuZGVkLXVuc2hpZnQgdGFza3MgZikgKHF1ZXVlLWRpc3BhdGNoZXIpKVxuIn0gezpzeW0gcXVldWUtZGVsYXksIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZiBkZWxheV0pfSwgOnNvdXJjZSAiKGRlZm4gcXVldWUtZGVsYXkgW2YgZGVsYXldIChqcy9zZXRUaW1lb3V0IGYgZGVsYXkpKVxuIn0pLCBkb28ucnVubmVyICh7OnN5bSBzZXQtcHJpbnQtZm4hLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2ZdKX0sIDpzb3VyY2UgIihkZWZuIHNldC1wcmludC1mbiEgW2ZdIChzZXQhIGNsanMuY29yZS4qcHJpbnQtZm4qIGYpKVxuIn0gezpzeW0ga2FybWE/LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW10pfSwgOnNvdXJjZSAiKGRlZm5cbiBrYXJtYT9cbiBbXVxuIChvclxuICAoYW5kIChleGlzdHM/IGpzL3dpbmRvdykgKGV4aXN0cz8gKGdvYmovZ2V0IGpzL3dpbmRvdyBcIl9fa2FybWFfX1wiKSkpXG4gIChhbmQgKGV4aXN0cz8ganMvZ2xvYmFsKSAoZXhpc3RzPyAoZ29iai9nZXQganMvZ2xvYmFsIFwiX19rYXJtYV9fXCIpKSkpKVxuIn0gezpzeW0gKmV4aXQtZm4qLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiAqZXhpdC1mbiogbmlsKVxuIn0gezpzeW0gc2V0LWV4aXQtcG9pbnQhLCA6bWV0YSB7OmRvYyAiU2V0cyB0aGUgZm4gdG8gYmUgY2FsbGVkIHdoZW4gZXhpdGluZyB0aGUgc2NyaXB0LlxuICAgSXQgc2hvdWxkIHRha2Ugb25lIGJvb2wgYXJndW1lbnQ6IHN1Y2Nlc3NmdWw/IiwgOmFyZ2xpc3RzIChbZl0pfSwgOnNvdXJjZSAiKGRlZm5cbiBzZXQtZXhpdC1wb2ludCFcbiBcIlNldHMgdGhlIGZuIHRvIGJlIGNhbGxlZCB3aGVuIGV4aXRpbmcgdGhlIHNjcmlwdC5cXG4gICBJdCBzaG91bGQgdGFrZSBvbmUgYm9vbCBhcmd1bWVudDogc3VjY2Vzc2Z1bD9cIlxuIFtmXVxuIHs6cHJlIFsoZm4/IGYpXX1cbiAoc2V0ISAqZXhpdC1mbiogZikpXG4ifSB7OnN5bSBleGl0ISwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtzdWNjZXNzP10pfSwgOnNvdXJjZSAiKGRlZm5cbiBleGl0IVxuIFtzdWNjZXNzP11cbiAodHJ5XG4gIChpZi1sZXRcbiAgIFtub2RlanMtZXhpdFxuICAgIChhbmQgKGV4aXN0cz8ganMvcHJvY2VzcykgKGdvYmovZ2V0IGpzL3Byb2Nlc3MgXCJleGl0XCIpKV1cbiAgIChub2RlanMtZXhpdCAoaWYgc3VjY2Vzcz8gMCAxKSlcbiAgICgqZXhpdC1mbiogc3VjY2Vzcz8pKVxuICAoY2F0Y2hcbiAgIDpkZWZhdWx0XG4gICBlXG4gICAocHJpbnRsbiBcIldBUk5JTkc6IGRvbydzIGV4aXQgZnVuY3Rpb24gd2FzIG5vdCBwcm9wZXJseSBzZXRcIilcbiAgIChwcmludGxuIGUpKSkpXG4ifSB7OnN5bSBydW4hLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2FdKX0sIDpzb3VyY2UgIihkZWZuXG4gcnVuIVxuIFthXVxuIChpZi1ub3RcbiAgKGZuPyAqbWFpbi1jbGktZm4qKVxuICAoZG9cbiAgIChwcmludGxuXG4gICAgXCJXQVJOSU5HOiBkb28ncyBpbml0IGZ1bmN0aW9uIHdhcyBub3Qgc2V0IG9yIGlzIG5vdCBhIGZ1bmN0aW9uXCIpXG4gICAoZXhpdCEgZmFsc2UpKVxuICAodHJ5XG4gICAoKm1haW4tY2xpLWZuKiBhKVxuICAgKGNhdGNoXG4gICAgOmRlZmF1bHRcbiAgICBlXG4gICAgKHByaW50bG4pXG4gICAgKHByaW50bG4gXCJFUlJPUjogRXhjZXB0aW9uIG91dHNpZGUgdGVzdHM6XCIpXG4gICAgKHByaW50bG4gXCJFUlJPUjpcIiBlKVxuICAgIChpZlxuICAgICAoLmhhc093blByb3BlcnR5IGUgXCJzdGFja1wiKVxuICAgICAoZG9cbiAgICAgIChwcmludGxuKVxuICAgICAgKHByaW50bG4gXCJFUlJPUjogU3RhY2t0cmFjZTpcIilcbiAgICAgIChwcmludGxuIFwiRVJST1I6XCIgKC4tc3RhY2sgZSkpKVxuICAgICAoZG8gKHByaW50bG4pIChwcmludGxuIFwiRVJST1I6IE5vIHN0YWNrdHJhY2UgYXZhaWxhYmxlLlwiKSkpXG4gICAgKGV4aXQhIGZhbHNlKSkpKSlcbiJ9IHs6c3ltIHNldC1lbnRyeS1wb2ludCEsIDptZXRhIHs6ZG9jICJTZXRzIHRoZSBmdW5jdGlvbiB0byBiZSBydW4gd2hlbiBzdGFydGluZyB0aGUgc2NyaXB0IiwgOmFyZ2xpc3RzIChbZl0pfSwgOnNvdXJjZSAiKGRlZm5cbiBzZXQtZW50cnktcG9pbnQhXG4gXCJTZXRzIHRoZSBmdW5jdGlvbiB0byBiZSBydW4gd2hlbiBzdGFydGluZyB0aGUgc2NyaXB0XCJcbiBbZl1cbiB7OnByZSBbKGZuPyBmKV19XG4gKHNldCEgKm1haW4tY2xpLWZuKiBmKSlcbiJ9KSwgY2xvanVyZS50ZXN0LmNoZWNrLnJhbmRvbS5sb25ncyAoezpzeW0gZnJvbS1udW1iZXIsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm4gZnJvbS1udW1iZXIgW3hdIChsb25nL2Zyb21OdW1iZXIgeCkpXG4ifSB7OnN5bSBiaXQtY291bnQsIDptZXRhIHt9LCA6c291cmNlICIoZGVmIGJpdC1jb3VudCBiaXQtY291bnQvYml0LWNvdW50KVxuIn0gezpzeW0gYml0LXhvciwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt4IHldKX0sIDpzb3VyY2UgIihkZWZuIGJpdC14b3IgW3ggeV0gKC54b3IgeCB5KSlcbiJ9IHs6c3ltIHVuc2lnbmVkLWJpdC1zaGlmdC1yaWdodCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt4IG5dKX0sIDpzb3VyY2UgIihkZWZuIHVuc2lnbmVkLWJpdC1zaGlmdC1yaWdodCBbeCBuXSAoLnNoaWZ0UmlnaHRVbnNpZ25lZCB4IG4pKVxuIn0gezpzeW0gKiwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt4IHldKX0sIDpzb3VyY2UgIihkZWZuXG4gKlxuIFt4IHldXG4gKGxldFxuICBbYTQ4XG4gICAoYml0LXNoaWZ0LXJpZ2h0LXplcm8tZmlsbCAoLi1oaWdoXyB4KSAxNilcbiAgIGEzMlxuICAgKGJpdC1hbmQgKC4taGlnaF8geCkgNjU1MzUpXG4gICBhMTZcbiAgIChiaXQtc2hpZnQtcmlnaHQtemVyby1maWxsICguLWxvd18geCkgMTYpXG4gICBhMDBcbiAgIChiaXQtYW5kICguLWxvd18geCkgNjU1MzUpXG4gICBiNDhcbiAgIChiaXQtc2hpZnQtcmlnaHQtemVyby1maWxsICguLWhpZ2hfIHkpIDE2KVxuICAgYjMyXG4gICAoYml0LWFuZCAoLi1oaWdoXyB5KSA2NTUzNSlcbiAgIGIxNlxuICAgKGJpdC1zaGlmdC1yaWdodC16ZXJvLWZpbGwgKC4tbG93XyB5KSAxNilcbiAgIGIwMFxuICAgKGJpdC1hbmQgKC4tbG93XyB5KSA2NTUzNSlcbiAgIGFyclxuICAgKGFycmF5IDAgMCAwIDApXVxuICAoYXNldCBhcnIgMCAoY29yZS8qIGEwMCBiMDApKVxuICAoYXNldCBhcnIgMSAoYml0LXNoaWZ0LXJpZ2h0LXplcm8tZmlsbCAoYWdldCBhcnIgMCkgMTYpKVxuICAoYXNldCBhcnIgMCAoYml0LWFuZCAoYWdldCBhcnIgMCkgNjU1MzUpKVxuICAoYXNldCBhcnIgMSAoY29yZS8rIChhZ2V0IGFyciAxKSAoY29yZS8qIGExNiBiMDApKSlcbiAgKGFzZXQgYXJyIDIgKGJpdC1zaGlmdC1yaWdodC16ZXJvLWZpbGwgKGFnZXQgYXJyIDEpIDE2KSlcbiAgKGFzZXQgYXJyIDEgKGJpdC1hbmQgKGFnZXQgYXJyIDEpIDY1NTM1KSlcbiAgKGFzZXQgYXJyIDEgKGNvcmUvKyAoYWdldCBhcnIgMSkgKGNvcmUvKiBhMDAgYjE2KSkpXG4gIChhc2V0XG4gICBhcnJcbiAgIDJcbiAgIChjb3JlLysgKGFnZXQgYXJyIDIpIChiaXQtc2hpZnQtcmlnaHQtemVyby1maWxsIChhZ2V0IGFyciAxKSAxNikpKVxuICAoYXNldCBhcnIgMSAoYml0LWFuZCAoYWdldCBhcnIgMSkgNjU1MzUpKVxuICAoYXNldCBhcnIgMiAoY29yZS8rIChhZ2V0IGFyciAyKSAoY29yZS8qIGEzMiBiMDApKSlcbiAgKGFzZXQgYXJyIDMgKGJpdC1zaGlmdC1yaWdodC16ZXJvLWZpbGwgKGFnZXQgYXJyIDIpIDE2KSlcbiAgKGFzZXQgYXJyIDIgKGJpdC1hbmQgKGFnZXQgYXJyIDIpIDY1NTM1KSlcbiAgKGFzZXQgYXJyIDIgKGNvcmUvKyAoYWdldCBhcnIgMikgKGNvcmUvKiBhMTYgYjE2KSkpXG4gIChhc2V0XG4gICBhcnJcbiAgIDNcbiAgIChjb3JlLysgKGFnZXQgYXJyIDMpIChiaXQtc2hpZnQtcmlnaHQtemVyby1maWxsIChhZ2V0IGFyciAyKSAxNikpKVxuICAoYXNldCBhcnIgMiAoYml0LWFuZCAoYWdldCBhcnIgMikgNjU1MzUpKVxuICAoYXNldCBhcnIgMiAoY29yZS8rIChhZ2V0IGFyciAyKSAoY29yZS8qIGEwMCBiMzIpKSlcbiAgKGFzZXRcbiAgIGFyclxuICAgM1xuICAgKGNvcmUvKyAoYWdldCBhcnIgMykgKGJpdC1zaGlmdC1yaWdodC16ZXJvLWZpbGwgKGFnZXQgYXJyIDIpIDE2KSkpXG4gIChhc2V0IGFyciAyIChiaXQtYW5kIChhZ2V0IGFyciAyKSA2NTUzNSkpXG4gIChhc2V0XG4gICBhcnJcbiAgIDNcbiAgIChjb3JlLytcbiAgICAoYWdldCBhcnIgMylcbiAgICAoY29yZS8qIGE0OCBiMDApXG4gICAgKGNvcmUvKiBhMzIgYjE2KVxuICAgIChjb3JlLyogYTE2IGIzMilcbiAgICAoY29yZS8qIGEwMCBiNDgpKSlcbiAgKGFzZXQgYXJyIDMgKGJpdC1hbmQgKGFnZXQgYXJyIDMpIDY1NTM1KSlcbiAgKGxvbmcvZnJvbUJpdHNcbiAgIChjb3JlL2JpdC1vciAoYml0LXNoaWZ0LWxlZnQgKGFnZXQgYXJyIDEpIDE2KSAoYWdldCBhcnIgMCkpXG4gICAoY29yZS9iaXQtb3IgKGJpdC1zaGlmdC1sZWZ0IChhZ2V0IGFyciAzKSAxNikgKGFnZXQgYXJyIDIpKSkpKVxuIn0gezpzeW0gZnJvbS1zdHJpbmcsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbcyByYWRpeF0pfSwgOnNvdXJjZSAiKGRlZm4gZnJvbS1zdHJpbmcgW3MgcmFkaXhdIChsb25nL2Zyb21TdHJpbmcgcyByYWRpeCkpXG4ifSB7OnN5bSAtPmxvbmcsIDptZXRhIHs6ZG9jICJDb2VyY2VzIHRvIGxvbmcsIG9yIHJldHVybnMgbmlsIGlmIG5vdCBwb3NzaWJsZS4iLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmblxuIC0+bG9uZ1xuIFwiQ29lcmNlcyB0byBsb25nLCBvciByZXR1cm5zIG5pbCBpZiBub3QgcG9zc2libGUuXCJcbiBbeF1cbiAoY29uZCAobnVtYmVyPyB4KSAobG9uZy9mcm9tTnVtYmVyIHgpIChpbnN0YW5jZT8gZ29vZy5tYXRoLkxvbmcgeCkgeCkpXG4ifSB7OnN5bSBiaXQtb3IsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbeCB5XSl9LCA6c291cmNlICIoZGVmbiBiaXQtb3IgW3ggeV0gKC5vciB4IHkpKVxuIn0gezpzeW0gT05FLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiBPTkUgKGxvbmcvZ2V0T25lKSlcbiJ9IHs6c3ltICssIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbeCB5XSl9LCA6c291cmNlICIoZGVmbiArIFt4IHldICguYWRkIHggeSkpXG4ifSksIGRldnRvb2xzLmZvcm1hdHRlcnMuaGVscGVycyAoezpzeW0gZXhwYW5kYWJsZT8sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbb2JqXSl9LCA6c291cmNlICIoZGVmblxuIGV4cGFuZGFibGU/XG4gW29ial1cbiAoaWZcbiAgKHNhdGlzZmllcz8gSVNlcWFibGUgb2JqKVxuICAoaWYtbGV0XG4gICBbbWluLWNvdW50XG4gICAgKHByZWZcbiAgICAgKGlmXG4gICAgICAoaW5zdGFuY2Utb2YtYS13ZWxsLWtub3duLXR5cGU/IG9iailcbiAgICAgIDptaW4tZXhwYW5kYWJsZS1zZXF1YWJsZS1jb3VudC1mb3Itd2VsbC1rbm93bi10eXBlc1xuICAgICAgOm1pbi1leHBhbmRhYmxlLXNlcXVhYmxlLWNvdW50KSldXG4gICAoaWYtbm90XG4gICAgKGVtcHR5PyBvYmopXG4gICAgKGxldFxuICAgICBbYWN0dWFsLWNvdW50IChib3VuZGVkLWNvdW50IG1pbi1jb3VudCBvYmopXVxuICAgICAoPj0gYWN0dWFsLWNvdW50IG1pbi1jb3VudCkpKSkpKVxuIn0gezpzeW0gaXMtcHJvdG90eXBlPywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtvXSl9LCA6c291cmNlICIoZGVmblxuIGlzLXByb3RvdHlwZT9cbiBbb11cbiAoaWRlbnRpY2FsPyAoZ2V0LXByb3RvdHlwZSAoZ2V0LWNvbnN0cnVjdG9yIG8pKSBvKSlcbiJ9IHs6c3ltIGNsanMtbGFuZC12YWx1ZT8sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbdmFsdWVdKX0sIDpzb3VyY2UgIihkZWZuXG4gY2xqcy1sYW5kLXZhbHVlP1xuIFt2YWx1ZV1cbiAob3IgKGNsanMtaW5zdGFuY2U/IHZhbHVlKSAoaGFzLWZvcm1hdHRpbmctcHJvdG9jb2w/IHZhbHVlKSkpXG4ifSB7OnN5bSBzaG91bGQtcmVuZGVyPywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtwcmVmLWtleSB2YWx1ZSBkZWZhdWx0LWNoZWNrXSl9LCA6c291cmNlICIoZGVmblxuIHNob3VsZC1yZW5kZXI/XG4gW3ByZWYta2V5IHZhbHVlIGRlZmF1bHQtY2hlY2tdXG4gKGlmLWxldFxuICBbcmVuZGVyLXByZWYgKHByZWYgcHJlZi1rZXkpXVxuICAoY29uZFxuICAgKHRydWU/IHJlbmRlci1wcmVmKVxuICAgKGRlZmF1bHQtY2hlY2sgdmFsdWUpXG4gICAoZm4/IHJlbmRlci1wcmVmKVxuICAgKHJlbmRlci1wcmVmIHZhbHVlKSkpKVxuIn0gezpzeW0gYm9vbD8sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbdmFsdWVdKX0sIDpzb3VyY2UgIihkZWZuIGJvb2w/IFt2YWx1ZV0gKG9yICh0cnVlPyB2YWx1ZSkgKGZhbHNlPyB2YWx1ZSkpKVxuIn0gezpzeW0gY2xqcy1pbnN0YW5jZT8sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbdmFsdWVdKX0sIDpzb3VyY2UgIihkZWZuXG4gY2xqcy1pbnN0YW5jZT9cbiBbdmFsdWVdXG4gKGFuZCAoZ29vZy9pc09iamVjdCB2YWx1ZSkgKGNsanMtdHlwZT8gKGdldC1jb25zdHJ1Y3RvciB2YWx1ZSkpKSlcbiJ9IHs6c3ltIGdldC1jb25zdHJ1Y3RvciwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtvXSl9LCA6c291cmNlICIoZGVmbiBnZXQtY29uc3RydWN0b3IgW29dICguLWNvbnN0cnVjdG9yIG8pKVxuIn0gezpzeW0gaW5zdGFuY2Utb2YtYS13ZWxsLWtub3duLXR5cGU/LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3ZhbHVlXSl9LCA6c291cmNlICIoZGVmblxuIGluc3RhbmNlLW9mLWEtd2VsbC1rbm93bi10eXBlP1xuIFt2YWx1ZV1cbiAobGV0XG4gIFt3ZWxsLWtub3duLXR5cGVzXG4gICAocHJlZiA6d2VsbC1rbm93bi10eXBlcylcbiAgIGNvbnN0cnVjdG9yLWZuXG4gICAoZ2V0LWNvbnN0cnVjdG9yIHZhbHVlKVxuICAgW25zIG5hbWVdXG4gICAobXVuZ2luZy9wYXJzZS1jb25zdHJ1Y3Rvci1pbmZvIGNvbnN0cnVjdG9yLWZuKVxuICAgZnVsbHktcXVhbGlmaWVkLXR5cGUtbmFtZVxuICAgKHN0ciBucyBcIi9cIiBuYW1lKV1cbiAgKGNvbnRhaW5zPyB3ZWxsLWtub3duLXR5cGVzIGZ1bGx5LXF1YWxpZmllZC10eXBlLW5hbWUpKSlcbiJ9IHs6c3ltIGRpcmVjdGx5LXByaW50YWJsZT8sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbdmFsdWVdKX0sIDpzb3VyY2UgIihkZWZuXG4gZGlyZWN0bHktcHJpbnRhYmxlP1xuIFt2YWx1ZV1cbiAob3IgKHN0cmluZz8gdmFsdWUpIChudW1iZXI/IHZhbHVlKSAoYm9vbD8gdmFsdWUpKSlcbiJ9IHs6c3ltIHByZWYsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbdl0pfSwgOnNvdXJjZSAiKGRlZm4gcHJlZiBbdl0gKGlmIChrZXl3b3JkPyB2KSAocmVjdXIgKHByZWZzL3ByZWYgdikpIHYpKVxuIn0gezpzeW0gZ2V0LXByb3RvdHlwZSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtvXSl9LCA6c291cmNlICIoZGVmbiBnZXQtcHJvdG90eXBlIFtvXSAoLi1wcm90b3R5cGUgbykpXG4ifSB7OnN5bSB3cmFwLWFyaXR5LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2FyaXR5XSl9LCA6c291cmNlICIoZGVmblxuIHdyYXAtYXJpdHlcbiBbYXJpdHldXG4gKGxldFxuICBbYXJncy1vcGVuLXN5bWJvbFxuICAgKHByZWYgOmFyZ3Mtb3Blbi1zeW1ib2wpXG4gICBhcmdzLWNsb3NlLXN5bWJvbFxuICAgKHByZWYgOmFyZ3MtY2xvc2Utc3ltYm9sKV1cbiAgKHN0ciBhcmdzLW9wZW4tc3ltYm9sIGFyaXR5IGFyZ3MtY2xvc2Utc3ltYm9sKSkpXG4ifSB7OnN5bSBjbGpzLWZ1bmN0aW9uPywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt2YWx1ZV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBjbGpzLWZ1bmN0aW9uP1xuIFt2YWx1ZV1cbiAoYW5kXG4gIChub3QgKHByZWYgOmRpc2FibGUtY2xqcy1mbi1mb3JtYXR0aW5nKSlcbiAgKG5vdCAodmFyPyB2YWx1ZSkpXG4gIChtdW5naW5nL2NsanMtZm4/IHZhbHVlKSkpXG4ifSB7OnN5bSBnZXQtbW9yZS1tYXJrZXIsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbbW9yZS1jb3VudF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBnZXQtbW9yZS1tYXJrZXJcbiBbbW9yZS1jb3VudF1cbiAoc3RyIChwcmVmIDpwbHVzLXN5bWJvbCkgbW9yZS1jb3VudCAocHJlZiA6bW9yZS1zeW1ib2wpKSlcbiJ9IHs6c3ltIGZldGNoLWZpZWxkcy12YWx1ZXMsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbb2JqIGZpZWxkc10pfSwgOnNvdXJjZSAiKGRlZm5cbiBmZXRjaC1maWVsZHMtdmFsdWVzXG4gW29iaiBmaWVsZHNdXG4gKG1hcCAocGFydGlhbCBmZXRjaC1maWVsZC12YWx1ZSBvYmopIGZpZWxkcykpXG4ifSB7OnN5bSBhYmJyZXZpYXRlZD8sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbdGVtcGxhdGVdKX0sIDpzb3VyY2UgIihkZWZuXG4gYWJicmV2aWF0ZWQ/XG4gW3RlbXBsYXRlXVxuIChzb21lIChmbiogW3AxX180MjA5OSNdICg9IChwcmVmIDptb3JlLW1hcmtlcikgcDFfXzQyMDk5IykpIHRlbXBsYXRlKSlcbiJ9IHs6c3ltIGhhcy1mb3JtYXR0aW5nLXByb3RvY29sPywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt2YWx1ZV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBoYXMtZm9ybWF0dGluZy1wcm90b2NvbD9cbiBbdmFsdWVdXG4gKG9yXG4gIChzYWZlLWNhbGwgc2F0aXNmaWVzPyBmYWxzZSBJUHJpbnRXaXRoV3JpdGVyIHZhbHVlKVxuICAoc2FmZS1jYWxsIHNhdGlzZmllcz8gZmFsc2UgSURldnRvb2xzRm9ybWF0IHZhbHVlKVxuICAoc2FmZS1jYWxsIHNhdGlzZmllcz8gZmFsc2UgSUZvcm1hdCB2YWx1ZSkpKVxuIn0gezpzeW0gaXMtanMtc3ltYm9sPywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtvXSl9LCA6c291cmNlICIoZGVmbiBpcy1qcy1zeW1ib2w/IFtvXSAoPSAoZ29vZy90eXBlT2YgbykgXCJzeW1ib2xcIikpXG4ifSB7OnN5bSBhYmJyZXZpYXRlLWxvbmctc3RyaW5nLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3N0cmluZyBtYXJrZXIgcHJlZml4LWxpbWl0IHBvc3RmaXgtbGltaXRdKX0sIDpzb3VyY2UgIihkZWZuXG4gYWJicmV2aWF0ZS1sb25nLXN0cmluZ1xuIFtzdHJpbmcgbWFya2VyIHByZWZpeC1saW1pdCBwb3N0Zml4LWxpbWl0XVxuIChsZXRcbiAgW3ByZWZpeFxuICAgKC5zbGljZSBzdHJpbmcgMCBwcmVmaXgtbGltaXQpXG4gICBwb3N0Zml4XG4gICAoLnNsaWNlIHN0cmluZyAoLSAoLi1sZW5ndGggc3RyaW5nKSBwb3N0Zml4LWxpbWl0KSldXG4gIChzdHIgcHJlZml4IG1hcmtlciBwb3N0Zml4KSkpXG4ifSB7OnN5bSBjbGpzLXZhbHVlPywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt2YWx1ZV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBjbGpzLXZhbHVlP1xuIFt2YWx1ZV1cbiAoYW5kXG4gIChvciAoY2xqcy1sYW5kLXZhbHVlPyB2YWx1ZSkgKGNsanMtZnVuY3Rpb24/IHZhbHVlKSlcbiAgKG5vdCAoaXMtcHJvdG90eXBlPyB2YWx1ZSkpXG4gIChub3QgKGlzLWpzLXN5bWJvbD8gdmFsdWUpKSkpXG4ifSB7OnN5bSBjbGpzLXR5cGU/LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2ZdKX0sIDpzb3VyY2UgIihkZWZuXG4gY2xqcy10eXBlP1xuIFtmXVxuIChhbmQgKGdvb2cvaXNPYmplY3QgZikgKG5vdCAoaXMtcHJvdG90eXBlPyBmKSkgKC4tY2xqcyRsYW5nJHR5cGUgZikpKVxuIn0gezpzeW0gc2hvdWxkLXJlbmRlci1pbnN0YW5jZT8sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbdmFsdWVdKX0sIDpzb3VyY2UgIihkZWZuXG4gc2hvdWxkLXJlbmRlci1pbnN0YW5jZT9cbiBbdmFsdWVdXG4gKGFuZFxuICAoY2xqcy1pbnN0YW5jZT8gdmFsdWUpXG4gIChub3QgKGluc3RhbmNlLW9mLWEtd2VsbC1rbm93bi10eXBlPyB2YWx1ZSkpKSlcbiJ9IHs6c3ltIGZldGNoLWZpZWxkLXZhbHVlLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW29iaiBmaWVsZF0pfSwgOnNvdXJjZSAiKGRlZm4gZmV0Y2gtZmllbGQtdmFsdWUgW29iaiBmaWVsZF0gW2ZpZWxkIChvZ2V0IG9iaiAobXVuZ2UgZmllbGQpKV0pXG4ifSksIGRldnRvb2xzLmZvcm1hdHRlcnMubWFya3VwICh7OnN5bSA8YWxpZ25lZC1ib2R5PiwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFttYXJrdXBzLWxpc3RzXSl9LCA6c291cmNlICIoZGVmblxuIDxhbGlnbmVkLWJvZHk+XG4gW21hcmt1cHMtbGlzdHNdXG4gKGxldFxuICBbcHJlcGVuZC1saS10YWdcbiAgIChmbiBbbGluZV0gKGlmIGxpbmUgKGNvbmNhdCBbOmFsaWduZWQtbGktdGFnXSBsaW5lKSkpXG4gICBhbGlnbmVkLWxpbmVzXG4gICAoa2VlcCBwcmVwZW5kLWxpLXRhZyBtYXJrdXBzLWxpc3RzKV1cbiAgKDxib2R5PiAoY29uY2F0IFs6c3RhbmRhcmQtb2wtbm8tbWFyZ2luLXRhZ10gYWxpZ25lZC1saW5lcykpKSlcbiJ9IHs6c3ltIDxuYXRpdmUtcmVmZXJlbmNlPiwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtvYmplY3RdKX0sIDpzb3VyY2UgIihkZWZuXG4gPG5hdGl2ZS1yZWZlcmVuY2U+XG4gW29iamVjdF1cbiAobGV0XG4gIFtyZWZlcmVuY2VcbiAgICg8cmVmZXJlbmNlPlxuICAgIG9iamVjdFxuICAgIChmbiogW3AxX180MjA5NiNdIChzZXQtcHJldmVudC1yZWN1cnNpb24gcDFfXzQyMDk2IyB0cnVlKSkpXVxuICBbOm5hdGl2ZS1yZWZlcmVuY2Utd3JhcHBlci10YWdcbiAgIDpuYXRpdmUtcmVmZXJlbmNlLWJhY2tncm91bmRcbiAgIFs6bmF0aXZlLXJlZmVyZW5jZS10YWcgcmVmZXJlbmNlXV0pKVxuIn0gezpzeW0gPHJlZmVyZW5jZS1zdXJyb2dhdGU+LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoWyYgYXJnc10pfSwgOnNvdXJjZSAiKGRlZm5cbiA8cmVmZXJlbmNlLXN1cnJvZ2F0ZT5cbiBbJiBhcmdzXVxuICg8cmVmZXJlbmNlPiAoYXBwbHkgPHN1cnJvZ2F0ZT4gYXJncykpKVxuIn0gezpzeW0gPGtleXdvcmQ+LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2tleXdvcmRdKX0sIDpzb3VyY2UgIihkZWZuIDxrZXl3b3JkPiBba2V5d29yZF0gWzprZXl3b3JkLXRhZyAoc3RyIGtleXdvcmQpXSlcbiJ9IHs6c3ltIHByaW50LXZpYS13cml0ZXIsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbdmFsdWUgdGFnICYgW21heC1sZXZlbF1dKX0sIDpzb3VyY2UgIihkZWZuXG4gcHJpbnQtdmlhLXdyaXRlclxuIFt2YWx1ZSB0YWcgJiBbbWF4LWxldmVsXV1cbiAocHJpbnQtd2l0aCBtYW5hZ2VkLXByaW50LXZpYS13cml0ZXIgdmFsdWUgdGFnIG1heC1sZXZlbCkpXG4ifSB7OnN5bSA8cHJvdG9jb2wtbWV0aG9kLWFyaXRpZXM+LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2ZucyAmIFttYXgtZm5zXV0pfSwgOnNvdXJjZSAiKGRlZm5cbiA8cHJvdG9jb2wtbWV0aG9kLWFyaXRpZXM+XG4gW2ZucyAmIFttYXgtZm5zXV1cbiAobGV0XG4gIFttYXgtZm5zXG4gICAob3IgbWF4LWZucyAocHJlZiA6bWF4LXByb3RvY29sLW1ldGhvZC1hcml0aWVzLWxpc3QpKVxuICAgbW9yZT9cbiAgICg+IChjb3VudCBmbnMpIG1heC1mbnMpXG4gICBhcml0aXRlcy1tYXJrdXBzXG4gICAobWFwIDxwcm90b2NvbC1tZXRob2QtYXJpdHk+ICh0YWtlIG1heC1mbnMgZm5zKSlcbiAgIHByZXZpZXctbWFya3VwXG4gICAoY29uY2F0XG4gICAgWzpwcm90b2NvbC1tZXRob2QtYXJpdGllcy1oZWFkZXItdGFnXG4gICAgIDpwcm90b2NvbC1tZXRob2QtYXJpdGllcy1oZWFkZXItb3Blbi1zeW1ib2xdXG4gICAgKGludGVycG9zZVxuICAgICA6cHJvdG9jb2wtbWV0aG9kLWFyaXRpZXMtbGlzdC1oZWFkZXItc2VwYXJhdG9yXG4gICAgIGFyaXRpdGVzLW1hcmt1cHMpXG4gICAgKGlmIG1vcmU/IFs6cHJvdG9jb2wtbWV0aG9kLWFyaXRpZXMtbW9yZS1zeW1ib2xdKVxuICAgIFs6cHJvdG9jb2wtbWV0aG9kLWFyaXRpZXMtaGVhZGVyLWNsb3NlLXN5bWJvbF0pXVxuICAoaWZcbiAgIG1vcmU/XG4gICAobGV0XG4gICAgW2RldGFpbHMtbWFya3VwLWZuIChwYXJ0aWFsIDxwcm90b2NvbC1tZXRob2QtYXJpdGllcy1kZXRhaWxzPiBmbnMpXVxuICAgICg8cmVmZXJlbmNlLXN1cnJvZ2F0ZT4gbmlsIHByZXZpZXctbWFya3VwIGRldGFpbHMtbWFya3VwLWZuKSlcbiAgIHByZXZpZXctbWFya3VwKSkpXG4ifSB7OnN5bSA8c3Vycm9nYXRlLWhlYWRlcj4sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbc3Vycm9nYXRlXSl9LCA6c291cmNlICIoZGVmblxuIDxzdXJyb2dhdGUtaGVhZGVyPlxuIFtzdXJyb2dhdGVdXG4gKG9yXG4gIChnZXQtc3Vycm9nYXRlLWhlYWRlciBzdXJyb2dhdGUpXG4gICg8cHJldmlldz4gKGdldC1zdXJyb2dhdGUtdGFyZ2V0IHN1cnJvZ2F0ZSkpKSlcbiJ9IHs6c3ltIDxkZXRhaWxzPiwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt2YWx1ZSBzdGFydGluZy1pbmRleF0pfSwgOnNvdXJjZSAiKGRlZm5cbiA8ZGV0YWlscz5cbiBbdmFsdWUgc3RhcnRpbmctaW5kZXhdXG4gKGRldnRvb2xzLmZvcm1hdHRlcnMuc3RhdGUvcHVzaC1vYmplY3QtdG8tY3VycmVudC1oaXN0b3J5ISB2YWx1ZSlcbiAobGV0XG4gIFtoYXMtY29udGludWF0aW9uP1xuICAgKHBvcz8gc3RhcnRpbmctaW5kZXgpXG4gICBib2R5LW1hcmt1cFxuICAgKDxzdGFuZGFyZC1ib2R5PlxuICAgIChib2R5LWxpbmVzIHZhbHVlIHN0YXJ0aW5nLWluZGV4KVxuICAgIGhhcy1jb250aW51YXRpb24/KV1cbiAgKGlmIGhhcy1jb250aW51YXRpb24/IGJvZHktbWFya3VwICg8Ym9keT4gYm9keS1tYXJrdXApKSkpXG4ifSB7OnN5bSA8bW9yZS1wcm90b2NvbHM+LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW21vcmUtY291bnRdKX0sIDpzb3VyY2UgIihkZWZuXG4gPG1vcmUtcHJvdG9jb2xzPlxuIFttb3JlLWNvdW50XVxuIChsZXRcbiAgW2Zha2UtcHJvdG9jb2wgezpuYW1lIChnZXQtbW9yZS1tYXJrZXIgbW9yZS1jb3VudCl9XVxuICAoPHByb3RvY29sPiBuaWwgZmFrZS1wcm90b2NvbCA6cHJvdG9jb2wtbW9yZS10YWcpKSlcbiJ9IHs6c3ltIDxmaWVsZD4sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbbmFtZSB2YWx1ZV0pfSwgOnNvdXJjZSAiKGRlZm5cbiA8ZmllbGQ+XG4gW25hbWUgdmFsdWVdXG4gWzpoZWFkZXItZmllbGQtdGFnXG4gIFs6aGVhZGVyLWZpZWxkLW5hbWUtdGFnIChzdHIgbmFtZSldXG4gIDpoZWFkZXItZmllbGQtdmFsdWUtc3BhY2VyXG4gIFs6aGVhZGVyLWZpZWxkLXZhbHVlLXRhZ1xuICAgKDxyZWZlcmVuY2U+XG4gICAgKDxzdXJyb2dhdGU+IHZhbHVlKVxuICAgIChmbiogW3AxX180MjA5NyNdIChzZXQtbWFuYWdlZC1wcmludC1sZXZlbCBwMV9fNDIwOTcjIDEpKSldXG4gIDpoZWFkZXItZmllbGQtc2VwYXJhdG9yXSlcbiJ9IHs6c3ltIDxzeW1ib2w+LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3N5bWJvbF0pfSwgOnNvdXJjZSAiKGRlZm4gPHN5bWJvbD4gW3N5bWJvbF0gWzpzeW1ib2wtdGFnIChzdHIgc3ltYm9sKV0pXG4ifSB7OnN5bSA8ZmllbGRzLWRldGFpbHM+LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2ZpZWxkcyBvYmpdKX0sIDpzb3VyY2UgIihkZWZuXG4gPGZpZWxkcy1kZXRhaWxzPlxuIFtmaWVsZHMgb2JqXVxuIChsZXRcbiAgW3Byb3RvY29sc1xuICAgKG11bmdpbmcvc2Nhbi1wcm90b2NvbHMgb2JqKVxuICAgaGFzLXByb3RvY29scz9cbiAgIChub3QgKGVtcHR5PyBwcm90b2NvbHMpKVxuICAgZmllbGRzLW1hcmt1cFxuICAgKGlmLW5vdFxuICAgICh6ZXJvPyAoY291bnQgZmllbGRzKSlcbiAgICBbOmZpZWxkcy1pY29uXG4gICAgIChjb25jYXRcbiAgICAgIFs6aW5zdGFuY2UtYm9keS1maWVsZHMtdGFibGUtdGFnXVxuICAgICAgKG1hcCA8ZmllbGRzLWRldGFpbHMtcm93PiBmaWVsZHMpKV0pXG4gICBwcm90b2NvbHMtbGlzdC1tYXJrdXBcbiAgIChpZlxuICAgIGhhcy1wcm90b2NvbHM/XG4gICAgWzpwcm90b2NvbHMtaWNvbiAoPHByb3RvY29scy1saXN0PiBvYmogcHJvdG9jb2xzKV0pXG4gICBuYXRpdmUtbWFya3VwXG4gICBbOm5hdGl2ZS1pY29uICg8bmF0aXZlLXJlZmVyZW5jZT4gb2JqKV1dXG4gICg8YWxpZ25lZC1ib2R5PiBbZmllbGRzLW1hcmt1cCBwcm90b2NvbHMtbGlzdC1tYXJrdXAgbmF0aXZlLW1hcmt1cF0pKSlcbiJ9IHs6c3ltIDxhdG9taWM+LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3ZhbHVlXSl9LCA6c291cmNlICIoZGVmblxuIDxhdG9taWM+XG4gW3ZhbHVlXVxuIChjb25kXG4gIChzaG91bGQtcmVuZGVyPyA6cmVuZGVyLW5pbHMgdmFsdWUgbmlsPylcbiAgKDxuaWw+KVxuICAoc2hvdWxkLXJlbmRlcj8gOnJlbmRlci1ib29scyB2YWx1ZSBib29sPylcbiAgKDxib29sPiB2YWx1ZSlcbiAgKHNob3VsZC1yZW5kZXI/IDpyZW5kZXItc3RyaW5ncyB2YWx1ZSBzdHJpbmc/KVxuICAoPHN0cmluZz4gdmFsdWUpXG4gIChzaG91bGQtcmVuZGVyPyA6cmVuZGVyLW51bWJlcnMgdmFsdWUgbnVtYmVyPylcbiAgKDxudW1iZXI+IHZhbHVlKVxuICAoc2hvdWxkLXJlbmRlcj8gOnJlbmRlci1rZXl3b3JkcyB2YWx1ZSBrZXl3b3JkPylcbiAgKDxrZXl3b3JkPiB2YWx1ZSlcbiAgKHNob3VsZC1yZW5kZXI/IDpyZW5kZXItc3ltYm9scyB2YWx1ZSBzeW1ib2w/KVxuICAoPHN5bWJvbD4gdmFsdWUpXG4gIChzaG91bGQtcmVuZGVyPyA6cmVuZGVyLWluc3RhbmNlcyB2YWx1ZSBzaG91bGQtcmVuZGVyLWluc3RhbmNlPylcbiAgKDxpbnN0YW5jZT4gdmFsdWUpXG4gIChzaG91bGQtcmVuZGVyPyA6cmVuZGVyLXR5cGVzIHZhbHVlIGNsanMtdHlwZT8pXG4gICg8c3RhbmRhbG9uZS10eXBlPiB2YWx1ZSlcbiAgKHNob3VsZC1yZW5kZXI/IDpyZW5kZXItZnVuY3Rpb25zIHZhbHVlIGNsanMtZnVuY3Rpb24/KVxuICAoPGZ1bmN0aW9uPiB2YWx1ZSkpKVxuIn0gezpzeW0gPHN0cmluZz4sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbc3RyaW5nXSl9LCA6c291cmNlICIoZGVmblxuIDxzdHJpbmc+XG4gW3N0cmluZ11cbiAobGV0XG4gIFtkcVxuICAgKHByZWYgOmRxKVxuICAgcmUtbmxcbiAgIChqcy9SZWdFeHAuIFwiXFxuXCIgXCJnXCIpXG4gICBubC1tYXJrZXJcbiAgIChwcmVmIDpuZXctbGluZS1zdHJpbmctcmVwbGFjZXIpXG4gICBpbmxpbmUtc3RyaW5nXG4gICAoLnJlcGxhY2Ugc3RyaW5nIHJlLW5sIG5sLW1hcmtlcilcbiAgIG1heC1pbmxpbmUtc3RyaW5nLXNpemVcbiAgICgrIChwcmVmIDpzdHJpbmctcHJlZml4LWxpbWl0KSAocHJlZiA6c3RyaW5nLXBvc3RmaXgtbGltaXQpKVxuICAgcXVvdGUtc3RyaW5nXG4gICAoZm4gW3NdIChzdHIgZHEgcyBkcSkpXG4gICBzaG91bGQtYWJicmV2aWF0ZT9cbiAgICg+IChjb3VudCBpbmxpbmUtc3RyaW5nKSBtYXgtaW5saW5lLXN0cmluZy1zaXplKV1cbiAgKGlmXG4gICBzaG91bGQtYWJicmV2aWF0ZT9cbiAgIChsZXRcbiAgICBbYWJicmV2aWF0ZWQtc3RyaW5nXG4gICAgIChhYmJyZXZpYXRlLWxvbmctc3RyaW5nXG4gICAgICBpbmxpbmUtc3RyaW5nXG4gICAgICAocHJlZiA6c3RyaW5nLWFiYnJldmlhdGlvbi1tYXJrZXIpXG4gICAgICAocHJlZiA6c3RyaW5nLXByZWZpeC1saW1pdClcbiAgICAgIChwcmVmIDpzdHJpbmctcG9zdGZpeC1saW1pdCkpXG4gICAgIGFiYnJldmlhdGVkLXN0cmluZy1tYXJrdXBcbiAgICAgWzpzdHJpbmctdGFnIChxdW90ZS1zdHJpbmcgYWJicmV2aWF0ZWQtc3RyaW5nKV1cbiAgICAgc3RyaW5nLXdpdGgtbmwtbWFya2Vyc1xuICAgICAoLnJlcGxhY2Ugc3RyaW5nIHJlLW5sIChzdHIgbmwtbWFya2VyIFwiXFxuXCIpKVxuICAgICBkZXRhaWxzLW1hcmt1cFxuICAgICBbOmV4cGFuZGVkLXN0cmluZy10YWcgc3RyaW5nLXdpdGgtbmwtbWFya2Vyc11dXG4gICAgKDxyZWZlcmVuY2Utc3Vycm9nYXRlPlxuICAgICBzdHJpbmdcbiAgICAgYWJicmV2aWF0ZWQtc3RyaW5nLW1hcmt1cFxuICAgICBkZXRhaWxzLW1hcmt1cCkpXG4gICBbOnN0cmluZy10YWcgKHF1b3RlLXN0cmluZyBpbmxpbmUtc3RyaW5nKV0pKSlcbiJ9IHs6c3ltIDxzdGFuZGFyZC1ib2R5PiwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFttYXJrdXBzLWxpc3RzICYgW25vLW1hcmdpbj9dXSl9LCA6c291cmNlICIoZGVmblxuIDxzdGFuZGFyZC1ib2R5PlxuIFttYXJrdXBzLWxpc3RzICYgW25vLW1hcmdpbj9dXVxuIChsZXRcbiAgW29sLXRhZ1xuICAgKGlmIG5vLW1hcmdpbj8gOnN0YW5kYXJkLW9sLW5vLW1hcmdpbi10YWcgOnN0YW5kYXJkLW9sLXRhZylcbiAgIGxpLXRhZ1xuICAgKGlmIG5vLW1hcmdpbj8gOnN0YW5kYXJkLWxpLW5vLW1hcmdpbi10YWcgOnN0YW5kYXJkLWxpLXRhZylcbiAgIHByZXBlbmQtbGktdGFnXG4gICAoZm4gW2xpbmVdIChpZiBsaW5lIChjb25jYXQgW2xpLXRhZ10gbGluZSkpKVxuICAgbGluZXMtbWFya3Vwc1xuICAgKGtlZXAgcHJlcGVuZC1saS10YWcgbWFya3Vwcy1saXN0cyldXG4gIChjb25jYXQgW29sLXRhZ10gbGluZXMtbWFya3VwcykpKVxuIn0gezpzeW0gPHR5cGUtYmFzaXM+LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2Jhc2lzXSl9LCA6c291cmNlICIoZGVmblxuIDx0eXBlLWJhc2lzPlxuIFtiYXNpc11cbiAobGV0XG4gIFtpdGVtLW1hcmt1cHNcbiAgIChtYXAgPHR5cGUtYmFzaXMtaXRlbT4gYmFzaXMpXG4gICBjaGlsZHJlbi1tYXJrdXBzXG4gICAoaW50ZXJwb3NlIDp0eXBlLWJhc2lzLWl0ZW0tc2VwYXJhdG9yIGl0ZW0tbWFya3VwcyldXG4gIChjb25jYXQgWzp0eXBlLWJhc2lzLXRhZ10gY2hpbGRyZW4tbWFya3VwcykpKVxuIn0gezpzeW0gcHJpbnQtdmlhLXByb3RvY29sLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3ZhbHVlIHRhZyAmIFttYXgtbGV2ZWxdXSl9LCA6c291cmNlICIoZGVmblxuIHByaW50LXZpYS1wcm90b2NvbFxuIFt2YWx1ZSB0YWcgJiBbbWF4LWxldmVsXV1cbiAocHJpbnQtd2l0aCBtYW5hZ2VkLXByaW50LXZpYS1wcm90b2NvbCB2YWx1ZSB0YWcgbWF4LWxldmVsKSlcbiJ9IHs6c3ltIHByaW50LXdpdGgsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbbWV0aG9kIHZhbHVlIHRhZyAmIFttYXgtbGV2ZWxdXSl9LCA6c291cmNlICIoZGVmblxuIHByaW50LXdpdGhcbiBbbWV0aG9kIHZhbHVlIHRhZyAmIFttYXgtbGV2ZWxdXVxuIChsZXRcbiAgW2pvYi1mbiAoZm4qIFtdIChtZXRob2QgdmFsdWUgdGFnIChnZXQtbWFya3VwLWRiKSkpXVxuICAoaWZcbiAgIChzb21lPyBtYXgtbGV2ZWwpXG4gICAoYmluZGluZyBbKnByaW50LWxldmVsKiAoaW5jIG1heC1sZXZlbCldIChqb2ItZm4pKVxuICAgKGpvYi1mbikpKSlcbiJ9IHs6c3ltIDxib29sPiwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtib29sXSl9LCA6c291cmNlICIoZGVmbiA8Ym9vbD4gW2Jvb2xdIFs6Ym9vbC10YWcgKHN0ciBib29sKV0pXG4ifSB7OnN5bSA8c3RhbmRhbG9uZS10eXBlPiwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtjb25zdHJ1Y3Rvci1mbiAmIFtoZWFkZXItdGFnXV0pfSwgOnNvdXJjZSAiKGRlZm5cbiA8c3RhbmRhbG9uZS10eXBlPlxuIFtjb25zdHJ1Y3Rvci1mbiAmIFtoZWFkZXItdGFnXV1cbiBbOnN0YW5kYWxvbmUtdHlwZS10YWcgKDx0eXBlPiBjb25zdHJ1Y3Rvci1mbiBoZWFkZXItdGFnKV0pXG4ifSB7OnN5bSA8cHJldmlldz4sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbdmFsdWVdKX0sIDpzb3VyY2UgIihkZWZuXG4gPHByZXZpZXc+XG4gW3ZhbHVlXVxuIChwcmludC12aWEtd3JpdGVyIHZhbHVlIDpoZWFkZXItdGFnIChwcmVmIDptYXgtcHJpbnQtbGV2ZWwpKSlcbiJ9IHs6c3ltIDxoZWFkZXI+LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3ZhbHVlXSl9LCA6c291cmNlICIoZGVmbiA8aGVhZGVyPiBbdmFsdWVdICg8Y2xqcy1sYW5kPiAoPHByZXZpZXc+IHZhbHVlKSkpXG4ifSB7OnN5bSA8cHJvdG9jb2wtbWV0aG9kPiwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtuYW1lIGFyaXRpZXNdKX0sIDpzb3VyY2UgIihkZWZuXG4gPHByb3RvY29sLW1ldGhvZD5cbiBbbmFtZSBhcml0aWVzXVxuIFs6cHJvdG9jb2wtbWV0aG9kLXRhZ1xuICA6bWV0aG9kLWljb25cbiAgWzpwcm90b2NvbC1tZXRob2QtbmFtZS10YWcgbmFtZV1cbiAgKDxwcm90b2NvbC1tZXRob2QtYXJpdGllcz4gYXJpdGllcyldKVxuIn0gezpzeW0gPGNsanMtbGFuZD4sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbJiBjaGlsZHJlbl0pfSwgOnNvdXJjZSAiKGRlZm4gPGNsanMtbGFuZD4gWyYgY2hpbGRyZW5dIChjb25jYXQgWzpjbGpzLWxhbmQtdGFnXSBjaGlsZHJlbikpXG4ifSB7OnN5bSA8dHlwZS1iYXNpcy1pdGVtPiwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtiYXNpcy1pdGVtXSl9LCA6c291cmNlICIoZGVmblxuIDx0eXBlLWJhc2lzLWl0ZW0+XG4gW2Jhc2lzLWl0ZW1dXG4gWzp0eXBlLWJhc2lzLWl0ZW0tdGFnIChuYW1lIGJhc2lzLWl0ZW0pXSlcbiJ9IHs6c3ltIDxwcm90b2NvbC1tZXRob2QtYXJpdGllcy1kZXRhaWxzPiwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtmbnNdKX0sIDpzb3VyY2UgIihkZWZuXG4gPHByb3RvY29sLW1ldGhvZC1hcml0aWVzLWRldGFpbHM+XG4gW2Zuc11cbiAoPGFsaWduZWQtYm9keT4gKG1hcCA8cHJvdG9jb2wtbWV0aG9kLWFyaXR5PiBmbnMpKSlcbiJ9IHs6c3ltIDxmaWVsZHMtZGV0YWlscy1yb3c+LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2ZpZWxkXSl9LCA6c291cmNlICIoZGVmblxuIDxmaWVsZHMtZGV0YWlscy1yb3c+XG4gW2ZpZWxkXVxuIChsZXRcbiAgW1tuYW1lIHZhbHVlXSBmaWVsZF1cbiAgWzpib2R5LWZpZWxkLXRyLXRhZ1xuICAgWzpib2R5LWZpZWxkLXRkMS10YWdcbiAgICA6Ym9keS1maWVsZC1zeW1ib2xcbiAgICBbOmJvZHktZmllbGQtbmFtZS10YWcgKHN0ciBuYW1lKV1dXG4gICBbOmJvZHktZmllbGQtdGQyLXRhZyA6Ym9keS1maWVsZC12YWx1ZS1zcGFjZXJdXG4gICBbOmJvZHktZmllbGQtdGQzLXRhZ1xuICAgIFs6Ym9keS1maWVsZC12YWx1ZS10YWcgKDxyZWZlcmVuY2Utc3Vycm9nYXRlPiB2YWx1ZSldXV0pKVxuIn0gezpzeW0gPHN0YW5kYXJkLWJvZHktcmVmZXJlbmNlPiwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtvXSl9LCA6c291cmNlICIoZGVmblxuIDxzdGFuZGFyZC1ib2R5LXJlZmVyZW5jZT5cbiBbb11cbiAoPHN0YW5kYXJkLWJvZHk+IFtbKDxyZWZlcmVuY2U+IG8pXV0pKVxuIn0gezpzeW0gPHN1cnJvZ2F0ZS1ib2R5PiwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtzdXJyb2dhdGVdKX0sIDpzb3VyY2UgIihkZWZuXG4gPHN1cnJvZ2F0ZS1ib2R5PlxuIFtzdXJyb2dhdGVdXG4gKGlmLWxldFxuICBbYm9keSAoZ2V0LXN1cnJvZ2F0ZS1ib2R5IHN1cnJvZ2F0ZSldXG4gIChpZiAoPSA6dGFyZ2V0IGJvZHkpICg8c3Vycm9nYXRlLXRhcmdldD4gc3Vycm9nYXRlKSBib2R5KSkpXG4ifSB7OnN5bSBnZXQtbWFya3VwLWRiLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW10pfSwgOnNvdXJjZSAiKGRlZm5cbiBnZXQtbWFya3VwLWRiXG4gW11cbiAoaWYgKG5pbD8gKm1hcmt1cC1kYiopIChzZXQhICptYXJrdXAtZGIqIChlbWl0LW1hcmt1cC1kYikpKVxuICptYXJrdXAtZGIqKVxuIn0gezpzeW0gPGV4cGFuZGFibGU+LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoWyYgY2hpbGRyZW5dKX0sIDpzb3VyY2UgIihkZWZuXG4gPGV4cGFuZGFibGU+XG4gWyYgY2hpbGRyZW5dXG4gKGxldFxuICBbaW5uZXItbWFya3VwIChjb25jYXQgWzpleHBhbmRhYmxlLWlubmVyLXRhZ10gY2hpbGRyZW4pXVxuICBbOmV4cGFuZGFibGUtdGFnIDpleHBhbmRhYmxlLXN5bWJvbCBpbm5lci1tYXJrdXBdKSlcbiJ9IHs6c3ltIDx0eXBlPiwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtjb25zdHJ1Y3Rvci1mbiAmIFtoZWFkZXItdGFnXV0pfSwgOnNvdXJjZSAiKGRlZm5cbiA8dHlwZT5cbiBbY29uc3RydWN0b3ItZm4gJiBbaGVhZGVyLXRhZ11dXG4gKGxldFxuICBbW25zIG5hbWUgYmFzaXNdXG4gICAobXVuZ2luZy9wYXJzZS1jb25zdHJ1Y3Rvci1pbmZvIGNvbnN0cnVjdG9yLWZuKVxuICAgbmFtZS1tYXJrdXBcbiAgIFs6dHlwZS1uYW1lLXRhZyBuYW1lXVxuICAgcHJldmlldy1tYXJrdXBcbiAgIFsob3IgaGVhZGVyLXRhZyA6dHlwZS1oZWFkZXItdGFnKSA6dHlwZS1zeW1ib2wgbmFtZS1tYXJrdXBdXG4gICBkZXRhaWxzLW1hcmt1cC1mblxuICAgKHBhcnRpYWwgPHR5cGUtZGV0YWlscz4gY29uc3RydWN0b3ItZm4gbnMgbmFtZSBiYXNpcyldXG4gIFs6dHlwZS13cmFwcGVyLXRhZ1xuICAgOnR5cGUtaGVhZGVyLWJhY2tncm91bmRcbiAgIFs6dHlwZS1yZWYtdGFnXG4gICAgKDxyZWZlcmVuY2Utc3Vycm9nYXRlPlxuICAgICBjb25zdHJ1Y3Rvci1mblxuICAgICBwcmV2aWV3LW1hcmt1cFxuICAgICBkZXRhaWxzLW1hcmt1cC1mbildXSkpXG4ifSB7OnN5bSA8cHJvdG9jb2wtbWV0aG9kLWFyaXR5PiwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFthcml0eS1mbl0pfSwgOnNvdXJjZSAiKGRlZm4gPHByb3RvY29sLW1ldGhvZC1hcml0eT4gW2FyaXR5LWZuXSAoPHJlZmVyZW5jZT4gYXJpdHktZm4pKVxuIn0gezpzeW0gPHJhdy1zdXJyb2dhdGU+LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoWyYgYXJnc10pfSwgOnNvdXJjZSAiKGRlZm4gPHJhdy1zdXJyb2dhdGU+IFsmIGFyZ3NdIChjb25jYXQgW1wic3Vycm9nYXRlXCJdIGFyZ3MpKVxuIn0gezpzeW0gPHR5cGUtZGV0YWlscz4sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbY29uc3RydWN0b3ItZm4gbnMgX25hbWUgYmFzaXNdKX0sIDpzb3VyY2UgIihkZWZuXG4gPHR5cGUtZGV0YWlscz5cbiBbY29uc3RydWN0b3ItZm4gbnMgX25hbWUgYmFzaXNdXG4gKGxldFxuICBbbnMtbWFya3VwXG4gICAoaWYtbm90IChlbXB0eT8gbnMpIFs6bnMtaWNvbiBbOmZuLW5zLW5hbWUtdGFnIG5zXV0pXG4gICBiYXNpcy1tYXJrdXBcbiAgIChpZlxuICAgIChlbXB0eT8gYmFzaXMpXG4gICAgWzplbXB0eS1iYXNpcy1zeW1ib2xdXG4gICAgWzpiYXNpcy1pY29uICg8dHlwZS1iYXNpcz4gYmFzaXMpXSlcbiAgIG5hdGl2ZS1tYXJrdXBcbiAgIFs6bmF0aXZlLWljb24gKDxuYXRpdmUtcmVmZXJlbmNlPiBjb25zdHJ1Y3Rvci1mbildXVxuICAoPGFsaWduZWQtYm9keT4gW2Jhc2lzLW1hcmt1cCBucy1tYXJrdXAgbmF0aXZlLW1hcmt1cF0pKSlcbiJ9IHs6c3ltIDxsaXN0PiwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtpdGVtcyBtYXgtY291bnQgJiBbb3B0c11dKX0sIDpzb3VyY2UgIihkZWZuXG4gPGxpc3Q+XG4gW2l0ZW1zIG1heC1jb3VudCAmIFtvcHRzXV1cbiAobGV0XG4gIFtpdGVtcy1tYXJrdXBzXG4gICAodGFrZSBtYXgtY291bnQgaXRlbXMpXG4gICBtb3JlLWNvdW50XG4gICAoLSAoY291bnQgaXRlbXMpIG1heC1jb3VudClcbiAgIG1vcmU/XG4gICAocG9zPyBtb3JlLWNvdW50KVxuICAgc2VwYXJhdG9yXG4gICAob3IgKDpzZXBhcmF0b3Igb3B0cykgOmxpc3Qtc2VwYXJhdG9yKVxuICAgbW9yZS1zeW1ib2xcbiAgIChpZlxuICAgIG1vcmU/XG4gICAgKGlmLWxldFxuICAgICBbbW9yZS1zeW1ib2wgKDptb3JlLXN5bWJvbCBvcHRzKV1cbiAgICAgKGlmIChmbj8gbW9yZS1zeW1ib2wpIChtb3JlLXN5bWJvbCBtb3JlLWNvdW50KSBtb3JlLXN5bWJvbClcbiAgICAgKGdldC1tb3JlLW1hcmtlciBtb3JlLWNvdW50KSkpXG4gICBwcmV2aWV3LW1hcmt1cFxuICAgKGNvbmNhdFxuICAgIFsob3IgKDp0YWcgb3B0cykgOmxpc3QtdGFnKVxuICAgICAob3IgKDpvcGVuLXN5bWJvbCBvcHRzKSA6bGlzdC1vcGVuLXN5bWJvbCldXG4gICAgKGludGVycG9zZSBzZXBhcmF0b3IgaXRlbXMtbWFya3VwcylcbiAgICAoaWYgbW9yZT8gW3NlcGFyYXRvciBtb3JlLXN5bWJvbF0pXG4gICAgWyhvciAoOmNsb3NlLXN5bWJvbCBvcHRzKSA6bGlzdC1jbG9zZS1zeW1ib2wpXSldXG4gIChpZlxuICAgbW9yZT9cbiAgIChsZXRcbiAgICBbZGV0YWlscy1tYXJrdXBcbiAgICAgKDpkZXRhaWxzIG9wdHMpXG4gICAgIGRlZmF1bHQtZGV0YWlscy1mblxuICAgICAocGFydGlhbCA8bGlzdC1kZXRhaWxzPiBpdGVtcyBvcHRzKV1cbiAgICAoPHJlZmVyZW5jZS1zdXJyb2dhdGU+XG4gICAgIG5pbFxuICAgICBwcmV2aWV3LW1hcmt1cFxuICAgICAob3IgZGV0YWlscy1tYXJrdXAgZGVmYXVsdC1kZXRhaWxzLWZuKSkpXG4gICBwcmV2aWV3LW1hcmt1cCkpKVxuIn0gezpzeW0gPG1ldGEtd3JhcHBlcj4sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbbWV0YWRhdGEgJiBjaGlsZHJlbl0pfSwgOnNvdXJjZSAiKGRlZm5cbiA8bWV0YS13cmFwcGVyPlxuIFttZXRhZGF0YSAmIGNoaWxkcmVuXVxuIChjb25jYXQgWzptZXRhLXdyYXBwZXItdGFnXSBjaGlsZHJlbiBbKDxtZXRhPiBtZXRhZGF0YSldKSlcbiJ9IHs6c3ltIDxwcm90b2NvbD4sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbb2JqIHByb3RvY29sICYgW3RhZ11dKX0sIDpzb3VyY2UgIihkZWZuXG4gPHByb3RvY29sPlxuIFtvYmogcHJvdG9jb2wgJiBbdGFnXV1cbiAobGV0XG4gIFt7OmtleXMgW25zIG5hbWUgc2VsZWN0b3IgZmFzdD9dfVxuICAgcHJvdG9jb2xcbiAgIHByZXZpZXctbWFya3VwXG4gICBbKG9yIHRhZyA6cHJvdG9jb2wtbmFtZS10YWcpIG5hbWVdXG4gICBwcmVmaXgtbWFya3VwXG4gICBbKGlmIGZhc3Q/IDpmYXN0LXByb3RvY29sLXRhZyA6c2xvdy1wcm90b2NvbC10YWcpXG4gICAgOnByb3RvY29sLWJhY2tncm91bmRdXVxuICAoaWZcbiAgIChzb21lPyBvYmopXG4gICAobGV0XG4gICAgW2RldGFpbHMtbWFya3VwLWZuXG4gICAgIChwYXJ0aWFsIDxwcm90b2NvbC1kZXRhaWxzPiBvYmogbnMgbmFtZSBzZWxlY3RvciBmYXN0PyldXG4gICAgKGNvbmpcbiAgICAgcHJlZml4LW1hcmt1cFxuICAgICAoPHJlZmVyZW5jZS1zdXJyb2dhdGU+IG9iaiBwcmV2aWV3LW1hcmt1cCBkZXRhaWxzLW1hcmt1cC1mbikpKVxuICAgKGNvbmogcHJlZml4LW1hcmt1cCBwcmV2aWV3LW1hcmt1cCkpKSlcbiJ9IHs6c3ltIDxpbmRleD4sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbdmFsdWVdKX0sIDpzb3VyY2UgIihkZWZuIDxpbmRleD4gW3ZhbHVlXSBbOmluZGV4LXRhZyB2YWx1ZSA6bGluZS1pbmRleC1zZXBhcmF0b3JdKVxuIn0gezpzeW0gPHN1cnJvZ2F0ZT4sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbJiBbb2JqZWN0IGhlYWRlciBib2R5IHN0YXJ0LWluZGV4XV0pfSwgOnNvdXJjZSAiKGRlZm5cbiA8c3Vycm9nYXRlPlxuIFsmIFtvYmplY3QgaGVhZGVyIGJvZHkgc3RhcnQtaW5kZXhdXVxuIChsZXRcbiAgW2hlYWRlciAoaWYgKHNvbWU/IGJvZHkpICg8ZXhwYW5kYWJsZT4gaGVhZGVyKSBoZWFkZXIpXVxuICAoPHJhdy1zdXJyb2dhdGU+IG9iamVjdCBoZWFkZXIgYm9keSBzdGFydC1pbmRleCkpKVxuIn0gezpzeW0gPHByb3RvY29scy1saXN0PiwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtvYmogcHJvdG9jb2xzICYgW21heC1wcm90b2NvbHNdXSl9LCA6c291cmNlICIoZGVmblxuIDxwcm90b2NvbHMtbGlzdD5cbiBbb2JqIHByb3RvY29scyAmIFttYXgtcHJvdG9jb2xzXV1cbiAobGV0XG4gIFttYXgtcHJvdG9jb2xzXG4gICAob3IgbWF4LXByb3RvY29scyAocHJlZiA6bWF4LWxpc3QtcHJvdG9jb2xzKSlcbiAgIHByb3RvY29scy1tYXJrdXBzXG4gICAobWFwIChwYXJ0aWFsIDxwcm90b2NvbD4gb2JqKSBwcm90b2NvbHMpXVxuICAoPGxpc3Q+XG4gICBwcm90b2NvbHMtbWFya3Vwc1xuICAgbWF4LXByb3RvY29sc1xuICAgezp0YWcgOnByb3RvY29scy1oZWFkZXItdGFnLFxuICAgIDpvcGVuLXN5bWJvbCA6cHJvdG9jb2xzLWxpc3Qtb3Blbi1zeW1ib2wsXG4gICAgOmNsb3NlLXN5bWJvbCA6cHJvdG9jb2xzLWxpc3QtY2xvc2Utc3ltYm9sLFxuICAgIDpzZXBhcmF0b3IgOmhlYWRlci1wcm90b2NvbC1zZXBhcmF0b3IsXG4gICAgOm1vcmUtc3ltYm9sIDxtb3JlLXByb3RvY29scz59KSkpXG4ifSB7OnN5bSA8bWV0YT4sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbbWV0YWRhdGFdKX0sIDpzb3VyY2UgIihkZWZuXG4gPG1ldGE+XG4gW21ldGFkYXRhXVxuIChsZXRcbiAgW2JvZHktZm5cbiAgIChmbiBbXSBbOm1ldGEtYm9keS10YWcgKDxwcmV2aWV3PiBtZXRhZGF0YSldKVxuICAgaGVhZGVyXG4gICBbOm1ldGEtaGVhZGVyLXRhZyBcIm1ldGFcIl1dXG4gIFs6bWV0YS1yZWZlcmVuY2UtdGFnXG4gICAoPHJlZmVyZW5jZS1zdXJyb2dhdGU+IG1ldGFkYXRhIGhlYWRlciBib2R5LWZuKV0pKVxuIn0gezpzeW0gPGluc3RhbmNlPiwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt2YWx1ZV0pfSwgOnNvdXJjZSAiKGRlZm5cbiA8aW5zdGFuY2U+XG4gW3ZhbHVlXVxuIChsZXRcbiAgW2NvbnN0cnVjdG9yLWZuXG4gICAoZ2V0LWNvbnN0cnVjdG9yIHZhbHVlKVxuICAgW19ucyBfbmFtZSBiYXNpc11cbiAgIChtdW5naW5nL3BhcnNlLWNvbnN0cnVjdG9yLWluZm8gY29uc3RydWN0b3ItZm4pXG4gICBjdXN0b20tcHJpbnRpbmc/XG4gICAoaW1wbGVtZW50cz8gSVByaW50V2l0aFdyaXRlciB2YWx1ZSlcbiAgIHR5cGUtbWFya3VwXG4gICAoPHR5cGU+IGNvbnN0cnVjdG9yLWZuIDppbnN0YW5jZS10eXBlLWhlYWRlci10YWcpXG4gICBmaWVsZHNcbiAgIChmZXRjaC1maWVsZHMtdmFsdWVzIHZhbHVlIGJhc2lzKVxuICAgZmllbGRzLW1hcmt1cFxuICAgKDxmaWVsZHM+IGZpZWxkcyAoaWYgY3VzdG9tLXByaW50aW5nPyAwKSlcbiAgIGZpZWxkcy1kZXRhaWxzLW1hcmt1cC1mblxuICAgKGZuKiBbXSAoPGZpZWxkcy1kZXRhaWxzPiBmaWVsZHMgdmFsdWUpKVxuICAgZmllbGRzLXByZXZpZXctbWFya3VwXG4gICBbOmluc3RhbmNlLXZhbHVlLXRhZ1xuICAgICg8cmVmZXJlbmNlLXN1cnJvZ2F0ZT5cbiAgICAgdmFsdWVcbiAgICAgZmllbGRzLW1hcmt1cFxuICAgICBmaWVsZHMtZGV0YWlscy1tYXJrdXAtZm4pXVxuICAgY3VzdG9tLXByaW50aW5nLW1hcmt1cFxuICAgKGlmXG4gICAgY3VzdG9tLXByaW50aW5nP1xuICAgIFs6aW5zdGFuY2UtY3VzdG9tLXByaW50aW5nLXdyYXBwZXItdGFnXG4gICAgIDppbnN0YW5jZS1jdXN0b20tcHJpbnRpbmctYmFja2dyb3VuZFxuICAgICAocHJpbnQtdmlhLXByb3RvY29sIHZhbHVlIDppbnN0YW5jZS1jdXN0b20tcHJpbnRpbmctdGFnKV0pXVxuICBbOmluc3RhbmNlLWhlYWRlci10YWdcbiAgIDppbnN0YW5jZS1oZWFkZXItYmFja2dyb3VuZFxuICAgZmllbGRzLXByZXZpZXctbWFya3VwXG4gICBjdXN0b20tcHJpbnRpbmctbWFya3VwXG4gICB0eXBlLW1hcmt1cF0pKVxuIn0gezpzeW0gPHJlZmVyZW5jZT4sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbJiBhcmdzXSl9LCA6c291cmNlICIoZGVmbiA8cmVmZXJlbmNlPiBbJiBhcmdzXSAoY29uY2F0IFtcInJlZmVyZW5jZVwiXSBhcmdzKSlcbiJ9IHs6c3ltIDxmdW5jdGlvbi1kZXRhaWxzPiwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtmbi1vYmogbnMgX25hbWUgYXJpdGllcyBwcmVmaXhdKX0sIDpzb3VyY2UgIihkZWZuXG4gPGZ1bmN0aW9uLWRldGFpbHM+XG4gW2ZuLW9iaiBucyBfbmFtZSBhcml0aWVzIHByZWZpeF1cbiB7OnByZSBbKGZuPyBmbi1vYmopXX1cbiAobGV0XG4gIFthcml0aWVzXG4gICAobWFwIHdyYXAtYXJpdHkgYXJpdGllcylcbiAgIG1ha2UtYXJpdHktbWFya3VwLWxpc3RcbiAgIChmblxuICAgIFthcml0eV1cbiAgICBbWzpmbi1tdWx0aS1hcml0eS1hcmdzLWluZGVudC10YWcgcHJlZml4XSBbOmZuLWFyZ3MtdGFnIGFyaXR5XV0pXG4gICBhcml0aWVzLW1hcmt1cHRzLWxpc3RzXG4gICAoaWYgKD4gKGNvdW50IGFyaXRpZXMpIDEpIChtYXAgbWFrZS1hcml0eS1tYXJrdXAtbGlzdCBhcml0aWVzKSlcbiAgIG5zLW1hcmt1cHMtbGlzdFxuICAgKGlmLW5vdCAoZW1wdHk/IG5zKSBbOm5zLWljb24gWzpmbi1ucy1uYW1lLXRhZyBuc11dKVxuICAgbmF0aXZlLW1hcmt1cHMtbGlzdFxuICAgWzpuYXRpdmUtaWNvbiAoPG5hdGl2ZS1yZWZlcmVuY2U+IGZuLW9iaildXVxuICAoPGFsaWduZWQtYm9keT5cbiAgIChjb25jYXRcbiAgICBhcml0aWVzLW1hcmt1cHRzLWxpc3RzXG4gICAgW25zLW1hcmt1cHMtbGlzdCBuYXRpdmUtbWFya3Vwcy1saXN0XSkpKSlcbiJ9IHs6c3ltIDxmdW5jdGlvbj4sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZm4tb2JqXSl9LCA6c291cmNlICIoZGVmblxuIDxmdW5jdGlvbj5cbiBbZm4tb2JqXVxuIHs6cHJlIFsoZm4/IGZuLW9iaildfVxuIChsZXRcbiAgW1tucyBuYW1lXVxuICAgKG11bmdpbmcvcGFyc2UtZm4taW5mbyBmbi1vYmopXG4gICBsYW1iZGE/XG4gICAoZW1wdHk/IG5hbWUpXG4gICBzcGFjZXItc3ltYm9sXG4gICAocHJlZiA6c3BhY2VyKVxuICAgcmVzdC1zeW1ib2xcbiAgIChwcmVmIDpyZXN0LXN5bWJvbClcbiAgIG11bHRpLWFyaXR5LXN5bWJvbFxuICAgKHByZWYgOm11bHRpLWFyaXR5LXN5bWJvbClcbiAgIGFyaXRpZXNcbiAgIChtdW5naW5nL2V4dHJhY3QtYXJpdGllc1xuICAgIGZuLW9ialxuICAgIHRydWVcbiAgICBzcGFjZXItc3ltYm9sXG4gICAgbXVsdGktYXJpdHktc3ltYm9sXG4gICAgcmVzdC1zeW1ib2wpXG4gICBhcml0aWVzLW1hcmt1cFxuICAgKDxhcml0aWVzPiBhcml0aWVzKVxuICAgbmFtZS1tYXJrdXBcbiAgIChpZi1ub3QgbGFtYmRhPyBbOmZuLW5hbWUtdGFnIG5hbWVdKVxuICAgaWNvbi1tYXJrdXBcbiAgIChpZiBsYW1iZGE/IDpsYW1iZGEtaWNvbiA6Zm4taWNvbilcbiAgIHByZWZpeC1tYXJrdXBcbiAgIFs6Zm4tcHJlZml4LXRhZyBpY29uLW1hcmt1cCBuYW1lLW1hcmt1cF1cbiAgIHByZXZpZXctbWFya3VwXG4gICBbOmZuLWhlYWRlci10YWcgcHJlZml4LW1hcmt1cCBhcml0aWVzLW1hcmt1cF1cbiAgIGRldGFpbHMtZm5cbiAgIChwYXJ0aWFsIDxmdW5jdGlvbi1kZXRhaWxzPiBmbi1vYmogbnMgbmFtZSBhcml0aWVzIHByZWZpeC1tYXJrdXApXVxuICAoPHJlZmVyZW5jZS1zdXJyb2dhdGU+IGZuLW9iaiBwcmV2aWV3LW1hcmt1cCBkZXRhaWxzLWZuKSkpXG4ifSB7OnN5bSA8YXJpdGllcz4sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbYXJpdGllc10pfSwgOnNvdXJjZSAiKGRlZm5cbiA8YXJpdGllcz5cbiBbYXJpdGllc11cbiAobGV0XG4gIFttdWx0aS1hcml0eT8gKD4gKGNvdW50IGFyaXRpZXMpIDEpXVxuICBbOmZuLWFyZ3MtdGFnXG4gICAod3JhcC1hcml0eVxuICAgIChpZiBtdWx0aS1hcml0eT8gKHByZWYgOm11bHRpLWFyaXR5LXN5bWJvbCkgKGZpcnN0IGFyaXRpZXMpKSldKSlcbiJ9IHs6c3ltIDxoZWFkZXItZXhwYW5kZXI+LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW29iamVjdF0pfSwgOnNvdXJjZSAiKGRlZm5cbiA8aGVhZGVyLWV4cGFuZGVyPlxuIFtvYmplY3RdXG4gKDxyZWZlcmVuY2U+XG4gICg8cmF3LXN1cnJvZ2F0ZT4gb2JqZWN0IDpoZWFkZXItZXhwYW5kZXItc3ltYm9sIDp0YXJnZXQpXG4gIHJlc2V0LWRlcHRoLWxpbWl0cykpXG4ifSB7OnN5bSA8bGlzdC1kZXRhaWxzPiwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtpdGVtcyBfb3B0c10pfSwgOnNvdXJjZSAiKGRlZm4gPGxpc3QtZGV0YWlscz4gW2l0ZW1zIF9vcHRzXSAoPGFsaWduZWQtYm9keT4gKG1hcCBsaXN0IGl0ZW1zKSkpXG4ifSB7OnN5bSA8Y2lyY3VsYXItcmVmZXJlbmNlPiwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFsmIGNoaWxkcmVuXSl9LCA6c291cmNlICIoZGVmblxuIDxjaXJjdWxhci1yZWZlcmVuY2U+XG4gWyYgY2hpbGRyZW5dXG4gKDxyZWZlcmVuY2Utc3Vycm9nYXRlPlxuICBuaWxcbiAgWzpjaXJjdWxhci1yZWZlcmVuY2UtdGFnIDpjaXJjdWxhci1yZWYtaWNvbl1cbiAgKGNvbmNhdCBbOmNpcmN1bGFyLXJlZmVyZW5jZS1ib2R5LXRhZ10gY2hpbGRyZW4pKSlcbiJ9IHs6c3ltIDxzdXJyb2dhdGUtdGFyZ2V0PiwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtzdXJyb2dhdGVdKX0sIDpzb3VyY2UgIihkZWZuXG4gPHN1cnJvZ2F0ZS10YXJnZXQ+XG4gW3N1cnJvZ2F0ZV1cbiAobGV0XG4gIFt0YXJnZXQgKGdldC1zdXJyb2dhdGUtdGFyZ2V0IHN1cnJvZ2F0ZSldXG4gIChpZlxuICAgKHNlcWFibGU/IHRhcmdldClcbiAgIChsZXRcbiAgICBbc3RhcnRpbmctaW5kZXggKGdldC1zdXJyb2dhdGUtc3RhcnQtaW5kZXggc3Vycm9nYXRlKV1cbiAgICAoPGRldGFpbHM+IHRhcmdldCBzdGFydGluZy1pbmRleCkpXG4gICAoPHN0YW5kYXJkLWJvZHktcmVmZXJlbmNlPiB0YXJnZXQpKSkpXG4ifSB7OnN5bSA8ZmllbGRzPiwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtmaWVsZHMgJiBbbWF4LWZpZWxkc11dKX0sIDpzb3VyY2UgIihkZWZuXG4gPGZpZWxkcz5cbiBbZmllbGRzICYgW21heC1maWVsZHNdXVxuIChpZlxuICAoemVybz8gKGNvdW50IGZpZWxkcykpXG4gIFs6ZmllbGRzLWhlYWRlci10YWcgOmZpZWxkcy1oZWFkZXItbm8tZmllbGRzLXN5bWJvbF1cbiAgKGxldFxuICAgW21heC1maWVsZHNcbiAgICAob3IgbWF4LWZpZWxkcyAocHJlZiA6bWF4LWluc3RhbmNlLWhlYWRlci1maWVsZHMpKVxuICAgIG1vcmU/XG4gICAgKD4gKGNvdW50IGZpZWxkcykgbWF4LWZpZWxkcylcbiAgICBmaWVsZHMtbWFya3Vwc1xuICAgIChtYXBcbiAgICAgKGZuIFtbbmFtZSB2YWx1ZV1dICg8ZmllbGQ+IG5hbWUgdmFsdWUpKVxuICAgICAodGFrZSBtYXgtZmllbGRzIGZpZWxkcykpXVxuICAgKGNvbmNhdFxuICAgIFs6ZmllbGRzLWhlYWRlci10YWcgOmZpZWxkcy1oZWFkZXItb3Blbi1zeW1ib2xdXG4gICAgZmllbGRzLW1hcmt1cHNcbiAgICBbKGlmIG1vcmU/IDptb3JlLWZpZWxkcy1zeW1ib2wpIDpmaWVsZHMtaGVhZGVyLWNsb3NlLXN5bWJvbF0pKSkpXG4ifSB7OnN5bSA8bmlsPiwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtdKX0sIDpzb3VyY2UgIihkZWZuIDxuaWw+IFtdIFs6bmlsLXRhZyA6bmlsLWxhYmVsXSlcbiJ9IHs6c3ltIDxib2R5PiwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFttYXJrdXBdKX0sIDpzb3VyY2UgIihkZWZuIDxib2R5PiBbbWFya3VwXSBbOmJvZHktdGFnIG1hcmt1cF0pXG4ifSB7OnN5bSA8bnVtYmVyPiwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtudW1iZXJdKX0sIDpzb3VyY2UgIihkZWZuXG4gPG51bWJlcj5cbiBbbnVtYmVyXVxuIChpZlxuICAoanMvaXNGaW5pdGUgbnVtYmVyKVxuICAoaWYgKGludGVnZXI/IG51bWJlcikgWzppbnRlZ2VyLXRhZyBudW1iZXJdIFs6ZmxvYXQtdGFnIG51bWJlcl0pXG4gIChpZlxuICAgKGpzL2lzTmFOIG51bWJlcilcbiAgIFs6ZmxvYXQtbmFuLXRhZyAocHItc3RyIG51bWJlcildXG4gICBbOmZsb2F0LWluZmluaXR5LXRhZyAocHItc3RyIG51bWJlcildKSkpXG4ifSB7OnN5bSA8cHJvdG9jb2wtZGV0YWlscz4sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbb2JqIG5zIF9uYW1lIHNlbGVjdG9yIF9mYXN0P10pfSwgOnNvdXJjZSAiKGRlZm5cbiA8cHJvdG9jb2wtZGV0YWlscz5cbiBbb2JqIG5zIF9uYW1lIHNlbGVjdG9yIF9mYXN0P11cbiAobGV0XG4gIFtwcm90b2NvbC1vYmpcbiAgIChtdW5naW5nL2dldC1wcm90b2NvbC1vYmplY3Qgc2VsZWN0b3IpXG4gICBucy1tYXJrdXBzLWxpc3RcbiAgIChpZi1ub3QgKGVtcHR5PyBucykgWzpucy1pY29uIFs6cHJvdG9jb2wtbnMtbmFtZS10YWcgbnNdXSlcbiAgIG5hdGl2ZS1tYXJrdXBzLWxpc3RcbiAgIChpZlxuICAgIChzb21lPyBwcm90b2NvbC1vYmopXG4gICAgWzpuYXRpdmUtaWNvbiAoPG5hdGl2ZS1yZWZlcmVuY2U+IHByb3RvY29sLW9iaildKVxuICAgbWV0aG9kc1xuICAgKG11bmdpbmcvY29sbGVjdC1wcm90b2NvbC1tZXRob2RzIG9iaiBzZWxlY3RvcilcbiAgIG1ldGhvZHMtbWFya3Vwc1xuICAgKG1hcCAoZm4gW1tuYW1lIGFyaXRpZXNdXSAoPHByb3RvY29sLW1ldGhvZD4gbmFtZSBhcml0aWVzKSkgbWV0aG9kcylcbiAgIG1ldGhvZHMtbWFya3Vwcy1saXN0c1xuICAgKG1hcCBsaXN0IG1ldGhvZHMtbWFya3VwcyldXG4gICg8YWxpZ25lZC1ib2R5PlxuICAgKGNvbmNhdFxuICAgIG1ldGhvZHMtbWFya3Vwcy1saXN0c1xuICAgIFtucy1tYXJrdXBzLWxpc3QgbmF0aXZlLW1hcmt1cHMtbGlzdF0pKSkpXG4ifSksIHBhcmVuLXNvdXAuY29yZSAoezpzeW0gY2FuLXVuZG8sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZWRpdG9yXSl9LCA6c291cmNlICIoZGVmbiBjYW4tdW5kbyBbZWRpdG9yXSAoY2FuLXVuZG8/IGVkaXRvcikpXG4ifSB7OnN5bSBzaG93LWVycm9yLW1lc3NhZ2UhLCA6bWV0YSB7OmRvYyAiU2hvd3MgYSBwb3B1cCB3aXRoIGFuIGVycm9yIG1lc3NhZ2UuIiwgOmFyZ2xpc3RzIChbcGFyZW50LWVsZW0gZXZlbnRdKX0sIDpzb3VyY2UgIihkZWZuXG4gc2hvdy1lcnJvci1tZXNzYWdlIVxuIFwiU2hvd3MgYSBwb3B1cCB3aXRoIGFuIGVycm9yIG1lc3NhZ2UuXCJcbiBbcGFyZW50LWVsZW0gZXZlbnRdXG4gKGxldFxuICBbZWxlbVxuICAgKC4tdGFyZ2V0IGV2ZW50KVxuICAgeFxuICAgKC4tY2xpZW50WCBldmVudClcbiAgIHlcbiAgICguLWNsaWVudFkgZXZlbnQpXG4gICBwb3B1cFxuICAgKC5jcmVhdGVFbGVtZW50IGpzL2RvY3VtZW50IFwiZGl2XCIpXVxuICAoc2V0ISAoLi10ZXh0Q29udGVudCBwb3B1cCkgKC0+IGVsZW0gLi1kYXRhc2V0IC4tbWVzc2FnZSkpXG4gIChzZXQhICguLXRvcCAoLi1zdHlsZSBwb3B1cCkpIChzdHIgeSBcInB4XCIpKVxuICAoc2V0ISAoLi1sZWZ0ICguLXN0eWxlIHBvcHVwKSkgKHN0ciB4IFwicHhcIikpXG4gIChzZXQhICguLWNsYXNzTmFtZSBwb3B1cCkgXCJlcnJvci10ZXh0XCIpXG4gICguYXBwZW5kQ2hpbGQgcGFyZW50LWVsZW0gcG9wdXApKSlcbiJ9IHs6c3ltIGZvY3VzZWQtdGV4dCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtdKX0sIDpzb3VyY2UgIihkZWZuIGZvY3VzZWQtdGV4dCBbXSAoc29tZS0+IChkb20vZ2V0LWZvY3VzZWQtZm9ybSkgLi10ZXh0Q29udGVudCkpXG4ifSB7OnN5bSBzZWxlY3RlZC10ZXh0LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW10pfSwgOnNvdXJjZSAiKGRlZm5cbiBzZWxlY3RlZC10ZXh0XG4gW11cbiAobGV0XG4gIFtzICgtPiBqcy93aW5kb3cgLmdldFNlbGVjdGlvbiAudG9TdHJpbmcpXVxuICAod2hlbi1ub3QgKGVtcHR5PyBzKSBzKSkpXG4ifSB7OnN5bSBjYW4tcmVkbz8sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbdGhpc10pfSwgOnByb3RvY29sIEVkaXRvcn0gezpzeW0gY2FuLXJlZG8sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZWRpdG9yXSl9LCA6c291cmNlICIoZGVmbiBjYW4tcmVkbyBbZWRpdG9yXSAoY2FuLXJlZG8/IGVkaXRvcikpXG4ifSB7OnN5bSByYWluYm93LWRlbGltaXRlcnMsIDptZXRhIHs6ZG9jICJSZXR1cm5zIGEgbWFwIG9mIGVsZW1lbnRzIGFuZCBjbGFzcyBuYW1lcy4iLCA6YXJnbGlzdHMgW1twYXJlbnQgbGV2ZWxdIFtwYXJlbnQgbGV2ZWwgbV1dfSwgOnNvdXJjZSAiKGRlZm5cbiByYWluYm93LWRlbGltaXRlcnNcbiBcIlJldHVybnMgYSBtYXAgb2YgZWxlbWVudHMgYW5kIGNsYXNzIG5hbWVzLlwiXG4gKFtwYXJlbnQgbGV2ZWxdXG4gIChwZXJzaXN0ZW50ISAocmFpbmJvdy1kZWxpbWl0ZXJzIHBhcmVudCBsZXZlbCAodHJhbnNpZW50IHt9KSkpKVxuIChbcGFyZW50IGxldmVsIG1dXG4gIChyZWR1Y2VcbiAgIChmblxuICAgIFttIGVsZW1dXG4gICAgKGxldFxuICAgICBbY2xhc3NlcyAoLi1jbGFzc0xpc3QgZWxlbSldXG4gICAgIChjb25kXG4gICAgICAoLmNvbnRhaW5zIGNsYXNzZXMgXCJkZWxpbWl0ZXJcIilcbiAgICAgIChhc3NvYyEgbSBlbGVtIChzdHIgXCJyYWluYm93LVwiIChtb2QgbGV2ZWwgcmFpbmJvdy1jb3VudCkpKVxuICAgICAgKC5jb250YWlucyBjbGFzc2VzIFwiY29sbGVjdGlvblwiKVxuICAgICAgKHJhaW5ib3ctZGVsaW1pdGVycyBlbGVtIChpbmMgbGV2ZWwpIG0pXG4gICAgICA6ZWxzZVxuICAgICAgbSkpKVxuICAgbVxuICAgKC0+IHBhcmVudCAuLWNoaWxkcmVuIGFycmF5LXNlcSkpKSlcbiJ9IHs6c3ltIHVwISwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt0aGlzIGFsdD9dKX0sIDpwcm90b2NvbCBFZGl0b3J9IHs6c3ltIHJlZnJlc2ghLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3RoaXMgc3RhdGVdKX0sIDpwcm90b2NvbCBFZGl0b3J9IHs6c3ltIHVuZG8hLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3RoaXNdKX0sIDpwcm90b2NvbCBFZGl0b3J9IHs6c3ltIHJlZnJlc2gtY3Vyc29yLXBvc2l0aW9uISwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtjb250ZW50IHs6a2V5cyBbY3JvcHBlZC1zdGF0ZV0sIDphcyBzdGF0ZX1dKX0sIDpzb3VyY2UgIihkZWZuXG4gcmVmcmVzaC1jdXJzb3ItcG9zaXRpb24hXG4gW2NvbnRlbnQgezprZXlzIFtjcm9wcGVkLXN0YXRlXSwgOmFzIHN0YXRlfV1cbiAoaWZcbiAgKHNvbWUtPj4gY3JvcHBlZC1zdGF0ZSA6ZWxlbWVudCAoLmNvbnRhaW5zIGNvbnRlbnQpKVxuICAoc29tZS0+XG4gICBjcm9wcGVkLXN0YXRlXG4gICA6ZWxlbWVudFxuICAgKGRvbS9zZXQtY3Vyc29yLXBvc2l0aW9uISAoOmN1cnNvci1wb3NpdGlvbiBjcm9wcGVkLXN0YXRlKSkpXG4gIChpZlxuICAgKGFuZCAoOnNlbGVjdGlvbi1jaGFuZ2U/IHN0YXRlKSAoOm9yaWdpbmFsLWN1cnNvci1wb3NpdGlvbiBzdGF0ZSkpXG4gICAoZG9tL3NldC1jdXJzb3ItcG9zaXRpb24hIGNvbnRlbnQgKDpvcmlnaW5hbC1jdXJzb3ItcG9zaXRpb24gc3RhdGUpKVxuICAgKGRvbS9zZXQtY3Vyc29yLXBvc2l0aW9uISBjb250ZW50ICg6Y3Vyc29yLXBvc2l0aW9uIHN0YXRlKSkpKSlcbiJ9IHs6c3ltIGtleS1uYW1lPywgOm1ldGEgezpkb2MgIlJldHVybnMgdHJ1ZSBpZiB0aGUgc3VwcGxpZWQga2V5IGV2ZW50IGludm9sdmVzIHRoZSBrZXkocykgZGVzY3JpYmVkIGJ5IGtleS1uYW1lLiIsIDphcmdsaXN0cyAoW2V2ZW50IGtleS1uYW1lXSl9LCA6c291cmNlICIoZGVmblxuIGtleS1uYW1lP1xuIFwiUmV0dXJucyB0cnVlIGlmIHRoZSBzdXBwbGllZCBrZXkgZXZlbnQgaW52b2x2ZXMgdGhlIGtleShzKSBkZXNjcmliZWQgYnkga2V5LW5hbWUuXCJcbiBbZXZlbnQga2V5LW5hbWVdXG4gKGxldFxuICBbY29kZSAoa2V5LWNvZGUgZXZlbnQpXVxuICAoY2FzZVxuICAga2V5LW5hbWVcbiAgIDp1bmRvLW9yLXJlZG9cbiAgIChhbmQgKG9yICguLW1ldGFLZXkgZXZlbnQpICguLWN0cmxLZXkgZXZlbnQpKSAoPSBjb2RlIDkwKSlcbiAgIDp0YWJcbiAgICg9IGNvZGUgOSlcbiAgIDplbnRlclxuICAgKD0gY29kZSAxMylcbiAgIDphcnJvd3NcbiAgIChjb250YWlucz8gI3szOSA0MCAzOCAzN30gY29kZSlcbiAgIDp1cC1hcnJvd1xuICAgKD0gY29kZSAzOClcbiAgIDpkb3duLWFycm93XG4gICAoPSBjb2RlIDQwKVxuICAgOmdlbmVyYWxcbiAgIChub3RcbiAgICAob3JcbiAgICAgKGNvbnRhaW5zPyAjezAgOTEgOTMgMTcgMTYgMTh9IGNvZGUpXG4gICAgICguLWN0cmxLZXkgZXZlbnQpXG4gICAgICguLW1ldGFLZXkgZXZlbnQpKSlcbiAgIGZhbHNlKSkpXG4ifSB7OnN5bSBldmFsLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2VkaXRvciBmb3JtIGNhbGxiYWNrXSl9LCA6c291cmNlICIoZGVmbiBldmFsIFtlZGl0b3IgZm9ybSBjYWxsYmFja10gKGV2YWwhIGVkaXRvciBmb3JtIGNhbGxiYWNrKSlcbiJ9IHs6c3ltIGNoYW5uZWw/LCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZlxuIGNoYW5uZWw/XG4gKGZuKlxuICBbcDFfXzQyNzczI11cbiAgKGluc3RhbmNlP1xuICAgY2xqcy5jb3JlLmFzeW5jLmltcGwuY2hhbm5lbHMuTWFueVRvTWFueUNoYW5uZWxcbiAgIHAxX180Mjc3MyMpKSlcbiJ9IHs6c3ltIGNyZWF0ZS1lZGl0b3IsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbcHMgY29udGVudCBldmVudHMtY2hhbiB7OmtleXMgW2hpc3RvcnktbGltaXQgYXBwZW5kLWxpbWl0IGNvbXBpbGVyLWZuIGNvbnNvbGUtY2FsbGJhY2sgZGlzYWJsZS1jbGo/IGVkaXQtaGlzdG9yeSBmb2N1cz8gZml4LWluZGVudC1vbi1pbml0P10sIDpvciB7aGlzdG9yeS1saW1pdCAxMDAsIGFwcGVuZC1saW1pdCA1MDAwLCBmb2N1cz8gZmFsc2V9LCA6YXMgb3B0c31dKX0sIDpzb3VyY2UgIihkZWZuXG4gY3JlYXRlLWVkaXRvclxuIFtwc1xuICBjb250ZW50XG4gIGV2ZW50cy1jaGFuXG4gIHs6a2V5c1xuICAgW2hpc3RvcnktbGltaXRcbiAgICBhcHBlbmQtbGltaXRcbiAgICBjb21waWxlci1mblxuICAgIGNvbnNvbGUtY2FsbGJhY2tcbiAgICBkaXNhYmxlLWNsaj9cbiAgICBlZGl0LWhpc3RvcnlcbiAgICBmb2N1cz9cbiAgICBmaXgtaW5kZW50LW9uLWluaXQ/XSxcbiAgIDpvciB7aGlzdG9yeS1saW1pdCAxMDAsIGFwcGVuZC1saW1pdCA1MDAwLCBmb2N1cz8gZmFsc2V9LFxuICAgOmFzIG9wdHN9XVxuIChsZXRcbiAgW2Nsaj9cbiAgIChub3QgZGlzYWJsZS1jbGo/KVxuICAgZWRpdG9yP1xuICAgKG5vdCBjb25zb2xlLWNhbGxiYWNrKVxuICAgY29tcGlsZXItZm5cbiAgIChvciBjb21waWxlci1mbiAoaXIvY3JlYXRlLWNvbXBpbGVyLWZuIG9wdHMpKVxuICAgKmVkaXQtaGlzdG9yeVxuICAgKGRvdG9cbiAgICAob3IgZWRpdC1oaXN0b3J5IChtd20vY3JlYXRlLWVkaXQtaGlzdG9yeSkpXG4gICAgKHN3YXAhIGFzc29jIDpsaW1pdCBoaXN0b3J5LWxpbWl0KSlcbiAgIHJlZnJlc2gtaW5zdGFyZXBsLXdpdGgtZGVsYXkhXG4gICAoZGVib3VuY2UgcmVmcmVzaC1pbnN0YXJlcGwhIDMwMClcbiAgICpjb25zb2xlLWhpc3RvcnlcbiAgIChjb25zb2xlL2NyZWF0ZS1jb25zb2xlLWhpc3RvcnkpXG4gICAqbGFzdC1oaWdobGlnaHQtZWxlbVxuICAgKGF0b20gbmlsKVxuICAgKmFsbG93LXRhYj9cbiAgIChhdG9tIGZhbHNlKVxuICAgKmZpcnN0LXJlZnJlc2g/XG4gICAoYXRvbSB0cnVlKV1cbiAgKHdoZW4tbm90XG4gICBlZGl0b3I/XG4gICAoc2V0LXZhbGlkYXRvciFcbiAgICAqZWRpdC1oaXN0b3J5XG4gICAgKGZuXG4gICAgIFt7OmtleXMgW2N1cnJlbnQtc3RhdGUgc3RhdGVzXX1dXG4gICAgIChpZi1sZXRcbiAgICAgIFtzdGF0ZSAoZ2V0IHN0YXRlcyBjdXJyZW50LXN0YXRlKV1cbiAgICAgICgtPlxuICAgICAgIHN0YXRlXG4gICAgICAgOmN1cnNvci1wb3NpdGlvblxuICAgICAgIGZpcnN0XG4gICAgICAgKD49IChjb25zb2xlL2dldC1jb25zb2xlLXN0YXJ0ICpjb25zb2xlLWhpc3RvcnkpKSlcbiAgICAgIHRydWUpKSkpXG4gIChyZWlmeVxuICAgRWRpdG9yXG4gICAodW5kbyFcbiAgICBbdGhpc11cbiAgICAoc29tZS0+PiAqZWRpdC1oaXN0b3J5IG13bS91bmRvISAocmVmcmVzaCEgdGhpcykpXG4gICAgKGRvbS9zY3JvbGwtdG8tbmVhcmVzdC1lbGVtKSlcbiAgIChyZWRvIVxuICAgIFt0aGlzXVxuICAgIChzb21lLT4+ICplZGl0LWhpc3RvcnkgbXdtL3JlZG8hIChyZWZyZXNoISB0aGlzKSlcbiAgICAoZG9tL3Njcm9sbC10by1uZWFyZXN0LWVsZW0pKVxuICAgKGNhbi11bmRvPyBbdGhpc10gKG13bS9jYW4tdW5kbz8gKmVkaXQtaGlzdG9yeSkpXG4gICAoY2FuLXJlZG8/IFt0aGlzXSAobXdtL2Nhbi1yZWRvPyAqZWRpdC1oaXN0b3J5KSlcbiAgICh1cGRhdGUtY3Vyc29yLXBvc2l0aW9uIVxuICAgIFt0aGlzIHBvc2l0aW9uXVxuICAgICh0cnlcbiAgICAgKG13bS91cGRhdGUtY3Vyc29yLXBvc2l0aW9uISAqZWRpdC1oaXN0b3J5IHBvc2l0aW9uKVxuICAgICAoY2F0Y2hcbiAgICAgIGpzL0Vycm9yXG4gICAgICBfXG4gICAgICAod2hlblxuICAgICAgIChhcHBseSA9IHBvc2l0aW9uKVxuICAgICAgIChsZXRcbiAgICAgICAgW3N0YXJ0IChjb25zb2xlL2dldC1jb25zb2xlLXN0YXJ0ICpjb25zb2xlLWhpc3RvcnkpXVxuICAgICAgICAoZG9tL3NldC1jdXJzb3ItcG9zaXRpb24hIGNvbnRlbnQgW3N0YXJ0IHN0YXJ0XSlcbiAgICAgICAgKG13bS91cGRhdGUtY3Vyc29yLXBvc2l0aW9uISAqZWRpdC1oaXN0b3J5IFtzdGFydCBzdGFydF0pKSkpKVxuICAgICh1cGRhdGUtaGlnaGxpZ2h0ISBjb250ZW50ICpsYXN0LWhpZ2hsaWdodC1lbGVtKSlcbiAgIChyZXNldC1lZGl0LWhpc3RvcnkhXG4gICAgW3RoaXMgc3RhcnRdXG4gICAgKGNvbnNvbGUvdXBkYXRlLWNvbnNvbGUtc3RhcnQhICpjb25zb2xlLWhpc3Rvcnkgc3RhcnQpXG4gICAgKGRvbS9zZXQtY3Vyc29yLXBvc2l0aW9uISBjb250ZW50IFtzdGFydCBzdGFydF0pXG4gICAgKGxldFxuICAgICBbKm5ldy1lZGl0LWhpc3RvcnlcbiAgICAgIChtd20vY3JlYXRlLWVkaXQtaGlzdG9yeSlcbiAgICAgIHN0YXRlXG4gICAgICB7OmN1cnNvci1wb3NpdGlvbiBbc3RhcnQgc3RhcnRdLCA6dGV4dCAoLi10ZXh0Q29udGVudCBjb250ZW50KX1dXG4gICAgICh1cGRhdGUtZWRpdC1oaXN0b3J5ISAqbmV3LWVkaXQtaGlzdG9yeSBzdGF0ZSlcbiAgICAgKHJlc2V0ISAqZWRpdC1oaXN0b3J5IEAqbmV3LWVkaXQtaGlzdG9yeSkpKVxuICAgKGFwcGVuZC10ZXh0IVxuICAgIFt0aGlzIHRleHRdXG4gICAgKGxldFxuICAgICBbbm9kZVxuICAgICAgKC5jcmVhdGVUZXh0Tm9kZSBqcy9kb2N1bWVudCB0ZXh0KVxuICAgICAgX1xuICAgICAgKC5hcHBlbmRDaGlsZCBjb250ZW50IG5vZGUpXG4gICAgICBhbGwtdGV4dFxuICAgICAgKC4tdGV4dENvbnRlbnQgY29udGVudClcbiAgICAgIGNoYXItY291bnRcbiAgICAgIChtYXggMCAoLSAoY291bnQgYWxsLXRleHQpIGFwcGVuZC1saW1pdCkpXG4gICAgICBuZXctYWxsLXRleHRcbiAgICAgIChzdWJzIGFsbC10ZXh0IGNoYXItY291bnQpXG4gICAgICBjaGFyLWNvdW50XG4gICAgICAoaWZcbiAgICAgICAoLmVuZHNXaXRoIG5ldy1hbGwtdGV4dCBcIlxcblwiKVxuICAgICAgIChkZWMgKGNvdW50IG5ldy1hbGwtdGV4dCkpXG4gICAgICAgKGNvdW50IG5ldy1hbGwtdGV4dCkpXVxuICAgICAod2hlblxuICAgICAgKG5vdD0gYWxsLXRleHQgbmV3LWFsbC10ZXh0KVxuICAgICAgKHNldCEgKC4tdGV4dENvbnRlbnQgY29udGVudCkgbmV3LWFsbC10ZXh0KSlcbiAgICAgKHJlc2V0LWVkaXQtaGlzdG9yeSEgdGhpcyBjaGFyLWNvdW50KSkpXG4gICAoZW50ZXIhXG4gICAgW3RoaXNdXG4gICAgKGlmXG4gICAgIGVkaXRvcj9cbiAgICAgKC5leGVjQ29tbWFuZCBqcy9kb2N1bWVudCBcImluc2VydEhUTUxcIiBmYWxzZSBcIlxcblwiKVxuICAgICAobGV0XG4gICAgICBbdGV4dFxuICAgICAgICh0cmltciAoLi10ZXh0Q29udGVudCBjb250ZW50KSlcbiAgICAgICBwb3N0LXRleHRcbiAgICAgICAoc3VicyB0ZXh0IChjb25zb2xlL2dldC1jb25zb2xlLXN0YXJ0ICpjb25zb2xlLWhpc3RvcnkpKV1cbiAgICAgIChyZXNldC1lZGl0LWhpc3RvcnkhIHRoaXMgKGNvdW50IHRleHQpKVxuICAgICAgKGNvbnNvbGUvdXBkYXRlLWNvbnNvbGUtaGlzdG9yeSEgKmNvbnNvbGUtaGlzdG9yeSBwb3N0LXRleHQpXG4gICAgICAoY29uc29sZS1jYWxsYmFjayBwb3N0LXRleHQpKSkpXG4gICAodXAhXG4gICAgW3RoaXMgYWx0P11cbiAgICAoaWZcbiAgICAgYWx0P1xuICAgICAod2hlbi1sZXRcbiAgICAgIFtlbGVtIChkb20vZ2V0LWZvY3VzZWQtZm9ybSldXG4gICAgICAod2hlbi1sZXRcbiAgICAgICBbc3RhdGUgKG13bS9nZXQtY3VycmVudC1zdGF0ZSAqZWRpdC1oaXN0b3J5KV1cbiAgICAgICAod2hlbi1sZXRcbiAgICAgICAgW2VsZW1cbiAgICAgICAgIChpZlxuICAgICAgICAgIChhbmRcbiAgICAgICAgICAgKDpzZWxlY3Rpb24tY2hhbmdlPyBzdGF0ZSlcbiAgICAgICAgICAgKD0gZWxlbSAoc29tZS0+IHN0YXRlIDpjcm9wcGVkLXN0YXRlIDplbGVtZW50KSkpXG4gICAgICAgICAgKGRvbS9nZXQtcGFyZW50IGVsZW0gXCJjb2xsZWN0aW9uXCIpXG4gICAgICAgICAgZWxlbSldXG4gICAgICAgIChsZXRcbiAgICAgICAgIFt0ZXh0ICguLXRleHRDb250ZW50IGVsZW0pIHBvcyBbMCAoY291bnQgdGV4dCldXVxuICAgICAgICAgKGRvbS9zZXQtY3Vyc29yLXBvc2l0aW9uISBlbGVtIHBvcylcbiAgICAgICAgICh1cGRhdGUtZWRpdC1oaXN0b3J5IVxuICAgICAgICAgICplZGl0LWhpc3RvcnlcbiAgICAgICAgICAoYXNzb2NcbiAgICAgICAgICAgc3RhdGVcbiAgICAgICAgICAgOnNlbGVjdGlvbi1jaGFuZ2U/XG4gICAgICAgICAgIHRydWVcbiAgICAgICAgICAgOmNyb3BwZWQtc3RhdGVcbiAgICAgICAgICAgezpjdXJzb3ItcG9zaXRpb24gcG9zLCA6dGV4dCB0ZXh0LCA6ZWxlbWVudCBlbGVtfSkpXG4gICAgICAgICAodXBkYXRlLWhpZ2hsaWdodCEgY29udGVudCAqbGFzdC1oaWdobGlnaHQtZWxlbSkpKSkpXG4gICAgICh3aGVuLW5vdFxuICAgICAgZWRpdG9yP1xuICAgICAgKGxldFxuICAgICAgIFt0ZXh0XG4gICAgICAgICguLXRleHRDb250ZW50IGNvbnRlbnQpXG4gICAgICAgIHN0YXJ0XG4gICAgICAgIChjb25zb2xlL2dldC1jb25zb2xlLXN0YXJ0ICpjb25zb2xlLWhpc3RvcnkpXG4gICAgICAgIHByZS10ZXh0XG4gICAgICAgIChzdWJzIHRleHQgMCAoY29uc29sZS9nZXQtY29uc29sZS1zdGFydCAqY29uc29sZS1oaXN0b3J5KSlcbiAgICAgICAgbGluZVxuICAgICAgICAob3IgKGNvbnNvbGUvdXAhICpjb25zb2xlLWhpc3RvcnkpIFwiXCIpXG4gICAgICAgIHN0YXRlXG4gICAgICAgIHs6Y3Vyc29yLXBvc2l0aW9uIFtzdGFydCBzdGFydF0sXG4gICAgICAgICA6dGV4dCAoc3RyIHByZS10ZXh0IGxpbmUgXFxuZXdsaW5lKX1dXG4gICAgICAgKC0+PlxuICAgICAgICBzdGF0ZVxuICAgICAgICAodXBkYXRlLWVkaXQtaGlzdG9yeSEgKmVkaXQtaGlzdG9yeSlcbiAgICAgICAgKHJlZnJlc2ghIHRoaXMpKSkpKSlcbiAgIChkb3duIVxuICAgIFt0aGlzIGFsdD9dXG4gICAgKGlmXG4gICAgIGFsdD9cbiAgICAgKHdoZW5cbiAgICAgICg6c2VsZWN0aW9uLWNoYW5nZT8gKG13bS9nZXQtY3VycmVudC1zdGF0ZSAqZWRpdC1oaXN0b3J5KSlcbiAgICAgICh1bmRvISB0aGlzKSlcbiAgICAgKHdoZW4tbm90XG4gICAgICBlZGl0b3I/XG4gICAgICAobGV0XG4gICAgICAgW3RleHRcbiAgICAgICAgKC4tdGV4dENvbnRlbnQgY29udGVudClcbiAgICAgICAgc3RhcnRcbiAgICAgICAgKGNvbnNvbGUvZ2V0LWNvbnNvbGUtc3RhcnQgKmNvbnNvbGUtaGlzdG9yeSlcbiAgICAgICAgcHJlLXRleHRcbiAgICAgICAgKHN1YnMgdGV4dCAwIHN0YXJ0KVxuICAgICAgICBsaW5lXG4gICAgICAgIChvciAoY29uc29sZS9kb3duISAqY29uc29sZS1oaXN0b3J5KSBcIlwiKVxuICAgICAgICBzdGF0ZVxuICAgICAgICB7OmN1cnNvci1wb3NpdGlvbiBbc3RhcnQgc3RhcnRdLFxuICAgICAgICAgOnRleHQgKHN0ciBwcmUtdGV4dCBsaW5lIFxcbmV3bGluZSl9XVxuICAgICAgICgtPj5cbiAgICAgICAgc3RhdGVcbiAgICAgICAgKHVwZGF0ZS1lZGl0LWhpc3RvcnkhICplZGl0LWhpc3RvcnkpXG4gICAgICAgIChyZWZyZXNoISB0aGlzKSkpKSkpXG4gICAodGFiISBbdGhpc10gKHdoZW4gZWRpdG9yPyAocmVzZXQhICphbGxvdy10YWI/IHRydWUpKSlcbiAgIChyZWZyZXNoIVxuICAgIFt0aGlzIHN0YXRlXVxuICAgIChsZXRcbiAgICAgW3N0YXRlXG4gICAgICAoY29uZFxuICAgICAgICg6c2VsZWN0aW9uLWNoYW5nZT8gc3RhdGUpXG4gICAgICAgc3RhdGVcbiAgICAgICBlZGl0b3I/XG4gICAgICAgKHJlZnJlc2gtY29udGVudCEgY29udGVudCBzdGF0ZSBjbGo/KVxuICAgICAgIDplbHNlXG4gICAgICAgKHJlZnJlc2gtY29uc29sZS1jb250ZW50IVxuICAgICAgICBjb250ZW50XG4gICAgICAgIHN0YXRlXG4gICAgICAgIChjb25zb2xlL2dldC1jb25zb2xlLXN0YXJ0ICpjb25zb2xlLWhpc3RvcnkpXG4gICAgICAgIGNsaj8pKV1cbiAgICAgKHdoZW5cbiAgICAgIChvciBmb2N1cz8gKG5vdCBAKmZpcnN0LXJlZnJlc2g/KSlcbiAgICAgIChyZWZyZXNoLWN1cnNvci1wb3NpdGlvbiEgY29udGVudCBzdGF0ZSkpXG4gICAgICh3aGVuIGNsaj8gKHJlZnJlc2gtZXJyb3JzLWFuZC1kZWxpbWl0ZXJzISBjb250ZW50IGV2ZW50cy1jaGFuKSlcbiAgICAgKHdoZW5cbiAgICAgIGVkaXRvcj9cbiAgICAgIChzb21lLT5cbiAgICAgICAoLnF1ZXJ5U2VsZWN0b3IgcHMgXCIubnVtYmVyc1wiKVxuICAgICAgIChyZWZyZXNoLW51bWJlcnMhIChjb3VudCAocmUtc2VxICNcIlxcblwiICg6dGV4dCBzdGF0ZSkpKSkpXG4gICAgICAod2hlblxuICAgICAgIGNsaj9cbiAgICAgICAod2hlbi1sZXRcbiAgICAgICAgW2VsZW0gKC5xdWVyeVNlbGVjdG9yIHBzIFwiLmluc3RhcmVwbFwiKV1cbiAgICAgICAgKHdoZW4tbm90XG4gICAgICAgICAoLT4gZWxlbSAuLXN0eWxlIC4tZGlzcGxheSAoPSBcIm5vbmVcIikpXG4gICAgICAgICAocmVmcmVzaC1pbnN0YXJlcGwtd2l0aC1kZWxheSFcbiAgICAgICAgICBlbGVtXG4gICAgICAgICAgY29udGVudFxuICAgICAgICAgIGNvbXBpbGVyLWZuXG4gICAgICAgICAgYXBwZW5kLWxpbWl0KSkpKSlcbiAgICAgKHVwZGF0ZS1oaWdobGlnaHQhIGNvbnRlbnQgKmxhc3QtaGlnaGxpZ2h0LWVsZW0pKSlcbiAgIChlZGl0LWFuZC1yZWZyZXNoIVxuICAgIFt0aGlzIHN0YXRlXVxuICAgIChhcy0+XG4gICAgIHN0YXRlXG4gICAgICRcbiAgICAgKGFkZC1uZXdsaW5lICQpXG4gICAgIChpZlxuICAgICAgY2xqP1xuICAgICAgKGFkZC1wYXJpbmZlclxuICAgICAgICRcbiAgICAgICAoY29uc29sZS9nZXQtY29uc29sZS1zdGFydCAqY29uc29sZS1oaXN0b3J5KVxuICAgICAgIChpZiBmaXgtaW5kZW50LW9uLWluaXQ/IEAqZmlyc3QtcmVmcmVzaD8gZmFsc2UpKVxuICAgICAgJClcbiAgICAgKHVwZGF0ZS1lZGl0LWhpc3RvcnkhICplZGl0LWhpc3RvcnkgJClcbiAgICAgKHJlZnJlc2ghIHRoaXMgJCkpKVxuICAgKGluaXRpYWxpemUhXG4gICAgW3RoaXNdXG4gICAgKHdoZW5cbiAgICAgZWRpdG9yP1xuICAgICAoLT4+IChpbml0LXN0YXRlIGNvbnRlbnQgZmFsc2UgZmFsc2UpIChlZGl0LWFuZC1yZWZyZXNoISB0aGlzKSkpXG4gICAgKHJlc2V0ISAqZmlyc3QtcmVmcmVzaD8gZmFsc2UpKVxuICAgKHJlZnJlc2gtYWZ0ZXIta2V5LWV2ZW50IVxuICAgIFt0aGlzIGV2ZW50XVxuICAgIChsZXRcbiAgICAgW3RhYj9cbiAgICAgIChrZXktbmFtZT8gZXZlbnQgOnRhYilcbiAgICAgIHN0YXRlXG4gICAgICAoaW5pdC1zdGF0ZSBjb250ZW50IGVkaXRvcj8gdGFiPyldXG4gICAgICh3aGVuLW5vdFxuICAgICAgKGFuZCB0YWI/IChub3QgQCphbGxvdy10YWI/KSlcbiAgICAgIChlZGl0LWFuZC1yZWZyZXNoIVxuICAgICAgIHRoaXNcbiAgICAgICAoY2FzZVxuICAgICAgICAoa2V5LWNvZGUgZXZlbnQpXG4gICAgICAgIDEzXG4gICAgICAgIChhc3NvYyBzdGF0ZSA6aW5kZW50LXR5cGUgOnJldHVybilcbiAgICAgICAgOVxuICAgICAgICAoYXNzb2NcbiAgICAgICAgIHN0YXRlXG4gICAgICAgICA6aW5kZW50LXR5cGVcbiAgICAgICAgIChpZiAoLi1zaGlmdEtleSBldmVudCkgOmJhY2sgOmZvcndhcmQpKVxuICAgICAgICAoYXNzb2Mgc3RhdGUgOmluZGVudC10eXBlIDpub3JtYWwpKSkpXG4gICAgICh3aGVuIHRhYj8gKHJlc2V0ISAqYWxsb3ctdGFiPyBmYWxzZSkpKSlcbiAgIChyZWZyZXNoLWFmdGVyLWN1dC1wYXN0ZSFcbiAgICBbdGhpc11cbiAgICAoZWRpdC1hbmQtcmVmcmVzaCFcbiAgICAgdGhpc1xuICAgICAoYXNzb2MgKGluaXQtc3RhdGUgY29udGVudCBmYWxzZSBmYWxzZSkgOmluZGVudC10eXBlIDpub3JtYWwpKSlcbiAgIChldmFsIVxuICAgIFt0aGlzIGZvcm0gY2FsbGJhY2tdXG4gICAgKGNvbXBpbGVyLWZuXG4gICAgIFtmb3JtXVxuICAgICAoZm4qIFtwMV9fNDI3ODIjXSAoY2FsbGJhY2sgKGZpcnN0IHAxX180Mjc4MiMpKSkpKSkpKVxuIn0gezpzeW0ga2V5LWNvZGUsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZXZlbnRdKX0sIDpzb3VyY2UgIihkZWZuXG4ga2V5LWNvZGVcbiBbZXZlbnRdXG4gKGxldCBbY29kZSAoLi1rZXlDb2RlIGV2ZW50KV0gKGlmIChwb3M/IGNvZGUpIGNvZGUgKC4td2hpY2ggZXZlbnQpKSkpXG4ifSB7OnN5bSByZWRvISwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt0aGlzXSl9LCA6cHJvdG9jb2wgRWRpdG9yfSB7OnN5bSB0YWIhLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3RoaXNdKX0sIDpwcm90b2NvbCBFZGl0b3J9IHs6c3ltIHRyYW5zaWVudC1tYXA/LCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZlxuIHRyYW5zaWVudC1tYXA/XG4gKGZuKlxuICBbcDFfXzQyNzc0I11cbiAgKG9yXG4gICAoaW5zdGFuY2U/IGNsanMuY29yZS9UcmFuc2llbnRBcnJheU1hcCBwMV9fNDI3NzQjKVxuICAgKGluc3RhbmNlPyBjbGpzLmNvcmUvVHJhbnNpZW50SGFzaE1hcCBwMV9fNDI3NzQjKSkpKVxuIn0gezpzeW0gcmVmcmVzaC1jb250ZW50LWVsZW1lbnQhLCA6bWV0YSB7OmRvYyAiUmVwbGFjZXMgYSBzaW5nbGUgbm9kZSBpbiB0aGUgY29udGVudCwgYW5kIHNpYmxpbmdzIGlmIG5lY2Vzc2FyeS4iLCA6YXJnbGlzdHMgKFt7OmtleXMgW2VsZW1lbnQgdGV4dF0sIDphcyBjcm9wcGVkLXN0YXRlfV0pfSwgOnNvdXJjZSAiKGRlZm5cbiByZWZyZXNoLWNvbnRlbnQtZWxlbWVudCFcbiBcIlJlcGxhY2VzIGEgc2luZ2xlIG5vZGUgaW4gdGhlIGNvbnRlbnQsIGFuZCBzaWJsaW5ncyBpZiBuZWNlc3NhcnkuXCJcbiBbezprZXlzIFtlbGVtZW50IHRleHRdLCA6YXMgY3JvcHBlZC1zdGF0ZX1dXG4gKGxldFxuICBbcGFyZW50XG4gICAoLi1wYXJlbnRFbGVtZW50IGVsZW1lbnQpXG4gICBsYXN0LWVsZW1cbiAgICguLWxhc3RDaGlsZCBwYXJlbnQpXG4gICBsYXN0LWVycm9yXG4gICAobG9vcFxuICAgIFtjdXJyZW50LWVsZW0gbGFzdC1lbGVtXVxuICAgIChjb25kXG4gICAgIChkb20vZXJyb3Itbm9kZT8gY3VycmVudC1lbGVtKVxuICAgICBjdXJyZW50LWVsZW1cbiAgICAgKG9yIChuaWw/IGN1cnJlbnQtZWxlbSkgKD0gZWxlbWVudCBjdXJyZW50LWVsZW0pKVxuICAgICBuaWxcbiAgICAgOmVsc2VcbiAgICAgKHJlY3VyICguLXByZXZpb3VzU2libGluZyBjdXJyZW50LWVsZW0pKSkpXG4gICBsYXN0LWVsZW0tdG8tcmVmcmVzaFxuICAgKHdoZW5cbiAgICBsYXN0LWVycm9yXG4gICAgKGxvb3BcbiAgICAgW2N1cnJlbnQtZWxlbSBsYXN0LWVycm9yXVxuICAgICAoaWYtbGV0XG4gICAgICBbc2libGluZyAoLi1uZXh0U2libGluZyBjdXJyZW50LWVsZW0pXVxuICAgICAgKGlmIChkb20vY29sbC1ub2RlPyBzaWJsaW5nKSBjdXJyZW50LWVsZW0gKHJlY3VyIHNpYmxpbmcpKVxuICAgICAgY3VycmVudC1lbGVtKSkpXG4gICBvbGQtZWxlbXNcbiAgIChsb29wXG4gICAgW2VsZW1zIFtlbGVtZW50XSBjdXJyZW50LWVsZW0gZWxlbWVudF1cbiAgICAoY29uZFxuICAgICAoPSBsYXN0LWVsZW0tdG8tcmVmcmVzaCBjdXJyZW50LWVsZW0pXG4gICAgIGVsZW1zXG4gICAgIChvciAoc29tZT8gbGFzdC1lbGVtLXRvLXJlZnJlc2gpIChkb20vdGV4dC1ub2RlPyBjdXJyZW50LWVsZW0pKVxuICAgICAoaWYtbGV0XG4gICAgICBbc2libGluZyAoLi1uZXh0U2libGluZyBjdXJyZW50LWVsZW0pXVxuICAgICAgKHJlY3VyIChjb25qIGVsZW1zIHNpYmxpbmcpIHNpYmxpbmcpXG4gICAgICBlbGVtcylcbiAgICAgOmVsc2VcbiAgICAgZWxlbXMpKVxuICAgX1xuICAgKHNldCEgKC4tdGV4dENvbnRlbnQgZWxlbWVudCkgdGV4dClcbiAgIHRleHRcbiAgIChqb2luIChtYXAgKGZuKiBbcDFfXzQyNzgwI10gKC4tdGV4dENvbnRlbnQgcDFfXzQyNzgwIykpIG9sZC1lbGVtcykpXG4gICB0ZW1wLWVsZW1cbiAgICguY3JlYXRlRWxlbWVudCBqcy9kb2N1bWVudCBcInNwYW5cIilcbiAgIF9cbiAgIChzZXQhICguLWlubmVySFRNTCB0ZW1wLWVsZW0pIChocy9jb2RlLT5odG1sIHRleHQpKVxuICAgbmV3LWVsZW1zXG4gICAoZG9hbGxcbiAgICAoZm9yXG4gICAgIFtpIChyYW5nZSAoLT4gdGVtcC1lbGVtIC4tY2hpbGROb2RlcyAuLWxlbmd0aCkpXVxuICAgICAoLT4gdGVtcC1lbGVtIC4tY2hpbGROb2RlcyAoLml0ZW0gaSkpKSldXG4gIChkb3NlcSBbbmV3LWVsZW0gbmV3LWVsZW1zXSAoLmluc2VydEJlZm9yZSBwYXJlbnQgbmV3LWVsZW0gZWxlbWVudCkpXG4gIChkb3NlcSBbb2xkLWVsZW0gb2xkLWVsZW1zXSAoLnJlbW92ZUNoaWxkIHBhcmVudCBvbGQtZWxlbSkpXG4gIChhc3NvYyBjcm9wcGVkLXN0YXRlIDplbGVtZW50IChmaXJzdCBuZXctZWxlbXMpKSkpXG4ifSB7OnN5bSBlbGVtPywgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgZWxlbT8gKGZuKiBbcDFfXzQyNzc1I10gKGluc3RhbmNlPyBqcy9FbGVtZW50IHAxX180Mjc3NSMpKSlcbiJ9IHs6c3ltIGVudGVyISwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt0aGlzXSl9LCA6cHJvdG9jb2wgRWRpdG9yfSB7OnN5bSBhcHBlbmQtdGV4dCEsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbdGhpcyB0ZXh0XSl9LCA6cHJvdG9jb2wgRWRpdG9yfSB7OnN5bSBsaW5lLW51bWJlcnMsIDptZXRhIHs6ZG9jICJBZGRzIGxpbmUgbnVtYmVycyB0byB0aGUgbnVtYmVycy4iLCA6YXJnbGlzdHMgKFtsaW5lLWNvdW50XSl9LCA6c291cmNlICIoZGVmblxuIGxpbmUtbnVtYmVyc1xuIFwiQWRkcyBsaW5lIG51bWJlcnMgdG8gdGhlIG51bWJlcnMuXCJcbiBbbGluZS1jb3VudF1cbiAoam9pbiAoZm9yIFtpIChyYW5nZSBsaW5lLWNvdW50KV0gKHN0ciBcIjxkaXY+XCIgKGluYyBpKSBcIjwvZGl2PlwiKSkpKVxuIn0gezpzeW0gdXBkYXRlLWhpZ2hsaWdodCEsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbY29udGVudCAqbGFzdC1lbGVtXSl9LCA6c291cmNlICIoZGVmblxuIHVwZGF0ZS1oaWdobGlnaHQhXG4gW2NvbnRlbnQgKmxhc3QtZWxlbV1cbiAod2hlbi1sZXRcbiAgW2VsZW0gQCpsYXN0LWVsZW1dXG4gIChzZXQhICguLWJhY2tncm91bmRDb2xvciAoLi1zdHlsZSBlbGVtKSkgbmlsKVxuICAocmVzZXQhICpsYXN0LWVsZW0gbmlsKSlcbiAod2hlbi1sZXRcbiAgW2VsZW0gKGRvbS9nZXQtZm9jdXNlZC1mb3JtKV1cbiAgKHdoZW4tbGV0XG4gICBbY29sb3JcbiAgICAoLmdldFByb3BlcnR5VmFsdWVcbiAgICAgKC5nZXRDb21wdXRlZFN0eWxlIGpzL3dpbmRvdyAoLi1maXJzdENoaWxkIGVsZW0pKVxuICAgICBcImNvbG9yXCIpXVxuICAgKGxldFxuICAgIFtuZXctY29sb3IgKC0+IGNvbG9yIChyZXBsYWNlICNcInJnYlxcKFwiIFwiXCIpIChyZXBsYWNlICNcIlxcKVwiIFwiXCIpKV1cbiAgICAoc2V0IVxuICAgICAoLi1iYWNrZ3JvdW5kQ29sb3IgKC4tc3R5bGUgZWxlbSkpXG4gICAgIChzdHIgXCJyZ2JhKFwiIG5ldy1jb2xvciBcIiwgMC4xKVwiKSlcbiAgICAocmVzZXQhICpsYXN0LWVsZW0gZWxlbSkpKSkpXG4ifSB7OnN5bSBpbml0LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3BzIG9wdHNdKX0sIDpzb3VyY2UgIihkZWZuXG4gaW5pdFxuIFtwcyBvcHRzXVxuICguaW5pdCBqcy9yYW5neSlcbiAobGV0XG4gIFtvcHRzXG4gICAoanMtPmNsaiBvcHRzIDprZXl3b3JkaXplLWtleXMgdHJ1ZSlcbiAgIGNvbnRlbnRcbiAgICgucXVlcnlTZWxlY3RvciBwcyBcIi5jb250ZW50XCIpXG4gICBldmVudHMtY2hhblxuICAgKGNoYW4pXG4gICBlZGl0b3JcbiAgIChjcmVhdGUtZWRpdG9yIHBzIGNvbnRlbnQgZXZlbnRzLWNoYW4gb3B0cyldXG4gIChzZXQhICguLXNwZWxsY2hlY2sgcHMpIGZhbHNlKVxuICAod2hlbi1ub3RcbiAgIGNvbnRlbnRcbiAgICh0aHJvdyAoanMvRXJyb3IuIFwiQ2FuJ3QgZmluZCBhIGRpdiB3aXRoIGNsYXNzICdjb250ZW50J1wiKSkpXG4gIChpbml0aWFsaXplISBlZGl0b3IpXG4gIChhZGQtZXZlbnQtbGlzdGVuZXJzISBjb250ZW50IGV2ZW50cy1jaGFuIG9wdHMpXG4gIChnb1xuICAgKHdoaWxlXG4gICAgdHJ1ZVxuICAgIChsZXRcbiAgICAgW2V2ZW50ICg8ISBldmVudHMtY2hhbildXG4gICAgICh3aGVuLW5vdFxuICAgICAgKHNvbWUtPlxuICAgICAgIG9wdHNcbiAgICAgICA6YmVmb3JlLWNoYW5nZS1jYWxsYmFja1xuICAgICAgICgoZm4qIFtwMV9fNDI3ODcjXSAocDFfXzQyNzg3IyBldmVudCkpKSlcbiAgICAgIChjYXNlXG4gICAgICAgKC4tdHlwZSBldmVudClcbiAgICAgICBcImtleWRvd25cIlxuICAgICAgIChjb25kXG4gICAgICAgIChhbmRcbiAgICAgICAgIChrZXktbmFtZT8gZXZlbnQgOnVuZG8tb3ItcmVkbylcbiAgICAgICAgICgtPiBvcHRzIDpkaXNhYmxlLXVuZG8tcmVkbz8gbm90KSlcbiAgICAgICAgKGlmICguLXNoaWZ0S2V5IGV2ZW50KSAocmVkbyEgZWRpdG9yKSAodW5kbyEgZWRpdG9yKSlcbiAgICAgICAgKGtleS1uYW1lPyBldmVudCA6ZW50ZXIpXG4gICAgICAgIChlbnRlciEgZWRpdG9yKVxuICAgICAgICAoa2V5LW5hbWU/IGV2ZW50IDp1cC1hcnJvdylcbiAgICAgICAgKHVwISBlZGl0b3IgKC4tYWx0S2V5IGV2ZW50KSlcbiAgICAgICAgKGtleS1uYW1lPyBldmVudCA6ZG93bi1hcnJvdylcbiAgICAgICAgKGRvd24hIGVkaXRvciAoLi1hbHRLZXkgZXZlbnQpKVxuICAgICAgICAoa2V5LW5hbWU/IGV2ZW50IDp0YWIpXG4gICAgICAgICh0YWIhIGVkaXRvcikpXG4gICAgICAgXCJrZXl1cFwiXG4gICAgICAgKGNvbmRcbiAgICAgICAgKGtleS1uYW1lPyBldmVudCA6YXJyb3dzKVxuICAgICAgICAodXBkYXRlLWN1cnNvci1wb3NpdGlvbiFcbiAgICAgICAgIGVkaXRvclxuICAgICAgICAgKGRvbS9nZXQtY3Vyc29yLXBvc2l0aW9uIGNvbnRlbnQgZmFsc2UpKVxuICAgICAgICAoa2V5LW5hbWU/IGV2ZW50IDpnZW5lcmFsKVxuICAgICAgICAocmVmcmVzaC1hZnRlci1rZXktZXZlbnQhIGVkaXRvciBldmVudCkpXG4gICAgICAgXCJjdXRcIlxuICAgICAgIChyZWZyZXNoLWFmdGVyLWN1dC1wYXN0ZSEgZWRpdG9yKVxuICAgICAgIFwicGFzdGVcIlxuICAgICAgIChyZWZyZXNoLWFmdGVyLWN1dC1wYXN0ZSEgZWRpdG9yKVxuICAgICAgIFwibW91c2V1cFwiXG4gICAgICAgKHVwZGF0ZS1jdXJzb3ItcG9zaXRpb24hXG4gICAgICAgIGVkaXRvclxuICAgICAgICAoZG9tL2dldC1jdXJzb3ItcG9zaXRpb25cbiAgICAgICAgIGNvbnRlbnRcbiAgICAgICAgIChzb21lPyAoOmNvbnNvbGUtY2FsbGJhY2sgb3B0cykpKSlcbiAgICAgICBcIm1vdXNlZW50ZXJcIlxuICAgICAgIChzaG93LWVycm9yLW1lc3NhZ2UhIHBzIGV2ZW50KVxuICAgICAgIFwibW91c2VsZWF2ZVwiXG4gICAgICAgKGhpZGUtZXJyb3ItbWVzc2FnZXMhIHBzKVxuICAgICAgIG5pbClcbiAgICAgIChzb21lLT5cbiAgICAgICBvcHRzXG4gICAgICAgOmNoYW5nZS1jYWxsYmFja1xuICAgICAgICgoZm4qIFtwMV9fNDI3ODgjXSAocDFfXzQyNzg4IyBldmVudCkpKSkpKSkpXG4gIGVkaXRvcikpXG4ifSB7OnN5bSBjYW4tdW5kbz8sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbdGhpc10pfSwgOnByb3RvY29sIEVkaXRvcn0gezpzeW0gcmVmcmVzaC1jb250ZW50ISwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtjb250ZW50IHN0YXRlIGNsaj9dKX0sIDpzb3VyY2UgIihkZWZuXG4gcmVmcmVzaC1jb250ZW50IVxuIFtjb250ZW50IHN0YXRlIGNsaj9dXG4gKGlmLW5vdFxuICBjbGo/XG4gIChkb1xuICAgKHNldCEgKC4taW5uZXJIVE1MIGNvbnRlbnQpIChocy9lc2NhcGUtaHRtbC1zdHIgKDp0ZXh0IHN0YXRlKSkpXG4gICBzdGF0ZSlcbiAgKGlmLWxldFxuICAgW2Nyb3AgKHNvbWUtPiBzdGF0ZSA6Y3JvcHBlZC1zdGF0ZSByZWZyZXNoLWNvbnRlbnQtZWxlbWVudCEpXVxuICAgKGlmXG4gICAgKG5vdD0gKDp0ZXh0IHN0YXRlKSAoLi10ZXh0Q29udGVudCBjb250ZW50KSlcbiAgICAocmVmcmVzaC1jb250ZW50ISBjb250ZW50IChkaXNzb2Mgc3RhdGUgOmNyb3BwZWQtc3RhdGUpIGNsaj8pXG4gICAgKGFzc29jIHN0YXRlIDpjcm9wcGVkLXN0YXRlIGNyb3ApKVxuICAgKGRvXG4gICAgKHNldCEgKC4taW5uZXJIVE1MIGNvbnRlbnQpIChocy9jb2RlLT5odG1sICg6dGV4dCBzdGF0ZSkpKVxuICAgIChkaXNzb2Mgc3RhdGUgOmNyb3BwZWQtc3RhdGUpKSkpKVxuIn0gezpzeW0gcmVkbywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtlZGl0b3JdKX0sIDpzb3VyY2UgIihkZWZuIHJlZG8gW2VkaXRvcl0gKHJlZG8hIGVkaXRvcikpXG4ifSB7OnN5bSBkZWJvdW5jZS1mdW5jdGlvbiwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtmIG1pbGxpc10pfSwgOnNvdXJjZSAiKGRlZm4gZGVib3VuY2UtZnVuY3Rpb24gW2YgbWlsbGlzXSAoZGVib3VuY2UgZiBtaWxsaXMpKVxuIn0gezpzeW0gcmVmcmVzaC1pbnN0YXJlcGwhLCA6bWV0YSB7OmRvYyAiUmVmcmVzaGVzIHRoZSBJbnN0YVJFUEwuIiwgOmFyZ2xpc3RzIChbaW5zdGFyZXBsIGNvbnRlbnQgY29tcGlsZXItZm4gbGltaXRdKX0sIDpzb3VyY2UgIihkZWZuXG4gcmVmcmVzaC1pbnN0YXJlcGwhXG4gXCJSZWZyZXNoZXMgdGhlIEluc3RhUkVQTC5cIlxuIFtpbnN0YXJlcGwgY29udGVudCBjb21waWxlci1mbiBsaW1pdF1cbiAobGV0XG4gIFtlbGVtc1xuICAgKGlyL2dldC1jb2xsZWN0aW9ucyBjb250ZW50KVxuICAgbG9jYXRpb25zXG4gICAoaXIvZWxlbXMtPmxvY2F0aW9ucyBlbGVtcyAoLi1vZmZzZXRUb3AgaW5zdGFyZXBsKSlcbiAgIGZvcm1zXG4gICAoLT4+XG4gICAgZWxlbXNcbiAgICAobWFwIGlyL2NvbGxlY3Rpb24tPmNvbnRlbnQpXG4gICAgKG1hcCAoZm4qIFtwMV9fNDI3NzcjXSAocmVwbGFjZSBwMV9fNDI3NzcjIFxcwqAgXCIgXCIpKSkpXVxuICAoY29tcGlsZXItZm5cbiAgIGZvcm1zXG4gICAoZm5cbiAgICBbcmVzdWx0c11cbiAgICAod2hlblxuICAgICAoLi1wYXJlbnRFbGVtZW50IGluc3RhcmVwbClcbiAgICAgKHNldCFcbiAgICAgICguLWlubmVySFRNTCBpbnN0YXJlcGwpXG4gICAgICAoaXIvcmVzdWx0cy0+aHRtbCByZXN1bHRzIGxvY2F0aW9ucyBsaW1pdCkpKSkpKSlcbiJ9IHs6c3ltIGVkaXQtYW5kLXJlZnJlc2ghLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3RoaXMgc3RhdGVdKX0sIDpwcm90b2NvbCBFZGl0b3J9IHs6c3ltIHJhaW5ib3ctY291bnQsIDptZXRhIHt9LCA6c291cmNlICIoZGVmIHJhaW5ib3ctY291bnQgNSlcbiJ9IHs6c3ltIHVwZGF0ZS1jdXJzb3ItcG9zaXRpb24hLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3RoaXMgcG9zaXRpb25dKX0sIDpwcm90b2NvbCBFZGl0b3J9IHs6c3ltIGluaXQtc3RhdGUsIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRoZSBlZGl0b3IncyBzdGF0ZS4gSWYgZnVsbC1zZWxlY3Rpb24/IGlzIHRydWUsIGl0IHdpbGwgdHJ5IHRvIHNhdmVcbnRoZSBlbnRpcmUgc2VsZWN0aW9uIHJhdGhlciB0aGFuIGp1c3QgdGhlIGN1cnNvciBwb3NpdGlvbi4iLCA6YXJnbGlzdHMgKFtjb250ZW50IGNyb3A/IGZ1bGwtc2VsZWN0aW9uP10pfSwgOnNvdXJjZSAiKGRlZm5cbiBpbml0LXN0YXRlXG4gXCJSZXR1cm5zIHRoZSBlZGl0b3IncyBzdGF0ZS4gSWYgZnVsbC1zZWxlY3Rpb24/IGlzIHRydWUsIGl0IHdpbGwgdHJ5IHRvIHNhdmVcXG50aGUgZW50aXJlIHNlbGVjdGlvbiByYXRoZXIgdGhhbiBqdXN0IHRoZSBjdXJzb3IgcG9zaXRpb24uXCJcbiBbY29udGVudCBjcm9wPyBmdWxsLXNlbGVjdGlvbj9dXG4gKGxldFxuICBbc2VsZWN0aW9uXG4gICAoLmdldFNlbGVjdGlvbiBqcy9yYW5neSlcbiAgIGFuY2hvclxuICAgKC4tYW5jaG9yTm9kZSBzZWxlY3Rpb24pXG4gICBmb2N1c1xuICAgKC4tZm9jdXNOb2RlIHNlbGVjdGlvbilcbiAgIHBhcmVudFxuICAgKHdoZW4gKGFuZCBhbmNob3IgZm9jdXMpIChkb20vY29tbW9uLWFuY2VzdG9yIGFuY2hvciBmb2N1cykpXG4gICBzdGF0ZVxuICAgezpjdXJzb3ItcG9zaXRpb25cbiAgICAoLT4gY29udGVudCAoZG9tL2dldC1zZWxlY3Rpb24gZnVsbC1zZWxlY3Rpb24/KSA6Y3Vyc29yLXBvc2l0aW9uKSxcbiAgICA6dGV4dCAoLi10ZXh0Q29udGVudCBjb250ZW50KX1dXG4gIChpZi1sZXRcbiAgIFtjcm9wcGVkLXNlbGVjdGlvbiAoc29tZS0+IHBhcmVudCAoZG9tL2dldC1zZWxlY3Rpb24gZmFsc2UpKV1cbiAgIChpZlxuICAgIGNyb3A/XG4gICAgKGFzc29jXG4gICAgIHN0YXRlXG4gICAgIDpjcm9wcGVkLXN0YXRlXG4gICAgIChhc3NvYyBjcm9wcGVkLXNlbGVjdGlvbiA6dGV4dCAoLi10ZXh0Q29udGVudCBwYXJlbnQpKSlcbiAgICBzdGF0ZSlcbiAgIHN0YXRlKSkpXG4ifSB7OnN5bSBldmFsISwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt0aGlzIGZvcm0gY2FsbGJhY2tdKX0sIDpwcm90b2NvbCBFZGl0b3J9IHs6c3ltIGFkZC1wYXJpbmZlci1hZnRlci1jb25zb2xlLXN0YXJ0LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3N0YXRlIGNvbnNvbGUtc3RhcnQtbnVtXSl9LCA6c291cmNlICIoZGVmblxuIGFkZC1wYXJpbmZlci1hZnRlci1jb25zb2xlLXN0YXJ0XG4gW3N0YXRlIGNvbnNvbGUtc3RhcnQtbnVtXVxuIChsZXRcbiAgW3ByZS10ZXh0XG4gICAoc3VicyAoOnRleHQgc3RhdGUpIDAgY29uc29sZS1zdGFydC1udW0pXG4gICBwb3N0LXRleHRcbiAgIChzdWJzICg6dGV4dCBzdGF0ZSkgY29uc29sZS1zdGFydC1udW0pXG4gICBjbGVhcmVkLXRleHRcbiAgIChzdHIgKHJlcGxhY2UgcHJlLXRleHQgI1wiW15cXHJeXFxuXVwiIFwiIFwiKSBwb3N0LXRleHQpXG4gICB0ZW1wLXN0YXRlXG4gICAoYXNzb2Mgc3RhdGUgOnRleHQgY2xlYXJlZC10ZXh0KVxuICAgdGVtcC1zdGF0ZVxuICAgKGNwL2FkZC1wYXJpbmZlciA6Ym90aCB0ZW1wLXN0YXRlKVxuICAgbmV3LXRleHRcbiAgIChzdHIgcHJlLXRleHQgKHN1YnMgKDp0ZXh0IHRlbXAtc3RhdGUpIGNvbnNvbGUtc3RhcnQtbnVtKSldXG4gIChhc3NvYyBzdGF0ZSA6dGV4dCBuZXctdGV4dCkpKVxuIn0gezpzeW0gcmVmcmVzaC1udW1iZXJzISwgOm1ldGEgezpkb2MgIlJlZnJlc2hlcyB0aGUgbGluZSBudW1iZXJzLiIsIDphcmdsaXN0cyAoW251bWJlcnMgbGluZS1jb3VudF0pfSwgOnNvdXJjZSAiKGRlZm5cbiByZWZyZXNoLW51bWJlcnMhXG4gXCJSZWZyZXNoZXMgdGhlIGxpbmUgbnVtYmVycy5cIlxuIFtudW1iZXJzIGxpbmUtY291bnRdXG4gKHNldCEgKC4taW5uZXJIVE1MIG51bWJlcnMpIChsaW5lLW51bWJlcnMgbGluZS1jb3VudCkpKVxuIn0gezpzeW0gcmVmcmVzaC1hZnRlci1jdXQtcGFzdGUhLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3RoaXNdKX0sIDpwcm90b2NvbCBFZGl0b3J9IHs6c3ltIHJlZnJlc2gtYWZ0ZXIta2V5LWV2ZW50ISwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt0aGlzIGV2ZW50XSl9LCA6cHJvdG9jb2wgRWRpdG9yfSB7OnN5bSBhZGQtbmV3bGluZSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt7OmtleXMgW3RleHRdLCA6YXMgc3RhdGV9XSl9LCA6c291cmNlICIoZGVmblxuIGFkZC1uZXdsaW5lXG4gW3s6a2V5cyBbdGV4dF0sIDphcyBzdGF0ZX1dXG4gKGlmLW5vdFxuICAoPSBcXG5ld2xpbmUgKGxhc3QgdGV4dCkpXG4gIChhc3NvYyBzdGF0ZSA6dGV4dCAoc3RyIHRleHQgXFxuZXdsaW5lKSlcbiAgc3RhdGUpKVxuIn0gezpzeW0gdXBkYXRlLWVkaXQtaGlzdG9yeSEsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbKmVkaXQtaGlzdG9yeSBzdGF0ZV0pfSwgOnNvdXJjZSAiKGRlZm5cbiB1cGRhdGUtZWRpdC1oaXN0b3J5IVxuIFsqZWRpdC1oaXN0b3J5IHN0YXRlXVxuICh0cnlcbiAgKG13bS91cGRhdGUtZWRpdC1oaXN0b3J5IVxuICAgKmVkaXQtaGlzdG9yeVxuICAgKGlmICg6c2VsZWN0aW9uLWNoYW5nZT8gc3RhdGUpIHN0YXRlIChkaXNzb2Mgc3RhdGUgOmNyb3BwZWQtc3RhdGUpKSlcbiAgc3RhdGVcbiAgKGNhdGNoIGpzL0Vycm9yIF8gKG13bS9nZXQtY3VycmVudC1zdGF0ZSAqZWRpdC1oaXN0b3J5KSkpKVxuIn0gezpzeW0gcmVmcmVzaC1jb25zb2xlLWNvbnRlbnQhLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2NvbnRlbnQgc3RhdGUgY29uc29sZS1zdGFydC1udW0gY2xqP10pfSwgOnNvdXJjZSAiKGRlZm5cbiByZWZyZXNoLWNvbnNvbGUtY29udGVudCFcbiBbY29udGVudCBzdGF0ZSBjb25zb2xlLXN0YXJ0LW51bSBjbGo/XVxuIChzZXQhXG4gICguLWlubmVySFRNTCBjb250ZW50KVxuICAoaWZcbiAgIGNsaj9cbiAgIChsZXRcbiAgICBbcHJlLXRleHRcbiAgICAgKHN1YnMgKDp0ZXh0IHN0YXRlKSAwIGNvbnNvbGUtc3RhcnQtbnVtKVxuICAgICBwb3N0LXRleHRcbiAgICAgKHN1YnMgKDp0ZXh0IHN0YXRlKSBjb25zb2xlLXN0YXJ0LW51bSldXG4gICAgKHN0ciAoaHMvZXNjYXBlLWh0bWwtc3RyIHByZS10ZXh0KSAoaHMvY29kZS0+aHRtbCBwb3N0LXRleHQpKSlcbiAgIChocy9lc2NhcGUtaHRtbC1zdHIgKDp0ZXh0IHN0YXRlKSkpKVxuIHN0YXRlKVxuIn0gezpzeW0gcmVmcmVzaC1lcnJvcnMtYW5kLWRlbGltaXRlcnMhLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2NvbnRlbnQgZXZlbnRzLWNoYW5dKX0sIDpzb3VyY2UgIihkZWZuXG4gcmVmcmVzaC1lcnJvcnMtYW5kLWRlbGltaXRlcnMhXG4gW2NvbnRlbnQgZXZlbnRzLWNoYW5dXG4gKGhpZGUtZXJyb3ItbWVzc2FnZXMhICguLXBhcmVudEVsZW1lbnQgY29udGVudCkpXG4gKGRvc2VxXG4gIFtlbGVtICgtPiBjb250ZW50ICgucXVlcnlTZWxlY3RvckFsbCBcIi5lcnJvclwiKSBhcnJheS1zZXEpXVxuICAobGV0XG4gICBbc2hvdy1lcnJvci1pY29uIVxuICAgIChmbiBbZWxlbV0gKHNldCEgKC4tZGlzcGxheSAoLi1zdHlsZSBlbGVtKSkgXCJpbmxpbmUtYmxvY2tcIikpXG4gICAgc2hvdy1lcnJvci1pY29uIVxuICAgIChkZWJvdW5jZSBzaG93LWVycm9yLWljb24hIDEwMDApXVxuICAgKHNob3ctZXJyb3ItaWNvbiEgZWxlbSkpXG4gIChldmVudHMvbGlzdGVuXG4gICBlbGVtXG4gICBcIm1vdXNlZW50ZXJcIlxuICAgKGZuKiBbcDFfXzQyNzc4I10gKHB1dCEgZXZlbnRzLWNoYW4gcDFfXzQyNzc4IykpKVxuICAoZXZlbnRzL2xpc3RlblxuICAgZWxlbVxuICAgXCJtb3VzZWxlYXZlXCJcbiAgIChmbiogW3AxX180Mjc3OSNdIChwdXQhIGV2ZW50cy1jaGFuIHAxX180Mjc3OSMpKSkpXG4gKGRvc2VxXG4gIFtbZWxlbSBjbGFzcy1uYW1lXSAocmFpbmJvdy1kZWxpbWl0ZXJzIGNvbnRlbnQgLTEpXVxuICAoLmFkZCAoLi1jbGFzc0xpc3QgZWxlbSkgY2xhc3MtbmFtZSkpKVxuIn0gezpzeW0gYXBwZW5kLXRleHQsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZWRpdG9yIHRleHRdKX0sIDpzb3VyY2UgIihkZWZuIGFwcGVuZC10ZXh0IFtlZGl0b3IgdGV4dF0gKGFwcGVuZC10ZXh0ISBlZGl0b3IgdGV4dCkpXG4ifSB7OnN5bSBwcmV2ZW50LWRlZmF1bHQ/LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2V2ZW50IG9wdHNdKX0sIDpzb3VyY2UgIihkZWZuXG4gcHJldmVudC1kZWZhdWx0P1xuIFtldmVudCBvcHRzXVxuIChib29sZWFuXG4gIChvclxuICAgKGtleS1uYW1lPyBldmVudCA6dW5kby1vci1yZWRvKVxuICAgKGtleS1uYW1lPyBldmVudCA6dGFiKVxuICAgKGtleS1uYW1lPyBldmVudCA6ZW50ZXIpXG4gICAoYW5kXG4gICAgKG9yICg6Y29uc29sZS1jYWxsYmFjayBvcHRzKSAoLi1hbHRLZXkgZXZlbnQpKVxuICAgIChvciAoa2V5LW5hbWU/IGV2ZW50IDp1cC1hcnJvdykgKGtleS1uYW1lPyBldmVudCA6ZG93bi1hcnJvdykpKSkpKVxuIn0gezpzeW0gaW5pdGlhbGl6ZSEsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbdGhpc10pfSwgOnByb3RvY29sIEVkaXRvcn0gezpzeW0gaW5pdC1hbGwsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbJiBbb3B0c11dKX0sIDpzb3VyY2UgIihkZWZuXG4gaW5pdC1hbGxcbiBbJiBbb3B0c11dXG4gKGRvc2VxXG4gIFtwcyAoLT4ganMvZG9jdW1lbnQgKC5xdWVyeVNlbGVjdG9yQWxsIFwiLnBhcmVuLXNvdXBcIikgYXJyYXktc2VxKV1cbiAgKGluaXQgcHMgKG9yIG9wdHMgI2pzIHt9KSkpKVxuIn0gezpzeW0gYWRkLXBhcmluZmVyLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3N0YXRlIGNvbnNvbGUtc3RhcnQtbnVtIGZpeC1pbmRlbnQ/XSl9LCA6c291cmNlICIoZGVmblxuIGFkZC1wYXJpbmZlclxuIFtzdGF0ZSBjb25zb2xlLXN0YXJ0LW51bSBmaXgtaW5kZW50P11cbiAobGV0XG4gIFtjcm9wcGVkLXN0YXRlXG4gICAoOmNyb3BwZWQtc3RhdGUgc3RhdGUpXG4gICBzdGF0ZVxuICAgKGNvbmQtPlxuICAgIHN0YXRlXG4gICAgZml4LWluZGVudD9cbiAgICAoYXNzb2MgOmluZGVudC10eXBlIDpub3JtYWwgOmN1cnNvci1wb3NpdGlvbiBbMCAwXSkpXG4gICBpbmRlbnQtdHlwZVxuICAgKDppbmRlbnQtdHlwZSBzdGF0ZSlcbiAgIHN0YXRlXG4gICAoY29uZFxuICAgIChwb3M/IGNvbnNvbGUtc3RhcnQtbnVtKVxuICAgIChhZGQtcGFyaW5mZXItYWZ0ZXItY29uc29sZS1zdGFydCBzdGF0ZSBjb25zb2xlLXN0YXJ0LW51bSlcbiAgICBpbmRlbnQtdHlwZVxuICAgIChjcC9hZGQtaW5kZW50IHN0YXRlKVxuICAgIDplbHNlXG4gICAgKGNwL2FkZC1wYXJpbmZlciA6cGFyZW4gc3RhdGUpKV1cbiAgKGlmXG4gICAoYW5kIGNyb3BwZWQtc3RhdGUgaW5kZW50LXR5cGUpXG4gICAoYXNzb2NcbiAgICBzdGF0ZVxuICAgIDpjcm9wcGVkLXN0YXRlXG4gICAgKG1lcmdlXG4gICAgIGNyb3BwZWQtc3RhdGVcbiAgICAgKGNwL2FkZC1pbmRlbnQgKGFzc29jIGNyb3BwZWQtc3RhdGUgOmluZGVudC10eXBlIGluZGVudC10eXBlKSkpKVxuICAgc3RhdGUpKSlcbiJ9IHs6c3ltIHVuZG8sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZWRpdG9yXSl9LCA6c291cmNlICIoZGVmbiB1bmRvIFtlZGl0b3JdICh1bmRvISBlZGl0b3IpKVxuIn0gezpzeW0gb2JqPywgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgb2JqPyAoZm4qIFtwMV9fNDI3NzYjXSAoaW5zdGFuY2U/IGpzL09iamVjdCBwMV9fNDI3NzYjKSkpXG4ifSB7OnN5bSBkb3duISwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt0aGlzIGFsdD9dKX0sIDpwcm90b2NvbCBFZGl0b3J9IHs6c3ltIGFkZC1ldmVudC1saXN0ZW5lcnMhLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2NvbnRlbnQgZXZlbnRzLWNoYW4gb3B0c10pfSwgOnNvdXJjZSAiKGRlZm5cbiBhZGQtZXZlbnQtbGlzdGVuZXJzIVxuIFtjb250ZW50IGV2ZW50cy1jaGFuIG9wdHNdXG4gKGRvdG9cbiAgY29udGVudFxuICAoZXZlbnRzL3JlbW92ZUFsbClcbiAgKGV2ZW50cy9saXN0ZW5cbiAgIFwia2V5ZG93blwiXG4gICAoZm5cbiAgICBbZV1cbiAgICAod2hlbiAocHJldmVudC1kZWZhdWx0PyBlIG9wdHMpICgucHJldmVudERlZmF1bHQgZSkpXG4gICAgKHB1dCEgZXZlbnRzLWNoYW4gZSkpKVxuICAoZXZlbnRzL2xpc3RlblxuICAgXCJrZXl1cFwiXG4gICAoZm4qIFtwMV9fNDI3ODMjXSAocHV0ISBldmVudHMtY2hhbiBwMV9fNDI3ODMjKSkpXG4gIChldmVudHMvbGlzdGVuXG4gICBcImN1dFwiXG4gICAoZm4qIFtwMV9fNDI3ODQjXSAocHV0ISBldmVudHMtY2hhbiBwMV9fNDI3ODQjKSkpXG4gIChldmVudHMvbGlzdGVuXG4gICBcInBhc3RlXCJcbiAgIChmbiogW3AxX180Mjc4NSNdIChwdXQhIGV2ZW50cy1jaGFuIHAxX180Mjc4NSMpKSlcbiAgKGV2ZW50cy9saXN0ZW5cbiAgIFwibW91c2V1cFwiXG4gICAoZm4qIFtwMV9fNDI3ODYjXSAocHV0ISBldmVudHMtY2hhbiBwMV9fNDI3ODYjKSkpKSlcbiJ9IHs6c3ltIHJlc2V0LWVkaXQtaGlzdG9yeSEsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbdGhpcyBzdGFydF0pfSwgOnByb3RvY29sIEVkaXRvcn0gezpzeW0gaGlkZS1lcnJvci1tZXNzYWdlcyEsIDptZXRhIHs6ZG9jICJIaWRlcyBhbGwgZXJyb3IgcG9wdXBzLiIsIDphcmdsaXN0cyAoW3BhcmVudC1lbGVtXSl9LCA6c291cmNlICIoZGVmblxuIGhpZGUtZXJyb3ItbWVzc2FnZXMhXG4gXCJIaWRlcyBhbGwgZXJyb3IgcG9wdXBzLlwiXG4gW3BhcmVudC1lbGVtXVxuIChkb3NlcVxuICBbZWxlbSAoLT4gcGFyZW50LWVsZW0gKC5xdWVyeVNlbGVjdG9yQWxsIFwiLmVycm9yLXRleHRcIikgYXJyYXktc2VxKV1cbiAgKC5yZW1vdmVDaGlsZCBwYXJlbnQtZWxlbSBlbGVtKSkpXG4ifSB7OnN5bSBFZGl0b3IsIDptZXRhIHs6ZG9jIG5pbH0sIDptZXRob2RzIChhcHBlbmQtdGV4dCEgY2FuLXJlZG8/IGNhbi11bmRvPyBkb3duISBlZGl0LWFuZC1yZWZyZXNoISBlbnRlciEgZXZhbCEgaW5pdGlhbGl6ZSEgcmVkbyEgcmVmcmVzaCEgcmVmcmVzaC1hZnRlci1jdXQtcGFzdGUhIHJlZnJlc2gtYWZ0ZXIta2V5LWV2ZW50ISByZXNldC1lZGl0LWhpc3RvcnkhIHRhYiEgdW5kbyEgdXAhIHVwZGF0ZS1jdXJzb3ItcG9zaXRpb24hKX0pLCBjbGpzLnRvb2xzLnJlYWRlci5pbXBsLmNvbW1vbnMgKHs6c3ltIG1hdGNoLW51bWJlciwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtzXSl9LCA6c291cmNlICIoZGVmblxuIG1hdGNoLW51bWJlclxuIFtzXVxuIChpZlxuICAobWF0Y2hlcz8gaW50LXBhdHRlcm4gcylcbiAgKG1hdGNoLWludCBzKVxuICAoaWZcbiAgIChtYXRjaGVzPyBmbG9hdC1wYXR0ZXJuIHMpXG4gICAobWF0Y2gtZmxvYXQgcylcbiAgICh3aGVuIChtYXRjaGVzPyByYXRpby1wYXR0ZXJuIHMpIChtYXRjaC1yYXRpbyBzKSkpKSlcbiJ9IHs6c3ltIHNraXAtbGluZSwgOm1ldGEgezpkb2MgIkFkdmFuY2VzIHRoZSByZWFkZXIgdG8gdGhlIGVuZCBvZiBhIGxpbmUuIFJldHVybnMgdGhlIHJlYWRlciIsIDphcmdsaXN0cyAoW3JlYWRlcl0pfSwgOnNvdXJjZSAiKGRlZm5cbiBza2lwLWxpbmVcbiBcIkFkdmFuY2VzIHRoZSByZWFkZXIgdG8gdGhlIGVuZCBvZiBhIGxpbmUuIFJldHVybnMgdGhlIHJlYWRlclwiXG4gW3JlYWRlcl1cbiAobG9vcCBbXSAod2hlbi1ub3QgKG5ld2xpbmU/IChyZWFkLWNoYXIgcmVhZGVyKSkgKHJlY3VyKSkpXG4gcmVhZGVyKVxuIn0gezpzeW0gaW50LXBhdHRlcm4sIDptZXRhIHt9LCA6c291cmNlICIoZGVmXG4gaW50LXBhdHRlcm5cbiAjXCJeKFstK10/KSg/OigwKXwoWzEtOV1bMC05XSopfDBbeFhdKFswLTlBLUZhLWZdKyl8MChbMC03XSspfChbMS05XVswLTldPylbclJdKFswLTlBLVphLXpdKyl8MFswLTldKykoTik/JFwiKVxuIn0gezpzeW0gcmVhZC1jb21tZW50LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3JkciAmIF9dKX0sIDpzb3VyY2UgIihkZWZuIHJlYWQtY29tbWVudCBbcmRyICYgX10gKHNraXAtbGluZSByZHIpKVxuIn0gezpzeW0gcGFyc2Utc3ltYm9sLCA6bWV0YSB7OmRvYyAiUGFyc2VzIGEgc3RyaW5nIGludG8gYSB2ZWN0b3Igb2YgdGhlIG5hbWVzcGFjZSBhbmQgc3ltYm9sIiwgOmFyZ2xpc3RzIChbdG9rZW5dKX0sIDpzb3VyY2UgIihkZWZuXG4gcGFyc2Utc3ltYm9sXG4gXCJQYXJzZXMgYSBzdHJpbmcgaW50byBhIHZlY3RvciBvZiB0aGUgbmFtZXNwYWNlIGFuZCBzeW1ib2xcIlxuIFt0b2tlbl1cbiAod2hlbi1ub3RcbiAgKG9yXG4gICAoaWRlbnRpY2FsPyBcIlwiIHRva2VuKVxuICAgKHRydWU/ICgudGVzdCAjXCI6JFwiIHRva2VuKSlcbiAgICh0cnVlPyAoLnRlc3QgI1wiXjo6XCIgdG9rZW4pKSlcbiAgKGxldFxuICAgW25zLWlkeFxuICAgICguaW5kZXhPZiB0b2tlbiBcIi9cIilcbiAgICBuc1xuICAgICh3aGVuIChwb3M/IG5zLWlkeCkgKHN1YnMgdG9rZW4gMCBucy1pZHgpKV1cbiAgIChpZi1ub3RcbiAgICAobmlsPyBucylcbiAgICAobGV0XG4gICAgIFtucy1pZHggKGluYyBucy1pZHgpXVxuICAgICAod2hlbi1ub3RcbiAgICAgICg9PSBucy1pZHggKGNvdW50IHRva2VuKSlcbiAgICAgIChsZXRcbiAgICAgICBbc3ltIChzdWJzIHRva2VuIG5zLWlkeCldXG4gICAgICAgKHdoZW5cbiAgICAgICAgKGFuZFxuICAgICAgICAgKG5vdCAobnVtZXJpYz8gKG50aCBzeW0gMCkpKVxuICAgICAgICAgKG5vdCAoaWRlbnRpY2FsPyBcIlwiIHN5bSkpXG4gICAgICAgICAoZmFsc2U/ICgudGVzdCAjXCI6JFwiIG5zKSlcbiAgICAgICAgIChvciAoaWRlbnRpY2FsPyBzeW0gXCIvXCIpICg9PSAtMSAoLmluZGV4T2Ygc3ltIFwiL1wiKSkpKVxuICAgICAgICBbbnMgc3ltXSkpKSlcbiAgICAod2hlblxuICAgICAob3IgKGlkZW50aWNhbD8gdG9rZW4gXCIvXCIpICg9PSAtMSAoLmluZGV4T2YgdG9rZW4gXCIvXCIpKSlcbiAgICAgW25pbCB0b2tlbl0pKSkpKVxuIn0gezpzeW0gbnVtYmVyLWxpdGVyYWw/LCA6bWV0YSB7OmRvYyAiQ2hlY2tzIHdoZXRoZXIgdGhlIHJlYWRlciBpcyBhdCB0aGUgc3RhcnQgb2YgYSBudW1iZXIgbGl0ZXJhbCIsIDphcmdsaXN0cyAoW3JlYWRlciBpbml0Y2hdKX0sIDpzb3VyY2UgIihkZWZuXG4gbnVtYmVyLWxpdGVyYWw/XG4gXCJDaGVja3Mgd2hldGhlciB0aGUgcmVhZGVyIGlzIGF0IHRoZSBzdGFydCBvZiBhIG51bWJlciBsaXRlcmFsXCJcbiBbcmVhZGVyIGluaXRjaF1cbiAob3JcbiAgKG51bWVyaWM/IGluaXRjaClcbiAgKGFuZFxuICAgKG9yIChpZGVudGljYWw/IFxcKyBpbml0Y2gpIChpZGVudGljYWw/IFxcLSBpbml0Y2gpKVxuICAgKG51bWVyaWM/IChwZWVrLWNoYXIgcmVhZGVyKSkpKSlcbiJ9IHs6c3ltIHJlYWQtcGFzdCwgOm1ldGEgezpkb2MgIlJlYWQgdW50aWwgZmlyc3QgY2hhcmFjdGVyIHRoYXQgZG9lc24ndCBtYXRjaCBwcmVkLCByZXR1cm5pbmdcbiAgIGNoYXIuIiwgOmFyZ2xpc3RzIChbcHJlZCByZHJdKX0sIDpzb3VyY2UgIihkZWZuXG4gcmVhZC1wYXN0XG4gXCJSZWFkIHVudGlsIGZpcnN0IGNoYXJhY3RlciB0aGF0IGRvZXNuJ3QgbWF0Y2ggcHJlZCwgcmV0dXJuaW5nXFxuICAgY2hhci5cIlxuIFtwcmVkIHJkcl1cbiAobG9vcCBbY2ggKHJlYWQtY2hhciByZHIpXSAoaWYgKHByZWQgY2gpIChyZWN1ciAocmVhZC1jaGFyIHJkcikpIGNoKSkpXG4ifSB7OnN5bSBmbG9hdC1wYXR0ZXJuLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiBmbG9hdC1wYXR0ZXJuICNcIihbLStdP1swLTldKyhcXC5bMC05XSopPyhbZUVdWy0rXT9bMC05XSspPykoTSk/XCIpXG4ifSB7OnN5bSBtYXRjaGVzPywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtwYXR0ZXJuIHNdKX0sIDpzb3VyY2UgIihkZWZuXG4gbWF0Y2hlcz9cbiBbcGF0dGVybiBzXVxuIChsZXQgW1ttYXRjaF0gKHJlLWZpbmQgcGF0dGVybiBzKV0gKGlkZW50aWNhbD8gbWF0Y2ggcykpKVxuIn0gezpzeW0gdGhyb3dpbmctcmVhZGVyLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW21zZ10pfSwgOnNvdXJjZSAiKGRlZm4gdGhyb3dpbmctcmVhZGVyIFttc2ddIChmbiBbcmRyICYgX10gKHJlYWRlci1lcnJvciByZHIgbXNnKSkpXG4ifSB7OnN5bSByYXRpby1wYXR0ZXJuLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiByYXRpby1wYXR0ZXJuICNcIihbLStdP1swLTldKykvKFswLTldKylcIilcbiJ9KSwgb2RveWxlLnJlYWRtZSAoezpzeW0gb24td2luZG93LXJlc2l6ZSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt3aWR0aCBoZWlnaHRdKX0sIDpzb3VyY2UgIihkZWZuXG4gb24td2luZG93LXJlc2l6ZVxuIFt3aWR0aCBoZWlnaHRdXG4gKHN3YXAhXG4gICpzZXNzaW9uXG4gIChmblxuICAgW3Nlc3Npb25dXG4gICAoLT5cbiAgICBzZXNzaW9uXG4gICAgKG8vaW5zZXJ0XG4gICAgIDpvZG95bGUucmVhZG1lL3dpbmRvd1xuICAgICB7Om9kb3lsZS5yZWFkbWUvd2lkdGggd2lkdGgsIDpvZG95bGUucmVhZG1lL2hlaWdodCBoZWlnaHR9KVxuICAgIG8vZmlyZS1ydWxlcykpKSlcbiJ9IHs6c3ltIGZhY3RzLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZlxuIGZhY3RzXG4gKC0+PlxuICAoby9xdWVyeS1hbGwgQCpzZXNzaW9uKVxuICAocmVtb3ZlIChmbiBbW2lkXV0gKD0gaWQgOm9kb3lsZS5yZWFkbWUvZGVyaXZlZCkpKVxuICBwci1zdHJcbiAgZWRuL3JlYWQtc3RyaW5nKSlcbiJ9IHs6c3ltIHJ1bGVzLTEyLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZlxuIHJ1bGVzLTEyXG4gKG8vcnVsZXNldFxuICB7Om9kb3lsZS5yZWFkbWUvY2hhcmFjdGVyXG4gICBbOndoYXRcbiAgICBbaWQgOm9kb3lsZS5yZWFkbWUveCB4XVxuICAgIFtpZCA6b2RveWxlLnJlYWRtZS95IHldXG4gICAgOnRoZW5cbiAgICAoby9pbnNlcnQhIGlkIDpvZG95bGUucmVhZG1lL2NoYXJhY3RlciBtYXRjaCldLFxuICAgOm9kb3lsZS5yZWFkbWUvbW92ZS1jaGFyYWN0ZXJcbiAgIFs6d2hhdFxuICAgIFs6b2RveWxlLnJlYWRtZS90aW1lIDpvZG95bGUucmVhZG1lL2RlbHRhIGR0XVxuICAgIFtpZCA6b2RveWxlLnJlYWRtZS9jaGFyYWN0ZXIgY2ggezp0aGVuIGZhbHNlfV1cbiAgICA6dGhlblxuICAgIChvL2luc2VydCFcbiAgICAgaWRcbiAgICAgezpvZG95bGUucmVhZG1lL3ggKCsgKDp4IGNoKSBkdCksXG4gICAgICA6b2RveWxlLnJlYWRtZS95ICgrICg6eSBjaCkgZHQpfSldfSkpXG4ifSB7OnN5bSB0ZXN0LWRlcml2ZWQtZmFjdC13aXRoLXdpbmRvdy1kaW1lbnNpb25zISwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtydWxlc10pfSwgOnNvdXJjZSAiKGRlZm5cbiB0ZXN0LWRlcml2ZWQtZmFjdC13aXRoLXdpbmRvdy1kaW1lbnNpb25zIVxuIFtydWxlc11cbiAocmVzZXQhICpzZXNzaW9uIChyZWR1Y2Ugby9hZGQtcnVsZSAoby8tPnNlc3Npb24pIHJ1bGVzKSlcbiAoc3dhcCFcbiAgKnNlc3Npb25cbiAgKGZuXG4gICBbc2Vzc2lvbl1cbiAgIChvL2luc2VydFxuICAgIHNlc3Npb25cbiAgICA6b2RveWxlLnJlYWRtZS93aW5kb3dcbiAgICB7Om9kb3lsZS5yZWFkbWUvd2lkdGggMTAwLCA6b2RveWxlLnJlYWRtZS9oZWlnaHQgMTAwfSkpKVxuIChzd2FwIVxuICAqc2Vzc2lvblxuICAoZm5cbiAgIFtzZXNzaW9uXVxuICAgKG8vZmlyZS1ydWxlc1xuICAgIChyZWR1Y2VcbiAgICAgKGZuXG4gICAgICBbc2Vzc2lvbiBbaWQgeCB5XV1cbiAgICAgIChvL2luc2VydCBzZXNzaW9uIGlkIHs6b2RveWxlLnJlYWRtZS94IHgsIDpvZG95bGUucmVhZG1lL3kgeX0pKVxuICAgICBzZXNzaW9uXG4gICAgIFtbMCAtMTAgMTBdXG4gICAgICBbMSAxMCAxMF1cbiAgICAgIFsyIDUwMCAyNV1cbiAgICAgIFszIDI1IDcwXVxuICAgICAgWzQgMjUgLTEwXVxuICAgICAgWzUgMjAgNTAwXV0pKSkpXG4gKHN3YXAhXG4gICpzZXNzaW9uXG4gIChmblxuICAgW3Nlc3Npb25dXG4gICAoLT5cbiAgICBzZXNzaW9uXG4gICAgKG8vaW5zZXJ0XG4gICAgIDpvZG95bGUucmVhZG1lL3dpbmRvd1xuICAgICB7Om9kb3lsZS5yZWFkbWUvd2lkdGggMTAwMCwgOm9kb3lsZS5yZWFkbWUvaGVpZ2h0IDEwMDB9KVxuICAgIG8vZmlyZS1ydWxlcykpKSlcbiJ9IHs6c3ltIHJ1bGVzLTUsIDptZXRhIHt9LCA6c291cmNlICIoZGVmXG4gcnVsZXMtNVxuIChvL3J1bGVzZXRcbiAgezpvZG95bGUucmVhZG1lL3BsYXllclxuICAgWzp3aGF0XG4gICAgWzpvZG95bGUucmVhZG1lL3BsYXllciA6b2RveWxlLnJlYWRtZS94IHhdXG4gICAgWzpvZG95bGUucmVhZG1lL3BsYXllciA6b2RveWxlLnJlYWRtZS95IHldXSxcbiAgIDpvZG95bGUucmVhZG1lL3N0b3AtcGxheWVyXG4gICBbOndoYXRcbiAgICBbOm9kb3lsZS5yZWFkbWUvcGxheWVyIDpvZG95bGUucmVhZG1lL3ggeF1cbiAgICBbOm9kb3lsZS5yZWFkbWUvd2luZG93IDpvZG95bGUucmVhZG1lL3dpZHRoIHdpbmRvdy13aWR0aF1cbiAgICA6d2hlblxuICAgICg+IHggd2luZG93LXdpZHRoKVxuICAgIDp0aGVuXG4gICAgKG8vaW5zZXJ0ISA6b2RveWxlLnJlYWRtZS9wbGF5ZXIgOm9kb3lsZS5yZWFkbWUveCB3aW5kb3ctd2lkdGgpXX0pKVxuIn0gezpzeW0gdGVzdC1kZXJpdmVkLWZhY3QhLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3J1bGVzXSl9LCA6c291cmNlICIoZGVmblxuIHRlc3QtZGVyaXZlZC1mYWN0IVxuIFtydWxlc11cbiAocmVzZXQhICpzZXNzaW9uIChyZWR1Y2Ugby9hZGQtcnVsZSAoby8tPnNlc3Npb24pIHJ1bGVzKSlcbiAoc3dhcCFcbiAgKnNlc3Npb25cbiAgKGZuXG4gICBbc2Vzc2lvbl1cbiAgIChvL2ZpcmUtcnVsZXNcbiAgICAocmVkdWNlXG4gICAgIChmblxuICAgICAgW3Nlc3Npb24gaWRdXG4gICAgICAoby9pbnNlcnRcbiAgICAgICBzZXNzaW9uXG4gICAgICAgaWRcbiAgICAgICB7Om9kb3lsZS5yZWFkbWUveCAocmFuZC1pbnQgNTApLFxuICAgICAgICA6b2RveWxlLnJlYWRtZS95IChyYW5kLWludCA1MCl9KSlcbiAgICAgc2Vzc2lvblxuICAgICAocmFuZ2UgNSkpKSkpXG4gKHN3YXAhXG4gICpzZXNzaW9uXG4gIChmblxuICAgW3Nlc3Npb25dXG4gICAoLT5cbiAgICBzZXNzaW9uXG4gICAgKG8vcmV0cmFjdCAwIDpvZG95bGUucmVhZG1lL3gpXG4gICAgKG8vcmV0cmFjdCAwIDpvZG95bGUucmVhZG1lL3kpXG4gICAgby9maXJlLXJ1bGVzKSkpKVxuIn0gezpzeW0gcnVsZSwgOm1ldGEge30sIDpzb3VyY2UgIihkZWZcbiBydWxlXG4gKG8vLT5ydWxlXG4gIDpvZG95bGUucmVhZG1lL2NoYXJhY3RlclxuICB7OndoYXQgJ1tbaWQgOm9kb3lsZS5yZWFkbWUveCB4XSBbaWQgOm9kb3lsZS5yZWFkbWUveSB5XV0sXG4gICA6d2hlblxuICAgKGZuIFtzZXNzaW9uIHs6a2V5cyBbeCB5XSwgOmFzIG1hdGNofV0gKGFuZCAocG9zPyB4KSAocG9zPyB5KSkpLFxuICAgOnRoZW4gKGZuIFtzZXNzaW9uIG1hdGNoXSAocHJpbnRsbiBcIlRoaXMgd2lsbCBmaXJlIHR3aWNlXCIpKSxcbiAgIDp0aGVuLWZpbmFsbHkgKGZuIFtzZXNzaW9uXSAocHJpbnRsbiBcIlRoaXMgd2lsbCBmaXJlIG9uY2VcIikpfSkpXG4ifSB7OnN5bSAqc2Vzc2lvbiwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgKnNlc3Npb24gKGF0b20gKHJlZHVjZSBvL2FkZC1ydWxlIChvLy0+c2Vzc2lvbikgcnVsZXMtMSkpKVxuIn0gezpzeW0gcnVsZXMtNCwgOm1ldGEge30sIDpzb3VyY2UgIihkZWZcbiBydWxlcy00XG4gKG8vcnVsZXNldFxuICB7Om9kb3lsZS5yZWFkbWUvcGxheWVyXG4gICBbOndoYXRcbiAgICBbOm9kb3lsZS5yZWFkbWUvcGxheWVyIDpvZG95bGUucmVhZG1lL3ggeF1cbiAgICBbOm9kb3lsZS5yZWFkbWUvcGxheWVyIDpvZG95bGUucmVhZG1lL3kgeV1dLFxuICAgOm9kb3lsZS5yZWFkbWUvbW92ZS1wbGF5ZXJcbiAgIFs6d2hhdFxuICAgIFs6b2RveWxlLnJlYWRtZS90aW1lIDpvZG95bGUucmVhZG1lL2RlbHRhIGR0XVxuICAgIFs6b2RveWxlLnJlYWRtZS9wbGF5ZXIgOm9kb3lsZS5yZWFkbWUveCB4IHs6dGhlbiBmYWxzZX1dXG4gICAgOnRoZW5cbiAgICAoby9pbnNlcnQhIDpvZG95bGUucmVhZG1lL3BsYXllciA6b2RveWxlLnJlYWRtZS94ICgrIHggZHQpKV19KSlcbiJ9IHs6c3ltIHdpdGhpbj8sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbezprZXlzIFt4IHldfSB3aW5kb3ctd2lkdGggd2luZG93LWhlaWdodF0pfSwgOnNvdXJjZSAiKGRlZm5cbiB3aXRoaW4/XG4gW3s6a2V5cyBbeCB5XX0gd2luZG93LXdpZHRoIHdpbmRvdy1oZWlnaHRdXG4gKGFuZCAoPj0geCAwKSAoPCB4IHdpbmRvdy13aWR0aCkgKD49IHkgMCkgKDwgeSB3aW5kb3ctaGVpZ2h0KSkpXG4ifSB7OnN5bSBydWxlcy0zLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZlxuIHJ1bGVzLTNcbiAoby9ydWxlc2V0XG4gIHs6b2RveWxlLnJlYWRtZS9wbGF5ZXJcbiAgIFs6d2hhdFxuICAgIFs6b2RveWxlLnJlYWRtZS9wbGF5ZXIgOm9kb3lsZS5yZWFkbWUveCB4XVxuICAgIFs6b2RveWxlLnJlYWRtZS9wbGF5ZXIgOm9kb3lsZS5yZWFkbWUveSB5XV0sXG4gICA6b2RveWxlLnJlYWRtZS9wcmludC1wbGF5ZXItd2hlbi10aW1lLXVwZGF0ZXNcbiAgIFs6d2hhdFxuICAgIFs6b2RveWxlLnJlYWRtZS90aW1lIDpvZG95bGUucmVhZG1lL3RvdGFsIHR0XVxuICAgIDp0aGVuXG4gICAgKHByaW50bG5cbiAgICAgXCJRdWVyeSBmcm9tIGluc2lkZSBydWxlOlwiXG4gICAgIChvL3F1ZXJ5LWFsbCBzZXNzaW9uIDpvZG95bGUucmVhZG1lL3BsYXllcikpXX0pKVxuIn0gezpzeW0gLT5jaGFyYWN0ZXItcnVsZSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtpZF0pfSwgOnNvdXJjZSAiKGRlZm5cbiAtPmNoYXJhY3Rlci1ydWxlXG4gW2lkXVxuIChvLy0+cnVsZVxuICBpZFxuICB7OndoYXQgW1tpZCA6b2RveWxlLnJlYWRtZS94ICd4XSBbaWQgOm9kb3lsZS5yZWFkbWUveSAneV1dfSkpXG4ifSB7OnN5bSBydWxlcy02LCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZlxuIHJ1bGVzLTZcbiAoby9ydWxlc2V0XG4gIHs6b2RveWxlLnJlYWRtZS9jaGFyYWN0ZXJcbiAgIFs6d2hhdCBbaWQgOm9kb3lsZS5yZWFkbWUveCB4XSBbaWQgOm9kb3lsZS5yZWFkbWUveSB5XV19KSlcbiJ9IHs6c3ltIHJ1bGVzLTEsIDptZXRhIHt9LCA6c291cmNlICIoZGVmXG4gcnVsZXMtMVxuIChvL3J1bGVzZXRcbiAgezpvZG95bGUucmVhZG1lL3ByaW50LXRpbWVcbiAgIFs6d2hhdFxuICAgIFs6b2RveWxlLnJlYWRtZS90aW1lIDpvZG95bGUucmVhZG1lL3RvdGFsIHR0XVxuICAgIDp0aGVuXG4gICAgKHByaW50bG4gdHQpXX0pKVxuIn0gezpzeW0gcnVsZXMtMiwgOm1ldGEge30sIDpzb3VyY2UgIihkZWZcbiBydWxlcy0yXG4gKG8vcnVsZXNldFxuICB7Om9kb3lsZS5yZWFkbWUvbW92ZS1wbGF5ZXJcbiAgIFs6d2hhdFxuICAgIFs6b2RveWxlLnJlYWRtZS90aW1lIDpvZG95bGUucmVhZG1lL3RvdGFsIHR0XVxuICAgIDp0aGVuXG4gICAgKG8vaW5zZXJ0ISA6b2RveWxlLnJlYWRtZS9wbGF5ZXIgOm9kb3lsZS5yZWFkbWUveCB0dCldfSkpXG4ifSksIGZpcHAudmlzaXQgKHs6c3ltIHZpc2l0LXJlY29yZCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt0aGlzIHhdKX0sIDpwcm90b2NvbCBJVmlzaXRvcn0gezpzeW0gdmlzaXQtbWV0YSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt0aGlzIG1ldGEgeF0pfSwgOnByb3RvY29sIElWaXNpdG9yfSB7OnN5bSB2aXNpdC1udW1iZXIsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbdGhpcyB4XSl9LCA6cHJvdG9jb2wgSVZpc2l0b3J9IHs6c3ltIHZpc2l0LXBhdHRlcm4sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbdGhpcyB4XSl9LCA6cHJvdG9jb2wgSVZpc2l0b3J9IHs6c3ltIHZpc2l0LXVua25vd24sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbdGhpcyB4XSl9LCA6cHJvdG9jb2wgSVZpc2l0b3J9IHs6c3ltIElWaXNpdG9yLCA6bWV0YSB7OmRvYyBuaWx9LCA6bWV0aG9kcyAodmlzaXQtYm9vbGVhbiB2aXNpdC1jaGFyYWN0ZXIgdmlzaXQta2V5d29yZCB2aXNpdC1tYXAgdmlzaXQtbWV0YSB2aXNpdC1uaWwgdmlzaXQtbnVtYmVyIHZpc2l0LXBhdHRlcm4gdmlzaXQtcmVjb3JkIHZpc2l0LXNlcSB2aXNpdC1zZXQgdmlzaXQtc3RyaW5nIHZpc2l0LXN5bWJvbCB2aXNpdC10YWdnZWQgdmlzaXQtdW5rbm93biB2aXNpdC12YXIgdmlzaXQtdmVjdG9yKX0gezpzeW0gdmFsdWUtbWV0YSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmbiB2YWx1ZS1tZXRhIFt4XSAod2hlbiAodXRpbC92YWx1ZS1vYmo/IHgpIChtZXRhIHgpKSlcbiJ9IHs6c3ltIHZpc2l0LXN5bWJvbCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt0aGlzIHhdKX0sIDpwcm90b2NvbCBJVmlzaXRvcn0gezpzeW0gdmlzaXQtc2VxLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3RoaXMgeF0pfSwgOnByb3RvY29sIElWaXNpdG9yfSB7OnN5bSB2aXNpdC1ib29sZWFuLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3RoaXMgeF0pfSwgOnByb3RvY29sIElWaXNpdG9yfSB7OnN5bSB2aXNpdC10YWdnZWQsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbdGhpcyB4XSl9LCA6cHJvdG9jb2wgSVZpc2l0b3J9IHs6c3ltIHZpc2l0LWtleXdvcmQsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbdGhpcyB4XSl9LCA6cHJvdG9jb2wgSVZpc2l0b3J9IHs6c3ltIHZpc2l0LW1hcCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt0aGlzIHhdKX0sIDpwcm90b2NvbCBJVmlzaXRvcn0gezpzeW0gdmlzaXQqLCA6bWV0YSB7OmRvYyAiVmlzaXRzIG9iamVjdHMsIGlnbm9yaW5nIG1ldGFkYXRhLiIsIDphcmdsaXN0cyAoW3Zpc2l0b3IgeF0pfSwgOnNvdXJjZSAiKGRlZm5cbiB2aXNpdCpcbiBcIlZpc2l0cyBvYmplY3RzLCBpZ25vcmluZyBtZXRhZGF0YS5cIlxuIFt2aXNpdG9yIHhdXG4gKGNvbmRcbiAgKG5pbD8geClcbiAgKHZpc2l0LW5pbCB2aXNpdG9yKVxuICAob3ZlcnJpZGU/IHgpXG4gICh2aXNpdC11bmtub3duIHZpc2l0b3IgeClcbiAgKHV0aWwvYm9vbGVhbj8geClcbiAgKHZpc2l0LWJvb2xlYW4gdmlzaXRvciB4KVxuICAoc3RyaW5nPyB4KVxuICAodmlzaXQtc3RyaW5nIHZpc2l0b3IgeClcbiAgKHV0aWwvY2hhcj8geClcbiAgKHZpc2l0LWNoYXJhY3RlciB2aXNpdG9yIHgpXG4gIChzeW1ib2w/IHgpXG4gICh2aXNpdC1zeW1ib2wgdmlzaXRvciB4KVxuICAoa2V5d29yZD8geClcbiAgKHZpc2l0LWtleXdvcmQgdmlzaXRvciB4KVxuICAobnVtYmVyPyB4KVxuICAodmlzaXQtbnVtYmVyIHZpc2l0b3IgeClcbiAgKHNlcT8geClcbiAgKHZpc2l0LXNlcSB2aXNpdG9yIHgpXG4gICh2ZWN0b3I/IHgpXG4gICh2aXNpdC12ZWN0b3IgdmlzaXRvciB4KVxuICAocmVjb3JkPyB4KVxuICAodmlzaXQtcmVjb3JkIHZpc2l0b3IgeClcbiAgKG1hcD8geClcbiAgKHZpc2l0LW1hcCB2aXNpdG9yIHgpXG4gIChzZXQ/IHgpXG4gICh2aXNpdC1zZXQgdmlzaXRvciB4KVxuICAodGFnZ2VkLWxpdGVyYWw/IHgpXG4gICh2aXNpdC10YWdnZWQgdmlzaXRvciB4KVxuICAodmFyPyB4KVxuICAodmlzaXQtdmFyIHZpc2l0b3IgeClcbiAgKHV0aWwvcmVnZXhwPyB4KVxuICAodmlzaXQtcGF0dGVybiB2aXNpdG9yIHgpXG4gIDplbHNlXG4gICh2aXNpdC11bmtub3duIHZpc2l0b3IgeCkpKVxuIn0gezpzeW0gdmlzaXQtbmlsLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3RoaXNdKX0sIDpwcm90b2NvbCBJVmlzaXRvcn0gezpzeW0gdmlzaXQtY2hhcmFjdGVyLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3RoaXMgeF0pfSwgOnByb3RvY29sIElWaXNpdG9yfSB7OnN5bSB2aXNpdCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt2aXNpdG9yIHhdKX0sIDpzb3VyY2UgIihkZWZuXG4gdmlzaXRcbiBbdmlzaXRvciB4XVxuIChpZi1sZXRcbiAgW20gKHZhbHVlLW1ldGEgeCldXG4gICh2aXNpdC1tZXRhIHZpc2l0b3IgbSB4KVxuICAodmlzaXQqIHZpc2l0b3IgeCkpKVxuIn0gezpzeW0gdmlzaXQtc3RyaW5nLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3RoaXMgeF0pfSwgOnByb3RvY29sIElWaXNpdG9yfSB7OnN5bSB2aXNpdC12YXIsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbdGhpcyB4XSl9LCA6cHJvdG9jb2wgSVZpc2l0b3J9IHs6c3ltIHZpc2l0LXNldCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt0aGlzIHhdKX0sIDpwcm90b2NvbCBJVmlzaXRvcn0gezpzeW0gdmlzaXQtdmVjdG9yLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3RoaXMgeF0pfSwgOnByb3RvY29sIElWaXNpdG9yfSksIGRldnRvb2xzLnRvb2xib3ggKHs6c3ltIGVudmVsb3BlLCA6bWV0YSB7OmRvYyAiVGhpcyBpcyBhIHNpbXBsZSB3cmFwcGVyIGZvciBsb2dnaW5nIFwiYnVzeVwiIG9iamVjdHMuXG4gIFRoaXMgaXMgZXNwZWNpYWxseSBoYW5keSB3aGVuIHlvdSBoYXBwZW4gdG8gYmUgbG9nZ2luZyBqYXZhc2NyaXB0IG9iamVjdHMgd2l0aCBtYW55IHByb3BlcnRpZXMuXG4gIFN0YW5kYXJkIGphdmFzY3JpcHQgY29uc29sZSByZW5kZXJlciB0ZW5kcyB0byBwcmludCBhIGxvdCBvZiBpbmZvbWF0aW9uIGluIHRoZSBoZWFkZXIgaW4gc29tZSBjYXNlcyBhbmQgdGhhdCBjYW4gbWFrZVxuICBjb25zb2xlIG91dHB1dCBwcmV0dHkgYnVzeS4gQnkgdXNpbmcgZW52ZWxvcGUgeW91IGNhbiBmb3JjZSB5b3VyIG93biBzaG9ydCBoZWFkZXIgYW5kIGxldCB0aGUgZGV0YWlscyBleHBhbmQgb24gZGVtYW5kXG4gIHZpYSBkaXNjbG9zdXJlIHRyaWFuZ2xlLiBUaGUgaGVhZGVyIGNhbiBiZSBzdHlsZWQgYW5kIHlvdSBjYW4gb3B0aW9uYWxseSBzcGVjaWZ5IHByZWZlcnJlZCB3cmFwcGluZyB0YWcgKGFkdmFuY2VkKS4iLCA6YXJnbGlzdHMgW1tvYmpdIFtvYmogaGVhZGVyXSBbb2JqIGhlYWRlciBzdHlsZV0gW29iaiBoZWFkZXIgc3R5bGUgdGFnXV19LCA6c291cmNlICIoZGVmblxuIGVudmVsb3BlXG4gXCJUaGlzIGlzIGEgc2ltcGxlIHdyYXBwZXIgZm9yIGxvZ2dpbmcgXFxcImJ1c3lcXFwiIG9iamVjdHMuXFxuICBUaGlzIGlzIGVzcGVjaWFsbHkgaGFuZHkgd2hlbiB5b3UgaGFwcGVuIHRvIGJlIGxvZ2dpbmcgamF2YXNjcmlwdCBvYmplY3RzIHdpdGggbWFueSBwcm9wZXJ0aWVzLlxcbiAgU3RhbmRhcmQgamF2YXNjcmlwdCBjb25zb2xlIHJlbmRlcmVyIHRlbmRzIHRvIHByaW50IGEgbG90IG9mIGluZm9tYXRpb24gaW4gdGhlIGhlYWRlciBpbiBzb21lIGNhc2VzIGFuZCB0aGF0IGNhbiBtYWtlXFxuICBjb25zb2xlIG91dHB1dCBwcmV0dHkgYnVzeS4gQnkgdXNpbmcgZW52ZWxvcGUgeW91IGNhbiBmb3JjZSB5b3VyIG93biBzaG9ydCBoZWFkZXIgYW5kIGxldCB0aGUgZGV0YWlscyBleHBhbmQgb24gZGVtYW5kXFxuICB2aWEgZGlzY2xvc3VyZSB0cmlhbmdsZS4gVGhlIGhlYWRlciBjYW4gYmUgc3R5bGVkIGFuZCB5b3UgY2FuIG9wdGlvbmFsbHkgc3BlY2lmeSBwcmVmZXJyZWQgd3JhcHBpbmcgdGFnIChhZHZhbmNlZCkuXCJcbiAoW29ial0gKGVudmVsb3BlIG9iaiA6ZGVmYXVsdC1lbnZlbG9wZS1oZWFkZXIpKVxuIChbb2JqIGhlYWRlcl0gKGVudmVsb3BlIG9iaiBoZWFkZXIgOmRlZmF1bHQtZW52ZWxvcGUtc3R5bGUpKVxuIChbb2JqIGhlYWRlciBzdHlsZV0gKGVudmVsb3BlIG9iaiBoZWFkZXIgc3R5bGUgOnNwYW4pKVxuIChbb2JqIGhlYWRlciBzdHlsZSB0YWddXG4gIChyZWlmeVxuICAgSUZvcm1hdFxuICAgKC1oZWFkZXJcbiAgICBbX11cbiAgICAocmVuZGVyLW1hcmt1cFxuICAgICBbW3RhZyBzdHlsZV0gKGlmIChmbj8gaGVhZGVyKSAoaGVhZGVyIG9iaikgaGVhZGVyKV0pKVxuICAgKC1oYXMtYm9keSBbX10gdHJ1ZSlcbiAgICgtYm9keVxuICAgIFtfXVxuICAgIChyZW5kZXItbWFya3VwICg8Ym9keT4gKDxzdGFuZGFyZC1ib2R5LXJlZmVyZW5jZT4gb2JqKSkpKSkpKVxuIn0gezpzeW0gZm9yY2UtZm9ybWF0LCA6bWV0YSB7OmRvYyAiRm9yY2VzIG9iamVjdCB0byBiZSByZW5kZXJlZCBieSBjbGpzLWRldnRvb2xzIGR1cmluZyBjb25zb2xlIGxvZ2dpbmcuXG5cbiAgVW5mb3J0dW5hdGVseSBjdXN0b20gZm9ybWF0dGVycyBzdWJzeXN0ZW0gaW4gRGV2VG9vbHMgaXMgbm90IGFwcGxpZWQgdG8gcHJpbWl0aXZlIHZhbHVlcyBsaWtlIG51bWJlcnMsIHN0cmluZ3MsIG51bGwsIGV0Yy5cbiAgVGhpcyB3cmFwcGVyIGNhbiBiZSB1c2VkIGFzIGEgd29ya2Fyb3VuZCBpZiB5b3UgcmVhbGx5IG5lZWQgdG8gZm9yY2UgY2xqcy1kZXZ0b29scyByZW5kZXJpbmc6XG5cbiAgICAoLmxvZyBqcy9jb25zb2xlIG5pbCkgOyB3aWxsIHJlbmRlciAnbnVsbCdcbiAgICAoLmxvZyBqcy9jb25zb2xlIChmb3JjZS1mb3JtYXQgbmlsKSkgOyB3aWxsIHJlbmRlciAnbmlsJyBhbmQgbm90ICdudWxsJ1xuXG4gIFNlZSBodHRwczovL2dpdGh1Yi5jb20vYmluYXJ5YWdlL2NsanMtZGV2dG9vbHMvaXNzdWVzLzE3XG4gICIsIDphcmdsaXN0cyAoW29ial0pfSwgOnNvdXJjZSAiKGRlZm5cbiBmb3JjZS1mb3JtYXRcbiBcIkZvcmNlcyBvYmplY3QgdG8gYmUgcmVuZGVyZWQgYnkgY2xqcy1kZXZ0b29scyBkdXJpbmcgY29uc29sZSBsb2dnaW5nLlxcblxcbiAgVW5mb3J0dW5hdGVseSBjdXN0b20gZm9ybWF0dGVycyBzdWJzeXN0ZW0gaW4gRGV2VG9vbHMgaXMgbm90IGFwcGxpZWQgdG8gcHJpbWl0aXZlIHZhbHVlcyBsaWtlIG51bWJlcnMsIHN0cmluZ3MsIG51bGwsIGV0Yy5cXG4gIFRoaXMgd3JhcHBlciBjYW4gYmUgdXNlZCBhcyBhIHdvcmthcm91bmQgaWYgeW91IHJlYWxseSBuZWVkIHRvIGZvcmNlIGNsanMtZGV2dG9vbHMgcmVuZGVyaW5nOlxcblxcbiAgICAoLmxvZyBqcy9jb25zb2xlIG5pbCkgOyB3aWxsIHJlbmRlciAnbnVsbCdcXG4gICAgKC5sb2cganMvY29uc29sZSAoZm9yY2UtZm9ybWF0IG5pbCkpIDsgd2lsbCByZW5kZXIgJ25pbCcgYW5kIG5vdCAnbnVsbCdcXG5cXG4gIFNlZSBodHRwczovL2dpdGh1Yi5jb20vYmluYXJ5YWdlL2NsanMtZGV2dG9vbHMvaXNzdWVzLzE3XFxuICBcIlxuIFtvYmpdXG4gKHJlbmRlci1tYXJrdXAgKDxzdXJyb2dhdGU+IG9iaikpKVxuIn0pLCBjbG9qdXJlLmNvcmUucnJiLXZlY3Rvci5wcm90b2NvbHMgKHs6c3ltIC1zcGxpY2V2LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3YxIHYyXSl9LCA6cHJvdG9jb2wgUFNwbGljZWFibGVWZWN0b3J9IHs6c3ltIFBTcGxpY2VhYmxlVmVjdG9yLCA6bWV0YSB7OmRvYyBuaWx9LCA6bWV0aG9kcyAoLXNwbGljZXYpfSB7OnN5bSAtc2xpY2V2LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3Ygc3RhcnQgZW5kXSl9LCA6cHJvdG9jb2wgUFNsaWNlYWJsZVZlY3Rvcn0gezpzeW0gUFNsaWNlYWJsZVZlY3RvciwgOm1ldGEgezpkb2MgbmlsfSwgOm1ldGhvZHMgKC1zbGljZXYpfSksIGNsanMudG9vbHMucmVhZGVyLmVkbiAoezpzeW0gcmVhZCwgOm1ldGEgezpkb2MgIlJlYWRzIHRoZSBmaXJzdCBvYmplY3QgZnJvbSBhbiBJUHVzaGJhY2tSZWFkZXIuXG4gICBSZXR1cm5zIHRoZSBvYmplY3QgcmVhZC4gSWYgRU9GLCB0aHJvd3MgaWYgZW9mLWVycm9yPyBpcyB0cnVlIG90aGVyd2lzZSByZXR1cm5zIGVvZi5cbiAgIElmIG5vIHJlYWRlciBpcyBwcm92aWRlZCwgKmluKiB3aWxsIGJlIHVzZWQuXG5cbiAgIFJlYWRzIGRhdGEgaW4gdGhlIGVkbiBmb3JtYXQgKHN1YnNldCBvZiBDbG9qdXJlIGRhdGEpOlxuICAgaHR0cDovL2Vkbi1mb3JtYXQub3JnXG5cbiAgIGNsanMudG9vbHMucmVhZGVyLmVkbi9yZWFkIGRvZXNuJ3QgZGVwZW5kIG9uIGR5bmFtaWMgVmFycywgYWxsIGNvbmZpZ3VyYXRpb25cbiAgIGlzIGRvbmUgYnkgcGFzc2luZyBhbiBvcHQgbWFwLlxuXG4gICBvcHRzIGlzIGEgbWFwIHRoYXQgY2FuIGluY2x1ZGUgdGhlIGZvbGxvd2luZyBrZXlzOlxuICAgOmVvZiAtIHZhbHVlIHRvIHJldHVybiBvbiBlbmQtb2YtZmlsZS4gV2hlbiBub3Qgc3VwcGxpZWQsIGVvZiB0aHJvd3MgYW4gZXhjZXB0aW9uLlxuICAgOnJlYWRlcnMgIC0gYSBtYXAgb2YgdGFnIHN5bWJvbHMgdG8gZGF0YS1yZWFkZXIgZnVuY3Rpb25zIHRvIGJlIGNvbnNpZGVyZWQgYmVmb3JlIGRlZmF1bHQtZGF0YS1yZWFkZXJzLlxuICAgICAgICAgICAgICBXaGVuIG5vdCBzdXBwbGllZCwgb25seSB0aGUgZGVmYXVsdC1kYXRhLXJlYWRlcnMgd2lsbCBiZSB1c2VkLlxuICAgOmRlZmF1bHQgLSBBIGZ1bmN0aW9uIG9mIHR3byBhcmdzLCB0aGF0IHdpbGwsIGlmIHByZXNlbnQgYW5kIG5vIHJlYWRlciBpcyBmb3VuZCBmb3IgYSB0YWcsXG4gICAgICAgICAgICAgIGJlIGNhbGxlZCB3aXRoIHRoZSB0YWcgYW5kIHRoZSB2YWx1ZS4iLCA6YXJnbGlzdHMgW1tyZWFkZXJdIFt7OmtleXMgW2VvZl0sIDphcyBvcHRzfSByZWFkZXJdIFtyZWFkZXIgZW9mLWVycm9yPyBlb2Ygb3B0c11dfSwgOnNvdXJjZSAiKGRlZm5cbiByZWFkXG4gXCJSZWFkcyB0aGUgZmlyc3Qgb2JqZWN0IGZyb20gYW4gSVB1c2hiYWNrUmVhZGVyLlxcbiAgIFJldHVybnMgdGhlIG9iamVjdCByZWFkLiBJZiBFT0YsIHRocm93cyBpZiBlb2YtZXJyb3I/IGlzIHRydWUgb3RoZXJ3aXNlIHJldHVybnMgZW9mLlxcbiAgIElmIG5vIHJlYWRlciBpcyBwcm92aWRlZCwgKmluKiB3aWxsIGJlIHVzZWQuXFxuXFxuICAgUmVhZHMgZGF0YSBpbiB0aGUgZWRuIGZvcm1hdCAoc3Vic2V0IG9mIENsb2p1cmUgZGF0YSk6XFxuICAgaHR0cDovL2Vkbi1mb3JtYXQub3JnXFxuXFxuICAgY2xqcy50b29scy5yZWFkZXIuZWRuL3JlYWQgZG9lc24ndCBkZXBlbmQgb24gZHluYW1pYyBWYXJzLCBhbGwgY29uZmlndXJhdGlvblxcbiAgIGlzIGRvbmUgYnkgcGFzc2luZyBhbiBvcHQgbWFwLlxcblxcbiAgIG9wdHMgaXMgYSBtYXAgdGhhdCBjYW4gaW5jbHVkZSB0aGUgZm9sbG93aW5nIGtleXM6XFxuICAgOmVvZiAtIHZhbHVlIHRvIHJldHVybiBvbiBlbmQtb2YtZmlsZS4gV2hlbiBub3Qgc3VwcGxpZWQsIGVvZiB0aHJvd3MgYW4gZXhjZXB0aW9uLlxcbiAgIDpyZWFkZXJzICAtIGEgbWFwIG9mIHRhZyBzeW1ib2xzIHRvIGRhdGEtcmVhZGVyIGZ1bmN0aW9ucyB0byBiZSBjb25zaWRlcmVkIGJlZm9yZSBkZWZhdWx0LWRhdGEtcmVhZGVycy5cXG4gICAgICAgICAgICAgIFdoZW4gbm90IHN1cHBsaWVkLCBvbmx5IHRoZSBkZWZhdWx0LWRhdGEtcmVhZGVycyB3aWxsIGJlIHVzZWQuXFxuICAgOmRlZmF1bHQgLSBBIGZ1bmN0aW9uIG9mIHR3byBhcmdzLCB0aGF0IHdpbGwsIGlmIHByZXNlbnQgYW5kIG5vIHJlYWRlciBpcyBmb3VuZCBmb3IgYSB0YWcsXFxuICAgICAgICAgICAgICBiZSBjYWxsZWQgd2l0aCB0aGUgdGFnIGFuZCB0aGUgdmFsdWUuXCJcbiAoW3JlYWRlcl0gKHJlYWQge30gcmVhZGVyKSlcbiAoW3s6a2V5cyBbZW9mXSwgOmFzIG9wdHN9IHJlYWRlcl1cbiAgKGxldFxuICAgW2VvZi1lcnJvcj8gKG5vdCAoY29udGFpbnM/IG9wdHMgOmVvZikpXVxuICAgKHJlYWQgcmVhZGVyIGVvZi1lcnJvcj8gZW9mIG9wdHMpKSlcbiAoW3JlYWRlciBlb2YtZXJyb3I/IGVvZiBvcHRzXVxuICAodHJ5XG4gICAobG9vcFxuICAgIFtdXG4gICAgKGxldFxuICAgICBbY2ggKHJlYWQtY2hhciByZWFkZXIpXVxuICAgICAoY29uZFxuICAgICAgKHdoaXRlc3BhY2U/IGNoKVxuICAgICAgKHJlY3VyKVxuICAgICAgKG5pbD8gY2gpXG4gICAgICAoaWYgZW9mLWVycm9yPyAoZXJyL3Rocm93LWVvZi1lcnJvciByZWFkZXIgbmlsKSBlb2YpXG4gICAgICAobnVtYmVyLWxpdGVyYWw/IHJlYWRlciBjaClcbiAgICAgIChyZWFkLW51bWJlciByZWFkZXIgY2ggb3B0cylcbiAgICAgIDplbHNlXG4gICAgICAobGV0XG4gICAgICAgW2YgKG1hY3JvcyBjaCldXG4gICAgICAgKGlmXG4gICAgICAgIGZcbiAgICAgICAgKGxldFxuICAgICAgICAgW3JlcyAoZiByZWFkZXIgY2ggb3B0cyldXG4gICAgICAgICAoaWYgKGlkZW50aWNhbD8gcmVzIHJlYWRlcikgKHJlY3VyKSByZXMpKVxuICAgICAgICAocmVhZC1zeW1ib2wgcmVhZGVyIGNoKSkpKSkpXG4gICAoY2F0Y2hcbiAgICBqcy9FcnJvclxuICAgIGVcbiAgICAoaWZcbiAgICAgKGV4LWluZm8/IGUpXG4gICAgIChsZXRcbiAgICAgIFtkIChleC1kYXRhIGUpXVxuICAgICAgKGlmXG4gICAgICAgKD0gOnJlYWRlci1leGNlcHRpb24gKDp0eXBlIGQpKVxuICAgICAgICh0aHJvdyBlKVxuICAgICAgICh0aHJvd1xuICAgICAgICAoZXgtaW5mb1xuICAgICAgICAgKC4tbWVzc2FnZSBlKVxuICAgICAgICAgKG1lcmdlXG4gICAgICAgICAgezp0eXBlIDpyZWFkZXItZXhjZXB0aW9ufVxuICAgICAgICAgIGRcbiAgICAgICAgICAoaWZcbiAgICAgICAgICAgKGluZGV4aW5nLXJlYWRlcj8gcmVhZGVyKVxuICAgICAgICAgICB7OmxpbmUgKGdldC1saW5lLW51bWJlciByZWFkZXIpLFxuICAgICAgICAgICAgOmNvbHVtbiAoZ2V0LWNvbHVtbi1udW1iZXIgcmVhZGVyKSxcbiAgICAgICAgICAgIDpmaWxlIChnZXQtZmlsZS1uYW1lIHJlYWRlcil9KSlcbiAgICAgICAgIGUpKSkpXG4gICAgICh0aHJvd1xuICAgICAgKGV4LWluZm9cbiAgICAgICAoLi1tZXNzYWdlIGUpXG4gICAgICAgKG1lcmdlXG4gICAgICAgIHs6dHlwZSA6cmVhZGVyLWV4Y2VwdGlvbn1cbiAgICAgICAgKGlmXG4gICAgICAgICAoaW5kZXhpbmctcmVhZGVyPyByZWFkZXIpXG4gICAgICAgICB7OmxpbmUgKGdldC1saW5lLW51bWJlciByZWFkZXIpLFxuICAgICAgICAgIDpjb2x1bW4gKGdldC1jb2x1bW4tbnVtYmVyIHJlYWRlciksXG4gICAgICAgICAgOmZpbGUgKGdldC1maWxlLW5hbWUgcmVhZGVyKX0pKVxuICAgICAgIGUpKSkpKSkpXG4ifSB7OnN5bSByZWFkLXN0cmluZywgOm1ldGEgezpkb2MgIlJlYWRzIG9uZSBvYmplY3QgZnJvbSB0aGUgc3RyaW5nIHMuXG4gICBSZXR1cm5zIG5pbCB3aGVuIHMgaXMgbmlsIG9yIGVtcHR5LlxuXG4gICBSZWFkcyBkYXRhIGluIHRoZSBlZG4gZm9ybWF0IChzdWJzZXQgb2YgQ2xvanVyZSBkYXRhKTpcbiAgIGh0dHA6Ly9lZG4tZm9ybWF0Lm9yZ1xuXG4gICBvcHRzIGlzIGEgbWFwIGFzIHBlciBjbGpzLnRvb2xzLnJlYWRlci5lZG4vcmVhZCIsIDphcmdsaXN0cyBbW3NdIFtvcHRzIHNdXX0sIDpzb3VyY2UgIihkZWZuXG4gcmVhZC1zdHJpbmdcbiBcIlJlYWRzIG9uZSBvYmplY3QgZnJvbSB0aGUgc3RyaW5nIHMuXFxuICAgUmV0dXJucyBuaWwgd2hlbiBzIGlzIG5pbCBvciBlbXB0eS5cXG5cXG4gICBSZWFkcyBkYXRhIGluIHRoZSBlZG4gZm9ybWF0IChzdWJzZXQgb2YgQ2xvanVyZSBkYXRhKTpcXG4gICBodHRwOi8vZWRuLWZvcm1hdC5vcmdcXG5cXG4gICBvcHRzIGlzIGEgbWFwIGFzIHBlciBjbGpzLnRvb2xzLnJlYWRlci5lZG4vcmVhZFwiXG4gKFtzXSAocmVhZC1zdHJpbmcgezplb2YgbmlsfSBzKSlcbiAoW29wdHMgc11cbiAgKHdoZW4gKGFuZCBzIChub3Q9IHMgXCJcIikpIChyZWFkIG9wdHMgKHN0cmluZy1wdXNoLWJhY2stcmVhZGVyIHMpKSkpKVxuIn0pLCBjbGpzLnNvdXJjZS1tYXAuYmFzZTY0LXZscSAoezpzeW0gZW5jb2RlLXZhbCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtuXSl9LCA6c291cmNlICIoZGVmblxuIGVuY29kZS12YWxcbiBbbl1cbiAobGV0XG4gIFtzYiAoU3RyaW5nQnVmZmVyLikgdmxxICh0by12bHEtc2lnbmVkIG4pXVxuICAobG9vcFxuICAgW2RpZ2l0XG4gICAgKGJpdC1hbmQgdmxxIHZscS1iYXNlLW1hc2spXG4gICAgdmxxXG4gICAgKGJpdC1zaGlmdC1yaWdodC16ZXJvLWZpbGwgdmxxIHZscS1iYXNlLXNoaWZ0KV1cbiAgIChpZlxuICAgIChwb3M/IHZscSlcbiAgICAobGV0XG4gICAgIFtkaWdpdCAoYml0LW9yIGRpZ2l0IHZscS1jb250aW51YXRpb24tYml0KV1cbiAgICAgKC5hcHBlbmQgc2IgKGJhc2U2NC9lbmNvZGUgZGlnaXQpKVxuICAgICAocmVjdXJcbiAgICAgIChiaXQtYW5kIHZscSB2bHEtYmFzZS1tYXNrKVxuICAgICAgKGJpdC1zaGlmdC1yaWdodC16ZXJvLWZpbGwgdmxxIHZscS1iYXNlLXNoaWZ0KSkpXG4gICAgKC5hcHBlbmQgc2IgKGJhc2U2NC9lbmNvZGUgZGlnaXQpKSkpXG4gIChzdHIgc2IpKSlcbiJ9IHs6c3ltIGVuY29kZSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt2XSl9LCA6c291cmNlICIoZGVmbiBlbmNvZGUgW3ZdIChhcHBseSBzdHIgKG1hcCBlbmNvZGUtdmFsIHYpKSlcbiJ9IHs6c3ltIHZscS1jb250aW51YXRpb24tYml0LCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiB2bHEtY29udGludWF0aW9uLWJpdCB2bHEtYmFzZSlcbiJ9IHs6c3ltIHZscS1iYXNlLW1hc2ssIDptZXRhIHt9LCA6c291cmNlICIoZGVmIHZscS1iYXNlLW1hc2sgKGRlYyB2bHEtYmFzZSkpXG4ifSB7OnN5bSBkZWNvZGUsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbc10pfSwgOnNvdXJjZSAiKGRlZm5cbiBkZWNvZGVcbiBbc11cbiAobGV0XG4gIFtsICguLWxlbmd0aCBzKV1cbiAgKGxvb3BcbiAgIFtpIDAgcmVzdWx0IDAgc2hpZnQgMF1cbiAgICh3aGVuXG4gICAgKD49IGkgbClcbiAgICAodGhyb3cgKGpzL0Vycm9yLiBcIkV4cGVjdGVkIG1vcmUgZGlnaXRzIGluIGJhc2UgNjQgVkxRIHZhbHVlLlwiKSkpXG4gICAobGV0XG4gICAgW2RpZ2l0IChiYXNlNjQvZGVjb2RlICguY2hhckF0IHMgaSkpXVxuICAgIChsZXRcbiAgICAgW2lcbiAgICAgIChpbmMgaSlcbiAgICAgIGNvbnRpbnVhdGlvbj9cbiAgICAgIChwb3M/IChiaXQtYW5kIGRpZ2l0IHZscS1jb250aW51YXRpb24tYml0KSlcbiAgICAgIGRpZ2l0XG4gICAgICAoYml0LWFuZCBkaWdpdCB2bHEtYmFzZS1tYXNrKVxuICAgICAgcmVzdWx0XG4gICAgICAoKyByZXN1bHQgKGJpdC1zaGlmdC1sZWZ0IGRpZ2l0IHNoaWZ0KSlcbiAgICAgIHNoaWZ0XG4gICAgICAoKyBzaGlmdCB2bHEtYmFzZS1zaGlmdCldXG4gICAgIChpZlxuICAgICAgY29udGludWF0aW9uP1xuICAgICAgKHJlY3VyIGkgcmVzdWx0IHNoaWZ0KVxuICAgICAgKGxhenktc2VxXG4gICAgICAgKGNvbnNcbiAgICAgICAgKGZyb20tdmxxLXNpZ25lZCByZXN1bHQpXG4gICAgICAgIChsZXRcbiAgICAgICAgIFtzICguc3Vic3RyaW5nIHMgaSldXG4gICAgICAgICAod2hlbi1ub3QgKHN0cmluZy9ibGFuaz8gcykgKGRlY29kZSBzKSkpKSkpKSkpKSlcbiJ9IHs6c3ltIHZscS1iYXNlLXNoaWZ0LCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiB2bHEtYmFzZS1zaGlmdCA1KVxuIn0gezpzeW0gZnJvbS12bHEtc2lnbmVkLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3ZdKX0sIDpzb3VyY2UgIihkZWZuXG4gZnJvbS12bHEtc2lnbmVkXG4gW3ZdXG4gKGxldFxuICBbbmVnPyAoPSAoYml0LWFuZCB2IDEpIDEpIHNoaWZ0ZWQgKGJpdC1zaGlmdC1yaWdodCB2IDEpXVxuICAoaWYgbmVnPyAoLSBzaGlmdGVkKSBzaGlmdGVkKSkpXG4ifSB7OnN5bSB0by12bHEtc2lnbmVkLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3ZdKX0sIDpzb3VyY2UgIihkZWZuXG4gdG8tdmxxLXNpZ25lZFxuIFt2XVxuIChpZlxuICAobmVnPyB2KVxuICAoaW5jIChiaXQtc2hpZnQtbGVmdCAoLSB2KSAxKSlcbiAgKCsgKGJpdC1zaGlmdC1sZWZ0IHYgMSkgMCkpKVxuIn0gezpzeW0gdmxxLWJhc2UsIDptZXRhIHt9LCA6c291cmNlICIoZGVmIHZscS1iYXNlIChiaXQtc2hpZnQtbGVmdCAxIHZscS1iYXNlLXNoaWZ0KSlcbiJ9KSwgZXhwb3VuZC5hbnNpICh7OnN5bSBzZ3ItY29kZSwgOm1ldGEge30sIDpzb3VyY2UgIihkZWZcbiBzZ3ItY29kZVxuIFwiTWFwIG9mIHN5bWJvbHMgdG8gbnVtZXJpYyBTR1IgKHNlbGVjdCBncmFwaGljIHJlbmRpdGlvbikgY29kZXMuXCJcbiB7OmJvbGQgMSxcbiAgOmJsaW5rIDUsXG4gIDp3aGl0ZSAzNyxcbiAgOnllbGxvdyAzMyxcbiAgOmJnLXJlZCA0MSxcbiAgOmJnLWN5YW4gNDYsXG4gIDpncmVlbiAzMixcbiAgOmJnLWdyZWVuIDQyLFxuICA6ZmctcmVzZXQgMzksXG4gIDpjeWFuIDM2LFxuICA6YmctYmxhY2sgNDAsXG4gIDpmZy0yNTYgMzgsXG4gIDp1bmRlcmxpbmUgMyxcbiAgOmJnLW1hZ2VudGEgNDUsXG4gIDpzdHJpa2UgOSxcbiAgOmJnLXllbGxvdyA0MyxcbiAgOmhpZGRlbiA4LFxuICA6cmVkIDMxLFxuICA6Ymx1ZSAzNCxcbiAgOmJnLXdoaXRlIDQ3LFxuICA6YmctMjU2IDQ4LFxuICA6bWFnZW50YSAzNSxcbiAgOmJnLWJsdWUgNDQsXG4gIDpiZy1yZXNldCA0OSxcbiAgOm5vbmUgMCxcbiAgOnJldmVyc2UgNyxcbiAgOmJsYWNrIDMwfSlcbiJ9IHs6c3ltICplbmFibGUtY29sb3IqLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiAqZW5hYmxlLWNvbG9yKiBmYWxzZSlcbiJ9IHs6c3ltIGVzYywgOm1ldGEgezpkb2MgIlJldHVybnMgYW4gQU5TSSBlc2NvcGUgc3RyaW5nIHdoaWNoIHdpbGwgYXBwbHkgdGhlIGdpdmVuIGNvbGxlY3Rpb24gb2YgU0dSXG4gIGNvZGVzLiIsIDphcmdsaXN0cyAoW2NvZGVzXSl9LCA6c291cmNlICIoZGVmblxuIGVzY1xuIFwiUmV0dXJucyBhbiBBTlNJIGVzY29wZSBzdHJpbmcgd2hpY2ggd2lsbCBhcHBseSB0aGUgZ2l2ZW4gY29sbGVjdGlvbiBvZiBTR1JcXG4gIGNvZGVzLlwiXG4gW2NvZGVzXVxuIChsZXRcbiAgW2NvZGVzIChtYXAgc2dyLWNvZGUgY29kZXMgY29kZXMpIGNvZGVzIChzdHJpbmcvam9pbiBcXDsgY29kZXMpXVxuICAoc3RyIFxcGyBcXFsgY29kZXMgXFxtKSkpXG4ifSB7OnN5bSBlc2NhcGUsIDptZXRhIHs6ZG9jICJSZXR1cm5zIGFuIEFOU0kgZXNjb3BlIHN0cmluZyB3aGljaCB3aWxsIGVuYWN0IHRoZSBnaXZlbiBTR1IgY29kZXMuIiwgOmFyZ2xpc3RzIChbJiBjb2Rlc10pfSwgOnNvdXJjZSAiKGRlZm5cbiBlc2NhcGVcbiBcIlJldHVybnMgYW4gQU5TSSBlc2NvcGUgc3RyaW5nIHdoaWNoIHdpbGwgZW5hY3QgdGhlIGdpdmVuIFNHUiBjb2Rlcy5cIlxuIFsmIGNvZGVzXVxuIChlc2MgY29kZXMpKVxuIn0gezpzeW0gc2dyLCA6bWV0YSB7OmRvYyAiV3JhcHMgdGhlIGdpdmVuIHN0cmluZyB3aXRoIFNHUiBlc2NhcGVzIHRvIGFwcGx5IHRoZSBnaXZlbiBjb2RlcywgdGhlbiByZXNldFxuICB0aGUgZ3JhcGhpY3MuIiwgOmFyZ2xpc3RzIChbc3RyaW5nICYgY29kZXNdKX0sIDpzb3VyY2UgIihkZWZuXG4gc2dyXG4gXCJXcmFwcyB0aGUgZ2l2ZW4gc3RyaW5nIHdpdGggU0dSIGVzY2FwZXMgdG8gYXBwbHkgdGhlIGdpdmVuIGNvZGVzLCB0aGVuIHJlc2V0XFxuICB0aGUgZ3JhcGhpY3MuXCJcbiBbc3RyaW5nICYgY29kZXNdXG4gKHN0ciAoZXNjIGNvZGVzKSBzdHJpbmcgKGVzY2FwZSA6bm9uZSkpKVxuIn0gezpzeW0gKnByaW50LXN0eWxlcyosIDptZXRhIHt9LCA6c291cmNlICIoZGVmXG4gKnByaW50LXN0eWxlcypcbiB7Omdvb2Qta2V5IFs6Z3JlZW5dLFxuICA6d2FybmluZy1rZXkgWzpib2xkXSxcbiAgOmNvcnJlY3Qta2V5IFs6Z3JlZW5dLFxuICA6aGlnaGxpZ2h0IFs6Ym9sZF0sXG4gIDpmb2N1cy1wYXRoIFs6bWFnZW50YV0sXG4gIDpiYWQtdmFsdWUgWzpyZWRdLFxuICA6Zm9vdGVyIFs6Y3lhbl0sXG4gIDpoZWFkZXIgWzpjeWFuXSxcbiAgOmdvb2QtcHJlZCBbOmdyZWVuXSxcbiAgOmdvb2QgWzpncmVlbl0sXG4gIDpmb2N1cy1rZXkgWzpib2xkXSxcbiAgOnBvaW50ZXIgWzptYWdlbnRhXSxcbiAgOmJhZCBbOnJlZF0sXG4gIDplcnJvci1rZXkgWzpyZWRdLFxuICA6bm9uZSBbOm5vbmVdLFxuICA6bWVzc2FnZSBbOm1hZ2VudGFdfSlcbiJ9IHs6c3ltIHJlc29sdmUtc3R5bGVzLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3N0eWxlc10pfSwgOnNvdXJjZSAiKGRlZm5cbiByZXNvbHZlLXN0eWxlc1xuIFtzdHlsZXNdXG4gKGlmLWxldFxuICBbcmVzXG4gICAobm90LWVtcHR5XG4gICAgKG1hcGNhdFxuICAgICAoZm4qXG4gICAgICBbcDFfXzQyNzYzI11cbiAgICAgIChvclxuICAgICAgICh3aGVuLWxldCBbcmVzICgqcHJpbnQtc3R5bGVzKiBwMV9fNDI3NjMjKV0gcmVzKVxuICAgICAgIFtwMV9fNDI3NjMjXSkpXG4gICAgIHN0eWxlcykpXVxuICByZXNcbiAgWzpib2xkXSkpXG4ifSB7OnN5bSBjb2xvciwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtzICYgc3R5bGVzXSl9LCA6c291cmNlICIoZGVmblxuIGNvbG9yXG4gW3MgJiBzdHlsZXNdXG4gKGlmICplbmFibGUtY29sb3IqIChhcHBseSBzZ3IgcyAocmVzb2x2ZS1zdHlsZXMgc3R5bGVzKSkgcykpXG4ifSksIGV4cG91bmQucHJpbnRlciAoezpzeW0gbWlzc2luZy1rZXksIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZm9ybV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBtaXNzaW5nLWtleVxuIFtmb3JtXVxuIChsZXRcbiAgW1ticmFuY2ggbWF0Y2hdXG4gICAocy9jb25mb3JtIDpleHBvdW5kLnNwZWMvY29udGFpbnMta2V5LXByZWQgKG50aCBmb3JtIDIpKV1cbiAgKGNhc2VcbiAgIGJyYW5jaFxuICAgOnNpbXBsZVxuICAgKDprdyBtYXRjaClcbiAgIDpjb21wb3VuZFxuICAgKHN1bW1hcml6ZS1rZXktY2xhdXNlIFticmFuY2ggbWF0Y2hdKSkpKVxuIn0gezpzeW0gaW5kZW50LWxldmVsLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiBpbmRlbnQtbGV2ZWwgMilcbiJ9IHs6c3ltIGFub24tZm4tc3RyLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiBhbm9uLWZuLXN0ciBcIjxhbm9ueW1vdXMgZnVuY3Rpb24+XCIpXG4ifSB7OnN5bSBoaWdobGlnaHQtbGluZSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtwcmVmaXggcmVwbGFjZW1lbnRdKX0sIDpzb3VyY2UgIihkZWZuXG4gaGlnaGxpZ2h0LWxpbmVcbiBbcHJlZml4IHJlcGxhY2VtZW50XVxuIChsZXRcbiAgW21heC13aWR0aFxuICAgKGFwcGx5XG4gICAgbWF4XG4gICAgKG1hcFxuICAgICAoZm4qIFtwMV9fNDI3NjIjXSAoY291bnQgKHN0ciBwMV9fNDI3NjIjKSkpXG4gICAgIChzdHJpbmcvc3BsaXQtbGluZXMgcmVwbGFjZW1lbnQpKSldXG4gIChpbmRlbnQgKGNvdW50IChzdHIgcHJlZml4KSkgKGFwcGx5IHN0ciAocmVwZWF0IG1heC13aWR0aCBcIl5cIikpKSkpXG4ifSB7OnN5bSBwcmludC1zcGVjLWtleXMsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbcHJvYmxlbXNdKX0sIDpzb3VyY2UgIihkZWZuXG4gcHJpbnQtc3BlYy1rZXlzXG4gW3Byb2JsZW1zXVxuICgtPj5cbiAgKHByaW50LXNwZWMta2V5cyogcHJvYmxlbXMpXG4gIChwcmludC10YWJsZSBbXCJrZXlcIiBcInNwZWNcIl0pXG4gIHN0cmluZy90cmltKSlcbiJ9IHs6c3ltIHNpbmdsZXRvbj8sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbeHNdKX0sIDpzb3VyY2UgIihkZWZuIHNpbmdsZXRvbj8gW3hzXSAoPSAxIChjb3VudCB4cykpKVxuIn0gezpzeW0gaW5kZW50LCA6bWV0YSB7OmRvYyAiR2l2ZW4gYW4gcG90ZW50aWFsbHkgbXVsdGktbGluZSBzdHJpbmcsIHJldHVybnMgdGhhdCBzdHJpbmcgaW5kZW50ZWQgYnlcbiAgICdpbmRlbnQtbGV2ZWwnIHNwYWNlcy4gT3B0aW9uYWxseSwgY2FuIGluZGVudCBmaXJzdCBsaW5lIGFuZCBvdGhlciBsaW5lc1xuICAgZGlmZmVyZW50IGFtb3VudHMuIiwgOmFyZ2xpc3RzIFtbc10gW2luZGVudC1sZXZlbCBzXSBbZmlyc3QtbGluZS1pbmRlbnQgcmVzdC1saW5lcy1pbmRlbnQgc11dfSwgOnNvdXJjZSAiKGRlZm5cbiBpbmRlbnRcbiBcIkdpdmVuIGFuIHBvdGVudGlhbGx5IG11bHRpLWxpbmUgc3RyaW5nLCByZXR1cm5zIHRoYXQgc3RyaW5nIGluZGVudGVkIGJ5XFxuICAgJ2luZGVudC1sZXZlbCcgc3BhY2VzLiBPcHRpb25hbGx5LCBjYW4gaW5kZW50IGZpcnN0IGxpbmUgYW5kIG90aGVyIGxpbmVzXFxuICAgZGlmZmVyZW50IGFtb3VudHMuXCJcbiAoW3NdIChpbmRlbnQgaW5kZW50LWxldmVsIHMpKVxuIChbaW5kZW50LWxldmVsIHNdIChpbmRlbnQgaW5kZW50LWxldmVsIGluZGVudC1sZXZlbCBzKSlcbiAoW2ZpcnN0LWxpbmUtaW5kZW50IHJlc3QtbGluZXMtaW5kZW50IHNdXG4gIChsZXRcbiAgIFtbbGluZSAmIGxpbmVzXSAoc3RyaW5nL3NwbGl0LWxpbmVzIChzdHIgcykpXVxuICAgKC0+PlxuICAgIGxpbmVzXG4gICAgKG1hcFxuICAgICAoZm4qXG4gICAgICBbcDFfXzQyNzYxI11cbiAgICAgIChzdHIgKGFwcGx5IHN0ciAocmVwZWF0IHJlc3QtbGluZXMtaW5kZW50IFwiIFwiKSkgcDFfXzQyNzYxIykpKVxuICAgIChpbnRvIFsoc3RyIChhcHBseSBzdHIgKHJlcGVhdCBmaXJzdC1saW5lLWluZGVudCBcIiBcIikpIGxpbmUpXSlcbiAgICAoc3RyaW5nL2pvaW4gXCJcXG5cIikpKSkpXG4ifSB7OnN5bSBzaW1wbGUtc3BlYy1vci1uYW1lLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3NwZWMtbmFtZV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBzaW1wbGUtc3BlYy1vci1uYW1lXG4gW3NwZWMtbmFtZV1cbiAobGV0XG4gIFtleHBhbmRlZFxuICAgKGV4cGFuZC1zcGVjIHNwZWMtbmFtZSlcbiAgIHNwZWMtc3RyXG4gICAoZWxpZGUtc3BlYy1ucyAoZWxpZGUtY29yZS1ucyAoaWYgKG5pbD8gZXhwYW5kZWQpIFwibmlsXCIgZXhwYW5kZWQpKSldXG4gIHNwZWMtc3RyKSlcbiJ9IHs6c3ltIHRhYmxlLXN0ciwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtjb2x1bW4ta2V5cyBtYXAtcm93c10pfSwgOnNvdXJjZSAiKGRlZm5cbiB0YWJsZS1zdHJcbiBbY29sdW1uLWtleXMgbWFwLXJvd3NdXG4gKHN0clxuICBcIlxcblwiXG4gIChhcHBseVxuICAgc3RyXG4gICAobWFwXG4gICAgKGZuIFtsaW5lXSAoc3RyIGxpbmUgXCJcXG5cIikpXG4gICAgKHRhYmxlIChmb3JtYXR0ZWQtbXVsdGlyb3dzIGNvbHVtbi1rZXlzIG1hcC1yb3dzKSkpKSkpXG4ifSB7OnN5bSBwcmludC10YWJsZSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgW1ttYXAtcm93c10gW2NvbHVtbi1rZXlzIG1hcC1yb3dzXV19LCA6c291cmNlICIoZGVmblxuIHByaW50LXRhYmxlXG4gKFttYXAtcm93c10gKHByaW50LXRhYmxlIChrZXlzIChmaXJzdCBtYXAtcm93cykpIG1hcC1yb3dzKSlcbiAoW2NvbHVtbi1rZXlzIG1hcC1yb3dzXSAodGFibGUtc3RyIGNvbHVtbi1rZXlzIG1hcC1yb3dzKSkpXG4ifSB7OnN5bSBzcGVjcy1mcm9tLWZvcm0sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbdmlhXSl9LCA6c291cmNlICIoZGVmblxuIHNwZWNzLWZyb20tZm9ybVxuIFt2aWFdXG4gKGxldFxuICBbZm9ybVxuICAgKHNvbWUtPiB2aWEgbGFzdCBzL2Zvcm0pXG4gICBrZXlzLXNwZWNzXG4gICAoLT4+XG4gICAgKHRyZWUtc2VxIGNvbGw/IHNlcSBmb3JtKVxuICAgIChmaWx0ZXJcbiAgICAgKGZuKlxuICAgICAgW3AxX180Mjc1NSNdXG4gICAgICAocy92YWxpZD8gOmV4cG91bmQuc3BlYy9rZXlzLXNwZWMgcDFfXzQyNzU1IykpKSldXG4gIChpZlxuICAgKGVtcHR5PyBrZXlzLXNwZWNzKVxuICAgI3t9XG4gICAoLT4+XG4gICAga2V5cy1zcGVjc1xuICAgIChtYXBcbiAgICAgKGZuKiBbcDFfXzQyNzU2I10gKHMvY29uZm9ybSA6ZXhwb3VuZC5zcGVjL2tleXMtc3BlYyBwMV9fNDI3NTYjKSkpXG4gICAgKG1hcGNhdCA6Y2xhdXNlcylcbiAgICAobWFwY2F0IDpzcGVjcylcbiAgICAodHJlZS1zZXEgY29sbD8gc2VxKVxuICAgIChmaWx0ZXIgKGZuIFt4XSAoYW5kICh2ZWN0b3I/IHgpICg9IDprdyAoZmlyc3QgeCkpKSkpXG4gICAgKG1hcCBzZWNvbmQpXG4gICAgc2V0KSkpKVxuIn0gezpzeW0gZWxpZGUtc3BlYy1ucywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtzXSl9LCA6c291cmNlICIoZGVmblxuIGVsaWRlLXNwZWMtbnNcbiBbc11cbiAjPyg6Y2xqcyAoLT4gcyAoc3RyaW5nL3JlcGxhY2UgXCJjbGpzLnNwZWMuYWxwaGEvXCIgXCJcIikgKHN0cmluZy9yZXBsYWNlIFwiY2xqcy9zcGVjL2FscGhhXCIgXCJcIikpIDpjbGogKHN0cmluZy9yZXBsYWNlIHMgXCJjbG9qdXJlLnNwZWMuYWxwaGEvXCIgXCJcIikpKVxuIn0gezpzeW0gZXNjYXBlLXJlcGxhY2VtZW50LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoWyM/KDpjbGogcGF0dGVybiA6Y2xqcyBfcGF0dGVybikgc10pfSwgOnNvdXJjZSAiKGRlZm5cbiBlc2NhcGUtcmVwbGFjZW1lbnRcbiBbIz8oOmNsaiBwYXR0ZXJuIDpjbGpzIF9wYXR0ZXJuKSBzXVxuICM/KDpjbGogKGlmIChzdHJpbmc/IHBhdHRlcm4pIHMgKHN0cmluZy9yZS1xdW90ZS1yZXBsYWNlbWVudCBzKSkgOmNsanMgKHN0cmluZy9yZXBsYWNlIHMgI1wiXFwkXCIgXCIkJCQkXCIpKSlcbiJ9IHs6c3ltIGtleS0+c3BlYywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtrZXlzIHByb2JsZW1zXSl9LCA6c291cmNlICIoZGVmblxuIGtleS0+c3BlY1xuIFtrZXlzIHByb2JsZW1zXVxuIChkb3NlcVxuICBbcCBwcm9ibGVtc11cbiAgKGFzc2VydCAoc29tZT8gKDpleHBvdW5kL3ZpYSBwKSkgdXRpbC9hc3NlcnQtbWVzc2FnZSkpXG4gKGxldFxuICBbdmlhc1xuICAgKG1hcCA6ZXhwb3VuZC92aWEgcHJvYmxlbXMpXG4gICBzcGVjc1xuICAgKGlmXG4gICAgKGV2ZXJ5PyBxdWFsaWZpZWQta2V5d29yZD8ga2V5cylcbiAgICBrZXlzXG4gICAgKGlmLWxldFxuICAgICBbc3BlY3MgKGFwcGx5IHNldC91bmlvbiAobWFwIHNwZWNzLWZyb20tZm9ybSB2aWFzKSldXG4gICAgIHNwZWNzXG4gICAgIGtleXMpKV1cbiAgKHJlZHVjZVxuICAgKGZuXG4gICAgW20ga11cbiAgICAoYXNzb2NcbiAgICAgbVxuICAgICBrXG4gICAgIChpZlxuICAgICAgKHF1YWxpZmllZC1rZXl3b3JkPyBrKVxuICAgICAga1xuICAgICAgKG9yXG4gICAgICAgKC0+PlxuICAgICAgICBzcGVjc1xuICAgICAgICAoZmlsdGVyIChmbiogW3AxX180Mjc1NyNdICg9IChuYW1lIGspIChuYW1lIHAxX180Mjc1NyMpKSkpXG4gICAgICAgIGZpcnN0KVxuICAgICAgIFwiPGNhbid0IGZpbmQgc3BlYyBmb3IgdW5xdWFsaWZpZWQgc3BlYyBpZGVudGlmaWVyPlwiKSkpKVxuICAge31cbiAgIGtleXMpKSlcbiJ9IHs6c3ltIHByaW50LXNwZWMta2V5cyosIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbcHJvYmxlbXNdKX0sIDpzb3VyY2UgIihkZWZuXG4gcHJpbnQtc3BlYy1rZXlzKlxuIFtwcm9ibGVtc11cbiAobGV0XG4gIFtrZXlzXG4gICAoa2V5d29yZHNcbiAgICAobWFwXG4gICAgIChmbiogW3AxX180Mjc1OCNdIChtaXNzaW5nLWtleSAoOnByZWQgcDFfXzQyNzU4IykpKVxuICAgICBwcm9ibGVtcykpXVxuICAoaWZcbiAgIChhbmRcbiAgICAoZW1wdHk/ICg6ZXhwb3VuZC92aWEgKGZpcnN0IHByb2JsZW1zKSkpXG4gICAgKHNvbWUgc2ltcGxlLWtleXdvcmQ/IGtleXMpKVxuICAgbmlsXG4gICAoLT4+XG4gICAgKGtleS0+c3BlYyBrZXlzIHByb2JsZW1zKVxuICAgIChtYXAgKGZuIFtbayB2XV0ge1wia2V5XCIgaywgXCJzcGVjXCIgKHNpbXBsZS1zcGVjLW9yLW5hbWUgdil9KSlcbiAgICAoc29ydC1ieSAoZm4qIFtwMV9fNDI3NTkjXSAoZ2V0IHAxX180Mjc1OSMgXCJrZXlcIikpKSkpKSlcbiJ9IHs6c3ltIGhpZ2hsaWdodGVkLXZhbHVlLCA6bWV0YSB7OmRvYyAiR2l2ZW4gYSBwcm9ibGVtLCByZXR1cm5zIGEgcHJldHR5IHByaW50ZWRcbiAgIHN0cmluZyB0aGF0IGhpZ2hsaWdodHMgdGhlIHByb2JsZW0gdmFsdWUiLCA6YXJnbGlzdHMgKFtvcHRzIHByb2JsZW1dKX0sIDpzb3VyY2UgIihkZWZuXG4gaGlnaGxpZ2h0ZWQtdmFsdWVcbiBcIkdpdmVuIGEgcHJvYmxlbSwgcmV0dXJucyBhIHByZXR0eSBwcmludGVkXFxuICAgc3RyaW5nIHRoYXQgaGlnaGxpZ2h0cyB0aGUgcHJvYmxlbSB2YWx1ZVwiXG4gW29wdHMgcHJvYmxlbV1cbiAobGV0XG4gIFt7OmtleXMgWzpleHBvdW5kL2Zvcm0gOmV4cG91bmQvaW5dfVxuICAgcHJvYmxlbVxuICAgezprZXlzIFtzaG93LXZhbGlkLXZhbHVlcz9dLCA6b3Ige3Nob3ctdmFsaWQtdmFsdWVzPyBmYWxzZX19XG4gICBvcHRzXG4gICBwcmludGVkLXZhbFxuICAgKHBwcmludC1zdHIgKHBhdGhzL3ZhbHVlLWluIGZvcm0gaW4pKVxuICAgcmVsZXZhbnRcbiAgIChzdHJcbiAgICBcIihcIlxuICAgIDpleHBvdW5kLnByb2JsZW1zL3JlbGV2YW50XG4gICAgXCJ8KFwiXG4gICAgOmV4cG91bmQucHJvYmxlbXMva3YtcmVsZXZhbnRcbiAgICBcIlxcXFxzK1wiXG4gICAgOmV4cG91bmQucHJvYmxlbXMva3YtcmVsZXZhbnRcbiAgICBcIikpXCIpXG4gICByZWdleFxuICAgKHJlLXBhdHRlcm4gKHN0ciBcIiguKilcIiByZWxldmFudCBcIi4qXCIpKVxuICAgc1xuICAgKGJpbmRpbmdcbiAgICBbKnByaW50LW5hbWVzcGFjZS1tYXBzKiBmYWxzZV1cbiAgICAoaWZcbiAgICAgKDpzaG93LXZhbGlkLXZhbHVlcz8gb3B0cylcbiAgICAgKHBwcmludC1zdHIgKHN1bW1hcnktZm9ybSBzaG93LXZhbGlkLXZhbHVlcz8gZm9ybSBpbikpXG4gICAgIChwcHJpbnQtc3RyXG4gICAgICAod2Fsay9wcmV3YWxrLXJlcGxhY2VcbiAgICAgICB7OmV4cG91bmQucHJvYmxlbXMvaXJyZWxldmFudCAnLi4ufVxuICAgICAgIChzdW1tYXJ5LWZvcm0gc2hvdy12YWxpZC12YWx1ZXM/IGZvcm0gaW4pKSkpKVxuICAgW2xpbmUgcHJlZml4ICYgX21vcmVdXG4gICAocmUtZmluZCByZWdleCBzKV1cbiAgKGlmLW5vdFxuICAgbGluZVxuICAgKHN0ciBwcmludGVkLXZhbCBcIlxcblxcbmluXFxuXFxuXCIgKHBwcmludC1zdHIgZm9ybSkpXG4gICAobGV0XG4gICAgW2hpZ2hsaWdodGVkLWxpbmVcbiAgICAgKC0+XG4gICAgICBsaW5lXG4gICAgICAoc3RyaW5nL3JlcGxhY2VcbiAgICAgICAocmUtcGF0dGVybiByZWxldmFudClcbiAgICAgICAoZXNjYXBlLXJlcGxhY2VtZW50XG4gICAgICAgIChyZS1wYXR0ZXJuIHJlbGV2YW50KVxuICAgICAgICAoaW5kZW50IDAgKGNvdW50IHByZWZpeCkgKGFuc2kvY29sb3IgcHJpbnRlZC12YWwgOmJhZC12YWx1ZSkpKSlcbiAgICAgIChzdHJcbiAgICAgICBcIlxcblwiXG4gICAgICAgKGFuc2kvY29sb3IgKGhpZ2hsaWdodC1saW5lIHByZWZpeCBwcmludGVkLXZhbCkgOnBvaW50ZXIpKSldXG4gICAgKG5vLXRyYWlsaW5nLXdoaXRlc3BhY2VcbiAgICAgKHN0cmluZy9yZXBsYWNlXG4gICAgICBzXG4gICAgICBsaW5lXG4gICAgICAoZXNjYXBlLXJlcGxhY2VtZW50IGxpbmUgaGlnaGxpZ2h0ZWQtbGluZSkpKSkpKSlcbiJ9IHs6c3ltIGVsaWRlLWNvcmUtbnMsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbc10pfSwgOnNvdXJjZSAiKGRlZm5cbiBlbGlkZS1jb3JlLW5zXG4gW3NdXG4gIz8oOmNsanMgKC0+IHMgKHN0cmluZy9yZXBsYWNlIFwiY2xqcy5jb3JlL1wiIFwiXCIpIChzdHJpbmcvcmVwbGFjZSBcImNsanMvY29yZS9cIiBcIlwiKSkgOmNsaiAoc3RyaW5nL3JlcGxhY2UgcyBcImNsb2p1cmUuY29yZS9cIiBcIlwiKSkpXG4ifSB7OnN5bSBwcmludC1taXNzaW5nLWtleXMsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbcHJvYmxlbXNdKX0sIDpzb3VyY2UgIihkZWZuXG4gcHJpbnQtbWlzc2luZy1rZXlzXG4gW3Byb2JsZW1zXVxuIChsZXRcbiAgW2tleXMtY2xhdXNlcyAoZGlzdGluY3QgKG1hcCAoY29tcCBtaXNzaW5nLWtleSA6cHJlZCkgcHJvYmxlbXMpKV1cbiAgKGlmXG4gICAoZXZlcnk/IGtleXdvcmQ/IGtleXMtY2xhdXNlcylcbiAgIChzdHJpbmcvam9pblxuICAgIFwiLCBcIlxuICAgIChtYXBcbiAgICAgKGZuKiBbcDFfXzQyNzYwI10gKGFuc2kvY29sb3IgcDFfXzQyNzYwIyA6Y29ycmVjdC1rZXkpKVxuICAgICAoc29ydCBrZXlzLWNsYXVzZXMpKSlcbiAgIChzdHJcbiAgICBcIlxcblxcblwiXG4gICAgKGFuc2kvY29sb3JcbiAgICAgKHBwcmludC1zdHJcbiAgICAgIChpZlxuICAgICAgIChzaW5nbGV0b24/IGtleXMtY2xhdXNlcylcbiAgICAgICAoZmlyc3Qga2V5cy1jbGF1c2VzKVxuICAgICAgIChhcHBseSBsaXN0ICdhbmQga2V5cy1jbGF1c2VzKSkpXG4gICAgIDpjb3JyZWN0LWtleSkpKSkpXG4ifSB7OnN5bSBzdW1tYXJ5LWZvcm0sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbc2hvdy12YWxpZC12YWx1ZXM/IGZvcm0gaW5dKX0sIDpzb3VyY2UgIihkZWZuXG4gc3VtbWFyeS1mb3JtXG4gW3Nob3ctdmFsaWQtdmFsdWVzPyBmb3JtIGluXVxuIChsZXRcbiAgW1trICYgcnN0XVxuICAgaW5cbiAgIHJzdFxuICAgKG9yIHJzdCBbXSlcbiAgIGRpc3BsYXllZC1mb3JtXG4gICAoaWYgc2hvdy12YWxpZC12YWx1ZXM/IGZvcm0gKGJsYW5rLWZvcm0gZm9ybSkpXVxuICAoY29uZFxuICAgKGVtcHR5PyBpbilcbiAgIDpleHBvdW5kLnByb2JsZW1zL3JlbGV2YW50XG4gICAoYW5kIChtYXA/IGZvcm0pIChwYXRocy9rcHM/IGspKVxuICAgKC0+XG4gICAgZGlzcGxheWVkLWZvcm1cbiAgICAoZGlzc29jICg6a2V5IGspKVxuICAgIChhc3NvY1xuICAgICAoc3VtbWFyeS1mb3JtIHNob3ctdmFsaWQtdmFsdWVzPyAoOmtleSBrKSByc3QpXG4gICAgIDpleHBvdW5kLnByb2JsZW1zL2lycmVsZXZhbnQpKVxuICAgKGFuZCAobWFwPyBmb3JtKSAocGF0aHMva3Zwcz8gaykpXG4gICAocmVjdXIgc2hvdy12YWxpZC12YWx1ZXM/IChudGggKHNlcSBmb3JtKSAoOmlkeCBrKSkgcnN0KVxuICAgKGFzc29jaWF0aXZlPyBmb3JtKVxuICAgKGFzc29jXG4gICAgZGlzcGxheWVkLWZvcm1cbiAgICBrXG4gICAgKHN1bW1hcnktZm9ybSBzaG93LXZhbGlkLXZhbHVlcz8gKGdldCBmb3JtIGspIHJzdCkpXG4gICAoYW5kIChpbnQ/IGspIChzZXE/IGZvcm0pKVxuICAgKGFwcGx5XG4gICAgbGlzdFxuICAgICgtPlxuICAgICBkaXNwbGF5ZWQtZm9ybVxuICAgICB2ZWNcbiAgICAgKGFzc29jIGsgKHN1bW1hcnktZm9ybSBzaG93LXZhbGlkLXZhbHVlcz8gKG50aCBmb3JtIGspIHJzdCkpKSlcbiAgIChhbmQgKGludD8gaykgKHNldD8gZm9ybSkpXG4gICAoaW50b1xuICAgICN7fVxuICAgICgtPlxuICAgICBkaXNwbGF5ZWQtZm9ybVxuICAgICB2ZWNcbiAgICAgKGFzc29jXG4gICAgICBrXG4gICAgICAoc3VtbWFyeS1mb3JtIHNob3ctdmFsaWQtdmFsdWVzPyAobnRoIChzZXEgZm9ybSkgaykgcnN0KSkpKVxuICAgKGFuZCAoaW50PyBrKSAobGlzdD8gZm9ybSkpXG4gICAoaW50b1xuICAgICcoKVxuICAgICgtPlxuICAgICBkaXNwbGF5ZWQtZm9ybVxuICAgICB2ZWNcbiAgICAgKGFzc29jXG4gICAgICBrXG4gICAgICAoc3VtbWFyeS1mb3JtIHNob3ctdmFsaWQtdmFsdWVzPyAobnRoIChzZXEgZm9ybSkgaykgcnN0KSkpKVxuICAgKGFuZCAoaW50PyBrKSAoc3RyaW5nPyBmb3JtKSlcbiAgIChzdHJpbmcvam9pbiAoYXNzb2MgKHZlYyBmb3JtKSBrIDpleHBvdW5kLnByb2JsZW1zL3JlbGV2YW50KSlcbiAgIDplbHNlXG4gICAodGhyb3dcbiAgICAoZXgtaW5mb1xuICAgICBcIkNhbm5vdCBmaW5kIHBhdGggc2VnbWVudCBpbiBmb3JtLiBUaGlzIGNhbiBiZSBjYXVzZWQgYnkgdXNpbmcgY29uZm9ybWVycyB0byB0cmFuc2Zvcm0gdmFsdWVzLCB3aGljaCBpcyBub3Qgc3VwcG9ydGVkIGluIEV4cG91bmRcIlxuICAgICB7OmZvcm0gZm9ybSwgOmluIGlufSkpKSkpXG4ifSB7OnN5bSBibGFuay1mb3JtLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2Zvcm1dKX0sIDpzb3VyY2UgIihkZWZuXG4gYmxhbmstZm9ybVxuIFtmb3JtXVxuIChjb25kXG4gIChtYXA/IGZvcm0pXG4gICh6aXBtYXAgKGtleXMgZm9ybSkgKHJlcGVhdCA6ZXhwb3VuZC5wcm9ibGVtcy9pcnJlbGV2YW50KSlcbiAgKHZlY3Rvcj8gZm9ybSlcbiAgKHZlYyAocmVwZWF0IChjb3VudCBmb3JtKSA6ZXhwb3VuZC5wcm9ibGVtcy9pcnJlbGV2YW50KSlcbiAgKHNldD8gZm9ybSlcbiAgZm9ybVxuICAob3IgKGxpc3Q/IGZvcm0pIChzZXE/IGZvcm0pKVxuICAoYXBwbHkgbGlzdCAocmVwZWF0IChjb3VudCBmb3JtKSA6ZXhwb3VuZC5wcm9ibGVtcy9pcnJlbGV2YW50KSlcbiAgOmVsc2VcbiAgOmV4cG91bmQucHJvYmxlbXMvaXJyZWxldmFudCkpXG4ifSB7OnN5bSBleHBhbmQtc3BlYywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtzcGVjXSl9LCA6c291cmNlICIoZGVmblxuIGV4cGFuZC1zcGVjXG4gW3NwZWNdXG4gKGxldFxuICBbZXhwYW5kZWQtc3BlYyAoaWYgKHMvZ2V0LXNwZWMgc3BlYykgKHMvZm9ybSBzcGVjKSBzcGVjKV1cbiAgKGlmXG4gICAoc3RyaW5nPyBleHBhbmRlZC1zcGVjKVxuICAgZXhwYW5kZWQtc3BlY1xuICAgKHBwcmludC1zdHIgZXhwYW5kZWQtc3BlYykpKSlcbiJ9IHs6c3ltIGtleXdvcmRzLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2Zvcm1dKX0sIDpzb3VyY2UgIihkZWZuIGtleXdvcmRzIFtmb3JtXSAoLT4+IGZvcm0gKHRyZWUtc2VxIGNvbGw/IHNlcSkgKGZpbHRlciBrZXl3b3JkPykpKVxuIn0gezpzeW0gbm8tdHJhaWxpbmctd2hpdGVzcGFjZSwgOm1ldGEgezpkb2MgIkdpdmVuIGFuIHBvdGVudGlhbGx5IG11bHRpLWxpbmUgc3RyaW5nLCByZXR1cm5zIHRoYXQgc3RyaW5nIHdpdGggYWxsXG4gIHRyYWlsaW5nIHdoaXRlc3BhY2UgcmVtb3ZlZC4iLCA6YXJnbGlzdHMgKFtzXSl9LCA6c291cmNlICIoZGVmblxuIG5vLXRyYWlsaW5nLXdoaXRlc3BhY2VcbiBcIkdpdmVuIGFuIHBvdGVudGlhbGx5IG11bHRpLWxpbmUgc3RyaW5nLCByZXR1cm5zIHRoYXQgc3RyaW5nIHdpdGggYWxsXFxuICB0cmFpbGluZyB3aGl0ZXNwYWNlIHJlbW92ZWQuXCJcbiBbc11cbiAobGV0XG4gIFtzJyAoLT4+IHMgc3RyaW5nL3NwbGl0LWxpbmVzIChtYXAgc3RyaW5nL3RyaW1yKSAoc3RyaW5nL2pvaW4gXCJcXG5cIikpXVxuICAoaWYgKD0gXFxuZXdsaW5lIChsYXN0IHMpKSAoc3RyIHMnIFwiXFxuXCIpIHMnKSkpXG4ifSB7OnN5bSBwcHJpbnQtc3RyLCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0aGUgcHJldHR5LXByaW50ZWQgc3RyaW5nIiwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBwcHJpbnQtc3RyXG4gXCJSZXR1cm5zIHRoZSBwcmV0dHktcHJpbnRlZCBzdHJpbmdcIlxuIFt4XVxuIChpZiAoZm4/IHgpIChwcHJpbnQtZm4geCkgKHBwcmludC93cml0ZSB4IDpzdHJlYW0gbmlsKSkpXG4ifSB7OnN5bSBzdW1tYXJpemUta2V5LWNsYXVzZSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtbYnJhbmNoIG1hdGNoXV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBzdW1tYXJpemUta2V5LWNsYXVzZVxuIFtbYnJhbmNoIG1hdGNoXV1cbiAoY2FzZVxuICBicmFuY2hcbiAgOnNpbXBsZVxuICAoOmt3IG1hdGNoKVxuICA6Y29tcG91bmRcbiAgKGFwcGx5XG4gICBsaXN0XG4gICAoc3ltYm9sIChuYW1lICg6b3AgbWF0Y2gpKSlcbiAgIChtYXAgc3VtbWFyaXplLWtleS1jbGF1c2UgKDpjbGF1c2VzIG1hdGNoKSkpKSlcbiJ9IHs6c3ltIHBwcmludC1mbiwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtmXSl9LCA6c291cmNlICIoZGVmblxuIHBwcmludC1mblxuIFtmXVxuICgtPlxuICAjPyg6Y2xqIChsZXQgW1tfIG5zLW4gZi1uXSAocmUtbWF0Y2hlcyAjXCIoLiopXFwkKC4qPykoX19bMC05XSspP1wiIChzdHIgZikpXSAoaWYgKHJlLW1hdGNoZXMgI1wiXmZuX19cXGQrXFxALiokXCIgZi1uKSBhbm9uLWZuLXN0ciAoc3RyIChtYWluL2RlbXVuZ2UgbnMtbikgXCIvXCIgKG1haW4vZGVtdW5nZSBmLW4pKSkpIDpjbGpzIChsZXQgW2ZuLXBhcnRzIChzdHJpbmcvc3BsaXQgKHNlY29uZCAocmUtZmluZCAjXCJvYmplY3RcXFsoW15cXCggXFxdXSspLiooXFxufFxcXSk/XCIgKHByLXN0ciBmKSkpICNcIlxcJFwiKSBucy1uIChzdHJpbmcvam9pbiBcIi5cIiAoYnV0bGFzdCBmbi1wYXJ0cykpIGZuLW4gKGxhc3QgZm4tcGFydHMpXSAoaWYgKGVtcHR5PyBucy1uKSBhbm9uLWZuLXN0ciAoc3RyIChkZW11bmdlIG5zLW4pIFwiL1wiIChkZW11bmdlIGZuLW4pKSkpKVxuICAoZWxpZGUtY29yZS1ucylcbiAgKHN0cmluZy9yZXBsYWNlICNcIi0tXFxkK1wiIFwiXCIpXG4gIChzdHJpbmcvcmVwbGFjZSAjXCJAW2EtekEtWjAtOV0rXCIgXCJcIikpKVxuIn0pLCBodG1sLXNvdXAuY29yZSAoezpzeW0gbGluZS0+c2VnbWVudHMsIDptZXRhIHs6ZG9jICJTcGxpdHMgYSBsaW5lIGludG8gc2VnbWVudHMgd2hlcmUgdGFncyBhcmUgc3VwcG9zZWQgdG8gYXBwZWFyLiIsIDphcmdsaXN0cyAoW2xpbmUgdGFncy1mb3ItbGluZSBlc2NhcGU/XSl9LCA6c291cmNlICIoZGVmblxuIGxpbmUtPnNlZ21lbnRzXG4gXCJTcGxpdHMgYSBsaW5lIGludG8gc2VnbWVudHMgd2hlcmUgdGFncyBhcmUgc3VwcG9zZWQgdG8gYXBwZWFyLlwiXG4gW2xpbmUgdGFncy1mb3ItbGluZSBlc2NhcGU/XVxuIChsZXRcbiAgW2NvbHVtbnNcbiAgIChzZXQgKG1hcCA6Y29sdW1uIHRhZ3MtZm9yLWxpbmUpKVxuICAgZXNjYXBlLWh0bWwtY2hhclxuICAgKGlmIGVzY2FwZT8gZXNjYXBlLWh0bWwtY2hhciBpZGVudGl0eSldXG4gIChsb29wXG4gICBbaSAwIHNlZ21lbnRzICh0cmFuc2llbnQgW10pIGN1cnJlbnQtc2VnbWVudCAodHJhbnNpZW50IFtdKV1cbiAgIChpZi1sZXRcbiAgICBbYyAoc29tZS0+IGxpbmUgKGdldCBpKSBlc2NhcGUtaHRtbC1jaGFyKV1cbiAgICAoaWZcbiAgICAgKGNvbnRhaW5zPyBjb2x1bW5zIChpbmMgaSkpXG4gICAgIChyZWN1clxuICAgICAgKGluYyBpKVxuICAgICAgKGNvbmohIHNlZ21lbnRzIChwZXJzaXN0ZW50ISBjdXJyZW50LXNlZ21lbnQpKVxuICAgICAgKHRyYW5zaWVudCBbY10pKVxuICAgICAocmVjdXIgKGluYyBpKSBzZWdtZW50cyAoY29uaiEgY3VycmVudC1zZWdtZW50IGMpKSlcbiAgICAoLT4+XG4gICAgIChwZXJzaXN0ZW50ISBjdXJyZW50LXNlZ21lbnQpXG4gICAgIChjb25qISBzZWdtZW50cylcbiAgICAgcGVyc2lzdGVudCFcbiAgICAgKG1hcCBzdHIvam9pbikpKSkpKVxuIn0gezpzeW0gdGFnLT5oaWNjdXAsIDptZXRhIHs6ZG9jICJSZXR1cm5zIGEgSGljY3VwLWNvbXBhdGlibGUgZGF0YSBzdHJ1Y3R1cmUgZm9yIHRoZSBnaXZlbiB0YWcgZGVzY3JpcHRpb24uIiwgOmFyZ2xpc3RzIChbdGFnXSl9LCA6c291cmNlICIoZGVmblxuIHRhZy0+aGljY3VwXG4gXCJSZXR1cm5zIGEgSGljY3VwLWNvbXBhdGlibGUgZGF0YSBzdHJ1Y3R1cmUgZm9yIHRoZSBnaXZlbiB0YWcgZGVzY3JpcHRpb24uXCJcbiBbdGFnXVxuIChjb25kXG4gICg6ZGVsaW1pdGVyPyB0YWcpXG4gIFs6c3BhbiB7OmNsYXNzIFwiZGVsaW1pdGVyXCJ9XVxuICAoOmVycm9yPyB0YWcpXG4gIFs6c3BhbiB7OmNsYXNzIFwiZXJyb3JcIiwgOmRhdGEtbWVzc2FnZSAoOm1lc3NhZ2UgdGFnKX1dXG4gICg6YmVnaW4/IHRhZylcbiAgKGxldFxuICAgW3ZhbHVlICg6dmFsdWUgdGFnKV1cbiAgIChjb25kXG4gICAgKHN5bWJvbD8gdmFsdWUpXG4gICAgWzpzcGFuIHs6Y2xhc3MgXCJzeW1ib2xcIn1dXG4gICAgKGxpc3Q/IHZhbHVlKVxuICAgIFs6c3BhbiB7OmNsYXNzIFwiY29sbGVjdGlvbiBsaXN0XCJ9XVxuICAgICh2ZWN0b3I/IHZhbHVlKVxuICAgIFs6c3BhbiB7OmNsYXNzIFwiY29sbGVjdGlvbiB2ZWN0b3JcIn1dXG4gICAgKG1hcD8gdmFsdWUpXG4gICAgWzpzcGFuIHs6Y2xhc3MgXCJjb2xsZWN0aW9uIG1hcFwifV1cbiAgICAoc2V0PyB2YWx1ZSlcbiAgICBbOnNwYW4gezpjbGFzcyBcImNvbGxlY3Rpb24gc2V0XCJ9XVxuICAgIChudW1iZXI/IHZhbHVlKVxuICAgIFs6c3BhbiB7OmNsYXNzIFwibnVtYmVyXCJ9XVxuICAgIChzdHJpbmc/IHZhbHVlKVxuICAgIFs6c3BhbiB7OmNsYXNzIFwic3RyaW5nXCJ9XVxuICAgIChrZXl3b3JkPyB2YWx1ZSlcbiAgICBbOnNwYW4gezpjbGFzcyBcImtleXdvcmRcIn1dXG4gICAgKG5pbD8gdmFsdWUpXG4gICAgWzpzcGFuIHs6Y2xhc3MgXCJuaWxcIn1dXG4gICAgKGNvbnRhaW5zPyAje3RydWUgZmFsc2V9IHZhbHVlKVxuICAgIFs6c3BhbiB7OmNsYXNzIFwiYm9vbGVhblwifV1cbiAgICA6ZWxzZVxuICAgIFs6c3Bhbl0pKVxuICAoOmVuZD8gdGFnKVxuICBuaWwpKVxuIn0gezpzeW0gbGluZS0+aHRtbCwgOm1ldGEgezpkb2MgIlJldHVybnMgdGhlIGdpdmVuIGxpbmUgd2l0aCBodG1sIGFkZGVkLiIsIDphcmdsaXN0cyAoW2xpbmUgdGFncy1mb3ItbGluZV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBsaW5lLT5odG1sXG4gXCJSZXR1cm5zIHRoZSBnaXZlbiBsaW5lIHdpdGggaHRtbCBhZGRlZC5cIlxuIFtsaW5lIHRhZ3MtZm9yLWxpbmVdXG4gKGxldFxuICBbaHRtbC1wZXItY29sdW1uXG4gICAoaW50byBbXSB0YWdzLWZvci1saW5lLT5odG1sIChzb3J0LWJ5IDpjb2x1bW4gdGFncy1mb3ItbGluZSkpXG4gICBzZWdtZW50c1xuICAgKGxpbmUtPnNlZ21lbnRzIGxpbmUgdGFncy1mb3ItbGluZSB0cnVlKV1cbiAgKHN0ci9qb2luXG4gICAoaW50ZXJsZWF2ZSBzZWdtZW50cyAoY29uY2F0IGh0bWwtcGVyLWNvbHVtbiAocmVwZWF0IFwiXCIpKSkpKSlcbiJ9IHs6c3ltIGNvZGUtPmhpY2N1cCwgOm1ldGEgezpkb2MgIlJldHVybnMgdGhlIGNvZGUgaW4gdGhlIGdpdmVuIHN0cmluZyB3aXRoIEhpY2N1cC1jb21wYXRpYmxlIGRhdGEgc3RydWN0dXJlcyBhZGRlZC4iLCA6YXJnbGlzdHMgKFtjb2RlXSl9LCA6c291cmNlICIoZGVmblxuIGNvZGUtPmhpY2N1cFxuIFwiUmV0dXJucyB0aGUgY29kZSBpbiB0aGUgZ2l2ZW4gc3RyaW5nIHdpdGggSGljY3VwLWNvbXBhdGlibGUgZGF0YSBzdHJ1Y3R1cmVzIGFkZGVkLlwiXG4gW2NvZGVdXG4gKGxldFxuICBbbGluZXNcbiAgIChzcGxpdC1saW5lcyBjb2RlKVxuICAgdGFnc1xuICAgKHRzL2NvZGUtPnRhZ3MgY29kZSlcbiAgIGhpY2N1cFxuICAgKHBhcnNlLWxpbmVzIGxpbmUtPmhpY2N1cCBsaW5lcyB0YWdzKVxuICAgaGljY3VwXG4gICAoYXBwbHkgY29uY2F0IChpbnRlcnBvc2UgW1wiXFxuXCJdIGhpY2N1cCkpXVxuICAoc3RydWN0dXJpemUtaGljY3VwIGhpY2N1cCkpKVxuIn0gezpzeW0gc3BsaXQtbGluZXMsIDptZXRhIHs6ZG9jICJTcGxpdHMgdGhlIHN0cmluZyBpbnRvIGxpbmVzLiIsIDphcmdsaXN0cyAoW3NdKX0sIDpzb3VyY2UgIihkZWZuXG4gc3BsaXQtbGluZXNcbiBcIlNwbGl0cyB0aGUgc3RyaW5nIGludG8gbGluZXMuXCJcbiBbc11cbiAodmVjICguc3BsaXQgcyBcIlxcblwiIC0xKSkpXG4ifSB7OnN5bSBjb2RlLT5odG1sLCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0aGUgY29kZSBpbiB0aGUgZ2l2ZW4gc3RyaW5nIHdpdGggaHRtbCBhZGRlZC4iLCA6YXJnbGlzdHMgKFtjb2RlXSl9LCA6c291cmNlICIoZGVmblxuIGNvZGUtPmh0bWxcbiBcIlJldHVybnMgdGhlIGNvZGUgaW4gdGhlIGdpdmVuIHN0cmluZyB3aXRoIGh0bWwgYWRkZWQuXCJcbiBbY29kZV1cbiAobGV0XG4gIFtsaW5lc1xuICAgKHNwbGl0LWxpbmVzIGNvZGUpXG4gICB0YWdzXG4gICAodHMvY29kZS0+dGFncyBjb2RlKVxuICAgbGluZXNcbiAgIChwYXJzZS1saW5lcyBsaW5lLT5odG1sIGxpbmVzIHRhZ3MpXVxuICAoc3RyL2pvaW4gXFxuZXdsaW5lIGxpbmVzKSkpXG4ifSB7OnN5bSBsaW5lLT5oaWNjdXAsIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRoZSBnaXZlbiBsaW5lIHdpdGggSGljY3VwLWNvbXBhdGlibGUgZGF0YSBzdHJ1Y3R1cmVzIGFkZGVkLiIsIDphcmdsaXN0cyAoW2xpbmUgdGFncy1mb3ItbGluZV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBsaW5lLT5oaWNjdXBcbiBcIlJldHVybnMgdGhlIGdpdmVuIGxpbmUgd2l0aCBIaWNjdXAtY29tcGF0aWJsZSBkYXRhIHN0cnVjdHVyZXMgYWRkZWQuXCJcbiBbbGluZSB0YWdzLWZvci1saW5lXVxuIChsZXRcbiAgW2hpY2N1cC1wZXItY29sdW1uXG4gICAoaW50byBbXSB0YWdzLWZvci1saW5lLT5oaWNjdXAgKHNvcnQtYnkgOmNvbHVtbiB0YWdzLWZvci1saW5lKSlcbiAgIHNlZ21lbnRzXG4gICAobWFwIGxpc3QgKGxpbmUtPnNlZ21lbnRzIGxpbmUgdGFncy1mb3ItbGluZSBmYWxzZSkpXVxuICAoYXBwbHlcbiAgIGNvbmNhdFxuICAgKGludGVybGVhdmUgc2VnbWVudHMgKGNvbmNhdCBoaWNjdXAtcGVyLWNvbHVtbiAocmVwZWF0IG5pbCkpKSkpKVxuIn0gezpzeW0gdGFncy1mb3ItbGluZS0+aGljY3VwLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZlxuIHRhZ3MtZm9yLWxpbmUtPmhpY2N1cFxuIChjb21wXG4gIChwYXJ0aXRpb24tYnkgOmNvbHVtbilcbiAgKG1hcCAoZm4qIFtwMV9fNDMyMDgjXSAobWFwIHRhZy0+aGljY3VwIHAxX180MzIwOCMpKSkpKVxuIn0gezpzeW0gdGFnLT5odG1sLCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhbiBIVE1MIHN0cmluZyBmb3IgdGhlIGdpdmVuIHRhZyBkZXNjcmlwdGlvbi4iLCA6YXJnbGlzdHMgKFt0YWddKX0sIDpzb3VyY2UgIihkZWZuXG4gdGFnLT5odG1sXG4gXCJSZXR1cm5zIGFuIEhUTUwgc3RyaW5nIGZvciB0aGUgZ2l2ZW4gdGFnIGRlc2NyaXB0aW9uLlwiXG4gW3RhZ11cbiAoY29uZFxuICAoOmRlbGltaXRlcj8gdGFnKVxuICBcIjxzcGFuIGNsYXNzPSdkZWxpbWl0ZXInPlwiXG4gICg6ZXJyb3I/IHRhZylcbiAgKGZvcm1hdFxuICAgXCI8c3BhbiBjbGFzcz0nZXJyb3InIGRhdGEtbWVzc2FnZT0nJXMnPjwvc3Bhbj5cIlxuICAgKHNvbWUtPiAoOm1lc3NhZ2UgdGFnKSBlc2NhcGUtaHRtbC1zdHIpKVxuICAoOmJlZ2luPyB0YWcpXG4gIChsZXRcbiAgIFt2YWx1ZSAoOnZhbHVlIHRhZyldXG4gICAoY29uZFxuICAgIChzeW1ib2w/IHZhbHVlKVxuICAgIFwiPHNwYW4gY2xhc3M9J3N5bWJvbCc+XCJcbiAgICAobGlzdD8gdmFsdWUpXG4gICAgXCI8c3BhbiBjbGFzcz0nY29sbGVjdGlvbiBsaXN0Jz5cIlxuICAgICh2ZWN0b3I/IHZhbHVlKVxuICAgIFwiPHNwYW4gY2xhc3M9J2NvbGxlY3Rpb24gdmVjdG9yJz5cIlxuICAgIChtYXA/IHZhbHVlKVxuICAgIFwiPHNwYW4gY2xhc3M9J2NvbGxlY3Rpb24gbWFwJz5cIlxuICAgIChzZXQ/IHZhbHVlKVxuICAgIFwiPHNwYW4gY2xhc3M9J2NvbGxlY3Rpb24gc2V0Jz5cIlxuICAgIChudW1iZXI/IHZhbHVlKVxuICAgIFwiPHNwYW4gY2xhc3M9J251bWJlcic+XCJcbiAgICAoc3RyaW5nPyB2YWx1ZSlcbiAgICBcIjxzcGFuIGNsYXNzPSdzdHJpbmcnPlwiXG4gICAgKGtleXdvcmQ/IHZhbHVlKVxuICAgIFwiPHNwYW4gY2xhc3M9J2tleXdvcmQnPlwiXG4gICAgKG5pbD8gdmFsdWUpXG4gICAgXCI8c3BhbiBjbGFzcz0nbmlsJz5cIlxuICAgIChjb250YWlucz8gI3t0cnVlIGZhbHNlfSB2YWx1ZSlcbiAgICBcIjxzcGFuIGNsYXNzPSdib29sZWFuJz5cIlxuICAgIDplbHNlXG4gICAgXCI8c3Bhbj5cIikpXG4gICg6ZW5kPyB0YWcpXG4gIFwiPC9zcGFuPlwiKSlcbiJ9IHs6c3ltIGVzY2FwZS1odG1sLXN0ciwgOm1ldGEgezpkb2MgIkVzY2FwZXMgYW4gSFRNTCBzdHJpbmciLCA6YXJnbGlzdHMgKFtzXSl9LCA6c291cmNlICIoZGVmblxuIGVzY2FwZS1odG1sLXN0clxuIFwiRXNjYXBlcyBhbiBIVE1MIHN0cmluZ1wiXG4gW3NdXG4gKHN0ci9lc2NhcGVcbiAgc1xuICB7XFw8IFwiJmx0O1wiLCBcXD4gXCImZ3Q7XCIsIFxcJiBcIiZhbXA7XCIsIFxcXCIgXCImcXVvdDtcIiwgXFwnIFwiJmFwb3M7XCJ9KSlcbiJ9IHs6c3ltIHRhZ3MtZm9yLWxpbmUtPmh0bWwsIDptZXRhIHt9LCA6c291cmNlICIoZGVmXG4gdGFncy1mb3ItbGluZS0+aHRtbFxuIChjb21wXG4gIChwYXJ0aXRpb24tYnkgOmNvbHVtbilcbiAgKG1hcCAoZm4qIFtwMV9fNDMyMDcjXSAoc3RyL2pvaW4gKG1hcCB0YWctPmh0bWwgcDFfXzQzMjA3IykpKSkpKVxuIn0gezpzeW0gc3RydWN0dXJpemUtaGljY3VwLCA6bWV0YSB7OmRvYyAiVGFrZXMgYSBmbGF0IGxpc3Qgb2YgSGljY3VwLWNvbXBhdGlibGUgZGF0YSBhbmQgYWRkcyBzdHJ1Y3R1cmUgdG8gaXQuIiwgOmFyZ2xpc3RzIFtbZmxhdC1oaWNjdXBdIFtmbGF0LWhpY2N1cCBzdHJ1Y3R1cmVkLWhpY2N1cF1dfSwgOnNvdXJjZSAiKGRlZm5cbiBzdHJ1Y3R1cml6ZS1oaWNjdXBcbiBcIlRha2VzIGEgZmxhdCBsaXN0IG9mIEhpY2N1cC1jb21wYXRpYmxlIGRhdGEgYW5kIGFkZHMgc3RydWN0dXJlIHRvIGl0LlwiXG4gKFtmbGF0LWhpY2N1cF0gKHNlY29uZCAoc3RydWN0dXJpemUtaGljY3VwIGZsYXQtaGljY3VwIFs6c3Bhbl0pKSlcbiAoW2ZsYXQtaGljY3VwIHN0cnVjdHVyZWQtaGljY3VwXVxuICAobG9vcFxuICAgW2ZsYXQtaGljY3VwIGZsYXQtaGljY3VwIHN0cnVjdHVyZWQtaGljY3VwIHN0cnVjdHVyZWQtaGljY3VwXVxuICAgKGlmLWxldFxuICAgIFt0b2tlbiAoZmlyc3QgZmxhdC1oaWNjdXApXVxuICAgIChjb25kXG4gICAgIChzdHJpbmc/IHRva2VuKVxuICAgICAocmVjdXIgKHJlc3QgZmxhdC1oaWNjdXApIChjb25qIHN0cnVjdHVyZWQtaGljY3VwIHRva2VuKSlcbiAgICAgKHZlY3Rvcj8gdG9rZW4pXG4gICAgIChsZXRcbiAgICAgIFtbZmxhdCBzdHJ1Y3R1cmVkXSAoc3RydWN0dXJpemUtaGljY3VwIChyZXN0IGZsYXQtaGljY3VwKSB0b2tlbildXG4gICAgICAocmVjdXIgZmxhdCAoY29uaiBzdHJ1Y3R1cmVkLWhpY2N1cCBzdHJ1Y3R1cmVkKSkpKVxuICAgIFsocmVzdCBmbGF0LWhpY2N1cCkgc3RydWN0dXJlZC1oaWNjdXBdKSkpKVxuIn0gezpzeW0gZXNjYXBlLWh0bWwtY2hhciwgOm1ldGEgezpkb2MgIkVzY2FwZXMgYW4gSFRNTCBjaGFyYWN0ZXIiLCA6YXJnbGlzdHMgKFtzXSl9LCA6c291cmNlICIoZGVmblxuIGVzY2FwZS1odG1sLWNoYXJcbiBcIkVzY2FwZXMgYW4gSFRNTCBjaGFyYWN0ZXJcIlxuIFtzXVxuIChjYXNlIHMgXFw8IFwiJmx0O1wiIFxcPiBcIiZndDtcIiBcXCYgXCImYW1wO1wiIFxcXCIgXCImcXVvdDtcIiBcXCcgXCImYXBvcztcIiBzKSlcbiJ9IHs6c3ltIHBhcnNlLWxpbmVzLCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0aGUgbGluZXMgcGFyc2VkIHdpdGggdGhlIGdpdmVuIGZ1bmN0aW9uLiIsIDphcmdsaXN0cyAoW3BhcnNlLWZuIGxpbmVzIHRhZ3NdKX0sIDpzb3VyY2UgIihkZWZuXG4gcGFyc2UtbGluZXNcbiBcIlJldHVybnMgdGhlIGxpbmVzIHBhcnNlZCB3aXRoIHRoZSBnaXZlbiBmdW5jdGlvbi5cIlxuIFtwYXJzZS1mbiBsaW5lcyB0YWdzXVxuIChsb29wXG4gIFtpIDAgcmVzdWx0cyAodHJhbnNpZW50IFtdKV1cbiAgKGlmLWxldFxuICAgW2xpbmUgKGdldCBsaW5lcyBpKV1cbiAgIChyZWN1ciAoaW5jIGkpIChjb25qISByZXN1bHRzIChwYXJzZS1mbiBsaW5lIChnZXQgdGFncyAoaW5jIGkpKSkpKVxuICAgKHBlcnNpc3RlbnQhIHJlc3VsdHMpKSkpXG4ifSksIGRldnRvb2xzLmZvcm1hdHRlcnMucHJpbnRpbmcgKHs6c3ltIGFsdC1wcmludGVyLWltcGwsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbb2JqIHdyaXRlciBvcHRzXSl9LCA6c291cmNlICIoZGVmblxuIGFsdC1wcmludGVyLWltcGxcbiBbb2JqIHdyaXRlciBvcHRzXVxuIChiaW5kaW5nXG4gIFsqY3VycmVudC1zdGF0ZSogKGdldC1jdXJyZW50LXN0YXRlKV1cbiAgKHdoZW5cbiAgIChwcmVmIDpyZW5kZXItcGF0aC1hbm5vdGF0aW9ucylcbiAgIChhZGQtb2JqZWN0LXRvLWN1cnJlbnQtcGF0aC1pbmZvISBvYmopKVxuICAobGV0XG4gICBbezprZXlzIFttYXJrdXAtZGJdfVxuICAgIG9wdHNcbiAgICBjaXJjdWxhcj9cbiAgICAoaXMtY2lyY3VsYXI/IG9iailcbiAgICBpbm5lci13cml0ZXJcbiAgICAobWFrZS10ZW1wbGF0ZS13cml0ZXIgKDptYXJrdXAtZGIgb3B0cykpXG4gICAgcGF0aC1pbmZvXG4gICAgKGdldC1jdXJyZW50LXBhdGgtaW5mbyldXG4gICAocHVzaC1vYmplY3QtdG8tY3VycmVudC1oaXN0b3J5ISBvYmopXG4gICAoYWx0LXByaW50ZXItam9iIG9iaiBpbm5lci13cml0ZXIgb3B0cylcbiAgICgubWVyZ2VcbiAgICB3cml0ZXJcbiAgICAocG9zdC1wcm9jZXNzLXByaW50ZWQtb3V0cHV0XG4gICAgICguZ2V0LWdyb3VwIGlubmVyLXdyaXRlcilcbiAgICAgb2JqXG4gICAgIG1hcmt1cC1kYlxuICAgICBjaXJjdWxhcj9cbiAgICAgcGF0aC1pbmZvKSkpKSlcbiJ9IHs6c3ltIG1hcmt1cD8sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbdmFsdWVdKX0sIDpzb3VyY2UgIihkZWZuXG4gbWFya3VwP1xuIFt2YWx1ZV1cbiAoOmRldnRvb2xzLmZvcm1hdHRlcnMucHJpbnRpbmcvbWFya3VwIChtZXRhIHZhbHVlKSkpXG4ifSB7OnN5bSB3cmFwLWdyb3VwLWluLW1ldGEtaWYtbmVlZGVkLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2dyb3VwIHZhbHVlIG1hcmt1cC1kYl0pfSwgOnNvdXJjZSAiKGRlZm5cbiB3cmFwLWdyb3VwLWluLW1ldGEtaWYtbmVlZGVkXG4gW2dyb3VwIHZhbHVlIG1hcmt1cC1kYl1cbiAoaWZcbiAgKHNob3VsZC1yZW5kZXI/XG4gICA6cmVuZGVyLW1ldGFzXG4gICB2YWx1ZVxuICAgKGZuKiBbcDFfXzQyMTAwI10gKHNvbWU/IChtZXRhIHAxX180MjEwMCMpKSkpXG4gIFsoYXBwbHkgKHBhcnRpYWwgKDptZXRhLXdyYXBwZXIgbWFya3VwLWRiKSAobWV0YSB2YWx1ZSkpIGdyb3VwKV1cbiAgZ3JvdXApKVxuIn0gezpzeW0gbWFyay1hcy1tYXJrdXAsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbdmFsdWVdKX0sIDpzb3VyY2UgIihkZWZuXG4gbWFyay1hcy1tYXJrdXBcbiBbdmFsdWVdXG4gKHdpdGgtbWV0YSB2YWx1ZSB7OmRldnRvb2xzLmZvcm1hdHRlcnMucHJpbnRpbmcvbWFya3VwIHRydWV9KSlcbiJ9IHs6c3ltIGRldGVjdC1lZGdlLWNhc2UtYW5kLXBhdGNoLWl0LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2dyb3VwIG9iaiBtYXJrdXAtZGJdKX0sIDpzb3VyY2UgIihkZWZuXG4gZGV0ZWN0LWVkZ2UtY2FzZS1hbmQtcGF0Y2gtaXRcbiBbZ3JvdXAgb2JqIG1hcmt1cC1kYl1cbiAoY29uZFxuICAob3JcbiAgIChhbmRcbiAgICAoPSAoY291bnQgZ3JvdXApIDUpXG4gICAgKD0gKG50aCBncm91cCAwKSBcIiNvYmplY3RbXCIpXG4gICAgKD0gKG50aCBncm91cCA0KSBcIlxcXCJdXCIpKVxuICAgKGFuZFxuICAgICg9IChjb3VudCBncm91cCkgNSlcbiAgICAoPSAobnRoIGdyb3VwIDApIFwiI29iamVjdFtcIilcbiAgICAoPSAobnRoIGdyb3VwIDQpIFwiXVwiKSlcbiAgIChhbmRcbiAgICAoPSAoY291bnQgZ3JvdXApIDMpXG4gICAgKD0gKG50aCBncm91cCAwKSBcIiNvYmplY3RbXCIpXG4gICAgKD0gKG50aCBncm91cCAyKSBcIl1cIikpKVxuICBbKGJ1aWxkLW1hcmt1cCBtYXJrdXAtZGIgOm5hdGl2ZS1yZWZlcmVuY2Ugb2JqKV1cbiAgKGFuZFxuICAgKD0gKGNvdW50IGdyb3VwKSAzKVxuICAgKD0gKG50aCBncm91cCAwKSBcIiM8XCIpXG4gICAoPSAoc3RyIG9iaikgKG50aCBncm91cCAxKSlcbiAgICg9IChudGggZ3JvdXAgMikgXCI+XCIpKVxuICBbKG50aCBncm91cCAwKSAoYnVpbGQtbWFya3VwIDpuYXRpdmUtcmVmZXJlbmNlIG9iaikgKG50aCBncm91cCAyKV1cbiAgOmVsc2VcbiAgZ3JvdXApKVxuIn0gezpzeW0gd3JhcC1ncm91cC1pbi1yZWZlcmVuY2UtaWYtbmVlZGVkLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2dyb3VwIG9iaiBtYXJrdXAtZGJdKX0sIDpzb3VyY2UgIihkZWZuXG4gd3JhcC1ncm91cC1pbi1yZWZlcmVuY2UtaWYtbmVlZGVkXG4gW2dyb3VwIG9iaiBtYXJrdXAtZGJdXG4gKGlmXG4gIChhbmRcbiAgIChub3QgKGFscmVhZHktcmVmZXJlbmNlPyBncm91cCkpXG4gICAob3IgKGV4cGFuZGFibGU/IG9iaikgKGFiYnJldmlhdGVkPyBncm91cCkpKVxuICAobGV0XG4gICBbZXhwYW5kYWJsZS1tYXJrdXBcbiAgICAoYXBwbHkgYnVpbGQtbWFya3VwIG1hcmt1cC1kYiA6ZXhwYW5kYWJsZSBncm91cClcbiAgICBzdXJyb2dhdGUtbWFya3VwXG4gICAgKGJ1aWxkLW1hcmt1cFxuICAgICBtYXJrdXAtZGJcbiAgICAgOnJhdy1zdXJyb2dhdGVcbiAgICAgb2JqXG4gICAgIGV4cGFuZGFibGUtbWFya3VwXG4gICAgIDp0YXJnZXQpXG4gICAgcmVmZXJlbmNlLW1hcmt1cFxuICAgIChidWlsZC1tYXJrdXAgbWFya3VwLWRiIDpyZWZlcmVuY2Ugc3Vycm9nYXRlLW1hcmt1cCldXG4gICBbcmVmZXJlbmNlLW1hcmt1cF0pXG4gIGdyb3VwKSlcbiJ9IHs6c3ltIG1hbmFnZWQtcHJpbnQtdmlhLXdyaXRlciwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt2YWx1ZSB0YWcgbWFya3VwLWRiXSl9LCA6c291cmNlICIoZGVmblxuIG1hbmFnZWQtcHJpbnQtdmlhLXdyaXRlclxuIFt2YWx1ZSB0YWcgbWFya3VwLWRiXVxuIChtYW5hZ2VkLXByaW50XG4gIHRhZ1xuICBtYXJrdXAtZGJcbiAgKGZuIFt3cml0ZXIgb3B0c10gKHByLXNlcS13cml0ZXIgW3ZhbHVlXSB3cml0ZXIgb3B0cykpKSlcbiJ9IHs6c3ltIGFscmVhZHktcmVmZXJlbmNlPywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtncm91cF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBhbHJlYWR5LXJlZmVyZW5jZT9cbiBbZ3JvdXBdXG4gKGlmLWxldCBbdGFnIChmaXJzdCAoZmlyc3QgZ3JvdXApKV0gKD0gdGFnIFwicmVmZXJlbmNlXCIpKSlcbiJ9IHs6c3ltIHdyYXAtdmFsdWUtYXMtcmVmZXJlbmNlLWlmLW5lZWRlZCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFttYXJrdXAtZGIgdmFsdWVdKX0sIDpzb3VyY2UgIihkZWZuXG4gd3JhcC12YWx1ZS1hcy1yZWZlcmVuY2UtaWYtbmVlZGVkXG4gW21hcmt1cC1kYiB2YWx1ZV1cbiAoaWZcbiAgKG9yIChkaXJlY3RseS1wcmludGFibGU/IHZhbHVlKSAobWFya3VwPyB2YWx1ZSkpXG4gIHZhbHVlXG4gIChidWlsZC1tYXJrdXAgbWFya3VwLWRiIDpyZWZlcmVuY2Utc3Vycm9nYXRlIHZhbHVlKSkpXG4ifSB7OnN5bSBtYW5hZ2VkLXByaW50LXZpYS1wcm90b2NvbCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt2YWx1ZSB0YWcgbWFya3VwLWRiXSl9LCA6c291cmNlICIoZGVmblxuIG1hbmFnZWQtcHJpbnQtdmlhLXByb3RvY29sXG4gW3ZhbHVlIHRhZyBtYXJrdXAtZGJdXG4gKG1hbmFnZWQtcHJpbnRcbiAgdGFnXG4gIG1hcmt1cC1kYlxuICAoZm4gW3dyaXRlciBvcHRzXSAoLXByLXdyaXRlciB2YWx1ZSB3cml0ZXIgb3B0cykpKSlcbiJ9IHs6c3ltIGFsdC1wcmludGVyLWpvYiwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtvYmogd3JpdGVyIG9wdHNdKX0sIDpzb3VyY2UgIihkZWZuXG4gYWx0LXByaW50ZXItam9iXG4gW29iaiB3cml0ZXIgb3B0c11cbiAobGV0XG4gIFt7OmtleXMgW21hcmt1cC1kYl19IG9wdHNdXG4gIChpZlxuICAgKG9yXG4gICAgKHNhZmUtY2FsbCBzYXRpc2ZpZXM/IGZhbHNlIElEZXZ0b29sc0Zvcm1hdCBvYmopXG4gICAgKHNhZmUtY2FsbCBzYXRpc2ZpZXM/IGZhbHNlIElGb3JtYXQgb2JqKSlcbiAgICgtd3JpdGUgd3JpdGVyIChidWlsZC1tYXJrdXAgbWFya3VwLWRiIDpyZWZlcmVuY2Ugb2JqKSlcbiAgIChpZi1sZXRcbiAgICBbYXRvbWljLW1hcmt1cCAoYnVpbGQtbWFya3VwIG1hcmt1cC1kYiA6YXRvbWljIG9iaildXG4gICAgKC13cml0ZSB3cml0ZXIgYXRvbWljLW1hcmt1cClcbiAgICAobGV0XG4gICAgIFtkZWZhdWx0LWltcGxcbiAgICAgICg6ZmFsbGJhY2staW1wbCBvcHRzKVxuICAgICAgaW5uZXItb3B0c1xuICAgICAgKGlmICg9ICpwcmludC1sZXZlbCogMSkgKGFzc29jIG9wdHMgOnByaW50LWxlbmd0aCAwKSBvcHRzKV1cbiAgICAgKGRlZmF1bHQtaW1wbCBvYmogd3JpdGVyIGlubmVyLW9wdHMpKSkpKSlcbiJ9IHs6c3ltIG1ha2UtdGVtcGxhdGUtd3JpdGVyLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW21hcmt1cC1kYl0pfSwgOnNvdXJjZSAiKGRlZm4gbWFrZS10ZW1wbGF0ZS13cml0ZXIgW21hcmt1cC1kYl0gKFRlbXBsYXRlV3JpdGVyLiBbXSBtYXJrdXAtZGIpKVxuIn0gezpzeW0gd3JhcC1ncm91cC1pbi1jaXJjdWxhci13YXJuaW5nLWlmLW5lZWRlZCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtncm91cCBtYXJrdXAtZGIgY2lyY3VsYXI/XSl9LCA6c291cmNlICIoZGVmblxuIHdyYXAtZ3JvdXAtaW4tY2lyY3VsYXItd2FybmluZy1pZi1uZWVkZWRcbiBbZ3JvdXAgbWFya3VwLWRiIGNpcmN1bGFyP11cbiAoaWZcbiAgY2lyY3VsYXI/XG4gIFsoYXBwbHkgYnVpbGQtbWFya3VwIG1hcmt1cC1kYiA6Y2lyY3VsYXItcmVmZXJlbmNlIGdyb3VwKV1cbiAgZ3JvdXApKVxuIn0gezpzeW0gbWFuYWdlZC1wcmludCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt0YWcgbWFya3VwLWRiIHByaW50ZXJdKX0sIDpzb3VyY2UgIihkZWZuXG4gbWFuYWdlZC1wcmludFxuIFt0YWcgbWFya3VwLWRiIHByaW50ZXJdXG4gKGxldFxuICBbd3JpdGVyXG4gICAobWFrZS10ZW1wbGF0ZS13cml0ZXIgbWFya3VwLWRiKVxuICAgb3B0c1xuICAgezphbHQtaW1wbCBhbHQtcHJpbnRlci1pbXBsLFxuICAgIDptYXJrdXAtZGIgbWFya3VwLWRiLFxuICAgIDpwcmludC1sZW5ndGggKHByZWYgOm1heC1oZWFkZXItZWxlbWVudHMpLFxuICAgIDptb3JlLW1hcmtlciAocHJlZiA6bW9yZS1tYXJrZXIpfVxuICAgam9iLWZuXG4gICAoZm4qIFtdIChwcmludGVyIHdyaXRlciBvcHRzKSldXG4gIChpZi1sZXRcbiAgIFttYW5hZ2VkLXByaW50LWxldmVsIChnZXQtbWFuYWdlZC1wcmludC1sZXZlbCldXG4gICAoYmluZGluZ1xuICAgIFsqcHJpbnQtbGV2ZWwqIG1hbmFnZWQtcHJpbnQtbGV2ZWxdXG4gICAgKHVwZGF0ZS1jdXJyZW50LXN0YXRlIVxuICAgICAoZm4qIFtwMV9fNDIxMDEjXSAoc2V0LW1hbmFnZWQtcHJpbnQtbGV2ZWwgcDFfXzQyMTAxIyBuaWwpKSlcbiAgICAoam9iLWZuKSlcbiAgIChqb2ItZm4pKVxuICAoY29uY2F0IFsocHJlZiB0YWcpXSAoLmdldC1ncm91cCB3cml0ZXIpKSkpXG4ifSB7OnN5bSBidWlsZC1tYXJrdXAsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbbWFya3VwLWRiIGZuLWtleSAmIGFyZ3NdKX0sIDpzb3VyY2UgIihkZWZuXG4gYnVpbGQtbWFya3VwXG4gW21hcmt1cC1kYiBmbi1rZXkgJiBhcmdzXVxuIChsZXRcbiAgW2YgKGdldCBtYXJrdXAtZGIgZm4ta2V5KV1cbiAgKGFzc2VydCBmIChzdHIgXCJtaXNzaW5nIG1hcmt1cCBtZXRob2QgaW4gbWFya3VwLWRiOiBcIiBmbi1rZXkpKVxuICAobWFyay1hcy1tYXJrdXAgKGFwcGx5IGYgYXJncykpKSlcbiJ9IHs6c3ltIHBvc3QtcHJvY2Vzcy1wcmludGVkLW91dHB1dCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtvdXRwdXQtZ3JvdXAgb2JqIG1hcmt1cC1kYiBjaXJjdWxhcj8gcGF0aC1pbmZvXSl9LCA6c291cmNlICIoZGVmblxuIHBvc3QtcHJvY2Vzcy1wcmludGVkLW91dHB1dFxuIFtvdXRwdXQtZ3JvdXAgb2JqIG1hcmt1cC1kYiBjaXJjdWxhcj8gcGF0aC1pbmZvXVxuICgtPlxuICBvdXRwdXQtZ3JvdXBcbiAgKGRldGVjdC1lZGdlLWNhc2UtYW5kLXBhdGNoLWl0IG9iaiBtYXJrdXAtZGIpXG4gICh3cmFwLWdyb3VwLWluLXJlZmVyZW5jZS1pZi1uZWVkZWQgb2JqIG1hcmt1cC1kYilcbiAgKHdyYXAtZ3JvdXAtaW4tY2lyY3VsYXItd2FybmluZy1pZi1uZWVkZWQgbWFya3VwLWRiIGNpcmN1bGFyPylcbiAgKHdyYXAtZ3JvdXAtaW4tbWV0YS1pZi1uZWVkZWQgb2JqIG1hcmt1cC1kYilcbiAgKHdyYXAtZ3JvdXAtd2l0aC1wYXRoLWFubm90YXRpb24gcGF0aC1pbmZvKSkpXG4ifSB7OnN5bSB3cmFwLWdyb3VwLXdpdGgtcGF0aC1hbm5vdGF0aW9uLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2dyb3VwIHBhdGgtaW5mb10pfSwgOnNvdXJjZSAiKGRlZm5cbiB3cmFwLWdyb3VwLXdpdGgtcGF0aC1hbm5vdGF0aW9uXG4gW2dyb3VwIHBhdGgtaW5mb11cbiAoaWZcbiAgKGFuZCAocHJlZiA6cmVuZGVyLXBhdGgtYW5ub3RhdGlvbnMpIChzb21lPyBwYXRoLWluZm8pKVxuICBbKGNvbmNhdCBbXCJhbm5vdGF0aW9uXCIge1wicGF0aFwiIChpbnRvLWFycmF5IHBhdGgtaW5mbyl9XSBncm91cCldXG4gIGdyb3VwKSlcbiJ9KSwgb2FrY2xqcy50b29scy5yZWFkZXIgKHs6c3ltIHJlYWQrc3RyaW5nLCA6bWV0YSB7OmRvYyAiTGlrZSByZWFkLCBhbmQgdGFraW5nIHRoZSBzYW1lIGFyZ3MuIHJlYWRlciBtdXN0IGJlIGEgU291cmNlTG9nZ2luZ1B1c2hiYWNrUmVhZGVyLlxuICBSZXR1cm5zIGEgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIG9iamVjdCByZWFkIGFuZCB0aGUgKHdoaXRlc3BhY2UtdHJpbW1lZCkgc3RyaW5nIHJlYWQuIiwgOmFyZ2xpc3RzIFtbc3RyZWFtXSBbc3RyZWFtIGVvZi1lcnJvcj8gZW9mLXZhbHVlXSBbb3B0cyBzdHJlYW1dXX0sIDpzb3VyY2UgIihkZWZuXG4gcmVhZCtzdHJpbmdcbiBcIkxpa2UgcmVhZCwgYW5kIHRha2luZyB0aGUgc2FtZSBhcmdzLiByZWFkZXIgbXVzdCBiZSBhIFNvdXJjZUxvZ2dpbmdQdXNoYmFja1JlYWRlci5cXG4gIFJldHVybnMgYSB2ZWN0b3IgY29udGFpbmluZyB0aGUgb2JqZWN0IHJlYWQgYW5kIHRoZSAod2hpdGVzcGFjZS10cmltbWVkKSBzdHJpbmcgcmVhZC5cIlxuIChbc3RyZWFtXSAocmVhZCtzdHJpbmcgc3RyZWFtIHRydWUgbmlsKSlcbiAoW3N0cmVhbSBlb2YtZXJyb3I/IGVvZi12YWx1ZV1cbiAgKGxldFxuICAgW2J1ZlxuICAgIChmbiBbcmVhZGVyXSAoc3RyICg6YnVmZmVyIEAoLi1mcmFtZXMgc3RyZWFtKSkpKVxuICAgIG9mZnNldFxuICAgIChjb3VudCAoYnVmIHN0cmVhbSkpXG4gICAgb1xuICAgIChsb2ctc291cmNlIHN0cmVhbSAocmVhZCBzdHJlYW0gZW9mLWVycm9yPyBlb2YtdmFsdWUpKVxuICAgIHNcbiAgICAoLnRyaW0gKHN1YnMgKGJ1ZiBzdHJlYW0pIG9mZnNldCkpXVxuICAgW28gc10pKVxuIChbb3B0cyBzdHJlYW1dXG4gIChsZXRcbiAgIFtidWZcbiAgICAoZm4gW3JlYWRlcl0gKHN0ciAoOmJ1ZmZlciBAKC4tZnJhbWVzIHN0cmVhbSkpKSlcbiAgICBvZmZzZXRcbiAgICAoY291bnQgKGJ1ZiBzdHJlYW0pKVxuICAgIG9cbiAgICAobG9nLXNvdXJjZSBzdHJlYW0gKHJlYWQgb3B0cyBzdHJlYW0pKVxuICAgIHNcbiAgICAoLnRyaW0gKHN1YnMgKGJ1ZiBzdHJlYW0pIG9mZnNldCkpXVxuICAgW28gc10pKSlcbiJ9IHs6c3ltIGJvb2w/LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuIGJvb2w/IFt4XSAob3IgKGluc3RhbmNlPyBqcy9Cb29sZWFuIHgpICh0cnVlPyB4KSAoZmFsc2U/IHgpKSlcbiJ9IHs6c3ltICpzdXBwcmVzcy1yZWFkKiwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgKnN1cHByZXNzLXJlYWQqIGZhbHNlKVxuIn0gezpzeW0gKmRlZmF1bHQtZGF0YS1yZWFkZXItZm4qLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZlxuICpkZWZhdWx0LWRhdGEtcmVhZGVyLWZuKlxuIFwiV2hlbiBubyBkYXRhIHJlYWRlciBpcyBmb3VuZCBmb3IgYSB0YWcgYW5kICpkZWZhdWx0LWRhdGEtcmVhZGVyLWZuKlxcbiAgaXMgbm9uLW5pbCwgaXQgd2lsbCBiZSBjYWxsZWQgd2l0aCB0d28gYXJndW1lbnRzLCB0aGUgdGFnIGFuZCB0aGUgdmFsdWUuXFxuICBJZiAqZGVmYXVsdC1kYXRhLXJlYWRlci1mbiogaXMgbmlsICh0aGUgZGVmYXVsdCB2YWx1ZSksIGFuIGV4Y2VwdGlvblxcbiAgd2lsbCBiZSB0aHJvd24gZm9yIHRoZSB1bmtub3duIHRhZy5cIlxuIChmbiBbdGFnIHZhbHVlXSkpXG4ifSB7OnN5bSByZWFkLCA6bWV0YSB7OmRvYyAiUmVhZHMgdGhlIGZpcnN0IG9iamVjdCBmcm9tIGFuIElQdXNoYmFja1JlYWRlci5cbiAgIFJldHVybnMgdGhlIG9iamVjdCByZWFkLiBJZiBFT0YsIHRocm93cyBpZiBlb2YtZXJyb3I/IGlzIHRydWUuXG4gICBPdGhlcndpc2UgcmV0dXJucyBzZW50aW5lbC4gSWYgbm8gc3RyZWFtIGlzIHByb3ZpZGVkLCAqaW4qIHdpbGwgYmUgdXNlZC5cblxuICAgT3B0cyBpcyBhIHBlcnNpc3RlbnQgbWFwIHdpdGggdmFsaWQga2V5czpcbiAgICA6cmVhZC1jb25kIC0gOmFsbG93IHRvIHByb2Nlc3MgcmVhZGVyIGNvbmRpdGlvbmFscywgb3JcbiAgICAgICAgICAgICAgICAgOnByZXNlcnZlIHRvIGtlZXAgYWxsIGJyYW5jaGVzXG4gICAgOmZlYXR1cmVzIC0gcGVyc2lzdGVudCBzZXQgb2YgZmVhdHVyZSBrZXl3b3JkcyBmb3IgcmVhZGVyIGNvbmRpdGlvbmFsc1xuICAgIDplb2YgLSBvbiBlb2YsIHJldHVybiB2YWx1ZSB1bmxlc3MgOmVvZnRocm93LCB0aGVuIHRocm93LlxuICAgICAgICAgICBpZiBub3Qgc3BlY2lmaWVkLCB3aWxsIHRocm93XG5cbiAgIFRvIHJlYWQgZGF0YSBzdHJ1Y3R1cmVzIG9ubHksIHVzZSBjbGpzLnRvb2xzLnJlYWRlci5lZG4vcmVhZFxuXG4gICBOb3RlIHRoYXQgdGhlIGZ1bmN0aW9uIHNpZ25hdHVyZSBvZiBjbGpzLnRvb2xzLnJlYWRlci9yZWFkIGFuZFxuICAgY2xqcy50b29scy5yZWFkZXIuZWRuL3JlYWQgaXMgbm90IHRoZSBzYW1lIGZvciBlb2YtaGFuZGxpbmciLCA6YXJnbGlzdHMgW1tyZWFkZXJdIFt7ZW9mIDplb2YsIDphcyBvcHRzLCA6b3Ige2VvZiA6ZW9mdGhyb3d9fSByZWFkZXJdIFtyZWFkZXIgZW9mLWVycm9yPyBzZW50aW5lbF1dfSwgOnNvdXJjZSAiKGRlZm5cbiByZWFkXG4gXCJSZWFkcyB0aGUgZmlyc3Qgb2JqZWN0IGZyb20gYW4gSVB1c2hiYWNrUmVhZGVyLlxcbiAgIFJldHVybnMgdGhlIG9iamVjdCByZWFkLiBJZiBFT0YsIHRocm93cyBpZiBlb2YtZXJyb3I/IGlzIHRydWUuXFxuICAgT3RoZXJ3aXNlIHJldHVybnMgc2VudGluZWwuIElmIG5vIHN0cmVhbSBpcyBwcm92aWRlZCwgKmluKiB3aWxsIGJlIHVzZWQuXFxuXFxuICAgT3B0cyBpcyBhIHBlcnNpc3RlbnQgbWFwIHdpdGggdmFsaWQga2V5czpcXG4gICAgOnJlYWQtY29uZCAtIDphbGxvdyB0byBwcm9jZXNzIHJlYWRlciBjb25kaXRpb25hbHMsIG9yXFxuICAgICAgICAgICAgICAgICA6cHJlc2VydmUgdG8ga2VlcCBhbGwgYnJhbmNoZXNcXG4gICAgOmZlYXR1cmVzIC0gcGVyc2lzdGVudCBzZXQgb2YgZmVhdHVyZSBrZXl3b3JkcyBmb3IgcmVhZGVyIGNvbmRpdGlvbmFsc1xcbiAgICA6ZW9mIC0gb24gZW9mLCByZXR1cm4gdmFsdWUgdW5sZXNzIDplb2Z0aHJvdywgdGhlbiB0aHJvdy5cXG4gICAgICAgICAgIGlmIG5vdCBzcGVjaWZpZWQsIHdpbGwgdGhyb3dcXG5cXG4gICBUbyByZWFkIGRhdGEgc3RydWN0dXJlcyBvbmx5LCB1c2UgY2xqcy50b29scy5yZWFkZXIuZWRuL3JlYWRcXG5cXG4gICBOb3RlIHRoYXQgdGhlIGZ1bmN0aW9uIHNpZ25hdHVyZSBvZiBjbGpzLnRvb2xzLnJlYWRlci9yZWFkIGFuZFxcbiAgIGNsanMudG9vbHMucmVhZGVyLmVkbi9yZWFkIGlzIG5vdCB0aGUgc2FtZSBmb3IgZW9mLWhhbmRsaW5nXCJcbiB7OmFyZ2xpc3RzICcoW3JlYWRlcl0gW29wdHMgcmVhZGVyXSBbcmVhZGVyIGVvZi1lcnJvcj8gZW9mLXZhbHVlXSl9XG4gKFtyZWFkZXJdIChyZWFkIHJlYWRlciB0cnVlIG5pbCkpXG4gKFt7ZW9mIDplb2YsIDphcyBvcHRzLCA6b3Ige2VvZiA6ZW9mdGhyb3d9fSByZWFkZXJdXG4gIChyZWFkKiByZWFkZXIgKD0gZW9mIDplb2Z0aHJvdykgZW9mIG5pbCBvcHRzICh0by1hcnJheSBbXSkpKVxuIChbcmVhZGVyIGVvZi1lcnJvcj8gc2VudGluZWxdXG4gIChyZWFkKiByZWFkZXIgZW9mLWVycm9yPyBzZW50aW5lbCBuaWwge30gKHRvLWFycmF5IFtdKSkpKVxuIn0gezpzeW0gZGVmYXVsdC1kYXRhLXJlYWRlcnMsIDptZXRhIHt9LCA6c291cmNlICIoZGVmXG4gZGVmYXVsdC1kYXRhLXJlYWRlcnNcbiBcIkRlZmF1bHQgbWFwIG9mIGRhdGEgcmVhZGVyIGZ1bmN0aW9ucyBwcm92aWRlZCBieSBDbG9qdXJlLlxcbiAgTWF5IGJlIG92ZXJyaWRkZW4gYnkgYmluZGluZyAqZGF0YS1yZWFkZXJzKlwiXG4ge30pXG4ifSB7OnN5bSAqZGF0YS1yZWFkZXJzKiwgOm1ldGEge30sIDpzb3VyY2UgIihkZWZcbiAqZGF0YS1yZWFkZXJzKlxuIFwiTWFwIGZyb20gcmVhZGVyIHRhZyBzeW1ib2xzIHRvIGRhdGEgcmVhZGVyIFZhcnMuXFxuICBSZWFkZXIgdGFncyB3aXRob3V0IG5hbWVzcGFjZSBxdWFsaWZpZXJzIGFyZSByZXNlcnZlZCBmb3IgQ2xvanVyZS5cXG4gIFRoaXMgbGlnaHQgdmVyc2lvbiBvZiB0b29scy5yZWFkZXIgaGFzIG5vIGltcGxlbWVudGF0aW9uIGZvciBkZWZhdWx0XFxuICByZWFkZXIgdGFncyBzdWNoIGFzICNpbnN0IGFuZCAjdXVpZC5cIlxuIHt9KVxuIn0gezpzeW0gKnJlYWQtZGVsaW0qLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiAqcmVhZC1kZWxpbSogZmFsc2UpXG4ifSB7OnN5bSByZXNvbHZlLXN5bWJvbCwgOm1ldGEgezpkb2MgIlJlc29sdmUgYSBzeW1ib2wgcyBpbnRvIGl0cyBmdWxseSBxdWFsaWZpZWQgbmFtZXNwYWNlIHZlcnNpb24iLCA6YXJnbGlzdHMgKFtzXSl9LCA6c291cmNlICIoZGVmblxuIHJlc29sdmUtc3ltYm9sXG4gXCJSZXNvbHZlIGEgc3ltYm9sIHMgaW50byBpdHMgZnVsbHkgcXVhbGlmaWVkIG5hbWVzcGFjZSB2ZXJzaW9uXCJcbiBbc11cbiBzKVxuIn0gezpzeW0gKmFsaWFzLW1hcCosIDptZXRhIHt9LCA6c291cmNlICIoZGVmXG4gKmFsaWFzLW1hcCpcbiBcIk1hcCBmcm9tIG5zIGFsaWFzIHRvIG5zLCBpZiBub24tbmlsLCBpdCB3aWxsIGJlIHVzZWQgdG8gcmVzb2x2ZSByZWFkLXRpbWVcXG4gICBucyBhbGlhc2VzLlxcblxcbiAgIERlZmF1bHRzIHRvIG5pbFwiXG4gbmlsKVxuIn0gezpzeW0gKndyYXAtdmFsdWUtYW5kLWFkZC1tZXRhZGF0YT8qLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiAqd3JhcC12YWx1ZS1hbmQtYWRkLW1ldGFkYXRhPyogZmFsc2UpXG4ifSB7OnN5bSByZWFkLXJlZ2V4LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3JkciBjaCBvcHRzIHBlbmRpbmctZm9ybXNdKX0sIDpzb3VyY2UgIihkZWZuXG4gcmVhZC1yZWdleFxuIFtyZHIgY2ggb3B0cyBwZW5kaW5nLWZvcm1zXVxuIChsZXRcbiAgW3NiIChTdHJpbmdCdWZmZXIuKV1cbiAgKGxvb3BcbiAgIFtjaCAocmVhZC1jaGFyIHJkcildXG4gICAoaWZcbiAgICAoaWRlbnRpY2FsPyBcXFwiIGNoKVxuICAgIChzdHIgc2IpXG4gICAgKGlmXG4gICAgIChuaWw/IGNoKVxuICAgICAoZXJyL3Rocm93LWVvZi1yZWFkaW5nIHJkciA6cmVnZXggc2IpXG4gICAgIChkb1xuICAgICAgKC5hcHBlbmQgc2IgY2gpXG4gICAgICAod2hlblxuICAgICAgIChpZGVudGljYWw/IFxcXFwgY2gpXG4gICAgICAgKGxldFxuICAgICAgICBbY2ggKHJlYWQtY2hhciByZHIpXVxuICAgICAgICAoaWYgKG5pbD8gY2gpIChlcnIvdGhyb3ctZW9mLXJlYWRpbmcgcmRyIDpyZWdleCBzYikpXG4gICAgICAgICguYXBwZW5kIHNiIGNoKSkpXG4gICAgICAocmVjdXIgKHJlYWQtY2hhciByZHIpKSkpKSkpKVxuIn0gezpzeW0gc2IsIDptZXRhIHt9LCA6c291cmNlICIoZGVmIHNiIChTdHJpbmdCdWZmZXIuKSlcbiJ9IHs6c3ltIHJlYWQtc3RyaW5nLCA6bWV0YSB7OmRvYyAiUmVhZHMgb25lIG9iamVjdCBmcm9tIHRoZSBzdHJpbmcgcy5cbiAgIFJldHVybnMgbmlsIHdoZW4gcyBpcyBuaWwgb3IgZW1wdHkuXG5cbiAgIFRvIHJlYWQgZGF0YSBzdHJ1Y3R1cmVzIG9ubHksIHVzZSBjbGpzLnRvb2xzLnJlYWRlci5lZG4vcmVhZC1zdHJpbmdcblxuICAgTm90ZSB0aGF0IHRoZSBmdW5jdGlvbiBzaWduYXR1cmUgb2YgY2xqcy50b29scy5yZWFkZXIvcmVhZC1zdHJpbmcgYW5kXG4gICBjbGpzLnRvb2xzLnJlYWRlci5lZG4vcmVhZC1zdHJpbmcgaXMgbm90IHRoZSBzYW1lIGZvciBlb2YtaGFuZGxpbmciLCA6YXJnbGlzdHMgW1tzXSBbb3B0cyBzXV19LCA6c291cmNlICIoZGVmblxuIHJlYWQtc3RyaW5nXG4gXCJSZWFkcyBvbmUgb2JqZWN0IGZyb20gdGhlIHN0cmluZyBzLlxcbiAgIFJldHVybnMgbmlsIHdoZW4gcyBpcyBuaWwgb3IgZW1wdHkuXFxuXFxuICAgVG8gcmVhZCBkYXRhIHN0cnVjdHVyZXMgb25seSwgdXNlIGNsanMudG9vbHMucmVhZGVyLmVkbi9yZWFkLXN0cmluZ1xcblxcbiAgIE5vdGUgdGhhdCB0aGUgZnVuY3Rpb24gc2lnbmF0dXJlIG9mIGNsanMudG9vbHMucmVhZGVyL3JlYWQtc3RyaW5nIGFuZFxcbiAgIGNsanMudG9vbHMucmVhZGVyLmVkbi9yZWFkLXN0cmluZyBpcyBub3QgdGhlIHNhbWUgZm9yIGVvZi1oYW5kbGluZ1wiXG4gKFtzXSAocmVhZC1zdHJpbmcge30gcykpXG4gKFtvcHRzIHNdXG4gICh3aGVuXG4gICAoYW5kIHMgKG5vdCAoaWRlbnRpY2FsPyBzIFwiXCIpKSlcbiAgIChyZWFkIG9wdHMgKHN0cmluZy1wdXNoLWJhY2stcmVhZGVyIHMpKSkpKVxuIn0gezpzeW0gbWFwLWZ1bmMsIDptZXRhIHs6ZG9jICJEZWNpZGUgd2hpY2ggbWFwIHR5cGUgdG8gdXNlLCBhcnJheS1tYXAgaWYgbGVzcyB0aGFuIDE2IGVsZW1lbnRzIiwgOmFyZ2xpc3RzIChbY29sbF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBtYXAtZnVuY1xuIFwiRGVjaWRlIHdoaWNoIG1hcCB0eXBlIHRvIHVzZSwgYXJyYXktbWFwIGlmIGxlc3MgdGhhbiAxNiBlbGVtZW50c1wiXG4gW2NvbGxdXG4gKGlmICg+PSAoY291bnQgY29sbCkgMTYpICdjbGpzLmNvcmUvaGFzaC1tYXAgJ2NsanMuY29yZS9hcnJheS1tYXApKVxuIn0pLCBkZXZ0b29scy5mb3JtYXR0ZXJzLnRlbXBsYXRpbmcgKHs6c3ltIG1ha2UtdGVtcGxhdGUsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbdGFnIHN0eWxlICYgY2hpbGRyZW5dKX0sIDpzb3VyY2UgIihkZWZuXG4gbWFrZS10ZW1wbGF0ZVxuIFt0YWcgc3R5bGUgJiBjaGlsZHJlbl1cbiAobGV0XG4gIFt0YWdcbiAgIChwcmVmIHRhZylcbiAgIHN0eWxlXG4gICAocHJlZiBzdHlsZSlcbiAgIHRlbXBsYXRlXG4gICAobWFyay1hcy10ZW1wbGF0ZSFcbiAgICAjanMgW3RhZyAoaWYgKGVtcHR5PyBzdHlsZSkgI2pzIHt9ICNqcyB7XCJzdHlsZVwiIHN0eWxlfSldKV1cbiAgKGRvc2VxXG4gICBbY2hpbGQgY2hpbGRyZW5dXG4gICAoaWZcbiAgICAoc29tZT8gY2hpbGQpXG4gICAgKGlmXG4gICAgIChjb2xsPyBjaGlsZClcbiAgICAgKC5hcHBseVxuICAgICAgKHVuY2hlY2tlZC1hZ2V0IHRlbXBsYXRlIFwicHVzaFwiKVxuICAgICAgdGVtcGxhdGVcbiAgICAgIChtYXJrLWFzLXRlbXBsYXRlISAoaW50by1hcnJheSAoa2VlcCBwcmVmIGNoaWxkKSkpKVxuICAgICAoaWYtbGV0XG4gICAgICBbY2hpbGQtdmFsdWUgKHByZWYgY2hpbGQpXVxuICAgICAgKC5wdXNoIHRlbXBsYXRlIGNoaWxkLXZhbHVlKSkpKSlcbiAgdGVtcGxhdGUpKVxuIn0gezpzeW0gbWFyay1hcy1zdXJyb2dhdGUhLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3ZhbHVlXSl9LCA6c291cmNlICIoZGVmbiBtYXJrLWFzLXN1cnJvZ2F0ZSEgW3ZhbHVlXSAoc3BlY2lmeSEgdmFsdWUgSVN1cnJvZ2F0ZSkgdmFsdWUpXG4ifSB7OnN5bSBjb25jYXQtdGVtcGxhdGVzISwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt0ZW1wbGF0ZSAmIHRlbXBsYXRlc10pfSwgOnNvdXJjZSAiKGRlZm5cbiBjb25jYXQtdGVtcGxhdGVzIVxuIFt0ZW1wbGF0ZSAmIHRlbXBsYXRlc11cbiAobWFyay1hcy10ZW1wbGF0ZSFcbiAgKC5hcHBseVxuICAgKG9nZXQgdGVtcGxhdGUgXCJjb25jYXRcIilcbiAgIHRlbXBsYXRlXG4gICAoaW50by1hcnJheSAobWFwIGludG8tYXJyYXkgKGtlZXAgcHJlZiB0ZW1wbGF0ZXMpKSkpKSlcbiJ9IHs6c3ltIG1ha2UtcmVmZXJlbmNlLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW29iamVjdCAmIFtzdGF0ZS1vdmVycmlkZS1mbl1dKX0sIDpzb3VyY2UgIihkZWZuXG4gbWFrZS1yZWZlcmVuY2VcbiBbb2JqZWN0ICYgW3N0YXRlLW92ZXJyaWRlLWZuXV1cbiB7OnByZSBbKG9yIChuaWw/IHN0YXRlLW92ZXJyaWRlLWZuKSAoZm4/IHN0YXRlLW92ZXJyaWRlLWZuKSldfVxuIChpZlxuICAobmlsPyBvYmplY3QpXG4gIChtYWtlLXRlbXBsYXRlIDpzcGFuIDpuaWwtc3R5bGUgOm5pbC1sYWJlbClcbiAgKGxldFxuICAgW3N1Yi1zdGF0ZVxuICAgIChpZlxuICAgICAoc29tZT8gc3RhdGUtb3ZlcnJpZGUtZm4pXG4gICAgIChzdGF0ZS1vdmVycmlkZS1mbiAoZ2V0LWN1cnJlbnQtc3RhdGUpKVxuICAgICAoZ2V0LWN1cnJlbnQtc3RhdGUpKV1cbiAgIChtYWtlLWdyb3VwIFwib2JqZWN0XCIgI2pzIHtcIm9iamVjdFwiIG9iamVjdCwgXCJjb25maWdcIiBzdWItc3RhdGV9KSkpKVxuIn0gezpzeW0gbWFrZS1zdXJyb2dhdGUsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIFtbb2JqZWN0XSBbb2JqZWN0IGhlYWRlcl0gW29iamVjdCBoZWFkZXIgYm9keV0gW29iamVjdCBoZWFkZXIgYm9keSBzdGFydC1pbmRleF1dfSwgOnNvdXJjZSAiKGRlZm5cbiBtYWtlLXN1cnJvZ2F0ZVxuIChbb2JqZWN0XSAobWFrZS1zdXJyb2dhdGUgb2JqZWN0IG5pbCkpXG4gKFtvYmplY3QgaGVhZGVyXSAobWFrZS1zdXJyb2dhdGUgb2JqZWN0IGhlYWRlciBuaWwpKVxuIChbb2JqZWN0IGhlYWRlciBib2R5XSAobWFrZS1zdXJyb2dhdGUgb2JqZWN0IGhlYWRlciBib2R5IDApKVxuIChbb2JqZWN0IGhlYWRlciBib2R5IHN0YXJ0LWluZGV4XVxuICAobWFyay1hcy1zdXJyb2dhdGUhXG4gICAoanMtb2JqXG4gICAgXCJ0YXJnZXRcIlxuICAgIG9iamVjdFxuICAgIFwiaGVhZGVyXCJcbiAgICBoZWFkZXJcbiAgICBcImJvZHlcIlxuICAgIGJvZHlcbiAgICBcInN0YXJ0SW5kZXhcIlxuICAgIChvciBzdGFydC1pbmRleCAwKSkpKSlcbiJ9IHs6c3ltIHBwcmludC1yZW5kZXItcGF0aCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtwYXRoXSl9LCA6c291cmNlICIoZGVmbiBwcHJpbnQtcmVuZGVyLXBhdGggW3BhdGhdIChwcHJpbnQtc3RyIHBhdGgpKVxuIn0gezpzeW0gZ2V0LXN1cnJvZ2F0ZS1ib2R5LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3N1cnJvZ2F0ZV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBnZXQtc3Vycm9nYXRlLWJvZHlcbiBbc3Vycm9nYXRlXVxuIHs6cHJlIFsoc3Vycm9nYXRlPyBzdXJyb2dhdGUpXX1cbiAob2dldCBzdXJyb2dhdGUgXCJib2R5XCIpKVxuIn0gezpzeW0gcmVmZXJlbmNlPywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt2YWx1ZV0pfSwgOnNvdXJjZSAiKGRlZm5cbiByZWZlcmVuY2U/XG4gW3ZhbHVlXVxuIChhbmQgKGdyb3VwPyB2YWx1ZSkgKD0gKHVuY2hlY2tlZC1hZ2V0IHZhbHVlIDApIFwib2JqZWN0XCIpKSlcbiJ9IHs6c3ltIHJlcGxhY2UtZm5zLXdpdGgtbWFya2VycywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtzdGFja10pfSwgOnNvdXJjZSAiKGRlZm5cbiByZXBsYWNlLWZucy13aXRoLW1hcmtlcnNcbiBbc3RhY2tdXG4gKGxldCBbZiAoZm4gW3ZdIChpZiAoZm4/IHYpIFwiIyNmbiMjXCIgdikpXSAocHJld2FsayBmIHN0YWNrKSkpXG4ifSB7OnN5bSAqY3VycmVudC1yZW5kZXItcGF0aCosIDptZXRhIHt9LCA6c291cmNlICIoZGVmICpjdXJyZW50LXJlbmRlci1wYXRoKiBbXSlcbiJ9IHs6c3ltIHJlbmRlci1zdWJ0cmVlLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3RhZyBjaGlsZHJlbl0pfSwgOnNvdXJjZSAiKGRlZm5cbiByZW5kZXItc3VidHJlZVxuIFt0YWcgY2hpbGRyZW5dXG4gKGxldFxuICBbW2h0bWwtdGFnIHN0eWxlXSB0YWddXG4gIChhcHBseVxuICAgbWFrZS10ZW1wbGF0ZVxuICAgaHRtbC10YWdcbiAgIHN0eWxlXG4gICAobWFwIHJlbmRlci1qc29uLW1sKiAocmVtb3ZlIGVtcHR5aXNoPyAobWFwIHByZWYgY2hpbGRyZW4pKSkpKSlcbiJ9IHs6c3ltIGVtcHR5aXNoPywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt2XSl9LCA6c291cmNlICIoZGVmblxuIGVtcHR5aXNoP1xuIFt2XVxuIChpZiAob3IgKHNlcWFibGU/IHYpIChhcnJheT8gdikgKHN0cmluZz8gdikpIChlbXB0eT8gdikgZmFsc2UpKVxuIn0gezpzeW0gYXNzZXJ0LWZhaWxlZC1tYXJrdXAtcmVuZGVyaW5nLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2luaXRpYWwtdmFsdWUgdmFsdWVdKX0sIDpzb3VyY2UgIihkZWZuXG4gYXNzZXJ0LWZhaWxlZC1tYXJrdXAtcmVuZGVyaW5nXG4gW2luaXRpYWwtdmFsdWUgdmFsdWVdXG4gKGFzc2VydFxuICBmYWxzZVxuICAoc3RyXG4gICBcInJlc3VsdCBvZiBtYXJrdXAgcmVuZGVyaW5nIG11c3QgYmUgYSB0ZW1wbGF0ZSxcXG5cIlxuICAgXCJyZXNvbHZlZCB0byBcIlxuICAgKHBwcmludC1zdHIgdmFsdWUpXG4gICBcImluaXRpYWwgdmFsdWU6IFwiXG4gICAocHByaW50LXN0ciBpbml0aWFsLXZhbHVlKSkpKVxuIn0gezpzeW0gcHByaW50LXJlbmRlci1jYWxscywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtzdGFja10pfSwgOnNvdXJjZSAiKGRlZm4gcHByaW50LXJlbmRlci1jYWxscyBbc3RhY2tdIChtYXAgcHByaW50LXN0ciBzdGFjaykpXG4ifSB7OnN5bSByZW5kZXItbWFya3VwLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3ZhbHVlXSl9LCA6c291cmNlICIoZGVmbiByZW5kZXItbWFya3VwIFt2YWx1ZV0gKHJlbmRlci1tYXJrdXAqIHZhbHVlIHZhbHVlKSlcbiJ9IHs6c3ltIGFzc2VydC1tYXJrdXAtZXJyb3IsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbbXNnXSl9LCA6c291cmNlICIoZGVmblxuIGFzc2VydC1tYXJrdXAtZXJyb3JcbiBbbXNnXVxuIChhc3NlcnRcbiAgZmFsc2VcbiAgKHN0clxuICAgbXNnXG4gICBcIlxcblwiXG4gICBcIlJlbmRlciBwYXRoOiBcIlxuICAgKHBwcmludC1yZW5kZXItcGF0aCAqY3VycmVudC1yZW5kZXItcGF0aCopXG4gICBcIlxcblwiXG4gICBcIlJlbmRlciBzdGFjazpcXG5cIlxuICAgKHBwcmludC1yZW5kZXItc3RhY2sgKmN1cnJlbnQtcmVuZGVyLXN0YWNrKikpKSlcbiJ9IHs6c3ltIG1ha2UtYW5ub3RhdGlvbiwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtkYXRhIG1hcmt1cHNdKX0sIDpzb3VyY2UgIihkZWZuXG4gbWFrZS1hbm5vdGF0aW9uXG4gW2RhdGEgbWFya3Vwc11cbiAoYXBwbHkgbWFrZS1ncm91cCBcImFubm90YXRpb25cIiAoY2xqLT5qcyBkYXRhKSBtYXJrdXBzKSlcbiJ9IHs6c3ltIHN1cnJvZ2F0ZS1tYXJrdXA/LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW21hcmt1cF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBzdXJyb2dhdGUtbWFya3VwP1xuIFttYXJrdXBdXG4gKGFuZCAoc2VxdWVudGlhbD8gbWFya3VwKSAoPSAoZmlyc3QgbWFya3VwKSBcInN1cnJvZ2F0ZVwiKSkpXG4ifSB7OnN5bSByZW5kZXItbWFya3VwKiwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtpbml0aWFsLXZhbHVlIHZhbHVlXSl9LCA6c291cmNlICIoZGVmblxuIHJlbmRlci1tYXJrdXAqXG4gW2luaXRpYWwtdmFsdWUgdmFsdWVdXG4gKGNvbmRcbiAgKGZuPyB2YWx1ZSlcbiAgKHJlY3VyIGluaXRpYWwtdmFsdWUgKHZhbHVlKSlcbiAgKGtleXdvcmQ/IHZhbHVlKVxuICAocmVjdXIgaW5pdGlhbC12YWx1ZSAocHJlZiB2YWx1ZSkpXG4gIChzZXF1ZW50aWFsPyB2YWx1ZSlcbiAgKHJlY3VyIGluaXRpYWwtdmFsdWUgKHJlbmRlci1qc29uLW1sIHZhbHVlKSlcbiAgKHRlbXBsYXRlPyB2YWx1ZSlcbiAgdmFsdWVcbiAgKHN1cnJvZ2F0ZT8gdmFsdWUpXG4gIHZhbHVlXG4gIChyZWZlcmVuY2U/IHZhbHVlKVxuICB2YWx1ZVxuICA6ZWxzZVxuICAoYXNzZXJ0LWZhaWxlZC1tYXJrdXAtcmVuZGVyaW5nIGluaXRpYWwtdmFsdWUgdmFsdWUpKSlcbiJ9IHs6c3ltIGFkZC1zdGFjay1zZXBhcmF0b3JzLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3N0YWNrXSl9LCA6c291cmNlICIoZGVmbiBhZGQtc3RhY2stc2VwYXJhdG9ycyBbc3RhY2tdIChpbnRlcnBvc2UgXCItLS0tLS0tLS0tLS0tXCIgc3RhY2spKVxuIn0gezpzeW0gbWFrZS1ncm91cCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFsmIGl0ZW1zXSl9LCA6c291cmNlICIoZGVmblxuIG1ha2UtZ3JvdXBcbiBbJiBpdGVtc11cbiAobGV0XG4gIFtncm91cCAobWFyay1hcy1ncm91cCEgI2pzIFtdKV1cbiAgKGRvc2VxXG4gICBbaXRlbSBpdGVtc11cbiAgIChpZlxuICAgIChzb21lPyBpdGVtKVxuICAgIChpZlxuICAgICAoY29sbD8gaXRlbSlcbiAgICAgKC5hcHBseVxuICAgICAgKHVuY2hlY2tlZC1hZ2V0IGdyb3VwIFwicHVzaFwiKVxuICAgICAgZ3JvdXBcbiAgICAgIChtYXJrLWFzLWdyb3VwISAoaW50by1hcnJheSBpdGVtKSkpXG4gICAgICgucHVzaCBncm91cCAocHJlZiBpdGVtKSkpKSlcbiAgZ3JvdXApKVxuIn0gezpzeW0gZ2V0LXN1cnJvZ2F0ZS1oZWFkZXIsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbc3Vycm9nYXRlXSl9LCA6c291cmNlICIoZGVmblxuIGdldC1zdXJyb2dhdGUtaGVhZGVyXG4gW3N1cnJvZ2F0ZV1cbiB7OnByZSBbKHN1cnJvZ2F0ZT8gc3Vycm9nYXRlKV19XG4gKG9nZXQgc3Vycm9nYXRlIFwiaGVhZGVyXCIpKVxuIn0gezpzeW0gcmVuZGVyLWpzb24tbWwqLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW21hcmt1cF0pfSwgOnNvdXJjZSAiKGRlZm5cbiByZW5kZXItanNvbi1tbCpcbiBbbWFya3VwXVxuIChpZi1ub3RcbiAgKHNlcXVlbnRpYWw/IG1hcmt1cClcbiAgbWFya3VwXG4gIChiaW5kaW5nXG4gICBbKmN1cnJlbnQtcmVuZGVyLXBhdGgqIChjb25qICpjdXJyZW50LXJlbmRlci1wYXRoKiAoZmlyc3QgbWFya3VwKSldXG4gICAobGV0XG4gICAgW3RhZyAocHJlZiAoZmlyc3QgbWFya3VwKSldXG4gICAgKGNvbmRcbiAgICAgKHN0cmluZz8gdGFnKVxuICAgICAocmVuZGVyLXNwZWNpYWwgdGFnIChyZXN0IG1hcmt1cCkpXG4gICAgIChzZXF1ZW50aWFsPyB0YWcpXG4gICAgIChyZW5kZXItc3VidHJlZSB0YWcgKHJlc3QgbWFya3VwKSlcbiAgICAgOmVsc2VcbiAgICAgKGFzc2VydC1tYXJrdXAtZXJyb3JcbiAgICAgIChzdHJcbiAgICAgICBcImludmFsaWQganNvbi1tbCBtYXJrdXAgYXQgXCJcbiAgICAgICAocHJpbnQtcHJldmlldyBtYXJrdXApXG4gICAgICAgXCI6XCIpKSkpKSkpXG4ifSB7OnN5bSBzdXJyb2dhdGU/LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3ZhbHVlXSl9LCA6c291cmNlICIoZGVmbiBzdXJyb2dhdGU/IFt2YWx1ZV0gKHNhdGlzZmllcz8gSVN1cnJvZ2F0ZSB2YWx1ZSkpXG4ifSB7OnN5bSByZW5kZXItanNvbi1tbCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFttYXJrdXBdKX0sIDpzb3VyY2UgIihkZWZuXG4gcmVuZGVyLWpzb24tbWxcbiBbbWFya3VwXVxuIChiaW5kaW5nXG4gIFsqY3VycmVudC1yZW5kZXItc3RhY2sqXG4gICAoY29uaiAqY3VycmVudC1yZW5kZXItc3RhY2sqIG1hcmt1cClcbiAgICpjdXJyZW50LXJlbmRlci1wYXRoKlxuICAgKGNvbmogKmN1cnJlbnQtcmVuZGVyLXBhdGgqIFwiPHJlbmRlci1qc29uLW1sPlwiKV1cbiAgKHJlbmRlci1qc29uLW1sKiBtYXJrdXApKSlcbiJ9IHs6c3ltICpjdXJyZW50LXJlbmRlci1zdGFjayosIDptZXRhIHt9LCA6c291cmNlICIoZGVmICpjdXJyZW50LXJlbmRlci1zdGFjayogW10pXG4ifSB7OnN5bSBtYXJrLWFzLWdyb3VwISwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt2YWx1ZV0pfSwgOnNvdXJjZSAiKGRlZm4gbWFyay1hcy1ncm91cCEgW3ZhbHVlXSAoc3BlY2lmeSEgdmFsdWUgSUdyb3VwKSB2YWx1ZSlcbiJ9IHs6c3ltIGdldC1zdXJyb2dhdGUtdGFyZ2V0LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3N1cnJvZ2F0ZV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBnZXQtc3Vycm9nYXRlLXRhcmdldFxuIFtzdXJyb2dhdGVdXG4gezpwcmUgWyhzdXJyb2dhdGU/IHN1cnJvZ2F0ZSldfVxuIChvZ2V0IHN1cnJvZ2F0ZSBcInRhcmdldFwiKSlcbiJ9IHs6c3ltIGdldC1zdXJyb2dhdGUtc3RhcnQtaW5kZXgsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbc3Vycm9nYXRlXSl9LCA6c291cmNlICIoZGVmblxuIGdldC1zdXJyb2dhdGUtc3RhcnQtaW5kZXhcbiBbc3Vycm9nYXRlXVxuIHs6cHJlIFsoc3Vycm9nYXRlPyBzdXJyb2dhdGUpXX1cbiAob2dldCBzdXJyb2dhdGUgXCJzdGFydEluZGV4XCIpKVxuIn0gezpzeW0gbWFyay1hcy10ZW1wbGF0ZSEsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbdmFsdWVdKX0sIDpzb3VyY2UgIihkZWZuIG1hcmstYXMtdGVtcGxhdGUhIFt2YWx1ZV0gKHNwZWNpZnkhIHZhbHVlIElUZW1wbGF0ZSkgdmFsdWUpXG4ifSB7OnN5bSBwcHJpbnQtcmVuZGVyLXN0YWNrLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3N0YWNrXSl9LCA6c291cmNlICIoZGVmblxuIHBwcmludC1yZW5kZXItc3RhY2tcbiBbc3RhY2tdXG4gKHN0cmluZy9qb2luXG4gIFwiXFxuXCJcbiAgKC0+XG4gICBzdGFja1xuICAgcmV2ZXJzZVxuICAgcmVwbGFjZS1mbnMtd2l0aC1tYXJrZXJzXG4gICBwcHJpbnQtcmVuZGVyLWNhbGxzXG4gICBhZGQtc3RhY2stc2VwYXJhdG9ycykpKVxuIn0gezpzeW0gdGVtcGxhdGU/LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3ZhbHVlXSl9LCA6c291cmNlICIoZGVmbiB0ZW1wbGF0ZT8gW3ZhbHVlXSAoc2F0aXNmaWVzPyBJVGVtcGxhdGUgdmFsdWUpKVxuIn0gezpzeW0gcmVuZGVyLXNwZWNpYWwsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbbmFtZSBhcmdzXSl9LCA6c291cmNlICIoZGVmblxuIHJlbmRlci1zcGVjaWFsXG4gW25hbWUgYXJnc11cbiAoY2FzZVxuICBuYW1lXG4gIFwic3Vycm9nYXRlXCJcbiAgKGxldFxuICAgW29iaiAoZmlyc3QgYXJncykgY29udmVydGVkLWFyZ3MgKG1hcCByZW5kZXItanNvbi1tbCogKHJlc3QgYXJncykpXVxuICAgKGFwcGx5IG1ha2Utc3Vycm9nYXRlIChjb25jYXQgW29ial0gY29udmVydGVkLWFyZ3MpKSlcbiAgXCJyZWZlcmVuY2VcIlxuICAobGV0XG4gICBbb2JqXG4gICAgKGZpcnN0IGFyZ3MpXG4gICAgY29udmVydGVkLW9ialxuICAgIChpZiAoc3Vycm9nYXRlLW1hcmt1cD8gb2JqKSAocmVuZGVyLWpzb24tbWwqIG9iaikgb2JqKV1cbiAgIChhcHBseSBtYWtlLXJlZmVyZW5jZSAoY29uY2F0IFtjb252ZXJ0ZWQtb2JqXSAocmVzdCBhcmdzKSkpKVxuICBcImFubm90YXRpb25cIlxuICAobGV0XG4gICBbZGF0YSAoZmlyc3QgYXJncykgY29udmVydGVkLWFyZ3MgKG1hcCByZW5kZXItanNvbi1tbCogKHJlc3QgYXJncykpXVxuICAgKG1ha2UtYW5ub3RhdGlvbiBkYXRhIGNvbnZlcnRlZC1hcmdzKSlcbiAgKGFzc2VydC1tYXJrdXAtZXJyb3JcbiAgIChzdHIgXCJubyBtYXRjaGluZyBzcGVjaWFsIHRhZyBuYW1lOiAnXCIgbmFtZSBcIidcIikpKSlcbiJ9IHs6c3ltIHByaW50LXByZXZpZXcsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbbWFya3VwXSl9LCA6c291cmNlICIoZGVmblxuIHByaW50LXByZXZpZXdcbiBbbWFya3VwXVxuIChiaW5kaW5nIFsqcHJpbnQtbGV2ZWwqIDFdIChwci1zdHIgbWFya3VwKSkpXG4ifSB7OnN5bSBncm91cD8sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbdmFsdWVdKX0sIDpzb3VyY2UgIihkZWZuIGdyb3VwPyBbdmFsdWVdIChzYXRpc2ZpZXM/IElHcm91cCB2YWx1ZSkpXG4ifSB7OnN5bSBleHRlbmQtdGVtcGxhdGUhLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3RlbXBsYXRlICYgYXJnc10pfSwgOnNvdXJjZSAiKGRlZm5cbiBleHRlbmQtdGVtcGxhdGUhXG4gW3RlbXBsYXRlICYgYXJnc11cbiAoY29uY2F0LXRlbXBsYXRlcyEgdGVtcGxhdGUgYXJncykpXG4ifSksIHRvZG9zLm9kb3lsZS1hbHQgKHs6c3ltIGluaXQsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbc2Vzc2lvbl0pfSwgOnNvdXJjZSAiKGRlZm5cbiBpbml0XG4gW3Nlc3Npb25dXG4gKC0+XG4gIChyZWR1Y2VcbiAgIChmbiBbc2Vzc2lvbiB0b2RvXSAoby9pbnNlcnQgc2Vzc2lvbiAoOmRiL2lkIHRvZG8pIHRvZG8pKVxuICAgc2Vzc2lvblxuICAgY29yZS90b2Rvcy1hbHQpXG4gIChvL2luc2VydCA6dG9kb3Mub2RveWxlLWFsdC90b2RvcyA6dG9kb3Mub2RveWxlLWFsdC9ieS1pZCB7fSlcbiAgby9maXJlLXJ1bGVzKSlcbiJ9IHs6c3ltIGluaXRpYWwtc2Vzc2lvbiwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgaW5pdGlhbC1zZXNzaW9uIChpbml0IChyZWR1Y2Ugby9hZGQtcnVsZSAoby8tPnNlc3Npb24pIHJ1bGVzKSkpXG4ifSB7OnN5bSBxdWVyeSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtzZXNzaW9uXSl9LCA6c291cmNlICIoZGVmblxuIHF1ZXJ5XG4gW3Nlc3Npb25dXG4gKGZpcnN0IChvL3F1ZXJ5LWFsbCBzZXNzaW9uIDp0b2Rvcy5vZG95bGUtYWx0L3Jvb3QtdG9kbykpKVxuIn0gezpzeW0gcnVuLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2l0ZXJhdGlvbnNdKX0sIDpzb3VyY2UgIihkZWZuXG4gcnVuXG4gW2l0ZXJhdGlvbnNdXG4gKGxvb3BcbiAgW3Nlc3Npb24gaW5pdGlhbC1zZXNzaW9uIGNvdW50ZXIgMF1cbiAgKGlmXG4gICAoPSBjb3VudGVyIGl0ZXJhdGlvbnMpXG4gICBzZXNzaW9uXG4gICAocmVjdXIgKHRpY2sgc2Vzc2lvbiBjb3VudGVyKSAoaW5jIGNvdW50ZXIpKSkpKVxuIn0pLCBjbG9qdXJlLnRlc3QuY2hlY2suaW1wbCAoezpzeW0gZ2V0LWN1cnJlbnQtdGltZS1taWxsaXMsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbXSl9LCA6c291cmNlICIoZGVmblxuIGdldC1jdXJyZW50LXRpbWUtbWlsbGlzXG4gW11cbiAjPyg6Y2xqIChTeXN0ZW0vY3VycmVudFRpbWVNaWxsaXMpIDpjbGpzICgudmFsdWVPZiAoanMvRGF0ZS4pKSkpXG4ifSksIGNsanMudG9vbHMucmVhZGVyICh7OnN5bSByZWFkK3N0cmluZywgOm1ldGEgezpkb2MgIkxpa2UgcmVhZCwgYW5kIHRha2luZyB0aGUgc2FtZSBhcmdzLiByZWFkZXIgbXVzdCBiZSBhIFNvdXJjZUxvZ2dpbmdQdXNoYmFja1JlYWRlci5cbiAgUmV0dXJucyBhIHZlY3RvciBjb250YWluaW5nIHRoZSBvYmplY3QgcmVhZCBhbmQgdGhlICh3aGl0ZXNwYWNlLXRyaW1tZWQpIHN0cmluZyByZWFkLiIsIDphcmdsaXN0cyBbW3N0cmVhbV0gW3N0cmVhbSBlb2YtZXJyb3I/IGVvZi12YWx1ZV0gW29wdHMgc3RyZWFtXV19LCA6c291cmNlICIoZGVmblxuIHJlYWQrc3RyaW5nXG4gXCJMaWtlIHJlYWQsIGFuZCB0YWtpbmcgdGhlIHNhbWUgYXJncy4gcmVhZGVyIG11c3QgYmUgYSBTb3VyY2VMb2dnaW5nUHVzaGJhY2tSZWFkZXIuXFxuICBSZXR1cm5zIGEgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIG9iamVjdCByZWFkIGFuZCB0aGUgKHdoaXRlc3BhY2UtdHJpbW1lZCkgc3RyaW5nIHJlYWQuXCJcbiAoW3N0cmVhbV0gKHJlYWQrc3RyaW5nIHN0cmVhbSB0cnVlIG5pbCkpXG4gKFtzdHJlYW0gZW9mLWVycm9yPyBlb2YtdmFsdWVdXG4gIChsZXRcbiAgIFtidWZcbiAgICAoZm4gW3JlYWRlcl0gKHN0ciAoOmJ1ZmZlciBAKC4tZnJhbWVzIHN0cmVhbSkpKSlcbiAgICBvZmZzZXRcbiAgICAoY291bnQgKGJ1ZiBzdHJlYW0pKVxuICAgIG9cbiAgICAobG9nLXNvdXJjZSBzdHJlYW0gKHJlYWQgc3RyZWFtIGVvZi1lcnJvcj8gZW9mLXZhbHVlKSlcbiAgICBzXG4gICAgKC50cmltIChzdWJzIChidWYgc3RyZWFtKSBvZmZzZXQpKV1cbiAgIFtvIHNdKSlcbiAoW29wdHMgc3RyZWFtXVxuICAobGV0XG4gICBbYnVmXG4gICAgKGZuIFtyZWFkZXJdIChzdHIgKDpidWZmZXIgQCguLWZyYW1lcyBzdHJlYW0pKSkpXG4gICAgb2Zmc2V0XG4gICAgKGNvdW50IChidWYgc3RyZWFtKSlcbiAgICBvXG4gICAgKGxvZy1zb3VyY2Ugc3RyZWFtIChyZWFkIG9wdHMgc3RyZWFtKSlcbiAgICBzXG4gICAgKC50cmltIChzdWJzIChidWYgc3RyZWFtKSBvZmZzZXQpKV1cbiAgIFtvIHNdKSkpXG4ifSB7OnN5bSBib29sPywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmbiBib29sPyBbeF0gKG9yIChpbnN0YW5jZT8ganMvQm9vbGVhbiB4KSAodHJ1ZT8geCkgKGZhbHNlPyB4KSkpXG4ifSB7OnN5bSAqc3VwcHJlc3MtcmVhZCosIDptZXRhIHt9LCA6c291cmNlICIoZGVmICpzdXBwcmVzcy1yZWFkKiBmYWxzZSlcbiJ9IHs6c3ltICpkZWZhdWx0LWRhdGEtcmVhZGVyLWZuKiwgOm1ldGEge30sIDpzb3VyY2UgIihkZWZcbiAqZGVmYXVsdC1kYXRhLXJlYWRlci1mbipcbiBcIldoZW4gbm8gZGF0YSByZWFkZXIgaXMgZm91bmQgZm9yIGEgdGFnIGFuZCAqZGVmYXVsdC1kYXRhLXJlYWRlci1mbipcXG4gIGlzIG5vbi1uaWwsIGl0IHdpbGwgYmUgY2FsbGVkIHdpdGggdHdvIGFyZ3VtZW50cywgdGhlIHRhZyBhbmQgdGhlIHZhbHVlLlxcbiAgSWYgKmRlZmF1bHQtZGF0YS1yZWFkZXItZm4qIGlzIG5pbCAodGhlIGRlZmF1bHQgdmFsdWUpLCBhbiBleGNlcHRpb25cXG4gIHdpbGwgYmUgdGhyb3duIGZvciB0aGUgdW5rbm93biB0YWcuXCJcbiBuaWwpXG4ifSB7OnN5bSByZWFkLCA6bWV0YSB7OmRvYyAiUmVhZHMgdGhlIGZpcnN0IG9iamVjdCBmcm9tIGFuIElQdXNoYmFja1JlYWRlci5cbiAgIFJldHVybnMgdGhlIG9iamVjdCByZWFkLiBJZiBFT0YsIHRocm93cyBpZiBlb2YtZXJyb3I/IGlzIHRydWUuXG4gICBPdGhlcndpc2UgcmV0dXJucyBzZW50aW5lbC4gSWYgbm8gc3RyZWFtIGlzIHByb3ZpZGVkLCAqaW4qIHdpbGwgYmUgdXNlZC5cblxuICAgT3B0cyBpcyBhIHBlcnNpc3RlbnQgbWFwIHdpdGggdmFsaWQga2V5czpcbiAgICA6cmVhZC1jb25kIC0gOmFsbG93IHRvIHByb2Nlc3MgcmVhZGVyIGNvbmRpdGlvbmFscywgb3JcbiAgICAgICAgICAgICAgICAgOnByZXNlcnZlIHRvIGtlZXAgYWxsIGJyYW5jaGVzXG4gICAgOmZlYXR1cmVzIC0gcGVyc2lzdGVudCBzZXQgb2YgZmVhdHVyZSBrZXl3b3JkcyBmb3IgcmVhZGVyIGNvbmRpdGlvbmFsc1xuICAgIDplb2YgLSBvbiBlb2YsIHJldHVybiB2YWx1ZSB1bmxlc3MgOmVvZnRocm93LCB0aGVuIHRocm93LlxuICAgICAgICAgICBpZiBub3Qgc3BlY2lmaWVkLCB3aWxsIHRocm93XG5cbiAgIFRvIHJlYWQgZGF0YSBzdHJ1Y3R1cmVzIG9ubHksIHVzZSBjbGpzLnRvb2xzLnJlYWRlci5lZG4vcmVhZFxuXG4gICBOb3RlIHRoYXQgdGhlIGZ1bmN0aW9uIHNpZ25hdHVyZSBvZiBjbGpzLnRvb2xzLnJlYWRlci9yZWFkIGFuZFxuICAgY2xqcy50b29scy5yZWFkZXIuZWRuL3JlYWQgaXMgbm90IHRoZSBzYW1lIGZvciBlb2YtaGFuZGxpbmciLCA6YXJnbGlzdHMgW1tyZWFkZXJdIFt7ZW9mIDplb2YsIDphcyBvcHRzLCA6b3Ige2VvZiA6ZW9mdGhyb3d9fSByZWFkZXJdIFtyZWFkZXIgZW9mLWVycm9yPyBzZW50aW5lbF1dfSwgOnNvdXJjZSAiKGRlZm5cbiByZWFkXG4gXCJSZWFkcyB0aGUgZmlyc3Qgb2JqZWN0IGZyb20gYW4gSVB1c2hiYWNrUmVhZGVyLlxcbiAgIFJldHVybnMgdGhlIG9iamVjdCByZWFkLiBJZiBFT0YsIHRocm93cyBpZiBlb2YtZXJyb3I/IGlzIHRydWUuXFxuICAgT3RoZXJ3aXNlIHJldHVybnMgc2VudGluZWwuIElmIG5vIHN0cmVhbSBpcyBwcm92aWRlZCwgKmluKiB3aWxsIGJlIHVzZWQuXFxuXFxuICAgT3B0cyBpcyBhIHBlcnNpc3RlbnQgbWFwIHdpdGggdmFsaWQga2V5czpcXG4gICAgOnJlYWQtY29uZCAtIDphbGxvdyB0byBwcm9jZXNzIHJlYWRlciBjb25kaXRpb25hbHMsIG9yXFxuICAgICAgICAgICAgICAgICA6cHJlc2VydmUgdG8ga2VlcCBhbGwgYnJhbmNoZXNcXG4gICAgOmZlYXR1cmVzIC0gcGVyc2lzdGVudCBzZXQgb2YgZmVhdHVyZSBrZXl3b3JkcyBmb3IgcmVhZGVyIGNvbmRpdGlvbmFsc1xcbiAgICA6ZW9mIC0gb24gZW9mLCByZXR1cm4gdmFsdWUgdW5sZXNzIDplb2Z0aHJvdywgdGhlbiB0aHJvdy5cXG4gICAgICAgICAgIGlmIG5vdCBzcGVjaWZpZWQsIHdpbGwgdGhyb3dcXG5cXG4gICBUbyByZWFkIGRhdGEgc3RydWN0dXJlcyBvbmx5LCB1c2UgY2xqcy50b29scy5yZWFkZXIuZWRuL3JlYWRcXG5cXG4gICBOb3RlIHRoYXQgdGhlIGZ1bmN0aW9uIHNpZ25hdHVyZSBvZiBjbGpzLnRvb2xzLnJlYWRlci9yZWFkIGFuZFxcbiAgIGNsanMudG9vbHMucmVhZGVyLmVkbi9yZWFkIGlzIG5vdCB0aGUgc2FtZSBmb3IgZW9mLWhhbmRsaW5nXCJcbiB7OmFyZ2xpc3RzICcoW3JlYWRlcl0gW29wdHMgcmVhZGVyXSBbcmVhZGVyIGVvZi1lcnJvcj8gZW9mLXZhbHVlXSl9XG4gKFtyZWFkZXJdIChyZWFkIHJlYWRlciB0cnVlIG5pbCkpXG4gKFt7ZW9mIDplb2YsIDphcyBvcHRzLCA6b3Ige2VvZiA6ZW9mdGhyb3d9fSByZWFkZXJdXG4gIChyZWFkKiByZWFkZXIgKD0gZW9mIDplb2Z0aHJvdykgZW9mIG5pbCBvcHRzICh0by1hcnJheSBbXSkpKVxuIChbcmVhZGVyIGVvZi1lcnJvcj8gc2VudGluZWxdXG4gIChyZWFkKiByZWFkZXIgZW9mLWVycm9yPyBzZW50aW5lbCBuaWwge30gKHRvLWFycmF5IFtdKSkpKVxuIn0gezpzeW0gZGVmYXVsdC1kYXRhLXJlYWRlcnMsIDptZXRhIHt9LCA6c291cmNlICIoZGVmXG4gZGVmYXVsdC1kYXRhLXJlYWRlcnNcbiBcIkRlZmF1bHQgbWFwIG9mIGRhdGEgcmVhZGVyIGZ1bmN0aW9ucyBwcm92aWRlZCBieSBDbG9qdXJlLlxcbiAgTWF5IGJlIG92ZXJyaWRkZW4gYnkgYmluZGluZyAqZGF0YS1yZWFkZXJzKlwiXG4ge30pXG4ifSB7OnN5bSAqZGF0YS1yZWFkZXJzKiwgOm1ldGEge30sIDpzb3VyY2UgIihkZWZcbiAqZGF0YS1yZWFkZXJzKlxuIFwiTWFwIGZyb20gcmVhZGVyIHRhZyBzeW1ib2xzIHRvIGRhdGEgcmVhZGVyIFZhcnMuXFxuICBSZWFkZXIgdGFncyB3aXRob3V0IG5hbWVzcGFjZSBxdWFsaWZpZXJzIGFyZSByZXNlcnZlZCBmb3IgQ2xvanVyZS5cXG4gIFRoaXMgbGlnaHQgdmVyc2lvbiBvZiB0b29scy5yZWFkZXIgaGFzIG5vIGltcGxlbWVudGF0aW9uIGZvciBkZWZhdWx0XFxuICByZWFkZXIgdGFncyBzdWNoIGFzICNpbnN0IGFuZCAjdXVpZC5cIlxuIHt9KVxuIn0gezpzeW0gKnJlYWQtZGVsaW0qLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiAqcmVhZC1kZWxpbSogZmFsc2UpXG4ifSB7OnN5bSByZXNvbHZlLXN5bWJvbCwgOm1ldGEgezpkb2MgIlJlc29sdmUgYSBzeW1ib2wgcyBpbnRvIGl0cyBmdWxseSBxdWFsaWZpZWQgbmFtZXNwYWNlIHZlcnNpb24iLCA6YXJnbGlzdHMgKFtzXSl9LCA6c291cmNlICIoZGVmblxuIHJlc29sdmUtc3ltYm9sXG4gXCJSZXNvbHZlIGEgc3ltYm9sIHMgaW50byBpdHMgZnVsbHkgcXVhbGlmaWVkIG5hbWVzcGFjZSB2ZXJzaW9uXCJcbiBbc11cbiAodGhyb3cgKGV4LWluZm8gXCJyZXNvbHZlLXN5bWJvbCBpcyBub3QgaW1wbGVtZW50ZWRcIiB7OnN5bSBzfSkpKVxuIn0gezpzeW0gKmFsaWFzLW1hcCosIDptZXRhIHt9LCA6c291cmNlICIoZGVmXG4gKmFsaWFzLW1hcCpcbiBcIk1hcCBmcm9tIG5zIGFsaWFzIHRvIG5zLCBpZiBub24tbmlsLCBpdCB3aWxsIGJlIHVzZWQgdG8gcmVzb2x2ZSByZWFkLXRpbWVcXG4gICBucyBhbGlhc2VzLlxcblxcbiAgIERlZmF1bHRzIHRvIG5pbFwiXG4gbmlsKVxuIn0gezpzeW0gcmVhZC1yZWdleCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtyZHIgY2ggb3B0cyBwZW5kaW5nLWZvcm1zXSl9LCA6c291cmNlICIoZGVmblxuIHJlYWQtcmVnZXhcbiBbcmRyIGNoIG9wdHMgcGVuZGluZy1mb3Jtc11cbiAobGV0XG4gIFtzYiAoU3RyaW5nQnVmZmVyLildXG4gIChsb29wXG4gICBbY2ggKHJlYWQtY2hhciByZHIpXVxuICAgKGlmXG4gICAgKGlkZW50aWNhbD8gXFxcIiBjaClcbiAgICAocmUtcGF0dGVybiAoc3RyIHNiKSlcbiAgICAoaWZcbiAgICAgKG5pbD8gY2gpXG4gICAgIChlcnIvdGhyb3ctZW9mLXJlYWRpbmcgcmRyIDpyZWdleCBzYilcbiAgICAgKGRvXG4gICAgICAoLmFwcGVuZCBzYiBjaClcbiAgICAgICh3aGVuXG4gICAgICAgKGlkZW50aWNhbD8gXFxcXCBjaClcbiAgICAgICAobGV0XG4gICAgICAgIFtjaCAocmVhZC1jaGFyIHJkcildXG4gICAgICAgIChpZiAobmlsPyBjaCkgKGVyci90aHJvdy1lb2YtcmVhZGluZyByZHIgOnJlZ2V4IHNiKSlcbiAgICAgICAgKC5hcHBlbmQgc2IgY2gpKSlcbiAgICAgIChyZWN1ciAocmVhZC1jaGFyIHJkcikpKSkpKSkpXG4ifSB7OnN5bSBzYiwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgc2IgKFN0cmluZ0J1ZmZlci4pKVxuIn0gezpzeW0gcmVhZC1zdHJpbmcsIDptZXRhIHs6ZG9jICJSZWFkcyBvbmUgb2JqZWN0IGZyb20gdGhlIHN0cmluZyBzLlxuICAgUmV0dXJucyBuaWwgd2hlbiBzIGlzIG5pbCBvciBlbXB0eS5cblxuICAgVG8gcmVhZCBkYXRhIHN0cnVjdHVyZXMgb25seSwgdXNlIGNsanMudG9vbHMucmVhZGVyLmVkbi9yZWFkLXN0cmluZ1xuXG4gICBOb3RlIHRoYXQgdGhlIGZ1bmN0aW9uIHNpZ25hdHVyZSBvZiBjbGpzLnRvb2xzLnJlYWRlci9yZWFkLXN0cmluZyBhbmRcbiAgIGNsanMudG9vbHMucmVhZGVyLmVkbi9yZWFkLXN0cmluZyBpcyBub3QgdGhlIHNhbWUgZm9yIGVvZi1oYW5kbGluZyIsIDphcmdsaXN0cyBbW3NdIFtvcHRzIHNdXX0sIDpzb3VyY2UgIihkZWZuXG4gcmVhZC1zdHJpbmdcbiBcIlJlYWRzIG9uZSBvYmplY3QgZnJvbSB0aGUgc3RyaW5nIHMuXFxuICAgUmV0dXJucyBuaWwgd2hlbiBzIGlzIG5pbCBvciBlbXB0eS5cXG5cXG4gICBUbyByZWFkIGRhdGEgc3RydWN0dXJlcyBvbmx5LCB1c2UgY2xqcy50b29scy5yZWFkZXIuZWRuL3JlYWQtc3RyaW5nXFxuXFxuICAgTm90ZSB0aGF0IHRoZSBmdW5jdGlvbiBzaWduYXR1cmUgb2YgY2xqcy50b29scy5yZWFkZXIvcmVhZC1zdHJpbmcgYW5kXFxuICAgY2xqcy50b29scy5yZWFkZXIuZWRuL3JlYWQtc3RyaW5nIGlzIG5vdCB0aGUgc2FtZSBmb3IgZW9mLWhhbmRsaW5nXCJcbiAoW3NdIChyZWFkLXN0cmluZyB7fSBzKSlcbiAoW29wdHMgc11cbiAgKHdoZW5cbiAgIChhbmQgcyAobm90IChpZGVudGljYWw/IHMgXCJcIikpKVxuICAgKHJlYWQgb3B0cyAoc3RyaW5nLXB1c2gtYmFjay1yZWFkZXIgcykpKSkpXG4ifSB7OnN5bSBtYXAtZnVuYywgOm1ldGEgezpkb2MgIkRlY2lkZSB3aGljaCBtYXAgdHlwZSB0byB1c2UsIGFycmF5LW1hcCBpZiBsZXNzIHRoYW4gMTYgZWxlbWVudHMiLCA6YXJnbGlzdHMgKFtjb2xsXSl9LCA6c291cmNlICIoZGVmblxuIG1hcC1mdW5jXG4gXCJEZWNpZGUgd2hpY2ggbWFwIHR5cGUgdG8gdXNlLCBhcnJheS1tYXAgaWYgbGVzcyB0aGFuIDE2IGVsZW1lbnRzXCJcbiBbY29sbF1cbiAoaWYgKD49IChjb3VudCBjb2xsKSAxNikgJ2NsanMuY29yZS9oYXNoLW1hcCAnY2xqcy5jb3JlL2FycmF5LW1hcCkpXG4ifSksIGNsb2p1cmUudGVzdC5jaGVjay5yYW5kb20uZG91YmxlcyAoezpzeW0gcmFuZC1sb25nLT5yYW5kLWRvdWJsZSwgOm1ldGEgezpkb2MgIkdpdmVuIGEgdW5pZm9ybWx5IGRpc3RyaWJ1dGVkIHJhbmRvbSBsb25nLCByZXR1cm5zIGEgdW5pZm9ybWx5XG4gIGRpc3RyaWJ1dGVkIGRvdWJsZSBiZXR3ZWVuIDAuMCAoaW5jbHVzaXZlKSBhbmQgMS4wIChleGNsdXNpdmUpLiIsIDphcmdsaXN0cyAoW2xvbmddKX0sIDpzb3VyY2UgIihkZWZuXG4gcmFuZC1sb25nLT5yYW5kLWRvdWJsZVxuIFwiR2l2ZW4gYSB1bmlmb3JtbHkgZGlzdHJpYnV0ZWQgcmFuZG9tIGxvbmcsIHJldHVybnMgYSB1bmlmb3JtbHlcXG4gIGRpc3RyaWJ1dGVkIGRvdWJsZSBiZXR3ZWVuIDAuMCAoaW5jbHVzaXZlKSBhbmQgMS4wIChleGNsdXNpdmUpLlwiXG4gW2xvbmddXG4gKGxldFxuICBbeFxuICAgKGxvbmdzL3Vuc2lnbmVkLWJpdC1zaGlmdC1yaWdodCBsb25nIDExKVxuICAgbG93LWJpdHNcbiAgICguZ2V0TG93Qml0c1Vuc2lnbmVkIHgpXG4gICBoaWdoLWJpdHNcbiAgICguZ2V0SGlnaEJpdHMgeCldXG4gICgrICgqIGRvdWJsZS11bml0IGxvdy1iaXRzKSAoKiBiaWctZG91YmxlLXVuaXQgaGlnaC1iaXRzKSkpKVxuIn0pLCBmaXBwLmVuZ2luZSAoezpzeW0gc2VyaWFsaXplLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2RvY10pfSwgOnNvdXJjZSAiKGRlZm5cbiBzZXJpYWxpemVcbiBbZG9jXVxuIChjb25kXG4gIChuaWw/IGRvYylcbiAgbmlsXG4gIChzZXE/IGRvYylcbiAgKG1hcGNhdCBzZXJpYWxpemUgZG9jKVxuICAoc3RyaW5nPyBkb2MpXG4gIFt7Om9wIDp0ZXh0LCA6dGV4dCBkb2N9XVxuICAoa2V5d29yZD8gZG9jKVxuICAoc2VyaWFsaXplLW5vZGUgW2RvY10pXG4gICh2ZWN0b3I/IGRvYylcbiAgKHNlcmlhbGl6ZS1ub2RlIGRvYylcbiAgOmVsc2VcbiAgKHRocm93IChleC1pbmZvIFwiVW5leHBlY3RlZCBjbGFzcyBmb3IgZG9jIG5vZGVcIiB7Om5vZGUgZG9jfSkpKSlcbiJ9IHs6c3ltIGFubm90YXRlLXJpZ2h0cywgOm1ldGEgezpkb2MgIkEgdHJhbnNkdWNlciB3aGljaCBhbm5vdGF0ZXMgdGhlIHJpZ2h0LXNpZGUgb2Ygbm9kZXMgYXNzdW1pbmcgYVxuICBoeXBvdGhldGljYWwgc2luZ2xlLWxpbmUgZm9ybWF0dGluZyBvZiB0aGUgZG9jdW1lbnQuIEdyb3VwcyBhbmQgaW5kZW50YXRpb25cbiAgZGlyZWN0aXZlcyBhcmUgdGVtcG9yYXJpbHkgYXNzdW1lZCB0byBiZSB6ZXJvLXdpZHRoLiBUaGVzZSB2YWx1ZXMgYXJlIHVzZWRcbiAgYnkgc3Vic2VxdWVudCBwYXNzZXMgdG8gcHJvZHVjZSB0aGUgZmluYWwgbGF5b3V0LiIsIDphcmdsaXN0cyAoW3JmXSl9LCA6c291cmNlICIoZGVmblxuIGFubm90YXRlLXJpZ2h0c1xuIFwiQSB0cmFuc2R1Y2VyIHdoaWNoIGFubm90YXRlcyB0aGUgcmlnaHQtc2lkZSBvZiBub2RlcyBhc3N1bWluZyBhXFxuICBoeXBvdGhldGljYWwgc2luZ2xlLWxpbmUgZm9ybWF0dGluZyBvZiB0aGUgZG9jdW1lbnQuIEdyb3VwcyBhbmQgaW5kZW50YXRpb25cXG4gIGRpcmVjdGl2ZXMgYXJlIHRlbXBvcmFyaWx5IGFzc3VtZWQgdG8gYmUgemVyby13aWR0aC4gVGhlc2UgdmFsdWVzIGFyZSB1c2VkXFxuICBieSBzdWJzZXF1ZW50IHBhc3NlcyB0byBwcm9kdWNlIHRoZSBmaW5hbCBsYXlvdXQuXCJcbiBbcmZdXG4gKGxldFxuICBbcG9zICh2b2xhdGlsZSEgMCldXG4gIChmblxuICAgKFtdIChyZikpXG4gICAoW3Jlc10gKHJmIHJlcykpXG4gICAoW3JlcyBub2RlXVxuICAgIChsZXRcbiAgICAgW2RlbHRhXG4gICAgICAoY2FzZVxuICAgICAgICg6b3Agbm9kZSlcbiAgICAgICA6dGV4dFxuICAgICAgIChjb3VudCAoOnRleHQgbm9kZSkpXG4gICAgICAgOmxpbmVcbiAgICAgICAoY291bnQgKDppbmxpbmUgbm9kZSkpXG4gICAgICAgOmVzY2FwZWRcbiAgICAgICAxXG4gICAgICAgMClcbiAgICAgIHBcbiAgICAgICh2c3dhcCEgcG9zICsgZGVsdGEpXVxuICAgICAocmYgcmVzIChhc3NvYyBub2RlIDpyaWdodCBwKSkpKSkpKVxuIn0gezpzeW0gdXBkYXRlLXJpZ2h0LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2RlcXVlIGYgJiBhcmdzXSl9LCA6c291cmNlICIoZGVmblxuIHVwZGF0ZS1yaWdodFxuIFtkZXF1ZSBmICYgYXJnc11cbiAoZGVxdWUvY29uanIgKHBvcCBkZXF1ZSkgKGFwcGx5IGYgKHBlZWsgZGVxdWUpIGFyZ3MpKSlcbiJ9IHs6c3ltIGFubm90YXRlLWJlZ2lucywgOm1ldGEgezpkb2MgIkdpdmVuIHByaW50aW5nIG9wdGlvbnMsIHJldHVybnMgYSB0cmFuc2R1Y2VyIHdoaWNoIGFubm90YXRlIHRoZSByaWdodC1zaWRlXG4gIG9mIGdyb3VwcyBvbiB0aGVpciA6YmVnaW4gbm9kZXMuICBUaGlzIGluY2x1ZGVzIHRoZSBwcnVuaW5nIGFsZ29yaXRobSB3aGljaFxuICB3aWxsIGFubm90YXRlIHNvbWUgOmJlZ2luIG5vZGVzIGFzIGJlaW5nIDp0b28tZmFyIHRvIHRoZSByaWdodCB3aXRob3V0XG4gIGNhbGN1bGF0aW5nIHRoZWlyIGV4YWN0IHNpemVzLiIsIDphcmdsaXN0cyAoW3s6a2V5cyBbd2lkdGhdLCA6YXMgb3B0aW9uc31dKX0sIDpzb3VyY2UgIihkZWZuXG4gYW5ub3RhdGUtYmVnaW5zXG4gXCJHaXZlbiBwcmludGluZyBvcHRpb25zLCByZXR1cm5zIGEgdHJhbnNkdWNlciB3aGljaCBhbm5vdGF0ZSB0aGUgcmlnaHQtc2lkZVxcbiAgb2YgZ3JvdXBzIG9uIHRoZWlyIDpiZWdpbiBub2Rlcy4gIFRoaXMgaW5jbHVkZXMgdGhlIHBydW5pbmcgYWxnb3JpdGhtIHdoaWNoXFxuICB3aWxsIGFubm90YXRlIHNvbWUgOmJlZ2luIG5vZGVzIGFzIGJlaW5nIDp0b28tZmFyIHRvIHRoZSByaWdodCB3aXRob3V0XFxuICBjYWxjdWxhdGluZyB0aGVpciBleGFjdCBzaXplcy5cIlxuIFt7OmtleXMgW3dpZHRoXSwgOmFzIG9wdGlvbnN9XVxuIChmblxuICBbcmZdXG4gIChsZXRcbiAgIFtwb3MgKHZvbGF0aWxlISAwKSBidWZzICh2b2xhdGlsZSEgZGVxdWUvZW1wdHkpXVxuICAgKGZuXG4gICAgKFtdIChyZikpXG4gICAgKFtyZXNdIChyZiByZXMpKVxuICAgIChbcmVzIHs6a2V5cyBbb3AgcmlnaHRdLCA6YXMgbm9kZX1dXG4gICAgIChsZXRcbiAgICAgIFtidWZmZXJzIEBidWZzXVxuICAgICAgKGlmXG4gICAgICAgKGVtcHR5PyBidWZmZXJzKVxuICAgICAgIChpZlxuICAgICAgICAoPSBvcCA6YmVnaW4pXG4gICAgICAgIChsZXRcbiAgICAgICAgIFtwb3NpdGlvbipcbiAgICAgICAgICAoKyByaWdodCB3aWR0aClcbiAgICAgICAgICBidWZmZXJcbiAgICAgICAgICB7OnBvc2l0aW9uIHBvc2l0aW9uKiwgOm5vZGVzIGRlcXVlL2VtcHR5fV1cbiAgICAgICAgICh2cmVzZXQhIHBvcyBwb3NpdGlvbiopXG4gICAgICAgICAodnJlc2V0ISBidWZzIChkZXF1ZS9jcmVhdGUgYnVmZmVyKSlcbiAgICAgICAgIHJlcylcbiAgICAgICAgKHJmIHJlcyBub2RlKSlcbiAgICAgICAoaWZcbiAgICAgICAgKD0gb3AgOmVuZClcbiAgICAgICAgKGxldFxuICAgICAgICAgW2J1ZmZlclxuICAgICAgICAgIChwZWVrIGJ1ZmZlcnMpXG4gICAgICAgICAgYnVmZmVycypcbiAgICAgICAgICAocG9wIGJ1ZmZlcnMpXG4gICAgICAgICAgYmVnaW5cbiAgICAgICAgICB7Om9wIDpiZWdpbiwgOnJpZ2h0IHJpZ2h0fVxuICAgICAgICAgIG5vZGVzXG4gICAgICAgICAgKGRlcXVlL2NvbmpsciBiZWdpbiAoOm5vZGVzIGJ1ZmZlcikgbm9kZSldXG4gICAgICAgICAoaWZcbiAgICAgICAgICAoZW1wdHk/IGJ1ZmZlcnMqKVxuICAgICAgICAgIChkb1xuICAgICAgICAgICAodnJlc2V0ISBwb3MgMClcbiAgICAgICAgICAgKHZyZXNldCEgYnVmcyBkZXF1ZS9lbXB0eSlcbiAgICAgICAgICAgKHJlZHVjZSByZiByZXMgbm9kZXMpKVxuICAgICAgICAgIChkb1xuICAgICAgICAgICAoYXNzZXJ0ICh2ZWN0b3I/IGJ1ZmZlcnMqKSlcbiAgICAgICAgICAgKGFzc2VydCAodmVjdG9yPyBub2RlcykpXG4gICAgICAgICAgICh2cmVzZXQhXG4gICAgICAgICAgICBidWZzXG4gICAgICAgICAgICAodXBkYXRlLXJpZ2h0XG4gICAgICAgICAgICAgYnVmZmVycypcbiAgICAgICAgICAgICB1cGRhdGUtaW5cbiAgICAgICAgICAgICBbOm5vZGVzXVxuICAgICAgICAgICAgIGRlcXVlL2NvbmNhdFxuICAgICAgICAgICAgIG5vZGVzKSlcbiAgICAgICAgICAgcmVzKSkpXG4gICAgICAgIChsb29wXG4gICAgICAgICBbYnVmZmVycypcbiAgICAgICAgICAoaWZcbiAgICAgICAgICAgKD0gb3AgOmJlZ2luKVxuICAgICAgICAgICAoZGVxdWUvY29uanJcbiAgICAgICAgICAgIGJ1ZmZlcnNcbiAgICAgICAgICAgIHs6cG9zaXRpb24gKCsgcmlnaHQgd2lkdGgpLCA6bm9kZXMgZGVxdWUvZW1wdHl9KVxuICAgICAgICAgICAodXBkYXRlLXJpZ2h0IGJ1ZmZlcnMgdXBkYXRlLWluIFs6bm9kZXNdIGRlcXVlL2NvbmpyIG5vZGUpKVxuICAgICAgICAgIHJlc1xuICAgICAgICAgIHJlc11cbiAgICAgICAgIChpZlxuICAgICAgICAgIChhbmQgKDw9IHJpZ2h0IEBwb3MpICg8PSAoY291bnQgYnVmZmVycyopIHdpZHRoKSlcbiAgICAgICAgICAoZG8gKHZyZXNldCEgYnVmcyBidWZmZXJzKikgcmVzKVxuICAgICAgICAgIChsZXRcbiAgICAgICAgICAgW2J1ZmZlclxuICAgICAgICAgICAgKGZpcnN0IGJ1ZmZlcnMqKVxuICAgICAgICAgICAgYnVmZmVycyoqXG4gICAgICAgICAgICAoZGVxdWUvcG9wbCBidWZmZXJzKilcbiAgICAgICAgICAgIGJlZ2luXG4gICAgICAgICAgICB7Om9wIDpiZWdpbiwgOnJpZ2h0IDp0b28tZmFyfVxuICAgICAgICAgICAgcmVzKlxuICAgICAgICAgICAgKHJmIHJlcyBiZWdpbilcbiAgICAgICAgICAgIHJlcypcbiAgICAgICAgICAgIChyZWR1Y2UgcmYgcmVzKiAoOm5vZGVzIGJ1ZmZlcikpXVxuICAgICAgICAgICAoaWZcbiAgICAgICAgICAgIChlbXB0eT8gYnVmZmVycyoqKVxuICAgICAgICAgICAgKGRvICh2cmVzZXQhIHBvcyAwKSAodnJlc2V0ISBidWZzIGRlcXVlL2VtcHR5KSByZXMqKVxuICAgICAgICAgICAgKGRvXG4gICAgICAgICAgICAgKHZyZXNldCEgcG9zICg6cG9zaXRpb24gKGZpcnN0IGJ1ZmZlcnMqKikpKVxuICAgICAgICAgICAgIChyZWN1ciBidWZmZXJzKiogcmVzKikpKSkpKSkpKSkpKSkpXG4ifSB7OnN5bSBmb3JtYXQtbm9kZXMsIDptZXRhIHs6ZG9jICJHaXZlbiBwcmludGluZyBvcHRpb25zLCByZXR1cm5zIGEgdHJhbnNkdWNlciB3aGljaCBwcm9kdWNlcyB0aGUgZnVsbHlcbiAgbGFpZC1vdXQgc3RyaW5ncy4iLCA6YXJnbGlzdHMgKFt7OmtleXMgW3dpZHRoXSwgOmFzIG9wdGlvbnN9XSl9LCA6c291cmNlICIoZGVmblxuIGZvcm1hdC1ub2Rlc1xuIFwiR2l2ZW4gcHJpbnRpbmcgb3B0aW9ucywgcmV0dXJucyBhIHRyYW5zZHVjZXIgd2hpY2ggcHJvZHVjZXMgdGhlIGZ1bGx5XFxuICBsYWlkLW91dCBzdHJpbmdzLlwiXG4gW3s6a2V5cyBbd2lkdGhdLCA6YXMgb3B0aW9uc31dXG4gKGZuXG4gIFtyZl1cbiAgKGxldFxuICAgW2ZpdHNcbiAgICAodm9sYXRpbGUhIDApXG4gICAgbGVuZ3RoXG4gICAgKHZvbGF0aWxlISB3aWR0aClcbiAgICB0YWItc3RvcHNcbiAgICAodm9sYXRpbGUhICcoMCkpXG4gICAgY29sdW1uXG4gICAgKHZvbGF0aWxlISAwKV1cbiAgIChmblxuICAgIChbXSAocmYpKVxuICAgIChbcmVzXSAocmYgcmVzKSlcbiAgICAoW3JlcyB7OmtleXMgW29wIHJpZ2h0XSwgOmFzIG5vZGV9XVxuICAgICAobGV0XG4gICAgICBbaW5kZW50IChwZWVrIEB0YWItc3RvcHMpXVxuICAgICAgKGNhc2VcbiAgICAgICBvcFxuICAgICAgIDp0ZXh0XG4gICAgICAgKGxldFxuICAgICAgICBbdGV4dFxuICAgICAgICAgKDp0ZXh0IG5vZGUpXG4gICAgICAgICByZXMqXG4gICAgICAgICAoaWZcbiAgICAgICAgICAoemVybz8gQGNvbHVtbilcbiAgICAgICAgICAoZG9cbiAgICAgICAgICAgKHZzd2FwISBjb2x1bW4gKyBpbmRlbnQpXG4gICAgICAgICAgIChyZiByZXMgKGFwcGx5IHN0ciAocmVwZWF0IGluZGVudCBcXHNwYWNlKSkpKVxuICAgICAgICAgIHJlcyldXG4gICAgICAgICh2c3dhcCEgY29sdW1uICsgKGNvdW50IHRleHQpKVxuICAgICAgICAocmYgcmVzKiB0ZXh0KSlcbiAgICAgICA6ZXNjYXBlZFxuICAgICAgIChsZXRcbiAgICAgICAgW3RleHRcbiAgICAgICAgICg6dGV4dCBub2RlKVxuICAgICAgICAgcmVzKlxuICAgICAgICAgKGlmXG4gICAgICAgICAgKHplcm8/IEBjb2x1bW4pXG4gICAgICAgICAgKGRvXG4gICAgICAgICAgICh2c3dhcCEgY29sdW1uICsgaW5kZW50KVxuICAgICAgICAgICAocmYgcmVzIChhcHBseSBzdHIgKHJlcGVhdCBpbmRlbnQgXFxzcGFjZSkpKSlcbiAgICAgICAgICByZXMpXVxuICAgICAgICAodnN3YXAhIGNvbHVtbiBpbmMpXG4gICAgICAgIChyZiByZXMqIHRleHQpKVxuICAgICAgIDpwYXNzXG4gICAgICAgKHJmIHJlcyAoOnRleHQgbm9kZSkpXG4gICAgICAgOmxpbmVcbiAgICAgICAoaWZcbiAgICAgICAgKHplcm8/IEBmaXRzKVxuICAgICAgICAoZG9cbiAgICAgICAgICh2cmVzZXQhIGxlbmd0aCAoLSAoKyByaWdodCB3aWR0aCkgaW5kZW50KSlcbiAgICAgICAgICh2cmVzZXQhIGNvbHVtbiAwKVxuICAgICAgICAgKHJmIHJlcyAoc3RyICg6dGVybWluYXRlIG5vZGUpIFwiXFxuXCIpKSlcbiAgICAgICAgKGxldFxuICAgICAgICAgW2lubGluZSAoOmlubGluZSBub2RlKV1cbiAgICAgICAgICh2c3dhcCEgY29sdW1uICsgKGNvdW50IGlubGluZSkpXG4gICAgICAgICAocmYgcmVzIGlubGluZSkpKVxuICAgICAgIDpicmVha1xuICAgICAgIChkb1xuICAgICAgICAodnJlc2V0ISBsZW5ndGggKC0gKCsgcmlnaHQgd2lkdGgpIGluZGVudCkpXG4gICAgICAgICh2cmVzZXQhIGNvbHVtbiAwKVxuICAgICAgICAocmYgcmVzIFwiXFxuXCIpKVxuICAgICAgIDpuZXN0XG4gICAgICAgKGRvICh2c3dhcCEgdGFiLXN0b3BzIGNvbmogKCsgaW5kZW50ICg6b2Zmc2V0IG5vZGUpKSkgcmVzKVxuICAgICAgIDphbGlnblxuICAgICAgIChkbyAodnN3YXAhIHRhYi1zdG9wcyBjb25qICgrIEBjb2x1bW4gKDpvZmZzZXQgbm9kZSkpKSByZXMpXG4gICAgICAgOm91dGRlbnRcbiAgICAgICAoZG8gKHZzd2FwISB0YWItc3RvcHMgcG9wKSByZXMpXG4gICAgICAgOmJlZ2luXG4gICAgICAgKGRvXG4gICAgICAgICh2cmVzZXQhXG4gICAgICAgICBmaXRzXG4gICAgICAgICAoY29uZFxuICAgICAgICAgIChwb3M/IEBmaXRzKVxuICAgICAgICAgIChpbmMgQGZpdHMpXG4gICAgICAgICAgKD0gcmlnaHQgOnRvby1mYXIpXG4gICAgICAgICAgMFxuICAgICAgICAgICg8PSByaWdodCBAbGVuZ3RoKVxuICAgICAgICAgIDFcbiAgICAgICAgICA6ZWxzZVxuICAgICAgICAgIDApKVxuICAgICAgICByZXMpXG4gICAgICAgOmVuZFxuICAgICAgIChkbyAodnJlc2V0ISBmaXRzIChtYXggMCAoZGVjIEBmaXRzKSkpIHJlcylcbiAgICAgICAodGhyb3cgKGV4LWluZm8gXCJVbmV4cGVjdGVkIG5vZGUgb3BcIiB7Om5vZGUgbm9kZX0pKSkpKSkpKSlcbiJ9IHs6c3ltIHBwcmludC1kb2N1bWVudCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtkb2N1bWVudCBvcHRpb25zXSl9LCA6c291cmNlICIoZGVmblxuIHBwcmludC1kb2N1bWVudFxuIFtkb2N1bWVudCBvcHRpb25zXVxuIChsZXRcbiAgW29wdGlvbnMgKG1lcmdlIHs6d2lkdGggNzB9IG9wdGlvbnMpXVxuICAoLT4+XG4gICAoc2VyaWFsaXplIGRvY3VtZW50KVxuICAgKGVkdWN0aW9uXG4gICAgYW5ub3RhdGUtcmlnaHRzXG4gICAgKGFubm90YXRlLWJlZ2lucyBvcHRpb25zKVxuICAgIChmb3JtYXQtbm9kZXMgb3B0aW9ucykpXG4gICAocnVuISBwcmludCkpKVxuIChwcmludGxuKSlcbiJ9KSwgc2FibG9uby51dGlsICh7OnN5bSBqb2luLWNsYXNzZXMsIDptZXRhIHs6ZG9jICJKb2luIHRoZSBgY2xhc3Nlc2Agd2l0aCBhIHdoaXRlc3BhY2UuIiwgOmFyZ2xpc3RzIChbY2xhc3Nlc10pfSwgOnNvdXJjZSAiKGRlZm5cbiBqb2luLWNsYXNzZXNcbiBcIkpvaW4gdGhlIGBjbGFzc2VzYCB3aXRoIGEgd2hpdGVzcGFjZS5cIlxuIFtjbGFzc2VzXVxuICgtPj5cbiAgY2xhc3Nlc1xuICAoaW50b1xuICAgW11cbiAgIChjb21wIChtYXBjYXQgKGZuIFt4XSAoaWYgKHN0cmluZz8geCkgW3hdIChzZXEgeCkpKSkgKHJlbW92ZSBuaWw/KSkpXG4gIChzdHIvam9pbiBcIiBcIikpKVxuIn0gezpzeW0gdG8tc3RyLCA6bWV0YSB7OmRvYyAiQ29udmVydCBhIHZhbHVlIGludG8gYSBzdHJpbmcuIiwgOmFyZ2xpc3RzIChbeF0pfSwgOnByb3RvY29sIFRvU3RyaW5nfSB7OnN5bSByZWFjdC1mbiwgOm1ldGEgezpkb2MgIlJldHVybiB0aGUgc3ltYm9sIG9mIGEgZm4gdGhhdCBidWlsZCBhIFJlYWN0IGVsZW1lbnQuICIsIDphcmdsaXN0cyAoW3R5cGVdKX0sIDpzb3VyY2UgIihkZWZuXG4gcmVhY3QtZm5cbiBcIlJldHVybiB0aGUgc3ltYm9sIG9mIGEgZm4gdGhhdCBidWlsZCBhIFJlYWN0IGVsZW1lbnQuIFwiXG4gW3R5cGVdXG4gKGlmXG4gIChjb250YWlucz8gI3s6dGV4dGFyZWEgOmlucHV0IDpzZWxlY3R9IChrZXl3b3JkIHR5cGUpKVxuICAnc2FibG9uby5pbnRlcnByZXRlci9jcmVhdGUtZWxlbWVudFxuICAnanMvUmVhY3QuY3JlYXRlRWxlbWVudCkpXG4ifSB7OnN5bSBjYW1lbC1jYXNlLWtleXMsIDptZXRhIHs6ZG9jICJSZWN1cnNpdmVseSB0cmFuc2Zvcm1zIGFsbCBtYXAga2V5cyBpbnRvIGNhbWVsIGNhc2UuIiwgOmFyZ2xpc3RzIChbbV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBjYW1lbC1jYXNlLWtleXNcbiBcIlJlY3Vyc2l2ZWx5IHRyYW5zZm9ybXMgYWxsIG1hcCBrZXlzIGludG8gY2FtZWwgY2FzZS5cIlxuIFttXVxuIChpZlxuICAobWFwPyBtKVxuICAobGV0XG4gICBbbSAoaW50byB7fSAobWFwIChmbiBbW2sgdl1dIFsoY2FtZWwtY2FzZSBrKSB2XSkpIG0pXVxuICAgKGNvbmQtPiBtIChtYXA/ICg6c3R5bGUgbSkpICh1cGRhdGUgOnN0eWxlIGNhbWVsLWNhc2Uta2V5cykpKVxuICBtKSlcbiJ9IHs6c3ltIGVsZW1lbnQ/LCA6bWV0YSB7OmRvYyAiUmV0dXJuIHRydWUgaWYgYHhgIGlzIGFuIEhUTUwgZWxlbWVudC4gVHJ1ZSB3aGVuIGB4YCBpcyBhIHZlY3RvclxuICBhbmQgdGhlIGZpcnN0IGVsZW1lbnQgaXMgYSBrZXl3b3JkLCBlLmcuIGBbOmRpdl1gIG9yIGBbOmRpdiBbOnNwYW4gXCJ4XCJdYC4iLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmblxuIGVsZW1lbnQ/XG4gXCJSZXR1cm4gdHJ1ZSBpZiBgeGAgaXMgYW4gSFRNTCBlbGVtZW50LiBUcnVlIHdoZW4gYHhgIGlzIGEgdmVjdG9yXFxuICBhbmQgdGhlIGZpcnN0IGVsZW1lbnQgaXMgYSBrZXl3b3JkLCBlLmcuIGBbOmRpdl1gIG9yIGBbOmRpdiBbOnNwYW4gXFxcInhcXFwiXWAuXCJcbiBbeF1cbiAoYW5kICh2ZWN0b3I/IHgpIChrZXl3b3JkPyAoZmlyc3QgeCkpKSlcbiJ9IHs6c3ltICpiYXNlLXVybCosIDptZXRhIHt9LCA6c291cmNlICIoZGVmICpiYXNlLXVybCogbmlsKVxuIn0gezpzeW0gYXMtc3RyLCA6bWV0YSB7OmRvYyAiQ29udmVydHMgaXRzIGFyZ3VtZW50cyBpbnRvIGEgc3RyaW5nIHVzaW5nIHRvLXN0ci4iLCA6YXJnbGlzdHMgKFsmIHhzXSl9LCA6c291cmNlICIoZGVmblxuIGFzLXN0clxuIFwiQ29udmVydHMgaXRzIGFyZ3VtZW50cyBpbnRvIGEgc3RyaW5nIHVzaW5nIHRvLXN0ci5cIlxuIFsmIHhzXVxuIChzdHIvam9pbiAobWFwIHRvLXN0ciB4cykpKVxuIn0gezpzeW0gaHRtbC10by1kb20tYXR0cnMsIDptZXRhIHs6ZG9jICJDb252ZXJ0cyBhbGwgSFRNTCBhdHRyaWJ1dGVzIHRvIHRoZWlyIERPTSBlcXVpdmFsZW50cy4iLCA6YXJnbGlzdHMgKFthdHRyc10pfSwgOnNvdXJjZSAiKGRlZm5cbiBodG1sLXRvLWRvbS1hdHRyc1xuIFwiQ29udmVydHMgYWxsIEhUTUwgYXR0cmlidXRlcyB0byB0aGVpciBET00gZXF1aXZhbGVudHMuXCJcbiBbYXR0cnNdXG4gKHJlbmFtZS1rZXlzXG4gIChjYW1lbC1jYXNlLWtleXMgYXR0cnMpXG4gIHs6Y2xhc3MgOmNsYXNzTmFtZSwgOmZvciA6aHRtbEZvcn0pKVxuIn0gezpzeW0gVG9TdHJpbmcsIDptZXRhIHs6ZG9jIG5pbH0sIDptZXRob2RzICh0by1zdHIpfSB7OnN5bSBUb1VSSSwgOm1ldGEgezpkb2MgbmlsfSwgOm1ldGhvZHMgKHRvLXVyaSl9IHs6c3ltIGNhbWVsLWNhc2UsIDptZXRhIHs6ZG9jICJSZXR1cm5zIGNhbWVsIGNhc2UgdmVyc2lvbiBvZiB0aGUga2V5LCBlLmcuIDpodHRwLWVxdWl2IGJlY29tZXMgOmh0dHBFcXVpdi4iLCA6YXJnbGlzdHMgKFtrXSl9LCA6c291cmNlICIoZGVmblxuIGNhbWVsLWNhc2VcbiBcIlJldHVybnMgY2FtZWwgY2FzZSB2ZXJzaW9uIG9mIHRoZSBrZXksIGUuZy4gOmh0dHAtZXF1aXYgYmVjb21lcyA6aHR0cEVxdWl2LlwiXG4gW2tdXG4gKGlmXG4gIChvciAoa2V5d29yZD8gaykgKHN0cmluZz8gaykgKHN5bWJvbD8gaykpXG4gIChsZXRcbiAgIFtbZmlyc3Qtd29yZCAmIHdvcmRzXSAoLnNwbGl0IChuYW1lIGspIFwiLVwiKV1cbiAgIChpZlxuICAgIChvciAoZW1wdHk/IHdvcmRzKSAoPSBcImFyaWFcIiBmaXJzdC13b3JkKSAoPSBcImRhdGFcIiBmaXJzdC13b3JkKSlcbiAgICBrXG4gICAgKC0+XG4gICAgIChtYXAgc3RyL2NhcGl0YWxpemUgd29yZHMpXG4gICAgIChjb25qIGZpcnN0LXdvcmQpXG4gICAgIHN0ci9qb2luXG4gICAgIGtleXdvcmQpKSlcbiAgaykpXG4ifSB7OnN5bSB0by11cmksIDptZXRhIHs6ZG9jICJDb252ZXJ0IGEgdmFsdWUgaW50byBhIFVSSS4iLCA6YXJnbGlzdHMgKFt4XSl9LCA6cHJvdG9jb2wgVG9VUkl9KSwgdG9kb3Mub2RveWxlICh7OnN5bSBpbml0LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3Nlc3Npb25dKX0sIDpzb3VyY2UgIihkZWZuXG4gaW5pdFxuIFtzZXNzaW9uXVxuICgtPlxuICAocmVkdWNlXG4gICAoZm4gW3Nlc3Npb24gdG9kb10gKG8vaW5zZXJ0IHNlc3Npb24gKDpkYi9pZCB0b2RvKSB0b2RvKSlcbiAgIHNlc3Npb25cbiAgIGNvcmUvdG9kb3MpXG4gIChvL2luc2VydCA6dG9kb3Mub2RveWxlL3RvZG9zIDp0b2Rvcy5vZG95bGUvYnktaWQge30pXG4gIG8vZmlyZS1ydWxlcykpXG4ifSB7OnN5bSBpbml0aWFsLXNlc3Npb24sIDptZXRhIHt9LCA6c291cmNlICIoZGVmIGluaXRpYWwtc2Vzc2lvbiAoaW5pdCAocmVkdWNlIG8vYWRkLXJ1bGUgKG8vLT5zZXNzaW9uKSBydWxlcykpKVxuIn0gezpzeW0gcXVlcnksIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbc2Vzc2lvbl0pfSwgOnNvdXJjZSAiKGRlZm5cbiBxdWVyeVxuIFtzZXNzaW9uXVxuIChmaXJzdCAoby9xdWVyeS1hbGwgc2Vzc2lvbiA6dG9kb3Mub2RveWxlL3Jvb3QtdG9kbykpKVxuIn0gezpzeW0gcnVuLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2l0ZXJhdGlvbnNdKX0sIDpzb3VyY2UgIihkZWZuXG4gcnVuXG4gW2l0ZXJhdGlvbnNdXG4gKGxvb3BcbiAgW3Nlc3Npb24gaW5pdGlhbC1zZXNzaW9uIGNvdW50ZXIgMF1cbiAgKGlmXG4gICAoPSBjb3VudGVyIGl0ZXJhdGlvbnMpXG4gICBzZXNzaW9uXG4gICAocmVjdXIgKHRpY2sgc2Vzc2lvbiBjb3VudGVyKSAoaW5jIGNvdW50ZXIpKSkpKVxuIn0pLCBjbG9qdXJlLnRlc3QuY2hlY2sucm9zZS10cmVlICh7OnN5bSBzZXEsIDptZXRhIHs6ZG9jICJDcmVhdGUgYSBsYXp5LXNlcSBvZiBhbGwgb2YgdGhlICh1bmlxdWUpIG5vZGVzIGluIGEgc2hyaW5rLXRyZWUuXG4gIFRoaXMgYXNzdW1lcyB0aGF0IHR3byBub2RlcyB3aXRoIHRoZSBzYW1lIHZhbHVlIGhhdmUgdGhlIHNhbWUgY2hpbGRyZW4uXG4gIFdoaWxlIGl0J3Mgbm90IGNvbW1vbiwgaXQncyBwb3NzaWJsZSB0byBjcmVhdGUgdHJlZXMgdGhhdCBkb24ndFxuICBmaXQgdGhhdCBkZXNjcmlwdGlvbi4gVGhpcyBmdW5jdGlvbiBpcyBzaWduaWZpY2FudGx5IGZhc3RlciB0aGFuXG4gIGJydXRlLWZvcmNlIGVudW1lcmF0aW5nIGFsbCBvZiB0aGUgbm9kZXMgaW4gYSB0cmVlLCBhcyB0aGVyZSB3aWxsXG4gIGJlIG1hbnkgZHVwbGljYXRlcy4iLCA6YXJnbGlzdHMgKFtyb3NlXSl9LCA6c291cmNlICIoZGVmblxuIHNlcVxuIFwiQ3JlYXRlIGEgbGF6eS1zZXEgb2YgYWxsIG9mIHRoZSAodW5pcXVlKSBub2RlcyBpbiBhIHNocmluay10cmVlLlxcbiAgVGhpcyBhc3N1bWVzIHRoYXQgdHdvIG5vZGVzIHdpdGggdGhlIHNhbWUgdmFsdWUgaGF2ZSB0aGUgc2FtZSBjaGlsZHJlbi5cXG4gIFdoaWxlIGl0J3Mgbm90IGNvbW1vbiwgaXQncyBwb3NzaWJsZSB0byBjcmVhdGUgdHJlZXMgdGhhdCBkb24ndFxcbiAgZml0IHRoYXQgZGVzY3JpcHRpb24uIFRoaXMgZnVuY3Rpb24gaXMgc2lnbmlmaWNhbnRseSBmYXN0ZXIgdGhhblxcbiAgYnJ1dGUtZm9yY2UgZW51bWVyYXRpbmcgYWxsIG9mIHRoZSBub2RlcyBpbiBhIHRyZWUsIGFzIHRoZXJlIHdpbGxcXG4gIGJlIG1hbnkgZHVwbGljYXRlcy5cIlxuIFtyb3NlXVxuIChsZXRcbiAgW2hlbHBlclxuICAgKGZuXG4gICAgaGVscGVyXG4gICAgW3Jvc2Ugc2VlbiBzdGFja11cbiAgICAobGV0XG4gICAgIFtub2RlIChyb290IHJvc2UpIHRoZS1jaGlsZHJlbiAoY2hpbGRyZW4gcm9zZSldXG4gICAgIChsYXp5LXNlcVxuICAgICAgKGlmLW5vdFxuICAgICAgIChzZWVuIG5vZGUpXG4gICAgICAgKGNvbnNcbiAgICAgICAgbm9kZVxuICAgICAgICAoaWZcbiAgICAgICAgIChjb3JlL3NlcSB0aGUtY2hpbGRyZW4pXG4gICAgICAgICAoaGVscGVyXG4gICAgICAgICAgKGZpcnN0IHRoZS1jaGlsZHJlbilcbiAgICAgICAgICAoY29uaiBzZWVuIG5vZGUpXG4gICAgICAgICAgKG1ha2Utc3RhY2sgKHJlc3QgdGhlLWNoaWxkcmVuKSBzdGFjaykpXG4gICAgICAgICAod2hlbi1sZXRcbiAgICAgICAgICBbcyAoY29yZS9zZXEgc3RhY2spXVxuICAgICAgICAgIChsZXRcbiAgICAgICAgICAgW2YgKGZmaXJzdCBzKSByIChyZXN0IChmaXJzdCBzKSldXG4gICAgICAgICAgIChoZWxwZXIgZiAoY29uaiBzZWVuIG5vZGUpIChtYWtlLXN0YWNrIHIgKHJlc3QgcykpKSkpKSlcbiAgICAgICAod2hlbi1sZXRcbiAgICAgICAgW3MgKGNvcmUvc2VxIHN0YWNrKV1cbiAgICAgICAgKGxldFxuICAgICAgICAgW2YgKGZmaXJzdCBzKSByIChyZXN0IChmaXJzdCBzKSldXG4gICAgICAgICAoaGVscGVyIGYgc2VlbiAobWFrZS1zdGFjayByIChyZXN0IHMpKSkpKSkpKSldXG4gIChoZWxwZXIgcm9zZSAje30gJygpKSkpXG4ifSB7OnN5bSBwdXJlLCA6bWV0YSB7OmRvYyAiUHV0cyBhIHZhbHVlIGB4YCBpbnRvIGEgUm9zZSB0cmVlLCB3aXRoIG5vIGNoaWxkcmVuLiIsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuXG4gcHVyZVxuIFwiUHV0cyBhIHZhbHVlIGB4YCBpbnRvIGEgUm9zZSB0cmVlLCB3aXRoIG5vIGNoaWxkcmVuLlwiXG4gezpuby1kb2MgdHJ1ZX1cbiBbeF1cbiAobWFrZS1yb3NlIHggW10pKVxuIn0gezpzeW0gam9pbiwgOm1ldGEgezpkb2MgIlR1cm4gYSB0cmVlIG9mIHRyZWVzIGludG8gYSBzaW5nbGUgdHJlZS4gRG9lcyB0aGlzIGJ5IGNvbmNhdGVuYXRpbmdcbiAgY2hpbGRyZW4gb2YgdGhlIGlubmVyIGFuZCBvdXRlciB0cmVlcy4iLCA6YXJnbGlzdHMgKFtyb3NlXSl9LCA6c291cmNlICIoZGVmblxuIGpvaW5cbiBcIlR1cm4gYSB0cmVlIG9mIHRyZWVzIGludG8gYSBzaW5nbGUgdHJlZS4gRG9lcyB0aGlzIGJ5IGNvbmNhdGVuYXRpbmdcXG4gIGNoaWxkcmVuIG9mIHRoZSBpbm5lciBhbmQgb3V0ZXIgdHJlZXMuXCJcbiB7Om5vLWRvYyB0cnVlfVxuIFtyb3NlXVxuIChsZXRcbiAgW291dGVyLXJvb3RcbiAgIChyb290IHJvc2UpXG4gICBvdXRlci1jaGlsZHJlblxuICAgKGNoaWxkcmVuIHJvc2UpXG4gICBpbm5lci1yb290XG4gICAocm9vdCBvdXRlci1yb290KVxuICAgaW5uZXItY2hpbGRyZW5cbiAgIChjaGlsZHJlbiBvdXRlci1yb290KV1cbiAgKG1ha2Utcm9zZVxuICAgaW5uZXItcm9vdFxuICAgKGNvbmNhdCAobWFwIGpvaW4gb3V0ZXItY2hpbGRyZW4pIGlubmVyLWNoaWxkcmVuKSkpKVxuIn0gezpzeW0gYmluZCwgOm1ldGEgezpkb2MgIlRha2VzIGEgUm9zZSB0cmVlIChtKSBhbmQgYSBmdW5jdGlvbiAoaykgZnJvbVxuICB2YWx1ZXMgdG8gUm9zZSB0cmVlIGFuZCByZXR1cm5zIGEgbmV3IFJvc2UgdHJlZS5cbiAgVGhpcyBpcyB0aGUgbW9uYWRpYyBiaW5kICg+Pj0pIGZvciBSb3NlIHRyZWVzLiIsIDphcmdsaXN0cyAoW20ga10pfSwgOnNvdXJjZSAiKGRlZm5cbiBiaW5kXG4gXCJUYWtlcyBhIFJvc2UgdHJlZSAobSkgYW5kIGEgZnVuY3Rpb24gKGspIGZyb21cXG4gIHZhbHVlcyB0byBSb3NlIHRyZWUgYW5kIHJldHVybnMgYSBuZXcgUm9zZSB0cmVlLlxcbiAgVGhpcyBpcyB0aGUgbW9uYWRpYyBiaW5kICg+Pj0pIGZvciBSb3NlIHRyZWVzLlwiXG4gezpuby1kb2MgdHJ1ZX1cbiBbbSBrXVxuIChqb2luIChmbWFwIGsgbSkpKVxuIn0gezpzeW0gY2hpbGRyZW4sIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRoZSBjaGlsZHJlbiBvZiB0aGUgcm9vdCBvZiB0aGUgUm9zZSB0cmVlLiIsIDphcmdsaXN0cyAoW3Jvc2VdKX0sIDpzb3VyY2UgIihkZWZuXG4gY2hpbGRyZW5cbiBcIlJldHVybnMgdGhlIGNoaWxkcmVuIG9mIHRoZSByb290IG9mIHRoZSBSb3NlIHRyZWUuXCJcbiB7Om5vLWRvYyB0cnVlfVxuIFtyb3NlXVxuICguLWNoaWxkcmVuIHJvc2UpKVxuIn0gezpzeW0gcmVtb3ZlLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3Jvc2VzXSl9LCA6c291cmNlICIoZGVmblxuIHJlbW92ZVxuIHs6bm8tZG9jIHRydWV9XG4gW3Jvc2VzXVxuIChjb25jYXRcbiAgKG1hcC1pbmRleGVkIChmbiBbaW5kZXggX10gKGV4Y2x1ZGUtbnRoIGluZGV4IHJvc2VzKSkgcm9zZXMpXG4gIChwZXJtdXRhdGlvbnMgKHZlYyByb3NlcykpKSlcbiJ9IHs6c3ltIHBlcm11dGF0aW9ucywgOm1ldGEgezpkb2MgIkNyZWF0ZSBhIHNlcSBvZiB2ZWN0b3JzLCB3aGVyZSBlYWNoIHJvc2UgaW4gdHVybiwgaGFzIGJlZW4gcmVwbGFjZWRcbiAgYnkgaXRzIGNoaWxkcmVuLiIsIDphcmdsaXN0cyAoW3Jvc2VzXSl9LCA6c291cmNlICIoZGVmblxuIHBlcm11dGF0aW9uc1xuIFwiQ3JlYXRlIGEgc2VxIG9mIHZlY3RvcnMsIHdoZXJlIGVhY2ggcm9zZSBpbiB0dXJuLCBoYXMgYmVlbiByZXBsYWNlZFxcbiAgYnkgaXRzIGNoaWxkcmVuLlwiXG4gezpuby1kb2MgdHJ1ZX1cbiBbcm9zZXNdXG4gKGZvclxuICBbW3Jvc2UgaW5kZXhdIChtYXAgdmVjdG9yIHJvc2VzIChyYW5nZSkpIGNoaWxkIChjaGlsZHJlbiByb3NlKV1cbiAgKGFzc29jIHJvc2VzIGluZGV4IGNoaWxkKSkpXG4ifSB7OnN5bSBzaHJpbmssIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZiByb3Nlc10pfSwgOnNvdXJjZSAiKGRlZm5cbiBzaHJpbmtcbiB7Om5vLWRvYyB0cnVlfVxuIFtmIHJvc2VzXVxuIChpZlxuICAoY29yZS9zZXEgcm9zZXMpXG4gIChtYWtlLXJvc2VcbiAgIChhcHBseSBmIChtYXAgcm9vdCByb3NlcykpXG4gICAobWFwXG4gICAgKGZuKiBbcDFfXzQyNDAzI10gKHNocmluayBmIHAxX180MjQwMyMpKVxuICAgIChyZW1vdmUgKHVuY2h1bmsgcm9zZXMpKSkpXG4gIChtYWtlLXJvc2UgKGYpIFtdKSkpXG4ifSB7OnN5bSBtYWtlLXJvc2UsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbcm9vdCBjaGlsZHJlbl0pfSwgOnNvdXJjZSAiKGRlZm4gbWFrZS1yb3NlIFtyb290IGNoaWxkcmVuXSAoUm9zZVRyZWUuIHJvb3QgY2hpbGRyZW4pKVxuIn0gezpzeW0gZmlsdGVyLCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIG5ldyBSb3NlIHRyZWUgd2hvc2UgdmFsdWVzIHBhc3MgYHByZWRgLiBWYWx1ZXMgd2hvXG4gIGRvIG5vdCBwYXNzIGBwcmVkYCBoYXZlIHRoZWlyIGNoaWxkcmVuIGN1dCBvdXQgYXMgd2VsbC5cbiAgVGFrZXMgYSBsaXN0IG9mIHJvc2VzLCBub3QgYSByb3NlIiwgOmFyZ2xpc3RzIChbcHJlZCByb3NlXSl9LCA6c291cmNlICIoZGVmblxuIGZpbHRlclxuIFwiUmV0dXJucyBhIG5ldyBSb3NlIHRyZWUgd2hvc2UgdmFsdWVzIHBhc3MgYHByZWRgLiBWYWx1ZXMgd2hvXFxuICBkbyBub3QgcGFzcyBgcHJlZGAgaGF2ZSB0aGVpciBjaGlsZHJlbiBjdXQgb3V0IGFzIHdlbGwuXFxuICBUYWtlcyBhIGxpc3Qgb2Ygcm9zZXMsIG5vdCBhIHJvc2VcIlxuIHs6bm8tZG9jIHRydWV9XG4gW3ByZWQgcm9zZV1cbiAobWFrZS1yb3NlXG4gIChyb290IHJvc2UpXG4gIChtYXBcbiAgIChmbiogW3AxX180MjQwMCNdIChmaWx0ZXIgcHJlZCBwMV9fNDI0MDAjKSlcbiAgIChjb3JlL2ZpbHRlclxuICAgIChmbiogW3AxX180MjQwMSNdIChwcmVkIChyb290IHAxX180MjQwMSMpKSlcbiAgICAoY2hpbGRyZW4gcm9zZSkpKSkpXG4ifSB7OnN5bSByb290LCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0aGUgcm9vdCBvZiBhIFJvc2UgdHJlZS4iLCA6YXJnbGlzdHMgKFtyb3NlXSl9LCA6c291cmNlICIoZGVmblxuIHJvb3RcbiBcIlJldHVybnMgdGhlIHJvb3Qgb2YgYSBSb3NlIHRyZWUuXCJcbiB7Om5vLWRvYyB0cnVlfVxuIFtyb3NlXVxuICguLXJvb3Qgcm9zZSkpXG4ifSB7OnN5bSBzaHJpbmstdmVjdG9yLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2Ygcm9zZXNdKX0sIDpzb3VyY2UgIihkZWZuXG4gc2hyaW5rLXZlY3RvclxuIFtmIHJvc2VzXVxuIHs6cHJlIFsodmVjdG9yPyByb3NlcyldfVxuIChsZXRcbiAgW3Jvc2UgKHNocmluay12ZWN0b3IqIGYgcm9zZXMpIGVtcHR5LXJvc2UgKG1ha2Utcm9zZSAoZikgW10pXVxuICAoaWZcbiAgIChlbXB0eT8gcm9zZXMpXG4gICByb3NlXG4gICAobWFrZS1yb3NlIChyb290IHJvc2UpIChjb25zIGVtcHR5LXJvc2UgKGNoaWxkcmVuIHJvc2UpKSkpKSlcbiJ9IHs6c3ltIHppcCwgOm1ldGEgezpkb2MgIkFwcGx5IGBmYCB0byB0aGUgc2VxdWVuY2Ugb2YgUm9zZSB0cmVlcyBgcm9zZXNgLiIsIDphcmdsaXN0cyAoW2Ygcm9zZXNdKX0sIDpzb3VyY2UgIihkZWZuXG4gemlwXG4gXCJBcHBseSBgZmAgdG8gdGhlIHNlcXVlbmNlIG9mIFJvc2UgdHJlZXMgYHJvc2VzYC5cIlxuIHs6bm8tZG9jIHRydWV9XG4gW2Ygcm9zZXNdXG4gKG1ha2Utcm9zZVxuICAoYXBwbHkgZiAobWFwIHJvb3Qgcm9zZXMpKVxuICAobWFwIChmbiogW3AxX180MjQwMiNdICh6aXAgZiBwMV9fNDI0MDIjKSkgKHBlcm11dGF0aW9ucyByb3NlcykpKSlcbiJ9IHs6c3ltIGZtYXAsIDptZXRhIHs6ZG9jICJBcHBsaWVzIGZ1bmN0aW9ucyBgZmAgdG8gYWxsIHZhbHVlcyBpbiB0aGUgdHJlZS4iLCA6YXJnbGlzdHMgKFtmIHJvc2VdKX0sIDpzb3VyY2UgIihkZWZuXG4gZm1hcFxuIFwiQXBwbGllcyBmdW5jdGlvbnMgYGZgIHRvIGFsbCB2YWx1ZXMgaW4gdGhlIHRyZWUuXCJcbiB7Om5vLWRvYyB0cnVlfVxuIFtmIHJvc2VdXG4gKG1ha2Utcm9zZVxuICAoZiAocm9vdCByb3NlKSlcbiAgKG1hcCAoZm4qIFtwMV9fNDIzOTkjXSAoZm1hcCBmIHAxX180MjM5OSMpKSAoY2hpbGRyZW4gcm9zZSkpKSlcbiJ9IHs6c3ltIGNvbGxhcHNlLCA6bWV0YSB7OmRvYyAiUmV0dXJuIGEgbmV3IHJvc2UtdHJlZSB3aG9zZSBkZXB0aC1vbmUgY2hpbGRyZW5cbiAgYXJlIHRoZSBjaGlsZHJlbiBmcm9tIGRlcHRoIG9uZSBfYW5kXyB0d28gb2YgdGhlIGlucHV0XG4gIHRyZWUuIiwgOmFyZ2xpc3RzIChbcm9zZV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBjb2xsYXBzZVxuIFwiUmV0dXJuIGEgbmV3IHJvc2UtdHJlZSB3aG9zZSBkZXB0aC1vbmUgY2hpbGRyZW5cXG4gIGFyZSB0aGUgY2hpbGRyZW4gZnJvbSBkZXB0aCBvbmUgX2FuZF8gdHdvIG9mIHRoZSBpbnB1dFxcbiAgdHJlZS5cIlxuIHs6bm8tZG9jIHRydWV9XG4gW3Jvc2VdXG4gKG1ha2Utcm9zZVxuICAocm9vdCByb3NlKVxuICAobGV0XG4gICBbdGhlLWNoaWxkcmVuIChjaGlsZHJlbiByb3NlKV1cbiAgIChjb25jYXRcbiAgICAobWFwIGNvbGxhcHNlIHRoZS1jaGlsZHJlbilcbiAgICAobWFwIGNvbGxhcHNlIChtYXBjYXQgY2hpbGRyZW4gdGhlLWNoaWxkcmVuKSkpKSkpXG4ifSksIGR5bmFkb2MuY29tbW9uICh7OnN5bSB2YXItc3ltLT51cmwsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbcmVsLXBhdGggc3RhdGljPyB0eXBlIG5zLXN5bSB2YXItc3ltXSl9LCA6c291cmNlICIoZGVmblxuIHZhci1zeW0tPnVybFxuIFtyZWwtcGF0aCBzdGF0aWM/IHR5cGUgbnMtc3ltIHZhci1zeW1dXG4gKHN0clxuICByZWwtcGF0aFxuICAobmFtZSB0eXBlKVxuICBcIi9cIlxuICBucy1zeW1cbiAgXCIvXCJcbiAgKGlmXG4gICBzdGF0aWM/XG4gICAoLT5cbiAgICAoc3RyIHZhci1zeW0pXG4gICAgKHN0ci9yZXBsYWNlIFwiP1wiIFwiJ3EnXCIpXG4gICAgKHN0ci9yZXBsYWNlIFwiIVwiIFwiJ2UnXCIpXG4gICAgKHN0ci9yZXBsYWNlIFwiPFwiIFwiJ2wnXCIpXG4gICAgKHN0ci9yZXBsYWNlIFwiPlwiIFwiJ2cnXCIpXG4gICAgKHN0ci9yZXBsYWNlIFwiOlwiIFwiJ2MnXCIpXG4gICAgKHN0ci9yZXBsYWNlIFwiKlwiIFwiJ2EnXCIpXG4gICAgKHN0ci9yZXBsYWNlIFwiJlwiIFwiJ20nXCIpKVxuICAgIz8oOmNsanMgKGpzL2VuY29kZVVSSUNvbXBvbmVudCAoc3RyIHZhci1zeW0pKSA6Y2xqIChqYXZhLm5ldC5VUkxFbmNvZGVyL2VuY29kZSAoc3RyIHZhci1zeW0pIFwiVVRGLThcIikpKVxuICAod2hlbiBzdGF0aWM/IFwiLmh0bWxcIikpKVxuIn0gezpzeW0gaW5pdC1lZGl0b3IsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbcnVtLXN0YXRlXSl9LCA6c291cmNlICIoZGVmblxuIGluaXQtZWRpdG9yXG4gW3J1bS1zdGF0ZV1cbiAobGV0XG4gIFtbc3RhdGVdICg6cnVtL2FyZ3MgcnVtLXN0YXRlKV1cbiAgKHdoZW4tbGV0XG4gICBbaW5pdCAoOmluaXQtZWRpdG9yIHN0YXRlKV1cbiAgIChpbml0IChydW0vZG9tLW5vZGUgcnVtLXN0YXRlKSkpKVxuIHJ1bS1zdGF0ZSlcbiJ9IHs6c3ltIG5zLXN5bS0+dXJsLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3JlbC1wYXRoIHN0YXRpYz8gdHlwZSBucy1zeW1dKX0sIDpzb3VyY2UgIihkZWZuXG4gbnMtc3ltLT51cmxcbiBbcmVsLXBhdGggc3RhdGljPyB0eXBlIG5zLXN5bV1cbiAoc3RyIHJlbC1wYXRoIChuYW1lIHR5cGUpIFwiL1wiIG5zLXN5bSAod2hlbiBzdGF0aWM/IFwiLmh0bWxcIikpKVxuIn0gezpzeW0gKnNlc3Npb24sIDptZXRhIHt9LCA6c291cmNlICIoZGVmICpzZXNzaW9uIChhdG9tIGluaXRpYWwtc2Vzc2lvbikpXG4ifSB7OnN5bSBnZXQtc3RhdGUsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbXSl9LCA6c291cmNlICIoZGVmblxuIGdldC1zdGF0ZVxuIFtdXG4gKC0+XG4gIEAqc2Vzc2lvblxuICAoby9xdWVyeS1hbGwgOmR5bmFkb2MuY29tbW9uL2dldC1zdGF0ZSlcbiAgZmlyc3RcbiAgKG9yICh0aHJvdyAoZXgtaW5mbyBcIlN0YXRlIG5vdCBmb3VuZFwiIHt9KSkpKSlcbiJ9IHs6c3ltIHVwZGF0ZS1zZXNzaW9uLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3Nlc3Npb24gaWQgc3RhdGVdKX0sIDpzb3VyY2UgIihkZWZuXG4gdXBkYXRlLXNlc3Npb25cbiBbc2Vzc2lvbiBpZCBzdGF0ZV1cbiAoby9maXJlLXJ1bGVzIChvL2luc2VydCBzZXNzaW9uIGlkIHN0YXRlKSkpXG4ifSB7OnN5bSBpbml0aWFsLXNlc3Npb24sIDptZXRhIHt9LCA6c291cmNlICIoZGVmXG4gaW5pdGlhbC1zZXNzaW9uXG4gKC0+XG4gIChyZWR1Y2Ugby9hZGQtcnVsZSAoby8tPnNlc3Npb24pIChjb25jYXQgcnVsZXMgY29tcG9uZW50cykpXG4gIChvL2luc2VydFxuICAgOmR5bmFkb2MuY29tbW9uL2NsaWVudFxuICAgezpkeW5hZG9jLmNvbW1vbi9wcm9kPyBmYWxzZSxcbiAgICA6ZHluYWRvYy5jb21tb24vZXhwb3J0LWZpbHRlciBcIlwiLFxuICAgIDpkeW5hZG9jLmNvbW1vbi9jbGpzLXN0YXJ0ZWQ/IGZhbHNlLFxuICAgIDpkeW5hZG9jLmNvbW1vbi9leHBvcnRhYmxlPyBmYWxzZSxcbiAgICA6ZHluYWRvYy5jb21tb24vaW5pdC1lZGl0b3IgbmlsLFxuICAgIDpkeW5hZG9jLmNvbW1vbi9pbml0LWV4YW1wbGUtZWRpdG9yIG5pbCxcbiAgICA6ZHluYWRvYy5jb21tb24vd2F0Y2hlciBuaWx9KVxuICAoby9pbnNlcnRcbiAgIDpkeW5hZG9jLmNvbW1vbi9zZXJ2ZXJcbiAgIHs6ZHluYWRvYy5jb21tb24vbnMtc3ltIG5pbCxcbiAgICA6ZHluYWRvYy5jb21tb24vdmFyLXN5bSBuaWwsXG4gICAgOmR5bmFkb2MuY29tbW9uL3R5cGUgbmlsLFxuICAgIDpkeW5hZG9jLmNvbW1vbi9oaWRlLXNpZGViYXI/IGZhbHNlfSkpKVxuIn0gezpzeW0gcnVsZXMsIDptZXRhIHt9LCA6c291cmNlICIoZGVmXG4gcnVsZXNcbiAoby9ydWxlc2V0XG4gIHs6ZHluYWRvYy5jb21tb24vZ2V0LXN0YXRlXG4gICBbOndoYXRcbiAgICBbOmR5bmFkb2MuY29tbW9uL3NlcnZlciA6ZHluYWRvYy5jb21tb24vbnMtc3ltIG5zLXN5bV1cbiAgICBbOmR5bmFkb2MuY29tbW9uL3NlcnZlciA6ZHluYWRvYy5jb21tb24vdmFyLXN5bSB2YXItc3ltXVxuICAgIFs6ZHluYWRvYy5jb21tb24vc2VydmVyIDpkeW5hZG9jLmNvbW1vbi90eXBlIHR5cGVdXG4gICAgWzpkeW5hZG9jLmNvbW1vbi9jbGllbnQgOmR5bmFkb2MuY29tbW9uL3dhdGNoZXIgd2F0Y2hlcl1dfSkpXG4ifSB7OnN5bSBjb21wb25lbnRzLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZlxuIGNvbXBvbmVudHNcbiAob3J1bS9ydWxlc2V0XG4gIHthcHAtcm9vdFxuICAgWzp3aGF0XG4gICAgWzpkeW5hZG9jLmNvbW1vbi9zZXJ2ZXIgOmR5bmFkb2MuY29tbW9uL25zLXN5bSBucy1zeW1dXG4gICAgWzpkeW5hZG9jLmNvbW1vbi9zZXJ2ZXIgOmR5bmFkb2MuY29tbW9uL25zLW1ldGEgbnMtbWV0YV1cbiAgICBbOmR5bmFkb2MuY29tbW9uL3NlcnZlciA6ZHluYWRvYy5jb21tb24vdmFyLXN5bSB2YXItc3ltXVxuICAgIFs6ZHluYWRvYy5jb21tb24vc2VydmVyIDpkeW5hZG9jLmNvbW1vbi92YXJzIHZhcnNdXG4gICAgWzpkeW5hZG9jLmNvbW1vbi9jbGllbnRcbiAgICAgOmR5bmFkb2MuY29tbW9uL2NsanMtc3RhcnRlZD9cbiAgICAgY2xqcy1zdGFydGVkP11cbiAgICBbOmR5bmFkb2MuY29tbW9uL2NsaWVudCA6ZHluYWRvYy5jb21tb24vcHJvZD8gcHJvZD9dXG4gICAgWzpkeW5hZG9jLmNvbW1vbi9zZXJ2ZXIgOmR5bmFkb2MuY29tbW9uL3N0YXRpYz8gc3RhdGljP11cbiAgICBbOmR5bmFkb2MuY29tbW9uL3NlcnZlclxuICAgICA6ZHluYWRvYy5jb21tb24vaGlkZS1zaWRlYmFyP1xuICAgICBoaWRlLXNpZGViYXI/XVxuICAgIDp0aGVuXG4gICAgKGxldFxuICAgICBbKnNlc3Npb24gKG9ydW0vcHJvcCldXG4gICAgIFs6ZGl2XG4gICAgICAod2hlbi1ub3QgaGlkZS1zaWRlYmFyPyAoc2lkZWJhciB7fSkpXG4gICAgICAoY29ualxuICAgICAgIChpZlxuICAgICAgICBucy1zeW1cbiAgICAgICAgKGludG9cbiAgICAgICAgIFs6ZGl2XG4gICAgICAgICAgezpjbGFzcyBcInZhcnNcIiwgOnN0eWxlIHs6bGVmdCAoaWYgaGlkZS1zaWRlYmFyPyAwIDMwMCl9fVxuICAgICAgICAgIChleHBvcnQgKnNlc3Npb24pXG4gICAgICAgICAgKHdoZW4tbm90XG4gICAgICAgICAgIHZhci1zeW1cbiAgICAgICAgICAgWzpkaXZcbiAgICAgICAgICAgIFs6Y2VudGVyIFs6aDEgKHN0ciBucy1zeW0pXV1cbiAgICAgICAgICAgICh3aGVuLWxldFxuICAgICAgICAgICAgIFtkb2MgKDpkb2MgbnMtbWV0YSldXG4gICAgICAgICAgICAgWzpkaXYgezpjbGFzcyBcInNlY3Rpb24gZG9jXCJ9IGRvY10pXSldXG4gICAgICAgICAobWFwdiB2YXItPmh0bWwgdmFycykpXG4gICAgICAgIFs6ZGl2IHs6Y2xhc3MgXCJ2YXJzXCJ9IChleHBvcnQgKnNlc3Npb24pXSlcbiAgICAgICAoY29uZFxuICAgICAgICBzdGF0aWM/XG4gICAgICAgIFs6ZGl2XG4gICAgICAgICB7OmNsYXNzIFwiZm9vdGVyXCJ9XG4gICAgICAgICBcIkdlbmVyYXRlZCBieSBcIlxuICAgICAgICAgWzphXG4gICAgICAgICAgezpocmVmIFwiaHR0cHM6Ly9naXRodWIuY29tL29ha2VzL0R5bmFkb2NcIiwgOnRhcmdldCBcIl9ibGFua1wifVxuICAgICAgICAgIFwiRHluYWRvY1wiXV1cbiAgICAgICAgKGFuZCBjbGpzLXN0YXJ0ZWQ/IChub3QgcHJvZD8pKVxuICAgICAgICBbOmRpdlxuICAgICAgICAgezpjbGFzcyBcImZvb3RlclwifVxuICAgICAgICAgXCJUaGlzIGlzIGEgY3VzdG9tIGJ1aWxkIG9mIFwiXG4gICAgICAgICBbOmFcbiAgICAgICAgICB7OmhyZWYgXCJodHRwczovL2dpdGh1Yi5jb20vb2FrZXMvRHluYWRvY1wiLCA6dGFyZ2V0IFwiX2JsYW5rXCJ9XG4gICAgICAgICAgXCJEeW5hZG9jXCJdXSkpXSldLFxuICAgdmFyLT5odG1sXG4gICBbOndoYXRcbiAgICBbOmR5bmFkb2MuY29tbW9uL3NlcnZlciA6ZHluYWRvYy5jb21tb24vbnMtc3ltIG5zLXN5bV1cbiAgICBbOmR5bmFkb2MuY29tbW9uL3NlcnZlciA6ZHluYWRvYy5jb21tb24vdmFyLXN5bSB2YXItc3ltXVxuICAgIFs6ZHluYWRvYy5jb21tb24vc2VydmVyIDpkeW5hZG9jLmNvbW1vbi90eXBlIHR5cGVdXG4gICAgWzpkeW5hZG9jLmNvbW1vbi9zZXJ2ZXIgOmR5bmFkb2MuY29tbW9uL3JlbC1wYXRoIHJlbC1wYXRoXVxuICAgIFs6ZHluYWRvYy5jb21tb24vc2VydmVyIDpkeW5hZG9jLmNvbW1vbi9zdGF0aWM/IHN0YXRpYz9dXG4gICAgOnRoZW5cbiAgICAobGV0XG4gICAgIFt7OmtleXMgW3N5bSBtZXRhIHNvdXJjZSBzcGVjIGV4YW1wbGVzIG1ldGhvZHMgcHJvdG9jb2xdfVxuICAgICAgKG9ydW0vcHJvcClcbiAgICAgIHs6a2V5cyBbYXJnbGlzdHMgZG9jXX1cbiAgICAgIG1ldGFcbiAgICAgIHVybFxuICAgICAgKHZhci1zeW0tPnVybCByZWwtcGF0aCBzdGF0aWM/IHR5cGUgbnMtc3ltIHN5bSldXG4gICAgIFs6ZGl2XG4gICAgICB7OmNsYXNzIFwidmFyLWluZm9cIn1cbiAgICAgIChpbnRvXG4gICAgICAgKGlmIHZhci1zeW0gWzpkaXZdIFs6YSB7OmhyZWYgdXJsfV0pXG4gICAgICAgKGlmXG4gICAgICAgIGFyZ2xpc3RzXG4gICAgICAgIChtYXBcbiAgICAgICAgIChmbiBbYXJnbGlzdF0gWzpoMiAocHItc3RyIChhcHBseSBsaXN0IHN5bSBhcmdsaXN0KSldKVxuICAgICAgICAgYXJnbGlzdHMpXG4gICAgICAgIFtbOmgyIChzdHIgc3ltKV1dKSlcbiAgICAgICh3aGVuXG4gICAgICAgbWV0aG9kc1xuICAgICAgIFs6ZGl2XG4gICAgICAgIHs6Y2xhc3MgXCJzZWN0aW9uXCJ9XG4gICAgICAgIFs6aDMgXCJNZXRob2RzIGluIHRoaXMgcHJvdG9jb2xcIl1cbiAgICAgICAgKGludG9cbiAgICAgICAgIFs6dWxdXG4gICAgICAgICAoZm9yXG4gICAgICAgICAgW21ldGhvZC1zeW0gbWV0aG9kc11cbiAgICAgICAgICBbOmxpXG4gICAgICAgICAgIFs6YVxuICAgICAgICAgICAgezpocmVmXG4gICAgICAgICAgICAgKHZhci1zeW0tPnVybCByZWwtcGF0aCBzdGF0aWM/IHR5cGUgbnMtc3ltIG1ldGhvZC1zeW0pfVxuICAgICAgICAgICAgKHN0ciBtZXRob2Qtc3ltKV1dKSldKVxuICAgICAgKHdoZW5cbiAgICAgICBwcm90b2NvbFxuICAgICAgIFs6ZGl2XG4gICAgICAgIHs6Y2xhc3MgXCJzZWN0aW9uXCJ9XG4gICAgICAgIFs6aDNcbiAgICAgICAgIFwiUGFydCBvZiB0aGUgXCJcbiAgICAgICAgIFs6YVxuICAgICAgICAgIHs6aHJlZiAodmFyLXN5bS0+dXJsIHJlbC1wYXRoIHN0YXRpYz8gdHlwZSBucy1zeW0gcHJvdG9jb2wpfVxuICAgICAgICAgIChzdHIgcHJvdG9jb2wpXVxuICAgICAgICAgXCIgcHJvdG9jb2xcIl1dKVxuICAgICAgKHdoZW4gZG9jIFs6ZGl2IHs6Y2xhc3MgXCJzZWN0aW9uIGRvY1wifSBkb2NdKVxuICAgICAgKHdoZW5cbiAgICAgICAoc2VxIGV4YW1wbGVzKVxuICAgICAgIChpbnRvXG4gICAgICAgIFs6ZGl2XG4gICAgICAgICB7OmNsYXNzIFwic2VjdGlvblwifVxuICAgICAgICAgWzpoMiAoaWYgKD4gKGNvdW50IGV4YW1wbGVzKSAxKSBcIkV4YW1wbGVzXCIgXCJFeGFtcGxlXCIpXV1cbiAgICAgICAgKG1hcHYgZXhhbXBsZS0+aHRtbCBleGFtcGxlcykpKVxuICAgICAgKHdoZW5cbiAgICAgICBzcGVjXG4gICAgICAgKGlmXG4gICAgICAgIHZhci1zeW1cbiAgICAgICAgWzpkaXYgezpjbGFzcyBcInNlY3Rpb25cIn0gWzpoMiBcIlNwZWNcIl0gKHNwZWMtPmh0bWwgc3BlYyldXG4gICAgICAgIChleHBhbmRhYmxlLXNlY3Rpb25cbiAgICAgICAgIHs6bGFiZWwgXCJTcGVjXCIsIDp1cmwgdXJsLCA6Y29udGVudCAoc3BlYy0+aHRtbCBzcGVjKX0pKSlcbiAgICAgICh3aGVuXG4gICAgICAgc291cmNlXG4gICAgICAgKGlmXG4gICAgICAgIHZhci1zeW1cbiAgICAgICAgWzpkaXYgezpjbGFzcyBcInNlY3Rpb25cIn0gWzpoMiBcIlNvdXJjZVwiXSAoc291cmNlLT5odG1sIHNvdXJjZSldXG4gICAgICAgIChleHBhbmRhYmxlLXNlY3Rpb25cbiAgICAgICAgIHs6bGFiZWwgXCJTb3VyY2VcIixcbiAgICAgICAgICA6dXJsIHVybCxcbiAgICAgICAgICA6Y29udGVudCAoc291cmNlLT5odG1sIHNvdXJjZSl9KSkpXSldLFxuICAgZXhhbXBsZS0+aHRtbFxuICAgWzp3aGF0XG4gICAgWzpkeW5hZG9jLmNvbW1vbi9zZXJ2ZXIgOmR5bmFkb2MuY29tbW9uL3R5cGUgdHlwZV1cbiAgICBbOmR5bmFkb2MuY29tbW9uL2NsaWVudCA6ZHluYWRvYy5jb21tb24vcHJvZD8gcHJvZD9dXG4gICAgWzpkeW5hZG9jLmNvbW1vbi9zZXJ2ZXIgOmR5bmFkb2MuY29tbW9uL3N0YXRpYz8gc3RhdGljP11cbiAgICBbOmR5bmFkb2MuY29tbW9uL2NsaWVudFxuICAgICA6ZHluYWRvYy5jb21tb24vaW5pdC1leGFtcGxlLWVkaXRvclxuICAgICBpbml0LWV4YW1wbGUtZWRpdG9yXVxuICAgIDp0aGVuXG4gICAgKGV4YW1wbGUtPmh0bWwqIG8vKm1hdGNoKiAob3J1bS9wcm9wKSldLFxuICAgc291cmNlLT5odG1sXG4gICBbOndoYXRcbiAgICBbOmR5bmFkb2MuY29tbW9uL2NsaWVudCA6ZHluYWRvYy5jb21tb24vaW5pdC1lZGl0b3IgaW5pdC1lZGl0b3JdXG4gICAgOnRoZW5cbiAgICAoc291cmNlLT5odG1sKiBvLyptYXRjaCogKG9ydW0vcHJvcCkpXSxcbiAgIHNwZWMtPmh0bWxcbiAgIFs6d2hhdFxuICAgIFs6ZHluYWRvYy5jb21tb24vY2xpZW50IDpkeW5hZG9jLmNvbW1vbi9pbml0LWVkaXRvciBpbml0LWVkaXRvcl1cbiAgICA6dGhlblxuICAgIChzcGVjLT5odG1sKiBvLyptYXRjaCogKG9ydW0vcHJvcCkpXSxcbiAgIGV4cG9ydFxuICAgWzp3aGF0XG4gICAgWzpkeW5hZG9jLmNvbW1vbi9jbGllbnRcbiAgICAgOmR5bmFkb2MuY29tbW9uL2NsanMtc3RhcnRlZD9cbiAgICAgY2xqcy1zdGFydGVkP11cbiAgICBbOmR5bmFkb2MuY29tbW9uL3NlcnZlciA6ZHluYWRvYy5jb21tb24vc3RhdGljPyBzdGF0aWM/XVxuICAgIDp0aGVuXG4gICAgKGxldFxuICAgICBbKnNlc3Npb24gKG9ydW0vcHJvcCldXG4gICAgICh3aGVuLW5vdFxuICAgICAgc3RhdGljP1xuICAgICAgWzpkaXZcbiAgICAgICB7OnN0eWxlIHs6bWluLWhlaWdodCA3NX19XG4gICAgICAgKHdoZW5cbiAgICAgICAgY2xqcy1zdGFydGVkP1xuICAgICAgICBbOmRpdlxuICAgICAgICAgezpjbGFzcyBcImV4cG9ydFwifVxuICAgICAgICAgKGV4cGFuZGFibGUtc2VjdGlvblxuICAgICAgICAgIHs6bGFiZWwgXCJFeHBvcnRcIixcbiAgICAgICAgICAgOnVybCBcIlwiLFxuICAgICAgICAgICA6Y29udGVudCAoZXhwb3J0LWZvcm0gKnNlc3Npb24pLFxuICAgICAgICAgICA6b24tY2xvc2VcbiAgICAgICAgICAgKGZuKlxuICAgICAgICAgICAgW11cbiAgICAgICAgICAgIChzd2FwIVxuICAgICAgICAgICAgICpzZXNzaW9uXG4gICAgICAgICAgICAgKGZuXG4gICAgICAgICAgICAgIFtzZXNzaW9uXVxuICAgICAgICAgICAgICAoLT5cbiAgICAgICAgICAgICAgIHNlc3Npb25cbiAgICAgICAgICAgICAgIChvL2luc2VydFxuICAgICAgICAgICAgICAgIDpkeW5hZG9jLmNvbW1vbi9jbGllbnRcbiAgICAgICAgICAgICAgICA6ZHluYWRvYy5jb21tb24vZXhwb3J0LWZpbHRlclxuICAgICAgICAgICAgICAgIFwiXCIpXG4gICAgICAgICAgICAgICBvL2ZpcmUtcnVsZXMpKSkpfSldKVxuICAgICAgIFs6ZGl2IHs6c3R5bGUgezpjbGVhciBcInJpZ2h0XCJ9fV1dKSldLFxuICAgZXhwb3J0LWZvcm1cbiAgIFs6d2hhdFxuICAgIFs6ZHluYWRvYy5jb21tb24vc2VydmVyIDpkeW5hZG9jLmNvbW1vbi9ucy1zeW0gbnMtc3ltXVxuICAgIFs6ZHluYWRvYy5jb21tb24vc2VydmVyIDpkeW5hZG9jLmNvbW1vbi9ucy1tZXRhIG5zLW1ldGFdXG4gICAgWzpkeW5hZG9jLmNvbW1vbi9zZXJ2ZXIgOmR5bmFkb2MuY29tbW9uL3Zhci1zeW0gdmFyLXN5bV1cbiAgICBbOmR5bmFkb2MuY29tbW9uL3NlcnZlciA6ZHluYWRvYy5jb21tb24vdHlwZSB0eXBlXVxuICAgIFs6ZHluYWRvYy5jb21tb24vY2xpZW50IDpkeW5hZG9jLmNvbW1vbi9leHBvcnRhYmxlPyBleHBvcnRhYmxlP11cbiAgICBbOmR5bmFkb2MuY29tbW9uL2NsaWVudFxuICAgICA6ZHluYWRvYy5jb21tb24vZXhwb3J0LWZpbHRlclxuICAgICBleHBvcnQtZmlsdGVyXVxuICAgIDp0aGVuXG4gICAgKGxldFxuICAgICBbKnNlc3Npb25cbiAgICAgIChvcnVtL3Byb3ApXG4gICAgICAqb3B0aW9uc1xuICAgICAgKG9ydW0vYXRvbSB7OnBhZ2VzIChpZiBucy1zeW0gOnNpbmdsZSA6bXVsdGlwbGUpfSlcbiAgICAgIHs6a2V5cyBbcGFnZXNdfVxuICAgICAgQCpvcHRpb25zXVxuICAgICBbOmZvcm1cbiAgICAgIHs6YWN0aW9uIFwiL2R5bmFkb2MtZXhwb3J0LnppcFwiLFxuICAgICAgIDptZXRob2QgOmdldCxcbiAgICAgICA6c3R5bGUgezp0ZXh0LWFsaWduIFwibGVmdFwifX1cbiAgICAgIFs6ZGl2XG4gICAgICAgWzpsYWJlbFxuICAgICAgICBbOmlucHV0XG4gICAgICAgICB7OnR5cGUgXCJyYWRpb1wiLFxuICAgICAgICAgIDpuYW1lIFwicGFnZXNcIixcbiAgICAgICAgICA6dmFsdWUgXCJzaW5nbGVcIixcbiAgICAgICAgICA6Y2hlY2tlZCAoPSBwYWdlcyA6c2luZ2xlKSxcbiAgICAgICAgICA6b24tY2xpY2sgKGZuKiBbXSAoc3dhcCEgKm9wdGlvbnMgYXNzb2MgOnBhZ2VzIDpzaW5nbGUpKSxcbiAgICAgICAgICA6ZGlzYWJsZWQgKG5pbD8gbnMtc3ltKX1dXG4gICAgICAgIFwiT25seSB0aGlzIHBhZ2VcIl1dXG4gICAgICBbOmRpdlxuICAgICAgIFs6bGFiZWxcbiAgICAgICAgWzppbnB1dFxuICAgICAgICAgezp0eXBlIFwicmFkaW9cIixcbiAgICAgICAgICA6bmFtZSBcInBhZ2VzXCIsXG4gICAgICAgICAgOnZhbHVlIFwibXVsdGlwbGVcIixcbiAgICAgICAgICA6Y2hlY2tlZCAoPSBwYWdlcyA6bXVsdGlwbGUpLFxuICAgICAgICAgIDpvbi1jbGljayAoZm4qIFtdIChzd2FwISAqb3B0aW9ucyBhc3NvYyA6cGFnZXMgOm11bHRpcGxlKSl9XVxuICAgICAgICBcIk11bHRpcGxlIHBhZ2VzXCJdXVxuICAgICAgWzpkaXZcbiAgICAgICB7OnN0eWxlIHs6bWFyZ2luIDEwLCA6Zm9udC1zaXplIDE0fX1cbiAgICAgICAoY2FzZVxuICAgICAgICBwYWdlc1xuICAgICAgICA6c2luZ2xlXG4gICAgICAgIFs6aVxuICAgICAgICAgXCJPbmx5IHRoZSBjdXJyZW50IHBhZ2Ugd2lsbCBiZSBleHBvcnRlZFwiXG4gICAgICAgICBbOmJyXVxuICAgICAgICAgXCJhbmQgdGhlIHNpZGViYXIgd2lsbCBiZSBoaWRkZW4uXCJdXG4gICAgICAgIDptdWx0aXBsZVxuICAgICAgICBbOmlcbiAgICAgICAgIFwiQWxsIHRoZSBuYW1lc3BhY2VzIGluIHRoZSBzaWRlYmFyXCJcbiAgICAgICAgIFs6YnJdXG4gICAgICAgICBcIndpbGwgYmUgZXhwb3J0ZWQuIFlvdSBjYW4gbmFycm93IHRoZW1cIlxuICAgICAgICAgWzpicl1cbiAgICAgICAgIFwiZG93biB3aXRoIHRoZSBmb2xsb3dpbmcgcmVnZXg6XCJcbiAgICAgICAgIFs6ZGl2XG4gICAgICAgICAgWzppbnB1dFxuICAgICAgICAgICB7OnR5cGUgXCJ0ZXh0XCIsXG4gICAgICAgICAgICA6dmFsdWUgXCJcIixcbiAgICAgICAgICAgIDpwbGFjZWhvbGRlciBcIkV4cG9ydCBmaWx0ZXJcIixcbiAgICAgICAgICAgIDpzdHlsZSB7Om1hcmdpbiA1LCA6Zm9udC1zaXplIDE0fSxcbiAgICAgICAgICAgIDpvbi1jaGFuZ2VcbiAgICAgICAgICAgIChmblxuICAgICAgICAgICAgIFtlXVxuICAgICAgICAgICAgIChzd2FwIVxuICAgICAgICAgICAgICAqc2Vzc2lvblxuICAgICAgICAgICAgICAoZm5cbiAgICAgICAgICAgICAgIFtzZXNzaW9uXVxuICAgICAgICAgICAgICAgKC0+XG4gICAgICAgICAgICAgICAgc2Vzc2lvblxuICAgICAgICAgICAgICAgIChvL2luc2VydFxuICAgICAgICAgICAgICAgICA6ZHluYWRvYy5jb21tb24vY2xpZW50XG4gICAgICAgICAgICAgICAgIDpkeW5hZG9jLmNvbW1vbi9leHBvcnQtZmlsdGVyXG4gICAgICAgICAgICAgICAgICgtPiBlIC4tdGFyZ2V0IC4tdmFsdWUpKVxuICAgICAgICAgICAgICAgIG8vZmlyZS1ydWxlcykpKSl9XV1dKV1cbiAgICAgIFs6aW5wdXRcbiAgICAgICB7OnR5cGUgXCJoaWRkZW5cIixcbiAgICAgICAgOm5hbWUgXCJleHBvcnQtZmlsdGVyXCIsXG4gICAgICAgIDp2YWx1ZSAob3IgZXhwb3J0LWZpbHRlciBcIlwiKX1dXG4gICAgICAod2hlblxuICAgICAgIHR5cGVcbiAgICAgICBbOmlucHV0IHs6dHlwZSBcImhpZGRlblwiLCA6bmFtZSBcInR5cGVcIiwgOnZhbHVlIChuYW1lIHR5cGUpfV0pXG4gICAgICAod2hlblxuICAgICAgIG5zLXN5bVxuICAgICAgIFs6aW5wdXQgezp0eXBlIFwiaGlkZGVuXCIsIDpuYW1lIFwibnMtc3ltXCIsIDp2YWx1ZSAoc3RyIG5zLXN5bSl9XSlcbiAgICAgICh3aGVuXG4gICAgICAgdmFyLXN5bVxuICAgICAgIFs6aW5wdXRcbiAgICAgICAgezp0eXBlIFwiaGlkZGVuXCIsIDpuYW1lIFwidmFyLXN5bVwiLCA6dmFsdWUgKHN0ciB2YXItc3ltKX1dKVxuICAgICAgWzpkaXZcbiAgICAgICB7OnN0eWxlIHs6dGV4dC1hbGlnbiBcImNlbnRlclwifX1cbiAgICAgICBbOmJ1dHRvblxuICAgICAgICB7OnR5cGUgXCJzdWJtaXRcIiwgOmRpc2FibGVkIChub3QgZXhwb3J0YWJsZT8pfVxuICAgICAgICBcIkRvd25sb2FkIHppcCBmaWxlXCJdXVxuICAgICAgKHdoZW4tbm90XG4gICAgICAgZXhwb3J0YWJsZT9cbiAgICAgICBbOmRpdlxuICAgICAgICB7OnN0eWxlIHs6bWFyZ2luIDEwLCA6Zm9udC1zaXplIDE0fX1cbiAgICAgICAgWzpkaXZcbiAgICAgICAgIFs6YiBcIllvdSBidWlsdCBEeW5hZG9jIHdpdGggOm9wdGltaXphdGlvbnMgc2V0IHRvIDpub25lXCJdXVxuICAgICAgICBbOmRpdlxuICAgICAgICAgWzpiIFwiWW91IG11c3Qgc2V0IGl0IHRvIDpzaW1wbGUgaW4gb3JkZXIgdG8gZXhwb3J0XCJdXV0pXSldLFxuICAgc2lkZWJhclxuICAgWzp3aGF0XG4gICAgWzpkeW5hZG9jLmNvbW1vbi9zZXJ2ZXIgOmR5bmFkb2MuY29tbW9uL25zZXMgbnNlc11cbiAgICBbOmR5bmFkb2MuY29tbW9uL2NsaWVudFxuICAgICA6ZHluYWRvYy5jb21tb24vY2xqcy1zdGFydGVkP1xuICAgICBjbGpzLXN0YXJ0ZWQ/XVxuICAgIFs6ZHluYWRvYy5jb21tb24vc2VydmVyIDpkeW5hZG9jLmNvbW1vbi9yZWwtcGF0aCByZWwtcGF0aF1cbiAgICBbOmR5bmFkb2MuY29tbW9uL3NlcnZlciA6ZHluYWRvYy5jb21tb24vc3RhdGljPyBzdGF0aWM/XVxuICAgIFs6ZHluYWRvYy5jb21tb24vc2VydmVyIDpkeW5hZG9jLmNvbW1vbi9oaWRlLWJhZGdlPyBoaWRlLWJhZGdlP11cbiAgICBbOmR5bmFkb2MuY29tbW9uL2NsaWVudFxuICAgICA6ZHluYWRvYy5jb21tb24vZXhwb3J0LWZpbHRlclxuICAgICBleHBvcnQtZmlsdGVyXVxuICAgIDp0aGVuXG4gICAgKGxldFxuICAgICBbKnNlYXJjaFxuICAgICAgKG9ydW0vYXRvbSBcIlwiKVxuICAgICAgc2VhcmNoXG4gICAgICAob3IgKG5vdC1lbXB0eSBleHBvcnQtZmlsdGVyKSBAKnNlYXJjaClcbiAgICAgIHNlYXJjaFxuICAgICAgKHdoZW5cbiAgICAgICAoc2VxIHNlYXJjaClcbiAgICAgICAodHJ5XG4gICAgICAgIChyZS1wYXR0ZXJuIHNlYXJjaClcbiAgICAgICAgKGNhdGNoICM/KDpjbGogRXhjZXB0aW9uIDpjbGpzIGpzL0Vycm9yKSBlIChwcmludGxuIGUpKSkpXVxuICAgICBbOmRpdlxuICAgICAgKHdoZW5cbiAgICAgICBjbGpzLXN0YXJ0ZWQ/XG4gICAgICAgWzppbnB1dFxuICAgICAgICB7OmNsYXNzIFwic2VhcmNoXCIsXG4gICAgICAgICA6b24tY2hhbmdlXG4gICAgICAgICAoZm4qXG4gICAgICAgICAgW3AxX180MzIwOSNdXG4gICAgICAgICAgKC0+PiBwMV9fNDMyMDkjIC4tdGFyZ2V0IC4tdmFsdWUgKHJlc2V0ISAqc2VhcmNoKSkpLFxuICAgICAgICAgOnBsYWNlaG9sZGVyIFwiU2VhcmNoXCJ9XSlcbiAgICAgIChpbnRvXG4gICAgICAgWzpkaXZcbiAgICAgICAgezpjbGFzcyBcIm5zZXNcIn1cbiAgICAgICAgKHdoZW4gKHNlcSBleHBvcnQtZmlsdGVyKSBbOmkgXCJQYWdlcyB0byBleHBvcnQ6XCJdKV1cbiAgICAgICAoa2VlcFxuICAgICAgICAoZm5cbiAgICAgICAgIFt7OmtleXMgW3N5bSB0eXBlIHZhci1zeW1zXX1dXG4gICAgICAgICAobGV0XG4gICAgICAgICAgW3ZhcnNcbiAgICAgICAgICAgKHdoZW5cbiAgICAgICAgICAgIChhbmQgc2VhcmNoIChlbXB0eT8gZXhwb3J0LWZpbHRlcikpXG4gICAgICAgICAgICAoLT4+XG4gICAgICAgICAgICAgdmFyLXN5bXNcbiAgICAgICAgICAgICAoZmlsdGVyXG4gICAgICAgICAgICAgIChmbiogW3AxX180MzIxMCNdIChyZS1maW5kIHNlYXJjaCAoc3RyIHAxX180MzIxMCMpKSkpXG4gICAgICAgICAgICAgKG1hcHZcbiAgICAgICAgICAgICAgKGZuXG4gICAgICAgICAgICAgICBbdmFyLXN5bV1cbiAgICAgICAgICAgICAgIFs6ZGl2XG4gICAgICAgICAgICAgICAgezpjbGFzcyBcInZhclwifVxuICAgICAgICAgICAgICAgIFs6YVxuICAgICAgICAgICAgICAgICB7OmhyZWZcbiAgICAgICAgICAgICAgICAgICh2YXItc3ltLT51cmwgcmVsLXBhdGggc3RhdGljPyB0eXBlIHN5bSB2YXItc3ltKX1cbiAgICAgICAgICAgICAgICAgKHN0ciB2YXItc3ltKV1dKSkpKV1cbiAgICAgICAgICAod2hlblxuICAgICAgICAgICAob3IgKG5pbD8gc2VhcmNoKSAocmUtZmluZCBzZWFyY2ggKHN0ciBzeW0pKSAoc2VxIHZhcnMpKVxuICAgICAgICAgICBbOmRpdlxuICAgICAgICAgICAgKHdoZW5cbiAgICAgICAgICAgICAoYW5kICg9IHR5cGUgOmNsanMpIChub3QgaGlkZS1iYWRnZT8pKVxuICAgICAgICAgICAgIFs6ZGl2IHs6Y2xhc3MgXCJ0YWdcIn0gXCJDTEpTXCJdKVxuICAgICAgICAgICAgWzphXG4gICAgICAgICAgICAgezpocmVmIChucy1zeW0tPnVybCByZWwtcGF0aCBzdGF0aWM/IHR5cGUgc3ltKX1cbiAgICAgICAgICAgICAoc3RyIHN5bSldXG4gICAgICAgICAgICAod2hlbiAoc2VxIHZhcnMpIChpbnRvIFs6ZGl2XSB2YXJzKSldKSkpXG4gICAgICAgIG5zZXMpKV0pXX0pKVxuIn0gezpzeW0gaW5pdC1leGFtcGxlLWVkaXRvciwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtydW0tc3RhdGVdKX0sIDpzb3VyY2UgIihkZWZuXG4gaW5pdC1leGFtcGxlLWVkaXRvclxuIFtydW0tc3RhdGVdXG4gKGxldFxuICBbW3N0YXRlIGV4YW1wbGVdICg6cnVtL2FyZ3MgcnVtLXN0YXRlKV1cbiAgKHdoZW4tbGV0XG4gICBbaW5pdCAoOmluaXQtZXhhbXBsZS1lZGl0b3Igc3RhdGUpXVxuICAgKGluaXQgKHJ1bS9kb20tbm9kZSBydW0tc3RhdGUpIGV4YW1wbGUpKSlcbiBydW0tc3RhdGUpXG4ifSksIHBhcmVuLXNvdXAuZG9tICh7OnN5bSB0b3AtbGV2ZWw/LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW25vZGVdKX0sIDpzb3VyY2UgIihkZWZuXG4gdG9wLWxldmVsP1xuIFtub2RlXVxuIChib29sZWFuXG4gIChzb21lLT4gbm9kZSAuLXBhcmVudEVsZW1lbnQgLi1jbGFzc0xpc3QgKC5jb250YWlucyBcImNvbnRlbnRcIikpKSlcbiJ9IHs6c3ltIGdldC1zZWxlY3Rpb24sIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRoZSBvYmplY3RzIHJlbGF0ZWQgdG8gc2VsZWN0aW9uIGZvciB0aGUgZ2l2ZW4gZWxlbWVudC4gSWYgZnVsbC1zZWxlY3Rpb24/IGlzIHRydWUsXG5pdCB3aWxsIHVzZSByYW5neSBpbnN0ZWFkIG9mIHRoZSBuYXRpdmUgc2VsZWN0aW9uIEFQSSBpbiBvcmRlciB0byBnZXQgdGhlIGJlZ2lubmluZyBhbmQgZW5kaW5nXG5vZiB0aGUgc2VsZWN0aW9uIChpdCBpcywgaG93ZXZlciwgbXVjaCBzbG93ZXIpLiIsIDphcmdsaXN0cyAoW2VsZW1lbnQgZnVsbC1zZWxlY3Rpb24/XSl9LCA6c291cmNlICIoZGVmblxuIGdldC1zZWxlY3Rpb25cbiBcIlJldHVybnMgdGhlIG9iamVjdHMgcmVsYXRlZCB0byBzZWxlY3Rpb24gZm9yIHRoZSBnaXZlbiBlbGVtZW50LiBJZiBmdWxsLXNlbGVjdGlvbj8gaXMgdHJ1ZSxcXG5pdCB3aWxsIHVzZSByYW5neSBpbnN0ZWFkIG9mIHRoZSBuYXRpdmUgc2VsZWN0aW9uIEFQSSBpbiBvcmRlciB0byBnZXQgdGhlIGJlZ2lubmluZyBhbmQgZW5kaW5nXFxub2YgdGhlIHNlbGVjdGlvbiAoaXQgaXMsIGhvd2V2ZXIsIG11Y2ggc2xvd2VyKS5cIlxuIFtlbGVtZW50IGZ1bGwtc2VsZWN0aW9uP11cbiB7OmVsZW1lbnQgZWxlbWVudCxcbiAgOmN1cnNvci1wb3NpdGlvblxuICAoY29uZFxuICAgZnVsbC1zZWxlY3Rpb24/XG4gICAobGV0XG4gICAgW3NlbGVjdGlvblxuICAgICAoLmdldFNlbGVjdGlvbiBqcy9yYW5neSlcbiAgICAgcmFuZ2VzXG4gICAgICguc2F2ZUNoYXJhY3RlclJhbmdlcyBzZWxlY3Rpb24gZWxlbWVudCldXG4gICAgKGlmLWxldFxuICAgICBbY2hhci1yYW5nZSAoc29tZS0+IHJhbmdlcyAoYWdldCAwKSAoZ29iai9nZXQgXCJjaGFyYWN0ZXJSYW5nZVwiKSldXG4gICAgIFsoZ29iai9nZXQgY2hhci1yYW5nZSBcInN0YXJ0XCIpIChnb2JqL2dldCBjaGFyLXJhbmdlIFwiZW5kXCIpXVxuICAgICBbMCAwXSkpXG4gICAoPSAwICguLXJhbmdlQ291bnQgKC5nZXRTZWxlY3Rpb24ganMvd2luZG93KSkpXG4gICBbMCAwXVxuICAgOmVsc2VcbiAgIChsZXRcbiAgICBbc2VsZWN0aW9uXG4gICAgICguZ2V0U2VsZWN0aW9uIGpzL3dpbmRvdylcbiAgICAgcmFuZ2VcbiAgICAgKC5nZXRSYW5nZUF0IHNlbGVjdGlvbiAwKVxuICAgICBwcmUtY2FyZXQtcmFuZ2VcbiAgICAgKGRvdG9cbiAgICAgICguY2xvbmVSYW5nZSByYW5nZSlcbiAgICAgICguc2VsZWN0Tm9kZUNvbnRlbnRzIGVsZW1lbnQpXG4gICAgICAoLnNldEVuZCAoLi1lbmRDb250YWluZXIgcmFuZ2UpICguLWVuZE9mZnNldCByYW5nZSkpKVxuICAgICBwb3NcbiAgICAgKC0+IHByZS1jYXJldC1yYW5nZSAudG9TdHJpbmcgKHN0ci9yZXBsYWNlICNcIlxcclwiIFwiXCIpIC4tbGVuZ3RoKV1cbiAgICBbcG9zIHBvc10pKX0pXG4ifSB7OnN5bSBnZXQtY3Vyc29yLXBvc2l0aW9uLCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0aGUgY3Vyc29yIHBvc2l0aW9uLiIsIDphcmdsaXN0cyAoW2VsZW1lbnQgZnVsbC1zZWxlY3Rpb24/XSl9LCA6c291cmNlICIoZGVmblxuIGdldC1jdXJzb3ItcG9zaXRpb25cbiBcIlJldHVybnMgdGhlIGN1cnNvciBwb3NpdGlvbi5cIlxuIFtlbGVtZW50IGZ1bGwtc2VsZWN0aW9uP11cbiAoLT4gZWxlbWVudCAoZ2V0LXNlbGVjdGlvbiBmdWxsLXNlbGVjdGlvbj8pIDpjdXJzb3ItcG9zaXRpb24pKVxuIn0gezpzeW0gdGV4dC1ub2RlPywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtub2RlXSl9LCA6c291cmNlICIoZGVmbiB0ZXh0LW5vZGU/IFtub2RlXSAoPSAzICguLW5vZGVUeXBlIG5vZGUpKSlcbiJ9IHs6c3ltIGdldC1mb2N1c2VkLWZvcm0sIDptZXRhIHt9LCA6c291cmNlICIoZGVmIGdldC1mb2N1c2VkLWZvcm0gKGZuKiBbXSAoZ2V0LWZvY3VzZWQtZWxlbSBcImNvbGxlY3Rpb25cIikpKVxuIn0gezpzeW0gZ2V0LWZvY3VzZWQtdG9wLWxldmVsLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW10pfSwgOnNvdXJjZSAiKGRlZm5cbiBnZXQtZm9jdXNlZC10b3AtbGV2ZWxcbiBbXVxuICh3aGVuLWxldFxuICBbbm9kZSAoc29tZS0+IGpzL3Jhbmd5IC5nZXRTZWxlY3Rpb24gLi1hbmNob3JOb2RlKV1cbiAgKGxvb3BcbiAgIFtub2RlIG5vZGVdXG4gICAoaWZcbiAgICAodG9wLWxldmVsPyBub2RlKVxuICAgIG5vZGVcbiAgICAod2hlbi1sZXQgW3BhcmVudCAoLi1wYXJlbnRFbGVtZW50IG5vZGUpXSAocmVjdXIgcGFyZW50KSkpKSkpXG4ifSB7OnN5bSBnZXQtcGFyZW50LCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0aGUgbmVhcmVzdCBwYXJlbnQgd2l0aCB0aGUgZ2l2ZW4gY2xhc3MgbmFtZS4iLCA6YXJnbGlzdHMgKFtub2RlIGNsYXNzLW5hbWVdKX0sIDpzb3VyY2UgIihkZWZuXG4gZ2V0LXBhcmVudFxuIFwiUmV0dXJucyB0aGUgbmVhcmVzdCBwYXJlbnQgd2l0aCB0aGUgZ2l2ZW4gY2xhc3MgbmFtZS5cIlxuIFtub2RlIGNsYXNzLW5hbWVdXG4gKGxvb3BcbiAgW25vZGUgbm9kZV1cbiAgKHdoZW4tbGV0XG4gICBbcGFyZW50ICguLXBhcmVudEVsZW1lbnQgbm9kZSldXG4gICAoaWZcbiAgICAoLmNvbnRhaW5zICguLWNsYXNzTGlzdCBwYXJlbnQpIGNsYXNzLW5hbWUpXG4gICAgcGFyZW50XG4gICAgKHJlY3VyIHBhcmVudCkpKSkpXG4ifSB7OnN5bSBjb2xsLW5vZGU/LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW25vZGVdKX0sIDpzb3VyY2UgIihkZWZuXG4gY29sbC1ub2RlP1xuIFtub2RlXVxuIChib29sZWFuIChzb21lLT4gbm9kZSAuLWNsYXNzTGlzdCAoLmNvbnRhaW5zIFwiY29sbGVjdGlvblwiKSkpKVxuIn0gezpzeW0gZ2V0LW5lYXJlc3QtbnMsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbbm9kZV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBnZXQtbmVhcmVzdC1uc1xuIFtub2RlXVxuIChsb29wXG4gIFtub2RlIG5vZGVdXG4gIChpZlxuICAgKHNvbWUtPiBub2RlIC4tY2hpbGROb2RlcyAoLml0ZW0gMSkgLi10ZXh0Q29udGVudCAoPSBcIm5zXCIpKVxuICAgKHNvbWUtPiBub2RlIC4tY2hpbGROb2RlcyAoLml0ZW0gMykgLi10ZXh0Q29udGVudCBzeW1ib2wpXG4gICAod2hlbi1sZXQgW3NpYmxpbmcgKC4tcHJldmlvdXNTaWJsaW5nIG5vZGUpXSAocmVjdXIgc2libGluZykpKSkpXG4ifSB7OnN5bSBpbnNlcnQtdGV4dCEsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbdGV4dF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBpbnNlcnQtdGV4dCFcbiBbdGV4dF1cbiAobGV0XG4gIFtzZWxlY3Rpb25cbiAgICguZ2V0U2VsZWN0aW9uIGpzL3dpbmRvdylcbiAgIHJhbmdlXG4gICAoLmdldFJhbmdlQXQgc2VsZWN0aW9uIDApXG4gICBub2RlXG4gICAoLmNyZWF0ZVRleHROb2RlIGpzL2RvY3VtZW50IHRleHQpXVxuICAoZG90b1xuICAgcmFuZ2VcbiAgIC5kZWxldGVDb250ZW50c1xuICAgKC5pbnNlcnROb2RlIG5vZGUpXG4gICAoLnNldFN0YXJ0QWZ0ZXIgbm9kZSlcbiAgICguc2V0RW5kQWZ0ZXIgbm9kZSlcbiAgICguY29sbGFwc2UgZmFsc2UpKSkpXG4ifSB7OnN5bSBnZXQtY29tcGxldGlvbi1pbmZvLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW10pfSwgOnNvdXJjZSAiKGRlZm5cbiBnZXQtY29tcGxldGlvbi1pbmZvXG4gW11cbiAod2hlbi1sZXRcbiAgW3ByZWZpeC1lbGVtIChnZXQtZm9jdXNlZC1lbGVtIFwic3ltYm9sXCIpXVxuICAobGV0XG4gICBbcG9zXG4gICAgKC0+IHByZWZpeC1lbGVtIChnZXQtY3Vyc29yLXBvc2l0aW9uIGZhbHNlKSBmaXJzdClcbiAgICB0ZXh0XG4gICAgKC4tdGV4dENvbnRlbnQgcHJlZml4LWVsZW0pXG4gICAgcHJlZml4XG4gICAgKHN1YnMgdGV4dCAwIHBvcyldXG4gICAoYXNzb2NcbiAgICAoZ2V0LWNvbXBsZXRpb24tY29udGV4dCAoY291bnQgdGV4dCkgKGNvdW50IHByZWZpeCkpXG4gICAgOnRleHRcbiAgICB0ZXh0XG4gICAgOnByZWZpeFxuICAgIHByZWZpeCkpKSlcbiJ9IHs6c3ltIHNldC1jdXJzb3ItcG9zaXRpb24hLCA6bWV0YSB7OmRvYyAiTW92ZXMgdGhlIGN1cnNvciB0byB0aGUgc3BlY2lmaWVkIHBvc2l0aW9uLiIsIDphcmdsaXN0cyAoW2VsZW1lbnQgcG9zaXRpb25dKX0sIDpzb3VyY2UgIihkZWZuXG4gc2V0LWN1cnNvci1wb3NpdGlvbiFcbiBcIk1vdmVzIHRoZSBjdXJzb3IgdG8gdGhlIHNwZWNpZmllZCBwb3NpdGlvbi5cIlxuIFtlbGVtZW50IHBvc2l0aW9uXVxuIChsZXRcbiAgW1tzdGFydC1wb3MgZW5kLXBvc11cbiAgIHBvc2l0aW9uXG4gICBtYXgtbGVuZ3RoXG4gICAoLT4gZWxlbWVudCAuLXRleHRDb250ZW50IGNvdW50KVxuICAgc2VsZWN0aW9uXG4gICAoLmdldFNlbGVjdGlvbiBqcy9yYW5neSlcbiAgIGNoYXItcmFuZ2VcbiAgICNqcyB7OnN0YXJ0IHN0YXJ0LXBvcywgOmVuZCBlbmQtcG9zfVxuICAgcmFuZ2VcbiAgICNqcyB7OmNoYXJhY3RlclJhbmdlIGNoYXItcmFuZ2UsIDpiYWNrd2FyZCBmYWxzZSwgOmNoYXJhY3Rlck9wdGlvbnMgbmlsfVxuICAgcmFuZ2VzXG4gICAoYXJyYXkgcmFuZ2UpXVxuICAoLnJlc3RvcmVDaGFyYWN0ZXJSYW5nZXMgc2VsZWN0aW9uIGVsZW1lbnQgcmFuZ2VzKSkpXG4ifSB7OnN5bSBnZXQtZm9jdXNlZC1lbGVtLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2NsYXNzLW5hbWVdKX0sIDpzb3VyY2UgIihkZWZuXG4gZ2V0LWZvY3VzZWQtZWxlbVxuIFtjbGFzcy1uYW1lXVxuIChzb21lLT4ganMvcmFuZ3kgLmdldFNlbGVjdGlvbiAuLWFuY2hvck5vZGUgKGdldC1wYXJlbnQgY2xhc3MtbmFtZSkpKVxuIn0gezpzeW0gZXJyb3Itbm9kZT8sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbbm9kZV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBlcnJvci1ub2RlP1xuIFtub2RlXVxuIChib29sZWFuIChzb21lLT4gbm9kZSAuLWNsYXNzTGlzdCAoLmNvbnRhaW5zIFwiZXJyb3JcIikpKSlcbiJ9IHs6c3ltIGdldC1jb21wbGV0aW9uLWNvbnRleHQsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbc3ltYm9sLWxlbmd0aCBjdXJzb3Itb2Zmc2V0XSl9LCA6c291cmNlICIoZGVmblxuIGdldC1jb21wbGV0aW9uLWNvbnRleHRcbiBbc3ltYm9sLWxlbmd0aCBjdXJzb3Itb2Zmc2V0XVxuICh3aGVuLWxldFxuICBbdG9wLWxldmVsLWVsZW0gKGdldC1mb2N1c2VkLXRvcC1sZXZlbCldXG4gIChsZXRcbiAgIFtwb3NcbiAgICAoLT4gdG9wLWxldmVsLWVsZW0gKGdldC1jdXJzb3ItcG9zaXRpb24gZmFsc2UpIGZpcnN0KVxuICAgIHByZWZpeC1zdGFydFxuICAgICgtIHBvcyBjdXJzb3Itb2Zmc2V0KVxuICAgIHRleHRcbiAgICAoLi10ZXh0Q29udGVudCB0b3AtbGV2ZWwtZWxlbSldXG4gICB7Om5zIChnZXQtbmVhcmVzdC1ucyB0b3AtbGV2ZWwtZWxlbSksXG4gICAgOmNvbnRleHQtYmVmb3JlIChzdWJzIHRleHQgMCBwcmVmaXgtc3RhcnQpLFxuICAgIDpjb250ZXh0LWFmdGVyIChzdWJzIHRleHQgKCsgcHJlZml4LXN0YXJ0IHN5bWJvbC1sZW5ndGgpKSxcbiAgICA6c3RhcnQtcG9zaXRpb24gcHJlZml4LXN0YXJ0fSkpKVxuIn0gezpzeW0gY29tbW9uLWFuY2VzdG9yLCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0aGUgY29tbW9uIGFuY2VzdG9yIG9mIHRoZSBnaXZlbiBub2Rlcy4iLCA6YXJnbGlzdHMgKFtmaXJzdC1ub2RlIHNlY29uZC1ub2RlXSl9LCA6c291cmNlICIoZGVmblxuIGNvbW1vbi1hbmNlc3RvclxuIFwiUmV0dXJucyB0aGUgY29tbW9uIGFuY2VzdG9yIG9mIHRoZSBnaXZlbiBub2Rlcy5cIlxuIFtmaXJzdC1ub2RlIHNlY29uZC1ub2RlXVxuIChsZXRcbiAgW2ZpcnN0LXBhcmVudFxuICAgKGZpcnN0IChnZXQtcGFyZW50cyBmaXJzdC1ub2RlIFwiY29sbGVjdGlvblwiKSlcbiAgIHNlY29uZC1wYXJlbnRcbiAgIChmaXJzdCAoZ2V0LXBhcmVudHMgc2Vjb25kLW5vZGUgXCJjb2xsZWN0aW9uXCIpKV1cbiAgKGNvbmRcbiAgIChhbmQgZmlyc3QtcGFyZW50IHNlY29uZC1wYXJlbnQgKD0gZmlyc3QtcGFyZW50IHNlY29uZC1wYXJlbnQpKVxuICAgZmlyc3QtcGFyZW50XG4gICAoYW5kXG4gICAgKD0gZmlyc3Qtbm9kZSBzZWNvbmQtbm9kZSlcbiAgICAodGV4dC1ub2RlPyBmaXJzdC1ub2RlKVxuICAgICh0b3AtbGV2ZWw/IGZpcnN0LW5vZGUpKVxuICAgZmlyc3Qtbm9kZSkpKVxuIn0gezpzeW0gZ2V0LXBhcmVudHMsIDptZXRhIHs6ZG9jICJSZXR1cm5zIGFsbCB0aGUgcGFyZW50cyB3aXRoIHRoZSBnaXZlbiBjbGFzcyBuYW1lLiIsIDphcmdsaXN0cyAoW25vZGUgY2xhc3MtbmFtZV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBnZXQtcGFyZW50c1xuIFwiUmV0dXJucyBhbGwgdGhlIHBhcmVudHMgd2l0aCB0aGUgZ2l2ZW4gY2xhc3MgbmFtZS5cIlxuIFtub2RlIGNsYXNzLW5hbWVdXG4gKGxvb3BcbiAgW25vZGUgbm9kZSBlbGVtcyAnKCldXG4gIChpZi1sZXRcbiAgIFtwYXJlbnQgKGdldC1wYXJlbnQgbm9kZSBjbGFzcy1uYW1lKV1cbiAgIChyZWN1ciBwYXJlbnQgKGNvbmogZWxlbXMgcGFyZW50KSlcbiAgIGVsZW1zKSkpXG4ifSB7OnN5bSBub2RlPywgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgbm9kZT8gKGZuKiBbcDFfXzQyNzcwI10gKGluc3RhbmNlPyBqcy9Ob2RlIHAxX180Mjc3MCMpKSlcbiJ9IHs6c3ltIHNjcm9sbC10by1uZWFyZXN0LWVsZW0sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbXSl9LCA6c291cmNlICIoZGVmblxuIHNjcm9sbC10by1uZWFyZXN0LWVsZW1cbiBbXVxuIChzb21lLT5cbiAganMvcmFuZ3lcbiAgLmdldFNlbGVjdGlvblxuICAuLWFuY2hvck5vZGVcbiAgLi1wYXJlbnRFbGVtZW50XG4gICguc2Nyb2xsSW50b1ZpZXdcbiAgICNqcyB7OmJlaGF2aW9yIFwiYXV0b1wiLCA6YmxvY2sgXCJuZWFyZXN0XCIsIDppbmxpbmUgXCJuZWFyZXN0XCJ9KSkpXG4ifSksIG9ha2NsanMudG9vbHMucmVhZGVyLmltcGwuZXJyb3JzICh7OnN5bSB0aHJvdy1iYWQtZGlzcGF0Y2gsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbcmRyIGNoXSl9LCA6c291cmNlICIoZGVmblxuIHRocm93LWJhZC1kaXNwYXRjaFxuIFtyZHIgY2hdXG4gKHJlYWRlci1lcnJvciByZHIgXCJObyBkaXNwYXRjaCBtYWNybyBmb3IgXCIgY2ggXCIuXCIpKVxuIn0gezpzeW0gdGhyb3ctaW52YWxpZC11bmljb2RlLWVzY2FwZSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtyZHIgY2hdKX0sIDpzb3VyY2UgIihkZWZuXG4gdGhyb3ctaW52YWxpZC11bmljb2RlLWVzY2FwZVxuIFtyZHIgY2hdXG4gKHJlYWRlci1lcnJvciByZHIgXCJJbnZhbGlkIHVuaWNvZGUgZXNjYXBlOiBcXFxcdVwiIGNoIFwiLlwiKSlcbiJ9IHs6c3ltIHRocm93LWR1cC1rZXlzLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3JkciBraW5kIGtzXSl9LCA6c291cmNlICIoZGVmblxuIHRocm93LWR1cC1rZXlzXG4gW3JkciBraW5kIGtzXVxuIChyZWFkZXItZXJyb3JcbiAgcmRyXG4gIChkdXBsaWNhdGUta2V5cy1lcnJvclxuICAgKHN0ciAocy9jYXBpdGFsaXplIChuYW1lIGtpbmQpKSBcIiBsaXRlcmFsIGNvbnRhaW5zIGR1cGxpY2F0ZSBrZXlcIilcbiAgIGtzKSkpXG4ifSB7OnN5bSB0aHJvdy1iYWQtbnMsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbcmRyIG5zLW5hbWVdKX0sIDpzb3VyY2UgIihkZWZuXG4gdGhyb3ctYmFkLW5zXG4gW3JkciBucy1uYW1lXVxuIChyZWFkZXItZXJyb3JcbiAgcmRyXG4gIFwiSW52YWxpZCB2YWx1ZSB1c2VkIGFzIG5hbWVzcGFjZSBpbiBuYW1lc3BhY2VkIG1hcDogXCJcbiAgbnMtbmFtZVxuICBcIi5cIikpXG4ifSB7OnN5bSB0aHJvdy11bmtub3duLXJlYWRlci10YWcsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbcmRyIHRhZ10pfSwgOnNvdXJjZSAiKGRlZm5cbiB0aHJvdy11bmtub3duLXJlYWRlci10YWdcbiBbcmRyIHRhZ11cbiAocmVhZGVyLWVycm9yIHJkciBcIk5vIHJlYWRlciBmdW5jdGlvbiBmb3IgdGFnIFwiIChpL2luc3BlY3QgdGFnKSBcIi5cIikpXG4ifSB7OnN5bSB0aHJvdy1lb2YtYXQtZGlzcGF0Y2gsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbcmRyXSl9LCA6c291cmNlICIoZGVmblxuIHRocm93LWVvZi1hdC1kaXNwYXRjaFxuIFtyZHJdXG4gKGVvZi1lcnJvciByZHIgXCJVbmV4cGVjdGVkIEVPRiB3aGlsZSByZWFkaW5nIGRpc3BhdGNoIGNoYXJhY3Rlci5cIikpXG4ifSB7OnN5bSB0aHJvdy1iYWQtbWV0YWRhdGEtdGFyZ2V0LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3JkciB0YXJnZXRdKX0sIDpzb3VyY2UgIihkZWZuXG4gdGhyb3ctYmFkLW1ldGFkYXRhLXRhcmdldFxuIFtyZHIgdGFyZ2V0XVxuIChyZWFkZXItZXJyb3JcbiAgcmRyXG4gIFwiTWV0YWRhdGEgY2FuIG5vdCBiZSBhcHBsaWVkIHRvIFwiXG4gIChpL2luc3BlY3QgdGFyZ2V0KVxuICBcIi4gXCJcbiAgXCJNZXRhZGF0YSBjYW4gb25seSBiZSBhcHBsaWVkIHRvIElNZXRhcy5cIikpXG4ifSB7OnN5bSB0aHJvdy1pbnZhbGlkLW51bWJlciwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtyZHIgdG9rZW5dKX0sIDpzb3VyY2UgIihkZWZuXG4gdGhyb3ctaW52YWxpZC1udW1iZXJcbiBbcmRyIHRva2VuXVxuIChyZWFkZXItZXJyb3IgcmRyIFwiSW52YWxpZCBudW1iZXI6IFwiIHRva2VuIFwiLlwiKSlcbiJ9IHs6c3ltIHJlYWRlci1lcnJvciwgOm1ldGEgezpkb2MgIlRocm93cyBhbiBFeGNlcHRpb25JbmZvIHdpdGggdGhlIGdpdmVuIG1lc3NhZ2UuXG4gICBJZiByZHIgaXMgYW4gSW5kZXhpbmdSZWFkZXIsIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gYWJvdXQgY29sdW1uIGFuZCBsaW5lIG51bWJlciBpcyBwcm92aWRlZCIsIDphcmdsaXN0cyAoW3JkciAmIG1zZ3NdKX0sIDpzb3VyY2UgIihkZWZuXG4gcmVhZGVyLWVycm9yXG4gXCJUaHJvd3MgYW4gRXhjZXB0aW9uSW5mbyB3aXRoIHRoZSBnaXZlbiBtZXNzYWdlLlxcbiAgIElmIHJkciBpcyBhbiBJbmRleGluZ1JlYWRlciwgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBhYm91dCBjb2x1bW4gYW5kIGxpbmUgbnVtYmVyIGlzIHByb3ZpZGVkXCJcbiBbcmRyICYgbXNnc11cbiAodGhyb3ctZXggcmRyIDpyZWFkZXItZXJyb3IgKGFwcGx5IHN0ciBtc2dzKSkpXG4ifSB7OnN5bSB0aHJvdy1pbnZhbGlkLXVuaWNvZGUtbGl0ZXJhbCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtyZHIgdG9rZW5dKX0sIDpzb3VyY2UgIihkZWZuXG4gdGhyb3ctaW52YWxpZC11bmljb2RlLWxpdGVyYWxcbiBbcmRyIHRva2VuXVxuICh0aHJvd1xuICAoaWxsZWdhbC1hcmctZXJyb3IgcmRyIFwiSW52YWxpZCB1bmljb2RlIGxpdGVyYWw6IFxcXFxcIiB0b2tlbiBcIi5cIikpKVxuIn0gezpzeW0gdGhyb3ctbnMtbWFwLW5vLW1hcCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtyZHIgbnMtbmFtZV0pfSwgOnNvdXJjZSAiKGRlZm5cbiB0aHJvdy1ucy1tYXAtbm8tbWFwXG4gW3JkciBucy1uYW1lXVxuIChyZWFkZXItZXJyb3JcbiAgcmRyXG4gIFwiTmFtZXNwYWNlZCBtYXAgd2l0aCBuYW1lc3BhY2UgXCJcbiAgbnMtbmFtZVxuICBcIiBkb2VzIG5vdCBzcGVjaWZ5IGEgbWFwLlwiKSlcbiJ9IHs6c3ltIHRocm93LXVuc3VwcG9ydGVkLWNoYXJhY3RlciwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtyZHIgdG9rZW5dKX0sIDpzb3VyY2UgIihkZWZuXG4gdGhyb3ctdW5zdXBwb3J0ZWQtY2hhcmFjdGVyXG4gW3JkciB0b2tlbl1cbiAocmVhZGVyLWVycm9yIHJkciBcIlVuc3VwcG9ydGVkIGNoYXJhY3RlcjogXCIgdG9rZW4gXCIuXCIpKVxuIn0gezpzeW0gdGhyb3ctZmVhdHVyZS1ub3Qta2V5d29yZCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtyZHIgZmVhdHVyZV0pfSwgOnNvdXJjZSAiKGRlZm5cbiB0aHJvdy1mZWF0dXJlLW5vdC1rZXl3b3JkXG4gW3JkciBmZWF0dXJlXVxuIChyZWFkZXItZXJyb3JcbiAgcmRyXG4gIFwiRmVhdHVyZSBjYW5ub3QgYmUgXCJcbiAgKGkvaW5zcGVjdCBmZWF0dXJlKVxuICBcIiBGZWF0dXJlcyBtdXN0IGJlIGtleXdvcmRzLlwiKSlcbiJ9IHs6c3ltIHRocm93LWVvZi1kZWxpbWl0ZWQsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIFtbcmRyIGtpbmQgY29sdW1uIGxpbmVdIFtyZHIga2luZCBsaW5lIGNvbHVtbiBuXV19LCA6c291cmNlICIoZGVmblxuIHRocm93LWVvZi1kZWxpbWl0ZWRcbiAoW3JkciBraW5kIGNvbHVtbiBsaW5lXVxuICAodGhyb3ctZW9mLWRlbGltaXRlZCByZHIga2luZCBsaW5lIGNvbHVtbiBuaWwpKVxuIChbcmRyIGtpbmQgbGluZSBjb2x1bW4gbl1cbiAgKGVvZi1lcnJvclxuICAgcmRyXG4gICBcIlVuZXhwZWN0ZWQgRU9GIHdoaWxlIHJlYWRpbmcgXCJcbiAgIChpZiBuIChzdHIgXCJpdGVtIFwiIG4gXCIgb2YgXCIpKVxuICAgKG5hbWUga2luZClcbiAgIChpZiBsaW5lIChzdHIgXCIsIHN0YXJ0aW5nIGF0IGxpbmUgXCIgbGluZSBcIiBhbmQgY29sdW1uIFwiIGNvbHVtbikpXG4gICBcIi5cIikpKVxuIn0gezpzeW0gdGhyb3ctZW9mLWluLWNoYXJhY3RlciwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtyZHJdKX0sIDpzb3VyY2UgIihkZWZuXG4gdGhyb3ctZW9mLWluLWNoYXJhY3RlclxuIFtyZHJdXG4gKGVvZi1lcnJvciByZHIgXCJVbmV4cGVjdGVkIEVPRiB3aGlsZSByZWFkaW5nIGNoYXJhY3Rlci5cIikpXG4ifSB7OnN5bSB0aHJvdy1iYWQtY2hhciwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtyZHIga2luZCBjaF0pfSwgOnNvdXJjZSAiKGRlZm5cbiB0aHJvdy1iYWQtY2hhclxuIFtyZHIga2luZCBjaF1cbiAocmVhZGVyLWVycm9yXG4gIHJkclxuICBcIkludmFsaWQgY2hhcmFjdGVyOiBcIlxuICBjaFxuICBcIiBmb3VuZCB3aGlsZSByZWFkaW5nIFwiXG4gIChuYW1lIGtpbmQpXG4gIFwiLlwiKSlcbiJ9IHs6c3ltIGVvZi1lcnJvciwgOm1ldGEgezpkb2MgIlRocm93cyBhbiBFeGNlcHRpb25JbmZvIHdpdGggdGhlIGdpdmVuIG1lc3NhZ2UuXG4gICBJZiByZHIgaXMgYW4gSW5kZXhpbmdSZWFkZXIsIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gYWJvdXQgY29sdW1uIGFuZCBsaW5lIG51bWJlciBpcyBwcm92aWRlZCIsIDphcmdsaXN0cyAoW3JkciAmIG1zZ3NdKX0sIDpzb3VyY2UgIihkZWZuXG4gZW9mLWVycm9yXG4gXCJUaHJvd3MgYW4gRXhjZXB0aW9uSW5mbyB3aXRoIHRoZSBnaXZlbiBtZXNzYWdlLlxcbiAgIElmIHJkciBpcyBhbiBJbmRleGluZ1JlYWRlciwgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBhYm91dCBjb2x1bW4gYW5kIGxpbmUgbnVtYmVyIGlzIHByb3ZpZGVkXCJcbiBbcmRyICYgbXNnc11cbiAodGhyb3ctZXggcmRyIDplb2YgKGFwcGx5IHN0ciBtc2dzKSkpXG4ifSB7OnN5bSB0aHJvdy1iYWQtbWV0YWRhdGEsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbcmRyIHhdKX0sIDpzb3VyY2UgIihkZWZuXG4gdGhyb3ctYmFkLW1ldGFkYXRhXG4gW3JkciB4XVxuIChyZWFkZXItZXJyb3JcbiAgcmRyXG4gIFwiTWV0YWRhdGEgY2Fubm90IGJlIFwiXG4gIChpL2luc3BlY3QgeClcbiAgXCIuIE1ldGFkYXRhIG11c3QgYmUgYSBTeW1ib2wsIEtleXdvcmQsIFN0cmluZyBvciBNYXAuXCIpKVxuIn0gezpzeW0gdGhyb3ctZW9mLXJlYWRpbmcsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbcmRyIGtpbmQgJiBzdGFydF0pfSwgOnNvdXJjZSAiKGRlZm5cbiB0aHJvdy1lb2YtcmVhZGluZ1xuIFtyZHIga2luZCAmIHN0YXJ0XVxuIChsZXRcbiAgW2luaXQgKGNhc2Uga2luZCA6cmVnZXggXCIjXFxcIlwiIDpzdHJpbmcgXFxcIildXG4gIChlb2YtZXJyb3JcbiAgIHJkclxuICAgXCJVbmV4cGVjdGVkIEVPRiByZWFkaW5nIFwiXG4gICAobmFtZSBraW5kKVxuICAgXCIgc3RhcnRpbmcgXCJcbiAgIChhcHBseSBzdHIgaW5pdCBzdGFydClcbiAgIFwiLlwiKSkpXG4ifSB7OnN5bSB0aHJvdy1lb2YtZXJyb3IsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbcmRyIGxpbmVdKX0sIDpzb3VyY2UgIihkZWZuXG4gdGhyb3ctZW9mLWVycm9yXG4gW3JkciBsaW5lXVxuIChpZlxuICBsaW5lXG4gIChlb2YtZXJyb3IgcmRyIFwiRU9GIHdoaWxlIHJlYWRpbmcsIHN0YXJ0aW5nIGF0IGxpbmUgXCIgbGluZSBcIi5cIilcbiAgKGVvZi1lcnJvciByZHIgXCJFT0Ygd2hpbGUgcmVhZGluZy5cIikpKVxuIn0gezpzeW0gaWxsZWdhbC1hcmctZXJyb3IsIDptZXRhIHs6ZG9jICJUaHJvd3MgYW4gRXhjZXB0aW9uSW5mbyB3aXRoIHRoZSBnaXZlbiBtZXNzYWdlLlxuICAgSWYgcmRyIGlzIGFuIEluZGV4aW5nUmVhZGVyLCBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIGFib3V0IGNvbHVtbiBhbmQgbGluZSBudW1iZXIgaXMgcHJvdmlkZWQiLCA6YXJnbGlzdHMgKFtyZHIgJiBtc2dzXSl9LCA6c291cmNlICIoZGVmblxuIGlsbGVnYWwtYXJnLWVycm9yXG4gXCJUaHJvd3MgYW4gRXhjZXB0aW9uSW5mbyB3aXRoIHRoZSBnaXZlbiBtZXNzYWdlLlxcbiAgIElmIHJkciBpcyBhbiBJbmRleGluZ1JlYWRlciwgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBhYm91dCBjb2x1bW4gYW5kIGxpbmUgbnVtYmVyIGlzIHByb3ZpZGVkXCJcbiBbcmRyICYgbXNnc11cbiAodGhyb3ctZXggcmRyIDppbGxlZ2FsLWFyZ3VtZW50IChhcHBseSBzdHIgbXNncykpKVxuIn0gezpzeW0gdGhyb3ctaW52YWxpZC1vY3RhbC1sZW4sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbcmRyIHRva2VuXSl9LCA6c291cmNlICIoZGVmblxuIHRocm93LWludmFsaWQtb2N0YWwtbGVuXG4gW3JkciB0b2tlbl1cbiAocmVhZGVyLWVycm9yXG4gIHJkclxuICBcIkludmFsaWQgb2N0YWwgZXNjYXBlIHNlcXVlbmNlIGluIGEgY2hhcmFjdGVyIGxpdGVyYWw6XCJcbiAgdG9rZW5cbiAgXCIuIE9jdGFsIGVzY2FwZSBzZXF1ZW5jZXMgbXVzdCBiZSAzIG9yIGZld2VyIGRpZ2l0cy5cIikpXG4ifSB7OnN5bSB0aHJvdy1pbnZhbGlkLXVuaWNvZGUtZGlnaXQsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbcmRyIGNoXSl9LCA6c291cmNlICIoZGVmblxuIHRocm93LWludmFsaWQtdW5pY29kZS1kaWdpdFxuIFtyZHIgY2hdXG4gKGlsbGVnYWwtYXJnLWVycm9yIHJkciBcIkludmFsaWQgZGlnaXQgXCIgY2ggXCIgaW4gdW5pY29kZSBjaGFyYWN0ZXIuXCIpKVxuIn0gezpzeW0gdGhyb3ctaW52YWxpZC11bmljb2RlLWRpZ2l0LWluLXRva2VuLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3JkciBjaCB0b2tlbl0pfSwgOnNvdXJjZSAiKGRlZm5cbiB0aHJvdy1pbnZhbGlkLXVuaWNvZGUtZGlnaXQtaW4tdG9rZW5cbiBbcmRyIGNoIHRva2VuXVxuIChpbGxlZ2FsLWFyZy1lcnJvclxuICByZHJcbiAgXCJJbnZhbGlkIGRpZ2l0IFwiXG4gIGNoXG4gIFwiIGluIHVuaWNvZGUgY2hhcmFjdGVyIFxcXFxcIlxuICB0b2tlblxuICBcIi5cIikpXG4ifSB7OnN5bSB0aHJvdy1pbnZhbGlkLXVuaWNvZGUtbGVuLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3JkciBhY3R1YWwgZXhwZWN0ZWRdKX0sIDpzb3VyY2UgIihkZWZuXG4gdGhyb3ctaW52YWxpZC11bmljb2RlLWxlblxuIFtyZHIgYWN0dWFsIGV4cGVjdGVkXVxuIChpbGxlZ2FsLWFyZy1lcnJvclxuICByZHJcbiAgXCJJbnZhbGlkIHVuaWNvZGUgbGl0ZXJhbC4gVW5pY29kZSBsaXRlcmFscyBzaG91bGQgYmUgXCJcbiAgZXhwZWN0ZWRcbiAgXCJjaGFyYWN0ZXJzIGxvbmcuICBcIlxuICBcInZhbHVlIHN1cHBsZWQgaXMgXCJcbiAgYWN0dWFsXG4gIFwiY2hhcmFjdGVycyBsb25nLlwiKSlcbiJ9IHs6c3ltIHRocm93LXNpbmdsZS1jb2xvbiwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtyZHJdKX0sIDpzb3VyY2UgIihkZWZuXG4gdGhyb3ctc2luZ2xlLWNvbG9uXG4gW3Jkcl1cbiAocmVhZGVyLWVycm9yIHJkciBcIkEgc2luZ2xlIGNvbG9uIGlzIG5vdCBhIHZhbGlkIGtleXdvcmQuXCIpKVxuIn0gezpzeW0gdGhyb3ctb2RkLW1hcCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtyZHIgbGluZSBjb2wgZWxlbWVudHNdKX0sIDpzb3VyY2UgIihkZWZuXG4gdGhyb3ctb2RkLW1hcFxuIFtyZHIgbGluZSBjb2wgZWxlbWVudHNdXG4gKHJlYWRlci1lcnJvclxuICByZHJcbiAgXCJUaGUgbWFwIGxpdGVyYWwgc3RhcnRpbmcgd2l0aCBcIlxuICAoaS9pbnNwZWN0IChmaXJzdCBlbGVtZW50cykpXG4gIChpZiBsaW5lIChzdHIgXCIgb24gbGluZSBcIiBsaW5lIFwiIGNvbHVtbiBcIiBjb2wpKVxuICBcIiBjb250YWlucyBcIlxuICAoY291bnQgZWxlbWVudHMpXG4gIFwiIGZvcm0ocykuIE1hcCBsaXRlcmFscyBtdXN0IGNvbnRhaW4gYW4gZXZlbiBudW1iZXIgb2YgZm9ybXMuXCIpKVxuIn0gezpzeW0gdGhyb3ctYmFkLW9jdGFsLW51bWJlciwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtyZHJdKX0sIDpzb3VyY2UgIihkZWZuXG4gdGhyb3ctYmFkLW9jdGFsLW51bWJlclxuIFtyZHJdXG4gKHJlYWRlci1lcnJvciByZHIgXCJPY3RhbCBlc2NhcGUgc2VxdWVuY2UgbXVzdCBiZSBpbiByYW5nZSBbMCwgMzc3XS5cIikpXG4ifSB7OnN5bSB0aHJvdy1iYWQtcmVhZGVyLXRhZywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtyZHIgdGFnXSl9LCA6c291cmNlICIoZGVmblxuIHRocm93LWJhZC1yZWFkZXItdGFnXG4gW3JkciB0YWddXG4gKHJlYWRlci1lcnJvclxuICByZHJcbiAgXCJJbnZhbGlkIHJlYWRlciB0YWc6IFwiXG4gIChpL2luc3BlY3QgdGFnKVxuICBcIi4gUmVhZGVyIHRhZ3MgbXVzdCBiZSBzeW1ib2xzLlwiKSlcbiJ9IHs6c3ltIHRocm93LXVubWF0Y2gtZGVsaW1pdGVyLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3JkciBjaF0pfSwgOnNvdXJjZSAiKGRlZm5cbiB0aHJvdy11bm1hdGNoLWRlbGltaXRlclxuIFtyZHIgY2hdXG4gKHJlYWRlci1lcnJvciByZHIgXCJVbm1hdGNoZWQgZGVsaW1pdGVyIFwiIGNoIFwiLlwiKSlcbiJ9IHs6c3ltIHRocm93LWludmFsaWQtY2hhcmFjdGVyLWxpdGVyYWwsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbcmRyIHRva2VuXSl9LCA6c291cmNlICIoZGVmblxuIHRocm93LWludmFsaWQtY2hhcmFjdGVyLWxpdGVyYWxcbiBbcmRyIHRva2VuXVxuIChyZWFkZXItZXJyb3IgcmRyIFwiSW52YWxpZCBjaGFyYWN0ZXIgbGl0ZXJhbCBcXFxcdVwiIHRva2VuIFwiLlwiKSlcbiJ9IHs6c3ltIHRocm93LWludmFsaWQtdW5pY29kZS1jaGFyLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3JkciB0b2tlbl0pfSwgOnNvdXJjZSAiKGRlZm5cbiB0aHJvdy1pbnZhbGlkLXVuaWNvZGUtY2hhclxuIFtyZHIgdG9rZW5dXG4gKHJlYWRlci1lcnJvciByZHIgXCJJbnZhbGlkIHVuaWNvZGUgY2hhcmFjdGVyIFxcXFxcIiB0b2tlbiBcIi5cIikpXG4ifSB7OnN5bSB0aHJvdy1iYWQtZXNjYXBlLWNoYXIsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbcmRyIGNoXSl9LCA6c291cmNlICIoZGVmblxuIHRocm93LWJhZC1lc2NhcGUtY2hhclxuIFtyZHIgY2hdXG4gKHJlYWRlci1lcnJvciByZHIgXCJVbnN1cHBvcnRlZCBlc2NhcGUgY2hhcmFjdGVyOiBcXFxcXCIgY2ggXCIuXCIpKVxuIn0gezpzeW0gdGhyb3ctbm8tZGlzcGF0Y2gsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbcmRyIGNoXSl9LCA6c291cmNlICIoZGVmbiB0aHJvdy1uby1kaXNwYXRjaCBbcmRyIGNoXSAodGhyb3ctYmFkLWRpc3BhdGNoIHJkciBjaCkpXG4ifSB7OnN5bSB0aHJvdy1lb2YtYXQtc3RhcnQsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbcmRyIGtpbmRdKX0sIDpzb3VyY2UgIihkZWZuXG4gdGhyb3ctZW9mLWF0LXN0YXJ0XG4gW3JkciBraW5kXVxuIChlb2YtZXJyb3JcbiAgcmRyXG4gIFwiVW5leHBlY3RlZCBFT0Ygd2hpbGUgcmVhZGluZyBzdGFydCBvZiBcIlxuICAobmFtZSBraW5kKVxuICBcIi5cIikpXG4ifSB7OnN5bSB0aHJvdy1pbnZhbGlkLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3JkciBraW5kIHRva2VuXSl9LCA6c291cmNlICIoZGVmblxuIHRocm93LWludmFsaWRcbiBbcmRyIGtpbmQgdG9rZW5dXG4gKHJlYWRlci1lcnJvciByZHIgXCJJbnZhbGlkIFwiIChuYW1lIGtpbmQpIFwiOiBcIiB0b2tlbiBcIi5cIikpXG4ifSksIGR5bmFkb2MuY29yZSAoezpzeW0gY2xqLWNvbXBpbGVyLWZuLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2V4YW1wbGUgZm9ybXMgY2JdKX0sIDpzb3VyY2UgIihkZWZuXG4gY2xqLWNvbXBpbGVyLWZuXG4gW2V4YW1wbGUgZm9ybXMgY2JdXG4gKGxldFxuICBbbnMtc3ltICg6bnMtc3ltIChjb21tb24vZ2V0LXN0YXRlKSldXG4gICh0cnlcbiAgICguc2VuZFxuICAgIFhocklvXG4gICAgXCIvZXZhbFwiXG4gICAgKGZuXG4gICAgIFtlXVxuICAgICAoaWZcbiAgICAgICguaXNTdWNjZXNzICguLXRhcmdldCBlKSlcbiAgICAgICgtPj5cbiAgICAgICAoLi4gZSAtdGFyZ2V0IGdldFJlc3BvbnNlVGV4dClcbiAgICAgICByZWFkLXN0cmluZ1xuICAgICAgIHJlc3RcbiAgICAgICAobWFwdlxuICAgICAgICAoZm4qXG4gICAgICAgICBbcDFfXzQzMjExI11cbiAgICAgICAgIChpZiAodmVjdG9yPyBwMV9fNDMyMTEjKSAoaW50by1hcnJheSBwMV9fNDMyMTEjKSBwMV9fNDMyMTEjKSkpXG4gICAgICAgY2IpXG4gICAgICAoY2IgW10pKSlcbiAgICBcIlBPU1RcIlxuICAgIChwci1zdHJcbiAgICAgKGludG9cbiAgICAgIFsobGlzdCAnaW4tbnMgKGxpc3QgJ3F1b3RlIG5zLXN5bSkpXVxuICAgICAgKG1hcHYgKHBhcnRpYWwgdHJhbnNmb3JtIChkaXNzb2MgZXhhbXBsZSA6d2l0aC1jYXJkKSkgZm9ybXMpKSkpXG4gICAoY2F0Y2gganMvRXJyb3IgXyAoY2IgW10pKSkpKVxuIn0gezpzeW0gZm9ybS0+c2VyaWFsaXphYmxlLCA6bWV0YSB7OmRvYyAiQ29udmVydHMgdGhlIGlucHV0IHRvIGVpdGhlciBhIHN0cmluZyBvciAoaWYgYW4gZXJyb3Igb2JqZWN0KSBhbiBhcnJheSBvZiBkYXRhIiwgOmFyZ2xpc3RzIChbZm9ybV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBmb3JtLT5zZXJpYWxpemFibGVcbiBcIkNvbnZlcnRzIHRoZSBpbnB1dCB0byBlaXRoZXIgYSBzdHJpbmcgb3IgKGlmIGFuIGVycm9yIG9iamVjdCkgYW4gYXJyYXkgb2YgZGF0YVwiXG4gW2Zvcm1dXG4gKGlmXG4gIChpbnN0YW5jZT8ganMvRXJyb3IgZm9ybSlcbiAgKGFycmF5XG4gICAob3IgKHNvbWUtPiBmb3JtIC4tY2F1c2UgLi1tZXNzYWdlKSAoLi1tZXNzYWdlIGZvcm0pKVxuICAgKC4tZmlsZU5hbWUgZm9ybSlcbiAgICguLWxpbmVOdW1iZXIgZm9ybSkpXG4gIChwci1zdHIgZm9ybSkpKVxuIn0gezpzeW0gaW5pdC1lZGl0b3IsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZWxlbV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBpbml0LWVkaXRvclxuIFtlbGVtXVxuICh3aGVuLWxldFxuICBbcGFyZW4tc291cCAob3IgKC5xdWVyeVNlbGVjdG9yIGVsZW0gXCIucGFyZW4tc291cFwiKSBlbGVtKV1cbiAgKHBzL2luaXQgcGFyZW4tc291cCAoanMtPmNsaiB7OmNvbXBpbGVyLWZuIChmbiBbXSl9KSkpKVxuIn0gezpzeW0gY2xqcy1jb21waWxlci1mbiwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtleGFtcGxlIGZvcm1zIGNiXSl9LCA6c291cmNlICIoZGVmblxuIGNsanMtY29tcGlsZXItZm5cbiBbZXhhbXBsZSBmb3JtcyBjYl1cbiAobGV0XG4gIFtucy1zeW0gKDpucy1zeW0gKGNvbW1vbi9nZXQtc3RhdGUpKV1cbiAgKGVzL2NvZGUtPnJlc3VsdHNcbiAgIChpbnRvIFsobGlzdCAnbnMgbnMtc3ltKV0gKG1hcHYgKHBhcnRpYWwgdHJhbnNmb3JtIGV4YW1wbGUpIGZvcm1zKSlcbiAgIChmbiBbcmVzdWx0c10gKC0+PiByZXN1bHRzIHJlc3QgKG1hcHYgZm9ybS0+c2VyaWFsaXphYmxlKSBjYikpXG4gICB7OmN1c3RvbS1sb2FkIChmbiBbb3B0cyBjYl0gKGNiIHs6bGFuZyA6Y2xqLCA6c291cmNlIFwiXCJ9KSksXG4gICAgOmRpc2FibGUtdGltZW91dD8gdHJ1ZX0pKSlcbiJ9IHs6c3ltIHRyYW5zZm9ybSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt7OmtleXMgW3dpdGgtZm9jdXMgd2l0aC1jYXJkIHdpdGgtY2FsbGJhY2tdLCA6YXMgZXh9IGZvcm0tc3RyXSl9LCA6c291cmNlICIoZGVmblxuIHRyYW5zZm9ybVxuIFt7OmtleXMgW3dpdGgtZm9jdXMgd2l0aC1jYXJkIHdpdGgtY2FsbGJhY2tdLCA6YXMgZXh9IGZvcm0tc3RyXVxuIChpZlxuICAob3Igd2l0aC1mb2N1cyB3aXRoLWNhcmQgd2l0aC1jYWxsYmFjaylcbiAgKHRyYW5zZm9ybS90cmFuc2Zvcm0gZXggKHJlYWQtc3RyaW5nIGZvcm0tc3RyKSlcbiAgZm9ybS1zdHIpKVxuIn0gezpzeW0gaW5pdCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtdKX0sIDpzb3VyY2UgIihkZWZuXG4gaW5pdFxuIFtdXG4gKC0+PlxuICAoLnF1ZXJ5U2VsZWN0b3IganMvZG9jdW1lbnQgXCIjaW5pdGlhbC1zdGF0ZVwiKVxuICAuLXRleHRDb250ZW50XG4gIGpzL2F0b2JcbiAgcmVhZC1zdHJpbmdcbiAgKHN3YXAhIGNvbW1vbi8qc2Vzc2lvbiBjb21tb24vdXBkYXRlLXNlc3Npb24gOmR5bmFkb2MuY29tbW9uL3NlcnZlcikpXG4gKHJ1bS9oeWRyYXRlXG4gIChjb21tb24vYXBwLXJvb3QgY29tbW9uLypzZXNzaW9uKVxuICAoLnF1ZXJ5U2VsZWN0b3IganMvZG9jdW1lbnQgXCIjYXBwXCIpKVxuIChsZXRcbiAgW3s6a2V5cyBbdmFyLXN5bSB3YXRjaGVyXX0gKGNvbW1vbi9nZXQtc3RhdGUpXVxuICAoLT4+XG4gICB7OmR5bmFkb2MuY29tbW9uL2NsanMtc3RhcnRlZD8gdHJ1ZSxcbiAgICA6ZHluYWRvYy5jb21tb24vZXhwb3J0YWJsZT8ganMvQ09NUElMRUQsXG4gICAgOmR5bmFkb2MuY29tbW9uL2luaXQtZWRpdG9yIChtZW1vaXplIGluaXQtZWRpdG9yKSxcbiAgICA6ZHluYWRvYy5jb21tb24vaW5pdC1leGFtcGxlLWVkaXRvciAobWVtb2l6ZSBpbml0LWV4YW1wbGUtZWRpdG9yKSxcbiAgICA6ZHluYWRvYy5jb21tb24vd2F0Y2hlclxuICAgICh3aGVuLW5vdCBqcy9DT01QSUxFRCAob3Igd2F0Y2hlciAoaW5pdC13YXRjaGVyISkpKX1cbiAgIChzd2FwIVxuICAgIGNvbW1vbi8qc2Vzc2lvblxuICAgIGNvbW1vbi91cGRhdGUtc2Vzc2lvblxuICAgIDpkeW5hZG9jLmNvbW1vbi9jbGllbnQpKVxuICAod2hlblxuICAgdmFyLXN5bVxuICAgKGRvc2VxXG4gICAgW2J1dHRvbiAoLT4ganMvZG9jdW1lbnQgKC5xdWVyeVNlbGVjdG9yQWxsIFwiLmJ1dHRvblwiKSBhcnJheS1zZXEpXVxuICAgIChzZXQhICguLWRpc3BsYXkgKC4tc3R5bGUgYnV0dG9uKSkgXCJpbmxpbmUtYmxvY2tcIikpKSkpXG4ifSB7OnN5bSByZWFkLXN0cmluZywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtzXSl9LCA6c291cmNlICIoZGVmblxuIHJlYWQtc3RyaW5nXG4gW3NdXG4gKGJpbmRpbmdcbiAgW3IvKnN1cHByZXNzLXJlYWQqIHRydWVdXG4gIChyL3JlYWQtc3RyaW5nIHs6cmVhZC1jb25kIDpwcmVzZXJ2ZSwgOmVvZiBuaWx9IHMpKSlcbiJ9IHs6c3ltIGluaXQtZXhhbXBsZS1lZGl0b3IsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZWxlbSBleGFtcGxlXSl9LCA6c291cmNlICIoZGVmblxuIGluaXQtZXhhbXBsZS1lZGl0b3JcbiBbZWxlbSBleGFtcGxlXVxuICh3aGVuLWxldFxuICBbcGFyZW4tc291cCAob3IgKC5xdWVyeVNlbGVjdG9yIGVsZW0gXCIucGFyZW4tc291cFwiKSBlbGVtKV1cbiAgKHdoZW4tbGV0XG4gICBbY29udGVudCAoLnF1ZXJ5U2VsZWN0b3IgcGFyZW4tc291cCBcIi5jb250ZW50XCIpXVxuICAgKHNldCEgKC4tY29udGVudEVkaXRhYmxlIGNvbnRlbnQpIHRydWUpKVxuICAobGV0XG4gICBbdHlwZSAoOnR5cGUgKGNvbW1vbi9nZXQtc3RhdGUpKV1cbiAgIChwcy9pbml0XG4gICAgcGFyZW4tc291cFxuICAgIChqcy0+Y2xqXG4gICAgIHs6Y29tcGlsZXItZm5cbiAgICAgIChpZlxuICAgICAgICg9IDpjbGogdHlwZSlcbiAgICAgICAocGFydGlhbCBjbGotY29tcGlsZXItZm4gZXhhbXBsZSlcbiAgICAgICAocGFydGlhbCBjbGpzLWNvbXBpbGVyLWZuIGV4YW1wbGUpKSxcbiAgICAgIDpmaXgtaW5kZW50LW9uLWluaXQ/IHRydWV9KSkpKSlcbiJ9IHs6c3ltIGluaXQtd2F0Y2hlciEsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbXSl9LCA6c291cmNlICIoZGVmblxuIGluaXQtd2F0Y2hlciFcbiBbXVxuIChsZXRcbiAgW3Byb3RvY29sXG4gICAoaWYgKD0gKC4tcHJvdG9jb2wganMvbG9jYXRpb24pIFwiaHR0cHM6XCIpIFwid3NzOlwiIFwid3M6XCIpXG4gICBob3N0XG4gICAoLT4ganMvd2luZG93IC4tbG9jYXRpb24gLi1ob3N0KVxuICAgc29ja1xuICAgKGpzL1dlYlNvY2tldC4gKHN0ciBwcm90b2NvbCBcIi8vXCIgaG9zdCBcIi93YXRjaFwiKSldXG4gIChzZXQhXG4gICAoLi1vbm9wZW4gc29jaylcbiAgIChmbiBbZXZlbnRdICguc2VuZCBzb2NrIGpzL3dpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSkpKVxuICAoc2V0IVxuICAgKC4tb25tZXNzYWdlIHNvY2spXG4gICAoZm5cbiAgICBbZXZlbnRdXG4gICAgKC0+PlxuICAgICAoLi1kYXRhIGV2ZW50KVxuICAgICByZWFkLXN0cmluZ1xuICAgICAoc3dhcCFcbiAgICAgIGNvbW1vbi8qc2Vzc2lvblxuICAgICAgY29tbW9uL3VwZGF0ZS1zZXNzaW9uXG4gICAgICA6ZHluYWRvYy5jb21tb24vc2VydmVyKSkpKVxuICBzb2NrKSlcbiJ9KSwgZXhwb3VuZC5hbHBoYSAoezpzeW0gZXJyb3ItbWVzc2FnZSwgOm1ldGEgezpkb2MgIkdpdmVuIGEgc3BlYyBuYW1lZCBga2AsIHJldHVybiBpdHMgaHVtYW4tcmVhZGFibGUgZXJyb3IgbWVzc2FnZS4iLCA6YXJnbGlzdHMgKFtrXSl9LCA6c291cmNlICIoZGVmblxuIGVycm9yLW1lc3NhZ2VcbiBcIkdpdmVuIGEgc3BlYyBuYW1lZCBga2AsIHJldHVybiBpdHMgaHVtYW4tcmVhZGFibGUgZXJyb3IgbWVzc2FnZS5cIlxuIFtrXVxuIChyZWR1Y2VcbiAgKGZuIFtfIGtdICh3aGVuLWxldCBbbXNnIChnZXQgQHJlZ2lzdHJ5LXJlZiBrKV0gKHJlZHVjZWQgbXNnKSkpXG4gIG5pbFxuICAodXRpbC9zcGVjLXZhbHMgaykpKVxuIn0gezpzeW0gZXhwbGFpbi1yZXN1bHQsIDptZXRhIHs6ZG9jICJHaXZlbiBhIHJlc3VsdCBmcm9tIGBjbG9qdXJlLnNwZWMudGVzdC5hbHBoYS9jaGVja2AsIHByaW50cyBhIHN1bW1hcnkgb2YgdGhlIHJlc3VsdC4iLCA6YXJnbGlzdHMgKFtjaGVjay1yZXN1bHRdKX0sIDpzb3VyY2UgIihkZWZuXG4gZXhwbGFpbi1yZXN1bHRcbiBcIkdpdmVuIGEgcmVzdWx0IGZyb20gYGNsb2p1cmUuc3BlYy50ZXN0LmFscGhhL2NoZWNrYCwgcHJpbnRzIGEgc3VtbWFyeSBvZiB0aGUgcmVzdWx0LlwiXG4gW2NoZWNrLXJlc3VsdF1cbiAod2hlblxuICAoPSBzLypleHBsYWluLW91dCogcy9leHBsYWluLXByaW50ZXIpXG4gICh0aHJvd1xuICAgKGV4LWluZm9cbiAgICBcIkNhbm5vdCBwcmludCBjaGVjayByZXN1bHRzIHdpdGggZGVmYXVsdCBwcmludGVyLiBVc2UgJ3NldCEnIG9yICdiaW5kaW5nJyB0byB1c2UgRXhwb3VuZCBwcmludGVyLlwiXG4gICAge30pKSlcbiAocy8qZXhwbGFpbi1vdXQqIGNoZWNrLXJlc3VsdCkpXG4ifSB7OnN5bSBjdXN0b20tcHJpbnRlciwgOm1ldGEgezpkb2MgIlJldHVybnMgYSBwcmludGVyLlxuXG4gIE9wdGlvbnM6XG4gICAtIGA6c2hvdy12YWxpZC12YWx1ZXM/YCAtIGlmIGBmYWxzZWAsIHJlcGxhY2VzIHZhbGlkIHZhbHVlcyB3aXRoIFwiLi4uXCJcbiAgIC0gYDp2YWx1ZS1zdHItZm5gICAgICAgIC0gZnVuY3Rpb24gdG8gcHJpbnQgYmFkIHZhbHVlc1xuICAgLSBgOnByaW50LXNwZWNzP2AgICAgICAgLSBpZiBgdHJ1ZWAsIGRpc3BsYXkgXCJSZWxldmFudCBzcGVjc1wiIHNlY3Rpb24uIE90aGVyd2lzZSwgb21pdCB0aGF0IHNlY3Rpb24uXG4gICAtIGA6dGhlbWVgICAgICAgICAgICAgICAgLSBlbmFibGVzIGNvbG9yIHRoZW1lLiBQb3NzaWJsZSB2YWx1ZXM6IGA6Zmlnd2hlZWwtdGhlbWVgLCBgOm5vbmVgIiwgOmFyZ2xpc3RzIChbb3B0c10pfSwgOnNvdXJjZSAiKGRlZm5cbiBjdXN0b20tcHJpbnRlclxuIFwiUmV0dXJucyBhIHByaW50ZXIuXFxuXFxuICBPcHRpb25zOlxcbiAgIC0gYDpzaG93LXZhbGlkLXZhbHVlcz9gIC0gaWYgYGZhbHNlYCwgcmVwbGFjZXMgdmFsaWQgdmFsdWVzIHdpdGggXFxcIi4uLlxcXCJcXG4gICAtIGA6dmFsdWUtc3RyLWZuYCAgICAgICAtIGZ1bmN0aW9uIHRvIHByaW50IGJhZCB2YWx1ZXNcXG4gICAtIGA6cHJpbnQtc3BlY3M/YCAgICAgICAtIGlmIGB0cnVlYCwgZGlzcGxheSBcXFwiUmVsZXZhbnQgc3BlY3NcXFwiIHNlY3Rpb24uIE90aGVyd2lzZSwgb21pdCB0aGF0IHNlY3Rpb24uXFxuICAgLSBgOnRoZW1lYCAgICAgICAgICAgICAgIC0gZW5hYmxlcyBjb2xvciB0aGVtZS4gUG9zc2libGUgdmFsdWVzOiBgOmZpZ3doZWVsLXRoZW1lYCwgYDpub25lYFwiXG4gW29wdHNdXG4gKGZuIFtleHBsYWluLWRhdGFdIChwcmludCAocHJpbnRlci1zdHIgb3B0cyBleHBsYWluLWRhdGEpKSkpXG4ifSB7OnN5bSBwcmludGVyLCA6bWV0YSB7OmRvYyAiUHJpbnRzIGBleHBsYWluLWRhdGFgIGluIGEgaHVtYW4tcmVhZGFibGUgZm9ybWF0LiIsIDphcmdsaXN0cyAoW2V4cGxhaW4tZGF0YV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBwcmludGVyXG4gXCJQcmludHMgYGV4cGxhaW4tZGF0YWAgaW4gYSBodW1hbi1yZWFkYWJsZSBmb3JtYXQuXCJcbiBbZXhwbGFpbi1kYXRhXVxuICgoY3VzdG9tLXByaW50ZXIge30pIGV4cGxhaW4tZGF0YSkpXG4ifSB7OnN5bSBleHBsYWluLXJlc3VsdC1zdHIsIDptZXRhIHs6ZG9jICJHaXZlbiBhIHJlc3VsdCBmcm9tIGBjbG9qdXJlLnNwZWMudGVzdC5hbHBoYS9jaGVja2AsIHJldHVybnMgYSBzdHJpbmcgc3VtbWFyaXppbmcgdGhlIHJlc3VsdC4iLCA6YXJnbGlzdHMgKFtjaGVjay1yZXN1bHRdKX0sIDpzb3VyY2UgIihkZWZuXG4gZXhwbGFpbi1yZXN1bHQtc3RyXG4gXCJHaXZlbiBhIHJlc3VsdCBmcm9tIGBjbG9qdXJlLnNwZWMudGVzdC5hbHBoYS9jaGVja2AsIHJldHVybnMgYSBzdHJpbmcgc3VtbWFyaXppbmcgdGhlIHJlc3VsdC5cIlxuIFtjaGVjay1yZXN1bHRdXG4gKHdpdGgtb3V0LXN0ciAoZXhwbGFpbi1yZXN1bHQgY2hlY2stcmVzdWx0KSkpXG4ifSB7OnN5bSB1bmRlZm1zZywgOm1ldGEgezpkb2MgIkRpc3NvY2lhdGUgdGhlIG1lc3NhZ2UgZm9yIHNwZWMgbmFtZWQgYGtgLiIsIDphcmdsaXN0cyAoW2tdKX0sIDpzb3VyY2UgIihkZWZuXG4gdW5kZWZtc2dcbiBcIkRpc3NvY2lhdGUgdGhlIG1lc3NhZ2UgZm9yIHNwZWMgbmFtZWQgYGtgLlwiXG4gW2tdXG4gKHN3YXAhIHJlZ2lzdHJ5LXJlZiBkaXNzb2MgaylcbiBuaWwpXG4ifSB7OnN5bSBleHBsYWluLXJlc3VsdHMsIDptZXRhIHs6ZG9jICJHaXZlbiBhIHNlcXVlbmNlIG9mIHJlc3VsdHMgZnJvbSBgY2xvanVyZS5zcGVjLnRlc3QuYWxwaGEvY2hlY2tgLCBwcmludHMgYSBzdW1tYXJ5IG9mIHRoZSByZXN1bHRzLiIsIDphcmdsaXN0cyAoW2NoZWNrLXJlc3VsdHNdKX0sIDpzb3VyY2UgIihkZWZuXG4gZXhwbGFpbi1yZXN1bHRzXG4gXCJHaXZlbiBhIHNlcXVlbmNlIG9mIHJlc3VsdHMgZnJvbSBgY2xvanVyZS5zcGVjLnRlc3QuYWxwaGEvY2hlY2tgLCBwcmludHMgYSBzdW1tYXJ5IG9mIHRoZSByZXN1bHRzLlwiXG4gW2NoZWNrLXJlc3VsdHNdXG4gKGRvc2VxXG4gIFtjaGVjay1yZXN1bHQgKGJ1dGxhc3QgY2hlY2stcmVzdWx0cyldXG4gIChleHBsYWluLXJlc3VsdCBjaGVjay1yZXN1bHQpXG4gIChwcmludCBcIlxcblxcblwiKSlcbiAoZXhwbGFpbi1yZXN1bHQgKGxhc3QgY2hlY2stcmVzdWx0cykpKVxuIn0gezpzeW0gZXhwb3VuZC1zdHIsIDptZXRhIHs6ZG9jICJHaXZlbiBhIGBzcGVjYCBhbmQgYSBgZm9ybWAsIGVpdGhlciByZXR1cm5zIHN1Y2Nlc3MgbWVzc2FnZSBvciBhIGh1bWFuLXJlYWRhYmxlIGVycm9yIG1lc3NhZ2UuIiwgOmFyZ2xpc3RzIFtbc3BlYyBmb3JtXSBbc3BlYyBmb3JtIG9wdHNdXX0sIDpzb3VyY2UgIihkZWZuXG4gZXhwb3VuZC1zdHJcbiBcIkdpdmVuIGEgYHNwZWNgIGFuZCBhIGBmb3JtYCwgZWl0aGVyIHJldHVybnMgc3VjY2VzcyBtZXNzYWdlIG9yIGEgaHVtYW4tcmVhZGFibGUgZXJyb3IgbWVzc2FnZS5cIlxuIChbc3BlYyBmb3JtXSAoZXhwb3VuZC1zdHIgc3BlYyBmb3JtIHt9KSlcbiAoW3NwZWMgZm9ybSBvcHRzXSAocHJpbnRlci1zdHIgb3B0cyAocy9leHBsYWluLWRhdGEgc3BlYyBmb3JtKSkpKVxuIn0gezpzeW0gZXhwbGFpbi1yZXN1bHRzLXN0ciwgOm1ldGEgezpkb2MgIkdpdmVuIGEgc2VxdWVuY2Ugb2YgcmVzdWx0cyBmcm9tIGBjbG9qdXJlLnNwZWMudGVzdC5hbHBoYS9jaGVja2AsIHJldHVybnMgYSBzdHJpbmcgc3VtbWFyaXppbmcgdGhlIHJlc3VsdHMuIiwgOmFyZ2xpc3RzIChbY2hlY2stcmVzdWx0c10pfSwgOnNvdXJjZSAiKGRlZm5cbiBleHBsYWluLXJlc3VsdHMtc3RyXG4gXCJHaXZlbiBhIHNlcXVlbmNlIG9mIHJlc3VsdHMgZnJvbSBgY2xvanVyZS5zcGVjLnRlc3QuYWxwaGEvY2hlY2tgLCByZXR1cm5zIGEgc3RyaW5nIHN1bW1hcml6aW5nIHRoZSByZXN1bHRzLlwiXG4gW2NoZWNrLXJlc3VsdHNdXG4gKHdpdGgtb3V0LXN0ciAoZXhwbGFpbi1yZXN1bHRzIGNoZWNrLXJlc3VsdHMpKSlcbiJ9IHs6c3ltIGV4cG91bmQsIDptZXRhIHs6ZG9jICJHaXZlbiBhIGBzcGVjYCBhbmQgYSBgZm9ybWAsIGVpdGhlciBwcmludHMgYSBzdWNjZXNzIG1lc3NhZ2Ugb3IgYSBodW1hbi1yZWFkYWJsZSBlcnJvciBtZXNzYWdlLiIsIDphcmdsaXN0cyBbW3NwZWMgZm9ybV0gW3NwZWMgZm9ybSBvcHRzXV19LCA6c291cmNlICIoZGVmblxuIGV4cG91bmRcbiBcIkdpdmVuIGEgYHNwZWNgIGFuZCBhIGBmb3JtYCwgZWl0aGVyIHByaW50cyBhIHN1Y2Nlc3MgbWVzc2FnZSBvciBhIGh1bWFuLXJlYWRhYmxlIGVycm9yIG1lc3NhZ2UuXCJcbiAoW3NwZWMgZm9ybV0gKGV4cG91bmQgc3BlYyBmb3JtIHt9KSlcbiAoW3NwZWMgZm9ybSBvcHRzXSAocHJpbnQgKGV4cG91bmQtc3RyIHNwZWMgZm9ybSBvcHRzKSkpKVxuIn0gezpzeW0gZGVmbXNnLCA6bWV0YSB7OmRvYyAiQXNzb2NpYXRlcyB0aGUgc3BlYyBuYW1lZCBga2Agd2l0aCBgZXJyb3ItbWVzc2FnZWAuIiwgOmFyZ2xpc3RzIChbayBlcnJvci1tZXNzYWdlXSl9LCA6c291cmNlICIoZGVmblxuIGRlZm1zZ1xuIFwiQXNzb2NpYXRlcyB0aGUgc3BlYyBuYW1lZCBga2Agd2l0aCBgZXJyb3ItbWVzc2FnZWAuXCJcbiBbayBlcnJvci1tZXNzYWdlXVxuIChzd2FwISByZWdpc3RyeS1yZWYgYXNzb2MgayBlcnJvci1tZXNzYWdlKVxuIG5pbClcbiJ9KSwgZGV2dG9vbHMuZm9ybWF0dGVycy5zdGF0ZSAoezpzeW0gcHJldmVudC1yZWN1cnNpb24/LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW10pfSwgOnNvdXJjZSAiKGRlZm5cbiBwcmV2ZW50LXJlY3Vyc2lvbj9cbiBbXVxuIChib29sZWFuICg6cHJldmVudC1yZWN1cnNpb24gKGdldC1jdXJyZW50LXN0YXRlKSkpKVxuIn0gezpzeW0gYWRkLW9iamVjdC10by1jdXJyZW50LXBhdGgtaW5mbyEsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbb2JqZWN0XSl9LCA6c291cmNlICIoZGVmblxuIGFkZC1vYmplY3QtdG8tY3VycmVudC1wYXRoLWluZm8hXG4gW29iamVjdF1cbiAodXBkYXRlLWN1cnJlbnQtc3RhdGUhIHVwZGF0ZSA6cGF0aC1pbmZvIGV4dGVuZC1wYXRoLWluZm8gb2JqZWN0KSlcbiJ9IHs6c3ltIGZpbmQtcGF0aC1pbi1mYWtlLXZlY3RvciwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtoaXN0b3J5IHBhdGhdKX0sIDpzb3VyY2UgIihkZWZuXG4gZmluZC1wYXRoLWluLWZha2UtdmVjdG9yXG4gW2hpc3RvcnkgcGF0aF1cbiAobGV0XG4gIFtzZWNvbmQtbGFzdC1oaXN0b3J5IChnZXQtc2Vjb25kLWxhc3Qtb2JqZWN0LWZyb20tY3VycmVudC1oaXN0b3J5KV1cbiAgKHdoZW5cbiAgIChtYXBwaW5nPyBzZWNvbmQtbGFzdC1oaXN0b3J5IGhpc3RvcnkpXG4gICAoY29uaiAob3IgcGF0aCBbXSkgKG50aCBoaXN0b3J5IDAgbmlsKSkpKSlcbiJ9IHs6c3ltIGdldC1tYW5hZ2VkLXByaW50LWxldmVsLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW10pfSwgOnNvdXJjZSAiKGRlZm5cbiBnZXQtbWFuYWdlZC1wcmludC1sZXZlbFxuIFtdXG4gKDptYW5hZ2VkLXByaW50LWxldmVsIChnZXQtY3VycmVudC1zdGF0ZSkpKVxuIn0gezpzeW0gZ2V0LWN1cnJlbnQtc3RhdGUsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbXSl9LCA6c291cmNlICIoZGVmblxuIGdldC1jdXJyZW50LXN0YXRlXG4gW11cbiB7OnByZSBbKHZhbGlkLWN1cnJlbnQtc3RhdGU/KV19XG4gKmN1cnJlbnQtc3RhdGUqKVxuIn0gezpzeW0gZ2V0LWN1cnJlbnQtaGlzdG9yeSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtdKX0sIDpzb3VyY2UgIihkZWZuIGdldC1jdXJyZW50LWhpc3RvcnkgW10gKDpoaXN0b3J5IChnZXQtY3VycmVudC1zdGF0ZSkpKVxuIn0gezpzeW0gbWFwcGluZz8sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbaGlzdG9yeSBvYmpdKX0sIDpzb3VyY2UgIihkZWZuXG4gbWFwcGluZz9cbiBbaGlzdG9yeSBvYmpdXG4gKGxldFxuICBbZmlyc3Qta3dcbiAgICh3aGVuIChhbmQgKHZlY3Rvcj8gb2JqKSAobWFwPyBoaXN0b3J5KSkgKG50aCBvYmogMCBuaWwpKVxuICAgdmFsaWQta3c/XG4gICAoYW5kXG4gICAgZmlyc3Qta3dcbiAgICAob3IgKGtleXdvcmQ/IGZpcnN0LWt3KSAoc3RyaW5nPyBmaXJzdC1rdykgKG51bWJlcj8gZmlyc3Qta3cpKVxuICAgICg9IChjb3VudCBvYmopIDIpKV1cbiAgKHdoZW4gdmFsaWQta3c/IChjb250YWlucz8gaGlzdG9yeSBmaXJzdC1rdykpKSlcbiJ9IHs6c3ltIGlnbm9yZS1wYXRoLWluLWZha2UtdmVjdG9yLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2hpc3Rvcnkgb2JqIHBhdGhdKX0sIDpzb3VyY2UgIihkZWZuXG4gaWdub3JlLXBhdGgtaW4tZmFrZS12ZWN0b3JcbiBbaGlzdG9yeSBvYmogcGF0aF1cbiAod2hlbiAobWFwcGluZz8gaGlzdG9yeSBvYmopIChvciBwYXRoIFtdKSkpXG4ifSB7OnN5bSBzZXQtbWFuYWdlZC1wcmludC1sZXZlbCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtzdGF0ZSB2YWxdKX0sIDpzb3VyY2UgIihkZWZuXG4gc2V0LW1hbmFnZWQtcHJpbnQtbGV2ZWxcbiBbc3RhdGUgdmFsXVxuIChpZlxuICAoc29tZT8gdmFsKVxuICAoYXNzb2Mgc3RhdGUgOm1hbmFnZWQtcHJpbnQtbGV2ZWwgdmFsKVxuICAoZGlzc29jIHN0YXRlIDptYW5hZ2VkLXByaW50LWxldmVsKSkpXG4ifSB7OnN5bSBleHRlbmQtcGF0aC1pbmZvLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3BhdGgtaW5mbyBvYmplY3RdKX0sIDpzb3VyY2UgIihkZWZuXG4gZXh0ZW5kLXBhdGgtaW5mb1xuIFtwYXRoLWluZm8gb2JqZWN0XVxuIChsZXRcbiAgW3BhcmVudC1vYmplY3QgKGdldC1sYXN0LW9iamVjdC1mcm9tLWN1cnJlbnQtaGlzdG9yeSldXG4gIChvclxuICAgKGlnbm9yZS1wYXRoLWluLWZha2UtdmVjdG9yIHBhcmVudC1vYmplY3Qgb2JqZWN0IHBhdGgtaW5mbylcbiAgIChmaW5kLXBhdGgtaW4tZmFrZS12ZWN0b3IgcGFyZW50LW9iamVjdCBwYXRoLWluZm8pXG4gICAoZmluZC1wYXRoIHBhcmVudC1vYmplY3Qgb2JqZWN0IHBhdGgtaW5mbylcbiAgIHBhdGgtaW5mbykpKVxuIn0gezpzeW0gcHVzaC1vYmplY3QtdG8tY3VycmVudC1oaXN0b3J5ISwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtvYmplY3RdKX0sIDpzb3VyY2UgIihkZWZuXG4gcHVzaC1vYmplY3QtdG8tY3VycmVudC1oaXN0b3J5IVxuIFtvYmplY3RdXG4gKHVwZGF0ZS1jdXJyZW50LXN0YXRlISB1cGRhdGUgOmhpc3RvcnkgY29uaiBvYmplY3QpKVxuIn0gezpzeW0gdXBkYXRlLWN1cnJlbnQtc3RhdGUhLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2YgJiBhcmdzXSl9LCA6c291cmNlICIoZGVmblxuIHVwZGF0ZS1jdXJyZW50LXN0YXRlIVxuIFtmICYgYXJnc11cbiB7OnByZSBbKHZhbGlkLWN1cnJlbnQtc3RhdGU/KV19XG4gKHNldCEgKmN1cnJlbnQtc3RhdGUqIChhcHBseSBmICpjdXJyZW50LXN0YXRlKiBhcmdzKSkpXG4ifSB7OnN5bSBnZXQtZGVwdGgtYnVkZ2V0LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW10pfSwgOnNvdXJjZSAiKGRlZm4gZ2V0LWRlcHRoLWJ1ZGdldCBbXSAoOmRlcHRoLWJ1ZGdldCAoZ2V0LWN1cnJlbnQtc3RhdGUpKSlcbiJ9IHs6c3ltIGJ1aWxkLXBhdGgtc2VnbWVudCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtwYXJlbnQtb2JqZWN0IG9iamVjdF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBidWlsZC1wYXRoLXNlZ21lbnRcbiBbcGFyZW50LW9iamVjdCBvYmplY3RdXG4gKGNvbmRcbiAgKG1hcD8gcGFyZW50LW9iamVjdClcbiAgKHNlZWstcGF0aC1zZWdtZW50IChzZXEgcGFyZW50LW9iamVjdCkgb2JqZWN0IHRydWUpXG4gIChzZXF1ZW50aWFsPyBwYXJlbnQtb2JqZWN0KVxuICAoc2Vlay1wYXRoLXNlZ21lbnRcbiAgIChtYXAtaW5kZXhlZCAoZm4gW2kgeF0gW2kgeF0pIHBhcmVudC1vYmplY3QpXG4gICBvYmplY3QpXG4gIChhbmRcbiAgIChzZXQ/IHBhcmVudC1vYmplY3QpXG4gICAoY29udGFpbnM/IHBhcmVudC1vYmplY3Qgb2JqZWN0KVxuICAgKG9yIChzdHJpbmc/IG9iamVjdCkgKGtleXdvcmQ/IG9iamVjdCkgKGludGVnZXI/IG9iamVjdCkpKVxuICBvYmplY3RcbiAgKGFuZCAoc2V0PyBwYXJlbnQtb2JqZWN0KSAoY29udGFpbnM/IHBhcmVudC1vYmplY3Qgb2JqZWN0KSlcbiAgKHNlZWstcGF0aC1zZWdtZW50XG4gICAobWFwLWluZGV4ZWQgKGZuIFtpIHhdIFtpIHhdKSBwYXJlbnQtb2JqZWN0KVxuICAgb2JqZWN0KSkpXG4ifSB7OnN5bSAqY3VycmVudC1zdGF0ZSosIDptZXRhIHt9LCA6c291cmNlICIoZGVmICpjdXJyZW50LXN0YXRlKiBuaWwpXG4ifSB7OnN5bSBzZWVrLXBhdGgtc2VnbWVudCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtjb2xsIHZhbCAmIFtzZXEnZC1tYXA/XV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBzZWVrLXBhdGgtc2VnbWVudFxuIFtjb2xsIHZhbCAmIFtzZXEnZC1tYXA/XV1cbiAobGV0XG4gIFsqXG4gICAoZm5cbiAgICBbW2sgdl1dXG4gICAgKGNvbmRcbiAgICAgKGFuZCBzZXEnZC1tYXA/IChpZGVudGljYWw/IGsgdmFsKSlcbiAgICAgKHByZXNlbnQtcGF0aC1zZWdtZW50IGspXG4gICAgIChpZGVudGljYWw/IHYgdmFsKVxuICAgICAocHJlc2VudC1wYXRoLXNlZ21lbnQgaykpKV1cbiAgKHNvbWUgKiBjb2xsKSkpXG4ifSB7OnN5bSBnZXQtY3VycmVudC1wYXRoLWluZm8sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbXSl9LCA6c291cmNlICIoZGVmbiBnZXQtY3VycmVudC1wYXRoLWluZm8gW10gKDpwYXRoLWluZm8gKGdldC1jdXJyZW50LXN0YXRlKSkpXG4ifSB7OnN5bSBnZXQtZGVmYXVsdC1zdGF0ZSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtdKX0sIDpzb3VyY2UgIihkZWZuIGdldC1kZWZhdWx0LXN0YXRlIFtdIHt9KVxuIn0gezpzeW0gZ2V0LXNlY29uZC1sYXN0LW9iamVjdC1mcm9tLWN1cnJlbnQtaGlzdG9yeSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtdKX0sIDpzb3VyY2UgIihkZWZuXG4gZ2V0LXNlY29uZC1sYXN0LW9iamVjdC1mcm9tLWN1cnJlbnQtaGlzdG9yeVxuIFtdXG4gKHNlY29uZCAoZ2V0LWN1cnJlbnQtaGlzdG9yeSkpKVxuIn0gezpzeW0gdmFsaWQtY3VycmVudC1zdGF0ZT8sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbXSl9LCA6c291cmNlICIoZGVmbiB2YWxpZC1jdXJyZW50LXN0YXRlPyBbXSAoc29tZT8gKmN1cnJlbnQtc3RhdGUqKSlcbiJ9IHs6c3ltIHJlc2V0LWRlcHRoLWxpbWl0cywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtzdGF0ZV0pfSwgOnNvdXJjZSAiKGRlZm5cbiByZXNldC1kZXB0aC1saW1pdHNcbiBbc3RhdGVdXG4gKC0+IHN0YXRlIChzZXQtZGVwdGgtYnVkZ2V0IG5pbCkgKHNldC1tYW5hZ2VkLXByaW50LWxldmVsIG5pbCkpKVxuIn0gezpzeW0gc2V0LXByZXZlbnQtcmVjdXJzaW9uLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3N0YXRlIHZhbF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBzZXQtcHJldmVudC1yZWN1cnNpb25cbiBbc3RhdGUgdmFsXVxuIChpZlxuICAoc29tZT8gdmFsKVxuICAoYXNzb2Mgc3RhdGUgOnByZXZlbnQtcmVjdXJzaW9uIHZhbClcbiAgKGRpc3NvYyBzdGF0ZSA6cHJldmVudC1yZWN1cnNpb24pKSlcbiJ9IHs6c3ltIGdldC1sYXN0LW9iamVjdC1mcm9tLWN1cnJlbnQtaGlzdG9yeSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtdKX0sIDpzb3VyY2UgIihkZWZuXG4gZ2V0LWxhc3Qtb2JqZWN0LWZyb20tY3VycmVudC1oaXN0b3J5XG4gW11cbiAoZmlyc3QgKGdldC1jdXJyZW50LWhpc3RvcnkpKSlcbiJ9IHs6c3ltIGZpbmQtcGF0aCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtoaXN0b3J5IG9iaiBwYXRoXSl9LCA6c291cmNlICIoZGVmblxuIGZpbmQtcGF0aFxuIFtoaXN0b3J5IG9iaiBwYXRoXVxuIChsZXRcbiAgW3BhdGgtc2VnbWVudCAoYnVpbGQtcGF0aC1zZWdtZW50IGhpc3Rvcnkgb2JqKV1cbiAgKHdoZW4gKHNvbWU/IHBhdGgtc2VnbWVudCkgKGNvbmogKG9yIHBhdGggW10pIHBhdGgtc2VnbWVudCkpKSlcbiJ9IHs6c3ltIHByZXNlbnQtcGF0aC1zZWdtZW50LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3ZdKX0sIDpzb3VyY2UgIihkZWZuXG4gcHJlc2VudC1wYXRoLXNlZ21lbnRcbiBbdl1cbiAoY29uZCAoc3RyaW5nPyB2KSB2IChrZXl3b3JkPyB2KSB2IChudW1iZXI/IHYpIHYgOmVsc2UgXCI/XCIpKVxuIn0gezpzeW0gc2V0LWRlcHRoLWJ1ZGdldCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtzdGF0ZSB2YWxdKX0sIDpzb3VyY2UgIihkZWZuXG4gc2V0LWRlcHRoLWJ1ZGdldFxuIFtzdGF0ZSB2YWxdXG4gKGlmXG4gIChzb21lPyB2YWwpXG4gIChhc3NvYyBzdGF0ZSA6ZGVwdGgtYnVkZ2V0IHZhbClcbiAgKGRpc3NvYyBzdGF0ZSA6ZGVwdGgtYnVkZ2V0KSkpXG4ifSB7OnN5bSBpcy1jaXJjdWxhcj8sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbb2JqZWN0XSl9LCA6c291cmNlICIoZGVmblxuIGlzLWNpcmN1bGFyP1xuIFtvYmplY3RdXG4gKGxldFxuICBbaGlzdG9yeSAoZ2V0LWN1cnJlbnQtaGlzdG9yeSldXG4gIChzb21lIChmbiogW3AxX180MjA5OCNdIChpZGVudGljYWw/IHAxX180MjA5OCMgb2JqZWN0KSkgaGlzdG9yeSkpKVxuIn0pLCBjbGpzLnN0YWNrdHJhY2UgKHs6c3ltIG91dHB1dC1kaXJlY3RvcnksIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbb3B0c10pfSwgOnNvdXJjZSAiKGRlZm5cbiBvdXRwdXQtZGlyZWN0b3J5XG4gW29wdHNdXG4gIz8oOmNsaiAodXRpbC9vdXRwdXQtZGlyZWN0b3J5IG9wdHMpIDpjbGpzIChvciAoOm91dHB1dC1kaXIgb3B0cykgXCJvdXRcIikpKVxuIn0gezpzeW0gZW5kcy13aXRoPywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtzMCBzMV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBlbmRzLXdpdGg/XG4gIz8oOmNsanMgezp0YWcgYm9vbGVhbn0pXG4gW3MwIHMxXVxuICM/KDpjbGogKC5lbmRzV2l0aCBzMCBzMSkgOmNsanMgKGdzdHJpbmcvZW5kc1dpdGggczAgczEpKSlcbiJ9IHs6c3ltIHN0YXJ0cy13aXRoPywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtzMCBzMV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBzdGFydHMtd2l0aD9cbiAjPyg6Y2xqcyB7OnRhZyBib29sZWFufSlcbiBbczAgczFdXG4gIz8oOmNsaiAoLnN0YXJ0c1dpdGggczAgczEpIDpjbGpzIChnc3RyaW5nL3N0YXJ0c1dpdGggczAgczEpKSlcbiJ9IHs6c3ltIHJlbW92ZS1leHQsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZmlsZV0pfSwgOnNvdXJjZSAiKGRlZm5cbiByZW1vdmUtZXh0XG4gW2ZpbGVdXG4gKC0+XG4gIGZpbGVcbiAgKHN0cmluZy9yZXBsYWNlICNcIlxcLmpzJFwiIFwiXCIpXG4gIChzdHJpbmcvcmVwbGFjZSAjXCJcXC5jbGpzJFwiIFwiXCIpXG4gIChzdHJpbmcvcmVwbGFjZSAjXCJcXC5jbGpjJFwiIFwiXCIpXG4gIChzdHJpbmcvcmVwbGFjZSAjXCJcXC5jbGokXCIgXCJcIikpKVxuIn0gezpzeW0gc3RyaW5nLT5yZWdleCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtzXSl9LCA6c291cmNlICIoZGVmblxuIHN0cmluZy0+cmVnZXhcbiBbc11cbiAjPyg6Y2xqIChQYXR0ZXJuL2NvbXBpbGUgcykgOmNsanMgKGpzL1JlZ0V4cC4gcykpKVxuIn0gezpzeW0gc2FmYXJpLXN0LWVsLT5mcmFtZSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtyZXBsLWVudiBzdC1lbCBvcHRzXSl9LCA6c291cmNlICIoZGVmblxuIHNhZmFyaS1zdC1lbC0+ZnJhbWVcbiBbcmVwbC1lbnYgc3QtZWwgb3B0c11cbiAobGV0XG4gIFtbZnVuY3Rpb24gZmxjXVxuICAgKGlmIChyZS1maW5kICNcIkBcIiBzdC1lbCkgKHN0cmluZy9zcGxpdCBzdC1lbCAjXCJAXCIpIFtuaWwgc3QtZWxdKVxuICAgW2ZpbGUgbGluZSBjb2x1bW5dXG4gICAocGFyc2UtZmlsZS1saW5lLWNvbHVtbiBmbGMpXVxuICAoaWZcbiAgIChhbmQgZmlsZSBmdW5jdGlvbiBsaW5lIGNvbHVtbilcbiAgIHs6ZmlsZSAocGFyc2UtZmlsZSByZXBsLWVudiBmaWxlIG9wdHMpLFxuICAgIDpmdW5jdGlvbiAoc3RyaW5nL3RyaW0gZnVuY3Rpb24pLFxuICAgIDpsaW5lIGxpbmUsXG4gICAgOmNvbHVtbiBjb2x1bW59XG4gICAod2hlbi1ub3RcbiAgICAoc3RyaW5nL2JsYW5rPyBmdW5jdGlvbilcbiAgICB7OmZpbGUgbmlsLFxuICAgICA6ZnVuY3Rpb24gKHN0cmluZy90cmltIGZ1bmN0aW9uKSxcbiAgICAgOmxpbmUgbmlsLFxuICAgICA6Y29sdW1uIG5pbH0pKSkpXG4ifSB7OnN5bSBtYXBwZWQtZnJhbWUsIDptZXRhIHs6ZG9jICJHaXZlbiBvcHRzIGFuZCBhIGNhbm9uaWNhbGl6ZWQgSmF2YVNjcmlwdCBzdGFja3RyYWNlIGZyYW1lLCByZXR1cm4gdGhlXG4gIENsb2p1cmVTY3JpcHQgZnJhbWUuIiwgOmFyZ2xpc3RzIChbezprZXlzIFtmdW5jdGlvbiBmaWxlIGxpbmUgY29sdW1uXX0gc21zIG9wdHNdKX0sIDpzb3VyY2UgIihkZWZuXG4gbWFwcGVkLWZyYW1lXG4gXCJHaXZlbiBvcHRzIGFuZCBhIGNhbm9uaWNhbGl6ZWQgSmF2YVNjcmlwdCBzdGFja3RyYWNlIGZyYW1lLCByZXR1cm4gdGhlXFxuICBDbG9qdXJlU2NyaXB0IGZyYW1lLlwiXG4gW3s6a2V5cyBbZnVuY3Rpb24gZmlsZSBsaW5lIGNvbHVtbl19IHNtcyBvcHRzXVxuIChsZXRcbiAgW25vLXNvdXJjZS1maWxlP1xuICAgKGlmLW5vdCBmaWxlIHRydWUgKHN0YXJ0cy13aXRoPyBmaWxlIFwiPFwiKSlcbiAgIFtsaW5lJyBjb2x1bW4nIGNhbGxdXG4gICAoaWZcbiAgICBuby1zb3VyY2UtZmlsZT9cbiAgICBbbGluZSBjb2x1bW4gbmlsXVxuICAgIChtYXBwZWQtbGluZS1jb2x1bW4tY2FsbCBzbXMgZmlsZSBsaW5lIGNvbHVtbikpXG4gICBmaWxlJ1xuICAgKHdoZW4tbm90XG4gICAgbm8tc291cmNlLWZpbGU/XG4gICAgKGlmXG4gICAgIChlbmRzLXdpdGg/IGZpbGUgXCIuanNcIilcbiAgICAgKHN0ciAoc3VicyBmaWxlIDAgKC0gKGNvdW50IGZpbGUpIDMpKSBcIi5jbGpzXCIpXG4gICAgIGZpbGUpKV1cbiAgezpmdW5jdGlvbiBmdW5jdGlvbixcbiAgIDpjYWxsIGNhbGwsXG4gICA6ZmlsZVxuICAgKGlmXG4gICAgbm8tc291cmNlLWZpbGU/XG4gICAgKHN0ciBcIk5PX1NPVVJDRV9GSUxFXCIgKHdoZW4gZmlsZSAoc3RyIFwiIFwiIGZpbGUpKSlcbiAgICBmaWxlJyksXG4gICA6bGluZSBsaW5lJyxcbiAgIDpjb2x1bW4gY29sdW1uJ30pKVxuIn0gezpzeW0gZmlyZWZveC1zdC1lbC0+ZnJhbWUsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbcmVwbC1lbnYgc3QtZWwgb3B0c10pfSwgOnNvdXJjZSAiKGRlZm5cbiBmaXJlZm94LXN0LWVsLT5mcmFtZVxuIFtyZXBsLWVudiBzdC1lbCBvcHRzXVxuIChsZXRcbiAgW1tmdW5jdGlvbiBmbGNdXG4gICAoaWYgKHJlLWZpbmQgI1wiQFwiIHN0LWVsKSAoc3RyaW5nL3NwbGl0IHN0LWVsICNcIkBcIikgW25pbCBzdC1lbF0pXG4gICBbZmlsZSBsaW5lIGNvbHVtbl1cbiAgIChwYXJzZS1maWxlLWxpbmUtY29sdW1uIGZsYyldXG4gIChpZlxuICAgKGFuZCBmaWxlIGZ1bmN0aW9uIGxpbmUgY29sdW1uKVxuICAgezpmaWxlIChwYXJzZS1maWxlIHJlcGwtZW52IGZpbGUgb3B0cyksXG4gICAgOmZ1bmN0aW9uIChmaXJlZm94LWNsZWFuLWZ1bmN0aW9uIGZ1bmN0aW9uKSxcbiAgICA6bGluZSBsaW5lLFxuICAgIDpjb2x1bW4gY29sdW1ufVxuICAgKHdoZW4tbm90XG4gICAgKHN0cmluZy9ibGFuaz8gZnVuY3Rpb24pXG4gICAgezpmaWxlIG5pbCxcbiAgICAgOmZ1bmN0aW9uIChmaXJlZm94LWNsZWFuLWZ1bmN0aW9uIGZ1bmN0aW9uKSxcbiAgICAgOmxpbmUgbmlsLFxuICAgICA6Y29sdW1uIG5pbH0pKSkpXG4ifSB7OnN5bSBmaXJlZm94LWNsZWFuLWZ1bmN0aW9uLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2ZdKX0sIDpzb3VyY2UgIihkZWZuXG4gZmlyZWZveC1jbGVhbi1mdW5jdGlvblxuIFtmXVxuIChhcy0+XG4gIGZcbiAgZlxuICAoY29uZFxuICAgKHN0cmluZy9ibGFuaz8gZilcbiAgIG5pbFxuICAgKG5vdD0gKC5pbmRleE9mIGYgXCI8L1wiKSAtMSlcbiAgIChsZXQgW2lkeCAoLmluZGV4T2YgZiBcIjwvXCIpXSAoLnN1YnN0cmluZyBmICgrIGlkeCAyKSkpXG4gICA6ZWxzZVxuICAgZilcbiAgKC0+XG4gICBmXG4gICAoc3RyaW5nL3JlcGxhY2UgI1wiPFwiIFwiXCIpXG4gICAoc3RyaW5nL3JlcGxhY2UgIz8oOmNsaiAjXCJcXC9cIiA6Y2xqcyAoanMvUmVnRXhwLiBcIlxcXFwvXCIpKSBcIlwiKSkpKVxuIn0gezpzeW0gY2hyb21lLXN0LWVsLT5mcmFtZSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtyZXBsLWVudiBzdC1lbCBvcHRzXSl9LCA6c291cmNlICIoZGVmblxuIGNocm9tZS1zdC1lbC0+ZnJhbWVcbiBbcmVwbC1lbnYgc3QtZWwgb3B0c11cbiAobGV0XG4gIFt4c1xuICAgKC0+IHN0LWVsIChzdHJpbmcvcmVwbGFjZSAjXCJcXHMrYXRcXHMrXCIgXCJcIikgKHN0cmluZy9zcGxpdCAjXCJcXHMrXCIpKVxuICAgW2Z1bmN0aW9uIGZsY11cbiAgIChpZiAoPT0gMSAoY291bnQgeHMpKSBbbmlsIChmaXJzdCB4cyldIFsoZmlyc3QgeHMpIChsYXN0IHhzKV0pXG4gICBbZmlsZSBsaW5lIGNvbHVtbl1cbiAgIChwYXJzZS1maWxlLWxpbmUtY29sdW1uIGZsYyldXG4gIChpZlxuICAgKGFuZCBmaWxlIGZ1bmN0aW9uIGxpbmUgY29sdW1uKVxuICAgezpmaWxlIChwYXJzZS1maWxlIHJlcGwtZW52IGZpbGUgb3B0cyksXG4gICAgOmZ1bmN0aW9uIChzdHJpbmcvcmVwbGFjZSBmdW5jdGlvbiAjXCJPYmplY3RcXC5cIiBcIlwiKSxcbiAgICA6bGluZSBsaW5lLFxuICAgIDpjb2x1bW4gY29sdW1ufVxuICAgKHdoZW4tbm90XG4gICAgKHN0cmluZy9ibGFuaz8gZnVuY3Rpb24pXG4gICAgezpmaWxlIG5pbCxcbiAgICAgOmZ1bmN0aW9uIChzdHJpbmcvcmVwbGFjZSBmdW5jdGlvbiAjXCJPYmplY3RcXC5cIiBcIlwiKSxcbiAgICAgOmxpbmUgbmlsLFxuICAgICA6Y29sdW1uIG5pbH0pKSkpXG4ifSB7OnN5bSBtYXBwZWQtbGluZS1jb2x1bW4tY2FsbCwgOm1ldGEgezpkb2MgIkdpdmVuIGEgY2xqcy5zb3VyY2UtbWFwIHNvdXJjZSBtYXAgZGF0YSBzdHJ1Y3R1cmUgbWFwIGEgZ2VuZXJhdGVkIGxpbmVcbiAgIGFuZCBjb2x1bW4gYmFjayB0byB0aGUgb3JpZ2luYWwgbGluZSwgY29sdW1uLCBhbmQgZnVuY3Rpb24gY2FsbGVkLiIsIDphcmdsaXN0cyAoW3NtcyBmaWxlIGxpbmUgY29sdW1uXSl9LCA6c291cmNlICIoZGVmblxuIG1hcHBlZC1saW5lLWNvbHVtbi1jYWxsXG4gXCJHaXZlbiBhIGNsanMuc291cmNlLW1hcCBzb3VyY2UgbWFwIGRhdGEgc3RydWN0dXJlIG1hcCBhIGdlbmVyYXRlZCBsaW5lXFxuICAgYW5kIGNvbHVtbiBiYWNrIHRvIHRoZSBvcmlnaW5hbCBsaW5lLCBjb2x1bW4sIGFuZCBmdW5jdGlvbiBjYWxsZWQuXCJcbiBbc21zIGZpbGUgbGluZSBjb2x1bW5dXG4gKGxldFxuICBbc291cmNlLW1hcFxuICAgKGdldCBzbXMgKHN5bWJvbCAoc3RyaW5nL3JlcGxhY2UgKHJlbW92ZS1leHQgZmlsZSkgXCIvXCIgXCIuXCIpKSldXG4gIChsZXRmblxuICAgWyhnZXQtYmVzdC1jb2x1bW5cbiAgICAgW2NvbHVtbnMgY29sdW1uXVxuICAgICAobGFzdFxuICAgICAgKG9yXG4gICAgICAgKGdldFxuICAgICAgICBjb2x1bW5zXG4gICAgICAgIChsYXN0XG4gICAgICAgICAoZmlsdGVyXG4gICAgICAgICAgKGZuKiBbcDFfXzQzMTk5I10gKDw9IHAxX180MzE5OSMgKGRlYyBjb2x1bW4pKSlcbiAgICAgICAgICAoc29ydCAoa2V5cyBjb2x1bW5zKSkpKSlcbiAgICAgICAoc2Vjb25kIChmaXJzdCBjb2x1bW5zKSkpKSlcbiAgICAoYWRqdXN0XG4gICAgIFttYXBwZWRdXG4gICAgICh2ZWNcbiAgICAgIChtYXBcbiAgICAgICAoZm4qIFtwMV9fNDMyMDAjIHAyX180MzIwMSNdIChwMV9fNDMyMDAjIHAyX180MzIwMSMpKVxuICAgICAgIFtpbmMgaW5jIGlkZW50aXR5XVxuICAgICAgIG1hcHBlZCkpKV1cbiAgIChsZXRcbiAgICBbZGVmYXVsdCBbbGluZSBjb2x1bW4gbmlsXV1cbiAgICAoaWYtbGV0XG4gICAgIFtjb2x1bW5zIChnZXQgc291cmNlLW1hcCAoZGVjIGxpbmUpKV1cbiAgICAgKGFkanVzdCAobWFwIChnZXQtYmVzdC1jb2x1bW4gY29sdW1ucyBjb2x1bW4pIFs6bGluZSA6Y29sIDpuYW1lXSkpXG4gICAgIGRlZmF1bHQpKSkpKVxuIn0gezpzeW0gbWFwcGVkLXN0YWNrdHJhY2Utc3RyLCA6bWV0YSB7OmRvYyAiR2l2ZW4gYSB2ZWN0b3IgcmVwcmVzZW50aW5nIHRoZSBjYW5vbmljYWxpemVkIEphdmFTY3JpcHQgc3RhY2t0cmFjZSBhbmQgYSBtYXBcbiAgb2YgbGlicmFyeSBuYW1lcyB0byBkZWNvZGVkIHNvdXJjZSBtYXBzLCBwcmludCB0aGUgQ2xvanVyZVNjcmlwdCBzdGFja3RyYWNlIC5cbiAgU2VlIG1hcHBlZC1zdGFja3RyYWNlLiIsIDphcmdsaXN0cyBbW3N0YWNrdHJhY2Ugc21zXSBbc3RhY2t0cmFjZSBzbXMgb3B0c11dfSwgOnNvdXJjZSAiKGRlZm5cbiBtYXBwZWQtc3RhY2t0cmFjZS1zdHJcbiBcIkdpdmVuIGEgdmVjdG9yIHJlcHJlc2VudGluZyB0aGUgY2Fub25pY2FsaXplZCBKYXZhU2NyaXB0IHN0YWNrdHJhY2UgYW5kIGEgbWFwXFxuICBvZiBsaWJyYXJ5IG5hbWVzIHRvIGRlY29kZWQgc291cmNlIG1hcHMsIHByaW50IHRoZSBDbG9qdXJlU2NyaXB0IHN0YWNrdHJhY2UgLlxcbiAgU2VlIG1hcHBlZC1zdGFja3RyYWNlLlwiXG4gKFtzdGFja3RyYWNlIHNtc10gKG1hcHBlZC1zdGFja3RyYWNlLXN0ciBzdGFja3RyYWNlIHNtcyBuaWwpKVxuIChbc3RhY2t0cmFjZSBzbXMgb3B0c11cbiAgKHdpdGgtb3V0LXN0clxuICAgKGRvc2VxXG4gICAgW3s6a2V5cyBbZnVuY3Rpb24gZmlsZSBsaW5lIGNvbHVtbl19XG4gICAgIChtYXBwZWQtc3RhY2t0cmFjZSBzdGFja3RyYWNlIHNtcyBvcHRzKV1cbiAgICAocHJpbnRsblxuICAgICBcIlxcdFwiXG4gICAgIChzdHJcbiAgICAgICh3aGVuIGZ1bmN0aW9uIChzdHIgZnVuY3Rpb24gXCIgXCIpKVxuICAgICAgXCIoXCJcbiAgICAgIGZpbGVcbiAgICAgICh3aGVuIGxpbmUgKHN0ciBcIjpcIiBsaW5lKSlcbiAgICAgICh3aGVuIGNvbHVtbiAoc3RyIFwiOlwiIGNvbHVtbikpXG4gICAgICBcIilcIikpKSkpKVxuIn0gezpzeW0gbWFwcGVkLXN0YWNrdHJhY2UsIDptZXRhIHs6ZG9jICJHaXZlbiBhIHZlY3RvciByZXByZXNlbnRpbmcgdGhlIGNhbm9uaWNhbGl6ZWQgSmF2YVNjcmlwdCBzdGFja3RyYWNlXG4gICByZXR1cm4gdGhlIENsb2p1cmVTY3JpcHQgc3RhY2t0cmFjZS4gVGhlIGNhbm9uaWNhbCBzdGFja3RyYWNlIG11c3QgYmVcbiAgIGluIHRoZSBmb3JtOlxuXG4gICAgW3s6ZmlsZSA8c3RyaW5nPlxuICAgICAgOmZ1bmN0aW9uIDxzdHJpbmc+XG4gICAgICA6bGluZSA8aW50ZWdlcj5cbiAgICAgIDpjb2x1bW4gPGludGVnZXI+fSpdXG5cbiAgIDpmaWxlIG11c3QgYmUgYSBVUkwgcGF0aCAod2l0aG91dCBwcm90b2NvbCkgcmVsYXRpdmUgdG8gOm91dHB1dC1kaXIgb3IgYVxuICAgaWRlbnRpZmllciBkZWxpbWl0ZWQgYnkgYW5nbGUgYnJhY2tldHMuIFRoZSByZXR1cm5lZCBtYXBwZWQgc3RhY2t0cmFjZSB3aWxsXG4gICBhbHNvIGNvbnRhaW4gOnVybCBlbnRyaWVzIHRvIHRoZSBvcmlnaW5hbCBzb3VyY2VzIGlmIGl0IGNhbiBiZSBkZXRlcm1pbmVkXG4gICBmcm9tIHRoZSBjbGFzc3BhdGguIiwgOmFyZ2xpc3RzIFtbc3RhY2t0cmFjZSBzbXNdIFtzdGFja3RyYWNlIHNtcyBvcHRzXV19LCA6c291cmNlICIoZGVmblxuIG1hcHBlZC1zdGFja3RyYWNlXG4gXCJHaXZlbiBhIHZlY3RvciByZXByZXNlbnRpbmcgdGhlIGNhbm9uaWNhbGl6ZWQgSmF2YVNjcmlwdCBzdGFja3RyYWNlXFxuICAgcmV0dXJuIHRoZSBDbG9qdXJlU2NyaXB0IHN0YWNrdHJhY2UuIFRoZSBjYW5vbmljYWwgc3RhY2t0cmFjZSBtdXN0IGJlXFxuICAgaW4gdGhlIGZvcm06XFxuXFxuICAgIFt7OmZpbGUgPHN0cmluZz5cXG4gICAgICA6ZnVuY3Rpb24gPHN0cmluZz5cXG4gICAgICA6bGluZSA8aW50ZWdlcj5cXG4gICAgICA6Y29sdW1uIDxpbnRlZ2VyPn0qXVxcblxcbiAgIDpmaWxlIG11c3QgYmUgYSBVUkwgcGF0aCAod2l0aG91dCBwcm90b2NvbCkgcmVsYXRpdmUgdG8gOm91dHB1dC1kaXIgb3IgYVxcbiAgIGlkZW50aWZpZXIgZGVsaW1pdGVkIGJ5IGFuZ2xlIGJyYWNrZXRzLiBUaGUgcmV0dXJuZWQgbWFwcGVkIHN0YWNrdHJhY2Ugd2lsbFxcbiAgIGFsc28gY29udGFpbiA6dXJsIGVudHJpZXMgdG8gdGhlIG9yaWdpbmFsIHNvdXJjZXMgaWYgaXQgY2FuIGJlIGRldGVybWluZWRcXG4gICBmcm9tIHRoZSBjbGFzc3BhdGguXCJcbiAoW3N0YWNrdHJhY2Ugc21zXSAobWFwcGVkLXN0YWNrdHJhY2Ugc3RhY2t0cmFjZSBzbXMgbmlsKSlcbiAoW3N0YWNrdHJhY2Ugc21zIG9wdHNdXG4gIChsZXRmblxuICAgWyhjYWxsLT5mdW5jdGlvblxuICAgICBbeF1cbiAgICAgKGlmICg6Y2FsbCB4KSAoaGFzaC1tYXAgOmZ1bmN0aW9uICg6Y2FsbCB4KSkge30pKVxuICAgIChjYWxsLW1lcmdlXG4gICAgIFtmdW5jdGlvbiBjYWxsXVxuICAgICAobWVyZ2Utd2l0aFxuICAgICAgKGZuXG4gICAgICAgW211bmdlZC1mbi1uYW1lIHVubXVuZ2VkLWNhbGwtbmFtZV1cbiAgICAgICAoaWZcbiAgICAgICAgKD1cbiAgICAgICAgIG11bmdlZC1mbi1uYW1lXG4gICAgICAgICAoc3RyaW5nL3JlcGxhY2UgKG11bmdlIHVubXVuZ2VkLWNhbGwtbmFtZSkgXCIuXCIgXCIkXCIpKVxuICAgICAgICB1bm11bmdlZC1jYWxsLW5hbWVcbiAgICAgICAgbXVuZ2VkLWZuLW5hbWUpKVxuICAgICAgZnVuY3Rpb25cbiAgICAgIGNhbGwpKV1cbiAgIChsZXRcbiAgICBbbWFwcGVkLWZyYW1lc1xuICAgICAobWFwXG4gICAgICAobWVtb2l6ZSAoZm4qIFtwMV9fNDMyMDIjXSAobWFwcGVkLWZyYW1lIHAxX180MzIwMiMgc21zIG9wdHMpKSlcbiAgICAgIHN0YWNrdHJhY2UpXVxuICAgICh2ZWNcbiAgICAgKG1hcFxuICAgICAgY2FsbC1tZXJnZVxuICAgICAgKG1hcCAoZm4qIFtwMV9fNDMyMDMjXSAoZGlzc29jIHAxX180MzIwMyMgOmNhbGwpKSBtYXBwZWQtZnJhbWVzKVxuICAgICAgKGNvbmNhdCAocmVzdCAobWFwIGNhbGwtPmZ1bmN0aW9uIG1hcHBlZC1mcmFtZXMpKSBbe31dKSkpKSkpKVxuIn0gezpzeW0gcGFyc2UtaW50LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3NdKX0sIDpzb3VyY2UgIihkZWZuXG4gcGFyc2UtaW50XG4gW3NdXG4gIz8oOmNsaiAoTG9uZy9wYXJzZUxvbmcgcykgOmNsanMgKGpzL3BhcnNlSW50IHMgMTApKSlcbiJ9IHs6c3ltIHBhcnNlLWZpbGUsIDptZXRhIHs6ZG9jICJHaXZlbiBhIGJyb3dzZXIgZmlsZSB1cmwgY29udmVydCBpdCBpbnRvIGEgcmVsYXRpdmUgcGF0aCB0aGF0IGNhbiBiZSB1c2VkXG4gICB0byBsb2NhdGUgdGhlIG9yaWdpbmFsIHNvdXJjZS4iLCA6YXJnbGlzdHMgKFt7OmtleXMgW2hvc3QgaG9zdC1wb3J0IHBvcnRdLCA6YXMgcmVwbC1lbnZ9IGZpbGUgezprZXlzIFthc3NldC1wYXRoXSwgOmFzIG9wdHN9XSl9LCA6c291cmNlICIoZGVmblxuIHBhcnNlLWZpbGVcbiBcIkdpdmVuIGEgYnJvd3NlciBmaWxlIHVybCBjb252ZXJ0IGl0IGludG8gYSByZWxhdGl2ZSBwYXRoIHRoYXQgY2FuIGJlIHVzZWRcXG4gICB0byBsb2NhdGUgdGhlIG9yaWdpbmFsIHNvdXJjZS5cIlxuIFt7OmtleXMgW2hvc3QgaG9zdC1wb3J0IHBvcnRdLCA6YXMgcmVwbC1lbnZ9XG4gIGZpbGVcbiAgezprZXlzIFthc3NldC1wYXRoXSwgOmFzIG9wdHN9XVxuIChsZXRcbiAgW3VybHBhdFxuICAgKGlmXG4gICAgaG9zdFxuICAgIChzdHJpbmctPnJlZ2V4IChzdHIgXCJodHRwOi8vXCIgaG9zdCBcIjpcIiAob3IgaG9zdC1wb3J0IHBvcnQpIFwiL1wiKSlcbiAgICBcIlwiKVxuICAgbWF0Y2hcbiAgIChpZiBob3N0IChyZS1maW5kIHVybHBhdCBmaWxlKSAoY29udGFpbnM/IG9wdHMgOm91dHB1dC1kaXIpKV1cbiAgKGlmXG4gICBtYXRjaFxuICAgKC0+XG4gICAgZmlsZVxuICAgIChzdHJpbmcvcmVwbGFjZSB1cmxwYXQgXCJcIilcbiAgICAoc3RyaW5nL3JlcGxhY2VcbiAgICAgKHN0cmluZy0+cmVnZXhcbiAgICAgIChzdHJcbiAgICAgICBcIl5cIlxuICAgICAgIChvclxuICAgICAgICAoYW5kIGFzc2V0LXBhdGggKHN0cmluZy9yZXBsYWNlIGFzc2V0LXBhdGggI1wiXi9cIiBcIlwiKSlcbiAgICAgICAgKG91dHB1dC1kaXJlY3Rvcnkgb3B0cykpXG4gICAgICAgXCIvXCIpKVxuICAgICBcIlwiKSlcbiAgIChpZi1sZXRcbiAgICBbYXNzZXQtcm9vdCAoOmFzc2V0LXJvb3Qgb3B0cyldXG4gICAgKHN0cmluZy9yZXBsYWNlIGZpbGUgYXNzZXQtcm9vdCBcIlwiKVxuICAgICh0aHJvd1xuICAgICAoZXgtaW5mb1xuICAgICAgKHN0ciBcIkNvdWxkIG5vdCByZWxhdGl2aXplIFVSTCBcIiBmaWxlKVxuICAgICAgezp0eXBlIDpwYXJzZS1zdGFja3RyYWNlLCA6cmVhc29uIDpyZWxhdGl2aXplLXVybH0pKSkpKSlcbiJ9IHs6c3ltIHBhcnNlLWZpbGUtbGluZS1jb2x1bW4sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZmxjXSl9LCA6c291cmNlICIoZGVmblxuIHBhcnNlLWZpbGUtbGluZS1jb2x1bW5cbiBbZmxjXVxuIChpZi1ub3RcbiAgKHJlLWZpbmQgI1wiOlwiIGZsYylcbiAgW2ZsYyBuaWwgbmlsXVxuICAobGV0XG4gICBbeHNcbiAgICAoc3RyaW5nL3NwbGl0IGZsYyAjXCI6XCIpXG4gICAgW3ByZSBbbGluZSBjb2x1bW5dXVxuICAgIChyZWR1Y2VcbiAgICAgKGZuXG4gICAgICBbW3ByZSBwb3N0XSBbeCBpXV1cbiAgICAgIChpZiAoPD0gaSAyKSBbcHJlIChjb25qIHBvc3QgeCldIFsoY29uaiBwcmUgeCkgcG9zdF0pKVxuICAgICBbW10gW11dXG4gICAgIChtYXAgdmVjdG9yIHhzIChyYW5nZSAoY291bnQgeHMpIDAgLTEpKSlcbiAgICBmaWxlXG4gICAgKHN0cmluZy9qb2luIFwiOlwiIHByZSldXG4gICBbKGNvbmQtPiBmaWxlIChzdGFydHMtd2l0aD8gZmlsZSBcIihcIikgKHN0cmluZy9yZXBsYWNlIFwiKFwiIFwiXCIpKVxuICAgIChwYXJzZS1pbnRcbiAgICAgKGNvbmQtPiBsaW5lIChlbmRzLXdpdGg/IGxpbmUgXCIpXCIpIChzdHJpbmcvcmVwbGFjZSBcIilcIiBcIlwiKSkpXG4gICAgKHBhcnNlLWludFxuICAgICAoY29uZC0+XG4gICAgICBjb2x1bW5cbiAgICAgIChlbmRzLXdpdGg/IGNvbHVtbiBcIilcIilcbiAgICAgIChzdHJpbmcvcmVwbGFjZSBcIilcIiBcIlwiKSkpXSkpKVxuIn0pLCBjbGpzLnRvb2xzLnJlYWRlci5pbXBsLmVycm9ycyAoezpzeW0gdGhyb3ctaW52YWxpZC11bmljb2RlLWVzY2FwZSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtyZHIgY2hdKX0sIDpzb3VyY2UgIihkZWZuXG4gdGhyb3ctaW52YWxpZC11bmljb2RlLWVzY2FwZVxuIFtyZHIgY2hdXG4gKHJlYWRlci1lcnJvciByZHIgXCJJbnZhbGlkIHVuaWNvZGUgZXNjYXBlOiBcXFxcdVwiIGNoIFwiLlwiKSlcbiJ9IHs6c3ltIHRocm93LWR1cC1rZXlzLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3JkciBraW5kIGtzXSl9LCA6c291cmNlICIoZGVmblxuIHRocm93LWR1cC1rZXlzXG4gW3JkciBraW5kIGtzXVxuIChyZWFkZXItZXJyb3JcbiAgcmRyXG4gIChkdXBsaWNhdGUta2V5cy1lcnJvclxuICAgKHN0ciAocy9jYXBpdGFsaXplIChuYW1lIGtpbmQpKSBcIiBsaXRlcmFsIGNvbnRhaW5zIGR1cGxpY2F0ZSBrZXlcIilcbiAgIGtzKSkpXG4ifSB7OnN5bSB0aHJvdy1iYWQtbnMsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbcmRyIG5zLW5hbWVdKX0sIDpzb3VyY2UgIihkZWZuXG4gdGhyb3ctYmFkLW5zXG4gW3JkciBucy1uYW1lXVxuIChyZWFkZXItZXJyb3JcbiAgcmRyXG4gIFwiSW52YWxpZCB2YWx1ZSB1c2VkIGFzIG5hbWVzcGFjZSBpbiBuYW1lc3BhY2VkIG1hcDogXCJcbiAgbnMtbmFtZVxuICBcIi5cIikpXG4ifSB7OnN5bSB0aHJvdy11bmtub3duLXJlYWRlci10YWcsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbcmRyIHRhZ10pfSwgOnNvdXJjZSAiKGRlZm5cbiB0aHJvdy11bmtub3duLXJlYWRlci10YWdcbiBbcmRyIHRhZ11cbiAocmVhZGVyLWVycm9yIHJkciBcIk5vIHJlYWRlciBmdW5jdGlvbiBmb3IgdGFnIFwiIChpL2luc3BlY3QgdGFnKSBcIi5cIikpXG4ifSB7OnN5bSB0aHJvdy1lb2YtYXQtZGlzcGF0Y2gsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbcmRyXSl9LCA6c291cmNlICIoZGVmblxuIHRocm93LWVvZi1hdC1kaXNwYXRjaFxuIFtyZHJdXG4gKGVvZi1lcnJvciByZHIgXCJVbmV4cGVjdGVkIEVPRiB3aGlsZSByZWFkaW5nIGRpc3BhdGNoIGNoYXJhY3Rlci5cIikpXG4ifSB7OnN5bSB0aHJvdy1iYWQtbWV0YWRhdGEtdGFyZ2V0LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3JkciB0YXJnZXRdKX0sIDpzb3VyY2UgIihkZWZuXG4gdGhyb3ctYmFkLW1ldGFkYXRhLXRhcmdldFxuIFtyZHIgdGFyZ2V0XVxuIChyZWFkZXItZXJyb3JcbiAgcmRyXG4gIFwiTWV0YWRhdGEgY2FuIG5vdCBiZSBhcHBsaWVkIHRvIFwiXG4gIChpL2luc3BlY3QgdGFyZ2V0KVxuICBcIi4gXCJcbiAgXCJNZXRhZGF0YSBjYW4gb25seSBiZSBhcHBsaWVkIHRvIElNZXRhcy5cIikpXG4ifSB7OnN5bSB0aHJvdy1pbnZhbGlkLW51bWJlciwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtyZHIgdG9rZW5dKX0sIDpzb3VyY2UgIihkZWZuXG4gdGhyb3ctaW52YWxpZC1udW1iZXJcbiBbcmRyIHRva2VuXVxuIChyZWFkZXItZXJyb3IgcmRyIFwiSW52YWxpZCBudW1iZXI6IFwiIHRva2VuIFwiLlwiKSlcbiJ9IHs6c3ltIHJlYWRlci1lcnJvciwgOm1ldGEgezpkb2MgIlRocm93cyBhbiBFeGNlcHRpb25JbmZvIHdpdGggdGhlIGdpdmVuIG1lc3NhZ2UuXG4gICBJZiByZHIgaXMgYW4gSW5kZXhpbmdSZWFkZXIsIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gYWJvdXQgY29sdW1uIGFuZCBsaW5lIG51bWJlciBpcyBwcm92aWRlZCIsIDphcmdsaXN0cyAoW3JkciAmIG1zZ3NdKX0sIDpzb3VyY2UgIihkZWZuXG4gcmVhZGVyLWVycm9yXG4gXCJUaHJvd3MgYW4gRXhjZXB0aW9uSW5mbyB3aXRoIHRoZSBnaXZlbiBtZXNzYWdlLlxcbiAgIElmIHJkciBpcyBhbiBJbmRleGluZ1JlYWRlciwgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBhYm91dCBjb2x1bW4gYW5kIGxpbmUgbnVtYmVyIGlzIHByb3ZpZGVkXCJcbiBbcmRyICYgbXNnc11cbiAodGhyb3ctZXggcmRyIDpyZWFkZXItZXJyb3IgKGFwcGx5IHN0ciBtc2dzKSkpXG4ifSB7OnN5bSB0aHJvdy1pbnZhbGlkLXVuaWNvZGUtbGl0ZXJhbCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtyZHIgdG9rZW5dKX0sIDpzb3VyY2UgIihkZWZuXG4gdGhyb3ctaW52YWxpZC11bmljb2RlLWxpdGVyYWxcbiBbcmRyIHRva2VuXVxuICh0aHJvd1xuICAoaWxsZWdhbC1hcmctZXJyb3IgcmRyIFwiSW52YWxpZCB1bmljb2RlIGxpdGVyYWw6IFxcXFxcIiB0b2tlbiBcIi5cIikpKVxuIn0gezpzeW0gdGhyb3ctbnMtbWFwLW5vLW1hcCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtyZHIgbnMtbmFtZV0pfSwgOnNvdXJjZSAiKGRlZm5cbiB0aHJvdy1ucy1tYXAtbm8tbWFwXG4gW3JkciBucy1uYW1lXVxuIChyZWFkZXItZXJyb3JcbiAgcmRyXG4gIFwiTmFtZXNwYWNlZCBtYXAgd2l0aCBuYW1lc3BhY2UgXCJcbiAgbnMtbmFtZVxuICBcIiBkb2VzIG5vdCBzcGVjaWZ5IGEgbWFwLlwiKSlcbiJ9IHs6c3ltIHRocm93LXVuc3VwcG9ydGVkLWNoYXJhY3RlciwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtyZHIgdG9rZW5dKX0sIDpzb3VyY2UgIihkZWZuXG4gdGhyb3ctdW5zdXBwb3J0ZWQtY2hhcmFjdGVyXG4gW3JkciB0b2tlbl1cbiAocmVhZGVyLWVycm9yIHJkciBcIlVuc3VwcG9ydGVkIGNoYXJhY3RlcjogXCIgdG9rZW4gXCIuXCIpKVxuIn0gezpzeW0gdGhyb3ctZmVhdHVyZS1ub3Qta2V5d29yZCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtyZHIgZmVhdHVyZV0pfSwgOnNvdXJjZSAiKGRlZm5cbiB0aHJvdy1mZWF0dXJlLW5vdC1rZXl3b3JkXG4gW3JkciBmZWF0dXJlXVxuIChyZWFkZXItZXJyb3JcbiAgcmRyXG4gIFwiRmVhdHVyZSBjYW5ub3QgYmUgXCJcbiAgKGkvaW5zcGVjdCBmZWF0dXJlKVxuICBcIiBGZWF0dXJlcyBtdXN0IGJlIGtleXdvcmRzLlwiKSlcbiJ9IHs6c3ltIHRocm93LWVvZi1kZWxpbWl0ZWQsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIFtbcmRyIGtpbmQgY29sdW1uIGxpbmVdIFtyZHIga2luZCBsaW5lIGNvbHVtbiBuXV19LCA6c291cmNlICIoZGVmblxuIHRocm93LWVvZi1kZWxpbWl0ZWRcbiAoW3JkciBraW5kIGNvbHVtbiBsaW5lXVxuICAodGhyb3ctZW9mLWRlbGltaXRlZCByZHIga2luZCBsaW5lIGNvbHVtbiBuaWwpKVxuIChbcmRyIGtpbmQgbGluZSBjb2x1bW4gbl1cbiAgKGVvZi1lcnJvclxuICAgcmRyXG4gICBcIlVuZXhwZWN0ZWQgRU9GIHdoaWxlIHJlYWRpbmcgXCJcbiAgIChpZiBuIChzdHIgXCJpdGVtIFwiIG4gXCIgb2YgXCIpKVxuICAgKG5hbWUga2luZClcbiAgIChpZiBsaW5lIChzdHIgXCIsIHN0YXJ0aW5nIGF0IGxpbmUgXCIgbGluZSBcIiBhbmQgY29sdW1uIFwiIGNvbHVtbikpXG4gICBcIi5cIikpKVxuIn0gezpzeW0gdGhyb3ctZW9mLWluLWNoYXJhY3RlciwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtyZHJdKX0sIDpzb3VyY2UgIihkZWZuXG4gdGhyb3ctZW9mLWluLWNoYXJhY3RlclxuIFtyZHJdXG4gKGVvZi1lcnJvciByZHIgXCJVbmV4cGVjdGVkIEVPRiB3aGlsZSByZWFkaW5nIGNoYXJhY3Rlci5cIikpXG4ifSB7OnN5bSB0aHJvdy1iYWQtY2hhciwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtyZHIga2luZCBjaF0pfSwgOnNvdXJjZSAiKGRlZm5cbiB0aHJvdy1iYWQtY2hhclxuIFtyZHIga2luZCBjaF1cbiAocmVhZGVyLWVycm9yXG4gIHJkclxuICBcIkludmFsaWQgY2hhcmFjdGVyOiBcIlxuICBjaFxuICBcIiBmb3VuZCB3aGlsZSByZWFkaW5nIFwiXG4gIChuYW1lIGtpbmQpXG4gIFwiLlwiKSlcbiJ9IHs6c3ltIGVvZi1lcnJvciwgOm1ldGEgezpkb2MgIlRocm93cyBhbiBFeGNlcHRpb25JbmZvIHdpdGggdGhlIGdpdmVuIG1lc3NhZ2UuXG4gICBJZiByZHIgaXMgYW4gSW5kZXhpbmdSZWFkZXIsIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gYWJvdXQgY29sdW1uIGFuZCBsaW5lIG51bWJlciBpcyBwcm92aWRlZCIsIDphcmdsaXN0cyAoW3JkciAmIG1zZ3NdKX0sIDpzb3VyY2UgIihkZWZuXG4gZW9mLWVycm9yXG4gXCJUaHJvd3MgYW4gRXhjZXB0aW9uSW5mbyB3aXRoIHRoZSBnaXZlbiBtZXNzYWdlLlxcbiAgIElmIHJkciBpcyBhbiBJbmRleGluZ1JlYWRlciwgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBhYm91dCBjb2x1bW4gYW5kIGxpbmUgbnVtYmVyIGlzIHByb3ZpZGVkXCJcbiBbcmRyICYgbXNnc11cbiAodGhyb3ctZXggcmRyIDplb2YgKGFwcGx5IHN0ciBtc2dzKSkpXG4ifSB7OnN5bSB0aHJvdy1iYWQtbWV0YWRhdGEsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbcmRyIHhdKX0sIDpzb3VyY2UgIihkZWZuXG4gdGhyb3ctYmFkLW1ldGFkYXRhXG4gW3JkciB4XVxuIChyZWFkZXItZXJyb3JcbiAgcmRyXG4gIFwiTWV0YWRhdGEgY2Fubm90IGJlIFwiXG4gIChpL2luc3BlY3QgeClcbiAgXCIuIE1ldGFkYXRhIG11c3QgYmUgYSBTeW1ib2wsIEtleXdvcmQsIFN0cmluZyBvciBNYXAuXCIpKVxuIn0gezpzeW0gdGhyb3ctZW9mLXJlYWRpbmcsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbcmRyIGtpbmQgJiBzdGFydF0pfSwgOnNvdXJjZSAiKGRlZm5cbiB0aHJvdy1lb2YtcmVhZGluZ1xuIFtyZHIga2luZCAmIHN0YXJ0XVxuIChsZXRcbiAgW2luaXQgKGNhc2Uga2luZCA6cmVnZXggXCIjXFxcIlwiIDpzdHJpbmcgXFxcIildXG4gIChlb2YtZXJyb3JcbiAgIHJkclxuICAgXCJVbmV4cGVjdGVkIEVPRiByZWFkaW5nIFwiXG4gICAobmFtZSBraW5kKVxuICAgXCIgc3RhcnRpbmcgXCJcbiAgIChhcHBseSBzdHIgaW5pdCBzdGFydClcbiAgIFwiLlwiKSkpXG4ifSB7OnN5bSB0aHJvdy1lb2YtZXJyb3IsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbcmRyIGxpbmVdKX0sIDpzb3VyY2UgIihkZWZuXG4gdGhyb3ctZW9mLWVycm9yXG4gW3JkciBsaW5lXVxuIChpZlxuICBsaW5lXG4gIChlb2YtZXJyb3IgcmRyIFwiRU9GIHdoaWxlIHJlYWRpbmcsIHN0YXJ0aW5nIGF0IGxpbmUgXCIgbGluZSBcIi5cIilcbiAgKGVvZi1lcnJvciByZHIgXCJFT0Ygd2hpbGUgcmVhZGluZy5cIikpKVxuIn0gezpzeW0gaWxsZWdhbC1hcmctZXJyb3IsIDptZXRhIHs6ZG9jICJUaHJvd3MgYW4gRXhjZXB0aW9uSW5mbyB3aXRoIHRoZSBnaXZlbiBtZXNzYWdlLlxuICAgSWYgcmRyIGlzIGFuIEluZGV4aW5nUmVhZGVyLCBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIGFib3V0IGNvbHVtbiBhbmQgbGluZSBudW1iZXIgaXMgcHJvdmlkZWQiLCA6YXJnbGlzdHMgKFtyZHIgJiBtc2dzXSl9LCA6c291cmNlICIoZGVmblxuIGlsbGVnYWwtYXJnLWVycm9yXG4gXCJUaHJvd3MgYW4gRXhjZXB0aW9uSW5mbyB3aXRoIHRoZSBnaXZlbiBtZXNzYWdlLlxcbiAgIElmIHJkciBpcyBhbiBJbmRleGluZ1JlYWRlciwgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBhYm91dCBjb2x1bW4gYW5kIGxpbmUgbnVtYmVyIGlzIHByb3ZpZGVkXCJcbiBbcmRyICYgbXNnc11cbiAodGhyb3ctZXggcmRyIDppbGxlZ2FsLWFyZ3VtZW50IChhcHBseSBzdHIgbXNncykpKVxuIn0gezpzeW0gdGhyb3ctaW52YWxpZC1vY3RhbC1sZW4sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbcmRyIHRva2VuXSl9LCA6c291cmNlICIoZGVmblxuIHRocm93LWludmFsaWQtb2N0YWwtbGVuXG4gW3JkciB0b2tlbl1cbiAocmVhZGVyLWVycm9yXG4gIHJkclxuICBcIkludmFsaWQgb2N0YWwgZXNjYXBlIHNlcXVlbmNlIGluIGEgY2hhcmFjdGVyIGxpdGVyYWw6XCJcbiAgdG9rZW5cbiAgXCIuIE9jdGFsIGVzY2FwZSBzZXF1ZW5jZXMgbXVzdCBiZSAzIG9yIGZld2VyIGRpZ2l0cy5cIikpXG4ifSB7OnN5bSB0aHJvdy1pbnZhbGlkLXVuaWNvZGUtZGlnaXQsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbcmRyIGNoXSl9LCA6c291cmNlICIoZGVmblxuIHRocm93LWludmFsaWQtdW5pY29kZS1kaWdpdFxuIFtyZHIgY2hdXG4gKGlsbGVnYWwtYXJnLWVycm9yIHJkciBcIkludmFsaWQgZGlnaXQgXCIgY2ggXCIgaW4gdW5pY29kZSBjaGFyYWN0ZXIuXCIpKVxuIn0gezpzeW0gdGhyb3ctaW52YWxpZC11bmljb2RlLWRpZ2l0LWluLXRva2VuLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3JkciBjaCB0b2tlbl0pfSwgOnNvdXJjZSAiKGRlZm5cbiB0aHJvdy1pbnZhbGlkLXVuaWNvZGUtZGlnaXQtaW4tdG9rZW5cbiBbcmRyIGNoIHRva2VuXVxuIChpbGxlZ2FsLWFyZy1lcnJvclxuICByZHJcbiAgXCJJbnZhbGlkIGRpZ2l0IFwiXG4gIGNoXG4gIFwiIGluIHVuaWNvZGUgY2hhcmFjdGVyIFxcXFxcIlxuICB0b2tlblxuICBcIi5cIikpXG4ifSB7OnN5bSB0aHJvdy1pbnZhbGlkLXVuaWNvZGUtbGVuLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3JkciBhY3R1YWwgZXhwZWN0ZWRdKX0sIDpzb3VyY2UgIihkZWZuXG4gdGhyb3ctaW52YWxpZC11bmljb2RlLWxlblxuIFtyZHIgYWN0dWFsIGV4cGVjdGVkXVxuIChpbGxlZ2FsLWFyZy1lcnJvclxuICByZHJcbiAgXCJJbnZhbGlkIHVuaWNvZGUgbGl0ZXJhbC4gVW5pY29kZSBsaXRlcmFscyBzaG91bGQgYmUgXCJcbiAgZXhwZWN0ZWRcbiAgXCJjaGFyYWN0ZXJzIGxvbmcuICBcIlxuICBcInZhbHVlIHN1cHBsZWQgaXMgXCJcbiAgYWN0dWFsXG4gIFwiY2hhcmFjdGVycyBsb25nLlwiKSlcbiJ9IHs6c3ltIHRocm93LXNpbmdsZS1jb2xvbiwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtyZHJdKX0sIDpzb3VyY2UgIihkZWZuXG4gdGhyb3ctc2luZ2xlLWNvbG9uXG4gW3Jkcl1cbiAocmVhZGVyLWVycm9yIHJkciBcIkEgc2luZ2xlIGNvbG9uIGlzIG5vdCBhIHZhbGlkIGtleXdvcmQuXCIpKVxuIn0gezpzeW0gdGhyb3ctb2RkLW1hcCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtyZHIgbGluZSBjb2wgZWxlbWVudHNdKX0sIDpzb3VyY2UgIihkZWZuXG4gdGhyb3ctb2RkLW1hcFxuIFtyZHIgbGluZSBjb2wgZWxlbWVudHNdXG4gKHJlYWRlci1lcnJvclxuICByZHJcbiAgXCJUaGUgbWFwIGxpdGVyYWwgc3RhcnRpbmcgd2l0aCBcIlxuICAoaS9pbnNwZWN0IChmaXJzdCBlbGVtZW50cykpXG4gIChpZiBsaW5lIChzdHIgXCIgb24gbGluZSBcIiBsaW5lIFwiIGNvbHVtbiBcIiBjb2wpKVxuICBcIiBjb250YWlucyBcIlxuICAoY291bnQgZWxlbWVudHMpXG4gIFwiIGZvcm0ocykuIE1hcCBsaXRlcmFscyBtdXN0IGNvbnRhaW4gYW4gZXZlbiBudW1iZXIgb2YgZm9ybXMuXCIpKVxuIn0gezpzeW0gdGhyb3ctYmFkLW9jdGFsLW51bWJlciwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtyZHJdKX0sIDpzb3VyY2UgIihkZWZuXG4gdGhyb3ctYmFkLW9jdGFsLW51bWJlclxuIFtyZHJdXG4gKHJlYWRlci1lcnJvciByZHIgXCJPY3RhbCBlc2NhcGUgc2VxdWVuY2UgbXVzdCBiZSBpbiByYW5nZSBbMCwgMzc3XS5cIikpXG4ifSB7OnN5bSB0aHJvdy1iYWQtcmVhZGVyLXRhZywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtyZHIgdGFnXSl9LCA6c291cmNlICIoZGVmblxuIHRocm93LWJhZC1yZWFkZXItdGFnXG4gW3JkciB0YWddXG4gKHJlYWRlci1lcnJvclxuICByZHJcbiAgXCJJbnZhbGlkIHJlYWRlciB0YWc6IFwiXG4gIChpL2luc3BlY3QgdGFnKVxuICBcIi4gUmVhZGVyIHRhZ3MgbXVzdCBiZSBzeW1ib2xzLlwiKSlcbiJ9IHs6c3ltIHRocm93LXVubWF0Y2gtZGVsaW1pdGVyLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3JkciBjaF0pfSwgOnNvdXJjZSAiKGRlZm5cbiB0aHJvdy11bm1hdGNoLWRlbGltaXRlclxuIFtyZHIgY2hdXG4gKHJlYWRlci1lcnJvciByZHIgXCJVbm1hdGNoZWQgZGVsaW1pdGVyIFwiIGNoIFwiLlwiKSlcbiJ9IHs6c3ltIHRocm93LWludmFsaWQtY2hhcmFjdGVyLWxpdGVyYWwsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbcmRyIHRva2VuXSl9LCA6c291cmNlICIoZGVmblxuIHRocm93LWludmFsaWQtY2hhcmFjdGVyLWxpdGVyYWxcbiBbcmRyIHRva2VuXVxuIChyZWFkZXItZXJyb3IgcmRyIFwiSW52YWxpZCBjaGFyYWN0ZXIgbGl0ZXJhbCBcXFxcdVwiIHRva2VuIFwiLlwiKSlcbiJ9IHs6c3ltIHRocm93LWludmFsaWQtdW5pY29kZS1jaGFyLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3JkciB0b2tlbl0pfSwgOnNvdXJjZSAiKGRlZm5cbiB0aHJvdy1pbnZhbGlkLXVuaWNvZGUtY2hhclxuIFtyZHIgdG9rZW5dXG4gKHJlYWRlci1lcnJvciByZHIgXCJJbnZhbGlkIHVuaWNvZGUgY2hhcmFjdGVyIFxcXFxcIiB0b2tlbiBcIi5cIikpXG4ifSB7OnN5bSB0aHJvdy1iYWQtZXNjYXBlLWNoYXIsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbcmRyIGNoXSl9LCA6c291cmNlICIoZGVmblxuIHRocm93LWJhZC1lc2NhcGUtY2hhclxuIFtyZHIgY2hdXG4gKHJlYWRlci1lcnJvciByZHIgXCJVbnN1cHBvcnRlZCBlc2NhcGUgY2hhcmFjdGVyOiBcXFxcXCIgY2ggXCIuXCIpKVxuIn0gezpzeW0gdGhyb3ctZW9mLWF0LXN0YXJ0LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3JkciBraW5kXSl9LCA6c291cmNlICIoZGVmblxuIHRocm93LWVvZi1hdC1zdGFydFxuIFtyZHIga2luZF1cbiAoZW9mLWVycm9yXG4gIHJkclxuICBcIlVuZXhwZWN0ZWQgRU9GIHdoaWxlIHJlYWRpbmcgc3RhcnQgb2YgXCJcbiAgKG5hbWUga2luZClcbiAgXCIuXCIpKVxuIn0gezpzeW0gdGhyb3ctaW52YWxpZCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtyZHIga2luZCB0b2tlbl0pfSwgOnNvdXJjZSAiKGRlZm5cbiB0aHJvdy1pbnZhbGlkXG4gW3JkciBraW5kIHRva2VuXVxuIChyZWFkZXItZXJyb3IgcmRyIFwiSW52YWxpZCBcIiAobmFtZSBraW5kKSBcIjogXCIgdG9rZW4gXCIuXCIpKVxuIn0pLCBjbGpzLmpzICh7OnN5bSAqbG9hZC1mbiosIDptZXRhIHs6ZG9jICJFYWNoIHJ1bnRpbWUgZW52aXJvbm1lbnQgcHJvdmlkZXMgYSBkaWZmZXJlbnQgd2F5IHRvIGxvYWQgYSBsaWJyYXJ5LlxuICBXaGF0ZXZlciBmdW5jdGlvbiAqbG9hZC1mbiogaXMgYm91bmQgdG8gd2lsbCBiZSBwYXNzZWQgdHdvIGFyZ3VtZW50cyAtIGFcbiAgbWFwIGFuZCBhIGNhbGxiYWNrIGZ1bmN0aW9uOiBUaGUgbWFwIHdpbGwgaGF2ZSB0aGUgZm9sbG93aW5nIGtleXM6XG5cbiAgOm5hbWUgICAtIHRoZSBuYW1lIG9mIHRoZSBsaWJyYXJ5IChhIHN5bWJvbClcbiAgOm1hY3JvcyAtIG1vZGlmaWVyIHNpZ25hbGluZyBhIG1hY3JvcyBuYW1lc3BhY2UgbG9hZFxuICA6cGF0aCAgIC0gbXVuZ2VkIHJlbGF0aXZlIGxpYnJhcnkgcGF0aCAoYSBzdHJpbmcpXG5cbiAgSXQgaXMgdXAgdG8gdGhlIGltcGxlbWVudG9yIHRvIGNvcnJlY3RseSByZXNvbHZlIHRoZSBjb3JyZXNwb25kaW5nIC5jbGpzLFxuICAuY2xqYywgb3IgLmpzIHJlc291cmNlICh0aGUgb3JkZXIgbXVzdCBiZSByZXNwZWN0ZWQpLiBJZiA6bWFjcm9zIGlzIHRydWVcbiAgcmVzb2x1dGlvbiBzaG91bGQgb25seSBjb25zaWRlciAuY2xqIG9yIC5jbGpjIHJlc291cmNlcyAodGhlIG9yZGVyIG11c3QgYmVcbiAgcmVzcGVjdGVkKS4gVXBvbiByZXNvbHV0aW9uIHRoZSBjYWxsYmFjayBzaG91bGQgYmUgaW52b2tlZCB3aXRoIGEgbWFwXG4gIGNvbnRhaW5pbmcgdGhlIGZvbGxvd2luZyBrZXlzOlxuXG4gIDpsYW5nICAgICAgIC0gdGhlIGxhbmd1YWdlLCA6Y2xqIG9yIDpqc1xuICA6c291cmNlICAgICAtIHRoZSBzb3VyY2Ugb2YgdGhlIGxpYnJhcnkgKGEgc3RyaW5nKVxuICA6ZmlsZSAgICAgICAtIG9wdGlvbmFsLCB0aGUgZmlsZSBwYXRoLCBpdCB3aWxsIGJlIGFkZGVkIHRvIEFTVCdzIDpmaWxlIGtleXdvcmRcbiAgICAgICAgICAgICAgICAoYnV0IG5vdCBpbiA6bWV0YSlcbiAgOmNhY2hlICAgICAgLSBvcHRpb25hbCwgaWYgYSA6Y2xqIG5hbWVzcGFjZSBoYXMgYmVlbiBwcmVjb21waWxlZCB0byA6anMsIGNhblxuICAgICAgICAgICAgICAgIGdpdmUgYW4gYW5hbHlzaXMgY2FjaGUgZm9yIGZhc3RlciBsb2Fkcy5cbiAgOnNvdXJjZS1tYXAgLSBvcHRpb25hbCwgaWYgYSA6Y2xqIG5hbWVzcGFjZSBoYXMgYmVlbiBwcmVjb21waWxlZCB0byA6anMsIGNhblxuICAgICAgICAgICAgICAgIGdpdmUgYSBWMyBzb3VyY2UgbWFwIEpTT05cblxuICBJZiB0aGUgcmVzb3VyY2UgY291bGQgbm90IGJlIHJlc29sdmVkLCB0aGUgY2FsbGJhY2sgc2hvdWxkIGJlIGludm9rZWQgd2l0aFxuICBuaWwuIn0sIDpzb3VyY2UgIihkZWZvbmNlICpsb2FkLWZuKiAoZm4gW20gY2JdICh0aHJvdyAoanMvRXJyb3IuIFwiTm8gKmxvYWQtZm4qIHNldFwiKSkpKVxuIn0gezpzeW0gZXZhbCwgOm1ldGEgezpkb2MgIkV2YWx1YXRlIGEgc2luZ2xlIENsb2p1cmVTY3JpcHQgZm9ybS4gVGhlIHBhcmFtZXRlcnM6XG5cbiAgIHN0YXRlIChhdG9tKVxuICAgICB0aGUgY29tcGlsZXIgc3RhdGVcblxuICAgZm9ybSAocy1leHByKVxuICAgICB0aGUgQ2xvanVyZVNjcmlwdCBzb3VyY2VcblxuICAgb3B0cyAobWFwKVxuICAgICBjb21waWxhdGlvbiBvcHRpb25zLlxuXG4gICAgICA6ZXZhbCAgICAgICAgICAgICAtIGV2YWwgZnVuY3Rpb24gdG8gaW52b2tlLCBzZWUgKmV2YWwtZm4qXG4gICAgICA6bG9hZCAgICAgICAgICAgICAtIGxpYnJhcnkgcmVzb2x1dGlvbiBmdW5jdGlvbiwgc2VlICpsb2FkLWZuKlxuICAgICAgOnNvdXJjZS1tYXAgICAgICAgLSBzZXQgdG8gdHJ1ZSB0byBnZW5lcmF0ZSBpbmxpbmUgc291cmNlIG1hcCBpbmZvcm1hdGlvblxuICAgICAgOmRlZi1lbWl0cy12YXIgICAgLSBzZXRzIHdoZXRoZXIgZGVmIChhbmQgZGVyaXZlZCkgZm9ybXMgcmV0dXJuIGVpdGhlciBhIFZhclxuICAgICAgICAgICAgICAgICAgICAgICAgICAoaWYgc2V0IHRvIHRydWUpIG9yIHRoZSBkZWYgaW5pdCB2YWx1ZSAoaWYgZmFsc2UpLiBEZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlzIGZhbHNlLlxuICAgICAgOmNoZWNrZWQtYXJyYXlzICAgLSBpZiA6d2FybiBvciA6ZXJyb3IsIGNoZWNrcyBpbmZlcnJlZCB0eXBlcyBhbmQgdmFsdWVzIHBhc3NlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICB0byBhZ2V0L2FzZXQuIExvZ3MgZm9yIGluY29ycmVjdCB2YWx1ZXMgaWYgOndhcm4sIHRocm93cyBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICA6ZXJyb3IuIERlZmF1bHRzIHRvIGZhbHNlLlxuICAgICAgOnN0YXRpYy1mbnMgICAgICAgLSBlbXBsb3kgc3RhdGljIGRpc3BhdGNoIHRvIHNwZWNpZmljIGZ1bmN0aW9uIGFyaXRpZXMgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZW1pdHRlZCBKYXZhU2NyaXB0LCBhcyBvcHBvc2VkIHRvIG1ha2luZyB1c2Ugb2YgdGhlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGBjYWxsYCBjb25zdHJ1Y3QuIERlZmF1bHRzIHRvIGZhbHNlLlxuICAgICAgOmZuLWludm9rZS1kaXJlY3QgLSBpZiBgdHJ1ZWAsIGRvZXMgbm90IGdlbmVyYXRlIGAuY2FsbChudWxsLi4uKWAgY2FsbHMgZm9yXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHVua25vd24gZnVuY3Rpb25zLCBidXQgaW5zdGVhZCBkaXJlY3QgaW52b2tlcyB2aWFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYGYoYTAsYTEuLi4pYC4gRGVmYXVsdHMgdG8gYGZhbHNlYC5cbiAgICAgIDp0YXJnZXQgICAgICAgICAgIC0gdXNlIGA6bm9kZWpzYCBpZiB0YXJnZXRpbmcgTm9kZS5qcy4gVGFrZXMgbm8gb3RoZXIgb3B0aW9uc1xuICAgICAgICAgICAgICAgICAgICAgICAgICBhdCB0aGUgbW9tZW50LlxuICAgICAgOm5zICAgICAgICAgICAgICAgLSBvcHRpb25hbCwgdGhlIG5hbWVzcGFjZSBpbiB3aGljaCB0byBldmFsdWF0ZSB0aGUgc291cmNlLlxuICAgICAgOnZlcmJvc2UgICAgICAgICAgLSBvcHRpb25hbCwgZW1pdCBkZXRhaWxzIGZyb20gY29tcGlsZXIgYWN0aXZpdHkuIERlZmF1bHRzIHRvXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlLlxuICAgICAgOmNvbnRleHQgICAgICAgICAgLSBvcHRpb25hbCwgc2V0cyB0aGUgY29udGV4dCBmb3IgdGhlIHNvdXJjZS4gUG9zc2libGUgdmFsdWVzXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGFyZSBgOmV4cHJgLCBgOnN0YXRlbWVudGAgYW5kIGA6cmV0dXJuYC4gRGVmYXVsdHMgdG9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgYDpzdGF0ZW1lbnRgLlxuXG4gICBjYiAoZnVuY3Rpb24pXG4gICAgIGNhbGxiYWNrLCB3aWxsIGJlIGludm9rZWQgd2l0aCBhIG1hcC4gSWYgc3VjY2Vzc2Z1bCB0aGUgbWFwIHdpbGwgY29udGFpblxuICAgICBhIGtleSA6dmFsdWUgd2l0aCB0aGUgcmVzdWx0IG9mIGV2YWx1dGlvbi4gSWYgdW5zdWNjZXNzZnVsIHRoZSBtYXAgd2lsbFxuICAgICBjb250YWluIGEga2V5IDplcnJvciB3aXRoIGFuIGV4LWluZm8gaW5zdGFuY2UgZGVzY3JpYmluZyB0aGUgY2F1c2Ugb2ZcbiAgICAgZmFpbHVyZS4iLCA6YXJnbGlzdHMgW1tzdGF0ZSBmb3JtIGNiXSBbc3RhdGUgZm9ybSBvcHRzIGNiXV19LCA6c291cmNlICIoZGVmblxuIGV2YWxcbiBcIkV2YWx1YXRlIGEgc2luZ2xlIENsb2p1cmVTY3JpcHQgZm9ybS4gVGhlIHBhcmFtZXRlcnM6XFxuXFxuICAgc3RhdGUgKGF0b20pXFxuICAgICB0aGUgY29tcGlsZXIgc3RhdGVcXG5cXG4gICBmb3JtIChzLWV4cHIpXFxuICAgICB0aGUgQ2xvanVyZVNjcmlwdCBzb3VyY2VcXG5cXG4gICBvcHRzIChtYXApXFxuICAgICBjb21waWxhdGlvbiBvcHRpb25zLlxcblxcbiAgICAgIDpldmFsICAgICAgICAgICAgIC0gZXZhbCBmdW5jdGlvbiB0byBpbnZva2UsIHNlZSAqZXZhbC1mbipcXG4gICAgICA6bG9hZCAgICAgICAgICAgICAtIGxpYnJhcnkgcmVzb2x1dGlvbiBmdW5jdGlvbiwgc2VlICpsb2FkLWZuKlxcbiAgICAgIDpzb3VyY2UtbWFwICAgICAgIC0gc2V0IHRvIHRydWUgdG8gZ2VuZXJhdGUgaW5saW5lIHNvdXJjZSBtYXAgaW5mb3JtYXRpb25cXG4gICAgICA6ZGVmLWVtaXRzLXZhciAgICAtIHNldHMgd2hldGhlciBkZWYgKGFuZCBkZXJpdmVkKSBmb3JtcyByZXR1cm4gZWl0aGVyIGEgVmFyXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAoaWYgc2V0IHRvIHRydWUpIG9yIHRoZSBkZWYgaW5pdCB2YWx1ZSAoaWYgZmFsc2UpLiBEZWZhdWx0XFxuICAgICAgICAgICAgICAgICAgICAgICAgICBpcyBmYWxzZS5cXG4gICAgICA6Y2hlY2tlZC1hcnJheXMgICAtIGlmIDp3YXJuIG9yIDplcnJvciwgY2hlY2tzIGluZmVycmVkIHR5cGVzIGFuZCB2YWx1ZXMgcGFzc2VkXFxuICAgICAgICAgICAgICAgICAgICAgICAgICB0byBhZ2V0L2FzZXQuIExvZ3MgZm9yIGluY29ycmVjdCB2YWx1ZXMgaWYgOndhcm4sIHRocm93cyBpZlxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgOmVycm9yLiBEZWZhdWx0cyB0byBmYWxzZS5cXG4gICAgICA6c3RhdGljLWZucyAgICAgICAtIGVtcGxveSBzdGF0aWMgZGlzcGF0Y2ggdG8gc3BlY2lmaWMgZnVuY3Rpb24gYXJpdGllcyBpblxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZW1pdHRlZCBKYXZhU2NyaXB0LCBhcyBvcHBvc2VkIHRvIG1ha2luZyB1c2Ugb2YgdGhlXFxuICAgICAgICAgICAgICAgICAgICAgICAgICBgY2FsbGAgY29uc3RydWN0LiBEZWZhdWx0cyB0byBmYWxzZS5cXG4gICAgICA6Zm4taW52b2tlLWRpcmVjdCAtIGlmIGB0cnVlYCwgZG9lcyBub3QgZ2VuZXJhdGUgYC5jYWxsKG51bGwuLi4pYCBjYWxscyBmb3JcXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHVua25vd24gZnVuY3Rpb25zLCBidXQgaW5zdGVhZCBkaXJlY3QgaW52b2tlcyB2aWFcXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGBmKGEwLGExLi4uKWAuIERlZmF1bHRzIHRvIGBmYWxzZWAuXFxuICAgICAgOnRhcmdldCAgICAgICAgICAgLSB1c2UgYDpub2RlanNgIGlmIHRhcmdldGluZyBOb2RlLmpzLiBUYWtlcyBubyBvdGhlciBvcHRpb25zXFxuICAgICAgICAgICAgICAgICAgICAgICAgICBhdCB0aGUgbW9tZW50LlxcbiAgICAgIDpucyAgICAgICAgICAgICAgIC0gb3B0aW9uYWwsIHRoZSBuYW1lc3BhY2UgaW4gd2hpY2ggdG8gZXZhbHVhdGUgdGhlIHNvdXJjZS5cXG4gICAgICA6dmVyYm9zZSAgICAgICAgICAtIG9wdGlvbmFsLCBlbWl0IGRldGFpbHMgZnJvbSBjb21waWxlciBhY3Rpdml0eS4gRGVmYXVsdHMgdG9cXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlLlxcbiAgICAgIDpjb250ZXh0ICAgICAgICAgIC0gb3B0aW9uYWwsIHNldHMgdGhlIGNvbnRleHQgZm9yIHRoZSBzb3VyY2UuIFBvc3NpYmxlIHZhbHVlc1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYXJlIGA6ZXhwcmAsIGA6c3RhdGVtZW50YCBhbmQgYDpyZXR1cm5gLiBEZWZhdWx0cyB0b1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYDpzdGF0ZW1lbnRgLlxcblxcbiAgIGNiIChmdW5jdGlvbilcXG4gICAgIGNhbGxiYWNrLCB3aWxsIGJlIGludm9rZWQgd2l0aCBhIG1hcC4gSWYgc3VjY2Vzc2Z1bCB0aGUgbWFwIHdpbGwgY29udGFpblxcbiAgICAgYSBrZXkgOnZhbHVlIHdpdGggdGhlIHJlc3VsdCBvZiBldmFsdXRpb24uIElmIHVuc3VjY2Vzc2Z1bCB0aGUgbWFwIHdpbGxcXG4gICAgIGNvbnRhaW4gYSBrZXkgOmVycm9yIHdpdGggYW4gZXgtaW5mbyBpbnN0YW5jZSBkZXNjcmliaW5nIHRoZSBjYXVzZSBvZlxcbiAgICAgZmFpbHVyZS5cIlxuIChbc3RhdGUgZm9ybSBjYl0gKGV2YWwgc3RhdGUgZm9ybSBuaWwgY2IpKVxuIChbc3RhdGUgZm9ybSBvcHRzIGNiXVxuICAoZXZhbCpcbiAgIHs6KmNvbXBpbGVyKiBzdGF0ZSxcbiAgICA6KmRhdGEtcmVhZGVycyogdGFncy8qY2xqcy1kYXRhLXJlYWRlcnMqLFxuICAgIDoqYW5hbHl6ZS1kZXBzKiAoOmFuYWx5emUtZGVwcyBvcHRzIHRydWUpLFxuICAgIDoqY2xqcy1kZXAtc2V0KiBhbmEvKmNsanMtZGVwLXNldCosXG4gICAgOipsb2FkLW1hY3JvcyogKDpsb2FkLW1hY3JvcyBvcHRzIHRydWUpLFxuICAgIDoqbG9hZC1mbiogKG9yICg6bG9hZCBvcHRzKSAqbG9hZC1mbiopLFxuICAgIDoqZXZhbC1mbiogKG9yICg6ZXZhbCBvcHRzKSAqZXZhbC1mbiopfVxuICAgZm9ybVxuICAgb3B0c1xuICAgY2IpKSlcbiJ9IHs6c3ltIGNvbXBpbGUtc3RyLCA6bWV0YSB7OmRvYyAiQ29tcGlsZSBDbG9qdXJlU2NyaXB0IHNvdXJjZSBpbnRvIEphdmFTY3JpcHQuIFRoZSBwYXJhbWV0ZXJzOlxuXG4gICBzdGF0ZSAoYXRvbSlcbiAgICAgdGhlIGNvbXBpbGVyIHN0YXRlXG5cbiAgIHNvdXJjZSAoc3RyaW5nKVxuICAgICB0aGUgQ2xvanVyZVNjcmlwdCBzb3VyY2VcblxuICAgbmFtZSAoc3ltYm9sIG9yIHN0cmluZylcbiAgICAgb3B0aW9uYWwsIHRoZSBuYW1lIG9mIHRoZSBzb3VyY2UgLSB1c2VkIGFzIGtleSBpbiA6c291cmNlLW1hcHNcblxuICAgb3B0cyAobWFwKVxuICAgICBjb21waWxhdGlvbiBvcHRpb25zLlxuXG4gICAgICA6ZXZhbCAgICAgICAgICAgICAtIGV2YWwgZnVuY3Rpb24gdG8gaW52b2tlLCBzZWUgKmV2YWwtZm4qXG4gICAgICA6bG9hZCAgICAgICAgICAgICAtIGxpYnJhcnkgcmVzb2x1dGlvbiBmdW5jdGlvbiwgc2VlICpsb2FkLWZuKlxuICAgICAgOnNvdXJjZS1tYXAgICAgICAgLSBzZXQgdG8gdHJ1ZSB0byBnZW5lcmF0ZSBpbmxpbmUgc291cmNlIG1hcCBpbmZvcm1hdGlvblxuICAgICAgOmRlZi1lbWl0cy12YXIgICAgLSBzZXRzIHdoZXRoZXIgZGVmIChhbmQgZGVyaXZlZCkgZm9ybXMgcmV0dXJuIGVpdGhlciBhIFZhclxuICAgICAgICAgICAgICAgICAgICAgICAgICAoaWYgc2V0IHRvIHRydWUpIG9yIHRoZSBkZWYgaW5pdCB2YWx1ZSAoaWYgZmFsc2UpLiBEZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlzIGZhbHNlLlxuICAgICAgOmNoZWNrZWQtYXJyYXlzICAgLSBpZiA6d2FybiBvciA6ZXJyb3IsIGNoZWNrcyBpbmZlcnJlZCB0eXBlcyBhbmQgdmFsdWVzIHBhc3NlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICB0byBhZ2V0L2FzZXQuIExvZ3MgZm9yIGluY29ycmVjdCB2YWx1ZXMgaWYgOndhcm4sIHRocm93cyBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICA6ZXJyb3IuIERlZmF1bHRzIHRvIGZhbHNlLlxuICAgICAgOnN0YXRpYy1mbnMgICAgICAgLSBlbXBsb3kgc3RhdGljIGRpc3BhdGNoIHRvIHNwZWNpZmljIGZ1bmN0aW9uIGFyaXRpZXMgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZW1pdHRlZCBKYXZhU2NyaXB0LCBhcyBvcHBvc2VkIHRvIG1ha2luZyB1c2Ugb2YgdGhlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGBjYWxsYCBjb25zdHJ1Y3QuIERlZmF1bHRzIHRvIGZhbHNlLlxuICAgICAgOmZuLWludm9rZS1kaXJlY3QgLSBpZiBgdHJ1ZWAsIGRvZXMgbm90IGdlbmVyYXRlIGAuY2FsbChudWxsLi4uKWAgY2FsbHMgZm9yXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHVua25vd24gZnVuY3Rpb25zLCBidXQgaW5zdGVhZCBkaXJlY3QgaW52b2tlcyB2aWFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYGYoYTAsYTEuLi4pYC4gRGVmYXVsdHMgdG8gYGZhbHNlYC5cbiAgICAgIDp0YXJnZXQgICAgICAgICAgIC0gdXNlIGA6bm9kZWpzYCBpZiB0YXJnZXRpbmcgTm9kZS5qcy4gVGFrZXMgbm8gb3RoZXIgb3B0aW9uc1xuICAgICAgICAgICAgICAgICAgICAgICAgICBhdCB0aGUgbW9tZW50LlxuICAgICAgOm5zICAgICAgICAgICAgICAgLSBvcHRpb25hbCwgdGhlIG5hbWVzcGFjZSBpbiB3aGljaCB0byBldmFsdWF0ZSB0aGUgc291cmNlLlxuICAgICAgOnZlcmJvc2UgICAgICAgICAgLSBvcHRpb25hbCwgZW1pdCBkZXRhaWxzIGZyb20gY29tcGlsZXIgYWN0aXZpdHkuIERlZmF1bHRzIHRvXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlLlxuICAgICAgOmNvbnRleHQgICAgICAgICAgLSBvcHRpb25hbCwgc2V0cyB0aGUgY29udGV4dCBmb3IgdGhlIHNvdXJjZS4gUG9zc2libGUgdmFsdWVzXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGFyZSBgOmV4cHJgLCBgOnN0YXRlbWVudGAgYW5kIGA6cmV0dXJuYC4gRGVmYXVsdHMgdG9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgYDpzdGF0ZW1lbnRgLlxuXG4gICBjYiAoZnVuY3Rpb24pXG4gICAgIGNhbGxiYWNrLCB3aWxsIGJlIGludm9rZWQgd2l0aCBhIG1hcC4gSWYgc3VjY2Vzc2Z1bCB0aGUgbWFwIHdpbGwgY29udGFpblxuICAgICBhIGtleSA6dmFsdWUgd2l0aCB0aGUgY29tcGlsYXRpb24gcmVzdWx0IChzdHJpbmcpLiBJZiB1bnN1Y2Nlc3NmdWwgdGhlIG1hcFxuICAgICB3aWxsIGNvbnRhaW4gYSBrZXkgOmVycm9yIHdpdGggYW4gZXgtaW5mbyBpbnN0YW5jZSBkZXNjcmliaW5nIHRoZSBjYXVzZVxuICAgICBvZiBmYWlsdXJlLiIsIDphcmdsaXN0cyBbW3N0YXRlIHNvdXJjZSBjYl0gW3N0YXRlIHNvdXJjZSBuYW1lIGNiXSBbc3RhdGUgc291cmNlIG5hbWUgb3B0cyBjYl1dfSwgOnNvdXJjZSAiKGRlZm5cbiBjb21waWxlLXN0clxuIFwiQ29tcGlsZSBDbG9qdXJlU2NyaXB0IHNvdXJjZSBpbnRvIEphdmFTY3JpcHQuIFRoZSBwYXJhbWV0ZXJzOlxcblxcbiAgIHN0YXRlIChhdG9tKVxcbiAgICAgdGhlIGNvbXBpbGVyIHN0YXRlXFxuXFxuICAgc291cmNlIChzdHJpbmcpXFxuICAgICB0aGUgQ2xvanVyZVNjcmlwdCBzb3VyY2VcXG5cXG4gICBuYW1lIChzeW1ib2wgb3Igc3RyaW5nKVxcbiAgICAgb3B0aW9uYWwsIHRoZSBuYW1lIG9mIHRoZSBzb3VyY2UgLSB1c2VkIGFzIGtleSBpbiA6c291cmNlLW1hcHNcXG5cXG4gICBvcHRzIChtYXApXFxuICAgICBjb21waWxhdGlvbiBvcHRpb25zLlxcblxcbiAgICAgIDpldmFsICAgICAgICAgICAgIC0gZXZhbCBmdW5jdGlvbiB0byBpbnZva2UsIHNlZSAqZXZhbC1mbipcXG4gICAgICA6bG9hZCAgICAgICAgICAgICAtIGxpYnJhcnkgcmVzb2x1dGlvbiBmdW5jdGlvbiwgc2VlICpsb2FkLWZuKlxcbiAgICAgIDpzb3VyY2UtbWFwICAgICAgIC0gc2V0IHRvIHRydWUgdG8gZ2VuZXJhdGUgaW5saW5lIHNvdXJjZSBtYXAgaW5mb3JtYXRpb25cXG4gICAgICA6ZGVmLWVtaXRzLXZhciAgICAtIHNldHMgd2hldGhlciBkZWYgKGFuZCBkZXJpdmVkKSBmb3JtcyByZXR1cm4gZWl0aGVyIGEgVmFyXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAoaWYgc2V0IHRvIHRydWUpIG9yIHRoZSBkZWYgaW5pdCB2YWx1ZSAoaWYgZmFsc2UpLiBEZWZhdWx0XFxuICAgICAgICAgICAgICAgICAgICAgICAgICBpcyBmYWxzZS5cXG4gICAgICA6Y2hlY2tlZC1hcnJheXMgICAtIGlmIDp3YXJuIG9yIDplcnJvciwgY2hlY2tzIGluZmVycmVkIHR5cGVzIGFuZCB2YWx1ZXMgcGFzc2VkXFxuICAgICAgICAgICAgICAgICAgICAgICAgICB0byBhZ2V0L2FzZXQuIExvZ3MgZm9yIGluY29ycmVjdCB2YWx1ZXMgaWYgOndhcm4sIHRocm93cyBpZlxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgOmVycm9yLiBEZWZhdWx0cyB0byBmYWxzZS5cXG4gICAgICA6c3RhdGljLWZucyAgICAgICAtIGVtcGxveSBzdGF0aWMgZGlzcGF0Y2ggdG8gc3BlY2lmaWMgZnVuY3Rpb24gYXJpdGllcyBpblxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZW1pdHRlZCBKYXZhU2NyaXB0LCBhcyBvcHBvc2VkIHRvIG1ha2luZyB1c2Ugb2YgdGhlXFxuICAgICAgICAgICAgICAgICAgICAgICAgICBgY2FsbGAgY29uc3RydWN0LiBEZWZhdWx0cyB0byBmYWxzZS5cXG4gICAgICA6Zm4taW52b2tlLWRpcmVjdCAtIGlmIGB0cnVlYCwgZG9lcyBub3QgZ2VuZXJhdGUgYC5jYWxsKG51bGwuLi4pYCBjYWxscyBmb3JcXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHVua25vd24gZnVuY3Rpb25zLCBidXQgaW5zdGVhZCBkaXJlY3QgaW52b2tlcyB2aWFcXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGBmKGEwLGExLi4uKWAuIERlZmF1bHRzIHRvIGBmYWxzZWAuXFxuICAgICAgOnRhcmdldCAgICAgICAgICAgLSB1c2UgYDpub2RlanNgIGlmIHRhcmdldGluZyBOb2RlLmpzLiBUYWtlcyBubyBvdGhlciBvcHRpb25zXFxuICAgICAgICAgICAgICAgICAgICAgICAgICBhdCB0aGUgbW9tZW50LlxcbiAgICAgIDpucyAgICAgICAgICAgICAgIC0gb3B0aW9uYWwsIHRoZSBuYW1lc3BhY2UgaW4gd2hpY2ggdG8gZXZhbHVhdGUgdGhlIHNvdXJjZS5cXG4gICAgICA6dmVyYm9zZSAgICAgICAgICAtIG9wdGlvbmFsLCBlbWl0IGRldGFpbHMgZnJvbSBjb21waWxlciBhY3Rpdml0eS4gRGVmYXVsdHMgdG9cXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlLlxcbiAgICAgIDpjb250ZXh0ICAgICAgICAgIC0gb3B0aW9uYWwsIHNldHMgdGhlIGNvbnRleHQgZm9yIHRoZSBzb3VyY2UuIFBvc3NpYmxlIHZhbHVlc1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYXJlIGA6ZXhwcmAsIGA6c3RhdGVtZW50YCBhbmQgYDpyZXR1cm5gLiBEZWZhdWx0cyB0b1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYDpzdGF0ZW1lbnRgLlxcblxcbiAgIGNiIChmdW5jdGlvbilcXG4gICAgIGNhbGxiYWNrLCB3aWxsIGJlIGludm9rZWQgd2l0aCBhIG1hcC4gSWYgc3VjY2Vzc2Z1bCB0aGUgbWFwIHdpbGwgY29udGFpblxcbiAgICAgYSBrZXkgOnZhbHVlIHdpdGggdGhlIGNvbXBpbGF0aW9uIHJlc3VsdCAoc3RyaW5nKS4gSWYgdW5zdWNjZXNzZnVsIHRoZSBtYXBcXG4gICAgIHdpbGwgY29udGFpbiBhIGtleSA6ZXJyb3Igd2l0aCBhbiBleC1pbmZvIGluc3RhbmNlIGRlc2NyaWJpbmcgdGhlIGNhdXNlXFxuICAgICBvZiBmYWlsdXJlLlwiXG4gKFtzdGF0ZSBzb3VyY2UgY2JdIChjb21waWxlLXN0ciBzdGF0ZSBzb3VyY2UgbmlsIGNiKSlcbiAoW3N0YXRlIHNvdXJjZSBuYW1lIGNiXSAoY29tcGlsZS1zdHIgc3RhdGUgc291cmNlIG5hbWUgbmlsIGNiKSlcbiAoW3N0YXRlIHNvdXJjZSBuYW1lIG9wdHMgY2JdXG4gIHs6cHJlXG4gICBbKGF0b20/IHN0YXRlKVxuICAgIChzdHJpbmc/IHNvdXJjZSlcbiAgICAodmFsaWQtbmFtZT8gbmFtZSlcbiAgICAodmFsaWQtb3B0cz8gb3B0cylcbiAgICAoZm4/IGNiKV19XG4gIChjb21waWxlLXN0cipcbiAgIHs6KmNvbXBpbGVyKiBzdGF0ZSxcbiAgICA6KmRhdGEtcmVhZGVycyogdGFncy8qY2xqcy1kYXRhLXJlYWRlcnMqLFxuICAgIDoqY2xqcy1kZXAtc2V0KiBhbmEvKmNsanMtZGVwLXNldCosXG4gICAgOiphbmFseXplLWRlcHMqICg6YW5hbHl6ZS1kZXBzIG9wdHMgdHJ1ZSksXG4gICAgOipsb2FkLW1hY3JvcyogKDpsb2FkLW1hY3JvcyBvcHRzIHRydWUpLFxuICAgIDoqbG9hZC1mbiogKG9yICg6bG9hZCBvcHRzKSAqbG9hZC1mbiopLFxuICAgIDoqZXZhbC1mbiogKG9yICg6ZXZhbCBvcHRzKSAqZXZhbC1mbiopLFxuICAgIDoqc20tZGF0YSogKHdoZW4gKDpzb3VyY2UtbWFwIG9wdHMpIChzbS1kYXRhKSl9XG4gICBzb3VyY2VcbiAgIG5hbWVcbiAgIG9wdHNcbiAgIGNiKSkpXG4ifSB7OnN5bSBucy0+cmVscGF0aCwgOm1ldGEgezpkb2MgIkdpdmVuIGEgbmFtZXNwYWNlIGFzIGEgc3ltYm9sIHJldHVybiB0aGUgcmVsYXRpdmUgcGF0aCBzYW5zIGV4dGVuc2lvbiIsIDphcmdsaXN0cyAoW25zLXN5bV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBucy0+cmVscGF0aFxuIFwiR2l2ZW4gYSBuYW1lc3BhY2UgYXMgYSBzeW1ib2wgcmV0dXJuIHRoZSByZWxhdGl2ZSBwYXRoIHNhbnMgZXh0ZW5zaW9uXCJcbiBbbnMtc3ltXVxuIChzdHJpbmcvcmVwbGFjZSAoYW5hL211bmdlLXBhdGggbnMtc3ltKSBcXC4gXFwvKSlcbiJ9IHs6c3ltIGVtcHR5LXN0YXRlLCA6bWV0YSB7OmRvYyAiQ29uc3RydWN0IGFuIGVtcHR5IGNvbXBpbGVyIHN0YXRlLiBSZXF1aXJlZCB0byBpbnZva2UgYW5hbHl6ZSwgY29tcGlsZSxcbiAgIGV2YWwgYW5kIGV2YWwtc3RyLiIsIDphcmdsaXN0cyBbW10gW2luaXRdXX0sIDpzb3VyY2UgIihkZWZuXG4gZW1wdHktc3RhdGVcbiBcIkNvbnN0cnVjdCBhbiBlbXB0eSBjb21waWxlciBzdGF0ZS4gUmVxdWlyZWQgdG8gaW52b2tlIGFuYWx5emUsIGNvbXBpbGUsXFxuICAgZXZhbCBhbmQgZXZhbC1zdHIuXCJcbiAoW11cbiAgKGRvdG9cbiAgIChlbnYvZGVmYXVsdC1jb21waWxlci1lbnYpXG4gICAoc3dhcCFcbiAgICAoZm5cbiAgICAgW3N0YXRlXVxuICAgICAoLT5cbiAgICAgIHN0YXRlXG4gICAgICAoYXNzb2MtaW5cbiAgICAgICBbOmNsanMuYW5hbHl6ZXIvbmFtZXNwYWNlcyAnY2xqcy5jb3JlXVxuICAgICAgIChkdW1wLWNvcmUpKSkpKSkpXG4gKFtpbml0XSAoZG90byAoZW1wdHktc3RhdGUpIChzd2FwISBpbml0KSkpKVxuIn0gezpzeW0gKmxvYWRlZCosIDptZXRhIHt9LCA6c291cmNlICIoZGVmICpsb2FkZWQqIChhdG9tICN7fSkpXG4ifSB7OnN5bSByZXF1aXJlLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyBbW25hbWUgY2JdIFtuYW1lIG9wdHMgY2JdIFtib3VuZC12YXJzIG5hbWUgb3B0cyBjYl0gW2JvdW5kLXZhcnMgbmFtZSByZWxvYWQgb3B0cyBjYl1dfSwgOnNvdXJjZSAiKGRlZm5cbiByZXF1aXJlXG4gKFtuYW1lIGNiXSAocmVxdWlyZSBuYW1lIG5pbCBjYikpXG4gKFtuYW1lIG9wdHMgY2JdIChyZXF1aXJlIG5pbCBuYW1lIG9wdHMgY2IpKVxuIChbYm91bmQtdmFycyBuYW1lIG9wdHMgY2JdIChyZXF1aXJlIGJvdW5kLXZhcnMgbmFtZSBuaWwgb3B0cyBjYikpXG4gKFtib3VuZC12YXJzIG5hbWUgcmVsb2FkIG9wdHMgY2JdXG4gIChsZXRcbiAgIFtib3VuZC12YXJzXG4gICAgKG1lcmdlXG4gICAgIHs6KmNvbXBpbGVyKiAoZW52L2RlZmF1bHQtY29tcGlsZXItZW52KSxcbiAgICAgIDoqZGF0YS1yZWFkZXJzKiB0YWdzLypjbGpzLWRhdGEtcmVhZGVycyosXG4gICAgICA6KmxvYWQtbWFjcm9zKiAoOmxvYWQtbWFjcm9zIG9wdHMgdHJ1ZSksXG4gICAgICA6KmFuYWx5emUtZGVwcyogKDphbmFseXplLWRlcHMgb3B0cyB0cnVlKSxcbiAgICAgIDoqbG9hZC1mbiogKG9yICg6bG9hZCBvcHRzKSAqbG9hZC1mbiopLFxuICAgICAgOipldmFsLWZuKiAob3IgKDpldmFsIG9wdHMpICpldmFsLWZuKil9XG4gICAgIGJvdW5kLXZhcnMpXG4gICAgYW5hbWVcbiAgICAoY29uZC0+IG5hbWUgKDptYWNyb3MtbnMgb3B0cykgYW5hL21hY3JvLW5zLW5hbWUpXVxuICAgKHdoZW4gKD0gOnJlbG9hZCByZWxvYWQpIChzd2FwISAqbG9hZGVkKiBkaXNqIGFuYW1lKSlcbiAgICh3aGVuICg9IDpyZWxvYWQtYWxsIHJlbG9hZCkgKHJlc2V0ISAqbG9hZGVkKiAje30pKVxuICAgKHdoZW5cbiAgICAoOnZlcmJvc2Ugb3B0cylcbiAgICAoZGVidWctcHJuXG4gICAgIChzdHJcbiAgICAgIFwiTG9hZGluZyBcIlxuICAgICAgbmFtZVxuICAgICAgKHdoZW4gKDptYWNyb3MtbnMgb3B0cykgXCIgbWFjcm9zXCIpXG4gICAgICBcIiBuYW1lc3BhY2VcIikpKVxuICAgKGlmLW5vdFxuICAgIChjb250YWlucz8gQCpsb2FkZWQqIGFuYW1lKVxuICAgIChsZXRcbiAgICAgW2VudiAoOiplbnYqIGJvdW5kLXZhcnMpXVxuICAgICAodHJ5XG4gICAgICAoKDoqbG9hZC1mbiogYm91bmQtdmFycylcbiAgICAgICB7Om5hbWUgbmFtZSxcbiAgICAgICAgOm1hY3JvcyAoOm1hY3Jvcy1ucyBvcHRzKSxcbiAgICAgICAgOnBhdGggKG5zLT5yZWxwYXRoIG5hbWUpfVxuICAgICAgIChmblxuICAgICAgICBbcmVzb3VyY2VdXG4gICAgICAgIChhc3NlcnRcbiAgICAgICAgIChvciAobWFwPyByZXNvdXJjZSkgKG5pbD8gcmVzb3VyY2UpKVxuICAgICAgICAgXCIqbG9hZC1mbiogbWF5IG9ubHkgcmV0dXJuIGEgbWFwIG9yIG5pbFwiKVxuICAgICAgICAoaWZcbiAgICAgICAgIHJlc291cmNlXG4gICAgICAgICAobGV0XG4gICAgICAgICAgW3s6a2V5cyBbbGFuZyBzb3VyY2UgY2FjaGUgc291cmNlLW1hcCBmaWxlXX0gcmVzb3VyY2VdXG4gICAgICAgICAgKGNvbmRwXG4gICAgICAgICAgIGtleXdvcmQtaWRlbnRpY2FsP1xuICAgICAgICAgICBsYW5nXG4gICAgICAgICAgIDpjbGpcbiAgICAgICAgICAgKGRvXG4gICAgICAgICAgICAocHJlLWZpbGUtc2lkZS1lZmZlY3RzXG4gICAgICAgICAgICAgKDoqY29tcGlsZXIqIGJvdW5kLXZhcnMpXG4gICAgICAgICAgICAgYW5hbWVcbiAgICAgICAgICAgICBmaWxlXG4gICAgICAgICAgICAgb3B0cylcbiAgICAgICAgICAgIChldmFsLXN0cipcbiAgICAgICAgICAgICBib3VuZC12YXJzXG4gICAgICAgICAgICAgc291cmNlXG4gICAgICAgICAgICAgbmFtZVxuICAgICAgICAgICAgIChhc3NvYyBvcHRzIDpjbGpzLWZpbGUgZmlsZSlcbiAgICAgICAgICAgICAoZm5cbiAgICAgICAgICAgICAgW3Jlc11cbiAgICAgICAgICAgICAgKHBvc3QtZmlsZS1zaWRlLWVmZmVjdHMgZmlsZSBvcHRzKVxuICAgICAgICAgICAgICAoaWZcbiAgICAgICAgICAgICAgICg6ZXJyb3IgcmVzKVxuICAgICAgICAgICAgICAgKGNiIHJlcylcbiAgICAgICAgICAgICAgIChkbyAoc3dhcCEgKmxvYWRlZCogY29uaiBhbmFtZSkgKGNiIHs6dmFsdWUgdHJ1ZX0pKSkpKSlcbiAgICAgICAgICAgOmpzXG4gICAgICAgICAgIChwcm9jZXNzLW1hY3Jvcy1kZXBzXG4gICAgICAgICAgICBib3VuZC12YXJzXG4gICAgICAgICAgICBjYWNoZVxuICAgICAgICAgICAgb3B0c1xuICAgICAgICAgICAgKGZuXG4gICAgICAgICAgICAgW3Jlc11cbiAgICAgICAgICAgICAoaWZcbiAgICAgICAgICAgICAgKDplcnJvciByZXMpXG4gICAgICAgICAgICAgIChjYiByZXMpXG4gICAgICAgICAgICAgIChwcm9jZXNzLWxpYnMtZGVwc1xuICAgICAgICAgICAgICAgYm91bmQtdmFyc1xuICAgICAgICAgICAgICAgY2FjaGVcbiAgICAgICAgICAgICAgIG9wdHNcbiAgICAgICAgICAgICAgIChmblxuICAgICAgICAgICAgICAgIFtyZXNdXG4gICAgICAgICAgICAgICAgKGlmXG4gICAgICAgICAgICAgICAgICg6ZXJyb3IgcmVzKVxuICAgICAgICAgICAgICAgICAoY2IgcmVzKVxuICAgICAgICAgICAgICAgICAobGV0XG4gICAgICAgICAgICAgICAgICBbcmVzXG4gICAgICAgICAgICAgICAgICAgKHRyeVxuICAgICAgICAgICAgICAgICAgICAoKDoqZXZhbC1mbiogYm91bmQtdmFycykgcmVzb3VyY2UpXG4gICAgICAgICAgICAgICAgICAgICh3aGVuXG4gICAgICAgICAgICAgICAgICAgICBjYWNoZVxuICAgICAgICAgICAgICAgICAgICAgKGxvYWQtYW5hbHlzaXMtY2FjaGUhXG4gICAgICAgICAgICAgICAgICAgICAgKDoqY29tcGlsZXIqIGJvdW5kLXZhcnMpXG4gICAgICAgICAgICAgICAgICAgICAgYW5hbWVcbiAgICAgICAgICAgICAgICAgICAgICBjYWNoZSlcbiAgICAgICAgICAgICAgICAgICAgIChhbmEvcmVnaXN0ZXItc3BlY3MgY2FjaGUpKVxuICAgICAgICAgICAgICAgICAgICAod2hlblxuICAgICAgICAgICAgICAgICAgICAgc291cmNlLW1hcFxuICAgICAgICAgICAgICAgICAgICAgKGxvYWQtc291cmNlLW1hcCFcbiAgICAgICAgICAgICAgICAgICAgICAoOipjb21waWxlciogYm91bmQtdmFycylcbiAgICAgICAgICAgICAgICAgICAgICBhbmFtZVxuICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZS1tYXApKVxuICAgICAgICAgICAgICAgICAgICAoY2F0Y2hcbiAgICAgICAgICAgICAgICAgICAgIDpkZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICBjYXVzZVxuICAgICAgICAgICAgICAgICAgICAgKHdyYXAtZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAoYW5hL2Vycm9yXG4gICAgICAgICAgICAgICAgICAgICAgIGVudlxuICAgICAgICAgICAgICAgICAgICAgICAoc3RyIFwiQ291bGQgbm90IHJlcXVpcmUgXCIgbmFtZSlcbiAgICAgICAgICAgICAgICAgICAgICAgY2F1c2UpKSkpXVxuICAgICAgICAgICAgICAgICAgKGlmXG4gICAgICAgICAgICAgICAgICAgKDplcnJvciByZXMpXG4gICAgICAgICAgICAgICAgICAgKGNiIHJlcylcbiAgICAgICAgICAgICAgICAgICAoZG9cbiAgICAgICAgICAgICAgICAgICAgKHN3YXAhICpsb2FkZWQqIGNvbmogYW5hbWUpXG4gICAgICAgICAgICAgICAgICAgIChjYiB7OnZhbHVlIHRydWV9KSkpKSkpKSkpKVxuICAgICAgICAgICAoY2JcbiAgICAgICAgICAgICh3cmFwLWVycm9yXG4gICAgICAgICAgICAgKGFuYS9lcnJvclxuICAgICAgICAgICAgICBlbnZcbiAgICAgICAgICAgICAgKHN0clxuICAgICAgICAgICAgICAgXCJJbnZhbGlkIDpsYW5nIHNwZWNpZmllZCBcIlxuICAgICAgICAgICAgICAgbGFuZ1xuICAgICAgICAgICAgICAgXCIsIG9ubHkgOmNsaiBvciA6anMgYWxsb3dlZFwiKSkpKSkpXG4gICAgICAgICAoY2JcbiAgICAgICAgICAod3JhcC1lcnJvclxuICAgICAgICAgICAoYW5hL2Vycm9yXG4gICAgICAgICAgICBlbnZcbiAgICAgICAgICAgIChhbmEvZXJyb3ItbWVzc2FnZVxuICAgICAgICAgICAgIChpZlxuICAgICAgICAgICAgICAoOm1hY3Jvcy1ucyBvcHRzKVxuICAgICAgICAgICAgICA6dW5kZWNsYXJlZC1tYWNyb3MtbnNcbiAgICAgICAgICAgICAgOnVuZGVjbGFyZWQtbnMpXG4gICAgICAgICAgICAgezpucy1zeW0gbmFtZSwgOmpzLXByb3ZpZGUgKGNsanMuY29yZS9uYW1lIG5hbWUpfSkpKSkpKSlcbiAgICAgIChjYXRjaFxuICAgICAgIDpkZWZhdWx0XG4gICAgICAgY2F1c2VcbiAgICAgICAoY2JcbiAgICAgICAgKHdyYXAtZXJyb3JcbiAgICAgICAgIChhbmEvZXJyb3IgZW52IChzdHIgXCJDb3VsZCBub3QgcmVxdWlyZSBcIiBuYW1lKSBjYXVzZSkpKSkpKVxuICAgIChjYiB7OnZhbHVlIHRydWV9KSkpKSlcbiJ9IHs6c3ltIGZpbGUtPm5zLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2ZpbGVdKX0sIDpzb3VyY2UgIihkZWZuXG4gZmlsZS0+bnNcbiBbZmlsZV1cbiAobGV0XG4gIFtsaWItbmFtZSAoc3VicyAoc3RyaW5nL3JlcGxhY2UgZmlsZSBcIi9cIiBcIi5cIikgMCAoLSAoY291bnQgZmlsZSkgNSkpXVxuICAoc3ltYm9sIChkZW11bmdlIGxpYi1uYW1lKSkpKVxuIn0gezpzeW0gZXZhbC1zdHIsIDptZXRhIHs6ZG9jICJFdmFsdXRlIENsb2p1cmVTY3JpcHQgc291cmNlIGdpdmVuIGFzIGEgc3RyaW5nLiBUaGUgcGFyYW1ldGVyczpcblxuICBzdGF0ZSAoYXRvbSlcbiAgICB0aGUgY29tcGlsZXIgc3RhdGVcblxuICBzb3VyY2UgKHN0cmluZylcbiAgICB0aGUgQ2xvanVyZVNjcmlwdCBzb3VyY2VcblxuICBuYW1lIChzeW1ib2wgb3Igc3RyaW5nKVxuICAgIG9wdGlvbmFsLCB0aGUgbmFtZSBvZiB0aGUgc291cmNlIC0gdXNlZCBhcyBrZXkgaW4gOnNvdXJjZS1tYXBzXG5cbiAgb3B0cyAobWFwKVxuICAgIGNvbXBpbGF0aW9uIG9wdGlvbnMuXG5cbiAgICA6ZXZhbCAgICAgICAgICAgICAtIGV2YWwgZnVuY3Rpb24gdG8gaW52b2tlLCBzZWUgKmV2YWwtZm4qXG4gICAgOmxvYWQgICAgICAgICAgICAgLSBsaWJyYXJ5IHJlc29sdXRpb24gZnVuY3Rpb24sIHNlZSAqbG9hZC1mbipcbiAgICA6c291cmNlLW1hcCAgICAgICAtIHNldCB0byB0cnVlIHRvIGdlbmVyYXRlIGlubGluZSBzb3VyY2UgbWFwIGluZm9ybWF0aW9uXG4gICAgOmNhY2hlLXNvdXJjZSAgICAgLSBvcHRpb25hbCwgYSBmdW5jdGlvbiB0byBydW4gc2lkZS1lZmZlY3RzIHdpdGggdGhlXG4gICAgICAgICAgICAgICAgICAgICAgICBjb21waWxhdGlvbiByZXN1bHQgcHJpb3IgdG8gYWN0dWFsIGV2YWx1dGlvbi4gVGhpcyBmdW5jdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgdGFrZXMgdHdvIGFyZ3VtZW50cywgdGhlIGZpcnN0IGlzIHRoZSBldmFsIG1hcCwgdGhlIHNvdXJjZVxuICAgICAgICAgICAgICAgICAgICAgICAgd2lsbCBiZSB1bmRlciA6c291cmNlLiBUaGUgc2Vjb25kIGFyZ3VtZW50IGlzIGEgY2FsbGJhY2sgb2ZcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uZSBhcmd1bWVudC4gSWYgYW4gZXJyb3Igb2NjdXJzIGFuIDplcnJvciBrZXkgc2hvdWxkIGJlXG4gICAgICAgICAgICAgICAgICAgICAgICBzdXBwbGllZC5cbiAgICA6ZGVmLWVtaXRzLXZhciAgICAtIHNldHMgd2hldGhlciBkZWYgKGFuZCBkZXJpdmVkKSBmb3JtcyByZXR1cm4gZWl0aGVyIGEgVmFyXG4gICAgICAgICAgICAgICAgICAgICAgICAoaWYgc2V0IHRvIHRydWUpIG9yIHRoZSBkZWYgaW5pdCB2YWx1ZSAoaWYgZmFsc2UpLiBEZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICBpcyBmYWxzZS5cbiAgICA6Y2hlY2tlZC1hcnJheXMgICAtIGlmIDp3YXJuIG9yIDplcnJvciwgY2hlY2tzIGluZmVycmVkIHR5cGVzIGFuZCB2YWx1ZXMgcGFzc2VkXG4gICAgICAgICAgICAgICAgICAgICAgICB0byBhZ2V0L2FzZXQuIExvZ3MgZm9yIGluY29ycmVjdCB2YWx1ZXMgaWYgOndhcm4sIHRocm93cyBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgOmVycm9yLiBEZWZhdWx0cyB0byBmYWxzZS5cbiAgICA6c3RhdGljLWZucyAgICAgICAtIGVtcGxveSBzdGF0aWMgZGlzcGF0Y2ggdG8gc3BlY2lmaWMgZnVuY3Rpb24gYXJpdGllcyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgZW1pdHRlZCBKYXZhU2NyaXB0LCBhcyBvcHBvc2VkIHRvIG1ha2luZyB1c2Ugb2YgdGhlXG4gICAgICAgICAgICAgICAgICAgICAgICBgY2FsbGAgY29uc3RydWN0LiBEZWZhdWx0cyB0byBmYWxzZS5cbiAgICA6Zm4taW52b2tlLWRpcmVjdCAtIGlmIGB0cnVlYCwgZG9lcyBub3QgZ2VuZXJhdGUgYC5jYWxsKG51bGwuLi4pYCBjYWxscyBmb3JcbiAgICAgICAgICAgICAgICAgICAgICAgIHVua25vd24gZnVuY3Rpb25zLCBidXQgaW5zdGVhZCBkaXJlY3QgaW52b2tlcyB2aWFcbiAgICAgICAgICAgICAgICAgICAgICAgIGBmKGEwLGExLi4uKWAuIERlZmF1bHRzIHRvIGBmYWxzZWAuXG4gICAgOnRhcmdldCAgICAgICAgICAgLSB1c2UgYDpub2RlanNgIGlmIHRhcmdldGluZyBOb2RlLmpzLiBUYWtlcyBubyBvdGhlciBvcHRpb25zXG4gICAgICAgICAgICAgICAgICAgICAgICBhdCB0aGUgbW9tZW50LlxuICAgIDpucyAgICAgICAgICAgICAgIC0gb3B0aW9uYWwsIHRoZSBuYW1lc3BhY2UgaW4gd2hpY2ggdG8gZXZhbHVhdGUgdGhlIHNvdXJjZS5cbiAgICA6dmVyYm9zZSAgICAgICAgICAtIG9wdGlvbmFsLCBlbWl0IGRldGFpbHMgZnJvbSBjb21waWxlciBhY3Rpdml0eS4gRGVmYXVsdHMgdG9cbiAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlLlxuICAgIDpjb250ZXh0ICAgICAgICAgIC0gb3B0aW9uYWwsIHNldHMgdGhlIGNvbnRleHQgZm9yIHRoZSBzb3VyY2UuIFBvc3NpYmxlIHZhbHVlc1xuICAgICAgICAgICAgICAgICAgICAgYXJlIGA6ZXhwcmAsIGA6c3RhdGVtZW50YCBhbmQgYDpyZXR1cm5gLiBEZWZhdWx0cyB0b1xuICAgICAgICAgICAgICAgICAgICAgIGA6c3RhdGVtZW50YC5cblxuICBjYiAoZnVuY3Rpb24pXG4gICAgY2FsbGJhY2ssIHdpbGwgYmUgaW52b2tlZCB3aXRoIGEgbWFwLiBJZiBzdWNjZXNmdWwgdGhlIG1hcCB3aWxsIGNvbnRhaW5cbiAgICBhIDp2YWx1ZSBrZXkgd2l0aCB0aGUgcmVzdWx0IG9mIGV2YWx1YXRpb24gYW5kIDpucyB0aGUgY3VycmVudCBuYW1lc3BhY2UuXG4gICAgSWYgdW5zdWNjZXNzZnVsIHdpbGwgY29udGFpbiBhIDplcnJvciBrZXkgd2l0aCBhbiBleC1pbmZvIGluc3RhbmNlIGRlc2NyaWJpbmdcbiAgICB0aGUgY2F1c2Ugb2YgZmFpbHVyZS4iLCA6YXJnbGlzdHMgW1tzdGF0ZSBzb3VyY2UgY2JdIFtzdGF0ZSBzb3VyY2UgbmFtZSBjYl0gW3N0YXRlIHNvdXJjZSBuYW1lIG9wdHMgY2JdXX0sIDpzb3VyY2UgIihkZWZuXG4gZXZhbC1zdHJcbiBcIkV2YWx1dGUgQ2xvanVyZVNjcmlwdCBzb3VyY2UgZ2l2ZW4gYXMgYSBzdHJpbmcuIFRoZSBwYXJhbWV0ZXJzOlxcblxcbiAgc3RhdGUgKGF0b20pXFxuICAgIHRoZSBjb21waWxlciBzdGF0ZVxcblxcbiAgc291cmNlIChzdHJpbmcpXFxuICAgIHRoZSBDbG9qdXJlU2NyaXB0IHNvdXJjZVxcblxcbiAgbmFtZSAoc3ltYm9sIG9yIHN0cmluZylcXG4gICAgb3B0aW9uYWwsIHRoZSBuYW1lIG9mIHRoZSBzb3VyY2UgLSB1c2VkIGFzIGtleSBpbiA6c291cmNlLW1hcHNcXG5cXG4gIG9wdHMgKG1hcClcXG4gICAgY29tcGlsYXRpb24gb3B0aW9ucy5cXG5cXG4gICAgOmV2YWwgICAgICAgICAgICAgLSBldmFsIGZ1bmN0aW9uIHRvIGludm9rZSwgc2VlICpldmFsLWZuKlxcbiAgICA6bG9hZCAgICAgICAgICAgICAtIGxpYnJhcnkgcmVzb2x1dGlvbiBmdW5jdGlvbiwgc2VlICpsb2FkLWZuKlxcbiAgICA6c291cmNlLW1hcCAgICAgICAtIHNldCB0byB0cnVlIHRvIGdlbmVyYXRlIGlubGluZSBzb3VyY2UgbWFwIGluZm9ybWF0aW9uXFxuICAgIDpjYWNoZS1zb3VyY2UgICAgIC0gb3B0aW9uYWwsIGEgZnVuY3Rpb24gdG8gcnVuIHNpZGUtZWZmZWN0cyB3aXRoIHRoZVxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBpbGF0aW9uIHJlc3VsdCBwcmlvciB0byBhY3R1YWwgZXZhbHV0aW9uLiBUaGlzIGZ1bmN0aW9uXFxuICAgICAgICAgICAgICAgICAgICAgICAgdGFrZXMgdHdvIGFyZ3VtZW50cywgdGhlIGZpcnN0IGlzIHRoZSBldmFsIG1hcCwgdGhlIHNvdXJjZVxcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpbGwgYmUgdW5kZXIgOnNvdXJjZS4gVGhlIHNlY29uZCBhcmd1bWVudCBpcyBhIGNhbGxiYWNrIG9mXFxuICAgICAgICAgICAgICAgICAgICAgICAgb25lIGFyZ3VtZW50LiBJZiBhbiBlcnJvciBvY2N1cnMgYW4gOmVycm9yIGtleSBzaG91bGQgYmVcXG4gICAgICAgICAgICAgICAgICAgICAgICBzdXBwbGllZC5cXG4gICAgOmRlZi1lbWl0cy12YXIgICAgLSBzZXRzIHdoZXRoZXIgZGVmIChhbmQgZGVyaXZlZCkgZm9ybXMgcmV0dXJuIGVpdGhlciBhIFZhclxcbiAgICAgICAgICAgICAgICAgICAgICAgIChpZiBzZXQgdG8gdHJ1ZSkgb3IgdGhlIGRlZiBpbml0IHZhbHVlIChpZiBmYWxzZSkuIERlZmF1bHRcXG4gICAgICAgICAgICAgICAgICAgICAgICBpcyBmYWxzZS5cXG4gICAgOmNoZWNrZWQtYXJyYXlzICAgLSBpZiA6d2FybiBvciA6ZXJyb3IsIGNoZWNrcyBpbmZlcnJlZCB0eXBlcyBhbmQgdmFsdWVzIHBhc3NlZFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvIGFnZXQvYXNldC4gTG9ncyBmb3IgaW5jb3JyZWN0IHZhbHVlcyBpZiA6d2FybiwgdGhyb3dzIGlmXFxuICAgICAgICAgICAgICAgICAgICAgICAgOmVycm9yLiBEZWZhdWx0cyB0byBmYWxzZS5cXG4gICAgOnN0YXRpYy1mbnMgICAgICAgLSBlbXBsb3kgc3RhdGljIGRpc3BhdGNoIHRvIHNwZWNpZmljIGZ1bmN0aW9uIGFyaXRpZXMgaW5cXG4gICAgICAgICAgICAgICAgICAgICAgICBlbWl0dGVkIEphdmFTY3JpcHQsIGFzIG9wcG9zZWQgdG8gbWFraW5nIHVzZSBvZiB0aGVcXG4gICAgICAgICAgICAgICAgICAgICAgICBgY2FsbGAgY29uc3RydWN0LiBEZWZhdWx0cyB0byBmYWxzZS5cXG4gICAgOmZuLWludm9rZS1kaXJlY3QgLSBpZiBgdHJ1ZWAsIGRvZXMgbm90IGdlbmVyYXRlIGAuY2FsbChudWxsLi4uKWAgY2FsbHMgZm9yXFxuICAgICAgICAgICAgICAgICAgICAgICAgdW5rbm93biBmdW5jdGlvbnMsIGJ1dCBpbnN0ZWFkIGRpcmVjdCBpbnZva2VzIHZpYVxcbiAgICAgICAgICAgICAgICAgICAgICAgIGBmKGEwLGExLi4uKWAuIERlZmF1bHRzIHRvIGBmYWxzZWAuXFxuICAgIDp0YXJnZXQgICAgICAgICAgIC0gdXNlIGA6bm9kZWpzYCBpZiB0YXJnZXRpbmcgTm9kZS5qcy4gVGFrZXMgbm8gb3RoZXIgb3B0aW9uc1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGF0IHRoZSBtb21lbnQuXFxuICAgIDpucyAgICAgICAgICAgICAgIC0gb3B0aW9uYWwsIHRoZSBuYW1lc3BhY2UgaW4gd2hpY2ggdG8gZXZhbHVhdGUgdGhlIHNvdXJjZS5cXG4gICAgOnZlcmJvc2UgICAgICAgICAgLSBvcHRpb25hbCwgZW1pdCBkZXRhaWxzIGZyb20gY29tcGlsZXIgYWN0aXZpdHkuIERlZmF1bHRzIHRvXFxuICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UuXFxuICAgIDpjb250ZXh0ICAgICAgICAgIC0gb3B0aW9uYWwsIHNldHMgdGhlIGNvbnRleHQgZm9yIHRoZSBzb3VyY2UuIFBvc3NpYmxlIHZhbHVlc1xcbiAgICAgICAgICAgICAgICAgICAgIGFyZSBgOmV4cHJgLCBgOnN0YXRlbWVudGAgYW5kIGA6cmV0dXJuYC4gRGVmYXVsdHMgdG9cXG4gICAgICAgICAgICAgICAgICAgICAgYDpzdGF0ZW1lbnRgLlxcblxcbiAgY2IgKGZ1bmN0aW9uKVxcbiAgICBjYWxsYmFjaywgd2lsbCBiZSBpbnZva2VkIHdpdGggYSBtYXAuIElmIHN1Y2Nlc2Z1bCB0aGUgbWFwIHdpbGwgY29udGFpblxcbiAgICBhIDp2YWx1ZSBrZXkgd2l0aCB0aGUgcmVzdWx0IG9mIGV2YWx1YXRpb24gYW5kIDpucyB0aGUgY3VycmVudCBuYW1lc3BhY2UuXFxuICAgIElmIHVuc3VjY2Vzc2Z1bCB3aWxsIGNvbnRhaW4gYSA6ZXJyb3Iga2V5IHdpdGggYW4gZXgtaW5mbyBpbnN0YW5jZSBkZXNjcmliaW5nXFxuICAgIHRoZSBjYXVzZSBvZiBmYWlsdXJlLlwiXG4gKFtzdGF0ZSBzb3VyY2UgY2JdIChldmFsLXN0ciBzdGF0ZSBzb3VyY2UgbmlsIGNiKSlcbiAoW3N0YXRlIHNvdXJjZSBuYW1lIGNiXSAoZXZhbC1zdHIgc3RhdGUgc291cmNlIG5hbWUgbmlsIGNiKSlcbiAoW3N0YXRlIHNvdXJjZSBuYW1lIG9wdHMgY2JdXG4gIHs6cHJlXG4gICBbKGF0b20/IHN0YXRlKVxuICAgIChzdHJpbmc/IHNvdXJjZSlcbiAgICAodmFsaWQtbmFtZT8gbmFtZSlcbiAgICAodmFsaWQtb3B0cz8gb3B0cylcbiAgICAoZm4/IGNiKV19XG4gIChldmFsLXN0cipcbiAgIHs6KmNvbXBpbGVyKiBzdGF0ZSxcbiAgICA6KmRhdGEtcmVhZGVycyogdGFncy8qY2xqcy1kYXRhLXJlYWRlcnMqLFxuICAgIDoqYW5hbHl6ZS1kZXBzKiAoOmFuYWx5emUtZGVwcyBvcHRzIHRydWUpLFxuICAgIDoqY2xqcy1kZXAtc2V0KiBhbmEvKmNsanMtZGVwLXNldCosXG4gICAgOipsb2FkLW1hY3JvcyogKDpsb2FkLW1hY3JvcyBvcHRzIHRydWUpLFxuICAgIDoqbG9hZC1mbiogKG9yICg6bG9hZCBvcHRzKSAqbG9hZC1mbiopLFxuICAgIDoqZXZhbC1mbiogKG9yICg6ZXZhbCBvcHRzKSAqZXZhbC1mbiopfVxuICAgc291cmNlXG4gICBuYW1lXG4gICBvcHRzXG4gICBjYikpKVxuIn0gezpzeW0ganMtZXZhbCwgOm1ldGEgezpkb2MgIkEgZGVmYXVsdCBKYXZhU2NyaXB0IGV2YWx1YXRpb24gZnVuY3Rpb24uIiwgOmFyZ2xpc3RzIChbezprZXlzIFtzb3VyY2VdLCA6YXMgcmVzb3VyY2V9XSl9LCA6c291cmNlICIoZGVmblxuIGpzLWV2YWxcbiBcIkEgZGVmYXVsdCBKYXZhU2NyaXB0IGV2YWx1YXRpb24gZnVuY3Rpb24uXCJcbiBbezprZXlzIFtzb3VyY2VdLCA6YXMgcmVzb3VyY2V9XVxuIChqcy9ldmFsIHNvdXJjZSkpXG4ifSB7OnN5bSBsb2FkLXNvdXJjZS1tYXAhLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3N0YXRlIG5zIHNtLWpzb25dKX0sIDpzb3VyY2UgIihkZWZuXG4gbG9hZC1zb3VyY2UtbWFwIVxuIFtzdGF0ZSBucyBzbS1qc29uXVxuIChsZXRcbiAgW3NtIChzbS9kZWNvZGUgKC5wYXJzZSBqcy9KU09OIHNtLWpzb24pKV1cbiAgKHN3YXAhIHN0YXRlIGFzc29jLWluIFs6c291cmNlLW1hcHMgbnNdIHNtKSkpXG4ifSB7OnN5bSBsb2FkLWFuYWx5c2lzLWNhY2hlISwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtzdGF0ZSBucyBjYWNoZV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBsb2FkLWFuYWx5c2lzLWNhY2hlIVxuIFtzdGF0ZSBucyBjYWNoZV1cbiAoc3dhcCEgc3RhdGUgYXNzb2MtaW4gWzpjbGpzLmFuYWx5emVyL25hbWVzcGFjZXMgbnNdIGNhY2hlKSlcbiJ9IHs6c3ltIGFuYWx5emUtc3RyLCA6bWV0YSB7OmRvYyAiQW5hbHl6ZSBDbG9qdXJlU2NyaXB0IHNvdXJjZS4gVGhlIGNvbXBpbGVyIHN0YXRlIHdpbGwgYmUgcG9wdWxhdGVkIHdpdGhcbiAgIHRoZSByZXN1bHRzIG9mIGFuYWx5emVzLiBUaGUgcGFyYW1ldGVyczpcblxuICAgc3RhdGUgKGF0b20pXG4gICAgIHRoZSBjb21waWxlciBzdGF0ZVxuXG4gICBzb3VyY2UgKHN0cmluZylcbiAgICAgdGhlIENsb2p1cmVTY3JpcHQgc291cmNlXG5cbiAgIG5hbWUgKHN5bWJvbCBvciBzdHJpbmcpXG4gICAgIG9wdGlvbmFsLCB0aGUgbmFtZSBvZiB0aGUgc291cmNlXG5cbiAgIG9wdHMgKG1hcClcbiAgICAgY29tcGlsYXRpb24gb3B0aW9ucy5cblxuICAgICAgOmV2YWwgICAgICAgICAgICAgLSBldmFsIGZ1bmN0aW9uIHRvIGludm9rZSwgc2VlICpldmFsLWZuKlxuICAgICAgOmxvYWQgICAgICAgICAgICAgLSBsaWJyYXJ5IHJlc29sdXRpb24gZnVuY3Rpb24sIHNlZSAqbG9hZC1mbipcbiAgICAgIDpzb3VyY2UtbWFwICAgICAgIC0gc2V0IHRvIHRydWUgdG8gZ2VuZXJhdGUgaW5saW5lIHNvdXJjZSBtYXAgaW5mb3JtYXRpb25cbiAgICAgIDpkZWYtZW1pdHMtdmFyICAgIC0gc2V0cyB3aGV0aGVyIGRlZiAoYW5kIGRlcml2ZWQpIGZvcm1zIHJldHVybiBlaXRoZXIgYSBWYXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGlmIHNldCB0byB0cnVlKSBvciB0aGUgZGVmIGluaXQgdmFsdWUgKGlmIGZhbHNlKS5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgRGVmYXVsdHMgdG8gZmFsc2UuXG4gICAgICA6Y2hlY2tlZC1hcnJheXMgICAtIGlmIDp3YXJuIG9yIDplcnJvciwgY2hlY2tzIGluZmVycmVkIHR5cGVzIGFuZCB2YWx1ZXMgcGFzc2VkXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRvIGFnZXQvYXNldC4gTG9ncyBmb3IgaW5jb3JyZWN0IHZhbHVlcyBpZiA6d2FybiwgdGhyb3dzIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDplcnJvci4gRGVmYXVsdHMgdG8gZmFsc2UuXG4gICAgICA6c3RhdGljLWZucyAgICAgICAtIGVtcGxveSBzdGF0aWMgZGlzcGF0Y2ggdG8gc3BlY2lmaWMgZnVuY3Rpb24gYXJpdGllcyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICBlbWl0dGVkIEphdmFTY3JpcHQsIGFzIG9wcG9zZWQgdG8gbWFraW5nIHVzZSBvZiB0aGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYGNhbGxgIGNvbnN0cnVjdC4gRGVmYXVsdHMgdG8gZmFsc2UuXG4gICAgICA6Zm4taW52b2tlLWRpcmVjdCAtIGlmIGB0cnVlYCwgZG9lcyBub3QgZ2VuZXJhdGUgYC5jYWxsKG51bGwuLi4pYCBjYWxscyBmb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdW5rbm93biBmdW5jdGlvbnMsIGJ1dCBpbnN0ZWFkIGRpcmVjdCBpbnZva2VzIHZpYVxuICAgICAgICAgICAgICAgICAgICAgICAgICBgZihhMCxhMS4uLilgLiBEZWZhdWx0cyB0byBgZmFsc2VgLlxuICAgICAgOnRhcmdldCAgICAgICAgICAgLSB1c2UgYDpub2RlanNgIGlmIHRhcmdldGluZyBOb2RlLmpzLiBUYWtlcyBubyBvdGhlciBvcHRpb25zXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGF0IHRoZSBtb21lbnQuXG4gICAgICA6bnMgICAgICAgICAgICAgICAtIG9wdGlvbmFsLCB0aGUgbmFtZXNwYWNlIGluIHdoaWNoIHRvIGV2YWx1YXRlIHRoZSBzb3VyY2UuXG4gICAgICA6dmVyYm9zZSAgICAgICAgICAtIG9wdGlvbmFsLCBlbWl0IGRldGFpbHMgZnJvbSBjb21waWxlciBhY3Rpdml0eS4gRGVmYXVsdHMgdG9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UuXG4gICAgICA6Y29udGV4dCAgICAgICAgICAtIG9wdGlvbmFsLCBzZXRzIHRoZSBjb250ZXh0IGZvciB0aGUgc291cmNlLiBQb3NzaWJsZSB2YWx1ZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYXJlIGA6ZXhwcmAsIGA6c3RhdGVtZW50YCBhbmQgYDpyZXR1cm5gLiBEZWZhdWx0cyB0b1xuICAgICAgICAgICAgICAgICAgICAgICAgICBgOnN0YXRlbWVudGAuXG5cbiAgIGNiIChmdW5jdGlvbilcbiAgICAgY2FsbGJhY2ssIHdpbGwgYmUgaW52b2tlZCB3aXRoIGEgbWFwLiBJZiBzdWNjZXNzZnVsIHRoZSBtYXAgd2lsbCBjb250YWluXG4gICAgIGEga2V5IDp2YWx1ZSwgdGhlIGFjdHVhbCB2YWx1ZSBpcyBub3QgbWVhbmluZ2Z1bC4gSWYgdW5zdWNjZXNzZnVsIHRoZVxuICAgICBtYXAgd2lsbCBjb250YWluIGEga2V5IDplcnJvciB3aXRoIGFuIGV4LWluZm8gaW5zdGFuY2UgZGVzY3JpYmluZyB0aGUgY2F1c2VcbiAgICAgb2YgZmFpbHVyZS4iLCA6YXJnbGlzdHMgW1tzdGF0ZSBzb3VyY2UgY2JdIFtzdGF0ZSBzb3VyY2UgbmFtZSBjYl0gW3N0YXRlIHNvdXJjZSBuYW1lIG9wdHMgY2JdXX0sIDpzb3VyY2UgIihkZWZuXG4gYW5hbHl6ZS1zdHJcbiBcIkFuYWx5emUgQ2xvanVyZVNjcmlwdCBzb3VyY2UuIFRoZSBjb21waWxlciBzdGF0ZSB3aWxsIGJlIHBvcHVsYXRlZCB3aXRoXFxuICAgdGhlIHJlc3VsdHMgb2YgYW5hbHl6ZXMuIFRoZSBwYXJhbWV0ZXJzOlxcblxcbiAgIHN0YXRlIChhdG9tKVxcbiAgICAgdGhlIGNvbXBpbGVyIHN0YXRlXFxuXFxuICAgc291cmNlIChzdHJpbmcpXFxuICAgICB0aGUgQ2xvanVyZVNjcmlwdCBzb3VyY2VcXG5cXG4gICBuYW1lIChzeW1ib2wgb3Igc3RyaW5nKVxcbiAgICAgb3B0aW9uYWwsIHRoZSBuYW1lIG9mIHRoZSBzb3VyY2VcXG5cXG4gICBvcHRzIChtYXApXFxuICAgICBjb21waWxhdGlvbiBvcHRpb25zLlxcblxcbiAgICAgIDpldmFsICAgICAgICAgICAgIC0gZXZhbCBmdW5jdGlvbiB0byBpbnZva2UsIHNlZSAqZXZhbC1mbipcXG4gICAgICA6bG9hZCAgICAgICAgICAgICAtIGxpYnJhcnkgcmVzb2x1dGlvbiBmdW5jdGlvbiwgc2VlICpsb2FkLWZuKlxcbiAgICAgIDpzb3VyY2UtbWFwICAgICAgIC0gc2V0IHRvIHRydWUgdG8gZ2VuZXJhdGUgaW5saW5lIHNvdXJjZSBtYXAgaW5mb3JtYXRpb25cXG4gICAgICA6ZGVmLWVtaXRzLXZhciAgICAtIHNldHMgd2hldGhlciBkZWYgKGFuZCBkZXJpdmVkKSBmb3JtcyByZXR1cm4gZWl0aGVyIGEgVmFyXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAoaWYgc2V0IHRvIHRydWUpIG9yIHRoZSBkZWYgaW5pdCB2YWx1ZSAoaWYgZmFsc2UpLlxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgRGVmYXVsdHMgdG8gZmFsc2UuXFxuICAgICAgOmNoZWNrZWQtYXJyYXlzICAgLSBpZiA6d2FybiBvciA6ZXJyb3IsIGNoZWNrcyBpbmZlcnJlZCB0eXBlcyBhbmQgdmFsdWVzIHBhc3NlZFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gYWdldC9hc2V0LiBMb2dzIGZvciBpbmNvcnJlY3QgdmFsdWVzIGlmIDp3YXJuLCB0aHJvd3MgaWZcXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDplcnJvci4gRGVmYXVsdHMgdG8gZmFsc2UuXFxuICAgICAgOnN0YXRpYy1mbnMgICAgICAgLSBlbXBsb3kgc3RhdGljIGRpc3BhdGNoIHRvIHNwZWNpZmljIGZ1bmN0aW9uIGFyaXRpZXMgaW5cXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGVtaXR0ZWQgSmF2YVNjcmlwdCwgYXMgb3Bwb3NlZCB0byBtYWtpbmcgdXNlIG9mIHRoZVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYGNhbGxgIGNvbnN0cnVjdC4gRGVmYXVsdHMgdG8gZmFsc2UuXFxuICAgICAgOmZuLWludm9rZS1kaXJlY3QgLSBpZiBgdHJ1ZWAsIGRvZXMgbm90IGdlbmVyYXRlIGAuY2FsbChudWxsLi4uKWAgY2FsbHMgZm9yXFxuICAgICAgICAgICAgICAgICAgICAgICAgICB1bmtub3duIGZ1bmN0aW9ucywgYnV0IGluc3RlYWQgZGlyZWN0IGludm9rZXMgdmlhXFxuICAgICAgICAgICAgICAgICAgICAgICAgICBgZihhMCxhMS4uLilgLiBEZWZhdWx0cyB0byBgZmFsc2VgLlxcbiAgICAgIDp0YXJnZXQgICAgICAgICAgIC0gdXNlIGA6bm9kZWpzYCBpZiB0YXJnZXRpbmcgTm9kZS5qcy4gVGFrZXMgbm8gb3RoZXIgb3B0aW9uc1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYXQgdGhlIG1vbWVudC5cXG4gICAgICA6bnMgICAgICAgICAgICAgICAtIG9wdGlvbmFsLCB0aGUgbmFtZXNwYWNlIGluIHdoaWNoIHRvIGV2YWx1YXRlIHRoZSBzb3VyY2UuXFxuICAgICAgOnZlcmJvc2UgICAgICAgICAgLSBvcHRpb25hbCwgZW1pdCBkZXRhaWxzIGZyb20gY29tcGlsZXIgYWN0aXZpdHkuIERlZmF1bHRzIHRvXFxuICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZS5cXG4gICAgICA6Y29udGV4dCAgICAgICAgICAtIG9wdGlvbmFsLCBzZXRzIHRoZSBjb250ZXh0IGZvciB0aGUgc291cmNlLiBQb3NzaWJsZSB2YWx1ZXNcXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGFyZSBgOmV4cHJgLCBgOnN0YXRlbWVudGAgYW5kIGA6cmV0dXJuYC4gRGVmYXVsdHMgdG9cXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGA6c3RhdGVtZW50YC5cXG5cXG4gICBjYiAoZnVuY3Rpb24pXFxuICAgICBjYWxsYmFjaywgd2lsbCBiZSBpbnZva2VkIHdpdGggYSBtYXAuIElmIHN1Y2Nlc3NmdWwgdGhlIG1hcCB3aWxsIGNvbnRhaW5cXG4gICAgIGEga2V5IDp2YWx1ZSwgdGhlIGFjdHVhbCB2YWx1ZSBpcyBub3QgbWVhbmluZ2Z1bC4gSWYgdW5zdWNjZXNzZnVsIHRoZVxcbiAgICAgbWFwIHdpbGwgY29udGFpbiBhIGtleSA6ZXJyb3Igd2l0aCBhbiBleC1pbmZvIGluc3RhbmNlIGRlc2NyaWJpbmcgdGhlIGNhdXNlXFxuICAgICBvZiBmYWlsdXJlLlwiXG4gKFtzdGF0ZSBzb3VyY2UgY2JdIChhbmFseXplLXN0ciBzdGF0ZSBzb3VyY2UgbmlsIGNiKSlcbiAoW3N0YXRlIHNvdXJjZSBuYW1lIGNiXSAoYW5hbHl6ZS1zdHIgc3RhdGUgc291cmNlIG5hbWUgbmlsIGNiKSlcbiAoW3N0YXRlIHNvdXJjZSBuYW1lIG9wdHMgY2JdXG4gIHs6cHJlXG4gICBbKGF0b20/IHN0YXRlKVxuICAgIChzdHJpbmc/IHNvdXJjZSlcbiAgICAodmFsaWQtbmFtZT8gbmFtZSlcbiAgICAodmFsaWQtb3B0cz8gb3B0cylcbiAgICAoZm4/IGNiKV19XG4gIChhbmFseXplLXN0cipcbiAgIHs6KmNvbXBpbGVyKiBzdGF0ZSxcbiAgICA6KmRhdGEtcmVhZGVycyogdGFncy8qY2xqcy1kYXRhLXJlYWRlcnMqLFxuICAgIDoqcGFzc2VzKiAob3IgKDpwYXNzZXMgb3B0cykgYW5hLypwYXNzZXMqKSxcbiAgICA6KmFuYWx5emUtZGVwcyogKDphbmFseXplLWRlcHMgb3B0cyB0cnVlKSxcbiAgICA6KmNsanMtZGVwLXNldCogYW5hLypjbGpzLWRlcC1zZXQqLFxuICAgIDoqbG9hZC1tYWNyb3MqICg6bG9hZC1tYWNyb3Mgb3B0cyB0cnVlKSxcbiAgICA6KmxvYWQtZm4qIChvciAoOmxvYWQgb3B0cykgKmxvYWQtZm4qKSxcbiAgICA6KmV2YWwtZm4qIChvciAoOmV2YWwgb3B0cykgKmV2YWwtZm4qKX1cbiAgIHNvdXJjZVxuICAgbmFtZVxuICAgb3B0c1xuICAgY2IpKSlcbiJ9IHs6c3ltICpldmFsLWZuKiwgOm1ldGEgezpkb2MgIkVhY2ggcnVudGltZSBlbnZpcm9ubWVudCBwcm92aWRlcyB2YXJpb3VzIHdheXMgdG8gZXZhbCBKYXZhU2NyaXB0XG4gIHNvdXJjZS4gV2hhdGV2ZXIgZnVuY3Rpb24gKmV2YWwtZm4qIGlzIGJvdW5kIHRvIHdpbGwgYmUgcGFzc2VkIGEgbWFwXG4gIGNvbnRhaW5pbmcgdGhlIGZvbGxvd2luZyBrZXlzOlxuXG4gIDpzb3VyY2UgLSB0aGUgc291cmNlIG9mIHRoZSBsaWJyYXJ5IChzdHJpbmcpXG4gIDpuYW1lICAgLSB1c2VkIHRvIHVuaXF1ZSBpZGVudGlmeSB0aGUgc2NyaXB0IChzeW1ib2wpXG4gIDpjYWNoZSAgLSBpZiB0aGUgc291cmNlIHdhcyBvcmlnaW5hbGx5IENsb2p1cmVTY3JpcHQsIHdpbGwgYmUgZ2l2ZW4gdGhlXG4gICAgICAgICAgICBhbmFseXNpcyBjYWNoZS5cblxuICBUaGUgcmVzdWx0IG9mIGV2YWx1YXRpb24gc2hvdWxkIGJlIHRoZSByZXR1cm4gdmFsdWUuIn0sIDpzb3VyY2UgIihkZWZvbmNlICpldmFsLWZuKiAoZm4gW21dICh0aHJvdyAoanMvRXJyb3IuIFwiTm8gKmV2YWwtZm4qIHNldFwiKSkpKVxuIn0pLCBydW0uY29yZSAoezpzeW0gbW91bnQsIDptZXRhIHs6ZG9jICJBZGQgZWxlbWVudCB0byB0aGUgRE9NIHRyZWUuIElkZW1wb3RlbnQuIFN1YnNlcXVlbnQgbW91bnRzIHdpbGwganVzdCB1cGRhdGUgZWxlbWVudC4iLCA6YXJnbGlzdHMgKFtlbGVtZW50IG5vZGVdKX0sIDpzb3VyY2UgIihkZWZuXG4gbW91bnRcbiBcIkFkZCBlbGVtZW50IHRvIHRoZSBET00gdHJlZS4gSWRlbXBvdGVudC4gU3Vic2VxdWVudCBtb3VudHMgd2lsbCBqdXN0IHVwZGF0ZSBlbGVtZW50LlwiXG4gW2VsZW1lbnQgbm9kZV1cbiAoanMvUmVhY3RET00ucmVuZGVyIGVsZW1lbnQgbm9kZSlcbiBuaWwpXG4ifSB7OnN5bSB1bm1vdW50LCA6bWV0YSB7OmRvYyAiUmVtb3ZlcyBjb21wb25lbnQgZnJvbSB0aGUgRE9NIHRyZWUuIiwgOmFyZ2xpc3RzIChbbm9kZV0pfSwgOnNvdXJjZSAiKGRlZm5cbiB1bm1vdW50XG4gXCJSZW1vdmVzIGNvbXBvbmVudCBmcm9tIHRoZSBET00gdHJlZS5cIlxuIFtub2RlXVxuIChqcy9SZWFjdERPTS51bm1vdW50Q29tcG9uZW50QXROb2RlIG5vZGUpKVxuIn0gezpzeW0gbG9jYWwsIDptZXRhIHs6ZG9jICJNaXhpbiBjb25zdHJ1Y3Rvci4gQWRkcyBhbiBhdG9tIHRvIGNvbXBvbmVudOKAmXMgc3RhdGUgdGhhdCBjYW4gYmUgdXNlZCB0byBrZWVwIHN0dWZmIGR1cmluZyBjb21wb25lbnTigJlzIGxpZmVjeWNsZS4gQ29tcG9uZW50IHdpbGwgYmUgcmUtcmVuZGVyZWQgaWYgYXRvbeKAmXMgdmFsdWUgY2hhbmdlcy4gQXRvbSBpcyBzdG9yZWQgdW5kZXIgdXNlci1wcm92aWRlZCBrZXkgb3IgdW5kZXIgYDpydW0vbG9jYWxgIGJ5IGRlZmF1bHQuXG4gIFxuICAgYGBgXG4gICAocnVtL2RlZmNzIGNvdW50ZXIgPCAocnVtL2xvY2FsIDAgOmNudClcbiAgICAgW3N0YXRlIGxhYmVsXVxuICAgICAobGV0IFsqY250ICg6Y250IHN0YXRlKV1cbiAgICAgICBbOmRpdiB7Om9uLWNsaWNrIChmbiBbX10gKHN3YXAhICpjbnQgaW5jKSl9XG4gICAgICAgICBsYWJlbCBAKmNudF0pKVxuICAgXG4gICAocnVtL21vdW50IChjb3VudGVyIFwiQ2xpY2sgY291bnQ6IFwiKSlcbiAgIGBgYCIsIDphcmdsaXN0cyBbW2luaXRpYWxdIFtpbml0aWFsIGtleV1dfSwgOnNvdXJjZSAiKGRlZm5cbiBsb2NhbFxuIFwiTWl4aW4gY29uc3RydWN0b3IuIEFkZHMgYW4gYXRvbSB0byBjb21wb25lbnTigJlzIHN0YXRlIHRoYXQgY2FuIGJlIHVzZWQgdG8ga2VlcCBzdHVmZiBkdXJpbmcgY29tcG9uZW504oCZcyBsaWZlY3ljbGUuIENvbXBvbmVudCB3aWxsIGJlIHJlLXJlbmRlcmVkIGlmIGF0b23igJlzIHZhbHVlIGNoYW5nZXMuIEF0b20gaXMgc3RvcmVkIHVuZGVyIHVzZXItcHJvdmlkZWQga2V5IG9yIHVuZGVyIGA6cnVtL2xvY2FsYCBieSBkZWZhdWx0LlxcbiAgXFxuICAgYGBgXFxuICAgKHJ1bS9kZWZjcyBjb3VudGVyIDwgKHJ1bS9sb2NhbCAwIDpjbnQpXFxuICAgICBbc3RhdGUgbGFiZWxdXFxuICAgICAobGV0IFsqY250ICg6Y250IHN0YXRlKV1cXG4gICAgICAgWzpkaXYgezpvbi1jbGljayAoZm4gW19dIChzd2FwISAqY250IGluYykpfVxcbiAgICAgICAgIGxhYmVsIEAqY250XSkpXFxuICAgXFxuICAgKHJ1bS9tb3VudCAoY291bnRlciBcXFwiQ2xpY2sgY291bnQ6IFxcXCIpKVxcbiAgIGBgYFwiXG4gKFtpbml0aWFsXSAobG9jYWwgaW5pdGlhbCA6cnVtL2xvY2FsKSlcbiAoW2luaXRpYWwga2V5XVxuICB7OndpbGwtbW91bnRcbiAgIChmblxuICAgIFtzdGF0ZV1cbiAgICAobGV0XG4gICAgIFtsb2NhbC1zdGF0ZVxuICAgICAgKGF0b20gaW5pdGlhbClcbiAgICAgIGNvbXBvbmVudFxuICAgICAgKDpydW0vcmVhY3QtY29tcG9uZW50IHN0YXRlKV1cbiAgICAgKGFkZC13YXRjaFxuICAgICAgbG9jYWwtc3RhdGVcbiAgICAgIGtleVxuICAgICAgKGZuIFtfIF8gXyBfXSAocmVxdWVzdC1yZW5kZXIgY29tcG9uZW50KSkpXG4gICAgIChhc3NvYyBzdGF0ZSBrZXkgbG9jYWwtc3RhdGUpKSl9KSlcbiJ9IHs6c3ltIHJlYWN0aXZlLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZlxuIHJlYWN0aXZlXG4gXCJNaXhpbi4gV29ya3MgaW4gY29uanVuY3Rpb24gd2l0aCBbW3JlYWN0XV0uXFxuICBcXG4gICBgYGBcXG4gICAocnVtL2RlZmMgY29tcCA8IHJ1bS9yZWFjdGl2ZVxcbiAgICAgWypjb3VudGVyXVxcbiAgICAgWzpkaXYgKHJ1bS9yZWFjdCBjb3VudGVyKV0pXFxuXFxuICAgKGRlZiAqY291bnRlciAoYXRvbSAwKSlcXG4gICAocnVtL21vdW50IChjb21wICpjb3VudGVyKSBqcy9kb2N1bWVudC5ib2R5KVxcbiAgIChzd2FwISAqY291bnRlciBpbmMpIDs7IHdpbGwgZm9yY2UgY29tcCB0byByZS1yZW5kZXJcXG4gICBgYGBcIlxuIHs6aW5pdFxuICAoZm4gW3N0YXRlIHByb3BzXSAoYXNzb2Mgc3RhdGUgOnJ1bS5yZWFjdGl2ZS9rZXkgKHJhbmRvbS11dWlkKSkpLFxuICA6d3JhcC1yZW5kZXJcbiAgKGZuXG4gICBbcmVuZGVyLWZuXVxuICAgKGZuXG4gICAgW3N0YXRlXVxuICAgIChiaW5kaW5nXG4gICAgIFsqcmVhY3Rpb25zKiAodm9sYXRpbGUhICN7fSldXG4gICAgIChsZXRcbiAgICAgIFtjb21wXG4gICAgICAgKDpydW0vcmVhY3QtY29tcG9uZW50IHN0YXRlKVxuICAgICAgIG9sZC1yZWFjdGlvbnNcbiAgICAgICAoOnJ1bS5yZWFjdGl2ZS9yZWZzIHN0YXRlICN7fSlcbiAgICAgICBbZG9tIG5leHQtc3RhdGVdXG4gICAgICAgKHJlbmRlci1mbiBzdGF0ZSlcbiAgICAgICBuZXctcmVhY3Rpb25zXG4gICAgICAgQCpyZWFjdGlvbnMqXG4gICAgICAga2V5XG4gICAgICAgKDpydW0ucmVhY3RpdmUva2V5IHN0YXRlKV1cbiAgICAgIChkb3NlcVxuICAgICAgIFtyZWYgb2xkLXJlYWN0aW9uc11cbiAgICAgICAod2hlbi1ub3QgKGNvbnRhaW5zPyBuZXctcmVhY3Rpb25zIHJlZikgKHJlbW92ZS13YXRjaCByZWYga2V5KSkpXG4gICAgICAoZG9zZXFcbiAgICAgICBbcmVmIG5ldy1yZWFjdGlvbnNdXG4gICAgICAgKHdoZW4tbm90XG4gICAgICAgIChjb250YWlucz8gb2xkLXJlYWN0aW9ucyByZWYpXG4gICAgICAgIChhZGQtd2F0Y2ggcmVmIGtleSAoZm4gW18gXyBfIF9dIChyZXF1ZXN0LXJlbmRlciBjb21wKSkpKSlcbiAgICAgIFtkb20gKGFzc29jIG5leHQtc3RhdGUgOnJ1bS5yZWFjdGl2ZS9yZWZzIG5ldy1yZWFjdGlvbnMpXSkpKSksXG4gIDp3aWxsLXVubW91bnRcbiAgKGZuXG4gICBbc3RhdGVdXG4gICAobGV0XG4gICAgW2tleSAoOnJ1bS5yZWFjdGl2ZS9rZXkgc3RhdGUpXVxuICAgIChkb3NlcSBbcmVmICg6cnVtLnJlYWN0aXZlL3JlZnMgc3RhdGUpXSAocmVtb3ZlLXdhdGNoIHJlZiBrZXkpKSlcbiAgIChkaXNzb2Mgc3RhdGUgOnJ1bS5yZWFjdGl2ZS9yZWZzIDpydW0ucmVhY3RpdmUva2V5KSl9KVxuIn0gezpzeW0gcmVmLW5vZGUsIDptZXRhIHs6ZG9jICJHaXZlbiBzdGF0ZSBhbmQgcmVmIGhhbmRsZSwgcmV0dXJucyBET00gbm9kZSBhc3NvY2lhdGVkIHdpdGggcmVmLiIsIDphcmdsaXN0cyAoW3N0YXRlIGtleV0pfSwgOnNvdXJjZSAiKGRlZm5cbiByZWYtbm9kZVxuIFwiR2l2ZW4gc3RhdGUgYW5kIHJlZiBoYW5kbGUsIHJldHVybnMgRE9NIG5vZGUgYXNzb2NpYXRlZCB3aXRoIHJlZi5cIlxuIFtzdGF0ZSBrZXldXG4gKGpzL1JlYWN0RE9NLmZpbmRET01Ob2RlIChyZWYgc3RhdGUgKG5hbWUga2V5KSkpKVxuIn0gezpzeW0gcmVhY3QsIDptZXRhIHs6ZG9jICJXb3JrcyBpbiBjb25qdW5jdGlvbiB3aXRoIFtbcmVhY3RpdmVdXSBtaXhpbi4gVXNlIHRoaXMgZnVuY3Rpb24gaW5zdGVhZCBvZiBgZGVyZWZgIGluc2lkZSByZW5kZXIsIGFuZCB5b3VyIGNvbXBvbmVudCB3aWxsIHN1YnNjcmliZSB0byBjaGFuZ2VzIGhhcHBlbmluZyB0byB0aGUgZGVyZWZlZCBhdG9tLiIsIDphcmdsaXN0cyAoW3JlZl0pfSwgOnNvdXJjZSAiKGRlZm5cbiByZWFjdFxuIFwiV29ya3MgaW4gY29uanVuY3Rpb24gd2l0aCBbW3JlYWN0aXZlXV0gbWl4aW4uIFVzZSB0aGlzIGZ1bmN0aW9uIGluc3RlYWQgb2YgYGRlcmVmYCBpbnNpZGUgcmVuZGVyLCBhbmQgeW91ciBjb21wb25lbnQgd2lsbCBzdWJzY3JpYmUgdG8gY2hhbmdlcyBoYXBwZW5pbmcgdG8gdGhlIGRlcmVmZWQgYXRvbS5cIlxuIFtyZWZdXG4gKGFzc2VydFxuICAqcmVhY3Rpb25zKlxuICBcInJ1bS5jb3JlL3JlYWN0IGlzIG9ubHkgc3VwcG9ydGVkIGluIGNvbmp1bmN0aW9uIHdpdGggcnVtLmNvcmUvcmVhY3RpdmVcIilcbiAodnN3YXAhICpyZWFjdGlvbnMqIGNvbmogcmVmKVxuIEByZWYpXG4ifSB7OnN5bSByZXF1ZXN0LXJlbmRlciwgOm1ldGEgezpkb2MgIlNjaGVkdWxlcyByZWFjdCBjb21wb25lbnQgdG8gYmUgcmVuZGVyZWQgb24gbmV4dCBhbmltYXRpb24gZnJhbWUuIiwgOmFyZ2xpc3RzIChbY29tcG9uZW50XSl9LCA6c291cmNlICIoZGVmblxuIHJlcXVlc3QtcmVuZGVyXG4gXCJTY2hlZHVsZXMgcmVhY3QgY29tcG9uZW50IHRvIGJlIHJlbmRlcmVkIG9uIG5leHQgYW5pbWF0aW9uIGZyYW1lLlwiXG4gW2NvbXBvbmVudF1cbiAod2hlbiAoZW1wdHk/IEByZW5kZXItcXVldWUpIChzY2hlZHVsZSByZW5kZXIpKVxuICh2c3dhcCEgcmVuZGVyLXF1ZXVlIGNvbmogY29tcG9uZW50KSlcbiJ9IHs6c3ltIHBvcnRhbCwgOm1ldGEgezpkb2MgIlJlbmRlciBgZWxlbWVudGAgaW4gYSBET00gYG5vZGVgIHRoYXQgaXMgb3VzaWRlIG9mIGN1cnJlbnQgRE9NIGhpZXJhcmNoeS4iLCA6YXJnbGlzdHMgKFtlbGVtZW50IG5vZGVdKX0sIDpzb3VyY2UgIihkZWZuXG4gcG9ydGFsXG4gXCJSZW5kZXIgYGVsZW1lbnRgIGluIGEgRE9NIGBub2RlYCB0aGF0IGlzIG91c2lkZSBvZiBjdXJyZW50IERPTSBoaWVyYXJjaHkuXCJcbiBbZWxlbWVudCBub2RlXVxuIChqcy9SZWFjdERPTS5jcmVhdGVQb3J0YWwgZWxlbWVudCBub2RlKSlcbiJ9IHs6c3ltIHdpdGgta2V5LCA6bWV0YSB7OmRvYyAiQWRkcyBSZWFjdCBrZXkgdG8gZWxlbWVudC5cbiAgIFxuICAgYGBgXG4gICAocnVtL2RlZmMgbGFiZWwgW3RleHRdIFs6ZGl2IHRleHRdKVxuXG4gICAoLT4gKGxhYmVsKVxuICAgICAgIChydW0vd2l0aC1rZXkgXCJhYmNcIilcbiAgICAgICAocnVtL21vdW50IGpzL2RvY3VtZW50LmJvZHkpKVxuICAgYGBgIiwgOmFyZ2xpc3RzIChbZWxlbWVudCBrZXldKX0sIDpzb3VyY2UgIihkZWZuXG4gd2l0aC1rZXlcbiBcIkFkZHMgUmVhY3Qga2V5IHRvIGVsZW1lbnQuXFxuICAgXFxuICAgYGBgXFxuICAgKHJ1bS9kZWZjIGxhYmVsIFt0ZXh0XSBbOmRpdiB0ZXh0XSlcXG5cXG4gICAoLT4gKGxhYmVsKVxcbiAgICAgICAocnVtL3dpdGgta2V5IFxcXCJhYmNcXFwiKVxcbiAgICAgICAocnVtL21vdW50IGpzL2RvY3VtZW50LmJvZHkpKVxcbiAgIGBgYFwiXG4gW2VsZW1lbnQga2V5XVxuIChqcy9SZWFjdC5jbG9uZUVsZW1lbnQgZWxlbWVudCAjanMge1wia2V5XCIga2V5fSBuaWwpKVxuIn0gezpzeW0gYnVpbGQtZGVmY3MsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbcmVuZGVyLWJvZHkgbWl4aW5zIGRpc3BsYXktbmFtZV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBidWlsZC1kZWZjc1xuIFtyZW5kZXItYm9keSBtaXhpbnMgZGlzcGxheS1uYW1lXVxuIChsZXRcbiAgW3JlbmRlclxuICAgKGZuIFtzdGF0ZV0gWyhhcHBseSByZW5kZXItYm9keSBzdGF0ZSAoOnJ1bS9hcmdzIHN0YXRlKSkgc3RhdGVdKV1cbiAgKGJ1aWxkLWN0b3IgcmVuZGVyIG1peGlucyBkaXNwbGF5LW5hbWUpKSlcbiJ9IHs6c3ltIHJlZiwgOm1ldGEgezpkb2MgIkdpdmVuIHN0YXRlIGFuZCByZWYgaGFuZGxlLCByZXR1cm5zIFJlYWN0IGNvbXBvbmVudC4iLCA6YXJnbGlzdHMgKFtzdGF0ZSBrZXldKX0sIDpzb3VyY2UgIihkZWZuXG4gcmVmXG4gXCJHaXZlbiBzdGF0ZSBhbmQgcmVmIGhhbmRsZSwgcmV0dXJucyBSZWFjdCBjb21wb25lbnQuXCJcbiBbc3RhdGUga2V5XVxuICgtPiBzdGF0ZSA6cnVtL3JlYWN0LWNvbXBvbmVudCAoYWdldCBcInJlZnNcIikgKGFnZXQgKG5hbWUga2V5KSkpKVxuIn0gezpzeW0gc3RhdGljLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZlxuIHN0YXRpY1xuIFwiTWl4aW4uIFdpbGwgYXZvaWQgcmUtcmVuZGVyIGlmIG5vbmUgb2YgY29tcG9uZW504oCZcyBhcmd1bWVudHMgaGF2ZSBjaGFuZ2VkLiBEb2VzIGVxdWFsaXR5IGNoZWNrIChgPWApIG9uIGFsbCBhcmd1bWVudHMuXFxuICBcXG4gICBgYGBcXG4gICAocnVtL2RlZmMgbGFiZWwgPCBydW0vc3RhdGljXFxuICAgICBbdGV4dF1cXG4gICAgIFs6ZGl2IHRleHRdKVxcbiAgICAgXFxuICAgKHJ1bS9tb3VudCAobGFiZWwgXFxcImFiY1xcXCIpIGpzL2RvY3VtZW50LmJvZHkpXFxuXFxuICAgOzsgZGVmICE9IGFiYywgd2lsbCByZS1yZW5kZXJcXG4gICAocnVtL21vdW50IChsYWJlbCBcXFwiZGVmXFxcIikganMvZG9jdW1lbnQuYm9keSlcXG5cXG4gICA7OyBkZWYgPT0gZGVmLCB3b27igJl0IHJlLXJlbmRlclxcbiAgIChydW0vbW91bnQgKGxhYmVsIFxcXCJkZWZcXFwiKSBqcy9kb2N1bWVudC5ib2R5KVxcbiAgIGBgYFwiXG4gezpzaG91bGQtdXBkYXRlXG4gIChmblxuICAgW29sZC1zdGF0ZSBuZXctc3RhdGVdXG4gICAobm90PSAoOnJ1bS9hcmdzIG9sZC1zdGF0ZSkgKDpydW0vYXJncyBuZXctc3RhdGUpKSl9KVxuIn0gezpzeW0gY3Vyc29yLCA6bWV0YSB7OmRvYyAiU2FtZSBhcyBbW2N1cnNvci1pbl1dIGJ1dCBhY2NlcHRzIHNpbmdsZSBrZXkgaW5zdGVhZCBvZiBwYXRoIHZlY3Rvci4iLCA6YXJnbGlzdHMgKFtyZWYga2V5ICYgb3B0aW9uc10pfSwgOnNvdXJjZSAiKGRlZm5cbiBjdXJzb3JcbiBcIlNhbWUgYXMgW1tjdXJzb3ItaW5dXSBidXQgYWNjZXB0cyBzaW5nbGUga2V5IGluc3RlYWQgb2YgcGF0aCB2ZWN0b3IuXCJcbiBbcmVmIGtleSAmIG9wdGlvbnNdXG4gKGFwcGx5IGN1cnNvci1pbiByZWYgW2tleV0gb3B0aW9ucykpXG4ifSB7OnN5bSBzdGF0ZSwgOm1ldGEgezpkb2MgIkdpdmVuIFJlYWN0IGNvbXBvbmVudCwgcmV0dXJucyBSdW0gc3RhdGUgYXNzb2NpYXRlZCB3aXRoIGl0LiIsIDphcmdsaXN0cyAoW2NvbXBdKX0sIDpzb3VyY2UgIihkZWZuXG4gc3RhdGVcbiBcIkdpdmVuIFJlYWN0IGNvbXBvbmVudCwgcmV0dXJucyBSdW0gc3RhdGUgYXNzb2NpYXRlZCB3aXRoIGl0LlwiXG4gW2NvbXBdXG4gKGdvYmovZ2V0ICguLXN0YXRlIGNvbXApIFwiOnJ1bS9zdGF0ZVwiKSlcbiJ9IHs6c3ltIGN1cnNvci1pbiwgOm1ldGEgezpkb2MgIkdpdmVuIGF0b20gd2l0aCBkZWVwIG5lc3RlZCB2YWx1ZSBhbmQgcGF0aCBpbnNpZGUgaXQsIGNyZWF0ZXMgYW4gYXRvbS1saWtlIHN0cnVjdHVyZVxuICAgdGhhdCBjYW4gYmUgdXNlZCBzZXBhcmF0ZWx5IGZyb20gbWFpbiBhdG9tLCBidXQgd2lsbCBzeW5jIGNoYW5nZXMgYm90aCB3YXlzOlxuICBcbiAgIGBgYFxuICAgKGRlZiBkYiAoYXRvbSB7IDp1c2VycyB7IFwiSXZhblwiIHsgOmFnZSAzMCB9fX0pKVxuICAgXG4gICAoZGVmIGl2YW4gKHJ1bS9jdXJzb3IgZGIgWzp1c2VycyBcIkl2YW5cIl0pKVxuICAgKGRlcmVmIGl2YW4pIDs7ID0+IHsgOmFnZSAzMCB9XG4gICBcbiAgIChzd2FwISBpdmFuIHVwZGF0ZSA6YWdlIGluYykgOzsgPT4geyA6YWdlIDMxIH1cbiAgIChkZXJlZiBkYikgOzsgPT4geyA6dXNlcnMgeyBcIkl2YW5cIiB7IDphZ2UgMzEgfX19XG4gICBcbiAgIChzd2FwISBkYiB1cGRhdGUtaW4gWzp1c2VycyBcIkl2YW5cIiA6YWdlXSBpbmMpXG4gICA7OyA9PiB7IDp1c2VycyB7IFwiSXZhblwiIHsgOmFnZSAzMiB9fX1cbiAgIFxuICAgKGRlcmVmIGl2YW4pIDs7ID0+IHsgOmFnZSAzMiB9XG4gICBgYGBcbiAgXG4gICBSZXR1cm5lZCB2YWx1ZSBzdXBwb3J0cyBgZGVyZWZgLCBgc3dhcCFgLCBgcmVzZXQhYCwgd2F0Y2hlcyBhbmQgbWV0YWRhdGEuXG4gIFxuICAgVGhlIG9ubHkgc3VwcG9ydGVkIG9wdGlvbiBpcyBgOm1ldGFgIiwgOmFyZ2xpc3RzIChbcmVmIHBhdGggJiB7OmFzIG9wdGlvbnN9XSl9LCA6c291cmNlICIoZGVmblxuIGN1cnNvci1pblxuIFwiR2l2ZW4gYXRvbSB3aXRoIGRlZXAgbmVzdGVkIHZhbHVlIGFuZCBwYXRoIGluc2lkZSBpdCwgY3JlYXRlcyBhbiBhdG9tLWxpa2Ugc3RydWN0dXJlXFxuICAgdGhhdCBjYW4gYmUgdXNlZCBzZXBhcmF0ZWx5IGZyb20gbWFpbiBhdG9tLCBidXQgd2lsbCBzeW5jIGNoYW5nZXMgYm90aCB3YXlzOlxcbiAgXFxuICAgYGBgXFxuICAgKGRlZiBkYiAoYXRvbSB7IDp1c2VycyB7IFxcXCJJdmFuXFxcIiB7IDphZ2UgMzAgfX19KSlcXG4gICBcXG4gICAoZGVmIGl2YW4gKHJ1bS9jdXJzb3IgZGIgWzp1c2VycyBcXFwiSXZhblxcXCJdKSlcXG4gICAoZGVyZWYgaXZhbikgOzsgPT4geyA6YWdlIDMwIH1cXG4gICBcXG4gICAoc3dhcCEgaXZhbiB1cGRhdGUgOmFnZSBpbmMpIDs7ID0+IHsgOmFnZSAzMSB9XFxuICAgKGRlcmVmIGRiKSA7OyA9PiB7IDp1c2VycyB7IFxcXCJJdmFuXFxcIiB7IDphZ2UgMzEgfX19XFxuICAgXFxuICAgKHN3YXAhIGRiIHVwZGF0ZS1pbiBbOnVzZXJzIFxcXCJJdmFuXFxcIiA6YWdlXSBpbmMpXFxuICAgOzsgPT4geyA6dXNlcnMgeyBcXFwiSXZhblxcXCIgeyA6YWdlIDMyIH19fVxcbiAgIFxcbiAgIChkZXJlZiBpdmFuKSA7OyA9PiB7IDphZ2UgMzIgfVxcbiAgIGBgYFxcbiAgXFxuICAgUmV0dXJuZWQgdmFsdWUgc3VwcG9ydHMgYGRlcmVmYCwgYHN3YXAhYCwgYHJlc2V0IWAsIHdhdGNoZXMgYW5kIG1ldGFkYXRhLlxcbiAgXFxuICAgVGhlIG9ubHkgc3VwcG9ydGVkIG9wdGlvbiBpcyBgOm1ldGFgXCJcbiBbcmVmIHBhdGggJiB7OmFzIG9wdGlvbnN9XVxuIChpZlxuICAoaW5zdGFuY2U/IGN1cnNvci9DdXJzb3IgcmVmKVxuICAoY3Vyc29yL0N1cnNvci4gKC4tcmVmIHJlZikgKGludG8gKC4tcGF0aCByZWYpIHBhdGgpICg6bWV0YSBvcHRpb25zKSlcbiAgKGN1cnNvci9DdXJzb3IuIHJlZiBwYXRoICg6bWV0YSBvcHRpb25zKSkpKVxuIn0gezpzeW0gZG9tLW5vZGUsIDptZXRhIHs6ZG9jICJHaXZlbiBzdGF0ZSwgcmV0dXJucyB0b3AtbGV2ZWwgRE9NIG5vZGUgb2YgY29tcG9uZW50LiBDYWxsIGl0IGR1cmluZyBsaWZlY3ljbGUgY2FsbGJhY2tzLiBDYW7igJl0IGJlIGNhbGxlZCBkdXJpbmcgcmVuZGVyLiIsIDphcmdsaXN0cyAoW3N0YXRlXSl9LCA6c291cmNlICIoZGVmblxuIGRvbS1ub2RlXG4gXCJHaXZlbiBzdGF0ZSwgcmV0dXJucyB0b3AtbGV2ZWwgRE9NIG5vZGUgb2YgY29tcG9uZW50LiBDYWxsIGl0IGR1cmluZyBsaWZlY3ljbGUgY2FsbGJhY2tzLiBDYW7igJl0IGJlIGNhbGxlZCBkdXJpbmcgcmVuZGVyLlwiXG4gW3N0YXRlXVxuIChqcy9SZWFjdERPTS5maW5kRE9NTm9kZSAoOnJ1bS9yZWFjdC1jb21wb25lbnQgc3RhdGUpKSlcbiJ9IHs6c3ltIHdpdGgtcmVmLCA6bWV0YSB7OmRvYyAiQWRkcyBSZWFjdCByZWYgKHN0cmluZyBvciBjYWxsYmFjaykgdG8gZWxlbWVudC5cbiAgIFxuICAgYGBgXG4gICAocnVtL2RlZmMgbGFiZWwgW3RleHRdIFs6ZGl2IHRleHRdKVxuXG4gICAoLT4gKGxhYmVsKVxuICAgICAgIChydW0vd2l0aC1yZWYgXCJhYmNcIilcbiAgICAgICAocnVtL21vdW50IGpzL2RvY3VtZW50LmJvZHkpKVxuICAgYGBgIiwgOmFyZ2xpc3RzIChbZWxlbWVudCByZWZdKX0sIDpzb3VyY2UgIihkZWZuXG4gd2l0aC1yZWZcbiBcIkFkZHMgUmVhY3QgcmVmIChzdHJpbmcgb3IgY2FsbGJhY2spIHRvIGVsZW1lbnQuXFxuICAgXFxuICAgYGBgXFxuICAgKHJ1bS9kZWZjIGxhYmVsIFt0ZXh0XSBbOmRpdiB0ZXh0XSlcXG5cXG4gICAoLT4gKGxhYmVsKVxcbiAgICAgICAocnVtL3dpdGgtcmVmIFxcXCJhYmNcXFwiKVxcbiAgICAgICAocnVtL21vdW50IGpzL2RvY3VtZW50LmJvZHkpKVxcbiAgIGBgYFwiXG4gW2VsZW1lbnQgcmVmXVxuIChqcy9SZWFjdC5jbG9uZUVsZW1lbnQgZWxlbWVudCAjanMge1wicmVmXCIgcmVmfSBuaWwpKVxuIn0gezpzeW0gYnVpbGQtZGVmYywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtyZW5kZXItYm9keSBtaXhpbnMgZGlzcGxheS1uYW1lXSl9LCA6c291cmNlICIoZGVmblxuIGJ1aWxkLWRlZmNcbiBbcmVuZGVyLWJvZHkgbWl4aW5zIGRpc3BsYXktbmFtZV1cbiAoaWZcbiAgKGVtcHR5PyBtaXhpbnMpXG4gIChsZXRcbiAgIFtjbGFzc1xuICAgIChmbiBbcHJvcHNdIChhcHBseSByZW5kZXItYm9keSAoYWdldCBwcm9wcyBcIjpydW0vYXJnc1wiKSkpXG4gICAgX1xuICAgIChhc2V0IGNsYXNzIFwiZGlzcGxheU5hbWVcIiBkaXNwbGF5LW5hbWUpXG4gICAgY3RvclxuICAgIChmblxuICAgICBbJiBhcmdzXVxuICAgICAoanMvUmVhY3QuY3JlYXRlRWxlbWVudCBjbGFzcyAjanMge1wiOnJ1bS9hcmdzXCIgYXJnc30pKV1cbiAgICh3aXRoLW1ldGEgY3RvciB7OnJ1bS9jbGFzcyBjbGFzc30pKVxuICAobGV0XG4gICBbcmVuZGVyIChmbiBbc3RhdGVdIFsoYXBwbHkgcmVuZGVyLWJvZHkgKDpydW0vYXJncyBzdGF0ZSkpIHN0YXRlXSldXG4gICAoYnVpbGQtY3RvciByZW5kZXIgbWl4aW5zIGRpc3BsYXktbmFtZSkpKSlcbiJ9IHs6c3ltIGh5ZHJhdGUsIDptZXRhIHs6ZG9jICJTYW1lIGFzIFtbbW91bnRdXSBidXQgbXVzdCBiZSBjYWxsZWQgb24gRE9NIHRyZWUgYWxyZWFkeSByZW5kZXJlZCBieSBhIHNlcnZlciB2aWEgW1tyZW5kZXItaHRtbF1dLiIsIDphcmdsaXN0cyAoW2VsZW1lbnQgbm9kZV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBoeWRyYXRlXG4gXCJTYW1lIGFzIFtbbW91bnRdXSBidXQgbXVzdCBiZSBjYWxsZWQgb24gRE9NIHRyZWUgYWxyZWFkeSByZW5kZXJlZCBieSBhIHNlcnZlciB2aWEgW1tyZW5kZXItaHRtbF1dLlwiXG4gW2VsZW1lbnQgbm9kZV1cbiAoanMvUmVhY3RET00uaHlkcmF0ZSBlbGVtZW50IG5vZGUpKVxuIn0gezpzeW0gYnVpbGQtZGVmY2MsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbcmVuZGVyLWJvZHkgbWl4aW5zIGRpc3BsYXktbmFtZV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBidWlsZC1kZWZjY1xuIFtyZW5kZXItYm9keSBtaXhpbnMgZGlzcGxheS1uYW1lXVxuIChsZXRcbiAgW3JlbmRlclxuICAgKGZuXG4gICAgW3N0YXRlXVxuICAgIFsoYXBwbHkgcmVuZGVyLWJvZHkgKDpydW0vcmVhY3QtY29tcG9uZW50IHN0YXRlKSAoOnJ1bS9hcmdzIHN0YXRlKSlcbiAgICAgc3RhdGVdKV1cbiAgKGJ1aWxkLWN0b3IgcmVuZGVyIG1peGlucyBkaXNwbGF5LW5hbWUpKSlcbiJ9IHs6c3ltIGRlcml2ZWQtYXRvbSwgOm1ldGEgezphcmdsaXN0cyAocXVvdGUgKFtyZWZzIGtleSBmXSBbcmVmcyBrZXkgZiBvcHRzXSkpLCA6ZG9jICJVc2UgdGhpcyB0byBjcmVhdGUg4oCcY2hhaW5z4oCdIGFuZCBhY3ljbGljIGdyYXBocyBvZiBkZXBlbmRlbnQgYXRvbXMuXG4gICBcbiAgICAgICAgICAgICBbW2Rlcml2ZWQtYXRvbV1dIHdpbGw6XG4gICAgICAgICAgXG4gICAgICAgICAgICAgLSBUYWtlIE4g4oCcc291cmNl4oCdIHJlZnMuXG4gICAgICAgICAgICAgLSBTZXQgdXAgYSB3YXRjaCBvbiBlYWNoIG9mIHRoZW0uXG4gICAgICAgICAgICAgLSBDcmVhdGUg4oCcc2lua+KAnSBhdG9tLlxuICAgICAgICAgICAgIC0gV2hlbiBhbnkgb2Ygc291cmNlIHJlZnMgY2hhbmdlczpcbiAgICAgICAgICAgICAgICAtIHJlLXJ1biBmdW5jdGlvbiBgZmAsIHBhc3NpbmcgTiBkZXJlZmVyZW5jZWQgdmFsdWVzIG9mIHNvdXJjZSByZWZzLlxuICAgICAgICAgICAgICAgIC0gYHJlc2V0IWAgcmVzdWx0IG9mIGBmYCB0byB0aGUgc2luayBhdG9tLlxuICAgICAgICAgICAgIC0gUmV0dXJuIHNpbmsgYXRvbS5cblxuICAgICAgICAgICAgIEV4YW1wbGU6XG5cbiAgICAgICAgICAgICBgYGBcbiAgICAgICAgICAgICAoZGVmICphIChhdG9tIDApKVxuICAgICAgICAgICAgIChkZWYgKmIgKGF0b20gMSkpXG4gICAgICAgICAgICAgKGRlZiAqeCAoZGVyaXZlZC1hdG9tIFsqYSAqYl0gOjprZXlcbiAgICAgICAgICAgICAgICAgICAgICAgKGZuIFthIGJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgKHN0ciBhIFwiOlwiIGIpKSkpXG4gICAgICAgICAgICAgXG4gICAgICAgICAgICAgKHR5cGUgKngpICA7OyA9PiBjbG9qdXJlLmxhbmcuQXRvbVxuICAgICAgICAgICAgIChkZXJlZiAqeCkgOzsgPT4gXCIwOjFcIlxuICAgICAgICAgICAgIFxuICAgICAgICAgICAgIChzd2FwISAqYSBpbmMpXG4gICAgICAgICAgICAgKGRlcmVmICp4KSA7OyA9PiBcIjE6MVwiXG4gICAgICAgICAgICAgXG4gICAgICAgICAgICAgKHJlc2V0ISAqYiA3KVxuICAgICAgICAgICAgIChkZXJlZiAqeCkgOzsgPT4gXCIxOjdcIlxuICAgICAgICAgICAgIGBgYFxuXG4gICAgICAgICAgICAgQXJndW1lbnRzOlxuICAgICAgICAgIFxuICAgICAgICAgICAgIC0gYHJlZnNgIC0gc2VxdWVuY2Ugb2Ygc291cmNlIHJlZnMsXG4gICAgICAgICAgICAgLSBga2V5YCAgLSB1bmlxdWUga2V5IHRvIHJlZ2lzdGVyIHdhdGNoZXIsIHNhbWUgYXMgaW4gYGNsb2p1cmUuY29yZS9hZGQtd2F0Y2hgLFxuICAgICAgICAgICAgIC0gYGZgICAgIC0gZnVuY3Rpb24gdGhhdCBtdXN0IGFjY2VwdCBOIGFyZ3VtZW50cyAoc2FtZSBhcyBudW1iZXIgb2Ygc291cmNlIHJlZnMpIGFuZCByZXR1cm4gYSB2YWx1ZSB0byBiZSB3cml0dGVuIHRvIHRoZSBzaW5rIHJlZi4gTm90ZTogYGZgIHdpbGwgYmUgY2FsbGVkIHdpdGggYWxyZWFkeSBkZXJlZmVyZW5jZWQgdmFsdWVzLFxuICAgICAgICAgICAgIC0gYG9wdHNgIC0gb3B0aW9uYWwuIE1hcCBvZjpcbiAgICAgICAgICAgICAgIC0gYDpyZWZgIC0gdXNlIHRoaXMgYXMgc2luayByZWYuIEJ5IGRlZmF1bHQgY3JlYXRlcyBuZXcgYXRvbSxcbiAgICAgICAgICAgICAgIC0gYDpjaGVjay1lcXVhbHM/YCAtIERlZmF1bHRzIHRvIGB0cnVlYC4gSWYgZXF1YWxpdHkgY2hlY2sgc2hvdWxkIGJlIHJ1biBvbiBlYWNoIHNvdXJjZSB1cGRhdGU6IGAoPSBAc2luayAoZiBuZXctdmFscykpYC4gV2hlbiByZXN1bHQgb2YgcmVjYWxjdWxhdGluZyBgZmAgZXF1YWxzIHRvIHRoZSBvbGQgdmFsdWUsIGByZXNldCFgIHdvbuKAmXQgYmUgY2FsbGVkLiBTZXQgdG8gYGZhbHNlYCBpZiBjaGVja2luZyBmb3IgZXF1YWxpdHkgY2FuIGJlIGV4cGVuc2l2ZS4ifSwgOnNvdXJjZSAiKGRlZiBkZXJpdmVkLWF0b20gZGVyaXZlZC1hdG9tL2Rlcml2ZWQtYXRvbSlcbiJ9KSwgZGV2dG9vbHMudXRpbCAoezpzeW0gbGliLWluZm8tc3R5bGUsIDptZXRhIHt9LCA6c291cmNlICIoZGVmIGxpYi1pbmZvLXN0eWxlIFwiY29sb3I6YmxhY2s7Zm9udC13ZWlnaHQ6Ym9sZDtcIilcbiJ9IHs6c3ltIHVuZGVyLWFkdmFuY2VkLWJ1aWxkPywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtdKX0sIDpzb3VyY2UgIihkZWZuXG4gdW5kZXItYWR2YW5jZWQtYnVpbGQ/XG4gW11cbiAoaWYtbm90XG4gIChwcmVmcy9wcmVmIDpkaXNhYmxlLWFkdmFuY2VkLW1vZGUtY2hlY2spXG4gIChuaWw/IChvZ2V0IChjb250ZXh0L2dldC1yb290KSBcImRldnRvb2xzXCIgXCJ2ZXJzaW9uXCIpKSkpXG4ifSB7OnN5bSBjb252ZXJ0LWxlZ2FjeS1mZWF0dXJlLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2ZlYXR1cmVdKX0sIDpzb3VyY2UgIihkZWZuXG4gY29udmVydC1sZWdhY3ktZmVhdHVyZVxuIFtmZWF0dXJlXVxuIChjYXNlXG4gIGZlYXR1cmVcbiAgOmN1c3RvbS1mb3JtYXR0ZXJzXG4gIDpmb3JtYXR0ZXJzXG4gIDpzYW5pdHktaGludHNcbiAgOmhpbnRzXG4gIGZlYXR1cmUpKVxuIn0gezpzeW0gYWR2YW5jZWQtYnVpbGQtZXhwbGFuYXRpb24tdXJsLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZlxuIGFkdmFuY2VkLWJ1aWxkLWV4cGxhbmF0aW9uLXVybFxuIFwiaHR0cHM6Ly9naXRodWIuY29tL2JpbmFyeWFnZS9jbGpzLWRldnRvb2xzL2Jsb2IvbWFzdGVyL2RvY3MvZmFxLm1kI3doeS1jdXN0b20tZm9ybWF0dGVycy1kby1ub3Qtd29yay1mb3ItYWR2YW5jZWQtYnVpbGRzXCIpXG4ifSB7OnN5bSBpbi1ub2RlLWNvbnRleHQ/LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW10pfSwgOnNvdXJjZSAiKGRlZm4gaW4tbm9kZS1jb250ZXh0PyBbXSAoc29tZT8gKGdldC1ub2RlLWluZm8gKGNvbnRleHQvZ2V0LXJvb3QpKSkpXG4ifSB7OnN5bSBkaXNwbGF5LWJhbm5lci1pZi1uZWVkZWQhLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2ZlYXR1cmVzLXRvLWluc3RhbGwgZmVhdHVyZS1ncm91cHNdKX0sIDpzb3VyY2UgIihkZWZuXG4gZGlzcGxheS1iYW5uZXItaWYtbmVlZGVkIVxuIFtmZWF0dXJlcy10by1pbnN0YWxsIGZlYXR1cmUtZ3JvdXBzXVxuIChpZi1ub3RcbiAgKHByZWZzL3ByZWYgOmRvbnQtZGlzcGxheS1iYW5uZXIpXG4gIChkb1xuICAgKGxldFxuICAgIFtiYW5uZXIgKHN0ciBcIkluc3RhbGxpbmcgJWMlcyVjIGFuZCBlbmFibGluZyBmZWF0dXJlc1wiKV1cbiAgICAoZGlzcGxheS1iYW5uZXIhXG4gICAgIGZlYXR1cmVzLXRvLWluc3RhbGxcbiAgICAgZmVhdHVyZS1ncm91cHNcbiAgICAgYmFubmVyXG4gICAgIGxpYi1pbmZvLXN0eWxlXG4gICAgIChnZXQtbGliLWluZm8pXG4gICAgIHJlc2V0LXN0eWxlKSkpXG4gIChzZXQhICpjdXN0b20tZm9ybWF0dGVycy1hY3RpdmUqIHRydWUpKSlcbiJ9IHs6c3ltIG1ha2UtdmVyc2lvbi1pbmZvLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW10pfSwgOnNvdXJjZSAiKGRlZm4gbWFrZS12ZXJzaW9uLWluZm8gW10gKHN0ciAoZ2V0LWN1cnJlbnQtdmVyc2lvbikpKVxuIn0gezpzeW0gKmNvbnNvbGUtb3BlbiosIDptZXRhIHt9LCA6c291cmNlICIoZGVmICpjb25zb2xlLW9wZW4qIGZhbHNlKVxuIn0gezpzeW0gKmN1c3RvbS1mb3JtYXR0ZXJzLWFjdGl2ZSosIDptZXRhIHt9LCA6c291cmNlICIoZGVmICpjdXN0b20tZm9ybWF0dGVycy1hY3RpdmUqIGZhbHNlKVxuIn0gezpzeW0gZ2V0LW5vZGUtaW5mbywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtyb290XSl9LCA6c291cmNlICIoZGVmblxuIGdldC1ub2RlLWluZm9cbiBbcm9vdF1cbiAodHJ5XG4gICh3aGVuLXNvbWVcbiAgIFtwcm9jZXNzIChvZ2V0IHJvb3QgXCJwcm9jZXNzXCIpXVxuICAgKGxldFxuICAgIFt2ZXJzaW9uXG4gICAgIChvZ2V0IHByb2Nlc3MgXCJ2ZXJzaW9uXCIpXG4gICAgIHBsYXRmb3JtXG4gICAgIChvZ2V0IHByb2Nlc3MgXCJwbGF0Zm9ybVwiKV1cbiAgICAoaWZcbiAgICAgKGFuZCB2ZXJzaW9uIHBsYXRmb3JtKVxuICAgICB7OnZlcnNpb24gdmVyc2lvbiwgOnBsYXRmb3JtIHBsYXRmb3JtfSkpKVxuICAoY2F0Y2ggOmRlZmF1bHQgXyBuaWwpKSlcbiJ9IHs6c3ltIHVua25vd24tZmVhdHVyZS1tc2csIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZmVhdHVyZSBrbm93bi1mZWF0dXJlcyBsaWItaW5mb10pfSwgOnNvdXJjZSAiKGRlZm5cbiB1bmtub3duLWZlYXR1cmUtbXNnXG4gW2ZlYXR1cmUga25vd24tZmVhdHVyZXMgbGliLWluZm9dXG4gKHN0clxuICBcIk5vIHN1Y2ggZmVhdHVyZSBcIlxuICBmZWF0dXJlXG4gIFwiIGlzIGN1cnJlbnRseSBhdmFpbGFibGUgaW4gXCJcbiAgbGliLWluZm9cbiAgXCIuIFwiXG4gIFwiVGhlIGxpc3Qgb2Ygc3VwcG9ydGVkIGZlYXR1cmVzIGlzIFwiXG4gIChwci1zdHIga25vd24tZmVhdHVyZXMpXG4gIFwiLlwiKSlcbiJ9IHs6c3ltIHJlc2V0LXN0eWxlLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiByZXNldC1zdHlsZSBcImNvbG9yOmJsYWNrXCIpXG4ifSB7OnN5bSBjb252ZXJ0LWxlZ2FjeS1mZWF0dXJlcywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtmZWF0dXJlc10pfSwgOnNvdXJjZSAiKGRlZm5cbiBjb252ZXJ0LWxlZ2FjeS1mZWF0dXJlc1xuIFtmZWF0dXJlc11cbiAobWFwIGNvbnZlcnQtbGVnYWN5LWZlYXR1cmUgZmVhdHVyZXMpKVxuIn0gezpzeW0gaW5zdGFsbC1kZXRlY3RvciEsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZGV0ZWN0b3JdKX0sIDpzb3VyY2UgIihkZWZuXG4gaW5zdGFsbC1kZXRlY3RvciFcbiBbZGV0ZWN0b3JdXG4gKGxldFxuICBbZm9ybWF0dGVycyAoZ2V0LWZvcm1hdHRlcnMtc2FmZSldXG4gICgucHVzaCBmb3JtYXR0ZXJzIGRldGVjdG9yKVxuICAoc2V0LWZvcm1hdHRlcnMtc2FmZSEgZm9ybWF0dGVycykpKVxuIn0gezpzeW0gY3VzdG9tLWZvcm1hdHRlcnMtbm90LWFjdGl2ZS1tc2csIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbXSl9LCA6c291cmNlICIoZGVmblxuIGN1c3RvbS1mb3JtYXR0ZXJzLW5vdC1hY3RpdmUtbXNnXG4gW11cbiAoc3RyXG4gIFwiQ0xKUyBEZXZUb29sczogc29tZSBjdXN0b20gZm9ybWF0dGVycyB3ZXJlIG5vdCByZW5kZXJlZC5cXG5cIlxuICBcImh0dHBzOi8vZ2l0aHViLmNvbS9iaW5hcnlhZ2UvY2xqcy1kZXZ0b29scy9ibG9iL21hc3Rlci9kb2NzL2ZhcS5tZCN3aHktc29tZS1jdXN0b20tZm9ybWF0dGVycy13ZXJlLW5vdC1yZW5kZXJlZFwiKSlcbiJ9IHs6c3ltIGNoZWNrLWN1c3RvbS1mb3JtYXR0ZXJzLWFjdGl2ZSEsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbXSl9LCA6c291cmNlICIoZGVmblxuIGNoZWNrLWN1c3RvbS1mb3JtYXR0ZXJzLWFjdGl2ZSFcbiBbXVxuIChpZlxuICAoYW5kICpjb25zb2xlLW9wZW4qIChub3QgKmN1c3RvbS1mb3JtYXR0ZXJzLWFjdGl2ZSopKVxuICAod2hlbi1ub3RcbiAgICpjdXN0b20tZm9ybWF0dGVycy13YXJuaW5nLXJlcG9ydGVkKlxuICAgKHNldCEgKmN1c3RvbS1mb3JtYXR0ZXJzLXdhcm5pbmctcmVwb3J0ZWQqIHRydWUpXG4gICAoLndhcm4gKGNvbnRleHQvZ2V0LWNvbnNvbGUpIChjdXN0b20tZm9ybWF0dGVycy1ub3QtYWN0aXZlLW1zZykpKSkpXG4ifSB7OnN5bSBpbnN0YWxsLWZlYXR1cmUhLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2ZlYXR1cmUgZmVhdHVyZXMtdG8taW5zdGFsbCBhdmFpbGFibGUtZm4gaW5zdGFsbC1mbl0pfSwgOnNvdXJjZSAiKGRlZm5cbiBpbnN0YWxsLWZlYXR1cmUhXG4gW2ZlYXR1cmUgZmVhdHVyZXMtdG8taW5zdGFsbCBhdmFpbGFibGUtZm4gaW5zdGFsbC1mbl1cbiAoaWZcbiAgKHNvbWUgI3tmZWF0dXJlfSBmZWF0dXJlcy10by1pbnN0YWxsKVxuICAoaWZcbiAgIChvciAocHJlZnMvcHJlZiA6YnlwYXNzLWF2YWlsYWJpbGl0eS1jaGVja3MpIChhdmFpbGFibGUtZm4gZmVhdHVyZSkpXG4gICAoaW5zdGFsbC1mbilcbiAgICgud2FybiAoY29udGV4dC9nZXQtY29uc29sZSkgKGZlYXR1cmUtbm90LWF2YWlsYWJsZS1tc2cgZmVhdHVyZSkpKSkpXG4ifSB7OnN5bSAqY3VzdG9tLWZvcm1hdHRlcnMtd2FybmluZy1yZXBvcnRlZCosIDptZXRhIHt9LCA6c291cmNlICIoZGVmICpjdXN0b20tZm9ybWF0dGVycy13YXJuaW5nLXJlcG9ydGVkKiBmYWxzZSlcbiJ9IHs6c3ltIGZlYXR1cmUtbGlzdC1kaXNwbGF5LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2luc3RhbGxlZC1mZWF0dXJlcyBmZWF0dXJlLWdyb3Vwc10pfSwgOnNvdXJjZSAiKGRlZm5cbiBmZWF0dXJlLWxpc3QtZGlzcGxheVxuIFtpbnN0YWxsZWQtZmVhdHVyZXMgZmVhdHVyZS1ncm91cHNdXG4gKGxldFxuICBbbGFiZWxzXG4gICAobWFwXG4gICAgKHBhcnRpYWwgZmVhdHVyZS1mb3ItZGlzcGxheSBpbnN0YWxsZWQtZmVhdHVyZXMpXG4gICAgKDphbGwgZmVhdHVyZS1ncm91cHMpKVxuICAgKlxuICAgKGZuXG4gICAgW2FjY3VtIHZhbF1cbiAgICBbKHN0ciAoZmlyc3QgYWNjdW0pIFwiIFwiIChmaXJzdCB2YWwpKVxuICAgICAoY29uY2F0IChzZWNvbmQgYWNjdW0pIChzZWNvbmQgdmFsKSldKV1cbiAgKHJlZHVjZSAqIChmaXJzdCBsYWJlbHMpIChyZXN0IGxhYmVscykpKSlcbiJ9IHs6c3ltIGRpc3BsYXktYmFubmVyISwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtpbnN0YWxsZWQtZmVhdHVyZXMgZmVhdHVyZS1ncm91cHMgZm10ICYgcGFyYW1zXSl9LCA6c291cmNlICIoZGVmblxuIGRpc3BsYXktYmFubmVyIVxuIFtpbnN0YWxsZWQtZmVhdHVyZXMgZmVhdHVyZS1ncm91cHMgZm10ICYgcGFyYW1zXVxuIChsZXRcbiAgW1tmbXQtc3RyIGZtdC1wYXJhbXNdXG4gICAoZmVhdHVyZS1saXN0LWRpc3BsYXkgaW5zdGFsbGVkLWZlYXR1cmVzIGZlYXR1cmUtZ3JvdXBzKV1cbiAgKHdyYXAtd2l0aC1jdXN0b20tZm9ybWF0dGVyLWRldGVjdGlvbiFcbiAgIChmblxuICAgIFthZGQtZm10ICYgYWRkLWFyZ3NdXG4gICAgKGxldFxuICAgICBbaXRlbXNcbiAgICAgIChjb25jYXRcbiAgICAgICBbKHN0ciBmbXQgXCIgXCIgZm10LXN0ciBhZGQtZm10KV1cbiAgICAgICBwYXJhbXNcbiAgICAgICBmbXQtcGFyYW1zXG4gICAgICAgYWRkLWFyZ3MpXG4gICAgICBjb25zb2xlXG4gICAgICAoY29udGV4dC9nZXQtY29uc29sZSldXG4gICAgICguYXBwbHkgKC4taW5mbyBjb25zb2xlKSBjb25zb2xlIChpbnRvLWFycmF5IGl0ZW1zKSkpKSkpKVxuIn0gezpzeW0gZ2V0LWxpYi1pbmZvLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW10pfSwgOnNvdXJjZSAiKGRlZm4gZ2V0LWxpYi1pbmZvIFtdIChtYWtlLWxpYi1pbmZvKSlcbiJ9IHs6c3ltIG1ha2UtbGliLWluZm8sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbXSl9LCA6c291cmNlICIoZGVmbiBtYWtlLWxpYi1pbmZvIFtdIChzdHIgXCJDTEpTIERldlRvb2xzIFwiIChtYWtlLXZlcnNpb24taW5mbykpKVxuIn0gezpzeW0gcmVzb2x2ZS1mZWF0dXJlcyEsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZmVhdHVyZXMtZGVzYyBmZWF0dXJlLWdyb3Vwc10pfSwgOnNvdXJjZSAiKGRlZm5cbiByZXNvbHZlLWZlYXR1cmVzIVxuIFtmZWF0dXJlcy1kZXNjIGZlYXR1cmUtZ3JvdXBzXVxuIChsZXRcbiAgW2ZlYXR1cmVzXG4gICAoY29uZFxuICAgIChhbmQgKGtleXdvcmQ/IGZlYXR1cmVzLWRlc2MpIChmZWF0dXJlcy1kZXNjIGZlYXR1cmUtZ3JvdXBzKSlcbiAgICAoZmVhdHVyZXMtZGVzYyBmZWF0dXJlLWdyb3VwcylcbiAgICAobmlsPyBmZWF0dXJlcy1kZXNjKVxuICAgICg6ZGVmYXVsdCBmZWF0dXJlLWdyb3VwcylcbiAgICAoc2VxYWJsZT8gZmVhdHVyZXMtZGVzYylcbiAgICBmZWF0dXJlcy1kZXNjXG4gICAgOmVsc2VcbiAgICBbZmVhdHVyZXMtZGVzY10pXVxuICAoc2FuaXRpdHplLWZlYXR1cmVzISBmZWF0dXJlcyBmZWF0dXJlLWdyb3VwcykpKVxuIn0gezpzeW0gZ2V0LWZvcm1hdHRlcnMtc2FmZSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtdKX0sIDpzb3VyY2UgIihkZWZuXG4gZ2V0LWZvcm1hdHRlcnMtc2FmZVxuIFtdXG4gKGxldFxuICBbZm9ybWF0dGVycyAodW5jaGVja2VkLWFnZXQgKGNvbnRleHQvZ2V0LXJvb3QpIGZvcm1hdHRlci1rZXkpXVxuICAoaWYgKGFycmF5PyBmb3JtYXR0ZXJzKSBmb3JtYXR0ZXJzICNqcyBbXSkpKVxuIn0gezpzeW0gZm9ybWF0dGVyLWtleSwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgZm9ybWF0dGVyLWtleSBcImRldnRvb2xzRm9ybWF0dGVyc1wiKVxuIn0gezpzeW0gZmVhdHVyZS1mb3ItZGlzcGxheSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtpbnN0YWxsZWQtZmVhdHVyZXMgZmVhdHVyZV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBmZWF0dXJlLWZvci1kaXNwbGF5XG4gW2luc3RhbGxlZC1mZWF0dXJlcyBmZWF0dXJlXVxuIChsZXRcbiAgW2NvbG9yXG4gICAoaWZcbiAgICAoc29tZSAje2ZlYXR1cmV9IGluc3RhbGxlZC1mZWF0dXJlcylcbiAgICBcImNvbG9yOiMwMDAwZmZcIlxuICAgIFwiY29sb3I6I2NjY1wiKV1cbiAgW1wiJWMlc1wiIFtjb2xvciAoc3RyIGZlYXR1cmUpXV0pKVxuIn0gezpzeW0gcHJpbnQtY29uZmlnLW92ZXJyaWRlcy1pZi1yZXF1ZXN0ZWQhLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW21zZ10pfSwgOnNvdXJjZSAiKGRlZm5cbiBwcmludC1jb25maWctb3ZlcnJpZGVzLWlmLXJlcXVlc3RlZCFcbiBbbXNnXVxuICh3aGVuXG4gIChwcmVmcy9wcmVmIDpwcmludC1jb25maWctb3ZlcnJpZGVzKVxuICAobGV0XG4gICBbZGlmZiAoc2Vjb25kIChkYXRhL2RpZmYgQHByZWZzL2RlZmF1bHQtY29uZmlnIChwcmVmcy9nZXQtcHJlZnMpKSldXG4gICAoaWYtbm90XG4gICAgKGVtcHR5PyBkaWZmKVxuICAgICguaW5mbyAoY29udGV4dC9nZXQtY29uc29sZSkgbXNnIChwcHJpbnQtc3RyIGRpZmYpKSkpKSlcbiJ9IHs6c3ltIGlzLWtub3duLWZlYXR1cmU/LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2tub3duLWZlYXR1cmVzIGZlYXR1cmVdKX0sIDpzb3VyY2UgIihkZWZuXG4gaXMta25vd24tZmVhdHVyZT9cbiBba25vd24tZmVhdHVyZXMgZmVhdHVyZV1cbiAoYm9vbGVhbiAoc29tZSAje2ZlYXR1cmV9IGtub3duLWZlYXR1cmVzKSkpXG4ifSB7OnN5bSBzZXQtZm9ybWF0dGVycy1zYWZlISwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtuZXctZm9ybWF0dGVyc10pfSwgOnNvdXJjZSAiKGRlZm5cbiBzZXQtZm9ybWF0dGVycy1zYWZlIVxuIFtuZXctZm9ybWF0dGVyc11cbiB7OnByZSBbKG9yIChuaWw/IG5ldy1mb3JtYXR0ZXJzKSAoYXJyYXk/IG5ldy1mb3JtYXR0ZXJzKSldfVxuICh1bmNoZWNrZWQtYXNldFxuICAoY29udGV4dC9nZXQtcm9vdClcbiAgZm9ybWF0dGVyLWtleVxuICAoaWYgKGVtcHR5PyBuZXctZm9ybWF0dGVycykgbmlsIG5ldy1mb3JtYXR0ZXJzKSkpXG4ifSB7OnN5bSBtYWtlLWRldGVjdGlvbi1wcmludGVyLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW10pfSwgOnNvdXJjZSAiKGRlZm5cbiBtYWtlLWRldGVjdGlvbi1wcmludGVyXG4gW11cbiAobGV0XG4gIFtmIChmbiBbXSldXG4gIChvc2V0XG4gICBmXG4gICBbXCJ0b1N0cmluZ1wiXVxuICAgKGZuXG4gICAgW11cbiAgICAoc2V0ISAqY29uc29sZS1vcGVuKiB0cnVlKVxuICAgIChqcy9zZXRUaW1lb3V0IGNoZWNrLWN1c3RvbS1mb3JtYXR0ZXJzLWFjdGl2ZSEgMClcbiAgICBcIlwiKSlcbiAgZikpXG4ifSB7OnN5bSB3cmFwLXdpdGgtY3VzdG9tLWZvcm1hdHRlci1kZXRlY3Rpb24hLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2ZdKX0sIDpzb3VyY2UgIihkZWZuXG4gd3JhcC13aXRoLWN1c3RvbS1mb3JtYXR0ZXItZGV0ZWN0aW9uIVxuIFtmXVxuIChpZi1ub3RcbiAgKHByZWZzL3ByZWYgOmRvbnQtZGV0ZWN0LWN1c3RvbS1mb3JtYXR0ZXJzKVxuICAobGV0XG4gICBbZGV0ZWN0b3IgKG1ha2UtZGV0ZWN0b3IpXVxuICAgKGluc3RhbGwtZGV0ZWN0b3IhIGRldGVjdG9yKVxuICAgKGYgXCIlYyVzXCIgXCJjb2xvcjp0cmFuc3BhcmVudFwiIChtYWtlLWRldGVjdGlvbi1wcmludGVyKSlcbiAgIChqcy9zZXRUaW1lb3V0XG4gICAgKHBhcnRpYWxcbiAgICAgdW5pbnN0YWxsLWRldGVjdG9yLWFuZC1jaGVjay1jdXN0b20tZm9ybWF0dGVycy1hY3RpdmUhXG4gICAgIGRldGVjdG9yKVxuICAgIDApKVxuICAoZikpKVxuIn0gezpzeW0gbWFrZS1kZXRlY3RvciwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtdKX0sIDpzb3VyY2UgIihkZWZuXG4gbWFrZS1kZXRlY3RvclxuIFtdXG4gKGxldFxuICBbZGV0ZWN0b3IgKEN1c3RvbUZvcm1hdHRlcnNEZXRlY3Rvci4pXVxuICAodW5jaGVja2VkLWFzZXRcbiAgIGRldGVjdG9yXG4gICBcImhlYWRlclwiXG4gICAoZm4gW19vYmplY3QgX2NvbmZpZ10gKHNldCEgKmN1c3RvbS1mb3JtYXR0ZXJzLWFjdGl2ZSogdHJ1ZSkgbmlsKSlcbiAgKHVuY2hlY2tlZC1hc2V0IGRldGVjdG9yIFwiaGFzQm9keVwiIChjb25zdGFudGx5IGZhbHNlKSlcbiAgKHVuY2hlY2tlZC1hc2V0IGRldGVjdG9yIFwiYm9keVwiIChjb25zdGFudGx5IG5pbCkpXG4gIGRldGVjdG9yKSlcbiJ9IHs6c3ltIHBwcmludC1zdHIsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbJiBhcmdzXSl9LCA6c291cmNlICIoZGVmblxuIHBwcmludC1zdHJcbiBbJiBhcmdzXVxuICh3aXRoLW91dC1zdHJcbiAgKGJpbmRpbmcgWypwcmludC1sZXZlbCogMzAwXSAoYXBwbHkgY2xqcy1wcHJpbnQvcHByaW50IGFyZ3MpKSkpXG4ifSB7OnN5bSBmZWF0dXJlLW5vdC1hdmFpbGFibGUtbXNnLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2ZlYXR1cmVdKX0sIDpzb3VyY2UgIihkZWZuXG4gZmVhdHVyZS1ub3QtYXZhaWxhYmxlLW1zZ1xuIFtmZWF0dXJlXVxuIChzdHJcbiAgXCJGZWF0dXJlIFwiXG4gIGZlYXR1cmVcbiAgXCIgY2Fubm90IGJlIGluc3RhbGxlZC4gXCJcbiAgXCJVbnN1cHBvcnRlZCBKYXZhc2NyaXB0IGNvbnRleHQ6IFwiXG4gIChnZXQtanMtY29udGV4dC1kZXNjcmlwdGlvbilcbiAgXCIuXCIpKVxuIn0gezpzeW0gZ2V0LW5vZGUtZGVzY3JpcHRpb24sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbbm9kZS1pbmZvXSl9LCA6c291cmNlICIoZGVmblxuIGdldC1ub2RlLWRlc2NyaXB0aW9uXG4gW25vZGUtaW5mb11cbiAoc3RyIChvciAoOnBsYXRmb3JtIG5vZGUtaW5mbykgXCI/XCIpIFwiL1wiIChvciAoOnZlcnNpb24gbm9kZS1pbmZvKSBcIj9cIikpKVxuIn0gezpzeW0gZ2V0LWpzLWNvbnRleHQtZGVzY3JpcHRpb24sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbXSl9LCA6c291cmNlICIoZGVmblxuIGdldC1qcy1jb250ZXh0LWRlc2NyaXB0aW9uXG4gW11cbiAoaWYtbGV0XG4gIFtub2RlLWluZm8gKGdldC1ub2RlLWluZm8gKGNvbnRleHQvZ2V0LXJvb3QpKV1cbiAgKHN0ciBcIm5vZGUvXCIgKGdldC1ub2RlLWRlc2NyaXB0aW9uIG5vZGUtaW5mbykpXG4gIChsZXRcbiAgIFt1c2VyLWFnZW50IChnZXRVc2VyQWdlbnRTdHJpbmcpXVxuICAgKGlmIChlbXB0eT8gdXNlci1hZ2VudCkgXCI8dW5rbm93biBjb250ZXh0PlwiIHVzZXItYWdlbnQpKSkpXG4ifSB7OnN5bSB1bmluc3RhbGwtZGV0ZWN0b3IhLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2RldGVjdG9yXSl9LCA6c291cmNlICIoZGVmblxuIHVuaW5zdGFsbC1kZXRlY3RvciFcbiBbZGV0ZWN0b3JdXG4gKGxldFxuICBbY3VycmVudC1mb3JtYXR0ZXJzXG4gICAodW5jaGVja2VkLWFnZXQgKGNvbnRleHQvZ2V0LXJvb3QpIGZvcm1hdHRlci1rZXkpXVxuICAoaWZcbiAgIChhcnJheT8gY3VycmVudC1mb3JtYXR0ZXJzKVxuICAgKGxldFxuICAgIFtuZXctZm9ybWF0dGVyc1xuICAgICAoLmZpbHRlclxuICAgICAgY3VycmVudC1mb3JtYXR0ZXJzXG4gICAgICAoZm4qIFtwMV9fNDIxMDIjXSAobm90ICg9IGRldGVjdG9yIHAxX180MjEwMiMpKSkpXVxuICAgIChzZXQtZm9ybWF0dGVycy1zYWZlISBuZXctZm9ybWF0dGVycykpKSkpXG4ifSB7OnN5bSBzYW5pdGl0emUtZmVhdHVyZXMhLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2ZlYXR1cmVzIGZlYXR1cmUtZ3JvdXBzXSl9LCA6c291cmNlICIoZGVmblxuIHNhbml0aXR6ZS1mZWF0dXJlcyFcbiBbZmVhdHVyZXMgZmVhdHVyZS1ncm91cHNdXG4gKGxldFxuICBba25vd24tZmVhdHVyZXNcbiAgICg6YWxsIGZlYXR1cmUtZ3JvdXBzKVxuICAgZmVhdHVyZXNcbiAgIChjb252ZXJ0LWxlZ2FjeS1mZWF0dXJlcyBmZWF0dXJlcyldXG4gIChyZXBvcnQtdW5rbm93bi1mZWF0dXJlcyEgZmVhdHVyZXMga25vd24tZmVhdHVyZXMpXG4gIChmaWx0ZXIgKHBhcnRpYWwgaXMta25vd24tZmVhdHVyZT8ga25vd24tZmVhdHVyZXMpIGZlYXR1cmVzKSkpXG4ifSB7OnN5bSByZXBvcnQtdW5rbm93bi1mZWF0dXJlcyEsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZmVhdHVyZXMga25vd24tZmVhdHVyZXNdKX0sIDpzb3VyY2UgIihkZWZuXG4gcmVwb3J0LXVua25vd24tZmVhdHVyZXMhXG4gW2ZlYXR1cmVzIGtub3duLWZlYXR1cmVzXVxuIChsZXRcbiAgW2xpYi1pbmZvIChnZXQtbGliLWluZm8pXVxuICAoZG9zZXFcbiAgIFtmZWF0dXJlIGZlYXR1cmVzXVxuICAgKGlmLW5vdFxuICAgIChzb21lICN7ZmVhdHVyZX0ga25vd24tZmVhdHVyZXMpXG4gICAgKC53YXJuXG4gICAgIChjb250ZXh0L2dldC1jb25zb2xlKVxuICAgICAodW5rbm93bi1mZWF0dXJlLW1zZyBmZWF0dXJlIGtub3duLWZlYXR1cmVzIGxpYi1pbmZvKSkpKSkpXG4ifSB7OnN5bSBkaXNwbGF5LWFkdmFuY2VkLWJ1aWxkLXdhcm5pbmctaWYtbmVlZGVkISwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtdKX0sIDpzb3VyY2UgIihkZWZuXG4gZGlzcGxheS1hZHZhbmNlZC1idWlsZC13YXJuaW5nLWlmLW5lZWRlZCFcbiBbXVxuIChpZi1ub3RcbiAgKHByZWZzL3ByZWYgOmRvbnQtZGlzcGxheS1hZHZhbmNlZC1idWlsZC13YXJuaW5nKVxuICAobGV0XG4gICBbYmFubmVyXG4gICAgKHN0clxuICAgICBcIiVjTk9UJWMgaW5zdGFsbGluZyAlYyVzJWMgdW5kZXIgYWR2YW5jZWQgYnVpbGQuIFNlZSBcIlxuICAgICBhZHZhbmNlZC1idWlsZC1leHBsYW5hdGlvbi11cmxcbiAgICAgXCIuXCIpXVxuICAgKC53YXJuXG4gICAgKGNvbnRleHQvZ2V0LWNvbnNvbGUpXG4gICAgYmFubmVyXG4gICAgXCJmb250LXdlaWdodDpib2xkXCJcbiAgICByZXNldC1zdHlsZVxuICAgIGxpYi1pbmZvLXN0eWxlXG4gICAgKGdldC1saWItaW5mbylcbiAgICByZXNldC1zdHlsZSkpKSlcbiJ9IHs6c3ltIHVuaW5zdGFsbC1kZXRlY3Rvci1hbmQtY2hlY2stY3VzdG9tLWZvcm1hdHRlcnMtYWN0aXZlISwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtkZXRlY3Rvcl0pfSwgOnNvdXJjZSAiKGRlZm5cbiB1bmluc3RhbGwtZGV0ZWN0b3ItYW5kLWNoZWNrLWN1c3RvbS1mb3JtYXR0ZXJzLWFjdGl2ZSFcbiBbZGV0ZWN0b3JdXG4gKHVuaW5zdGFsbC1kZXRlY3RvciEgZGV0ZWN0b3IpXG4gKGNoZWNrLWN1c3RvbS1mb3JtYXR0ZXJzLWFjdGl2ZSEpKVxuIn0pLCBjbGpzLmNvcmUgKHs6c3ltIGpzLT5jbGosIDptZXRhIHs6ZG9jICJSZWN1cnNpdmVseSB0cmFuc2Zvcm1zIEphdmFTY3JpcHQgYXJyYXlzIGludG8gQ2xvanVyZVNjcmlwdFxuICB2ZWN0b3JzLCBhbmQgSmF2YVNjcmlwdCBvYmplY3RzIGludG8gQ2xvanVyZVNjcmlwdCBtYXBzLiAgV2l0aFxuICBvcHRpb24gJzprZXl3b3JkaXplLWtleXMgdHJ1ZScgd2lsbCBjb252ZXJ0IG9iamVjdCBmaWVsZHMgZnJvbVxuICBzdHJpbmdzIHRvIGtleXdvcmRzLiIsIDphcmdsaXN0cyBbW3hdIFt4ICYgb3B0c11dfSwgOnNvdXJjZSAiKGRlZm5cbiBqcy0+Y2xqXG4gXCJSZWN1cnNpdmVseSB0cmFuc2Zvcm1zIEphdmFTY3JpcHQgYXJyYXlzIGludG8gQ2xvanVyZVNjcmlwdFxcbiAgdmVjdG9ycywgYW5kIEphdmFTY3JpcHQgb2JqZWN0cyBpbnRvIENsb2p1cmVTY3JpcHQgbWFwcy4gIFdpdGhcXG4gIG9wdGlvbiAnOmtleXdvcmRpemUta2V5cyB0cnVlJyB3aWxsIGNvbnZlcnQgb2JqZWN0IGZpZWxkcyBmcm9tXFxuICBzdHJpbmdzIHRvIGtleXdvcmRzLlwiXG4gKFt4XSAoanMtPmNsaiB4IDprZXl3b3JkaXplLWtleXMgZmFsc2UpKVxuIChbeCAmIG9wdHNdXG4gIChsZXRcbiAgIFt7OmtleXMgW2tleXdvcmRpemUta2V5c119XG4gICAgb3B0c1xuICAgIGtleWZuXG4gICAgKGlmIGtleXdvcmRpemUta2V5cyBrZXl3b3JkIHN0cilcbiAgICBmXG4gICAgKGZuXG4gICAgIHRoaXNmblxuICAgICBbeF1cbiAgICAgKGNvbmRcbiAgICAgIChzYXRpc2ZpZXM/IElFbmNvZGVDbG9qdXJlIHgpXG4gICAgICAoLWpzLT5jbGogeCAoYXBwbHkgYXJyYXktbWFwIG9wdHMpKVxuICAgICAgKHNlcT8geClcbiAgICAgIChkb2FsbCAobWFwIHRoaXNmbiB4KSlcbiAgICAgIChtYXAtZW50cnk/IHgpXG4gICAgICAoTWFwRW50cnkuICh0aGlzZm4gKGtleSB4KSkgKHRoaXNmbiAodmFsIHgpKSBuaWwpXG4gICAgICAoY29sbD8geClcbiAgICAgIChpbnRvIChlbXB0eSB4KSAobWFwIHRoaXNmbikgeClcbiAgICAgIChhcnJheT8geClcbiAgICAgIChwZXJzaXN0ZW50IVxuICAgICAgIChyZWR1Y2VcbiAgICAgICAgKGZuKlxuICAgICAgICAgW3AxX180MzE4MSMgcDJfXzQzMTgyI11cbiAgICAgICAgIChjb25qISBwMV9fNDMxODEjICh0aGlzZm4gcDJfXzQzMTgyIykpKVxuICAgICAgICAodHJhbnNpZW50IFtdKVxuICAgICAgICB4KSlcbiAgICAgIChpZGVudGljYWw/ICh0eXBlIHgpIGpzL09iamVjdClcbiAgICAgIChwZXJzaXN0ZW50IVxuICAgICAgIChyZWR1Y2VcbiAgICAgICAgKGZuIFtyIGtdIChhc3NvYyEgciAoa2V5Zm4gaykgKHRoaXNmbiAoZ29iamVjdC9nZXQgeCBrKSkpKVxuICAgICAgICAodHJhbnNpZW50IHt9KVxuICAgICAgICAoanMta2V5cyB4KSkpXG4gICAgICA6ZWxzZVxuICAgICAgeCkpXVxuICAgKGYgeCkpKSlcbiJ9IHs6c3ltIHNvcnQtYnksIDptZXRhIHs6ZG9jICJSZXR1cm5zIGEgc29ydGVkIHNlcXVlbmNlIG9mIHRoZSBpdGVtcyBpbiBjb2xsLCB3aGVyZSB0aGUgc29ydFxuICAgb3JkZXIgaXMgZGV0ZXJtaW5lZCBieSBjb21wYXJpbmcgKGtleWZuIGl0ZW0pLiAgQ29tcCBjYW4gYmVcbiAgIGJvb2xlYW4tdmFsdWVkIGNvbXBhcmlzb24gZnVuY3Rpb24sIG9yIGEgLS8wLysgdmFsdWVkIGNvbXBhcmF0b3IuXG4gICBDb21wIGRlZmF1bHRzIHRvIGNvbXBhcmUuIiwgOmFyZ2xpc3RzIFtba2V5Zm4gY29sbF0gW2tleWZuIGNvbXAgY29sbF1dfSwgOnNvdXJjZSAiKGRlZm5cbiBzb3J0LWJ5XG4gXCJSZXR1cm5zIGEgc29ydGVkIHNlcXVlbmNlIG9mIHRoZSBpdGVtcyBpbiBjb2xsLCB3aGVyZSB0aGUgc29ydFxcbiAgIG9yZGVyIGlzIGRldGVybWluZWQgYnkgY29tcGFyaW5nIChrZXlmbiBpdGVtKS4gIENvbXAgY2FuIGJlXFxuICAgYm9vbGVhbi12YWx1ZWQgY29tcGFyaXNvbiBmdW5jdGlvbiwgb3IgYSAtLzAvKyB2YWx1ZWQgY29tcGFyYXRvci5cXG4gICBDb21wIGRlZmF1bHRzIHRvIGNvbXBhcmUuXCJcbiAoW2tleWZuIGNvbGxdIChzb3J0LWJ5IGtleWZuIGNvbXBhcmUgY29sbCkpXG4gKFtrZXlmbiBjb21wIGNvbGxdXG4gIChzb3J0IChmbiBbeCB5XSAoKGZuLT5jb21wYXJhdG9yIGNvbXApIChrZXlmbiB4KSAoa2V5Zm4geSkpKSBjb2xsKSkpXG4ifSB7OnN5bSBJVHJhbnNpZW50QXNzb2NpYXRpdmUsIDptZXRhIHs6ZG9jICJQcm90b2NvbCBmb3IgYWRkaW5nIGFzc29jaWF0aXZpdHkgdG8gdHJhbnNpZW50IGNvbGxlY3Rpb25zLiJ9LCA6bWV0aG9kcyAoLWFzc29jISl9IHs6c3ltIGNodW5rLWZpcnN0LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3NdKX0sIDpzb3VyY2UgIihkZWZuIGNodW5rLWZpcnN0IFtzXSAoLWNodW5rZWQtZmlyc3QgcykpXG4ifSB7OnN5bSBwcmludC1tZXRhPywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtvcHRzIG9ial0pfSwgOnNvdXJjZSAiKGRlZm5cbiBwcmludC1tZXRhP1xuIFtvcHRzIG9ial1cbiAoYW5kXG4gIChib29sZWFuIChnZXQgb3B0cyA6bWV0YSkpXG4gIChpbXBsZW1lbnRzPyBJTWV0YSBvYmopXG4gIChub3QgKG5pbD8gKG1ldGEgb2JqKSkpKSlcbiJ9IHs6c3ltIG0zLWhhc2gtaW50LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2luXSl9LCA6c291cmNlICIoZGVmblxuIG0zLWhhc2gtaW50XG4gW2luXVxuIChpZlxuICAoemVybz8gaW4pXG4gIGluXG4gIChsZXQgW2sxIChtMy1taXgtSzEgaW4pIGgxIChtMy1taXgtSDEgbTMtc2VlZCBrMSldIChtMy1mbWl4IGgxIDQpKSkpXG4ifSB7OnN5bSBwci1zdHIqLCA6bWV0YSB7OmRvYyAiU3VwcG9ydCBzbyB0aGF0IGNvbGxlY3Rpb25zIGNhbiBpbXBsZW1lbnQgdG9TdHJpbmcgd2l0aG91dFxuICAgbG9hZGluZyBhbGwgdGhlIHByaW50aW5nIG1hY2hpbmVyeS4iLCA6YXJnbGlzdHMgKFtvYmpdKX0sIDpzb3VyY2UgIihkZWZuXG4gcHItc3RyKlxuIFwiU3VwcG9ydCBzbyB0aGF0IGNvbGxlY3Rpb25zIGNhbiBpbXBsZW1lbnQgdG9TdHJpbmcgd2l0aG91dFxcbiAgIGxvYWRpbmcgYWxsIHRoZSBwcmludGluZyBtYWNoaW5lcnkuXCJcbiBbb2JqXVxuIChsZXRcbiAgW3NiIChTdHJpbmdCdWZmZXIuKSB3cml0ZXIgKFN0cmluZ0J1ZmZlcldyaXRlci4gc2IpXVxuICAoLXByLXdyaXRlciBvYmogd3JpdGVyIChwci1vcHRzKSlcbiAgKC1mbHVzaCB3cml0ZXIpXG4gIChzdHIgc2IpKSlcbiJ9IHs6c3ltIGVkdWN0aW9uLCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIHJlZHVjaWJsZS9pdGVyYWJsZSBhcHBsaWNhdGlvbiBvZiB0aGUgdHJhbnNkdWNlcnNcbiAgdG8gdGhlIGl0ZW1zIGluIGNvbGwuIFRyYW5zZHVjZXJzIGFyZSBhcHBsaWVkIGluIG9yZGVyIGFzIGlmXG4gIGNvbWJpbmVkIHdpdGggY29tcC4gTm90ZSB0aGF0IHRoZXNlIGFwcGxpY2F0aW9ucyB3aWxsIGJlXG4gIHBlcmZvcm1lZCBldmVyeSB0aW1lIHJlZHVjZS9pdGVyYXRvciBpcyBjYWxsZWQuIiwgOmFyZ2xpc3RzIChbJiB4Zm9ybXNdKX0sIDpzb3VyY2UgIihkZWZuXG4gZWR1Y3Rpb25cbiBcIlJldHVybnMgYSByZWR1Y2libGUvaXRlcmFibGUgYXBwbGljYXRpb24gb2YgdGhlIHRyYW5zZHVjZXJzXFxuICB0byB0aGUgaXRlbXMgaW4gY29sbC4gVHJhbnNkdWNlcnMgYXJlIGFwcGxpZWQgaW4gb3JkZXIgYXMgaWZcXG4gIGNvbWJpbmVkIHdpdGggY29tcC4gTm90ZSB0aGF0IHRoZXNlIGFwcGxpY2F0aW9ucyB3aWxsIGJlXFxuICBwZXJmb3JtZWQgZXZlcnkgdGltZSByZWR1Y2UvaXRlcmF0b3IgaXMgY2FsbGVkLlwiXG4gezphcmdsaXN0cyAnKFt4Zm9ybSogY29sbF0pfVxuIFsmIHhmb3Jtc11cbiAoRWR1Y3Rpb24uIChhcHBseSBjb21wIChidXRsYXN0IHhmb3JtcykpIChsYXN0IHhmb3JtcykpKVxuIn0gezpzeW0gdHJlZS1zZXEsIDptZXRhIHs6ZG9jICJSZXR1cm5zIGEgbGF6eSBzZXF1ZW5jZSBvZiB0aGUgbm9kZXMgaW4gYSB0cmVlLCB2aWEgYSBkZXB0aC1maXJzdCB3YWxrLlxuICBicmFuY2g/IG11c3QgYmUgYSBmbiBvZiBvbmUgYXJnIHRoYXQgcmV0dXJucyB0cnVlIGlmIHBhc3NlZCBhIG5vZGVcbiAgdGhhdCBjYW4gaGF2ZSBjaGlsZHJlbiAoYnV0IG1heSBub3QpLiAgY2hpbGRyZW4gbXVzdCBiZSBhIGZuIG9mIG9uZVxuICBhcmcgdGhhdCByZXR1cm5zIGEgc2VxdWVuY2Ugb2YgdGhlIGNoaWxkcmVuLiBXaWxsIG9ubHkgYmUgY2FsbGVkIG9uXG4gIG5vZGVzIGZvciB3aGljaCBicmFuY2g/IHJldHVybnMgdHJ1ZS4gUm9vdCBpcyB0aGUgcm9vdCBub2RlIG9mIHRoZVxuICB0cmVlLiIsIDphcmdsaXN0cyAoW2JyYW5jaD8gY2hpbGRyZW4gcm9vdF0pfSwgOnNvdXJjZSAiKGRlZm5cbiB0cmVlLXNlcVxuIFwiUmV0dXJucyBhIGxhenkgc2VxdWVuY2Ugb2YgdGhlIG5vZGVzIGluIGEgdHJlZSwgdmlhIGEgZGVwdGgtZmlyc3Qgd2Fsay5cXG4gIGJyYW5jaD8gbXVzdCBiZSBhIGZuIG9mIG9uZSBhcmcgdGhhdCByZXR1cm5zIHRydWUgaWYgcGFzc2VkIGEgbm9kZVxcbiAgdGhhdCBjYW4gaGF2ZSBjaGlsZHJlbiAoYnV0IG1heSBub3QpLiAgY2hpbGRyZW4gbXVzdCBiZSBhIGZuIG9mIG9uZVxcbiAgYXJnIHRoYXQgcmV0dXJucyBhIHNlcXVlbmNlIG9mIHRoZSBjaGlsZHJlbi4gV2lsbCBvbmx5IGJlIGNhbGxlZCBvblxcbiAgbm9kZXMgZm9yIHdoaWNoIGJyYW5jaD8gcmV0dXJucyB0cnVlLiBSb290IGlzIHRoZSByb290IG5vZGUgb2YgdGhlXFxuICB0cmVlLlwiXG4gW2JyYW5jaD8gY2hpbGRyZW4gcm9vdF1cbiAobGV0XG4gIFt3YWxrXG4gICAoZm5cbiAgICB3YWxrXG4gICAgW25vZGVdXG4gICAgKGxhenktc2VxXG4gICAgIChjb25zIG5vZGUgKHdoZW4gKGJyYW5jaD8gbm9kZSkgKG1hcGNhdCB3YWxrIChjaGlsZHJlbiBub2RlKSkpKSkpXVxuICAod2FsayByb290KSkpXG4ifSB7OnN5bSB1bmNoZWNrZWQtcmVtYWluZGVyLWludCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt4IG5dKX0sIDpzb3VyY2UgIihkZWZuXG4gdW5jaGVja2VkLXJlbWFpbmRlci1pbnRcbiBbeCBuXVxuIChjbGpzLmNvcmUvdW5jaGVja2VkLXJlbWFpbmRlci1pbnQgeCBuKSlcbiJ9IHs6c3ltIHV1aWQsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbc10pfSwgOnNvdXJjZSAiKGRlZm4gdXVpZCBbc10gKGFzc2VydCAoc3RyaW5nPyBzKSkgKFVVSUQuICgudG9Mb3dlckNhc2UgcykgbmlsKSlcbiJ9IHs6c3ltIHNlcSwgOm1ldGEgezpkb2MgIlJldHVybnMgYSBzZXEgb24gdGhlIGNvbGxlY3Rpb24uIElmIHRoZSBjb2xsZWN0aW9uIGlzXG4gIGVtcHR5LCByZXR1cm5zIG5pbC4gIChzZXEgbmlsKSByZXR1cm5zIG5pbC4gc2VxIGFsc28gd29ya3Mgb25cbiAgU3RyaW5ncy4iLCA6YXJnbGlzdHMgKFtjb2xsXSl9LCA6c291cmNlICIoZGVmblxuIHNlcVxuIFwiUmV0dXJucyBhIHNlcSBvbiB0aGUgY29sbGVjdGlvbi4gSWYgdGhlIGNvbGxlY3Rpb24gaXNcXG4gIGVtcHR5LCByZXR1cm5zIG5pbC4gIChzZXEgbmlsKSByZXR1cm5zIG5pbC4gc2VxIGFsc28gd29ya3Mgb25cXG4gIFN0cmluZ3MuXCJcbiBbY29sbF1cbiAod2hlbi1ub3RcbiAgKG5pbD8gY29sbClcbiAgKGNvbmRcbiAgIChpbXBsZW1lbnRzPyBJU2VxYWJsZSBjb2xsKVxuICAgKC1zZXEgY29sbClcbiAgIChhcnJheT8gY29sbClcbiAgICh3aGVuLW5vdCAoemVybz8gKGFsZW5ndGggY29sbCkpIChJbmRleGVkU2VxLiBjb2xsIDAgbmlsKSlcbiAgIChzdHJpbmc/IGNvbGwpXG4gICAod2hlbi1ub3QgKHplcm8/ICguLWxlbmd0aCBjb2xsKSkgKEluZGV4ZWRTZXEuIGNvbGwgMCBuaWwpKVxuICAgKGpzLWl0ZXJhYmxlPyBjb2xsKVxuICAgKGVzNi1pdGVyYXRvci1zZXEgKC5jYWxsIChnb2JqZWN0L2dldCBjb2xsIElURVJfU1lNQk9MKSBjb2xsKSlcbiAgIChuYXRpdmUtc2F0aXNmaWVzPyBJU2VxYWJsZSBjb2xsKVxuICAgKC1zZXEgY29sbClcbiAgIDplbHNlXG4gICAodGhyb3cgKGpzL0Vycm9yLiAoc3RyIGNvbGwgXCIgaXMgbm90IElTZXFhYmxlXCIpKSkpKSlcbiJ9IHs6c3ltIHJlZHVjZSwgOm1ldGEgezpkb2MgImYgc2hvdWxkIGJlIGEgZnVuY3Rpb24gb2YgMiBhcmd1bWVudHMuIElmIHZhbCBpcyBub3Qgc3VwcGxpZWQsXG4gIHJldHVybnMgdGhlIHJlc3VsdCBvZiBhcHBseWluZyBmIHRvIHRoZSBmaXJzdCAyIGl0ZW1zIGluIGNvbGwsIHRoZW5cbiAgYXBwbHlpbmcgZiB0byB0aGF0IHJlc3VsdCBhbmQgdGhlIDNyZCBpdGVtLCBldGMuIElmIGNvbGwgY29udGFpbnMgbm9cbiAgaXRlbXMsIGYgbXVzdCBhY2NlcHQgbm8gYXJndW1lbnRzIGFzIHdlbGwsIGFuZCByZWR1Y2UgcmV0dXJucyB0aGVcbiAgcmVzdWx0IG9mIGNhbGxpbmcgZiB3aXRoIG5vIGFyZ3VtZW50cy4gIElmIGNvbGwgaGFzIG9ubHkgMSBpdGVtLCBpdFxuICBpcyByZXR1cm5lZCBhbmQgZiBpcyBub3QgY2FsbGVkLiAgSWYgdmFsIGlzIHN1cHBsaWVkLCByZXR1cm5zIHRoZVxuICByZXN1bHQgb2YgYXBwbHlpbmcgZiB0byB2YWwgYW5kIHRoZSBmaXJzdCBpdGVtIGluIGNvbGwsIHRoZW5cbiAgYXBwbHlpbmcgZiB0byB0aGF0IHJlc3VsdCBhbmQgdGhlIDJuZCBpdGVtLCBldGMuIElmIGNvbGwgY29udGFpbnMgbm9cbiAgaXRlbXMsIHJldHVybnMgdmFsIGFuZCBmIGlzIG5vdCBjYWxsZWQuIiwgOmFyZ2xpc3RzIFtbZiBjb2xsXSBbZiB2YWwgY29sbF1dfSwgOnNvdXJjZSAiKGRlZm5cbiByZWR1Y2VcbiBcImYgc2hvdWxkIGJlIGEgZnVuY3Rpb24gb2YgMiBhcmd1bWVudHMuIElmIHZhbCBpcyBub3Qgc3VwcGxpZWQsXFxuICByZXR1cm5zIHRoZSByZXN1bHQgb2YgYXBwbHlpbmcgZiB0byB0aGUgZmlyc3QgMiBpdGVtcyBpbiBjb2xsLCB0aGVuXFxuICBhcHBseWluZyBmIHRvIHRoYXQgcmVzdWx0IGFuZCB0aGUgM3JkIGl0ZW0sIGV0Yy4gSWYgY29sbCBjb250YWlucyBub1xcbiAgaXRlbXMsIGYgbXVzdCBhY2NlcHQgbm8gYXJndW1lbnRzIGFzIHdlbGwsIGFuZCByZWR1Y2UgcmV0dXJucyB0aGVcXG4gIHJlc3VsdCBvZiBjYWxsaW5nIGYgd2l0aCBubyBhcmd1bWVudHMuICBJZiBjb2xsIGhhcyBvbmx5IDEgaXRlbSwgaXRcXG4gIGlzIHJldHVybmVkIGFuZCBmIGlzIG5vdCBjYWxsZWQuICBJZiB2YWwgaXMgc3VwcGxpZWQsIHJldHVybnMgdGhlXFxuICByZXN1bHQgb2YgYXBwbHlpbmcgZiB0byB2YWwgYW5kIHRoZSBmaXJzdCBpdGVtIGluIGNvbGwsIHRoZW5cXG4gIGFwcGx5aW5nIGYgdG8gdGhhdCByZXN1bHQgYW5kIHRoZSAybmQgaXRlbSwgZXRjLiBJZiBjb2xsIGNvbnRhaW5zIG5vXFxuICBpdGVtcywgcmV0dXJucyB2YWwgYW5kIGYgaXMgbm90IGNhbGxlZC5cIlxuIChbZiBjb2xsXVxuICAoY29uZFxuICAgKGltcGxlbWVudHM/IElSZWR1Y2UgY29sbClcbiAgICgtcmVkdWNlIGNvbGwgZilcbiAgIChhcnJheT8gY29sbClcbiAgIChhcnJheS1yZWR1Y2UgY29sbCBmKVxuICAgKHN0cmluZz8gY29sbClcbiAgIChhcnJheS1yZWR1Y2UgY29sbCBmKVxuICAgKG5hdGl2ZS1zYXRpc2ZpZXM/IElSZWR1Y2UgY29sbClcbiAgICgtcmVkdWNlIGNvbGwgZilcbiAgIChpdGVyYWJsZT8gY29sbClcbiAgIChpdGVyLXJlZHVjZSBjb2xsIGYpXG4gICA6ZWxzZVxuICAgKHNlcS1yZWR1Y2UgZiBjb2xsKSkpXG4gKFtmIHZhbCBjb2xsXVxuICAoY29uZFxuICAgKGltcGxlbWVudHM/IElSZWR1Y2UgY29sbClcbiAgICgtcmVkdWNlIGNvbGwgZiB2YWwpXG4gICAoYXJyYXk/IGNvbGwpXG4gICAoYXJyYXktcmVkdWNlIGNvbGwgZiB2YWwpXG4gICAoc3RyaW5nPyBjb2xsKVxuICAgKGFycmF5LXJlZHVjZSBjb2xsIGYgdmFsKVxuICAgKG5hdGl2ZS1zYXRpc2ZpZXM/IElSZWR1Y2UgY29sbClcbiAgICgtcmVkdWNlIGNvbGwgZiB2YWwpXG4gICAoaXRlcmFibGU/IGNvbGwpXG4gICAoaXRlci1yZWR1Y2UgY29sbCBmIHZhbClcbiAgIDplbHNlXG4gICAoc2VxLXJlZHVjZSBmIHZhbCBjb2xsKSkpKVxuIn0gezpzeW0gSVVVSUQsIDptZXRhIHs6ZG9jICJBIG1hcmtlciBwcm90b2NvbCBmb3IgVVVJRHMifSwgOm1ldGhvZHMgKCl9IHs6c3ltIElOSVQsIDptZXRhIHt9LCA6c291cmNlICIoZGVmIElOSVQgI2pzIHt9KVxuIn0gezpzeW0gZmluZC1ucywgOm1ldGEgezpkb2MgIlJldHVybnMgdGhlIG5hbWVzcGFjZSBuYW1lZCBieSB0aGUgc3ltYm9sIG9yIG5pbCBpZiBpdCBkb2Vzbid0IGV4aXN0LlxuICBCb290c3RyYXAgb25seS4iLCA6YXJnbGlzdHMgKFtuc10pfSwgOnNvdXJjZSAiKGRlZm5cbiBmaW5kLW5zXG4gXCJSZXR1cm5zIHRoZSBuYW1lc3BhY2UgbmFtZWQgYnkgdGhlIHN5bWJvbCBvciBuaWwgaWYgaXQgZG9lc24ndCBleGlzdC5cXG4gIEJvb3RzdHJhcCBvbmx5LlwiXG4gW25zXVxuICh3aGVuIChuaWw/IE5TX0NBQ0hFKSAoc2V0ISBOU19DQUNIRSAoYXRvbSB7fSkpKVxuIChsZXRcbiAgW3RoZS1ucyAoZ2V0IEBOU19DQUNIRSBucyldXG4gIChpZi1ub3RcbiAgIChuaWw/IHRoZS1ucylcbiAgIHRoZS1uc1xuICAgKGxldFxuICAgIFtucy1vYmogKGZpbmQtbnMtb2JqIG5zKV1cbiAgICAod2hlbi1ub3RcbiAgICAgKG5pbD8gbnMtb2JqKVxuICAgICAobGV0XG4gICAgICBbbmV3LW5zIChjcmVhdGUtbnMgbnMgbnMtb2JqKV1cbiAgICAgIChzd2FwISBOU19DQUNIRSBhc3NvYyBucyBuZXctbnMpXG4gICAgICBuZXctbnMpKSkpKSlcbiJ9IHs6c3ltIGNvbnRhaW5zPywgOm1ldGEgezpkb2MgIlJldHVybnMgdHJ1ZSBpZiBrZXkgaXMgcHJlc2VudCBpbiB0aGUgZ2l2ZW4gY29sbGVjdGlvbiwgb3RoZXJ3aXNlXG4gIHJldHVybnMgZmFsc2UuICBOb3RlIHRoYXQgZm9yIG51bWVyaWNhbGx5IGluZGV4ZWQgY29sbGVjdGlvbnMgbGlrZVxuICB2ZWN0b3JzIGFuZCBhcnJheXMsIHRoaXMgdGVzdHMgaWYgdGhlIG51bWVyaWMga2V5IGlzIHdpdGhpbiB0aGVcbiAgcmFuZ2Ugb2YgaW5kZXhlcy4gJ2NvbnRhaW5zPycgb3BlcmF0ZXMgY29uc3RhbnQgb3IgbG9nYXJpdGhtaWMgdGltZTtcbiAgaXQgd2lsbCBub3QgcGVyZm9ybSBhIGxpbmVhciBzZWFyY2ggZm9yIGEgdmFsdWUuICBTZWUgYWxzbyAnc29tZScuIiwgOmFyZ2xpc3RzIChbY29sbCB2XSl9LCA6c291cmNlICIoZGVmblxuIGNvbnRhaW5zP1xuIFwiUmV0dXJucyB0cnVlIGlmIGtleSBpcyBwcmVzZW50IGluIHRoZSBnaXZlbiBjb2xsZWN0aW9uLCBvdGhlcndpc2VcXG4gIHJldHVybnMgZmFsc2UuICBOb3RlIHRoYXQgZm9yIG51bWVyaWNhbGx5IGluZGV4ZWQgY29sbGVjdGlvbnMgbGlrZVxcbiAgdmVjdG9ycyBhbmQgYXJyYXlzLCB0aGlzIHRlc3RzIGlmIHRoZSBudW1lcmljIGtleSBpcyB3aXRoaW4gdGhlXFxuICByYW5nZSBvZiBpbmRleGVzLiAnY29udGFpbnM/JyBvcGVyYXRlcyBjb25zdGFudCBvciBsb2dhcml0aG1pYyB0aW1lO1xcbiAgaXQgd2lsbCBub3QgcGVyZm9ybSBhIGxpbmVhciBzZWFyY2ggZm9yIGEgdmFsdWUuICBTZWUgYWxzbyAnc29tZScuXCJcbiBbY29sbCB2XVxuIChjb25kXG4gIChpbXBsZW1lbnRzPyBJQXNzb2NpYXRpdmUgY29sbClcbiAgKC1jb250YWlucy1rZXk/IGNvbGwgdilcbiAgKG5hdGl2ZS1zYXRpc2ZpZXM/IElBc3NvY2lhdGl2ZSBjb2xsKVxuICAoLWNvbnRhaW5zLWtleT8gY29sbCB2KVxuICAoaWRlbnRpY2FsPyAoZ2V0IGNvbGwgdiBsb29rdXAtc2VudGluZWwpIGxvb2t1cC1zZW50aW5lbClcbiAgZmFsc2VcbiAgOmVsc2VcbiAgdHJ1ZSkpXG4ifSB7OnN5bSBldmVyeT8sIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRydWUgaWYgKHByZWQgeCkgaXMgbG9naWNhbCB0cnVlIGZvciBldmVyeSB4IGluIGNvbGwsIGVsc2VcbiAgZmFsc2UuIiwgOmFyZ2xpc3RzIChbcHJlZCBjb2xsXSl9LCA6c291cmNlICIoZGVmblxuIGV2ZXJ5P1xuIFwiUmV0dXJucyB0cnVlIGlmIChwcmVkIHgpIGlzIGxvZ2ljYWwgdHJ1ZSBmb3IgZXZlcnkgeCBpbiBjb2xsLCBlbHNlXFxuICBmYWxzZS5cIlxuIFtwcmVkIGNvbGxdXG4gKGNvbmRcbiAgKG5pbD8gKHNlcSBjb2xsKSlcbiAgdHJ1ZVxuICAocHJlZCAoZmlyc3QgY29sbCkpXG4gIChyZWN1ciBwcmVkIChuZXh0IGNvbGwpKVxuICA6ZWxzZVxuICBmYWxzZSkpXG4ifSB7OnN5bSBrZWVwLWluZGV4ZWQsIDptZXRhIHs6ZG9jICJSZXR1cm5zIGEgbGF6eSBzZXF1ZW5jZSBvZiB0aGUgbm9uLW5pbCByZXN1bHRzIG9mIChmIGluZGV4IGl0ZW0pLiBOb3RlLFxuICB0aGlzIG1lYW5zIGZhbHNlIHJldHVybiB2YWx1ZXMgd2lsbCBiZSBpbmNsdWRlZC4gIGYgbXVzdCBiZSBmcmVlIG9mXG4gIHNpZGUtZWZmZWN0cy4gIFJldHVybnMgYSBzdGF0ZWZ1bCB0cmFuc2R1Y2VyIHdoZW4gbm8gY29sbGVjdGlvbiBpc1xuICBwcm92aWRlZC4iLCA6YXJnbGlzdHMgW1tmXSBbZiBjb2xsXV19LCA6c291cmNlICIoZGVmblxuIGtlZXAtaW5kZXhlZFxuIFwiUmV0dXJucyBhIGxhenkgc2VxdWVuY2Ugb2YgdGhlIG5vbi1uaWwgcmVzdWx0cyBvZiAoZiBpbmRleCBpdGVtKS4gTm90ZSxcXG4gIHRoaXMgbWVhbnMgZmFsc2UgcmV0dXJuIHZhbHVlcyB3aWxsIGJlIGluY2x1ZGVkLiAgZiBtdXN0IGJlIGZyZWUgb2ZcXG4gIHNpZGUtZWZmZWN0cy4gIFJldHVybnMgYSBzdGF0ZWZ1bCB0cmFuc2R1Y2VyIHdoZW4gbm8gY29sbGVjdGlvbiBpc1xcbiAgcHJvdmlkZWQuXCJcbiAoW2ZdXG4gIChmblxuICAgW3JmXVxuICAgKGxldFxuICAgIFtpYSAodm9sYXRpbGUhIC0xKV1cbiAgICAoZm5cbiAgICAgKFtdIChyZikpXG4gICAgIChbcmVzdWx0XSAocmYgcmVzdWx0KSlcbiAgICAgKFtyZXN1bHQgaW5wdXRdXG4gICAgICAobGV0XG4gICAgICAgW2kgKHZzd2FwISBpYSBpbmMpIHYgKGYgaSBpbnB1dCldXG4gICAgICAgKGlmIChuaWw/IHYpIHJlc3VsdCAocmYgcmVzdWx0IHYpKSkpKSkpKVxuIChbZiBjb2xsXVxuICAobGV0Zm5cbiAgIFsoa2VlcGlcbiAgICAgW2lkeCBjb2xsXVxuICAgICAobGF6eS1zZXFcbiAgICAgICh3aGVuLWxldFxuICAgICAgIFtzIChzZXEgY29sbCldXG4gICAgICAgKGlmXG4gICAgICAgIChjaHVua2VkLXNlcT8gcylcbiAgICAgICAgKGxldFxuICAgICAgICAgW2MgKGNodW5rLWZpcnN0IHMpIHNpemUgKGNvdW50IGMpIGIgKGNodW5rLWJ1ZmZlciBzaXplKV1cbiAgICAgICAgIChkb3RpbWVzXG4gICAgICAgICAgW2kgc2l6ZV1cbiAgICAgICAgICAobGV0XG4gICAgICAgICAgIFt4IChmICgrIGlkeCBpKSAoLW50aCBjIGkpKV1cbiAgICAgICAgICAgKHdoZW4tbm90IChuaWw/IHgpIChjaHVuay1hcHBlbmQgYiB4KSkpKVxuICAgICAgICAgKGNodW5rLWNvbnMgKGNodW5rIGIpIChrZWVwaSAoKyBpZHggc2l6ZSkgKGNodW5rLXJlc3QgcykpKSlcbiAgICAgICAgKGxldFxuICAgICAgICAgW3ggKGYgaWR4IChmaXJzdCBzKSldXG4gICAgICAgICAoaWZcbiAgICAgICAgICAobmlsPyB4KVxuICAgICAgICAgIChrZWVwaSAoaW5jIGlkeCkgKHJlc3QgcykpXG4gICAgICAgICAgKGNvbnMgeCAoa2VlcGkgKGluYyBpZHgpIChyZXN0IHMpKSkpKSkpKSldXG4gICAoa2VlcGkgMCBjb2xsKSkpKVxuIn0gezpzeW0gc3VicywgOm1ldGEgezpkb2MgIlJldHVybnMgdGhlIHN1YnN0cmluZyBvZiBzIGJlZ2lubmluZyBhdCBzdGFydCBpbmNsdXNpdmUsIGFuZCBlbmRpbmdcbiAgYXQgZW5kIChkZWZhdWx0cyB0byBsZW5ndGggb2Ygc3RyaW5nKSwgZXhjbHVzaXZlLiIsIDphcmdsaXN0cyBbW3Mgc3RhcnRdIFtzIHN0YXJ0IGVuZF1dfSwgOnNvdXJjZSAiKGRlZm5cbiBzdWJzXG4gXCJSZXR1cm5zIHRoZSBzdWJzdHJpbmcgb2YgcyBiZWdpbm5pbmcgYXQgc3RhcnQgaW5jbHVzaXZlLCBhbmQgZW5kaW5nXFxuICBhdCBlbmQgKGRlZmF1bHRzIHRvIGxlbmd0aCBvZiBzdHJpbmcpLCBleGNsdXNpdmUuXCJcbiAoW3Mgc3RhcnRdICguc3Vic3RyaW5nIHMgc3RhcnQpKVxuIChbcyBzdGFydCBlbmRdICguc3Vic3RyaW5nIHMgc3RhcnQgZW5kKSkpXG4ifSB7OnN5bSBqcy1zeW1ib2w/LCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0cnVlIGlmIHggaXMgYW4gaW5zdGFuY2Ugb2YgU3ltYm9sIiwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBqcy1zeW1ib2w/XG4gXCJSZXR1cm5zIHRydWUgaWYgeCBpcyBhbiBpbnN0YW5jZSBvZiBTeW1ib2xcIlxuIFt4XVxuIChvclxuICAoaWRlbnRpY2FsPyAoZ29vZy90eXBlT2YgeCkgXCJzeW1ib2xcIilcbiAgKGFuZCAoZXhpc3RzPyBqcy9TeW1ib2wpIChpbnN0YW5jZT8ganMvU3ltYm9sIHgpKSkpXG4ifSB7OnN5bSBJRmluZCwgOm1ldGEgezpkb2MgIlByb3RvY29sIGZvciBpbXBsZW1lbnRpbmcgZW50cnkgZmluZGluZyBpbiBjb2xsZWN0aW9ucy4ifSwgOm1ldGhvZHMgKC1maW5kKX0gezpzeW0gc2V0LCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIHNldCBvZiB0aGUgZGlzdGluY3QgZWxlbWVudHMgb2YgY29sbC4iLCA6YXJnbGlzdHMgKFtjb2xsXSl9LCA6c291cmNlICIoZGVmblxuIHNldFxuIFwiUmV0dXJucyBhIHNldCBvZiB0aGUgZGlzdGluY3QgZWxlbWVudHMgb2YgY29sbC5cIlxuIFtjb2xsXVxuIChpZlxuICAoc2V0PyBjb2xsKVxuICAod2l0aC1tZXRhIGNvbGwgbmlsKVxuICAobGV0XG4gICBbaW4gKHNlcSBjb2xsKV1cbiAgIChjb25kXG4gICAgKG5pbD8gaW4pXG4gICAgI3t9XG4gICAgKGFuZCAoaW5zdGFuY2U/IEluZGV4ZWRTZXEgaW4pICh6ZXJvPyAoLi1pIGluKSkpXG4gICAgKC5jcmVhdGVBc0lmQnlBc3NvYyBQZXJzaXN0ZW50SGFzaFNldCAoLi1hcnIgaW4pKVxuICAgIDplbHNlXG4gICAgKGxvb3BcbiAgICAgW2luIGluIG91dCAoLWFzLXRyYW5zaWVudCAje30pXVxuICAgICAoaWYtbm90XG4gICAgICAobmlsPyBpbilcbiAgICAgIChyZWN1ciAobmV4dCBpbikgKC1jb25qISBvdXQgKC1maXJzdCBpbikpKVxuICAgICAgKHBlcnNpc3RlbnQhIG91dCkpKSkpKSlcbiJ9IHs6c3ltIE1PRFVMRV9VUklTLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiBNT0RVTEVfVVJJUyBuaWwpXG4ifSB7OnN5bSB0YWtlLWxhc3QsIDptZXRhIHs6ZG9jICJSZXR1cm5zIGEgc2VxIG9mIHRoZSBsYXN0IG4gaXRlbXMgaW4gY29sbC4gIERlcGVuZGluZyBvbiB0aGUgdHlwZVxuICBvZiBjb2xsIG1heSBiZSBubyBiZXR0ZXIgdGhhbiBsaW5lYXIgdGltZS4gIEZvciB2ZWN0b3JzLCBzZWUgYWxzbyBzdWJ2ZWMuIiwgOmFyZ2xpc3RzIChbbiBjb2xsXSl9LCA6c291cmNlICIoZGVmblxuIHRha2UtbGFzdFxuIFwiUmV0dXJucyBhIHNlcSBvZiB0aGUgbGFzdCBuIGl0ZW1zIGluIGNvbGwuICBEZXBlbmRpbmcgb24gdGhlIHR5cGVcXG4gIG9mIGNvbGwgbWF5IGJlIG5vIGJldHRlciB0aGFuIGxpbmVhciB0aW1lLiAgRm9yIHZlY3RvcnMsIHNlZSBhbHNvIHN1YnZlYy5cIlxuIFtuIGNvbGxdXG4gKGxvb3BcbiAgW3MgKHNlcSBjb2xsKSBsZWFkIChzZXEgKGRyb3AgbiBjb2xsKSldXG4gIChpZiBsZWFkIChyZWN1ciAobmV4dCBzKSAobmV4dCBsZWFkKSkgcykpKVxuIn0gezpzeW0gYml0LXNldCwgOm1ldGEgezpkb2MgIlNldCBiaXQgYXQgaW5kZXggbiIsIDphcmdsaXN0cyAoW3ggbl0pfSwgOnNvdXJjZSAiKGRlZm4gYml0LXNldCBcIlNldCBiaXQgYXQgaW5kZXggblwiIFt4IG5dIChjbGpzLmNvcmUvYml0LXNldCB4IG4pKVxuIn0gezpzeW0gc3RyaW5nLWhhc2gtY2FjaGUtY291bnQsIDptZXRhIHt9LCA6c291cmNlICIoZGVmIHN0cmluZy1oYXNoLWNhY2hlLWNvdW50IDApXG4ifSB7OnN5bSBxdWFsaWZpZWQta2V5d29yZD8sIDptZXRhIHs6ZG9jICJSZXR1cm4gdHJ1ZSBpZiB4IGlzIGEga2V5d29yZCB3aXRoIGEgbmFtZXNwYWNlIiwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBxdWFsaWZpZWQta2V5d29yZD9cbiBcIlJldHVybiB0cnVlIGlmIHggaXMgYSBrZXl3b3JkIHdpdGggYSBuYW1lc3BhY2VcIlxuIFt4XVxuIChib29sZWFuIChhbmQgKGtleXdvcmQ/IHgpIChuYW1lc3BhY2UgeCkgdHJ1ZSkpKVxuIn0gezpzeW0gLXdpdGgtbWV0YSwgOm1ldGEgezpkb2MgIlJldHVybnMgYSBuZXcgb2JqZWN0IHdpdGggdmFsdWUgb2YgbyBhbmQgbWV0YWRhdGEgbWV0YSBhZGRlZCB0byBpdC4iLCA6YXJnbGlzdHMgKFtvIG1ldGFdKX0sIDpwcm90b2NvbCBJV2l0aE1ldGF9IHs6c3ltIGJ1dGxhc3QsIDptZXRhIHs6ZG9jICJSZXR1cm4gYSBzZXEgb2YgYWxsIGJ1dCB0aGUgbGFzdCBpdGVtIGluIGNvbGwsIGluIGxpbmVhciB0aW1lIiwgOmFyZ2xpc3RzIChbc10pfSwgOnNvdXJjZSAiKGRlZm5cbiBidXRsYXN0XG4gXCJSZXR1cm4gYSBzZXEgb2YgYWxsIGJ1dCB0aGUgbGFzdCBpdGVtIGluIGNvbGwsIGluIGxpbmVhciB0aW1lXCJcbiBbc11cbiAobG9vcFxuICBbcmV0IFtdIHMgc11cbiAgKGlmIChuZXh0IHMpIChyZWN1ciAoY29uaiByZXQgKGZpcnN0IHMpKSAobmV4dCBzKSkgKHNlcSByZXQpKSkpXG4ifSB7OnN5bSB1bmNoZWNrZWQtc3VidHJhY3QtaW50LCA6bWV0YSB7OmRvYyAiSWYgbm8geXMgYXJlIHN1cHBsaWVkLCByZXR1cm5zIHRoZSBuZWdhdGlvbiBvZiB4LCBlbHNlIHN1YnRyYWN0c1xuICB0aGUgeXMgZnJvbSB4IGFuZCByZXR1cm5zIHRoZSByZXN1bHQuIiwgOmFyZ2xpc3RzIFtbeF0gW3ggeV0gW3ggeSAmIG1vcmVdXX0sIDpzb3VyY2UgIihkZWZuXG4gdW5jaGVja2VkLXN1YnRyYWN0LWludFxuIFwiSWYgbm8geXMgYXJlIHN1cHBsaWVkLCByZXR1cm5zIHRoZSBuZWdhdGlvbiBvZiB4LCBlbHNlIHN1YnRyYWN0c1xcbiAgdGhlIHlzIGZyb20geCBhbmQgcmV0dXJucyB0aGUgcmVzdWx0LlwiXG4gKFt4XSAoY2xqcy5jb3JlL3VuY2hlY2tlZC1zdWJ0cmFjdC1pbnQgeCkpXG4gKFt4IHldIChjbGpzLmNvcmUvdW5jaGVja2VkLXN1YnRyYWN0LWludCB4IHkpKVxuIChbeCB5ICYgbW9yZV1cbiAgKHJlZHVjZVxuICAgdW5jaGVja2VkLXN1YnRyYWN0LWludFxuICAgKGNsanMuY29yZS91bmNoZWNrZWQtc3VidHJhY3QtaW50IHggeSlcbiAgIG1vcmUpKSlcbiJ9IHs6c3ltIC1pdGVyYXRvciwgOm1ldGEgezpkb2MgIlJldHVybnMgYW4gaXRlcmF0b3IgZm9yIGNvbGwuIiwgOmFyZ2xpc3RzIChbY29sbF0pfSwgOnByb3RvY29sIElJdGVyYWJsZX0gezpzeW0gKnByaW50LW5hbWVzcGFjZS1tYXBzKiwgOm1ldGEgezpkb2MgIipwcmludC1uYW1lc3BhY2UtbWFwcyogY29udHJvbHMgd2hldGhlciB0aGUgcHJpbnRlciB3aWxsIHByaW50XG4gIG5hbWVzcGFjZSBtYXAgbGl0ZXJhbCBzeW50YXguXG5cbiAgRGVmYXVsdHMgdG8gZmFsc2UsIGJ1dCB0aGUgUkVQTCBiaW5kcyBpdCB0byB0cnVlLiJ9LCA6c291cmNlICIoZGVmICpwcmludC1uYW1lc3BhY2UtbWFwcyogZmFsc2UpXG4ifSB7OnN5bSB0YWtlLW50aCwgOm1ldGEgezpkb2MgIlJldHVybnMgYSBsYXp5IHNlcSBvZiBldmVyeSBudGggaXRlbSBpbiBjb2xsLiAgUmV0dXJucyBhIHN0YXRlZnVsXG4gIHRyYW5zZHVjZXIgd2hlbiBubyBjb2xsZWN0aW9uIGlzIHByb3ZpZGVkLiIsIDphcmdsaXN0cyBbW25dIFtuIGNvbGxdXX0sIDpzb3VyY2UgIihkZWZuXG4gdGFrZS1udGhcbiBcIlJldHVybnMgYSBsYXp5IHNlcSBvZiBldmVyeSBudGggaXRlbSBpbiBjb2xsLiAgUmV0dXJucyBhIHN0YXRlZnVsXFxuICB0cmFuc2R1Y2VyIHdoZW4gbm8gY29sbGVjdGlvbiBpcyBwcm92aWRlZC5cIlxuIChbbl1cbiAgezpwcmUgWyhudW1iZXI/IG4pXX1cbiAgKGZuXG4gICBbcmZdXG4gICAobGV0XG4gICAgW2lhICh2b2xhdGlsZSEgLTEpXVxuICAgIChmblxuICAgICAoW10gKHJmKSlcbiAgICAgKFtyZXN1bHRdIChyZiByZXN1bHQpKVxuICAgICAoW3Jlc3VsdCBpbnB1dF1cbiAgICAgIChsZXRcbiAgICAgICBbaSAodnN3YXAhIGlhIGluYyldXG4gICAgICAgKGlmICh6ZXJvPyAocmVtIGkgbikpIChyZiByZXN1bHQgaW5wdXQpIHJlc3VsdCkpKSkpKSlcbiAoW24gY29sbF1cbiAgezpwcmUgWyhudW1iZXI/IG4pXX1cbiAgKGxhenktc2VxXG4gICAod2hlbi1sZXQgW3MgKHNlcSBjb2xsKV0gKGNvbnMgKGZpcnN0IHMpICh0YWtlLW50aCBuIChkcm9wIG4gcykpKSkpKSlcbiJ9IHs6c3ltIGZpcnN0LCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0aGUgZmlyc3QgaXRlbSBpbiB0aGUgY29sbGVjdGlvbi4gQ2FsbHMgc2VxIG9uIGl0c1xuICBhcmd1bWVudC4gSWYgY29sbCBpcyBuaWwsIHJldHVybnMgbmlsLiIsIDphcmdsaXN0cyAoW2NvbGxdKX0sIDpzb3VyY2UgIihkZWZuXG4gZmlyc3RcbiBcIlJldHVybnMgdGhlIGZpcnN0IGl0ZW0gaW4gdGhlIGNvbGxlY3Rpb24uIENhbGxzIHNlcSBvbiBpdHNcXG4gIGFyZ3VtZW50LiBJZiBjb2xsIGlzIG5pbCwgcmV0dXJucyBuaWwuXCJcbiBbY29sbF1cbiAod2hlbi1ub3RcbiAgKG5pbD8gY29sbClcbiAgKGlmXG4gICAoaW1wbGVtZW50cz8gSVNlcSBjb2xsKVxuICAgKC1maXJzdCBjb2xsKVxuICAgKGxldCBbcyAoc2VxIGNvbGwpXSAod2hlbi1ub3QgKG5pbD8gcykgKC1maXJzdCBzKSkpKSkpXG4ifSB7OnN5bSBuYXRpdmUtc2F0aXNmaWVzPywgOm1ldGEgezpkb2MgIkludGVybmFsIC0gZG8gbm90IHVzZSEiLCA6YXJnbGlzdHMgKFtwIHhdKX0sIDpzb3VyY2UgIihkZWZuXG4gbmF0aXZlLXNhdGlzZmllcz9cbiBcIkludGVybmFsIC0gZG8gbm90IHVzZSFcIlxuIFtwIHhdXG4gKGxldFxuICBbeCAoaWYgKG5pbD8geCkgbmlsIHgpXVxuICAoY29uZFxuICAgKHVuY2hlY2tlZC1nZXQgcCAoZ29vZy90eXBlT2YgeCkpXG4gICB0cnVlXG4gICAodW5jaGVja2VkLWdldCBwIFwiX1wiKVxuICAgdHJ1ZVxuICAgOmVsc2VcbiAgIGZhbHNlKSkpXG4ifSB7OnN5bSBzZXE/LCA6bWV0YSB7OmRvYyAiUmV0dXJuIHRydWUgaWYgcyBzYXRpc2ZpZXMgSVNlcSIsIDphcmdsaXN0cyAoW3NdKX0sIDpzb3VyY2UgIihkZWZuXG4gc2VxP1xuIFwiUmV0dXJuIHRydWUgaWYgcyBzYXRpc2ZpZXMgSVNlcVwiXG4gW3NdXG4gKGlmIChuaWw/IHMpIGZhbHNlIChzYXRpc2ZpZXM/IElTZXEgcykpKVxuIn0gezpzeW0gLXNvcnRlZC1zZXEtZnJvbSwgOm1ldGEgezpkb2MgIlJldHVybnMgYSBzb3J0ZWQgc2VxIGZyb20gY29sbCBpbiBlaXRoZXIgYXNjZW5kaW5nIG9yIGRlc2NlbmRpbmcgb3JkZXIuXG4gICAgIElmIGFzY2VuZGluZyBpcyB0cnVlLCB0aGUgcmVzdWx0IHNob3VsZCBjb250YWluIGFsbCBpdGVtcyB3aGljaCBhcmUgPiBvciA+PVxuICAgICB0aGFuIGsuIElmIGFzY2VuZGluZyBpcyBmYWxzZSwgdGhlIHJlc3VsdCBzaG91bGQgY29udGFpbiBhbGwgaXRlbXMgd2hpY2hcbiAgICAgYXJlIDwgb3IgPD0gdGhhbiBrLCBlLmcuXG4gICAgICgtc29ydGVkLXNlcS1mcm9tIChzb3J0ZWQtc2V0IDEgMiAzIDQgNSkgMyB0cnVlKSA9PiAoMyA0IDUpXG4gICAgICgtc29ydGVkLXNlcS1mcm9tIChzb3J0ZWQtc2V0IDEgMiAzIDQgNSkgMyBmYWxzZSkgPT4gKDMgMiAxKSIsIDphcmdsaXN0cyAoW2NvbGwgayBhc2NlbmRpbmc/XSl9LCA6cHJvdG9jb2wgSVNvcnRlZH0gezpzeW0gcHJpbnRsbi1zdHIsIDptZXRhIHs6ZG9jICJwcmludGxuIHRvIGEgc3RyaW5nLCByZXR1cm5pbmcgaXQiLCA6YXJnbGlzdHMgKFsmIG9ianNdKX0sIDpzb3VyY2UgIihkZWZuXG4gcHJpbnRsbi1zdHJcbiBcInByaW50bG4gdG8gYSBzdHJpbmcsIHJldHVybmluZyBpdFwiXG4gWyYgb2Jqc11cbiAocHJuLXN0ci13aXRoLW9wdHMgb2JqcyAoYXNzb2MgKHByLW9wdHMpIDpyZWFkYWJseSBmYWxzZSkpKVxuIn0gezpzeW0gaW5zdC1tcywgOm1ldGEgezpkb2MgIlJldHVybiB0aGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyBzaW5jZSBKYW51YXJ5IDEsIDE5NzAsIDAwOjAwOjAwIEdNVCIsIDphcmdsaXN0cyAoW2luc3RdKX0sIDpzb3VyY2UgIihkZWZuXG4gaW5zdC1tc1xuIFwiUmV0dXJuIHRoZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIHNpbmNlIEphbnVhcnkgMSwgMTk3MCwgMDA6MDA6MDAgR01UXCJcbiBbaW5zdF1cbiAoaW5zdC1tcyogaW5zdCkpXG4ifSB7OnN5bSBpdGVyYXRlLCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIGxhenkgc2VxdWVuY2Ugb2YgeCwgKGYgeCksIChmIChmIHgpKSBldGMuIGYgbXVzdCBiZSBmcmVlIG9mIHNpZGUtZWZmZWN0cyIsIDphcmdsaXN0cyAoW2YgeF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBpdGVyYXRlXG4gXCJSZXR1cm5zIGEgbGF6eSBzZXF1ZW5jZSBvZiB4LCAoZiB4KSwgKGYgKGYgeCkpIGV0Yy4gZiBtdXN0IGJlIGZyZWUgb2Ygc2lkZS1lZmZlY3RzXCJcbiB7OmFkZGVkIFwiMS4wXCJ9XG4gW2YgeF1cbiAoSXRlcmF0ZS4gbmlsIGYgbmlsIHggbmlsKSlcbiJ9IHs6c3ltIC1lbXB0eSwgOm1ldGEgezpkb2MgIlJldHVybnMgYW4gZW1wdHkgY29sbGVjdGlvbiBvZiB0aGUgc2FtZSBjYXRlZ29yeSBhcyBjb2xsLiBVc2VkXG4gICAgIGJ5IGNsanMuY29yZS9lbXB0eS4iLCA6YXJnbGlzdHMgKFtjb2xsXSl9LCA6cHJvdG9jb2wgSUVtcHR5YWJsZUNvbGxlY3Rpb259IHs6c3ltIG5ld2xpbmUsIDptZXRhIHs6ZG9jICJQcmludHMgYSBuZXdsaW5lIHVzaW5nICpwcmludC1mbioiLCA6YXJnbGlzdHMgW1tdIFtvcHRzXV19LCA6c291cmNlICIoZGVmblxuIG5ld2xpbmVcbiBcIlByaW50cyBhIG5ld2xpbmUgdXNpbmcgKnByaW50LWZuKlwiXG4gKFtdIChuZXdsaW5lIG5pbCkpXG4gKFtvcHRzXVxuICAoc3RyaW5nLXByaW50IFwiXFxuXCIpXG4gICh3aGVuIChnZXQgb3B0cyA6Zmx1c2gtb24tbmV3bGluZSkgKGZsdXNoKSkpKVxuIn0gezpzeW0gSUxvb2t1cCwgOm1ldGEgezpkb2MgIlByb3RvY29sIGZvciBsb29raW5nIHVwIGEgdmFsdWUgaW4gYSBkYXRhIHN0cnVjdHVyZS4ifSwgOm1ldGhvZHMgKC1sb29rdXApfSB7OnN5bSAtY2h1bmtlZC1yZXN0LCA6bWV0YSB7OmRvYyAiUmV0dXJuIGEgbmV3IGNvbGxlY3Rpb24gb2YgY29sbCB3aXRoIHRoZSBmaXJzdCBjaHVuayByZW1vdmVkLiIsIDphcmdsaXN0cyAoW2NvbGxdKX0sIDpwcm90b2NvbCBJQ2h1bmtlZFNlcX0gezpzeW0gd3JpdGUtYWxsLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3dyaXRlciAmIHNzXSl9LCA6c291cmNlICIoZGVmbiB3cml0ZS1hbGwgW3dyaXRlciAmIHNzXSAoZG9zZXEgW3Mgc3NdICgtd3JpdGUgd3JpdGVyIHMpKSlcbiJ9IHs6c3ltIGZuPywgOm1ldGEgezpkb2MgIlJldHVybiB0cnVlIGlmIGYgaXMgYSBKYXZhU2NyaXB0IGZ1bmN0aW9uIG9yIHNhdGlzZmllcyB0aGUgRm4gcHJvdG9jb2wuIiwgOmFyZ2xpc3RzIChbZl0pfSwgOnNvdXJjZSAiKGRlZm5cbiBmbj9cbiBcIlJldHVybiB0cnVlIGlmIGYgaXMgYSBKYXZhU2NyaXB0IGZ1bmN0aW9uIG9yIHNhdGlzZmllcyB0aGUgRm4gcHJvdG9jb2wuXCJcbiBbZl1cbiAob3IgKGpzLWZuPyBmKSAoc2F0aXNmaWVzPyBGbiBmKSkpXG4ifSB7OnN5bSAtcHJlZmVyLW1ldGhvZCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFttZiBkaXNwYXRjaC12YWwgZGlzcGF0Y2gtdmFsLXldKX0sIDpwcm90b2NvbCBJTXVsdGlGbn0gezpzeW0gLWFzc29jLCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIG5ldyBjb2xsZWN0aW9uIG9mIGNvbGwgd2l0aCBhIG1hcHBpbmcgZnJvbSBrZXkgayB0b1xuICAgICB2YWx1ZSB2IGFkZGVkIHRvIGl0LiIsIDphcmdsaXN0cyAoW2NvbGwgayB2XSl9LCA6cHJvdG9jb2wgSUFzc29jaWF0aXZlfSB7OnN5bSBkb2FsbCwgOm1ldGEgezpkb2MgIldoZW4gbGF6eSBzZXF1ZW5jZXMgYXJlIHByb2R1Y2VkIHZpYSBmdW5jdGlvbnMgdGhhdCBoYXZlIHNpZGVcbiAgZWZmZWN0cywgYW55IGVmZmVjdHMgb3RoZXIgdGhhbiB0aG9zZSBuZWVkZWQgdG8gcHJvZHVjZSB0aGUgZmlyc3RcbiAgZWxlbWVudCBpbiB0aGUgc2VxIGRvIG5vdCBvY2N1ciB1bnRpbCB0aGUgc2VxIGlzIGNvbnN1bWVkLiBkb2FsbCBjYW5cbiAgYmUgdXNlZCB0byBmb3JjZSBhbnkgZWZmZWN0cy4gV2Fsa3MgdGhyb3VnaCB0aGUgc3VjY2Vzc2l2ZSBuZXh0cyBvZlxuICB0aGUgc2VxLCByZXRhaW5zIHRoZSBoZWFkIGFuZCByZXR1cm5zIGl0LCB0aHVzIGNhdXNpbmcgdGhlIGVudGlyZVxuICBzZXEgdG8gcmVzaWRlIGluIG1lbW9yeSBhdCBvbmUgdGltZS4iLCA6YXJnbGlzdHMgW1tjb2xsXSBbbiBjb2xsXV19LCA6c291cmNlICIoZGVmblxuIGRvYWxsXG4gXCJXaGVuIGxhenkgc2VxdWVuY2VzIGFyZSBwcm9kdWNlZCB2aWEgZnVuY3Rpb25zIHRoYXQgaGF2ZSBzaWRlXFxuICBlZmZlY3RzLCBhbnkgZWZmZWN0cyBvdGhlciB0aGFuIHRob3NlIG5lZWRlZCB0byBwcm9kdWNlIHRoZSBmaXJzdFxcbiAgZWxlbWVudCBpbiB0aGUgc2VxIGRvIG5vdCBvY2N1ciB1bnRpbCB0aGUgc2VxIGlzIGNvbnN1bWVkLiBkb2FsbCBjYW5cXG4gIGJlIHVzZWQgdG8gZm9yY2UgYW55IGVmZmVjdHMuIFdhbGtzIHRocm91Z2ggdGhlIHN1Y2Nlc3NpdmUgbmV4dHMgb2ZcXG4gIHRoZSBzZXEsIHJldGFpbnMgdGhlIGhlYWQgYW5kIHJldHVybnMgaXQsIHRodXMgY2F1c2luZyB0aGUgZW50aXJlXFxuICBzZXEgdG8gcmVzaWRlIGluIG1lbW9yeSBhdCBvbmUgdGltZS5cIlxuIChbY29sbF0gKGRvcnVuIGNvbGwpIGNvbGwpXG4gKFtuIGNvbGxdIChkb3J1biBuIGNvbGwpIGNvbGwpKVxuIn0gezpzeW0ga2V5d29yZC1pZGVudGljYWw/LCA6bWV0YSB7OmRvYyAiRWZmaWNpZW50IHRlc3QgdG8gZGV0ZXJtaW5lIHRoYXQgdHdvIGtleXdvcmRzIGFyZSBpZGVudGljYWwuIiwgOmFyZ2xpc3RzIChbeCB5XSl9LCA6c291cmNlICIoZGVmblxuIGtleXdvcmQtaWRlbnRpY2FsP1xuIFwiRWZmaWNpZW50IHRlc3QgdG8gZGV0ZXJtaW5lIHRoYXQgdHdvIGtleXdvcmRzIGFyZSBpZGVudGljYWwuXCJcbiBbeCB5XVxuIChpZlxuICAoaWRlbnRpY2FsPyB4IHkpXG4gIHRydWVcbiAgKGlmXG4gICAoYW5kIChrZXl3b3JkPyB4KSAoa2V5d29yZD8geSkpXG4gICAoaWRlbnRpY2FsPyAoLi1mcW4geCkgKC4tZnFuIHkpKVxuICAgZmFsc2UpKSlcbiJ9IHs6c3ltICpwcmludC1lcnItZm4qLCA6bWV0YSB7OmRvYyAiRWFjaCBydW50aW1lIGVudmlyb25tZW50IHByb3ZpZGVzIGEgZGlmZmVyZW50IHdheSB0byBwcmludCBlcnJvciBvdXRwdXQuXG4gIFdoYXRldmVyIGZ1bmN0aW9uICpwcmludC1lcnItZm4qIGlzIGJvdW5kIHRvIHdpbGwgYmUgcGFzc2VkIGFueVxuICBTdHJpbmdzIHdoaWNoIHNob3VsZCBiZSBwcmludGVkLiJ9LCA6c291cmNlICIoZGVmb25jZSAqcHJpbnQtZXJyLWZuKiBuaWwpXG4ifSB7OnN5bSBwcmVmZXJzLCA6bWV0YSB7OmRvYyAiR2l2ZW4gYSBtdWx0aW1ldGhvZCwgcmV0dXJucyBhIG1hcCBvZiBwcmVmZXJyZWQgdmFsdWUgLT4gc2V0IG9mIG90aGVyIHZhbHVlcyIsIDphcmdsaXN0cyAoW211bHRpZm5dKX0sIDpzb3VyY2UgIihkZWZuXG4gcHJlZmVyc1xuIFwiR2l2ZW4gYSBtdWx0aW1ldGhvZCwgcmV0dXJucyBhIG1hcCBvZiBwcmVmZXJyZWQgdmFsdWUgLT4gc2V0IG9mIG90aGVyIHZhbHVlc1wiXG4gW211bHRpZm5dXG4gKC1wcmVmZXJzIG11bHRpZm4pKVxuIn0gezpzeW0gLWpzLT5jbGosIDptZXRhIHs6ZG9jICJUcmFuc2Zvcm1zIEphdmFTY3JpcHQgdmFsdWVzIHRvIENsb2p1cmUiLCA6YXJnbGlzdHMgKFt4IG9wdGlvbnNdKX0sIDpwcm90b2NvbCBJRW5jb2RlQ2xvanVyZX0gezpzeW0gZGVkdXBlLCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIGxhenkgc2VxdWVuY2UgcmVtb3ZpbmcgY29uc2VjdXRpdmUgZHVwbGljYXRlcyBpbiBjb2xsLlxuICBSZXR1cm5zIGEgdHJhbnNkdWNlciB3aGVuIG5vIGNvbGxlY3Rpb24gaXMgcHJvdmlkZWQuIiwgOmFyZ2xpc3RzIFtbXSBbY29sbF1dfSwgOnNvdXJjZSAiKGRlZm5cbiBkZWR1cGVcbiBcIlJldHVybnMgYSBsYXp5IHNlcXVlbmNlIHJlbW92aW5nIGNvbnNlY3V0aXZlIGR1cGxpY2F0ZXMgaW4gY29sbC5cXG4gIFJldHVybnMgYSB0cmFuc2R1Y2VyIHdoZW4gbm8gY29sbGVjdGlvbiBpcyBwcm92aWRlZC5cIlxuIChbXVxuICAoZm5cbiAgIFtyZl1cbiAgIChsZXRcbiAgICBbcGEgKHZvbGF0aWxlISA6Y2xqcy5jb3JlL25vbmUpXVxuICAgIChmblxuICAgICAoW10gKHJmKSlcbiAgICAgKFtyZXN1bHRdIChyZiByZXN1bHQpKVxuICAgICAoW3Jlc3VsdCBpbnB1dF1cbiAgICAgIChsZXRcbiAgICAgICBbcHJpb3IgQHBhXVxuICAgICAgICh2cmVzZXQhIHBhIGlucHV0KVxuICAgICAgIChpZiAoPSBwcmlvciBpbnB1dCkgcmVzdWx0IChyZiByZXN1bHQgaW5wdXQpKSkpKSkpKVxuIChbY29sbF0gKHNlcXVlbmNlIChkZWR1cGUpIGNvbGwpKSlcbiJ9IHs6c3ltIGRpc3NvYywgOm1ldGEgezpkb2MgImRpc3NvY1tpYXRlXS4gUmV0dXJucyBhIG5ldyBtYXAgb2YgdGhlIHNhbWUgKGhhc2hlZC9zb3J0ZWQpIHR5cGUsXG4gIHRoYXQgZG9lcyBub3QgY29udGFpbiBhIG1hcHBpbmcgZm9yIGtleShzKS4iLCA6YXJnbGlzdHMgW1tjb2xsXSBbY29sbCBrXSBbY29sbCBrICYga3NdXX0sIDpzb3VyY2UgIihkZWZuXG4gZGlzc29jXG4gXCJkaXNzb2NbaWF0ZV0uIFJldHVybnMgYSBuZXcgbWFwIG9mIHRoZSBzYW1lIChoYXNoZWQvc29ydGVkKSB0eXBlLFxcbiAgdGhhdCBkb2VzIG5vdCBjb250YWluIGEgbWFwcGluZyBmb3Iga2V5KHMpLlwiXG4gKFtjb2xsXSBjb2xsKVxuIChbY29sbCBrXSAod2hlbi1ub3QgKG5pbD8gY29sbCkgKC1kaXNzb2MgY29sbCBrKSkpXG4gKFtjb2xsIGsgJiBrc11cbiAgKHdoZW4tbm90XG4gICAobmlsPyBjb2xsKVxuICAgKGxldFxuICAgIFtyZXQgKGRpc3NvYyBjb2xsIGspXVxuICAgIChpZiBrcyAocmVjdXIgcmV0IChmaXJzdCBrcykgKG5leHQga3MpKSByZXQpKSkpKVxuIn0gezpzeW0gYXRvbSwgOm1ldGEgezpkb2MgIkNyZWF0ZXMgYW5kIHJldHVybnMgYW4gQXRvbSB3aXRoIGFuIGluaXRpYWwgdmFsdWUgb2YgeCBhbmQgemVybyBvclxuICBtb3JlIG9wdGlvbnMgKGluIGFueSBvcmRlcik6XG5cbiAgOm1ldGEgbWV0YWRhdGEtbWFwXG5cbiAgOnZhbGlkYXRvciB2YWxpZGF0ZS1mblxuXG4gIElmIG1ldGFkYXRhLW1hcCBpcyBzdXBwbGllZCwgaXQgd2lsbCBiZWNvbWUgdGhlIG1ldGFkYXRhIG9uIHRoZVxuICBhdG9tLiB2YWxpZGF0ZS1mbiBtdXN0IGJlIG5pbCBvciBhIHNpZGUtZWZmZWN0LWZyZWUgZm4gb2Ygb25lXG4gIGFyZ3VtZW50LCB3aGljaCB3aWxsIGJlIHBhc3NlZCB0aGUgaW50ZW5kZWQgbmV3IHN0YXRlIG9uIGFueSBzdGF0ZVxuICBjaGFuZ2UuIElmIHRoZSBuZXcgc3RhdGUgaXMgdW5hY2NlcHRhYmxlLCB0aGUgdmFsaWRhdGUtZm4gc2hvdWxkXG4gIHJldHVybiBmYWxzZSBvciB0aHJvdyBhbiBFcnJvci4gIElmIGVpdGhlciBvZiB0aGVzZSBlcnJvciBjb25kaXRpb25zXG4gIG9jY3VyLCB0aGVuIHRoZSB2YWx1ZSBvZiB0aGUgYXRvbSB3aWxsIG5vdCBjaGFuZ2UuIiwgOmFyZ2xpc3RzIFtbeF0gW3ggJiB7OmtleXMgW21ldGEgdmFsaWRhdG9yXX1dXX0sIDpzb3VyY2UgIihkZWZuXG4gYXRvbVxuIFwiQ3JlYXRlcyBhbmQgcmV0dXJucyBhbiBBdG9tIHdpdGggYW4gaW5pdGlhbCB2YWx1ZSBvZiB4IGFuZCB6ZXJvIG9yXFxuICBtb3JlIG9wdGlvbnMgKGluIGFueSBvcmRlcik6XFxuXFxuICA6bWV0YSBtZXRhZGF0YS1tYXBcXG5cXG4gIDp2YWxpZGF0b3IgdmFsaWRhdGUtZm5cXG5cXG4gIElmIG1ldGFkYXRhLW1hcCBpcyBzdXBwbGllZCwgaXQgd2lsbCBiZWNvbWUgdGhlIG1ldGFkYXRhIG9uIHRoZVxcbiAgYXRvbS4gdmFsaWRhdGUtZm4gbXVzdCBiZSBuaWwgb3IgYSBzaWRlLWVmZmVjdC1mcmVlIGZuIG9mIG9uZVxcbiAgYXJndW1lbnQsIHdoaWNoIHdpbGwgYmUgcGFzc2VkIHRoZSBpbnRlbmRlZCBuZXcgc3RhdGUgb24gYW55IHN0YXRlXFxuICBjaGFuZ2UuIElmIHRoZSBuZXcgc3RhdGUgaXMgdW5hY2NlcHRhYmxlLCB0aGUgdmFsaWRhdGUtZm4gc2hvdWxkXFxuICByZXR1cm4gZmFsc2Ugb3IgdGhyb3cgYW4gRXJyb3IuICBJZiBlaXRoZXIgb2YgdGhlc2UgZXJyb3IgY29uZGl0aW9uc1xcbiAgb2NjdXIsIHRoZW4gdGhlIHZhbHVlIG9mIHRoZSBhdG9tIHdpbGwgbm90IGNoYW5nZS5cIlxuIChbeF0gKEF0b20uIHggbmlsIG5pbCBuaWwpKVxuIChbeCAmIHs6a2V5cyBbbWV0YSB2YWxpZGF0b3JdfV0gKEF0b20uIHggbWV0YSB2YWxpZGF0b3IgbmlsKSkpXG4ifSB7OnN5bSBiaXQtc2hpZnQtcmlnaHQsIDptZXRhIHs6ZG9jICJCaXR3aXNlIHNoaWZ0IHJpZ2h0IiwgOmFyZ2xpc3RzIChbeCBuXSl9LCA6c291cmNlICIoZGVmblxuIGJpdC1zaGlmdC1yaWdodFxuIFwiQml0d2lzZSBzaGlmdCByaWdodFwiXG4gW3ggbl1cbiAoY2xqcy5jb3JlL2JpdC1zaGlmdC1yaWdodCB4IG4pKVxuIn0gezpzeW0gKmNsb2p1cmVzY3JpcHQtdmVyc2lvbiosIDptZXRhIHt9LCA6c291cmNlICIoZGVmICpjbG9qdXJlc2NyaXB0LXZlcnNpb24qIFwiMS4xMS40XCIpXG4ifSB7OnN5bSAtZmlyc3QsIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRoZSBmaXJzdCBpdGVtIGluIHRoZSBjb2xsZWN0aW9uIGNvbGwuIFVzZWQgYnkgY2xqcy5jb3JlL2ZpcnN0LiIsIDphcmdsaXN0cyAoW2NvbGxdKX0sIDpwcm90b2NvbCBJU2VxfSB7OnN5bSBwZWVrLCA6bWV0YSB7OmRvYyAiRm9yIGEgbGlzdCBvciBxdWV1ZSwgc2FtZSBhcyBmaXJzdCwgZm9yIGEgdmVjdG9yLCBzYW1lIGFzLCBidXQgbXVjaFxuICBtb3JlIGVmZmljaWVudCB0aGFuLCBsYXN0LiBJZiB0aGUgY29sbGVjdGlvbiBpcyBlbXB0eSwgcmV0dXJucyBuaWwuIiwgOmFyZ2xpc3RzIChbY29sbF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBwZWVrXG4gXCJGb3IgYSBsaXN0IG9yIHF1ZXVlLCBzYW1lIGFzIGZpcnN0LCBmb3IgYSB2ZWN0b3IsIHNhbWUgYXMsIGJ1dCBtdWNoXFxuICBtb3JlIGVmZmljaWVudCB0aGFuLCBsYXN0LiBJZiB0aGUgY29sbGVjdGlvbiBpcyBlbXB0eSwgcmV0dXJucyBuaWwuXCJcbiBbY29sbF1cbiAod2hlbi1ub3QgKG5pbD8gY29sbCkgKC1wZWVrIGNvbGwpKSlcbiJ9IHs6c3ltIElLVlJlZHVjZSwgOm1ldGEgezpkb2MgIlByb3RvY29sIGZvciBhc3NvY2lhdGl2ZSB0eXBlcyB0aGF0IGNhbiByZWR1Y2UgdGhlbXNlbHZlc1xuICB2aWEgYSBmdW5jdGlvbiBvZiBrZXkgYW5kIHZhbC4gQ2FsbGVkIGJ5IGNsanMuY29yZS9yZWR1Y2Uta3YuIn0sIDptZXRob2RzICgta3YtcmVkdWNlKX0gezpzeW0gYWdldCwgOm1ldGEgezpkb2MgIlJldHVybnMgdGhlIHZhbHVlIGF0IHRoZSBpbmRleC9pbmRpY2VzLiBXb3JrcyBvbiBKYXZhU2NyaXB0IGFycmF5cy4iLCA6YXJnbGlzdHMgW1thcnJheSBpZHhdIFthcnJheSBpZHggJiBpZHhzXV19LCA6c291cmNlICIoZGVmblxuIGFnZXRcbiBcIlJldHVybnMgdGhlIHZhbHVlIGF0IHRoZSBpbmRleC9pbmRpY2VzLiBXb3JrcyBvbiBKYXZhU2NyaXB0IGFycmF5cy5cIlxuIChbYXJyYXkgaWR4XSAoY2xqcy5jb3JlL2FnZXQgYXJyYXkgaWR4KSlcbiAoW2FycmF5IGlkeCAmIGlkeHNdIChhcHBseSBhZ2V0IChhZ2V0IGFycmF5IGlkeCkgaWR4cykpKVxuIn0gezpzeW0gLXdyaXRlLCA6bWV0YSB7OmRvYyAiV3JpdGVzIHMgd2l0aCB3cml0ZXIgYW5kIHJldHVybnMgdGhlIHJlc3VsdC4iLCA6YXJnbGlzdHMgKFt3cml0ZXIgc10pfSwgOnByb3RvY29sIElXcml0ZXJ9IHs6c3ltIGl0ZXIsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbY29sbF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBpdGVyXG4gW2NvbGxdXG4gKGNvbmRcbiAgKGl0ZXJhYmxlPyBjb2xsKVxuICAoLWl0ZXJhdG9yIGNvbGwpXG4gIChuaWw/IGNvbGwpXG4gIChuaWwtaXRlcilcbiAgKHN0cmluZz8gY29sbClcbiAgKHN0cmluZy1pdGVyIGNvbGwpXG4gIChhcnJheT8gY29sbClcbiAgKGFycmF5LWl0ZXIgY29sbClcbiAgKHNlcWFibGU/IGNvbGwpXG4gIChzZXEtaXRlciBjb2xsKVxuICA6ZWxzZVxuICAodGhyb3cgKGpzL0Vycm9yLiAoc3RyIFwiQ2Fubm90IGNyZWF0ZSBpdGVyYXRvciBmcm9tIFwiIGNvbGwpKSkpKVxuIn0gezpzeW0gbWstYm91bmQtZm4sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbc2MgdGVzdCBrZXldKX0sIDpzb3VyY2UgIihkZWZuXG4gbWstYm91bmQtZm5cbiBbc2MgdGVzdCBrZXldXG4gKGZuXG4gIFtlXVxuICAobGV0IFtjb21wICgtY29tcGFyYXRvciBzYyldICh0ZXN0IChjb21wICgtZW50cnkta2V5IHNjIGUpIGtleSkgMCkpKSlcbiJ9IHs6c3ltIGxhc3QsIDptZXRhIHs6ZG9jICJSZXR1cm4gdGhlIGxhc3QgaXRlbSBpbiBjb2xsLCBpbiBsaW5lYXIgdGltZSIsIDphcmdsaXN0cyAoW3NdKX0sIDpzb3VyY2UgIihkZWZuXG4gbGFzdFxuIFwiUmV0dXJuIHRoZSBsYXN0IGl0ZW0gaW4gY29sbCwgaW4gbGluZWFyIHRpbWVcIlxuIFtzXVxuIChsZXQgW3NuIChuZXh0IHMpXSAoaWYtbm90IChuaWw/IHNuKSAocmVjdXIgc24pIChmaXJzdCBzKSkpKVxuIn0gezpzeW0gLWRlZmF1bHQtZGlzcGF0Y2gtdmFsLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW21mXSl9LCA6cHJvdG9jb2wgSU11bHRpRm59IHs6c3ltIHByLCA6bWV0YSB7OmRvYyAiUHJpbnRzIHRoZSBvYmplY3QocykgdXNpbmcgc3RyaW5nLXByaW50LiAgUHJpbnRzIHRoZVxuICBvYmplY3QocyksIHNlcGFyYXRlZCBieSBzcGFjZXMgaWYgdGhlcmUgaXMgbW9yZSB0aGFuIG9uZS5cbiAgQnkgZGVmYXVsdCwgcHIgYW5kIHBybiBwcmludCBpbiBhIHdheSB0aGF0IG9iamVjdHMgY2FuIGJlXG4gIHJlYWQgYnkgdGhlIHJlYWRlciIsIDphcmdsaXN0cyAoWyYgb2Jqc10pfSwgOnNvdXJjZSAiKGRlZm5cbiBwclxuIFwiUHJpbnRzIHRoZSBvYmplY3QocykgdXNpbmcgc3RyaW5nLXByaW50LiAgUHJpbnRzIHRoZVxcbiAgb2JqZWN0KHMpLCBzZXBhcmF0ZWQgYnkgc3BhY2VzIGlmIHRoZXJlIGlzIG1vcmUgdGhhbiBvbmUuXFxuICBCeSBkZWZhdWx0LCBwciBhbmQgcHJuIHByaW50IGluIGEgd2F5IHRoYXQgb2JqZWN0cyBjYW4gYmVcXG4gIHJlYWQgYnkgdGhlIHJlYWRlclwiXG4gWyYgb2Jqc11cbiAocHItd2l0aC1vcHRzIG9ianMgKHByLW9wdHMpKSlcbiJ9IHs6c3ltIG5hbWVzcGFjZSwgOm1ldGEgezpkb2MgIlJldHVybnMgdGhlIG5hbWVzcGFjZSBTdHJpbmcgb2YgYSBzeW1ib2wgb3Iga2V5d29yZCwgb3IgbmlsIGlmIG5vdCBwcmVzZW50LiIsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuXG4gbmFtZXNwYWNlXG4gXCJSZXR1cm5zIHRoZSBuYW1lc3BhY2UgU3RyaW5nIG9mIGEgc3ltYm9sIG9yIGtleXdvcmQsIG9yIG5pbCBpZiBub3QgcHJlc2VudC5cIlxuIFt4XVxuIChpZlxuICAoaW1wbGVtZW50cz8gSU5hbWVkIHgpXG4gICgtbmFtZXNwYWNlIHgpXG4gICh0aHJvdyAoanMvRXJyb3IuIChzdHIgXCJEb2Vzbid0IHN1cHBvcnQgbmFtZXNwYWNlOiBcIiB4KSkpKSlcbiJ9IHs6c3ltIG9iai1tYXAsIDptZXRhIHs6ZG9jICJrZXl2YWwgPT4ga2V5IHZhbFxuICBSZXR1cm5zIGEgbmV3IG9iamVjdCBtYXAgd2l0aCBzdXBwbGllZCBtYXBwaW5ncy4iLCA6YXJnbGlzdHMgKFsmIGtleXZhbHNdKX0sIDpzb3VyY2UgIihkZWZuXG4gb2JqLW1hcFxuIFwia2V5dmFsID0+IGtleSB2YWxcXG4gIFJldHVybnMgYSBuZXcgb2JqZWN0IG1hcCB3aXRoIHN1cHBsaWVkIG1hcHBpbmdzLlwiXG4gWyYga2V5dmFsc11cbiAobGV0XG4gIFtrcyAoYXJyYXkpIG9iaiAoanMtb2JqKV1cbiAgKGxvb3BcbiAgIFtrdnMgKHNlcSBrZXl2YWxzKV1cbiAgIChpZlxuICAgIGt2c1xuICAgIChkb1xuICAgICAoLnB1c2gga3MgKGZpcnN0IGt2cykpXG4gICAgIChnb2JqZWN0L3NldCBvYmogKGZpcnN0IGt2cykgKHNlY29uZCBrdnMpKVxuICAgICAocmVjdXIgKG5uZXh0IGt2cykpKVxuICAgICguZnJvbU9iamVjdCBPYmpNYXAga3Mgb2JqKSkpKSlcbiJ9IHs6c3ltIC1jb25qLCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIG5ldyBjb2xsZWN0aW9uIG9mIGNvbGwgd2l0aCBvIGFkZGVkIHRvIGl0LiBUaGUgbmV3IGl0ZW1cbiAgICAgc2hvdWxkIGJlIGFkZGVkIHRvIHRoZSBtb3N0IGVmZmljaWVudCBwbGFjZSwgZS5nLlxuICAgICAoY29uaiBbMSAyIDMgNF0gNSkgPT4gWzEgMiAzIDQgNV1cbiAgICAgKGNvbmogJygyIDMgNCA1KSAxKSA9PiAnKDEgMiAzIDQgNSkiLCA6YXJnbGlzdHMgKFtjb2xsIG9dKX0sIDpwcm90b2NvbCBJQ29sbGVjdGlvbn0gezpzeW0gPSwgOm1ldGEgezpkb2MgIkVxdWFsaXR5LiBSZXR1cm5zIHRydWUgaWYgeCBlcXVhbHMgeSwgZmFsc2UgaWYgbm90LiBDb21wYXJlc1xuICBudW1iZXJzIGFuZCBjb2xsZWN0aW9ucyBpbiBhIHR5cGUtaW5kZXBlbmRlbnQgbWFubmVyLiAgQ2xvanVyZSdzIGltbXV0YWJsZSBkYXRhXG4gIHN0cnVjdHVyZXMgZGVmaW5lIC1lcXVpdiAoYW5kIHRodXMgPSkgYXMgYSB2YWx1ZSwgbm90IGFuIGlkZW50aXR5LFxuICBjb21wYXJpc29uLiIsIDphcmdsaXN0cyBbW3hdIFt4IHldIFt4IHkgJiBtb3JlXV19LCA6c291cmNlICIoZGVmblxuID1cbiBcIkVxdWFsaXR5LiBSZXR1cm5zIHRydWUgaWYgeCBlcXVhbHMgeSwgZmFsc2UgaWYgbm90LiBDb21wYXJlc1xcbiAgbnVtYmVycyBhbmQgY29sbGVjdGlvbnMgaW4gYSB0eXBlLWluZGVwZW5kZW50IG1hbm5lci4gIENsb2p1cmUncyBpbW11dGFibGUgZGF0YVxcbiAgc3RydWN0dXJlcyBkZWZpbmUgLWVxdWl2IChhbmQgdGh1cyA9KSBhcyBhIHZhbHVlLCBub3QgYW4gaWRlbnRpdHksXFxuICBjb21wYXJpc29uLlwiXG4gKFt4XSB0cnVlKVxuIChbeCB5XSAoaWYgKG5pbD8geCkgKG5pbD8geSkgKG9yIChpZGVudGljYWw/IHggeSkgKC1lcXVpdiB4IHkpKSkpXG4gKFt4IHkgJiBtb3JlXVxuICAoaWZcbiAgICg9IHggeSlcbiAgIChpZlxuICAgIChuZXh0IG1vcmUpXG4gICAgKHJlY3VyIHkgKGZpcnN0IG1vcmUpIChuZXh0IG1vcmUpKVxuICAgICg9IHkgKGZpcnN0IG1vcmUpKSlcbiAgIGZhbHNlKSkpXG4ifSB7OnN5bSBJVHJhbnNpZW50TWFwLCA6bWV0YSB7OmRvYyAiUHJvdG9jb2wgZm9yIGFkZGluZyBtYXBwaW5nIGZ1bmN0aW9uYWxpdHkgdG8gdHJhbnNpZW50IGNvbGxlY3Rpb25zLiJ9LCA6bWV0aG9kcyAoLWRpc3NvYyEpfSB7OnN5bSB0YWtlLCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIGxhenkgc2VxdWVuY2Ugb2YgdGhlIGZpcnN0IG4gaXRlbXMgaW4gY29sbCwgb3IgYWxsIGl0ZW1zIGlmXG4gIHRoZXJlIGFyZSBmZXdlciB0aGFuIG4uICBSZXR1cm5zIGEgc3RhdGVmdWwgdHJhbnNkdWNlciB3aGVuXG4gIG5vIGNvbGxlY3Rpb24gaXMgcHJvdmlkZWQuIiwgOmFyZ2xpc3RzIFtbbl0gW24gY29sbF1dfSwgOnNvdXJjZSAiKGRlZm5cbiB0YWtlXG4gXCJSZXR1cm5zIGEgbGF6eSBzZXF1ZW5jZSBvZiB0aGUgZmlyc3QgbiBpdGVtcyBpbiBjb2xsLCBvciBhbGwgaXRlbXMgaWZcXG4gIHRoZXJlIGFyZSBmZXdlciB0aGFuIG4uICBSZXR1cm5zIGEgc3RhdGVmdWwgdHJhbnNkdWNlciB3aGVuXFxuICBubyBjb2xsZWN0aW9uIGlzIHByb3ZpZGVkLlwiXG4gKFtuXVxuICB7OnByZSBbKG51bWJlcj8gbildfVxuICAoZm5cbiAgIFtyZl1cbiAgIChsZXRcbiAgICBbbmEgKHZvbGF0aWxlISBuKV1cbiAgICAoZm5cbiAgICAgKFtdIChyZikpXG4gICAgIChbcmVzdWx0XSAocmYgcmVzdWx0KSlcbiAgICAgKFtyZXN1bHQgaW5wdXRdXG4gICAgICAobGV0XG4gICAgICAgW25cbiAgICAgICAgQG5hXG4gICAgICAgIG5uXG4gICAgICAgICh2c3dhcCEgbmEgZGVjKVxuICAgICAgICByZXN1bHRcbiAgICAgICAgKGlmIChwb3M/IG4pIChyZiByZXN1bHQgaW5wdXQpIHJlc3VsdCldXG4gICAgICAgKGlmIChub3QgKHBvcz8gbm4pKSAoZW5zdXJlLXJlZHVjZWQgcmVzdWx0KSByZXN1bHQpKSkpKSkpXG4gKFtuIGNvbGxdXG4gIHs6cHJlIFsobnVtYmVyPyBuKV19XG4gIChsYXp5LXNlcVxuICAgKHdoZW5cbiAgICAocG9zPyBuKVxuICAgICh3aGVuLWxldFxuICAgICBbcyAoc2VxIGNvbGwpXVxuICAgICAoY29ucyAoZmlyc3QgcykgKHRha2UgKGRlYyBuKSAocmVzdCBzKSkpKSkpKSlcbiJ9IHs6c3ltIHZlY3Rvcj8sIDptZXRhIHs6ZG9jICJSZXR1cm4gdHJ1ZSBpZiB4IHNhdGlzZmllcyBJVmVjdG9yIiwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm5cbiB2ZWN0b3I/XG4gXCJSZXR1cm4gdHJ1ZSBpZiB4IHNhdGlzZmllcyBJVmVjdG9yXCJcbiBbeF1cbiAoc2F0aXNmaWVzPyBJVmVjdG9yIHgpKVxuIn0gezpzeW0gYm9vbGVhbiwgOm1ldGEgezpkb2MgIkNvZXJjZSB0byBib29sZWFuIiwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBib29sZWFuXG4gXCJDb2VyY2UgdG8gYm9vbGVhblwiXG4gW3hdXG4gKGNvbmQgKG5pbD8geCkgZmFsc2UgKGZhbHNlPyB4KSBmYWxzZSA6ZWxzZSB0cnVlKSlcbiJ9IHs6c3ltIElDaHVuaywgOm1ldGEgezpkb2MgIlByb3RvY29sIGZvciBhY2Nlc3NpbmcgdGhlIGl0ZW1zIG9mIGEgY2h1bmsuIn0sIDptZXRob2RzICgtZHJvcC1maXJzdCl9IHs6c3ltIGJpdC1zaGlmdC1sZWZ0LCA6bWV0YSB7OmRvYyAiQml0d2lzZSBzaGlmdCBsZWZ0IiwgOmFyZ2xpc3RzIChbeCBuXSl9LCA6c291cmNlICIoZGVmblxuIGJpdC1zaGlmdC1sZWZ0XG4gXCJCaXR3aXNlIHNoaWZ0IGxlZnRcIlxuIFt4IG5dXG4gKGNsanMuY29yZS9iaXQtc2hpZnQtbGVmdCB4IG4pKVxuIn0gezpzeW0gcmFuZG9tLXV1aWQsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbXSl9LCA6c291cmNlICIoZGVmblxuIHJhbmRvbS11dWlkXG4gW11cbiAobGV0Zm5cbiAgWyhoZXggW10gKC50b1N0cmluZyAocmFuZC1pbnQgMTYpIDE2KSldXG4gIChsZXRcbiAgIFtyaGV4ICgudG9TdHJpbmcgKGJpdC1vciA4IChiaXQtYW5kIDMgKHJhbmQtaW50IDE2KSkpIDE2KV1cbiAgICh1dWlkXG4gICAgKHN0clxuICAgICAoaGV4KVxuICAgICAoaGV4KVxuICAgICAoaGV4KVxuICAgICAoaGV4KVxuICAgICAoaGV4KVxuICAgICAoaGV4KVxuICAgICAoaGV4KVxuICAgICAoaGV4KVxuICAgICBcIi1cIlxuICAgICAoaGV4KVxuICAgICAoaGV4KVxuICAgICAoaGV4KVxuICAgICAoaGV4KVxuICAgICBcIi1cIlxuICAgICBcIjRcIlxuICAgICAoaGV4KVxuICAgICAoaGV4KVxuICAgICAoaGV4KVxuICAgICBcIi1cIlxuICAgICByaGV4XG4gICAgIChoZXgpXG4gICAgIChoZXgpXG4gICAgIChoZXgpXG4gICAgIFwiLVwiXG4gICAgIChoZXgpXG4gICAgIChoZXgpXG4gICAgIChoZXgpXG4gICAgIChoZXgpXG4gICAgIChoZXgpXG4gICAgIChoZXgpXG4gICAgIChoZXgpXG4gICAgIChoZXgpXG4gICAgIChoZXgpXG4gICAgIChoZXgpXG4gICAgIChoZXgpXG4gICAgIChoZXgpKSkpKSlcbiJ9IHs6c3ltIGFueT8sIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRydWUgaWYgZ2l2ZW4gYW55IGFyZ3VtZW50LiIsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuIGFueT8gXCJSZXR1cm5zIHRydWUgaWYgZ2l2ZW4gYW55IGFyZ3VtZW50LlwiIFt4XSB0cnVlKVxuIn0gezpzeW0gcmFuZC1pbnQsIDptZXRhIHs6ZG9jICJSZXR1cm5zIGEgcmFuZG9tIGludGVnZXIgYmV0d2VlbiAwIChpbmNsdXNpdmUpIGFuZCBuIChleGNsdXNpdmUpLiIsIDphcmdsaXN0cyAoW25dKX0sIDpzb3VyY2UgIihkZWZuXG4gcmFuZC1pbnRcbiBcIlJldHVybnMgYSByYW5kb20gaW50ZWdlciBiZXR3ZWVuIDAgKGluY2x1c2l2ZSkgYW5kIG4gKGV4Y2x1c2l2ZSkuXCJcbiBbbl1cbiAoTWF0aC9mbG9vciAoKiAoTWF0aC9yYW5kb20pIG4pKSlcbiJ9IHs6c3ltIGFjbG9uZSwgOm1ldGEgezpkb2MgIlJldHVybnMgYSBqYXZhc2NyaXB0IGFycmF5LCBjbG9uZWQgZnJvbSB0aGUgcGFzc2VkIGluIGFycmF5IiwgOmFyZ2xpc3RzIChbYXJyXSl9LCA6c291cmNlICIoZGVmblxuIGFjbG9uZVxuIFwiUmV0dXJucyBhIGphdmFzY3JpcHQgYXJyYXksIGNsb25lZCBmcm9tIHRoZSBwYXNzZWQgaW4gYXJyYXlcIlxuIFthcnJdXG4gKGxldFxuICBbbGVuIChhbGVuZ3RoIGFycikgbmV3LWFyciAobWFrZS1hcnJheSBsZW4pXVxuICAoZG90aW1lcyBbaSBsZW5dIChhc2V0IG5ldy1hcnIgaSAoYWdldCBhcnIgaSkpKVxuICBuZXctYXJyKSlcbiJ9IHs6c3ltIHZyZXNldCEsIDptZXRhIHs6ZG9jICJTZXRzIHRoZSB2YWx1ZSBvZiB2b2xhdGlsZSB0byBuZXd2YWwgd2l0aG91dCByZWdhcmQgZm9yIHRoZVxuICAgY3VycmVudCB2YWx1ZS4gUmV0dXJucyBuZXd2YWwuIiwgOmFyZ2xpc3RzIChbdm9sIG5ld3ZhbF0pfSwgOnNvdXJjZSAiKGRlZm5cbiB2cmVzZXQhXG4gXCJTZXRzIHRoZSB2YWx1ZSBvZiB2b2xhdGlsZSB0byBuZXd2YWwgd2l0aG91dCByZWdhcmQgZm9yIHRoZVxcbiAgIGN1cnJlbnQgdmFsdWUuIFJldHVybnMgbmV3dmFsLlwiXG4gW3ZvbCBuZXd2YWxdXG4gKC12cmVzZXQhIHZvbCBuZXd2YWwpKVxuIn0gezpzeW0gY2h1bmssIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbYl0pfSwgOnNvdXJjZSAiKGRlZm4gY2h1bmsgW2JdICguY2h1bmsgYikpXG4ifSB7OnN5bSBkZWMsIDptZXRhIHs6ZG9jICJSZXR1cm5zIGEgbnVtYmVyIG9uZSBsZXNzIHRoYW4gbnVtLiIsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuIGRlYyBcIlJldHVybnMgYSBudW1iZXIgb25lIGxlc3MgdGhhbiBudW0uXCIgW3hdICgtIHggMSkpXG4ifSB7OnN5bSBBUGVyc2lzdGVudFZlY3RvciwgOm1ldGEgezpkb2MgIk1hcmtlciBwcm90b2NvbCJ9LCA6bWV0aG9kcyAoKX0gezpzeW0gbWFwLCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIGxhenkgc2VxdWVuY2UgY29uc2lzdGluZyBvZiB0aGUgcmVzdWx0IG9mIGFwcGx5aW5nIGYgdG9cbiAgdGhlIHNldCBvZiBmaXJzdCBpdGVtcyBvZiBlYWNoIGNvbGwsIGZvbGxvd2VkIGJ5IGFwcGx5aW5nIGYgdG8gdGhlXG4gIHNldCBvZiBzZWNvbmQgaXRlbXMgaW4gZWFjaCBjb2xsLCB1bnRpbCBhbnkgb25lIG9mIHRoZSBjb2xscyBpc1xuICBleGhhdXN0ZWQuICBBbnkgcmVtYWluaW5nIGl0ZW1zIGluIG90aGVyIGNvbGxzIGFyZSBpZ25vcmVkLiBGdW5jdGlvblxuICBmIHNob3VsZCBhY2NlcHQgbnVtYmVyLW9mLWNvbGxzIGFyZ3VtZW50cy4gUmV0dXJucyBhIHRyYW5zZHVjZXIgd2hlblxuICBubyBjb2xsZWN0aW9uIGlzIHByb3ZpZGVkLiIsIDphcmdsaXN0cyBbW2ZdIFtmIGNvbGxdIFtmIGMxIGMyXSBbZiBjMSBjMiBjM10gW2YgYzEgYzIgYzMgJiBjb2xsc11dfSwgOnNvdXJjZSAiKGRlZm5cbiBtYXBcbiBcIlJldHVybnMgYSBsYXp5IHNlcXVlbmNlIGNvbnNpc3Rpbmcgb2YgdGhlIHJlc3VsdCBvZiBhcHBseWluZyBmIHRvXFxuICB0aGUgc2V0IG9mIGZpcnN0IGl0ZW1zIG9mIGVhY2ggY29sbCwgZm9sbG93ZWQgYnkgYXBwbHlpbmcgZiB0byB0aGVcXG4gIHNldCBvZiBzZWNvbmQgaXRlbXMgaW4gZWFjaCBjb2xsLCB1bnRpbCBhbnkgb25lIG9mIHRoZSBjb2xscyBpc1xcbiAgZXhoYXVzdGVkLiAgQW55IHJlbWFpbmluZyBpdGVtcyBpbiBvdGhlciBjb2xscyBhcmUgaWdub3JlZC4gRnVuY3Rpb25cXG4gIGYgc2hvdWxkIGFjY2VwdCBudW1iZXItb2YtY29sbHMgYXJndW1lbnRzLiBSZXR1cm5zIGEgdHJhbnNkdWNlciB3aGVuXFxuICBubyBjb2xsZWN0aW9uIGlzIHByb3ZpZGVkLlwiXG4gKFtmXVxuICAoZm5cbiAgIFtyZl1cbiAgIChmblxuICAgIChbXSAocmYpKVxuICAgIChbcmVzdWx0XSAocmYgcmVzdWx0KSlcbiAgICAoW3Jlc3VsdCBpbnB1dF0gKHJmIHJlc3VsdCAoZiBpbnB1dCkpKVxuICAgIChbcmVzdWx0IGlucHV0ICYgaW5wdXRzXSAocmYgcmVzdWx0IChhcHBseSBmIGlucHV0IGlucHV0cykpKSkpKVxuIChbZiBjb2xsXVxuICAobGF6eS1zZXFcbiAgICh3aGVuLWxldFxuICAgIFtzIChzZXEgY29sbCldXG4gICAgKGlmXG4gICAgIChjaHVua2VkLXNlcT8gcylcbiAgICAgKGxldFxuICAgICAgW2MgKGNodW5rLWZpcnN0IHMpIHNpemUgKGNvdW50IGMpIGIgKGNodW5rLWJ1ZmZlciBzaXplKV1cbiAgICAgIChkb3RpbWVzIFtpIHNpemVdIChjaHVuay1hcHBlbmQgYiAoZiAoLW50aCBjIGkpKSkpXG4gICAgICAoY2h1bmstY29ucyAoY2h1bmsgYikgKG1hcCBmIChjaHVuay1yZXN0IHMpKSkpXG4gICAgIChjb25zIChmIChmaXJzdCBzKSkgKG1hcCBmIChyZXN0IHMpKSkpKSkpXG4gKFtmIGMxIGMyXVxuICAobGF6eS1zZXFcbiAgIChsZXRcbiAgICBbczEgKHNlcSBjMSkgczIgKHNlcSBjMildXG4gICAgKHdoZW5cbiAgICAgKGFuZCBzMSBzMilcbiAgICAgKGNvbnMgKGYgKGZpcnN0IHMxKSAoZmlyc3QgczIpKSAobWFwIGYgKHJlc3QgczEpIChyZXN0IHMyKSkpKSkpKVxuIChbZiBjMSBjMiBjM11cbiAgKGxhenktc2VxXG4gICAobGV0XG4gICAgW3MxIChzZXEgYzEpIHMyIChzZXEgYzIpIHMzIChzZXEgYzMpXVxuICAgICh3aGVuXG4gICAgIChhbmQgczEgczIgczMpXG4gICAgIChjb25zXG4gICAgICAoZiAoZmlyc3QgczEpIChmaXJzdCBzMikgKGZpcnN0IHMzKSlcbiAgICAgIChtYXAgZiAocmVzdCBzMSkgKHJlc3QgczIpIChyZXN0IHMzKSkpKSkpKVxuIChbZiBjMSBjMiBjMyAmIGNvbGxzXVxuICAobGV0XG4gICBbc3RlcFxuICAgIChmblxuICAgICBzdGVwXG4gICAgIFtjc11cbiAgICAgKGxhenktc2VxXG4gICAgICAobGV0XG4gICAgICAgW3NzIChtYXAgc2VxIGNzKV1cbiAgICAgICAod2hlblxuICAgICAgICAoZXZlcnk/IGlkZW50aXR5IHNzKVxuICAgICAgICAoY29ucyAobWFwIGZpcnN0IHNzKSAoc3RlcCAobWFwIHJlc3Qgc3MpKSkpKSkpXVxuICAgKG1hcFxuICAgIChmbiogW3AxX180MzE1MSNdIChhcHBseSBmIHAxX180MzE1MSMpKVxuICAgIChzdGVwIChjb25qIGNvbGxzIGMzIGMyIGMxKSkpKSkpXG4ifSB7OnN5bSBqdXh0LCA6bWV0YSB7OmRvYyAiVGFrZXMgYSBzZXQgb2YgZnVuY3Rpb25zIGFuZCByZXR1cm5zIGEgZm4gdGhhdCBpcyB0aGUganV4dGFwb3NpdGlvblxuICBvZiB0aG9zZSBmbnMuICBUaGUgcmV0dXJuZWQgZm4gdGFrZXMgYSB2YXJpYWJsZSBudW1iZXIgb2YgYXJncywgYW5kXG4gIHJldHVybnMgYSB2ZWN0b3IgY29udGFpbmluZyB0aGUgcmVzdWx0IG9mIGFwcGx5aW5nIGVhY2ggZm4gdG8gdGhlXG4gIGFyZ3MgKGxlZnQtdG8tcmlnaHQpLlxuICAoKGp1eHQgYSBiIGMpIHgpID0+IFsoYSB4KSAoYiB4KSAoYyB4KV0iLCA6YXJnbGlzdHMgW1tmXSBbZiBnXSBbZiBnIGhdIFtmIGcgaCAmIGZzXV19LCA6c291cmNlICIoZGVmblxuIGp1eHRcbiBcIlRha2VzIGEgc2V0IG9mIGZ1bmN0aW9ucyBhbmQgcmV0dXJucyBhIGZuIHRoYXQgaXMgdGhlIGp1eHRhcG9zaXRpb25cXG4gIG9mIHRob3NlIGZucy4gIFRoZSByZXR1cm5lZCBmbiB0YWtlcyBhIHZhcmlhYmxlIG51bWJlciBvZiBhcmdzLCBhbmRcXG4gIHJldHVybnMgYSB2ZWN0b3IgY29udGFpbmluZyB0aGUgcmVzdWx0IG9mIGFwcGx5aW5nIGVhY2ggZm4gdG8gdGhlXFxuICBhcmdzIChsZWZ0LXRvLXJpZ2h0KS5cXG4gICgoanV4dCBhIGIgYykgeCkgPT4gWyhhIHgpIChiIHgpIChjIHgpXVwiXG4gKFtmXVxuICAoZm5cbiAgIChbXSAodmVjdG9yIChmKSkpXG4gICAoW3hdICh2ZWN0b3IgKGYgeCkpKVxuICAgKFt4IHldICh2ZWN0b3IgKGYgeCB5KSkpXG4gICAoW3ggeSB6XSAodmVjdG9yIChmIHggeSB6KSkpXG4gICAoW3ggeSB6ICYgYXJnc10gKHZlY3RvciAoYXBwbHkgZiB4IHkgeiBhcmdzKSkpKSlcbiAoW2YgZ11cbiAgKGZuXG4gICAoW10gKHZlY3RvciAoZikgKGcpKSlcbiAgIChbeF0gKHZlY3RvciAoZiB4KSAoZyB4KSkpXG4gICAoW3ggeV0gKHZlY3RvciAoZiB4IHkpIChnIHggeSkpKVxuICAgKFt4IHkgel0gKHZlY3RvciAoZiB4IHkgeikgKGcgeCB5IHopKSlcbiAgIChbeCB5IHogJiBhcmdzXVxuICAgICh2ZWN0b3IgKGFwcGx5IGYgeCB5IHogYXJncykgKGFwcGx5IGcgeCB5IHogYXJncykpKSkpXG4gKFtmIGcgaF1cbiAgKGZuXG4gICAoW10gKHZlY3RvciAoZikgKGcpIChoKSkpXG4gICAoW3hdICh2ZWN0b3IgKGYgeCkgKGcgeCkgKGggeCkpKVxuICAgKFt4IHldICh2ZWN0b3IgKGYgeCB5KSAoZyB4IHkpIChoIHggeSkpKVxuICAgKFt4IHkgel0gKHZlY3RvciAoZiB4IHkgeikgKGcgeCB5IHopIChoIHggeSB6KSkpXG4gICAoW3ggeSB6ICYgYXJnc11cbiAgICAodmVjdG9yXG4gICAgIChhcHBseSBmIHggeSB6IGFyZ3MpXG4gICAgIChhcHBseSBnIHggeSB6IGFyZ3MpXG4gICAgIChhcHBseSBoIHggeSB6IGFyZ3MpKSkpKVxuIChbZiBnIGggJiBmc11cbiAgKGxldFxuICAgW2ZzIChsaXN0KiBmIGcgaCBmcyldXG4gICAoZm5cbiAgICAoW11cbiAgICAgKHJlZHVjZVxuICAgICAgKGZuKiBbcDFfXzQzMTY3IyBwMl9fNDMxNjgjXSAoY29uaiBwMV9fNDMxNjcjIChwMl9fNDMxNjgjKSkpXG4gICAgICBbXVxuICAgICAgZnMpKVxuICAgIChbeF1cbiAgICAgKHJlZHVjZVxuICAgICAgKGZuKiBbcDFfXzQzMTY5IyBwMl9fNDMxNzAjXSAoY29uaiBwMV9fNDMxNjkjIChwMl9fNDMxNzAjIHgpKSlcbiAgICAgIFtdXG4gICAgICBmcykpXG4gICAgKFt4IHldXG4gICAgIChyZWR1Y2VcbiAgICAgIChmbiogW3AxX180MzE3MSMgcDJfXzQzMTcyI10gKGNvbmogcDFfXzQzMTcxIyAocDJfXzQzMTcyIyB4IHkpKSlcbiAgICAgIFtdXG4gICAgICBmcykpXG4gICAgKFt4IHkgel1cbiAgICAgKHJlZHVjZVxuICAgICAgKGZuKlxuICAgICAgIFtwMV9fNDMxNzMjIHAyX180MzE3NCNdXG4gICAgICAgKGNvbmogcDFfXzQzMTczIyAocDJfXzQzMTc0IyB4IHkgeikpKVxuICAgICAgW11cbiAgICAgIGZzKSlcbiAgICAoW3ggeSB6ICYgYXJnc11cbiAgICAgKHJlZHVjZVxuICAgICAgKGZuKlxuICAgICAgIFtwMV9fNDMxNzUjIHAyX180MzE3NiNdXG4gICAgICAgKGNvbmogcDFfXzQzMTc1IyAoYXBwbHkgcDJfXzQzMTc2IyB4IHkgeiBhcmdzKSkpXG4gICAgICBbXVxuICAgICAgZnMpKSkpKSlcbiJ9IHs6c3ltIDwsIDptZXRhIHs6ZG9jICJSZXR1cm5zIG5vbi1uaWwgaWYgbnVtcyBhcmUgaW4gbW9ub3RvbmljYWxseSBpbmNyZWFzaW5nIG9yZGVyLFxuICBvdGhlcndpc2UgZmFsc2UuIiwgOmFyZ2xpc3RzIFtbeF0gW3ggeV0gW3ggeSAmIG1vcmVdXX0sIDpzb3VyY2UgIihkZWZuXG4gPFxuIFwiUmV0dXJucyBub24tbmlsIGlmIG51bXMgYXJlIGluIG1vbm90b25pY2FsbHkgaW5jcmVhc2luZyBvcmRlcixcXG4gIG90aGVyd2lzZSBmYWxzZS5cIlxuIChbeF0gdHJ1ZSlcbiAoW3ggeV0gKGNsanMuY29yZS88IHggeSkpXG4gKFt4IHkgJiBtb3JlXVxuICAoaWZcbiAgIChjbGpzLmNvcmUvPCB4IHkpXG4gICAoaWZcbiAgICAobmV4dCBtb3JlKVxuICAgIChyZWN1ciB5IChmaXJzdCBtb3JlKSAobmV4dCBtb3JlKSlcbiAgICAoY2xqcy5jb3JlLzwgeSAoZmlyc3QgbW9yZSkpKVxuICAgZmFsc2UpKSlcbiJ9IHs6c3ltICpldmFsKiwgOm1ldGEgezpkb2MgIlJ1bnRpbWUgZW52aXJvbm1lbnRzIG1heSBwcm92aWRlIGEgd2F5IHRvIGV2YWx1YXRlIENsb2p1cmVTY3JpcHRcbiAgZm9ybXMuIFdoYXRldmVyIGZ1bmN0aW9uICpldmFsKiBpcyBib3VuZCB0byB3aWxsIGJlIHBhc3NlZCBhbnkgZm9ybXMgd2hpY2hcbiAgc2hvdWxkIGJlIGV2YWx1YXRlZC4ifSwgOnNvdXJjZSAiKGRlZm9uY2VcbiAqZXZhbCpcbiAoZm4gW19dICh0aHJvdyAoanMvRXJyb3IuIFwiY2xqcy5jb3JlLypldmFsKiBub3QgYm91bmRcIikpKSlcbiJ9IHs6c3ltIHRlc3QsIDptZXRhIHs6ZG9jICJ0ZXN0IFt2XSBmaW5kcyBmbiBhdCBrZXkgOnRlc3QgaW4gdmFyIG1ldGFkYXRhIGFuZCBjYWxscyBpdCxcbiAgcHJlc3VtaW5nIGZhaWx1cmUgd2lsbCB0aHJvdyBleGNlcHRpb24iLCA6YXJnbGlzdHMgKFt2XSl9LCA6c291cmNlICIoZGVmblxuIHRlc3RcbiBcInRlc3QgW3ZdIGZpbmRzIGZuIGF0IGtleSA6dGVzdCBpbiB2YXIgbWV0YWRhdGEgYW5kIGNhbGxzIGl0LFxcbiAgcHJlc3VtaW5nIGZhaWx1cmUgd2lsbCB0aHJvdyBleGNlcHRpb25cIlxuIFt2XVxuIChsZXQgW2YgKC4tY2xqcyRsYW5nJHRlc3QgdildIChpZiBmIChkbyAoZikgOm9rKSA6bm8tdGVzdCkpKVxuIn0gezpzeW0gcmVzdCwgOm1ldGEgezpkb2MgIlJldHVybnMgYSBwb3NzaWJseSBlbXB0eSBzZXEgb2YgdGhlIGl0ZW1zIGFmdGVyIHRoZSBmaXJzdC4gQ2FsbHMgc2VxIG9uIGl0c1xuICBhcmd1bWVudC4iLCA6YXJnbGlzdHMgKFtjb2xsXSl9LCA6c291cmNlICIoZGVmblxuIHJlc3RcbiBcIlJldHVybnMgYSBwb3NzaWJseSBlbXB0eSBzZXEgb2YgdGhlIGl0ZW1zIGFmdGVyIHRoZSBmaXJzdC4gQ2FsbHMgc2VxIG9uIGl0c1xcbiAgYXJndW1lbnQuXCJcbiBbY29sbF1cbiAoaWYtbm90XG4gIChuaWw/IGNvbGwpXG4gIChpZlxuICAgKGltcGxlbWVudHM/IElTZXEgY29sbClcbiAgICgtcmVzdCBjb2xsKVxuICAgKGxldCBbcyAoc2VxIGNvbGwpXSAoaWYgcyAoLXJlc3QgcykgKCkpKSlcbiAgKCkpKVxuIn0gezpzeW0gZXgtZGF0YSwgOm1ldGEgezpkb2MgIlJldHVybnMgZXhjZXB0aW9uIGRhdGEgKGEgbWFwKSBpZiBleCBpcyBhbiBFeGNlcHRpb25JbmZvLlxuICBPdGhlcndpc2UgcmV0dXJucyBuaWwuIiwgOmFyZ2xpc3RzIChbZXhdKX0sIDpzb3VyY2UgIihkZWZuXG4gZXgtZGF0YVxuIFwiUmV0dXJucyBleGNlcHRpb24gZGF0YSAoYSBtYXApIGlmIGV4IGlzIGFuIEV4Y2VwdGlvbkluZm8uXFxuICBPdGhlcndpc2UgcmV0dXJucyBuaWwuXCJcbiBbZXhdXG4gKHdoZW4gKGluc3RhbmNlPyBFeGNlcHRpb25JbmZvIGV4KSAoLi1kYXRhIGV4KSkpXG4ifSB7OnN5bSAtZHJvcC1maXJzdCwgOm1ldGEgezpkb2MgIlJldHVybiBhIG5ldyBjaHVuayBvZiBjb2xsIHdpdGggdGhlIGZpcnN0IGl0ZW0gcmVtb3ZlZC4iLCA6YXJnbGlzdHMgKFtjb2xsXSl9LCA6cHJvdG9jb2wgSUNodW5rfSB7OnN5bSBpc2E/LCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0cnVlIGlmICg9IGNoaWxkIHBhcmVudCksIG9yIGNoaWxkIGlzIGRpcmVjdGx5IG9yIGluZGlyZWN0bHkgZGVyaXZlZCBmcm9tXG4gIHBhcmVudCwgZWl0aGVyIHZpYSBhIEphdmFTY3JpcHQgdHlwZSBpbmhlcml0YW5jZSByZWxhdGlvbnNoaXAgb3IgYVxuICByZWxhdGlvbnNoaXAgZXN0YWJsaXNoZWQgdmlhIGRlcml2ZS4gaCBtdXN0IGJlIGEgaGllcmFyY2h5IG9idGFpbmVkXG4gIGZyb20gbWFrZS1oaWVyYXJjaHksIGlmIG5vdCBzdXBwbGllZCBkZWZhdWx0cyB0byB0aGUgZ2xvYmFsXG4gIGhpZXJhcmNoeSIsIDphcmdsaXN0cyBbW2NoaWxkIHBhcmVudF0gW2ggY2hpbGQgcGFyZW50XV19LCA6c291cmNlICIoZGVmblxuIGlzYT9cbiBcIlJldHVybnMgdHJ1ZSBpZiAoPSBjaGlsZCBwYXJlbnQpLCBvciBjaGlsZCBpcyBkaXJlY3RseSBvciBpbmRpcmVjdGx5IGRlcml2ZWQgZnJvbVxcbiAgcGFyZW50LCBlaXRoZXIgdmlhIGEgSmF2YVNjcmlwdCB0eXBlIGluaGVyaXRhbmNlIHJlbGF0aW9uc2hpcCBvciBhXFxuICByZWxhdGlvbnNoaXAgZXN0YWJsaXNoZWQgdmlhIGRlcml2ZS4gaCBtdXN0IGJlIGEgaGllcmFyY2h5IG9idGFpbmVkXFxuICBmcm9tIG1ha2UtaGllcmFyY2h5LCBpZiBub3Qgc3VwcGxpZWQgZGVmYXVsdHMgdG8gdGhlIGdsb2JhbFxcbiAgaGllcmFyY2h5XCJcbiAoW2NoaWxkIHBhcmVudF0gKGlzYT8gQChnZXQtZ2xvYmFsLWhpZXJhcmNoeSkgY2hpbGQgcGFyZW50KSlcbiAoW2ggY2hpbGQgcGFyZW50XVxuICAob3JcbiAgICg9IGNoaWxkIHBhcmVudClcbiAgIChjb250YWlucz8gKCg6YW5jZXN0b3JzIGgpIGNoaWxkKSBwYXJlbnQpXG4gICAoYW5kXG4gICAgKHZlY3Rvcj8gcGFyZW50KVxuICAgICh2ZWN0b3I/IGNoaWxkKVxuICAgICg9PSAoY291bnQgcGFyZW50KSAoY291bnQgY2hpbGQpKVxuICAgIChsb29wXG4gICAgIFtyZXQgdHJ1ZSBpIDBdXG4gICAgIChpZlxuICAgICAgKG9yIChub3QgcmV0KSAoPT0gaSAoY291bnQgcGFyZW50KSkpXG4gICAgICByZXRcbiAgICAgIChyZWN1ciAoaXNhPyBoIChjaGlsZCBpKSAocGFyZW50IGkpKSAoaW5jIGkpKSkpKSkpKVxuIn0gezpzeW0gYm9vbGVhbj8sIDptZXRhIHs6ZG9jICJSZXR1cm4gdHJ1ZSBpZiB4IGlzIGEgQm9vbGVhbiIsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuXG4gYm9vbGVhbj9cbiBcIlJldHVybiB0cnVlIGlmIHggaXMgYSBCb29sZWFuXCJcbiBbeF1cbiAob3IgKGNsanMuY29yZS90cnVlPyB4KSAoY2xqcy5jb3JlL2ZhbHNlPyB4KSkpXG4ifSB7OnN5bSAtY2xvbmUsIDptZXRhIHs6ZG9jICJDcmVhdGVzIGEgY2xvbmUgb2YgdmFsdWUuIiwgOmFyZ2xpc3RzIChbdmFsdWVdKX0sIDpwcm90b2NvbCBJQ2xvbmVhYmxlfSB7OnN5bSBtdW5nZSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtuYW1lXSl9LCA6c291cmNlICIoZGVmblxuIG11bmdlXG4gW25hbWVdXG4gKGxldFxuICBbbmFtZSdcbiAgIChtdW5nZS1zdHIgKHN0ciBuYW1lKSlcbiAgIG5hbWUnXG4gICAoY29uZFxuICAgIChpZGVudGljYWw/IG5hbWUnIFwiLi5cIilcbiAgICBcIl9ET1RfX0RPVF9cIlxuICAgIChqcy1yZXNlcnZlZD8gbmFtZScpXG4gICAgKHN0ciBuYW1lJyBcIiRcIilcbiAgICA6ZWxzZVxuICAgIG5hbWUnKV1cbiAgKGlmIChzeW1ib2w/IG5hbWUpIChzeW1ib2wgbmFtZScpIG5hbWUnKSkpXG4ifSB7OnN5bSBERU1VTkdFX01BUCwgOm1ldGEge30sIDpzb3VyY2UgIihkZWZcbiBERU1VTkdFX01BUFxuICNqcyB7XCJfUkJSQUNFX1wiIFwifVwiLCBcIl9DT0xPTl9cIiBcIjpcIiwgXCJfQkFOR19cIiBcIiFcIiwgXCJfUU1BUktfXCIgXCI/XCIsIFwiX0JTTEFTSF9cIiBcIlxcXFxcXFxcXCIsIFwiX1NMQVNIX1wiIFwiL1wiLCBcIl9QRVJDRU5UX1wiIFwiJVwiLCBcIl9QTFVTX1wiIFwiK1wiLCBcIl9TSEFSUF9cIiBcIiNcIiwgXCJfTEJSQUNFX1wiIFwie1wiLCBcIl9CQVJfXCIgXCJ8XCIsIFwiX0xCUkFDS19cIiBcIltcIiwgXCJfRVFfXCIgXCI9XCIsIFwiX1wiIFwiLVwiLCBcIl9USUxERV9cIiBcIn5cIiwgXCJfUkJSQUNLX1wiIFwiXVwiLCBcIl9HVF9cIiBcIj5cIiwgXCJfU0lOR0xFUVVPVEVfXCIgXCInXCIsIFwiX0NJUkNBX1wiIFwiQFwiLCBcIl9BTVBFUlNBTkRfXCIgXCImXCIsIFwiX0RPVUJMRVFVT1RFX1wiIFwiXFxcXFxcXCJcIiwgXCJfQ0FSRVRfXCIgXCJeXCIsIFwiX0xUX1wiIFwiPFwiLCBcIl9TVEFSX1wiIFwiKlwifSlcbiJ9IHs6c3ltIHJlLXNlcSwgOm1ldGEgezpkb2MgIlJldHVybnMgYSBsYXp5IHNlcXVlbmNlIG9mIHN1Y2Nlc3NpdmUgbWF0Y2hlcyBvZiByZSBpbiBzLiIsIDphcmdsaXN0cyAoW3JlIHNdKX0sIDpzb3VyY2UgIihkZWZuXG4gcmUtc2VxXG4gXCJSZXR1cm5zIGEgbGF6eSBzZXF1ZW5jZSBvZiBzdWNjZXNzaXZlIG1hdGNoZXMgb2YgcmUgaW4gcy5cIlxuIFtyZSBzXVxuIChpZlxuICAoc3RyaW5nPyBzKVxuICAocmUtc2VxKiByZSBzKVxuICAodGhyb3cgKGpzL1R5cGVFcnJvci4gXCJyZS1zZXEgbXVzdCBtYXRjaCBhZ2FpbnN0IGEgc3RyaW5nLlwiKSkpKVxuIn0gezpzeW0gY2hhcj8sIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRydWUgaWYgeCBpcyBhIEphdmFTY3JpcHQgc3RyaW5nIG9mIGxlbmd0aCBvbmUuIiwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBjaGFyP1xuIFwiUmV0dXJucyB0cnVlIGlmIHggaXMgYSBKYXZhU2NyaXB0IHN0cmluZyBvZiBsZW5ndGggb25lLlwiXG4gW3hdXG4gKGFuZCAoc3RyaW5nPyB4KSAoPT0gMSAoLi1sZW5ndGggeCkpKSlcbiJ9IHs6c3ltIG1ha2UtaGllcmFyY2h5LCA6bWV0YSB7OmRvYyAiQ3JlYXRlcyBhIGhpZXJhcmNoeSBvYmplY3QgZm9yIHVzZSB3aXRoIGRlcml2ZSwgaXNhPyBldGMuIiwgOmFyZ2xpc3RzIChbXSl9LCA6c291cmNlICIoZGVmblxuIG1ha2UtaGllcmFyY2h5XG4gXCJDcmVhdGVzIGEgaGllcmFyY2h5IG9iamVjdCBmb3IgdXNlIHdpdGggZGVyaXZlLCBpc2E/IGV0Yy5cIlxuIFtdXG4gezpwYXJlbnRzIHt9LCA6ZGVzY2VuZGFudHMge30sIDphbmNlc3RvcnMge319KVxuIn0gezpzeW0gUFJPVE9DT0xfU0VOVElORUwsIDptZXRhIHt9LCA6c291cmNlICIoZGVmb25jZSBQUk9UT0NPTF9TRU5USU5FTCAjanMge30pXG4ifSB7OnN5bSAtcmVkdWNlLCA6bWV0YSB7OmRvYyAiZiBzaG91bGQgYmUgYSBmdW5jdGlvbiBvZiAyIGFyZ3VtZW50cy4gSWYgc3RhcnQgaXMgbm90IHN1cHBsaWVkLFxuICAgICByZXR1cm5zIHRoZSByZXN1bHQgb2YgYXBwbHlpbmcgZiB0byB0aGUgZmlyc3QgMiBpdGVtcyBpbiBjb2xsLCB0aGVuXG4gICAgIGFwcGx5aW5nIGYgdG8gdGhhdCByZXN1bHQgYW5kIHRoZSAzcmQgaXRlbSwgZXRjLiIsIDphcmdsaXN0cyAoW2NvbGwgZl0gW2NvbGwgZiBzdGFydF0pfSwgOnByb3RvY29sIElSZWR1Y2V9IHs6c3ltIC1jb3VudCwgOm1ldGEgezpkb2MgIkNhbGN1bGF0ZXMgdGhlIGNvdW50IG9mIGNvbGwgaW4gY29uc3RhbnQgdGltZS4gVXNlZCBieSBjbGpzLmNvcmUvY291bnQuIiwgOmFyZ2xpc3RzIChbY29sbF0pfSwgOnByb3RvY29sIElDb3VudGVkfSB7OnN5bSBzd2FwLXZhbHMhLCA6bWV0YSB7OmRvYyAiQXRvbWljYWxseSBzd2FwcyB0aGUgdmFsdWUgb2YgYXRvbSB0byBiZTpcbiAgKGFwcGx5IGYgY3VycmVudC12YWx1ZS1vZi1hdG9tIGFyZ3MpLiBOb3RlIHRoYXQgZiBtYXkgYmUgY2FsbGVkXG4gIG11bHRpcGxlIHRpbWVzLCBhbmQgdGh1cyBzaG91bGQgYmUgZnJlZSBvZiBzaWRlIGVmZmVjdHMuXG4gIFJldHVybnMgW29sZCBuZXddLCB0aGUgdmFsdWUgb2YgdGhlIGF0b20gYmVmb3JlIGFuZCBhZnRlciB0aGUgc3dhcC4iLCA6YXJnbGlzdHMgW1thIGZdIFthIGYgeF0gW2EgZiB4IHldIFthIGYgeCB5ICYgbW9yZV1dfSwgOnNvdXJjZSAiKGRlZm5cbiBzd2FwLXZhbHMhXG4gXCJBdG9taWNhbGx5IHN3YXBzIHRoZSB2YWx1ZSBvZiBhdG9tIHRvIGJlOlxcbiAgKGFwcGx5IGYgY3VycmVudC12YWx1ZS1vZi1hdG9tIGFyZ3MpLiBOb3RlIHRoYXQgZiBtYXkgYmUgY2FsbGVkXFxuICBtdWx0aXBsZSB0aW1lcywgYW5kIHRodXMgc2hvdWxkIGJlIGZyZWUgb2Ygc2lkZSBlZmZlY3RzLlxcbiAgUmV0dXJucyBbb2xkIG5ld10sIHRoZSB2YWx1ZSBvZiB0aGUgYXRvbSBiZWZvcmUgYW5kIGFmdGVyIHRoZSBzd2FwLlwiXG4gezphZGRlZCBcIjEuOVwifVxuIChbYSBmXSAocmVzZXQtdmFscyEgYSAoZiAoLi1zdGF0ZSBhKSkpKVxuIChbYSBmIHhdIChyZXNldC12YWxzISBhIChmICguLXN0YXRlIGEpIHgpKSlcbiAoW2EgZiB4IHldIChyZXNldC12YWxzISBhIChmICguLXN0YXRlIGEpIHggeSkpKVxuIChbYSBmIHggeSAmIG1vcmVdIChyZXNldC12YWxzISBhIChhcHBseSBmICguLXN0YXRlIGEpIHggeSBtb3JlKSkpKVxuIn0gezpzeW0ga2VlcCwgOm1ldGEgezpkb2MgIlJldHVybnMgYSBsYXp5IHNlcXVlbmNlIG9mIHRoZSBub24tbmlsIHJlc3VsdHMgb2YgKGYgaXRlbSkuIE5vdGUsXG4gIHRoaXMgbWVhbnMgZmFsc2UgcmV0dXJuIHZhbHVlcyB3aWxsIGJlIGluY2x1ZGVkLiAgZiBtdXN0IGJlIGZyZWUgb2ZcbiAgc2lkZS1lZmZlY3RzLiAgUmV0dXJucyBhIHRyYW5zZHVjZXIgd2hlbiBubyBjb2xsZWN0aW9uIGlzIHByb3ZpZGVkLiIsIDphcmdsaXN0cyBbW2ZdIFtmIGNvbGxdXX0sIDpzb3VyY2UgIihkZWZuXG4ga2VlcFxuIFwiUmV0dXJucyBhIGxhenkgc2VxdWVuY2Ugb2YgdGhlIG5vbi1uaWwgcmVzdWx0cyBvZiAoZiBpdGVtKS4gTm90ZSxcXG4gIHRoaXMgbWVhbnMgZmFsc2UgcmV0dXJuIHZhbHVlcyB3aWxsIGJlIGluY2x1ZGVkLiAgZiBtdXN0IGJlIGZyZWUgb2ZcXG4gIHNpZGUtZWZmZWN0cy4gIFJldHVybnMgYSB0cmFuc2R1Y2VyIHdoZW4gbm8gY29sbGVjdGlvbiBpcyBwcm92aWRlZC5cIlxuIChbZl1cbiAgKGZuXG4gICBbcmZdXG4gICAoZm5cbiAgICAoW10gKHJmKSlcbiAgICAoW3Jlc3VsdF0gKHJmIHJlc3VsdCkpXG4gICAgKFtyZXN1bHQgaW5wdXRdXG4gICAgIChsZXQgW3YgKGYgaW5wdXQpXSAoaWYgKG5pbD8gdikgcmVzdWx0IChyZiByZXN1bHQgdikpKSkpKSlcbiAoW2YgY29sbF1cbiAgKGxhenktc2VxXG4gICAod2hlbi1sZXRcbiAgICBbcyAoc2VxIGNvbGwpXVxuICAgIChpZlxuICAgICAoY2h1bmtlZC1zZXE/IHMpXG4gICAgIChsZXRcbiAgICAgIFtjIChjaHVuay1maXJzdCBzKSBzaXplIChjb3VudCBjKSBiIChjaHVuay1idWZmZXIgc2l6ZSldXG4gICAgICAoZG90aW1lc1xuICAgICAgIFtpIHNpemVdXG4gICAgICAgKGxldCBbeCAoZiAoLW50aCBjIGkpKV0gKHdoZW4tbm90IChuaWw/IHgpIChjaHVuay1hcHBlbmQgYiB4KSkpKVxuICAgICAgKGNodW5rLWNvbnMgKGNodW5rIGIpIChrZWVwIGYgKGNodW5rLXJlc3QgcykpKSlcbiAgICAgKGxldFxuICAgICAgW3ggKGYgKGZpcnN0IHMpKV1cbiAgICAgIChpZiAobmlsPyB4KSAoa2VlcCBmIChyZXN0IHMpKSAoY29ucyB4IChrZWVwIGYgKHJlc3QgcykpKSkpKSkpKSlcbiJ9IHs6c3ltIGNoYXIsIDptZXRhIHs6ZG9jICJDb2VyY2UgdG8gY2hhciIsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuXG4gY2hhclxuIFwiQ29lcmNlIHRvIGNoYXJcIlxuIFt4XVxuIChjb25kXG4gIChudW1iZXI/IHgpXG4gICguZnJvbUNoYXJDb2RlIGpzL1N0cmluZyB4KVxuICAoYW5kIChzdHJpbmc/IHgpICg9PSAoLi1sZW5ndGggeCkgMSkpXG4gIHhcbiAgOmVsc2VcbiAgKHRocm93IChqcy9FcnJvci4gXCJBcmd1bWVudCB0byBjaGFyIG11c3QgYmUgYSBjaGFyYWN0ZXIgb3IgbnVtYmVyXCIpKSkpXG4ifSB7OnN5bSBtYXBjYXQsIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRoZSByZXN1bHQgb2YgYXBwbHlpbmcgY29uY2F0IHRvIHRoZSByZXN1bHQgb2YgYXBwbHlpbmcgbWFwXG4gIHRvIGYgYW5kIGNvbGxzLiAgVGh1cyBmdW5jdGlvbiBmIHNob3VsZCByZXR1cm4gYSBjb2xsZWN0aW9uLiBSZXR1cm5zXG4gIGEgdHJhbnNkdWNlciB3aGVuIG5vIGNvbGxlY3Rpb25zIGFyZSBwcm92aWRlZCIsIDphcmdsaXN0cyBbW2ZdIFtmICYgY29sbHNdXX0sIDpzb3VyY2UgIihkZWZuXG4gbWFwY2F0XG4gXCJSZXR1cm5zIHRoZSByZXN1bHQgb2YgYXBwbHlpbmcgY29uY2F0IHRvIHRoZSByZXN1bHQgb2YgYXBwbHlpbmcgbWFwXFxuICB0byBmIGFuZCBjb2xscy4gIFRodXMgZnVuY3Rpb24gZiBzaG91bGQgcmV0dXJuIGEgY29sbGVjdGlvbi4gUmV0dXJuc1xcbiAgYSB0cmFuc2R1Y2VyIHdoZW4gbm8gY29sbGVjdGlvbnMgYXJlIHByb3ZpZGVkXCJcbiB7OmFkZGVkIFwiMS4wXCIsIDpzdGF0aWMgdHJ1ZX1cbiAoW2ZdIChjb21wIChtYXAgZikgY2F0KSlcbiAoW2YgJiBjb2xsc10gKGFwcGx5IGNvbmNhdCAoYXBwbHkgbWFwIGYgY29sbHMpKSkpXG4ifSB7OnN5bSB1bmNoZWNrZWQtbG9uZywgOm1ldGEgezpkb2MgIkNvZXJjZSB0byBsb25nIGJ5IHN0cmlwcGluZyBkZWNpbWFsIHBsYWNlcy4gSWRlbnRpY2FsIHRvIGBpbnQnLiIsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuXG4gdW5jaGVja2VkLWxvbmdcbiBcIkNvZXJjZSB0byBsb25nIGJ5IHN0cmlwcGluZyBkZWNpbWFsIHBsYWNlcy4gSWRlbnRpY2FsIHRvIGBpbnQnLlwiXG4gW3hdXG4gKGZpeCB4KSlcbiJ9IHs6c3ltIG0zLXNlZWQsIDptZXRhIHt9LCA6c291cmNlICIoZGVmIG0zLXNlZWQgMClcbiJ9IHs6c3ltIHNvbWU/LCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0cnVlIGlmIHggaXMgbm90IG5pbCwgZmFsc2Ugb3RoZXJ3aXNlLiIsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuXG4gc29tZT9cbiBcIlJldHVybnMgdHJ1ZSBpZiB4IGlzIG5vdCBuaWwsIGZhbHNlIG90aGVyd2lzZS5cIlxuIFt4XVxuIChub3QgKG5pbD8geCkpKVxuIn0gezpzeW0gdW5jaGVja2VkLW5lZ2F0ZSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmbiB1bmNoZWNrZWQtbmVnYXRlIFt4XSAoY2xqcy5jb3JlL3VuY2hlY2tlZC1uZWdhdGUgeCkpXG4ifSB7OnN5bSByZW1vdmUtdGFwLCA6bWV0YSB7OmRvYyAiUmVtb3ZlIGYgZnJvbSB0aGUgdGFwIHNldC4iLCA6YXJnbGlzdHMgKFtmXSl9LCA6c291cmNlICIoZGVmblxuIHJlbW92ZS10YXBcbiBcIlJlbW92ZSBmIGZyb20gdGhlIHRhcCBzZXQuXCJcbiBbZl1cbiAobWF5YmUtaW5pdC10YXBzZXQpXG4gKHN3YXAhIHRhcHNldCBkaXNqIGYpXG4gbmlsKVxuIn0gezpzeW0gc3ltYm9sLWlkZW50aWNhbD8sIDptZXRhIHs6ZG9jICJFZmZpY2llbnQgdGVzdCB0byBkZXRlcm1pbmUgdGhhdCB0d28gc3ltYm9scyBhcmUgaWRlbnRpY2FsLiIsIDphcmdsaXN0cyAoW3ggeV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBzeW1ib2wtaWRlbnRpY2FsP1xuIFwiRWZmaWNpZW50IHRlc3QgdG8gZGV0ZXJtaW5lIHRoYXQgdHdvIHN5bWJvbHMgYXJlIGlkZW50aWNhbC5cIlxuIFt4IHldXG4gKGlmXG4gIChpZGVudGljYWw/IHggeSlcbiAgdHJ1ZVxuICAoaWZcbiAgIChhbmQgKHN5bWJvbD8geCkgKHN5bWJvbD8geSkpXG4gICAoaWRlbnRpY2FsPyAoLi1zdHIgeCkgKC4tc3RyIHkpKVxuICAgZmFsc2UpKSlcbiJ9IHs6c3ltICpjb21tYW5kLWxpbmUtYXJncyosIDptZXRhIHs6ZG9jICJBIHNlcXVlbmNlIG9mIHRoZSBzdXBwbGllZCBjb21tYW5kIGxpbmUgYXJndW1lbnRzLCBvciBuaWwgaWZcbiAgbm9uZSB3ZXJlIHN1cHBsaWVkIn0sIDpzb3VyY2UgIihkZWYgKmNvbW1hbmQtbGluZS1hcmdzKiBuaWwpXG4ifSB7OnN5bSByZXZlcnNlLCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIHNlcSBvZiB0aGUgaXRlbXMgaW4gY29sbCBpbiByZXZlcnNlIG9yZGVyLiBOb3QgbGF6eS4iLCA6YXJnbGlzdHMgKFtjb2xsXSl9LCA6c291cmNlICIoZGVmblxuIHJldmVyc2VcbiBcIlJldHVybnMgYSBzZXEgb2YgdGhlIGl0ZW1zIGluIGNvbGwgaW4gcmV2ZXJzZSBvcmRlci4gTm90IGxhenkuXCJcbiBbY29sbF1cbiAoaWYgKHJldmVyc2libGU/IGNvbGwpIChvciAocnNlcSBjb2xsKSAoKSkgKHJlZHVjZSBjb25qICgpIGNvbGwpKSlcbiJ9IHs6c3ltIGluc3Q/LCA6bWV0YSB7OmRvYyAiUmV0dXJuIHRydWUgaWYgeCBzYXRpc2ZpZXMgSW5zdCIsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuIGluc3Q/IFwiUmV0dXJuIHRydWUgaWYgeCBzYXRpc2ZpZXMgSW5zdFwiIFt4XSAoc2F0aXNmaWVzPyBJbnN0IHgpKVxuIn0gezpzeW0gcmFuZ2UsIDptZXRhIHs6ZG9jICJSZXR1cm5zIGEgbGF6eSBzZXEgb2YgbnVtcyBmcm9tIHN0YXJ0IChpbmNsdXNpdmUpIHRvIGVuZFxuICAgKGV4Y2x1c2l2ZSksIGJ5IHN0ZXAsIHdoZXJlIHN0YXJ0IGRlZmF1bHRzIHRvIDAsIHN0ZXAgdG8gMSxcbiAgIGFuZCBlbmQgdG8gaW5maW5pdHkuIiwgOmFyZ2xpc3RzIFtbXSBbZW5kXSBbc3RhcnQgZW5kXSBbc3RhcnQgZW5kIHN0ZXBdXX0sIDpzb3VyY2UgIihkZWZuXG4gcmFuZ2VcbiBcIlJldHVybnMgYSBsYXp5IHNlcSBvZiBudW1zIGZyb20gc3RhcnQgKGluY2x1c2l2ZSkgdG8gZW5kXFxuICAgKGV4Y2x1c2l2ZSksIGJ5IHN0ZXAsIHdoZXJlIHN0YXJ0IGRlZmF1bHRzIHRvIDAsIHN0ZXAgdG8gMSxcXG4gICBhbmQgZW5kIHRvIGluZmluaXR5LlwiXG4gKFtdIChyYW5nZSAwICguLU1BWF9WQUxVRSBqcy9OdW1iZXIpIDEpKVxuIChbZW5kXSAocmFuZ2UgMCBlbmQgMSkpXG4gKFtzdGFydCBlbmRdIChyYW5nZSBzdGFydCBlbmQgMSkpXG4gKFtzdGFydCBlbmQgc3RlcF1cbiAgKGNvbmRcbiAgIChwb3M/IHN0ZXApXG4gICAoaWZcbiAgICAoPD0gZW5kIHN0YXJ0KVxuICAgICgpXG4gICAgKGlmXG4gICAgIChhbmQgKGludGVnZXI/IHN0YXJ0KSAoaW50ZWdlcj8gZW5kKSAoaW50ZWdlcj8gc3RlcCkpXG4gICAgIChJbnRlZ2VyUmFuZ2UuIG5pbCBzdGFydCBlbmQgc3RlcCBuaWwgbmlsIG5pbClcbiAgICAgKFJhbmdlLiBuaWwgc3RhcnQgZW5kIHN0ZXAgbmlsIG5pbCBuaWwpKSlcbiAgIChuZWc/IHN0ZXApXG4gICAoaWZcbiAgICAoPj0gZW5kIHN0YXJ0KVxuICAgICgpXG4gICAgKGlmXG4gICAgIChhbmQgKGludGVnZXI/IHN0YXJ0KSAoaW50ZWdlcj8gZW5kKSAoaW50ZWdlcj8gc3RlcCkpXG4gICAgIChJbnRlZ2VyUmFuZ2UuIG5pbCBzdGFydCBlbmQgc3RlcCBuaWwgbmlsIG5pbClcbiAgICAgKFJhbmdlLiBuaWwgc3RhcnQgZW5kIHN0ZXAgbmlsIG5pbCBuaWwpKSlcbiAgIDplbHNlXG4gICAoaWYgKD09IGVuZCBzdGFydCkgKCkgKHJlcGVhdCBzdGFydCkpKSkpXG4ifSB7OnN5bSBiaXQtY291bnQsIDptZXRhIHs6ZG9jICJDb3VudHMgdGhlIG51bWJlciBvZiBiaXRzIHNldCBpbiBuIiwgOmFyZ2xpc3RzIChbdl0pfSwgOnNvdXJjZSAiKGRlZm5cbiBiaXQtY291bnRcbiBcIkNvdW50cyB0aGUgbnVtYmVyIG9mIGJpdHMgc2V0IGluIG5cIlxuIFt2XVxuIChsZXRcbiAgW3ZcbiAgICgtIHYgKGJpdC1hbmQgKGJpdC1zaGlmdC1yaWdodCB2IDEpIDE0MzE2NTU3NjUpKVxuICAgdlxuICAgKCsgKGJpdC1hbmQgdiA4NTg5OTM0NTkpIChiaXQtYW5kIChiaXQtc2hpZnQtcmlnaHQgdiAyKSA4NTg5OTM0NTkpKV1cbiAgKGJpdC1zaGlmdC1yaWdodFxuICAgKCogKGJpdC1hbmQgKCsgdiAoYml0LXNoaWZ0LXJpZ2h0IHYgNCkpIDI1MjY0NTEzNSkgMTY4NDMwMDkpXG4gICAyNCkpKVxuIn0gezpzeW0gc29ydCwgOm1ldGEgezpkb2MgIlJldHVybnMgYSBzb3J0ZWQgc2VxdWVuY2Ugb2YgdGhlIGl0ZW1zIGluIGNvbGwuIENvbXAgY2FuIGJlXG4gICBib29sZWFuLXZhbHVlZCBjb21wYXJpc29uIGZ1bmN0aW9uLCBvciBhIC0vMC8rIHZhbHVlZCBjb21wYXJhdG9yLlxuICAgQ29tcCBkZWZhdWx0cyB0byBjb21wYXJlLiIsIDphcmdsaXN0cyBbW2NvbGxdIFtjb21wIGNvbGxdXX0sIDpzb3VyY2UgIihkZWZuXG4gc29ydFxuIFwiUmV0dXJucyBhIHNvcnRlZCBzZXF1ZW5jZSBvZiB0aGUgaXRlbXMgaW4gY29sbC4gQ29tcCBjYW4gYmVcXG4gICBib29sZWFuLXZhbHVlZCBjb21wYXJpc29uIGZ1bmN0aW9uLCBvciBhIC0vMC8rIHZhbHVlZCBjb21wYXJhdG9yLlxcbiAgIENvbXAgZGVmYXVsdHMgdG8gY29tcGFyZS5cIlxuIChbY29sbF0gKHNvcnQgY29tcGFyZSBjb2xsKSlcbiAoW2NvbXAgY29sbF1cbiAgKGlmXG4gICAoc2VxIGNvbGwpXG4gICAobGV0XG4gICAgW2EgKHRvLWFycmF5IGNvbGwpXVxuICAgIChnYXJyYXkvc3RhYmxlU29ydCBhIChmbi0+Y29tcGFyYXRvciBjb21wKSlcbiAgICAod2l0aC1tZXRhIChzZXEgYSkgKG1ldGEgY29sbCkpKVxuICAgKCkpKSlcbiJ9IHs6c3ltIHVuY2hlY2tlZC1pbmMtaW50LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuIHVuY2hlY2tlZC1pbmMtaW50IFt4XSAoY2xqcy5jb3JlL3VuY2hlY2tlZC1pbmMtaW50IHgpKVxuIn0gezpzeW0gLWNvbXBhcmUsIDptZXRhIHs6ZG9jICJSZXR1cm5zIGEgbmVnYXRpdmUgbnVtYmVyLCB6ZXJvLCBvciBhIHBvc2l0aXZlIG51bWJlciB3aGVuIHggaXMgbG9naWNhbGx5XG4gICAgICdsZXNzIHRoYW4nLCAnZXF1YWwgdG8nLCBvciAnZ3JlYXRlciB0aGFuJyB5LiIsIDphcmdsaXN0cyAoW3ggeV0pfSwgOnByb3RvY29sIElDb21wYXJhYmxlfSB7OnN5bSBtYXAtaW5kZXhlZCwgOm1ldGEgezpkb2MgIlJldHVybnMgYSBsYXp5IHNlcXVlbmNlIGNvbnNpc3Rpbmcgb2YgdGhlIHJlc3VsdCBvZiBhcHBseWluZyBmIHRvIDBcbiAgYW5kIHRoZSBmaXJzdCBpdGVtIG9mIGNvbGwsIGZvbGxvd2VkIGJ5IGFwcGx5aW5nIGYgdG8gMSBhbmQgdGhlIHNlY29uZFxuICBpdGVtIGluIGNvbGwsIGV0YywgdW50aWwgY29sbCBpcyBleGhhdXN0ZWQuIFRodXMgZnVuY3Rpb24gZiBzaG91bGRcbiAgYWNjZXB0IDIgYXJndW1lbnRzLCBpbmRleCBhbmQgaXRlbS4gUmV0dXJucyBhIHN0YXRlZnVsIHRyYW5zZHVjZXIgd2hlblxuICBubyBjb2xsZWN0aW9uIGlzIHByb3ZpZGVkLiIsIDphcmdsaXN0cyBbW2ZdIFtmIGNvbGxdXX0sIDpzb3VyY2UgIihkZWZuXG4gbWFwLWluZGV4ZWRcbiBcIlJldHVybnMgYSBsYXp5IHNlcXVlbmNlIGNvbnNpc3Rpbmcgb2YgdGhlIHJlc3VsdCBvZiBhcHBseWluZyBmIHRvIDBcXG4gIGFuZCB0aGUgZmlyc3QgaXRlbSBvZiBjb2xsLCBmb2xsb3dlZCBieSBhcHBseWluZyBmIHRvIDEgYW5kIHRoZSBzZWNvbmRcXG4gIGl0ZW0gaW4gY29sbCwgZXRjLCB1bnRpbCBjb2xsIGlzIGV4aGF1c3RlZC4gVGh1cyBmdW5jdGlvbiBmIHNob3VsZFxcbiAgYWNjZXB0IDIgYXJndW1lbnRzLCBpbmRleCBhbmQgaXRlbS4gUmV0dXJucyBhIHN0YXRlZnVsIHRyYW5zZHVjZXIgd2hlblxcbiAgbm8gY29sbGVjdGlvbiBpcyBwcm92aWRlZC5cIlxuIChbZl1cbiAgKGZuXG4gICBbcmZdXG4gICAobGV0XG4gICAgW2kgKHZvbGF0aWxlISAtMSldXG4gICAgKGZuXG4gICAgIChbXSAocmYpKVxuICAgICAoW3Jlc3VsdF0gKHJmIHJlc3VsdCkpXG4gICAgIChbcmVzdWx0IGlucHV0XSAocmYgcmVzdWx0IChmICh2c3dhcCEgaSBpbmMpIGlucHV0KSkpKSkpKVxuIChbZiBjb2xsXVxuICAobGV0Zm5cbiAgIFsobWFwaVxuICAgICBbaWR4IGNvbGxdXG4gICAgIChsYXp5LXNlcVxuICAgICAgKHdoZW4tbGV0XG4gICAgICAgW3MgKHNlcSBjb2xsKV1cbiAgICAgICAoaWZcbiAgICAgICAgKGNodW5rZWQtc2VxPyBzKVxuICAgICAgICAobGV0XG4gICAgICAgICBbYyAoY2h1bmstZmlyc3Qgcykgc2l6ZSAoY291bnQgYykgYiAoY2h1bmstYnVmZmVyIHNpemUpXVxuICAgICAgICAgKGRvdGltZXMgW2kgc2l6ZV0gKGNodW5rLWFwcGVuZCBiIChmICgrIGlkeCBpKSAoLW50aCBjIGkpKSkpXG4gICAgICAgICAoY2h1bmstY29ucyAoY2h1bmsgYikgKG1hcGkgKCsgaWR4IHNpemUpIChjaHVuay1yZXN0IHMpKSkpXG4gICAgICAgIChjb25zIChmIGlkeCAoZmlyc3QgcykpIChtYXBpIChpbmMgaWR4KSAocmVzdCBzKSkpKSkpKV1cbiAgIChtYXBpIDAgY29sbCkpKSlcbiJ9IHs6c3ltIGFycmF5LWxpc3QsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbXSl9LCA6c291cmNlICIoZGVmbiBhcnJheS1saXN0IFtdIChBcnJheUxpc3QuIChhcnJheSkpKVxuIn0gezpzeW0gcmFuZC1udGgsIDptZXRhIHs6ZG9jICJSZXR1cm4gYSByYW5kb20gZWxlbWVudCBvZiB0aGUgKHNlcXVlbnRpYWwpIGNvbGxlY3Rpb24uIFdpbGwgaGF2ZVxuICB0aGUgc2FtZSBwZXJmb3JtYW5jZSBjaGFyYWN0ZXJpc3RpY3MgYXMgbnRoIGZvciB0aGUgZ2l2ZW5cbiAgY29sbGVjdGlvbi4iLCA6YXJnbGlzdHMgKFtjb2xsXSl9LCA6c291cmNlICIoZGVmblxuIHJhbmQtbnRoXG4gXCJSZXR1cm4gYSByYW5kb20gZWxlbWVudCBvZiB0aGUgKHNlcXVlbnRpYWwpIGNvbGxlY3Rpb24uIFdpbGwgaGF2ZVxcbiAgdGhlIHNhbWUgcGVyZm9ybWFuY2UgY2hhcmFjdGVyaXN0aWNzIGFzIG50aCBmb3IgdGhlIGdpdmVuXFxuICBjb2xsZWN0aW9uLlwiXG4gW2NvbGxdXG4gKG50aCBjb2xsIChyYW5kLWludCAoY291bnQgY29sbCkpKSlcbiJ9IHs6c3ltIGNvbXAsIDptZXRhIHs6ZG9jICJUYWtlcyBhIHNldCBvZiBmdW5jdGlvbnMgYW5kIHJldHVybnMgYSBmbiB0aGF0IGlzIHRoZSBjb21wb3NpdGlvblxuICBvZiB0aG9zZSBmbnMuICBUaGUgcmV0dXJuZWQgZm4gdGFrZXMgYSB2YXJpYWJsZSBudW1iZXIgb2YgYXJncyxcbiAgYXBwbGllcyB0aGUgcmlnaHRtb3N0IG9mIGZucyB0byB0aGUgYXJncywgdGhlIG5leHRcbiAgZm4gKHJpZ2h0LXRvLWxlZnQpIHRvIHRoZSByZXN1bHQsIGV0Yy4iLCA6YXJnbGlzdHMgW1tdIFtmXSBbZiBnXSBbZiBnIGhdIFtmMSBmMiBmMyAmIGZzXV19LCA6c291cmNlICIoZGVmblxuIGNvbXBcbiBcIlRha2VzIGEgc2V0IG9mIGZ1bmN0aW9ucyBhbmQgcmV0dXJucyBhIGZuIHRoYXQgaXMgdGhlIGNvbXBvc2l0aW9uXFxuICBvZiB0aG9zZSBmbnMuICBUaGUgcmV0dXJuZWQgZm4gdGFrZXMgYSB2YXJpYWJsZSBudW1iZXIgb2YgYXJncyxcXG4gIGFwcGxpZXMgdGhlIHJpZ2h0bW9zdCBvZiBmbnMgdG8gdGhlIGFyZ3MsIHRoZSBuZXh0XFxuICBmbiAocmlnaHQtdG8tbGVmdCkgdG8gdGhlIHJlc3VsdCwgZXRjLlwiXG4gKFtdIGlkZW50aXR5KVxuIChbZl0gZilcbiAoW2YgZ11cbiAgKGZuXG4gICAoW10gKGYgKGcpKSlcbiAgIChbeF0gKGYgKGcgeCkpKVxuICAgKFt4IHldIChmIChnIHggeSkpKVxuICAgKFt4IHkgel0gKGYgKGcgeCB5IHopKSlcbiAgIChbeCB5IHogJiBhcmdzXSAoZiAoYXBwbHkgZyB4IHkgeiBhcmdzKSkpKSlcbiAoW2YgZyBoXVxuICAoZm5cbiAgIChbXSAoZiAoZyAoaCkpKSlcbiAgIChbeF0gKGYgKGcgKGggeCkpKSlcbiAgIChbeCB5XSAoZiAoZyAoaCB4IHkpKSkpXG4gICAoW3ggeSB6XSAoZiAoZyAoaCB4IHkgeikpKSlcbiAgIChbeCB5IHogJiBhcmdzXSAoZiAoZyAoYXBwbHkgaCB4IHkgeiBhcmdzKSkpKSkpXG4gKFtmMSBmMiBmMyAmIGZzXVxuICAobGV0XG4gICBbZnMgKHJldmVyc2UgKGxpc3QqIGYxIGYyIGYzIGZzKSldXG4gICAoZm5cbiAgICBbJiBhcmdzXVxuICAgIChsb29wXG4gICAgIFtyZXQgKGFwcGx5IChmaXJzdCBmcykgYXJncykgZnMgKG5leHQgZnMpXVxuICAgICAoaWYgZnMgKHJlY3VyICgoZmlyc3QgZnMpIHJldCkgKG5leHQgZnMpKSByZXQpKSkpKSlcbiJ9IHs6c3ltIGFycmF5LWNodW5rLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyBbW2Fycl0gW2FyciBvZmZdIFthcnIgb2ZmIGVuZF1dfSwgOnNvdXJjZSAiKGRlZm5cbiBhcnJheS1jaHVua1xuIChbYXJyXSAoQXJyYXlDaHVuay4gYXJyIDAgKGFsZW5ndGggYXJyKSkpXG4gKFthcnIgb2ZmXSAoQXJyYXlDaHVuay4gYXJyIG9mZiAoYWxlbmd0aCBhcnIpKSlcbiAoW2FyciBvZmYgZW5kXSAoQXJyYXlDaHVuay4gYXJyIG9mZiBlbmQpKSlcbiJ9IHs6c3ltIGRpc3BhdGNoLWZuLCA6bWV0YSB7OmRvYyAiR2l2ZW4gYSBtdWx0aW1ldGhvZCwgcmV0dXJuIGl0cyBkaXNwYXRjaC1mbi4iLCA6YXJnbGlzdHMgKFttdWx0aWZuXSl9LCA6c291cmNlICIoZGVmblxuIGRpc3BhdGNoLWZuXG4gXCJHaXZlbiBhIG11bHRpbWV0aG9kLCByZXR1cm4gaXRzIGRpc3BhdGNoLWZuLlwiXG4gW211bHRpZm5dXG4gKC1kaXNwYXRjaC1mbiBtdWx0aWZuKSlcbiJ9IHs6c3ltIGJpdC1zaGlmdC1yaWdodC16ZXJvLWZpbGwsIDptZXRhIHs6ZG9jICJERVBSRUNBVEVEOiBCaXR3aXNlIHNoaWZ0IHJpZ2h0IHdpdGggemVybyBmaWxsIiwgOmFyZ2xpc3RzIChbeCBuXSl9LCA6c291cmNlICIoZGVmblxuIGJpdC1zaGlmdC1yaWdodC16ZXJvLWZpbGxcbiBcIkRFUFJFQ0FURUQ6IEJpdHdpc2Ugc2hpZnQgcmlnaHQgd2l0aCB6ZXJvIGZpbGxcIlxuIFt4IG5dXG4gKGNsanMuY29yZS9iaXQtc2hpZnQtcmlnaHQtemVyby1maWxsIHggbikpXG4ifSB7OnN5bSAtYXMtdHJhbnNpZW50LCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIG5ldywgdHJhbnNpZW50IHZlcnNpb24gb2YgdGhlIGNvbGxlY3Rpb24sIGluIGNvbnN0YW50IHRpbWUuIiwgOmFyZ2xpc3RzIChbY29sbF0pfSwgOnByb3RvY29sIElFZGl0YWJsZUNvbGxlY3Rpb259IHs6c3ltIGRvcnVuLCA6bWV0YSB7OmRvYyAiV2hlbiBsYXp5IHNlcXVlbmNlcyBhcmUgcHJvZHVjZWQgdmlhIGZ1bmN0aW9ucyB0aGF0IGhhdmUgc2lkZVxuICBlZmZlY3RzLCBhbnkgZWZmZWN0cyBvdGhlciB0aGFuIHRob3NlIG5lZWRlZCB0byBwcm9kdWNlIHRoZSBmaXJzdFxuICBlbGVtZW50IGluIHRoZSBzZXEgZG8gbm90IG9jY3VyIHVudGlsIHRoZSBzZXEgaXMgY29uc3VtZWQuIGRvcnVuIGNhblxuICBiZSB1c2VkIHRvIGZvcmNlIGFueSBlZmZlY3RzLiBXYWxrcyB0aHJvdWdoIHRoZSBzdWNjZXNzaXZlIG5leHRzIG9mXG4gIHRoZSBzZXEsIGRvZXMgbm90IHJldGFpbiB0aGUgaGVhZCBhbmQgcmV0dXJucyBuaWwuIiwgOmFyZ2xpc3RzIFtbY29sbF0gW24gY29sbF1dfSwgOnNvdXJjZSAiKGRlZm5cbiBkb3J1blxuIFwiV2hlbiBsYXp5IHNlcXVlbmNlcyBhcmUgcHJvZHVjZWQgdmlhIGZ1bmN0aW9ucyB0aGF0IGhhdmUgc2lkZVxcbiAgZWZmZWN0cywgYW55IGVmZmVjdHMgb3RoZXIgdGhhbiB0aG9zZSBuZWVkZWQgdG8gcHJvZHVjZSB0aGUgZmlyc3RcXG4gIGVsZW1lbnQgaW4gdGhlIHNlcSBkbyBub3Qgb2NjdXIgdW50aWwgdGhlIHNlcSBpcyBjb25zdW1lZC4gZG9ydW4gY2FuXFxuICBiZSB1c2VkIHRvIGZvcmNlIGFueSBlZmZlY3RzLiBXYWxrcyB0aHJvdWdoIHRoZSBzdWNjZXNzaXZlIG5leHRzIG9mXFxuICB0aGUgc2VxLCBkb2VzIG5vdCByZXRhaW4gdGhlIGhlYWQgYW5kIHJldHVybnMgbmlsLlwiXG4gKFtjb2xsXSAod2hlbi1sZXQgW3MgKHNlcSBjb2xsKV0gKHJlY3VyIChuZXh0IHMpKSkpXG4gKFtuIGNvbGxdXG4gICh3aGVuIChhbmQgKHNlcSBjb2xsKSAocG9zPyBuKSkgKHJlY3VyIChkZWMgbikgKG5leHQgY29sbCkpKSkpXG4ifSB7OnN5bSBwci1zZXF1ZW50aWFsLXdyaXRlciwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt3cml0ZXIgcHJpbnQtb25lIGJlZ2luIHNlcCBlbmQgb3B0cyBjb2xsXSl9LCA6c291cmNlICIoZGVmblxuIHByLXNlcXVlbnRpYWwtd3JpdGVyXG4gW3dyaXRlciBwcmludC1vbmUgYmVnaW4gc2VwIGVuZCBvcHRzIGNvbGxdXG4gKGJpbmRpbmdcbiAgWypwcmludC1sZXZlbCogKHdoZW4tbm90IChuaWw/ICpwcmludC1sZXZlbCopIChkZWMgKnByaW50LWxldmVsKikpXVxuICAoaWZcbiAgIChhbmQgKG5vdCAobmlsPyAqcHJpbnQtbGV2ZWwqKSkgKG5lZz8gKnByaW50LWxldmVsKikpXG4gICAoLXdyaXRlIHdyaXRlciBcIiNcIilcbiAgIChkb1xuICAgICgtd3JpdGUgd3JpdGVyIGJlZ2luKVxuICAgIChpZlxuICAgICAoemVybz8gKDpwcmludC1sZW5ndGggb3B0cykpXG4gICAgICh3aGVuIChzZXEgY29sbCkgKC13cml0ZSB3cml0ZXIgKG9yICg6bW9yZS1tYXJrZXIgb3B0cykgXCIuLi5cIikpKVxuICAgICAoZG9cbiAgICAgICh3aGVuIChzZXEgY29sbCkgKHByaW50LW9uZSAoZmlyc3QgY29sbCkgd3JpdGVyIG9wdHMpKVxuICAgICAgKGxvb3BcbiAgICAgICBbY29sbCAobmV4dCBjb2xsKSBuIChkZWMgKDpwcmludC1sZW5ndGggb3B0cykpXVxuICAgICAgIChpZlxuICAgICAgICAoYW5kIGNvbGwgKG9yIChuaWw/IG4pIChub3QgKHplcm8/IG4pKSkpXG4gICAgICAgIChkb1xuICAgICAgICAgKC13cml0ZSB3cml0ZXIgc2VwKVxuICAgICAgICAgKHByaW50LW9uZSAoZmlyc3QgY29sbCkgd3JpdGVyIG9wdHMpXG4gICAgICAgICAocmVjdXIgKG5leHQgY29sbCkgKGRlYyBuKSkpXG4gICAgICAgICh3aGVuXG4gICAgICAgICAoYW5kIChzZXEgY29sbCkgKHplcm8/IG4pKVxuICAgICAgICAgKC13cml0ZSB3cml0ZXIgc2VwKVxuICAgICAgICAgKC13cml0ZSB3cml0ZXIgKG9yICg6bW9yZS1tYXJrZXIgb3B0cykgXCIuLi5cIikpKSkpKSlcbiAgICAoLXdyaXRlIHdyaXRlciBlbmQpKSkpKVxuIn0gezpzeW0gc2ltcGxlLXN5bWJvbD8sIDptZXRhIHs6ZG9jICJSZXR1cm4gdHJ1ZSBpZiB4IGlzIGEgc3ltYm9sIHdpdGhvdXQgYSBuYW1lc3BhY2UiLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmblxuIHNpbXBsZS1zeW1ib2w/XG4gXCJSZXR1cm4gdHJ1ZSBpZiB4IGlzIGEgc3ltYm9sIHdpdGhvdXQgYSBuYW1lc3BhY2VcIlxuIFt4XVxuIChhbmQgKHN5bWJvbD8geCkgKG5pbD8gKG5hbWVzcGFjZSB4KSkpKVxuIn0gezpzeW0gSUluZGV4ZWQsIDptZXRhIHs6ZG9jICJQcm90b2NvbCBmb3IgY29sbGVjdGlvbnMgdG8gcHJvdmlkZSBpbmRleGVkLWJhc2VkIGFjY2VzcyB0byB0aGVpciBpdGVtcy4ifSwgOm1ldGhvZHMgKC1udGgpfSB7OnN5bSBkaXNqLCA6bWV0YSB7OmRvYyAiZGlzaltvaW5dLiBSZXR1cm5zIGEgbmV3IHNldCBvZiB0aGUgc2FtZSAoaGFzaGVkL3NvcnRlZCkgdHlwZSwgdGhhdFxuICBkb2VzIG5vdCBjb250YWluIGtleShzKS4iLCA6YXJnbGlzdHMgW1tjb2xsXSBbY29sbCBrXSBbY29sbCBrICYga3NdXX0sIDpzb3VyY2UgIihkZWZuXG4gZGlzalxuIFwiZGlzaltvaW5dLiBSZXR1cm5zIGEgbmV3IHNldCBvZiB0aGUgc2FtZSAoaGFzaGVkL3NvcnRlZCkgdHlwZSwgdGhhdFxcbiAgZG9lcyBub3QgY29udGFpbiBrZXkocykuXCJcbiAoW2NvbGxdIGNvbGwpXG4gKFtjb2xsIGtdICh3aGVuLW5vdCAobmlsPyBjb2xsKSAoLWRpc2pvaW4gY29sbCBrKSkpXG4gKFtjb2xsIGsgJiBrc11cbiAgKHdoZW4tbm90XG4gICAobmlsPyBjb2xsKVxuICAgKGxldFxuICAgIFtyZXQgKGRpc2ogY29sbCBrKV1cbiAgICAoaWYga3MgKHJlY3VyIHJldCAoZmlyc3Qga3MpIChuZXh0IGtzKSkgcmV0KSkpKSlcbiJ9IHs6c3ltIElQcmludFdpdGhXcml0ZXIsIDptZXRhIHs6ZG9jICJUaGUgb2xkIElQcmludGFibGUgcHJvdG9jb2wncyBpbXBsZW1lbnRhdGlvbiBjb25zaXN0ZWQgb2YgYnVpbGRpbmcgYSBnaWFudFxuICAgbGlzdCBvZiBzdHJpbmdzIHRvIGNvbmNhdGVuYXRlLiAgVGhpcyBpbnZvbHZlZCBsb3RzIG9mIGNvbmNhdCBjYWxscyxcbiAgIGludGVybWVkaWF0ZSB2ZWN0b3JzLCBhbmQgbGF6eS1zZXFzLCBhbmQgd2FzIHZlcnkgc2xvdyBpbiBzb21lIG9sZGVyIEpTXG4gICBlbmdpbmVzLiAgSVByaW50V2l0aFdyaXRlciBpbXBsZW1lbnRzIHByaW50aW5nIHZpYSB0aGUgSVdyaXRlciBwcm90b2NvbCwgc28gaXRcbiAgIGJlIGltcGxlbWVudGVkIGVmZmljaWVudGx5IGluIHRlcm1zIG9mIGUuZy4gYSBTdHJpbmdCdWZmZXIgYXBwZW5kLiJ9LCA6bWV0aG9kcyAoLXByLXdyaXRlcil9IHs6c3ltIElWZWN0b3IsIDptZXRhIHs6ZG9jICJQcm90b2NvbCBmb3IgYWRkaW5nIHZlY3RvciBmdW5jdGlvbmFsaXR5IHRvIGNvbGxlY3Rpb25zLiJ9LCA6bWV0aG9kcyAoLWFzc29jLW4pfSB7OnN5bSBJSXRlcmFibGUsIDptZXRhIHs6ZG9jICJQcm90b2NvbCBmb3IgaXRlcmF0aW5nIG92ZXIgYSBjb2xsZWN0aW9uLiJ9LCA6bWV0aG9kcyAoLWl0ZXJhdG9yKX0gezpzeW0gZXZhbCwgOm1ldGEgezpkb2MgIkV2YWx1YXRlcyB0aGUgZm9ybSBkYXRhIHN0cnVjdHVyZSAobm90IHRleHQhKSBhbmQgcmV0dXJucyB0aGUgcmVzdWx0LlxuICBEZWxlZ2F0ZXMgdG8gY2xqcy5jb3JlLypldmFsKi4gSW50ZW5kZWQgZm9yIHVzZSBpbiBzZWxmLWhvc3RlZCBDbG9qdXJlU2NyaXB0LFxuICB3aGljaCBzZXRzIHVwIGFuIGltcGxlbWVudGF0aW9uIG9mIGNsanMuY29yZS8qZXZhbCogZm9yIHRoYXQgZW52aXJvbm1lbnQuIiwgOmFyZ2xpc3RzIChbZm9ybV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBldmFsXG4gXCJFdmFsdWF0ZXMgdGhlIGZvcm0gZGF0YSBzdHJ1Y3R1cmUgKG5vdCB0ZXh0ISkgYW5kIHJldHVybnMgdGhlIHJlc3VsdC5cXG4gIERlbGVnYXRlcyB0byBjbGpzLmNvcmUvKmV2YWwqLiBJbnRlbmRlZCBmb3IgdXNlIGluIHNlbGYtaG9zdGVkIENsb2p1cmVTY3JpcHQsXFxuICB3aGljaCBzZXRzIHVwIGFuIGltcGxlbWVudGF0aW9uIG9mIGNsanMuY29yZS8qZXZhbCogZm9yIHRoYXQgZW52aXJvbm1lbnQuXCJcbiBbZm9ybV1cbiAoKmV2YWwqIGZvcm0pKVxuIn0gezpzeW0gY29ucywgOm1ldGEgezpkb2MgIlJldHVybnMgYSBuZXcgc2VxIHdoZXJlIHggaXMgdGhlIGZpcnN0IGVsZW1lbnQgYW5kIGNvbGwgaXMgdGhlIHJlc3QuIiwgOmFyZ2xpc3RzIChbeCBjb2xsXSl9LCA6c291cmNlICIoZGVmblxuIGNvbnNcbiBcIlJldHVybnMgYSBuZXcgc2VxIHdoZXJlIHggaXMgdGhlIGZpcnN0IGVsZW1lbnQgYW5kIGNvbGwgaXMgdGhlIHJlc3QuXCJcbiBbeCBjb2xsXVxuIChjb25kXG4gIChuaWw/IGNvbGwpXG4gIChMaXN0LiBuaWwgeCBuaWwgMSBuaWwpXG4gIChpbXBsZW1lbnRzPyBJU2VxIGNvbGwpXG4gIChDb25zLiBuaWwgeCBjb2xsIG5pbClcbiAgOmRlZmF1bHRcbiAgKENvbnMuIG5pbCB4IChzZXEgY29sbCkgbmlsKSkpXG4ifSB7OnN5bSBmbG9hdHMsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm4gZmxvYXRzIFt4XSB4KVxuIn0gezpzeW0gcG9zPywgOm1ldGEgezpkb2MgIlJldHVybnMgdHJ1ZSBpZiBudW0gaXMgZ3JlYXRlciB0aGFuIHplcm8sIGVsc2UgZmFsc2UiLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmblxuIHBvcz9cbiBcIlJldHVybnMgdHJ1ZSBpZiBudW0gaXMgZ3JlYXRlciB0aGFuIHplcm8sIGVsc2UgZmFsc2VcIlxuIFt4XVxuIChjbGpzLmNvcmUvcG9zPyB4KSlcbiJ9IHs6c3ltIGZuaWwsIDptZXRhIHs6ZG9jICJUYWtlcyBhIGZ1bmN0aW9uIGYsIGFuZCByZXR1cm5zIGEgZnVuY3Rpb24gdGhhdCBjYWxscyBmLCByZXBsYWNpbmdcbiAgYSBuaWwgZmlyc3QgYXJndW1lbnQgdG8gZiB3aXRoIHRoZSBzdXBwbGllZCB2YWx1ZSB4LiBIaWdoZXIgYXJpdHlcbiAgdmVyc2lvbnMgY2FuIHJlcGxhY2UgYXJndW1lbnRzIGluIHRoZSBzZWNvbmQgYW5kIHRoaXJkXG4gIHBvc2l0aW9ucyAoeSwgeikuIE5vdGUgdGhhdCB0aGUgZnVuY3Rpb24gZiBjYW4gdGFrZSBhbnkgbnVtYmVyIG9mXG4gIGFyZ3VtZW50cywgbm90IGp1c3QgdGhlIG9uZShzKSBiZWluZyBuaWwtcGF0Y2hlZC4iLCA6YXJnbGlzdHMgW1tmIHhdIFtmIHggeV0gW2YgeCB5IHpdXX0sIDpzb3VyY2UgIihkZWZuXG4gZm5pbFxuIFwiVGFrZXMgYSBmdW5jdGlvbiBmLCBhbmQgcmV0dXJucyBhIGZ1bmN0aW9uIHRoYXQgY2FsbHMgZiwgcmVwbGFjaW5nXFxuICBhIG5pbCBmaXJzdCBhcmd1bWVudCB0byBmIHdpdGggdGhlIHN1cHBsaWVkIHZhbHVlIHguIEhpZ2hlciBhcml0eVxcbiAgdmVyc2lvbnMgY2FuIHJlcGxhY2UgYXJndW1lbnRzIGluIHRoZSBzZWNvbmQgYW5kIHRoaXJkXFxuICBwb3NpdGlvbnMgKHksIHopLiBOb3RlIHRoYXQgdGhlIGZ1bmN0aW9uIGYgY2FuIHRha2UgYW55IG51bWJlciBvZlxcbiAgYXJndW1lbnRzLCBub3QganVzdCB0aGUgb25lKHMpIGJlaW5nIG5pbC1wYXRjaGVkLlwiXG4gKFtmIHhdXG4gIChmblxuICAgKFthXSAoZiAoaWYgKG5pbD8gYSkgeCBhKSkpXG4gICAoW2EgYl0gKGYgKGlmIChuaWw/IGEpIHggYSkgYikpXG4gICAoW2EgYiBjXSAoZiAoaWYgKG5pbD8gYSkgeCBhKSBiIGMpKVxuICAgKFthIGIgYyAmIGRzXSAoYXBwbHkgZiAoaWYgKG5pbD8gYSkgeCBhKSBiIGMgZHMpKSkpXG4gKFtmIHggeV1cbiAgKGZuXG4gICAoW2EgYl0gKGYgKGlmIChuaWw/IGEpIHggYSkgKGlmIChuaWw/IGIpIHkgYikpKVxuICAgKFthIGIgY10gKGYgKGlmIChuaWw/IGEpIHggYSkgKGlmIChuaWw/IGIpIHkgYikgYykpXG4gICAoW2EgYiBjICYgZHNdIChhcHBseSBmIChpZiAobmlsPyBhKSB4IGEpIChpZiAobmlsPyBiKSB5IGIpIGMgZHMpKSkpXG4gKFtmIHggeSB6XVxuICAoZm5cbiAgIChbYSBiXSAoZiAoaWYgKG5pbD8gYSkgeCBhKSAoaWYgKG5pbD8gYikgeSBiKSkpXG4gICAoW2EgYiBjXSAoZiAoaWYgKG5pbD8gYSkgeCBhKSAoaWYgKG5pbD8gYikgeSBiKSAoaWYgKG5pbD8gYykgeiBjKSkpXG4gICAoW2EgYiBjICYgZHNdXG4gICAgKGFwcGx5XG4gICAgIGZcbiAgICAgKGlmIChuaWw/IGEpIHggYSlcbiAgICAgKGlmIChuaWw/IGIpIHkgYilcbiAgICAgKGlmIChuaWw/IGMpIHogYylcbiAgICAgZHMpKSkpKVxuIn0gezpzeW0gbWVyZ2Utd2l0aCwgOm1ldGEgezpkb2MgIlJldHVybnMgYSBtYXAgdGhhdCBjb25zaXN0cyBvZiB0aGUgcmVzdCBvZiB0aGUgbWFwcyBjb25qLWVkIG9udG9cbiAgdGhlIGZpcnN0LiAgSWYgYSBrZXkgb2NjdXJzIGluIG1vcmUgdGhhbiBvbmUgbWFwLCB0aGUgbWFwcGluZyhzKVxuICBmcm9tIHRoZSBsYXR0ZXIgKGxlZnQtdG8tcmlnaHQpIHdpbGwgYmUgY29tYmluZWQgd2l0aCB0aGUgbWFwcGluZyBpblxuICB0aGUgcmVzdWx0IGJ5IGNhbGxpbmcgKGYgdmFsLWluLXJlc3VsdCB2YWwtaW4tbGF0dGVyKS4iLCA6YXJnbGlzdHMgKFtmICYgbWFwc10pfSwgOnNvdXJjZSAiKGRlZm5cbiBtZXJnZS13aXRoXG4gXCJSZXR1cm5zIGEgbWFwIHRoYXQgY29uc2lzdHMgb2YgdGhlIHJlc3Qgb2YgdGhlIG1hcHMgY29uai1lZCBvbnRvXFxuICB0aGUgZmlyc3QuICBJZiBhIGtleSBvY2N1cnMgaW4gbW9yZSB0aGFuIG9uZSBtYXAsIHRoZSBtYXBwaW5nKHMpXFxuICBmcm9tIHRoZSBsYXR0ZXIgKGxlZnQtdG8tcmlnaHQpIHdpbGwgYmUgY29tYmluZWQgd2l0aCB0aGUgbWFwcGluZyBpblxcbiAgdGhlIHJlc3VsdCBieSBjYWxsaW5nIChmIHZhbC1pbi1yZXN1bHQgdmFsLWluLWxhdHRlcikuXCJcbiBbZiAmIG1hcHNdXG4gKHdoZW5cbiAgKHNvbWUgaWRlbnRpdHkgbWFwcylcbiAgKGxldFxuICAgW21lcmdlLWVudHJ5XG4gICAgKGZuXG4gICAgIFttIGVdXG4gICAgIChsZXRcbiAgICAgIFtrIChrZXkgZSkgdiAodmFsIGUpXVxuICAgICAgKGlmIChjb250YWlucz8gbSBrKSAoYXNzb2MgbSBrIChmIChnZXQgbSBrKSB2KSkgKGFzc29jIG0gayB2KSkpKVxuICAgIG1lcmdlMlxuICAgIChmbiBbbTEgbTJdIChyZWR1Y2UgbWVyZ2UtZW50cnkgKG9yIG0xIHt9KSAoc2VxIG0yKSkpXVxuICAgKHJlZHVjZSBtZXJnZTIgbWFwcykpKSlcbiJ9IHs6c3ltIG50aHJlc3QsIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRoZSBudGggcmVzdCBvZiBjb2xsLCBjb2xsIHdoZW4gbiBpcyAwLiIsIDphcmdsaXN0cyAoW2NvbGwgbl0pfSwgOnNvdXJjZSAiKGRlZm5cbiBudGhyZXN0XG4gXCJSZXR1cm5zIHRoZSBudGggcmVzdCBvZiBjb2xsLCBjb2xsIHdoZW4gbiBpcyAwLlwiXG4gW2NvbGwgbl1cbiAobG9vcFxuICBbbiBuIHhzIGNvbGxdXG4gIChpZi1sZXQgW3hzIChhbmQgKHBvcz8gbikgKHNlcSB4cykpXSAocmVjdXIgKGRlYyBuKSAocmVzdCB4cykpIHhzKSkpXG4ifSB7OnN5bSAqd2Fybi1vbi1pbmZlciosIDptZXRhIHt9LCA6c291cmNlICIoZGVmICp3YXJuLW9uLWluZmVyKiBmYWxzZSlcbiJ9IHs6c3ltIC1maW5kLCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0aGUgbWFwIGVudHJ5IGZvciBrZXksIG9yIG5pbCBpZiBrZXkgbm90IHByZXNlbnQuIiwgOmFyZ2xpc3RzIChbY29sbCBrXSl9LCA6cHJvdG9jb2wgSUZpbmR9IHs6c3ltIHNlcXVlbnRpYWw/LCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0cnVlIGlmIGNvbGwgc2F0aXNmaWVzIElTZXF1ZW50aWFsIiwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBzZXF1ZW50aWFsP1xuIFwiUmV0dXJucyB0cnVlIGlmIGNvbGwgc2F0aXNmaWVzIElTZXF1ZW50aWFsXCJcbiBbeF1cbiAoc2F0aXNmaWVzPyBJU2VxdWVudGlhbCB4KSlcbiJ9IHs6c3ltIExvbmdJbXBsLCA6bWV0YSB7OmRvYyAiSU5URVJOQUw6IGRvIG5vdCB1c2UifSwgOnNvdXJjZSAiKGRlZiBMb25nSW1wbCBnb29nLm1hdGguTG9uZylcbiJ9IHs6c3ltIG0zLW1peC1IMSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtoMSBrMV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBtMy1taXgtSDFcbiBbaDEgazFdXG4gKGludFxuICAoLT5cbiAgIChpbnQgaDEpXG4gICAoYml0LXhvciAoaW50IGsxKSlcbiAgIChpbnQtcm90YXRlLWxlZnQgMTMpXG4gICAoaW11bCA1KVxuICAgKCsgKGludCAzODY0MjkyMTk2KSkpKSlcbiJ9IHs6c3ltIHByaW0tc2VxLCA6bWV0YSB7OmRvYyAiQ3JlYXRlIHNlcSBmcm9tIGEgcHJpbWl0aXZlIEphdmFTY3JpcHQgQXJyYXktbGlrZS4iLCA6YXJnbGlzdHMgW1twcmltXSBbcHJpbSBpXV19LCA6c291cmNlICIoZGVmblxuIHByaW0tc2VxXG4gXCJDcmVhdGUgc2VxIGZyb20gYSBwcmltaXRpdmUgSmF2YVNjcmlwdCBBcnJheS1saWtlLlwiXG4gKFtwcmltXSAocHJpbS1zZXEgcHJpbSAwKSlcbiAoW3ByaW0gaV0gKHdoZW4gKDwgaSAoYWxlbmd0aCBwcmltKSkgKEluZGV4ZWRTZXEuIHByaW0gaSBuaWwpKSkpXG4ifSB7OnN5bSAqcHJpbnQtbGV2ZWwqLCA6bWV0YSB7OmRvYyAiKnByaW50LWxldmVsKiBjb250cm9scyBob3cgbWFueSBsZXZlbHMgZGVlcCB0aGUgcHJpbnRlciB3aWxsXG4gIHByaW50IG5lc3RlZCBvYmplY3RzLiBJZiBpdCBpcyBib3VuZCB0byBsb2dpY2FsIGZhbHNlLCB0aGVyZSBpcyBub1xuICBsaW1pdC4gT3RoZXJ3aXNlLCBpdCBtdXN0IGJlIGJvdW5kIHRvIGFuIGludGVnZXIgaW5kaWNhdGluZyB0aGUgbWF4aW11bVxuICBsZXZlbCB0byBwcmludC4gRWFjaCBhcmd1bWVudCB0byBwcmludCBpcyBhdCBsZXZlbCAwOyBpZiBhbiBhcmd1bWVudCBpcyBhXG4gIGNvbGxlY3Rpb24sIGl0cyBpdGVtcyBhcmUgYXQgbGV2ZWwgMTsgYW5kIHNvIG9uLiBJZiBhbiBvYmplY3QgaXMgYVxuICBjb2xsZWN0aW9uIGFuZCBpcyBhdCBhIGxldmVsIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB0aGUgdmFsdWUgYm91bmQgdG9cbiAgKnByaW50LWxldmVsKiwgdGhlIHByaW50ZXIgcHJpbnRzICcjJyB0byByZXByZXNlbnQgaXQuIFRoZSByb290IGJpbmRpbmdcbiAgaXMgbmlsIGluZGljYXRpbmcgbm8gbGltaXQuIn0sIDpzb3VyY2UgIihkZWYgKnByaW50LWxldmVsKiBuaWwpXG4ifSB7OnN5bSBzaHVmZmxlLCA6bWV0YSB7OmRvYyAiUmV0dXJuIGEgcmFuZG9tIHBlcm11dGF0aW9uIG9mIGNvbGwiLCA6YXJnbGlzdHMgKFtjb2xsXSl9LCA6c291cmNlICIoZGVmblxuIHNodWZmbGVcbiBcIlJldHVybiBhIHJhbmRvbSBwZXJtdXRhdGlvbiBvZiBjb2xsXCJcbiBbY29sbF1cbiAobGV0IFthICh0by1hcnJheSBjb2xsKV0gKGdhcnJheS9zaHVmZmxlIGEpICh2ZWMgYSkpKVxuIn0gezpzeW0gaGFzaC1rZXl3b3JkLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2tdKX0sIDpzb3VyY2UgIihkZWZuIGhhc2gta2V5d29yZCBba10gKGludCAoKyAoaGFzaC1zeW1ib2wgaykgMjY1NDQzNTc2OSkpKVxuIn0gezpzeW0gZmluZCwgOm1ldGEgezpkb2MgIlJldHVybnMgdGhlIG1hcCBlbnRyeSBmb3Iga2V5LCBvciBuaWwgaWYga2V5IG5vdCBwcmVzZW50LiIsIDphcmdsaXN0cyAoW2NvbGwga10pfSwgOnNvdXJjZSAiKGRlZm5cbiBmaW5kXG4gXCJSZXR1cm5zIHRoZSBtYXAgZW50cnkgZm9yIGtleSwgb3IgbmlsIGlmIGtleSBub3QgcHJlc2VudC5cIlxuIFtjb2xsIGtdXG4gKGlmXG4gIChpZmluZD8gY29sbClcbiAgKC1maW5kIGNvbGwgaylcbiAgKHdoZW5cbiAgIChhbmQgKG5vdCAobmlsPyBjb2xsKSkgKGFzc29jaWF0aXZlPyBjb2xsKSAoY29udGFpbnM/IGNvbGwgaykpXG4gICAoTWFwRW50cnkuIGsgKGdldCBjb2xsIGspIG5pbCkpKSlcbiJ9IHs6c3ltIGFsZW5ndGgsIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRoZSBsZW5ndGggb2YgdGhlIGFycmF5LiBXb3JrcyBvbiBhcnJheXMgb2YgYWxsIHR5cGVzLiIsIDphcmdsaXN0cyAoW2FycmF5XSl9LCA6c291cmNlICIoZGVmblxuIGFsZW5ndGhcbiBcIlJldHVybnMgdGhlIGxlbmd0aCBvZiB0aGUgYXJyYXkuIFdvcmtzIG9uIGFycmF5cyBvZiBhbGwgdHlwZXMuXCJcbiBbYXJyYXldXG4gKGNsanMuY29yZS9hbGVuZ3RoIGFycmF5KSlcbiJ9IHs6c3ltIGJpdC14b3IsIDptZXRhIHs6ZG9jICJCaXR3aXNlIGV4Y2x1c2l2ZSBvciIsIDphcmdsaXN0cyBbW3ggeV0gW3ggeSAmIG1vcmVdXX0sIDpzb3VyY2UgIihkZWZuXG4gYml0LXhvclxuIFwiQml0d2lzZSBleGNsdXNpdmUgb3JcIlxuIChbeCB5XSAoY2xqcy5jb3JlL2JpdC14b3IgeCB5KSlcbiAoW3ggeSAmIG1vcmVdIChyZWR1Y2UgYml0LXhvciAoY2xqcy5jb3JlL2JpdC14b3IgeCB5KSBtb3JlKSkpXG4ifSB7OnN5bSB1bnNpZ25lZC1iaXQtc2hpZnQtcmlnaHQsIDptZXRhIHs6ZG9jICJCaXR3aXNlIHNoaWZ0IHJpZ2h0IHdpdGggemVybyBmaWxsIiwgOmFyZ2xpc3RzIChbeCBuXSl9LCA6c291cmNlICIoZGVmblxuIHVuc2lnbmVkLWJpdC1zaGlmdC1yaWdodFxuIFwiQml0d2lzZSBzaGlmdCByaWdodCB3aXRoIHplcm8gZmlsbFwiXG4gW3ggbl1cbiAoY2xqcy5jb3JlL3Vuc2lnbmVkLWJpdC1zaGlmdC1yaWdodCB4IG4pKVxuIn0gezpzeW0gbmVnPywgOm1ldGEgezpkb2MgIlJldHVybnMgdHJ1ZSBpZiBudW0gaXMgbGVzcyB0aGFuIHplcm8sIGVsc2UgZmFsc2UiLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmblxuIG5lZz9cbiBcIlJldHVybnMgdHJ1ZSBpZiBudW0gaXMgbGVzcyB0aGFuIHplcm8sIGVsc2UgZmFsc2VcIlxuIFt4XVxuIChjbGpzLmNvcmUvbmVnPyB4KSlcbiJ9IHs6c3ltIC1yZW1vdmUtbWV0aG9kLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW21mIGRpc3BhdGNoLXZhbF0pfSwgOnByb3RvY29sIElNdWx0aUZufSB7OnN5bSBqcy1pbnZva2UsIDptZXRhIHs6ZG9jICJJbnZva2UgSmF2YVNjcmlwdCBvYmplY3QgbWV0aG9kIHZpYSBzdHJpbmcuIE5lZWRlZCB3aGVuIHRoZVxuICBzdHJpbmcgaXMgbm90IGEgdmFsaWQgdW5xdW90ZWQgcHJvcGVydHkgbmFtZS4iLCA6YXJnbGlzdHMgKFtvYmogcyAmIGFyZ3NdKX0sIDpzb3VyY2UgIihkZWZuXG4ganMtaW52b2tlXG4gXCJJbnZva2UgSmF2YVNjcmlwdCBvYmplY3QgbWV0aG9kIHZpYSBzdHJpbmcuIE5lZWRlZCB3aGVuIHRoZVxcbiAgc3RyaW5nIGlzIG5vdCBhIHZhbGlkIHVucXVvdGVkIHByb3BlcnR5IG5hbWUuXCJcbiBbb2JqIHMgJiBhcmdzXVxuICguYXBwbHkgKHVuY2hlY2tlZC1nZXQgb2JqIHMpIG9iaiAoaW50by1hcnJheSBhcmdzKSkpXG4ifSB7OnN5bSBtMy1taXgtSzEsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbazFdKX0sIDpzb3VyY2UgIihkZWZuXG4gbTMtbWl4LUsxXG4gW2sxXVxuICgtPiAoaW50IGsxKSAoaW11bCBtMy1DMSkgKGludC1yb3RhdGUtbGVmdCAxNSkgKGltdWwgbTMtQzIpKSlcbiJ9IHs6c3ltIHVuY2hlY2tlZC1mbG9hdCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmbiB1bmNoZWNrZWQtZmxvYXQgW3hdIHgpXG4ifSB7OnN5bSB1bmRlZmluZWQ/LCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0cnVlIGlmIHggaWRlbnRpY2FsIHRvIHRoZSBKYXZhU2NyaXB0IHVuZGVmaW5lZCB2YWx1ZS4iLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmblxuIHVuZGVmaW5lZD9cbiBcIlJldHVybnMgdHJ1ZSBpZiB4IGlkZW50aWNhbCB0byB0aGUgSmF2YVNjcmlwdCB1bmRlZmluZWQgdmFsdWUuXCJcbiBbeF1cbiAoY2xqcy5jb3JlL3VuZGVmaW5lZD8geCkpXG4ifSB7OnN5bSBJTWV0YSwgOm1ldGEgezpkb2MgIlByb3RvY29sIGZvciBhY2Nlc3NpbmcgdGhlIG1ldGFkYXRhIG9mIGFuIG9iamVjdC4ifSwgOm1ldGhvZHMgKC1tZXRhKX0gezpzeW0gcmVkdWNlZD8sIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRydWUgaWYgeCBpcyB0aGUgcmVzdWx0IG9mIGEgY2FsbCB0byByZWR1Y2VkIiwgOmFyZ2xpc3RzIChbcl0pfSwgOnNvdXJjZSAiKGRlZm5cbiByZWR1Y2VkP1xuIFwiUmV0dXJucyB0cnVlIGlmIHggaXMgdGhlIHJlc3VsdCBvZiBhIGNhbGwgdG8gcmVkdWNlZFwiXG4gW3JdXG4gKGluc3RhbmNlPyBSZWR1Y2VkIHIpKVxuIn0gezpzeW0gZGlzaiEsIDptZXRhIHs6ZG9jICJkaXNqW29pbl0uIFJldHVybnMgYSB0cmFuc2llbnQgc2V0IG9mIHRoZSBzYW1lIChoYXNoZWQvc29ydGVkKSB0eXBlLCB0aGF0XG4gIGRvZXMgbm90IGNvbnRhaW4ga2V5KHMpLiIsIDphcmdsaXN0cyBbW3Rjb2xsIHZhbF0gW3Rjb2xsIHZhbCAmIHZhbHNdXX0sIDpzb3VyY2UgIihkZWZuXG4gZGlzaiFcbiBcImRpc2pbb2luXS4gUmV0dXJucyBhIHRyYW5zaWVudCBzZXQgb2YgdGhlIHNhbWUgKGhhc2hlZC9zb3J0ZWQpIHR5cGUsIHRoYXRcXG4gIGRvZXMgbm90IGNvbnRhaW4ga2V5KHMpLlwiXG4gKFt0Y29sbCB2YWxdICgtZGlzam9pbiEgdGNvbGwgdmFsKSlcbiAoW3Rjb2xsIHZhbCAmIHZhbHNdXG4gIChsZXRcbiAgIFtudGNvbGwgKC1kaXNqb2luISB0Y29sbCB2YWwpXVxuICAgKGlmIHZhbHMgKHJlY3VyIG50Y29sbCAoZmlyc3QgdmFscykgKG5leHQgdmFscykpIG50Y29sbCkpKSlcbiJ9IHs6c3ltIC1sb29rdXAsIDptZXRhIHs6ZG9jICJVc2UgayB0byBsb29rIHVwIGEgdmFsdWUgaW4gby4gSWYgbm90LWZvdW5kIGlzIHN1cHBsaWVkIGFuZCBrIGlzIG5vdFxuICAgICBhIHZhbGlkIHZhbHVlIHRoYXQgY2FuIGJlIHVzZWQgZm9yIGxvb2sgdXAsIG5vdC1mb3VuZCBpcyByZXR1cm5lZC4iLCA6YXJnbGlzdHMgKFtvIGtdIFtvIGsgbm90LWZvdW5kXSl9LCA6cHJvdG9jb2wgSUxvb2t1cH0gezpzeW0gZmxvYXQ/LCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0cnVlIGZvciBKYXZhU2NyaXB0IG51bWJlcnMsIGZhbHNlIG90aGVyd2lzZS4iLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmblxuIGZsb2F0P1xuIFwiUmV0dXJucyB0cnVlIGZvciBKYXZhU2NyaXB0IG51bWJlcnMsIGZhbHNlIG90aGVyd2lzZS5cIlxuIFt4XVxuIChudW1iZXI/IHgpKVxuIn0gezpzeW0gSUNsb25lYWJsZSwgOm1ldGEgezpkb2MgIlByb3RvY29sIGZvciBjbG9uaW5nIGEgdmFsdWUuIn0sIDptZXRob2RzICgtY2xvbmUpfSB7OnN5bSBJRW5jb2RlQ2xvanVyZSwgOm1ldGEgezpkb2MgbmlsfSwgOm1ldGhvZHMgKC1qcy0+Y2xqKX0gezpzeW0gYm9vbGVhbnMsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm4gYm9vbGVhbnMgW3hdIHgpXG4ifSB7OnN5bSBpbnQtYXJyYXksIDptZXRhIHs6ZG9jICJDcmVhdGVzIGFuIGFycmF5IG9mIGludHMuIERvZXMgbm90IGNvZXJjZSBhcnJheSwgcHJvdmlkZWQgZm9yIGNvbXBhdGliaWxpdHlcbiAgd2l0aCBDbG9qdXJlLiIsIDphcmdsaXN0cyBbW3NpemUtb3Itc2VxXSBbc2l6ZSBpbml0LXZhbC1vci1zZXFdXX0sIDpzb3VyY2UgIihkZWZuXG4gaW50LWFycmF5XG4gXCJDcmVhdGVzIGFuIGFycmF5IG9mIGludHMuIERvZXMgbm90IGNvZXJjZSBhcnJheSwgcHJvdmlkZWQgZm9yIGNvbXBhdGliaWxpdHlcXG4gIHdpdGggQ2xvanVyZS5cIlxuIChbc2l6ZS1vci1zZXFdXG4gIChpZlxuICAgKG51bWJlcj8gc2l6ZS1vci1zZXEpXG4gICAoaW50LWFycmF5IHNpemUtb3Itc2VxIG5pbClcbiAgIChpbnRvLWFycmF5IHNpemUtb3Itc2VxKSkpXG4gKFtzaXplIGluaXQtdmFsLW9yLXNlcV1cbiAgKGxldFxuICAgW2EgKG1ha2UtYXJyYXkgc2l6ZSldXG4gICAoaWZcbiAgICAoc2VxPyBpbml0LXZhbC1vci1zZXEpXG4gICAgKGxldFxuICAgICBbcyAoc2VxIGluaXQtdmFsLW9yLXNlcSldXG4gICAgIChsb29wXG4gICAgICBbaSAwIHMgc11cbiAgICAgIChpZlxuICAgICAgIChhbmQgcyAoPCBpIHNpemUpKVxuICAgICAgIChkbyAoYXNldCBhIGkgKGZpcnN0IHMpKSAocmVjdXIgKGluYyBpKSAobmV4dCBzKSkpXG4gICAgICAgYSkpKVxuICAgIChkbyAoZG90aW1lcyBbaSBzaXplXSAoYXNldCBhIGkgaW5pdC12YWwtb3Itc2VxKSkgYSkpKSkpXG4ifSB7OnN5bSBzZXQ/LCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0cnVlIGlmIHggc2F0aXNmaWVzIElTZXQiLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmblxuIHNldD9cbiBcIlJldHVybnMgdHJ1ZSBpZiB4IHNhdGlzZmllcyBJU2V0XCJcbiBbeF1cbiAoaWYgKG5pbD8geCkgZmFsc2UgKHNhdGlzZmllcz8gSVNldCB4KSkpXG4ifSB7OnN5bSBpdGVyYWJsZT8sIDptZXRhIHs6ZG9jICJSZXR1cm4gdHJ1ZSBpZiB4IGltcGxlbWVudHMgSUl0ZXJhYmxlIHByb3RvY29sLiIsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuXG4gaXRlcmFibGU/XG4gXCJSZXR1cm4gdHJ1ZSBpZiB4IGltcGxlbWVudHMgSUl0ZXJhYmxlIHByb3RvY29sLlwiXG4gW3hdXG4gKHNhdGlzZmllcz8gSUl0ZXJhYmxlIHgpKVxuIn0gezpzeW0gY2F0LCA6bWV0YSB7OmRvYyAiQSB0cmFuc2R1Y2VyIHdoaWNoIGNvbmNhdGVuYXRlcyB0aGUgY29udGVudHMgb2YgZWFjaCBpbnB1dCwgd2hpY2ggbXVzdCBiZSBhXG4gIGNvbGxlY3Rpb24sIGludG8gdGhlIHJlZHVjdGlvbi4iLCA6YXJnbGlzdHMgKFtyZl0pfSwgOnNvdXJjZSAiKGRlZm5cbiBjYXRcbiBcIkEgdHJhbnNkdWNlciB3aGljaCBjb25jYXRlbmF0ZXMgdGhlIGNvbnRlbnRzIG9mIGVhY2ggaW5wdXQsIHdoaWNoIG11c3QgYmUgYVxcbiAgY29sbGVjdGlvbiwgaW50byB0aGUgcmVkdWN0aW9uLlwiXG4gezphZGRlZCBcIjEuN1wifVxuIFtyZl1cbiAobGV0XG4gIFtyZjEgKHByZXNlcnZpbmctcmVkdWNlZCByZildXG4gIChmblxuICAgKFtdIChyZikpXG4gICAoW3Jlc3VsdF0gKHJmIHJlc3VsdCkpXG4gICAoW3Jlc3VsdCBpbnB1dF0gKHJlZHVjZSByZjEgcmVzdWx0IGlucHV0KSkpKSlcbiJ9IHs6c3ltIC1wci13cml0ZXIsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbbyB3cml0ZXIgb3B0c10pfSwgOnByb3RvY29sIElQcmludFdpdGhXcml0ZXJ9IHs6c3ltIGZsdXNoLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW10pfSwgOnNvdXJjZSAiKGRlZm4gZmx1c2ggW10gbmlsKVxuIn0gezpzeW0gc2V0LWZyb20taW5kZXhlZC1zZXEsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbaXNlcV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBzZXQtZnJvbS1pbmRleGVkLXNlcVxuIFtpc2VxXVxuIChsZXRcbiAgW2FyclxuICAgKC4tYXJyIGlzZXEpXG4gICByZXRcbiAgIChhcmVkdWNlIGFyciBpIHJlcyAoLWFzLXRyYW5zaWVudCAje30pICgtY29uaiEgcmVzIChhZ2V0IGFyciBpKSkpXVxuICAoLXBlcnNpc3RlbnQhIHJldCkpKVxuIn0gezpzeW0gdGFrZS13aGlsZSwgOm1ldGEgezpkb2MgIlJldHVybnMgYSBsYXp5IHNlcXVlbmNlIG9mIHN1Y2Nlc3NpdmUgaXRlbXMgZnJvbSBjb2xsIHdoaWxlXG4gIChwcmVkIGl0ZW0pIHJldHVybnMgbG9naWNhbCB0cnVlLiBwcmVkIG11c3QgYmUgZnJlZSBvZiBzaWRlLWVmZmVjdHMuXG4gIFJldHVybnMgYSB0cmFuc2R1Y2VyIHdoZW4gbm8gY29sbGVjdGlvbiBpcyBwcm92aWRlZC4iLCA6YXJnbGlzdHMgW1twcmVkXSBbcHJlZCBjb2xsXV19LCA6c291cmNlICIoZGVmblxuIHRha2Utd2hpbGVcbiBcIlJldHVybnMgYSBsYXp5IHNlcXVlbmNlIG9mIHN1Y2Nlc3NpdmUgaXRlbXMgZnJvbSBjb2xsIHdoaWxlXFxuICAocHJlZCBpdGVtKSByZXR1cm5zIGxvZ2ljYWwgdHJ1ZS4gcHJlZCBtdXN0IGJlIGZyZWUgb2Ygc2lkZS1lZmZlY3RzLlxcbiAgUmV0dXJucyBhIHRyYW5zZHVjZXIgd2hlbiBubyBjb2xsZWN0aW9uIGlzIHByb3ZpZGVkLlwiXG4gKFtwcmVkXVxuICAoZm5cbiAgIFtyZl1cbiAgIChmblxuICAgIChbXSAocmYpKVxuICAgIChbcmVzdWx0XSAocmYgcmVzdWx0KSlcbiAgICAoW3Jlc3VsdCBpbnB1dF1cbiAgICAgKGlmIChwcmVkIGlucHV0KSAocmYgcmVzdWx0IGlucHV0KSAocmVkdWNlZCByZXN1bHQpKSkpKSlcbiAoW3ByZWQgY29sbF1cbiAgKGxhenktc2VxXG4gICAod2hlbi1sZXRcbiAgICBbcyAoc2VxIGNvbGwpXVxuICAgICh3aGVuXG4gICAgIChwcmVkIChmaXJzdCBzKSlcbiAgICAgKGNvbnMgKGZpcnN0IHMpICh0YWtlLXdoaWxlIHByZWQgKHJlc3QgcykpKSkpKSkpXG4ifSB7OnN5bSB2YXJ5LW1ldGEsIDptZXRhIHs6ZG9jICJSZXR1cm5zIGFuIG9iamVjdCBvZiB0aGUgc2FtZSB0eXBlIGFuZCB2YWx1ZSBhcyBvYmosIHdpdGhcbiAgKGFwcGx5IGYgKG1ldGEgb2JqKSBhcmdzKSBhcyBpdHMgbWV0YWRhdGEuIiwgOmFyZ2xpc3RzIFtbb2JqIGZdIFtvYmogZiBhXSBbb2JqIGYgYSBiXSBbb2JqIGYgYSBiIGNdIFtvYmogZiBhIGIgYyBkXSBbb2JqIGYgYSBiIGMgZCAmIGFyZ3NdXX0sIDpzb3VyY2UgIihkZWZuXG4gdmFyeS1tZXRhXG4gXCJSZXR1cm5zIGFuIG9iamVjdCBvZiB0aGUgc2FtZSB0eXBlIGFuZCB2YWx1ZSBhcyBvYmosIHdpdGhcXG4gIChhcHBseSBmIChtZXRhIG9iaikgYXJncykgYXMgaXRzIG1ldGFkYXRhLlwiXG4gKFtvYmogZl0gKHdpdGgtbWV0YSBvYmogKGYgKG1ldGEgb2JqKSkpKVxuIChbb2JqIGYgYV0gKHdpdGgtbWV0YSBvYmogKGYgKG1ldGEgb2JqKSBhKSkpXG4gKFtvYmogZiBhIGJdICh3aXRoLW1ldGEgb2JqIChmIChtZXRhIG9iaikgYSBiKSkpXG4gKFtvYmogZiBhIGIgY10gKHdpdGgtbWV0YSBvYmogKGYgKG1ldGEgb2JqKSBhIGIgYykpKVxuIChbb2JqIGYgYSBiIGMgZF0gKHdpdGgtbWV0YSBvYmogKGYgKG1ldGEgb2JqKSBhIGIgYyBkKSkpXG4gKFtvYmogZiBhIGIgYyBkICYgYXJnc11cbiAgKHdpdGgtbWV0YSBvYmogKGFwcGx5IGYgKG1ldGEgb2JqKSBhIGIgYyBkIGFyZ3MpKSkpXG4ifSB7OnN5bSBJTmV4dCwgOm1ldGEgezpkb2MgIlByb3RvY29sIGZvciBhY2Nlc3NpbmcgdGhlIG5leHQgaXRlbXMgb2YgYSBjb2xsZWN0aW9uLiJ9LCA6bWV0aG9kcyAoLW5leHQpfSB7OnN5bSBpc19wcm90b18sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm4gaXNfcHJvdG9fIFt4XSAoaWRlbnRpY2FsPyAoLi1wcm90b3R5cGUgKC4tY29uc3RydWN0b3IgeCkpIHgpKVxuIn0gezpzeW0gU1RBUlQsIDptZXRhIHt9LCA6c291cmNlICIoZGVmIFNUQVJUICNqcyB7fSlcbiJ9IHs6c3ltIElDb3VudGVkLCA6bWV0YSB7OmRvYyAiUHJvdG9jb2wgZm9yIGFkZGluZyB0aGUgYWJpbGl0eSB0byBjb3VudCBhIGNvbGxlY3Rpb24gaW4gY29uc3RhbnQgdGltZS4ifSwgOm1ldGhvZHMgKC1jb3VudCl9IHs6c3ltIElNYXBFbnRyeSwgOm1ldGEgezpkb2MgIlByb3RvY29sIGZvciBleGFtaW5pbmcgYSBtYXAgZW50cnkuIn0sIDptZXRob2RzICgta2V5IC12YWwpfSB7OnN5bSA8PSwgOm1ldGEgezpkb2MgIlJldHVybnMgbm9uLW5pbCBpZiBudW1zIGFyZSBpbiBtb25vdG9uaWNhbGx5IG5vbi1kZWNyZWFzaW5nIG9yZGVyLFxuICBvdGhlcndpc2UgZmFsc2UuIiwgOmFyZ2xpc3RzIFtbeF0gW3ggeV0gW3ggeSAmIG1vcmVdXX0sIDpzb3VyY2UgIihkZWZuXG4gPD1cbiBcIlJldHVybnMgbm9uLW5pbCBpZiBudW1zIGFyZSBpbiBtb25vdG9uaWNhbGx5IG5vbi1kZWNyZWFzaW5nIG9yZGVyLFxcbiAgb3RoZXJ3aXNlIGZhbHNlLlwiXG4gKFt4XSB0cnVlKVxuIChbeCB5XSAoY2xqcy5jb3JlLzw9IHggeSkpXG4gKFt4IHkgJiBtb3JlXVxuICAoaWZcbiAgIChjbGpzLmNvcmUvPD0geCB5KVxuICAgKGlmXG4gICAgKG5leHQgbW9yZSlcbiAgICAocmVjdXIgeSAoZmlyc3QgbW9yZSkgKG5leHQgbW9yZSkpXG4gICAgKGNsanMuY29yZS88PSB5IChmaXJzdCBtb3JlKSkpXG4gICBmYWxzZSkpKVxuIn0gezpzeW0gTU9EVUxFX0lORk9TLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiBNT0RVTEVfSU5GT1MgbmlsKVxuIn0gezpzeW0gY29uaiEsIDptZXRhIHs6ZG9jICJBZGRzIHZhbCB0byB0aGUgdHJhbnNpZW50IGNvbGxlY3Rpb24sIGFuZCByZXR1cm4gdGNvbGwuIFRoZSAnYWRkaXRpb24nXG4gIG1heSBoYXBwZW4gYXQgZGlmZmVyZW50ICdwbGFjZXMnIGRlcGVuZGluZyBvbiB0aGUgY29uY3JldGUgdHlwZS4iLCA6YXJnbGlzdHMgW1tdIFt0Y29sbF0gW3Rjb2xsIHZhbF0gW3Rjb2xsIHZhbCAmIHZhbHNdXX0sIDpzb3VyY2UgIihkZWZuXG4gY29uaiFcbiBcIkFkZHMgdmFsIHRvIHRoZSB0cmFuc2llbnQgY29sbGVjdGlvbiwgYW5kIHJldHVybiB0Y29sbC4gVGhlICdhZGRpdGlvbidcXG4gIG1heSBoYXBwZW4gYXQgZGlmZmVyZW50ICdwbGFjZXMnIGRlcGVuZGluZyBvbiB0aGUgY29uY3JldGUgdHlwZS5cIlxuIChbXSAodHJhbnNpZW50IFtdKSlcbiAoW3Rjb2xsXSB0Y29sbClcbiAoW3Rjb2xsIHZhbF0gKC1jb25qISB0Y29sbCB2YWwpKVxuIChbdGNvbGwgdmFsICYgdmFsc11cbiAgKGxldFxuICAgW250Y29sbCAoLWNvbmohIHRjb2xsIHZhbCldXG4gICAoaWYgdmFscyAocmVjdXIgbnRjb2xsIChmaXJzdCB2YWxzKSAobmV4dCB2YWxzKSkgbnRjb2xsKSkpKVxuIn0gezpzeW0gLXBvcCwgOm1ldGEgezpkb2MgIlJldHVybnMgYSBuZXcgc3RhY2sgd2l0aG91dCB0aGUgaXRlbSBvbiB0b3Agb2YgdGhlIHN0YWNrLiBJcyB1c2VkXG4gICAgIGJ5IGNsanMuY29yZS9wb3AuIiwgOmFyZ2xpc3RzIChbY29sbF0pfSwgOnByb3RvY29sIElTdGFja30gezpzeW0gcmVwZWF0ZWRseSwgOm1ldGEgezpkb2MgIlRha2VzIGEgZnVuY3Rpb24gb2Ygbm8gYXJncywgcHJlc3VtYWJseSB3aXRoIHNpZGUgZWZmZWN0cywgYW5kXG4gIHJldHVybnMgYW4gaW5maW5pdGUgKG9yIGxlbmd0aCBuIGlmIHN1cHBsaWVkKSBsYXp5IHNlcXVlbmNlIG9mIGNhbGxzXG4gIHRvIGl0IiwgOmFyZ2xpc3RzIFtbZl0gW24gZl1dfSwgOnNvdXJjZSAiKGRlZm5cbiByZXBlYXRlZGx5XG4gXCJUYWtlcyBhIGZ1bmN0aW9uIG9mIG5vIGFyZ3MsIHByZXN1bWFibHkgd2l0aCBzaWRlIGVmZmVjdHMsIGFuZFxcbiAgcmV0dXJucyBhbiBpbmZpbml0ZSAob3IgbGVuZ3RoIG4gaWYgc3VwcGxpZWQpIGxhenkgc2VxdWVuY2Ugb2YgY2FsbHNcXG4gIHRvIGl0XCJcbiAoW2ZdIChsYXp5LXNlcSAoY29ucyAoZikgKHJlcGVhdGVkbHkgZikpKSlcbiAoW24gZl0gKHRha2UgbiAocmVwZWF0ZWRseSBmKSkpKVxuIn0gezpzeW0gemlwbWFwLCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIG1hcCB3aXRoIHRoZSBrZXlzIG1hcHBlZCB0byB0aGUgY29ycmVzcG9uZGluZyB2YWxzLiIsIDphcmdsaXN0cyAoW2tleXMgdmFsc10pfSwgOnNvdXJjZSAiKGRlZm5cbiB6aXBtYXBcbiBcIlJldHVybnMgYSBtYXAgd2l0aCB0aGUga2V5cyBtYXBwZWQgdG8gdGhlIGNvcnJlc3BvbmRpbmcgdmFscy5cIlxuIFtrZXlzIHZhbHNdXG4gKGxvb3BcbiAgW21hcCAodHJhbnNpZW50IHt9KSBrcyAoc2VxIGtleXMpIHZzIChzZXEgdmFscyldXG4gIChpZlxuICAgKGFuZCBrcyB2cylcbiAgIChyZWN1ciAoYXNzb2MhIG1hcCAoZmlyc3Qga3MpIChmaXJzdCB2cykpIChuZXh0IGtzKSAobmV4dCB2cykpXG4gICAocGVyc2lzdGVudCEgbWFwKSkpKVxuIn0gezpzeW0gcmVzZXQtdmFscyEsIDptZXRhIHs6ZG9jICJTZXRzIHRoZSB2YWx1ZSBvZiBhdG9tIHRvIG5ld3ZhbC4gUmV0dXJucyBbb2xkIG5ld10sIHRoZSB2YWx1ZSBvZiB0aGVcbiAgIGF0b20gYmVmb3JlIGFuZCBhZnRlciB0aGUgcmVzZXQuIiwgOmFyZ2xpc3RzIChbYSBuZXctdmFsdWVdKX0sIDpzb3VyY2UgIihkZWZuXG4gcmVzZXQtdmFscyFcbiBcIlNldHMgdGhlIHZhbHVlIG9mIGF0b20gdG8gbmV3dmFsLiBSZXR1cm5zIFtvbGQgbmV3XSwgdGhlIHZhbHVlIG9mIHRoZVxcbiAgIGF0b20gYmVmb3JlIGFuZCBhZnRlciB0aGUgcmVzZXQuXCJcbiB7OmFkZGVkIFwiMS45XCJ9XG4gW2EgbmV3LXZhbHVlXVxuIChsZXRcbiAgW3ZhbGlkYXRlICguLXZhbGlkYXRvciBhKV1cbiAgKHdoZW4tbm90XG4gICAobmlsPyB2YWxpZGF0ZSlcbiAgICh3aGVuLW5vdFxuICAgICh2YWxpZGF0ZSBuZXctdmFsdWUpXG4gICAgKHRocm93IChqcy9FcnJvci4gXCJWYWxpZGF0b3IgcmVqZWN0ZWQgcmVmZXJlbmNlIHN0YXRlXCIpKSkpXG4gIChsZXRcbiAgIFtvbGQtdmFsdWUgKC4tc3RhdGUgYSldXG4gICAoc2V0ISAoLi1zdGF0ZSBhKSBuZXctdmFsdWUpXG4gICAod2hlbi1ub3RcbiAgICAobmlsPyAoLi13YXRjaGVzIGEpKVxuICAgICgtbm90aWZ5LXdhdGNoZXMgYSBvbGQtdmFsdWUgbmV3LXZhbHVlKSlcbiAgIFtvbGQtdmFsdWUgbmV3LXZhbHVlXSkpKVxuIn0gezpzeW0gSVN0YWNrLCA6bWV0YSB7OmRvYyAiUHJvdG9jb2wgZm9yIGNvbGxlY3Rpb25zIHRvIHByb3ZpZGUgYWNjZXNzIHRvIHRoZWlyIGl0ZW1zIGFzIHN0YWNrcy4gVGhlIHRvcFxuICBvZiB0aGUgc3RhY2sgc2hvdWxkIGJlIGFjY2Vzc2VkIGluIHRoZSBtb3N0IGVmZmljaWVudCB3YXkgZm9yIHRoZSBkaWZmZXJlbnRcbiAgZGF0YSBzdHJ1Y3R1cmVzLiJ9LCA6bWV0aG9kcyAoLXBlZWsgLXBvcCl9IHs6c3ltIC1yZW1vdmUtd2F0Y2gsIDptZXRhIHs6ZG9jICJSZW1vdmVzIHdhdGNoZXIgdGhhdCBjb3JyZXNwb25kcyB0byBrZXkgZnJvbSB0aGlzLiIsIDphcmdsaXN0cyAoW3RoaXMga2V5XSl9LCA6cHJvdG9jb2wgSVdhdGNoYWJsZX0gezpzeW0gSVZvbGF0aWxlLCA6bWV0YSB7OmRvYyAiUHJvdG9jb2wgZm9yIGFkZGluZyB2b2xhdGlsZSBmdW5jdGlvbmFsaXR5LiJ9LCA6bWV0aG9kcyAoLXZyZXNldCEpfSB7OnN5bSByZW1vdmUsIDptZXRhIHs6ZG9jICJSZXR1cm5zIGEgbGF6eSBzZXF1ZW5jZSBvZiB0aGUgaXRlbXMgaW4gY29sbCBmb3Igd2hpY2hcbiAgKHByZWQgaXRlbSkgcmV0dXJucyBsb2dpY2FsIGZhbHNlLiBwcmVkIG11c3QgYmUgZnJlZSBvZiBzaWRlLWVmZmVjdHMuXG4gIFJldHVybnMgYSB0cmFuc2R1Y2VyIHdoZW4gbm8gY29sbGVjdGlvbiBpcyBwcm92aWRlZC4iLCA6YXJnbGlzdHMgW1twcmVkXSBbcHJlZCBjb2xsXV19LCA6c291cmNlICIoZGVmblxuIHJlbW92ZVxuIFwiUmV0dXJucyBhIGxhenkgc2VxdWVuY2Ugb2YgdGhlIGl0ZW1zIGluIGNvbGwgZm9yIHdoaWNoXFxuICAocHJlZCBpdGVtKSByZXR1cm5zIGxvZ2ljYWwgZmFsc2UuIHByZWQgbXVzdCBiZSBmcmVlIG9mIHNpZGUtZWZmZWN0cy5cXG4gIFJldHVybnMgYSB0cmFuc2R1Y2VyIHdoZW4gbm8gY29sbGVjdGlvbiBpcyBwcm92aWRlZC5cIlxuIChbcHJlZF0gKGZpbHRlciAoY29tcGxlbWVudCBwcmVkKSkpXG4gKFtwcmVkIGNvbGxdIChmaWx0ZXIgKGNvbXBsZW1lbnQgcHJlZCkgY29sbCkpKVxuIn0gezpzeW0gKiwgOm1ldGEgezpkb2MgIlJldHVybnMgdGhlIHByb2R1Y3Qgb2YgbnVtcy4gKCopIHJldHVybnMgMS4iLCA6YXJnbGlzdHMgW1tdIFt4XSBbeCB5XSBbeCB5ICYgbW9yZV1dfSwgOnNvdXJjZSAiKGRlZm5cbiAqXG4gXCJSZXR1cm5zIHRoZSBwcm9kdWN0IG9mIG51bXMuICgqKSByZXR1cm5zIDEuXCJcbiAoW10gMSlcbiAoW3hdIHgpXG4gKFt4IHldIChjbGpzLmNvcmUvKiB4IHkpKVxuIChbeCB5ICYgbW9yZV0gKHJlZHVjZSAqIChjbGpzLmNvcmUvKiB4IHkpIG1vcmUpKSlcbiJ9IHs6c3ltIHJlLXBhdHRlcm4sIDptZXRhIHs6ZG9jICJSZXR1cm5zIGFuIGluc3RhbmNlIG9mIFJlZ0V4cCB3aGljaCBoYXMgY29tcGlsZWQgdGhlIHByb3ZpZGVkIHN0cmluZy4iLCA6YXJnbGlzdHMgKFtzXSl9LCA6c291cmNlICIoZGVmblxuIHJlLXBhdHRlcm5cbiBcIlJldHVybnMgYW4gaW5zdGFuY2Ugb2YgUmVnRXhwIHdoaWNoIGhhcyBjb21waWxlZCB0aGUgcHJvdmlkZWQgc3RyaW5nLlwiXG4gW3NdXG4gKGlmXG4gIChpbnN0YW5jZT8ganMvUmVnRXhwIHMpXG4gIHNcbiAgKGxldFxuICAgW1twcmVmaXggZmxhZ3NdXG4gICAgKHJlLWZpbmQgI1wiXlxcKFxcPyhbaWRtc3V4XSopXFwpXCIgcylcbiAgICBwYXR0ZXJuXG4gICAgKHN1YnMgcyAoaWYgKG5pbD8gcHJlZml4KSAwIChjb3VudCBwcmVmaXgpKSldXG4gICAoanMvUmVnRXhwLiBwYXR0ZXJuIChvciBmbGFncyBcIlwiKSkpKSlcbiJ9IHs6c3ltIG1pbiwgOm1ldGEgezpkb2MgIlJldHVybnMgdGhlIGxlYXN0IG9mIHRoZSBudW1zLiIsIDphcmdsaXN0cyBbW3hdIFt4IHldIFt4IHkgJiBtb3JlXV19LCA6c291cmNlICIoZGVmblxuIG1pblxuIFwiUmV0dXJucyB0aGUgbGVhc3Qgb2YgdGhlIG51bXMuXCJcbiAoW3hdIHgpXG4gKFt4IHldIChjbGpzLmNvcmUvbWluIHggeSkpXG4gKFt4IHkgJiBtb3JlXSAocmVkdWNlIG1pbiAoY2xqcy5jb3JlL21pbiB4IHkpIG1vcmUpKSlcbiJ9IHs6c3ltIC1wZXJzaXN0ZW50ISwgOm1ldGEgezpkb2MgIkNyZWF0ZXMgYSBwZXJzaXN0ZW50IGRhdGEgc3RydWN0dXJlIGZyb20gdGNvbGwgYW5kIHJldHVybnMgaXQuIiwgOmFyZ2xpc3RzIChbdGNvbGxdKX0sIDpwcm90b2NvbCBJVHJhbnNpZW50Q29sbGVjdGlvbn0gezpzeW0gLW50aCwgOm1ldGEgezpkb2MgIlJldHVybnMgdGhlIHZhbHVlIGF0IHRoZSBpbmRleCBuIGluIHRoZSBjb2xsZWN0aW9uIGNvbGwuXG4gICAgIFJldHVybnMgbm90LWZvdW5kIGlmIGluZGV4IG4gaXMgb3V0IG9mIGJvdW5kcyBhbmQgbm90LWZvdW5kIGlzIHN1cHBsaWVkLiIsIDphcmdsaXN0cyAoW2NvbGwgbl0gW2NvbGwgbiBub3QtZm91bmRdKX0sIDpwcm90b2NvbCBJSW5kZXhlZH0gezpzeW0gcG9wISwgOm1ldGEgezpkb2MgIlJlbW92ZXMgdGhlIGxhc3QgaXRlbSBmcm9tIGEgdHJhbnNpZW50IHZlY3Rvci4gSWZcbiAgdGhlIGNvbGxlY3Rpb24gaXMgZW1wdHksIHRocm93cyBhbiBleGNlcHRpb24uIFJldHVybnMgdGNvbGwiLCA6YXJnbGlzdHMgKFt0Y29sbF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBwb3AhXG4gXCJSZW1vdmVzIHRoZSBsYXN0IGl0ZW0gZnJvbSBhIHRyYW5zaWVudCB2ZWN0b3IuIElmXFxuICB0aGUgY29sbGVjdGlvbiBpcyBlbXB0eSwgdGhyb3dzIGFuIGV4Y2VwdGlvbi4gUmV0dXJucyB0Y29sbFwiXG4gW3Rjb2xsXVxuICgtcG9wISB0Y29sbCkpXG4ifSB7OnN5bSBjaHVuay1hcHBlbmQsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbYiB4XSl9LCA6c291cmNlICIoZGVmbiBjaHVuay1hcHBlbmQgW2IgeF0gKC5hZGQgYiB4KSlcbiJ9IHs6c3ltICp1bmNoZWNrZWQtYXJyYXlzKiwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgKnVuY2hlY2tlZC1hcnJheXMqIGZhbHNlKVxuIn0gezpzeW0gcHJuLXN0ciwgOm1ldGEgezpkb2MgIlNhbWUgYXMgcHItc3RyIGZvbGxvd2VkIGJ5IChuZXdsaW5lKSIsIDphcmdsaXN0cyAoWyYgb2Jqc10pfSwgOnNvdXJjZSAiKGRlZm5cbiBwcm4tc3RyXG4gXCJTYW1lIGFzIHByLXN0ciBmb2xsb3dlZCBieSAobmV3bGluZSlcIlxuIFsmIG9ianNdXG4gKHBybi1zdHItd2l0aC1vcHRzIG9ianMgKHByLW9wdHMpKSlcbiJ9IHs6c3ltIElSZXZlcnNpYmxlLCA6bWV0YSB7OmRvYyAiUHJvdG9jb2wgZm9yIHJldmVyc2luZyBhIHNlcS4ifSwgOm1ldGhvZHMgKC1yc2VxKX0gezpzeW0gcmV2ZXJzaWJsZT8sIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRydWUgaWYgY29sbCBzYXRpc2ZpZXM/IElSZXZlcnNpYmxlLiIsIDphcmdsaXN0cyAoW2NvbGxdKX0sIDpzb3VyY2UgIihkZWZuXG4gcmV2ZXJzaWJsZT9cbiBcIlJldHVybnMgdHJ1ZSBpZiBjb2xsIHNhdGlzZmllcz8gSVJldmVyc2libGUuXCJcbiBbY29sbF1cbiAoc2F0aXNmaWVzPyBJUmV2ZXJzaWJsZSBjb2xsKSlcbiJ9IHs6c3ltIC1yZWFsaXplZD8sIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRydWUgaWYgYSB2YWx1ZSBmb3IgeCBoYXMgYmVlbiBwcm9kdWNlZCwgZmFsc2Ugb3RoZXJ3aXNlLiIsIDphcmdsaXN0cyAoW3hdKX0sIDpwcm90b2NvbCBJUGVuZGluZ30gezpzeW0gLWFkZC13YXRjaCwgOm1ldGEgezpkb2MgIkFkZHMgYSB3YXRjaGVyIGZ1bmN0aW9uIGYgdG8gdGhpcy4gS2V5cyBtdXN0IGJlIHVuaXF1ZSBwZXIgcmVmZXJlbmNlLFxuICAgICBhbmQgY2FuIGJlIHVzZWQgdG8gcmVtb3ZlIHRoZSB3YXRjaCB3aXRoIC1yZW1vdmUtd2F0Y2guIiwgOmFyZ2xpc3RzIChbdGhpcyBrZXkgZl0pfSwgOnByb3RvY29sIElXYXRjaGFibGV9IHs6c3ltIC1kZXJlZi13aXRoLXRpbWVvdXQsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbbyBtc2VjIHRpbWVvdXQtdmFsXSl9LCA6cHJvdG9jb2wgSURlcmVmV2l0aFRpbWVvdXR9IHs6c3ltIGNvbmosIDptZXRhIHs6ZG9jICJjb25qW29pbl0uIFJldHVybnMgYSBuZXcgY29sbGVjdGlvbiB3aXRoIHRoZSB4c1xuICAnYWRkZWQnLiAoY29uaiBuaWwgaXRlbSkgcmV0dXJucyAoaXRlbSkuXG4gIChjb25qIGNvbGwpIHJldHVybnMgY29sbC4gKGNvbmopIHJldHVybnMgW10uXG4gIFRoZSAnYWRkaXRpb24nIG1heSBoYXBwZW4gYXQgZGlmZmVyZW50ICdwbGFjZXMnIGRlcGVuZGluZ1xuICBvbiB0aGUgY29uY3JldGUgdHlwZS4iLCA6YXJnbGlzdHMgW1tdIFtjb2xsXSBbY29sbCB4XSBbY29sbCB4ICYgeHNdXX0sIDpzb3VyY2UgIihkZWZuXG4gY29ualxuIFwiY29ualtvaW5dLiBSZXR1cm5zIGEgbmV3IGNvbGxlY3Rpb24gd2l0aCB0aGUgeHNcXG4gICdhZGRlZCcuIChjb25qIG5pbCBpdGVtKSByZXR1cm5zIChpdGVtKS5cXG4gIChjb25qIGNvbGwpIHJldHVybnMgY29sbC4gKGNvbmopIHJldHVybnMgW10uXFxuICBUaGUgJ2FkZGl0aW9uJyBtYXkgaGFwcGVuIGF0IGRpZmZlcmVudCAncGxhY2VzJyBkZXBlbmRpbmdcXG4gIG9uIHRoZSBjb25jcmV0ZSB0eXBlLlwiXG4gKFtdIFtdKVxuIChbY29sbF0gY29sbClcbiAoW2NvbGwgeF0gKGlmLW5vdCAobmlsPyBjb2xsKSAoLWNvbmogY29sbCB4KSAobGlzdCB4KSkpXG4gKFtjb2xsIHggJiB4c11cbiAgKGlmIHhzIChyZWN1ciAoY29uaiBjb2xsIHgpIChmaXJzdCB4cykgKG5leHQgeHMpKSAoY29uaiBjb2xsIHgpKSkpXG4ifSB7OnN5bSAtc29ydGVkLXNlcSwgOm1ldGEgezpkb2MgIlJldHVybnMgYSBzb3J0ZWQgc2VxIGZyb20gY29sbCBpbiBlaXRoZXIgYXNjZW5kaW5nIG9yIGRlc2NlbmRpbmcgb3JkZXIuIiwgOmFyZ2xpc3RzIChbY29sbCBhc2NlbmRpbmc/XSl9LCA6cHJvdG9jb2wgSVNvcnRlZH0gezpzeW0gdHJhbnNkdWNlLCA6bWV0YSB7OmRvYyAicmVkdWNlIHdpdGggYSB0cmFuc2Zvcm1hdGlvbiBvZiBmICh4ZikuIElmIGluaXQgaXMgbm90XG4gIHN1cHBsaWVkLCAoZikgd2lsbCBiZSBjYWxsZWQgdG8gcHJvZHVjZSBpdC4gZiBzaG91bGQgYmUgYSByZWR1Y2luZ1xuICBzdGVwIGZ1bmN0aW9uIHRoYXQgYWNjZXB0cyBib3RoIDEgYW5kIDIgYXJndW1lbnRzLCBpZiBpdCBhY2NlcHRzXG4gIG9ubHkgMiB5b3UgY2FuIGFkZCB0aGUgYXJpdHktMSB3aXRoICdjb21wbGV0aW5nJy4gUmV0dXJucyB0aGUgcmVzdWx0XG4gIG9mIGFwcGx5aW5nICh0aGUgdHJhbnNmb3JtZWQpIHhmIHRvIGluaXQgYW5kIHRoZSBmaXJzdCBpdGVtIGluIGNvbGwsXG4gIHRoZW4gYXBwbHlpbmcgeGYgdG8gdGhhdCByZXN1bHQgYW5kIHRoZSAybmQgaXRlbSwgZXRjLiBJZiBjb2xsXG4gIGNvbnRhaW5zIG5vIGl0ZW1zLCByZXR1cm5zIGluaXQgYW5kIGYgaXMgbm90IGNhbGxlZC4gTm90ZSB0aGF0XG4gIGNlcnRhaW4gdHJhbnNmb3JtcyBtYXkgaW5qZWN0IG9yIHNraXAgaXRlbXMuIiwgOmFyZ2xpc3RzIFtbeGZvcm0gZiBjb2xsXSBbeGZvcm0gZiBpbml0IGNvbGxdXX0sIDpzb3VyY2UgIihkZWZuXG4gdHJhbnNkdWNlXG4gXCJyZWR1Y2Ugd2l0aCBhIHRyYW5zZm9ybWF0aW9uIG9mIGYgKHhmKS4gSWYgaW5pdCBpcyBub3RcXG4gIHN1cHBsaWVkLCAoZikgd2lsbCBiZSBjYWxsZWQgdG8gcHJvZHVjZSBpdC4gZiBzaG91bGQgYmUgYSByZWR1Y2luZ1xcbiAgc3RlcCBmdW5jdGlvbiB0aGF0IGFjY2VwdHMgYm90aCAxIGFuZCAyIGFyZ3VtZW50cywgaWYgaXQgYWNjZXB0c1xcbiAgb25seSAyIHlvdSBjYW4gYWRkIHRoZSBhcml0eS0xIHdpdGggJ2NvbXBsZXRpbmcnLiBSZXR1cm5zIHRoZSByZXN1bHRcXG4gIG9mIGFwcGx5aW5nICh0aGUgdHJhbnNmb3JtZWQpIHhmIHRvIGluaXQgYW5kIHRoZSBmaXJzdCBpdGVtIGluIGNvbGwsXFxuICB0aGVuIGFwcGx5aW5nIHhmIHRvIHRoYXQgcmVzdWx0IGFuZCB0aGUgMm5kIGl0ZW0sIGV0Yy4gSWYgY29sbFxcbiAgY29udGFpbnMgbm8gaXRlbXMsIHJldHVybnMgaW5pdCBhbmQgZiBpcyBub3QgY2FsbGVkLiBOb3RlIHRoYXRcXG4gIGNlcnRhaW4gdHJhbnNmb3JtcyBtYXkgaW5qZWN0IG9yIHNraXAgaXRlbXMuXCJcbiAoW3hmb3JtIGYgY29sbF0gKHRyYW5zZHVjZSB4Zm9ybSBmIChmKSBjb2xsKSlcbiAoW3hmb3JtIGYgaW5pdCBjb2xsXVxuICAobGV0IFtmICh4Zm9ybSBmKSByZXQgKHJlZHVjZSBmIGluaXQgY29sbCldIChmIHJldCkpKSlcbiJ9IHs6c3ltIC1zd2FwISwgOm1ldGEgezpkb2MgIlN3YXBzIHRoZSB2YWx1ZSBvZiBvIHRvIGJlIChhcHBseSBmIGN1cnJlbnQtdmFsdWUtb2YtYXRvbSBhcmdzKS4iLCA6YXJnbGlzdHMgKFtvIGZdIFtvIGYgYV0gW28gZiBhIGJdIFtvIGYgYSBiIHhzXSl9LCA6cHJvdG9jb2wgSVN3YXB9IHs6c3ltICpwcmludC1sZW5ndGgqLCA6bWV0YSB7OmRvYyAiKnByaW50LWxlbmd0aCogY29udHJvbHMgaG93IG1hbnkgaXRlbXMgb2YgZWFjaCBjb2xsZWN0aW9uIHRoZVxuICBwcmludGVyIHdpbGwgcHJpbnQuIElmIGl0IGlzIGJvdW5kIHRvIGxvZ2ljYWwgZmFsc2UsIHRoZXJlIGlzIG5vXG4gIGxpbWl0LiBPdGhlcndpc2UsIGl0IG11c3QgYmUgYm91bmQgdG8gYW4gaW50ZWdlciBpbmRpY2F0aW5nIHRoZSBtYXhpbXVtXG4gIG51bWJlciBvZiBpdGVtcyBvZiBlYWNoIGNvbGxlY3Rpb24gdG8gcHJpbnQuIElmIGEgY29sbGVjdGlvbiBjb250YWluc1xuICBtb3JlIGl0ZW1zLCB0aGUgcHJpbnRlciB3aWxsIHByaW50IGl0ZW1zIHVwIHRvIHRoZSBsaW1pdCBmb2xsb3dlZCBieVxuICAnLi4uJyB0byByZXByZXNlbnQgdGhlIHJlbWFpbmluZyBpdGVtcy4gVGhlIHJvb3QgYmluZGluZyBpcyBuaWxcbiAgaW5kaWNhdGluZyBubyBsaW1pdC4ifSwgOnNvdXJjZSAiKGRlZiAqcHJpbnQtbGVuZ3RoKiBuaWwpXG4ifSB7OnN5bSBqcy1kZWxldGUsIDptZXRhIHs6ZG9jICJEZWxldGUgYSBwcm9wZXJ0eSBmcm9tIGEgSmF2YVNjcmlwdCBvYmplY3QuXG4gIFJldHVybnMgdHJ1ZSB1cG9uIHN1Y2Nlc3MsIGZhbHNlIG90aGVyd2lzZS4iLCA6YXJnbGlzdHMgKFtvYmoga2V5XSl9LCA6c291cmNlICIoZGVmblxuIGpzLWRlbGV0ZVxuIFwiRGVsZXRlIGEgcHJvcGVydHkgZnJvbSBhIEphdmFTY3JpcHQgb2JqZWN0LlxcbiAgUmV0dXJucyB0cnVlIHVwb24gc3VjY2VzcywgZmFsc2Ugb3RoZXJ3aXNlLlwiXG4gW29iaiBrZXldXG4gKGNsanMuY29yZS9qcy1kZWxldGUgb2JqIGtleSkpXG4ifSB7OnN5bSB0cnV0aF8sIDptZXRhIHs6ZG9jICJJbnRlcm5hbCAtIGRvIG5vdCB1c2UhIiwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm4gdHJ1dGhfIFwiSW50ZXJuYWwgLSBkbyBub3QgdXNlIVwiIFt4XSAoY2xqcy5jb3JlL3RydXRoXyB4KSlcbiJ9IHs6c3ltIGFycmF5LWluZGV4LW9mLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2FyciBrXSl9LCA6c291cmNlICIoZGVmblxuIGFycmF5LWluZGV4LW9mXG4gW2FyciBrXVxuIChjb25kXG4gIChrZXl3b3JkPyBrKVxuICAoYXJyYXktaW5kZXgtb2Yta2V5d29yZD8gYXJyIGspXG4gIChvciAoc3RyaW5nPyBrKSAobnVtYmVyPyBrKSlcbiAgKGFycmF5LWluZGV4LW9mLWlkZW50aWNhbD8gYXJyIGspXG4gIChzeW1ib2w/IGspXG4gIChhcnJheS1pbmRleC1vZi1zeW1ib2w/IGFyciBrKVxuICAobmlsPyBrKVxuICAoYXJyYXktaW5kZXgtb2YtbmlsPyBhcnIpXG4gIDplbHNlXG4gIChhcnJheS1pbmRleC1vZi1lcXVpdj8gYXJyIGspKSlcbiJ9IHs6c3ltIGtleS0+anMsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIFtba10gW2sgcHJpbWl0aXZlLWZuXV19LCA6c291cmNlICIoZGVmblxuIGtleS0+anNcbiAoW2tdIChrZXktPmpzIGsgY2xqLT5qcykpXG4gKFtrIHByaW1pdGl2ZS1mbl1cbiAgKGNvbmRcbiAgIChzYXRpc2ZpZXM/IElFbmNvZGVKUyBrKVxuICAgKC1jbGotPmpzIGspXG4gICAob3IgKHN0cmluZz8gaykgKG51bWJlcj8gaykgKGtleXdvcmQ/IGspIChzeW1ib2w/IGspKVxuICAgKHByaW1pdGl2ZS1mbiBrKVxuICAgOmRlZmF1bHRcbiAgIChwci1zdHIgaykpKSlcbiJ9IHs6c3ltIElFbmNvZGVKUywgOm1ldGEgezpkb2MgbmlsfSwgOm1ldGhvZHMgKC1jbGotPmpzIC1rZXktPmpzKX0gezpzeW0gY29tcGFyZS1hbmQtc2V0ISwgOm1ldGEgezpkb2MgIkF0b21pY2FsbHkgc2V0cyB0aGUgdmFsdWUgb2YgYXRvbSB0byBuZXd2YWwgaWYgYW5kIG9ubHkgaWYgdGhlXG4gIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGF0b20gaXMgZXF1YWwgdG8gb2xkdmFsLiBSZXR1cm5zIHRydWUgaWZcbiAgc2V0IGhhcHBlbmVkLCBlbHNlIGZhbHNlLiIsIDphcmdsaXN0cyAoW2Egb2xkdmFsIG5ld3ZhbF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBjb21wYXJlLWFuZC1zZXQhXG4gXCJBdG9taWNhbGx5IHNldHMgdGhlIHZhbHVlIG9mIGF0b20gdG8gbmV3dmFsIGlmIGFuZCBvbmx5IGlmIHRoZVxcbiAgY3VycmVudCB2YWx1ZSBvZiB0aGUgYXRvbSBpcyBlcXVhbCB0byBvbGR2YWwuIFJldHVybnMgdHJ1ZSBpZlxcbiAgc2V0IGhhcHBlbmVkLCBlbHNlIGZhbHNlLlwiXG4gW2Egb2xkdmFsIG5ld3ZhbF1cbiAoaWYgKD0gKC1kZXJlZiBhKSBvbGR2YWwpIChkbyAocmVzZXQhIGEgbmV3dmFsKSB0cnVlKSBmYWxzZSkpXG4ifSB7OnN5bSBhcnJheS1zZXEsIDptZXRhIHs6ZG9jICJDcmVhdGUgYSBzZXEgZnJvbSBhIEphdmFTY3JpcHQgYXJyYXkuIiwgOmFyZ2xpc3RzIFtbYXJyYXldIFthcnJheSBpXV19LCA6c291cmNlICIoZGVmblxuIGFycmF5LXNlcVxuIFwiQ3JlYXRlIGEgc2VxIGZyb20gYSBKYXZhU2NyaXB0IGFycmF5LlwiXG4gKFthcnJheV0gKHByaW0tc2VxIGFycmF5IDApKVxuIChbYXJyYXkgaV0gKHByaW0tc2VxIGFycmF5IGkpKSlcbiJ9IHs6c3ltIGludGVybGVhdmUsIDptZXRhIHs6ZG9jICJSZXR1cm5zIGEgbGF6eSBzZXEgb2YgdGhlIGZpcnN0IGl0ZW0gaW4gZWFjaCBjb2xsLCB0aGVuIHRoZSBzZWNvbmQgZXRjLiIsIDphcmdsaXN0cyBbW10gW2MxXSBbYzEgYzJdIFtjMSBjMiAmIGNvbGxzXV19LCA6c291cmNlICIoZGVmblxuIGludGVybGVhdmVcbiBcIlJldHVybnMgYSBsYXp5IHNlcSBvZiB0aGUgZmlyc3QgaXRlbSBpbiBlYWNoIGNvbGwsIHRoZW4gdGhlIHNlY29uZCBldGMuXCJcbiAoW10gKCkpXG4gKFtjMV0gKGxhenktc2VxIGMxKSlcbiAoW2MxIGMyXVxuICAobGF6eS1zZXFcbiAgIChsZXRcbiAgICBbczEgKHNlcSBjMSkgczIgKHNlcSBjMildXG4gICAgKHdoZW5cbiAgICAgKGFuZCBzMSBzMilcbiAgICAgKGNvbnNcbiAgICAgIChmaXJzdCBzMSlcbiAgICAgIChjb25zIChmaXJzdCBzMikgKGludGVybGVhdmUgKHJlc3QgczEpIChyZXN0IHMyKSkpKSkpKSlcbiAoW2MxIGMyICYgY29sbHNdXG4gIChsYXp5LXNlcVxuICAgKGxldFxuICAgIFtzcyAobWFwIHNlcSAoY29uaiBjb2xscyBjMiBjMSkpXVxuICAgICh3aGVuXG4gICAgIChldmVyeT8gaWRlbnRpdHkgc3MpXG4gICAgIChjb25jYXQgKG1hcCBmaXJzdCBzcykgKGFwcGx5IGludGVybGVhdmUgKG1hcCByZXN0IHNzKSkpKSkpKSlcbiJ9IHs6c3ltIHByaW50LW1hcCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFttIHByaW50LW9uZSB3cml0ZXIgb3B0c10pfSwgOnNvdXJjZSAiKGRlZm5cbiBwcmludC1tYXBcbiBbbSBwcmludC1vbmUgd3JpdGVyIG9wdHNdXG4gKGxldFxuICBbW25zIGxpZnQtbWFwXSAod2hlbiAobWFwPyBtKSAobGlmdC1ucyBtKSldXG4gIChpZlxuICAgbnNcbiAgIChwcmludC1wcmVmaXgtbWFwIChzdHIgXCIjOlwiIG5zKSBsaWZ0LW1hcCBwcmludC1vbmUgd3JpdGVyIG9wdHMpXG4gICAocHJpbnQtcHJlZml4LW1hcCBuaWwgbSBwcmludC1vbmUgd3JpdGVyIG9wdHMpKSkpXG4ifSB7OnN5bSBtYXA/LCA6bWV0YSB7OmRvYyAiUmV0dXJuIHRydWUgaWYgeCBzYXRpc2ZpZXMgSU1hcCIsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuXG4gbWFwP1xuIFwiUmV0dXJuIHRydWUgaWYgeCBzYXRpc2ZpZXMgSU1hcFwiXG4gW3hdXG4gKGlmIChuaWw/IHgpIGZhbHNlIChzYXRpc2ZpZXM/IElNYXAgeCkpKVxuIn0gezpzeW0gbTMtQzEsIDptZXRhIHt9LCA6c291cmNlICIoZGVmIG0zLUMxIChpbnQgMzQzMjkxODM1MykpXG4ifSB7OnN5bSBnZXQsIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRoZSB2YWx1ZSBtYXBwZWQgdG8ga2V5LCBub3QtZm91bmQgb3IgbmlsIGlmIGtleSBub3QgcHJlc2VudC4iLCA6YXJnbGlzdHMgW1tvIGtdIFtvIGsgbm90LWZvdW5kXV19LCA6c291cmNlICIoZGVmblxuIGdldFxuIFwiUmV0dXJucyB0aGUgdmFsdWUgbWFwcGVkIHRvIGtleSwgbm90LWZvdW5kIG9yIG5pbCBpZiBrZXkgbm90IHByZXNlbnQuXCJcbiAoW28ga11cbiAgKHdoZW4tbm90XG4gICAobmlsPyBvKVxuICAgKGNvbmRcbiAgICAoaW1wbGVtZW50cz8gSUxvb2t1cCBvKVxuICAgICgtbG9va3VwIG8gaylcbiAgICAoYXJyYXk/IG8pXG4gICAgKHdoZW4gKGFuZCAoc29tZT8gaykgKDwgayAoLi1sZW5ndGggbykpKSAoYWdldCBvIChpbnQgaykpKVxuICAgIChzdHJpbmc/IG8pXG4gICAgKHdoZW4gKGFuZCAoc29tZT8gaykgKDwgLTEgayAoLi1sZW5ndGggbykpKSAoLmNoYXJBdCBvIChpbnQgaykpKVxuICAgIChuYXRpdmUtc2F0aXNmaWVzPyBJTG9va3VwIG8pXG4gICAgKC1sb29rdXAgbyBrKVxuICAgIDplbHNlXG4gICAgbmlsKSkpXG4gKFtvIGsgbm90LWZvdW5kXVxuICAoaWYtbm90XG4gICAobmlsPyBvKVxuICAgKGNvbmRcbiAgICAoaW1wbGVtZW50cz8gSUxvb2t1cCBvKVxuICAgICgtbG9va3VwIG8gayBub3QtZm91bmQpXG4gICAgKGFycmF5PyBvKVxuICAgIChpZlxuICAgICAoYW5kIChzb21lPyBrKSAoPCAtMSBrICguLWxlbmd0aCBvKSkpXG4gICAgIChhZ2V0IG8gKGludCBrKSlcbiAgICAgbm90LWZvdW5kKVxuICAgIChzdHJpbmc/IG8pXG4gICAgKGlmXG4gICAgIChhbmQgKHNvbWU/IGspICg8IC0xIGsgKC4tbGVuZ3RoIG8pKSlcbiAgICAgKC5jaGFyQXQgbyAoaW50IGspKVxuICAgICBub3QtZm91bmQpXG4gICAgKG5hdGl2ZS1zYXRpc2ZpZXM/IElMb29rdXAgbylcbiAgICAoLWxvb2t1cCBvIGsgbm90LWZvdW5kKVxuICAgIDplbHNlXG4gICAgbm90LWZvdW5kKVxuICAgbm90LWZvdW5kKSkpXG4ifSB7OnN5bSBpZGVudGl0eSwgOm1ldGEgezpkb2MgIlJldHVybnMgaXRzIGFyZ3VtZW50LiIsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuIGlkZW50aXR5IFwiUmV0dXJucyBpdHMgYXJndW1lbnQuXCIgW3hdIHgpXG4ifSB7OnN5bSBpbnRvLCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIG5ldyBjb2xsIGNvbnNpc3Rpbmcgb2YgdG8tY29sbCB3aXRoIGFsbCBvZiB0aGUgaXRlbXMgb2ZcbiAgZnJvbS1jb2xsIGNvbmpvaW5lZC4gQSB0cmFuc2R1Y2VyIG1heSBiZSBzdXBwbGllZC4iLCA6YXJnbGlzdHMgW1tdIFt0b10gW3RvIGZyb21dIFt0byB4Zm9ybSBmcm9tXV19LCA6c291cmNlICIoZGVmblxuIGludG9cbiBcIlJldHVybnMgYSBuZXcgY29sbCBjb25zaXN0aW5nIG9mIHRvLWNvbGwgd2l0aCBhbGwgb2YgdGhlIGl0ZW1zIG9mXFxuICBmcm9tLWNvbGwgY29uam9pbmVkLiBBIHRyYW5zZHVjZXIgbWF5IGJlIHN1cHBsaWVkLlwiXG4gKFtdIFtdKVxuIChbdG9dIHRvKVxuIChbdG8gZnJvbV1cbiAgKGlmLW5vdFxuICAgKG5pbD8gdG8pXG4gICAoaWZcbiAgICAoaW1wbGVtZW50cz8gSUVkaXRhYmxlQ29sbGVjdGlvbiB0bylcbiAgICAoLXdpdGgtbWV0YVxuICAgICAocGVyc2lzdGVudCEgKHJlZHVjZSAtY29uaiEgKHRyYW5zaWVudCB0bykgZnJvbSkpXG4gICAgIChtZXRhIHRvKSlcbiAgICAocmVkdWNlIC1jb25qIHRvIGZyb20pKVxuICAgKHJlZHVjZSBjb25qIHRvIGZyb20pKSlcbiAoW3RvIHhmb3JtIGZyb21dXG4gIChpZlxuICAgKGltcGxlbWVudHM/IElFZGl0YWJsZUNvbGxlY3Rpb24gdG8pXG4gICAoLXdpdGgtbWV0YVxuICAgIChwZXJzaXN0ZW50ISAodHJhbnNkdWNlIHhmb3JtIGNvbmohICh0cmFuc2llbnQgdG8pIGZyb20pKVxuICAgIChtZXRhIHRvKSlcbiAgICh0cmFuc2R1Y2UgeGZvcm0gY29uaiB0byBmcm9tKSkpKVxuIn0gezpzeW0gbG9uZywgOm1ldGEgezpkb2MgIkNvZXJjZSB0byBsb25nIGJ5IHN0cmlwcGluZyBkZWNpbWFsIHBsYWNlcy4gSWRlbnRpY2FsIHRvIGBpbnQnLiIsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuXG4gbG9uZ1xuIFwiQ29lcmNlIHRvIGxvbmcgYnkgc3RyaXBwaW5nIGRlY2ltYWwgcGxhY2VzLiBJZGVudGljYWwgdG8gYGludCcuXCJcbiBbeF1cbiAoZml4IHgpKVxuIn0gezpzeW0gZG91YmxlLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuIGRvdWJsZSBbeF0geClcbiJ9IHs6c3ltIHZvbGF0aWxlPywgOm1ldGEgezpkb2MgIlJldHVybnMgdHJ1ZSBpZiB4IGlzIGEgdm9sYXRpbGUuIiwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm5cbiB2b2xhdGlsZT9cbiBcIlJldHVybnMgdHJ1ZSBpZiB4IGlzIGEgdm9sYXRpbGUuXCJcbiBbeF1cbiAoaW5zdGFuY2U/IFZvbGF0aWxlIHgpKVxuIn0gezpzeW0gLWtleSwgOm1ldGEgezpkb2MgIlJldHVybnMgdGhlIGtleSBvZiB0aGUgbWFwIGVudHJ5LiIsIDphcmdsaXN0cyAoW2NvbGxdKX0sIDpwcm90b2NvbCBJTWFwRW50cnl9IHs6c3ltIG5maXJzdCwgOm1ldGEgezpkb2MgIlNhbWUgYXMgKG5leHQgKGZpcnN0IHgpKSIsIDphcmdsaXN0cyAoW2NvbGxdKX0sIDpzb3VyY2UgIihkZWZuIG5maXJzdCBcIlNhbWUgYXMgKG5leHQgKGZpcnN0IHgpKVwiIFtjb2xsXSAobmV4dCAoZmlyc3QgY29sbCkpKVxuIn0gezpzeW0gbWV0YSwgOm1ldGEgezpkb2MgIlJldHVybnMgdGhlIG1ldGFkYXRhIG9mIG9iaiwgcmV0dXJucyBuaWwgaWYgdGhlcmUgaXMgbm8gbWV0YWRhdGEuIiwgOmFyZ2xpc3RzIChbb10pfSwgOnNvdXJjZSAiKGRlZm5cbiBtZXRhXG4gXCJSZXR1cm5zIHRoZSBtZXRhZGF0YSBvZiBvYmosIHJldHVybnMgbmlsIGlmIHRoZXJlIGlzIG5vIG1ldGFkYXRhLlwiXG4gW29dXG4gKHdoZW4gKGFuZCAobm90IChuaWw/IG8pKSAoc2F0aXNmaWVzPyBJTWV0YSBvKSkgKC1tZXRhIG8pKSlcbiJ9IHs6c3ltIC1rdi1yZWR1Y2UsIDptZXRhIHs6ZG9jICJSZWR1Y2VzIGFuIGFzc29jaWF0aXZlIGNvbGxlY3Rpb24gYW5kIHJldHVybnMgdGhlIHJlc3VsdC4gZiBzaG91bGQgYmVcbiAgICAgYSBmdW5jdGlvbiB0aGF0IHRha2VzIHRocmVlIGFyZ3VtZW50cy4iLCA6YXJnbGlzdHMgKFtjb2xsIGYgaW5pdF0pfSwgOnByb3RvY29sIElLVlJlZHVjZX0gezpzeW0gSUhhc2gsIDptZXRhIHs6ZG9jICJQcm90b2NvbCBmb3IgYWRkaW5nIGhhc2hpbmcgZnVuY3Rpb25hbGl0eSB0byBhIHR5cGUuIn0sIDptZXRob2RzICgtaGFzaCl9IHs6c3ltIGJpdC1hbmQtbm90LCA6bWV0YSB7OmRvYyAiQml0d2lzZSBhbmQgd2l0aCBjb21wbGVtZW50IiwgOmFyZ2xpc3RzIFtbeCB5XSBbeCB5ICYgbW9yZV1dfSwgOnNvdXJjZSAiKGRlZm5cbiBiaXQtYW5kLW5vdFxuIFwiQml0d2lzZSBhbmQgd2l0aCBjb21wbGVtZW50XCJcbiAoW3ggeV0gKGNsanMuY29yZS9iaXQtYW5kLW5vdCB4IHkpKVxuIChbeCB5ICYgbW9yZV0gKHJlZHVjZSBiaXQtYW5kLW5vdCAoY2xqcy5jb3JlL2JpdC1hbmQtbm90IHggeSkgbW9yZSkpKVxuIn0gezpzeW0gdmFyPywgOm1ldGEgezpkb2MgIlJldHVybnMgdHJ1ZSBpZiB2IGlzIG9mIHR5cGUgY2xqcy5jb3JlLlZhciIsIDphcmdsaXN0cyAoW3ZdKX0sIDpzb3VyY2UgIihkZWZuXG4gdmFyP1xuIFwiUmV0dXJucyB0cnVlIGlmIHYgaXMgb2YgdHlwZSBjbGpzLmNvcmUuVmFyXCJcbiBbdl1cbiAoaW5zdGFuY2U/IGNsanMuY29yZS5WYXIgdikpXG4ifSB7OnN5bSAtY29tcGFyYXRvciwgOm1ldGEgezpkb2MgIlJldHVybnMgdGhlIGNvbXBhcmF0b3IgZm9yIGNvbGwuIiwgOmFyZ2xpc3RzIChbY29sbF0pfSwgOnByb3RvY29sIElTb3J0ZWR9IHs6c3ltIHVuY2hlY2tlZC1hZGQtaW50LCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0aGUgc3VtIG9mIG51bXMuICgrKSByZXR1cm5zIDAuIiwgOmFyZ2xpc3RzIFtbXSBbeF0gW3ggeV0gW3ggeSAmIG1vcmVdXX0sIDpzb3VyY2UgIihkZWZuXG4gdW5jaGVja2VkLWFkZC1pbnRcbiBcIlJldHVybnMgdGhlIHN1bSBvZiBudW1zLiAoKykgcmV0dXJucyAwLlwiXG4gKFtdIDApXG4gKFt4XSB4KVxuIChbeCB5XSAoY2xqcy5jb3JlL3VuY2hlY2tlZC1hZGQtaW50IHggeSkpXG4gKFt4IHkgJiBtb3JlXVxuICAocmVkdWNlIHVuY2hlY2tlZC1hZGQtaW50IChjbGpzLmNvcmUvdW5jaGVja2VkLWFkZC1pbnQgeCB5KSBtb3JlKSkpXG4ifSB7OnN5bSBoYXNoLW9yZGVyZWQtY29sbCwgOm1ldGEgezpkb2MgIlJldHVybnMgdGhlIGhhc2ggY29kZSwgY29uc2lzdGVudCB3aXRoID0sIGZvciBhbiBleHRlcm5hbCBvcmRlcmVkXG4gICBjb2xsZWN0aW9uIGltcGxlbWVudGluZyBJdGVyYWJsZS5cbiAgIFNlZSBodHRwOi8vY2xvanVyZS5vcmcvZGF0YV9zdHJ1Y3R1cmVzI2hhc2ggZm9yIGZ1bGwgYWxnb3JpdGhtcy4iLCA6YXJnbGlzdHMgKFtjb2xsXSl9LCA6c291cmNlICIoZGVmblxuIGhhc2gtb3JkZXJlZC1jb2xsXG4gXCJSZXR1cm5zIHRoZSBoYXNoIGNvZGUsIGNvbnNpc3RlbnQgd2l0aCA9LCBmb3IgYW4gZXh0ZXJuYWwgb3JkZXJlZFxcbiAgIGNvbGxlY3Rpb24gaW1wbGVtZW50aW5nIEl0ZXJhYmxlLlxcbiAgIFNlZSBodHRwOi8vY2xvanVyZS5vcmcvZGF0YV9zdHJ1Y3R1cmVzI2hhc2ggZm9yIGZ1bGwgYWxnb3JpdGhtcy5cIlxuIFtjb2xsXVxuIChsb29wXG4gIFtuIDAgaGFzaC1jb2RlIDEgY29sbCAoc2VxIGNvbGwpXVxuICAoaWYtbm90XG4gICAobmlsPyBjb2xsKVxuICAgKHJlY3VyXG4gICAgKGluYyBuKVxuICAgIChiaXQtb3IgKCsgKGltdWwgMzEgaGFzaC1jb2RlKSAoaGFzaCAoZmlyc3QgY29sbCkpKSAwKVxuICAgIChuZXh0IGNvbGwpKVxuICAgKG1peC1jb2xsZWN0aW9uLWhhc2ggaGFzaC1jb2RlIG4pKSkpXG4ifSB7OnN5bSByZXNldC1tZXRhISwgOm1ldGEgezpkb2MgIkF0b21pY2FsbHkgcmVzZXRzIHRoZSBtZXRhZGF0YSBmb3IgYW4gYXRvbSIsIDphcmdsaXN0cyAoW2lyZWYgbV0pfSwgOnNvdXJjZSAiKGRlZm5cbiByZXNldC1tZXRhIVxuIFwiQXRvbWljYWxseSByZXNldHMgdGhlIG1ldGFkYXRhIGZvciBhbiBhdG9tXCJcbiBbaXJlZiBtXVxuIChzZXQhICguLW1ldGEgaXJlZikgbSkpXG4ifSB7OnN5bSBJRXF1aXYsIDptZXRhIHs6ZG9jICJQcm90b2NvbCBmb3IgYWRkaW5nIHZhbHVlIGNvbXBhcmlzb24gZnVuY3Rpb25hbGl0eSB0byBhIHR5cGUuIn0sIDptZXRob2RzICgtZXF1aXYpfSB7OnN5bSBjeWNsZSwgOm1ldGEgezpkb2MgIlJldHVybnMgYSBsYXp5IChpbmZpbml0ZSEpIHNlcXVlbmNlIG9mIHJlcGV0aXRpb25zIG9mIHRoZSBpdGVtcyBpbiBjb2xsLiIsIDphcmdsaXN0cyAoW2NvbGxdKX0sIDpzb3VyY2UgIihkZWZuXG4gY3ljbGVcbiBcIlJldHVybnMgYSBsYXp5IChpbmZpbml0ZSEpIHNlcXVlbmNlIG9mIHJlcGV0aXRpb25zIG9mIHRoZSBpdGVtcyBpbiBjb2xsLlwiXG4gW2NvbGxdXG4gKGlmLWxldFxuICBbdmFscyAoc2VxIGNvbGwpXVxuICAoQ3ljbGUuIG5pbCB2YWxzIG5pbCB2YWxzIG5pbClcbiAgKC4tRU1QVFkgTGlzdCkpKVxuIn0gezpzeW0gLWRlcmVmLCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlIHJlZmVyZW5jZSBvLiIsIDphcmdsaXN0cyAoW29dKX0sIDpwcm90b2NvbCBJRGVyZWZ9IHs6c3ltIGVtcHR5PywgOm1ldGEgezpkb2MgIlJldHVybnMgdHJ1ZSBpZiBjb2xsIGhhcyBubyBpdGVtcyAtIHNhbWUgYXMgKG5vdCAoc2VxIGNvbGwpKS5cbiAgUGxlYXNlIHVzZSB0aGUgaWRpb20gKHNlcSB4KSByYXRoZXIgdGhhbiAobm90IChlbXB0eT8geCkpIiwgOmFyZ2xpc3RzIChbY29sbF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBlbXB0eT9cbiBcIlJldHVybnMgdHJ1ZSBpZiBjb2xsIGhhcyBubyBpdGVtcyAtIHNhbWUgYXMgKG5vdCAoc2VxIGNvbGwpKS5cXG4gIFBsZWFzZSB1c2UgdGhlIGlkaW9tIChzZXEgeCkgcmF0aGVyIHRoYW4gKG5vdCAoZW1wdHk/IHgpKVwiXG4gW2NvbGxdXG4gKG9yIChuaWw/IGNvbGwpIChub3QgKHNlcSBjb2xsKSkpKVxuIn0gezpzeW0gc2hvcnQsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm4gc2hvcnQgW3hdIHgpXG4ifSB7OnN5bSAtY2xqLT5qcywgOm1ldGEgezpkb2MgIlJlY3Vyc2l2ZWx5IHRyYW5zZm9ybXMgY2xqIHZhbHVlcyB0byBKYXZhU2NyaXB0IiwgOmFyZ2xpc3RzIChbeF0pfSwgOnByb3RvY29sIElFbmNvZGVKU30gezpzeW0gLWNodW5rZWQtZmlyc3QsIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRoZSBmaXJzdCBjaHVuayBpbiBjb2xsLiIsIDphcmdsaXN0cyAoW2NvbGxdKX0sIDpwcm90b2NvbCBJQ2h1bmtlZFNlcX0gezpzeW0gYWRkLXRhcCwgOm1ldGEgezpkb2MgIkFkZHMgZiwgYSBmbiBvZiBvbmUgYXJndW1lbnQsIHRvIHRoZSB0YXAgc2V0LiBUaGlzIGZ1bmN0aW9uIHdpbGwgYmUgY2FsbGVkIHdpdGhcbiAgYW55dGhpbmcgc2VudCB2aWEgdGFwPi4gUmVtZW1iZXIgZiBpbiBvcmRlciB0byByZW1vdmUtdGFwIiwgOmFyZ2xpc3RzIChbZl0pfSwgOnNvdXJjZSAiKGRlZm5cbiBhZGQtdGFwXG4gXCJBZGRzIGYsIGEgZm4gb2Ygb25lIGFyZ3VtZW50LCB0byB0aGUgdGFwIHNldC4gVGhpcyBmdW5jdGlvbiB3aWxsIGJlIGNhbGxlZCB3aXRoXFxuICBhbnl0aGluZyBzZW50IHZpYSB0YXA+LiBSZW1lbWJlciBmIGluIG9yZGVyIHRvIHJlbW92ZS10YXBcIlxuIFtmXVxuIChtYXliZS1pbml0LXRhcHNldClcbiAoc3dhcCEgdGFwc2V0IGNvbmogZilcbiBuaWwpXG4ifSB7OnN5bSBmaWx0ZXJ2LCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIHZlY3RvciBvZiB0aGUgaXRlbXMgaW4gY29sbCBmb3Igd2hpY2hcbiAgKHByZWQgaXRlbSkgcmV0dXJucyBsb2dpY2FsIHRydWUuIHByZWQgbXVzdCBiZSBmcmVlIG9mIHNpZGUtZWZmZWN0cy4iLCA6YXJnbGlzdHMgKFtwcmVkIGNvbGxdKX0sIDpzb3VyY2UgIihkZWZuXG4gZmlsdGVydlxuIFwiUmV0dXJucyBhIHZlY3RvciBvZiB0aGUgaXRlbXMgaW4gY29sbCBmb3Igd2hpY2hcXG4gIChwcmVkIGl0ZW0pIHJldHVybnMgbG9naWNhbCB0cnVlLiBwcmVkIG11c3QgYmUgZnJlZSBvZiBzaWRlLWVmZmVjdHMuXCJcbiBbcHJlZCBjb2xsXVxuICgtPlxuICAocmVkdWNlIChmbiBbdiBvXSAoaWYgKHByZWQgbykgKGNvbmohIHYgbykgdikpICh0cmFuc2llbnQgW10pIGNvbGwpXG4gIHBlcnNpc3RlbnQhKSlcbiJ9IHs6c3ltIGhhc2gsIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRoZSBoYXNoIGNvZGUgb2YgaXRzIGFyZ3VtZW50LiBOb3RlIHRoaXMgaXMgdGhlIGhhc2ggY29kZVxuICAgY29uc2lzdGVudCB3aXRoID0uIiwgOmFyZ2xpc3RzIChbb10pfSwgOnNvdXJjZSAiKGRlZm5cbiBoYXNoXG4gXCJSZXR1cm5zIHRoZSBoYXNoIGNvZGUgb2YgaXRzIGFyZ3VtZW50LiBOb3RlIHRoaXMgaXMgdGhlIGhhc2ggY29kZVxcbiAgIGNvbnNpc3RlbnQgd2l0aCA9LlwiXG4gW29dXG4gKGNvbmRcbiAgKGltcGxlbWVudHM/IElIYXNoIG8pXG4gIChiaXQteG9yICgtaGFzaCBvKSAwKVxuICAobnVtYmVyPyBvKVxuICAoaWZcbiAgIChqcy9pc0Zpbml0ZSBvKVxuICAgKGpzLW1vZCAoTWF0aC9mbG9vciBvKSAyMTQ3NDgzNjQ3KVxuICAgKGNhc2UgbyAjI0luZiAyMTQ2NDM1MDcyICMjLUluZiAtMTA0ODU3NiAyMTQ2OTU5MzYwKSlcbiAgKHRydWU/IG8pXG4gIDEyMzFcbiAgKGZhbHNlPyBvKVxuICAxMjM3XG4gIChzdHJpbmc/IG8pXG4gIChtMy1oYXNoLWludCAoaGFzaC1zdHJpbmcgbykpXG4gIChpbnN0YW5jZT8ganMvRGF0ZSBvKVxuICAoYml0LXhvciAoLnZhbHVlT2YgbykgMClcbiAgKG5pbD8gbylcbiAgMFxuICA6ZWxzZVxuICAoYml0LXhvciAoLWhhc2ggbykgMCkpKVxuIn0gezpzeW0gcXVvdCwgOm1ldGEgezpkb2MgInF1b3RbaWVudF0gb2YgZGl2aWRpbmcgbnVtZXJhdG9yIGJ5IGRlbm9taW5hdG9yLiIsIDphcmdsaXN0cyAoW24gZF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBxdW90XG4gXCJxdW90W2llbnRdIG9mIGRpdmlkaW5nIG51bWVyYXRvciBieSBkZW5vbWluYXRvci5cIlxuIFtuIGRdXG4gKGxldCBbcmVtIChqcy1tb2QgbiBkKV0gKGZpeCAoLyAoLSBuIHJlbSkgZCkpKSlcbiJ9IHs6c3ltIG5zLWludGVybnMqLCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIG1hcCBvZiB0aGUgaW50ZXJuIG1hcHBpbmdzIGZvciB0aGUgbmFtZXNwYWNlLlxuICBCb290c3RyYXAgb25seS4iLCA6YXJnbGlzdHMgKFtzeW1dKX0sIDpzb3VyY2UgIihkZWZuXG4gbnMtaW50ZXJucypcbiBcIlJldHVybnMgYSBtYXAgb2YgdGhlIGludGVybiBtYXBwaW5ncyBmb3IgdGhlIG5hbWVzcGFjZS5cXG4gIEJvb3RzdHJhcCBvbmx5LlwiXG4gW3N5bV1cbiAobGV0XG4gIFtucy1vYmogKGZpbmQtbnMtb2JqIHN5bSkgbnMgKE5hbWVzcGFjZS4gbnMtb2JqIHN5bSldXG4gIChsZXRmblxuICAgWyhzdGVwXG4gICAgIFtyZXQga11cbiAgICAgKGxldFxuICAgICAgW3Zhci1zeW0gKHN5bWJvbCAoZGVtdW5nZSBrKSldXG4gICAgICAoYXNzb2NcbiAgICAgICByZXRcbiAgICAgICB2YXItc3ltXG4gICAgICAgKFZhci5cbiAgICAgICAgKGZuKiBbXSAoZ29iamVjdC9nZXQgbnMtb2JqIGspKVxuICAgICAgICAoc3ltYm9sIChzdHIgc3ltKSAoc3RyIHZhci1zeW0pKVxuICAgICAgICB7Om5zIG5zfSkpKSldXG4gICAocmVkdWNlIHN0ZXAge30gKGpzLWtleXMgbnMtb2JqKSkpKSlcbiJ9IHs6c3ltIHVuY2hlY2tlZC1kb3VibGUsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm4gdW5jaGVja2VkLWRvdWJsZSBbeF0geClcbiJ9IHs6c3ltIHJhbmdlZC1pdGVyYXRvciwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt2IHN0YXJ0IGVuZF0pfSwgOnNvdXJjZSAiKGRlZm5cbiByYW5nZWQtaXRlcmF0b3JcbiBbdiBzdGFydCBlbmRdXG4gKGxldFxuICBbaSBzdGFydF1cbiAgKFJhbmdlZEl0ZXJhdG9yLlxuICAgaVxuICAgKC0gaSAoanMtbW9kIGkgMzIpKVxuICAgKHdoZW4gKDwgc3RhcnQgKGNvdW50IHYpKSAodW5jaGVja2VkLWFycmF5LWZvciB2IGkpKVxuICAgdlxuICAgc3RhcnRcbiAgIGVuZCkpKVxuIn0gezpzeW0gSVRyYW5zaWVudFZlY3RvciwgOm1ldGEgezpkb2MgIlByb3RvY29sIGZvciBhZGRpbmcgdmVjdG9yIGZ1bmN0aW9uYWxpdHkgdG8gdHJhbnNpZW50IGNvbGxlY3Rpb25zLiJ9LCA6bWV0aG9kcyAoLWFzc29jLW4hIC1wb3AhKX0gezpzeW0ga2V5LCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0aGUga2V5IG9mIHRoZSBtYXAgZW50cnkuIiwgOmFyZ2xpc3RzIChbbWFwLWVudHJ5XSl9LCA6c291cmNlICIoZGVmblxuIGtleVxuIFwiUmV0dXJucyB0aGUga2V5IG9mIHRoZSBtYXAgZW50cnkuXCJcbiBbbWFwLWVudHJ5XVxuICgta2V5IG1hcC1lbnRyeSkpXG4ifSB7OnN5bSBsb25ncywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmbiBsb25ncyBbeF0geClcbiJ9IHs6c3ltIG5vdD0sIDptZXRhIHs6ZG9jICJTYW1lIGFzIChub3QgKD0gb2JqMSBvYmoyKSkiLCA6YXJnbGlzdHMgW1t4XSBbeCB5XSBbeCB5ICYgbW9yZV1dfSwgOnNvdXJjZSAiKGRlZm5cbiBub3Q9XG4gXCJTYW1lIGFzIChub3QgKD0gb2JqMSBvYmoyKSlcIlxuIChbeF0gZmFsc2UpXG4gKFt4IHldIChub3QgKD0geCB5KSkpXG4gKFt4IHkgJiBtb3JlXSAobm90IChhcHBseSA9IHggeSBtb3JlKSkpKVxuIn0gezpzeW0gc2V0LXByaW50LWVyci1mbiEsIDptZXRhIHs6ZG9jICJTZXQgKnByaW50LWVyci1mbiogdG8gZi4iLCA6YXJnbGlzdHMgKFtmXSl9LCA6c291cmNlICIoZGVmblxuIHNldC1wcmludC1lcnItZm4hXG4gXCJTZXQgKnByaW50LWVyci1mbiogdG8gZi5cIlxuIFtmXVxuIChzZXQhICpwcmludC1lcnItZm4qIGYpKVxuIn0gezpzeW0gZmFzdC1wYXRoLXByb3RvY29scywgOm1ldGEge30sIDpzb3VyY2UgIihkZWZcbiBmYXN0LXBhdGgtcHJvdG9jb2xzXG4gXCJwcm90b2NvbCBmcW4gLT4gW3BhcnRpdGlvbiBudW1iZXIsIGJpdF1cIlxuICh6aXBtYXBcbiAgKG1hcFxuICAgKGZuKiBbcDFfXzQyODg1I10gKHN5bWJvbCBcImNsanMuY29yZVwiIChjb3JlL3N0ciBwMV9fNDI4ODUjKSkpXG4gICAnW0lGblxuICAgICBJQ291bnRlZFxuICAgICBJRW1wdHlhYmxlQ29sbGVjdGlvblxuICAgICBJQ29sbGVjdGlvblxuICAgICBJSW5kZXhlZFxuICAgICBBU2VxXG4gICAgIElTZXFcbiAgICAgSU5leHRcbiAgICAgSUxvb2t1cFxuICAgICBJQXNzb2NpYXRpdmVcbiAgICAgSU1hcFxuICAgICBJTWFwRW50cnlcbiAgICAgSVNldFxuICAgICBJU3RhY2tcbiAgICAgSVZlY3RvclxuICAgICBJRGVyZWZcbiAgICAgSURlcmVmV2l0aFRpbWVvdXRcbiAgICAgSU1ldGFcbiAgICAgSVdpdGhNZXRhXG4gICAgIElSZWR1Y2VcbiAgICAgSUtWUmVkdWNlXG4gICAgIElFcXVpdlxuICAgICBJSGFzaFxuICAgICBJU2VxYWJsZVxuICAgICBJU2VxdWVudGlhbFxuICAgICBJTGlzdFxuICAgICBJUmVjb3JkXG4gICAgIElSZXZlcnNpYmxlXG4gICAgIElTb3J0ZWRcbiAgICAgSVByaW50V2l0aFdyaXRlclxuICAgICBJV3JpdGVyXG4gICAgIElQcmludFdpdGhXcml0ZXJcbiAgICAgSVBlbmRpbmdcbiAgICAgSVdhdGNoYWJsZVxuICAgICBJRWRpdGFibGVDb2xsZWN0aW9uXG4gICAgIElUcmFuc2llbnRDb2xsZWN0aW9uXG4gICAgIElUcmFuc2llbnRBc3NvY2lhdGl2ZVxuICAgICBJVHJhbnNpZW50TWFwXG4gICAgIElUcmFuc2llbnRWZWN0b3JcbiAgICAgSVRyYW5zaWVudFNldFxuICAgICBJTXVsdGlGblxuICAgICBJQ2h1bmtlZFNlcVxuICAgICBJQ2h1bmtlZE5leHRcbiAgICAgSUNvbXBhcmFibGVcbiAgICAgSU5hbWVkXG4gICAgIElDbG9uZWFibGVcbiAgICAgSUF0b21cbiAgICAgSVJlc2V0XG4gICAgIElTd2FwXG4gICAgIElJdGVyYWJsZV0pXG4gIChpdGVyYXRlXG4gICAoY29yZS9mblxuICAgIFtbcCBiXV1cbiAgICAoaWZcbiAgICAgKGNvcmUvPT0gMjE0NzQ4MzY0OCBiKVxuICAgICBbKGNvcmUvaW5jIHApIDFdXG4gICAgIFtwICM/KDpjbGogKGNvcmUvYml0LXNoaWZ0LWxlZnQgYiAxKSA6Y2xqcyAoY29yZS8qIDIgYikpXSkpXG4gICBbMCAxXSkpKVxuIn0gezpzeW0gc3RyaW5nPywgOm1ldGEgezpkb2MgIlJldHVybnMgdHJ1ZSBpZiB4IGlzIGEgSmF2YVNjcmlwdCBzdHJpbmcuIiwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBzdHJpbmc/XG4gXCJSZXR1cm5zIHRydWUgaWYgeCBpcyBhIEphdmFTY3JpcHQgc3RyaW5nLlwiXG4gW3hdXG4gKGlkZW50aWNhbD8gXCJzdHJpbmdcIiAoZ29vZy90eXBlT2YgeCkpKVxuIn0gezpzeW0gdXJpPywgOm1ldGEgezpkb2MgIlJldHVybnMgdHJ1ZSB4IGlzIGEgZ29vZy5VcmkgaW5zdGFuY2UuIiwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm5cbiB1cmk/XG4gXCJSZXR1cm5zIHRydWUgeCBpcyBhIGdvb2cuVXJpIGluc3RhbmNlLlwiXG4gezphZGRlZCBcIjEuOVwifVxuIFt4XVxuIChpbnN0YW5jZT8gZ29vZy5VcmkgeCkpXG4ifSB7OnN5bSBlczYtaXRlcmF0b3IsIDptZXRhIHs6ZG9jICJFWFBFUklNRU5UQUw6IFJldHVybiBhIEVTMjAxNSBjb21wYXRpYmxlIGl0ZXJhdG9yIGZvciBjb2xsLiIsIDphcmdsaXN0cyAoW2NvbGxdKX0sIDpzb3VyY2UgIihkZWZuXG4gZXM2LWl0ZXJhdG9yXG4gXCJFWFBFUklNRU5UQUw6IFJldHVybiBhIEVTMjAxNSBjb21wYXRpYmxlIGl0ZXJhdG9yIGZvciBjb2xsLlwiXG4gW2NvbGxdXG4gKEVTNkl0ZXJhdG9yLiAoc2VxIGNvbGwpKSlcbiJ9IHs6c3ltIHByLXN0ci13aXRoLW9wdHMsIDptZXRhIHs6ZG9jICJQcmludHMgYSBzZXF1ZW5jZSBvZiBvYmplY3RzIHRvIGEgc3RyaW5nLCBvYnNlcnZpbmcgYWxsIHRoZVxuICBvcHRpb25zIGdpdmVuIGluIG9wdHMiLCA6YXJnbGlzdHMgKFtvYmpzIG9wdHNdKX0sIDpzb3VyY2UgIihkZWZuXG4gcHItc3RyLXdpdGgtb3B0c1xuIFwiUHJpbnRzIGEgc2VxdWVuY2Ugb2Ygb2JqZWN0cyB0byBhIHN0cmluZywgb2JzZXJ2aW5nIGFsbCB0aGVcXG4gIG9wdGlvbnMgZ2l2ZW4gaW4gb3B0c1wiXG4gW29ianMgb3B0c11cbiAoaWYgKGVtcHR5PyBvYmpzKSBcIlwiIChzdHIgKHByLXNiLXdpdGgtb3B0cyBvYmpzIG9wdHMpKSkpXG4ifSB7OnN5bSBtMy1DMiwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgbTMtQzIgKGludCA0NjE4NDU5MDcpKVxuIn0gezpzeW0gKnByaW50LW5ld2xpbmUqLCA6bWV0YSB7OmRvYyAiV2hlbiBzZXQgdG8gbG9naWNhbCBmYWxzZSB3aWxsIGRyb3AgbmV3bGluZXMgZnJvbSBwcmludGluZyBjYWxscy5cbiAgVGhpcyBpcyB0byB3b3JrIGFyb3VuZCB0aGUgaW1wbGljaXQgbmV3bGluZXMgZW1pdHRlZCBieSBzdGFuZGFyZCBKYXZhU2NyaXB0XG4gIGNvbnNvbGUgb2JqZWN0cy4ifSwgOnNvdXJjZSAiKGRlZiAqcHJpbnQtbmV3bGluZSogdHJ1ZSlcbiJ9IHs6c3ltIHVuY2hlY2tlZC1tdWx0aXBseS1pbnQsIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRoZSBwcm9kdWN0IG9mIG51bXMuICgqKSByZXR1cm5zIDEuIiwgOmFyZ2xpc3RzIFtbXSBbeF0gW3ggeV0gW3ggeSAmIG1vcmVdXX0sIDpzb3VyY2UgIihkZWZuXG4gdW5jaGVja2VkLW11bHRpcGx5LWludFxuIFwiUmV0dXJucyB0aGUgcHJvZHVjdCBvZiBudW1zLiAoKikgcmV0dXJucyAxLlwiXG4gKFtdIDEpXG4gKFt4XSB4KVxuIChbeCB5XSAoY2xqcy5jb3JlL3VuY2hlY2tlZC1tdWx0aXBseS1pbnQgeCB5KSlcbiAoW3ggeSAmIG1vcmVdXG4gIChyZWR1Y2VcbiAgIHVuY2hlY2tlZC1tdWx0aXBseS1pbnRcbiAgIChjbGpzLmNvcmUvdW5jaGVja2VkLW11bHRpcGx5LWludCB4IHkpXG4gICBtb3JlKSkpXG4ifSB7OnN5bSBjaHVuay1yZXN0LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3NdKX0sIDpzb3VyY2UgIihkZWZuIGNodW5rLXJlc3QgW3NdICgtY2h1bmtlZC1yZXN0IHMpKVxuIn0gezpzeW0gcmVtb3ZlLWFsbC1tZXRob2RzLCA6bWV0YSB7OmRvYyAiUmVtb3ZlcyBhbGwgb2YgdGhlIG1ldGhvZHMgb2YgbXVsdGltZXRob2QuIiwgOmFyZ2xpc3RzIChbbXVsdGlmbl0pfSwgOnNvdXJjZSAiKGRlZm5cbiByZW1vdmUtYWxsLW1ldGhvZHNcbiBcIlJlbW92ZXMgYWxsIG9mIHRoZSBtZXRob2RzIG9mIG11bHRpbWV0aG9kLlwiXG4gW211bHRpZm5dXG4gKC1yZXNldCBtdWx0aWZuKSlcbiJ9IHs6c3ltIHRyYW1wb2xpbmUsIDptZXRhIHs6ZG9jICJ0cmFtcG9saW5lIGNhbiBiZSB1c2VkIHRvIGNvbnZlcnQgYWxnb3JpdGhtcyByZXF1aXJpbmcgbXV0dWFsXG4gIHJlY3Vyc2lvbiB3aXRob3V0IHN0YWNrIGNvbnN1bXB0aW9uLiBDYWxscyBmIHdpdGggc3VwcGxpZWQgYXJncywgaWZcbiAgYW55LiBJZiBmIHJldHVybnMgYSBmbiwgY2FsbHMgdGhhdCBmbiB3aXRoIG5vIGFyZ3VtZW50cywgYW5kXG4gIGNvbnRpbnVlcyB0byByZXBlYXQsIHVudGlsIHRoZSByZXR1cm4gdmFsdWUgaXMgbm90IGEgZm4sIHRoZW5cbiAgcmV0dXJucyB0aGF0IG5vbi1mbiB2YWx1ZS4gTm90ZSB0aGF0IGlmIHlvdSB3YW50IHRvIHJldHVybiBhIGZuIGFzIGFcbiAgZmluYWwgdmFsdWUsIHlvdSBtdXN0IHdyYXAgaXQgaW4gc29tZSBkYXRhIHN0cnVjdHVyZSBhbmQgdW5wYWNrIGl0XG4gIGFmdGVyIHRyYW1wb2xpbmUgcmV0dXJucy4iLCA6YXJnbGlzdHMgW1tmXSBbZiAmIGFyZ3NdXX0sIDpzb3VyY2UgIihkZWZuXG4gdHJhbXBvbGluZVxuIFwidHJhbXBvbGluZSBjYW4gYmUgdXNlZCB0byBjb252ZXJ0IGFsZ29yaXRobXMgcmVxdWlyaW5nIG11dHVhbFxcbiAgcmVjdXJzaW9uIHdpdGhvdXQgc3RhY2sgY29uc3VtcHRpb24uIENhbGxzIGYgd2l0aCBzdXBwbGllZCBhcmdzLCBpZlxcbiAgYW55LiBJZiBmIHJldHVybnMgYSBmbiwgY2FsbHMgdGhhdCBmbiB3aXRoIG5vIGFyZ3VtZW50cywgYW5kXFxuICBjb250aW51ZXMgdG8gcmVwZWF0LCB1bnRpbCB0aGUgcmV0dXJuIHZhbHVlIGlzIG5vdCBhIGZuLCB0aGVuXFxuICByZXR1cm5zIHRoYXQgbm9uLWZuIHZhbHVlLiBOb3RlIHRoYXQgaWYgeW91IHdhbnQgdG8gcmV0dXJuIGEgZm4gYXMgYVxcbiAgZmluYWwgdmFsdWUsIHlvdSBtdXN0IHdyYXAgaXQgaW4gc29tZSBkYXRhIHN0cnVjdHVyZSBhbmQgdW5wYWNrIGl0XFxuICBhZnRlciB0cmFtcG9saW5lIHJldHVybnMuXCJcbiAoW2ZdIChsZXQgW3JldCAoZildIChpZiAoZm4/IHJldCkgKHJlY3VyIHJldCkgcmV0KSkpXG4gKFtmICYgYXJnc10gKHRyYW1wb2xpbmUgKGZuKiBbXSAoYXBwbHkgZiBhcmdzKSkpKSlcbiJ9IHs6c3ltIGRvdWJsZT8sIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRydWUgZm9yIEphdmFTY3JpcHQgbnVtYmVycywgZmFsc2Ugb3RoZXJ3aXNlLiIsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuXG4gZG91YmxlP1xuIFwiUmV0dXJucyB0cnVlIGZvciBKYXZhU2NyaXB0IG51bWJlcnMsIGZhbHNlIG90aGVyd2lzZS5cIlxuIFt4XVxuIChudW1iZXI/IHgpKVxuIn0gezpzeW0gdmVjLCA6bWV0YSB7OmRvYyAiQ3JlYXRlcyBhIG5ldyB2ZWN0b3IgY29udGFpbmluZyB0aGUgY29udGVudHMgb2YgY29sbC4gSmF2YVNjcmlwdCBhcnJheXNcbiAgd2lsbCBiZSBhbGlhc2VkIGFuZCBzaG91bGQgbm90IGJlIG1vZGlmaWVkLiIsIDphcmdsaXN0cyAoW2NvbGxdKX0sIDpzb3VyY2UgIihkZWZuXG4gdmVjXG4gXCJDcmVhdGVzIGEgbmV3IHZlY3RvciBjb250YWluaW5nIHRoZSBjb250ZW50cyBvZiBjb2xsLiBKYXZhU2NyaXB0IGFycmF5c1xcbiAgd2lsbCBiZSBhbGlhc2VkIGFuZCBzaG91bGQgbm90IGJlIG1vZGlmaWVkLlwiXG4gW2NvbGxdXG4gKGNvbmRcbiAgKG1hcC1lbnRyeT8gY29sbClcbiAgWyhrZXkgY29sbCkgKHZhbCBjb2xsKV1cbiAgKHZlY3Rvcj8gY29sbClcbiAgKHdpdGgtbWV0YSBjb2xsIG5pbClcbiAgKGFycmF5PyBjb2xsKVxuICAoLmZyb21BcnJheSBQZXJzaXN0ZW50VmVjdG9yIGNvbGwgdHJ1ZSlcbiAgOmVsc2VcbiAgKC1wZXJzaXN0ZW50IVxuICAgKHJlZHVjZSAtY29uaiEgKC1hcy10cmFuc2llbnQgKC4tRU1QVFkgUGVyc2lzdGVudFZlY3RvcikpIGNvbGwpKSkpXG4ifSB7OnN5bSAqcHJpbnQtbWV0YSosIDptZXRhIHs6ZG9jICJJZiBzZXQgdG8gbG9naWNhbCB0cnVlLCB3aGVuIHByaW50aW5nIGFuIG9iamVjdCwgaXRzIG1ldGFkYXRhIHdpbGwgYWxzb1xuICBiZSBwcmludGVkIGluIGEgZm9ybSB0aGF0IGNhbiBiZSByZWFkIGJhY2sgYnkgdGhlIHJlYWRlci5cblxuICBEZWZhdWx0cyB0byBmYWxzZS4ifSwgOnNvdXJjZSAiKGRlZiAqcHJpbnQtbWV0YSogZmFsc2UpXG4ifSB7OnN5bSAtbm90aWZ5LXdhdGNoZXMsIDptZXRhIHs6ZG9jICJDYWxscyBhbGwgd2F0Y2hlcnMgd2l0aCB0aGlzLCBvbGR2YWwgYW5kIG5ld3ZhbC4iLCA6YXJnbGlzdHMgKFt0aGlzIG9sZHZhbCBuZXd2YWxdKX0sIDpwcm90b2NvbCBJV2F0Y2hhYmxlfSB7OnN5bSBpbnQsIDptZXRhIHs6ZG9jICJDb2VyY2UgdG8gaW50IGJ5IHN0cmlwcGluZyBkZWNpbWFsIHBsYWNlcy4iLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmbiBpbnQgXCJDb2VyY2UgdG8gaW50IGJ5IHN0cmlwcGluZyBkZWNpbWFsIHBsYWNlcy5cIiBbeF0gKGJpdC1vciB4IDApKVxuIn0gezpzeW0gbWFwLWVudHJ5PywgOm1ldGEgezpkb2MgIlJldHVybnMgdHJ1ZSBpZiB4IHNhdGlzZmllcyBJTWFwRW50cnkiLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmblxuIG1hcC1lbnRyeT9cbiBcIlJldHVybnMgdHJ1ZSBpZiB4IHNhdGlzZmllcyBJTWFwRW50cnlcIlxuIFt4XVxuIChpbXBsZW1lbnRzPyBJTWFwRW50cnkgeCkpXG4ifSB7OnN5bSByYW5kLCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIHJhbmRvbSBmbG9hdGluZyBwb2ludCBudW1iZXIgYmV0d2VlbiAwIChpbmNsdXNpdmUpIGFuZFxuICBuIChkZWZhdWx0IDEpIChleGNsdXNpdmUpLiIsIDphcmdsaXN0cyBbW10gW25dXX0sIDpzb3VyY2UgIihkZWZuXG4gcmFuZFxuIFwiUmV0dXJucyBhIHJhbmRvbSBmbG9hdGluZyBwb2ludCBudW1iZXIgYmV0d2VlbiAwIChpbmNsdXNpdmUpIGFuZFxcbiAgbiAoZGVmYXVsdCAxKSAoZXhjbHVzaXZlKS5cIlxuIChbXSAocmFuZCAxKSlcbiAoW25dICgqIChNYXRoL3JhbmRvbSkgbikpKVxuIn0gezpzeW0gc2Vjb25kLCA6bWV0YSB7OmRvYyAiU2FtZSBhcyAoZmlyc3QgKG5leHQgeCkpIiwgOmFyZ2xpc3RzIChbY29sbF0pfSwgOnNvdXJjZSAiKGRlZm4gc2Vjb25kIFwiU2FtZSBhcyAoZmlyc3QgKG5leHQgeCkpXCIgW2NvbGxdIChmaXJzdCAobmV4dCBjb2xsKSkpXG4ifSB7OnN5bSBmaW5kLW5zLW9iaiwgOm1ldGEgezpkb2MgIkJvb3RzdHJhcCBvbmx5LiIsIDphcmdsaXN0cyAoW25zXSl9LCA6c291cmNlICIoZGVmblxuIGZpbmQtbnMtb2JqXG4gXCJCb290c3RyYXAgb25seS5cIlxuIFtuc11cbiAobGV0XG4gIFttdW5nZWQtbnMgKG11bmdlIChzdHIgbnMpKSBzZWdzICguc3BsaXQgbXVuZ2VkLW5zIFwiLlwiKV1cbiAgKGNhc2VcbiAgICp0YXJnZXQqXG4gICBcIm5vZGVqc1wiXG4gICAoaWZcbiAgICBqcy9DT01QSUxFRFxuICAgIChmaW5kLW5zLW9iaipcbiAgICAgKHRyeVxuICAgICAgKGxldFxuICAgICAgIFtjdHh0IChqcy9ldmFsIChmaXJzdCBzZWdzKSldXG4gICAgICAgKHdoZW4gKGFuZCBjdHh0IChvYmplY3Q/IGN0eHQpKSBjdHh0KSlcbiAgICAgIChjYXRjaCBqcy9SZWZlcmVuY2VFcnJvciBlIG5pbCkpXG4gICAgIChuZXh0IHNlZ3MpKVxuICAgIChmaW5kLW5zLW9iaiogZ29vZy9nbG9iYWwgc2VncykpXG4gICAoXCJkZWZhdWx0XCIgXCJ3ZWJ3b3JrZXJcIilcbiAgIChmaW5kLW5zLW9iaiogZ29vZy9nbG9iYWwgc2VncylcbiAgICh0aHJvd1xuICAgIChqcy9FcnJvci5cbiAgICAgKHN0ciBcImZpbmQtbnMtb2JqIG5vdCBzdXBwb3J0ZWQgZm9yIHRhcmdldCBcIiAqdGFyZ2V0KikpKSkpKVxuIn0gezpzeW0gSUVkaXRhYmxlQ29sbGVjdGlvbiwgOm1ldGEgezpkb2MgIlByb3RvY29sIGZvciBjb2xsZWN0aW9ucyB3aGljaCBjYW4gdHJhbnNmb3JtZWQgdG8gdHJhbnNpZW50cy4ifSwgOm1ldGhvZHMgKC1hcy10cmFuc2llbnQpfSB7OnN5bSBoYXNoLWNvbWJpbmUsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbc2VlZCBoYXNoXSl9LCA6c291cmNlICIoZGVmblxuIGhhc2gtY29tYmluZVxuIFtzZWVkIGhhc2hdXG4gKGJpdC14b3JcbiAgc2VlZFxuICAoKyBoYXNoIDI2NTQ0MzU3NjkgKGJpdC1zaGlmdC1sZWZ0IHNlZWQgNikgKGJpdC1zaGlmdC1yaWdodCBzZWVkIDIpKSkpXG4ifSB7OnN5bSA+LCA6bWV0YSB7OmRvYyAiUmV0dXJucyBub24tbmlsIGlmIG51bXMgYXJlIGluIG1vbm90b25pY2FsbHkgZGVjcmVhc2luZyBvcmRlcixcbiAgb3RoZXJ3aXNlIGZhbHNlLiIsIDphcmdsaXN0cyBbW3hdIFt4IHldIFt4IHkgJiBtb3JlXV19LCA6c291cmNlICIoZGVmblxuID5cbiBcIlJldHVybnMgbm9uLW5pbCBpZiBudW1zIGFyZSBpbiBtb25vdG9uaWNhbGx5IGRlY3JlYXNpbmcgb3JkZXIsXFxuICBvdGhlcndpc2UgZmFsc2UuXCJcbiAoW3hdIHRydWUpXG4gKFt4IHldIChjbGpzLmNvcmUvPiB4IHkpKVxuIChbeCB5ICYgbW9yZV1cbiAgKGlmXG4gICAoY2xqcy5jb3JlLz4geCB5KVxuICAgKGlmXG4gICAgKG5leHQgbW9yZSlcbiAgICAocmVjdXIgeSAoZmlyc3QgbW9yZSkgKG5leHQgbW9yZSkpXG4gICAgKGNsanMuY29yZS8+IHkgKGZpcnN0IG1vcmUpKSlcbiAgIGZhbHNlKSkpXG4ifSB7OnN5bSAtbmFtZSwgOm1ldGEgezpkb2MgIlJldHVybnMgdGhlIG5hbWUgU3RyaW5nIG9mIHguIiwgOmFyZ2xpc3RzIChbeF0pfSwgOnByb3RvY29sIElOYW1lZH0gezpzeW0gcmVwbGFjZSwgOm1ldGEgezpkb2MgIkdpdmVuIGEgbWFwIG9mIHJlcGxhY2VtZW50IHBhaXJzIGFuZCBhIHZlY3Rvci9jb2xsZWN0aW9uLCByZXR1cm5zIGFcbiAgdmVjdG9yL3NlcSB3aXRoIGFueSBlbGVtZW50cyA9IGEga2V5IGluIHNtYXAgcmVwbGFjZWQgd2l0aCB0aGVcbiAgY29ycmVzcG9uZGluZyB2YWwgaW4gc21hcC4gIFJldHVybnMgYSB0cmFuc2R1Y2VyIHdoZW4gbm8gY29sbGVjdGlvblxuICBpcyBwcm92aWRlZC4iLCA6YXJnbGlzdHMgW1tzbWFwXSBbc21hcCBjb2xsXV19LCA6c291cmNlICIoZGVmblxuIHJlcGxhY2VcbiBcIkdpdmVuIGEgbWFwIG9mIHJlcGxhY2VtZW50IHBhaXJzIGFuZCBhIHZlY3Rvci9jb2xsZWN0aW9uLCByZXR1cm5zIGFcXG4gIHZlY3Rvci9zZXEgd2l0aCBhbnkgZWxlbWVudHMgPSBhIGtleSBpbiBzbWFwIHJlcGxhY2VkIHdpdGggdGhlXFxuICBjb3JyZXNwb25kaW5nIHZhbCBpbiBzbWFwLiAgUmV0dXJucyBhIHRyYW5zZHVjZXIgd2hlbiBubyBjb2xsZWN0aW9uXFxuICBpcyBwcm92aWRlZC5cIlxuIChbc21hcF1cbiAgKG1hcFxuICAgKGZuKlxuICAgIFtwMV9fNDMxNjAjXVxuICAgIChpZi1sZXQgW2UgKGZpbmQgc21hcCBwMV9fNDMxNjAjKV0gKHZhbCBlKSBwMV9fNDMxNjAjKSkpKVxuIChbc21hcCBjb2xsXVxuICAoaWZcbiAgICh2ZWN0b3I/IGNvbGwpXG4gICAobGV0XG4gICAgW24gKGNvdW50IGNvbGwpXVxuICAgIChyZWR1Y2VcbiAgICAgKGZuXG4gICAgICBbdiBpXVxuICAgICAgKGlmLWxldCBbZSAoZmluZCBzbWFwIChudGggdiBpKSldIChhc3NvYyB2IGkgKHNlY29uZCBlKSkgdikpXG4gICAgIGNvbGxcbiAgICAgKHRha2UgbiAoaXRlcmF0ZSBpbmMgMCkpKSlcbiAgIChtYXBcbiAgICAoZm4qXG4gICAgIFtwMV9fNDMxNjEjXVxuICAgICAoaWYtbGV0IFtlIChmaW5kIHNtYXAgcDFfXzQzMTYxIyldIChzZWNvbmQgZSkgcDFfXzQzMTYxIykpXG4gICAgY29sbCkpKSlcbiJ9IHs6c3ltIGludD8sIDptZXRhIHs6ZG9jICJSZXR1cm4gdHJ1ZSBpZiB4IHNhdGlzZmllcyBpbnRlZ2VyPyBvciBpcyBhbiBpbnN0YW5jZSBvZiBnb29nLm1hdGguSW50ZWdlclxuICAgb3IgZ29vZy5tYXRoLkxvbmcuIiwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBpbnQ/XG4gXCJSZXR1cm4gdHJ1ZSBpZiB4IHNhdGlzZmllcyBpbnRlZ2VyPyBvciBpcyBhbiBpbnN0YW5jZSBvZiBnb29nLm1hdGguSW50ZWdlclxcbiAgIG9yIGdvb2cubWF0aC5Mb25nLlwiXG4gW3hdXG4gKG9yXG4gIChpbnRlZ2VyPyB4KVxuICAoaW5zdGFuY2U/IGdvb2cubWF0aC5JbnRlZ2VyIHgpXG4gIChpbnN0YW5jZT8gZ29vZy5tYXRoLkxvbmcgeCkpKVxuIn0gezpzeW0gYXNzb2NpYXRpdmU/LCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0cnVlIGlmIGNvbGwgaW1wbGVtZW50cyBJQXNzb2NpYXRpdmUiLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmblxuIGFzc29jaWF0aXZlP1xuIFwiUmV0dXJucyB0cnVlIGlmIGNvbGwgaW1wbGVtZW50cyBJQXNzb2NpYXRpdmVcIlxuIFt4XVxuIChzYXRpc2ZpZXM/IElBc3NvY2lhdGl2ZSB4KSlcbiJ9IHs6c3ltIHVuY2hlY2tlZC1pbnQsIDptZXRhIHs6ZG9jICJDb2VyY2UgdG8gaW50IGJ5IHN0cmlwcGluZyBkZWNpbWFsIHBsYWNlcy4iLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmblxuIHVuY2hlY2tlZC1pbnRcbiBcIkNvZXJjZSB0byBpbnQgYnkgc3RyaXBwaW5nIGRlY2ltYWwgcGxhY2VzLlwiXG4gW3hdXG4gKGZpeCB4KSlcbiJ9IHs6c3ltIGpzLWtleXMsIDptZXRhIHs6ZG9jICJSZXR1cm4gdGhlIEphdmFTY3JpcHQga2V5cyBmb3IgYW4gb2JqZWN0LiIsIDphcmdsaXN0cyAoW29ial0pfSwgOnNvdXJjZSAiKGRlZm5cbiBqcy1rZXlzXG4gXCJSZXR1cm4gdGhlIEphdmFTY3JpcHQga2V5cyBmb3IgYW4gb2JqZWN0LlwiXG4gW29ial1cbiAoZ29iamVjdC9nZXRLZXlzIG9iaikpXG4ifSB7OnN5bSBpbnN0LW1zKiwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtpbnN0XSl9LCA6cHJvdG9jb2wgSW5zdH0gezpzeW0ga2V5d29yZD8sIDptZXRhIHs6ZG9jICJSZXR1cm4gdHJ1ZSBpZiB4IGlzIGEgS2V5d29yZCIsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuXG4ga2V5d29yZD9cbiBcIlJldHVybiB0cnVlIGlmIHggaXMgYSBLZXl3b3JkXCJcbiBbeF1cbiAoaW5zdGFuY2U/IEtleXdvcmQgeCkpXG4ifSB7OnN5bSBhcnJheS1pdGVyLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuIGFycmF5LWl0ZXIgW3hdIChBcnJheUl0ZXIuIHggMCkpXG4ifSB7OnN5bSBmb3JjZSwgOm1ldGEgezpkb2MgIklmIHggaXMgYSBEZWxheSwgcmV0dXJucyB0aGUgKHBvc3NpYmx5IGNhY2hlZCkgdmFsdWUgb2YgaXRzIGV4cHJlc3Npb24sIGVsc2UgcmV0dXJucyB4IiwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBmb3JjZVxuIFwiSWYgeCBpcyBhIERlbGF5LCByZXR1cm5zIHRoZSAocG9zc2libHkgY2FjaGVkKSB2YWx1ZSBvZiBpdHMgZXhwcmVzc2lvbiwgZWxzZSByZXR1cm5zIHhcIlxuIFt4XVxuIChpZiAoZGVsYXk/IHgpIChkZXJlZiB4KSB4KSlcbiJ9IHs6c3ltIGdyb3VwLWJ5LCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIG1hcCBvZiB0aGUgZWxlbWVudHMgb2YgY29sbCBrZXllZCBieSB0aGUgcmVzdWx0IG9mXG4gIGYgb24gZWFjaCBlbGVtZW50LiBUaGUgdmFsdWUgYXQgZWFjaCBrZXkgd2lsbCBiZSBhIHZlY3RvciBvZiB0aGVcbiAgY29ycmVzcG9uZGluZyBlbGVtZW50cywgaW4gdGhlIG9yZGVyIHRoZXkgYXBwZWFyZWQgaW4gY29sbC4iLCA6YXJnbGlzdHMgKFtmIGNvbGxdKX0sIDpzb3VyY2UgIihkZWZuXG4gZ3JvdXAtYnlcbiBcIlJldHVybnMgYSBtYXAgb2YgdGhlIGVsZW1lbnRzIG9mIGNvbGwga2V5ZWQgYnkgdGhlIHJlc3VsdCBvZlxcbiAgZiBvbiBlYWNoIGVsZW1lbnQuIFRoZSB2YWx1ZSBhdCBlYWNoIGtleSB3aWxsIGJlIGEgdmVjdG9yIG9mIHRoZVxcbiAgY29ycmVzcG9uZGluZyBlbGVtZW50cywgaW4gdGhlIG9yZGVyIHRoZXkgYXBwZWFyZWQgaW4gY29sbC5cIlxuIFtmIGNvbGxdXG4gKHBlcnNpc3RlbnQhXG4gIChyZWR1Y2VcbiAgIChmbiBbcmV0IHhdIChsZXQgW2sgKGYgeCldIChhc3NvYyEgcmV0IGsgKGNvbmogKGdldCByZXQgayBbXSkgeCkpKSlcbiAgICh0cmFuc2llbnQge30pXG4gICBjb2xsKSkpXG4ifSB7OnN5bSAtcnNlcSwgOm1ldGEgezpkb2MgIlJldHVybnMgYSBzZXEgb2YgdGhlIGl0ZW1zIGluIGNvbGwgaW4gcmV2ZXJzZWQgb3JkZXIuIiwgOmFyZ2xpc3RzIChbY29sbF0pfSwgOnByb3RvY29sIElSZXZlcnNpYmxlfSB7OnN5bSBwcm4sIDptZXRhIHs6ZG9jICJTYW1lIGFzIHByIGZvbGxvd2VkIGJ5IChuZXdsaW5lKS4iLCA6YXJnbGlzdHMgKFsmIG9ianNdKX0sIDpzb3VyY2UgIihkZWZuXG4gcHJuXG4gXCJTYW1lIGFzIHByIGZvbGxvd2VkIGJ5IChuZXdsaW5lKS5cIlxuIFsmIG9ianNdXG4gKHByLXdpdGgtb3B0cyBvYmpzIChwci1vcHRzKSlcbiAod2hlbiAqcHJpbnQtbmV3bGluZSogKG5ld2xpbmUgKHByLW9wdHMpKSkpXG4ifSB7OnN5bSBkZWZhdWx0LWRpc3BhdGNoLXZhbCwgOm1ldGEgezpkb2MgIkdpdmVuIGEgbXVsdGltZXRob2QsIHJldHVybiBpdHMgZGVmYXVsdC1kaXNwYXRjaC12YWwuIiwgOmFyZ2xpc3RzIChbbXVsdGlmbl0pfSwgOnNvdXJjZSAiKGRlZm5cbiBkZWZhdWx0LWRpc3BhdGNoLXZhbFxuIFwiR2l2ZW4gYSBtdWx0aW1ldGhvZCwgcmV0dXJuIGl0cyBkZWZhdWx0LWRpc3BhdGNoLXZhbC5cIlxuIFttdWx0aWZuXVxuICgtZGVmYXVsdC1kaXNwYXRjaC12YWwgbXVsdGlmbikpXG4ifSB7OnN5bSBqcy1pdGVyYWJsZT8sIDptZXRhIHs6ZG9jICJSZXR1cm4gdHJ1ZSBpZiB4IGhhcyBhIEphdmFTY3JpcHQgaXRlcmF0b3IgcHJvcGVydHkiLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmblxuIGpzLWl0ZXJhYmxlP1xuIFwiUmV0dXJuIHRydWUgaWYgeCBoYXMgYSBKYXZhU2NyaXB0IGl0ZXJhdG9yIHByb3BlcnR5XCJcbiBbeF1cbiAoYW5kIChub3QgKG5pbD8geCkpIChub3QgKG5pbD8gKGpzKiBcIn57fVt+e31dXCIgeCBJVEVSX1NZTUJPTCkpKSkpXG4ifSB7OnN5bSB1bmNoZWNrZWQtbXVsdGlwbHksIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRoZSBwcm9kdWN0IG9mIG51bXMuICgqKSByZXR1cm5zIDEuIiwgOmFyZ2xpc3RzIFtbXSBbeF0gW3ggeV0gW3ggeSAmIG1vcmVdXX0sIDpzb3VyY2UgIihkZWZuXG4gdW5jaGVja2VkLW11bHRpcGx5XG4gXCJSZXR1cm5zIHRoZSBwcm9kdWN0IG9mIG51bXMuICgqKSByZXR1cm5zIDEuXCJcbiAoW10gMSlcbiAoW3hdIHgpXG4gKFt4IHldIChjbGpzLmNvcmUvdW5jaGVja2VkLW11bHRpcGx5IHggeSkpXG4gKFt4IHkgJiBtb3JlXVxuICAocmVkdWNlIHVuY2hlY2tlZC1tdWx0aXBseSAoY2xqcy5jb3JlL3VuY2hlY2tlZC1tdWx0aXBseSB4IHkpIG1vcmUpKSlcbiJ9IHs6c3ltIGV2ZW4/LCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0cnVlIGlmIG4gaXMgZXZlbiwgdGhyb3dzIGFuIGV4Y2VwdGlvbiBpZiBuIGlzIG5vdCBhbiBpbnRlZ2VyIiwgOmFyZ2xpc3RzIChbbl0pfSwgOnNvdXJjZSAiKGRlZm5cbiBldmVuP1xuIFwiUmV0dXJucyB0cnVlIGlmIG4gaXMgZXZlbiwgdGhyb3dzIGFuIGV4Y2VwdGlvbiBpZiBuIGlzIG5vdCBhbiBpbnRlZ2VyXCJcbiBbbl1cbiAoaWZcbiAgKGludGVnZXI/IG4pXG4gICh6ZXJvPyAoYml0LWFuZCBuIDEpKVxuICAodGhyb3cgKGpzL0Vycm9yLiAoc3RyIFwiQXJndW1lbnQgbXVzdCBiZSBhbiBpbnRlZ2VyOiBcIiBuKSkpKSlcbiJ9IHs6c3ltIGVzNi1pdGVyYXRvci1zZXEsIDptZXRhIHs6ZG9jICJFWFBFUklNRU5UQUw6IEdpdmVuIGFuIEVTMjAxNSBjb21wYXRpYmxlIGl0ZXJhdG9yIHJldHVybiBhIHNlcS4iLCA6YXJnbGlzdHMgKFtpdGVyXSl9LCA6c291cmNlICIoZGVmblxuIGVzNi1pdGVyYXRvci1zZXFcbiBcIkVYUEVSSU1FTlRBTDogR2l2ZW4gYW4gRVMyMDE1IGNvbXBhdGlibGUgaXRlcmF0b3IgcmV0dXJuIGEgc2VxLlwiXG4gW2l0ZXJdXG4gKGxldFxuICBbdiAoLm5leHQgaXRlcildXG4gIChpZiAoLi1kb25lIHYpIG5pbCAoRVM2SXRlcmF0b3JTZXEuICguLXZhbHVlIHYpIGl0ZXIgbmlsKSkpKVxuIn0gezpzeW0gdW5jaGVja2VkLWRlYywgOm1ldGEgezpkb2MgIlJldHVybnMgYSBudW1iZXIgb25lIGxlc3MgdGhhbiB4LCBhbiBpbnQuIiwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm5cbiB1bmNoZWNrZWQtZGVjXG4gXCJSZXR1cm5zIGEgbnVtYmVyIG9uZSBsZXNzIHRoYW4geCwgYW4gaW50LlwiXG4gW3hdXG4gKGNsanMuY29yZS91bmNoZWNrZWQtZGVjIHgpKVxuIn0gezpzeW0gSW5zdCwgOm1ldGEgezpkb2MgbmlsfSwgOm1ldGhvZHMgKGluc3QtbXMqKX0gezpzeW0gcGVyc2lzdGVudC1hcnJheS1tYXAtc2VxLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2FyciBpIF9tZXRhXSl9LCA6c291cmNlICIoZGVmblxuIHBlcnNpc3RlbnQtYXJyYXktbWFwLXNlcVxuIFthcnIgaSBfbWV0YV1cbiAod2hlbiAoPD0gaSAoLSAoYWxlbmd0aCBhcnIpIDIpKSAoUGVyc2lzdGVudEFycmF5TWFwU2VxLiBhcnIgaSBfbWV0YSkpKVxuIn0gezpzeW0gdGFnZ2VkLWxpdGVyYWw/LCA6bWV0YSB7OmRvYyAiUmV0dXJuIHRydWUgaWYgdGhlIHZhbHVlIGlzIHRoZSBkYXRhIHJlcHJlc2VudGF0aW9uIG9mIGEgdGFnZ2VkIGxpdGVyYWwiLCA6YXJnbGlzdHMgKFt2YWx1ZV0pfSwgOnNvdXJjZSAiKGRlZm5cbiB0YWdnZWQtbGl0ZXJhbD9cbiBcIlJldHVybiB0cnVlIGlmIHRoZSB2YWx1ZSBpcyB0aGUgZGF0YSByZXByZXNlbnRhdGlvbiBvZiBhIHRhZ2dlZCBsaXRlcmFsXCJcbiBbdmFsdWVdXG4gKGluc3RhbmNlPyBUYWdnZWRMaXRlcmFsIHZhbHVlKSlcbiJ9IHs6c3ltIGRvdWJsZS1hcnJheSwgOm1ldGEgezpkb2MgIkNyZWF0ZXMgYW4gYXJyYXkgb2YgZG91Ymxlcy4gRG9lcyBub3QgY29lcmNlIGFycmF5LCBwcm92aWRlZCBmb3IgY29tcGF0aWJpbGl0eVxuICB3aXRoIENsb2p1cmUuIiwgOmFyZ2xpc3RzIFtbc2l6ZS1vci1zZXFdIFtzaXplIGluaXQtdmFsLW9yLXNlcV1dfSwgOnNvdXJjZSAiKGRlZm5cbiBkb3VibGUtYXJyYXlcbiBcIkNyZWF0ZXMgYW4gYXJyYXkgb2YgZG91Ymxlcy4gRG9lcyBub3QgY29lcmNlIGFycmF5LCBwcm92aWRlZCBmb3IgY29tcGF0aWJpbGl0eVxcbiAgd2l0aCBDbG9qdXJlLlwiXG4gKFtzaXplLW9yLXNlcV1cbiAgKGlmXG4gICAobnVtYmVyPyBzaXplLW9yLXNlcSlcbiAgIChkb3VibGUtYXJyYXkgc2l6ZS1vci1zZXEgbmlsKVxuICAgKGludG8tYXJyYXkgc2l6ZS1vci1zZXEpKSlcbiAoW3NpemUgaW5pdC12YWwtb3Itc2VxXVxuICAobGV0XG4gICBbYSAobWFrZS1hcnJheSBzaXplKV1cbiAgIChpZlxuICAgIChzZXE/IGluaXQtdmFsLW9yLXNlcSlcbiAgICAobGV0XG4gICAgIFtzIChzZXEgaW5pdC12YWwtb3Itc2VxKV1cbiAgICAgKGxvb3BcbiAgICAgIFtpIDAgcyBzXVxuICAgICAgKGlmXG4gICAgICAgKGFuZCBzICg8IGkgc2l6ZSkpXG4gICAgICAgKGRvIChhc2V0IGEgaSAoZmlyc3QgcykpIChyZWN1ciAoaW5jIGkpIChuZXh0IHMpKSlcbiAgICAgICBhKSkpXG4gICAgKGRvIChkb3RpbWVzIFtpIHNpemVdIChhc2V0IGEgaSBpbml0LXZhbC1vci1zZXEpKSBhKSkpKSlcbiJ9IHs6c3ltIGNyZWF0ZS1ucywgOm1ldGEgezpkb2MgIkNyZWF0ZSBhIG5ldyBuYW1lc3BhY2UgbmFtZWQgYnkgdGhlIHN5bWJvbC4gQm9vdHN0cmFwIG9ubHkuIiwgOmFyZ2xpc3RzIFtbc3ltXSBbc3ltIG5zLW9ial1dfSwgOnNvdXJjZSAiKGRlZm5cbiBjcmVhdGUtbnNcbiBcIkNyZWF0ZSBhIG5ldyBuYW1lc3BhY2UgbmFtZWQgYnkgdGhlIHN5bWJvbC4gQm9vdHN0cmFwIG9ubHkuXCJcbiAoW3N5bV0gKGNyZWF0ZS1ucyBzeW0gKGZpbmQtbnMtb2JqIHN5bSkpKVxuIChbc3ltIG5zLW9ial0gKE5hbWVzcGFjZS4gbnMtb2JqIHN5bSkpKVxuIn0gezpzeW0gZGVmbiwgOm1ldGEgezphcmdsaXN0cyAocXVvdGUgKFtuYW1lIGRvYy1zdHJpbmc/IGF0dHItbWFwPyBbcGFyYW1zKl0gcHJlcG9zdC1tYXA/IGJvZHldIFtuYW1lIGRvYy1zdHJpbmc/IGF0dHItbWFwPyAoW3BhcmFtcypdIHByZXBvc3QtbWFwPyBib2R5KSArIGF0dHItbWFwP10pKSwgOmRvYyAiU2FtZSBhcyAoZGVmIG5hbWUgKGNvcmUvZm4gW3BhcmFtcyogXSBleHBycyopKSBvciAoZGVmXG4gICAgbmFtZSAoY29yZS9mbiAoW3BhcmFtcyogXSBleHBycyopKykpIHdpdGggYW55IGRvYy1zdHJpbmcgb3IgYXR0cnMgYWRkZWRcbiAgICB0byB0aGUgdmFyIG1ldGFkYXRhLiBwcmVwb3N0LW1hcCBkZWZpbmVzIGEgbWFwIHdpdGggb3B0aW9uYWwga2V5c1xuICAgIDpwcmUgYW5kIDpwb3N0IHRoYXQgY29udGFpbiBjb2xsZWN0aW9ucyBvZiBwcmUgb3IgcG9zdCBjb25kaXRpb25zLiJ9LCA6c291cmNlICIoZGVmXG4gZGVmblxuIChjb3JlL2ZuXG4gIGRlZm5cbiAgWyZmb3JtICZlbnYgbmFtZSAmIGZkZWNsXVxuICAoaWZcbiAgIChjb3JlL2luc3RhbmNlPyAjPyg6Y2xqIGNsb2p1cmUubGFuZy5TeW1ib2wgOmNsanMgU3ltYm9sKSBuYW1lKVxuICAgbmlsXG4gICAodGhyb3dcbiAgICAjPyg6Y2xqIChJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24uIFwiRmlyc3QgYXJndW1lbnQgdG8gZGVmbiBtdXN0IGJlIGEgc3ltYm9sXCIpIDpjbGpzIChqcy9FcnJvci4gXCJGaXJzdCBhcmd1bWVudCB0byBkZWZuIG11c3QgYmUgYSBzeW1ib2xcIikpKSlcbiAgKGNvcmUvbGV0XG4gICBbbVxuICAgIChpZiAoY29yZS9zdHJpbmc/IChmaXJzdCBmZGVjbCkpIHs6ZG9jIChmaXJzdCBmZGVjbCl9IHt9KVxuICAgIGZkZWNsXG4gICAgKGlmIChjb3JlL3N0cmluZz8gKGZpcnN0IGZkZWNsKSkgKG5leHQgZmRlY2wpIGZkZWNsKVxuICAgIG1cbiAgICAoaWYgKG1hcD8gKGZpcnN0IGZkZWNsKSkgKGNvbmogbSAoZmlyc3QgZmRlY2wpKSBtKVxuICAgIGZkZWNsXG4gICAgKGlmIChtYXA/IChmaXJzdCBmZGVjbCkpIChuZXh0IGZkZWNsKSBmZGVjbClcbiAgICBmZGVjbFxuICAgIChpZiAodmVjdG9yPyAoZmlyc3QgZmRlY2wpKSAoY29yZS9saXN0IGZkZWNsKSBmZGVjbClcbiAgICBtXG4gICAgKGlmIChtYXA/IChsYXN0IGZkZWNsKSkgKGNvbmogbSAobGFzdCBmZGVjbCkpIG0pXG4gICAgZmRlY2xcbiAgICAoaWYgKG1hcD8gKGxhc3QgZmRlY2wpKSAoYnV0bGFzdCBmZGVjbCkgZmRlY2wpXG4gICAgbVxuICAgIChjb25qIHs6YXJnbGlzdHMgKGNvcmUvbGlzdCAncXVvdGUgKHNpZ3MgZmRlY2wpKX0gbSlcbiAgICBtXG4gICAgKGNvbmogKGlmIChtZXRhIG5hbWUpIChtZXRhIG5hbWUpIHt9KSBtKV1cbiAgIChjb3JlL2NvbmRcbiAgICAobXVsdGktYXJpdHktZm4/IGZkZWNsKVxuICAgIChtdWx0aS1hcml0eS1mblxuICAgICBuYW1lXG4gICAgIChpZlxuICAgICAgKGNvbXAvY2hlY2tpbmctdHlwZXM/KVxuICAgICAgKHVwZGF0ZS1pbiBtIFs6anNkb2NdIGNvbmogXCJAcGFyYW0gey4uLip9IHZhcl9hcmdzXCIpXG4gICAgICBtKVxuICAgICBmZGVjbFxuICAgICAoOmRlZi1lbWl0cy12YXIgJmVudikpXG4gICAgKHZhcmlhZGljLWZuPyBmZGVjbClcbiAgICAodmFyaWFkaWMtZm5cbiAgICAgbmFtZVxuICAgICAoaWZcbiAgICAgIChjb21wL2NoZWNraW5nLXR5cGVzPylcbiAgICAgICh1cGRhdGUtaW4gbSBbOmpzZG9jXSBjb25qIFwiQHBhcmFtIHsuLi4qfSB2YXJfYXJnc1wiKVxuICAgICAgbSlcbiAgICAgZmRlY2xcbiAgICAgKDpkZWYtZW1pdHMtdmFyICZlbnYpKVxuICAgIDplbHNlXG4gICAgKGNvcmUvbGlzdCAnZGVmICh3aXRoLW1ldGEgbmFtZSBtKSAoY29ucyAnY2xqcy5jb3JlL2ZuIGZkZWNsKSkpKSkpXG4ifSB7OnN5bSBzcHJlYWQsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbYXJnbGlzdF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBzcHJlYWRcbiBbYXJnbGlzdF1cbiAod2hlbi1ub3RcbiAgKG5pbD8gYXJnbGlzdClcbiAgKGxldFxuICAgW24gKG5leHQgYXJnbGlzdCldXG4gICAoaWZcbiAgICAobmlsPyBuKVxuICAgIChzZXEgKGZpcnN0IGFyZ2xpc3QpKVxuICAgIChjb25zIChmaXJzdCBhcmdsaXN0KSAoc3ByZWFkIG4pKSkpKSlcbiJ9IHs6c3ltIHJzZXEsIDptZXRhIHs6ZG9jICJSZXR1cm5zLCBpbiBjb25zdGFudCB0aW1lLCBhIHNlcSBvZiB0aGUgaXRlbXMgaW4gcmV2ICh3aGljaFxuICBjYW4gYmUgYSB2ZWN0b3Igb3Igc29ydGVkLW1hcCksIGluIHJldmVyc2Ugb3JkZXIuIElmIHJldiBpcyBlbXB0eSByZXR1cm5zIG5pbCIsIDphcmdsaXN0cyAoW3Jldl0pfSwgOnNvdXJjZSAiKGRlZm5cbiByc2VxXG4gXCJSZXR1cm5zLCBpbiBjb25zdGFudCB0aW1lLCBhIHNlcSBvZiB0aGUgaXRlbXMgaW4gcmV2ICh3aGljaFxcbiAgY2FuIGJlIGEgdmVjdG9yIG9yIHNvcnRlZC1tYXApLCBpbiByZXZlcnNlIG9yZGVyLiBJZiByZXYgaXMgZW1wdHkgcmV0dXJucyBuaWxcIlxuIFtyZXZdXG4gKC1yc2VxIHJldikpXG4ifSB7OnN5bSBleC1jYXVzZSwgOm1ldGEgezpkb2MgIlJldHVybnMgZXhjZXB0aW9uIGNhdXNlIChhbiBFcnJvciAvIEV4Y2VwdGlvbkluZm8pIGlmIGV4IGlzIGFuXG4gIEV4Y2VwdGlvbkluZm8uXG4gIE90aGVyd2lzZSByZXR1cm5zIG5pbC4iLCA6YXJnbGlzdHMgKFtleF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBleC1jYXVzZVxuIFwiUmV0dXJucyBleGNlcHRpb24gY2F1c2UgKGFuIEVycm9yIC8gRXhjZXB0aW9uSW5mbykgaWYgZXggaXMgYW5cXG4gIEV4Y2VwdGlvbkluZm8uXFxuICBPdGhlcndpc2UgcmV0dXJucyBuaWwuXCJcbiBbZXhdXG4gKHdoZW4gKGluc3RhbmNlPyBFeGNlcHRpb25JbmZvIGV4KSAoLi1jYXVzZSBleCkpKVxuIn0gezpzeW0gSVJlc2V0LCA6bWV0YSB7OmRvYyAiUHJvdG9jb2wgZm9yIGFkZGluZyByZXNldHRpbmcgZnVuY3Rpb25hbGl0eS4ifSwgOm1ldGhvZHMgKC1yZXNldCEpfSB7OnN5bSBJRW1wdHlhYmxlQ29sbGVjdGlvbiwgOm1ldGEgezpkb2MgIlByb3RvY29sIGZvciBjcmVhdGluZyBhbiBlbXB0eSBjb2xsZWN0aW9uLiJ9LCA6bWV0aG9kcyAoLWVtcHR5KX0gezpzeW0gZXgtbWVzc2FnZSwgOm1ldGEgezpkb2MgIlJldHVybnMgdGhlIG1lc3NhZ2UgYXR0YWNoZWQgdG8gdGhlIGdpdmVuIEVycm9yIC8gRXhjZXB0aW9uSW5mbyBvYmplY3QuXG4gIEZvciBub24tRXJyb3JzIHJldHVybnMgbmlsLiIsIDphcmdsaXN0cyAoW2V4XSl9LCA6c291cmNlICIoZGVmblxuIGV4LW1lc3NhZ2VcbiBcIlJldHVybnMgdGhlIG1lc3NhZ2UgYXR0YWNoZWQgdG8gdGhlIGdpdmVuIEVycm9yIC8gRXhjZXB0aW9uSW5mbyBvYmplY3QuXFxuICBGb3Igbm9uLUVycm9ycyByZXR1cm5zIG5pbC5cIlxuIFtleF1cbiAod2hlbiAoaW5zdGFuY2U/IGpzL0Vycm9yIGV4KSAoLi1tZXNzYWdlIGV4KSkpXG4ifSB7OnN5bSAqcHJpbnQtZm4tYm9kaWVzKiwgOm1ldGEgezpkb2MgIipwcmludC1mbnMtYm9kaWVzKiBjb250cm9scyB3aGV0aGVyIGZ1bmN0aW9ucyBwcmludCB0aGVpciBzb3VyY2Ugb3JcbiAgICBvbmx5IHRoZWlyIG5hbWVzLiJ9LCA6c291cmNlICIoZGVmICpwcmludC1mbi1ib2RpZXMqIGZhbHNlKVxuIn0gezpzeW0gc3RyaW5nLXByaW50LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuXG4gc3RyaW5nLXByaW50XG4gW3hdXG4gKHdoZW5cbiAgKG5pbD8gKnByaW50LWZuKilcbiAgKHRocm93XG4gICAoanMvRXJyb3IuIFwiTm8gKnByaW50LWZuKiBmbiBzZXQgZm9yIGV2YWx1YXRpb24gZW52aXJvbm1lbnRcIikpKVxuICgqcHJpbnQtZm4qIHgpXG4gbmlsKVxuIn0gezpzeW0gZmxvYXQsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm4gZmxvYXQgW3hdIHgpXG4ifSB7OnN5bSBJUmVjb3JkLCA6bWV0YSB7OmRvYyAiTWFya2VyIGludGVyZmFjZSBpbmRpY2F0aW5nIGEgcmVjb3JkIG9iamVjdCJ9LCA6bWV0aG9kcyAoKX0gezpzeW0gcHItc3RyLCA6bWV0YSB7OmRvYyAicHIgdG8gYSBzdHJpbmcsIHJldHVybmluZyBpdC4gRnVuZGFtZW50YWwgZW50cnlwb2ludCB0byBJUHJpbnRXaXRoV3JpdGVyLiIsIDphcmdsaXN0cyAoWyYgb2Jqc10pfSwgOnNvdXJjZSAiKGRlZm5cbiBwci1zdHJcbiBcInByIHRvIGEgc3RyaW5nLCByZXR1cm5pbmcgaXQuIEZ1bmRhbWVudGFsIGVudHJ5cG9pbnQgdG8gSVByaW50V2l0aFdyaXRlci5cIlxuIFsmIG9ianNdXG4gKHByLXN0ci13aXRoLW9wdHMgb2JqcyAocHItb3B0cykpKVxuIn0gezpzeW0gZXM2LXNldC1lbnRyaWVzLWl0ZXJhdG9yLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2NvbGxdKX0sIDpzb3VyY2UgIihkZWZuXG4gZXM2LXNldC1lbnRyaWVzLWl0ZXJhdG9yXG4gW2NvbGxdXG4gKEVTNlNldEVudHJpZXNJdGVyYXRvci4gKHNlcSBjb2xsKSkpXG4ifSB7OnN5bSBjb25jYXQsIDptZXRhIHs6ZG9jICJSZXR1cm5zIGEgbGF6eSBzZXEgcmVwcmVzZW50aW5nIHRoZSBjb25jYXRlbmF0aW9uIG9mIHRoZSBlbGVtZW50cyBpbiB0aGUgc3VwcGxpZWQgY29sbHMuIiwgOmFyZ2xpc3RzIFtbXSBbeF0gW3ggeV0gW3ggeSAmIHpzXV19LCA6c291cmNlICIoZGVmblxuIGNvbmNhdFxuIFwiUmV0dXJucyBhIGxhenkgc2VxIHJlcHJlc2VudGluZyB0aGUgY29uY2F0ZW5hdGlvbiBvZiB0aGUgZWxlbWVudHMgaW4gdGhlIHN1cHBsaWVkIGNvbGxzLlwiXG4gKFtdIChsYXp5LXNlcSBuaWwpKVxuIChbeF0gKGxhenktc2VxIHgpKVxuIChbeCB5XVxuICAobGF6eS1zZXFcbiAgIChsZXRcbiAgICBbcyAoc2VxIHgpXVxuICAgIChpZlxuICAgICBzXG4gICAgIChpZlxuICAgICAgKGNodW5rZWQtc2VxPyBzKVxuICAgICAgKGNodW5rLWNvbnMgKGNodW5rLWZpcnN0IHMpIChjb25jYXQgKGNodW5rLXJlc3QgcykgeSkpXG4gICAgICAoY29ucyAoZmlyc3QgcykgKGNvbmNhdCAocmVzdCBzKSB5KSkpXG4gICAgIHkpKSkpXG4gKFt4IHkgJiB6c11cbiAgKGxldFxuICAgW2NhdFxuICAgIChmblxuICAgICBjYXRcbiAgICAgW3h5cyB6c11cbiAgICAgKGxhenktc2VxXG4gICAgICAobGV0XG4gICAgICAgW3h5cyAoc2VxIHh5cyldXG4gICAgICAgKGlmXG4gICAgICAgIHh5c1xuICAgICAgICAoaWZcbiAgICAgICAgIChjaHVua2VkLXNlcT8geHlzKVxuICAgICAgICAgKGNodW5rLWNvbnMgKGNodW5rLWZpcnN0IHh5cykgKGNhdCAoY2h1bmstcmVzdCB4eXMpIHpzKSlcbiAgICAgICAgIChjb25zIChmaXJzdCB4eXMpIChjYXQgKHJlc3QgeHlzKSB6cykpKVxuICAgICAgICAod2hlbiB6cyAoY2F0IChmaXJzdCB6cykgKG5leHQgenMpKSkpKSkpXVxuICAgKGNhdCAoY29uY2F0IHggeSkgenMpKSkpXG4ifSB7OnN5bSAtbWV0aG9kcywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFttZl0pfSwgOnByb3RvY29sIElNdWx0aUZufSB7OnN5bSBqcy1yZXNlcnZlZCwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYganMtcmVzZXJ2ZWQgbmlsKVxuIn0gezpzeW0gSURlcmVmV2l0aFRpbWVvdXQsIDptZXRhIHs6ZG9jIG5pbH0sIDptZXRob2RzICgtZGVyZWYtd2l0aC10aW1lb3V0KX0gezpzeW0gc3ltYm9sLCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIFN5bWJvbCB3aXRoIHRoZSBnaXZlbiBuYW1lc3BhY2UgYW5kIG5hbWUuIEFyaXR5LTEgd29ya3NcbiAgb24gc3RyaW5ncywga2V5d29yZHMsIGFuZCB2YXJzLiIsIDphcmdsaXN0cyBbW25hbWVdIFtucyBuYW1lXV19LCA6c291cmNlICIoZGVmblxuIHN5bWJvbFxuIFwiUmV0dXJucyBhIFN5bWJvbCB3aXRoIHRoZSBnaXZlbiBuYW1lc3BhY2UgYW5kIG5hbWUuIEFyaXR5LTEgd29ya3NcXG4gIG9uIHN0cmluZ3MsIGtleXdvcmRzLCBhbmQgdmFycy5cIlxuIChbbmFtZV1cbiAgKGNvbmRcbiAgIChzeW1ib2w/IG5hbWUpXG4gICBuYW1lXG4gICAoc3RyaW5nPyBuYW1lKVxuICAgKGxldFxuICAgIFtpZHggKC5pbmRleE9mIG5hbWUgXCIvXCIpXVxuICAgIChpZlxuICAgICAoPCBpZHggMSlcbiAgICAgKHN5bWJvbCBuaWwgbmFtZSlcbiAgICAgKHN5bWJvbFxuICAgICAgKC5zdWJzdHJpbmcgbmFtZSAwIGlkeClcbiAgICAgICguc3Vic3RyaW5nIG5hbWUgKGluYyBpZHgpICguIG5hbWUgLWxlbmd0aCkpKSkpXG4gICAodmFyPyBuYW1lKVxuICAgKC4tc3ltIG5hbWUpXG4gICAoa2V5d29yZD8gbmFtZSlcbiAgIChyZWN1ciAoLi1mcW4gbmFtZSkpXG4gICA6ZWxzZVxuICAgKHRocm93IChuZXcganMvRXJyb3IgXCJubyBjb252ZXJzaW9uIHRvIHN5bWJvbFwiKSkpKVxuIChbbnMgbmFtZV1cbiAgKGxldFxuICAgW3N5bS1zdHIgKGlmLW5vdCAobmlsPyBucykgKHN0ciBucyBcIi9cIiBuYW1lKSBuYW1lKV1cbiAgIChTeW1ib2wuIG5zIG5hbWUgc3ltLXN0ciBuaWwgbmlsKSkpKVxuIn0gezpzeW0gdG8tYXJyYXktMmQsIDptZXRhIHs6ZG9jICJSZXR1cm5zIGEgKHBvdGVudGlhbGx5LXJhZ2dlZCkgMi1kaW1lbnNpb25hbCBhcnJheVxuICBjb250YWluaW5nIHRoZSBjb250ZW50cyBvZiBjb2xsLiIsIDphcmdsaXN0cyAoW2NvbGxdKX0sIDpzb3VyY2UgIihkZWZuXG4gdG8tYXJyYXktMmRcbiBcIlJldHVybnMgYSAocG90ZW50aWFsbHktcmFnZ2VkKSAyLWRpbWVuc2lvbmFsIGFycmF5XFxuICBjb250YWluaW5nIHRoZSBjb250ZW50cyBvZiBjb2xsLlwiXG4gW2NvbGxdXG4gKGxldFxuICBbcmV0IChtYWtlLWFycmF5IChjb3VudCBjb2xsKSldXG4gIChsb29wXG4gICBbaSAwIHhzIChzZXEgY29sbCldXG4gICAod2hlbi1ub3RcbiAgICAobmlsPyB4cylcbiAgICAoYXNldCByZXQgaSAodG8tYXJyYXkgKGZpcnN0IHhzKSkpXG4gICAgKHJlY3VyIChpbmMgaSkgKG5leHQgeHMpKSkpXG4gIHJldCkpXG4ifSB7OnN5bSBFeGNlcHRpb25JbmZvLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW21lc3NhZ2UgZGF0YSBjYXVzZV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBFeGNlcHRpb25JbmZvXG4gW21lc3NhZ2UgZGF0YSBjYXVzZV1cbiAobGV0XG4gIFtlIChqcy9FcnJvci4gbWVzc2FnZSldXG4gICh0aGlzLWFzXG4gICB0aGlzXG4gICAoc2V0ISAoLi1tZXNzYWdlIHRoaXMpIG1lc3NhZ2UpXG4gICAoc2V0ISAoLi1kYXRhIHRoaXMpIGRhdGEpXG4gICAoc2V0ISAoLi1jYXVzZSB0aGlzKSBjYXVzZSlcbiAgIChkb1xuICAgIChzZXQhICguLW5hbWUgdGhpcykgKC4tbmFtZSBlKSlcbiAgICAoc2V0ISAoLi1kZXNjcmlwdGlvbiB0aGlzKSAoLi1kZXNjcmlwdGlvbiBlKSlcbiAgICAoc2V0ISAoLi1udW1iZXIgdGhpcykgKC4tbnVtYmVyIGUpKVxuICAgIChzZXQhICguLWZpbGVOYW1lIHRoaXMpICguLWZpbGVOYW1lIGUpKVxuICAgIChzZXQhICguLWxpbmVOdW1iZXIgdGhpcykgKC4tbGluZU51bWJlciBlKSlcbiAgICAoc2V0ISAoLi1jb2x1bW5OdW1iZXIgdGhpcykgKC4tY29sdW1uTnVtYmVyIGUpKVxuICAgIChzZXQhICguLXN0YWNrIHRoaXMpICguLXN0YWNrIGUpKSlcbiAgIHRoaXMpKSlcbiJ9IHs6c3ltIG1vZCwgOm1ldGEgezpkb2MgIk1vZHVsdXMgb2YgbnVtIGFuZCBkaXYuIFRydW5jYXRlcyB0b3dhcmQgbmVnYXRpdmUgaW5maW5pdHkuIiwgOmFyZ2xpc3RzIChbbiBkXSl9LCA6c291cmNlICIoZGVmblxuIG1vZFxuIFwiTW9kdWx1cyBvZiBudW0gYW5kIGRpdi4gVHJ1bmNhdGVzIHRvd2FyZCBuZWdhdGl2ZSBpbmZpbml0eS5cIlxuIFtuIGRdXG4gKGpzLW1vZCAoKyAoanMtbW9kIG4gZCkgZCkgZCkpXG4ifSB7OnN5bSBJU2V0LCA6bWV0YSB7OmRvYyAiUHJvdG9jb2wgZm9yIGFkZGluZyBzZXQgZnVuY3Rpb25hbGl0eSB0byBhIGNvbGxlY3Rpb24uIn0sIDptZXRob2RzICgtZGlzam9pbil9IHs6c3ltIHBvcCwgOm1ldGEgezpkb2MgIkZvciBhIGxpc3Qgb3IgcXVldWUsIHJldHVybnMgYSBuZXcgbGlzdC9xdWV1ZSB3aXRob3V0IHRoZSBmaXJzdFxuICBpdGVtLCBmb3IgYSB2ZWN0b3IsIHJldHVybnMgYSBuZXcgdmVjdG9yIHdpdGhvdXQgdGhlIGxhc3QgaXRlbS5cbiAgTm90ZSAtIG5vdCB0aGUgc2FtZSBhcyBuZXh0L2J1dGxhc3QuIiwgOmFyZ2xpc3RzIChbY29sbF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBwb3BcbiBcIkZvciBhIGxpc3Qgb3IgcXVldWUsIHJldHVybnMgYSBuZXcgbGlzdC9xdWV1ZSB3aXRob3V0IHRoZSBmaXJzdFxcbiAgaXRlbSwgZm9yIGEgdmVjdG9yLCByZXR1cm5zIGEgbmV3IHZlY3RvciB3aXRob3V0IHRoZSBsYXN0IGl0ZW0uXFxuICBOb3RlIC0gbm90IHRoZSBzYW1lIGFzIG5leHQvYnV0bGFzdC5cIlxuIFtjb2xsXVxuICh3aGVuLW5vdCAobmlsPyBjb2xsKSAoLXBvcCBjb2xsKSkpXG4ifSB7OnN5bSBJUGVuZGluZywgOm1ldGEgezpkb2MgIlByb3RvY29sIGZvciB0eXBlcyB3aGljaCBjYW4gaGF2ZSBhIGRlZmVycmVkIHJlYWxpemF0aW9uLiBDdXJyZW50bHkgb25seVxuICBpbXBsZW1lbnRlZCBieSBEZWxheSBhbmQgTGF6eVNlcS4ifSwgOm1ldGhvZHMgKC1yZWFsaXplZD8pfSB7OnN5bSAtZW50cnkta2V5LCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0aGUga2V5IGZvciBlbnRyeS4iLCA6YXJnbGlzdHMgKFtjb2xsIGVudHJ5XSl9LCA6cHJvdG9jb2wgSVNvcnRlZH0gezpzeW0gQ0hBUl9NQVAsIDptZXRhIHt9LCA6c291cmNlICIoZGVmXG4gQ0hBUl9NQVBcbiAjanMge1wiXVwiIFwiX1JCUkFDS19cIiwgXCInXCIgXCJfU0lOR0xFUVVPVEVfXCIsIFwiPVwiIFwiX0VRX1wiLCBcIlxcXFxcXFwiXCIgXCJfRE9VQkxFUVVPVEVfXCIsIFwiIVwiIFwiX0JBTkdfXCIsIFwiKlwiIFwiX1NUQVJfXCIsIFwiJVwiIFwiX1BFUkNFTlRfXCIsIFwifFwiIFwiX0JBUl9cIiwgXCJ+XCIgXCJfVElMREVfXCIsIFwiL1wiIFwiX1NMQVNIX1wiLCBcIlxcXFxcXFxcXCIgXCJfQlNMQVNIX1wiLCBcIi1cIiBcIl9cIiwgXCI/XCIgXCJfUU1BUktfXCIsIFwiJlwiIFwiX0FNUEVSU0FORF9cIiwgXCI6XCIgXCJfQ09MT05fXCIsIFwiPFwiIFwiX0xUX1wiLCBcIntcIiBcIl9MQlJBQ0VfXCIsIFwifVwiIFwiX1JCUkFDRV9cIiwgXCJbXCIgXCJfTEJSQUNLX1wiLCBcIiNcIiBcIl9TSEFSUF9cIiwgXCJeXCIgXCJfQ0FSRVRfXCIsIFwiK1wiIFwiX1BMVVNfXCIsIFwiQFwiIFwiX0NJUkNBX1wiLCBcIj5cIiBcIl9HVF9cIn0pXG4ifSB7OnN5bSBkaXNzb2MhLCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIHRyYW5zaWVudCBtYXAgdGhhdCBkb2Vzbid0IGNvbnRhaW4gYSBtYXBwaW5nIGZvciBrZXkocykuIiwgOmFyZ2xpc3RzIFtbdGNvbGwga2V5XSBbdGNvbGwga2V5ICYga3NdXX0sIDpzb3VyY2UgIihkZWZuXG4gZGlzc29jIVxuIFwiUmV0dXJucyBhIHRyYW5zaWVudCBtYXAgdGhhdCBkb2Vzbid0IGNvbnRhaW4gYSBtYXBwaW5nIGZvciBrZXkocykuXCJcbiAoW3Rjb2xsIGtleV0gKC1kaXNzb2MhIHRjb2xsIGtleSkpXG4gKFt0Y29sbCBrZXkgJiBrc11cbiAgKGxldFxuICAgW250Y29sbCAoLWRpc3NvYyEgdGNvbGwga2V5KV1cbiAgIChpZiBrcyAocmVjdXIgbnRjb2xsIChmaXJzdCBrcykgKG5leHQga3MpKSBudGNvbGwpKSkpXG4ifSB7OnN5bSByZWR1Y3Rpb25zLCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIGxhenkgc2VxIG9mIHRoZSBpbnRlcm1lZGlhdGUgdmFsdWVzIG9mIHRoZSByZWR1Y3Rpb24gKGFzXG4gIHBlciByZWR1Y2UpIG9mIGNvbGwgYnkgZiwgc3RhcnRpbmcgd2l0aCBpbml0LiIsIDphcmdsaXN0cyBbW2YgY29sbF0gW2YgaW5pdCBjb2xsXV19LCA6c291cmNlICIoZGVmblxuIHJlZHVjdGlvbnNcbiBcIlJldHVybnMgYSBsYXp5IHNlcSBvZiB0aGUgaW50ZXJtZWRpYXRlIHZhbHVlcyBvZiB0aGUgcmVkdWN0aW9uIChhc1xcbiAgcGVyIHJlZHVjZSkgb2YgY29sbCBieSBmLCBzdGFydGluZyB3aXRoIGluaXQuXCJcbiAoW2YgY29sbF1cbiAgKGxhenktc2VxXG4gICAoaWYtbGV0XG4gICAgW3MgKHNlcSBjb2xsKV1cbiAgICAocmVkdWN0aW9ucyBmIChmaXJzdCBzKSAocmVzdCBzKSlcbiAgICAobGlzdCAoZikpKSkpXG4gKFtmIGluaXQgY29sbF1cbiAgKGlmXG4gICAocmVkdWNlZD8gaW5pdClcbiAgIChsaXN0IEBpbml0KVxuICAgKGNvbnNcbiAgICBpbml0XG4gICAgKGxhenktc2VxXG4gICAgICh3aGVuLWxldFxuICAgICAgW3MgKHNlcSBjb2xsKV1cbiAgICAgIChyZWR1Y3Rpb25zIGYgKGYgaW5pdCAoZmlyc3QgcykpIChyZXN0IHMpKSkpKSkpKVxuIn0gezpzeW0gZmFzdC1wYXRoLXByb3RvY29sLXBhcnRpdGlvbnMtY291bnQsIDptZXRhIHt9LCA6c291cmNlICIoZGVmXG4gZmFzdC1wYXRoLXByb3RvY29sLXBhcnRpdGlvbnMtY291bnRcbiBcInRvdGFsIG51bWJlciBvZiBwYXJ0aXRpb25zXCJcbiAoY29yZS9sZXRcbiAgW2MgKGNvdW50IGZhc3QtcGF0aC1wcm90b2NvbHMpIG0gKGNvcmUvbW9kIGMgMzIpXVxuICAoaWYgKGNvcmUvemVybz8gbSkgKGNvcmUvcXVvdCBjIDMyKSAoY29yZS9pbmMgKGNvcmUvcXVvdCBjIDMyKSkpKSlcbiJ9IHs6c3ltIGluZGV4ZWQ/LCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0cnVlIGlmIGNvbGwgaW1wbGVtZW50cyBudGggaW4gY29uc3RhbnQgdGltZSIsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuXG4gaW5kZXhlZD9cbiBcIlJldHVybnMgdHJ1ZSBpZiBjb2xsIGltcGxlbWVudHMgbnRoIGluIGNvbnN0YW50IHRpbWVcIlxuIFt4XVxuIChzYXRpc2ZpZXM/IElJbmRleGVkIHgpKVxuIn0gezpzeW0gLSwgOm1ldGEgezpkb2MgIklmIG5vIHlzIGFyZSBzdXBwbGllZCwgcmV0dXJucyB0aGUgbmVnYXRpb24gb2YgeCwgZWxzZSBzdWJ0cmFjdHNcbiAgdGhlIHlzIGZyb20geCBhbmQgcmV0dXJucyB0aGUgcmVzdWx0LiIsIDphcmdsaXN0cyBbW3hdIFt4IHldIFt4IHkgJiBtb3JlXV19LCA6c291cmNlICIoZGVmblxuIC1cbiBcIklmIG5vIHlzIGFyZSBzdXBwbGllZCwgcmV0dXJucyB0aGUgbmVnYXRpb24gb2YgeCwgZWxzZSBzdWJ0cmFjdHNcXG4gIHRoZSB5cyBmcm9tIHggYW5kIHJldHVybnMgdGhlIHJlc3VsdC5cIlxuIChbeF0gKGNsanMuY29yZS8tIHgpKVxuIChbeCB5XSAoY2xqcy5jb3JlLy0geCB5KSlcbiAoW3ggeSAmIG1vcmVdIChyZWR1Y2UgLSAoY2xqcy5jb3JlLy0geCB5KSBtb3JlKSkpXG4ifSB7OnN5bSAtZXF1aXYsIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRydWUgaWYgbyBhbmQgb3RoZXIgYXJlIGVxdWFsLCBmYWxzZSBvdGhlcndpc2UuIiwgOmFyZ2xpc3RzIChbbyBvdGhlcl0pfSwgOnByb3RvY29sIElFcXVpdn0gezpzeW0gYXNzb2MhLCA6bWV0YSB7OmRvYyAiV2hlbiBhcHBsaWVkIHRvIGEgdHJhbnNpZW50IG1hcCwgYWRkcyBtYXBwaW5nIG9mIGtleShzKSB0b1xuICB2YWwocykuIFdoZW4gYXBwbGllZCB0byBhIHRyYW5zaWVudCB2ZWN0b3IsIHNldHMgdGhlIHZhbCBhdCBpbmRleC5cbiAgTm90ZSAtIGluZGV4IG11c3QgYmUgPD0gKGNvdW50IHZlY3RvcikuIFJldHVybnMgY29sbC4iLCA6YXJnbGlzdHMgW1t0Y29sbCBrZXkgdmFsXSBbdGNvbGwga2V5IHZhbCAmIGt2c11dfSwgOnNvdXJjZSAiKGRlZm5cbiBhc3NvYyFcbiBcIldoZW4gYXBwbGllZCB0byBhIHRyYW5zaWVudCBtYXAsIGFkZHMgbWFwcGluZyBvZiBrZXkocykgdG9cXG4gIHZhbChzKS4gV2hlbiBhcHBsaWVkIHRvIGEgdHJhbnNpZW50IHZlY3Rvciwgc2V0cyB0aGUgdmFsIGF0IGluZGV4LlxcbiAgTm90ZSAtIGluZGV4IG11c3QgYmUgPD0gKGNvdW50IHZlY3RvcikuIFJldHVybnMgY29sbC5cIlxuIChbdGNvbGwga2V5IHZhbF0gKC1hc3NvYyEgdGNvbGwga2V5IHZhbCkpXG4gKFt0Y29sbCBrZXkgdmFsICYga3ZzXVxuICAobGV0XG4gICBbbnRjb2xsICgtYXNzb2MhIHRjb2xsIGtleSB2YWwpXVxuICAgKGlmXG4gICAga3ZzXG4gICAgKHJlY3VyIG50Y29sbCAoZmlyc3Qga3ZzKSAoc2Vjb25kIGt2cykgKG5uZXh0IGt2cykpXG4gICAgbnRjb2xsKSkpKVxuIn0gezpzeW0gaGFzaC1zZXQsIDptZXRhIHs6ZG9jICJSZXR1cm5zIGEgbmV3IGhhc2ggc2V0IHdpdGggc3VwcGxpZWQga2V5cy4gIEFueSBlcXVhbCBrZXlzIGFyZVxuICBoYW5kbGVkIGFzIGlmIGJ5IHJlcGVhdGVkIHVzZXMgb2YgY29uai4iLCA6YXJnbGlzdHMgW1tdIFsmIGtleXNdXX0sIDpzb3VyY2UgIihkZWZuXG4gaGFzaC1zZXRcbiBcIlJldHVybnMgYSBuZXcgaGFzaCBzZXQgd2l0aCBzdXBwbGllZCBrZXlzLiAgQW55IGVxdWFsIGtleXMgYXJlXFxuICBoYW5kbGVkIGFzIGlmIGJ5IHJlcGVhdGVkIHVzZXMgb2YgY29uai5cIlxuIChbXSAje30pXG4gKFsmIGtleXNdIChzZXQga2V5cykpKVxuIn0gezpzeW0gcmVkdWNlLWt2LCA6bWV0YSB7OmRvYyAiUmVkdWNlcyBhbiBhc3NvY2lhdGl2ZSBjb2xsZWN0aW9uLiBmIHNob3VsZCBiZSBhIGZ1bmN0aW9uIG9mIDNcbiAgYXJndW1lbnRzLiBSZXR1cm5zIHRoZSByZXN1bHQgb2YgYXBwbHlpbmcgZiB0byBpbml0LCB0aGUgZmlyc3Qga2V5XG4gIGFuZCB0aGUgZmlyc3QgdmFsdWUgaW4gY29sbCwgdGhlbiBhcHBseWluZyBmIHRvIHRoYXQgcmVzdWx0IGFuZCB0aGVcbiAgMm5kIGtleSBhbmQgdmFsdWUsIGV0Yy4gSWYgY29sbCBjb250YWlucyBubyBlbnRyaWVzLCByZXR1cm5zIGluaXRcbiAgYW5kIGYgaXMgbm90IGNhbGxlZC4gTm90ZSB0aGF0IHJlZHVjZS1rdiBpcyBzdXBwb3J0ZWQgb24gdmVjdG9ycyxcbiAgd2hlcmUgdGhlIGtleXMgd2lsbCBiZSB0aGUgb3JkaW5hbHMuIiwgOmFyZ2xpc3RzIFtbZiBpbml0IGNvbGxdXX0sIDpzb3VyY2UgIihkZWZuXG4gcmVkdWNlLWt2XG4gXCJSZWR1Y2VzIGFuIGFzc29jaWF0aXZlIGNvbGxlY3Rpb24uIGYgc2hvdWxkIGJlIGEgZnVuY3Rpb24gb2YgM1xcbiAgYXJndW1lbnRzLiBSZXR1cm5zIHRoZSByZXN1bHQgb2YgYXBwbHlpbmcgZiB0byBpbml0LCB0aGUgZmlyc3Qga2V5XFxuICBhbmQgdGhlIGZpcnN0IHZhbHVlIGluIGNvbGwsIHRoZW4gYXBwbHlpbmcgZiB0byB0aGF0IHJlc3VsdCBhbmQgdGhlXFxuICAybmQga2V5IGFuZCB2YWx1ZSwgZXRjLiBJZiBjb2xsIGNvbnRhaW5zIG5vIGVudHJpZXMsIHJldHVybnMgaW5pdFxcbiAgYW5kIGYgaXMgbm90IGNhbGxlZC4gTm90ZSB0aGF0IHJlZHVjZS1rdiBpcyBzdXBwb3J0ZWQgb24gdmVjdG9ycyxcXG4gIHdoZXJlIHRoZSBrZXlzIHdpbGwgYmUgdGhlIG9yZGluYWxzLlwiXG4gKFtmIGluaXQgY29sbF0gKGlmLW5vdCAobmlsPyBjb2xsKSAoLWt2LXJlZHVjZSBjb2xsIGYgaW5pdCkgaW5pdCkpKVxuIn0gezpzeW0gcmVzZXQhLCA6bWV0YSB7OmRvYyAiU2V0cyB0aGUgdmFsdWUgb2YgYXRvbSB0byBuZXd2YWwgd2l0aG91dCByZWdhcmQgZm9yIHRoZVxuICBjdXJyZW50IHZhbHVlLiBSZXR1cm5zIG5ldy12YWx1ZS4iLCA6YXJnbGlzdHMgKFthIG5ldy12YWx1ZV0pfSwgOnNvdXJjZSAiKGRlZm5cbiByZXNldCFcbiBcIlNldHMgdGhlIHZhbHVlIG9mIGF0b20gdG8gbmV3dmFsIHdpdGhvdXQgcmVnYXJkIGZvciB0aGVcXG4gIGN1cnJlbnQgdmFsdWUuIFJldHVybnMgbmV3LXZhbHVlLlwiXG4gW2EgbmV3LXZhbHVlXVxuIChpZlxuICAoaW5zdGFuY2U/IEF0b20gYSlcbiAgKGxldFxuICAgW3ZhbGlkYXRlICguLXZhbGlkYXRvciBhKV1cbiAgICh3aGVuLW5vdFxuICAgIChuaWw/IHZhbGlkYXRlKVxuICAgICh3aGVuLW5vdFxuICAgICAodmFsaWRhdGUgbmV3LXZhbHVlKVxuICAgICAodGhyb3cgKGpzL0Vycm9yLiBcIlZhbGlkYXRvciByZWplY3RlZCByZWZlcmVuY2Ugc3RhdGVcIikpKSlcbiAgIChsZXRcbiAgICBbb2xkLXZhbHVlICguLXN0YXRlIGEpXVxuICAgIChzZXQhICguLXN0YXRlIGEpIG5ldy12YWx1ZSlcbiAgICAod2hlbi1ub3RcbiAgICAgKG5pbD8gKC4td2F0Y2hlcyBhKSlcbiAgICAgKC1ub3RpZnktd2F0Y2hlcyBhIG9sZC12YWx1ZSBuZXctdmFsdWUpKVxuICAgIG5ldy12YWx1ZSkpXG4gICgtcmVzZXQhIGEgbmV3LXZhbHVlKSkpXG4ifSB7OnN5bSBuYW1lLCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0aGUgbmFtZSBTdHJpbmcgb2YgYSBzdHJpbmcsIHN5bWJvbCBvciBrZXl3b3JkLiIsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuXG4gbmFtZVxuIFwiUmV0dXJucyB0aGUgbmFtZSBTdHJpbmcgb2YgYSBzdHJpbmcsIHN5bWJvbCBvciBrZXl3b3JkLlwiXG4gW3hdXG4gKGlmXG4gIChpbXBsZW1lbnRzPyBJTmFtZWQgeClcbiAgKC1uYW1lIHgpXG4gIChpZlxuICAgKHN0cmluZz8geClcbiAgIHhcbiAgICh0aHJvdyAoanMvRXJyb3IuIChzdHIgXCJEb2Vzbid0IHN1cHBvcnQgbmFtZTogXCIgeCkpKSkpKVxuIn0gezpzeW0gRm4sIDptZXRhIHs6ZG9jICJNYXJrZXIgcHJvdG9jb2wifSwgOm1ldGhvZHMgKCl9IHs6c3ltIGZmaXJzdCwgOm1ldGEgezpkb2MgIlNhbWUgYXMgKGZpcnN0IChmaXJzdCB4KSkiLCA6YXJnbGlzdHMgKFtjb2xsXSl9LCA6c291cmNlICIoZGVmbiBmZmlyc3QgXCJTYW1lIGFzIChmaXJzdCAoZmlyc3QgeCkpXCIgW2NvbGxdIChmaXJzdCAoZmlyc3QgY29sbCkpKVxuIn0gezpzeW0gc29ydGVkLXNldCwgOm1ldGEgezpkb2MgIlJldHVybnMgYSBuZXcgc29ydGVkIHNldCB3aXRoIHN1cHBsaWVkIGtleXMuIiwgOmFyZ2xpc3RzIFtbJiBrZXlzXV19LCA6c291cmNlICIoZGVmblxuIHNvcnRlZC1zZXRcbiBcIlJldHVybnMgYSBuZXcgc29ydGVkIHNldCB3aXRoIHN1cHBsaWVkIGtleXMuXCJcbiAoWyYga2V5c10gKHJlZHVjZSAtY29uaiAoLi1FTVBUWSBQZXJzaXN0ZW50VHJlZVNldCkga2V5cykpKVxuIn0gezpzeW0gY291bnRlZD8sIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRydWUgaWYgY29sbCBpbXBsZW1lbnRzIGNvdW50IGluIGNvbnN0YW50IHRpbWUiLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmblxuIGNvdW50ZWQ/XG4gXCJSZXR1cm5zIHRydWUgaWYgY29sbCBpbXBsZW1lbnRzIGNvdW50IGluIGNvbnN0YW50IHRpbWVcIlxuIFt4XVxuIChzYXRpc2ZpZXM/IElDb3VudGVkIHgpKVxuIn0gezpzeW0gdGFnZ2VkLWxpdGVyYWwsIDptZXRhIHs6ZG9jICJDb25zdHJ1Y3QgYSBkYXRhIHJlcHJlc2VudGF0aW9uIG9mIGEgdGFnZ2VkIGxpdGVyYWwgZnJvbSBhXG4gIHRhZyBzeW1ib2wgYW5kIGEgZm9ybS4iLCA6YXJnbGlzdHMgKFt0YWcgZm9ybV0pfSwgOnNvdXJjZSAiKGRlZm5cbiB0YWdnZWQtbGl0ZXJhbFxuIFwiQ29uc3RydWN0IGEgZGF0YSByZXByZXNlbnRhdGlvbiBvZiBhIHRhZ2dlZCBsaXRlcmFsIGZyb20gYVxcbiAgdGFnIHN5bWJvbCBhbmQgYSBmb3JtLlwiXG4gW3RhZyBmb3JtXVxuIHs6cHJlIFsoc3ltYm9sPyB0YWcpXX1cbiAoVGFnZ2VkTGl0ZXJhbC4gdGFnIGZvcm0pKVxuIn0gezpzeW0gcHJpbnRsbiwgOm1ldGEgezpkb2MgIlNhbWUgYXMgcHJpbnQgZm9sbG93ZWQgYnkgKG5ld2xpbmUpIiwgOmFyZ2xpc3RzIChbJiBvYmpzXSl9LCA6c291cmNlICIoZGVmblxuIHByaW50bG5cbiBcIlNhbWUgYXMgcHJpbnQgZm9sbG93ZWQgYnkgKG5ld2xpbmUpXCJcbiBbJiBvYmpzXVxuIChwci13aXRoLW9wdHMgb2JqcyAoYXNzb2MgKHByLW9wdHMpIDpyZWFkYWJseSBmYWxzZSkpXG4gKHdoZW4gKnByaW50LW5ld2xpbmUqIChuZXdsaW5lIChwci1vcHRzKSkpKVxuIn0gezpzeW0gYXNzb2MtaW4sIDptZXRhIHs6ZG9jICJBc3NvY2lhdGVzIGEgdmFsdWUgaW4gYSBuZXN0ZWQgYXNzb2NpYXRpdmUgc3RydWN0dXJlLCB3aGVyZSBrcyBpcyBhXG4gIHNlcXVlbmNlIG9mIGtleXMgYW5kIHYgaXMgdGhlIG5ldyB2YWx1ZSBhbmQgcmV0dXJucyBhIG5ldyBuZXN0ZWQgc3RydWN0dXJlLlxuICBJZiBhbnkgbGV2ZWxzIGRvIG5vdCBleGlzdCwgaGFzaC1tYXBzIHdpbGwgYmUgY3JlYXRlZC4iLCA6YXJnbGlzdHMgKFttIFtrICYga3NdIHZdKX0sIDpzb3VyY2UgIihkZWZuXG4gYXNzb2MtaW5cbiBcIkFzc29jaWF0ZXMgYSB2YWx1ZSBpbiBhIG5lc3RlZCBhc3NvY2lhdGl2ZSBzdHJ1Y3R1cmUsIHdoZXJlIGtzIGlzIGFcXG4gIHNlcXVlbmNlIG9mIGtleXMgYW5kIHYgaXMgdGhlIG5ldyB2YWx1ZSBhbmQgcmV0dXJucyBhIG5ldyBuZXN0ZWQgc3RydWN0dXJlLlxcbiAgSWYgYW55IGxldmVscyBkbyBub3QgZXhpc3QsIGhhc2gtbWFwcyB3aWxsIGJlIGNyZWF0ZWQuXCJcbiBbbSBbayAmIGtzXSB2XVxuIChpZiBrcyAoYXNzb2MgbSBrIChhc3NvYy1pbiAoZ2V0IG0gaykga3MgdikpIChhc3NvYyBtIGsgdikpKVxuIn0gezpzeW0gYml0LXRlc3QsIDptZXRhIHs6ZG9jICJUZXN0IGJpdCBhdCBpbmRleCBuIiwgOmFyZ2xpc3RzIChbeCBuXSl9LCA6c291cmNlICIoZGVmbiBiaXQtdGVzdCBcIlRlc3QgYml0IGF0IGluZGV4IG5cIiBbeCBuXSAoY2xqcy5jb3JlL2JpdC10ZXN0IHggbikpXG4ifSB7OnN5bSBJU3dhcCwgOm1ldGEgezpkb2MgIlByb3RvY29sIGZvciBhZGRpbmcgc3dhcHBpbmcgZnVuY3Rpb25hbGl0eS4ifSwgOm1ldGhvZHMgKC1zd2FwISl9IHs6c3ltIG1lbW9pemUsIDptZXRhIHs6ZG9jICJSZXR1cm5zIGEgbWVtb2l6ZWQgdmVyc2lvbiBvZiBhIHJlZmVyZW50aWFsbHkgdHJhbnNwYXJlbnQgZnVuY3Rpb24uIFRoZVxuICBtZW1vaXplZCB2ZXJzaW9uIG9mIHRoZSBmdW5jdGlvbiBrZWVwcyBhIGNhY2hlIG9mIHRoZSBtYXBwaW5nIGZyb20gYXJndW1lbnRzXG4gIHRvIHJlc3VsdHMgYW5kLCB3aGVuIGNhbGxzIHdpdGggdGhlIHNhbWUgYXJndW1lbnRzIGFyZSByZXBlYXRlZCBvZnRlbiwgaGFzXG4gIGhpZ2hlciBwZXJmb3JtYW5jZSBhdCB0aGUgZXhwZW5zZSBvZiBoaWdoZXIgbWVtb3J5IHVzZS4iLCA6YXJnbGlzdHMgKFtmXSl9LCA6c291cmNlICIoZGVmblxuIG1lbW9pemVcbiBcIlJldHVybnMgYSBtZW1vaXplZCB2ZXJzaW9uIG9mIGEgcmVmZXJlbnRpYWxseSB0cmFuc3BhcmVudCBmdW5jdGlvbi4gVGhlXFxuICBtZW1vaXplZCB2ZXJzaW9uIG9mIHRoZSBmdW5jdGlvbiBrZWVwcyBhIGNhY2hlIG9mIHRoZSBtYXBwaW5nIGZyb20gYXJndW1lbnRzXFxuICB0byByZXN1bHRzIGFuZCwgd2hlbiBjYWxscyB3aXRoIHRoZSBzYW1lIGFyZ3VtZW50cyBhcmUgcmVwZWF0ZWQgb2Z0ZW4sIGhhc1xcbiAgaGlnaGVyIHBlcmZvcm1hbmNlIGF0IHRoZSBleHBlbnNlIG9mIGhpZ2hlciBtZW1vcnkgdXNlLlwiXG4gW2ZdXG4gKGxldFxuICBbbWVtIChhdG9tIHt9KV1cbiAgKGZuXG4gICBbJiBhcmdzXVxuICAgKGxldFxuICAgIFt2IChnZXQgQG1lbSBhcmdzIGxvb2t1cC1zZW50aW5lbCldXG4gICAgKGlmXG4gICAgIChpZGVudGljYWw/IHYgbG9va3VwLXNlbnRpbmVsKVxuICAgICAobGV0IFtyZXQgKGFwcGx5IGYgYXJncyldIChzd2FwISBtZW0gYXNzb2MgYXJncyByZXQpIHJldClcbiAgICAgdikpKSkpXG4ifSB7OnN5bSBhbHRlci1tZXRhISwgOm1ldGEgezpkb2MgIkF0b21pY2FsbHkgc2V0cyB0aGUgbWV0YWRhdGEgZm9yIGEgbmFtZXNwYWNlL3Zhci9yZWYvYWdlbnQvYXRvbSB0byBiZTpcblxuICAoYXBwbHkgZiBpdHMtY3VycmVudC1tZXRhIGFyZ3MpXG5cbiAgZiBtdXN0IGJlIGZyZWUgb2Ygc2lkZS1lZmZlY3RzIiwgOmFyZ2xpc3RzIChbaXJlZiBmICYgYXJnc10pfSwgOnNvdXJjZSAiKGRlZm5cbiBhbHRlci1tZXRhIVxuIFwiQXRvbWljYWxseSBzZXRzIHRoZSBtZXRhZGF0YSBmb3IgYSBuYW1lc3BhY2UvdmFyL3JlZi9hZ2VudC9hdG9tIHRvIGJlOlxcblxcbiAgKGFwcGx5IGYgaXRzLWN1cnJlbnQtbWV0YSBhcmdzKVxcblxcbiAgZiBtdXN0IGJlIGZyZWUgb2Ygc2lkZS1lZmZlY3RzXCJcbiBbaXJlZiBmICYgYXJnc11cbiAoc2V0ISAoLi1tZXRhIGlyZWYpIChhcHBseSBmICguLW1ldGEgaXJlZikgYXJncykpKVxuIn0gezpzeW0gemVybz8sIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRydWUgaWYgbnVtIGlzIHplcm8sIGVsc2UgZmFsc2UiLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmblxuIHplcm8/XG4gXCJSZXR1cm5zIHRydWUgaWYgbnVtIGlzIHplcm8sIGVsc2UgZmFsc2VcIlxuIFt4XVxuIChjbGpzLmNvcmUvemVybz8geCkpXG4ifSB7OnN5bSBzaW1wbGUta2V5d29yZD8sIDptZXRhIHs6ZG9jICJSZXR1cm4gdHJ1ZSBpZiB4IGlzIGEga2V5d29yZCB3aXRob3V0IGEgbmFtZXNwYWNlIiwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBzaW1wbGUta2V5d29yZD9cbiBcIlJldHVybiB0cnVlIGlmIHggaXMgYSBrZXl3b3JkIHdpdGhvdXQgYSBuYW1lc3BhY2VcIlxuIFt4XVxuIChhbmQgKGtleXdvcmQ/IHgpIChuaWw/IChuYW1lc3BhY2UgeCkpKSlcbiJ9IHs6c3ltICptYWluLWNsaS1mbiosIDptZXRhIHs6ZG9jICJXaGVuIGNvbXBpbGVkIGZvciBhIGNvbW1hbmQtbGluZSB0YXJnZXQsIHdoYXRldmVyIGZ1bmN0aW9uXG4gICptYWluLWNsaS1mbiogaXMgc2V0IHRvIHdpbGwgYmUgY2FsbGVkIHdpdGggdGhlIGNvbW1hbmQtbGluZVxuICBhcmd2IGFzIGFyZ3VtZW50cyJ9LCA6c291cmNlICIoZGVmICptYWluLWNsaS1mbiogbmlsKVxuIn0gezpzeW0gLWFzc29jLW4sIDptZXRhIHs6ZG9jICJSZXR1cm5zIGEgbmV3IHZlY3RvciB3aXRoIHZhbHVlIHZhbCBhZGRlZCBhdCBwb3NpdGlvbiBuLiIsIDphcmdsaXN0cyAoW2NvbGwgbiB2YWxdKX0sIDpwcm90b2NvbCBJVmVjdG9yfSB7OnN5bSB1bmNoZWNrZWQtZGVjLWludCwgOm1ldGEgezpkb2MgIlJldHVybnMgYSBudW1iZXIgb25lIGxlc3MgdGhhbiB4LCBhbiBpbnQuIiwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm5cbiB1bmNoZWNrZWQtZGVjLWludFxuIFwiUmV0dXJucyBhIG51bWJlciBvbmUgbGVzcyB0aGFuIHgsIGFuIGludC5cIlxuIFt4XVxuIChjbGpzLmNvcmUvdW5jaGVja2VkLWRlYy1pbnQgeCkpXG4ifSB7OnN5bSBwZXJzaXN0ZW50ISwgOm1ldGEgezpkb2MgIlJldHVybnMgYSBuZXcsIHBlcnNpc3RlbnQgdmVyc2lvbiBvZiB0aGUgdHJhbnNpZW50IGNvbGxlY3Rpb24sIGluXG4gIGNvbnN0YW50IHRpbWUuIFRoZSB0cmFuc2llbnQgY29sbGVjdGlvbiBjYW5ub3QgYmUgdXNlZCBhZnRlciB0aGlzXG4gIGNhbGwsIGFueSBzdWNoIHVzZSB3aWxsIHRocm93IGFuIGV4Y2VwdGlvbi4iLCA6YXJnbGlzdHMgKFt0Y29sbF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBwZXJzaXN0ZW50IVxuIFwiUmV0dXJucyBhIG5ldywgcGVyc2lzdGVudCB2ZXJzaW9uIG9mIHRoZSB0cmFuc2llbnQgY29sbGVjdGlvbiwgaW5cXG4gIGNvbnN0YW50IHRpbWUuIFRoZSB0cmFuc2llbnQgY29sbGVjdGlvbiBjYW5ub3QgYmUgdXNlZCBhZnRlciB0aGlzXFxuICBjYWxsLCBhbnkgc3VjaCB1c2Ugd2lsbCB0aHJvdyBhbiBleGNlcHRpb24uXCJcbiBbdGNvbGxdXG4gKC1wZXJzaXN0ZW50ISB0Y29sbCkpXG4ifSB7OnN5bSBzZXQtcHJpbnQtZm4hLCA6bWV0YSB7OmRvYyAiU2V0ICpwcmludC1mbiogdG8gZi4iLCA6YXJnbGlzdHMgKFtmXSl9LCA6c291cmNlICIoZGVmbiBzZXQtcHJpbnQtZm4hIFwiU2V0ICpwcmludC1mbiogdG8gZi5cIiBbZl0gKHNldCEgKnByaW50LWZuKiBmKSlcbiJ9IHs6c3ltIG5uZXh0LCA6bWV0YSB7OmRvYyAiU2FtZSBhcyAobmV4dCAobmV4dCB4KSkiLCA6YXJnbGlzdHMgKFtjb2xsXSl9LCA6c291cmNlICIoZGVmbiBubmV4dCBcIlNhbWUgYXMgKG5leHQgKG5leHQgeCkpXCIgW2NvbGxdIChuZXh0IChuZXh0IGNvbGwpKSlcbiJ9IHs6c3ltIGFkZC13YXRjaCwgOm1ldGEgezpkb2MgIkFkZHMgYSB3YXRjaCBmdW5jdGlvbiB0byBhbiBhdG9tIHJlZmVyZW5jZS4gVGhlIHdhdGNoIGZuIG11c3QgYmUgYVxuICBmbiBvZiA0IGFyZ3M6IGEga2V5LCB0aGUgcmVmZXJlbmNlLCBpdHMgb2xkLXN0YXRlLCBpdHNcbiAgbmV3LXN0YXRlLiBXaGVuZXZlciB0aGUgcmVmZXJlbmNlJ3Mgc3RhdGUgbWlnaHQgaGF2ZSBiZWVuIGNoYW5nZWQsXG4gIGFueSByZWdpc3RlcmVkIHdhdGNoZXMgd2lsbCBoYXZlIHRoZWlyIGZ1bmN0aW9ucyBjYWxsZWQuIFRoZSB3YXRjaFxuICBmbiB3aWxsIGJlIGNhbGxlZCBzeW5jaHJvbm91c2x5LiBOb3RlIHRoYXQgYW4gYXRvbSdzIHN0YXRlXG4gIG1heSBoYXZlIGNoYW5nZWQgYWdhaW4gcHJpb3IgdG8gdGhlIGZuIGNhbGwsIHNvIHVzZSBvbGQvbmV3LXN0YXRlXG4gIHJhdGhlciB0aGFuIGRlcmVmaW5nIHRoZSByZWZlcmVuY2UuIEtleXMgbXVzdCBiZSB1bmlxdWUgcGVyXG4gIHJlZmVyZW5jZSwgYW5kIGNhbiBiZSB1c2VkIHRvIHJlbW92ZSB0aGUgd2F0Y2ggd2l0aCByZW1vdmUtd2F0Y2gsXG4gIGJ1dCBhcmUgb3RoZXJ3aXNlIGNvbnNpZGVyZWQgb3BhcXVlIGJ5IHRoZSB3YXRjaCBtZWNoYW5pc20uICBCZWFyIGluXG4gIG1pbmQgdGhhdCByZWdhcmRsZXNzIG9mIHRoZSByZXN1bHQgb3IgYWN0aW9uIG9mIHRoZSB3YXRjaCBmbnMgdGhlXG4gIGF0b20ncyB2YWx1ZSB3aWxsIGNoYW5nZS4gIEV4YW1wbGU6XG5cbiAgICAgIChkZWYgYSAoYXRvbSAwKSlcbiAgICAgIChhZGQtd2F0Y2ggYSA6aW5jIChmbiBbayByIG8gbl0gKGFzc2VydCAoPT0gMCBuKSkpKVxuICAgICAgKHN3YXAhIGEgaW5jKVxuICAgICAgOzsgQXNzZXJ0aW9uIEVycm9yXG4gICAgICAoZGVyZWYgYSlcbiAgICAgIDs9PiAxIiwgOmFyZ2xpc3RzIChbaXJlZiBrZXkgZl0pfSwgOnNvdXJjZSAiKGRlZm5cbiBhZGQtd2F0Y2hcbiBcIkFkZHMgYSB3YXRjaCBmdW5jdGlvbiB0byBhbiBhdG9tIHJlZmVyZW5jZS4gVGhlIHdhdGNoIGZuIG11c3QgYmUgYVxcbiAgZm4gb2YgNCBhcmdzOiBhIGtleSwgdGhlIHJlZmVyZW5jZSwgaXRzIG9sZC1zdGF0ZSwgaXRzXFxuICBuZXctc3RhdGUuIFdoZW5ldmVyIHRoZSByZWZlcmVuY2UncyBzdGF0ZSBtaWdodCBoYXZlIGJlZW4gY2hhbmdlZCxcXG4gIGFueSByZWdpc3RlcmVkIHdhdGNoZXMgd2lsbCBoYXZlIHRoZWlyIGZ1bmN0aW9ucyBjYWxsZWQuIFRoZSB3YXRjaFxcbiAgZm4gd2lsbCBiZSBjYWxsZWQgc3luY2hyb25vdXNseS4gTm90ZSB0aGF0IGFuIGF0b20ncyBzdGF0ZVxcbiAgbWF5IGhhdmUgY2hhbmdlZCBhZ2FpbiBwcmlvciB0byB0aGUgZm4gY2FsbCwgc28gdXNlIG9sZC9uZXctc3RhdGVcXG4gIHJhdGhlciB0aGFuIGRlcmVmaW5nIHRoZSByZWZlcmVuY2UuIEtleXMgbXVzdCBiZSB1bmlxdWUgcGVyXFxuICByZWZlcmVuY2UsIGFuZCBjYW4gYmUgdXNlZCB0byByZW1vdmUgdGhlIHdhdGNoIHdpdGggcmVtb3ZlLXdhdGNoLFxcbiAgYnV0IGFyZSBvdGhlcndpc2UgY29uc2lkZXJlZCBvcGFxdWUgYnkgdGhlIHdhdGNoIG1lY2hhbmlzbS4gIEJlYXIgaW5cXG4gIG1pbmQgdGhhdCByZWdhcmRsZXNzIG9mIHRoZSByZXN1bHQgb3IgYWN0aW9uIG9mIHRoZSB3YXRjaCBmbnMgdGhlXFxuICBhdG9tJ3MgdmFsdWUgd2lsbCBjaGFuZ2UuICBFeGFtcGxlOlxcblxcbiAgICAgIChkZWYgYSAoYXRvbSAwKSlcXG4gICAgICAoYWRkLXdhdGNoIGEgOmluYyAoZm4gW2sgciBvIG5dIChhc3NlcnQgKD09IDAgbikpKSlcXG4gICAgICAoc3dhcCEgYSBpbmMpXFxuICAgICAgOzsgQXNzZXJ0aW9uIEVycm9yXFxuICAgICAgKGRlcmVmIGEpXFxuICAgICAgOz0+IDFcIlxuIFtpcmVmIGtleSBmXVxuICgtYWRkLXdhdGNoIGlyZWYga2V5IGYpXG4gaXJlZilcbiJ9IHs6c3ltIG5vdC1ldmVyeT8sIDptZXRhIHs6ZG9jICJSZXR1cm5zIGZhbHNlIGlmIChwcmVkIHgpIGlzIGxvZ2ljYWwgdHJ1ZSBmb3IgZXZlcnkgeCBpblxuICBjb2xsLCBlbHNlIHRydWUuIiwgOmFyZ2xpc3RzIChbcHJlZCBjb2xsXSl9LCA6c291cmNlICIoZGVmblxuIG5vdC1ldmVyeT9cbiBcIlJldHVybnMgZmFsc2UgaWYgKHByZWQgeCkgaXMgbG9naWNhbCB0cnVlIGZvciBldmVyeSB4IGluXFxuICBjb2xsLCBlbHNlIHRydWUuXCJcbiBbcHJlZCBjb2xsXVxuIChub3QgKGV2ZXJ5PyBwcmVkIGNvbGwpKSlcbiJ9IHs6c3ltIHJlbSwgOm1ldGEgezpkb2MgInJlbWFpbmRlciBvZiBkaXZpZGluZyBudW1lcmF0b3IgYnkgZGVub21pbmF0b3IuIiwgOmFyZ2xpc3RzIChbbiBkXSl9LCA6c291cmNlICIoZGVmblxuIHJlbVxuIFwicmVtYWluZGVyIG9mIGRpdmlkaW5nIG51bWVyYXRvciBieSBkZW5vbWluYXRvci5cIlxuIFtuIGRdXG4gKGxldCBbcSAocXVvdCBuIGQpXSAoLSBuICgqIGQgcSkpKSlcbiJ9IHs6c3ltIGlmaW5kPywgOm1ldGEgezpkb2MgIlJldHVybnMgdHJ1ZSBpZiBjb2xsIGltcGxlbWVudHMgSUZpbmQiLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmblxuIGlmaW5kP1xuIFwiUmV0dXJucyB0cnVlIGlmIGNvbGwgaW1wbGVtZW50cyBJRmluZFwiXG4gW3hdXG4gKHNhdGlzZmllcz8gSUZpbmQgeCkpXG4ifSB7OnN5bSBzb21lLCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0aGUgZmlyc3QgbG9naWNhbCB0cnVlIHZhbHVlIG9mIChwcmVkIHgpIGZvciBhbnkgeCBpbiBjb2xsLFxuICBlbHNlIG5pbC4gIE9uZSBjb21tb24gaWRpb20gaXMgdG8gdXNlIGEgc2V0IGFzIHByZWQsIGZvciBleGFtcGxlXG4gIHRoaXMgd2lsbCByZXR1cm4gOmZyZWQgaWYgOmZyZWQgaXMgaW4gdGhlIHNlcXVlbmNlLCBvdGhlcndpc2UgbmlsOlxuICAoc29tZSAjezpmcmVkfSBjb2xsKSIsIDphcmdsaXN0cyAoW3ByZWQgY29sbF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBzb21lXG4gXCJSZXR1cm5zIHRoZSBmaXJzdCBsb2dpY2FsIHRydWUgdmFsdWUgb2YgKHByZWQgeCkgZm9yIGFueSB4IGluIGNvbGwsXFxuICBlbHNlIG5pbC4gIE9uZSBjb21tb24gaWRpb20gaXMgdG8gdXNlIGEgc2V0IGFzIHByZWQsIGZvciBleGFtcGxlXFxuICB0aGlzIHdpbGwgcmV0dXJuIDpmcmVkIGlmIDpmcmVkIGlzIGluIHRoZSBzZXF1ZW5jZSwgb3RoZXJ3aXNlIG5pbDpcXG4gIChzb21lICN7OmZyZWR9IGNvbGwpXCJcbiBbcHJlZCBjb2xsXVxuICh3aGVuLWxldCBbcyAoc2VxIGNvbGwpXSAob3IgKHByZWQgKGZpcnN0IHMpKSAocmVjdXIgcHJlZCAobmV4dCBzKSkpKSlcbiJ9IHs6c3ltIElOYW1lZCwgOm1ldGEgezpkb2MgIlByb3RvY29sIGZvciBhZGRpbmcgYSBuYW1lLiJ9LCA6bWV0aG9kcyAoLW5hbWUgLW5hbWVzcGFjZSl9IHs6c3ltIElSZWR1Y2UsIDptZXRhIHs6ZG9jICJQcm90b2NvbCBmb3Igc2VxIHR5cGVzIHRoYXQgY2FuIHJlZHVjZSB0aGVtc2VsdmVzLlxuICBDYWxsZWQgYnkgY2xqcy5jb3JlL3JlZHVjZS4ifSwgOm1ldGhvZHMgKC1yZWR1Y2UpfSB7OnN5bSBuZWctaW50PywgOm1ldGEgezpkb2MgIlJldHVybiB0cnVlIGlmIHggc2F0aXNmaWVzIGludD8gYW5kIGlzIG5lZ2F0aXZlLiIsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuXG4gbmVnLWludD9cbiBcIlJldHVybiB0cnVlIGlmIHggc2F0aXNmaWVzIGludD8gYW5kIGlzIG5lZ2F0aXZlLlwiXG4gW3hdXG4gKGNvbmRcbiAgKGludGVnZXI/IHgpXG4gIChuZWc/IHgpXG4gIChpbnN0YW5jZT8gZ29vZy5tYXRoLkludGVnZXIgeClcbiAgKC5pc05lZ2F0aXZlIHgpXG4gIChpbnN0YW5jZT8gZ29vZy5tYXRoLkxvbmcgeClcbiAgKC5pc05lZ2F0aXZlIHgpXG4gIDplbHNlXG4gIGZhbHNlKSlcbiJ9IHs6c3ltIGRyb3AsIDptZXRhIHs6ZG9jICJSZXR1cm5zIGEgbGF6eSBzZXF1ZW5jZSBvZiBhbGwgYnV0IHRoZSBmaXJzdCBuIGl0ZW1zIGluIGNvbGwuXG4gIFJldHVybnMgYSBzdGF0ZWZ1bCB0cmFuc2R1Y2VyIHdoZW4gbm8gY29sbGVjdGlvbiBpcyBwcm92aWRlZC4iLCA6YXJnbGlzdHMgW1tuXSBbbiBjb2xsXV19LCA6c291cmNlICIoZGVmblxuIGRyb3BcbiBcIlJldHVybnMgYSBsYXp5IHNlcXVlbmNlIG9mIGFsbCBidXQgdGhlIGZpcnN0IG4gaXRlbXMgaW4gY29sbC5cXG4gIFJldHVybnMgYSBzdGF0ZWZ1bCB0cmFuc2R1Y2VyIHdoZW4gbm8gY29sbGVjdGlvbiBpcyBwcm92aWRlZC5cIlxuIChbbl1cbiAgezpwcmUgWyhudW1iZXI/IG4pXX1cbiAgKGZuXG4gICBbcmZdXG4gICAobGV0XG4gICAgW25hICh2b2xhdGlsZSEgbildXG4gICAgKGZuXG4gICAgIChbXSAocmYpKVxuICAgICAoW3Jlc3VsdF0gKHJmIHJlc3VsdCkpXG4gICAgIChbcmVzdWx0IGlucHV0XVxuICAgICAgKGxldFxuICAgICAgIFtuIEBuYV1cbiAgICAgICAodnN3YXAhIG5hIGRlYylcbiAgICAgICAoaWYgKHBvcz8gbikgcmVzdWx0IChyZiByZXN1bHQgaW5wdXQpKSkpKSkpKVxuIChbbiBjb2xsXVxuICB7OnByZSBbKG51bWJlcj8gbildfVxuICAobGV0XG4gICBbc3RlcFxuICAgIChmblxuICAgICBbbiBjb2xsXVxuICAgICAobGV0XG4gICAgICBbcyAoc2VxIGNvbGwpXVxuICAgICAgKGlmIChhbmQgKHBvcz8gbikgcykgKHJlY3VyIChkZWMgbikgKHJlc3QgcykpIHMpKSldXG4gICAobGF6eS1zZXEgKHN0ZXAgbiBjb2xsKSkpKSlcbiJ9IHs6c3ltIGpzLW9iaiwgOm1ldGEgezpkb2MgIkNyZWF0ZSBKYXZhU3JpcHQgb2JqZWN0IGZyb20gYW4gZXZlbiBudW1iZXIgYXJndW1lbnRzIHJlcHJlc2VudGluZ1xuICBpbnRlcmxlYXZlZCBrZXlzIGFuZCB2YWx1ZXMuIiwgOmFyZ2xpc3RzIFtbXSBbJiBrZXl2YWxzXV19LCA6c291cmNlICIoZGVmblxuIGpzLW9ialxuIFwiQ3JlYXRlIEphdmFTcmlwdCBvYmplY3QgZnJvbSBhbiBldmVuIG51bWJlciBhcmd1bWVudHMgcmVwcmVzZW50aW5nXFxuICBpbnRlcmxlYXZlZCBrZXlzIGFuZCB2YWx1ZXMuXCJcbiAoW10gKGNsanMuY29yZS9qcy1vYmopKVxuIChbJiBrZXl2YWxzXSAoYXBwbHkgZ29iamVjdC9jcmVhdGUga2V5dmFscykpKVxuIn0gezpzeW0gSVRyYW5zaWVudENvbGxlY3Rpb24sIDptZXRhIHs6ZG9jICJQcm90b2NvbCBmb3IgYWRkaW5nIGJhc2ljIGZ1bmN0aW9uYWxpdHkgdG8gdHJhbnNpZW50IGNvbGxlY3Rpb25zLiJ9LCA6bWV0aG9kcyAoLWNvbmohIC1wZXJzaXN0ZW50ISl9IHs6c3ltIG50aCwgOm1ldGEgezpkb2MgIlJldHVybnMgdGhlIHZhbHVlIGF0IHRoZSBpbmRleC4gZ2V0IHJldHVybnMgbmlsIGlmIGluZGV4IG91dCBvZlxuICBib3VuZHMsIG50aCB0aHJvd3MgYW4gZXhjZXB0aW9uIHVubGVzcyBub3QtZm91bmQgaXMgc3VwcGxpZWQuICBudGhcbiAgYWxzbyB3b3JrcyBmb3Igc3RyaW5ncywgYXJyYXlzLCByZWdleCBNYXRjaGVycyBhbmQgTGlzdHMsIGFuZCxcbiAgaW4gTyhuKSB0aW1lLCBmb3Igc2VxdWVuY2VzLiIsIDphcmdsaXN0cyBbW2NvbGwgbl0gW2NvbGwgbiBub3QtZm91bmRdXX0sIDpzb3VyY2UgIihkZWZuXG4gbnRoXG4gXCJSZXR1cm5zIHRoZSB2YWx1ZSBhdCB0aGUgaW5kZXguIGdldCByZXR1cm5zIG5pbCBpZiBpbmRleCBvdXQgb2ZcXG4gIGJvdW5kcywgbnRoIHRocm93cyBhbiBleGNlcHRpb24gdW5sZXNzIG5vdC1mb3VuZCBpcyBzdXBwbGllZC4gIG50aFxcbiAgYWxzbyB3b3JrcyBmb3Igc3RyaW5ncywgYXJyYXlzLCByZWdleCBNYXRjaGVycyBhbmQgTGlzdHMsIGFuZCxcXG4gIGluIE8obikgdGltZSwgZm9yIHNlcXVlbmNlcy5cIlxuIChbY29sbCBuXVxuICAoY29uZFxuICAgKG5vdCAobnVtYmVyPyBuKSlcbiAgICh0aHJvdyAoanMvRXJyb3IuIFwiSW5kZXggYXJndW1lbnQgdG8gbnRoIG11c3QgYmUgYSBudW1iZXJcIikpXG4gICAobmlsPyBjb2xsKVxuICAgY29sbFxuICAgKGltcGxlbWVudHM/IElJbmRleGVkIGNvbGwpXG4gICAoLW50aCBjb2xsIG4pXG4gICAoYXJyYXk/IGNvbGwpXG4gICAoaWZcbiAgICAoYW5kICg8IC0xIG4gKC4tbGVuZ3RoIGNvbGwpKSlcbiAgICAoYWdldCBjb2xsIChpbnQgbikpXG4gICAgKHRocm93IChqcy9FcnJvci4gXCJJbmRleCBvdXQgb2YgYm91bmRzXCIpKSlcbiAgIChzdHJpbmc/IGNvbGwpXG4gICAoaWZcbiAgICAoYW5kICg8IC0xIG4gKC4tbGVuZ3RoIGNvbGwpKSlcbiAgICAoLmNoYXJBdCBjb2xsIChpbnQgbikpXG4gICAgKHRocm93IChqcy9FcnJvci4gXCJJbmRleCBvdXQgb2YgYm91bmRzXCIpKSlcbiAgIChvciAoaW1wbGVtZW50cz8gSVNlcSBjb2xsKSAoaW1wbGVtZW50cz8gSVNlcXVlbnRpYWwgY29sbCkpXG4gICAoaWZcbiAgICAobmVnPyBuKVxuICAgICh0aHJvdyAoanMvRXJyb3IuIFwiSW5kZXggb3V0IG9mIGJvdW5kc1wiKSlcbiAgICAobGluZWFyLXRyYXZlcnNhbC1udGggY29sbCBuKSlcbiAgIChuYXRpdmUtc2F0aXNmaWVzPyBJSW5kZXhlZCBjb2xsKVxuICAgKC1udGggY29sbCBuKVxuICAgOmVsc2VcbiAgICh0aHJvd1xuICAgIChqcy9FcnJvci5cbiAgICAgKHN0clxuICAgICAgXCJudGggbm90IHN1cHBvcnRlZCBvbiB0aGlzIHR5cGUgXCJcbiAgICAgICh0eXBlLT5zdHIgKHR5cGUgY29sbCkpKSkpKSlcbiAoW2NvbGwgbiBub3QtZm91bmRdXG4gIChjb25kXG4gICAobm90IChudW1iZXI/IG4pKVxuICAgKHRocm93IChqcy9FcnJvci4gXCJJbmRleCBhcmd1bWVudCB0byBudGggbXVzdCBiZSBhIG51bWJlci5cIikpXG4gICAobmlsPyBjb2xsKVxuICAgbm90LWZvdW5kXG4gICAoaW1wbGVtZW50cz8gSUluZGV4ZWQgY29sbClcbiAgICgtbnRoIGNvbGwgbiBub3QtZm91bmQpXG4gICAoYXJyYXk/IGNvbGwpXG4gICAoaWYgKGFuZCAoPCAtMSBuICguLWxlbmd0aCBjb2xsKSkpIChhZ2V0IGNvbGwgKGludCBuKSkgbm90LWZvdW5kKVxuICAgKHN0cmluZz8gY29sbClcbiAgIChpZiAoYW5kICg8IC0xIG4gKC4tbGVuZ3RoIGNvbGwpKSkgKC5jaGFyQXQgY29sbCAoaW50IG4pKSBub3QtZm91bmQpXG4gICAob3IgKGltcGxlbWVudHM/IElTZXEgY29sbCkgKGltcGxlbWVudHM/IElTZXF1ZW50aWFsIGNvbGwpKVxuICAgKGlmIChuZWc/IG4pIG5vdC1mb3VuZCAobGluZWFyLXRyYXZlcnNhbC1udGggY29sbCBuIG5vdC1mb3VuZCkpXG4gICAobmF0aXZlLXNhdGlzZmllcz8gSUluZGV4ZWQgY29sbClcbiAgICgtbnRoIGNvbGwgbiBub3QtZm91bmQpXG4gICA6ZWxzZVxuICAgKHRocm93XG4gICAgKGpzL0Vycm9yLlxuICAgICAoc3RyXG4gICAgICBcIm50aCBub3Qgc3VwcG9ydGVkIG9uIHRoaXMgdHlwZSBcIlxuICAgICAgKHR5cGUtPnN0ciAodHlwZSBjb2xsKSkpKSkpKSlcbiJ9IHs6c3ltIHNvcnRlZD8sIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRydWUgaWYgY29sbCBzYXRpc2ZpZXMgSVNvcnRlZCIsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuXG4gc29ydGVkP1xuIFwiUmV0dXJucyB0cnVlIGlmIGNvbGwgc2F0aXNmaWVzIElTb3J0ZWRcIlxuIFt4XVxuIChzYXRpc2ZpZXM/IElTb3J0ZWQgeCkpXG4ifSB7OnN5bSBuaWw/LCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0cnVlIGlmIHggaXMgbmlsLCBmYWxzZSBvdGhlcndpc2UuIiwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBuaWw/XG4gXCJSZXR1cm5zIHRydWUgaWYgeCBpcyBuaWwsIGZhbHNlIG90aGVyd2lzZS5cIlxuIFt4XVxuIChjb2VyY2l2ZS09IHggbmlsKSlcbiJ9IHs6c3ltIHNwbGl0LWF0LCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIHZlY3RvciBvZiBbKHRha2UgbiBjb2xsKSAoZHJvcCBuIGNvbGwpXSIsIDphcmdsaXN0cyAoW24gY29sbF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBzcGxpdC1hdFxuIFwiUmV0dXJucyBhIHZlY3RvciBvZiBbKHRha2UgbiBjb2xsKSAoZHJvcCBuIGNvbGwpXVwiXG4gW24gY29sbF1cbiBbKHRha2UgbiBjb2xsKSAoZHJvcCBuIGNvbGwpXSlcbiJ9IHs6c3ltIHBybi1zdHItd2l0aC1vcHRzLCA6bWV0YSB7OmRvYyAiU2FtZSBhcyBwci1zdHItd2l0aC1vcHRzIGZvbGxvd2VkIGJ5IChuZXdsaW5lKSIsIDphcmdsaXN0cyAoW29ianMgb3B0c10pfSwgOnNvdXJjZSAiKGRlZm5cbiBwcm4tc3RyLXdpdGgtb3B0c1xuIFwiU2FtZSBhcyBwci1zdHItd2l0aC1vcHRzIGZvbGxvd2VkIGJ5IChuZXdsaW5lKVwiXG4gW29ianMgb3B0c11cbiAoaWZcbiAgKGVtcHR5PyBvYmpzKVxuICBcIlxcblwiXG4gIChsZXRcbiAgIFtzYiAocHItc2Itd2l0aC1vcHRzIG9ianMgb3B0cyldXG4gICAoLmFwcGVuZCBzYiBcXG5ld2xpbmUpXG4gICAoc3RyIHNiKSkpKVxuIn0gezpzeW0gbm90LW5hdGl2ZSwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgbm90LW5hdGl2ZSBuaWwpXG4ifSB7OnN5bSByYW5kb20tc2FtcGxlLCA6bWV0YSB7OmRvYyAiUmV0dXJucyBpdGVtcyBmcm9tIGNvbGwgd2l0aCByYW5kb20gcHJvYmFiaWxpdHkgb2YgcHJvYiAoMC4wIC1cbiAgMS4wKS4gIFJldHVybnMgYSB0cmFuc2R1Y2VyIHdoZW4gbm8gY29sbGVjdGlvbiBpcyBwcm92aWRlZC4iLCA6YXJnbGlzdHMgW1twcm9iXSBbcHJvYiBjb2xsXV19LCA6c291cmNlICIoZGVmblxuIHJhbmRvbS1zYW1wbGVcbiBcIlJldHVybnMgaXRlbXMgZnJvbSBjb2xsIHdpdGggcmFuZG9tIHByb2JhYmlsaXR5IG9mIHByb2IgKDAuMCAtXFxuICAxLjApLiAgUmV0dXJucyBhIHRyYW5zZHVjZXIgd2hlbiBubyBjb2xsZWN0aW9uIGlzIHByb3ZpZGVkLlwiXG4gKFtwcm9iXSAoZmlsdGVyIChmbiBbX10gKDwgKHJhbmQpIHByb2IpKSkpXG4gKFtwcm9iIGNvbGxdIChmaWx0ZXIgKGZuIFtfXSAoPCAocmFuZCkgcHJvYikpIGNvbGwpKSlcbiJ9IHs6c3ltIHNlbGVjdC1rZXlzLCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIG1hcCBjb250YWluaW5nIG9ubHkgdGhvc2UgZW50cmllcyBpbiBtYXAgd2hvc2Uga2V5IGlzIGluIGtleXMiLCA6YXJnbGlzdHMgKFttYXAga2V5c2VxXSl9LCA6c291cmNlICIoZGVmblxuIHNlbGVjdC1rZXlzXG4gXCJSZXR1cm5zIGEgbWFwIGNvbnRhaW5pbmcgb25seSB0aG9zZSBlbnRyaWVzIGluIG1hcCB3aG9zZSBrZXkgaXMgaW4ga2V5c1wiXG4gW21hcCBrZXlzZXFdXG4gKGxvb3BcbiAgW3JldCB7fSBrZXlzIChzZXEga2V5c2VxKV1cbiAgKGlmXG4gICBrZXlzXG4gICAobGV0XG4gICAgW2tleSAoZmlyc3Qga2V5cykgZW50cnkgKGdldCBtYXAga2V5IDpjbGpzLmNvcmUvbm90LWZvdW5kKV1cbiAgICAocmVjdXJcbiAgICAgKGlmIChub3Q9IGVudHJ5IDpjbGpzLmNvcmUvbm90LWZvdW5kKSAoYXNzb2MgcmV0IGtleSBlbnRyeSkgcmV0KVxuICAgICAobmV4dCBrZXlzKSkpXG4gICAoLXdpdGgtbWV0YSByZXQgKG1ldGEgbWFwKSkpKSlcbiJ9IHs6c3ltIGJpdC1hbmQsIDptZXRhIHs6ZG9jICJCaXR3aXNlIGFuZCIsIDphcmdsaXN0cyBbW3ggeV0gW3ggeSAmIG1vcmVdXX0sIDpzb3VyY2UgIihkZWZuXG4gYml0LWFuZFxuIFwiQml0d2lzZSBhbmRcIlxuIChbeCB5XSAoY2xqcy5jb3JlL2JpdC1hbmQgeCB5KSlcbiAoW3ggeSAmIG1vcmVdIChyZWR1Y2UgYml0LWFuZCAoY2xqcy5jb3JlL2JpdC1hbmQgeCB5KSBtb3JlKSkpXG4ifSB7OnN5bSBib3VuZGVkLWNvdW50LCA6bWV0YSB7OmRvYyAiSWYgY29sbCBpcyBjb3VudGVkPyByZXR1cm5zIGl0cyBjb3VudCwgZWxzZSB3aWxsIGNvdW50IGF0IG1vc3QgdGhlIGZpcnN0IG5cbiAgIGVsZW1lbnRzIG9mIGNvbGwgdXNpbmcgaXRzIHNlcSIsIDphcmdsaXN0cyAoW24gY29sbF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBib3VuZGVkLWNvdW50XG4gXCJJZiBjb2xsIGlzIGNvdW50ZWQ/IHJldHVybnMgaXRzIGNvdW50LCBlbHNlIHdpbGwgY291bnQgYXQgbW9zdCB0aGUgZmlyc3QgblxcbiAgIGVsZW1lbnRzIG9mIGNvbGwgdXNpbmcgaXRzIHNlcVwiXG4gezphZGRlZCBcIjEuOVwifVxuIFtuIGNvbGxdXG4gKGlmXG4gIChjb3VudGVkPyBjb2xsKVxuICAoY291bnQgY29sbClcbiAgKGxvb3BcbiAgIFtpIDAgcyAoc2VxIGNvbGwpXVxuICAgKGlmIChhbmQgKG5vdCAobmlsPyBzKSkgKDwgaSBuKSkgKHJlY3VyIChpbmMgaSkgKG5leHQgcykpIGkpKSkpXG4ifSB7OnN5bSB1cGRhdGUsIDptZXRhIHs6ZG9jICInVXBkYXRlcycgYSB2YWx1ZSBpbiBhbiBhc3NvY2lhdGl2ZSBzdHJ1Y3R1cmUsIHdoZXJlIGsgaXMgYVxuICBrZXkgYW5kIGYgaXMgYSBmdW5jdGlvbiB0aGF0IHdpbGwgdGFrZSB0aGUgb2xkIHZhbHVlXG4gIGFuZCBhbnkgc3VwcGxpZWQgYXJncyBhbmQgcmV0dXJuIHRoZSBuZXcgdmFsdWUsIGFuZCByZXR1cm5zIGEgbmV3XG4gIHN0cnVjdHVyZS4gIElmIHRoZSBrZXkgZG9lcyBub3QgZXhpc3QsIG5pbCBpcyBwYXNzZWQgYXMgdGhlIG9sZCB2YWx1ZS4iLCA6YXJnbGlzdHMgW1ttIGsgZl0gW20gayBmIHhdIFttIGsgZiB4IHldIFttIGsgZiB4IHkgel0gW20gayBmIHggeSB6ICYgbW9yZV1dfSwgOnNvdXJjZSAiKGRlZm5cbiB1cGRhdGVcbiBcIidVcGRhdGVzJyBhIHZhbHVlIGluIGFuIGFzc29jaWF0aXZlIHN0cnVjdHVyZSwgd2hlcmUgayBpcyBhXFxuICBrZXkgYW5kIGYgaXMgYSBmdW5jdGlvbiB0aGF0IHdpbGwgdGFrZSB0aGUgb2xkIHZhbHVlXFxuICBhbmQgYW55IHN1cHBsaWVkIGFyZ3MgYW5kIHJldHVybiB0aGUgbmV3IHZhbHVlLCBhbmQgcmV0dXJucyBhIG5ld1xcbiAgc3RydWN0dXJlLiAgSWYgdGhlIGtleSBkb2VzIG5vdCBleGlzdCwgbmlsIGlzIHBhc3NlZCBhcyB0aGUgb2xkIHZhbHVlLlwiXG4gKFttIGsgZl0gKGFzc29jIG0gayAoZiAoZ2V0IG0gaykpKSlcbiAoW20gayBmIHhdIChhc3NvYyBtIGsgKGYgKGdldCBtIGspIHgpKSlcbiAoW20gayBmIHggeV0gKGFzc29jIG0gayAoZiAoZ2V0IG0gaykgeCB5KSkpXG4gKFttIGsgZiB4IHkgel0gKGFzc29jIG0gayAoZiAoZ2V0IG0gaykgeCB5IHopKSlcbiAoW20gayBmIHggeSB6ICYgbW9yZV0gKGFzc29jIG0gayAoYXBwbHkgZiAoZ2V0IG0gaykgeCB5IHogbW9yZSkpKSlcbiJ9IHs6c3ltIGdlbnN5bV9jb3VudGVyLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiBnZW5zeW1fY291bnRlciBuaWwpXG4ifSB7OnN5bSBmaW5kLW1hY3Jvcy1ucywgOm1ldGEgezpkb2MgIlJldHVybnMgdGhlIG1hY3JvcyBuYW1lc3BhY2UgbmFtZWQgYnkgdGhlIHN5bWJvbCBvciBuaWwgaWYgaXQgZG9lc24ndCBleGlzdC5cbiAgQm9vdHN0cmFwIG9ubHkuIiwgOmFyZ2xpc3RzIChbbnNdKX0sIDpzb3VyY2UgIihkZWZuXG4gZmluZC1tYWNyb3MtbnNcbiBcIlJldHVybnMgdGhlIG1hY3JvcyBuYW1lc3BhY2UgbmFtZWQgYnkgdGhlIHN5bWJvbCBvciBuaWwgaWYgaXQgZG9lc24ndCBleGlzdC5cXG4gIEJvb3RzdHJhcCBvbmx5LlwiXG4gW25zXVxuICh3aGVuIChuaWw/IE5TX0NBQ0hFKSAoc2V0ISBOU19DQUNIRSAoYXRvbSB7fSkpKVxuIChsZXRcbiAgW25zLXN0clxuICAgKHN0ciBucylcbiAgIG5zXG4gICAoaWZcbiAgICAobm90IChnc3RyaW5nL2NvbnRhaW5zIG5zLXN0ciBcIiRtYWNyb3NcIikpXG4gICAgKHN5bWJvbCAoc3RyIG5zLXN0ciBcIiRtYWNyb3NcIikpXG4gICAgbnMpXG4gICB0aGUtbnNcbiAgIChnZXQgQE5TX0NBQ0hFIG5zKV1cbiAgKGlmLW5vdFxuICAgKG5pbD8gdGhlLW5zKVxuICAgdGhlLW5zXG4gICAobGV0XG4gICAgW25zLW9iaiAoZmluZC1ucy1vYmogbnMpXVxuICAgICh3aGVuLW5vdFxuICAgICAobmlsPyBucy1vYmopXG4gICAgIChsZXRcbiAgICAgIFtuZXctbnMgKGNyZWF0ZS1ucyBucyBucy1vYmopXVxuICAgICAgKHN3YXAhIE5TX0NBQ0hFIGFzc29jIG5zIG5ldy1ucylcbiAgICAgIG5ldy1ucykpKSkpKVxuIn0gezpzeW0gbGlzdCosIDptZXRhIHs6ZG9jICJDcmVhdGVzIGEgbmV3IGxpc3QgY29udGFpbmluZyB0aGUgaXRlbXMgcHJlcGVuZGVkIHRvIHRoZSByZXN0LCB0aGVcbiAgbGFzdCBvZiB3aGljaCB3aWxsIGJlIHRyZWF0ZWQgYXMgYSBzZXF1ZW5jZS4iLCA6YXJnbGlzdHMgW1thcmdzXSBbYSBhcmdzXSBbYSBiIGFyZ3NdIFthIGIgYyBhcmdzXSBbYSBiIGMgZCAmIG1vcmVdXX0sIDpzb3VyY2UgIihkZWZuXG4gbGlzdCpcbiBcIkNyZWF0ZXMgYSBuZXcgbGlzdCBjb250YWluaW5nIHRoZSBpdGVtcyBwcmVwZW5kZWQgdG8gdGhlIHJlc3QsIHRoZVxcbiAgbGFzdCBvZiB3aGljaCB3aWxsIGJlIHRyZWF0ZWQgYXMgYSBzZXF1ZW5jZS5cIlxuIChbYXJnc10gKHNlcSBhcmdzKSlcbiAoW2EgYXJnc10gKGNvbnMgYSBhcmdzKSlcbiAoW2EgYiBhcmdzXSAoY29ucyBhIChjb25zIGIgYXJncykpKVxuIChbYSBiIGMgYXJnc10gKGNvbnMgYSAoY29ucyBiIChjb25zIGMgYXJncykpKSlcbiAoW2EgYiBjIGQgJiBtb3JlXSAoY29ucyBhIChjb25zIGIgKGNvbnMgYyAoY29ucyBkIChzcHJlYWQgbW9yZSkpKSkpKSlcbiJ9IHs6c3ltIHVwZGF0ZS1pbiwgOm1ldGEgezpkb2MgIidVcGRhdGVzJyBhIHZhbHVlIGluIGEgbmVzdGVkIGFzc29jaWF0aXZlIHN0cnVjdHVyZSwgd2hlcmUga3MgaXMgYVxuICBzZXF1ZW5jZSBvZiBrZXlzIGFuZCBmIGlzIGEgZnVuY3Rpb24gdGhhdCB3aWxsIHRha2UgdGhlIG9sZCB2YWx1ZVxuICBhbmQgYW55IHN1cHBsaWVkIGFyZ3MgYW5kIHJldHVybiB0aGUgbmV3IHZhbHVlLCBhbmQgcmV0dXJucyBhIG5ld1xuICBuZXN0ZWQgc3RydWN0dXJlLiAgSWYgYW55IGxldmVscyBkbyBub3QgZXhpc3QsIGhhc2gtbWFwcyB3aWxsIGJlXG4gIGNyZWF0ZWQuIiwgOmFyZ2xpc3RzIFtbbSBbayAmIGtzXSBmXSBbbSBbayAmIGtzXSBmIGFdIFttIFtrICYga3NdIGYgYSBiXSBbbSBbayAmIGtzXSBmIGEgYiBjXSBbbSBbayAmIGtzXSBmIGEgYiBjICYgYXJnc11dfSwgOnNvdXJjZSAiKGRlZm5cbiB1cGRhdGUtaW5cbiBcIidVcGRhdGVzJyBhIHZhbHVlIGluIGEgbmVzdGVkIGFzc29jaWF0aXZlIHN0cnVjdHVyZSwgd2hlcmUga3MgaXMgYVxcbiAgc2VxdWVuY2Ugb2Yga2V5cyBhbmQgZiBpcyBhIGZ1bmN0aW9uIHRoYXQgd2lsbCB0YWtlIHRoZSBvbGQgdmFsdWVcXG4gIGFuZCBhbnkgc3VwcGxpZWQgYXJncyBhbmQgcmV0dXJuIHRoZSBuZXcgdmFsdWUsIGFuZCByZXR1cm5zIGEgbmV3XFxuICBuZXN0ZWQgc3RydWN0dXJlLiAgSWYgYW55IGxldmVscyBkbyBub3QgZXhpc3QsIGhhc2gtbWFwcyB3aWxsIGJlXFxuICBjcmVhdGVkLlwiXG4gKFttIFtrICYga3NdIGZdXG4gIChpZlxuICAga3NcbiAgIChhc3NvYyBtIGsgKHVwZGF0ZS1pbiAoZ2V0IG0gaykga3MgZikpXG4gICAoYXNzb2MgbSBrIChmIChnZXQgbSBrKSkpKSlcbiAoW20gW2sgJiBrc10gZiBhXVxuICAoaWZcbiAgIGtzXG4gICAoYXNzb2MgbSBrICh1cGRhdGUtaW4gKGdldCBtIGspIGtzIGYgYSkpXG4gICAoYXNzb2MgbSBrIChmIChnZXQgbSBrKSBhKSkpKVxuIChbbSBbayAmIGtzXSBmIGEgYl1cbiAgKGlmXG4gICBrc1xuICAgKGFzc29jIG0gayAodXBkYXRlLWluIChnZXQgbSBrKSBrcyBmIGEgYikpXG4gICAoYXNzb2MgbSBrIChmIChnZXQgbSBrKSBhIGIpKSkpXG4gKFttIFtrICYga3NdIGYgYSBiIGNdXG4gIChpZlxuICAga3NcbiAgIChhc3NvYyBtIGsgKHVwZGF0ZS1pbiAoZ2V0IG0gaykga3MgZiBhIGIgYykpXG4gICAoYXNzb2MgbSBrIChmIChnZXQgbSBrKSBhIGIgYykpKSlcbiAoW20gW2sgJiBrc10gZiBhIGIgYyAmIGFyZ3NdXG4gIChpZlxuICAga3NcbiAgIChhc3NvYyBtIGsgKGFwcGx5IHVwZGF0ZS1pbiAoZ2V0IG0gaykga3MgZiBhIGIgYyBhcmdzKSlcbiAgIChhc3NvYyBtIGsgKGFwcGx5IGYgKGdldCBtIGspIGEgYiBjIGFyZ3MpKSkpKVxuIn0gezpzeW0gcHJlZmVyLW1ldGhvZCwgOm1ldGEgezpkb2MgIkNhdXNlcyB0aGUgbXVsdGltZXRob2QgdG8gcHJlZmVyIG1hdGNoZXMgb2YgZGlzcGF0Y2gtdmFsLXggb3ZlciBkaXNwYXRjaC12YWwteVxuICAgd2hlbiB0aGVyZSBpcyBhIGNvbmZsaWN0IiwgOmFyZ2xpc3RzIChbbXVsdGlmbiBkaXNwYXRjaC12YWwteCBkaXNwYXRjaC12YWwteV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBwcmVmZXItbWV0aG9kXG4gXCJDYXVzZXMgdGhlIG11bHRpbWV0aG9kIHRvIHByZWZlciBtYXRjaGVzIG9mIGRpc3BhdGNoLXZhbC14IG92ZXIgZGlzcGF0Y2gtdmFsLXlcXG4gICB3aGVuIHRoZXJlIGlzIGEgY29uZmxpY3RcIlxuIFttdWx0aWZuIGRpc3BhdGNoLXZhbC14IGRpc3BhdGNoLXZhbC15XVxuICgtcHJlZmVyLW1ldGhvZCBtdWx0aWZuIGRpc3BhdGNoLXZhbC14IGRpc3BhdGNoLXZhbC15KSlcbiJ9IHs6c3ltIGVuc3VyZS1yZWR1Y2VkLCA6bWV0YSB7OmRvYyAiSWYgeCBpcyBhbHJlYWR5IHJlZHVjZWQ/LCByZXR1cm5zIGl0LCBlbHNlIHJldHVybnMgKHJlZHVjZWQgeCkiLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmblxuIGVuc3VyZS1yZWR1Y2VkXG4gXCJJZiB4IGlzIGFscmVhZHkgcmVkdWNlZD8sIHJldHVybnMgaXQsIGVsc2UgcmV0dXJucyAocmVkdWNlZCB4KVwiXG4gW3hdXG4gKGlmIChyZWR1Y2VkPyB4KSB4IChyZWR1Y2VkIHgpKSlcbiJ9IHs6c3ltIGluc3RhbmNlPywgOm1ldGEgezpkb2MgIkV2YWx1YXRlcyB4IGFuZCB0ZXN0cyBpZiBpdCBpcyBhbiBpbnN0YW5jZSBvZiB0aGUgdHlwZVxuICBjLiBSZXR1cm5zIHRydWUgb3IgZmFsc2UiLCA6YXJnbGlzdHMgKFtjIHhdKX0sIDpzb3VyY2UgIihkZWZuXG4gaW5zdGFuY2U/XG4gXCJFdmFsdWF0ZXMgeCBhbmQgdGVzdHMgaWYgaXQgaXMgYW4gaW5zdGFuY2Ugb2YgdGhlIHR5cGVcXG4gIGMuIFJldHVybnMgdHJ1ZSBvciBmYWxzZVwiXG4gW2MgeF1cbiAoY2xqcy5jb3JlL2luc3RhbmNlPyBjIHgpKVxuIn0gezpzeW0gbWl4LWNvbGxlY3Rpb24taGFzaCwgOm1ldGEgezpkb2MgIk1peCBmaW5hbCBjb2xsZWN0aW9uIGhhc2ggZm9yIG9yZGVyZWQgb3IgdW5vcmRlcmVkIGNvbGxlY3Rpb25zLlxuICAgaGFzaC1iYXNpcyBpcyB0aGUgY29tYmluZWQgY29sbGVjdGlvbiBoYXNoLCBjb3VudCBpcyB0aGUgbnVtYmVyXG4gICBvZiBlbGVtZW50cyBpbmNsdWRlZCBpbiB0aGUgYmFzaXMuIE5vdGUgdGhpcyBpcyB0aGUgaGFzaCBjb2RlXG4gICBjb25zaXN0ZW50IHdpdGggPSwgZGlmZmVyZW50IGZyb20gLmhhc2hDb2RlLlxuICAgU2VlIGh0dHA6Ly9jbG9qdXJlLm9yZy9kYXRhX3N0cnVjdHVyZXMjaGFzaCBmb3IgZnVsbCBhbGdvcml0aG1zLiIsIDphcmdsaXN0cyAoW2hhc2gtYmFzaXMgY291bnRdKX0sIDpzb3VyY2UgIihkZWZuXG4gbWl4LWNvbGxlY3Rpb24taGFzaFxuIFwiTWl4IGZpbmFsIGNvbGxlY3Rpb24gaGFzaCBmb3Igb3JkZXJlZCBvciB1bm9yZGVyZWQgY29sbGVjdGlvbnMuXFxuICAgaGFzaC1iYXNpcyBpcyB0aGUgY29tYmluZWQgY29sbGVjdGlvbiBoYXNoLCBjb3VudCBpcyB0aGUgbnVtYmVyXFxuICAgb2YgZWxlbWVudHMgaW5jbHVkZWQgaW4gdGhlIGJhc2lzLiBOb3RlIHRoaXMgaXMgdGhlIGhhc2ggY29kZVxcbiAgIGNvbnNpc3RlbnQgd2l0aCA9LCBkaWZmZXJlbnQgZnJvbSAuaGFzaENvZGUuXFxuICAgU2VlIGh0dHA6Ly9jbG9qdXJlLm9yZy9kYXRhX3N0cnVjdHVyZXMjaGFzaCBmb3IgZnVsbCBhbGdvcml0aG1zLlwiXG4gW2hhc2gtYmFzaXMgY291bnRdXG4gKGxldFxuICBbaDEgbTMtc2VlZCBrMSAobTMtbWl4LUsxIGhhc2gtYmFzaXMpIGgxIChtMy1taXgtSDEgaDEgazEpXVxuICAobTMtZm1peCBoMSBjb3VudCkpKVxuIn0gezpzeW0gcmUtZmluZCwgOm1ldGEgezpkb2MgIlJldHVybnMgdGhlIGZpcnN0IHJlZ2V4IG1hdGNoLCBpZiBhbnksIG9mIHMgdG8gcmUsIHVzaW5nXG4gIHJlLmV4ZWMocykuIFJldHVybnMgYSB2ZWN0b3IsIGNvbnRhaW5pbmcgZmlyc3QgdGhlIG1hdGNoaW5nXG4gIHN1YnN0cmluZywgdGhlbiBhbnkgY2FwdHVyaW5nIGdyb3VwcyBpZiB0aGUgcmVndWxhciBleHByZXNzaW9uIGNvbnRhaW5zXG4gIGNhcHR1cmluZyBncm91cHMuIiwgOmFyZ2xpc3RzIChbcmUgc10pfSwgOnNvdXJjZSAiKGRlZm5cbiByZS1maW5kXG4gXCJSZXR1cm5zIHRoZSBmaXJzdCByZWdleCBtYXRjaCwgaWYgYW55LCBvZiBzIHRvIHJlLCB1c2luZ1xcbiAgcmUuZXhlYyhzKS4gUmV0dXJucyBhIHZlY3RvciwgY29udGFpbmluZyBmaXJzdCB0aGUgbWF0Y2hpbmdcXG4gIHN1YnN0cmluZywgdGhlbiBhbnkgY2FwdHVyaW5nIGdyb3VwcyBpZiB0aGUgcmVndWxhciBleHByZXNzaW9uIGNvbnRhaW5zXFxuICBjYXB0dXJpbmcgZ3JvdXBzLlwiXG4gW3JlIHNdXG4gKGlmXG4gIChzdHJpbmc/IHMpXG4gIChsZXRcbiAgIFttYXRjaGVzICguZXhlYyByZSBzKV1cbiAgICh3aGVuLW5vdFxuICAgIChuaWw/IG1hdGNoZXMpXG4gICAgKGlmICg9PSAoY291bnQgbWF0Y2hlcykgMSkgKGFnZXQgbWF0Y2hlcyAwKSAodmVjIG1hdGNoZXMpKSkpXG4gICh0aHJvdyAoanMvVHlwZUVycm9yLiBcInJlLWZpbmQgbXVzdCBtYXRjaCBhZ2FpbnN0IGEgc3RyaW5nLlwiKSkpKVxuIn0gezpzeW0gcnVuISwgOm1ldGEgezpkb2MgIlJ1bnMgdGhlIHN1cHBsaWVkIHByb2NlZHVyZSAodmlhIHJlZHVjZSksIGZvciBwdXJwb3NlcyBvZiBzaWRlXG4gIGVmZmVjdHMsIG9uIHN1Y2Nlc3NpdmUgaXRlbXMgaW4gdGhlIGNvbGxlY3Rpb24uIFJldHVybnMgbmlsIiwgOmFyZ2xpc3RzIChbcHJvYyBjb2xsXSl9LCA6c291cmNlICIoZGVmblxuIHJ1biFcbiBcIlJ1bnMgdGhlIHN1cHBsaWVkIHByb2NlZHVyZSAodmlhIHJlZHVjZSksIGZvciBwdXJwb3NlcyBvZiBzaWRlXFxuICBlZmZlY3RzLCBvbiBzdWNjZXNzaXZlIGl0ZW1zIGluIHRoZSBjb2xsZWN0aW9uLiBSZXR1cm5zIG5pbFwiXG4gW3Byb2MgY29sbF1cbiAocmVkdWNlIChmbiogW3AxX180MzE4MCMgcDJfXzQzMTc5I10gKHByb2MgcDJfXzQzMTc5IykpIG5pbCBjb2xsKVxuIG5pbClcbiJ9IHs6c3ltIHZhbCwgOm1ldGEgezpkb2MgIlJldHVybnMgdGhlIHZhbHVlIGluIHRoZSBtYXAgZW50cnkuIiwgOmFyZ2xpc3RzIChbbWFwLWVudHJ5XSl9LCA6c291cmNlICIoZGVmblxuIHZhbFxuIFwiUmV0dXJucyB0aGUgdmFsdWUgaW4gdGhlIG1hcCBlbnRyeS5cIlxuIFttYXAtZW50cnldXG4gKC12YWwgbWFwLWVudHJ5KSlcbiJ9IHs6c3ltIHVuY2hlY2tlZC1hZGQsIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRoZSBzdW0gb2YgbnVtcy4gKCspIHJldHVybnMgMC4iLCA6YXJnbGlzdHMgW1tdIFt4XSBbeCB5XSBbeCB5ICYgbW9yZV1dfSwgOnNvdXJjZSAiKGRlZm5cbiB1bmNoZWNrZWQtYWRkXG4gXCJSZXR1cm5zIHRoZSBzdW0gb2YgbnVtcy4gKCspIHJldHVybnMgMC5cIlxuIChbXSAwKVxuIChbeF0geClcbiAoW3ggeV0gKGNsanMuY29yZS91bmNoZWNrZWQtYWRkIHggeSkpXG4gKFt4IHkgJiBtb3JlXVxuICAocmVkdWNlIHVuY2hlY2tlZC1hZGQgKGNsanMuY29yZS91bmNoZWNrZWQtYWRkIHggeSkgbW9yZSkpKVxuIn0gezpzeW0gdHJhbnNmb3JtZXItaXRlcmF0b3IsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbeGZvcm0gc291cmNlSXRlciBtdWx0aV0pfSwgOnNvdXJjZSAiKGRlZm5cbiB0cmFuc2Zvcm1lci1pdGVyYXRvclxuIFt4Zm9ybSBzb3VyY2VJdGVyIG11bHRpXVxuIChsZXRcbiAgW2l0ZXJhdG9yXG4gICAoVHJhbnNmb3JtZXJJdGVyYXRvci4gRU1QVFkgTk9ORSBmYWxzZSBuaWwgc291cmNlSXRlciBtdWx0aSldXG4gIChzZXQhXG4gICAoLi14ZiBpdGVyYXRvcilcbiAgICh4Zm9ybVxuICAgIChmblxuICAgICAoW10gbmlsKVxuICAgICAoW2FjY10gYWNjKVxuICAgICAoW2FjYyBvXVxuICAgICAgKHNldCEgKC4tYnVmZmVyIGl0ZXJhdG9yKSAoLmFkZCAoLi1idWZmZXIgaXRlcmF0b3IpIG8pKVxuICAgICAgYWNjKSkpKVxuICBpdGVyYXRvcikpXG4ifSB7OnN5bSBub3QsIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRydWUgaWYgeCBpcyBsb2dpY2FsIGZhbHNlLCBmYWxzZSBvdGhlcndpc2UuIiwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBub3RcbiBcIlJldHVybnMgdHJ1ZSBpZiB4IGlzIGxvZ2ljYWwgZmFsc2UsIGZhbHNlIG90aGVyd2lzZS5cIlxuIFt4XVxuIChjb25kIChuaWw/IHgpIHRydWUgKGZhbHNlPyB4KSB0cnVlIDplbHNlIGZhbHNlKSlcbiJ9IHs6c3ltIC12cmVzZXQhLCA6bWV0YSB7OmRvYyAiU2V0cyB0aGUgdmFsdWUgb2Ygdm9sYXRpbGUgbyB0byBuZXctdmFsdWUgd2l0aG91dCByZWdhcmQgZm9yIHRoZVxuICAgICBjdXJyZW50IHZhbHVlLiBSZXR1cm5zIG5ldy12YWx1ZS4iLCA6YXJnbGlzdHMgKFtvIG5ldy12YWx1ZV0pfSwgOnByb3RvY29sIElWb2xhdGlsZX0gezpzeW0gd2l0aC1tZXRhLCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhbiBvYmplY3Qgb2YgdGhlIHNhbWUgdHlwZSBhbmQgdmFsdWUgYXMgb2JqLCB3aXRoXG4gIG1hcCBtIGFzIGl0cyBtZXRhZGF0YS4iLCA6YXJnbGlzdHMgKFtvIG1ldGFdKX0sIDpzb3VyY2UgIihkZWZuXG4gd2l0aC1tZXRhXG4gXCJSZXR1cm5zIGFuIG9iamVjdCBvZiB0aGUgc2FtZSB0eXBlIGFuZCB2YWx1ZSBhcyBvYmosIHdpdGhcXG4gIG1hcCBtIGFzIGl0cyBtZXRhZGF0YS5cIlxuIFtvIG1ldGFdXG4gKGlmXG4gIChqcy1mbj8gbylcbiAgKE1ldGFGbi4gbyBtZXRhKVxuICAod2hlbi1ub3QgKG5pbD8gbykgKC13aXRoLW1ldGEgbyBtZXRhKSkpKVxuIn0gezpzeW0gdW5yZWR1Y2VkLCA6bWV0YSB7OmRvYyAiSWYgeCBpcyByZWR1Y2VkPywgcmV0dXJucyAoZGVyZWYgeCksIGVsc2UgcmV0dXJucyB4IiwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm5cbiB1bnJlZHVjZWRcbiBcIklmIHggaXMgcmVkdWNlZD8sIHJldHVybnMgKGRlcmVmIHgpLCBlbHNlIHJldHVybnMgeFwiXG4gW3hdXG4gKGlmIChyZWR1Y2VkPyB4KSAoZGVyZWYgeCkgeCkpXG4ifSB7OnN5bSByZWNvcmQ/LCA6bWV0YSB7OmRvYyAiUmV0dXJuIHRydWUgaWYgeCBzYXRpc2ZpZXMgSVJlY29yZCIsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuXG4gcmVjb3JkP1xuIFwiUmV0dXJuIHRydWUgaWYgeCBzYXRpc2ZpZXMgSVJlY29yZFwiXG4gW3hdXG4gKHNhdGlzZmllcz8gSVJlY29yZCB4KSlcbiJ9IHs6c3ltIHR5cGUsIDptZXRhIHs6ZG9jICJSZXR1cm4geCdzIGNvbnN0cnVjdG9yLiIsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuXG4gdHlwZVxuIFwiUmV0dXJuIHgncyBjb25zdHJ1Y3Rvci5cIlxuIFt4XVxuICh3aGVuLW5vdCAobmlsPyB4KSAoLi1jb25zdHJ1Y3RvciB4KSkpXG4ifSB7OnN5bSBpZGVudGljYWw/LCA6bWV0YSB7OmRvYyAiVGVzdHMgaWYgMiBhcmd1bWVudHMgYXJlIHRoZSBzYW1lIG9iamVjdCIsIDphcmdsaXN0cyAoW3ggeV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBpZGVudGljYWw/XG4gXCJUZXN0cyBpZiAyIGFyZ3VtZW50cyBhcmUgdGhlIHNhbWUgb2JqZWN0XCJcbiBbeCB5XVxuIChjbGpzLmNvcmUvaWRlbnRpY2FsPyB4IHkpKVxuIn0gezpzeW0gLW5hbWVzcGFjZSwgOm1ldGEgezpkb2MgIlJldHVybnMgdGhlIG5hbWVzcGFjZSBTdHJpbmcgb2YgeC4iLCA6YXJnbGlzdHMgKFt4XSl9LCA6cHJvdG9jb2wgSU5hbWVkfSB7OnN5bSB1bmNoZWNrZWQtZGl2aWRlLWludCwgOm1ldGEgezpkb2MgIklmIG5vIGRlbm9taW5hdG9ycyBhcmUgc3VwcGxpZWQsIHJldHVybnMgMS9udW1lcmF0b3IsXG4gIGVsc2UgcmV0dXJucyBudW1lcmF0b3IgZGl2aWRlZCBieSBhbGwgb2YgdGhlIGRlbm9taW5hdG9ycy4iLCA6YXJnbGlzdHMgW1t4XSBbeCB5XSBbeCB5ICYgbW9yZV1dfSwgOnNvdXJjZSAiKGRlZm5cbiB1bmNoZWNrZWQtZGl2aWRlLWludFxuIFwiSWYgbm8gZGVub21pbmF0b3JzIGFyZSBzdXBwbGllZCwgcmV0dXJucyAxL251bWVyYXRvcixcXG4gIGVsc2UgcmV0dXJucyBudW1lcmF0b3IgZGl2aWRlZCBieSBhbGwgb2YgdGhlIGRlbm9taW5hdG9ycy5cIlxuIChbeF0gKHVuY2hlY2tlZC1kaXZpZGUtaW50IDEgeCkpXG4gKFt4IHldIChjbGpzLmNvcmUvZGl2aWRlIHggeSkpXG4gKFt4IHkgJiBtb3JlXVxuICAocmVkdWNlIHVuY2hlY2tlZC1kaXZpZGUtaW50ICh1bmNoZWNrZWQtZGl2aWRlLWludCB4IHkpIG1vcmUpKSlcbiJ9IHs6c3ltIG5zLW5hbWUsIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRoZSBuYW1lIG9mIHRoZSBuYW1lc3BhY2UsIGEgTmFtZXNwYWNlIG9iamVjdC5cbiAgQm9vdHN0cmFwIG9ubHkuIiwgOmFyZ2xpc3RzIChbbnMtb2JqXSl9LCA6c291cmNlICIoZGVmblxuIG5zLW5hbWVcbiBcIlJldHVybnMgdGhlIG5hbWUgb2YgdGhlIG5hbWVzcGFjZSwgYSBOYW1lc3BhY2Ugb2JqZWN0LlxcbiAgQm9vdHN0cmFwIG9ubHkuXCJcbiBbbnMtb2JqXVxuICguLW5hbWUgbnMtb2JqKSlcbiJ9IHs6c3ltIG1heC1rZXksIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRoZSB4IGZvciB3aGljaCAoayB4KSwgYSBudW1iZXIsIGlzIGdyZWF0ZXN0LlxuXG4gIElmIHRoZXJlIGFyZSBtdWx0aXBsZSBzdWNoIHhzLCB0aGUgbGFzdCBvbmUgaXMgcmV0dXJuZWQuIiwgOmFyZ2xpc3RzIFtbayB4XSBbayB4IHldIFtrIHggeSAmIG1vcmVdXX0sIDpzb3VyY2UgIihkZWZuXG4gbWF4LWtleVxuIFwiUmV0dXJucyB0aGUgeCBmb3Igd2hpY2ggKGsgeCksIGEgbnVtYmVyLCBpcyBncmVhdGVzdC5cXG5cXG4gIElmIHRoZXJlIGFyZSBtdWx0aXBsZSBzdWNoIHhzLCB0aGUgbGFzdCBvbmUgaXMgcmV0dXJuZWQuXCJcbiAoW2sgeF0geClcbiAoW2sgeCB5XSAoaWYgKD4gKGsgeCkgKGsgeSkpIHggeSkpXG4gKFtrIHggeSAmIG1vcmVdXG4gIChyZWR1Y2VcbiAgIChmbiogW3AxX180MzE2MiMgcDJfXzQzMTYzI10gKG1heC1rZXkgayBwMV9fNDMxNjIjIHAyX180MzE2MyMpKVxuICAgKG1heC1rZXkgayB4IHkpXG4gICBtb3JlKSkpXG4ifSB7OnN5bSAqb3V0KiwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgKm91dCogbmlsKVxuIn0gezpzeW0gaGFzaC1zdHJpbmcsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChba10pfSwgOnNvdXJjZSAiKGRlZm5cbiBoYXNoLXN0cmluZ1xuIFtrXVxuICh3aGVuXG4gICg+IHN0cmluZy1oYXNoLWNhY2hlLWNvdW50IDI1NSlcbiAgKHNldCEgc3RyaW5nLWhhc2gtY2FjaGUgKGpzLW9iaikpXG4gIChzZXQhIHN0cmluZy1oYXNoLWNhY2hlLWNvdW50IDApKVxuIChpZlxuICAobmlsPyBrKVxuICAwXG4gIChsZXRcbiAgIFtoICh1bmNoZWNrZWQtZ2V0IHN0cmluZy1oYXNoLWNhY2hlIGspXVxuICAgKGlmIChudW1iZXI/IGgpIGggKGFkZC10by1zdHJpbmctaGFzaC1jYWNoZSBrKSkpKSlcbiJ9IHs6c3ltIC1wcmVmZXJzLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW21mXSl9LCA6cHJvdG9jb2wgSU11bHRpRm59IHs6c3ltIHNldC12YWxpZGF0b3IhLCA6bWV0YSB7OmRvYyAiU2V0cyB0aGUgdmFsaWRhdG9yLWZuIGZvciBhbiBhdG9tLiB2YWxpZGF0b3ItZm4gbXVzdCBiZSBuaWwgb3IgYVxuICBzaWRlLWVmZmVjdC1mcmVlIGZuIG9mIG9uZSBhcmd1bWVudCwgd2hpY2ggd2lsbCBiZSBwYXNzZWQgdGhlIGludGVuZGVkXG4gIG5ldyBzdGF0ZSBvbiBhbnkgc3RhdGUgY2hhbmdlLiBJZiB0aGUgbmV3IHN0YXRlIGlzIHVuYWNjZXB0YWJsZSwgdGhlXG4gIHZhbGlkYXRvci1mbiBzaG91bGQgcmV0dXJuIGZhbHNlIG9yIHRocm93IGFuIEVycm9yLiBJZiB0aGUgY3VycmVudCBzdGF0ZVxuICBpcyBub3QgYWNjZXB0YWJsZSB0byB0aGUgbmV3IHZhbGlkYXRvciwgYW4gRXJyb3Igd2lsbCBiZSB0aHJvd24gYW5kIHRoZVxuICB2YWxpZGF0b3Igd2lsbCBub3QgYmUgY2hhbmdlZC4iLCA6YXJnbGlzdHMgKFtpcmVmIHZhbF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBzZXQtdmFsaWRhdG9yIVxuIFwiU2V0cyB0aGUgdmFsaWRhdG9yLWZuIGZvciBhbiBhdG9tLiB2YWxpZGF0b3ItZm4gbXVzdCBiZSBuaWwgb3IgYVxcbiAgc2lkZS1lZmZlY3QtZnJlZSBmbiBvZiBvbmUgYXJndW1lbnQsIHdoaWNoIHdpbGwgYmUgcGFzc2VkIHRoZSBpbnRlbmRlZFxcbiAgbmV3IHN0YXRlIG9uIGFueSBzdGF0ZSBjaGFuZ2UuIElmIHRoZSBuZXcgc3RhdGUgaXMgdW5hY2NlcHRhYmxlLCB0aGVcXG4gIHZhbGlkYXRvci1mbiBzaG91bGQgcmV0dXJuIGZhbHNlIG9yIHRocm93IGFuIEVycm9yLiBJZiB0aGUgY3VycmVudCBzdGF0ZVxcbiAgaXMgbm90IGFjY2VwdGFibGUgdG8gdGhlIG5ldyB2YWxpZGF0b3IsIGFuIEVycm9yIHdpbGwgYmUgdGhyb3duIGFuZCB0aGVcXG4gIHZhbGlkYXRvciB3aWxsIG5vdCBiZSBjaGFuZ2VkLlwiXG4gW2lyZWYgdmFsXVxuICh3aGVuXG4gIChhbmQgKHNvbWU/IHZhbCkgKG5vdCAodmFsICgtZGVyZWYgaXJlZikpKSlcbiAgKHRocm93IChqcy9FcnJvci4gXCJWYWxpZGF0b3IgcmVqZWN0ZWQgcmVmZXJlbmNlIHN0YXRlXCIpKSlcbiAoc2V0ISAoLi12YWxpZGF0b3IgaXJlZikgdmFsKSlcbiJ9IHs6c3ltIGlkZW50PywgOm1ldGEgezpkb2MgIlJldHVybiB0cnVlIGlmIHggaXMgYSBzeW1ib2wgb3Iga2V5d29yZCIsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuXG4gaWRlbnQ/XG4gXCJSZXR1cm4gdHJ1ZSBpZiB4IGlzIGEgc3ltYm9sIG9yIGtleXdvcmRcIlxuIFt4XVxuIChvciAoa2V5d29yZD8geCkgKHN5bWJvbD8geCkpKVxuIn0gezpzeW0gLW1ldGEsIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRoZSBtZXRhZGF0YSBvZiBvYmplY3Qgby4iLCA6YXJnbGlzdHMgKFtvXSl9LCA6cHJvdG9jb2wgSU1ldGF9IHs6c3ltIC1kaXNwYXRjaC1mbiwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFttZl0pfSwgOnByb3RvY29sIElNdWx0aUZufSB7OnN5bSAtYWRkLW1ldGhvZCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFttZiBkaXNwYXRjaC12YWwgbWV0aG9kXSl9LCA6cHJvdG9jb2wgSU11bHRpRm59IHs6c3ltIHN3YXAhLCA6bWV0YSB7OmRvYyAiQXRvbWljYWxseSBzd2FwcyB0aGUgdmFsdWUgb2YgYXRvbSB0byBiZTpcbiAgKGFwcGx5IGYgY3VycmVudC12YWx1ZS1vZi1hdG9tIGFyZ3MpLiBOb3RlIHRoYXQgZiBtYXkgYmUgY2FsbGVkXG4gIG11bHRpcGxlIHRpbWVzLCBhbmQgdGh1cyBzaG91bGQgYmUgZnJlZSBvZiBzaWRlIGVmZmVjdHMuICBSZXR1cm5zXG4gIHRoZSB2YWx1ZSB0aGF0IHdhcyBzd2FwcGVkIGluLiIsIDphcmdsaXN0cyBbW2EgZl0gW2EgZiB4XSBbYSBmIHggeV0gW2EgZiB4IHkgJiBtb3JlXV19LCA6c291cmNlICIoZGVmblxuIHN3YXAhXG4gXCJBdG9taWNhbGx5IHN3YXBzIHRoZSB2YWx1ZSBvZiBhdG9tIHRvIGJlOlxcbiAgKGFwcGx5IGYgY3VycmVudC12YWx1ZS1vZi1hdG9tIGFyZ3MpLiBOb3RlIHRoYXQgZiBtYXkgYmUgY2FsbGVkXFxuICBtdWx0aXBsZSB0aW1lcywgYW5kIHRodXMgc2hvdWxkIGJlIGZyZWUgb2Ygc2lkZSBlZmZlY3RzLiAgUmV0dXJuc1xcbiAgdGhlIHZhbHVlIHRoYXQgd2FzIHN3YXBwZWQgaW4uXCJcbiAoW2EgZl1cbiAgKGlmIChpbnN0YW5jZT8gQXRvbSBhKSAocmVzZXQhIGEgKGYgKC4tc3RhdGUgYSkpKSAoLXN3YXAhIGEgZikpKVxuIChbYSBmIHhdXG4gIChpZiAoaW5zdGFuY2U/IEF0b20gYSkgKHJlc2V0ISBhIChmICguLXN0YXRlIGEpIHgpKSAoLXN3YXAhIGEgZiB4KSkpXG4gKFthIGYgeCB5XVxuICAoaWZcbiAgIChpbnN0YW5jZT8gQXRvbSBhKVxuICAgKHJlc2V0ISBhIChmICguLXN0YXRlIGEpIHggeSkpXG4gICAoLXN3YXAhIGEgZiB4IHkpKSlcbiAoW2EgZiB4IHkgJiBtb3JlXVxuICAoaWZcbiAgIChpbnN0YW5jZT8gQXRvbSBhKVxuICAgKHJlc2V0ISBhIChhcHBseSBmICguLXN0YXRlIGEpIHggeSBtb3JlKSlcbiAgICgtc3dhcCEgYSBmIHggeSBtb3JlKSkpKVxuIn0gezpzeW0gdmFscywgOm1ldGEgezpkb2MgIlJldHVybnMgYSBzZXF1ZW5jZSBvZiB0aGUgbWFwJ3MgdmFsdWVzLCBpbiB0aGUgc2FtZSBvcmRlciBhcyAoc2VxIG1hcCkuIiwgOmFyZ2xpc3RzIChbbWFwXSl9LCA6c291cmNlICIoZGVmblxuIHZhbHNcbiBcIlJldHVybnMgYSBzZXF1ZW5jZSBvZiB0aGUgbWFwJ3MgdmFsdWVzLCBpbiB0aGUgc2FtZSBvcmRlciBhcyAoc2VxIG1hcCkuXCJcbiBbbWFwXVxuICh3aGVuLWxldCBbbXNlcSAoc2VxIG1hcCldIChWYWxTZXEuIG1zZXEgbmlsKSkpXG4ifSB7OnN5bSAtY2h1bmtlZC1uZXh0LCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIG5ldyBjb2xsZWN0aW9uIG9mIGNvbGwgd2l0aG91dCB0aGUgZmlyc3QgY2h1bmsuIiwgOmFyZ2xpc3RzIChbY29sbF0pfSwgOnByb3RvY29sIElDaHVua2VkTmV4dH0gezpzeW0gdW5jaGVja2VkLXN1YnRyYWN0LCA6bWV0YSB7OmRvYyAiSWYgbm8geXMgYXJlIHN1cHBsaWVkLCByZXR1cm5zIHRoZSBuZWdhdGlvbiBvZiB4LCBlbHNlIHN1YnRyYWN0c1xuICB0aGUgeXMgZnJvbSB4IGFuZCByZXR1cm5zIHRoZSByZXN1bHQuIiwgOmFyZ2xpc3RzIFtbeF0gW3ggeV0gW3ggeSAmIG1vcmVdXX0sIDpzb3VyY2UgIihkZWZuXG4gdW5jaGVja2VkLXN1YnRyYWN0XG4gXCJJZiBubyB5cyBhcmUgc3VwcGxpZWQsIHJldHVybnMgdGhlIG5lZ2F0aW9uIG9mIHgsIGVsc2Ugc3VidHJhY3RzXFxuICB0aGUgeXMgZnJvbSB4IGFuZCByZXR1cm5zIHRoZSByZXN1bHQuXCJcbiAoW3hdIChjbGpzLmNvcmUvdW5jaGVja2VkLXN1YnRyYWN0IHgpKVxuIChbeCB5XSAoY2xqcy5jb3JlL3VuY2hlY2tlZC1zdWJ0cmFjdCB4IHkpKVxuIChbeCB5ICYgbW9yZV1cbiAgKHJlZHVjZSB1bmNoZWNrZWQtc3VidHJhY3QgKGNsanMuY29yZS91bmNoZWNrZWQtc3VidHJhY3QgeCB5KSBtb3JlKSkpXG4ifSB7OnN5bSB0YXA+LCA6bWV0YSB7OmRvYyAiU2VuZHMgeCB0byBhbnkgdGFwcy4gUmV0dXJucyB0aGUgcmVzdWx0IG9mICpleGVjLXRhcC1mbiosIGEgQm9vbGVhbiB2YWx1ZS4iLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmblxuIHRhcD5cbiBcIlNlbmRzIHggdG8gYW55IHRhcHMuIFJldHVybnMgdGhlIHJlc3VsdCBvZiAqZXhlYy10YXAtZm4qLCBhIEJvb2xlYW4gdmFsdWUuXCJcbiBbeF1cbiAobWF5YmUtaW5pdC10YXBzZXQpXG4gKCpleGVjLXRhcC1mbipcbiAgKGZuIFtdIChkb3NlcSBbdGFwIEB0YXBzZXRdICh0cnkgKHRhcCB4KSAoY2F0Y2gganMvRXJyb3IgZXgpKSkpKSlcbiJ9IHs6c3ltIElNYXAsIDptZXRhIHs6ZG9jICJQcm90b2NvbCBmb3IgYWRkaW5nIG1hcHBpbmcgZnVuY3Rpb25hbGl0eSB0byBjb2xsZWN0aW9ucy4ifSwgOm1ldGhvZHMgKC1kaXNzb2MpfSB7OnN5bSBzb3J0ZWQtc2V0LWJ5LCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIG5ldyBzb3J0ZWQgc2V0IHdpdGggc3VwcGxpZWQga2V5cywgdXNpbmcgdGhlIHN1cHBsaWVkIGNvbXBhcmF0b3IuIiwgOmFyZ2xpc3RzIFtbY29tcGFyYXRvciAmIGtleXNdXX0sIDpzb3VyY2UgIihkZWZuXG4gc29ydGVkLXNldC1ieVxuIFwiUmV0dXJucyBhIG5ldyBzb3J0ZWQgc2V0IHdpdGggc3VwcGxpZWQga2V5cywgdXNpbmcgdGhlIHN1cHBsaWVkIGNvbXBhcmF0b3IuXCJcbiAoW2NvbXBhcmF0b3IgJiBrZXlzXVxuICAocmVkdWNlXG4gICAtY29ualxuICAgKFBlcnNpc3RlbnRUcmVlU2V0LiBuaWwgKHNvcnRlZC1tYXAtYnkgY29tcGFyYXRvcikgMClcbiAgIGtleXMpKSlcbiJ9IHs6c3ltIGNsb25lYWJsZT8sIDptZXRhIHs6ZG9jICJSZXR1cm4gdHJ1ZSBpZiB4IGltcGxlbWVudHMgSUNsb25lYWJsZSBwcm90b2NvbC4iLCA6YXJnbGlzdHMgKFt2YWx1ZV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBjbG9uZWFibGU/XG4gXCJSZXR1cm4gdHJ1ZSBpZiB4IGltcGxlbWVudHMgSUNsb25lYWJsZSBwcm90b2NvbC5cIlxuIFt2YWx1ZV1cbiAoc2F0aXNmaWVzPyBJQ2xvbmVhYmxlIHZhbHVlKSlcbiJ9IHs6c3ltIHF1YWxpZmllZC1pZGVudD8sIDptZXRhIHs6ZG9jICJSZXR1cm4gdHJ1ZSBpZiB4IGlzIGEgc3ltYm9sIG9yIGtleXdvcmQgd2l0aCBhIG5hbWVzcGFjZSIsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuXG4gcXVhbGlmaWVkLWlkZW50P1xuIFwiUmV0dXJuIHRydWUgaWYgeCBpcyBhIHN5bWJvbCBvciBrZXl3b3JkIHdpdGggYSBuYW1lc3BhY2VcIlxuIFt4XVxuIChib29sZWFuIChhbmQgKGlkZW50PyB4KSAobmFtZXNwYWNlIHgpIHRydWUpKSlcbiJ9IHs6c3ltIGhhc2gtc3RyaW5nKiwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtzXSl9LCA6c291cmNlICIoZGVmblxuIGhhc2gtc3RyaW5nKlxuIFtzXVxuIChpZi1ub3RcbiAgKG5pbD8gcylcbiAgKGxldFxuICAgW2xlbiAoLi1sZW5ndGggcyldXG4gICAoaWZcbiAgICAocG9zPyBsZW4pXG4gICAgKGxvb3BcbiAgICAgW2kgMCBoYXNoIDBdXG4gICAgIChpZlxuICAgICAgKDwgaSBsZW4pXG4gICAgICAocmVjdXIgKGluYyBpKSAoKyAoaW11bCAzMSBoYXNoKSAoLmNoYXJDb2RlQXQgcyBpKSkpXG4gICAgICBoYXNoKSlcbiAgICAwKSlcbiAgMCkpXG4ifSB7OnN5bSBrZXktdGVzdCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtrZXkgb3RoZXJdKX0sIDpzb3VyY2UgIihkZWZuXG4ga2V5LXRlc3RcbiBba2V5IG90aGVyXVxuIChjb25kXG4gIChpZGVudGljYWw/IGtleSBvdGhlcilcbiAgdHJ1ZVxuICAoa2V5d29yZC1pZGVudGljYWw/IGtleSBvdGhlcilcbiAgdHJ1ZVxuICA6ZWxzZVxuICAoPSBrZXkgb3RoZXIpKSlcbiJ9IHs6c3ltIC1yZXNldCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFttZl0pfSwgOnByb3RvY29sIElNdWx0aUZufSB7OnN5bSB0cnVlPywgOm1ldGEgezpkb2MgIlJldHVybnMgdHJ1ZSBpZiB4IGlzIHRoZSB2YWx1ZSB0cnVlLCBmYWxzZSBvdGhlcndpc2UuIiwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm5cbiB0cnVlP1xuIFwiUmV0dXJucyB0cnVlIGlmIHggaXMgdGhlIHZhbHVlIHRydWUsIGZhbHNlIG90aGVyd2lzZS5cIlxuIFt4XVxuIChjbGpzLmNvcmUvdHJ1ZT8geCkpXG4ifSB7OnN5bSBhcnJheSwgOm1ldGEgezpkb2MgIkNyZWF0ZXMgYSBuZXcgamF2YXNjcmlwdCBhcnJheS5cbkBwYXJhbSB7Li4uKn0gdmFyX2FyZ3MiLCA6YXJnbGlzdHMgKFt2YXItYXJnc10pfSwgOnNvdXJjZSAiKGRlZm5cbiBhcnJheVxuIFwiQ3JlYXRlcyBhIG5ldyBqYXZhc2NyaXB0IGFycmF5LlxcbkBwYXJhbSB7Li4uKn0gdmFyX2FyZ3NcIlxuIFt2YXItYXJnc11cbiAobGV0XG4gIFthIChqcy9BcnJheS4gKGFsZW5ndGggKGNsanMuY29yZS9qcy1hcmd1bWVudHMpKSldXG4gIChsb29wXG4gICBbaSAwXVxuICAgKGlmXG4gICAgKDwgaSAoYWxlbmd0aCBhKSlcbiAgICAoZG8gKGFzZXQgYSBpIChhZ2V0IChjbGpzLmNvcmUvanMtYXJndW1lbnRzKSBpKSkgKHJlY3VyIChpbmMgaSkpKVxuICAgIGEpKSkpXG4ifSB7OnN5bSBwcmludCwgOm1ldGEgezpkb2MgIlByaW50cyB0aGUgb2JqZWN0KHMpIHVzaW5nIHN0cmluZy1wcmludC5cbiAgcHJpbnQgYW5kIHByaW50bG4gcHJvZHVjZSBvdXRwdXQgZm9yIGh1bWFuIGNvbnN1bXB0aW9uLiJ9LCA6c291cmNlICIoZGVmXG4gcHJpbnRcbiAoZm5cbiAgY2xqcy1jb3JlLXByaW50XG4gIFsmIG9ianNdXG4gIChwci13aXRoLW9wdHMgb2JqcyAoYXNzb2MgKHByLW9wdHMpIDpyZWFkYWJseSBmYWxzZSkpKSlcbiJ9IHs6c3ltIC1wZWVrLCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0aGUgaXRlbSBmcm9tIHRoZSB0b3Agb2YgdGhlIHN0YWNrLiBJcyB1c2VkIGJ5IGNsanMuY29yZS9wZWVrLiIsIDphcmdsaXN0cyAoW2NvbGxdKX0sIDpwcm90b2NvbCBJU3RhY2t9IHs6c3ltIElTZXEsIDptZXRhIHs6ZG9jICJQcm90b2NvbCBmb3IgY29sbGVjdGlvbnMgdG8gcHJvdmlkZSBhY2Nlc3MgdG8gdGhlaXIgaXRlbXMgYXMgc2VxdWVuY2VzLiJ9LCA6bWV0aG9kcyAoLWZpcnN0IC1yZXN0KX0gezpzeW0gZW1wdHksIDptZXRhIHs6ZG9jICJSZXR1cm5zIGFuIGVtcHR5IGNvbGxlY3Rpb24gb2YgdGhlIHNhbWUgY2F0ZWdvcnkgYXMgY29sbCwgb3IgbmlsIiwgOmFyZ2xpc3RzIChbY29sbF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBlbXB0eVxuIFwiUmV0dXJucyBhbiBlbXB0eSBjb2xsZWN0aW9uIG9mIHRoZSBzYW1lIGNhdGVnb3J5IGFzIGNvbGwsIG9yIG5pbFwiXG4gW2NvbGxdXG4gKHdoZW4tbm90XG4gIChuaWw/IGNvbGwpXG4gIChjb25kXG4gICAoaW1wbGVtZW50cz8gSUVtcHR5YWJsZUNvbGxlY3Rpb24gY29sbClcbiAgICgtZW1wdHkgY29sbClcbiAgIChzYXRpc2ZpZXM/IElFbXB0eWFibGVDb2xsZWN0aW9uIGNvbGwpXG4gICAoLWVtcHR5IGNvbGwpXG4gICA6ZWxzZVxuICAgbmlsKSkpXG4ifSB7OnN5bSByZW1vdmUtbWV0aG9kLCA6bWV0YSB7OmRvYyAiUmVtb3ZlcyB0aGUgbWV0aG9kIG9mIG11bHRpbWV0aG9kIGFzc29jaWF0ZWQgd2l0aCBkaXNwYXRjaC12YWx1ZS4iLCA6YXJnbGlzdHMgKFttdWx0aWZuIGRpc3BhdGNoLXZhbF0pfSwgOnNvdXJjZSAiKGRlZm5cbiByZW1vdmUtbWV0aG9kXG4gXCJSZW1vdmVzIHRoZSBtZXRob2Qgb2YgbXVsdGltZXRob2QgYXNzb2NpYXRlZCB3aXRoIGRpc3BhdGNoLXZhbHVlLlwiXG4gW211bHRpZm4gZGlzcGF0Y2gtdmFsXVxuICgtcmVtb3ZlLW1ldGhvZCBtdWx0aWZuIGRpc3BhdGNoLXZhbCkpXG4ifSB7OnN5bSB2b2xhdGlsZSEsIDptZXRhIHs6ZG9jICJDcmVhdGVzIGFuZCByZXR1cm5zIGEgVm9sYXRpbGUgd2l0aCBhbiBpbml0aWFsIHZhbHVlIG9mIHZhbC4iLCA6YXJnbGlzdHMgKFt2YWxdKX0sIDpzb3VyY2UgIihkZWZuXG4gdm9sYXRpbGUhXG4gXCJDcmVhdGVzIGFuZCByZXR1cm5zIGEgVm9sYXRpbGUgd2l0aCBhbiBpbml0aWFsIHZhbHVlIG9mIHZhbC5cIlxuIFt2YWxdXG4gKFZvbGF0aWxlLiB2YWwpKVxuIn0gezpzeW0gLywgOm1ldGEgezpkb2MgIklmIG5vIGRlbm9taW5hdG9ycyBhcmUgc3VwcGxpZWQsIHJldHVybnMgMS9udW1lcmF0b3IsXG4gIGVsc2UgcmV0dXJucyBudW1lcmF0b3IgZGl2aWRlZCBieSBhbGwgb2YgdGhlIGRlbm9taW5hdG9ycy4iLCA6YXJnbGlzdHMgW1t4XSBbeCB5XSBbeCB5ICYgbW9yZV1dfSwgOnNvdXJjZSAiKGRlZm5cbiAvXG4gXCJJZiBubyBkZW5vbWluYXRvcnMgYXJlIHN1cHBsaWVkLCByZXR1cm5zIDEvbnVtZXJhdG9yLFxcbiAgZWxzZSByZXR1cm5zIG51bWVyYXRvciBkaXZpZGVkIGJ5IGFsbCBvZiB0aGUgZGVub21pbmF0b3JzLlwiXG4gKFt4XSAoLyAxIHgpKVxuIChbeCB5XSAoY2xqcy5jb3JlL2RpdmlkZSB4IHkpKVxuIChbeCB5ICYgbW9yZV0gKHJlZHVjZSAvICgvIHggeSkgbW9yZSkpKVxuIn0gezpzeW0gYml0LW9yLCA6bWV0YSB7OmRvYyAiQml0d2lzZSBvciIsIDphcmdsaXN0cyBbW3ggeV0gW3ggeSAmIG1vcmVdXX0sIDpzb3VyY2UgIihkZWZuXG4gYml0LW9yXG4gXCJCaXR3aXNlIG9yXCJcbiAoW3ggeV0gKGNsanMuY29yZS9iaXQtb3IgeCB5KSlcbiAoW3ggeSAmIG1vcmVdIChyZWR1Y2UgYml0LW9yIChjbGpzLmNvcmUvYml0LW9yIHggeSkgbW9yZSkpKVxuIn0gezpzeW0gbTMtZm1peCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtoMSBsZW5dKX0sIDpzb3VyY2UgIihkZWZuXG4gbTMtZm1peFxuIFtoMSBsZW5dXG4gKGFzLT5cbiAgKGludCBoMSlcbiAgaDFcbiAgKGJpdC14b3IgaDEgbGVuKVxuICAoYml0LXhvciBoMSAodW5zaWduZWQtYml0LXNoaWZ0LXJpZ2h0IGgxIDE2KSlcbiAgKGltdWwgaDEgKGludCAyMjQ2ODIyNTA3KSlcbiAgKGJpdC14b3IgaDEgKHVuc2lnbmVkLWJpdC1zaGlmdC1yaWdodCBoMSAxMykpXG4gIChpbXVsIGgxIChpbnQgMzI2NjQ4OTkwOSkpXG4gIChiaXQteG9yIGgxICh1bnNpZ25lZC1iaXQtc2hpZnQtcmlnaHQgaDEgMTYpKSkpXG4ifSB7OnN5bSB2ZWN0b3IsIDptZXRhIHs6ZG9jICJDcmVhdGVzIGEgbmV3IHZlY3RvciBjb250YWluaW5nIHRoZSBhcmdzLiIsIDphcmdsaXN0cyAoWyYgYXJnc10pfSwgOnNvdXJjZSAiKGRlZm5cbiB2ZWN0b3JcbiBcIkNyZWF0ZXMgYSBuZXcgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIGFyZ3MuXCJcbiBbJiBhcmdzXVxuIChpZlxuICAoYW5kIChpbnN0YW5jZT8gSW5kZXhlZFNlcSBhcmdzKSAoemVybz8gKC4taSBhcmdzKSkpXG4gICguZnJvbUFycmF5XG4gICBQZXJzaXN0ZW50VmVjdG9yXG4gICAoLi1hcnIgYXJncylcbiAgIChub3QgKGFycmF5PyAoLi1hcnIgYXJncykpKSlcbiAgKHZlYyBhcmdzKSkpXG4ifSB7OnN5bSA+PSwgOm1ldGEgezpkb2MgIlJldHVybnMgbm9uLW5pbCBpZiBudW1zIGFyZSBpbiBtb25vdG9uaWNhbGx5IG5vbi1pbmNyZWFzaW5nIG9yZGVyLFxuICBvdGhlcndpc2UgZmFsc2UuIiwgOmFyZ2xpc3RzIFtbeF0gW3ggeV0gW3ggeSAmIG1vcmVdXX0sIDpzb3VyY2UgIihkZWZuXG4gPj1cbiBcIlJldHVybnMgbm9uLW5pbCBpZiBudW1zIGFyZSBpbiBtb25vdG9uaWNhbGx5IG5vbi1pbmNyZWFzaW5nIG9yZGVyLFxcbiAgb3RoZXJ3aXNlIGZhbHNlLlwiXG4gKFt4XSB0cnVlKVxuIChbeCB5XSAoY2xqcy5jb3JlLz49IHggeSkpXG4gKFt4IHkgJiBtb3JlXVxuICAoaWZcbiAgIChjbGpzLmNvcmUvPj0geCB5KVxuICAgKGlmXG4gICAgKG5leHQgbW9yZSlcbiAgICAocmVjdXIgeSAoZmlyc3QgbW9yZSkgKG5leHQgbW9yZSkpXG4gICAgKGNsanMuY29yZS8+PSB5IChmaXJzdCBtb3JlKSkpXG4gICBmYWxzZSkpKVxuIn0gezpzeW0gZHJvcC1sYXN0LCA6bWV0YSB7OmRvYyAiUmV0dXJuIGEgbGF6eSBzZXF1ZW5jZSBvZiBhbGwgYnV0IHRoZSBsYXN0IG4gKGRlZmF1bHQgMSkgaXRlbXMgaW4gY29sbCIsIDphcmdsaXN0cyBbW3NdIFtuIHNdXX0sIDpzb3VyY2UgIihkZWZuXG4gZHJvcC1sYXN0XG4gXCJSZXR1cm4gYSBsYXp5IHNlcXVlbmNlIG9mIGFsbCBidXQgdGhlIGxhc3QgbiAoZGVmYXVsdCAxKSBpdGVtcyBpbiBjb2xsXCJcbiAoW3NdIChkcm9wLWxhc3QgMSBzKSlcbiAoW24gc10gKG1hcCAoZm4gW3ggX10geCkgcyAoZHJvcCBuIHMpKSkpXG4ifSB7OnN5bSBvYmplY3Q/LCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0cnVlIGlmIHgncyBjb25zdHJ1Y3RvciBpcyBPYmplY3QiLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmblxuIG9iamVjdD9cbiBcIlJldHVybnMgdHJ1ZSBpZiB4J3MgY29uc3RydWN0b3IgaXMgT2JqZWN0XCJcbiBbeF1cbiAoaWYtbm90IChuaWw/IHgpIChpZGVudGljYWw/ICguLWNvbnN0cnVjdG9yIHgpIGpzL09iamVjdCkgZmFsc2UpKVxuIn0gezpzeW0gbm90LWVtcHR5LCA6bWV0YSB7OmRvYyAiSWYgY29sbCBpcyBlbXB0eSwgcmV0dXJucyBuaWwsIGVsc2UgY29sbCIsIDphcmdsaXN0cyAoW2NvbGxdKX0sIDpzb3VyY2UgIihkZWZuXG4gbm90LWVtcHR5XG4gXCJJZiBjb2xsIGlzIGVtcHR5LCByZXR1cm5zIG5pbCwgZWxzZSBjb2xsXCJcbiBbY29sbF1cbiAod2hlbiAoc2VxIGNvbGwpIGNvbGwpKVxuIn0gezpzeW0gZGlzdGluY3QsIDptZXRhIHs6ZG9jICJSZXR1cm5zIGEgbGF6eSBzZXF1ZW5jZSBvZiB0aGUgZWxlbWVudHMgb2YgY29sbCB3aXRoIGR1cGxpY2F0ZXMgcmVtb3ZlZC5cbiAgUmV0dXJucyBhIHN0YXRlZnVsIHRyYW5zZHVjZXIgd2hlbiBubyBjb2xsZWN0aW9uIGlzIHByb3ZpZGVkLiIsIDphcmdsaXN0cyBbW10gW2NvbGxdXX0sIDpzb3VyY2UgIihkZWZuXG4gZGlzdGluY3RcbiBcIlJldHVybnMgYSBsYXp5IHNlcXVlbmNlIG9mIHRoZSBlbGVtZW50cyBvZiBjb2xsIHdpdGggZHVwbGljYXRlcyByZW1vdmVkLlxcbiAgUmV0dXJucyBhIHN0YXRlZnVsIHRyYW5zZHVjZXIgd2hlbiBubyBjb2xsZWN0aW9uIGlzIHByb3ZpZGVkLlwiXG4gKFtdXG4gIChmblxuICAgW3JmXVxuICAgKGxldFxuICAgIFtzZWVuICh2b2xhdGlsZSEgI3t9KV1cbiAgICAoZm5cbiAgICAgKFtdIChyZikpXG4gICAgIChbcmVzdWx0XSAocmYgcmVzdWx0KSlcbiAgICAgKFtyZXN1bHQgaW5wdXRdXG4gICAgICAoaWZcbiAgICAgICAoY29udGFpbnM/IEBzZWVuIGlucHV0KVxuICAgICAgIHJlc3VsdFxuICAgICAgIChkbyAodnN3YXAhIHNlZW4gY29uaiBpbnB1dCkgKHJmIHJlc3VsdCBpbnB1dCkpKSkpKSkpXG4gKFtjb2xsXVxuICAobGV0XG4gICBbc3RlcFxuICAgIChmblxuICAgICBzdGVwXG4gICAgIFt4cyBzZWVuXVxuICAgICAobGF6eS1zZXFcbiAgICAgICgoZm5cbiAgICAgICAgW1tmIDphcyB4c10gc2Vlbl1cbiAgICAgICAgKHdoZW4tbGV0XG4gICAgICAgICBbcyAoc2VxIHhzKV1cbiAgICAgICAgIChpZlxuICAgICAgICAgIChjb250YWlucz8gc2VlbiBmKVxuICAgICAgICAgIChyZWN1ciAocmVzdCBzKSBzZWVuKVxuICAgICAgICAgIChjb25zIGYgKHN0ZXAgKHJlc3QgcykgKGNvbmogc2VlbiBmKSkpKSkpXG4gICAgICAgeHNcbiAgICAgICBzZWVuKSkpXVxuICAgKHN0ZXAgY29sbCAje30pKSkpXG4ifSB7OnN5bSBwYXJ0aXRpb24sIDptZXRhIHs6ZG9jICJSZXR1cm5zIGEgbGF6eSBzZXF1ZW5jZSBvZiBsaXN0cyBvZiBuIGl0ZW1zIGVhY2gsIGF0IG9mZnNldHMgc3RlcFxuICBhcGFydC4gSWYgc3RlcCBpcyBub3Qgc3VwcGxpZWQsIGRlZmF1bHRzIHRvIG4sIGkuZS4gdGhlIHBhcnRpdGlvbnNcbiAgZG8gbm90IG92ZXJsYXAuIElmIGEgcGFkIGNvbGxlY3Rpb24gaXMgc3VwcGxpZWQsIHVzZSBpdHMgZWxlbWVudHMgYXNcbiAgbmVjZXNzYXJ5IHRvIGNvbXBsZXRlIGxhc3QgcGFydGl0aW9uIHVwIHRvIG4gaXRlbXMuIEluIGNhc2UgdGhlcmUgYXJlXG4gIG5vdCBlbm91Z2ggcGFkZGluZyBlbGVtZW50cywgcmV0dXJuIGEgcGFydGl0aW9uIHdpdGggbGVzcyB0aGFuIG4gaXRlbXMuIiwgOmFyZ2xpc3RzIFtbbiBjb2xsXSBbbiBzdGVwIGNvbGxdIFtuIHN0ZXAgcGFkIGNvbGxdXX0sIDpzb3VyY2UgIihkZWZuXG4gcGFydGl0aW9uXG4gXCJSZXR1cm5zIGEgbGF6eSBzZXF1ZW5jZSBvZiBsaXN0cyBvZiBuIGl0ZW1zIGVhY2gsIGF0IG9mZnNldHMgc3RlcFxcbiAgYXBhcnQuIElmIHN0ZXAgaXMgbm90IHN1cHBsaWVkLCBkZWZhdWx0cyB0byBuLCBpLmUuIHRoZSBwYXJ0aXRpb25zXFxuICBkbyBub3Qgb3ZlcmxhcC4gSWYgYSBwYWQgY29sbGVjdGlvbiBpcyBzdXBwbGllZCwgdXNlIGl0cyBlbGVtZW50cyBhc1xcbiAgbmVjZXNzYXJ5IHRvIGNvbXBsZXRlIGxhc3QgcGFydGl0aW9uIHVwIHRvIG4gaXRlbXMuIEluIGNhc2UgdGhlcmUgYXJlXFxuICBub3QgZW5vdWdoIHBhZGRpbmcgZWxlbWVudHMsIHJldHVybiBhIHBhcnRpdGlvbiB3aXRoIGxlc3MgdGhhbiBuIGl0ZW1zLlwiXG4gKFtuIGNvbGxdIChwYXJ0aXRpb24gbiBuIGNvbGwpKVxuIChbbiBzdGVwIGNvbGxdXG4gIChsYXp5LXNlcVxuICAgKHdoZW4tbGV0XG4gICAgW3MgKHNlcSBjb2xsKV1cbiAgICAobGV0XG4gICAgIFtwICh0YWtlIG4gcyldXG4gICAgICh3aGVuXG4gICAgICAoPT0gbiAoY291bnQgcCkpXG4gICAgICAoY29ucyBwIChwYXJ0aXRpb24gbiBzdGVwIChkcm9wIHN0ZXAgcykpKSkpKSkpXG4gKFtuIHN0ZXAgcGFkIGNvbGxdXG4gIChsYXp5LXNlcVxuICAgKHdoZW4tbGV0XG4gICAgW3MgKHNlcSBjb2xsKV1cbiAgICAobGV0XG4gICAgIFtwICh0YWtlIG4gcyldXG4gICAgIChpZlxuICAgICAgKD09IG4gKGNvdW50IHApKVxuICAgICAgKGNvbnMgcCAocGFydGl0aW9uIG4gc3RlcCBwYWQgKGRyb3Agc3RlcCBzKSkpXG4gICAgICAobGlzdCAodGFrZSBuIChjb25jYXQgcCBwYWQpKSkpKSkpKSlcbiJ9IHs6c3ltIElNdWx0aUZuLCA6bWV0YSB7OmRvYyBuaWx9LCA6bWV0aG9kcyAoLWFkZC1tZXRob2QgLWRlZmF1bHQtZGlzcGF0Y2gtdmFsIC1kaXNwYXRjaC1mbiAtZ2V0LW1ldGhvZCAtbWV0aG9kcyAtcHJlZmVyLW1ldGhvZCAtcHJlZmVycyAtcmVtb3ZlLW1ldGhvZCAtcmVzZXQpfSB7OnN5bSBERU1VTkdFX1BBVFRFUk4sIDptZXRhIHt9LCA6c291cmNlICIoZGVmIERFTVVOR0VfUEFUVEVSTiBuaWwpXG4ifSB7OnN5bSBJQXNzb2NpYXRpdmUsIDptZXRhIHs6ZG9jICJQcm90b2NvbCBmb3IgYWRkaW5nIGFzc29jaWF0aXZpdHkgdG8gY29sbGVjdGlvbnMuIn0sIDptZXRob2RzICgtYXNzb2MgLWNvbnRhaW5zLWtleT8pfSB7OnN5bSBiaXQtZmxpcCwgOm1ldGEgezpkb2MgIkZsaXAgYml0IGF0IGluZGV4IG4iLCA6YXJnbGlzdHMgKFt4IG5dKX0sIDpzb3VyY2UgIihkZWZuIGJpdC1mbGlwIFwiRmxpcCBiaXQgYXQgaW5kZXggblwiIFt4IG5dIChjbGpzLmNvcmUvYml0LWZsaXAgeCBuKSlcbiJ9IHs6c3ltIGxvbmctYXJyYXksIDptZXRhIHs6ZG9jICJDcmVhdGVzIGFuIGFycmF5IG9mIGxvbmdzLiBEb2VzIG5vdCBjb2VyY2UgYXJyYXksIHByb3ZpZGVkIGZvciBjb21wYXRpYmlsaXR5XG4gIHdpdGggQ2xvanVyZS4iLCA6YXJnbGlzdHMgW1tzaXplLW9yLXNlcV0gW3NpemUgaW5pdC12YWwtb3Itc2VxXV19LCA6c291cmNlICIoZGVmblxuIGxvbmctYXJyYXlcbiBcIkNyZWF0ZXMgYW4gYXJyYXkgb2YgbG9uZ3MuIERvZXMgbm90IGNvZXJjZSBhcnJheSwgcHJvdmlkZWQgZm9yIGNvbXBhdGliaWxpdHlcXG4gIHdpdGggQ2xvanVyZS5cIlxuIChbc2l6ZS1vci1zZXFdXG4gIChpZlxuICAgKG51bWJlcj8gc2l6ZS1vci1zZXEpXG4gICAobG9uZy1hcnJheSBzaXplLW9yLXNlcSBuaWwpXG4gICAoaW50by1hcnJheSBzaXplLW9yLXNlcSkpKVxuIChbc2l6ZSBpbml0LXZhbC1vci1zZXFdXG4gIChsZXRcbiAgIFthIChtYWtlLWFycmF5IHNpemUpXVxuICAgKGlmXG4gICAgKHNlcT8gaW5pdC12YWwtb3Itc2VxKVxuICAgIChsZXRcbiAgICAgW3MgKHNlcSBpbml0LXZhbC1vci1zZXEpXVxuICAgICAobG9vcFxuICAgICAgW2kgMCBzIHNdXG4gICAgICAoaWZcbiAgICAgICAoYW5kIHMgKDwgaSBzaXplKSlcbiAgICAgICAoZG8gKGFzZXQgYSBpIChmaXJzdCBzKSkgKHJlY3VyIChpbmMgaSkgKG5leHQgcykpKVxuICAgICAgIGEpKSlcbiAgICAoZG8gKGRvdGltZXMgW2kgc2l6ZV0gKGFzZXQgYSBpIGluaXQtdmFsLW9yLXNlcSkpIGEpKSkpKVxuIn0gezpzeW0gZGVzY2VuZGFudHMsIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRoZSBpbW1lZGlhdGUgYW5kIGluZGlyZWN0IGNoaWxkcmVuIG9mIHRhZywgdGhyb3VnaCBhXG4gIHJlbGF0aW9uc2hpcCBlc3RhYmxpc2hlZCB2aWEgZGVyaXZlLiBoIG11c3QgYmUgYSBoaWVyYXJjaHkgb2J0YWluZWRcbiAgZnJvbSBtYWtlLWhpZXJhcmNoeSwgaWYgbm90IHN1cHBsaWVkIGRlZmF1bHRzIHRvIHRoZSBnbG9iYWxcbiAgaGllcmFyY2h5LiBOb3RlOiBkb2VzIG5vdCB3b3JrIG9uIEphdmFTY3JpcHQgdHlwZSBpbmhlcml0YW5jZVxuICByZWxhdGlvbnNoaXBzLiIsIDphcmdsaXN0cyBbW3RhZ10gW2ggdGFnXV19LCA6c291cmNlICIoZGVmblxuIGRlc2NlbmRhbnRzXG4gXCJSZXR1cm5zIHRoZSBpbW1lZGlhdGUgYW5kIGluZGlyZWN0IGNoaWxkcmVuIG9mIHRhZywgdGhyb3VnaCBhXFxuICByZWxhdGlvbnNoaXAgZXN0YWJsaXNoZWQgdmlhIGRlcml2ZS4gaCBtdXN0IGJlIGEgaGllcmFyY2h5IG9idGFpbmVkXFxuICBmcm9tIG1ha2UtaGllcmFyY2h5LCBpZiBub3Qgc3VwcGxpZWQgZGVmYXVsdHMgdG8gdGhlIGdsb2JhbFxcbiAgaGllcmFyY2h5LiBOb3RlOiBkb2VzIG5vdCB3b3JrIG9uIEphdmFTY3JpcHQgdHlwZSBpbmhlcml0YW5jZVxcbiAgcmVsYXRpb25zaGlwcy5cIlxuIChbdGFnXSAoZGVzY2VuZGFudHMgQChnZXQtZ2xvYmFsLWhpZXJhcmNoeSkgdGFnKSlcbiAoW2ggdGFnXSAobm90LWVtcHR5IChnZXQgKDpkZXNjZW5kYW50cyBoKSB0YWcpKSkpXG4ifSB7OnN5bSBtZXJnZSwgOm1ldGEgezpkb2MgIlJldHVybnMgYSBtYXAgdGhhdCBjb25zaXN0cyBvZiB0aGUgcmVzdCBvZiB0aGUgbWFwcyBjb25qLWVkIG9udG9cbiAgdGhlIGZpcnN0LiAgSWYgYSBrZXkgb2NjdXJzIGluIG1vcmUgdGhhbiBvbmUgbWFwLCB0aGUgbWFwcGluZyBmcm9tXG4gIHRoZSBsYXR0ZXIgKGxlZnQtdG8tcmlnaHQpIHdpbGwgYmUgdGhlIG1hcHBpbmcgaW4gdGhlIHJlc3VsdC4iLCA6YXJnbGlzdHMgKFsmIG1hcHNdKX0sIDpzb3VyY2UgIihkZWZuXG4gbWVyZ2VcbiBcIlJldHVybnMgYSBtYXAgdGhhdCBjb25zaXN0cyBvZiB0aGUgcmVzdCBvZiB0aGUgbWFwcyBjb25qLWVkIG9udG9cXG4gIHRoZSBmaXJzdC4gIElmIGEga2V5IG9jY3VycyBpbiBtb3JlIHRoYW4gb25lIG1hcCwgdGhlIG1hcHBpbmcgZnJvbVxcbiAgdGhlIGxhdHRlciAobGVmdC10by1yaWdodCkgd2lsbCBiZSB0aGUgbWFwcGluZyBpbiB0aGUgcmVzdWx0LlwiXG4gWyYgbWFwc11cbiAod2hlblxuICAoc29tZSBpZGVudGl0eSBtYXBzKVxuICAocmVkdWNlXG4gICAoZm4qIFtwMV9fNDMxNTQjIHAyX180MzE1NSNdIChjb25qIChvciBwMV9fNDMxNTQjIHt9KSBwMl9fNDMxNTUjKSlcbiAgIG1hcHMpKSlcbiJ9IHs6c3ltIElTZXFhYmxlLCA6bWV0YSB7OmRvYyAiUHJvdG9jb2wgZm9yIGFkZGluZyB0aGUgYWJpbGl0eSB0byBhIHR5cGUgdG8gYmUgdHJhbnNmb3JtZWQgaW50byBhIHNlcXVlbmNlLiJ9LCA6bWV0aG9kcyAoLXNlcSl9IHs6c3ltIGpzLW1vZCwgOm1ldGEgezpkb2MgIk1vZHVsdXMgb2YgbnVtIGFuZCBkaXYgd2l0aCBvcmlnaW5hbCBqYXZhc2NyaXB0IGJlaGF2aW9yLiBpLmUuIGJ1ZyBmb3IgbmVnYXRpdmUgbnVtYmVycyIsIDphcmdsaXN0cyAoW24gZF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBqcy1tb2RcbiBcIk1vZHVsdXMgb2YgbnVtIGFuZCBkaXYgd2l0aCBvcmlnaW5hbCBqYXZhc2NyaXB0IGJlaGF2aW9yLiBpLmUuIGJ1ZyBmb3IgbmVnYXRpdmUgbnVtYmVyc1wiXG4gW24gZF1cbiAoY2xqcy5jb3JlL2pzLW1vZCBuIGQpKVxuIn0gezpzeW0gaW50ZWdlcj8sIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRydWUgaWYgbiBpcyBhIEphdmFTY3JpcHQgbnVtYmVyIHdpdGggbm8gZGVjaW1hbCBwYXJ0LiIsIDphcmdsaXN0cyAoW25dKX0sIDpzb3VyY2UgIihkZWZuXG4gaW50ZWdlcj9cbiBcIlJldHVybnMgdHJ1ZSBpZiBuIGlzIGEgSmF2YVNjcmlwdCBudW1iZXIgd2l0aCBubyBkZWNpbWFsIHBhcnQuXCJcbiBbbl1cbiAoYW5kXG4gIChudW1iZXI/IG4pXG4gIChub3QgKGpzL2lzTmFOIG4pKVxuICAobm90IChpZGVudGljYWw/IG4ganMvSW5maW5pdHkpKVxuICAoPT0gKGpzL3BhcnNlRmxvYXQgbikgKGpzL3BhcnNlSW50IG4gMTApKSkpXG4ifSB7OnN5bSBOU19DQUNIRSwgOm1ldGEgezpkb2MgIkJvb3RzdHJhcCBvbmx5LiJ9LCA6c291cmNlICIoZGVmIE5TX0NBQ0hFIG5pbClcbiJ9IHs6c3ltIG1hcHYsIDptZXRhIHs6ZG9jICJSZXR1cm5zIGEgdmVjdG9yIGNvbnNpc3Rpbmcgb2YgdGhlIHJlc3VsdCBvZiBhcHBseWluZyBmIHRvIHRoZVxuICBzZXQgb2YgZmlyc3QgaXRlbXMgb2YgZWFjaCBjb2xsLCBmb2xsb3dlZCBieSBhcHBseWluZyBmIHRvIHRoZSBzZXRcbiAgb2Ygc2Vjb25kIGl0ZW1zIGluIGVhY2ggY29sbCwgdW50aWwgYW55IG9uZSBvZiB0aGUgY29sbHMgaXNcbiAgZXhoYXVzdGVkLiAgQW55IHJlbWFpbmluZyBpdGVtcyBpbiBvdGhlciBjb2xscyBhcmUgaWdub3JlZC4gRnVuY3Rpb25cbiAgZiBzaG91bGQgYWNjZXB0IG51bWJlci1vZi1jb2xscyBhcmd1bWVudHMuIiwgOmFyZ2xpc3RzIFtbZiBjb2xsXSBbZiBjMSBjMl0gW2YgYzEgYzIgYzNdIFtmIGMxIGMyIGMzICYgY29sbHNdXX0sIDpzb3VyY2UgIihkZWZuXG4gbWFwdlxuIFwiUmV0dXJucyBhIHZlY3RvciBjb25zaXN0aW5nIG9mIHRoZSByZXN1bHQgb2YgYXBwbHlpbmcgZiB0byB0aGVcXG4gIHNldCBvZiBmaXJzdCBpdGVtcyBvZiBlYWNoIGNvbGwsIGZvbGxvd2VkIGJ5IGFwcGx5aW5nIGYgdG8gdGhlIHNldFxcbiAgb2Ygc2Vjb25kIGl0ZW1zIGluIGVhY2ggY29sbCwgdW50aWwgYW55IG9uZSBvZiB0aGUgY29sbHMgaXNcXG4gIGV4aGF1c3RlZC4gIEFueSByZW1haW5pbmcgaXRlbXMgaW4gb3RoZXIgY29sbHMgYXJlIGlnbm9yZWQuIEZ1bmN0aW9uXFxuICBmIHNob3VsZCBhY2NlcHQgbnVtYmVyLW9mLWNvbGxzIGFyZ3VtZW50cy5cIlxuIChbZiBjb2xsXVxuICAoLT5cbiAgIChyZWR1Y2UgKGZuIFt2IG9dIChjb25qISB2IChmIG8pKSkgKHRyYW5zaWVudCBbXSkgY29sbClcbiAgIHBlcnNpc3RlbnQhKSlcbiAoW2YgYzEgYzJdIChpbnRvIFtdIChtYXAgZiBjMSBjMikpKVxuIChbZiBjMSBjMiBjM10gKGludG8gW10gKG1hcCBmIGMxIGMyIGMzKSkpXG4gKFtmIGMxIGMyIGMzICYgY29sbHNdIChpbnRvIFtdIChhcHBseSBtYXAgZiBjMSBjMiBjMyBjb2xscykpKSlcbiJ9IHs6c3ltIGluZmluaXRlPywgOm1ldGEgezpkb2MgIlJldHVybnMgdHJ1ZSBmb3IgSW5maW5pdHkgYW5kIC1JbmZpbml0eSB2YWx1ZXMuIiwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBpbmZpbml0ZT9cbiBcIlJldHVybnMgdHJ1ZSBmb3IgSW5maW5pdHkgYW5kIC1JbmZpbml0eSB2YWx1ZXMuXCJcbiBbeF1cbiAob3JcbiAgKGlkZW50aWNhbD8geCBqcy9OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFkpXG4gIChpZGVudGljYWw/IHgganMvTnVtYmVyLk5FR0FUSVZFX0lORklOSVRZKSkpXG4ifSB7OnN5bSBwYXJ0aXRpb24tYWxsLCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIGxhenkgc2VxdWVuY2Ugb2YgbGlzdHMgbGlrZSBwYXJ0aXRpb24sIGJ1dCBtYXkgaW5jbHVkZVxuICBwYXJ0aXRpb25zIHdpdGggZmV3ZXIgdGhhbiBuIGl0ZW1zIGF0IHRoZSBlbmQuICBSZXR1cm5zIGEgc3RhdGVmdWxcbiAgdHJhbnNkdWNlciB3aGVuIG5vIGNvbGxlY3Rpb24gaXMgcHJvdmlkZWQuIiwgOmFyZ2xpc3RzIFtbbl0gW24gY29sbF0gW24gc3RlcCBjb2xsXV19LCA6c291cmNlICIoZGVmblxuIHBhcnRpdGlvbi1hbGxcbiBcIlJldHVybnMgYSBsYXp5IHNlcXVlbmNlIG9mIGxpc3RzIGxpa2UgcGFydGl0aW9uLCBidXQgbWF5IGluY2x1ZGVcXG4gIHBhcnRpdGlvbnMgd2l0aCBmZXdlciB0aGFuIG4gaXRlbXMgYXQgdGhlIGVuZC4gIFJldHVybnMgYSBzdGF0ZWZ1bFxcbiAgdHJhbnNkdWNlciB3aGVuIG5vIGNvbGxlY3Rpb24gaXMgcHJvdmlkZWQuXCJcbiAoW25dXG4gIChmblxuICAgW3JmXVxuICAgKGxldFxuICAgIFthIChhcnJheS1saXN0KV1cbiAgICAoZm5cbiAgICAgKFtdIChyZikpXG4gICAgIChbcmVzdWx0XVxuICAgICAgKGxldFxuICAgICAgIFtyZXN1bHRcbiAgICAgICAgKGlmXG4gICAgICAgICAoLmlzRW1wdHkgYSlcbiAgICAgICAgIHJlc3VsdFxuICAgICAgICAgKGxldFxuICAgICAgICAgIFt2ICh2ZWMgKC50b0FycmF5IGEpKV1cbiAgICAgICAgICAoLmNsZWFyIGEpXG4gICAgICAgICAgKHVucmVkdWNlZCAocmYgcmVzdWx0IHYpKSkpXVxuICAgICAgIChyZiByZXN1bHQpKSlcbiAgICAgKFtyZXN1bHQgaW5wdXRdXG4gICAgICAoLmFkZCBhIGlucHV0KVxuICAgICAgKGlmXG4gICAgICAgKD09IG4gKC5zaXplIGEpKVxuICAgICAgIChsZXQgW3YgKHZlYyAoLnRvQXJyYXkgYSkpXSAoLmNsZWFyIGEpIChyZiByZXN1bHQgdikpXG4gICAgICAgcmVzdWx0KSkpKSkpXG4gKFtuIGNvbGxdIChwYXJ0aXRpb24tYWxsIG4gbiBjb2xsKSlcbiAoW24gc3RlcCBjb2xsXVxuICAobGF6eS1zZXFcbiAgICh3aGVuLWxldFxuICAgIFtzIChzZXEgY29sbCldXG4gICAgKGNvbnMgKHRha2UgbiBzKSAocGFydGl0aW9uLWFsbCBuIHN0ZXAgKGRyb3Agc3RlcCBzKSkpKSkpKVxuIn0gezpzeW0gcGFydGl0aW9uLWJ5LCA6bWV0YSB7OmRvYyAiQXBwbGllcyBmIHRvIGVhY2ggdmFsdWUgaW4gY29sbCwgc3BsaXR0aW5nIGl0IGVhY2ggdGltZSBmIHJldHVybnMgYVxuICAgbmV3IHZhbHVlLiAgUmV0dXJucyBhIGxhenkgc2VxIG9mIHBhcnRpdGlvbnMuICBSZXR1cm5zIGEgc3RhdGVmdWxcbiAgIHRyYW5zZHVjZXIgd2hlbiBubyBjb2xsZWN0aW9uIGlzIHByb3ZpZGVkLiIsIDphcmdsaXN0cyBbW2ZdIFtmIGNvbGxdXX0sIDpzb3VyY2UgIihkZWZuXG4gcGFydGl0aW9uLWJ5XG4gXCJBcHBsaWVzIGYgdG8gZWFjaCB2YWx1ZSBpbiBjb2xsLCBzcGxpdHRpbmcgaXQgZWFjaCB0aW1lIGYgcmV0dXJucyBhXFxuICAgbmV3IHZhbHVlLiAgUmV0dXJucyBhIGxhenkgc2VxIG9mIHBhcnRpdGlvbnMuICBSZXR1cm5zIGEgc3RhdGVmdWxcXG4gICB0cmFuc2R1Y2VyIHdoZW4gbm8gY29sbGVjdGlvbiBpcyBwcm92aWRlZC5cIlxuIChbZl1cbiAgKGZuXG4gICBbcmZdXG4gICAobGV0XG4gICAgW2EgKGFycmF5LWxpc3QpIHBhICh2b2xhdGlsZSEgOmNsanMuY29yZS9ub25lKV1cbiAgICAoZm5cbiAgICAgKFtdIChyZikpXG4gICAgIChbcmVzdWx0XVxuICAgICAgKGxldFxuICAgICAgIFtyZXN1bHRcbiAgICAgICAgKGlmXG4gICAgICAgICAoLmlzRW1wdHkgYSlcbiAgICAgICAgIHJlc3VsdFxuICAgICAgICAgKGxldFxuICAgICAgICAgIFt2ICh2ZWMgKC50b0FycmF5IGEpKV1cbiAgICAgICAgICAoLmNsZWFyIGEpXG4gICAgICAgICAgKHVucmVkdWNlZCAocmYgcmVzdWx0IHYpKSkpXVxuICAgICAgIChyZiByZXN1bHQpKSlcbiAgICAgKFtyZXN1bHQgaW5wdXRdXG4gICAgICAobGV0XG4gICAgICAgW3B2YWwgQHBhIHZhbCAoZiBpbnB1dCldXG4gICAgICAgKHZyZXNldCEgcGEgdmFsKVxuICAgICAgIChpZlxuICAgICAgICAob3IgKGtleXdvcmQtaWRlbnRpY2FsPyBwdmFsIDpjbGpzLmNvcmUvbm9uZSkgKD0gdmFsIHB2YWwpKVxuICAgICAgICAoZG8gKC5hZGQgYSBpbnB1dCkgcmVzdWx0KVxuICAgICAgICAobGV0XG4gICAgICAgICBbdiAodmVjICgudG9BcnJheSBhKSldXG4gICAgICAgICAoLmNsZWFyIGEpXG4gICAgICAgICAobGV0XG4gICAgICAgICAgW3JldCAocmYgcmVzdWx0IHYpXVxuICAgICAgICAgICh3aGVuLW5vdCAocmVkdWNlZD8gcmV0KSAoLmFkZCBhIGlucHV0KSlcbiAgICAgICAgICByZXQpKSkpKSkpKSlcbiAoW2YgY29sbF1cbiAgKGxhenktc2VxXG4gICAod2hlbi1sZXRcbiAgICBbcyAoc2VxIGNvbGwpXVxuICAgIChsZXRcbiAgICAgW2ZzdFxuICAgICAgKGZpcnN0IHMpXG4gICAgICBmdlxuICAgICAgKGYgZnN0KVxuICAgICAgcnVuXG4gICAgICAoY29uc1xuICAgICAgIGZzdFxuICAgICAgICh0YWtlLXdoaWxlIChmbiogW3AxX180MzE2NiNdICg9IGZ2IChmIHAxX180MzE2NiMpKSkgKG5leHQgcykpKV1cbiAgICAgKGNvbnMgcnVuIChwYXJ0aXRpb24tYnkgZiAobGF6eS1zZXEgKGRyb3AgKGNvdW50IHJ1bikgcykpKSkpKSkpKVxuIn0gezpzeW0gSVNlcXVlbnRpYWwsIDptZXRhIHs6ZG9jICJNYXJrZXIgaW50ZXJmYWNlIGluZGljYXRpbmcgYSBwZXJzaXN0ZW50IGNvbGxlY3Rpb24gb2Ygc2VxdWVudGlhbCBpdGVtcyJ9LCA6bWV0aG9kcyAoKX0gezpzeW0gZXF1aXYtbWFwLCA6bWV0YSB7OmRvYyAiVGVzdCBtYXAgZXF1aXZhbGVuY2UuIFJldHVybnMgdHJ1ZSBpZiB4IGVxdWFscyB5LCBvdGhlcndpc2UgcmV0dXJucyBmYWxzZS4iLCA6YXJnbGlzdHMgKFt4IHldKX0sIDpzb3VyY2UgIihkZWZuXG4gZXF1aXYtbWFwXG4gXCJUZXN0IG1hcCBlcXVpdmFsZW5jZS4gUmV0dXJucyB0cnVlIGlmIHggZXF1YWxzIHksIG90aGVyd2lzZSByZXR1cm5zIGZhbHNlLlwiXG4gW3ggeV1cbiAoYm9vbGVhblxuICAod2hlblxuICAgKGFuZCAobWFwPyB5KSAobm90IChyZWNvcmQ/IHkpKSlcbiAgICh3aGVuXG4gICAgKD09IChjb3VudCB4KSAoY291bnQgeSkpXG4gICAgKGlmXG4gICAgIChzYXRpc2ZpZXM/IElLVlJlZHVjZSB4KVxuICAgICAocmVkdWNlLWt2XG4gICAgICAoZm5cbiAgICAgICBbXyBrIHZdXG4gICAgICAgKGlmICg9IChnZXQgeSBrIG5ldmVyLWVxdWl2KSB2KSB0cnVlIChyZWR1Y2VkIGZhbHNlKSkpXG4gICAgICB0cnVlXG4gICAgICB4KVxuICAgICAoZXZlcnk/XG4gICAgICAoZm4gW3hrdl0gKD0gKGdldCB5IChmaXJzdCB4a3YpIG5ldmVyLWVxdWl2KSAoc2Vjb25kIHhrdikpKVxuICAgICAgeCkpKSkpKVxuIn0gezpzeW0gb2JqZWN0LWFycmF5LCA6bWV0YSB7OmRvYyAiQ3JlYXRlcyBhbiBhcnJheSBvZiBvYmplY3RzLiBEb2VzIG5vdCBjb2VyY2UgYXJyYXksIHByb3ZpZGVkIGZvciBjb21wYXRpYmlsaXR5XG4gIHdpdGggQ2xvanVyZS4iLCA6YXJnbGlzdHMgW1tzaXplLW9yLXNlcV0gW3NpemUgaW5pdC12YWwtb3Itc2VxXV19LCA6c291cmNlICIoZGVmblxuIG9iamVjdC1hcnJheVxuIFwiQ3JlYXRlcyBhbiBhcnJheSBvZiBvYmplY3RzLiBEb2VzIG5vdCBjb2VyY2UgYXJyYXksIHByb3ZpZGVkIGZvciBjb21wYXRpYmlsaXR5XFxuICB3aXRoIENsb2p1cmUuXCJcbiAoW3NpemUtb3Itc2VxXVxuICAoaWZcbiAgIChudW1iZXI/IHNpemUtb3Itc2VxKVxuICAgKG9iamVjdC1hcnJheSBzaXplLW9yLXNlcSBuaWwpXG4gICAoaW50by1hcnJheSBzaXplLW9yLXNlcSkpKVxuIChbc2l6ZSBpbml0LXZhbC1vci1zZXFdXG4gIChsZXRcbiAgIFthIChtYWtlLWFycmF5IHNpemUpXVxuICAgKGlmXG4gICAgKHNlcT8gaW5pdC12YWwtb3Itc2VxKVxuICAgIChsZXRcbiAgICAgW3MgKHNlcSBpbml0LXZhbC1vci1zZXEpXVxuICAgICAobG9vcFxuICAgICAgW2kgMCBzIHNdXG4gICAgICAoaWZcbiAgICAgICAoYW5kIHMgKDwgaSBzaXplKSlcbiAgICAgICAoZG8gKGFzZXQgYSBpIChmaXJzdCBzKSkgKHJlY3VyIChpbmMgaSkgKG5leHQgcykpKVxuICAgICAgIGEpKSlcbiAgICAoZG8gKGRvdGltZXMgW2kgc2l6ZV0gKGFzZXQgYSBpIGluaXQtdmFsLW9yLXNlcSkpIGEpKSkpKVxuIn0gezpzeW0gZGVyaXZlLCA6bWV0YSB7OmRvYyAiRXN0YWJsaXNoZXMgYSBwYXJlbnQvY2hpbGQgcmVsYXRpb25zaGlwIGJldHdlZW4gcGFyZW50IGFuZFxuICB0YWcuIFBhcmVudCBtdXN0IGJlIGEgbmFtZXNwYWNlLXF1YWxpZmllZCBzeW1ib2wgb3Iga2V5d29yZCBhbmRcbiAgY2hpbGQgY2FuIGJlIGVpdGhlciBhIG5hbWVzcGFjZS1xdWFsaWZpZWQgc3ltYm9sIG9yIGtleXdvcmQgb3IgYVxuICBjbGFzcy4gaCBtdXN0IGJlIGEgaGllcmFyY2h5IG9idGFpbmVkIGZyb20gbWFrZS1oaWVyYXJjaHksIGlmIG5vdFxuICBzdXBwbGllZCBkZWZhdWx0cyB0bywgYW5kIG1vZGlmaWVzLCB0aGUgZ2xvYmFsIGhpZXJhcmNoeS4iLCA6YXJnbGlzdHMgW1t0YWcgcGFyZW50XSBbaCB0YWcgcGFyZW50XV19LCA6c291cmNlICIoZGVmblxuIGRlcml2ZVxuIFwiRXN0YWJsaXNoZXMgYSBwYXJlbnQvY2hpbGQgcmVsYXRpb25zaGlwIGJldHdlZW4gcGFyZW50IGFuZFxcbiAgdGFnLiBQYXJlbnQgbXVzdCBiZSBhIG5hbWVzcGFjZS1xdWFsaWZpZWQgc3ltYm9sIG9yIGtleXdvcmQgYW5kXFxuICBjaGlsZCBjYW4gYmUgZWl0aGVyIGEgbmFtZXNwYWNlLXF1YWxpZmllZCBzeW1ib2wgb3Iga2V5d29yZCBvciBhXFxuICBjbGFzcy4gaCBtdXN0IGJlIGEgaGllcmFyY2h5IG9idGFpbmVkIGZyb20gbWFrZS1oaWVyYXJjaHksIGlmIG5vdFxcbiAgc3VwcGxpZWQgZGVmYXVsdHMgdG8sIGFuZCBtb2RpZmllcywgdGhlIGdsb2JhbCBoaWVyYXJjaHkuXCJcbiAoW3RhZyBwYXJlbnRdXG4gIChhc3NlcnQgKG5hbWVzcGFjZSBwYXJlbnQpKVxuICAoc3dhcC1nbG9iYWwtaGllcmFyY2h5ISBkZXJpdmUgdGFnIHBhcmVudClcbiAgbmlsKVxuIChbaCB0YWcgcGFyZW50XVxuICAoYXNzZXJ0IChub3Q9IHRhZyBwYXJlbnQpKVxuICAobGV0XG4gICBbdHBcbiAgICAoOnBhcmVudHMgaClcbiAgICB0ZFxuICAgICg6ZGVzY2VuZGFudHMgaClcbiAgICB0YVxuICAgICg6YW5jZXN0b3JzIGgpXG4gICAgdGZcbiAgICAoZm5cbiAgICAgW20gc291cmNlIHNvdXJjZXMgdGFyZ2V0IHRhcmdldHNdXG4gICAgIChyZWR1Y2VcbiAgICAgIChmblxuICAgICAgIFtyZXQga11cbiAgICAgICAoYXNzb2NcbiAgICAgICAgcmV0XG4gICAgICAgIGtcbiAgICAgICAgKHJlZHVjZVxuICAgICAgICAgY29ualxuICAgICAgICAgKGdldCB0YXJnZXRzIGsgI3t9KVxuICAgICAgICAgKGNvbnMgdGFyZ2V0ICh0YXJnZXRzIHRhcmdldCkpKSkpXG4gICAgICBtXG4gICAgICAoY29ucyBzb3VyY2UgKHNvdXJjZXMgc291cmNlKSkpKV1cbiAgIChvclxuICAgICh3aGVuLW5vdFxuICAgICAoY29udGFpbnM/ICh0cCB0YWcpIHBhcmVudClcbiAgICAgKHdoZW5cbiAgICAgIChjb250YWlucz8gKHRhIHRhZykgcGFyZW50KVxuICAgICAgKHRocm93IChqcy9FcnJvci4gKHN0ciB0YWcgXCJhbHJlYWR5IGhhc1wiIHBhcmVudCBcImFzIGFuY2VzdG9yXCIpKSkpXG4gICAgICh3aGVuXG4gICAgICAoY29udGFpbnM/ICh0YSBwYXJlbnQpIHRhZylcbiAgICAgICh0aHJvd1xuICAgICAgIChqcy9FcnJvci5cbiAgICAgICAgKHN0ciBcIkN5Y2xpYyBkZXJpdmF0aW9uOlwiIHBhcmVudCBcImhhc1wiIHRhZyBcImFzIGFuY2VzdG9yXCIpKSkpXG4gICAgIHs6cGFyZW50cyAoYXNzb2MgKDpwYXJlbnRzIGgpIHRhZyAoY29uaiAoZ2V0IHRwIHRhZyAje30pIHBhcmVudCkpLFxuICAgICAgOmFuY2VzdG9ycyAodGYgKDphbmNlc3RvcnMgaCkgdGFnIHRkIHBhcmVudCB0YSksXG4gICAgICA6ZGVzY2VuZGFudHMgKHRmICg6ZGVzY2VuZGFudHMgaCkgcGFyZW50IHRhIHRhZyB0ZCl9KVxuICAgIGgpKSkpXG4ifSB7OnN5bSBzZXEtaXRlciwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtjb2xsXSl9LCA6c291cmNlICIoZGVmbiBzZXEtaXRlciBbY29sbF0gKFNlcUl0ZXIuIElOSVQgY29sbCkpXG4ifSB7OnN5bSBJQ2h1bmtlZFNlcSwgOm1ldGEgezpkb2MgIlByb3RvY29sIGZvciBhY2Nlc3NpbmcgYSBjb2xsZWN0aW9uIGFzIHNlcXVlbnRpYWwgY2h1bmtzLiJ9LCA6bWV0aG9kcyAoLWNodW5rZWQtZmlyc3QgLWNodW5rZWQtcmVzdCl9IHs6c3ltIHNwZWNpYWwtc3ltYm9sPywgOm1ldGEgezpkb2MgIlJldHVybnMgdHJ1ZSBpZiB4IG5hbWVzIGEgc3BlY2lhbCBmb3JtIiwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBzcGVjaWFsLXN5bWJvbD9cbiBcIlJldHVybnMgdHJ1ZSBpZiB4IG5hbWVzIGEgc3BlY2lhbCBmb3JtXCJcbiBbeF1cbiAoY29udGFpbnM/XG4gICcjeyZcbiAgICAgY2FzZSpcbiAgICAgZGVmcmVjb3JkKlxuICAgICB0cnlcbiAgICAgbnMqXG4gICAgIGZpbmFsbHlcbiAgICAgbG9vcCpcbiAgICAgZG9cbiAgICAgbGV0Zm4qXG4gICAgIGlmXG4gICAgIG5ld1xuICAgICBuc1xuICAgICBkZWZ0eXBlKlxuICAgICBsZXQqXG4gICAgIGpzKlxuICAgICBmbipcbiAgICAgcmVjdXJcbiAgICAgc2V0IVxuICAgICAuXG4gICAgIHZhclxuICAgICBxdW90ZVxuICAgICBjYXRjaFxuICAgICB0aHJvd1xuICAgICBkZWZ9XG4gIHgpKVxuIn0gezpzeW0gYW5jZXN0b3JzLCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0aGUgaW1tZWRpYXRlIGFuZCBpbmRpcmVjdCBwYXJlbnRzIG9mIHRhZywgZWl0aGVyIHZpYSBhIEphdmFTY3JpcHQgdHlwZVxuICBpbmhlcml0YW5jZSByZWxhdGlvbnNoaXAgb3IgYSByZWxhdGlvbnNoaXAgZXN0YWJsaXNoZWQgdmlhIGRlcml2ZS4gaFxuICBtdXN0IGJlIGEgaGllcmFyY2h5IG9idGFpbmVkIGZyb20gbWFrZS1oaWVyYXJjaHksIGlmIG5vdCBzdXBwbGllZFxuICBkZWZhdWx0cyB0byB0aGUgZ2xvYmFsIGhpZXJhcmNoeSIsIDphcmdsaXN0cyBbW3RhZ10gW2ggdGFnXV19LCA6c291cmNlICIoZGVmblxuIGFuY2VzdG9yc1xuIFwiUmV0dXJucyB0aGUgaW1tZWRpYXRlIGFuZCBpbmRpcmVjdCBwYXJlbnRzIG9mIHRhZywgZWl0aGVyIHZpYSBhIEphdmFTY3JpcHQgdHlwZVxcbiAgaW5oZXJpdGFuY2UgcmVsYXRpb25zaGlwIG9yIGEgcmVsYXRpb25zaGlwIGVzdGFibGlzaGVkIHZpYSBkZXJpdmUuIGhcXG4gIG11c3QgYmUgYSBoaWVyYXJjaHkgb2J0YWluZWQgZnJvbSBtYWtlLWhpZXJhcmNoeSwgaWYgbm90IHN1cHBsaWVkXFxuICBkZWZhdWx0cyB0byB0aGUgZ2xvYmFsIGhpZXJhcmNoeVwiXG4gKFt0YWddIChhbmNlc3RvcnMgQChnZXQtZ2xvYmFsLWhpZXJhcmNoeSkgdGFnKSlcbiAoW2ggdGFnXSAobm90LWVtcHR5IChnZXQgKDphbmNlc3RvcnMgaCkgdGFnKSkpKVxuIn0gezpzeW0gc3Vic2VxLCA6bWV0YSB7OmRvYyAic2MgbXVzdCBiZSBhIHNvcnRlZCBjb2xsZWN0aW9uLCB0ZXN0KHMpIG9uZSBvZiA8LCA8PSwgPiBvclxuICA+PS4gUmV0dXJucyBhIHNlcSBvZiB0aG9zZSBlbnRyaWVzIHdpdGgga2V5cyBlayBmb3JcbiAgd2hpY2ggKHRlc3QgKC4uIHNjIGNvbXBhcmF0b3IgKGNvbXBhcmUgZWsga2V5KSkgMCkgaXMgdHJ1ZSIsIDphcmdsaXN0cyBbW3NjIHRlc3Qga2V5XSBbc2Mgc3RhcnQtdGVzdCBzdGFydC1rZXkgZW5kLXRlc3QgZW5kLWtleV1dfSwgOnNvdXJjZSAiKGRlZm5cbiBzdWJzZXFcbiBcInNjIG11c3QgYmUgYSBzb3J0ZWQgY29sbGVjdGlvbiwgdGVzdChzKSBvbmUgb2YgPCwgPD0sID4gb3JcXG4gID49LiBSZXR1cm5zIGEgc2VxIG9mIHRob3NlIGVudHJpZXMgd2l0aCBrZXlzIGVrIGZvclxcbiAgd2hpY2ggKHRlc3QgKC4uIHNjIGNvbXBhcmF0b3IgKGNvbXBhcmUgZWsga2V5KSkgMCkgaXMgdHJ1ZVwiXG4gKFtzYyB0ZXN0IGtleV1cbiAgKGxldFxuICAgW2luY2x1ZGUgKG1rLWJvdW5kLWZuIHNjIHRlc3Qga2V5KV1cbiAgIChpZlxuICAgICgjez4gPj19IHRlc3QpXG4gICAgKHdoZW4tbGV0XG4gICAgIFtbZSA6YXMgc10gKC1zb3J0ZWQtc2VxLWZyb20gc2Mga2V5IHRydWUpXVxuICAgICAoaWYgKGluY2x1ZGUgZSkgcyAobmV4dCBzKSkpXG4gICAgKHRha2Utd2hpbGUgaW5jbHVkZSAoLXNvcnRlZC1zZXEgc2MgdHJ1ZSkpKSkpXG4gKFtzYyBzdGFydC10ZXN0IHN0YXJ0LWtleSBlbmQtdGVzdCBlbmQta2V5XVxuICAod2hlbi1sZXRcbiAgIFtbZSA6YXMgc10gKC1zb3J0ZWQtc2VxLWZyb20gc2Mgc3RhcnQta2V5IHRydWUpXVxuICAgKHRha2Utd2hpbGVcbiAgICAobWstYm91bmQtZm4gc2MgZW5kLXRlc3QgZW5kLWtleSlcbiAgICAoaWYgKChtay1ib3VuZC1mbiBzYyBzdGFydC10ZXN0IHN0YXJ0LWtleSkgZSkgcyAobmV4dCBzKSkpKSkpXG4ifSB7OnN5bSBnZW5zeW0sIDptZXRhIHs6ZG9jICJSZXR1cm5zIGEgbmV3IHN5bWJvbCB3aXRoIGEgdW5pcXVlIG5hbWUuIElmIGEgcHJlZml4IHN0cmluZyBpc1xuICBzdXBwbGllZCwgdGhlIG5hbWUgaXMgcHJlZml4IyB3aGVyZSAjIGlzIHNvbWUgdW5pcXVlIG51bWJlci4gSWZcbiAgcHJlZml4IGlzIG5vdCBzdXBwbGllZCwgdGhlIHByZWZpeCBpcyAnR19fJy4iLCA6YXJnbGlzdHMgW1tdIFtwcmVmaXgtc3RyaW5nXV19LCA6c291cmNlICIoZGVmblxuIGdlbnN5bVxuIFwiUmV0dXJucyBhIG5ldyBzeW1ib2wgd2l0aCBhIHVuaXF1ZSBuYW1lLiBJZiBhIHByZWZpeCBzdHJpbmcgaXNcXG4gIHN1cHBsaWVkLCB0aGUgbmFtZSBpcyBwcmVmaXgjIHdoZXJlICMgaXMgc29tZSB1bmlxdWUgbnVtYmVyLiBJZlxcbiAgcHJlZml4IGlzIG5vdCBzdXBwbGllZCwgdGhlIHByZWZpeCBpcyAnR19fJy5cIlxuIChbXSAoZ2Vuc3ltIFwiR19fXCIpKVxuIChbcHJlZml4LXN0cmluZ11cbiAgKHdoZW4gKG5pbD8gZ2Vuc3ltX2NvdW50ZXIpIChzZXQhIGdlbnN5bV9jb3VudGVyIChhdG9tIDApKSlcbiAgKHN5bWJvbCAoc3RyIHByZWZpeC1zdHJpbmcgKHN3YXAhIGdlbnN5bV9jb3VudGVyIGluYykpKSkpXG4ifSB7OnN5bSAtbmV4dCwgOm1ldGEgezpkb2MgIlJldHVybnMgYSBuZXcgY29sbGVjdGlvbiBvZiBjb2xsIHdpdGhvdXQgdGhlIGZpcnN0IGl0ZW0uIEluIGNvbnRyYXN0IHRvXG4gICAgIHJlc3QsIGl0IHNob3VsZCByZXR1cm4gbmlsIGlmIHRoZXJlIGFyZSBubyBtb3JlIGl0ZW1zLCBlLmcuXG4gICAgIChuZXh0IFtdKSA9PiBuaWxcbiAgICAgKG5leHQgbmlsKSA9PiBuaWwiLCA6YXJnbGlzdHMgKFtjb2xsXSl9LCA6cHJvdG9jb2wgSU5leHR9IHs6c3ltIGRlbGF5PywgOm1ldGEgezpkb2MgInJldHVybnMgdHJ1ZSBpZiB4IGlzIGEgRGVsYXkgY3JlYXRlZCB3aXRoIGRlbGF5IiwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBkZWxheT9cbiBcInJldHVybnMgdHJ1ZSBpZiB4IGlzIGEgRGVsYXkgY3JlYXRlZCB3aXRoIGRlbGF5XCJcbiBbeF1cbiAoaW5zdGFuY2U/IERlbGF5IHgpKVxuIn0gezpzeW0gZmxhdHRlbiwgOm1ldGEgezpkb2MgIlRha2VzIGFueSBuZXN0ZWQgY29tYmluYXRpb24gb2Ygc2VxdWVudGlhbCB0aGluZ3MgKGxpc3RzLCB2ZWN0b3JzLFxuICBldGMuKSBhbmQgcmV0dXJucyB0aGVpciBjb250ZW50cyBhcyBhIHNpbmdsZSwgZmxhdCBzZXF1ZW5jZS5cbiAgKGZsYXR0ZW4gbmlsKSByZXR1cm5zIG5pbC4iLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmblxuIGZsYXR0ZW5cbiBcIlRha2VzIGFueSBuZXN0ZWQgY29tYmluYXRpb24gb2Ygc2VxdWVudGlhbCB0aGluZ3MgKGxpc3RzLCB2ZWN0b3JzLFxcbiAgZXRjLikgYW5kIHJldHVybnMgdGhlaXIgY29udGVudHMgYXMgYSBzaW5nbGUsIGZsYXQgc2VxdWVuY2UuXFxuICAoZmxhdHRlbiBuaWwpIHJldHVybnMgbmlsLlwiXG4gW3hdXG4gKGZpbHRlclxuICAoZm4qIFtwMV9fNDMxNTIjXSAobm90IChzZXF1ZW50aWFsPyBwMV9fNDMxNTIjKSkpXG4gIChyZXN0ICh0cmVlLXNlcSBzZXF1ZW50aWFsPyBzZXEgeCkpKSlcbiJ9IHs6c3ltIC1kaXNzb2MsIDptZXRhIHs6ZG9jICJSZXR1cm5zIGEgbmV3IGNvbGxlY3Rpb24gb2YgY29sbCB3aXRob3V0IHRoZSBtYXBwaW5nIGZvciBrZXkgay4iLCA6YXJnbGlzdHMgKFtjb2xsIGtdKX0sIDpwcm90b2NvbCBJTWFwfSB7OnN5bSBkb3VibGVzLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuIGRvdWJsZXMgW3hdIHgpXG4ifSB7OnN5bSBoYWx0LXdoZW4sIDptZXRhIHs6ZG9jICJSZXR1cm5zIGEgdHJhbnNkdWNlciB0aGF0IGVuZHMgdHJhbnNkdWN0aW9uIHdoZW4gcHJlZCByZXR1cm5zIHRydWVcbiAgZm9yIGFuIGlucHV0LiBXaGVuIHJldGYgaXMgc3VwcGxpZWQgaXQgbXVzdCBiZSBhIGZuIG9mIDIgYXJndW1lbnRzIC1cbiAgaXQgd2lsbCBiZSBwYXNzZWQgdGhlIChjb21wbGV0ZWQpIHJlc3VsdCBzbyBmYXIgYW5kIHRoZSBpbnB1dCB0aGF0XG4gIHRyaWdnZXJlZCB0aGUgcHJlZGljYXRlLCBhbmQgaXRzIHJldHVybiB2YWx1ZSAoaWYgaXQgZG9lcyBub3QgdGhyb3dcbiAgYW4gZXhjZXB0aW9uKSB3aWxsIGJlIHRoZSByZXR1cm4gdmFsdWUgb2YgdGhlIHRyYW5zZHVjZXIuIElmIHJldGZcbiAgaXMgbm90IHN1cHBsaWVkLCB0aGUgaW5wdXQgdGhhdCB0cmlnZ2VyZWQgdGhlIHByZWRpY2F0ZSB3aWxsIGJlXG4gIHJldHVybmVkLiBJZiB0aGUgcHJlZGljYXRlIG5ldmVyIHJldHVybnMgdHJ1ZSB0aGUgdHJhbnNkdWN0aW9uIGlzXG4gIHVuYWZmZWN0ZWQuIiwgOmFyZ2xpc3RzIFtbcHJlZF0gW3ByZWQgcmV0Zl1dfSwgOnNvdXJjZSAiKGRlZm5cbiBoYWx0LXdoZW5cbiBcIlJldHVybnMgYSB0cmFuc2R1Y2VyIHRoYXQgZW5kcyB0cmFuc2R1Y3Rpb24gd2hlbiBwcmVkIHJldHVybnMgdHJ1ZVxcbiAgZm9yIGFuIGlucHV0LiBXaGVuIHJldGYgaXMgc3VwcGxpZWQgaXQgbXVzdCBiZSBhIGZuIG9mIDIgYXJndW1lbnRzIC1cXG4gIGl0IHdpbGwgYmUgcGFzc2VkIHRoZSAoY29tcGxldGVkKSByZXN1bHQgc28gZmFyIGFuZCB0aGUgaW5wdXQgdGhhdFxcbiAgdHJpZ2dlcmVkIHRoZSBwcmVkaWNhdGUsIGFuZCBpdHMgcmV0dXJuIHZhbHVlIChpZiBpdCBkb2VzIG5vdCB0aHJvd1xcbiAgYW4gZXhjZXB0aW9uKSB3aWxsIGJlIHRoZSByZXR1cm4gdmFsdWUgb2YgdGhlIHRyYW5zZHVjZXIuIElmIHJldGZcXG4gIGlzIG5vdCBzdXBwbGllZCwgdGhlIGlucHV0IHRoYXQgdHJpZ2dlcmVkIHRoZSBwcmVkaWNhdGUgd2lsbCBiZVxcbiAgcmV0dXJuZWQuIElmIHRoZSBwcmVkaWNhdGUgbmV2ZXIgcmV0dXJucyB0cnVlIHRoZSB0cmFuc2R1Y3Rpb24gaXNcXG4gIHVuYWZmZWN0ZWQuXCJcbiB7OmFkZGVkIFwiMS45XCJ9XG4gKFtwcmVkXSAoaGFsdC13aGVuIHByZWQgbmlsKSlcbiAoW3ByZWQgcmV0Zl1cbiAgKGZuXG4gICBbcmZdXG4gICAoZm5cbiAgICAoW10gKHJmKSlcbiAgICAoW3Jlc3VsdF1cbiAgICAgKGlmXG4gICAgICAoYW5kIChtYXA/IHJlc3VsdCkgKGNvbnRhaW5zPyByZXN1bHQgOmNsanMuY29yZS9oYWx0KSlcbiAgICAgICg6Y2xqcy5jb3JlL2hhbHQgcmVzdWx0KVxuICAgICAgKHJmIHJlc3VsdCkpKVxuICAgIChbcmVzdWx0IGlucHV0XVxuICAgICAoaWZcbiAgICAgIChwcmVkIGlucHV0KVxuICAgICAgKHJlZHVjZWRcbiAgICAgICB7OmNsanMuY29yZS9oYWx0IChpZiByZXRmIChyZXRmIChyZiByZXN1bHQpIGlucHV0KSBpbnB1dCl9KVxuICAgICAgKHJmIHJlc3VsdCBpbnB1dCkpKSkpKSlcbiJ9IHs6c3ltIC1jb250YWlucy1rZXk/LCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0cnVlIGlmIGsgaXMgYSBrZXkgaW4gY29sbC4iLCA6YXJnbGlzdHMgKFtjb2xsIGtdKX0sIDpwcm90b2NvbCBJQXNzb2NpYXRpdmV9IHs6c3ltIHJlbW92ZS13YXRjaCwgOm1ldGEgezpkb2MgIlJlbW92ZXMgYSB3YXRjaCAoc2V0IGJ5IGFkZC13YXRjaCkgZnJvbSBhIHJlZmVyZW5jZSIsIDphcmdsaXN0cyAoW2lyZWYga2V5XSl9LCA6c291cmNlICIoZGVmblxuIHJlbW92ZS13YXRjaFxuIFwiUmVtb3ZlcyBhIHdhdGNoIChzZXQgYnkgYWRkLXdhdGNoKSBmcm9tIGEgcmVmZXJlbmNlXCJcbiBbaXJlZiBrZXldXG4gKC1yZW1vdmUtd2F0Y2ggaXJlZiBrZXkpXG4gaXJlZilcbiJ9IHs6c3ltIGV4LWluZm8sIDptZXRhIHs6ZG9jICJDcmVhdGUgYW4gaW5zdGFuY2Ugb2YgRXhjZXB0aW9uSW5mbywgYW4gRXJyb3IgdHlwZSB0aGF0IGNhcnJpZXMgYVxuICBtYXAgb2YgYWRkaXRpb25hbCBkYXRhLiIsIDphcmdsaXN0cyBbW21zZyBkYXRhXSBbbXNnIGRhdGEgY2F1c2VdXX0sIDpzb3VyY2UgIihkZWZuXG4gZXgtaW5mb1xuIFwiQ3JlYXRlIGFuIGluc3RhbmNlIG9mIEV4Y2VwdGlvbkluZm8sIGFuIEVycm9yIHR5cGUgdGhhdCBjYXJyaWVzIGFcXG4gIG1hcCBvZiBhZGRpdGlvbmFsIGRhdGEuXCJcbiAoW21zZyBkYXRhXSAoZXgtaW5mbyBtc2cgZGF0YSBuaWwpKVxuIChbbXNnIGRhdGEgY2F1c2VdIChFeGNlcHRpb25JbmZvLiBtc2cgZGF0YSBjYXVzZSkpKVxuIn0gezpzeW0gaWZuPywgOm1ldGEgezpkb2MgIlJldHVybnMgdHJ1ZSBpZiBmIHJldHVybnMgdHJ1ZSBmb3IgZm4/IG9yIHNhdGlzZmllcyBJRm4uIiwgOmFyZ2xpc3RzIChbZl0pfSwgOnNvdXJjZSAiKGRlZm5cbiBpZm4/XG4gXCJSZXR1cm5zIHRydWUgaWYgZiByZXR1cm5zIHRydWUgZm9yIGZuPyBvciBzYXRpc2ZpZXMgSUZuLlwiXG4gW2ZdXG4gKG9yIChmbj8gZikgKHNhdGlzZmllcz8gSUZuIGYpKSlcbiJ9IHs6c3ltIElBdG9tLCA6bWV0YSB7OmRvYyAiTWFya2VyIHByb3RvY29sIGluZGljYXRpbmcgYW4gYXRvbS4ifSwgOm1ldGhvZHMgKCl9IHs6c3ltIG5hdC1pbnQ/LCA6bWV0YSB7OmRvYyAiUmV0dXJuIHRydWUgaWYgeCBzYXRpc2ZpZXMgaW50PyBhbmQgaXMgYSBuYXR1cmFsIGludGVnZXIgdmFsdWUuIiwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBuYXQtaW50P1xuIFwiUmV0dXJuIHRydWUgaWYgeCBzYXRpc2ZpZXMgaW50PyBhbmQgaXMgYSBuYXR1cmFsIGludGVnZXIgdmFsdWUuXCJcbiBbeF1cbiAoY29uZFxuICAoaW50ZWdlcj8geClcbiAgKG5vdCAobmVnPyB4KSlcbiAgKGluc3RhbmNlPyBnb29nLm1hdGguSW50ZWdlciB4KVxuICAobm90ICguaXNOZWdhdGl2ZSB4KSlcbiAgKGluc3RhbmNlPyBnb29nLm1hdGguTG9uZyB4KVxuICAobm90ICguaXNOZWdhdGl2ZSB4KSlcbiAgOmVsc2VcbiAgZmFsc2UpKVxuIn0gezpzeW0gSVdhdGNoYWJsZSwgOm1ldGEgezpkb2MgIlByb3RvY29sIGZvciB0eXBlcyB0aGF0IGNhbiBiZSB3YXRjaGVkLiBDdXJyZW50bHkgb25seSBpbXBsZW1lbnRlZCBieSBBdG9tLiJ9LCA6bWV0aG9kcyAoLWFkZC13YXRjaCAtbm90aWZ5LXdhdGNoZXMgLXJlbW92ZS13YXRjaCl9IHs6c3ltIHN1YnZlYywgOm1ldGEgezpkb2MgIlJldHVybnMgYSBwZXJzaXN0ZW50IHZlY3RvciBvZiB0aGUgaXRlbXMgaW4gdmVjdG9yIGZyb21cbiAgc3RhcnQgKGluY2x1c2l2ZSkgdG8gZW5kIChleGNsdXNpdmUpLiAgSWYgZW5kIGlzIG5vdCBzdXBwbGllZCxcbiAgZGVmYXVsdHMgdG8gKGNvdW50IHZlY3RvcikuIFRoaXMgb3BlcmF0aW9uIGlzIE8oMSkgYW5kIHZlcnkgZmFzdCwgYXNcbiAgdGhlIHJlc3VsdGluZyB2ZWN0b3Igc2hhcmVzIHN0cnVjdHVyZSB3aXRoIHRoZSBvcmlnaW5hbCBhbmQgbm9cbiAgdHJpbW1pbmcgaXMgZG9uZS4iLCA6YXJnbGlzdHMgW1t2IHN0YXJ0XSBbdiBzdGFydCBlbmRdXX0sIDpzb3VyY2UgIihkZWZuXG4gc3VidmVjXG4gXCJSZXR1cm5zIGEgcGVyc2lzdGVudCB2ZWN0b3Igb2YgdGhlIGl0ZW1zIGluIHZlY3RvciBmcm9tXFxuICBzdGFydCAoaW5jbHVzaXZlKSB0byBlbmQgKGV4Y2x1c2l2ZSkuICBJZiBlbmQgaXMgbm90IHN1cHBsaWVkLFxcbiAgZGVmYXVsdHMgdG8gKGNvdW50IHZlY3RvcikuIFRoaXMgb3BlcmF0aW9uIGlzIE8oMSkgYW5kIHZlcnkgZmFzdCwgYXNcXG4gIHRoZSByZXN1bHRpbmcgdmVjdG9yIHNoYXJlcyBzdHJ1Y3R1cmUgd2l0aCB0aGUgb3JpZ2luYWwgYW5kIG5vXFxuICB0cmltbWluZyBpcyBkb25lLlwiXG4gKFt2IHN0YXJ0XSAoc3VidmVjIHYgc3RhcnQgKGNvdW50IHYpKSlcbiAoW3Ygc3RhcnQgZW5kXVxuICAoYXNzZXJ0IChhbmQgKG5vdCAobmlsPyBzdGFydCkpIChub3QgKG5pbD8gZW5kKSkpKVxuICAoYnVpbGQtc3VidmVjIG5pbCB2IChpbnQgc3RhcnQpIChpbnQgZW5kKSBuaWwpKSlcbiJ9IHs6c3ltIC1wb3AhLCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0Y29sbCB3aXRoIHRoZSBsYXN0IGl0ZW0gcmVtb3ZlZCBmcm9tIGl0LiIsIDphcmdsaXN0cyAoW3Rjb2xsXSl9LCA6cHJvdG9jb2wgSVRyYW5zaWVudFZlY3Rvcn0gezpzeW0gcGFydGlhbCwgOm1ldGEgezpkb2MgIlRha2VzIGEgZnVuY3Rpb24gZiBhbmQgZmV3ZXIgdGhhbiB0aGUgbm9ybWFsIGFyZ3VtZW50cyB0byBmLCBhbmRcbiAgcmV0dXJucyBhIGZuIHRoYXQgdGFrZXMgYSB2YXJpYWJsZSBudW1iZXIgb2YgYWRkaXRpb25hbCBhcmdzLiBXaGVuXG4gIGNhbGxlZCwgdGhlIHJldHVybmVkIGZ1bmN0aW9uIGNhbGxzIGYgd2l0aCBhcmdzICsgYWRkaXRpb25hbCBhcmdzLiIsIDphcmdsaXN0cyBbW2ZdIFtmIGFyZzFdIFtmIGFyZzEgYXJnMl0gW2YgYXJnMSBhcmcyIGFyZzNdIFtmIGFyZzEgYXJnMiBhcmczICYgbW9yZV1dfSwgOnNvdXJjZSAiKGRlZm5cbiBwYXJ0aWFsXG4gXCJUYWtlcyBhIGZ1bmN0aW9uIGYgYW5kIGZld2VyIHRoYW4gdGhlIG5vcm1hbCBhcmd1bWVudHMgdG8gZiwgYW5kXFxuICByZXR1cm5zIGEgZm4gdGhhdCB0YWtlcyBhIHZhcmlhYmxlIG51bWJlciBvZiBhZGRpdGlvbmFsIGFyZ3MuIFdoZW5cXG4gIGNhbGxlZCwgdGhlIHJldHVybmVkIGZ1bmN0aW9uIGNhbGxzIGYgd2l0aCBhcmdzICsgYWRkaXRpb25hbCBhcmdzLlwiXG4gKFtmXSBmKVxuIChbZiBhcmcxXVxuICAoZm5cbiAgIChbXSAoZiBhcmcxKSlcbiAgIChbeF0gKGYgYXJnMSB4KSlcbiAgIChbeCB5XSAoZiBhcmcxIHggeSkpXG4gICAoW3ggeSB6XSAoZiBhcmcxIHggeSB6KSlcbiAgIChbeCB5IHogJiBhcmdzXSAoYXBwbHkgZiBhcmcxIHggeSB6IGFyZ3MpKSkpXG4gKFtmIGFyZzEgYXJnMl1cbiAgKGZuXG4gICAoW10gKGYgYXJnMSBhcmcyKSlcbiAgIChbeF0gKGYgYXJnMSBhcmcyIHgpKVxuICAgKFt4IHldIChmIGFyZzEgYXJnMiB4IHkpKVxuICAgKFt4IHkgel0gKGYgYXJnMSBhcmcyIHggeSB6KSlcbiAgIChbeCB5IHogJiBhcmdzXSAoYXBwbHkgZiBhcmcxIGFyZzIgeCB5IHogYXJncykpKSlcbiAoW2YgYXJnMSBhcmcyIGFyZzNdXG4gIChmblxuICAgKFtdIChmIGFyZzEgYXJnMiBhcmczKSlcbiAgIChbeF0gKGYgYXJnMSBhcmcyIGFyZzMgeCkpXG4gICAoW3ggeV0gKGYgYXJnMSBhcmcyIGFyZzMgeCB5KSlcbiAgIChbeCB5IHpdIChmIGFyZzEgYXJnMiBhcmczIHggeSB6KSlcbiAgIChbeCB5IHogJiBhcmdzXSAoYXBwbHkgZiBhcmcxIGFyZzIgYXJnMyB4IHkgeiBhcmdzKSkpKVxuIChbZiBhcmcxIGFyZzIgYXJnMyAmIG1vcmVdXG4gIChmbiBbJiBhcmdzXSAoYXBwbHkgZiBhcmcxIGFyZzIgYXJnMyAoY29uY2F0IG1vcmUgYXJncykpKSkpXG4ifSB7OnN5bSBjaHVua2VkLXNlcT8sIDptZXRhIHs6ZG9jICJSZXR1cm4gdHJ1ZSBpZiB4IHNhdGlzZmllcyBJQ2h1bmtlZFNlcS4iLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmblxuIGNodW5rZWQtc2VxP1xuIFwiUmV0dXJuIHRydWUgaWYgeCBzYXRpc2ZpZXMgSUNodW5rZWRTZXEuXCJcbiBbeF1cbiAoaW1wbGVtZW50cz8gSUNodW5rZWRTZXEgeCkpXG4ifSB7OnN5bSByZXBsaWNhdGUsIDptZXRhIHs6ZG9jICJERVBSRUNBVEVEOiBVc2UgJ3JlcGVhdCcgaW5zdGVhZC5cbiAgUmV0dXJucyBhIGxhenkgc2VxIG9mIG4geHMuIiwgOmFyZ2xpc3RzIChbbiB4XSl9LCA6c291cmNlICIoZGVmblxuIHJlcGxpY2F0ZVxuIFwiREVQUkVDQVRFRDogVXNlICdyZXBlYXQnIGluc3RlYWQuXFxuICBSZXR1cm5zIGEgbGF6eSBzZXEgb2YgbiB4cy5cIlxuIFtuIHhdXG4gKHRha2UgbiAocmVwZWF0IHgpKSlcbiJ9IHs6c3ltIG1pbi1rZXksIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRoZSB4IGZvciB3aGljaCAoayB4KSwgYSBudW1iZXIsIGlzIGxlYXN0LlxuXG4gIElmIHRoZXJlIGFyZSBtdWx0aXBsZSBzdWNoIHhzLCB0aGUgbGFzdCBvbmUgaXMgcmV0dXJuZWQuIiwgOmFyZ2xpc3RzIFtbayB4XSBbayB4IHldIFtrIHggeSAmIG1vcmVdXX0sIDpzb3VyY2UgIihkZWZuXG4gbWluLWtleVxuIFwiUmV0dXJucyB0aGUgeCBmb3Igd2hpY2ggKGsgeCksIGEgbnVtYmVyLCBpcyBsZWFzdC5cXG5cXG4gIElmIHRoZXJlIGFyZSBtdWx0aXBsZSBzdWNoIHhzLCB0aGUgbGFzdCBvbmUgaXMgcmV0dXJuZWQuXCJcbiAoW2sgeF0geClcbiAoW2sgeCB5XSAoaWYgKDwgKGsgeCkgKGsgeSkpIHggeSkpXG4gKFtrIHggeSAmIG1vcmVdXG4gIChyZWR1Y2VcbiAgIChmbiogW3AxX180MzE2NCMgcDJfXzQzMTY1I10gKG1pbi1rZXkgayBwMV9fNDMxNjQjIHAyX180MzE2NSMpKVxuICAgKG1pbi1rZXkgayB4IHkpXG4gICBtb3JlKSkpXG4ifSB7OnN5bSByZWR1Y2VkLCA6bWV0YSB7OmRvYyAiV3JhcHMgeCBpbiBhIHdheSBzdWNoIHRoYXQgYSByZWR1Y2Ugd2lsbCB0ZXJtaW5hdGUgd2l0aCB0aGUgdmFsdWUgeCIsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuXG4gcmVkdWNlZFxuIFwiV3JhcHMgeCBpbiBhIHdheSBzdWNoIHRoYXQgYSByZWR1Y2Ugd2lsbCB0ZXJtaW5hdGUgd2l0aCB0aGUgdmFsdWUgeFwiXG4gW3hdXG4gKFJlZHVjZWQuIHgpKVxuIn0gezpzeW0gcmUtbWF0Y2hlcywgOm1ldGEgezpkb2MgIlJldHVybnMgdGhlIHJlc3VsdCBvZiAocmUtZmluZCByZSBzKSBpZiByZSBmdWxseSBtYXRjaGVzIHMuIiwgOmFyZ2xpc3RzIChbcmUgc10pfSwgOnNvdXJjZSAiKGRlZm5cbiByZS1tYXRjaGVzXG4gXCJSZXR1cm5zIHRoZSByZXN1bHQgb2YgKHJlLWZpbmQgcmUgcykgaWYgcmUgZnVsbHkgbWF0Y2hlcyBzLlwiXG4gW3JlIHNdXG4gKGlmXG4gIChzdHJpbmc/IHMpXG4gIChsZXRcbiAgIFttYXRjaGVzICguZXhlYyByZSBzKV1cbiAgICh3aGVuXG4gICAgKGFuZCAobm90IChuaWw/IG1hdGNoZXMpKSAoPSAoYWdldCBtYXRjaGVzIDApIHMpKVxuICAgIChpZiAoPT0gKGNvdW50IG1hdGNoZXMpIDEpIChhZ2V0IG1hdGNoZXMgMCkgKHZlYyBtYXRjaGVzKSkpKVxuICAodGhyb3cgKGpzL1R5cGVFcnJvci4gXCJyZS1tYXRjaGVzIG11c3QgbWF0Y2ggYWdhaW5zdCBhIHN0cmluZy5cIikpKSlcbiJ9IHs6c3ltIGFycmF5LW1hcCwgOm1ldGEgezpkb2MgImtleXZhbCA9PiBrZXkgdmFsXG4gIFJldHVybnMgYSBuZXcgYXJyYXkgbWFwIHdpdGggc3VwcGxpZWQgbWFwcGluZ3MuIiwgOmFyZ2xpc3RzIChbJiBrZXl2YWxzXSl9LCA6c291cmNlICIoZGVmblxuIGFycmF5LW1hcFxuIFwia2V5dmFsID0+IGtleSB2YWxcXG4gIFJldHVybnMgYSBuZXcgYXJyYXkgbWFwIHdpdGggc3VwcGxpZWQgbWFwcGluZ3MuXCJcbiBbJiBrZXl2YWxzXVxuIChsZXRcbiAgW2FyclxuICAgKGlmXG4gICAgKGFuZCAoaW5zdGFuY2U/IEluZGV4ZWRTZXEga2V5dmFscykgKHplcm8/ICguLWkga2V5dmFscykpKVxuICAgICguLWFyciBrZXl2YWxzKVxuICAgIChpbnRvLWFycmF5IGtleXZhbHMpKV1cbiAgKC5jcmVhdGVBc0lmQnlBc3NvYyBQZXJzaXN0ZW50QXJyYXlNYXAgYXJyKSkpXG4ifSB7OnN5bSBJVHJhbnNpZW50U2V0LCA6bWV0YSB7OmRvYyAiUHJvdG9jb2wgZm9yIGFkZGluZyBzZXQgZnVuY3Rpb25hbGl0eSB0byBhIHRyYW5zaWVudCBjb2xsZWN0aW9uLiJ9LCA6bWV0aG9kcyAoLWRpc2pvaW4hKX0gezpzeW0gdW5jaGVja2VkLWJ5dGUsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm4gdW5jaGVja2VkLWJ5dGUgW3hdIHgpXG4ifSB7OnN5bSBldmVyeS1wcmVkLCA6bWV0YSB7OmRvYyAiVGFrZXMgYSBzZXQgb2YgcHJlZGljYXRlcyBhbmQgcmV0dXJucyBhIGZ1bmN0aW9uIGYgdGhhdCByZXR1cm5zIHRydWUgaWYgYWxsIG9mIGl0c1xuICBjb21wb3NpbmcgcHJlZGljYXRlcyByZXR1cm4gYSBsb2dpY2FsIHRydWUgdmFsdWUgYWdhaW5zdCBhbGwgb2YgaXRzIGFyZ3VtZW50cywgZWxzZSBpdCByZXR1cm5zXG4gIGZhbHNlLiBOb3RlIHRoYXQgZiBpcyBzaG9ydC1jaXJjdWl0aW5nIGluIHRoYXQgaXQgd2lsbCBzdG9wIGV4ZWN1dGlvbiBvbiB0aGUgZmlyc3RcbiAgYXJndW1lbnQgdGhhdCB0cmlnZ2VycyBhIGxvZ2ljYWwgZmFsc2UgcmVzdWx0IGFnYWluc3QgdGhlIG9yaWdpbmFsIHByZWRpY2F0ZXMuIiwgOmFyZ2xpc3RzIFtbcF0gW3AxIHAyXSBbcDEgcDIgcDNdIFtwMSBwMiBwMyAmIHBzXV19LCA6c291cmNlICIoZGVmblxuIGV2ZXJ5LXByZWRcbiBcIlRha2VzIGEgc2V0IG9mIHByZWRpY2F0ZXMgYW5kIHJldHVybnMgYSBmdW5jdGlvbiBmIHRoYXQgcmV0dXJucyB0cnVlIGlmIGFsbCBvZiBpdHNcXG4gIGNvbXBvc2luZyBwcmVkaWNhdGVzIHJldHVybiBhIGxvZ2ljYWwgdHJ1ZSB2YWx1ZSBhZ2FpbnN0IGFsbCBvZiBpdHMgYXJndW1lbnRzLCBlbHNlIGl0IHJldHVybnNcXG4gIGZhbHNlLiBOb3RlIHRoYXQgZiBpcyBzaG9ydC1jaXJjdWl0aW5nIGluIHRoYXQgaXQgd2lsbCBzdG9wIGV4ZWN1dGlvbiBvbiB0aGUgZmlyc3RcXG4gIGFyZ3VtZW50IHRoYXQgdHJpZ2dlcnMgYSBsb2dpY2FsIGZhbHNlIHJlc3VsdCBhZ2FpbnN0IHRoZSBvcmlnaW5hbCBwcmVkaWNhdGVzLlwiXG4gKFtwXVxuICAoZm5cbiAgIGVwMVxuICAgKFtdIHRydWUpXG4gICAoW3hdIChib29sZWFuIChwIHgpKSlcbiAgIChbeCB5XSAoYm9vbGVhbiAoYW5kIChwIHgpIChwIHkpKSkpXG4gICAoW3ggeSB6XSAoYm9vbGVhbiAoYW5kIChwIHgpIChwIHkpIChwIHopKSkpXG4gICAoW3ggeSB6ICYgYXJnc10gKGJvb2xlYW4gKGFuZCAoZXAxIHggeSB6KSAoZXZlcnk/IHAgYXJncykpKSkpKVxuIChbcDEgcDJdXG4gIChmblxuICAgZXAyXG4gICAoW10gdHJ1ZSlcbiAgIChbeF0gKGJvb2xlYW4gKGFuZCAocDEgeCkgKHAyIHgpKSkpXG4gICAoW3ggeV0gKGJvb2xlYW4gKGFuZCAocDEgeCkgKHAxIHkpIChwMiB4KSAocDIgeSkpKSlcbiAgIChbeCB5IHpdIChib29sZWFuIChhbmQgKHAxIHgpIChwMSB5KSAocDEgeikgKHAyIHgpIChwMiB5KSAocDIgeikpKSlcbiAgIChbeCB5IHogJiBhcmdzXVxuICAgIChib29sZWFuXG4gICAgIChhbmRcbiAgICAgIChlcDIgeCB5IHopXG4gICAgICAoZXZlcnk/XG4gICAgICAgKGZuKiBbcDFfXzQzMTM5I10gKGFuZCAocDEgcDFfXzQzMTM5IykgKHAyIHAxX180MzEzOSMpKSlcbiAgICAgICBhcmdzKSkpKSkpXG4gKFtwMSBwMiBwM11cbiAgKGZuXG4gICBlcDNcbiAgIChbXSB0cnVlKVxuICAgKFt4XSAoYm9vbGVhbiAoYW5kIChwMSB4KSAocDIgeCkgKHAzIHgpKSkpXG4gICAoW3ggeV0gKGJvb2xlYW4gKGFuZCAocDEgeCkgKHAyIHgpIChwMyB4KSAocDEgeSkgKHAyIHkpIChwMyB5KSkpKVxuICAgKFt4IHkgel1cbiAgICAoYm9vbGVhblxuICAgICAoYW5kXG4gICAgICAocDEgeClcbiAgICAgIChwMiB4KVxuICAgICAgKHAzIHgpXG4gICAgICAocDEgeSlcbiAgICAgIChwMiB5KVxuICAgICAgKHAzIHkpXG4gICAgICAocDEgeilcbiAgICAgIChwMiB6KVxuICAgICAgKHAzIHopKSkpXG4gICAoW3ggeSB6ICYgYXJnc11cbiAgICAoYm9vbGVhblxuICAgICAoYW5kXG4gICAgICAoZXAzIHggeSB6KVxuICAgICAgKGV2ZXJ5P1xuICAgICAgIChmbipcbiAgICAgICAgW3AxX180MzE0MCNdXG4gICAgICAgIChhbmQgKHAxIHAxX180MzE0MCMpIChwMiBwMV9fNDMxNDAjKSAocDMgcDFfXzQzMTQwIykpKVxuICAgICAgIGFyZ3MpKSkpKSlcbiAoW3AxIHAyIHAzICYgcHNdXG4gIChsZXRcbiAgIFtwcyAobGlzdCogcDEgcDIgcDMgcHMpXVxuICAgKGZuXG4gICAgZXBuXG4gICAgKFtdIHRydWUpXG4gICAgKFt4XSAoZXZlcnk/IChmbiogW3AxX180MzE0MSNdIChwMV9fNDMxNDEjIHgpKSBwcykpXG4gICAgKFt4IHldXG4gICAgIChldmVyeT9cbiAgICAgIChmbiogW3AxX180MzE0MiNdIChhbmQgKHAxX180MzE0MiMgeCkgKHAxX180MzE0MiMgeSkpKVxuICAgICAgcHMpKVxuICAgIChbeCB5IHpdXG4gICAgIChldmVyeT9cbiAgICAgIChmbipcbiAgICAgICBbcDFfXzQzMTQzI11cbiAgICAgICAoYW5kIChwMV9fNDMxNDMjIHgpIChwMV9fNDMxNDMjIHkpIChwMV9fNDMxNDMjIHopKSlcbiAgICAgIHBzKSlcbiAgICAoW3ggeSB6ICYgYXJnc11cbiAgICAgKGJvb2xlYW5cbiAgICAgIChhbmRcbiAgICAgICAoZXBuIHggeSB6KVxuICAgICAgIChldmVyeT8gKGZuKiBbcDFfXzQzMTQ0I10gKGV2ZXJ5PyBwMV9fNDMxNDQjIGFyZ3MpKSBwcykpKSkpKSkpXG4ifSB7OnN5bSBrZXlzLCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIHNlcXVlbmNlIG9mIHRoZSBtYXAncyBrZXlzLCBpbiB0aGUgc2FtZSBvcmRlciBhcyAoc2VxIG1hcCkuIiwgOmFyZ2xpc3RzIChbbWFwXSl9LCA6c291cmNlICIoZGVmblxuIGtleXNcbiBcIlJldHVybnMgYSBzZXF1ZW5jZSBvZiB0aGUgbWFwJ3Mga2V5cywgaW4gdGhlIHNhbWUgb3JkZXIgYXMgKHNlcSBtYXApLlwiXG4gW21hcF1cbiAod2hlbi1sZXQgW21zZXEgKHNlcSBtYXApXSAoS2V5U2VxLiBtc2VxIG5pbCkpKVxuIn0gezpzeW0gbWlzc2luZy1wcm90b2NvbCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtwcm90byBvYmpdKX0sIDpzb3VyY2UgIihkZWZuXG4gbWlzc2luZy1wcm90b2NvbFxuIFtwcm90byBvYmpdXG4gKGxldFxuICBbdHlcbiAgICh0eXBlIG9iailcbiAgIHR5XG4gICAoaWZcbiAgICAoYW5kIHR5ICguLWNsanMkbGFuZyR0eXBlIHR5KSlcbiAgICAoLi1jbGpzJGxhbmckY3RvclN0ciB0eSlcbiAgICAoZ29vZy90eXBlT2Ygb2JqKSldXG4gIChqcy9FcnJvci5cbiAgICguam9pblxuICAgIChhcnJheVxuICAgICBcIk5vIHByb3RvY29sIG1ldGhvZCBcIlxuICAgICBwcm90b1xuICAgICBcIiBkZWZpbmVkIGZvciB0eXBlIFwiXG4gICAgIHR5XG4gICAgIFwiOiBcIlxuICAgICBvYmopXG4gICAgXCJcIikpKSlcbiJ9IHs6c3ltIGxvYWQtZmlsZSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtmaWxlXSl9LCA6c291cmNlICIoZGVmblxuIGxvYWQtZmlsZVxuIFtmaWxlXVxuICh3aGVuLW5vdCBqcy9DT01QSUxFRCAoY2xqcy5jb3JlL2xvYWQtZmlsZSogZmlsZSkpKVxuIn0gezpzeW0gZGlzdGluY3Q/LCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0cnVlIGlmIG5vIHR3byBvZiB0aGUgYXJndW1lbnRzIGFyZSA9IiwgOmFyZ2xpc3RzIFtbeF0gW3ggeV0gW3ggeSAmIG1vcmVdXX0sIDpzb3VyY2UgIihkZWZuXG4gZGlzdGluY3Q/XG4gXCJSZXR1cm5zIHRydWUgaWYgbm8gdHdvIG9mIHRoZSBhcmd1bWVudHMgYXJlID1cIlxuIChbeF0gdHJ1ZSlcbiAoW3ggeV0gKG5vdCAoPSB4IHkpKSlcbiAoW3ggeSAmIG1vcmVdXG4gIChpZlxuICAgKG5vdCAoPSB4IHkpKVxuICAgKGxvb3BcbiAgICBbcyAje3ggeX0geHMgbW9yZV1cbiAgICAobGV0XG4gICAgIFt4IChmaXJzdCB4cykgZXRjIChuZXh0IHhzKV1cbiAgICAgKGlmIHhzIChpZiAoY29udGFpbnM/IHMgeCkgZmFsc2UgKHJlY3VyIChjb25qIHMgeCkgZXRjKSkgdHJ1ZSkpKVxuICAgZmFsc2UpKSlcbiJ9IHs6c3ltIHBvcy1pbnQ/LCA6bWV0YSB7OmRvYyAiUmV0dXJuIHRydWUgaWYgeCBzYXRpc2ZpZXMgaW50PyBhbmQgaXMgcG9zaXRpdmUuIiwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBwb3MtaW50P1xuIFwiUmV0dXJuIHRydWUgaWYgeCBzYXRpc2ZpZXMgaW50PyBhbmQgaXMgcG9zaXRpdmUuXCJcbiBbeF1cbiAoY29uZFxuICAoaW50ZWdlcj8geClcbiAgKHBvcz8geClcbiAgKGluc3RhbmNlPyBnb29nLm1hdGguSW50ZWdlciB4KVxuICAoYW5kIChub3QgKC5pc05lZ2F0aXZlIHgpKSAobm90ICguaXNaZXJvIHgpKSlcbiAgKGluc3RhbmNlPyBnb29nLm1hdGguTG9uZyB4KVxuICAoYW5kIChub3QgKC5pc05lZ2F0aXZlIHgpKSAobm90ICguaXNaZXJvIHgpKSlcbiAgOmVsc2VcbiAgZmFsc2UpKVxuIn0gezpzeW0gdW5jaGVja2VkLXNob3J0LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuIHVuY2hlY2tlZC1zaG9ydCBbeF0geClcbiJ9IHs6c3ltIG1ldGhvZHMsIDptZXRhIHs6ZG9jICJHaXZlbiBhIG11bHRpbWV0aG9kLCByZXR1cm5zIGEgbWFwIG9mIGRpc3BhdGNoIHZhbHVlcyAtPiBkaXNwYXRjaCBmbnMiLCA6YXJnbGlzdHMgKFttdWx0aWZuXSl9LCA6c291cmNlICIoZGVmblxuIG1ldGhvZHNcbiBcIkdpdmVuIGEgbXVsdGltZXRob2QsIHJldHVybnMgYSBtYXAgb2YgZGlzcGF0Y2ggdmFsdWVzIC0+IGRpc3BhdGNoIGZuc1wiXG4gW211bHRpZm5dXG4gKC1tZXRob2RzIG11bHRpZm4pKVxuIn0gezpzeW0gb2RkPywgOm1ldGEgezpkb2MgIlJldHVybnMgdHJ1ZSBpZiBuIGlzIG9kZCwgdGhyb3dzIGFuIGV4Y2VwdGlvbiBpZiBuIGlzIG5vdCBhbiBpbnRlZ2VyIiwgOmFyZ2xpc3RzIChbbl0pfSwgOnNvdXJjZSAiKGRlZm5cbiBvZGQ/XG4gXCJSZXR1cm5zIHRydWUgaWYgbiBpcyBvZGQsIHRocm93cyBhbiBleGNlcHRpb24gaWYgbiBpcyBub3QgYW4gaW50ZWdlclwiXG4gW25dXG4gKG5vdCAoZXZlbj8gbikpKVxuIn0gezpzeW0gLWdldC1tZXRob2QsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbbWYgZGlzcGF0Y2gtdmFsXSl9LCA6cHJvdG9jb2wgSU11bHRpRm59IHs6c3ltIGZyZXF1ZW5jaWVzLCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIG1hcCBmcm9tIGRpc3RpbmN0IGl0ZW1zIGluIGNvbGwgdG8gdGhlIG51bWJlciBvZiB0aW1lc1xuICB0aGV5IGFwcGVhci4iLCA6YXJnbGlzdHMgKFtjb2xsXSl9LCA6c291cmNlICIoZGVmblxuIGZyZXF1ZW5jaWVzXG4gXCJSZXR1cm5zIGEgbWFwIGZyb20gZGlzdGluY3QgaXRlbXMgaW4gY29sbCB0byB0aGUgbnVtYmVyIG9mIHRpbWVzXFxuICB0aGV5IGFwcGVhci5cIlxuIFtjb2xsXVxuIChwZXJzaXN0ZW50IVxuICAocmVkdWNlXG4gICAoZm4gW2NvdW50cyB4XSAoYXNzb2MhIGNvdW50cyB4IChpbmMgKGdldCBjb3VudHMgeCAwKSkpKVxuICAgKHRyYW5zaWVudCB7fSlcbiAgIGNvbGwpKSlcbiJ9IHs6c3ltIHJlZHVjZWFibGU/LCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0cnVlIGlmIGNvbGwgc2F0aXNmaWVzIElSZWR1Y2UiLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmblxuIHJlZHVjZWFibGU/XG4gXCJSZXR1cm5zIHRydWUgaWYgY29sbCBzYXRpc2ZpZXMgSVJlZHVjZVwiXG4gW3hdXG4gKHNhdGlzZmllcz8gSVJlZHVjZSB4KSlcbiJ9IHs6c3ltIHN0cmluZy1oYXNoLWNhY2hlLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiBzdHJpbmctaGFzaC1jYWNoZSAoanMtb2JqKSlcbiJ9IHs6c3ltIHJzdWJzZXEsIDptZXRhIHs6ZG9jICJzYyBtdXN0IGJlIGEgc29ydGVkIGNvbGxlY3Rpb24sIHRlc3Qocykgb25lIG9mIDwsIDw9LCA+IG9yXG4gID49LiBSZXR1cm5zIGEgcmV2ZXJzZSBzZXEgb2YgdGhvc2UgZW50cmllcyB3aXRoIGtleXMgZWsgZm9yXG4gIHdoaWNoICh0ZXN0ICguLiBzYyBjb21wYXJhdG9yIChjb21wYXJlIGVrIGtleSkpIDApIGlzIHRydWUiLCA6YXJnbGlzdHMgW1tzYyB0ZXN0IGtleV0gW3NjIHN0YXJ0LXRlc3Qgc3RhcnQta2V5IGVuZC10ZXN0IGVuZC1rZXldXX0sIDpzb3VyY2UgIihkZWZuXG4gcnN1YnNlcVxuIFwic2MgbXVzdCBiZSBhIHNvcnRlZCBjb2xsZWN0aW9uLCB0ZXN0KHMpIG9uZSBvZiA8LCA8PSwgPiBvclxcbiAgPj0uIFJldHVybnMgYSByZXZlcnNlIHNlcSBvZiB0aG9zZSBlbnRyaWVzIHdpdGgga2V5cyBlayBmb3JcXG4gIHdoaWNoICh0ZXN0ICguLiBzYyBjb21wYXJhdG9yIChjb21wYXJlIGVrIGtleSkpIDApIGlzIHRydWVcIlxuIChbc2MgdGVzdCBrZXldXG4gIChsZXRcbiAgIFtpbmNsdWRlIChtay1ib3VuZC1mbiBzYyB0ZXN0IGtleSldXG4gICAoaWZcbiAgICAoI3s8IDw9fSB0ZXN0KVxuICAgICh3aGVuLWxldFxuICAgICBbW2UgOmFzIHNdICgtc29ydGVkLXNlcS1mcm9tIHNjIGtleSBmYWxzZSldXG4gICAgIChpZiAoaW5jbHVkZSBlKSBzIChuZXh0IHMpKSlcbiAgICAodGFrZS13aGlsZSBpbmNsdWRlICgtc29ydGVkLXNlcSBzYyBmYWxzZSkpKSkpXG4gKFtzYyBzdGFydC10ZXN0IHN0YXJ0LWtleSBlbmQtdGVzdCBlbmQta2V5XVxuICAod2hlbi1sZXRcbiAgIFtbZSA6YXMgc10gKC1zb3J0ZWQtc2VxLWZyb20gc2MgZW5kLWtleSBmYWxzZSldXG4gICAodGFrZS13aGlsZVxuICAgIChtay1ib3VuZC1mbiBzYyBzdGFydC10ZXN0IHN0YXJ0LWtleSlcbiAgICAoaWYgKChtay1ib3VuZC1mbiBzYyBlbmQtdGVzdCBlbmQta2V5KSBlKSBzIChuZXh0IHMpKSkpKSlcbiJ9IHs6c3ltIGluYywgOm1ldGEgezpkb2MgIlJldHVybnMgYSBudW1iZXIgb25lIGdyZWF0ZXIgdGhhbiBudW0uIiwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBpbmNcbiBcIlJldHVybnMgYSBudW1iZXIgb25lIGdyZWF0ZXIgdGhhbiBudW0uXCJcbiBbeF1cbiAoY2xqcy5jb3JlLysgeCAxKSlcbiJ9IHs6c3ltIHR5cGUtPnN0ciwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt0eV0pfSwgOnNvdXJjZSAiKGRlZm4gdHlwZS0+c3RyIFt0eV0gKGlmLWxldCBbcyAoLi1jbGpzJGxhbmckY3RvclN0ciB0eSldIHMgKHN0ciB0eSkpKVxuIn0gezpzeW0gZ2V0LW1ldGhvZCwgOm1ldGEgezpkb2MgIkdpdmVuIGEgbXVsdGltZXRob2QgYW5kIGEgZGlzcGF0Y2ggdmFsdWUsIHJldHVybnMgdGhlIGRpc3BhdGNoIGZuXG4gIHRoYXQgd291bGQgYXBwbHkgdG8gdGhhdCB2YWx1ZSwgb3IgbmlsIGlmIG5vbmUgYXBwbHkgYW5kIG5vIGRlZmF1bHQiLCA6YXJnbGlzdHMgKFttdWx0aWZuIGRpc3BhdGNoLXZhbF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBnZXQtbWV0aG9kXG4gXCJHaXZlbiBhIG11bHRpbWV0aG9kIGFuZCBhIGRpc3BhdGNoIHZhbHVlLCByZXR1cm5zIHRoZSBkaXNwYXRjaCBmblxcbiAgdGhhdCB3b3VsZCBhcHBseSB0byB0aGF0IHZhbHVlLCBvciBuaWwgaWYgbm9uZSBhcHBseSBhbmQgbm8gZGVmYXVsdFwiXG4gW211bHRpZm4gZGlzcGF0Y2gtdmFsXVxuICgtZ2V0LW1ldGhvZCBtdWx0aWZuIGRpc3BhdGNoLXZhbCkpXG4ifSB7OnN5bSB1dWlkPywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmbiB1dWlkPyBbeF0gKGltcGxlbWVudHM/IElVVUlEIHgpKVxuIn0gezpzeW0gZXM2LWVudHJpZXMtaXRlcmF0b3IsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbY29sbF0pfSwgOnNvdXJjZSAiKGRlZm4gZXM2LWVudHJpZXMtaXRlcmF0b3IgW2NvbGxdIChFUzZFbnRyaWVzSXRlcmF0b3IuIChzZXEgY29sbCkpKVxuIn0gezpzeW0gYml0LWNsZWFyLCA6bWV0YSB7OmRvYyAiQ2xlYXIgYml0IGF0IGluZGV4IG4iLCA6YXJnbGlzdHMgKFt4IG5dKX0sIDpzb3VyY2UgIihkZWZuIGJpdC1jbGVhciBcIkNsZWFyIGJpdCBhdCBpbmRleCBuXCIgW3ggbl0gKGNsanMuY29yZS9iaXQtY2xlYXIgeCBuKSlcbiJ9IHs6c3ltIGZpbHRlciwgOm1ldGEgezpkb2MgIlJldHVybnMgYSBsYXp5IHNlcXVlbmNlIG9mIHRoZSBpdGVtcyBpbiBjb2xsIGZvciB3aGljaFxuICAocHJlZCBpdGVtKSByZXR1cm5zIGxvZ2ljYWwgdHJ1ZS4gcHJlZCBtdXN0IGJlIGZyZWUgb2Ygc2lkZS1lZmZlY3RzLlxuICBSZXR1cm5zIGEgdHJhbnNkdWNlciB3aGVuIG5vIGNvbGxlY3Rpb24gaXMgcHJvdmlkZWQuIiwgOmFyZ2xpc3RzIFtbcHJlZF0gW3ByZWQgY29sbF1dfSwgOnNvdXJjZSAiKGRlZm5cbiBmaWx0ZXJcbiBcIlJldHVybnMgYSBsYXp5IHNlcXVlbmNlIG9mIHRoZSBpdGVtcyBpbiBjb2xsIGZvciB3aGljaFxcbiAgKHByZWQgaXRlbSkgcmV0dXJucyBsb2dpY2FsIHRydWUuIHByZWQgbXVzdCBiZSBmcmVlIG9mIHNpZGUtZWZmZWN0cy5cXG4gIFJldHVybnMgYSB0cmFuc2R1Y2VyIHdoZW4gbm8gY29sbGVjdGlvbiBpcyBwcm92aWRlZC5cIlxuIChbcHJlZF1cbiAgKGZuXG4gICBbcmZdXG4gICAoZm5cbiAgICAoW10gKHJmKSlcbiAgICAoW3Jlc3VsdF0gKHJmIHJlc3VsdCkpXG4gICAgKFtyZXN1bHQgaW5wdXRdIChpZiAocHJlZCBpbnB1dCkgKHJmIHJlc3VsdCBpbnB1dCkgcmVzdWx0KSkpKSlcbiAoW3ByZWQgY29sbF1cbiAgKGxhenktc2VxXG4gICAod2hlbi1sZXRcbiAgICBbcyAoc2VxIGNvbGwpXVxuICAgIChpZlxuICAgICAoY2h1bmtlZC1zZXE/IHMpXG4gICAgIChsZXRcbiAgICAgIFtjIChjaHVuay1maXJzdCBzKSBzaXplIChjb3VudCBjKSBiIChjaHVuay1idWZmZXIgc2l6ZSldXG4gICAgICAoZG90aW1lc1xuICAgICAgIFtpIHNpemVdXG4gICAgICAgKHdoZW4gKHByZWQgKC1udGggYyBpKSkgKGNodW5rLWFwcGVuZCBiICgtbnRoIGMgaSkpKSlcbiAgICAgIChjaHVuay1jb25zIChjaHVuayBiKSAoZmlsdGVyIHByZWQgKGNodW5rLXJlc3QgcykpKSlcbiAgICAgKGxldFxuICAgICAgW2YgKGZpcnN0IHMpIHIgKHJlc3QgcyldXG4gICAgICAoaWYgKHByZWQgZikgKGNvbnMgZiAoZmlsdGVyIHByZWQgcikpIChmaWx0ZXIgcHJlZCByKSkpKSkpKSlcbiJ9IHs6c3ltIC1hc3NvYy1uISwgOm1ldGEgezpkb2MgIlJldHVybnMgdGNvbGwgd2l0aCB2YWx1ZSB2YWwgYWRkZWQgYXQgcG9zaXRpb24gbi4iLCA6YXJnbGlzdHMgKFt0Y29sbCBuIHZhbF0pfSwgOnByb3RvY29sIElUcmFuc2llbnRWZWN0b3J9IHs6c3ltIElXaXRoTWV0YSwgOm1ldGEgezpkb2MgIlByb3RvY29sIGZvciBhZGRpbmcgbWV0YWRhdGEgdG8gYW4gb2JqZWN0LiJ9LCA6bWV0aG9kcyAoLXdpdGgtbWV0YSl9IHs6c3ltIGxpc3QsIDptZXRhIHs6ZG9jICJDcmVhdGVzIGEgbmV3IGxpc3QgY29udGFpbmluZyB0aGUgaXRlbXMuIiwgOmFyZ2xpc3RzIChbJiB4c10pfSwgOnNvdXJjZSAiKGRlZm5cbiBsaXN0XG4gXCJDcmVhdGVzIGEgbmV3IGxpc3QgY29udGFpbmluZyB0aGUgaXRlbXMuXCJcbiBbJiB4c11cbiAobGV0XG4gIFthcnJcbiAgIChpZlxuICAgIChhbmQgKGluc3RhbmNlPyBJbmRleGVkU2VxIHhzKSAoemVybz8gKC4taSB4cykpKVxuICAgICguLWFyciB4cylcbiAgICAobGV0XG4gICAgIFthcnIgKGFycmF5KV1cbiAgICAgKGxvb3BcbiAgICAgIFt4cyB4c11cbiAgICAgIChpZi1ub3RcbiAgICAgICAobmlsPyB4cylcbiAgICAgICAoZG8gKC5wdXNoIGFyciAoLWZpcnN0IHhzKSkgKHJlY3VyICgtbmV4dCB4cykpKVxuICAgICAgIGFycikpKSldXG4gIChsb29wXG4gICBbaSAoYWxlbmd0aCBhcnIpIHIgKCldXG4gICAoaWYgKD4gaSAwKSAocmVjdXIgKGRlYyBpKSAoLWNvbmogciAoYWdldCBhcnIgKGRlYyBpKSkpKSByKSkpKVxuIn0gezpzeW0gKywgOm1ldGEgezpkb2MgIlJldHVybnMgdGhlIHN1bSBvZiBudW1zLiAoKykgcmV0dXJucyAwLiIsIDphcmdsaXN0cyBbW10gW3hdIFt4IHldIFt4IHkgJiBtb3JlXV19LCA6c291cmNlICIoZGVmblxuICtcbiBcIlJldHVybnMgdGhlIHN1bSBvZiBudW1zLiAoKykgcmV0dXJucyAwLlwiXG4gKFtdIDApXG4gKFt4XSB4KVxuIChbeCB5XSAoY2xqcy5jb3JlLysgeCB5KSlcbiAoW3ggeSAmIG1vcmVdIChyZWR1Y2UgKyAoY2xqcy5jb3JlLysgeCB5KSBtb3JlKSkpXG4ifSB7OnN5bSBzcGxpdC13aXRoLCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIHZlY3RvciBvZiBbKHRha2Utd2hpbGUgcHJlZCBjb2xsKSAoZHJvcC13aGlsZSBwcmVkIGNvbGwpXSIsIDphcmdsaXN0cyAoW3ByZWQgY29sbF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBzcGxpdC13aXRoXG4gXCJSZXR1cm5zIGEgdmVjdG9yIG9mIFsodGFrZS13aGlsZSBwcmVkIGNvbGwpIChkcm9wLXdoaWxlIHByZWQgY29sbCldXCJcbiBbcHJlZCBjb2xsXVxuIFsodGFrZS13aGlsZSBwcmVkIGNvbGwpIChkcm9wLXdoaWxlIHByZWQgY29sbCldKVxuIn0gezpzeW0gYXNldCwgOm1ldGEgezpkb2MgIlNldHMgdGhlIHZhbHVlIGF0IHRoZSBpbmRleC9pbmRpY2VzLiBXb3JrcyBvbiBKYXZhU2NyaXB0IGFycmF5cy5cbiAgUmV0dXJucyB2YWwuIiwgOmFyZ2xpc3RzIFtbYXJyYXkgaWR4IHZhbF0gW2FycmF5IGlkeCBpZHgyICYgaWR4dl1dfSwgOnNvdXJjZSAiKGRlZm5cbiBhc2V0XG4gXCJTZXRzIHRoZSB2YWx1ZSBhdCB0aGUgaW5kZXgvaW5kaWNlcy4gV29ya3Mgb24gSmF2YVNjcmlwdCBhcnJheXMuXFxuICBSZXR1cm5zIHZhbC5cIlxuIChbYXJyYXkgaWR4IHZhbF0gKGNsanMuY29yZS9hc2V0IGFycmF5IGlkeCB2YWwpKVxuIChbYXJyYXkgaWR4IGlkeDIgJiBpZHh2XSAoYXBwbHkgYXNldCAoYWdldCBhcnJheSBpZHgpIGlkeDIgaWR4dikpKVxuIn0gezpzeW0gaW50LXJvdGF0ZS1sZWZ0LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3ggbl0pfSwgOnNvdXJjZSAiKGRlZm5cbiBpbnQtcm90YXRlLWxlZnRcbiBbeCBuXVxuIChiaXQtb3IgKGJpdC1zaGlmdC1sZWZ0IHggbikgKHVuc2lnbmVkLWJpdC1zaGlmdC1yaWdodCB4ICgtIG4pKSkpXG4ifSB7OnN5bSBrZXl3b3JkLCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIEtleXdvcmQgd2l0aCB0aGUgZ2l2ZW4gbmFtZXNwYWNlIGFuZCBuYW1lLiAgRG8gbm90IHVzZSA6XG4gIGluIHRoZSBrZXl3b3JkIHN0cmluZ3MsIGl0IHdpbGwgYmUgYWRkZWQgYXV0b21hdGljYWxseS4iLCA6YXJnbGlzdHMgW1tuYW1lXSBbbnMgbmFtZV1dfSwgOnNvdXJjZSAiKGRlZm5cbiBrZXl3b3JkXG4gXCJSZXR1cm5zIGEgS2V5d29yZCB3aXRoIHRoZSBnaXZlbiBuYW1lc3BhY2UgYW5kIG5hbWUuICBEbyBub3QgdXNlIDpcXG4gIGluIHRoZSBrZXl3b3JkIHN0cmluZ3MsIGl0IHdpbGwgYmUgYWRkZWQgYXV0b21hdGljYWxseS5cIlxuIChbbmFtZV1cbiAgKGNvbmRcbiAgIChrZXl3b3JkPyBuYW1lKVxuICAgbmFtZVxuICAgKHN5bWJvbD8gbmFtZSlcbiAgIChLZXl3b3JkLlxuICAgIChjbGpzLmNvcmUvbmFtZXNwYWNlIG5hbWUpXG4gICAgKGNsanMuY29yZS9uYW1lIG5hbWUpXG4gICAgKC4tc3RyIG5hbWUpXG4gICAgbmlsKVxuICAgKD0gXCIvXCIgbmFtZSlcbiAgIChLZXl3b3JkLiBuaWwgbmFtZSBuYW1lIG5pbClcbiAgIChzdHJpbmc/IG5hbWUpXG4gICAobGV0XG4gICAgW3BhcnRzICguc3BsaXQgbmFtZSBcIi9cIildXG4gICAgKGlmXG4gICAgICg9PSAoYWxlbmd0aCBwYXJ0cykgMilcbiAgICAgKEtleXdvcmQuIChhZ2V0IHBhcnRzIDApIChhZ2V0IHBhcnRzIDEpIG5hbWUgbmlsKVxuICAgICAoS2V5d29yZC4gbmlsIChhZ2V0IHBhcnRzIDApIG5hbWUgbmlsKSkpKSlcbiAoW25zIG5hbWVdXG4gIChsZXRcbiAgIFtuc1xuICAgIChjb25kXG4gICAgIChrZXl3b3JkPyBucylcbiAgICAgKGNsanMuY29yZS9uYW1lIG5zKVxuICAgICAoc3ltYm9sPyBucylcbiAgICAgKGNsanMuY29yZS9uYW1lIG5zKVxuICAgICA6ZWxzZVxuICAgICBucylcbiAgICBuYW1lXG4gICAgKGNvbmRcbiAgICAgKGtleXdvcmQ/IG5hbWUpXG4gICAgIChjbGpzLmNvcmUvbmFtZSBuYW1lKVxuICAgICAoc3ltYm9sPyBuYW1lKVxuICAgICAoY2xqcy5jb3JlL25hbWUgbmFtZSlcbiAgICAgOmVsc2VcbiAgICAgbmFtZSldXG4gICAoS2V5d29yZC4gbnMgbmFtZSAoc3RyICh3aGVuIG5zIChzdHIgbnMgXCIvXCIpKSBuYW1lKSBuaWwpKSkpXG4ifSB7OnN5bSAqbnMqLCA6bWV0YSB7OmRvYyAiVmFyIGJvdW5kIHRvIHRoZSBjdXJyZW50IG5hbWVzcGFjZS4gT25seSB1c2VkIGZvciBib290c3RyYXBwaW5nLiJ9LCA6c291cmNlICIoZGVmICpucyogbmlsKVxuIn0gezpzeW0gKmFzc2VydCosIDptZXRhIHt9LCA6c291cmNlICIoZGVmICphc3NlcnQqIHRydWUpXG4ifSB7OnN5bSBJQ29sbGVjdGlvbiwgOm1ldGEgezpkb2MgIlByb3RvY29sIGZvciBhZGRpbmcgdG8gYSBjb2xsZWN0aW9uLiJ9LCA6bWV0aG9kcyAoLWNvbmopfSB7OnN5bSBjaGFycywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmbiBjaGFycyBbeF0geClcbiJ9IHs6c3ltIHN0ciwgOm1ldGEgezpkb2MgIldpdGggbm8gYXJncywgcmV0dXJucyB0aGUgZW1wdHkgc3RyaW5nLiBXaXRoIG9uZSBhcmcgeCwgcmV0dXJuc1xuICB4LnRvU3RyaW5nKCkuICAoc3RyIG5pbCkgcmV0dXJucyB0aGUgZW1wdHkgc3RyaW5nLiBXaXRoIG1vcmUgdGhhblxuICBvbmUgYXJnLCByZXR1cm5zIHRoZSBjb25jYXRlbmF0aW9uIG9mIHRoZSBzdHIgdmFsdWVzIG9mIHRoZSBhcmdzLiIsIDphcmdsaXN0cyBbW10gW3hdIFt4ICYgeXNdXX0sIDpzb3VyY2UgIihkZWZuXG4gc3RyXG4gXCJXaXRoIG5vIGFyZ3MsIHJldHVybnMgdGhlIGVtcHR5IHN0cmluZy4gV2l0aCBvbmUgYXJnIHgsIHJldHVybnNcXG4gIHgudG9TdHJpbmcoKS4gIChzdHIgbmlsKSByZXR1cm5zIHRoZSBlbXB0eSBzdHJpbmcuIFdpdGggbW9yZSB0aGFuXFxuICBvbmUgYXJnLCByZXR1cm5zIHRoZSBjb25jYXRlbmF0aW9uIG9mIHRoZSBzdHIgdmFsdWVzIG9mIHRoZSBhcmdzLlwiXG4gKFtdIFwiXCIpXG4gKFt4XSAoaWYgKG5pbD8geCkgXCJcIiAoLmpvaW4gI2pzIFt4XSBcIlwiKSkpXG4gKFt4ICYgeXNdXG4gIChsb29wXG4gICBbc2IgKFN0cmluZ0J1ZmZlci4gKHN0ciB4KSkgbW9yZSB5c11cbiAgIChpZlxuICAgIG1vcmVcbiAgICAocmVjdXIgKC4gc2IgKGFwcGVuZCAoc3RyIChmaXJzdCBtb3JlKSkpKSAobmV4dCBtb3JlKSlcbiAgICAoLnRvU3RyaW5nIHNiKSkpKSlcbiJ9IHs6c3ltIG5leHQsIDptZXRhIHs6ZG9jICJSZXR1cm5zIGEgc2VxIG9mIHRoZSBpdGVtcyBhZnRlciB0aGUgZmlyc3QuIENhbGxzIHNlcSBvbiBpdHNcbiAgYXJndW1lbnQuICBJZiB0aGVyZSBhcmUgbm8gbW9yZSBpdGVtcywgcmV0dXJucyBuaWwiLCA6YXJnbGlzdHMgKFtjb2xsXSl9LCA6c291cmNlICIoZGVmblxuIG5leHRcbiBcIlJldHVybnMgYSBzZXEgb2YgdGhlIGl0ZW1zIGFmdGVyIHRoZSBmaXJzdC4gQ2FsbHMgc2VxIG9uIGl0c1xcbiAgYXJndW1lbnQuICBJZiB0aGVyZSBhcmUgbm8gbW9yZSBpdGVtcywgcmV0dXJucyBuaWxcIlxuIFtjb2xsXVxuICh3aGVuLW5vdFxuICAobmlsPyBjb2xsKVxuICAoaWYgKGltcGxlbWVudHM/IElOZXh0IGNvbGwpICgtbmV4dCBjb2xsKSAoc2VxIChyZXN0IGNvbGwpKSkpKVxuIn0gezpzeW0gQVNlcSwgOm1ldGEgezpkb2MgIk1hcmtlciBwcm90b2NvbCBpbmRpY2F0aW5nIGFuIGFycmF5IHNlcXVlbmNlLiJ9LCA6bWV0aG9kcyAoKX0gezpzeW0gcHItc2VxLXdyaXRlciwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtvYmpzIHdyaXRlciBvcHRzXSl9LCA6c291cmNlICIoZGVmblxuIHByLXNlcS13cml0ZXJcbiBbb2JqcyB3cml0ZXIgb3B0c11cbiAocHItd3JpdGVyIChmaXJzdCBvYmpzKSB3cml0ZXIgb3B0cylcbiAoZG9zZXFcbiAgW29iaiAobmV4dCBvYmpzKV1cbiAgKC13cml0ZSB3cml0ZXIgXCIgXCIpXG4gIChwci13cml0ZXIgb2JqIHdyaXRlciBvcHRzKSkpXG4ifSB7OnN5bSBJRm4sIDptZXRhIHs6ZG9jICJQcm90b2NvbCBmb3IgYWRkaW5nIHRoZSBhYmlsaXR5IHRvIGludm9rZSBhbiBvYmplY3QgYXMgYSBmdW5jdGlvbi5cbiAgRm9yIGV4YW1wbGUsIGEgdmVjdG9yIGNhbiBhbHNvIGJlIHVzZWQgdG8gbG9vayB1cCBhIHZhbHVlOlxuICAoWzEgMiAzIDRdIDEpID0+IDIifSwgOm1ldGhvZHMgKC1pbnZva2UpfSB7OnN5bSByZWdleHA/LCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0cnVlIGlmIHggaXMgYSBKYXZhU2NyaXB0IFJlZ0V4cCBpbnN0YW5jZS4iLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmblxuIHJlZ2V4cD9cbiBcIlJldHVybnMgdHJ1ZSBpZiB4IGlzIGEgSmF2YVNjcmlwdCBSZWdFeHAgaW5zdGFuY2UuXCJcbiBbeF1cbiAoaW5zdGFuY2U/IGpzL1JlZ0V4cCB4KSlcbiJ9IHs6c3ltIGhhc2gtbWFwLCA6bWV0YSB7OmRvYyAia2V5dmFsID0+IGtleSB2YWxcbiAgUmV0dXJucyBhIG5ldyBoYXNoIG1hcCB3aXRoIHN1cHBsaWVkIG1hcHBpbmdzLiIsIDphcmdsaXN0cyAoWyYga2V5dmFsc10pfSwgOnNvdXJjZSAiKGRlZm5cbiBoYXNoLW1hcFxuIFwia2V5dmFsID0+IGtleSB2YWxcXG4gIFJldHVybnMgYSBuZXcgaGFzaCBtYXAgd2l0aCBzdXBwbGllZCBtYXBwaW5ncy5cIlxuIFsmIGtleXZhbHNdXG4gKGxvb3BcbiAgW2luIChzZXEga2V5dmFscykgb3V0ICh0cmFuc2llbnQgKC4tRU1QVFkgUGVyc2lzdGVudEhhc2hNYXApKV1cbiAgKGlmXG4gICBpblxuICAgKGxldFxuICAgIFtpbicgKG5leHQgaW4pXVxuICAgIChpZlxuICAgICAobmlsPyBpbicpXG4gICAgICh0aHJvdyAoanMvRXJyb3IuIChzdHIgXCJObyB2YWx1ZSBzdXBwbGllZCBmb3Iga2V5OiBcIiAoZmlyc3QgaW4pKSkpXG4gICAgIChyZWN1ciAobmV4dCBpbicpIChhc3NvYyEgb3V0IChmaXJzdCBpbikgKGZpcnN0IGluJykpKSkpXG4gICAocGVyc2lzdGVudCEgb3V0KSkpKVxuIn0gezpzeW0gKmV4ZWMtdGFwLWZuKiwgOm1ldGEgezpkb2MgIkFycmFuZ2VzIHRvIGhhdmUgdGFwIGZ1bmN0aW9ucyBleGVjdXRlZCB2aWEgdGhlIHN1cHBsaWVkIGYsIGFcbiAgZnVuY3Rpb24gb2Ygbm8gYXJndW1lbnRzLiBSZXR1cm5zIHRydWUgaWYgc3VjY2Vzc2Z1bCwgZmFsc2Ugb3RoZXJ3aXNlLiIsIDphcmdsaXN0cyAoW2ZdKX0sIDpzb3VyY2UgIihkZWZuXG4gKmV4ZWMtdGFwLWZuKlxuIFtmXVxuIChhbmQgKGV4aXN0cz8ganMvc2V0VGltZW91dCkgKGJvb2xlYW4gKGpzL3NldFRpbWVvdXQgZiAwKSkpKVxuIn0gezpzeW0gdW5kZXJpdmUsIDptZXRhIHs6ZG9jICJSZW1vdmVzIGEgcGFyZW50L2NoaWxkIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHBhcmVudCBhbmRcbiAgdGFnLiBoIG11c3QgYmUgYSBoaWVyYXJjaHkgb2J0YWluZWQgZnJvbSBtYWtlLWhpZXJhcmNoeSwgaWYgbm90XG4gIHN1cHBsaWVkIGRlZmF1bHRzIHRvLCBhbmQgbW9kaWZpZXMsIHRoZSBnbG9iYWwgaGllcmFyY2h5LiIsIDphcmdsaXN0cyBbW3RhZyBwYXJlbnRdIFtoIHRhZyBwYXJlbnRdXX0sIDpzb3VyY2UgIihkZWZuXG4gdW5kZXJpdmVcbiBcIlJlbW92ZXMgYSBwYXJlbnQvY2hpbGQgcmVsYXRpb25zaGlwIGJldHdlZW4gcGFyZW50IGFuZFxcbiAgdGFnLiBoIG11c3QgYmUgYSBoaWVyYXJjaHkgb2J0YWluZWQgZnJvbSBtYWtlLWhpZXJhcmNoeSwgaWYgbm90XFxuICBzdXBwbGllZCBkZWZhdWx0cyB0bywgYW5kIG1vZGlmaWVzLCB0aGUgZ2xvYmFsIGhpZXJhcmNoeS5cIlxuIChbdGFnIHBhcmVudF0gKHN3YXAtZ2xvYmFsLWhpZXJhcmNoeSEgdW5kZXJpdmUgdGFnIHBhcmVudCkgbmlsKVxuIChbaCB0YWcgcGFyZW50XVxuICAobGV0XG4gICBbcGFyZW50TWFwXG4gICAgKDpwYXJlbnRzIGgpXG4gICAgY2hpbGRzUGFyZW50c1xuICAgIChpZiAocGFyZW50TWFwIHRhZykgKGRpc2ogKHBhcmVudE1hcCB0YWcpIHBhcmVudCkgI3t9KVxuICAgIG5ld1BhcmVudHNcbiAgICAoaWZcbiAgICAgKG5vdC1lbXB0eSBjaGlsZHNQYXJlbnRzKVxuICAgICAoYXNzb2MgcGFyZW50TWFwIHRhZyBjaGlsZHNQYXJlbnRzKVxuICAgICAoZGlzc29jIHBhcmVudE1hcCB0YWcpKVxuICAgIGRlcml2LXNlcVxuICAgIChmbGF0dGVuXG4gICAgIChtYXBcbiAgICAgIChmbipcbiAgICAgICBbcDFfXzQzMTgzI11cbiAgICAgICAoY29uc1xuICAgICAgICAoZmlyc3QgcDFfXzQzMTgzIylcbiAgICAgICAgKGludGVycG9zZSAoZmlyc3QgcDFfXzQzMTgzIykgKHNlY29uZCBwMV9fNDMxODMjKSkpKVxuICAgICAgKHNlcSBuZXdQYXJlbnRzKSkpXVxuICAgKGlmXG4gICAgKGNvbnRhaW5zPyAocGFyZW50TWFwIHRhZykgcGFyZW50KVxuICAgIChyZWR1Y2VcbiAgICAgKGZuKiBbcDFfXzQzMTg0IyBwMl9fNDMxODUjXSAoYXBwbHkgZGVyaXZlIHAxX180MzE4NCMgcDJfXzQzMTg1IykpXG4gICAgIChtYWtlLWhpZXJhcmNoeSlcbiAgICAgKHBhcnRpdGlvbiAyIGRlcml2LXNlcSkpXG4gICAgaCkpKSlcbiJ9IHs6c3ltIC1yZXNldCEsIDptZXRhIHs6ZG9jICJTZXRzIHRoZSB2YWx1ZSBvZiBvIHRvIG5ldy12YWx1ZS4iLCA6YXJnbGlzdHMgKFtvIG5ldy12YWx1ZV0pfSwgOnByb3RvY29sIElSZXNldH0gezpzeW0gLXJlc3QsIDptZXRhIHs6ZG9jICJSZXR1cm5zIGEgbmV3IGNvbGxlY3Rpb24gb2YgY29sbCB3aXRob3V0IHRoZSBmaXJzdCBpdGVtLiBJdCBzaG91bGRcbiAgICAgYWx3YXlzIHJldHVybiBhIHNlcSwgZS5nLlxuICAgICAocmVzdCBbXSkgPT4gKClcbiAgICAgKHJlc3QgbmlsKSA9PiAoKSIsIDphcmdsaXN0cyAoW2NvbGxdKX0sIDpwcm90b2NvbCBJU2VxfSB7OnN5bSAtLWRlc3RydWN0dXJlLW1hcCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmblxuIC0tZGVzdHJ1Y3R1cmUtbWFwXG4gW3hdXG4gKGlmIChpbXBsZW1lbnRzPyBJU2VxIHgpIChhcHBseSBjbGpzLmNvcmUvaGFzaC1tYXAgeCkgeCkpXG4ifSB7OnN5bSBuaWwtaXRlciwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtdKX0sIDpzb3VyY2UgIihkZWZuXG4gbmlsLWl0ZXJcbiBbXVxuIChyZWlmeVxuICBPYmplY3RcbiAgKGhhc05leHQgW19dIGZhbHNlKVxuICAobmV4dCBbX10gKGpzL0Vycm9yLiBcIk5vIHN1Y2ggZWxlbWVudFwiKSlcbiAgKHJlbW92ZSBbX10gKGpzL0Vycm9yLiBcIlVuc3VwcG9ydGVkIG9wZXJhdGlvblwiKSkpKVxuIn0gezpzeW0gZmFsc2U/LCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0cnVlIGlmIHggaXMgdGhlIHZhbHVlIGZhbHNlLCBmYWxzZSBvdGhlcndpc2UuIiwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBmYWxzZT9cbiBcIlJldHVybnMgdHJ1ZSBpZiB4IGlzIHRoZSB2YWx1ZSBmYWxzZSwgZmFsc2Ugb3RoZXJ3aXNlLlwiXG4gW3hdXG4gKGNsanMuY29yZS9mYWxzZT8geCkpXG4ifSB7OnN5bSAqcHJpbnQtcmVhZGFibHkqLCA6bWV0YSB7OmRvYyAiV2hlbiBzZXQgdG8gbG9naWNhbCBmYWxzZSwgc3RyaW5ncyBhbmQgY2hhcmFjdGVycyB3aWxsIGJlIHByaW50ZWQgd2l0aFxuICBub24tYWxwaGFudW1lcmljIGNoYXJhY3RlcnMgY29udmVydGVkIHRvIHRoZSBhcHByb3ByaWF0ZSBlc2NhcGUgc2VxdWVuY2VzLlxuXG4gIERlZmF1bHRzIHRvIHRydWUifSwgOnNvdXJjZSAiKGRlZiAqcHJpbnQtcmVhZGFibHkqIHRydWUpXG4ifSB7OnN5bSBpbnRzLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuIGludHMgW3hdIHgpXG4ifSB7OnN5bSBzb21lLWZuLCA6bWV0YSB7OmRvYyAiVGFrZXMgYSBzZXQgb2YgcHJlZGljYXRlcyBhbmQgcmV0dXJucyBhIGZ1bmN0aW9uIGYgdGhhdCByZXR1cm5zIHRoZSBmaXJzdCBsb2dpY2FsIHRydWUgdmFsdWVcbiAgcmV0dXJuZWQgYnkgb25lIG9mIGl0cyBjb21wb3NpbmcgcHJlZGljYXRlcyBhZ2FpbnN0IGFueSBvZiBpdHMgYXJndW1lbnRzLCBlbHNlIGl0IHJldHVybnNcbiAgbG9naWNhbCBmYWxzZS4gTm90ZSB0aGF0IGYgaXMgc2hvcnQtY2lyY3VpdGluZyBpbiB0aGF0IGl0IHdpbGwgc3RvcCBleGVjdXRpb24gb24gdGhlIGZpcnN0XG4gIGFyZ3VtZW50IHRoYXQgdHJpZ2dlcnMgYSBsb2dpY2FsIHRydWUgcmVzdWx0IGFnYWluc3QgdGhlIG9yaWdpbmFsIHByZWRpY2F0ZXMuIiwgOmFyZ2xpc3RzIFtbcF0gW3AxIHAyXSBbcDEgcDIgcDNdIFtwMSBwMiBwMyAmIHBzXV19LCA6c291cmNlICIoZGVmblxuIHNvbWUtZm5cbiBcIlRha2VzIGEgc2V0IG9mIHByZWRpY2F0ZXMgYW5kIHJldHVybnMgYSBmdW5jdGlvbiBmIHRoYXQgcmV0dXJucyB0aGUgZmlyc3QgbG9naWNhbCB0cnVlIHZhbHVlXFxuICByZXR1cm5lZCBieSBvbmUgb2YgaXRzIGNvbXBvc2luZyBwcmVkaWNhdGVzIGFnYWluc3QgYW55IG9mIGl0cyBhcmd1bWVudHMsIGVsc2UgaXQgcmV0dXJuc1xcbiAgbG9naWNhbCBmYWxzZS4gTm90ZSB0aGF0IGYgaXMgc2hvcnQtY2lyY3VpdGluZyBpbiB0aGF0IGl0IHdpbGwgc3RvcCBleGVjdXRpb24gb24gdGhlIGZpcnN0XFxuICBhcmd1bWVudCB0aGF0IHRyaWdnZXJzIGEgbG9naWNhbCB0cnVlIHJlc3VsdCBhZ2FpbnN0IHRoZSBvcmlnaW5hbCBwcmVkaWNhdGVzLlwiXG4gKFtwXVxuICAoZm5cbiAgIHNwMVxuICAgKFtdIG5pbClcbiAgIChbeF0gKHAgeCkpXG4gICAoW3ggeV0gKG9yIChwIHgpIChwIHkpKSlcbiAgIChbeCB5IHpdIChvciAocCB4KSAocCB5KSAocCB6KSkpXG4gICAoW3ggeSB6ICYgYXJnc10gKG9yIChzcDEgeCB5IHopIChzb21lIHAgYXJncykpKSkpXG4gKFtwMSBwMl1cbiAgKGZuXG4gICBzcDJcbiAgIChbXSBuaWwpXG4gICAoW3hdIChvciAocDEgeCkgKHAyIHgpKSlcbiAgIChbeCB5XSAob3IgKHAxIHgpIChwMSB5KSAocDIgeCkgKHAyIHkpKSlcbiAgIChbeCB5IHpdIChvciAocDEgeCkgKHAxIHkpIChwMSB6KSAocDIgeCkgKHAyIHkpIChwMiB6KSkpXG4gICAoW3ggeSB6ICYgYXJnc11cbiAgICAob3JcbiAgICAgKHNwMiB4IHkgeilcbiAgICAgKHNvbWVcbiAgICAgIChmbiogW3AxX180MzE0NSNdIChvciAocDEgcDFfXzQzMTQ1IykgKHAyIHAxX180MzE0NSMpKSlcbiAgICAgIGFyZ3MpKSkpKVxuIChbcDEgcDIgcDNdXG4gIChmblxuICAgc3AzXG4gICAoW10gbmlsKVxuICAgKFt4XSAob3IgKHAxIHgpIChwMiB4KSAocDMgeCkpKVxuICAgKFt4IHldIChvciAocDEgeCkgKHAyIHgpIChwMyB4KSAocDEgeSkgKHAyIHkpIChwMyB5KSkpXG4gICAoW3ggeSB6XVxuICAgIChvclxuICAgICAocDEgeClcbiAgICAgKHAyIHgpXG4gICAgIChwMyB4KVxuICAgICAocDEgeSlcbiAgICAgKHAyIHkpXG4gICAgIChwMyB5KVxuICAgICAocDEgeilcbiAgICAgKHAyIHopXG4gICAgIChwMyB6KSkpXG4gICAoW3ggeSB6ICYgYXJnc11cbiAgICAob3JcbiAgICAgKHNwMyB4IHkgeilcbiAgICAgKHNvbWVcbiAgICAgIChmbipcbiAgICAgICBbcDFfXzQzMTQ2I11cbiAgICAgICAob3IgKHAxIHAxX180MzE0NiMpIChwMiBwMV9fNDMxNDYjKSAocDMgcDFfXzQzMTQ2IykpKVxuICAgICAgYXJncykpKSkpXG4gKFtwMSBwMiBwMyAmIHBzXVxuICAobGV0XG4gICBbcHMgKGxpc3QqIHAxIHAyIHAzIHBzKV1cbiAgIChmblxuICAgIHNwblxuICAgIChbXSBuaWwpXG4gICAgKFt4XSAoc29tZSAoZm4qIFtwMV9fNDMxNDcjXSAocDFfXzQzMTQ3IyB4KSkgcHMpKVxuICAgIChbeCB5XVxuICAgICAoc29tZSAoZm4qIFtwMV9fNDMxNDgjXSAob3IgKHAxX180MzE0OCMgeCkgKHAxX180MzE0OCMgeSkpKSBwcykpXG4gICAgKFt4IHkgel1cbiAgICAgKHNvbWVcbiAgICAgIChmbipcbiAgICAgICBbcDFfXzQzMTQ5I11cbiAgICAgICAob3IgKHAxX180MzE0OSMgeCkgKHAxX180MzE0OSMgeSkgKHAxX180MzE0OSMgeikpKVxuICAgICAgcHMpKVxuICAgIChbeCB5IHogJiBhcmdzXVxuICAgICAob3JcbiAgICAgIChzcG4geCB5IHopXG4gICAgICAoc29tZSAoZm4qIFtwMV9fNDMxNTAjXSAoc29tZSBwMV9fNDMxNTAjIGFyZ3MpKSBwcykpKSkpKSlcbiJ9IHs6c3ltICpmbHVzaC1vbi1uZXdsaW5lKiwgOm1ldGEgezpkb2MgIldoZW4gc2V0IHRvIHRydWUsIG91dHB1dCB3aWxsIGJlIGZsdXNoZWQgd2hlbmV2ZXIgYSBuZXdsaW5lIGlzIHByaW50ZWQuXG5cbiAgRGVmYXVsdHMgdG8gdHJ1ZS4ifSwgOnNvdXJjZSAiKGRlZiAqZmx1c2gtb24tbmV3bGluZSogdHJ1ZSlcbiJ9IHs6c3ltIHRvLWFycmF5LCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhbiBhcnJheSBjb250YWluaW5nIHRoZSBjb250ZW50cyBvZiBjb2xsLiIsIDphcmdsaXN0cyAoW2NvbGxdKX0sIDpzb3VyY2UgIihkZWZuXG4gdG8tYXJyYXlcbiBcIlJldHVybnMgYW4gYXJyYXkgY29udGFpbmluZyB0aGUgY29udGVudHMgb2YgY29sbC5cIlxuIFtjb2xsXVxuIChsZXRcbiAgW2FyeSAoYXJyYXkpXVxuICAobG9vcFxuICAgW3MgKHNlcSBjb2xsKV1cbiAgIChpZi1ub3QgKG5pbD8gcykgKGRvICguIGFyeSBwdXNoIChmaXJzdCBzKSkgKHJlY3VyIChuZXh0IHMpKSkgYXJ5KSkpKVxuIn0gezpzeW0gbGlzdD8sIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRydWUgaWYgeCBpbXBsZW1lbnRzIElMaXN0IiwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBsaXN0P1xuIFwiUmV0dXJucyB0cnVlIGlmIHggaW1wbGVtZW50cyBJTGlzdFwiXG4gW3hdXG4gKHNhdGlzZmllcz8gSUxpc3QgeCkpXG4ifSB7OnN5bSBhcnJheT8sIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRydWUgaWYgeCBpcyBhIEphdmFTY3JpcHQgYXJyYXkuIiwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBhcnJheT9cbiBcIlJldHVybnMgdHJ1ZSBpZiB4IGlzIGEgSmF2YVNjcmlwdCBhcnJheS5cIlxuIFt4XVxuIChpZlxuICAoaWRlbnRpY2FsPyAqdGFyZ2V0KiBcIm5vZGVqc1wiKVxuICAoLmlzQXJyYXkganMvQXJyYXkgeClcbiAgKGluc3RhbmNlPyBqcy9BcnJheSB4KSkpXG4ifSB7OnN5bSBzaW1wbGUtaWRlbnQ/LCA6bWV0YSB7OmRvYyAiUmV0dXJuIHRydWUgaWYgeCBpcyBhIHN5bWJvbCBvciBrZXl3b3JkIHdpdGhvdXQgYSBuYW1lc3BhY2UiLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmblxuIHNpbXBsZS1pZGVudD9cbiBcIlJldHVybiB0cnVlIGlmIHggaXMgYSBzeW1ib2wgb3Iga2V5d29yZCB3aXRob3V0IGEgbmFtZXNwYWNlXCJcbiBbeF1cbiAoYW5kIChpZGVudD8geCkgKG5pbD8gKG5hbWVzcGFjZSB4KSkpKVxuIn0gezpzeW0gY2xvbmUsIDptZXRhIHs6ZG9jICJDbG9uZSB0aGUgc3VwcGxpZWQgdmFsdWUgd2hpY2ggbXVzdCBpbXBsZW1lbnQgSUNsb25lYWJsZS4iLCA6YXJnbGlzdHMgKFt2YWx1ZV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBjbG9uZVxuIFwiQ2xvbmUgdGhlIHN1cHBsaWVkIHZhbHVlIHdoaWNoIG11c3QgaW1wbGVtZW50IElDbG9uZWFibGUuXCJcbiBbdmFsdWVdXG4gKC1jbG9uZSB2YWx1ZSkpXG4ifSB7OnN5bSBkZW11bmdlLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW25hbWVdKX0sIDpzb3VyY2UgIihkZWZuXG4gZGVtdW5nZVxuIFtuYW1lXVxuICgoaWYgKHN5bWJvbD8gbmFtZSkgc3ltYm9sIHN0cilcbiAgKGxldFxuICAgW25hbWUnIChzdHIgbmFtZSldXG4gICAoaWYgKGlkZW50aWNhbD8gbmFtZScgXCJfRE9UX19ET1RfXCIpIFwiLi5cIiAoZGVtdW5nZS1zdHIgbmFtZScpKSkpKVxuIn0gezpzeW0gYml0LW5vdCwgOm1ldGEgezpkb2MgIkJpdHdpc2UgY29tcGxlbWVudCIsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuIGJpdC1ub3QgXCJCaXR3aXNlIGNvbXBsZW1lbnRcIiBbeF0gKGNsanMuY29yZS9iaXQtbm90IHgpKVxuIn0gezpzeW0gYnl0ZSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmbiBieXRlIFt4XSB4KVxuIn0gezpzeW0gbWF4LCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0aGUgZ3JlYXRlc3Qgb2YgdGhlIG51bXMuIiwgOmFyZ2xpc3RzIFtbeF0gW3ggeV0gW3ggeSAmIG1vcmVdXX0sIDpzb3VyY2UgIihkZWZuXG4gbWF4XG4gXCJSZXR1cm5zIHRoZSBncmVhdGVzdCBvZiB0aGUgbnVtcy5cIlxuIChbeF0geClcbiAoW3ggeV0gKGNsanMuY29yZS9tYXggeCB5KSlcbiAoW3ggeSAmIG1vcmVdIChyZWR1Y2UgbWF4IChjbGpzLmNvcmUvbWF4IHggeSkgbW9yZSkpKVxuIn0gezpzeW0gSUNvbXBhcmFibGUsIDptZXRhIHs6ZG9jICJQcm90b2NvbCBmb3IgdmFsdWVzIHRoYXQgY2FuIGJlIGNvbXBhcmVkLiJ9LCA6bWV0aG9kcyAoLWNvbXBhcmUpfSB7OnN5bSA9PSwgOm1ldGEgezpkb2MgIlJldHVybnMgbm9uLW5pbCBpZiBudW1zIGFsbCBoYXZlIHRoZSBlcXVpdmFsZW50XG4gIHZhbHVlLCBvdGhlcndpc2UgZmFsc2UuIEJlaGF2aW9yIG9uIG5vbiBudW1zIGlzXG4gIHVuZGVmaW5lZC4iLCA6YXJnbGlzdHMgW1t4XSBbeCB5XSBbeCB5ICYgbW9yZV1dfSwgOnNvdXJjZSAiKGRlZm5cbiA9PVxuIFwiUmV0dXJucyBub24tbmlsIGlmIG51bXMgYWxsIGhhdmUgdGhlIGVxdWl2YWxlbnRcXG4gIHZhbHVlLCBvdGhlcndpc2UgZmFsc2UuIEJlaGF2aW9yIG9uIG5vbiBudW1zIGlzXFxuICB1bmRlZmluZWQuXCJcbiAoW3hdIHRydWUpXG4gKFt4IHldICgtZXF1aXYgeCB5KSlcbiAoW3ggeSAmIG1vcmVdXG4gIChpZlxuICAgKD09IHggeSlcbiAgIChpZlxuICAgIChuZXh0IG1vcmUpXG4gICAgKHJlY3VyIHkgKGZpcnN0IG1vcmUpIChuZXh0IG1vcmUpKVxuICAgICg9PSB5IChmaXJzdCBtb3JlKSkpXG4gICBmYWxzZSkpKVxuIn0gezpzeW0gcGFyZW50cywgOm1ldGEgezpkb2MgIlJldHVybnMgdGhlIGltbWVkaWF0ZSBwYXJlbnRzIG9mIHRhZywgZWl0aGVyIHZpYSBhIEphdmFTY3JpcHQgdHlwZVxuICBpbmhlcml0YW5jZSByZWxhdGlvbnNoaXAgb3IgYSByZWxhdGlvbnNoaXAgZXN0YWJsaXNoZWQgdmlhIGRlcml2ZS4gaFxuICBtdXN0IGJlIGEgaGllcmFyY2h5IG9idGFpbmVkIGZyb20gbWFrZS1oaWVyYXJjaHksIGlmIG5vdCBzdXBwbGllZFxuICBkZWZhdWx0cyB0byB0aGUgZ2xvYmFsIGhpZXJhcmNoeSIsIDphcmdsaXN0cyBbW3RhZ10gW2ggdGFnXV19LCA6c291cmNlICIoZGVmblxuIHBhcmVudHNcbiBcIlJldHVybnMgdGhlIGltbWVkaWF0ZSBwYXJlbnRzIG9mIHRhZywgZWl0aGVyIHZpYSBhIEphdmFTY3JpcHQgdHlwZVxcbiAgaW5oZXJpdGFuY2UgcmVsYXRpb25zaGlwIG9yIGEgcmVsYXRpb25zaGlwIGVzdGFibGlzaGVkIHZpYSBkZXJpdmUuIGhcXG4gIG11c3QgYmUgYSBoaWVyYXJjaHkgb2J0YWluZWQgZnJvbSBtYWtlLWhpZXJhcmNoeSwgaWYgbm90IHN1cHBsaWVkXFxuICBkZWZhdWx0cyB0byB0aGUgZ2xvYmFsIGhpZXJhcmNoeVwiXG4gKFt0YWddIChwYXJlbnRzIEAoZ2V0LWdsb2JhbC1oaWVyYXJjaHkpIHRhZykpXG4gKFtoIHRhZ10gKG5vdC1lbXB0eSAoZ2V0ICg6cGFyZW50cyBoKSB0YWcpKSkpXG4ifSB7OnN5bSBjb3VudCwgOm1ldGEgezpkb2MgIlJldHVybnMgdGhlIG51bWJlciBvZiBpdGVtcyBpbiB0aGUgY29sbGVjdGlvbi4gKGNvdW50IG5pbCkgcmV0dXJuc1xuICAwLiAgQWxzbyB3b3JrcyBvbiBzdHJpbmdzLCBhcnJheXMsIGFuZCBNYXBzIiwgOmFyZ2xpc3RzIChbY29sbF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBjb3VudFxuIFwiUmV0dXJucyB0aGUgbnVtYmVyIG9mIGl0ZW1zIGluIHRoZSBjb2xsZWN0aW9uLiAoY291bnQgbmlsKSByZXR1cm5zXFxuICAwLiAgQWxzbyB3b3JrcyBvbiBzdHJpbmdzLCBhcnJheXMsIGFuZCBNYXBzXCJcbiBbY29sbF1cbiAoaWYtbm90XG4gIChuaWw/IGNvbGwpXG4gIChjb25kXG4gICAoaW1wbGVtZW50cz8gSUNvdW50ZWQgY29sbClcbiAgICgtY291bnQgY29sbClcbiAgIChhcnJheT8gY29sbClcbiAgIChhbGVuZ3RoIGNvbGwpXG4gICAoc3RyaW5nPyBjb2xsKVxuICAgKC4tbGVuZ3RoIGNvbGwpXG4gICAoaW1wbGVtZW50cz8gSVNlcWFibGUgY29sbClcbiAgIChhY2N1bXVsYXRpbmctc2VxLWNvdW50IGNvbGwpXG4gICA6ZWxzZVxuICAgKC1jb3VudCBjb2xsKSlcbiAgMCkpXG4ifSB7OnN5bSAtZGlzam9pbiEsIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRjb2xsIHdpdGhvdXQgdi4iLCA6YXJnbGlzdHMgKFt0Y29sbCB2XSl9LCA6cHJvdG9jb2wgSVRyYW5zaWVudFNldH0gezpzeW0gKmxvYWRlZC1saWJzKiwgOm1ldGEge30sIDpzb3VyY2UgIihkZWZvbmNlICpsb2FkZWQtbGlicyogbmlsKVxuIn0gezpzeW0gc29ydGVkLW1hcC1ieSwgOm1ldGEgezpkb2MgImtleXZhbCA9PiBrZXkgdmFsXG4gIFJldHVybnMgYSBuZXcgc29ydGVkIG1hcCB3aXRoIHN1cHBsaWVkIG1hcHBpbmdzLCB1c2luZyB0aGUgc3VwcGxpZWQgY29tcGFyYXRvci4iLCA6YXJnbGlzdHMgW1tjb21wYXJhdG9yICYga2V5dmFsc11dfSwgOnNvdXJjZSAiKGRlZm5cbiBzb3J0ZWQtbWFwLWJ5XG4gXCJrZXl2YWwgPT4ga2V5IHZhbFxcbiAgUmV0dXJucyBhIG5ldyBzb3J0ZWQgbWFwIHdpdGggc3VwcGxpZWQgbWFwcGluZ3MsIHVzaW5nIHRoZSBzdXBwbGllZCBjb21wYXJhdG9yLlwiXG4gKFtjb21wYXJhdG9yICYga2V5dmFsc11cbiAgKGxvb3BcbiAgIFtpblxuICAgIChzZXEga2V5dmFscylcbiAgICBvdXRcbiAgICAoUGVyc2lzdGVudFRyZWVNYXAuIChmbi0+Y29tcGFyYXRvciBjb21wYXJhdG9yKSBuaWwgMCBuaWwgMCldXG4gICAoaWYgaW4gKHJlY3VyIChubmV4dCBpbikgKGFzc29jIG91dCAoZmlyc3QgaW4pIChzZWNvbmQgaW4pKSkgb3V0KSkpKVxuIn0gezpzeW0gYXBwbHksIDptZXRhIHs6ZG9jICJBcHBsaWVzIGZuIGYgdG8gdGhlIGFyZ3VtZW50IGxpc3QgZm9ybWVkIGJ5IHByZXBlbmRpbmcgaW50ZXJ2ZW5pbmcgYXJndW1lbnRzIHRvIGFyZ3MuIiwgOmFyZ2xpc3RzIFtbZiBhcmdzXSBbZiB4IGFyZ3NdIFtmIHggeSBhcmdzXSBbZiB4IHkgeiBhcmdzXSBbZiBhIGIgYyBkICYgYXJnc11dfSwgOnNvdXJjZSAiKGRlZm5cbiBhcHBseVxuIFwiQXBwbGllcyBmbiBmIHRvIHRoZSBhcmd1bWVudCBsaXN0IGZvcm1lZCBieSBwcmVwZW5kaW5nIGludGVydmVuaW5nIGFyZ3VtZW50cyB0byBhcmdzLlwiXG4gKFtmIGFyZ3NdXG4gIChpZlxuICAgKC4tY2xqcyRsYW5nJGFwcGx5VG8gZilcbiAgIChsZXRcbiAgICBbZml4ZWQtYXJpdHlcbiAgICAgKC4tY2xqcyRsYW5nJG1heEZpeGVkQXJpdHkgZilcbiAgICAgYmNcbiAgICAgKGJvdW5kZWQtY291bnQgKGluYyBmaXhlZC1hcml0eSkgYXJncyldXG4gICAgKGlmXG4gICAgICg8PSBiYyBmaXhlZC1hcml0eSlcbiAgICAgKGFwcGx5LXRvIGYgYmMgYXJncylcbiAgICAgKC5jbGpzJGxhbmckYXBwbHlUbyBmIGFyZ3MpKSlcbiAgIChhcHBseS10by1zaW1wbGUgZiAoc2VxIGFyZ3MpKSkpXG4gKFtmIHggYXJnc11cbiAgKGlmXG4gICAoLi1jbGpzJGxhbmckYXBwbHlUbyBmKVxuICAgKGxldFxuICAgIFthcmdsaXN0XG4gICAgIChsaXN0KiB4IGFyZ3MpXG4gICAgIGZpeGVkLWFyaXR5XG4gICAgICguLWNsanMkbGFuZyRtYXhGaXhlZEFyaXR5IGYpXG4gICAgIGJjXG4gICAgIChpbmMgKGJvdW5kZWQtY291bnQgZml4ZWQtYXJpdHkgYXJncykpXVxuICAgIChpZlxuICAgICAoPD0gYmMgZml4ZWQtYXJpdHkpXG4gICAgIChhcHBseS10byBmIGJjIGFyZ2xpc3QpXG4gICAgICguY2xqcyRsYW5nJGFwcGx5VG8gZiBhcmdsaXN0KSkpXG4gICAoYXBwbHktdG8tc2ltcGxlIGYgeCAoc2VxIGFyZ3MpKSkpXG4gKFtmIHggeSBhcmdzXVxuICAoaWZcbiAgICguLWNsanMkbGFuZyRhcHBseVRvIGYpXG4gICAobGV0XG4gICAgW2FyZ2xpc3RcbiAgICAgKGxpc3QqIHggeSBhcmdzKVxuICAgICBmaXhlZC1hcml0eVxuICAgICAoLi1jbGpzJGxhbmckbWF4Rml4ZWRBcml0eSBmKVxuICAgICBiY1xuICAgICAoKyAyIChib3VuZGVkLWNvdW50IChkZWMgZml4ZWQtYXJpdHkpIGFyZ3MpKV1cbiAgICAoaWZcbiAgICAgKDw9IGJjIGZpeGVkLWFyaXR5KVxuICAgICAoYXBwbHktdG8gZiBiYyBhcmdsaXN0KVxuICAgICAoLmNsanMkbGFuZyRhcHBseVRvIGYgYXJnbGlzdCkpKVxuICAgKGFwcGx5LXRvLXNpbXBsZSBmIHggeSAoc2VxIGFyZ3MpKSkpXG4gKFtmIHggeSB6IGFyZ3NdXG4gIChpZlxuICAgKC4tY2xqcyRsYW5nJGFwcGx5VG8gZilcbiAgIChsZXRcbiAgICBbYXJnbGlzdFxuICAgICAobGlzdCogeCB5IHogYXJncylcbiAgICAgZml4ZWQtYXJpdHlcbiAgICAgKC4tY2xqcyRsYW5nJG1heEZpeGVkQXJpdHkgZilcbiAgICAgYmNcbiAgICAgKCsgMyAoYm91bmRlZC1jb3VudCAoLSBmaXhlZC1hcml0eSAyKSBhcmdzKSldXG4gICAgKGlmXG4gICAgICg8PSBiYyBmaXhlZC1hcml0eSlcbiAgICAgKGFwcGx5LXRvIGYgYmMgYXJnbGlzdClcbiAgICAgKC5jbGpzJGxhbmckYXBwbHlUbyBmIGFyZ2xpc3QpKSlcbiAgIChhcHBseS10by1zaW1wbGUgZiB4IHkgeiAoc2VxIGFyZ3MpKSkpXG4gKFtmIGEgYiBjIGQgJiBhcmdzXVxuICAoaWZcbiAgICguLWNsanMkbGFuZyRhcHBseVRvIGYpXG4gICAobGV0XG4gICAgW3NwcmVhZC1hcmdzXG4gICAgIChzcHJlYWQgYXJncylcbiAgICAgYXJnbGlzdFxuICAgICAoY29ucyBhIChjb25zIGIgKGNvbnMgYyAoY29ucyBkIHNwcmVhZC1hcmdzKSkpKVxuICAgICBmaXhlZC1hcml0eVxuICAgICAoLi1jbGpzJGxhbmckbWF4Rml4ZWRBcml0eSBmKVxuICAgICBiY1xuICAgICAoKyA0IChib3VuZGVkLWNvdW50ICgtIGZpeGVkLWFyaXR5IDMpIHNwcmVhZC1hcmdzKSldXG4gICAgKGlmXG4gICAgICg8PSBiYyBmaXhlZC1hcml0eSlcbiAgICAgKGFwcGx5LXRvIGYgYmMgYXJnbGlzdClcbiAgICAgKC5jbGpzJGxhbmckYXBwbHlUbyBmIGFyZ2xpc3QpKSlcbiAgIChhcHBseS10by1zaW1wbGUgZiBhIGIgYyBkIChzcHJlYWQgYXJncykpKSkpXG4ifSB7OnN5bSBhZGQtdG8tc3RyaW5nLWhhc2gtY2FjaGUsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChba10pfSwgOnNvdXJjZSAiKGRlZm5cbiBhZGQtdG8tc3RyaW5nLWhhc2gtY2FjaGVcbiBba11cbiAobGV0XG4gIFtoIChoYXNoLXN0cmluZyogayldXG4gIChnb2JqZWN0L3NldCBzdHJpbmctaGFzaC1jYWNoZSBrIGgpXG4gIChzZXQhIHN0cmluZy1oYXNoLWNhY2hlLWNvdW50IChpbmMgc3RyaW5nLWhhc2gtY2FjaGUtY291bnQpKVxuICBoKSlcbiJ9IHs6c3ltIGNsai0+anMsIDptZXRhIHs6ZG9jICJSZWN1cnNpdmVseSB0cmFuc2Zvcm1zIENsb2p1cmVTY3JpcHQgdmFsdWVzIHRvIEphdmFTY3JpcHQuXG4gIHNldHMvdmVjdG9ycy9saXN0cyBiZWNvbWUgQXJyYXlzLCBLZXl3b3JkcyBhbmQgU3ltYm9sIGJlY29tZSBTdHJpbmdzLFxuICBNYXBzIGJlY29tZSBPYmplY3RzLiBBcmJpdHJhcnkga2V5cyBhcmUgZW5jb2RlZCB0byBieSBga2V5LT5qc2AuXG4gIE9wdGlvbnMgaXMgYSBrZXktdmFsdWUgcGFpciwgd2hlcmUgdGhlIG9ubHkgdmFsaWQga2V5IGlzXG4gIDprZXl3b3JkLWZuLCB3aGljaCBzaG91bGQgcG9pbnQgdG8gYSBzaW5nbGUtYXJndW1lbnQgZnVuY3Rpb24gdG8gYmVcbiAgY2FsbGVkIG9uIGtleXdvcmQga2V5cy4gRGVmYXVsdCB0byBgbmFtZWAuIiwgOmFyZ2xpc3RzIChbeCAmIHs6a2V5cyBba2V5d29yZC1mbl0sIDpvciB7a2V5d29yZC1mbiBuYW1lfSwgOmFzIG9wdGlvbnN9XSl9LCA6c291cmNlICIoZGVmblxuIGNsai0+anNcbiBcIlJlY3Vyc2l2ZWx5IHRyYW5zZm9ybXMgQ2xvanVyZVNjcmlwdCB2YWx1ZXMgdG8gSmF2YVNjcmlwdC5cXG4gIHNldHMvdmVjdG9ycy9saXN0cyBiZWNvbWUgQXJyYXlzLCBLZXl3b3JkcyBhbmQgU3ltYm9sIGJlY29tZSBTdHJpbmdzLFxcbiAgTWFwcyBiZWNvbWUgT2JqZWN0cy4gQXJiaXRyYXJ5IGtleXMgYXJlIGVuY29kZWQgdG8gYnkgYGtleS0+anNgLlxcbiAgT3B0aW9ucyBpcyBhIGtleS12YWx1ZSBwYWlyLCB3aGVyZSB0aGUgb25seSB2YWxpZCBrZXkgaXNcXG4gIDprZXl3b3JkLWZuLCB3aGljaCBzaG91bGQgcG9pbnQgdG8gYSBzaW5nbGUtYXJndW1lbnQgZnVuY3Rpb24gdG8gYmVcXG4gIGNhbGxlZCBvbiBrZXl3b3JkIGtleXMuIERlZmF1bHQgdG8gYG5hbWVgLlwiXG4gW3ggJiB7OmtleXMgW2tleXdvcmQtZm5dLCA6b3Ige2tleXdvcmQtZm4gbmFtZX0sIDphcyBvcHRpb25zfV1cbiAobGV0Zm5cbiAgWyhrZXlmbiBba10gKGtleS0+anMgayB0aGlzZm4pKVxuICAgKHRoaXNmblxuICAgIFt4XVxuICAgIChjb25kXG4gICAgIChuaWw/IHgpXG4gICAgIG5pbFxuICAgICAoc2F0aXNmaWVzPyBJRW5jb2RlSlMgeClcbiAgICAgKC1jbGotPmpzIHgpXG4gICAgIChrZXl3b3JkPyB4KVxuICAgICAoa2V5d29yZC1mbiB4KVxuICAgICAoc3ltYm9sPyB4KVxuICAgICAoc3RyIHgpXG4gICAgIChtYXA/IHgpXG4gICAgIChsZXRcbiAgICAgIFttIChqcy1vYmopXVxuICAgICAgKGRvc2VxIFtbayB2XSB4XSAoZ29iamVjdC9zZXQgbSAoa2V5Zm4gaykgKHRoaXNmbiB2KSkpXG4gICAgICBtKVxuICAgICAoY29sbD8geClcbiAgICAgKGxldCBbYXJyIChhcnJheSldIChkb3NlcSBbeCAobWFwIHRoaXNmbiB4KV0gKC5wdXNoIGFyciB4KSkgYXJyKVxuICAgICA6ZWxzZVxuICAgICB4KSldXG4gICh0aGlzZm4geCkpKVxuIn0gezpzeW0gSUNodW5rZWROZXh0LCA6bWV0YSB7OmRvYyAiUHJvdG9jb2wgZm9yIGFjY2Vzc2luZyB0aGUgY2h1bmtzIG9mIGEgY29sbGVjdGlvbi4ifSwgOm1ldGhvZHMgKC1jaHVua2VkLW5leHQpfSB7OnN5bSBpbnRlcnBvc2UsIDptZXRhIHs6ZG9jICJSZXR1cm5zIGEgbGF6eSBzZXEgb2YgdGhlIGVsZW1lbnRzIG9mIGNvbGwgc2VwYXJhdGVkIGJ5IHNlcC5cbiAgUmV0dXJucyBhIHN0YXRlZnVsIHRyYW5zZHVjZXIgd2hlbiBubyBjb2xsZWN0aW9uIGlzIHByb3ZpZGVkLiIsIDphcmdsaXN0cyBbW3NlcF0gW3NlcCBjb2xsXV19LCA6c291cmNlICIoZGVmblxuIGludGVycG9zZVxuIFwiUmV0dXJucyBhIGxhenkgc2VxIG9mIHRoZSBlbGVtZW50cyBvZiBjb2xsIHNlcGFyYXRlZCBieSBzZXAuXFxuICBSZXR1cm5zIGEgc3RhdGVmdWwgdHJhbnNkdWNlciB3aGVuIG5vIGNvbGxlY3Rpb24gaXMgcHJvdmlkZWQuXCJcbiAoW3NlcF1cbiAgKGZuXG4gICBbcmZdXG4gICAobGV0XG4gICAgW3N0YXJ0ZWQgKHZvbGF0aWxlISBmYWxzZSldXG4gICAgKGZuXG4gICAgIChbXSAocmYpKVxuICAgICAoW3Jlc3VsdF0gKHJmIHJlc3VsdCkpXG4gICAgIChbcmVzdWx0IGlucHV0XVxuICAgICAgKGlmXG4gICAgICAgQHN0YXJ0ZWRcbiAgICAgICAobGV0XG4gICAgICAgIFtzZXByIChyZiByZXN1bHQgc2VwKV1cbiAgICAgICAgKGlmIChyZWR1Y2VkPyBzZXByKSBzZXByIChyZiBzZXByIGlucHV0KSkpXG4gICAgICAgKGRvICh2cmVzZXQhIHN0YXJ0ZWQgdHJ1ZSkgKHJmIHJlc3VsdCBpbnB1dCkpKSkpKSkpXG4gKFtzZXAgY29sbF0gKGRyb3AgMSAoaW50ZXJsZWF2ZSAocmVwZWF0IHNlcCkgY29sbCkpKSlcbiJ9IHs6c3ltIGRlcmVmLCA6bWV0YSB7OmRvYyAiQWxzbyByZWFkZXIgbWFjcm86IEB2YXIvQGF0b20vQGRlbGF5LiBSZXR1cm5zIHRoZVxuICAgbW9zdC1yZWNlbnRseS1jb21taXR0ZWQgdmFsdWUgb2YgcmVmLiBXaGVuIGFwcGxpZWQgdG8gYSB2YXJcbiAgIG9yIGF0b20sIHJldHVybnMgaXRzIGN1cnJlbnQgc3RhdGUuIFdoZW4gYXBwbGllZCB0byBhIGRlbGF5LCBmb3JjZXNcbiAgIGl0IGlmIG5vdCBhbHJlYWR5IGZvcmNlZC4gU2VlIGFsc28gLSByZWFsaXplZD8uIiwgOmFyZ2xpc3RzIChbb10pfSwgOnNvdXJjZSAiKGRlZm5cbiBkZXJlZlxuIFwiQWxzbyByZWFkZXIgbWFjcm86IEB2YXIvQGF0b20vQGRlbGF5LiBSZXR1cm5zIHRoZVxcbiAgIG1vc3QtcmVjZW50bHktY29tbWl0dGVkIHZhbHVlIG9mIHJlZi4gV2hlbiBhcHBsaWVkIHRvIGEgdmFyXFxuICAgb3IgYXRvbSwgcmV0dXJucyBpdHMgY3VycmVudCBzdGF0ZS4gV2hlbiBhcHBsaWVkIHRvIGEgZGVsYXksIGZvcmNlc1xcbiAgIGl0IGlmIG5vdCBhbHJlYWR5IGZvcmNlZC4gU2VlIGFsc28gLSByZWFsaXplZD8uXCJcbiBbb11cbiAoLWRlcmVmIG8pKVxuIn0gezpzeW0gYXNzb2MsIDptZXRhIHs6ZG9jICJhc3NvY1tpYXRlXS4gV2hlbiBhcHBsaWVkIHRvIGEgbWFwLCByZXR1cm5zIGEgbmV3IG1hcCBvZiB0aGVcbiAgIHNhbWUgKGhhc2hlZC9zb3J0ZWQpIHR5cGUsIHRoYXQgY29udGFpbnMgdGhlIG1hcHBpbmcgb2Yga2V5KHMpIHRvXG4gICB2YWwocykuIFdoZW4gYXBwbGllZCB0byBhIHZlY3RvciwgcmV0dXJucyBhIG5ldyB2ZWN0b3IgdGhhdFxuICAgY29udGFpbnMgdmFsIGF0IGluZGV4LiBOb3RlIC0gaW5kZXggbXVzdCBiZSA8PSAoY291bnQgdmVjdG9yKS4iLCA6YXJnbGlzdHMgW1tjb2xsIGsgdl0gW2NvbGwgayB2ICYga3ZzXV19LCA6c291cmNlICIoZGVmblxuIGFzc29jXG4gXCJhc3NvY1tpYXRlXS4gV2hlbiBhcHBsaWVkIHRvIGEgbWFwLCByZXR1cm5zIGEgbmV3IG1hcCBvZiB0aGVcXG4gICBzYW1lIChoYXNoZWQvc29ydGVkKSB0eXBlLCB0aGF0IGNvbnRhaW5zIHRoZSBtYXBwaW5nIG9mIGtleShzKSB0b1xcbiAgIHZhbChzKS4gV2hlbiBhcHBsaWVkIHRvIGEgdmVjdG9yLCByZXR1cm5zIGEgbmV3IHZlY3RvciB0aGF0XFxuICAgY29udGFpbnMgdmFsIGF0IGluZGV4LiBOb3RlIC0gaW5kZXggbXVzdCBiZSA8PSAoY291bnQgdmVjdG9yKS5cIlxuIChbY29sbCBrIHZdXG4gIChpZlxuICAgKGltcGxlbWVudHM/IElBc3NvY2lhdGl2ZSBjb2xsKVxuICAgKC1hc3NvYyBjb2xsIGsgdilcbiAgIChpZi1ub3QgKG5pbD8gY29sbCkgKC1hc3NvYyBjb2xsIGsgdikgKGFycmF5LW1hcCBrIHYpKSkpXG4gKFtjb2xsIGsgdiAmIGt2c11cbiAgKGxldFxuICAgW3JldCAoYXNzb2MgY29sbCBrIHYpXVxuICAgKGlmIGt2cyAocmVjdXIgcmV0IChmaXJzdCBrdnMpIChzZWNvbmQga3ZzKSAobm5leHQga3ZzKSkgcmV0KSkpKVxuIn0gezpzeW0gdHJhbnNpZW50LCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIG5ldywgdHJhbnNpZW50IHZlcnNpb24gb2YgdGhlIGNvbGxlY3Rpb24sIGluIGNvbnN0YW50IHRpbWUuIiwgOmFyZ2xpc3RzIChbY29sbF0pfSwgOnNvdXJjZSAiKGRlZm5cbiB0cmFuc2llbnRcbiBcIlJldHVybnMgYSBuZXcsIHRyYW5zaWVudCB2ZXJzaW9uIG9mIHRoZSBjb2xsZWN0aW9uLCBpbiBjb25zdGFudCB0aW1lLlwiXG4gW2NvbGxdXG4gKC1hcy10cmFuc2llbnQgY29sbCkpXG4ifSB7OnN5bSAtZGlzam9pbiwgOm1ldGEgezpkb2MgIlJldHVybnMgYSBuZXcgY29sbGVjdGlvbiBvZiBjb2xsIHRoYXQgZG9lcyBub3QgY29udGFpbiB2LiIsIDphcmdsaXN0cyAoW2NvbGwgdl0pfSwgOnByb3RvY29sIElTZXR9IHs6c3ltIGNodW5rLWNvbnMsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbY2h1bmsgcmVzdF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBjaHVuay1jb25zXG4gW2NodW5rIHJlc3RdXG4gKGlmICh6ZXJvPyAoLWNvdW50IGNodW5rKSkgcmVzdCAoQ2h1bmtlZENvbnMuIGNodW5rIHJlc3QgbmlsIG5pbCkpKVxuIn0gezpzeW0gY29tcGFyYXRvciwgOm1ldGEgezpkb2MgIlJldHVybnMgYW4gSmF2YVNjcmlwdCBjb21wYXRpYmxlIGNvbXBhcmF0b3IgYmFzZWQgdXBvbiBwcmVkLiIsIDphcmdsaXN0cyAoW3ByZWRdKX0sIDpzb3VyY2UgIihkZWZuXG4gY29tcGFyYXRvclxuIFwiUmV0dXJucyBhbiBKYXZhU2NyaXB0IGNvbXBhdGlibGUgY29tcGFyYXRvciBiYXNlZCB1cG9uIHByZWQuXCJcbiBbcHJlZF1cbiAoZm4gW3ggeV0gKGNvbmQgKHByZWQgeCB5KSAtMSAocHJlZCB5IHgpIDEgOmVsc2UgMCkpKVxuIn0gezpzeW0gcHJpbnQtcHJlZml4LW1hcCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtwcmVmaXggbSBwcmludC1vbmUgd3JpdGVyIG9wdHNdKX0sIDpzb3VyY2UgIihkZWZuXG4gcHJpbnQtcHJlZml4LW1hcFxuIFtwcmVmaXggbSBwcmludC1vbmUgd3JpdGVyIG9wdHNdXG4gKHByLXNlcXVlbnRpYWwtd3JpdGVyXG4gIHdyaXRlclxuICAoZm5cbiAgIFtlIHcgb3B0c11cbiAgIChkb1xuICAgIChwcmludC1vbmUgKGtleSBlKSB3IG9wdHMpXG4gICAgKC13cml0ZSB3IFxcc3BhY2UpXG4gICAgKHByaW50LW9uZSAodmFsIGUpIHcgb3B0cykpKVxuICAoc3RyIHByZWZpeCBcIntcIilcbiAgXCIsIFwiXG4gIFwifVwiXG4gIG9wdHNcbiAgKHNlcSBtKSkpXG4ifSB7OnN5bSBzb3J0ZWQtbWFwLCA6bWV0YSB7OmRvYyAia2V5dmFsID0+IGtleSB2YWxcbiAgUmV0dXJucyBhIG5ldyBzb3J0ZWQgbWFwIHdpdGggc3VwcGxpZWQgbWFwcGluZ3MuIiwgOmFyZ2xpc3RzIFtbJiBrZXl2YWxzXV19LCA6c291cmNlICIoZGVmblxuIHNvcnRlZC1tYXBcbiBcImtleXZhbCA9PiBrZXkgdmFsXFxuICBSZXR1cm5zIGEgbmV3IHNvcnRlZCBtYXAgd2l0aCBzdXBwbGllZCBtYXBwaW5ncy5cIlxuIChbJiBrZXl2YWxzXVxuICAobG9vcFxuICAgW2luIChzZXEga2V5dmFscykgb3V0ICguLUVNUFRZIFBlcnNpc3RlbnRUcmVlTWFwKV1cbiAgIChpZiBpbiAocmVjdXIgKG5uZXh0IGluKSAoYXNzb2Mgb3V0IChmaXJzdCBpbikgKHNlY29uZCBpbikpKSBvdXQpKSkpXG4ifSB7OnN5bSBkcm9wLXdoaWxlLCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIGxhenkgc2VxdWVuY2Ugb2YgdGhlIGl0ZW1zIGluIGNvbGwgc3RhcnRpbmcgZnJvbSB0aGVcbiAgZmlyc3QgaXRlbSBmb3Igd2hpY2ggKHByZWQgaXRlbSkgcmV0dXJucyBsb2dpY2FsIGZhbHNlLiAgUmV0dXJucyBhXG4gIHN0YXRlZnVsIHRyYW5zZHVjZXIgd2hlbiBubyBjb2xsZWN0aW9uIGlzIHByb3ZpZGVkLiIsIDphcmdsaXN0cyBbW3ByZWRdIFtwcmVkIGNvbGxdXX0sIDpzb3VyY2UgIihkZWZuXG4gZHJvcC13aGlsZVxuIFwiUmV0dXJucyBhIGxhenkgc2VxdWVuY2Ugb2YgdGhlIGl0ZW1zIGluIGNvbGwgc3RhcnRpbmcgZnJvbSB0aGVcXG4gIGZpcnN0IGl0ZW0gZm9yIHdoaWNoIChwcmVkIGl0ZW0pIHJldHVybnMgbG9naWNhbCBmYWxzZS4gIFJldHVybnMgYVxcbiAgc3RhdGVmdWwgdHJhbnNkdWNlciB3aGVuIG5vIGNvbGxlY3Rpb24gaXMgcHJvdmlkZWQuXCJcbiAoW3ByZWRdXG4gIChmblxuICAgW3JmXVxuICAgKGxldFxuICAgIFtkYSAodm9sYXRpbGUhIHRydWUpXVxuICAgIChmblxuICAgICAoW10gKHJmKSlcbiAgICAgKFtyZXN1bHRdIChyZiByZXN1bHQpKVxuICAgICAoW3Jlc3VsdCBpbnB1dF1cbiAgICAgIChsZXRcbiAgICAgICBbZHJvcD8gQGRhXVxuICAgICAgIChpZlxuICAgICAgICAoYW5kIGRyb3A/IChwcmVkIGlucHV0KSlcbiAgICAgICAgcmVzdWx0XG4gICAgICAgIChkbyAodnJlc2V0ISBkYSBuaWwpIChyZiByZXN1bHQgaW5wdXQpKSkpKSkpKSlcbiAoW3ByZWQgY29sbF1cbiAgKGxldFxuICAgW3N0ZXBcbiAgICAoZm5cbiAgICAgW3ByZWQgY29sbF1cbiAgICAgKGxldFxuICAgICAgW3MgKHNlcSBjb2xsKV1cbiAgICAgIChpZiAoYW5kIHMgKHByZWQgKGZpcnN0IHMpKSkgKHJlY3VyIHByZWQgKHJlc3QgcykpIHMpKSldXG4gICAobGF6eS1zZXEgKHN0ZXAgcHJlZCBjb2xsKSkpKSlcbiJ9IHs6c3ltIElXcml0ZXIsIDptZXRhIHs6ZG9jICJQcm90b2NvbCBmb3Igd3JpdGluZy4gQ3VycmVudGx5IG9ubHkgaW1wbGVtZW50ZWQgYnkgU3RyaW5nQnVmZmVyV3JpdGVyLiJ9LCA6bWV0aG9kcyAoLWZsdXNoIC13cml0ZSl9IHs6c3ltIHJlYWxpemVkPywgOm1ldGEgezpkb2MgIlJldHVybnMgdHJ1ZSBpZiBhIHZhbHVlIGhhcyBiZWVuIHByb2R1Y2VkIGZvciBhIGRlbGF5IG9yIGxhenkgc2VxdWVuY2UuIiwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm5cbiByZWFsaXplZD9cbiBcIlJldHVybnMgdHJ1ZSBpZiBhIHZhbHVlIGhhcyBiZWVuIHByb2R1Y2VkIGZvciBhIGRlbGF5IG9yIGxhenkgc2VxdWVuY2UuXCJcbiBbeF1cbiAoLXJlYWxpemVkPyB4KSlcbiJ9IHs6c3ltICpwcmludC1mbiosIDptZXRhIHs6ZG9jICJFYWNoIHJ1bnRpbWUgZW52aXJvbm1lbnQgcHJvdmlkZXMgYSBkaWZmZXJlbnQgd2F5IHRvIHByaW50IG91dHB1dC5cbiAgV2hhdGV2ZXIgZnVuY3Rpb24gKnByaW50LWZuKiBpcyBib3VuZCB0byB3aWxsIGJlIHBhc3NlZCBhbnlcbiAgU3RyaW5ncyB3aGljaCBzaG91bGQgYmUgcHJpbnRlZC4ifSwgOnNvdXJjZSAiKGRlZm9uY2UgKnByaW50LWZuKiBuaWwpXG4ifSB7OnN5bSBjb21wYXJlLCA6bWV0YSB7OmRvYyAiQ29tcGFyYXRvci4gUmV0dXJucyBhIG5lZ2F0aXZlIG51bWJlciwgemVybywgb3IgYSBwb3NpdGl2ZSBudW1iZXJcbiAgd2hlbiB4IGlzIGxvZ2ljYWxseSAnbGVzcyB0aGFuJywgJ2VxdWFsIHRvJywgb3IgJ2dyZWF0ZXIgdGhhbidcbiAgeS4gVXNlcyBJQ29tcGFyYWJsZSBpZiBhdmFpbGFibGUgYW5kIGdvb2dsZS5hcnJheS5kZWZhdWx0Q29tcGFyZSBmb3Igb2JqZWN0c1xuIG9mIHRoZSBzYW1lIHR5cGUgYW5kIHNwZWNpYWwtY2FzZXMgbmlsIHRvIGJlIGxlc3MgdGhhbiBhbnkgb3RoZXIgb2JqZWN0LiIsIDphcmdsaXN0cyAoW3ggeV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBjb21wYXJlXG4gXCJDb21wYXJhdG9yLiBSZXR1cm5zIGEgbmVnYXRpdmUgbnVtYmVyLCB6ZXJvLCBvciBhIHBvc2l0aXZlIG51bWJlclxcbiAgd2hlbiB4IGlzIGxvZ2ljYWxseSAnbGVzcyB0aGFuJywgJ2VxdWFsIHRvJywgb3IgJ2dyZWF0ZXIgdGhhbidcXG4gIHkuIFVzZXMgSUNvbXBhcmFibGUgaWYgYXZhaWxhYmxlIGFuZCBnb29nbGUuYXJyYXkuZGVmYXVsdENvbXBhcmUgZm9yIG9iamVjdHNcXG4gb2YgdGhlIHNhbWUgdHlwZSBhbmQgc3BlY2lhbC1jYXNlcyBuaWwgdG8gYmUgbGVzcyB0aGFuIGFueSBvdGhlciBvYmplY3QuXCJcbiBbeCB5XVxuIChjb25kXG4gIChpZGVudGljYWw/IHggeSlcbiAgMFxuICAobmlsPyB4KVxuICAtMVxuICAobmlsPyB5KVxuICAxXG4gIChudW1iZXI/IHgpXG4gIChpZlxuICAgKG51bWJlcj8geSlcbiAgIChnYXJyYXkvZGVmYXVsdENvbXBhcmUgeCB5KVxuICAgKHRocm93IChqcy9FcnJvci4gKHN0ciBcIkNhbm5vdCBjb21wYXJlIFwiIHggXCIgdG8gXCIgeSkpKSlcbiAgKHNhdGlzZmllcz8gSUNvbXBhcmFibGUgeClcbiAgKC1jb21wYXJlIHggeSlcbiAgOmVsc2VcbiAgKGlmXG4gICAoYW5kXG4gICAgKG9yIChzdHJpbmc/IHgpIChhcnJheT8geCkgKHRydWU/IHgpIChmYWxzZT8geCkpXG4gICAgKGlkZW50aWNhbD8gKHR5cGUgeCkgKHR5cGUgeSkpKVxuICAgKGdhcnJheS9kZWZhdWx0Q29tcGFyZSB4IHkpXG4gICAodGhyb3cgKGpzL0Vycm9yLiAoc3RyIFwiQ2Fubm90IGNvbXBhcmUgXCIgeCBcIiB0byBcIiB5KSkpKSkpXG4ifSB7OnN5bSBjb21wbGVtZW50LCA6bWV0YSB7OmRvYyAiVGFrZXMgYSBmbiBmIGFuZCByZXR1cm5zIGEgZm4gdGhhdCB0YWtlcyB0aGUgc2FtZSBhcmd1bWVudHMgYXMgZixcbiAgaGFzIHRoZSBzYW1lIGVmZmVjdHMsIGlmIGFueSwgYW5kIHJldHVybnMgdGhlIG9wcG9zaXRlIHRydXRoIHZhbHVlLiIsIDphcmdsaXN0cyAoW2ZdKX0sIDpzb3VyY2UgIihkZWZuXG4gY29tcGxlbWVudFxuIFwiVGFrZXMgYSBmbiBmIGFuZCByZXR1cm5zIGEgZm4gdGhhdCB0YWtlcyB0aGUgc2FtZSBhcmd1bWVudHMgYXMgZixcXG4gIGhhcyB0aGUgc2FtZSBlZmZlY3RzLCBpZiBhbnksIGFuZCByZXR1cm5zIHRoZSBvcHBvc2l0ZSB0cnV0aCB2YWx1ZS5cIlxuIFtmXVxuIChmblxuICAoW10gKG5vdCAoZikpKVxuICAoW3hdIChub3QgKGYgeCkpKVxuICAoW3ggeV0gKG5vdCAoZiB4IHkpKSlcbiAgKFt4IHkgJiB6c10gKG5vdCAoYXBwbHkgZiB4IHkgenMpKSkpKVxuIn0gezpzeW0gLWFzc29jISwgOm1ldGEgezpkb2MgIlJldHVybnMgYSBuZXcgdHJhbnNpZW50IGNvbGxlY3Rpb24gb2YgdGNvbGwgd2l0aCBhIG1hcHBpbmcgZnJvbSBrZXkgdG9cbiAgICAgdmFsIGFkZGVkIHRvIGl0LiIsIDphcmdsaXN0cyAoW3Rjb2xsIGtleSB2YWxdKX0sIDpwcm90b2NvbCBJVHJhbnNpZW50QXNzb2NpYXRpdmV9IHs6c3ltICpwcmludC1kdXAqLCA6bWV0YSB7OmRvYyAiV2hlbiBzZXQgdG8gbG9naWNhbCB0cnVlLCBvYmplY3RzIHdpbGwgYmUgcHJpbnRlZCBpbiBhIHdheSB0aGF0IHByZXNlcnZlc1xuICB0aGVpciB0eXBlIHdoZW4gcmVhZCBpbiBsYXRlci5cblxuICBEZWZhdWx0cyB0byBmYWxzZS4ifSwgOnNvdXJjZSAiKGRlZiAqcHJpbnQtZHVwKiBmYWxzZSlcbiJ9IHs6c3ltIHN0cmluZy1pdGVyLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuIHN0cmluZy1pdGVyIFt4XSAoU3RyaW5nSXRlci4geCAwKSlcbiJ9IHs6c3ltIC1rZXktPmpzLCA6bWV0YSB7OmRvYyAiVHJhbnNmb3JtcyBtYXAga2V5cyB0byB2YWxpZCBKYXZhU2NyaXB0IGtleXMuIEFyYml0cmFyeSBrZXlzIGFyZVxuICBlbmNvZGVkIHRvIHRoZWlyIHN0cmluZyByZXByZXNlbnRhdGlvbiB2aWEgKHByLXN0ciB4KSIsIDphcmdsaXN0cyAoW3hdKX0sIDpwcm90b2NvbCBJRW5jb2RlSlN9IHs6c3ltIElEZXJlZiwgOm1ldGEgezpkb2MgIlByb3RvY29sIGZvciBhZGRpbmcgZGVyZWZlcmVuY2UgZnVuY3Rpb25hbGl0eSB0byBhIHJlZmVyZW5jZS4ifSwgOm1ldGhvZHMgKC1kZXJlZil9IHs6c3ltIHNlcXVlbmNlLCA6bWV0YSB7OmRvYyAiQ29lcmNlcyBjb2xsIHRvIGEgKHBvc3NpYmx5IGVtcHR5KSBzZXF1ZW5jZSwgaWYgaXQgaXMgbm90IGFscmVhZHlcbiAgb25lLiBXaWxsIG5vdCBmb3JjZSBhIGxhenkgc2VxLiAoc2VxdWVuY2UgbmlsKSB5aWVsZHMgKCksIFdoZW4gYVxuICB0cmFuc2R1Y2VyIGlzIHN1cHBsaWVkLCByZXR1cm5zIGEgbGF6eSBzZXF1ZW5jZSBvZiBhcHBsaWNhdGlvbnMgb2ZcbiAgdGhlIHRyYW5zZm9ybSB0byB0aGUgaXRlbXMgaW4gY29sbChzKSwgaS5lLiB0byB0aGUgc2V0IG9mIGZpcnN0XG4gIGl0ZW1zIG9mIGVhY2ggY29sbCwgZm9sbG93ZWQgYnkgdGhlIHNldCBvZiBzZWNvbmRcbiAgaXRlbXMgaW4gZWFjaCBjb2xsLCB1bnRpbCBhbnkgb25lIG9mIHRoZSBjb2xscyBpcyBleGhhdXN0ZWQuICBBbnlcbiAgcmVtYWluaW5nIGl0ZW1zIGluIG90aGVyIGNvbGxzIGFyZSBpZ25vcmVkLiBUaGUgdHJhbnNmb3JtIHNob3VsZCBhY2NlcHRcbiAgbnVtYmVyLW9mLWNvbGxzIGFyZ3VtZW50cyIsIDphcmdsaXN0cyBbW2NvbGxdIFt4Zm9ybSBjb2xsXSBbeGZvcm0gY29sbCAmIGNvbGxzXV19LCA6c291cmNlICIoZGVmblxuIHNlcXVlbmNlXG4gXCJDb2VyY2VzIGNvbGwgdG8gYSAocG9zc2libHkgZW1wdHkpIHNlcXVlbmNlLCBpZiBpdCBpcyBub3QgYWxyZWFkeVxcbiAgb25lLiBXaWxsIG5vdCBmb3JjZSBhIGxhenkgc2VxLiAoc2VxdWVuY2UgbmlsKSB5aWVsZHMgKCksIFdoZW4gYVxcbiAgdHJhbnNkdWNlciBpcyBzdXBwbGllZCwgcmV0dXJucyBhIGxhenkgc2VxdWVuY2Ugb2YgYXBwbGljYXRpb25zIG9mXFxuICB0aGUgdHJhbnNmb3JtIHRvIHRoZSBpdGVtcyBpbiBjb2xsKHMpLCBpLmUuIHRvIHRoZSBzZXQgb2YgZmlyc3RcXG4gIGl0ZW1zIG9mIGVhY2ggY29sbCwgZm9sbG93ZWQgYnkgdGhlIHNldCBvZiBzZWNvbmRcXG4gIGl0ZW1zIGluIGVhY2ggY29sbCwgdW50aWwgYW55IG9uZSBvZiB0aGUgY29sbHMgaXMgZXhoYXVzdGVkLiAgQW55XFxuICByZW1haW5pbmcgaXRlbXMgaW4gb3RoZXIgY29sbHMgYXJlIGlnbm9yZWQuIFRoZSB0cmFuc2Zvcm0gc2hvdWxkIGFjY2VwdFxcbiAgbnVtYmVyLW9mLWNvbGxzIGFyZ3VtZW50c1wiXG4gKFtjb2xsXSAoaWYgKHNlcT8gY29sbCkgY29sbCAob3IgKHNlcSBjb2xsKSAoKSkpKVxuIChbeGZvcm0gY29sbF1cbiAgKG9yXG4gICAoY2h1bmtJdGVyYXRvclNlcSAoLmNyZWF0ZSBUcmFuc2Zvcm1lckl0ZXJhdG9yIHhmb3JtIChpdGVyIGNvbGwpKSlcbiAgICgpKSlcbiAoW3hmb3JtIGNvbGwgJiBjb2xsc11cbiAgKG9yXG4gICAoY2h1bmtJdGVyYXRvclNlcVxuICAgICguY3JlYXRlTXVsdGlcbiAgICAgVHJhbnNmb3JtZXJJdGVyYXRvclxuICAgICB4Zm9ybVxuICAgICAobWFwIGl0ZXIgKGNvbnMgY29sbCBjb2xscykpKSlcbiAgICgpKSkpXG4ifSB7OnN5bSBjb25zdGFudGx5LCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIGZ1bmN0aW9uIHRoYXQgdGFrZXMgYW55IG51bWJlciBvZiBhcmd1bWVudHMgYW5kIHJldHVybnMgeC4iLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmblxuIGNvbnN0YW50bHlcbiBcIlJldHVybnMgYSBmdW5jdGlvbiB0aGF0IHRha2VzIGFueSBudW1iZXIgb2YgYXJndW1lbnRzIGFuZCByZXR1cm5zIHguXCJcbiBbeF1cbiAoZm4gWyYgYXJnc10geCkpXG4ifSB7OnN5bSBjaHVua2VkLXNlcSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgW1t2ZWMgaSBvZmZdIFt2ZWMgbm9kZSBpIG9mZl0gW3ZlYyBub2RlIGkgb2ZmIG1ldGFdXX0sIDpzb3VyY2UgIihkZWZuXG4gY2h1bmtlZC1zZXFcbiAoW3ZlYyBpIG9mZl0gKENodW5rZWRTZXEuIHZlYyAoYXJyYXktZm9yIHZlYyBpKSBpIG9mZiBuaWwgbmlsKSlcbiAoW3ZlYyBub2RlIGkgb2ZmXSAoQ2h1bmtlZFNlcS4gdmVjIG5vZGUgaSBvZmYgbmlsIG5pbCkpXG4gKFt2ZWMgbm9kZSBpIG9mZiBtZXRhXSAoQ2h1bmtlZFNlcS4gdmVjIG5vZGUgaSBvZmYgbWV0YSBuaWwpKSlcbiJ9IHs6c3ltIElTb3J0ZWQsIDptZXRhIHs6ZG9jICJQcm90b2NvbCBmb3IgYSBjb2xsZWN0aW9uIHdoaWNoIGNhbiByZXByZXNlbnQgdGhlaXIgaXRlbXNcbiAgaW4gYSBzb3J0ZWQgbWFubmVyLiAifSwgOm1ldGhvZHMgKC1jb21wYXJhdG9yIC1lbnRyeS1rZXkgLXNvcnRlZC1zZXEgLXNvcnRlZC1zZXEtZnJvbSl9IHs6c3ltIG1ha2UtYXJyYXksIDptZXRhIHs6ZG9jICJDb25zdHJ1Y3QgYSBKYXZhU2NyaXB0IGFycmF5IG9mIHRoZSBzcGVjaWZpZWQgZGltZW5zaW9ucy4gQWNjZXB0cyBpZ25vcmVkXG4gIHR5cGUgYXJndW1lbnQgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBDbG9qdXJlLiBOb3RlIHRoYXQgdGhlcmUgaXMgbm8gZWZmaWNpZW50XG4gIHdheSB0byBhbGxvY2F0ZSBtdWx0aS1kaW1lbnNpb25hbCBhcnJheXMgaW4gSmF2YVNjcmlwdDsgYXMgc3VjaCwgdGhpcyBmdW5jdGlvblxuICB3aWxsIHJ1biBpbiBwb2x5bm9taWFsIHRpbWUgd2hlbiBjYWxsZWQgd2l0aCAzIG9yIG1vcmUgYXJndW1lbnRzLiIsIDphcmdsaXN0cyBbW3NpemVdIFt0eXBlIHNpemVdIFt0eXBlIHNpemUgJiBtb3JlLXNpemVzXV19LCA6c291cmNlICIoZGVmblxuIG1ha2UtYXJyYXlcbiBcIkNvbnN0cnVjdCBhIEphdmFTY3JpcHQgYXJyYXkgb2YgdGhlIHNwZWNpZmllZCBkaW1lbnNpb25zLiBBY2NlcHRzIGlnbm9yZWRcXG4gIHR5cGUgYXJndW1lbnQgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBDbG9qdXJlLiBOb3RlIHRoYXQgdGhlcmUgaXMgbm8gZWZmaWNpZW50XFxuICB3YXkgdG8gYWxsb2NhdGUgbXVsdGktZGltZW5zaW9uYWwgYXJyYXlzIGluIEphdmFTY3JpcHQ7IGFzIHN1Y2gsIHRoaXMgZnVuY3Rpb25cXG4gIHdpbGwgcnVuIGluIHBvbHlub21pYWwgdGltZSB3aGVuIGNhbGxlZCB3aXRoIDMgb3IgbW9yZSBhcmd1bWVudHMuXCJcbiAoW3NpemVdIChqcy9BcnJheS4gc2l6ZSkpXG4gKFt0eXBlIHNpemVdIChtYWtlLWFycmF5IHNpemUpKVxuIChbdHlwZSBzaXplICYgbW9yZS1zaXplc11cbiAgKGxldFxuICAgW2RpbXMgbW9yZS1zaXplcyBkaW1hcnJheSAobWFrZS1hcnJheSBzaXplKV1cbiAgIChkb3RpbWVzXG4gICAgW2kgKGFsZW5ndGggZGltYXJyYXkpXVxuICAgIChhc2V0IGRpbWFycmF5IGkgKGFwcGx5IG1ha2UtYXJyYXkgbmlsIGRpbXMpKSlcbiAgIGRpbWFycmF5KSkpXG4ifSB7OnN5bSBzaG9ydHMsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm4gc2hvcnRzIFt4XSB4KVxuIn0gezpzeW0gKnVuY2hlY2tlZC1pZiosIDptZXRhIHt9LCA6c291cmNlICIoZGVmICp1bmNoZWNrZWQtaWYqIGZhbHNlKVxuIn0gezpzeW0gZW5hYmxlLWNvbnNvbGUtcHJpbnQhLCA6bWV0YSB7OmRvYyAiU2V0ICpwcmludC1mbiogdG8gY29uc29sZS5sb2ciLCA6YXJnbGlzdHMgKFtdKX0sIDpzb3VyY2UgIihkZWZuXG4gZW5hYmxlLWNvbnNvbGUtcHJpbnQhXG4gXCJTZXQgKnByaW50LWZuKiB0byBjb25zb2xlLmxvZ1wiXG4gW11cbiAoc2V0ISAqcHJpbnQtbmV3bGluZSogZmFsc2UpXG4gKHNldC1wcmludC1mbiFcbiAgKGZuXG4gICBbXVxuICAgKGxldFxuICAgIFt4cyAoanMtYXJndW1lbnRzKV1cbiAgICAoLmFwcGx5ICguLWxvZyBqcy9jb25zb2xlKSBqcy9jb25zb2xlIChnYXJyYXkvY2xvbmUgeHMpKSkpKVxuIChzZXQtcHJpbnQtZXJyLWZuIVxuICAoZm5cbiAgIFtdXG4gICAobGV0XG4gICAgW3hzIChqcy1hcmd1bWVudHMpXVxuICAgICguYXBwbHkgKC4tZXJyb3IganMvY29uc29sZSkganMvY29uc29sZSAoZ2FycmF5L2Nsb25lIHhzKSkpKSlcbiBuaWwpXG4ifSB7OnN5bSAtZmx1c2gsIDptZXRhIHs6ZG9jICJGbHVzaCB3cml0ZXIuIiwgOmFyZ2xpc3RzIChbd3JpdGVyXSl9LCA6cHJvdG9jb2wgSVdyaXRlcn0gezpzeW0gY29tcGxldGluZywgOm1ldGEgezpkb2MgIlRha2VzIGEgcmVkdWNpbmcgZnVuY3Rpb24gZiBvZiAyIGFyZ3MgYW5kIHJldHVybnMgYSBmbiBzdWl0YWJsZSBmb3JcbiAgdHJhbnNkdWNlIGJ5IGFkZGluZyBhbiBhcml0eS0xIHNpZ25hdHVyZSB0aGF0IGNhbGxzIGNmIChkZWZhdWx0IC1cbiAgaWRlbnRpdHkpIG9uIHRoZSByZXN1bHQgYXJndW1lbnQuIiwgOmFyZ2xpc3RzIFtbZl0gW2YgY2ZdXX0sIDpzb3VyY2UgIihkZWZuXG4gY29tcGxldGluZ1xuIFwiVGFrZXMgYSByZWR1Y2luZyBmdW5jdGlvbiBmIG9mIDIgYXJncyBhbmQgcmV0dXJucyBhIGZuIHN1aXRhYmxlIGZvclxcbiAgdHJhbnNkdWNlIGJ5IGFkZGluZyBhbiBhcml0eS0xIHNpZ25hdHVyZSB0aGF0IGNhbGxzIGNmIChkZWZhdWx0IC1cXG4gIGlkZW50aXR5KSBvbiB0aGUgcmVzdWx0IGFyZ3VtZW50LlwiXG4gKFtmXSAoY29tcGxldGluZyBmIGlkZW50aXR5KSlcbiAoW2YgY2ZdIChmbiAoW10gKGYpKSAoW3hdIChjZiB4KSkgKFt4IHldIChmIHggeSkpKSkpXG4ifSB7OnN5bSB1bmNoZWNrZWQtbmVnYXRlLWludCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmbiB1bmNoZWNrZWQtbmVnYXRlLWludCBbeF0gKGNsanMuY29yZS91bmNoZWNrZWQtbmVnYXRlLWludCB4KSlcbiJ9IHs6c3ltIGhhc2gtdW5vcmRlcmVkLWNvbGwsIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRoZSBoYXNoIGNvZGUsIGNvbnNpc3RlbnQgd2l0aCA9LCBmb3IgYW4gZXh0ZXJuYWwgdW5vcmRlcmVkXG4gICBjb2xsZWN0aW9uIGltcGxlbWVudGluZyBJdGVyYWJsZS4gRm9yIG1hcHMsIHRoZSBpdGVyYXRvciBzaG91bGRcbiAgIHJldHVybiBtYXAgZW50cmllcyB3aG9zZSBoYXNoIGlzIGNvbXB1dGVkIGFzXG4gICAgIChoYXNoLW9yZGVyZWQtY29sbCBbayB2XSkuXG4gICBTZWUgaHR0cDovL2Nsb2p1cmUub3JnL2RhdGFfc3RydWN0dXJlcyNoYXNoIGZvciBmdWxsIGFsZ29yaXRobXMuIiwgOmFyZ2xpc3RzIChbY29sbF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBoYXNoLXVub3JkZXJlZC1jb2xsXG4gXCJSZXR1cm5zIHRoZSBoYXNoIGNvZGUsIGNvbnNpc3RlbnQgd2l0aCA9LCBmb3IgYW4gZXh0ZXJuYWwgdW5vcmRlcmVkXFxuICAgY29sbGVjdGlvbiBpbXBsZW1lbnRpbmcgSXRlcmFibGUuIEZvciBtYXBzLCB0aGUgaXRlcmF0b3Igc2hvdWxkXFxuICAgcmV0dXJuIG1hcCBlbnRyaWVzIHdob3NlIGhhc2ggaXMgY29tcHV0ZWQgYXNcXG4gICAgIChoYXNoLW9yZGVyZWQtY29sbCBbayB2XSkuXFxuICAgU2VlIGh0dHA6Ly9jbG9qdXJlLm9yZy9kYXRhX3N0cnVjdHVyZXMjaGFzaCBmb3IgZnVsbCBhbGdvcml0aG1zLlwiXG4gW2NvbGxdXG4gKGxvb3BcbiAgW24gMCBoYXNoLWNvZGUgMCBjb2xsIChzZXEgY29sbCldXG4gIChpZi1ub3RcbiAgIChuaWw/IGNvbGwpXG4gICAocmVjdXJcbiAgICAoaW5jIG4pXG4gICAgKGJpdC1vciAoKyBoYXNoLWNvZGUgKGhhc2ggKGZpcnN0IGNvbGwpKSkgMClcbiAgICAobmV4dCBjb2xsKSlcbiAgIChtaXgtY29sbGVjdGlvbi1oYXNoIGhhc2gtY29kZSBuKSkpKVxuIn0gezpzeW0gcmVwZWF0LCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIGxhenkgKGluZmluaXRlISwgb3IgbGVuZ3RoIG4gaWYgc3VwcGxpZWQpIHNlcXVlbmNlIG9mIHhzLiIsIDphcmdsaXN0cyBbW3hdIFtuIHhdXX0sIDpzb3VyY2UgIihkZWZuXG4gcmVwZWF0XG4gXCJSZXR1cm5zIGEgbGF6eSAoaW5maW5pdGUhLCBvciBsZW5ndGggbiBpZiBzdXBwbGllZCkgc2VxdWVuY2Ugb2YgeHMuXCJcbiAoW3hdIChSZXBlYXQuIG5pbCAtMSB4IG5pbCBuaWwpKVxuIChbbiB4XSAoaWYgKHBvcz8gbikgKFJlcGVhdC4gbmlsIG4geCBuaWwgbmlsKSAoLi1FTVBUWSBMaXN0KSkpKVxuIn0gezpzeW0gdW5jaGVja2VkLWluYywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmbiB1bmNoZWNrZWQtaW5jIFt4XSAoY2xqcy5jb3JlL3VuY2hlY2tlZC1pbmMgeCkpXG4ifSB7OnN5bSBudGhuZXh0LCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0aGUgbnRoIG5leHQgb2YgY29sbCwgKHNlcSBjb2xsKSB3aGVuIG4gaXMgMC4iLCA6YXJnbGlzdHMgKFtjb2xsIG5dKX0sIDpzb3VyY2UgIihkZWZuXG4gbnRobmV4dFxuIFwiUmV0dXJucyB0aGUgbnRoIG5leHQgb2YgY29sbCwgKHNlcSBjb2xsKSB3aGVuIG4gaXMgMC5cIlxuIFtjb2xsIG5dXG4gKGxvb3BcbiAgW24gbiB4cyAoc2VxIGNvbGwpXVxuICAoaWYgKGFuZCB4cyAocG9zPyBuKSkgKHJlY3VyIChkZWMgbikgKG5leHQgeHMpKSB4cykpKVxuIn0gezpzeW0gZ2V0LXZhbGlkYXRvciwgOm1ldGEgezpkb2MgIkdldHMgdGhlIHZhbGlkYXRvci1mbiBmb3IgYSB2YXIvcmVmL2FnZW50L2F0b20uIiwgOmFyZ2xpc3RzIChbaXJlZl0pfSwgOnNvdXJjZSAiKGRlZm5cbiBnZXQtdmFsaWRhdG9yXG4gXCJHZXRzIHRoZSB2YWxpZGF0b3ItZm4gZm9yIGEgdmFyL3JlZi9hZ2VudC9hdG9tLlwiXG4gW2lyZWZdXG4gKC4tdmFsaWRhdG9yIGlyZWYpKVxuIn0gezpzeW0gbnVtYmVyPywgOm1ldGEgezpkb2MgIlJldHVybnMgdHJ1ZSBpZiB4IGlzIGEgSmF2YVNjcmlwdCBudW1iZXIuIiwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBudW1iZXI/XG4gXCJSZXR1cm5zIHRydWUgaWYgeCBpcyBhIEphdmFTY3JpcHQgbnVtYmVyLlwiXG4gW3hdXG4gKGNsanMuY29yZS9udW1iZXI/IHgpKVxuIn0gezpzeW0gLWNvbmohLCA6bWV0YSB7OmRvYyAiQWRkcyB2YWx1ZSB2YWwgdG8gdGNvbGwgYW5kIHJldHVybnMgdGNvbGwuIiwgOmFyZ2xpc3RzIChbdGNvbGwgdmFsXSl9LCA6cHJvdG9jb2wgSVRyYW5zaWVudENvbGxlY3Rpb259IHs6c3ltIGNodW5rLW5leHQsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbc10pfSwgOnNvdXJjZSAiKGRlZm5cbiBjaHVuay1uZXh0XG4gW3NdXG4gKGlmXG4gIChpbXBsZW1lbnRzPyBJQ2h1bmtlZE5leHQgcylcbiAgKC1jaHVua2VkLW5leHQgcylcbiAgKHNlcSAoLWNodW5rZWQtcmVzdCBzKSkpKVxuIn0gezpzeW0gcHJpbnQtc3RyLCA6bWV0YSB7OmRvYyAicHJpbnQgdG8gYSBzdHJpbmcsIHJldHVybmluZyBpdCIsIDphcmdsaXN0cyAoWyYgb2Jqc10pfSwgOnNvdXJjZSAiKGRlZm5cbiBwcmludC1zdHJcbiBcInByaW50IHRvIGEgc3RyaW5nLCByZXR1cm5pbmcgaXRcIlxuIFsmIG9ianNdXG4gKHByLXN0ci13aXRoLW9wdHMgb2JqcyAoYXNzb2MgKHByLW9wdHMpIDpyZWFkYWJseSBmYWxzZSkpKVxuIn0gezpzeW0gbm90LWFueT8sIDptZXRhIHs6ZG9jICJSZXR1cm5zIGZhbHNlIGlmIChwcmVkIHgpIGlzIGxvZ2ljYWwgdHJ1ZSBmb3IgYW55IHggaW4gY29sbCxcbiAgZWxzZSB0cnVlLiIsIDphcmdsaXN0cyAoW3ByZWQgY29sbF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBub3QtYW55P1xuIFwiUmV0dXJucyBmYWxzZSBpZiAocHJlZCB4KSBpcyBsb2dpY2FsIHRydWUgZm9yIGFueSB4IGluIGNvbGwsXFxuICBlbHNlIHRydWUuXCJcbiBbcHJlZCBjb2xsXVxuIChub3QgKHNvbWUgcHJlZCBjb2xsKSkpXG4ifSB7OnN5bSBpbnRvLWFycmF5LCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhbiBhcnJheSB3aXRoIGNvbXBvbmVudHMgc2V0IHRvIHRoZSB2YWx1ZXMgaW4gYXNlcS4gT3B0aW9uYWwgdHlwZVxuICBhcmd1bWVudCBhY2NlcHRlZCBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIENsb2p1cmUuIiwgOmFyZ2xpc3RzIFtbYXNlcV0gW3R5cGUgYXNlcV1dfSwgOnNvdXJjZSAiKGRlZm5cbiBpbnRvLWFycmF5XG4gXCJSZXR1cm5zIGFuIGFycmF5IHdpdGggY29tcG9uZW50cyBzZXQgdG8gdGhlIHZhbHVlcyBpbiBhc2VxLiBPcHRpb25hbCB0eXBlXFxuICBhcmd1bWVudCBhY2NlcHRlZCBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIENsb2p1cmUuXCJcbiAoW2FzZXFdIChpbnRvLWFycmF5IG5pbCBhc2VxKSlcbiAoW3R5cGUgYXNlcV0gKHJlZHVjZSAoZm4gW2EgeF0gKC5wdXNoIGEgeCkgYSkgKGFycmF5KSBhc2VxKSkpXG4ifSB7OnN5bSAtaGFzaCwgOm1ldGEgezpkb2MgIlJldHVybnMgdGhlIGhhc2ggY29kZSBvZiBvLiIsIDphcmdsaXN0cyAoW29dKX0sIDpwcm90b2NvbCBJSGFzaH0gezpzeW0gcXVhbGlmaWVkLXN5bWJvbD8sIDptZXRhIHs6ZG9jICJSZXR1cm4gdHJ1ZSBpZiB4IGlzIGEgc3ltYm9sIHdpdGggYSBuYW1lc3BhY2UiLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmblxuIHF1YWxpZmllZC1zeW1ib2w/XG4gXCJSZXR1cm4gdHJ1ZSBpZiB4IGlzIGEgc3ltYm9sIHdpdGggYSBuYW1lc3BhY2VcIlxuIFt4XVxuIChib29sZWFuIChhbmQgKHN5bWJvbD8geCkgKG5hbWVzcGFjZSB4KSB0cnVlKSkpXG4ifSB7OnN5bSAtZGlzc29jISwgOm1ldGEgezpkb2MgIlJldHVybnMgYSBuZXcgdHJhbnNpZW50IGNvbGxlY3Rpb24gb2YgdGNvbGwgd2l0aG91dCB0aGUgbWFwcGluZyBmb3Iga2V5LiIsIDphcmdsaXN0cyAoW3Rjb2xsIGtleV0pfSwgOnByb3RvY29sIElUcmFuc2llbnRNYXB9IHs6c3ltIGNodW5rLWJ1ZmZlciwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtjYXBhY2l0eV0pfSwgOnNvdXJjZSAiKGRlZm4gY2h1bmstYnVmZmVyIFtjYXBhY2l0eV0gKENodW5rQnVmZmVyLiAobWFrZS1hcnJheSBjYXBhY2l0eSkgMCkpXG4ifSB7OnN5bSBzZXFhYmxlPywgOm1ldGEgezpkb2MgIlJldHVybiB0cnVlIGlmIHRoZSBzZXEgZnVuY3Rpb24gaXMgc3VwcG9ydGVkIGZvciBzIiwgOmFyZ2xpc3RzIChbc10pfSwgOnNvdXJjZSAiKGRlZm5cbiBzZXFhYmxlP1xuIFwiUmV0dXJuIHRydWUgaWYgdGhlIHNlcSBmdW5jdGlvbiBpcyBzdXBwb3J0ZWQgZm9yIHNcIlxuIFtzXVxuIChvciAobmlsPyBzKSAoc2F0aXNmaWVzPyBJU2VxYWJsZSBzKSAoYXJyYXk/IHMpIChzdHJpbmc/IHMpKSlcbiJ9IHs6c3ltIHN5bWJvbD8sIDptZXRhIHs6ZG9jICJSZXR1cm4gdHJ1ZSBpZiB4IGlzIGEgU3ltYm9sIiwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm4gc3ltYm9sPyBcIlJldHVybiB0cnVlIGlmIHggaXMgYSBTeW1ib2xcIiBbeF0gKGluc3RhbmNlPyBTeW1ib2wgeCkpXG4ifSB7OnN5bSBtMy1oYXNoLXVuZW5jb2RlZC1jaGFycywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtpbl0pfSwgOnNvdXJjZSAiKGRlZm5cbiBtMy1oYXNoLXVuZW5jb2RlZC1jaGFyc1xuIFtpbl1cbiAobGV0XG4gIFtoMVxuICAgKGxvb3BcbiAgICBbaSAxIGgxIG0zLXNlZWRdXG4gICAgKGlmXG4gICAgICg8IGkgKC4tbGVuZ3RoIGluKSlcbiAgICAgKHJlY3VyXG4gICAgICAoKyBpIDIpXG4gICAgICAobTMtbWl4LUgxXG4gICAgICAgaDFcbiAgICAgICAobTMtbWl4LUsxXG4gICAgICAgIChiaXQtb3JcbiAgICAgICAgICguY2hhckNvZGVBdCBpbiAoZGVjIGkpKVxuICAgICAgICAgKGJpdC1zaGlmdC1sZWZ0ICguY2hhckNvZGVBdCBpbiBpKSAxNikpKSkpXG4gICAgIGgxKSlcbiAgIGgxXG4gICAoaWZcbiAgICAoPT0gKGJpdC1hbmQgKC4tbGVuZ3RoIGluKSAxKSAxKVxuICAgIChiaXQteG9yIGgxIChtMy1taXgtSzEgKC5jaGFyQ29kZUF0IGluIChkZWMgKC4tbGVuZ3RoIGluKSkpKSlcbiAgICBoMSldXG4gIChtMy1mbWl4IGgxIChpbXVsIDIgKC4tbGVuZ3RoIGluKSkpKSlcbiJ9IHs6c3ltIHVuY2hlY2tlZC1jaGFyLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuIHVuY2hlY2tlZC1jaGFyIFt4XSB4KVxuIn0gezpzeW0gc3lzdGVtLXRpbWUsIDptZXRhIHs6ZG9jICJSZXR1cm5zIGhpZ2hlc3QgcmVzb2x1dGlvbiB0aW1lIG9mZmVyZWQgYnkgaG9zdCBpbiBtaWxsaXNlY29uZHMuIiwgOmFyZ2xpc3RzIChbXSl9LCA6c291cmNlICIoZGVmblxuIHN5c3RlbS10aW1lXG4gXCJSZXR1cm5zIGhpZ2hlc3QgcmVzb2x1dGlvbiB0aW1lIG9mZmVyZWQgYnkgaG9zdCBpbiBtaWxsaXNlY29uZHMuXCJcbiBbXVxuIChjb25kXG4gIChhbmQgKGV4aXN0cz8ganMvcGVyZm9ybWFuY2UpIChub3QgKG5pbD8gKC4ganMvcGVyZm9ybWFuY2UgLW5vdykpKSlcbiAgKC5ub3cganMvcGVyZm9ybWFuY2UpXG4gIChhbmQgKGV4aXN0cz8ganMvcHJvY2VzcykgKG5vdCAobmlsPyAoLiBqcy9wcm9jZXNzIC1ocnRpbWUpKSkpXG4gIChsZXRcbiAgIFt0ICguaHJ0aW1lIGpzL3Byb2Nlc3MpXVxuICAgKC8gKCsgKCogKGFnZXQgdCAwKSAxLjBFOSkgKGFnZXQgdCAxKSkgMTAwMDAwMC4wKSlcbiAgOmVsc2VcbiAgKC5nZXRUaW1lIChqcy9EYXRlLikpKSlcbiJ9IHs6c3ltIC1pbnZva2UsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbdGhpc10gW3RoaXMgYV0gW3RoaXMgYSBiXSBbdGhpcyBhIGIgY10gW3RoaXMgYSBiIGMgZF0gW3RoaXMgYSBiIGMgZCBlXSBbdGhpcyBhIGIgYyBkIGUgZl0gW3RoaXMgYSBiIGMgZCBlIGYgZ10gW3RoaXMgYSBiIGMgZCBlIGYgZyBoXSBbdGhpcyBhIGIgYyBkIGUgZiBnIGggaV0gW3RoaXMgYSBiIGMgZCBlIGYgZyBoIGkgal0gW3RoaXMgYSBiIGMgZCBlIGYgZyBoIGkgaiBrXSBbdGhpcyBhIGIgYyBkIGUgZiBnIGggaSBqIGsgbF0gW3RoaXMgYSBiIGMgZCBlIGYgZyBoIGkgaiBrIGwgbV0gW3RoaXMgYSBiIGMgZCBlIGYgZyBoIGkgaiBrIGwgbSBuXSBbdGhpcyBhIGIgYyBkIGUgZiBnIGggaSBqIGsgbCBtIG4gb10gW3RoaXMgYSBiIGMgZCBlIGYgZyBoIGkgaiBrIGwgbSBuIG8gcF0gW3RoaXMgYSBiIGMgZCBlIGYgZyBoIGkgaiBrIGwgbSBuIG8gcCBxXSBbdGhpcyBhIGIgYyBkIGUgZiBnIGggaSBqIGsgbCBtIG4gbyBwIHEgcl0gW3RoaXMgYSBiIGMgZCBlIGYgZyBoIGkgaiBrIGwgbSBuIG8gcCBxIHIgc10gW3RoaXMgYSBiIGMgZCBlIGYgZyBoIGkgaiBrIGwgbSBuIG8gcCBxIHIgcyB0XSBbdGhpcyBhIGIgYyBkIGUgZiBnIGggaSBqIGsgbCBtIG4gbyBwIHEgciBzIHQgcmVzdF0pfSwgOnByb3RvY29sIElGbn0gezpzeW0gY29sbD8sIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRydWUgaWYgeCBzYXRpc2ZpZXMgSUNvbGxlY3Rpb24iLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmblxuIGNvbGw/XG4gXCJSZXR1cm5zIHRydWUgaWYgeCBzYXRpc2ZpZXMgSUNvbGxlY3Rpb25cIlxuIFt4XVxuIChpZiAobmlsPyB4KSBmYWxzZSAoc2F0aXNmaWVzPyBJQ29sbGVjdGlvbiB4KSkpXG4ifSB7OnN5bSBnZXQtaW4sIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRoZSB2YWx1ZSBpbiBhIG5lc3RlZCBhc3NvY2lhdGl2ZSBzdHJ1Y3R1cmUsXG4gIHdoZXJlIGtzIGlzIGEgc2VxdWVuY2Ugb2Yga2V5cy4gUmV0dXJucyBuaWwgaWYgdGhlIGtleSBpcyBub3QgcHJlc2VudCxcbiAgb3IgdGhlIG5vdC1mb3VuZCB2YWx1ZSBpZiBzdXBwbGllZC4iLCA6YXJnbGlzdHMgW1ttIGtzXSBbbSBrcyBub3QtZm91bmRdXX0sIDpzb3VyY2UgIihkZWZuXG4gZ2V0LWluXG4gXCJSZXR1cm5zIHRoZSB2YWx1ZSBpbiBhIG5lc3RlZCBhc3NvY2lhdGl2ZSBzdHJ1Y3R1cmUsXFxuICB3aGVyZSBrcyBpcyBhIHNlcXVlbmNlIG9mIGtleXMuIFJldHVybnMgbmlsIGlmIHRoZSBrZXkgaXMgbm90IHByZXNlbnQsXFxuICBvciB0aGUgbm90LWZvdW5kIHZhbHVlIGlmIHN1cHBsaWVkLlwiXG4gezphZGRlZCBcIjEuMlwiLCA6c3RhdGljIHRydWV9XG4gKFttIGtzXSAocmVkdWNlIGdldCBtIGtzKSlcbiAoW20ga3Mgbm90LWZvdW5kXVxuICAobG9vcFxuICAgW3NlbnRpbmVsIGxvb2t1cC1zZW50aW5lbCBtIG0ga3MgKHNlcSBrcyldXG4gICAoaWYtbm90XG4gICAgKG5pbD8ga3MpXG4gICAgKGxldFxuICAgICBbbSAoZ2V0IG0gKGZpcnN0IGtzKSBzZW50aW5lbCldXG4gICAgIChpZlxuICAgICAgKGlkZW50aWNhbD8gc2VudGluZWwgbSlcbiAgICAgIG5vdC1mb3VuZFxuICAgICAgKHJlY3VyIHNlbnRpbmVsIG0gKG5leHQga3MpKSkpXG4gICAgbSkpKSlcbiJ9IHs6c3ltIGZuZXh0LCA6bWV0YSB7OmRvYyAiU2FtZSBhcyAoZmlyc3QgKG5leHQgeCkpIiwgOmFyZ2xpc3RzIChbY29sbF0pfSwgOnNvdXJjZSAiKGRlZm4gZm5leHQgXCJTYW1lIGFzIChmaXJzdCAobmV4dCB4KSlcIiBbY29sbF0gKGZpcnN0IChuZXh0IGNvbGwpKSlcbiJ9IHs6c3ltIElMaXN0LCA6bWV0YSB7OmRvYyAiTWFya2VyIGludGVyZmFjZSBpbmRpY2F0aW5nIGEgcGVyc2lzdGVudCBsaXN0In0sIDptZXRob2RzICgpfSB7OnN5bSAtdmFsLCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlIG1hcCBlbnRyeS4iLCA6YXJnbGlzdHMgKFtjb2xsXSl9LCA6cHJvdG9jb2wgSU1hcEVudHJ5fSB7OnN5bSBieXRlcywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmbiBieXRlcyBbeF0geClcbiJ9IHs6c3ltIC1zZXEsIDptZXRhIHs6ZG9jICJSZXR1cm5zIGEgc2VxIG9mIG8sIG9yIG5pbCBpZiBvIGlzIGVtcHR5LiIsIDphcmdsaXN0cyAoW29dKX0sIDpwcm90b2NvbCBJU2VxYWJsZX0pLCBmaWd3aGVlbC5jb3JlICh7OnN5bSBkaXN0aW5jdC1ieSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtmIGNvbGxdKX0sIDpzb3VyY2UgIihkZWZuXG4gZGlzdGluY3QtYnlcbiBbZiBjb2xsXVxuIChsZXRcbiAgW3NlZW4gKHZvbGF0aWxlISAje30pXVxuICAoZmlsdGVyXG4gICAoZm4qXG4gICAgW3AxX180MjEyMyNdXG4gICAgKGxldFxuICAgICBbayAoZiBwMV9fNDIxMjMjKSByZXMgKG5vdCAoQHNlZW4gaykpXVxuICAgICAodnN3YXAhIHNlZW4gY29uaiBrKVxuICAgICByZXMpKVxuICAgY29sbCkpKVxuIn0gezpzeW0gbWFwLWtleXMsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZiBjb2xsXSl9LCA6c291cmNlICIoZGVmbiBtYXAta2V5cyBbZiBjb2xsXSAoaW50byB7fSAobWFwIChmbiBbW2sgdl1dIFsoZiBrKSB2XSkpIGNvbGwpKVxuIn0gezpzeW0gKmlubGluZS1jb2RlLW1lc3NhZ2UtbWF4LWNvbHVtbiosIDptZXRhIHt9LCA6c291cmNlICIoZGVmICppbmxpbmUtY29kZS1tZXNzYWdlLW1heC1jb2x1bW4qIDgwKVxuIn0gezpzeW0gd3JhcC1saW5lLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3RleHQgc2l6ZV0pfSwgOnNvdXJjZSAiKGRlZm5cbiB3cmFwLWxpbmVcbiBbdGV4dCBzaXplXVxuIChyZS1zZXFcbiAgKHJlLXBhdHRlcm4gKHN0ciBcIi57MSxcIiBzaXplIFwifVxcXFxzfC57MSxcIiBzaXplIFwifVwiKSlcbiAgKHN0ciAoc3RyaW5nL3JlcGxhY2UgdGV4dCAjXCJcXG5cIiBcIiBcIikgXCIgXCIpKSlcbiJ9IHs6c3ltIGNyb3NzLWZvcm1hdCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFsmIGFyZ3NdKX0sIDpzb3VyY2UgIihkZWZuXG4gY3Jvc3MtZm9ybWF0XG4gWyYgYXJnc11cbiAoYXBwbHkgIz8oOmNsaiBmb3JtYXQgOmNsanMgZ3N0cmluZy9mb3JtYXQpIGFyZ3MpKVxuIn0gezpzeW0gaW5saW5lLW1lc3NhZ2UtZGlzcGxheS1kYXRhLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3s6a2V5cyBbbWVzc2FnZSBsaW5lIGNvbHVtbiBmaWxlLWV4Y2VycHRdLCA6YXMgbWVzc2FnZS1kYXRhfV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBpbmxpbmUtbWVzc2FnZS1kaXNwbGF5LWRhdGFcbiBbezprZXlzIFttZXNzYWdlIGxpbmUgY29sdW1uIGZpbGUtZXhjZXJwdF0sIDphcyBtZXNzYWdlLWRhdGF9XVxuICh3aGVuXG4gIGZpbGUtZXhjZXJwdFxuICAobGV0XG4gICBbezprZXlzIFtzdGFydC1saW5lIHBhdGggZXhjZXJwdF19XG4gICAgZmlsZS1leGNlcnB0XG4gICAgbGluZXNcbiAgICAobWFwLWluZGV4ZWRcbiAgICAgKGZuXG4gICAgICBbaSBsXVxuICAgICAgKGxldFxuICAgICAgIFtsbiAoKyBpIHN0YXJ0LWxpbmUpXVxuICAgICAgICh2ZWN0b3IgKGlmICg9IGxpbmUgbG4pIDplcnJvci1pbi1jb2RlIDpjb2RlLWxpbmUpIGxuIGwpKSlcbiAgICAgKHN0cmluZy9zcGxpdC1saW5lcyBleGNlcnB0KSlcbiAgICBbYmVnaW4gZW5kXVxuICAgIChzcGxpdC13aXRoXG4gICAgIChmbiogW3AxX180MjEyNiNdIChub3Q9IDplcnJvci1pbi1jb2RlIChmaXJzdCBwMV9fNDIxMjYjKSkpXG4gICAgIGxpbmVzKV1cbiAgIChjb25jYXRcbiAgICAodGFrZS1sYXN0IDUgYmVnaW4pXG4gICAgKHRha2UgMSBlbmQpXG4gICAgKHBvaW50ZXItbWVzc2FnZS1saW5lcyBtZXNzYWdlLWRhdGEpXG4gICAgKHRha2UgNSAocmVzdCBlbmQpKSkpKSlcbiJ9IHs6c3ltIGZpbGUtbGluZS1jb2x1bW4sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbezprZXlzIFtmaWxlIGxpbmUgY29sdW1uXX1dKX0sIDpzb3VyY2UgIihkZWZuXG4gZmlsZS1saW5lLWNvbHVtblxuIFt7OmtleXMgW2ZpbGUgbGluZSBjb2x1bW5dfV1cbiAoY29uZC0+XG4gIFwiXCJcbiAgZmlsZVxuICAoc3RyIFwiZmlsZSBcIiBmaWxlKVxuICBsaW5lXG4gIChzdHIgXCIgYXQgbGluZSBcIiBsaW5lKVxuICAoYW5kIGxpbmUgY29sdW1uKVxuICAoc3RyIFwiLCBjb2x1bW4gXCIgY29sdW1uKSkpXG4ifSksIGRldnRvb2xzLnZlcnNpb24gKHs6c3ltIGN1cnJlbnQtdmVyc2lvbiwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgY3VycmVudC12ZXJzaW9uIChnZXQtY3VycmVudC12ZXJzaW9uKSlcbiJ9IHs6c3ltIGdldC1jdXJyZW50LXZlcnNpb24sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbXSl9LCA6c291cmNlICIoZGVmbiBnZXQtY3VycmVudC12ZXJzaW9uIFtdIGN1cnJlbnQtdmVyc2lvbilcbiJ9KSwgZGV2dG9vbHMuYXN5bmMgKHs6c3ltICppbnN0YWxsZWQqLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiAqaW5zdGFsbGVkKiBmYWxzZSlcbiJ9IHs6c3ltIGZpeGVkLWNocm9tZS12ZXJzaW9uLWZvci1hc3luYywgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgZml4ZWQtY2hyb21lLXZlcnNpb24tZm9yLWFzeW5jIFwiNjUuMC4zMzIxXCIpXG4ifSB7OnN5bSAqb3JpZ2luYWwtc2V0LWltbWVkaWF0ZSosIDptZXRhIHt9LCA6c291cmNlICIoZGVmICpvcmlnaW5hbC1zZXQtaW1tZWRpYXRlKiBuaWwpXG4ifSB7OnN5bSBpbnN0YWxsLWFzeW5jLXNldC1pbW1lZGlhdGUhLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW10pfSwgOnNvdXJjZSAiKGRlZm5cbiBpbnN0YWxsLWFzeW5jLXNldC1pbW1lZGlhdGUhXG4gW11cbiAoc2V0ISAqb3JpZ2luYWwtc2V0LWltbWVkaWF0ZSoganMvZ29vZy5hc3luYy5uZXh0VGljay5zZXRJbW1lZGlhdGVfKVxuIChzZXQhXG4gIGpzL2dvb2cuYXN5bmMubmV4dFRpY2suc2V0SW1tZWRpYXRlX1xuICBwcm9taXNlLWJhc2VkLXNldC1pbW1lZGlhdGUpKVxuIn0gezpzeW0gaW5zdGFsbCEsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbXSl9LCA6c291cmNlICIoZGVmblxuIGluc3RhbGwhXG4gW11cbiAod2hlbi1ub3RcbiAgKmluc3RhbGxlZCpcbiAgKHNldCEgKmluc3RhbGxlZCogdHJ1ZSlcbiAgKG9zZXQganMvRXJyb3IgW1wic3RhY2tUcmFjZUxpbWl0XCJdIGpzL0luZmluaXR5KVxuICAoaW5zdGFsbC1hc3luYy1zZXQtaW1tZWRpYXRlISlcbiAgKHdoZW4tbm90XG4gICAobmVlZGVkPylcbiAgICguaW5mbyAoY29udGV4dC9nZXQtY29uc29sZSkgKGdldC1ub3QtbmVlZGVkLW1lc3NhZ2UpKSlcbiAgdHJ1ZSkpXG4ifSB7OnN5bSBnZXQtbm90LW5lZWRlZC1tZXNzYWdlLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW10pfSwgOnNvdXJjZSAiKGRlZm5cbiBnZXQtbm90LW5lZWRlZC1tZXNzYWdlXG4gW11cbiAoc3RyXG4gIFwiY2xqcy1kZXZ0b29sczogdGhlIDphc3luYyBmZWF0dXJlIGlzIG5vIGxvbmdlciBuZWVkZWQgc2luY2UgQ2hyb21lIFwiXG4gIGZpeGVkLWNocm9tZS12ZXJzaW9uLWZvci1hc3luY1xuICBcIiwgXCJcbiAgXCJzZWUgaHR0cHM6Ly9naXRodWIuY29tL2JpbmFyeWFnZS9jbGpzLWRldnRvb2xzL2lzc3Vlcy8yMFwiKSlcbiJ9IHs6c3ltIG5lZWRlZD8sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbXSl9LCA6c291cmNlICIoZGVmblxuIG5lZWRlZD9cbiBbXVxuIChub3RcbiAgKGFuZCAoaXNDaHJvbWUpIChpc1ZlcnNpb25PckhpZ2hlciBmaXhlZC1jaHJvbWUtdmVyc2lvbi1mb3ItYXN5bmMpKSkpXG4ifSB7OnN5bSBhdmFpbGFibGU/LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW10pfSwgOnNvdXJjZSAiKGRlZm4gYXZhaWxhYmxlPyBbXSAoZXhpc3RzPyBqcy9Qcm9taXNlKSlcbiJ9IHs6c3ltIHVuaW5zdGFsbC1hc3luYy1zZXQtaW1tZWRpYXRlISwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtdKX0sIDpzb3VyY2UgIihkZWZuXG4gdW5pbnN0YWxsLWFzeW5jLXNldC1pbW1lZGlhdGUhXG4gW11cbiAoc2V0ISBqcy9nb29nLmFzeW5jLm5leHRUaWNrLnNldEltbWVkaWF0ZV8gKm9yaWdpbmFsLXNldC1pbW1lZGlhdGUqKSlcbiJ9IHs6c3ltIGluc3RhbGxlZD8sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbXSl9LCA6c291cmNlICIoZGVmbiBpbnN0YWxsZWQ/IFtdICppbnN0YWxsZWQqKVxuIn0gezpzeW0gcmV0aHJvdy1vdXRzaWRlLXByb21pc2UsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZV0pfSwgOnNvdXJjZSAiKGRlZm4gcmV0aHJvdy1vdXRzaWRlLXByb21pc2UgW2VdIChqcy9zZXRUaW1lb3V0IChmbiogW10gKHRocm93IGUpKSAwKSlcbiJ9IHs6c3ltIHVuaW5zdGFsbCEsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbXSl9LCA6c291cmNlICIoZGVmblxuIHVuaW5zdGFsbCFcbiBbXVxuICh3aGVuXG4gICppbnN0YWxsZWQqXG4gIChzZXQhICppbnN0YWxsZWQqIGZhbHNlKVxuICAodW5pbnN0YWxsLWFzeW5jLXNldC1pbW1lZGlhdGUhKSkpXG4ifSB7OnN5bSBwcm9taXNlLWJhc2VkLXNldC1pbW1lZGlhdGUsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbY2FsbGJhY2tdKX0sIDpzb3VyY2UgIihkZWZuXG4gcHJvbWlzZS1iYXNlZC1zZXQtaW1tZWRpYXRlXG4gW2NhbGxiYWNrXVxuICgtPlxuICAob2NhbGwganMvUHJvbWlzZSBcInJlc29sdmVcIilcbiAgKG9jYWxsIFwidGhlblwiIGNhbGxiYWNrKVxuICAob2NhbGwgXCJjYXRjaFwiIHJldGhyb3ctb3V0c2lkZS1wcm9taXNlKSlcbiBuaWwpXG4ifSksIGNsanMtdGVzdC1ydW5uZXIuZ2VuICh7OnN5bSB2YXItPnN5bSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt2YXJdKX0sIDpzb3VyY2UgIihkZWZuIHZhci0+c3ltIFt2YXJdIChzeW1ib2wgKDpucyAobWV0YSB2YXIpKSAoOm5hbWUgKG1ldGEgdmFyKSkpKVxuIn0gezpzeW0gdmFyLWZpbHRlciwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt7OmtleXMgW3ZhciBpbmNsdWRlIGV4Y2x1ZGVdfV0pfSwgOnNvdXJjZSAiKGRlZm5cbiB2YXItZmlsdGVyXG4gW3s6a2V5cyBbdmFyIGluY2x1ZGUgZXhjbHVkZV19XVxuIChsZXRcbiAgW3Rlc3Qtc3BlY2lmaWNcbiAgIChpZiB2YXIgKGNvbXAgdmFyIHZhci0+c3ltKSAoY29uc3RhbnRseSB0cnVlKSlcbiAgIHRlc3QtaW5jbHVzaW9uXG4gICAoaWZcbiAgICBpbmNsdWRlXG4gICAgKGZuKiBbcDFfXzQyNDcxI10gKChhcHBseSBzb21lLWZuIGluY2x1ZGUpIChtZXRhIHAxX180MjQ3MSMpKSlcbiAgICAoY29uc3RhbnRseSB0cnVlKSlcbiAgIHRlc3QtZXhjbHVzaW9uXG4gICAoaWZcbiAgICBleGNsdWRlXG4gICAgKGZuKlxuICAgICBbcDFfXzQyNDcyI11cbiAgICAgKChjb21wbGVtZW50IChhcHBseSBzb21lLWZuIGV4Y2x1ZGUpKSAobWV0YSBwMV9fNDI0NzIjKSkpXG4gICAgKGNvbnN0YW50bHkgdHJ1ZSkpXVxuICAoZm4qXG4gICBbcDFfXzQyNDczI11cbiAgIChhbmRcbiAgICAodGVzdC1zcGVjaWZpYyBwMV9fNDI0NzMjKVxuICAgICh0ZXN0LWluY2x1c2lvbiBwMV9fNDI0NzMjKVxuICAgICh0ZXN0LWV4Y2x1c2lvbiBwMV9fNDI0NzMjKSkpKSlcbiJ9IHs6c3ltIGZpbHRlci12YXJzISwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtucy1zeW1zIGZpbHRlci1mbl0pfSwgOnNvdXJjZSAiKGRlZm5cbiBmaWx0ZXItdmFycyFcbiBbbnMtc3ltcyBmaWx0ZXItZm5dXG4gKGRvc2VxXG4gIFtucy1zeW0gbnMtc3ltc11cbiAgKGRvc2VxXG4gICBbW18gdmFyXSBucy1zeW1dXG4gICAod2hlblxuICAgICg6dGVzdCAobWV0YSB2YXIpKVxuICAgICh3aGVuIChub3QgKGZpbHRlci1mbiB2YXIpKSAoc2V0ISAoLi1jbGpzJGxhbmckdGVzdCBAdmFyKSBuaWwpKSkpKSlcbiJ9KSwgY2xvanVyZS50ZXN0LmNoZWNrLmdlbmVyYXRvcnMgKHs6c3ltIGdlbi1mbWFwLCA6bWV0YSB7OmRvYyAiSW50ZXJuYWwgZnVuY3Rpb24uIiwgOmFyZ2xpc3RzIChbayB7aCA6Z2VufV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBnZW4tZm1hcFxuIFwiSW50ZXJuYWwgZnVuY3Rpb24uXCJcbiB7Om5vLWRvYyB0cnVlfVxuIFtrIHtoIDpnZW59XVxuIChtYWtlLWdlbiAoZm4gW3JuZCBzaXplXSAoayAoaCBybmQgc2l6ZSkpKSkpXG4ifSB7OnN5bSB1dWlkLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZlxuIHV1aWRcbiBcIkdlbmVyYXRlcyBhIHJhbmRvbSB0eXBlLTQgVVVJRC4gRG9lcyBub3Qgc2hyaW5rLlwiXG4gKG5vLXNocmlua1xuICAjPyg6Y2xqIChtYWtlLWdlbiAoZm4gW3JuZyBfc2l6ZV0gKGNvcmUvbGV0IFtbcjEgcjJdIChyYW5kb20vc3BsaXQgcm5nKSB4MSAoLT4gKHJhbmRvbS9yYW5kLWxvbmcgcjEpIChiaXQtYW5kIC00NTA1NykgKGJpdC1vciAxNjM4NCkpIHgyICgtPiAocmFuZG9tL3JhbmQtbG9uZyByMikgKGJpdC1vciAtOTIyMzM3MjAzNjg1NDc3NTgwOCkgKGJpdC1hbmQgLTQ2MTE2ODYwMTg0MjczODc5MDUpKV0gKHJvc2UvbWFrZS1yb3NlIChqYXZhLnV0aWwuVVVJRC4geDEgeDIpIFtdKSkpKSA6Y2xqcyAoZm1hcCAoZm4gW25pYmJsZXNdIChsZXRmbiBbKGhleCBbaWR4XSAoLnRvU3RyaW5nIChuaWJibGVzIGlkeCkgMTYpKV0gKGNvcmUvbGV0IFtyaGV4ICgtPiAobmliYmxlcyAxNSkgKGJpdC1hbmQgMykgKCsgOCkgKC50b1N0cmluZyAxNikpXSAoY29yZS91dWlkIChzdHIgKGhleCAwKSAoaGV4IDEpIChoZXggMikgKGhleCAzKSAoaGV4IDQpIChoZXggNSkgKGhleCA2KSAoaGV4IDcpIFwiLVwiIChoZXggOCkgKGhleCA5KSAoaGV4IDEwKSAoaGV4IDExKSBcIi1cIiBcIjRcIiAoaGV4IDEyKSAoaGV4IDEzKSAoaGV4IDE0KSBcIi1cIiByaGV4IChoZXggMTYpIChoZXggMTcpIChoZXggMTgpIFwiLVwiIChoZXggMTkpIChoZXggMjApIChoZXggMjEpIChoZXggMjIpIChoZXggMjMpIChoZXggMjQpIChoZXggMjUpIChoZXggMjYpIChoZXggMjcpIChoZXggMjgpIChoZXggMjkpIChoZXggMzApKSkpKSkgKHZlY3RvciAoY2hvb3NlIDAgMTUpIDMxKSkpKSlcbiJ9IHs6c3ltIHNldCwgOm1ldGEgezpkb2MgIkdlbmVyYXRlcyBhIHNldCBvZiBlbGVtZW50cyBmcm9tIHRoZSBnaXZlbiBnZW5lcmF0b3IuXG5cbiAgSWYgdGhlIGdlbmVyYXRvciBjYW5ub3Qgb3IgaXMgdW5saWtlbHkgdG8gcHJvZHVjZSBlbm91Z2ggZGlzdGluY3RcbiAgZWxlbWVudHMsIHRoaXMgZ2VuZXJhdG9yIHdpbGwgZmFpbCBpbiB0aGUgc2FtZSB3YXkgYXMgYHN1Y2gtdGhhdGAuXG5cbiAgQXZhaWxhYmxlIG9wdGlvbnM6XG5cbiAgICA6bnVtLWVsZW1lbnRzICB0aGUgZml4ZWQgc2l6ZSBvZiBnZW5lcmF0ZWQgc2V0XG4gICAgOm1pbi1lbGVtZW50cyAgdGhlIG1pbiBzaXplIG9mIGdlbmVyYXRlZCBzZXRcbiAgICA6bWF4LWVsZW1lbnRzICB0aGUgbWF4IHNpemUgb2YgZ2VuZXJhdGVkIHNldFxuICAgIDptYXgtdHJpZXMgICAgIHRoZSBudW1iZXIgb2YgdGltZXMgdGhlIGdlbmVyYXRvciB3aWxsIGJlIHRyaWVkIGJlZm9yZVxuICAgICAgICAgICAgICAgICAgIGZhaWxpbmcgd2hlbiBpdCBkb2VzIG5vdCBwcm9kdWNlIGRpc3RpbmN0IGVsZW1lbnRzXG4gICAgICAgICAgICAgICAgICAgKGRlZmF1bHQgMTApXG4gICAgOmV4LWZuICAgICAgICAgYSBmdW5jdGlvbiBvZiBvbmUgYXJnIHRoYXQgd2lsbCBiZSBjYWxsZWQgaWYgdGVzdC5jaGVjayBjYW5ub3RcbiAgICAgICAgICAgICAgICAgICBnZW5lcmF0ZSBlbm91Z2ggZGlzdGluY3QgdmFsdWVzOyBpdCB3aWxsIGJlIHBhc3NlZCBhIG1hcCB3aXRoXG4gICAgICAgICAgICAgICAgICAgYDpnZW5gLCBgOm51bS1lbGVtZW50c2AsIGFuZCBgOm1heC10cmllc2AgYW5kIHNob3VsZCByZXR1cm4gYW5cbiAgICAgICAgICAgICAgICAgICBleGNlcHRpb24iLCA6YXJnbGlzdHMgW1tnZW5dIFtnZW4gb3B0c11dfSwgOnNvdXJjZSAiKGRlZm5cbiBzZXRcbiBcIkdlbmVyYXRlcyBhIHNldCBvZiBlbGVtZW50cyBmcm9tIHRoZSBnaXZlbiBnZW5lcmF0b3IuXFxuXFxuICBJZiB0aGUgZ2VuZXJhdG9yIGNhbm5vdCBvciBpcyB1bmxpa2VseSB0byBwcm9kdWNlIGVub3VnaCBkaXN0aW5jdFxcbiAgZWxlbWVudHMsIHRoaXMgZ2VuZXJhdG9yIHdpbGwgZmFpbCBpbiB0aGUgc2FtZSB3YXkgYXMgYHN1Y2gtdGhhdGAuXFxuXFxuICBBdmFpbGFibGUgb3B0aW9uczpcXG5cXG4gICAgOm51bS1lbGVtZW50cyAgdGhlIGZpeGVkIHNpemUgb2YgZ2VuZXJhdGVkIHNldFxcbiAgICA6bWluLWVsZW1lbnRzICB0aGUgbWluIHNpemUgb2YgZ2VuZXJhdGVkIHNldFxcbiAgICA6bWF4LWVsZW1lbnRzICB0aGUgbWF4IHNpemUgb2YgZ2VuZXJhdGVkIHNldFxcbiAgICA6bWF4LXRyaWVzICAgICB0aGUgbnVtYmVyIG9mIHRpbWVzIHRoZSBnZW5lcmF0b3Igd2lsbCBiZSB0cmllZCBiZWZvcmVcXG4gICAgICAgICAgICAgICAgICAgZmFpbGluZyB3aGVuIGl0IGRvZXMgbm90IHByb2R1Y2UgZGlzdGluY3QgZWxlbWVudHNcXG4gICAgICAgICAgICAgICAgICAgKGRlZmF1bHQgMTApXFxuICAgIDpleC1mbiAgICAgICAgIGEgZnVuY3Rpb24gb2Ygb25lIGFyZyB0aGF0IHdpbGwgYmUgY2FsbGVkIGlmIHRlc3QuY2hlY2sgY2Fubm90XFxuICAgICAgICAgICAgICAgICAgIGdlbmVyYXRlIGVub3VnaCBkaXN0aW5jdCB2YWx1ZXM7IGl0IHdpbGwgYmUgcGFzc2VkIGEgbWFwIHdpdGhcXG4gICAgICAgICAgICAgICAgICAgYDpnZW5gLCBgOm51bS1lbGVtZW50c2AsIGFuZCBgOm1heC10cmllc2AgYW5kIHNob3VsZCByZXR1cm4gYW5cXG4gICAgICAgICAgICAgICAgICAgZXhjZXB0aW9uXCJcbiB7OmFkZGVkIFwiMC45LjBcIn1cbiAoW2dlbl0gKHNldCBnZW4ge30pKVxuIChbZ2VuIG9wdHNdXG4gIChhc3NlcnQgKGdlbmVyYXRvcj8gZ2VuKSBcIkZpcnN0IGFyZyB0byBzZXQgbXVzdCBiZSBhIGdlbmVyYXRvciFcIilcbiAgKGNvbGwtZGlzdGluY3QtYnkgI3t9IGlkZW50aXR5IGZhbHNlIGZhbHNlIGdlbiBvcHRzKSkpXG4ifSB7OnN5bSBvbmUtb2YsIDptZXRhIHs6ZG9jICJDcmVhdGVzIGEgZ2VuZXJhdG9yIHRoYXQgcmFuZG9tbHkgY2hvb3NlcyBhIHZhbHVlIGZyb20gdGhlIGxpc3Qgb2ZcbiAgcHJvdmlkZWQgZ2VuZXJhdG9ycy4gU2hyaW5rcyB0b3dhcmQgY2hvb3NpbmcgYW4gZWFybGllciBnZW5lcmF0b3IsXG4gIGFzIHdlbGwgYXMgc2hyaW5raW5nIHRoZSB2YWx1ZSBnZW5lcmF0ZWQgYnkgdGhlIGNob3NlbiBnZW5lcmF0b3IuXG5cbiAgICAgIChnZW4vc2FtcGxlIChnZW4vb25lLW9mIFtnZW4vc21hbGwtaW50ZWdlciBnZW4vYm9vbGVhbiAoZ2VuL3ZlY3RvciBnZW4vc21hbGwtaW50ZWdlcildKSlcbiAgICAgID0+ICh0cnVlIFtdIC0xIFswXSBbMSAtNCAtNCAxXSB0cnVlIDQgW10gNiB0cnVlKSIsIDphcmdsaXN0cyAoW2dlbmVyYXRvcnNdKX0sIDpzb3VyY2UgIihkZWZuXG4gb25lLW9mXG4gXCJDcmVhdGVzIGEgZ2VuZXJhdG9yIHRoYXQgcmFuZG9tbHkgY2hvb3NlcyBhIHZhbHVlIGZyb20gdGhlIGxpc3Qgb2ZcXG4gIHByb3ZpZGVkIGdlbmVyYXRvcnMuIFNocmlua3MgdG93YXJkIGNob29zaW5nIGFuIGVhcmxpZXIgZ2VuZXJhdG9yLFxcbiAgYXMgd2VsbCBhcyBzaHJpbmtpbmcgdGhlIHZhbHVlIGdlbmVyYXRlZCBieSB0aGUgY2hvc2VuIGdlbmVyYXRvci5cXG5cXG4gICAgICAoZ2VuL3NhbXBsZSAoZ2VuL29uZS1vZiBbZ2VuL3NtYWxsLWludGVnZXIgZ2VuL2Jvb2xlYW4gKGdlbi92ZWN0b3IgZ2VuL3NtYWxsLWludGVnZXIpXSkpXFxuICAgICAgPT4gKHRydWUgW10gLTEgWzBdIFsxIC00IC00IDFdIHRydWUgNCBbXSA2IHRydWUpXCJcbiBbZ2VuZXJhdG9yc11cbiAoYXNzZXJ0XG4gIChldmVyeT8gZ2VuZXJhdG9yPyBnZW5lcmF0b3JzKVxuICBcIkFyZyB0byBvbmUtb2YgbXVzdCBiZSBhIGNvbGxlY3Rpb24gb2YgZ2VuZXJhdG9yc1wiKVxuIChhc3NlcnRcbiAgKHNlcSBnZW5lcmF0b3JzKVxuICBcIm9uZS1vZiBjYW5ub3QgYmUgY2FsbGVkIHdpdGggYW4gZW1wdHkgY29sbGVjdGlvblwiKVxuIChiaW5kXG4gIChjaG9vc2UgMCAoZGVjIChjb3VudCBnZW5lcmF0b3JzKSkpXG4gIChmbiogW3AxX180MjQxNCNdIChudGggZ2VuZXJhdG9ycyBwMV9fNDI0MTQjKSkpKVxuIn0gezpzeW0gYW55LXByaW50YWJsZSwgOm1ldGEge30sIDpzb3VyY2UgIihkZWZcbiBhbnktcHJpbnRhYmxlXG4gXCJMaWtlIGFueSwgYnV0IGF2b2lkcyBjaGFyYWN0ZXJzIHRoYXQgdGhlIHNoZWxsIHdpbGwgaW50ZXJwcmV0IGFzIGFjdGlvbnMsXFxuICBsaWtlIDcgYW5kIDE0IChiZWxsIGFuZCBhbHRlcm5hdGUgY2hhcmFjdGVyIHNldCBjb21tYW5kKVwiXG4gKHJlY3Vyc2l2ZS1nZW4gY29udGFpbmVyLXR5cGUgc2ltcGxlLXR5cGUtcHJpbnRhYmxlKSlcbiJ9IHs6c3ltIHZlY3Rvci1kaXN0aW5jdCwgOm1ldGEgezpkb2MgIkdlbmVyYXRlcyBhIHZlY3RvciBvZiBlbGVtZW50cyBmcm9tIHRoZSBnaXZlbiBnZW5lcmF0b3IsIHdpdGggdGhlXG4gIGd1YXJhbnRlZSB0aGF0IHRoZSBlbGVtZW50cyB3aWxsIGJlIGRpc3RpbmN0LlxuXG4gIElmIHRoZSBnZW5lcmF0b3IgY2Fubm90IG9yIGlzIHVubGlrZWx5IHRvIHByb2R1Y2UgZW5vdWdoIGRpc3RpbmN0XG4gIGVsZW1lbnRzLCB0aGlzIGdlbmVyYXRvciB3aWxsIGZhaWwgaW4gdGhlIHNhbWUgd2F5IGFzIGBzdWNoLXRoYXRgLlxuXG4gIEF2YWlsYWJsZSBvcHRpb25zOlxuXG4gICAgOm51bS1lbGVtZW50cyAgdGhlIGZpeGVkIHNpemUgb2YgZ2VuZXJhdGVkIHZlY3RvcnNcbiAgICA6bWluLWVsZW1lbnRzICB0aGUgbWluIHNpemUgb2YgZ2VuZXJhdGVkIHZlY3RvcnNcbiAgICA6bWF4LWVsZW1lbnRzICB0aGUgbWF4IHNpemUgb2YgZ2VuZXJhdGVkIHZlY3RvcnNcbiAgICA6bWF4LXRyaWVzICAgICB0aGUgbnVtYmVyIG9mIHRpbWVzIHRoZSBnZW5lcmF0b3Igd2lsbCBiZSB0cmllZCBiZWZvcmVcbiAgICAgICAgICAgICAgICAgICBmYWlsaW5nIHdoZW4gaXQgZG9lcyBub3QgcHJvZHVjZSBkaXN0aW5jdCBlbGVtZW50c1xuICAgICAgICAgICAgICAgICAgIChkZWZhdWx0IDEwKVxuICAgIDpleC1mbiAgICAgICAgIGEgZnVuY3Rpb24gb2Ygb25lIGFyZyB0aGF0IHdpbGwgYmUgY2FsbGVkIGlmIHRlc3QuY2hlY2sgY2Fubm90XG4gICAgICAgICAgICAgICAgICAgZ2VuZXJhdGUgZW5vdWdoIGRpc3RpbmN0IHZhbHVlczsgaXQgd2lsbCBiZSBwYXNzZWQgYSBtYXAgd2l0aFxuICAgICAgICAgICAgICAgICAgIGA6Z2VuYCwgYDpudW0tZWxlbWVudHNgLCBhbmQgYDptYXgtdHJpZXNgIGFuZCBzaG91bGQgcmV0dXJuIGFuXG4gICAgICAgICAgICAgICAgICAgZXhjZXB0aW9uIiwgOmFyZ2xpc3RzIFtbZ2VuXSBbZ2VuIG9wdHNdXX0sIDpzb3VyY2UgIihkZWZuXG4gdmVjdG9yLWRpc3RpbmN0XG4gXCJHZW5lcmF0ZXMgYSB2ZWN0b3Igb2YgZWxlbWVudHMgZnJvbSB0aGUgZ2l2ZW4gZ2VuZXJhdG9yLCB3aXRoIHRoZVxcbiAgZ3VhcmFudGVlIHRoYXQgdGhlIGVsZW1lbnRzIHdpbGwgYmUgZGlzdGluY3QuXFxuXFxuICBJZiB0aGUgZ2VuZXJhdG9yIGNhbm5vdCBvciBpcyB1bmxpa2VseSB0byBwcm9kdWNlIGVub3VnaCBkaXN0aW5jdFxcbiAgZWxlbWVudHMsIHRoaXMgZ2VuZXJhdG9yIHdpbGwgZmFpbCBpbiB0aGUgc2FtZSB3YXkgYXMgYHN1Y2gtdGhhdGAuXFxuXFxuICBBdmFpbGFibGUgb3B0aW9uczpcXG5cXG4gICAgOm51bS1lbGVtZW50cyAgdGhlIGZpeGVkIHNpemUgb2YgZ2VuZXJhdGVkIHZlY3RvcnNcXG4gICAgOm1pbi1lbGVtZW50cyAgdGhlIG1pbiBzaXplIG9mIGdlbmVyYXRlZCB2ZWN0b3JzXFxuICAgIDptYXgtZWxlbWVudHMgIHRoZSBtYXggc2l6ZSBvZiBnZW5lcmF0ZWQgdmVjdG9yc1xcbiAgICA6bWF4LXRyaWVzICAgICB0aGUgbnVtYmVyIG9mIHRpbWVzIHRoZSBnZW5lcmF0b3Igd2lsbCBiZSB0cmllZCBiZWZvcmVcXG4gICAgICAgICAgICAgICAgICAgZmFpbGluZyB3aGVuIGl0IGRvZXMgbm90IHByb2R1Y2UgZGlzdGluY3QgZWxlbWVudHNcXG4gICAgICAgICAgICAgICAgICAgKGRlZmF1bHQgMTApXFxuICAgIDpleC1mbiAgICAgICAgIGEgZnVuY3Rpb24gb2Ygb25lIGFyZyB0aGF0IHdpbGwgYmUgY2FsbGVkIGlmIHRlc3QuY2hlY2sgY2Fubm90XFxuICAgICAgICAgICAgICAgICAgIGdlbmVyYXRlIGVub3VnaCBkaXN0aW5jdCB2YWx1ZXM7IGl0IHdpbGwgYmUgcGFzc2VkIGEgbWFwIHdpdGhcXG4gICAgICAgICAgICAgICAgICAgYDpnZW5gLCBgOm51bS1lbGVtZW50c2AsIGFuZCBgOm1heC10cmllc2AgYW5kIHNob3VsZCByZXR1cm4gYW5cXG4gICAgICAgICAgICAgICAgICAgZXhjZXB0aW9uXCJcbiB7OmFkZGVkIFwiMC45LjBcIn1cbiAoW2dlbl0gKHZlY3Rvci1kaXN0aW5jdCBnZW4ge30pKVxuIChbZ2VuIG9wdHNdXG4gIChhc3NlcnRcbiAgIChnZW5lcmF0b3I/IGdlbilcbiAgIFwiRmlyc3QgYXJnIHRvIHZlY3Rvci1kaXN0aW5jdCBtdXN0IGJlIGEgZ2VuZXJhdG9yIVwiKVxuICAoY29sbC1kaXN0aW5jdC1ieSBbXSBpZGVudGl0eSB0cnVlIHRydWUgZ2VuIG9wdHMpKSlcbiJ9IHs6c3ltIGJvb2xlYW4sIDptZXRhIHt9LCA6c291cmNlICIoZGVmXG4gYm9vbGVhblxuIFwiR2VuZXJhdGVzIG9uZSBvZiBgdHJ1ZWAgb3IgYGZhbHNlYC4gU2hyaW5rcyB0byBgZmFsc2VgLlwiXG4gKGVsZW1lbnRzIFtmYWxzZSB0cnVlXSkpXG4ifSB7OnN5bSBsaXN0LWRpc3RpbmN0LCA6bWV0YSB7OmRvYyAiR2VuZXJhdGVzIGEgbGlzdCBvZiBlbGVtZW50cyBmcm9tIHRoZSBnaXZlbiBnZW5lcmF0b3IsIHdpdGggdGhlXG4gIGd1YXJhbnRlZSB0aGF0IHRoZSBlbGVtZW50cyB3aWxsIGJlIGRpc3RpbmN0LlxuXG4gIElmIHRoZSBnZW5lcmF0b3IgY2Fubm90IG9yIGlzIHVubGlrZWx5IHRvIHByb2R1Y2UgZW5vdWdoIGRpc3RpbmN0XG4gIGVsZW1lbnRzLCB0aGlzIGdlbmVyYXRvciB3aWxsIGZhaWwgaW4gdGhlIHNhbWUgd2F5IGFzIGBzdWNoLXRoYXRgLlxuXG4gIEF2YWlsYWJsZSBvcHRpb25zOlxuXG4gICAgOm51bS1lbGVtZW50cyAgdGhlIGZpeGVkIHNpemUgb2YgZ2VuZXJhdGVkIGxpc3RcbiAgICA6bWluLWVsZW1lbnRzICB0aGUgbWluIHNpemUgb2YgZ2VuZXJhdGVkIGxpc3RcbiAgICA6bWF4LWVsZW1lbnRzICB0aGUgbWF4IHNpemUgb2YgZ2VuZXJhdGVkIGxpc3RcbiAgICA6bWF4LXRyaWVzICAgICB0aGUgbnVtYmVyIG9mIHRpbWVzIHRoZSBnZW5lcmF0b3Igd2lsbCBiZSB0cmllZCBiZWZvcmVcbiAgICAgICAgICAgICAgICAgICBmYWlsaW5nIHdoZW4gaXQgZG9lcyBub3QgcHJvZHVjZSBkaXN0aW5jdCBlbGVtZW50c1xuICAgICAgICAgICAgICAgICAgIChkZWZhdWx0IDEwKVxuICAgIDpleC1mbiAgICAgICAgIGEgZnVuY3Rpb24gb2Ygb25lIGFyZyB0aGF0IHdpbGwgYmUgY2FsbGVkIGlmIHRlc3QuY2hlY2sgY2Fubm90XG4gICAgICAgICAgICAgICAgICAgZ2VuZXJhdGUgZW5vdWdoIGRpc3RpbmN0IHZhbHVlczsgaXQgd2lsbCBiZSBwYXNzZWQgYSBtYXAgd2l0aFxuICAgICAgICAgICAgICAgICAgIGA6Z2VuYCwgYDpudW0tZWxlbWVudHNgLCBhbmQgYDptYXgtdHJpZXNgIGFuZCBzaG91bGQgcmV0dXJuIGFuXG4gICAgICAgICAgICAgICAgICAgZXhjZXB0aW9uIiwgOmFyZ2xpc3RzIFtbZ2VuXSBbZ2VuIG9wdHNdXX0sIDpzb3VyY2UgIihkZWZuXG4gbGlzdC1kaXN0aW5jdFxuIFwiR2VuZXJhdGVzIGEgbGlzdCBvZiBlbGVtZW50cyBmcm9tIHRoZSBnaXZlbiBnZW5lcmF0b3IsIHdpdGggdGhlXFxuICBndWFyYW50ZWUgdGhhdCB0aGUgZWxlbWVudHMgd2lsbCBiZSBkaXN0aW5jdC5cXG5cXG4gIElmIHRoZSBnZW5lcmF0b3IgY2Fubm90IG9yIGlzIHVubGlrZWx5IHRvIHByb2R1Y2UgZW5vdWdoIGRpc3RpbmN0XFxuICBlbGVtZW50cywgdGhpcyBnZW5lcmF0b3Igd2lsbCBmYWlsIGluIHRoZSBzYW1lIHdheSBhcyBgc3VjaC10aGF0YC5cXG5cXG4gIEF2YWlsYWJsZSBvcHRpb25zOlxcblxcbiAgICA6bnVtLWVsZW1lbnRzICB0aGUgZml4ZWQgc2l6ZSBvZiBnZW5lcmF0ZWQgbGlzdFxcbiAgICA6bWluLWVsZW1lbnRzICB0aGUgbWluIHNpemUgb2YgZ2VuZXJhdGVkIGxpc3RcXG4gICAgOm1heC1lbGVtZW50cyAgdGhlIG1heCBzaXplIG9mIGdlbmVyYXRlZCBsaXN0XFxuICAgIDptYXgtdHJpZXMgICAgIHRoZSBudW1iZXIgb2YgdGltZXMgdGhlIGdlbmVyYXRvciB3aWxsIGJlIHRyaWVkIGJlZm9yZVxcbiAgICAgICAgICAgICAgICAgICBmYWlsaW5nIHdoZW4gaXQgZG9lcyBub3QgcHJvZHVjZSBkaXN0aW5jdCBlbGVtZW50c1xcbiAgICAgICAgICAgICAgICAgICAoZGVmYXVsdCAxMClcXG4gICAgOmV4LWZuICAgICAgICAgYSBmdW5jdGlvbiBvZiBvbmUgYXJnIHRoYXQgd2lsbCBiZSBjYWxsZWQgaWYgdGVzdC5jaGVjayBjYW5ub3RcXG4gICAgICAgICAgICAgICAgICAgZ2VuZXJhdGUgZW5vdWdoIGRpc3RpbmN0IHZhbHVlczsgaXQgd2lsbCBiZSBwYXNzZWQgYSBtYXAgd2l0aFxcbiAgICAgICAgICAgICAgICAgICBgOmdlbmAsIGA6bnVtLWVsZW1lbnRzYCwgYW5kIGA6bWF4LXRyaWVzYCBhbmQgc2hvdWxkIHJldHVybiBhblxcbiAgICAgICAgICAgICAgICAgICBleGNlcHRpb25cIlxuIHs6YWRkZWQgXCIwLjkuMFwifVxuIChbZ2VuXSAobGlzdC1kaXN0aW5jdCBnZW4ge30pKVxuIChbZ2VuIG9wdHNdXG4gIChhc3NlcnRcbiAgIChnZW5lcmF0b3I/IGdlbilcbiAgIFwiRmlyc3QgYXJnIHRvIGxpc3QtZGlzdGluY3QgbXVzdCBiZSBhIGdlbmVyYXRvciFcIilcbiAgKGNvbGwtZGlzdGluY3QtYnkgKCkgaWRlbnRpdHkgdHJ1ZSB0cnVlIGdlbiBvcHRzKSkpXG4ifSB7OnN5bSBzdHJpbmctYWxwaGFudW1lcmljLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZlxuIHN0cmluZy1hbHBoYW51bWVyaWNcbiBcIkdlbmVyYXRlcyBhbHBoYW51bWVyaWMgc3RyaW5ncy5cIlxuIChmbWFwIGNsb2p1cmUuc3RyaW5nL2pvaW4gKHZlY3RvciBjaGFyLWFscGhhbnVtZXJpYykpKVxuIn0gezpzeW0gbWFwLCA6bWV0YSB7OmRvYyAiQ3JlYXRlcyBhIGdlbmVyYXRvciB0aGF0IGdlbmVyYXRlcyBtYXBzLCB3aXRoIGtleXMgY2hvc2VuIGZyb21cbiAgYGtleS1nZW5gIGFuZCB2YWx1ZXMgY2hvc2VuIGZyb20gYHZhbC1nZW5gLlxuXG4gIElmIHRoZSBrZXkgZ2VuZXJhdG9yIGNhbm5vdCBvciBpcyB1bmxpa2VseSB0byBwcm9kdWNlIGVub3VnaCBkaXN0aW5jdFxuICBlbGVtZW50cywgdGhpcyBnZW5lcmF0b3Igd2lsbCBmYWlsIGluIHRoZSBzYW1lIHdheSBhcyBgc3VjaC10aGF0YC5cblxuICBBdmFpbGFibGUgb3B0aW9uczpcblxuICAgIDpudW0tZWxlbWVudHMgIHRoZSBmaXhlZCBzaXplIG9mIGdlbmVyYXRlZCBtYXBzXG4gICAgOm1pbi1lbGVtZW50cyAgdGhlIG1pbiBzaXplIG9mIGdlbmVyYXRlZCBtYXBzXG4gICAgOm1heC1lbGVtZW50cyAgdGhlIG1heCBzaXplIG9mIGdlbmVyYXRlZCBtYXBzXG4gICAgOm1heC10cmllcyAgICAgdGhlIG51bWJlciBvZiB0aW1lcyB0aGUgZ2VuZXJhdG9yIHdpbGwgYmUgdHJpZWQgYmVmb3JlXG4gICAgICAgICAgICAgICAgICAgZmFpbGluZyB3aGVuIGl0IGRvZXMgbm90IHByb2R1Y2UgZGlzdGluY3QgZWxlbWVudHNcbiAgICAgICAgICAgICAgICAgICAoZGVmYXVsdCAxMClcbiAgICA6ZXgtZm4gICAgICAgICBhIGZ1bmN0aW9uIG9mIG9uZSBhcmcgdGhhdCB3aWxsIGJlIGNhbGxlZCBpZiB0ZXN0LmNoZWNrIGNhbm5vdFxuICAgICAgICAgICAgICAgICAgIGdlbmVyYXRlIGVub3VnaCBkaXN0aW5jdCBrZXlzOyBpdCB3aWxsIGJlIHBhc3NlZCBhIG1hcCB3aXRoXG4gICAgICAgICAgICAgICAgICAgYDpnZW5gICh0aGUga2V5LWdlbiksIGA6bnVtLWVsZW1lbnRzYCwgYW5kIGA6bWF4LXRyaWVzYCBhbmRcbiAgICAgICAgICAgICAgICAgICBzaG91bGQgcmV0dXJuIGFuIGV4Y2VwdGlvbiIsIDphcmdsaXN0cyBbW2tleS1nZW4gdmFsLWdlbl0gW2tleS1nZW4gdmFsLWdlbiBvcHRzXV19LCA6c291cmNlICIoZGVmblxuIG1hcFxuIFwiQ3JlYXRlcyBhIGdlbmVyYXRvciB0aGF0IGdlbmVyYXRlcyBtYXBzLCB3aXRoIGtleXMgY2hvc2VuIGZyb21cXG4gIGBrZXktZ2VuYCBhbmQgdmFsdWVzIGNob3NlbiBmcm9tIGB2YWwtZ2VuYC5cXG5cXG4gIElmIHRoZSBrZXkgZ2VuZXJhdG9yIGNhbm5vdCBvciBpcyB1bmxpa2VseSB0byBwcm9kdWNlIGVub3VnaCBkaXN0aW5jdFxcbiAgZWxlbWVudHMsIHRoaXMgZ2VuZXJhdG9yIHdpbGwgZmFpbCBpbiB0aGUgc2FtZSB3YXkgYXMgYHN1Y2gtdGhhdGAuXFxuXFxuICBBdmFpbGFibGUgb3B0aW9uczpcXG5cXG4gICAgOm51bS1lbGVtZW50cyAgdGhlIGZpeGVkIHNpemUgb2YgZ2VuZXJhdGVkIG1hcHNcXG4gICAgOm1pbi1lbGVtZW50cyAgdGhlIG1pbiBzaXplIG9mIGdlbmVyYXRlZCBtYXBzXFxuICAgIDptYXgtZWxlbWVudHMgIHRoZSBtYXggc2l6ZSBvZiBnZW5lcmF0ZWQgbWFwc1xcbiAgICA6bWF4LXRyaWVzICAgICB0aGUgbnVtYmVyIG9mIHRpbWVzIHRoZSBnZW5lcmF0b3Igd2lsbCBiZSB0cmllZCBiZWZvcmVcXG4gICAgICAgICAgICAgICAgICAgZmFpbGluZyB3aGVuIGl0IGRvZXMgbm90IHByb2R1Y2UgZGlzdGluY3QgZWxlbWVudHNcXG4gICAgICAgICAgICAgICAgICAgKGRlZmF1bHQgMTApXFxuICAgIDpleC1mbiAgICAgICAgIGEgZnVuY3Rpb24gb2Ygb25lIGFyZyB0aGF0IHdpbGwgYmUgY2FsbGVkIGlmIHRlc3QuY2hlY2sgY2Fubm90XFxuICAgICAgICAgICAgICAgICAgIGdlbmVyYXRlIGVub3VnaCBkaXN0aW5jdCBrZXlzOyBpdCB3aWxsIGJlIHBhc3NlZCBhIG1hcCB3aXRoXFxuICAgICAgICAgICAgICAgICAgIGA6Z2VuYCAodGhlIGtleS1nZW4pLCBgOm51bS1lbGVtZW50c2AsIGFuZCBgOm1heC10cmllc2AgYW5kXFxuICAgICAgICAgICAgICAgICAgIHNob3VsZCByZXR1cm4gYW4gZXhjZXB0aW9uXCJcbiAoW2tleS1nZW4gdmFsLWdlbl0gKG1hcCBrZXktZ2VuIHZhbC1nZW4ge30pKVxuIChba2V5LWdlbiB2YWwtZ2VuIG9wdHNdXG4gIChjb2xsLWRpc3RpbmN0LWJ5IHt9IGZpcnN0IGZhbHNlIGZhbHNlICh0dXBsZSBrZXktZ2VuIHZhbC1nZW4pIG9wdHMpKSlcbiJ9IHs6c3ltIHNpbXBsZS10eXBlLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZlxuIHNpbXBsZS10eXBlXG4gXCJHZW5lcmF0ZXMgYSB2YXJpZXR5IG9mIHNjYWxhciB0eXBlcy5cIlxuIChiYXNlLXNpbXBsZS10eXBlIGRvdWJsZSBjaGFyIHN0cmluZykpXG4ifSB7OnN5bSBjaGFyLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZlxuIGNoYXJcbiBcIkdlbmVyYXRlcyBjaGFyYWN0ZXIgZnJvbSAwLTI1NS5cIlxuIChmbWFwIGNvcmUvY2hhciAoY2hvb3NlIDAgMjU1KSkpXG4ifSB7OnN5bSBhbnktZXF1YXRhYmxlLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZlxuIGFueS1lcXVhdGFibGVcbiBcIkxpa2UgYW55LCBidXQgb25seSBnZW5lcmF0ZXMgb2JqZWN0cyB0aGF0IGNhbiBiZSBlcXVhbCB0byBvdGhlciBvYmplY3RzIChlLmcuLCBkb1xcbiAgbm90IGNvbnRhaW4gYSBOYU4pXCJcbiAocmVjdXJzaXZlLWdlbiBjb250YWluZXItdHlwZSBzaW1wbGUtdHlwZS1lcXVhdGFibGUpKVxuIn0gezpzeW0gcG9zLWludCwgOm1ldGEge30sIDpzb3VyY2UgIihkZWZcbiBwb3MtaW50XG4gXCJEZXByZWNhdGVkIC0gdXNlIGdlbi9uYXQgaW5zdGVhZCAoc2VlIGFsc28gZ2VuL2xhcmdlLWludGVnZXIpLlxcblxcbiAgKHRoaXMgZ2VuZXJhdG9yLCBkZXNwaXRlIGl0cyBuYW1lLCBjYW4gZ2VuZXJhdGUgMClcXG5cXG4gIEdlbmVyYXRlcyBub25uZWdhdGl2ZSBpbnRlZ2VycyBib3VuZGVkIGJ5IHRoZSBnZW5lcmF0b3IncyBgc2l6ZWAgcGFyYW1ldGVyLlwiXG4gbmF0KVxuIn0gezpzeW0gYmluZCwgOm1ldGEgezpkb2MgIkNyZWF0ZXMgYSBuZXcgZ2VuZXJhdG9yIHRoYXQgcGFzc2VzIHRoZSByZXN1bHQgb2YgYGdlbmAgaW50byBmdW5jdGlvblxuICBgZmAuIGBmYCBzaG91bGQgcmV0dXJuIGEgbmV3IGdlbmVyYXRvci4gVGhpcyBhbGxvd3MgeW91IHRvIGNyZWF0ZSBuZXdcbiAgZ2VuZXJhdG9ycyB0aGF0IGRlcGVuZCBvbiB0aGUgdmFsdWUgb2Ygb3RoZXIgZ2VuZXJhdG9ycy4gRm9yIGV4YW1wbGUsXG4gIHRvIGNyZWF0ZSBhIGdlbmVyYXRvciBvZiBwZXJtdXRhdGlvbnMgd2hpY2ggZmlyc3QgZ2VuZXJhdGVzIGFcbiAgYG51bS1lbGVtZW50c2AgYW5kIHRoZW4gZ2VuZXJhdGVzIGEgc2h1ZmZsaW5nIG9mIGAocmFuZ2UgbnVtLWVsZW1lbnRzKWA6XG5cbiAgICAgIChnZW4vYmluZCBnZW4vbmF0XG4gICAgICAgICAgICAgICAgOzsgdGhpcyBmdW5jdGlvbiB0YWtlcyBhIHZhbHVlIGdlbmVyYXRlZCBieVxuICAgICAgICAgICAgICAgIDs7IHRoZSBnZW5lcmF0b3IgYWJvdmUgYW5kIHJldHVybnMgYSBuZXcgZ2VuZXJhdG9yXG4gICAgICAgICAgICAgICAgOzsgd2hpY2ggc2h1ZmZsZXMgdGhlIGNvbGxlY3Rpb24gcmV0dXJuZWQgYnkgYHJhbmdlYFxuICAgICAgICAgICAgICAgIChmbiBbbnVtLWVsZW1lbnRzXVxuICAgICAgICAgICAgICAgICAgKGdlbi9zaHVmZmxlIChyYW5nZSBudW0tZWxlbWVudHMpKSkpXG5cbiAgQWxzbyBzZWUgZ2VuL2xldCBmb3IgYSBtYWNybyB3aXRoIHNpbWlsYXIgZnVuY3Rpb25hbGl0eS4iLCA6YXJnbGlzdHMgKFtnZW5lcmF0b3IgZl0pfSwgOnNvdXJjZSAiKGRlZm5cbiBiaW5kXG4gXCJDcmVhdGVzIGEgbmV3IGdlbmVyYXRvciB0aGF0IHBhc3NlcyB0aGUgcmVzdWx0IG9mIGBnZW5gIGludG8gZnVuY3Rpb25cXG4gIGBmYC4gYGZgIHNob3VsZCByZXR1cm4gYSBuZXcgZ2VuZXJhdG9yLiBUaGlzIGFsbG93cyB5b3UgdG8gY3JlYXRlIG5ld1xcbiAgZ2VuZXJhdG9ycyB0aGF0IGRlcGVuZCBvbiB0aGUgdmFsdWUgb2Ygb3RoZXIgZ2VuZXJhdG9ycy4gRm9yIGV4YW1wbGUsXFxuICB0byBjcmVhdGUgYSBnZW5lcmF0b3Igb2YgcGVybXV0YXRpb25zIHdoaWNoIGZpcnN0IGdlbmVyYXRlcyBhXFxuICBgbnVtLWVsZW1lbnRzYCBhbmQgdGhlbiBnZW5lcmF0ZXMgYSBzaHVmZmxpbmcgb2YgYChyYW5nZSBudW0tZWxlbWVudHMpYDpcXG5cXG4gICAgICAoZ2VuL2JpbmQgZ2VuL25hdFxcbiAgICAgICAgICAgICAgICA7OyB0aGlzIGZ1bmN0aW9uIHRha2VzIGEgdmFsdWUgZ2VuZXJhdGVkIGJ5XFxuICAgICAgICAgICAgICAgIDs7IHRoZSBnZW5lcmF0b3IgYWJvdmUgYW5kIHJldHVybnMgYSBuZXcgZ2VuZXJhdG9yXFxuICAgICAgICAgICAgICAgIDs7IHdoaWNoIHNodWZmbGVzIHRoZSBjb2xsZWN0aW9uIHJldHVybmVkIGJ5IGByYW5nZWBcXG4gICAgICAgICAgICAgICAgKGZuIFtudW0tZWxlbWVudHNdXFxuICAgICAgICAgICAgICAgICAgKGdlbi9zaHVmZmxlIChyYW5nZSBudW0tZWxlbWVudHMpKSkpXFxuXFxuICBBbHNvIHNlZSBnZW4vbGV0IGZvciBhIG1hY3JvIHdpdGggc2ltaWxhciBmdW5jdGlvbmFsaXR5LlwiXG4gW2dlbmVyYXRvciBmXVxuIChhc3NlcnRcbiAgKGdlbmVyYXRvcj8gZ2VuZXJhdG9yKVxuICBcIkZpcnN0IGFyZyB0byBiaW5kIG11c3QgYmUgYSBnZW5lcmF0b3JcIilcbiAoZ2VuLWJpbmQgZ2VuZXJhdG9yIChiaW5kLWhlbHBlciBmKSkpXG4ifSB7OnN5bSBzeW1ib2wtbnMsIDptZXRhIHt9LCA6c291cmNlICIoZGVmXG4gc3ltYm9sLW5zXG4gXCJHZW5lcmF0ZXMgc3ltYm9scyB3aXRoIG5hbWVzcGFjZXMuXCJcbiAoLT4+XG4gICh0dXBsZSBzeW1ib2wtbmFtZS1vci1uYW1lc3BhY2Ugc3ltYm9sLW5hbWUtb3ItbmFtZXNwYWNlKVxuICAoZm1hcCAoZm4gW1tucyBuYW1lXV0gKGNvcmUvc3ltYm9sIG5zIG5hbWUpKSlcbiAgKHJlc2l6ZS1zeW1ib2xpc2gtZ2VuZXJhdG9yKSkpXG4ifSB7OnN5bSBhbnksIDptZXRhIHt9LCA6c291cmNlICIoZGVmXG4gYW55XG4gXCJBIHJlY3Vyc2l2ZSBnZW5lcmF0b3IgdGhhdCB3aWxsIGdlbmVyYXRlIG1hbnkgZGlmZmVyZW50LCBvZnRlbiBuZXN0ZWQsIHZhbHVlc1wiXG4gKHJlY3Vyc2l2ZS1nZW4gY29udGFpbmVyLXR5cGUgc2ltcGxlLXR5cGUpKVxuIn0gezpzeW0gc2h1ZmZsZSwgOm1ldGEgezpkb2MgIkNyZWF0ZXMgYSBnZW5lcmF0b3IgdGhhdCBnZW5lcmF0ZXMgcmFuZG9tIHBlcm11dGF0aW9ucyBvZlxuICBgY29sbGAuIFNocmlua3MgdG93YXJkIHRoZSBvcmlnaW5hbCBjb2xsZWN0aW9uOiBgY29sbGAuIGBjb2xsYCB3aWxsXG4gIGJlIGNvZXJjZWQgdG8gYSB2ZWN0b3IuIiwgOmFyZ2xpc3RzIChbY29sbF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBzaHVmZmxlXG4gXCJDcmVhdGVzIGEgZ2VuZXJhdG9yIHRoYXQgZ2VuZXJhdGVzIHJhbmRvbSBwZXJtdXRhdGlvbnMgb2ZcXG4gIGBjb2xsYC4gU2hyaW5rcyB0b3dhcmQgdGhlIG9yaWdpbmFsIGNvbGxlY3Rpb246IGBjb2xsYC4gYGNvbGxgIHdpbGxcXG4gIGJlIGNvZXJjZWQgdG8gYSB2ZWN0b3IuXCJcbiBbY29sbF1cbiAoY29yZS9sZXRcbiAgW2NvbGxcbiAgIChpZiAodmVjdG9yPyBjb2xsKSBjb2xsICh2ZWMgY29sbCkpXG4gICBpbmRleC1nZW5cbiAgIChjaG9vc2UgMCAoZGVjIChjb3VudCBjb2xsKSkpXVxuICAoZm1hcFxuICAgKGZuKiBbcDFfXzQyNDIxI10gKHJlZHVjZSBzd2FwIGNvbGwgcDFfXzQyNDIxIykpXG4gICAodmVjdG9yICh0dXBsZSBpbmRleC1nZW4gaW5kZXgtZ2VuKSAwICgqIDIgKGNvdW50IGNvbGwpKSkpKSlcbiJ9IHs6c3ltIGNvbnRhaW5lci10eXBlLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2lubmVyLXR5cGVdKX0sIDpzb3VyY2UgIihkZWZuXG4gY29udGFpbmVyLXR5cGVcbiBbaW5uZXItdHlwZV1cbiAob25lLW9mXG4gIFsodmVjdG9yIGlubmVyLXR5cGUpXG4gICAobGlzdCBpbm5lci10eXBlKVxuICAgKHNldCAjPyg6Y2xqIGlubmVyLXR5cGUgOmNsanMgKHN1Y2gtdGhhdCBoYXNoYWJsZT8gaW5uZXItdHlwZSkpKVxuICAgKHNjYWxlXG4gICAgKGZuKiBbcDFfXzQyNDM5I10gKHF1b3QgcDFfXzQyNDM5IyAyKSlcbiAgICAobWFwXG4gICAgICM/KDpjbGogaW5uZXItdHlwZSA6Y2xqcyAoc3VjaC10aGF0IGhhc2hhYmxlPyBpbm5lci10eXBlKSlcbiAgICAgaW5uZXItdHlwZSkpXSkpXG4ifSB7OnN5bSBzLXBvcy1pbnQsIDptZXRhIHt9LCA6c291cmNlICIoZGVmXG4gcy1wb3MtaW50XG4gXCJEZXByZWNhdGVkIC0gdXNlIChnZW4vZm1hcCBpbmMgZ2VuL25hdCkgaW5zdGVhZCAoc2VlIGFsc28gZ2VuL2xhcmdlLWludGVnZXIpLlxcblxcbiAgR2VuZXJhdGVzIHBvc2l0aXZlIGludGVnZXJzIGJvdW5kZWQgYnkgdGhlIGdlbmVyYXRvcidzIGBzaXplYCArIDFcIlxuIChmbWFwIGluYyBuYXQpKVxuIn0gezpzeW0gYW55LXByaW50YWJsZS1lcXVhdGFibGUsIDptZXRhIHt9LCA6c291cmNlICIoZGVmXG4gYW55LXByaW50YWJsZS1lcXVhdGFibGVcbiBcIkxpa2UgYW55LCBidXQgYXZvaWRzIGNoYXJhY3RlcnMgdGhhdCB0aGUgc2hlbGwgd2lsbCBpbnRlcnByZXQgYXMgYWN0aW9ucyxcXG4gIGxpa2UgNyBhbmQgMTQgKGJlbGwgYW5kIGFsdGVybmF0ZSBjaGFyYWN0ZXIgc2V0IGNvbW1hbmQpLCBhbmQgb25seSBnZW5lcmF0ZXNcXG4gIG9iamVjdHMgdGhhdCBjYW4gYmUgZXF1YWwgdG8gb3RoZXIgb2JqZWN0cyAoZS5nLiwgZG8gbm90IGNvbnRhaW4gYSBOYU4pXCJcbiAocmVjdXJzaXZlLWdlbiBjb250YWluZXItdHlwZSBzaW1wbGUtdHlwZS1wcmludGFibGUtZXF1YXRhYmxlKSlcbiJ9IHs6c3ltIGRvdWJsZSwgOm1ldGEge30sIDpzb3VyY2UgIihkZWZcbiBkb3VibGVcbiBcIkdlbmVyYXRlcyA2NC1iaXQgZmxvYXRpbmcgcG9pbnQgbnVtYmVycyBmcm9tIHRoZSBlbnRpcmUgcmFuZ2UsXFxuICBpbmNsdWRpbmcgKy8tIGluZmluaXR5IGFuZCBOYU4uIFVzZSBkb3VibGUqIGZvciBtb3JlIGNvbnRyb2wuXCJcbiAoZG91YmxlKiB7fSkpXG4ifSB7OnN5bSBsaXN0LWRpc3RpbmN0LWJ5LCA6bWV0YSB7OmRvYyAiR2VuZXJhdGVzIGEgbGlzdCBvZiBlbGVtZW50cyBmcm9tIHRoZSBnaXZlbiBnZW5lcmF0b3IsIHdpdGggdGhlXG4gIGd1YXJhbnRlZSB0aGF0IChtYXAga2V5LWZuIHRoZS1saXN0KSB3aWxsIGJlIGRpc3RpbmN0LlxuXG4gIElmIHRoZSBnZW5lcmF0b3IgY2Fubm90IG9yIGlzIHVubGlrZWx5IHRvIHByb2R1Y2UgZW5vdWdoIGRpc3RpbmN0XG4gIGVsZW1lbnRzLCB0aGlzIGdlbmVyYXRvciB3aWxsIGZhaWwgaW4gdGhlIHNhbWUgd2F5IGFzIGBzdWNoLXRoYXRgLlxuXG4gIEF2YWlsYWJsZSBvcHRpb25zOlxuXG4gICAgOm51bS1lbGVtZW50cyAgdGhlIGZpeGVkIHNpemUgb2YgZ2VuZXJhdGVkIGxpc3RcbiAgICA6bWluLWVsZW1lbnRzICB0aGUgbWluIHNpemUgb2YgZ2VuZXJhdGVkIGxpc3RcbiAgICA6bWF4LWVsZW1lbnRzICB0aGUgbWF4IHNpemUgb2YgZ2VuZXJhdGVkIGxpc3RcbiAgICA6bWF4LXRyaWVzICAgICB0aGUgbnVtYmVyIG9mIHRpbWVzIHRoZSBnZW5lcmF0b3Igd2lsbCBiZSB0cmllZCBiZWZvcmVcbiAgICAgICAgICAgICAgICAgICBmYWlsaW5nIHdoZW4gaXQgZG9lcyBub3QgcHJvZHVjZSBkaXN0aW5jdCBlbGVtZW50c1xuICAgICAgICAgICAgICAgICAgIChkZWZhdWx0IDEwKVxuICAgIDpleC1mbiAgICAgICAgIGEgZnVuY3Rpb24gb2Ygb25lIGFyZyB0aGF0IHdpbGwgYmUgY2FsbGVkIGlmIHRlc3QuY2hlY2sgY2Fubm90XG4gICAgICAgICAgICAgICAgICAgZ2VuZXJhdGUgZW5vdWdoIGRpc3RpbmN0IHZhbHVlczsgaXQgd2lsbCBiZSBwYXNzZWQgYSBtYXAgd2l0aFxuICAgICAgICAgICAgICAgICAgIGA6Z2VuYCwgYDpudW0tZWxlbWVudHNgLCBhbmQgYDptYXgtdHJpZXNgIGFuZCBzaG91bGQgcmV0dXJuIGFuXG4gICAgICAgICAgICAgICAgICAgZXhjZXB0aW9uIiwgOmFyZ2xpc3RzIFtba2V5LWZuIGdlbl0gW2tleS1mbiBnZW4gb3B0c11dfSwgOnNvdXJjZSAiKGRlZm5cbiBsaXN0LWRpc3RpbmN0LWJ5XG4gXCJHZW5lcmF0ZXMgYSBsaXN0IG9mIGVsZW1lbnRzIGZyb20gdGhlIGdpdmVuIGdlbmVyYXRvciwgd2l0aCB0aGVcXG4gIGd1YXJhbnRlZSB0aGF0IChtYXAga2V5LWZuIHRoZS1saXN0KSB3aWxsIGJlIGRpc3RpbmN0LlxcblxcbiAgSWYgdGhlIGdlbmVyYXRvciBjYW5ub3Qgb3IgaXMgdW5saWtlbHkgdG8gcHJvZHVjZSBlbm91Z2ggZGlzdGluY3RcXG4gIGVsZW1lbnRzLCB0aGlzIGdlbmVyYXRvciB3aWxsIGZhaWwgaW4gdGhlIHNhbWUgd2F5IGFzIGBzdWNoLXRoYXRgLlxcblxcbiAgQXZhaWxhYmxlIG9wdGlvbnM6XFxuXFxuICAgIDpudW0tZWxlbWVudHMgIHRoZSBmaXhlZCBzaXplIG9mIGdlbmVyYXRlZCBsaXN0XFxuICAgIDptaW4tZWxlbWVudHMgIHRoZSBtaW4gc2l6ZSBvZiBnZW5lcmF0ZWQgbGlzdFxcbiAgICA6bWF4LWVsZW1lbnRzICB0aGUgbWF4IHNpemUgb2YgZ2VuZXJhdGVkIGxpc3RcXG4gICAgOm1heC10cmllcyAgICAgdGhlIG51bWJlciBvZiB0aW1lcyB0aGUgZ2VuZXJhdG9yIHdpbGwgYmUgdHJpZWQgYmVmb3JlXFxuICAgICAgICAgICAgICAgICAgIGZhaWxpbmcgd2hlbiBpdCBkb2VzIG5vdCBwcm9kdWNlIGRpc3RpbmN0IGVsZW1lbnRzXFxuICAgICAgICAgICAgICAgICAgIChkZWZhdWx0IDEwKVxcbiAgICA6ZXgtZm4gICAgICAgICBhIGZ1bmN0aW9uIG9mIG9uZSBhcmcgdGhhdCB3aWxsIGJlIGNhbGxlZCBpZiB0ZXN0LmNoZWNrIGNhbm5vdFxcbiAgICAgICAgICAgICAgICAgICBnZW5lcmF0ZSBlbm91Z2ggZGlzdGluY3QgdmFsdWVzOyBpdCB3aWxsIGJlIHBhc3NlZCBhIG1hcCB3aXRoXFxuICAgICAgICAgICAgICAgICAgIGA6Z2VuYCwgYDpudW0tZWxlbWVudHNgLCBhbmQgYDptYXgtdHJpZXNgIGFuZCBzaG91bGQgcmV0dXJuIGFuXFxuICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvblwiXG4gezphZGRlZCBcIjAuOS4wXCJ9XG4gKFtrZXktZm4gZ2VuXSAobGlzdC1kaXN0aW5jdC1ieSBrZXktZm4gZ2VuIHt9KSlcbiAoW2tleS1mbiBnZW4gb3B0c11cbiAgKGFzc2VydFxuICAgKGdlbmVyYXRvcj8gZ2VuKVxuICAgXCJTZWNvbmQgYXJnIHRvIGxpc3QtZGlzdGluY3QtYnkgbXVzdCBiZSBhIGdlbmVyYXRvciFcIilcbiAgKGNvbGwtZGlzdGluY3QtYnkgKCkga2V5LWZuIHRydWUgdHJ1ZSBnZW4gb3B0cykpKVxuIn0gezpzeW0gc2ltcGxlLXR5cGUtcHJpbnRhYmxlLWVxdWF0YWJsZSwgOm1ldGEge30sIDpzb3VyY2UgIihkZWZcbiBzaW1wbGUtdHlwZS1wcmludGFibGUtZXF1YXRhYmxlXG4gXCJMaWtlIGdlbi9zaW1wbGUtdHlwZS1wcmludGFibGUsIGJ1dCBvbmx5IGdlbmVyYXRlcyBvYmplY3RzIHRoYXRcXG4gIGNhbiBiZSBlcXVhbCB0byBvdGhlciBvYmplY3RzIChlLmcuLCBub3QgYSBOYU4pLlwiXG4gKGJhc2Utc2ltcGxlLXR5cGUgKGRvdWJsZSogezpOYU4/IGZhbHNlfSkgY2hhci1hc2NpaSBzdHJpbmctYXNjaWkpKVxuIn0gezpzeW0gY2hhci1hbHBoYSwgOm1ldGEge30sIDpzb3VyY2UgIihkZWZcbiBjaGFyLWFscGhhXG4gXCJHZW5lcmF0ZXMgYWxwaGEgY2hhcmFjdGVycy5cIlxuIChmbWFwIGNvcmUvY2hhciAob25lLW9mIFsoY2hvb3NlIDY1IDkwKSAoY2hvb3NlIDk3IDEyMildKSkpXG4ifSB7OnN5bSBnZW5lcmF0b3I/LCA6bWV0YSB7OmRvYyAiVGVzdCBpZiBgeGAgaXMgYSBnZW5lcmF0b3IuIEdlbmVyYXRvcnMgc2hvdWxkIGJlIHRyZWF0ZWQgYXMgb3BhcXVlIHZhbHVlcy4iLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmblxuIGdlbmVyYXRvcj9cbiBcIlRlc3QgaWYgYHhgIGlzIGEgZ2VuZXJhdG9yLiBHZW5lcmF0b3JzIHNob3VsZCBiZSB0cmVhdGVkIGFzIG9wYXF1ZSB2YWx1ZXMuXCJcbiBbeF1cbiAoaW5zdGFuY2U/IEdlbmVyYXRvciB4KSlcbiJ9IHs6c3ltIHNhbXBsZS1zZXEsIDptZXRhIHs6ZG9jICJSZXR1cm5zIGFuIGluZmluaXRlIHNlcXVlbmNlIG9mIHJlYWxpemVkIHZhbHVlcyBmcm9tIGBnZW5lcmF0b3JgLlxuXG4gIE5vdGUgdGhhdCB0aGlzIGZ1bmN0aW9uIGlzIGEgZGV2IGhlbHBlciBhbmQgaXMgbm90IG1lYW50IHRvIGJlIHVzZWRcbiAgdG8gYnVpbGQgb3RoZXIgZ2VuZXJhdG9ycy4iLCA6YXJnbGlzdHMgW1tnZW5lcmF0b3JdIFtnZW5lcmF0b3IgbWF4LXNpemVdXX0sIDpzb3VyY2UgIihkZWZuXG4gc2FtcGxlLXNlcVxuIFwiUmV0dXJucyBhbiBpbmZpbml0ZSBzZXF1ZW5jZSBvZiByZWFsaXplZCB2YWx1ZXMgZnJvbSBgZ2VuZXJhdG9yYC5cXG5cXG4gIE5vdGUgdGhhdCB0aGlzIGZ1bmN0aW9uIGlzIGEgZGV2IGhlbHBlciBhbmQgaXMgbm90IG1lYW50IHRvIGJlIHVzZWRcXG4gIHRvIGJ1aWxkIG90aGVyIGdlbmVyYXRvcnMuXCJcbiAoW2dlbmVyYXRvcl0gKHNhbXBsZS1zZXEgZ2VuZXJhdG9yIDIwMCkpXG4gKFtnZW5lcmF0b3IgbWF4LXNpemVdXG4gIChjb3JlL2xldFxuICAgW3IgKHJhbmRvbS9tYWtlLXJhbmRvbSkgc2l6ZS1zZXEgKG1ha2Utc2l6ZS1yYW5nZS1zZXEgbWF4LXNpemUpXVxuICAgKGNvcmUvbWFwXG4gICAgKGZuKlxuICAgICBbcDFfXzQyNDA4IyBwMl9fNDI0MDkjXVxuICAgICAocm9zZS9yb290IChjYWxsLWdlbiBnZW5lcmF0b3IgcDFfXzQyNDA4IyBwMl9fNDI0MDkjKSkpXG4gICAgKGxhenktcmFuZG9tLXN0YXRlcyByKVxuICAgIHNpemUtc2VxKSkpKVxuIn0gezpzeW0gaW50LCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZlxuIGludFxuIFwiRGVwcmVjYXRlZCAtIHVzZSBnZW4vc21hbGwtaW50ZWdlciBpbnN0ZWFkLlxcblxcbiAgR2VuZXJhdGVzIGEgcG9zaXRpdmUgb3IgbmVnYXRpdmUgaW50ZWdlciBib3VuZGVkIGJ5IHRoZSBnZW5lcmF0b3Inc1xcbiAgYHNpemVgIHBhcmFtZXRlci5cIlxuIHNtYWxsLWludGVnZXIpXG4ifSB7OnN5bSBnZW4tcHVyZSwgOm1ldGEgezpkb2MgIkludGVybmFsIGZ1bmN0aW9uLiIsIDphcmdsaXN0cyAoW3ZhbHVlXSl9LCA6c291cmNlICIoZGVmblxuIGdlbi1wdXJlXG4gXCJJbnRlcm5hbCBmdW5jdGlvbi5cIlxuIHs6bm8tZG9jIHRydWV9XG4gW3ZhbHVlXVxuIChtYWtlLWdlbiAoZm4gW3JuZCBzaXplXSB2YWx1ZSkpKVxuIn0gezpzeW0gcmVjdXJzaXZlLWdlbiwgOm1ldGEgezpkb2MgIlRoaXMgaXMgYSBoZWxwZXIgZm9yIHdyaXRpbmcgcmVjdXJzaXZlICh0cmVlLXNoYXBlZCkgZ2VuZXJhdG9ycy4gVGhlIGZpcnN0XG4gIGFyZ3VtZW50IHNob3VsZCBiZSBhIGZ1bmN0aW9uIHRoYXQgdGFrZXMgYSBnZW5lcmF0b3IgYXMgYW4gYXJndW1lbnQsIGFuZFxuICBwcm9kdWNlcyBhbm90aGVyIGdlbmVyYXRvciB0aGF0ICdjb250YWlucycgdGhhdCBnZW5lcmF0b3IuIFRoZSB2ZWN0b3IgZnVuY3Rpb25cbiAgaW4gdGhpcyBuYW1lc3BhY2UgaXMgYSBzaW1wbGUgZXhhbXBsZS4gVGhlIHNlY29uZCBhcmd1bWVudCBpcyBhIHNjYWxhclxuICBnZW5lcmF0b3IsIGxpa2UgYm9vbGVhbi4gRm9yIGV4YW1wbGUsIHRvIHByb2R1Y2UgYSB0cmVlIG9mIGJvb2xlYW5zOlxuXG4gICAgKGdlbi9yZWN1cnNpdmUtZ2VuIGdlbi92ZWN0b3IgZ2VuL2Jvb2xlYW4pXG5cbiAgVmVjdG9ycyBvciBtYXBzIGVpdGhlciByZWN1cnJpbmcgb3IgY29udGFpbmluZyBib29sZWFucyBvciBpbnRlZ2VyczpcblxuICAgIChnZW4vcmVjdXJzaXZlLWdlbiAoZm4gW2lubmVyXSAoZ2VuL29uZS1vZiBbKGdlbi92ZWN0b3IgaW5uZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ2VuL21hcCBpbm5lciBpbm5lcildKSlcbiAgICAgICAgICAgICAgICAgICAgICAgKGdlbi9vbmUtb2YgW2dlbi9ib29sZWFuIGdlbi9zbWFsbC1pbnRlZ2VyXSkpXG5cbiAgTm90ZSB0aGF0IHJhdyBzY2FsYXIgdmFsdWVzIHdpbGwgYmUgZ2VuZXJhdGVkIGFzIHdlbGwuIFRvIHByZXZlbnQgdGhpcywgeW91XG4gIGNhbiB3cmFwIHRoZSByZXR1cm5lZCBnZW5lcmF0b3Igd2l0aCB0aGUgZnVuY3Rpb24gcGFzc2VkIGFzIHRoZSBmaXJzdCBhcmcsXG4gIGUuZy46XG5cbiAgICAoZ2VuL3ZlY3RvciAoZ2VuL3JlY3Vyc2l2ZS1nZW4gZ2VuL3ZlY3RvciBnZW4vYm9vbGVhbikpIiwgOmFyZ2xpc3RzIChbY29udGFpbmVyLWdlbi1mbiBzY2FsYXItZ2VuXSl9LCA6c291cmNlICIoZGVmblxuIHJlY3Vyc2l2ZS1nZW5cbiBcIlRoaXMgaXMgYSBoZWxwZXIgZm9yIHdyaXRpbmcgcmVjdXJzaXZlICh0cmVlLXNoYXBlZCkgZ2VuZXJhdG9ycy4gVGhlIGZpcnN0XFxuICBhcmd1bWVudCBzaG91bGQgYmUgYSBmdW5jdGlvbiB0aGF0IHRha2VzIGEgZ2VuZXJhdG9yIGFzIGFuIGFyZ3VtZW50LCBhbmRcXG4gIHByb2R1Y2VzIGFub3RoZXIgZ2VuZXJhdG9yIHRoYXQgJ2NvbnRhaW5zJyB0aGF0IGdlbmVyYXRvci4gVGhlIHZlY3RvciBmdW5jdGlvblxcbiAgaW4gdGhpcyBuYW1lc3BhY2UgaXMgYSBzaW1wbGUgZXhhbXBsZS4gVGhlIHNlY29uZCBhcmd1bWVudCBpcyBhIHNjYWxhclxcbiAgZ2VuZXJhdG9yLCBsaWtlIGJvb2xlYW4uIEZvciBleGFtcGxlLCB0byBwcm9kdWNlIGEgdHJlZSBvZiBib29sZWFuczpcXG5cXG4gICAgKGdlbi9yZWN1cnNpdmUtZ2VuIGdlbi92ZWN0b3IgZ2VuL2Jvb2xlYW4pXFxuXFxuICBWZWN0b3JzIG9yIG1hcHMgZWl0aGVyIHJlY3VycmluZyBvciBjb250YWluaW5nIGJvb2xlYW5zIG9yIGludGVnZXJzOlxcblxcbiAgICAoZ2VuL3JlY3Vyc2l2ZS1nZW4gKGZuIFtpbm5lcl0gKGdlbi9vbmUtb2YgWyhnZW4vdmVjdG9yIGlubmVyKVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChnZW4vbWFwIGlubmVyIGlubmVyKV0pKVxcbiAgICAgICAgICAgICAgICAgICAgICAgKGdlbi9vbmUtb2YgW2dlbi9ib29sZWFuIGdlbi9zbWFsbC1pbnRlZ2VyXSkpXFxuXFxuICBOb3RlIHRoYXQgcmF3IHNjYWxhciB2YWx1ZXMgd2lsbCBiZSBnZW5lcmF0ZWQgYXMgd2VsbC4gVG8gcHJldmVudCB0aGlzLCB5b3VcXG4gIGNhbiB3cmFwIHRoZSByZXR1cm5lZCBnZW5lcmF0b3Igd2l0aCB0aGUgZnVuY3Rpb24gcGFzc2VkIGFzIHRoZSBmaXJzdCBhcmcsXFxuICBlLmcuOlxcblxcbiAgICAoZ2VuL3ZlY3RvciAoZ2VuL3JlY3Vyc2l2ZS1nZW4gZ2VuL3ZlY3RvciBnZW4vYm9vbGVhbikpXCJcbiBbY29udGFpbmVyLWdlbi1mbiBzY2FsYXItZ2VuXVxuIChhc3NlcnRcbiAgKGdlbmVyYXRvcj8gc2NhbGFyLWdlbilcbiAgXCJTZWNvbmQgYXJnIHRvIHJlY3Vyc2l2ZS1nZW4gbXVzdCBiZSBhIGdlbmVyYXRvclwiKVxuIChzaXplZFxuICAoZm5cbiAgIFtzaXplXVxuICAgKGJpbmRcbiAgICAoY2hvb3NlIDAgKHNpemUtPm1heC1sZWFmLWNvdW50IHNpemUpKVxuICAgIChmblxuICAgICBbbWF4LWxlYWYtY291bnRdXG4gICAgIChyYW5kb21pemVkXG4gICAgICAoZm5cbiAgICAgICBbcm5nXVxuICAgICAgIChjb3JlL2xldFxuICAgICAgICBbc2l6ZXNcbiAgICAgICAgIChyYW5kb20tcHNldWRvZmFjdG9yaW5nIG1heC1sZWFmLWNvdW50IHJuZylcbiAgICAgICAgIHNpemVkLXNjYWxhci1nZW5cbiAgICAgICAgIChyZXNpemUgc2l6ZSBzY2FsYXItZ2VuKV1cbiAgICAgICAgKHJlZHVjZVxuICAgICAgICAgKGZuXG4gICAgICAgICAgW2cgc2l6ZV1cbiAgICAgICAgICAoYmluZFxuICAgICAgICAgICAoY2hvb3NlIDAgMTApXG4gICAgICAgICAgIChmblxuICAgICAgICAgICAgW3hdXG4gICAgICAgICAgICAoaWZcbiAgICAgICAgICAgICAoemVybz8geClcbiAgICAgICAgICAgICBzaXplZC1zY2FsYXItZ2VuXG4gICAgICAgICAgICAgKHJlc2l6ZSBzaXplIChjb250YWluZXItZ2VuLWZuIGcpKSkpKSlcbiAgICAgICAgIHNpemVkLXNjYWxhci1nZW5cbiAgICAgICAgIHNpemVzKSkpKSkpKSkpXG4ifSB7OnN5bSBjaGFyLWFscGhhLW51bWVyaWMsIDptZXRhIHt9LCA6c291cmNlICIoZGVmXG4gY2hhci1hbHBoYS1udW1lcmljXG4gXCJEZXByZWNhdGVkIC0gdXNlIGNoYXItYWxwaGFudW1lcmljIGluc3RlYWQuXFxuXFxuICBHZW5lcmF0ZXMgYWxwaGFudW1lcmljIGNoYXJhY3RlcnMuXCJcbiBjaGFyLWFscGhhbnVtZXJpYylcbiJ9IHs6c3ltIHJldHVybiwgOm1ldGEgezpkb2MgIkNyZWF0ZXMgYSBnZW5lcmF0b3IgdGhhdCBhbHdheXMgcmV0dXJucyBgdmFsdWVgLFxuICBhbmQgbmV2ZXIgc2hyaW5rcy4gWW91IGNhbiB0aGluayBvZiB0aGlzIGFzXG4gIHRoZSBgY29uc3RhbnRseWAgb2YgZ2VuZXJhdG9ycy4gRS5nLjpcblxuICAgICAgKGdlbi9zYW1wbGUgKGdlbi9yZXR1cm4gNDIpKVxuICAgICAgPT4gKDQyIDQyIDQyIDQyIDQyIDQyIDQyIDQyIDQyIDQyKSIsIDphcmdsaXN0cyAoW3ZhbHVlXSl9LCA6c291cmNlICIoZGVmblxuIHJldHVyblxuIFwiQ3JlYXRlcyBhIGdlbmVyYXRvciB0aGF0IGFsd2F5cyByZXR1cm5zIGB2YWx1ZWAsXFxuICBhbmQgbmV2ZXIgc2hyaW5rcy4gWW91IGNhbiB0aGluayBvZiB0aGlzIGFzXFxuICB0aGUgYGNvbnN0YW50bHlgIG9mIGdlbmVyYXRvcnMuIEUuZy46XFxuXFxuICAgICAgKGdlbi9zYW1wbGUgKGdlbi9yZXR1cm4gNDIpKVxcbiAgICAgID0+ICg0MiA0MiA0MiA0MiA0MiA0MiA0MiA0MiA0MiA0MilcIlxuIFt2YWx1ZV1cbiAoZ2VuLXB1cmUgKHJvc2UvcHVyZSB2YWx1ZSkpKVxuIn0gezpzeW0gZ2VuLWJpbmQsIDptZXRhIHs6ZG9jICJJbnRlcm5hbCBmdW5jdGlvbi4iLCA6YXJnbGlzdHMgKFt7aCA6Z2VufSBrXSl9LCA6c291cmNlICIoZGVmblxuIGdlbi1iaW5kXG4gXCJJbnRlcm5hbCBmdW5jdGlvbi5cIlxuIHs6bm8tZG9jIHRydWV9XG4gW3toIDpnZW59IGtdXG4gKG1ha2UtZ2VuXG4gIChmblxuICAgW3JuZCBzaXplXVxuICAgKGNvcmUvbGV0XG4gICAgW1tyMSByMl1cbiAgICAgKHJhbmRvbS9zcGxpdCBybmQpXG4gICAgIGlubmVyXG4gICAgIChoIHIxIHNpemUpXG4gICAgIHtyZXN1bHQgOmdlbn1cbiAgICAgKGsgaW5uZXIpXVxuICAgIChyZXN1bHQgcjIgc2l6ZSkpKSkpXG4ifSB7OnN5bSBzY2FsZSwgOm1ldGEgezpkb2MgIkNyZWF0ZXMgYSBuZXcgZ2VuZXJhdG9yIHRoYXQgbW9kaWZpZXMgdGhlIHNpemUgcGFyYW1ldGVyIGJ5IHRoZVxuICBnaXZlbiBmdW5jdGlvbi4gSW50ZW5kZWQgdG8gc3VwcG9ydCBnZW5lcmF0b3JzIHdpdGggc2l6ZXMgdGhhdCBuZWVkXG4gIHRvIGdyb3cgYXQgZGlmZmVyZW50IHJhdGVzIGNvbXBhcmVkIHRvIHRoZSBub3JtYWwgbGluZWFyIHNjYWxpbmcuXG5cbiAgICAgIChnZW4vc2FtcGxlIChnZW4vdHVwbGUgKGdlbi9zY2FsZSAjKC8gJSAxMCkgZ2VuL25hdClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuL25hdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ2VuL3NjYWxlICMoKiAlIDEwKSBnZW4vbmF0KSkpXG4gICAgICA9PiAoWzAgMCAwXSAgWzAgMSAyXSAgWzAgMiAxM10gWzAgMSA2XSAgWzAgMSAyM11cbiAgICAgICAgICBbMCAyIDQyXSBbMCAxIDI2XSBbMCAxIDEyXSBbMCAxIDEyXSBbMCAwIDNdKSIsIDphcmdsaXN0cyBbW2YgZ2VuZXJhdG9yXV19LCA6c291cmNlICIoZGVmblxuIHNjYWxlXG4gXCJDcmVhdGVzIGEgbmV3IGdlbmVyYXRvciB0aGF0IG1vZGlmaWVzIHRoZSBzaXplIHBhcmFtZXRlciBieSB0aGVcXG4gIGdpdmVuIGZ1bmN0aW9uLiBJbnRlbmRlZCB0byBzdXBwb3J0IGdlbmVyYXRvcnMgd2l0aCBzaXplcyB0aGF0IG5lZWRcXG4gIHRvIGdyb3cgYXQgZGlmZmVyZW50IHJhdGVzIGNvbXBhcmVkIHRvIHRoZSBub3JtYWwgbGluZWFyIHNjYWxpbmcuXFxuXFxuICAgICAgKGdlbi9zYW1wbGUgKGdlbi90dXBsZSAoZ2VuL3NjYWxlICMoLyAlIDEwKSBnZW4vbmF0KVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuL25hdFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGdlbi9zY2FsZSAjKCogJSAxMCkgZ2VuL25hdCkpKVxcbiAgICAgID0+IChbMCAwIDBdICBbMCAxIDJdICBbMCAyIDEzXSBbMCAxIDZdICBbMCAxIDIzXVxcbiAgICAgICAgICBbMCAyIDQyXSBbMCAxIDI2XSBbMCAxIDEyXSBbMCAxIDEyXSBbMCAwIDNdKVwiXG4gezphZGRlZCBcIjAuOC4wXCJ9XG4gKFtmIGdlbmVyYXRvcl0gKHNpemVkIChmbiBbbl0gKHJlc2l6ZSAoZiBuKSBnZW5lcmF0b3IpKSkpKVxuIn0gezpzeW0gc3ltYm9sLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZlxuIHN5bWJvbFxuIFwiR2VuZXJhdGVzIHN5bWJvbHMgd2l0aG91dCBuYW1lc3BhY2VzLlwiXG4gKGZyZXF1ZW5jeVxuICBbWzEwMFxuICAgICgtPj5cbiAgICAgc3ltYm9sLW5hbWUtb3ItbmFtZXNwYWNlXG4gICAgIChmbWFwIGNvcmUvc3ltYm9sKVxuICAgICAocmVzaXplLXN5bWJvbGlzaC1nZW5lcmF0b3IpKV1cbiAgIFsxIChyZXR1cm4gJy8pXV0pKVxuIn0gezpzeW0gY2hhci1hbHBoYW51bWVyaWMsIDptZXRhIHt9LCA6c291cmNlICIoZGVmXG4gY2hhci1hbHBoYW51bWVyaWNcbiBcIkdlbmVyYXRlcyBhbHBoYW51bWVyaWMgY2hhcmFjdGVycy5cIlxuIChmbWFwXG4gIGNvcmUvY2hhclxuICAob25lLW9mIFsoY2hvb3NlIDQ4IDU3KSAoY2hvb3NlIDY1IDkwKSAoY2hvb3NlIDk3IDEyMildKSkpXG4ifSB7OnN5bSBtYWtlLXNpemUtcmFuZ2Utc2VxLCA6bWV0YSB7OmRvYyAiSW50ZXJuYWwgZnVuY3Rpb24uIiwgOmFyZ2xpc3RzIChbbWF4LXNpemVdKX0sIDpzb3VyY2UgIihkZWZuXG4gbWFrZS1zaXplLXJhbmdlLXNlcVxuIFwiSW50ZXJuYWwgZnVuY3Rpb24uXCJcbiB7Om5vLWRvYyB0cnVlfVxuIFttYXgtc2l6ZV1cbiAoY3ljbGUgKHJhbmdlIDAgbWF4LXNpemUpKSlcbiJ9IHs6c3ltIGNob29zZSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtsb3dlciB1cHBlcl0pfSwgOnNvdXJjZSAiKGRlZm5cbiBjaG9vc2VcbiAjPyg6Y2xqIFwiQ3JlYXRlcyBhIGdlbmVyYXRvciB0aGF0IGdlbmVyYXRlcyBpbnRlZ2VycyB1bmlmb3JtbHkgaW4gdGhlIHJhbmdlXFxuICAgICBgbG93ZXJgIHRvIGB1cHBlcmAsIGluY2x1c2l2ZS5cXG5cXG4gICAgICAgICAoZ2VuL3NhbXBsZSAoZ2VuL2Nob29zZSAyMDAgODAwKSlcXG4gICAgICAgICA9PiAoMzMxIDI0MSA1OTMgMzM5IDY0MyA3MTggNjg4IDQ3MyAyNDcgNjk0KVwiIDpjbGpzIFwiQ3JlYXRlcyBhIGdlbmVyYXRvciB0aGF0IGdlbmVyYXRlcyBpbnRlZ2VyIG51bWJlcnMgdW5pZm9ybWx5IGluXFxuICAgICB0aGUgcmFuZ2UgYGxvd2VyYCB0byBgdXBwZXJgLCBpbmNsdXNpdmUuXFxuXFxuICAgICAgICAgKGdlbi9zYW1wbGUgKGdlbi9jaG9vc2UgMjAwIDgwMCkpXFxuICAgICAgICAgPT4gKDMzMSAyNDEgNTkzIDMzOSA2NDMgNzE4IDY4OCA0NzMgMjQ3IDY5NClcIilcbiBbbG93ZXIgdXBwZXJdXG4gKGNvcmUvbGV0XG4gICM/KDpjbGogW2xvd2VyIChsb25nIGxvd2VyKSB1cHBlciAobG9uZyB1cHBlcildIDpjbGpzIFtdKVxuICAobWFrZS1nZW5cbiAgIChmblxuICAgIFtybmQgX3NpemVdXG4gICAgKGNvcmUvbGV0XG4gICAgIFt2YWx1ZSAocmFuZC1yYW5nZSBybmQgbG93ZXIgdXBwZXIpXVxuICAgICAocm9zZS9maWx0ZXJcbiAgICAgIChmbipcbiAgICAgICBbcDFfXzQyNDEzI11cbiAgICAgICAoYW5kICg+PSBwMV9fNDI0MTMjIGxvd2VyKSAoPD0gcDFfXzQyNDEzIyB1cHBlcikpKVxuICAgICAgKGludC1yb3NlLXRyZWUgdmFsdWUpKSkpKSkpXG4ifSB7OnN5bSBzdHJpbmctYXNjaWksIDptZXRhIHt9LCA6c291cmNlICIoZGVmXG4gc3RyaW5nLWFzY2lpXG4gXCJHZW5lcmF0ZXMgYXNjaWkgc3RyaW5ncy5cIlxuIChmbWFwIGNsb2p1cmUuc3RyaW5nL2pvaW4gKHZlY3RvciBjaGFyLWFzY2lpKSkpXG4ifSB7OnN5bSBzb3J0ZWQtc2V0LCA6bWV0YSB7OmRvYyAiR2VuZXJhdGVzIGEgc29ydGVkIHNldCBvZiBlbGVtZW50cyBmcm9tIHRoZSBnaXZlbiBnZW5lcmF0b3IuXG5cbiAgSWYgdGhlIGdlbmVyYXRvciBjYW5ub3Qgb3IgaXMgdW5saWtlbHkgdG8gcHJvZHVjZSBlbm91Z2ggZGlzdGluY3RcbiAgZWxlbWVudHMsIHRoaXMgZ2VuZXJhdG9yIHdpbGwgZmFpbCBpbiB0aGUgc2FtZSB3YXkgYXMgYHN1Y2gtdGhhdGAuXG5cbiAgQXZhaWxhYmxlIG9wdGlvbnM6XG5cbiAgICA6bnVtLWVsZW1lbnRzICB0aGUgZml4ZWQgc2l6ZSBvZiBnZW5lcmF0ZWQgc2V0XG4gICAgOm1pbi1lbGVtZW50cyAgdGhlIG1pbiBzaXplIG9mIGdlbmVyYXRlZCBzZXRcbiAgICA6bWF4LWVsZW1lbnRzICB0aGUgbWF4IHNpemUgb2YgZ2VuZXJhdGVkIHNldFxuICAgIDptYXgtdHJpZXMgICAgIHRoZSBudW1iZXIgb2YgdGltZXMgdGhlIGdlbmVyYXRvciB3aWxsIGJlIHRyaWVkIGJlZm9yZVxuICAgICAgICAgICAgICAgICAgIGZhaWxpbmcgd2hlbiBpdCBkb2VzIG5vdCBwcm9kdWNlIGRpc3RpbmN0IGVsZW1lbnRzXG4gICAgICAgICAgICAgICAgICAgKGRlZmF1bHQgMTApXG4gICAgOmV4LWZuICAgICAgICAgYSBmdW5jdGlvbiBvZiBvbmUgYXJnIHRoYXQgd2lsbCBiZSBjYWxsZWQgaWYgdGVzdC5jaGVjayBjYW5ub3RcbiAgICAgICAgICAgICAgICAgICBnZW5lcmF0ZSBlbm91Z2ggZGlzdGluY3QgdmFsdWVzOyBpdCB3aWxsIGJlIHBhc3NlZCBhIG1hcCB3aXRoXG4gICAgICAgICAgICAgICAgICAgYDpnZW5gLCBgOm51bS1lbGVtZW50c2AsIGFuZCBgOm1heC10cmllc2AgYW5kIHNob3VsZCByZXR1cm4gYW5cbiAgICAgICAgICAgICAgICAgICBleGNlcHRpb24iLCA6YXJnbGlzdHMgW1tnZW5dIFtnZW4gb3B0c11dfSwgOnNvdXJjZSAiKGRlZm5cbiBzb3J0ZWQtc2V0XG4gXCJHZW5lcmF0ZXMgYSBzb3J0ZWQgc2V0IG9mIGVsZW1lbnRzIGZyb20gdGhlIGdpdmVuIGdlbmVyYXRvci5cXG5cXG4gIElmIHRoZSBnZW5lcmF0b3IgY2Fubm90IG9yIGlzIHVubGlrZWx5IHRvIHByb2R1Y2UgZW5vdWdoIGRpc3RpbmN0XFxuICBlbGVtZW50cywgdGhpcyBnZW5lcmF0b3Igd2lsbCBmYWlsIGluIHRoZSBzYW1lIHdheSBhcyBgc3VjaC10aGF0YC5cXG5cXG4gIEF2YWlsYWJsZSBvcHRpb25zOlxcblxcbiAgICA6bnVtLWVsZW1lbnRzICB0aGUgZml4ZWQgc2l6ZSBvZiBnZW5lcmF0ZWQgc2V0XFxuICAgIDptaW4tZWxlbWVudHMgIHRoZSBtaW4gc2l6ZSBvZiBnZW5lcmF0ZWQgc2V0XFxuICAgIDptYXgtZWxlbWVudHMgIHRoZSBtYXggc2l6ZSBvZiBnZW5lcmF0ZWQgc2V0XFxuICAgIDptYXgtdHJpZXMgICAgIHRoZSBudW1iZXIgb2YgdGltZXMgdGhlIGdlbmVyYXRvciB3aWxsIGJlIHRyaWVkIGJlZm9yZVxcbiAgICAgICAgICAgICAgICAgICBmYWlsaW5nIHdoZW4gaXQgZG9lcyBub3QgcHJvZHVjZSBkaXN0aW5jdCBlbGVtZW50c1xcbiAgICAgICAgICAgICAgICAgICAoZGVmYXVsdCAxMClcXG4gICAgOmV4LWZuICAgICAgICAgYSBmdW5jdGlvbiBvZiBvbmUgYXJnIHRoYXQgd2lsbCBiZSBjYWxsZWQgaWYgdGVzdC5jaGVjayBjYW5ub3RcXG4gICAgICAgICAgICAgICAgICAgZ2VuZXJhdGUgZW5vdWdoIGRpc3RpbmN0IHZhbHVlczsgaXQgd2lsbCBiZSBwYXNzZWQgYSBtYXAgd2l0aFxcbiAgICAgICAgICAgICAgICAgICBgOmdlbmAsIGA6bnVtLWVsZW1lbnRzYCwgYW5kIGA6bWF4LXRyaWVzYCBhbmQgc2hvdWxkIHJldHVybiBhblxcbiAgICAgICAgICAgICAgICAgICBleGNlcHRpb25cIlxuIHs6YWRkZWQgXCIwLjkuMFwifVxuIChbZ2VuXSAoc29ydGVkLXNldCBnZW4ge30pKVxuIChbZ2VuIG9wdHNdXG4gIChhc3NlcnRcbiAgIChnZW5lcmF0b3I/IGdlbilcbiAgIFwiRmlyc3QgYXJnIHRvIHNvcnRlZC1zZXQgbXVzdCBiZSBhIGdlbmVyYXRvciFcIilcbiAgKGNvbGwtZGlzdGluY3QtYnkgKGNvcmUvc29ydGVkLXNldCkgaWRlbnRpdHkgZmFsc2UgZmFsc2UgZ2VuIG9wdHMpKSlcbiJ9IHs6c3ltIGZyZXF1ZW5jeSwgOm1ldGEgezpkb2MgIkNyZWF0ZXMgYSBnZW5lcmF0b3IgdGhhdCBjaG9vc2VzIGEgZ2VuZXJhdG9yIGZyb20gYHBhaXJzYCBiYXNlZCBvbiB0aGVcbiAgcHJvdmlkZWQgbGlrZWxpaG9vZHMuIFRoZSBsaWtlbGlob29kIG9mIGEgZ2l2ZW4gZ2VuZXJhdG9yIGJlaW5nIGNob3NlbiBpc1xuICBpdHMgbGlrZWxpaG9vZCBkaXZpZGVkIGJ5IHRoZSBzdW0gb2YgYWxsIGxpa2VsaWhvb2RzLiBTaHJpbmtzIHRvd2FyZFxuICBjaG9vc2luZyBhbiBlYXJsaWVyIGdlbmVyYXRvciwgYXMgd2VsbCBhcyBzaHJpbmtpbmcgdGhlIHZhbHVlIGdlbmVyYXRlZFxuICBieSB0aGUgY2hvc2VuIGdlbmVyYXRvci5cblxuICBFeGFtcGxlczpcblxuICAgICAgKGdlbi9zYW1wbGUgKGdlbi9mcmVxdWVuY3kgW1s1IGdlbi9zbWFsbC1pbnRlZ2VyXSBbMyAoZ2VuL3ZlY3RvciBnZW4vc21hbGwtaW50ZWdlcildIFsyIGdlbi9ib29sZWFuXV0pKVxuICAgICAgPT4gKHRydWUgW10gLTEgWzBdIFsxIC00IC00IDFdIHRydWUgNCBbXSA2IHRydWUpIiwgOmFyZ2xpc3RzIChbcGFpcnNdKX0sIDpzb3VyY2UgIihkZWZuXG4gZnJlcXVlbmN5XG4gXCJDcmVhdGVzIGEgZ2VuZXJhdG9yIHRoYXQgY2hvb3NlcyBhIGdlbmVyYXRvciBmcm9tIGBwYWlyc2AgYmFzZWQgb24gdGhlXFxuICBwcm92aWRlZCBsaWtlbGlob29kcy4gVGhlIGxpa2VsaWhvb2Qgb2YgYSBnaXZlbiBnZW5lcmF0b3IgYmVpbmcgY2hvc2VuIGlzXFxuICBpdHMgbGlrZWxpaG9vZCBkaXZpZGVkIGJ5IHRoZSBzdW0gb2YgYWxsIGxpa2VsaWhvb2RzLiBTaHJpbmtzIHRvd2FyZFxcbiAgY2hvb3NpbmcgYW4gZWFybGllciBnZW5lcmF0b3IsIGFzIHdlbGwgYXMgc2hyaW5raW5nIHRoZSB2YWx1ZSBnZW5lcmF0ZWRcXG4gIGJ5IHRoZSBjaG9zZW4gZ2VuZXJhdG9yLlxcblxcbiAgRXhhbXBsZXM6XFxuXFxuICAgICAgKGdlbi9zYW1wbGUgKGdlbi9mcmVxdWVuY3kgW1s1IGdlbi9zbWFsbC1pbnRlZ2VyXSBbMyAoZ2VuL3ZlY3RvciBnZW4vc21hbGwtaW50ZWdlcildIFsyIGdlbi9ib29sZWFuXV0pKVxcbiAgICAgID0+ICh0cnVlIFtdIC0xIFswXSBbMSAtNCAtNCAxXSB0cnVlIDQgW10gNiB0cnVlKVwiXG4gW3BhaXJzXVxuIChhc3NlcnRcbiAgKGV2ZXJ5PyAoZm4gW1t4IGddXSAoYW5kIChudW1iZXI/IHgpIChnZW5lcmF0b3I/IGcpKSkgcGFpcnMpXG4gIFwiQXJnIHRvIGZyZXF1ZW5jeSBtdXN0IGJlIGEgbGlzdCBvZiBbbnVtIGdlbmVyYXRvcl0gcGFpcnNcIilcbiAoY29yZS9sZXRcbiAgW3BhaXJzXG4gICAoZmlsdGVyIChjb21wIHBvcz8gZmlyc3QpIHBhaXJzKVxuICAgdG90YWxcbiAgIChhcHBseSArIChjb3JlL21hcCBmaXJzdCBwYWlycykpXVxuICAoYXNzZXJ0XG4gICAoc2VxIHBhaXJzKVxuICAgXCJmcmVxdWVuY3kgbXVzdCBiZSBjYWxsZWQgd2l0aCBhdCBsZWFzdCBvbmUgbm9uLXplcm8gd2VpZ2h0XCIpXG4gIChtYWtlLWdlblxuICAgKGZuXG4gICAgW3JuZCBzaXplXVxuICAgIChjYWxsLWdlblxuICAgICAoZ2VuLWJpbmRcbiAgICAgIChjaG9vc2UgMCAoZGVjIHRvdGFsKSlcbiAgICAgIChmblxuICAgICAgIFt4XVxuICAgICAgIChjb3JlL2xldFxuICAgICAgICBbaWR4IChwaWNrIChjb3JlL21hcCBmaXJzdCBwYWlycykgKHJvc2Uvcm9vdCB4KSldXG4gICAgICAgIChnZW4tZm1hcFxuICAgICAgICAgKGZuXG4gICAgICAgICAgW3Jvc2VdXG4gICAgICAgICAgKHJvc2UvbWFrZS1yb3NlXG4gICAgICAgICAgIChyb3NlL3Jvb3Qgcm9zZSlcbiAgICAgICAgICAgKGxhenktc2VxXG4gICAgICAgICAgICAoY29uY2F0XG4gICAgICAgICAgICAgKGZvclxuICAgICAgICAgICAgICBbaWR4IChyYW5nZSBpZHgpXVxuICAgICAgICAgICAgICAoY2FsbC1nZW4gKHNlY29uZCAobnRoIHBhaXJzIGlkeCkpIHJuZCBzaXplKSlcbiAgICAgICAgICAgICAocm9zZS9jaGlsZHJlbiByb3NlKSkpKSlcbiAgICAgICAgIChzZWNvbmQgKG50aCBwYWlycyBpZHgpKSkpKSlcbiAgICAgcm5kXG4gICAgIHNpemUpKSkpKVxuIn0gezpzeW0gc21hbGwtaW50ZWdlciwgOm1ldGEge30sIDpzb3VyY2UgIihkZWZcbiBzbWFsbC1pbnRlZ2VyXG4gXCJHZW5lcmF0ZXMgYSBwb3NpdGl2ZSBvciBuZWdhdGl2ZSBpbnRlZ2VyIGJvdW5kZWQgYnkgdGhlIGdlbmVyYXRvcidzXFxuICBgc2l6ZWAgcGFyYW1ldGVyLiBTaHJpbmtzIHRvIHplcm8uXCJcbiAoc2l6ZWQgKGZuIFtzaXplXSAoY2hvb3NlICgtIHNpemUpIHNpemUpKSkpXG4ifSB7OnN5bSBkb3VibGUqLCA6bWV0YSB7OmRvYyAiR2VuZXJhdGVzIGEgNjQtYml0IGZsb2F0aW5nIHBvaW50IG51bWJlci4gT3B0aW9uczpcblxuICAgIDppbmZpbml0ZT8gLSB3aGV0aGVyICsvLSBpbmZpbml0eSBjYW4gYmUgZ2VuZXJhdGVkIChkZWZhdWx0IHRydWUpXG4gICAgOk5hTj8gICAgICAtIHdoZXRoZXIgTmFOIGNhbiBiZSBnZW5lcmF0ZWQgKGRlZmF1bHQgdHJ1ZSlcbiAgICA6bWluICAgICAgIC0gbWluaW11bSB2YWx1ZSAoaW5jbHVzaXZlLCBkZWZhdWx0IG5vbmUpXG4gICAgOm1heCAgICAgICAtIG1heGltdW0gdmFsdWUgKGluY2x1c2l2ZSwgZGVmYXVsdCBub25lKVxuXG4gIE5vdGUgdGhhdCB0aGUgbWluL21heCBvcHRpb25zIG11c3QgYmUgZmluaXRlIG51bWJlcnMuIFN1cHBseWluZyBhXG4gIG1pbiBwcmVjbHVkZXMgLUluZmluaXR5LCBhbmQgc3VwcGx5aW5nIGEgbWF4IHByZWNsdWRlcyArSW5maW5pdHkuIiwgOmFyZ2xpc3RzIChbezprZXlzIFtpbmZpbml0ZT8gTmFOPyBtaW4gbWF4XSwgOm9yIHtpbmZpbml0ZT8gdHJ1ZSwgTmFOPyB0cnVlfX1dKX0sIDpzb3VyY2UgIihkZWZuXG4gZG91YmxlKlxuIFwiR2VuZXJhdGVzIGEgNjQtYml0IGZsb2F0aW5nIHBvaW50IG51bWJlci4gT3B0aW9uczpcXG5cXG4gICAgOmluZmluaXRlPyAtIHdoZXRoZXIgKy8tIGluZmluaXR5IGNhbiBiZSBnZW5lcmF0ZWQgKGRlZmF1bHQgdHJ1ZSlcXG4gICAgOk5hTj8gICAgICAtIHdoZXRoZXIgTmFOIGNhbiBiZSBnZW5lcmF0ZWQgKGRlZmF1bHQgdHJ1ZSlcXG4gICAgOm1pbiAgICAgICAtIG1pbmltdW0gdmFsdWUgKGluY2x1c2l2ZSwgZGVmYXVsdCBub25lKVxcbiAgICA6bWF4ICAgICAgIC0gbWF4aW11bSB2YWx1ZSAoaW5jbHVzaXZlLCBkZWZhdWx0IG5vbmUpXFxuXFxuICBOb3RlIHRoYXQgdGhlIG1pbi9tYXggb3B0aW9ucyBtdXN0IGJlIGZpbml0ZSBudW1iZXJzLiBTdXBwbHlpbmcgYVxcbiAgbWluIHByZWNsdWRlcyAtSW5maW5pdHksIGFuZCBzdXBwbHlpbmcgYSBtYXggcHJlY2x1ZGVzICtJbmZpbml0eS5cIlxuIHs6YWRkZWQgXCIwLjkuMFwifVxuIFt7OmtleXMgW2luZmluaXRlPyBOYU4/IG1pbiBtYXhdLCA6b3Ige2luZmluaXRlPyB0cnVlLCBOYU4/IHRydWV9fV1cbiAoY29yZS9sZXRcbiAgW2ZyZXF1ZW5jeS1hcmdcbiAgIChjb25kLT5cbiAgICBbWzk1IChkb3VibGUtZmluaXRlIG1pbiBtYXgpXV1cbiAgICAoaWZcbiAgICAgKG5pbD8gbWluKVxuICAgICAob3IgKG5pbD8gbWF4KSAoPD0gMC4wIG1heCkpXG4gICAgIChpZiAobmlsPyBtYXgpICg8PSBtaW4gMC4wKSAoPD0gbWluIDAuMCBtYXgpKSlcbiAgICAoY29uaiBbMSAocmV0dXJuIDAuMCldIFsxIChyZXR1cm4gLTAuMCldKVxuICAgIChhbmQgaW5maW5pdGU/IChuaWw/IG1heCkpXG4gICAgKGNvbmogWzEgKHJldHVybiBQT1NfSU5GSU5JVFkpXSlcbiAgICAoYW5kIGluZmluaXRlPyAobmlsPyBtaW4pKVxuICAgIChjb25qIFsxIChyZXR1cm4gTkVHX0lORklOSVRZKV0pXG4gICAgTmFOP1xuICAgIChjb25qIFsxIChyZXR1cm4gTkFOKV0pKV1cbiAgKGlmXG4gICAoPSAxIChjb3VudCBmcmVxdWVuY3ktYXJnKSlcbiAgICgtPiBmcmVxdWVuY3ktYXJnIGZpcnN0IHNlY29uZClcbiAgIChmcmVxdWVuY3kgZnJlcXVlbmN5LWFyZykpKSlcbiJ9IHs6c3ltIGdlbmVyYXRlLCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIHNpbmdsZSBzYW1wbGUgdmFsdWUgZnJvbSB0aGUgZ2VuZXJhdG9yLlxuXG4gIE5vdGUgdGhhdCB0aGlzIGZ1bmN0aW9uIGlzIGEgZGV2IGhlbHBlciBhbmQgaXMgbm90IG1lYW50IHRvIGJlIHVzZWRcbiAgdG8gYnVpbGQgb3RoZXIgZ2VuZXJhdG9ycy5cblxuICBPcHRpb25hbCBhcmdzOlxuXG4gIC0gc2l6ZTogdGhlIGFic3RyYWN0IHNpemUgcGFyYW1ldGVyLCBkZWZhdWx0cyB0byAzMFxuICAtIHNlZWQ6IHRoZSBzZWVkIGZvciB0aGUgcmFuZG9tIG51bWJlciBnZW5lcmF0b3IsIGFuIGludGVnZXIiLCA6YXJnbGlzdHMgW1tnZW5lcmF0b3JdIFtnZW5lcmF0b3Igc2l6ZV0gW2dlbmVyYXRvciBzaXplIHNlZWRdXX0sIDpzb3VyY2UgIihkZWZuXG4gZ2VuZXJhdGVcbiBcIlJldHVybnMgYSBzaW5nbGUgc2FtcGxlIHZhbHVlIGZyb20gdGhlIGdlbmVyYXRvci5cXG5cXG4gIE5vdGUgdGhhdCB0aGlzIGZ1bmN0aW9uIGlzIGEgZGV2IGhlbHBlciBhbmQgaXMgbm90IG1lYW50IHRvIGJlIHVzZWRcXG4gIHRvIGJ1aWxkIG90aGVyIGdlbmVyYXRvcnMuXFxuXFxuICBPcHRpb25hbCBhcmdzOlxcblxcbiAgLSBzaXplOiB0aGUgYWJzdHJhY3Qgc2l6ZSBwYXJhbWV0ZXIsIGRlZmF1bHRzIHRvIDMwXFxuICAtIHNlZWQ6IHRoZSBzZWVkIGZvciB0aGUgcmFuZG9tIG51bWJlciBnZW5lcmF0b3IsIGFuIGludGVnZXJcIlxuIHs6YWRkZWQgXCIwLjguMFwifVxuIChbZ2VuZXJhdG9yXSAoZ2VuZXJhdGUgZ2VuZXJhdG9yIDMwKSlcbiAoW2dlbmVyYXRvciBzaXplXVxuICAoY29yZS9sZXRcbiAgIFtybmcgKHJhbmRvbS9tYWtlLXJhbmRvbSldXG4gICAocm9zZS9yb290IChjYWxsLWdlbiBnZW5lcmF0b3Igcm5nIHNpemUpKSkpXG4gKFtnZW5lcmF0b3Igc2l6ZSBzZWVkXVxuICAoY29yZS9sZXRcbiAgIFtybmcgKHJhbmRvbS9tYWtlLXJhbmRvbSBzZWVkKV1cbiAgIChyb3NlL3Jvb3QgKGNhbGwtZ2VuIGdlbmVyYXRvciBybmcgc2l6ZSkpKSkpXG4ifSB7OnN5bSBzaXplZCwgOm1ldGEgezpkb2MgIkNyZWF0ZXMgYSBnZW5lcmF0b3IgdGhhdCBkZXBlbmRzIG9uIHRoZSBzaXplIHBhcmFtZXRlci5cbiAgYHNpemVkLWdlbmAgaXMgYSBmdW5jdGlvbiB0aGF0IHRha2VzIGFuIGludGVnZXIgYW5kIHJldHVybnNcbiAgYSBnZW5lcmF0b3IuXG5cbiAgRXhhbXBsZXM6XG5cbiAgICAgIDs7IGdlbmVyYXRlcyB2ZWN0b3JzIG9mIGJvb2xlYW5zIHdoZXJlIHRoZSBsZW5ndGggYWx3YXlzIGV4YWN0bHlcbiAgICAgIDs7IG1hdGNoZXMgdGhlIGBzaXplYCBwYXJhbWV0ZXJcbiAgICAgIChnZW4vc2FtcGxlIChnZW4vc2l6ZWQgKGZuIFtzaXplXSAoZ2VuL3ZlY3RvciBnZW4vYm9vbGVhbiBzaXplKSkpKVxuICAgICAgPT4gKFtdXG4gICAgICAgICAgW2ZhbHNlXVxuICAgICAgICAgIFt0cnVlIHRydWVdXG4gICAgICAgICAgW2ZhbHNlIHRydWUgZmFsc2VdXG4gICAgICAgICAgW2ZhbHNlIHRydWUgdHJ1ZSB0cnVlXVxuICAgICAgICAgIFtmYWxzZSBmYWxzZSB0cnVlIHRydWUgZmFsc2VdXG4gICAgICAgICAgW2ZhbHNlIHRydWUgZmFsc2UgdHJ1ZSB0cnVlIGZhbHNlXVxuICAgICAgICAgIFt0cnVlIGZhbHNlIHRydWUgdHJ1ZSB0cnVlIGZhbHNlIGZhbHNlXVxuICAgICAgICAgIFt0cnVlIHRydWUgZmFsc2UgZmFsc2UgZmFsc2UgdHJ1ZSBmYWxzZSBmYWxzZV1cbiAgICAgICAgICBbZmFsc2UgZmFsc2UgZmFsc2UgdHJ1ZSB0cnVlIGZhbHNlIHRydWUgZmFsc2UgdHJ1ZV0pIiwgOmFyZ2xpc3RzIChbc2l6ZWQtZ2VuXSl9LCA6c291cmNlICIoZGVmblxuIHNpemVkXG4gXCJDcmVhdGVzIGEgZ2VuZXJhdG9yIHRoYXQgZGVwZW5kcyBvbiB0aGUgc2l6ZSBwYXJhbWV0ZXIuXFxuICBgc2l6ZWQtZ2VuYCBpcyBhIGZ1bmN0aW9uIHRoYXQgdGFrZXMgYW4gaW50ZWdlciBhbmQgcmV0dXJuc1xcbiAgYSBnZW5lcmF0b3IuXFxuXFxuICBFeGFtcGxlczpcXG5cXG4gICAgICA7OyBnZW5lcmF0ZXMgdmVjdG9ycyBvZiBib29sZWFucyB3aGVyZSB0aGUgbGVuZ3RoIGFsd2F5cyBleGFjdGx5XFxuICAgICAgOzsgbWF0Y2hlcyB0aGUgYHNpemVgIHBhcmFtZXRlclxcbiAgICAgIChnZW4vc2FtcGxlIChnZW4vc2l6ZWQgKGZuIFtzaXplXSAoZ2VuL3ZlY3RvciBnZW4vYm9vbGVhbiBzaXplKSkpKVxcbiAgICAgID0+IChbXVxcbiAgICAgICAgICBbZmFsc2VdXFxuICAgICAgICAgIFt0cnVlIHRydWVdXFxuICAgICAgICAgIFtmYWxzZSB0cnVlIGZhbHNlXVxcbiAgICAgICAgICBbZmFsc2UgdHJ1ZSB0cnVlIHRydWVdXFxuICAgICAgICAgIFtmYWxzZSBmYWxzZSB0cnVlIHRydWUgZmFsc2VdXFxuICAgICAgICAgIFtmYWxzZSB0cnVlIGZhbHNlIHRydWUgdHJ1ZSBmYWxzZV1cXG4gICAgICAgICAgW3RydWUgZmFsc2UgdHJ1ZSB0cnVlIHRydWUgZmFsc2UgZmFsc2VdXFxuICAgICAgICAgIFt0cnVlIHRydWUgZmFsc2UgZmFsc2UgZmFsc2UgdHJ1ZSBmYWxzZSBmYWxzZV1cXG4gICAgICAgICAgW2ZhbHNlIGZhbHNlIGZhbHNlIHRydWUgdHJ1ZSBmYWxzZSB0cnVlIGZhbHNlIHRydWVdKVwiXG4gW3NpemVkLWdlbl1cbiAobWFrZS1nZW5cbiAgKGZuXG4gICBbcm5kIHNpemVdXG4gICAoY29yZS9sZXRcbiAgICBbc2l6ZWQtZ2VuIChzaXplZC1nZW4gc2l6ZSldXG4gICAgKGNhbGwtZ2VuIHNpemVkLWdlbiBybmQgc2l6ZSkpKSkpXG4ifSB7OnN5bSBzLW5lZy1pbnQsIDptZXRhIHt9LCA6c291cmNlICIoZGVmXG4gcy1uZWctaW50XG4gXCJEZXByZWNhdGVkIC0gdXNlIChnZW4vZm1hcCAoY29tcCBkZWMgLSkgZ2VuL25hdCkgaW5zdGVhZCAoc2VlIGFsc28gZ2VuL2xhcmdlLWludGVnZXIpLlxcblxcbiAgR2VuZXJhdGVzIG5lZ2F0aXZlIGludGVnZXJzIGJvdW5kZWQgYnkgdGhlIGdlbmVyYXRvcidzIGBzaXplYCArIDFcIlxuIChmbWFwIGRlYyBuZWctaW50KSlcbiJ9IHs6c3ltIG5hdCwgOm1ldGEge30sIDpzb3VyY2UgIihkZWZcbiBuYXRcbiBcIkdlbmVyYXRlcyBub24tbmVnYXRpdmUgaW50ZWdlcnMgYm91bmRlZCBieSB0aGUgZ2VuZXJhdG9yJ3MgYHNpemVgXFxuICBwYXJhbWV0ZXIuIFNocmlua3MgdG8gemVyby5cIlxuIChzaXplZCAoZm4gW3NpemVdIChjaG9vc2UgMCBzaXplKSkpKVxuIn0gezpzeW0gc2ltcGxlLXR5cGUtZXF1YXRhYmxlLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZlxuIHNpbXBsZS10eXBlLWVxdWF0YWJsZVxuIFwiTGlrZSBnZW4vc2ltcGxlLXR5cGUsIGJ1dCBvbmx5IGdlbmVyYXRlcyBvYmplY3RzIHRoYXQgY2FuIGJlXFxuICBlcXVhbCB0byBvdGhlciBvYmplY3RzIChlLmcuLCBub3QgYSBOYU4pLlwiXG4gKGJhc2Utc2ltcGxlLXR5cGUgKGRvdWJsZSogezpOYU4/IGZhbHNlfSkgY2hhciBzdHJpbmcpKVxuIn0gezpzeW0gdHVwbGUsIDptZXRhIHs6ZG9jICJDcmVhdGVzIGEgZ2VuZXJhdG9yIHRoYXQgcmV0dXJucyBhIHZlY3Rvciwgd2hvc2UgZWxlbWVudHMgYXJlIGNob3NlblxuICBmcm9tIHRoZSBnZW5lcmF0b3JzIGluIHRoZSBzYW1lIHBvc2l0aW9uLiBUaGUgaW5kaXZpZHVhbCBlbGVtZW50cyBzaHJpbmtcbiAgYWNjb3JkaW5nIHRvIHRoZWlyIGdlbmVyYXRvciwgYnV0IHRoZSB2ZWN0b3Igd2lsbCBuZXZlciBzaHJpbmsgaW4gY291bnQuXG5cbiAgRXhhbXBsZXM6XG5cbiAgICAgIChkZWYgdCAoZ2VuL3R1cGxlIGdlbi9zbWFsbC1pbnRlZ2VyIGdlbi9ib29sZWFuKSlcbiAgICAgIChzYW1wbGUgdClcbiAgICAgIDs7ID0+IChbMSB0cnVlXSBbMiB0cnVlXSBbMiBmYWxzZV0gWzEgZmFsc2VdIFswIHRydWVdIFstMiBmYWxzZV0gWy02IGZhbHNlXVxuICAgICAgOzsgPT4gIFszIHRydWVdIFstNCBmYWxzZV0gWzkgdHJ1ZV0pKSIsIDphcmdsaXN0cyAoWyYgZ2VuZXJhdG9yc10pfSwgOnNvdXJjZSAiKGRlZm5cbiB0dXBsZVxuIFwiQ3JlYXRlcyBhIGdlbmVyYXRvciB0aGF0IHJldHVybnMgYSB2ZWN0b3IsIHdob3NlIGVsZW1lbnRzIGFyZSBjaG9zZW5cXG4gIGZyb20gdGhlIGdlbmVyYXRvcnMgaW4gdGhlIHNhbWUgcG9zaXRpb24uIFRoZSBpbmRpdmlkdWFsIGVsZW1lbnRzIHNocmlua1xcbiAgYWNjb3JkaW5nIHRvIHRoZWlyIGdlbmVyYXRvciwgYnV0IHRoZSB2ZWN0b3Igd2lsbCBuZXZlciBzaHJpbmsgaW4gY291bnQuXFxuXFxuICBFeGFtcGxlczpcXG5cXG4gICAgICAoZGVmIHQgKGdlbi90dXBsZSBnZW4vc21hbGwtaW50ZWdlciBnZW4vYm9vbGVhbikpXFxuICAgICAgKHNhbXBsZSB0KVxcbiAgICAgIDs7ID0+IChbMSB0cnVlXSBbMiB0cnVlXSBbMiBmYWxzZV0gWzEgZmFsc2VdIFswIHRydWVdIFstMiBmYWxzZV0gWy02IGZhbHNlXVxcbiAgICAgIDs7ID0+ICBbMyB0cnVlXSBbLTQgZmFsc2VdIFs5IHRydWVdKSlcIlxuIFsmIGdlbmVyYXRvcnNdXG4gKGFzc2VydFxuICAoZXZlcnk/IGdlbmVyYXRvcj8gZ2VuZXJhdG9ycylcbiAgXCJBcmdzIHRvIHR1cGxlIG11c3QgYmUgZ2VuZXJhdG9yc1wiKVxuIChnZW4tZm1hcFxuICAoZm4gW3Jvc2VzXSAocm9zZS96aXAgY29yZS92ZWN0b3Igcm9zZXMpKVxuICAoZ2VuLXR1cGxlIGdlbmVyYXRvcnMpKSlcbiJ9IHs6c3ltIGxhenktcmFuZG9tLXN0YXRlcywgOm1ldGEgezpkb2MgIkludGVybmFsIGZ1bmN0aW9uLlxuXG4gIEdpdmVuIGEgcmFuZG9tIG51bWJlciBnZW5lcmF0b3IsIHJldHVybnMgYW4gaW5maW5pdGUgbGF6eSBzZXF1ZW5jZVxuICBvZiByYW5kb20gbnVtYmVyIGdlbmVyYXRvcnMuIiwgOmFyZ2xpc3RzIChbcnJdKX0sIDpzb3VyY2UgIihkZWZuXG4gbGF6eS1yYW5kb20tc3RhdGVzXG4gXCJJbnRlcm5hbCBmdW5jdGlvbi5cXG5cXG4gIEdpdmVuIGEgcmFuZG9tIG51bWJlciBnZW5lcmF0b3IsIHJldHVybnMgYW4gaW5maW5pdGUgbGF6eSBzZXF1ZW5jZVxcbiAgb2YgcmFuZG9tIG51bWJlciBnZW5lcmF0b3JzLlwiXG4gezpuby1kb2MgdHJ1ZX1cbiBbcnJdXG4gKGxhenktc2VxXG4gIChjb3JlL2xldFxuICAgW1tyMSByMl0gKHJhbmRvbS9zcGxpdCBycildXG4gICAoY29ucyByMSAobGF6eS1yYW5kb20tc3RhdGVzIHIyKSkpKSlcbiJ9IHs6c3ltIHNocmluay0yLCA6bWV0YSB7OmRvYyAiQ3JlYXRlcyBhIG5ldyBnZW5lcmF0b3IgbGlrZSBgZ2VuYCwgYnV0IHdpbGwgY29uc2lkZXIgbm9kZXMgZm9yIHNocmlua2luZ1xuICBldmVuIGlmIHRoZWlyIHBhcmVudCBwYXNzZXMgdGhlIHRlc3QgKHVwIHRvIG9uZSBhZGRpdGlvbmFsIGxldmVsKS4iLCA6YXJnbGlzdHMgKFtnZW5dKX0sIDpzb3VyY2UgIihkZWZuXG4gc2hyaW5rLTJcbiBcIkNyZWF0ZXMgYSBuZXcgZ2VuZXJhdG9yIGxpa2UgYGdlbmAsIGJ1dCB3aWxsIGNvbnNpZGVyIG5vZGVzIGZvciBzaHJpbmtpbmdcXG4gIGV2ZW4gaWYgdGhlaXIgcGFyZW50IHBhc3NlcyB0aGUgdGVzdCAodXAgdG8gb25lIGFkZGl0aW9uYWwgbGV2ZWwpLlwiXG4gW2dlbl1cbiAoYXNzZXJ0IChnZW5lcmF0b3I/IGdlbikgXCJBcmcgdG8gc2hyaW5rLTIgbXVzdCBiZSBhIGdlbmVyYXRvclwiKVxuIChnZW4tZm1hcCByb3NlL2NvbGxhcHNlIGdlbikpXG4ifSB7OnN5bSBzdHJpbmctYWxwaGEtbnVtZXJpYywgOm1ldGEge30sIDpzb3VyY2UgIihkZWZcbiBzdHJpbmctYWxwaGEtbnVtZXJpY1xuIFwiRGVwcmVjYXRlZCAtIHVzZSBzdHJpbmctYWxwaGFudW1lcmljIGluc3RlYWQuXFxuXFxuICBHZW5lcmF0ZXMgYWxwaGFudW1lcmljIHN0cmluZ3MuXCJcbiBzdHJpbmctYWxwaGFudW1lcmljKVxuIn0gezpzeW0gcmVzaXplLCA6bWV0YSB7OmRvYyAiQ3JlYXRlcyBhIG5ldyBnZW5lcmF0b3Igd2l0aCBgc2l6ZWAgYWx3YXlzIGJvdW5kIHRvIGBuYC5cblxuICAgICAgKGdlbi9zYW1wbGUgKGdlbi9zZXQgKGdlbi9yZXNpemUgMjAwIGdlbi9kb3VibGUpKSlcbiAgICAgID0+ICgje31cbiAgICAgICAgICAjey00Ljk5NDc3MjM2Mjk4MDAzN0UxNDd9XG4gICAgICAgICAgI3stNC4yMzQ0MTgwNTY0ODczMzVFLTE0Nn1cbiAgICAgICAgICAje31cbiAgICAgICAgICAje31cbiAgICAgICAgICAje31cbiAgICAgICAgICAje05hTn1cbiAgICAgICAgICAjezguMTQyNDE0MTAwOTgyNjA5RS02M31cbiAgICAgICAgICAjey0zLjU4NDI5OTU1OTAzODc2RS0xNTkgMi44NTYzNzk0NjE3NjA0Mjk2RS0xNTRcbiAgICAgICAgICAgIDQuMTAyMTM2MDE5NTc3NjAwNUUtMTAwIDEuOTA4NDU2NDA0NTMzMjU0OUUtMzh9XG4gICAgICAgICAgI3stMi4xNTgyODE4MTMxODgxMzc2RTgzIC01Ljg0NjAwNjU0OTMyMzYxMTdFNDggOS43MjkyNjA5OTM4MDMyMjZFMTY2fSkiLCA6YXJnbGlzdHMgKFtuIGdlbmVyYXRvcl0pfSwgOnNvdXJjZSAiKGRlZm5cbiByZXNpemVcbiBcIkNyZWF0ZXMgYSBuZXcgZ2VuZXJhdG9yIHdpdGggYHNpemVgIGFsd2F5cyBib3VuZCB0byBgbmAuXFxuXFxuICAgICAgKGdlbi9zYW1wbGUgKGdlbi9zZXQgKGdlbi9yZXNpemUgMjAwIGdlbi9kb3VibGUpKSlcXG4gICAgICA9PiAoI3t9XFxuICAgICAgICAgICN7LTQuOTk0NzcyMzYyOTgwMDM3RTE0N31cXG4gICAgICAgICAgI3stNC4yMzQ0MTgwNTY0ODczMzVFLTE0Nn1cXG4gICAgICAgICAgI3t9XFxuICAgICAgICAgICN7fVxcbiAgICAgICAgICAje31cXG4gICAgICAgICAgI3tOYU59XFxuICAgICAgICAgICN7OC4xNDI0MTQxMDA5ODI2MDlFLTYzfVxcbiAgICAgICAgICAjey0zLjU4NDI5OTU1OTAzODc2RS0xNTkgMi44NTYzNzk0NjE3NjA0Mjk2RS0xNTRcXG4gICAgICAgICAgICA0LjEwMjEzNjAxOTU3NzYwMDVFLTEwMCAxLjkwODQ1NjQwNDUzMzI1NDlFLTM4fVxcbiAgICAgICAgICAjey0yLjE1ODI4MTgxMzE4ODEzNzZFODMgLTUuODQ2MDA2NTQ5MzIzNjExN0U0OCA5LjcyOTI2MDk5MzgwMzIyNkUxNjZ9KVwiXG4gW24gZ2VuZXJhdG9yXVxuIChhc3NlcnRcbiAgKGdlbmVyYXRvcj8gZ2VuZXJhdG9yKVxuICBcIlNlY29uZCBhcmcgdG8gcmVzaXplIG11c3QgYmUgYSBnZW5lcmF0b3JcIilcbiAoY29yZS9sZXRcbiAgW3s6a2V5cyBbZ2VuXX0gZ2VuZXJhdG9yXVxuICAobWFrZS1nZW4gKGZuIFtybmQgX3NpemVdIChnZW4gcm5kIG4pKSkpKVxuIn0gezpzeW0gbmVnLWludCwgOm1ldGEge30sIDpzb3VyY2UgIihkZWZcbiBuZWctaW50XG4gXCJEZXByZWNhdGVkIC0gdXNlIChnZW4vZm1hcCAtIGdlbi9uYXQpIGluc3RlYWQgKHNlZSBhbHNvIGdlbi9sYXJnZS1pbnRlZ2VyKS5cXG5cXG4gICh0aGlzIGdlbmVyYXRvciwgZGVzcGl0ZSBpdHMgbmFtZSwgY2FuIGdlbmVyYXRlIDApXFxuXFxuICBHZW5lcmF0ZXMgbm9ucG9zaXRpdmUgaW50ZWdlcnMgYm91bmRlZCBieSB0aGUgZ2VuZXJhdG9yJ3MgYHNpemVgIHBhcmFtZXRlci5cIlxuIChmbWFwIChmbiogW3AxX180MjQxOCNdICgqIC0xIHAxX180MjQxOCMpKSBuYXQpKVxuIn0gezpzeW0gc3RyaW5nLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZlxuIHN0cmluZ1xuIFwiR2VuZXJhdGVzIHN0cmluZ3MuIE1heSBnZW5lcmF0ZSB1bnByaW50YWJsZSBjaGFyYWN0ZXJzLlwiXG4gKGZtYXAgY2xvanVyZS5zdHJpbmcvam9pbiAodmVjdG9yIGNoYXIpKSlcbiJ9IHs6c3ltIHZlY3RvciwgOm1ldGEgezpkb2MgIkNyZWF0ZXMgYSBnZW5lcmF0b3Igb2YgdmVjdG9ycyB3aG9zZSBlbGVtZW50cyBhcmUgY2hvc2VuIGZyb21cbiAgYGdlbmVyYXRvcmAuIFRoZSBjb3VudCBvZiB0aGUgdmVjdG9yIHdpbGwgYmUgYm91bmRlZCBieSB0aGUgYHNpemVgXG4gIGdlbmVyYXRvciBwYXJhbWV0ZXIuIiwgOmFyZ2xpc3RzIFtbZ2VuZXJhdG9yXSBbZ2VuZXJhdG9yIG51bS1lbGVtZW50c10gW2dlbmVyYXRvciBtaW4tZWxlbWVudHMgbWF4LWVsZW1lbnRzXV19LCA6c291cmNlICIoZGVmblxuIHZlY3RvclxuIFwiQ3JlYXRlcyBhIGdlbmVyYXRvciBvZiB2ZWN0b3JzIHdob3NlIGVsZW1lbnRzIGFyZSBjaG9zZW4gZnJvbVxcbiAgYGdlbmVyYXRvcmAuIFRoZSBjb3VudCBvZiB0aGUgdmVjdG9yIHdpbGwgYmUgYm91bmRlZCBieSB0aGUgYHNpemVgXFxuICBnZW5lcmF0b3IgcGFyYW1ldGVyLlwiXG4gKFtnZW5lcmF0b3JdXG4gIChhc3NlcnQgKGdlbmVyYXRvcj8gZ2VuZXJhdG9yKSBcIkFyZyB0byB2ZWN0b3IgbXVzdCBiZSBhIGdlbmVyYXRvclwiKVxuICAoZ2VuLWJpbmRcbiAgIChzaXplZCAoZm4qIFtwMV9fNDI0MTkjXSAoY2hvb3NlIDAgcDFfXzQyNDE5IykpKVxuICAgKGZuXG4gICAgW251bS1lbGVtZW50cy1yb3NlXVxuICAgIChnZW4tZm1hcFxuICAgICAoZm4gW3Jvc2VzXSAocm9zZS9zaHJpbmstdmVjdG9yIGNvcmUvdmVjdG9yIHJvc2VzKSlcbiAgICAgKGdlbi10dXBsZSAocmVwZWF0IChyb3NlL3Jvb3QgbnVtLWVsZW1lbnRzLXJvc2UpIGdlbmVyYXRvcikpKSkpKVxuIChbZ2VuZXJhdG9yIG51bS1lbGVtZW50c11cbiAgKGFzc2VydFxuICAgKGdlbmVyYXRvcj8gZ2VuZXJhdG9yKVxuICAgXCJGaXJzdCBhcmcgdG8gdmVjdG9yIG11c3QgYmUgYSBnZW5lcmF0b3JcIilcbiAgKGFwcGx5IHR1cGxlIChyZXBlYXQgbnVtLWVsZW1lbnRzIGdlbmVyYXRvcikpKVxuIChbZ2VuZXJhdG9yIG1pbi1lbGVtZW50cyBtYXgtZWxlbWVudHNdXG4gIChhc3NlcnRcbiAgIChnZW5lcmF0b3I/IGdlbmVyYXRvcilcbiAgIFwiRmlyc3QgYXJnIHRvIHZlY3RvciBtdXN0IGJlIGEgZ2VuZXJhdG9yXCIpXG4gIChnZW4tYmluZFxuICAgKGNob29zZSBtaW4tZWxlbWVudHMgbWF4LWVsZW1lbnRzKVxuICAgKGZuXG4gICAgW251bS1lbGVtZW50cy1yb3NlXVxuICAgIChnZW4tZm1hcFxuICAgICAoZm5cbiAgICAgIFtyb3Nlc11cbiAgICAgIChyb3NlL2ZpbHRlclxuICAgICAgIChmblxuICAgICAgICBbdl1cbiAgICAgICAgKGFuZCAoPj0gKGNvdW50IHYpIG1pbi1lbGVtZW50cykgKDw9IChjb3VudCB2KSBtYXgtZWxlbWVudHMpKSlcbiAgICAgICAocm9zZS9zaHJpbmstdmVjdG9yIGNvcmUvdmVjdG9yIHJvc2VzKSkpXG4gICAgIChnZW4tdHVwbGUgKHJlcGVhdCAocm9zZS9yb290IG51bS1lbGVtZW50cy1yb3NlKSBnZW5lcmF0b3IpKSkpKSkpXG4ifSB7OnN5bSBsYXJnZS1pbnRlZ2VyLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZlxuIGxhcmdlLWludGVnZXJcbiBcIkdlbmVyYXRlcyBhIHBsYXRmb3JtLW5hdGl2ZSBpbnRlZ2VyIGZyb20gdGhlIGZ1bGwgYXZhaWxhYmxlIHJhbmdlXFxuICAoaW4gY2xqLCA2NC1iaXQgTG9uZ3MsIGFuZCBpbiBjbGpzLCBudW1iZXJzIGJldHdlZW4gLSgyXjUzIC0gMSkgYW5kXFxuICAoMl41MyAtIDEpKS5cXG5cXG4gIFVzZSBsYXJnZS1pbnRlZ2VyKiBmb3IgbW9yZSBjb250cm9sLlwiXG4gKGxhcmdlLWludGVnZXIqIHt9KSlcbiJ9IHs6c3ltIGtleXdvcmQtbnMsIDptZXRhIHt9LCA6c291cmNlICIoZGVmXG4ga2V5d29yZC1uc1xuIFwiR2VuZXJhdGVzIGtleXdvcmRzIHdpdGggbmFtZXNwYWNlcy5cIlxuICgtPj5cbiAgKHR1cGxlIHN5bWJvbC1uYW1lLW9yLW5hbWVzcGFjZSBzeW1ib2wtbmFtZS1vci1uYW1lc3BhY2UpXG4gIChmbWFwIChmbiBbW25zIG5hbWVdXSAoY29yZS9rZXl3b3JkIG5zIG5hbWUpKSlcbiAgKHJlc2l6ZS1zeW1ib2xpc2gtZ2VuZXJhdG9yKSkpXG4ifSB7OnN5bSBub3QtZW1wdHksIDptZXRhIHs6ZG9jICJNb2RpZmllcyBhIGdlbmVyYXRvciBzbyB0aGF0IGl0IGRvZXNuJ3QgZ2VuZXJhdGUgZW1wdHkgY29sbGVjdGlvbnMuXG5cbiAgRXhhbXBsZXM6XG5cbiAgICAgIDs7IGdlbmVyYXRlIGEgdmVjdG9yIG9mIGJvb2xlYW5zLCBidXQgbmV2ZXIgdGhlIGVtcHR5IHZlY3RvclxuICAgICAgKGdlbi9zYW1wbGUgKGdlbi9ub3QtZW1wdHkgKGdlbi92ZWN0b3IgZ2VuL2Jvb2xlYW4pKSlcbiAgICAgID0+IChbZmFsc2VdXG4gICAgICAgICAgW2ZhbHNlIGZhbHNlXVxuICAgICAgICAgIFtmYWxzZSBmYWxzZV1cbiAgICAgICAgICBbZmFsc2UgZmFsc2UgZmFsc2VdXG4gICAgICAgICAgW2ZhbHNlIGZhbHNlIGZhbHNlIGZhbHNlXVxuICAgICAgICAgIFtmYWxzZSB0cnVlIHRydWVdXG4gICAgICAgICAgW3RydWUgZmFsc2UgZmFsc2UgZmFsc2VdXG4gICAgICAgICAgW3RydWVdXG4gICAgICAgICAgW3RydWUgdHJ1ZSB0cnVlIGZhbHNlIGZhbHNlIHRydWUgZmFsc2VdXG4gICAgICAgICAgW2ZhbHNlIHRydWUgdHJ1ZSB0cnVlIGZhbHNlIHRydWUgdHJ1ZSB0cnVlIGZhbHNlXSkiLCA6YXJnbGlzdHMgKFtnZW5dKX0sIDpzb3VyY2UgIihkZWZuXG4gbm90LWVtcHR5XG4gXCJNb2RpZmllcyBhIGdlbmVyYXRvciBzbyB0aGF0IGl0IGRvZXNuJ3QgZ2VuZXJhdGUgZW1wdHkgY29sbGVjdGlvbnMuXFxuXFxuICBFeGFtcGxlczpcXG5cXG4gICAgICA7OyBnZW5lcmF0ZSBhIHZlY3RvciBvZiBib29sZWFucywgYnV0IG5ldmVyIHRoZSBlbXB0eSB2ZWN0b3JcXG4gICAgICAoZ2VuL3NhbXBsZSAoZ2VuL25vdC1lbXB0eSAoZ2VuL3ZlY3RvciBnZW4vYm9vbGVhbikpKVxcbiAgICAgID0+IChbZmFsc2VdXFxuICAgICAgICAgIFtmYWxzZSBmYWxzZV1cXG4gICAgICAgICAgW2ZhbHNlIGZhbHNlXVxcbiAgICAgICAgICBbZmFsc2UgZmFsc2UgZmFsc2VdXFxuICAgICAgICAgIFtmYWxzZSBmYWxzZSBmYWxzZSBmYWxzZV1cXG4gICAgICAgICAgW2ZhbHNlIHRydWUgdHJ1ZV1cXG4gICAgICAgICAgW3RydWUgZmFsc2UgZmFsc2UgZmFsc2VdXFxuICAgICAgICAgIFt0cnVlXVxcbiAgICAgICAgICBbdHJ1ZSB0cnVlIHRydWUgZmFsc2UgZmFsc2UgdHJ1ZSBmYWxzZV1cXG4gICAgICAgICAgW2ZhbHNlIHRydWUgdHJ1ZSB0cnVlIGZhbHNlIHRydWUgdHJ1ZSB0cnVlIGZhbHNlXSlcIlxuIFtnZW5dXG4gKGFzc2VydCAoZ2VuZXJhdG9yPyBnZW4pIFwiQXJnIHRvIG5vdC1lbXB0eSBtdXN0IGJlIGEgZ2VuZXJhdG9yXCIpXG4gKHN1Y2gtdGhhdCBjb3JlL25vdC1lbXB0eSBnZW4pKVxuIn0gezpzeW0gZWxlbWVudHMsIDptZXRhIHs6ZG9jICJDcmVhdGVzIGEgZ2VuZXJhdG9yIHRoYXQgcmFuZG9tbHkgY2hvb3NlcyBhbiBlbGVtZW50IGZyb20gYGNvbGxgLlxuXG4gICAgICAoZ2VuL3NhbXBsZSAoZ2VuL2VsZW1lbnRzIFs6Zm9vIDpiYXIgOmJhel0pKVxuICAgICAgPT4gKDpmb28gOmJheiA6YmF6IDpiYXIgOmZvbyA6Zm9vIDpiYXIgOmJhciA6Zm9vIDpiYXIpIiwgOmFyZ2xpc3RzIChbY29sbF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBlbGVtZW50c1xuIFwiQ3JlYXRlcyBhIGdlbmVyYXRvciB0aGF0IHJhbmRvbWx5IGNob29zZXMgYW4gZWxlbWVudCBmcm9tIGBjb2xsYC5cXG5cXG4gICAgICAoZ2VuL3NhbXBsZSAoZ2VuL2VsZW1lbnRzIFs6Zm9vIDpiYXIgOmJhel0pKVxcbiAgICAgID0+ICg6Zm9vIDpiYXogOmJheiA6YmFyIDpmb28gOmZvbyA6YmFyIDpiYXIgOmZvbyA6YmFyKVwiXG4gW2NvbGxdXG4gKGFzc2VydFxuICAoc2VxIGNvbGwpXG4gIFwiZWxlbWVudHMgY2Fubm90IGJlIGNhbGxlZCB3aXRoIGFuIGVtcHR5IGNvbGxlY3Rpb25cIilcbiAoY29yZS9sZXRcbiAgW3YgKHZlYyBjb2xsKV1cbiAgKGdlbi1mbWFwXG4gICAoZm4qIFtwMV9fNDI0MTYjXSAocm9zZS9mbWFwIHYgcDFfXzQyNDE2IykpXG4gICAoY2hvb3NlIDAgKGRlYyAoY291bnQgdikpKSkpKVxuIn0gezpzeW0gc2FtcGxlLCA6bWV0YSB7OmRvYyAiUmV0dXJuIGEgc2VxdWVuY2Ugb2YgYG51bS1zYW1wbGVzYCAoZGVmYXVsdCAxMClcbiAgcmVhbGl6ZWQgdmFsdWVzIGZyb20gYGdlbmVyYXRvcmAuXG5cbiAgVGhlIHNlcXVlbmNlIHN0YXJ0cyB3aXRoIHNtYWxsIHZhbHVlcyBmcm9tIHRoZSBnZW5lcmF0b3IsIHdoaWNoXG4gIHByb2JhYmx5IGRvIG5vdCByZWZsZWN0IHRoZSB2YXJpZXR5IG9mIHZhbHVlcyB0aGF0IHdpbGwgYmUgZ2VuZXJhdGVkXG4gIGR1cmluZyBhIGxvbmdlciB0ZXN0IHJ1bi5cblxuICBOb3RlIHRoYXQgdGhpcyBmdW5jdGlvbiBpcyBhIGRldiBoZWxwZXIgYW5kIGlzIG5vdCBtZWFudCB0byBiZSB1c2VkXG4gIHRvIGJ1aWxkIG90aGVyIGdlbmVyYXRvcnMuIiwgOmFyZ2xpc3RzIFtbZ2VuZXJhdG9yXSBbZ2VuZXJhdG9yIG51bS1zYW1wbGVzXV19LCA6c291cmNlICIoZGVmblxuIHNhbXBsZVxuIFwiUmV0dXJuIGEgc2VxdWVuY2Ugb2YgYG51bS1zYW1wbGVzYCAoZGVmYXVsdCAxMClcXG4gIHJlYWxpemVkIHZhbHVlcyBmcm9tIGBnZW5lcmF0b3JgLlxcblxcbiAgVGhlIHNlcXVlbmNlIHN0YXJ0cyB3aXRoIHNtYWxsIHZhbHVlcyBmcm9tIHRoZSBnZW5lcmF0b3IsIHdoaWNoXFxuICBwcm9iYWJseSBkbyBub3QgcmVmbGVjdCB0aGUgdmFyaWV0eSBvZiB2YWx1ZXMgdGhhdCB3aWxsIGJlIGdlbmVyYXRlZFxcbiAgZHVyaW5nIGEgbG9uZ2VyIHRlc3QgcnVuLlxcblxcbiAgTm90ZSB0aGF0IHRoaXMgZnVuY3Rpb24gaXMgYSBkZXYgaGVscGVyIGFuZCBpcyBub3QgbWVhbnQgdG8gYmUgdXNlZFxcbiAgdG8gYnVpbGQgb3RoZXIgZ2VuZXJhdG9ycy5cIlxuIChbZ2VuZXJhdG9yXSAoc2FtcGxlIGdlbmVyYXRvciAxMCkpXG4gKFtnZW5lcmF0b3IgbnVtLXNhbXBsZXNdXG4gIChhc3NlcnRcbiAgIChnZW5lcmF0b3I/IGdlbmVyYXRvcilcbiAgIFwiRmlyc3QgYXJnIHRvIHNhbXBsZSBtdXN0IGJlIGEgZ2VuZXJhdG9yXCIpXG4gICh0YWtlIG51bS1zYW1wbGVzIChzYW1wbGUtc2VxIGdlbmVyYXRvcikpKSlcbiJ9IHs6c3ltIGxpc3QsIDptZXRhIHs6ZG9jICJMaWtlIGB2ZWN0b3JgLCBidXQgZ2VuZXJhdGVzIGxpc3RzLiIsIDphcmdsaXN0cyAoW2dlbmVyYXRvcl0pfSwgOnNvdXJjZSAiKGRlZm5cbiBsaXN0XG4gXCJMaWtlIGB2ZWN0b3JgLCBidXQgZ2VuZXJhdGVzIGxpc3RzLlwiXG4gW2dlbmVyYXRvcl1cbiAoYXNzZXJ0XG4gIChnZW5lcmF0b3I/IGdlbmVyYXRvcilcbiAgXCJGaXJzdCBhcmcgdG8gbGlzdCBtdXN0IGJlIGEgZ2VuZXJhdG9yXCIpXG4gKGdlbi1iaW5kXG4gIChzaXplZCAoZm4qIFtwMV9fNDI0MjAjXSAoY2hvb3NlIDAgcDFfXzQyNDIwIykpKVxuICAoZm5cbiAgIFtudW0tZWxlbWVudHMtcm9zZV1cbiAgIChnZW4tZm1hcFxuICAgIChmbiBbcm9zZXNdIChyb3NlL3Nocmluay12ZWN0b3IgY29yZS9saXN0IHJvc2VzKSlcbiAgICAoZ2VuLXR1cGxlIChyZXBlYXQgKHJvc2Uvcm9vdCBudW0tZWxlbWVudHMtcm9zZSkgZ2VuZXJhdG9yKSkpKSkpXG4ifSB7OnN5bSBsYXJnZS1pbnRlZ2VyKiwgOm1ldGEgezpkb2MgIkxpa2UgbGFyZ2UtaW50ZWdlciwgYnV0IGFjY2VwdHMgb3B0aW9uczpcblxuICAgIDptaW4gIHRoZSBtaW5pbXVtIGludGVnZXIgKGluY2x1c2l2ZSlcbiAgICA6bWF4ICB0aGUgbWF4aW11bSBpbnRlZ2VyIChpbmNsdXNpdmUpXG5cbiAgQm90aCA6bWluIGFuZCA6bWF4IGFyZSBvcHRpb25hbC5cblxuICAgICAgKGdlbi9zYW1wbGUgKGdlbi9sYXJnZS1pbnRlZ2VyKiB7Om1pbiA5MDAwIDptYXggMTAwMDB9KSlcbiAgICAgID0+ICg5MDAwIDkwMDEgOTAwMSA5MDAyIDkwMDAgOTAwMyA5MDA2IDkwMzAgOTAwNSA5MDQ0KSIsIDphcmdsaXN0cyAoW3s6a2V5cyBbbWluIG1heF19XSl9LCA6c291cmNlICIoZGVmblxuIGxhcmdlLWludGVnZXIqXG4gXCJMaWtlIGxhcmdlLWludGVnZXIsIGJ1dCBhY2NlcHRzIG9wdGlvbnM6XFxuXFxuICAgIDptaW4gIHRoZSBtaW5pbXVtIGludGVnZXIgKGluY2x1c2l2ZSlcXG4gICAgOm1heCAgdGhlIG1heGltdW0gaW50ZWdlciAoaW5jbHVzaXZlKVxcblxcbiAgQm90aCA6bWluIGFuZCA6bWF4IGFyZSBvcHRpb25hbC5cXG5cXG4gICAgICAoZ2VuL3NhbXBsZSAoZ2VuL2xhcmdlLWludGVnZXIqIHs6bWluIDkwMDAgOm1heCAxMDAwMH0pKVxcbiAgICAgID0+ICg5MDAwIDkwMDEgOTAwMSA5MDAyIDkwMDAgOTAwMyA5MDA2IDkwMzAgOTAwNSA5MDQ0KVwiXG4gezphZGRlZCBcIjAuOS4wXCJ9XG4gW3s6a2V5cyBbbWluIG1heF19XVxuIChjb3JlL2xldFxuICBbbWluIChvciBtaW4gTUlOX0lOVEVHRVIpIG1heCAob3IgbWF4IE1BWF9JTlRFR0VSKV1cbiAgKGFzc2VydCAoPD0gbWluIG1heCkpXG4gIChzdWNoLXRoYXRcbiAgIChmbiogW3AxX180MjQzMSNdICg8PSBtaW4gcDFfXzQyNDMxIyBtYXgpKVxuICAgKGlmXG4gICAgKDw9IG1pbiAwIG1heClcbiAgICAobGFyZ2UtaW50ZWdlcioqIG1pbiBtYXgpXG4gICAgKGlmXG4gICAgICg8IG1heCAwKVxuICAgICAoZm1hcFxuICAgICAgKGZuKiBbcDFfXzQyNDMyI10gKCsgbWF4IHAxX180MjQzMiMpKVxuICAgICAgKGxhcmdlLWludGVnZXIqKiAoLSBtaW4gbWF4KSAwKSlcbiAgICAgKGZtYXBcbiAgICAgIChmbiogW3AxX180MjQzMyNdICgrIG1pbiBwMV9fNDI0MzMjKSlcbiAgICAgIChsYXJnZS1pbnRlZ2VyKiogMCAoLSBtYXggbWluKSkpKSkpKSlcbiJ9IHs6c3ltIGtleXdvcmQsIDptZXRhIHt9LCA6c291cmNlICIoZGVmXG4ga2V5d29yZFxuIFwiR2VuZXJhdGVzIGtleXdvcmRzIHdpdGhvdXQgbmFtZXNwYWNlcy5cIlxuICgtPj5cbiAgc3ltYm9sLW5hbWUtb3ItbmFtZXNwYWNlXG4gIChmbWFwIGNvcmUva2V5d29yZClcbiAgKHJlc2l6ZS1zeW1ib2xpc2gtZ2VuZXJhdG9yKSkpXG4ifSB7OnN5bSBoYXNoLW1hcCwgOm1ldGEgezpkb2MgIkxpa2UgY2xvanVyZS5jb3JlL2hhc2gtbWFwLCBleGNlcHQgdGhlIHZhbHVlcyBhcmUgZ2VuZXJhdG9ycy5cbiAgIFJldHVybnMgYSBnZW5lcmF0b3IgdGhhdCBtYWtlcyBtYXBzIHdpdGggdGhlIHN1cHBsaWVkIGtleXMgYW5kXG4gICB2YWx1ZXMgZ2VuZXJhdGVkIHVzaW5nIHRoZSBzdXBwbGllZCBnZW5lcmF0b3JzLlxuXG4gICAgICAgKGdlbi9zYW1wbGUgKGdlbi9oYXNoLW1hcCA6YSBnZW4vYm9vbGVhbiA6YiBnZW4vbmF0KSlcbiAgICAgICA9PiAoezphIGZhbHNlLCA6YiAwfVxuICAgICAgICAgICB7OmEgdHJ1ZSwgIDpiIDF9XG4gICAgICAgICAgIHs6YSBmYWxzZSwgOmIgMn1cbiAgICAgICAgICAgezphIHRydWUsICA6YiAyfVxuICAgICAgICAgICB7OmEgZmFsc2UsIDpiIDR9XG4gICAgICAgICAgIHs6YSBmYWxzZSwgOmIgMn1cbiAgICAgICAgICAgezphIHRydWUsICA6YiAzfVxuICAgICAgICAgICB7OmEgdHJ1ZSwgIDpiIDR9XG4gICAgICAgICAgIHs6YSBmYWxzZSwgOmIgMX1cbiAgICAgICAgICAgezphIGZhbHNlLCA6YiAwfSkiLCA6YXJnbGlzdHMgKFsmIGt2c10pfSwgOnNvdXJjZSAiKGRlZm5cbiBoYXNoLW1hcFxuIFwiTGlrZSBjbG9qdXJlLmNvcmUvaGFzaC1tYXAsIGV4Y2VwdCB0aGUgdmFsdWVzIGFyZSBnZW5lcmF0b3JzLlxcbiAgIFJldHVybnMgYSBnZW5lcmF0b3IgdGhhdCBtYWtlcyBtYXBzIHdpdGggdGhlIHN1cHBsaWVkIGtleXMgYW5kXFxuICAgdmFsdWVzIGdlbmVyYXRlZCB1c2luZyB0aGUgc3VwcGxpZWQgZ2VuZXJhdG9ycy5cXG5cXG4gICAgICAgKGdlbi9zYW1wbGUgKGdlbi9oYXNoLW1hcCA6YSBnZW4vYm9vbGVhbiA6YiBnZW4vbmF0KSlcXG4gICAgICAgPT4gKHs6YSBmYWxzZSwgOmIgMH1cXG4gICAgICAgICAgIHs6YSB0cnVlLCAgOmIgMX1cXG4gICAgICAgICAgIHs6YSBmYWxzZSwgOmIgMn1cXG4gICAgICAgICAgIHs6YSB0cnVlLCAgOmIgMn1cXG4gICAgICAgICAgIHs6YSBmYWxzZSwgOmIgNH1cXG4gICAgICAgICAgIHs6YSBmYWxzZSwgOmIgMn1cXG4gICAgICAgICAgIHs6YSB0cnVlLCAgOmIgM31cXG4gICAgICAgICAgIHs6YSB0cnVlLCAgOmIgNH1cXG4gICAgICAgICAgIHs6YSBmYWxzZSwgOmIgMX1cXG4gICAgICAgICAgIHs6YSBmYWxzZSwgOmIgMH0pXCJcbiBbJiBrdnNdXG4gKGFzc2VydCAoZXZlbj8gKGNvdW50IGt2cykpKVxuIChjb3JlL2xldFxuICBba3MgKHRha2UtbnRoIDIga3ZzKSB2cyAodGFrZS1udGggMiAocmVzdCBrdnMpKV1cbiAgKGFzc2VydFxuICAgKGV2ZXJ5PyBnZW5lcmF0b3I/IHZzKVxuICAgXCJWYWx1ZSBhcmdzIHRvIGhhc2gtbWFwIG11c3QgYmUgZ2VuZXJhdG9yc1wiKVxuICAoZm1hcCAoZm4qIFtwMV9fNDI0MjIjXSAoemlwbWFwIGtzIHAxX180MjQyMiMpKSAoYXBwbHkgdHVwbGUgdnMpKSkpXG4ifSB7OnN5bSBjYWxsLWdlbiwgOm1ldGEgezpkb2MgIkludGVybmFsIGZ1bmN0aW9uLiIsIDphcmdsaXN0cyAoW3tnZW5lcmF0b3ItZm4gOmdlbn0gcm5kIHNpemVdKX0sIDpzb3VyY2UgIihkZWZuXG4gY2FsbC1nZW5cbiBcIkludGVybmFsIGZ1bmN0aW9uLlwiXG4gezpuby1kb2MgdHJ1ZX1cbiBbe2dlbmVyYXRvci1mbiA6Z2VufSBybmQgc2l6ZV1cbiAoZ2VuZXJhdG9yLWZuIHJuZCBzaXplKSlcbiJ9IHs6c3ltIHJhdGlvLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZlxuIHJhdGlvXG4gXCJHZW5lcmF0ZXMgYSBzbWFsbCByYXRpbyAob3IgaW50ZWdlcikgdXNpbmcgZ2VuL3NtYWxsLWludGVnZXIuIFNocmlua3NcXG4gIHRvd2FyZCBzaW1wbGVyIHJhdGlvcywgd2hpY2ggbWF5IGJlIGxhcmdlciBvciBzbWFsbGVyLlwiXG4gKGZtYXAgKGZuIFtbYSBiXV0gKC8gYSBiKSkgKHR1cGxlIHNtYWxsLWludGVnZXIgKGZtYXAgaW5jIG5hdCkpKSlcbiJ9IHs6c3ltIHN1Y2gtdGhhdCwgOm1ldGEgezpkb2MgIkNyZWF0ZXMgYSBnZW5lcmF0b3IgdGhhdCBnZW5lcmF0ZXMgdmFsdWVzIGZyb20gYGdlbmAgdGhhdCBzYXRpc2Z5IHByZWRpY2F0ZVxuICBgcHJlZGAuIENhcmUgaXMgbmVlZGVkIHRvIGVuc3VyZSB0aGVyZSBpcyBhIGhpZ2ggY2hhbmNlIGBnZW5gIHdpbGwgc2F0aXNmeVxuICBgcHJlZGAuIEJ5IGRlZmF1bHQsIGBzdWNoLXRoYXRgIHdpbGwgdHJ5IDEwIHRpbWVzIHRvIGdlbmVyYXRlIGEgdmFsdWUgdGhhdFxuICBzYXRpc2ZpZXMgdGhlIHByZWRpY2F0ZS4gSWYgbm8gdmFsdWUgcGFzc2VzIHRoaXMgcHJlZGljYXRlIGFmdGVyIHRoaXMgbnVtYmVyXG4gIG9mIGl0ZXJhdGlvbnMsIGEgcnVudGltZSBleGNlcHRpb24gd2lsbCBiZSB0aHJvd24uIE5vdGUgYWxzbyB0aGF0IGVhY2hcbiAgdGltZSBzdWNoLXRoYXQgcmV0cmllcywgaXQgd2lsbCBpbmNyZWFzZSB0aGUgc2l6ZSBwYXJhbWV0ZXIuXG5cbiAgRXhhbXBsZXM6XG5cbiAgICAgIDs7IGdlbmVyYXRlIG5vbi1lbXB0eSB2ZWN0b3JzIG9mIGludGVnZXJzXG4gICAgICA7OyAobm90ZSwgZ2VuL25vdC1lbXB0eSBkb2VzIGV4YWN0bHkgdGhpcylcbiAgICAgIChnZW4vc3VjaC10aGF0IG5vdC1lbXB0eSAoZ2VuL3ZlY3RvciBnZW4vc21hbGwtaW50ZWdlcikpXG5cbiAgWW91IGNhbiBjdXN0b21pemUgYHN1Y2gtdGhhdGAgYnkgcGFzc2luZyBhbiBvcHRpb25hbCB0aGlyZCBhcmd1bWVudCwgd2hpY2ggY2FuXG4gIGVpdGhlciBiZSBhbiBpbnRlZ2VyIHJlcHJlc2VudGluZyB0aGUgbWF4aW11bSBudW1iZXIgb2YgdGltZXMgdGVzdC5jaGVja1xuICB3aWxsIHRyeSB0byBnZW5lcmF0ZSBhIHZhbHVlIG1hdGNoaW5nIHRoZSBwcmVkaWNhdGUsIG9yIGEgbWFwOlxuXG4gICAgICA6bWF4LXRyaWVzICBwb3NpdGl2ZSBpbnRlZ2VyLCB0aGUgbWF4aW11bSBudW1iZXIgb2YgdHJpZXMgKGRlZmF1bHQgMTApXG4gICAgICA6ZXgtZm4gICAgICBhIGZ1bmN0aW9uIG9mIG9uZSBhcmcgdGhhdCB3aWxsIGJlIGNhbGxlZCBpZiB0ZXN0LmNoZWNrIGNhbm5vdFxuICAgICAgICAgICAgICAgICAgZ2VuZXJhdGUgYSBtYXRjaGluZyB2YWx1ZTsgaXQgd2lsbCBiZSBwYXNzZWQgYSBtYXAgd2l0aCBgOmdlbmAsXG4gICAgICAgICAgICAgICAgICBgOnByZWRgLCBhbmQgYDptYXgtdHJpZXNgIGFuZCBzaG91bGQgcmV0dXJuIGFuIGV4Y2VwdGlvbiIsIDphcmdsaXN0cyBbW3ByZWQgZ2VuXSBbcHJlZCBnZW4gbWF4LXRyaWVzLW9yLW9wdHNdXX0sIDpzb3VyY2UgIihkZWZuXG4gc3VjaC10aGF0XG4gXCJDcmVhdGVzIGEgZ2VuZXJhdG9yIHRoYXQgZ2VuZXJhdGVzIHZhbHVlcyBmcm9tIGBnZW5gIHRoYXQgc2F0aXNmeSBwcmVkaWNhdGVcXG4gIGBwcmVkYC4gQ2FyZSBpcyBuZWVkZWQgdG8gZW5zdXJlIHRoZXJlIGlzIGEgaGlnaCBjaGFuY2UgYGdlbmAgd2lsbCBzYXRpc2Z5XFxuICBgcHJlZGAuIEJ5IGRlZmF1bHQsIGBzdWNoLXRoYXRgIHdpbGwgdHJ5IDEwIHRpbWVzIHRvIGdlbmVyYXRlIGEgdmFsdWUgdGhhdFxcbiAgc2F0aXNmaWVzIHRoZSBwcmVkaWNhdGUuIElmIG5vIHZhbHVlIHBhc3NlcyB0aGlzIHByZWRpY2F0ZSBhZnRlciB0aGlzIG51bWJlclxcbiAgb2YgaXRlcmF0aW9ucywgYSBydW50aW1lIGV4Y2VwdGlvbiB3aWxsIGJlIHRocm93bi4gTm90ZSBhbHNvIHRoYXQgZWFjaFxcbiAgdGltZSBzdWNoLXRoYXQgcmV0cmllcywgaXQgd2lsbCBpbmNyZWFzZSB0aGUgc2l6ZSBwYXJhbWV0ZXIuXFxuXFxuICBFeGFtcGxlczpcXG5cXG4gICAgICA7OyBnZW5lcmF0ZSBub24tZW1wdHkgdmVjdG9ycyBvZiBpbnRlZ2Vyc1xcbiAgICAgIDs7IChub3RlLCBnZW4vbm90LWVtcHR5IGRvZXMgZXhhY3RseSB0aGlzKVxcbiAgICAgIChnZW4vc3VjaC10aGF0IG5vdC1lbXB0eSAoZ2VuL3ZlY3RvciBnZW4vc21hbGwtaW50ZWdlcikpXFxuXFxuICBZb3UgY2FuIGN1c3RvbWl6ZSBgc3VjaC10aGF0YCBieSBwYXNzaW5nIGFuIG9wdGlvbmFsIHRoaXJkIGFyZ3VtZW50LCB3aGljaCBjYW5cXG4gIGVpdGhlciBiZSBhbiBpbnRlZ2VyIHJlcHJlc2VudGluZyB0aGUgbWF4aW11bSBudW1iZXIgb2YgdGltZXMgdGVzdC5jaGVja1xcbiAgd2lsbCB0cnkgdG8gZ2VuZXJhdGUgYSB2YWx1ZSBtYXRjaGluZyB0aGUgcHJlZGljYXRlLCBvciBhIG1hcDpcXG5cXG4gICAgICA6bWF4LXRyaWVzICBwb3NpdGl2ZSBpbnRlZ2VyLCB0aGUgbWF4aW11bSBudW1iZXIgb2YgdHJpZXMgKGRlZmF1bHQgMTApXFxuICAgICAgOmV4LWZuICAgICAgYSBmdW5jdGlvbiBvZiBvbmUgYXJnIHRoYXQgd2lsbCBiZSBjYWxsZWQgaWYgdGVzdC5jaGVjayBjYW5ub3RcXG4gICAgICAgICAgICAgICAgICBnZW5lcmF0ZSBhIG1hdGNoaW5nIHZhbHVlOyBpdCB3aWxsIGJlIHBhc3NlZCBhIG1hcCB3aXRoIGA6Z2VuYCxcXG4gICAgICAgICAgICAgICAgICBgOnByZWRgLCBhbmQgYDptYXgtdHJpZXNgIGFuZCBzaG91bGQgcmV0dXJuIGFuIGV4Y2VwdGlvblwiXG4gKFtwcmVkIGdlbl0gKHN1Y2gtdGhhdCBwcmVkIGdlbiAxMCkpXG4gKFtwcmVkIGdlbiBtYXgtdHJpZXMtb3Itb3B0c11cbiAgKGNvcmUvbGV0XG4gICBbb3B0c1xuICAgIChjb25kXG4gICAgIChpbnRlZ2VyPyBtYXgtdHJpZXMtb3Itb3B0cylcbiAgICAgezptYXgtdHJpZXMgbWF4LXRyaWVzLW9yLW9wdHN9XG4gICAgIChtYXA/IG1heC10cmllcy1vci1vcHRzKVxuICAgICBtYXgtdHJpZXMtb3Itb3B0c1xuICAgICA6ZWxzZVxuICAgICAodGhyb3dcbiAgICAgIChleC1pbmZvXG4gICAgICAgXCJCYWQgYXJndW1lbnQgdG8gc3VjaC10aGF0IVwiXG4gICAgICAgezptYXgtdHJpZXMtb3Itb3B0cyBtYXgtdHJpZXMtb3Itb3B0c30pKSlcbiAgICBvcHRzXG4gICAgKG1lcmdlIGRlZmF1bHQtc3VjaC10aGF0LW9wdHMgb3B0cyldXG4gICAoYXNzZXJ0XG4gICAgKGdlbmVyYXRvcj8gZ2VuKVxuICAgIFwiU2Vjb25kIGFyZyB0byBzdWNoLXRoYXQgbXVzdCBiZSBhIGdlbmVyYXRvclwiKVxuICAgKG1ha2UtZ2VuXG4gICAgKGZuXG4gICAgIFtyYW5kLXNlZWQgc2l6ZV1cbiAgICAgKHN1Y2gtdGhhdC1oZWxwZXIgcHJlZCBnZW4gb3B0cyByYW5kLXNlZWQgc2l6ZSkpKSkpKVxuIn0gezpzeW0gdmVjdG9yLWRpc3RpbmN0LWJ5LCA6bWV0YSB7OmRvYyAiR2VuZXJhdGVzIGEgdmVjdG9yIG9mIGVsZW1lbnRzIGZyb20gdGhlIGdpdmVuIGdlbmVyYXRvciwgd2l0aCB0aGVcbiAgZ3VhcmFudGVlIHRoYXQgKG1hcCBrZXktZm4gdGhlLXZlY3Rvcikgd2lsbCBiZSBkaXN0aW5jdC5cblxuICBJZiB0aGUgZ2VuZXJhdG9yIGNhbm5vdCBvciBpcyB1bmxpa2VseSB0byBwcm9kdWNlIGVub3VnaCBkaXN0aW5jdFxuICBlbGVtZW50cywgdGhpcyBnZW5lcmF0b3Igd2lsbCBmYWlsIGluIHRoZSBzYW1lIHdheSBhcyBgc3VjaC10aGF0YC5cblxuICBBdmFpbGFibGUgb3B0aW9uczpcblxuICAgIDpudW0tZWxlbWVudHMgIHRoZSBmaXhlZCBzaXplIG9mIGdlbmVyYXRlZCB2ZWN0b3JzXG4gICAgOm1pbi1lbGVtZW50cyAgdGhlIG1pbiBzaXplIG9mIGdlbmVyYXRlZCB2ZWN0b3JzXG4gICAgOm1heC1lbGVtZW50cyAgdGhlIG1heCBzaXplIG9mIGdlbmVyYXRlZCB2ZWN0b3JzXG4gICAgOm1heC10cmllcyAgICAgdGhlIG51bWJlciBvZiB0aW1lcyB0aGUgZ2VuZXJhdG9yIHdpbGwgYmUgdHJpZWQgYmVmb3JlXG4gICAgICAgICAgICAgICAgICAgZmFpbGluZyB3aGVuIGl0IGRvZXMgbm90IHByb2R1Y2UgZGlzdGluY3QgZWxlbWVudHNcbiAgICAgICAgICAgICAgICAgICAoZGVmYXVsdCAxMClcbiAgICA6ZXgtZm4gICAgICAgICBhIGZ1bmN0aW9uIG9mIG9uZSBhcmcgdGhhdCB3aWxsIGJlIGNhbGxlZCBpZiB0ZXN0LmNoZWNrIGNhbm5vdFxuICAgICAgICAgICAgICAgICAgIGdlbmVyYXRlIGVub3VnaCBkaXN0aW5jdCB2YWx1ZXM7IGl0IHdpbGwgYmUgcGFzc2VkIGEgbWFwIHdpdGhcbiAgICAgICAgICAgICAgICAgICBgOmdlbmAsIGA6bnVtLWVsZW1lbnRzYCwgYW5kIGA6bWF4LXRyaWVzYCBhbmQgc2hvdWxkIHJldHVybiBhblxuICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbiIsIDphcmdsaXN0cyBbW2tleS1mbiBnZW5dIFtrZXktZm4gZ2VuIG9wdHNdXX0sIDpzb3VyY2UgIihkZWZuXG4gdmVjdG9yLWRpc3RpbmN0LWJ5XG4gXCJHZW5lcmF0ZXMgYSB2ZWN0b3Igb2YgZWxlbWVudHMgZnJvbSB0aGUgZ2l2ZW4gZ2VuZXJhdG9yLCB3aXRoIHRoZVxcbiAgZ3VhcmFudGVlIHRoYXQgKG1hcCBrZXktZm4gdGhlLXZlY3Rvcikgd2lsbCBiZSBkaXN0aW5jdC5cXG5cXG4gIElmIHRoZSBnZW5lcmF0b3IgY2Fubm90IG9yIGlzIHVubGlrZWx5IHRvIHByb2R1Y2UgZW5vdWdoIGRpc3RpbmN0XFxuICBlbGVtZW50cywgdGhpcyBnZW5lcmF0b3Igd2lsbCBmYWlsIGluIHRoZSBzYW1lIHdheSBhcyBgc3VjaC10aGF0YC5cXG5cXG4gIEF2YWlsYWJsZSBvcHRpb25zOlxcblxcbiAgICA6bnVtLWVsZW1lbnRzICB0aGUgZml4ZWQgc2l6ZSBvZiBnZW5lcmF0ZWQgdmVjdG9yc1xcbiAgICA6bWluLWVsZW1lbnRzICB0aGUgbWluIHNpemUgb2YgZ2VuZXJhdGVkIHZlY3RvcnNcXG4gICAgOm1heC1lbGVtZW50cyAgdGhlIG1heCBzaXplIG9mIGdlbmVyYXRlZCB2ZWN0b3JzXFxuICAgIDptYXgtdHJpZXMgICAgIHRoZSBudW1iZXIgb2YgdGltZXMgdGhlIGdlbmVyYXRvciB3aWxsIGJlIHRyaWVkIGJlZm9yZVxcbiAgICAgICAgICAgICAgICAgICBmYWlsaW5nIHdoZW4gaXQgZG9lcyBub3QgcHJvZHVjZSBkaXN0aW5jdCBlbGVtZW50c1xcbiAgICAgICAgICAgICAgICAgICAoZGVmYXVsdCAxMClcXG4gICAgOmV4LWZuICAgICAgICAgYSBmdW5jdGlvbiBvZiBvbmUgYXJnIHRoYXQgd2lsbCBiZSBjYWxsZWQgaWYgdGVzdC5jaGVjayBjYW5ub3RcXG4gICAgICAgICAgICAgICAgICAgZ2VuZXJhdGUgZW5vdWdoIGRpc3RpbmN0IHZhbHVlczsgaXQgd2lsbCBiZSBwYXNzZWQgYSBtYXAgd2l0aFxcbiAgICAgICAgICAgICAgICAgICBgOmdlbmAsIGA6bnVtLWVsZW1lbnRzYCwgYW5kIGA6bWF4LXRyaWVzYCBhbmQgc2hvdWxkIHJldHVybiBhblxcbiAgICAgICAgICAgICAgICAgICBleGNlcHRpb25cIlxuIHs6YWRkZWQgXCIwLjkuMFwifVxuIChba2V5LWZuIGdlbl0gKHZlY3Rvci1kaXN0aW5jdC1ieSBrZXktZm4gZ2VuIHt9KSlcbiAoW2tleS1mbiBnZW4gb3B0c11cbiAgKGFzc2VydFxuICAgKGdlbmVyYXRvcj8gZ2VuKVxuICAgXCJTZWNvbmQgYXJnIHRvIHZlY3Rvci1kaXN0aW5jdC1ieSBtdXN0IGJlIGEgZ2VuZXJhdG9yIVwiKVxuICAoY29sbC1kaXN0aW5jdC1ieSBbXSBrZXktZm4gdHJ1ZSB0cnVlIGdlbiBvcHRzKSkpXG4ifSB7OnN5bSBmbWFwLCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIGdlbmVyYXRvciBsaWtlIGBnZW5gIGJ1dCB3aXRoIHZhbHVlcyB0cmFuc2Zvcm1lZCBieSBgZmAuXG4gIEUuZy46XG5cbiAgICAgIChnZW4vc2FtcGxlIChnZW4vZm1hcCBzdHIgZ2VuL25hdCkpXG4gICAgICA9PiAoXCIwXCIgXCIxXCIgXCIwXCIgXCIxXCIgXCI0XCIgXCIzXCIgXCI2XCIgXCI2XCIgXCI0XCIgXCIyXCIpXG5cbiAgQWxzbyBzZWUgZ2VuL2xldCBmb3IgYSBtYWNybyB3aXRoIHNpbWlsYXIgZnVuY3Rpb25hbGl0eS4iLCA6YXJnbGlzdHMgKFtmIGdlbl0pfSwgOnNvdXJjZSAiKGRlZm5cbiBmbWFwXG4gXCJSZXR1cm5zIGEgZ2VuZXJhdG9yIGxpa2UgYGdlbmAgYnV0IHdpdGggdmFsdWVzIHRyYW5zZm9ybWVkIGJ5IGBmYC5cXG4gIEUuZy46XFxuXFxuICAgICAgKGdlbi9zYW1wbGUgKGdlbi9mbWFwIHN0ciBnZW4vbmF0KSlcXG4gICAgICA9PiAoXFxcIjBcXFwiIFxcXCIxXFxcIiBcXFwiMFxcXCIgXFxcIjFcXFwiIFxcXCI0XFxcIiBcXFwiM1xcXCIgXFxcIjZcXFwiIFxcXCI2XFxcIiBcXFwiNFxcXCIgXFxcIjJcXFwiKVxcblxcbiAgQWxzbyBzZWUgZ2VuL2xldCBmb3IgYSBtYWNybyB3aXRoIHNpbWlsYXIgZnVuY3Rpb25hbGl0eS5cIlxuIFtmIGdlbl1cbiAoYXNzZXJ0IChnZW5lcmF0b3I/IGdlbikgXCJTZWNvbmQgYXJnIHRvIGZtYXAgbXVzdCBiZSBhIGdlbmVyYXRvclwiKVxuIChnZW4tZm1hcCAoZm4qIFtwMV9fNDI0MDYjXSAocm9zZS9mbWFwIGYgcDFfXzQyNDA2IykpIGdlbikpXG4ifSB7OnN5bSBuby1zaHJpbmssIDptZXRhIHs6ZG9jICJDcmVhdGVzIGEgbmV3IGdlbmVyYXRvciB0aGF0IGlzIGp1c3QgbGlrZSBgZ2VuYCwgZXhjZXB0IGRvZXMgbm90IHNocmlua1xuICBhdCBhbGwuIFRoaXMgY2FuIGJlIHVzZWZ1bCB3aGVuIHNocmlua2luZyBpcyB0YWtpbmcgYSBsb25nIHRpbWUgb3IgaXMgbm90XG4gIGFwcGxpY2FibGUgdG8gdGhlIGRvbWFpbi4iLCA6YXJnbGlzdHMgKFtnZW5dKX0sIDpzb3VyY2UgIihkZWZuXG4gbm8tc2hyaW5rXG4gXCJDcmVhdGVzIGEgbmV3IGdlbmVyYXRvciB0aGF0IGlzIGp1c3QgbGlrZSBgZ2VuYCwgZXhjZXB0IGRvZXMgbm90IHNocmlua1xcbiAgYXQgYWxsLiBUaGlzIGNhbiBiZSB1c2VmdWwgd2hlbiBzaHJpbmtpbmcgaXMgdGFraW5nIGEgbG9uZyB0aW1lIG9yIGlzIG5vdFxcbiAgYXBwbGljYWJsZSB0byB0aGUgZG9tYWluLlwiXG4gW2dlbl1cbiAoYXNzZXJ0IChnZW5lcmF0b3I/IGdlbikgXCJBcmcgdG8gbm8tc2hyaW5rIG11c3QgYmUgYSBnZW5lcmF0b3JcIilcbiAoZ2VuLWZtYXAgKGZuIFtyb3NlXSAocm9zZS9tYWtlLXJvc2UgKHJvc2Uvcm9vdCByb3NlKSBbXSkpIGdlbikpXG4ifSB7OnN5bSBjaGFyLWFzY2lpLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZlxuIGNoYXItYXNjaWlcbiBcIkdlbmVyYXRlcyBvbmx5IGFzY2lpIGNoYXJhY3RlcnMuXCJcbiAoZm1hcCBjb3JlL2NoYXIgKGNob29zZSAzMiAxMjYpKSlcbiJ9IHs6c3ltIHNpbXBsZS10eXBlLXByaW50YWJsZSwgOm1ldGEge30sIDpzb3VyY2UgIihkZWZcbiBzaW1wbGUtdHlwZS1wcmludGFibGVcbiBcIkdlbmVyYXRlcyBhIHZhcmlldHkgb2Ygc2NhbGFyIHR5cGVzLCB3aXRoIHByaW50YWJsZSBzdHJpbmdzLlwiXG4gKGJhc2Utc2ltcGxlLXR5cGUgZG91YmxlIGNoYXItYXNjaWkgc3RyaW5nLWFzY2lpKSlcbiJ9KSwgZGV2dG9vbHMucmVwb3J0ZXIgKHs6c3ltIGlzc3Vlcy11cmwsIDptZXRhIHt9LCA6c291cmNlICIoZGVmIGlzc3Vlcy11cmwgXCJodHRwczovL2dpdGh1Yi5jb20vYmluYXJ5YWdlL2NsanMtZGV2dG9vbHMvaXNzdWVzXCIpXG4ifSB7OnN5bSByZXBvcnQtaW50ZXJuYWwtZXJyb3IhLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2UgJiBbY29udGV4dCBmb290ZXJdXSl9LCA6c291cmNlICIoZGVmblxuIHJlcG9ydC1pbnRlcm5hbC1lcnJvciFcbiBbZSAmIFtjb250ZXh0IGZvb3Rlcl1dXG4gKGxldFxuICBbY29uc29sZSAoY29udGV4dC9nZXQtY29uc29sZSldXG4gICh0cnlcbiAgIChsZXRcbiAgICBbbWVzc2FnZVxuICAgICAoaWYgKGluc3RhbmNlPyBqcy9FcnJvciBlKSAob3IgKC4tbWVzc2FnZSBlKSBlKSBlKVxuICAgICBoZWFkZXJcbiAgICAgI2pzIFtcIiVjQ0xKUyBEZXZUb29scyBFcnJvciVjJXNcIiBcImJhY2tncm91bmQtY29sb3I6cmVkO2NvbG9yOndoaXRlO2ZvbnQtd2VpZ2h0OmJvbGQ7cGFkZGluZzowcHggM3B4O2JvcmRlci1yYWRpdXM6MnB4O1wiIFwiY29sb3I6cmVkXCIgKHN0ciBcIiBcIiBtZXNzYWdlKV1cbiAgICAgY29udGV4dC1tc2dcbiAgICAgKHN0clxuICAgICAgXCJJbiBcIlxuICAgICAgKHV0aWwvZ2V0LWxpYi1pbmZvKVxuICAgICAgKGlmIGNvbnRleHQgKHN0ciBcIiwgXCIgY29udGV4dCBcIi5cIikgXCIuXCIpXG4gICAgICBcIlxcblxcblwiKVxuICAgICBmb290ZXItbXNnXG4gICAgIChpZlxuICAgICAgKHNvbWU/IGZvb3RlcilcbiAgICAgIGZvb3RlclxuICAgICAgKHN0ciBcIlxcblxcblwiIFwiLS0tXFxuXCIgXCJQbGVhc2UgcmVwb3J0IHRoZSBpc3N1ZSBoZXJlOiBcIiBpc3N1ZXMtdXJsKSlcbiAgICAgZGV0YWlsc1xuICAgICAjanMgW2NvbnRleHQtbXNnIGUgZm9vdGVyLW1zZ11dXG4gICAgKGxldFxuICAgICBbZ3JvdXAtY29sbGFwc2VkXG4gICAgICAob2dldCBjb25zb2xlIFwiZ3JvdXBDb2xsYXBzZWRcIilcbiAgICAgIGxvZ1xuICAgICAgKG9nZXQgY29uc29sZSBcImxvZ1wiKVxuICAgICAgZ3JvdXAtZW5kXG4gICAgICAob2dldCBjb25zb2xlIFwiZ3JvdXBFbmRcIildXG4gICAgIChhc3NlcnQgZ3JvdXAtY29sbGFwc2VkKVxuICAgICAoYXNzZXJ0IGxvZylcbiAgICAgKGFzc2VydCBncm91cC1lbmQpXG4gICAgICguYXBwbHkgZ3JvdXAtY29sbGFwc2VkIGNvbnNvbGUgaGVhZGVyKVxuICAgICAoLmFwcGx5IGxvZyBjb25zb2xlIGRldGFpbHMpXG4gICAgICguY2FsbCBncm91cC1lbmQgY29uc29sZSkpKVxuICAgKGNhdGNoXG4gICAgOmRlZmF1bHRcbiAgICBlXG4gICAgKC5lcnJvciBjb25zb2xlIFwiRkFUQUw6IHJlcG9ydC1pbnRlcm5hbC1lcnJvciEgZmFpbGVkXCIgZSkpKSkpXG4ifSksIGNsanMudGVzdCAoezpzeW0gdGVzdC12YXIsIDptZXRhIHs6ZG9jICJJZiB2IGhhcyBhIGZ1bmN0aW9uIGluIGl0cyA6dGVzdCBtZXRhZGF0YSwgY2FsbHMgdGhhdCBmdW5jdGlvbixcbiAgYWRkIHYgdG8gOnRlc3RpbmctdmFycyBwcm9wZXJ0eSBvZiBlbnYuIiwgOmFyZ2xpc3RzIChbdl0pfSwgOnNvdXJjZSAiKGRlZm5cbiB0ZXN0LXZhclxuIFwiSWYgdiBoYXMgYSBmdW5jdGlvbiBpbiBpdHMgOnRlc3QgbWV0YWRhdGEsIGNhbGxzIHRoYXQgZnVuY3Rpb24sXFxuICBhZGQgdiB0byA6dGVzdGluZy12YXJzIHByb3BlcnR5IG9mIGVudi5cIlxuIFt2XVxuIChydW4tYmxvY2sgKHRlc3QtdmFyLWJsb2NrIHYpKSlcbiJ9IHs6c3ltIGRvLXJlcG9ydCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFttXSl9LCA6c291cmNlICIoZGVmblxuIGRvLXJlcG9ydFxuIFttXVxuIChsZXRcbiAgW21cbiAgIChjYXNlXG4gICAgKDp0eXBlIG0pXG4gICAgOmZhaWxcbiAgICAobWVyZ2UgKGZpbGUtYW5kLWxpbmUgKGpzL0Vycm9yLikgNCkgbSlcbiAgICA6ZXJyb3JcbiAgICAobWVyZ2UgKGZpbGUtYW5kLWxpbmUgKDphY3R1YWwgbSkgMCkgbSlcbiAgICBtKV1cbiAgKHJlcG9ydCBtKSkpXG4ifSB7OnN5bSBhc3luYz8sIDptZXRhIHs6ZG9jICJSZXR1cm5zIHdoZXRoZXIgeCBpbXBsZW1lbnRzIElBc3luY1Rlc3QuIiwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBhc3luYz9cbiBcIlJldHVybnMgd2hldGhlciB4IGltcGxlbWVudHMgSUFzeW5jVGVzdC5cIlxuIFt4XVxuIChzYXRpc2ZpZXM/IElBc3luY1Rlc3QgeCkpXG4ifSB7OnN5bSB0ZXN0aW5nLWNvbnRleHRzLXN0ciwgOm1ldGEgezpkb2MgIlJldHVybnMgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIGN1cnJlbnQgdGVzdCBjb250ZXh0LiBKb2luc1xuICBzdHJpbmdzIGluICp0ZXN0aW5nLWNvbnRleHRzKiB3aXRoIHNwYWNlcy4iLCA6YXJnbGlzdHMgKFtdKX0sIDpzb3VyY2UgIihkZWZuXG4gdGVzdGluZy1jb250ZXh0cy1zdHJcbiBcIlJldHVybnMgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIGN1cnJlbnQgdGVzdCBjb250ZXh0LiBKb2luc1xcbiAgc3RyaW5ncyBpbiAqdGVzdGluZy1jb250ZXh0cyogd2l0aCBzcGFjZXMuXCJcbiBbXVxuIChhcHBseVxuICBzdHJcbiAgKGludGVycG9zZSBcIiBcIiAocmV2ZXJzZSAoOnRlc3RpbmctY29udGV4dHMgKGdldC1jdXJyZW50LWVudikpKSkpKVxuIn0gezpzeW0gam9pbi1maXh0dXJlcywgOm1ldGEgezpkb2MgIkNvbXBvc2VzIGEgY29sbGVjdGlvbiBvZiBmaXh0dXJlcywgaW4gb3JkZXIuICBBbHdheXMgcmV0dXJucyBhIHZhbGlkXG4gIGZpeHR1cmUgZnVuY3Rpb24sIGV2ZW4gaWYgdGhlIGNvbGxlY3Rpb24gaXMgZW1wdHkuXG5cbiAgTk9URTogSW5jb21wYXRpYmxlIHdpdGggbWFwIGZpeHR1cmVzLiIsIDphcmdsaXN0cyAoW2ZpeHR1cmVzXSl9LCA6c291cmNlICIoZGVmblxuIGpvaW4tZml4dHVyZXNcbiBcIkNvbXBvc2VzIGEgY29sbGVjdGlvbiBvZiBmaXh0dXJlcywgaW4gb3JkZXIuICBBbHdheXMgcmV0dXJucyBhIHZhbGlkXFxuICBmaXh0dXJlIGZ1bmN0aW9uLCBldmVuIGlmIHRoZSBjb2xsZWN0aW9uIGlzIGVtcHR5LlxcblxcbiAgTk9URTogSW5jb21wYXRpYmxlIHdpdGggbWFwIGZpeHR1cmVzLlwiXG4gW2ZpeHR1cmVzXVxuIChyZWR1Y2UgY29tcG9zZS1maXh0dXJlcyBkZWZhdWx0LWZpeHR1cmUgZml4dHVyZXMpKVxuIn0gezpzeW0gaW5jLXJlcG9ydC1jb3VudGVyISwgOm1ldGEgezpkb2MgIkluY3JlbWVudHMgdGhlIG5hbWVkIGNvdW50ZXIgaW4gKnJlcG9ydC1jb3VudGVycyosIGEgcmVmIHRvIGEgbWFwLlxuICBEb2VzIG5vdGhpbmcgaWYgKnJlcG9ydC1jb3VudGVycyogaXMgbmlsLiIsIDphcmdsaXN0cyAoW25hbWVdKX0sIDpzb3VyY2UgIihkZWZuXG4gaW5jLXJlcG9ydC1jb3VudGVyIVxuIFwiSW5jcmVtZW50cyB0aGUgbmFtZWQgY291bnRlciBpbiAqcmVwb3J0LWNvdW50ZXJzKiwgYSByZWYgdG8gYSBtYXAuXFxuICBEb2VzIG5vdGhpbmcgaWYgKnJlcG9ydC1jb3VudGVycyogaXMgbmlsLlwiXG4gW25hbWVdXG4gKGlmXG4gICg6cmVwb3J0LWNvdW50ZXJzIChnZXQtY3VycmVudC1lbnYpKVxuICAodXBkYXRlLWN1cnJlbnQtZW52ISBbOnJlcG9ydC1jb3VudGVycyBuYW1lXSAoZm5pbCBpbmMgMCkpKSlcbiJ9IHs6c3ltIGdldC1jdXJyZW50LWVudiwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtdKX0sIDpzb3VyY2UgIihkZWZuIGdldC1jdXJyZW50LWVudiBbXSAob3IgKmN1cnJlbnQtZW52KiAoZW1wdHktZW52KSkpXG4ifSB7OnN5bSBmaWxlLWFuZC1saW5lLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2V4Y2VwdGlvbiBkZXB0aF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBmaWxlLWFuZC1saW5lXG4gW2V4Y2VwdGlvbiBkZXB0aF1cbiAoaWYtbGV0XG4gIFtzdGFjay1lbGVtZW50XG4gICAoYW5kXG4gICAgKHN0cmluZz8gKC4tc3RhY2sgZXhjZXB0aW9uKSlcbiAgICAoc29tZS0+XG4gICAgICguLXN0YWNrIGV4Y2VwdGlvbilcbiAgICAgc3RyaW5nL3NwbGl0LWxpbmVzXG4gICAgIChnZXQgZGVwdGgpXG4gICAgIHN0cmluZy90cmltKSldXG4gIChsZXRcbiAgIFtmbmFtZVxuICAgIChqcy1maWxlbmFtZSBzdGFjay1lbGVtZW50KVxuICAgIFtsaW5lIGNvbHVtbl1cbiAgICAoanMtbGluZS1hbmQtY29sdW1uIHN0YWNrLWVsZW1lbnQpXG4gICAgW2ZuYW1lIGxpbmUgY29sdW1uXVxuICAgIChtYXBwZWQtbGluZS1hbmQtY29sdW1uIGZuYW1lIGxpbmUgY29sdW1uKV1cbiAgIHs6ZmlsZSBmbmFtZSwgOmxpbmUgbGluZSwgOmNvbHVtbiBjb2x1bW59KVxuICB7OmZpbGUgKC4tZmlsZU5hbWUgZXhjZXB0aW9uKSwgOmxpbmUgKC4tbGluZU51bWJlciBleGNlcHRpb24pfSkpXG4ifSB7OnN5bSBibG9jaywgOm1ldGEgezpkb2MgIlRhZyBhIHNlcSBvZiBmbnMgdG8gYmUgcGlja2VkIHVwIGJ5IHJ1bi1ibG9jayBhcyBpbmplY3RlZFxuICBjb250aW51YXRpb24uICBTZWUgcnVuLWJsb2NrLiIsIDphcmdsaXN0cyAoW2Zuc10pfSwgOnNvdXJjZSAiKGRlZm5cbiBibG9ja1xuIFwiVGFnIGEgc2VxIG9mIGZucyB0byBiZSBwaWNrZWQgdXAgYnkgcnVuLWJsb2NrIGFzIGluamVjdGVkXFxuICBjb250aW51YXRpb24uICBTZWUgcnVuLWJsb2NrLlwiXG4gW2Zuc11cbiAoc29tZS0+IGZucyAodmFyeS1tZXRhIGFzc29jIDpjbGpzLnRlc3QvYmxvY2s/IHRydWUpKSlcbiJ9IHs6c3ltIGNvbXBvc2UtZml4dHVyZXMsIDptZXRhIHs6ZG9jICJDb21wb3NlcyB0d28gZml4dHVyZSBmdW5jdGlvbnMsIGNyZWF0aW5nIGEgbmV3IGZpeHR1cmUgZnVuY3Rpb25cbiAgdGhhdCBjb21iaW5lcyB0aGVpciBiZWhhdmlvci5cblxuICBOT1RFOiBJbmNvbXBhdGlibGUgd2l0aCBtYXAgZml4dHVyZXMuIiwgOmFyZ2xpc3RzIChbZjEgZjJdKX0sIDpzb3VyY2UgIihkZWZuXG4gY29tcG9zZS1maXh0dXJlc1xuIFwiQ29tcG9zZXMgdHdvIGZpeHR1cmUgZnVuY3Rpb25zLCBjcmVhdGluZyBhIG5ldyBmaXh0dXJlIGZ1bmN0aW9uXFxuICB0aGF0IGNvbWJpbmVzIHRoZWlyIGJlaGF2aW9yLlxcblxcbiAgTk9URTogSW5jb21wYXRpYmxlIHdpdGggbWFwIGZpeHR1cmVzLlwiXG4gW2YxIGYyXVxuIChmbiBbZ10gKGYxIChmbiBbXSAoZjIgZykpKSkpXG4ifSB7OnN5bSBqcy1saW5lLWFuZC1jb2x1bW4sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbc3RhY2stZWxlbWVudF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBqcy1saW5lLWFuZC1jb2x1bW5cbiBbc3RhY2stZWxlbWVudF1cbiBcIlJldHVybnMgYSAyLWVsZW1lbnQgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIGxpbmUgYW5kXFxuICBjb2x1bW4gZW5jb2RlZCBhdCB0aGUgZW5kIG9mIGEgc3RhY2sgZWxlbWVudCBzdHJpbmcuXFxuICBBIGxpbmUgb3IgY29sdW1uIHdpbGwgYmUgcmVwcmVzZW50ZWQgYXMgTmFOIGlmIG5vdFxcbiAgcGFyc2VzYWJsZS5cIlxuIChsZXRcbiAgW3BhcnRzICguc3BsaXQgc3RhY2stZWxlbWVudCBcIjpcIikgY250IChjb3VudCBwYXJ0cyldXG4gIChpZlxuICAgKD4gY250IDEpXG4gICBbKGpzL3BhcnNlSW50IChudGggcGFydHMgKC0gY250IDIpKSAxMClcbiAgICAoanMvcGFyc2VJbnQgKG50aCBwYXJ0cyAoZGVjIGNudCkpIDEwKV1cbiAgIFsjI05hTiAjI05hTl0pKSlcbiJ9IHs6c3ltIElBc3luY1Rlc3QsIDptZXRhIHs6ZG9jICJNYXJrZXIgcHJvdG9jb2wgZGVub3RpbmcgQ1BTIGZ1bmN0aW9uIHRvIGJlZ2luIGFzeW5jaHJvbm91c1xuICB0ZXN0aW5nLiJ9LCA6bWV0aG9kcyAoKX0gezpzeW0gdGVzdC12YXJzLWJsb2NrLCA6bWV0YSB7OmRvYyAiTGlrZSB0ZXN0LXZhcnMsIGJ1dCByZXR1cm5zIGEgYmxvY2sgZm9yIGZ1cnRoZXIgY29tcG9zaXRpb24gYW5kXG4gIGxhdGVyIGV4ZWN1dGlvbi4iLCA6YXJnbGlzdHMgKFt2YXJzXSl9LCA6c291cmNlICIoZGVmblxuIHRlc3QtdmFycy1ibG9ja1xuIFwiTGlrZSB0ZXN0LXZhcnMsIGJ1dCByZXR1cm5zIGEgYmxvY2sgZm9yIGZ1cnRoZXIgY29tcG9zaXRpb24gYW5kXFxuICBsYXRlciBleGVjdXRpb24uXCJcbiBbdmFyc11cbiAobWFwXG4gIChmblxuICAgW1tucyB2YXJzXV1cbiAgIChmblxuICAgIFtdXG4gICAgKGJsb2NrXG4gICAgIChsZXRcbiAgICAgIFtlbnZcbiAgICAgICAoZ2V0LWN1cnJlbnQtZW52KVxuICAgICAgIG9uY2UtZml4dHVyZXNcbiAgICAgICAoZ2V0LWluIGVudiBbOm9uY2UtZml4dHVyZXMgbnNdKVxuICAgICAgIGVhY2gtZml4dHVyZXNcbiAgICAgICAoZ2V0LWluIGVudiBbOmVhY2gtZml4dHVyZXMgbnNdKV1cbiAgICAgIChjYXNlXG4gICAgICAgKGV4ZWN1dGlvbi1zdHJhdGVneSBvbmNlLWZpeHR1cmVzIGVhY2gtZml4dHVyZXMpXG4gICAgICAgOmFzeW5jXG4gICAgICAgKC0+PlxuICAgICAgICB2YXJzXG4gICAgICAgIChmaWx0ZXIgKGNvbXAgOnRlc3QgbWV0YSkpXG4gICAgICAgIChtYXBjYXRcbiAgICAgICAgIChjb21wXG4gICAgICAgICAgKHBhcnRpYWwgd3JhcC1tYXAtZml4dHVyZXMgZWFjaC1maXh0dXJlcylcbiAgICAgICAgICB0ZXN0LXZhci1ibG9jaykpXG4gICAgICAgICh3cmFwLW1hcC1maXh0dXJlcyBvbmNlLWZpeHR1cmVzKSlcbiAgICAgICA6c3luY1xuICAgICAgIChsZXRcbiAgICAgICAgW2VhY2gtZml4dHVyZS1mbiAoam9pbi1maXh0dXJlcyBlYWNoLWZpeHR1cmVzKV1cbiAgICAgICAgWyhmblxuICAgICAgICAgIFtdXG4gICAgICAgICAgKChqb2luLWZpeHR1cmVzIG9uY2UtZml4dHVyZXMpXG4gICAgICAgICAgIChmblxuICAgICAgICAgICAgW11cbiAgICAgICAgICAgIChkb3NlcVxuICAgICAgICAgICAgIFt2IHZhcnNdXG4gICAgICAgICAgICAgKHdoZW4tbGV0XG4gICAgICAgICAgICAgIFt0ICg6dGVzdCAobWV0YSB2KSldXG4gICAgICAgICAgICAgIChlYWNoLWZpeHR1cmUtZm5cbiAgICAgICAgICAgICAgIChmblxuICAgICAgICAgICAgICAgIFtdXG4gICAgICAgICAgICAgICAgKHJ1bi1ibG9ja1xuICAgICAgICAgICAgICAgICAodGVzdC12YXItYmxvY2sqIHYgKGRpc2FibGUtYXN5bmMgdCkpKSkpKSkpKSldKSkpKSkpXG4gIChncm91cC1ieSAoY29tcCA6bnMgbWV0YSkgdmFycykpKVxuIn0gezpzeW0gY2xlYXItZW52ISwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtdKX0sIDpzb3VyY2UgIihkZWZuIGNsZWFyLWVudiEgW10gKHNldCEgKmN1cnJlbnQtZW52KiBuaWwpKVxuIn0gezpzeW0gc2V0LWVudiEsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbbmV3LWVudl0pfSwgOnNvdXJjZSAiKGRlZm4gc2V0LWVudiEgW25ldy1lbnZdIChzZXQhICpjdXJyZW50LWVudiogbmV3LWVudikpXG4ifSB7OnN5bSBtYXBwZWQtbGluZS1hbmQtY29sdW1uLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2ZpbGVuYW1lIGxpbmUgY29sdW1uXSl9LCA6c291cmNlICIoZGVmblxuIG1hcHBlZC1saW5lLWFuZC1jb2x1bW5cbiBbZmlsZW5hbWUgbGluZSBjb2x1bW5dXG4gKGxldFxuICBbZGVmYXVsdCBbZmlsZW5hbWUgbGluZSBjb2x1bW5dXVxuICAoaWYtbGV0XG4gICBbc291cmNlLW1hcCAoOnNvdXJjZS1tYXAgKGdldC1jdXJyZW50LWVudikpXVxuICAgKGlmLWxldFxuICAgIFtjb2x1bW5zIChnZXQtaW4gc291cmNlLW1hcCBbZmlsZW5hbWUgKGRlYyBsaW5lKV0pXVxuICAgICh2ZWNcbiAgICAgKG1hcFxuICAgICAgKGZpcnN0XG4gICAgICAgKGlmLWxldFxuICAgICAgICBbbWFwcGluZyAoZ2V0IGNvbHVtbnMgKGRlYyBjb2x1bW4pKV1cbiAgICAgICAgbWFwcGluZ1xuICAgICAgICAoc2Vjb25kIChmaXJzdCBjb2x1bW5zKSkpKVxuICAgICAgWzpzb3VyY2UgOmxpbmUgOmNvbF0pKVxuICAgIGRlZmF1bHQpXG4gICBkZWZhdWx0KSkpXG4ifSB7OnN5bSB0ZXN0LXZhcnMsIDptZXRhIHs6ZG9jICJHcm91cHMgdmFycyBieSB0aGVpciBuYW1lc3BhY2UgYW5kIHJ1bnMgdGVzdC12YXJzIG9uIHRoZW0gd2l0aFxuICBhcHByb3ByaWF0ZSBmaXh0dXJlcyBhc3N1bWluZyB0aGV5IGFyZSBwcmVzZW50IGluIHRoZSBjdXJyZW50XG4gIHRlc3RpbmcgZW52aXJvbm1lbnQuIiwgOmFyZ2xpc3RzIChbdmFyc10pfSwgOnNvdXJjZSAiKGRlZm5cbiB0ZXN0LXZhcnNcbiBcIkdyb3VwcyB2YXJzIGJ5IHRoZWlyIG5hbWVzcGFjZSBhbmQgcnVucyB0ZXN0LXZhcnMgb24gdGhlbSB3aXRoXFxuICBhcHByb3ByaWF0ZSBmaXh0dXJlcyBhc3N1bWluZyB0aGV5IGFyZSBwcmVzZW50IGluIHRoZSBjdXJyZW50XFxuICB0ZXN0aW5nIGVudmlyb25tZW50LlwiXG4gW3ZhcnNdXG4gKHJ1bi1ibG9ja1xuICAoY29uY2F0XG4gICAodGVzdC12YXJzLWJsb2NrIHZhcnMpXG4gICBbKGZuIFtdIChyZXBvcnQgezp0eXBlIDplbmQtdGVzdC12YXJzLCA6dmFycyB2YXJzfSkpXSkpKVxuIn0gezpzeW0gZ2V0LWFuZC1jbGVhci1lbnYhLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW10pfSwgOnNvdXJjZSAiKGRlZm5cbiBnZXQtYW5kLWNsZWFyLWVudiFcbiBbXVxuIFwiTGlrZSBnZXQtY3VycmVudC1lbnYsIGJ1dCBjbGVhbnMgZW52IGJlZm9yZSByZXR1cm5pbmcuXCJcbiAobGV0IFtlbnYgKGNsanMudGVzdC9nZXQtY3VycmVudC1lbnYpXSAoY2xlYXItZW52ISkgZW52KSlcbiJ9IHs6c3ltIHRlc3QtdmFyLWJsb2NrLCA6bWV0YSB7OmRvYyAiTGlrZSB0ZXN0LXZhciwgYnV0IHJldHVybnMgYSBibG9jayBmb3IgZnVydGhlciBjb21wb3NpdGlvbiBhbmRcbiAgbGF0ZXIgZXhlY3V0aW9uLiIsIDphcmdsaXN0cyAoW3ZdKX0sIDpzb3VyY2UgIihkZWZuXG4gdGVzdC12YXItYmxvY2tcbiBcIkxpa2UgdGVzdC12YXIsIGJ1dCByZXR1cm5zIGEgYmxvY2sgZm9yIGZ1cnRoZXIgY29tcG9zaXRpb24gYW5kXFxuICBsYXRlciBleGVjdXRpb24uXCJcbiBbdl1cbiAoaWYtbGV0IFt0ICg6dGVzdCAobWV0YSB2KSldICh0ZXN0LXZhci1ibG9jayogdiB0KSkpXG4ifSB7OnN5bSBzdWNjZXNzZnVsPywgOm1ldGEgezpkb2MgIlJldHVybnMgdHJ1ZSBpZiB0aGUgZ2l2ZW4gdGVzdCBzdW1tYXJ5IGluZGljYXRlcyBhbGwgdGVzdHNcbiAgd2VyZSBzdWNjZXNzZnVsLCBmYWxzZSBvdGhlcndpc2UuIiwgOmFyZ2xpc3RzIChbc3VtbWFyeV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBzdWNjZXNzZnVsP1xuIFwiUmV0dXJucyB0cnVlIGlmIHRoZSBnaXZlbiB0ZXN0IHN1bW1hcnkgaW5kaWNhdGVzIGFsbCB0ZXN0c1xcbiAgd2VyZSBzdWNjZXNzZnVsLCBmYWxzZSBvdGhlcndpc2UuXCJcbiBbc3VtbWFyeV1cbiAoYW5kICh6ZXJvPyAoOmZhaWwgc3VtbWFyeSAwKSkgKHplcm8/ICg6ZXJyb3Igc3VtbWFyeSAwKSkpKVxuIn0gezpzeW0gZW1wdHktZW52LCA6bWV0YSB7OmRvYyAiR2VuZXJhdGVzIGEgdGVzdGluZyBlbnZpcm9ubWVudCB3aXRoIGEgcmVwb3J0ZXIuXG4gICAoZW1wdHktZW52KSAtIHVzZXMgdGhlIDpjbGpzLnRlc3QvZGVmYXVsdCByZXBvcnRlci5cbiAgIChlbXB0eS1lbnYgOmNsanMudGVzdC9wcHJpbnQpIC0gcHJldHR5IHByaW50cyBhbGwgZGF0YSBzdHJ1Y3R1cmVzLiBcbiAgIChlbXB0eS1lbnYgcmVwb3J0ZXIpIC0gdXNlcyBhIHJlcG9ydGVyIG9mIHlvdXIgY2hvb3NpbmcuXG5cbiAgIFRvIGNyZWF0ZSB5b3VyIG93biByZXBvcnRlciBzZWUgY2xqcy50ZXN0L3JlcG9ydCIsIDphcmdsaXN0cyBbW10gW3JlcG9ydGVyXV19LCA6c291cmNlICIoZGVmblxuIGVtcHR5LWVudlxuIFwiR2VuZXJhdGVzIGEgdGVzdGluZyBlbnZpcm9ubWVudCB3aXRoIGEgcmVwb3J0ZXIuXFxuICAgKGVtcHR5LWVudikgLSB1c2VzIHRoZSA6Y2xqcy50ZXN0L2RlZmF1bHQgcmVwb3J0ZXIuXFxuICAgKGVtcHR5LWVudiA6Y2xqcy50ZXN0L3BwcmludCkgLSBwcmV0dHkgcHJpbnRzIGFsbCBkYXRhIHN0cnVjdHVyZXMuIFxcbiAgIChlbXB0eS1lbnYgcmVwb3J0ZXIpIC0gdXNlcyBhIHJlcG9ydGVyIG9mIHlvdXIgY2hvb3NpbmcuXFxuXFxuICAgVG8gY3JlYXRlIHlvdXIgb3duIHJlcG9ydGVyIHNlZSBjbGpzLnRlc3QvcmVwb3J0XCJcbiAoW10gKGVtcHR5LWVudiA6Y2xqcy50ZXN0L2RlZmF1bHQpKVxuIChbcmVwb3J0ZXJdXG4gIChjb25kLT5cbiAgIHs6cmVwb3J0LWNvdW50ZXJzIHs6dGVzdCAwLCA6cGFzcyAwLCA6ZmFpbCAwLCA6ZXJyb3IgMH0sXG4gICAgOnRlc3RpbmctdmFycyAoKSxcbiAgICA6dGVzdGluZy1jb250ZXh0cyAoKSxcbiAgICA6Zm9ybWF0dGVyIHByLXN0cixcbiAgICA6cmVwb3J0ZXIgcmVwb3J0ZXJ9XG4gICAoPSA6Y2xqcy50ZXN0L3BwcmludCByZXBvcnRlcilcbiAgIChhc3NvYyA6cmVwb3J0ZXIgOmNsanMudGVzdC9kZWZhdWx0IDpmb3JtYXR0ZXIgcHByaW50L3BwcmludCkpKSlcbiJ9IHs6c3ltIHRlc3RpbmctdmFycy1zdHIsIDptZXRhIHs6ZG9jICJSZXR1cm5zIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBjdXJyZW50IHRlc3QuICBSZW5kZXJzIG5hbWVzXG4gIGluICp0ZXN0aW5nLXZhcnMqIGFzIGEgbGlzdCwgdGhlbiB0aGUgc291cmNlIGZpbGUgYW5kIGxpbmUgb2ZcbiAgY3VycmVudCBhc3NlcnRpb24uIiwgOmFyZ2xpc3RzIChbbV0pfSwgOnNvdXJjZSAiKGRlZm5cbiB0ZXN0aW5nLXZhcnMtc3RyXG4gXCJSZXR1cm5zIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBjdXJyZW50IHRlc3QuICBSZW5kZXJzIG5hbWVzXFxuICBpbiAqdGVzdGluZy12YXJzKiBhcyBhIGxpc3QsIHRoZW4gdGhlIHNvdXJjZSBmaWxlIGFuZCBsaW5lIG9mXFxuICBjdXJyZW50IGFzc2VydGlvbi5cIlxuIFttXVxuIChsZXRcbiAgW3s6a2V5cyBbZmlsZSBsaW5lIGNvbHVtbl19IG1dXG4gIChzdHJcbiAgIChyZXZlcnNlXG4gICAgKG1hcFxuICAgICAoZm4qIFtwMV9fNDI1MjUjXSAoOm5hbWUgKG1ldGEgcDFfXzQyNTI1IykpKVxuICAgICAoOnRlc3RpbmctdmFycyAoZ2V0LWN1cnJlbnQtZW52KSkpKVxuICAgXCIgKFwiXG4gICBmaWxlXG4gICBcIjpcIlxuICAgbGluZVxuICAgKHdoZW4gY29sdW1uIChzdHIgXCI6XCIgY29sdW1uKSlcbiAgIFwiKVwiKSkpXG4ifSB7OnN5bSAqY3VycmVudC1lbnYqLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiAqY3VycmVudC1lbnYqIG5pbClcbiJ9IHs6c3ltIHJ1bi1ibG9jaywgOm1ldGEgezpkb2MgIkludm9rZSBhbGwgZnVuY3Rpb25zIGluIGZucyB3aXRoIG5vIGFyZ3VtZW50cy4gQSBmbiBjYW4gb3B0aW9uYWxseVxuICByZXR1cm5cblxuICBhbiBhc3luYyB0ZXN0IC0gaXMgaW52b2tlZCB3aXRoIGEgY29udGludWF0aW9uIHJ1bm5pbmcgbGVmdCBmbnNcblxuICBhIHNlcSBvZiBmbnMgdGFnZ2VkIHBlciBibG9jayAtIGFyZSBpbnZva2VkIGltbWVkaWF0ZWx5IGFmdGVyIGZuIiwgOmFyZ2xpc3RzIChbZm5zXSl9LCA6c291cmNlICIoZGVmblxuIHJ1bi1ibG9ja1xuIFwiSW52b2tlIGFsbCBmdW5jdGlvbnMgaW4gZm5zIHdpdGggbm8gYXJndW1lbnRzLiBBIGZuIGNhbiBvcHRpb25hbGx5XFxuICByZXR1cm5cXG5cXG4gIGFuIGFzeW5jIHRlc3QgLSBpcyBpbnZva2VkIHdpdGggYSBjb250aW51YXRpb24gcnVubmluZyBsZWZ0IGZuc1xcblxcbiAgYSBzZXEgb2YgZm5zIHRhZ2dlZCBwZXIgYmxvY2sgLSBhcmUgaW52b2tlZCBpbW1lZGlhdGVseSBhZnRlciBmblwiXG4gW2Zuc11cbiAod2hlbi1maXJzdFxuICBbZiBmbnNdXG4gIChsZXRcbiAgIFtvYmogKGYpXVxuICAgKGlmXG4gICAgKGFzeW5jPyBvYmopXG4gICAgKG9ialxuICAgICAobGV0XG4gICAgICBbZCAoZGVsYXkgKHJ1bi1ibG9jayAocmVzdCBmbnMpKSldXG4gICAgICAoZm5cbiAgICAgICBbXVxuICAgICAgIChpZlxuICAgICAgICAocmVhbGl6ZWQ/IGQpXG4gICAgICAgIChwcmludGxuIFwiV0FSTklORzogQXN5bmMgdGVzdCBjYWxsZWQgZG9uZSBtb3JlIHRoYW4gb25lIHRpbWUuXCIpXG4gICAgICAgIEBkKSkpKVxuICAgIChyZWN1clxuICAgICAoY29uZC0+PlxuICAgICAgKHJlc3QgZm5zKVxuICAgICAgKDpjbGpzLnRlc3QvYmxvY2s/IChtZXRhIG9iaikpXG4gICAgICAoY29uY2F0IG9iaikpKSkpKSlcbiJ9IHs6c3ltIHVwZGF0ZS1jdXJyZW50LWVudiEsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChba3MgZiAmIGFyZ3NdKX0sIDpzb3VyY2UgIihkZWZuXG4gdXBkYXRlLWN1cnJlbnQtZW52IVxuIFtrcyBmICYgYXJnc11cbiAoc2V0ISAqY3VycmVudC1lbnYqIChhcHBseSB1cGRhdGUtaW4gKGdldC1jdXJyZW50LWVudikga3MgZiBhcmdzKSkpXG4ifSB7OnN5bSBqcy1maWxlbmFtZSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtzdGFjay1lbGVtZW50XSl9LCA6c291cmNlICIoZGVmblxuIGpzLWZpbGVuYW1lXG4gW3N0YWNrLWVsZW1lbnRdXG4gKGxldFxuICBbb3V0cHV0LWRpclxuICAgKGNsanMudGVzdC9jbGpzLW91dHB1dC1kaXIpXG4gICBvdXRwdXQtZGlyXG4gICAoY29uZC0+XG4gICAgb3V0cHV0LWRpclxuICAgIChub3QgKHN0cmluZy9lbmRzLXdpdGg/IG91dHB1dC1kaXIgXCIvXCIpKVxuICAgIChzdHIgXCIvXCIpKV1cbiAgKC0+ICguc3BsaXQgc3RhY2stZWxlbWVudCBvdXRwdXQtZGlyKSBsYXN0ICguc3BsaXQgXCI6XCIpIGZpcnN0KSkpXG4ifSksIGRldnRvb2xzLmZvcm1hdHRlcnMgKHs6c3ltIHByZXNlbnQ/LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW10pfSwgOnNvdXJjZSAiKGRlZm5cbiBwcmVzZW50P1xuIFtdXG4gKGxldFxuICBbZm9ybWF0dGVycyAoZ2V0LWZvcm1hdHRlcnMtc2FmZSldXG4gIChib29sZWFuIChzb21lIGlzLW91cnM/IGZvcm1hdHRlcnMpKSkpXG4ifSB7OnN5bSAqaW5zdGFsbGVkKiwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgKmluc3RhbGxlZCogZmFsc2UpXG4ifSB7OnN5bSBpbnN0YWxsISwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtdKX0sIDpzb3VyY2UgIihkZWZuXG4gaW5zdGFsbCFcbiBbXVxuICh3aGVuLW5vdFxuICAqaW5zdGFsbGVkKlxuICAoc2V0ISAqaW5zdGFsbGVkKiB0cnVlKVxuICAoaW5zdGFsbC1vdXItZm9ybWF0dGVyISAoYnVpbGQtY2xqcy1mb3JtYXR0ZXIpKVxuICB0cnVlKSlcbiJ9IHs6c3ltICpzYW5pdGl6ZXItZW5hYmxlZCosIDptZXRhIHt9LCA6c291cmNlICIoZGVmICpzYW5pdGl6ZXItZW5hYmxlZCogdHJ1ZSlcbiJ9IHs6c3ltIGF2YWlsYWJsZT8sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbXSl9LCA6c291cmNlICIoZGVmblxuIGF2YWlsYWJsZT9cbiBbXVxuIChvciAoaW4tbm9kZS1jb250ZXh0PykgKGFuZCAoaXNDaHJvbWUpIChpc1ZlcnNpb25PckhpZ2hlciA0NykpKSlcbiJ9IHs6c3ltIGluc3RhbGxlZD8sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbXSl9LCA6c291cmNlICIoZGVmbiBpbnN0YWxsZWQ/IFtdICppbnN0YWxsZWQqKVxuIn0gezpzeW0gb2Jzb2xldGUtZm9ybWF0dGVyLWtleSwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgb2Jzb2xldGUtZm9ybWF0dGVyLWtleSBcImRldnRvb2xzRm9ybWF0dGVyXCIpXG4ifSB7OnN5bSB1bmluc3RhbGwhLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW10pfSwgOnNvdXJjZSAiKGRlZm5cbiB1bmluc3RhbGwhXG4gW11cbiAod2hlblxuICAqaW5zdGFsbGVkKlxuICAoc2V0ISAqaW5zdGFsbGVkKiBmYWxzZSlcbiAgKHVuaW5zdGFsbC1vdXItZm9ybWF0dGVycyEpKSlcbiJ9IHs6c3ltICptb25pdG9yLWVuYWJsZWQqLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiAqbW9uaXRvci1lbmFibGVkKiBmYWxzZSlcbiJ9KSwgZmlwcC5kZXF1ZSAoezpzeW0gY3JlYXRlLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiBjcmVhdGUgdmVjdG9yKVxuIn0gezpzeW0gZW1wdHksIDptZXRhIHt9LCA6c291cmNlICIoZGVmIGVtcHR5IFtdKVxuIn0gezpzeW0gcG9wbCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt2XSl9LCA6c291cmNlICIoZGVmbiBwb3BsIFt2XSAoc3VidmVjIHYgMSkpXG4ifSB7OnN5bSBjb25qciwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgY29uanIgKGZuaWwgY29uaiBlbXB0eSkpXG4ifSB7OnN5bSBjb25qbHIsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbbCBkZXF1ZSByXSl9LCA6c291cmNlICIoZGVmbiBjb25qbHIgW2wgZGVxdWUgcl0gKHJyYi9jYXR2ZWMgW2xdIGRlcXVlIFtyXSkpXG4ifSB7OnN5bSBjb25jYXQsIDptZXRhIHt9LCA6c291cmNlICIoZGVmIGNvbmNhdCBycmIvY2F0dmVjKVxuIn0pLCBjbGpzLnRvb2xzLnJlYWRlci5yZWFkZXItdHlwZXMgKHs6c3ltIGluZGV4aW5nLXB1c2gtYmFjay1yZWFkZXIsIDptZXRhIHs6ZG9jICJDcmVhdGVzIGFuIEluZGV4aW5nUHVzaGJhY2tSZWFkZXIgZnJvbSBhIGdpdmVuIHN0cmluZyBvciBQdXNoYmFja1JlYWRlciIsIDphcmdsaXN0cyBbW3Mtb3ItcmRyXSBbcy1vci1yZHIgYnVmLWxlbl0gW3Mtb3ItcmRyIGJ1Zi1sZW4gZmlsZS1uYW1lXV19LCA6c291cmNlICIoZGVmblxuIGluZGV4aW5nLXB1c2gtYmFjay1yZWFkZXJcbiBcIkNyZWF0ZXMgYW4gSW5kZXhpbmdQdXNoYmFja1JlYWRlciBmcm9tIGEgZ2l2ZW4gc3RyaW5nIG9yIFB1c2hiYWNrUmVhZGVyXCJcbiAoW3Mtb3ItcmRyXSAoaW5kZXhpbmctcHVzaC1iYWNrLXJlYWRlciBzLW9yLXJkciAxKSlcbiAoW3Mtb3ItcmRyIGJ1Zi1sZW5dIChpbmRleGluZy1wdXNoLWJhY2stcmVhZGVyIHMtb3ItcmRyIGJ1Zi1sZW4gbmlsKSlcbiAoW3Mtb3ItcmRyIGJ1Zi1sZW4gZmlsZS1uYW1lXVxuICAoSW5kZXhpbmdQdXNoYmFja1JlYWRlci5cbiAgIChpZlxuICAgIChzdHJpbmc/IHMtb3ItcmRyKVxuICAgIChzdHJpbmctcHVzaC1iYWNrLXJlYWRlciBzLW9yLXJkciBidWYtbGVuKVxuICAgIHMtb3ItcmRyKVxuICAgMVxuICAgMVxuICAgdHJ1ZVxuICAgbmlsXG4gICAwXG4gICBmaWxlLW5hbWUpKSlcbiJ9IHs6c3ltIGxvZy1zb3VyY2UqLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3JlYWRlciBmXSl9LCA6c291cmNlICIoZGVmblxuIGxvZy1zb3VyY2UqXG4gW3JlYWRlciBmXVxuIChsZXRcbiAgW2J1ZmZlciAoOmJ1ZmZlciBAKC4tZnJhbWVzIHJlYWRlcikpXVxuICAodHJ5XG4gICAoc3dhcCFcbiAgICAoLi1mcmFtZXMgcmVhZGVyKVxuICAgIHVwZGF0ZS1pblxuICAgIFs6b2Zmc2V0XVxuICAgIGNvbmpcbiAgICAoLmdldExlbmd0aCBidWZmZXIpKVxuICAgKGxldFxuICAgIFtyZXQgKGYpXVxuICAgIChpZlxuICAgICAoaW1wbGVtZW50cz8gSU1ldGEgcmV0KVxuICAgICAobWVyZ2UtbWV0YSByZXQgezpzb3VyY2UgKHBlZWstc291cmNlLWxvZyBAKC4tZnJhbWVzIHJlYWRlcikpfSlcbiAgICAgcmV0KSlcbiAgIChmaW5hbGx5IChzd2FwISAoLi1mcmFtZXMgcmVhZGVyKSB1cGRhdGUtaW4gWzpvZmZzZXRdIHJlc3QpKSkpKVxuIn0gezpzeW0gbWVyZ2UtbWV0YSwgOm1ldGEgezpkb2MgIlJldHVybnMgYW4gb2JqZWN0IG9mIHRoZSBzYW1lIHR5cGUgYW5kIHZhbHVlIGFzIGBvYmpgLCB3aXRoIGl0c1xubWV0YWRhdGEgbWVyZ2VkIG92ZXIgYG1gLiIsIDphcmdsaXN0cyAoW29iaiBtXSl9LCA6c291cmNlICIoZGVmblxuIG1lcmdlLW1ldGFcbiBcIlJldHVybnMgYW4gb2JqZWN0IG9mIHRoZSBzYW1lIHR5cGUgYW5kIHZhbHVlIGFzIGBvYmpgLCB3aXRoIGl0c1xcbm1ldGFkYXRhIG1lcmdlZCBvdmVyIGBtYC5cIlxuIFtvYmogbV1cbiAobGV0XG4gIFtvcmlnLW1ldGEgKG1ldGEgb2JqKV1cbiAgKHdpdGgtbWV0YSBvYmogKG1lcmdlIG0gKGRpc3NvYyBvcmlnLW1ldGEgOnNvdXJjZSkpKSkpXG4ifSB7OnN5bSBSZWFkZXIsIDptZXRhIHs6ZG9jIG5pbH0sIDptZXRob2RzIChwZWVrLWNoYXIgcmVhZC1jaGFyKX0gezpzeW0gc291cmNlLWxvZ2dpbmctcHVzaC1iYWNrLXJlYWRlciwgOm1ldGEgezpkb2MgIkNyZWF0ZXMgYSBTb3VyY2VMb2dnaW5nUHVzaGJhY2tSZWFkZXIgZnJvbSBhIGdpdmVuIHN0cmluZyBvciBQdXNoYmFja1JlYWRlciIsIDphcmdsaXN0cyBbW3Mtb3ItcmRyXSBbcy1vci1yZHIgYnVmLWxlbl0gW3Mtb3ItcmRyIGJ1Zi1sZW4gZmlsZS1uYW1lXV19LCA6c291cmNlICIoZGVmblxuIHNvdXJjZS1sb2dnaW5nLXB1c2gtYmFjay1yZWFkZXJcbiBcIkNyZWF0ZXMgYSBTb3VyY2VMb2dnaW5nUHVzaGJhY2tSZWFkZXIgZnJvbSBhIGdpdmVuIHN0cmluZyBvciBQdXNoYmFja1JlYWRlclwiXG4gKFtzLW9yLXJkcl0gKHNvdXJjZS1sb2dnaW5nLXB1c2gtYmFjay1yZWFkZXIgcy1vci1yZHIgMSkpXG4gKFtzLW9yLXJkciBidWYtbGVuXVxuICAoc291cmNlLWxvZ2dpbmctcHVzaC1iYWNrLXJlYWRlciBzLW9yLXJkciBidWYtbGVuIG5pbCkpXG4gKFtzLW9yLXJkciBidWYtbGVuIGZpbGUtbmFtZV1cbiAgKFNvdXJjZUxvZ2dpbmdQdXNoYmFja1JlYWRlci5cbiAgIChpZlxuICAgIChzdHJpbmc/IHMtb3ItcmRyKVxuICAgIChzdHJpbmctcHVzaC1iYWNrLXJlYWRlciBzLW9yLXJkciBidWYtbGVuKVxuICAgIHMtb3ItcmRyKVxuICAgMVxuICAgMVxuICAgdHJ1ZVxuICAgbmlsXG4gICAwXG4gICBmaWxlLW5hbWVcbiAgIChhdG9tIHs6YnVmZmVyIChTdHJpbmdCdWZmZXIuKSwgOm9mZnNldCAnKDApfSkpKSlcbiJ9IHs6c3ltIHVucmVhZCwgOm1ldGEgezpkb2MgIlB1c2hlcyBiYWNrIGEgc2luZ2xlIGNoYXJhY3RlciBvbiB0byB0aGUgc3RyZWFtIiwgOmFyZ2xpc3RzIChbcmVhZGVyIGNoXSl9LCA6cHJvdG9jb2wgSVB1c2hiYWNrUmVhZGVyfSB7OnN5bSBwZWVrLWNoYXIsIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRoZSBuZXh0IGNoYXIgZnJvbSB0aGUgUmVhZGVyIHdpdGhvdXQgcmVtb3ZpbmcgaXQgZnJvbSB0aGUgcmVhZGVyIHN0cmVhbSIsIDphcmdsaXN0cyAoW3JlYWRlcl0pfSwgOnByb3RvY29sIFJlYWRlcn0gezpzeW0gSVB1c2hiYWNrUmVhZGVyLCA6bWV0YSB7OmRvYyBuaWx9LCA6bWV0aG9kcyAodW5yZWFkKX0gezpzeW0gaW5kZXhpbmctcmVhZGVyPywgOm1ldGEgezpkb2MgIlJldHVybnMgdHJ1ZSBpZiB0aGUgcmVhZGVyIHNhdGlzZmllcyBJbmRleGluZ1JlYWRlciIsIDphcmdsaXN0cyAoW3Jkcl0pfSwgOnNvdXJjZSAiKGRlZm5cbiBpbmRleGluZy1yZWFkZXI/XG4gXCJSZXR1cm5zIHRydWUgaWYgdGhlIHJlYWRlciBzYXRpc2ZpZXMgSW5kZXhpbmdSZWFkZXJcIlxuIFtyZHJdXG4gKGltcGxlbWVudHM/IEluZGV4aW5nUmVhZGVyIHJkcikpXG4ifSB7OnN5bSBzdHJpbmctcmVhZGVyLCA6bWV0YSB7OmRvYyAiQ3JlYXRlcyBhIFN0cmluZ1JlYWRlciBmcm9tIGEgZ2l2ZW4gc3RyaW5nIiwgOmFyZ2xpc3RzIFtbc11dfSwgOnNvdXJjZSAiKGRlZm5cbiBzdHJpbmctcmVhZGVyXG4gXCJDcmVhdGVzIGEgU3RyaW5nUmVhZGVyIGZyb20gYSBnaXZlbiBzdHJpbmdcIlxuIChbc10gKFN0cmluZ1JlYWRlci4gcyAoY291bnQgcykgMCkpKVxuIn0gezpzeW0gcmVhZC1jaGFyLCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0aGUgbmV4dCBjaGFyIGZyb20gdGhlIFJlYWRlciwgbmlsIGlmIHRoZSBlbmQgb2Ygc3RyZWFtIGhhcyBiZWVuIHJlYWNoZWQiLCA6YXJnbGlzdHMgKFtyZWFkZXJdKX0sIDpwcm90b2NvbCBSZWFkZXJ9IHs6c3ltIGdldC1jb2x1bW4tbnVtYmVyLCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0aGUgY29sdW1uIG51bWJlciBvZiB0aGUgbmV4dCBjaGFyYWN0ZXIgdG8gYmUgcmVhZCBmcm9tIHRoZSBzdHJlYW0iLCA6YXJnbGlzdHMgKFtyZWFkZXJdKX0sIDpwcm90b2NvbCBJbmRleGluZ1JlYWRlcn0gezpzeW0gZ2V0LWZpbGUtbmFtZSwgOm1ldGEgezpkb2MgIlJldHVybnMgdGhlIGZpbGUgbmFtZSB0aGUgcmVhZGVyIGlzIHJlYWRpbmcgZnJvbSwgb3IgbmlsIiwgOmFyZ2xpc3RzIChbcmVhZGVyXSl9LCA6cHJvdG9jb2wgSW5kZXhpbmdSZWFkZXJ9IHs6c3ltIHJlYWQtbGluZSwgOm1ldGEgezpkb2MgIlJlYWRzIGEgbGluZSBmcm9tIHRoZSByZWFkZXIgb3IgZnJvbSAqaW4qIGlmIG5vIHJlYWRlciBpcyBzcGVjaWZpZWQiLCA6YXJnbGlzdHMgW1tyZHJdXX0sIDpzb3VyY2UgIihkZWZuXG4gcmVhZC1saW5lXG4gXCJSZWFkcyBhIGxpbmUgZnJvbSB0aGUgcmVhZGVyIG9yIGZyb20gKmluKiBpZiBubyByZWFkZXIgaXMgc3BlY2lmaWVkXCJcbiAoW3Jkcl1cbiAgKGxvb3BcbiAgIFtjIChyZWFkLWNoYXIgcmRyKSBzIChTdHJpbmdCdWZmZXIuKV1cbiAgIChpZiAobmV3bGluZT8gYykgKHN0ciBzKSAocmVjdXIgKHJlYWQtY2hhciByZHIpICguYXBwZW5kIHMgYykpKSkpKVxuIn0gezpzeW0gc3RyaW5nLXB1c2gtYmFjay1yZWFkZXIsIDptZXRhIHs6ZG9jICJDcmVhdGVzIGEgUHVzaGJhY2tSZWFkZXIgZnJvbSBhIGdpdmVuIHN0cmluZyIsIDphcmdsaXN0cyBbW3NdIFtzIGJ1Zi1sZW5dXX0sIDpzb3VyY2UgIihkZWZuXG4gc3RyaW5nLXB1c2gtYmFjay1yZWFkZXJcbiBcIkNyZWF0ZXMgYSBQdXNoYmFja1JlYWRlciBmcm9tIGEgZ2l2ZW4gc3RyaW5nXCJcbiAoW3NdIChzdHJpbmctcHVzaC1iYWNrLXJlYWRlciBzIDEpKVxuIChbcyBidWYtbGVuXVxuICAoUHVzaGJhY2tSZWFkZXIuXG4gICAoc3RyaW5nLXJlYWRlciBzKVxuICAgKG9iamVjdC1hcnJheSBidWYtbGVuKVxuICAgYnVmLWxlblxuICAgYnVmLWxlbikpKVxuIn0gezpzeW0gbGluZS1zdGFydD8sIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRydWUgaWYgcmRyIGlzIGFuIEluZGV4aW5nUmVhZGVyIGFuZCB0aGUgY3VycmVudCBjaGFyIHN0YXJ0cyBhIG5ldyBsaW5lIiwgOmFyZ2xpc3RzIChbcmRyXSl9LCA6c291cmNlICIoZGVmblxuIGxpbmUtc3RhcnQ/XG4gXCJSZXR1cm5zIHRydWUgaWYgcmRyIGlzIGFuIEluZGV4aW5nUmVhZGVyIGFuZCB0aGUgY3VycmVudCBjaGFyIHN0YXJ0cyBhIG5ldyBsaW5lXCJcbiBbcmRyXVxuICh3aGVuIChpbmRleGluZy1yZWFkZXI/IHJkcikgKD09IDEgKGdldC1jb2x1bW4tbnVtYmVyIHJkcikpKSlcbiJ9IHs6c3ltIHNvdXJjZS1sb2dnaW5nLXJlYWRlcj8sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbcmRyXSl9LCA6c291cmNlICIoZGVmblxuIHNvdXJjZS1sb2dnaW5nLXJlYWRlcj9cbiBbcmRyXVxuIChpbnN0YW5jZT8gU291cmNlTG9nZ2luZ1B1c2hiYWNrUmVhZGVyIHJkcikpXG4ifSB7OnN5bSBJbmRleGluZ1JlYWRlciwgOm1ldGEgezpkb2MgbmlsfSwgOm1ldGhvZHMgKGdldC1jb2x1bW4tbnVtYmVyIGdldC1maWxlLW5hbWUgZ2V0LWxpbmUtbnVtYmVyKX0gezpzeW0gbm9kZS1yZWFkYWJsZS1wdXNoLWJhY2stcmVhZGVyLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3JlYWRhYmxlXSl9LCA6c291cmNlICIoZGVmblxuIG5vZGUtcmVhZGFibGUtcHVzaC1iYWNrLXJlYWRlclxuIFtyZWFkYWJsZV1cbiAoUHVzaGJhY2tSZWFkZXIuXG4gIChOb2RlUmVhZGFibGVSZWFkZXIuIHJlYWRhYmxlIG5pbClcbiAgKG9iamVjdC1hcnJheSAxKVxuICAxXG4gIDEpKVxuIn0gezpzeW0gZ2V0LWxpbmUtbnVtYmVyLCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0aGUgbGluZSBudW1iZXIgb2YgdGhlIG5leHQgY2hhcmFjdGVyIHRvIGJlIHJlYWQgZnJvbSB0aGUgc3RyZWFtIiwgOmFyZ2xpc3RzIChbcmVhZGVyXSl9LCA6cHJvdG9jb2wgSW5kZXhpbmdSZWFkZXJ9KSwgY2xqcy5lbnYgKHs6c3ltICpjb21waWxlciosIDptZXRhIHt9LCA6c291cmNlICIoZGVmICpjb21waWxlciogbmlsKVxuIn0gezpzeW0gZGVmYXVsdC1jb21waWxlci1lbnYqLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW29wdGlvbnNdKX0sIDpzb3VyY2UgIihkZWZuXG4gZGVmYXVsdC1jb21waWxlci1lbnYqXG4gW29wdGlvbnNdXG4gKG1lcmdlXG4gIHs6Y2xqcy5hbmFseXplci9uYW1lc3BhY2VzIHsnY2xqcy51c2VyIHs6bmFtZSAnY2xqcy51c2VyfX0sXG4gICA6Y2xqcy5hbmFseXplci9jb25zdGFudC10YWJsZSB7fSxcbiAgIDpjbGpzLmFuYWx5emVyL2RhdGEtcmVhZGVycyB7fSxcbiAgIDpjbGpzLmFuYWx5emVyL2V4dGVybnNcbiAgICM/KDpjbGogKGV4dGVybnMvZXh0ZXJucy1tYXAgKDpleHRlcm5zLXNvdXJjZXMgb3B0aW9ucykpIDpjbGpzIG5pbCksXG4gICA6b3B0aW9ucyBvcHRpb25zfVxuICAjP0AoOmNsaiBbKHdoZW4gKGFuZCAoPSA6bm9kZWpzICg6dGFyZ2V0IG9wdGlvbnMpKSAobm90IChmYWxzZT8gKDpub2RlanMtcnQgb3B0aW9ucykpKSkgezpub2RlLW1vZHVsZS1pbmRleCBkZXBzL25hdGl2ZS1ub2RlLW1vZHVsZXN9KSB7OmpzLWRlcGVuZGVuY3ktaW5kZXggKGRlcHMvanMtZGVwZW5kZW5jeS1pbmRleCBvcHRpb25zKX1dKSkpXG4ifSB7OnN5bSBkZWZhdWx0LWNvbXBpbGVyLWVudiwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgW1tdIFtvcHRpb25zXV19LCA6c291cmNlICIoZGVmblxuIGRlZmF1bHQtY29tcGlsZXItZW52XG4gKFtdIChkZWZhdWx0LWNvbXBpbGVyLWVudiB7fSkpXG4gKFtvcHRpb25zXSAoYXRvbSAoZGVmYXVsdC1jb21waWxlci1lbnYqIG9wdGlvbnMpKSkpXG4ifSksIHBhcmVuLXNvdXAuY29uc29sZSAoezpzeW0gY3JlYXRlLWNvbnNvbGUtaGlzdG9yeSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtdKX0sIDpzb3VyY2UgIihkZWZuXG4gY3JlYXRlLWNvbnNvbGUtaGlzdG9yeVxuIFtdXG4gKGF0b20gezpjdXJyZW50LWxpbmUgMCwgOmxpbmVzIFtdLCA6c3RhcnQgMH0pKVxuIn0gezpzeW0gZ2V0LWNvbnNvbGUtc3RhcnQsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbKmNvbnNvbGUtaGlzdG9yeV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBnZXQtY29uc29sZS1zdGFydFxuIFsqY29uc29sZS1oaXN0b3J5XVxuICgtPiAqY29uc29sZS1oaXN0b3J5IGRlcmVmIDpzdGFydCkpXG4ifSB7OnN5bSB1cGRhdGUtY29uc29sZS1zdGFydCEsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbKmNvbnNvbGUtaGlzdG9yeSBzdGFydF0pfSwgOnNvdXJjZSAiKGRlZm5cbiB1cGRhdGUtY29uc29sZS1zdGFydCFcbiBbKmNvbnNvbGUtaGlzdG9yeSBzdGFydF1cbiAoc3dhcCEgKmNvbnNvbGUtaGlzdG9yeSBhc3NvYyA6c3RhcnQgc3RhcnQpKVxuIn0gezpzeW0gdXBkYXRlLWNvbnNvbGUtaGlzdG9yeSEsIDptZXRhIHs6ZG9jICJVcGRhdGVzIHRoZSBjb25zb2xlIGhpc3RvcnkgYXRvbS4iLCA6YXJnbGlzdHMgKFsqY29uc29sZS1oaXN0b3J5IGxpbmVdKX0sIDpzb3VyY2UgIihkZWZuXG4gdXBkYXRlLWNvbnNvbGUtaGlzdG9yeSFcbiBcIlVwZGF0ZXMgdGhlIGNvbnNvbGUgaGlzdG9yeSBhdG9tLlwiXG4gWypjb25zb2xlLWhpc3RvcnkgbGluZV1cbiAobGV0XG4gIFt7OmtleXMgW2N1cnJlbnQtbGluZSBsaW5lc119IEAqY29uc29sZS1oaXN0b3J5XVxuICAoc3dhcCFcbiAgICpjb25zb2xlLWhpc3RvcnlcbiAgIChmblxuICAgIFtjb25zb2xlLWhpc3RvcnldXG4gICAgKGxldFxuICAgICBbbGluZXNcbiAgICAgIChpZlxuICAgICAgIChhbmQgKHNlcSBsaW5lKSAobm90PSBsaW5lIChsYXN0IGxpbmVzKSkpXG4gICAgICAgKGNvbmogbGluZXMgbGluZSlcbiAgICAgICBsaW5lcyldXG4gICAgIChhc3NvY1xuICAgICAgY29uc29sZS1oaXN0b3J5XG4gICAgICA6Y3VycmVudC1saW5lXG4gICAgICAoY291bnQgbGluZXMpXG4gICAgICA6bGluZXNcbiAgICAgIGxpbmVzKSkpKSkpXG4ifSB7OnN5bSBnZXQtcHJldmlvdXMtbGluZSwgOm1ldGEgezpkb2MgIlJldHVybnMgdGhlIHByZXZpb3VzIGxpbmUgZnJvbSBjb25zb2xlLWhpc3RvcnksIG9yIG5pbCBpZiB0aGVyZSBpcyBub25lLiIsIDphcmdsaXN0cyAoWypjb25zb2xlLWhpc3RvcnldKX0sIDpzb3VyY2UgIihkZWZuXG4gZ2V0LXByZXZpb3VzLWxpbmVcbiBcIlJldHVybnMgdGhlIHByZXZpb3VzIGxpbmUgZnJvbSBjb25zb2xlLWhpc3RvcnksIG9yIG5pbCBpZiB0aGVyZSBpcyBub25lLlwiXG4gWypjb25zb2xlLWhpc3RvcnldXG4gKGxldFxuICBbezprZXlzIFtjdXJyZW50LWxpbmUgbGluZXNdfSBAKmNvbnNvbGUtaGlzdG9yeV1cbiAgKGdldCBsaW5lcyAoZGVjIGN1cnJlbnQtbGluZSkpKSlcbiJ9IHs6c3ltIGdldC1uZXh0LWxpbmUsIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRoZSBuZXh0IGxpbmUgZnJvbSBjb25zb2xlLWhpc3RvcnksIG9yIG5pbCBpZiB0aGVyZSBpcyBub25lLiIsIDphcmdsaXN0cyAoWypjb25zb2xlLWhpc3RvcnldKX0sIDpzb3VyY2UgIihkZWZuXG4gZ2V0LW5leHQtbGluZVxuIFwiUmV0dXJucyB0aGUgbmV4dCBsaW5lIGZyb20gY29uc29sZS1oaXN0b3J5LCBvciBuaWwgaWYgdGhlcmUgaXMgbm9uZS5cIlxuIFsqY29uc29sZS1oaXN0b3J5XVxuIChsZXRcbiAgW3s6a2V5cyBbY3VycmVudC1saW5lIGxpbmVzXX0gQCpjb25zb2xlLWhpc3RvcnldXG4gIChnZXQgbGluZXMgKGluYyBjdXJyZW50LWxpbmUpKSkpXG4ifSB7OnN5bSB1cCEsIDptZXRhIHs6ZG9jICJDaGFuZ2VzIHRoZSBjdXJyZW50IGxpbmUgYW5kIHJldHVybnMgdGhlIHByZXZpb3VzIGxpbmUgZnJvbSBjb25zb2xlLWhpc3RvcnksIG9yIG5pbCBpZiB0aGVyZSBpcyBub25lLiIsIDphcmdsaXN0cyAoWypjb25zb2xlLWhpc3RvcnldKX0sIDpzb3VyY2UgIihkZWZuXG4gdXAhXG4gXCJDaGFuZ2VzIHRoZSBjdXJyZW50IGxpbmUgYW5kIHJldHVybnMgdGhlIHByZXZpb3VzIGxpbmUgZnJvbSBjb25zb2xlLWhpc3RvcnksIG9yIG5pbCBpZiB0aGVyZSBpcyBub25lLlwiXG4gWypjb25zb2xlLWhpc3RvcnldXG4gKGxldFxuICBbbGluZSAoZ2V0LXByZXZpb3VzLWxpbmUgKmNvbnNvbGUtaGlzdG9yeSldXG4gIChpZlxuICAgbGluZVxuICAgKHN3YXAhICpjb25zb2xlLWhpc3RvcnkgdXBkYXRlIDpjdXJyZW50LWxpbmUgZGVjKVxuICAgKHN3YXAhICpjb25zb2xlLWhpc3RvcnkgYXNzb2MgOmN1cnJlbnQtbGluZSAtMSkpXG4gIGxpbmUpKVxuIn0gezpzeW0gZG93biEsIDptZXRhIHs6ZG9jICJDaGFuZ2VzIHRoZSBjdXJyZW50IGxpbmUgYW5kIHJldHVybnMgdGhlIG5leHQgbGluZSBmcm9tIGNvbnNvbGUtaGlzdG9yeSwgb3IgbmlsIGlmIHRoZXJlIGlzIG5vbmUuIiwgOmFyZ2xpc3RzIChbKmNvbnNvbGUtaGlzdG9yeV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBkb3duIVxuIFwiQ2hhbmdlcyB0aGUgY3VycmVudCBsaW5lIGFuZCByZXR1cm5zIHRoZSBuZXh0IGxpbmUgZnJvbSBjb25zb2xlLWhpc3RvcnksIG9yIG5pbCBpZiB0aGVyZSBpcyBub25lLlwiXG4gWypjb25zb2xlLWhpc3RvcnldXG4gKGxldFxuICBbbGluZSAoZ2V0LW5leHQtbGluZSAqY29uc29sZS1oaXN0b3J5KV1cbiAgKGlmXG4gICBsaW5lXG4gICAoc3dhcCEgKmNvbnNvbGUtaGlzdG9yeSB1cGRhdGUgOmN1cnJlbnQtbGluZSBpbmMpXG4gICAoc3dhcCFcbiAgICAqY29uc29sZS1oaXN0b3J5XG4gICAgYXNzb2NcbiAgICA6Y3VycmVudC1saW5lXG4gICAgKC0+IEAqY29uc29sZS1oaXN0b3J5IDpsaW5lcyBjb3VudCkpKVxuICBsaW5lKSlcbiJ9KSwgY2xqcy5jb3JlLmFzeW5jICh7OnN5bSBQdWIsIDptZXRhIHs6ZG9jIG5pbH0sIDptZXRob2RzIChzdWIqIHVuc3ViKiB1bnN1Yi1hbGwqKX0gezpzeW0gcmVkdWNlLCA6bWV0YSB7OmRvYyAiZiBzaG91bGQgYmUgYSBmdW5jdGlvbiBvZiAyIGFyZ3VtZW50cy4gUmV0dXJucyBhIGNoYW5uZWwgY29udGFpbmluZ1xuICB0aGUgc2luZ2xlIHJlc3VsdCBvZiBhcHBseWluZyBmIHRvIGluaXQgYW5kIHRoZSBmaXJzdCBpdGVtIGZyb20gdGhlXG4gIGNoYW5uZWwsIHRoZW4gYXBwbHlpbmcgZiB0byB0aGF0IHJlc3VsdCBhbmQgdGhlIDJuZCBpdGVtLCBldGMuIElmXG4gIHRoZSBjaGFubmVsIGNsb3NlcyB3aXRob3V0IHlpZWxkaW5nIGl0ZW1zLCByZXR1cm5zIGluaXQgYW5kIGYgaXMgbm90XG4gIGNhbGxlZC4gY2ggbXVzdCBjbG9zZSBiZWZvcmUgcmVkdWNlIHByb2R1Y2VzIGEgcmVzdWx0LiIsIDphcmdsaXN0cyAoW2YgaW5pdCBjaF0pfSwgOnNvdXJjZSAiKGRlZm5cbiByZWR1Y2VcbiBcImYgc2hvdWxkIGJlIGEgZnVuY3Rpb24gb2YgMiBhcmd1bWVudHMuIFJldHVybnMgYSBjaGFubmVsIGNvbnRhaW5pbmdcXG4gIHRoZSBzaW5nbGUgcmVzdWx0IG9mIGFwcGx5aW5nIGYgdG8gaW5pdCBhbmQgdGhlIGZpcnN0IGl0ZW0gZnJvbSB0aGVcXG4gIGNoYW5uZWwsIHRoZW4gYXBwbHlpbmcgZiB0byB0aGF0IHJlc3VsdCBhbmQgdGhlIDJuZCBpdGVtLCBldGMuIElmXFxuICB0aGUgY2hhbm5lbCBjbG9zZXMgd2l0aG91dCB5aWVsZGluZyBpdGVtcywgcmV0dXJucyBpbml0IGFuZCBmIGlzIG5vdFxcbiAgY2FsbGVkLiBjaCBtdXN0IGNsb3NlIGJlZm9yZSByZWR1Y2UgcHJvZHVjZXMgYSByZXN1bHQuXCJcbiBbZiBpbml0IGNoXVxuIChnby1sb29wXG4gIFtyZXQgaW5pdF1cbiAgKGxldFxuICAgW3YgKDwhIGNoKV1cbiAgIChpZlxuICAgIChuaWw/IHYpXG4gICAgcmV0XG4gICAgKGxldCBbcmV0JyAoZiByZXQgdildIChpZiAocmVkdWNlZD8gcmV0JykgQHJldCcgKHJlY3VyIHJldCcpKSkpKSkpXG4ifSB7OnN5bSByZW1vdmU+LCA6bWV0YSB7OmRvYyAiRGVwcmVjYXRlZCAtIHRoaXMgZnVuY3Rpb24gd2lsbCBiZSByZW1vdmVkLiBVc2UgdHJhbnNkdWNlciBpbnN0ZWFkIiwgOmFyZ2xpc3RzIChbcCBjaF0pfSwgOnNvdXJjZSAiKGRlZm5cbiByZW1vdmU+XG4gXCJEZXByZWNhdGVkIC0gdGhpcyBmdW5jdGlvbiB3aWxsIGJlIHJlbW92ZWQuIFVzZSB0cmFuc2R1Y2VyIGluc3RlYWRcIlxuIFtwIGNoXVxuIChmaWx0ZXI+IChjb21wbGVtZW50IHApIGNoKSlcbiJ9IHs6c3ltIHRpbWVvdXQsIDptZXRhIHs6ZG9jICJSZXR1cm5zIGEgY2hhbm5lbCB0aGF0IHdpbGwgY2xvc2UgYWZ0ZXIgbXNlY3MiLCA6YXJnbGlzdHMgKFttc2Vjc10pfSwgOnNvdXJjZSAiKGRlZm5cbiB0aW1lb3V0XG4gXCJSZXR1cm5zIGEgY2hhbm5lbCB0aGF0IHdpbGwgY2xvc2UgYWZ0ZXIgbXNlY3NcIlxuIFttc2Vjc11cbiAodGltZXJzL3RpbWVvdXQgbXNlY3MpKVxuIn0gezpzeW0gdW5zdWIqLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3AgdiBjaF0pfSwgOnByb3RvY29sIFB1Yn0gezpzeW0gYWRtaXgqLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW20gY2hdKX0sIDpwcm90b2NvbCBNaXh9IHs6c3ltIHVubWl4KiwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFttIGNoXSl9LCA6cHJvdG9jb2wgTWl4fSB7OnN5bSBtaXgsIDptZXRhIHs6ZG9jICJDcmVhdGVzIGFuZCByZXR1cm5zIGEgbWl4IG9mIG9uZSBvciBtb3JlIGlucHV0IGNoYW5uZWxzIHdoaWNoIHdpbGxcbiAgYmUgcHV0IG9uIHRoZSBzdXBwbGllZCBvdXQgY2hhbm5lbC4gSW5wdXQgc291cmNlcyBjYW4gYmUgYWRkZWQgdG9cbiAgdGhlIG1peCB3aXRoICdhZG1peCcsIGFuZCByZW1vdmVkIHdpdGggJ3VubWl4Jy4gQSBtaXggc3VwcG9ydHNcbiAgc29sb2luZywgbXV0aW5nIGFuZCBwYXVzaW5nIG11bHRpcGxlIGlucHV0cyBhdG9taWNhbGx5IHVzaW5nXG4gICd0b2dnbGUnLCBhbmQgY2FuIHNvbG8gdXNpbmcgZWl0aGVyIG11dGluZyBvciBwYXVzaW5nIGFzIGRldGVybWluZWRcbiAgYnkgJ3NvbG8tbW9kZScuXG5cbiAgRWFjaCBjaGFubmVsIGNhbiBoYXZlIHplcm8gb3IgbW9yZSBib29sZWFuIG1vZGVzIHNldCB2aWEgJ3RvZ2dsZSc6XG5cbiAgOnNvbG8gLSB3aGVuIHRydWUsIG9ubHkgdGhpcyAob25kIG90aGVyIHNvbG9lZCkgY2hhbm5lbChzKSB3aWxsIGFwcGVhclxuICAgICAgICAgIGluIHRoZSBtaXggb3V0cHV0IGNoYW5uZWwuIDptdXRlIGFuZCA6cGF1c2Ugc3RhdGVzIG9mIHNvbG9lZFxuICAgICAgICAgIGNoYW5uZWxzIGFyZSBpZ25vcmVkLiBJZiBzb2xvLW1vZGUgaXMgOm11dGUsIG5vbi1zb2xvZWRcbiAgICAgICAgICBjaGFubmVscyBhcmUgbXV0ZWQsIGlmIDpwYXVzZSwgbm9uLXNvbG9lZCBjaGFubmVscyBhcmVcbiAgICAgICAgICBwYXVzZWQuXG5cbiAgOm11dGUgLSBtdXRlZCBjaGFubmVscyB3aWxsIGhhdmUgdGhlaXIgY29udGVudHMgY29uc3VtZWQgYnV0IG5vdCBpbmNsdWRlZCBpbiB0aGUgbWl4XG4gIDpwYXVzZSAtIHBhdXNlZCBjaGFubmVscyB3aWxsIG5vdCBoYXZlIHRoZWlyIGNvbnRlbnRzIGNvbnN1bWVkIChhbmQgdGh1cyBhbHNvIG5vdCBpbmNsdWRlZCBpbiB0aGUgbWl4KVxuIiwgOmFyZ2xpc3RzIChbb3V0XSl9LCA6c291cmNlICIoZGVmblxuIG1peFxuIFwiQ3JlYXRlcyBhbmQgcmV0dXJucyBhIG1peCBvZiBvbmUgb3IgbW9yZSBpbnB1dCBjaGFubmVscyB3aGljaCB3aWxsXFxuICBiZSBwdXQgb24gdGhlIHN1cHBsaWVkIG91dCBjaGFubmVsLiBJbnB1dCBzb3VyY2VzIGNhbiBiZSBhZGRlZCB0b1xcbiAgdGhlIG1peCB3aXRoICdhZG1peCcsIGFuZCByZW1vdmVkIHdpdGggJ3VubWl4Jy4gQSBtaXggc3VwcG9ydHNcXG4gIHNvbG9pbmcsIG11dGluZyBhbmQgcGF1c2luZyBtdWx0aXBsZSBpbnB1dHMgYXRvbWljYWxseSB1c2luZ1xcbiAgJ3RvZ2dsZScsIGFuZCBjYW4gc29sbyB1c2luZyBlaXRoZXIgbXV0aW5nIG9yIHBhdXNpbmcgYXMgZGV0ZXJtaW5lZFxcbiAgYnkgJ3NvbG8tbW9kZScuXFxuXFxuICBFYWNoIGNoYW5uZWwgY2FuIGhhdmUgemVybyBvciBtb3JlIGJvb2xlYW4gbW9kZXMgc2V0IHZpYSAndG9nZ2xlJzpcXG5cXG4gIDpzb2xvIC0gd2hlbiB0cnVlLCBvbmx5IHRoaXMgKG9uZCBvdGhlciBzb2xvZWQpIGNoYW5uZWwocykgd2lsbCBhcHBlYXJcXG4gICAgICAgICAgaW4gdGhlIG1peCBvdXRwdXQgY2hhbm5lbC4gOm11dGUgYW5kIDpwYXVzZSBzdGF0ZXMgb2Ygc29sb2VkXFxuICAgICAgICAgIGNoYW5uZWxzIGFyZSBpZ25vcmVkLiBJZiBzb2xvLW1vZGUgaXMgOm11dGUsIG5vbi1zb2xvZWRcXG4gICAgICAgICAgY2hhbm5lbHMgYXJlIG11dGVkLCBpZiA6cGF1c2UsIG5vbi1zb2xvZWQgY2hhbm5lbHMgYXJlXFxuICAgICAgICAgIHBhdXNlZC5cXG5cXG4gIDptdXRlIC0gbXV0ZWQgY2hhbm5lbHMgd2lsbCBoYXZlIHRoZWlyIGNvbnRlbnRzIGNvbnN1bWVkIGJ1dCBub3QgaW5jbHVkZWQgaW4gdGhlIG1peFxcbiAgOnBhdXNlIC0gcGF1c2VkIGNoYW5uZWxzIHdpbGwgbm90IGhhdmUgdGhlaXIgY29udGVudHMgY29uc3VtZWQgKGFuZCB0aHVzIGFsc28gbm90IGluY2x1ZGVkIGluIHRoZSBtaXgpXFxuXCJcbiBbb3V0XVxuIChsZXRcbiAgW2NzXG4gICAoYXRvbSB7fSlcbiAgIHNvbG8tbW9kZXNcbiAgICN7OnBhdXNlIDptdXRlfVxuICAgYXR0cnNcbiAgIChjb25qIHNvbG8tbW9kZXMgOnNvbG8pXG4gICBzb2xvLW1vZGVcbiAgIChhdG9tIDptdXRlKVxuICAgY2hhbmdlXG4gICAoY2hhbiAoc2xpZGluZy1idWZmZXIgMSkpXG4gICBjaGFuZ2VkXG4gICAoZm4qIFtdIChwdXQhIGNoYW5nZSB0cnVlKSlcbiAgIHBpY2tcbiAgIChmblxuICAgIFthdHRyIGNoc11cbiAgICAocmVkdWNlLWt2IChmbiBbcmV0IGMgdl0gKGlmIChhdHRyIHYpIChjb25qIHJldCBjKSByZXQpKSAje30gY2hzKSlcbiAgIGNhbGMtc3RhdGVcbiAgIChmblxuICAgIFtdXG4gICAgKGxldFxuICAgICBbY2hzXG4gICAgICBAY3NcbiAgICAgIG1vZGVcbiAgICAgIEBzb2xvLW1vZGVcbiAgICAgIHNvbG9zXG4gICAgICAocGljayA6c29sbyBjaHMpXG4gICAgICBwYXVzZXNcbiAgICAgIChwaWNrIDpwYXVzZSBjaHMpXVxuICAgICB7OnNvbG9zIHNvbG9zLFxuICAgICAgOm11dGVzIChwaWNrIDptdXRlIGNocyksXG4gICAgICA6cmVhZHNcbiAgICAgIChjb25qXG4gICAgICAgKGlmXG4gICAgICAgIChhbmQgKD0gbW9kZSA6cGF1c2UpIChub3QgKGVtcHR5PyBzb2xvcykpKVxuICAgICAgICAodmVjIHNvbG9zKVxuICAgICAgICAodmVjIChyZW1vdmUgcGF1c2VzIChrZXlzIGNocykpKSlcbiAgICAgICBjaGFuZ2UpfSkpXG4gICBtXG4gICAocmVpZnlcbiAgICBNdXhcbiAgICAobXV4Y2gqIFtfXSBvdXQpXG4gICAgTWl4XG4gICAgKGFkbWl4KiBbXyBjaF0gKHN3YXAhIGNzIGFzc29jIGNoIHt9KSAoY2hhbmdlZCkpXG4gICAgKHVubWl4KiBbXyBjaF0gKHN3YXAhIGNzIGRpc3NvYyBjaCkgKGNoYW5nZWQpKVxuICAgICh1bm1peC1hbGwqIFtfXSAocmVzZXQhIGNzIHt9KSAoY2hhbmdlZCkpXG4gICAgKHRvZ2dsZSpcbiAgICAgW18gc3RhdGUtbWFwXVxuICAgICAoc3dhcCEgY3MgKHBhcnRpYWwgbWVyZ2Utd2l0aCBjbGpzLmNvcmUvbWVyZ2UpIHN0YXRlLW1hcClcbiAgICAgKGNoYW5nZWQpKVxuICAgIChzb2xvLW1vZGUqXG4gICAgIFtfIG1vZGVdXG4gICAgIChhc3NlcnRcbiAgICAgIChzb2xvLW1vZGVzIG1vZGUpXG4gICAgICAoc3RyIFwibW9kZSBtdXN0IGJlIG9uZSBvZjogXCIgc29sby1tb2RlcykpXG4gICAgIChyZXNldCEgc29sby1tb2RlIG1vZGUpXG4gICAgIChjaGFuZ2VkKSkpXVxuICAoZ28tbG9vcFxuICAgW3s6a2V5cyBbc29sb3MgbXV0ZXMgcmVhZHNdLCA6YXMgc3RhdGV9IChjYWxjLXN0YXRlKV1cbiAgIChsZXRcbiAgICBbW3YgY10gKGFsdHMhIHJlYWRzKV1cbiAgICAoaWZcbiAgICAgKG9yIChuaWw/IHYpICg9IGMgY2hhbmdlKSlcbiAgICAgKGRvICh3aGVuIChuaWw/IHYpIChzd2FwISBjcyBkaXNzb2MgYykpIChyZWN1ciAoY2FsYy1zdGF0ZSkpKVxuICAgICAoaWZcbiAgICAgIChvciAoc29sb3MgYykgKGFuZCAoZW1wdHk/IHNvbG9zKSAobm90IChtdXRlcyBjKSkpKVxuICAgICAgKHdoZW4gKD4hIG91dCB2KSAocmVjdXIgc3RhdGUpKVxuICAgICAgKHJlY3VyIHN0YXRlKSkpKSlcbiAgbSkpXG4ifSB7OnN5bSBwdWIsIDptZXRhIHs6ZG9jICJDcmVhdGVzIGFuZCByZXR1cm5zIGEgcHViKGxpY2F0aW9uKSBvZiB0aGUgc3VwcGxpZWQgY2hhbm5lbCxcbiAgcGFydGl0aW9uZWQgaW50byB0b3BpY3MgYnkgdGhlIHRvcGljLWZuLiB0b3BpYy1mbiB3aWxsIGJlIGFwcGxpZWQgdG9cbiAgZWFjaCB2YWx1ZSBvbiB0aGUgY2hhbm5lbCBhbmQgdGhlIHJlc3VsdCB3aWxsIGRldGVybWluZSB0aGUgJ3RvcGljJ1xuICBvbiB3aGljaCB0aGF0IHZhbHVlIHdpbGwgYmUgcHV0LiBDaGFubmVscyBjYW4gYmUgc3Vic2NyaWJlZCB0b1xuICByZWNlaXZlIGNvcGllcyBvZiB0b3BpY3MgdXNpbmcgJ3N1YicsIGFuZCB1bnN1YnNjcmliZWQgdXNpbmdcbiAgJ3Vuc3ViJy4gRWFjaCB0b3BpYyB3aWxsIGJlIGhhbmRsZWQgYnkgYW4gaW50ZXJuYWwgbXVsdCBvbiBhXG4gIGRlZGljYXRlZCBjaGFubmVsLiBCeSBkZWZhdWx0IHRoZXNlIGludGVybmFsIGNoYW5uZWxzIGFyZVxuICB1bmJ1ZmZlcmVkLCBidXQgYSBidWYtZm4gY2FuIGJlIHN1cHBsaWVkIHdoaWNoLCBnaXZlbiBhIHRvcGljLFxuICBjcmVhdGVzIGEgYnVmZmVyIHdpdGggZGVzaXJlZCBwcm9wZXJ0aWVzLlxuXG4gIEVhY2ggaXRlbSBpcyBkaXN0cmlidXRlZCB0byBhbGwgc3VicyBpbiBwYXJhbGxlbCBhbmQgc3luY2hyb25vdXNseSxcbiAgaS5lLiBlYWNoIHN1YiBtdXN0IGFjY2VwdCBiZWZvcmUgdGhlIG5leHQgaXRlbSBpcyBkaXN0cmlidXRlZC4gVXNlXG4gIGJ1ZmZlcmluZy93aW5kb3dpbmcgdG8gcHJldmVudCBzbG93IHN1YnMgZnJvbSBob2xkaW5nIHVwIHRoZSBwdWIuXG5cbiAgSXRlbXMgcmVjZWl2ZWQgd2hlbiB0aGVyZSBhcmUgbm8gbWF0Y2hpbmcgc3VicyBnZXQgZHJvcHBlZC5cblxuICBOb3RlIHRoYXQgaWYgYnVmLWZucyBhcmUgdXNlZCB0aGVuIGVhY2ggdG9waWMgaXMgaGFuZGxlZFxuICBhc3luY2hyb25vdXNseSwgaS5lLiBpZiBhIGNoYW5uZWwgaXMgc3Vic2NyaWJlZCB0byBtb3JlIHRoYW4gb25lXG4gIHRvcGljIGl0IHNob3VsZCBub3QgZXhwZWN0IHRoZW0gdG8gYmUgaW50ZXJsZWF2ZWQgaWRlbnRpY2FsbHkgd2l0aFxuICB0aGUgc291cmNlLiIsIDphcmdsaXN0cyBbW2NoIHRvcGljLWZuXSBbY2ggdG9waWMtZm4gYnVmLWZuXV19LCA6c291cmNlICIoZGVmblxuIHB1YlxuIFwiQ3JlYXRlcyBhbmQgcmV0dXJucyBhIHB1YihsaWNhdGlvbikgb2YgdGhlIHN1cHBsaWVkIGNoYW5uZWwsXFxuICBwYXJ0aXRpb25lZCBpbnRvIHRvcGljcyBieSB0aGUgdG9waWMtZm4uIHRvcGljLWZuIHdpbGwgYmUgYXBwbGllZCB0b1xcbiAgZWFjaCB2YWx1ZSBvbiB0aGUgY2hhbm5lbCBhbmQgdGhlIHJlc3VsdCB3aWxsIGRldGVybWluZSB0aGUgJ3RvcGljJ1xcbiAgb24gd2hpY2ggdGhhdCB2YWx1ZSB3aWxsIGJlIHB1dC4gQ2hhbm5lbHMgY2FuIGJlIHN1YnNjcmliZWQgdG9cXG4gIHJlY2VpdmUgY29waWVzIG9mIHRvcGljcyB1c2luZyAnc3ViJywgYW5kIHVuc3Vic2NyaWJlZCB1c2luZ1xcbiAgJ3Vuc3ViJy4gRWFjaCB0b3BpYyB3aWxsIGJlIGhhbmRsZWQgYnkgYW4gaW50ZXJuYWwgbXVsdCBvbiBhXFxuICBkZWRpY2F0ZWQgY2hhbm5lbC4gQnkgZGVmYXVsdCB0aGVzZSBpbnRlcm5hbCBjaGFubmVscyBhcmVcXG4gIHVuYnVmZmVyZWQsIGJ1dCBhIGJ1Zi1mbiBjYW4gYmUgc3VwcGxpZWQgd2hpY2gsIGdpdmVuIGEgdG9waWMsXFxuICBjcmVhdGVzIGEgYnVmZmVyIHdpdGggZGVzaXJlZCBwcm9wZXJ0aWVzLlxcblxcbiAgRWFjaCBpdGVtIGlzIGRpc3RyaWJ1dGVkIHRvIGFsbCBzdWJzIGluIHBhcmFsbGVsIGFuZCBzeW5jaHJvbm91c2x5LFxcbiAgaS5lLiBlYWNoIHN1YiBtdXN0IGFjY2VwdCBiZWZvcmUgdGhlIG5leHQgaXRlbSBpcyBkaXN0cmlidXRlZC4gVXNlXFxuICBidWZmZXJpbmcvd2luZG93aW5nIHRvIHByZXZlbnQgc2xvdyBzdWJzIGZyb20gaG9sZGluZyB1cCB0aGUgcHViLlxcblxcbiAgSXRlbXMgcmVjZWl2ZWQgd2hlbiB0aGVyZSBhcmUgbm8gbWF0Y2hpbmcgc3VicyBnZXQgZHJvcHBlZC5cXG5cXG4gIE5vdGUgdGhhdCBpZiBidWYtZm5zIGFyZSB1c2VkIHRoZW4gZWFjaCB0b3BpYyBpcyBoYW5kbGVkXFxuICBhc3luY2hyb25vdXNseSwgaS5lLiBpZiBhIGNoYW5uZWwgaXMgc3Vic2NyaWJlZCB0byBtb3JlIHRoYW4gb25lXFxuICB0b3BpYyBpdCBzaG91bGQgbm90IGV4cGVjdCB0aGVtIHRvIGJlIGludGVybGVhdmVkIGlkZW50aWNhbGx5IHdpdGhcXG4gIHRoZSBzb3VyY2UuXCJcbiAoW2NoIHRvcGljLWZuXSAocHViIGNoIHRvcGljLWZuIChjb25zdGFudGx5IG5pbCkpKVxuIChbY2ggdG9waWMtZm4gYnVmLWZuXVxuICAobGV0XG4gICBbbXVsdHNcbiAgICAoYXRvbSB7fSlcbiAgICBlbnN1cmUtbXVsdFxuICAgIChmblxuICAgICBbdG9waWNdXG4gICAgIChvclxuICAgICAgKGdldCBAbXVsdHMgdG9waWMpXG4gICAgICAoZ2V0XG4gICAgICAgKHN3YXAhXG4gICAgICAgIG11bHRzXG4gICAgICAgIChmbipcbiAgICAgICAgIFtwMV9fNDI4NjYjXVxuICAgICAgICAgKGlmXG4gICAgICAgICAgKHAxX180Mjg2NiMgdG9waWMpXG4gICAgICAgICAgcDFfXzQyODY2I1xuICAgICAgICAgIChhc3NvYyBwMV9fNDI4NjYjIHRvcGljIChtdWx0IChjaGFuIChidWYtZm4gdG9waWMpKSkpKSkpXG4gICAgICAgdG9waWMpKSlcbiAgICBwXG4gICAgKHJlaWZ5XG4gICAgIE11eFxuICAgICAobXV4Y2gqIFtfXSBjaClcbiAgICAgUHViXG4gICAgIChzdWIqXG4gICAgICBbcCB0b3BpYyBjaCBjbG9zZT9dXG4gICAgICAobGV0IFttIChlbnN1cmUtbXVsdCB0b3BpYyldICh0YXAgbSBjaCBjbG9zZT8pKSlcbiAgICAgKHVuc3ViKlxuICAgICAgW3AgdG9waWMgY2hdXG4gICAgICAod2hlbi1sZXQgW20gKGdldCBAbXVsdHMgdG9waWMpXSAodW50YXAgbSBjaCkpKVxuICAgICAodW5zdWItYWxsKiBbX10gKHJlc2V0ISBtdWx0cyB7fSkpXG4gICAgICh1bnN1Yi1hbGwqIFtfIHRvcGljXSAoc3dhcCEgbXVsdHMgZGlzc29jIHRvcGljKSkpXVxuICAgKGdvLWxvb3BcbiAgICBbXVxuICAgIChsZXRcbiAgICAgW3ZhbCAoPCEgY2gpXVxuICAgICAoaWZcbiAgICAgIChuaWw/IHZhbClcbiAgICAgIChkb3NlcSBbbSAodmFscyBAbXVsdHMpXSAoY2xvc2UhIChtdXhjaCogbSkpKVxuICAgICAgKGxldFxuICAgICAgIFt0b3BpYyAodG9waWMtZm4gdmFsKSBtIChnZXQgQG11bHRzIHRvcGljKV1cbiAgICAgICAod2hlblxuICAgICAgICBtXG4gICAgICAgICh3aGVuLW5vdCAoPiEgKG11eGNoKiBtKSB2YWwpIChzd2FwISBtdWx0cyBkaXNzb2MgdG9waWMpKSlcbiAgICAgICAocmVjdXIpKSkpKVxuICAgcCkpKVxuIn0gezpzeW0gdGFrZSwgOm1ldGEgezpkb2MgIlJldHVybnMgYSBjaGFubmVsIHRoYXQgd2lsbCByZXR1cm4sIGF0IG1vc3QsIG4gaXRlbXMgZnJvbSBjaC4gQWZ0ZXIgbiBpdGVtc1xuICAgaGF2ZSBiZWVuIHJldHVybmVkLCBvciBjaCBoYXMgYmVlbiBjbG9zZWQsIHRoZSByZXR1cm4gY2hhbmVsIHdpbGwgY2xvc2UuXG5cbiAgVGhlIG91dHB1dCBjaGFubmVsIGlzIHVuYnVmZmVyZWQgYnkgZGVmYXVsdCwgdW5sZXNzIGJ1Zi1vci1uIGlzIGdpdmVuLiIsIDphcmdsaXN0cyBbW24gY2hdIFtuIGNoIGJ1Zi1vci1uXV19LCA6c291cmNlICIoZGVmblxuIHRha2VcbiBcIlJldHVybnMgYSBjaGFubmVsIHRoYXQgd2lsbCByZXR1cm4sIGF0IG1vc3QsIG4gaXRlbXMgZnJvbSBjaC4gQWZ0ZXIgbiBpdGVtc1xcbiAgIGhhdmUgYmVlbiByZXR1cm5lZCwgb3IgY2ggaGFzIGJlZW4gY2xvc2VkLCB0aGUgcmV0dXJuIGNoYW5lbCB3aWxsIGNsb3NlLlxcblxcbiAgVGhlIG91dHB1dCBjaGFubmVsIGlzIHVuYnVmZmVyZWQgYnkgZGVmYXVsdCwgdW5sZXNzIGJ1Zi1vci1uIGlzIGdpdmVuLlwiXG4gKFtuIGNoXSAodGFrZSBuIGNoIG5pbCkpXG4gKFtuIGNoIGJ1Zi1vci1uXVxuICAobGV0XG4gICBbb3V0IChjaGFuIGJ1Zi1vci1uKV1cbiAgIChnb1xuICAgIChsb29wXG4gICAgIFt4IDBdXG4gICAgICh3aGVuXG4gICAgICAoPCB4IG4pXG4gICAgICAobGV0XG4gICAgICAgW3YgKDwhIGNoKV1cbiAgICAgICAod2hlbiAobm90IChuaWw/IHYpKSAoPiEgb3V0IHYpIChyZWN1ciAoaW5jIHgpKSkpKSlcbiAgICAoY2xvc2UhIG91dCkpXG4gICBvdXQpKSlcbiJ9IHs6c3ltIHVuc3ViLWFsbCosIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbcF0gW3Agdl0pfSwgOnByb3RvY29sIFB1Yn0gezpzeW0gPCEsIDptZXRhIHs6ZG9jICJ0YWtlcyBhIHZhbCBmcm9tIHBvcnQuIE11c3QgYmUgY2FsbGVkIGluc2lkZSBhIChnbyAuLi4pIGJsb2NrLiBXaWxsXG4gIHJldHVybiBuaWwgaWYgY2xvc2VkLiBXaWxsIHBhcmsgaWYgbm90aGluZyBpcyBhdmFpbGFibGUuXG4gIFJldHVybnMgdHJ1ZSB1bmxlc3MgcG9ydCBpcyBhbHJlYWR5IGNsb3NlZCIsIDphcmdsaXN0cyAoW3BvcnRdKX0sIDpzb3VyY2UgIihkZWZuXG4gPCFcbiBcInRha2VzIGEgdmFsIGZyb20gcG9ydC4gTXVzdCBiZSBjYWxsZWQgaW5zaWRlIGEgKGdvIC4uLikgYmxvY2suIFdpbGxcXG4gIHJldHVybiBuaWwgaWYgY2xvc2VkLiBXaWxsIHBhcmsgaWYgbm90aGluZyBpcyBhdmFpbGFibGUuXFxuICBSZXR1cm5zIHRydWUgdW5sZXNzIHBvcnQgaXMgYWxyZWFkeSBjbG9zZWRcIlxuIFtwb3J0XVxuICh0aHJvdyAoanMvRXJyb3IuIFwiPCEgdXNlZCBub3QgaW4gKGdvIC4uLikgYmxvY2tcIikpKVxuIn0gezpzeW0gbWFwLCA6bWV0YSB7OmRvYyAiVGFrZXMgYSBmdW5jdGlvbiBhbmQgYSBjb2xsZWN0aW9uIG9mIHNvdXJjZSBjaGFubmVscywgYW5kIHJldHVybnMgYVxuICBjaGFubmVsIHdoaWNoIGNvbnRhaW5zIHRoZSB2YWx1ZXMgcHJvZHVjZWQgYnkgYXBwbHlpbmcgZiB0byB0aGUgc2V0XG4gIG9mIGZpcnN0IGl0ZW1zIHRha2VuIGZyb20gZWFjaCBzb3VyY2UgY2hhbm5lbCwgZm9sbG93ZWQgYnkgYXBwbHlpbmdcbiAgZiB0byB0aGUgc2V0IG9mIHNlY29uZCBpdGVtcyBmcm9tIGVhY2ggY2hhbm5lbCwgdW50aWwgYW55IG9uZSBvZiB0aGVcbiAgY2hhbm5lbHMgaXMgY2xvc2VkLCBhdCB3aGljaCBwb2ludCB0aGUgb3V0cHV0IGNoYW5uZWwgd2lsbCBiZVxuICBjbG9zZWQuIFRoZSByZXR1cm5lZCBjaGFubmVsIHdpbGwgYmUgdW5idWZmZXJlZCBieSBkZWZhdWx0LCBvciBhXG4gIGJ1Zi1vci1uIGNhbiBiZSBzdXBwbGllZCIsIDphcmdsaXN0cyBbW2YgY2hzXSBbZiBjaHMgYnVmLW9yLW5dXX0sIDpzb3VyY2UgIihkZWZuXG4gbWFwXG4gXCJUYWtlcyBhIGZ1bmN0aW9uIGFuZCBhIGNvbGxlY3Rpb24gb2Ygc291cmNlIGNoYW5uZWxzLCBhbmQgcmV0dXJucyBhXFxuICBjaGFubmVsIHdoaWNoIGNvbnRhaW5zIHRoZSB2YWx1ZXMgcHJvZHVjZWQgYnkgYXBwbHlpbmcgZiB0byB0aGUgc2V0XFxuICBvZiBmaXJzdCBpdGVtcyB0YWtlbiBmcm9tIGVhY2ggc291cmNlIGNoYW5uZWwsIGZvbGxvd2VkIGJ5IGFwcGx5aW5nXFxuICBmIHRvIHRoZSBzZXQgb2Ygc2Vjb25kIGl0ZW1zIGZyb20gZWFjaCBjaGFubmVsLCB1bnRpbCBhbnkgb25lIG9mIHRoZVxcbiAgY2hhbm5lbHMgaXMgY2xvc2VkLCBhdCB3aGljaCBwb2ludCB0aGUgb3V0cHV0IGNoYW5uZWwgd2lsbCBiZVxcbiAgY2xvc2VkLiBUaGUgcmV0dXJuZWQgY2hhbm5lbCB3aWxsIGJlIHVuYnVmZmVyZWQgYnkgZGVmYXVsdCwgb3IgYVxcbiAgYnVmLW9yLW4gY2FuIGJlIHN1cHBsaWVkXCJcbiAoW2YgY2hzXSAobWFwIGYgY2hzIG5pbCkpXG4gKFtmIGNocyBidWYtb3Itbl1cbiAgKGxldFxuICAgW2Noc1xuICAgICh2ZWMgY2hzKVxuICAgIG91dFxuICAgIChjaGFuIGJ1Zi1vci1uKVxuICAgIGNudFxuICAgIChjb3VudCBjaHMpXG4gICAgcmV0c1xuICAgIChvYmplY3QtYXJyYXkgY250KVxuICAgIGRjaGFuXG4gICAgKGNoYW4gMSlcbiAgICBkY3RyXG4gICAgKGF0b20gbmlsKVxuICAgIGRvbmVcbiAgICAobWFwdlxuICAgICAoZm5cbiAgICAgIFtpXVxuICAgICAgKGZuXG4gICAgICAgW3JldF1cbiAgICAgICAoYXNldCByZXRzIGkgcmV0KVxuICAgICAgICh3aGVuICh6ZXJvPyAoc3dhcCEgZGN0ciBkZWMpKSAocHV0ISBkY2hhbiAoLnNsaWNlIHJldHMgMCkpKSkpXG4gICAgIChyYW5nZSBjbnQpKV1cbiAgIChnby1sb29wXG4gICAgW11cbiAgICAocmVzZXQhIGRjdHIgY250KVxuICAgIChkb3RpbWVzXG4gICAgIFtpIGNudF1cbiAgICAgKHRyeVxuICAgICAgKHRha2UhIChjaHMgaSkgKGRvbmUgaSkpXG4gICAgICAoY2F0Y2gganMvT2JqZWN0IGUgKHN3YXAhIGRjdHIgZGVjKSkpKVxuICAgIChsZXRcbiAgICAgW3JldHMgKDwhIGRjaGFuKV1cbiAgICAgKGlmXG4gICAgICAoc29tZSBuaWw/IHJldHMpXG4gICAgICAoY2xvc2UhIG91dClcbiAgICAgIChkbyAoPiEgb3V0IChhcHBseSBmIHJldHMpKSAocmVjdXIpKSkpKVxuICAgb3V0KSkpXG4ifSB7OnN5bSBNdXgsIDptZXRhIHs6ZG9jIG5pbH0sIDptZXRob2RzIChtdXhjaCopfSB7OnN5bSBtYXBjYXQ+LCA6bWV0YSB7OmRvYyAiRGVwcmVjYXRlZCAtIHRoaXMgZnVuY3Rpb24gd2lsbCBiZSByZW1vdmVkLiBVc2UgdHJhbnNkdWNlciBpbnN0ZWFkIiwgOmFyZ2xpc3RzIFtbZiBvdXRdIFtmIG91dCBidWYtb3Itbl1dfSwgOnNvdXJjZSAiKGRlZm5cbiBtYXBjYXQ+XG4gXCJEZXByZWNhdGVkIC0gdGhpcyBmdW5jdGlvbiB3aWxsIGJlIHJlbW92ZWQuIFVzZSB0cmFuc2R1Y2VyIGluc3RlYWRcIlxuIChbZiBvdXRdIChtYXBjYXQ+IGYgb3V0IG5pbCkpXG4gKFtmIG91dCBidWYtb3Itbl0gKGxldCBbaW4gKGNoYW4gYnVmLW9yLW4pXSAobWFwY2F0KiBmIGluIG91dCkgaW4pKSlcbiJ9IHs6c3ltIGJ1ZmZlciwgOm1ldGEgezpkb2MgIlJldHVybnMgYSBmaXhlZCBidWZmZXIgb2Ygc2l6ZSBuLiBXaGVuIGZ1bGwsIHB1dHMgd2lsbCBibG9jay9wYXJrLiIsIDphcmdsaXN0cyAoW25dKX0sIDpzb3VyY2UgIihkZWZuXG4gYnVmZmVyXG4gXCJSZXR1cm5zIGEgZml4ZWQgYnVmZmVyIG9mIHNpemUgbi4gV2hlbiBmdWxsLCBwdXRzIHdpbGwgYmxvY2svcGFyay5cIlxuIFtuXVxuIChidWZmZXJzL2ZpeGVkLWJ1ZmZlciBuKSlcbiJ9IHs6c3ltIGNsb3NlISwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgW1twb3J0XV19LCA6c291cmNlICIoZGVmbiBjbG9zZSEgKFtwb3J0XSAoaW1wbC9jbG9zZSEgcG9ydCkpKVxuIn0gezpzeW0gb2ZmZXIhLCA6bWV0YSB7OmRvYyAiUHV0cyBhIHZhbCBpbnRvIHBvcnQgaWYgaXQncyBwb3NzaWJsZSB0byBkbyBzbyBpbW1lZGlhdGVseS5cbiAgbmlsIHZhbHVlcyBhcmUgbm90IGFsbG93ZWQuIE5ldmVyIGJsb2Nrcy4gUmV0dXJucyB0cnVlIGlmIG9mZmVyIHN1Y2NlZWRzLiIsIDphcmdsaXN0cyAoW3BvcnQgdmFsXSl9LCA6c291cmNlICIoZGVmblxuIG9mZmVyIVxuIFwiUHV0cyBhIHZhbCBpbnRvIHBvcnQgaWYgaXQncyBwb3NzaWJsZSB0byBkbyBzbyBpbW1lZGlhdGVseS5cXG4gIG5pbCB2YWx1ZXMgYXJlIG5vdCBhbGxvd2VkLiBOZXZlciBibG9ja3MuIFJldHVybnMgdHJ1ZSBpZiBvZmZlciBzdWNjZWVkcy5cIlxuIFtwb3J0IHZhbF1cbiAobGV0XG4gIFtyZXQgKGltcGwvcHV0ISBwb3J0IHZhbCAoZm4taGFuZGxlciBub3AgZmFsc2UpKV1cbiAgKHdoZW4gcmV0IEByZXQpKSlcbiJ9IHs6c3ltIGNoYW4sIDptZXRhIHs6ZG9jICJDcmVhdGVzIGEgY2hhbm5lbCB3aXRoIGFuIG9wdGlvbmFsIGJ1ZmZlciwgYW4gb3B0aW9uYWwgdHJhbnNkdWNlciAobGlrZSAobWFwIGYpLFxuICAoZmlsdGVyIHApIGV0YyBvciBhIGNvbXBvc2l0aW9uIHRoZXJlb2YpLCBhbmQgYW4gb3B0aW9uYWwgZXhjZXB0aW9uIGhhbmRsZXIuXG4gIElmIGJ1Zi1vci1uIGlzIGEgbnVtYmVyLCB3aWxsIGNyZWF0ZSBhbmQgdXNlIGEgZml4ZWQgYnVmZmVyIG9mIHRoYXQgc2l6ZS4gSWYgYVxuICB0cmFuc2R1Y2VyIGlzIHN1cHBsaWVkIGEgYnVmZmVyIG11c3QgYmUgc3BlY2lmaWVkLiBleC1oYW5kbGVyIG11c3QgYmUgYVxuICBmbiBvZiBvbmUgYXJndW1lbnQgLSBpZiBhbiBleGNlcHRpb24gb2NjdXJzIGR1cmluZyB0cmFuc2Zvcm1hdGlvbiBpdCB3aWxsIGJlIGNhbGxlZFxuICB3aXRoIHRoZSB0aHJvd24gdmFsdWUgYXMgYW4gYXJndW1lbnQsIGFuZCBhbnkgbm9uLW5pbCByZXR1cm4gdmFsdWUgd2lsbCBiZSBwbGFjZWRcbiAgaW4gdGhlIGNoYW5uZWwuIiwgOmFyZ2xpc3RzIFtbXSBbYnVmLW9yLW5dIFtidWYtb3ItbiB4Zm9ybV0gW2J1Zi1vci1uIHhmb3JtIGV4LWhhbmRsZXJdXX0sIDpzb3VyY2UgIihkZWZuXG4gY2hhblxuIFwiQ3JlYXRlcyBhIGNoYW5uZWwgd2l0aCBhbiBvcHRpb25hbCBidWZmZXIsIGFuIG9wdGlvbmFsIHRyYW5zZHVjZXIgKGxpa2UgKG1hcCBmKSxcXG4gIChmaWx0ZXIgcCkgZXRjIG9yIGEgY29tcG9zaXRpb24gdGhlcmVvZiksIGFuZCBhbiBvcHRpb25hbCBleGNlcHRpb24gaGFuZGxlci5cXG4gIElmIGJ1Zi1vci1uIGlzIGEgbnVtYmVyLCB3aWxsIGNyZWF0ZSBhbmQgdXNlIGEgZml4ZWQgYnVmZmVyIG9mIHRoYXQgc2l6ZS4gSWYgYVxcbiAgdHJhbnNkdWNlciBpcyBzdXBwbGllZCBhIGJ1ZmZlciBtdXN0IGJlIHNwZWNpZmllZC4gZXgtaGFuZGxlciBtdXN0IGJlIGFcXG4gIGZuIG9mIG9uZSBhcmd1bWVudCAtIGlmIGFuIGV4Y2VwdGlvbiBvY2N1cnMgZHVyaW5nIHRyYW5zZm9ybWF0aW9uIGl0IHdpbGwgYmUgY2FsbGVkXFxuICB3aXRoIHRoZSB0aHJvd24gdmFsdWUgYXMgYW4gYXJndW1lbnQsIGFuZCBhbnkgbm9uLW5pbCByZXR1cm4gdmFsdWUgd2lsbCBiZSBwbGFjZWRcXG4gIGluIHRoZSBjaGFubmVsLlwiXG4gKFtdIChjaGFuIG5pbCkpXG4gKFtidWYtb3Itbl0gKGNoYW4gYnVmLW9yLW4gbmlsIG5pbCkpXG4gKFtidWYtb3ItbiB4Zm9ybV0gKGNoYW4gYnVmLW9yLW4geGZvcm0gbmlsKSlcbiAoW2J1Zi1vci1uIHhmb3JtIGV4LWhhbmRsZXJdXG4gIChsZXRcbiAgIFtidWYtb3ItbiAoaWYgKD0gYnVmLW9yLW4gMCkgbmlsIGJ1Zi1vci1uKV1cbiAgICh3aGVuXG4gICAgeGZvcm1cbiAgICAoYXNzZXJ0IGJ1Zi1vci1uIFwiYnVmZmVyIG11c3QgYmUgc3VwcGxpZWQgd2hlbiB0cmFuc2R1Y2VyIGlzXCIpKVxuICAgKGNoYW5uZWxzL2NoYW5cbiAgICAoaWYgKG51bWJlcj8gYnVmLW9yLW4pIChidWZmZXIgYnVmLW9yLW4pIGJ1Zi1vci1uKVxuICAgIHhmb3JtXG4gICAgZXgtaGFuZGxlcikpKSlcbiJ9IHs6c3ltIHNvbG8tbW9kZSosIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbbSBtb2RlXSl9LCA6cHJvdG9jb2wgTWl4fSB7OnN5bSBvbnRvLWNoYW4hLCA6bWV0YSB7OmRvYyAiUHV0cyB0aGUgY29udGVudHMgb2YgY29sbCBpbnRvIHRoZSBzdXBwbGllZCBjaGFubmVsLlxuXG4gIEJ5IGRlZmF1bHQgdGhlIGNoYW5uZWwgd2lsbCBiZSBjbG9zZWQgYWZ0ZXIgdGhlIGl0ZW1zIGFyZSBjb3BpZWQsXG4gIGJ1dCBjYW4gYmUgZGV0ZXJtaW5lZCBieSB0aGUgY2xvc2U/IHBhcmFtZXRlci5cblxuICBSZXR1cm5zIGEgY2hhbm5lbCB3aGljaCB3aWxsIGNsb3NlIGFmdGVyIHRoZSBpdGVtcyBhcmUgY29waWVkLiIsIDphcmdsaXN0cyBbW2NoIGNvbGxdIFtjaCBjb2xsIGNsb3NlP11dfSwgOnNvdXJjZSAiKGRlZm5cbiBvbnRvLWNoYW4hXG4gXCJQdXRzIHRoZSBjb250ZW50cyBvZiBjb2xsIGludG8gdGhlIHN1cHBsaWVkIGNoYW5uZWwuXFxuXFxuICBCeSBkZWZhdWx0IHRoZSBjaGFubmVsIHdpbGwgYmUgY2xvc2VkIGFmdGVyIHRoZSBpdGVtcyBhcmUgY29waWVkLFxcbiAgYnV0IGNhbiBiZSBkZXRlcm1pbmVkIGJ5IHRoZSBjbG9zZT8gcGFyYW1ldGVyLlxcblxcbiAgUmV0dXJucyBhIGNoYW5uZWwgd2hpY2ggd2lsbCBjbG9zZSBhZnRlciB0aGUgaXRlbXMgYXJlIGNvcGllZC5cIlxuIChbY2ggY29sbF0gKG9udG8tY2hhbiEgY2ggY29sbCB0cnVlKSlcbiAoW2NoIGNvbGwgY2xvc2U/XVxuICAoZ28tbG9vcFxuICAgW3ZzIChzZXEgY29sbCldXG4gICAoaWZcbiAgICAoYW5kIHZzICg+ISBjaCAoZmlyc3QgdnMpKSlcbiAgICAocmVjdXIgKG5leHQgdnMpKVxuICAgICh3aGVuIGNsb3NlPyAoY2xvc2UhIGNoKSkpKSkpXG4ifSB7OnN5bSB0YXAsIDptZXRhIHs6ZG9jICJDb3BpZXMgdGhlIG11bHQgc291cmNlIG9udG8gdGhlIHN1cHBsaWVkIGNoYW5uZWwuXG5cbiAgQnkgZGVmYXVsdCB0aGUgY2hhbm5lbCB3aWxsIGJlIGNsb3NlZCB3aGVuIHRoZSBzb3VyY2UgY2xvc2VzLFxuICBidXQgY2FuIGJlIGRldGVybWluZWQgYnkgdGhlIGNsb3NlPyBwYXJhbWV0ZXIuIiwgOmFyZ2xpc3RzIFtbbXVsdCBjaF0gW211bHQgY2ggY2xvc2U/XV19LCA6c291cmNlICIoZGVmblxuIHRhcFxuIFwiQ29waWVzIHRoZSBtdWx0IHNvdXJjZSBvbnRvIHRoZSBzdXBwbGllZCBjaGFubmVsLlxcblxcbiAgQnkgZGVmYXVsdCB0aGUgY2hhbm5lbCB3aWxsIGJlIGNsb3NlZCB3aGVuIHRoZSBzb3VyY2UgY2xvc2VzLFxcbiAgYnV0IGNhbiBiZSBkZXRlcm1pbmVkIGJ5IHRoZSBjbG9zZT8gcGFyYW1ldGVyLlwiXG4gKFttdWx0IGNoXSAodGFwIG11bHQgY2ggdHJ1ZSkpXG4gKFttdWx0IGNoIGNsb3NlP10gKHRhcCogbXVsdCBjaCBjbG9zZT8pIGNoKSlcbiJ9IHs6c3ltIGFkbWl4LCA6bWV0YSB7OmRvYyAiQWRkcyBjaCBhcyBhbiBpbnB1dCB0byB0aGUgbWl4IiwgOmFyZ2xpc3RzIChbbWl4IGNoXSl9LCA6c291cmNlICIoZGVmbiBhZG1peCBcIkFkZHMgY2ggYXMgYW4gaW5wdXQgdG8gdGhlIG1peFwiIFttaXggY2hdIChhZG1peCogbWl4IGNoKSlcbiJ9IHs6c3ltIHByb21pc2UtY2hhbiwgOm1ldGEgezpkb2MgIkNyZWF0ZXMgYSBwcm9taXNlIGNoYW5uZWwgd2l0aCBhbiBvcHRpb25hbCB0cmFuc2R1Y2VyLCBhbmQgYW4gb3B0aW9uYWxcbiAgZXhjZXB0aW9uLWhhbmRsZXIuIEEgcHJvbWlzZSBjaGFubmVsIGNhbiB0YWtlIGV4YWN0bHkgb25lIHZhbHVlIHRoYXQgY29uc3VtZXJzXG4gIHdpbGwgcmVjZWl2ZS4gT25jZSBmdWxsLCBwdXRzIGNvbXBsZXRlIGJ1dCB2YWwgaXMgZHJvcHBlZCAobm8gdHJhbnNmZXIpLlxuICBDb25zdW1lcnMgd2lsbCBibG9jayB1bnRpbCBlaXRoZXIgYSB2YWx1ZSBpcyBwbGFjZWQgaW4gdGhlIGNoYW5uZWwgb3IgdGhlXG4gIGNoYW5uZWwgaXMgY2xvc2VkLiBTZWUgY2hhbiBmb3IgdGhlIHNlbWFudGljcyBvZiB4Zm9ybSBhbmQgZXgtaGFuZGxlci4iLCA6YXJnbGlzdHMgW1tdIFt4Zm9ybV0gW3hmb3JtIGV4LWhhbmRsZXJdXX0sIDpzb3VyY2UgIihkZWZuXG4gcHJvbWlzZS1jaGFuXG4gXCJDcmVhdGVzIGEgcHJvbWlzZSBjaGFubmVsIHdpdGggYW4gb3B0aW9uYWwgdHJhbnNkdWNlciwgYW5kIGFuIG9wdGlvbmFsXFxuICBleGNlcHRpb24taGFuZGxlci4gQSBwcm9taXNlIGNoYW5uZWwgY2FuIHRha2UgZXhhY3RseSBvbmUgdmFsdWUgdGhhdCBjb25zdW1lcnNcXG4gIHdpbGwgcmVjZWl2ZS4gT25jZSBmdWxsLCBwdXRzIGNvbXBsZXRlIGJ1dCB2YWwgaXMgZHJvcHBlZCAobm8gdHJhbnNmZXIpLlxcbiAgQ29uc3VtZXJzIHdpbGwgYmxvY2sgdW50aWwgZWl0aGVyIGEgdmFsdWUgaXMgcGxhY2VkIGluIHRoZSBjaGFubmVsIG9yIHRoZVxcbiAgY2hhbm5lbCBpcyBjbG9zZWQuIFNlZSBjaGFuIGZvciB0aGUgc2VtYW50aWNzIG9mIHhmb3JtIGFuZCBleC1oYW5kbGVyLlwiXG4gKFtdIChwcm9taXNlLWNoYW4gbmlsKSlcbiAoW3hmb3JtXSAocHJvbWlzZS1jaGFuIHhmb3JtIG5pbCkpXG4gKFt4Zm9ybSBleC1oYW5kbGVyXSAoY2hhbiAoYnVmZmVycy9wcm9taXNlLWJ1ZmZlcikgeGZvcm0gZXgtaGFuZGxlcikpKVxuIn0gezpzeW0gdW5pcXVlLCA6bWV0YSB7OmRvYyAiRGVwcmVjYXRlZCAtIHRoaXMgZnVuY3Rpb24gd2lsbCBiZSByZW1vdmVkLiBVc2UgdHJhbnNkdWNlciBpbnN0ZWFkIiwgOmFyZ2xpc3RzIFtbY2hdIFtjaCBidWYtb3Itbl1dfSwgOnNvdXJjZSAiKGRlZm5cbiB1bmlxdWVcbiBcIkRlcHJlY2F0ZWQgLSB0aGlzIGZ1bmN0aW9uIHdpbGwgYmUgcmVtb3ZlZC4gVXNlIHRyYW5zZHVjZXIgaW5zdGVhZFwiXG4gKFtjaF0gKHVuaXF1ZSBjaCBuaWwpKVxuIChbY2ggYnVmLW9yLW5dXG4gIChsZXRcbiAgIFtvdXQgKGNoYW4gYnVmLW9yLW4pXVxuICAgKGdvXG4gICAgKGxvb3BcbiAgICAgW2xhc3QgbmlsXVxuICAgICAobGV0XG4gICAgICBbdiAoPCEgY2gpXVxuICAgICAgKHdoZW5cbiAgICAgICAobm90IChuaWw/IHYpKVxuICAgICAgIChpZiAoPSB2IGxhc3QpIChyZWN1ciBsYXN0KSAoZG8gKD4hIG91dCB2KSAocmVjdXIgdikpKSkpKVxuICAgIChjbG9zZSEgb3V0KSlcbiAgIG91dCkpKVxuIn0gezpzeW0gbXV4Y2gqLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW19dKX0sIDpwcm90b2NvbCBNdXh9IHs6c3ltIHNvbG8tbW9kZSwgOm1ldGEgezpkb2MgIlNldHMgdGhlIHNvbG8gbW9kZSBvZiB0aGUgbWl4LiBtb2RlIG11c3QgYmUgb25lIG9mIDptdXRlIG9yIDpwYXVzZSIsIDphcmdsaXN0cyAoW21peCBtb2RlXSl9LCA6c291cmNlICIoZGVmblxuIHNvbG8tbW9kZVxuIFwiU2V0cyB0aGUgc29sbyBtb2RlIG9mIHRoZSBtaXguIG1vZGUgbXVzdCBiZSBvbmUgb2YgOm11dGUgb3IgOnBhdXNlXCJcbiBbbWl4IG1vZGVdXG4gKHNvbG8tbW9kZSogbWl4IG1vZGUpKVxuIn0gezpzeW0gdHJhbnNkdWNlLCA6bWV0YSB7OmRvYyAiYXN5bmMvcmVkdWNlcyBhIGNoYW5uZWwgd2l0aCBhIHRyYW5zZm9ybWF0aW9uICh4Zm9ybSBmKS5cbiAgUmV0dXJucyBhIGNoYW5uZWwgY29udGFpbmluZyB0aGUgcmVzdWx0LiAgY2ggbXVzdCBjbG9zZSBiZWZvcmVcbiAgdHJhbnNkdWNlIHByb2R1Y2VzIGEgcmVzdWx0LiIsIDphcmdsaXN0cyAoW3hmb3JtIGYgaW5pdCBjaF0pfSwgOnNvdXJjZSAiKGRlZm5cbiB0cmFuc2R1Y2VcbiBcImFzeW5jL3JlZHVjZXMgYSBjaGFubmVsIHdpdGggYSB0cmFuc2Zvcm1hdGlvbiAoeGZvcm0gZikuXFxuICBSZXR1cm5zIGEgY2hhbm5lbCBjb250YWluaW5nIHRoZSByZXN1bHQuICBjaCBtdXN0IGNsb3NlIGJlZm9yZVxcbiAgdHJhbnNkdWNlIHByb2R1Y2VzIGEgcmVzdWx0LlwiXG4gW3hmb3JtIGYgaW5pdCBjaF1cbiAobGV0IFtmICh4Zm9ybSBmKV0gKGdvIChsZXQgW3JldCAoPCEgKHJlZHVjZSBmIGluaXQgY2gpKV0gKGYgcmV0KSkpKSlcbiJ9IHs6c3ltIG9udG8tY2hhbiwgOm1ldGEgezpkb2MgIkRlcHJlY2F0ZWQgLSB1c2Ugb250by1jaGFuISIsIDphcmdsaXN0cyBbW2NoIGNvbGxdIFtjaCBjb2xsIGNsb3NlP11dfSwgOnNvdXJjZSAiKGRlZm5cbiBvbnRvLWNoYW5cbiBcIkRlcHJlY2F0ZWQgLSB1c2Ugb250by1jaGFuIVwiXG4gezpkZXByZWNhdGVkIFwiMS4yXCJ9XG4gKFtjaCBjb2xsXSAob250by1jaGFuISBjaCBjb2xsIHRydWUpKVxuIChbY2ggY29sbCBjbG9zZT9dIChvbnRvLWNoYW4hIGNoIGNvbGwgY2xvc2U/KSkpXG4ifSB7OnN5bSB0by1jaGFuLCA6bWV0YSB7OmRvYyAiRGVwcmVjYXRlZCAtIHVzZSB0by1jaGFuISIsIDphcmdsaXN0cyAoW2NvbGxdKX0sIDpzb3VyY2UgIihkZWZuXG4gdG8tY2hhblxuIFwiRGVwcmVjYXRlZCAtIHVzZSB0by1jaGFuIVwiXG4gezpkZXByZWNhdGVkIFwiMS4yXCJ9XG4gW2NvbGxdXG4gKHRvLWNoYW4hIGNvbGwpKVxuIn0gezpzeW0gZHJvcHBpbmctYnVmZmVyLCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIGJ1ZmZlciBvZiBzaXplIG4uIFdoZW4gZnVsbCwgcHV0cyB3aWxsIGNvbXBsZXRlIGJ1dFxuICB2YWwgd2lsbCBiZSBkcm9wcGVkIChubyB0cmFuc2ZlcikuIiwgOmFyZ2xpc3RzIChbbl0pfSwgOnNvdXJjZSAiKGRlZm5cbiBkcm9wcGluZy1idWZmZXJcbiBcIlJldHVybnMgYSBidWZmZXIgb2Ygc2l6ZSBuLiBXaGVuIGZ1bGwsIHB1dHMgd2lsbCBjb21wbGV0ZSBidXRcXG4gIHZhbCB3aWxsIGJlIGRyb3BwZWQgKG5vIHRyYW5zZmVyKS5cIlxuIFtuXVxuIChidWZmZXJzL2Ryb3BwaW5nLWJ1ZmZlciBuKSlcbiJ9IHs6c3ltIHVudGFwLWFsbCwgOm1ldGEgezpkb2MgIkRpc2Nvbm5lY3RzIGFsbCB0YXJnZXQgY2hhbm5lbHMgZnJvbSBhIG11bHQiLCA6YXJnbGlzdHMgKFttdWx0XSl9LCA6c291cmNlICIoZGVmblxuIHVudGFwLWFsbFxuIFwiRGlzY29ubmVjdHMgYWxsIHRhcmdldCBjaGFubmVscyBmcm9tIGEgbXVsdFwiXG4gW211bHRdXG4gKHVudGFwLWFsbCogbXVsdCkpXG4ifSB7OnN5bSBpbnRvLCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIGNoYW5uZWwgY29udGFpbmluZyB0aGUgc2luZ2xlIChjb2xsZWN0aW9uKSByZXN1bHQgb2YgdGhlXG4gIGl0ZW1zIHRha2VuIGZyb20gdGhlIGNoYW5uZWwgY29uam9pbmVkIHRvIHRoZSBzdXBwbGllZFxuICBjb2xsZWN0aW9uLiBjaCBtdXN0IGNsb3NlIGJlZm9yZSBpbnRvIHByb2R1Y2VzIGEgcmVzdWx0LiIsIDphcmdsaXN0cyAoW2NvbGwgY2hdKX0sIDpzb3VyY2UgIihkZWZuXG4gaW50b1xuIFwiUmV0dXJucyBhIGNoYW5uZWwgY29udGFpbmluZyB0aGUgc2luZ2xlIChjb2xsZWN0aW9uKSByZXN1bHQgb2YgdGhlXFxuICBpdGVtcyB0YWtlbiBmcm9tIHRoZSBjaGFubmVsIGNvbmpvaW5lZCB0byB0aGUgc3VwcGxpZWRcXG4gIGNvbGxlY3Rpb24uIGNoIG11c3QgY2xvc2UgYmVmb3JlIGludG8gcHJvZHVjZXMgYSByZXN1bHQuXCJcbiBbY29sbCBjaF1cbiAocmVkdWNlIGNvbmogY29sbCBjaCkpXG4ifSB7OnN5bSB0by1jaGFuISwgOm1ldGEgezpkb2MgIkNyZWF0ZXMgYW5kIHJldHVybnMgYSBjaGFubmVsIHdoaWNoIGNvbnRhaW5zIHRoZSBjb250ZW50cyBvZiBjb2xsLFxuICBjbG9zaW5nIHdoZW4gZXhoYXVzdGVkLiIsIDphcmdsaXN0cyAoW2NvbGxdKX0sIDpzb3VyY2UgIihkZWZuXG4gdG8tY2hhbiFcbiBcIkNyZWF0ZXMgYW5kIHJldHVybnMgYSBjaGFubmVsIHdoaWNoIGNvbnRhaW5zIHRoZSBjb250ZW50cyBvZiBjb2xsLFxcbiAgY2xvc2luZyB3aGVuIGV4aGF1c3RlZC5cIlxuIFtjb2xsXVxuIChsZXQgW2NoIChjaGFuIChib3VuZGVkLWNvdW50IDEwMCBjb2xsKSldIChvbnRvLWNoYW4hIGNoIGNvbGwpIGNoKSlcbiJ9IHs6c3ltIHBpcGVsaW5lLCA6bWV0YSB7OmRvYyAiVGFrZXMgZWxlbWVudHMgZnJvbSB0aGUgZnJvbSBjaGFubmVsIGFuZCBzdXBwbGllcyB0aGVtIHRvIHRoZSB0b1xuICBjaGFubmVsLCBzdWJqZWN0IHRvIHRoZSB0cmFuc2R1Y2VyIHhmLCB3aXRoIHBhcmFsbGVsaXNtIG4uIEJlY2F1c2VcbiAgaXQgaXMgcGFyYWxsZWwsIHRoZSB0cmFuc2R1Y2VyIHdpbGwgYmUgYXBwbGllZCBpbmRlcGVuZGVudGx5IHRvIGVhY2hcbiAgZWxlbWVudCwgbm90IGFjcm9zcyBlbGVtZW50cywgYW5kIG1heSBwcm9kdWNlIHplcm8gb3IgbW9yZSBvdXRwdXRzXG4gIHBlciBpbnB1dC4gIE91dHB1dHMgd2lsbCBiZSByZXR1cm5lZCBpbiBvcmRlciByZWxhdGl2ZSB0byB0aGVcbiAgaW5wdXRzLiBCeSBkZWZhdWx0LCB0aGUgdG8gY2hhbm5lbCB3aWxsIGJlIGNsb3NlZCB3aGVuIHRoZSBmcm9tXG4gIGNoYW5uZWwgY2xvc2VzLCBidXQgY2FuIGJlIGRldGVybWluZWQgYnkgdGhlIGNsb3NlPyAgcGFyYW1ldGVyLiBXaWxsXG4gIHN0b3AgY29uc3VtaW5nIHRoZSBmcm9tIGNoYW5uZWwgaWYgdGhlIHRvIGNoYW5uZWwgY2xvc2VzLlxuXG4gIE5vdGUgdGhpcyBpcyBzdXBwbGllZCBmb3IgQVBJIGNvbXBhdGliaWxpdHkgd2l0aCB0aGUgQ2xvanVyZSB2ZXJzaW9uLlxuICBWYWx1ZXMgb2YgTiA+IDEgd2lsbCBub3QgcmVzdWx0IGluIGFjdHVhbCBjb25jdXJyZW5jeSBpbiBhXG4gIHNpbmdsZS10aHJlYWRlZCBydW50aW1lLiIsIDphcmdsaXN0cyBbW24gdG8geGYgZnJvbV0gW24gdG8geGYgZnJvbSBjbG9zZT9dIFtuIHRvIHhmIGZyb20gY2xvc2U/IGV4LWhhbmRsZXJdXX0sIDpzb3VyY2UgIihkZWZuXG4gcGlwZWxpbmVcbiBcIlRha2VzIGVsZW1lbnRzIGZyb20gdGhlIGZyb20gY2hhbm5lbCBhbmQgc3VwcGxpZXMgdGhlbSB0byB0aGUgdG9cXG4gIGNoYW5uZWwsIHN1YmplY3QgdG8gdGhlIHRyYW5zZHVjZXIgeGYsIHdpdGggcGFyYWxsZWxpc20gbi4gQmVjYXVzZVxcbiAgaXQgaXMgcGFyYWxsZWwsIHRoZSB0cmFuc2R1Y2VyIHdpbGwgYmUgYXBwbGllZCBpbmRlcGVuZGVudGx5IHRvIGVhY2hcXG4gIGVsZW1lbnQsIG5vdCBhY3Jvc3MgZWxlbWVudHMsIGFuZCBtYXkgcHJvZHVjZSB6ZXJvIG9yIG1vcmUgb3V0cHV0c1xcbiAgcGVyIGlucHV0LiAgT3V0cHV0cyB3aWxsIGJlIHJldHVybmVkIGluIG9yZGVyIHJlbGF0aXZlIHRvIHRoZVxcbiAgaW5wdXRzLiBCeSBkZWZhdWx0LCB0aGUgdG8gY2hhbm5lbCB3aWxsIGJlIGNsb3NlZCB3aGVuIHRoZSBmcm9tXFxuICBjaGFubmVsIGNsb3NlcywgYnV0IGNhbiBiZSBkZXRlcm1pbmVkIGJ5IHRoZSBjbG9zZT8gIHBhcmFtZXRlci4gV2lsbFxcbiAgc3RvcCBjb25zdW1pbmcgdGhlIGZyb20gY2hhbm5lbCBpZiB0aGUgdG8gY2hhbm5lbCBjbG9zZXMuXFxuXFxuICBOb3RlIHRoaXMgaXMgc3VwcGxpZWQgZm9yIEFQSSBjb21wYXRpYmlsaXR5IHdpdGggdGhlIENsb2p1cmUgdmVyc2lvbi5cXG4gIFZhbHVlcyBvZiBOID4gMSB3aWxsIG5vdCByZXN1bHQgaW4gYWN0dWFsIGNvbmN1cnJlbmN5IGluIGFcXG4gIHNpbmdsZS10aHJlYWRlZCBydW50aW1lLlwiXG4gKFtuIHRvIHhmIGZyb21dIChwaXBlbGluZSBuIHRvIHhmIGZyb20gdHJ1ZSkpXG4gKFtuIHRvIHhmIGZyb20gY2xvc2U/XSAocGlwZWxpbmUgbiB0byB4ZiBmcm9tIGNsb3NlPyBuaWwpKVxuIChbbiB0byB4ZiBmcm9tIGNsb3NlPyBleC1oYW5kbGVyXVxuICAocGlwZWxpbmUqIG4gdG8geGYgZnJvbSBjbG9zZT8gZXgtaGFuZGxlciA6Y29tcHV0ZSkpKVxuIn0gezpzeW0gc3ViLCA6bWV0YSB7OmRvYyAiU3Vic2NyaWJlcyBhIGNoYW5uZWwgdG8gYSB0b3BpYyBvZiBhIHB1Yi5cblxuICBCeSBkZWZhdWx0IHRoZSBjaGFubmVsIHdpbGwgYmUgY2xvc2VkIHdoZW4gdGhlIHNvdXJjZSBjbG9zZXMsXG4gIGJ1dCBjYW4gYmUgZGV0ZXJtaW5lZCBieSB0aGUgY2xvc2U/IHBhcmFtZXRlci4iLCA6YXJnbGlzdHMgW1twIHRvcGljIGNoXSBbcCB0b3BpYyBjaCBjbG9zZT9dXX0sIDpzb3VyY2UgIihkZWZuXG4gc3ViXG4gXCJTdWJzY3JpYmVzIGEgY2hhbm5lbCB0byBhIHRvcGljIG9mIGEgcHViLlxcblxcbiAgQnkgZGVmYXVsdCB0aGUgY2hhbm5lbCB3aWxsIGJlIGNsb3NlZCB3aGVuIHRoZSBzb3VyY2UgY2xvc2VzLFxcbiAgYnV0IGNhbiBiZSBkZXRlcm1pbmVkIGJ5IHRoZSBjbG9zZT8gcGFyYW1ldGVyLlwiXG4gKFtwIHRvcGljIGNoXSAoc3ViIHAgdG9waWMgY2ggdHJ1ZSkpXG4gKFtwIHRvcGljIGNoIGNsb3NlP10gKHN1YiogcCB0b3BpYyBjaCBjbG9zZT8pKSlcbiJ9IHs6c3ltIG1hcD4sIDptZXRhIHs6ZG9jICJEZXByZWNhdGVkIC0gdGhpcyBmdW5jdGlvbiB3aWxsIGJlIHJlbW92ZWQuIFVzZSB0cmFuc2R1Y2VyIGluc3RlYWQiLCA6YXJnbGlzdHMgKFtmIGNoXSl9LCA6c291cmNlICIoZGVmblxuIG1hcD5cbiBcIkRlcHJlY2F0ZWQgLSB0aGlzIGZ1bmN0aW9uIHdpbGwgYmUgcmVtb3ZlZC4gVXNlIHRyYW5zZHVjZXIgaW5zdGVhZFwiXG4gW2YgY2hdXG4gKHJlaWZ5XG4gIGltcGwvQ2hhbm5lbFxuICAoY2xvc2UhIFtfXSAoaW1wbC9jbG9zZSEgY2gpKVxuICBpbXBsL1JlYWRQb3J0XG4gICh0YWtlISBbXyBmbjFdIChpbXBsL3Rha2UhIGNoIGZuMSkpXG4gIGltcGwvV3JpdGVQb3J0XG4gIChwdXQhIFtfIHZhbCBmbjFdIChpbXBsL3B1dCEgY2ggKGYgdmFsKSBmbjEpKSkpXG4ifSB7OnN5bSBwaXBlLCA6bWV0YSB7OmRvYyAiVGFrZXMgZWxlbWVudHMgZnJvbSB0aGUgZnJvbSBjaGFubmVsIGFuZCBzdXBwbGllcyB0aGVtIHRvIHRoZSB0b1xuICAgY2hhbm5lbC4gQnkgZGVmYXVsdCwgdGhlIHRvIGNoYW5uZWwgd2lsbCBiZSBjbG9zZWQgd2hlbiB0aGUgZnJvbVxuICAgY2hhbm5lbCBjbG9zZXMsIGJ1dCBjYW4gYmUgZGV0ZXJtaW5lZCBieSB0aGUgY2xvc2U/ICBwYXJhbWV0ZXIuIFdpbGxcbiAgIHN0b3AgY29uc3VtaW5nIHRoZSBmcm9tIGNoYW5uZWwgaWYgdGhlIHRvIGNoYW5uZWwgY2xvc2VzIiwgOmFyZ2xpc3RzIFtbZnJvbSB0b10gW2Zyb20gdG8gY2xvc2U/XV19LCA6c291cmNlICIoZGVmblxuIHBpcGVcbiBcIlRha2VzIGVsZW1lbnRzIGZyb20gdGhlIGZyb20gY2hhbm5lbCBhbmQgc3VwcGxpZXMgdGhlbSB0byB0aGUgdG9cXG4gICBjaGFubmVsLiBCeSBkZWZhdWx0LCB0aGUgdG8gY2hhbm5lbCB3aWxsIGJlIGNsb3NlZCB3aGVuIHRoZSBmcm9tXFxuICAgY2hhbm5lbCBjbG9zZXMsIGJ1dCBjYW4gYmUgZGV0ZXJtaW5lZCBieSB0aGUgY2xvc2U/ICBwYXJhbWV0ZXIuIFdpbGxcXG4gICBzdG9wIGNvbnN1bWluZyB0aGUgZnJvbSBjaGFubmVsIGlmIHRoZSB0byBjaGFubmVsIGNsb3Nlc1wiXG4gKFtmcm9tIHRvXSAocGlwZSBmcm9tIHRvIHRydWUpKVxuIChbZnJvbSB0byBjbG9zZT9dXG4gIChnby1sb29wXG4gICBbXVxuICAgKGxldFxuICAgIFt2ICg8ISBmcm9tKV1cbiAgICAoaWYgKG5pbD8gdikgKHdoZW4gY2xvc2U/IChjbG9zZSEgdG8pKSAod2hlbiAoPiEgdG8gdikgKHJlY3VyKSkpKSlcbiAgdG8pKVxuIn0gezpzeW0gdW5taXgsIDptZXRhIHs6ZG9jICJSZW1vdmVzIGNoIGFzIGFuIGlucHV0IHRvIHRoZSBtaXgiLCA6YXJnbGlzdHMgKFttaXggY2hdKX0sIDpzb3VyY2UgIihkZWZuXG4gdW5taXhcbiBcIlJlbW92ZXMgY2ggYXMgYW4gaW5wdXQgdG8gdGhlIG1peFwiXG4gW21peCBjaF1cbiAodW5taXgqIG1peCBjaCkpXG4ifSB7OnN5bSBmaWx0ZXI8LCA6bWV0YSB7OmRvYyAiRGVwcmVjYXRlZCAtIHRoaXMgZnVuY3Rpb24gd2lsbCBiZSByZW1vdmVkLiBVc2UgdHJhbnNkdWNlciBpbnN0ZWFkIiwgOmFyZ2xpc3RzIFtbcCBjaF0gW3AgY2ggYnVmLW9yLW5dXX0sIDpzb3VyY2UgIihkZWZuXG4gZmlsdGVyPFxuIFwiRGVwcmVjYXRlZCAtIHRoaXMgZnVuY3Rpb24gd2lsbCBiZSByZW1vdmVkLiBVc2UgdHJhbnNkdWNlciBpbnN0ZWFkXCJcbiAoW3AgY2hdIChmaWx0ZXI8IHAgY2ggbmlsKSlcbiAoW3AgY2ggYnVmLW9yLW5dXG4gIChsZXRcbiAgIFtvdXQgKGNoYW4gYnVmLW9yLW4pXVxuICAgKGdvLWxvb3BcbiAgICBbXVxuICAgIChsZXRcbiAgICAgW3ZhbCAoPCEgY2gpXVxuICAgICAoaWZcbiAgICAgIChuaWw/IHZhbClcbiAgICAgIChjbG9zZSEgb3V0KVxuICAgICAgKGRvICh3aGVuIChwIHZhbCkgKD4hIG91dCB2YWwpKSAocmVjdXIpKSkpKVxuICAgb3V0KSkpXG4ifSB7OnN5bSBzdWIqLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3AgdiBjaCBjbG9zZT9dKX0sIDpwcm90b2NvbCBQdWJ9IHs6c3ltIHJlbW92ZTwsIDptZXRhIHs6ZG9jICJEZXByZWNhdGVkIC0gdGhpcyBmdW5jdGlvbiB3aWxsIGJlIHJlbW92ZWQuIFVzZSB0cmFuc2R1Y2VyIGluc3RlYWQiLCA6YXJnbGlzdHMgW1twIGNoXSBbcCBjaCBidWYtb3Itbl1dfSwgOnNvdXJjZSAiKGRlZm5cbiByZW1vdmU8XG4gXCJEZXByZWNhdGVkIC0gdGhpcyBmdW5jdGlvbiB3aWxsIGJlIHJlbW92ZWQuIFVzZSB0cmFuc2R1Y2VyIGluc3RlYWRcIlxuIChbcCBjaF0gKHJlbW92ZTwgcCBjaCBuaWwpKVxuIChbcCBjaCBidWYtb3Itbl0gKGZpbHRlcjwgKGNvbXBsZW1lbnQgcCkgY2ggYnVmLW9yLW4pKSlcbiJ9IHs6c3ltIHVudGFwKiwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFttIGNoXSl9LCA6cHJvdG9jb2wgTXVsdH0gezpzeW0gdG9nZ2xlLCA6bWV0YSB7OmRvYyAiQXRvbWljYWxseSBzZXRzIHRoZSBzdGF0ZShzKSBvZiBvbmUgb3IgbW9yZSBjaGFubmVscyBpbiBhIG1peC4gVGhlXG4gIHN0YXRlIG1hcCBpcyBhIG1hcCBvZiBjaGFubmVscyAtPiBjaGFubmVsLXN0YXRlLW1hcC4gQVxuICBjaGFubmVsLXN0YXRlLW1hcCBpcyBhIG1hcCBvZiBhdHRycyAtPiBib29sZWFuLCB3aGVyZSBhdHRyIGlzIG9uZSBvclxuICBtb3JlIG9mIDptdXRlLCA6cGF1c2Ugb3IgOnNvbG8uIEFueSBzdGF0ZXMgc3VwcGxpZWQgYXJlIG1lcmdlZCB3aXRoXG4gIHRoZSBjdXJyZW50IHN0YXRlLlxuXG4gIE5vdGUgdGhhdCBjaGFubmVscyBjYW4gYmUgYWRkZWQgdG8gYSBtaXggdmlhIHRvZ2dsZSwgd2hpY2ggY2FuIGJlXG4gIHVzZWQgdG8gYWRkIGNoYW5uZWxzIGluIGEgcGFydGljdWxhciAoZS5nLiBwYXVzZWQpIHN0YXRlLiIsIDphcmdsaXN0cyAoW21peCBzdGF0ZS1tYXBdKX0sIDpzb3VyY2UgIihkZWZuXG4gdG9nZ2xlXG4gXCJBdG9taWNhbGx5IHNldHMgdGhlIHN0YXRlKHMpIG9mIG9uZSBvciBtb3JlIGNoYW5uZWxzIGluIGEgbWl4LiBUaGVcXG4gIHN0YXRlIG1hcCBpcyBhIG1hcCBvZiBjaGFubmVscyAtPiBjaGFubmVsLXN0YXRlLW1hcC4gQVxcbiAgY2hhbm5lbC1zdGF0ZS1tYXAgaXMgYSBtYXAgb2YgYXR0cnMgLT4gYm9vbGVhbiwgd2hlcmUgYXR0ciBpcyBvbmUgb3JcXG4gIG1vcmUgb2YgOm11dGUsIDpwYXVzZSBvciA6c29sby4gQW55IHN0YXRlcyBzdXBwbGllZCBhcmUgbWVyZ2VkIHdpdGhcXG4gIHRoZSBjdXJyZW50IHN0YXRlLlxcblxcbiAgTm90ZSB0aGF0IGNoYW5uZWxzIGNhbiBiZSBhZGRlZCB0byBhIG1peCB2aWEgdG9nZ2xlLCB3aGljaCBjYW4gYmVcXG4gIHVzZWQgdG8gYWRkIGNoYW5uZWxzIGluIGEgcGFydGljdWxhciAoZS5nLiBwYXVzZWQpIHN0YXRlLlwiXG4gW21peCBzdGF0ZS1tYXBdXG4gKHRvZ2dsZSogbWl4IHN0YXRlLW1hcCkpXG4ifSB7OnN5bSB1bnRhcC1hbGwqLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW21dKX0sIDpwcm90b2NvbCBNdWx0fSB7OnN5bSBzbGlkaW5nLWJ1ZmZlciwgOm1ldGEgezpkb2MgIlJldHVybnMgYSBidWZmZXIgb2Ygc2l6ZSBuLiBXaGVuIGZ1bGwsIHB1dHMgd2lsbCBjb21wbGV0ZSwgYW5kIGJlXG4gIGJ1ZmZlcmVkLCBidXQgb2xkZXN0IGVsZW1lbnRzIGluIGJ1ZmZlciB3aWxsIGJlIGRyb3BwZWQgKG5vdFxuICB0cmFuc2ZlcnJlZCkuIiwgOmFyZ2xpc3RzIChbbl0pfSwgOnNvdXJjZSAiKGRlZm5cbiBzbGlkaW5nLWJ1ZmZlclxuIFwiUmV0dXJucyBhIGJ1ZmZlciBvZiBzaXplIG4uIFdoZW4gZnVsbCwgcHV0cyB3aWxsIGNvbXBsZXRlLCBhbmQgYmVcXG4gIGJ1ZmZlcmVkLCBidXQgb2xkZXN0IGVsZW1lbnRzIGluIGJ1ZmZlciB3aWxsIGJlIGRyb3BwZWQgKG5vdFxcbiAgdHJhbnNmZXJyZWQpLlwiXG4gW25dXG4gKGJ1ZmZlcnMvc2xpZGluZy1idWZmZXIgbikpXG4ifSB7OnN5bSBwYXJ0aXRpb24sIDptZXRhIHs6ZG9jICJEZXByZWNhdGVkIC0gdGhpcyBmdW5jdGlvbiB3aWxsIGJlIHJlbW92ZWQuIFVzZSB0cmFuc2R1Y2VyIGluc3RlYWQiLCA6YXJnbGlzdHMgW1tuIGNoXSBbbiBjaCBidWYtb3Itbl1dfSwgOnNvdXJjZSAiKGRlZm5cbiBwYXJ0aXRpb25cbiBcIkRlcHJlY2F0ZWQgLSB0aGlzIGZ1bmN0aW9uIHdpbGwgYmUgcmVtb3ZlZC4gVXNlIHRyYW5zZHVjZXIgaW5zdGVhZFwiXG4gKFtuIGNoXSAocGFydGl0aW9uIG4gY2ggbmlsKSlcbiAoW24gY2ggYnVmLW9yLW5dXG4gIChsZXRcbiAgIFtvdXQgKGNoYW4gYnVmLW9yLW4pXVxuICAgKGdvXG4gICAgKGxvb3BcbiAgICAgW2FyciAobWFrZS1hcnJheSBuKSBpZHggMF1cbiAgICAgKGxldFxuICAgICAgW3YgKDwhIGNoKV1cbiAgICAgIChpZlxuICAgICAgIChub3QgKG5pbD8gdikpXG4gICAgICAgKGRvXG4gICAgICAgIChhc2V0IGFyciBpZHggdilcbiAgICAgICAgKGxldFxuICAgICAgICAgW25ldy1pZHggKGluYyBpZHgpXVxuICAgICAgICAgKGlmXG4gICAgICAgICAgKDwgbmV3LWlkeCBuKVxuICAgICAgICAgIChyZWN1ciBhcnIgbmV3LWlkeClcbiAgICAgICAgICAoZG8gKD4hIG91dCAodmVjIGFycikpIChyZWN1ciAobWFrZS1hcnJheSBuKSAwKSkpKSlcbiAgICAgICAoZG8gKHdoZW4gKD4gaWR4IDApICg+ISBvdXQgKHZlYyBhcnIpKSkgKGNsb3NlISBvdXQpKSkpKSlcbiAgIG91dCkpKVxuIn0gezpzeW0gTXVsdCwgOm1ldGEgezpkb2MgbmlsfSwgOm1ldGhvZHMgKHRhcCogdW50YXAqIHVudGFwLWFsbCopfSB7OnN5bSBtZXJnZSwgOm1ldGEgezpkb2MgIlRha2VzIGEgY29sbGVjdGlvbiBvZiBzb3VyY2UgY2hhbm5lbHMgYW5kIHJldHVybnMgYSBjaGFubmVsIHdoaWNoXG4gIGNvbnRhaW5zIGFsbCB2YWx1ZXMgdGFrZW4gZnJvbSB0aGVtLiBUaGUgcmV0dXJuZWQgY2hhbm5lbCB3aWxsIGJlXG4gIHVuYnVmZmVyZWQgYnkgZGVmYXVsdCwgb3IgYSBidWYtb3ItbiBjYW4gYmUgc3VwcGxpZWQuIFRoZSBjaGFubmVsXG4gIHdpbGwgY2xvc2UgYWZ0ZXIgYWxsIHRoZSBzb3VyY2UgY2hhbm5lbHMgaGF2ZSBjbG9zZWQuIiwgOmFyZ2xpc3RzIFtbY2hzXSBbY2hzIGJ1Zi1vci1uXV19LCA6c291cmNlICIoZGVmblxuIG1lcmdlXG4gXCJUYWtlcyBhIGNvbGxlY3Rpb24gb2Ygc291cmNlIGNoYW5uZWxzIGFuZCByZXR1cm5zIGEgY2hhbm5lbCB3aGljaFxcbiAgY29udGFpbnMgYWxsIHZhbHVlcyB0YWtlbiBmcm9tIHRoZW0uIFRoZSByZXR1cm5lZCBjaGFubmVsIHdpbGwgYmVcXG4gIHVuYnVmZmVyZWQgYnkgZGVmYXVsdCwgb3IgYSBidWYtb3ItbiBjYW4gYmUgc3VwcGxpZWQuIFRoZSBjaGFubmVsXFxuICB3aWxsIGNsb3NlIGFmdGVyIGFsbCB0aGUgc291cmNlIGNoYW5uZWxzIGhhdmUgY2xvc2VkLlwiXG4gKFtjaHNdIChtZXJnZSBjaHMgbmlsKSlcbiAoW2NocyBidWYtb3Itbl1cbiAgKGxldFxuICAgW291dCAoY2hhbiBidWYtb3ItbildXG4gICAoZ28tbG9vcFxuICAgIFtjcyAodmVjIGNocyldXG4gICAgKGlmXG4gICAgIChwb3M/IChjb3VudCBjcykpXG4gICAgIChsZXRcbiAgICAgIFtbdiBjXSAoYWx0cyEgY3MpXVxuICAgICAgKGlmXG4gICAgICAgKG5pbD8gdilcbiAgICAgICAocmVjdXIgKGZpbHRlcnYgKGZuKiBbcDFfXzQyODY3I10gKG5vdD0gYyBwMV9fNDI4NjcjKSkgY3MpKVxuICAgICAgIChkbyAoPiEgb3V0IHYpIChyZWN1ciBjcykpKSlcbiAgICAgKGNsb3NlISBvdXQpKSlcbiAgIG91dCkpKVxuIn0gezpzeW0gcGFydGl0aW9uLWJ5LCA6bWV0YSB7OmRvYyAiRGVwcmVjYXRlZCAtIHRoaXMgZnVuY3Rpb24gd2lsbCBiZSByZW1vdmVkLiBVc2UgdHJhbnNkdWNlciBpbnN0ZWFkIiwgOmFyZ2xpc3RzIFtbZiBjaF0gW2YgY2ggYnVmLW9yLW5dXX0sIDpzb3VyY2UgIihkZWZuXG4gcGFydGl0aW9uLWJ5XG4gXCJEZXByZWNhdGVkIC0gdGhpcyBmdW5jdGlvbiB3aWxsIGJlIHJlbW92ZWQuIFVzZSB0cmFuc2R1Y2VyIGluc3RlYWRcIlxuIChbZiBjaF0gKHBhcnRpdGlvbi1ieSBmIGNoIG5pbCkpXG4gKFtmIGNoIGJ1Zi1vci1uXVxuICAobGV0XG4gICBbb3V0IChjaGFuIGJ1Zi1vci1uKV1cbiAgIChnb1xuICAgIChsb29wXG4gICAgIFtsc3QgKG1ha2UtYXJyYXkgMCkgbGFzdCA6Y2xqcy5jb3JlLmFzeW5jL25vdGhpbmddXG4gICAgIChsZXRcbiAgICAgIFt2ICg8ISBjaCldXG4gICAgICAoaWZcbiAgICAgICAobm90IChuaWw/IHYpKVxuICAgICAgIChsZXRcbiAgICAgICAgW25ldy1pdG0gKGYgdildXG4gICAgICAgIChpZlxuICAgICAgICAgKG9yXG4gICAgICAgICAgKD0gbmV3LWl0bSBsYXN0KVxuICAgICAgICAgIChrZXl3b3JkLWlkZW50aWNhbD8gbGFzdCA6Y2xqcy5jb3JlLmFzeW5jL25vdGhpbmcpKVxuICAgICAgICAgKGRvICgucHVzaCBsc3QgdikgKHJlY3VyIGxzdCBuZXctaXRtKSlcbiAgICAgICAgIChkb1xuICAgICAgICAgICg+ISBvdXQgKHZlYyBsc3QpKVxuICAgICAgICAgIChsZXRcbiAgICAgICAgICAgW25ldy1sc3QgKG1ha2UtYXJyYXkgMCldXG4gICAgICAgICAgICgucHVzaCBuZXctbHN0IHYpXG4gICAgICAgICAgIChyZWN1ciBuZXctbHN0IG5ldy1pdG0pKSkpKVxuICAgICAgIChkb1xuICAgICAgICAod2hlbiAoPiAoYWxlbmd0aCBsc3QpIDApICg+ISBvdXQgKHZlYyBsc3QpKSlcbiAgICAgICAgKGNsb3NlISBvdXQpKSkpKSlcbiAgIG91dCkpKVxuIn0gezpzeW0gdW5zdWItYWxsLCA6bWV0YSB7OmRvYyAiVW5zdWJzY3JpYmVzIGFsbCBjaGFubmVscyBmcm9tIGEgcHViLCBvciBhIHRvcGljIG9mIGEgcHViIiwgOmFyZ2xpc3RzIFtbcF0gW3AgdG9waWNdXX0sIDpzb3VyY2UgIihkZWZuXG4gdW5zdWItYWxsXG4gXCJVbnN1YnNjcmliZXMgYWxsIGNoYW5uZWxzIGZyb20gYSBwdWIsIG9yIGEgdG9waWMgb2YgYSBwdWJcIlxuIChbcF0gKHVuc3ViLWFsbCogcCkpXG4gKFtwIHRvcGljXSAodW5zdWItYWxsKiBwIHRvcGljKSkpXG4ifSB7OnN5bSA+ISwgOm1ldGEgezpkb2MgInB1dHMgYSB2YWwgaW50byBwb3J0LiBuaWwgdmFsdWVzIGFyZSBub3QgYWxsb3dlZC4gTXVzdCBiZSBjYWxsZWRcbiAgaW5zaWRlIGEgKGdvIC4uLikgYmxvY2suIFdpbGwgcGFyayBpZiBubyBidWZmZXIgc3BhY2UgaXMgYXZhaWxhYmxlLlxuICBSZXR1cm5zIHRydWUgdW5sZXNzIHBvcnQgaXMgYWxyZWFkeSBjbG9zZWQuIiwgOmFyZ2xpc3RzIChbcG9ydCB2YWxdKX0sIDpzb3VyY2UgIihkZWZuXG4gPiFcbiBcInB1dHMgYSB2YWwgaW50byBwb3J0LiBuaWwgdmFsdWVzIGFyZSBub3QgYWxsb3dlZC4gTXVzdCBiZSBjYWxsZWRcXG4gIGluc2lkZSBhIChnbyAuLi4pIGJsb2NrLiBXaWxsIHBhcmsgaWYgbm8gYnVmZmVyIHNwYWNlIGlzIGF2YWlsYWJsZS5cXG4gIFJldHVybnMgdHJ1ZSB1bmxlc3MgcG9ydCBpcyBhbHJlYWR5IGNsb3NlZC5cIlxuIFtwb3J0IHZhbF1cbiAodGhyb3cgKGpzL0Vycm9yLiBcIj4hIHVzZWQgbm90IGluIChnbyAuLi4pIGJsb2NrXCIpKSlcbiJ9IHs6c3ltIHVubWl4LWFsbCosIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbbV0pfSwgOnByb3RvY29sIE1peH0gezpzeW0gc3BsaXQsIDptZXRhIHs6ZG9jICJUYWtlcyBhIHByZWRpY2F0ZSBhbmQgYSBzb3VyY2UgY2hhbm5lbCBhbmQgcmV0dXJucyBhIHZlY3RvciBvZiB0d29cbiAgY2hhbm5lbHMsIHRoZSBmaXJzdCBvZiB3aGljaCB3aWxsIGNvbnRhaW4gdGhlIHZhbHVlcyBmb3Igd2hpY2ggdGhlXG4gIHByZWRpY2F0ZSByZXR1cm5lZCB0cnVlLCB0aGUgc2Vjb25kIHRob3NlIGZvciB3aGljaCBpdCByZXR1cm5lZFxuICBmYWxzZS5cblxuICBUaGUgb3V0IGNoYW5uZWxzIHdpbGwgYmUgdW5idWZmZXJlZCBieSBkZWZhdWx0LCBvciB0d28gYnVmLW9yLW5zIGNhblxuICBiZSBzdXBwbGllZC4gVGhlIGNoYW5uZWxzIHdpbGwgY2xvc2UgYWZ0ZXIgdGhlIHNvdXJjZSBjaGFubmVsIGhhc1xuICBjbG9zZWQuIiwgOmFyZ2xpc3RzIFtbcCBjaF0gW3AgY2ggdC1idWYtb3ItbiBmLWJ1Zi1vci1uXV19LCA6c291cmNlICIoZGVmblxuIHNwbGl0XG4gXCJUYWtlcyBhIHByZWRpY2F0ZSBhbmQgYSBzb3VyY2UgY2hhbm5lbCBhbmQgcmV0dXJucyBhIHZlY3RvciBvZiB0d29cXG4gIGNoYW5uZWxzLCB0aGUgZmlyc3Qgb2Ygd2hpY2ggd2lsbCBjb250YWluIHRoZSB2YWx1ZXMgZm9yIHdoaWNoIHRoZVxcbiAgcHJlZGljYXRlIHJldHVybmVkIHRydWUsIHRoZSBzZWNvbmQgdGhvc2UgZm9yIHdoaWNoIGl0IHJldHVybmVkXFxuICBmYWxzZS5cXG5cXG4gIFRoZSBvdXQgY2hhbm5lbHMgd2lsbCBiZSB1bmJ1ZmZlcmVkIGJ5IGRlZmF1bHQsIG9yIHR3byBidWYtb3ItbnMgY2FuXFxuICBiZSBzdXBwbGllZC4gVGhlIGNoYW5uZWxzIHdpbGwgY2xvc2UgYWZ0ZXIgdGhlIHNvdXJjZSBjaGFubmVsIGhhc1xcbiAgY2xvc2VkLlwiXG4gKFtwIGNoXSAoc3BsaXQgcCBjaCBuaWwgbmlsKSlcbiAoW3AgY2ggdC1idWYtb3ItbiBmLWJ1Zi1vci1uXVxuICAobGV0XG4gICBbdGMgKGNoYW4gdC1idWYtb3ItbikgZmMgKGNoYW4gZi1idWYtb3ItbildXG4gICAoZ28tbG9vcFxuICAgIFtdXG4gICAgKGxldFxuICAgICBbdiAoPCEgY2gpXVxuICAgICAoaWZcbiAgICAgIChuaWw/IHYpXG4gICAgICAoZG8gKGNsb3NlISB0YykgKGNsb3NlISBmYykpXG4gICAgICAod2hlbiAoPiEgKGlmIChwIHYpIHRjIGZjKSB2KSAocmVjdXIpKSkpKVxuICAgW3RjIGZjXSkpKVxuIn0gezpzeW0gdW5taXgtYWxsLCA6bWV0YSB7OmRvYyAicmVtb3ZlcyBhbGwgaW5wdXRzIGZyb20gdGhlIG1peCIsIDphcmdsaXN0cyAoW21peF0pfSwgOnNvdXJjZSAiKGRlZm5cbiB1bm1peC1hbGxcbiBcInJlbW92ZXMgYWxsIGlucHV0cyBmcm9tIHRoZSBtaXhcIlxuIFttaXhdXG4gKHVubWl4LWFsbCogbWl4KSlcbiJ9IHs6c3ltIGZpbHRlcj4sIDptZXRhIHs6ZG9jICJEZXByZWNhdGVkIC0gdGhpcyBmdW5jdGlvbiB3aWxsIGJlIHJlbW92ZWQuIFVzZSB0cmFuc2R1Y2VyIGluc3RlYWQiLCA6YXJnbGlzdHMgKFtwIGNoXSl9LCA6c291cmNlICIoZGVmblxuIGZpbHRlcj5cbiBcIkRlcHJlY2F0ZWQgLSB0aGlzIGZ1bmN0aW9uIHdpbGwgYmUgcmVtb3ZlZC4gVXNlIHRyYW5zZHVjZXIgaW5zdGVhZFwiXG4gW3AgY2hdXG4gKHJlaWZ5XG4gIGltcGwvQ2hhbm5lbFxuICAoY2xvc2UhIFtfXSAoaW1wbC9jbG9zZSEgY2gpKVxuICAoY2xvc2VkPyBbX10gKGltcGwvY2xvc2VkPyBjaCkpXG4gIGltcGwvUmVhZFBvcnRcbiAgKHRha2UhIFtfIGZuMV0gKGltcGwvdGFrZSEgY2ggZm4xKSlcbiAgaW1wbC9Xcml0ZVBvcnRcbiAgKHB1dCFcbiAgIFtfIHZhbCBmbjFdXG4gICAoaWZcbiAgICAocCB2YWwpXG4gICAgKGltcGwvcHV0ISBjaCB2YWwgZm4xKVxuICAgIChjaGFubmVscy9ib3ggKG5vdCAoaW1wbC9jbG9zZWQ/IGNoKSkpKSkpKVxuIn0gezpzeW0gdGFwKiwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFttIGNoIGNsb3NlP10pfSwgOnByb3RvY29sIE11bHR9IHs6c3ltIHVudGFwLCA6bWV0YSB7OmRvYyAiRGlzY29ubmVjdHMgYSB0YXJnZXQgY2hhbm5lbCBmcm9tIGEgbXVsdCIsIDphcmdsaXN0cyAoW211bHQgY2hdKX0sIDpzb3VyY2UgIihkZWZuXG4gdW50YXBcbiBcIkRpc2Nvbm5lY3RzIGEgdGFyZ2V0IGNoYW5uZWwgZnJvbSBhIG11bHRcIlxuIFttdWx0IGNoXVxuICh1bnRhcCogbXVsdCBjaCkpXG4ifSB7OnN5bSBhbHRzISwgOm1ldGEgezpkb2MgIkNvbXBsZXRlcyBhdCBtb3N0IG9uZSBvZiBzZXZlcmFsIGNoYW5uZWwgb3BlcmF0aW9ucy4gTXVzdCBiZSBjYWxsZWRcbiAgIGluc2lkZSBhIChnbyAuLi4pIGJsb2NrLiBwb3J0cyBpcyBhIHZlY3RvciBvZiBjaGFubmVsIGVuZHBvaW50cyxcbiAgIHdoaWNoIGNhbiBiZSBlaXRoZXIgYSBjaGFubmVsIHRvIHRha2UgZnJvbSBvciBhIHZlY3RvciBvZlxuICBbY2hhbm5lbC10by1wdXQtdG8gdmFsLXRvLXB1dF0sIGluIGFueSBjb21iaW5hdGlvbi4gVGFrZXMgd2lsbCBiZVxuICBtYWRlIGFzIGlmIGJ5IDwhLCBhbmQgcHV0cyB3aWxsIGJlIG1hZGUgYXMgaWYgYnkgPiEuIFVubGVzc1xuICB0aGUgOnByaW9yaXR5IG9wdGlvbiBpcyB0cnVlLCBpZiBtb3JlIHRoYW4gb25lIHBvcnQgb3BlcmF0aW9uIGlzXG4gIHJlYWR5IGEgbm9uLWRldGVybWluaXN0aWMgY2hvaWNlIHdpbGwgYmUgbWFkZS4gSWYgbm8gb3BlcmF0aW9uIGlzXG4gIHJlYWR5IGFuZCBhIDpkZWZhdWx0IHZhbHVlIGlzIHN1cHBsaWVkLCBbZGVmYXVsdC12YWwgOmRlZmF1bHRdIHdpbGxcbiAgYmUgcmV0dXJuZWQsIG90aGVyd2lzZSBhbHRzISB3aWxsIHBhcmsgdW50aWwgdGhlIGZpcnN0IG9wZXJhdGlvbiB0b1xuICBiZWNvbWUgcmVhZHkgY29tcGxldGVzLiBSZXR1cm5zIFt2YWwgcG9ydF0gb2YgdGhlIGNvbXBsZXRlZFxuICBvcGVyYXRpb24sIHdoZXJlIHZhbCBpcyB0aGUgdmFsdWUgdGFrZW4gZm9yIHRha2VzLCBhbmQgYVxuICBib29sZWFuICh0cnVlIHVubGVzcyBhbHJlYWR5IGNsb3NlZCwgYXMgcGVyIHB1dCEpIGZvciBwdXRzLlxuXG4gIG9wdHMgYXJlIHBhc3NlZCBhcyA6a2V5IHZhbCAuLi4gU3VwcG9ydGVkIG9wdGlvbnM6XG5cbiAgOmRlZmF1bHQgdmFsIC0gdGhlIHZhbHVlIHRvIHVzZSBpZiBub25lIG9mIHRoZSBvcGVyYXRpb25zIGFyZSBpbW1lZGlhdGVseSByZWFkeVxuICA6cHJpb3JpdHkgdHJ1ZSAtIChkZWZhdWx0IG5pbCkgd2hlbiB0cnVlLCB0aGUgb3BlcmF0aW9ucyB3aWxsIGJlIHRyaWVkIGluIG9yZGVyLlxuXG4gIE5vdGU6IHRoZXJlIGlzIG5vIGd1YXJhbnRlZSB0aGF0IHRoZSBwb3J0IGV4cHMgb3IgdmFsIGV4cHJzIHdpbGwgYmVcbiAgdXNlZCwgbm9yIGluIHdoYXQgb3JkZXIgc2hvdWxkIHRoZXkgYmUsIHNvIHRoZXkgc2hvdWxkIG5vdCBiZVxuICBkZXBlbmRlZCB1cG9uIGZvciBzaWRlIGVmZmVjdHMuIiwgOmFyZ2xpc3RzIChbcG9ydHMgJiB7OmFzIG9wdHN9XSl9LCA6c291cmNlICIoZGVmblxuIGFsdHMhXG4gXCJDb21wbGV0ZXMgYXQgbW9zdCBvbmUgb2Ygc2V2ZXJhbCBjaGFubmVsIG9wZXJhdGlvbnMuIE11c3QgYmUgY2FsbGVkXFxuICAgaW5zaWRlIGEgKGdvIC4uLikgYmxvY2suIHBvcnRzIGlzIGEgdmVjdG9yIG9mIGNoYW5uZWwgZW5kcG9pbnRzLFxcbiAgIHdoaWNoIGNhbiBiZSBlaXRoZXIgYSBjaGFubmVsIHRvIHRha2UgZnJvbSBvciBhIHZlY3RvciBvZlxcbiAgW2NoYW5uZWwtdG8tcHV0LXRvIHZhbC10by1wdXRdLCBpbiBhbnkgY29tYmluYXRpb24uIFRha2VzIHdpbGwgYmVcXG4gIG1hZGUgYXMgaWYgYnkgPCEsIGFuZCBwdXRzIHdpbGwgYmUgbWFkZSBhcyBpZiBieSA+IS4gVW5sZXNzXFxuICB0aGUgOnByaW9yaXR5IG9wdGlvbiBpcyB0cnVlLCBpZiBtb3JlIHRoYW4gb25lIHBvcnQgb3BlcmF0aW9uIGlzXFxuICByZWFkeSBhIG5vbi1kZXRlcm1pbmlzdGljIGNob2ljZSB3aWxsIGJlIG1hZGUuIElmIG5vIG9wZXJhdGlvbiBpc1xcbiAgcmVhZHkgYW5kIGEgOmRlZmF1bHQgdmFsdWUgaXMgc3VwcGxpZWQsIFtkZWZhdWx0LXZhbCA6ZGVmYXVsdF0gd2lsbFxcbiAgYmUgcmV0dXJuZWQsIG90aGVyd2lzZSBhbHRzISB3aWxsIHBhcmsgdW50aWwgdGhlIGZpcnN0IG9wZXJhdGlvbiB0b1xcbiAgYmVjb21lIHJlYWR5IGNvbXBsZXRlcy4gUmV0dXJucyBbdmFsIHBvcnRdIG9mIHRoZSBjb21wbGV0ZWRcXG4gIG9wZXJhdGlvbiwgd2hlcmUgdmFsIGlzIHRoZSB2YWx1ZSB0YWtlbiBmb3IgdGFrZXMsIGFuZCBhXFxuICBib29sZWFuICh0cnVlIHVubGVzcyBhbHJlYWR5IGNsb3NlZCwgYXMgcGVyIHB1dCEpIGZvciBwdXRzLlxcblxcbiAgb3B0cyBhcmUgcGFzc2VkIGFzIDprZXkgdmFsIC4uLiBTdXBwb3J0ZWQgb3B0aW9uczpcXG5cXG4gIDpkZWZhdWx0IHZhbCAtIHRoZSB2YWx1ZSB0byB1c2UgaWYgbm9uZSBvZiB0aGUgb3BlcmF0aW9ucyBhcmUgaW1tZWRpYXRlbHkgcmVhZHlcXG4gIDpwcmlvcml0eSB0cnVlIC0gKGRlZmF1bHQgbmlsKSB3aGVuIHRydWUsIHRoZSBvcGVyYXRpb25zIHdpbGwgYmUgdHJpZWQgaW4gb3JkZXIuXFxuXFxuICBOb3RlOiB0aGVyZSBpcyBubyBndWFyYW50ZWUgdGhhdCB0aGUgcG9ydCBleHBzIG9yIHZhbCBleHBycyB3aWxsIGJlXFxuICB1c2VkLCBub3IgaW4gd2hhdCBvcmRlciBzaG91bGQgdGhleSBiZSwgc28gdGhleSBzaG91bGQgbm90IGJlXFxuICBkZXBlbmRlZCB1cG9uIGZvciBzaWRlIGVmZmVjdHMuXCJcbiBbcG9ydHMgJiB7OmFzIG9wdHN9XVxuICh0aHJvdyAoanMvRXJyb3IuIFwiYWx0cyEgdXNlZCBub3QgaW4gKGdvIC4uLikgYmxvY2tcIikpKVxuIn0gezpzeW0gdW5zdWIsIDptZXRhIHs6ZG9jICJVbnN1YnNjcmliZXMgYSBjaGFubmVsIGZyb20gYSB0b3BpYyBvZiBhIHB1YiIsIDphcmdsaXN0cyAoW3AgdG9waWMgY2hdKX0sIDpzb3VyY2UgIihkZWZuXG4gdW5zdWJcbiBcIlVuc3Vic2NyaWJlcyBhIGNoYW5uZWwgZnJvbSBhIHRvcGljIG9mIGEgcHViXCJcbiBbcCB0b3BpYyBjaF1cbiAodW5zdWIqIHAgdG9waWMgY2gpKVxuIn0gezpzeW0gcG9sbCEsIDptZXRhIHs6ZG9jICJUYWtlcyBhIHZhbCBmcm9tIHBvcnQgaWYgaXQncyBwb3NzaWJsZSB0byBkbyBzbyBpbW1lZGlhdGVseS5cbiAgTmV2ZXIgYmxvY2tzLiBSZXR1cm5zIHZhbHVlIGlmIHN1Y2Nlc3NmdWwsIG5pbCBvdGhlcndpc2UuIiwgOmFyZ2xpc3RzIChbcG9ydF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBwb2xsIVxuIFwiVGFrZXMgYSB2YWwgZnJvbSBwb3J0IGlmIGl0J3MgcG9zc2libGUgdG8gZG8gc28gaW1tZWRpYXRlbHkuXFxuICBOZXZlciBibG9ja3MuIFJldHVybnMgdmFsdWUgaWYgc3VjY2Vzc2Z1bCwgbmlsIG90aGVyd2lzZS5cIlxuIFtwb3J0XVxuIChsZXQgW3JldCAoaW1wbC90YWtlISBwb3J0IChmbi1oYW5kbGVyIG5vcCBmYWxzZSkpXSAod2hlbiByZXQgQHJldCkpKVxuIn0gezpzeW0gbWFwPCwgOm1ldGEgezpkb2MgIkRlcHJlY2F0ZWQgLSB0aGlzIGZ1bmN0aW9uIHdpbGwgYmUgcmVtb3ZlZC4gVXNlIHRyYW5zZHVjZXIgaW5zdGVhZCIsIDphcmdsaXN0cyAoW2YgY2hdKX0sIDpzb3VyY2UgIihkZWZuXG4gbWFwPFxuIFwiRGVwcmVjYXRlZCAtIHRoaXMgZnVuY3Rpb24gd2lsbCBiZSByZW1vdmVkLiBVc2UgdHJhbnNkdWNlciBpbnN0ZWFkXCJcbiBbZiBjaF1cbiAocmVpZnlcbiAgaW1wbC9DaGFubmVsXG4gIChjbG9zZSEgW19dIChpbXBsL2Nsb3NlISBjaCkpXG4gIChjbG9zZWQ/IFtfXSAoaW1wbC9jbG9zZWQ/IGNoKSlcbiAgaW1wbC9SZWFkUG9ydFxuICAodGFrZSFcbiAgIFtfIGZuMV1cbiAgIChsZXRcbiAgICBbcmV0XG4gICAgIChpbXBsL3Rha2UhXG4gICAgICBjaFxuICAgICAgKHJlaWZ5XG4gICAgICAgaW1wbC9IYW5kbGVyXG4gICAgICAgKGFjdGl2ZT8gW19dIChpbXBsL2FjdGl2ZT8gZm4xKSlcbiAgICAgICAoYmxvY2thYmxlPyBbX10gdHJ1ZSlcbiAgICAgICAoY29tbWl0XG4gICAgICAgIFtfXVxuICAgICAgICAobGV0XG4gICAgICAgICBbZjEgKGltcGwvY29tbWl0IGZuMSldXG4gICAgICAgICAoZm4qXG4gICAgICAgICAgW3AxX180Mjg2OCNdXG4gICAgICAgICAgKGYxIChpZiAobmlsPyBwMV9fNDI4NjgjKSBuaWwgKGYgcDFfXzQyODY4IykpKSkpKSkpXVxuICAgIChpZiAoYW5kIHJldCAobm90IChuaWw/IEByZXQpKSkgKGNoYW5uZWxzL2JveCAoZiBAcmV0KSkgcmV0KSkpXG4gIGltcGwvV3JpdGVQb3J0XG4gIChwdXQhIFtfIHZhbCBmbjFdIChpbXBsL3B1dCEgY2ggdmFsIGZuMSkpKSlcbiJ9IHs6c3ltIGRvLWFsdHMsIDptZXRhIHs6ZG9jICJyZXR1cm5zIGRlcmVmYWJsZSBbdmFsIHBvcnRdIGlmIGltbWVkaWF0ZSwgbmlsIGlmIGVucXVldWVkIiwgOmFyZ2xpc3RzIChbZnJldCBwb3J0cyBvcHRzXSl9LCA6c291cmNlICIoZGVmblxuIGRvLWFsdHNcbiBcInJldHVybnMgZGVyZWZhYmxlIFt2YWwgcG9ydF0gaWYgaW1tZWRpYXRlLCBuaWwgaWYgZW5xdWV1ZWRcIlxuIFtmcmV0IHBvcnRzIG9wdHNdXG4gKGFzc2VydFxuICAocG9zPyAoY291bnQgcG9ydHMpKVxuICBcImFsdHMgbXVzdCBoYXZlIGF0IGxlYXN0IG9uZSBjaGFubmVsIG9wZXJhdGlvblwiKVxuIChsZXRcbiAgW2ZsYWdcbiAgIChhbHQtZmxhZylcbiAgIG5cbiAgIChjb3VudCBwb3J0cylcbiAgIGlkeHNcbiAgIChyYW5kb20tYXJyYXkgbilcbiAgIHByaW9yaXR5XG4gICAoOnByaW9yaXR5IG9wdHMpXG4gICByZXRcbiAgIChsb29wXG4gICAgW2kgMF1cbiAgICAod2hlblxuICAgICAoPCBpIG4pXG4gICAgIChsZXRcbiAgICAgIFtpZHhcbiAgICAgICAoaWYgcHJpb3JpdHkgaSAoYWdldCBpZHhzIGkpKVxuICAgICAgIHBvcnRcbiAgICAgICAobnRoIHBvcnRzIGlkeClcbiAgICAgICB3cG9ydFxuICAgICAgICh3aGVuICh2ZWN0b3I/IHBvcnQpIChwb3J0IDApKVxuICAgICAgIHZib3hcbiAgICAgICAoaWZcbiAgICAgICAgd3BvcnRcbiAgICAgICAgKGxldFxuICAgICAgICAgW3ZhbCAocG9ydCAxKV1cbiAgICAgICAgIChpbXBsL3B1dCFcbiAgICAgICAgICB3cG9ydFxuICAgICAgICAgIHZhbFxuICAgICAgICAgIChhbHQtaGFuZGxlclxuICAgICAgICAgICBmbGFnXG4gICAgICAgICAgIChmbiogW3AxX180Mjg2NCNdIChmcmV0IFtwMV9fNDI4NjQjIHdwb3J0XSkpKSkpXG4gICAgICAgIChpbXBsL3Rha2UhXG4gICAgICAgICBwb3J0XG4gICAgICAgICAoYWx0LWhhbmRsZXJcbiAgICAgICAgICBmbGFnXG4gICAgICAgICAgKGZuKiBbcDFfXzQyODY1I10gKGZyZXQgW3AxX180Mjg2NSMgcG9ydF0pKSkpKV1cbiAgICAgIChpZlxuICAgICAgIHZib3hcbiAgICAgICAoY2hhbm5lbHMvYm94IFtAdmJveCAob3Igd3BvcnQgcG9ydCldKVxuICAgICAgIChyZWN1ciAoaW5jIGkpKSkpKSldXG4gIChvclxuICAgcmV0XG4gICAod2hlblxuICAgIChjb250YWlucz8gb3B0cyA6ZGVmYXVsdClcbiAgICAod2hlbi1sZXRcbiAgICAgW2dvdCAoYW5kIChpbXBsL2FjdGl2ZT8gZmxhZykgKGltcGwvY29tbWl0IGZsYWcpKV1cbiAgICAgKGNoYW5uZWxzL2JveCBbKDpkZWZhdWx0IG9wdHMpIDpkZWZhdWx0XSkpKSkpKVxuIn0gezpzeW0gcGlwZWxpbmUtYXN5bmMsIDptZXRhIHs6ZG9jICJUYWtlcyBlbGVtZW50cyBmcm9tIHRoZSBmcm9tIGNoYW5uZWwgYW5kIHN1cHBsaWVzIHRoZW0gdG8gdGhlIHRvXG4gIGNoYW5uZWwsIHN1YmplY3QgdG8gdGhlIGFzeW5jIGZ1bmN0aW9uIGFmLCB3aXRoIHBhcmFsbGVsaXNtIG4uIGFmXG4gIG11c3QgYmUgYSBmdW5jdGlvbiBvZiB0d28gYXJndW1lbnRzLCB0aGUgZmlyc3QgYW4gaW5wdXQgdmFsdWUgYW5kXG4gIHRoZSBzZWNvbmQgYSBjaGFubmVsIG9uIHdoaWNoIHRvIHBsYWNlIHRoZSByZXN1bHQocykuIGFmIG11c3QgY2xvc2UhXG4gIHRoZSBjaGFubmVsIGJlZm9yZSByZXR1cm5pbmcuICBUaGUgcHJlc3VtcHRpb24gaXMgdGhhdCBhZiB3aWxsXG4gIHJldHVybiBpbW1lZGlhdGVseSwgaGF2aW5nIGxhdW5jaGVkIHNvbWUgYXN5bmNocm9ub3VzIG9wZXJhdGlvblxuICB3aG9zZSBjb21wbGV0aW9uL2NhbGxiYWNrIHdpbGwgbWFuaXB1bGF0ZSB0aGUgcmVzdWx0IGNoYW5uZWwuIE91dHB1dHNcbiAgd2lsbCBiZSByZXR1cm5lZCBpbiBvcmRlciByZWxhdGl2ZSB0byAgdGhlIGlucHV0cy4gQnkgZGVmYXVsdCwgdGhlIHRvXG4gIGNoYW5uZWwgd2lsbCBiZSBjbG9zZWQgd2hlbiB0aGUgZnJvbSBjaGFubmVsIGNsb3NlcywgYnV0IGNhbiBiZVxuICBkZXRlcm1pbmVkIGJ5IHRoZSBjbG9zZT8gIHBhcmFtZXRlci4gV2lsbCBzdG9wIGNvbnN1bWluZyB0aGUgZnJvbVxuICBjaGFubmVsIGlmIHRoZSB0byBjaGFubmVsIGNsb3Nlcy4iLCA6YXJnbGlzdHMgW1tuIHRvIGFmIGZyb21dIFtuIHRvIGFmIGZyb20gY2xvc2U/XV19LCA6c291cmNlICIoZGVmblxuIHBpcGVsaW5lLWFzeW5jXG4gXCJUYWtlcyBlbGVtZW50cyBmcm9tIHRoZSBmcm9tIGNoYW5uZWwgYW5kIHN1cHBsaWVzIHRoZW0gdG8gdGhlIHRvXFxuICBjaGFubmVsLCBzdWJqZWN0IHRvIHRoZSBhc3luYyBmdW5jdGlvbiBhZiwgd2l0aCBwYXJhbGxlbGlzbSBuLiBhZlxcbiAgbXVzdCBiZSBhIGZ1bmN0aW9uIG9mIHR3byBhcmd1bWVudHMsIHRoZSBmaXJzdCBhbiBpbnB1dCB2YWx1ZSBhbmRcXG4gIHRoZSBzZWNvbmQgYSBjaGFubmVsIG9uIHdoaWNoIHRvIHBsYWNlIHRoZSByZXN1bHQocykuIGFmIG11c3QgY2xvc2UhXFxuICB0aGUgY2hhbm5lbCBiZWZvcmUgcmV0dXJuaW5nLiAgVGhlIHByZXN1bXB0aW9uIGlzIHRoYXQgYWYgd2lsbFxcbiAgcmV0dXJuIGltbWVkaWF0ZWx5LCBoYXZpbmcgbGF1bmNoZWQgc29tZSBhc3luY2hyb25vdXMgb3BlcmF0aW9uXFxuICB3aG9zZSBjb21wbGV0aW9uL2NhbGxiYWNrIHdpbGwgbWFuaXB1bGF0ZSB0aGUgcmVzdWx0IGNoYW5uZWwuIE91dHB1dHNcXG4gIHdpbGwgYmUgcmV0dXJuZWQgaW4gb3JkZXIgcmVsYXRpdmUgdG8gIHRoZSBpbnB1dHMuIEJ5IGRlZmF1bHQsIHRoZSB0b1xcbiAgY2hhbm5lbCB3aWxsIGJlIGNsb3NlZCB3aGVuIHRoZSBmcm9tIGNoYW5uZWwgY2xvc2VzLCBidXQgY2FuIGJlXFxuICBkZXRlcm1pbmVkIGJ5IHRoZSBjbG9zZT8gIHBhcmFtZXRlci4gV2lsbCBzdG9wIGNvbnN1bWluZyB0aGUgZnJvbVxcbiAgY2hhbm5lbCBpZiB0aGUgdG8gY2hhbm5lbCBjbG9zZXMuXCJcbiAoW24gdG8gYWYgZnJvbV0gKHBpcGVsaW5lLWFzeW5jIG4gdG8gYWYgZnJvbSB0cnVlKSlcbiAoW24gdG8gYWYgZnJvbSBjbG9zZT9dIChwaXBlbGluZSogbiB0byBhZiBmcm9tIGNsb3NlPyBuaWwgOmFzeW5jKSkpXG4ifSB7OnN5bSBNaXgsIDptZXRhIHs6ZG9jIG5pbH0sIDptZXRob2RzIChhZG1peCogc29sby1tb2RlKiB0b2dnbGUqIHVubWl4KiB1bm1peC1hbGwqKX0gezpzeW0gdG9nZ2xlKiwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFttIHN0YXRlLW1hcF0pfSwgOnByb3RvY29sIE1peH0gezpzeW0gbXVsdCwgOm1ldGEgezpkb2MgIkNyZWF0ZXMgYW5kIHJldHVybnMgYSBtdWx0KGlwbGUpIG9mIHRoZSBzdXBwbGllZCBjaGFubmVsLiBDaGFubmVsc1xuICBjb250YWluaW5nIGNvcGllcyBvZiB0aGUgY2hhbm5lbCBjYW4gYmUgY3JlYXRlZCB3aXRoICd0YXAnLCBhbmRcbiAgZGV0YWNoZWQgd2l0aCAndW50YXAnLlxuXG4gIEVhY2ggaXRlbSBpcyBkaXN0cmlidXRlZCB0byBhbGwgdGFwcyBpbiBwYXJhbGxlbCBhbmQgc3luY2hyb25vdXNseSxcbiAgaS5lLiBlYWNoIHRhcCBtdXN0IGFjY2VwdCBiZWZvcmUgdGhlIG5leHQgaXRlbSBpcyBkaXN0cmlidXRlZC4gVXNlXG4gIGJ1ZmZlcmluZy93aW5kb3dpbmcgdG8gcHJldmVudCBzbG93IHRhcHMgZnJvbSBob2xkaW5nIHVwIHRoZSBtdWx0LlxuXG4gIEl0ZW1zIHJlY2VpdmVkIHdoZW4gdGhlcmUgYXJlIG5vIHRhcHMgZ2V0IGRyb3BwZWQuXG5cbiAgSWYgYSB0YXAgcHV0cyB0byBhIGNsb3NlZCBjaGFubmVsLCBpdCB3aWxsIGJlIHJlbW92ZWQgZnJvbSB0aGUgbXVsdC4iLCA6YXJnbGlzdHMgKFtjaF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBtdWx0XG4gXCJDcmVhdGVzIGFuZCByZXR1cm5zIGEgbXVsdChpcGxlKSBvZiB0aGUgc3VwcGxpZWQgY2hhbm5lbC4gQ2hhbm5lbHNcXG4gIGNvbnRhaW5pbmcgY29waWVzIG9mIHRoZSBjaGFubmVsIGNhbiBiZSBjcmVhdGVkIHdpdGggJ3RhcCcsIGFuZFxcbiAgZGV0YWNoZWQgd2l0aCAndW50YXAnLlxcblxcbiAgRWFjaCBpdGVtIGlzIGRpc3RyaWJ1dGVkIHRvIGFsbCB0YXBzIGluIHBhcmFsbGVsIGFuZCBzeW5jaHJvbm91c2x5LFxcbiAgaS5lLiBlYWNoIHRhcCBtdXN0IGFjY2VwdCBiZWZvcmUgdGhlIG5leHQgaXRlbSBpcyBkaXN0cmlidXRlZC4gVXNlXFxuICBidWZmZXJpbmcvd2luZG93aW5nIHRvIHByZXZlbnQgc2xvdyB0YXBzIGZyb20gaG9sZGluZyB1cCB0aGUgbXVsdC5cXG5cXG4gIEl0ZW1zIHJlY2VpdmVkIHdoZW4gdGhlcmUgYXJlIG5vIHRhcHMgZ2V0IGRyb3BwZWQuXFxuXFxuICBJZiBhIHRhcCBwdXRzIHRvIGEgY2xvc2VkIGNoYW5uZWwsIGl0IHdpbGwgYmUgcmVtb3ZlZCBmcm9tIHRoZSBtdWx0LlwiXG4gW2NoXVxuIChsZXRcbiAgW2NzXG4gICAoYXRvbSB7fSlcbiAgIG1cbiAgIChyZWlmeVxuICAgIE11eFxuICAgIChtdXhjaCogW19dIGNoKVxuICAgIE11bHRcbiAgICAodGFwKiBbXyBjaCBjbG9zZT9dIChzd2FwISBjcyBhc3NvYyBjaCBjbG9zZT8pIG5pbClcbiAgICAodW50YXAqIFtfIGNoXSAoc3dhcCEgY3MgZGlzc29jIGNoKSBuaWwpXG4gICAgKHVudGFwLWFsbCogW19dIChyZXNldCEgY3Mge30pIG5pbCkpXG4gICBkY2hhblxuICAgKGNoYW4gMSlcbiAgIGRjdHJcbiAgIChhdG9tIG5pbClcbiAgIGRvbmVcbiAgIChmbiBbX10gKHdoZW4gKHplcm8/IChzd2FwISBkY3RyIGRlYykpIChwdXQhIGRjaGFuIHRydWUpKSldXG4gIChnby1sb29wXG4gICBbXVxuICAgKGxldFxuICAgIFt2YWwgKDwhIGNoKV1cbiAgICAoaWZcbiAgICAgKG5pbD8gdmFsKVxuICAgICAoZG9zZXEgW1tjIGNsb3NlP10gQGNzXSAod2hlbiBjbG9zZT8gKGNsb3NlISBjKSkpXG4gICAgIChsZXRcbiAgICAgIFtjaHMgKGtleXMgQGNzKV1cbiAgICAgIChyZXNldCEgZGN0ciAoY291bnQgY2hzKSlcbiAgICAgIChkb3NlcSBbYyBjaHNdICh3aGVuLW5vdCAocHV0ISBjIHZhbCBkb25lKSAodW50YXAqIG0gYykpKVxuICAgICAgKHdoZW4gKHNlcSBjaHMpICg8ISBkY2hhbikpXG4gICAgICAocmVjdXIpKSkpKVxuICBtKSlcbiJ9IHs6c3ltIG1hcGNhdDwsIDptZXRhIHs6ZG9jICJEZXByZWNhdGVkIC0gdGhpcyBmdW5jdGlvbiB3aWxsIGJlIHJlbW92ZWQuIFVzZSB0cmFuc2R1Y2VyIGluc3RlYWQiLCA6YXJnbGlzdHMgW1tmIGluXSBbZiBpbiBidWYtb3Itbl1dfSwgOnNvdXJjZSAiKGRlZm5cbiBtYXBjYXQ8XG4gXCJEZXByZWNhdGVkIC0gdGhpcyBmdW5jdGlvbiB3aWxsIGJlIHJlbW92ZWQuIFVzZSB0cmFuc2R1Y2VyIGluc3RlYWRcIlxuIChbZiBpbl0gKG1hcGNhdDwgZiBpbiBuaWwpKVxuIChbZiBpbiBidWYtb3Itbl0gKGxldCBbb3V0IChjaGFuIGJ1Zi1vci1uKV0gKG1hcGNhdCogZiBpbiBvdXQpIG91dCkpKVxuIn0gezpzeW0gaW9jLWFsdHMhLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3N0YXRlIGNvbnQtYmxvY2sgcG9ydHMgJiB7OmFzIG9wdHN9XSl9LCA6c291cmNlICIoZGVmblxuIGlvYy1hbHRzIVxuIFtzdGF0ZSBjb250LWJsb2NrIHBvcnRzICYgezphcyBvcHRzfV1cbiAoaW9jL2FzZXQtYWxsISBzdGF0ZSBoZWxwZXJzL1NUQVRFLUlEWCBjb250LWJsb2NrKVxuICh3aGVuLWxldFxuICBbY2JcbiAgIChjbGpzLmNvcmUuYXN5bmMvZG8tYWx0c1xuICAgIChmblxuICAgICBbdmFsXVxuICAgICAoaW9jL2FzZXQtYWxsISBzdGF0ZSBoZWxwZXJzL1ZBTFVFLUlEWCB2YWwpXG4gICAgIChoZWxwZXJzL3J1bi1zdGF0ZS1tYWNoaW5lLXdyYXBwZWQgc3RhdGUpKVxuICAgIHBvcnRzXG4gICAgb3B0cyldXG4gIChpb2MvYXNldC1hbGwhIHN0YXRlIGhlbHBlcnMvVkFMVUUtSURYIEBjYilcbiAgOnJlY3VyKSlcbiJ9IHs6c3ltIHVuYmxvY2tpbmctYnVmZmVyPywgOm1ldGEgezpkb2MgIlJldHVybnMgdHJ1ZSBpZiBhIGNoYW5uZWwgY3JlYXRlZCB3aXRoIGJ1ZmYgd2lsbCBuZXZlciBibG9jay4gVGhhdCBpcyB0byBzYXksXG4gICBwdXRzIGludG8gdGhpcyBidWZmZXIgd2lsbCBuZXZlciBjYXVzZSB0aGUgYnVmZmVyIHRvIGJlIGZ1bGwuICIsIDphcmdsaXN0cyAoW2J1ZmZdKX0sIDpzb3VyY2UgIihkZWZuXG4gdW5ibG9ja2luZy1idWZmZXI/XG4gXCJSZXR1cm5zIHRydWUgaWYgYSBjaGFubmVsIGNyZWF0ZWQgd2l0aCBidWZmIHdpbGwgbmV2ZXIgYmxvY2suIFRoYXQgaXMgdG8gc2F5LFxcbiAgIHB1dHMgaW50byB0aGlzIGJ1ZmZlciB3aWxsIG5ldmVyIGNhdXNlIHRoZSBidWZmZXIgdG8gYmUgZnVsbC4gXCJcbiBbYnVmZl1cbiAoc2F0aXNmaWVzPyBpbXBsL1VuYmxvY2tpbmdCdWZmZXIgYnVmZikpXG4ifSB7OnN5bSBwdXQhLCA6bWV0YSB7OmRvYyAiQXN5bmNocm9ub3VzbHkgcHV0cyBhIHZhbCBpbnRvIHBvcnQsIGNhbGxpbmcgZm4xIChpZiBzdXBwbGllZCkgd2hlblxuICAgY29tcGxldGUuIG5pbCB2YWx1ZXMgYXJlIG5vdCBhbGxvd2VkLiBXaWxsIHRocm93IGlmIGNsb3NlZC4gSWZcbiAgIG9uLWNhbGxlcj8gKGRlZmF1bHQgdHJ1ZSkgaXMgdHJ1ZSwgYW5kIHRoZSBwdXQgaXMgaW1tZWRpYXRlbHlcbiAgIGFjY2VwdGVkLCB3aWxsIGNhbGwgZm4xIG9uIGNhbGxpbmcgdGhyZWFkLiAgUmV0dXJucyBuaWwuIiwgOmFyZ2xpc3RzIFtbcG9ydCB2YWxdIFtwb3J0IHZhbCBmbjFdIFtwb3J0IHZhbCBmbjEgb24tY2FsbGVyP11dfSwgOnNvdXJjZSAiKGRlZm5cbiBwdXQhXG4gXCJBc3luY2hyb25vdXNseSBwdXRzIGEgdmFsIGludG8gcG9ydCwgY2FsbGluZyBmbjEgKGlmIHN1cHBsaWVkKSB3aGVuXFxuICAgY29tcGxldGUuIG5pbCB2YWx1ZXMgYXJlIG5vdCBhbGxvd2VkLiBXaWxsIHRocm93IGlmIGNsb3NlZC4gSWZcXG4gICBvbi1jYWxsZXI/IChkZWZhdWx0IHRydWUpIGlzIHRydWUsIGFuZCB0aGUgcHV0IGlzIGltbWVkaWF0ZWx5XFxuICAgYWNjZXB0ZWQsIHdpbGwgY2FsbCBmbjEgb24gY2FsbGluZyB0aHJlYWQuICBSZXR1cm5zIG5pbC5cIlxuIChbcG9ydCB2YWxdIChpZi1sZXQgW3JldCAoaW1wbC9wdXQhIHBvcnQgdmFsIGZobm9wKV0gQHJldCB0cnVlKSlcbiAoW3BvcnQgdmFsIGZuMV0gKHB1dCEgcG9ydCB2YWwgZm4xIHRydWUpKVxuIChbcG9ydCB2YWwgZm4xIG9uLWNhbGxlcj9dXG4gIChpZi1sZXRcbiAgIFtyZXRiIChpbXBsL3B1dCEgcG9ydCB2YWwgKGZuLWhhbmRsZXIgZm4xKSldXG4gICAobGV0XG4gICAgW3JldCBAcmV0Yl1cbiAgICAoaWYgb24tY2FsbGVyPyAoZm4xIHJldCkgKGRpc3BhdGNoL3J1biAoZm4qIFtdIChmbjEgcmV0KSkpKVxuICAgIHJldClcbiAgIHRydWUpKSlcbiJ9IHs6c3ltIHRha2UhLCA6bWV0YSB7OmRvYyAiQXN5bmNocm9ub3VzbHkgdGFrZXMgYSB2YWwgZnJvbSBwb3J0LCBwYXNzaW5nIHRvIGZuMS4gV2lsbCBwYXNzIG5pbFxuICAgaWYgY2xvc2VkLiBJZiBvbi1jYWxsZXI/IChkZWZhdWx0IHRydWUpIGlzIHRydWUsIGFuZCB2YWx1ZSBpc1xuICAgaW1tZWRpYXRlbHkgYXZhaWxhYmxlLCB3aWxsIGNhbGwgZm4xIG9uIGNhbGxpbmcgdGhyZWFkLlxuICAgUmV0dXJucyBuaWwuIiwgOmFyZ2xpc3RzIFtbcG9ydCBmbjFdIFtwb3J0IGZuMSBvbi1jYWxsZXI/XV19LCA6c291cmNlICIoZGVmblxuIHRha2UhXG4gXCJBc3luY2hyb25vdXNseSB0YWtlcyBhIHZhbCBmcm9tIHBvcnQsIHBhc3NpbmcgdG8gZm4xLiBXaWxsIHBhc3MgbmlsXFxuICAgaWYgY2xvc2VkLiBJZiBvbi1jYWxsZXI/IChkZWZhdWx0IHRydWUpIGlzIHRydWUsIGFuZCB2YWx1ZSBpc1xcbiAgIGltbWVkaWF0ZWx5IGF2YWlsYWJsZSwgd2lsbCBjYWxsIGZuMSBvbiBjYWxsaW5nIHRocmVhZC5cXG4gICBSZXR1cm5zIG5pbC5cIlxuIChbcG9ydCBmbjFdICh0YWtlISBwb3J0IGZuMSB0cnVlKSlcbiAoW3BvcnQgZm4xIG9uLWNhbGxlcj9dXG4gIChsZXRcbiAgIFtyZXQgKGltcGwvdGFrZSEgcG9ydCAoZm4taGFuZGxlciBmbjEpKV1cbiAgICh3aGVuXG4gICAgcmV0XG4gICAgKGxldFxuICAgICBbdmFsIEByZXRdXG4gICAgIChpZiBvbi1jYWxsZXI/IChmbjEgdmFsKSAoZGlzcGF0Y2gvcnVuIChmbiogW10gKGZuMSB2YWwpKSkpKSlcbiAgIG5pbCkpKVxuIn0pLCBmaWd3aGVlbC50b29scy5oZWFkcy11cCAoezpzeW0gZ2V0LWNvbnRlbnQsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbezprZXlzIFtjb250ZW50LWFyZWEtZWxdfV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBnZXQtY29udGVudFxuIFt7OmtleXMgW2NvbnRlbnQtYXJlYS1lbF19XVxuICguLWlubmVySFRNTCBjb250ZW50LWFyZWEtZWwpKVxuIn0gezpzeW0gZGlzcGxheS1leGNlcHRpb24sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZXhjZXB0aW9uLWRhdGFdKX0sIDpzb3VyY2UgIihkZWZuXG4gZGlzcGxheS1leGNlcHRpb25cbiBbZXhjZXB0aW9uLWRhdGFdXG4gKGxldFxuICBbezprZXlzIFtoZWFkIHN1Yi1oZWFkIG1lc3NhZ2VzIGxhc3QtbWVzc2FnZSBmaWxlIGxpbmUgY29sdW1uXX1cbiAgICgtPiBleGNlcHRpb24tZGF0YSBleGNlcHRpb24tPmRpc3BsYXktZGF0YSlcbiAgIG1zZ1xuICAgKGFwcGx5IHN0ciBtZXNzYWdlcyldXG4gIChkaXNwbGF5LWhlYWRzLXVwXG4gICB7OmJhY2tncm91bmRDb2xvciBcInJnYmEoMjU1LCAxNjEsIDE2MSwgMC45NSlcIn1cbiAgIChzdHJcbiAgICAoY2xvc2UtbGluaylcbiAgICAoaGVhZGluZyBoZWFkIHN1Yi1oZWFkKVxuICAgIChmaWxlLXNlbGVjdG9yLWRpdiBmaWxlIGxpbmUgY29sdW1uIG1zZykpKSkpXG4ifSB7OnN5bSBzZXQtc3R5bGUhLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3s6a2V5cyBbY29udGFpbmVyLWVsXX0gc3QtbWFwXSl9LCA6c291cmNlICIoZGVmblxuIHNldC1zdHlsZSFcbiBbezprZXlzIFtjb250YWluZXItZWxdfSBzdC1tYXBdXG4gKG1hcHZcbiAgKGZuIFtbayB2XV0gKGdvYmovc2V0ICguLXN0eWxlIGNvbnRhaW5lci1lbCkgKG5hbWUgaykgdikpXG4gIHN0LW1hcCkpXG4ifSB7OnN5bSBoZWFkaW5nLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyBbW3NdIFtzIHN1Yi1oZWFkXV19LCA6c291cmNlICIoZGVmblxuIGhlYWRpbmdcbiAoW3NdIChoZWFkaW5nIHMgXCJcIikpXG4gKFtzIHN1Yi1oZWFkXVxuICAoc3RyXG4gICBcIjxkaXYgc3R5bGU9XFxcIlwiXG4gICBcImZvbnQtc2l6ZTogMjZweDtcIlxuICAgXCJsaW5lLWhlaWdodDogMjZweDtcIlxuICAgXCJtYXJnaW4tYm90dG9tOiAycHg7XCJcbiAgIFwicGFkZGluZy10b3A6IDFweDtcIlxuICAgXCJcXFwiPlwiXG4gICBzXG4gICBcIiA8c3BhbiBzdHlsZT1cXFwiXCJcbiAgIFwiZGlzcGxheTogaW5saW5lLWJsb2NrO1wiXG4gICBcImZvbnQtc2l6ZTogMTNweDtcIlxuICAgXCJcXFwiPlwiXG4gICBzdWItaGVhZFxuICAgXCI8L3NwYW4+PC9kaXY+XCIpKSlcbiJ9IHs6c3ltIGNsZWFyLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW10pfSwgOnNvdXJjZSAiKGRlZm5cbiBjbGVhclxuIFtdXG4gKGxldFxuICBbYyAoZW5zdXJlLWNvbnRhaW5lcildXG4gICgtPlxuICAgKFByb21pc2UuIChmbiBbciBfXSAoc2V0LXN0eWxlISBjIHs6b3BhY2l0eSBcIjAuMFwifSkgKHIgdHJ1ZSkpKVxuICAgKC50aGVuIChmbiBbX10gKHRpbWVvdXQqIDMwMCkpKVxuICAgKC50aGVuXG4gICAgKGZuXG4gICAgIFtfXVxuICAgICAoc2V0LXN0eWxlIVxuICAgICAgY1xuICAgICAgezp3aWR0aCBcImF1dG9cIixcbiAgICAgICA6aGVpZ2h0IFwiMHB4XCIsXG4gICAgICAgOm1pbkhlaWdodCBcIjBweFwiLFxuICAgICAgIDpwYWRkaW5nIFwiMHB4IDEwcHggMHB4IDcwcHhcIixcbiAgICAgICA6Ym9yZGVyUmFkaXVzIFwiMHB4XCIsXG4gICAgICAgOmJhY2tncm91bmRDb2xvciBcInRyYW5zcGFyZW50XCJ9KSkpXG4gICAoLnRoZW4gKGZuIFtfXSAodGltZW91dCogMjAwKSkpXG4gICAoLnRoZW4gKGZuIFtfXSAoc2V0LWNvbnRlbnQhIGMgXCJcIikpKSkpKVxuIn0gezpzeW0gZXNjYXBlLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuIGVzY2FwZSBbeF0gKGdvb2cuc3RyaW5nL2h0bWxFc2NhcGUgeCkpXG4ifSB7OnN5bSBpbmxpbmUtZXJyb3ItbGluZSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtzdHlsZSBsaW5lLW51bWJlciBsaW5lXSl9LCA6c291cmNlICIoZGVmblxuIGlubGluZS1lcnJvci1saW5lXG4gW3N0eWxlIGxpbmUtbnVtYmVyIGxpbmVdXG4gKHN0clxuICBcIjxzcGFuIHN0eWxlPSdcIlxuICBzdHlsZVxuICBcIic+XCJcbiAgXCI8c3BhbiBzdHlsZT0nY29sb3I6ICM3NTc1NzU7Jz5cIlxuICBsaW5lLW51bWJlclxuICBcIiAgPC9zcGFuPlwiXG4gIChlc2NhcGUgbGluZSlcbiAgXCI8L3NwYW4+XCIpKVxuIn0gezpzeW0gcGFkLWxpbmUtbnVtYmVyLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW24gbGluZS1udW1iZXJdKX0sIDpzb3VyY2UgIihkZWZuXG4gcGFkLWxpbmUtbnVtYmVyXG4gW24gbGluZS1udW1iZXJdXG4gKGxldFxuICBbbGVuIChjb3VudCAoKGZuaWwgc3RyIFwiXCIpIGxpbmUtbnVtYmVyKSldXG4gICgtPlxuICAgKGlmICg8IGxlbiBuKSAoYXBwbHkgc3RyIChyZXBlYXQgKC0gbiBsZW4pIFwiIFwiKSkgXCJcIilcbiAgIChzdHIgbGluZS1udW1iZXIpKSkpXG4ifSB7OnN5bSBnZXQtZGF0YXNldCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtlbF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBnZXQtZGF0YXNldFxuIFtlbF1cbiAoZmlyc3RcbiAgKGtlZXBcbiAgIChmbiBbeF0gKHdoZW4gKC4uIHggLWRhdGFzZXQgLWZpZ3doZWVsRXZlbnQpICguLiB4IC1kYXRhc2V0KSkpXG4gICAodGFrZSA0IChhbmNlc3Rvci1ub2RlcyBlbCkpKSkpXG4ifSB7OnN5bSBmbGF0dGVuLWV4Y2VwdGlvbiwgOm1ldGEge30sIDpzb3VyY2UgIihkZWZcbiBmbGF0dGVuLWV4Y2VwdGlvblxuIChmbiogW3AxX180MjEyMCNdICh0YWtlLXdoaWxlIHNvbWU/IChpdGVyYXRlIDpjYXVzZSBwMV9fNDIxMjAjKSkpKVxuIn0gezpzeW0gZGlzcGxheS1oZWFkcy11cCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtzdHlsZSBtc2ddKX0sIDpzb3VyY2UgIihkZWZuXG4gZGlzcGxheS1oZWFkcy11cFxuIFtzdHlsZSBtc2ddXG4gKFByb21pc2UuXG4gIChmblxuICAgW3Jlc29sdmUgcmVqZWN0XVxuICAgKGxldFxuICAgIFtjIChlbnN1cmUtY29udGFpbmVyKV1cbiAgICAoc2V0LXN0eWxlIVxuICAgICBjXG4gICAgIChtZXJnZVxuICAgICAgezpwYWRkaW5nVG9wIFwiMTBweFwiLFxuICAgICAgIDpwYWRkaW5nQm90dG9tIFwiMTBweFwiLFxuICAgICAgIDp3aWR0aCBcIjEwMCVcIixcbiAgICAgICA6bWluSGVpZ2h0IFwiNjhweFwiLFxuICAgICAgIDpvcGFjaXR5IFwiMS4wXCJ9XG4gICAgICBzdHlsZSkpXG4gICAgKHNldC1jb250ZW50ISBjIG1zZylcbiAgICAoanMvc2V0VGltZW91dFxuICAgICAoZm4gW10gKHNldC1zdHlsZSEgYyB7OmhlaWdodCBcImF1dG9cIn0pIChyZXNvbHZlIHRydWUpKVxuICAgICAzMDApKSkpKVxuIn0gezpzeW0gYmFkLWNvbXBpbGUtc2NyZWVuLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW10pfSwgOnNvdXJjZSAiKGRlZm5cbiBiYWQtY29tcGlsZS1zY3JlZW5cbiBbXVxuIChsZXRcbiAgW2JvZHkgKC0+IChkb20vZ2V0RWxlbWVudHNCeVRhZ05hbWVBbmRDbGFzcyBcImJvZHlcIikgKGFnZXQgMCkpXVxuICAoY2xvc2UtYmFkLWNvbXBpbGUtc2NyZWVuKVxuICAoZG9tL2FwcGVuZFxuICAgYm9keVxuICAgKGRvbS9jcmVhdGVEb21cbiAgICBcImRpdlwiXG4gICAgI2pzIHs6aWQgXCJmaWd3aGVlbEZhaWxTY3JlZW5cIiwgOnN0eWxlIChzdHIgXCJiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI0LCAyNiwgMzgsIDAuOTUpO1wiIFwicG9zaXRpb246IGFic29sdXRlO1wiIFwiei1pbmRleDogOTAwMDtcIiBcIndpZHRoOiAxMDB2dztcIiBcImhlaWdodDogMTAwdmg7XCIgXCJ0b3A6IDBweDsgbGVmdDogMHB4O1wiIFwiZm9udC1mYW1pbHk6IG1vbm9zcGFjZVwiKX1cbiAgICAoZG9tL2NyZWF0ZURvbVxuICAgICBcImRpdlwiXG4gICAgICNqcyB7OmNsYXNzIFwibWVzc2FnZVwiLCA6c3R5bGUgKHN0ciBcImNvbG9yOiAjRkZGNURCO1wiIFwid2lkdGg6IDEwMHZ3O1wiIFwibWFyZ2luOiBhdXRvO1wiIFwibWFyZ2luLXRvcDogMTBweDtcIiBcInRleHQtYWxpZ246IGNlbnRlcjsgXCIgXCJwYWRkaW5nOiAycHggMHB4O1wiIFwiZm9udC1zaXplOiAxM3B4O1wiIFwicG9zaXRpb246IHJlbGF0aXZlXCIpfVxuICAgICAoZG9tL2NyZWF0ZURvbVxuICAgICAgXCJhXCJcbiAgICAgICNqcyB7Om9uY2xpY2sgKGZuIFtlXSAoLnByZXZlbnREZWZhdWx0IGUpIChjbG9zZS1iYWQtY29tcGlsZS1zY3JlZW4pKSwgOmhyZWYgXCJqYXZhc2NyaXB0OlwiLCA6c3R5bGUgXCJwb3NpdGlvbjogYWJzb2x1dGU7IHJpZ2h0OiAxMHB4OyB0b3A6IDEwcHg7IGNvbG9yOiAjNjY2XCJ9XG4gICAgICBcIlhcIilcbiAgICAgKGRvbS9jcmVhdGVEb21cbiAgICAgIFwiaDJcIlxuICAgICAgI2pzIHs6c3R5bGUgXCJjb2xvcjogI0ZGRjVEQlwifVxuICAgICAgXCJGaWd3aGVlbCBTYXlzOiBZb3VyIGNvZGUgZGlkbid0IGNvbXBpbGUuXCIpXG4gICAgIChkb20vY3JlYXRlRG9tXG4gICAgICBcImRpdlwiXG4gICAgICAjanMgezpzdHlsZSBcImZvbnQtc2l6ZTogMTJweFwifVxuICAgICAgKGRvbS9jcmVhdGVEb21cbiAgICAgICBcInBcIlxuICAgICAgICNqcyB7OnN0eWxlIFwiY29sb3I6ICNEMDdEN0Q7XCJ9XG4gICAgICAgXCJLZWVwIHRyeWluZy4gVGhpcyBwYWdlIHdpbGwgYXV0by1yZWZyZXNoIHdoZW4geW91ciBjb2RlIGNvbXBpbGVzIHN1Y2Nlc3NmdWxseS5cIikpKSkpKSlcbiJ9IHs6c3ltIGZvcm1hdC1saW5lLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW21zZyB7OmtleXMgW2ZpbGUgbGluZSBjb2x1bW5dfV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBmb3JtYXQtbGluZVxuIFttc2cgezprZXlzIFtmaWxlIGxpbmUgY29sdW1uXX1dXG4gKGxldFxuICBbbXNnIChnb29nLnN0cmluZy9odG1sRXNjYXBlIG1zZyldXG4gIChpZlxuICAgKG9yIGZpbGUgbGluZSlcbiAgIChmaWxlLXNlbGVjdG9yLWRpdiBmaWxlIGxpbmUgY29sdW1uIG1zZylcbiAgIChzdHIgXCI8ZGl2PlwiIG1zZyBcIjwvZGl2PlwiKSkpKVxuIn0gezpzeW0gZm9ybWF0LWlubGluZS1lcnJvci1saW5lLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW1t0eXAgbGluZS1udW1iZXIgbGluZV1dKX0sIDpzb3VyY2UgIihkZWZuXG4gZm9ybWF0LWlubGluZS1lcnJvci1saW5lXG4gW1t0eXAgbGluZS1udW1iZXIgbGluZV1dXG4gKGNvbmRwXG4gID1cbiAgdHlwXG4gIDpjb2RlLWxpbmVcbiAgKGlubGluZS1lcnJvci1saW5lIFwiY29sb3I6ICM5OTk7XCIgbGluZS1udW1iZXIgbGluZSlcbiAgOmVycm9yLWluLWNvZGVcbiAgKGlubGluZS1lcnJvci1saW5lXG4gICBcImNvbG9yOiAjY2NjOyBmb250LXdlaWdodDogYm9sZDtcIlxuICAgbGluZS1udW1iZXJcbiAgIGxpbmUpXG4gIDplcnJvci1tZXNzYWdlXG4gIChpbmxpbmUtZXJyb3ItbGluZSBcImNvbG9yOiAjRDA3RDdEO1wiIGxpbmUtbnVtYmVyIGxpbmUpXG4gIChpbmxpbmUtZXJyb3ItbGluZSBcImNvbG9yOiAjNjY2O1wiIGxpbmUtbnVtYmVyIGxpbmUpKSlcbiJ9IHs6c3ltIHBhZC1saW5lLW51bWJlcnMsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbaW5saW5lLWVycm9yXSl9LCA6c291cmNlICIoZGVmblxuIHBhZC1saW5lLW51bWJlcnNcbiBbaW5saW5lLWVycm9yXVxuIChsZXRcbiAgW21heC1saW5lLW51bWJlci1sZW5ndGhcbiAgIChjb3VudCAoc3RyIChyZWR1Y2UgbWF4IChtYXAgc2Vjb25kIGlubGluZS1lcnJvcikpKSldXG4gIChtYXBcbiAgIChmbipcbiAgICBbcDFfXzQyMTE5I11cbiAgICAodXBkYXRlLWluXG4gICAgIHAxX180MjExOSNcbiAgICAgWzFdXG4gICAgIChwYXJ0aWFsIHBhZC1saW5lLW51bWJlciBtYXgtbGluZS1udW1iZXItbGVuZ3RoKSkpXG4gICBpbmxpbmUtZXJyb3IpKSlcbiJ9IHs6c3ltIGhlYWRzLXVwLW9uY2xpY2staGFuZGxlciwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtldmVudF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBoZWFkcy11cC1vbmNsaWNrLWhhbmRsZXJcbiBbZXZlbnRdXG4gKGxldFxuICBbZGF0YXNldCAoZ2V0LWRhdGFzZXQgKC4uIGV2ZW50IC10YXJnZXQpKV1cbiAgKC5wcmV2ZW50RGVmYXVsdCBldmVudClcbiAgKHdoZW4gZGF0YXNldCAoaGVhZHMtdXAtZXZlbnQtZGlzcGF0Y2ggZGF0YXNldCkpKSlcbiJ9IHs6c3ltIHNldC1jb250ZW50ISwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt7OmtleXMgW2NvbnRlbnQtYXJlYS1lbF0sIDphcyBjfSBkb20tc3RyXSl9LCA6c291cmNlICIoZGVmblxuIHNldC1jb250ZW50IVxuIFt7OmtleXMgW2NvbnRlbnQtYXJlYS1lbF0sIDphcyBjfSBkb20tc3RyXVxuIChzZXQhICguLWlubmVySFRNTCBjb250ZW50LWFyZWEtZWwpIGRvbS1zdHIpKVxuIn0gezpzeW0gd2FybmluZy1kYXRhLT5kaXNwbGF5LWRhdGEsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbezprZXlzIFtmaWxlIGxpbmUgY29sdW1uIG1lc3NhZ2UgZXJyb3ItaW5saW5lXSwgOmFzIHdhcm5pbmctZGF0YX1dKX0sIDpzb3VyY2UgIihkZWZuXG4gd2FybmluZy1kYXRhLT5kaXNwbGF5LWRhdGFcbiBbezprZXlzIFtmaWxlIGxpbmUgY29sdW1uIG1lc3NhZ2UgZXJyb3ItaW5saW5lXSwgOmFzIHdhcm5pbmctZGF0YX1dXG4gKGxldFxuICBbbGFzdC1tZXNzYWdlXG4gICAoY29uZFxuICAgIChhbmQgZmlsZSBsaW5lKVxuICAgIChzdHIgXCJQbGVhc2Ugc2VlIGxpbmUgXCIgbGluZSBcIiBvZiBmaWxlIFwiIGZpbGUpXG4gICAgZmlsZVxuICAgIChzdHIgXCJQbGVhc2Ugc2VlIFwiIGZpbGUpXG4gICAgOmVsc2VcbiAgICBuaWwpXVxuICB7OmhlYWQgXCJDb21waWxlIFdhcm5pbmdcIixcbiAgIDpzdWItaGVhZCBmaWxlLFxuICAgOm1lc3NhZ2VzXG4gICAoY29uY2F0XG4gICAgKG1hcFxuICAgICAoZm4qIFtwMV9fNDIxMjIjXSAoc3RyIFwiPGRpdj5cIiBwMV9fNDIxMjIjIFwiPC9kaXY+XCIpKVxuICAgICBbKHdoZW5cbiAgICAgICBtZXNzYWdlXG4gICAgICAgKHN0clxuICAgICAgICBcIjxzcGFuIHN0eWxlPVxcXCJmb250LXdlaWdodDpib2xkO1xcXCI+XCJcbiAgICAgICAgKGVzY2FwZSBtZXNzYWdlKVxuICAgICAgICBcIjwvc3Bhbj5cIikpXG4gICAgICAod2hlblxuICAgICAgIChwb3M/IChjb3VudCBlcnJvci1pbmxpbmUpKVxuICAgICAgIChmb3JtYXQtaW5saW5lLWVycm9yIGVycm9yLWlubGluZSkpXSlcbiAgICAod2hlblxuICAgICBsYXN0LW1lc3NhZ2VcbiAgICAgWyhzdHJcbiAgICAgICBcIjxkaXYgc3R5bGU9XFxcImNvbG9yOiAjQUQ0RjRGOyBwYWRkaW5nLXRvcDogM3B4OyBtYXJnaW4tYm90dG9tOiAxMHB4O1xcXCI+XCJcbiAgICAgICAoZXNjYXBlIGxhc3QtbWVzc2FnZSlcbiAgICAgICBcIjwvZGl2PlwiKV0pKSxcbiAgIDpmaWxlIGZpbGUsXG4gICA6bGluZSBsaW5lLFxuICAgOmNvbHVtbiBjb2x1bW59KSlcbiJ9IHs6c3ltIGFwcGVuZC13YXJuaW5nLW1lc3NhZ2UsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbezprZXlzIFttZXNzYWdlIGZpbGUgbGluZSBjb2x1bW5dLCA6YXMgd2FybmluZy1kYXRhfV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBhcHBlbmQtd2FybmluZy1tZXNzYWdlXG4gW3s6a2V5cyBbbWVzc2FnZSBmaWxlIGxpbmUgY29sdW1uXSwgOmFzIHdhcm5pbmctZGF0YX1dXG4gKHdoZW5cbiAgbWVzc2FnZVxuICAobGV0XG4gICBbezprZXlzIFtjb250ZW50LWFyZWEtZWxdfVxuICAgIChlbnN1cmUtY29udGFpbmVyKVxuICAgIGVsXG4gICAgKGRvbS9jcmVhdGVFbGVtZW50IFwiZGl2XCIpXG4gICAgY2hpbGQtY291bnRcbiAgICAoLi1sZW5ndGggKGRvbS9nZXRDaGlsZHJlbiBjb250ZW50LWFyZWEtZWwpKV1cbiAgIChpZlxuICAgICg8IGNoaWxkLWNvdW50IDYpXG4gICAgKGRvXG4gICAgIChzZXQhXG4gICAgICAoLi1pbm5lckhUTUwgZWwpXG4gICAgICAoZm9ybWF0LWxpbmUgKGZvcm1hdC13YXJuaW5nLW1lc3NhZ2Ugd2FybmluZy1kYXRhKSB3YXJuaW5nLWRhdGEpKVxuICAgICAoZG9tL2FwcGVuZCBjb250ZW50LWFyZWEtZWwgZWwpKVxuICAgICh3aGVuLWxldFxuICAgICBbbGFzdC1jaGlsZCAoZG9tL2dldExhc3RFbGVtZW50Q2hpbGQgY29udGVudC1hcmVhLWVsKV1cbiAgICAgKGlmLWxldFxuICAgICAgW21lc3NhZ2UtY291bnQgKGRhdGEvZ2V0IGxhc3QtY2hpbGQgXCJmaWd3aGVlbF9jb3VudFwiKV1cbiAgICAgIChsZXRcbiAgICAgICBbbWVzc2FnZS1jb3VudCAoaW5jIChqcy9wYXJzZUludCBtZXNzYWdlLWNvdW50KSldXG4gICAgICAgKGRhdGEvc2V0IGxhc3QtY2hpbGQgXCJmaWd3aGVlbF9jb3VudFwiIG1lc3NhZ2UtY291bnQpXG4gICAgICAgKHNldCFcbiAgICAgICAgKC4taW5uZXJIVE1MIGxhc3QtY2hpbGQpXG4gICAgICAgIChzdHJcbiAgICAgICAgIG1lc3NhZ2UtY291bnRcbiAgICAgICAgIFwiIG1vcmUgd2FybmluZ3MgaGF2ZSBub3QgYmVlbiBkaXNwbGF5ZWQgLi4uXCIpKSlcbiAgICAgIChkb20vYXBwZW5kXG4gICAgICAgY29udGVudC1hcmVhLWVsXG4gICAgICAgKGRvbS9jcmVhdGVEb21cbiAgICAgICAgXCJkaXZcIlxuICAgICAgICAjanMgezpkYXRhLWZpZ3doZWVsX2NvdW50IDEsIDpzdHlsZSBcIm1hcmdpbi10b3A6IDNweDsgZm9udC13ZWlnaHQ6IGJvbGRcIn1cbiAgICAgICAgXCIxIG1vcmUgd2FybmluZyB0aGF0IGhhcyBub3QgYmVlbiBkaXNwbGF5ZWQgLi4uXCIpKSkpKSkpKVxuIn0gezpzeW0gZGlzcGxheS13YXJuaW5nLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3dhcm5pbmctZGF0YV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBkaXNwbGF5LXdhcm5pbmdcbiBbd2FybmluZy1kYXRhXVxuIChsZXRcbiAgW3s6a2V5cyBbaGVhZCBzdWItaGVhZCBtZXNzYWdlcyBsYXN0LW1lc3NhZ2UgZmlsZSBsaW5lIGNvbHVtbl19XG4gICAoLT4gd2FybmluZy1kYXRhIHdhcm5pbmctZGF0YS0+ZGlzcGxheS1kYXRhKVxuICAgbXNnXG4gICAoYXBwbHkgc3RyIG1lc3NhZ2VzKV1cbiAgKGRpc3BsYXktaGVhZHMtdXBcbiAgIHs6YmFja2dyb3VuZENvbG9yIFwicmdiYSgyNTUsIDIyMCwgMTEwLCAwLjk1KVwifVxuICAgKHN0clxuICAgIChjbG9zZS1saW5rKVxuICAgIChoZWFkaW5nIGhlYWQgc3ViLWhlYWQpXG4gICAgKGZpbGUtc2VsZWN0b3ItZGl2IGZpbGUgbGluZSBjb2x1bW4gbXNnKSkpKSlcbiJ9IHs6c3ltIGZpbGUtc2VsZWN0b3ItZGl2LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2ZpbGUtbmFtZSBsaW5lLW51bWJlciBjb2x1bW4tbnVtYmVyIG1zZ10pfSwgOnNvdXJjZSAiKGRlZm5cbiBmaWxlLXNlbGVjdG9yLWRpdlxuIFtmaWxlLW5hbWUgbGluZS1udW1iZXIgY29sdW1uLW51bWJlciBtc2ddXG4gKHN0clxuICBcIjxkaXYgc3R5bGU9XFxcImN1cnNvcjogcG9pbnRlcjtcXFwiIGRhdGEtZmlnd2hlZWwtZXZlbnQ9XFxcImZpbGUtc2VsZWN0ZWRcXFwiIGRhdGEtZmlsZS1uYW1lPVxcXCJcIlxuICBmaWxlLW5hbWVcbiAgXCJcXFwiIGRhdGEtZmlsZS1saW5lPVxcXCJcIlxuICBsaW5lLW51bWJlclxuICBcIlxcXCIgZGF0YS1maWxlLWNvbHVtbj1cXFwiXCJcbiAgY29sdW1uLW51bWJlclxuICBcIlxcXCI+XCJcbiAgbXNnXG4gIFwiPC9kaXY+XCIpKVxuIn0gezpzeW0gZGlzcGxheS1sb2FkZWQtc3RhcnQsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbXSl9LCA6c291cmNlICIoZGVmblxuIGRpc3BsYXktbG9hZGVkLXN0YXJ0XG4gW11cbiAoZGlzcGxheS1oZWFkcy11cFxuICB7OmJhY2tncm91bmRDb2xvciBcInJnYmEoMjExLDIzNCwxNzIsMS4wKVwiLFxuICAgOndpZHRoIFwiNjhweFwiLFxuICAgOmhlaWdodCBcIjY4cHhcIixcbiAgIDpwYWRkaW5nTGVmdCBcIjBweFwiLFxuICAgOnBhZGRpbmdSaWdodCBcIjBweFwiLFxuICAgOmJvcmRlclJhZGl1cyBcIjM1cHhcIn1cbiAgXCJcIikpXG4ifSB7OnN5bSBlbnN1cmUtY29udGFpbmVyLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW10pfSwgOnNvdXJjZSAiKGRlZm5cbiBlbnN1cmUtY29udGFpbmVyXG4gW11cbiAobGV0XG4gIFtjb250LWlkXG4gICBcImZpZ3doZWVsLWhlYWRzLXVwLWNvbnRhaW5lclwiXG4gICBjb250ZW50LWlkXG4gICBcImZpZ3doZWVsLWhlYWRzLXVwLWNvbnRlbnQtYXJlYVwiXVxuICAoaWYtbm90XG4gICAoLnF1ZXJ5U2VsZWN0b3IganMvZG9jdW1lbnQgKHN0ciBcIiNcIiBjb250LWlkKSlcbiAgIChsZXRcbiAgICBbZWxcbiAgICAgKG5vZGVcbiAgICAgIDpkaXZcbiAgICAgIHs6aWQgY29udC1pZCxcbiAgICAgICA6c3R5bGVcbiAgICAgICAoc3RyXG4gICAgICAgIFwiLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlLWluLW91dDtcIlxuICAgICAgICBcIi1tb3otdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZS1pbi1vdXQ7XCJcbiAgICAgICAgXCItby10cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlLWluLW91dDtcIlxuICAgICAgICBcInRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2UtaW4tb3V0O1wiXG4gICAgICAgIFwiZm9udC1zaXplOiAxM3B4O1wiXG4gICAgICAgIFwiYm9yZGVyLXRvcDogMXB4IHNvbGlkICNmNWY1ZjU7XCJcbiAgICAgICAgXCJib3gtc2hhZG93OiAwcHggMHB4IDFweCAjYWFhYWFhO1wiXG4gICAgICAgIFwibGluZS1oZWlnaHQ6IDE4cHg7XCJcbiAgICAgICAgXCJjb2xvcjogIzMzMztcIlxuICAgICAgICBcImZvbnQtZmFtaWx5OiBtb25vc3BhY2U7XCJcbiAgICAgICAgXCJwYWRkaW5nOiAwcHggMTBweCAwcHggNzBweDtcIlxuICAgICAgICBcInBvc2l0aW9uOiBmaXhlZDtcIlxuICAgICAgICBcImJvdHRvbTogMHB4O1wiXG4gICAgICAgIFwibGVmdDogMHB4O1wiXG4gICAgICAgIFwiaGVpZ2h0OiAwcHg7XCJcbiAgICAgICAgXCJvcGFjaXR5OiAwLjA7XCJcbiAgICAgICAgXCJib3gtc2l6aW5nOiBib3JkZXItYm94O1wiXG4gICAgICAgIFwiei1pbmRleDogMTAwMDA7XCJcbiAgICAgICAgXCJ0ZXh0LWFsaWduOiBsZWZ0O1wiKX0pXVxuICAgIChzZXQhICguLW9uY2xpY2sgZWwpIGhlYWRzLXVwLW9uY2xpY2staGFuZGxlcilcbiAgICAoc2V0ISAoLi1pbm5lckhUTUwgZWwpIGNsanMtbG9nby1zdmcpXG4gICAgKC5hcHBlbmRDaGlsZCBlbCAobm9kZSA6ZGl2IHs6aWQgY29udGVudC1pZH0pKVxuICAgICgtPiAoLi1ib2R5IGpzL2RvY3VtZW50KSAoLmFwcGVuZENoaWxkIGVsKSkpKVxuICB7OmNvbnRhaW5lci1lbCAoLmdldEVsZW1lbnRCeUlkIGpzL2RvY3VtZW50IGNvbnQtaWQpLFxuICAgOmNvbnRlbnQtYXJlYS1lbCAoLmdldEVsZW1lbnRCeUlkIGpzL2RvY3VtZW50IGNvbnRlbnQtaWQpfSkpXG4ifSB7OnN5bSBub2RlLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3QgYXR0cnMgJiBjaGlsZHJlbl0pfSwgOnNvdXJjZSAiKGRlZm5cbiBub2RlXG4gW3QgYXR0cnMgJiBjaGlsZHJlbl1cbiAobGV0XG4gIFtlICguY3JlYXRlRWxlbWVudCBqcy9kb2N1bWVudCAobmFtZSB0KSldXG4gIChkb3NlcSBbayAoa2V5cyBhdHRycyldICguc2V0QXR0cmlidXRlIGUgKG5hbWUgaykgKGdldCBhdHRycyBrKSkpXG4gIChkb3NlcSBbY2ggY2hpbGRyZW5dICguYXBwZW5kQ2hpbGQgZSBjaCkpXG4gIGUpKVxuIn0gezpzeW0gZXhjZXB0aW9uLT5kaXNwbGF5LWRhdGEsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbezprZXlzIFt0YWcgbWVzc2FnZSBsaW5lIGNvbHVtbiB0eXBlIGZpbGUgZGF0YSBlcnJvci1pbmxpbmVdLCA6YXMgZXhjZXB0aW9ufV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBleGNlcHRpb24tPmRpc3BsYXktZGF0YVxuIFt7OmtleXMgW3RhZyBtZXNzYWdlIGxpbmUgY29sdW1uIHR5cGUgZmlsZSBkYXRhIGVycm9yLWlubGluZV0sXG4gICA6YXMgZXhjZXB0aW9ufV1cbiAobGV0XG4gIFtsYXN0LW1lc3NhZ2VcbiAgIChjb25kXG4gICAgKGFuZCBmaWxlIGxpbmUpXG4gICAgKHN0ciBcIlBsZWFzZSBzZWUgbGluZSBcIiBsaW5lIFwiIG9mIGZpbGUgXCIgZmlsZSlcbiAgICBmaWxlXG4gICAgKHN0ciBcIlBsZWFzZSBzZWUgXCIgZmlsZSlcbiAgICA6ZWxzZVxuICAgIG5pbClcbiAgIGRhdGEtZm9yLWRpc3BsYXlcbiAgICh3aGVuLW5vdFxuICAgICgje1wiY2xqcy9hbmFseXNpcy1lcnJvclwiXG4gICAgICAgXCJ0b29scy5yZWFkZXIvZW9mLXJlYWRlci1leGNlcHRpb25cIlxuICAgICAgIFwidG9vbHMucmVhZGVyL3JlYWRlci1leGNlcHRpb25cIn1cbiAgICAgdGFnKVxuICAgIGRhdGEpXVxuICB7OmhlYWRcbiAgIChjb25kcFxuICAgID1cbiAgICB0YWdcbiAgICBcImNsai9jb21waWxlci1leGNlcHRpb25cIlxuICAgIFwiQ291bGRuJ3QgbG9hZCBDbG9qdXJlIGZpbGVcIlxuICAgIFwiY2xqcy9taXNzaW5nLXJlcXVpcmVkLW5zXCJcbiAgICBcIkNvdWxkIG5vdCBGaW5kIE5hbWVzcGFjZVwiXG4gICAgXCJjbGpzL2FuYWx5c2lzLWVycm9yXCJcbiAgICBcIkNvdWxkIG5vdCBBbmFseXplXCJcbiAgICBcInRvb2xzLnJlYWRlci9lb2YtcmVhZGVyLWV4Y2VwdGlvblwiXG4gICAgXCJDb3VsZCBub3QgUmVhZFwiXG4gICAgXCJ0b29scy5yZWFkZXIvcmVhZGVyLWV4Y2VwdGlvblwiXG4gICAgXCJDb3VsZCBub3QgUmVhZFwiXG4gICAgXCJjbGpzL2dlbmVyYWwtY29tcGlsZS1mYWlsdXJlXCJcbiAgICBcIkNvdWxkIG5vdCBDb21waWxlXCJcbiAgICBcIkNvbXBpbGUgRXhjZXB0aW9uXCIpLFxuICAgOnN1Yi1oZWFkIGZpbGUsXG4gICA6bWVzc2FnZXNcbiAgIChjb25jYXRcbiAgICAobWFwXG4gICAgIChmbiogW3AxX180MjEyMSNdIChzdHIgXCI8ZGl2PlwiIHAxX180MjEyMSMgXCI8L2Rpdj5cIikpXG4gICAgIChmaWx0ZXJcbiAgICAgIChjb21wbGVtZW50IHN0cmluZy9ibGFuaz8pXG4gICAgICBbKGNvbmQtPlxuICAgICAgICBcIlwiXG4gICAgICAgIHR5cGVcbiAgICAgICAgKHN0ciAoZXNjYXBlIHR5cGUpKVxuICAgICAgICAoYW5kIHR5cGUgbWVzc2FnZSlcbiAgICAgICAgKHN0ciBcIjogXCIpXG4gICAgICAgIG1lc3NhZ2VcbiAgICAgICAgKHN0clxuICAgICAgICAgXCI8c3BhbiBzdHlsZT1cXFwiZm9udC13ZWlnaHQ6Ym9sZDtcXFwiPlwiXG4gICAgICAgICAoZXNjYXBlIG1lc3NhZ2UpXG4gICAgICAgICBcIjwvc3Bhbj5cIikpXG4gICAgICAgKHdoZW5cbiAgICAgICAgKGFuZCAobm90IChwb3M/IChjb3VudCBlcnJvci1pbmxpbmUpKSkgZGF0YS1mb3ItZGlzcGxheSlcbiAgICAgICAgKHN0clxuICAgICAgICAgXCI8cHJlIHN0eWxlPVxcXCJ3aGl0ZS1zcGFjZTogcHJlLXdyYXBcXFwiPlwiXG4gICAgICAgICAoZ29vZy5zdHJpbmcvdHJpbVJpZ2h0XG4gICAgICAgICAgKHdpdGgtb3V0LXN0ciAocHAvcHByaW50IGRhdGEtZm9yLWRpc3BsYXkpKSlcbiAgICAgICAgIFwiPC9wcmU+XCIpKVxuICAgICAgICh3aGVuXG4gICAgICAgIChwb3M/IChjb3VudCBlcnJvci1pbmxpbmUpKVxuICAgICAgICAoZm9ybWF0LWlubGluZS1lcnJvciBlcnJvci1pbmxpbmUpKV0pKVxuICAgICh3aGVuXG4gICAgIGxhc3QtbWVzc2FnZVxuICAgICBbKHN0clxuICAgICAgIFwiPGRpdiBzdHlsZT1cXFwiY29sb3I6ICNBRDRGNEY7IHBhZGRpbmctdG9wOiAzcHg7XFxcIj5cIlxuICAgICAgIChlc2NhcGUgbGFzdC1tZXNzYWdlKVxuICAgICAgIFwiPC9kaXY+XCIpXSkpLFxuICAgOmZpbGUgZmlsZSxcbiAgIDpsaW5lIGxpbmUsXG4gICA6Y29sdW1uIGNvbHVtbn0pKVxuIn0gezpzeW0gY2xqcy1sb2dvLXN2ZywgOm1ldGEge30sIDpzb3VyY2UgIihkZWZcbiBjbGpzLWxvZ28tc3ZnXG4gXCI8P3htbCB2ZXJzaW9uPScxLjAnIGVuY29kaW5nPSd1dGYtOCc/PlxcbjwhRE9DVFlQRSBzdmcgUFVCTElDICctLy9XM0MvL0RURCBTVkcgMS4xLy9FTicgJ2h0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCc+XFxuPHN2ZyB3aWR0aD0nNDlweCcgaGVpZ2h0PSc0OXB4JyBzdHlsZT0ncG9zaXRpb246YWJzb2x1dGU7IHRvcDo5cHg7IGxlZnQ6IDEwcHg7JyB2ZXJzaW9uPScxLjEnXFxuICB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHhtbG5zOnhsaW5rPSdodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rJyB4PScwcHgnIHk9JzBweCdcXG4gIHZpZXdCb3g9JzAgMCA0MjggNDI4JyBlbmFibGUtYmFja2dyb3VuZD0nbmV3IDAgMCA0MjggNDI4JyB4bWw6c3BhY2U9J3ByZXNlcnZlJz5cXG48Y2lyY2xlIGZpbGw9JyNmZmYnIGN4PScyMTMnIGN5PScyMTQnIHI9JzIxMycgLz5cXG48Zz5cXG48cGF0aCBmaWxsPScjOTZDQTRCJyBkPSdNMTIyLDI2Ni42Yy0xMi43LDAtMjIuMy0zLjctMjguOS0xMS4xYy02LjYtNy40LTkuOS0xOC05LjktMzEuOGMwLTE0LjEsMy40LTI0LjksMTAuMy0zMi41XFxuICBzMTYuOC0xMS40LDI5LjktMTEuNGM4LjgsMCwxNi44LDEuNiwyMy44LDQuOWwtNS40LDE0LjNjLTcuNS0yLjktMTMuNy00LjQtMTguNi00LjRjLTE0LjUsMC0yMS43LDkuNi0yMS43LDI4LjhcXG4gIGMwLDkuNCwxLjgsMTYuNCw1LjQsMjEuMmMzLjYsNC43LDguOSw3LjEsMTUuOSw3LjFjNy45LDAsMTUuNC0yLDIyLjUtNS45djE1LjVjLTMuMiwxLjktNi42LDMuMi0xMC4yLDRcXG4gIEMxMzEuNSwyNjYuMiwxMjcuMSwyNjYuNiwxMjIsMjY2LjZ6Jy8+XFxuPHBhdGggZmlsbD0nIzk2Q0E0QicgZD0nTTE5NC40LDI2NS4xaC0xNy44VjE0Ny4zaDE3LjhWMjY1LjF6Jy8+XFxuPHBhdGggZmlsbD0nIzVGN0ZCRicgZD0nTTIyMi45LDMwMi4zYy01LjMsMC05LjgtMC42LTEzLjMtMS45di0xNC4xYzMuNCwwLjksNi45LDEuNCwxMC41LDEuNGM3LjYsMCwxMS40LTQuMywxMS40LTEyLjl2LTkzLjVoMTcuOFxcbiAgdjk0LjdjMCw4LjYtMi4zLDE1LjItNi44LDE5LjZDMjM3LjksMzAwLjEsMjMxLjQsMzAyLjMsMjIyLjksMzAyLjN6IE0yMzAuNCwxNTkuMmMwLTMuMiwwLjktNS42LDIuNi03LjNjMS43LTEuNyw0LjItMi42LDcuNS0yLjZcXG4gIGMzLjEsMCw1LjYsMC45LDcuMywyLjZjMS43LDEuNywyLjYsNC4yLDIuNiw3LjNjMCwzLTAuOSw1LjQtMi42LDcuMmMtMS43LDEuNy00LjIsMi42LTcuMywyLjZjLTMuMiwwLTUuNy0wLjktNy41LTIuNlxcbiAgQzIzMS4yLDE2NC42LDIzMC40LDE2Mi4yLDIzMC40LDE1OS4yeicvPlxcbjxwYXRoIGZpbGw9JyM1RjdGQkYnIGQ9J00zNDIuNSwyNDEuM2MwLDguMi0zLDE0LjQtOC45LDE4LjhjLTYsNC40LTE0LjUsNi41LTI1LjYsNi41Yy0xMS4yLDAtMjAuMS0xLjctMjYuOS01LjF2LTE1LjRcXG4gIGM5LjgsNC41LDE5LDYuOCwyNy41LDYuOGMxMC45LDAsMTYuNC0zLjMsMTYuNC05LjljMC0yLjEtMC42LTMuOS0xLjgtNS4zYy0xLjItMS40LTMuMi0yLjktNi00LjRjLTIuOC0xLjUtNi42LTMuMi0xMS42LTUuMVxcbiAgYy05LjYtMy43LTE2LjItNy41LTE5LjYtMTEuMmMtMy40LTMuNy01LjEtOC42LTUuMS0xNC41YzAtNy4yLDIuOS0xMi43LDguNy0xNi43YzUuOC00LDEzLjYtNS45LDIzLjYtNS45YzkuOCwwLDE5LjEsMiwyNy45LDZcXG4gIGwtNS44LDEzLjRjLTktMy43LTE2LjYtNS42LTIyLjgtNS42Yy05LjQsMC0xNC4xLDIuNy0xNC4xLDhjMCwyLjYsMS4yLDQuOCwzLjcsNi43YzIuNCwxLjgsNy44LDQuMywxNiw3LjVcXG4gIGM2LjksMi43LDExLjksNS4xLDE1LjEsNy4zYzMuMSwyLjIsNS40LDQuOCw3LDcuN0MzNDEuNywyMzMuNywzNDIuNSwyMzcuMiwzNDIuNSwyNDEuM3onLz5cXG48L2c+XFxuPHBhdGggZmlsbD0nIzk2Q0E0Qicgc3Ryb2tlPScjOTZDQTRCJyBzdHJva2Utd2lkdGg9JzYnIHN0cm9rZS1taXRlcmxpbWl0PScxMCcgZD0nTTE5NywzOTIuN2MtOTEuMi04LjEtMTYzLTg1LTE2My0xNzguM1xcbiAgUzEwNS44LDQ0LjMsMTk3LDM2LjJWMTYuMWMtMTAyLjMsOC4yLTE4Myw5NC0xODMsMTk4LjRzODAuNywxOTAuMiwxODMsMTk4LjRWMzkyLjd6Jy8+XFxuPHBhdGggZmlsbD0nIzVGN0ZCRicgc3Ryb2tlPScjNUY3RkJGJyBzdHJva2Utd2lkdGg9JzYnIHN0cm9rZS1taXRlcmxpbWl0PScxMCcgZD0nTTIyOSwxNi4xdjIwLjFjOTEuMiw4LjEsMTYzLDg1LDE2MywxNzguM1xcbiAgcy03MS44LDE3MC4yLTE2MywxNzguM3YyMC4xYzEwMi4zLTguMiwxODMtOTQsMTgzLTE5OC40UzMzMS4zLDI0LjMsMjI5LDE2LjF6Jy8+XFxuPC9zdmc+XCIpXG4ifSB7OnN5bSB0aW1lb3V0KiwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt0aW1lLW1zXSl9LCA6c291cmNlICIoZGVmblxuIHRpbWVvdXQqXG4gW3RpbWUtbXNdXG4gKFByb21pc2UuXG4gIChmbiBbcmVzb2x2ZSBfXSAoanMvc2V0VGltZW91dCAoZm4qIFtdIChyZXNvbHZlIHRydWUpKSB0aW1lLW1zKSkpKVxuIn0gezpzeW0gY2xvc2UtYmFkLWNvbXBpbGUtc2NyZWVuLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW10pfSwgOnNvdXJjZSAiKGRlZm5cbiBjbG9zZS1iYWQtY29tcGlsZS1zY3JlZW5cbiBbXVxuICh3aGVuLWxldFxuICBbZWwgKGpzL2RvY3VtZW50LmdldEVsZW1lbnRCeUlkIFwiZmlnd2hlZWxGYWlsU2NyZWVuXCIpXVxuICAoZG9tL3JlbW92ZU5vZGUgZWwpKSlcbiJ9IHs6c3ltIGZvcm1hdC1pbmxpbmUtZXJyb3IsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbaW5saW5lLWVycm9yXSl9LCA6c291cmNlICIoZGVmblxuIGZvcm1hdC1pbmxpbmUtZXJyb3JcbiBbaW5saW5lLWVycm9yXVxuICh3aGVuXG4gIChub3QtZW1wdHkgaW5saW5lLWVycm9yKVxuICAobGV0XG4gICBbbGluZXNcbiAgICAobWFwIGZvcm1hdC1pbmxpbmUtZXJyb3ItbGluZSAocGFkLWxpbmUtbnVtYmVycyBpbmxpbmUtZXJyb3IpKV1cbiAgIChzdHJcbiAgICBcIjxwcmUgc3R5bGU9J3doaXRlc3BhY2U6cHJlOyBvdmVyZmxvdy14OiBzY3JvbGw7IGRpc3BsYXk6YmxvY2s7IGZvbnQtZmFtaWx5Om1vbm9zcGFjZTsgZm9udC1zaXplOjAuOGVtOyBib3JkZXItcmFkaXVzOiAzcHg7XCJcbiAgICBcIiBsaW5lLWhlaWdodDogMS4xZW07IHBhZGRpbmc6IDEwcHg7IGJhY2tncm91bmQtY29sb3I6IHJnYigyNCwyNiwzOCk7IG1hcmdpbi1yaWdodDogNXB4Jz5cIlxuICAgIChzdHJpbmcvam9pbiBcIlxcblwiIGxpbmVzKVxuICAgIFwiPC9wcmU+XCIpKSkpXG4ifSB7OnN5bSBmb3JtYXQtd2FybmluZy1tZXNzYWdlLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3s6a2V5cyBbbWVzc2FnZSBmaWxlIGxpbmUgY29sdW1uXSwgOmFzIHdhcm5pbmctZGF0YX1dKX0sIDpzb3VyY2UgIihkZWZuXG4gZm9ybWF0LXdhcm5pbmctbWVzc2FnZVxuIFt7OmtleXMgW21lc3NhZ2UgZmlsZSBsaW5lIGNvbHVtbl0sIDphcyB3YXJuaW5nLWRhdGF9XVxuIChjb25kLT5cbiAgbWVzc2FnZVxuICBsaW5lXG4gIChzdHIgXCIgYXQgbGluZSBcIiBsaW5lKVxuICAoYW5kIGxpbmUgY29sdW1uKVxuICAoc3RyIFwiLCBjb2x1bW4gXCIgY29sdW1uKVxuICBmaWxlXG4gIChzdHIgXCIgaW4gZmlsZSBcIiBmaWxlKSkpXG4ifSB7OnN5bSBkaXNwbGF5LXN5c3RlbS13YXJuaW5nLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2hlYWRlciBtc2ddKX0sIDpzb3VyY2UgIihkZWZuXG4gZGlzcGxheS1zeXN0ZW0td2FybmluZ1xuIFtoZWFkZXIgbXNnXVxuIChkaXNwbGF5LWhlYWRzLXVwXG4gIHs6YmFja2dyb3VuZENvbG9yIFwicmdiYSgyNTUsIDIyMCwgMTEwLCAwLjk1KVwifVxuICAoc3RyIChjbG9zZS1saW5rKSAoaGVhZGluZyBoZWFkZXIpIFwiPGRpdj5cIiBtc2cgXCI8L2Rpdj5cIikpKVxuIn0gezpzeW0gY2xvc2UtbGluaywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtdKX0sIDpzb3VyY2UgIihkZWZuXG4gY2xvc2UtbGlua1xuIFtdXG4gKHN0clxuICBcIjxhIHN0eWxlPVxcXCJcIlxuICBcImZsb2F0OiByaWdodDtcIlxuICBcImZvbnQtc2l6ZTogMThweDtcIlxuICBcInRleHQtZGVjb3JhdGlvbjogbm9uZTtcIlxuICBcInRleHQtYWxpZ246IHJpZ2h0O1wiXG4gIFwid2lkdGg6IDMwcHg7XCJcbiAgXCJoZWlnaHQ6IDMwcHg7XCJcbiAgXCJjb2xvcjogcmdiYSg4NCw4NCw4NCwgMC41KTtcIlxuICBcIlxcXCIgaHJlZj1cXFwiI1xcXCIgIGRhdGEtZmlnd2hlZWwtZXZlbnQ9XFxcImNsb3NlLWhlYWRzLXVwXFxcIj5cIlxuICBcInhcIlxuICBcIjwvYT5cIikpXG4ifSB7OnN5bSBhbmNlc3Rvci1ub2RlcywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtlbF0pfSwgOnNvdXJjZSAiKGRlZm4gYW5jZXN0b3Itbm9kZXMgW2VsXSAoaXRlcmF0ZSAoZm4gW2VdICguLXBhcmVudE5vZGUgZSkpIGVsKSlcbiJ9IHs6c3ltIGZsYXNoLWxvYWRlZCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtdKX0sIDpzb3VyY2UgIihkZWZuXG4gZmxhc2gtbG9hZGVkXG4gW11cbiAoLT5cbiAgKGRpc3BsYXktbG9hZGVkLXN0YXJ0KVxuICAoLnRoZW4gKGZuIFtfXSAodGltZW91dCogNDAwKSkpXG4gICgudGhlbiAoZm4gW19dIChjbGVhcikpKSkpXG4ifSksIGNsanMuY29yZS5hc3luYy5pbXBsLmJ1ZmZlcnMgKHs6c3ltIGFjb3B5LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3NyYyBzcmMtc3RhcnQgZGVzdCBkZXN0LXN0YXJ0IGxlbl0pfSwgOnNvdXJjZSAiKGRlZm5cbiBhY29weVxuIFtzcmMgc3JjLXN0YXJ0IGRlc3QgZGVzdC1zdGFydCBsZW5dXG4gKGxvb3BcbiAgW2NudCAwXVxuICAod2hlblxuICAgKDwgY250IGxlbilcbiAgIChhc2V0IGRlc3QgKCsgZGVzdC1zdGFydCBjbnQpIChhZ2V0IHNyYyAoKyBzcmMtc3RhcnQgY250KSkpXG4gICAocmVjdXIgKGluYyBjbnQpKSkpKVxuIn0gezpzeW0gcmluZy1idWZmZXIsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbbl0pfSwgOnNvdXJjZSAiKGRlZm5cbiByaW5nLWJ1ZmZlclxuIFtuXVxuIChhc3NlcnQgKD4gbiAwKSBcIkNhbid0IGNyZWF0ZSBhIHJpbmcgYnVmZmVyIG9mIHNpemUgMFwiKVxuIChSaW5nQnVmZmVyLiAwIDAgMCAobWFrZS1hcnJheSBuKSkpXG4ifSB7OnN5bSBmaXhlZC1idWZmZXIsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbbl0pfSwgOnNvdXJjZSAiKGRlZm4gZml4ZWQtYnVmZmVyIFtuXSAoRml4ZWRCdWZmZXIuIChyaW5nLWJ1ZmZlciBuKSBuKSlcbiJ9IHs6c3ltIGRyb3BwaW5nLWJ1ZmZlciwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtuXSl9LCA6c291cmNlICIoZGVmbiBkcm9wcGluZy1idWZmZXIgW25dIChEcm9wcGluZ0J1ZmZlci4gKHJpbmctYnVmZmVyIG4pIG4pKVxuIn0gezpzeW0gc2xpZGluZy1idWZmZXIsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbbl0pfSwgOnNvdXJjZSAiKGRlZm4gc2xpZGluZy1idWZmZXIgW25dIChTbGlkaW5nQnVmZmVyLiAocmluZy1idWZmZXIgbikgbikpXG4ifSB7OnN5bSBwcm9taXNlLWJ1ZmZlciwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtdKX0sIDpzb3VyY2UgIihkZWZuIHByb21pc2UtYnVmZmVyIFtdIChQcm9taXNlQnVmZmVyLiBOTy1WQUwpKVxuIn0pLCBjbGpzLmFuYWx5emVyLnBhc3Nlcy5hbmQtb3IgKHs6c3ltIHJlbW92ZS1sb29wLWxldCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtmbi1hc3QgbG9jYWxdKX0sIDpzb3VyY2UgIihkZWZuXG4gcmVtb3ZlLWxvb3AtbGV0XG4gW2ZuLWFzdCBsb2NhbF1cbiAodXBkYXRlXG4gIGZuLWFzdFxuICA6bG9vcC1sZXRzXG4gIChmblxuICAgW2xvb3AtbGV0c11cbiAgIChtYXBcbiAgICAoZm5cbiAgICAgW21dXG4gICAgICh1cGRhdGVcbiAgICAgIG1cbiAgICAgIDpwYXJhbXNcbiAgICAgIChmblxuICAgICAgIFt4c11cbiAgICAgICAocmVtb3ZlIChmbiogW3AxX180MzE4OSNdICg9IGxvY2FsICg6bmFtZSBwMV9fNDMxODkjKSkpIHhzKSkpKVxuICAgIGxvb3AtbGV0cykpKSlcbiJ9IHs6c3ltIHNpbXBsZS1vcHMsIDptZXRhIHt9LCA6c291cmNlICIoZGVmXG4gc2ltcGxlLW9wc1xuICN7OmpzXG4gICA6aG9zdC1maWVsZFxuICAgOmNvbnN0XG4gICA6dmFyXG4gICA6cXVvdGVcbiAgIDppbnZva2VcbiAgIDpqcy12YXJcbiAgIDpob3N0LWNhbGxcbiAgIDpsb2NhbH0pXG4ifSB7OnN5bSBvcHRpbWl6ZS1vciwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFthc3RdKX0sIDpzb3VyY2UgIihkZWZuXG4gb3B0aW1pemUtb3JcbiBbYXN0XVxuIChsZXRcbiAgW3s6a2V5cyBbaW5pdCBuYW1lXX0gKC0+IGFzdCA6YmluZGluZ3MgZmlyc3QpXVxuICB7Om9wIDpqcyxcbiAgIDplbnYgKDplbnYgYXN0KSxcbiAgIDpzZWdzIFtcIigoXCIgXCIpIHx8IChcIiBcIikpXCJdLFxuICAgOmFyZ3NcbiAgIFtpbml0XG4gICAgKHBhc3Nlcy93YWxrXG4gICAgICgtPmV4cHItZW52ICgtPiBhc3QgOmJvZHkgOnJldCA6ZWxzZSkpXG4gICAgIFsocmVtb3ZlLWxvY2FsLXBhc3MgbmFtZSldKV0sXG4gICA6Zm9ybSAoOmZvcm0gYXN0KSxcbiAgIDpjaGlsZHJlbiBbOmFyZ3NdLFxuICAgOnRhZyAnYm9vbGVhbn0pKVxuIn0gezpzeW0gbm8tc3RhdGVtZW50cz8sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbbGV0LWFzdF0pfSwgOnNvdXJjZSAiKGRlZm4gbm8tc3RhdGVtZW50cz8gW2xldC1hc3RdICg9IFtdICgtPiBsZXQtYXN0IDpib2R5IDpzdGF0ZW1lbnRzKSkpXG4ifSB7OnN5bSBzaW1wbGUtb3I/LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2FzdF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBzaW1wbGUtb3I/XG4gW2FzdF1cbiAoYW5kIChzaW1wbGUtdGVzdC1iaW5kaW5nLWxldD8gYXN0KSAodGVzdD10aGVuPyAoLT4gYXN0IDpib2R5IDpyZXQpKSkpXG4ifSB7OnN5bSB0ZXN0PXRoZW4/LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2lmLWFzdF0pfSwgOnNvdXJjZSAiKGRlZm5cbiB0ZXN0PXRoZW4/XG4gW2lmLWFzdF1cbiAoPSAoZGlzc29jICg6dGVzdCBpZi1hc3QpIDplbnYpIChkaXNzb2MgKDp0aGVuIGlmLWFzdCkgOmVudikpKVxuIn0gezpzeW0gdGVzdD1lbHNlPywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtpZi1hc3RdKX0sIDpzb3VyY2UgIihkZWZuXG4gdGVzdD1lbHNlP1xuIFtpZi1hc3RdXG4gKD0gKGRpc3NvYyAoOnRlc3QgaWYtYXN0KSA6ZW52KSAoZGlzc29jICg6ZWxzZSBpZi1hc3QpIDplbnYpKSlcbiJ9IHs6c3ltIHNpbXBsZS10ZXN0LWJpbmRpbmctbGV0PywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFthc3RdKX0sIDpzb3VyY2UgIihkZWZuXG4gc2ltcGxlLXRlc3QtYmluZGluZy1sZXQ/XG4gW2FzdF1cbiAoYW5kXG4gIChzaW5nbGUtYmluZGluZy1sZXQ/IGFzdClcbiAgKG5vLXN0YXRlbWVudHM/IGFzdClcbiAgKHNpbXBsZS10ZXN0LWV4cHI/ICgtPiBhc3QgOmJpbmRpbmdzIGZpcnN0IDppbml0KSlcbiAgKHJldHVybnMtaWY/IGFzdCkpKVxuIn0gezpzeW0gc2ltcGxlLW9wPywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFthc3RdKX0sIDpzb3VyY2UgIihkZWZuIHNpbXBsZS1vcD8gW2FzdF0gKGNvbnRhaW5zPyBzaW1wbGUtb3BzICg6b3AgYXN0KSkpXG4ifSB7OnN5bSBvcHRpbWl6YWJsZS1hbmQ/LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2FzdF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBvcHRpbWl6YWJsZS1hbmQ/XG4gW2FzdF1cbiAoYW5kIChzaW1wbGUtYW5kPyBhc3QpIChzaW1wbGUtdGVzdC1leHByPyAoLT4gYXN0IDpib2R5IDpyZXQgOnRoZW4pKSkpXG4ifSB7OnN5bSBvcHRpbWl6YWJsZS1vcj8sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbYXN0XSl9LCA6c291cmNlICIoZGVmblxuIG9wdGltaXphYmxlLW9yP1xuIFthc3RdXG4gKGFuZCAoc2ltcGxlLW9yPyBhc3QpIChzaW1wbGUtdGVzdC1leHByPyAoLT4gYXN0IDpib2R5IDpyZXQgOmVsc2UpKSkpXG4ifSB7OnN5bSAtPmV4cHItZW52LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2FzdF0pfSwgOnNvdXJjZSAiKGRlZm4gLT5leHByLWVudiBbYXN0XSAoYXNzb2MtaW4gYXN0IFs6ZW52IDpjb250ZXh0XSA6ZXhwcikpXG4ifSB7OnN5bSByZXR1cm5zLWlmPywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtsZXQtYXN0XSl9LCA6c291cmNlICIoZGVmbiByZXR1cm5zLWlmPyBbbGV0LWFzdF0gKD0gOmlmICgtPiBsZXQtYXN0IDpib2R5IDpyZXQgOm9wKSkpXG4ifSB7OnN5bSByZW1vdmUtbG9jYWwtcGFzcywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtsb2NhbF0pfSwgOnNvdXJjZSAiKGRlZm5cbiByZW1vdmUtbG9jYWwtcGFzc1xuIFtsb2NhbF1cbiAoZm5cbiAgW2VudiBhc3Qgb3B0c11cbiAgKGNvbmQtPlxuICAgKHVwZGF0ZS1pbiBhc3QgWzplbnYgOmxvY2Fsc10gZGlzc29jIGxvY2FsKVxuICAgKD0gOmZuICg6b3AgYXN0KSlcbiAgIChyZW1vdmUtbG9vcC1sZXQgbG9jYWwpKSkpXG4ifSB7OnN5bSBzaW1wbGUtYW5kPywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFthc3RdKX0sIDpzb3VyY2UgIihkZWZuXG4gc2ltcGxlLWFuZD9cbiBbYXN0XVxuIChhbmQgKHNpbXBsZS10ZXN0LWJpbmRpbmctbGV0PyBhc3QpICh0ZXN0PWVsc2U/ICgtPiBhc3QgOmJvZHkgOnJldCkpKSlcbiJ9IHs6c3ltIG9wdGltaXplLWFuZCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFthc3RdKX0sIDpzb3VyY2UgIihkZWZuXG4gb3B0aW1pemUtYW5kXG4gW2FzdF1cbiAobGV0XG4gIFt7OmtleXMgW2luaXQgbmFtZV19ICgtPiBhc3QgOmJpbmRpbmdzIGZpcnN0KV1cbiAgezpvcCA6anMsXG4gICA6ZW52ICg6ZW52IGFzdCksXG4gICA6c2VncyBbXCIoKFwiIFwiKSAmJiAoXCIgXCIpKVwiXSxcbiAgIDphcmdzXG4gICBbaW5pdFxuICAgIChwYXNzZXMvd2Fsa1xuICAgICAoLT5leHByLWVudiAoLT4gYXN0IDpib2R5IDpyZXQgOnRoZW4pKVxuICAgICBbKHJlbW92ZS1sb2NhbC1wYXNzIG5hbWUpXSldLFxuICAgOmZvcm0gKDpmb3JtIGFzdCksXG4gICA6Y2hpbGRyZW4gWzphcmdzXSxcbiAgIDp0YWcgJ2Jvb2xlYW59KSlcbiJ9IHs6c3ltIHNpbXBsZS10ZXN0LWV4cHI/LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3s6a2V5cyBbb3BdLCA6YXMgYXN0fV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBzaW1wbGUtdGVzdC1leHByP1xuIFt7OmtleXMgW29wXSwgOmFzIGFzdH1dXG4gKGJvb2xlYW5cbiAgKGFuZFxuICAgKHNpbXBsZS1vcD8gYXN0KVxuICAgKCcje3NlcSBib29sZWFufVxuICAgIChvciAoOnRhZyBhc3QpICh3aGVuICgjezp2YXIgOmxvY2FsfSBvcCkgKC0+IGFzdCA6aW5mbyA6dGFnKSkpKSkpKVxuIn0gezpzeW0gc2luZ2xlLWJpbmRpbmctbGV0PywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFthc3RdKX0sIDpzb3VyY2UgIihkZWZuXG4gc2luZ2xlLWJpbmRpbmctbGV0P1xuIFthc3RdXG4gKGFuZCAoPSA6bGV0ICg6b3AgYXN0KSkgKD0gMSAoY291bnQgKC0+IGFzdCA6YmluZGluZ3MpKSkpKVxuIn0gezpzeW0gb3B0aW1pemUsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZW52IGFzdCBfXSl9LCA6c291cmNlICIoZGVmblxuIG9wdGltaXplXG4gW2VudiBhc3QgX11cbiAoY29uZFxuICAob3B0aW1pemFibGUtYW5kPyBhc3QpXG4gIChvcHRpbWl6ZS1hbmQgYXN0KVxuICAob3B0aW1pemFibGUtb3I/IGFzdClcbiAgKG9wdGltaXplLW9yIGFzdClcbiAgOmVsc2VcbiAgYXN0KSlcbiJ9KSwgcGVvcGxlLmNvcmUgKHs6c3ltIG5leHQtZWlkLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiBuZXh0LWVpZCAodm9sYXRpbGUhIDApKVxuIn0gezpzeW0gcmFuZG9tLW1hbiwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtdKX0sIDpzb3VyY2UgIihkZWZuXG4gcmFuZG9tLW1hblxuIFtdXG4gezpkYi9pZCAoc3RyICh2c3dhcCEgbmV4dC1laWQgaW5jKSksXG4gIDpwZW9wbGUuY29yZS9uYW1lXG4gIChyYW5kLW50aFxuICAgW1wiSXZhblwiIFwiUGV0clwiIFwiU2VyZ2VpXCIgXCJPbGVnXCIgXCJZdXJpXCIgXCJEbWl0cnlcIiBcIkZlZG9yXCIgXCJEZW5pc1wiXSksXG4gIDpwZW9wbGUuY29yZS9sYXN0LW5hbWVcbiAgKHJhbmQtbnRoXG4gICBbXCJJdmFub3ZcIiBcIlBldHJvdlwiIFwiU2lkb3JvdlwiIFwiS292YWxldlwiIFwiS3V6bmV0c292XCIgXCJWb3Jvbm9pXCJdKSxcbiAgOnBlb3BsZS5jb3JlL2FsaWFzXG4gICh2ZWNcbiAgIChyZXBlYXRlZGx5XG4gICAgKHJhbmQtaW50IDEwKVxuICAgIChmbipcbiAgICAgW11cbiAgICAgKHJhbmQtbnRoXG4gICAgICBbXCJBLiBDLiBRLiBXLlwiXG4gICAgICAgXCJBLiBKLiBGaW5uXCJcbiAgICAgICBcIkEuQS4gRmFpclwiXG4gICAgICAgXCJBYXBlbGlcIlxuICAgICAgIFwiQWFyb24gV29sZmVcIlxuICAgICAgIFwiQWJpZ2FpbCBWYW4gQnVyZW5cIlxuICAgICAgIFwiSmVhbm5lIFBoaWxsaXBzXCJcbiAgICAgICBcIkFicmFtIFRlcnR6XCJcbiAgICAgICBcIkFidSBOdXdhc1wiXG4gICAgICAgXCJBY3RvbiBCZWxsXCJcbiAgICAgICBcIkFkdW5pc1wiXSkpKSksXG4gIDpwZW9wbGUuY29yZS9zZXggKHJhbmQtbnRoIFs6bWFsZSA6ZmVtYWxlXSksXG4gIDpwZW9wbGUuY29yZS9hZ2UgKHJhbmQtaW50IDEwMCksXG4gIDpwZW9wbGUuY29yZS9zYWxhcnkgKHJhbmQtaW50IDEwMDAwMCl9KVxuIn0gezpzeW0gcGVvcGxlLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiBwZW9wbGUgKHJlcGVhdGVkbHkgcmFuZG9tLW1hbikpXG4ifSB7OnN5bSBwZW9wbGUyMGssIDptZXRhIHt9LCA6c291cmNlICIoZGVmIHBlb3BsZTIwayAoc2h1ZmZsZSAodGFrZSAyMDAwMCBwZW9wbGUpKSlcbiJ9KSwgY2xqcy5jb3JlLmFzeW5jLmltcGwucHJvdG9jb2xzICh7OnN5bSByZW1vdmUhLCA6bWV0YSB7OmRvYyAicmVtb3ZlIGFuZCByZXR1cm4gbmV4dCBpdGVtIGZyb20gYnVmZmVyLCBjYWxsZWQgdW5kZXIgY2hhbiBtdXRleCIsIDphcmdsaXN0cyAoW2JdKX0sIDpwcm90b2NvbCBCdWZmZXJ9IHs6c3ltIGNsb3NlLWJ1ZiEsIDptZXRhIHs6ZG9jICJjYWxsZWQgb24gY2hhbiBjbG9zZWQgdW5kZXIgY2hhbiBtdXRleCwgcmV0dXJuIGlnbm9yZWQiLCA6YXJnbGlzdHMgKFtiXSl9LCA6cHJvdG9jb2wgQnVmZmVyfSB7OnN5bSBjbG9zZSEsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbY2hhbl0pfSwgOnByb3RvY29sIENoYW5uZWx9IHs6c3ltIEhhbmRsZXIsIDptZXRhIHs6ZG9jIG5pbH0sIDptZXRob2RzIChhY3RpdmU/IGJsb2NrYWJsZT8gY29tbWl0KX0gezpzeW0gYmxvY2thYmxlPywgOm1ldGEgezpkb2MgInJldHVybnMgdHJ1ZSBpZiB0aGlzIGhhbmRsZXIgbWF5IGJlIGJsb2NrZWQsIG90aGVyd2lzZSBpdCBtdXN0IG5vdCBibG9jayIsIDphcmdsaXN0cyAoW2hdKX0sIDpwcm90b2NvbCBIYW5kbGVyfSB7OnN5bSBhY3RpdmU/LCA6bWV0YSB7OmRvYyAicmV0dXJucyB0cnVlIGlmIGhhcyBjYWxsYmFjay4gTXVzdCB3b3JrIHcvbyBsb2NrIiwgOmFyZ2xpc3RzIChbaF0pfSwgOnByb3RvY29sIEhhbmRsZXJ9IHs6c3ltIEJ1ZmZlciwgOm1ldGEgezpkb2MgbmlsfSwgOm1ldGhvZHMgKGFkZCEqIGNsb3NlLWJ1ZiEgZnVsbD8gcmVtb3ZlISl9IHs6c3ltIGZ1bGw/LCA6bWV0YSB7OmRvYyAicmV0dXJucyB0cnVlIGlmIGJ1ZmZlciBjYW5ub3QgYWNjZXB0IHB1dCIsIDphcmdsaXN0cyAoW2JdKX0sIDpwcm90b2NvbCBCdWZmZXJ9IHs6c3ltIGFkZCEsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIFtbYl0gW2IgaXRtXV19LCA6c291cmNlICIoZGVmbiBhZGQhIChbYl0gYikgKFtiIGl0bV0gKGFzc2VydCAobm90IChuaWw/IGl0bSkpKSAoYWRkISogYiBpdG0pKSlcbiJ9IHs6c3ltIGFkZCEqLCA6bWV0YSB7OmRvYyAiaWYgcm9vbSwgYWRkIGl0ZW0gdG8gdGhlIGJ1ZmZlciwgcmV0dXJucyBiLCBjYWxsZWQgdW5kZXIgY2hhbiBtdXRleCIsIDphcmdsaXN0cyAoW2IgaXRtXSl9LCA6cHJvdG9jb2wgQnVmZmVyfSB7OnN5bSBSZWFkUG9ydCwgOm1ldGEgezpkb2MgbmlsfSwgOm1ldGhvZHMgKHRha2UhKX0gezpzeW0gQ2hhbm5lbCwgOm1ldGEgezpkb2MgbmlsfSwgOm1ldGhvZHMgKGNsb3NlISBjbG9zZWQ/KX0gezpzeW0gY2xvc2VkPywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtjaGFuXSl9LCA6cHJvdG9jb2wgQ2hhbm5lbH0gezpzeW0gVW5ibG9ja2luZ0J1ZmZlciwgOm1ldGEgezpkb2MgbmlsfSwgOm1ldGhvZHMgKCl9IHs6c3ltIE1BWC1RVUVVRS1TSVpFLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiBNQVgtUVVFVUUtU0laRSAxMDI0KVxuIn0gezpzeW0gY29tbWl0LCA6bWV0YSB7OmRvYyAiY29tbWl0IHRvIGZ1bGZpbGxpbmcgaXRzIGVuZCBvZiB0aGUgdHJhbnNmZXIsIHJldHVybnMgY2IuIE11c3QgYmUgY2FsbGVkIHdpdGhpbiBsb2NrIiwgOmFyZ2xpc3RzIChbaF0pfSwgOnByb3RvY29sIEhhbmRsZXJ9IHs6c3ltIHB1dCEsIDptZXRhIHs6ZG9jICJkZXJlZmFibGUgYm9vbGVhbiAoZmFsc2UgaWYgYWxyZWFkeSBjbG9zZWQpIGlmIGhhbmRsZWQsIG5pbCBpZiBwdXQgd2FzIGVucXVldWVkLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE11c3QgdGhyb3cgb24gbmlsIHZhbC4iLCA6YXJnbGlzdHMgKFtwb3J0IHZhbCBmbjEtaGFuZGxlcl0pfSwgOnByb3RvY29sIFdyaXRlUG9ydH0gezpzeW0gdGFrZSEsIDptZXRhIHs6ZG9jICJkZXJlZmFibGUgdmFsIGlmIHRha2VuLCBuaWwgaWYgdGFrZSB3YXMgZW5xdWV1ZWQiLCA6YXJnbGlzdHMgKFtwb3J0IGZuMS1oYW5kbGVyXSl9LCA6cHJvdG9jb2wgUmVhZFBvcnR9IHs6c3ltIFdyaXRlUG9ydCwgOm1ldGEgezpkb2MgbmlsfSwgOm1ldGhvZHMgKHB1dCEpfSksIHJ1bS5kZXJpdmVkLWF0b20gKHs6c3ltIGRlcml2ZWQtYXRvbSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgW1tyZWZzIGtleSBmXSBbcmVmcyBrZXkgZiBvcHRzXV19LCA6c291cmNlICIoZGVmblxuIGRlcml2ZWQtYXRvbVxuIChbcmVmcyBrZXkgZl0gKGRlcml2ZWQtYXRvbSByZWZzIGtleSBmIHt9KSlcbiAoW3JlZnMga2V5IGYgb3B0c11cbiAgKGxldFxuICAgW3s6a2V5cyBbcmVmIGNoZWNrLWVxdWFscz9dLCA6b3Ige2NoZWNrLWVxdWFscz8gdHJ1ZX19XG4gICAgb3B0c1xuICAgIHJlY2FsY1xuICAgIChjYXNlXG4gICAgIChjb3VudCByZWZzKVxuICAgICAxXG4gICAgIChsZXQgW1thXSByZWZzXSAoZm4qIFtdIChmIEBhKSkpXG4gICAgIDJcbiAgICAgKGxldCBbW2EgYl0gcmVmc10gKGZuKiBbXSAoZiBAYSBAYikpKVxuICAgICAzXG4gICAgIChsZXQgW1thIGIgY10gcmVmc10gKGZuKiBbXSAoZiBAYSBAYiBAYykpKVxuICAgICAoZm4qIFtdIChhcHBseSBmIChtYXAgZGVyZWYgcmVmcykpKSlcbiAgICBzaW5rXG4gICAgKGlmIHJlZiAoZG90byByZWYgKHJlc2V0ISAocmVjYWxjKSkpIChhdG9tIChyZWNhbGMpKSlcbiAgICB3YXRjaFxuICAgIChpZlxuICAgICBjaGVjay1lcXVhbHM/XG4gICAgIChmblxuICAgICAgW18gXyBfIF9dXG4gICAgICAobGV0XG4gICAgICAgW25ldy12YWwgKHJlY2FsYyldXG4gICAgICAgKHdoZW4gKG5vdD0gQHNpbmsgbmV3LXZhbCkgKHJlc2V0ISBzaW5rIG5ldy12YWwpKSkpXG4gICAgIChmbiBbXyBfIF8gX10gKHJlc2V0ISBzaW5rIChyZWNhbGMpKSkpXVxuICAgKGRvc2VxIFtyZWYgcmVmc10gKGFkZC13YXRjaCByZWYga2V5IHdhdGNoKSlcbiAgIHNpbmspKSlcbiJ9KSwgbWlzdGFrZXMtd2VyZS1tYWRlLmNvcmUgKHs6c3ltIGNhbi1yZWRvPywgOm1ldGEgezpkb2MgIlJldHVybnMgdHJ1ZSBpZiB3ZSBjYW4gcmVkby4iLCA6YXJnbGlzdHMgKFsqZWRpdC1oaXN0b3J5XSl9LCA6c291cmNlICIoZGVmblxuIGNhbi1yZWRvP1xuIFwiUmV0dXJucyB0cnVlIGlmIHdlIGNhbiByZWRvLlwiXG4gWyplZGl0LWhpc3RvcnldXG4gKHNvbWU/IChnZXQtbmV4dC1zdGF0ZSAqZWRpdC1oaXN0b3J5KSkpXG4ifSB7OnN5bSBhdG9tPywgOm1ldGEge30sIDpzb3VyY2UgIihkZWZcbiBhdG9tP1xuIChmbipcbiAgW3AxX180Mjc2OSNdXG4gIChpbnN0YW5jZT9cbiAgICM/KDpjbGogY2xvanVyZS5sYW5nLkF0b20gOmNsanMgY2xqcy5jb3JlL0F0b20pXG4gICBwMV9fNDI3NjkjKSkpXG4ifSB7OnN5bSBnZXQtY3VycmVudC1zdGF0ZSwgOm1ldGEgezpkb2MgIlJldHVybnMgdGhlIGN1cnJlbnQgc3RhdGUgZnJvbSBlZGl0LWhpc3RvcnksIG9yIG5pbCBpZiB0aGVyZSBpcyBub25lLiIsIDphcmdsaXN0cyAoWyplZGl0LWhpc3RvcnldKX0sIDpzb3VyY2UgIihkZWZuXG4gZ2V0LWN1cnJlbnQtc3RhdGVcbiBcIlJldHVybnMgdGhlIGN1cnJlbnQgc3RhdGUgZnJvbSBlZGl0LWhpc3RvcnksIG9yIG5pbCBpZiB0aGVyZSBpcyBub25lLlwiXG4gWyplZGl0LWhpc3RvcnldXG4gKGxldFxuICBbezprZXlzIFtjdXJyZW50LXN0YXRlIHN0YXRlc119IEAqZWRpdC1oaXN0b3J5XVxuICAoZ2V0IHN0YXRlcyBjdXJyZW50LXN0YXRlKSkpXG4ifSB7OnN5bSB1bmRvISwgOm1ldGEgezpkb2MgIkNoYW5nZXMgdGhlIGN1cnJlbnQgc3RhdGUgYW5kIHJldHVybnMgdGhlIHByZXZpb3VzIHN0YXRlIGZyb20gZWRpdC1oaXN0b3J5LCBvciBuaWwgaWYgdGhlcmUgaXMgbm9uZS4iLCA6YXJnbGlzdHMgKFsqZWRpdC1oaXN0b3J5XSl9LCA6c291cmNlICIoZGVmblxuIHVuZG8hXG4gXCJDaGFuZ2VzIHRoZSBjdXJyZW50IHN0YXRlIGFuZCByZXR1cm5zIHRoZSBwcmV2aW91cyBzdGF0ZSBmcm9tIGVkaXQtaGlzdG9yeSwgb3IgbmlsIGlmIHRoZXJlIGlzIG5vbmUuXCJcbiBbKmVkaXQtaGlzdG9yeV1cbiAod2hlbi1sZXRcbiAgW3N0YXRlIChnZXQtcHJldmlvdXMtc3RhdGUgKmVkaXQtaGlzdG9yeSldXG4gIChzd2FwISAqZWRpdC1oaXN0b3J5IHVwZGF0ZSA6Y3VycmVudC1zdGF0ZSBkZWMpXG4gIHN0YXRlKSlcbiJ9IHs6c3ltIHJlZG8hLCA6bWV0YSB7OmRvYyAiQ2hhbmdlcyB0aGUgY3VycmVudCBzdGF0ZSBhbmQgcmV0dXJucyB0aGUgbmV4dCBzdGF0ZSBmcm9tIGVkaXQtaGlzdG9yeSwgb3IgbmlsIGlmIHRoZXJlIGlzIG5vbmUuIiwgOmFyZ2xpc3RzIChbKmVkaXQtaGlzdG9yeV0pfSwgOnNvdXJjZSAiKGRlZm5cbiByZWRvIVxuIFwiQ2hhbmdlcyB0aGUgY3VycmVudCBzdGF0ZSBhbmQgcmV0dXJucyB0aGUgbmV4dCBzdGF0ZSBmcm9tIGVkaXQtaGlzdG9yeSwgb3IgbmlsIGlmIHRoZXJlIGlzIG5vbmUuXCJcbiBbKmVkaXQtaGlzdG9yeV1cbiAod2hlbi1sZXRcbiAgW3N0YXRlIChnZXQtbmV4dC1zdGF0ZSAqZWRpdC1oaXN0b3J5KV1cbiAgKHN3YXAhICplZGl0LWhpc3RvcnkgdXBkYXRlIDpjdXJyZW50LXN0YXRlIGluYylcbiAgc3RhdGUpKVxuIn0gezpzeW0gY2FuLXVuZG8/LCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0cnVlIGlmIHdlIGNhbiB1bmRvLiIsIDphcmdsaXN0cyAoWyplZGl0LWhpc3RvcnldKX0sIDpzb3VyY2UgIihkZWZuXG4gY2FuLXVuZG8/XG4gXCJSZXR1cm5zIHRydWUgaWYgd2UgY2FuIHVuZG8uXCJcbiBbKmVkaXQtaGlzdG9yeV1cbiAoc29tZT8gKGdldC1wcmV2aW91cy1zdGF0ZSAqZWRpdC1oaXN0b3J5KSkpXG4ifSB7OnN5bSBnZXQtbmV4dC1zdGF0ZSwgOm1ldGEgezpkb2MgIlJldHVybnMgdGhlIG5leHQgc3RhdGUgZnJvbSBlZGl0LWhpc3RvcnksIG9yIG5pbCBpZiB0aGVyZSBpcyBub25lLiIsIDphcmdsaXN0cyAoWyplZGl0LWhpc3RvcnldKX0sIDpzb3VyY2UgIihkZWZuXG4gZ2V0LW5leHQtc3RhdGVcbiBcIlJldHVybnMgdGhlIG5leHQgc3RhdGUgZnJvbSBlZGl0LWhpc3RvcnksIG9yIG5pbCBpZiB0aGVyZSBpcyBub25lLlwiXG4gWyplZGl0LWhpc3RvcnldXG4gKGxldFxuICBbezprZXlzIFtjdXJyZW50LXN0YXRlIHN0YXRlc119IEAqZWRpdC1oaXN0b3J5XVxuICAoZ2V0IHN0YXRlcyAoaW5jIGN1cnJlbnQtc3RhdGUpKSkpXG4ifSB7OnN5bSB1cGRhdGUtY3Vyc29yLXBvc2l0aW9uISwgOm1ldGEgezpkb2MgIlVwZGF0ZXMgb25seSB0aGUgY3Vyc29yIHBvc2l0aW9uLiIsIDphcmdsaXN0cyAoWyplZGl0LWhpc3RvcnkgY3Vyc29yLXBvc2l0aW9uXSl9LCA6c291cmNlICIoZGVmblxuIHVwZGF0ZS1jdXJzb3ItcG9zaXRpb24hXG4gXCJVcGRhdGVzIG9ubHkgdGhlIGN1cnNvciBwb3NpdGlvbi5cIlxuIFsqZWRpdC1oaXN0b3J5IGN1cnNvci1wb3NpdGlvbl1cbiAobGV0XG4gIFt7OmtleXMgW2N1cnJlbnQtc3RhdGVdfSBAKmVkaXQtaGlzdG9yeV1cbiAgKHdoZW5cbiAgICg+PSBjdXJyZW50LXN0YXRlIDApXG4gICAoc3dhcCFcbiAgICAqZWRpdC1oaXN0b3J5XG4gICAgYXNzb2MtaW5cbiAgICBbOnN0YXRlcyBjdXJyZW50LXN0YXRlIDpjdXJzb3ItcG9zaXRpb25dXG4gICAgY3Vyc29yLXBvc2l0aW9uKSkpKVxuIn0gezpzeW0gdXBkYXRlLWVkaXQtaGlzdG9yeSEsIDptZXRhIHs6ZG9jICJVcGRhdGVzIHRoZSBlZGl0IGhpc3RvcnkgYXRvbS4iLCA6YXJnbGlzdHMgKFsqZWRpdC1oaXN0b3J5IHN0YXRlXSl9LCA6c291cmNlICIoZGVmblxuIHVwZGF0ZS1lZGl0LWhpc3RvcnkhXG4gXCJVcGRhdGVzIHRoZSBlZGl0IGhpc3RvcnkgYXRvbS5cIlxuIFsqZWRpdC1oaXN0b3J5IHN0YXRlXVxuIChsZXRcbiAgW3s6a2V5cyBbY3VycmVudC1zdGF0ZSBzdGF0ZXMgbGltaXRdfVxuICAgQCplZGl0LWhpc3RvcnlcbiAgIG9sZC1zdGF0ZVxuICAgKGdldCBzdGF0ZXMgY3VycmVudC1zdGF0ZSlcbiAgIG9sZC1jdXJzb3ItcG9zaXRpb25cbiAgIChvciAoZmlyc3QgKDpvcmlnaW5hbC1jdXJzb3ItcG9zaXRpb24gb2xkLXN0YXRlKSkgMClcbiAgIG5ldy1jdXJzb3ItcG9zaXRpb25cbiAgIChmaXJzdCAoOmN1cnNvci1wb3NpdGlvbiBzdGF0ZSkpXG4gICBuZXctY3Vyc29yLWNoYW5nZVxuICAgKC0gbmV3LWN1cnNvci1wb3NpdGlvbiBvbGQtY3Vyc29yLXBvc2l0aW9uKVxuICAgc3RhdGVcbiAgIChhc3NvYyBzdGF0ZSA6b3JpZ2luYWwtY3Vyc29yLXBvc2l0aW9uICg6Y3Vyc29yLXBvc2l0aW9uIHN0YXRlKSldXG4gICh3aGVuXG4gICAob3JcbiAgICAobm90PSAoOnRleHQgb2xkLXN0YXRlKSAoOnRleHQgc3RhdGUpKVxuICAgICg6c2VsZWN0aW9uLWNoYW5nZT8gc3RhdGUpKVxuICAgKHN3YXAhXG4gICAgKmVkaXQtaGlzdG9yeVxuICAgIChmblxuICAgICBbZWRpdC1oaXN0b3J5XVxuICAgICAobGV0XG4gICAgICBbbmV3LWN1cnJlbnQtc3RhdGVcbiAgICAgICAoaWZcbiAgICAgICAgKG9yICg8PSBjdXJyZW50LXN0YXRlIDEpIChub3Q9IG5ldy1jdXJzb3ItY2hhbmdlIDEpKVxuICAgICAgICAoaW5jIGN1cnJlbnQtc3RhdGUpXG4gICAgICAgIGN1cnJlbnQtc3RhdGUpXG4gICAgICAgbmV3LXN0YXRlc1xuICAgICAgIChzdWJ2ZWMgc3RhdGVzIDAgbmV3LWN1cnJlbnQtc3RhdGUpXG4gICAgICAgbmV3LXN0YXRlc1xuICAgICAgIChjb25qIG5ldy1zdGF0ZXMgc3RhdGUpXVxuICAgICAgKGlmXG4gICAgICAgKGFuZCBsaW1pdCAoPiAoY291bnQgbmV3LXN0YXRlcykgbGltaXQpKVxuICAgICAgIChhc3NvY1xuICAgICAgICBlZGl0LWhpc3RvcnlcbiAgICAgICAgOmN1cnJlbnQtc3RhdGVcbiAgICAgICAgKGRlYyBuZXctY3VycmVudC1zdGF0ZSlcbiAgICAgICAgOnN0YXRlc1xuICAgICAgICAoc3VidmVjIG5ldy1zdGF0ZXMgMSkpXG4gICAgICAgKGFzc29jXG4gICAgICAgIGVkaXQtaGlzdG9yeVxuICAgICAgICA6Y3VycmVudC1zdGF0ZVxuICAgICAgICBuZXctY3VycmVudC1zdGF0ZVxuICAgICAgICA6c3RhdGVzXG4gICAgICAgIG5ldy1zdGF0ZXMpKSkpKSkpKVxuIn0gezpzeW0gY3JlYXRlLWVkaXQtaGlzdG9yeSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtdKX0sIDpzb3VyY2UgIihkZWZuIGNyZWF0ZS1lZGl0LWhpc3RvcnkgW10gKGF0b20gezpjdXJyZW50LXN0YXRlIC0xLCA6c3RhdGVzIFtdfSkpXG4ifSB7OnN5bSBnZXQtcHJldmlvdXMtc3RhdGUsIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRoZSBwcmV2aW91cyBzdGF0ZSBmcm9tIGVkaXQtaGlzdG9yeSwgb3IgbmlsIGlmIHRoZXJlIGlzIG5vbmUuIiwgOmFyZ2xpc3RzIChbKmVkaXQtaGlzdG9yeV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBnZXQtcHJldmlvdXMtc3RhdGVcbiBcIlJldHVybnMgdGhlIHByZXZpb3VzIHN0YXRlIGZyb20gZWRpdC1oaXN0b3J5LCBvciBuaWwgaWYgdGhlcmUgaXMgbm9uZS5cIlxuIFsqZWRpdC1oaXN0b3J5XVxuIChsZXRcbiAgW3s6a2V5cyBbY3VycmVudC1zdGF0ZSBzdGF0ZXNdfSBAKmVkaXQtaGlzdG9yeV1cbiAgKGdldCBzdGF0ZXMgKGRlYyBjdXJyZW50LXN0YXRlKSkpKVxuIn0pLCBmaXBwLmVkbml6ZSAoezpzeW0gLWVkbiwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt4XSl9LCA6cHJvdG9jb2wgSUVkbn0gezpzeW0gSUVkbiwgOm1ldGEgezpkb2MgIlBlcmZvcm0gYSBzaGFsbG93IGNvbnZlcnNpb24gdG8gYW4gRWRuIGRhdGEgc3RydWN0dXJlLiJ9LCA6bWV0aG9kcyAoLWVkbil9IHs6c3ltIElPdmVycmlkZSwgOm1ldGEgezpkb2MgIk1hcmsgb2JqZWN0IGFzIHByZWZlcnJpbmcgaXRzIGN1c3RvbSBJRWRuIGJlaGF2aW9yLiJ9LCA6bWV0aG9kcyAoKX0gezpzeW0gb3ZlcnJpZGU/LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuIG92ZXJyaWRlPyBbeF0gKHNhdGlzZmllcz8gSUVkbiB4KSlcbiJ9IHs6c3ltIGVkbiwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmblxuIGVkblxuIFt4XVxuIChjb25kXG4gIChvdmVycmlkZT8geClcbiAgKC1lZG4geClcbiAgKG9iamVjdD8geClcbiAgKHRhZ2dlZC1saXRlcmFsXG4gICAnanNcbiAgIChpbnRvIHt9IChmb3IgW2sgKGpzLWtleXMgeCldIFsoa2V5d29yZCBrKSAoYWdldCB4IGspXSkpKVxuICAoYXJyYXk/IHgpXG4gICh0YWdnZWQtbGl0ZXJhbCAnanMgKHZlYyB4KSlcbiAgKHNhdGlzZmllcz8gSURlcmVmIHgpXG4gIChsZXRcbiAgIFtwZW5kaW5nP1xuICAgIChhbmQgKHNhdGlzZmllcz8gSVBlbmRpbmcgeCkgKG5vdCAocmVhbGl6ZWQ/IHgpKSlcbiAgICB2YWxcbiAgICAod2hlbi1ub3QgcGVuZGluZz8gQHgpXG4gICAgc3RhdHVzXG4gICAgKGlmIHBlbmRpbmc/IDpwZW5kaW5nIDpyZWFkeSldXG4gICAodGFnZ2VkLWxpdGVyYWxcbiAgICAnb2JqZWN0XG4gICAgWygtPiB4IHR5cGUgcHItc3RyIHN5bWJvbCkgezpzdGF0dXMgc3RhdHVzLCA6dmFsIHZhbH1dKSlcbiAgKGluc3RhbmNlPyBqcy9EYXRlIHgpXG4gICh0YWdnZWQtbGl0ZXJhbFxuICAgJ2luc3RcbiAgIChsZXRcbiAgICBbbm9ybWFsaXplXG4gICAgIChmblxuICAgICAgW24gbGVuXVxuICAgICAgKGxvb3BcbiAgICAgICBbbnMgKHN0ciBuKV1cbiAgICAgICAoaWYgKDwgKGNvdW50IG5zKSBsZW4pIChyZWN1ciAoc3RyIFwiMFwiIG5zKSkgbnMpKSldXG4gICAgKHN0clxuICAgICAoLmdldFVUQ0Z1bGxZZWFyIHgpXG4gICAgIFwiLVwiXG4gICAgIChub3JtYWxpemUgKGluYyAoLmdldFVUQ01vbnRoIHgpKSAyKVxuICAgICBcIi1cIlxuICAgICAobm9ybWFsaXplICguZ2V0VVRDRGF0ZSB4KSAyKVxuICAgICBcIlRcIlxuICAgICAobm9ybWFsaXplICguZ2V0VVRDSG91cnMgeCkgMilcbiAgICAgXCI6XCJcbiAgICAgKG5vcm1hbGl6ZSAoLmdldFVUQ01pbnV0ZXMgeCkgMilcbiAgICAgXCI6XCJcbiAgICAgKG5vcm1hbGl6ZSAoLmdldFVUQ1NlY29uZHMgeCkgMilcbiAgICAgXCIuXCJcbiAgICAgKG5vcm1hbGl6ZSAoLmdldFVUQ01pbGxpc2Vjb25kcyB4KSAzKVxuICAgICBcIi1cIlxuICAgICBcIjAwOjAwXCIpKSlcbiAgKHNhdGlzZmllcz8gSUVkbiB4KVxuICAoLWVkbiB4KVxuICAoZWRuPyB4KVxuICB4XG4gIDplbHNlXG4gICh0YWdnZWQtbGl0ZXJhbCAnb2JqZWN0IFsoLT4geCB0eXBlIHByLXN0ciBzeW1ib2wpXSkpKVxuIn0gezpzeW0gcmVjb3JkLT50YWdnZWQsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm5cbiByZWNvcmQtPnRhZ2dlZFxuIFt4XVxuICh0YWdnZWQtbGl0ZXJhbFxuICAoYXBwbHkgc3ltYm9sIChzL3NwbGl0ICgtPiB4IHR5cGUgcHItc3RyKSAjXCIvXCIgMikpXG4gIChpbnRvIHt9IHgpKSlcbiJ9KSwgY2xvanVyZS50ZXN0LmNoZWNrICh7OnN5bSBxdWljay1jaGVjaywgOm1ldGEgezpkb2MgIlRlc3RzIGBwcm9wZXJ0eWAgYG51bS10ZXN0c2AgdGltZXMuXG5cbiAgVGFrZXMgc2V2ZXJhbCBvcHRpb25hbCBrZXlzOlxuXG4gIGA6c2VlZGBcbiAgICBDYW4gYmUgdXNlZCB0byByZS1ydW4gcHJldmlvdXMgdGVzdHMsIGFzIHRoZSBzZWVkIHVzZWQgaXMgcmV0dXJuZWRcbiAgICBhZnRlciBhIHRlc3QgaXMgcnVuLlxuXG4gIGA6bWF4LXNpemVgLlxuICAgIGNhbiBiZSB1c2VkIHRvIGNvbnRyb2wgdGhlICdzaXplJyBvZiBnZW5lcmF0ZWQgdmFsdWVzLiBUaGUgc2l6ZSB3aWxsXG4gICAgc3RhcnQgYXQgMCwgYW5kIGdyb3cgdXAgdG8gbWF4LXNpemUsIGFzIHRoZSBudW1iZXIgb2YgdGVzdHMgaW5jcmVhc2VzLlxuICAgIEdlbmVyYXRvcnMgd2lsbCB1c2UgdGhlIHNpemUgcGFyYW1ldGVyIHRvIGJvdW5kIHRoZWlyIGdyb3d0aC4gVGhpc1xuICAgIHByZXZlbnRzLCBmb3IgZXhhbXBsZSwgZ2VuZXJhdGluZyBhIGZpdmUtdGhvdXNhbmQgZWxlbWVudCB2ZWN0b3Igb25cbiAgICB0aGUgdmVyeSBmaXJzdCB0ZXN0LlxuXG4gIGA6cmVwb3J0ZXItZm5gXG4gICAgQSBjYWxsYmFjayBmdW5jdGlvbiB0aGF0IHdpbGwgYmUgY2FsbGVkIGF0IHZhcmlvdXMgcG9pbnRzIGluIHRoZSB0ZXN0XG4gICAgcnVuLCB3aXRoIGEgbWFwIGxpa2U6XG5cbiAgICAgIDs7IGNhbGxlZCBhZnRlciBhIHBhc3NpbmcgdHJpYWxcbiAgICAgIHs6dHlwZSAgICAgICAgICAgIDp0cmlhbFxuICAgICAgIDphcmdzICAgICAgICAgICAgWy4uLl1cbiAgICAgICA6bnVtLXRlc3RzICAgICAgIDxudW1iZXIgb2YgdGVzdHMgcnVuIHNvIGZhcj5cbiAgICAgICA6bnVtLXRlc3RzLXRvdGFsIDx0b3RhbCBudW1iZXIgb2YgdGVzdHMgdG8gYmUgcnVuPlxuICAgICAgIDpzZWVkICAgICAgICAgICAgNDJcbiAgICAgICA6cGFzcz8gICAgICAgICAgIHRydWVcbiAgICAgICA6cHJvcGVydHkgICAgICAgICM8Li4uPlxuICAgICAgIDpyZXN1bHQgICAgICAgICAgdHJ1ZVxuICAgICAgIDpyZXN1bHQtZGF0YSAgICAgey4uLn19XG5cbiAgICAgIDs7IGNhbGxlZCBhZnRlciB0aGUgZmlyc3QgZmFpbGluZyB0cmlhbFxuICAgICAgezp0eXBlICAgICAgICAgOmZhaWx1cmVcbiAgICAgICA6ZmFpbCAgICAgICAgIFsuLi5mYWlsaW5nIGFyZ3MuLi5dXG4gICAgICAgOmZhaWxpbmctc2l6ZSAxM1xuICAgICAgIDpudW0tdGVzdHMgICAgPHRlc3RzIHJhbiBiZWZvcmUgZmFpbHVyZSBmb3VuZD5cbiAgICAgICA6cGFzcz8gICAgICAgIGZhbHNlXG4gICAgICAgOnByb3BlcnR5ICAgICAjPC4uLj5cbiAgICAgICA6cmVzdWx0ICAgICAgIGZhbHNlL2V4Y2VwdGlvblxuICAgICAgIDpyZXN1bHQtZGF0YSAgey4uLn1cbiAgICAgICA6c2VlZCAgICAgICAgIDQyfVxuXG4gICAgSXQgd2lsbCBhbHNvIGJlIGNhbGxlZCBvbiA6Y29tcGxldGUsIDpzaHJpbmstc3RlcCBhbmQgOnNocnVuay4gTWFueVxuICAgIG9mIHRoZSBrZXlzIGFsc28gYXBwZWFyIGluIHRoZSBxdWljay1jaGVjayByZXR1cm4gdmFsdWUsIGFuZCBhcmVcbiAgICBkb2N1bWVudGVkIGJlbG93LlxuXG4gIElmIHRoZSB0ZXN0IHBhc3NlcywgdGhlIHJldHVybiB2YWx1ZSB3aWxsIGJlIHNvbWV0aGluZyBsaWtlOlxuXG4gICAgICB7Om51bS10ZXN0cyAgICAgICAxMDAsXG4gICAgICAgOnBhc3M/ICAgICAgICAgICB0cnVlLFxuICAgICAgIDpyZXN1bHQgICAgICAgICAgdHJ1ZSxcbiAgICAgICA6c2VlZCAgICAgICAgICAgIDE1NjE4MjY1MDU5ODIsXG4gICAgICAgOnRpbWUtZWxhcHNlZC1tcyAyNH1cblxuICBJZiB0aGUgdGVzdCBmYWlscywgdGhlIHJldHVybiB2YWx1ZSB3aWxsIGJlIHNvbWV0aGluZyBsaWtlOlxuXG4gICAgICB7OmZhaWwgICAgICAgICAgICBbMF0sXG4gICAgICAgOmZhaWxlZC1hZnRlci1tcyAwLFxuICAgICAgIDpmYWlsaW5nLXNpemUgICAgMCxcbiAgICAgICA6bnVtLXRlc3RzICAgICAgIDEsXG4gICAgICAgOnBhc3M/ICAgICAgICAgICBmYWxzZSxcbiAgICAgICA6cmVzdWx0ICAgICAgICAgIGZhbHNlLFxuICAgICAgIDpyZXN1bHQtZGF0YSAgICAgbmlsLFxuICAgICAgIDpzZWVkICAgICAgICAgICAgMTU2MTgyNjUwNjA4MCxcbiAgICAgICA6c2hydW5rXG4gICAgICAgezpkZXB0aCAgICAgICAgICAgICAgIDAsXG4gICAgICAgIDpwYXNzPyAgICAgICAgICAgICAgIGZhbHNlLFxuICAgICAgICA6cmVzdWx0ICAgICAgICAgICAgICBmYWxzZSxcbiAgICAgICAgOnJlc3VsdC1kYXRhICAgICAgICAgbmlsLFxuICAgICAgICA6c21hbGxlc3QgICAgICAgICAgICBbMF0sXG4gICAgICAgIDp0aW1lLXNocmlua2luZy1tcyAgIDAsXG4gICAgICAgIDp0b3RhbC1ub2Rlcy12aXNpdGVkIDB9fVxuXG4gIFRoZSBtZWFuaW5nIG9mIHRoZSBpbmRpdmlkdWFsIGVudHJpZXMgaXM6XG5cbiAgICAgIDpudW0tdGVzdHNcbiAgICAgIFRoZSB0b3RhbCBudW1iZXIgb2YgdHJpYWxzIHRoYXQgd2FzIHdlcmUgcnVuLCBub3QgaW5jbHVkaW5nXG4gICAgICBzaHJpbmtpbmcgKGlmIGFwcGxpY2FibGUpXG5cbiAgICAgIDpwYXNzP1xuICAgICAgQSBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciB0aGUgdGVzdCBwYXNzZWQgb3IgZmFpbGVkXG5cbiAgICAgIDpyZXN1bHRcbiAgICAgIEEgbGVnYWN5IGVudHJ5IHRoYXQgaXMgc2ltaWxhciB0byA6cGFzcz9cblxuICAgICAgOnNlZWRcbiAgICAgIFRoZSBzZWVkIHVzZWQgZm9yIHRoZSBlbnRpcmUgdGVzdCBydW47IGNhbiBiZSB1c2VkIHRvIHJlcHJvZHVjZVxuICAgICAgYSB0ZXN0IHJ1biBieSBwYXNzaW5nIGl0IGFzIHRoZSA6c2VlZCBvcHRpb24gdG8gcXVpY2stY2hlY2tcblxuICAgICAgOnRpbWUtZWxhcHNlZC1tc1xuICAgICAgVGhlIHRvdGFsIHRpbWUsIGluIG1pbGxpc2Vjb25kcywgb2YgYSBzdWNjZXNzZnVsIHRlc3QgcnVuXG5cbiAgICAgIDpmYWlsXG4gICAgICBUaGUgZ2VuZXJhdGVkIHZhbHVlcyBmb3IgdGhlIGZpcnN0IGZhaWx1cmU7IG5vdGUgdGhhdCB0aGlzIGlzXG4gICAgICBhbHdheXMgYSB2ZWN0b3IsIHNpbmNlIHByb3AvZm9yLWFsbCBjYW4gaGF2ZSBtdWx0aXBsZSBjbGF1c2VzXG5cbiAgICAgIDpmYWlsZWQtYWZ0ZXItbXNcbiAgICAgIFRoZSB0b3RhbCB0aW1lLCBpbiBtaWxsaXNlY29uZHMsIHNwZW50IGZpbmRpbmcgdGhlIGZpcnN0IGZhaWxpbmdcbiAgICAgIHRyaWFsXG5cbiAgICAgIDpmYWlsaW5nLXNpemVcbiAgICAgIFRoZSB2YWx1ZSBvZiB0aGUgc2l6ZSBwYXJhbWV0ZXIgdXNlZCB0byBnZW5lcmF0ZSB0aGUgZmlyc3RcbiAgICAgIGZhaWx1cmVcblxuICAgICAgOnJlc3VsdC1kYXRhXG4gICAgICBUaGUgcmVzdWx0IGRhdGEsIGlmIGFueSwgb2YgdGhlIGZpcnN0IGZhaWxpbmcgdHJpYWwgKHRvIHRha2VcbiAgICAgIGFkdmFudGFnZSBvZiB0aGlzIGEgcHJvcGVydHkgbXVzdCByZXR1cm4gYW4gb2JqZWN0IHNhdGlzZnlpbmdcbiAgICAgIHRoZSBjbG9qdXJlLnRlc3QuY2hlY2sucmVzdWx0cy9SZXN1bHQgcHJvdG9jb2wpXG5cbiAgICAgIDpzaHJ1bmtcbiAgICAgIEEgbWFwIG9mIGRhdGEgYWJvdXQgdGhlIHNocmlua2luZyBwcm9jZXNzOyBuZXN0ZWQga2V5cyB0aGF0XG4gICAgICBhcHBlYXIgYXQgdGhlIHRvcCBsZXZlbCBoYXZlIHRoZSBzYW1lIG1lYW5pbmc7IG90aGVyIGtleXMgYXJlXG4gICAgICBkb2N1bWVudGVkIG5leHRcblxuICAgICAgOnNocnVuayAvIDpkZXB0aFxuICAgICAgVGhlIGRlcHRoIGluIHRoZSBzaHJpbmsgdHJlZSB0aGF0IHRoZSBzbWFsbGVzdCBmYWlsaW5nIGluc3RhbmNlXG4gICAgICB3YXMgZm91bmQ7IHRoaXMgaXMgZXNzZW50aWFsbHkgdGhlIGlkZWEgb2YgaG93IG1hbnkgdGltZXMgdGhlXG4gICAgICBvcmlnaW5hbCBmYWlsdXJlIHdhcyBzdWNjZXNzZnVsbHkgc2hydW5rXG5cbiAgICAgIDpzbWFsbGVzdFxuICAgICAgVGhlIHNtYWxsZXN0IHZhbHVlcyBmb3VuZCBpbiB0aGUgc2hyaW5raW5nIHByb2Nlc3MgdGhhdCBzdGlsbFxuICAgICAgZmFpbCB0aGUgdGVzdDsgdGhpcyBpcyBhIHZlY3RvciBvZiB0aGUgc2FtZSB0eXBlIGFzIDpmYWlsXG5cbiAgICAgIDp0aW1lLXNocmlua2luZy1tc1xuICAgICAgVGhlIHRvdGFsIHRpbWUsIGluIG1pbGxpc2Vjb25kcywgc3BlbnQgc2hyaW5raW5nXG5cbiAgICAgIDp0b3RhbC1ub2Rlcy12aXNpdGVkXG4gICAgICBUaGUgdG90YWwgbnVtYmVyIG9mIHN0ZXBzIGluIHRoZSBzaHJpbmtpbmcgcHJvY2Vzc1xuXG4gIEV4YW1wbGVzOlxuXG4gICAgICAoZGVmIHAgKGZvci1hbGwgW2EgZ2VuL25hdF0gKD4gKCogYSBhKSBhKSkpXG5cbiAgICAgIChxdWljay1jaGVjayAxMDAgcClcbiAgICAgIChxdWljay1jaGVjayAyMDAgcFxuICAgICAgICAgICAgICAgICAgIDpzZWVkIDQyXG4gICAgICAgICAgICAgICAgICAgOm1heC1zaXplIDUwXG4gICAgICAgICAgICAgICAgICAgOnJlcG9ydGVyLWZuIChmbiBbbV1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAod2hlbiAoPSA6ZmFpbHVyZSAoOnR5cGUgbSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJpbnRsbiBcIlVoIG9oLi4uXCIpKSkpIiwgOmFyZ2xpc3RzIChbbnVtLXRlc3RzIHByb3BlcnR5ICYgezprZXlzIFtzZWVkIG1heC1zaXplIHJlcG9ydGVyLWZuXSwgOm9yIHttYXgtc2l6ZSAyMDAsIHJlcG9ydGVyLWZuIChjb25zdGFudGx5IG5pbCl9fV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBxdWljay1jaGVja1xuIFwiVGVzdHMgYHByb3BlcnR5YCBgbnVtLXRlc3RzYCB0aW1lcy5cXG5cXG4gIFRha2VzIHNldmVyYWwgb3B0aW9uYWwga2V5czpcXG5cXG4gIGA6c2VlZGBcXG4gICAgQ2FuIGJlIHVzZWQgdG8gcmUtcnVuIHByZXZpb3VzIHRlc3RzLCBhcyB0aGUgc2VlZCB1c2VkIGlzIHJldHVybmVkXFxuICAgIGFmdGVyIGEgdGVzdCBpcyBydW4uXFxuXFxuICBgOm1heC1zaXplYC5cXG4gICAgY2FuIGJlIHVzZWQgdG8gY29udHJvbCB0aGUgJ3NpemUnIG9mIGdlbmVyYXRlZCB2YWx1ZXMuIFRoZSBzaXplIHdpbGxcXG4gICAgc3RhcnQgYXQgMCwgYW5kIGdyb3cgdXAgdG8gbWF4LXNpemUsIGFzIHRoZSBudW1iZXIgb2YgdGVzdHMgaW5jcmVhc2VzLlxcbiAgICBHZW5lcmF0b3JzIHdpbGwgdXNlIHRoZSBzaXplIHBhcmFtZXRlciB0byBib3VuZCB0aGVpciBncm93dGguIFRoaXNcXG4gICAgcHJldmVudHMsIGZvciBleGFtcGxlLCBnZW5lcmF0aW5nIGEgZml2ZS10aG91c2FuZCBlbGVtZW50IHZlY3RvciBvblxcbiAgICB0aGUgdmVyeSBmaXJzdCB0ZXN0LlxcblxcbiAgYDpyZXBvcnRlci1mbmBcXG4gICAgQSBjYWxsYmFjayBmdW5jdGlvbiB0aGF0IHdpbGwgYmUgY2FsbGVkIGF0IHZhcmlvdXMgcG9pbnRzIGluIHRoZSB0ZXN0XFxuICAgIHJ1biwgd2l0aCBhIG1hcCBsaWtlOlxcblxcbiAgICAgIDs7IGNhbGxlZCBhZnRlciBhIHBhc3NpbmcgdHJpYWxcXG4gICAgICB7OnR5cGUgICAgICAgICAgICA6dHJpYWxcXG4gICAgICAgOmFyZ3MgICAgICAgICAgICBbLi4uXVxcbiAgICAgICA6bnVtLXRlc3RzICAgICAgIDxudW1iZXIgb2YgdGVzdHMgcnVuIHNvIGZhcj5cXG4gICAgICAgOm51bS10ZXN0cy10b3RhbCA8dG90YWwgbnVtYmVyIG9mIHRlc3RzIHRvIGJlIHJ1bj5cXG4gICAgICAgOnNlZWQgICAgICAgICAgICA0MlxcbiAgICAgICA6cGFzcz8gICAgICAgICAgIHRydWVcXG4gICAgICAgOnByb3BlcnR5ICAgICAgICAjPC4uLj5cXG4gICAgICAgOnJlc3VsdCAgICAgICAgICB0cnVlXFxuICAgICAgIDpyZXN1bHQtZGF0YSAgICAgey4uLn19XFxuXFxuICAgICAgOzsgY2FsbGVkIGFmdGVyIHRoZSBmaXJzdCBmYWlsaW5nIHRyaWFsXFxuICAgICAgezp0eXBlICAgICAgICAgOmZhaWx1cmVcXG4gICAgICAgOmZhaWwgICAgICAgICBbLi4uZmFpbGluZyBhcmdzLi4uXVxcbiAgICAgICA6ZmFpbGluZy1zaXplIDEzXFxuICAgICAgIDpudW0tdGVzdHMgICAgPHRlc3RzIHJhbiBiZWZvcmUgZmFpbHVyZSBmb3VuZD5cXG4gICAgICAgOnBhc3M/ICAgICAgICBmYWxzZVxcbiAgICAgICA6cHJvcGVydHkgICAgICM8Li4uPlxcbiAgICAgICA6cmVzdWx0ICAgICAgIGZhbHNlL2V4Y2VwdGlvblxcbiAgICAgICA6cmVzdWx0LWRhdGEgIHsuLi59XFxuICAgICAgIDpzZWVkICAgICAgICAgNDJ9XFxuXFxuICAgIEl0IHdpbGwgYWxzbyBiZSBjYWxsZWQgb24gOmNvbXBsZXRlLCA6c2hyaW5rLXN0ZXAgYW5kIDpzaHJ1bmsuIE1hbnlcXG4gICAgb2YgdGhlIGtleXMgYWxzbyBhcHBlYXIgaW4gdGhlIHF1aWNrLWNoZWNrIHJldHVybiB2YWx1ZSwgYW5kIGFyZVxcbiAgICBkb2N1bWVudGVkIGJlbG93LlxcblxcbiAgSWYgdGhlIHRlc3QgcGFzc2VzLCB0aGUgcmV0dXJuIHZhbHVlIHdpbGwgYmUgc29tZXRoaW5nIGxpa2U6XFxuXFxuICAgICAgezpudW0tdGVzdHMgICAgICAgMTAwLFxcbiAgICAgICA6cGFzcz8gICAgICAgICAgIHRydWUsXFxuICAgICAgIDpyZXN1bHQgICAgICAgICAgdHJ1ZSxcXG4gICAgICAgOnNlZWQgICAgICAgICAgICAxNTYxODI2NTA1OTgyLFxcbiAgICAgICA6dGltZS1lbGFwc2VkLW1zIDI0fVxcblxcbiAgSWYgdGhlIHRlc3QgZmFpbHMsIHRoZSByZXR1cm4gdmFsdWUgd2lsbCBiZSBzb21ldGhpbmcgbGlrZTpcXG5cXG4gICAgICB7OmZhaWwgICAgICAgICAgICBbMF0sXFxuICAgICAgIDpmYWlsZWQtYWZ0ZXItbXMgMCxcXG4gICAgICAgOmZhaWxpbmctc2l6ZSAgICAwLFxcbiAgICAgICA6bnVtLXRlc3RzICAgICAgIDEsXFxuICAgICAgIDpwYXNzPyAgICAgICAgICAgZmFsc2UsXFxuICAgICAgIDpyZXN1bHQgICAgICAgICAgZmFsc2UsXFxuICAgICAgIDpyZXN1bHQtZGF0YSAgICAgbmlsLFxcbiAgICAgICA6c2VlZCAgICAgICAgICAgIDE1NjE4MjY1MDYwODAsXFxuICAgICAgIDpzaHJ1bmtcXG4gICAgICAgezpkZXB0aCAgICAgICAgICAgICAgIDAsXFxuICAgICAgICA6cGFzcz8gICAgICAgICAgICAgICBmYWxzZSxcXG4gICAgICAgIDpyZXN1bHQgICAgICAgICAgICAgIGZhbHNlLFxcbiAgICAgICAgOnJlc3VsdC1kYXRhICAgICAgICAgbmlsLFxcbiAgICAgICAgOnNtYWxsZXN0ICAgICAgICAgICAgWzBdLFxcbiAgICAgICAgOnRpbWUtc2hyaW5raW5nLW1zICAgMCxcXG4gICAgICAgIDp0b3RhbC1ub2Rlcy12aXNpdGVkIDB9fVxcblxcbiAgVGhlIG1lYW5pbmcgb2YgdGhlIGluZGl2aWR1YWwgZW50cmllcyBpczpcXG5cXG4gICAgICA6bnVtLXRlc3RzXFxuICAgICAgVGhlIHRvdGFsIG51bWJlciBvZiB0cmlhbHMgdGhhdCB3YXMgd2VyZSBydW4sIG5vdCBpbmNsdWRpbmdcXG4gICAgICBzaHJpbmtpbmcgKGlmIGFwcGxpY2FibGUpXFxuXFxuICAgICAgOnBhc3M/XFxuICAgICAgQSBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciB0aGUgdGVzdCBwYXNzZWQgb3IgZmFpbGVkXFxuXFxuICAgICAgOnJlc3VsdFxcbiAgICAgIEEgbGVnYWN5IGVudHJ5IHRoYXQgaXMgc2ltaWxhciB0byA6cGFzcz9cXG5cXG4gICAgICA6c2VlZFxcbiAgICAgIFRoZSBzZWVkIHVzZWQgZm9yIHRoZSBlbnRpcmUgdGVzdCBydW47IGNhbiBiZSB1c2VkIHRvIHJlcHJvZHVjZVxcbiAgICAgIGEgdGVzdCBydW4gYnkgcGFzc2luZyBpdCBhcyB0aGUgOnNlZWQgb3B0aW9uIHRvIHF1aWNrLWNoZWNrXFxuXFxuICAgICAgOnRpbWUtZWxhcHNlZC1tc1xcbiAgICAgIFRoZSB0b3RhbCB0aW1lLCBpbiBtaWxsaXNlY29uZHMsIG9mIGEgc3VjY2Vzc2Z1bCB0ZXN0IHJ1blxcblxcbiAgICAgIDpmYWlsXFxuICAgICAgVGhlIGdlbmVyYXRlZCB2YWx1ZXMgZm9yIHRoZSBmaXJzdCBmYWlsdXJlOyBub3RlIHRoYXQgdGhpcyBpc1xcbiAgICAgIGFsd2F5cyBhIHZlY3Rvciwgc2luY2UgcHJvcC9mb3ItYWxsIGNhbiBoYXZlIG11bHRpcGxlIGNsYXVzZXNcXG5cXG4gICAgICA6ZmFpbGVkLWFmdGVyLW1zXFxuICAgICAgVGhlIHRvdGFsIHRpbWUsIGluIG1pbGxpc2Vjb25kcywgc3BlbnQgZmluZGluZyB0aGUgZmlyc3QgZmFpbGluZ1xcbiAgICAgIHRyaWFsXFxuXFxuICAgICAgOmZhaWxpbmctc2l6ZVxcbiAgICAgIFRoZSB2YWx1ZSBvZiB0aGUgc2l6ZSBwYXJhbWV0ZXIgdXNlZCB0byBnZW5lcmF0ZSB0aGUgZmlyc3RcXG4gICAgICBmYWlsdXJlXFxuXFxuICAgICAgOnJlc3VsdC1kYXRhXFxuICAgICAgVGhlIHJlc3VsdCBkYXRhLCBpZiBhbnksIG9mIHRoZSBmaXJzdCBmYWlsaW5nIHRyaWFsICh0byB0YWtlXFxuICAgICAgYWR2YW50YWdlIG9mIHRoaXMgYSBwcm9wZXJ0eSBtdXN0IHJldHVybiBhbiBvYmplY3Qgc2F0aXNmeWluZ1xcbiAgICAgIHRoZSBjbG9qdXJlLnRlc3QuY2hlY2sucmVzdWx0cy9SZXN1bHQgcHJvdG9jb2wpXFxuXFxuICAgICAgOnNocnVua1xcbiAgICAgIEEgbWFwIG9mIGRhdGEgYWJvdXQgdGhlIHNocmlua2luZyBwcm9jZXNzOyBuZXN0ZWQga2V5cyB0aGF0XFxuICAgICAgYXBwZWFyIGF0IHRoZSB0b3AgbGV2ZWwgaGF2ZSB0aGUgc2FtZSBtZWFuaW5nOyBvdGhlciBrZXlzIGFyZVxcbiAgICAgIGRvY3VtZW50ZWQgbmV4dFxcblxcbiAgICAgIDpzaHJ1bmsgLyA6ZGVwdGhcXG4gICAgICBUaGUgZGVwdGggaW4gdGhlIHNocmluayB0cmVlIHRoYXQgdGhlIHNtYWxsZXN0IGZhaWxpbmcgaW5zdGFuY2VcXG4gICAgICB3YXMgZm91bmQ7IHRoaXMgaXMgZXNzZW50aWFsbHkgdGhlIGlkZWEgb2YgaG93IG1hbnkgdGltZXMgdGhlXFxuICAgICAgb3JpZ2luYWwgZmFpbHVyZSB3YXMgc3VjY2Vzc2Z1bGx5IHNocnVua1xcblxcbiAgICAgIDpzbWFsbGVzdFxcbiAgICAgIFRoZSBzbWFsbGVzdCB2YWx1ZXMgZm91bmQgaW4gdGhlIHNocmlua2luZyBwcm9jZXNzIHRoYXQgc3RpbGxcXG4gICAgICBmYWlsIHRoZSB0ZXN0OyB0aGlzIGlzIGEgdmVjdG9yIG9mIHRoZSBzYW1lIHR5cGUgYXMgOmZhaWxcXG5cXG4gICAgICA6dGltZS1zaHJpbmtpbmctbXNcXG4gICAgICBUaGUgdG90YWwgdGltZSwgaW4gbWlsbGlzZWNvbmRzLCBzcGVudCBzaHJpbmtpbmdcXG5cXG4gICAgICA6dG90YWwtbm9kZXMtdmlzaXRlZFxcbiAgICAgIFRoZSB0b3RhbCBudW1iZXIgb2Ygc3RlcHMgaW4gdGhlIHNocmlua2luZyBwcm9jZXNzXFxuXFxuICBFeGFtcGxlczpcXG5cXG4gICAgICAoZGVmIHAgKGZvci1hbGwgW2EgZ2VuL25hdF0gKD4gKCogYSBhKSBhKSkpXFxuXFxuICAgICAgKHF1aWNrLWNoZWNrIDEwMCBwKVxcbiAgICAgIChxdWljay1jaGVjayAyMDAgcFxcbiAgICAgICAgICAgICAgICAgICA6c2VlZCA0MlxcbiAgICAgICAgICAgICAgICAgICA6bWF4LXNpemUgNTBcXG4gICAgICAgICAgICAgICAgICAgOnJlcG9ydGVyLWZuIChmbiBbbV1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHdoZW4gKD0gOmZhaWx1cmUgKDp0eXBlIG0pKVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcmludGxuIFxcXCJVaCBvaC4uLlxcXCIpKSkpXCJcbiBbbnVtLXRlc3RzXG4gIHByb3BlcnR5XG4gICZcbiAgezprZXlzIFtzZWVkIG1heC1zaXplIHJlcG9ydGVyLWZuXSxcbiAgIDpvciB7bWF4LXNpemUgMjAwLCByZXBvcnRlci1mbiAoY29uc3RhbnRseSBuaWwpfX1dXG4gKGxldFxuICBbW2NyZWF0ZWQtc2VlZCBybmddXG4gICAobWFrZS1ybmcgc2VlZClcbiAgIHNpemUtc2VxXG4gICAoZ2VuL21ha2Utc2l6ZS1yYW5nZS1zZXEgbWF4LXNpemUpXG4gICBzdGFydC10aW1lXG4gICAoZ2V0LWN1cnJlbnQtdGltZS1taWxsaXMpXVxuICAobG9vcFxuICAgW3NvLWZhciAwIHNpemUtc2VxIHNpemUtc2VxIHJzdGF0ZSBybmddXG4gICAoaWZcbiAgICAoPT0gc28tZmFyIG51bS10ZXN0cylcbiAgICAoY29tcGxldGUgcHJvcGVydHkgbnVtLXRlc3RzIGNyZWF0ZWQtc2VlZCBzdGFydC10aW1lIHJlcG9ydGVyLWZuKVxuICAgIChsZXRcbiAgICAgW1tzaXplICYgcmVzdC1zaXplLXNlcV1cbiAgICAgIHNpemUtc2VxXG4gICAgICBbcjEgcjJdXG4gICAgICAocmFuZG9tL3NwbGl0IHJzdGF0ZSlcbiAgICAgIHJlc3VsdC1tYXAtcm9zZVxuICAgICAgKGdlbi9jYWxsLWdlbiBwcm9wZXJ0eSByMSBzaXplKVxuICAgICAgcmVzdWx0LW1hcFxuICAgICAgKHJvc2Uvcm9vdCByZXN1bHQtbWFwLXJvc2UpXG4gICAgICByZXN1bHRcbiAgICAgICg6cmVzdWx0IHJlc3VsdC1tYXApXG4gICAgICBhcmdzXG4gICAgICAoOmFyZ3MgcmVzdWx0LW1hcClcbiAgICAgIHNvLWZhclxuICAgICAgKGluYyBzby1mYXIpXVxuICAgICAoaWZcbiAgICAgIChyZXN1bHRzL3Bhc3M/IHJlc3VsdClcbiAgICAgIChkb1xuICAgICAgIChyZXBvcnRlci1mblxuICAgICAgICB7OmFyZ3MgYXJncyxcbiAgICAgICAgIDpudW0tdGVzdHMtdG90YWwgbnVtLXRlc3RzLFxuICAgICAgICAgOnByb3BlcnR5IHByb3BlcnR5LFxuICAgICAgICAgOm51bS10ZXN0cyBzby1mYXIsXG4gICAgICAgICA6dHlwZSA6dHJpYWwsXG4gICAgICAgICA6c2VlZCBzZWVkLFxuICAgICAgICAgOnJlc3VsdCByZXN1bHQsXG4gICAgICAgICA6cmVzdWx0LWRhdGEgKHJlc3VsdHMvcmVzdWx0LWRhdGEgcmVzdWx0KSxcbiAgICAgICAgIDpwYXNzPyB0cnVlfSlcbiAgICAgICAocmVjdXIgc28tZmFyIHJlc3Qtc2l6ZS1zZXEgcjIpKVxuICAgICAgKGZhaWx1cmVcbiAgICAgICBwcm9wZXJ0eVxuICAgICAgIHJlc3VsdC1tYXAtcm9zZVxuICAgICAgIHNvLWZhclxuICAgICAgIHNpemVcbiAgICAgICBjcmVhdGVkLXNlZWRcbiAgICAgICBzdGFydC10aW1lXG4gICAgICAgcmVwb3J0ZXItZm4pKSkpKSkpXG4ifSksIGNsanMudG9vbHMucmVhZGVyLmltcGwuaW5zcGVjdCAoezpzeW0gaW5zcGVjdCwgOm1ldGEgezpkb2MgIlJldHVybiBhIHN0cmluZyBkZXNjcmlwdGlvbiBvZiB0aGUgdmFsdWUgc3VwcGxpZWQuXG4gICBNYXkgYmUgdGhlIGEgc3RyaW5nIHZlcnNpb24gb2YgdGhlIHZhbHVlIGl0c2VsZiAoZS5nLiBcInRydWVcIilcbiAgIG9yIGl0IG1heSBiZSBhIGRlc2NyaXB0aW9uIChlLmcuIFwiYW4gaW5zdGFuY2Ugb2YgRm9vXCIpLlxuICAgSWYgdHJ1bmNhdGUgaXMgdHJ1ZSB0aGVuIHJldHVybiBhIHZlcnkgdGVyc2UgdmVyc2lvbiBvZlxuICAgdGhlIGluc3BlY3Rpb24uIiwgOmFyZ2xpc3RzIFtbeF0gW3RydW5jYXRlIHhdXX0sIDpzb3VyY2UgIihkZWZuXG4gaW5zcGVjdFxuIFwiUmV0dXJuIGEgc3RyaW5nIGRlc2NyaXB0aW9uIG9mIHRoZSB2YWx1ZSBzdXBwbGllZC5cXG4gICBNYXkgYmUgdGhlIGEgc3RyaW5nIHZlcnNpb24gb2YgdGhlIHZhbHVlIGl0c2VsZiAoZS5nLiBcXFwidHJ1ZVxcXCIpXFxuICAgb3IgaXQgbWF5IGJlIGEgZGVzY3JpcHRpb24gKGUuZy4gXFxcImFuIGluc3RhbmNlIG9mIEZvb1xcXCIpLlxcbiAgIElmIHRydW5jYXRlIGlzIHRydWUgdGhlbiByZXR1cm4gYSB2ZXJ5IHRlcnNlIHZlcnNpb24gb2ZcXG4gICB0aGUgaW5zcGVjdGlvbi5cIlxuIChbeF0gKGluc3BlY3QqIGZhbHNlIHgpKVxuIChbdHJ1bmNhdGUgeF0gKGluc3BlY3QqIHRydW5jYXRlIHgpKSlcbiJ9KSwgc2FibG9uby5jb3JlICh7OnN5bSB3cmFwLWF0dHJzLCA6bWV0YSB7OmRvYyAiQWRkIGFuIG9wdGlvbmFsIGF0dHJpYnV0ZSBhcmd1bWVudCB0byBhIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBhIGVsZW1lbnQgdmVjdG9yLiIsIDphcmdsaXN0cyAoW2Z1bmNdKX0sIDpzb3VyY2UgIihkZWZuXG4gd3JhcC1hdHRyc1xuIFwiQWRkIGFuIG9wdGlvbmFsIGF0dHJpYnV0ZSBhcmd1bWVudCB0byBhIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBhIGVsZW1lbnQgdmVjdG9yLlwiXG4gW2Z1bmNdXG4gKGZuXG4gIFsmIGFyZ3NdXG4gIChpZlxuICAgKG1hcD8gKGZpcnN0IGFyZ3MpKVxuICAgKGxldFxuICAgIFtbdGFnICYgYm9keV0gKGFwcGx5IGZ1bmMgKHJlc3QgYXJncykpXVxuICAgIChpZlxuICAgICAobWFwPyAoZmlyc3QgYm9keSkpXG4gICAgIChpbnRvIFt0YWcgKG1lcmdlIChmaXJzdCBib2R5KSAoZmlyc3QgYXJncykpXSAocmVzdCBib2R5KSlcbiAgICAgKGludG8gW3RhZyAoZmlyc3QgYXJncyldIGJvZHkpKSlcbiAgIChhcHBseSBmdW5jIGFyZ3MpKSkpXG4ifSB7OnN5bSBpbmNsdWRlLWNzcywgOm1ldGEgezpkb2MgIkluY2x1ZGUgYSBsaXN0IG9mIGV4dGVybmFsIHN0eWxlc2hlZXQgZmlsZXMuIiwgOmFyZ2xpc3RzIChbJiBzdHlsZXNdKX0sIDpzb3VyY2UgIihkZWZuXG4gaW5jbHVkZS1jc3NcbiBcIkluY2x1ZGUgYSBsaXN0IG9mIGV4dGVybmFsIHN0eWxlc2hlZXQgZmlsZXMuXCJcbiBbJiBzdHlsZXNdXG4gKGZvclxuICBbc3R5bGUgc3R5bGVzXVxuICBbOmxpbmsgezp0eXBlIFwidGV4dC9jc3NcIiwgOmhyZWYgKGFzLXN0ciBzdHlsZSksIDpyZWwgXCJzdHlsZXNoZWV0XCJ9XSkpXG4ifSB7OnN5bSBpbmNsdWRlLWpzLCA6bWV0YSB7OmRvYyAiSW5jbHVkZSB0aGUgSmF2YVNjcmlwdCBsaWJyYXJ5IGF0IGBzcmNgLiIsIDphcmdsaXN0cyAoW3NyY10pfSwgOnNvdXJjZSAiKGRlZm5cbiBpbmNsdWRlLWpzXG4gXCJJbmNsdWRlIHRoZSBKYXZhU2NyaXB0IGxpYnJhcnkgYXQgYHNyY2AuXCJcbiBbc3JjXVxuIChkb20vYXBwZW5kQ2hpbGRcbiAgKC4tYm9keSAoZG9tL2dldERvY3VtZW50KSlcbiAgKGRvbS9jcmVhdGVEb20gXCJzY3JpcHRcIiAjanMgezpzcmMgc3JjfSkpKVxuIn0gezpzeW0gaW5jbHVkZS1yZWFjdCwgOm1ldGEgezpkb2MgIkluY2x1ZGUgRmFjZWJvb2sncyBSZWFjdCBKYXZhU2NyaXB0IGxpYnJhcnkuIiwgOmFyZ2xpc3RzIChbXSl9LCA6c291cmNlICIoZGVmblxuIGluY2x1ZGUtcmVhY3RcbiBcIkluY2x1ZGUgRmFjZWJvb2sncyBSZWFjdCBKYXZhU2NyaXB0IGxpYnJhcnkuXCJcbiBbXVxuIChpbmNsdWRlLWpzIFwiaHR0cDovL2ZiLm1lL3JlYWN0LTAuMTIuMi5qc1wiKSlcbiJ9IHs6c3ltICpncm91cCosIDptZXRhIHt9LCA6c291cmNlICIoZGVmICpncm91cCogW10pXG4ifSB7OnN5bSBmaWxlLXVwbG9hZCwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgZmlsZS11cGxvYWQgZmlsZS1maWVsZClcbiJ9KSwgY2xvanVyZS5zZXQgKHs6c3ltIHVuaW9uLCA6bWV0YSB7OmRvYyAiUmV0dXJuIGEgc2V0IHRoYXQgaXMgdGhlIHVuaW9uIG9mIHRoZSBpbnB1dCBzZXRzIiwgOmFyZ2xpc3RzIFtbXSBbczFdIFtzMSBzMl0gW3MxIHMyICYgc2V0c11dfSwgOnNvdXJjZSAiKGRlZm5cbiB1bmlvblxuIFwiUmV0dXJuIGEgc2V0IHRoYXQgaXMgdGhlIHVuaW9uIG9mIHRoZSBpbnB1dCBzZXRzXCJcbiAoW10gI3t9KVxuIChbczFdIHMxKVxuIChbczEgczJdXG4gIChpZlxuICAgKDwgKGNvdW50IHMxKSAoY291bnQgczIpKVxuICAgKHJlZHVjZSBjb25qIHMyIHMxKVxuICAgKHJlZHVjZSBjb25qIHMxIHMyKSkpXG4gKFtzMSBzMiAmIHNldHNdXG4gIChsZXRcbiAgIFtidWJibGVkLXNldHMgKGJ1YmJsZS1tYXgta2V5IGNvdW50IChjb25qIHNldHMgczIgczEpKV1cbiAgIChyZWR1Y2UgaW50byAoZmlyc3QgYnViYmxlZC1zZXRzKSAocmVzdCBidWJibGVkLXNldHMpKSkpKVxuIn0gezpzeW0gbWFwLWludmVydCwgOm1ldGEgezpkb2MgIlJldHVybnMgdGhlIG1hcCB3aXRoIHRoZSB2YWxzIG1hcHBlZCB0byB0aGUga2V5cy4iLCA6YXJnbGlzdHMgKFttXSl9LCA6c291cmNlICIoZGVmblxuIG1hcC1pbnZlcnRcbiBcIlJldHVybnMgdGhlIG1hcCB3aXRoIHRoZSB2YWxzIG1hcHBlZCB0byB0aGUga2V5cy5cIlxuIFttXVxuIChyZWR1Y2UgKGZuIFttIFtrIHZdXSAoYXNzb2MgbSB2IGspKSB7fSBtKSlcbiJ9IHs6c3ltIGpvaW4sIDptZXRhIHs6ZG9jICJXaGVuIHBhc3NlZCAyIHJlbHMsIHJldHVybnMgdGhlIHJlbCBjb3JyZXNwb25kaW5nIHRvIHRoZSBuYXR1cmFsXG4gIGpvaW4uIFdoZW4gcGFzc2VkIGFuIGFkZGl0aW9uYWwga2V5bWFwLCBqb2lucyBvbiB0aGUgY29ycmVzcG9uZGluZ1xuICBrZXlzLiIsIDphcmdsaXN0cyBbW3hyZWwgeXJlbF0gW3hyZWwgeXJlbCBrbV1dfSwgOnNvdXJjZSAiKGRlZm5cbiBqb2luXG4gXCJXaGVuIHBhc3NlZCAyIHJlbHMsIHJldHVybnMgdGhlIHJlbCBjb3JyZXNwb25kaW5nIHRvIHRoZSBuYXR1cmFsXFxuICBqb2luLiBXaGVuIHBhc3NlZCBhbiBhZGRpdGlvbmFsIGtleW1hcCwgam9pbnMgb24gdGhlIGNvcnJlc3BvbmRpbmdcXG4gIGtleXMuXCJcbiAoW3hyZWwgeXJlbF1cbiAgKGlmXG4gICAoYW5kIChzZXEgeHJlbCkgKHNlcSB5cmVsKSlcbiAgIChsZXRcbiAgICBba3NcbiAgICAgKGludGVyc2VjdGlvbiAoc2V0IChrZXlzIChmaXJzdCB4cmVsKSkpIChzZXQgKGtleXMgKGZpcnN0IHlyZWwpKSkpXG4gICAgIFtyIHNdXG4gICAgIChpZiAoPD0gKGNvdW50IHhyZWwpIChjb3VudCB5cmVsKSkgW3hyZWwgeXJlbF0gW3lyZWwgeHJlbF0pXG4gICAgIGlkeFxuICAgICAoaW5kZXggciBrcyldXG4gICAgKHJlZHVjZVxuICAgICAoZm5cbiAgICAgIFtyZXQgeF1cbiAgICAgIChsZXRcbiAgICAgICBbZm91bmQgKGlkeCAoc2VsZWN0LWtleXMgeCBrcykpXVxuICAgICAgIChpZlxuICAgICAgICBmb3VuZFxuICAgICAgICAocmVkdWNlXG4gICAgICAgICAoZm4qXG4gICAgICAgICAgW3AxX180MjcwOSMgcDJfXzQyNzEwI11cbiAgICAgICAgICAoY29uaiBwMV9fNDI3MDkjIChtZXJnZSBwMl9fNDI3MTAjIHgpKSlcbiAgICAgICAgIHJldFxuICAgICAgICAgZm91bmQpXG4gICAgICAgIHJldCkpKVxuICAgICAje31cbiAgICAgcykpXG4gICAje30pKVxuIChbeHJlbCB5cmVsIGttXVxuICAobGV0XG4gICBbW3IgcyBrXVxuICAgIChpZlxuICAgICAoPD0gKGNvdW50IHhyZWwpIChjb3VudCB5cmVsKSlcbiAgICAgW3hyZWwgeXJlbCAobWFwLWludmVydCBrbSldXG4gICAgIFt5cmVsIHhyZWwga21dKVxuICAgIGlkeFxuICAgIChpbmRleCByICh2YWxzIGspKV1cbiAgIChyZWR1Y2VcbiAgICAoZm5cbiAgICAgW3JldCB4XVxuICAgICAobGV0XG4gICAgICBbZm91bmQgKGlkeCAocmVuYW1lLWtleXMgKHNlbGVjdC1rZXlzIHggKGtleXMgaykpIGspKV1cbiAgICAgIChpZlxuICAgICAgIGZvdW5kXG4gICAgICAgKHJlZHVjZVxuICAgICAgICAoZm4qXG4gICAgICAgICBbcDFfXzQyNzExIyBwMl9fNDI3MTIjXVxuICAgICAgICAgKGNvbmogcDFfXzQyNzExIyAobWVyZ2UgcDJfXzQyNzEyIyB4KSkpXG4gICAgICAgIHJldFxuICAgICAgICBmb3VuZClcbiAgICAgICByZXQpKSlcbiAgICAje31cbiAgICBzKSkpKVxuIn0gezpzeW0gc2VsZWN0LCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIHNldCBvZiB0aGUgZWxlbWVudHMgZm9yIHdoaWNoIHByZWQgaXMgdHJ1ZSIsIDphcmdsaXN0cyAoW3ByZWQgeHNldF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBzZWxlY3RcbiBcIlJldHVybnMgYSBzZXQgb2YgdGhlIGVsZW1lbnRzIGZvciB3aGljaCBwcmVkIGlzIHRydWVcIlxuIFtwcmVkIHhzZXRdXG4gKHJlZHVjZSAoZm4gW3Mga10gKGlmIChwcmVkIGspIHMgKGRpc2ogcyBrKSkpIHhzZXQgeHNldCkpXG4ifSB7OnN5bSBpbnRlcnNlY3Rpb24sIDptZXRhIHs6ZG9jICJSZXR1cm4gYSBzZXQgdGhhdCBpcyB0aGUgaW50ZXJzZWN0aW9uIG9mIHRoZSBpbnB1dCBzZXRzIiwgOmFyZ2xpc3RzIFtbczFdIFtzMSBzMl0gW3MxIHMyICYgc2V0c11dfSwgOnNvdXJjZSAiKGRlZm5cbiBpbnRlcnNlY3Rpb25cbiBcIlJldHVybiBhIHNldCB0aGF0IGlzIHRoZSBpbnRlcnNlY3Rpb24gb2YgdGhlIGlucHV0IHNldHNcIlxuIChbczFdIHMxKVxuIChbczEgczJdXG4gIChpZlxuICAgKDwgKGNvdW50IHMyKSAoY291bnQgczEpKVxuICAgKHJlY3VyIHMyIHMxKVxuICAgKHJlZHVjZVxuICAgIChmblxuICAgICBbcmVzdWx0IGl0ZW1dXG4gICAgIChpZiAoY29udGFpbnM/IHMyIGl0ZW0pIHJlc3VsdCAoZGlzaiByZXN1bHQgaXRlbSkpKVxuICAgIHMxXG4gICAgczEpKSlcbiAoW3MxIHMyICYgc2V0c11cbiAgKGxldFxuICAgW2J1YmJsZWQtc2V0c1xuICAgIChidWJibGUtbWF4LWtleVxuICAgICAoZm4qIFtwMV9fNDI3MDYjXSAoLSAoY291bnQgcDFfXzQyNzA2IykpKVxuICAgICAoY29uaiBzZXRzIHMyIHMxKSldXG4gICAocmVkdWNlIGludGVyc2VjdGlvbiAoZmlyc3QgYnViYmxlZC1zZXRzKSAocmVzdCBidWJibGVkLXNldHMpKSkpKVxuIn0gezpzeW0gc3VwZXJzZXQ/LCA6bWV0YSB7OmRvYyAiSXMgc2V0MSBhIHN1cGVyc2V0IG9mIHNldDI/IiwgOmFyZ2xpc3RzIChbc2V0MSBzZXQyXSl9LCA6c291cmNlICIoZGVmblxuIHN1cGVyc2V0P1xuIFwiSXMgc2V0MSBhIHN1cGVyc2V0IG9mIHNldDI/XCJcbiBbc2V0MSBzZXQyXVxuIChhbmRcbiAgKD49IChjb3VudCBzZXQxKSAoY291bnQgc2V0MikpXG4gIChldmVyeT8gKGZuKiBbcDFfXzQyNzE0I10gKGNvbnRhaW5zPyBzZXQxIHAxX180MjcxNCMpKSBzZXQyKSkpXG4ifSB7OnN5bSBpbmRleCwgOm1ldGEgezpkb2MgIlJldHVybnMgYSBtYXAgb2YgdGhlIGRpc3RpbmN0IHZhbHVlcyBvZiBrcyBpbiB0aGUgeHJlbCBtYXBwZWQgdG8gYVxuICBzZXQgb2YgdGhlIG1hcHMgaW4geHJlbCB3aXRoIHRoZSBjb3JyZXNwb25kaW5nIHZhbHVlcyBvZiBrcy4iLCA6YXJnbGlzdHMgKFt4cmVsIGtzXSl9LCA6c291cmNlICIoZGVmblxuIGluZGV4XG4gXCJSZXR1cm5zIGEgbWFwIG9mIHRoZSBkaXN0aW5jdCB2YWx1ZXMgb2Yga3MgaW4gdGhlIHhyZWwgbWFwcGVkIHRvIGFcXG4gIHNldCBvZiB0aGUgbWFwcyBpbiB4cmVsIHdpdGggdGhlIGNvcnJlc3BvbmRpbmcgdmFsdWVzIG9mIGtzLlwiXG4gW3hyZWwga3NdXG4gKHJlZHVjZVxuICAoZm5cbiAgIFttIHhdXG4gICAobGV0IFtpayAoc2VsZWN0LWtleXMgeCBrcyldIChhc3NvYyBtIGlrIChjb25qIChnZXQgbSBpayAje30pIHgpKSkpXG4gIHt9XG4gIHhyZWwpKVxuIn0gezpzeW0gc3Vic2V0PywgOm1ldGEgezpkb2MgIklzIHNldDEgYSBzdWJzZXQgb2Ygc2V0Mj8iLCA6YXJnbGlzdHMgKFtzZXQxIHNldDJdKX0sIDpzb3VyY2UgIihkZWZuXG4gc3Vic2V0P1xuIFwiSXMgc2V0MSBhIHN1YnNldCBvZiBzZXQyP1wiXG4gW3NldDEgc2V0Ml1cbiAoYW5kXG4gICg8PSAoY291bnQgc2V0MSkgKGNvdW50IHNldDIpKVxuICAoZXZlcnk/IChmbiogW3AxX180MjcxMyNdIChjb250YWlucz8gc2V0MiBwMV9fNDI3MTMjKSkgc2V0MSkpKVxuIn0gezpzeW0gcmVuYW1lLCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIHJlbCBvZiB0aGUgbWFwcyBpbiB4cmVsIHdpdGggdGhlIGtleXMgaW4ga21hcCByZW5hbWVkIHRvIHRoZSB2YWxzIGluIGttYXAiLCA6YXJnbGlzdHMgKFt4cmVsIGttYXBdKX0sIDpzb3VyY2UgIihkZWZuXG4gcmVuYW1lXG4gXCJSZXR1cm5zIGEgcmVsIG9mIHRoZSBtYXBzIGluIHhyZWwgd2l0aCB0aGUga2V5cyBpbiBrbWFwIHJlbmFtZWQgdG8gdGhlIHZhbHMgaW4ga21hcFwiXG4gW3hyZWwga21hcF1cbiAoc2V0IChtYXAgKGZuKiBbcDFfXzQyNzA4I10gKHJlbmFtZS1rZXlzIHAxX180MjcwOCMga21hcCkpIHhyZWwpKSlcbiJ9IHs6c3ltIHJlbmFtZS1rZXlzLCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0aGUgbWFwIHdpdGggdGhlIGtleXMgaW4ga21hcCByZW5hbWVkIHRvIHRoZSB2YWxzIGluIGttYXAiLCA6YXJnbGlzdHMgKFttYXAga21hcF0pfSwgOnNvdXJjZSAiKGRlZm5cbiByZW5hbWUta2V5c1xuIFwiUmV0dXJucyB0aGUgbWFwIHdpdGggdGhlIGtleXMgaW4ga21hcCByZW5hbWVkIHRvIHRoZSB2YWxzIGluIGttYXBcIlxuIFttYXAga21hcF1cbiAocmVkdWNlXG4gIChmblxuICAgW20gW29sZCBuZXddXVxuICAgKGlmIChjb250YWlucz8gbWFwIG9sZCkgKGFzc29jIG0gbmV3IChnZXQgbWFwIG9sZCkpIG0pKVxuICAoYXBwbHkgZGlzc29jIG1hcCAoa2V5cyBrbWFwKSlcbiAga21hcCkpXG4ifSB7OnN5bSBwcm9qZWN0LCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIHJlbCBvZiB0aGUgZWxlbWVudHMgb2YgeHJlbCB3aXRoIG9ubHkgdGhlIGtleXMgaW4ga3MiLCA6YXJnbGlzdHMgKFt4cmVsIGtzXSl9LCA6c291cmNlICIoZGVmblxuIHByb2plY3RcbiBcIlJldHVybnMgYSByZWwgb2YgdGhlIGVsZW1lbnRzIG9mIHhyZWwgd2l0aCBvbmx5IHRoZSBrZXlzIGluIGtzXCJcbiBbeHJlbCBrc11cbiAoc2V0IChtYXAgKGZuKiBbcDFfXzQyNzA3I10gKHNlbGVjdC1rZXlzIHAxX180MjcwNyMga3MpKSB4cmVsKSkpXG4ifSB7OnN5bSBkaWZmZXJlbmNlLCA6bWV0YSB7OmRvYyAiUmV0dXJuIGEgc2V0IHRoYXQgaXMgdGhlIGZpcnN0IHNldCB3aXRob3V0IGVsZW1lbnRzIG9mIHRoZSByZW1haW5pbmcgc2V0cyIsIDphcmdsaXN0cyBbW3MxXSBbczEgczJdIFtzMSBzMiAmIHNldHNdXX0sIDpzb3VyY2UgIihkZWZuXG4gZGlmZmVyZW5jZVxuIFwiUmV0dXJuIGEgc2V0IHRoYXQgaXMgdGhlIGZpcnN0IHNldCB3aXRob3V0IGVsZW1lbnRzIG9mIHRoZSByZW1haW5pbmcgc2V0c1wiXG4gKFtzMV0gczEpXG4gKFtzMSBzMl1cbiAgKGlmXG4gICAoPCAoY291bnQgczEpIChjb3VudCBzMikpXG4gICAocmVkdWNlXG4gICAgKGZuXG4gICAgIFtyZXN1bHQgaXRlbV1cbiAgICAgKGlmIChjb250YWlucz8gczIgaXRlbSkgKGRpc2ogcmVzdWx0IGl0ZW0pIHJlc3VsdCkpXG4gICAgczFcbiAgICBzMSlcbiAgIChyZWR1Y2UgZGlzaiBzMSBzMikpKVxuIChbczEgczIgJiBzZXRzXSAocmVkdWNlIGRpZmZlcmVuY2UgczEgKGNvbmogc2V0cyBzMikpKSlcbiJ9KSwgY2xqcy5ub2RlanMgKHs6c3ltIHJlcXVpcmUsIDptZXRhIHt9LCA6c291cmNlICIoZGVmIHJlcXVpcmUgKGpzKiBcInJlcXVpcmVcIikpXG4ifSB7OnN5bSBwcm9jZXNzLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiBwcm9jZXNzIChqcyogXCJwcm9jZXNzXCIpKVxuIn0gezpzeW0gZW5hYmxlLXV0aWwtcHJpbnQhLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW10pfSwgOnNvdXJjZSAiKGRlZm5cbiBlbmFibGUtdXRpbC1wcmludCFcbiBbXVxuIChzZXQhICpwcmludC1uZXdsaW5lKiBmYWxzZSlcbiAoc2V0LXByaW50LWZuIVxuICAoZm5cbiAgIFsmIGFyZ3NdXG4gICAoLmFwcGx5ICguLWxvZyBqcy9jb25zb2xlKSBqcy9jb25zb2xlIChpbnRvLWFycmF5IGFyZ3MpKSkpXG4gKHNldC1wcmludC1lcnItZm4hXG4gIChmblxuICAgWyYgYXJnc11cbiAgICguYXBwbHkgKC4tZXJyb3IganMvY29uc29sZSkganMvY29uc29sZSAoaW50by1hcnJheSBhcmdzKSkpKVxuIG5pbClcbiJ9KSwgZGV2dG9vbHMucHJvdG9jb2xzICh7OnN5bSBJVGVtcGxhdGUsIDptZXRhIHs6ZG9jICJNYXJrZXIgcHJvdG9jb2wgaW5kaWNhdGluZyBhIGRldnRvb2xzIHRlbXBsYXRlLiJ9LCA6bWV0aG9kcyAoKX0gezpzeW0gSUdyb3VwLCA6bWV0YSB7OmRvYyAiTWFya2VyIHByb3RvY29sIGluZGljYXRpbmcgYSBkZXZ0b29scyBncm91cC4ifSwgOm1ldGhvZHMgKCl9IHs6c3ltIElTdXJyb2dhdGUsIDptZXRhIHs6ZG9jICJNYXJrZXIgcHJvdG9jb2wgaW5kaWNhdGluZyBhIGRldnRvb2xzIHN1cnJvZ2F0ZSBvYmplY3QuIn0sIDptZXRob2RzICgpfSB7OnN5bSAtaGVhZGVyLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3ZhbHVlXSl9LCA6cHJvdG9jb2wgSUZvcm1hdH0gezpzeW0gLWhhcy1ib2R5LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3ZhbHVlXSl9LCA6cHJvdG9jb2wgSUZvcm1hdH0gezpzeW0gLWJvZHksIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbdmFsdWVdKX0sIDpwcm90b2NvbCBJRm9ybWF0fSB7OnN5bSBJRm9ybWF0LCA6bWV0YSB7OmRvYyBuaWx9LCA6bWV0aG9kcyAoLWJvZHkgLWhhcy1ib2R5IC1oZWFkZXIpfSksIG9kb3lsZS5ydW0gKHs6c3ltICptYXRjaGVzKiwgOm1ldGEgezpkb2MgIklmIGJvdW5kIHRvIGEgdm9sYXRpbGUgY29udGFpbmluZyBhIGhhc2ggbWFwLFxuICAgICAgICAgICAgbWF0Y2hlcyB0cmlnZ2VyZWQgYnkgYGZpcmUtcnVsZXNgIHdpbGwgYmUgc3RvcmVkIGluIGl0XG4gICAgICAgICAgICByYXRoZXIgdGhhbiBpbiB0aGUgYXRvbSBjcmVhdGVkIGJ5IGBydWxlc2V0YC5cbiAgICAgICAgICAgIFRoaXMgaXMgaW1wb3J0YW50IHdoZW4gbW9kaWZ5aW5nIHRoZSBzZXNzaW9uIGluIGEgc2VydmVyLXNpZGVcbiAgICAgICAgICAgIHJvdXRlIGJlY2F1c2UgaXQgZW5zdXJlcyB0aGUgbW9kaWZpY2F0aW9ucyB3aWxsIGJlIGxvY2FsXG4gICAgICAgICAgICBhbmQgd2lsbCBub3QgYWZmZWN0IG90aGVyIGNvbm5lY3Rpb25zIGhhcHBlbmluZyBzaW11bHRhbmVvdXNseS5cbiAgICAgICAgICAgIERvIG5vdCB1c2UgaXQgZnJvbSBjbG9qdXJlc2NyaXB0LiJ9LCA6c291cmNlICIoZGVmICptYXRjaGVzKiBuaWwpXG4ifSB7OnN5bSBhdG9tLCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhbiBhdG9tIHRoYXQgY2FuIGhvbGQgbG9jYWwgc3RhdGUgZm9yIGEgY29tcG9uZW50LlxuICBPbmx5IHdvcmtzIGluIGEgOnRoZW4gYmxvY2suIiwgOmFyZ2xpc3RzIChbaW5pdGlhbC12YWx1ZV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBhdG9tXG4gXCJSZXR1cm5zIGFuIGF0b20gdGhhdCBjYW4gaG9sZCBsb2NhbCBzdGF0ZSBmb3IgYSBjb21wb25lbnQuXFxuICBPbmx5IHdvcmtzIGluIGEgOnRoZW4gYmxvY2suXCJcbiBbaW5pdGlhbC12YWx1ZV1cbiAod2hlbi1ub3RcbiAgKmxvY2FsLXBvaW50ZXIqXG4gICh0aHJvdyAoZXgtaW5mbyBcIllvdSBjYW5ub3QgY2FsbCBgYXRvbWAgaGVyZVwiIHt9KSkpXG4gKHdoZW4tbm90XG4gIEAqY2FuLXJldHVybi1hdG9tPypcbiAgKHRocm93XG4gICAoZXgtaW5mbyBcIllvdSBjYW4gb25seSBjYWxsIGBhdG9tYCBvbmNlIGluIGVhY2ggOnRoZW4gYmxvY2tcIiB7fSkpKVxuICh2cmVzZXQhICpjYW4tcmV0dXJuLWF0b20/KiBmYWxzZSlcbiAoaWYtbGV0XG4gIFsqbG9jYWwgQCpsb2NhbC1wb2ludGVyKl1cbiAgKmxvY2FsXG4gIChsZXRcbiAgIFsqbG9jYWwgKHJlc2V0ISAqbG9jYWwtcG9pbnRlciogKGNsb2p1cmUuY29yZS9hdG9tIGluaXRpYWwtdmFsdWUpKV1cbiAgICh3aGVuLWxldFxuICAgIFtjbXAgKnJlYWN0LWNvbXBvbmVudCpdXG4gICAgKGFkZC13YXRjaFxuICAgICAqbG9jYWxcbiAgICAgOm9kb3lsZS5ydW0vbG9jYWxcbiAgICAgKGZuIFtfIF8gcCBuXSAod2hlbiAobm90PSBwIG4pICguZm9yY2VVcGRhdGUgY21wKSkpKSlcbiAgICpsb2NhbCkpKVxuIn0gezpzeW0gcHJvcCwgOm1ldGEgezpkb2MgIlJldHVybnMgdGhlIHByb3Agc2VudCB0byB0aGUgY29tcG9uZW50LiBPbmx5IHdvcmtzIGluIGEgOnRoZW4gYmxvY2suIiwgOmFyZ2xpc3RzIChbXSl9LCA6c291cmNlICIoZGVmblxuIHByb3BcbiBcIlJldHVybnMgdGhlIHByb3Agc2VudCB0byB0aGUgY29tcG9uZW50LiBPbmx5IHdvcmtzIGluIGEgOnRoZW4gYmxvY2suXCJcbiBbXVxuICh3aGVuLW5vdFxuICAqbG9jYWwtcG9pbnRlcipcbiAgKHRocm93IChleC1pbmZvIFwiWW91IGNhbm5vdCBjYWxsIGBwcm9wYCBoZXJlXCIge30pKSlcbiAqcHJvcCopXG4ifSB7OnN5bSByZWFjdGl2ZSwgOm1ldGEgezpkb2MgIkEgcnVtIG1peGluIHRoYXQgbWFrZXMgdGhlIGFzc29jaWF0ZWQgY29tcG9uZW50IHJlYWN0IHRvIGNoYW5nZXMgZnJvbVxuICB0aGUgc2Vzc2lvbiBhbmQgdGhlIGxvY2FsIGF0b20uIiwgOmFyZ2xpc3RzIChbcnVsZS1rZXkgKm1hdGNoXSl9LCA6c291cmNlICIoZGVmblxuIHJlYWN0aXZlXG4gXCJBIHJ1bSBtaXhpbiB0aGF0IG1ha2VzIHRoZSBhc3NvY2lhdGVkIGNvbXBvbmVudCByZWFjdCB0byBjaGFuZ2VzIGZyb21cXG4gIHRoZSBzZXNzaW9uIGFuZCB0aGUgbG9jYWwgYXRvbS5cIlxuIFtydWxlLWtleSAqbWF0Y2hdXG4gezppbml0XG4gIChmblxuICAgW3N0YXRlIHByb3BzXVxuICAgKC0+XG4gICAgc3RhdGVcbiAgICAoYXNzb2MgOm9kb3lsZS5ydW0vbG9jYWwtcG9pbnRlciAoY2xvanVyZS5jb3JlL2F0b20gbmlsKSlcbiAgICAjPyg6Y2xqcyAoYXNzb2MgOm9kb3lsZS5ydW0vZ2xvYmFsLWtleSAobGV0IFtnbG9iYWwta2V5IChyYW5kb20tdXVpZCkgY21wICg6cnVtL3JlYWN0LWNvbXBvbmVudCBzdGF0ZSldIChhZGQtd2F0Y2ggKm1hdGNoIGdsb2JhbC1rZXkgKGZuIFtfIF8gcCBuXSAod2hlbiAobm90PSBwIG4pICguZm9yY2VVcGRhdGUgY21wKSkpKSBnbG9iYWwta2V5KSkpKSksXG4gIDp3cmFwLXJlbmRlclxuICAoZm5cbiAgIFtyZW5kZXItZm5dXG4gICAoZm5cbiAgICBbc3RhdGVdXG4gICAgKGJpbmRpbmdcbiAgICAgWypsb2NhbC1wb2ludGVyKlxuICAgICAgKDpvZG95bGUucnVtL2xvY2FsLXBvaW50ZXIgc3RhdGUpXG4gICAgICAqcmVhY3QtY29tcG9uZW50KlxuICAgICAgKDpydW0vcmVhY3QtY29tcG9uZW50IHN0YXRlKVxuICAgICAgKmNhbi1yZXR1cm4tYXRvbT8qXG4gICAgICAodm9sYXRpbGUhIHRydWUpXG4gICAgICAqcHJvcCpcbiAgICAgIChmaXJzdCAoOnJ1bS9hcmdzIHN0YXRlKSlcbiAgICAgIG8vKm1hdGNoKlxuICAgICAgIz8oOmNsanMgKGNsb2p1cmUuY29yZS9kZXJlZiAqbWF0Y2gpIDpjbGogKG9yIChzb21lLT4gKm1hdGNoZXMqIGRlcmVmIHJ1bGUta2V5KSAoY2xvanVyZS5jb3JlL2RlcmVmICptYXRjaCkpKV1cbiAgICAgKHJlbmRlci1mbiBzdGF0ZSkpKSksXG4gIDp3aWxsLXVubW91bnRcbiAgKGZuXG4gICBbc3RhdGVdXG4gICAjPyg6Y2xqcyAocmVtb3ZlLXdhdGNoICptYXRjaCAoOm9kb3lsZS5ydW0vZ2xvYmFsLWtleSBzdGF0ZSkpKVxuICAgKHdoZW4tbGV0XG4gICAgWypsb2NhbCBAKDpvZG95bGUucnVtL2xvY2FsLXBvaW50ZXIgc3RhdGUpXVxuICAgIChyZW1vdmUtd2F0Y2ggKmxvY2FsIDpvZG95bGUucnVtL2xvY2FsKSlcbiAgIChkaXNzb2Mgc3RhdGUgOm9kb3lsZS5ydW0vbG9jYWwtcG9pbnRlcikpfSlcbiJ9KSwgY2xvanVyZS50ZXN0LmNoZWNrLnJhbmRvbSAoezpzeW0gcmFuZC1sb25nLCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIHJhbmRvbSBnb29nLm1hdGguTG9uZyBiYXNlZCBvbiB0aGUgZ2l2ZW4gaW1tdXRhYmxlIFJORy5cblxuICBOb3RlOiB0byBtYWludGFpbiBpbmRlcGVuZGVuY2UgeW91IHNob3VsZCBub3QgY2FsbCBtb3JlIHRoYW4gb25lXG4gIGZ1bmN0aW9uIGluIHRoZSBJUmFuZG9tIHByb3RvY29sIHdpdGggdGhlIHNhbWUgYXJndW1lbnQiLCA6YXJnbGlzdHMgKFtybmddKX0sIDpwcm90b2NvbCBJUmFuZG9tfSB7OnN5bSByYW5kLWRvdWJsZSwgOm1ldGEgezpkb2MgIlJldHVybnMgYSByYW5kb20gZG91YmxlIGJldHdlZW4gMC4wIChpbmNsdXNpdmUpIGFuZCAxLjAgKGV4Y2x1c2l2ZSlcbiAgYmFzZWQgb24gdGhlIGdpdmVuIGltbXV0YWJsZSBSTkcuXG5cbiAgTm90ZTogdG8gbWFpbnRhaW4gaW5kZXBlbmRlbmNlIHlvdSBzaG91bGQgbm90IGNhbGwgbW9yZSB0aGFuIG9uZVxuICBmdW5jdGlvbiBpbiB0aGUgSVJhbmRvbSBwcm90b2NvbCB3aXRoIHRoZSBzYW1lIGFyZ3VtZW50IiwgOmFyZ2xpc3RzIChbcm5nXSl9LCA6cHJvdG9jb2wgSVJhbmRvbX0gezpzeW0gc3BsaXQsIDptZXRhIHs6ZG9jICJSZXR1cm5zIHR3byBuZXcgUk5HcyBbcm5nMSBybmcyXSwgd2hpY2ggc2hvdWxkIGdlbmVyYXRlXG4gIHN1ZmZpY2llbnRseSBpbmRlcGVuZGVudCByYW5kb20gZGF0YS5cblxuICBOb3RlOiB0byBtYWludGFpbiBpbmRlcGVuZGVuY2UgeW91IHNob3VsZCBub3QgY2FsbCBtb3JlIHRoYW4gb25lXG4gIGZ1bmN0aW9uIGluIHRoZSBJUmFuZG9tIHByb3RvY29sIHdpdGggdGhlIHNhbWUgYXJndW1lbnQiLCA6YXJnbGlzdHMgKFtybmddKX0sIDpwcm90b2NvbCBJUmFuZG9tfSB7OnN5bSBzcGxpdC1uLCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhIGNvbGxlY3Rpb24gb2YgYG5gIFJOR3MsIHdoaWNoIHNob3VsZCBnZW5lcmF0ZVxuICBzdWZmaWNpZW50bHkgaW5kZXBlbmRlbnQgcmFuZG9tIGRhdGEuXG5cbiAgTm90ZTogdG8gbWFpbnRhaW4gaW5kZXBlbmRlbmNlIHlvdSBzaG91bGQgbm90IGNhbGwgbW9yZSB0aGFuIG9uZVxuICBmdW5jdGlvbiBpbiB0aGUgSVJhbmRvbSBwcm90b2NvbCB3aXRoIHRoZSBzYW1lIGFyZ3VtZW50IiwgOmFyZ2xpc3RzIChbcm5nIG5dKX0sIDpwcm90b2NvbCBJUmFuZG9tfSB7OnN5bSBJUmFuZG9tLCA6bWV0YSB7OmRvYyBuaWx9LCA6bWV0aG9kcyAocmFuZC1kb3VibGUgcmFuZC1sb25nIHNwbGl0IHNwbGl0LW4pfSB7OnN5bSBtYWtlLWphdmEtdXRpbC1zcGxpdHRhYmxlLXJhbmRvbSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtzZWVkXSl9LCA6c291cmNlICIoZGVmblxuIG1ha2UtamF2YS11dGlsLXNwbGl0dGFibGUtcmFuZG9tXG4gW3NlZWRdXG4gKEphdmFVdGlsU3BsaXR0YWJsZVJhbmRvbS5cbiAgZ29sZGVuLWdhbW1hXG4gIChvclxuICAgKGxvbmdzLy0+bG9uZyBzZWVkKVxuICAgKHRocm93IChleC1pbmZvIFwiQmFkIHJhbmRvbSBzZWVkIVwiIHs6c2VlZCBzZWVkfSkpKSkpXG4ifSB7OnN5bSBtYWtlLXJhbmRvbSwgOm1ldGEgezpkb2MgIkdpdmVuIGFuIG9wdGlvbmFsIGludGVnZXIgKG9yIGdvb2cubWF0aC5Mb25nKSBzZWVkLCByZXR1cm5zIGFuXG4gIGltcGxlbWVudGF0aW9uIG9mIHRoZSBJUmFuZG9tIHByb3RvY29sLiIsIDphcmdsaXN0cyBbW10gW3NlZWRdXX0sIDpzb3VyY2UgIihkZWZuXG4gbWFrZS1yYW5kb21cbiBcIkdpdmVuIGFuIG9wdGlvbmFsIGludGVnZXIgKG9yIGdvb2cubWF0aC5Mb25nKSBzZWVkLCByZXR1cm5zIGFuXFxuICBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgSVJhbmRvbSBwcm90b2NvbC5cIlxuIChbXSAobmV4dC1ybmcpKVxuIChbc2VlZF0gKG1ha2UtamF2YS11dGlsLXNwbGl0dGFibGUtcmFuZG9tIHNlZWQpKSlcbiJ9KSwgcGFyZW4tc291cC5pbnN0YXJlcGwgKHs6c3ltICp3ZWItd29ya2VyLXBhdGgqLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiAqd2ViLXdvcmtlci1wYXRoKiBuaWwpXG4ifSB7OnN5bSBmb3JtLT5zZXJpYWxpemFibGUsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZm9ybV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBmb3JtLT5zZXJpYWxpemFibGVcbiBbZm9ybV1cbiAoaWZcbiAgKGluc3RhbmNlPyBqcy9FcnJvciBmb3JtKVxuICAoYXJyYXlcbiAgIChvciAoc29tZS0+IGZvcm0gLi1jYXVzZSAuLW1lc3NhZ2UpICguLW1lc3NhZ2UgZm9ybSkpXG4gICAoLi1maWxlTmFtZSBmb3JtKVxuICAgKC4tbGluZU51bWJlciBmb3JtKSlcbiAgKHByLXN0ciBmb3JtKSkpXG4ifSB7OnN5bSByZXN1bHRzLT5odG1sLCA6bWV0YSB7OmRvYyAiUmV0dXJucyBIVE1MIGZvciB0aGUgZ2l2ZW4gZXZhbCByZXN1bHRzLiIsIDphcmdsaXN0cyAoW3Jlc3VsdHMgbG9jYXRpb25zIGxpbWl0XSl9LCA6c291cmNlICIoZGVmblxuIHJlc3VsdHMtPmh0bWxcbiBcIlJldHVybnMgSFRNTCBmb3IgdGhlIGdpdmVuIGV2YWwgcmVzdWx0cy5cIlxuIFtyZXN1bHRzIGxvY2F0aW9ucyBsaW1pdF1cbiAobG9vcFxuICBbaSAwIGV2YWxzICh0cmFuc2llbnQgW10pXVxuICAobGV0XG4gICBbcmVzIChnZXQgcmVzdWx0cyBpKSB7OmtleXMgW3RvcCBoZWlnaHRdfSAoZ2V0IGxvY2F0aW9ucyBpKV1cbiAgIChpZlxuICAgIChhbmQgcmVzIHRvcCBoZWlnaHQpXG4gICAgKHJlY3VyXG4gICAgIChpbmMgaSlcbiAgICAgKGNvbmohXG4gICAgICBldmFsc1xuICAgICAgKGZvcm1hdFxuICAgICAgIFwiPGRpdiBjbGFzcz0nJXMnIHN0eWxlPSd0b3A6ICVzcHg7IGhlaWdodDogJXNweDsgbWluLWhlaWdodDogJXNweCc+JXM8L2Rpdj5cIlxuICAgICAgIChpZiAoYXJyYXk/IHJlcykgXCJyZXN1bHQgZXJyb3JcIiBcInJlc3VsdFwiKVxuICAgICAgIHRvcFxuICAgICAgIGhlaWdodFxuICAgICAgIGhlaWdodFxuICAgICAgIChzb21lLT5cbiAgICAgICAgKGlmIChhcnJheT8gcmVzKSAoZmlyc3QgcmVzKSByZXMpXG4gICAgICAgICh0cnVuY2F0ZSBsaW1pdClcbiAgICAgICAgaHMvZXNjYXBlLWh0bWwtc3RyKSkpKVxuICAgIChqb2luIChwZXJzaXN0ZW50ISBldmFscykpKSkpKVxuIn0gezpzeW0gdXNlLXdlYi13b3JrZXIhLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW10pfSwgOnNvdXJjZSAiKGRlZm5cbiB1c2Utd2ViLXdvcmtlciFcbiBbXVxuIChzZXQhICp3ZWItd29ya2VyLXBhdGgqIFwicGFyZW4tc291cC1jb21waWxlci5qc1wiKSlcbiJ9IHs6c3ltIGVsZW0/LCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiBlbGVtPyAoZm4qIFtwMV9fNDI3NzEjXSAoaW5zdGFuY2U/IGpzL0VsZW1lbnQgcDFfXzQyNzcxIykpKVxuIn0gezpzeW0gY29sbGVjdGlvbi0+Y29udGVudCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtlbGVtXSl9LCA6c291cmNlICIoZGVmblxuIGNvbGxlY3Rpb24tPmNvbnRlbnRcbiBbZWxlbV1cbiAobG9vcFxuICBbZSBlbGVtIGNvbnRlbnQgKC4tdGV4dENvbnRlbnQgZWxlbSldXG4gIChpZi1sZXRcbiAgIFtwcmV2ICguLXByZXZpb3VzU2libGluZyBlKV1cbiAgIChpZlxuICAgICh0ZXh0LW5vZGU/IHByZXYpXG4gICAgKHJlY3VyIHByZXYgKHN0ciAoLi10ZXh0Q29udGVudCBwcmV2KSBjb250ZW50KSlcbiAgICBjb250ZW50KVxuICAgY29udGVudCkpKVxuIn0gezpzeW0gdHJ1bmNhdGUsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbdGV4dCBsaW1pdF0pfSwgOnNvdXJjZSAiKGRlZm5cbiB0cnVuY2F0ZVxuIFt0ZXh0IGxpbWl0XVxuIChpZiAoPiAoY291bnQgdGV4dCkgbGltaXQpIChzdHIgKHN1YnMgdGV4dCAwIGxpbWl0KSBcIi4uLlwiKSB0ZXh0KSlcbiJ9IHs6c3ltIGNyZWF0ZS1jb21waWxlci1mbiwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtvcHRzXSl9LCA6c291cmNlICIoZGVmblxuIGNyZWF0ZS1jb21waWxlci1mblxuIFtvcHRzXVxuIChpZi1sZXRcbiAgW3dvcmtlciAoc29tZS0+ICp3ZWItd29ya2VyLXBhdGgqIGpzL1dvcmtlci4pXVxuICAoZm5cbiAgIFtjb2xsIHJlY2VpdmUtZm5dXG4gICAoc2V0IVxuICAgICguLW9ubWVzc2FnZSB3b3JrZXIpXG4gICAgKGZuKiBbcDFfXzQyNzcyI10gKHJlY2VpdmUtZm4gKHZlYyAoLi1kYXRhIHAxX180Mjc3MiMpKSkpKVxuICAgKC5wb3N0TWVzc2FnZSB3b3JrZXIgKGludG8tYXJyYXkgY29sbCkpKVxuICAoZm5cbiAgIFtjb2xsIHJlY2VpdmUtZm5dXG4gICAoZXMvY29kZS0+cmVzdWx0c1xuICAgIGNvbGxcbiAgICAoZm5cbiAgICAgW3Jlc3VsdHNdXG4gICAgIChyZWNlaXZlLWZuIChpbnRvLWFycmF5IChtYXB2IGZvcm0tPnNlcmlhbGl6YWJsZSByZXN1bHRzKSkpKVxuICAgIG9wdHMpKSkpXG4ifSB7OnN5bSBnZXQtY29sbGVjdGlvbnMsIDptZXRhIHs6ZG9jICJSZXR1cm5zIGNvbGxlY3Rpb25zIGZyb20gdGhlIGdpdmVuIERPTSBub2RlLiIsIDphcmdsaXN0cyAoW2VsZW1lbnRdKX0sIDpzb3VyY2UgIihkZWZuXG4gZ2V0LWNvbGxlY3Rpb25zXG4gXCJSZXR1cm5zIGNvbGxlY3Rpb25zIGZyb20gdGhlIGdpdmVuIERPTSBub2RlLlwiXG4gW2VsZW1lbnRdXG4gKHZlY1xuICAoZm9yXG4gICBbZWxlbVxuICAgICgtPiBlbGVtZW50IC4tY2hpbGRyZW4gYXJyYXktc2VxKVxuICAgIDpsZXRcbiAgICBbY2xhc3NlcyAoLi1jbGFzc0xpc3QgZWxlbSldXG4gICAgOndoZW5cbiAgICAob3IgKC5jb250YWlucyBjbGFzc2VzIFwiY29sbGVjdGlvblwiKSAoLmNvbnRhaW5zIGNsYXNzZXMgXCJzeW1ib2xcIikpXVxuICAgZWxlbSkpKVxuIn0gezpzeW0gZWxlbXMtPmxvY2F0aW9ucywgOm1ldGEgezpkb2MgIlJldHVybnMgdGhlIGxvY2F0aW9uIG9mIGVhY2ggZWxlbS4iLCA6YXJnbGlzdHMgKFtlbGVtcyB0b3Atb2Zmc2V0XSl9LCA6c291cmNlICIoZGVmblxuIGVsZW1zLT5sb2NhdGlvbnNcbiBcIlJldHVybnMgdGhlIGxvY2F0aW9uIG9mIGVhY2ggZWxlbS5cIlxuIFtlbGVtcyB0b3Atb2Zmc2V0XVxuIChsb29wXG4gIFtpIDAgbG9jYXRpb25zICh0cmFuc2llbnQgW10pXVxuICAoaWYtbGV0XG4gICBbZWxlbSAoZ2V0IGVsZW1zIGkpXVxuICAgKGxldFxuICAgIFt0b3BcbiAgICAgKC0+IGVsZW0gLi1vZmZzZXRUb3AgKC0gdG9wLW9mZnNldCkpXG4gICAgIGhlaWdodFxuICAgICAoLT4gZWxlbSAuLW9mZnNldEhlaWdodCldXG4gICAgKHJlY3VyIChpbmMgaSkgKGNvbmohIGxvY2F0aW9ucyB7OnRvcCB0b3AsIDpoZWlnaHQgaGVpZ2h0fSkpKVxuICAgKHBlcnNpc3RlbnQhIGxvY2F0aW9ucykpKSlcbiJ9KSwgangucmVwb3J0ZXIua2FybWEgKHs6c3ltIGthcm1hLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiBrYXJtYSAodm9sYXRpbGUhIG5pbCkpXG4ifSB7OnN5bSBrYXJtYT8sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbXSl9LCA6c291cmNlICIoZGVmbiBrYXJtYT8gW10gKG5vdCAobmlsPyBAa2FybWEpKSlcbiJ9IHs6c3ltIHRlc3QtdmFyLXJlc3VsdCwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgdGVzdC12YXItcmVzdWx0ICh2b2xhdGlsZSEgW10pKVxuIn0gezpzeW0gdGVzdC12YXItdGltZS1zdGFydCwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgdGVzdC12YXItdGltZS1zdGFydCAodm9sYXRpbGUhIChub3cpKSlcbiJ9IHs6c3ltIHN0YXJ0LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3RjIHRvdGFsLWNvdW50XSl9LCA6c291cmNlICIoZGVmblxuIHN0YXJ0XG4gW3RjIHRvdGFsLWNvdW50XVxuICh2cmVzZXQhIGthcm1hIHRjKVxuIChrYXJtYS1pbmZvISB7OnRvdGFsIHRvdGFsLWNvdW50fSkpXG4ifSksIGZpZ3doZWVsLnJlcGwgKHs6c3ltIGRlZmF1bHQtcG9ydCwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgZGVmYXVsdC1wb3J0IDk1MDApXG4ifSB7OnN5bSBkZWZhdWx0LXNzbC1wb3J0LCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiBkZWZhdWx0LXNzbC1wb3J0IDk1MzMpXG4ifSksIGNsanMucHByaW50ICh7OnN5bSBwcHJpbnQsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIFtbb2JqZWN0XSBbb2JqZWN0IHdyaXRlcl1dfSwgOnNvdXJjZSAiKGRlZm5cbiBwcHJpbnRcbiAoW29iamVjdF1cbiAgKGxldFxuICAgW3NiIChTdHJpbmdCdWZmZXIuKV1cbiAgIChiaW5kaW5nXG4gICAgWypvdXQqIChTdHJpbmdCdWZmZXJXcml0ZXIuIHNiKV1cbiAgICAocHByaW50IG9iamVjdCAqb3V0KilcbiAgICAoc3RyaW5nLXByaW50IChzdHIgc2IpKSkpKVxuIChbb2JqZWN0IHdyaXRlcl1cbiAgKHdpdGgtcHJldHR5LXdyaXRlclxuICAgd3JpdGVyXG4gICAoYmluZGluZyBbKnByaW50LXByZXR0eSogdHJ1ZV0gKHdyaXRlLW91dCBvYmplY3QpKVxuICAgKGlmIChub3QgKD0gMCAoZ2V0LWNvbHVtbiAqb3V0KikpKSAoLXdyaXRlICpvdXQqIFxcbmV3bGluZSkpKSkpXG4ifSB7OnN5bSBnZXQtcHJldHR5LXdyaXRlciwgOm1ldGEgezpkb2MgIlJldHVybnMgdGhlIElXcml0ZXIgcGFzc2VkIGluIHdyYXBwZWQgaW4gYSBwcmV0dHkgd3JpdGVyIHByb3h5LCB1bmxlc3MgaXQnc1xuYWxyZWFkeSBhIHByZXR0eSB3cml0ZXIuIEdlbmVyYWxseSwgaXQgaXMgdW5uZWNlc3NhcnkgdG8gY2FsbCB0aGlzIGZ1bmN0aW9uLCBzaW5jZSBwcHJpbnQsXG53cml0ZSwgYW5kIGNsLWZvcm1hdCBhbGwgY2FsbCBpdCBpZiB0aGV5IG5lZWQgdG8uIEhvd2V2ZXIgaWYgeW91IHdhbnQgdGhlIHN0YXRlIHRvIGJlXG5wcmVzZXJ2ZWQgYWNyb3NzIGNhbGxzLCB5b3Ugd2lsbCB3YW50IHRvIHdyYXAgdGhlbSB3aXRoIHRoaXMuXG5cbkZvciBleGFtcGxlLCB3aGVuIHlvdSB3YW50IHRvIGdlbmVyYXRlIGNvbHVtbi1hd2FyZSBvdXRwdXQgd2l0aCBtdWx0aXBsZSBjYWxscyB0byBjbC1mb3JtYXQsXG5kbyBpdCBsaWtlIGluIHRoaXMgZXhhbXBsZTpcblxuICAgIChkZWZuIHByaW50LXRhYmxlIFthc2VxIGNvbHVtbi13aWR0aF1cbiAgICAgIChiaW5kaW5nIFsqb3V0KiAoZ2V0LXByZXR0eS13cml0ZXIgKm91dCopXVxuICAgICAgICAoZG9zZXEgW3JvdyBhc2VxXVxuICAgICAgICAgIChkb3NlcSBbY29sIHJvd11cbiAgICAgICAgICAgIChjbC1mb3JtYXQgdHJ1ZSBcIn40RH43LHZUXCIgY29sIGNvbHVtbi13aWR0aCkpXG4gICAgICAgICAgKHBybikpKSlcblxuTm93IHdoZW4geW91IHJ1bjpcblxuICAgIHVzZXI+IChwcmludC10YWJsZSAobWFwICModmVjdG9yICUgKCogJSAlKSAoKiAlICUgJSkpIChyYW5nZSAxIDExKSkgOClcblxuSXQgcHJpbnRzIGEgdGFibGUgb2Ygc3F1YXJlcyBhbmQgY3ViZXMgZm9yIHRoZSBudW1iZXJzIGZyb20gMSB0byAxMDpcblxuICAgICAgIDEgICAgICAxICAgICAgIDFcbiAgICAgICAyICAgICAgNCAgICAgICA4XG4gICAgICAgMyAgICAgIDkgICAgICAyN1xuICAgICAgIDQgICAgIDE2ICAgICAgNjRcbiAgICAgICA1ICAgICAyNSAgICAgMTI1XG4gICAgICAgNiAgICAgMzYgICAgIDIxNlxuICAgICAgIDcgICAgIDQ5ICAgICAzNDNcbiAgICAgICA4ICAgICA2NCAgICAgNTEyXG4gICAgICAgOSAgICAgODEgICAgIDcyOVxuICAgICAgMTAgICAgMTAwICAgIDEwMDAiLCA6YXJnbGlzdHMgKFt3cml0ZXJdKX0sIDpzb3VyY2UgIihkZWZuXG4gZ2V0LXByZXR0eS13cml0ZXJcbiBcIlJldHVybnMgdGhlIElXcml0ZXIgcGFzc2VkIGluIHdyYXBwZWQgaW4gYSBwcmV0dHkgd3JpdGVyIHByb3h5LCB1bmxlc3MgaXQnc1xcbmFscmVhZHkgYSBwcmV0dHkgd3JpdGVyLiBHZW5lcmFsbHksIGl0IGlzIHVubmVjZXNzYXJ5IHRvIGNhbGwgdGhpcyBmdW5jdGlvbiwgc2luY2UgcHByaW50LFxcbndyaXRlLCBhbmQgY2wtZm9ybWF0IGFsbCBjYWxsIGl0IGlmIHRoZXkgbmVlZCB0by4gSG93ZXZlciBpZiB5b3Ugd2FudCB0aGUgc3RhdGUgdG8gYmVcXG5wcmVzZXJ2ZWQgYWNyb3NzIGNhbGxzLCB5b3Ugd2lsbCB3YW50IHRvIHdyYXAgdGhlbSB3aXRoIHRoaXMuXFxuXFxuRm9yIGV4YW1wbGUsIHdoZW4geW91IHdhbnQgdG8gZ2VuZXJhdGUgY29sdW1uLWF3YXJlIG91dHB1dCB3aXRoIG11bHRpcGxlIGNhbGxzIHRvIGNsLWZvcm1hdCxcXG5kbyBpdCBsaWtlIGluIHRoaXMgZXhhbXBsZTpcXG5cXG4gICAgKGRlZm4gcHJpbnQtdGFibGUgW2FzZXEgY29sdW1uLXdpZHRoXVxcbiAgICAgIChiaW5kaW5nIFsqb3V0KiAoZ2V0LXByZXR0eS13cml0ZXIgKm91dCopXVxcbiAgICAgICAgKGRvc2VxIFtyb3cgYXNlcV1cXG4gICAgICAgICAgKGRvc2VxIFtjb2wgcm93XVxcbiAgICAgICAgICAgIChjbC1mb3JtYXQgdHJ1ZSBcXFwifjREfjcsdlRcXFwiIGNvbCBjb2x1bW4td2lkdGgpKVxcbiAgICAgICAgICAocHJuKSkpKVxcblxcbk5vdyB3aGVuIHlvdSBydW46XFxuXFxuICAgIHVzZXI+IChwcmludC10YWJsZSAobWFwICModmVjdG9yICUgKCogJSAlKSAoKiAlICUgJSkpIChyYW5nZSAxIDExKSkgOClcXG5cXG5JdCBwcmludHMgYSB0YWJsZSBvZiBzcXVhcmVzIGFuZCBjdWJlcyBmb3IgdGhlIG51bWJlcnMgZnJvbSAxIHRvIDEwOlxcblxcbiAgICAgICAxICAgICAgMSAgICAgICAxXFxuICAgICAgIDIgICAgICA0ICAgICAgIDhcXG4gICAgICAgMyAgICAgIDkgICAgICAyN1xcbiAgICAgICA0ICAgICAxNiAgICAgIDY0XFxuICAgICAgIDUgICAgIDI1ICAgICAxMjVcXG4gICAgICAgNiAgICAgMzYgICAgIDIxNlxcbiAgICAgICA3ICAgICA0OSAgICAgMzQzXFxuICAgICAgIDggICAgIDY0ICAgICA1MTJcXG4gICAgICAgOSAgICAgODEgICAgIDcyOVxcbiAgICAgIDEwICAgIDEwMCAgICAxMDAwXCJcbiBbd3JpdGVyXVxuIChpZlxuICAocHJldHR5LXdyaXRlcj8gd3JpdGVyKVxuICB3cml0ZXJcbiAgKHByZXR0eS13cml0ZXIgd3JpdGVyICpwcmludC1yaWdodC1tYXJnaW4qICpwcmludC1taXNlci13aWR0aCopKSlcbiJ9IHs6c3ltICpwcmludC1zdXBwcmVzcy1uYW1lc3BhY2VzKiwgOm1ldGEgezpkb2MgIkRvbid0IHByaW50IG5hbWVzcGFjZXMgd2l0aCBzeW1ib2xzLiBUaGlzIGlzIHBhcnRpY3VsYXJseSB1c2VmdWwgd2hlblxucHJldHR5IHByaW50aW5nIHRoZSByZXN1bHRzIG9mIG1hY3JvIGV4cGFuc2lvbnMifSwgOnNvdXJjZSAiKGRlZiAqcHJpbnQtc3VwcHJlc3MtbmFtZXNwYWNlcyogbmlsKVxuIn0gezpzeW0gY2hhci1jb2RlLCA6bWV0YSB7OmRvYyAiQ29udmVydCBjaGFyIHRvIGludCIsIDphcmdsaXN0cyAoW2NdKX0sIDpzb3VyY2UgIihkZWZuXG4gY2hhci1jb2RlXG4gXCJDb252ZXJ0IGNoYXIgdG8gaW50XCJcbiBbY11cbiAoY29uZFxuICAobnVtYmVyPyBjKVxuICBjXG4gIChhbmQgKHN0cmluZz8gYykgKD09ICguLWxlbmd0aCBjKSAxKSlcbiAgKC5jaGFyQ29kZUF0IGMgMClcbiAgOmVsc2VcbiAgKHRocm93IChqcy9FcnJvci4gXCJBcmd1bWVudCB0byBjaGFyIG11c3QgYmUgYSBjaGFyYWN0ZXIgb3IgbnVtYmVyXCIpKSkpXG4ifSB7OnN5bSAqcHJpbnQtcHJldHR5KiwgOm1ldGEgezpkb2MgIkJpbmQgdG8gdHJ1ZSBpZiB5b3Ugd2FudCB3cml0ZSB0byB1c2UgcHJldHR5IHByaW50aW5nIn0sIDpzb3VyY2UgIihkZWYgKnByaW50LXByZXR0eSogdHJ1ZSlcbiJ9IHs6c3ltICpwcmludC1wcHJpbnQtZGlzcGF0Y2gqLCA6bWV0YSB7OmRvYyAiVGhlIHByZXR0eSBwcmludCBkaXNwYXRjaCBmdW5jdGlvbi4gVXNlIHdpdGgtcHByaW50LWRpc3BhdGNoIG9yXG5zZXQtcHByaW50LWRpc3BhdGNoIHRvIG1vZGlmeS4ifSwgOnNvdXJjZSAiKGRlZm9uY2UgKnByaW50LXBwcmludC1kaXNwYXRjaCogbmlsKVxuIn0gezpzeW0gcHByaW50LW5ld2xpbmUsIDptZXRhIHs6ZG9jICJQcmludCBhIGNvbmRpdGlvbmFsIG5ld2xpbmUgdG8gYSBwcmV0dHkgcHJpbnRpbmcgc3RyZWFtLiBraW5kIHNwZWNpZmllcyBpZiB0aGVcbiAgbmV3bGluZSBpcyA6bGluZWFyLCA6bWlzZXIsIDpmaWxsLCBvciA6bWFuZGF0b3J5LlxuXG4gIFRoaXMgZnVuY3Rpb24gaXMgaW50ZW5kZWQgZm9yIHVzZSB3aGVuIHdyaXRpbmcgY3VzdG9tIGRpc3BhdGNoIGZ1bmN0aW9ucy5cblxuICBPdXRwdXQgaXMgc2VudCB0byAqb3V0KiB3aGljaCBtdXN0IGJlIGEgcHJldHR5IHByaW50aW5nIHdyaXRlci4iLCA6YXJnbGlzdHMgKFtraW5kXSl9LCA6c291cmNlICIoZGVmblxuIHBwcmludC1uZXdsaW5lXG4gXCJQcmludCBhIGNvbmRpdGlvbmFsIG5ld2xpbmUgdG8gYSBwcmV0dHkgcHJpbnRpbmcgc3RyZWFtLiBraW5kIHNwZWNpZmllcyBpZiB0aGVcXG4gIG5ld2xpbmUgaXMgOmxpbmVhciwgOm1pc2VyLCA6ZmlsbCwgb3IgOm1hbmRhdG9yeS5cXG5cXG4gIFRoaXMgZnVuY3Rpb24gaXMgaW50ZW5kZWQgZm9yIHVzZSB3aGVuIHdyaXRpbmcgY3VzdG9tIGRpc3BhdGNoIGZ1bmN0aW9ucy5cXG5cXG4gIE91dHB1dCBpcyBzZW50IHRvICpvdXQqIHdoaWNoIG11c3QgYmUgYSBwcmV0dHkgcHJpbnRpbmcgd3JpdGVyLlwiXG4gW2tpbmRdXG4gKGNoZWNrLWVudW1lcmF0ZWQtYXJnIGtpbmQgI3s6bWFuZGF0b3J5IDptaXNlciA6ZmlsbCA6bGluZWFyfSlcbiAobmwgKm91dCoga2luZCkpXG4ifSB7OnN5bSBmbG9hdD8sIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRydWUgaWYgbiBpcyBhbiBmbG9hdC4iLCA6YXJnbGlzdHMgKFtuXSl9LCA6c291cmNlICIoZGVmblxuIGZsb2F0P1xuIFwiUmV0dXJucyB0cnVlIGlmIG4gaXMgYW4gZmxvYXQuXCJcbiBbbl1cbiAoYW5kXG4gIChudW1iZXI/IG4pXG4gIChub3QgKGpzL2lzTmFOIG4pKVxuICAobm90IChpZGVudGljYWw/IG4ganMvSW5maW5pdHkpKVxuICAobm90ICg9PSAoanMvcGFyc2VGbG9hdCBuKSAoanMvcGFyc2VJbnQgbiAxMCkpKSkpXG4ifSB7OnN5bSBwcHJpbnQtdGFiLCA6bWV0YSB7OmRvYyAiVGFiIGF0IHRoaXMgcG9pbnQgaW4gdGhlIHByZXR0eSBwcmludGluZyBzdHJlYW0uIGtpbmQgc3BlY2lmaWVzIHdoZXRoZXIgdGhlIHRhYlxuaXMgOmxpbmUsIDpzZWN0aW9uLCA6bGluZS1yZWxhdGl2ZSwgb3IgOnNlY3Rpb24tcmVsYXRpdmUuXG5cbkNvbG51bSBhbmQgY29saW5jIHNwZWNpZnkgdGhlIHRhcmdldCBjb2x1bW4gYW5kIHRoZSBpbmNyZW1lbnQgdG8gbW92ZSB0aGUgdGFyZ2V0XG5mb3J3YXJkIGlmIHRoZSBvdXRwdXQgaXMgYWxyZWFkeSBwYXN0IHRoZSBvcmlnaW5hbCB0YXJnZXQuXG5cblRoaXMgZnVuY3Rpb24gaXMgaW50ZW5kZWQgZm9yIHVzZSB3aGVuIHdyaXRpbmcgY3VzdG9tIGRpc3BhdGNoIGZ1bmN0aW9ucy5cblxuT3V0cHV0IGlzIHNlbnQgdG8gKm91dCogd2hpY2ggbXVzdCBiZSBhIHByZXR0eSBwcmludGluZyB3cml0ZXIuXG5cblRISVMgRlVOQ1RJT04gSVMgTk9UIFlFVCBJTVBMRU1FTlRFRC4iLCA6YXJnbGlzdHMgKFtraW5kIGNvbG51bSBjb2xpbmNdKX0sIDpzb3VyY2UgIihkZWZuXG4gcHByaW50LXRhYlxuIFwiVGFiIGF0IHRoaXMgcG9pbnQgaW4gdGhlIHByZXR0eSBwcmludGluZyBzdHJlYW0uIGtpbmQgc3BlY2lmaWVzIHdoZXRoZXIgdGhlIHRhYlxcbmlzIDpsaW5lLCA6c2VjdGlvbiwgOmxpbmUtcmVsYXRpdmUsIG9yIDpzZWN0aW9uLXJlbGF0aXZlLlxcblxcbkNvbG51bSBhbmQgY29saW5jIHNwZWNpZnkgdGhlIHRhcmdldCBjb2x1bW4gYW5kIHRoZSBpbmNyZW1lbnQgdG8gbW92ZSB0aGUgdGFyZ2V0XFxuZm9yd2FyZCBpZiB0aGUgb3V0cHV0IGlzIGFscmVhZHkgcGFzdCB0aGUgb3JpZ2luYWwgdGFyZ2V0LlxcblxcblRoaXMgZnVuY3Rpb24gaXMgaW50ZW5kZWQgZm9yIHVzZSB3aGVuIHdyaXRpbmcgY3VzdG9tIGRpc3BhdGNoIGZ1bmN0aW9ucy5cXG5cXG5PdXRwdXQgaXMgc2VudCB0byAqb3V0KiB3aGljaCBtdXN0IGJlIGEgcHJldHR5IHByaW50aW5nIHdyaXRlci5cXG5cXG5USElTIEZVTkNUSU9OIElTIE5PVCBZRVQgSU1QTEVNRU5URUQuXCJcbiB7OmFkZGVkIFwiMS4yXCJ9XG4gW2tpbmQgY29sbnVtIGNvbGluY11cbiAoY2hlY2stZW51bWVyYXRlZC1hcmdcbiAga2luZFxuICAjezpzZWN0aW9uIDpsaW5lIDpsaW5lLXJlbGF0aXZlIDpzZWN0aW9uLXJlbGF0aXZlfSlcbiAodGhyb3cgKGpzL0Vycm9yLiBcInBwcmludC10YWIgaXMgbm90IHlldCBpbXBsZW1lbnRlZFwiKSkpXG4ifSB7OnN5bSBwcHJpbnQtc2V0LCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiBwcHJpbnQtc2V0IChmb3JtYXR0ZXItb3V0IFwifjwje347fkB7fnd+XiB+Ol9+fX47fX46PlwiKSlcbiJ9IHs6c3ltIHByaW50LXRhYmxlLCA6bWV0YSB7OmRvYyAiUHJpbnRzIGEgY29sbGVjdGlvbiBvZiBtYXBzIGluIGEgdGV4dHVhbCB0YWJsZS4gUHJpbnRzIHRhYmxlIGhlYWRpbmdzXG4gICBrcywgYW5kIHRoZW4gYSBsaW5lIG9mIG91dHB1dCBmb3IgZWFjaCByb3csIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGtleXNcbiAgIGluIGtzLiBJZiBrcyBhcmUgbm90IHNwZWNpZmllZCwgdXNlIHRoZSBrZXlzIG9mIHRoZSBmaXJzdCBpdGVtIGluIHJvd3MuIiwgOmFyZ2xpc3RzIFtba3Mgcm93c10gW3Jvd3NdXX0sIDpzb3VyY2UgIihkZWZuXG4gcHJpbnQtdGFibGVcbiBcIlByaW50cyBhIGNvbGxlY3Rpb24gb2YgbWFwcyBpbiBhIHRleHR1YWwgdGFibGUuIFByaW50cyB0YWJsZSBoZWFkaW5nc1xcbiAgIGtzLCBhbmQgdGhlbiBhIGxpbmUgb2Ygb3V0cHV0IGZvciBlYWNoIHJvdywgY29ycmVzcG9uZGluZyB0byB0aGUga2V5c1xcbiAgIGluIGtzLiBJZiBrcyBhcmUgbm90IHNwZWNpZmllZCwgdXNlIHRoZSBrZXlzIG9mIHRoZSBmaXJzdCBpdGVtIGluIHJvd3MuXCJcbiB7OmFkZGVkIFwiMS4zXCJ9XG4gKFtrcyByb3dzXVxuICAod2hlblxuICAgKHNlcSByb3dzKVxuICAgKGxldFxuICAgIFt3aWR0aHNcbiAgICAgKG1hcFxuICAgICAgKGZuXG4gICAgICAgW2tdXG4gICAgICAgKGFwcGx5XG4gICAgICAgIG1heFxuICAgICAgICAoY291bnQgKHN0ciBrKSlcbiAgICAgICAgKG1hcFxuICAgICAgICAgKGZuKiBbcDFfXzQzMTM0I10gKGNvdW50IChzdHIgKGdldCBwMV9fNDMxMzQjIGspKSkpXG4gICAgICAgICByb3dzKSkpXG4gICAgICBrcylcbiAgICAgc3BhY2Vyc1xuICAgICAobWFwXG4gICAgICAoZm4qIFtwMV9fNDMxMzUjXSAoYXBwbHkgc3RyIChyZXBlYXQgcDFfXzQzMTM1IyBcIi1cIikpKVxuICAgICAgd2lkdGhzKVxuICAgICBmbXQtcm93XG4gICAgIChmblxuICAgICAgW2xlYWRlciBkaXZpZGVyIHRyYWlsZXIgcm93XVxuICAgICAgKHN0clxuICAgICAgIGxlYWRlclxuICAgICAgIChhcHBseVxuICAgICAgICBzdHJcbiAgICAgICAgKGludGVycG9zZVxuICAgICAgICAgZGl2aWRlclxuICAgICAgICAgKGZvclxuICAgICAgICAgIFtbY29sIHdpZHRoXVxuICAgICAgICAgICAobWFwXG4gICAgICAgICAgICB2ZWN0b3JcbiAgICAgICAgICAgIChtYXAgKGZuKiBbcDFfXzQzMTM2I10gKGdldCByb3cgcDFfXzQzMTM2IykpIGtzKVxuICAgICAgICAgICAgd2lkdGhzKV1cbiAgICAgICAgICAoYWRkLXBhZGRpbmcgd2lkdGggKHN0ciBjb2wpKSkpKVxuICAgICAgIHRyYWlsZXIpKV1cbiAgICAoY2xqcy5jb3JlL3ByaW50bG4pXG4gICAgKGNsanMuY29yZS9wcmludGxuIChmbXQtcm93IFwifCBcIiBcIiB8IFwiIFwiIHxcIiAoemlwbWFwIGtzIGtzKSkpXG4gICAgKGNsanMuY29yZS9wcmludGxuIChmbXQtcm93IFwifC1cIiBcIi0rLVwiIFwiLXxcIiAoemlwbWFwIGtzIHNwYWNlcnMpKSlcbiAgICAoZG9zZXFcbiAgICAgW3JvdyByb3dzXVxuICAgICAoY2xqcy5jb3JlL3ByaW50bG4gKGZtdC1yb3cgXCJ8IFwiIFwiIHwgXCIgXCIgfFwiIHJvdykpKSkpKVxuIChbcm93c10gKHByaW50LXRhYmxlIChrZXlzIChmaXJzdCByb3dzKSkgcm93cykpKVxuIn0gezpzeW0gc2V0LXBwcmludC1kaXNwYXRjaCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtmdW5jdGlvbl0pfSwgOnNvdXJjZSAiKGRlZm5cbiBzZXQtcHByaW50LWRpc3BhdGNoXG4gW2Z1bmN0aW9uXVxuIChzZXQhICpwcmludC1wcHJpbnQtZGlzcGF0Y2gqIGZ1bmN0aW9uKVxuIG5pbClcbiJ9IHs6c3ltIGZyZXNoLWxpbmUsIDptZXRhIHs6ZG9jICJNYWtlIGEgbmV3bGluZSBpZiAqb3V0KiBpcyBub3QgYWxyZWFkeSBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBsaW5lLiBJZiAqb3V0KiBpc1xubm90IGEgcHJldHR5IHdyaXRlciAod2hpY2gga2VlcHMgdHJhY2sgb2YgY29sdW1ucyksIHRoaXMgZnVuY3Rpb24gYWx3YXlzIG91dHB1dHMgYSBuZXdsaW5lLiIsIDphcmdsaXN0cyAoW10pfSwgOnNvdXJjZSAiKGRlZm5cbiBmcmVzaC1saW5lXG4gXCJNYWtlIGEgbmV3bGluZSBpZiAqb3V0KiBpcyBub3QgYWxyZWFkeSBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBsaW5lLiBJZiAqb3V0KiBpc1xcbm5vdCBhIHByZXR0eSB3cml0ZXIgKHdoaWNoIGtlZXBzIHRyYWNrIG9mIGNvbHVtbnMpLCB0aGlzIGZ1bmN0aW9uIGFsd2F5cyBvdXRwdXRzIGEgbmV3bGluZS5cIlxuIFtdXG4gKGlmXG4gIChzYXRpc2ZpZXM/IElEZXJlZiAqb3V0KilcbiAgKGlmIChub3QgKD0gMCAoZ2V0LWNvbHVtbiAoOmJhc2UgQEAqb3V0KikpKSkgKHBybikpXG4gIChwcm4pKSlcbiJ9IHs6c3ltIHBwcmludC1pbmRlbnQsIDptZXRhIHs6ZG9jICJDcmVhdGUgYW4gaW5kZW50IGF0IHRoaXMgcG9pbnQgaW4gdGhlIHByZXR0eSBwcmludGluZyBzdHJlYW0uIFRoaXMgZGVmaW5lcyBob3dcbmZvbGxvd2luZyBsaW5lcyBhcmUgaW5kZW50ZWQuIHJlbGF0aXZlLXRvIGNhbiBiZSBlaXRoZXIgOmJsb2NrIG9yIDpjdXJyZW50IGRlcGVuZGluZ1xud2hldGhlciB0aGUgaW5kZW50IHNob3VsZCBiZSBjb21wdXRlZCByZWxhdGl2ZSB0byB0aGUgc3RhcnQgb2YgdGhlIGxvZ2ljYWwgYmxvY2sgb3JcbnRoZSBjdXJyZW50IGNvbHVtbiBwb3NpdGlvbi4gbiBpcyBhbiBvZmZzZXQuXG5cblRoaXMgZnVuY3Rpb24gaXMgaW50ZW5kZWQgZm9yIHVzZSB3aGVuIHdyaXRpbmcgY3VzdG9tIGRpc3BhdGNoIGZ1bmN0aW9ucy5cblxuT3V0cHV0IGlzIHNlbnQgdG8gKm91dCogd2hpY2ggbXVzdCBiZSBhIHByZXR0eSBwcmludGluZyB3cml0ZXIuIiwgOmFyZ2xpc3RzIChbcmVsYXRpdmUtdG8gbl0pfSwgOnNvdXJjZSAiKGRlZm5cbiBwcHJpbnQtaW5kZW50XG4gXCJDcmVhdGUgYW4gaW5kZW50IGF0IHRoaXMgcG9pbnQgaW4gdGhlIHByZXR0eSBwcmludGluZyBzdHJlYW0uIFRoaXMgZGVmaW5lcyBob3dcXG5mb2xsb3dpbmcgbGluZXMgYXJlIGluZGVudGVkLiByZWxhdGl2ZS10byBjYW4gYmUgZWl0aGVyIDpibG9jayBvciA6Y3VycmVudCBkZXBlbmRpbmdcXG53aGV0aGVyIHRoZSBpbmRlbnQgc2hvdWxkIGJlIGNvbXB1dGVkIHJlbGF0aXZlIHRvIHRoZSBzdGFydCBvZiB0aGUgbG9naWNhbCBibG9jayBvclxcbnRoZSBjdXJyZW50IGNvbHVtbiBwb3NpdGlvbi4gbiBpcyBhbiBvZmZzZXQuXFxuXFxuVGhpcyBmdW5jdGlvbiBpcyBpbnRlbmRlZCBmb3IgdXNlIHdoZW4gd3JpdGluZyBjdXN0b20gZGlzcGF0Y2ggZnVuY3Rpb25zLlxcblxcbk91dHB1dCBpcyBzZW50IHRvICpvdXQqIHdoaWNoIG11c3QgYmUgYSBwcmV0dHkgcHJpbnRpbmcgd3JpdGVyLlwiXG4gW3JlbGF0aXZlLXRvIG5dXG4gKGNoZWNrLWVudW1lcmF0ZWQtYXJnIHJlbGF0aXZlLXRvICN7OmJsb2NrIDpjdXJyZW50fSlcbiAoaW5kZW50ICpvdXQqIHJlbGF0aXZlLXRvIG4pKVxuIn0gezpzeW0gKnByaW50LXJhZGl4KiwgOm1ldGEgezpkb2MgIlByaW50IGEgcmFkaXggc3BlY2lmaWVyIGluIGZyb250IG9mIGludGVnZXJzIGFuZCByYXRpb25hbHMuIElmICpwcmludC1iYXNlKiBpcyAyLCA4LFxub3IgMTYsIHRoZW4gdGhlIHJhZGl4IHNwZWNpZmllciB1c2VkIGlzICNiLCAjbywgb3IgI3gsIHJlc3BlY3RpdmVseS4gT3RoZXJ3aXNlIHRoZVxucmFkaXggc3BlY2lmaWVyIGlzIGluIHRoZSBmb3JtICNYWHIgd2hlcmUgWFggaXMgdGhlIGRlY2ltYWwgdmFsdWUgb2YgKnByaW50LWJhc2UqICJ9LCA6c291cmNlICIoZGVmICpwcmludC1yYWRpeCogbmlsKVxuIn0gezpzeW0gSVByZXR0eUZsdXNoLCA6bWV0YSB7OmRvYyBuaWx9LCA6bWV0aG9kcyAoLXBwZmx1c2gpfSB7OnN5bSBjbC1mb3JtYXQsIDptZXRhIHs6ZG9jICJBbiBpbXBsZW1lbnRhdGlvbiBvZiBhIENvbW1vbiBMaXNwIGNvbXBhdGlibGUgZm9ybWF0IGZ1bmN0aW9uLiBjbC1mb3JtYXQgZm9ybWF0cyBpdHNcbmFyZ3VtZW50cyB0byBhbiBvdXRwdXQgc3RyZWFtIG9yIHN0cmluZyBiYXNlZCBvbiB0aGUgZm9ybWF0IGNvbnRyb2wgc3RyaW5nIGdpdmVuLiBJdFxuc3VwcG9ydHMgc29waGlzdGljYXRlZCBmb3JtYXR0aW5nIG9mIHN0cnVjdHVyZWQgZGF0YS5cblxuV3JpdGVyIHNhdGlzZmllcyBJV3JpdGVyLCB0cnVlIHRvIG91dHB1dCB2aWEgKnByaW50LWZuKiBvciBuaWwgdG8gb3V0cHV0XG50byBhIHN0cmluZywgZm9ybWF0LWluIGlzIHRoZSBmb3JtYXQgY29udHJvbCBzdHJpbmcgYW5kIHRoZSByZW1haW5pbmcgYXJndW1lbnRzXG5hcmUgdGhlIGRhdGEgdG8gYmUgZm9ybWF0dGVkLlxuXG5UaGUgZm9ybWF0IGNvbnRyb2wgc3RyaW5nIGlzIGEgc3RyaW5nIHRvIGJlIG91dHB1dCB3aXRoIGVtYmVkZGVkICdmb3JtYXQgZGlyZWN0aXZlcydcbmRlc2NyaWJpbmcgaG93IHRvIGZvcm1hdCB0aGUgdmFyaW91cyBhcmd1bWVudHMgcGFzc2VkIGluLlxuXG5JZiB3cml0ZXIgaXMgbmlsLCBjbC1mb3JtYXQgcmV0dXJucyB0aGUgZm9ybWF0dGVkIHJlc3VsdCBzdHJpbmcuIE90aGVyd2lzZSwgY2wtZm9ybWF0XG5yZXR1cm5zIG5pbC5cblxuRm9yIGV4YW1wbGU6XG4gKGxldCBbcmVzdWx0cyBbNDYgMzggMjJdXVxuICAgICAgICAoY2wtZm9ybWF0IHRydWUgXCJUaGVyZSB+W2FyZX47aXN+OjthcmV+XX46KiB+ZCByZXN1bHR+OnA6IH57fmR+Xiwgfn1+JVwiXG4gICAgICAgICAgICAgICAgICAgKGNvdW50IHJlc3VsdHMpIHJlc3VsdHMpKVxuXG5QcmludHMgdmlhICpwcmludC1mbio6XG4gVGhlcmUgYXJlIDMgcmVzdWx0czogNDYsIDM4LCAyMlxuXG5EZXRhaWxlZCBkb2N1bWVudGF0aW9uIG9uIGZvcm1hdCBjb250cm9sIHN0cmluZ3MgaXMgYXZhaWxhYmxlIGluIHRoZSBcIkNvbW1vbiBMaXNwIHRoZVxuTGFuZ3VhZ2UsIDJuZCBlZGl0aW9uXCIsIENoYXB0ZXIgMjIgKGF2YWlsYWJsZSBvbmxpbmUgYXQ6XG5odHRwOi8vd3d3LmNzLmNtdS5lZHUvYWZzL2NzLmNtdS5lZHUvcHJvamVjdC9haS1yZXBvc2l0b3J5L2FpL2h0bWwvY2x0bC9jbG0vbm9kZTIwMC5odG1sI1NFQ1RJT04wMDI2MzMwMDAwMDAwMDAwMDAwMDApXG5hbmQgaW4gdGhlIENvbW1vbiBMaXNwIEh5cGVyU3BlYyBhdFxuaHR0cDovL3d3dy5saXNwd29ya3MuY29tL2RvY3VtZW50YXRpb24vSHlwZXJTcGVjL0JvZHkvMjJfYy5odG0iLCA6YXJnbGlzdHMgKFt3cml0ZXIgZm9ybWF0LWluICYgYXJnc10pfSwgOnNvdXJjZSAiKGRlZm5cbiBjbC1mb3JtYXRcbiBcIkFuIGltcGxlbWVudGF0aW9uIG9mIGEgQ29tbW9uIExpc3AgY29tcGF0aWJsZSBmb3JtYXQgZnVuY3Rpb24uIGNsLWZvcm1hdCBmb3JtYXRzIGl0c1xcbmFyZ3VtZW50cyB0byBhbiBvdXRwdXQgc3RyZWFtIG9yIHN0cmluZyBiYXNlZCBvbiB0aGUgZm9ybWF0IGNvbnRyb2wgc3RyaW5nIGdpdmVuLiBJdFxcbnN1cHBvcnRzIHNvcGhpc3RpY2F0ZWQgZm9ybWF0dGluZyBvZiBzdHJ1Y3R1cmVkIGRhdGEuXFxuXFxuV3JpdGVyIHNhdGlzZmllcyBJV3JpdGVyLCB0cnVlIHRvIG91dHB1dCB2aWEgKnByaW50LWZuKiBvciBuaWwgdG8gb3V0cHV0XFxudG8gYSBzdHJpbmcsIGZvcm1hdC1pbiBpcyB0aGUgZm9ybWF0IGNvbnRyb2wgc3RyaW5nIGFuZCB0aGUgcmVtYWluaW5nIGFyZ3VtZW50c1xcbmFyZSB0aGUgZGF0YSB0byBiZSBmb3JtYXR0ZWQuXFxuXFxuVGhlIGZvcm1hdCBjb250cm9sIHN0cmluZyBpcyBhIHN0cmluZyB0byBiZSBvdXRwdXQgd2l0aCBlbWJlZGRlZCAnZm9ybWF0IGRpcmVjdGl2ZXMnXFxuZGVzY3JpYmluZyBob3cgdG8gZm9ybWF0IHRoZSB2YXJpb3VzIGFyZ3VtZW50cyBwYXNzZWQgaW4uXFxuXFxuSWYgd3JpdGVyIGlzIG5pbCwgY2wtZm9ybWF0IHJldHVybnMgdGhlIGZvcm1hdHRlZCByZXN1bHQgc3RyaW5nLiBPdGhlcndpc2UsIGNsLWZvcm1hdFxcbnJldHVybnMgbmlsLlxcblxcbkZvciBleGFtcGxlOlxcbiAobGV0IFtyZXN1bHRzIFs0NiAzOCAyMl1dXFxuICAgICAgICAoY2wtZm9ybWF0IHRydWUgXFxcIlRoZXJlIH5bYXJlfjtpc346O2FyZX5dfjoqIH5kIHJlc3VsdH46cDogfnt+ZH5eLCB+fX4lXFxcIlxcbiAgICAgICAgICAgICAgICAgICAoY291bnQgcmVzdWx0cykgcmVzdWx0cykpXFxuXFxuUHJpbnRzIHZpYSAqcHJpbnQtZm4qOlxcbiBUaGVyZSBhcmUgMyByZXN1bHRzOiA0NiwgMzgsIDIyXFxuXFxuRGV0YWlsZWQgZG9jdW1lbnRhdGlvbiBvbiBmb3JtYXQgY29udHJvbCBzdHJpbmdzIGlzIGF2YWlsYWJsZSBpbiB0aGUgXFxcIkNvbW1vbiBMaXNwIHRoZVxcbkxhbmd1YWdlLCAybmQgZWRpdGlvblxcXCIsIENoYXB0ZXIgMjIgKGF2YWlsYWJsZSBvbmxpbmUgYXQ6XFxuaHR0cDovL3d3dy5jcy5jbXUuZWR1L2Fmcy9jcy5jbXUuZWR1L3Byb2plY3QvYWktcmVwb3NpdG9yeS9haS9odG1sL2NsdGwvY2xtL25vZGUyMDAuaHRtbCNTRUNUSU9OMDAyNjMzMDAwMDAwMDAwMDAwMDAwKVxcbmFuZCBpbiB0aGUgQ29tbW9uIExpc3AgSHlwZXJTcGVjIGF0XFxuaHR0cDovL3d3dy5saXNwd29ya3MuY29tL2RvY3VtZW50YXRpb24vSHlwZXJTcGVjL0JvZHkvMjJfYy5odG1cIlxuIHs6c2VlLWFsc29cbiAgW1tcImh0dHA6Ly93d3cuY3MuY211LmVkdS9hZnMvY3MuY211LmVkdS9wcm9qZWN0L2FpLXJlcG9zaXRvcnkvYWkvaHRtbC9jbHRsL2NsbS9ub2RlMjAwLmh0bWwjU0VDVElPTjAwMjYzMzAwMDAwMDAwMDAwMDAwMFwiXG4gICAgXCJDb21tb24gTGlzcCB0aGUgTGFuZ3VhZ2VcIl1cbiAgIFtcImh0dHA6Ly93d3cubGlzcHdvcmtzLmNvbS9kb2N1bWVudGF0aW9uL0h5cGVyU3BlYy9Cb2R5LzIyX2MuaHRtXCJcbiAgICBcIkNvbW1vbiBMaXNwIEh5cGVyU3BlY1wiXV19XG4gW3dyaXRlciBmb3JtYXQtaW4gJiBhcmdzXVxuIChsZXRcbiAgW2NvbXBpbGVkLWZvcm1hdFxuICAgKGlmIChzdHJpbmc/IGZvcm1hdC1pbikgKGNvbXBpbGUtZm9ybWF0IGZvcm1hdC1pbikgZm9ybWF0LWluKVxuICAgbmF2aWdhdG9yXG4gICAoaW5pdC1uYXZpZ2F0b3IgYXJncyldXG4gIChleGVjdXRlLWZvcm1hdCB3cml0ZXIgY29tcGlsZWQtZm9ybWF0IG5hdmlnYXRvcikpKVxuIn0gezpzeW0gKnByaW50LW1pc2VyLXdpZHRoKiwgOm1ldGEgezpkb2MgIlRoZSBjb2x1bW4gYXQgd2hpY2ggdG8gZW50ZXIgbWlzZXIgc3R5bGUuIERlcGVuZGluZyBvbiB0aGUgZGlzcGF0Y2ggdGFibGUsXG5taXNlciBzdHlsZSBhZGQgbmV3bGluZXMgaW4gbW9yZSBwbGFjZXMgdG8gdHJ5IHRvIGtlZXAgbGluZXMgc2hvcnQgYWxsb3dpbmcgZm9yIGZ1cnRoZXJcbmxldmVscyBvZiBuZXN0aW5nLiJ9LCA6c291cmNlICIoZGVmICpwcmludC1taXNlci13aWR0aCogNDApXG4ifSB7OnN5bSB3cml0ZSwgOm1ldGEgezpkb2MgIldyaXRlIGFuIG9iamVjdCBzdWJqZWN0IHRvIHRoZSBjdXJyZW50IGJpbmRpbmdzIG9mIHRoZSBwcmludGVyIGNvbnRyb2wgdmFyaWFibGVzLlxuVXNlIHRoZSBrdy1hcmdzIGFyZ3VtZW50IHRvIG92ZXJyaWRlIGluZGl2aWR1YWwgdmFyaWFibGVzIGZvciB0aGlzIGNhbGwgKGFuZCBhbnlcbnJlY3Vyc2l2ZSBjYWxscykuIFJldHVybnMgdGhlIHN0cmluZyByZXN1bHQgaWYgOnN0cmVhbSBpcyBuaWwgb3IgbmlsIG90aGVyd2lzZS5cblxuVGhlIGZvbGxvd2luZyBrZXl3b3JkIGFyZ3VtZW50cyBjYW4gYmUgcGFzc2VkIHdpdGggdmFsdWVzOlxuICBLZXl3b3JkICAgICAgICAgICAgICBNZWFuaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVmYXVsdCB2YWx1ZVxuICA6c3RyZWFtICAgICAgICAgICAgICBXcml0ZXIgZm9yIG91dHB1dCBvciBuaWwgICAgICAgICAgICAgdHJ1ZSAoaW5kaWNhdGVzICpvdXQqKVxuICA6YmFzZSAgICAgICAgICAgICAgICBCYXNlIHRvIHVzZSBmb3Igd3JpdGluZyByYXRpb25hbHMgICAgQ3VycmVudCB2YWx1ZSBvZiAqcHJpbnQtYmFzZSpcbiAgOmNpcmNsZSogICAgICAgICAgICAgSWYgdHJ1ZSwgbWFyayBjaXJjdWxhciBzdHJ1Y3R1cmVzICAgIEN1cnJlbnQgdmFsdWUgb2YgKnByaW50LWNpcmNsZSpcbiAgOmxlbmd0aCAgICAgICAgICAgICAgTWF4aW11bSBlbGVtZW50cyB0byBzaG93IGluIHN1Ymxpc3RzIEN1cnJlbnQgdmFsdWUgb2YgKnByaW50LWxlbmd0aCpcbiAgOmxldmVsICAgICAgICAgICAgICAgTWF4aW11bSBkZXB0aCAgICAgICAgICAgICAgICAgICAgICAgIEN1cnJlbnQgdmFsdWUgb2YgKnByaW50LWxldmVsKlxuICA6bGluZXMqICAgICAgICAgICAgICBNYXhpbXVtIGxpbmVzIG9mIG91dHB1dCAgICAgICAgICAgICAgQ3VycmVudCB2YWx1ZSBvZiAqcHJpbnQtbGluZXMqXG4gIDptaXNlci13aWR0aCAgICAgICAgIFdpZHRoIHRvIGVudGVyIG1pc2VyIG1vZGUgICAgICAgICAgICBDdXJyZW50IHZhbHVlIG9mICpwcmludC1taXNlci13aWR0aCpcbiAgOmRpc3BhdGNoICAgICAgICAgICAgVGhlIHByZXR0eSBwcmludCBkaXNwYXRjaCBmdW5jdGlvbiAgIEN1cnJlbnQgdmFsdWUgb2YgKnByaW50LXBwcmludC1kaXNwYXRjaCpcbiAgOnByZXR0eSAgICAgICAgICAgICAgSWYgdHJ1ZSwgZG8gcHJldHR5IHByaW50aW5nICAgICAgICAgIEN1cnJlbnQgdmFsdWUgb2YgKnByaW50LXByZXR0eSpcbiAgOnJhZGl4ICAgICAgICAgICAgICAgSWYgdHJ1ZSwgcHJlcGVuZCBhIHJhZGl4IHNwZWNpZmllciAgIEN1cnJlbnQgdmFsdWUgb2YgKnByaW50LXJhZGl4KlxuICA6cmVhZGFibHkqICAgICAgICAgICBJZiB0cnVlLCBwcmludCByZWFkYWJseSAgICAgICAgICAgICAgQ3VycmVudCB2YWx1ZSBvZiAqcHJpbnQtcmVhZGFibHkqXG4gIDpyaWdodC1tYXJnaW4gICAgICAgIFRoZSBjb2x1bW4gZm9yIHRoZSByaWdodCBtYXJnaW4gICAgICBDdXJyZW50IHZhbHVlIG9mICpwcmludC1yaWdodC1tYXJnaW4qXG4gIDpzdXBwcmVzcy1uYW1lc3BhY2VzIElmIHRydWUsIG5vIG5hbWVzcGFjZXMgaW4gc3ltYm9scyAgICBDdXJyZW50IHZhbHVlIG9mICpwcmludC1zdXBwcmVzcy1uYW1lc3BhY2VzKlxuXG4gICogPSBub3QgeWV0IHN1cHBvcnRlZFxuIiwgOmFyZ2xpc3RzIChbb2JqZWN0ICYga3ctYXJnc10pfSwgOnNvdXJjZSAiKGRlZm5cbiB3cml0ZVxuIFwiV3JpdGUgYW4gb2JqZWN0IHN1YmplY3QgdG8gdGhlIGN1cnJlbnQgYmluZGluZ3Mgb2YgdGhlIHByaW50ZXIgY29udHJvbCB2YXJpYWJsZXMuXFxuVXNlIHRoZSBrdy1hcmdzIGFyZ3VtZW50IHRvIG92ZXJyaWRlIGluZGl2aWR1YWwgdmFyaWFibGVzIGZvciB0aGlzIGNhbGwgKGFuZCBhbnlcXG5yZWN1cnNpdmUgY2FsbHMpLiBSZXR1cm5zIHRoZSBzdHJpbmcgcmVzdWx0IGlmIDpzdHJlYW0gaXMgbmlsIG9yIG5pbCBvdGhlcndpc2UuXFxuXFxuVGhlIGZvbGxvd2luZyBrZXl3b3JkIGFyZ3VtZW50cyBjYW4gYmUgcGFzc2VkIHdpdGggdmFsdWVzOlxcbiAgS2V5d29yZCAgICAgICAgICAgICAgTWVhbmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlZmF1bHQgdmFsdWVcXG4gIDpzdHJlYW0gICAgICAgICAgICAgIFdyaXRlciBmb3Igb3V0cHV0IG9yIG5pbCAgICAgICAgICAgICB0cnVlIChpbmRpY2F0ZXMgKm91dCopXFxuICA6YmFzZSAgICAgICAgICAgICAgICBCYXNlIHRvIHVzZSBmb3Igd3JpdGluZyByYXRpb25hbHMgICAgQ3VycmVudCB2YWx1ZSBvZiAqcHJpbnQtYmFzZSpcXG4gIDpjaXJjbGUqICAgICAgICAgICAgIElmIHRydWUsIG1hcmsgY2lyY3VsYXIgc3RydWN0dXJlcyAgICBDdXJyZW50IHZhbHVlIG9mICpwcmludC1jaXJjbGUqXFxuICA6bGVuZ3RoICAgICAgICAgICAgICBNYXhpbXVtIGVsZW1lbnRzIHRvIHNob3cgaW4gc3VibGlzdHMgQ3VycmVudCB2YWx1ZSBvZiAqcHJpbnQtbGVuZ3RoKlxcbiAgOmxldmVsICAgICAgICAgICAgICAgTWF4aW11bSBkZXB0aCAgICAgICAgICAgICAgICAgICAgICAgIEN1cnJlbnQgdmFsdWUgb2YgKnByaW50LWxldmVsKlxcbiAgOmxpbmVzKiAgICAgICAgICAgICAgTWF4aW11bSBsaW5lcyBvZiBvdXRwdXQgICAgICAgICAgICAgIEN1cnJlbnQgdmFsdWUgb2YgKnByaW50LWxpbmVzKlxcbiAgOm1pc2VyLXdpZHRoICAgICAgICAgV2lkdGggdG8gZW50ZXIgbWlzZXIgbW9kZSAgICAgICAgICAgIEN1cnJlbnQgdmFsdWUgb2YgKnByaW50LW1pc2VyLXdpZHRoKlxcbiAgOmRpc3BhdGNoICAgICAgICAgICAgVGhlIHByZXR0eSBwcmludCBkaXNwYXRjaCBmdW5jdGlvbiAgIEN1cnJlbnQgdmFsdWUgb2YgKnByaW50LXBwcmludC1kaXNwYXRjaCpcXG4gIDpwcmV0dHkgICAgICAgICAgICAgIElmIHRydWUsIGRvIHByZXR0eSBwcmludGluZyAgICAgICAgICBDdXJyZW50IHZhbHVlIG9mICpwcmludC1wcmV0dHkqXFxuICA6cmFkaXggICAgICAgICAgICAgICBJZiB0cnVlLCBwcmVwZW5kIGEgcmFkaXggc3BlY2lmaWVyICAgQ3VycmVudCB2YWx1ZSBvZiAqcHJpbnQtcmFkaXgqXFxuICA6cmVhZGFibHkqICAgICAgICAgICBJZiB0cnVlLCBwcmludCByZWFkYWJseSAgICAgICAgICAgICAgQ3VycmVudCB2YWx1ZSBvZiAqcHJpbnQtcmVhZGFibHkqXFxuICA6cmlnaHQtbWFyZ2luICAgICAgICBUaGUgY29sdW1uIGZvciB0aGUgcmlnaHQgbWFyZ2luICAgICAgQ3VycmVudCB2YWx1ZSBvZiAqcHJpbnQtcmlnaHQtbWFyZ2luKlxcbiAgOnN1cHByZXNzLW5hbWVzcGFjZXMgSWYgdHJ1ZSwgbm8gbmFtZXNwYWNlcyBpbiBzeW1ib2xzICAgIEN1cnJlbnQgdmFsdWUgb2YgKnByaW50LXN1cHByZXNzLW5hbWVzcGFjZXMqXFxuXFxuICAqID0gbm90IHlldCBzdXBwb3J0ZWRcXG5cIlxuIFtvYmplY3QgJiBrdy1hcmdzXVxuIChsZXRcbiAgW29wdGlvbnMgKG1lcmdlIHs6c3RyZWFtIHRydWV9IChhcHBseSBoYXNoLW1hcCBrdy1hcmdzKSldXG4gIChiaW5kaW5nXG4gICBbY2xqcy5wcHJpbnQvKnByaW50LWJhc2UqXG4gICAgKDpiYXNlIG9wdGlvbnMgY2xqcy5wcHJpbnQvKnByaW50LWJhc2UqKVxuICAgIGNsanMucHByaW50LypwcmludC1jaXJjbGUqXG4gICAgKDpjaXJjbGUgb3B0aW9ucyBjbGpzLnBwcmludC8qcHJpbnQtY2lyY2xlKilcbiAgICBjbGpzLmNvcmUvKnByaW50LWxlbmd0aCpcbiAgICAoOmxlbmd0aCBvcHRpb25zIGNsanMuY29yZS8qcHJpbnQtbGVuZ3RoKilcbiAgICBjbGpzLmNvcmUvKnByaW50LWxldmVsKlxuICAgICg6bGV2ZWwgb3B0aW9ucyBjbGpzLmNvcmUvKnByaW50LWxldmVsKilcbiAgICBjbGpzLnBwcmludC8qcHJpbnQtbGluZXMqXG4gICAgKDpsaW5lcyBvcHRpb25zIGNsanMucHByaW50LypwcmludC1saW5lcyopXG4gICAgY2xqcy5wcHJpbnQvKnByaW50LW1pc2VyLXdpZHRoKlxuICAgICg6bWlzZXItd2lkdGggb3B0aW9ucyBjbGpzLnBwcmludC8qcHJpbnQtbWlzZXItd2lkdGgqKVxuICAgIGNsanMucHByaW50LypwcmludC1wcHJpbnQtZGlzcGF0Y2gqXG4gICAgKDpkaXNwYXRjaCBvcHRpb25zIGNsanMucHByaW50LypwcmludC1wcHJpbnQtZGlzcGF0Y2gqKVxuICAgIGNsanMucHByaW50LypwcmludC1wcmV0dHkqXG4gICAgKDpwcmV0dHkgb3B0aW9ucyBjbGpzLnBwcmludC8qcHJpbnQtcHJldHR5KilcbiAgICBjbGpzLnBwcmludC8qcHJpbnQtcmFkaXgqXG4gICAgKDpyYWRpeCBvcHRpb25zIGNsanMucHByaW50LypwcmludC1yYWRpeCopXG4gICAgY2xqcy5jb3JlLypwcmludC1yZWFkYWJseSpcbiAgICAoOnJlYWRhYmx5IG9wdGlvbnMgY2xqcy5jb3JlLypwcmludC1yZWFkYWJseSopXG4gICAgY2xqcy5wcHJpbnQvKnByaW50LXJpZ2h0LW1hcmdpbipcbiAgICAoOnJpZ2h0LW1hcmdpbiBvcHRpb25zIGNsanMucHByaW50LypwcmludC1yaWdodC1tYXJnaW4qKVxuICAgIGNsanMucHByaW50LypwcmludC1zdXBwcmVzcy1uYW1lc3BhY2VzKlxuICAgICg6c3VwcHJlc3MtbmFtZXNwYWNlc1xuICAgICBvcHRpb25zXG4gICAgIGNsanMucHByaW50LypwcmludC1zdXBwcmVzcy1uYW1lc3BhY2VzKildXG4gICAoYmluZGluZ1xuICAgIFtdXG4gICAgKGxldFxuICAgICBbc2JcbiAgICAgIChTdHJpbmdCdWZmZXIuKVxuICAgICAgb3B0dmFsXG4gICAgICAoaWYgKGNvbnRhaW5zPyBvcHRpb25zIDpzdHJlYW0pICg6c3RyZWFtIG9wdGlvbnMpIHRydWUpXG4gICAgICBiYXNlLXdyaXRlclxuICAgICAgKGlmXG4gICAgICAgKG9yICh0cnVlPyBvcHR2YWwpIChuaWw/IG9wdHZhbCkpXG4gICAgICAgKFN0cmluZ0J1ZmZlcldyaXRlci4gc2IpXG4gICAgICAgb3B0dmFsKV1cbiAgICAgKGlmXG4gICAgICAqcHJpbnQtcHJldHR5KlxuICAgICAgKHdpdGgtcHJldHR5LXdyaXRlciBiYXNlLXdyaXRlciAod3JpdGUtb3V0IG9iamVjdCkpXG4gICAgICAoYmluZGluZyBbKm91dCogYmFzZS13cml0ZXJdIChwciBvYmplY3QpKSlcbiAgICAgKGlmICh0cnVlPyBvcHR2YWwpIChzdHJpbmctcHJpbnQgKHN0ciBzYikpKVxuICAgICAoaWYgKG5pbD8gb3B0dmFsKSAoc3RyIHNiKSkpKSkpKVxuIn0gezpzeW0gLXBwZmx1c2gsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbcHBdKX0sIDpwcm90b2NvbCBJUHJldHR5Rmx1c2h9IHs6c3ltICpwcmludC1yaWdodC1tYXJnaW4qLCA6bWV0YSB7OmRvYyAiUHJldHR5IHByaW50aW5nIHdpbGwgdHJ5IHRvIGF2b2lkIGFueXRoaW5nIGdvaW5nIGJleW9uZCB0aGlzIGNvbHVtbi5cblNldCBpdCB0byBuaWwgdG8gaGF2ZSBwcHJpbnQgbGV0IHRoZSBsaW5lIGJlIGFyYml0cmFyaWx5IGxvbmcuIFRoaXMgd2lsbCBpZ25vcmUgYWxsXG5ub24tbWFuZGF0b3J5IG5ld2xpbmVzLiJ9LCA6c291cmNlICIoZGVmICpwcmludC1yaWdodC1tYXJnaW4qIDcyKVxuIn0gezpzeW0gd3JpdGUtb3V0LCA6bWV0YSB7OmRvYyAiV3JpdGUgYW4gb2JqZWN0IHRvICpvdXQqIHN1YmplY3QgdG8gdGhlIGN1cnJlbnQgYmluZGluZ3Mgb2YgdGhlIHByaW50ZXIgY29udHJvbFxudmFyaWFibGVzLiBVc2UgdGhlIGt3LWFyZ3MgYXJndW1lbnQgdG8gb3ZlcnJpZGUgaW5kaXZpZHVhbCB2YXJpYWJsZXMgZm9yIHRoaXMgY2FsbCAoYW5kXG5hbnkgcmVjdXJzaXZlIGNhbGxzKS5cblxuKm91dCogbXVzdCBiZSBhIFByZXR0eVdyaXRlciBpZiBwcmV0dHkgcHJpbnRpbmcgaXMgZW5hYmxlZC4gVGhpcyBpcyB0aGUgcmVzcG9uc2liaWxpdHlcbm9mIHRoZSBjYWxsZXIuXG5cblRoaXMgbWV0aG9kIGlzIHByaW1hcmlseSBpbnRlbmRlZCBmb3IgdXNlIGJ5IHByZXR0eSBwcmludCBkaXNwYXRjaCBmdW5jdGlvbnMgdGhhdFxuYWxyZWFkeSBrbm93IHRoYXQgdGhlIHByZXR0eSBwcmludGVyIHdpbGwgaGF2ZSBzZXQgdXAgdGhlaXIgZW52aXJvbm1lbnQgYXBwcm9wcmlhdGVseS5cbk5vcm1hbCBsaWJyYXJ5IGNsaWVudHMgc2hvdWxkIHVzZSB0aGUgc3RhbmRhcmQgXCJ3cml0ZVwiIGludGVyZmFjZS4gIiwgOmFyZ2xpc3RzIChbb2JqZWN0XSl9LCA6c291cmNlICIoZGVmblxuIHdyaXRlLW91dFxuIFwiV3JpdGUgYW4gb2JqZWN0IHRvICpvdXQqIHN1YmplY3QgdG8gdGhlIGN1cnJlbnQgYmluZGluZ3Mgb2YgdGhlIHByaW50ZXIgY29udHJvbFxcbnZhcmlhYmxlcy4gVXNlIHRoZSBrdy1hcmdzIGFyZ3VtZW50IHRvIG92ZXJyaWRlIGluZGl2aWR1YWwgdmFyaWFibGVzIGZvciB0aGlzIGNhbGwgKGFuZFxcbmFueSByZWN1cnNpdmUgY2FsbHMpLlxcblxcbipvdXQqIG11c3QgYmUgYSBQcmV0dHlXcml0ZXIgaWYgcHJldHR5IHByaW50aW5nIGlzIGVuYWJsZWQuIFRoaXMgaXMgdGhlIHJlc3BvbnNpYmlsaXR5XFxub2YgdGhlIGNhbGxlci5cXG5cXG5UaGlzIG1ldGhvZCBpcyBwcmltYXJpbHkgaW50ZW5kZWQgZm9yIHVzZSBieSBwcmV0dHkgcHJpbnQgZGlzcGF0Y2ggZnVuY3Rpb25zIHRoYXRcXG5hbHJlYWR5IGtub3cgdGhhdCB0aGUgcHJldHR5IHByaW50ZXIgd2lsbCBoYXZlIHNldCB1cCB0aGVpciBlbnZpcm9ubWVudCBhcHByb3ByaWF0ZWx5Llxcbk5vcm1hbCBsaWJyYXJ5IGNsaWVudHMgc2hvdWxkIHVzZSB0aGUgc3RhbmRhcmQgXFxcIndyaXRlXFxcIiBpbnRlcmZhY2UuIFwiXG4gW29iamVjdF1cbiAobGV0XG4gIFtsZW5ndGgtcmVhY2hlZFxuICAgKGFuZFxuICAgICpjdXJyZW50LWxlbmd0aCpcbiAgICAqcHJpbnQtbGVuZ3RoKlxuICAgICg+PSAqY3VycmVudC1sZW5ndGgqICpwcmludC1sZW5ndGgqKSldXG4gIChpZi1ub3RcbiAgICpwcmludC1wcmV0dHkqXG4gICAocHIgb2JqZWN0KVxuICAgKGlmXG4gICAgbGVuZ3RoLXJlYWNoZWRcbiAgICAoLXdyaXRlICpvdXQqIFwiLi4uXCIpXG4gICAgKGRvXG4gICAgIChpZlxuICAgICAgKmN1cnJlbnQtbGVuZ3RoKlxuICAgICAgKHNldCEgKmN1cnJlbnQtbGVuZ3RoKiAoaW5jICpjdXJyZW50LWxlbmd0aCopKSlcbiAgICAgKCpwcmludC1wcHJpbnQtZGlzcGF0Y2gqIG9iamVjdCkpKSlcbiAgbGVuZ3RoLXJlYWNoZWQpKVxuIn0gezpzeW0gKnByaW50LWJhc2UqLCA6bWV0YSB7OmRvYyAiVGhlIGJhc2UgdG8gdXNlIGZvciBwcmludGluZyBpbnRlZ2VycyBhbmQgcmF0aW9uYWxzLiJ9LCA6c291cmNlICIoZGVmICpwcmludC1iYXNlKiAxMClcbiJ9KSwgcGVvcGxlLm9kb3lsZSAoezpzeW0gaW5pdGlhbC1zZXNzaW9uLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiBpbml0aWFsLXNlc3Npb24gKGluaXQpKVxuIn0gezpzeW0gcXVlcnksIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbc2Vzc2lvbl0pfSwgOnNvdXJjZSAiKGRlZm4gcXVlcnkgW3Nlc3Npb25dIChvL3F1ZXJ5LWFsbCBzZXNzaW9uIDpwZW9wbGUub2RveWxlL2dldC1pdmFuKSlcbiJ9IHs6c3ltIHJ1biwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtdKX0sIDpzb3VyY2UgIihkZWZuIHJ1biBbXSAocXVlcnkgaW5pdGlhbC1zZXNzaW9uKSlcbiJ9KSwgY2xvanVyZS5jb3JlLnJyYi12ZWN0b3IucnJidCAoezpzeW0gc2hpZnQtZnJvbS10bywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtub2RlIGZyb20gdG9dKX0sIDpzb3VyY2UgIihkZWZuXG4gc2hpZnQtZnJvbS10b1xuIFtub2RlIGZyb20gdG9dXG4gKGNvbmRcbiAgKD09IGZyb20gdG8pXG4gIG5vZGVcbiAgKHJlZ3VsYXI/IG5vZGUpXG4gIChyZWN1clxuICAgKC0+VmVjdG9yTm9kZSAoLi1lZGl0IG5vZGUpIChkb3RvIChtYWtlLWFycmF5IDMyKSAoYXNldCAwIG5vZGUpKSlcbiAgICgrIDUgZnJvbSlcbiAgIHRvKVxuICA6ZWxzZVxuICAocmVjdXJcbiAgICgtPlZlY3Rvck5vZGVcbiAgICAoLi1lZGl0IG5vZGUpXG4gICAgKGRvdG9cbiAgICAgKG1ha2UtYXJyYXkgMzMpXG4gICAgIChhc2V0IDAgbm9kZSlcbiAgICAgKGFzZXRcbiAgICAgIDMyXG4gICAgICAoZG90byAobWFrZS1hcnJheSAzMykgKGFzZXQgMCAobGFzdC1yYW5nZSBub2RlKSkgKGFzZXQgMzIgMSkpKSkpXG4gICAoKyA1IGZyb20pXG4gICB0bykpKVxuIn0gezpzeW0gc2xvdC1jb3VudCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtub2RlIHNoaWZ0XSl9LCA6c291cmNlICIoZGVmblxuIHNsb3QtY291bnRcbiBbbm9kZSBzaGlmdF1cbiAobGV0XG4gIFthcnIgKC4tYXJyIG5vZGUpXVxuICAoaWZcbiAgICh6ZXJvPyBzaGlmdClcbiAgIChhbGVuZ3RoIGFycilcbiAgIChpZlxuICAgIChyZWd1bGFyPyBub2RlKVxuICAgIChpbmRleC1vZi1uaWwgYXJyKVxuICAgIChsZXQgW3JuZ3MgKHJhbmdlcyBub2RlKV0gKGFnZXQgcm5ncyAzMikpKSkpKVxuIn0gezpzeW0gemlwcGF0aCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtzaGlmdCBuMSBjbnQxIG4yIGNudDIgdHJhbnNmZXJyZWQtbGVhdmVzXSl9LCA6c291cmNlICIoZGVmblxuIHppcHBhdGhcbiBbc2hpZnQgbjEgY250MSBuMiBjbnQyIHRyYW5zZmVycmVkLWxlYXZlc11cbiAoaWZcbiAgKD09IHNoaWZ0IDUpXG4gIChyZWJhbGFuY2UtbGVhdmVzIG4xIGNudDEgbjIgY250MiB0cmFuc2ZlcnJlZC1sZWF2ZXMpXG4gIChsZXRcbiAgIFtjMVxuICAgIChsYXN0LWNoaWxkIG4xKVxuICAgIGMyXG4gICAgKGZpcnN0LWNoaWxkIG4yKVxuICAgIGNjbnQxXG4gICAgKGlmXG4gICAgIChyZWd1bGFyPyBuMSlcbiAgICAgKGxldFxuICAgICAgW20gKG1vZCBjbnQxIChiaXQtc2hpZnQtbGVmdCAxIHNoaWZ0KSldXG4gICAgICAoaWYgKHplcm8/IG0pIChiaXQtc2hpZnQtbGVmdCAxIHNoaWZ0KSBtKSlcbiAgICAgKGxldFxuICAgICAgW3JuZ3MgKHJhbmdlcyBuMSkgaSAoZGVjIChhZ2V0IHJuZ3MgMzIpKV1cbiAgICAgIChpZlxuICAgICAgICh6ZXJvPyBpKVxuICAgICAgIChhZ2V0IHJuZ3MgMClcbiAgICAgICAoLSAoYWdldCBybmdzIGkpIChhZ2V0IHJuZ3MgKGRlYyBpKSkpKSkpXG4gICAgY2NudDJcbiAgICAoaWZcbiAgICAgKHJlZ3VsYXI/IG4yKVxuICAgICAobGV0XG4gICAgICBbbSAobW9kIGNudDIgKGJpdC1zaGlmdC1sZWZ0IDEgc2hpZnQpKV1cbiAgICAgIChpZiAoemVybz8gbSkgKGJpdC1zaGlmdC1sZWZ0IDEgc2hpZnQpIG0pKVxuICAgICAoYWdldCAocmFuZ2VzIG4yKSAwKSlcbiAgICBuZXh0LXRyYW5zZmVycmVkLWxlYXZlc1xuICAgIChCb3guIDApXG4gICAgW25ldy1jMSBuZXctYzJdXG4gICAgKHppcHBhdGggKC0gc2hpZnQgNSkgYzEgY2NudDEgYzIgY2NudDIgbmV4dC10cmFuc2ZlcnJlZC1sZWF2ZXMpXG4gICAgZFxuICAgICguLXZhbCBuZXh0LXRyYW5zZmVycmVkLWxlYXZlcyldXG4gICAoc2V0ISAoLi12YWwgdHJhbnNmZXJyZWQtbGVhdmVzKSAoKyAoLi12YWwgdHJhbnNmZXJyZWQtbGVhdmVzKSBkKSlcbiAgIChyZWJhbGFuY2VcbiAgICBzaGlmdFxuICAgIChpZlxuICAgICAoaWRlbnRpY2FsPyBjMSBuZXctYzEpXG4gICAgIG4xXG4gICAgIChyZXBsYWNlLXJpZ2h0bW9zdC1jaGlsZCBzaGlmdCBuMSBuZXctYzEgZCkpXG4gICAgKCsgY250MSBkKVxuICAgIChpZlxuICAgICBuZXctYzJcbiAgICAgKGlmXG4gICAgICAoaWRlbnRpY2FsPyBjMiBuZXctYzIpXG4gICAgICBuMlxuICAgICAgKHJlcGxhY2UtbGVmdG1vc3QtY2hpbGQgc2hpZnQgbjIgY250MiBuZXctYzIgZCkpXG4gICAgIChyZW1vdmUtbGVmdG1vc3QtY2hpbGQgc2hpZnQgbjIpKVxuICAgICgtIGNudDIgZClcbiAgICB0cmFuc2ZlcnJlZC1sZWF2ZXMpKSkpXG4ifSB7OnN5bSBycmItY2h1bmtlZC1zZXEsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIFtbdmVjIGkgb2ZmXSBbdmVjIG5vZGUgaSBvZmZdIFt2ZWMgbm9kZSBpIG9mZiBtZXRhXV19LCA6c291cmNlICIoZGVmblxuIHJyYi1jaHVua2VkLXNlcVxuIChbdmVjIGkgb2ZmXVxuICAobGV0XG4gICBbY250XG4gICAgKC4tY250IHZlYylcbiAgICBzaGlmdFxuICAgICguLXNoaWZ0IHZlYylcbiAgICByb290XG4gICAgKC4tcm9vdCB2ZWMpXG4gICAgdGFpbFxuICAgICguLXRhaWwgdmVjKV1cbiAgIChSUkJDaHVua2VkU2VxLlxuICAgIHZlY1xuICAgIChhcnJheS1mb3IgY250IHNoaWZ0IHJvb3QgdGFpbCBpKVxuICAgIGlcbiAgICBvZmZcbiAgICBuaWxcbiAgICBuaWwpKSlcbiAoW3ZlYyBub2RlIGkgb2ZmXSAoUlJCQ2h1bmtlZFNlcS4gdmVjIG5vZGUgaSBvZmYgbmlsIG5pbCkpXG4gKFt2ZWMgbm9kZSBpIG9mZiBtZXRhXSAoUlJCQ2h1bmtlZFNlcS4gdmVjIG5vZGUgaSBvZmYgbWV0YSBuaWwpKSlcbiJ9IHs6c3ltIC1hcy1ycmJ0LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3ZdKX0sIDpwcm90b2NvbCBBc1JSQlR9IHs6c3ltIEFzUlJCVCwgOm1ldGEgezpkb2MgbmlsfSwgOm1ldGhvZHMgKC1hcy1ycmJ0KX0gezpzeW0gc2xpY2UtbGVmdCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtub2RlIHNoaWZ0IHN0YXJ0IGVuZF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBzbGljZS1sZWZ0XG4gW25vZGUgc2hpZnQgc3RhcnQgZW5kXVxuIChpZlxuICAoemVybz8gc2hpZnQpXG4gIChsZXRcbiAgIFthcnJcbiAgICAoLi1hcnIgbm9kZSlcbiAgICBuZXctbGVuXG4gICAgKC0gKGFsZW5ndGggYXJyKSBzdGFydClcbiAgICBuZXctYXJyXG4gICAgKG1ha2UtYXJyYXkgbmV3LWxlbildXG4gICAoYXJyYXktY29weSBhcnIgc3RhcnQgbmV3LWFyciAwIG5ldy1sZW4pXG4gICAoLT5WZWN0b3JOb2RlIG5pbCBuZXctYXJyKSlcbiAgKGxldFxuICAgW3JlZz9cbiAgICAocmVndWxhcj8gbm9kZSlcbiAgICBhcnJcbiAgICAoLi1hcnIgbm9kZSlcbiAgICBybmdzXG4gICAgKGlmLW5vdCByZWc/IChyYW5nZXMgbm9kZSkpXG4gICAgaVxuICAgIChiaXQtYW5kIChiaXQtc2hpZnQtcmlnaHQgc3RhcnQgc2hpZnQpIDMxKVxuICAgIGlcbiAgICAoaWZcbiAgICAgcmVnP1xuICAgICBpXG4gICAgIChsb29wIFtqIGldIChpZiAoPCBzdGFydCAoYWdldCBybmdzIGopKSBqIChyZWN1ciAoaW5jIGopKSkpKVxuICAgIGxlblxuICAgIChpZlxuICAgICByZWc/XG4gICAgIChsb29wXG4gICAgICBbaSBpXVxuICAgICAgKGlmIChvciAoPT0gaSAzMikgKG5pbD8gKGFnZXQgYXJyIGkpKSkgaSAocmVjdXIgKGluYyBpKSkpKVxuICAgICAoYWdldCBybmdzIDMyKSlcbiAgICBjaGlsZC1zdGFydFxuICAgIChpZlxuICAgICAocG9zPyBpKVxuICAgICAoLVxuICAgICAgc3RhcnRcbiAgICAgIChpZiByZWc/ICgqIGkgKGJpdC1zaGlmdC1sZWZ0IDEgc2hpZnQpKSAoYWdldCBybmdzIChkZWMgaSkpKSlcbiAgICAgc3RhcnQpXG4gICAgY2hpbGQtZW5kXG4gICAgKG1pblxuICAgICAoYml0LXNoaWZ0LWxlZnQgMSBzaGlmdClcbiAgICAgKGlmXG4gICAgICAocG9zPyBpKVxuICAgICAgKC1cbiAgICAgICBlbmRcbiAgICAgICAoaWYgcmVnPyAoKiBpIChiaXQtc2hpZnQtbGVmdCAxIHNoaWZ0KSkgKGFnZXQgcm5ncyAoZGVjIGkpKSkpXG4gICAgICBlbmQpKVxuICAgIG5ldy1jaGlsZFxuICAgIChzbGljZS1sZWZ0IChhZ2V0IGFyciBpKSAoLSBzaGlmdCA1KSBjaGlsZC1zdGFydCBjaGlsZC1lbmQpXG4gICAgbmV3LWxlblxuICAgICgtIGxlbiBpKVxuICAgIG5ldy1sZW5cbiAgICAoaWYgKG5pbD8gbmV3LWNoaWxkKSAoZGVjIG5ldy1sZW4pIG5ldy1sZW4pXVxuICAgKGNvbmRcbiAgICAoemVybz8gbmV3LWxlbilcbiAgICBuaWxcbiAgICByZWc/XG4gICAgKGxldFxuICAgICBbbmV3LWFyclxuICAgICAgKG1ha2UtYXJyYXkgMzMpXG4gICAgICBybmdzXG4gICAgICAobWFrZS1hcnJheSAzMylcbiAgICAgIHJuZzBcbiAgICAgIChpZlxuICAgICAgIChvciAobmlsPyBuZXctY2hpbGQpICg9PSBzaGlmdCA1KSAocmVndWxhcj8gbmV3LWNoaWxkKSlcbiAgICAgICAoLVxuICAgICAgICAoYml0LXNoaWZ0LWxlZnQgMSBzaGlmdClcbiAgICAgICAgKGJpdC1hbmQgKGJpdC1zaGlmdC1yaWdodCBzdGFydCAoLSBzaGlmdCA1KSkgMzEpKVxuICAgICAgIChsYXN0LXJhbmdlIG5ldy1jaGlsZCkpXG4gICAgICBzdGVwXG4gICAgICAoYml0LXNoaWZ0LWxlZnQgMSBzaGlmdCldXG4gICAgIChsb29wXG4gICAgICBbaiAwIHIgcm5nMF1cbiAgICAgICh3aGVuICg8IGogbmV3LWxlbikgKGFzZXQgcm5ncyBqIHIpIChyZWN1ciAoaW5jIGopICgrIHIgc3RlcCkpKSlcbiAgICAgKGFzZXQgcm5ncyAoZGVjIG5ldy1sZW4pICgtIGVuZCBzdGFydCkpXG4gICAgIChhc2V0IHJuZ3MgMzIgbmV3LWxlbilcbiAgICAgKGFycmF5LWNvcHkgYXJyIChpZiAobmlsPyBuZXctY2hpbGQpIChpbmMgaSkgaSkgbmV3LWFyciAwIG5ldy1sZW4pXG4gICAgIChpZi1ub3QgKG5pbD8gbmV3LWNoaWxkKSAoYXNldCBuZXctYXJyIDAgbmV3LWNoaWxkKSlcbiAgICAgKGFzZXQgbmV3LWFyciAzMiBybmdzKVxuICAgICAoLT5WZWN0b3JOb2RlICguLWVkaXQgbm9kZSkgbmV3LWFycikpXG4gICAgOmVsc2VcbiAgICAobGV0XG4gICAgIFtuZXctYXJyIChtYWtlLWFycmF5IDMzKSBuZXctcm5ncyAobWFrZS1hcnJheSAzMyldXG4gICAgIChsb29wXG4gICAgICBbaiAwIGkgaV1cbiAgICAgICh3aGVuXG4gICAgICAgKDwgaiBuZXctbGVuKVxuICAgICAgIChhc2V0IG5ldy1ybmdzIGogKC0gKGFnZXQgcm5ncyBpKSBzdGFydCkpXG4gICAgICAgKHJlY3VyIChpbmMgaikgKGluYyBpKSkpKVxuICAgICAoYXNldCBuZXctcm5ncyAzMiBuZXctbGVuKVxuICAgICAoYXJyYXktY29weSBhcnIgKGlmIChuaWw/IG5ldy1jaGlsZCkgKGluYyBpKSBpKSBuZXctYXJyIDAgbmV3LWxlbilcbiAgICAgKGlmLW5vdCAobmlsPyBuZXctY2hpbGQpIChhc2V0IG5ldy1hcnIgMCBuZXctY2hpbGQpKVxuICAgICAoYXNldCBuZXctYXJyIDMyIG5ldy1ybmdzKVxuICAgICAoLT5WZWN0b3JOb2RlICguLWVkaXQgbm9kZSkgbmV3LWFycikpKSkpKVxuIn0gezpzeW0gc3VidHJlZS1icmFuY2gtY291bnQsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbbm9kZSBzaGlmdF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBzdWJ0cmVlLWJyYW5jaC1jb3VudFxuIFtub2RlIHNoaWZ0XVxuIChsZXRcbiAgW2FyciAoLi1hcnIgbm9kZSkgY3MgKC0gc2hpZnQgNSldXG4gIChpZlxuICAgKHJlZ3VsYXI/IG5vZGUpXG4gICAobG9vcFxuICAgIFtpIDAgc2JjIDBdXG4gICAgKGlmXG4gICAgICg9PSBpIDMyKVxuICAgICBzYmNcbiAgICAgKGlmLWxldFxuICAgICAgW2NoaWxkIChhZ2V0IGFyciBpKV1cbiAgICAgIChyZWN1ciAoaW5jIGkpICgrIHNiYyAoc2xvdC1jb3VudCBjaGlsZCBjcykpKVxuICAgICAgc2JjKSkpXG4gICAobGV0XG4gICAgW2xpbSAoYWdldCAocmFuZ2VzIG5vZGUpIDMyKV1cbiAgICAobG9vcFxuICAgICBbaSAwIHNiYyAwXVxuICAgICAoaWZcbiAgICAgICg9PSBpIGxpbSlcbiAgICAgIHNiY1xuICAgICAgKGxldFxuICAgICAgIFtjaGlsZCAoYWdldCBhcnIgaSldXG4gICAgICAgKHJlY3VyIChpbmMgaSkgKCsgc2JjIChzbG90LWNvdW50IGNoaWxkIGNzKSkpKSkpKSkpKVxuIn0gezpzeW0gcnJidC1jb25jYXQtdGhyZXNob2xkLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiBycmJ0LWNvbmNhdC10aHJlc2hvbGQgMzMpXG4ifSB7OnN5bSBzbGljZS1yaWdodCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtub2RlIHNoaWZ0IGVuZF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBzbGljZS1yaWdodFxuIFtub2RlIHNoaWZ0IGVuZF1cbiAoaWZcbiAgKHplcm8/IHNoaWZ0KVxuICAobGV0XG4gICBbYXJyICguLWFyciBub2RlKSBuZXctYXJyIChtYWtlLWFycmF5IGVuZCldXG4gICAoYXJyYXktY29weSBhcnIgMCBuZXctYXJyIDAgZW5kKVxuICAgKC0+VmVjdG9yTm9kZSBuaWwgbmV3LWFycikpXG4gIChsZXRcbiAgIFtyZWc/XG4gICAgKHJlZ3VsYXI/IG5vZGUpXG4gICAgcm5nc1xuICAgIChpZi1ub3QgcmVnPyAocmFuZ2VzIG5vZGUpKVxuICAgIGlcbiAgICAoYml0LWFuZCAoYml0LXNoaWZ0LXJpZ2h0IChkZWMgZW5kKSBzaGlmdCkgMzEpXG4gICAgaVxuICAgIChpZlxuICAgICByZWc/XG4gICAgIGlcbiAgICAgKGxvb3AgW2ogaV0gKGlmICg8PSBlbmQgKGFnZXQgcm5ncyBqKSkgaiAocmVjdXIgKGluYyBqKSkpKSlcbiAgICBjaGlsZC1lbmRcbiAgICAoaWZcbiAgICAgcmVnP1xuICAgICAobGV0XG4gICAgICBbY2UgKG1vZCBlbmQgKGJpdC1zaGlmdC1sZWZ0IDEgc2hpZnQpKV1cbiAgICAgIChpZiAoemVybz8gY2UpIChiaXQtc2hpZnQtbGVmdCAxIHNoaWZ0KSBjZSkpXG4gICAgIChpZiAocG9zPyBpKSAoLSBlbmQgKGFnZXQgcm5ncyAoZGVjIGkpKSkgZW5kKSlcbiAgICBhcnJcbiAgICAoLi1hcnIgbm9kZSlcbiAgICBuZXctY2hpbGRcbiAgICAoc2xpY2UtcmlnaHQgKGFnZXQgYXJyIGkpICgtIHNoaWZ0IDUpIGNoaWxkLWVuZClcbiAgICByZWd1bGFyLWNoaWxkP1xuICAgIChpZlxuICAgICAoPT0gc2hpZnQgNSlcbiAgICAgKD09IDMyIChhbGVuZ3RoICguLWFyciBuZXctY2hpbGQpKSlcbiAgICAgKHJlZ3VsYXI/IG5ldy1jaGlsZCkpXG4gICAgbmV3LWFyclxuICAgIChtYWtlLWFycmF5IChpZiAoYW5kIHJlZz8gcmVndWxhci1jaGlsZD8pIDMyIDMzKSlcbiAgICBuZXctY2hpbGQtcm5nXG4gICAgKGlmXG4gICAgIHJlZ3VsYXItY2hpbGQ/XG4gICAgIChsZXRcbiAgICAgIFttIChtb2QgY2hpbGQtZW5kIChiaXQtc2hpZnQtbGVmdCAxIHNoaWZ0KSldXG4gICAgICAoaWYgKHplcm8/IG0pIChiaXQtc2hpZnQtbGVmdCAxIHNoaWZ0KSBtKSlcbiAgICAgKGlmXG4gICAgICAoPT0gc2hpZnQgNSlcbiAgICAgIChhbGVuZ3RoICguLWFyciBuZXctY2hpbGQpKVxuICAgICAgKGxhc3QtcmFuZ2UgbmV3LWNoaWxkKSkpXVxuICAgKGFycmF5LWNvcHkgYXJyIDAgbmV3LWFyciAwIGkpXG4gICAoYXNldCBuZXctYXJyIGkgbmV3LWNoaWxkKVxuICAgKGlmLW5vdFxuICAgIChhbmQgcmVnPyByZWd1bGFyLWNoaWxkPylcbiAgICAobGV0XG4gICAgIFtuZXctcm5ncyAobWFrZS1hcnJheSAzMykgc3RlcCAoYml0LXNoaWZ0LWxlZnQgMSBzaGlmdCldXG4gICAgIChpZlxuICAgICAgcmVnP1xuICAgICAgKGRvdGltZXMgW2ogaV0gKGFzZXQgbmV3LXJuZ3MgaiAoKiAoaW5jIGopIHN0ZXApKSlcbiAgICAgIChkb3RpbWVzIFtqIGldIChhc2V0IG5ldy1ybmdzIGogKGFnZXQgcm5ncyBqKSkpKVxuICAgICAoYXNldFxuICAgICAgbmV3LXJuZ3NcbiAgICAgIGlcbiAgICAgICgrIChpZiAocG9zPyBpKSAoYWdldCBuZXctcm5ncyAoZGVjIGkpKSAwKSBuZXctY2hpbGQtcm5nKSlcbiAgICAgKGFzZXQgbmV3LXJuZ3MgMzIgKGluYyBpKSlcbiAgICAgKGFzZXQgbmV3LWFyciAzMiBuZXctcm5ncykpKVxuICAgKC0+VmVjdG9yTm9kZSBuaWwgbmV3LWFycikpKSlcbiJ9IHs6c3ltIG1heC1leHRyYS1zZWFyY2gtc3RlcHMsIDptZXRhIHt9LCA6c291cmNlICIoZGVmIG1heC1leHRyYS1zZWFyY2gtc3RlcHMgMilcbiJ9IHs6c3ltIGNoaWxkLXNlcSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtub2RlIHNoaWZ0IGNudF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBjaGlsZC1zZXFcbiBbbm9kZSBzaGlmdCBjbnRdXG4gKGxldFxuICBbYXJyXG4gICAoLi1hcnIgbm9kZSlcbiAgIHJuZ3NcbiAgIChpZiAocmVndWxhcj8gbm9kZSkgKHJlZ3VsYXItcmFuZ2VzIHNoaWZ0IGNudCkgKHJhbmdlcyBub2RlKSlcbiAgIGNzXG4gICAoaWYgcm5ncyAoYWdldCBybmdzIDMyKSAoaW5kZXgtb2YtbmlsIGFycikpXG4gICBjc2VxXG4gICAoZm5cbiAgICBjc2VxXG4gICAgW2Mgcl1cbiAgICAobGV0XG4gICAgIFthcnJcbiAgICAgICguLWFyciBjKVxuICAgICAgcm5nc1xuICAgICAgKGlmIChyZWd1bGFyPyBjKSAocmVndWxhci1yYW5nZXMgKC0gc2hpZnQgNSkgcikgKHJhbmdlcyBjKSlcbiAgICAgIGdjc1xuICAgICAgKGlmIHJuZ3MgKGFnZXQgcm5ncyAzMikgKGluZGV4LW9mLW5pbCBhcnIpKV1cbiAgICAgKG1hcCBsaXN0ICh0YWtlIGdjcyBhcnIpICh0YWtlIGdjcyAobWFwIC0gcm5ncyAoY29ucyAwIHJuZ3MpKSkpKSldXG4gIChtYXBjYXQgY3NlcSAodGFrZSBjcyBhcnIpICh0YWtlIGNzIChtYXAgLSBybmdzIChjb25zIDAgcm5ncykpKSkpKVxuIn0gezpzeW0gcmViYWxhbmNlLWxlYXZlcywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtuMSBjbnQxIG4yIGNudDIgdHJhbnNmZXJyZWQtbGVhdmVzXSl9LCA6c291cmNlICIoZGVmblxuIHJlYmFsYW5jZS1sZWF2ZXNcbiBbbjEgY250MSBuMiBjbnQyIHRyYW5zZmVycmVkLWxlYXZlc11cbiAobGV0XG4gIFtzbGMxXG4gICAoc2xvdC1jb3VudCBuMSA1KVxuICAgc2xjMlxuICAgKHNsb3QtY291bnQgbjIgNSlcbiAgIGFcbiAgICgrIHNsYzEgc2xjMilcbiAgIHNiYzFcbiAgIChzdWJ0cmVlLWJyYW5jaC1jb3VudCBuMSA1KVxuICAgc2JjMlxuICAgKHN1YnRyZWUtYnJhbmNoLWNvdW50IG4yIDUpXG4gICBwXG4gICAoKyBzYmMxIHNiYzIpXG4gICBlXG4gICAoLSBhIChpbmMgKHF1b3QgKGRlYyBwKSAzMikpKV1cbiAgKGNvbmRcbiAgICg8PSBlIG1heC1leHRyYS1zZWFyY2gtc3RlcHMpXG4gICAoYXJyYXkgbjEgbjIpXG4gICAoPD0gKCsgc2JjMSBzYmMyKSAxMDI0KVxuICAgKGxldFxuICAgIFtyZWc/XG4gICAgICh6ZXJvPyAobW9kIHAgMzIpKVxuICAgICBuZXctYXJyXG4gICAgIChtYWtlLWFycmF5IChpZiByZWc/IDMyIDMzKSlcbiAgICAgbmV3LW4xXG4gICAgICgtPlZlY3Rvck5vZGUgbmlsIG5ldy1hcnIpXVxuICAgIChsb29wXG4gICAgIFtpXG4gICAgICAwXG4gICAgICBic1xuICAgICAgKHBhcnRpdGlvbi1hbGxcbiAgICAgICAzMlxuICAgICAgIChjb25jYXQgKGxlYWYtc2VxICguLWFyciBuMSkpIChsZWFmLXNlcSAoLi1hcnIgbjIpKSkpXVxuICAgICAod2hlbi1maXJzdFxuICAgICAgW2Jsb2NrIGJzXVxuICAgICAgKGxldFxuICAgICAgIFthIChtYWtlLWFycmF5IChjb3VudCBibG9jaykpXVxuICAgICAgIChsb29wXG4gICAgICAgIFtpIDAgeHMgKHNlcSBibG9jayldXG4gICAgICAgICh3aGVuIHhzIChhc2V0IGEgaSAoZmlyc3QgeHMpKSAocmVjdXIgKGluYyBpKSAobmV4dCB4cykpKSlcbiAgICAgICAoYXNldCBuZXctYXJyIGkgKC0+VmVjdG9yTm9kZSBuaWwgYSkpXG4gICAgICAgKHJlY3VyIChpbmMgaSkgKG5leHQgYnMpKSkpKVxuICAgIChpZi1ub3QgcmVnPyAoYXNldCBuZXctYXJyIDMyIChyZWd1bGFyLXJhbmdlcyA1IHApKSlcbiAgICAoc2V0ISAoLi12YWwgdHJhbnNmZXJyZWQtbGVhdmVzKSBzYmMyKVxuICAgIChhcnJheSBuZXctbjEgbmlsKSlcbiAgIDplbHNlXG4gICAobGV0XG4gICAgW3JlZz9cbiAgICAgKHplcm8/IChtb2QgcCAzMikpXG4gICAgIG5ldy1hcnIxXG4gICAgIChtYWtlLWFycmF5IDMyKVxuICAgICBuZXctYXJyMlxuICAgICAobWFrZS1hcnJheSAoaWYgcmVnPyAzMiAzMykpXG4gICAgIG5ldy1uMVxuICAgICAoLT5WZWN0b3JOb2RlIG5pbCBuZXctYXJyMSlcbiAgICAgbmV3LW4yXG4gICAgICgtPlZlY3Rvck5vZGUgbmlsIG5ldy1hcnIyKV1cbiAgICAobG9vcFxuICAgICBbaVxuICAgICAgMFxuICAgICAgYnNcbiAgICAgIChwYXJ0aXRpb24tYWxsXG4gICAgICAgMzJcbiAgICAgICAoY29uY2F0IChsZWFmLXNlcSAobWFrZS1hcnJheSBuMSkpIChsZWFmLXNlcSAobWFrZS1hcnJheSBuMikpKSldXG4gICAgICh3aGVuLWZpcnN0XG4gICAgICBbYmxvY2sgYnNdXG4gICAgICAobGV0XG4gICAgICAgW2EgKG1ha2UtYXJyYXkgKGNvdW50IGJsb2NrKSldXG4gICAgICAgKGxvb3BcbiAgICAgICAgW2kgMCB4cyAoc2VxIGJsb2NrKV1cbiAgICAgICAgKHdoZW4geHMgKGFzZXQgYSBpIChmaXJzdCB4cykpIChyZWN1ciAoaW5jIGkpIChuZXh0IHhzKSkpKVxuICAgICAgIChpZlxuICAgICAgICAoPCBpIDMyKVxuICAgICAgICAoYXNldCBuZXctYXJyMSBpICgtPlZlY3Rvck5vZGUgbmlsIGEpKVxuICAgICAgICAoYXNldCBuZXctYXJyMiAoLSBpIDMyKSAoLT5WZWN0b3JOb2RlIG5pbCBhKSkpXG4gICAgICAgKHJlY3VyIChpbmMgaSkgKG5leHQgYnMpKSkpKVxuICAgIChpZi1ub3QgcmVnPyAoYXNldCBuZXctYXJyMiAzMiAocmVndWxhci1yYW5nZXMgNSAoLSBwIDEwMjQpKSkpXG4gICAgKHNldCEgKC4tdmFsIHRyYW5zZmVycmVkLWxlYXZlcykgKC0gMTAyNCBzYmMxKSlcbiAgICAoYXJyYXkgbmV3LW4xIG5ldy1uMikpKSkpXG4ifSB7OnN5bSByZWJhbGFuY2UsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbc2hpZnQgbjEgY250MSBuMiBjbnQyIHRyYW5zZmVycmVkLWxlYXZlc10pfSwgOnNvdXJjZSAiKGRlZm5cbiByZWJhbGFuY2VcbiBbc2hpZnQgbjEgY250MSBuMiBjbnQyIHRyYW5zZmVycmVkLWxlYXZlc11cbiAoaWZcbiAgKG5pbD8gbjIpXG4gIChhcnJheSBuMSBuaWwpXG4gIChsZXRcbiAgIFtzbGMxXG4gICAgKHNsb3QtY291bnQgbjEgc2hpZnQpXG4gICAgc2xjMlxuICAgIChzbG90LWNvdW50IG4yIHNoaWZ0KVxuICAgIGFcbiAgICAoKyBzbGMxIHNsYzIpXG4gICAgc2JjMVxuICAgIChzdWJ0cmVlLWJyYW5jaC1jb3VudCBuMSBzaGlmdClcbiAgICBzYmMyXG4gICAgKHN1YnRyZWUtYnJhbmNoLWNvdW50IG4yIHNoaWZ0KVxuICAgIHBcbiAgICAoKyBzYmMxIHNiYzIpXG4gICAgZVxuICAgICgtIGEgKGluYyAocXVvdCAoZGVjIHApIDMyKSkpXVxuICAgKGNvbmRcbiAgICAoPD0gZSBtYXgtZXh0cmEtc2VhcmNoLXN0ZXBzKVxuICAgIChhcnJheSBuMSBuMilcbiAgICAoPD0gKCsgc2JjMSBzYmMyKSAxMDI0KVxuICAgIChsZXRcbiAgICAgW25ldy1hcnJcbiAgICAgIChtYWtlLWFycmF5IDMzKVxuICAgICAgbmV3LXJuZ3NcbiAgICAgIChtYWtlLWFycmF5IDMzKVxuICAgICAgbmV3LW4xXG4gICAgICAoLT5WZWN0b3JOb2RlIG5pbCBuZXctYXJyKV1cbiAgICAgKGxvb3BcbiAgICAgIFtpXG4gICAgICAgMFxuICAgICAgIGJzXG4gICAgICAgKHBhcnRpdGlvbi1hbGxcbiAgICAgICAgMzJcbiAgICAgICAgKGNvbmNhdCAoY2hpbGQtc2VxIG4xIHNoaWZ0IGNudDEpIChjaGlsZC1zZXEgbjIgc2hpZnQgY250MikpKV1cbiAgICAgICh3aGVuLWZpcnN0XG4gICAgICAgW2Jsb2NrIGJzXVxuICAgICAgIChsZXRcbiAgICAgICAgW2EgKG1ha2UtYXJyYXkgMzMpIHIgKG1ha2UtYXJyYXkgMzMpXVxuICAgICAgICAoYXNldCBhIDMyIHIpXG4gICAgICAgIChhc2V0IHIgMzIgKGNvdW50IGJsb2NrKSlcbiAgICAgICAgKGxvb3BcbiAgICAgICAgIFtpIDAgbyAwIGdjcyAoc2VxIGJsb2NrKV1cbiAgICAgICAgICh3aGVuLWZpcnN0XG4gICAgICAgICAgW1tnYyBnY3JdIGdjc11cbiAgICAgICAgICAoYXNldCBhIGkgZ2MpXG4gICAgICAgICAgKGFzZXQgciBpICgrIG8gZ2NyKSlcbiAgICAgICAgICAocmVjdXIgKGluYyBpKSAoKyBvIGdjcikgKG5leHQgZ2NzKSkpKVxuICAgICAgICAoYXNldCBuZXctYXJyIGkgKC0+VmVjdG9yTm9kZSBuaWwgYSkpXG4gICAgICAgIChhc2V0XG4gICAgICAgICBuZXctcm5nc1xuICAgICAgICAgaVxuICAgICAgICAgKCtcbiAgICAgICAgICAoYWdldCByIChkZWMgKGFnZXQgciAzMikpKVxuICAgICAgICAgIChpZiAocG9zPyBpKSAoYWdldCBuZXctcm5ncyAoZGVjIGkpKSAwKSkpXG4gICAgICAgIChhc2V0IG5ldy1ybmdzIDMyIChpbmMgaSkpXG4gICAgICAgIChyZWN1ciAoaW5jIGkpIChuZXh0IGJzKSkpKSlcbiAgICAgKGFzZXQgbmV3LWFyciAzMiBuZXctcm5ncylcbiAgICAgKHNldCEgKC4tdmFsIHRyYW5zZmVycmVkLWxlYXZlcykgY250MilcbiAgICAgKGFycmF5IG5ldy1uMSBuaWwpKVxuICAgIDplbHNlXG4gICAgKGxldFxuICAgICBbbmV3LWFycjFcbiAgICAgIChtYWtlLWFycmF5IDMzKVxuICAgICAgbmV3LWFycjJcbiAgICAgIChtYWtlLWFycmF5IDMzKVxuICAgICAgbmV3LXJuZ3MxXG4gICAgICAobWFrZS1hcnJheSAzMylcbiAgICAgIG5ldy1ybmdzMlxuICAgICAgKG1ha2UtYXJyYXkgMzMpXG4gICAgICBuZXctbjFcbiAgICAgICgtPlZlY3Rvck5vZGUgbmlsIG5ldy1hcnIxKVxuICAgICAgbmV3LW4yXG4gICAgICAoLT5WZWN0b3JOb2RlIG5pbCBuZXctYXJyMildXG4gICAgIChsb29wXG4gICAgICBbaVxuICAgICAgIDBcbiAgICAgICBic1xuICAgICAgIChwYXJ0aXRpb24tYWxsXG4gICAgICAgIDMyXG4gICAgICAgIChjb25jYXQgKGNoaWxkLXNlcSBuMSBzaGlmdCBjbnQxKSAoY2hpbGQtc2VxIG4yIHNoaWZ0IGNudDIpKSldXG4gICAgICAod2hlbi1maXJzdFxuICAgICAgIFtibG9jayBic11cbiAgICAgICAobGV0XG4gICAgICAgIFthIChtYWtlLWFycmF5IDMzKSByIChtYWtlLWFycmF5IDMzKV1cbiAgICAgICAgKGFzZXQgYSAzMiByKVxuICAgICAgICAoYXNldCByIDMyIChjb3VudCBibG9jaykpXG4gICAgICAgIChsb29wXG4gICAgICAgICBbaSAwIG8gMCBnY3MgKHNlcSBibG9jayldXG4gICAgICAgICAod2hlbi1maXJzdFxuICAgICAgICAgIFtbZ2MgZ2NyXSBnY3NdXG4gICAgICAgICAgKGFzZXQgYSBpIGdjKVxuICAgICAgICAgIChhc2V0IHIgaSAoKyBvIGdjcikpXG4gICAgICAgICAgKHJlY3VyIChpbmMgaSkgKCsgbyBnY3IpIChuZXh0IGdjcykpKSlcbiAgICAgICAgKGlmXG4gICAgICAgICAoYW5kICg8IGkgMzIpICg+ICgrICgqIGkgMzIpIChjb3VudCBibG9jaykpIHNiYzEpKVxuICAgICAgICAgKGxldFxuICAgICAgICAgIFt0YnNcbiAgICAgICAgICAgKC0gKCsgKCogaSAzMikgKGNvdW50IGJsb2NrKSkgc2JjMSlcbiAgICAgICAgICAgbGlcbiAgICAgICAgICAgKGRlYyAoYWdldCByIDMyKSlcbiAgICAgICAgICAgZFxuICAgICAgICAgICAoaWZcbiAgICAgICAgICAgICg+PSB0YnMgMzIpXG4gICAgICAgICAgICAoYWdldCByIGxpKVxuICAgICAgICAgICAgKC0gKGFnZXQgciBsaSkgKGFnZXQgciAoLSBsaSB0YnMpKSkpXVxuICAgICAgICAgIChzZXQhXG4gICAgICAgICAgICguLXZhbCB0cmFuc2ZlcnJlZC1sZWF2ZXMpXG4gICAgICAgICAgICgrICguLXZhbCB0cmFuc2ZlcnJlZC1sZWF2ZXMpIGQpKSkpXG4gICAgICAgIChsZXRcbiAgICAgICAgIFtuZXctYXJyXG4gICAgICAgICAgKGlmICg8IGkgMzIpIG5ldy1hcnIxIG5ldy1hcnIyKVxuICAgICAgICAgIG5ldy1ybmdzXG4gICAgICAgICAgKGlmICg8IGkgMzIpIG5ldy1ybmdzMSBuZXctcm5nczIpXG4gICAgICAgICAgaVxuICAgICAgICAgIChtb2QgaSAzMildXG4gICAgICAgICAoYXNldCBuZXctYXJyIGkgKC0+VmVjdG9yTm9kZSBuaWwgYSkpXG4gICAgICAgICAoYXNldFxuICAgICAgICAgIG5ldy1ybmdzXG4gICAgICAgICAgaVxuICAgICAgICAgICgrXG4gICAgICAgICAgIChhZ2V0IHIgKGRlYyAoYWdldCByIDMyKSkpXG4gICAgICAgICAgIChpZiAocG9zPyBpKSAoYWdldCBuZXctcm5ncyAoZGVjIGkpKSAwKSkpXG4gICAgICAgICAoYXNldCBuZXctcm5ncyAzMiAoaW5jIGkpKSlcbiAgICAgICAgKHJlY3VyIChpbmMgaSkgKG5leHQgYnMpKSkpKVxuICAgICAoYXNldCBuZXctYXJyMSAzMiBuZXctcm5nczEpXG4gICAgIChhc2V0IG5ldy1hcnIyIDMyIG5ldy1ybmdzMilcbiAgICAgKGFycmF5IG5ldy1uMSBuZXctbjIpKSkpKSlcbiJ9IHs6c3ltIGxlYWYtc2VxLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2Fycl0pfSwgOnNvdXJjZSAiKGRlZm5cbiBsZWFmLXNlcVxuIFthcnJdXG4gKG1hcGNhdFxuICAoZm4qIFtwMV9fNDIzOTYjXSAoLi1hcnIgcDFfXzQyMzk2IykpXG4gICh0YWtlIChpbmRleC1vZi1uaWwgYXJyKSBhcnIpKSlcbiJ9IHs6c3ltIHNxdWFzaC1ub2RlcywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtzaGlmdCBuMSBjbnQxIG4yIGNudDJdKX0sIDpzb3VyY2UgIihkZWZuXG4gc3F1YXNoLW5vZGVzXG4gW3NoaWZ0IG4xIGNudDEgbjIgY250Ml1cbiAobGV0XG4gIFthcnIxXG4gICAoLi1hcnIgbjEpXG4gICBhcnIyXG4gICAoLi1hcnIgbjIpXG4gICBsaTFcbiAgIChpbmRleC1vZi1uaWwgYXJyMSlcbiAgIGxpMlxuICAgKGluZGV4LW9mLW5pbCBhcnIyKVxuICAgc2xvdHNcbiAgIChjb25jYXQgKHRha2UgbGkxIGFycjEpICh0YWtlIGxpMiBhcnIyKSldXG4gIChpZlxuICAgKD4gKGNvdW50IHNsb3RzKSAzMilcbiAgIChhcnJheSBuMSBuMilcbiAgIChsZXRcbiAgICBbbmV3LXJuZ3NcbiAgICAgKG1ha2UtYXJyYXkgMzMpXG4gICAgIG5ldy1hcnJcbiAgICAgKG1ha2UtYXJyYXkgMzMpXG4gICAgIHJuZ3MxXG4gICAgICh0YWtlXG4gICAgICBsaTFcbiAgICAgIChpZiAocmVndWxhcj8gbjEpIChyZWd1bGFyLXJhbmdlcyBzaGlmdCBjbnQxKSAocmFuZ2VzIG4xKSkpXG4gICAgIHJuZ3MyXG4gICAgICh0YWtlXG4gICAgICBsaTJcbiAgICAgIChpZiAocmVndWxhcj8gbjIpIChyZWd1bGFyLXJhbmdlcyBzaGlmdCBjbnQyKSAocmFuZ2VzIG4yKSkpXG4gICAgIHJuZ3MyXG4gICAgIChsZXRcbiAgICAgIFtyIChsYXN0IHJuZ3MxKV1cbiAgICAgIChtYXAgKGZuKiBbcDFfXzQyMzk3I10gKCsgcDFfXzQyMzk3IyByKSkgcm5nczIpKVxuICAgICBybmdzXG4gICAgIChjb25jYXQgcm5nczEgcm5nczIpXVxuICAgIChhc2V0IG5ldy1hcnIgMzIgbmV3LXJuZ3MpXG4gICAgKGxvb3BcbiAgICAgW2kgMCBjcyAoc2VxIHNsb3RzKV1cbiAgICAgKHdoZW4gY3MgKGFzZXQgbmV3LWFyciBpIChmaXJzdCBjcykpIChyZWN1ciAoaW5jIGkpIChuZXh0IGNzKSkpKVxuICAgIChsb29wXG4gICAgIFtpIDAgcm5ncyAoc2VxIHJuZ3MpXVxuICAgICAoaWZcbiAgICAgIHJuZ3NcbiAgICAgIChkbyAoYXNldCBuZXctcm5ncyBpIChmaXJzdCBybmdzKSkgKHJlY3VyIChpbmMgaSkgKG5leHQgcm5ncykpKVxuICAgICAgKGFzZXQgbmV3LXJuZ3MgMzIgaSkpKVxuICAgIChhcnJheSAoLT5WZWN0b3JOb2RlIG5pbCBuZXctYXJyKSBuaWwpKSkpKVxuIn0gezpzeW0gc3BsaWNlLXJyYnRzLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3YxIHYyXSl9LCA6c291cmNlICIoZGVmblxuIHNwbGljZS1ycmJ0c1xuIFt2MSB2Ml1cbiAoY29uZFxuICAoemVybz8gKGNvdW50IHYxKSlcbiAgdjJcbiAgKDwgKGNvdW50IHYyKSBycmJ0LWNvbmNhdC10aHJlc2hvbGQpXG4gIChpbnRvIHYxIHYyKVxuICA6ZWxzZVxuICAobGV0XG4gICBbczFcbiAgICAoLi1zaGlmdCB2MSlcbiAgICBzMlxuICAgICguLXNoaWZ0IHYyKVxuICAgIHIxXG4gICAgKC4tcm9vdCB2MSlcbiAgICBvP1xuICAgIChvdmVyZmxvdz8gcjEgczEgKCsgKGNvdW50IHYxKSAoLSAzMiAoYWxlbmd0aCAoLi10YWlsIHYxKSkpKSlcbiAgICByMVxuICAgIChpZlxuICAgICBvP1xuICAgICAobGV0XG4gICAgICBbdGFpbFxuICAgICAgICguLXRhaWwgdjEpXG4gICAgICAgdGFpbC1ub2RlXG4gICAgICAgKC0+VmVjdG9yTm9kZSBuaWwgdGFpbClcbiAgICAgICByZWc/XG4gICAgICAgKGFuZCAocmVndWxhcj8gcjEpICg9PSAoYWxlbmd0aCB0YWlsKSAzMikpXG4gICAgICAgYXJyXG4gICAgICAgKG1ha2UtYXJyYXkgKGlmIHJlZz8gMzIgMzMpKV1cbiAgICAgIChhc2V0IGFyciAwIHIxKVxuICAgICAgKGFzZXQgYXJyIDEgKG5ldy1wYXRoKiBzMSB0YWlsLW5vZGUpKVxuICAgICAgKGlmLW5vdFxuICAgICAgIHJlZz9cbiAgICAgICAobGV0XG4gICAgICAgIFtybmdzIChtYWtlLWFycmF5IDMzKV1cbiAgICAgICAgKGFzZXQgcm5ncyAzMiAyKVxuICAgICAgICAoYXNldCBybmdzIDAgKC0gKGNvdW50IHYxKSAoYWxlbmd0aCB0YWlsKSkpXG4gICAgICAgIChhc2V0IHJuZ3MgMSAoY291bnQgdjEpKVxuICAgICAgICAoYXNldCBhcnIgMzIgcm5ncykpKVxuICAgICAgKC0+VmVjdG9yTm9kZSBuaWwgYXJyKSlcbiAgICAgKGZvbGQtdGFpbFxuICAgICAgcjFcbiAgICAgIHMxXG4gICAgICAodGFpbC1vZmZzZXQgKC4tY250IHYxKSAoLi10YWlsIHYxKSlcbiAgICAgICguLXRhaWwgdjEpKSlcbiAgICBzMVxuICAgIChpZiBvPyAoKyBzMSA1KSBzMSlcbiAgICByMlxuICAgICguLXJvb3QgdjIpXG4gICAgc1xuICAgIChtYXggczEgczIpXG4gICAgcjFcbiAgICAoc2hpZnQtZnJvbS10byByMSBzMSBzKVxuICAgIHIyXG4gICAgKHNoaWZ0LWZyb20tdG8gcjIgczIgcylcbiAgICB0cmFuc2ZlcnJlZC1sZWF2ZXNcbiAgICAoQm94LiAwKVxuICAgIFtuMSBuMl1cbiAgICAoemlwcGF0aFxuICAgICBzXG4gICAgIHIxXG4gICAgIChjb3VudCB2MSlcbiAgICAgcjJcbiAgICAgKC0gKGNvdW50IHYyKSAoYWxlbmd0aCAoLi10YWlsIHYyKSkpXG4gICAgIHRyYW5zZmVycmVkLWxlYXZlcylcbiAgICBkXG4gICAgKC4tdmFsIHRyYW5zZmVycmVkLWxlYXZlcylcbiAgICBuY250MVxuICAgICgrIChjb3VudCB2MSkgZClcbiAgICBuY250MlxuICAgICgtIChjb3VudCB2MikgKGFsZW5ndGggKC4tdGFpbCB2MikpIGQpXG4gICAgW24xIG4yXVxuICAgIChpZlxuICAgICAoaWRlbnRpY2FsPyBuMiByMilcbiAgICAgKHNxdWFzaC1ub2RlcyBzIG4xIG5jbnQxIG4yIG5jbnQyKVxuICAgICAoYXJyYXkgbjEgbjIpKVxuICAgIG5jbnQxXG4gICAgKGlmIG4yIG5jbnQxICgrIG5jbnQxIG5jbnQyKSlcbiAgICBuY250MlxuICAgIChpZiBuMiBuY250MiAwKV1cbiAgIChpZlxuICAgIG4yXG4gICAgKGxldFxuICAgICBbYXJyIChtYWtlLWFycmF5IDMzKSBuZXctcm9vdCAoLT5WZWN0b3JOb2RlIG5pbCBhcnIpXVxuICAgICAoYXNldCBhcnIgMCBuMSlcbiAgICAgKGFzZXQgYXJyIDEgbjIpXG4gICAgIChhc2V0XG4gICAgICBhcnJcbiAgICAgIDMyXG4gICAgICAoZG90b1xuICAgICAgIChtYWtlLWFycmF5IDMzKVxuICAgICAgIChhc2V0IDAgbmNudDEpXG4gICAgICAgKGFzZXQgMSAoKyBuY250MSBuY250MikpXG4gICAgICAgKGFzZXQgMzIgMikpKVxuICAgICAoVmVjdG9yLlxuICAgICAgKCsgKGNvdW50IHYxKSAoY291bnQgdjIpKVxuICAgICAgKCsgcyA1KVxuICAgICAgbmV3LXJvb3RcbiAgICAgICguLXRhaWwgdjIpXG4gICAgICBuaWxcbiAgICAgIG5pbCkpXG4gICAgKGxvb3BcbiAgICAgW3IgbjEgcyBzXVxuICAgICAoaWZcbiAgICAgIChhbmQgKD4gcyA1KSAobmlsPyAoYWdldCAoLi1hcnIgcikgMSkpKVxuICAgICAgKHJlY3VyIChhZ2V0ICguLWFyciByKSAwKSAoLSBzIDUpKVxuICAgICAgKFZlY3Rvci4gKCsgKGNvdW50IHYxKSAoY291bnQgdjIpKSBzIHIgKC4tdGFpbCB2MikgbmlsIG5pbCkpKSkpKSlcbiJ9KSwgcnVtLnV0aWwgKHs6c3ltIGNvbGxlY3QsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChba2V5IG1peGluc10pfSwgOnNvdXJjZSAiKGRlZm4gY29sbGVjdCBba2V5IG1peGluc10gKGludG8gW10gKGtlZXAgKGZuIFttXSAoZ2V0IG0ga2V5KSkpIG1peGlucykpXG4ifSB7OnN5bSBjb2xsZWN0KiwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtrZXlzIG1peGluc10pfSwgOnNvdXJjZSAiKGRlZm5cbiBjb2xsZWN0KlxuIFtrZXlzIG1peGluc11cbiAoaW50byBbXSAobWFwY2F0IChmbiBbbV0gKGtlZXAgKGZuIFtrXSAoZ2V0IG0gaykpIGtleXMpKSkgbWl4aW5zKSlcbiJ9IHs6c3ltIGNhbGwtYWxsLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3N0YXRlIGZucyAmIGFyZ3NdKX0sIDpzb3VyY2UgIihkZWZuXG4gY2FsbC1hbGxcbiBbc3RhdGUgZm5zICYgYXJnc11cbiAocmVkdWNlIChmbiBbc3RhdGUgZm5dIChhcHBseSBmbiBzdGF0ZSBhcmdzKSkgc3RhdGUgZm5zKSlcbiJ9KSwgZGV2dG9vbHMuaGludHMgKHs6c3ltIG1hcmstbnVsbC1jYWxsLXNpdGUtbG9jYXRpb24sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZmlsZSBsaW5lLW51bWJlciBjb2x1bW5dKX0sIDpzb3VyY2UgIihkZWZuXG4gbWFyay1udWxsLWNhbGwtc2l0ZS1sb2NhdGlvblxuIFtmaWxlIGxpbmUtbnVtYmVyIGNvbHVtbl1cbiAobGV0XG4gIFtjb250ZW50XG4gICAocmV0cmlldmUtamF2YXNjcmlwdC1zb3VyY2UgZmlsZSlcbiAgIGxpbmVzXG4gICAoLnNwbGl0IGNvbnRlbnQgXCJcXG5cIilcbiAgIGxpbmVcbiAgIChnZXQtbGluZSBsaW5lcyBsaW5lLW51bWJlcilcbiAgIG1hcmtlZC1saW5lXG4gICAobWFyay1jYWxsLWNsb3NlZC1hdC1jb2x1bW4gbGluZSBjb2x1bW4pXG4gICBtaW4tbGVuZ3RoXG4gICAob3IgKHByZWYgOnNhbml0eS1oaW50LW1pbi1sZW5ndGgpIDEyOCldXG4gIChleHRlbmQtY29udGVudCBtYXJrZWQtbGluZSBsaW5lcyBsaW5lLW51bWJlciBtaW4tbGVuZ3RoKSkpXG4ifSB7OnN5bSBtYXJrLWNhbGwtY2xvc2VkLWF0LWNvbHVtbiwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtsaW5lIGNvbHVtbl0pfSwgOnNvdXJjZSAiKGRlZm5cbiBtYXJrLWNhbGwtY2xvc2VkLWF0LWNvbHVtblxuIFtsaW5lIGNvbHVtbl1cbiAobGV0XG4gIFtuXG4gICAoZGVjIGNvbHVtbilcbiAgIHByZWZpeFxuICAgKC5zdWJzdHJpbmcgbGluZSAwIG4pXG4gICBwb3N0Zml4XG4gICAoLnN1YnN0cmluZyBsaW5lIG4pXVxuICAoc3RyIHByZWZpeCBcIiA8PDwg4piiIE5VTEwg4piiIDw8PCBcIiBwb3N0Zml4KSkpXG4ifSB7OnN5bSBzZXQtcHJvY2Vzc2VkLWVycm9ycyEsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbdmFsXSl9LCA6c291cmNlICIoZGVmbiBzZXQtcHJvY2Vzc2VkLWVycm9ycyEgW3ZhbF0gKHZyZXNldCEgcHJvY2Vzc2VkLWVycm9ycyB2YWwpKVxuIn0gezpzeW0gZXJyb3Itb2JqZWN0LXNlbnNlLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2Vycm9yXSl9LCA6c291cmNlICIoZGVmblxuIGVycm9yLW9iamVjdC1zZW5zZVxuIFtlcnJvcl1cbiAodHJ5XG4gIChsZXRcbiAgIFtuYXRpdmUtc3RhY2stdHJhY2VcbiAgICAoLi1zdGFjayBlcnJvcilcbiAgICBzdGFjay10cmFjZVxuICAgIChwYXJzZS1zdGFja3RyYWNlIG5hdGl2ZS1zdGFjay10cmFjZSlcbiAgICB0b3AtaXRlbVxuICAgIChzZWNvbmQgc3RhY2stdHJhY2UpXG4gICAgezprZXlzIFtmaWxlIGxpbmUgY29sdW1uXX1cbiAgICB0b3AtaXRlbV1cbiAgIChtYWtlLXNlbnNlLW9mLXRoZS1lcnJvciAoLi1tZXNzYWdlIGVycm9yKSBmaWxlIGxpbmUgY29sdW1uKSlcbiAgKGNhdGNoIDpkZWZhdWx0IF9lIGZhbHNlKSkpXG4ifSB7OnN5bSAqb3JpZ2luYWwtZ2xvYmFsLWVycm9yLWhhbmRsZXIqLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiAqb3JpZ2luYWwtZ2xvYmFsLWVycm9yLWhhbmRsZXIqIG5pbClcbiJ9IHs6c3ltICppbnN0YWxsZWQqLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiAqaW5zdGFsbGVkKiBmYWxzZSlcbiJ9IHs6c3ltICpvcmlnaW5hbC10eXBlLWVycm9yLXByb3RvdHlwZS10by1zdHJpbmcqLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiAqb3JpZ2luYWwtdHlwZS1lcnJvci1wcm90b3R5cGUtdG8tc3RyaW5nKiBuaWwpXG4ifSB7OnN5bSBwcm9jZXNzZWQtZXJyb3JzLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiBwcm9jZXNzZWQtZXJyb3JzICh2b2xhdGlsZSEgbmlsKSlcbiJ9IHs6c3ltIGdsb2JhbC1lcnJvci1oYW5kbGVyLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW21lc3NhZ2UgdXJsIGxpbmUgY29sdW1uIGVycm9yXSl9LCA6c291cmNlICIoZGVmblxuIGdsb2JhbC1lcnJvci1oYW5kbGVyXG4gW21lc3NhZ2UgdXJsIGxpbmUgY29sdW1uIGVycm9yXVxuIChsZXRcbiAgW3Jlc1xuICAgKGlmXG4gICAgKm9yaWdpbmFsLWdsb2JhbC1lcnJvci1oYW5kbGVyKlxuICAgICgqb3JpZ2luYWwtZ2xvYmFsLWVycm9yLWhhbmRsZXIqIG1lc3NhZ2UgdXJsIGxpbmUgY29sdW1uIGVycm9yKSldXG4gIChpZi1ub3RcbiAgIHJlc1xuICAgKHdoZW4tbGV0XG4gICAgW3NlbnNlIChlcnJvci1vYmplY3Qtc2Vuc2UgZXJyb3IpXVxuICAgICguaW5mb1xuICAgICAoY29udGV4dC9nZXQtY29uc29sZSlcbiAgICAgXCJBIHNhbml0eSBoaW50IGZvciBpbmNvbWluZyB1bmNhdWdodCBlcnJvcjpcXG5cIlxuICAgICBzZW5zZSlcbiAgICBmYWxzZSlcbiAgIHRydWUpKSlcbiJ9IHs6c3ltIGluc3RhbGwhLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW10pfSwgOnNvdXJjZSAiKGRlZm5cbiBpbnN0YWxsIVxuIFtdXG4gKHdoZW4tbm90XG4gICppbnN0YWxsZWQqXG4gIChzZXQhICppbnN0YWxsZWQqIHRydWUpXG4gIChpbnN0YWxsLXR5cGUtZXJyb3ItZW5oYW5jZXIpXG4gIHRydWUpKVxuIn0gezpzeW0gYWpheC1yZWFkZXIsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbdXJsXSl9LCA6c291cmNlICIoZGVmblxuIGFqYXgtcmVhZGVyXG4gW3VybF1cbiAobGV0XG4gIFt4aHIgKGpzL1hNTEh0dHBSZXF1ZXN0LildXG4gICgub3BlbiB4aHIgXCJHRVRcIiB1cmwgZmFsc2UpXG4gICguc2VuZCB4aHIpXG4gIChlbXB0eS1hcy1uaWwgKC4tcmVzcG9uc2VUZXh0IHhocikpKSlcbiJ9IHs6c3ltIGdldC1saW5lLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2xpbmVzIGxpbmUtbnVtYmVyXSl9LCA6c291cmNlICIoZGVmblxuIGdldC1saW5lXG4gW2xpbmVzIGxpbmUtbnVtYmVyXVxuICh1bmNoZWNrZWQtYWdldCBsaW5lcyAoZGVjIGxpbmUtbnVtYmVyKSkpXG4ifSB7OnN5bSBleHRlbmQtY29udGVudCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtjb250ZW50IGxpbmVzIGxpbmUtbnVtYmVyIG1pbi1sZW5ndGhdKX0sIDpzb3VyY2UgIihkZWZuXG4gZXh0ZW5kLWNvbnRlbnRcbiBbY29udGVudCBsaW5lcyBsaW5lLW51bWJlciBtaW4tbGVuZ3RoXVxuIChpZlxuICAob3IgKD4gKGNvdW50IGNvbnRlbnQpIG1pbi1sZW5ndGgpIChub3QgKHBvcz8gbGluZS1udW1iZXIpKSlcbiAgY29udGVudFxuICAobGV0XG4gICBbcHJldi1saW5lLW51bWJlclxuICAgIChkZWMgbGluZS1udW1iZXIpXG4gICAgcHJldi1saW5lXG4gICAgKGdldC1saW5lIGxpbmVzIHByZXYtbGluZS1udW1iZXIpXG4gICAgbmV3LWNvbnRlbnRcbiAgICAoc3RyIHByZXYtbGluZSBcIlxcblwiIGNvbnRlbnQpXVxuICAgKGV4dGVuZC1jb250ZW50IG5ldy1jb250ZW50IGxpbmVzIHByZXYtbGluZS1udW1iZXIgbWluLWxlbmd0aCkpKSlcbiJ9IHs6c3ltIHJldHJpZXZlLWphdmFzY3JpcHQtc291cmNlLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3doZXJlXSl9LCA6c291cmNlICIoZGVmblxuIHJldHJpZXZlLWphdmFzY3JpcHQtc291cmNlXG4gW3doZXJlXVxuIChsZXQgW3JlYWRlciAob3IgKHByZWYgOmZpbGUtcmVhZGVyKSBhamF4LXJlYWRlcildIChyZWFkZXIgd2hlcmUpKSlcbiJ9IHs6c3ltIGF2YWlsYWJsZT8sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbXSl9LCA6c291cmNlICIoZGVmbiBhdmFpbGFibGU/IFtdIHRydWUpXG4ifSB7OnN5bSBlbXB0eS1hcy1uaWwsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbc3RyXSl9LCA6c291cmNlICIoZGVmbiBlbXB0eS1hcy1uaWwgW3N0cl0gKGlmIChlbXB0eT8gc3RyKSBuaWwgc3RyKSlcbiJ9IHs6c3ltIG1ha2Utc2Vuc2Utb2YtdGhlLWVycm9yLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW21lc3NhZ2UgZmlsZSBsaW5lLW51bWJlciBjb2x1bW5dKX0sIDpzb3VyY2UgIihkZWZuXG4gbWFrZS1zZW5zZS1vZi10aGUtZXJyb3JcbiBbbWVzc2FnZSBmaWxlIGxpbmUtbnVtYmVyIGNvbHVtbl1cbiAoY29uZFxuICAocmUtbWF0Y2hlcyAjXCJDYW5ub3QgcmVhZCBwcm9wZXJ0eSAnY2FsbCcgb2YuKlwiIG1lc3NhZ2UpXG4gIChtYXJrLW51bGwtY2FsbC1zaXRlLWxvY2F0aW9uIGZpbGUgbGluZS1udW1iZXIgY29sdW1uKVxuICA6ZWxzZVxuICBuaWwpKVxuIn0gezpzeW0gaW5zdGFsbGVkPywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtdKX0sIDpzb3VyY2UgIihkZWZuIGluc3RhbGxlZD8gW10gKmluc3RhbGxlZCopXG4ifSB7OnN5bSB0eXBlLWVycm9yLXRvLXN0cmluZywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtzZWxmXSl9LCA6c291cmNlICIoZGVmblxuIHR5cGUtZXJyb3ItdG8tc3RyaW5nXG4gW3NlbGZdXG4gKGlmLWxldFxuICBbc2Vlbi1lcnJvcnMgKGdldC1wcm9jZXNzZWQtZXJyb3JzISldXG4gICh3aGVuLW5vdFxuICAgKC5oYXMgc2Vlbi1lcnJvcnMgc2VsZilcbiAgICguYWRkIHNlZW4tZXJyb3JzIHNlbGYpXG4gICAod2hlbi1sZXRcbiAgICBbc2Vuc2UgKGVycm9yLW9iamVjdC1zZW5zZSBzZWxmKV1cbiAgICAoc2V0IVxuICAgICAoLi1tZXNzYWdlIHNlbGYpXG4gICAgIChzdHIgKC4tbWVzc2FnZSBzZWxmKSBcIiwgYSBzYW5pdHkgaGludDpcXG5cIiBzZW5zZSkpKSkpXG4gKC5jYWxsICpvcmlnaW5hbC10eXBlLWVycm9yLXByb3RvdHlwZS10by1zdHJpbmcqIHNlbGYpKVxuIn0gezpzeW0gcGFyc2Utc3RhY2t0cmFjZSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtuYXRpdmUtc3RhY2stdHJhY2VdKX0sIDpzb3VyY2UgIihkZWZuXG4gcGFyc2Utc3RhY2t0cmFjZVxuIFtuYXRpdmUtc3RhY2stdHJhY2VdXG4gKHN0YWNrdHJhY2UvcGFyc2Utc3RhY2t0cmFjZVxuICB7fVxuICBuYXRpdmUtc3RhY2stdHJhY2VcbiAgezp1YS1wcm9kdWN0IDpjaHJvbWV9XG4gIHs6YXNzZXQtcm9vdCBcIlwifSkpXG4ifSB7OnN5bSBnZXQtcHJvY2Vzc2VkLWVycm9ycyEsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbXSl9LCA6c291cmNlICIoZGVmblxuIGdldC1wcm9jZXNzZWQtZXJyb3JzIVxuIFtdXG4gKGlmLWxldFxuICBbdmFsIEBwcm9jZXNzZWQtZXJyb3JzXVxuICB2YWxcbiAgKGlmIChleGlzdHM/IGpzL1dlYWtTZXQpIChzZXQtcHJvY2Vzc2VkLWVycm9ycyEgKGpzL1dlYWtTZXQuKSkpKSlcbiJ9IHs6c3ltIHVuaW5zdGFsbCEsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbXSl9LCA6c291cmNlICIoZGVmblxuIHVuaW5zdGFsbCFcbiBbXVxuICh3aGVuXG4gICppbnN0YWxsZWQqXG4gIChzZXQhICppbnN0YWxsZWQqIGZhbHNlKVxuICAoYXNzZXJ0ICpvcmlnaW5hbC10eXBlLWVycm9yLXByb3RvdHlwZS10by1zdHJpbmcqKVxuICAoc2V0ISAoLi1vbmVycm9yIChjb250ZXh0L2dldC1yb290KSkgKm9yaWdpbmFsLWdsb2JhbC1lcnJvci1oYW5kbGVyKilcbiAgKGxldFxuICAgW3Byb3RvdHlwZSAoLi1wcm90b3R5cGUganMvVHlwZUVycm9yKV1cbiAgIChzZXQhXG4gICAgKC4tdG9TdHJpbmcgcHJvdG90eXBlKVxuICAgICpvcmlnaW5hbC10eXBlLWVycm9yLXByb3RvdHlwZS10by1zdHJpbmcqKSkpKVxuIn0gezpzeW0gaW5zdGFsbC10eXBlLWVycm9yLWVuaGFuY2VyLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW10pfSwgOnNvdXJjZSAiKGRlZm5cbiBpbnN0YWxsLXR5cGUtZXJyb3ItZW5oYW5jZXJcbiBbXVxuIChzZXQhICpvcmlnaW5hbC1nbG9iYWwtZXJyb3ItaGFuZGxlciogKC4tb25lcnJvciAoY29udGV4dC9nZXQtcm9vdCkpKVxuIChzZXQhICguLW9uZXJyb3IgKGNvbnRleHQvZ2V0LXJvb3QpKSBnbG9iYWwtZXJyb3ItaGFuZGxlcilcbiAobGV0XG4gIFtwcm90b3R5cGUgKC4tcHJvdG90eXBlIGpzL1R5cGVFcnJvcildXG4gIChzZXQhXG4gICAqb3JpZ2luYWwtdHlwZS1lcnJvci1wcm90b3R5cGUtdG8tc3RyaW5nKlxuICAgKC4tdG9TdHJpbmcgcHJvdG90eXBlKSlcbiAgKHNldCFcbiAgICguLXRvU3RyaW5nIHByb3RvdHlwZSlcbiAgIChmbiogW10gKHRoaXMtYXMgc2VsZiAodHlwZS1lcnJvci10by1zdHJpbmcgc2VsZikpKSkpKVxuIn0pLCBvYWtjbGpzLnRvb2xzLnJlYWRlci5pbXBsLmluc3BlY3QgKHs6c3ltIGluc3BlY3QsIDptZXRhIHs6ZG9jICJSZXR1cm4gYSBzdHJpbmcgZGVzY3JpcHRpb24gb2YgdGhlIHZhbHVlIHN1cHBsaWVkLlxuICAgTWF5IGJlIHRoZSBhIHN0cmluZyB2ZXJzaW9uIG9mIHRoZSB2YWx1ZSBpdHNlbGYgKGUuZy4gXCJ0cnVlXCIpXG4gICBvciBpdCBtYXkgYmUgYSBkZXNjcmlwdGlvbiAoZS5nLiBcImFuIGluc3RhbmNlIG9mIEZvb1wiKS5cbiAgIElmIHRydW5jYXRlIGlzIHRydWUgdGhlbiByZXR1cm4gYSB2ZXJ5IHRlcnNlIHZlcnNpb24gb2ZcbiAgIHRoZSBpbnNwZWN0aW9uLiIsIDphcmdsaXN0cyBbW3hdIFt0cnVuY2F0ZSB4XV19LCA6c291cmNlICIoZGVmblxuIGluc3BlY3RcbiBcIlJldHVybiBhIHN0cmluZyBkZXNjcmlwdGlvbiBvZiB0aGUgdmFsdWUgc3VwcGxpZWQuXFxuICAgTWF5IGJlIHRoZSBhIHN0cmluZyB2ZXJzaW9uIG9mIHRoZSB2YWx1ZSBpdHNlbGYgKGUuZy4gXFxcInRydWVcXFwiKVxcbiAgIG9yIGl0IG1heSBiZSBhIGRlc2NyaXB0aW9uIChlLmcuIFxcXCJhbiBpbnN0YW5jZSBvZiBGb29cXFwiKS5cXG4gICBJZiB0cnVuY2F0ZSBpcyB0cnVlIHRoZW4gcmV0dXJuIGEgdmVyeSB0ZXJzZSB2ZXJzaW9uIG9mXFxuICAgdGhlIGluc3BlY3Rpb24uXCJcbiAoW3hdIChpbnNwZWN0KiBmYWxzZSB4KSlcbiAoW3RydW5jYXRlIHhdIChpbnNwZWN0KiB0cnVuY2F0ZSB4KSkpXG4ifSksIHNhYmxvbm8uaW50ZXJwcmV0ZXIgKHs6c3ltIGludGVycHJldCwgOm1ldGEgezpkb2MgIkludGVycHJldCBhIENsb2p1cmUgZGF0YSBzdHJ1Y3R1cmUgYXMgYSBSZWFjdCBmbiBjYWxsLiIsIDphcmdsaXN0cyAoW3RoaXNdKX0sIDpwcm90b2NvbCBJSW50ZXJwcmV0ZXJ9IHs6c3ltIElJbnRlcnByZXRlciwgOm1ldGEgezpkb2MgbmlsfSwgOm1ldGhvZHMgKGludGVycHJldCl9IHs6c3ltIGNvbnRyb2xsZWQtaW5wdXQ/LCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0cnVlIGlmIGB0eXBlYCBhbmQgYHByb3BzYCBhcmUgdXNlZCBhIGNvbnRyb2xsZWQgaW5wdXQsXG4gIG90aGVyd2lzZSBmYWxzZS4iLCA6YXJnbGlzdHMgKFt0eXBlIHByb3BzXSl9LCA6c291cmNlICIoZGVmblxuIGNvbnRyb2xsZWQtaW5wdXQ/XG4gXCJSZXR1cm5zIHRydWUgaWYgYHR5cGVgIGFuZCBgcHJvcHNgIGFyZSB1c2VkIGEgY29udHJvbGxlZCBpbnB1dCxcXG4gIG90aGVyd2lzZSBmYWxzZS5cIlxuIFt0eXBlIHByb3BzXVxuICM/KDpjbGpzIChhbmQgKG9iamVjdD8gcHJvcHMpIChjYXNlIHR5cGUgXCJpbnB1dFwiIChvciAoZXhpc3RzPyAoLi1jaGVja2VkIHByb3BzKSkgKGV4aXN0cz8gKC4tdmFsdWUgcHJvcHMpKSkgXCJzZWxlY3RcIiAoZXhpc3RzPyAoLi12YWx1ZSBwcm9wcykpIFwidGV4dGFyZWFcIiAoZXhpc3RzPyAoLi12YWx1ZSBwcm9wcykpIGZhbHNlKSkpKVxuIn0gezpzeW0gY3JlYXRlLWVsZW1lbnQsIDptZXRhIHs6ZG9jICJDcmVhdGUgYSBSZWFjdCBlbGVtZW50LiBSZXR1cm5zIGEgSmF2YVNjcmlwdCBvYmplY3Qgd2hlbiBydW5uaW5nXG4gIHVuZGVyIENsb2p1cmVTY3JpcHQsIGFuZCBhIG9tLmRvbS5FbGVtZW50IHJlY29yZCBpbiBDbG9qdXJlLiIsIDphcmdsaXN0cyAoW3R5cGUgcHJvcHMgJiBjaGlsZHJlbl0pfSwgOnNvdXJjZSAiKGRlZm5cbiBjcmVhdGUtZWxlbWVudFxuIFwiQ3JlYXRlIGEgUmVhY3QgZWxlbWVudC4gUmV0dXJucyBhIEphdmFTY3JpcHQgb2JqZWN0IHdoZW4gcnVubmluZ1xcbiAgdW5kZXIgQ2xvanVyZVNjcmlwdCwgYW5kIGEgb20uZG9tLkVsZW1lbnQgcmVjb3JkIGluIENsb2p1cmUuXCJcbiBbdHlwZSBwcm9wcyAmIGNoaWxkcmVuXVxuICM/KDpjbGogKGRvbS9lbGVtZW50IHs6YXR0cnMgcHJvcHMsIDpjaGlsZHJlbiBjaGlsZHJlbiwgOnJlYWN0LWtleSBuaWwsIDp0YWcgdHlwZX0pIDpjbGpzIChhcHBseSBqcy9SZWFjdC5jcmVhdGVFbGVtZW50IChlbGVtZW50LWNsYXNzIHR5cGUgcHJvcHMpIHByb3BzIGNoaWxkcmVuKSkpXG4ifSB7OnN5bSBhdHRyaWJ1dGVzLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2F0dHJzXSl9LCA6c291cmNlICIoZGVmblxuIGF0dHJpYnV0ZXNcbiBbYXR0cnNdXG4gIz8oOmNsaiAoLT4gKHV0aWwvaHRtbC10by1kb20tYXR0cnMgYXR0cnMpICh1cGRhdGUgOmNsYXNzTmFtZSAoZm4qIFtwMV9fNDI3ODkjXSAoc29tZS0+PiBwMV9fNDI3ODkjIChzdHIvam9pbiBcIiBcIikpKSkpIDpjbGpzICh3aGVuLWxldCBbanMtYXR0cnMgKGNsai0+anMgKHV0aWwvaHRtbC10by1kb20tYXR0cnMgYXR0cnMpKV0gKGxldCBbY2xhc3MgKC4tY2xhc3NOYW1lIGpzLWF0dHJzKSBjbGFzcyAoaWYgKGFycmF5PyBjbGFzcykgKGpvaW4gXCIgXCIgY2xhc3MpIGNsYXNzKV0gKGlmIChibGFuaz8gY2xhc3MpIChqcy1kZWxldGUganMtYXR0cnMgXCJjbGFzc05hbWVcIikgKHNldCEgKC4tY2xhc3NOYW1lIGpzLWF0dHJzKSBjbGFzcykpIGpzLWF0dHJzKSkpKVxuIn0gezpzeW0gZWxlbWVudCwgOm1ldGEgezpkb2MgIlJlbmRlciBhbiBlbGVtZW50IHZlY3RvciBhcyBhIEhUTUwgZWxlbWVudC4iLCA6YXJnbGlzdHMgKFtlbGVtZW50XSl9LCA6c291cmNlICIoZGVmblxuIGVsZW1lbnRcbiBcIlJlbmRlciBhbiBlbGVtZW50IHZlY3RvciBhcyBhIEhUTUwgZWxlbWVudC5cIlxuIFtlbGVtZW50XVxuIChsZXRcbiAgW1t0eXBlIGF0dHJzIGNvbnRlbnRdIChub3JtYWxpemUvZWxlbWVudCBlbGVtZW50KV1cbiAgKGFwcGx5XG4gICBjcmVhdGUtZWxlbWVudFxuICAgdHlwZVxuICAgKGF0dHJpYnV0ZXMgYXR0cnMpXG4gICAoaW50ZXJwcmV0LXNlcSBjb250ZW50KSkpKVxuIn0pLCBkdW5nZW9uLWNyYXdsZXIubW92ZSAoezpzeW0gbWF4LW1vdmVtZW50LXBlci1mcmFtZSwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgbWF4LW1vdmVtZW50LXBlci1mcmFtZSAwLjUpXG4ifSB7OnN5bSBtYXgtYXR0YWNrLWRpc3RhbmNlLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiBtYXgtYXR0YWNrLWRpc3RhbmNlIDAuNSlcbiJ9IHs6c3ltIGdldC1lbmVteS12ZWxvY2l0eSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt7OmtleXMgW3gtdmVsb2NpdHkgeS12ZWxvY2l0eV0sIDphcyBlbmVteX0gcGxheWVyIGRpc3RhbmNlLWZyb20tcGxheWVyXSl9LCA6c291cmNlICIoZGVmblxuIGdldC1lbmVteS12ZWxvY2l0eVxuIFt7OmtleXMgW3gtdmVsb2NpdHkgeS12ZWxvY2l0eV0sIDphcyBlbmVteX1cbiAgcGxheWVyXG4gIGRpc3RhbmNlLWZyb20tcGxheWVyXVxuIChvclxuICAod2hlblxuICAgKD4gKDpoZWFsdGggcGxheWVyKSAwKVxuICAgKGNvbmRcbiAgICAoPCBtaW4tYWdncm8tZGlzdGFuY2UgZGlzdGFuY2UtZnJvbS1wbGF5ZXIgbWF4LWFnZ3JvLWRpc3RhbmNlKVxuICAgIFsoY29uZC0+IG1heC1lbmVteS12ZWxvY2l0eSAoPCAoOnggcGxheWVyKSAoOnggZW5lbXkpKSAoKiAtMSkpXG4gICAgIChjb25kLT4gbWF4LWVuZW15LXZlbG9jaXR5ICg8ICg6eSBwbGF5ZXIpICg6eSBlbmVteSkpICgqIC0xKSldXG4gICAgKDw9IGRpc3RhbmNlLWZyb20tcGxheWVyIG1pbi1hZ2dyby1kaXN0YW5jZSlcbiAgICBbMCAwXSkpXG4gIFsoaWZcbiAgICAoPSAwIHgtdmVsb2NpdHkpXG4gICAgKC0+IChyYW5kLWludCAzKSAoLSAxKSAoKiBtYXgtZW5lbXktdmVsb2NpdHkpKVxuICAgIHgtdmVsb2NpdHkpXG4gICAoaWZcbiAgICAoPSAwIHktdmVsb2NpdHkpXG4gICAgKC0+IChyYW5kLWludCAzKSAoLSAxKSAoKiBtYXgtZW5lbXktdmVsb2NpdHkpKVxuICAgIHktdmVsb2NpdHkpXSkpXG4ifSB7OnN5bSBtYXgtdmVsb2NpdHksIDptZXRhIHt9LCA6c291cmNlICIoZGVmIG1heC12ZWxvY2l0eSA0KVxuIn0gezpzeW0gZ2V0LWRpcmVjdGlvbiwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt4LXZlbG9jaXR5IHktdmVsb2NpdHldKX0sIDpzb3VyY2UgIihkZWZuXG4gZ2V0LWRpcmVjdGlvblxuIFt4LXZlbG9jaXR5IHktdmVsb2NpdHldXG4gKHNvbWUtPj5cbiAgZS92ZWxvY2l0aWVzXG4gIChmaWx0ZXJcbiAgIChmblxuICAgIFtbeCB5XV1cbiAgICAoYW5kXG4gICAgICg9IHggKGludCAobWF0aCAjPyg6Y2xqIHNpZ251bSA6Y2xqcyBzaWduKSAoZmxvYXQgeC12ZWxvY2l0eSkpKSlcbiAgICAgKD1cbiAgICAgIHlcbiAgICAgIChpbnQgKG1hdGggIz8oOmNsaiBzaWdudW0gOmNsanMgc2lnbikgKGZsb2F0IHktdmVsb2NpdHkpKSkpKSkpXG4gIGZpcnN0XG4gICguaW5kZXhPZiBlL3ZlbG9jaXRpZXMpXG4gIChudGggZS9kaXJlY3Rpb25zKSkpXG4ifSB7OnN5bSBkZWNlbGVyYXRlLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3ZlbG9jaXR5XSl9LCA6c291cmNlICIoZGVmblxuIGRlY2VsZXJhdGVcbiBbdmVsb2NpdHldXG4gKGxldFxuICBbdmVsb2NpdHkgKCogdmVsb2NpdHkgZGVjZWxlcmF0aW9uKV1cbiAgKGlmICg8IChtYXRoIGFicyB2ZWxvY2l0eSkgZGFtcGluZykgMCB2ZWxvY2l0eSkpKVxuIn0gezpzeW0gbWF4LWFnZ3JvLWRpc3RhbmNlLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiBtYXgtYWdncm8tZGlzdGFuY2UgMilcbiJ9IHs6c3ltIGRlY2VsZXJhdGlvbiwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgZGVjZWxlcmF0aW9uIDAuOClcbiJ9IHs6c3ltIG1pbi1tb3ZlbWVudC1wZXItZnJhbWUsIDptZXRhIHt9LCA6c291cmNlICIoZGVmIG1pbi1tb3ZlbWVudC1wZXItZnJhbWUgLTAuNSlcbiJ9IHs6c3ltIGNhbGMtZGlzdGFuY2UsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbeDEgeTEgeDIgeTJdKX0sIDpzb3VyY2UgIihkZWZuXG4gY2FsYy1kaXN0YW5jZVxuIFt4MSB5MSB4MiB5Ml1cbiAobWF0aFxuICBhYnNcbiAgKG1hdGggc3FydCAoKyAobWF0aCBwb3cgKC0geDEgeDIpIDIpIChtYXRoIHBvdyAoLSB5MSB5MikgMikpKSkpXG4ifSB7OnN5bSBtaW4tYWdncm8tZGlzdGFuY2UsIDptZXRhIHt9LCA6c291cmNlICIoZGVmIG1pbi1hZ2dyby1kaXN0YW5jZSAoLSBtYXgtYXR0YWNrLWRpc3RhbmNlIDAuMSkpXG4ifSB7OnN5bSBkYW1waW5nLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiBkYW1waW5nIDAuMSlcbiJ9IHs6c3ltIGFuaW1hdGlvbi1zZWNzLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiBhbmltYXRpb24tc2VjcyAwLjIpXG4ifSB7OnN5bSBtYXgtZW5lbXktdmVsb2NpdHksIDptZXRhIHt9LCA6c291cmNlICIoZGVmIG1heC1lbmVteS12ZWxvY2l0eSAoLyBtYXgtdmVsb2NpdHkgMikpXG4ifSksIGNsb2p1cmUudGVzdC5jaGVjay5yYW5kb20ubG9uZ3MuYml0LWNvdW50LWltcGwgKHs6c3ltIGJpdC1jb3VudCwgOm1ldGEgezpkb2MgIlJldHVybnMgYSBKUyBudW1iZXIgKG5vdCBhIExvbmcpLCB0aGUgbnVtYmVyIG9mIHNldCBiaXRzIGluIHRoZVxuICBnaXZlbiBMb25nLiIsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuXG4gYml0LWNvdW50XG4gXCJSZXR1cm5zIGEgSlMgbnVtYmVyIChub3QgYSBMb25nKSwgdGhlIG51bWJlciBvZiBzZXQgYml0cyBpbiB0aGVcXG4gIGdpdmVuIExvbmcuXCJcbiBbeF1cbiAobGV0XG4gIFtsb3cgKC4tbG93XyB4KSBoaWdoICguLWhpZ2hfIHgpXVxuICAoK1xuICAgKGFnZXQgbG9va3VwICgtPiBsb3cgKGJpdC1hbmQgMjU1KSkpXG4gICAoYWdldCBsb29rdXAgKC0+IGxvdyAoYml0LXNoaWZ0LXJpZ2h0IDgpIChiaXQtYW5kIDI1NSkpKVxuICAgKGFnZXQgbG9va3VwICgtPiBsb3cgKGJpdC1zaGlmdC1yaWdodCAxNikgKGJpdC1hbmQgMjU1KSkpXG4gICAoYWdldCBsb29rdXAgKC0+IGxvdyAoYml0LXNoaWZ0LXJpZ2h0IDI0KSAoYml0LWFuZCAyNTUpKSlcbiAgIChhZ2V0IGxvb2t1cCAoLT4gaGlnaCAoYml0LWFuZCAyNTUpKSlcbiAgIChhZ2V0IGxvb2t1cCAoLT4gaGlnaCAoYml0LXNoaWZ0LXJpZ2h0IDgpIChiaXQtYW5kIDI1NSkpKVxuICAgKGFnZXQgbG9va3VwICgtPiBoaWdoIChiaXQtc2hpZnQtcmlnaHQgMTYpIChiaXQtYW5kIDI1NSkpKVxuICAgKGFnZXQgbG9va3VwICgtPiBoaWdoIChiaXQtc2hpZnQtcmlnaHQgMjQpIChiaXQtYW5kIDI1NSkpKSkpKVxuIn0pLCBjbGpzLnRvb2xzLnJlYWRlci5pbXBsLnV0aWxzICh7OnN5bSByZWFkZXItY29uZGl0aW9uYWwsIDptZXRhIHs6ZG9jICJDb25zdHJ1Y3QgYSBkYXRhIHJlcHJlc2VudGF0aW9uIG9mIGEgcmVhZGVyIGNvbmRpdGlvbmFsLlxuICBJZiB0cnVlLCBzcGxpY2luZz8gaW5kaWNhdGVzIHJlYWQtY29uZC1zcGxpY2luZy4iLCA6YXJnbGlzdHMgKFtmb3JtIHNwbGljaW5nP10pfSwgOnNvdXJjZSAiKGRlZm5cbiByZWFkZXItY29uZGl0aW9uYWxcbiBcIkNvbnN0cnVjdCBhIGRhdGEgcmVwcmVzZW50YXRpb24gb2YgYSByZWFkZXIgY29uZGl0aW9uYWwuXFxuICBJZiB0cnVlLCBzcGxpY2luZz8gaW5kaWNhdGVzIHJlYWQtY29uZC1zcGxpY2luZy5cIlxuIFtmb3JtIHNwbGljaW5nP11cbiAoUmVhZGVyQ29uZGl0aW9uYWwuIHNwbGljaW5nPyBmb3JtKSlcbiJ9IHs6c3ltIHdoaXRlc3BhY2U/LCA6bWV0YSB7OmRvYyAiQ2hlY2tzIHdoZXRoZXIgYSBnaXZlbiBjaGFyYWN0ZXIgaXMgd2hpdGVzcGFjZSIsIDphcmdsaXN0cyAoW2NoXSl9LCA6c291cmNlICIoZGVmblxuIHdoaXRlc3BhY2U/XG4gXCJDaGVja3Mgd2hldGhlciBhIGdpdmVuIGNoYXJhY3RlciBpcyB3aGl0ZXNwYWNlXCJcbiBbY2hdXG4gKHdoZW4tbm90IChuaWw/IGNoKSAoaWYgKGlkZW50aWNhbD8gY2ggXFwsKSB0cnVlICgudGVzdCB3cy1yeCBjaCkpKSlcbiJ9IHs6c3ltIGNoYXItY29kZSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtjaCBiYXNlXSl9LCA6c291cmNlICIoZGVmblxuIGNoYXItY29kZVxuIFtjaCBiYXNlXVxuIChsZXQgW2NvZGUgKGpzL3BhcnNlSW50IGNoIGJhc2UpXSAoaWYgKGpzL2lzTmFOIGNvZGUpIC0xIGNvZGUpKSlcbiJ9IHs6c3ltIGxhc3QtaWQsIDptZXRhIHt9LCA6c291cmNlICIoZGVmIGxhc3QtaWQgKGF0b20gMCkpXG4ifSB7OnN5bSBjaGFyLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuIGNoYXIgW3hdICh3aGVuLW5vdCAobmlsPyB4KSAoY2xqcy5jb3JlL2NoYXIgeCkpKVxuIn0gezpzeW0gbnVtZXJpYz8sIDptZXRhIHs6ZG9jICJDaGVja3Mgd2hldGhlciBhIGdpdmVuIGNoYXJhY3RlciBpcyBudW1lcmljIiwgOmFyZ2xpc3RzIChbY2hdKX0sIDpzb3VyY2UgIihkZWZuXG4gbnVtZXJpYz9cbiBcIkNoZWNrcyB3aGV0aGVyIGEgZ2l2ZW4gY2hhcmFjdGVyIGlzIG51bWVyaWNcIlxuIFtjaF1cbiAod2hlbi1ub3QgKG5pbD8gY2gpIChnc3RyaW5nL2lzTnVtZXJpYyBjaCkpKVxuIn0gezpzeW0gc2Vjb25kJywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtbYSBiXV0pfSwgOnNvdXJjZSAiKGRlZm4gc2Vjb25kJyBbW2EgYl1dICh3aGVuLW5vdCBhIGIpKVxuIn0gezpzeW0gZGVzdWdhci1tZXRhLCA6bWV0YSB7OmRvYyAiUmVzb2x2ZXMgc3ludGFjdGljYWwgc3VnYXIgaW4gbWV0YWRhdGEiLCA6YXJnbGlzdHMgKFtmXSl9LCA6c291cmNlICIoZGVmblxuIGRlc3VnYXItbWV0YVxuIFwiUmVzb2x2ZXMgc3ludGFjdGljYWwgc3VnYXIgaW4gbWV0YWRhdGFcIlxuIFtmXVxuIChjb25kXG4gIChrZXl3b3JkPyBmKVxuICB7ZiB0cnVlfVxuICAoc3ltYm9sPyBmKVxuICB7OnRhZyBmfVxuICAoc3RyaW5nPyBmKVxuICB7OnRhZyBmfVxuICA6ZWxzZVxuICBmKSlcbiJ9IHs6c3ltIG5leHQtaWQsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbXSl9LCA6c291cmNlICIoZGVmbiBuZXh0LWlkIFtdIChzd2FwISBsYXN0LWlkIGluYykpXG4ifSB7OnN5bSBleC1pbmZvPywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtleF0pfSwgOnNvdXJjZSAiKGRlZm4gZXgtaW5mbz8gW2V4XSAoaW5zdGFuY2U/IGNsanMuY29yZS5FeGNlcHRpb25JbmZvIGV4KSlcbiJ9IHs6c3ltIHJlYWRlci1jb25kaXRpb25hbD8sIDptZXRhIHs6ZG9jICJSZXR1cm4gdHJ1ZSBpZiB0aGUgdmFsdWUgaXMgdGhlIGRhdGEgcmVwcmVzZW50YXRpb24gb2YgYSByZWFkZXIgY29uZGl0aW9uYWwiLCA6YXJnbGlzdHMgKFt2YWx1ZV0pfSwgOnNvdXJjZSAiKGRlZm5cbiByZWFkZXItY29uZGl0aW9uYWw/XG4gXCJSZXR1cm4gdHJ1ZSBpZiB0aGUgdmFsdWUgaXMgdGhlIGRhdGEgcmVwcmVzZW50YXRpb24gb2YgYSByZWFkZXIgY29uZGl0aW9uYWxcIlxuIFt2YWx1ZV1cbiAoaW5zdGFuY2U/IFJlYWRlckNvbmRpdGlvbmFsIHZhbHVlKSlcbiJ9IHs6c3ltIG5ld2xpbmU/LCA6bWV0YSB7OmRvYyAiQ2hlY2tzIHdoZXRoZXIgdGhlIGNoYXJhY3RlciBpcyBhIG5ld2xpbmUiLCA6YXJnbGlzdHMgKFtjXSl9LCA6c291cmNlICIoZGVmblxuIG5ld2xpbmU/XG4gXCJDaGVja3Mgd2hldGhlciB0aGUgY2hhcmFjdGVyIGlzIGEgbmV3bGluZVwiXG4gW2NdXG4gKG9yIChpZGVudGljYWw/IFxcbmV3bGluZSBjKSAoaWRlbnRpY2FsPyBcIlxcblwiIGMpIChuaWw/IGMpKSlcbiJ9IHs6c3ltIG5hbWVzcGFjZS1rZXlzLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW25zIGtleXNdKX0sIDpzb3VyY2UgIihkZWZuXG4gbmFtZXNwYWNlLWtleXNcbiBbbnMga2V5c11cbiAoZm9yXG4gIFtrZXkga2V5c11cbiAgKGlmXG4gICAob3IgKHN5bWJvbD8ga2V5KSAoa2V5d29yZD8ga2V5KSlcbiAgIChsZXRcbiAgICBbW2tleS1ucyBrZXktbmFtZV1cbiAgICAgKChqdXh0IG5hbWVzcGFjZSBuYW1lKSBrZXkpXG4gICAgIC0+a2V5XG4gICAgIChpZiAoc3ltYm9sPyBrZXkpIHN5bWJvbCBrZXl3b3JkKV1cbiAgICAoY29uZFxuICAgICAobmlsPyBrZXktbnMpXG4gICAgICgtPmtleSBucyBrZXktbmFtZSlcbiAgICAgKD0gXCJfXCIga2V5LW5zKVxuICAgICAoLT5rZXkga2V5LW5hbWUpXG4gICAgIDplbHNlXG4gICAgIGtleSkpXG4gICBrZXkpKSlcbiJ9IHs6c3ltIHdzLXJ4LCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiB3cy1yeCAjXCJbXFxzXVwiKVxuIn0pLCBvZG95bGUuZXhhbXBsZXMgKHs6c3ltIHJ1bGVzLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZlxuIHJ1bGVzXG4gKG8vcnVsZXNldFxuICB7Om9kb3lsZS5leGFtcGxlcy9nZXQtdG9kb1xuICAgWzp3aGF0IFtpZCA6dG9kby90ZXh0IHRleHRdIFtpZCA6dG9kby9kb25lIGRvbmVdXX0pKVxuIn0gezpzeW0gZW1wdHktc2Vzc2lvbiwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgZW1wdHktc2Vzc2lvbiAocmVkdWNlIG8vYWRkLXJ1bGUgKG8vLT5zZXNzaW9uKSBydWxlcykpXG4ifSB7OnN5bSBzZXNzaW9uLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZlxuIHNlc3Npb25cbiAoLT5cbiAgZW1wdHktc2Vzc2lvblxuICAoby9pbnNlcnQgMSB7OnRvZG8vdGV4dCBcIk1ha2UgYSBydWxlcyBlbmdpbmVcIiwgOnRvZG8vZG9uZSB0cnVlfSlcbiAgKG8vaW5zZXJ0IDIgezp0b2RvL3RleHQgXCJHZXQgYSBzb2NpYWwgbGlmZVwiLCA6dG9kby9kb25lIGZhbHNlfSkpKVxuIn0pLCBjbGpzLnRhZ2dlZC1saXRlcmFscyAoezpzeW0gcmVhZC1xdWV1ZSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtmb3JtXSl9LCA6c291cmNlICIoZGVmblxuIHJlYWQtcXVldWVcbiBbZm9ybV1cbiAod2hlbi1ub3RcbiAgKHZlY3Rvcj8gZm9ybSlcbiAgKHRocm93XG4gICAjPyg6Y2xqIChSdW50aW1lRXhjZXB0aW9uLiBcIlF1ZXVlIGxpdGVyYWwgZXhwZWN0cyBhIHZlY3RvciBmb3IgaXRzIGVsZW1lbnRzLlwiKSA6Y2xqcyAoanMvRXJyb3IuIFwiUXVldWUgbGl0ZXJhbCBleHBlY3RzIGEgdmVjdG9yIGZvciBpdHMgZWxlbWVudHMuXCIpKSkpXG4gKGxpc3QgJ2NsanMuY29yZS9pbnRvICdjbGpzLmNvcmUuUGVyc2lzdGVudFF1ZXVlLkVNUFRZIGZvcm0pKVxuIn0gezpzeW0gdmFsaWQtanMtbGl0ZXJhbC1rZXk/LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2tdKX0sIDpzb3VyY2UgIihkZWZuXG4gdmFsaWQtanMtbGl0ZXJhbC1rZXk/XG4gW2tdXG4gKG9yIChzdHJpbmc/IGspIChhbmQgKGtleXdvcmQ/IGspIChuaWw/IChuYW1lc3BhY2UgaykpKSkpXG4ifSB7OnN5bSByZWFkLWpzLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2Zvcm1dKX0sIDpzb3VyY2UgIihkZWZuXG4gcmVhZC1qc1xuIFtmb3JtXVxuICh3aGVuLW5vdFxuICAob3IgKHZlY3Rvcj8gZm9ybSkgKG1hcD8gZm9ybSkpXG4gICh0aHJvd1xuICAgIz8oOmNsaiAoUnVudGltZUV4Y2VwdGlvbi4gXCJKYXZhU2NyaXB0IGxpdGVyYWwgbXVzdCB1c2UgbWFwIG9yIHZlY3RvciBub3RhdGlvblwiKSA6Y2xqcyAoanMvRXJyb3IuIFwiSmF2YVNjcmlwdCBsaXRlcmFsIG11c3QgdXNlIG1hcCBvciB2ZWN0b3Igbm90YXRpb25cIikpKSlcbiAod2hlbi1ub3RcbiAgKG9yIChub3QgKG1hcD8gZm9ybSkpIChldmVyeT8gdmFsaWQtanMtbGl0ZXJhbC1rZXk/IChrZXlzIGZvcm0pKSlcbiAgKHRocm93XG4gICAjPyg6Y2xqIChSdW50aW1lRXhjZXB0aW9uLiBcIkphdmFTY3JpcHQgbGl0ZXJhbCBrZXlzIG11c3QgYmUgc3RyaW5ncyBvciB1bnF1YWxpZmllZCBrZXl3b3Jkc1wiKSA6Y2xqcyAoanMvRXJyb3IuIFwiSmF2YVNjcmlwdCBsaXRlcmFsIGtleXMgbXVzdCBiZSBzdHJpbmdzIG9yIHVucXVhbGlmaWVkIGtleXdvcmRzXCIpKSkpXG4gKEpTVmFsdWUuIGZvcm0pKVxuIn0gezpzeW0gKmNsanMtZGF0YS1yZWFkZXJzKiwgOm1ldGEge30sIDpzb3VyY2UgIihkZWZcbiAqY2xqcy1kYXRhLXJlYWRlcnMqXG4gKG1lcmdlXG4gICM/KDpjbGogKmRhdGEtcmVhZGVycyopXG4gIHsncXVldWUgcmVhZC1xdWV1ZSwgJ3V1aWQgcmVhZC11dWlkLCAnaW5zdCByZWFkLWluc3QsICdqcyByZWFkLWpzfSkpXG4ifSksIGZpcHAuY2xvanVyZSAoezpzeW0gcHJldHR5LWJpbmRpbmdzLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3AgYnZlY10pfSwgOnNvdXJjZSAiKGRlZm5cbiBwcmV0dHktYmluZGluZ3NcbiBbcCBidmVjXVxuIChsZXRcbiAgW2t2cHNcbiAgIChmb3JcbiAgICBbW2sgdl0gKHBhcnRpdGlvbiAyIGJ2ZWMpXVxuICAgIFs6c3BhbiAodmlzaXQgcCBrKSBcIiBcIiBbOmFsaWduICh2aXNpdCBwIHYpXV0pXVxuICBbOmdyb3VwIFwiW1wiIFs6YWxpZ24gKGludGVycG9zZSBbOmxpbmUgXCIsIFwiXSBrdnBzKV0gXCJdXCJdKSlcbiJ9IHs6c3ltIHByZXR0eS1mbiosIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbcCBbXyBwYXJhbXMgYm9keSA6YXMgZm9ybV1dKX0sIDpzb3VyY2UgIihkZWZuXG4gcHJldHR5LWZuKlxuIFtwIFtfIHBhcmFtcyBib2R5IDphcyBmb3JtXV1cbiAoaWZcbiAgKGFuZCAodmVjdG9yPyBwYXJhbXMpIChzZXE/IGJvZHkpKVxuICAobGV0XG4gICBbW2luaXRzIHJlc3RzXVxuICAgIChzcGxpdC13aXRoIChmbiogW3AxX180MjQ2MSNdIChub3Q9IHAxX180MjQ2MSMgJyYpKSBwYXJhbXMpXG4gICAgcGFyYW1zKlxuICAgIChtZXJnZVxuICAgICAoaWZcbiAgICAgICg9IChjb3VudCBpbml0cykgMSlcbiAgICAgIHsoZmlyc3QgaW5pdHMpICclfVxuICAgICAgKHppcG1hcFxuICAgICAgIGluaXRzXG4gICAgICAgKG1hcFxuICAgICAgICAoZm4qIFtwMV9fNDI0NjIjXSAoc3ltYm9sIChzdHIgXFwlIChpbmMgcDFfXzQyNDYyIykpKSlcbiAgICAgICAgKHJhbmdlKSkpKVxuICAgICAod2hlbiAoc2VxIHJlc3RzKSB7KHNlY29uZCByZXN0cykgJyUmfSkpXG4gICAgYm9keSpcbiAgICAod2Fsay9wcmV3YWxrLXJlcGxhY2UgcGFyYW1zKiBib2R5KV1cbiAgIFs6Z3JvdXBcbiAgICBcIiMoXCJcbiAgICBbOmFsaWduXG4gICAgIDJcbiAgICAgKGludGVycG9zZVxuICAgICAgOmxpbmVcbiAgICAgIChtYXAgKGZuKiBbcDFfXzQyNDYzI10gKHZpc2l0IHAgcDFfXzQyNDYzIykpIGJvZHkqKSldXG4gICAgXCIpXCJdKVxuICAocHJldHR5LWZuIHAgZm9ybSkpKVxuIn0gezpzeW0gcHByaW50LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyBbW3hdIFt4IG9wdGlvbnNdXX0sIDpzb3VyY2UgIihkZWZuXG4gcHByaW50XG4gKFt4XSAocHByaW50IHgge30pKVxuIChbeCBvcHRpb25zXVxuICAoZWRuL3BwcmludCB4IChtZXJnZSB7OnN5bWJvbHMgZGVmYXVsdC1zeW1ib2xzfSBvcHRpb25zKSkpKVxuIn0gezpzeW0gcHJldHR5LWNvbmRwLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3AgW2hlYWQgcHJlZCBleHByICYgbW9yZV1dKX0sIDpzb3VyY2UgIihkZWZuXG4gcHJldHR5LWNvbmRwXG4gW3AgW2hlYWQgcHJlZCBleHByICYgbW9yZV1dXG4gKGxldFxuICBbY2xhdXNlc1xuICAgKHBhcnRpdGlvbiAyIG1vcmUpXG4gICBkZWZhdWx0XG4gICAod2hlbiAob2RkPyAoY291bnQgbW9yZSkpIChsYXN0IG1vcmUpKV1cbiAgKGxpc3QtZ3JvdXBcbiAgICh2aXNpdCBwIGhlYWQpXG4gICBcIiBcIlxuICAgKHZpc2l0IHAgcHJlZClcbiAgIFwiIFwiXG4gICAodmlzaXQgcCBleHByKVxuICAgOmxpbmVcbiAgIChibG9ja1xuICAgIChjb25jYXRcbiAgICAgKG1hcCAoZm4qIFtwMV9fNDI0NTMjXSAocHJldHR5LWNvbmQtY2xhdXNlIHAgcDFfXzQyNDUzIykpIGNsYXVzZXMpXG4gICAgICh3aGVuIGRlZmF1bHQgWyh2aXNpdCBwIGRlZmF1bHQpXSkpKSkpKVxuIn0gezpzeW0gcHJldHR5LXF1b3RlLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3AgW21hY3JvIGFyZ11dKX0sIDpzb3VyY2UgIihkZWZuXG4gcHJldHR5LXF1b3RlXG4gW3AgW21hY3JvIGFyZ11dXG4gWzpzcGFuXG4gIChjYXNlXG4gICAoa2V5d29yZCAobmFtZSBtYWNybykpXG4gICA6ZGVyZWZcbiAgIFwiQFwiXG4gICA6cXVvdGVcbiAgIFwiJ1wiXG4gICA6dW5xdW90ZVxuICAgXCJ+XCJcbiAgIDp2YXJcbiAgIFwiIydcIilcbiAgKHZpc2l0IHAgYXJnKV0pXG4ifSB7OnN5bSBtYXliZS1hLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3ByZWQgeHNdKX0sIDpzb3VyY2UgIihkZWZuXG4gbWF5YmUtYVxuIFtwcmVkIHhzXVxuIChsZXQgW3ggKGZpcnN0IHhzKV0gKGlmIChwcmVkIHgpIFt4IChyZXN0IHhzKV0gW25pbCB4c10pKSlcbiJ9IHs6c3ltIHByZXR0eS1saWJzcGVjLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3AgW2hlYWQgJiBjbGF1c2VzXV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBwcmV0dHktbGlic3BlY1xuIFtwIFtoZWFkICYgY2xhdXNlc11dXG4gKGxpc3QtZ3JvdXBcbiAgKHZpc2l0IHAgaGVhZClcbiAgXCIgXCJcbiAgWzphbGlnblxuICAgKGludGVycG9zZVxuICAgIDpsaW5lXG4gICAgKG1hcCAoZm4qIFtwMV9fNDI0NjQjXSAodmlzaXQgcCBwMV9fNDI0NjQjKSkgY2xhdXNlcykpXSkpXG4ifSB7OnN5bSBwcmV0dHktbWV0aG9kLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3AgW3BhcmFtcyAmIGJvZHldXSl9LCA6c291cmNlICIoZGVmblxuIHByZXR0eS1tZXRob2RcbiBbcCBbcGFyYW1zICYgYm9keV1dXG4gKGxpc3QtZ3JvdXBcbiAgKHZpc2l0IHAgcGFyYW1zKVxuICA6bGluZVxuICAoYmxvY2sgKG1hcCAoZm4qIFtwMV9fNDI0NTYjXSAodmlzaXQgcCBwMV9fNDI0NTYjKSkgYm9keSkpKSlcbiJ9IHs6c3ltIHByZXR0eS1jb25kLWNsYXVzZSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtwIFt0ZXN0IHJlc3VsdF1dKX0sIDpzb3VyY2UgIihkZWZuXG4gcHJldHR5LWNvbmQtY2xhdXNlXG4gW3AgW3Rlc3QgcmVzdWx0XV1cbiBbOmdyb3VwICh2aXNpdCBwIHRlc3QpIDpsaW5lIFs6bmVzdCAyICh2aXNpdCBwIHJlc3VsdCldXSlcbiJ9IHs6c3ltIGJsb2NrLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW25vZGVzXSl9LCA6c291cmNlICIoZGVmbiBibG9jayBbbm9kZXNdIFs6bmVzdCAyIChpbnRlcnBvc2UgOmxpbmUgbm9kZXMpXSlcbiJ9IHs6c3ltIHByZXR0eS1jb25kLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3AgW2hlYWQgJiBtb3JlXV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBwcmV0dHktY29uZFxuIFtwIFtoZWFkICYgbW9yZV1dXG4gKGxldFxuICBbY2xhdXNlcyAocGFydGl0aW9uIDIgbW9yZSldXG4gIChsaXN0LWdyb3VwXG4gICAodmlzaXQgcCBoZWFkKVxuICAgOmxpbmVcbiAgIChibG9ja1xuICAgIChtYXBcbiAgICAgKGZuKiBbcDFfXzQyNDUyI10gKHByZXR0eS1jb25kLWNsYXVzZSBwIHAxX180MjQ1MiMpKVxuICAgICBjbGF1c2VzKSkpKSlcbiJ9IHs6c3ltIHByZXR0eS1mbiwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtwIFtoZWFkICYgbW9yZV1dKX0sIDpzb3VyY2UgIihkZWZuXG4gcHJldHR5LWZuXG4gW3AgW2hlYWQgJiBtb3JlXV1cbiAobGV0XG4gIFtbZm4tbmFtZSBtb3JlXVxuICAgKG1heWJlLWEgc3ltYm9sPyBtb3JlKVxuICAgW3BhcmFtcyBib2R5XVxuICAgKG1heWJlLWEgdmVjdG9yPyBtb3JlKV1cbiAgKGxpc3QtZ3JvdXBcbiAgIChjb25jYXRcbiAgICBbKHZpc2l0IHAgaGVhZCldXG4gICAgKHdoZW4gZm4tbmFtZSBbXCIgXCIgKHZpc2l0IHAgZm4tbmFtZSldKVxuICAgICh3aGVuIHBhcmFtcyBbXCIgXCIgKHZpc2l0IHAgcGFyYW1zKV0pKVxuICAgOmxpbmVcbiAgIChibG9ja1xuICAgIChpZlxuICAgICBib2R5XG4gICAgIChtYXAgKGZuKiBbcDFfXzQyNDU5I10gKHZpc2l0IHAgcDFfXzQyNDU5IykpIGJvZHkpXG4gICAgIChtYXAgKGZuKiBbcDFfXzQyNDYwI10gKHByZXR0eS1tZXRob2QgcCBwMV9fNDI0NjAjKSkgbW9yZSkpKSkpKVxuIn0gezpzeW0gcHJldHR5LWFycm93LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3AgW2hlYWQgJiBzdG10c11dKX0sIDpzb3VyY2UgIihkZWZuXG4gcHJldHR5LWFycm93XG4gW3AgW2hlYWQgJiBzdG10c11dXG4gKGxpc3QtZ3JvdXBcbiAgKHZpc2l0IHAgaGVhZClcbiAgXCIgXCJcbiAgWzphbGlnblxuICAgKGludGVycG9zZVxuICAgIDpsaW5lXG4gICAgKG1hcCAoZm4qIFtwMV9fNDI0NTQjXSAodmlzaXQgcCBwMV9fNDI0NTQjKSkgc3RtdHMpKV0pKVxuIn0gezpzeW0gZGVmYXVsdC1zeW1ib2xzLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZlxuIGRlZmF1bHQtc3ltYm9sc1xuIChidWlsZC1zeW1ib2wtbWFwXG4gIHtwcmV0dHktZm4qICdbZm4qXSxcbiAgIHByZXR0eS1jb25kcCAnW2NvbmRwXSxcbiAgIHByZXR0eS1xdW90ZSAnW2RlcmVmIHF1b3RlIHVucXVvdGUgdmFyXSxcbiAgIHByZXR0eS1jb25kICdbY29uZF0sXG4gICBwcmV0dHktZm4gJ1tmbl0sXG4gICBwcmV0dHktYXJyb3cgJ1suIC4uIC0+IC0+PiBhbmQgZG90byBvciBzb21lLT4gc29tZS0+Pl0sXG4gICBwcmV0dHktcmVpZnkgJ1tyZWlmeV0sXG4gICBwcmV0dHktbGV0XG4gICAnW2JpbmRpbmdcbiAgICAgZG9zZXFcbiAgICAgZG90aW1lc1xuICAgICBmb3JcbiAgICAgaWYtbGV0XG4gICAgIGlmLXNvbWVcbiAgICAgbGV0XG4gICAgIGxldCpcbiAgICAgbG9vcFxuICAgICBsb29wKlxuICAgICB3aGVuLWZpcnN0XG4gICAgIHdoZW4tbGV0XG4gICAgIHdoZW4tc29tZVxuICAgICB3aXRoLWxvY2FsLXZhcnNcbiAgICAgd2l0aC1vcGVuXG4gICAgIHdpdGgtcmVkZWZzXSxcbiAgIHByZXR0eS10eXBlICdbZGVmdHlwZSBkZWZyZWNvcmRdLFxuICAgcHJldHR5LWlmICdbZGVmIGRlZm9uY2UgaWYgaWYtbm90IHdoZW4gd2hlbi1ub3RdLFxuICAgcHJldHR5LWRlZm4gJ1tkZWZtYWNybyBkZWZtdWx0aSBkZWZuIGRlZm4tXSxcbiAgIHByZXR0eS1ucyAnW25zXSxcbiAgIHByZXR0eS1jYXNlICdbY2FzZSBjb25kLT4gY29uZC0+Pl19KSlcbiJ9IHs6c3ltIGJ1aWxkLXN5bWJvbC1tYXAsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZGlzcGF0Y2hdKX0sIDpzb3VyY2UgIihkZWZuXG4gYnVpbGQtc3ltYm9sLW1hcFxuIFtkaXNwYXRjaF1cbiAoaW50b1xuICB7fVxuICAoZm9yXG4gICBbW3ByZXR0eS1mbiBzeW1zXVxuICAgIGRpc3BhdGNoXG4gICAgc3ltXG4gICAgc3ltc1xuICAgIHN5bVxuICAgIChjb25zXG4gICAgIHN5bVxuICAgICAod2hlbi1ub3RcbiAgICAgIChzcGVjaWFsLXN5bWJvbD8gc3ltKVxuICAgICAgWyhzeW1ib2wgXCJjbG9qdXJlLmNvcmVcIiAobmFtZSBzeW0pKVxuICAgICAgIChzeW1ib2wgXCJjbGpzLmNvcmVcIiAobmFtZSBzeW0pKV0pKV1cbiAgIFtzeW0gcHJldHR5LWZuXSkpKVxuIn0gezpzeW0gcHJldHR5LXJlaWZ5LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3AgW2hlYWQgJiBvcHRzK3NwZWNzXV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBwcmV0dHktcmVpZnlcbiBbcCBbaGVhZCAmIG9wdHMrc3BlY3NdXVxuIChsaXN0LWdyb3VwICh2aXNpdCBwIGhlYWQpIDpsaW5lIChwcmV0dHktaW1wbHMgcCBvcHRzK3NwZWNzKSkpXG4ifSB7OnN5bSBwcmV0dHktbGV0LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3AgW2hlYWQgYnZlYyAmIGJvZHldXSl9LCA6c291cmNlICIoZGVmblxuIHByZXR0eS1sZXRcbiBbcCBbaGVhZCBidmVjICYgYm9keV1dXG4gKGxpc3QtZ3JvdXBcbiAgKHZpc2l0IHAgaGVhZClcbiAgXCIgXCJcbiAgKHByZXR0eS1iaW5kaW5ncyBwIGJ2ZWMpXG4gIDpsaW5lXG4gIChibG9jayAobWFwIChmbiogW3AxX180MjQ2NiNdICh2aXNpdCBwIHAxX180MjQ2NiMpKSBib2R5KSkpKVxuIn0gezpzeW0gcHJldHR5LXR5cGUsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbcCBbaGVhZCBmaWVsZHMgJiBvcHRzK3NwZWNzXV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBwcmV0dHktdHlwZVxuIFtwIFtoZWFkIGZpZWxkcyAmIG9wdHMrc3BlY3NdXVxuIChsaXN0LWdyb3VwXG4gICh2aXNpdCBwIGhlYWQpXG4gIFwiIFwiXG4gICh2aXNpdCBwIGZpZWxkcylcbiAgOmxpbmVcbiAgKHByZXR0eS1pbXBscyBwIG9wdHMrc3BlY3MpKSlcbiJ9IHs6c3ltIHByZXR0eS1pZiwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtwIFtoZWFkIHRlc3QgJiBtb3JlXV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBwcmV0dHktaWZcbiBbcCBbaGVhZCB0ZXN0ICYgbW9yZV1dXG4gKGxpc3QtZ3JvdXBcbiAgKHZpc2l0IHAgaGVhZClcbiAgXCIgXCJcbiAgKHZpc2l0IHAgdGVzdClcbiAgOmxpbmVcbiAgKGJsb2NrIChtYXAgKGZuKiBbcDFfXzQyNDU1I10gKHZpc2l0IHAgcDFfXzQyNDU1IykpIG1vcmUpKSkpXG4ifSB7OnN5bSBwcmV0dHktZGVmbiwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtwIFtoZWFkIGZuLW5hbWUgJiBtb3JlXV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBwcmV0dHktZGVmblxuIFtwIFtoZWFkIGZuLW5hbWUgJiBtb3JlXV1cbiAobGV0XG4gIFtbZG9jc3RyaW5nIG1vcmVdXG4gICAobWF5YmUtYSBzdHJpbmc/IG1vcmUpXG4gICBbYXR0ci1tYXAgbW9yZV1cbiAgIChtYXliZS1hIG1hcD8gbW9yZSlcbiAgIFtwYXJhbXMgYm9keV1cbiAgIChtYXliZS1hIHZlY3Rvcj8gbW9yZSlcbiAgIHBhcmFtcy1vbi1maXJzdC1saW5lP1xuICAgKGFuZCBwYXJhbXMgKG5pbD8gZG9jc3RyaW5nKSAobmlsPyBhdHRyLW1hcCkpXG4gICBwYXJhbXMtYWZ0ZXItYXR0ci1tYXA/XG4gICAoYW5kIHBhcmFtcyAobm90IHBhcmFtcy1vbi1maXJzdC1saW5lPykpXVxuICAobGlzdC1ncm91cFxuICAgKGNvbmNhdFxuICAgIFsodmlzaXQgcCBoZWFkKSBcIiBcIiAodmlzaXQgcCBmbi1uYW1lKV1cbiAgICAod2hlbiBwYXJhbXMtb24tZmlyc3QtbGluZT8gW1wiIFwiICh2aXNpdCBwIHBhcmFtcyldKSlcbiAgIDpsaW5lXG4gICAoYmxvY2tcbiAgICAoY29uY2F0XG4gICAgICh3aGVuIGRvY3N0cmluZyBbKHZpc2l0IHAgZG9jc3RyaW5nKV0pXG4gICAgICh3aGVuIGF0dHItbWFwIFsodmlzaXQgcCBhdHRyLW1hcCldKVxuICAgICAod2hlbiBwYXJhbXMtYWZ0ZXItYXR0ci1tYXA/IFsodmlzaXQgcCBwYXJhbXMpXSlcbiAgICAgKGlmXG4gICAgICBib2R5XG4gICAgICAobWFwIChmbiogW3AxX180MjQ1NyNdICh2aXNpdCBwIHAxX180MjQ1NyMpKSBib2R5KVxuICAgICAgKG1hcCAoZm4qIFtwMV9fNDI0NTgjXSAocHJldHR5LW1ldGhvZCBwIHAxX180MjQ1OCMpKSBtb3JlKSkpKSkpKVxuIn0gezpzeW0gcHJldHR5LW5zLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3AgW2hlYWQgbnMtc3ltICYgbW9yZV1dKX0sIDpzb3VyY2UgIihkZWZuXG4gcHJldHR5LW5zXG4gW3AgW2hlYWQgbnMtc3ltICYgbW9yZV1dXG4gKGxldFxuICBbW2RvY3N0cmluZyBtb3JlXVxuICAgKG1heWJlLWEgc3RyaW5nPyBtb3JlKVxuICAgW2F0dHItbWFwIHNwZWNzXVxuICAgKG1heWJlLWEgbWFwPyBtb3JlKV1cbiAgKGxpc3QtZ3JvdXBcbiAgICh2aXNpdCBwIGhlYWQpXG4gICBcIiBcIlxuICAgKHZpc2l0IHAgbnMtc3ltKVxuICAgOmxpbmVcbiAgIChibG9ja1xuICAgIChjb25jYXRcbiAgICAgKHdoZW4gZG9jc3RyaW5nIFsodmlzaXQgcCBkb2NzdHJpbmcpXSlcbiAgICAgKHdoZW4gYXR0ci1tYXAgWyh2aXNpdCBwIGF0dHItbWFwKV0pXG4gICAgIChtYXAgKGZuKiBbcDFfXzQyNDY1I10gKHByZXR0eS1saWJzcGVjIHAgcDFfXzQyNDY1IykpIHNwZWNzKSkpKSkpXG4ifSB7OnN5bSBwcmV0dHktaW1wbHMsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbcCBvcHRzK3NwZWNzXSl9LCA6c291cmNlICIoZGVmblxuIHByZXR0eS1pbXBsc1xuIFtwIG9wdHMrc3BlY3NdXG4gKGJsb2NrIChtYXAgKGZuKiBbcDFfXzQyNDY3I10gKHZpc2l0IHAgcDFfXzQyNDY3IykpIG9wdHMrc3BlY3MpKSlcbiJ9IHs6c3ltIGxpc3QtZ3JvdXAsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbJiBub2Rlc10pfSwgOnNvdXJjZSAiKGRlZm4gbGlzdC1ncm91cCBbJiBub2Rlc10gWzpncm91cCBcIihcIiBub2RlcyBcIilcIl0pXG4ifSB7OnN5bSBwcmV0dHktY2FzZSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtwIFtoZWFkIGV4cHIgJiBtb3JlXV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBwcmV0dHktY2FzZVxuIFtwIFtoZWFkIGV4cHIgJiBtb3JlXV1cbiAobGV0XG4gIFtjbGF1c2VzXG4gICAocGFydGl0aW9uIDIgbW9yZSlcbiAgIGRlZmF1bHRcbiAgICh3aGVuIChvZGQ/IChjb3VudCBtb3JlKSkgKGxhc3QgbW9yZSkpXVxuICAobGlzdC1ncm91cFxuICAgKHZpc2l0IHAgaGVhZClcbiAgIFwiIFwiXG4gICAodmlzaXQgcCBleHByKVxuICAgOmxpbmVcbiAgIChibG9ja1xuICAgIChjb25jYXRcbiAgICAgKG1hcCAoZm4qIFtwMV9fNDI0NTEjXSAocHJldHR5LWNvbmQtY2xhdXNlIHAgcDFfXzQyNDUxIykpIGNsYXVzZXMpXG4gICAgICh3aGVuIGRlZmF1bHQgWyh2aXNpdCBwIGRlZmF1bHQpXSkpKSkpKVxuIn0pLCBzaW1wbGUub2RveWxlICh7OnN5bSBpbml0aWFsLXNlc3Npb24sIDptZXRhIHt9LCA6c291cmNlICIoZGVmXG4gaW5pdGlhbC1zZXNzaW9uXG4gKHJlZHVjZVxuICBvL2FkZC1ydWxlXG4gIChvLy0+c2Vzc2lvbilcbiAgKG8vcnVsZXNldFxuICAgezpzaW1wbGUub2RveWxlL251bS1jb25kcy1hbmQtZmFjdHNcbiAgICBbOndoYXRcbiAgICAgW2IgOnNpbXBsZS5vZG95bGUvY29sb3IgXCJibHVlXCJdXG4gICAgIFt5IDpzaW1wbGUub2RveWxlL2xlZnQtb2Ygel1cbiAgICAgW2EgOnNpbXBsZS5vZG95bGUvY29sb3IgXCJtYWl6ZVwiXVxuICAgICBbeSA6c2ltcGxlLm9kb3lsZS9yaWdodC1vZiBiXVxuICAgICBbeCA6c2ltcGxlLm9kb3lsZS9oZWlnaHQgaF1dfSkpKVxuIn0gezpzeW0gdGljaywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtzZXNzaW9uXSl9LCA6c291cmNlICIoZGVmblxuIHRpY2tcbiBbc2Vzc2lvbl1cbiAoLT5cbiAgc2Vzc2lvblxuICAoby9pbnNlcnQgOnNpbXBsZS5vZG95bGUvYm9iIDpzaW1wbGUub2RveWxlL2NvbG9yIFwiYmx1ZVwiKVxuICAoby9pbnNlcnRcbiAgIDpzaW1wbGUub2RveWxlL3lhaXJcbiAgIDpzaW1wbGUub2RveWxlL2xlZnQtb2ZcbiAgIDpzaW1wbGUub2RveWxlL3phY2gpXG4gIChvL2luc2VydCA6c2ltcGxlLm9kb3lsZS9hbGljZSA6c2ltcGxlLm9kb3lsZS9jb2xvciBcIm1haXplXCIpXG4gIChvL2luc2VydFxuICAgOnNpbXBsZS5vZG95bGUveWFpclxuICAgOnNpbXBsZS5vZG95bGUvcmlnaHQtb2ZcbiAgIDpzaW1wbGUub2RveWxlL2JvYilcbiAgKG8vaW5zZXJ0IDpzaW1wbGUub2RveWxlL3hhdmllciA6c2ltcGxlLm9kb3lsZS9oZWlnaHQgNzIpXG4gIChvL2luc2VydCA6c2ltcGxlLm9kb3lsZS90aG9tYXMgOnNpbXBsZS5vZG95bGUvaGVpZ2h0IDcyKVxuICAoby9pbnNlcnQgOnNpbXBsZS5vZG95bGUvZ2VvcmdlIDpzaW1wbGUub2RveWxlL2hlaWdodCA3MilcbiAgby9maXJlLXJ1bGVzKSlcbiJ9IHs6c3ltIHJ1biwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtpdGVyYXRpb25zXSl9LCA6c291cmNlICIoZGVmblxuIHJ1blxuIFtpdGVyYXRpb25zXVxuIChsb29wXG4gIFtzZXNzaW9uIGluaXRpYWwtc2Vzc2lvbiBjb3VudGVyIDBdXG4gIChpZlxuICAgKD0gY291bnRlciBpdGVyYXRpb25zKVxuICAgc2Vzc2lvblxuICAgKHJlY3VyICh0aWNrIHNlc3Npb24pIChpbmMgY291bnRlcikpKSkpXG4ifSksIGNsanMuYW5hbHl6ZXIucGFzc2VzICh7OnN5bSBhcHBseS1wYXNzZXMsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIFtbYXN0IHBhc3Nlc10gW2FzdCBwYXNzZXMgb3B0c11dfSwgOnNvdXJjZSAiKGRlZm5cbiBhcHBseS1wYXNzZXNcbiAoW2FzdCBwYXNzZXNdIChhcHBseS1wYXNzZXMgYXN0IHBhc3NlcyBuaWwpKVxuIChbYXN0IHBhc3NlcyBvcHRzXVxuICAocmVkdWNlIChmbiBbYXN0IHBhc3NdIChwYXNzICg6ZW52IGFzdCkgYXN0IG9wdHMpKSBhc3QgcGFzc2VzKSkpXG4ifSB7OnN5bSB3YWxrLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyBbW2FzdCBwYXNzZXNdIFthc3QgcGFzc2VzIG9wdHNdXX0sIDpzb3VyY2UgIihkZWZuXG4gd2Fsa1xuIChbYXN0IHBhc3Nlc10gKHdhbGsgYXN0IHBhc3NlcyBuaWwpKVxuIChbYXN0IHBhc3NlcyBvcHRzXVxuICAocmVkdWNlXG4gICAoZm5cbiAgICBbYXN0IGNoaWxkLWtdXG4gICAgKGFzc29jXG4gICAgIGFzdFxuICAgICBjaGlsZC1rXG4gICAgIChsZXRcbiAgICAgIFtjaGlsZCAoZ2V0IGFzdCBjaGlsZC1rKV1cbiAgICAgIChpZlxuICAgICAgICh2ZWN0b3I/IGNoaWxkKVxuICAgICAgIChpbnRvXG4gICAgICAgIFtdXG4gICAgICAgIChtYXAgKGZuKiBbcDFfXzQzMTg4I10gKHdhbGsgcDFfXzQzMTg4IyBwYXNzZXMgb3B0cykpKVxuICAgICAgICBjaGlsZClcbiAgICAgICAod2FsayBjaGlsZCBwYXNzZXMgb3B0cykpKSkpXG4gICAoc29tZS0+IGFzdCAoYXBwbHktcGFzc2VzIHBhc3NlcyBvcHRzKSlcbiAgICg6Y2hpbGRyZW4gYXN0KSkpKVxuIn0pLCBmaXBwLmVkbiAoezpzeW0gcHJldHR5LWNvbGwsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbezprZXlzIFtwcmludC1sZXZlbCBwcmludC1sZW5ndGhdLCA6YXMgcHJpbnRlcn0gb3BlbiB4cyBzZXAgY2xvc2UgZl0pfSwgOnNvdXJjZSAiKGRlZm5cbiBwcmV0dHktY29sbFxuIFt7OmtleXMgW3ByaW50LWxldmVsIHByaW50LWxlbmd0aF0sIDphcyBwcmludGVyfSBvcGVuIHhzIHNlcCBjbG9zZSBmXVxuIChsZXRcbiAgW3ByaW50ZXJcbiAgIChjb25kLT4gcHJpbnRlciBwcmludC1sZXZlbCAodXBkYXRlIDpwcmludC1sZXZlbCBkZWMpKVxuICAgeGZvcm1cbiAgIChjb21wXG4gICAgKGlmIHByaW50LWxlbmd0aCAodGFrZSBwcmludC1sZW5ndGgpIGlkZW50aXR5KVxuICAgIChtYXAgKGZuKiBbcDFfXzQyNDUwI10gKGYgcHJpbnRlciBwMV9fNDI0NTAjKSkpXG4gICAgKGludGVycG9zZSBzZXApKVxuICAgeXNcbiAgIChpZiAocG9zPyAob3IgcHJpbnQtbGV2ZWwgMSkpIChzZXF1ZW5jZSB4Zm9ybSB4cykgXCIjXCIpXG4gICBlbGxpcHNpc1xuICAgKHdoZW5cbiAgICAoYW5kIHByaW50LWxlbmd0aCAoc2VxIChkcm9wIHByaW50LWxlbmd0aCB4cykpKVxuICAgIFs6c3BhbiBzZXAgXCIuLi5cIl0pXVxuICBbOmdyb3VwIG9wZW4gWzphbGlnbiB5cyBlbGxpcHNpc10gY2xvc2VdKSlcbiJ9IHs6c3ltIHBwcmludCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgW1t4XSBbeCBvcHRpb25zXV19LCA6c291cmNlICIoZGVmblxuIHBwcmludFxuIChbeF0gKHBwcmludCB4IHt9KSlcbiAoW3ggb3B0aW9uc11cbiAgKGxldFxuICAgW2RlZmF1bHRzXG4gICAgezpzeW1ib2xzIHt9LFxuICAgICA6cHJpbnQtbGVuZ3RoICpwcmludC1sZW5ndGgqLFxuICAgICA6cHJpbnQtbGV2ZWwgKnByaW50LWxldmVsKixcbiAgICAgOnByaW50LW1ldGEgKnByaW50LW1ldGEqfVxuICAgIHByaW50ZXJcbiAgICAobWFwLT5FZG5QcmludGVyIChtZXJnZSBkZWZhdWx0cyBvcHRpb25zKSldXG4gICAoYmluZGluZ1xuICAgIFsqcHJpbnQtbWV0YSogZmFsc2VdXG4gICAgKHBwcmludC1kb2N1bWVudCAodmlzaXQgcHJpbnRlciB4KSBvcHRpb25zKSkpKSlcbiJ9KSwgZmlwcC51dGlsICh7OnN5bSBib29sZWFuPywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmbiBib29sZWFuPyBbeF0gKG9yICh0cnVlPyB4KSAoZmFsc2U/IHgpKSlcbiJ9IHs6c3ltIGVkbj8sIDptZXRhIHs6ZG9jICJJcyB0aGUgcm9vdCBvZiB4IGFuIGVkbiB0eXBlPyIsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuXG4gZWRuP1xuIFwiSXMgdGhlIHJvb3Qgb2YgeCBhbiBlZG4gdHlwZT9cIlxuIFt4XVxuIChvclxuICAobmlsPyB4KVxuICAoYm9vbGVhbj8geClcbiAgKHN0cmluZz8geClcbiAgKGNoYXI/IHgpXG4gIChzeW1ib2w/IHgpXG4gIChrZXl3b3JkPyB4KVxuICAobnVtYmVyPyB4KVxuICAoc2VxPyB4KVxuICAodmVjdG9yPyB4KVxuICAocmVjb3JkPyB4KVxuICAobWFwPyB4KVxuICAoc2V0PyB4KVxuICAodGFnZ2VkLWxpdGVyYWw/IHgpXG4gICh2YXI/IHgpXG4gIChyZWdleHA/IHgpKSlcbiJ9IHs6c3ltIHZhbHVlLW9iaj8sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm5cbiB2YWx1ZS1vYmo/XG4gW3hdXG4gIz8oOmNsaiAoaW5zdGFuY2U/IGNsb2p1cmUubGFuZy5JT2JqIHgpIDpjbGpzIChhbmQgKHNhdGlzZmllcz8gSVdpdGhNZXRhIHgpIChub3QgKHZhcj8geCkpKSkpXG4ifSksIGRldnRvb2xzLmZvcm1hdHRlcnMuYnVkZ2V0aW5nICh7OnN5bSB0cmFuc2Zlci1yZW1haW5pbmctZGVwdGgtYnVkZ2V0ISwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtvYmplY3QtcmVmZXJlbmNlIGRlcHRoLWJ1ZGdldF0pfSwgOnNvdXJjZSAiKGRlZm5cbiB0cmFuc2Zlci1yZW1haW5pbmctZGVwdGgtYnVkZ2V0IVxuIFtvYmplY3QtcmVmZXJlbmNlIGRlcHRoLWJ1ZGdldF1cbiB7OnByZSBbKG5vdCAobmVnPyBkZXB0aC1idWRnZXQpKV19XG4gKGxldFxuICBbZGF0YVxuICAgKHNlY29uZCBvYmplY3QtcmVmZXJlbmNlKVxuICAgX1xuICAgKGFzc2VydCAob2JqZWN0PyBkYXRhKSlcbiAgIGNvbmZpZ1xuICAgKG9nZXQgZGF0YSBcImNvbmZpZ1wiKV1cbiAgKG9zZXQgZGF0YSBbXCJjb25maWdcIl0gKHNldC1kZXB0aC1idWRnZXQgY29uZmlnIGRlcHRoLWJ1ZGdldCkpKSlcbiJ9IHs6c3ltIHdhcy1vdmVyLWJ1ZGdldD8hLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3ZhbHVlXSl9LCA6c291cmNlICIoZGVmblxuIHdhcy1vdmVyLWJ1ZGdldD8hXG4gW3ZhbHVlXVxuICh3aGVuXG4gIChoYXMtb3Zlci1idWRnZXQtdmFsdWU/IHZhbHVlKVxuICAoZGVsZXRlLW92ZXItYnVkZ2V0LXZhbHVlISB2YWx1ZSlcbiAgdHJ1ZSkpXG4ifSB7OnN5bSBkZXRlcm1pbmUtZGVwdGgsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbanNvbi1tbF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBkZXRlcm1pbmUtZGVwdGhcbiBbanNvbi1tbF1cbiAoaWZcbiAgKGFycmF5PyBqc29uLW1sKVxuICAoaW5jIChhcHBseSBtYXggKG1hcCBkZXRlcm1pbmUtZGVwdGgganNvbi1tbCkpKVxuICAwKSlcbiJ9IHs6c3ltIGFkZC1vdmVyLWJ1ZGdldC12YWx1ZSEsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbdmFsdWVdKX0sIDpzb3VyY2UgIihkZWZuXG4gYWRkLW92ZXItYnVkZ2V0LXZhbHVlIVxuIFt2YWx1ZV1cbiAoaWZcbiAgKHZvbGF0aWxlPyBvdmVyLWJ1ZGdldC12YWx1ZXMpXG4gICh2cmVzZXQhIG92ZXItYnVkZ2V0LXZhbHVlcyAoY29uaiBAb3Zlci1idWRnZXQtdmFsdWVzIHZhbHVlKSlcbiAgKG9jYWxsIG92ZXItYnVkZ2V0LXZhbHVlcyBcImFkZFwiIHZhbHVlKSkpXG4ifSB7OnN5bSBvdmVyLWJ1ZGdldC12YWx1ZXMsIDptZXRhIHt9LCA6c291cmNlICIoZGVmXG4gb3Zlci1idWRnZXQtdmFsdWVzXG4gKGlmIChleGlzdHM/IGpzL1dlYWtTZXQpIChqcy9XZWFrU2V0LikgKHZvbGF0aWxlISAje30pKSlcbiJ9IHs6c3ltIGhhcy1hbnktb2JqZWN0LXJlZmVyZW5jZT8sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbanNvbi1tbF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBoYXMtYW55LW9iamVjdC1yZWZlcmVuY2U/XG4gW2pzb24tbWxdXG4gKGlmXG4gIChhcnJheT8ganNvbi1tbClcbiAgKGlmXG4gICAob2JqZWN0LXJlZmVyZW5jZT8ganNvbi1tbClcbiAgIHRydWVcbiAgIChzb21lIGhhcy1hbnktb2JqZWN0LXJlZmVyZW5jZT8ganNvbi1tbCkpKSlcbiJ9IHs6c3ltIGRpc3RyaWJ1dGUtYnVkZ2V0ISwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtqc29uLW1sIGRlcHRoLWJ1ZGdldF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBkaXN0cmlidXRlLWJ1ZGdldCFcbiBbanNvbi1tbCBkZXB0aC1idWRnZXRdXG4gezpwcmUgWyhub3QgKG5lZz8gZGVwdGgtYnVkZ2V0KSldfVxuIChpZlxuICAoYXJyYXk/IGpzb24tbWwpXG4gIChsZXRcbiAgIFtuZXctZGVwdGgtYnVkZ2V0IChkZWMgZGVwdGgtYnVkZ2V0KV1cbiAgIChpZlxuICAgIChvYmplY3QtcmVmZXJlbmNlPyBqc29uLW1sKVxuICAgICh0cmFuc2Zlci1yZW1haW5pbmctZGVwdGgtYnVkZ2V0ISBqc29uLW1sIG5ldy1kZXB0aC1idWRnZXQpXG4gICAgKGRvc2VxXG4gICAgIFtpdGVtIGpzb24tbWxdXG4gICAgIChkaXN0cmlidXRlLWJ1ZGdldCEgaXRlbSBuZXctZGVwdGgtYnVkZ2V0KSkpKSlcbiBqc29uLW1sKVxuIn0gezpzeW0gaGFzLW92ZXItYnVkZ2V0LXZhbHVlPywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt2YWx1ZV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBoYXMtb3Zlci1idWRnZXQtdmFsdWU/XG4gW3ZhbHVlXVxuIChpZlxuICAodm9sYXRpbGU/IG92ZXItYnVkZ2V0LXZhbHVlcylcbiAgKGNvbnRhaW5zPyBAb3Zlci1idWRnZXQtdmFsdWVzIHZhbHVlKVxuICAob2NhbGwgb3Zlci1idWRnZXQtdmFsdWVzIFwiaGFzXCIgdmFsdWUpKSlcbiJ9IHs6c3ltIGRlbGV0ZS1vdmVyLWJ1ZGdldC12YWx1ZSEsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbdmFsdWVdKX0sIDpzb3VyY2UgIihkZWZuXG4gZGVsZXRlLW92ZXItYnVkZ2V0LXZhbHVlIVxuIFt2YWx1ZV1cbiAoaWZcbiAgKHZvbGF0aWxlPyBvdmVyLWJ1ZGdldC12YWx1ZXMpXG4gICh2cmVzZXQhIG92ZXItYnVkZ2V0LXZhbHVlcyAoZGlzaiBAb3Zlci1idWRnZXQtdmFsdWVzIHZhbHVlKSlcbiAgKG9jYWxsIG92ZXItYnVkZ2V0LXZhbHVlcyBcImRlbGV0ZVwiIHZhbHVlKSkpXG4ifSB7OnN5bSBoZWFkZXItZXhwYW5kZXItZGVwdGgtY29zdCwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgaGVhZGVyLWV4cGFuZGVyLWRlcHRoLWNvc3QgMilcbiJ9IHs6c3ltIG9iamVjdC1yZWZlcmVuY2U/LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2pzb24tbWxdKX0sIDpzb3VyY2UgIihkZWZuIG9iamVjdC1yZWZlcmVuY2U/IFtqc29uLW1sXSAoPSAoZmlyc3QganNvbi1tbCkgXCJvYmplY3RcIikpXG4ifSB7OnN5bSBhbHRlci1qc29uLW1sLXRvLWZpdC1pbi1yZW1haW5pbmctYnVkZ2V0ISwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt2YWx1ZSBqc29uLW1sXSl9LCA6c291cmNlICIoZGVmblxuIGFsdGVyLWpzb24tbWwtdG8tZml0LWluLXJlbWFpbmluZy1idWRnZXQhXG4gW3ZhbHVlIGpzb24tbWxdXG4gKGlmLWxldFxuICBbaW5pdGlhbC1oaWVyYXJjaHktZGVwdGgtYnVkZ2V0XG4gICAocHJlZiA6aW5pdGlhbC1oaWVyYXJjaHktZGVwdGgtYnVkZ2V0KV1cbiAgKGxldFxuICAgW3JlbWFpbmluZy1kZXB0aC1idWRnZXRcbiAgICAob3IgKGdldC1kZXB0aC1idWRnZXQpIChkZWMgaW5pdGlhbC1oaWVyYXJjaHktZGVwdGgtYnVkZ2V0KSlcbiAgICBkZXB0aFxuICAgIChkZXRlcm1pbmUtZGVwdGgganNvbi1tbClcbiAgICBmaW5hbD9cbiAgICAobm90IChoYXMtYW55LW9iamVjdC1yZWZlcmVuY2U/IGpzb24tbWwpKVxuICAgIG5lZWRlZC1kZXB0aFxuICAgIChpZiBmaW5hbD8gZGVwdGggKCsgZGVwdGggaGVhZGVyLWV4cGFuZGVyLWRlcHRoLWNvc3QpKV1cbiAgIChpZlxuICAgICg+PSByZW1haW5pbmctZGVwdGgtYnVkZ2V0IG5lZWRlZC1kZXB0aClcbiAgICAoZGlzdHJpYnV0ZS1idWRnZXQhIGpzb24tbWwgcmVtYWluaW5nLWRlcHRoLWJ1ZGdldClcbiAgICAobGV0XG4gICAgIFtleHBhbmRlci1tbCAocmVuZGVyLW1hcmt1cCAoPGhlYWRlci1leHBhbmRlcj4gdmFsdWUpKV1cbiAgICAgKGFkZC1vdmVyLWJ1ZGdldC12YWx1ZSEgdmFsdWUpXG4gICAgIGV4cGFuZGVyLW1sKSkpXG4gIGpzb24tbWwpKVxuIn0pLCB0b2Rvcy5jb3JlICh7OnN5bSB0b2RvcywgOm1ldGEge30sIDpzb3VyY2UgIihkZWZcbiB0b2Rvc1xuIFt7OmRiL2lkIDEsXG4gICA6dG9kb3MuY29yZS90ZXh0IFwiQ2xlYW4gdGhlIGNhclwiLFxuICAgOnRvZG9zLmNvcmUvc3ViLXRvZG8taWRzIFsyIDNdfVxuICB7OmRiL2lkIDIsXG4gICA6dG9kb3MuY29yZS90ZXh0IFwiV2FzaCB0aGUgd2luZHNoaWVsZFwiLFxuICAgOnRvZG9zLmNvcmUvc3ViLXRvZG8taWRzIFtdfVxuICB7OmRiL2lkIDMsXG4gICA6dG9kb3MuY29yZS90ZXh0IFwiQ2xlYW4gdGhlIGludGVyaW9yXCIsXG4gICA6dG9kb3MuY29yZS9zdWItdG9kby1pZHMgWzQgNV19XG4gIHs6ZGIvaWQgNCxcbiAgIDp0b2Rvcy5jb3JlL3RleHQgXCJWYWN1dW0gdGhlIGZsb29yXCIsXG4gICA6dG9kb3MuY29yZS9zdWItdG9kby1pZHMgW119XG4gIHs6ZGIvaWQgNSxcbiAgIDp0b2Rvcy5jb3JlL3RleHQgXCJXaXBlIGRvd24gdGhlIGRhc2hib2FyZFwiLFxuICAgOnRvZG9zLmNvcmUvc3ViLXRvZG8taWRzIFtdfV0pXG4ifSB7OnN5bSB0b2Rvcy1hbHQsIDptZXRhIHt9LCA6c291cmNlICIoZGVmXG4gdG9kb3MtYWx0XG4gW3s6ZGIvaWQgMSxcbiAgIDp0b2Rvcy5jb3JlL3RleHQgXCJDbGVhbiB0aGUgY2FyXCIsXG4gICA6dG9kb3MuY29yZS9wYXJlbnQtaWQgbmlsfVxuICB7OmRiL2lkIDIsXG4gICA6dG9kb3MuY29yZS90ZXh0IFwiV2FzaCB0aGUgd2luZHNoaWVsZFwiLFxuICAgOnRvZG9zLmNvcmUvcGFyZW50LWlkIDF9XG4gIHs6ZGIvaWQgMyxcbiAgIDp0b2Rvcy5jb3JlL3RleHQgXCJDbGVhbiB0aGUgaW50ZXJpb3JcIixcbiAgIDp0b2Rvcy5jb3JlL3BhcmVudC1pZCAxfVxuICB7OmRiL2lkIDQsXG4gICA6dG9kb3MuY29yZS90ZXh0IFwiVmFjdXVtIHRoZSBmbG9vclwiLFxuICAgOnRvZG9zLmNvcmUvcGFyZW50LWlkIDN9XG4gIHs6ZGIvaWQgNSxcbiAgIDp0b2Rvcy5jb3JlL3RleHQgXCJXaXBlIGRvd24gdGhlIGRhc2hib2FyZFwiLFxuICAgOnRvZG9zLmNvcmUvcGFyZW50LWlkIDN9XSlcbiJ9KSwgY2xqcy5hbmFseXplciAoezpzeW0gdHlwZT8sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZW52IHRdKX0sIDpzb3VyY2UgIihkZWZuXG4gdHlwZT9cbiAjPyg6Y2xqcyB7OnRhZyBib29sZWFufSlcbiBbZW52IHRdXG4gKHdoZW5cbiAgKGFuZCAoc29tZT8gdCkgKHN5bWJvbD8gdCkpXG4gIChsZXRcbiAgIFt2YXJcbiAgICAoYmluZGluZyBbKnByaXZhdGUtdmFyLWFjY2Vzcy1ub3dhcm4qIHRydWVdIChyZXNvbHZlLXZhciBlbnYgdCkpXVxuICAgKGlmLXNvbWVcbiAgICBbdHlwZSAoOnR5cGUgdmFyKV1cbiAgICB0eXBlXG4gICAgKGlmLXNvbWVcbiAgICAgW3R5cGUgKC0+IHZhciA6aW5mbyA6dHlwZSldXG4gICAgIHR5cGVcbiAgICAgKGlmLXNvbWVcbiAgICAgIFtwcm90byAoOnByb3RvY29sLXN5bWJvbCB2YXIpXVxuICAgICAgcHJvdG9cbiAgICAgIChnZXQgJyN7Y2xqcy5jb3JlL1BlcnNpc3RlbnRIYXNoTWFwIGNsanMuY29yZS9MaXN0fSB0KSkpKSkpKVxuIn0gezpzeW0gZ2V0LW5hbWVzcGFjZSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgW1trZXldIFtjZW52IGtleV1dfSwgOnNvdXJjZSAiKGRlZm5cbiBnZXQtbmFtZXNwYWNlXG4gKFtrZXldIChnZXQtbmFtZXNwYWNlIGVudi8qY29tcGlsZXIqIGtleSkpXG4gKFtjZW52IGtleV1cbiAgKGlmLXNvbWVcbiAgIFtucyAoZ2V0LWluIEBjZW52IFs6Y2xqcy5hbmFseXplci9uYW1lc3BhY2VzIGtleV0pXVxuICAgbnNcbiAgICh3aGVuICg9ICdjbGpzLnVzZXIga2V5KSB7Om5hbWUgJ2NsanMudXNlcn0pKSkpXG4ifSB7OnN5bSBlbGlkZS1yZWFkZXItbWV0YSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFttXSl9LCA6c291cmNlICIoZGVmblxuIGVsaWRlLXJlYWRlci1tZXRhXG4gW21dXG4gKGRpc3NvYyBtIDpmaWxlIDpsaW5lIDpjb2x1bW4gOmVuZC1jb2x1bW4gOmVuZC1saW5lIDpzb3VyY2UpKVxuIn0gezpzeW0gbWlzc2luZy1yZW5hbWU/LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3N5bSBjZW52XSl9LCA6c291cmNlICIoZGVmblxuIG1pc3NpbmctcmVuYW1lP1xuIFtzeW0gY2Vudl1cbiAobGV0XG4gIFtsaWIgKHN5bWJvbCAobmFtZXNwYWNlIHN5bSkpIHN5bSAoc3ltYm9sIChuYW1lIHN5bSkpXVxuICAobWlzc2luZy11c2U/IGxpYiBzeW0gY2VudikpKVxuIn0gezpzeW0gcmVzb2x2ZS1pbnZva2VhYmxlLW5zLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW25zIGN1cnJlbnQtbnMgZW52XSl9LCA6c291cmNlICIoZGVmblxuIHJlc29sdmUtaW52b2tlYWJsZS1uc1xuIFtucyBjdXJyZW50LW5zIGVudl1cbiAobGV0XG4gIFtucyAocmVzb2x2ZS1ucy1hbGlhcyBlbnYgbnMpIG1vZHVsZS10eXBlIChucy0+bW9kdWxlLXR5cGUgbnMpXVxuICAoY2FzZVxuICAgbW9kdWxlLXR5cGVcbiAgIDpqc1xuICAgezpuYW1lXG4gICAgKHN5bWJvbFxuICAgICAob3JcbiAgICAgIChnZXRzIEBlbnYvKmNvbXBpbGVyKiA6anMtbW9kdWxlLWluZGV4IG5zIDpuYW1lKVxuICAgICAgKHJlc29sdmUtbnMtYWxpYXMgZW52IG5zKSkpLFxuICAgIDpvcCA6anMtdmFyLFxuICAgIDpucyAnanN9XG4gICA6bm9kZVxuICAgezpuYW1lXG4gICAgKHN5bWJvbFxuICAgICAoc3RyIGN1cnJlbnQtbnMpXG4gICAgIChtdW5nZS1ub2RlLWxpYiAocmVzb2x2ZS1ucy1hbGlhcyBlbnYgbnMpKSksXG4gICAgOm9wIDpqcy12YXIsXG4gICAgOm5zIGN1cnJlbnQtbnN9XG4gICA6Z2xvYmFsXG4gICB7Om5hbWVcbiAgICAoc3ltYm9sXG4gICAgIChzdHIgY3VycmVudC1ucylcbiAgICAgKG11bmdlLWdsb2JhbC1leHBvcnQgKHJlc29sdmUtbnMtYWxpYXMgZW52IG5zKSkpLFxuICAgIDpvcCA6anMtdmFyLFxuICAgIDpucyBjdXJyZW50LW5zfSkpKVxuIn0gezpzeW0gYW5hbHl6ZS1sZXQsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZW5jbC1lbnYgW18gYmluZGluZ3MgJiBleHBycyA6YXMgZm9ybV0gaXMtbG9vcCB3aWRlbmVkLXRhZ3NdKX0sIDpzb3VyY2UgIihkZWZuXG4gYW5hbHl6ZS1sZXRcbiBbZW5jbC1lbnYgW18gYmluZGluZ3MgJiBleHBycyA6YXMgZm9ybV0gaXMtbG9vcCB3aWRlbmVkLXRhZ3NdXG4gKHdoZW4tbm90XG4gIChhbmQgKHZlY3Rvcj8gYmluZGluZ3MpIChldmVuPyAoY291bnQgYmluZGluZ3MpKSlcbiAgKHRocm93XG4gICAoZXJyb3JcbiAgICBlbmNsLWVudlxuICAgIFwiYmluZGluZ3MgbXVzdCBiZSB2ZWN0b3Igb2YgZXZlbiBudW1iZXIgb2YgZWxlbWVudHNcIikpKVxuIChsZXRcbiAgW2NvbnRleHRcbiAgICg6Y29udGV4dCBlbmNsLWVudilcbiAgIG9wXG4gICAoaWYgKHRydWU/IGlzLWxvb3ApIDpsb29wIDpsZXQpXG4gICBiaW5kaW5nc1xuICAgKGlmXG4gICAgd2lkZW5lZC10YWdzXG4gICAgKHZlY1xuICAgICAobWFwY2F0XG4gICAgICAoZm5cbiAgICAgICBbW25hbWUgaW5pdF0gd2lkZW5lZC10YWddXG4gICAgICAgWyh2YXJ5LW1ldGEgbmFtZSBhc3NvYyA6dGFnIHdpZGVuZWQtdGFnKSBpbml0XSlcbiAgICAgIChwYXJ0aXRpb24gMiBiaW5kaW5ncylcbiAgICAgIHdpZGVuZWQtdGFncykpXG4gICAgYmluZGluZ3MpXG4gICBbYmVzIGVudl1cbiAgICgtPlxuICAgIGVuY2wtZW52XG4gICAgKGNvbmQtPiAodHJ1ZT8gaXMtbG9vcCkgKGFzc29jIDppbi1sb29wIHRydWUpKVxuICAgIChhbmFseXplLWxldC1iaW5kaW5ncyBiaW5kaW5ncyBvcCkpXG4gICByZWN1ci1mcmFtZVxuICAgKHdoZW5cbiAgICAodHJ1ZT8gaXMtbG9vcClcbiAgICB7OnBhcmFtcyBiZXMsIDpmbGFnIChhdG9tIG5pbCksIDp0YWdzIChhdG9tIChtYXB2IDp0YWcgYmVzKSl9KVxuICAgcmVjdXItZnJhbWVzXG4gICAoaWYgcmVjdXItZnJhbWUgKGNvbnMgcmVjdXItZnJhbWUgKnJlY3VyLWZyYW1lcyopICpyZWN1ci1mcmFtZXMqKVxuICAgbG9vcC1sZXRzXG4gICAoY29uZFxuICAgICh0cnVlPyBpcy1sb29wKVxuICAgICpsb29wLWxldHMqXG4gICAgKHNvbWU/ICpsb29wLWxldHMqKVxuICAgIChjb25zIHs6cGFyYW1zIGJlc30gKmxvb3AtbGV0cyopKVxuICAgd2Fybi1hY2NcbiAgICh3aGVuIChhbmQgaXMtbG9vcCAobm90IHdpZGVuZWQtdGFncykpIChhdG9tIFtdKSlcbiAgIGV4cHJcbiAgIChpZlxuICAgIHdhcm4tYWNjXG4gICAgKHdpdGgtd2FybmluZy1oYW5kbGVyc1xuICAgICBbKGFjY3VtdWxhdGluZy13YXJuaW5nLWhhbmRsZXIgd2Fybi1hY2MpXVxuICAgICAoYW5hbHl6ZS1sZXQtYm9keSBlbnYgY29udGV4dCBleHBycyByZWN1ci1mcmFtZXMgbG9vcC1sZXRzKSlcbiAgICAoYW5hbHl6ZS1sZXQtYm9keSBlbnYgY29udGV4dCBleHBycyByZWN1ci1mcmFtZXMgbG9vcC1sZXRzKSlcbiAgIGNoaWxkcmVuXG4gICBbOmJpbmRpbmdzIDpib2R5XVxuICAgbmlsLT5hbnlcbiAgIChmbmlsIGlkZW50aXR5ICdhbnkpXVxuICAoaWZcbiAgIChhbmRcbiAgICBpcy1sb29wXG4gICAgKG5vdCB3aWRlbmVkLXRhZ3MpXG4gICAgKG5vdD1cbiAgICAgKG1hcHYgbmlsLT5hbnkgQCg6dGFncyByZWN1ci1mcmFtZSkpXG4gICAgIChtYXB2IChjb21wIG5pbC0+YW55IDp0YWcpIGJlcykpKVxuICAgKHJlY3VyIGVuY2wtZW52IGZvcm0gaXMtbG9vcCBAKDp0YWdzIHJlY3VyLWZyYW1lKSlcbiAgIChkb1xuICAgICh3aGVuIHdhcm4tYWNjIChyZXBsYXktYWNjdW11bGF0ZWQtd2FybmluZ3Mgd2Fybi1hY2MpKVxuICAgIHs6b3Agb3AsXG4gICAgIDplbnYgZW5jbC1lbnYsXG4gICAgIDpiaW5kaW5ncyBiZXMsXG4gICAgIDpib2R5IChhc3NvYyBleHByIDpib2R5PyB0cnVlKSxcbiAgICAgOmZvcm0gZm9ybSxcbiAgICAgOmNoaWxkcmVuIGNoaWxkcmVufSkpKSlcbiJ9IHs6c3ltIHZhci1tZXRhLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyBbW3Zhcl0gW3ZhciBleHByLWVudl1dfSwgOnNvdXJjZSAiKGRlZm5cbiB2YXItbWV0YVxuIChbdmFyXSAodmFyLW1ldGEgdmFyIG5pbCkpXG4gKFt2YXIgZXhwci1lbnZdXG4gIChsZXRcbiAgIFtzeW1cbiAgICAoOm5hbWUgdmFyKVxuICAgIGtzXG4gICAgWzpucyA6ZG9jIDpmaWxlIDpsaW5lIDpjb2x1bW5dXG4gICAgbVxuICAgIChtZXJnZVxuICAgICAobGV0XG4gICAgICBbdXNlci1tZXRhICg6bWV0YSB2YXIpIHVrcyAoa2V5cyB1c2VyLW1ldGEpXVxuICAgICAgKHppcG1hcFxuICAgICAgIHVrc1xuICAgICAgIChtYXBcbiAgICAgICAgKGZuKiBbcDFfXzQyODEzI10gKGxpc3QgJ3F1b3RlIChnZXQgdXNlci1tZXRhIHAxX180MjgxMyMpKSlcbiAgICAgICAgdWtzKSkpXG4gICAgIChhc3NvY1xuICAgICAgKHppcG1hcFxuICAgICAgIGtzXG4gICAgICAgKG1hcCAoZm4qIFtwMV9fNDI4MTQjXSAobGlzdCAncXVvdGUgKGdldCB2YXIgcDFfXzQyODE0IykpKSBrcykpXG4gICAgICA6bmFtZVxuICAgICAgKGNsb2p1cmUuY29yZS9zZXF1ZW5jZVxuICAgICAgIChjbG9qdXJlLmNvcmUvc2VxXG4gICAgICAgIChjbG9qdXJlLmNvcmUvY29uY2F0XG4gICAgICAgICAoY2xvanVyZS5jb3JlL2xpc3QgJ3F1b3RlKVxuICAgICAgICAgKGNsb2p1cmUuY29yZS9saXN0IChzeW1ib2wgKG5hbWUgKDpuYW1lIHZhcikpKSkpKSlcbiAgICAgIDp0ZXN0XG4gICAgICAoY2xvanVyZS5jb3JlL3NlcXVlbmNlXG4gICAgICAgKGNsb2p1cmUuY29yZS9zZXFcbiAgICAgICAgKGNsb2p1cmUuY29yZS9jb25jYXRcbiAgICAgICAgIChjbG9qdXJlLmNvcmUvbGlzdCAnY2xvanVyZS5jb3JlL3doZW4pXG4gICAgICAgICAoY2xvanVyZS5jb3JlL2xpc3Qgc3ltKVxuICAgICAgICAgKGNsb2p1cmUuY29yZS9saXN0XG4gICAgICAgICAgKGNsb2p1cmUuY29yZS9zZXF1ZW5jZVxuICAgICAgICAgICAoY2xvanVyZS5jb3JlL3NlcVxuICAgICAgICAgICAgKGNsb2p1cmUuY29yZS9jb25jYXRcbiAgICAgICAgICAgICAoY2xvanVyZS5jb3JlL2xpc3QgJy4tY2xqcyRsYW5nJHRlc3QpXG4gICAgICAgICAgICAgKGNsb2p1cmUuY29yZS9saXN0IHN5bSkpKSkpKSkpXG4gICAgICA6YXJnbGlzdHNcbiAgICAgIChsZXRcbiAgICAgICBbYXJnbGlzdHNcbiAgICAgICAgKDphcmdsaXN0cyB2YXIpXG4gICAgICAgIGFyZ2xpc3RzJ1xuICAgICAgICAoaWYgKD0gJ3F1b3RlIChmaXJzdCBhcmdsaXN0cykpIChzZWNvbmQgYXJnbGlzdHMpIGFyZ2xpc3RzKV1cbiAgICAgICAobGlzdFxuICAgICAgICAncXVvdGVcbiAgICAgICAgKGRvYWxsIChtYXAgd2l0aC1tZXRhIGFyZ2xpc3RzJyAoOmFyZ2xpc3RzLW1ldGEgdmFyKSkpKSkpKV1cbiAgIChpZiBleHByLWVudiAoYW5hbHl6ZSBleHByLWVudiBtKSBtKSkpKVxuIn0gezpzeW0gZGVzdWdhci1ucy1zcGVjcywgOm1ldGEgezpkb2MgIkdpdmVuIGFuIG9yaWdpbmFsIHNldCBvZiBucyBzcGVjcyBkZXN1Z2FyIDppbmNsdWRlLW1hY3JvcyBhbmQgOnJlZmVyLW1hY3Jvc1xuICAgdXNhZ2UgaW50byBvbmx5IHByaW1pdGl2ZSBzcGVjIGZvcm1zIC0gOnVzZSwgOnJlcXVpcmUsIDp1c2UtbWFjcm9zLFxuICAgOnJlcXVpcmUtbWFjcm9zLiBJZiBhIGxpYnJhcnkgaW5jbHVkZXMgYSBtYWNybyBmaWxlIG9mIHdpdGggdGhlIHNhbWUgbmFtZVxuICAgYXMgdGhlIG5hbWVzcGFjZSB3aWxsIGFsc28gYmUgZGVzdWdhcmVkLiIsIDphcmdsaXN0cyAoW2FyZ3NdKX0sIDpzb3VyY2UgIihkZWZuXG4gZGVzdWdhci1ucy1zcGVjc1xuIFwiR2l2ZW4gYW4gb3JpZ2luYWwgc2V0IG9mIG5zIHNwZWNzIGRlc3VnYXIgOmluY2x1ZGUtbWFjcm9zIGFuZCA6cmVmZXItbWFjcm9zXFxuICAgdXNhZ2UgaW50byBvbmx5IHByaW1pdGl2ZSBzcGVjIGZvcm1zIC0gOnVzZSwgOnJlcXVpcmUsIDp1c2UtbWFjcm9zLFxcbiAgIDpyZXF1aXJlLW1hY3Jvcy4gSWYgYSBsaWJyYXJ5IGluY2x1ZGVzIGEgbWFjcm8gZmlsZSBvZiB3aXRoIHRoZSBzYW1lIG5hbWVcXG4gICBhcyB0aGUgbmFtZXNwYWNlIHdpbGwgYWxzbyBiZSBkZXN1Z2FyZWQuXCJcbiBbYXJnc11cbiAobGV0XG4gIFt7OmtleXMgW3JlcXVpcmVdLCA6YXMgaW5kZXhlZH1cbiAgICgtPj4gYXJncyAobWFwIChmbiBbW2sgJiBzcGVjc11dIFtrIChpbnRvIFtdIHNwZWNzKV0pKSAoaW50byB7fSkpXG4gICBzdWdhci1rZXlzXG4gICAjezppbmNsdWRlLW1hY3JvcyA6cmVmZXItbWFjcm9zfVxuICAgcmVtb3ZlLWZyb20tc3BlY1xuICAgKGZuXG4gICAgW3ByZWQgc3BlY11cbiAgICAoaWYtbm90XG4gICAgIChhbmQgKHNlcXVlbnRpYWw/IHNwZWMpIChzb21lIHByZWQgc3BlYykpXG4gICAgIHNwZWNcbiAgICAgKGxldFxuICAgICAgW1tsIHJdIChzcGxpdC13aXRoIChjb21wbGVtZW50IHByZWQpIHNwZWMpXVxuICAgICAgKHJlY3VyIHByZWQgKGNvbmNhdCBsIChkcm9wIDIgcikpKSkpKVxuICAgcmVwbGFjZS1yZWZlci1tYWNyb3NcbiAgIChmblxuICAgIFtzcGVjXVxuICAgIChpZi1ub3RcbiAgICAgKHNlcXVlbnRpYWw/IHNwZWMpXG4gICAgIHNwZWNcbiAgICAgKG1hcCAoZm4gW3hdIChpZiAoPSB4IDpyZWZlci1tYWNyb3MpIDpyZWZlciB4KSkgc3BlYykpKVxuICAgcmVsb2FkLXNwZWM/XG4gICAoZm4qIFtwMV9fNDI4MzgjXSAoI3s6cmVsb2FkIDpyZWxvYWQtYWxsfSBwMV9fNDI4MzgjKSlcbiAgIHRvLW1hY3JvLXNwZWNzXG4gICAoZm5cbiAgICBbc3BlY3NdXG4gICAgKC0+PlxuICAgICBzcGVjc1xuICAgICAoZmlsdGVyXG4gICAgICAoZm5cbiAgICAgICBbeF1cbiAgICAgICAob3JcbiAgICAgICAgKGFuZCAoc2VxdWVudGlhbD8geCkgKHNvbWUgc3VnYXIta2V5cyB4KSlcbiAgICAgICAgKHJlbG9hZC1zcGVjPyB4KVxuICAgICAgICAobWFjcm8tYXV0b2xvYWQtbnM/IHgpKSkpXG4gICAgIChtYXBcbiAgICAgIChmblxuICAgICAgIFt4XVxuICAgICAgIChpZi1ub3RcbiAgICAgICAgKHJlbG9hZC1zcGVjPyB4KVxuICAgICAgICAoLT4+XG4gICAgICAgICB4XG4gICAgICAgICAocmVtb3ZlLWZyb20tc3BlYyAjezppbmNsdWRlLW1hY3Jvc30pXG4gICAgICAgICAocmVtb3ZlLWZyb20tc3BlYyAjezpyZWZlcn0pXG4gICAgICAgICAocmVtb3ZlLWZyb20tc3BlYyAjezpyZW5hbWV9KVxuICAgICAgICAgKHJlcGxhY2UtcmVmZXItbWFjcm9zKSlcbiAgICAgICAgeCkpKSkpXG4gICByZW1vdmUtc3VnYXJcbiAgIChwYXJ0aWFsIHJlbW92ZS1mcm9tLXNwZWMgc3VnYXIta2V5cyldXG4gIChpZi1zb21lXG4gICBbcmVxdWlyZS1zcGVjcyAoc2VxICh0by1tYWNyby1zcGVjcyByZXF1aXJlKSldXG4gICAobWFwXG4gICAgKGZuXG4gICAgIFt4XVxuICAgICAoaWYtbm90XG4gICAgICAocmVsb2FkLXNwZWM/IHgpXG4gICAgICAobGV0IFtbayB2XSB4XSAoY29ucyBrIChtYXAgcmVtb3ZlLXN1Z2FyIHYpKSlcbiAgICAgIHgpKVxuICAgICh1cGRhdGUtaW4gaW5kZXhlZCBbOnJlcXVpcmUtbWFjcm9zXSAoZm5pbCBpbnRvIFtdKSByZXF1aXJlLXNwZWNzKSlcbiAgIGFyZ3MpKSlcbiJ9IHs6c3ltIGpzLXRhZz8sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBqcy10YWc/XG4gW3hdXG4gKGFuZCAoc3ltYm9sPyB4KSAob3IgKD0gJ2pzIHgpICg9IFwianNcIiAobmFtZXNwYWNlIHgpKSkpKVxuIn0gezpzeW0gZW5zdXJlLWRlZnMsIDptZXRhIHs6ZG9jICJFbnN1cmVzIHRoYXQgYSBub24tbmlsIGRlZnMgbWFwIGV4aXN0cyBpbiB0aGUgY29tcGlsZXIgc3RhdGUgZm9yIGEgZ2l2ZW5cbiAgbnMuIChBIG5vbi1uaWwgZGVmcyBtYXAgc2lnbmlmaWVzIHRoYXQgdGhlIG5hbWVzcGFjZSBoYXMgYmVlbiBhbmFseXplZC4pIiwgOmFyZ2xpc3RzIChbbnNdKX0sIDpzb3VyY2UgIihkZWZuXG4gZW5zdXJlLWRlZnNcbiBcIkVuc3VyZXMgdGhhdCBhIG5vbi1uaWwgZGVmcyBtYXAgZXhpc3RzIGluIHRoZSBjb21waWxlciBzdGF0ZSBmb3IgYSBnaXZlblxcbiAgbnMuIChBIG5vbi1uaWwgZGVmcyBtYXAgc2lnbmlmaWVzIHRoYXQgdGhlIG5hbWVzcGFjZSBoYXMgYmVlbiBhbmFseXplZC4pXCJcbiBbbnNdXG4gKHN3YXAhXG4gIGVudi8qY29tcGlsZXIqXG4gIHVwZGF0ZS1pblxuICBbOmNsanMuYW5hbHl6ZXIvbmFtZXNwYWNlcyBucyA6ZGVmc11cbiAgKGZuKiBbcDFfXzQyODYzI10gKG9yIHAxX180Mjg2MyMge30pKSkpXG4ifSB7OnN5bSBhbmFseXplLW1hcCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtlbnYgZm9ybV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBhbmFseXplLW1hcFxuIFtlbnYgZm9ybV1cbiAobGV0XG4gIFtleHByLWVudlxuICAgKGFzc29jIGVudiA6Y29udGV4dCA6ZXhwcilcbiAgIGtzXG4gICAoZGlzYWxsb3dpbmctcmVjdXJcbiAgICAobWFwdlxuICAgICAoZm4qIFtwMV9fNDI4NTIjXSAoYW5hbHl6ZSBleHByLWVudiBwMV9fNDI4NTIjKSlcbiAgICAgKGtleXMgZm9ybSkpKVxuICAgdnNcbiAgIChkaXNhbGxvd2luZy1yZWN1clxuICAgIChtYXB2XG4gICAgIChmbiogW3AxX180Mjg1MyNdIChhbmFseXplIGV4cHItZW52IHAxX180Mjg1MyMpKVxuICAgICAodmFscyBmb3JtKSkpXVxuICAoYW5hbHl6ZS13cmFwLW1ldGFcbiAgIHs6b3AgOm1hcCxcbiAgICA6ZW52IGVudixcbiAgICA6Zm9ybSBmb3JtLFxuICAgIDprZXlzIGtzLFxuICAgIDp2YWxzIHZzLFxuICAgIDpjaGlsZHJlbiBbOmtleXMgOnZhbHNdLFxuICAgIDp0YWcgJ2NsanMuY29yZS9JTWFwfSkpKVxuIn0gezpzeW0gTlVNRVJJQ19TRVQsIDptZXRhIHt9LCA6c291cmNlICIoZGVmIE5VTUVSSUNfU0VUICcje2FueSBsb25nIGRvdWJsZSBudW1iZXJ9KVxuIn0gezpzeW0gYW5hbHl6ZS1yZWNvcmQsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZW52IHhdKX0sIDpzb3VyY2UgIihkZWZuXG4gYW5hbHl6ZS1yZWNvcmRcbiBbZW52IHhdXG4gKGxldFxuICBbX2l0ZW1zX1xuICAgKGRpc2FsbG93aW5nLXJlY3VyIChhbmFseXplIChhc3NvYyBlbnYgOmNvbnRleHQgOmV4cHIpIChpbnRvIHt9IHgpKSlcbiAgIFtucyBuYW1lXVxuICAgKHJlY29yZC1ucytuYW1lIHgpXVxuICB7Om9wIDpjb25zdCxcbiAgIDp2YWwgeCxcbiAgIDplbnYgZW52LFxuICAgOmZvcm0geCxcbiAgIDp0YWcgKHN5bWJvbCAoc3RyIG5zKSAoc3RyIG5hbWUpKX0pKVxuIn0gezpzeW0gYW5hbHl6ZS1zZXEqLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW29wIGVudiBmb3JtIG5hbWUgb3B0c10pfSwgOnNvdXJjZSAiKGRlZm5cbiBhbmFseXplLXNlcSpcbiBbb3AgZW52IGZvcm0gbmFtZSBvcHRzXVxuIChpZlxuICAoY29udGFpbnM/IHNwZWNpYWxzIG9wKVxuICAocGFyc2Ugb3AgZW52IGZvcm0gbmFtZSBvcHRzKVxuICAocGFyc2UtaW52b2tlIGVudiBmb3JtKSkpXG4ifSB7OnN5bSBjb25zdGFudHMtbnMtc3ltLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZlxuIGNvbnN0YW50cy1ucy1zeW1cbiBcIlRoZSBuYW1lc3BhY2Ugb2YgdGhlIGNvbnN0YW50cyB0YWJsZSBhcyBhIHN5bWJvbC5cIlxuICdjbGpzLmNvcmUuY29uc3RhbnRzKVxuIn0gezpzeW0gcmVzb2x2ZS1hbGlhcywgOm1ldGEgezpkb2MgIlRha2VzIGEgbmFtZXNwYWNlIGFuZCBhbiB1bnF1YWxpZmllZCBzeW1ib2wgYW5kIHBvdGVudGlhbGx5IHJldHVybnMgYSBuZXdcbiAgc3ltYm9sIHRvIGJlIHVzZWQgaW4gbGlldSBvZiB0aGUgb3JpZ2luYWwuIiwgOmFyZ2xpc3RzIChbbnMgc3ltXSl9LCA6c291cmNlICIoZGVmblxuIHJlc29sdmUtYWxpYXNcbiBcIlRha2VzIGEgbmFtZXNwYWNlIGFuZCBhbiB1bnF1YWxpZmllZCBzeW1ib2wgYW5kIHBvdGVudGlhbGx5IHJldHVybnMgYSBuZXdcXG4gIHN5bWJvbCB0byBiZSB1c2VkIGluIGxpZXUgb2YgdGhlIG9yaWdpbmFsLlwiXG4gW25zIHN5bV1cbiAoaWZcbiAgKGFuZCAoPSAnY2xqcy5jb3JlIG5zKSAoJyN7YWdldCBhc2V0fSBzeW0pIChjaGVja2VkLWFycmF5cykpXG4gIChnZXQtaW5cbiAgICd7Ondhcm4ge2FnZXQgY2hlY2tlZC1hZ2V0LCBhc2V0IGNoZWNrZWQtYXNldH0sXG4gICAgIDplcnJvciB7YWdldCBjaGVja2VkLWFnZXQnLCBhc2V0IGNoZWNrZWQtYXNldCd9fVxuICAgWyhjaGVja2VkLWFycmF5cykgc3ltXSlcbiAgc3ltKSlcbiJ9IHs6c3ltICpjbGpzLWRlcC1zZXQqLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiAqY2xqcy1kZXAtc2V0KiAod2l0aC1tZXRhICN7fSB7OmRlcC1wYXRoIFtdfSkpXG4ifSB7OnN5bSByZXNvbHZlLXZhciwgOm1ldGEgezpkb2MgIlJlc29sdmUgYSB2YXIuIEFjY2VwdHMgYSBzaWRlLWVmZmVjdGluZyBjb25maXJtIGZuIGZvciBwcm9kdWNpbmdcbiAgIHdhcm5pbmdzIGFib3V0IHVucmVzb2x2ZWQgdmFycy4iLCA6YXJnbGlzdHMgW1tlbnYgc3ltXSBbZW52IHN5bSBjb25maXJtXSBbZW52IHN5bSBjb25maXJtIGRlZmF1bHQ/XV19LCA6c291cmNlICIoZGVmblxuIHJlc29sdmUtdmFyXG4gXCJSZXNvbHZlIGEgdmFyLiBBY2NlcHRzIGEgc2lkZS1lZmZlY3RpbmcgY29uZmlybSBmbiBmb3IgcHJvZHVjaW5nXFxuICAgd2FybmluZ3MgYWJvdXQgdW5yZXNvbHZlZCB2YXJzLlwiXG4gKFtlbnYgc3ltXSAocmVzb2x2ZS12YXIgZW52IHN5bSBuaWwpKVxuIChbZW52IHN5bSBjb25maXJtXSAocmVzb2x2ZS12YXIgZW52IHN5bSBjb25maXJtIHRydWUpKVxuIChbZW52IHN5bSBjb25maXJtIGRlZmF1bHQ/XVxuICAobGV0XG4gICBbbG9jYWxzICg6bG9jYWxzIGVudildXG4gICAoaWZcbiAgICAjPyg6Y2xqICg9IFwianNcIiAobmFtZXNwYWNlIHN5bSkpIDpjbGpzIChpZGVudGljYWw/IFwianNcIiAobmFtZXNwYWNlIHN5bSkpKVxuICAgIChsZXRcbiAgICAgW3N5bW5cbiAgICAgICgtPiBzeW0gbmFtZSBzeW1ib2wpXG4gICAgICBzaGFkb3dlZC1ieS1sb2NhbFxuICAgICAgKGhhbmRsZS1zeW1ib2wtbG9jYWwgc3ltbiAoZ2V0IGxvY2FscyBzeW1uKSldXG4gICAgIChjb25kXG4gICAgICAoc29tZT8gc2hhZG93ZWQtYnktbG9jYWwpXG4gICAgICAoZG9cbiAgICAgICAod2FybmluZyA6anMtc2hhZG93ZWQtYnktbG9jYWwgZW52IHs6bmFtZSBzeW19KVxuICAgICAgIChhc3NvYyBzaGFkb3dlZC1ieS1sb2NhbCA6b3AgOmxvY2FsKSlcbiAgICAgIDplbHNlXG4gICAgICAobGV0XG4gICAgICAgW3ByZSAoLT4+IChzdHJpbmcvc3BsaXQgKG5hbWUgc3ltKSAjXCJcXC5cIikgKG1hcCBzeW1ib2wpIHZlYyldXG4gICAgICAgKHdoZW5cbiAgICAgICAgKGFuZFxuICAgICAgICAgKG5vdCAoaGFzLWV4dGVybj8gcHJlKSlcbiAgICAgICAgIChub3QgKC0+IHN5bSBtZXRhIDpjbGpzLmFuYWx5emVyL25vLXJlc29sdmUpKSlcbiAgICAgICAgKHN3YXAhXG4gICAgICAgICBlbnYvKmNvbXBpbGVyKlxuICAgICAgICAgdXBkYXRlLWluXG4gICAgICAgICAoaW50b1xuICAgICAgICAgIFs6Y2xqcy5hbmFseXplci9uYW1lc3BhY2VzICgtPiBlbnYgOm5zIDpuYW1lKSA6ZXh0ZXJuc11cbiAgICAgICAgICBwcmUpXG4gICAgICAgICBtZXJnZVxuICAgICAgICAge30pKVxuICAgICAgIChtZXJnZVxuICAgICAgICB7Om5hbWUgc3ltLFxuICAgICAgICAgOm9wIDpqcy12YXIsXG4gICAgICAgICA6bnMgJ2pzLFxuICAgICAgICAgOnRhZ1xuICAgICAgICAgKHdpdGgtbWV0YVxuICAgICAgICAgIChvciAoanMtdGFnIHByZSkgKDp0YWcgKG1ldGEgc3ltKSkgJ2pzKVxuICAgICAgICAgIHs6cHJlZml4IHByZX0pfVxuICAgICAgICAod2hlbi1sZXRcbiAgICAgICAgIFtyZXQtdGFnIChqcy10YWcgcHJlIDpyZXQtdGFnKV1cbiAgICAgICAgIHs6anMtZm4tdmFyIHRydWUsIDpyZXQtdGFnIHJldC10YWd9KSkpKSlcbiAgICAobGV0XG4gICAgIFtzXG4gICAgICAoc3RyIHN5bSlcbiAgICAgIGxiXG4gICAgICAoaGFuZGxlLXN5bWJvbC1sb2NhbCBzeW0gKGdldCBsb2NhbHMgc3ltKSlcbiAgICAgIGN1cnJlbnQtbnNcbiAgICAgICgtPiBlbnYgOm5zIDpuYW1lKV1cbiAgICAgKGNvbmRcbiAgICAgIChzb21lPyBsYilcbiAgICAgIChhc3NvYyBsYiA6b3AgOmxvY2FsKVxuICAgICAgKHNvbWU/IChuYW1lc3BhY2Ugc3ltKSlcbiAgICAgIChsZXRcbiAgICAgICBbbnNcbiAgICAgICAgKG5hbWVzcGFjZSBzeW0pXG4gICAgICAgIG5zXG4gICAgICAgIChpZlxuICAgICAgICAgIz8oOmNsaiAoPSBcImNsb2p1cmUuY29yZVwiIG5zKSA6Y2xqcyAoaWRlbnRpY2FsPyBcImNsb2p1cmUuY29yZVwiIG5zKSlcbiAgICAgICAgIFwiY2xqcy5jb3JlXCJcbiAgICAgICAgIG5zKVxuICAgICAgICBmdWxsLW5zXG4gICAgICAgIChyZXNvbHZlLW5zLWFsaWFzXG4gICAgICAgICBlbnZcbiAgICAgICAgIG5zXG4gICAgICAgICAob3JcbiAgICAgICAgICAoYW5kXG4gICAgICAgICAgIChqcy1tb2R1bGUtZXhpc3RzPyBucylcbiAgICAgICAgICAgKGdldHMgQGVudi8qY29tcGlsZXIqIDpqcy1tb2R1bGUtaW5kZXggbnMgOm5hbWUpKVxuICAgICAgICAgIChzeW1ib2wgbnMpKSldXG4gICAgICAgKHdoZW5cbiAgICAgICAgKHNvbWU/IGNvbmZpcm0pXG4gICAgICAgICh3aGVuIChub3Q9IGN1cnJlbnQtbnMgZnVsbC1ucykgKGNvbmZpcm0tbnMgZW52IGZ1bGwtbnMpKVxuICAgICAgICAoY29uZmlybSBlbnYgZnVsbC1ucyAoc3ltYm9sIChuYW1lIHN5bSkpKSlcbiAgICAgICAocmVzb2x2ZSogZW52IHN5bSBmdWxsLW5zIGN1cnJlbnQtbnMpKVxuICAgICAgKGRvdHRlZC1zeW1ib2w/IHN5bSlcbiAgICAgIChsZXRcbiAgICAgICBbaWR4XG4gICAgICAgICguaW5kZXhPZiBzIFwiLlwiKVxuICAgICAgICBwcmVmaXhcbiAgICAgICAgKHN5bWJvbCAoc3VicyBzIDAgaWR4KSlcbiAgICAgICAgc3VmZml4XG4gICAgICAgIChzdWJzIHMgKGluYyBpZHgpKV1cbiAgICAgICAoaWYtbGV0XG4gICAgICAgIFtyZXNvbHZlZCAocmVzb2x2ZS12YXIgZW52IHByZWZpeCBuaWwgZmFsc2UpXVxuICAgICAgICAodXBkYXRlXG4gICAgICAgICByZXNvbHZlZFxuICAgICAgICAgOm5hbWVcbiAgICAgICAgIChmbiogW3AxX180MjgxMiNdIChzeW1ib2wgKHN0ciBwMV9fNDI4MTIjIFwiLlwiIHN1ZmZpeCkpKSlcbiAgICAgICAgKGxldFxuICAgICAgICAgW3NcbiAgICAgICAgICAoc3RyIChjb25kLT4+IHMgKGdvb2ctbW9kdWxlLWRlcD8gc3ltKSAocmVzb2x2ZS1pbXBvcnQgZW52KSkpXG4gICAgICAgICAgaWR4XG4gICAgICAgICAgKC5sYXN0SW5kZXhPZiAoc3RyIHMpIFwiLlwiKVxuICAgICAgICAgIHByZVxuICAgICAgICAgIChzdWJzIHMgMCBpZHgpXG4gICAgICAgICAgc3VmXG4gICAgICAgICAgKHN1YnMgcyAoaW5jIGlkeCkpXVxuICAgICAgICAgezpvcCA6dmFyLCA6bmFtZSAoc3ltYm9sIHByZSBzdWYpLCA6bnMgKHN5bWJvbCBwcmUpfSkpKVxuICAgICAgKHNvbWU/XG4gICAgICAgKGdldHNcbiAgICAgICAgQGVudi8qY29tcGlsZXIqXG4gICAgICAgIDpjbGpzLmFuYWx5emVyL25hbWVzcGFjZXNcbiAgICAgICAgY3VycmVudC1uc1xuICAgICAgICA6dXNlc1xuICAgICAgICBzeW0pKVxuICAgICAgKGxldFxuICAgICAgIFtmdWxsLW5zXG4gICAgICAgIChnZXRzXG4gICAgICAgICBAZW52Lypjb21waWxlcipcbiAgICAgICAgIDpjbGpzLmFuYWx5emVyL25hbWVzcGFjZXNcbiAgICAgICAgIGN1cnJlbnQtbnNcbiAgICAgICAgIDp1c2VzXG4gICAgICAgICBzeW0pXVxuICAgICAgIChyZXNvbHZlKiBlbnYgc3ltIGZ1bGwtbnMgY3VycmVudC1ucykpXG4gICAgICAoc29tZT9cbiAgICAgICAoZ2V0c1xuICAgICAgICBAZW52Lypjb21waWxlcipcbiAgICAgICAgOmNsanMuYW5hbHl6ZXIvbmFtZXNwYWNlc1xuICAgICAgICBjdXJyZW50LW5zXG4gICAgICAgIDpyZW5hbWVzXG4gICAgICAgIHN5bSkpXG4gICAgICAobGV0XG4gICAgICAgW3F1YWxpZmllZC1zeW1ib2xcbiAgICAgICAgKGdldHNcbiAgICAgICAgIEBlbnYvKmNvbXBpbGVyKlxuICAgICAgICAgOmNsanMuYW5hbHl6ZXIvbmFtZXNwYWNlc1xuICAgICAgICAgY3VycmVudC1uc1xuICAgICAgICAgOnJlbmFtZXNcbiAgICAgICAgIHN5bSlcbiAgICAgICAgZnVsbC1uc1xuICAgICAgICAoc3ltYm9sIChuYW1lc3BhY2UgcXVhbGlmaWVkLXN5bWJvbCkpXG4gICAgICAgIHN5bVxuICAgICAgICAoc3ltYm9sIChuYW1lIHF1YWxpZmllZC1zeW1ib2wpKV1cbiAgICAgICAocmVzb2x2ZSogZW52IHN5bSBmdWxsLW5zIGN1cnJlbnQtbnMpKVxuICAgICAgKHNvbWU/XG4gICAgICAgKGdldHNcbiAgICAgICAgQGVudi8qY29tcGlsZXIqXG4gICAgICAgIDpjbGpzLmFuYWx5emVyL25hbWVzcGFjZXNcbiAgICAgICAgY3VycmVudC1uc1xuICAgICAgICA6aW1wb3J0c1xuICAgICAgICBzeW0pKVxuICAgICAgKHJlY3VyXG4gICAgICAgZW52XG4gICAgICAgKGdldHNcbiAgICAgICAgQGVudi8qY29tcGlsZXIqXG4gICAgICAgIDpjbGpzLmFuYWx5emVyL25hbWVzcGFjZXNcbiAgICAgICAgY3VycmVudC1uc1xuICAgICAgICA6aW1wb3J0c1xuICAgICAgICBzeW0pXG4gICAgICAgY29uZmlybVxuICAgICAgIGRlZmF1bHQ/KVxuICAgICAgKHNvbWU/XG4gICAgICAgKGdldHNcbiAgICAgICAgQGVudi8qY29tcGlsZXIqXG4gICAgICAgIDpjbGpzLmFuYWx5emVyL25hbWVzcGFjZXNcbiAgICAgICAgY3VycmVudC1uc1xuICAgICAgICA6ZGVmc1xuICAgICAgICBzeW0pKVxuICAgICAgKGRvXG4gICAgICAgKHdoZW4gKHNvbWU/IGNvbmZpcm0pIChjb25maXJtIGVudiBjdXJyZW50LW5zIHN5bSkpXG4gICAgICAgKG1lcmdlXG4gICAgICAgIChnZXRzXG4gICAgICAgICBAZW52Lypjb21waWxlcipcbiAgICAgICAgIDpjbGpzLmFuYWx5emVyL25hbWVzcGFjZXNcbiAgICAgICAgIGN1cnJlbnQtbnNcbiAgICAgICAgIDpkZWZzXG4gICAgICAgICBzeW0pXG4gICAgICAgIHs6bmFtZSAoc3ltYm9sIChzdHIgY3VycmVudC1ucykgKHN0ciBzeW0pKSxcbiAgICAgICAgIDpvcCA6dmFyLFxuICAgICAgICAgOm5zIGN1cnJlbnQtbnN9KSlcbiAgICAgIChjb3JlLW5hbWU/IGVudiBzeW0pXG4gICAgICAobGV0XG4gICAgICAgW3N5bSAocmVzb2x2ZS1hbGlhcyAnY2xqcy5jb3JlIHN5bSldXG4gICAgICAgKHdoZW4gKHNvbWU/IGNvbmZpcm0pIChjb25maXJtIGVudiAnY2xqcy5jb3JlIHN5bSkpXG4gICAgICAgKG1lcmdlXG4gICAgICAgIChnZXRzXG4gICAgICAgICBAZW52Lypjb21waWxlcipcbiAgICAgICAgIDpjbGpzLmFuYWx5emVyL25hbWVzcGFjZXNcbiAgICAgICAgICdjbGpzLmNvcmVcbiAgICAgICAgIDpkZWZzXG4gICAgICAgICBzeW0pXG4gICAgICAgIHs6bmFtZSAoc3ltYm9sIFwiY2xqcy5jb3JlXCIgKHN0ciBzeW0pKSxcbiAgICAgICAgIDpvcCA6dmFyLFxuICAgICAgICAgOm5zICdjbGpzLmNvcmV9KSlcbiAgICAgIChpbnZva2VhYmxlLW5zPyBzIGVudilcbiAgICAgIChyZXNvbHZlLWludm9rZWFibGUtbnMgcyBjdXJyZW50LW5zIGVudilcbiAgICAgIDplbHNlXG4gICAgICAod2hlblxuICAgICAgIGRlZmF1bHQ/XG4gICAgICAgKHdoZW4gKHNvbWU/IGNvbmZpcm0pIChjb25maXJtIGVudiBjdXJyZW50LW5zIHN5bSkpXG4gICAgICAgKG1lcmdlXG4gICAgICAgIChnZXRzXG4gICAgICAgICBAZW52Lypjb21waWxlcipcbiAgICAgICAgIDpjbGpzLmFuYWx5emVyL25hbWVzcGFjZXNcbiAgICAgICAgIGN1cnJlbnQtbnNcbiAgICAgICAgIDpkZWZzXG4gICAgICAgICBzeW0pXG4gICAgICAgIHs6bmFtZSAoc3ltYm9sIChzdHIgY3VycmVudC1ucykgKHN0ciBzeW0pKSxcbiAgICAgICAgIDpvcCA6dmFyLFxuICAgICAgICAgOm5zIGN1cnJlbnQtbnN9KSkpKSkpKSlcbiJ9IHs6c3ltIGpzLXN0YXItc2VnLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3NdKX0sIDpzb3VyY2UgIihkZWZuXG4ganMtc3Rhci1zZWdcbiBbc11cbiAobGV0XG4gIFtpZHggKC5pbmRleE9mIHMgXCJ+e1wiKV1cbiAgKGlmXG4gICAoPT0gLTEgaWR4KVxuICAgKGxpc3QgcylcbiAgIChsZXRcbiAgICBbZW5kICguaW5kZXhPZiBzIFwifVwiIGlkeCldXG4gICAgKGxhenktc2VxXG4gICAgIChjb25zIChzdWJzIHMgMCBpZHgpIChqcy1zdGFyLXNlZyAoc3VicyBzIChpbmMgZW5kKSkpKSkpKSkpXG4ifSB7OnN5bSBkZXAtaGFzLWdsb2JhbC1leHBvcnRzPywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFttb2R1bGVdKX0sIDpzb3VyY2UgIihkZWZuXG4gZGVwLWhhcy1nbG9iYWwtZXhwb3J0cz9cbiBbbW9kdWxlXVxuIChsZXRcbiAgW1ttb2R1bGUgX11cbiAgIChsaWImc3VibGliIG1vZHVsZSlcbiAgIGdsb2JhbC1leHBvcnRzXG4gICAoZ2V0LWluXG4gICAgQGVudi8qY29tcGlsZXIqXG4gICAgWzpqcy1kZXBlbmRlbmN5LWluZGV4IChzdHIgbW9kdWxlKSA6Z2xvYmFsLWV4cG9ydHNdKV1cbiAgKG9yXG4gICAoY29udGFpbnM/IGdsb2JhbC1leHBvcnRzIChzeW1ib2wgbW9kdWxlKSlcbiAgIChjb250YWlucz8gZ2xvYmFsLWV4cG9ydHMgKG5hbWUgbW9kdWxlKSkpKSlcbiJ9IHs6c3ltIHJlZ2lzdGVyLXNwZWNzLCA6bWV0YSB7OmRvYyAiUmVnaXN0ZXJzIHNwZWNlZCB2YXJzIGZvdW5kIGluIGEgbmFtZXNwYWNlIGFuYWx5c2lzIGNhY2hlLiIsIDphcmdsaXN0cyAoW2NhY2hlZC1uc10pfSwgOnNvdXJjZSAiKGRlZm5cbiByZWdpc3Rlci1zcGVjc1xuIFwiUmVnaXN0ZXJzIHNwZWNlZCB2YXJzIGZvdW5kIGluIGEgbmFtZXNwYWNlIGFuYWx5c2lzIGNhY2hlLlwiXG4gW2NhY2hlZC1uc11cbiAjPyg6Y2xqICh0cnkgKGxvY2tpbmcgbG9hZC1tdXRleCAoY2xvanVyZS5jb3JlL3JlcXVpcmUgKHF1b3RlIGNsanMuc3BlYy5hbHBoYSkpKSAoY2F0Y2ggVGhyb3dhYmxlIHQpKSlcbiAobGV0XG4gIFt7OmtleXMgW3JlZ2lzdHJ5LXJlZiBzcGVjZWQtdmFyc119IChnZXQtc3BlYy12YXJzKV1cbiAgKHdoZW4tbGV0XG4gICBbcmVnaXN0cnkgKHNlcSAoOmNsanMuc3BlYy9yZWdpc3RyeS1yZWYgY2FjaGVkLW5zKSldXG4gICAod2hlbiByZWdpc3RyeS1yZWYgKHN3YXAhIEByZWdpc3RyeS1yZWYgaW50byByZWdpc3RyeSkpKVxuICAod2hlbi1sZXRcbiAgIFt2YXJzIChzZXEgKDpjbGpzLnNwZWMvc3BlY2VkLXZhcnMgY2FjaGVkLW5zKSldXG4gICAod2hlbiBzcGVjZWQtdmFycyAoc3dhcCEgQHNwZWNlZC12YXJzIGludG8gdmFycykpKSkpXG4ifSB7OnN5bSBnZXQtZXh0ZXJucywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtdKX0sIDpzb3VyY2UgIihkZWZuIGdldC1leHRlcm5zIFtdICg6Y2xqcy5hbmFseXplci9leHRlcm5zIEBlbnYvKmNvbXBpbGVyKikpXG4ifSB7OnN5bSAqcGFzc2VzKiwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgKnBhc3NlcyogbmlsKVxuIn0gezpzeW0gaGFzLWV4dGVybj8qLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyBbW3ByZSBleHRlcm5zXSBbcHJlIGV4dGVybnMgdG9wXV19LCA6c291cmNlICIoZGVmblxuIGhhcy1leHRlcm4/KlxuIChbcHJlIGV4dGVybnNdXG4gIChsZXRcbiAgIFtwcmVcbiAgICAoaWYtc29tZVxuICAgICBbbWUgKGZpbmQgKGdldC1pbiBleHRlcm5zICdbV2luZG93IHByb3RvdHlwZV0pIChmaXJzdCBwcmUpKV1cbiAgICAgKGlmLXNvbWVcbiAgICAgIFt0YWcgKC0+IG1lIGZpcnN0IG1ldGEgOnRhZyldXG4gICAgICAoaW50byBbdGFnICdwcm90b3R5cGVdIChuZXh0IHByZSkpXG4gICAgICBwcmUpXG4gICAgIHByZSldXG4gICAoaGFzLWV4dGVybj8qIHByZSBleHRlcm5zIGV4dGVybnMpKSlcbiAoW3ByZSBleHRlcm5zIHRvcF1cbiAgKGNvbmRcbiAgIChlbXB0eT8gcHJlKVxuICAgdHJ1ZVxuICAgOmVsc2VcbiAgIChsZXRcbiAgICBbeCAoZmlyc3QgcHJlKSBtZSAoZmluZCBleHRlcm5zIHgpXVxuICAgIChjb25kXG4gICAgIChub3QgbWUpXG4gICAgIGZhbHNlXG4gICAgIDplbHNlXG4gICAgIChsZXRcbiAgICAgIFtbeCcgZXh0ZXJucyddIG1lIHhtZXRhIChtZXRhIHgnKV1cbiAgICAgIChpZlxuICAgICAgIChhbmQgKD0gJ0Z1bmN0aW9uICg6dGFnIHhtZXRhKSkgKDpjdG9yIHhtZXRhKSlcbiAgICAgICAob3JcbiAgICAgICAgKGhhcy1leHRlcm4/KiAoaW50byAnW3Byb3RvdHlwZV0gKG5leHQgcHJlKSkgZXh0ZXJucycgdG9wKVxuICAgICAgICAoaGFzLWV4dGVybj8qIChuZXh0IHByZSkgZXh0ZXJucycgdG9wKSlcbiAgICAgICAocmVjdXIgKG5leHQgcHJlKSBleHRlcm5zJyB0b3ApKSkpKSkpKVxuIn0gezpzeW0gaGFuZGxlLXN5bWJvbC1sb2NhbCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtzeW0gbGJdKX0sIDpzb3VyY2UgIihkZWZuIGhhbmRsZS1zeW1ib2wtbG9jYWwgW3N5bSBsYl0gKGlmIChzeW1ib2w/IGxiKSB7Om5hbWUgc3ltfSBsYikpXG4ifSB7OnN5bSBnZXQtZXhwYW5kZXItbnMsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZW52IG5zdHJdKX0sIDpzb3VyY2UgIihkZWZuXG4gZ2V0LWV4cGFuZGVyLW5zXG4gW2VudiBuc3RyXVxuIChsZXRcbiAgW3Jlc1xuICAgKG9yXG4gICAgKHJlc29sdmUtbWFjcm8tbnMtYWxpYXMgZW52IG5zdHIgbmlsKVxuICAgIChyZXNvbHZlLW5zLWFsaWFzIGVudiBuc3RyIG5pbCkpXG4gICBuc3RyXG4gICAoaWYgKHNvbWU/IHJlcykgKHN0ciByZXMpIG5zdHIpXVxuICAoY29uZFxuICAgIz9AKDpjbGogWyg9IFwiY2xvanVyZS5jb3JlXCIgbnN0cikgKGZpbmQtbnMgKHF1b3RlIGNsanMuY29yZSkpXSA6Y2xqcyBbKGlkZW50aWNhbD8gXCJjbG9qdXJlLmNvcmVcIiBuc3RyKSAoZmluZC1tYWNyb3MtbnMgaW1wbC9DTEpTX0NPUkVfTUFDUk9TX1NZTSldKVxuICAgIz9AKDpjbGogWyg9IFwiY2xvanVyZS5yZXBsXCIgbnN0cikgKGZpbmQtbnMgKHF1b3RlIGNsanMucmVwbCkpXSA6Y2xqcyBbKGlkZW50aWNhbD8gXCJjbG9qdXJlLnJlcGxcIiBuc3RyKSAoZmluZC1tYWNyb3MtbnMgKHF1b3RlIGNsanMucmVwbCkpXSlcbiAgICM/QCg6Y2xqIFsoLmNvbnRhaW5zIG5zdHIgXCIuXCIpIChmaW5kLW5zIChzeW1ib2wgbnN0cikpXSA6Y2xqcyBbKGdvb2cuc3RyaW5nL2NvbnRhaW5zIG5zdHIgXCIuXCIpIChmaW5kLW1hY3Jvcy1ucyAoc3ltYm9sIG5zdHIpKV0pXG4gICA6ZWxzZVxuICAgKHNvbWUtPlxuICAgIGVudlxuICAgIDpuc1xuICAgIDpyZXF1aXJlLW1hY3Jvc1xuICAgIChnZXQgKHN5bWJvbCBuc3RyKSlcbiAgICAjPyg6Y2xqIGZpbmQtbnMgOmNsanMgZmluZC1tYWNyb3MtbnMpKSkpKVxuIn0gezpzeW0gbWVzc2FnZSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtlbnYgc10pfSwgOnNvdXJjZSAiKGRlZm5cbiBtZXNzYWdlXG4gW2VudiBzXVxuIChzdHJcbiAgc1xuICAoaWZcbiAgICg6bGluZSBlbnYpXG4gICAoc3RyIFwiIGF0IGxpbmUgXCIgKDpsaW5lIGVudikgXCIgXCIgKmNsanMtZmlsZSopXG4gICAod2hlbiAqY2xqcy1maWxlKiAoc3RyIFwiIGluIGZpbGUgXCIgKmNsanMtZmlsZSopKSkpKVxuIn0gezpzeW0gcGFyc2UtaW52b2tlLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2VudiBmb3JtXSl9LCA6c291cmNlICIoZGVmblxuIHBhcnNlLWludm9rZVxuIFtlbnYgZm9ybV1cbiAoZGlzYWxsb3dpbmctcmVjdXIgKHBhcnNlLWludm9rZSogZW52IGZvcm0pKSlcbiJ9IHs6c3ltICpjbGpzLXdhcm5pbmctaGFuZGxlcnMqLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiAqY2xqcy13YXJuaW5nLWhhbmRsZXJzKiBbZGVmYXVsdC13YXJuaW5nLWhhbmRsZXJdKVxuIn0gezpzeW0gYW5hbHl6ZS1zZXEqLXdyYXAsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbb3AgZW52IGZvcm0gbmFtZSBvcHRzXSl9LCA6c291cmNlICIoZGVmblxuIGFuYWx5emUtc2VxKi13cmFwXG4gW29wIGVudiBmb3JtIG5hbWUgb3B0c11cbiAod3JhcHBpbmctZXJyb3JzIGVudiAoYW5hbHl6ZS1zZXEqIG9wIGVudiBmb3JtIG5hbWUgb3B0cykpKVxuIn0gezpzeW0gY29uZmlybS1iaW5kaW5ncywgOm1ldGEgezpkb2MgIkdpdmVuIGVudiwgYW4gYW5hbHlzaXMgZW52aXJvbm1lbnQgZW52LCBhbmQgbmFtZXMsIGEgbGlzdCBvZiBzeW1ib2xzLCBjb25maXJtXG4gICB0aGF0IGFsbCBjb3JyZXNwb25kIHRvIGRlY2xhcmVkIGR5bmFtaWMgdmFycy4iLCA6YXJnbGlzdHMgKFtlbnYgbmFtZXNdKX0sIDpzb3VyY2UgIihkZWZuXG4gY29uZmlybS1iaW5kaW5nc1xuIFwiR2l2ZW4gZW52LCBhbiBhbmFseXNpcyBlbnZpcm9ubWVudCBlbnYsIGFuZCBuYW1lcywgYSBsaXN0IG9mIHN5bWJvbHMsIGNvbmZpcm1cXG4gICB0aGF0IGFsbCBjb3JyZXNwb25kIHRvIGRlY2xhcmVkIGR5bmFtaWMgdmFycy5cIlxuIFtlbnYgbmFtZXNdXG4gKGRvc2VxXG4gIFtuYW1lIG5hbWVzXVxuICAobGV0XG4gICBbZW52XG4gICAgKGFzc29jIGVudiA6bnMgKGdldC1uYW1lc3BhY2UgKmNsanMtbnMqKSlcbiAgICBldlxuICAgIChyZXNvbHZlLWV4aXN0aW5nLXZhciBlbnYgbmFtZSldXG4gICAod2hlblxuICAgIChhbmQgZXYgKG5vdCAoLT4gZXYgOmR5bmFtaWMpKSlcbiAgICAod2FybmluZyA6ZHluYW1pYyBlbnYgezpldiBldiwgOm5hbWUgKDpuYW1lIGV2KX0pKSkpKVxuIn0gezpzeW0gaGFzLWV4dGVybj8sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIFtbcHJlXSBbcHJlIGV4dGVybnNdXX0sIDpzb3VyY2UgIihkZWZuXG4gaGFzLWV4dGVybj9cbiAoW3ByZV0gKGhhcy1leHRlcm4/IHByZSAoZ2V0LWV4dGVybnMpKSlcbiAoW3ByZSBleHRlcm5zXVxuICAob3JcbiAgIChoYXMtZXh0ZXJuPyogcHJlIGV4dGVybnMpXG4gICAod2hlblxuICAgICg9IDEgKGNvdW50IHByZSkpXG4gICAgKGxldFxuICAgICBbeCAoZmlyc3QgcHJlKV1cbiAgICAgKG9yXG4gICAgICAoZ2V0LWluIGV4dGVybnMgKGNvbmogJ1tXaW5kb3cgcHJvdG90eXBlXSB4KSlcbiAgICAgIChnZXQtaW4gZXh0ZXJucyAoY29uaiAnW051bWJlcl0geCkpKSkpXG4gICAoLT4gKGxhc3QgcHJlKSBzdHIgKHN0cmluZy9zdGFydHMtd2l0aD8gXCJjbGpzJFwiKSkpKSlcbiJ9IHs6c3ltIGZvcmVpZ24tZGVwPywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtkZXBdKX0sIDpzb3VyY2UgIihkZWZuXG4gZm9yZWlnbi1kZXA/XG4gIz8oOmNsanMgezp0YWcgYm9vbGVhbn0pXG4gW2RlcF1cbiAobGV0XG4gIFtqcy1pbmRleCAoOmpzLWRlcGVuZGVuY3ktaW5kZXggQGVudi8qY29tcGlsZXIqKV1cbiAgKGlmLXNvbWVcbiAgIFtbXyB7OmtleXMgW2ZvcmVpZ25dfV1cbiAgICAoZmluZCBqcy1pbmRleCAobmFtZSAoLT4gZGVwIGxpYiZzdWJsaWIgZmlyc3QpKSldXG4gICBmb3JlaWduXG4gICBmYWxzZSkpKVxuIn0gezpzeW0gbWlzc2luZy1yZW5hbWUtbWFjcm8/LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3N5bV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBtaXNzaW5nLXJlbmFtZS1tYWNybz9cbiBbc3ltXVxuIChsZXRcbiAgW2xpYlxuICAgKHN5bWJvbCAobmFtZXNwYWNlIHN5bSkpXG4gICBzeW1cbiAgIChzeW1ib2wgKG5hbWUgc3ltKSlcbiAgIHRoZS1uc1xuICAgIz8oOmNsaiAoZmluZC1ucyBsaWIpIDpjbGpzIChmaW5kLW1hY3Jvcy1ucyBsaWIpKV1cbiAgKG9yIChuaWw/IHRoZS1ucykgKG5pbD8gKC5maW5kSW50ZXJuZWRWYXIgdGhlLW5zIHN5bSkpKSkpXG4ifSB7OnN5bSBtaXNzaW5nLXVzZXMsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbdXNlcyBlbnZdKX0sIDpzb3VyY2UgIihkZWZuXG4gbWlzc2luZy11c2VzXG4gW3VzZXMgZW52XVxuIChsZXRcbiAgW2NlbnYgQGVudi8qY29tcGlsZXIqXVxuICAoaW50byB7fSAoZmlsdGVyIChmbiBbW3N5bSBsaWJdXSAobWlzc2luZy11c2U/IGxpYiBzeW0gY2VudikpIHVzZXMpKSkpXG4ifSB7OnN5bSBtaXNzaW5nLXVzZT8sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbbGliIHN5bSBjZW52XSl9LCA6c291cmNlICIoZGVmblxuIG1pc3NpbmctdXNlP1xuIFtsaWIgc3ltIGNlbnZdXG4gKGxldFxuICBbanMtbGliIChnZXQtaW4gY2VudiBbOmpzLWRlcGVuZGVuY3ktaW5kZXggKG5hbWUgbGliKV0pXVxuICAoYW5kXG4gICAoPVxuICAgIChnZXQtaW5cbiAgICAgY2VudlxuICAgICBbOmNsanMuYW5hbHl6ZXIvbmFtZXNwYWNlcyBsaWIgOmRlZnMgc3ltXVxuICAgICA6Y2xqcy5hbmFseXplci9ub3QtZm91bmQpXG4gICAgOmNsanMuYW5hbHl6ZXIvbm90LWZvdW5kKVxuICAgKG5vdCAoPSAoZ2V0IGpzLWxpYiA6Z3JvdXApIDpnb29nKSlcbiAgIChub3QgKGdldCBqcy1saWIgOmNsb3N1cmUtbGliKSlcbiAgIChub3QgKG5vZGUtbW9kdWxlLWRlcD8gbGliKSlcbiAgIChub3QgKGRlcC1oYXMtZ2xvYmFsLWV4cG9ydHM/IGxpYikpKSkpXG4ifSB7OnN5bSBlczUtYWxsb3dlZCwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgZXM1LWFsbG93ZWQgI3tcImRlZmF1bHRcIn0pXG4ifSB7OnN5bSBhbmFseXplLCA6bWV0YSB7OmRvYyAiR2l2ZW4gYW4gZW52aXJvbm1lbnQsIGEgbWFwIGNvbnRhaW5pbmcgezpsb2NhbHMgKG1hcHBpbmcgb2YgbmFtZXMgdG8gYmluZGluZ3MpLCA6Y29udGV4dFxuICAob25lIG9mIDpzdGF0ZW1lbnQsIDpleHByLCA6cmV0dXJuKSwgOm5zIChhIHN5bWJvbCBuYW1pbmcgdGhlXG4gIGNvbXBpbGF0aW9uIG5zKX0sIGFuZCBmb3JtLCByZXR1cm5zIGFuIGV4cHJlc3Npb24gb2JqZWN0IChhIG1hcFxuICBjb250YWluaW5nIGF0IGxlYXN0IDpmb3JtLCA6b3AgYW5kIDplbnYga2V5cykuIElmIGV4cHIgaGFzIGFueSAoaW1tZWRpYXRlbHkpXG4gIG5lc3RlZCBleHBycywgbXVzdCBoYXZlIGEgOmNoaWxkcmVuIGVudHJ5LiBUaGlzIG11c3QgYmUgYSB2ZWN0b3Igb2Yga2V5d29yZHMgbmFtaW5nXG4gIHRoZSBpbW1lZGlhdGVseSBuZXN0ZWQgZmllbGRzIG1hcHBlZCB0byBhbiBleHByIG9yIHZlY3RvciBvZiBleHBycy4gVGhpcyB3aWxsXG4gIGZhY2lsaXRhdGUgY29kZSB3YWxraW5nIHdpdGhvdXQga25vd2luZyB0aGUgZGV0YWlscyBvZiB0aGUgb3Agc2V0LiIsIDphcmdsaXN0cyBbW2VudiBmb3JtXSBbZW52IGZvcm0gbmFtZV0gW2VudiBmb3JtIG5hbWUgb3B0c11dfSwgOnNvdXJjZSAiKGRlZm5cbiBhbmFseXplXG4gXCJHaXZlbiBhbiBlbnZpcm9ubWVudCwgYSBtYXAgY29udGFpbmluZyB7OmxvY2FscyAobWFwcGluZyBvZiBuYW1lcyB0byBiaW5kaW5ncyksIDpjb250ZXh0XFxuICAob25lIG9mIDpzdGF0ZW1lbnQsIDpleHByLCA6cmV0dXJuKSwgOm5zIChhIHN5bWJvbCBuYW1pbmcgdGhlXFxuICBjb21waWxhdGlvbiBucyl9LCBhbmQgZm9ybSwgcmV0dXJucyBhbiBleHByZXNzaW9uIG9iamVjdCAoYSBtYXBcXG4gIGNvbnRhaW5pbmcgYXQgbGVhc3QgOmZvcm0sIDpvcCBhbmQgOmVudiBrZXlzKS4gSWYgZXhwciBoYXMgYW55IChpbW1lZGlhdGVseSlcXG4gIG5lc3RlZCBleHBycywgbXVzdCBoYXZlIGEgOmNoaWxkcmVuIGVudHJ5LiBUaGlzIG11c3QgYmUgYSB2ZWN0b3Igb2Yga2V5d29yZHMgbmFtaW5nXFxuICB0aGUgaW1tZWRpYXRlbHkgbmVzdGVkIGZpZWxkcyBtYXBwZWQgdG8gYW4gZXhwciBvciB2ZWN0b3Igb2YgZXhwcnMuIFRoaXMgd2lsbFxcbiAgZmFjaWxpdGF0ZSBjb2RlIHdhbGtpbmcgd2l0aG91dCBrbm93aW5nIHRoZSBkZXRhaWxzIG9mIHRoZSBvcCBzZXQuXCJcbiAoW2VudiBmb3JtXSAoYW5hbHl6ZSBlbnYgZm9ybSBuaWwpKVxuIChbZW52IGZvcm0gbmFtZV1cbiAgKGFuYWx5emVcbiAgIGVudlxuICAgZm9ybVxuICAgbmFtZVxuICAgKHdoZW4gZW52Lypjb21waWxlciogKDpvcHRpb25zIEBlbnYvKmNvbXBpbGVyKikpKSlcbiAoW2VudiBmb3JtIG5hbWUgb3B0c11cbiAgKHdyYXBwaW5nLWVycm9yc1xuICAgZW52XG4gICAoaWZcbiAgICAoYW5hbHl6ZWQ/IGZvcm0pXG4gICAgKG5vLXdhcm4gKGFuYWx5emUqIGVudiBmb3JtIG5hbWUgb3B0cykpXG4gICAgKGFuYWx5emUqIGVudiBmb3JtIG5hbWUgb3B0cykpKSkpXG4ifSB7OnN5bSB1c2VkPywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtlbnYgc3ltXSl9LCA6c291cmNlICIoZGVmblxuIHVzZWQ/XG4gIz8oOmNsanMgezp0YWcgYm9vbGVhbn0pXG4gW2VudiBzeW1dXG4gKG9yXG4gIChzb21lPyAoZ2V0cyBlbnYgOm5zIDp1c2UtbWFjcm9zIHN5bSkpXG4gIChzb21lP1xuICAgKGdldHNcbiAgICBAZW52Lypjb21waWxlcipcbiAgICA6Y2xqcy5hbmFseXplci9uYW1lc3BhY2VzXG4gICAgKGdldHMgZW52IDpucyA6bmFtZSlcbiAgICA6dXNlLW1hY3Jvc1xuICAgIHN5bSkpKSlcbiJ9IHs6c3ltIG5vZGUtbW9kdWxlLWRlcD8sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbbW9kdWxlXSl9LCA6c291cmNlICIoZGVmblxuIG5vZGUtbW9kdWxlLWRlcD9cbiAjPyg6Y2xqcyB7OnRhZyBib29sZWFufSlcbiBbbW9kdWxlXVxuICM/KDpjbGogKGxldCBbaWR4IChnZXQgKGNsb2p1cmUuY29yZS9kZXJlZiBlbnYvKmNvbXBpbGVyKikgOm5vZGUtbW9kdWxlLWluZGV4KV0gKGNvbnRhaW5zPyBpZHggKHN0ciAoLT4gbW9kdWxlIGxpYiZzdWJsaWIgZmlyc3QpKSkpIDpjbGpzICh0cnkgKGFuZCAoPSAqdGFyZ2V0KiBcIm5vZGVqc1wiKSAoYm9vbGVhbiAob3IgKGpzL3JlcXVpcmUucmVzb2x2ZSAoc3RyIG1vZHVsZSkpIChqcy9yZXF1aXJlLnJlc29sdmUgKC0+IG1vZHVsZSBsaWImc3VibGliIGZpcnN0KSkpKSkgKGNhdGNoIDpkZWZhdWx0IF8gZmFsc2UpKSkpXG4ifSB7OnN5bSBwYXJzZS10eXBlLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW29wIGVudiBbXyB0c3ltIGZpZWxkcyBwbWFza3MgYm9keSA6YXMgZm9ybV1dKX0sIDpzb3VyY2UgIihkZWZuXG4gcGFyc2UtdHlwZVxuIFtvcCBlbnYgW18gdHN5bSBmaWVsZHMgcG1hc2tzIGJvZHkgOmFzIGZvcm1dXVxuIChsZXRcbiAgW3RcbiAgICg6bmFtZSAocmVzb2x2ZS12YXIgKGRpc3NvYyBlbnYgOmxvY2FscykgdHN5bSkpXG4gICBsb2NhbHNcbiAgIChyZWR1Y2VcbiAgICAoZm5cbiAgICAgW20gZmxkXVxuICAgICAoYXNzb2NcbiAgICAgIG1cbiAgICAgIGZsZFxuICAgICAgezpuYW1lIGZsZCxcbiAgICAgICA6ZmllbGQgdHJ1ZSxcbiAgICAgICA6Y29sdW1uIChnZXQtY29sIGZsZCBlbnYpLFxuICAgICAgIDp1bnN5bmNocm9uaXplZC1tdXRhYmxlICgtPiBmbGQgbWV0YSA6dW5zeW5jaHJvbml6ZWQtbXV0YWJsZSksXG4gICAgICAgOmxpbmUgKGdldC1saW5lIGZsZCBlbnYpLFxuICAgICAgIDp0YWcgKC0+IGZsZCBtZXRhIDp0YWcpLFxuICAgICAgIDptdXRhYmxlICgtPiBmbGQgbWV0YSA6bXV0YWJsZSksXG4gICAgICAgOnZvbGF0aWxlLW11dGFibGUgKC0+IGZsZCBtZXRhIDp2b2xhdGlsZS1tdXRhYmxlKSxcbiAgICAgICA6c2hhZG93IChtIGZsZCksXG4gICAgICAgOmxvY2FsIDpmaWVsZH0pKVxuICAgIHt9XG4gICAgKGlmXG4gICAgICg9IDpkZWZyZWNvcmQgb3ApXG4gICAgIChjb25jYXQgZmllbGRzICdbX19tZXRhIF9fZXh0bWFwIF9faGFzaF0pXG4gICAgIGZpZWxkcykpXG4gICBwcm90b2NvbHNcbiAgICgtPiB0c3ltIG1ldGEgOnByb3RvY29scyldXG4gIChzd2FwIVxuICAgZW52Lypjb21waWxlcipcbiAgIHVwZGF0ZS1pblxuICAgWzpjbGpzLmFuYWx5emVyL25hbWVzcGFjZXMgKC0+IGVudiA6bnMgOm5hbWUpIDpkZWZzIHRzeW1dXG4gICAoZm5cbiAgICBbbV1cbiAgICAobGV0XG4gICAgIFttXG4gICAgICAoYXNzb2NcbiAgICAgICAob3IgbSB7fSlcbiAgICAgICA6bmFtZVxuICAgICAgIHRcbiAgICAgICA6dGFnXG4gICAgICAgJ2Z1bmN0aW9uXG4gICAgICAgOnR5cGVcbiAgICAgICB0cnVlXG4gICAgICAgOm51bS1maWVsZHNcbiAgICAgICAoY291bnQgZmllbGRzKVxuICAgICAgIDpyZWNvcmRcbiAgICAgICAoPSA6ZGVmcmVjb3JkIG9wKSldXG4gICAgIChtZXJnZVxuICAgICAgbVxuICAgICAgKGRpc3NvYyAobWV0YSB0c3ltKSA6cHJvdG9jb2xzKVxuICAgICAgezpwcm90b2NvbHMgcHJvdG9jb2xzfVxuICAgICAgKHNvdXJjZS1pbmZvIHRzeW0gZW52KSkpKSlcbiAgezpjaGlsZHJlbiBbOmJvZHldLFxuICAgOnBtYXNrcyBwbWFza3MsXG4gICA6cHJvdG9jb2xzIChkaXNqIHByb3RvY29scyAnY2xqcy5jb3JlL09iamVjdCksXG4gICA6ZmllbGRzIGZpZWxkcyxcbiAgIDpvcCBvcCxcbiAgIDplbnYgZW52LFxuICAgOnQgdCxcbiAgIDpmb3JtIGZvcm0sXG4gICA6dGFnICdmdW5jdGlvbixcbiAgIDpib2R5IChhbmFseXplIChhc3NvYyBlbnYgOmxvY2FscyBsb2NhbHMpIGJvZHkpfSkpXG4ifSB7OnN5bSBnZXRzLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyBbW20gazAgazFdIFttIGswIGsxIGsyXSBbbSBrMCBrMSBrMiBrM11dfSwgOnNvdXJjZSAiKGRlZm5cbiBnZXRzXG4gKFttIGswIGsxXVxuICAobGV0XG4gICBbbSAoZ2V0IG0gazAgU0VOVElORUwpXVxuICAgKHdoZW4tbm90IChpZGVudGljYWw/IG0gU0VOVElORUwpIChnZXQgbSBrMSkpKSlcbiAoW20gazAgazEgazJdXG4gIChsZXRcbiAgIFttIChnZXQgbSBrMCBTRU5USU5FTCldXG4gICAod2hlbi1ub3RcbiAgICAoaWRlbnRpY2FsPyBtIFNFTlRJTkVMKVxuICAgIChsZXRcbiAgICAgW20gKGdldCBtIGsxIFNFTlRJTkVMKV1cbiAgICAgKHdoZW4tbm90IChpZGVudGljYWw/IG0gU0VOVElORUwpIChnZXQgbSBrMikpKSkpKVxuIChbbSBrMCBrMSBrMiBrM11cbiAgKGxldFxuICAgW20gKGdldCBtIGswIFNFTlRJTkVMKV1cbiAgICh3aGVuLW5vdFxuICAgIChpZGVudGljYWw/IG0gU0VOVElORUwpXG4gICAgKGxldFxuICAgICBbbSAoZ2V0IG0gazEgU0VOVElORUwpXVxuICAgICAod2hlbi1ub3RcbiAgICAgIChpZGVudGljYWw/IG0gU0VOVElORUwpXG4gICAgICAobGV0XG4gICAgICAgW20gKGdldCBtIGsyIFNFTlRJTkVMKV1cbiAgICAgICAod2hlbi1ub3QgKGlkZW50aWNhbD8gbSBTRU5USU5FTCkgKGdldCBtIGszKSkpKSkpKSkpXG4ifSB7OnN5bSBjaGVjay1yZW5hbWUtbWFjcm9zLWluZmVycmluZy1taXNzaW5nLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3s6a2V5cyBbbmFtZSByZW5hbWVzXSwgOmFzIGFzdH0gZW52XSl9LCA6c291cmNlICIoZGVmblxuIGNoZWNrLXJlbmFtZS1tYWNyb3MtaW5mZXJyaW5nLW1pc3NpbmdcbiBbezprZXlzIFtuYW1lIHJlbmFtZXNdLCA6YXMgYXN0fSBlbnZdXG4gKGxldFxuICBbbWlzc2luZy1yZW5hbWVzXG4gICAod2hlblxuICAgIChhbmQgKmFuYWx5emUtZGVwcyogKHNlcSByZW5hbWVzKSlcbiAgICAobWlzc2luZy1yZW5hbWVzIHJlbmFtZXMgZW52KSlcbiAgIG1heWJlLW1hY3Jvc1xuICAgKGFwcGx5IGRpc3NvYyByZW5hbWVzIChrZXlzIG1pc3NpbmctcmVuYW1lcykpXG4gICBtaXNzaW5nLXJlbmFtZS1tYWNyb3NcbiAgIChpbmZlcnJlZC1yZW5hbWUtbWFjcm9zIG1pc3NpbmctcmVuYW1lcyBlbnYpXG4gICByZW1vdmUtbWlzc2luZy1yZW5hbWVzXG4gICAoZm4qIFtwMV9fNDI4MzIjXSAoYXBwbHkgZGlzc29jIHAxX180MjgzMiMgKGtleXMgbWlzc2luZy1yZW5hbWVzKSkpXG4gICBhc3QnXG4gICAoLT5cbiAgICBhc3RcbiAgICAodXBkYXRlLWluXG4gICAgIFs6cmVuYW1lLW1hY3Jvc11cbiAgICAgKGZuKlxuICAgICAgW3AxX180MjgzMyNdXG4gICAgICAoLT5cbiAgICAgICBwMV9fNDI4MzMjXG4gICAgICAgKG1lcmdlIG1pc3NpbmctcmVuYW1lLW1hY3JvcylcbiAgICAgICAobWVyZ2UgKGluZmVycmVkLXJlbmFtZS1tYWNyb3MgbWF5YmUtbWFjcm9zIGVudikpKSkpXG4gICAgKHVwZGF0ZS1pbiBbOnJlbmFtZXNdIHJlbW92ZS1taXNzaW5nLXJlbmFtZXMpKV1cbiAgKHN3YXAhXG4gICBlbnYvKmNvbXBpbGVyKlxuICAgKGZuKlxuICAgIFtwMV9fNDI4MzQjXVxuICAgICgtPlxuICAgICBwMV9fNDI4MzQjXG4gICAgICh1cGRhdGUtaW5cbiAgICAgIFs6Y2xqcy5hbmFseXplci9uYW1lc3BhY2VzIG5hbWUgOnJlbmFtZS1tYWNyb3NdXG4gICAgICBtZXJnZVxuICAgICAgKDpyZW5hbWUtbWFjcm9zIGFzdCcpKVxuICAgICAodXBkYXRlLWluXG4gICAgICBbOmNsanMuYW5hbHl6ZXIvbmFtZXNwYWNlcyBuYW1lIDpyZW5hbWVzXVxuICAgICAgcmVtb3ZlLW1pc3NpbmctcmVuYW1lcykpKSlcbiAgYXN0JykpXG4ifSB7OnN5bSAqYWxsb3ctbnMqLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiAqYWxsb3ctbnMqIHRydWUpXG4ifSB7OnN5bSBhbmFseXplLWNvbnN0LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2VudiBmb3JtXSl9LCA6c291cmNlICIoZGVmblxuIGFuYWx5emUtY29uc3RcbiBbZW52IGZvcm1dXG4gKGxldFxuICBbezprZXlzIFt0YWddfSAoYW5hbHl6ZSAoYXNzb2MgZW52IDpxdW90ZWQ/IHRydWUpIGZvcm0pXVxuICB7Om9wIDpjb25zdCxcbiAgIDplbnYgZW52LFxuICAgOmxpdGVyYWw/IHRydWUsXG4gICA6dmFsIGZvcm0sXG4gICA6dGFnIHRhZyxcbiAgIDpmb3JtIGZvcm19KSlcbiJ9IHs6c3ltIG11bmdlLWdvb2ctbW9kdWxlLWxpYiwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgW1tuYW1lXSBbbnMgbmFtZV1dfSwgOnNvdXJjZSAiKGRlZm5cbiBtdW5nZS1nb29nLW1vZHVsZS1saWJcbiAoW25hbWVdXG4gIChzdHJcbiAgIFwiZ29vZyRtb2R1bGUkXCJcbiAgIChtdW5nZVxuICAgIChzdHJpbmcvcmVwbGFjZSAoc3RyIG5hbWUpICNcIlsuXFwvXVwiICM/KDpjbGogXCJcXFxcJFwiIDpjbGpzIFwiJCRcIikpKSkpXG4gKFtucyBuYW1lXSAoc3RyIChtdW5nZSBucykgXCIuXCIgKG11bmdlLWdvb2ctbW9kdWxlLWxpYiBuYW1lKSkpKVxuIn0gezpzeW0gaW5mZXItaW52b2tlLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2VudiB7ZiA6Zm4sIDprZXlzIFthcmdzXSwgOmFzIGV9XSl9LCA6c291cmNlICIoZGVmblxuIGluZmVyLWludm9rZVxuIFtlbnYge2YgOmZuLCA6a2V5cyBbYXJnc10sIDphcyBlfV1cbiAobGV0XG4gIFttZSAoYXNzb2MgKGZpbmQtbWF0Y2hpbmctbWV0aG9kIGYgYXJncykgOm9wIDpmbi1tZXRob2QpXVxuICAoaWYtc29tZVxuICAgW3JldC10YWcgKGluZmVyLXRhZyBlbnYgbWUpXVxuICAgcmV0LXRhZ1xuICAgKGxldFxuICAgIFt7OmtleXMgW2luZm9dfSBmXVxuICAgIChpZi1zb21lXG4gICAgIFtyZXQtdGFnXG4gICAgICAoaWZcbiAgICAgICAob3IgKHRydWU/ICg6Zm4tdmFyIGluZm8pKSAodHJ1ZT8gKDpqcy1mbi12YXIgaW5mbykpKVxuICAgICAgICg6cmV0LXRhZyBpbmZvKVxuICAgICAgICh3aGVuICg9ICdqcyAoOm5zIGluZm8pKSAnanMpKV1cbiAgICAgcmV0LXRhZ1xuICAgICBpbXBsL0FOWV9TWU0pKSkpKVxuIn0gezpzeW0gKmNsanMtc3RhdGljLWZucyosIDptZXRhIHt9LCA6c291cmNlICIoZGVmICpjbGpzLXN0YXRpYy1mbnMqIGZhbHNlKVxuIn0gezpzeW0gYXJyYXktdHlwZXMsIDptZXRhIHt9LCA6c291cmNlICIoZGVmXG4gYXJyYXktdHlwZXNcbiAnI3tib29sZWFuIGZsb2F0cyBsb25ncyBvYmplY3RzIGFycmF5IGRvdWJsZXMgY2hhcnMgaW50cyBzaG9ydHMgYnl0ZXN9KVxuIn0gezpzeW0gKmNoZWNrLWFsaWFzLWR1cGVzKiwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgKmNoZWNrLWFsaWFzLWR1cGVzKiB0cnVlKVxuIn0gezpzeW0gbWFjcm8tbnMtbmFtZSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtuYW1lXSl9LCA6c291cmNlICIoZGVmblxuIG1hY3JvLW5zLW5hbWVcbiBbbmFtZV1cbiAobGV0XG4gIFtuYW1lLXN0ciAoc3RyIG5hbWUpXVxuICAoaWYtbm90XG4gICAjPyg6Y2xqICguZW5kc1dpdGggbmFtZS1zdHIgXCIkbWFjcm9zXCIpIDpjbGpzIChnc3RyaW5nL2VuZHNXaXRoIG5hbWUtc3RyIFwiJG1hY3Jvc1wiKSlcbiAgIChzeW1ib2wgKHN0ciBuYW1lLXN0ciBcIiRtYWNyb3NcIikpXG4gICBuYW1lKSkpXG4ifSB7OnN5bSAqcmVsb2FkLW1hY3JvcyosIDptZXRhIHt9LCA6c291cmNlICIoZGVmICpyZWxvYWQtbWFjcm9zKiBmYWxzZSlcbiJ9IHs6c3ltIGNvbXBpbGVyLW9wdGlvbnMsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbXSl9LCA6c291cmNlICIoZGVmbiBjb21waWxlci1vcHRpb25zIFtdIChnZXQgQGVudi8qY29tcGlsZXIqIDpvcHRpb25zKSlcbiJ9IHs6c3ltIHJlc29sdmUtZXhpc3RpbmctdmFyLCA6bWV0YSB7OmRvYyAiR2l2ZW4gZW52LCBhbiBhbmFseXNpcyBlbnZpcm9ubWVudCwgYW5kIHN5bSwgYSBzeW1ib2wsIHJlc29sdmUgYW4gZXhpc3RpbmcgdmFyLlxuICAgRW1pdHMgYSB3YXJuaW5nIGlmIG5vIHN1Y2ggdmFyIGV4aXN0cy4iLCA6YXJnbGlzdHMgKFtlbnYgc3ltXSl9LCA6c291cmNlICIoZGVmblxuIHJlc29sdmUtZXhpc3RpbmctdmFyXG4gXCJHaXZlbiBlbnYsIGFuIGFuYWx5c2lzIGVudmlyb25tZW50LCBhbmQgc3ltLCBhIHN5bWJvbCwgcmVzb2x2ZSBhbiBleGlzdGluZyB2YXIuXFxuICAgRW1pdHMgYSB3YXJuaW5nIGlmIG5vIHN1Y2ggdmFyIGV4aXN0cy5cIlxuIFtlbnYgc3ltXVxuIChpZi1ub3RcbiAgKC0+IHN5bSBtZXRhIDpjbGpzLmFuYWx5emVyL25vLXJlc29sdmUpXG4gIChyZXNvbHZlLXZhciBlbnYgc3ltIGNvbmZpcm0tdmFyLWV4aXN0cylcbiAgKHJlc29sdmUtdmFyIGVudiBzeW0pKSlcbiJ9IHs6c3ltIHJlcXVpcmVkPywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtucyBlbnZdKX0sIDpzb3VyY2UgIihkZWZuXG4gcmVxdWlyZWQ/XG4gW25zIGVudl1cbiAob3JcbiAgKGNvbnRhaW5zPyAoc2V0ICh2YWxzIChnZXRzIGVudiA6bnMgOnJlcXVpcmVzKSkpIG5zKVxuICAoY29udGFpbnM/IChzZXQgKHZhbHMgKGdldHMgZW52IDpucyA6dXNlcykpKSBucykpKVxuIn0gezpzeW0gbm9kZS1saWtlPywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgW1tdIFtvcHRzXV19LCA6c291cmNlICIoZGVmblxuIG5vZGUtbGlrZT9cbiAoW10gKG5vZGUtbGlrZT8gKGNvbXBpbGVyLW9wdGlvbnMpKSlcbiAoW29wdHNdIChhbmQgKD0gOm5vZGVqcyAoOnRhcmdldCBvcHRzKSkgKGZhbHNlPyAoOm5vZGVqcy1ydCBvcHRzKSkpKSlcbiJ9IHs6c3ltIHBhcnNlLWludm9rZSosIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZW52IFtmICYgYXJncyA6YXMgZm9ybV1dKX0sIDpzb3VyY2UgIihkZWZuXG4gcGFyc2UtaW52b2tlKlxuIFtlbnYgW2YgJiBhcmdzIDphcyBmb3JtXV1cbiAobGV0XG4gIFtlbnZlXG4gICAoYXNzb2MgZW52IDpjb250ZXh0IDpleHByKVxuICAgZmV4cHJcbiAgIChhbmFseXplIGVudmUgZilcbiAgIGFyZ2NcbiAgIChjb3VudCBhcmdzKVxuICAgZm4tdmFyP1xuICAgKG9yICgtPiBmZXhwciA6aW5mbyA6Zm4tdmFyKSAoLT4gZmV4cHIgOmluZm8gOmpzLWZuLXZhcikpXG4gICBrdz9cbiAgICg9ICdjbGpzLmNvcmUvS2V5d29yZCAoOnRhZyBmZXhwcikpXG4gICBjdXItbnNcbiAgICgtPiBlbnYgOm5zIDpuYW1lKVxuICAgSE8taW52b2tlP1xuICAgKGFuZFxuICAgIChib29sZWFuICpjbGpzLXN0YXRpYy1mbnMqKVxuICAgIChub3QgZm4tdmFyPylcbiAgICAobm90IChqcy10YWc/IGYpKVxuICAgIChub3Qga3c/KVxuICAgIChub3QgKGFuYWx5emVkPyBmKSkpXG4gICBiaW5kLWYtZXhwcj9cbiAgIChhbmQgSE8taW52b2tlPyAobm90IChzeW1ib2w/IGYpKSlcbiAgIGJpbmQtYXJncz9cbiAgIChhbmQgSE8taW52b2tlPyAobm90IChhbGwtdmFsdWVzPyBhcmdzKSkpXVxuICAod2hlblxuICAgZm4tdmFyP1xuICAgKGxldFxuICAgIFt7dmFyaWFkaWMgOnZhcmlhZGljPyxcbiAgICAgIDprZXlzIFttYXgtZml4ZWQtYXJpdHkgbWV0aG9kLXBhcmFtcyBuYW1lIG5zIG1hY3JvXX1cbiAgICAgKDppbmZvIGZleHByKV1cbiAgICAod2hlblxuICAgICAoYW5kXG4gICAgICAjPyg6Y2xqcyAobm90IChhbmQgKGdzdHJpbmcvZW5kc1dpdGggKHN0ciBjdXItbnMpIFwiJG1hY3Jvc1wiKSAoc3ltYm9sLWlkZW50aWNhbD8gY3VyLW5zIG5zKSAodHJ1ZT8gbWFjcm8pKSkpXG4gICAgICAoaW52YWxpZC1hcml0eT8gYXJnYyBtZXRob2QtcGFyYW1zIHZhcmlhZGljIG1heC1maXhlZC1hcml0eSkpXG4gICAgICh3YXJuaW5nIDpmbi1hcml0eSBlbnYgezpuYW1lIG5hbWUsIDphcmdjIGFyZ2N9KSkpKVxuICAod2hlblxuICAgKGFuZCBrdz8gKG5vdCAob3IgKD09IDEgYXJnYykgKD09IDIgYXJnYykpKSlcbiAgICh3YXJuaW5nIDpmbi1hcml0eSBlbnYgezpuYW1lIChmaXJzdCBmb3JtKSwgOmFyZ2MgYXJnY30pKVxuICAobGV0XG4gICBbZGVwcmVjYXRlZD9cbiAgICAoLT4gZmV4cHIgOmluZm8gOmRlcHJlY2F0ZWQpXG4gICAgbm8td2Fybj9cbiAgICAoLT4gZm9ybSBtZXRhIDpkZXByZWNhdGlvbi1ub3dhcm4pXVxuICAgKHdoZW5cbiAgICAoYW5kIChib29sZWFuIGRlcHJlY2F0ZWQ/KSAobm90IChib29sZWFuIG5vLXdhcm4/KSkpXG4gICAgKHdhcm5pbmcgOmZuLWRlcHJlY2F0ZWQgZW52IHs6ZmV4cHIgZmV4cHJ9KSkpXG4gICh3aGVuXG4gICAoc29tZT8gKC0+IGZleHByIDppbmZvIDp0eXBlKSlcbiAgICh3YXJuaW5nIDppbnZva2UtY3RvciBlbnYgezpmZXhwciBmZXhwcn0pKVxuICAoaWZcbiAgIChvciBiaW5kLWFyZ3M/IGJpbmQtZi1leHByPylcbiAgIChsZXRcbiAgICBbYXJnLXN5bXNcbiAgICAgKHdoZW4gYmluZC1hcmdzPyAodGFrZSBhcmdjIChyZXBlYXRlZGx5IGdlbnN5bSkpKVxuICAgICBmLXN5bVxuICAgICAod2hlbiBiaW5kLWYtZXhwcj8gKGdlbnN5bSBcImZleHByX19cIikpXG4gICAgIGJpbmRpbmdzXG4gICAgIChjb25kLT5cbiAgICAgIFtdXG4gICAgICBiaW5kLWFyZ3M/XG4gICAgICAoaW50byAoaW50ZXJsZWF2ZSBhcmctc3ltcyBhcmdzKSlcbiAgICAgIGJpbmQtZi1leHByP1xuICAgICAgKGNvbmogZi1zeW0gKGFuYWx5emVkIGYpKSlcbiAgICAgdGFnXG4gICAgICg6dGFnIChtZXRhIGZvcm0pKV1cbiAgICAoYW5hbHl6ZVxuICAgICBlbnZcbiAgICAgKGNsb2p1cmUuY29yZS9zZXF1ZW5jZVxuICAgICAgKGNsb2p1cmUuY29yZS9zZXFcbiAgICAgICAoY2xvanVyZS5jb3JlL2NvbmNhdFxuICAgICAgICAoY2xvanVyZS5jb3JlL2xpc3QgJ2Nsb2p1cmUuY29yZS9sZXQpXG4gICAgICAgIChjbG9qdXJlLmNvcmUvbGlzdFxuICAgICAgICAgKGNsb2p1cmUuY29yZS92ZWNcbiAgICAgICAgICAoY2xvanVyZS5jb3JlL3NlcXVlbmNlXG4gICAgICAgICAgIChjbG9qdXJlLmNvcmUvc2VxIChjbG9qdXJlLmNvcmUvY29uY2F0IGJpbmRpbmdzKSkpKSlcbiAgICAgICAgKGNsb2p1cmUuY29yZS9saXN0XG4gICAgICAgICAod2l0aC1tZXRhXG4gICAgICAgICAgKGNsb2p1cmUuY29yZS9zZXF1ZW5jZVxuICAgICAgICAgICAoY2xvanVyZS5jb3JlL3NlcVxuICAgICAgICAgICAgKGNsb2p1cmUuY29yZS9jb25jYXRcbiAgICAgICAgICAgICAoY2xvanVyZS5jb3JlL2xpc3QgKGFuYWx5emVkIChpZiBiaW5kLWYtZXhwcj8gZi1zeW0gZikpKVxuICAgICAgICAgICAgIChpZiBiaW5kLWFyZ3M/IGFyZy1zeW1zIGFyZ3MpKSkpXG4gICAgICAgICAgezp0YWcgdGFnfSkpKSkpKSlcbiAgIChsZXRcbiAgICBbYW5hLWV4cHJcbiAgICAgKGZuKiBbcDFfXzQyODUwI10gKGFuYWx5emUgZW52ZSBwMV9fNDI4NTAjKSlcbiAgICAgYXJnZXhwcnNcbiAgICAgKG1hcHYgYW5hLWV4cHIgYXJncyldXG4gICAgKGlmXG4gICAgIChhbmRcbiAgICAgIChhbmQgKGtleXdvcmQ/IGYpIChuaWw/IChuYW1lc3BhY2UgZikpKVxuICAgICAgKD09IDEgKGNvdW50IGFyZ3MpKVxuICAgICAgKHJlY29yZC13aXRoLWZpZWxkPyAoOnRhZyAoZmlyc3QgYXJnZXhwcnMpKSAoc3ltYm9sIChuYW1lIGYpKSkpXG4gICAgIChsZXRcbiAgICAgIFtmaWVsZC1hY2Nlc3MtZm9ybSAobGlzdCogKHN5bWJvbCAoc3RyIFwiLi1cIiAobmFtZSBmKSkpIGFyZ3MpXVxuICAgICAgKG5vLXdhcm4gKGFuYWx5emUgZW52IGZpZWxkLWFjY2Vzcy1mb3JtKSkpXG4gICAgIHs6ZW52IGVudixcbiAgICAgIDpvcCA6aW52b2tlLFxuICAgICAgOmZvcm0gZm9ybSxcbiAgICAgIDpmbiBmZXhwcixcbiAgICAgIDphcmdzIGFyZ2V4cHJzLFxuICAgICAgOmNoaWxkcmVuIFs6Zm4gOmFyZ3NdfSkpKSkpXG4ifSB7OnN5bSAqY2hlY2tlZC1hcnJheXMqLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiAqY2hlY2tlZC1hcnJheXMqIGZhbHNlKVxuIn0gezpzeW0gYXN0LWNoaWxkcmVuLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2FzdF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBhc3QtY2hpbGRyZW5cbiBbYXN0XVxuIChtYXBjYXRcbiAgKGZuIFtjXSAobGV0IFtnIChnZXQgYXN0IGMpXSAoY29uZCAodmVjdG9yPyBnKSBnIGcgW2ddKSkpXG4gICg6Y2hpbGRyZW4gYXN0KSkpXG4ifSB7OnN5bSBsb2FkZWQtanMtbnM/LCA6bWV0YSB7OmRvYyAiQ2hlY2sgaWYgYSBKYXZhU2NyaXB0IG5hbWVzcGFjZSBoYXMgYmVlbiBsb2FkZWQuIEphdmFTY3JpcHQgdmFycyBhcmVcbiAgbm90IGN1cnJlbnRseSBjaGVja2VkLiIsIDphcmdsaXN0cyAoW2VudiBwcmVmaXhdKX0sIDpzb3VyY2UgIihkZWZuXG4gbG9hZGVkLWpzLW5zP1xuIFwiQ2hlY2sgaWYgYSBKYXZhU2NyaXB0IG5hbWVzcGFjZSBoYXMgYmVlbiBsb2FkZWQuIEphdmFTY3JpcHQgdmFycyBhcmVcXG4gIG5vdCBjdXJyZW50bHkgY2hlY2tlZC5cIlxuICM/KDpjbGpzIHs6dGFnIGJvb2xlYW59KVxuIFtlbnYgcHJlZml4XVxuICh3aGVuLW5vdFxuICAoZ2V0cyBAZW52Lypjb21waWxlciogOmNsanMuYW5hbHl6ZXIvbmFtZXNwYWNlcyBwcmVmaXgpXG4gIChsZXRcbiAgIFtucyAoOm5zIGVudildXG4gICAob3JcbiAgICAoc29tZT8gKGdldCAoOnJlcXVpcmVzIG5zKSBwcmVmaXgpKVxuICAgIChzb21lPyAoZ2V0ICg6aW1wb3J0cyBucykgcHJlZml4KSkpKSkpXG4ifSB7OnN5bSBhbmFseXplLXZlY3RvciwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtlbnYgZm9ybV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBhbmFseXplLXZlY3RvclxuIFtlbnYgZm9ybV1cbiAobGV0XG4gIFtleHByLWVudlxuICAgKGFzc29jIGVudiA6Y29udGV4dCA6ZXhwcilcbiAgIGl0ZW1zXG4gICAoZGlzYWxsb3dpbmctcmVjdXJcbiAgICAobWFwdiAoZm4qIFtwMV9fNDI4NTUjXSAoYW5hbHl6ZSBleHByLWVudiBwMV9fNDI4NTUjKSkgZm9ybSkpXVxuICAoYW5hbHl6ZS13cmFwLW1ldGFcbiAgIHs6b3AgOnZlY3RvcixcbiAgICA6ZW52IGVudixcbiAgICA6Zm9ybSBmb3JtLFxuICAgIDppdGVtcyBpdGVtcyxcbiAgICA6Y2hpbGRyZW4gWzppdGVtc10sXG4gICAgOnRhZyAnY2xqcy5jb3JlL0lWZWN0b3J9KSkpXG4ifSB7OnN5bSB1bndyYXAtcXVvdGUsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbezprZXlzIFtvcF0sIDphcyBleHByfV0pfSwgOnNvdXJjZSAiKGRlZm5cbiB1bndyYXAtcXVvdGVcbiBbezprZXlzIFtvcF0sIDphcyBleHByfV1cbiAoaWZcbiAgIz8oOmNsaiAoPSBvcCA6cXVvdGUpIDpjbGpzIChrZXl3b3JkLWlkZW50aWNhbD8gb3AgOnF1b3RlKSlcbiAgKDpleHByIGV4cHIpXG4gIGV4cHIpKVxuIn0gezpzeW0gbmFtZXNwYWNlcywgOm1ldGEge30sIDpzb3VyY2UgIihkZWZcbiBuYW1lc3BhY2VzXG4gIz8oOmNsaiAocmVpZnkgY2xvanVyZS5sYW5nLklEZXJlZiAoZGVyZWYgW19dIChpZiAoc29tZT8gZW52Lypjb21waWxlciopICg6Y2xqcy5hbmFseXplci9uYW1lc3BhY2VzIChjbG9qdXJlLmNvcmUvZGVyZWYgZW52Lypjb21waWxlciopKSBkZWZhdWx0LW5hbWVzcGFjZXMpKSkgOmNsanMgKHJlaWZ5IElEZXJlZiAoLWRlcmVmIFtfXSAoaWYgKHNvbWU/IGVudi8qY29tcGlsZXIqKSAoOmNsanMuYW5hbHl6ZXIvbmFtZXNwYWNlcyAoY2xvanVyZS5jb3JlL2RlcmVmIGVudi8qY29tcGlsZXIqKSkgZGVmYXVsdC1uYW1lc3BhY2VzKSkpKSlcbiJ9IHs6c3ltIGVsaWRlLWFuYWx5emVyLW1ldGEsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbbV0pfSwgOnNvdXJjZSAiKGRlZm4gZWxpZGUtYW5hbHl6ZXItbWV0YSBbbV0gKGRpc3NvYyBtIDpjbGpzLmFuYWx5emVyL2FuYWx5emVkKSlcbiJ9IHs6c3ltIGFuYWx5emUtbGV0LWJvZHksIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZW52IGNvbnRleHQgZXhwcnMgcmVjdXItZnJhbWVzIGxvb3AtbGV0c10pfSwgOnNvdXJjZSAiKGRlZm5cbiBhbmFseXplLWxldC1ib2R5XG4gW2VudiBjb250ZXh0IGV4cHJzIHJlY3VyLWZyYW1lcyBsb29wLWxldHNdXG4gKGJpbmRpbmdcbiAgWypyZWN1ci1mcmFtZXMqIHJlY3VyLWZyYW1lcyAqbG9vcC1sZXRzKiBsb29wLWxldHNdXG4gIChhbmFseXplLWxldC1ib2R5KiBlbnYgY29udGV4dCBleHBycykpKVxuIn0gezpzeW0gZXh0ZXJuLXByZSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtzeW0gY3VycmVudC1uc10pfSwgOnNvdXJjZSAiKGRlZm5cbiBleHRlcm4tcHJlXG4gW3N5bSBjdXJyZW50LW5zXVxuIChsZXRcbiAgW3ByZVxuICAgKGludG9cbiAgICAnW09iamVjdF1cbiAgICAoLT4+IChzdHJpbmcvc3BsaXQgKG5hbWUgc3ltKSAjXCJcXC5cIikgKG1hcCBzeW1ib2wpIHZlYykpXVxuICAod2hlbi1ub3RcbiAgIChoYXMtZXh0ZXJuPyBwcmUpXG4gICAoc3dhcCFcbiAgICBlbnYvKmNvbXBpbGVyKlxuICAgIHVwZGF0ZS1pblxuICAgIChpbnRvIFs6Y2xqcy5hbmFseXplci9uYW1lc3BhY2VzIGN1cnJlbnQtbnMgOmV4dGVybnNdIHByZSlcbiAgICBtZXJnZVxuICAgIHt9KSlcbiAgcHJlKSlcbiJ9IHs6c3ltIGdldC1jb2wsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbeCBlbnZdKX0sIDpzb3VyY2UgIihkZWZuIGdldC1jb2wgW3ggZW52XSAob3IgKC0+IHggbWV0YSA6Y29sdW1uKSAoOmNvbHVtbiBlbnYpKSlcbiJ9IHs6c3ltIGJhc2ljLXZhbGlkYXRlLW5zLXNwZWMsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZW52IG1hY3Jvcz8gc3BlY10pfSwgOnNvdXJjZSAiKGRlZm5cbiBiYXNpYy12YWxpZGF0ZS1ucy1zcGVjXG4gW2VudiBtYWNyb3M/IHNwZWNdXG4gKHdoZW4tbm90XG4gIChvciAoc3ltYm9sPyBzcGVjKSAoc3RyaW5nPyBzcGVjKSAoc2VxdWVudGlhbD8gc3BlYykpXG4gICh0aHJvd1xuICAgKGVycm9yXG4gICAgZW52XG4gICAgKHBhcnNlLW5zLWVycm9yLW1zZ1xuICAgICBzcGVjXG4gICAgIFwiT25seSBbbGliLm5zICYgb3B0aW9uc10gYW5kIGxpYi5ucyBzcGVjcyBzdXBwb3J0ZWQgaW4gOnJlcXVpcmUgLyA6cmVxdWlyZS1tYWNyb3NcIikpKSlcbiAod2hlblxuICAoc2VxdWVudGlhbD8gc3BlYylcbiAgKHdoZW4tbm90XG4gICAob3IgKHN5bWJvbD8gKGZpcnN0IHNwZWMpKSAoc3RyaW5nPyAoZmlyc3Qgc3BlYykpKVxuICAgKHRocm93XG4gICAgKGVycm9yXG4gICAgIGVudlxuICAgICAocGFyc2UtbnMtZXJyb3ItbXNnXG4gICAgICBzcGVjXG4gICAgICBcIkxpYnJhcnkgbmFtZSBtdXN0IGJlIHNwZWNpZmllZCBhcyBhIHN5bWJvbCBpbiA6cmVxdWlyZSAvIDpyZXF1aXJlLW1hY3Jvc1wiKSkpKVxuICAod2hlbi1ub3RcbiAgIChvZGQ/IChjb3VudCBzcGVjKSlcbiAgICh0aHJvd1xuICAgIChlcnJvclxuICAgICBlbnZcbiAgICAgKHBhcnNlLW5zLWVycm9yLW1zZ1xuICAgICAgc3BlY1xuICAgICAgXCJPbmx5IDphcyBhbGlhcywgOnJlZmVyIChuYW1lcykgYW5kIDpyZW5hbWUge2Zyb20gdG99IG9wdGlvbnMgc3VwcG9ydGVkIGluIDpyZXF1aXJlXCIpKSkpXG4gICh3aGVuLW5vdFxuICAgKGV2ZXJ5PyAjezphcyA6cmVuYW1lIDpyZWZlcn0gKG1hcCBmaXJzdCAocGFydGl0aW9uIDIgKG5leHQgc3BlYykpKSlcbiAgICh0aHJvd1xuICAgIChlcnJvclxuICAgICBlbnZcbiAgICAgKHBhcnNlLW5zLWVycm9yLW1zZ1xuICAgICAgc3BlY1xuICAgICAgXCJPbmx5IDphcywgOnJlZmVyIGFuZCA6cmVuYW1lIG9wdGlvbnMgc3VwcG9ydGVkIGluIDpyZXF1aXJlIC8gOnJlcXVpcmUtbWFjcm9zXCIpKSkpXG4gICh3aGVuLW5vdFxuICAgKGxldFxuICAgIFtmcyAoZnJlcXVlbmNpZXMgKG5leHQgc3BlYykpXVxuICAgIChhbmQgKDw9IChmcyA6YXMgMCkgMSkgKDw9IChmcyA6cmVmZXIgMCkgMSkpKVxuICAgKHRocm93XG4gICAgKGVycm9yXG4gICAgIGVudlxuICAgICAocGFyc2UtbnMtZXJyb3ItbXNnXG4gICAgICBzcGVjXG4gICAgICBcIkVhY2ggb2YgOmFzIGFuZCA6cmVmZXIgb3B0aW9ucyBtYXkgb25seSBiZSBzcGVjaWZpZWQgb25jZSBpbiA6cmVxdWlyZSAvIDpyZXF1aXJlLW1hY3Jvc1wiKSkpKSkpXG4ifSB7OnN5bSAqY2xqcy13YXJuaW5ncyosIDptZXRhIHt9LCA6c291cmNlICIoZGVmXG4gKmNsanMtd2FybmluZ3MqXG4gezppbnZva2UtY3RvciB0cnVlLFxuICA6ZXh0ZW5kaW5nLWJhc2UtanMtdHlwZSB0cnVlLFxuICA6dW5zdXBwb3J0ZWQtcHJlcHJvY2Vzcy12YWx1ZSB0cnVlLFxuICA6cmVkZWYgdHJ1ZSxcbiAgOmpzLXNoYWRvd2VkLWJ5LWxvY2FsIHRydWUsXG4gIDp1bnN1cHBvcnRlZC1qcy1tb2R1bGUtdHlwZSB0cnVlLFxuICA6aW52YWxpZC1wcm90b2NvbC1zeW1ib2wgdHJ1ZSxcbiAgOnByaXZhdGUtdmFyLWFjY2VzcyB0cnVlLFxuICA6cHJvdG9jb2wtZHVwZWQtbWV0aG9kIHRydWUsXG4gIDptdW5nZWQtbmFtZXNwYWNlIHRydWUsXG4gIDpzaW5nbGUtc2VnbWVudC1uYW1lc3BhY2UgdHJ1ZSxcbiAgOmZuLWFyaXR5IHRydWUsXG4gIDppbmZlci13YXJuaW5nIGZhbHNlLFxuICA6dmFyaWFkaWMtbWF4LWFyaXR5IHRydWUsXG4gIDpwcm90b2NvbC13aXRoLXZhcmlhZGljLW1ldGhvZCB0cnVlLFxuICA6Zm4tZGVwcmVjYXRlZCB0cnVlLFxuICA6dW5kZWNsYXJlZC12YXIgdHJ1ZSxcbiAgOmRlY2xhcmVkLWFyZ2xpc3RzLW1pc21hdGNoIHRydWUsXG4gIDpwcmVhbWJsZS1taXNzaW5nIHRydWUsXG4gIDp1bmRlY2xhcmVkLXByb3RvY29sLXN5bWJvbCB0cnVlLFxuICA6cHJvdG9jb2wtd2l0aC1vdmVyd3JpdGluZy1tZXRob2QgdHJ1ZSxcbiAgOmR5bmFtaWMgdHJ1ZSxcbiAgOmludmFsaWQtYXJyYXktYWNjZXNzIHRydWUsXG4gIDp1bnByb3ZpZGVkIHRydWUsXG4gIDpucy12YXItY2xhc2ggdHJ1ZSxcbiAgOnVuZGVjbGFyZWQtbnMgdHJ1ZSxcbiAgOm5vbi1keW5hbWljLWVhcm11ZmZlZC12YXIgdHJ1ZSxcbiAgOnVuZGVjbGFyZWQtbnMtZm9ybSB0cnVlLFxuICA6aW52YWxpZC1hcml0aG1ldGljIHRydWUsXG4gIDpwcm90b2NvbC1kZXByZWNhdGVkIHRydWUsXG4gIDpmbi12YXIgdHJ1ZSxcbiAgOnByb3RvY29sLWltcGwtcmVjdXItd2l0aC10YXJnZXQgdHJ1ZSxcbiAgOm92ZXJsb2FkLWFyaXR5IHRydWUsXG4gIDpwcm90b2NvbC1tdWx0aXBsZS1pbXBscyB0cnVlLFxuICA6cmVkZWYtaW4tZmlsZSB0cnVlLFxuICA6cHJvdG9jb2wtaW52YWxpZC1tZXRob2QgdHJ1ZSxcbiAgOmV4dGVuZC10eXBlLWludmFsaWQtbWV0aG9kLXNoYXBlIHRydWUsXG4gIDptdWx0aXBsZS12YXJpYWRpYy1vdmVybG9hZHMgdHJ1ZSxcbiAgOnByb3RvY29sLWltcGwtd2l0aC12YXJpYWRpYy1tZXRob2QgdHJ1ZX0pXG4ifSB7OnN5bSBhbGlhcy0+dHlwZSwgOm1ldGEge30sIDpzb3VyY2UgIihkZWZcbiBhbGlhcy0+dHlwZVxuICd7b2JqZWN0IE9iamVjdCxcbiAgIHN0cmluZyBTdHJpbmcsXG4gICBudW1iZXIgTnVtYmVyLFxuICAgYXJyYXkgQXJyYXksXG4gICBmdW5jdGlvbiBGdW5jdGlvbixcbiAgIGJvb2xlYW4gQm9vbGVhbixcbiAgIHN5bWJvbCBTeW1ib2x9KVxuIn0gezpzeW0gYW5hbHl6ZWQ/LCA6bWV0YSB7OmRvYyAiUmV0dXJucyBib29sZWFuIGlmIHRoZSBmb3JtIGhhcyBhbHJlYWR5IGJlZW4gbWFya2VkIGFzIGFuYWx5emVkLiIsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuXG4gYW5hbHl6ZWQ/XG4gXCJSZXR1cm5zIGJvb2xlYW4gaWYgdGhlIGZvcm0gaGFzIGFscmVhZHkgYmVlbiBtYXJrZWQgYXMgYW5hbHl6ZWQuXCJcbiAjPyg6Y2xqcyB7OnRhZyBib29sZWFufSlcbiBbeF1cbiAoYm9vbGVhblxuICAoY29uZFxuICAgKHVuc29ydGVkLW1hcD8geClcbiAgICg6Y2xqcy5hbmFseXplci9hbmFseXplZCB4KVxuICAgOmVsc2VcbiAgICg6Y2xqcy5hbmFseXplci9hbmFseXplZCAobWV0YSB4KSkpKSlcbiJ9IHs6c3ltIGFuYWx5emUtZGVwcywgOm1ldGEgezpkb2MgIkdpdmVuIGEgbGliLCBhIG5hbWVzcGFjZSwgZGVwcywgaXRzIGRlcGVuZGVuY2llcywgZW52LCBhbiBhbmFseXNpcyBlbnZpcm9ubWVudFxuICAgYW5kIG9wdHMsIGNvbXBpbGVyIG9wdGlvbnMgLSBhbmFseXplIGFsbCBvZiB0aGUgZGVwZW5kZW5jaWVzLiBSZXF1aXJlZCB0b1xuICAgY29ycmVjdGx5IGFuYWx5emUgdXNhZ2Ugb2Ygb3RoZXIgbmFtZXNwYWNlcy4iLCA6YXJnbGlzdHMgW1tsaWIgZGVwcyBlbnZdIFtsaWIgZGVwcyBlbnYgb3B0c11dfSwgOnNvdXJjZSAiKGRlZm5cbiBhbmFseXplLWRlcHNcbiBcIkdpdmVuIGEgbGliLCBhIG5hbWVzcGFjZSwgZGVwcywgaXRzIGRlcGVuZGVuY2llcywgZW52LCBhbiBhbmFseXNpcyBlbnZpcm9ubWVudFxcbiAgIGFuZCBvcHRzLCBjb21waWxlciBvcHRpb25zIC0gYW5hbHl6ZSBhbGwgb2YgdGhlIGRlcGVuZGVuY2llcy4gUmVxdWlyZWQgdG9cXG4gICBjb3JyZWN0bHkgYW5hbHl6ZSB1c2FnZSBvZiBvdGhlciBuYW1lc3BhY2VzLlwiXG4gKFtsaWIgZGVwcyBlbnZdXG4gIChhbmFseXplLWRlcHNcbiAgIGxpYlxuICAgZGVwc1xuICAgZW52XG4gICAod2hlbiBlbnYvKmNvbXBpbGVyKiAoOm9wdGlvbnMgQGVudi8qY29tcGlsZXIqKSkpKVxuIChbbGliIGRlcHMgZW52IG9wdHNdXG4gIChsZXRcbiAgIFtjb21waWxlciBAZW52Lypjb21waWxlcipdXG4gICAoYmluZGluZ1xuICAgIFsqY2xqcy1kZXAtc2V0KlxuICAgICAodmFyeS1tZXRhXG4gICAgICAoY29uaiAqY2xqcy1kZXAtc2V0KiBsaWIpXG4gICAgICB1cGRhdGUtaW5cbiAgICAgIFs6ZGVwLXBhdGhdXG4gICAgICBjb25qXG4gICAgICBsaWIpXVxuICAgIChhc3NlcnRcbiAgICAgKGV2ZXJ5P1xuICAgICAgKGZuKiBbcDFfXzQyODI4I10gKG5vdCAoY29udGFpbnM/ICpjbGpzLWRlcC1zZXQqIHAxX180MjgyOCMpKSlcbiAgICAgIGRlcHMpXG4gICAgIChzdHJcbiAgICAgIFwiQ2lyY3VsYXIgZGVwZW5kZW5jeSBkZXRlY3RlZCwgXCJcbiAgICAgIChhcHBseVxuICAgICAgIHN0clxuICAgICAgIChpbnRlcnBvc2VcbiAgICAgICAgXCIgLT4gXCJcbiAgICAgICAgKGNvbmpcbiAgICAgICAgICgtPiAqY2xqcy1kZXAtc2V0KiBtZXRhIDpkZXAtcGF0aClcbiAgICAgICAgIChzb21lICpjbGpzLWRlcC1zZXQqIGRlcHMpKSkpKSlcbiAgICAoZG9zZXFcbiAgICAgW2RlcCBkZXBzXVxuICAgICAod2hlbi1ub3RcbiAgICAgIChvclxuICAgICAgIChzb21lPyAoZ2V0LWluIGNvbXBpbGVyIFs6Y2xqcy5hbmFseXplci9uYW1lc3BhY2VzIGRlcCA6ZGVmc10pKVxuICAgICAgIChub2RlLW1vZHVsZS1kZXA/IGRlcClcbiAgICAgICAoanMtbW9kdWxlLWV4aXN0cz8gKG5hbWUgZGVwKSlcbiAgICAgICAjPyg6Y2xqIChkZXBzL2ZpbmQtY2xhc3NwYXRoLWxpYiBkZXApKSlcbiAgICAgIChsZXRcbiAgICAgICBbaWR4XG4gICAgICAgICg6anMtZGVwZW5kZW5jeS1pbmRleCBjb21waWxlcilcbiAgICAgICAgZGVwXG4gICAgICAgICgtPiBkZXAgbGliJnN1YmxpYiBmaXJzdCldXG4gICAgICAgKGlmXG4gICAgICAgIChjb250YWlucz8gaWR4IChuYW1lIGRlcCkpXG4gICAgICAgIChsZXRcbiAgICAgICAgIFtkZXAtbmFtZSAobmFtZSBkZXApXVxuICAgICAgICAgKHdoZW5cbiAgICAgICAgICAoc3RyaW5nL3N0YXJ0cy13aXRoPyBkZXAtbmFtZSBcImdvb2cuXCIpXG4gICAgICAgICAgIz8oOmNsaiAobGV0IFtqcy1saWIgKGdldCBpZHggZGVwLW5hbWUpIG5zIChleHRlcm5zL2FuYWx5emUtZ29vZy1maWxlICg6ZmlsZSBqcy1saWIpIChzeW1ib2wgZGVwLW5hbWUpKV0gKHN3YXAhIGVudi8qY29tcGlsZXIqIHVwZGF0ZS1pbiBbOmNsanMuYW5hbHl6ZXIvbmFtZXNwYWNlcyBkZXBdIG1lcmdlIG5zKSkpKSlcbiAgICAgICAgIz8oOmNsaiAoaWYtc29tZSBbc3JjIChsb2NhdGUtc3JjIGRlcCldIChhbmFseXplLWZpbGUgc3JjIG9wdHMpICh0aHJvdyAoZXJyb3IgZW52IChlcnJvci1tZXNzYWdlIDp1bmRlY2xhcmVkLW5zIHs6bnMtc3ltIGRlcCwgOmpzLXByb3ZpZGUgKG5hbWUgZGVwKX0pKSkpIDpjbGpzICh0aHJvdyAoZXJyb3IgZW52IChlcnJvci1tZXNzYWdlIDp1bmRlY2xhcmVkLW5zIHs6bnMtc3ltIGRlcCwgOmpzLXByb3ZpZGUgKG5hbWUgZGVwKX0pKSkpKSkpKSkpKSlcbiJ9IHs6c3ltIGFycmF5LXR5cGU/LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3RdKX0sIDpzb3VyY2UgIihkZWZuXG4gYXJyYXktdHlwZT9cbiAjPyg6Y2xqcyB7OnRhZyBib29sZWFufSlcbiBbdF1cbiAoY29uZFxuICAobmlsPyB0KVxuICB0cnVlXG4gICg9ICdjbGotbmlsIHQpXG4gIHRydWVcbiAgKGpzLXRhZz8gdClcbiAgdHJ1ZVxuICAoPSAnYW55IHQpXG4gIHRydWVcbiAgKGNvbnRhaW5zPyBhcnJheS10eXBlcyB0KVxuICB0cnVlXG4gIDplbHNlXG4gIChib29sZWFuXG4gICAod2hlblxuICAgICM/KDpjbGogKHNldD8gdCkgOmNsanMgKGltcGwvY2xqcy1zZXQ/IHQpKVxuICAgIChvciAoY29udGFpbnM/IHQgJ2FueSkgKGNvbnRhaW5zPyB0ICdqcykgKHNvbWUgYXJyYXktdHlwZXMgdCkpKSkpKVxuIn0gezpzeW0gZG90dGVkLXN5bWJvbD8sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbc3ltXSl9LCA6c291cmNlICIoZGVmblxuIGRvdHRlZC1zeW1ib2w/XG4gW3N5bV1cbiAobGV0XG4gIFtzIChzdHIgc3ltKV1cbiAgIz8oOmNsaiAoYW5kICguY29udGFpbnMgcyBcIi5cIikgKG5vdCAoLmNvbnRhaW5zIHMgXCIuLlwiKSkpIDpjbGpzIChhbmQgKGdvb2cuc3RyaW5nL2NvbnRhaW5zIHMgXCIuXCIpIChub3QgKGdvb2cuc3RyaW5nL2NvbnRhaW5zIHMgXCIuLlwiKSkpKSkpXG4ifSB7OnN5bSAqY2xqcy1tYWNyb3MtaXMtY2xhc3NwYXRoKiwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgKmNsanMtbWFjcm9zLWlzLWNsYXNzcGF0aCogdHJ1ZSlcbiJ9IHs6c3ltICphbGxvdy1yZWRlZiosIDptZXRhIHt9LCA6c291cmNlICIoZGVmICphbGxvdy1yZWRlZiogZmFsc2UpXG4ifSB7OnN5bSBhbmFseXplLWZuLW1ldGhvZC1ib2R5LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2VudiBmb3JtIHJlY3VyLWZyYW1lc10pfSwgOnNvdXJjZSAiKGRlZm5cbiBhbmFseXplLWZuLW1ldGhvZC1ib2R5XG4gW2VudiBmb3JtIHJlY3VyLWZyYW1lc11cbiAoYmluZGluZyBbKnJlY3VyLWZyYW1lcyogcmVjdXItZnJhbWVzXSAoYW5hbHl6ZSBlbnYgZm9ybSkpKVxuIn0gezpzeW0gaW5mZXItdHlwZSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtlbnYgezprZXlzIFt0YWddLCA6YXMgYXN0fSBfXSl9LCA6c291cmNlICIoZGVmblxuIGluZmVyLXR5cGVcbiBbZW52IHs6a2V5cyBbdGFnXSwgOmFzIGFzdH0gX11cbiAoaWZcbiAgKG9yIChuaWw/IHRhZykgKD0gJ2Z1bmN0aW9uIHRhZykpXG4gIChpZlxuICAgKD0gOmZuICg6b3AgYXN0KSlcbiAgICh1cGRhdGVcbiAgICBhc3RcbiAgICA6bWV0aG9kc1xuICAgIChmblxuICAgICBbbXNdXG4gICAgIChpbnRvXG4gICAgICBbXVxuICAgICAgKG1hcCAoZm4qIFtwMV9fNDI4NjAjXSAoaW5mZXItdHlwZSBlbnYgcDFfXzQyODYwIyBfKSkpXG4gICAgICBtcykpKVxuICAgKGlmLXNvbWUgW3RhZyAoaW5mZXItdGFnIGVudiBhc3QpXSAoYXNzb2MgYXN0IDp0YWcgdGFnKSBhc3QpKVxuICBhc3QpKVxuIn0gezpzeW0gcGFyc2UtaW1wb3J0LXNwZWMsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZW52IGRlcHMgc3BlY10pfSwgOnNvdXJjZSAiKGRlZm5cbiBwYXJzZS1pbXBvcnQtc3BlY1xuIFtlbnYgZGVwcyBzcGVjXVxuICh3aGVuLW5vdFxuICAob3JcbiAgIChhbmQgKHNlcXVlbnRpYWw/IHNwZWMpIChldmVyeT8gc3ltYm9sPyBzcGVjKSlcbiAgIChhbmQgKHN5bWJvbD8gc3BlYykgKG5pbD8gKG5hbWVzcGFjZSBzcGVjKSkpKVxuICAodGhyb3dcbiAgIChlcnJvclxuICAgIGVudlxuICAgIChwYXJzZS1ucy1lcnJvci1tc2dcbiAgICAgc3BlY1xuICAgICBcIk9ubHkgbGliLm5zLkN0b3Igb3IgW2xpYi5ucyBDdG9yKl0gc3BlYyBzdXBwb3J0ZWQgaW4gOmltcG9ydFwiKSkpKVxuIChsZXRcbiAgW2ltcG9ydC1tYXBcbiAgIChjb25kXG4gICAgKHNlcXVlbnRpYWw/IHNwZWMpXG4gICAgKC0+PlxuICAgICAocmVzdCBzcGVjKVxuICAgICAobWFwXG4gICAgICAoZm4qXG4gICAgICAgW3AxX180MjgzNyNdXG4gICAgICAgKHZlY3RvciBwMV9fNDI4MzcjIChzeW1ib2wgKHN0ciAoZmlyc3Qgc3BlYykgXCIuXCIgcDFfXzQyODM3IykpKSkpXG4gICAgIChpbnRvIHt9KSlcbiAgICAobm90ICg9PSAtMSAoLmluZGV4T2YgKHN0ciBzcGVjKSBcIi5cIikpKVxuICAgIHsoc3ltYm9sIChsYXN0IChzdHJpbmcvc3BsaXQgKHN0ciBzcGVjKSAjXCJcXC5cIikpKSBzcGVjfVxuICAgIDplbHNlXG4gICAge30pXVxuICAoZG9zZXEgW1tfIHNwZWNdIGltcG9ydC1tYXBdIChzd2FwISBkZXBzIGNvbmogc3BlYykpXG4gIHs6aW1wb3J0IGltcG9ydC1tYXAsIDpyZXF1aXJlIGltcG9ydC1tYXB9KSlcbiJ9IHs6c3ltIGNsai1ucy0+Y2xqcy1ucywgOm1ldGEgezpkb2MgIkdpdmVuIGEgc3ltYm9sIHRoYXQgc3RhcnRzIHdpdGggY2xvanVyZSBhcyB0aGUgZmlyc3Qgc2VnbWVudCByZXR1cm4gdGhlXG4gICBzYW1lIHN5bWJvbCB3aXRoIHRoZSBmaXJzdCBzZWdtZW50IHJlcGxhY2VkIHdpdGggY2xqcyIsIDphcmdsaXN0cyAoW3N5bV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBjbGotbnMtPmNsanMtbnNcbiBcIkdpdmVuIGEgc3ltYm9sIHRoYXQgc3RhcnRzIHdpdGggY2xvanVyZSBhcyB0aGUgZmlyc3Qgc2VnbWVudCByZXR1cm4gdGhlXFxuICAgc2FtZSBzeW1ib2wgd2l0aCB0aGUgZmlyc3Qgc2VnbWVudCByZXBsYWNlZCB3aXRoIGNsanNcIlxuIFtzeW1dXG4gKGxldFxuICBbc2VncyAoc3RyaW5nL3NwbGl0IChjbG9qdXJlLmNvcmUvbmFtZSBzeW0pICNcIlxcLlwiKV1cbiAgKGlmXG4gICAoPSBcImNsb2p1cmVcIiAoZmlyc3Qgc2VncykpXG4gICAoc3ltYm9sIChzdHJpbmcvam9pbiBcIi5cIiAoY29ucyBcImNsanNcIiAobmV4dCBzZWdzKSkpKVxuICAgc3ltKSkpXG4ifSB7OnN5bSBjb25zdGFudC12YWx1ZT8sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbezprZXlzIFtvcF0sIDphcyBhc3R9XSl9LCA6c291cmNlICIoZGVmblxuIGNvbnN0YW50LXZhbHVlP1xuIFt7OmtleXMgW29wXSwgOmFzIGFzdH1dXG4gKG9yXG4gICgjezpjb25zdCA6cXVvdGV9IG9wKVxuICAoYW5kXG4gICAoI3s6dmVjdG9yIDpzZXQgOm1hcH0gb3ApXG4gICAoZXZlcnk/IGNvbnN0YW50LXZhbHVlPyAoYXN0LWNoaWxkcmVuIGFzdCkpKSkpXG4ifSB7OnN5bSBkdW1wLXNwZWNzLCA6bWV0YSB7OmRvYyAiRHVtcHMgcmVnaXN0ZXJlZCBzcGVjZWQgdmFycyBmb3IgYSBnaXZlbiBuYW1lc3BhY2UgaW50byB0aGUgY29tcGlsZXJcbiAgZW52aXJvbm1lbnQuIiwgOmFyZ2xpc3RzIChbbnNdKX0sIDpzb3VyY2UgIihkZWZuXG4gZHVtcC1zcGVjc1xuIFwiRHVtcHMgcmVnaXN0ZXJlZCBzcGVjZWQgdmFycyBmb3IgYSBnaXZlbiBuYW1lc3BhY2UgaW50byB0aGUgY29tcGlsZXJcXG4gIGVudmlyb25tZW50LlwiXG4gW25zXVxuIChsZXRcbiAgW3NwZWMtdmFycyAoZ2V0LXNwZWMtdmFycykgbnMtc3RyIChzdHIgbnMpXVxuICAoc3dhcCFcbiAgIGVudi8qY29tcGlsZXIqXG4gICB1cGRhdGUtaW5cbiAgIFs6Y2xqcy5hbmFseXplci9uYW1lc3BhY2VzIG5zXVxuICAgbWVyZ2VcbiAgICh3aGVuLWxldFxuICAgIFtyZWdpc3RyeS1yZWYgKDpyZWdpc3RyeS1yZWYgc3BlYy12YXJzKV1cbiAgICB7OmNsanMuc3BlYy9yZWdpc3RyeS1yZWZcbiAgICAgKGludG9cbiAgICAgIFtdXG4gICAgICAoZmlsdGVyIChmbiBbW2sgX11dICg9IG5zLXN0ciAobmFtZXNwYWNlIGspKSkpXG4gICAgICBAQHJlZ2lzdHJ5LXJlZil9KVxuICAgKHdoZW4tbGV0XG4gICAgW3NwZWNlZC12YXJzICg6c3BlY2VkLXZhcnMgc3BlYy12YXJzKV1cbiAgICB7OmNsanMuc3BlYy9zcGVjZWQtdmFyc1xuICAgICAoaW50b1xuICAgICAgW11cbiAgICAgIChmaWx0ZXJcbiAgICAgICAoZm5cbiAgICAgICAgW3ZdXG4gICAgICAgIChvciAoPSBucy1zdHIgKG5hbWVzcGFjZSB2KSkgKD0gbnMgKC0+IHYgbWV0YSA6ZmRlZi1ucykpKSkpXG4gICAgICBAQHNwZWNlZC12YXJzKX0pKSkpXG4ifSB7OnN5bSAqZm4taW52b2tlLWRpcmVjdCosIDptZXRhIHt9LCA6c291cmNlICIoZGVmICpmbi1pbnZva2UtZGlyZWN0KiBmYWxzZSlcbiJ9IHs6c3ltIHVzZS0+cmVxdWlyZSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtlbnYgW2xpYiAmIGZpbHRlcnMgOmFzIHNwZWNdXSl9LCA6c291cmNlICIoZGVmblxuIHVzZS0+cmVxdWlyZVxuIFtlbnYgW2xpYiAmIGZpbHRlcnMgOmFzIHNwZWNdXVxuICh3aGVuLW5vdFxuICAoYW5kIChzeW1ib2w/IGxpYikgKG9kZD8gKGNvdW50IHNwZWMpKSlcbiAgKHRocm93XG4gICAoZXJyb3JcbiAgICBlbnZcbiAgICAocGFyc2UtbnMtZXJyb3ItbXNnXG4gICAgIHNwZWNcbiAgICAgXCJPbmx5IFtsaWIubnMgOm9ubHkgKG5hbWVzKV0gYW5kIG9wdGlvbmFsbHkgYDpyZW5hbWUge2Zyb20gdG99YCBzcGVjcyBzdXBwb3J0ZWQgaW4gOnVzZSAvIDp1c2UtbWFjcm9zXCIpKSkpXG4gKGxvb3BcbiAgW2ZzIChzZXEgZmlsdGVycykgcmV0IFtsaWJdIGVyciBmYWxzZV1cbiAgKGNvbmRcbiAgICh0cnVlPyBlcnIpXG4gICAodGhyb3dcbiAgICAoZXJyb3JcbiAgICAgZW52XG4gICAgIChwYXJzZS1ucy1lcnJvci1tc2dcbiAgICAgIHNwZWNcbiAgICAgIFwiT25seSBbbGliLm5zIDpvbmx5IChuYW1lcyldIGFuZCBvcHRpb25hbGx5IGA6cmVuYW1lIHtmcm9tIHRvfWAgc3BlY3Mgc3VwcG9ydGVkIGluIDp1c2UgLyA6dXNlLW1hY3Jvc1wiKSkpXG4gICAoc29tZT8gZnMpXG4gICAobGV0XG4gICAgW2t3IChmaXJzdCBmcykgb25seT8gKD0ga3cgOm9ubHkpXVxuICAgIChpZlxuICAgICAob3Igb25seT8gKD0ga3cgOnJlbmFtZSkpXG4gICAgIChpZlxuICAgICAgKHNvbWU/IChzb21lICN7KGlmIG9ubHk/IDpyZWZlciBrdyl9IHJldCkpXG4gICAgICAodGhyb3dcbiAgICAgICAoZXJyb3JcbiAgICAgICAgZW52XG4gICAgICAgIChwYXJzZS1ucy1lcnJvci1tc2dcbiAgICAgICAgIHNwZWNcbiAgICAgICAgIFwiRWFjaCBvZiA6b25seSBhbmQgOnJlbmFtZSBvcHRpb25zIG1heSBvbmx5IGJlIHNwZWNpZmllZCBvbmNlIGluIDp1c2UgLyA6dXNlLW1hY3Jvc1wiKSkpXG4gICAgICAobGV0XG4gICAgICAgW3JlZnMgKHNlY29uZCBmcyldXG4gICAgICAgKGlmLW5vdFxuICAgICAgICAob3JcbiAgICAgICAgIChhbmQgb25seT8gKHNlcXVlbnRpYWw/IHJlZnMpIChldmVyeT8gc3ltYm9sPyByZWZzKSlcbiAgICAgICAgIChhbmRcbiAgICAgICAgICAoPSBrdyA6cmVuYW1lKVxuICAgICAgICAgIChtYXA/IHJlZnMpXG4gICAgICAgICAgKGV2ZXJ5P1xuICAgICAgICAgICAoZm4qIFtwMV9fNDI4MzYjXSAoZXZlcnk/IHN5bWJvbD8gcDFfXzQyODM2IykpXG4gICAgICAgICAgIHJlZnMpKSlcbiAgICAgICAgKHJlY3VyIGZzIHJldCB0cnVlKVxuICAgICAgICAocmVjdXJcbiAgICAgICAgIChubmV4dCBmcylcbiAgICAgICAgIChpbnRvIHJldCBbKGlmIG9ubHk/IDpyZWZlciBrdykgcmVmc10pXG4gICAgICAgICBmYWxzZSkpKSlcbiAgICAgKHJlY3VyIGZzIHJldCB0cnVlKSkpXG4gICA6ZWxzZVxuICAgKGlmIChzb21lPyAoc29tZSAjezpyZWZlcn0gcmV0KSkgcmV0IChyZWN1ciBmcyByZXQgdHJ1ZSkpKSkpXG4ifSB7OnN5bSBpbmZlcnJlZC11c2UtbWFjcm9zLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3VzZS1tYWNyb3MgZW52XSl9LCA6c291cmNlICIoZGVmblxuIGluZmVycmVkLXVzZS1tYWNyb3NcbiBbdXNlLW1hY3JvcyBlbnZdXG4gKGxldFxuICBbY2VudiBAZW52Lypjb21waWxlcipdXG4gIChpbnRvXG4gICB7fVxuICAgKGZpbHRlclxuICAgIChmbiBbW3N5bSBsaWJdXSAobm90IChtaXNzaW5nLXVzZS1tYWNybz8gbGliIHN5bSkpKVxuICAgIHVzZS1tYWNyb3MpKSkpXG4ifSB7OnN5bSBhbmFseXplLXN5bWJvbCwgOm1ldGEgezpkb2MgIkZpbmRzIHRoZSB2YXIgYXNzb2NpYXRlZCB3aXRoIHN5bSIsIDphcmdsaXN0cyAoW2VudiBzeW1dKX0sIDpzb3VyY2UgIihkZWZuXG4gYW5hbHl6ZS1zeW1ib2xcbiBcIkZpbmRzIHRoZSB2YXIgYXNzb2NpYXRlZCB3aXRoIHN5bVwiXG4gW2VudiBzeW1dXG4gKGlmXG4gICg6cXVvdGVkPyBlbnYpXG4gIChkb1xuICAgKHJlZ2lzdGVyLWNvbnN0YW50ISBlbnYgc3ltKVxuICAgKGFuYWx5emUtd3JhcC1tZXRhXG4gICAgezpvcCA6Y29uc3QsXG4gICAgIDp2YWwgc3ltLFxuICAgICA6ZW52IGVudixcbiAgICAgOmZvcm0gc3ltLFxuICAgICA6dGFnICdjbGpzLmNvcmUvU3ltYm9sfSkpXG4gIChsZXRcbiAgIFt7OmtleXMgW2xpbmUgY29sdW1uXX1cbiAgICAobWV0YSBzeW0pXG4gICAgZW52XG4gICAgKGlmLW5vdCAobmlsPyBsaW5lKSAoYXNzb2MgZW52IDpsaW5lIGxpbmUpIGVudilcbiAgICBlbnZcbiAgICAoaWYtbm90IChuaWw/IGNvbHVtbikgKGFzc29jIGVudiA6Y29sdW1uIGNvbHVtbikgZW52KVxuICAgIHJldFxuICAgIHs6ZW52IGVudiwgOmZvcm0gc3ltfVxuICAgIGxjbHNcbiAgICAoOmxvY2FscyBlbnYpXVxuICAgKGlmLXNvbWVcbiAgICBbbGIgKGhhbmRsZS1zeW1ib2wtbG9jYWwgc3ltIChnZXQgbGNscyBzeW0pKV1cbiAgICAobWVyZ2VcbiAgICAgKGFzc29jIHJldCA6b3AgOmxvY2FsIDppbmZvIGxiKVxuICAgICAod2hlblxuICAgICAgKG1hcD8gbGIpXG4gICAgICAoc2VsZWN0LWtleXMgbGIgWzpuYW1lIDpsb2NhbCA6YXJnLWlkIDp2YXJpYWRpYz8gOmluaXRdKSkpXG4gICAgKGxldFxuICAgICBbc3ltLW1ldGFcbiAgICAgIChtZXRhIHN5bSlcbiAgICAgIHN5bS1uc1xuICAgICAgKG5hbWVzcGFjZSBzeW0pXG4gICAgICBjdXItbnNcbiAgICAgIChzdHIgKC0+IGVudiA6bnMgOm5hbWUpKVxuICAgICAgIz9AKDpjbGpzIFtzeW0gKGlmIChhbmQgc3ltLW5zIChub3Q9IHN5bS1ucyBcImNsanMuY29yZVwiKSAoZ3N0cmluZy9lbmRzV2l0aCBjdXItbnMgXCIkbWFjcm9zXCIpIChub3QgKGdzdHJpbmcvZW5kc1dpdGggc3ltLW5zIFwiJG1hY3Jvc1wiKSkgKD0gc3ltLW5zIChzdWJzIGN1ci1ucyAwICgtIChjb3VudCBjdXItbnMpIDcpKSkpIChzeW1ib2wgKHN0ciBzeW0tbnMgXCIkbWFjcm9zXCIpIChuYW1lIHN5bSkpIHN5bSldKVxuICAgICAgaW5mb1xuICAgICAgKGlmLW5vdFxuICAgICAgIChjb250YWlucz8gc3ltLW1ldGEgOmNsanMuYW5hbHl6ZXIvYW5hbHl6ZWQpXG4gICAgICAgKHJlc29sdmUtZXhpc3RpbmctdmFyIGVudiBzeW0pXG4gICAgICAgKHJlc29sdmUtdmFyIGVudiBzeW0pKV1cbiAgICAgKGFzc2VydCAoOm9wIGluZm8pICg6b3AgaW5mbykpXG4gICAgIChkZXN1Z2FyLWRvdHRlZC1leHByXG4gICAgICAoaWYtbm90XG4gICAgICAgKHRydWU/ICg6ZGVmLXZhciBlbnYpKVxuICAgICAgIChtZXJnZVxuICAgICAgICAoYXNzb2MgcmV0IDppbmZvIGluZm8pXG4gICAgICAgIChzZWxlY3Qta2V5cyBpbmZvIFs6b3AgOm5hbWUgOm5zIDp0YWddKVxuICAgICAgICAod2hlbi1sZXRcbiAgICAgICAgIFtjb25zdC1leHByICg6Y29uc3QtZXhwciBpbmZvKV1cbiAgICAgICAgIHs6Y29uc3QtZXhwciBjb25zdC1leHByfSkpXG4gICAgICAgKGxldFxuICAgICAgICBbaW5mbyAocmVzb2x2ZS12YXIgZW52IHN5bSldXG4gICAgICAgIChtZXJnZVxuICAgICAgICAgKGFzc29jIHJldCA6b3AgOnZhciA6aW5mbyBpbmZvKVxuICAgICAgICAgKHNlbGVjdC1rZXlzIGluZm8gWzpvcCA6bmFtZSA6bnMgOnRhZ10pKSkpKSkpKSkpXG4ifSB7OnN5bSBjb25maXJtLXZhci1leGlzdHMsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIFtbZW52IHByZWZpeCBzdWZmaXhdIFtlbnYgcHJlZml4IHN1ZmZpeCBtaXNzaW5nLWZuXV19LCA6c291cmNlICIoZGVmblxuIGNvbmZpcm0tdmFyLWV4aXN0c1xuIChbZW52IHByZWZpeCBzdWZmaXhdXG4gIChsZXRcbiAgIFt3YXJuIChjb25maXJtLXZhci1leGlzdC13YXJuaW5nIGVudiBwcmVmaXggc3VmZml4KV1cbiAgIChjb25maXJtLXZhci1leGlzdHMgZW52IHByZWZpeCBzdWZmaXggd2FybikpKVxuIChbZW52IHByZWZpeCBzdWZmaXggbWlzc2luZy1mbl1cbiAgKGxldFxuICAgW3N1ZnN0clxuICAgIChzdHIgc3VmZml4KVxuICAgIHN1ZmZpeC1zdHJcbiAgICAoaWZcbiAgICAgKGFuZFxuICAgICAgIz8oOmNsaiAobm90PSBcIi4uXCIgc3Vmc3RyKSA6Y2xqcyAobm90IChpZGVudGljYWw/IFwiLi5cIiBzdWZzdHIpKSlcbiAgICAgICM/KDpjbGogKHJlLWZpbmQgI1wiXFwuXCIgc3Vmc3RyKSA6Y2xqcyAoLnRlc3QgI1wiXFwuXCIgc3Vmc3RyKSkpXG4gICAgIChmaXJzdCAoc3RyaW5nL3NwbGl0IHN1ZnN0ciAjXCJcXC5cIikpXG4gICAgIHN1ZmZpeClcbiAgICBzdWZmaXhcbiAgICAoc3ltYm9sIHN1ZmZpeC1zdHIpXVxuICAgKHdoZW5cbiAgICAoYW5kXG4gICAgIChub3QgKGltcGxpY2l0LWltcG9ydD8gZW52IHByZWZpeCBzdWZmaXgpKVxuICAgICAobm90IChsb2FkZWQtanMtbnM/IGVudiBwcmVmaXgpKVxuICAgICAobm90IChhbmQgKD0gJ2NsanMuY29yZSBwcmVmaXgpICg9ICd1bnF1b3RlIHN1ZmZpeCkpKVxuICAgICAobmlsP1xuICAgICAgKGdldHNcbiAgICAgICBAZW52Lypjb21waWxlcipcbiAgICAgICA6Y2xqcy5hbmFseXplci9uYW1lc3BhY2VzXG4gICAgICAgcHJlZml4XG4gICAgICAgOmRlZnNcbiAgICAgICBzdWZmaXgpKVxuICAgICAobm90IChqcy1tb2R1bGUtZXhpc3RzPyBwcmVmaXgpKSlcbiAgICAobWlzc2luZy1mbiBlbnYgcHJlZml4IHN1ZmZpeCkpKSkpXG4ifSB7OnN5bSBhbmFseXplLWtleXdvcmQsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZW52IHN5bV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBhbmFseXplLWtleXdvcmRcbiBbZW52IHN5bV1cbiAocmVnaXN0ZXItY29uc3RhbnQhIGVudiBzeW0pXG4gezpvcCA6Y29uc3QsIDp2YWwgc3ltLCA6ZW52IGVudiwgOmZvcm0gc3ltLCA6dGFnICdjbGpzLmNvcmUvS2V5d29yZH0pXG4ifSB7OnN5bSBhbmFseXplLWxldC1iaW5kaW5ncywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtlbmNsLWVudiBiaW5kaW5ncyBvcF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBhbmFseXplLWxldC1iaW5kaW5nc1xuIFtlbmNsLWVudiBiaW5kaW5ncyBvcF1cbiAoZGlzYWxsb3dpbmctcmVjdXIgKGFuYWx5emUtbGV0LWJpbmRpbmdzKiBlbmNsLWVudiBiaW5kaW5ncyBvcCkpKVxuIn0gezpzeW0gbXVuZ2UtZ2xvYmFsLWV4cG9ydCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtuYW1lXSl9LCA6c291cmNlICIoZGVmblxuIG11bmdlLWdsb2JhbC1leHBvcnRcbiBbbmFtZV1cbiAoc3RyXG4gIFwiZ2xvYmFsJG1vZHVsZSRcIlxuICAobXVuZ2VcbiAgIChzdHJpbmcvcmVwbGFjZSAoc3RyIG5hbWUpICNcIlsuXFwvXVwiICM/KDpjbGogXCJcXFxcJFwiIDpjbGpzIFwiJCRcIikpKSkpXG4ifSB7OnN5bSAqbG9vcC1sZXRzKiwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgKmxvb3AtbGV0cyogKCkpXG4ifSB7OnN5bSAtPnR5cGUtc2V0LCA6bWV0YSB7OmRvYyAiRW5zdXJlcyB0aGF0IGEgdHlwZSB0YWcgaXMgYSBzZXQuIiwgOmFyZ2xpc3RzIChbdF0pfSwgOnNvdXJjZSAiKGRlZm5cbiAtPnR5cGUtc2V0XG4gXCJFbnN1cmVzIHRoYXQgYSB0eXBlIHRhZyBpcyBhIHNldC5cIlxuIFt0XVxuIChpZiAjPyg6Y2xqIChzZXQ/IHQpIDpjbGpzIChpbXBsL2NsanMtc2V0PyB0KSkgdCAje3R9KSlcbiJ9IHs6c3ltIGpzLXRhZywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgW1twcmVdIFtwcmUgdGFnLXR5cGVdIFtwcmUgdGFnLXR5cGUgZXh0ZXJuc10gW3ByZSB0YWctdHlwZSBleHRlcm5zIHRvcF1dfSwgOnNvdXJjZSAiKGRlZm5cbiBqcy10YWdcbiAoW3ByZV0gKGpzLXRhZyBwcmUgOnRhZykpXG4gKFtwcmUgdGFnLXR5cGVdIChqcy10YWcgcHJlIHRhZy10eXBlIChnZXQtZXh0ZXJucykpKVxuIChbcHJlIHRhZy10eXBlIGV4dGVybnNdIChqcy10YWcgcHJlIHRhZy10eXBlIGV4dGVybnMgZXh0ZXJucykpXG4gKFtwcmUgdGFnLXR5cGUgZXh0ZXJucyB0b3BdXG4gICh3aGVuLWxldFxuICAgW1twIGV4dGVybnMnIDphcyBtZV0gKGZpbmQgZXh0ZXJucyAoZmlyc3QgcHJlKSldXG4gICAobGV0XG4gICAgW3RhZyAoLT4gcCBtZXRhIHRhZy10eXBlKV1cbiAgICAoaWZcbiAgICAgKD0gKGNvdW50IHByZSkgMSlcbiAgICAgKHdoZW4gdGFnIChzeW1ib2wgXCJqc1wiIChzdHIgKGFsaWFzLT50eXBlIHRhZyB0YWcpKSkpXG4gICAgIChvclxuICAgICAgKGpzLXRhZyAobmV4dCBwcmUpIHRhZy10eXBlIGV4dGVybnMnIHRvcClcbiAgICAgIChqcy10YWdcbiAgICAgICAoaW50byAnW3Byb3RvdHlwZV0gKG5leHQgcHJlKSlcbiAgICAgICB0YWctdHlwZVxuICAgICAgIChnZXQgdG9wIHRhZylcbiAgICAgICB0b3ApKSkpKSkpXG4ifSB7OnN5bSBqcy1yZXNlcnZlZCwgOm1ldGEge30sIDpzb3VyY2UgIihkZWZcbiBqcy1yZXNlcnZlZFxuICN7XCJ0eXBlb2ZcIlxuICAgXCJmbG9hdFwiXG4gICBcImltcGxlbWVudHNcIlxuICAgXCJlbHNlXCJcbiAgIFwiYm9vbGVhblwiXG4gICBcImFic3RyYWN0XCJcbiAgIFwiaW50XCJcbiAgIFwic3RhdGljXCJcbiAgIFwicGFja2FnZVwiXG4gICBcInRoaXNcIlxuICAgXCJhd2FpdFwiXG4gICBcInlpZWxkXCJcbiAgIFwiaW50ZXJmYWNlXCJcbiAgIFwidm9pZFwiXG4gICBcImRlbGV0ZVwiXG4gICBcImNsYXNzXCJcbiAgIFwiZXhwb3J0XCJcbiAgIFwidmFyXCJcbiAgIFwidHJ5XCJcbiAgIFwibG9uZ1wiXG4gICBcIm51bGxcIlxuICAgXCJyZXR1cm5cIlxuICAgXCJtZXRob2RzXCJcbiAgIFwibmF0aXZlXCJcbiAgIFwicHJpdmF0ZVwiXG4gICBcIm5ld1wiXG4gICBcImZvclwiXG4gICBcImNhdGNoXCJcbiAgIFwiZXh0ZW5kc1wiXG4gICBcInNob3J0XCJcbiAgIFwicHJvdGVjdGVkXCJcbiAgIFwidGhyb3dzXCJcbiAgIFwic3luY2hyb25pemVkXCJcbiAgIFwidHJhbnNpZW50XCJcbiAgIFwic3VwZXJcIlxuICAgXCJpZlwiXG4gICBcImxldFwiXG4gICBcImltcG9ydFwiXG4gICBcImNoYXJcIlxuICAgXCJzd2l0Y2hcIlxuICAgXCJjb25zdFwiXG4gICBcImNhc2VcIlxuICAgXCJicmVha1wiXG4gICBcInZvbGF0aWxlXCJcbiAgIFwiZnVuY3Rpb25cIlxuICAgXCJjb250aW51ZVwiXG4gICBcImZpbmFsXCJcbiAgIFwiZG9cIlxuICAgXCJkb3VibGVcIlxuICAgXCJ3aGlsZVwiXG4gICBcInB1YmxpY1wiXG4gICBcImFyZ3VtZW50c1wiXG4gICBcImRlYnVnZ2VyXCJcbiAgIFwid2l0aFwiXG4gICBcImluc3RhbmNlb2ZcIlxuICAgXCJkZWZhdWx0XCJcbiAgIFwidGhyb3dcIlxuICAgXCJnb3RvXCJcbiAgIFwiZmluYWxseVwiXG4gICBcImJ5dGVcIlxuICAgXCJjb25zdHJ1Y3RvclwiXG4gICBcImluXCJcbiAgIFwiZW51bVwifSlcbiJ9IHs6c3ltICpsb2FkLXRlc3RzKiwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgKmxvYWQtdGVzdHMqIHRydWUpXG4ifSB7OnN5bSBjaGVjay11c2UtbWFjcm9zLWluZmVycmluZy1taXNzaW5nLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3s6a2V5cyBbbmFtZSB1c2VzIHVzZS1tYWNyb3NdLCA6YXMgYXN0fSBlbnZdKX0sIDpzb3VyY2UgIihkZWZuXG4gY2hlY2stdXNlLW1hY3Jvcy1pbmZlcnJpbmctbWlzc2luZ1xuIFt7OmtleXMgW25hbWUgdXNlcyB1c2UtbWFjcm9zXSwgOmFzIGFzdH0gZW52XVxuIChsZXRcbiAgW21pc3NpbmctdXNlc1xuICAgKHdoZW4gKGFuZCAqYW5hbHl6ZS1kZXBzKiAoc2VxIHVzZXMpKSAobWlzc2luZy11c2VzIHVzZXMgZW52KSlcbiAgIG1heWJlLW1hY3Jvc1xuICAgKGFwcGx5IGRpc3NvYyB1c2VzIChrZXlzIG1pc3NpbmctdXNlcykpXG4gICByZW1vdmUtbWlzc2luZy11c2VzXG4gICAoZm4qIFtwMV9fNDI4MjkjXSAoYXBwbHkgZGlzc29jIHAxX180MjgyOSMgKGtleXMgbWlzc2luZy11c2VzKSkpXG4gICBhc3QnXG4gICAoLT5cbiAgICBhc3RcbiAgICAodXBkYXRlLWluXG4gICAgIFs6dXNlLW1hY3Jvc11cbiAgICAgKGZuKlxuICAgICAgW3AxX180MjgzMCNdXG4gICAgICAoLT5cbiAgICAgICBwMV9fNDI4MzAjXG4gICAgICAgKG1lcmdlIChjaGVjay11c2UtbWFjcm9zIHVzZS1tYWNyb3MgbWlzc2luZy11c2VzIGVudikpXG4gICAgICAgKG1lcmdlIChpbmZlcnJlZC11c2UtbWFjcm9zIG1heWJlLW1hY3JvcyBlbnYpKSkpKVxuICAgICh1cGRhdGUtaW4gWzp1c2VzXSByZW1vdmUtbWlzc2luZy11c2VzKSldXG4gIChzd2FwIVxuICAgZW52Lypjb21waWxlcipcbiAgIChmbipcbiAgICBbcDFfXzQyODMxI11cbiAgICAoLT5cbiAgICAgcDFfXzQyODMxI1xuICAgICAodXBkYXRlLWluXG4gICAgICBbOmNsanMuYW5hbHl6ZXIvbmFtZXNwYWNlcyBuYW1lIDp1c2UtbWFjcm9zXVxuICAgICAgbWVyZ2VcbiAgICAgICg6dXNlLW1hY3JvcyBhc3QnKSlcbiAgICAgKHVwZGF0ZS1pblxuICAgICAgWzpjbGpzLmFuYWx5emVyL25hbWVzcGFjZXMgbmFtZSA6dXNlc11cbiAgICAgIHJlbW92ZS1taXNzaW5nLXVzZXMpKSkpXG4gIGFzdCcpKVxuIn0gezpzeW0gY2Fub25pY2FsaXplLXR5cGUsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbdF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBjYW5vbmljYWxpemUtdHlwZVxuIFt0XVxuIFwiRW5zdXJlcyB0aGF0IGEgdHlwZSB0YWcgaXMgZWl0aGVyIG5pbCwgYSB0eXBlIHN5bWJvbCwgb3IgYSBub24tc2luZ2xldG9uXFxuICBzZXQgb2YgdHlwZSBzeW1ib2xzLCBhYnNvcmJpbmcgY2xqLW5pbCBpbnRvIHNlcSBhbmQgYWxsIHR5cGVzIGludG8gYW55LlwiXG4gKGNvbmRcbiAgKHN5bWJvbD8gdClcbiAgdFxuICAoZW1wdHk/IHQpXG4gIG5pbFxuICAoPT0gMSAoY291bnQgdCkpXG4gIChmaXJzdCB0KVxuICAoY29udGFpbnM/IHQgJ2FueSlcbiAgJ2FueVxuICAoY29udGFpbnM/IHQgJ3NlcSlcbiAgKGxldCBbcmVzIChkaXNqIHQgJ2Nsai1uaWwpXSAoaWYgKD09IDEgKGNvdW50IHJlcykpICdzZXEgcmVzKSlcbiAgOmVsc2VcbiAgdCkpXG4ifSB7OnN5bSBtYWNyb2V4cGFuZC0xKiwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtlbnYgZm9ybV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBtYWNyb2V4cGFuZC0xKlxuIFtlbnYgZm9ybV1cbiAobGV0XG4gIFtvcCAoZmlyc3QgZm9ybSldXG4gIChpZlxuICAgKGNvbnRhaW5zPyBzcGVjaWFscyBvcClcbiAgIChkb1xuICAgICh3aGVuXG4gICAgICg9ICducyBvcClcbiAgICAgKGRvLW1hY3JvZXhwYW5kLWNoZWNrXG4gICAgICBlbnZcbiAgICAgIGZvcm1cbiAgICAgIChnZXQtZXhwYW5kZXIgJ2NsanMuY29yZS9ucy1zcGVjaWFsLWZvcm0gZW52KSkpXG4gICAgZm9ybSlcbiAgIChpZi1zb21lXG4gICAgW21hYy12YXIgKHdoZW4gKHN5bWJvbD8gb3ApIChnZXQtZXhwYW5kZXIgb3AgZW52KSldXG4gICAgKCM/QCg6Y2xqIFtiaW5kaW5nIFsqbnMqIChjcmVhdGUtbnMgKmNsanMtbnMqKV1dIDpjbGpzIFtkb10pXG4gICAgIChkby1tYWNyb2V4cGFuZC1jaGVjayBlbnYgZm9ybSBtYWMtdmFyKVxuICAgICAobGV0XG4gICAgICBbZm9ybSdcbiAgICAgICAodHJ5XG4gICAgICAgICM/KDpjbGpzIChjaGVjay1tYWNyby1hcml0eSBtYWMtdmFyIGZvcm0pKVxuICAgICAgICAoYXBwbHkgQG1hYy12YXIgZm9ybSBlbnYgKHJlc3QgZm9ybSkpXG4gICAgICAgICM/KDpjbGogKGNhdGNoIEFyaXR5RXhjZXB0aW9uIGUgKHRocm93IChBcml0eUV4Y2VwdGlvbi4gKC0gKC5hY3R1YWwgZSkgMikgKC5uYW1lIGUpKSkpKVxuICAgICAgICAoY2F0Y2hcbiAgICAgICAgICM/KDpjbGogVGhyb3dhYmxlIDpjbGpzIDpkZWZhdWx0KVxuICAgICAgICAgZVxuICAgICAgICAgKHRocm93XG4gICAgICAgICAgKGV4LWluZm9cbiAgICAgICAgICAgbmlsXG4gICAgICAgICAgIChlcnJvci1kYXRhIGVudiA6bWFjcm9leHBhbnNpb24gKHZhci0+c3ltIG1hYy12YXIpKVxuICAgICAgICAgICBlKSkpKV1cbiAgICAgIChpZlxuICAgICAgICM/KDpjbGogKHNlcT8gZm9ybScpIDpjbGpzIChpbXBsL2NsanMtc2VxPyBmb3JtJykpXG4gICAgICAgKGxldFxuICAgICAgICBbc3ltJyAoZmlyc3QgZm9ybScpIHN5bSAoZmlyc3QgZm9ybSldXG4gICAgICAgIChpZlxuICAgICAgICAgIz8oOmNsaiAoPSBzeW0nIChxdW90ZSBqcyopKSA6Y2xqcyAoc3ltYm9sLWlkZW50aWNhbD8gc3ltJyBpbXBsL0pTX1NUQVJfU1lNKSlcbiAgICAgICAgIChsZXRcbiAgICAgICAgICBbc3ltXG4gICAgICAgICAgIChpZlxuICAgICAgICAgICAgKHNvbWU/IChuYW1lc3BhY2Ugc3ltKSlcbiAgICAgICAgICAgIHN5bVxuICAgICAgICAgICAgKHN5bWJvbCBcImNsanMuY29yZVwiIChzdHIgc3ltKSkpXG4gICAgICAgICAgIGpzLW9wXG4gICAgICAgICAgIHs6anMtb3Agc3ltfVxuICAgICAgICAgICBudW1lcmljXG4gICAgICAgICAgICM/KDpjbGogKC0+IG1hYy12YXIgbWV0YSA6Y2xqcy5hbmFseXplci9udW1lcmljKSA6Y2xqcyAobGV0IFttYWMtdmFyLW5zIChzeW1ib2wgKG5hbWVzcGFjZSAoLi1zeW0gbWFjLXZhcikpKSBtYWMtdmFyLW5hbWUgKHN5bWJvbCAobmFtZSAoLi1zeW0gbWFjLXZhcikpKV0gKGdldC1pbiAoY2xvanVyZS5jb3JlL2RlcmVmIGVudi8qY29tcGlsZXIqKSBbOmNsanMuYW5hbHl6ZXIvbmFtZXNwYWNlcyBtYWMtdmFyLW5zIDpkZWZzIG1hYy12YXItbmFtZSA6bWV0YSA6Y2xqcy5hbmFseXplci9udW1lcmljXSkpKVxuICAgICAgICAgICBqcy1vcFxuICAgICAgICAgICAoaWYgKHRydWU/IG51bWVyaWMpIChhc3NvYyBqcy1vcCA6bnVtZXJpYyB0cnVlKSBqcy1vcCldXG4gICAgICAgICAgKHZhcnktbWV0YSBmb3JtJyBtZXJnZSBqcy1vcCkpXG4gICAgICAgICBmb3JtJykpXG4gICAgICAgZm9ybScpKSlcbiAgICAoaWZcbiAgICAgKHN5bWJvbD8gb3ApXG4gICAgIChsZXRcbiAgICAgIFtvcG5hbWUgKHN0ciBvcCldXG4gICAgICAoY29uZFxuICAgICAgIChpZGVudGljYWw/IFxcLiAjPyg6Y2xqIChmaXJzdCBvcG5hbWUpIDpjbGpzICguY2hhckF0IG9wbmFtZSAwKSkpXG4gICAgICAgKGxldFxuICAgICAgICBbW3RhcmdldCAmIGFyZ3NdIChuZXh0IGZvcm0pXVxuICAgICAgICAod2l0aC1tZXRhXG4gICAgICAgICAobGlzdCpcbiAgICAgICAgICAjPyg6Y2xqIChxdW90ZSAuKSA6Y2xqcyBpbXBsL0RPVF9TWU0pXG4gICAgICAgICAgdGFyZ2V0XG4gICAgICAgICAgKHN5bWJvbCAoc3VicyBvcG5hbWUgMSkpXG4gICAgICAgICAgYXJncylcbiAgICAgICAgIChtZXRhIGZvcm0pKSlcbiAgICAgICAoaWRlbnRpY2FsP1xuICAgICAgICBcXC5cbiAgICAgICAgIz8oOmNsaiAobGFzdCBvcG5hbWUpIDpjbGpzICguY2hhckF0IG9wbmFtZSAoZGVjICguIG9wbmFtZSAtbGVuZ3RoKSkpKSlcbiAgICAgICAod2l0aC1tZXRhXG4gICAgICAgIChsaXN0KlxuICAgICAgICAgIz8oOmNsaiAocXVvdGUgbmV3KSA6Y2xqcyBpbXBsL05FV19TWU0pXG4gICAgICAgICAoc3ltYm9sIChzdWJzIG9wbmFtZSAwIChkZWMgKGNvdW50IG9wbmFtZSkpKSlcbiAgICAgICAgIChuZXh0IGZvcm0pKVxuICAgICAgICAobWV0YSBmb3JtKSlcbiAgICAgICA6ZWxzZVxuICAgICAgIGZvcm0pKVxuICAgICBmb3JtKSkpKSlcbiJ9IHs6c3ltIGNoZWNrLXVzZS1tYWNyb3MsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIFtbdXNlLW1hY3JvcyBlbnZdIFt1c2UtbWFjcm9zIG1pc3NpbmctdXNlcyBlbnZdXX0sIDpzb3VyY2UgIihkZWZuXG4gY2hlY2stdXNlLW1hY3Jvc1xuIChbdXNlLW1hY3JvcyBlbnZdIChjaGVjay11c2UtbWFjcm9zIHVzZS1tYWNyb3MgbmlsIGVudikpXG4gKFt1c2UtbWFjcm9zIG1pc3NpbmctdXNlcyBlbnZdXG4gIChsZXRcbiAgIFtjZW52IEBlbnYvKmNvbXBpbGVyKl1cbiAgIChkb3NlcVxuICAgIFtbc3ltIGxpYl0gdXNlLW1hY3Jvc11cbiAgICAod2hlblxuICAgICAobWlzc2luZy11c2UtbWFjcm8/IGxpYiBzeW0pXG4gICAgICh0aHJvd1xuICAgICAgKGVycm9yXG4gICAgICAgZW52XG4gICAgICAgKGVycm9yLW1lc3NhZ2VcbiAgICAgICAgOnVuZGVjbGFyZWQtbnMtZm9ybVxuICAgICAgICB7OnR5cGUgXCJtYWNyb1wiLCA6bGliIGxpYiwgOnN5bSBzeW19KSkpKSlcbiAgIChjaGVjay11c2VzIChtaXNzaW5nLXVzZS1tYWNyb3MgbWlzc2luZy11c2VzIGVudikgZW52KVxuICAgKGluZmVycmVkLXVzZS1tYWNyb3MgbWlzc2luZy11c2VzIGVudikpKSlcbiJ9IHs6c3ltIGdldC1leHBhbmRlciwgOm1ldGEgezpkb2MgIkdpdmVuIGEgc3ltLCBhIHN5bWJvbCBpZGVudGlmeWluZyBhIG1hY3JvLCBhbmQgZW52LCBhbiBhbmFseXNpcyBlbnZpcm9ubWVudFxuICAgcmV0dXJuIHRoZSBjb3JyZXNwb25kaW5nIENsb2p1cmUgbWFjcm9leHBhbmRlci4iLCA6YXJnbGlzdHMgKFtzeW0gZW52XSl9LCA6c291cmNlICIoZGVmblxuIGdldC1leHBhbmRlclxuIFwiR2l2ZW4gYSBzeW0sIGEgc3ltYm9sIGlkZW50aWZ5aW5nIGEgbWFjcm8sIGFuZCBlbnYsIGFuIGFuYWx5c2lzIGVudmlyb25tZW50XFxuICAgcmV0dXJuIHRoZSBjb3JyZXNwb25kaW5nIENsb2p1cmUgbWFjcm9leHBhbmRlci5cIlxuIFtzeW0gZW52XVxuIChsZXRcbiAgW212YXIgKGdldC1leHBhbmRlciogc3ltIGVudildXG4gICh3aGVuXG4gICAoYW5kIChzb21lPyBtdmFyKSAjPyg6Y2xqICguaXNNYWNybyBtdmFyKSA6Y2xqcyAoLmlzTWFjcm8gbXZhcikpKVxuICAgbXZhcikpKVxuIn0gezpzeW0gYW5hbHl6ZS1qcy1zdGFyLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2VudiBqc2Zvcm0gYXJncyBmb3JtXSl9LCA6c291cmNlICIoZGVmblxuIGFuYWx5emUtanMtc3RhclxuIFtlbnYganNmb3JtIGFyZ3MgZm9ybV1cbiAoZGlzYWxsb3dpbmctcmVjdXIgKGFuYWx5emUtanMtc3RhciogZW52IGpzZm9ybSBhcmdzIGZvcm0pKSlcbiJ9IHs6c3ltIGpzLXN0YXItaW50ZXJwLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2VudiBzXSl9LCA6c291cmNlICIoZGVmblxuIGpzLXN0YXItaW50ZXJwXG4gW2VudiBzXVxuIChsZXRcbiAgW2lkeCAoLmluZGV4T2YgcyBcIn57XCIpXVxuICAoaWZcbiAgICg9PSAtMSBpZHgpXG4gICAobGlzdCBzKVxuICAgKGxldFxuICAgIFtlbmRcbiAgICAgKC5pbmRleE9mIHMgXCJ9XCIgaWR4KVxuICAgICBpbm5lclxuICAgICAoOm5hbWVcbiAgICAgIChyZXNvbHZlLWV4aXN0aW5nLXZhciBlbnYgKHN5bWJvbCAoc3VicyBzICgrIDIgaWR4KSBlbmQpKSkpXVxuICAgIChsYXp5LXNlcVxuICAgICAoY29uc1xuICAgICAgKHN1YnMgcyAwIGlkeClcbiAgICAgIChjb25zIGlubmVyIChqcy1zdGFyLWludGVycCBlbnYgKHN1YnMgcyAoaW5jIGVuZCkpKSkpKSkpKSlcbiJ9IHs6c3ltICpyZWN1ci1mcmFtZXMqLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiAqcmVjdXItZnJhbWVzKiBuaWwpXG4ifSB7OnN5bSBhbmFseXplLWZuLW1ldGhvZHMtcGFzczIqLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW21lbnYgbG9jYWxzIHR5cGUgbWV0aHNdKX0sIDpzb3VyY2UgIihkZWZuXG4gYW5hbHl6ZS1mbi1tZXRob2RzLXBhc3MyKlxuIFttZW52IGxvY2FscyB0eXBlIG1ldGhzXVxuIChtYXB2XG4gIChmbipcbiAgIFtwMV9fNDI4MjIjXVxuICAgKGFuYWx5emUtZm4tbWV0aG9kIG1lbnYgbG9jYWxzIHAxX180MjgyMiMgdHlwZSB0cnVlKSlcbiAgbWV0aHMpKVxuIn0gezpzeW0gbWFjcm9leHBhbmQtMSwgOm1ldGEgezpkb2MgIkdpdmVuIGEgZW52LCBhbiBhbmFseXNpcyBlbnZpcm9ubWVudCwgYW5kIGZvcm0sIGEgQ2xvanVyZVNjcmlwdCBmb3JtLFxuICAgbWFjcm9leHBhbmQgdGhlIGZvcm0gb25jZS4iLCA6YXJnbGlzdHMgKFtlbnYgZm9ybV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBtYWNyb2V4cGFuZC0xXG4gXCJHaXZlbiBhIGVudiwgYW4gYW5hbHlzaXMgZW52aXJvbm1lbnQsIGFuZCBmb3JtLCBhIENsb2p1cmVTY3JpcHQgZm9ybSxcXG4gICBtYWNyb2V4cGFuZCB0aGUgZm9ybSBvbmNlLlwiXG4gW2VudiBmb3JtXVxuICh3cmFwcGluZy1lcnJvcnMgZW52IChtYWNyb2V4cGFuZC0xKiBlbnYgZm9ybSkpKVxuIn0gezpzeW0gcmVzb2x2ZS1tYWNyby12YXIsIDptZXRhIHs6ZG9jICJHaXZlbiBlbnYsIGFuIGFuYWx5c2lzIGVudmlyb25tZW50LCBhbmQgc3ltLCBhIHN5bWJvbCwgcmVzb2x2ZSBhIG1hY3JvLiIsIDphcmdsaXN0cyAoW2VudiBzeW1dKX0sIDpzb3VyY2UgIihkZWZuXG4gcmVzb2x2ZS1tYWNyby12YXJcbiBcIkdpdmVuIGVudiwgYW4gYW5hbHlzaXMgZW52aXJvbm1lbnQsIGFuZCBzeW0sIGEgc3ltYm9sLCByZXNvbHZlIGEgbWFjcm8uXCJcbiBbZW52IHN5bV1cbiAobGV0XG4gIFtuc1xuICAgKC0+IGVudiA6bnMgOm5hbWUpXG4gICBuYW1lc3BhY2VzXG4gICAoZ2V0IEBlbnYvKmNvbXBpbGVyKiA6Y2xqcy5hbmFseXplci9uYW1lc3BhY2VzKV1cbiAgKGNvbmRcbiAgIChzb21lPyAobmFtZXNwYWNlIHN5bSkpXG4gICAobGV0XG4gICAgW25zXG4gICAgIChuYW1lc3BhY2Ugc3ltKVxuICAgICBuc1xuICAgICAoaWYgKD0gXCJjbG9qdXJlLmNvcmVcIiBucykgXCJjbGpzLmNvcmVcIiBucylcbiAgICAgZnVsbC1uc1xuICAgICAocmVzb2x2ZS1tYWNyby1ucy1hbGlhcyBlbnYgbnMpXG4gICAgICM/QCg6Y2xqcyBbZnVsbC1ucyAoaWYtbm90IChzdHJpbmcvZW5kcy13aXRoPyAoc3RyIGZ1bGwtbnMpIFwiJG1hY3Jvc1wiKSAoc3ltYm9sIChzdHIgZnVsbC1ucyBcIiRtYWNyb3NcIikpIGZ1bGwtbnMpXSldXG4gICAgIz8oOmNsaiAoZ2V0LWluIG5hbWVzcGFjZXMgW2Z1bGwtbnMgOm1hY3JvcyAoc3ltYm9sIChuYW1lIHN5bSkpXSkgOmNsanMgKGdldC1pbiBuYW1lc3BhY2VzIFtmdWxsLW5zIDpkZWZzIChzeW1ib2wgKG5hbWUgc3ltKSldKSkpXG4gICAoc29tZT8gKGdldC1pbiBuYW1lc3BhY2VzIFtucyA6dXNlLW1hY3JvcyBzeW1dKSlcbiAgIChsZXRcbiAgICBbZnVsbC1ucyAoZ2V0LWluIG5hbWVzcGFjZXMgW25zIDp1c2UtbWFjcm9zIHN5bV0pXVxuICAgIChnZXQtaW4gbmFtZXNwYWNlcyBbZnVsbC1ucyA6bWFjcm9zIHN5bV0pKVxuICAgKHNvbWU/IChnZXQtaW4gbmFtZXNwYWNlcyBbbnMgOnJlbmFtZS1tYWNyb3Mgc3ltXSkpXG4gICAobGV0XG4gICAgW3F1YWxpZmllZC1zeW1ib2xcbiAgICAgKGdldC1pbiBuYW1lc3BhY2VzIFtucyA6cmVuYW1lLW1hY3JvcyBzeW1dKVxuICAgICBmdWxsLW5zXG4gICAgIChzeW1ib2wgKG5hbWVzcGFjZSBxdWFsaWZpZWQtc3ltYm9sKSlcbiAgICAgc3ltXG4gICAgIChzeW1ib2wgKG5hbWUgcXVhbGlmaWVkLXN5bWJvbCkpXVxuICAgIChnZXQtaW4gbmFtZXNwYWNlcyBbZnVsbC1ucyA6bWFjcm9zIHN5bV0pKVxuICAgOmVsc2VcbiAgIChsZXRcbiAgICBbbnNcbiAgICAgKGNvbmRcbiAgICAgIChzb21lPyAoZ2V0LWluIG5hbWVzcGFjZXMgW25zIDptYWNyb3Mgc3ltXSkpXG4gICAgICBuc1xuICAgICAgKGNvcmUtbmFtZT8gZW52IHN5bSlcbiAgICAgICM/KDpjbGogKHF1b3RlIGNsanMuY29yZSkgOmNsanMgaW1wbC9DTEpTX0NPUkVfTUFDUk9TX1NZTSkpXVxuICAgICh3aGVuXG4gICAgIChzb21lPyBucylcbiAgICAgIz8oOmNsaiAoZ2V0LWluIG5hbWVzcGFjZXMgW25zIDptYWNyb3Mgc3ltXSkgOmNsanMgKGdldC1pbiBuYW1lc3BhY2VzIFtucyA6ZGVmcyBzeW1dKSkpKSkpKVxuIn0gezpzeW0gYW5hbHl6ZS1sZXQtYmluZGluZy1pbml0LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2VudiBpbml0IGxvb3AtbGV0c10pfSwgOnNvdXJjZSAiKGRlZm5cbiBhbmFseXplLWxldC1iaW5kaW5nLWluaXRcbiBbZW52IGluaXQgbG9vcC1sZXRzXVxuIChiaW5kaW5nIFsqbG9vcC1sZXRzKiBsb29wLWxldHNdIChhbmFseXplIGVudiBpbml0KSkpXG4ifSB7OnN5bSBpbmZlci10YWcsIDptZXRhIHs6ZG9jICJHaXZlbiBlbnYsIGFuIGFuYWx5c2lzIGVudmlyb25tZW50LCBhbmQgZSwgYW4gQVNUIG5vZGUsIHJldHVybiB0aGUgaW5mZXJyZWRcbiAgIHR5cGUgb2YgdGhlIG5vZGUiLCA6YXJnbGlzdHMgKFtlbnYgZV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBpbmZlci10YWdcbiBcIkdpdmVuIGVudiwgYW4gYW5hbHlzaXMgZW52aXJvbm1lbnQsIGFuZCBlLCBhbiBBU1Qgbm9kZSwgcmV0dXJuIHRoZSBpbmZlcnJlZFxcbiAgIHR5cGUgb2YgdGhlIG5vZGVcIlxuIFtlbnYgZV1cbiAoaWYtc29tZVxuICBbdGFnIChnZXQtdGFnIGUpXVxuICB0YWdcbiAgKGNhc2VcbiAgICg6b3AgZSlcbiAgIDpyZWN1clxuICAgaW1wbC9JR05PUkVfU1lNXG4gICA6dGhyb3dcbiAgIGltcGwvSUdOT1JFX1NZTVxuICAgOmxldFxuICAgKGluZmVyLXRhZyBlbnYgKDpib2R5IGUpKVxuICAgOmxvb3BcbiAgIChpbmZlci10YWcgZW52ICg6Ym9keSBlKSlcbiAgIDpkb1xuICAgKGluZmVyLXRhZyBlbnYgKDpyZXQgZSkpXG4gICA6Zm4tbWV0aG9kXG4gICAoaW5mZXItdGFnIGVudiAoOmJvZHkgZSkpXG4gICA6ZGVmXG4gICAoaW5mZXItdGFnIGVudiAoOmluaXQgZSkpXG4gICA6aW52b2tlXG4gICAoaW5mZXItaW52b2tlIGVudiBlKVxuICAgOmlmXG4gICAoaW5mZXItaWYgZW52IGUpXG4gICA6Y29uc3RcbiAgIChjYXNlXG4gICAgKDpmb3JtIGUpXG4gICAgdHJ1ZVxuICAgIGltcGwvQk9PTEVBTl9TWU1cbiAgICBmYWxzZVxuICAgIGltcGwvQk9PTEVBTl9TWU1cbiAgICBpbXBsL0FOWV9TWU0pXG4gICA6cXVvdGVcbiAgIChpbmZlci10YWcgZW52ICg6ZXhwciBlKSlcbiAgICg6dmFyIDpsb2NhbCA6anMtdmFyIDpiaW5kaW5nKVxuICAgKGlmLXNvbWVcbiAgICBbaW5pdCAoOmluaXQgZSldXG4gICAgKGluZmVyLXRhZyBlbnYgaW5pdClcbiAgICAoaW5mZXItdGFnIGVudiAoOmluZm8gZSkpKVxuICAgKDpob3N0LWZpZWxkIDpob3N0LWNhbGwpXG4gICBpbXBsL0FOWV9TWU1cbiAgIDpqc1xuICAgaW1wbC9BTllfU1lNXG4gICBuaWwpKSlcbiJ9IHs6c3ltIGNhbm9uaWNhbGl6ZS1pbXBvcnQtc3BlY3MsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbc3BlY3NdKX0sIDpzb3VyY2UgIihkZWZuXG4gY2Fub25pY2FsaXplLWltcG9ydC1zcGVjc1xuIFtzcGVjc11cbiAobGV0Zm5cbiAgWyhjYW5vbmljYWxpemVcbiAgICBbcXVvdGVkLXNwZWMtb3Ita3ddXG4gICAgKGlmXG4gICAgIChrZXl3b3JkPyBxdW90ZWQtc3BlYy1vci1rdylcbiAgICAgcXVvdGVkLXNwZWMtb3Ita3dcbiAgICAgKHNlY29uZCBxdW90ZWQtc3BlYy1vci1rdykpKV1cbiAgKG1hcCBjYW5vbmljYWxpemUgc3BlY3MpKSlcbiJ9IHs6c3ltIGFuYWx5emUtZm9ybS1zZXEsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIFtbZm9ybXNdIFtmb3JtcyBvcHRzXSBbZm9ybXMgb3B0cyByZXR1cm4tbGFzdD9dXX0sIDpzb3VyY2UgIihkZWZuXG4gYW5hbHl6ZS1mb3JtLXNlcVxuIChbZm9ybXNdXG4gIChhbmFseXplLWZvcm0tc2VxXG4gICBmb3Jtc1xuICAgKHdoZW4gZW52Lypjb21waWxlciogKDpvcHRpb25zIEBlbnYvKmNvbXBpbGVyKikpKSlcbiAoW2Zvcm1zIG9wdHNdIChhbmFseXplLWZvcm0tc2VxIGZvcm1zIG9wdHMgZmFsc2UpKVxuIChbZm9ybXMgb3B0cyByZXR1cm4tbGFzdD9dXG4gIChsZXRcbiAgIFtlbnYgKGFzc29jIChlbXB0eS1lbnYpIDpidWlsZC1vcHRpb25zIG9wdHMpXVxuICAgKGJpbmRpbmdcbiAgICBbKmZpbGUtZGVmcypcbiAgICAgbmlsXG4gICAgICM/QCg6Y2xqIFsqdW5jaGVja2VkLWlmKiBmYWxzZSAqdW5jaGVja2VkLWFycmF5cyogZmFsc2VdKVxuICAgICAqY2xqcy1ucypcbiAgICAgJ2NsanMudXNlclxuICAgICAqY2xqcy1maWxlKlxuICAgICBuaWxcbiAgICAgcmVhZGVyLyphbGlhcy1tYXAqXG4gICAgIChvciByZWFkZXIvKmFsaWFzLW1hcCoge30pXVxuICAgIChsb29wXG4gICAgIFtucyBuaWwgZm9ybXMgZm9ybXMgbGFzdC1hc3QgbmlsXVxuICAgICAoaWZcbiAgICAgIChzb21lPyBmb3JtcylcbiAgICAgIChsZXRcbiAgICAgICBbZm9ybVxuICAgICAgICAoZmlyc3QgZm9ybXMpXG4gICAgICAgIGVudlxuICAgICAgICAoYXNzb2MgZW52IDpucyAoZ2V0LW5hbWVzcGFjZSAqY2xqcy1ucyopKVxuICAgICAgICBhc3RcbiAgICAgICAgKGFuYWx5emUgZW52IGZvcm0gbmlsIG9wdHMpXVxuICAgICAgIChpZlxuICAgICAgICAoPSAoOm9wIGFzdCkgOm5zKVxuICAgICAgICAocmVjdXIgKDpuYW1lIGFzdCkgKG5leHQgZm9ybXMpIGFzdClcbiAgICAgICAgKHJlY3VyIG5zIChuZXh0IGZvcm1zKSBhc3QpKSlcbiAgICAgIChpZiByZXR1cm4tbGFzdD8gbGFzdC1hc3QgbnMpKSkpKSkpXG4ifSB7OnN5bSBhbmFseXplLWxldC1ib2R5KiwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtlbnYgY29udGV4dCBleHByc10pfSwgOnNvdXJjZSAiKGRlZm5cbiBhbmFseXplLWxldC1ib2R5KlxuIFtlbnYgY29udGV4dCBleHByc11cbiAoYW5hbHl6ZVxuICAoYXNzb2MgZW52IDpjb250ZXh0IChpZiAoPSA6ZXhwciBjb250ZXh0KSA6cmV0dXJuIGNvbnRleHQpKVxuICAoY2xvanVyZS5jb3JlL3NlcXVlbmNlXG4gICAoY2xvanVyZS5jb3JlL3NlcVxuICAgIChjbG9qdXJlLmNvcmUvY29uY2F0IChjbG9qdXJlLmNvcmUvbGlzdCAnZG8pIGV4cHJzKSkpKSlcbiJ9IHs6c3ltIGFuYWx5emUtanMtc3RhciosIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZW52IGpzZm9ybSBhcmdzIGZvcm1dKX0sIDpzb3VyY2UgIihkZWZuXG4gYW5hbHl6ZS1qcy1zdGFyKlxuIFtlbnYganNmb3JtIGFyZ3MgZm9ybV1cbiAobGV0XG4gIFtlbnZlXG4gICAoYXNzb2MgZW52IDpjb250ZXh0IDpleHByKVxuICAgZm9ybS1tZXRhXG4gICAobWV0YSBmb3JtKVxuICAgc2Vnc1xuICAgKGpzLXN0YXItc2VnIGpzZm9ybSlcbiAgIHRhZ1xuICAgKGdldC1qcy10YWcgZm9ybSlcbiAgIGpzLW9wXG4gICAoOmpzLW9wIGZvcm0tbWV0YSlcbiAgIGFyZ2V4cHJzXG4gICAoYW5hbHl6ZS1qcy1zdGFyLWFyZ3MganMtb3AgZW52ZSBhcmdzKVxuICAgbnVtZXJpY1xuICAgKDpudW1lcmljIGZvcm0tbWV0YSlcbiAgIHZhbGlkYXRlXG4gICAoZm5cbiAgICBbd2FybmluZy10eXBlIHZhbGlkLXR5cGVzP11cbiAgICAobGV0XG4gICAgIFt0eXBlc1xuICAgICAgKG1hcCAoZm4qIFtwMV9fNDI4NDcjXSAoaW5mZXItdGFnIGVudiBwMV9fNDI4NDcjKSkgYXJnZXhwcnMpXVxuICAgICAod2hlbi1ub3RcbiAgICAgICh2YWxpZC10eXBlcz8gdHlwZXMpXG4gICAgICAod2FybmluZ1xuICAgICAgIHdhcm5pbmctdHlwZVxuICAgICAgIGVudlxuICAgICAgIHs6anMtb3AganMtb3AsIDp0eXBlcyAoaW50byBbXSB0eXBlcyl9KSkpKVxuICAgb3AtbWF0Y2g/XG4gICAoZm5cbiAgICBbc3ltXVxuICAgICM/KDpjbGogKD0gc3ltICg6anMtb3AgZm9ybS1tZXRhKSkgOmNsanMgKHN5bWJvbC1pZGVudGljYWw/IHN5bSAoOmpzLW9wIGZvcm0tbWV0YSkpKSldXG4gICh3aGVuXG4gICAodHJ1ZT8gbnVtZXJpYylcbiAgICh2YWxpZGF0ZVxuICAgIDppbnZhbGlkLWFyaXRobWV0aWNcbiAgICAoZm4qIFtwMV9fNDI4NDgjXSAoZXZlcnk/IG51bWVyaWMtdHlwZT8gcDFfXzQyODQ4IykpKSlcbiAgezphcmdzIGFyZ2V4cHJzLFxuICAgOmNoaWxkcmVuIFs6YXJnc10sXG4gICA6bnVtZXJpYyBudW1lcmljLFxuICAgOnNlZ3Mgc2VncyxcbiAgIDpvcCA6anMsXG4gICA6ZW52IGVudixcbiAgIDpqcy1vcCBqcy1vcCxcbiAgIDpmb3JtIGZvcm0sXG4gICA6dGFnIHRhZ30pKVxuIn0gezpzeW0gaW5mZXJyZWQtcmVuYW1lLW1hY3JvcywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtyZW5hbWUtbWFjcm9zIGVudl0pfSwgOnNvdXJjZSAiKGRlZm5cbiBpbmZlcnJlZC1yZW5hbWUtbWFjcm9zXG4gW3JlbmFtZS1tYWNyb3MgZW52XVxuIChpbnRvXG4gIHt9XG4gIChmaWx0ZXJcbiAgIChmbiBbW18gcXVhbGlmaWVkLXN5bV1dIChub3QgKG1pc3NpbmctcmVuYW1lLW1hY3JvPyBxdWFsaWZpZWQtc3ltKSkpXG4gICByZW5hbWUtbWFjcm9zKSkpXG4ifSB7OnN5bSBwYXJzZS1ucy1lcnJvci1tc2csIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbc3BlYyBtc2ddKX0sIDpzb3VyY2UgIihkZWZuXG4gcGFyc2UtbnMtZXJyb3ItbXNnXG4gW3NwZWMgbXNnXVxuIChzdHIgbXNnIFwiOyBvZmZlbmRpbmcgc3BlYzogXCIgKHByLXN0ciBzcGVjKSkpXG4ifSB7OnN5bSBtaXNzaW5nLXVzZS1tYWNybz8sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbbGliIHN5bV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBtaXNzaW5nLXVzZS1tYWNybz9cbiBbbGliIHN5bV1cbiAod2hlblxuICAoc3ltYm9sPyBsaWIpXG4gIChsZXRcbiAgIFt0aGUtbnMgIz8oOmNsaiAoZmluZC1ucyBsaWIpIDpjbGpzIChmaW5kLW1hY3Jvcy1ucyBsaWIpKV1cbiAgIChvciAobmlsPyB0aGUtbnMpIChuaWw/ICguZmluZEludGVybmVkVmFyIHRoZS1ucyBzeW0pKSkpKSlcbiJ9IHs6c3ltIHJlY29yZC1ucytuYW1lLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuXG4gcmVjb3JkLW5zK25hbWVcbiBbeF1cbiAobWFwXG4gIHN5bWJvbFxuICAjPyg6Y2xqICgoanV4dCAoY29tcCAoZm4qIFtwMV9fNDI4NTkjXSAoc3RyaW5nL2pvaW4gXCIuXCIgcDFfXzQyODU5IykpIGJ1dGxhc3QpIGxhc3QpIChzdHJpbmcvc3BsaXQgKC5nZXROYW1lICh0eXBlIHgpKSAjXCJcXC5cIikpIDpjbGpzIChzdHJpbmcvc3BsaXQgKHByLXN0ciAodHlwZSB4KSkgI1wiL1wiKSkpKVxuIn0gezpzeW0gYW5hbHl6ZWQsIDptZXRhIHs6ZG9jICJNYXJrIGEgZm9ybSBhcyBiZWluZyBhbmFseXplZC4gQXNzdW1lcyB4IHNhdGlzZmllcyBJTWV0YS4gVXNlZnVsIHRvIHN1cHByZXNzXG4gIHdhcm5pbmdzIHRoYXQgd2lsbCBoYXZlIGJlZW4gY2F1Z2h0IGJ5IGEgZmlyc3QgY29tcGlsZXIgcGFzcy4iLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmblxuIGFuYWx5emVkXG4gXCJNYXJrIGEgZm9ybSBhcyBiZWluZyBhbmFseXplZC4gQXNzdW1lcyB4IHNhdGlzZmllcyBJTWV0YS4gVXNlZnVsIHRvIHN1cHByZXNzXFxuICB3YXJuaW5ncyB0aGF0IHdpbGwgaGF2ZSBiZWVuIGNhdWdodCBieSBhIGZpcnN0IGNvbXBpbGVyIHBhc3MuXCJcbiBbeF1cbiAoY29uZFxuICAodW5zb3J0ZWQtbWFwPyB4KVxuICAoYXNzb2MgeCA6Y2xqcy5hbmFseXplci9hbmFseXplZCB0cnVlKVxuICA6ZWxzZVxuICAodmFyeS1tZXRhIHggYXNzb2MgOmNsanMuYW5hbHl6ZXIvYW5hbHl6ZWQgdHJ1ZSkpKVxuIn0gezpzeW0gcmVzb2x2ZS1zeW1ib2wsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbc3ltXSl9LCA6c291cmNlICIoZGVmblxuIHJlc29sdmUtc3ltYm9sXG4gW3N5bV1cbiAoaWZcbiAgKGFuZCAobm90IChuYW1lc3BhY2Ugc3ltKSkgKGRvdHRlZC1zeW1ib2w/IHN5bSkpXG4gIHN5bVxuICAoOm5hbWVcbiAgIChiaW5kaW5nXG4gICAgWypwcml2YXRlLXZhci1hY2Nlc3Mtbm93YXJuKiB0cnVlXVxuICAgIChyZXNvbHZlLXZhclxuICAgICAoYXNzb2MgQGVudi8qY29tcGlsZXIqIDpucyAoZ2V0LW5hbWVzcGFjZSAqY2xqcy1ucyopKVxuICAgICBzeW0pKSkpKVxuIn0gezpzeW0gbWlzc2luZy1yZW5hbWVzLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3JlbmFtZXMgZW52XSl9LCA6c291cmNlICIoZGVmblxuIG1pc3NpbmctcmVuYW1lc1xuIFtyZW5hbWVzIGVudl1cbiAobGV0XG4gIFtjZW52IEBlbnYvKmNvbXBpbGVyKl1cbiAgKGludG9cbiAgIHt9XG4gICAoZmlsdGVyXG4gICAgKGZuIFtbXyBxdWFsaWZpZWQtc3ltXV0gKG1pc3NpbmctcmVuYW1lPyBxdWFsaWZpZWQtc3ltIGNlbnYpKVxuICAgIHJlbmFtZXMpKSkpXG4ifSB7OnN5bSBkZWZhdWx0LXBhc3NlcywgOm1ldGEge30sIDpzb3VyY2UgIihkZWZcbiBkZWZhdWx0LXBhc3Nlc1xuICM/KDpjbGogW2luZmVyLXR5cGUgYW5kLW9yL29wdGltaXplIGNoZWNrLWludm9rZS1hcmctdHlwZXMgbnMtc2lkZS1lZmZlY3RzXSA6Y2xqcyBbaW5mZXItdHlwZSBhbmQtb3Ivb3B0aW1pemUgY2hlY2staW52b2tlLWFyZy10eXBlc10pKVxuIn0gezpzeW0gKmNsanMtbWFjcm9zLXBhdGgqLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiAqY2xqcy1tYWNyb3MtcGF0aCogXCIvY2xqcy9jb3JlXCIpXG4ifSB7OnN5bSBjb25maXJtLXZhci1leGlzdC13YXJuaW5nLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2VudiBwcmVmaXggc3VmZml4XSl9LCA6c291cmNlICIoZGVmblxuIGNvbmZpcm0tdmFyLWV4aXN0LXdhcm5pbmdcbiBbZW52IHByZWZpeCBzdWZmaXhdXG4gKGZuXG4gIFtlbnYgcHJlZml4IHN1ZmZpeF1cbiAgKHdhcm5pbmdcbiAgIDp1bmRlY2xhcmVkLXZhclxuICAgZW52XG4gICB7OnByZWZpeCBwcmVmaXgsXG4gICAgOnN1ZmZpeCBzdWZmaXgsXG4gICAgOm1hY3JvLXByZXNlbnQ/XG4gICAgKG5vdFxuICAgICAobmlsPyAoZ2V0LWV4cGFuZGVyIChzeW1ib2wgKHN0ciBwcmVmaXgpIChzdHIgc3VmZml4KSkgZW52KSkpfSkpKVxuIn0gezpzeW0gdW5jaGVja2VkLWFycmF5cz8sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbXSl9LCA6c291cmNlICIoZGVmbiB1bmNoZWNrZWQtYXJyYXlzPyBbXSAqdW5jaGVja2VkLWFycmF5cyopXG4ifSB7OnN5bSBhbmFseXplLWRvdCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtlbnYgdGFyZ2V0IGZpZWxkIG1lbWJlcisgZm9ybV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBhbmFseXplLWRvdFxuIFtlbnYgdGFyZ2V0IGZpZWxkIG1lbWJlcisgZm9ybV1cbiAobGV0XG4gIFt2XG4gICBbdGFyZ2V0IGZpZWxkIG1lbWJlcitdXG4gICB7OmtleXMgW2RvdC1hY3Rpb24gdGFyZ2V0IG1ldGhvZCBmaWVsZCBhcmdzXX1cbiAgIChidWlsZC1kb3QtZm9ybSB2KVxuICAgZW52ZVxuICAgKGFzc29jIGVudiA6Y29udGV4dCA6ZXhwcilcbiAgIHRhcmdldGV4cHJcbiAgIChhbmFseXplIGVudmUgdGFyZ2V0KVxuICAgZm9ybS1tZXRhXG4gICAobWV0YSBmb3JtKVxuICAgdGFyZ2V0LXRhZ1xuICAgKDp0YWcgdGFyZ2V0ZXhwcilcbiAgIHByb3BcbiAgIChvciBmaWVsZCBtZXRob2QpXG4gICB0YWdcbiAgIChvclxuICAgICg6dGFnIGZvcm0tbWV0YSlcbiAgICAoYW5kXG4gICAgIChqcy10YWc/IHRhcmdldC10YWcpXG4gICAgICh2YXJ5LW1ldGFcbiAgICAgIChub3JtYWxpemUtanMtdGFnIHRhcmdldC10YWcpXG4gICAgICB1cGRhdGUtaW5cbiAgICAgIFs6cHJlZml4XVxuICAgICAgKGZuaWwgY29uaiAnW09iamVjdF0pXG4gICAgICBwcm9wKSlcbiAgICBuaWwpXVxuICAod2hlblxuICAgKGFuZFxuICAgIChub3Q9ICdjb25zdHJ1Y3RvciBwcm9wKVxuICAgIChub3QgKHN0cmluZy9zdGFydHMtd2l0aD8gKHN0ciBwcm9wKSBcImNsanMkXCIpKVxuICAgIChub3QgKC0+IHByb3AgbWV0YSA6cHJvdG9jb2wtcHJvcCkpKVxuICAgKHdoZW5cbiAgICAoPSAnT2JqZWN0IChmaXJzdCAoLT4gdGFnIG1ldGEgOnByZWZpeCkpKVxuICAgICh3YXJuaW5nXG4gICAgIDppbmZlci13YXJuaW5nXG4gICAgIGVudlxuICAgICB7Ondhcm4tdHlwZSA6b2JqZWN0LCA6Zm9ybSBmb3JtLCA6cHJvcGVydHkgcHJvcH0pKVxuICAgKHdoZW5cbiAgICAobm90PSAnanMgdGFyZ2V0LXRhZylcbiAgICAod2hlblxuICAgICAob3IgKG5pbD8gdGFyZ2V0LXRhZykgKCcje2FueX0gdGFyZ2V0LXRhZykpXG4gICAgICh3YXJuaW5nXG4gICAgICA6aW5mZXItd2FybmluZ1xuICAgICAgZW52XG4gICAgICB7Ondhcm4tdHlwZSA6dGFyZ2V0LCA6Zm9ybSBmb3JtLCA6cHJvcGVydHkgcHJvcH0pKVxuICAgIChsZXRcbiAgICAgW1twcmUnIHByZV0gKChqdXh0IGJ1dGxhc3QgaWRlbnRpdHkpICgtPiB0YWcgbWV0YSA6cHJlZml4KSldXG4gICAgICh3aGVuXG4gICAgICAoYW5kIChoYXMtZXh0ZXJuPyBwcmUnKSAobm90IChoYXMtZXh0ZXJuPyBwcmUpKSlcbiAgICAgICh3YXJuaW5nXG4gICAgICAgOmluZmVyLXdhcm5pbmdcbiAgICAgICBlbnZcbiAgICAgICB7Ondhcm4tdHlwZSA6cHJvcGVydHksXG4gICAgICAgIDpmb3JtIGZvcm0sXG4gICAgICAgIDp0eXBlXG4gICAgICAgIChzeW1ib2xcbiAgICAgICAgIFwianNcIlxuICAgICAgICAgKHN0cmluZy9qb2luXG4gICAgICAgICAgXCIuXCJcbiAgICAgICAgICAoY29uZC0+IHByZScgKD0gJ3Byb3RvdHlwZSAobGFzdCBwcmUnKSkgYnV0bGFzdCkpKSxcbiAgICAgICAgOnByb3BlcnR5IHByb3B9KSkpKSlcbiAgKHdoZW5cbiAgIChqcy10YWc/IHRhZylcbiAgIChsZXRcbiAgICBbcHJlICgtPiB0YWcgbWV0YSA6cHJlZml4KV1cbiAgICAod2hlbi1ub3RcbiAgICAgKGhhcy1leHRlcm4/IHByZSlcbiAgICAgKHN3YXAhXG4gICAgICBlbnYvKmNvbXBpbGVyKlxuICAgICAgdXBkYXRlLWluXG4gICAgICAoaW50b1xuICAgICAgIFs6Y2xqcy5hbmFseXplci9uYW1lc3BhY2VzICgtPiBlbnYgOm5zIDpuYW1lKSA6ZXh0ZXJuc11cbiAgICAgICBwcmUpXG4gICAgICBtZXJnZVxuICAgICAge30pKSkpXG4gIChjYXNlXG4gICBkb3QtYWN0aW9uXG4gICA6Y2xqcy5hbmFseXplci9hY2Nlc3NcbiAgIChsZXRcbiAgICBbY2hpbGRyZW4gWzp0YXJnZXRdXVxuICAgIHs6b3AgOmhvc3QtZmllbGQsXG4gICAgIDplbnYgZW52LFxuICAgICA6Zm9ybSBmb3JtLFxuICAgICA6dGFyZ2V0IHRhcmdldGV4cHIsXG4gICAgIDpmaWVsZCBmaWVsZCxcbiAgICAgOmNoaWxkcmVuIGNoaWxkcmVuLFxuICAgICA6dGFnXG4gICAgIChpZlxuICAgICAgKGpzLXRhZz8gdGFnKVxuICAgICAgKG9yIChqcy10YWcgKC0+IHRhZyBtZXRhIDpwcmVmaXgpIDp0YWcpIHRhZylcbiAgICAgIHRhZyl9KVxuICAgOmNsanMuYW5hbHl6ZXIvY2FsbFxuICAgKGxldFxuICAgIFthcmdleHByc1xuICAgICAobWFwdiAoZm4qIFtwMV9fNDI4NDYjXSAoYW5hbHl6ZSBlbnZlIHAxX180Mjg0NiMpKSBhcmdzKVxuICAgICBjaGlsZHJlblxuICAgICBbOnRhcmdldCA6YXJnc11dXG4gICAgezpvcCA6aG9zdC1jYWxsLFxuICAgICA6ZW52IGVudixcbiAgICAgOmZvcm0gZm9ybSxcbiAgICAgOnRhcmdldCB0YXJnZXRleHByLFxuICAgICA6bWV0aG9kIG1ldGhvZCxcbiAgICAgOmFyZ3MgYXJnZXhwcnMsXG4gICAgIDpjaGlsZHJlbiBjaGlsZHJlbixcbiAgICAgOnRhZ1xuICAgICAoaWZcbiAgICAgIChqcy10YWc/IHRhZylcbiAgICAgIChvciAoanMtdGFnICgtPiB0YWcgbWV0YSA6cHJlZml4KSA6cmV0LXRhZykgJ2pzKVxuICAgICAgdGFnKX0pKSkpXG4ifSB7OnN5bSBhbmFseXplLWRvLXN0YXRlbWVudHMsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZW52IGV4cHJzXSl9LCA6c291cmNlICIoZGVmblxuIGFuYWx5emUtZG8tc3RhdGVtZW50c1xuIFtlbnYgZXhwcnNdXG4gKGRpc2FsbG93aW5nLXJlY3VyIChhbmFseXplLWRvLXN0YXRlbWVudHMqIGVudiBleHBycykpKVxuIn0gezpzeW0gZ2V0LWxpbmUsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbeCBlbnZdKX0sIDpzb3VyY2UgIihkZWZuIGdldC1saW5lIFt4IGVudl0gKG9yICgtPiB4IG1ldGEgOmxpbmUpICg6bGluZSBlbnYpKSlcbiJ9IHs6c3ltIGFuYWx5emUtZG8tc3RhdGVtZW50cyosIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZW52IGV4cHJzXSl9LCA6c291cmNlICIoZGVmblxuIGFuYWx5emUtZG8tc3RhdGVtZW50cypcbiBbZW52IGV4cHJzXVxuIChtYXB2XG4gIChmbipcbiAgIFtwMV9fNDI4MjQjXVxuICAgKGFuYWx5emUgKGFzc29jIGVudiA6Y29udGV4dCA6c3RhdGVtZW50KSBwMV9fNDI4MjQjKSlcbiAgKGJ1dGxhc3QgZXhwcnMpKSlcbiJ9IHs6c3ltIGFuYWx5emUtc2VxLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyBbW2VudiBmb3JtIG5hbWVdIFtlbnYgZm9ybSBuYW1lIG9wdHNdXX0sIDpzb3VyY2UgIihkZWZuXG4gYW5hbHl6ZS1zZXFcbiAoW2VudiBmb3JtIG5hbWVdXG4gIChhbmFseXplLXNlcVxuICAgZW52XG4gICBmb3JtXG4gICBuYW1lXG4gICAod2hlbiBlbnYvKmNvbXBpbGVyKiAoOm9wdGlvbnMgQGVudi8qY29tcGlsZXIqKSkpKVxuIChbZW52IGZvcm0gbmFtZSBvcHRzXVxuICAoaWZcbiAgICg6cXVvdGVkPyBlbnYpXG4gICAoYW5hbHl6ZS1saXN0IGVudiBmb3JtKVxuICAgKGxldFxuICAgIFtsaW5lXG4gICAgICgtPiBmb3JtIG1ldGEgOmxpbmUpXG4gICAgIGxpbmVcbiAgICAgKGlmIChuaWw/IGxpbmUpICg6bGluZSBlbnYpIGxpbmUpXG4gICAgIGNvbFxuICAgICAoLT4gZm9ybSBtZXRhIDpjb2x1bW4pXG4gICAgIGNvbFxuICAgICAoaWYgKG5pbD8gY29sKSAoOmNvbHVtbiBlbnYpIGNvbClcbiAgICAgZW52XG4gICAgIChhc3NvYyBlbnYgOmxpbmUgbGluZSA6Y29sdW1uIGNvbCldXG4gICAgKGxldFxuICAgICBbb3AgKGZpcnN0IGZvcm0pXVxuICAgICAod2hlbiAobmlsPyBvcCkgKHRocm93IChlcnJvciBlbnYgXCJDYW4ndCBjYWxsIG5pbFwiKSkpXG4gICAgIChsZXRcbiAgICAgIFttZm9ybSAobWFjcm9leHBhbmQtMSBlbnYgZm9ybSldXG4gICAgICAoaWZcbiAgICAgICAoaWRlbnRpY2FsPyBmb3JtIG1mb3JtKVxuICAgICAgIChhbmFseXplLXNlcSotd3JhcCBvcCBlbnYgZm9ybSBuYW1lIG9wdHMpXG4gICAgICAgKGFuYWx5emUgZW52IG1mb3JtIG5hbWUgb3B0cykpKSkpKSkpXG4ifSB7OnN5bSBkZXN1Z2FyLWRvdHRlZC1leHByLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3s6a2V5cyBbb3BdLCA6YXMgZXhwcn1dKX0sIDpzb3VyY2UgIihkZWZuXG4gZGVzdWdhci1kb3R0ZWQtZXhwclxuIFt7OmtleXMgW29wXSwgOmFzIGV4cHJ9XVxuIChjYXNlXG4gIG9wXG4gICg6dmFyIDpsb2NhbClcbiAgKGlmXG4gICAoZG90dGVkLXN5bWJvbD8gKHN5bWJvbCAobmFtZSAoOm5hbWUgZXhwcikpKSlcbiAgIChsZXRcbiAgICBbc1xuICAgICAobmFtZSAoOm5hbWUgZXhwcikpXG4gICAgIGlkeFxuICAgICAoLmxhc3RJbmRleE9mIHMgXCIuXCIpXG4gICAgIF9cbiAgICAgKGFzc2VydCAobm90PSAoaW5jIGlkeCkgKGNvdW50IHMpKSlcbiAgICAgcHJlZml4XG4gICAgICh3aXRoLW1ldGFcbiAgICAgIChzeW1ib2wgKG5hbWVzcGFjZSAoOm5hbWUgZXhwcikpIChzdWJzIHMgMCBpZHgpKVxuICAgICAgKG1ldGEgKDpmb3JtIGV4cHIpKSlcbiAgICAgZmllbGRcbiAgICAgKHN5bWJvbCAoc3VicyBzIChpbmMgaWR4KSkpXVxuICAgIChhc3NlcnQgKG5vdCAoOmNvbnN0LWV4cHIgZXhwcikpKVxuICAgIHs6b3AgOmhvc3QtZmllbGQsXG4gICAgIDplbnYgKDplbnYgZXhwciksXG4gICAgIDpmb3JtIChsaXN0ICcuIHByZWZpeCBmaWVsZCksXG4gICAgIDp0YXJnZXRcbiAgICAgKGRlc3VnYXItZG90dGVkLWV4cHJcbiAgICAgICgtPlxuICAgICAgIGV4cHJcbiAgICAgICAoYXNzb2MgOm5hbWUgcHJlZml4IDpmb3JtIHByZWZpeClcbiAgICAgICAoZGlzc29jIDp0YWcpXG4gICAgICAgKGFzc29jLWluIFs6aW5mbyA6bmFtZV0gcHJlZml4KVxuICAgICAgIChhc3NvYy1pbiBbOmVudiA6Y29udGV4dF0gOmV4cHIpKSksXG4gICAgIDpmaWVsZCBmaWVsZCxcbiAgICAgOnRhZyAoOnRhZyBleHByKSxcbiAgICAgOmNoaWxkcmVuIFs6dGFyZ2V0XX0pXG4gICBleHByKVxuICBleHByKSlcbiJ9IHs6c3ltIGZpbmQtZGVmLWNsYXNoLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2VudiBucyBzZWdtZW50c10pfSwgOnNvdXJjZSAiKGRlZm5cbiBmaW5kLWRlZi1jbGFzaFxuIFtlbnYgbnMgc2VnbWVudHNdXG4gKGxldFxuICBbdG8tY2hlY2tcbiAgIChtYXBcbiAgICAoZm5cbiAgICAgW3hzXVxuICAgICBbKHN5bWJvbCAoc3RyaW5nL2pvaW4gXCIuXCIgKGJ1dGxhc3QgeHMpKSkgKHN5bWJvbCAobGFzdCB4cykpXSlcbiAgICAoZHJvcCAyIChyZWR1Y3Rpb25zIGNvbmogW10gc2VnbWVudHMpKSldXG4gIChkb3NlcVxuICAgW1tjbGFzaC1ucyBuYW1lXSB0by1jaGVja11cbiAgICh3aGVuXG4gICAgKGdldC1pblxuICAgICBAZW52Lypjb21waWxlcipcbiAgICAgWzpjbGpzLmFuYWx5emVyL25hbWVzcGFjZXMgY2xhc2gtbnMgOmRlZnMgbmFtZV0pXG4gICAgKHdhcm5pbmdcbiAgICAgOm5zLXZhci1jbGFzaFxuICAgICBlbnZcbiAgICAgezpucyBucywgOnZhciAoc3ltYm9sIChzdHIgY2xhc2gtbnMpIChzdHIgbmFtZSkpfSkpKSkpXG4ifSB7OnN5bSBoYXMtZXJyb3ItZGF0YT8sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZXhdKX0sIDpzb3VyY2UgIihkZWZuXG4gaGFzLWVycm9yLWRhdGE/XG4gIz8oOmNsanMgezp0YWcgYm9vbGVhbn0pXG4gW2V4XVxuIChjb250YWlucz8gKGV4LWRhdGEgZXgpIDpjbG9qdXJlLmVycm9yL3BoYXNlKSlcbiJ9IHs6c3ltIGZuLW5hbWUtdmFyLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2VudiBsb2NhbHMgbmFtZV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBmbi1uYW1lLXZhclxuIFtlbnYgbG9jYWxzIG5hbWVdXG4gKHdoZW5cbiAgKHNvbWU/IG5hbWUpXG4gIChsZXRcbiAgIFtuc1xuICAgICgtPiBlbnYgOm5zIDpuYW1lKVxuICAgIHNoYWRvd1xuICAgIChoYW5kbGUtc3ltYm9sLWxvY2FsIG5hbWUgKGdldCBsb2NhbHMgbmFtZSkpXG4gICAgc2hhZG93XG4gICAgKHdoZW4gKG5pbD8gc2hhZG93KSAoZ2V0LWluIGVudiBbOmpzLWdsb2JhbHMgbmFtZV0pKVxuICAgIGZuLXNjb3BlXG4gICAgKDpmbi1zY29wZSBlbnYpXG4gICAgbmFtZS12YXJcbiAgICB7Om5hbWUgbmFtZSxcbiAgICAgOm9wIDpiaW5kaW5nLFxuICAgICA6bG9jYWwgOmZuLFxuICAgICA6aW5mb1xuICAgICB7OmZuLXNlbGYtbmFtZSB0cnVlLCA6Zm4tc2NvcGUgZm4tc2NvcGUsIDpucyBucywgOnNoYWRvdyBzaGFkb3d9fVxuICAgIHRhZ1xuICAgICgtPiBuYW1lIG1ldGEgOnRhZylcbiAgICByZXQtdGFnXG4gICAgKHdoZW4gKHNvbWU/IHRhZykgezpyZXQtdGFnIHRhZ30pXVxuICAgKG1lcmdlIG5hbWUtdmFyIHJldC10YWcpKSkpXG4ifSB7OnN5bSBnb29nLW1vZHVsZS1kZXA/LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW21vZHVsZV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBnb29nLW1vZHVsZS1kZXA/XG4gW21vZHVsZV1cbiAobGV0XG4gIFtbbW9kdWxlIF9dXG4gICAobGliJnN1YmxpYiBtb2R1bGUpXG4gICBtb2R1bGUtc3RyXG4gICAoc3RyIG1vZHVsZSlcbiAgIG9wdGlvbnNcbiAgIChjb21waWxlci1vcHRpb25zKV1cbiAgKGlmXG4gICAoYW5kXG4gICAgKDpnbG9iYWwtZ29vZy1vYmplY3QmYXJyYXkgb3B0aW9ucylcbiAgICAoI3tcImdvb2cuYXJyYXlcIiBcImdvb2cub2JqZWN0XCJ9IG1vZHVsZS1zdHIpKVxuICAgZmFsc2VcbiAgICg9XG4gICAgOmdvb2dcbiAgICAoZ2V0LWluXG4gICAgIEBlbnYvKmNvbXBpbGVyKlxuICAgICBbOmpzLWRlcGVuZGVuY3ktaW5kZXggbW9kdWxlLXN0ciA6bW9kdWxlXSkpKSkpXG4ifSB7OnN5bSBtdW5nZS1ub2RlLWxpYiwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtuYW1lXSl9LCA6c291cmNlICIoZGVmblxuIG11bmdlLW5vZGUtbGliXG4gW25hbWVdXG4gKHN0clxuICBcIm5vZGUkbW9kdWxlJFwiXG4gIChtdW5nZVxuICAgKHN0cmluZy9yZXBsYWNlIChzdHIgbmFtZSkgI1wiWy5cXC9dXCIgIz8oOmNsaiBcIlxcXFwkXCIgOmNsanMgXCIkJFwiKSkpKSlcbiJ9IHs6c3ltICpsb2FkLW1hY3JvcyosIDptZXRhIHt9LCA6c291cmNlICIoZGVmICpsb2FkLW1hY3JvcyogdHJ1ZSlcbiJ9IHs6c3ltIGFkZC10eXBlcywgOm1ldGEgezpkb2MgIlByb2R1Y2VzIGEgdW5pb24gb2YgdHlwZXMuIiwgOmFyZ2xpc3RzIFtbXSBbdDFdIFt0MSB0Ml0gW3QxIHQyICYgdHNdXX0sIDpzb3VyY2UgIihkZWZuXG4gYWRkLXR5cGVzXG4gXCJQcm9kdWNlcyBhIHVuaW9uIG9mIHR5cGVzLlwiXG4gKFtdICdhbnkpXG4gKFt0MV0gdDEpXG4gKFt0MSB0Ml1cbiAgKGlmXG4gICAob3IgKG5pbD8gdDEpIChuaWw/IHQyKSlcbiAgICdhbnlcbiAgICgtPiAoc2V0L3VuaW9uICgtPnR5cGUtc2V0IHQxKSAoLT50eXBlLXNldCB0MikpIGNhbm9uaWNhbGl6ZS10eXBlKSkpXG4gKFt0MSB0MiAmIHRzXSAoYXBwbHkgYWRkLXR5cGVzIChhZGQtdHlwZXMgdDEgdDIpIHRzKSkpXG4ifSB7OnN5bSBleGNsdWRlZD8sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZW52IHN5bV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBleGNsdWRlZD9cbiAjPyg6Y2xqcyB7OnRhZyBib29sZWFufSlcbiBbZW52IHN5bV1cbiAob3JcbiAgKHNvbWU/IChnZXRzIGVudiA6bnMgOmV4Y2x1ZGVzIHN5bSkpXG4gIChzb21lP1xuICAgKGdldHNcbiAgICBAZW52Lypjb21waWxlcipcbiAgICA6Y2xqcy5hbmFseXplci9uYW1lc3BhY2VzXG4gICAgKGdldHMgZW52IDpucyA6bmFtZSlcbiAgICA6ZXhjbHVkZXNcbiAgICBzeW0pKSkpXG4ifSB7OnN5bSBlbXB0eS1lbnYsIDptZXRhIHs6ZG9jICJDb25zdHJ1Y3QgYW4gZW1wdHkgYW5hbHlzaXMgZW52aXJvbm1lbnQuIFJlcXVpcmVkIHRvIGFuYWx5emUgZm9ybXMuIiwgOmFyZ2xpc3RzIChbXSl9LCA6c291cmNlICIoZGVmblxuIGVtcHR5LWVudlxuIFwiQ29uc3RydWN0IGFuIGVtcHR5IGFuYWx5c2lzIGVudmlyb25tZW50LiBSZXF1aXJlZCB0byBhbmFseXplIGZvcm1zLlwiXG4gW11cbiAoZW5zdXJlXG4gIHs6bnMgKGdldC1uYW1lc3BhY2UgKmNsanMtbnMqKSxcbiAgIDpjb250ZXh0IDpzdGF0ZW1lbnQsXG4gICA6bG9jYWxzIHt9LFxuICAgOmZuLXNjb3BlIFtdLFxuICAgOmpzLWdsb2JhbHNcbiAgIChpbnRvXG4gICAge31cbiAgICAobWFwXG4gICAgIChmbipcbiAgICAgIFtwMV9fNDI4MDkjXVxuICAgICAgKHZlY3RvciBwMV9fNDI4MDkjIHs6b3AgOmpzLXZhciwgOm5hbWUgcDFfXzQyODA5IywgOm5zICdqc30pKVxuICAgICAnKGFsZXJ0XG4gICAgICAgd2luZG93XG4gICAgICAgZG9jdW1lbnRcbiAgICAgICBjb25zb2xlXG4gICAgICAgZXNjYXBlXG4gICAgICAgdW5lc2NhcGVcbiAgICAgICBzY3JlZW5cbiAgICAgICBsb2NhdGlvblxuICAgICAgIG5hdmlnYXRvclxuICAgICAgIGhpc3RvcnlcbiAgICAgICBsb2NhdGlvblxuICAgICAgIGdsb2JhbFxuICAgICAgIHByb2Nlc3NcbiAgICAgICByZXF1aXJlXG4gICAgICAgbW9kdWxlXG4gICAgICAgZXhwb3J0cykpKX0pKVxuIn0gezpzeW0gcHVibGljLW5hbWU/LCA6bWV0YSB7OmRvYyAiSXMgc3ltIHB1YmxpYz8iLCA6YXJnbGlzdHMgKFtucyBzeW1dKX0sIDpzb3VyY2UgIihkZWZuXG4gcHVibGljLW5hbWU/XG4gXCJJcyBzeW0gcHVibGljP1wiXG4gIz8oOmNsanMgezp0YWcgYm9vbGVhbn0pXG4gW25zIHN5bV1cbiAobGV0XG4gIFt2YXItYXN0XG4gICAob3JcbiAgICAoZ2V0cyBAZW52Lypjb21waWxlciogOmNsanMuYW5hbHl6ZXIvbmFtZXNwYWNlcyBucyA6ZGVmcyBzeW0pXG4gICAgIz8oOmNsaiAoZ2V0cyAoY2xvanVyZS5jb3JlL2RlcmVmIGVudi8qY29tcGlsZXIqKSA6Y2xqcy5hbmFseXplci9uYW1lc3BhY2VzIG5zIDptYWNyb3Mgc3ltKSA6Y2xqcyAoZ2V0cyAoY2xvanVyZS5jb3JlL2RlcmVmIGVudi8qY29tcGlsZXIqKSA6Y2xqcy5hbmFseXplci9uYW1lc3BhY2VzIChzeW1ib2wgKHN0ciAobmFtZSBucykgXCIkbWFjcm9zXCIpKSA6ZGVmcyBzeW0pKSldXG4gIChhbmRcbiAgIChzb21lPyB2YXItYXN0KVxuICAgKG5vdCAob3IgKDpwcml2YXRlIHZhci1hc3QpICg6YW5vbnltb3VzIHZhci1hc3QpKSkpKSlcbiJ9IHs6c3ltIGRlZmF1bHQtd2FybmluZy1oYW5kbGVyLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3dhcm5pbmctdHlwZSBlbnYgZXh0cmFdKX0sIDpzb3VyY2UgIihkZWZuXG4gZGVmYXVsdC13YXJuaW5nLWhhbmRsZXJcbiBbd2FybmluZy10eXBlIGVudiBleHRyYV1cbiAod2hlblxuICAod2FybmluZy10eXBlICpjbGpzLXdhcm5pbmdzKilcbiAgKHdoZW4tbGV0XG4gICBbcyAoZXJyb3ItbWVzc2FnZSB3YXJuaW5nLXR5cGUgZXh0cmEpXVxuICAgIz8oOmNsaiAoYmluZGluZyBbKm91dCogKmVycipdIChwcmludGxuIChtZXNzYWdlIGVudiAoc3RyIFwiV0FSTklORzogXCIgcykpKSkgOmNsanMgKGJpbmRpbmcgWypwcmludC1mbiogKnByaW50LWVyci1mbipdIChwcmludGxuIChtZXNzYWdlIGVudiAoc3RyIFwiV0FSTklORzogXCIgcykpKSkpKSkpXG4ifSB7OnN5bSByZXNvbHZlLW5zLWFsaWFzLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyBbW2VudiBuYW1lXSBbZW52IG5hbWUgbm90LWZvdW5kXV19LCA6c291cmNlICIoZGVmblxuIHJlc29sdmUtbnMtYWxpYXNcbiAoW2VudiBuYW1lXSAocmVzb2x2ZS1ucy1hbGlhcyBlbnYgbmFtZSAoc3ltYm9sIG5hbWUpKSlcbiAoW2VudiBuYW1lIG5vdC1mb3VuZF1cbiAgKGxldCBbc3ltIChzeW1ib2wgbmFtZSldIChnZXQgKDpyZXF1aXJlcyAoOm5zIGVudikpIHN5bSBub3QtZm91bmQpKSkpXG4ifSB7OnN5bSBpbnRlcm4tbWFjcm9zLCA6bWV0YSB7OmRvYyAiR2l2ZW4gYSBDbG9qdXJlIG5hbWVzcGFjZSBpbnRlcm4gYWxsIG1hY3JvcyBpbnRvIHRoZSBhbWJpZW50IENsb2p1cmVTY3JpcHRcbiAgIGFuYWx5c2lzIGVudmlyb25tZW50LiIsIDphcmdsaXN0cyBbW25zXSBbbnMgcmVsb2FkXV19LCA6c291cmNlICIoZGVmblxuIGludGVybi1tYWNyb3NcbiBcIkdpdmVuIGEgQ2xvanVyZSBuYW1lc3BhY2UgaW50ZXJuIGFsbCBtYWNyb3MgaW50byB0aGUgYW1iaWVudCBDbG9qdXJlU2NyaXB0XFxuICAgYW5hbHlzaXMgZW52aXJvbm1lbnQuXCJcbiAoW25zXSAoaW50ZXJuLW1hY3JvcyBucyBmYWxzZSkpXG4gKFtucyByZWxvYWRdXG4gICh3aGVuXG4gICAob3JcbiAgICAobmlsPyAoZ2V0cyBAZW52Lypjb21waWxlciogOmNsanMuYW5hbHl6ZXIvbmFtZXNwYWNlcyBucyA6bWFjcm9zKSlcbiAgICByZWxvYWQpXG4gICAoc3dhcCFcbiAgICBlbnYvKmNvbXBpbGVyKlxuICAgIGFzc29jLWluXG4gICAgWzpjbGpzLmFuYWx5emVyL25hbWVzcGFjZXMgbnMgOm1hY3Jvc11cbiAgICAoLT4+XG4gICAgICM/KDpjbGogKG5zLWludGVybnMgbnMpIDpjbGpzIChucy1pbnRlcm5zKiBucykpXG4gICAgIChmaWx0ZXIgKGZuIFtbXyB2XV0gKC5pc01hY3JvIHYpKSlcbiAgICAgKG1hcFxuICAgICAgKGZuXG4gICAgICAgW1trIHZdXVxuICAgICAgIFtrXG4gICAgICAgIChhcy0+XG4gICAgICAgICAobWV0YSB2KVxuICAgICAgICAgdm1cbiAgICAgICAgIChsZXRcbiAgICAgICAgICBbbnMgKC5nZXROYW1lICg6bnMgdm0pKV1cbiAgICAgICAgICAoYXNzb2NcbiAgICAgICAgICAgdm1cbiAgICAgICAgICAgOm5zXG4gICAgICAgICAgIG5zXG4gICAgICAgICAgIDpuYW1lXG4gICAgICAgICAgIChzeW1ib2wgKHN0ciBucykgKHN0ciBrKSlcbiAgICAgICAgICAgOm1hY3JvXG4gICAgICAgICAgIHRydWUpKSldKSlcbiAgICAgKGludG8ge30pKSkpKSlcbiJ9IHs6c3ltIGNvbnN0LWV4cHItPmNvbnN0YW50LXZhbHVlLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3s6a2V5cyBbb3BdLCA6YXMgZX1dKX0sIDpzb3VyY2UgIihkZWZuXG4gY29uc3QtZXhwci0+Y29uc3RhbnQtdmFsdWVcbiBbezprZXlzIFtvcF0sIDphcyBlfV1cbiAoY2FzZVxuICBvcFxuICA6cXVvdGVcbiAgKGNvbnN0LWV4cHItPmNvbnN0YW50LXZhbHVlICg6ZXhwciBlKSlcbiAgOmNvbnN0XG4gICg6dmFsIGUpXG4gIDptYXBcbiAgKHppcG1hcFxuICAgKG1hcCBjb25zdC1leHByLT5jb25zdGFudC12YWx1ZSAoOmtleXMgZSkpXG4gICAobWFwIGNvbnN0LWV4cHItPmNvbnN0YW50LXZhbHVlICg6dmFscyBlKSkpXG4gIDpzZXRcbiAgKGludG8gI3t9IChtYXAgY29uc3QtZXhwci0+Y29uc3RhbnQtdmFsdWUgKDppdGVtcyBlKSkpXG4gIDp2ZWN0b3JcbiAgKGludG8gW10gKG1hcCBjb25zdC1leHByLT5jb25zdGFudC12YWx1ZSAoOml0ZW1zIGUpKSkpKVxuIn0gezpzeW0gKm1hY3JvLWluZmVyKiwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgKm1hY3JvLWluZmVyKiB0cnVlKVxuIn0gezpzeW0gZ2VuLWNvbnN0YW50LWlkLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3ZhbHVlXSl9LCA6c291cmNlICIoZGVmblxuIGdlbi1jb25zdGFudC1pZFxuIFt2YWx1ZV1cbiAobGV0XG4gIFtwcmVmaXhcbiAgIChjb25kXG4gICAgKGtleXdvcmQ/IHZhbHVlKVxuICAgIFwiY3N0JGt3JFwiXG4gICAgKHN5bWJvbD8gdmFsdWUpXG4gICAgXCJjc3Qkc3ltJFwiXG4gICAgOmVsc2VcbiAgICAodGhyb3dcbiAgICAgIz8oOmNsaiAoRXhjZXB0aW9uLiAoc3RyIFwiY29uc3RhbnQgdHlwZSBcIiAodHlwZSB2YWx1ZSkgXCIgbm90IHN1cHBvcnRlZFwiKSkgOmNsanMgKGpzL0Vycm9yLiAoc3RyIFwiY29uc3RhbnQgdHlwZSBcIiAodHlwZSB2YWx1ZSkgXCIgbm90IHN1cHBvcnRlZFwiKSkpKSlcbiAgIG5hbWVcbiAgIChpZiAoa2V5d29yZD8gdmFsdWUpIChzdWJzIChzdHIgdmFsdWUpIDEpIChzdHIgdmFsdWUpKVxuICAgbmFtZVxuICAgKGlmXG4gICAgKD0gXCIuXCIgbmFtZSlcbiAgICBcIl9ET1RfXCJcbiAgICAoLT5cbiAgICAgbmFtZVxuICAgICAoc3RyaW5nL3JlcGxhY2UgXCItXCIgXCJfREFTSF9cIilcbiAgICAgKG11bmdlKVxuICAgICAoc3RyaW5nL3JlcGxhY2UgXCIuXCIgXCIkXCIpXG4gICAgIChzdHJpbmcvcmVwbGFjZVxuICAgICAgI1wiKD9pKVteYS16MC05JF9dXCJcbiAgICAgIChmbiogW3AxX180MjgwOCNdIChoZXgtZm9ybWF0IHAxX180MjgwOCMgNCkpKSkpXVxuICAoc3ltYm9sIChzdHIgcHJlZml4IG5hbWUpKSkpXG4ifSB7OnN5bSBsaWImc3VibGliLCA6bWV0YSB7OmRvYyAiSWYgYSBsaWJyYXJ5IG5hbWUgaGFzIHRoZSBmb3JtIGZvbyRiYXIsIHJldHVybiBhIHZlY3RvciBvZiB0aGUgbGlicmFyeSBhbmRcbiAgIHRoZSBzdWJsaWJyYXJ5IHByb3BlcnR5LiIsIDphcmdsaXN0cyAoW2xpYl0pfSwgOnNvdXJjZSAiKGRlZm5cbiBsaWImc3VibGliXG4gXCJJZiBhIGxpYnJhcnkgbmFtZSBoYXMgdGhlIGZvcm0gZm9vJGJhciwgcmV0dXJuIGEgdmVjdG9yIG9mIHRoZSBsaWJyYXJ5IGFuZFxcbiAgIHRoZSBzdWJsaWJyYXJ5IHByb3BlcnR5LlwiXG4gW2xpYl1cbiAoaWYtbGV0XG4gIFt4cyAocmUtbWF0Y2hlcyAjXCIoLiopXFwkKC4qKVwiIChzdHIgbGliKSldXG4gIChkcm9wIDEgeHMpXG4gIFtsaWIgbmlsXSkpXG4ifSB7OnN5bSBtYWNyby1hdXRvbG9hZC1ucz8sIDptZXRhIHs6ZG9jICJHaXZlbiBhIHNwZWMgZm9ybSBjaGVjayB3aGV0aGVyIHRoZSBzcGVjIG5hbWVzcGFjZSByZXF1aXJlcyBhIG1hY3JvIGZpbGVcbiAgIG9mIHRoZSBzYW1lIG5hbWUuIElmIHNvIHJldHVybiB0cnVlLiIsIDphcmdsaXN0cyAoW2Zvcm1dKX0sIDpzb3VyY2UgIihkZWZuXG4gbWFjcm8tYXV0b2xvYWQtbnM/XG4gXCJHaXZlbiBhIHNwZWMgZm9ybSBjaGVjayB3aGV0aGVyIHRoZSBzcGVjIG5hbWVzcGFjZSByZXF1aXJlcyBhIG1hY3JvIGZpbGVcXG4gICBvZiB0aGUgc2FtZSBuYW1lLiBJZiBzbyByZXR1cm4gdHJ1ZS5cIlxuICM/KDpjbGpzIHs6dGFnIGJvb2xlYW59KVxuIFtmb3JtXVxuICh3aGVuXG4gICptYWNyby1pbmZlcipcbiAgKGxldFxuICAgW25zXG4gICAgKGlmIChzZXF1ZW50aWFsPyBmb3JtKSAoZmlyc3QgZm9ybSkgZm9ybSlcbiAgICB7OmtleXMgW3VzZS1tYWNyb3MgcmVxdWlyZS1tYWNyb3NdfVxuICAgIChvclxuICAgICAoZ2V0LWluIEBlbnYvKmNvbXBpbGVyKiBbOmNsanMuYW5hbHl6ZXIvbmFtZXNwYWNlcyBuc10pXG4gICAgICM/KDpjbGogKHdoZW4tbGV0IFtyZXMgKHV0aWwvbnMtPnNvdXJjZSBucyldICg6YXN0IChwYXJzZS1ucyByZXMpKSkpKV1cbiAgIChvclxuICAgIChzb21lICN7bnN9ICh2YWxzIHVzZS1tYWNyb3MpKVxuICAgIChzb21lICN7bnN9ICh2YWxzIHJlcXVpcmUtbWFjcm9zKSkpKSkpXG4ifSB7OnN5bSBnZXQtdGFnLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2VdKX0sIDpzb3VyY2UgIihkZWZuXG4gZ2V0LXRhZ1xuIFtlXVxuIChpZi1zb21lXG4gIFt0YWcgKC0+IGUgOmZvcm0gbWV0YSA6dGFnKV1cbiAgdGFnXG4gIChpZi1zb21lIFt0YWcgKC0+IGUgOnRhZyldIHRhZyAoLT4gZSA6aW5mbyA6dGFnKSkpKVxuIn0gezpzeW0gaW1wbGljaXQtbnNlcywgOm1ldGEge30sIDpzb3VyY2UgIihkZWZcbiBpbXBsaWNpdC1uc2VzXG4gJyN7U3RyaW5nIGdvb2cuc3RyaW5nIGdvb2cgZ29vZy5vYmplY3QgTWF0aCBnb29nLmFycmF5fSlcbiJ9IHs6c3ltIHZhbGlkLXByb3RvLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuIHZhbGlkLXByb3RvIFt4XSAod2hlbiAoc3ltYm9sPyB4KSB4KSlcbiJ9IHs6c3ltIG5vcm1hbGl6ZS1qcy10YWcsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBub3JtYWxpemUtanMtdGFnXG4gW3hdXG4gKGlmLW5vdFxuICAoPSAnanMgeClcbiAgKHdpdGgtbWV0YVxuICAgJ2pzXG4gICB7OnByZWZpeFxuICAgIChjb25qXG4gICAgICgtPj4gKHN0cmluZy9zcGxpdCAobmFtZSB4KSAjXCJcXC5cIikgKG1hcCBzeW1ib2wpIHZlYylcbiAgICAgJ3Byb3RvdHlwZSl9KVxuICB4KSlcbiJ9IHs6c3ltIGFuYWx5emUtbGlzdCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtlbnYgZm9ybV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBhbmFseXplLWxpc3RcbiBbZW52IGZvcm1dXG4gKGxldFxuICBbZXhwci1lbnZcbiAgIChhc3NvYyBlbnYgOmNvbnRleHQgOmV4cHIpXG4gICBpdGVtc1xuICAgKGRpc2FsbG93aW5nLXJlY3VyXG4gICAgKG1hcHYgKGZuKiBbcDFfXzQyODU0I10gKGFuYWx5emUgZXhwci1lbnYgcDFfXzQyODU0IykpIGZvcm0pKV1cbiAgKGFuYWx5emUtd3JhcC1tZXRhXG4gICB7Om9wIDpsaXN0LFxuICAgIDplbnYgZW52LFxuICAgIDpmb3JtIGZvcm0sXG4gICAgOml0ZW1zIGl0ZW1zLFxuICAgIDpjaGlsZHJlbiBbOml0ZW1zXSxcbiAgICA6dGFnICdjbGpzLmNvcmUvSUxpc3R9KSkpXG4ifSB7OnN5bSB3YXJuaW5nLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3dhcm5pbmctdHlwZSBlbnYgZXh0cmFdKX0sIDpzb3VyY2UgIihkZWZuXG4gd2FybmluZ1xuIFt3YXJuaW5nLXR5cGUgZW52IGV4dHJhXVxuIChkb3NlcVxuICBbaGFuZGxlciAqY2xqcy13YXJuaW5nLWhhbmRsZXJzKl1cbiAgKGhhbmRsZXIgd2FybmluZy10eXBlIGVudiBleHRyYSkpKVxuIn0gezpzeW0gaW1wbGljaXQtaW1wb3J0PywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtlbnYgcHJlZml4IHN1ZmZpeF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBpbXBsaWNpdC1pbXBvcnQ/XG4gIz8oOmNsanMgezp0YWcgYm9vbGVhbn0pXG4gW2VudiBwcmVmaXggc3VmZml4XVxuIChjb250YWlucz8gaW1wbGljaXQtbnNlcyBwcmVmaXgpKVxuIn0gezpzeW0gbWlzc2luZy11c2UtbWFjcm9zLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3VzZS1tYWNyb3MgZW52XSl9LCA6c291cmNlICIoZGVmblxuIG1pc3NpbmctdXNlLW1hY3Jvc1xuIFt1c2UtbWFjcm9zIGVudl1cbiAobGV0XG4gIFtjZW52IEBlbnYvKmNvbXBpbGVyKl1cbiAgKGludG9cbiAgIHt9XG4gICAoZmlsdGVyIChmbiBbW3N5bSBsaWJdXSAobWlzc2luZy11c2UtbWFjcm8/IGxpYiBzeW0pKSB1c2UtbWFjcm9zKSkpKVxuIn0gezpzeW0gYW5hbHl6ZSosIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZW52IGZvcm0gbmFtZSBvcHRzXSl9LCA6c291cmNlICIoZGVmblxuIGFuYWx5emUqXG4gW2VudiBmb3JtIG5hbWUgb3B0c11cbiAobGV0XG4gIFtwYXNzZXNcbiAgICpwYXNzZXMqXG4gICBwYXNzZXNcbiAgIChpZiAobmlsPyBwYXNzZXMpIGRlZmF1bHQtcGFzc2VzIHBhc3NlcylcbiAgIGZvcm1cbiAgIChpZiAoaW5zdGFuY2U/IExhenlTZXEgZm9ybSkgKGlmIChzZXEgZm9ybSkgZm9ybSAoKSkgZm9ybSlcbiAgIGFzdFxuICAgKGFuYWx5emUtZm9ybSBlbnYgZm9ybSBuYW1lIG9wdHMpXVxuICAocmVkdWNlIChmbiBbYXN0IHBhc3NdIChwYXNzIGVudiBhc3Qgb3B0cykpIGFzdCBwYXNzZXMpKSlcbiJ9IHs6c3ltIC1jbGpzLW1hY3Jvcy1sb2FkZWQsIDptZXRhIHt9LCA6c291cmNlICIoZGVmIC1jbGpzLW1hY3Jvcy1sb2FkZWQgKGF0b20gZmFsc2UpKVxuIn0gezpzeW0gY2hlY2stdXNlcywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt1c2VzIGVudl0pfSwgOnNvdXJjZSAiKGRlZm5cbiBjaGVjay11c2VzXG4gW3VzZXMgZW52XVxuIChsZXRcbiAgW2NlbnYgQGVudi8qY29tcGlsZXIqXVxuICAoZG9zZXFcbiAgIFtbc3ltIGxpYl0gdXNlc11cbiAgICh3aGVuXG4gICAgKG1pc3NpbmctdXNlPyBsaWIgc3ltIGNlbnYpXG4gICAgKHRocm93XG4gICAgIChlcnJvclxuICAgICAgZW52XG4gICAgICAoZXJyb3ItbWVzc2FnZVxuICAgICAgIDp1bmRlY2xhcmVkLW5zLWZvcm1cbiAgICAgICB7OnR5cGUgXCJ2YXJcIiwgOmxpYiBsaWIsIDpzeW0gc3ltfSkpKSkpKSlcbiJ9IHs6c3ltIGZpbmQtbWF0Y2hpbmctbWV0aG9kLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2YgcGFyYW1zXSl9LCA6c291cmNlICIoZGVmblxuIGZpbmQtbWF0Y2hpbmctbWV0aG9kXG4gW2YgcGFyYW1zXVxuIChsZXRcbiAgW21ldGhvZHMgKG9yICg6bWV0aG9kcyBmKSAoLT4gZiA6aW5mbyA6bWV0aG9kcykpIGMgKGNvdW50IHBhcmFtcyldXG4gIChzb21lXG4gICAoZm4gW21dIChhbmQgKG9yICg9PSAoOmZpeGVkLWFyaXR5IG0pIGMpICg6dmFyaWFkaWM/IG0pKSBtKSlcbiAgIG1ldGhvZHMpKSlcbiJ9IHs6c3ltICpwcml2YXRlLXZhci1hY2Nlc3Mtbm93YXJuKiwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgKnByaXZhdGUtdmFyLWFjY2Vzcy1ub3dhcm4qIGZhbHNlKVxuIn0gezpzeW0gaW52b2tlLWFyZy10eXBlLXZhbGlkYXRvcnMsIDptZXRhIHt9LCA6c291cmNlICIoZGVmXG4gaW52b2tlLWFyZy10eXBlLXZhbGlkYXRvcnNcbiAobGV0XG4gIFthZ2V0LXZhbGlkYXRvclxuICAgezp2YWxpZD9cbiAgICAoZm4qXG4gICAgIFtwMV9fNDI4NjEjXVxuICAgICAoYW5kXG4gICAgICAoYXJyYXktdHlwZT8gKGZpcnN0IHAxX180Mjg2MSMpKVxuICAgICAgKGV2ZXJ5PyBudW1lcmljLXR5cGU/IChyZXN0IHAxX180Mjg2MSMpKSkpLFxuICAgIDp3YXJuaW5nLXR5cGUgOmludmFsaWQtYXJyYXktYWNjZXNzfVxuICAgYXNldC12YWxpZGF0b3JcbiAgIHs6dmFsaWQ/XG4gICAgKGZuKlxuICAgICBbcDFfXzQyODYyI11cbiAgICAgKGFuZFxuICAgICAgKGFycmF5LXR5cGU/IChmaXJzdCBwMV9fNDI4NjIjKSlcbiAgICAgIChldmVyeT8gbnVtZXJpYy10eXBlPyAoYnV0bGFzdCAocmVzdCBwMV9fNDI4NjIjKSkpKSksXG4gICAgOndhcm5pbmctdHlwZSA6aW52YWxpZC1hcnJheS1hY2Nlc3N9XVxuICB7J2NsanMuY29yZS9jaGVja2VkLWFnZXQgYWdldC12YWxpZGF0b3IsXG4gICAnY2xqcy5jb3JlL2NoZWNrZWQtYXNldCBhc2V0LXZhbGlkYXRvcixcbiAgICdjbGpzLmNvcmUvY2hlY2tlZC1hZ2V0JyBhZ2V0LXZhbGlkYXRvcixcbiAgICdjbGpzLmNvcmUvY2hlY2tlZC1hc2V0JyBhc2V0LXZhbGlkYXRvcn0pKVxuIn0gezpzeW0gKmNsanMtZmlsZSosIDptZXRhIHt9LCA6c291cmNlICIoZGVmICpjbGpzLWZpbGUqIG5pbClcbiJ9IHs6c3ltICpmaWxlLWRlZnMqLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiAqZmlsZS1kZWZzKiBuaWwpXG4ifSB7OnN5bSBpbmZlci1pZiwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtlbnYgZV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBpbmZlci1pZlxuIFtlbnYgZV1cbiAobGV0XG4gIFt7OmtleXMgW29wIGZvcm1dfVxuICAgKHVud3JhcC1xdW90ZSAoOnRlc3QgZSkpXG4gICB0aGVuLXRhZ1xuICAgKGluZmVyLXRhZyBlbnYgKDp0aGVuIGUpKV1cbiAgKGlmXG4gICAoYW5kXG4gICAgIz8oOmNsaiAoPSBvcCA6Y29uc3QpIDpjbGpzIChrZXl3b3JkLWlkZW50aWNhbD8gb3AgOmNvbnN0KSlcbiAgICAobm90IChuaWw/IGZvcm0pKVxuICAgIChub3QgKGZhbHNlPyBmb3JtKSkpXG4gICB0aGVuLXRhZ1xuICAgKGxldFxuICAgIFtlbHNlLXRhZyAoaW5mZXItdGFnIGVudiAoOmVsc2UgZSkpXVxuICAgIChjb25kXG4gICAgIChvclxuICAgICAgIz8oOmNsaiAoPSB0aGVuLXRhZyBlbHNlLXRhZykgOmNsanMgKHN5bWJvbC1pZGVudGljYWw/IHRoZW4tdGFnIGVsc2UtdGFnKSlcbiAgICAgICM/KDpjbGogKD0gZWxzZS10YWcgaW1wbC9JR05PUkVfU1lNKSA6Y2xqcyAoc3ltYm9sLWlkZW50aWNhbD8gZWxzZS10YWcgaW1wbC9JR05PUkVfU1lNKSkpXG4gICAgIHRoZW4tdGFnXG4gICAgICM/KDpjbGogKD0gdGhlbi10YWcgaW1wbC9JR05PUkVfU1lNKSA6Y2xqcyAoc3ltYm9sLWlkZW50aWNhbD8gdGhlbi10YWcgaW1wbC9JR05PUkVfU1lNKSlcbiAgICAgZWxzZS10YWdcbiAgICAgKGFuZFxuICAgICAgKG9yIChzb21lPyAoZ2V0IGltcGwvTk9UX05BVElWRSB0aGVuLXRhZykpICh0eXBlPyBlbnYgdGhlbi10YWcpKVxuICAgICAgKG9yIChzb21lPyAoZ2V0IGltcGwvTk9UX05BVElWRSBlbHNlLXRhZykpICh0eXBlPyBlbnYgZWxzZS10YWcpKSlcbiAgICAgJ2NsalxuICAgICA6ZWxzZVxuICAgICAoaWZcbiAgICAgIChhbmRcbiAgICAgICAoc29tZT8gKGdldCBpbXBsL0JPT0xFQU5fT1JfU0VRIHRoZW4tdGFnKSlcbiAgICAgICAoc29tZT8gKGdldCBpbXBsL0JPT0xFQU5fT1JfU0VRIGVsc2UtdGFnKSkpXG4gICAgICAnc2VxXG4gICAgICAobGV0XG4gICAgICAgW3RoZW4tdGFnXG4gICAgICAgIChpZlxuICAgICAgICAgIz8oOmNsaiAoc2V0PyB0aGVuLXRhZykgOmNsanMgKGltcGwvY2xqcy1zZXQ/IHRoZW4tdGFnKSlcbiAgICAgICAgIHRoZW4tdGFnXG4gICAgICAgICAje3RoZW4tdGFnfSlcbiAgICAgICAgZWxzZS10YWdcbiAgICAgICAgKGlmXG4gICAgICAgICAjPyg6Y2xqIChzZXQ/IGVsc2UtdGFnKSA6Y2xqcyAoaW1wbC9jbGpzLXNldD8gZWxzZS10YWcpKVxuICAgICAgICAgZWxzZS10YWdcbiAgICAgICAgICN7ZWxzZS10YWd9KV1cbiAgICAgICAoaW50byB0aGVuLXRhZyBlbHNlLXRhZykpKSkpKSkpXG4ifSB7OnN5bSAqdmVyYm9zZSosIDptZXRhIHt9LCA6c291cmNlICIoZGVmICp2ZXJib3NlKiBmYWxzZSlcbiJ9IHs6c3ltIGFuYWx5emUtanMtdmFsdWUsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZW52IGZvcm1dKX0sIDpzb3VyY2UgIihkZWZuXG4gYW5hbHl6ZS1qcy12YWx1ZVxuIFtlbnYgZm9ybV1cbiAobGV0XG4gIFt2YWwgKC4tdmFsIGZvcm0pIGV4cHItZW52IChhc3NvYyBlbnYgOmNvbnRleHQgOmV4cHIpXVxuICAoaWZcbiAgIChtYXA/IHZhbClcbiAgIChsZXRcbiAgICBba2V5c1xuICAgICAodmVjIChrZXlzIHZhbCkpXG4gICAgIHZhbHNcbiAgICAgKGRpc2FsbG93aW5nLXJlY3VyXG4gICAgICAobWFwdlxuICAgICAgIChmbiogW3AxX180Mjg1NyNdIChhbmFseXplIGV4cHItZW52IHAxX180Mjg1NyMpKVxuICAgICAgICh2YWxzIHZhbCkpKV1cbiAgICB7Om9wIDpqcy1vYmplY3QsXG4gICAgIDplbnYgZW52LFxuICAgICA6Zm9ybSBmb3JtLFxuICAgICA6a2V5cyBrZXlzLFxuICAgICA6dmFscyB2YWxzLFxuICAgICA6Y2hpbGRyZW4gWzp2YWxzXSxcbiAgICAgOnRhZyAnb2JqZWN0fSlcbiAgIChsZXRcbiAgICBbaXRlbXNcbiAgICAgKGRpc2FsbG93aW5nLXJlY3VyXG4gICAgICAobWFwdiAoZm4qIFtwMV9fNDI4NTgjXSAoYW5hbHl6ZSBleHByLWVudiBwMV9fNDI4NTgjKSkgdmFsKSldXG4gICAgezpvcCA6anMtYXJyYXksXG4gICAgIDplbnYgZW52LFxuICAgICA6Zm9ybSBmb3JtLFxuICAgICA6aXRlbXMgaXRlbXMsXG4gICAgIDpjaGlsZHJlbiBbOml0ZW1zXSxcbiAgICAgOnRhZyAnYXJyYXl9KSkpKVxuIn0gezpzeW0gbnMtPm1vZHVsZS10eXBlLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW25zXSl9LCA6c291cmNlICIoZGVmblxuIG5zLT5tb2R1bGUtdHlwZVxuIFtuc11cbiAoY29uZFxuICAoZ29vZy1tb2R1bGUtZGVwPyBucylcbiAgOmdvb2ctbW9kdWxlXG4gIChqcy1tb2R1bGUtZXhpc3RzPyBucylcbiAgOmpzXG4gIChub2RlLW1vZHVsZS1kZXA/IG5zKVxuICA6bm9kZVxuICAoZGVwLWhhcy1nbG9iYWwtZXhwb3J0cz8gbnMpXG4gIDpnbG9iYWwpKVxuIn0gezpzeW0gc291cmNlLWluZm8sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIFtbZW52XSBbbmFtZSBlbnZdXX0sIDpzb3VyY2UgIihkZWZuXG4gc291cmNlLWluZm9cbiAoW2Vudl0gKHdoZW4gKDpsaW5lIGVudikgKHNvdXJjZS1pbmZvIG5pbCBlbnYpKSlcbiAoW25hbWUgZW52XVxuICAoY29uZC0+XG4gICB7OmZpbGVcbiAgICAoaWZcbiAgICAgKD0gKC0+IGVudiA6bnMgOm5hbWUpICdjbGpzLmNvcmUpXG4gICAgIFwiY2xqcy9jb3JlLmNsanNcIlxuICAgICAqY2xqcy1maWxlKiksXG4gICAgOmxpbmUgKGdldC1saW5lIG5hbWUgZW52KSxcbiAgICA6Y29sdW1uIChnZXQtY29sIG5hbWUgZW52KX1cbiAgICg6cm9vdC1zb3VyY2UtaW5mbyBlbnYpXG4gICAobWVyZ2UgKHNlbGVjdC1rZXlzIGVudiBbOnJvb3Qtc291cmNlLWluZm9dKSkpKSlcbiJ9IHs6c3ltIGFuYWx5emUtZm4tbWV0aG9kLXBhcmFtLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2Vudl0pfSwgOnNvdXJjZSAiKGRlZm5cbiBhbmFseXplLWZuLW1ldGhvZC1wYXJhbVxuIFtlbnZdXG4gKGZuXG4gIFtbbG9jYWxzIHBhcmFtc10gW2FyZy1pZCBuYW1lXV1cbiAgKHdoZW5cbiAgIChuYW1lc3BhY2UgbmFtZSlcbiAgICh0aHJvd1xuICAgIChlcnJvciBlbnYgKHN0ciBcIkNhbid0IHVzZSBxdWFsaWZpZWQgbmFtZSBhcyBwYXJhbWV0ZXI6IFwiIG5hbWUpKSkpXG4gIChsZXRcbiAgIFtsaW5lXG4gICAgKGdldC1saW5lIG5hbWUgZW52KVxuICAgIGNvbHVtblxuICAgIChnZXQtY29sIG5hbWUgZW52KVxuICAgIG5tZXRhXG4gICAgKG1ldGEgbmFtZSlcbiAgICB0YWdcbiAgICAoOnRhZyBubWV0YSlcbiAgICBzaGFkb3dcbiAgICAod2hlbiAoc29tZT8gbG9jYWxzKSAoaGFuZGxlLXN5bWJvbC1sb2NhbCBuYW1lIChsb2NhbHMgbmFtZSkpKVxuICAgIGVudlxuICAgIChtZXJnZSAoc2VsZWN0LWtleXMgZW52IFs6Y29udGV4dF0pIHs6bGluZSBsaW5lLCA6Y29sdW1uIGNvbHVtbn0pXG4gICAgcGFyYW1cbiAgICB7Om5hbWUgbmFtZSxcbiAgICAgOmJpbmRpbmctZm9ybT8gdHJ1ZSxcbiAgICAgOm9wIDpiaW5kaW5nLFxuICAgICA6ZW52IGVudixcbiAgICAgOmNvbHVtbiBjb2x1bW4sXG4gICAgIDpsaW5lIGxpbmUsXG4gICAgIDphcmctaWQgYXJnLWlkLFxuICAgICA6aW5mbyB7Om5hbWUgbmFtZSwgOnNoYWRvdyBzaGFkb3d9LFxuICAgICA6dGFnIHRhZyxcbiAgICAgOnNoYWRvdyBzaGFkb3csXG4gICAgIDpsb2NhbCA6YXJnfV1cbiAgIFsoYXNzb2MgbG9jYWxzIG5hbWUgcGFyYW0pIChjb25qIHBhcmFtcyBwYXJhbSldKSkpXG4ifSB7OnN5bSBhbmFseXplLXNldCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtlbnYgZm9ybV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBhbmFseXplLXNldFxuIFtlbnYgZm9ybV1cbiAobGV0XG4gIFtleHByLWVudlxuICAgKGFzc29jIGVudiA6Y29udGV4dCA6ZXhwcilcbiAgIGl0ZW1zXG4gICAoZGlzYWxsb3dpbmctcmVjdXJcbiAgICAobWFwdiAoZm4qIFtwMV9fNDI4NTYjXSAoYW5hbHl6ZSBleHByLWVudiBwMV9fNDI4NTYjKSkgZm9ybSkpXVxuICAoYW5hbHl6ZS13cmFwLW1ldGFcbiAgIHs6b3AgOnNldCxcbiAgICA6ZW52IGVudixcbiAgICA6Zm9ybSBmb3JtLFxuICAgIDppdGVtcyBpdGVtcyxcbiAgICA6Y2hpbGRyZW4gWzppdGVtc10sXG4gICAgOnRhZyAnY2xqcy5jb3JlL0lTZXR9KSkpXG4ifSB7OnN5bSBudW1lcmljLXR5cGU/LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3RdKX0sIDpzb3VyY2UgIihkZWZuXG4gbnVtZXJpYy10eXBlP1xuICM/KDpjbGpzIHs6dGFnIGJvb2xlYW59KVxuIFt0XVxuIChjb25kXG4gIChuaWw/IHQpXG4gIHRydWVcbiAgKD0gJ2Nsai1uaWwgdClcbiAgdHJ1ZVxuICAoanMtdGFnPyB0KVxuICB0cnVlXG4gIDplbHNlXG4gIChpZlxuICAgKGFuZCAoc3ltYm9sPyB0KSAoc29tZT8gKGdldCBOVU1FUklDX1NFVCB0KSkpXG4gICB0cnVlXG4gICAod2hlblxuICAgICM/KDpjbGogKHNldD8gdCkgOmNsanMgKGltcGwvY2xqcy1zZXQ/IHQpKVxuICAgIChvclxuICAgICAoY29udGFpbnM/IHQgJ251bWJlcilcbiAgICAgKGNvbnRhaW5zPyB0ICdsb25nKVxuICAgICAoY29udGFpbnM/IHQgJ2RvdWJsZSlcbiAgICAgKGNvbnRhaW5zPyB0ICdhbnkpXG4gICAgIChjb250YWlucz8gdCAnanMpKSkpKSlcbiJ9IHs6c3ltIGFzdD8sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBhc3Q/XG4gIz8oOmNsanMgezp0YWcgYm9vbGVhbn0pXG4gW3hdXG4gKGFuZCAobWFwPyB4KSAoY29udGFpbnM/IHggOm9wKSkpXG4ifSB7OnN5bSBjaGVja2VkLWFycmF5cywgOm1ldGEgezpkb2MgIlJldHVybnMgZmFsc2UteSwgOndhcm4sIG9yIDplcnJvciBiYXNlZCBvbiBjb25maWd1cmF0aW9uIGFuZCB0aGVcbiAgIGN1cnJlbnQgdmFsdWUgb2YgKnVuY2hlY2tlZC1hcnJheXMqLiIsIDphcmdsaXN0cyAoW10pfSwgOnNvdXJjZSAiKGRlZm5cbiBjaGVja2VkLWFycmF5c1xuIFwiUmV0dXJucyBmYWxzZS15LCA6d2Fybiwgb3IgOmVycm9yIGJhc2VkIG9uIGNvbmZpZ3VyYXRpb24gYW5kIHRoZVxcbiAgIGN1cnJlbnQgdmFsdWUgb2YgKnVuY2hlY2tlZC1hcnJheXMqLlwiXG4gW11cbiAod2hlblxuICAoYW5kXG4gICAobm90PSA6YWR2YW5jZWQgKDpvcHRpbWl6YXRpb25zIChjb21waWxlci1vcHRpb25zKSkpXG4gICAobm90ICp1bmNoZWNrZWQtYXJyYXlzKikpXG4gICpjaGVja2VkLWFycmF5cyopKVxuIn0gezpzeW0gZWxpZGUtZW52LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2VudiBhc3Qgb3B0c10pfSwgOnNvdXJjZSAiKGRlZm4gZWxpZGUtZW52IFtlbnYgYXN0IG9wdHNdIChkaXNzb2MgYXN0IDplbnYpKVxuIn0gezpzeW0ganMtbW9kdWxlLWV4aXN0cz8qLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiBqcy1tb2R1bGUtZXhpc3RzPyogKG1lbW9pemUgaW50ZXJuYWwtanMtbW9kdWxlLWV4aXN0cz8pKVxuIn0gezpzeW0gcGFyc2UtcmVxdWlyZS1zcGVjLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2VudiBtYWNyb3M/IGRlcHMgYWxpYXNlcyBzcGVjXSl9LCA6c291cmNlICIoZGVmblxuIHBhcnNlLXJlcXVpcmUtc3BlY1xuIFtlbnYgbWFjcm9zPyBkZXBzIGFsaWFzZXMgc3BlY11cbiAoaWZcbiAgKG9yIChzeW1ib2w/IHNwZWMpIChzdHJpbmc/IHNwZWMpKVxuICAocmVjdXIgZW52IG1hY3Jvcz8gZGVwcyBhbGlhc2VzIFtzcGVjXSlcbiAgKGRvXG4gICAoYmFzaWMtdmFsaWRhdGUtbnMtc3BlYyBlbnYgbWFjcm9zPyBzcGVjKVxuICAgKGxldFxuICAgIFtbbGliICYgb3B0c11cbiAgICAgc3BlY1xuICAgICBbbGliIGpzLW1vZHVsZS1wcm92aWRlc11cbiAgICAgKGlmLXNvbWVcbiAgICAgIFtqcy1tb2R1bGUtbmFtZVxuICAgICAgIChnZXRzIEBlbnYvKmNvbXBpbGVyKiA6anMtbW9kdWxlLWluZGV4IChzdHIgbGliKSA6bmFtZSldXG4gICAgICBbKHN5bWJvbCBqcy1tb2R1bGUtbmFtZSkgbGliXVxuICAgICAgW2xpYiBuaWxdKVxuICAgICB7YWxpYXMgOmFzLFxuICAgICAgcmVmZXJyZWQgOnJlZmVyLFxuICAgICAgcmVuYW1lZCA6cmVuYW1lLFxuICAgICAgOm9yIHthbGlhcyAoaWYgKHN0cmluZz8gbGliKSAoc3ltYm9sIChtdW5nZSBsaWIpKSBsaWIpfX1cbiAgICAgKGFwcGx5IGhhc2gtbWFwIG9wdHMpXG4gICAgIHJlZmVycmVkLXdpdGhvdXQtcmVuYW1lZFxuICAgICAoc2VxIChyZW1vdmUgKHNldCAoa2V5cyByZW5hbWVkKSkgcmVmZXJyZWQpKVxuICAgICBbcmsgdWsgcmVua11cbiAgICAgKGlmXG4gICAgICBtYWNyb3M/XG4gICAgICBbOnJlcXVpcmUtbWFjcm9zIDp1c2UtbWFjcm9zIDpyZW5hbWUtbWFjcm9zXVxuICAgICAgWzpyZXF1aXJlIDp1c2UgOnJlbmFtZV0pXVxuICAgICh3aGVuLW5vdFxuICAgICAob3IgKHN5bWJvbD8gYWxpYXMpIChuaWw/IGFsaWFzKSlcbiAgICAgKHRocm93XG4gICAgICAoZXJyb3JcbiAgICAgICBlbnZcbiAgICAgICAocGFyc2UtbnMtZXJyb3ItbXNnXG4gICAgICAgIHNwZWNcbiAgICAgICAgXCI6YXMgbXVzdCBiZSBmb2xsb3dlZCBieSBhIHN5bWJvbCBpbiA6cmVxdWlyZSAvIDpyZXF1aXJlLW1hY3Jvc1wiKSkpKVxuICAgICh3aGVuXG4gICAgIChzb21lPyBhbGlhcylcbiAgICAgKGxldFxuICAgICAgW2FsaWFzLXR5cGVcbiAgICAgICAoaWYgbWFjcm9zPyA6bWFjcm9zIDpmbnMpXG4gICAgICAgbGliJ1xuICAgICAgICgoYWxpYXMtdHlwZSBAYWxpYXNlcykgYWxpYXMpXVxuICAgICAgKHdoZW5cbiAgICAgICAoYW5kIChzb21lPyBsaWInKSAobm90PSBsaWIgbGliJykpXG4gICAgICAgKHRocm93XG4gICAgICAgIChlcnJvclxuICAgICAgICAgZW52XG4gICAgICAgICAocGFyc2UtbnMtZXJyb3ItbXNnIHNwZWMgXCI6YXMgYWxpYXMgbXVzdCBiZSB1bmlxdWVcIikpKSlcbiAgICAgIChzd2FwIVxuICAgICAgIGFsaWFzZXNcbiAgICAgICB1cGRhdGUtaW5cbiAgICAgICBbYWxpYXMtdHlwZV1cbiAgICAgICBjb25qXG4gICAgICAgW2FsaWFzIGxpYl1cbiAgICAgICAod2hlbiBqcy1tb2R1bGUtcHJvdmlkZXMgW2pzLW1vZHVsZS1wcm92aWRlcyBsaWJdKSkpKVxuICAgICh3aGVuLW5vdFxuICAgICAob3JcbiAgICAgIChhbmQgKHNlcXVlbnRpYWw/IHJlZmVycmVkKSAoZXZlcnk/IHN5bWJvbD8gcmVmZXJyZWQpKVxuICAgICAgKG5pbD8gcmVmZXJyZWQpKVxuICAgICAodGhyb3dcbiAgICAgIChlcnJvclxuICAgICAgIGVudlxuICAgICAgIChwYXJzZS1ucy1lcnJvci1tc2dcbiAgICAgICAgc3BlY1xuICAgICAgICBcIjpyZWZlciBtdXN0IGJlIGZvbGxvd2VkIGJ5IGEgc2VxdWVuY2Ugb2Ygc3ltYm9scyBpbiA6cmVxdWlyZSAvIDpyZXF1aXJlLW1hY3Jvc1wiKSkpKVxuICAgICh3aGVuLW5vdCBtYWNyb3M/IChzd2FwISBkZXBzIGNvbmogbGliKSlcbiAgICAobWVyZ2VcbiAgICAgKHdoZW5cbiAgICAgIChzb21lPyBhbGlhcylcbiAgICAgIHtya1xuICAgICAgIChtZXJnZVxuICAgICAgICB7YWxpYXMgbGlifVxuICAgICAgICB7bGliIGxpYn1cbiAgICAgICAgKHdoZW4ganMtbW9kdWxlLXByb3ZpZGVzIHtqcy1tb2R1bGUtcHJvdmlkZXMgbGlifSkpfSlcbiAgICAgKHdoZW5cbiAgICAgIChzb21lPyByZWZlcnJlZC13aXRob3V0LXJlbmFtZWQpXG4gICAgICB7dWtcbiAgICAgICAoYXBwbHlcbiAgICAgICAgaGFzaC1tYXBcbiAgICAgICAgKGludGVybGVhdmUgcmVmZXJyZWQtd2l0aG91dC1yZW5hbWVkIChyZXBlYXQgbGliKSkpfSlcbiAgICAgKHdoZW5cbiAgICAgIChzb21lPyByZW5hbWVkKVxuICAgICAge3JlbmtcbiAgICAgICAocmVkdWNlXG4gICAgICAgIChmblxuICAgICAgICAgW20gW29yaWdpbmFsIHJlbmFtZWRdXVxuICAgICAgICAgKHdoZW4tbm90XG4gICAgICAgICAgKHNvbWUgI3tvcmlnaW5hbH0gcmVmZXJyZWQpXG4gICAgICAgICAgKHRocm93XG4gICAgICAgICAgIChlcnJvclxuICAgICAgICAgICAgZW52XG4gICAgICAgICAgICAoc3RyIFwiUmVuYW1lZCBzeW1ib2wgXCIgb3JpZ2luYWwgXCIgbm90IHJlZmVycmVkXCIpKSkpXG4gICAgICAgICAoYXNzb2MgbSByZW5hbWVkIChzeW1ib2wgKHN0ciBsaWIpIChzdHIgb3JpZ2luYWwpKSkpXG4gICAgICAgIHt9XG4gICAgICAgIHJlbmFtZWQpfSkpKSkpKVxuIn0gezpzeW0gYW5hbHl6ZS13cmFwLW1ldGEsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZXhwcl0pfSwgOnNvdXJjZSAiKGRlZm5cbiBhbmFseXplLXdyYXAtbWV0YVxuIFtleHByXVxuIChsZXRcbiAgW2Zvcm0gKDpmb3JtIGV4cHIpIG0gKGVsaWRlLWlycmVsZXZhbnQtbWV0YSAobWV0YSBmb3JtKSldXG4gIChpZlxuICAgKHNvbWU/IChzZXEgbSkpXG4gICAobGV0XG4gICAgW2VudlxuICAgICAoOmVudiBleHByKVxuICAgICBleHByXG4gICAgIChhc3NvYy1pbiBleHByIFs6ZW52IDpjb250ZXh0XSA6ZXhwcilcbiAgICAgbWV0YS1leHByXG4gICAgIChhbmFseXplLW1hcCAoOmVudiBleHByKSBtKV1cbiAgICB7Om9wIDp3aXRoLW1ldGEsXG4gICAgIDplbnYgZW52LFxuICAgICA6Zm9ybSBmb3JtLFxuICAgICA6bWV0YSBtZXRhLWV4cHIsXG4gICAgIDpleHByIGV4cHIsXG4gICAgIDpjaGlsZHJlbiBbOm1ldGEgOmV4cHJdfSlcbiAgIGV4cHIpKSlcbiJ9IHs6c3ltIGdldC1qcy10YWcsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZm9ybV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBnZXQtanMtdGFnXG4gW2Zvcm1dXG4gKGxldFxuICBbZm9ybS1tZXRhIChtZXRhIGZvcm0pXVxuICAoaWYtc29tZVxuICAgW3RhZyAoOnRhZyBmb3JtLW1ldGEpXVxuICAgdGFnXG4gICAod2hlbiAodHJ1ZT8gKDpudW1lcmljIGZvcm0tbWV0YSkpICdudW1iZXIpKSkpXG4ifSB7OnN5bSAqYW5hbHl6ZS1kZXBzKiwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgKmFuYWx5emUtZGVwcyogdHJ1ZSlcbiJ9IHs6c3ltIGFuYWx5emUtbGV0LWJpbmRpbmdzKiwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtlbmNsLWVudiBiaW5kaW5ncyBvcF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBhbmFseXplLWxldC1iaW5kaW5ncypcbiBbZW5jbC1lbnYgYmluZGluZ3Mgb3BdXG4gKGxvb3BcbiAgW2Jlc1xuICAgW11cbiAgIGVudlxuICAgKGFzc29jIGVuY2wtZW52IDpjb250ZXh0IDpleHByKVxuICAgYmluZGluZ3NcbiAgIChzZXEgKHBhcnRpdGlvbiAyIGJpbmRpbmdzKSldXG4gIChpZi1zb21lXG4gICBbW25hbWUgaW5pdF0gKGZpcnN0IGJpbmRpbmdzKV1cbiAgIChsZXRcbiAgICBbXVxuICAgICh3aGVuXG4gICAgIChvclxuICAgICAgKHNvbWU/IChuYW1lc3BhY2UgbmFtZSkpXG4gICAgICAjPyg6Y2xqICguY29udGFpbnMgKHN0ciBuYW1lKSBcIi5cIikgOmNsanMgKGdvb2cuc3RyaW5nL2NvbnRhaW5zIChzdHIgbmFtZSkgXCIuXCIpKSlcbiAgICAgKHRocm93IChlcnJvciBlbmNsLWVudiAoc3RyIFwiSW52YWxpZCBsb2NhbCBuYW1lOiBcIiBuYW1lKSkpKVxuICAgIChsZXRcbiAgICAgW2luaXQtZXhwclxuICAgICAgKGFuYWx5emUtbGV0LWJpbmRpbmctaW5pdFxuICAgICAgIGVudlxuICAgICAgIGluaXRcbiAgICAgICAoY29ucyB7OnBhcmFtcyBiZXN9ICpsb29wLWxldHMqKSlcbiAgICAgIGxpbmVcbiAgICAgIChnZXQtbGluZSBuYW1lIGVudilcbiAgICAgIGNvbFxuICAgICAgKGdldC1jb2wgbmFtZSBlbnYpXG4gICAgICBzaGFkb3dcbiAgICAgIChoYW5kbGUtc3ltYm9sLWxvY2FsIG5hbWUgKGdldC1pbiBlbnYgWzpsb2NhbHMgbmFtZV0pKVxuICAgICAgYmVcbiAgICAgIHs6Y2hpbGRyZW4gWzppbml0XSxcbiAgICAgICA6aW5pdCBpbml0LWV4cHIsXG4gICAgICAgOm5hbWUgbmFtZSxcbiAgICAgICA6YmluZGluZy1mb3JtPyB0cnVlLFxuICAgICAgIDpvcCA6YmluZGluZyxcbiAgICAgICA6ZW52IHs6bGluZSBsaW5lLCA6Y29sdW1uIGNvbH0sXG4gICAgICAgOmNvbHVtbiBjb2wsXG4gICAgICAgOmxpbmUgbGluZSxcbiAgICAgICA6aW5mbyB7Om5hbWUgbmFtZSwgOnNoYWRvdyBzaGFkb3d9LFxuICAgICAgIDp0YWcgKGdldC1sZXQtdGFnIG5hbWUgaW5pdC1leHByKSxcbiAgICAgICA6c2hhZG93IHNoYWRvdyxcbiAgICAgICA6bG9jYWwgb3B9XG4gICAgICBiZVxuICAgICAgKGlmXG4gICAgICAgKD0gOmZuICg6b3AgaW5pdC1leHByKSlcbiAgICAgICAobWVyZ2VcbiAgICAgICAgYmVcbiAgICAgICAgezpmbi12YXIgdHJ1ZSxcbiAgICAgICAgIDptZXRob2RzXG4gICAgICAgICAoaW50b1xuICAgICAgICAgIFtdXG4gICAgICAgICAgKG1hcFxuICAgICAgICAgICAoZm4qXG4gICAgICAgICAgICBbcDFfXzQyODI1I11cbiAgICAgICAgICAgIChzZWxlY3Qta2V5cyBwMV9fNDI4MjUjIFs6dGFnIDpmaXhlZC1hcml0eSA6dmFyaWFkaWM/XSkpXG4gICAgICAgICAgICg6bWV0aG9kcyBpbml0LWV4cHIpKSksXG4gICAgICAgICA6dmFyaWFkaWM/ICg6dmFyaWFkaWM/IGluaXQtZXhwciksXG4gICAgICAgICA6bWF4LWZpeGVkLWFyaXR5ICg6bWF4LWZpeGVkLWFyaXR5IGluaXQtZXhwciksXG4gICAgICAgICA6bWV0aG9kLXBhcmFtcyAobWFwIDpwYXJhbXMgKDptZXRob2RzIGluaXQtZXhwcikpfSlcbiAgICAgICBiZSldXG4gICAgIChyZWN1clxuICAgICAgKGNvbmogYmVzIGJlKVxuICAgICAgKGFzc29jLWluIGVudiBbOmxvY2FscyBuYW1lXSBiZSlcbiAgICAgIChuZXh0IGJpbmRpbmdzKSkpKVxuICAgW2JlcyBlbnZdKSkpXG4ifSB7OnN5bSByZXNvbHZlLWltcG9ydCwgOm1ldGEgezpkb2MgImdvb2cubW9kdWxlcyBhcmUgZGV0ZXJtaW5pc3RpY2FsbHkgYXNzaWduZWQgdG8gYSBwcm9wZXJ0eSBvZiB0aGUgbmFtZXNwYWNlLFxuICAgd2UgY2Fubm90IGV4cGVjdCB0aGUgcmVmZXJlbmNlIHdpbGwgYmUgZ2xvYmFsbHkgYXZhaWxhYmxlLCBzbyB3ZSByZXNvbHZlIHRvXG4gICBuYW1lc3BhY2UgbG9jYWwgcmVmZXJlbmNlLiIsIDphcmdsaXN0cyAoW2VudiBpbXBvcnRdKX0sIDpzb3VyY2UgIihkZWZuXG4gcmVzb2x2ZS1pbXBvcnRcbiBcImdvb2cubW9kdWxlcyBhcmUgZGV0ZXJtaW5pc3RpY2FsbHkgYXNzaWduZWQgdG8gYSBwcm9wZXJ0eSBvZiB0aGUgbmFtZXNwYWNlLFxcbiAgIHdlIGNhbm5vdCBleHBlY3QgdGhlIHJlZmVyZW5jZSB3aWxsIGJlIGdsb2JhbGx5IGF2YWlsYWJsZSwgc28gd2UgcmVzb2x2ZSB0b1xcbiAgIG5hbWVzcGFjZSBsb2NhbCByZWZlcmVuY2UuXCJcbiBbZW52IGltcG9ydF1cbiAoaWZcbiAgKGdvb2ctbW9kdWxlLWRlcD8gaW1wb3J0KVxuICAoc3ltYm9sIChtdW5nZS1nb29nLW1vZHVsZS1saWIgKC0+IGVudiA6bnMgOm5hbWUpIGltcG9ydCkpXG4gIGltcG9ydCkpXG4ifSB7OnN5bSBhbmFseXNpcy1lcnJvcj8sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZXhdKX0sIDpzb3VyY2UgIihkZWZuXG4gYW5hbHlzaXMtZXJyb3I/XG4gIz8oOmNsanMgezp0YWcgYm9vbGVhbn0pXG4gW2V4XVxuICg9IDpjbGpzL2FuYWx5c2lzLWVycm9yICg6dGFnIChleC1kYXRhIGV4KSkpKVxuIn0gezpzeW0gcmVwbGFjZS1lbnYtcGFzcywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtuZXctZW52XSl9LCA6c291cmNlICIoZGVmblxuIHJlcGxhY2UtZW52LXBhc3NcbiBbbmV3LWVudl1cbiAoZm4gW2VudiBhc3Qgb3B0c10gKGFzc29jIGFzdCA6ZW52IG5ldy1lbnYpKSlcbiJ9IHs6c3ltIHBhcnNlLW5zLWV4Y2x1ZGVzLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2VudiBhcmdzXSl9LCA6c291cmNlICIoZGVmblxuIHBhcnNlLW5zLWV4Y2x1ZGVzXG4gW2VudiBhcmdzXVxuIChyZWR1Y2VcbiAgKGZuXG4gICBbcyBbayAmIGZpbHRlcnNdXVxuICAgKGlmXG4gICAgKD0gayA6cmVmZXItY2xvanVyZSlcbiAgICAoZG9cbiAgICAgKHdoZW5cbiAgICAgIChzZXEgKDpleGNsdWRlcyBzKSlcbiAgICAgICh0aHJvd1xuICAgICAgIChlcnJvclxuICAgICAgICBlbnZcbiAgICAgICAgXCJPbmx5IG9uZSA6cmVmZXItY2xvanVyZSBmb3JtIGlzIGFsbG93ZWQgcGVyIG5hbWVzcGFjZSBkZWZpbml0aW9uXCIpKSlcbiAgICAgKGxldFxuICAgICAgW3ZhbGlkLWt3c1xuICAgICAgICN7OmV4Y2x1ZGUgOnJlbmFtZX1cbiAgICAgICB4c1xuICAgICAgIChsb29wXG4gICAgICAgIFtmc1xuICAgICAgICAgKHNlcSBmaWx0ZXJzKVxuICAgICAgICAgcmV0XG4gICAgICAgICB7OmV4Y2x1ZGVzICN7fSwgOnJlbmFtZXMge319XG4gICAgICAgICBlcnJcbiAgICAgICAgIChub3QgKGV2ZW4/IChjb3VudCBmaWx0ZXJzKSkpXVxuICAgICAgICAoY29uZFxuICAgICAgICAgKHRydWU/IGVycilcbiAgICAgICAgICh0aHJvd1xuICAgICAgICAgIChlcnJvclxuICAgICAgICAgICBlbnZcbiAgICAgICAgICAgXCJPbmx5IFs6cmVmZXItY2xvanVyZSA6ZXhjbHVkZSAobmFtZXMpXSBhbmQgb3B0aW9uYWxseSBgOnJlbmFtZSB7ZnJvbSB0b31gIHNwZWNzIHN1cHBvcnRlZFwiKSlcbiAgICAgICAgIChzb21lPyBmcylcbiAgICAgICAgIChsZXRcbiAgICAgICAgICBba3cgKGZpcnN0IGZzKV1cbiAgICAgICAgICAoaWZcbiAgICAgICAgICAgKHZhbGlkLWt3cyBrdylcbiAgICAgICAgICAgKGxldFxuICAgICAgICAgICAgW3JlZnMgKHNlY29uZCBmcyldXG4gICAgICAgICAgICAoY29uZFxuICAgICAgICAgICAgIChub3RcbiAgICAgICAgICAgICAgKG9yXG4gICAgICAgICAgICAgICAoYW5kXG4gICAgICAgICAgICAgICAgKD0ga3cgOmV4Y2x1ZGUpXG4gICAgICAgICAgICAgICAgKHNlcXVlbnRpYWw/IHJlZnMpXG4gICAgICAgICAgICAgICAgKGV2ZXJ5PyBzeW1ib2w/IHJlZnMpKVxuICAgICAgICAgICAgICAgKGFuZFxuICAgICAgICAgICAgICAgICg9IGt3IDpyZW5hbWUpXG4gICAgICAgICAgICAgICAgKG1hcD8gcmVmcylcbiAgICAgICAgICAgICAgICAoZXZlcnk/XG4gICAgICAgICAgICAgICAgIChmbiogW3AxX180MjgzNSNdIChldmVyeT8gc3ltYm9sPyBwMV9fNDI4MzUjKSlcbiAgICAgICAgICAgICAgICAgcmVmcykpKSlcbiAgICAgICAgICAgICAocmVjdXIgZnMgcmV0IHRydWUpXG4gICAgICAgICAgICAgKD0ga3cgOmV4Y2x1ZGUpXG4gICAgICAgICAgICAgKHJlY3VyXG4gICAgICAgICAgICAgIChubmV4dCBmcylcbiAgICAgICAgICAgICAgKHVwZGF0ZS1pbiByZXQgWzpleGNsdWRlc10gaW50byByZWZzKVxuICAgICAgICAgICAgICBmYWxzZSlcbiAgICAgICAgICAgICAoPSBrdyA6cmVuYW1lKVxuICAgICAgICAgICAgIChyZWN1clxuICAgICAgICAgICAgICAobm5leHQgZnMpXG4gICAgICAgICAgICAgICh1cGRhdGUtaW4gcmV0IFs6cmVuYW1lc10gbWVyZ2UgcmVmcylcbiAgICAgICAgICAgICAgZmFsc2UpKSlcbiAgICAgICAgICAgKHJlY3VyIGZzIHJldCB0cnVlKSkpXG4gICAgICAgICA6ZWxzZVxuICAgICAgICAgcmV0KSldXG4gICAgICAobWVyZ2Utd2l0aCBpbnRvIHMgeHMpKSlcbiAgICBzKSlcbiAgezpleGNsdWRlcyAje30sIDpyZW5hbWVzIHt9fVxuICBhcmdzKSlcbiJ9IHs6c3ltIGFuYWx5emUtZm4tbWV0aG9kcy1wYXNzMiwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFttZW52IGxvY2FscyB0eXBlIG1ldGhzXSl9LCA6c291cmNlICIoZGVmblxuIGFuYWx5emUtZm4tbWV0aG9kcy1wYXNzMlxuIFttZW52IGxvY2FscyB0eXBlIG1ldGhzXVxuIChhbmFseXplLWZuLW1ldGhvZHMtcGFzczIqIG1lbnYgbG9jYWxzIHR5cGUgbWV0aHMpKVxuIn0gezpzeW0gY29yZS1uYW1lPywgOm1ldGEgezpkb2MgIklzIHN5bSB2aXNpYmxlIGZyb20gY29yZSBpbiB0aGUgY3VycmVudCBjb21waWxhdGlvbiBuYW1lc3BhY2U/IiwgOmFyZ2xpc3RzIChbZW52IHN5bV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBjb3JlLW5hbWU/XG4gXCJJcyBzeW0gdmlzaWJsZSBmcm9tIGNvcmUgaW4gdGhlIGN1cnJlbnQgY29tcGlsYXRpb24gbmFtZXNwYWNlP1wiXG4gIz8oOmNsanMgezp0YWcgYm9vbGVhbn0pXG4gW2VudiBzeW1dXG4gKGFuZFxuICAob3JcbiAgIChzb21lP1xuICAgIChnZXRzXG4gICAgIEBlbnYvKmNvbXBpbGVyKlxuICAgICA6Y2xqcy5hbmFseXplci9uYW1lc3BhY2VzXG4gICAgICdjbGpzLmNvcmVcbiAgICAgOmRlZnNcbiAgICAgc3ltKSlcbiAgIChpZi1zb21lXG4gICAgW21hYyAoZ2V0LWV4cGFuZGVyIHN5bSBlbnYpXVxuICAgIChsZXRcbiAgICAgW25zICgtPiBtYWMgbWV0YSA6bnMpXVxuICAgICAoPVxuICAgICAgKC5nZXROYW1lIG5zKVxuICAgICAgIz8oOmNsaiAocXVvdGUgY2xqcy5jb3JlKSA6Y2xqcyAocXVvdGUgY2xqcy5jb3JlJG1hY3JvcykpKSlcbiAgICBmYWxzZSkpXG4gIChub3QgKGNvbnRhaW5zPyAoLT4gZW52IDpucyA6ZXhjbHVkZXMpIHN5bSkpKSlcbiJ9IHs6c3ltIGdldC1sZXQtdGFnLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW25hbWUgaW5pdC1leHByXSl9LCA6c291cmNlICIoZGVmblxuIGdldC1sZXQtdGFnXG4gW25hbWUgaW5pdC1leHByXVxuIChpZi1zb21lXG4gIFt0YWcgKC0+IG5hbWUgbWV0YSA6dGFnKV1cbiAgdGFnXG4gIChpZi1zb21lIFt0YWcgKC0+IGluaXQtZXhwciA6dGFnKV0gdGFnICgtPiBpbml0LWV4cHIgOmluZm8gOnRhZykpKSlcbiJ9IHs6c3ltIHNwZWNpYWxzLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZlxuIHNwZWNpYWxzXG4gJyN7JlxuICAgIGNhc2UqXG4gICAgZGVmcmVjb3JkKlxuICAgIHRyeVxuICAgIG5zKlxuICAgIGxvb3AqXG4gICAgZG9cbiAgICBsZXRmbipcbiAgICBpZlxuICAgIG5ld1xuICAgIG5zXG4gICAgZGVmdHlwZSpcbiAgICBsZXQqXG4gICAganMqXG4gICAgZm4qXG4gICAgcmVjdXJcbiAgICBzZXQhXG4gICAgLlxuICAgIHZhclxuICAgIHF1b3RlXG4gICAgdGhyb3dcbiAgICBkZWZ9KVxuIn0gezpzeW0gZWxpZGUtaXJyZWxldmFudC1tZXRhLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW21dKX0sIDpzb3VyY2UgIihkZWZuXG4gZWxpZGUtaXJyZWxldmFudC1tZXRhXG4gW21dXG4gKC0+IG0gZWxpZGUtcmVhZGVyLW1ldGEgZWxpZGUtYW5hbHl6ZXItbWV0YSkpXG4ifSB7OnN5bSByZXNvbHZlLW1hY3JvLW5zLWFsaWFzLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyBbW2VudiBuYW1lXSBbZW52IG5hbWUgbm90LWZvdW5kXV19LCA6c291cmNlICIoZGVmblxuIHJlc29sdmUtbWFjcm8tbnMtYWxpYXNcbiAoW2VudiBuYW1lXSAocmVzb2x2ZS1tYWNyby1ucy1hbGlhcyBlbnYgbmFtZSAoc3ltYm9sIG5hbWUpKSlcbiAoW2VudiBuYW1lIG5vdC1mb3VuZF1cbiAgKGxldFxuICAgW3N5bSAoc3ltYm9sIG5hbWUpXVxuICAgKGdldCAoOnJlcXVpcmUtbWFjcm9zICg6bnMgZW52KSkgc3ltIG5vdC1mb3VuZCkpKSlcbiJ9IHs6c3ltIGNoZWNrLWludm9rZS1hcmctdHlwZXMsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZW52IHs6a2V5cyBbb3BdLCA6YXMgYXN0fSBvcHRzXSl9LCA6c291cmNlICIoZGVmblxuIGNoZWNrLWludm9rZS1hcmctdHlwZXNcbiBbZW52IHs6a2V5cyBbb3BdLCA6YXMgYXN0fSBvcHRzXVxuICh3aGVuXG4gIChhbmRcbiAgIChub3QgKGFuYWx5emVkPyBhc3QpKVxuICAgIz8oOmNsaiAoPSA6aW52b2tlIG9wKSA6Y2xqcyAoa2V5d29yZC1pZGVudGljYWw/IDppbnZva2Ugb3ApKSlcbiAgKHdoZW4tc29tZVxuICAgW1tuYW1lIHs6a2V5cyBbdmFsaWQ/IHdhcm5pbmctdHlwZV19XVxuICAgIChmaW5kIGludm9rZS1hcmctdHlwZS12YWxpZGF0b3JzICgtPiBhc3QgOmZuIDppbmZvIDpuYW1lKSldXG4gICAobGV0XG4gICAgW3R5cGVzIChtYXB2IDp0YWcgKDphcmdzIGFzdCkpXVxuICAgICh3aGVuLW5vdFxuICAgICAodmFsaWQ/IHR5cGVzKVxuICAgICAod2FybmluZyB3YXJuaW5nLXR5cGUgZW52IHs6bmFtZSBuYW1lLCA6dHlwZXMgdHlwZXN9KSkpKSlcbiAoYW5hbHl6ZWQgYXN0KSlcbiJ9IHs6c3ltIGNvbmZpcm0tbnMsIDptZXRhIHs6ZG9jICJHaXZlbiBlbnYsIGFuIGFuYWx5c2lzIGVudmlyb25tZW50LCBhbmQgbnMtc3ltLCBhIHN5bWJvbCBpZGVudGlmeWluZyBhXG4gICBuYW1lc3BhY2UsIGNvbmZpcm0gdGhhdCB0aGUgbmFtZXNwYWNlIGV4aXN0cy4gV2FybiBpZiBub3QgZm91bmQuIiwgOmFyZ2xpc3RzIChbZW52IG5zLXN5bV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBjb25maXJtLW5zXG4gXCJHaXZlbiBlbnYsIGFuIGFuYWx5c2lzIGVudmlyb25tZW50LCBhbmQgbnMtc3ltLCBhIHN5bWJvbCBpZGVudGlmeWluZyBhXFxuICAgbmFtZXNwYWNlLCBjb25maXJtIHRoYXQgdGhlIG5hbWVzcGFjZSBleGlzdHMuIFdhcm4gaWYgbm90IGZvdW5kLlwiXG4gW2VudiBucy1zeW1dXG4gKHdoZW5cbiAgKGFuZFxuICAgKG5vdD0gJ2NsanMuY29yZSBucy1zeW0pXG4gICAobmlsPyAoZ2V0IGltcGxpY2l0LW5zZXMgbnMtc3ltKSlcbiAgIChuaWw/IChnZXQgKC0+IGVudiA6bnMgOnJlcXVpcmVzKSBucy1zeW0pKVxuICAgKG5pbD8gKGdldHMgQGVudi8qY29tcGlsZXIqIDpjbGpzLmFuYWx5emVyL25hbWVzcGFjZXMgbnMtc3ltKSlcbiAgICM/KDpjbGogKG5pbD8gKHV0aWwvbnMtPnNvdXJjZSBucy1zeW0pKSlcbiAgIChub3QgKGpzLW1vZHVsZS1leGlzdHM/IG5zLXN5bSkpKVxuICAod2FybmluZyA6dW5kZWNsYXJlZC1ucyBlbnYgezpucy1zeW0gbnMtc3ltLCA6anMtcHJvdmlkZSBucy1zeW19KSkpXG4ifSB7OnN5bSBkZWZhdWx0LW5hbWVzcGFjZXMsIDptZXRhIHt9LCA6c291cmNlICIoZGVmXG4gZGVmYXVsdC1uYW1lc3BhY2VzXG4gJ3tjbGpzLmNvcmUgezpuYW1lIGNsanMuY29yZX0sIGNsanMudXNlciB7Om5hbWUgY2xqcy51c2VyfX0pXG4ifSB7OnN5bSBjYW5vbmljYWxpemUtc3BlY3MsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbc3BlY3NdKX0sIDpzb3VyY2UgIihkZWZuXG4gY2Fub25pY2FsaXplLXNwZWNzXG4gW3NwZWNzXVxuIChsZXRmblxuICBbKGNhbm9uaWNhbGl6ZVxuICAgIFtxdW90ZWQtc3BlYy1vci1rd11cbiAgICAoaWZcbiAgICAgKGtleXdvcmQ/IHF1b3RlZC1zcGVjLW9yLWt3KVxuICAgICBxdW90ZWQtc3BlYy1vci1rd1xuICAgICAoYXMtPlxuICAgICAgKHNlY29uZCBxdW90ZWQtc3BlYy1vci1rdylcbiAgICAgIHNwZWNcbiAgICAgIChpZiAob3IgKHZlY3Rvcj8gc3BlYykgKG1hcD8gc3BlYykpIHNwZWMgW3NwZWNdKSkpKV1cbiAgKG1hcCBjYW5vbmljYWxpemUgc3BlY3MpKSlcbiJ9IHs6c3ltIGNvbmZpcm0tdmFyLWV4aXN0cy10aHJvdywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtdKX0sIDpzb3VyY2UgIihkZWZuXG4gY29uZmlybS12YXItZXhpc3RzLXRocm93XG4gW11cbiAoZm5cbiAgW2VudiBwcmVmaXggc3VmZml4XVxuICAoY29uZmlybS12YXItZXhpc3RzXG4gICBlbnZcbiAgIHByZWZpeFxuICAgc3VmZml4XG4gICAoZm5cbiAgICBbZW52IHByZWZpeCBzdWZmaXhdXG4gICAgKHRocm93XG4gICAgIChlcnJvclxuICAgICAgZW52XG4gICAgICAoc3RyIFwiVW5hYmxlIHRvIHJlc29sdmUgdmFyOiBcIiBzdWZmaXggXCIgaW4gdGhpcyBjb250ZXh0XCIpKSkpKSkpXG4ifSB7OnN5bSBqcy1tb2R1bGUtZXhpc3RzPywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFttb2R1bGVdKX0sIDpzb3VyY2UgIihkZWZuXG4ganMtbW9kdWxlLWV4aXN0cz9cbiBbbW9kdWxlXVxuIChqcy1tb2R1bGUtZXhpc3RzPypcbiAgKGdldC1pbiBAZW52Lypjb21waWxlciogWzpqcy1tb2R1bGUtaW5kZXhdKVxuICBtb2R1bGUpKVxuIn0gezpzeW0gdmFyLWFzdCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtlbnYgc3ltXSl9LCA6c291cmNlICIoZGVmblxuIHZhci1hc3RcbiBbZW52IHN5bV1cbiAoYmluZGluZ1xuICBbKnByaXZhdGUtdmFyLWFjY2Vzcy1ub3dhcm4qIHRydWVdXG4gIChsZXRcbiAgIFtlbnZcbiAgICAoZGlzc29jIGVudiA6bG9jYWxzKVxuICAgIHZhclxuICAgIChyZXNvbHZlLXZhciBlbnYgc3ltIChjb25maXJtLXZhci1leGlzdHMtdGhyb3cpKVxuICAgIGV4cHItZW52XG4gICAgKGFzc29jIGVudiA6Y29udGV4dCA6ZXhwcildXG4gICAod2hlbi1zb21lXG4gICAgW3Zhci1ucyAoOm5zIHZhcildXG4gICAgezp2YXIgKGFuYWx5emUgZXhwci1lbnYgc3ltKSxcbiAgICAgOnN5bVxuICAgICAoYW5hbHl6ZVxuICAgICAgZXhwci1lbnZcbiAgICAgIChjbG9qdXJlLmNvcmUvc2VxdWVuY2VcbiAgICAgICAoY2xvanVyZS5jb3JlL3NlcVxuICAgICAgICAoY2xvanVyZS5jb3JlL2NvbmNhdFxuICAgICAgICAgKGNsb2p1cmUuY29yZS9saXN0ICdxdW90ZSlcbiAgICAgICAgIChjbG9qdXJlLmNvcmUvbGlzdFxuICAgICAgICAgIChzeW1ib2wgKG5hbWUgdmFyLW5zKSAobmFtZSAoOm5hbWUgdmFyKSkpKSkpKSksXG4gICAgIDptZXRhICh2YXItbWV0YSB2YXIgZXhwci1lbnYpfSkpKSlcbiJ9IHs6c3ltIGFkZC1jb25zdHMsIDptZXRhIHs6ZG9jICJHaXZlbiBhIGNvbXBpbGVyIHN0YXRlIGFuZCBhIG1hcCBmcm9tIGZ1bGx5IHF1YWxpZmllZCBzeW1ib2xzIHRvIGNvbnN0YW50XG4gIEVETiB2YWx1ZXMsIHVwZGF0ZSB0aGUgY29tcGlsZXIgc3RhdGUgbWFya2luZyB0aGVzZSB2YXJzIGFzIGNvbnN0IHRvIHN1cHBvcnRcbiAgZGlyZWN0IHN1YnN0aXR1dGlvbiBvZiB0aGVzZSB2YXJzIGluIHNvdXJjZS4iLCA6YXJnbGlzdHMgKFtjb21waWxlci1zdGF0ZSBjb25zdGFudHMtbWFwXSl9LCA6c291cmNlICIoZGVmblxuIGFkZC1jb25zdHNcbiBcIkdpdmVuIGEgY29tcGlsZXIgc3RhdGUgYW5kIGEgbWFwIGZyb20gZnVsbHkgcXVhbGlmaWVkIHN5bWJvbHMgdG8gY29uc3RhbnRcXG4gIEVETiB2YWx1ZXMsIHVwZGF0ZSB0aGUgY29tcGlsZXIgc3RhdGUgbWFya2luZyB0aGVzZSB2YXJzIGFzIGNvbnN0IHRvIHN1cHBvcnRcXG4gIGRpcmVjdCBzdWJzdGl0dXRpb24gb2YgdGhlc2UgdmFycyBpbiBzb3VyY2UuXCJcbiBbY29tcGlsZXItc3RhdGUgY29uc3RhbnRzLW1hcF1cbiAocmVkdWNlLWt2XG4gIChmblxuICAgW2NvbXBpbGVyLXN0YXRlIHN5bSB2YWx1ZV1cbiAgIChsZXRcbiAgICBbbnMgKHN5bWJvbCAobmFtZXNwYWNlIHN5bSkpXVxuICAgICh1cGRhdGUtaW5cbiAgICAgY29tcGlsZXItc3RhdGVcbiAgICAgWzpjbGpzLmFuYWx5emVyL25hbWVzcGFjZXMgbnMgOmRlZnMgKHN5bWJvbCAobmFtZSBzeW0pKV1cbiAgICAgbWVyZ2VcbiAgICAgezpjb25zdC1leHByXG4gICAgICAoYmluZGluZ1xuICAgICAgIFsqcGFzc2VzKiAoY29uaiAqcGFzc2VzKiAocmVwbGFjZS1lbnYtcGFzcyB7OmNvbnRleHQgOmV4cHJ9KSldXG4gICAgICAgKGFuYWx5emUgKGVtcHR5LWVudikgdmFsdWUpKX0pKSlcbiAgY29tcGlsZXItc3RhdGVcbiAgY29uc3RhbnRzLW1hcCkpXG4ifSB7OnN5bSBlcnJvciwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgW1tlbnYgbXNnXSBbZW52IG1zZyBjYXVzZV1dfSwgOnNvdXJjZSAiKGRlZm5cbiBlcnJvclxuIChbZW52IG1zZ10gKGVycm9yIGVudiBtc2cgbmlsKSlcbiAoW2VudiBtc2cgY2F1c2VdXG4gIChleC1pbmZvXG4gICAobWVzc2FnZSBlbnYgbXNnKVxuICAgKGFzc29jIChzb3VyY2UtaW5mbyBlbnYpIDp0YWcgOmNsanMvYW5hbHlzaXMtZXJyb3IpXG4gICBjYXVzZSkpKVxuIn0gezpzeW0gaW52b2tlYWJsZS1ucz8sIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRydWUgaWYgbnMgaXMgYSByZXF1aXJlZCBuYW1lc3BhY2UgYW5kIGEgSmF2YVNjcmlwdCBtb2R1bGUgdGhhdFxuICAgbWlnaHQgYmUgaW52b2tlYWJsZSBhcyBhIGZ1bmN0aW9uLiIsIDphcmdsaXN0cyAoW25zIGVudl0pfSwgOnNvdXJjZSAiKGRlZm5cbiBpbnZva2VhYmxlLW5zP1xuIFwiUmV0dXJucyB0cnVlIGlmIG5zIGlzIGEgcmVxdWlyZWQgbmFtZXNwYWNlIGFuZCBhIEphdmFTY3JpcHQgbW9kdWxlIHRoYXRcXG4gICBtaWdodCBiZSBpbnZva2VhYmxlIGFzIGEgZnVuY3Rpb24uXCJcbiBbbnMgZW52XVxuIChsZXRcbiAgW25zIChyZXNvbHZlLW5zLWFsaWFzIGVudiBucyldXG4gIChhbmRcbiAgIChyZXF1aXJlZD8gbnMgZW52KVxuICAgKG9yXG4gICAgKGpzLW1vZHVsZS1leGlzdHM/IG5zKVxuICAgIChub2RlLW1vZHVsZS1kZXA/IG5zKVxuICAgIChkZXAtaGFzLWdsb2JhbC1leHBvcnRzPyBucykpKSkpXG4ifSB7OnN5bSAqY2xqcy1ucyosIDptZXRhIHt9LCA6c291cmNlICIoZGVmICpjbGpzLW5zKiAnY2xqcy51c2VyKVxuIn0pLCBjbG9qdXJlLmNvcmUucnJiLXZlY3Rvci50cmVlcyAoezpzeW0gdGFpbC1vZmZzZXQsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbY250IHRhaWxdKX0sIDpzb3VyY2UgIihkZWZuIHRhaWwtb2Zmc2V0IFtjbnQgdGFpbF0gKC0gY250IChhbGVuZ3RoIHRhaWwpKSlcbiJ9IHs6c3ltIGFycmF5LWZvciwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtjbnQgc2hpZnQgcm9vdCB0YWlsIGldKX0sIDpzb3VyY2UgIihkZWZuXG4gYXJyYXktZm9yXG4gW2NudCBzaGlmdCByb290IHRhaWwgaV1cbiAoaWZcbiAgKGFuZCAoPD0gMCBpKSAoPCBpIGNudCkpXG4gIChpZlxuICAgKD49IGkgKHRhaWwtb2Zmc2V0IGNudCB0YWlsKSlcbiAgIHRhaWxcbiAgIChsb29wXG4gICAgW2kgaSBub2RlIHJvb3Qgc2hpZnQgc2hpZnRdXG4gICAgKGlmXG4gICAgICh6ZXJvPyBzaGlmdClcbiAgICAgKC4tYXJyIG5vZGUpXG4gICAgIChpZlxuICAgICAgKHJlZ3VsYXI/IG5vZGUpXG4gICAgICAobG9vcFxuICAgICAgIFtub2RlXG4gICAgICAgIChhZ2V0ICguLWFyciBub2RlKSAoYml0LWFuZCAoYml0LXNoaWZ0LXJpZ2h0IGkgc2hpZnQpIDMxKSlcbiAgICAgICAgc2hpZnRcbiAgICAgICAgKC0gc2hpZnQgNSldXG4gICAgICAgKGlmXG4gICAgICAgICh6ZXJvPyBzaGlmdClcbiAgICAgICAgKC4tYXJyIG5vZGUpXG4gICAgICAgIChyZWN1clxuICAgICAgICAgKGFnZXQgKC4tYXJyIG5vZGUpIChiaXQtYW5kIChiaXQtc2hpZnQtcmlnaHQgaSBzaGlmdCkgMzEpKVxuICAgICAgICAgKC0gc2hpZnQgNSkpKSlcbiAgICAgIChsZXRcbiAgICAgICBbcm5nc1xuICAgICAgICAocmFuZ2VzIG5vZGUpXG4gICAgICAgIGpcbiAgICAgICAgKGxvb3BcbiAgICAgICAgIFtqIChiaXQtYW5kIChiaXQtc2hpZnQtcmlnaHQgaSBzaGlmdCkgMzEpXVxuICAgICAgICAgKGlmICg8IGkgKGFnZXQgcm5ncyBqKSkgaiAocmVjdXIgKGluYyBqKSkpKVxuICAgICAgICBpXG4gICAgICAgIChpZiAocG9zPyBqKSAoLSBpIChhZ2V0IHJuZ3MgKGRlYyBqKSkpIGkpXVxuICAgICAgIChyZWN1ciBpIChhZ2V0ICguLWFyciBub2RlKSBqKSAoLSBzaGlmdCA1KSkpKSkpKVxuICAodmVjdG9yLWluZGV4LW91dC1vZi1ib3VuZHMgaSBjbnQpKSlcbiJ9IHs6c3ltIG5ldy1wYXRoLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3RhaWwgZWRpdCBzaGlmdCBjdXJyZW50LW5vZGVdKX0sIDpzb3VyY2UgIihkZWZuXG4gbmV3LXBhdGhcbiBbdGFpbCBlZGl0IHNoaWZ0IGN1cnJlbnQtbm9kZV1cbiAoaWZcbiAgKD09IChhbGVuZ3RoIHRhaWwpIDMyKVxuICAobG9vcFxuICAgW3MgMCBuIGN1cnJlbnQtbm9kZV1cbiAgIChpZlxuICAgICg9PSBzIHNoaWZ0KVxuICAgIG5cbiAgICAobGV0XG4gICAgIFthcnIgKG1ha2UtYXJyYXkgMzIpIHJldCAoLT5WZWN0b3JOb2RlIGVkaXQgYXJyKV1cbiAgICAgKGFzZXQgYXJyIDAgbilcbiAgICAgKHJlY3VyICgrIHMgNSkgcmV0KSkpKVxuICAobG9vcFxuICAgW3MgMCBuIGN1cnJlbnQtbm9kZV1cbiAgIChpZlxuICAgICg9PSBzIHNoaWZ0KVxuICAgIG5cbiAgICAobGV0XG4gICAgIFthcnJcbiAgICAgIChtYWtlLWFycmF5IDMzKVxuICAgICAgcm5nc1xuICAgICAgKG1ha2UtYXJyYXkgMzMpXG4gICAgICByZXRcbiAgICAgICgtPlZlY3Rvck5vZGUgZWRpdCBhcnIpXVxuICAgICAoYXNldCBhcnIgMCBuKVxuICAgICAoYXNldCBhcnIgMzIgcm5ncylcbiAgICAgKGFzZXQgcm5ncyAzMiAxKVxuICAgICAoYXNldCBybmdzIDAgKGFsZW5ndGggdGFpbCkpXG4gICAgIChyZWN1ciAoKyBzIDUpIHJldCkpKSkpKVxuIn0gezpzeW0gcHVzaC10YWlsLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3NoaWZ0IGNudCByb290LWVkaXQgY3VycmVudC1ub2RlIHRhaWwtbm9kZV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBwdXNoLXRhaWxcbiBbc2hpZnQgY250IHJvb3QtZWRpdCBjdXJyZW50LW5vZGUgdGFpbC1ub2RlXVxuIChpZlxuICAocmVndWxhcj8gY3VycmVudC1ub2RlKVxuICAobGV0XG4gICBbYXJyXG4gICAgKGFjbG9uZSAoLi1hcnIgY3VycmVudC1ub2RlKSlcbiAgICByZXRcbiAgICAoLT5WZWN0b3JOb2RlICguLWVkaXQgY3VycmVudC1ub2RlKSBhcnIpXVxuICAgKGxvb3BcbiAgICBbbiByZXQgc2hpZnQgc2hpZnRdXG4gICAgKGxldFxuICAgICBbYXJyXG4gICAgICAoLi1hcnIgbilcbiAgICAgIHN1YmlkeFxuICAgICAgKGJpdC1hbmQgKGJpdC1zaGlmdC1yaWdodCAoZGVjIGNudCkgc2hpZnQpIDMxKV1cbiAgICAgKGlmXG4gICAgICAoPT0gc2hpZnQgNSlcbiAgICAgIChhc2V0IGFyciBzdWJpZHggdGFpbC1ub2RlKVxuICAgICAgKGlmLWxldFxuICAgICAgIFtjaGlsZCAoYWdldCBhcnIgc3ViaWR4KV1cbiAgICAgICAobGV0XG4gICAgICAgIFtuZXctY2FyclxuICAgICAgICAgKGFjbG9uZSAoLi1hcnIgY2hpbGQpKVxuICAgICAgICAgbmV3LWNoaWxkXG4gICAgICAgICAoLT5WZWN0b3JOb2RlIHJvb3QtZWRpdCBuZXctY2FycildXG4gICAgICAgIChhc2V0IGFyciBzdWJpZHggbmV3LWNoaWxkKVxuICAgICAgICAocmVjdXIgbmV3LWNoaWxkICgtIHNoaWZ0IDUpKSlcbiAgICAgICAoYXNldFxuICAgICAgICBhcnJcbiAgICAgICAgc3ViaWR4XG4gICAgICAgIChuZXctcGF0aFxuICAgICAgICAgKC4tYXJyIHRhaWwtbm9kZSlcbiAgICAgICAgIHJvb3QtZWRpdFxuICAgICAgICAgKC0gc2hpZnQgNSlcbiAgICAgICAgIHRhaWwtbm9kZSkpKSkpKVxuICAgcmV0KVxuICAobGV0XG4gICBbYXJyXG4gICAgKGFjbG9uZSAoLi1hcnIgY3VycmVudC1ub2RlKSlcbiAgICBybmdzXG4gICAgKHJhbmdlcyBjdXJyZW50LW5vZGUpXG4gICAgbGlcbiAgICAoZGVjIChhZ2V0IHJuZ3MgMzIpKVxuICAgIHJldFxuICAgICgtPlZlY3Rvck5vZGUgKC4tZWRpdCBjdXJyZW50LW5vZGUpIGFycilcbiAgICBjcmV0XG4gICAgKGlmXG4gICAgICg9PSBzaGlmdCA1KVxuICAgICBuaWxcbiAgICAgKGxldFxuICAgICAgW2NoaWxkXG4gICAgICAgKGFnZXQgYXJyIGxpKVxuICAgICAgIGNjbnRcbiAgICAgICAoaWZcbiAgICAgICAgKHBvcz8gbGkpXG4gICAgICAgICgtIChhZ2V0IHJuZ3MgbGkpIChhZ2V0IHJuZ3MgKGRlYyBsaSkpKVxuICAgICAgICAoYWdldCBybmdzIDApKV1cbiAgICAgIChpZi1ub3RcbiAgICAgICAoPT0gY2NudCAoYml0LXNoaWZ0LWxlZnQgMSBzaGlmdCkpXG4gICAgICAgKHB1c2gtdGFpbCAoLSBzaGlmdCA1KSAoaW5jIGNjbnQpIHJvb3QtZWRpdCBjaGlsZCB0YWlsLW5vZGUpKSkpXVxuICAgKGlmXG4gICAgY3JldFxuICAgIChkbyAoYXNldCBhcnIgbGkgY3JldCkgKGFzZXQgcm5ncyBsaSAoKyAoYWdldCBybmdzIGxpKSAzMikpIHJldClcbiAgICAoZG9cbiAgICAgKGFzZXRcbiAgICAgIGFyclxuICAgICAgKGluYyBsaSlcbiAgICAgIChuZXctcGF0aCAoLi1hcnIgdGFpbC1ub2RlKSByb290LWVkaXQgKC0gc2hpZnQgNSkgdGFpbC1ub2RlKSlcbiAgICAgKGFzZXQgcm5ncyAoaW5jIGxpKSAoKyAoYWdldCBybmdzIGxpKSAzMikpXG4gICAgIChhc2V0IHJuZ3MgMzIgKGluYyAoYWdldCBybmdzIDMyKSkpXG4gICAgIHJldCkpKSkpXG4ifSB7OnN5bSBwb3AtdGFpbCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtzaGlmdCBjbnQgcm9vdC1lZGl0IGN1cnJlbnQtbm9kZV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBwb3AtdGFpbFxuIFtzaGlmdCBjbnQgcm9vdC1lZGl0IGN1cnJlbnQtbm9kZV1cbiAoaWZcbiAgKHJlZ3VsYXI/IGN1cnJlbnQtbm9kZSlcbiAgKGxldFxuICAgW3N1YmlkeCAoYml0LWFuZCAoYml0LXNoaWZ0LXJpZ2h0IChkZWMgY250KSBzaGlmdCkgMzEpXVxuICAgKGNvbmRcbiAgICAoPiBzaGlmdCA1KVxuICAgIChsZXRcbiAgICAgW25ldy1jaGlsZFxuICAgICAgKHBvcC10YWlsXG4gICAgICAgKC0gc2hpZnQgNSlcbiAgICAgICBjbnRcbiAgICAgICByb290LWVkaXRcbiAgICAgICAoYWdldCAoLi1hcnIgY3VycmVudC1ub2RlKSBzdWJpZHgpKV1cbiAgICAgKGlmXG4gICAgICAoYW5kIChuaWw/IG5ldy1jaGlsZCkgKHplcm8/IHN1YmlkeCkpXG4gICAgICBuaWxcbiAgICAgIChsZXRcbiAgICAgICBbYXJyIChhY2xvbmUgKC4tYXJyIGN1cnJlbnQtbm9kZSkpXVxuICAgICAgIChhc2V0IGFyciBzdWJpZHggbmV3LWNoaWxkKVxuICAgICAgICgtPlZlY3Rvck5vZGUgcm9vdC1lZGl0IGFycikpKSlcbiAgICAoemVybz8gc3ViaWR4KVxuICAgIG5pbFxuICAgIDplbHNlXG4gICAgKGxldFxuICAgICBbYXJyIChhY2xvbmUgKC4tYXJyIGN1cnJlbnQtbm9kZSkpXVxuICAgICAoYXNldCBhcnIgc3ViaWR4IG5pbClcbiAgICAgKC0+VmVjdG9yTm9kZSByb290LWVkaXQgYXJyKSkpKVxuICAobGV0XG4gICBbc3ViaWR4XG4gICAgKGJpdC1hbmQgKGJpdC1zaGlmdC1yaWdodCAoZGVjIGNudCkgc2hpZnQpIDMxKVxuICAgIHJuZ3NcbiAgICAocmFuZ2VzIGN1cnJlbnQtbm9kZSlcbiAgICBzdWJpZHhcbiAgICAobG9vcFxuICAgICBbc3ViaWR4IHN1YmlkeF1cbiAgICAgKGlmXG4gICAgICAob3IgKHplcm8/IChpbnQgKGFnZXQgcm5ncyAoaW5jIHN1YmlkeCkpKSkgKD09IHN1YmlkeCAzMSkpXG4gICAgICBzdWJpZHhcbiAgICAgIChyZWN1ciAoaW5jIHN1YmlkeCkpKSlcbiAgICBuZXctcm5nc1xuICAgIChhY2xvbmUgcm5ncyldXG4gICAoY29uZFxuICAgICg+IHNoaWZ0IDUpXG4gICAgKGxldFxuICAgICBbY2hpbGRcbiAgICAgIChhZ2V0ICguLWFyciBjdXJyZW50LW5vZGUpIHN1YmlkeClcbiAgICAgIGNoaWxkLWNudFxuICAgICAgKGlmXG4gICAgICAgKHplcm8/IHN1YmlkeClcbiAgICAgICAoYWdldCBybmdzIDApXG4gICAgICAgKC0gKGFnZXQgcm5ncyBzdWJpZHgpIChhZ2V0IHJuZ3MgKGRlYyBzdWJpZHgpKSkpXG4gICAgICBuZXctY2hpbGRcbiAgICAgIChwb3AtdGFpbCAoLSBzaGlmdCA1KSBjaGlsZC1jbnQgcm9vdC1lZGl0IGNoaWxkKV1cbiAgICAgKGNvbmRcbiAgICAgIChhbmQgKG5pbD8gbmV3LWNoaWxkKSAoemVybz8gc3ViaWR4KSlcbiAgICAgIG5pbFxuICAgICAgKHJlZ3VsYXI/IGNoaWxkKVxuICAgICAgKGxldFxuICAgICAgIFthcnIgKGFjbG9uZSAoLi1hcnIgY3VycmVudC1ub2RlKSldXG4gICAgICAgKGFzZXQgbmV3LXJuZ3Mgc3ViaWR4ICgtIChhZ2V0IG5ldy1ybmdzIHN1YmlkeCkgMzIpKVxuICAgICAgIChhc2V0IGFyciBzdWJpZHggbmV3LWNoaWxkKVxuICAgICAgIChhc2V0IGFyciAzMiBuZXctcm5ncylcbiAgICAgICAoaWZcbiAgICAgICAgKG5pbD8gbmV3LWNoaWxkKVxuICAgICAgICAoYXNldCBuZXctcm5ncyAzMiAoZGVjIChhZ2V0IG5ldy1ybmdzIDMyKSkpKVxuICAgICAgICgtPlZlY3Rvck5vZGUgcm9vdC1lZGl0IGFycikpXG4gICAgICA6ZWxzZVxuICAgICAgKGxldFxuICAgICAgIFtybmdcbiAgICAgICAgKGxhc3QtcmFuZ2UgY2hpbGQpXG4gICAgICAgIGRpZmZcbiAgICAgICAgKC0gcm5nIChpZiBuZXctY2hpbGQgKGxhc3QtcmFuZ2UgbmV3LWNoaWxkKSAwKSlcbiAgICAgICAgYXJyXG4gICAgICAgIChhY2xvbmUgKC4tYXJyIGN1cnJlbnQtbm9kZSkpXVxuICAgICAgIChhc2V0IG5ldy1ybmdzIHN1YmlkeCAoLSAoYWdldCBuZXctcm5ncyBzdWJpZHgpIGRpZmYpKVxuICAgICAgIChhc2V0IGFyciBzdWJpZHggbmV3LWNoaWxkKVxuICAgICAgIChhc2V0IGFyciAzMiBuZXctcm5ncylcbiAgICAgICAoaWZcbiAgICAgICAgKG5pbD8gbmV3LWNoaWxkKVxuICAgICAgICAoYXNldCBuZXctcm5ncyAzMiAoZGVjIChhZ2V0IG5ldy1ybmdzIDMyKSkpKVxuICAgICAgICgtPlZlY3Rvck5vZGUgcm9vdC1lZGl0IGFycikpKSlcbiAgICAoemVybz8gc3ViaWR4KVxuICAgIG5pbFxuICAgIDplbHNlXG4gICAgKGxldFxuICAgICBbYXJyXG4gICAgICAoYWNsb25lICguLWFyciBjdXJyZW50LW5vZGUpKVxuICAgICAgY2hpbGRcbiAgICAgIChhZ2V0IGFyciBzdWJpZHgpXG4gICAgICBuZXctcm5nc1xuICAgICAgKGFjbG9uZSBybmdzKV1cbiAgICAgKGFzZXQgYXJyIHN1YmlkeCBuaWwpXG4gICAgIChhc2V0IGFyciAzMiBuZXctcm5ncylcbiAgICAgKGFzZXQgbmV3LXJuZ3Mgc3ViaWR4IDApXG4gICAgIChhc2V0IG5ldy1ybmdzIDMyIChkZWMgKGFnZXQgbmV3LXJuZ3MgMzIpKSlcbiAgICAgKC0+VmVjdG9yTm9kZSByb290LWVkaXQgYXJyKSkpKSkpXG4ifSB7OnN5bSBkby1hc3NvYywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtzaGlmdCBjdXJyZW50LW5vZGUgaSB2YWxdKX0sIDpzb3VyY2UgIihkZWZuXG4gZG8tYXNzb2NcbiBbc2hpZnQgY3VycmVudC1ub2RlIGkgdmFsXVxuIChpZlxuICAocmVndWxhcj8gY3VycmVudC1ub2RlKVxuICAobGV0XG4gICBbbm9kZSAoY2xvbmUgc2hpZnQgY3VycmVudC1ub2RlKV1cbiAgIChsb29wXG4gICAgW3NoaWZ0IHNoaWZ0IG5vZGUgbm9kZV1cbiAgICAoaWZcbiAgICAgKHplcm8/IHNoaWZ0KVxuICAgICAobGV0IFthcnIgKC4tYXJyIG5vZGUpXSAoYXNldCBhcnIgKGJpdC1hbmQgaSAzMSkgdmFsKSlcbiAgICAgKGxldFxuICAgICAgW2FyclxuICAgICAgICguLWFyciBub2RlKVxuICAgICAgIHN1YmlkeFxuICAgICAgIChiaXQtYW5kIChiaXQtc2hpZnQtcmlnaHQgaSBzaGlmdCkgMzEpXG4gICAgICAgY2hpbGRcbiAgICAgICAoY2xvbmUgc2hpZnQgKGFnZXQgYXJyIHN1YmlkeCkpXVxuICAgICAgKGFzZXQgYXJyIHN1YmlkeCBjaGlsZClcbiAgICAgIChyZWN1ciAoLSBzaGlmdCA1KSBjaGlsZCkpKSlcbiAgIG5vZGUpXG4gIChsZXRcbiAgIFthcnJcbiAgICAoYWNsb25lICguLWFyciBjdXJyZW50LW5vZGUpKVxuICAgIHJuZ3NcbiAgICAocmFuZ2VzIGN1cnJlbnQtbm9kZSlcbiAgICBzdWJpZHhcbiAgICAoYml0LWFuZCAoYml0LXNoaWZ0LXJpZ2h0IGkgc2hpZnQpIDMxKVxuICAgIHN1YmlkeFxuICAgIChsb29wXG4gICAgIFtzdWJpZHggc3ViaWR4XVxuICAgICAoaWYgKDwgaSAoaW50IChhZ2V0IHJuZ3Mgc3ViaWR4KSkpIHN1YmlkeCAocmVjdXIgKGluYyBzdWJpZHgpKSkpXG4gICAgaVxuICAgIChpZiAoemVybz8gc3ViaWR4KSBpICgtIGkgKGFnZXQgcm5ncyAoZGVjIHN1YmlkeCkpKSldXG4gICAoYXNldCBhcnIgc3ViaWR4IChkby1hc3NvYyAoLSBzaGlmdCA1KSAoYWdldCBhcnIgc3ViaWR4KSBpIHZhbCkpXG4gICAoLT5WZWN0b3JOb2RlICguLWVkaXQgY3VycmVudC1ub2RlKSBhcnIpKSkpXG4ifSksIG9ha2NsanMudG9vbHMucmVhZGVyLnJlYWRlci10eXBlcyAoezpzeW0gaW5kZXhpbmctcHVzaC1iYWNrLXJlYWRlciwgOm1ldGEgezpkb2MgIkNyZWF0ZXMgYW4gSW5kZXhpbmdQdXNoYmFja1JlYWRlciBmcm9tIGEgZ2l2ZW4gc3RyaW5nIG9yIFB1c2hiYWNrUmVhZGVyIiwgOmFyZ2xpc3RzIFtbcy1vci1yZHJdIFtzLW9yLXJkciBidWYtbGVuXSBbcy1vci1yZHIgYnVmLWxlbiBmaWxlLW5hbWVdXX0sIDpzb3VyY2UgIihkZWZuXG4gaW5kZXhpbmctcHVzaC1iYWNrLXJlYWRlclxuIFwiQ3JlYXRlcyBhbiBJbmRleGluZ1B1c2hiYWNrUmVhZGVyIGZyb20gYSBnaXZlbiBzdHJpbmcgb3IgUHVzaGJhY2tSZWFkZXJcIlxuIChbcy1vci1yZHJdIChpbmRleGluZy1wdXNoLWJhY2stcmVhZGVyIHMtb3ItcmRyIDEpKVxuIChbcy1vci1yZHIgYnVmLWxlbl0gKGluZGV4aW5nLXB1c2gtYmFjay1yZWFkZXIgcy1vci1yZHIgYnVmLWxlbiBuaWwpKVxuIChbcy1vci1yZHIgYnVmLWxlbiBmaWxlLW5hbWVdXG4gIChJbmRleGluZ1B1c2hiYWNrUmVhZGVyLlxuICAgKGlmXG4gICAgKHN0cmluZz8gcy1vci1yZHIpXG4gICAgKHN0cmluZy1wdXNoLWJhY2stcmVhZGVyIHMtb3ItcmRyIGJ1Zi1sZW4pXG4gICAgcy1vci1yZHIpXG4gICAxXG4gICAxXG4gICB0cnVlXG4gICBuaWxcbiAgIDBcbiAgIGZpbGUtbmFtZSkpKVxuIn0gezpzeW0gbG9nLXNvdXJjZSosIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbcmVhZGVyIGZdKX0sIDpzb3VyY2UgIihkZWZuXG4gbG9nLXNvdXJjZSpcbiBbcmVhZGVyIGZdXG4gKGxldFxuICBbYnVmZmVyICg6YnVmZmVyIEAoLi1mcmFtZXMgcmVhZGVyKSldXG4gICh0cnlcbiAgIChzd2FwIVxuICAgICguLWZyYW1lcyByZWFkZXIpXG4gICAgdXBkYXRlLWluXG4gICAgWzpvZmZzZXRdXG4gICAgY29ualxuICAgICguZ2V0TGVuZ3RoIGJ1ZmZlcikpXG4gICAobGV0XG4gICAgW3JldCAoZildXG4gICAgKGlmXG4gICAgIChpbXBsZW1lbnRzPyBJTWV0YSByZXQpXG4gICAgIChtZXJnZS1tZXRhIHJldCB7OnNvdXJjZSAocGVlay1zb3VyY2UtbG9nIEAoLi1mcmFtZXMgcmVhZGVyKSl9KVxuICAgICByZXQpKVxuICAgKGZpbmFsbHkgKHN3YXAhICguLWZyYW1lcyByZWFkZXIpIHVwZGF0ZS1pbiBbOm9mZnNldF0gcmVzdCkpKSkpXG4ifSB7OnN5bSBtZXJnZS1tZXRhLCA6bWV0YSB7OmRvYyAiUmV0dXJucyBhbiBvYmplY3Qgb2YgdGhlIHNhbWUgdHlwZSBhbmQgdmFsdWUgYXMgYG9iamAsIHdpdGggaXRzXG5tZXRhZGF0YSBtZXJnZWQgb3ZlciBgbWAuIiwgOmFyZ2xpc3RzIChbb2JqIG1dKX0sIDpzb3VyY2UgIihkZWZuXG4gbWVyZ2UtbWV0YVxuIFwiUmV0dXJucyBhbiBvYmplY3Qgb2YgdGhlIHNhbWUgdHlwZSBhbmQgdmFsdWUgYXMgYG9iamAsIHdpdGggaXRzXFxubWV0YWRhdGEgbWVyZ2VkIG92ZXIgYG1gLlwiXG4gW29iaiBtXVxuIChsZXRcbiAgW29yaWctbWV0YSAobWV0YSBvYmopXVxuICAod2l0aC1tZXRhIG9iaiAobWVyZ2UgbSAoZGlzc29jIG9yaWctbWV0YSA6c291cmNlKSkpKSlcbiJ9IHs6c3ltIFJlYWRlciwgOm1ldGEgezpkb2MgbmlsfSwgOm1ldGhvZHMgKHBlZWstY2hhciByZWFkLWNoYXIpfSB7OnN5bSBzb3VyY2UtbG9nZ2luZy1wdXNoLWJhY2stcmVhZGVyLCA6bWV0YSB7OmRvYyAiQ3JlYXRlcyBhIFNvdXJjZUxvZ2dpbmdQdXNoYmFja1JlYWRlciBmcm9tIGEgZ2l2ZW4gc3RyaW5nIG9yIFB1c2hiYWNrUmVhZGVyIiwgOmFyZ2xpc3RzIFtbcy1vci1yZHJdIFtzLW9yLXJkciBidWYtbGVuXSBbcy1vci1yZHIgYnVmLWxlbiBmaWxlLW5hbWVdXX0sIDpzb3VyY2UgIihkZWZuXG4gc291cmNlLWxvZ2dpbmctcHVzaC1iYWNrLXJlYWRlclxuIFwiQ3JlYXRlcyBhIFNvdXJjZUxvZ2dpbmdQdXNoYmFja1JlYWRlciBmcm9tIGEgZ2l2ZW4gc3RyaW5nIG9yIFB1c2hiYWNrUmVhZGVyXCJcbiAoW3Mtb3ItcmRyXSAoc291cmNlLWxvZ2dpbmctcHVzaC1iYWNrLXJlYWRlciBzLW9yLXJkciAxKSlcbiAoW3Mtb3ItcmRyIGJ1Zi1sZW5dXG4gIChzb3VyY2UtbG9nZ2luZy1wdXNoLWJhY2stcmVhZGVyIHMtb3ItcmRyIGJ1Zi1sZW4gbmlsKSlcbiAoW3Mtb3ItcmRyIGJ1Zi1sZW4gZmlsZS1uYW1lXVxuICAoU291cmNlTG9nZ2luZ1B1c2hiYWNrUmVhZGVyLlxuICAgKGlmXG4gICAgKHN0cmluZz8gcy1vci1yZHIpXG4gICAgKHN0cmluZy1wdXNoLWJhY2stcmVhZGVyIHMtb3ItcmRyIGJ1Zi1sZW4pXG4gICAgcy1vci1yZHIpXG4gICAxXG4gICAxXG4gICB0cnVlXG4gICBuaWxcbiAgIDBcbiAgIGZpbGUtbmFtZVxuICAgKGF0b20gezpidWZmZXIgKFN0cmluZ0J1ZmZlci4pLCA6b2Zmc2V0ICcoMCl9KSkpKVxuIn0gezpzeW0gdW5yZWFkLCA6bWV0YSB7OmRvYyAiUHVzaGVzIGJhY2sgYSBzaW5nbGUgY2hhcmFjdGVyIG9uIHRvIHRoZSBzdHJlYW0iLCA6YXJnbGlzdHMgKFtyZWFkZXIgY2hdKX0sIDpwcm90b2NvbCBJUHVzaGJhY2tSZWFkZXJ9IHs6c3ltIHBlZWstY2hhciwgOm1ldGEgezpkb2MgIlJldHVybnMgdGhlIG5leHQgY2hhciBmcm9tIHRoZSBSZWFkZXIgd2l0aG91dCByZW1vdmluZyBpdCBmcm9tIHRoZSByZWFkZXIgc3RyZWFtIiwgOmFyZ2xpc3RzIChbcmVhZGVyXSl9LCA6cHJvdG9jb2wgUmVhZGVyfSB7OnN5bSBJUHVzaGJhY2tSZWFkZXIsIDptZXRhIHs6ZG9jIG5pbH0sIDptZXRob2RzICh1bnJlYWQpfSB7OnN5bSBpbmRleGluZy1yZWFkZXI/LCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0cnVlIGlmIHRoZSByZWFkZXIgc2F0aXNmaWVzIEluZGV4aW5nUmVhZGVyIiwgOmFyZ2xpc3RzIChbcmRyXSl9LCA6c291cmNlICIoZGVmblxuIGluZGV4aW5nLXJlYWRlcj9cbiBcIlJldHVybnMgdHJ1ZSBpZiB0aGUgcmVhZGVyIHNhdGlzZmllcyBJbmRleGluZ1JlYWRlclwiXG4gW3Jkcl1cbiAoaW1wbGVtZW50cz8gSW5kZXhpbmdSZWFkZXIgcmRyKSlcbiJ9IHs6c3ltIHN0cmluZy1yZWFkZXIsIDptZXRhIHs6ZG9jICJDcmVhdGVzIGEgU3RyaW5nUmVhZGVyIGZyb20gYSBnaXZlbiBzdHJpbmciLCA6YXJnbGlzdHMgW1tzXV19LCA6c291cmNlICIoZGVmblxuIHN0cmluZy1yZWFkZXJcbiBcIkNyZWF0ZXMgYSBTdHJpbmdSZWFkZXIgZnJvbSBhIGdpdmVuIHN0cmluZ1wiXG4gKFtzXSAoU3RyaW5nUmVhZGVyLiBzIChjb3VudCBzKSAwKSkpXG4ifSB7OnN5bSByZWFkLWNoYXIsIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRoZSBuZXh0IGNoYXIgZnJvbSB0aGUgUmVhZGVyLCBuaWwgaWYgdGhlIGVuZCBvZiBzdHJlYW0gaGFzIGJlZW4gcmVhY2hlZCIsIDphcmdsaXN0cyAoW3JlYWRlcl0pfSwgOnByb3RvY29sIFJlYWRlcn0gezpzeW0gZ2V0LWNvbHVtbi1udW1iZXIsIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRoZSBjb2x1bW4gbnVtYmVyIG9mIHRoZSBuZXh0IGNoYXJhY3RlciB0byBiZSByZWFkIGZyb20gdGhlIHN0cmVhbSIsIDphcmdsaXN0cyAoW3JlYWRlcl0pfSwgOnByb3RvY29sIEluZGV4aW5nUmVhZGVyfSB7OnN5bSBnZXQtZmlsZS1uYW1lLCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0aGUgZmlsZSBuYW1lIHRoZSByZWFkZXIgaXMgcmVhZGluZyBmcm9tLCBvciBuaWwiLCA6YXJnbGlzdHMgKFtyZWFkZXJdKX0sIDpwcm90b2NvbCBJbmRleGluZ1JlYWRlcn0gezpzeW0gcmVhZC1saW5lLCA6bWV0YSB7OmRvYyAiUmVhZHMgYSBsaW5lIGZyb20gdGhlIHJlYWRlciBvciBmcm9tICppbiogaWYgbm8gcmVhZGVyIGlzIHNwZWNpZmllZCIsIDphcmdsaXN0cyBbW3Jkcl1dfSwgOnNvdXJjZSAiKGRlZm5cbiByZWFkLWxpbmVcbiBcIlJlYWRzIGEgbGluZSBmcm9tIHRoZSByZWFkZXIgb3IgZnJvbSAqaW4qIGlmIG5vIHJlYWRlciBpcyBzcGVjaWZpZWRcIlxuIChbcmRyXVxuICAobG9vcFxuICAgW2MgKHJlYWQtY2hhciByZHIpIHMgKFN0cmluZ0J1ZmZlci4pXVxuICAgKGlmIChuZXdsaW5lPyBjKSAoc3RyIHMpIChyZWN1ciAocmVhZC1jaGFyIHJkcikgKC5hcHBlbmQgcyBjKSkpKSkpXG4ifSB7OnN5bSBzdHJpbmctcHVzaC1iYWNrLXJlYWRlciwgOm1ldGEgezpkb2MgIkNyZWF0ZXMgYSBQdXNoYmFja1JlYWRlciBmcm9tIGEgZ2l2ZW4gc3RyaW5nIiwgOmFyZ2xpc3RzIFtbc10gW3MgYnVmLWxlbl1dfSwgOnNvdXJjZSAiKGRlZm5cbiBzdHJpbmctcHVzaC1iYWNrLXJlYWRlclxuIFwiQ3JlYXRlcyBhIFB1c2hiYWNrUmVhZGVyIGZyb20gYSBnaXZlbiBzdHJpbmdcIlxuIChbc10gKHN0cmluZy1wdXNoLWJhY2stcmVhZGVyIHMgMSkpXG4gKFtzIGJ1Zi1sZW5dXG4gIChQdXNoYmFja1JlYWRlci5cbiAgIChzdHJpbmctcmVhZGVyIHMpXG4gICAob2JqZWN0LWFycmF5IGJ1Zi1sZW4pXG4gICBidWYtbGVuXG4gICBidWYtbGVuKSkpXG4ifSB7OnN5bSBsaW5lLXN0YXJ0PywgOm1ldGEgezpkb2MgIlJldHVybnMgdHJ1ZSBpZiByZHIgaXMgYW4gSW5kZXhpbmdSZWFkZXIgYW5kIHRoZSBjdXJyZW50IGNoYXIgc3RhcnRzIGEgbmV3IGxpbmUiLCA6YXJnbGlzdHMgKFtyZHJdKX0sIDpzb3VyY2UgIihkZWZuXG4gbGluZS1zdGFydD9cbiBcIlJldHVybnMgdHJ1ZSBpZiByZHIgaXMgYW4gSW5kZXhpbmdSZWFkZXIgYW5kIHRoZSBjdXJyZW50IGNoYXIgc3RhcnRzIGEgbmV3IGxpbmVcIlxuIFtyZHJdXG4gKHdoZW4gKGluZGV4aW5nLXJlYWRlcj8gcmRyKSAoPT0gMSAoZ2V0LWNvbHVtbi1udW1iZXIgcmRyKSkpKVxuIn0gezpzeW0gc291cmNlLWxvZ2dpbmctcmVhZGVyPywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtyZHJdKX0sIDpzb3VyY2UgIihkZWZuXG4gc291cmNlLWxvZ2dpbmctcmVhZGVyP1xuIFtyZHJdXG4gKGluc3RhbmNlPyBTb3VyY2VMb2dnaW5nUHVzaGJhY2tSZWFkZXIgcmRyKSlcbiJ9IHs6c3ltIEluZGV4aW5nUmVhZGVyLCA6bWV0YSB7OmRvYyBuaWx9LCA6bWV0aG9kcyAoZ2V0LWNvbHVtbi1udW1iZXIgZ2V0LWZpbGUtbmFtZSBnZXQtbGluZS1udW1iZXIpfSB7OnN5bSBub2RlLXJlYWRhYmxlLXB1c2gtYmFjay1yZWFkZXIsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbcmVhZGFibGVdKX0sIDpzb3VyY2UgIihkZWZuXG4gbm9kZS1yZWFkYWJsZS1wdXNoLWJhY2stcmVhZGVyXG4gW3JlYWRhYmxlXVxuIChQdXNoYmFja1JlYWRlci5cbiAgKE5vZGVSZWFkYWJsZVJlYWRlci4gcmVhZGFibGUgbmlsKVxuICAob2JqZWN0LWFycmF5IDEpXG4gIDFcbiAgMSkpXG4ifSB7OnN5bSBnZXQtbGluZS1udW1iZXIsIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRoZSBsaW5lIG51bWJlciBvZiB0aGUgbmV4dCBjaGFyYWN0ZXIgdG8gYmUgcmVhZCBmcm9tIHRoZSBzdHJlYW0iLCA6YXJnbGlzdHMgKFtyZWFkZXJdKX0sIDpwcm90b2NvbCBJbmRleGluZ1JlYWRlcn0pLCBwZW9wbGUuZGF0YXNjcmlwdCAoezpzeW0gc2NoZW1hLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZlxuIHNjaGVtYVxuIHs6Zm9sbG93c1xuICB7OmRiL3ZhbHVlVHlwZSA6ZGIudHlwZS9yZWYsIDpkYi9jYXJkaW5hbGl0eSA6ZGIuY2FyZGluYWxpdHkvbWFueX0sXG4gIDphbGlhcyB7OmRiL2NhcmRpbmFsaXR5IDpkYi5jYXJkaW5hbGl0eS9tYW55fX0pXG4ifSB7OnN5bSBpbml0LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW10pfSwgOnNvdXJjZSAiKGRlZm4gaW5pdCBbXSAoZC9kYi13aXRoIChkL2VtcHR5LWRiIHNjaGVtYSkgY29yZS9wZW9wbGUyMGspKVxuIn0gezpzeW0gaW5pdGlhbC1kYiwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgaW5pdGlhbC1kYiAoaW5pdCkpXG4ifSB7OnN5bSBydW4sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbXSl9LCA6c291cmNlICIoZGVmbiBydW4gW10gKHF1ZXJ5IGluaXRpYWwtZGIpKVxuIn0pLCBzYWJsb25vLm5vcm1hbGl6ZSAoezpzeW0gbWFwLWxvb2t1cD8sIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRydWUgaWYgYHhgIGlzIGEgbWFwIGxvb2t1cCBmb3JtLCBvdGhlcndpc2UgZmFsc2UuIiwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBtYXAtbG9va3VwP1xuIFwiUmV0dXJucyB0cnVlIGlmIGB4YCBpcyBhIG1hcCBsb29rdXAgZm9ybSwgb3RoZXJ3aXNlIGZhbHNlLlwiXG4gW3hdXG4gKGFuZCAobGlzdD8geCkgKGtleXdvcmQ/IChmaXJzdCB4KSkpKVxuIn0gezpzeW0gYXR0cmlidXRlcywgOm1ldGEgezpkb2MgIk5vcm1hbGl6ZSB0aGUgYGF0dHJzYCBvZiBhbiBlbGVtZW50LiIsIDphcmdsaXN0cyAoW2F0dHJzXSl9LCA6c291cmNlICIoZGVmblxuIGF0dHJpYnV0ZXNcbiBcIk5vcm1hbGl6ZSB0aGUgYGF0dHJzYCBvZiBhbiBlbGVtZW50LlwiXG4gW2F0dHJzXVxuIChjb25kLT4gYXR0cnMgKDpjbGFzcyBhdHRycykgKHVwZGF0ZS1pbiBbOmNsYXNzXSBjbGFzcykpKVxuIn0gezpzeW0gY29tcGFjdC1tYXAsIDptZXRhIHs6ZG9jICJSZW1vdmVzIGFsbCBtYXAgZW50cmllcyB3aGVyZSB0aGUgdmFsdWUgb2YgdGhlIGVudHJ5IGlzIGVtcHR5LiIsIDphcmdsaXN0cyAoW21dKX0sIDpzb3VyY2UgIihkZWZuXG4gY29tcGFjdC1tYXBcbiBcIlJlbW92ZXMgYWxsIG1hcCBlbnRyaWVzIHdoZXJlIHRoZSB2YWx1ZSBvZiB0aGUgZW50cnkgaXMgZW1wdHkuXCJcbiBbbV1cbiAod2hlbiBtIChpbnRvIHt9IChyZW1vdmUgKGZuIFtbXyB2XV0gKGVtcHR5PyB2KSkpIG0pKSlcbiJ9IHs6c3ltIGNoaWxkcmVuLCA6bWV0YSB7OmRvYyAiTm9ybWFsaXplIHRoZSBjaGlsZHJlbiBvZiBhIEhUTUwgZWxlbWVudC4iLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmblxuIGNoaWxkcmVuXG4gXCJOb3JtYWxpemUgdGhlIGNoaWxkcmVuIG9mIGEgSFRNTCBlbGVtZW50LlwiXG4gW3hdXG4gKC0+PlxuICAoY29uZFxuICAgKG5pbD8geClcbiAgICcoKVxuICAgKHN0cmluZz8geClcbiAgIChsaXN0IHgpXG4gICAodXRpbC9lbGVtZW50PyB4KVxuICAgKGxpc3QgeClcbiAgIChhbmQgKGxpc3Q/IHgpIChzeW1ib2w/IChmaXJzdCB4KSkpXG4gICAobGlzdCB4KVxuICAgKGxpc3Q/IHgpXG4gICB4XG4gICAoYW5kXG4gICAgKHNlcXVlbnRpYWw/IHgpXG4gICAgKD0gKGNvdW50IHgpIDEpXG4gICAgKHNlcXVlbnRpYWw/IChmaXJzdCB4KSlcbiAgICAobm90IChzdHJpbmc/IChmaXJzdCB4KSkpXG4gICAgKG5vdCAodXRpbC9lbGVtZW50PyAoZmlyc3QgeCkpKSlcbiAgIChjaGlsZHJlbiAoZmlyc3QgeCkpXG4gICAoc2VxdWVudGlhbD8geClcbiAgIHhcbiAgIDplbHNlXG4gICAobGlzdCB4KSlcbiAgKHJlbW92ZSBuaWw/KSkpXG4ifSB7OnN5bSBlbGVtZW50LCA6bWV0YSB7OmRvYyAiRW5zdXJlIGFuIGVsZW1lbnQgdmVjdG9yIGlzIG9mIHRoZSBmb3JtIFt0YWctbmFtZSBhdHRycyBjb250ZW50XS4iLCA6YXJnbGlzdHMgKFtbdGFnICYgY29udGVudF1dKX0sIDpzb3VyY2UgIihkZWZuXG4gZWxlbWVudFxuIFwiRW5zdXJlIGFuIGVsZW1lbnQgdmVjdG9yIGlzIG9mIHRoZSBmb3JtIFt0YWctbmFtZSBhdHRycyBjb250ZW50XS5cIlxuIFtbdGFnICYgY29udGVudF1dXG4gKHdoZW4tbm90XG4gIChvciAoa2V5d29yZD8gdGFnKSAoc3ltYm9sPyB0YWcpIChzdHJpbmc/IHRhZykpXG4gICh0aHJvd1xuICAgKGV4LWluZm9cbiAgICAoc3RyIHRhZyBcIiBpcyBub3QgYSB2YWxpZCBlbGVtZW50IG5hbWUuXCIpXG4gICAgezp0YWcgdGFnLCA6Y29udGVudCBjb250ZW50fSkpKVxuIChsZXRcbiAgW1t0YWcgaWQgY2xhc3NdXG4gICAobWF0Y2gtdGFnIHRhZylcbiAgIHRhZy1hdHRyc1xuICAgKGNvbXBhY3QtbWFwIHs6aWQgaWQsIDpjbGFzcyBjbGFzc30pXG4gICBtYXAtYXR0cnNcbiAgIChmaXJzdCBjb250ZW50KV1cbiAgKGlmXG4gICAoYXR0cnM/IG1hcC1hdHRycylcbiAgIFt0YWdcbiAgICAobWVyZ2Utd2l0aC1jbGFzcyB0YWctYXR0cnMgbWFwLWF0dHJzKVxuICAgIChjaGlsZHJlbiAobmV4dCBjb250ZW50KSldXG4gICBbdGFnIChhdHRyaWJ1dGVzIHRhZy1hdHRycykgKGNoaWxkcmVuIGNvbnRlbnQpXSkpKVxuIn0gezpzeW0gbWF0Y2gtdGFnLCA6bWV0YSB7OmRvYyAiTWF0Y2ggYHNgIGFzIGEgQ1NTIHRhZyBhbmQgcmV0dXJuIGEgdmVjdG9yIG9mIHRhZyBuYW1lLCBDU1MgaWQgYW5kXG4gIENTUyBjbGFzc2VzLiIsIDphcmdsaXN0cyAoW3NdKX0sIDpzb3VyY2UgIihkZWZuXG4gbWF0Y2gtdGFnXG4gXCJNYXRjaCBgc2AgYXMgYSBDU1MgdGFnIGFuZCByZXR1cm4gYSB2ZWN0b3Igb2YgdGFnIG5hbWUsIENTUyBpZCBhbmRcXG4gIENTUyBjbGFzc2VzLlwiXG4gW3NdXG4gKGxldFxuICBbbWF0Y2hlc1xuICAgKHJlLXNlcSAjXCJbIy5dP1teIy5dK1wiIChuYW1lIHMpKVxuICAgW3RhZy1uYW1lIG5hbWVzXVxuICAgKGNvbmRcbiAgICAoZW1wdHk/IG1hdGNoZXMpXG4gICAgKHRocm93IChleC1pbmZvIChzdHIgXCJDYW4ndCBtYXRjaCBDU1MgdGFnOiBcIiBzKSB7OnRhZyBzfSkpXG4gICAgKCN7XFwjIFxcLn0gKGZmaXJzdCBtYXRjaGVzKSlcbiAgICBbXCJkaXZcIiBtYXRjaGVzXVxuICAgIDpkZWZhdWx0XG4gICAgWyhmaXJzdCBtYXRjaGVzKSAocmVzdCBtYXRjaGVzKV0pXVxuICBbdGFnLW5hbWVcbiAgIChzdHJpcC1jc3NcbiAgICAoc29tZVxuICAgICAoZm4qIFtwMV9fNDI3OTUjXSAod2hlbiAoPSBcXCMgKGZpcnN0IHAxX180Mjc5NSMpKSBwMV9fNDI3OTUjKSlcbiAgICAgbmFtZXMpKVxuICAgKGludG9cbiAgICBbXVxuICAgIChjb21wXG4gICAgIChmaWx0ZXIgKGZuKiBbcDFfXzQyNzk2I10gKD0gXFwuIChmaXJzdCBwMV9fNDI3OTYjKSkpKVxuICAgICAobWFwIHN0cmlwLWNzcykpXG4gICAgbmFtZXMpXSkpXG4ifSB7OnN5bSBzdHJpcC1jc3MsIDptZXRhIHs6ZG9jICJTdHJpcCB0aGUgIyBhbmQgLiBjaGFyYWN0ZXJzIGZyb20gdGhlIGJlZ2lubmluZyBvZiBgc2AuIiwgOmFyZ2xpc3RzIChbc10pfSwgOnNvdXJjZSAiKGRlZm5cbiBzdHJpcC1jc3NcbiBcIlN0cmlwIHRoZSAjIGFuZCAuIGNoYXJhY3RlcnMgZnJvbSB0aGUgYmVnaW5uaW5nIG9mIGBzYC5cIlxuIFtzXVxuICh3aGVuIHMgKHN0ci9yZXBsYWNlIHMgI1wiXlsuI11cIiBcIlwiKSkpXG4ifSB7OnN5bSBjbGFzcywgOm1ldGEgezpkb2MgIk5vcm1hbGl6ZSBgY2xhc3NgIGludG8gYSB2ZWN0b3Igb2YgY2xhc3Nlcy4iLCA6YXJnbGlzdHMgKFtjbGFzc10pfSwgOnNvdXJjZSAiKGRlZm5cbiBjbGFzc1xuIFwiTm9ybWFsaXplIGBjbGFzc2AgaW50byBhIHZlY3RvciBvZiBjbGFzc2VzLlwiXG4gW2NsYXNzXVxuIChjb25kXG4gIChuaWw/IGNsYXNzKVxuICBuaWxcbiAgKG1hcC1sb29rdXA/IGNsYXNzKVxuICBbY2xhc3NdXG4gIChsaXN0PyBjbGFzcylcbiAgKGlmIChzeW1ib2w/IChmaXJzdCBjbGFzcykpIFtjbGFzc10gKG1hcCBjbGFzcy1uYW1lIGNsYXNzKSlcbiAgKHN5bWJvbD8gY2xhc3MpXG4gIFtjbGFzc11cbiAgKHN0cmluZz8gY2xhc3MpXG4gIFtjbGFzc11cbiAgKGtleXdvcmQ/IGNsYXNzKVxuICBbKGNsYXNzLW5hbWUgY2xhc3MpXVxuICAoYW5kXG4gICAob3IgKHNldD8gY2xhc3MpIChzZXF1ZW50aWFsPyBjbGFzcykpXG4gICAoZXZlcnk/XG4gICAgKGZuKiBbcDFfXzQyNzk0I10gKG9yIChrZXl3b3JkPyBwMV9fNDI3OTQjKSAoc3RyaW5nPyBwMV9fNDI3OTQjKSkpXG4gICAgY2xhc3MpKVxuICAobWFwdiBjbGFzcy1uYW1lIGNsYXNzKVxuICAoYW5kIChvciAoc2V0PyBjbGFzcykgKHNlcXVlbnRpYWw/IGNsYXNzKSkpXG4gIChtYXB2IGNsYXNzLW5hbWUgY2xhc3MpXG4gIDplbHNlXG4gIGNsYXNzKSlcbiJ9IHs6c3ltIGNsYXNzLW5hbWUsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm4gY2xhc3MtbmFtZSBbeF0gKGNvbmQgKHN0cmluZz8geCkgeCAoa2V5d29yZD8geCkgKG5hbWUgeCkgOmVsc2UgeCkpXG4ifSB7OnN5bSBtZXJnZS13aXRoLWNsYXNzLCA6bWV0YSB7OmRvYyAiTGlrZSBjbG9qdXJlLmNvcmUvbWVyZ2UgYnV0IGNvbmNhdGVuYXRlIDpjbGFzcyBlbnRyaWVzLiIsIDphcmdsaXN0cyAoWyYgbWFwc10pfSwgOnNvdXJjZSAiKGRlZm5cbiBtZXJnZS13aXRoLWNsYXNzXG4gXCJMaWtlIGNsb2p1cmUuY29yZS9tZXJnZSBidXQgY29uY2F0ZW5hdGUgOmNsYXNzIGVudHJpZXMuXCJcbiBbJiBtYXBzXVxuIChsZXRcbiAgW21hcHMgKG1hcCBhdHRyaWJ1dGVzIG1hcHMpIGNsYXNzZXMgKG1hcGNhdCA6Y2xhc3MgbWFwcyldXG4gICh3aGVuXG4gICAoc2VxIG1hcHMpXG4gICAoY29uZC0+XG4gICAgKHJlZHVjZSBpbnRvIHt9IG1hcHMpXG4gICAgKG5vdCAoZW1wdHk/IGNsYXNzZXMpKVxuICAgIChhc3NvYyA6Y2xhc3MgKHZlYyBjbGFzc2VzKSkpKSkpXG4ifSksIGNsb2p1cmUudGVzdC5jaGVjay5wcm9wZXJ0aWVzICh7OnN5bSBmb3ItYWxsKiwgOm1ldGEgezpkb2MgIkEgZnVuY3Rpb24gdmVyc2lvbiBvZiBgZm9yLWFsbGAuIFRha2VzIGEgc2VxdWVuY2Ugb2YgTiBnZW5lcmF0b3JzXG4gIGFuZCBhIGZ1bmN0aW9uIG9mIE4gYXJncywgYW5kIHJldHVybnMgYSBwcm9wZXJ0eSB0aGF0IGNhbGxzIHRoZVxuICBmdW5jdGlvbiB3aXRoIGdlbmVyYXRlZCB2YWx1ZXMgYW5kIHRlc3RzIHRoZSByZXR1cm4gdmFsdWUgZm9yXG4gIHRydXRoaW5lc3MsIGxpa2Ugd2l0aCBgZm9yLWFsbGAuXG5cbiAgRXhhbXBsZTpcblxuICAoZm9yLWFsbCogW2dlbi9sYXJnZS1pbnRlZ2VyIGdlbi9sYXJnZS1pbnRlZ2VyXVxuICAgICAgICAgICAgKGZuIFthIGJdICg+PSAoKyBhIGIpIGEpKSkiLCA6YXJnbGlzdHMgKFthcmdzIGZ1bmN0aW9uXSl9LCA6c291cmNlICIoZGVmblxuIGZvci1hbGwqXG4gXCJBIGZ1bmN0aW9uIHZlcnNpb24gb2YgYGZvci1hbGxgLiBUYWtlcyBhIHNlcXVlbmNlIG9mIE4gZ2VuZXJhdG9yc1xcbiAgYW5kIGEgZnVuY3Rpb24gb2YgTiBhcmdzLCBhbmQgcmV0dXJucyBhIHByb3BlcnR5IHRoYXQgY2FsbHMgdGhlXFxuICBmdW5jdGlvbiB3aXRoIGdlbmVyYXRlZCB2YWx1ZXMgYW5kIHRlc3RzIHRoZSByZXR1cm4gdmFsdWUgZm9yXFxuICB0cnV0aGluZXNzLCBsaWtlIHdpdGggYGZvci1hbGxgLlxcblxcbiAgRXhhbXBsZTpcXG5cXG4gIChmb3ItYWxsKiBbZ2VuL2xhcmdlLWludGVnZXIgZ2VuL2xhcmdlLWludGVnZXJdXFxuICAgICAgICAgICAgKGZuIFthIGJdICg+PSAoKyBhIGIpIGEpKSlcIlxuIFthcmdzIGZ1bmN0aW9uXVxuIChnZW4vZm1hcCAoYXBwbHktZ2VuIGZ1bmN0aW9uKSAoYXBwbHkgZ2VuL3R1cGxlIGFyZ3MpKSlcbiJ9KSwgZXhwb3VuZC51dGlsICh7OnN5bSBhc3NlcnQtbWVzc2FnZSwgOm1ldGEge30sIDpzb3VyY2UgIihkZWZcbiBhc3NlcnQtbWVzc2FnZVxuIFwiSW50ZXJuYWwgRXhwb3VuZCBhc3NlcnRpb24gZmFpbGVkLiBQbGVhc2UgcmVwb3J0IHRoaXMgYnVnIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9iaGIvZXhwb3VuZC9pc3N1ZXNcIilcbiJ9IHs6c3ltIG5hbj8sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBuYW4/XG4gW3hdXG4gIz8oOmNsaiAoYW5kIChudW1iZXI/IHgpIChEb3VibGUvaXNOYU4geCkpIDpjbGpzIChhbmQgKG51bWJlcj8geCkgKGpzL2lzTmFOIHgpKSkpXG4ifSB7OnN5bSBzcGVjLXZhbHMsIDptZXRhIHs6ZG9jICJSZXR1cm5zIGFsbCBzcGVjIGtleXMgb3IgcHJlZCAiLCA6YXJnbGlzdHMgW1tzcGVjLWlkZW50XV19LCA6c291cmNlICIoZGVmblxuIHNwZWMtdmFsc1xuIFwiUmV0dXJucyBhbGwgc3BlYyBrZXlzIG9yIHByZWQgXCJcbiAoW3NwZWMtaWRlbnRdXG4gICgtPj4gc3BlYy1pZGVudCAoaXRlcmF0ZSBwYXJlbnQtc3BlYykgKHRha2Utd2hpbGUgc29tZT8pKSkpXG4ifSksIGNsanMuc291cmNlLW1hcCAoezpzeW0gdXBkYXRlLXJlc3VsdCwgOm1ldGEgezpkb2MgIkhlbHBlciBmb3IgZGVjb2RlLiBUYWtlIGEgc291cmNlIG1hcCBhbmQgdXBkYXRlIGl0IGJhc2VkIG9uIGFcbiAgc2VnbWVudCBtYXAuIiwgOmFyZ2xpc3RzIChbcmVzdWx0IHNlZ21hcCBnbGluZV0pfSwgOnNvdXJjZSAiKGRlZm5cbiB1cGRhdGUtcmVzdWx0XG4gXCJIZWxwZXIgZm9yIGRlY29kZS4gVGFrZSBhIHNvdXJjZSBtYXAgYW5kIHVwZGF0ZSBpdCBiYXNlZCBvbiBhXFxuICBzZWdtZW50IG1hcC5cIlxuIFtyZXN1bHQgc2VnbWFwIGdsaW5lXVxuIChsZXRcbiAgW3s6a2V5cyBbZ2NvbCBzb3VyY2UgbGluZSBjb2wgbmFtZV19XG4gICBzZWdtYXBcbiAgIGRcbiAgIHs6bGluZSBsaW5lLCA6Y29sIGNvbCwgOnNvdXJjZSBzb3VyY2V9XG4gICBkXG4gICAoaWYgbmFtZSAoYXNzb2MgZCA6bmFtZSBuYW1lKSBkKV1cbiAgKHVwZGF0ZS1pblxuICAgcmVzdWx0XG4gICBbZ2xpbmVdXG4gICAoZm5pbFxuICAgIChmblxuICAgICBbbV1cbiAgICAgKHVwZGF0ZS1pblxuICAgICAgbVxuICAgICAgW2djb2xdXG4gICAgICAoZm5pbCAoZm4qIFtwMV9fNDI3OTcjXSAoY29uaiBwMV9fNDI3OTcjIGQpKSBbXSkpKVxuICAgIChzb3J0ZWQtbWFwKSkpKSlcbiJ9IHs6c3ltIGVuY29kZSwgOm1ldGEgezpkb2MgIlRha2UgYW4gaW50ZXJuYWwgc291cmNlIG1hcCByZXByZXNlbnRhdGlvbiByZXByZXNlbnRlZCBhcyBuZXN0ZWRcbiAgIHNvcnRlZCBtYXBzIG9mIGZpbGUsIGxpbmUsIGNvbHVtbiBhbmQgcmV0dXJuIGEgc291cmNlIG1hcCB2MyBKU09OXG4gICBzdHJpbmcuIiwgOmFyZ2xpc3RzIChbbSBvcHRzXSl9LCA6c291cmNlICIoZGVmblxuIGVuY29kZVxuIFwiVGFrZSBhbiBpbnRlcm5hbCBzb3VyY2UgbWFwIHJlcHJlc2VudGF0aW9uIHJlcHJlc2VudGVkIGFzIG5lc3RlZFxcbiAgIHNvcnRlZCBtYXBzIG9mIGZpbGUsIGxpbmUsIGNvbHVtbiBhbmQgcmV0dXJuIGEgc291cmNlIG1hcCB2MyBKU09OXFxuICAgc3RyaW5nLlwiXG4gW20gb3B0c11cbiAobGV0XG4gIFtsaW5lc1xuICAgKGF0b20gW1tdXSlcbiAgIG5hbWVzLT5pZHhcbiAgIChhdG9tIHt9KVxuICAgbmFtZS1pZHhcbiAgIChhdG9tIDApXG4gICBwcmVhbWJsZS1saW5lc1xuICAgKHRha2UgKG9yICg6cHJlYW1ibGUtbGluZS1jb3VudCBvcHRzKSAwKSAocmVwZWF0IFtdKSlcbiAgIGluZm8tPnNlZ3ZcbiAgIChmblxuICAgIFtpbmZvIHNvdXJjZS1pZHggbGluZSBjb2xdXG4gICAgKGxldFxuICAgICBbc2VndiBbKDpnY29sIGluZm8pIHNvdXJjZS1pZHggbGluZSBjb2xdXVxuICAgICAoaWYtbGV0XG4gICAgICBbbmFtZSAoOm5hbWUgaW5mbyldXG4gICAgICAobGV0XG4gICAgICAgW2lkeFxuICAgICAgICAoaWYtbGV0XG4gICAgICAgICBbaWR4IChnZXQgQG5hbWVzLT5pZHggbmFtZSldXG4gICAgICAgICBpZHhcbiAgICAgICAgIChsZXRcbiAgICAgICAgICBbY2lkeCBAbmFtZS1pZHhdXG4gICAgICAgICAgKHN3YXAhIG5hbWVzLT5pZHggYXNzb2MgbmFtZSBjaWR4KVxuICAgICAgICAgIChzd2FwISBuYW1lLWlkeCBpbmMpXG4gICAgICAgICAgY2lkeCkpXVxuICAgICAgIChjb25qIHNlZ3YgaWR4KSlcbiAgICAgIHNlZ3YpKSlcbiAgIGVuY29kZS1jb2xzXG4gICAoZm5cbiAgICBbaW5mb3Mgc291cmNlLWlkeCBsaW5lIGNvbF1cbiAgICAoZG9zZXFcbiAgICAgW2luZm8gaW5mb3NdXG4gICAgIChsZXRcbiAgICAgIFtzZWd2XG4gICAgICAgKGluZm8tPnNlZ3YgaW5mbyBzb3VyY2UtaWR4IGxpbmUgY29sKVxuICAgICAgIGdsaW5lXG4gICAgICAgKDpnbGluZSBpbmZvKVxuICAgICAgIGxjXG4gICAgICAgKGNvdW50IEBsaW5lcyldXG4gICAgICAoaWZcbiAgICAgICAoPiBnbGluZSAoZGVjIGxjKSlcbiAgICAgICAoc3dhcCFcbiAgICAgICAgbGluZXNcbiAgICAgICAgKGZuXG4gICAgICAgICBbbGluZXNdXG4gICAgICAgICAoY29ualxuICAgICAgICAgIChpbnRvIGxpbmVzIChyZXBlYXQgKGRlYyAoLSBnbGluZSAoZGVjIGxjKSkpIFtdKSlcbiAgICAgICAgICBbc2Vndl0pKSlcbiAgICAgICAoc3dhcCFcbiAgICAgICAgbGluZXNcbiAgICAgICAgKGZuIFtsaW5lc10gKHVwZGF0ZS1pbiBsaW5lcyBbZ2xpbmVdIGNvbmogc2VndikpKSkpKSldXG4gIChkb3NlcVxuICAgW1tzb3VyY2UtaWR4IFtfIGxpbmVzXV0gKG1hcC1pbmRleGVkIChmbiBbaSB2XSBbaSB2XSkgbSldXG4gICAoZG9zZXFcbiAgICBbW2xpbmUgY29sc10gbGluZXNdXG4gICAgKGRvc2VxXG4gICAgIFtbY29sIGluZm9zXSBjb2xzXVxuICAgICAoZW5jb2RlLWNvbHMgaW5mb3Mgc291cmNlLWlkeCBsaW5lIGNvbCkpKSlcbiAgKGxldFxuICAgW3NvdXJjZS1tYXAtZmlsZS1jb250ZW50c1xuICAgIChjb25kLT5cbiAgICAgI2pzIHtcInZlcnNpb25cIiAzLCBcImZpbGVcIiAoOmZpbGUgb3B0cyksIFwic291cmNlc1wiIChsZXQgW3BhdGhzIChrZXlzIG0pIGYgKGNvbXAgKGlmICh0cnVlPyAoOnNvdXJjZS1tYXAtdGltZXN0YW1wIG9wdHMpKSAoZm4qIFtwMV9fNDI3OTgjXSAoc3RyIHAxX180Mjc5OCMgXCI/cmVsPVwiICgudmFsdWVPZiAoanMvRGF0ZS4pKSkpIGlkZW50aXR5KSAoZm4qIFtwMV9fNDI3OTkjXSAobGFzdCAoc3RyaW5nL3NwbGl0IHAxX180Mjc5OSMgI1wiL1wiKSkpKV0gKC0+PiBwYXRocyAobWFwIGYpIChpbnRvLWFycmF5KSkpLCBcImxpbmVDb3VudFwiICg6bGluZXMgb3B0cyksIFwibWFwcGluZ3NcIiAoLT4+IChsaW5lcy0+c2VncyAoY29uY2F0IHByZWFtYmxlLWxpbmVzIChjbG9qdXJlLmNvcmUvZGVyZWYgbGluZXMpKSkgKG1hcCAoZm4qIFtwMV9fNDI4MDAjXSAoc3RyaW5nL2pvaW4gXCIsXCIgcDFfXzQyODAwIykpKSAoc3RyaW5nL2pvaW4gXCI7XCIpKSwgXCJuYW1lc1wiIChpbnRvLWFycmF5IChtYXAgKHNldC9tYXAtaW52ZXJ0IChjbG9qdXJlLmNvcmUvZGVyZWYgbmFtZXMtPmlkeCkpIChyYW5nZSAoY291bnQgKGNsb2p1cmUuY29yZS9kZXJlZiBuYW1lcy0+aWR4KSkpKSl9XG4gICAgICg6c291cmNlcy1jb250ZW50IG9wdHMpXG4gICAgIChkb3RvXG4gICAgICAoZ29iai9zZXRcbiAgICAgICBcInNvdXJjZXNDb250ZW50XCJcbiAgICAgICAoaW50by1hcnJheSAoOnNvdXJjZXMtY29udGVudCBvcHRzKSkpKSldXG4gICAoLnN0cmluZ2lmeSBqcy9KU09OIHNvdXJjZS1tYXAtZmlsZS1jb250ZW50cykpKSlcbiJ9IHs6c3ltIGludmVydC1yZXZlcnNlLW1hcCwgOm1ldGEgezpkb2MgIkdpdmVuIGEgQ2xvanVyZVNjcmlwdCB0byBKYXZhU2NyaXB0IHNvdXJjZSBtYXAsIGludmVydCBpdC4gVXNlZnVsIHdoZW5cbiAgIG1hcHBpbmcgSmF2YVNjcmlwdCBzdGFjayB0cmFjZXMgd2hlbiBlbnZpcm9ubWVudCBzdXBwb3J0IGlzIHVuYXZhaWxhYmxlLiIsIDphcmdsaXN0cyAoW3JldmVyc2UtbWFwXSl9LCA6c291cmNlICIoZGVmblxuIGludmVydC1yZXZlcnNlLW1hcFxuIFwiR2l2ZW4gYSBDbG9qdXJlU2NyaXB0IHRvIEphdmFTY3JpcHQgc291cmNlIG1hcCwgaW52ZXJ0IGl0LiBVc2VmdWwgd2hlblxcbiAgIG1hcHBpbmcgSmF2YVNjcmlwdCBzdGFjayB0cmFjZXMgd2hlbiBlbnZpcm9ubWVudCBzdXBwb3J0IGlzIHVuYXZhaWxhYmxlLlwiXG4gW3JldmVyc2UtbWFwXVxuIChsZXRcbiAgW2ludmVydGVkIChhdG9tIChzb3J0ZWQtbWFwKSldXG4gIChkb3NlcVxuICAgW1tsaW5lIGNvbHVtbnNdIHJldmVyc2UtbWFwXVxuICAgKGRvc2VxXG4gICAgW1tjb2x1bW4gY29sdW1uLWluZm9dIGNvbHVtbnNdXG4gICAgKGRvc2VxXG4gICAgIFt7OmtleXMgW2dsaW5lIGdjb2wgbmFtZV19IGNvbHVtbi1pbmZvXVxuICAgICAoc3dhcCFcbiAgICAgIGludmVydGVkXG4gICAgICB1cGRhdGUtaW5cbiAgICAgIFtnbGluZV1cbiAgICAgIChmbmlsXG4gICAgICAgKGZuXG4gICAgICAgIFtjb2x1bW5zXVxuICAgICAgICAodXBkYXRlLWluXG4gICAgICAgICBjb2x1bW5zXG4gICAgICAgICBbZ2NvbF1cbiAgICAgICAgIChmbmlsIGNvbmogW10pXG4gICAgICAgICB7OmxpbmUgbGluZSwgOmNvbCBjb2x1bW4sIDpuYW1lIG5hbWV9KSlcbiAgICAgICAoc29ydGVkLW1hcCkpKSkpKVxuICBAaW52ZXJ0ZWQpKVxuIn0gezpzeW0gZGVjb2RlLCA6bWV0YSB7OmRvYyAiQ29udmVydCBhIHYzIHNvdXJjZSBtYXAgSlNPTiBvYmplY3QgaW50byBhIHNvdXJjZSBtYXAgbWFwcGluZ1xuICBnZW5lcmF0ZWQgSmF2YVNjcmlwdCBzb3VyY2UgbG9jYXRpb25zIHRvIHRoZSBvcmlnaW5hbFxuICBDbG9qdXJlU2NyaXB0LiIsIDphcmdsaXN0cyBbW3NvdXJjZS1tYXBdIFttYXBwaW5ncyBzb3VyY2UtbWFwXV19LCA6c291cmNlICIoZGVmblxuIGRlY29kZVxuIFwiQ29udmVydCBhIHYzIHNvdXJjZSBtYXAgSlNPTiBvYmplY3QgaW50byBhIHNvdXJjZSBtYXAgbWFwcGluZ1xcbiAgZ2VuZXJhdGVkIEphdmFTY3JpcHQgc291cmNlIGxvY2F0aW9ucyB0byB0aGUgb3JpZ2luYWxcXG4gIENsb2p1cmVTY3JpcHQuXCJcbiAoW3NvdXJjZS1tYXBdIChkZWNvZGUgKGdvYmovZ2V0IHNvdXJjZS1tYXAgXCJtYXBwaW5nc1wiKSBzb3VyY2UtbWFwKSlcbiAoW21hcHBpbmdzIHNvdXJjZS1tYXBdXG4gIChsZXRcbiAgIFtzb3VyY2VzXG4gICAgKGdvYmovZ2V0IHNvdXJjZS1tYXAgXCJzb3VyY2VzXCIpXG4gICAgcmVsc2VnLWluaXRcbiAgICBbMCAwIDAgMCAwXVxuICAgIGxpbmVzXG4gICAgKHNlcSAoc3RyaW5nL3NwbGl0IG1hcHBpbmdzICNcIjtcIikpXVxuICAgKGxvb3BcbiAgICBbZ2xpbmUgMCBsaW5lcyBsaW5lcyByZWxzZWcgcmVsc2VnLWluaXQgcmVzdWx0IHt9XVxuICAgIChpZlxuICAgICBsaW5lc1xuICAgICAobGV0XG4gICAgICBbbGluZVxuICAgICAgIChmaXJzdCBsaW5lcylcbiAgICAgICBbcmVzdWx0IHJlbHNlZ11cbiAgICAgICAoaWZcbiAgICAgICAgKHN0cmluZy9ibGFuaz8gbGluZSlcbiAgICAgICAgW3Jlc3VsdCByZWxzZWddXG4gICAgICAgIChsZXRcbiAgICAgICAgIFtzZWdzIChzZXEgKHN0cmluZy9zcGxpdCBsaW5lICNcIixcIikpXVxuICAgICAgICAgKGxvb3BcbiAgICAgICAgICBbc2VncyBzZWdzIHJlbHNlZyByZWxzZWcgcmVzdWx0IHJlc3VsdF1cbiAgICAgICAgICAoaWZcbiAgICAgICAgICAgc2Vnc1xuICAgICAgICAgICAobGV0XG4gICAgICAgICAgICBbc2VnXG4gICAgICAgICAgICAgKGZpcnN0IHNlZ3MpXG4gICAgICAgICAgICAgbnJlbHNlZ1xuICAgICAgICAgICAgIChzZWctY29tYmluZSAoYmFzZTY0LXZscS9kZWNvZGUgc2VnKSByZWxzZWcpXVxuICAgICAgICAgICAgKHJlY3VyXG4gICAgICAgICAgICAgKG5leHQgc2VncylcbiAgICAgICAgICAgICBucmVsc2VnXG4gICAgICAgICAgICAgKHVwZGF0ZS1yZXN1bHRcbiAgICAgICAgICAgICAgcmVzdWx0XG4gICAgICAgICAgICAgIChzZWctPm1hcCBucmVsc2VnIHNvdXJjZS1tYXApXG4gICAgICAgICAgICAgIGdsaW5lKSkpXG4gICAgICAgICAgIFtyZXN1bHQgcmVsc2VnXSkpKSldXG4gICAgICAocmVjdXIgKGluYyBnbGluZSkgKG5leHQgbGluZXMpIChhc3NvYyByZWxzZWcgMCAwKSByZXN1bHQpKVxuICAgICByZXN1bHQpKSkpKVxuIn0gezpzeW0gc2VnLT5tYXAsIDptZXRhIHs6ZG9jICJUYWtlIGEgc291cmNlIG1hcCBzZWdtZW50IHJlcHJlc2VudGVkIGFzIGEgdmVjdG9yXG4gICBhbmQgcmV0dXJuIGEgbWFwLiIsIDphcmdsaXN0cyAoW3NlZyBzb3VyY2UtbWFwXSl9LCA6c291cmNlICIoZGVmblxuIHNlZy0+bWFwXG4gXCJUYWtlIGEgc291cmNlIG1hcCBzZWdtZW50IHJlcHJlc2VudGVkIGFzIGEgdmVjdG9yXFxuICAgYW5kIHJldHVybiBhIG1hcC5cIlxuIFtzZWcgc291cmNlLW1hcF1cbiAobGV0XG4gIFtbZ2NvbCBzb3VyY2UgbGluZSBjb2wgbmFtZV0gc2VnXVxuICB7Omdjb2wgZ2NvbCxcbiAgIDpzb3VyY2UgKGFnZXQgKGdvYmovZ2V0IHNvdXJjZS1tYXAgXCJzb3VyY2VzXCIpIHNvdXJjZSksXG4gICA6bGluZSBsaW5lLFxuICAgOmNvbCBjb2wsXG4gICA6bmFtZVxuICAgKHdoZW4tbGV0XG4gICAgW25hbWUgKC0+IHNlZyBtZXRhIDpuYW1lKV1cbiAgICAoYWdldCAoZ29iai9nZXQgc291cmNlLW1hcCBcIm5hbWVzXCIpIG5hbWUpKX0pKVxuIn0gezpzeW0gc291cmNlLWNvbXBhcmUsIDptZXRhIHs6ZG9jICJUYWtlIGEgc2VxIG9mIHNvdXJjZSBmaWxlIG5hbWVzIGFuZCByZXR1cm4gYSBjb21wYXJhdG9yXG4gICB0aGF0IGNhbiBiZSB1c2VkIHRvIGNvbnN0cnVjdCBhIHNvcnRlZCBtYXAuIEZvciByZXZlcnNlXG4gICBzb3VyY2UgbWFwcy4iLCA6YXJnbGlzdHMgKFtzb3VyY2VzXSl9LCA6c291cmNlICIoZGVmblxuIHNvdXJjZS1jb21wYXJlXG4gXCJUYWtlIGEgc2VxIG9mIHNvdXJjZSBmaWxlIG5hbWVzIGFuZCByZXR1cm4gYSBjb21wYXJhdG9yXFxuICAgdGhhdCBjYW4gYmUgdXNlZCB0byBjb25zdHJ1Y3QgYSBzb3J0ZWQgbWFwLiBGb3IgcmV2ZXJzZVxcbiAgIHNvdXJjZSBtYXBzLlwiXG4gW3NvdXJjZXNdXG4gKGxldFxuICBbc291cmNlcyAoaW5kZXhlZC1zb3VyY2VzIHNvdXJjZXMpXVxuICAoZm4gW2EgYl0gKGNvbXBhcmUgKHNvdXJjZXMgYSkgKHNvdXJjZXMgYikpKSkpXG4ifSB7OnN5bSBkZWNvZGUtcmV2ZXJzZSwgOm1ldGEgezpkb2MgIkNvbnZlcnQgYSB2MyBzb3VyY2UgbWFwIEpTT04gb2JqZWN0IGludG8gYSByZXZlcnNlIHNvdXJjZSBtYXBcbiAgbWFwcGluZyBvcmlnaW5hbCBDbG9qdXJlU2NyaXB0IHNvdXJjZSBsb2NhdGlvbnMgdG8gdGhlIGdlbmVyYXRlZFxuICBKYXZhU2NyaXB0LiIsIDphcmdsaXN0cyBbW3NvdXJjZS1tYXBdIFttYXBwaW5ncyBzb3VyY2UtbWFwXV19LCA6c291cmNlICIoZGVmblxuIGRlY29kZS1yZXZlcnNlXG4gXCJDb252ZXJ0IGEgdjMgc291cmNlIG1hcCBKU09OIG9iamVjdCBpbnRvIGEgcmV2ZXJzZSBzb3VyY2UgbWFwXFxuICBtYXBwaW5nIG9yaWdpbmFsIENsb2p1cmVTY3JpcHQgc291cmNlIGxvY2F0aW9ucyB0byB0aGUgZ2VuZXJhdGVkXFxuICBKYXZhU2NyaXB0LlwiXG4gKFtzb3VyY2UtbWFwXVxuICAoZGVjb2RlLXJldmVyc2UgKGdvYmovZ2V0IHNvdXJjZS1tYXAgXCJtYXBwaW5nc1wiKSBzb3VyY2UtbWFwKSlcbiAoW21hcHBpbmdzIHNvdXJjZS1tYXBdXG4gIChsZXRcbiAgIFtzb3VyY2VzXG4gICAgKGdvYmovZ2V0IHNvdXJjZS1tYXAgXCJzb3VyY2VzXCIpXG4gICAgcmVsc2VnLWluaXRcbiAgICBbMCAwIDAgMCAwXVxuICAgIGxpbmVzXG4gICAgKHNlcSAoc3RyaW5nL3NwbGl0IG1hcHBpbmdzICNcIjtcIikpXVxuICAgKGxvb3BcbiAgICBbZ2xpbmVcbiAgICAgMFxuICAgICBsaW5lc1xuICAgICBsaW5lc1xuICAgICByZWxzZWdcbiAgICAgcmVsc2VnLWluaXRcbiAgICAgcmVzdWx0XG4gICAgIChzb3J0ZWQtbWFwLWJ5IChzb3VyY2UtY29tcGFyZSBzb3VyY2VzKSldXG4gICAgKGlmXG4gICAgIGxpbmVzXG4gICAgIChsZXRcbiAgICAgIFtsaW5lXG4gICAgICAgKGZpcnN0IGxpbmVzKVxuICAgICAgIFtyZXN1bHQgcmVsc2VnXVxuICAgICAgIChpZlxuICAgICAgICAoc3RyaW5nL2JsYW5rPyBsaW5lKVxuICAgICAgICBbcmVzdWx0IHJlbHNlZ11cbiAgICAgICAgKGxldFxuICAgICAgICAgW3NlZ3MgKHNlcSAoc3RyaW5nL3NwbGl0IGxpbmUgI1wiLFwiKSldXG4gICAgICAgICAobG9vcFxuICAgICAgICAgIFtzZWdzIHNlZ3MgcmVsc2VnIHJlbHNlZyByZXN1bHQgcmVzdWx0XVxuICAgICAgICAgIChpZlxuICAgICAgICAgICBzZWdzXG4gICAgICAgICAgIChsZXRcbiAgICAgICAgICAgIFtzZWdcbiAgICAgICAgICAgICAoZmlyc3Qgc2VncylcbiAgICAgICAgICAgICBucmVsc2VnXG4gICAgICAgICAgICAgKHNlZy1jb21iaW5lIChiYXNlNjQtdmxxL2RlY29kZSBzZWcpIHJlbHNlZyldXG4gICAgICAgICAgICAocmVjdXJcbiAgICAgICAgICAgICAobmV4dCBzZWdzKVxuICAgICAgICAgICAgIG5yZWxzZWdcbiAgICAgICAgICAgICAodXBkYXRlLXJldmVyc2UtcmVzdWx0XG4gICAgICAgICAgICAgIHJlc3VsdFxuICAgICAgICAgICAgICAoc2VnLT5tYXAgbnJlbHNlZyBzb3VyY2UtbWFwKVxuICAgICAgICAgICAgICBnbGluZSkpKVxuICAgICAgICAgICBbcmVzdWx0IHJlbHNlZ10pKSkpXVxuICAgICAgKHJlY3VyIChpbmMgZ2xpbmUpIChuZXh0IGxpbmVzKSAoYXNzb2MgcmVsc2VnIDAgMCkgcmVzdWx0KSlcbiAgICAgcmVzdWx0KSkpKSlcbiJ9IHs6c3ltIGxpbmVzLT5zZWdzLCA6bWV0YSB7OmRvYyAiVGFrZSBhIG5lc3RlZCBzb3J0ZWQgbWFwIGVuY29kaW5nIGxpbmUgYW5kIGNvbHVtbiBpbmZvcm1hdGlvblxuICAgZm9yIGEgZmlsZSBhbmQgcmV0dXJuIGEgdmVjdG9yIG9mIHZlY3RvcnMgb2YgZW5jb2RlZCBzZWdtZW50cy5cbiAgIEVhY2ggdmVjdG9yIHJlcHJlc2VudHMgYSBsaW5lLCBhbmQgdGhlIGludGVybmFsIHZlY3RvcnMgYXJlIHNlZ21lbnRzXG4gICByZXByZXNlbnRpbmcgdGhlIGNvbnRlbnRzIG9mIHRoZSBsaW5lLiIsIDphcmdsaXN0cyAoW2xpbmVzXSl9LCA6c291cmNlICIoZGVmblxuIGxpbmVzLT5zZWdzXG4gXCJUYWtlIGEgbmVzdGVkIHNvcnRlZCBtYXAgZW5jb2RpbmcgbGluZSBhbmQgY29sdW1uIGluZm9ybWF0aW9uXFxuICAgZm9yIGEgZmlsZSBhbmQgcmV0dXJuIGEgdmVjdG9yIG9mIHZlY3RvcnMgb2YgZW5jb2RlZCBzZWdtZW50cy5cXG4gICBFYWNoIHZlY3RvciByZXByZXNlbnRzIGEgbGluZSwgYW5kIHRoZSBpbnRlcm5hbCB2ZWN0b3JzIGFyZSBzZWdtZW50c1xcbiAgIHJlcHJlc2VudGluZyB0aGUgY29udGVudHMgb2YgdGhlIGxpbmUuXCJcbiBbbGluZXNdXG4gKGxldFxuICBbcmVsc2VnIChhdG9tIFswIDAgMCAwIDBdKV1cbiAgKHJlZHVjZVxuICAgKGZuXG4gICAgW3NlZ3MgY29sc11cbiAgICAoc3dhcCFcbiAgICAgcmVsc2VnXG4gICAgIChmbiBbW18gc291cmNlIGxpbmUgY29sIG5hbWVdXSBbMCBzb3VyY2UgbGluZSBjb2wgbmFtZV0pKVxuICAgIChjb25qXG4gICAgIHNlZ3NcbiAgICAgKHJlZHVjZVxuICAgICAgKGZuXG4gICAgICAgW2NvbHMgW2djb2wgc2lkeCBsaW5lIGNvbCBuYW1lIDphcyBzZWddXVxuICAgICAgIChsZXRcbiAgICAgICAgW29mZnNldCAobWFwIC0gc2VnIEByZWxzZWcpXVxuICAgICAgICAoc3dhcCFcbiAgICAgICAgIHJlbHNlZ1xuICAgICAgICAgKGZuIFtbXyBfIF8gXyBsbmFtZV1dIFtnY29sIHNpZHggbGluZSBjb2wgKG9yIG5hbWUgbG5hbWUpXSkpXG4gICAgICAgIChjb25qIGNvbHMgKGJhc2U2NC12bHEvZW5jb2RlIG9mZnNldCkpKSlcbiAgICAgIFtdXG4gICAgICBjb2xzKSkpXG4gICBbXVxuICAgbGluZXMpKSlcbiJ9IHs6c3ltIG1lcmdlLXNvdXJjZS1tYXBzLCA6bWV0YSB7OmRvYyAiTWVyZ2UgYW4gaW50ZXJuYWwgc291cmNlIG1hcCByZXByZXNlbnRhdGlvbiBvZiBhIHNpbmdsZVxuICAgQ2xvanVyZVNjcmlwdCBmaWxlIG1hcHBpbmcgb3JpZ2luYWwgdG8gZ2VuZXJhdGVkIHdpdGggYVxuICAgc2Vjb25kIHNvdXJjZSBtYXAgbWFwcGluZyBvcmlnaW5hbCBKUyB0byBnZW5lcmF0ZWQgSlMuXG4gICBUaGUgaXMgdG8gc3VwcG9ydCBzb3VyY2UgbWFwcyB0aGF0IHdvcmsgdGhyb3VnaCBtdWx0aXBsZVxuICAgY29tcGlsYXRpb24gc3RlcHMgbGlrZSBHb29nbGUgQ2xvc3VyZSBvcHRpbWl6YXRpb24gcGFzc2VzLiIsIDphcmdsaXN0cyAoW2NsanMtbWFwIGpzLW1hcF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBtZXJnZS1zb3VyY2UtbWFwc1xuIFwiTWVyZ2UgYW4gaW50ZXJuYWwgc291cmNlIG1hcCByZXByZXNlbnRhdGlvbiBvZiBhIHNpbmdsZVxcbiAgIENsb2p1cmVTY3JpcHQgZmlsZSBtYXBwaW5nIG9yaWdpbmFsIHRvIGdlbmVyYXRlZCB3aXRoIGFcXG4gICBzZWNvbmQgc291cmNlIG1hcCBtYXBwaW5nIG9yaWdpbmFsIEpTIHRvIGdlbmVyYXRlZCBKUy5cXG4gICBUaGUgaXMgdG8gc3VwcG9ydCBzb3VyY2UgbWFwcyB0aGF0IHdvcmsgdGhyb3VnaCBtdWx0aXBsZVxcbiAgIGNvbXBpbGF0aW9uIHN0ZXBzIGxpa2UgR29vZ2xlIENsb3N1cmUgb3B0aW1pemF0aW9uIHBhc3Nlcy5cIlxuIFtjbGpzLW1hcCBqcy1tYXBdXG4gKGxvb3BcbiAgW2xpbmUtbWFwLXNlcSAoc2VxIGNsanMtbWFwKSBuZXctbGluZXMgKHNvcnRlZC1tYXApXVxuICAoaWZcbiAgIGxpbmUtbWFwLXNlcVxuICAgKGxldFxuICAgIFtbbGluZSBjb2wtbWFwXVxuICAgICAoZmlyc3QgbGluZS1tYXAtc2VxKVxuICAgICBuZXctY29sc1xuICAgICAobG9vcFxuICAgICAgW2NvbC1tYXAtc2VxIChzZXEgY29sLW1hcCkgbmV3LWNvbHMgKHNvcnRlZC1tYXApXVxuICAgICAgKGlmXG4gICAgICAgY29sLW1hcC1zZXFcbiAgICAgICAobGV0XG4gICAgICAgIFtbY29sIGluZm9zXSAoZmlyc3QgY29sLW1hcC1zZXEpXVxuICAgICAgICAocmVjdXJcbiAgICAgICAgIChuZXh0IGNvbC1tYXAtc2VxKVxuICAgICAgICAgKGFzc29jXG4gICAgICAgICAgbmV3LWNvbHNcbiAgICAgICAgICBjb2xcbiAgICAgICAgICAocmVkdWNlXG4gICAgICAgICAgIChmblxuICAgICAgICAgICAgW3YgezprZXlzIFtnbGluZSBnY29sXX1dXG4gICAgICAgICAgICAoaW50byB2IChnZXQtaW4ganMtbWFwIFtnbGluZSBnY29sXSkpKVxuICAgICAgICAgICBbXVxuICAgICAgICAgICBpbmZvcykpKSlcbiAgICAgICBuZXctY29scykpXVxuICAgIChyZWN1ciAobmV4dCBsaW5lLW1hcC1zZXEpIChhc3NvYyBuZXctbGluZXMgbGluZSBuZXctY29scykpKVxuICAgbmV3LWxpbmVzKSkpXG4ifSB7OnN5bSB1cGRhdGUtcmV2ZXJzZS1yZXN1bHQsIDptZXRhIHs6ZG9jICJIZWxwZXIgZm9yIGRlY29kZS1yZXZlcnNlLiBUYWtlIGEgcmV2ZXJzZSBzb3VyY2UgbWFwIGFuZFxuICB1cGRhdGUgaXQgd2l0aCBhIHNlZ21lbnQgbWFwLiIsIDphcmdsaXN0cyAoW3Jlc3VsdCBzZWdtYXAgZ2xpbmVdKX0sIDpzb3VyY2UgIihkZWZuXG4gdXBkYXRlLXJldmVyc2UtcmVzdWx0XG4gXCJIZWxwZXIgZm9yIGRlY29kZS1yZXZlcnNlLiBUYWtlIGEgcmV2ZXJzZSBzb3VyY2UgbWFwIGFuZFxcbiAgdXBkYXRlIGl0IHdpdGggYSBzZWdtZW50IG1hcC5cIlxuIFtyZXN1bHQgc2VnbWFwIGdsaW5lXVxuIChsZXRcbiAgW3s6a2V5cyBbZ2NvbCBzb3VyY2UgbGluZSBjb2wgbmFtZV19XG4gICBzZWdtYXBcbiAgIGRcbiAgIHs6Z2xpbmUgZ2xpbmUsIDpnY29sIGdjb2x9XG4gICBkXG4gICAoaWYgbmFtZSAoYXNzb2MgZCA6bmFtZSBuYW1lKSBkKV1cbiAgKHVwZGF0ZS1pblxuICAgcmVzdWx0XG4gICBbc291cmNlXVxuICAgKGZuaWxcbiAgICAoZm5cbiAgICAgW21dXG4gICAgICh1cGRhdGUtaW5cbiAgICAgIG1cbiAgICAgIFtsaW5lXVxuICAgICAgKGZuaWxcbiAgICAgICAoZm4gW21dICh1cGRhdGUtaW4gbSBbY29sXSAoZm5pbCAoZm4gW3ZdIChjb25qIHYgZCkpIFtdKSkpXG4gICAgICAgKHNvcnRlZC1tYXApKSkpXG4gICAgKHNvcnRlZC1tYXApKSkpKVxuIn0gezpzeW0gaW5kZXhlZC1zb3VyY2VzLCA6bWV0YSB7OmRvYyAiVGFrZSBhIHNlcSBvZiBzb3VyY2UgZmlsZSBuYW1lcyBhbmQgcmV0dXJuIGEgbWFwIGZyb21cbiAgIGZpbGUgbnVtYmVyIHRvIGludGVnZXIgaW5kZXguIEZvciByZXZlcnNlIHNvdXJjZSBtYXBzLiIsIDphcmdsaXN0cyAoW3NvdXJjZXNdKX0sIDpzb3VyY2UgIihkZWZuXG4gaW5kZXhlZC1zb3VyY2VzXG4gXCJUYWtlIGEgc2VxIG9mIHNvdXJjZSBmaWxlIG5hbWVzIGFuZCByZXR1cm4gYSBtYXAgZnJvbVxcbiAgIGZpbGUgbnVtYmVyIHRvIGludGVnZXIgaW5kZXguIEZvciByZXZlcnNlIHNvdXJjZSBtYXBzLlwiXG4gW3NvdXJjZXNdXG4gKC0+PlxuICBzb3VyY2VzXG4gIChtYXAtaW5kZXhlZCAoZm4gW2EgYl0gW2EgYl0pKVxuICAocmVkdWNlIChmbiBbbSBbaSB2XV0gKGFzc29jIG0gdiBpKSkge30pKSlcbiJ9IHs6c3ltIHNlZy1jb21iaW5lLCA6bWV0YSB7OmRvYyAiQ29tYmluZSBhIHNvdXJjZSBtYXAgc2VnbWVudCB2ZWN0b3IgYW5kIGEgcmVsYXRpdmVcbiAgIHNvdXJjZSBtYXAgc2VnbWVudCB2ZWN0b3IgYW5kIGNvbWJpbmUgdGhlbSB0byBnZXRcbiAgIGFuIGFic29sdXRlIHNlZ21lbnQgcG9zaXRpdG9uIGluZm9ybWF0aW9uIGFzIGEgdmVjdG9yLiIsIDphcmdsaXN0cyAoW3NlZyByZWxzZWddKX0sIDpzb3VyY2UgIihkZWZuXG4gc2VnLWNvbWJpbmVcbiBcIkNvbWJpbmUgYSBzb3VyY2UgbWFwIHNlZ21lbnQgdmVjdG9yIGFuZCBhIHJlbGF0aXZlXFxuICAgc291cmNlIG1hcCBzZWdtZW50IHZlY3RvciBhbmQgY29tYmluZSB0aGVtIHRvIGdldFxcbiAgIGFuIGFic29sdXRlIHNlZ21lbnQgcG9zaXRpdG9uIGluZm9ybWF0aW9uIGFzIGEgdmVjdG9yLlwiXG4gW3NlZyByZWxzZWddXG4gKGxldFxuICBbW2djb2wgc291cmNlIGxpbmUgY29sIG5hbWVdXG4gICBzZWdcbiAgIFtyZ2NvbCByc291cmNlIHJsaW5lIHJjb2wgcm5hbWVdXG4gICByZWxzZWdcbiAgIG5zZWdcbiAgIFsoKyBnY29sIHJnY29sKVxuICAgICgrIChvciBzb3VyY2UgMCkgcnNvdXJjZSlcbiAgICAoKyAob3IgbGluZSAwKSBybGluZSlcbiAgICAoKyAob3IgY29sIDApIHJjb2wpXG4gICAgKCsgKG9yIG5hbWUgMCkgcm5hbWUpXV1cbiAgKGlmIG5hbWUgKHdpdGgtbWV0YSBuc2VnIHs6bmFtZSAoKyBuYW1lIHJuYW1lKX0pIG5zZWcpKSlcbiJ9KSwgZHVuZ2Vvbi1jcmF3bGVyLm9kb3lsZSAoezpzeW0gaW5pdCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtzZXNzaW9uXSl9LCA6c291cmNlICIoZGVmblxuIGluaXRcbiBbc2Vzc2lvbl1cbiAobGV0XG4gIFsqaWQgKGF0b20gMCldXG4gIChyZWR1Y2VcbiAgIChmblxuICAgIFtzZXNzaW9uIHs6a2V5cyBbcGF0aCBpbnN0YW5jZXNdLCA6YXMgc3Bhd24tZGF0YX1dXG4gICAgKHJlZHVjZVxuICAgICAoZm5cbiAgICAgIFtzZXNzaW9uIGluc3RhbmNlXVxuICAgICAgKGxldFxuICAgICAgIFtpZCAoc3dhcCEgKmlkIGluYyldXG4gICAgICAgKC0+XG4gICAgICAgIHNlc3Npb25cbiAgICAgICAgKG8vaW5zZXJ0IGlkIChlLy0+ZW50aXR5IHNwYXduLWRhdGEgaW5zdGFuY2UpKVxuICAgICAgICAoby9pbnNlcnRcbiAgICAgICAgIGlkXG4gICAgICAgICA6ZHVuZ2Vvbi1jcmF3bGVyLm9kb3lsZS9kaXN0YW5jZS1mcm9tLXBsYXllclxuICAgICAgICAgKGluYyBtb3ZlL21heC1hZ2dyby1kaXN0YW5jZSkpKSkpXG4gICAgIHNlc3Npb25cbiAgICAgaW5zdGFuY2VzKSlcbiAgIHNlc3Npb25cbiAgIGUvc3Bhd24tZGF0YSkpKVxuIn0gezpzeW0gaW5pdGlhbC1zZXNzaW9uLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiBpbml0aWFsLXNlc3Npb24gKGluaXQgKHJlZHVjZSBvL2FkZC1ydWxlIChvLy0+c2Vzc2lvbikgcnVsZXMpKSlcbiJ9IHs6c3ltIHRpY2ssIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbc2Vzc2lvbiBjb3VudGVyXSl9LCA6c291cmNlICIoZGVmblxuIHRpY2tcbiBbc2Vzc2lvbiBjb3VudGVyXVxuICgtPlxuICBzZXNzaW9uXG4gIChvL2luc2VydFxuICAgOmR1bmdlb24tY3Jhd2xlci5vZG95bGUvdGltZVxuICAgOmR1bmdlb24tY3Jhd2xlci5vZG95bGUvdG90YWxcbiAgIGNvdW50ZXIpXG4gIG8vZmlyZS1ydWxlcykpXG4ifSB7OnN5bSBydW4sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbaXRlcmF0aW9uc10pfSwgOnNvdXJjZSAiKGRlZm5cbiBydW5cbiBbaXRlcmF0aW9uc11cbiAobG9vcFxuICBbc2Vzc2lvbiBpbml0aWFsLXNlc3Npb24gY291bnRlciAwXVxuICAoaWZcbiAgICg9IGNvdW50ZXIgaXRlcmF0aW9ucylcbiAgIHNlc3Npb25cbiAgIChyZWN1ciAodGljayBzZXNzaW9uIGNvdW50ZXIpIChpbmMgY291bnRlcikpKSkpXG4ifSksIG9ha2NsanMudG9vbHMucmVhZGVyLmltcGwuY29tbW9ucyAoezpzeW0gbWF0Y2gtbnVtYmVyLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3NdKX0sIDpzb3VyY2UgIihkZWZuXG4gbWF0Y2gtbnVtYmVyXG4gW3NdXG4gKGlmXG4gIChtYXRjaGVzPyBpbnQtcGF0dGVybiBzKVxuICAobWF0Y2gtaW50IHMpXG4gIChpZlxuICAgKG1hdGNoZXM/IGZsb2F0LXBhdHRlcm4gcylcbiAgIChtYXRjaC1mbG9hdCBzKVxuICAgKHdoZW4gKG1hdGNoZXM/IHJhdGlvLXBhdHRlcm4gcykgKG1hdGNoLXJhdGlvIHMpKSkpKVxuIn0gezpzeW0gc2tpcC1saW5lLCA6bWV0YSB7OmRvYyAiQWR2YW5jZXMgdGhlIHJlYWRlciB0byB0aGUgZW5kIG9mIGEgbGluZS4gUmV0dXJucyB0aGUgcmVhZGVyIiwgOmFyZ2xpc3RzIChbcmVhZGVyXSl9LCA6c291cmNlICIoZGVmblxuIHNraXAtbGluZVxuIFwiQWR2YW5jZXMgdGhlIHJlYWRlciB0byB0aGUgZW5kIG9mIGEgbGluZS4gUmV0dXJucyB0aGUgcmVhZGVyXCJcbiBbcmVhZGVyXVxuIChsb29wIFtdICh3aGVuLW5vdCAobmV3bGluZT8gKHJlYWQtY2hhciByZWFkZXIpKSAocmVjdXIpKSlcbiByZWFkZXIpXG4ifSB7OnN5bSBpbnQtcGF0dGVybiwgOm1ldGEge30sIDpzb3VyY2UgIihkZWZcbiBpbnQtcGF0dGVyblxuICNcIl4oWy0rXT8pKD86KDApfChbMS05XVswLTldKil8MFt4WF0oWzAtOUEtRmEtZl0rKXwwKFswLTddKyl8KFsxLTldWzAtOV0/KVtyUl0oWzAtOUEtWmEtel0rKXwwWzAtOV0rKShOKT8kXCIpXG4ifSB7OnN5bSByZWFkLWNvbW1lbnQsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbcmRyICYgX10pfSwgOnNvdXJjZSAiKGRlZm4gcmVhZC1jb21tZW50IFtyZHIgJiBfXSAoc2tpcC1saW5lIHJkcikpXG4ifSB7OnN5bSBwYXJzZS1zeW1ib2wsIDptZXRhIHs6ZG9jICJQYXJzZXMgYSBzdHJpbmcgaW50byBhIHZlY3RvciBvZiB0aGUgbmFtZXNwYWNlIGFuZCBzeW1ib2wiLCA6YXJnbGlzdHMgKFt0b2tlbl0pfSwgOnNvdXJjZSAiKGRlZm5cbiBwYXJzZS1zeW1ib2xcbiBcIlBhcnNlcyBhIHN0cmluZyBpbnRvIGEgdmVjdG9yIG9mIHRoZSBuYW1lc3BhY2UgYW5kIHN5bWJvbFwiXG4gW3Rva2VuXVxuICh3aGVuLW5vdFxuICAob3JcbiAgIChpZGVudGljYWw/IFwiXCIgdG9rZW4pXG4gICAodHJ1ZT8gKC50ZXN0ICNcIjokXCIgdG9rZW4pKVxuICAgKHRydWU/ICgudGVzdCAjXCJeOjpcIiB0b2tlbikpKVxuICAobGV0XG4gICBbbnMtaWR4XG4gICAgKC5pbmRleE9mIHRva2VuIFwiL1wiKVxuICAgIG5zXG4gICAgKHdoZW4gKHBvcz8gbnMtaWR4KSAoc3VicyB0b2tlbiAwIG5zLWlkeCkpXVxuICAgKGlmLW5vdFxuICAgIChuaWw/IG5zKVxuICAgIChsZXRcbiAgICAgW25zLWlkeCAoaW5jIG5zLWlkeCldXG4gICAgICh3aGVuLW5vdFxuICAgICAgKD09IG5zLWlkeCAoY291bnQgdG9rZW4pKVxuICAgICAgKGxldFxuICAgICAgIFtzeW0gKHN1YnMgdG9rZW4gbnMtaWR4KV1cbiAgICAgICAod2hlblxuICAgICAgICAoYW5kXG4gICAgICAgICAobm90IChudW1lcmljPyAobnRoIHN5bSAwKSkpXG4gICAgICAgICAobm90IChpZGVudGljYWw/IFwiXCIgc3ltKSlcbiAgICAgICAgIChmYWxzZT8gKC50ZXN0ICNcIjokXCIgbnMpKVxuICAgICAgICAgKG9yIChpZGVudGljYWw/IHN5bSBcIi9cIikgKD09IC0xICguaW5kZXhPZiBzeW0gXCIvXCIpKSkpXG4gICAgICAgIFtucyBzeW1dKSkpKVxuICAgICh3aGVuXG4gICAgIChvciAoaWRlbnRpY2FsPyB0b2tlbiBcIi9cIikgKD09IC0xICguaW5kZXhPZiB0b2tlbiBcIi9cIikpKVxuICAgICBbbmlsIHRva2VuXSkpKSkpXG4ifSB7OnN5bSBudW1iZXItbGl0ZXJhbD8sIDptZXRhIHs6ZG9jICJDaGVja3Mgd2hldGhlciB0aGUgcmVhZGVyIGlzIGF0IHRoZSBzdGFydCBvZiBhIG51bWJlciBsaXRlcmFsIiwgOmFyZ2xpc3RzIChbcmVhZGVyIGluaXRjaF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBudW1iZXItbGl0ZXJhbD9cbiBcIkNoZWNrcyB3aGV0aGVyIHRoZSByZWFkZXIgaXMgYXQgdGhlIHN0YXJ0IG9mIGEgbnVtYmVyIGxpdGVyYWxcIlxuIFtyZWFkZXIgaW5pdGNoXVxuIChvclxuICAobnVtZXJpYz8gaW5pdGNoKVxuICAoYW5kXG4gICAob3IgKGlkZW50aWNhbD8gXFwrIGluaXRjaCkgKGlkZW50aWNhbD8gXFwtIGluaXRjaCkpXG4gICAobnVtZXJpYz8gKHBlZWstY2hhciByZWFkZXIpKSkpKVxuIn0gezpzeW0gcmVhZC1wYXN0LCA6bWV0YSB7OmRvYyAiUmVhZCB1bnRpbCBmaXJzdCBjaGFyYWN0ZXIgdGhhdCBkb2Vzbid0IG1hdGNoIHByZWQsIHJldHVybmluZ1xuICAgY2hhci4iLCA6YXJnbGlzdHMgKFtwcmVkIHJkcl0pfSwgOnNvdXJjZSAiKGRlZm5cbiByZWFkLXBhc3RcbiBcIlJlYWQgdW50aWwgZmlyc3QgY2hhcmFjdGVyIHRoYXQgZG9lc24ndCBtYXRjaCBwcmVkLCByZXR1cm5pbmdcXG4gICBjaGFyLlwiXG4gW3ByZWQgcmRyXVxuIChsb29wIFtjaCAocmVhZC1jaGFyIHJkcildIChpZiAocHJlZCBjaCkgKHJlY3VyIChyZWFkLWNoYXIgcmRyKSkgY2gpKSlcbiJ9IHs6c3ltIGZsb2F0LXBhdHRlcm4sIDptZXRhIHt9LCA6c291cmNlICIoZGVmIGZsb2F0LXBhdHRlcm4gI1wiKFstK10/WzAtOV0rKFxcLlswLTldKik/KFtlRV1bLStdP1swLTldKyk/KShNKT9cIilcbiJ9IHs6c3ltIG1hdGNoZXM/LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3BhdHRlcm4gc10pfSwgOnNvdXJjZSAiKGRlZm5cbiBtYXRjaGVzP1xuIFtwYXR0ZXJuIHNdXG4gKGxldCBbW21hdGNoXSAocmUtZmluZCBwYXR0ZXJuIHMpXSAoaWRlbnRpY2FsPyBtYXRjaCBzKSkpXG4ifSB7OnN5bSB0aHJvd2luZy1yZWFkZXIsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbbXNnXSl9LCA6c291cmNlICIoZGVmbiB0aHJvd2luZy1yZWFkZXIgW21zZ10gKGZuIFtyZHIgJiBfXSAocmVhZGVyLWVycm9yIHJkciBtc2cpKSlcbiJ9IHs6c3ltIHJhdGlvLXBhdHRlcm4sIDptZXRhIHt9LCA6c291cmNlICIoZGVmIHJhdGlvLXBhdHRlcm4gI1wiKFstK10/WzAtOV0rKS8oWzAtOV0rKVwiKVxuIn0pLCBkeW5hZG9jLnRyYW5zZm9ybSAoezpzeW0gd2l0aC1mb2N1cy0+YmluZGluZywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt3aXRoLWZvY3VzXSl9LCA6c291cmNlICIoZGVmblxuIHdpdGgtZm9jdXMtPmJpbmRpbmdcbiBbd2l0aC1mb2N1c11cbiAobGV0XG4gIFtmb3JtXG4gICAob3IgKDpmb3JtIHdpdGgtZm9jdXMpICg6YmluZGluZyB3aXRoLWZvY3VzKSlcbiAgIFtiaW5kaW5nLXR5cGUgYmluZGluZy12YWxdXG4gICBmb3JtXVxuICAod2hlbiAoI3s6bG9jYWwtc3ltYm9sIDpzeW19IGJpbmRpbmctdHlwZSkgYmluZGluZy12YWwpKSlcbiJ9IHs6c3ltIGFkZC1mb2N1cywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtmb3JtIHdpdGgtZm9jdXMgYm9keV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBhZGQtZm9jdXNcbiBbZm9ybSB3aXRoLWZvY3VzIGJvZHldXG4gKGlmLWxldFxuICBbYmluZCAod2l0aC1mb2N1cy0+YmluZGluZyB3aXRoLWZvY3VzKV1cbiAgKHBvc3R3YWxrIChmbiBbeF0gKGlmICg9IHggYmluZCkgZm9ybSB4KSkgYm9keSlcbiAgZm9ybSkpXG4ifSB7OnN5bSBhZGQtY2FyZCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtmb3JtIHdpdGgtY2FyZCBpZF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBhZGQtY2FyZFxuIFtmb3JtIHdpdGgtY2FyZCBpZF1cbiAobGlzdFxuICAnbGV0XG4gIFt3aXRoLWNhcmRcbiAgICM/KDpjbGpzIChsaXN0IChxdW90ZSAuZ2V0RWxlbWVudEJ5SWQpIChxdW90ZSBqcy9kb2N1bWVudCkgaWQpIDpjbGogaWQpXVxuICBmb3JtKSlcbiJ9IHs6c3ltIGFkZC1jYWxsYmFjaywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtmb3JtIHdpdGgtY2FsbGJhY2tdKX0sIDpzb3VyY2UgIihkZWZuXG4gYWRkLWNhbGxiYWNrXG4gW2Zvcm0gd2l0aC1jYWxsYmFja11cbiAobGlzdFxuICAnbGV0XG4gIFsnZXMtY2hhbm5lbFxuICAgJyhkeW5hZG9jLmFsaWFzZXMvY2hhbilcbiAgIHdpdGgtY2FsbGJhY2tcbiAgICcoZm4gW2RhdGFdIChkeW5hZG9jLmFsaWFzZXMvcHV0ISBlcy1jaGFubmVsIGRhdGEpKV1cbiAgZm9ybVxuICAnKGR5bmFkb2MuYWxpYXNlcy88ISEgZXMtY2hhbm5lbCkpKVxuIn0gezpzeW0gdHJhbnNmb3JtLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyBbW2V4YW1wbGVdIFt7OmtleXMgW2JvZHkgaWQgd2l0aC1mb2N1cyB3aXRoLWNhcmQgd2l0aC1jYWxsYmFja119IGZvcm1dXX0sIDpzb3VyY2UgIihkZWZuXG4gdHJhbnNmb3JtXG4gKFtleGFtcGxlXVxuICAodHJhbnNmb3JtXG4gICBleGFtcGxlXG4gICAob3IgKHNvbWUtPiBleGFtcGxlIDp3aXRoLWZvY3VzIDppbml0LWV4cHIpICg6Ym9keSBleGFtcGxlKSkpKVxuIChbezprZXlzIFtib2R5IGlkIHdpdGgtZm9jdXMgd2l0aC1jYXJkIHdpdGgtY2FsbGJhY2tdfSBmb3JtXVxuICAoY29uZC0+XG4gICBmb3JtXG4gICAoc29tZT8gd2l0aC1mb2N1cylcbiAgIChhZGQtZm9jdXMgd2l0aC1mb2N1cyBib2R5KVxuICAgKHNvbWU/IHdpdGgtY2FyZClcbiAgIChhZGQtY2FyZCB3aXRoLWNhcmQgaWQpXG4gICAoc29tZT8gd2l0aC1jYWxsYmFjaylcbiAgIChhZGQtY2FsbGJhY2sgd2l0aC1jYWxsYmFjaykpKSlcbiJ9KSwgZGV2dG9vbHMuY29udGV4dCAoezpzeW0gZ2V0LXJvb3QsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbXSl9LCA6c291cmNlICIoZGVmbiBnZXQtcm9vdCBbXSBnb29nL2dsb2JhbClcbiJ9IHs6c3ltIGdldC1jb25zb2xlLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW10pfSwgOnNvdXJjZSAiKGRlZm4gZ2V0LWNvbnNvbGUgW10gKC4tY29uc29sZSAoZ2V0LXJvb3QpKSlcbiJ9KSwgb2RveWxlLnJ1bGVzICh7OnN5bSBjb250YWlucz8sIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRydWUgaWYgdGhlIHNlc3Npb24gY29udGFpbnMgYSBmYWN0IHdpdGggdGhlIGdpdmVuIGlkIGFuZCBhdHRyaWJ1dGUuIiwgOmFyZ2xpc3RzIChbc2Vzc2lvbiBpZCBhdHRyXSl9LCA6c291cmNlICIoZGVmblxuIGNvbnRhaW5zP1xuIFwiUmV0dXJucyB0cnVlIGlmIHRoZSBzZXNzaW9uIGNvbnRhaW5zIGEgZmFjdCB3aXRoIHRoZSBnaXZlbiBpZCBhbmQgYXR0cmlidXRlLlwiXG4gW3Nlc3Npb24gaWQgYXR0cl1cbiAoY2xvanVyZS5jb3JlL2NvbnRhaW5zPyAoOmlkLWF0dHItbm9kZXMgc2Vzc2lvbikgW2lkIGF0dHJdKSlcbiJ9IHs6c3ltIC0+cnVsZSwgOm1ldGEgezpkb2MgIlJldHVybnMgYSBuZXcgcnVsZS4gSW4gbW9zdCBjYXNlcywgeW91IHNob3VsZCB1c2UgdGhlIGBydWxlc2V0YCBtYWNybyB0byBkZWZpbmUgcnVsZXMsXG4gIGJ1dCBpZiB5b3Ugd2FudCB0byBkZWZpbmUgcnVsZXMgZHluYW1pY2FsbHksIHlvdSBjYW4gdXNlIHRoaXMgZnVuY3Rpb24gaW5zdGVhZC5cbiAgU2VlIHRoZSBSRUFETUUgc2VjdGlvbiBcIkRlZmluaW5nIHJ1bGVzIGR5bmFtaWNhbGx5XCIuXG4gIFRoZSBvbmUtYXJndW1lbnQgYXJpdHkgaXMgb25seSBtZWFudCBmb3IgaW50ZXJuYWwgdXNlLiIsIDphcmdsaXN0cyBbW3J1bGUtbmFtZSBydWxlXSBbW3J1bGUtbmFtZSBwYXJzZWQtcnVsZV1dXX0sIDpzb3VyY2UgIihkZWZuXG4gLT5ydWxlXG4gXCJSZXR1cm5zIGEgbmV3IHJ1bGUuIEluIG1vc3QgY2FzZXMsIHlvdSBzaG91bGQgdXNlIHRoZSBgcnVsZXNldGAgbWFjcm8gdG8gZGVmaW5lIHJ1bGVzLFxcbiAgYnV0IGlmIHlvdSB3YW50IHRvIGRlZmluZSBydWxlcyBkeW5hbWljYWxseSwgeW91IGNhbiB1c2UgdGhpcyBmdW5jdGlvbiBpbnN0ZWFkLlxcbiAgU2VlIHRoZSBSRUFETUUgc2VjdGlvbiBcXFwiRGVmaW5pbmcgcnVsZXMgZHluYW1pY2FsbHlcXFwiLlxcbiAgVGhlIG9uZS1hcmd1bWVudCBhcml0eSBpcyBvbmx5IG1lYW50IGZvciBpbnRlcm5hbCB1c2UuXCJcbiAoW3J1bGUtbmFtZSBydWxlXVxuICAod2hlblxuICAgKHZlY3Rvcj8gcnVsZSlcbiAgICh0aHJvd1xuICAgIChleC1pbmZvXG4gICAgIFwiVGhlIHN5bnRheCBmb3IgZHluYW1pYyBydWxlcyBjaGFuZ2VkISBJdCBub3cgc2hvdWxkIGJlIGEgbWFwLCBhbmQgdGhlIGZucyB0YWtlIGFuIGV4dHJhIGBzZXNzaW9uYCBhcmcuIFNlZSB0aGUgUkVBRE1FIGZvciBtb3JlLlwiXG4gICAgIHt9KSkpXG4gIChsZXRcbiAgIFtwYXJzZWQtcnVsZVxuICAgIChwYXJzZSA6b2RveWxlLnJ1bGVzL2R5bmFtaWMtcnVsZSBydWxlKVxuICAgIHBhcnNlZC1ydWxlXG4gICAgKGNvbmQtPlxuICAgICB7OndoYXQtYmxvY2sgezpib2R5ICg6d2hhdCBwYXJzZWQtcnVsZSl9fVxuICAgICAoOndoZW4gcGFyc2VkLXJ1bGUpXG4gICAgIChhc3NvYy1pbiBbOndoZW4tYmxvY2sgOmJvZHldICg6d2hlbiBwYXJzZWQtcnVsZSkpXG4gICAgICg6dGhlbiBwYXJzZWQtcnVsZSlcbiAgICAgKGFzc29jLWluIFs6dGhlbi1ibG9jayA6Ym9keV0gKDp0aGVuIHBhcnNlZC1ydWxlKSlcbiAgICAgKDp0aGVuLWZpbmFsbHkgcGFyc2VkLXJ1bGUpXG4gICAgIChhc3NvYy1pblxuICAgICAgWzp0aGVuLWZpbmFsbHktYmxvY2sgOmJvZHldXG4gICAgICAoOnRoZW4tZmluYWxseSBwYXJzZWQtcnVsZSkpKVxuICAgIHs6a2V5c1xuICAgICBbcnVsZS1uYW1lIGNvbmRpdGlvbnMgd2hlbi1ib2R5IHRoZW4tYm9keSB0aGVuLWZpbmFsbHktYm9keV19XG4gICAgKC0+cnVsZSBbcnVsZS1uYW1lIHBhcnNlZC1ydWxlXSldXG4gICAoLT5SdWxlXG4gICAgcnVsZS1uYW1lXG4gICAgKG1hcHYgbWFwLT5Db25kaXRpb24gY29uZGl0aW9ucylcbiAgICBuaWxcbiAgICB3aGVuLWJvZHlcbiAgICB0aGVuLWJvZHlcbiAgICB0aGVuLWZpbmFsbHktYm9keSkpKVxuIChbW3J1bGUtbmFtZSBwYXJzZWQtcnVsZV1dXG4gIChsZXRcbiAgIFt7OmtleXMgW3doYXQtYmxvY2sgd2hlbi1ibG9jayB0aGVuLWJsb2NrIHRoZW4tZmluYWxseS1ibG9ja119XG4gICAgcGFyc2VkLXJ1bGVcbiAgICBjb25kaXRpb25zXG4gICAgKG1hcHYgLT5jb25kaXRpb24gKDpib2R5IHdoYXQtYmxvY2spKVxuICAgIHdoZW4tYm9keVxuICAgICg6Ym9keSB3aGVuLWJsb2NrKVxuICAgIHRoZW4tYm9keVxuICAgICg6Ym9keSB0aGVuLWJsb2NrKVxuICAgIHRoZW4tZmluYWxseS1ib2R5XG4gICAgKDpib2R5IHRoZW4tZmluYWxseS1ibG9jaylcbiAgICBzeW1zXG4gICAgKC0+PlxuICAgICBjb25kaXRpb25zXG4gICAgIChtYXBjYXQgOmJpbmRpbmdzKVxuICAgICAobWFwIDpzeW0pXG4gICAgIChtYXAgbGFzdClcbiAgICAgKGZpbHRlciBzaW1wbGUtc3ltYm9sPylcbiAgICAgc2V0XG4gICAgIHZlYyldXG4gICB7OnJ1bGUtbmFtZSBydWxlLW5hbWUsXG4gICAgOmZuLW5hbWVcbiAgICAoLT5cbiAgICAgKHN0ciAobmFtZXNwYWNlIHJ1bGUtbmFtZSkgXCItXCIgKG5hbWUgcnVsZS1uYW1lKSlcbiAgICAgKHN0ci9yZXBsYWNlIFwiLlwiIFwiLVwiKVxuICAgICBzeW1ib2wpLFxuICAgIDpjb25kaXRpb25zIGNvbmRpdGlvbnMsXG4gICAgOmFyZyB7OmtleXMgc3ltcywgOmFzICdtYXRjaH0sXG4gICAgOndoZW4tYm9keVxuICAgIChjb25kXG4gICAgIChmbj8gd2hlbi1ib2R5KVxuICAgICB3aGVuLWJvZHlcbiAgICAgKD4gKGNvdW50IHdoZW4tYm9keSkgMSlcbiAgICAgKGNvbnMgJ2FuZCB3aGVuLWJvZHkpXG4gICAgIDplbHNlXG4gICAgIChmaXJzdCB3aGVuLWJvZHkpKSxcbiAgICA6dGhlbi1ib2R5IHRoZW4tYm9keSxcbiAgICA6dGhlbi1maW5hbGx5LWJvZHkgdGhlbi1maW5hbGx5LWJvZHl9KSkpXG4ifSB7OnN5bSBmaXJlLXJ1bGVzLCA6bWV0YSB7OmRvYyAiRmlyZXMgOnRoZW4gYW5kIDp0aGVuLWZpbmFsbHkgYmxvY2tzIGZvciBhbnkgcnVsZXMgd2hvc2UgbWF0Y2hlcyBoYXZlIGJlZW4gdXBkYXRlZC5cbiAgVGhlIG9wdHMgbWFwIG1heSBjb250YWluOlxuICBcbiAgOnJlY3Vyc2lvbi1saW1pdCAgLSAgVGhyb3dzIGFuIGVycm9yIGlmIHJ1bGVzIHJlY3Vyc2l2ZWx5IHRyaWdnZXIgdGhpcyBtYW55IHRpbWVzLlxuICAgICAgICAgICAgICAgICAgICAgICBUaGUgZGVmYXVsdCBpcyAxNi4gUGFzcyBuaWwgdG8gZGlzYWJsZSB0aGUgbGltaXQgZW50aXJlbHkuIiwgOmFyZ2xpc3RzIFtbc2Vzc2lvbl0gW3Nlc3Npb24gb3B0c11dfSwgOnNvdXJjZSAiKGRlZm5cbiBmaXJlLXJ1bGVzXG4gXCJGaXJlcyA6dGhlbiBhbmQgOnRoZW4tZmluYWxseSBibG9ja3MgZm9yIGFueSBydWxlcyB3aG9zZSBtYXRjaGVzIGhhdmUgYmVlbiB1cGRhdGVkLlxcbiAgVGhlIG9wdHMgbWFwIG1heSBjb250YWluOlxcbiAgXFxuICA6cmVjdXJzaW9uLWxpbWl0ICAtICBUaHJvd3MgYW4gZXJyb3IgaWYgcnVsZXMgcmVjdXJzaXZlbHkgdHJpZ2dlciB0aGlzIG1hbnkgdGltZXMuXFxuICAgICAgICAgICAgICAgICAgICAgICBUaGUgZGVmYXVsdCBpcyAxNi4gUGFzcyBuaWwgdG8gZGlzYWJsZSB0aGUgbGltaXQgZW50aXJlbHkuXCJcbiAoW3Nlc3Npb25dIChmaXJlLXJ1bGVzIHNlc3Npb24ge30pKVxuIChbc2Vzc2lvbiBvcHRzXVxuICAobGV0XG4gICBbdGhlbi1xdWV1ZVxuICAgICg6dGhlbi1xdWV1ZSBzZXNzaW9uKVxuICAgIHRoZW4tZmluYWxseS1xdWV1ZVxuICAgICg6dGhlbi1maW5hbGx5LXF1ZXVlIHNlc3Npb24pXVxuICAgKGlmXG4gICAgKGFuZFxuICAgICAob3IgKHNlcSB0aGVuLXF1ZXVlKSAoc2VxIHRoZW4tZmluYWxseS1xdWV1ZSkpXG4gICAgIChuaWw/ICpzZXNzaW9uKikpXG4gICAgKGxldFxuICAgICBbKm5vZGUtaWQtPnRyaWdnZXJlZC1ub2RlLWlkc1xuICAgICAgKHZvbGF0aWxlISB7fSlcbiAgICAgIGV4ZWN1dGUtZm5cbiAgICAgIChmblxuICAgICAgIFtmIG5vZGUtaWRdXG4gICAgICAgKGJpbmRpbmdcbiAgICAgICAgWyp0cmlnZ2VyZWQtbm9kZS1pZHMqICh2b2xhdGlsZSEgI3t9KV1cbiAgICAgICAgKGYpXG4gICAgICAgICh2c3dhcCFcbiAgICAgICAgICpub2RlLWlkLT50cmlnZ2VyZWQtbm9kZS1pZHNcbiAgICAgICAgIHVwZGF0ZVxuICAgICAgICAgbm9kZS1pZFxuICAgICAgICAgKGZuKlxuICAgICAgICAgIFtwMV9fNDMyMTcjXVxuICAgICAgICAgIChpbnRvIChvciBwMV9fNDMyMTcjICN7fSkgQCp0cmlnZ2VyZWQtbm9kZS1pZHMqKSkpKSlcbiAgICAgIHNlc3Npb25cbiAgICAgIChhc3NvYyBzZXNzaW9uIDp0aGVuLXF1ZXVlICN7fSA6dGhlbi1maW5hbGx5LXF1ZXVlICN7fSlcbiAgICAgIHNlc3Npb25cbiAgICAgIChyZWR1Y2VcbiAgICAgICAoZm5cbiAgICAgICAgW3Nlc3Npb24gbm9kZS1pZF1cbiAgICAgICAgKHVwZGF0ZS1pbiBzZXNzaW9uIFs6YmV0YS1ub2RlcyBub2RlLWlkXSBhc3NvYyA6dHJpZ2dlciBmYWxzZSkpXG4gICAgICAgc2Vzc2lvblxuICAgICAgIChpbnRvIHRoZW4tZmluYWxseS1xdWV1ZSAobWFwIGZpcnN0IHRoZW4tcXVldWUpKSlcbiAgICAgIGJldGEtbm9kZXNcbiAgICAgICg6YmV0YS1ub2RlcyBzZXNzaW9uKVxuICAgICAgc2Vzc2lvblxuICAgICAgKHJlZHVjZVxuICAgICAgIChmblxuICAgICAgICBbc2Vzc2lvbiBbbm9kZS1pZCBpZCthdHRyc11dXG4gICAgICAgIChsZXRcbiAgICAgICAgIFt7OmtleXMgW21hdGNoZXMgdGhlbi1mbl19IChnZXQgYmV0YS1ub2RlcyBub2RlLWlkKV1cbiAgICAgICAgIChvclxuICAgICAgICAgICh3aGVuLWxldFxuICAgICAgICAgICBbezprZXlzIFt2YXJzIGVuYWJsZWRdfSAoZ2V0IG1hdGNoZXMgaWQrYXR0cnMpXVxuICAgICAgICAgICAod2hlblxuICAgICAgICAgICAgZW5hYmxlZFxuICAgICAgICAgICAgKGJpbmRpbmdcbiAgICAgICAgICAgICBbKnNlc3Npb24qXG4gICAgICAgICAgICAgIHNlc3Npb25cbiAgICAgICAgICAgICAgKm11dGFibGUtc2Vzc2lvbipcbiAgICAgICAgICAgICAgKHZvbGF0aWxlISBzZXNzaW9uKVxuICAgICAgICAgICAgICAqbWF0Y2gqXG4gICAgICAgICAgICAgIHZhcnNdXG4gICAgICAgICAgICAgKGV4ZWN1dGUtZm4gKGZuKiBbXSAodGhlbi1mbiBzZXNzaW9uIHZhcnMpKSBub2RlLWlkKVxuICAgICAgICAgICAgIEAqbXV0YWJsZS1zZXNzaW9uKikpKVxuICAgICAgICAgIHNlc3Npb24pKSlcbiAgICAgICBzZXNzaW9uXG4gICAgICAgdGhlbi1xdWV1ZSlcbiAgICAgIHNlc3Npb25cbiAgICAgIChyZWR1Y2VcbiAgICAgICAoZm5cbiAgICAgICAgW3Nlc3Npb24gbm9kZS1pZF1cbiAgICAgICAgKGxldFxuICAgICAgICAgW3s6a2V5cyBbdGhlbi1maW5hbGx5LWZuXX0gKGdldCBiZXRhLW5vZGVzIG5vZGUtaWQpXVxuICAgICAgICAgKGJpbmRpbmdcbiAgICAgICAgICBbKnNlc3Npb24qIHNlc3Npb24gKm11dGFibGUtc2Vzc2lvbiogKHZvbGF0aWxlISBzZXNzaW9uKV1cbiAgICAgICAgICAoZXhlY3V0ZS1mbiAoZm4qIFtdICh0aGVuLWZpbmFsbHktZm4gc2Vzc2lvbikpIG5vZGUtaWQpXG4gICAgICAgICAgQCptdXRhYmxlLXNlc3Npb24qKSkpXG4gICAgICAgc2Vzc2lvblxuICAgICAgIHRoZW4tZmluYWxseS1xdWV1ZSldXG4gICAgIChpZi1sZXRcbiAgICAgIFtsaW1pdCAoZ2V0IG9wdHMgOnJlY3Vyc2lvbi1saW1pdCAxNildXG4gICAgICAoaWZcbiAgICAgICAoPSAwICpyZWN1ci1jb3VudGRvd24qKVxuICAgICAgICh0aHJvdy1yZWN1cnNpb24tbGltaXQgc2Vzc2lvbiBsaW1pdCAqZXhlY3V0ZWQtbm9kZXMqKVxuICAgICAgIChiaW5kaW5nXG4gICAgICAgIFsqcmVjdXItY291bnRkb3duKlxuICAgICAgICAgKGlmIChuaWw/ICpyZWN1ci1jb3VudGRvd24qKSBsaW1pdCAoZGVjICpyZWN1ci1jb3VudGRvd24qKSlcbiAgICAgICAgICpleGVjdXRlZC1ub2RlcypcbiAgICAgICAgIChjb25qIChvciAqZXhlY3V0ZWQtbm9kZXMqIFtdKSBAKm5vZGUtaWQtPnRyaWdnZXJlZC1ub2RlLWlkcyldXG4gICAgICAgIChmaXJlLXJ1bGVzIHNlc3Npb24gb3B0cykpKVxuICAgICAgKGZpcmUtcnVsZXMgc2Vzc2lvbiBvcHRzKSkpXG4gICAgc2Vzc2lvbikpKSlcbiJ9IHs6c3ltIGluc2VydCwgOm1ldGEgezpkb2MgIkluc2VydHMgYSBmYWN0IGludG8gdGhlIHNlc3Npb24uIENhbiBvcHRpb25hbGx5IGluc2VydCBtdWx0aXBsZSBmYWN0cyB3aXRoIHRoZSBzYW1lIGlkLlxuICBcbiAgTm90ZTogaWYgdGhlIGdpdmVuIGZhY3QgZG9lc24ndCBtYXRjaCBhdCBsZWFzdCBvbmUgcnVsZSwgaXQgd2lsbCBiZSBkaXNjYXJkZWQuIiwgOmFyZ2xpc3RzIFtbc2Vzc2lvbiBbaWQgYXR0ciB2YWx1ZV1dIFtzZXNzaW9uIGlkIGF0dHItPnZhbHVlXSBbc2Vzc2lvbiBpZCBhdHRyIHZhbHVlXV19LCA6c291cmNlICIoZGVmblxuIGluc2VydFxuIFwiSW5zZXJ0cyBhIGZhY3QgaW50byB0aGUgc2Vzc2lvbi4gQ2FuIG9wdGlvbmFsbHkgaW5zZXJ0IG11bHRpcGxlIGZhY3RzIHdpdGggdGhlIHNhbWUgaWQuXFxuICBcXG4gIE5vdGU6IGlmIHRoZSBnaXZlbiBmYWN0IGRvZXNuJ3QgbWF0Y2ggYXQgbGVhc3Qgb25lIHJ1bGUsIGl0IHdpbGwgYmUgZGlzY2FyZGVkLlwiXG4gKFtzZXNzaW9uIFtpZCBhdHRyIHZhbHVlXV0gKGluc2VydCBzZXNzaW9uIGlkIGF0dHIgdmFsdWUpKVxuIChbc2Vzc2lvbiBpZCBhdHRyLT52YWx1ZV1cbiAgKHJlZHVjZS1rdlxuICAgKGZuIFtzZXNzaW9uIGF0dHIgdmFsdWVdIChpbnNlcnQgc2Vzc2lvbiBpZCBhdHRyIHZhbHVlKSlcbiAgIHNlc3Npb25cbiAgIGF0dHItPnZhbHVlKSlcbiAoW3Nlc3Npb24gaWQgYXR0ciB2YWx1ZV1cbiAgKC0+PlxuICAgKGdldC1hbHBoYS1ub2Rlcy1mb3ItZmFjdFxuICAgIHNlc3Npb25cbiAgICAoOmFscGhhLW5vZGUgc2Vzc2lvbilcbiAgICBpZFxuICAgIGF0dHJcbiAgICB2YWx1ZVxuICAgIHRydWUpXG4gICAodXBzZXJ0LWZhY3Qgc2Vzc2lvbiBpZCBhdHRyIHZhbHVlKSkpKVxuIiwgOmV4YW1wbGVzIFt7OmRvYyAiSW5zZXJ0IGZhY3RzIHNlcGFyYXRlbHkiLCA6d2l0aC1mb2N1cyB7OmZvcm0gWzpsb2NhbC1zeW1ib2wgZm9jdXNdLCA6aW5pdC1leHByICgtPiBzZXNzaW9uIChpbnNlcnQgMSA6dG9kby90ZXh0ICJXYXNoIHRoZSBjYXIiKSAoaW5zZXJ0IDEgOnRvZG8vZG9uZSBmYWxzZSkgKGluc2VydCAyIDp0b2RvL3RleHQgIkJ1eSBncm9jZXJpZXMiKSAoaW5zZXJ0IDIgOnRvZG8vZG9uZSBmYWxzZSkgcXVlcnktYWxsKX0sIDpib2R5IChsZXQgW3Nlc3Npb24gb2RveWxlLmV4YW1wbGVzL2VtcHR5LXNlc3Npb25dIGZvY3VzKSwgOmJvZHktc3RyICIoLT5cbiBzZXNzaW9uXG4gKGluc2VydCAxIDp0b2RvL3RleHQgXCJXYXNoIHRoZSBjYXJcIilcbiAoaW5zZXJ0IDEgOnRvZG8vZG9uZSBmYWxzZSlcbiAoaW5zZXJ0IDIgOnRvZG8vdGV4dCBcIkJ1eSBncm9jZXJpZXNcIilcbiAoaW5zZXJ0IDIgOnRvZG8vZG9uZSBmYWxzZSlcbiBxdWVyeS1hbGwpXG4iLCA6aWQgIm9kb3lsZS5ydWxlcy9pbnNlcnQvMCJ9IHs6ZG9jICJJbnNlcnQgZmFjdHMgYmF0Y2hlZCBieSBpZCIsIDp3aXRoLWZvY3VzIHs6Zm9ybSBbOmxvY2FsLXN5bWJvbCBmb2N1c10sIDppbml0LWV4cHIgKC0+IHNlc3Npb24gKGluc2VydCAxIHs6dG9kby90ZXh0ICJXYXNoIHRoZSBjYXIiLCA6dG9kby9kb25lIGZhbHNlfSkgKGluc2VydCAyIHs6dG9kby90ZXh0ICJCdXkgZ3JvY2VyaWVzIiwgOnRvZG8vZG9uZSBmYWxzZX0pIHF1ZXJ5LWFsbCl9LCA6Ym9keSAobGV0IFtzZXNzaW9uIG9kb3lsZS5leGFtcGxlcy9lbXB0eS1zZXNzaW9uXSBmb2N1cyksIDpib2R5LXN0ciAiKC0+XG4gc2Vzc2lvblxuIChpbnNlcnQgMSB7OnRvZG8vdGV4dCBcIldhc2ggdGhlIGNhclwiLCA6dG9kby9kb25lIGZhbHNlfSlcbiAoaW5zZXJ0IDIgezp0b2RvL3RleHQgXCJCdXkgZ3JvY2VyaWVzXCIsIDp0b2RvL2RvbmUgZmFsc2V9KVxuIHF1ZXJ5LWFsbClcbiIsIDppZCAib2RveWxlLnJ1bGVzL2luc2VydC8xIn1dfSB7OnN5bSAqbWF0Y2gqLCA6bWV0YSB7OmRvYyAiUHJvdmlkZXMgYSBtYXAgb2YgYWxsIHRoZSBtYXRjaGVkIHZhbHVlcyBmcm9tIGluc2lkZSBhIDp0aGVuIGJsb2NrLlxuVGhpcyBpcyBubyBsb25nZXIgbmVjZXNzYXJ5LCBiZWNhdXNlIGl0IGlzIGFjY2Vzc2libGUgdmlhIGBtYXRjaGAgZGlyZWN0bHkuIn0sIDpzb3VyY2UgIihkZWYgKm1hdGNoKiBuaWwpXG4ifSB7OnN5bSBhZGQtcnVsZSwgOm1ldGEgezpkb2MgIkFkZHMgYSBydWxlIHRvIHRoZSBnaXZlbiBzZXNzaW9uLiIsIDphcmdsaXN0cyAoW3Nlc3Npb24gcnVsZV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBhZGQtcnVsZVxuIFwiQWRkcyBhIHJ1bGUgdG8gdGhlIGdpdmVuIHNlc3Npb24uXCJcbiBbc2Vzc2lvbiBydWxlXVxuICh3aGVuXG4gIChnZXQtaW4gc2Vzc2lvbiBbOnJ1bGUtbmFtZS0+bm9kZS1pZCAoOm5hbWUgcnVsZSldKVxuICAodGhyb3cgKGV4LWluZm8gKHN0ciAoOm5hbWUgcnVsZSkgXCIgYWxyZWFkeSBleGlzdHMgaW4gc2Vzc2lvblwiKSB7fSkpKVxuIChsZXRcbiAgW2NvbmRpdGlvbnNcbiAgICg6Y29uZGl0aW9ucyBydWxlKVxuICAgc2Vzc2lvblxuICAgKHJlZHVjZSBhZGQtY29uZGl0aW9uIHNlc3Npb24gY29uZGl0aW9ucylcbiAgIGxlYWYtbm9kZS1pZFxuICAgKC0+IHNlc3Npb24gOm1lbS1ub2RlLWlkcyBsYXN0KVxuICAgYmluZGluZ3NcbiAgICg6YmluZGluZ3Mgc2Vzc2lvbilcbiAgIHNlc3Npb25cbiAgIChyZWR1Y2VcbiAgICAoZm5cbiAgICAgW3Nlc3Npb24gbWVtLW5vZGUtaWRdXG4gICAgICh1cGRhdGUtaW5cbiAgICAgIHNlc3Npb25cbiAgICAgIFs6YmV0YS1ub2RlcyBtZW0tbm9kZS1pZF1cbiAgICAgIChmblxuICAgICAgIFttZW0tbm9kZV1cbiAgICAgICAoYXNzb2NcbiAgICAgICAgbWVtLW5vZGVcbiAgICAgICAgOmxlYWYtbm9kZS1pZFxuICAgICAgICBsZWFmLW5vZGUtaWRcbiAgICAgICAgOndoYXQtZm5cbiAgICAgICAgKDp3aGF0LWZuIHJ1bGUpKSkpKVxuICAgIHNlc3Npb25cbiAgICAoOm1lbS1ub2RlLWlkcyBzZXNzaW9uKSlcbiAgIHNlc3Npb25cbiAgIChyZWR1Y2VcbiAgICAoZm5cbiAgICAgW3Nlc3Npb24gam9pbi1ub2RlLWlkXVxuICAgICAodXBkYXRlLWluXG4gICAgICBzZXNzaW9uXG4gICAgICBbOmJldGEtbm9kZXMgam9pbi1ub2RlLWlkXVxuICAgICAgKGZuXG4gICAgICAgW2pvaW4tbm9kZV1cbiAgICAgICAobGV0XG4gICAgICAgIFtqb2luZWQta2V5XG4gICAgICAgICAoc29tZVxuICAgICAgICAgIChmbiBbezprZXlzIFtmaWVsZCBrZXldfV0gKHdoZW4gKD0gOnZhbHVlIGZpZWxkKSBrZXkpKVxuICAgICAgICAgICgtPiBqb2luLW5vZGUgOmNvbmRpdGlvbiA6YmluZGluZ3MpKVxuICAgICAgICAgZGlzYWJsZS1mYXN0LXVwZGF0ZXNcbiAgICAgICAgIChjbG9qdXJlLmNvcmUvY29udGFpbnM/ICg6am9pbnMgYmluZGluZ3MpIGpvaW5lZC1rZXkpXVxuICAgICAgICAod2hlblxuICAgICAgICAgKGFuZFxuICAgICAgICAgIGRpc2FibGUtZmFzdC11cGRhdGVzXG4gICAgICAgICAgKC0+XG4gICAgICAgICAgIChnZXQtaW4gc2Vzc2lvbiBbOmJldGEtbm9kZXMgKDpjaGlsZC1pZCBqb2luLW5vZGUpXSlcbiAgICAgICAgICAgOmNvbmRpdGlvblxuICAgICAgICAgICA6b3B0c1xuICAgICAgICAgICA6dGhlblxuICAgICAgICAgICBmaXJzdFxuICAgICAgICAgICAoPSA6ZnVuYykpKVxuICAgICAgICAgKHRocm93XG4gICAgICAgICAgKGV4LWluZm9cbiAgICAgICAgICAgKHN0clxuICAgICAgICAgICAgXCJJbiBcIlxuICAgICAgICAgICAgKDpuYW1lIHJ1bGUpXG4gICAgICAgICAgICBcIiB5b3UgYXJlIG1ha2luZyBhIGpvaW4gd2l0aCB0aGUgc3ltYm9sIGBcIlxuICAgICAgICAgICAgKHN5bWJvbCBqb2luZWQta2V5KVxuICAgICAgICAgICAgXCJgLCBcIlxuICAgICAgICAgICAgXCJhbmQgcGFzc2luZyBhIGN1c3RvbSBmdW5jdGlvbiBpbiB0aGUgezp0aGVuIC4uLn0gb3B0aW9uLiBUaGlzIGlzIG5vdCBhbGxvd2VkIGR1ZSB0byBcIlxuICAgICAgICAgICAgXCJob3cgdGhlIGltcGxlbWVudGF0aW9uIHdvcmtzLiBMdWNraWx5LCBpdCdzIGVhc3kgdG8gZml4ISBHZXQgcmlkIG9mIHRoaXMgam9pbiBpbiB5b3VyIDp3aGF0IFwiXG4gICAgICAgICAgICBcImJsb2NrIGJ5IGdpdmluZyB0aGUgc3ltYm9sIGEgZGlmZmVyZW50IG5hbWUsIHN1Y2ggYXMgYFwiXG4gICAgICAgICAgICAoc3ltYm9sIChzdHIgKG5hbWUgam9pbmVkLWtleSkgMikpXG4gICAgICAgICAgICBcImAsIFwiXG4gICAgICAgICAgICBcImFuZCB0aGVuIGVuZm9yY2UgdGhlIGpvaW4gaW4geW91ciA6d2hlbiBibG9jayBsaWtlIHRoaXM6IFwiXG4gICAgICAgICAgICAobGlzdFxuICAgICAgICAgICAgICc9XG4gICAgICAgICAgICAgKHN5bWJvbCBqb2luZWQta2V5KVxuICAgICAgICAgICAgIChzeW1ib2wgKHN0ciAobmFtZSBqb2luZWQta2V5KSAyKSkpKVxuICAgICAgICAgICB7fSkpKVxuICAgICAgICAoYXNzb2NcbiAgICAgICAgIGpvaW4tbm9kZVxuICAgICAgICAgOmlkLWtleVxuICAgICAgICAgKHNvbWVcbiAgICAgICAgICAoZm5cbiAgICAgICAgICAgW3s6a2V5cyBbZmllbGQga2V5XX1dXG4gICAgICAgICAgICh3aGVuXG4gICAgICAgICAgICAoYW5kXG4gICAgICAgICAgICAgKD0gOmlkIGZpZWxkKVxuICAgICAgICAgICAgIChjbG9qdXJlLmNvcmUvY29udGFpbnM/ICg6am9pbnMgYmluZGluZ3MpIGtleSkpXG4gICAgICAgICAgICBrZXkpKVxuICAgICAgICAgICgtPiBqb2luLW5vZGUgOmNvbmRpdGlvbiA6YmluZGluZ3MpKVxuICAgICAgICAgOmRpc2FibGUtZmFzdC11cGRhdGVzXG4gICAgICAgICBkaXNhYmxlLWZhc3QtdXBkYXRlcykpKSkpXG4gICAgc2Vzc2lvblxuICAgICg6am9pbi1ub2RlLWlkcyBzZXNzaW9uKSldXG4gICgtPlxuICAgc2Vzc2lvblxuICAgKGFzc29jLWluIFs6YmV0YS1ub2RlcyBsZWFmLW5vZGUtaWQgOndoZW4tZm5dICg6d2hlbi1mbiBydWxlKSlcbiAgIChhc3NvYy1pbiBbOmJldGEtbm9kZXMgbGVhZi1ub2RlLWlkIDp0aGVuLWZuXSAoOnRoZW4tZm4gcnVsZSkpXG4gICAoYXNzb2MtaW5cbiAgICBbOmJldGEtbm9kZXMgbGVhZi1ub2RlLWlkIDp0aGVuLWZpbmFsbHktZm5dXG4gICAgKDp0aGVuLWZpbmFsbHktZm4gcnVsZSkpXG4gICAoYXNzb2MtaW4gWzpydWxlLW5hbWUtPm5vZGUtaWQgKDpuYW1lIHJ1bGUpXSBsZWFmLW5vZGUtaWQpXG4gICAoYXNzb2MtaW4gWzpub2RlLWlkLT5ydWxlLW5hbWUgbGVhZi1ub2RlLWlkXSAoOm5hbWUgcnVsZSkpXG4gICAoZGlzc29jIDptZW0tbm9kZS1pZHMgOmpvaW4tbm9kZS1pZHMgOmJpbmRpbmdzKSkpKVxuIn0gezpzeW0gcmVtb3ZlLXJ1bGUsIDptZXRhIHs6ZG9jICJSZW1vdmVzIGEgcnVsZSBmcm9tIHRoZSBnaXZlbiBzZXNzaW9uLiIsIDphcmdsaXN0cyAoW3Nlc3Npb24gcnVsZS1uYW1lXSl9LCA6c291cmNlICIoZGVmblxuIHJlbW92ZS1ydWxlXG4gXCJSZW1vdmVzIGEgcnVsZSBmcm9tIHRoZSBnaXZlbiBzZXNzaW9uLlwiXG4gW3Nlc3Npb24gcnVsZS1uYW1lXVxuIChpZi1sZXRcbiAgW25vZGUtaWQgKGdldC1pbiBzZXNzaW9uIFs6cnVsZS1uYW1lLT5ub2RlLWlkIHJ1bGUtbmFtZV0pXVxuICAoLT5cbiAgIChsb29wXG4gICAgW3Nlc3Npb24gc2Vzc2lvbiBub2RlLWlkIG5vZGUtaWRdXG4gICAgKGlmXG4gICAgIG5vZGUtaWRcbiAgICAgKGxldFxuICAgICAgW25vZGVcbiAgICAgICAoZ2V0LWluIHNlc3Npb24gWzpiZXRhLW5vZGVzIG5vZGUtaWRdKVxuICAgICAgIHNlc3Npb25cbiAgICAgICAodXBkYXRlIHNlc3Npb24gOmJldGEtbm9kZXMgZGlzc29jIG5vZGUtaWQpXVxuICAgICAgKGlmXG4gICAgICAgKGluc3RhbmNlPyBKb2luTm9kZSBub2RlKVxuICAgICAgICgtPlxuICAgICAgICBzZXNzaW9uXG4gICAgICAgICh1cGRhdGUtaW5cbiAgICAgICAgICg6YWxwaGEtbm9kZS1wYXRoIG5vZGUpXG4gICAgICAgICAoZm5cbiAgICAgICAgICBbYWxwaGEtbm9kZV1cbiAgICAgICAgICAodXBkYXRlXG4gICAgICAgICAgIGFscGhhLW5vZGVcbiAgICAgICAgICAgOnN1Y2Nlc3NvcnNcbiAgICAgICAgICAgKGZuXG4gICAgICAgICAgICBbc3VjY2Vzc29yc11cbiAgICAgICAgICAgICh2ZWNcbiAgICAgICAgICAgICAocmVtb3ZlXG4gICAgICAgICAgICAgIChmbiogW3AxX180MzIxOSNdICg9IHAxX180MzIxOSMgbm9kZS1pZCkpXG4gICAgICAgICAgICAgIHN1Y2Nlc3NvcnMpKSkpKSlcbiAgICAgICAgKHJlY3VyICg6cGFyZW50LWlkIG5vZGUpKSlcbiAgICAgICAocmVjdXIgc2Vzc2lvbiAoOnBhcmVudC1pZCBub2RlKSkpKVxuICAgICBzZXNzaW9uKSlcbiAgICh1cGRhdGUgOnJ1bGUtbmFtZS0+bm9kZS1pZCBkaXNzb2MgcnVsZS1uYW1lKVxuICAgKHVwZGF0ZSA6bm9kZS1pZC0+cnVsZS1uYW1lIGRpc3NvYyBub2RlLWlkKSlcbiAgKHRocm93IChleC1pbmZvIChzdHIgcnVsZS1uYW1lIFwiIGRvZXMgbm90IGV4aXN0IGluIHNlc3Npb25cIikge30pKSkpXG4ifSB7OnN5bSAtPnNlc3Npb24sIDptZXRhIHs6ZG9jICJSZXR1cm5zIGEgbmV3IHNlc3Npb24uIiwgOmFyZ2xpc3RzIChbXSl9LCA6c291cmNlICIoZGVmblxuIC0+c2Vzc2lvblxuIFwiUmV0dXJucyBhIG5ldyBzZXNzaW9uLlwiXG4gW11cbiAobWFwLT5TZXNzaW9uXG4gIHs6YWxwaGEtbm9kZVxuICAgKG1hcC0+QWxwaGFOb2RlXG4gICAgezpwYXRoIFs6YWxwaGEtbm9kZV0sXG4gICAgIDp0ZXN0LWZpZWxkIG5pbCxcbiAgICAgOnRlc3QtdmFsdWUgbmlsLFxuICAgICA6Y2hpbGRyZW4gW10sXG4gICAgIDpzdWNjZXNzb3JzIFtdLFxuICAgICA6ZmFjdHMge319KSxcbiAgIDpiZXRhLW5vZGVzIHt9LFxuICAgOmxhc3QtaWQgLTEsXG4gICA6cnVsZS1uYW1lLT5ub2RlLWlkIHt9LFxuICAgOm5vZGUtaWQtPnJ1bGUtbmFtZSB7fSxcbiAgIDppZC1hdHRyLW5vZGVzIHt9LFxuICAgOnRoZW4tcXVldWUgI3t9LFxuICAgOnRoZW4tZmluYWxseS1xdWV1ZSAje319KSlcbiJ9IHs6c3ltIHJlc2V0ISwgOm1ldGEgezpkb2MgIk11dGF0ZXMgdGhlIHNlc3Npb24gZnJvbSBhIDp0aGVuIG9yIDp0aGVuLWZpbmFsbHkgYmxvY2suIiwgOmFyZ2xpc3RzIChbbmV3LXNlc3Npb25dKX0sIDpzb3VyY2UgIihkZWZuXG4gcmVzZXQhXG4gXCJNdXRhdGVzIHRoZSBzZXNzaW9uIGZyb20gYSA6dGhlbiBvciA6dGhlbi1maW5hbGx5IGJsb2NrLlwiXG4gW25ldy1zZXNzaW9uXVxuIChpZlxuICAqbXV0YWJsZS1zZXNzaW9uKlxuICAoaWZcbiAgICg9ICpzZXNzaW9uKiBAKm11dGFibGUtc2Vzc2lvbiopXG4gICAodnJlc2V0ISAqbXV0YWJsZS1zZXNzaW9uKiBuZXctc2Vzc2lvbilcbiAgICh0aHJvd1xuICAgIChleC1pbmZvXG4gICAgIFwiWW91IG1heSBvbmx5IGNhbGwgYHJlc2V0IWAgb25jZSBpbiBhIDp0aGVuIG9yIDp0aGVuLWZpbmFsbHkgYmxvY2tcIlxuICAgICB7fSkpKVxuICAodGhyb3dcbiAgIChleC1pbmZvXG4gICAgXCJZb3UgbWF5IG9ubHkgY2FsbCBgcmVzZXQhYCBpbiBhIDp0aGVuIG9yIDp0aGVuLWZpbmFsbHkgYmxvY2tcIlxuICAgIHt9KSkpKVxuIn0gezpzeW0gcmV0cmFjdCEsIDptZXRhIHs6ZG9jICJFcXVpdmFsZW50IHRvOlxuICBcbiAgKG8vcmVzZXQhIChvL3JldHJhY3Qgby8qc2Vzc2lvbiogaWQgYXR0cikpIiwgOmFyZ2xpc3RzIChbaWQgYXR0cl0pfSwgOnNvdXJjZSAiKGRlZm5cbiByZXRyYWN0IVxuIFwiRXF1aXZhbGVudCB0bzpcXG4gIFxcbiAgKG8vcmVzZXQhIChvL3JldHJhY3Qgby8qc2Vzc2lvbiogaWQgYXR0cikpXCJcbiBbaWQgYXR0cl1cbiAoaWZcbiAgKm11dGFibGUtc2Vzc2lvbipcbiAgKHZzd2FwISAqbXV0YWJsZS1zZXNzaW9uKiByZXRyYWN0IGlkIGF0dHIpXG4gICh0aHJvd1xuICAgKGV4LWluZm9cbiAgICBcIlRoaXMgZnVuY3Rpb24gbXVzdCBiZSBjYWxsZWQgaW4gYSA6dGhlbiBvciA6dGhlbi1maW5hbGx5IGJsb2NrXCJcbiAgICB7fSkpKSlcbiJ9IHs6c3ltIGluc2VydCEsIDptZXRhIHs6ZG9jICJFcXVpdmFsZW50IHRvOlxuICBcbiAgKG8vcmVzZXQhIChvL2luc2VydCBvLypzZXNzaW9uKiBpZCBhdHRyIHZhbHVlKSkiLCA6YXJnbGlzdHMgW1tpZCBhdHRyLT52YWx1ZV0gW2lkIGF0dHIgdmFsdWVdXX0sIDpzb3VyY2UgIihkZWZuXG4gaW5zZXJ0IVxuIFwiRXF1aXZhbGVudCB0bzpcXG4gIFxcbiAgKG8vcmVzZXQhIChvL2luc2VydCBvLypzZXNzaW9uKiBpZCBhdHRyIHZhbHVlKSlcIlxuIChbaWQgYXR0ci0+dmFsdWVdXG4gIChydW4hIChmbiBbW2F0dHIgdmFsdWVdXSAoaW5zZXJ0ISBpZCBhdHRyIHZhbHVlKSkgYXR0ci0+dmFsdWUpKVxuIChbaWQgYXR0ciB2YWx1ZV1cbiAgKGlmXG4gICAqbXV0YWJsZS1zZXNzaW9uKlxuICAgKHZzd2FwISAqbXV0YWJsZS1zZXNzaW9uKiBpbnNlcnQgaWQgYXR0ciB2YWx1ZSlcbiAgICh0aHJvd1xuICAgIChleC1pbmZvXG4gICAgIFwiVGhpcyBmdW5jdGlvbiBtdXN0IGJlIGNhbGxlZCBpbiBhIDp0aGVuIG9yIDp0aGVuLWZpbmFsbHkgYmxvY2tcIlxuICAgICB7fSkpKSkpXG4ifSB7OnN5bSAqc2Vzc2lvbiosIDptZXRhIHs6ZG9jICJQcm92aWRlcyB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgc2Vzc2lvbiBmcm9tIGluc2lkZSBhIDp0aGVuIG9yIDp0aGVuLWZpbmFsbHkgYmxvY2suXG5UaGlzIGlzIG5vIGxvbmdlciBuZWNlc3NhcnksIGJlY2F1c2UgaXQgaXMgYWNjZXNzaWJsZSB2aWEgYHNlc3Npb25gIGRpcmVjdGx5LiJ9LCA6c291cmNlICIoZGVmICpzZXNzaW9uKiBuaWwpXG4ifSB7OnN5bSByZXRyYWN0LCA6bWV0YSB7OmRvYyAiUmV0cmFjdHMgdGhlIGZhY3Qgd2l0aCB0aGUgZ2l2ZW4gaWQgKyBhdHRyIGNvbWJvLiIsIDphcmdsaXN0cyAoW3Nlc3Npb24gaWQgYXR0cl0pfSwgOnNvdXJjZSAiKGRlZm5cbiByZXRyYWN0XG4gXCJSZXRyYWN0cyB0aGUgZmFjdCB3aXRoIHRoZSBnaXZlbiBpZCArIGF0dHIgY29tYm8uXCJcbiBbc2Vzc2lvbiBpZCBhdHRyXVxuIChsZXRcbiAgW2lkK2F0dHJcbiAgIFtpZCBhdHRyXVxuICAgbm9kZS1wYXRoc1xuICAgKGdldC1pbiBzZXNzaW9uIFs6aWQtYXR0ci1ub2RlcyBpZCthdHRyXSldXG4gICh3aGVuLW5vdFxuICAgbm9kZS1wYXRoc1xuICAgKHRocm93IChleC1pbmZvIChzdHIgaWQrYXR0ciBcIiBub3QgaW4gc2Vzc2lvblwiKSB7fSkpKVxuICAocmVkdWNlXG4gICAoZm5cbiAgICBbc2Vzc2lvbiBub2RlLXBhdGhdXG4gICAgKGxldFxuICAgICBbbm9kZVxuICAgICAgKGdldC1pbiBzZXNzaW9uIG5vZGUtcGF0aClcbiAgICAgIGZhY3RcbiAgICAgIChnZXQtaW4gbm9kZSBbOmZhY3RzIGlkIGF0dHJdKV1cbiAgICAgKHJpZ2h0LWFjdGl2YXRlLWFscGhhLW5vZGVcbiAgICAgIHNlc3Npb25cbiAgICAgIG5vZGUtcGF0aFxuICAgICAgKC0+VG9rZW4gZmFjdCA6cmV0cmFjdCBuaWwpKSkpXG4gICBzZXNzaW9uXG4gICBub2RlLXBhdGhzKSkpXG4ifSB7OnN5bSBxdWVyeS1hbGwsIDptZXRhIHs6ZG9jICJXaGVuIGNhbGxlZCB3aXRoIGp1c3QgYSBzZXNzaW9uLCByZXR1cm5zIGEgdmVjdG9yIG9mIGFsbCBpbnNlcnRlZCBmYWN0cy5cbiAgT3RoZXJ3aXNlLCByZXR1cm5zIGEgdmVjdG9yIG9mIG1hcHMgY29udGFpbmluZyBhbGwgdGhlIG1hdGNoZXMgZm9yIHRoZSBnaXZlbiBydWxlLiIsIDphcmdsaXN0cyBbW3Nlc3Npb25dIFtzZXNzaW9uIHJ1bGUtbmFtZV1dfSwgOnNvdXJjZSAiKGRlZm5cbiBxdWVyeS1hbGxcbiBcIldoZW4gY2FsbGVkIHdpdGgganVzdCBhIHNlc3Npb24sIHJldHVybnMgYSB2ZWN0b3Igb2YgYWxsIGluc2VydGVkIGZhY3RzLlxcbiAgT3RoZXJ3aXNlLCByZXR1cm5zIGEgdmVjdG9yIG9mIG1hcHMgY29udGFpbmluZyBhbGwgdGhlIG1hdGNoZXMgZm9yIHRoZSBnaXZlbiBydWxlLlwiXG4gKFtzZXNzaW9uXVxuICAobWFwdlxuICAgKGZuXG4gICAgW1tbaWQgYXR0cl0gbm9kZXNdXVxuICAgICgtPlxuICAgICAoZ2V0LWluIHNlc3Npb24gKGZpcnN0IG5vZGVzKSlcbiAgICAgKGdldC1pbiBbOmZhY3RzIGlkIGF0dHJdKVxuICAgICAoKGp1eHQgOmlkIDphdHRyIDp2YWx1ZSkpKSlcbiAgICg6aWQtYXR0ci1ub2RlcyBzZXNzaW9uKSkpXG4gKFtzZXNzaW9uIHJ1bGUtbmFtZV1cbiAgKGxldFxuICAgW3J1bGUtaWRcbiAgICAob3JcbiAgICAgKGdldC1pbiBzZXNzaW9uIFs6cnVsZS1uYW1lLT5ub2RlLWlkIHJ1bGUtbmFtZV0pXG4gICAgICh0aHJvdyAoZXgtaW5mbyAoc3RyIHJ1bGUtbmFtZSBcIiBub3QgaW4gc2Vzc2lvblwiKSB7fSkpKVxuICAgIHJ1bGVcbiAgICAoZ2V0LWluIHNlc3Npb24gWzpiZXRhLW5vZGVzIHJ1bGUtaWRdKV1cbiAgIChyZWR1Y2Uta3ZcbiAgICAoZm4gW3YgXyB7OmtleXMgW3ZhcnMgZW5hYmxlZF19XSAoaWYgZW5hYmxlZCAoY29uaiB2IHZhcnMpIHYpKVxuICAgIFtdXG4gICAgKDptYXRjaGVzIHJ1bGUpKSkpKVxuIiwgOmV4YW1wbGVzIFt7OmRvYyAiUXVlcnkgYWxsIHRoZSBmYWN0cyBmcm9tIHRoZSBzZXNzaW9uIiwgOndpdGgtZm9jdXMgezpmb3JtIFs6bG9jYWwtc3ltYm9sIGZvY3VzXSwgOmluaXQtZXhwciAocXVlcnktYWxsIHNlc3Npb24pfSwgOmJvZHkgKGxldCBbc2Vzc2lvbiBvZG95bGUuZXhhbXBsZXMvc2Vzc2lvbl0gZm9jdXMpLCA6Ym9keS1zdHIgIihxdWVyeS1hbGwgc2Vzc2lvbilcbiIsIDppZCAib2RveWxlLnJ1bGVzL3F1ZXJ5LWFsbC8wIn0gezpkb2MgIlF1ZXJ5IHRoZSBtYXRjaGVzIGZvciBhIHJ1bGUiLCA6d2l0aC1mb2N1cyB7OmZvcm0gWzpsb2NhbC1zeW1ib2wgZm9jdXNdLCA6aW5pdC1leHByIChxdWVyeS1hbGwgc2Vzc2lvbiA6b2RveWxlLmV4YW1wbGVzL2dldC10b2RvKX0sIDpib2R5IChsZXQgW3Nlc3Npb24gb2RveWxlLmV4YW1wbGVzL3Nlc3Npb25dIGZvY3VzKSwgOmJvZHktc3RyICIocXVlcnktYWxsIHNlc3Npb24gOm9kb3lsZS5leGFtcGxlcy9nZXQtdG9kbylcbiIsIDppZCAib2RveWxlLnJ1bGVzL3F1ZXJ5LWFsbC8xIn1dfSB7OnN5bSBwYXJzZSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtzcGVjIGNvbnRlbnRdKX0sIDpzb3VyY2UgIihkZWZuXG4gcGFyc2VcbiBbc3BlYyBjb250ZW50XVxuIChsZXRcbiAgW3JlcyAocy9jb25mb3JtIHNwZWMgY29udGVudCldXG4gIChpZlxuICAgKD0gOmNsb2p1cmUuc3BlYy5hbHBoYS9pbnZhbGlkIHJlcylcbiAgICh0aHJvdyAoZXgtaW5mbyAoZXhwb3VuZC9leHBvdW5kLXN0ciBzcGVjIGNvbnRlbnQpIHt9KSlcbiAgIHJlcykpKVxuIn0gezpzeW0gd3JhcC1ydWxlLCA6bWV0YSB7OmRvYyAiV3JhcHMgdGhlIGZ1bmN0aW9ucyBvZiBhIHJ1bGUgc28gdGhleSBjYW4gYmUgY29udmVuaWVudGx5IGludGVyY2VwdGVkXG4gIGZvciBkZWJ1Z2dpbmcgb3Igb3RoZXIgcHVycG9zZXMuXG4gIFNlZSB0aGUgUkVBRE1FIHNlY3Rpb24gXCJEZWJ1Z2dpbmdcIi4iLCA6YXJnbGlzdHMgKFtydWxlIHt3aGF0LWZuIDp3aGF0LCB3aGVuLWZuIDp3aGVuLCB0aGVuLWZuIDp0aGVuLCB0aGVuLWZpbmFsbHktZm4gOnRoZW4tZmluYWxseX1dKX0sIDpzb3VyY2UgIihkZWZuXG4gd3JhcC1ydWxlXG4gXCJXcmFwcyB0aGUgZnVuY3Rpb25zIG9mIGEgcnVsZSBzbyB0aGV5IGNhbiBiZSBjb252ZW5pZW50bHkgaW50ZXJjZXB0ZWRcXG4gIGZvciBkZWJ1Z2dpbmcgb3Igb3RoZXIgcHVycG9zZXMuXFxuICBTZWUgdGhlIFJFQURNRSBzZWN0aW9uIFxcXCJEZWJ1Z2dpbmdcXFwiLlwiXG4gW3J1bGVcbiAge3doYXQtZm4gOndoYXQsXG4gICB3aGVuLWZuIDp3aGVuLFxuICAgdGhlbi1mbiA6dGhlbixcbiAgIHRoZW4tZmluYWxseS1mbiA6dGhlbi1maW5hbGx5fV1cbiAoY29uZC0+XG4gIChhc3NvYyBydWxlIDp3aGF0LWZuIHdoYXQtZm4pXG4gIChhbmQgKDp3aGVuLWZuIHJ1bGUpIHdoZW4tZm4pXG4gICh1cGRhdGVcbiAgIDp3aGVuLWZuXG4gICAoZm4gd3JhcC13aGVuIFtmXSAoZm4gW3Nlc3Npb24gbWF0Y2hdICh3aGVuLWZuIGYgc2Vzc2lvbiBtYXRjaCkpKSlcbiAgKGFuZCAoOnRoZW4tZm4gcnVsZSkgdGhlbi1mbilcbiAgKHVwZGF0ZVxuICAgOnRoZW4tZm5cbiAgIChmbiB3cmFwLXRoZW4gW2ZdIChmbiBbc2Vzc2lvbiBtYXRjaF0gKHRoZW4tZm4gZiBzZXNzaW9uIG1hdGNoKSkpKVxuICAoYW5kICg6dGhlbi1maW5hbGx5LWZuIHJ1bGUpIHRoZW4tZmluYWxseS1mbilcbiAgKHVwZGF0ZVxuICAgOnRoZW4tZmluYWxseS1mblxuICAgKGZuXG4gICAgd3JhcC10aGVuLWZpbmFsbHlcbiAgICBbZl1cbiAgICAoZm4gW3Nlc3Npb25dICh0aGVuLWZpbmFsbHktZm4gZiBzZXNzaW9uKSkpKSkpXG4ifSksIGRldnRvb2xzLmZvcm1hdCAoezpzeW0gbWFrZS10ZW1wbGF0ZSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFsmIGFyZ3NdKX0sIDpzb3VyY2UgIihkZWZuIG1ha2UtdGVtcGxhdGUgWyYgYXJnc10gKHNldHVwISkgKGFwcGx5IG1ha2UtdGVtcGxhdGUtZm4gYXJncykpXG4ifSB7OnN5bSAtaGVhZGVyLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3ZhbHVlXSl9LCA6cHJvdG9jb2wgSURldnRvb2xzRm9ybWF0fSB7OnN5bSBJRGV2dG9vbHNGb3JtYXQsIDptZXRhIHs6ZG9jIG5pbH0sIDptZXRob2RzICgtYm9keSAtaGFzLWJvZHkgLWhlYWRlcil9IHs6c3ltIG1ha2Utc3Vycm9nYXRlLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoWyYgYXJnc10pfSwgOnNvdXJjZSAiKGRlZm4gbWFrZS1zdXJyb2dhdGUgWyYgYXJnc10gKHNldHVwISkgKGFwcGx5IG1ha2Utc3Vycm9nYXRlLWZuIGFyZ3MpKVxuIn0gezpzeW0gZ3JvdXAsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbJiBhcmdzXSl9LCA6c291cmNlICIoZGVmbiBncm91cCBbJiBhcmdzXSAoc2V0dXAhKSAoYXBwbHkgbWFrZS1ncm91cC1mbiBhcmdzKSlcbiJ9IHs6c3ltIHN1cnJvZ2F0ZSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFsmIGFyZ3NdKX0sIDpzb3VyY2UgIihkZWZuIHN1cnJvZ2F0ZSBbJiBhcmdzXSAoc2V0dXAhKSAoYXBwbHkgbWFrZS1zdXJyb2dhdGUtZm4gYXJncykpXG4ifSB7OnN5bSBzZXR1cCEsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbXSl9LCA6c291cmNlICIoZGVmblxuIHNldHVwIVxuIFtdXG4gKHdoZW4tbm90XG4gICpzZXR1cC1kb25lKlxuICAoc2V0ISAqc2V0dXAtZG9uZSogdHJ1ZSlcbiAgKGRlZlxuICAgbWFrZS10ZW1wbGF0ZS1mblxuICAgKG9nZXRcbiAgICAoY29udGV4dC9nZXQtcm9vdClcbiAgICBcImRldnRvb2xzXCJcbiAgICBcImZvcm1hdHRlcnNcIlxuICAgIFwidGVtcGxhdGluZ1wiXG4gICAgXCJtYWtlX3RlbXBsYXRlXCIpKVxuICAoZGVmXG4gICBtYWtlLWdyb3VwLWZuXG4gICAob2dldFxuICAgIChjb250ZXh0L2dldC1yb290KVxuICAgIFwiZGV2dG9vbHNcIlxuICAgIFwiZm9ybWF0dGVyc1wiXG4gICAgXCJ0ZW1wbGF0aW5nXCJcbiAgICBcIm1ha2VfZ3JvdXBcIikpXG4gIChkZWZcbiAgIG1ha2UtcmVmZXJlbmNlLWZuXG4gICAob2dldFxuICAgIChjb250ZXh0L2dldC1yb290KVxuICAgIFwiZGV2dG9vbHNcIlxuICAgIFwiZm9ybWF0dGVyc1wiXG4gICAgXCJ0ZW1wbGF0aW5nXCJcbiAgICBcIm1ha2VfcmVmZXJlbmNlXCIpKVxuICAoZGVmXG4gICBtYWtlLXN1cnJvZ2F0ZS1mblxuICAgKG9nZXRcbiAgICAoY29udGV4dC9nZXQtcm9vdClcbiAgICBcImRldnRvb2xzXCJcbiAgICBcImZvcm1hdHRlcnNcIlxuICAgIFwidGVtcGxhdGluZ1wiXG4gICAgXCJtYWtlX3N1cnJvZ2F0ZVwiKSlcbiAgKGRlZlxuICAgcmVuZGVyLW1hcmt1cC1mblxuICAgKG9nZXRcbiAgICAoY29udGV4dC9nZXQtcm9vdClcbiAgICBcImRldnRvb2xzXCJcbiAgICBcImZvcm1hdHRlcnNcIlxuICAgIFwidGVtcGxhdGluZ1wiXG4gICAgXCJyZW5kZXJfbWFya3VwXCIpKVxuICAoZGVmXG4gICA8aGVhZGVyPi1mblxuICAgKG9nZXRcbiAgICAoY29udGV4dC9nZXQtcm9vdClcbiAgICBcImRldnRvb2xzXCJcbiAgICBcImZvcm1hdHRlcnNcIlxuICAgIFwibWFya3VwXCJcbiAgICBcIl9MVF9oZWFkZXJfR1RfXCIpKVxuICAoZGVmXG4gICA8c3RhbmRhcmQtYm9keT4tZm5cbiAgIChvZ2V0XG4gICAgKGNvbnRleHQvZ2V0LXJvb3QpXG4gICAgXCJkZXZ0b29sc1wiXG4gICAgXCJmb3JtYXR0ZXJzXCJcbiAgICBcIm1hcmt1cFwiXG4gICAgXCJfTFRfc3RhbmRhcmRfYm9keV9HVF9cIikpXG4gIChhc3NlcnQgbWFrZS10ZW1wbGF0ZS1mbilcbiAgKGFzc2VydCBtYWtlLWdyb3VwLWZuKVxuICAoYXNzZXJ0IG1ha2UtcmVmZXJlbmNlLWZuKVxuICAoYXNzZXJ0IG1ha2Utc3Vycm9nYXRlLWZuKVxuICAoYXNzZXJ0IHJlbmRlci1tYXJrdXAtZm4pXG4gIChhc3NlcnQgPGhlYWRlcj4tZm4pXG4gIChhc3NlcnQgPHN0YW5kYXJkLWJvZHk+LWZuKSkpXG4ifSB7OnN5bSAtaGFzLWJvZHksIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbdmFsdWVdKX0sIDpwcm90b2NvbCBJRGV2dG9vbHNGb3JtYXR9IHs6c3ltIHN0YW5kYXJkLXJlZmVyZW5jZSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt0YXJnZXRdKX0sIDpzb3VyY2UgIihkZWZuXG4gc3RhbmRhcmQtcmVmZXJlbmNlXG4gW3RhcmdldF1cbiAoc2V0dXAhKVxuIChtYWtlLXRlbXBsYXRlLWZuXG4gIDpvbFxuICA6c3RhbmRhcmQtb2wtc3R5bGVcbiAgKG1ha2UtdGVtcGxhdGUtZm4gOmxpIDpzdGFuZGFyZC1saS1zdHlsZSAobWFrZS1yZWZlcmVuY2UtZm4gdGFyZ2V0KSkpKVxuIn0gezpzeW0gc3RhbmRhcmQtYm9keS10ZW1wbGF0ZSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtsaW5lcyAmIHJlc3RdKX0sIDpzb3VyY2UgIihkZWZuXG4gc3RhbmRhcmQtYm9keS10ZW1wbGF0ZVxuIFtsaW5lcyAmIHJlc3RdXG4gKHNldHVwISlcbiAobGV0XG4gIFthcmdzIChjb25jYXQgWyhtYXAgKGZuIFt4XSBbeF0pIGxpbmVzKV0gcmVzdCldXG4gIChyZW5kZXItbWFya3VwIChhcHBseSA8c3RhbmRhcmQtYm9keT4tZm4gYXJncykpKSlcbiJ9IHs6c3ltIHRlbXBsYXRlLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoWyYgYXJnc10pfSwgOnNvdXJjZSAiKGRlZm4gdGVtcGxhdGUgWyYgYXJnc10gKHNldHVwISkgKGFwcGx5IG1ha2UtdGVtcGxhdGUtZm4gYXJncykpXG4ifSB7OnN5bSBidWlsZC1oZWFkZXIsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbJiBhcmdzXSl9LCA6c291cmNlICIoZGVmblxuIGJ1aWxkLWhlYWRlclxuIFsmIGFyZ3NdXG4gKHNldHVwISlcbiAocmVuZGVyLW1hcmt1cCAoYXBwbHkgPGhlYWRlcj4tZm4gYXJncykpKVxuIn0gezpzeW0gbWFrZS1ncm91cCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFsmIGFyZ3NdKX0sIDpzb3VyY2UgIihkZWZuIG1ha2UtZ3JvdXAgWyYgYXJnc10gKHNldHVwISkgKGFwcGx5IG1ha2UtZ3JvdXAtZm4gYXJncykpXG4ifSB7OnN5bSAtYm9keSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt2YWx1ZV0pfSwgOnByb3RvY29sIElEZXZ0b29sc0Zvcm1hdH0gezpzeW0gcmVmZXJlbmNlLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW29iamVjdCAmIFtzdGF0ZS1vdmVycmlkZV1dKX0sIDpzb3VyY2UgIihkZWZuXG4gcmVmZXJlbmNlXG4gW29iamVjdCAmIFtzdGF0ZS1vdmVycmlkZV1dXG4gKHNldHVwISlcbiAoYXBwbHlcbiAgbWFrZS1yZWZlcmVuY2UtZm5cbiAgW29iamVjdCAoZm4qIFtwMV9fNDIxMDMjXSAobWVyZ2UgcDFfXzQyMTAzIyBzdGF0ZS1vdmVycmlkZSkpXSkpXG4ifSksIGNyb3NzLXBhcmluZmVyLmNvcmUgKHs6c3ltIHBhcmVuLW1vZGUsIDptZXRhIHs6ZG9jICJSdW5zIHBhcmVuIG1vZGUgb24gdGhlIGdpdmVuIHRleHQuIiwgOmFyZ2xpc3RzIChbdGV4dCB4IGxpbmVdKX0sIDpzb3VyY2UgIihkZWZuXG4gcGFyZW4tbW9kZVxuIFwiUnVucyBwYXJlbiBtb2RlIG9uIHRoZSBnaXZlbiB0ZXh0LlwiXG4gW3RleHQgeCBsaW5lXVxuICM/KDpjbGogKGxldCBbcmVzICh0cnkgKFBhcmluZmVyL3BhcmVuTW9kZSB0ZXh0IChpbnQgeCkgKGludCBsaW5lKSBuaWwgZmFsc2UpIChjYXRjaCBFeGNlcHRpb24gXyAoUGFyaW5mZXIvcGFyZW5Nb2RlIHRleHQgKGludCAwKSAoaW50IDApIG5pbCBmYWxzZSkpKV0gezp4ICguLWN1cnNvclggcmVzKSwgOnRleHQgKC4tdGV4dCByZXMpfSkgOmNsanMgKGxldCBbcmVzICgucGFyZW5Nb2RlIGpzL3BhcmluZmVyIHRleHQgI2pzIHs6Y3Vyc29yTGluZSBsaW5lLCA6Y3Vyc29yWCB4fSldIHs6eCAoYWdldCByZXMgXCJjdXJzb3JYXCIpLCA6dGV4dCAoYWdldCByZXMgXCJ0ZXh0XCIpfSkpKVxuIn0gezpzeW0gYWRkLWluZGVudCwgOm1ldGEgezpkb2MgIkFkZHMgaW5kZW50IHRvIHRoZSBzdGF0ZS4iLCA6YXJnbGlzdHMgKFtzdGF0ZV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBhZGQtaW5kZW50XG4gXCJBZGRzIGluZGVudCB0byB0aGUgc3RhdGUuXCJcbiBbc3RhdGVdXG4gKGxldFxuICBbezprZXlzIFt0ZXh0IGN1cnNvci1wb3NpdGlvbiBpbmRlbnQtdHlwZV19XG4gICBzdGF0ZVxuICAgW3N0YXJ0LXBvcyBlbmQtcG9zXVxuICAgY3Vyc29yLXBvc2l0aW9uXG4gICBbc3RhcnQtbGluZSBzdGFydC14XVxuICAgKHBvc2l0aW9uLT5yb3ctY29sIHRleHQgc3RhcnQtcG9zKVxuICAgW2VuZC1saW5lIF9dXG4gICAocG9zaXRpb24tPnJvdy1jb2wgdGV4dCBlbmQtcG9zKVxuICAgbGluZXNcbiAgIChzcGxpdC1saW5lcyB0ZXh0KVxuICAgdGFnc1xuICAgKHRzL2NvZGUtPnRhZ3MgdGV4dClcbiAgIG5ldy1pbmRlbnQtbGV2ZWxcbiAgIChjYXNlXG4gICAgaW5kZW50LXR5cGVcbiAgICA6cmV0dXJuXG4gICAgKHRzL2luZGVudC1mb3ItbGluZSB0YWdzIChpbmMgc3RhcnQtbGluZSkpXG4gICAgOmJhY2tcbiAgICAodHMvYmFjay1pbmRlbnQtZm9yLWxpbmVcbiAgICAgdGFnc1xuICAgICAoaW5jIHN0YXJ0LWxpbmUpXG4gICAgIChpbmRlbnQtY291bnQgKGdldCBsaW5lcyBzdGFydC1saW5lKSkpXG4gICAgOmZvcndhcmRcbiAgICAodHMvZm9yd2FyZC1pbmRlbnQtZm9yLWxpbmVcbiAgICAgdGFnc1xuICAgICAoaW5jIHN0YXJ0LWxpbmUpXG4gICAgIChpbmRlbnQtY291bnQgKGdldCBsaW5lcyBzdGFydC1saW5lKSkpXG4gICAgOm5vcm1hbFxuICAgIHN0YXJ0LXgpXG4gICBsaW5lc1xuICAgKGlmXG4gICAgKD0gaW5kZW50LXR5cGUgOm5vcm1hbClcbiAgICAobG9vcFxuICAgICBbbGluZXMgbGluZXMgdGFncyB0YWdzIGxpbmUtbnVtIChpbmMgc3RhcnQtbGluZSldXG4gICAgIChpZi1sZXRcbiAgICAgIFtsaW5lIChnZXQgbGluZXMgbGluZS1udW0pXVxuICAgICAgKGxldFxuICAgICAgIFtpbmRlbnRcbiAgICAgICAgKHRzL2luZGVudC1mb3ItbGluZSB0YWdzIChpbmMgbGluZS1udW0pKVxuICAgICAgICBjdXJyZW50LWluZGVudFxuICAgICAgICAoaW5kZW50LWNvdW50IGxpbmUpXVxuICAgICAgIChpZlxuICAgICAgICAoYW5kICg+IGluZGVudCAwKSAoPiBpbmRlbnQgc3RhcnQteCkpXG4gICAgICAgIChsZXRcbiAgICAgICAgIFtsaW5lc1xuICAgICAgICAgICh1cGRhdGUtaW5kZW50ICgtIGluZGVudCBjdXJyZW50LWluZGVudCkgbGluZXMgbGluZS1udW0pXG4gICAgICAgICAgdGV4dFxuICAgICAgICAgIChzdHIvam9pbiBcXG5ld2xpbmUgbGluZXMpXG4gICAgICAgICAgdGFnc1xuICAgICAgICAgICh0cy9jb2RlLT50YWdzIHRleHQpXVxuICAgICAgICAgKHJlY3VyIGxpbmVzIHRhZ3MgKGluYyBsaW5lLW51bSkpKVxuICAgICAgICBsaW5lcykpXG4gICAgICBsaW5lcykpXG4gICAgKGxldFxuICAgICBbb2xkLWluZGVudC1sZXZlbFxuICAgICAgKGluZGVudC1jb3VudCAoZ2V0IGxpbmVzIHN0YXJ0LWxpbmUpKVxuICAgICAgZGlmZlxuICAgICAgKC0gbmV3LWluZGVudC1sZXZlbCBvbGQtaW5kZW50LWxldmVsKVxuICAgICAgZGlmZlxuICAgICAgKGlmXG4gICAgICAgKG5lZz8gZGlmZilcbiAgICAgICAoLT4+XG4gICAgICAgIChzZXEgKGdldCBsaW5lcyBzdGFydC1saW5lKSlcbiAgICAgICAgKHNwbGl0LXdpdGggKGZuKiBbcDFfXzQyNzE3I10gKD0gcDFfXzQyNzE3IyBcXHNwYWNlKSkpXG4gICAgICAgIGZpcnN0XG4gICAgICAgICh0YWtlICgqIC0xIGRpZmYpKVxuICAgICAgICBjb3VudFxuICAgICAgICAoKiAtMSkpXG4gICAgICAgZGlmZildXG4gICAgIChyZWR1Y2VcbiAgICAgIChwYXJ0aWFsIHVwZGF0ZS1pbmRlbnQgZGlmZilcbiAgICAgIGxpbmVzXG4gICAgICAocmFuZ2Ugc3RhcnQtbGluZSAoaW5jIGVuZC1saW5lKSkpKSlcbiAgIHRleHRcbiAgIChzdHIvam9pbiBcXG5ld2xpbmUgbGluZXMpXG4gICB0ZXh0XG4gICAoOnRleHQgKGluZGVudC1tb2RlIHRleHQgbmV3LWluZGVudC1sZXZlbCBzdGFydC1saW5lIHRydWUpKVxuICAgbGluZXNcbiAgIChzcGxpdC1saW5lcyB0ZXh0KV1cbiAgezpjdXJzb3ItcG9zaXRpb25cbiAgIChpZlxuICAgICg9IHN0YXJ0LXBvcyBlbmQtcG9zKVxuICAgIChsZXRcbiAgICAgW3BvcyAocm93LWNvbC0+cG9zaXRpb24gdGV4dCBzdGFydC1saW5lIG5ldy1pbmRlbnQtbGV2ZWwpXVxuICAgICBbcG9zIHBvc10pXG4gICAgWyhyb3ctY29sLT5wb3NpdGlvbiB0ZXh0IHN0YXJ0LWxpbmUgMClcbiAgICAgKHJvdy1jb2wtPnBvc2l0aW9uIHRleHQgZW5kLWxpbmUgKGNvdW50IChnZXQgbGluZXMgZW5kLWxpbmUpKSldKSxcbiAgIDp0ZXh0IHRleHR9KSlcbiJ9IHs6c3ltIGluZGVudC1jb3VudCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtsaW5lXSl9LCA6c291cmNlICIoZGVmblxuIGluZGVudC1jb3VudFxuIFtsaW5lXVxuICgtPj5cbiAgbGluZVxuICBzZXFcbiAgKHRha2Utd2hpbGUgKGZuKiBbcDFfXzQyNzE1I10gKD0gcDFfXzQyNzE1IyBcXHNwYWNlKSkpXG4gIGNvdW50KSlcbiJ9IHs6c3ltIHJvdy1jb2wtPnBvc2l0aW9uLCA6bWV0YSB7OmRvYyAiQ29udmVydHMgYSByb3cgYW5kIGNvbHVtbiBudW1iZXIgdG8gYSBwb3NpdGlvbi4iLCA6YXJnbGlzdHMgKFt0ZXh0IHJvdyBjb2xdKX0sIDpzb3VyY2UgIihkZWZuXG4gcm93LWNvbC0+cG9zaXRpb25cbiBcIkNvbnZlcnRzIGEgcm93IGFuZCBjb2x1bW4gbnVtYmVyIHRvIGEgcG9zaXRpb24uXCJcbiBbdGV4dCByb3cgY29sXVxuIChsZXRcbiAgW2FsbC1saW5lc1xuICAgKHZlYyAoc3BsaXQtbGluZXMgdGV4dCkpXG4gICBsaW5lc1xuICAgKHZlYyAodGFrZSByb3cgYWxsLWxpbmVzKSlcbiAgIGxhc3QtbGluZVxuICAgKGdldCBhbGwtbGluZXMgcm93KVxuICAgbGluZXNcbiAgIChpZlxuICAgIChhbmQgbGFzdC1saW5lICg+PSAoY291bnQgbGFzdC1saW5lKSBjb2wpKVxuICAgIChjb25qIGxpbmVzIChzdWJzIGxhc3QtbGluZSAwIGNvbCkpXG4gICAgbGluZXMpXG4gICB0ZXh0XG4gICAoc3RyL2pvaW4gXCJcXG5cIiBsaW5lcyldXG4gIChjb3VudCB0ZXh0KSkpXG4ifSB7OnN5bSBwb3NpdGlvbi0+cm93LWNvbCwgOm1ldGEgezpkb2MgIkNvbnZlcnRzIGEgcG9zaXRpb24gdG8gYSByb3cgYW5kIGNvbHVtbiBudW1iZXIuIiwgOmFyZ2xpc3RzIChbdGV4dCBwb3NpdGlvbl0pfSwgOnNvdXJjZSAiKGRlZm5cbiBwb3NpdGlvbi0+cm93LWNvbFxuIFwiQ29udmVydHMgYSBwb3NpdGlvbiB0byBhIHJvdyBhbmQgY29sdW1uIG51bWJlci5cIlxuIFt0ZXh0IHBvc2l0aW9uXVxuIChsZXRcbiAgW3RleHRcbiAgIChzdWJzIHRleHQgMCBwb3NpdGlvbilcbiAgIGxhc3QtbmV3bGluZVxuICAgKC5sYXN0SW5kZXhPZiB0ZXh0IFwiXFxuXCIpXG4gICByb3dcbiAgIChjb3VudCAocmUtc2VxICNcIlxcblwiIHRleHQpKVxuICAgY29sXG4gICAoaWYgKD49IGxhc3QtbmV3bGluZSAwKSAoLSBwb3NpdGlvbiBsYXN0LW5ld2xpbmUgMSkgcG9zaXRpb24pXVxuICBbcm93IGNvbF0pKVxuIn0gezpzeW0gc3BsaXQtbGluZXMsIDptZXRhIHs6ZG9jICJTcGxpdHMgdGhlIHN0cmluZyBpbnRvIGxpbmVzLiIsIDphcmdsaXN0cyAoW3NdKX0sIDpzb3VyY2UgIihkZWZuXG4gc3BsaXQtbGluZXNcbiBcIlNwbGl0cyB0aGUgc3RyaW5nIGludG8gbGluZXMuXCJcbiBbc11cbiAodmVjICguc3BsaXQgcyBcIlxcblwiIC0xKSkpXG4ifSB7OnN5bSB1cGRhdGUtaW5kZW50LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2RpZmYgbGluZXMgbGluZS1udW1dKX0sIDpzb3VyY2UgIihkZWZuXG4gdXBkYXRlLWluZGVudFxuIFtkaWZmIGxpbmVzIGxpbmUtbnVtXVxuICh1cGRhdGVcbiAgbGluZXNcbiAgbGluZS1udW1cbiAgKGZuXG4gICBbbGluZV1cbiAgIChsZXRcbiAgICBbW3NwYWNlcyBjb2RlXVxuICAgICAoc3BsaXQtd2l0aCAoZm4qIFtwMV9fNDI3MTYjXSAoPSBwMV9fNDI3MTYjIFxcc3BhY2UpKSAoc2VxIGxpbmUpKVxuICAgICBzcGFjZXNcbiAgICAgKGlmXG4gICAgICAocG9zPyBkaWZmKVxuICAgICAgKGNvbmNhdCBzcGFjZXMgKHJlcGVhdCBkaWZmIFxcc3BhY2UpKVxuICAgICAgKGRyb3AgKCogLTEgZGlmZikgc3BhY2VzKSldXG4gICAgKHN0ciAoc3RyL2pvaW4gc3BhY2VzKSAoc3RyL2pvaW4gY29kZSkpKSkpKVxuIn0gezpzeW0gbW9kZSwgOm1ldGEgezpkb2MgIlJ1bnMgdGhlIHNwZWNpZmllZCBtb2RlLCB3aGljaCBjYW4gYmUgOnBhcmVuLCA6aW5kZW50LCBvciA6Ym90aC4iLCA6YXJnbGlzdHMgKFttb2RlLXR5cGUgdGV4dCB4IGxpbmVdKX0sIDpzb3VyY2UgIihkZWZuXG4gbW9kZVxuIFwiUnVucyB0aGUgc3BlY2lmaWVkIG1vZGUsIHdoaWNoIGNhbiBiZSA6cGFyZW4sIDppbmRlbnQsIG9yIDpib3RoLlwiXG4gW21vZGUtdHlwZSB0ZXh0IHggbGluZV1cbiAoY2FzZVxuICBtb2RlLXR5cGVcbiAgOnBhcmVuXG4gIChwYXJlbi1tb2RlIHRleHQgeCBsaW5lKVxuICA6aW5kZW50XG4gIChpbmRlbnQtbW9kZSB0ZXh0IHggbGluZSlcbiAgOmJvdGhcbiAgKC0+IHRleHQgKHBhcmVuLW1vZGUgeCBsaW5lKSA6dGV4dCAoaW5kZW50LW1vZGUgeCBsaW5lKSkpKVxuIn0gezpzeW0gaW5kZW50LW1vZGUsIDptZXRhIHs6ZG9jICJSdW5zIGluZGVudCBtb2RlIG9uIHRoZSBnaXZlbiB0ZXh0LiIsIDphcmdsaXN0cyBbW3RleHQgeCBsaW5lXSBbdGV4dCB4IGxpbmUgcHJldmlldy1jdXJzb3Itc2NvcGU/XV19LCA6c291cmNlICIoZGVmblxuIGluZGVudC1tb2RlXG4gXCJSdW5zIGluZGVudCBtb2RlIG9uIHRoZSBnaXZlbiB0ZXh0LlwiXG4gKFt0ZXh0IHggbGluZV0gKGluZGVudC1tb2RlIHRleHQgeCBsaW5lIGZhbHNlKSlcbiAoW3RleHQgeCBsaW5lIHByZXZpZXctY3Vyc29yLXNjb3BlP11cbiAgIz8oOmNsaiAobGV0IFtyZXMgKHRyeSAoUGFyaW5mZXIvaW5kZW50TW9kZSB0ZXh0IChpbnQgeCkgKGludCBsaW5lKSBuaWwgcHJldmlldy1jdXJzb3Itc2NvcGU/KSAoY2F0Y2ggRXhjZXB0aW9uIF8gKFBhcmluZmVyL2luZGVudE1vZGUgdGV4dCAoaW50IDApIChpbnQgMCkgbmlsIHByZXZpZXctY3Vyc29yLXNjb3BlPykpKV0gezp4ICguLWN1cnNvclggcmVzKSwgOnRleHQgKC4tdGV4dCByZXMpfSkgOmNsanMgKGxldCBbcmVzICguaW5kZW50TW9kZSBqcy9wYXJpbmZlciB0ZXh0ICNqcyB7OmN1cnNvckxpbmUgbGluZSwgOmN1cnNvclggeCwgOnByZXZpZXdDdXJzb3JTY29wZSBwcmV2aWV3LWN1cnNvci1zY29wZT99KV0gezp4IChhZ2V0IHJlcyBcImN1cnNvclhcIiksIDp0ZXh0IChhZ2V0IHJlcyBcInRleHRcIil9KSkpKVxuIn0gezpzeW0gYWRkLXBhcmluZmVyLCA6bWV0YSB7OmRvYyAiQWRkcyBwYXJpbmZlciB0byB0aGUgc3RhdGUuIiwgOmFyZ2xpc3RzIChbbW9kZS10eXBlIHN0YXRlXSl9LCA6c291cmNlICIoZGVmblxuIGFkZC1wYXJpbmZlclxuIFwiQWRkcyBwYXJpbmZlciB0byB0aGUgc3RhdGUuXCJcbiBbbW9kZS10eXBlIHN0YXRlXVxuIChsZXRcbiAgW3s6a2V5cyBbY3Vyc29yLXBvc2l0aW9uIHRleHRdfVxuICAgc3RhdGVcbiAgIFtzdGFydC1wb3MgZW5kLXBvc11cbiAgIGN1cnNvci1wb3NpdGlvblxuICAgW3JvdyBjb2xdXG4gICAocG9zaXRpb24tPnJvdy1jb2wgdGV4dCBzdGFydC1wb3MpXG4gICByZXN1bHRcbiAgIChtb2RlIG1vZGUtdHlwZSB0ZXh0IGNvbCByb3cpXVxuICAoaWZcbiAgIChub3Q9IHN0YXJ0LXBvcyBlbmQtcG9zKVxuICAgKGFzc29jIHN0YXRlIDp0ZXh0ICg6dGV4dCByZXN1bHQpKVxuICAgKGxldFxuICAgIFtwb3MgKHJvdy1jb2wtPnBvc2l0aW9uICg6dGV4dCByZXN1bHQpIHJvdyAoOnggcmVzdWx0KSldXG4gICAgKGFzc29jIHN0YXRlIDp0ZXh0ICg6dGV4dCByZXN1bHQpIDpjdXJzb3ItcG9zaXRpb24gW3BvcyBwb3NdKSkpKSlcbiJ9KSwgdG9kb3MuZGF0YXNjcmlwdCAoezpzeW0gaW5pdCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtdKX0sIDpzb3VyY2UgIihkZWZuIGluaXQgW10gKGQvZGItd2l0aCAoZC9lbXB0eS1kYiBzY2hlbWEpIGNvcmUvdG9kb3MpKVxuIn0gezpzeW0gaW5pdGlhbC1kYiwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgaW5pdGlhbC1kYiAoaW5pdCkpXG4ifSB7OnN5bSBydW4sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbaXRlcmF0aW9uc10pfSwgOnNvdXJjZSAiKGRlZm5cbiBydW5cbiBbaXRlcmF0aW9uc11cbiAobG9vcFxuICBbZGIgaW5pdGlhbC1kYiBjb3VudGVyIDBdXG4gIChpZlxuICAgKD0gY291bnRlciBpdGVyYXRpb25zKVxuICAgZGJcbiAgIChyZWN1ciAodGljayBkYiBjb3VudGVyKSAoaW5jIGNvdW50ZXIpKSkpKVxuIn0pLCBmaWd3aGVlbC5yZXBsLmxvZ2dpbmcgKHs6c3ltIHNldC1sb2ctbGV2ZWwsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbbG9nZ2VyJyBsZXZlbF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBzZXQtbG9nLWxldmVsXG4gW2xvZ2dlcicgbGV2ZWxdXG4gKGlmLWxldFxuICBbbHZsIChnZXQgbG9nLWxldmVscyBsZXZlbCldXG4gIChkb1xuICAgKGRlYnVnIGxvZ2dlcicgKHN0ciBcInNldHRpbmcgbG9nIGxldmVsIHRvIFwiIGxldmVsKSlcbiAgIChpZlxuICAgIChleGlzdHM/IChnb2JqL2dldCBsb2dnZXInIFwic2V0TGV2ZWxcIikpXG4gICAgKC5zZXRMZXZlbCBsb2dnZXInIGx2bClcbiAgICAoZ29vZy5sb2cuc2V0TGV2ZWwgbG9nZ2VyJyBsdmwpKSlcbiAgKHdhcm5pbmdcbiAgIGxvZ2dlcidcbiAgIChzdHJcbiAgICBcIkxvZyBsZXZlbCBcIlxuICAgIChwci1zdHIgbGV2ZWwpXG4gICAgXCIgZG9lc24ndCBleGlzdCBtdXN0IGJlIG9uZSBvZiBcIlxuICAgIChwci1zdHJcbiAgICAgJyhcInNldmVyZVwiIFwid2FybmluZ1wiIFwiaW5mb1wiIFwiY29uZmlnXCIgXCJmaW5lXCIgXCJmaW5lclwiIFwiZmluZXN0XCIpKSkpKSlcbiJ9IHs6c3ltIGNvbnNvbGUtbG9nZ2luZywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtdKX0sIDpzb3VyY2UgIihkZWZuXG4gY29uc29sZS1sb2dnaW5nXG4gW11cbiAod2hlbi1ub3RcbiAgKGdvYmovZ2V0IGdvb2cuZGVidWcuQ29uc29sZSBcImluc3RhbmNlXCIpXG4gIChsZXRcbiAgIFtjIChnb29nLmRlYnVnLkNvbnNvbGUuKV1cbiAgIChkb3RvXG4gICAgKC5nZXRGb3JtYXR0ZXIgYylcbiAgICAoZ29iai9zZXQgXCJzaG93QWJzb2x1dGVUaW1lXCIgZmFsc2UpXG4gICAgKGdvYmovc2V0IFwic2hvd1JlbGF0aXZlVGltZVwiIGZhbHNlKSlcbiAgIChnb2JqL3NldCBnb29nLmRlYnVnLkNvbnNvbGUgXCJpbnN0YW5jZVwiIGMpXG4gICBjKSlcbiAod2hlbi1sZXRcbiAgW2NvbnNvbGUtaW5zdGFuY2UgKGdvYmovZ2V0IGdvb2cuZGVidWcuQ29uc29sZSBcImluc3RhbmNlXCIpXVxuICAoLnNldENhcHR1cmluZyBjb25zb2xlLWluc3RhbmNlIHRydWUpXG4gIHRydWUpKVxuIn0gezpzeW0gZ2V0LWxvZ2dlciwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtubV0pfSwgOnNvdXJjZSAiKGRlZm4gZ2V0LWxvZ2dlciBbbm1dICguY2FsbCBnbG9nL2dldExvZ2dlciBuaWwgbm0pKVxuIn0gezpzeW0gbG9nLWxldmVscywgOm1ldGEge30sIDpzb3VyY2UgIihkZWZcbiBsb2ctbGV2ZWxzXG4gKGludG9cbiAge31cbiAgKG1hcFxuICAgKGp1eHRcbiAgICBzdHJpbmcvbG93ZXItY2FzZVxuICAgIChmbiogW3AxX180MjE1NCNdIChnb2JqL2dldCBMb2dMZXZlbCBwMV9fNDIxNTQjKSkpXG4gICAobWFwIHN0ciAnKFNFVkVSRSBXQVJOSU5HIElORk8gQ09ORklHIEZJTkUgRklORVIgRklORVNUKSkpKSlcbiJ9IHs6c3ltIExvZ0xldmVsLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZm9uY2UgTG9nTGV2ZWwgKG9yIGdvb2cubG9nLkxldmVsIGdvb2cuZGVidWcuTG9nZ2VyLkxldmVsKSlcbiJ9IHs6c3ltIGRlYnVnLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2xvZyBtc2ddKX0sIDpzb3VyY2UgIihkZWZuIGRlYnVnIFtsb2cgbXNnXSAoLmNhbGwgZ2xvZy9sb2cgbmlsIGxvZyBMb2dMZXZlbC5GSU5FU1QgbXNnKSlcbiJ9IHs6c3ltIGxvZy1jb25zb2xlLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZm9uY2UgbG9nLWNvbnNvbGUgKGNvbnNvbGUtbG9nZ2luZykpXG4ifSB7OnN5bSB3YXJuaW5nLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2xvZyBtc2ddKX0sIDpzb3VyY2UgIihkZWZuIHdhcm5pbmcgW2xvZyBtc2ddICguY2FsbCBnbG9nL3dhcm5pbmcgbmlsIGxvZyBtc2cpKVxuIn0gezpzeW0gaW5mbywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtsb2cgbXNnXSl9LCA6c291cmNlICIoZGVmbiBpbmZvIFtsb2cgbXNnXSAoLmNhbGwgZ2xvZy9pbmZvIG5pbCBsb2cgbXNnKSlcbiJ9IHs6c3ltIGZpbmUsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbbG9nIG1zZ10pfSwgOnNvdXJjZSAiKGRlZm4gZmluZSBbbG9nIG1zZ10gKC5jYWxsIGdsb2cvZmluZSBuaWwgbG9nIG1zZykpXG4ifSB7OnN5bSBlcnJvciwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtsb2cgbXNnLWV4XSl9LCA6c291cmNlICIoZGVmbiBlcnJvciBbbG9nIG1zZy1leF0gKC5jYWxsIGdsb2cvZXJyb3IgbmlsIGxvZyBtc2ctZXgpKVxuIn0pLCBkZXZ0b29scy5kZWZhdWx0cyAoezpzeW0ga25vd24tZmVhdHVyZXMsIDptZXRhIHt9LCA6c291cmNlICIoZGVmIGtub3duLWZlYXR1cmVzIChkZWxheSBbOmZvcm1hdHRlcnMgOmhpbnRzIDphc3luY10pKVxuIn0gezpzeW0gZGVmYXVsdC1mZWF0dXJlcywgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgZGVmYXVsdC1mZWF0dXJlcyAoZGVsYXkgWzpmb3JtYXR0ZXJzXSkpXG4ifSB7OnN5bSBmZWF0dXJlLWdyb3VwcywgOm1ldGEge30sIDpzb3VyY2UgIihkZWZcbiBmZWF0dXJlLWdyb3Vwc1xuIChkZWxheSB7OmFsbCBAa25vd24tZmVhdHVyZXMsIDpkZWZhdWx0IEBkZWZhdWx0LWZlYXR1cmVzfSkpXG4ifSB7OnN5bSBjb25maWcsIDptZXRhIHt9LCA6c291cmNlICIoZGVmXG4gY29uZmlnXG4gKGRlbGF5XG4gIHs6c3RhbmRhbG9uZS10eXBlLXN0eWxlIChjc3MgKGQvdHlwZS1vdXRsaW5lLXN0eWxlKSksXG4gICA6YnlwYXNzLWF2YWlsYWJpbGl0eS1jaGVja3MgZmFsc2UsXG4gICA6bWF4LW51bWJlci1ib2R5LWl0ZW1zIDEwMCxcbiAgIDpzeW1ib2wtc3R5bGUgKGNzcyAoc3RyIFwiY29sb3I6IFwiIChuYW1lZC1jb2xvciA6c3ltYm9sKSBcIjtcIikpLFxuICAgOm1ldGEtcmVmZXJlbmNlLXRhZyBbOnNwYW4gOm1ldGEtcmVmZXJlbmNlLXN0eWxlXSxcbiAgIDpuaWwtc3R5bGUgKGNzcyAoc3RyIFwiY29sb3I6IFwiIChuYW1lZC1jb2xvciA6bmlsKSBcIjtcIikpLFxuICAgOmluc3RhbmNlLWN1c3RvbS1wcmludGluZy10YWdcbiAgIFs6c3BhbiA6aW5zdGFuY2UtY3VzdG9tLXByaW50aW5nLXN0eWxlXSxcbiAgIDp0eXBlLWhlYWRlci1iYWNrZ3JvdW5kXG4gICAoZC9nZXQtaW5zdGFuY2UtdHlwZS1oZWFkZXItYmFja2dyb3VuZC1tYXJrdXApLFxuICAgOmluc3RhbmNlLXZhbHVlLXNlcGFyYXRvciBcIlwiLFxuICAgOmJvZHktcHJlLWhhbmRsZXIgbmlsLFxuICAgOmluaXRpYWwtaGllcmFyY2h5LWRlcHRoLWJ1ZGdldCAoZGVjIDIwKSxcbiAgIDpib2R5LWl0ZW1zLW1vcmUtdGFnIFs6c3BhbiA6Ym9keS1pdGVtcy1tb3JlLXN0eWxlXSxcbiAgIDpsaW5lLWluZGV4LXNlcGFyYXRvciBcIlwiLFxuICAgOnN1cHByZXNzLXByZWxvYWQtaW5zdGFsbCBmYWxzZSxcbiAgIDpuZXctbGluZS1zdHJpbmctcmVwbGFjZXIgXCLihrVcIixcbiAgIDpib2R5LWZpZWxkLXRkMy1zdHlsZSAoY3NzIFwidmVydGljYWwtYWxpZ246IHRvcDtcIiBcInBhZGRpbmc6IDA7XCIpLFxuICAgOm1vcmUtZmllbGRzLXN5bWJvbCBcIuKAplwiLFxuICAgOmJvZHktZmllbGQtdmFsdWUtc3BhY2VyXG4gICAoc3BhbiAoY3NzIChzdHIgXCJjb2xvcjpcIiAobmFtZWQtY29sb3IgOmZpZWxkLXNwYWNlcikgXCI7XCIpKSBcIj1cIiksXG4gICA6bWV0YS1yZWZlcmVuY2Utc3R5bGVcbiAgIChjc3NcbiAgICAoc3RyIFwiYmFja2dyb3VuZC1jb2xvcjpcIiAobmFtZWQtY29sb3IgOm1ldGEpIFwiO1wiKVxuICAgIFwiYm9yZGVyLXJhZGl1czogMCAycHggMnB4IDA7XCIpLFxuICAgOnByb3RvY29sLWJhY2tncm91bmQgKGQvZ2V0LXByb3RvY29sLWJhY2tncm91bmQtbWFya3VwKSxcbiAgIDpwcm90b2NvbHMtaWNvbiAoZC9pY29uIFwi4oqiXCIgKG5hbWVkLWNvbG9yIDpwcm90b2NvbCkpLFxuICAgOnN0YW5kYXJkLW9sLW5vLW1hcmdpbi10YWcgWzpvbCA6c3RhbmRhcmQtb2wtbm8tbWFyZ2luLXN0eWxlXSxcbiAgIDpzeW1ib2wtdGFnIFs6c3BhbiA6c3ltYm9sLXN0eWxlXSxcbiAgIDpyZW5kZXIta2V5d29yZHMgdHJ1ZSxcbiAgIDpmbi1oZWFkZXItdGFnIFs6c3BhbiA6Zm4taGVhZGVyLXN0eWxlXSxcbiAgIDprZXl3b3JkLXRhZyBbOnNwYW4gOmtleXdvcmQtc3R5bGVdLFxuICAgOmhlYWRlci1zdHlsZSAoY3NzIFwid2hpdGUtc3BhY2U6IG5vd3JhcDtcIiksXG4gICA6cmVuZGVyLW1ldGFzIHRydWUsXG4gICA6ZmllbGRzLWhlYWRlci10YWcgWzpzcGFuIDpmaWVsZHMtaGVhZGVyLXN0eWxlXSxcbiAgIDpmbi1hcmdzLXN0eWxlIChjc3MgKHN0ciBcImNvbG9yOiBcIiAobmFtZWQtY29sb3IgOmZuLWFyZ3MpIFwiO1wiKSksXG4gICA6bWF4LWluc3RhbmNlLWN1c3RvbS1wcmludGluZy1sZXZlbCAyLFxuICAgOmV4cGFuZGFibGUtaW5uZXItc3R5bGUgKGNzcyBcIm1hcmdpbi1sZWZ0OiAtM3B4O1wiKSxcbiAgIDp0YWJsZSBcInRhYmxlXCIsXG4gICA6Zm4taGVhZGVyLXN0eWxlIChjc3MpLFxuICAgOmJvZHktaXRlbXMtbW9yZS1sYWJlbCBcIm1vcmXigKZcIixcbiAgIDpmbi1uYW1lLXN0eWxlXG4gICAoY3NzIChzdHIgXCJjb2xvcjogXCIgKG5hbWVkLWNvbG9yIDpmbikgXCI7XCIpIFwibWFyZ2luLXJpZ2h0OiAycHg7XCIpLFxuICAgOm5pbC10YWcgWzpzcGFuIDpuaWwtc3R5bGVdLFxuICAgOmluc3RhbmNlLWhlYWRlci1zdHlsZVxuICAgKGNzcyAoZC90eXBlLW91dGxpbmUtc3R5bGUpIFwicG9zaXRpb246cmVsYXRpdmU7XCIpLFxuICAgOmZsb2F0LXRhZyBbOnNwYW4gOmZsb2F0LXN0eWxlXSxcbiAgIDpwcm90b2NvbC1ucy1uYW1lLXRhZyBbOnNwYW4gOnByb3RvY29sLW5zLW5hbWUtc3R5bGVdLFxuICAgOmZhc3QtcHJvdG9jb2wtc3R5bGVcbiAgIChjc3NcbiAgICAoZC9nZXQtY29tbW9uLXByb3RvY29sLXN0eWxlKVxuICAgIChzdHIgXCJjb2xvcjogXCIgKG5hbWVkLWNvbG9yIDpmYXN0LXByb3RvY29sKSBcIjtcIikpLFxuICAgOnByb3RvY29sLW1ldGhvZC1hcml0aWVzLW1vcmUtc3ltYm9sIFwi4oCmXCIsXG4gICA6aGFzLWJvZHktcHJlLWhhbmRsZXIgbmlsLFxuICAgOmluZGV4LXRhZyBbOnNwYW4gOmluZGV4LXN0eWxlXSxcbiAgIDpyZXN0LXN5bWJvbCBcIiAmIFwiLFxuICAgOnByb3RvY29sLW5hbWUtdGFnIFs6c3BhbiA6cHJvdG9jb2wtbmFtZS1zdHlsZV0sXG4gICA6ZmxvYXQtaW5maW5pdHktdGFnIFs6c3BhbiA6ZmxvYXQtaW5maW5pdHktc3R5bGVdLFxuICAgOmluc3RhbmNlLWhlYWRlci1iYWNrZ3JvdW5kIG5pbCxcbiAgIDpib2R5LXRhZyBbOnNwYW4gOmJvZHktc3R5bGVdLFxuICAgOmNsanMtbGFuZC10YWcgWzpzcGFuIDpjbGpzLWxhbmQtc3R5bGVdLFxuICAgOm1heC1saXN0LXByb3RvY29scyA1LFxuICAgOnN0cmluZy1hYmJyZXZpYXRpb24tbWFya2VyIFwiIOKApiBcIixcbiAgIDptYXgtaGVhZGVyLWVsZW1lbnRzIDUsXG4gICA6bmF0aXZlLWljb24gKGQvaWNvbiBcImpzXCIgKG5hbWVkLWNvbG9yIDpuYXRpdmUpKSxcbiAgIDppbnN0YW5jZS1ib2R5LWZpZWxkcy10YWJsZS10YWdcbiAgIFs6dGFibGUgOmluc3RhbmNlLWJvZHktZmllbGRzLXRhYmxlLXN0eWxlXSxcbiAgIDpyZW5kZXItc3ltYm9scyB0cnVlLFxuICAgOnByb3RvY29sLW1ldGhvZC1uYW1lLXN0eWxlXG4gICAoY3NzXG4gICAgXCJtYXJnaW4tcmlnaHQ6IDZweDtcIlxuICAgIChzdHIgXCJjb2xvcjogXCIgKG5hbWVkLWNvbG9yIDpwcm90b2NvbCkgXCIgO1wiKSksXG4gICA6dHlwZS1uYW1lLXRhZyBbOnNwYW4gOnR5cGUtbmFtZS1zdHlsZV0sXG4gICA6bGlzdC1zZXBhcmF0b3IgXCIgXCIsXG4gICA6dGQgXCJ0ZFwiLFxuICAgOmhlYWRlci1maWVsZC12YWx1ZS1zcGFjZXJcbiAgIChzcGFuIChjc3MgKHN0ciBcImNvbG9yOlwiIChuYW1lZC1jb2xvciA6ZmllbGQtc3BhY2VyKSBcIjtcIikpIFwiPVwiKSxcbiAgIDpsaSBcImxpXCIsXG4gICA6ZmFzdC1wcm90b2NvbC10YWcgWzpzcGFuIDpmYXN0LXByb3RvY29sLXN0eWxlXSxcbiAgIDpyZW5kZXItc3RyaW5ncyB0cnVlLFxuICAgOnN0YW5kYWxvbmUtdHlwZS10YWcgWzpzcGFuIDpzdGFuZGFsb25lLXR5cGUtc3R5bGVdLFxuICAgOnByb3RvY29sLW5zLW5hbWUtc3R5bGUgKGNzcyAoc3RyIFwiY29sb3I6IFwiIChuYW1lZC1jb2xvciA6bnMpIFwiO1wiKSksXG4gICA6dHlwZS1oZWFkZXItdGFnIFs6c3BhbiA6dHlwZS1oZWFkZXItc3R5bGVdLFxuICAgOmNsanMtbGFuZC1zdHlsZVxuICAgKGNzc1xuICAgIChzdHIgXCJiYWNrZ3JvdW5kLWNvbG9yOiBcIiAobmFtZWQtY29sb3IgOnNpZ25hdHVyZS1iYWNrZ3JvdW5kKSBcIjtcIilcbiAgICAoc3RyIFwiY29sb3I6IFwiIChuYW1lZC1jb2xvciA6YmFzZS10ZXh0LWNvbG9yKSBcIjtcIilcbiAgICBcImJvcmRlci1yYWRpdXM6IDJweDtcIiksXG4gICA6bGFtYmRhLWljb24gKGQvaWNvbiBcIs67XCIgKG5hbWVkLWNvbG9yIDpsYW1iZGEpKSxcbiAgIDpsaXN0LXN0eWxlIChjc3MpLFxuICAgOnNhbml0eS1oaW50LW1pbi1sZW5ndGggMTI4LFxuICAgOnJlbmRlci1mdW5jdGlvbnMgdHJ1ZSxcbiAgIDpmaWVsZHMtaGVhZGVyLW9wZW4tc3ltYm9sIFwiXCIsXG4gICA6Ym9keS1maWVsZC12YWx1ZS1zdHlsZSAoY3NzIFwibWFyZ2luLWxlZnQ6IDZweDtcIiksXG4gICA6aGVhZGVyLXBvc3QtaGFuZGxlciBuaWwsXG4gICA6aGVhZGVyLXByZS1oYW5kbGVyIG5pbCxcbiAgIDp0ciBcInRyXCIsXG4gICA6Ym9keS1pdGVtcy1tb3JlLXN0eWxlXG4gICAoY3NzXG4gICAgKHN0ciBcImJhY2tncm91bmQtY29sb3I6XCIgKG5hbWVkLWNvbG9yIDptb3JlLWJhY2tncm91bmQpIFwiO1wiKVxuICAgIFwibWluLXdpZHRoOiA1MHB4O1wiXG4gICAgXCJkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XCJcbiAgICAoc3RyIFwiY29sb3I6IFwiIChuYW1lZC1jb2xvciA6bW9yZSkgXCI7XCIpXG4gICAgXCJjdXJzb3I6IHBvaW50ZXI7XCJcbiAgICBcImxpbmUtaGVpZ2h0OiAxNHB4O1wiXG4gICAgXCJmb250LXNpemU6IDEwcHg7XCJcbiAgICBcImJvcmRlci1yYWRpdXM6IDJweDtcIlxuICAgIFwicGFkZGluZzogMHB4IDRweCAwcHggNHB4O1wiXG4gICAgXCJtYXJnaW46IDFweCAwcHggMHB4IDBweDtcIlxuICAgIFwiLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTtcIiksXG4gICA6cGx1cy1zeW1ib2wgXCIrXCIsXG4gICA6Zm4tcHJlZml4LXN0eWxlIChjc3MpLFxuICAgOmFyZ3Mtb3Blbi1zeW1ib2wgXCJbXCIsXG4gICA6ZXhwYW5kZWQtc3RyaW5nLXN0eWxlXG4gICAoY3NzXG4gICAgXCJwYWRkaW5nOiAwcHggMTJweCAwcHggMTJweDtcIlxuICAgIChzdHIgXCJjb2xvcjogXCIgKG5hbWVkLWNvbG9yIDpzdHJpbmcpIFwiO1wiKVxuICAgIFwid2hpdGUtc3BhY2U6IHByZTtcIlxuICAgIChzdHJcbiAgICAgXCJib3JkZXItdG9wOiAxcHggc29saWQgXCJcbiAgICAgKG5hbWVkLWNvbG9yIDpleHBhbmRlZC1zdHJpbmctYm9yZGVyKVxuICAgICBcIjtcIilcbiAgICBcImJvcmRlci1yYWRpdXM6IDFweDtcIlxuICAgIFwibWFyZ2luOiAwcHggMHB4IDJweCAwcHg7XCJcbiAgICAoc3RyXG4gICAgIFwiYmFja2dyb3VuZC1jb2xvcjogXCJcbiAgICAgKG5hbWVkLWNvbG9yIDpleHBhbmRlZC1zdHJpbmctYmFja2dyb3VuZClcbiAgICAgXCI7XCIpKSxcbiAgIDpmbi1uYW1lLXRhZyBbOnNwYW4gOmZuLW5hbWUtc3R5bGVdLFxuICAgOmhlYWRlci1maWVsZC12YWx1ZS10YWcgWzpzcGFuIDpoZWFkZXItZmllbGQtdmFsdWUtc3R5bGVdLFxuICAgOnN0YW5kYXJkLWxpLXN0eWxlXG4gICAoY3NzIFwibWFyZ2luLWxlZnQ6IDBweDtcIiAoZC9nZXQtYm9keS1saW5lLWNvbW1vbi1zdHlsZSkpLFxuICAgOmZpZWxkcy1pY29uIChkL2ljb24gXCLiiItcIiAobmFtZWQtY29sb3IgOmZpZWxkKSksXG4gICA6Ym9keS1zdHlsZVxuICAgKGNzc1xuICAgIFwiZGlzcGxheTogaW5saW5lLWJsb2NrO1wiXG4gICAgXCJwYWRkaW5nOiAzcHggMTJweDtcIlxuICAgIChzdHIgXCJib3JkZXItdG9wOiAycHggc29saWQgXCIgKG5hbWVkLWNvbG9yIDpib2R5LWJvcmRlcikgXCI7XCIpXG4gICAgXCJtYXJnaW46IDFweDtcIlxuICAgIFwibWFyZ2luLXRvcDogMHB4O1wiXG4gICAgKHN0clxuICAgICBcImJhY2tncm91bmQtY29sb3I6IFwiXG4gICAgIChuYW1lZC1jb2xvciA6c2lnbmF0dXJlLWJhY2tncm91bmQpXG4gICAgIFwiO1wiKSksXG4gICA6dHlwZS13cmFwcGVyLXRhZyBbOnNwYW4gOnR5cGUtd3JhcHBlci1zdHlsZV0sXG4gICA6c3RhbmRhcmQtbGktdGFnIFs6bGkgOnN0YW5kYXJkLWxpLXN0eWxlXSxcbiAgIDp0eXBlLXdyYXBwZXItc3R5bGVcbiAgIChjc3NcbiAgICBcInBvc2l0aW9uOiByZWxhdGl2ZTtcIlxuICAgIFwicGFkZGluZy1sZWZ0OiAxcHg7XCJcbiAgICBcImJvcmRlci1yYWRpdXM6IDJweDtcIiksXG4gICA6cmVuZGVyLWJvb2xzIHRydWUsXG4gICA6ZHEgXCJcXFwiXCIsXG4gICA6ZmllbGRzLWhlYWRlci1uby1maWVsZHMtc3ltYm9sIChzcGFuIDpoZWFkZXItZmllbGQtbmFtZS1zdHlsZSBcIuKIhVwiKSxcbiAgIDpuaWwtbGFiZWwgXCJuaWxcIixcbiAgIDpsaXN0LW9wZW4tc3ltYm9sIFwiXCIsXG4gICA6Ym9keS1maWVsZC10ZDItc3R5bGUgKGNzcyBcInZlcnRpY2FsLWFsaWduOiB0b3A7XCIgXCJwYWRkaW5nOiAwO1wiKSxcbiAgIDp0eXBlLWhlYWRlci1zdHlsZVxuICAgKGNzcyAoZC9nZXQtY29tbW9uLXR5cGUtaGVhZGVyLXN0eWxlKSBcImJvcmRlci1yYWRpdXM6IDJweDtcIiksXG4gICA6aGVhZGVyLWZpZWxkLXNlcGFyYXRvciBcIiBcIixcbiAgIDpib2R5LWZpZWxkLXRkMy10YWcgWzp0ZCA6Ym9keS1maWVsZC10ZDMtc3R5bGVdLFxuICAgOnN0YW5kYXJkLW9sLW5vLW1hcmdpbi1zdHlsZVxuICAgKGNzc1xuICAgIFwibGlzdC1zdHlsZS10eXBlOiBub25lO1wiXG4gICAgXCJwYWRkaW5nLWxlZnQ6IDBweDtcIlxuICAgIFwibWFyZ2luLXRvcDogMHB4O1wiXG4gICAgXCJtYXJnaW4tYm90dG9tOiAwcHg7XCJcbiAgICBcIm1hcmdpbi1sZWZ0OiAwcHg7XCIpLFxuICAgOmluc3RhbmNlLWN1c3RvbS1wcmludGluZy13cmFwcGVyLXN0eWxlXG4gICAoY3NzIFwicG9zaXRpb246IHJlbGF0aXZlO1wiIFwiYm9yZGVyLXJhZGl1czogMnB4O1wiKSxcbiAgIDptb3JlLXN5bWJvbCBcIuKAplwiLFxuICAgOnN0cmluZy10YWcgWzpzcGFuIDpzdHJpbmctc3R5bGVdLFxuICAgOm1ldGEtd3JhcHBlci10YWcgWzpzcGFuIDptZXRhLXdyYXBwZXItc3R5bGVdLFxuICAgOm1ldGhvZC1pY29uIChkL2ljb24gXCJtXCIgKG5hbWVkLWNvbG9yIDptZXRob2QpKSxcbiAgIDptYXgtcHJvdG9jb2wtbWV0aG9kLWFyaXRpZXMtbGlzdCAzLFxuICAgOm1pbi1leHBhbmRhYmxlLXNlcXVhYmxlLWNvdW50LWZvci13ZWxsLWtub3duLXR5cGVzIDQsXG4gICA6YmFzaXMtaWNvbiAoZC9pY29uIFwizrJcIiAobmFtZWQtY29sb3IgOmJhc2lzKSksXG4gICA6Zm4tYXJncy10YWcgWzpzcGFuIDpmbi1hcmdzLXN0eWxlXSxcbiAgIDpzdGFuZGFyZC1vbC1zdHlsZVxuICAgKGNzc1xuICAgIFwibGlzdC1zdHlsZS10eXBlOiBub25lO1wiXG4gICAgXCJwYWRkaW5nLWxlZnQ6IDBweDtcIlxuICAgIFwibWFyZ2luLXRvcDogMHB4O1wiXG4gICAgXCJtYXJnaW4tYm90dG9tOiAwcHg7XCJcbiAgICBcIm1hcmdpbi1sZWZ0OiAwcHg7XCIpLFxuICAgOmZpbGUtcmVhZGVyIG5pbCxcbiAgIDpib29sLXRhZyBbOnNwYW4gOmJvb2wtc3R5bGVdLFxuICAgOmV4cGFuZGFibGUtaW5uZXItdGFnIFs6c3BhbiA6ZXhwYW5kYWJsZS1pbm5lci1zdHlsZV0sXG4gICA6Zm4tcHJlZml4LXRhZyBbOnNwYW4gOmZuLXByZWZpeC1zdHlsZV0sXG4gICA6ZmxvYXQtc3R5bGUgKGNzcyAoc3RyIFwiY29sb3I6IFwiIChuYW1lZC1jb2xvciA6ZmxvYXQpIFwiO1wiKSksXG4gICA6dHlwZS1iYXNpcy1pdGVtLXRhZyBbOnNwYW4gOnR5cGUtYmFzaXMtaXRlbS1zdHlsZV0sXG4gICA6dHlwZS1iYXNpcy1pdGVtLXN0eWxlXG4gICAoY3NzIChzdHIgXCJjb2xvcjogXCIgKG5hbWVkLWNvbG9yIDpiYXNpcykgXCI7XCIpIFwibWFyZ2luLXJpZ2h0OiA2cHg7XCIpLFxuICAgOmRpdiBcImRpdlwiLFxuICAgOmZuLW5zLW5hbWUtdGFnIFs6c3BhbiA6Zm4tbnMtbmFtZS1zdHlsZV0sXG4gICA6Ym9keS1wb3N0LWhhbmRsZXIgbmlsLFxuICAgOm1vcmUtbWFya2VyIFwi4oCmXCIsXG4gICA6aGVhZGVyLXRhZyBbOnNwYW4gOmhlYWRlci1zdHlsZV0sXG4gICA6Ym9keS1maWVsZC1uYW1lLXRhZyBbOnNwYW4gOmJvZHktZmllbGQtbmFtZS1zdHlsZV0sXG4gICA6ZXhwYW5kZWQtc3RyaW5nLXRhZyBbOnNwYW4gOmV4cGFuZGVkLXN0cmluZy1zdHlsZV0sXG4gICA6Ym9vbC1zdHlsZSAoY3NzIChzdHIgXCJjb2xvcjogXCIgKG5hbWVkLWNvbG9yIDpib29sKSBcIjtcIikpLFxuICAgOmRlZmF1bHQtZW52ZWxvcGUtc3R5bGUgKGNzcyksXG4gICA6cHJvdG9jb2wtbW9yZS10YWcgWzpzcGFuIDpwcm90b2NvbC1tb3JlLXN0eWxlXSxcbiAgIDpzdHJpbmctc3R5bGUgKGNzcyAoc3RyIFwiY29sb3I6IFwiIChuYW1lZC1jb2xvciA6c3RyaW5nKSBcIjtcIikpLFxuICAgOmJvZHktZmllbGQtbmFtZS1zdHlsZVxuICAgKGNzcyAoc3RyIFwiY29sb3I6IFwiIChuYW1lZC1jb2xvciA6ZmllbGQpIFwiO1wiKSksXG4gICA6bWV0YS1ib2R5LXRhZyBbOnNwYW4gOm1ldGEtYm9keS1zdHlsZV0sXG4gICA6aW5zdGFuY2UtY3VzdG9tLXByaW50aW5nLWJhY2tncm91bmRcbiAgIChkL2dldC1jdXN0b20tcHJpbnRpbmctYmFja2dyb3VuZC1tYXJrdXApLFxuICAgOmludGVnZXItc3R5bGUgKGNzcyAoc3RyIFwiY29sb3I6IFwiIChuYW1lZC1jb2xvciA6aW50ZWdlcikgXCI7XCIpKSxcbiAgIDpuYXRpdmUtcmVmZXJlbmNlLWJhY2tncm91bmRcbiAgIChkL2dldC1uYXRpdmUtcmVmZXJlbmNlLWJhY2tncm91bmQtbWFya3VwKSxcbiAgIDpoZWFkZXItZmllbGQtbmFtZS1zdHlsZVxuICAgKGNzcyAoc3RyIFwiY29sb3I6IFwiIChuYW1lZC1jb2xvciA6ZmllbGQpIFwiO1wiKSksXG4gICA6ZGVmYXVsdC1lbnZlbG9wZS1oZWFkZXIgXCLwn5OoXCIsXG4gICA6aW5zdGFuY2UtdHlwZS1oZWFkZXItc3R5bGVcbiAgIChjc3NcbiAgICAoZC9nZXQtY29tbW9uLXR5cGUtaGVhZGVyLXN0eWxlKVxuICAgIFwiYm9yZGVyLXJhZGl1czogMnB4IDAgMCAycHg7XCIpLFxuICAgOm9sIFwib2xcIixcbiAgIDppbnN0YW5jZS1jdXN0b20tcHJpbnRpbmctc3R5bGVcbiAgIChjc3MgXCJwb3NpdGlvbjogcmVsYXRpdmU7XCIgXCJwYWRkaW5nOiAwIDJweCAwIDRweDtcIiksXG4gICA6ZmxvYXQtbmFuLXN0eWxlIChjc3MgKHN0ciBcImNvbG9yOiBcIiAobmFtZWQtY29sb3IgOmZsb2F0LW5hbikgXCI7XCIpKSxcbiAgIDpmbG9hdC1uYW4tdGFnIFs6c3BhbiA6ZmxvYXQtbmFuLXN0eWxlXSxcbiAgIDptaW4tZXhwYW5kYWJsZS1zZXF1YWJsZS1jb3VudCAwLFxuICAgOmZpZWxkcy1oZWFkZXItc3R5bGUgKGNzcyBcInBhZGRpbmc6IDBweCAzcHg7XCIpLFxuICAgOmluc3RhbmNlLXR5cGUtaGVhZGVyLXRhZyBbOnNwYW4gOmluc3RhbmNlLXR5cGUtaGVhZGVyLXN0eWxlXSxcbiAgIDpzcGFjZXIgXCIgXCIsXG4gICA6Ym9keS1maWVsZC10ZDEtc3R5bGVcbiAgIChjc3MgXCJ2ZXJ0aWNhbC1hbGlnbjogdG9wO1wiIFwicGFkZGluZzogMDtcIiBcInBhZGRpbmctcmlnaHQ6IDRweDtcIiksXG4gICA6Ym9keS1maWVsZC10ci10YWcgWzp0ciA6Ym9keS1maWVsZC10ci1zdHlsZV0sXG4gICA6aGVhZGVyLWZpZWxkLW5hbWUtdGFnIFs6c3BhbiA6aGVhZGVyLWZpZWxkLW5hbWUtc3R5bGVdLFxuICAgOnR5cGUtbmFtZS1zdHlsZSAoY3NzIFwicGFkZGluZy1yaWdodDogNHB4O1wiKSxcbiAgIDpmbG9hdC1pbmZpbml0eS1zdHlsZVxuICAgKGNzcyAoc3RyIFwiY29sb3I6IFwiIChuYW1lZC1jb2xvciA6ZmxvYXQtaW5maW5pdHkpIFwiO1wiKSksXG4gICA6c3RhbmRhcmQtbGktbm8tbWFyZ2luLXRhZyBbOmxpIDpzdGFuZGFyZC1saS1uby1tYXJnaW4tc3R5bGVdLFxuICAgOmxpc3QtdGFnIFs6c3BhbiA6bGlzdC1zdHlsZV0sXG4gICA6aW5zdGFuY2UtYm9keS1maWVsZHMtdGFibGUtc3R5bGVcbiAgIChjc3NcbiAgICBcImJvcmRlci1zcGFjaW5nOiAwO1wiXG4gICAgXCJib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlO1wiXG4gICAgXCJtYXJnaW4tYm90dG9tOiAtMnB4O1wiXG4gICAgXCJkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XCIpLFxuICAgOmJvZHktZmllbGQtdGQxLXRhZyBbOnRkIDpib2R5LWZpZWxkLXRkMS1zdHlsZV0sXG4gICA6ZGlzYWJsZS1hZHZhbmNlZC1tb2RlLWNoZWNrIGZhbHNlLFxuICAgOnN0YW5kYXJkLWxpLW5vLW1hcmdpbi1zdHlsZVxuICAgKGNzcyBcIm1hcmdpbi1sZWZ0OiAwcHg7XCIgKGQvZ2V0LWJvZHktbGluZS1jb21tb24tc3R5bGUpKSxcbiAgIDpzbG93LXByb3RvY29sLXN0eWxlXG4gICAoY3NzXG4gICAgKGQvZ2V0LWNvbW1vbi1wcm90b2NvbC1zdHlsZSlcbiAgICAoc3RyIFwiY29sb3I6IFwiIChuYW1lZC1jb2xvciA6c2xvdy1wcm90b2NvbCkgXCI7XCIpKSxcbiAgIDpyZW5kZXItdHlwZXMgdHJ1ZSxcbiAgIDphcmdzLWNsb3NlLXN5bWJvbCBcIl1cIixcbiAgIDpzdHJpbmctcG9zdGZpeC1saW1pdCAyMCxcbiAgIDpkaXNhYmxlLWNsanMtZm4tZm9ybWF0dGluZyBmYWxzZSxcbiAgIDppdGVtLXN0eWxlXG4gICAoY3NzXG4gICAgXCJkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XCJcbiAgICBcIndoaXRlLXNwYWNlOiBub3dyYXA7XCJcbiAgICBcImJvcmRlci1sZWZ0OiAycHggc29saWQgcmdiYSgxMDAsIDEwMCwgMTAwLCAwLjIpO1wiXG4gICAgXCJwYWRkaW5nOiAwcHggNHB4IDBweCA0cHg7XCJcbiAgICBcIm1hcmdpbjogMXB4IDBweCAwcHggMHB4O1wiKSxcbiAgIDpwcm90b2NvbC1tZXRob2QtYXJpdGllcy1saXN0LWhlYWRlci1zZXBhcmF0b3IgXCIgXCIsXG4gICA6cHJvdG9jb2wtbWV0aG9kLXRhZyBbOnNwYW4gOnByb3RvY29sLW1ldGhvZC1zdHlsZV0sXG4gICA6aW5kZXgtc3R5bGVcbiAgIChjc3NcbiAgICBcIm1pbi13aWR0aDogNTBweDtcIlxuICAgIFwiZGlzcGxheTogaW5saW5lLWJsb2NrO1wiXG4gICAgXCJ0ZXh0LWFsaWduOiByaWdodDtcIlxuICAgIFwidmVydGljYWwtYWxpZ246IHRvcDtcIlxuICAgIChzdHIgXCJiYWNrZ3JvdW5kLWNvbG9yOiBcIiAobmFtZWQtY29sb3IgOmluZGV4LWJhY2tncm91bmQpIFwiO1wiKVxuICAgIChzdHIgXCJjb2xvcjogXCIgKG5hbWVkLWNvbG9yIDppbmRleCkgXCI7XCIpXG4gICAgXCJvcGFjaXR5OiAwLjU7XCJcbiAgICBcIm1hcmdpbi1yaWdodDogM3B4O1wiXG4gICAgXCJwYWRkaW5nOiAwcHggNHB4IDBweCA0cHg7XCJcbiAgICBcIm1hcmdpbjogMXB4IDBweCAwcHggMHB4O1wiXG4gICAgXCItd2Via2l0LXVzZXItc2VsZWN0OiBub25lO1wiKSxcbiAgIDpsaXN0LWNsb3NlLXN5bWJvbCBcIlwiLFxuICAgOnJlbmRlci1udW1iZXJzIHRydWUsXG4gICA6Ym9keS1maWVsZC12YWx1ZS10YWcgWzpzcGFuIDpib2R5LWZpZWxkLXZhbHVlLXN0eWxlXSxcbiAgIDplbXB0eS1iYXNpcy1zeW1ib2xcbiAgIChzcGFuIChjc3MpIDpiYXNpcy1pY29uIChzcGFuIDp0eXBlLWJhc2lzLWl0ZW0tc3R5bGUgXCLiiIVcIikpLFxuICAgOmZuLWljb24gKGQvaWNvbiBcImZuXCIgKG5hbWVkLWNvbG9yIDpmbikpLFxuICAgOmludGVnZXItdGFnIFs6c3BhbiA6aW50ZWdlci1zdHlsZV0sXG4gICA6cHJvdG9jb2xzLWhlYWRlci10YWcgWzpzcGFuIDpwcm90b2NvbHMtaGVhZGVyLXN0eWxlXSxcbiAgIDpwcm90b2NvbC1tZXRob2QtbmFtZS10YWcgWzpzcGFuIDpwcm90b2NvbC1tZXRob2QtbmFtZS1zdHlsZV0sXG4gICA6aXRlbS10YWcgWzpzcGFuIDppdGVtLXN0eWxlXSxcbiAgIDppbnN0YW5jZS12YWx1ZS10YWcgWzpzcGFuIDppbnN0YW5jZS12YWx1ZS1zdHlsZV0sXG4gICA6ZXhwYW5kYWJsZS13cmFwcGVyLXN0eWxlIChjc3MpLFxuICAgOmV4cGFuZGFibGUtc3R5bGUgKGNzcyBcIndoaXRlLXNwYWNlOiBub3dyYXA7XCIgXCJwYWRkaW5nLWxlZnQ6IDNweDtcIiksXG4gICA6d2VsbC1rbm93bi10eXBlc1xuICAgI3tcImNsanMuY29yZS9WYWxTZXFcIlxuICAgICBcImNsanMuY29yZS9BcnJheU5vZGVTZXFcIlxuICAgICBcImNsanMuY29yZS9Db25zXCJcbiAgICAgXCJjbGpzLmNvcmUvRVM2SXRlcmF0b3JTZXFcIlxuICAgICBcImNsanMuY29yZS9JbnRlZ2VyUmFuZ2VcIlxuICAgICBcImNsanMuY29yZS9MaXN0XCJcbiAgICAgXCJjbGpzLmNvcmUvUGVyc2lzdGVudEFycmF5TWFwU2VxXCJcbiAgICAgXCJjbGpzLmNvcmUvU3ltYm9sXCJcbiAgICAgXCJjbGpzLmNvcmUvUGVyc2lzdGVudEhhc2hNYXBcIlxuICAgICBcImNsanMuY29yZS9TdWJ2ZWNcIlxuICAgICBcImNsanMuY29yZS9FbXB0eUxpc3RcIlxuICAgICBcImNsanMuY29yZS9CbGFja05vZGVcIlxuICAgICBcImNsanMuY29yZS9QZXJzaXN0ZW50QXJyYXlNYXBcIlxuICAgICBcImNsanMuY29yZS9MYXp5VHJhbnNmb3JtZXJcIlxuICAgICBcImNsanMuY29yZS9QZXJzaXN0ZW50VHJlZU1hcFNlcVwiXG4gICAgIFwiY2xqcy5jb3JlL01hcEVudHJ5XCJcbiAgICAgXCJjbGpzLmNvcmUvUGVyc2lzdGVudFF1ZXVlU2VxXCJcbiAgICAgXCJjbGpzLmNvcmUvS2V5d29yZFwiXG4gICAgIFwiY2xqcy5jb3JlL1JhbmdlXCJcbiAgICAgXCJjbGpzLmNvcmUvVVVJRFwiXG4gICAgIFwiY2xqcy5jb3JlL0luZGV4ZWRTZXFcIlxuICAgICBcImNsanMuY29yZS9LZXlTZXFcIlxuICAgICBcImNsanMuY29yZS9SU2VxXCJcbiAgICAgXCJjbGpzLmNvcmUvT2JqTWFwXCJcbiAgICAgXCJjbGpzLmNvcmUvUGVyc2lzdGVudFZlY3RvclwiXG4gICAgIFwiY2xqcy5jb3JlL1BlcnNpc3RlbnRUcmVlU2V0XCJcbiAgICAgXCJjbGpzLmNvcmUvRWR1Y3Rpb25cIlxuICAgICBcImNsanMuY29yZS9Ob2RlU2VxXCJcbiAgICAgXCJjbGpzLmNvcmUvUmVkTm9kZVwiXG4gICAgIFwiY2xqcy5jb3JlL0V4Y2VwdGlvbkluZm9cIlxuICAgICBcImNsanMuY29yZS9QZXJzaXN0ZW50SGFzaFNldFwiXG4gICAgIFwiY2xqcy5jb3JlL1BlcnNpc3RlbnRUcmVlTWFwXCJcbiAgICAgXCJjbGpzLmNvcmUvTGF6eVNlcVwiXG4gICAgIFwiY2xqcy5jb3JlL0NodW5rZWRTZXFcIlxuICAgICBcImNsanMuY29yZS9DaHVua2VkQ29uc1wiXG4gICAgIFwiY2xqcy5jb3JlL1RhZ2dlZExpdGVyYWxcIn0sXG4gICA6Zm4tbXVsdGktYXJpdHktYXJncy1pbmRlbnQtc3R5bGUgKGNzcyBcInZpc2liaWxpdHk6IGhpZGRlbjtcIiksXG4gICA6dHlwZS1yZWYtc3R5bGUgKGNzcyBcInBvc2l0aW9uOiByZWxhdGl2ZTtcIiksXG4gICA6Y2lyY3VsYXItcmVmLWljb24gKGQvaWNvbiBcIuKInlwiIChuYW1lZC1jb2xvciA6Y2lyY3VsYXItcmVmKSA6c2xpbSksXG4gICA6dHlwZS1iYXNpcy1zdHlsZSAoY3NzIFwibWFyZ2luLXJpZ2h0OiAzcHg7XCIpLFxuICAgOnN0YW5kYXJkLW9sLXRhZyBbOm9sIDpzdGFuZGFyZC1vbC1zdHlsZV0sXG4gICA6Zm4tbnMtbmFtZS1zdHlsZSAoY3NzIChzdHIgXCJjb2xvcjogXCIgKG5hbWVkLWNvbG9yIDpucykgXCI7XCIpKSxcbiAgIDpjaXJjdWxhci1yZWZlcmVuY2UtYm9keS10YWcgWzpzcGFuIDpjaXJjdWxhci1yZWZlcmVuY2UtYm9keS1zdHlsZV0sXG4gICA6aGFzLWJvZHktcG9zdC1oYW5kbGVyIG5pbCxcbiAgIDpuYXRpdmUtcmVmZXJlbmNlLXRhZyBbOnNwYW4gOm5hdGl2ZS1yZWZlcmVuY2Utc3R5bGVdLFxuICAgOmFsaWduZWQtbGktdGFnIFs6bGkgOmFsaWduZWQtbGktc3R5bGVdLFxuICAgOm5hdGl2ZS1yZWZlcmVuY2Utd3JhcHBlci1zdHlsZVxuICAgKGNzcyBcInBvc2l0aW9uOiByZWxhdGl2ZTtcIiBcImRpc3BsYXk6IGlubGluZS1mbGV4O1wiKSxcbiAgIDpyZW5kZXItaW5zdGFuY2VzIHRydWUsXG4gICA6ZXhwYW5kYWJsZS1zeW1ib2wgXCJcIixcbiAgIDpmbi1tdWx0aS1hcml0eS1hcmdzLWluZGVudC10YWdcbiAgIFs6c3BhbiA6Zm4tbXVsdGktYXJpdHktYXJncy1pbmRlbnQtc3R5bGVdLFxuICAgOmV4cGFuZGFibGUtdGFnIFs6c3BhbiA6ZXhwYW5kYWJsZS1zdHlsZV0sXG4gICA6cHJvdG9jb2wtbWV0aG9kLWFyaXRpZXMtaGVhZGVyLXRhZ1xuICAgWzpzcGFuIDpwcm90b2NvbC1tZXRob2QtYXJpdGllcy1oZWFkZXItc3R5bGVdLFxuICAgOm1heC1pbnN0YW5jZS1oZWFkZXItZmllbGRzIDMsXG4gICA6dHlwZS1yZWYtdGFnIFs6c3BhbiA6dHlwZS1yZWYtc3R5bGVdLFxuICAgOm1heC1wcmludC1sZXZlbCAyLFxuICAgOm1ldGEtd3JhcHBlci1zdHlsZVxuICAgKGNzc1xuICAgIChzdHIgXCJib3gtc2hhZG93OiAwcHggMHB4IDBweCAxcHggXCIgKG5hbWVkLWNvbG9yIDptZXRhKSBcIiBpbnNldDtcIilcbiAgICBcIm1hcmdpbi10b3A6IDFweDtcIlxuICAgIFwiYm9yZGVyLXJhZGl1czogMnB4O1wiKSxcbiAgIDptdWx0aS1hcml0eS1zeW1ib2wgXCLigKZcIixcbiAgIDpyZW5kZXItbmlscyB0cnVlLFxuICAgOm1ldGEtaGVhZGVyLXRhZyBbOnNwYW4gOm1ldGEtc3R5bGVdLFxuICAgOnByaW50LWNvbmZpZy1vdmVycmlkZXMgZmFsc2UsXG4gICA6c2xvdy1wcm90b2NvbC10YWcgWzpzcGFuIDpzbG93LXByb3RvY29sLXN0eWxlXSxcbiAgIDpoZWFkZXItZmllbGQtdGFnIFs6c3BhbiA6aGVhZGVyLWZpZWxkLXN0eWxlXSxcbiAgIDptZXRhLWJvZHktc3R5bGVcbiAgIChjc3NcbiAgICAoc3RyIFwiYmFja2dyb3VuZC1jb2xvcjogXCIgKG5hbWVkLWNvbG9yIDptZXRhIDAuMSkgXCI7XCIpXG4gICAgKHN0ciBcImJveC1zaGFkb3c6IDBweCAwcHggMHB4IDFweCBcIiAobmFtZWQtY29sb3IgOm1ldGEpIFwiIGluc2V0O1wiKVxuICAgIFwicG9zaXRpb246IHJlbGF0aXZlO1wiXG4gICAgXCJ0b3A6IC0xcHg7XCJcbiAgICBcInBhZGRpbmc6IDNweCAxMnB4O1wiXG4gICAgXCJib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMnB4O1wiKSxcbiAgIDpuYXRpdmUtcmVmZXJlbmNlLXdyYXBwZXItdGFnXG4gICBbOnNwYW4gOm5hdGl2ZS1yZWZlcmVuY2Utd3JhcHBlci1zdHlsZV0sXG4gICA6ZmllbGRzLWhlYWRlci1jbG9zZS1zeW1ib2wgXCJcIixcbiAgIDpzdHJpbmctcHJlZml4LWxpbWl0IDIwLFxuICAgOm5hdGl2ZS1yZWZlcmVuY2Utc3R5bGVcbiAgIChjc3NcbiAgICBcInBhZGRpbmc6IDBweCAzcHg7XCJcbiAgICBcIm1hcmdpbjogLTRweCAwcHggLTJweDtcIlxuICAgIFwicG9zaXRpb246IHJlbGF0aXZlO1wiXG4gICAgXCJ0b3A6IDFweDtcIiksXG4gICA6aW5zdGFuY2UtY3VzdG9tLXByaW50aW5nLXdyYXBwZXItdGFnXG4gICBbOnNwYW4gOmluc3RhbmNlLWN1c3RvbS1wcmludGluZy13cmFwcGVyLXN0eWxlXSxcbiAgIDpib2R5LWZpZWxkLXRkMi10YWcgWzp0ZCA6Ym9keS1maWVsZC10ZDItc3R5bGVdLFxuICAgOnR5cGUtYmFzaXMtdGFnIFs6c3BhbiA6dHlwZS1iYXNpcy1zdHlsZV0sXG4gICA6ZmVhdHVyZXMtdG8taW5zdGFsbCA6ZGVmYXVsdCxcbiAgIDphbGlnbmVkLWxpLXN0eWxlXG4gICAoY3NzIFwibWFyZ2luLWxlZnQ6IDBweDtcIiAoZC9nZXQtYm9keS1saW5lLWNvbW1vbi1zdHlsZSkpLFxuICAgOmRlZmF1bHQtZW52ZWxvcGUtdGFnIFs6c3BhbiA6ZGVmYXVsdC1lbnZlbG9wZS1zdHlsZV0sXG4gICA6cHJvdG9jb2wtbW9yZS1zdHlsZSAoY3NzIFwiZm9udC1zaXplOiA4cHg7XCIgXCJwb3NpdGlvbjogcmVsYXRpdmU7XCIpLFxuICAgOmluc3RhbmNlLWhlYWRlci10YWcgWzpzcGFuIDppbnN0YW5jZS1oZWFkZXItc3R5bGVdLFxuICAgOm5zLWljb24gKGQvaWNvbiBcImluXCIgKG5hbWVkLWNvbG9yIDpucykpLFxuICAgOnByb3RvY29sLW5hbWUtc3R5bGUgKGNzcyBcInBvc2l0aW9uOiByZWxhdGl2ZTtcIiksXG4gICA6Ym9keS1saW5lLW1heC1wcmludC1sZXZlbCAzLFxuICAgOmNpcmN1bGFyLXJlZmVyZW5jZS10YWcgWzpzcGFuIDpjaXJjdWxhci1yZWZlcmVuY2Utd3JhcHBlci1zdHlsZV0sXG4gICA6a2V5d29yZC1zdHlsZSAoY3NzIChzdHIgXCJjb2xvcjogXCIgKG5hbWVkLWNvbG9yIDprZXl3b3JkKSBcIjtcIikpLFxuICAgOmhlYWRlci1leHBhbmRlci1zeW1ib2wgKHNwYW4gKGNzcykgXCJ+XCIpLFxuICAgOnNwYW4gXCJzcGFuXCIsXG4gICA6bWV0YS1zdHlsZVxuICAgKGNzc1xuICAgIChzdHIgXCJjb2xvcjogXCIgKG5hbWVkLWNvbG9yIDptZXRhLXRleHQpIFwiO1wiKVxuICAgIFwicGFkZGluZzogMHB4IDNweDtcIlxuICAgIFwiLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTtcIil9KSlcbiJ9KSwgY2xqcy5jb3JlLmFzeW5jLmltcGwuaW9jLWhlbHBlcnMgKHs6c3ltIEVYQ0VQVElPTi1GUkFNRVMsIDptZXRhIHt9LCA6c291cmNlICIoZGVmIEVYQ0VQVElPTi1GUkFNRVMgNClcbiJ9IHs6c3ltIFNUQVRFLUlEWCwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgU1RBVEUtSURYIDEpXG4ifSB7OnN5bSBhc2V0LW9iamVjdCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFthcnIgaWR4IG9dKX0sIDpzb3VyY2UgIihkZWZuIGFzZXQtb2JqZWN0IFthcnIgaWR4IG9dIChhZ2V0IGFyciBpZHggbykpXG4ifSB7OnN5bSBydW4tc3RhdGUtbWFjaGluZS13cmFwcGVkLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3N0YXRlXSl9LCA6c291cmNlICIoZGVmblxuIHJ1bi1zdGF0ZS1tYWNoaW5lLXdyYXBwZWRcbiBbc3RhdGVdXG4gKHRyeVxuICAocnVuLXN0YXRlLW1hY2hpbmUgc3RhdGUpXG4gIChjYXRjaFxuICAganMvT2JqZWN0XG4gICBleFxuICAgKGltcGwvY2xvc2UhIChhZ2V0LW9iamVjdCBzdGF0ZSBVU0VSLVNUQVJULUlEWCkpXG4gICAodGhyb3cgZXgpKSkpXG4ifSB7OnN5bSBGTi1JRFgsIDptZXRhIHt9LCA6c291cmNlICIoZGVmIEZOLUlEWCAwKVxuIn0gezpzeW0gYWdldC1vYmplY3QsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbYXJyIGlkeF0pfSwgOnNvdXJjZSAiKGRlZm4gYWdldC1vYmplY3QgW2FyciBpZHhdIChhZ2V0IGFyciBpZHgpKVxuIn0gezpzeW0gcmV0dXJuLWNoYW4sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbc3RhdGUgdmFsdWVdKX0sIDpzb3VyY2UgIihkZWZuXG4gcmV0dXJuLWNoYW5cbiBbc3RhdGUgdmFsdWVdXG4gKGxldFxuICBbYyAoYWdldCBzdGF0ZSBVU0VSLVNUQVJULUlEWCldXG4gICh3aGVuLW5vdCAobmlsPyB2YWx1ZSkgKGltcGwvcHV0ISBjIHZhbHVlIChmbi1oYW5kbGVyIChmbiBbXSBuaWwpKSkpXG4gIChpbXBsL2Nsb3NlISBjKVxuICBjKSlcbiJ9IHs6c3ltIEJJTkRJTkdTLUlEWCwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgQklORElOR1MtSURYIDMpXG4ifSB7OnN5bSBDVVJSRU5ULUVYQ0VQVElPTiwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgQ1VSUkVOVC1FWENFUFRJT04gNSlcbiJ9IHs6c3ltIHJ1bi1zdGF0ZS1tYWNoaW5lLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3N0YXRlXSl9LCA6c291cmNlICIoZGVmbiBydW4tc3RhdGUtbWFjaGluZSBbc3RhdGVdICgoYWdldC1vYmplY3Qgc3RhdGUgRk4tSURYKSBzdGF0ZSkpXG4ifSB7OnN5bSBmaW5pc2hlZD8sIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRydWUgaWYgdGhlIG1hY2hpbmUgaXMgaW4gYSBmaW5pc2hlZCBzdGF0ZSIsIDphcmdsaXN0cyAoW3N0YXRlLWFycmF5XSl9LCA6c291cmNlICIoZGVmblxuIGZpbmlzaGVkP1xuIFwiUmV0dXJucyB0cnVlIGlmIHRoZSBtYWNoaW5lIGlzIGluIGEgZmluaXNoZWQgc3RhdGVcIlxuIFtzdGF0ZS1hcnJheV1cbiAoa2V5d29yZC1pZGVudGljYWw/IChhZ2V0IHN0YXRlLWFycmF5IFNUQVRFLUlEWCkgOmZpbmlzaGVkKSlcbiJ9IHs6c3ltIFVTRVItU1RBUlQtSURYLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiBVU0VSLVNUQVJULUlEWCA2KVxuIn0gezpzeW0gcHV0ISwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtzdGF0ZSBibGsgYyB2YWxdKX0sIDpzb3VyY2UgIihkZWZuXG4gcHV0IVxuIFtzdGF0ZSBibGsgYyB2YWxdXG4gKGlmLWxldFxuICBbY2JcbiAgIChpbXBsL3B1dCFcbiAgICBjXG4gICAgdmFsXG4gICAgKGZuLWhhbmRsZXJcbiAgICAgKGZuXG4gICAgICBbcmV0LXZhbF1cbiAgICAgIChpb2MvYXNldC1hbGwhIHN0YXRlIFZBTFVFLUlEWCByZXQtdmFsIFNUQVRFLUlEWCBibGspXG4gICAgICAocnVuLXN0YXRlLW1hY2hpbmUtd3JhcHBlZCBzdGF0ZSkpKSldXG4gIChkbyAoaW9jL2FzZXQtYWxsISBzdGF0ZSBWQUxVRS1JRFggQGNiIFNUQVRFLUlEWCBibGspIDpyZWN1cilcbiAgbmlsKSlcbiJ9IHs6c3ltIHRha2UhLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3N0YXRlIGJsayBjXSl9LCA6c291cmNlICIoZGVmblxuIHRha2UhXG4gW3N0YXRlIGJsayBjXVxuIChpZi1sZXRcbiAgW2NiXG4gICAoaW1wbC90YWtlIVxuICAgIGNcbiAgICAoZm4taGFuZGxlclxuICAgICAoZm5cbiAgICAgIFt4XVxuICAgICAgKGlvYy9hc2V0LWFsbCEgc3RhdGUgVkFMVUUtSURYIHggU1RBVEUtSURYIGJsaylcbiAgICAgIChydW4tc3RhdGUtbWFjaGluZS13cmFwcGVkIHN0YXRlKSkpKV1cbiAgKGRvIChpb2MvYXNldC1hbGwhIHN0YXRlIFZBTFVFLUlEWCBAY2IgU1RBVEUtSURYIGJsaykgOnJlY3VyKVxuICBuaWwpKVxuIn0gezpzeW0gVkFMVUUtSURYLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiBWQUxVRS1JRFggMilcbiJ9KSwgZHluYWRvYy5hbGlhc2VzICh7OnN5bSBjaGFuLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiBjaGFuIGFzeW5jL3Byb21pc2UtY2hhbilcbiJ9IHs6c3ltIHB1dCEsIDptZXRhIHt9LCA6c291cmNlICIoZGVmIHB1dCEgYXN5bmMvcHV0ISlcbiJ9IHs6c3ltIDwhISwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgPCEhICM/KDpjbGogYXN5bmMvPCEhIDpjbGpzIGlkZW50aXR5KSlcbiJ9KSwgY2xqcy5hbmFseXplci5pbXBsICh7OnN5bSBBTllfU1lNLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiBBTllfU1lNICdhbnkpXG4ifSB7OnN5bSBCT09MRUFOX09SX1NFUSwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgQk9PTEVBTl9PUl9TRVEgJyN7c2VxIGJvb2xlYW59KVxuIn0gezpzeW0gQk9PTEVBTl9TWU0sIDptZXRhIHt9LCA6c291cmNlICIoZGVmIEJPT0xFQU5fU1lNICdib29sZWFuKVxuIn0gezpzeW0gSUdOT1JFX1NZTSwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgSUdOT1JFX1NZTSAnaWdub3JlKVxuIn0gezpzeW0gTk9UX05BVElWRSwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgTk9UX05BVElWRSAnI3tjbGogbm90LW5hdGl2ZX0pXG4ifSksIGRldnRvb2xzLmNvcmUgKHs6c3ltIGlzLWZlYXR1cmUtYXZhaWxhYmxlPywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtmZWF0dXJlXSl9LCA6c291cmNlICIoZGVmblxuIGlzLWZlYXR1cmUtYXZhaWxhYmxlP1xuIFtmZWF0dXJlXVxuIChjYXNlXG4gIGZlYXR1cmVcbiAgOmZvcm1hdHRlcnNcbiAgKGZvcm1hdHRlcnMvYXZhaWxhYmxlPylcbiAgOmhpbnRzXG4gIChoaW50cy9hdmFpbGFibGU/KVxuICA6YXN5bmNcbiAgKGFzeW5jL2F2YWlsYWJsZT8pKSlcbiJ9IHs6c3ltIGdldC1wcmVmcywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtdKX0sIDpzb3VyY2UgIihkZWZuIGdldC1wcmVmcyBbXSAocHJlZnMvZ2V0LXByZWZzKSlcbiJ9IHs6c3ltIHNldC1wcmVmISwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtwcmVmIHZhbF0pfSwgOnNvdXJjZSAiKGRlZm4gc2V0LXByZWYhIFtwcmVmIHZhbF0gKHByZWZzL3NldC1wcmVmISBwcmVmIHZhbCkpXG4ifSB7OnN5bSBpbnN0YWxsISwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgW1tdIFtmZWF0dXJlcy1kZXNjXV19LCA6c291cmNlICIoZGVmblxuIGluc3RhbGwhXG4gKFtdIChpbnN0YWxsISAocHJlZnMvcHJlZiA6ZmVhdHVyZXMtdG8taW5zdGFsbCkpKVxuIChbZmVhdHVyZXMtZGVzY11cbiAgKGlmXG4gICAodW5kZXItYWR2YW5jZWQtYnVpbGQ/KVxuICAgKGRpc3BsYXktYWR2YW5jZWQtYnVpbGQtd2FybmluZy1pZi1uZWVkZWQhKVxuICAgKGxldFxuICAgIFtmZWF0dXJlcyAocmVzb2x2ZS1mZWF0dXJlcyEgZmVhdHVyZXMtZGVzYyBAZmVhdHVyZS1ncm91cHMpXVxuICAgIChkaXNwbGF5LWJhbm5lci1pZi1uZWVkZWQhIGZlYXR1cmVzIEBmZWF0dXJlLWdyb3VwcylcbiAgICAocHJpbnQtY29uZmlnLW92ZXJyaWRlcy1pZi1yZXF1ZXN0ZWQhXG4gICAgIFwiY29uZmlnIG92ZXJyaWRlcyBwcmlvciBpbnN0YWxsOlxcblwiKVxuICAgIChpbnN0YWxsLWZlYXR1cmUhXG4gICAgIDpmb3JtYXR0ZXJzXG4gICAgIGZlYXR1cmVzXG4gICAgIGlzLWZlYXR1cmUtYXZhaWxhYmxlP1xuICAgICBmb3JtYXR0ZXJzL2luc3RhbGwhKVxuICAgIChpbnN0YWxsLWZlYXR1cmUhXG4gICAgIDpoaW50c1xuICAgICBmZWF0dXJlc1xuICAgICBpcy1mZWF0dXJlLWF2YWlsYWJsZT9cbiAgICAgaGludHMvaW5zdGFsbCEpXG4gICAgKGluc3RhbGwtZmVhdHVyZSFcbiAgICAgOmFzeW5jXG4gICAgIGZlYXR1cmVzXG4gICAgIGlzLWZlYXR1cmUtYXZhaWxhYmxlP1xuICAgICBhc3luYy9pbnN0YWxsISkpKSkpXG4ifSB7OnN5bSBzZXQtcHJlZnMhLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW25ldy1wcmVmc10pfSwgOnNvdXJjZSAiKGRlZm4gc2V0LXByZWZzISBbbmV3LXByZWZzXSAocHJlZnMvc2V0LXByZWZzISBuZXctcHJlZnMpKVxuIn0gezpzeW0gYXZhaWxhYmxlPywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgW1tdIFtmZWF0dXJlcy1kZXNjXV19LCA6c291cmNlICIoZGVmblxuIGF2YWlsYWJsZT9cbiAoW10gKGF2YWlsYWJsZT8gKHByZWZzL3ByZWYgOmZlYXR1cmVzLXRvLWluc3RhbGwpKSlcbiAoW2ZlYXR1cmVzLWRlc2NdXG4gIChsZXRcbiAgIFtmZWF0dXJlcyAocmVzb2x2ZS1mZWF0dXJlcyEgZmVhdHVyZXMtZGVzYyBAZmVhdHVyZS1ncm91cHMpXVxuICAgKGlmXG4gICAgKGVtcHR5PyBmZWF0dXJlcylcbiAgICBmYWxzZVxuICAgIChldmVyeT8gaXMtZmVhdHVyZS1hdmFpbGFibGU/IGZlYXR1cmVzKSkpKSlcbiJ9IHs6c3ltIGluc3RhbGxlZD8sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIFtbXSBbZmVhdHVyZXMtZGVzY11dfSwgOnNvdXJjZSAiKGRlZm5cbiBpbnN0YWxsZWQ/XG4gKFtdIChpbnN0YWxsZWQ/IChwcmVmcy9wcmVmIDpmZWF0dXJlcy10by1pbnN0YWxsKSkpXG4gKFtmZWF0dXJlcy1kZXNjXVxuICAobGV0XG4gICBbZmVhdHVyZXMgKHJlc29sdmUtZmVhdHVyZXMhIGZlYXR1cmVzLWRlc2MgQGZlYXR1cmUtZ3JvdXBzKV1cbiAgIChpZlxuICAgIChlbXB0eT8gZmVhdHVyZXMpXG4gICAgZmFsc2VcbiAgICAoZXZlcnk/IGlzLWZlYXR1cmUtaW5zdGFsbGVkPyBmZWF0dXJlcykpKSkpXG4ifSB7OnN5bSB1bmluc3RhbGwhLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW10pfSwgOnNvdXJjZSAiKGRlZm5cbiB1bmluc3RhbGwhXG4gW11cbiAoZm9ybWF0dGVycy91bmluc3RhbGwhKVxuIChoaW50cy91bmluc3RhbGwhKVxuIChhc3luYy91bmluc3RhbGwhKSlcbiJ9IHs6c3ltIGlzLWZlYXR1cmUtaW5zdGFsbGVkPywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtmZWF0dXJlXSl9LCA6c291cmNlICIoZGVmblxuIGlzLWZlYXR1cmUtaW5zdGFsbGVkP1xuIFtmZWF0dXJlXVxuIChjYXNlXG4gIGZlYXR1cmVcbiAgOmZvcm1hdHRlcnNcbiAgKGZvcm1hdHRlcnMvaW5zdGFsbGVkPylcbiAgOmhpbnRzXG4gIChoaW50cy9pbnN0YWxsZWQ/KVxuICA6YXN5bmNcbiAgKGFzeW5jL2luc3RhbGxlZD8pKSlcbiJ9KSwgY2xqcy5zcGVjLnRlc3QuYWxwaGEgKHs6c3ltIGdldC1lbnYsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbXSl9LCA6c291cmNlICIoZGVmbiBnZXQtZW52IFtdIHs6dWEtcHJvZHVjdCAoZ2V0LXVhLXByb2R1Y3QpfSlcbiJ9IHs6c3ltIGRpc3RpbmN0LWJ5LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyBbW2YgY29sbF1dfSwgOnNvdXJjZSAiKGRlZm5cbiBkaXN0aW5jdC1ieVxuIChbZiBjb2xsXVxuICAobGV0XG4gICBbc3RlcFxuICAgIChmblxuICAgICBzdGVwXG4gICAgIFt4cyBzZWVuXVxuICAgICAobGF6eS1zZXFcbiAgICAgICgoZm5cbiAgICAgICAgW1t4IDphcyB4c10gc2Vlbl1cbiAgICAgICAgKHdoZW4tbGV0XG4gICAgICAgICBbcyAoc2VxIHhzKV1cbiAgICAgICAgIChsZXRcbiAgICAgICAgICBbdiAoZiB4KV1cbiAgICAgICAgICAoaWZcbiAgICAgICAgICAgKGNvbnRhaW5zPyBzZWVuIHYpXG4gICAgICAgICAgIChyZWN1ciAocmVzdCBzKSBzZWVuKVxuICAgICAgICAgICAoY29ucyB4IChzdGVwIChyZXN0IHMpIChjb25qIHNlZW4gdikpKSkpKSlcbiAgICAgICB4c1xuICAgICAgIHNlZW4pKSldXG4gICAoc3RlcCBjb2xsICN7fSkpKSlcbiJ9IHs6c3ltIHN1bW1hcml6ZS1yZXN1bHRzLCA6bWV0YSB7OmRvYyAiR2l2ZW4gYSBjb2xsZWN0aW9uIG9mIGNoZWNrLXJlc3VsdHMsIGUuZy4gZnJvbSAnY2hlY2snLCBwcmV0dHlcbnByaW50cyB0aGUgc3VtbWFyeS1yZXN1bHQgKGRlZmF1bHQgYWJicmV2LXJlc3VsdCkgb2YgZWFjaC5cblxuUmV0dXJucyBhIG1hcCB3aXRoIDp0b3RhbCwgdGhlIHRvdGFsIG51bWJlciBvZiByZXN1bHRzLCBwbHVzIGFcbmtleSB3aXRoIGEgY291bnQgZm9yIGVhY2ggZGlmZmVyZW50IDp0eXBlIG9mIHJlc3VsdC4iLCA6YXJnbGlzdHMgW1tjaGVjay1yZXN1bHRzXSBbY2hlY2stcmVzdWx0cyBzdW1tYXJ5LXJlc3VsdF1dfSwgOnNvdXJjZSAiKGRlZm5cbiBzdW1tYXJpemUtcmVzdWx0c1xuIFwiR2l2ZW4gYSBjb2xsZWN0aW9uIG9mIGNoZWNrLXJlc3VsdHMsIGUuZy4gZnJvbSAnY2hlY2snLCBwcmV0dHlcXG5wcmludHMgdGhlIHN1bW1hcnktcmVzdWx0IChkZWZhdWx0IGFiYnJldi1yZXN1bHQpIG9mIGVhY2guXFxuXFxuUmV0dXJucyBhIG1hcCB3aXRoIDp0b3RhbCwgdGhlIHRvdGFsIG51bWJlciBvZiByZXN1bHRzLCBwbHVzIGFcXG5rZXkgd2l0aCBhIGNvdW50IGZvciBlYWNoIGRpZmZlcmVudCA6dHlwZSBvZiByZXN1bHQuXCJcbiAoW2NoZWNrLXJlc3VsdHNdIChzdW1tYXJpemUtcmVzdWx0cyBjaGVjay1yZXN1bHRzIGFiYnJldi1yZXN1bHQpKVxuIChbY2hlY2stcmVzdWx0cyBzdW1tYXJ5LXJlc3VsdF1cbiAgKHJlZHVjZVxuICAgKGZuXG4gICAgW3N1bW1hcnkgcmVzdWx0XVxuICAgIChwcC9wcHJpbnQgKHN1bW1hcnktcmVzdWx0IHJlc3VsdCkpXG4gICAgKC0+XG4gICAgIHN1bW1hcnlcbiAgICAgKHVwZGF0ZSA6dG90YWwgaW5jKVxuICAgICAodXBkYXRlIChyZXN1bHQtdHlwZSByZXN1bHQpIChmbmlsIGluYyAwKSkpKVxuICAgezp0b3RhbCAwfVxuICAgY2hlY2stcmVzdWx0cykpKVxuIn0gezpzeW0gaW5zdHJ1bWVudGFibGUtc3ltcywgOm1ldGEgezpkb2MgIkdpdmVuIGFuIG9wdHMgbWFwIGFzIHBlciBpbnN0cnVtZW50LCByZXR1cm5zIHRoZSBzZXQgb2Ygc3ltc1xudGhhdCBjYW4gYmUgaW5zdHJ1bWVudGVkLiIsIDphcmdsaXN0cyBbW10gW29wdHNdXX0sIDpzb3VyY2UgIihkZWZuXG4gaW5zdHJ1bWVudGFibGUtc3ltc1xuIFwiR2l2ZW4gYW4gb3B0cyBtYXAgYXMgcGVyIGluc3RydW1lbnQsIHJldHVybnMgdGhlIHNldCBvZiBzeW1zXFxudGhhdCBjYW4gYmUgaW5zdHJ1bWVudGVkLlwiXG4gKFtdIChpbnN0cnVtZW50YWJsZS1zeW1zIG5pbCkpXG4gKFtvcHRzXVxuICAoYXNzZXJ0XG4gICAoZXZlcnk/IGlkZW50PyAoa2V5cyAoOmdlbiBvcHRzKSkpXG4gICBcImluc3RydW1lbnQgOmdlbiBleHBlY3RzIGlkZW50IGtleXNcIilcbiAgKHJlZHVjZVxuICAgaW50b1xuICAgI3t9XG4gICBbKGZpbHRlciBmbi1zcGVjLW5hbWU/IChrZXlzIChzL3JlZ2lzdHJ5KSkpXG4gICAgKGtleXMgKDpzcGVjIG9wdHMpKVxuICAgICg6c3R1YiBvcHRzKVxuICAgIChrZXlzICg6cmVwbGFjZSBvcHRzKSldKSkpXG4ifSB7OnN5bSBnZXQtaG9zdC1wb3J0LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW10pfSwgOnNvdXJjZSAiKGRlZm5cbiBnZXQtaG9zdC1wb3J0XG4gW11cbiAoaWZcbiAgKG5vdD0gXCJicm93c2VyXCIgKnRhcmdldCopXG4gIHt9XG4gIHs6aG9zdCAoLi4ganMvd2luZG93IC1sb2NhdGlvbiAtaG9zdCksXG4gICA6cG9ydCAoLi4ganMvd2luZG93IC1sb2NhdGlvbiAtcG9ydCl9KSlcbiJ9IHs6c3ltIGdldC11YS1wcm9kdWN0LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW10pfSwgOnNvdXJjZSAiKGRlZm5cbiBnZXQtdWEtcHJvZHVjdFxuIFtdXG4gKGlmXG4gIChub3Q9IFwiYnJvd3NlclwiICp0YXJnZXQqKVxuICAoa2V5d29yZCAqdGFyZ2V0KilcbiAgKGNvbmRcbiAgIHByb2R1Y3QvU0FGQVJJXG4gICA6c2FmYXJpXG4gICBwcm9kdWN0L0NIUk9NRVxuICAgOmNocm9tZVxuICAgcHJvZHVjdC9GSVJFRk9YXG4gICA6ZmlyZWZveFxuICAgcHJvZHVjdC9JRVxuICAgOmllKSkpXG4ifSB7OnN5bSAtPnN5bSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmbiAtPnN5bSBbeF0gKEAjJ3MvLT5zeW0geCkpXG4ifSB7OnN5bSBhYmJyZXYtcmVzdWx0LCA6bWV0YSB7OmRvYyAiR2l2ZW4gYSBjaGVjayByZXN1bHQsIHJldHVybnMgYW4gYWJicmV2aWF0ZWQgdmVyc2lvblxuc3VpdGFibGUgZm9yIHN1bW1hcnkgdXNlLiIsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuXG4gYWJicmV2LXJlc3VsdFxuIFwiR2l2ZW4gYSBjaGVjayByZXN1bHQsIHJldHVybnMgYW4gYWJicmV2aWF0ZWQgdmVyc2lvblxcbnN1aXRhYmxlIGZvciBzdW1tYXJ5IHVzZS5cIlxuIFt4XVxuIChpZlxuICAoOmZhaWx1cmUgeClcbiAgKC0+XG4gICAoZGlzc29jIHggOmNsb2p1cmUuc3BlYy50ZXN0LmNoZWNrL3JldClcbiAgICh1cGRhdGUgOnNwZWMgcy9kZXNjcmliZSlcbiAgICh1cGRhdGUgOmZhaWx1cmUgdW53cmFwLWZhaWx1cmUpKVxuICAoZGlzc29jIHggOnNwZWMgOmNsb2p1cmUuc3BlYy50ZXN0LmNoZWNrL29wdHMpKSlcbiJ9IHs6c3ltIHZhbGlkYXRlLWNoZWNrLW9wdHMsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbb3B0c10pfSwgOnNvdXJjZSAiKGRlZm5cbiB2YWxpZGF0ZS1jaGVjay1vcHRzXG4gW29wdHNdXG4gKGFzc2VydFxuICAoZXZlcnk/IGlkZW50PyAoa2V5cyAoOmdlbiBvcHRzKSkpXG4gIFwiY2hlY2sgOmdlbiBleHBlY3RzIGlkZW50IGtleXNcIikpXG4ifSksIGNsb2p1cmUuc3RyaW5nICh7OnN5bSBlbmRzLXdpdGg/LCA6bWV0YSB7OmRvYyAiVHJ1ZSBpZiBzIGVuZHMgd2l0aCBzdWJzdHIuIiwgOmFyZ2xpc3RzIChbcyBzdWJzdHJdKX0sIDpzb3VyY2UgIihkZWZuXG4gZW5kcy13aXRoP1xuIFwiVHJ1ZSBpZiBzIGVuZHMgd2l0aCBzdWJzdHIuXCJcbiBbcyBzdWJzdHJdXG4gKGdzdHJpbmcvZW5kc1dpdGggcyBzdWJzdHIpKVxuIn0gezpzeW0gY2FwaXRhbGl6ZSwgOm1ldGEgezpkb2MgIkNvbnZlcnRzIGZpcnN0IGNoYXJhY3RlciBvZiB0aGUgc3RyaW5nIHRvIHVwcGVyLWNhc2UsIGFsbCBvdGhlclxuICBjaGFyYWN0ZXJzIHRvIGxvd2VyLWNhc2UuIiwgOmFyZ2xpc3RzIChbc10pfSwgOnNvdXJjZSAiKGRlZm5cbiBjYXBpdGFsaXplXG4gXCJDb252ZXJ0cyBmaXJzdCBjaGFyYWN0ZXIgb2YgdGhlIHN0cmluZyB0byB1cHBlci1jYXNlLCBhbGwgb3RoZXJcXG4gIGNoYXJhY3RlcnMgdG8gbG93ZXItY2FzZS5cIlxuIFtzXVxuIChnc3RyaW5nL2NhcGl0YWxpemUgcykpXG4ifSB7OnN5bSByZXZlcnNlLCA6bWV0YSB7OmRvYyAiUmV0dXJucyBzIHdpdGggaXRzIGNoYXJhY3RlcnMgcmV2ZXJzZWQuIiwgOmFyZ2xpc3RzIChbc10pfSwgOnNvdXJjZSAiKGRlZm5cbiByZXZlcnNlXG4gXCJSZXR1cm5zIHMgd2l0aCBpdHMgY2hhcmFjdGVycyByZXZlcnNlZC5cIlxuIFtzXVxuICgtPlxuICAoLnJlcGxhY2UgcyByZS1zdXJyb2dhdGUtcGFpciBcIiQyJDFcIilcbiAgKC4uIChzcGxpdCBcIlwiKSAocmV2ZXJzZSkgKGpvaW4gXCJcIikpKSlcbiJ9IHs6c3ltIGpvaW4sIDptZXRhIHs6ZG9jICJSZXR1cm5zIGEgc3RyaW5nIG9mIGFsbCBlbGVtZW50cyBpbiBjb2xsLCBhcyByZXR1cm5lZCBieSAoc2VxIGNvbGwpLFxuICBzZXBhcmF0ZWQgYnkgYW4gb3B0aW9uYWwgc2VwYXJhdG9yLiIsIDphcmdsaXN0cyBbW2NvbGxdIFtzZXBhcmF0b3IgY29sbF1dfSwgOnNvdXJjZSAiKGRlZm5cbiBqb2luXG4gXCJSZXR1cm5zIGEgc3RyaW5nIG9mIGFsbCBlbGVtZW50cyBpbiBjb2xsLCBhcyByZXR1cm5lZCBieSAoc2VxIGNvbGwpLFxcbiAgc2VwYXJhdGVkIGJ5IGFuIG9wdGlvbmFsIHNlcGFyYXRvci5cIlxuIChbY29sbF1cbiAgKGxvb3BcbiAgIFtzYiAoU3RyaW5nQnVmZmVyLikgY29sbCAoc2VxIGNvbGwpXVxuICAgKGlmLW5vdFxuICAgIChuaWw/IGNvbGwpXG4gICAgKHJlY3VyICguIHNiIChhcHBlbmQgKHN0ciAoZmlyc3QgY29sbCkpKSkgKG5leHQgY29sbCkpXG4gICAgKC50b1N0cmluZyBzYikpKSlcbiAoW3NlcGFyYXRvciBjb2xsXVxuICAobG9vcFxuICAgW3NiIChTdHJpbmdCdWZmZXIuKSBjb2xsIChzZXEgY29sbCldXG4gICAoaWYtbm90XG4gICAgKG5pbD8gY29sbClcbiAgICAoZG9cbiAgICAgKC4gc2IgKGFwcGVuZCAoc3RyIChmaXJzdCBjb2xsKSkpKVxuICAgICAobGV0XG4gICAgICBbY29sbCAobmV4dCBjb2xsKV1cbiAgICAgICh3aGVuLW5vdCAobmlsPyBjb2xsKSAoLiBzYiAoYXBwZW5kIHNlcGFyYXRvcikpKVxuICAgICAgKHJlY3VyIHNiIGNvbGwpKSlcbiAgICAoLnRvU3RyaW5nIHNiKSkpKSlcbiJ9IHs6c3ltIHJlcGxhY2UtZmlyc3QsIDptZXRhIHs6ZG9jICJSZXBsYWNlcyB0aGUgZmlyc3QgaW5zdGFuY2Ugb2YgbWF0Y2ggd2l0aCByZXBsYWNlbWVudCBpbiBzLlxuXG4gICBtYXRjaC9yZXBsYWNlbWVudCBjYW4gYmU6XG5cbiAgIHN0cmluZyAvIHN0cmluZ1xuICAgcGF0dGVybiAvIChzdHJpbmcgb3IgZnVuY3Rpb24gb2YgbWF0Y2gpLlxuXG4gICBTZWUgYWxzbyByZXBsYWNlLlxuXG4gICBUaGUgcmVwbGFjZW1lbnQgaXMgbGl0ZXJhbCAoaS5lLiBub25lIG9mIGl0cyBjaGFyYWN0ZXJzIGFyZSB0cmVhdGVkXG4gICBzcGVjaWFsbHkpIGZvciBhbGwgY2FzZXMgYWJvdmUgZXhjZXB0IHBhdHRlcm4gLyBzdHJpbmcuXG5cbiAgIEZvciBwYXR0ZXJuIC8gc3RyaW5nLCAkMSwgJDIsIGV0Yy4gaW4gdGhlIHJlcGxhY2VtZW50IHN0cmluZyBhcmVcbiAgIHN1YnN0aXR1dGVkIHdpdGggdGhlIHN0cmluZyB0aGF0IG1hdGNoZWQgdGhlIGNvcnJlc3BvbmRpbmdcbiAgIHBhcmVudGhlc2l6ZWQgZ3JvdXAgaW4gdGhlIHBhdHRlcm4uXG5cbiAgIEV4YW1wbGU6XG4gICAoY2xvanVyZS5zdHJpbmcvcmVwbGFjZS1maXJzdCBcInN3YXAgZmlyc3QgdHdvIHdvcmRzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICNcIihcXHcrKShcXHMrKShcXHcrKVwiIFwiJDMkMiQxXCIpXG4gICAtPiBcImZpcnN0IHN3YXAgdHdvIHdvcmRzXCIiLCA6YXJnbGlzdHMgKFtzIG1hdGNoIHJlcGxhY2VtZW50XSl9LCA6c291cmNlICIoZGVmblxuIHJlcGxhY2UtZmlyc3RcbiBcIlJlcGxhY2VzIHRoZSBmaXJzdCBpbnN0YW5jZSBvZiBtYXRjaCB3aXRoIHJlcGxhY2VtZW50IGluIHMuXFxuXFxuICAgbWF0Y2gvcmVwbGFjZW1lbnQgY2FuIGJlOlxcblxcbiAgIHN0cmluZyAvIHN0cmluZ1xcbiAgIHBhdHRlcm4gLyAoc3RyaW5nIG9yIGZ1bmN0aW9uIG9mIG1hdGNoKS5cXG5cXG4gICBTZWUgYWxzbyByZXBsYWNlLlxcblxcbiAgIFRoZSByZXBsYWNlbWVudCBpcyBsaXRlcmFsIChpLmUuIG5vbmUgb2YgaXRzIGNoYXJhY3RlcnMgYXJlIHRyZWF0ZWRcXG4gICBzcGVjaWFsbHkpIGZvciBhbGwgY2FzZXMgYWJvdmUgZXhjZXB0IHBhdHRlcm4gLyBzdHJpbmcuXFxuXFxuICAgRm9yIHBhdHRlcm4gLyBzdHJpbmcsICQxLCAkMiwgZXRjLiBpbiB0aGUgcmVwbGFjZW1lbnQgc3RyaW5nIGFyZVxcbiAgIHN1YnN0aXR1dGVkIHdpdGggdGhlIHN0cmluZyB0aGF0IG1hdGNoZWQgdGhlIGNvcnJlc3BvbmRpbmdcXG4gICBwYXJlbnRoZXNpemVkIGdyb3VwIGluIHRoZSBwYXR0ZXJuLlxcblxcbiAgIEV4YW1wbGU6XFxuICAgKGNsb2p1cmUuc3RyaW5nL3JlcGxhY2UtZmlyc3QgXFxcInN3YXAgZmlyc3QgdHdvIHdvcmRzXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICNcXFwiKFxcXFx3KykoXFxcXHMrKShcXFxcdyspXFxcIiBcXFwiJDMkMiQxXFxcIilcXG4gICAtPiBcXFwiZmlyc3Qgc3dhcCB0d28gd29yZHNcXFwiXCJcbiBbcyBtYXRjaCByZXBsYWNlbWVudF1cbiAoLnJlcGxhY2UgcyBtYXRjaCByZXBsYWNlbWVudCkpXG4ifSB7OnN5bSBzdGFydHMtd2l0aD8sIDptZXRhIHs6ZG9jICJUcnVlIGlmIHMgc3RhcnRzIHdpdGggc3Vic3RyLiIsIDphcmdsaXN0cyAoW3Mgc3Vic3RyXSl9LCA6c291cmNlICIoZGVmblxuIHN0YXJ0cy13aXRoP1xuIFwiVHJ1ZSBpZiBzIHN0YXJ0cyB3aXRoIHN1YnN0ci5cIlxuIFtzIHN1YnN0cl1cbiAoZ3N0cmluZy9zdGFydHNXaXRoIHMgc3Vic3RyKSlcbiJ9IHs6c3ltIGVzY2FwZSwgOm1ldGEgezpkb2MgIlJldHVybiBhIG5ldyBzdHJpbmcsIHVzaW5nIGNtYXAgdG8gZXNjYXBlIGVhY2ggY2hhcmFjdGVyIGNoXG4gICBmcm9tIHMgYXMgZm9sbG93czpcblxuICAgSWYgKGNtYXAgY2gpIGlzIG5pbCwgYXBwZW5kIGNoIHRvIHRoZSBuZXcgc3RyaW5nLlxuICAgSWYgKGNtYXAgY2gpIGlzIG5vbi1uaWwsIGFwcGVuZCAoc3RyIChjbWFwIGNoKSkgaW5zdGVhZC4iLCA6YXJnbGlzdHMgKFtzIGNtYXBdKX0sIDpzb3VyY2UgIihkZWZuXG4gZXNjYXBlXG4gXCJSZXR1cm4gYSBuZXcgc3RyaW5nLCB1c2luZyBjbWFwIHRvIGVzY2FwZSBlYWNoIGNoYXJhY3RlciBjaFxcbiAgIGZyb20gcyBhcyBmb2xsb3dzOlxcblxcbiAgIElmIChjbWFwIGNoKSBpcyBuaWwsIGFwcGVuZCBjaCB0byB0aGUgbmV3IHN0cmluZy5cXG4gICBJZiAoY21hcCBjaCkgaXMgbm9uLW5pbCwgYXBwZW5kIChzdHIgKGNtYXAgY2gpKSBpbnN0ZWFkLlwiXG4gW3MgY21hcF1cbiAobGV0XG4gIFtidWZmZXIgKFN0cmluZ0J1ZmZlci4pIGxlbmd0aCAoLi1sZW5ndGggcyldXG4gIChsb29wXG4gICBbaW5kZXggMF1cbiAgIChpZlxuICAgICg9PSBsZW5ndGggaW5kZXgpXG4gICAgKC4gYnVmZmVyICh0b1N0cmluZykpXG4gICAgKGxldFxuICAgICBbY2ggKC5jaGFyQXQgcyBpbmRleCkgcmVwbGFjZW1lbnQgKGdldCBjbWFwIGNoKV1cbiAgICAgKGlmLW5vdFxuICAgICAgKG5pbD8gcmVwbGFjZW1lbnQpXG4gICAgICAoLmFwcGVuZCBidWZmZXIgKHN0ciByZXBsYWNlbWVudCkpXG4gICAgICAoLmFwcGVuZCBidWZmZXIgY2gpKVxuICAgICAocmVjdXIgKGluYyBpbmRleCkpKSkpKSlcbiJ9IHs6c3ltIGxhc3QtaW5kZXgtb2YsIDptZXRhIHs6ZG9jICJSZXR1cm4gbGFzdCBpbmRleCBvZiB2YWx1ZSAoc3RyaW5nIG9yIGNoYXIpIGluIHMsIG9wdGlvbmFsbHlcbiAgc2VhcmNoaW5nIGJhY2t3YXJkIGZyb20gZnJvbS1pbmRleCBvciBuaWwgaWYgbm90IGZvdW5kLiIsIDphcmdsaXN0cyBbW3MgdmFsdWVdIFtzIHZhbHVlIGZyb20taW5kZXhdXX0sIDpzb3VyY2UgIihkZWZuXG4gbGFzdC1pbmRleC1vZlxuIFwiUmV0dXJuIGxhc3QgaW5kZXggb2YgdmFsdWUgKHN0cmluZyBvciBjaGFyKSBpbiBzLCBvcHRpb25hbGx5XFxuICBzZWFyY2hpbmcgYmFja3dhcmQgZnJvbSBmcm9tLWluZGV4IG9yIG5pbCBpZiBub3QgZm91bmQuXCJcbiAoW3MgdmFsdWVdXG4gIChsZXQgW3Jlc3VsdCAoLmxhc3RJbmRleE9mIHMgdmFsdWUpXSAoaWYgKG5lZz8gcmVzdWx0KSBuaWwgcmVzdWx0KSkpXG4gKFtzIHZhbHVlIGZyb20taW5kZXhdXG4gIChsZXRcbiAgIFtyZXN1bHQgKC5sYXN0SW5kZXhPZiBzIHZhbHVlIGZyb20taW5kZXgpXVxuICAgKGlmIChuZWc/IHJlc3VsdCkgbmlsIHJlc3VsdCkpKSlcbiJ9IHs6c3ltIGluY2x1ZGVzPywgOm1ldGEgezpkb2MgIlRydWUgaWYgcyBpbmNsdWRlcyBzdWJzdHIuIiwgOmFyZ2xpc3RzIChbcyBzdWJzdHJdKX0sIDpzb3VyY2UgIihkZWZuXG4gaW5jbHVkZXM/XG4gXCJUcnVlIGlmIHMgaW5jbHVkZXMgc3Vic3RyLlwiXG4gW3Mgc3Vic3RyXVxuIChnc3RyaW5nL2NvbnRhaW5zIHMgc3Vic3RyKSlcbiJ9IHs6c3ltIHJlcGxhY2UsIDptZXRhIHs6ZG9jICJSZXBsYWNlcyBhbGwgaW5zdGFuY2Ugb2YgbWF0Y2ggd2l0aCByZXBsYWNlbWVudCBpbiBzLlxuXG4gICBtYXRjaC9yZXBsYWNlbWVudCBjYW4gYmU6XG5cbiAgIHN0cmluZyAvIHN0cmluZ1xuICAgcGF0dGVybiAvIChzdHJpbmcgb3IgZnVuY3Rpb24gb2YgbWF0Y2gpLlxuXG4gICBTZWUgYWxzbyByZXBsYWNlLWZpcnN0LlxuXG4gICBUaGUgcmVwbGFjZW1lbnQgaXMgbGl0ZXJhbCAoaS5lLiBub25lIG9mIGl0cyBjaGFyYWN0ZXJzIGFyZSB0cmVhdGVkXG4gICBzcGVjaWFsbHkpIGZvciBhbGwgY2FzZXMgYWJvdmUgZXhjZXB0IHBhdHRlcm4gLyBzdHJpbmcuXG5cbiAgIEZvciBwYXR0ZXJuIC8gc3RyaW5nLCAkMSwgJDIsIGV0Yy4gaW4gdGhlIHJlcGxhY2VtZW50IHN0cmluZyBhcmVcbiAgIHN1YnN0aXR1dGVkIHdpdGggdGhlIHN0cmluZyB0aGF0IG1hdGNoZWQgdGhlIGNvcnJlc3BvbmRpbmdcbiAgIHBhcmVudGhlc2l6ZWQgZ3JvdXAgaW4gdGhlIHBhdHRlcm4uXG5cbiAgIEV4YW1wbGU6XG4gICAoY2xvanVyZS5zdHJpbmcvcmVwbGFjZSBcIkFsbW9zdCBQaWcgTGF0aW5cIiAjXCJcXGIoXFx3KShcXHcrKVxcYlwiIFwiJDIkMWF5XCIpXG4gICAtPiBcImxtb3N0QWF5IGlnUGF5IGF0aW5MYXlcIiIsIDphcmdsaXN0cyAoW3MgbWF0Y2ggcmVwbGFjZW1lbnRdKX0sIDpzb3VyY2UgIihkZWZuXG4gcmVwbGFjZVxuIFwiUmVwbGFjZXMgYWxsIGluc3RhbmNlIG9mIG1hdGNoIHdpdGggcmVwbGFjZW1lbnQgaW4gcy5cXG5cXG4gICBtYXRjaC9yZXBsYWNlbWVudCBjYW4gYmU6XFxuXFxuICAgc3RyaW5nIC8gc3RyaW5nXFxuICAgcGF0dGVybiAvIChzdHJpbmcgb3IgZnVuY3Rpb24gb2YgbWF0Y2gpLlxcblxcbiAgIFNlZSBhbHNvIHJlcGxhY2UtZmlyc3QuXFxuXFxuICAgVGhlIHJlcGxhY2VtZW50IGlzIGxpdGVyYWwgKGkuZS4gbm9uZSBvZiBpdHMgY2hhcmFjdGVycyBhcmUgdHJlYXRlZFxcbiAgIHNwZWNpYWxseSkgZm9yIGFsbCBjYXNlcyBhYm92ZSBleGNlcHQgcGF0dGVybiAvIHN0cmluZy5cXG5cXG4gICBGb3IgcGF0dGVybiAvIHN0cmluZywgJDEsICQyLCBldGMuIGluIHRoZSByZXBsYWNlbWVudCBzdHJpbmcgYXJlXFxuICAgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgc3RyaW5nIHRoYXQgbWF0Y2hlZCB0aGUgY29ycmVzcG9uZGluZ1xcbiAgIHBhcmVudGhlc2l6ZWQgZ3JvdXAgaW4gdGhlIHBhdHRlcm4uXFxuXFxuICAgRXhhbXBsZTpcXG4gICAoY2xvanVyZS5zdHJpbmcvcmVwbGFjZSBcXFwiQWxtb3N0IFBpZyBMYXRpblxcXCIgI1xcXCJcXFxcYihcXFxcdykoXFxcXHcrKVxcXFxiXFxcIiBcXFwiJDIkMWF5XFxcIilcXG4gICAtPiBcXFwibG1vc3RBYXkgaWdQYXkgYXRpbkxheVxcXCJcIlxuIFtzIG1hdGNoIHJlcGxhY2VtZW50XVxuIChjb25kXG4gIChzdHJpbmc/IG1hdGNoKVxuICAoLnJlcGxhY2VcbiAgIHNcbiAgIChqcy9SZWdFeHAuIChnc3RyaW5nL3JlZ0V4cEVzY2FwZSBtYXRjaCkgXCJnXCIpXG4gICByZXBsYWNlbWVudClcbiAgKGluc3RhbmNlPyBqcy9SZWdFeHAgbWF0Y2gpXG4gIChpZlxuICAgKHN0cmluZz8gcmVwbGFjZW1lbnQpXG4gICAocmVwbGFjZS1hbGwgcyBtYXRjaCByZXBsYWNlbWVudClcbiAgIChyZXBsYWNlLWFsbCBzIG1hdGNoIChyZXBsYWNlLXdpdGggcmVwbGFjZW1lbnQpKSlcbiAgOmVsc2VcbiAgKHRocm93IChzdHIgXCJJbnZhbGlkIG1hdGNoIGFyZzogXCIgbWF0Y2gpKSkpXG4ifSB7OnN5bSBzcGxpdC1saW5lcywgOm1ldGEgezpkb2MgIlNwbGl0cyBzIG9uIFxcbiBvciBcXHJcXG4uIiwgOmFyZ2xpc3RzIChbc10pfSwgOnNvdXJjZSAiKGRlZm4gc3BsaXQtbGluZXMgXCJTcGxpdHMgcyBvbiBcXFxcbiBvciBcXFxcclxcXFxuLlwiIFtzXSAoc3BsaXQgcyAjXCJcXG58XFxyXFxuXCIpKVxuIn0gezpzeW0gbG93ZXItY2FzZSwgOm1ldGEgezpkb2MgIkNvbnZlcnRzIHN0cmluZyB0byBhbGwgbG93ZXItY2FzZS4iLCA6YXJnbGlzdHMgKFtzXSl9LCA6c291cmNlICIoZGVmblxuIGxvd2VyLWNhc2VcbiBcIkNvbnZlcnRzIHN0cmluZyB0byBhbGwgbG93ZXItY2FzZS5cIlxuIFtzXVxuICgudG9Mb3dlckNhc2UgcykpXG4ifSB7OnN5bSB0cmltLW5ld2xpbmUsIDptZXRhIHs6ZG9jICJSZW1vdmVzIGFsbCB0cmFpbGluZyBuZXdsaW5lIFxcbiBvciByZXR1cm4gXFxyIGNoYXJhY3RlcnMgZnJvbVxuICBzdHJpbmcuICBTaW1pbGFyIHRvIFBlcmwncyBjaG9tcC4iLCA6YXJnbGlzdHMgKFtzXSl9LCA6c291cmNlICIoZGVmblxuIHRyaW0tbmV3bGluZVxuIFwiUmVtb3ZlcyBhbGwgdHJhaWxpbmcgbmV3bGluZSBcXFxcbiBvciByZXR1cm4gXFxcXHIgY2hhcmFjdGVycyBmcm9tXFxuICBzdHJpbmcuICBTaW1pbGFyIHRvIFBlcmwncyBjaG9tcC5cIlxuIFtzXVxuIChsb29wXG4gIFtpbmRleCAoLi1sZW5ndGggcyldXG4gIChpZlxuICAgKHplcm8/IGluZGV4KVxuICAgXCJcIlxuICAgKGxldFxuICAgIFtjaCAoZ2V0IHMgKGRlYyBpbmRleCkpXVxuICAgIChpZlxuICAgICAob3IgKGlkZW50aWNhbD8gXFxuZXdsaW5lIGNoKSAoaWRlbnRpY2FsPyBcXHJldHVybiBjaCkpXG4gICAgIChyZWN1ciAoZGVjIGluZGV4KSlcbiAgICAgKC5zdWJzdHJpbmcgcyAwIGluZGV4KSkpKSkpXG4ifSB7OnN5bSB1cHBlci1jYXNlLCA6bWV0YSB7OmRvYyAiQ29udmVydHMgc3RyaW5nIHRvIGFsbCB1cHBlci1jYXNlLiIsIDphcmdsaXN0cyAoW3NdKX0sIDpzb3VyY2UgIihkZWZuXG4gdXBwZXItY2FzZVxuIFwiQ29udmVydHMgc3RyaW5nIHRvIGFsbCB1cHBlci1jYXNlLlwiXG4gW3NdXG4gKC50b1VwcGVyQ2FzZSBzKSlcbiJ9IHs6c3ltIHNwbGl0LCA6bWV0YSB7OmRvYyAiU3BsaXRzIHN0cmluZyBvbiBhIHJlZ3VsYXIgZXhwcmVzc2lvbi4gT3B0aW9uYWwgYXJndW1lbnQgbGltaXQgaXNcbiAgdGhlIG1heGltdW0gbnVtYmVyIG9mIHNwbGl0cy4gTm90IGxhenkuIFJldHVybnMgdmVjdG9yIG9mIHRoZSBzcGxpdHMuIiwgOmFyZ2xpc3RzIFtbcyByZV0gW3MgcmUgbGltaXRdXX0sIDpzb3VyY2UgIihkZWZuXG4gc3BsaXRcbiBcIlNwbGl0cyBzdHJpbmcgb24gYSByZWd1bGFyIGV4cHJlc3Npb24uIE9wdGlvbmFsIGFyZ3VtZW50IGxpbWl0IGlzXFxuICB0aGUgbWF4aW11bSBudW1iZXIgb2Ygc3BsaXRzLiBOb3QgbGF6eS4gUmV0dXJucyB2ZWN0b3Igb2YgdGhlIHNwbGl0cy5cIlxuIChbcyByZV0gKHNwbGl0IHMgcmUgMCkpXG4gKFtzIHJlIGxpbWl0XVxuICAoZGlzY2FyZC10cmFpbGluZy1pZi1uZWVkZWRcbiAgIGxpbWl0XG4gICAoaWZcbiAgICAoaWRlbnRpY2FsPyBcIi8oPzopL1wiIChzdHIgcmUpKVxuICAgIChzcGxpdC13aXRoLWVtcHR5LXJlZ2V4IHMgbGltaXQpXG4gICAgKGlmXG4gICAgICg8IGxpbWl0IDEpXG4gICAgICh2ZWMgKC5zcGxpdCAoc3RyIHMpIHJlKSlcbiAgICAgKGxvb3BcbiAgICAgIFtzIHMgbGltaXQgbGltaXQgcGFydHMgW11dXG4gICAgICAoaWZcbiAgICAgICAoPT0gMSBsaW1pdClcbiAgICAgICAoY29uaiBwYXJ0cyBzKVxuICAgICAgIChsZXRcbiAgICAgICAgW20gKHJlLWZpbmQgcmUgcyldXG4gICAgICAgIChpZi1ub3RcbiAgICAgICAgIChuaWw/IG0pXG4gICAgICAgICAobGV0XG4gICAgICAgICAgW2luZGV4ICguaW5kZXhPZiBzIG0pXVxuICAgICAgICAgIChyZWN1clxuICAgICAgICAgICAoLnN1YnN0cmluZyBzICgrIGluZGV4IChjb3VudCBtKSkpXG4gICAgICAgICAgIChkZWMgbGltaXQpXG4gICAgICAgICAgIChjb25qIHBhcnRzICguc3Vic3RyaW5nIHMgMCBpbmRleCkpKSlcbiAgICAgICAgIChjb25qIHBhcnRzIHMpKSkpKSkpKSkpXG4ifSB7OnN5bSB0cmltciwgOm1ldGEgezpkb2MgIlJlbW92ZXMgd2hpdGVzcGFjZSBmcm9tIHRoZSByaWdodCBzaWRlIG9mIHN0cmluZy4iLCA6YXJnbGlzdHMgKFtzXSl9LCA6c291cmNlICIoZGVmblxuIHRyaW1yXG4gXCJSZW1vdmVzIHdoaXRlc3BhY2UgZnJvbSB0aGUgcmlnaHQgc2lkZSBvZiBzdHJpbmcuXCJcbiBbc11cbiAoZ3N0cmluZy90cmltUmlnaHQgcykpXG4ifSB7OnN5bSBpbmRleC1vZiwgOm1ldGEgezpkb2MgIlJldHVybiBpbmRleCBvZiB2YWx1ZSAoc3RyaW5nIG9yIGNoYXIpIGluIHMsIG9wdGlvbmFsbHkgc2VhcmNoaW5nXG4gIGZvcndhcmQgZnJvbSBmcm9tLWluZGV4IG9yIG5pbCBpZiBub3QgZm91bmQuIiwgOmFyZ2xpc3RzIFtbcyB2YWx1ZV0gW3MgdmFsdWUgZnJvbS1pbmRleF1dfSwgOnNvdXJjZSAiKGRlZm5cbiBpbmRleC1vZlxuIFwiUmV0dXJuIGluZGV4IG9mIHZhbHVlIChzdHJpbmcgb3IgY2hhcikgaW4gcywgb3B0aW9uYWxseSBzZWFyY2hpbmdcXG4gIGZvcndhcmQgZnJvbSBmcm9tLWluZGV4IG9yIG5pbCBpZiBub3QgZm91bmQuXCJcbiAoW3MgdmFsdWVdXG4gIChsZXQgW3Jlc3VsdCAoLmluZGV4T2YgcyB2YWx1ZSldIChpZiAobmVnPyByZXN1bHQpIG5pbCByZXN1bHQpKSlcbiAoW3MgdmFsdWUgZnJvbS1pbmRleF1cbiAgKGxldFxuICAgW3Jlc3VsdCAoLmluZGV4T2YgcyB2YWx1ZSBmcm9tLWluZGV4KV1cbiAgIChpZiAobmVnPyByZXN1bHQpIG5pbCByZXN1bHQpKSkpXG4ifSB7OnN5bSB0cmltLCA6bWV0YSB7OmRvYyAiUmVtb3ZlcyB3aGl0ZXNwYWNlIGZyb20gYm90aCBlbmRzIG9mIHN0cmluZy4iLCA6YXJnbGlzdHMgKFtzXSl9LCA6c291cmNlICIoZGVmblxuIHRyaW1cbiBcIlJlbW92ZXMgd2hpdGVzcGFjZSBmcm9tIGJvdGggZW5kcyBvZiBzdHJpbmcuXCJcbiBbc11cbiAoZ3N0cmluZy90cmltIHMpKVxuIn0gezpzeW0gdHJpbWwsIDptZXRhIHs6ZG9jICJSZW1vdmVzIHdoaXRlc3BhY2UgZnJvbSB0aGUgbGVmdCBzaWRlIG9mIHN0cmluZy4iLCA6YXJnbGlzdHMgKFtzXSl9LCA6c291cmNlICIoZGVmblxuIHRyaW1sXG4gXCJSZW1vdmVzIHdoaXRlc3BhY2UgZnJvbSB0aGUgbGVmdCBzaWRlIG9mIHN0cmluZy5cIlxuIFtzXVxuIChnc3RyaW5nL3RyaW1MZWZ0IHMpKVxuIn0gezpzeW0gYmxhbms/LCA6bWV0YSB7OmRvYyAiVHJ1ZSBpcyBzIGlzIG5pbCwgZW1wdHksIG9yIGNvbnRhaW5zIG9ubHkgd2hpdGVzcGFjZS4iLCA6YXJnbGlzdHMgKFtzXSl9LCA6c291cmNlICIoZGVmblxuIGJsYW5rP1xuIFwiVHJ1ZSBpcyBzIGlzIG5pbCwgZW1wdHksIG9yIGNvbnRhaW5zIG9ubHkgd2hpdGVzcGFjZS5cIlxuIFtzXVxuIChnc3RyaW5nL2lzRW1wdHlPcldoaXRlc3BhY2UgKGdzdHJpbmcvbWFrZVNhZmUgcykpKVxuIn0pLCBjbG9qdXJlLmNvcmUucnJiLXZlY3Rvci50cmFuc2llbnRzICh7OnN5bSBlbnN1cmUtZWRpdGFibGUsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZWRpdCBub2RlXSl9LCA6c291cmNlICIoZGVmblxuIGVuc3VyZS1lZGl0YWJsZVxuIFtlZGl0IG5vZGVdXG4gKGlmXG4gIChpZGVudGljYWw/ICguLWVkaXQgbm9kZSkgZWRpdClcbiAgbm9kZVxuICAobGV0XG4gICBbbmV3LWFyciAoYWNsb25lICguLWFyciBub2RlKSldXG4gICAoaWZcbiAgICAoPT0gMzMgKGFsZW5ndGggbmV3LWFycikpXG4gICAgKGFzZXQgbmV3LWFyciAzMiAoYWNsb25lIChhZ2V0IG5ldy1hcnIgMzIpKSkpXG4gICAoVmVjdG9yTm9kZS4gZWRpdCBuZXctYXJyKSkpKVxuIn0gezpzeW0gZWRpdGFibGUtcm9vdCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtyb290XSl9LCA6c291cmNlICIoZGVmbiBlZGl0YWJsZS1yb290IFtyb290XSAoVmVjdG9yTm9kZS4gKGpzLW9iaikgKGFjbG9uZSAoLi1hcnIgcm9vdCkpKSlcbiJ9IHs6c3ltIGVkaXRhYmxlLXRhaWwsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbdGFpbF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBlZGl0YWJsZS10YWlsXG4gW3RhaWxdXG4gKGxldFxuICBbcmV0IChtYWtlLWFycmF5IDMyKV1cbiAgKGFycmF5LWNvcHkgdGFpbCAwIHJldCAwIChhbGVuZ3RoIHRhaWwpKVxuICByZXQpKVxuIn0gezpzeW0gcHVzaC10YWlsISwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtzaGlmdCBjbnQgcm9vdC1lZGl0IGN1cnJlbnQtbm9kZSB0YWlsLW5vZGVdKX0sIDpzb3VyY2UgIihkZWZuXG4gcHVzaC10YWlsIVxuIFtzaGlmdCBjbnQgcm9vdC1lZGl0IGN1cnJlbnQtbm9kZSB0YWlsLW5vZGVdXG4gKGxldFxuICBbcmV0IChlbnN1cmUtZWRpdGFibGUgcm9vdC1lZGl0IGN1cnJlbnQtbm9kZSldXG4gIChpZlxuICAgKHJlZ3VsYXI/IHJldClcbiAgIChkb1xuICAgIChsb29wXG4gICAgIFtuIHJldCBzaGlmdCBzaGlmdF1cbiAgICAgKGxldFxuICAgICAgW2FyclxuICAgICAgICguLWFyciBuKVxuICAgICAgIHN1YmlkeFxuICAgICAgIChiaXQtYW5kIChiaXQtc2hpZnQtcmlnaHQgKGRlYyBjbnQpIHNoaWZ0KSAzMSldXG4gICAgICAoaWZcbiAgICAgICAoPT0gc2hpZnQgNSlcbiAgICAgICAoYXNldCBhcnIgc3ViaWR4IHRhaWwtbm9kZSlcbiAgICAgICAobGV0XG4gICAgICAgIFtjaGlsZCAoYWdldCBhcnIgc3ViaWR4KV1cbiAgICAgICAgKGlmXG4gICAgICAgICAobmlsPyBjaGlsZClcbiAgICAgICAgIChhc2V0XG4gICAgICAgICAgYXJyXG4gICAgICAgICAgc3ViaWR4XG4gICAgICAgICAgKG5ldy1wYXRoICguLWFyciB0YWlsLW5vZGUpIHJvb3QtZWRpdCAoLSBzaGlmdCA1KSB0YWlsLW5vZGUpKVxuICAgICAgICAgKGxldFxuICAgICAgICAgIFtlZGl0YWJsZS1jaGlsZCAoZW5zdXJlLWVkaXRhYmxlIHJvb3QtZWRpdCBjaGlsZCldXG4gICAgICAgICAgKGFzZXQgYXJyIHN1YmlkeCBlZGl0YWJsZS1jaGlsZClcbiAgICAgICAgICAocmVjdXIgZWRpdGFibGUtY2hpbGQgKC0gc2hpZnQgNSkpKSkpKSkpXG4gICAgcmV0KVxuICAgKGxldFxuICAgIFthcnJcbiAgICAgKC4tYXJyIHJldClcbiAgICAgcm5nc1xuICAgICAocmFuZ2VzIHJldClcbiAgICAgbGlcbiAgICAgKGRlYyAoYWdldCBybmdzIDMyKSlcbiAgICAgY3JldFxuICAgICAoaWZcbiAgICAgICg9PSBzaGlmdCA1KVxuICAgICAgbmlsXG4gICAgICAobGV0XG4gICAgICAgW2NoaWxkXG4gICAgICAgIChlbnN1cmUtZWRpdGFibGUgcm9vdC1lZGl0IChhZ2V0IGFyciBsaSkpXG4gICAgICAgIGNjbnRcbiAgICAgICAgKGlmXG4gICAgICAgICAocG9zPyBsaSlcbiAgICAgICAgICgtIChhZ2V0IHJuZ3MgbGkpIChhZ2V0IHJuZ3MgKGRlYyBsaSkpKVxuICAgICAgICAgKGFnZXQgcm5ncyAwKSldXG4gICAgICAgKGlmLW5vdFxuICAgICAgICAoPT0gY2NudCAoYml0LXNoaWZ0LWxlZnQgMSBzaGlmdCkpXG4gICAgICAgIChwdXNoLXRhaWwhXG4gICAgICAgICAoLSBzaGlmdCA1KVxuICAgICAgICAgKGluYyBjY250KVxuICAgICAgICAgcm9vdC1lZGl0XG4gICAgICAgICBjaGlsZFxuICAgICAgICAgdGFpbC1ub2RlKSkpKV1cbiAgICAoaWZcbiAgICAgY3JldFxuICAgICAoZG8gKGFzZXQgYXJyIGxpIGNyZXQpIChhc2V0IHJuZ3MgbGkgKCsgKGFnZXQgcm5ncyBsaSkgMzIpKSByZXQpXG4gICAgIChkb1xuICAgICAgKGFzZXRcbiAgICAgICBhcnJcbiAgICAgICAoaW5jIGxpKVxuICAgICAgIChuZXctcGF0aCAoLi1hcnIgdGFpbC1ub2RlKSByb290LWVkaXQgKC0gc2hpZnQgNSkgdGFpbC1ub2RlKSlcbiAgICAgIChhc2V0IHJuZ3MgKGluYyBsaSkgKCsgKGFnZXQgcm5ncyBsaSkgMzIpKVxuICAgICAgKGFzZXQgcm5ncyAzMiAoaW5jIChhZ2V0IHJuZ3MgMzIpKSlcbiAgICAgIHJldCkpKSkpKVxuIn0gezpzeW0gcG9wLXRhaWwhLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3NoaWZ0IGNudCByb290LWVkaXQgY3VycmVudC1ub2RlXSl9LCA6c291cmNlICIoZGVmblxuIHBvcC10YWlsIVxuIFtzaGlmdCBjbnQgcm9vdC1lZGl0IGN1cnJlbnQtbm9kZV1cbiAobGV0XG4gIFtyZXQgKGVuc3VyZS1lZGl0YWJsZSByb290LWVkaXQgY3VycmVudC1ub2RlKV1cbiAgKGlmXG4gICAocmVndWxhcj8gcmV0KVxuICAgKGxldFxuICAgIFtzdWJpZHggKGJpdC1hbmQgKGJpdC1zaGlmdC1yaWdodCAoZGVjIGNudCkgc2hpZnQpIDMxKV1cbiAgICAoY29uZFxuICAgICAoPiBzaGlmdCA1KVxuICAgICAobGV0XG4gICAgICBbY2hpbGRcbiAgICAgICAocG9wLXRhaWwhICgtIHNoaWZ0IDUpIGNudCByb290LWVkaXQgKGFnZXQgKC4tYXJyIHJldCkgc3ViaWR4KSldXG4gICAgICAoaWZcbiAgICAgICAoYW5kIChuaWw/IGNoaWxkKSAoemVybz8gc3ViaWR4KSlcbiAgICAgICBuaWxcbiAgICAgICAobGV0IFthcnIgKC4tYXJyIHJldCldIChhc2V0IGFyciBzdWJpZHggY2hpbGQpIHJldCkpKVxuICAgICAoemVybz8gc3ViaWR4KVxuICAgICBuaWxcbiAgICAgOmVsc2VcbiAgICAgKGxldCBbYXJyICguLWFyciByZXQpXSAoYXNldCBhcnIgc3ViaWR4IG5pbCkgcmV0KSkpXG4gICAobGV0XG4gICAgW3N1YmlkeFxuICAgICAoYml0LWFuZCAoYml0LXNoaWZ0LXJpZ2h0IChkZWMgY250KSBzaGlmdCkgMzEpXG4gICAgIHJuZ3NcbiAgICAgKHJhbmdlcyByZXQpXG4gICAgIHN1YmlkeFxuICAgICAobG9vcFxuICAgICAgW3N1YmlkeCBzdWJpZHhdXG4gICAgICAoaWZcbiAgICAgICAob3IgKHplcm8/IChpbnQgKGFnZXQgcm5ncyAoaW5jIHN1YmlkeCkpKSkgKD09IHN1YmlkeCAzMSkpXG4gICAgICAgc3ViaWR4XG4gICAgICAgKHJlY3VyIChpbmMgc3ViaWR4KSkpKV1cbiAgICAoY29uZFxuICAgICAoPiBzaGlmdCA1KVxuICAgICAobGV0XG4gICAgICBbY2hpbGRcbiAgICAgICAoYWdldCAoLi1hcnIgcmV0KSBzdWJpZHgpXG4gICAgICAgY2hpbGQtY250XG4gICAgICAgKGlmXG4gICAgICAgICh6ZXJvPyBzdWJpZHgpXG4gICAgICAgIChhZ2V0IHJuZ3MgMClcbiAgICAgICAgKC0gKGFnZXQgcm5ncyBzdWJpZHgpIChhZ2V0IHJuZ3MgKGRlYyBzdWJpZHgpKSkpXG4gICAgICAgbmV3LWNoaWxkXG4gICAgICAgKHBvcC10YWlsISAoLSBzaGlmdCA1KSBjaGlsZC1jbnQgcm9vdC1lZGl0IGNoaWxkKV1cbiAgICAgIChjb25kXG4gICAgICAgKGFuZCAobmlsPyBuZXctY2hpbGQpICh6ZXJvPyBzdWJpZHgpKVxuICAgICAgIG5pbFxuICAgICAgIChyZWd1bGFyPyBjaGlsZClcbiAgICAgICAobGV0XG4gICAgICAgIFthcnIgKC4tYXJyIHJldCldXG4gICAgICAgIChhc2V0IHJuZ3Mgc3ViaWR4ICgtIChhZ2V0IHJuZ3Mgc3ViaWR4KSAzMikpXG4gICAgICAgIChhc2V0IGFyciBzdWJpZHggbmV3LWNoaWxkKVxuICAgICAgICAoaWYgKG5pbD8gbmV3LWNoaWxkKSAoYXNldCBybmdzIDMyIChkZWMgKGFnZXQgcm5ncyAzMikpKSlcbiAgICAgICAgcmV0KVxuICAgICAgIDplbHNlXG4gICAgICAgKGxldFxuICAgICAgICBbcm5nXG4gICAgICAgICAobGFzdC1yYW5nZSBjaGlsZClcbiAgICAgICAgIGRpZmZcbiAgICAgICAgICgtIHJuZyAoaWYgbmV3LWNoaWxkIChsYXN0LXJhbmdlIG5ldy1jaGlsZCkgMCkpXG4gICAgICAgICBhcnJcbiAgICAgICAgICguLWFyciByZXQpXVxuICAgICAgICAoYXNldCBybmdzIHN1YmlkeCAoLSAoYWdldCBybmdzIHN1YmlkeCkgZGlmZikpXG4gICAgICAgIChhc2V0IGFyciBzdWJpZHggbmV3LWNoaWxkKVxuICAgICAgICAoaWYgKG5pbD8gbmV3LWNoaWxkKSAoYXNldCBybmdzIDMyIChkZWMgKGFnZXQgcm5ncyAzMikpKSlcbiAgICAgICAgcmV0KSkpXG4gICAgICh6ZXJvPyBzdWJpZHgpXG4gICAgIG5pbFxuICAgICA6ZWxzZVxuICAgICAobGV0XG4gICAgICBbYXJyICguLWFyciByZXQpIGNoaWxkIChhZ2V0IGFyciBzdWJpZHgpXVxuICAgICAgKGFzZXQgYXJyIHN1YmlkeCBuaWwpXG4gICAgICAoYXNldCBybmdzIHN1YmlkeCAwKVxuICAgICAgKGFzZXQgcm5ncyAzMiAoZGVjIChhZ2V0IHJuZ3MgMzIpKSlcbiAgICAgIHJldCkpKSkpKVxuIn0gezpzeW0gZG8tYXNzb2MhLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3NoaWZ0IHJvb3QtZWRpdCBjdXJyZW50LW5vZGUgaSB2YWxdKX0sIDpzb3VyY2UgIihkZWZuXG4gZG8tYXNzb2MhXG4gW3NoaWZ0IHJvb3QtZWRpdCBjdXJyZW50LW5vZGUgaSB2YWxdXG4gKGxldFxuICBbcmV0IChlbnN1cmUtZWRpdGFibGUgcm9vdC1lZGl0IGN1cnJlbnQtbm9kZSldXG4gIChpZlxuICAgKHJlZ3VsYXI/IHJldClcbiAgIChsb29wXG4gICAgW3NoaWZ0IHNoaWZ0IG5vZGUgcmV0XVxuICAgIChpZlxuICAgICAoemVybz8gc2hpZnQpXG4gICAgIChsZXQgW2FyciAoLi1hcnIgbm9kZSldIChhc2V0IGFyciAoYml0LWFuZCBpIDMxKSB2YWwpKVxuICAgICAobGV0XG4gICAgICBbYXJyXG4gICAgICAgKC4tYXJyIG5vZGUpXG4gICAgICAgc3ViaWR4XG4gICAgICAgKGJpdC1hbmQgKGJpdC1zaGlmdC1yaWdodCBpIHNoaWZ0KSAzMSlcbiAgICAgICBjaGlsZFxuICAgICAgIChlbnN1cmUtZWRpdGFibGUgcm9vdC1lZGl0IChhZ2V0IGFyciBzdWJpZHgpKV1cbiAgICAgIChhc2V0IGFyciBzdWJpZHggY2hpbGQpXG4gICAgICAocmVjdXIgKC0gc2hpZnQgNSkgY2hpbGQpKSkpXG4gICAobGV0XG4gICAgW2FyclxuICAgICAoLi1hcnIgcmV0KVxuICAgICBybmdzXG4gICAgIChyYW5nZXMgcmV0KVxuICAgICBzdWJpZHhcbiAgICAgKGJpdC1hbmQgKGJpdC1zaGlmdC1yaWdodCBpIHNoaWZ0KSAzMSlcbiAgICAgc3ViaWR4XG4gICAgIChsb29wXG4gICAgICBbc3ViaWR4IHN1YmlkeF1cbiAgICAgIChpZiAoPCBpIChpbnQgKGFnZXQgcm5ncyBzdWJpZHgpKSkgc3ViaWR4IChyZWN1ciAoaW5jIHN1YmlkeCkpKSlcbiAgICAgaVxuICAgICAoaWYgKHplcm8/IHN1YmlkeCkgaSAoLSBpIChhZ2V0IHJuZ3MgKGRlYyBzdWJpZHgpKSkpXVxuICAgIChhc2V0XG4gICAgIGFyclxuICAgICBzdWJpZHhcbiAgICAgKGRvLWFzc29jISAoLSBzaGlmdCA1KSByb290LWVkaXQgKGFnZXQgYXJyIHN1YmlkeCkgaSB2YWwpKSkpXG4gIHJldCkpXG4ifSksIGNsanMuc3BlYy5hbHBoYSAoezpzeW0gZm9ybSwgOm1ldGEgezpkb2MgInJldHVybnMgdGhlIHNwZWMgYXMgZGF0YSIsIDphcmdsaXN0cyAoW3NwZWNdKX0sIDpzb3VyY2UgIihkZWZuIGZvcm0gXCJyZXR1cm5zIHRoZSBzcGVjIGFzIGRhdGFcIiBbc3BlY10gKGRlc2NyaWJlKiAoc3BlY2l6ZSBzcGVjKSkpXG4ifSB7OnN5bSBuaWxhYmxlLWltcGwsIDptZXRhIHs6ZG9jICJEbyBub3QgY2FsbCB0aGlzIGRpcmVjdGx5LCB1c2UgJ25pbGFibGUnIiwgOmFyZ2xpc3RzIChbZm9ybSBwcmVkIGdmbl0pfSwgOnNvdXJjZSAiKGRlZm5cbiBuaWxhYmxlLWltcGxcbiBcIkRvIG5vdCBjYWxsIHRoaXMgZGlyZWN0bHksIHVzZSAnbmlsYWJsZSdcIlxuIFtmb3JtIHByZWQgZ2ZuXVxuIChsZXRcbiAgW3NwZWMgKGRlbGF5IChzcGVjaXplIHByZWQgZm9ybSkpXVxuICAocmVpZnlcbiAgIFNwZWNpemVcbiAgIChzcGVjaXplKiBbc10gcylcbiAgIChzcGVjaXplKiBbcyBfXSBzKVxuICAgU3BlY1xuICAgKGNvbmZvcm0qIFtfIHhdIChpZiAobmlsPyB4KSBuaWwgKGNvbmZvcm0qIEBzcGVjIHgpKSlcbiAgICh1bmZvcm0qIFtfIHhdIChpZiAobmlsPyB4KSBuaWwgKHVuZm9ybSogQHNwZWMgeCkpKVxuICAgKGV4cGxhaW4qXG4gICAgW18gcGF0aCB2aWEgaW4geF1cbiAgICAod2hlbi1ub3RcbiAgICAgKGMvb3IgKHB2YWxpZD8gQHNwZWMgeCkgKG5pbD8geCkpXG4gICAgIChjb25qXG4gICAgICAoZXhwbGFpbi0xIGZvcm0gcHJlZCAoY29uaiBwYXRoIDpjbGpzLnNwZWMuYWxwaGEvcHJlZCkgdmlhIGluIHgpXG4gICAgICB7OnBhdGggKGNvbmogcGF0aCA6Y2xqcy5zcGVjLmFscGhhL25pbCksXG4gICAgICAgOnByZWQgJ25pbD8sXG4gICAgICAgOnZhbCB4LFxuICAgICAgIDp2aWEgdmlhLFxuICAgICAgIDppbiBpbn0pKSlcbiAgIChnZW4qXG4gICAgW18gb3ZlcnJpZGVzIHBhdGggcm1hcF1cbiAgICAoaWZcbiAgICAgZ2ZuXG4gICAgIChnZm4pXG4gICAgIChnZW4vZnJlcXVlbmN5XG4gICAgICBbWzEgKGdlbi9kZWxheSAoZ2VuL3JldHVybiBuaWwpKV1cbiAgICAgICBbOVxuICAgICAgICAoZ2VuL2RlbGF5XG4gICAgICAgICAoZ2Vuc3ViXG4gICAgICAgICAgcHJlZFxuICAgICAgICAgIG92ZXJyaWRlc1xuICAgICAgICAgIChjb25qIHBhdGggOmNsanMuc3BlYy5hbHBoYS9wcmVkKVxuICAgICAgICAgIHJtYXBcbiAgICAgICAgICBmb3JtKSldXSkpKVxuICAgKHdpdGgtZ2VuKiBbXyBnZm5dIChuaWxhYmxlLWltcGwgZm9ybSBwcmVkIGdmbikpXG4gICAoZGVzY3JpYmUqXG4gICAgW19dXG4gICAgKGNsb2p1cmUuY29yZS9zZXF1ZW5jZVxuICAgICAoY2xvanVyZS5jb3JlL3NlcVxuICAgICAgKGNsb2p1cmUuY29yZS9jb25jYXRcbiAgICAgICAoY2xvanVyZS5jb3JlL2xpc3QgJ2NsanMuc3BlYy5hbHBoYS9uaWxhYmxlKVxuICAgICAgIChjbG9qdXJlLmNvcmUvbGlzdCAocy9tcmVzIGZvcm0pKSkpKSkpKSlcbiJ9IHs6c3ltICpyZWN1cnNpb24tbGltaXQqLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZlxuICpyZWN1cnNpb24tbGltaXQqXG4gXCJBIHNvZnQgbGltaXQgb24gaG93IG1hbnkgdGltZXMgYSBicmFuY2hpbmcgc3BlYyAob3IvYWx0Lyovb3B0LWtleXMvbXVsdGktc3BlYylcXG4gIGNhbiBiZSByZWN1cnNlZCB0aHJvdWdoIGR1cmluZyBnZW5lcmF0aW9uLiBBZnRlciB0aGlzIGFcXG4gIG5vbi1yZWN1cnNpdmUgYnJhbmNoIHdpbGwgYmUgY2hvc2VuLlwiXG4gNClcbiJ9IHs6c3ltICpjb2xsLWVycm9yLWxpbWl0KiwgOm1ldGEge30sIDpzb3VyY2UgIihkZWZcbiAqY29sbC1lcnJvci1saW1pdCpcbiBcIlRoZSBudW1iZXIgb2YgZXJyb3JzIHJlcG9ydGVkIGJ5IGV4cGxhaW4gaW4gYSBjb2xsZWN0aW9uIHNwZWMnZWQgd2l0aCAnZXZlcnknXCJcbiAyMClcbiJ9IHs6c3ltIGV4cGxhaW4tcHJpbnRlciwgOm1ldGEgezpkb2MgIkRlZmF1bHQgcHJpbnRlciBmb3IgZXhwbGFpbi1kYXRhLiBuaWwgaW5kaWNhdGVzIGEgc3VjY2Vzc2Z1bCB2YWxpZGF0aW9uLiIsIDphcmdsaXN0cyAoW2VkXSl9LCA6c291cmNlICIoZGVmblxuIGV4cGxhaW4tcHJpbnRlclxuIFwiRGVmYXVsdCBwcmludGVyIGZvciBleHBsYWluLWRhdGEuIG5pbCBpbmRpY2F0ZXMgYSBzdWNjZXNzZnVsIHZhbGlkYXRpb24uXCJcbiBbZWRdXG4gKGlmXG4gIGVkXG4gIChsZXRcbiAgIFtwcm9ibGVtc1xuICAgICgtPj5cbiAgICAgKDpjbGpzLnNwZWMuYWxwaGEvcHJvYmxlbXMgZWQpXG4gICAgIChzb3J0LWJ5IChmbiogW3AxX180MzAzNyNdICgtIChjb3VudCAoOmluIHAxX180MzAzNyMpKSkpKVxuICAgICAoc29ydC1ieSAoZm4qIFtwMV9fNDMwMzgjXSAoLSAoY291bnQgKDpwYXRoIHAxX180MzAzOCMpKSkpKSldXG4gICAocHJpbnRcbiAgICAod2l0aC1vdXQtc3RyXG4gICAgIChkb3NlcVxuICAgICAgW3s6a2V5cyBbcGF0aCBwcmVkIHZhbCByZWFzb24gdmlhIGluXSwgOmFzIHByb2J9IHByb2JsZW1zXVxuICAgICAgKHByIHZhbClcbiAgICAgIChwcmludCBcIiAtIGZhaWxlZDogXCIpXG4gICAgICAoaWYgcmVhc29uIChwcmludCByZWFzb24pIChwciAoYWJicmV2IHByZWQpKSlcbiAgICAgICh3aGVuLW5vdCAoZW1wdHk/IGluKSAocHJpbnQgKHN0ciBcIiBpbjogXCIgKHByLXN0ciBpbikpKSlcbiAgICAgICh3aGVuLW5vdCAoZW1wdHk/IHBhdGgpIChwcmludCAoc3RyIFwiIGF0OiBcIiAocHItc3RyIHBhdGgpKSkpXG4gICAgICAod2hlbi1ub3RcbiAgICAgICAoZW1wdHk/IHZpYSlcbiAgICAgICAocHJpbnQgKHN0ciBcIiBzcGVjOiBcIiAocHItc3RyIChsYXN0IHZpYSkpKSkpXG4gICAgICAoZG9zZXFcbiAgICAgICBbW2sgdl0gcHJvYl1cbiAgICAgICAod2hlbi1ub3RcbiAgICAgICAgKCN7OnBhdGggOnByZWQgOnZpYSA6dmFsIDpyZWFzb24gOmlufSBrKVxuICAgICAgICAocHJpbnQgXCJcXG5cXHRcIiAocHItc3RyIGspIFwiIFwiKVxuICAgICAgICAocHIgdikpKVxuICAgICAgKG5ld2xpbmUpKSkpKVxuICAocHJpbnRsbiBcIlN1Y2Nlc3MhXCIpKSlcbiJ9IHs6c3ltIFNwZWNpemUsIDptZXRhIHs6ZG9jIG5pbH0sIDptZXRob2RzIChzcGVjaXplKil9IHs6c3ltIGFsdC1pbXBsLCA6bWV0YSB7OmRvYyAiRG8gbm90IGNhbGwgdGhpcyBkaXJlY3RseSwgdXNlICdhbHQnIiwgOmFyZ2xpc3RzIChba3MgcHMgZm9ybXNdKX0sIDpzb3VyY2UgIihkZWZuXG4gYWx0LWltcGxcbiBcIkRvIG5vdCBjYWxsIHRoaXMgZGlyZWN0bHksIHVzZSAnYWx0J1wiXG4gW2tzIHBzIGZvcm1zXVxuIChhc3NvYyAoYWx0KiBwcyBrcyBmb3JtcykgOmlkIChyYW5kb20tdXVpZCkpKVxuIn0gezpzeW0gZGVmLWltcGwsIDptZXRhIHs6ZG9jICJEbyBub3QgY2FsbCB0aGlzIGRpcmVjdGx5LCB1c2UgJ2RlZiciLCA6YXJnbGlzdHMgKFtrIGZvcm0gc3BlY10pfSwgOnNvdXJjZSAiKGRlZm5cbiBkZWYtaW1wbFxuIFwiRG8gbm90IGNhbGwgdGhpcyBkaXJlY3RseSwgdXNlICdkZWYnXCJcbiBbayBmb3JtIHNwZWNdXG4gKGFzc2VydFxuICAoYy9hbmQgKGlkZW50PyBrKSAobmFtZXNwYWNlIGspKVxuICBcImsgbXVzdCBiZSBuYW1lc3BhY2VkIGtleXdvcmQgb3IgcmVzb2x2ZWFibGUgc3ltYm9sXCIpXG4gKGlmXG4gIChuaWw/IHNwZWMpXG4gIChzd2FwISByZWdpc3RyeS1yZWYgZGlzc29jIGspXG4gIChsZXRcbiAgIFtzcGVjXG4gICAgKGlmXG4gICAgIChjL29yIChzcGVjPyBzcGVjKSAocmVnZXg/IHNwZWMpIChnZXQgQHJlZ2lzdHJ5LXJlZiBzcGVjKSlcbiAgICAgc3BlY1xuICAgICAoc3BlYy1pbXBsIGZvcm0gc3BlYyBuaWwgbmlsKSldXG4gICAoc3dhcCEgcmVnaXN0cnktcmVmIGFzc29jIGsgKHdpdGgtbmFtZSBzcGVjIGspKSkpXG4gaylcbiJ9IHs6c3ltICpleHBsYWluLW91dCosIDptZXRhIHt9LCA6c291cmNlICIoZGVmICpleHBsYWluLW91dCogZXhwbGFpbi1wcmludGVyKVxuIn0gezpzeW0gcmVnZXgtc3BlYy1pbXBsLCA6bWV0YSB7OmRvYyAiRG8gbm90IGNhbGwgdGhpcyBkaXJlY3RseSwgdXNlICdzcGVjJyB3aXRoIGEgcmVnZXggb3AgYXJndW1lbnQiLCA6YXJnbGlzdHMgKFtyZSBnZm5dKX0sIDpzb3VyY2UgIihkZWZuXG4gcmVnZXgtc3BlYy1pbXBsXG4gXCJEbyBub3QgY2FsbCB0aGlzIGRpcmVjdGx5LCB1c2UgJ3NwZWMnIHdpdGggYSByZWdleCBvcCBhcmd1bWVudFwiXG4gW3JlIGdmbl1cbiAocmVpZnlcbiAgU3BlY2l6ZVxuICAoc3BlY2l6ZSogW3NdIHMpXG4gIChzcGVjaXplKiBbcyBfXSBzKVxuICBTcGVjXG4gIChjb25mb3JtKlxuICAgW18geF1cbiAgIChpZlxuICAgIChjL29yIChuaWw/IHgpIChzZXF1ZW50aWFsPyB4KSlcbiAgICAocmUtY29uZm9ybSByZSAoc2VxIHgpKVxuICAgIDpjbGpzLnNwZWMuYWxwaGEvaW52YWxpZCkpXG4gICh1bmZvcm0qIFtfIHhdIChvcC11bmZvcm0gcmUgeCkpXG4gIChleHBsYWluKlxuICAgW18gcGF0aCB2aWEgaW4geF1cbiAgIChpZlxuICAgIChjL29yIChuaWw/IHgpIChzZXF1ZW50aWFsPyB4KSlcbiAgICAocmUtZXhwbGFpbiBwYXRoIHZpYSBpbiByZSAoc2VxIHgpKVxuICAgIFt7OnBhdGggcGF0aCxcbiAgICAgIDpwcmVkXG4gICAgICAoY2xvanVyZS5jb3JlL3NlcXVlbmNlXG4gICAgICAgKGNsb2p1cmUuY29yZS9zZXFcbiAgICAgICAgKGNsb2p1cmUuY29yZS9jb25jYXRcbiAgICAgICAgIChjbG9qdXJlLmNvcmUvbGlzdCAnY2xvanVyZS5jb3JlL2ZuKVxuICAgICAgICAgKGNsb2p1cmUuY29yZS9saXN0XG4gICAgICAgICAgKGNsb2p1cmUuY29yZS92ZWNcbiAgICAgICAgICAgKGNsb2p1cmUuY29yZS9zZXF1ZW5jZVxuICAgICAgICAgICAgKGNsb2p1cmUuY29yZS9zZXFcbiAgICAgICAgICAgICAoY2xvanVyZS5jb3JlL2NvbmNhdCAoY2xvanVyZS5jb3JlL2xpc3QgJyUpKSkpKSlcbiAgICAgICAgIChjbG9qdXJlLmNvcmUvbGlzdFxuICAgICAgICAgIChjbG9qdXJlLmNvcmUvc2VxdWVuY2VcbiAgICAgICAgICAgKGNsb2p1cmUuY29yZS9zZXFcbiAgICAgICAgICAgIChjbG9qdXJlLmNvcmUvY29uY2F0XG4gICAgICAgICAgICAgKGNsb2p1cmUuY29yZS9saXN0ICdjbGpzLmNvcmUvb3IpXG4gICAgICAgICAgICAgKGNsb2p1cmUuY29yZS9saXN0XG4gICAgICAgICAgICAgIChjbG9qdXJlLmNvcmUvc2VxdWVuY2VcbiAgICAgICAgICAgICAgIChjbG9qdXJlLmNvcmUvc2VxXG4gICAgICAgICAgICAgICAgKGNsb2p1cmUuY29yZS9jb25jYXRcbiAgICAgICAgICAgICAgICAgKGNsb2p1cmUuY29yZS9saXN0ICdjbG9qdXJlLmNvcmUvbmlsPylcbiAgICAgICAgICAgICAgICAgKGNsb2p1cmUuY29yZS9saXN0ICclKSkpKSlcbiAgICAgICAgICAgICAoY2xvanVyZS5jb3JlL2xpc3RcbiAgICAgICAgICAgICAgKGNsb2p1cmUuY29yZS9zZXF1ZW5jZVxuICAgICAgICAgICAgICAgKGNsb2p1cmUuY29yZS9zZXFcbiAgICAgICAgICAgICAgICAoY2xvanVyZS5jb3JlL2NvbmNhdFxuICAgICAgICAgICAgICAgICAoY2xvanVyZS5jb3JlL2xpc3QgJ2Nsb2p1cmUuY29yZS9zZXF1ZW50aWFsPylcbiAgICAgICAgICAgICAgICAgKGNsb2p1cmUuY29yZS9saXN0ICclKSkpKSkpKSkpKSkpLFxuICAgICAgOnZhbCB4LFxuICAgICAgOnZpYSB2aWEsXG4gICAgICA6aW4gaW59XSkpXG4gIChnZW4qXG4gICBbXyBvdmVycmlkZXMgcGF0aCBybWFwXVxuICAgKGlmIGdmbiAoZ2ZuKSAocmUtZ2VuIHJlIG92ZXJyaWRlcyBwYXRoIHJtYXAgKG9wLWRlc2NyaWJlIHJlKSkpKVxuICAod2l0aC1nZW4qIFtfIGdmbl0gKHJlZ2V4LXNwZWMtaW1wbCByZSBnZm4pKVxuICAoZGVzY3JpYmUqIFtfXSAob3AtZGVzY3JpYmUgcmUpKSkpXG4ifSB7OnN5bSBtZXJnZS1zcGVjLWltcGwsIDptZXRhIHs6ZG9jICJEbyBub3QgY2FsbCB0aGlzIGRpcmVjdGx5LCB1c2UgJ21lcmdlJyIsIDphcmdsaXN0cyAoW2Zvcm1zIHByZWRzIGdmbl0pfSwgOnNvdXJjZSAiKGRlZm5cbiBtZXJnZS1zcGVjLWltcGxcbiBcIkRvIG5vdCBjYWxsIHRoaXMgZGlyZWN0bHksIHVzZSAnbWVyZ2UnXCJcbiBbZm9ybXMgcHJlZHMgZ2ZuXVxuIChyZWlmeVxuICBTcGVjaXplXG4gIChzcGVjaXplKiBbc10gcylcbiAgKHNwZWNpemUqIFtzIF9dIHMpXG4gIFNwZWNcbiAgKGNvbmZvcm0qXG4gICBbXyB4XVxuICAgKGxldFxuICAgIFttc1xuICAgICAobWFwXG4gICAgICAoZm4qIFtwMV9fNDMwNTAjIHAyX180MzA1MSNdIChkdCBwMV9fNDMwNTAjIHggcDJfXzQzMDUxIykpXG4gICAgICBwcmVkc1xuICAgICAgZm9ybXMpXVxuICAgIChpZlxuICAgICAoc29tZSBpbnZhbGlkPyBtcylcbiAgICAgOmNsanMuc3BlYy5hbHBoYS9pbnZhbGlkXG4gICAgIChhcHBseSBjL21lcmdlIG1zKSkpKVxuICAodW5mb3JtKlxuICAgW18geF1cbiAgIChhcHBseVxuICAgIGMvbWVyZ2VcbiAgICAobWFwIChmbiogW3AxX180MzA1MiNdICh1bmZvcm0gcDFfXzQzMDUyIyB4KSkgKHJldmVyc2UgcHJlZHMpKSkpXG4gIChleHBsYWluKlxuICAgW18gcGF0aCB2aWEgaW4geF1cbiAgIChhcHBseVxuICAgIGNvbmNhdFxuICAgIChtYXBcbiAgICAgKGZuKlxuICAgICAgW3AxX180MzA1MyMgcDJfXzQzMDU0I11cbiAgICAgIChleHBsYWluLTEgcDFfXzQzMDUzIyBwMl9fNDMwNTQjIHBhdGggdmlhIGluIHgpKVxuICAgICBmb3Jtc1xuICAgICBwcmVkcykpKVxuICAoZ2VuKlxuICAgW18gb3ZlcnJpZGVzIHBhdGggcm1hcF1cbiAgIChpZlxuICAgIGdmblxuICAgIChnZm4pXG4gICAgKGdlbi9mbWFwXG4gICAgIChmbiogW3AxX180MzA1NSNdIChhcHBseSBjL21lcmdlIHAxX180MzA1NSMpKVxuICAgICAoYXBwbHlcbiAgICAgIGdlbi90dXBsZVxuICAgICAgKG1hcFxuICAgICAgIChmbipcbiAgICAgICAgW3AxX180MzA1NiMgcDJfXzQzMDU3I11cbiAgICAgICAgKGdlbnN1YiBwMV9fNDMwNTYjIG92ZXJyaWRlcyBwYXRoIHJtYXAgcDJfXzQzMDU3IykpXG4gICAgICAgcHJlZHNcbiAgICAgICBmb3JtcykpKSkpXG4gICh3aXRoLWdlbiogW18gZ2ZuXSAobWVyZ2Utc3BlYy1pbXBsIGZvcm1zIHByZWRzIGdmbikpXG4gIChkZXNjcmliZSpcbiAgIFtfXVxuICAgKGNsb2p1cmUuY29yZS9zZXF1ZW5jZVxuICAgIChjbG9qdXJlLmNvcmUvc2VxXG4gICAgIChjbG9qdXJlLmNvcmUvY29uY2F0XG4gICAgICAoY2xvanVyZS5jb3JlL2xpc3QgJ2NsanMuc3BlYy5hbHBoYS9tZXJnZSlcbiAgICAgIGZvcm1zKSkpKSkpXG4ifSB7OnN5bSBleHBsYWluLWRhdGEqLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3NwZWMgcGF0aCB2aWEgaW4geF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBleHBsYWluLWRhdGEqXG4gW3NwZWMgcGF0aCB2aWEgaW4geF1cbiAod2hlbi1sZXRcbiAgW3Byb2JzIChleHBsYWluKiAoc3BlY2l6ZSBzcGVjKSBwYXRoIHZpYSBpbiB4KV1cbiAgKHdoZW4tbm90XG4gICAoZW1wdHk/IHByb2JzKVxuICAgezpjbGpzLnNwZWMuYWxwaGEvcHJvYmxlbXMgcHJvYnMsXG4gICAgOmNsanMuc3BlYy5hbHBoYS9zcGVjIHNwZWMsXG4gICAgOmNsanMuc3BlYy5hbHBoYS92YWx1ZSB4fSkpKVxuIn0gezpzeW0gTUFYX0lOVCwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgTUFYX0lOVCA5MDA3MTk5MjU0NzQwOTkxKVxuIn0gezpzeW0gY2hlY2stYXNzZXJ0cywgOm1ldGEgezpkb2MgIkVuYWJsZSBvciBkaXNhYmxlIHNwZWMgYXNzZXJ0cyB0aGF0IGhhdmUgYmVlbiBjb21waWxlZFxud2l0aCAnKmNvbXBpbGUtYXNzZXJ0cyonIHRydWUuICBTZWUgJ2Fzc2VydCcuXG5Jbml0aWFsbHkgc2V0IHRvIGJvb2xlYW4gdmFsdWUgb2YgY2xqcy5zcGVjLmFscGhhLypydW50aW1lLWFzc2VydHMqLlxuRGVmYXVsdHMgdG8gZmFsc2UuIiwgOmFyZ2xpc3RzIChbZmxhZ10pfSwgOnNvdXJjZSAiKGRlZm5cbiBjaGVjay1hc3NlcnRzXG4gXCJFbmFibGUgb3IgZGlzYWJsZSBzcGVjIGFzc2VydHMgdGhhdCBoYXZlIGJlZW4gY29tcGlsZWRcXG53aXRoICcqY29tcGlsZS1hc3NlcnRzKicgdHJ1ZS4gIFNlZSAnYXNzZXJ0Jy5cXG5Jbml0aWFsbHkgc2V0IHRvIGJvb2xlYW4gdmFsdWUgb2YgY2xqcy5zcGVjLmFscGhhLypydW50aW1lLWFzc2VydHMqLlxcbkRlZmF1bHRzIHRvIGZhbHNlLlwiXG4gW2ZsYWddXG4gKHNldCEgKnJ1bnRpbWUtYXNzZXJ0cyogZmxhZykpXG4ifSB7OnN5bSBhc3NlcnQqLCA6bWV0YSB7OmRvYyAiRG8gbm90IGNhbGwgdGhpcyBkaXJlY3RseSwgdXNlICdhc3NlcnQnLiIsIDphcmdsaXN0cyAoW3NwZWMgeF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBhc3NlcnQqXG4gXCJEbyBub3QgY2FsbCB0aGlzIGRpcmVjdGx5LCB1c2UgJ2Fzc2VydCcuXCJcbiBbc3BlYyB4XVxuIChpZlxuICAodmFsaWQ/IHNwZWMgeClcbiAgeFxuICAobGV0XG4gICBbZWRcbiAgICAoYy9tZXJnZVxuICAgICAoYXNzb2NcbiAgICAgIChleHBsYWluLWRhdGEqIHNwZWMgW10gW10gW10geClcbiAgICAgIDpjbGpzLnNwZWMuYWxwaGEvZmFpbHVyZVxuICAgICAgOmFzc2VydGlvbi1mYWlsZWQpKV1cbiAgICh0aHJvd1xuICAgIChqcy9FcnJvci5cbiAgICAgKHN0clxuICAgICAgXCJTcGVjIGFzc2VydGlvbiBmYWlsZWRcXG5cIlxuICAgICAgKHdpdGgtb3V0LXN0ciAoZXhwbGFpbi1vdXQgZWQpKSkpKSkpKVxuIn0gezpzeW0gZm4tc3ltLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2Ytbl0pfSwgOnNvdXJjZSAiKGRlZm5cbiBmbi1zeW1cbiBbZi1uXVxuICh3aGVuLW5vdFxuICAoc3RyL2JsYW5rPyBmLW4pXG4gIChsZXRcbiAgIFt4cyAobWFwIGRlbXVuZ2UgKHN0ci9zcGxpdCBmLW4gXCIkXCIpKV1cbiAgICh3aGVuXG4gICAgKGMvYW5kXG4gICAgICg8PSAyIChjb3VudCB4cykpXG4gICAgIChldmVyeT8gKGZuKiBbcDFfXzQyNTM2I10gKG5vdCAoc3RyL2JsYW5rPyBwMV9fNDI1MzYjKSkpIHhzKSlcbiAgICAobGV0XG4gICAgIFtbeHMgeV0gKChqdXh0IGJ1dGxhc3QgbGFzdCkgeHMpXVxuICAgICAoc3ltYm9sIChzdHIgKHN0ci9qb2luIFwiLlwiIHhzKSBcIi9cIiB5KSkpKSkpKVxuIn0gezpzeW0gaW5zdC1pbi1yYW5nZT8sIDptZXRhIHs6ZG9jICJSZXR1cm4gdHJ1ZSBpZiBpbnN0IGF0IG9yIGFmdGVyIHN0YXJ0IGFuZCBiZWZvcmUgZW5kIiwgOmFyZ2xpc3RzIChbc3RhcnQgZW5kIGluc3RdKX0sIDpzb3VyY2UgIihkZWZuXG4gaW5zdC1pbi1yYW5nZT9cbiBcIlJldHVybiB0cnVlIGlmIGluc3QgYXQgb3IgYWZ0ZXIgc3RhcnQgYW5kIGJlZm9yZSBlbmRcIlxuIFtzdGFydCBlbmQgaW5zdF1cbiAoYy9hbmRcbiAgKGluc3Q/IGluc3QpXG4gIChsZXRcbiAgIFt0IChpbnN0LW1zIGluc3QpXVxuICAgKGMvYW5kICg8PSAoaW5zdC1tcyBzdGFydCkgdCkgKDwgdCAoaW5zdC1tcyBlbmQpKSkpKSlcbiJ9IHs6c3ltIGFuZC1zcGVjLWltcGwsIDptZXRhIHs6ZG9jICJEbyBub3QgY2FsbCB0aGlzIGRpcmVjdGx5LCB1c2UgJ2FuZCciLCA6YXJnbGlzdHMgKFtmb3JtcyBwcmVkcyBnZm5dKX0sIDpzb3VyY2UgIihkZWZuXG4gYW5kLXNwZWMtaW1wbFxuIFwiRG8gbm90IGNhbGwgdGhpcyBkaXJlY3RseSwgdXNlICdhbmQnXCJcbiBbZm9ybXMgcHJlZHMgZ2ZuXVxuIChsZXRcbiAgW3NwZWNzXG4gICAoZGVsYXkgKG1hcHYgc3BlY2l6ZSBwcmVkcyBmb3JtcykpXG4gICBjZm9ybVxuICAgKGNhc2VcbiAgICAoY291bnQgcHJlZHMpXG4gICAgMlxuICAgIChmblxuICAgICBbeF1cbiAgICAgKGxldFxuICAgICAgW3NwZWNzIEBzcGVjcyByZXQgKGNvbmZvcm0qIChzcGVjcyAwKSB4KV1cbiAgICAgIChpZlxuICAgICAgIChpbnZhbGlkPyByZXQpXG4gICAgICAgOmNsanMuc3BlYy5hbHBoYS9pbnZhbGlkXG4gICAgICAgKGNvbmZvcm0qIChzcGVjcyAxKSByZXQpKSkpXG4gICAgM1xuICAgIChmblxuICAgICBbeF1cbiAgICAgKGxldFxuICAgICAgW3NwZWNzIEBzcGVjcyByZXQgKGNvbmZvcm0qIChzcGVjcyAwKSB4KV1cbiAgICAgIChpZlxuICAgICAgIChpbnZhbGlkPyByZXQpXG4gICAgICAgOmNsanMuc3BlYy5hbHBoYS9pbnZhbGlkXG4gICAgICAgKGxldFxuICAgICAgICBbcmV0IChjb25mb3JtKiAoc3BlY3MgMSkgcmV0KV1cbiAgICAgICAgKGlmXG4gICAgICAgICAoaW52YWxpZD8gcmV0KVxuICAgICAgICAgOmNsanMuc3BlYy5hbHBoYS9pbnZhbGlkXG4gICAgICAgICAoY29uZm9ybSogKHNwZWNzIDIpIHJldCkpKSkpKVxuICAgIChmblxuICAgICBbeF1cbiAgICAgKGxldFxuICAgICAgW3NwZWNzIEBzcGVjc11cbiAgICAgIChsb29wXG4gICAgICAgW3JldCB4IGkgMF1cbiAgICAgICAoaWZcbiAgICAgICAgKDwgaSAoY291bnQgc3BlY3MpKVxuICAgICAgICAobGV0XG4gICAgICAgICBbbnJldCAoY29uZm9ybSogKHNwZWNzIGkpIHJldCldXG4gICAgICAgICAoaWZcbiAgICAgICAgICAoaW52YWxpZD8gbnJldClcbiAgICAgICAgICA6Y2xqcy5zcGVjLmFscGhhL2ludmFsaWRcbiAgICAgICAgICAocmVjdXIgbnJldCAoaW5jIGkpKSkpXG4gICAgICAgIHJldCkpKSkpXVxuICAocmVpZnlcbiAgIFNwZWNpemVcbiAgIChzcGVjaXplKiBbc10gcylcbiAgIChzcGVjaXplKiBbcyBfXSBzKVxuICAgU3BlY1xuICAgKGNvbmZvcm0qIFtfIHhdIChjZm9ybSB4KSlcbiAgICh1bmZvcm0qXG4gICAgW18geF1cbiAgICAocmVkdWNlXG4gICAgIChmbiogW3AxX180MzA0OSMgcDJfXzQzMDQ4I10gKHVuZm9ybSBwMl9fNDMwNDgjIHAxX180MzA0OSMpKVxuICAgICB4XG4gICAgIChyZXZlcnNlIHByZWRzKSkpXG4gICAoZXhwbGFpbipcbiAgICBbXyBwYXRoIHZpYSBpbiB4XVxuICAgIChleHBsYWluLXByZWQtbGlzdCBmb3JtcyBwcmVkcyBwYXRoIHZpYSBpbiB4KSlcbiAgIChnZW4qXG4gICAgW18gb3ZlcnJpZGVzIHBhdGggcm1hcF1cbiAgICAoaWZcbiAgICAgZ2ZuXG4gICAgIChnZm4pXG4gICAgIChnZW5zdWIgKGZpcnN0IHByZWRzKSBvdmVycmlkZXMgcGF0aCBybWFwIChmaXJzdCBmb3JtcykpKSlcbiAgICh3aXRoLWdlbiogW18gZ2ZuXSAoYW5kLXNwZWMtaW1wbCBmb3JtcyBwcmVkcyBnZm4pKVxuICAgKGRlc2NyaWJlKlxuICAgIFtfXVxuICAgIChjbG9qdXJlLmNvcmUvc2VxdWVuY2VcbiAgICAgKGNsb2p1cmUuY29yZS9zZXFcbiAgICAgIChjbG9qdXJlLmNvcmUvY29uY2F0XG4gICAgICAgKGNsb2p1cmUuY29yZS9saXN0ICdjbGpzLnNwZWMuYWxwaGEvYW5kKVxuICAgICAgIGZvcm1zKSkpKSkpKVxuIn0gezpzeW0gZGVzY3JpYmUqLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3NwZWNdKX0sIDpwcm90b2NvbCBTcGVjfSB7OnN5bSBtYXAtc3BlYy1pbXBsLCA6bWV0YSB7OmRvYyAiRG8gbm90IGNhbGwgdGhpcyBkaXJlY3RseSwgdXNlICdzcGVjJyB3aXRoIGEgbWFwIGFyZ3VtZW50IiwgOmFyZ2xpc3RzIChbezprZXlzIFtyZXEtdW4gb3B0LXVuIGtleXMtcHJlZCBwcmVkLWV4cHJzIG9wdC1rZXlzIHJlcS1zcGVjcyByZXEgcmVxLWtleXMgb3B0LXNwZWNzIHByZWQtZm9ybXMgb3B0IGdmbl0sIDphcyBhcmdtfV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBtYXAtc3BlYy1pbXBsXG4gXCJEbyBub3QgY2FsbCB0aGlzIGRpcmVjdGx5LCB1c2UgJ3NwZWMnIHdpdGggYSBtYXAgYXJndW1lbnRcIlxuIFt7OmtleXNcbiAgIFtyZXEtdW5cbiAgICBvcHQtdW5cbiAgICBrZXlzLXByZWRcbiAgICBwcmVkLWV4cHJzXG4gICAgb3B0LWtleXNcbiAgICByZXEtc3BlY3NcbiAgICByZXFcbiAgICByZXEta2V5c1xuICAgIG9wdC1zcGVjc1xuICAgIHByZWQtZm9ybXNcbiAgICBvcHRcbiAgICBnZm5dLFxuICAgOmFzIGFyZ219XVxuIChsZXRcbiAgW2stPnNcbiAgICh6aXBtYXAgKGNvbmNhdCByZXEta2V5cyBvcHQta2V5cykgKGNvbmNhdCByZXEtc3BlY3Mgb3B0LXNwZWNzKSlcbiAgIGtleXMtPnNwZWNuYW1lc1xuICAgKGZuKiBbcDFfXzQzMDQwI10gKGMvb3IgKGstPnMgcDFfXzQzMDQwIykgcDFfXzQzMDQwIykpXG4gICBpZFxuICAgKHJhbmRvbS11dWlkKV1cbiAgKHJlaWZ5XG4gICBTcGVjaXplXG4gICAoc3BlY2l6ZSogW3NdIHMpXG4gICAoc3BlY2l6ZSogW3MgX10gcylcbiAgIFNwZWNcbiAgIChjb25mb3JtKlxuICAgIFtfIG1dXG4gICAgKGlmXG4gICAgIChrZXlzLXByZWQgbSlcbiAgICAgKGxldFxuICAgICAgW3JlZyAocmVnaXN0cnkpXVxuICAgICAgKGxvb3BcbiAgICAgICBbcmV0IG0gW1trIHZdICYga3MgOmFzIGtleXNdIG1dXG4gICAgICAgKGlmXG4gICAgICAgIGtleXNcbiAgICAgICAgKGxldFxuICAgICAgICAgW3NuYW1lIChrZXlzLT5zcGVjbmFtZXMgayldXG4gICAgICAgICAoaWYtbGV0XG4gICAgICAgICAgW3MgKGdldCByZWcgc25hbWUpXVxuICAgICAgICAgIChsZXRcbiAgICAgICAgICAgW2N2IChjb25mb3JtIHMgdildXG4gICAgICAgICAgIChpZlxuICAgICAgICAgICAgKGludmFsaWQ/IGN2KVxuICAgICAgICAgICAgOmNsanMuc3BlYy5hbHBoYS9pbnZhbGlkXG4gICAgICAgICAgICAocmVjdXIgKGlmIChpZGVudGljYWw/IGN2IHYpIHJldCAoYXNzb2MgcmV0IGsgY3YpKSBrcykpKVxuICAgICAgICAgIChyZWN1ciByZXQga3MpKSlcbiAgICAgICAgcmV0KSkpXG4gICAgIDpjbGpzLnNwZWMuYWxwaGEvaW52YWxpZCkpXG4gICAodW5mb3JtKlxuICAgIFtfIG1dXG4gICAgKGxldFxuICAgICBbcmVnIChyZWdpc3RyeSldXG4gICAgIChsb29wXG4gICAgICBbcmV0IG0gW2sgJiBrcyA6YXMga2V5c10gKGMva2V5cyBtKV1cbiAgICAgIChpZlxuICAgICAgIGtleXNcbiAgICAgICAoaWZcbiAgICAgICAgKGNvbnRhaW5zPyByZWcgKGtleXMtPnNwZWNuYW1lcyBrKSlcbiAgICAgICAgKGxldFxuICAgICAgICAgW2N2IChnZXQgbSBrKSB2ICh1bmZvcm0gKGtleXMtPnNwZWNuYW1lcyBrKSBjdildXG4gICAgICAgICAocmVjdXIgKGlmIChpZGVudGljYWw/IGN2IHYpIHJldCAoYXNzb2MgcmV0IGsgdikpIGtzKSlcbiAgICAgICAgKHJlY3VyIHJldCBrcykpXG4gICAgICAgcmV0KSkpKVxuICAgKGV4cGxhaW4qXG4gICAgW18gcGF0aCB2aWEgaW4geF1cbiAgICAoaWYtbm90XG4gICAgIChtYXA/IHgpXG4gICAgIFt7OnBhdGggcGF0aCwgOnByZWQgJ2Nsb2p1cmUuY29yZS9tYXA/LCA6dmFsIHgsIDp2aWEgdmlhLCA6aW4gaW59XVxuICAgICAobGV0XG4gICAgICBbcmVnIChyZWdpc3RyeSldXG4gICAgICAoYXBwbHlcbiAgICAgICBjb25jYXRcbiAgICAgICAod2hlbi1sZXRcbiAgICAgICAgW3Byb2JzXG4gICAgICAgICAoLT4+XG4gICAgICAgICAgKG1hcFxuICAgICAgICAgICAoZm4gW3ByZWQgZm9ybV0gKHdoZW4tbm90IChwcmVkIHgpIGZvcm0pKVxuICAgICAgICAgICBwcmVkLWV4cHJzXG4gICAgICAgICAgIHByZWQtZm9ybXMpXG4gICAgICAgICAgKGtlZXAgaWRlbnRpdHkpXG4gICAgICAgICAgc2VxKV1cbiAgICAgICAgKG1hcFxuICAgICAgICAgKGZuKlxuICAgICAgICAgIFtwMV9fNDMwNDEjXVxuICAgICAgICAgIChpZGVudGl0eVxuICAgICAgICAgICB7OnBhdGggcGF0aCwgOnByZWQgcDFfXzQzMDQxIywgOnZhbCB4LCA6dmlhIHZpYSwgOmluIGlufSkpXG4gICAgICAgICBwcm9icykpXG4gICAgICAgKG1hcFxuICAgICAgICAoZm5cbiAgICAgICAgIFtbayB2XV1cbiAgICAgICAgICh3aGVuLW5vdFxuICAgICAgICAgIChjL29yXG4gICAgICAgICAgIChub3QgKGNvbnRhaW5zPyByZWcgKGtleXMtPnNwZWNuYW1lcyBrKSkpXG4gICAgICAgICAgIChwdmFsaWQ/IChrZXlzLT5zcGVjbmFtZXMgaykgdiBrKSlcbiAgICAgICAgICAoZXhwbGFpbi0xXG4gICAgICAgICAgIChrZXlzLT5zcGVjbmFtZXMgaylcbiAgICAgICAgICAgKGtleXMtPnNwZWNuYW1lcyBrKVxuICAgICAgICAgICAoY29uaiBwYXRoIGspXG4gICAgICAgICAgIHZpYVxuICAgICAgICAgICAoY29uaiBpbiBrKVxuICAgICAgICAgICB2KSkpXG4gICAgICAgIChzZXEgeCkpKSkpKVxuICAgKGdlbipcbiAgICBbXyBvdmVycmlkZXMgcGF0aCBybWFwXVxuICAgIChpZlxuICAgICBnZm5cbiAgICAgKGdmbilcbiAgICAgKGxldFxuICAgICAgW3JtYXBcbiAgICAgICAoaW5jayBybWFwIGlkKVxuICAgICAgIHJnZW5cbiAgICAgICAoZm4gW2sgc10gW2sgKGdlbnN1YiBzIG92ZXJyaWRlcyAoY29uaiBwYXRoIGspIHJtYXAgayldKVxuICAgICAgIG9nZW5cbiAgICAgICAoZm5cbiAgICAgICAgW2sgc11cbiAgICAgICAgKHdoZW4tbm90XG4gICAgICAgICAocmVjdXItbGltaXQ/IHJtYXAgaWQgcGF0aCBrKVxuICAgICAgICAgW2sgKGdlbi9kZWxheSAoZ2Vuc3ViIHMgb3ZlcnJpZGVzIChjb25qIHBhdGggaykgcm1hcCBrKSldKSlcbiAgICAgICByZXFzXG4gICAgICAgKG1hcCByZ2VuIHJlcS1rZXlzIHJlcS1zcGVjcylcbiAgICAgICBvcHRzXG4gICAgICAgKHJlbW92ZSBuaWw/IChtYXAgb2dlbiBvcHQta2V5cyBvcHQtc3BlY3MpKV1cbiAgICAgICh3aGVuXG4gICAgICAgKGV2ZXJ5PyBpZGVudGl0eSAoY29uY2F0IChtYXAgc2Vjb25kIHJlcXMpIChtYXAgc2Vjb25kIG9wdHMpKSlcbiAgICAgICAoZ2VuL2JpbmRcbiAgICAgICAgKGdlbi90dXBsZVxuICAgICAgICAgKGFuZC1rLWdlbiByZXEpXG4gICAgICAgICAob3Itay1nZW4gb3B0KVxuICAgICAgICAgKGFuZC1rLWdlbiByZXEtdW4pXG4gICAgICAgICAob3Itay1nZW4gb3B0LXVuKSlcbiAgICAgICAgKGZuXG4gICAgICAgICBbW3JlcS1rcyBvcHQta3MgcmVxLXVuLWtzIG9wdC11bi1rc11dXG4gICAgICAgICAobGV0XG4gICAgICAgICAgW3Frc1xuICAgICAgICAgICAoZmxhdHRlbiAoY29uY2F0IHJlcS1rcyBvcHQta3MpKVxuICAgICAgICAgICB1bnFrc1xuICAgICAgICAgICAobWFwXG4gICAgICAgICAgICAoY29tcCBrZXl3b3JkIG5hbWUpXG4gICAgICAgICAgICAoZmxhdHRlbiAoY29uY2F0IHJlcS11bi1rcyBvcHQtdW4ta3MpKSldXG4gICAgICAgICAgKC0+PlxuICAgICAgICAgICAoaW50byByZXFzIG9wdHMpXG4gICAgICAgICAgIChmaWx0ZXJcbiAgICAgICAgICAgIChmbipcbiAgICAgICAgICAgICBbcDFfXzQzMDQyI11cbiAgICAgICAgICAgICAoKHNldCAoY29uY2F0IHFrcyB1bnFrcykpIChmaXJzdCBwMV9fNDMwNDIjKSkpKVxuICAgICAgICAgICAoYXBwbHkgY29uY2F0KVxuICAgICAgICAgICAoYXBwbHkgZ2VuL2hhc2gtbWFwKSkpKSkpKSkpXG4gICAod2l0aC1nZW4qIFtfIGdmbl0gKG1hcC1zcGVjLWltcGwgKGFzc29jIGFyZ20gOmdmbiBnZm4pKSlcbiAgIChkZXNjcmliZSpcbiAgICBbX11cbiAgICAoY29uc1xuICAgICAnY2xqcy5zcGVjLmFscGhhL2tleXNcbiAgICAgKGNvbmQtPlxuICAgICAgW11cbiAgICAgIHJlcVxuICAgICAgKGNvbmogOnJlcSByZXEpXG4gICAgICBvcHRcbiAgICAgIChjb25qIDpvcHQgb3B0KVxuICAgICAgcmVxLXVuXG4gICAgICAoY29uaiA6cmVxLXVuIHJlcS11bilcbiAgICAgIG9wdC11blxuICAgICAgKGNvbmogOm9wdC11biBvcHQtdW4pKSkpKSkpXG4ifSB7OnN5bSBleHBsYWluLCA6bWV0YSB7OmRvYyAiR2l2ZW4gYSBzcGVjIGFuZCBhIHZhbHVlIHRoYXQgZmFpbHMgdG8gY29uZm9ybSwgcHJpbnRzIGFuIGV4cGxhbmF0aW9uIHRvICpvdXQqLiIsIDphcmdsaXN0cyAoW3NwZWMgeF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBleHBsYWluXG4gXCJHaXZlbiBhIHNwZWMgYW5kIGEgdmFsdWUgdGhhdCBmYWlscyB0byBjb25mb3JtLCBwcmludHMgYW4gZXhwbGFuYXRpb24gdG8gKm91dCouXCJcbiBbc3BlYyB4XVxuIChleHBsYWluLW91dCAoZXhwbGFpbi1kYXRhIHNwZWMgeCkpKVxuIn0gezpzeW0gd2l0aC1nZW4qLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3NwZWMgZ2ZuXSl9LCA6cHJvdG9jb2wgU3BlY30gezpzeW0gb3Itc3BlYy1pbXBsLCA6bWV0YSB7OmRvYyAiRG8gbm90IGNhbGwgdGhpcyBkaXJlY3RseSwgdXNlICdvciciLCA6YXJnbGlzdHMgKFtrZXlzIGZvcm1zIHByZWRzIGdmbl0pfSwgOnNvdXJjZSAiKGRlZm5cbiBvci1zcGVjLWltcGxcbiBcIkRvIG5vdCBjYWxsIHRoaXMgZGlyZWN0bHksIHVzZSAnb3InXCJcbiBba2V5cyBmb3JtcyBwcmVkcyBnZm5dXG4gKGxldFxuICBbaWRcbiAgIChyYW5kb20tdXVpZClcbiAgIGtwc1xuICAgKHppcG1hcCBrZXlzIHByZWRzKVxuICAgc3BlY3NcbiAgIChkZWxheSAobWFwdiBzcGVjaXplIHByZWRzIGZvcm1zKSlcbiAgIGNmb3JtXG4gICAoY2FzZVxuICAgIChjb3VudCBwcmVkcylcbiAgICAyXG4gICAgKGZuXG4gICAgIFt4XVxuICAgICAobGV0XG4gICAgICBbc3BlY3MgQHNwZWNzIHJldCAoY29uZm9ybSogKHNwZWNzIDApIHgpXVxuICAgICAgKGlmXG4gICAgICAgKGludmFsaWQ/IHJldClcbiAgICAgICAobGV0XG4gICAgICAgIFtyZXQgKGNvbmZvcm0qIChzcGVjcyAxKSB4KV1cbiAgICAgICAgKGlmXG4gICAgICAgICAoaW52YWxpZD8gcmV0KVxuICAgICAgICAgOmNsanMuc3BlYy5hbHBoYS9pbnZhbGlkXG4gICAgICAgICAodGFnZ2VkLXJldCAoa2V5cyAxKSByZXQpKSlcbiAgICAgICAodGFnZ2VkLXJldCAoa2V5cyAwKSByZXQpKSkpXG4gICAgM1xuICAgIChmblxuICAgICBbeF1cbiAgICAgKGxldFxuICAgICAgW3NwZWNzIEBzcGVjcyByZXQgKGNvbmZvcm0qIChzcGVjcyAwKSB4KV1cbiAgICAgIChpZlxuICAgICAgIChpbnZhbGlkPyByZXQpXG4gICAgICAgKGxldFxuICAgICAgICBbcmV0IChjb25mb3JtKiAoc3BlY3MgMSkgeCldXG4gICAgICAgIChpZlxuICAgICAgICAgKGludmFsaWQ/IHJldClcbiAgICAgICAgIChsZXRcbiAgICAgICAgICBbcmV0IChjb25mb3JtKiAoc3BlY3MgMikgeCldXG4gICAgICAgICAgKGlmXG4gICAgICAgICAgIChpbnZhbGlkPyByZXQpXG4gICAgICAgICAgIDpjbGpzLnNwZWMuYWxwaGEvaW52YWxpZFxuICAgICAgICAgICAodGFnZ2VkLXJldCAoa2V5cyAyKSByZXQpKSlcbiAgICAgICAgICh0YWdnZWQtcmV0IChrZXlzIDEpIHJldCkpKVxuICAgICAgICh0YWdnZWQtcmV0IChrZXlzIDApIHJldCkpKSlcbiAgICAoZm5cbiAgICAgW3hdXG4gICAgIChsZXRcbiAgICAgIFtzcGVjcyBAc3BlY3NdXG4gICAgICAobG9vcFxuICAgICAgIFtpIDBdXG4gICAgICAgKGlmXG4gICAgICAgICg8IGkgKGNvdW50IHNwZWNzKSlcbiAgICAgICAgKGxldFxuICAgICAgICAgW3NwZWMgKHNwZWNzIGkpXVxuICAgICAgICAgKGxldFxuICAgICAgICAgIFtyZXQgKGNvbmZvcm0qIHNwZWMgeCldXG4gICAgICAgICAgKGlmXG4gICAgICAgICAgIChpbnZhbGlkPyByZXQpXG4gICAgICAgICAgIChyZWN1ciAoaW5jIGkpKVxuICAgICAgICAgICAodGFnZ2VkLXJldCAoa2V5cyBpKSByZXQpKSkpXG4gICAgICAgIDpjbGpzLnNwZWMuYWxwaGEvaW52YWxpZCkpKSkpXVxuICAocmVpZnlcbiAgIFNwZWNpemVcbiAgIChzcGVjaXplKiBbc10gcylcbiAgIChzcGVjaXplKiBbcyBfXSBzKVxuICAgU3BlY1xuICAgKGNvbmZvcm0qIFtfIHhdIChjZm9ybSB4KSlcbiAgICh1bmZvcm0qIFtfIFtrIHhdXSAodW5mb3JtIChrcHMgaykgeCkpXG4gICAoZXhwbGFpbipcbiAgICBbdGhpcyBwYXRoIHZpYSBpbiB4XVxuICAgICh3aGVuLW5vdFxuICAgICAocHZhbGlkPyB0aGlzIHgpXG4gICAgIChhcHBseVxuICAgICAgY29uY2F0XG4gICAgICAobWFwXG4gICAgICAgKGZuXG4gICAgICAgIFtrIGZvcm0gcHJlZF1cbiAgICAgICAgKHdoZW4tbm90XG4gICAgICAgICAocHZhbGlkPyBwcmVkIHgpXG4gICAgICAgICAoZXhwbGFpbi0xIGZvcm0gcHJlZCAoY29uaiBwYXRoIGspIHZpYSBpbiB4KSkpXG4gICAgICAga2V5c1xuICAgICAgIGZvcm1zXG4gICAgICAgcHJlZHMpKSkpXG4gICAoZ2VuKlxuICAgIFtfIG92ZXJyaWRlcyBwYXRoIHJtYXBdXG4gICAgKGlmXG4gICAgIGdmblxuICAgICAoZ2ZuKVxuICAgICAobGV0XG4gICAgICBbZ2VuXG4gICAgICAgKGZuXG4gICAgICAgIFtrIHAgZl1cbiAgICAgICAgKGxldFxuICAgICAgICAgW3JtYXAgKGluY2sgcm1hcCBpZCldXG4gICAgICAgICAod2hlbi1ub3RcbiAgICAgICAgICAocmVjdXItbGltaXQ/IHJtYXAgaWQgcGF0aCBrKVxuICAgICAgICAgIChnZW4vZGVsYXkgKGdlbnN1YiBwIG92ZXJyaWRlcyAoY29uaiBwYXRoIGspIHJtYXAgZikpKSkpXG4gICAgICAgZ3NcbiAgICAgICAocmVtb3ZlIG5pbD8gKG1hcCBnZW4ga2V5cyBwcmVkcyBmb3JtcykpXVxuICAgICAgKHdoZW4tbm90IChlbXB0eT8gZ3MpIChnZW4vb25lLW9mIGdzKSkpKSlcbiAgICh3aXRoLWdlbiogW18gZ2ZuXSAob3Itc3BlYy1pbXBsIGtleXMgZm9ybXMgcHJlZHMgZ2ZuKSlcbiAgIChkZXNjcmliZSpcbiAgICBbX11cbiAgICAoY2xvanVyZS5jb3JlL3NlcXVlbmNlXG4gICAgIChjbG9qdXJlLmNvcmUvc2VxXG4gICAgICAoY2xvanVyZS5jb3JlL2NvbmNhdFxuICAgICAgIChjbG9qdXJlLmNvcmUvbGlzdCAnY2xqcy5zcGVjLmFscGhhL29yKVxuICAgICAgIChtYXBjYXQgdmVjdG9yIGtleXMgZm9ybXMpKSkpKSkpKVxuIn0gezpzeW0gKmZzcGVjLWl0ZXJhdGlvbnMqLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZlxuICpmc3BlYy1pdGVyYXRpb25zKlxuIFwiVGhlIG51bWJlciBvZiB0aW1lcyBhbiBhbm9ueW1vdXMgZm4gc3BlY2lmaWVkIGJ5IGZzcGVjIHdpbGwgYmUgKGdlbmVyYXRpdmVseSkgdGVzdGVkIGR1cmluZyBjb25mb3JtXCJcbiAyMSlcbiJ9IHs6c3ltIFNwZWMsIDptZXRhIHs6ZG9jIG5pbH0sIDptZXRob2RzIChjb25mb3JtKiBkZXNjcmliZSogZXhwbGFpbiogZ2VuKiB1bmZvcm0qIHdpdGgtZ2VuKil9IHs6c3ltIHVuZm9ybSwgOm1ldGEgezpkb2MgIkdpdmVuIGEgc3BlYyBhbmQgYSB2YWx1ZSBjcmVhdGVkIGJ5IG9yIGNvbXBsaWFudCB3aXRoIGEgY2FsbCB0b1xuICAnY29uZm9ybScgd2l0aCB0aGUgc2FtZSBzcGVjLCByZXR1cm5zIGEgdmFsdWUgd2l0aCBhbGwgY29uZm9ybVxuICAgZGVzdHJ1Y3R1cmluZyB1bmRvbmUuIiwgOmFyZ2xpc3RzIChbc3BlYyB4XSl9LCA6c291cmNlICIoZGVmblxuIHVuZm9ybVxuIFwiR2l2ZW4gYSBzcGVjIGFuZCBhIHZhbHVlIGNyZWF0ZWQgYnkgb3IgY29tcGxpYW50IHdpdGggYSBjYWxsIHRvXFxuICAnY29uZm9ybScgd2l0aCB0aGUgc2FtZSBzcGVjLCByZXR1cm5zIGEgdmFsdWUgd2l0aCBhbGwgY29uZm9ybVxcbiAgIGRlc3RydWN0dXJpbmcgdW5kb25lLlwiXG4gW3NwZWMgeF1cbiAodW5mb3JtKiAoc3BlY2l6ZSBzcGVjKSB4KSlcbiJ9IHs6c3ltIHZhbGlkPywgOm1ldGEgezpkb2MgIkhlbHBlciBmdW5jdGlvbiB0aGF0IHJldHVybnMgdHJ1ZSB3aGVuIHggaXMgdmFsaWQgZm9yIHNwZWMuIiwgOmFyZ2xpc3RzIFtbc3BlYyB4XSBbc3BlYyB4IGZvcm1dXX0sIDpzb3VyY2UgIihkZWZuXG4gdmFsaWQ/XG4gXCJIZWxwZXIgZnVuY3Rpb24gdGhhdCByZXR1cm5zIHRydWUgd2hlbiB4IGlzIHZhbGlkIGZvciBzcGVjLlwiXG4gKFtzcGVjIHhdXG4gIChsZXQgW3NwZWMgKHNwZWNpemUgc3BlYyldIChub3QgKGludmFsaWQ/IChjb25mb3JtKiBzcGVjIHgpKSkpKVxuIChbc3BlYyB4IGZvcm1dXG4gIChsZXQgW3NwZWMgKHNwZWNpemUgc3BlYyBmb3JtKV0gKG5vdCAoaW52YWxpZD8gKGNvbmZvcm0qIHNwZWMgeCkpKSkpKVxuIn0gezpzeW0gZ2VuLCA6bWV0YSB7OmRvYyAiR2l2ZW4gYSBzcGVjLCByZXR1cm5zIHRoZSBnZW5lcmF0b3IgZm9yIGl0LCBvciB0aHJvd3MgaWYgbm9uZSBjYW5cbiAgYmUgY29uc3RydWN0ZWQuIE9wdGlvbmFsbHkgYW4gb3ZlcnJpZGVzIG1hcCBjYW4gYmUgcHJvdmlkZWQgd2hpY2hcbiAgc2hvdWxkIG1hcCBzcGVjIG5hbWVzIG9yIHBhdGhzICh2ZWN0b3JzIG9mIGtleXdvcmRzKSB0byBuby1hcmdcbiAgZ2VuZXJhdG9yLWNyZWF0aW5nIGZucy4gVGhlc2Ugd2lsbCBiZSB1c2VkIGluc3RlYWQgb2YgdGhlIGdlbmVyYXRvcnMgYXQgdGhvc2VcbiAgbmFtZXMvcGF0aHMuIE5vdGUgdGhhdCBwYXJlbnQgZ2VuZXJhdG9yIChpbiB0aGUgc3BlYyBvciBvdmVycmlkZXNcbiAgbWFwKSB3aWxsIHN1cGVyc2VkZSB0aG9zZSBvZiBhbnkgc3VidHJlZXMuIEEgZ2VuZXJhdG9yIGZvciBhIHJlZ2V4XG4gIG9wIG11c3QgYWx3YXlzIHJldHVybiBhIHNlcXVlbnRpYWwgY29sbGVjdGlvbiAoaS5lLiBhIGdlbmVyYXRvciBmb3JcbiAgcy8/IHNob3VsZCByZXR1cm4gZWl0aGVyIGFuIGVtcHR5IHNlcXVlbmNlL3ZlY3RvciBvciBhXG4gIHNlcXVlbmNlL3ZlY3RvciB3aXRoIG9uZSBpdGVtIGluIGl0KSIsIDphcmdsaXN0cyBbW3NwZWNdIFtzcGVjIG92ZXJyaWRlc11dfSwgOnNvdXJjZSAiKGRlZm5cbiBnZW5cbiBcIkdpdmVuIGEgc3BlYywgcmV0dXJucyB0aGUgZ2VuZXJhdG9yIGZvciBpdCwgb3IgdGhyb3dzIGlmIG5vbmUgY2FuXFxuICBiZSBjb25zdHJ1Y3RlZC4gT3B0aW9uYWxseSBhbiBvdmVycmlkZXMgbWFwIGNhbiBiZSBwcm92aWRlZCB3aGljaFxcbiAgc2hvdWxkIG1hcCBzcGVjIG5hbWVzIG9yIHBhdGhzICh2ZWN0b3JzIG9mIGtleXdvcmRzKSB0byBuby1hcmdcXG4gIGdlbmVyYXRvci1jcmVhdGluZyBmbnMuIFRoZXNlIHdpbGwgYmUgdXNlZCBpbnN0ZWFkIG9mIHRoZSBnZW5lcmF0b3JzIGF0IHRob3NlXFxuICBuYW1lcy9wYXRocy4gTm90ZSB0aGF0IHBhcmVudCBnZW5lcmF0b3IgKGluIHRoZSBzcGVjIG9yIG92ZXJyaWRlc1xcbiAgbWFwKSB3aWxsIHN1cGVyc2VkZSB0aG9zZSBvZiBhbnkgc3VidHJlZXMuIEEgZ2VuZXJhdG9yIGZvciBhIHJlZ2V4XFxuICBvcCBtdXN0IGFsd2F5cyByZXR1cm4gYSBzZXF1ZW50aWFsIGNvbGxlY3Rpb24gKGkuZS4gYSBnZW5lcmF0b3IgZm9yXFxuICBzLz8gc2hvdWxkIHJldHVybiBlaXRoZXIgYW4gZW1wdHkgc2VxdWVuY2UvdmVjdG9yIG9yIGFcXG4gIHNlcXVlbmNlL3ZlY3RvciB3aXRoIG9uZSBpdGVtIGluIGl0KVwiXG4gKFtzcGVjXSAoZ2VuIHNwZWMgbmlsKSlcbiAoW3NwZWMgb3ZlcnJpZGVzXVxuICAoZ2Vuc3ViXG4gICBzcGVjXG4gICBvdmVycmlkZXNcbiAgIFtdXG4gICB7OmNsanMuc3BlYy5hbHBoYS9yZWN1cnNpb24tbGltaXQgKnJlY3Vyc2lvbi1saW1pdCp9XG4gICBzcGVjKSkpXG4ifSB7OnN5bSBub25jb25mb3JtaW5nLCA6bWV0YSB7OmRvYyAidGFrZXMgYSBzcGVjIGFuZCByZXR1cm5zIGEgc3BlYyB0aGF0IGhhcyB0aGUgc2FtZSBwcm9wZXJ0aWVzIGV4Y2VwdFxuICAnY29uZm9ybScgcmV0dXJucyB0aGUgb3JpZ2luYWwgKG5vdCB0aGUgY29uZm9ybWVkKSB2YWx1ZS4gTm90ZSwgd2lsbCBzcGVjaXplIHJlZ2V4IG9wcy4iLCA6YXJnbGlzdHMgKFtzcGVjXSl9LCA6c291cmNlICIoZGVmblxuIG5vbmNvbmZvcm1pbmdcbiBcInRha2VzIGEgc3BlYyBhbmQgcmV0dXJucyBhIHNwZWMgdGhhdCBoYXMgdGhlIHNhbWUgcHJvcGVydGllcyBleGNlcHRcXG4gICdjb25mb3JtJyByZXR1cm5zIHRoZSBvcmlnaW5hbCAobm90IHRoZSBjb25mb3JtZWQpIHZhbHVlLiBOb3RlLCB3aWxsIHNwZWNpemUgcmVnZXggb3BzLlwiXG4gW3NwZWNdXG4gKGxldFxuICBbc3BlYyAoZGVsYXkgKHNwZWNpemUgc3BlYykpXVxuICAocmVpZnlcbiAgIFNwZWNpemVcbiAgIChzcGVjaXplKiBbc10gcylcbiAgIChzcGVjaXplKiBbcyBfXSBzKVxuICAgU3BlY1xuICAgKGNvbmZvcm0qXG4gICAgW18geF1cbiAgICAobGV0XG4gICAgIFtyZXQgKGNvbmZvcm0qIEBzcGVjIHgpXVxuICAgICAoaWYgKGludmFsaWQ/IHJldCkgOmNsanMuc3BlYy5hbHBoYS9pbnZhbGlkIHgpKSlcbiAgICh1bmZvcm0qIFtfIHhdICh1bmZvcm0qIEBzcGVjIHgpKVxuICAgKGV4cGxhaW4qIFtfIHBhdGggdmlhIGluIHhdIChleHBsYWluKiBAc3BlYyBwYXRoIHZpYSBpbiB4KSlcbiAgIChnZW4qIFtfIG92ZXJyaWRlcyBwYXRoIHJtYXBdIChnZW4qIEBzcGVjIG92ZXJyaWRlcyBwYXRoIHJtYXApKVxuICAgKHdpdGgtZ2VuKiBbXyBnZm5dIChub25jb25mb3JtaW5nICh3aXRoLWdlbiogQHNwZWMgZ2ZuKSkpXG4gICAoZGVzY3JpYmUqXG4gICAgW19dXG4gICAgKGNsb2p1cmUuY29yZS9zZXF1ZW5jZVxuICAgICAoY2xvanVyZS5jb3JlL3NlcVxuICAgICAgKGNsb2p1cmUuY29yZS9jb25jYXRcbiAgICAgICAoY2xvanVyZS5jb3JlL2xpc3QgJ2NsanMuc3BlYy5hbHBoYS9ub25jb25mb3JtaW5nKVxuICAgICAgIChjbG9qdXJlLmNvcmUvbGlzdCAoZGVzY3JpYmUqIEBzcGVjKSkpKSkpKSkpXG4ifSB7OnN5bSB1bmZvcm0qLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3NwZWMgeV0pfSwgOnByb3RvY29sIFNwZWN9IHs6c3ltIGFiYnJldiwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtmb3JtXSl9LCA6c291cmNlICIoZGVmblxuIGFiYnJldlxuIFtmb3JtXVxuIChjb25kXG4gIChzZXE/IGZvcm0pXG4gICh3YWxrL3Bvc3R3YWxrXG4gICAoZm5cbiAgICBbZm9ybV1cbiAgICAoY29uZFxuICAgICAoYy9hbmQgKHN5bWJvbD8gZm9ybSkgKG5hbWVzcGFjZSBmb3JtKSlcbiAgICAgKC0+IGZvcm0gbmFtZSBzeW1ib2wpXG4gICAgIChjL2FuZCAoc2VxPyBmb3JtKSAoPSAnZm4gKGZpcnN0IGZvcm0pKSAoPSAnWyVdIChzZWNvbmQgZm9ybSkpKVxuICAgICAobGFzdCBmb3JtKVxuICAgICA6ZWxzZVxuICAgICBmb3JtKSlcbiAgIGZvcm0pXG4gIChjL2FuZCAoc3ltYm9sPyBmb3JtKSAobmFtZXNwYWNlIGZvcm0pKVxuICAoLT4gZm9ybSBuYW1lIHN5bWJvbClcbiAgOmVsc2VcbiAgZm9ybSkpXG4ifSB7OnN5bSByZWdleD8sIDptZXRhIHs6ZG9jICJyZXR1cm5zIHggaWYgeCBpcyBhIChjbGpzLnNwZWMuYWxwaGEpIHJlZ2V4IG9wLCBlbHNlIGxvZ2ljYWwgZmFsc2UiLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmblxuIHJlZ2V4P1xuIFwicmV0dXJucyB4IGlmIHggaXMgYSAoY2xqcy5zcGVjLmFscGhhKSByZWdleCBvcCwgZWxzZSBsb2dpY2FsIGZhbHNlXCJcbiBbeF1cbiAoYy9hbmQgKDpjbGpzLnNwZWMuYWxwaGEvb3AgeCkgeCkpXG4ifSB7OnN5bSBpbnQtaW4tcmFuZ2U/LCA6bWV0YSB7OmRvYyAiUmV0dXJuIHRydWUgaWYgc3RhcnQgPD0gdmFsLCB2YWwgPCBlbmQgYW5kIHZhbCBpcyBhIGZpeGVkXG4gIHByZWNpc2lvbiBpbnRlZ2VyLiIsIDphcmdsaXN0cyAoW3N0YXJ0IGVuZCB2YWxdKX0sIDpzb3VyY2UgIihkZWZuXG4gaW50LWluLXJhbmdlP1xuIFwiUmV0dXJuIHRydWUgaWYgc3RhcnQgPD0gdmFsLCB2YWwgPCBlbmQgYW5kIHZhbCBpcyBhIGZpeGVkXFxuICBwcmVjaXNpb24gaW50ZWdlci5cIlxuIFtzdGFydCBlbmQgdmFsXVxuIChjb25kXG4gIChpbnRlZ2VyPyB2YWwpXG4gIChjL2FuZCAoPD0gc3RhcnQgdmFsKSAoPCB2YWwgZW5kKSlcbiAgKGluc3RhbmNlPyBnb29nLm1hdGguTG9uZyB2YWwpXG4gIChjL2FuZCAoLmxlc3NUaGFuT3JFcXVhbCBzdGFydCB2YWwpICgubGVzc1RoYW4gdmFsIGVuZCkpXG4gIChpbnN0YW5jZT8gZ29vZy5tYXRoLkludGVnZXIgdmFsKVxuICAoYy9hbmQgKC5sZXNzVGhhbk9yRXF1YWwgc3RhcnQgdmFsKSAoLmxlc3NUaGFuIHZhbCBlbmQpKVxuICA6ZWxzZVxuICBmYWxzZSkpXG4ifSB7OnN5bSBzcGVjPywgOm1ldGEgezpkb2MgInJldHVybnMgeCBpZiB4IGlzIGEgc3BlYyBvYmplY3QsIGVsc2UgbG9naWNhbCBmYWxzZSIsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuXG4gc3BlYz9cbiBcInJldHVybnMgeCBpZiB4IGlzIGEgc3BlYyBvYmplY3QsIGVsc2UgbG9naWNhbCBmYWxzZVwiXG4gW3hdXG4gKHdoZW4gKGltcGxlbWVudHM/IFNwZWMgeCkgeCkpXG4ifSB7OnN5bSByZWdpc3RyeSwgOm1ldGEgezpkb2MgInJldHVybnMgdGhlIHJlZ2lzdHJ5IG1hcCwgcHJlZmVyICdnZXQtc3BlYycgdG8gbG9va3VwIGEgc3BlYyBieSBuYW1lIiwgOmFyZ2xpc3RzIChbXSl9LCA6c291cmNlICIoZGVmblxuIHJlZ2lzdHJ5XG4gXCJyZXR1cm5zIHRoZSByZWdpc3RyeSBtYXAsIHByZWZlciAnZ2V0LXNwZWMnIHRvIGxvb2t1cCBhIHNwZWMgYnkgbmFtZVwiXG4gW11cbiBAcmVnaXN0cnktcmVmKVxuIn0gezpzeW0gcmVwK2ltcGwsIDptZXRhIHs6ZG9jICJEbyBub3QgY2FsbCB0aGlzIGRpcmVjdGx5LCB1c2UgJysnIiwgOmFyZ2xpc3RzIChbZm9ybSBwXSl9LCA6c291cmNlICIoZGVmblxuIHJlcCtpbXBsXG4gXCJEbyBub3QgY2FsbCB0aGlzIGRpcmVjdGx5LCB1c2UgJysnXCJcbiBbZm9ybSBwXVxuIChwY2F0KlxuICB7OnBzIFtwIChyZXAqIHAgcCBbXSB0cnVlIGZvcm0pXSxcbiAgIDpmb3Jtc1xuICAgKGNsb2p1cmUuY29yZS92ZWNcbiAgICAoY2xvanVyZS5jb3JlL3NlcXVlbmNlXG4gICAgIChjbG9qdXJlLmNvcmUvc2VxXG4gICAgICAoY2xvanVyZS5jb3JlL2NvbmNhdFxuICAgICAgIChjbG9qdXJlLmNvcmUvbGlzdCBmb3JtKVxuICAgICAgIChjbG9qdXJlLmNvcmUvbGlzdFxuICAgICAgICAoY2xvanVyZS5jb3JlL3NlcXVlbmNlXG4gICAgICAgICAoY2xvanVyZS5jb3JlL3NlcVxuICAgICAgICAgIChjbG9qdXJlLmNvcmUvY29uY2F0XG4gICAgICAgICAgIChjbG9qdXJlLmNvcmUvbGlzdCAnY2xqcy5zcGVjLmFscGhhLyopXG4gICAgICAgICAgIChjbG9qdXJlLmNvcmUvbGlzdCBmb3JtKSkpKSkpKSkpLFxuICAgOnJldCBbXSxcbiAgIDpyZXArIGZvcm19KSlcbiJ9IHs6c3ltIGV4ZXJjaXNlLCA6bWV0YSB7OmRvYyAiZ2VuZXJhdGVzIGEgbnVtYmVyIChkZWZhdWx0IDEwKSBvZiB2YWx1ZXMgY29tcGF0aWJsZSB3aXRoIHNwZWMgYW5kIG1hcHMgY29uZm9ybSBvdmVyIHRoZW0sXG4gIHJldHVybmluZyBhIHNlcXVlbmNlIG9mIFt2YWwgY29uZm9ybWVkLXZhbF0gdHVwbGVzLiBPcHRpb25hbGx5IHRha2VzXG4gIGEgZ2VuZXJhdG9yIG92ZXJyaWRlcyBtYXAgYXMgcGVyIGdlbiIsIDphcmdsaXN0cyBbW3NwZWNdIFtzcGVjIG5dIFtzcGVjIG4gb3ZlcnJpZGVzXV19LCA6c291cmNlICIoZGVmblxuIGV4ZXJjaXNlXG4gXCJnZW5lcmF0ZXMgYSBudW1iZXIgKGRlZmF1bHQgMTApIG9mIHZhbHVlcyBjb21wYXRpYmxlIHdpdGggc3BlYyBhbmQgbWFwcyBjb25mb3JtIG92ZXIgdGhlbSxcXG4gIHJldHVybmluZyBhIHNlcXVlbmNlIG9mIFt2YWwgY29uZm9ybWVkLXZhbF0gdHVwbGVzLiBPcHRpb25hbGx5IHRha2VzXFxuICBhIGdlbmVyYXRvciBvdmVycmlkZXMgbWFwIGFzIHBlciBnZW5cIlxuIChbc3BlY10gKGV4ZXJjaXNlIHNwZWMgMTApKVxuIChbc3BlYyBuXSAoZXhlcmNpc2Ugc3BlYyBuIG5pbCkpXG4gKFtzcGVjIG4gb3ZlcnJpZGVzXVxuICAobWFwXG4gICAoZm4qIFtwMV9fNDMwNzMjXSAodmVjdG9yIHAxX180MzA3MyMgKGNvbmZvcm0gc3BlYyBwMV9fNDMwNzMjKSkpXG4gICAoZ2VuL3NhbXBsZSAoZ2VuIHNwZWMgb3ZlcnJpZGVzKSBuKSkpKVxuIn0gezpzeW0gZXhwbGFpbi1kYXRhLCA6bWV0YSB7OmRvYyAiR2l2ZW4gYSBzcGVjIGFuZCBhIHZhbHVlIHggd2hpY2ggb3VnaHQgdG8gY29uZm9ybSwgcmV0dXJucyBuaWwgaWYgeFxuICBjb25mb3JtcywgZWxzZSBhIG1hcCB3aXRoIGF0IGxlYXN0IHRoZSBrZXkgOjpwcm9ibGVtcyB3aG9zZSB2YWx1ZSBpc1xuICBhIGNvbGxlY3Rpb24gb2YgcHJvYmxlbS1tYXBzLCB3aGVyZSBwcm9ibGVtLW1hcCBoYXMgYXQgbGVhc3QgOnBhdGggOnByZWQgYW5kIDp2YWxcbiAga2V5cyBkZXNjcmliaW5nIHRoZSBwcmVkaWNhdGUgYW5kIHRoZSB2YWx1ZSB0aGF0IGZhaWxlZCBhdCB0aGF0XG4gIHBhdGguIiwgOmFyZ2xpc3RzIChbc3BlYyB4XSl9LCA6c291cmNlICIoZGVmblxuIGV4cGxhaW4tZGF0YVxuIFwiR2l2ZW4gYSBzcGVjIGFuZCBhIHZhbHVlIHggd2hpY2ggb3VnaHQgdG8gY29uZm9ybSwgcmV0dXJucyBuaWwgaWYgeFxcbiAgY29uZm9ybXMsIGVsc2UgYSBtYXAgd2l0aCBhdCBsZWFzdCB0aGUga2V5IDo6cHJvYmxlbXMgd2hvc2UgdmFsdWUgaXNcXG4gIGEgY29sbGVjdGlvbiBvZiBwcm9ibGVtLW1hcHMsIHdoZXJlIHByb2JsZW0tbWFwIGhhcyBhdCBsZWFzdCA6cGF0aCA6cHJlZCBhbmQgOnZhbFxcbiAga2V5cyBkZXNjcmliaW5nIHRoZSBwcmVkaWNhdGUgYW5kIHRoZSB2YWx1ZSB0aGF0IGZhaWxlZCBhdCB0aGF0XFxuICBwYXRoLlwiXG4gW3NwZWMgeF1cbiAoZXhwbGFpbi1kYXRhKlxuICBzcGVjXG4gIFtdXG4gIChpZi1sZXQgW25hbWUgKHNwZWMtbmFtZSBzcGVjKV0gW25hbWVdIFtdKVxuICBbXVxuICB4KSlcbiJ9IHs6c3ltIHR1cGxlLWltcGwsIDptZXRhIHs6ZG9jICJEbyBub3QgY2FsbCB0aGlzIGRpcmVjdGx5LCB1c2UgJ3R1cGxlJyIsIDphcmdsaXN0cyBbW2Zvcm1zIHByZWRzXSBbZm9ybXMgcHJlZHMgZ2ZuXV19LCA6c291cmNlICIoZGVmblxuIHR1cGxlLWltcGxcbiBcIkRvIG5vdCBjYWxsIHRoaXMgZGlyZWN0bHksIHVzZSAndHVwbGUnXCJcbiAoW2Zvcm1zIHByZWRzXSAodHVwbGUtaW1wbCBmb3JtcyBwcmVkcyBuaWwpKVxuIChbZm9ybXMgcHJlZHMgZ2ZuXVxuICAobGV0XG4gICBbc3BlY3MgKGRlbGF5IChtYXB2IHNwZWNpemUgcHJlZHMgZm9ybXMpKSBjbnQgKGNvdW50IHByZWRzKV1cbiAgIChyZWlmeVxuICAgIFNwZWNpemVcbiAgICAoc3BlY2l6ZSogW3NdIHMpXG4gICAgKHNwZWNpemUqIFtzIF9dIHMpXG4gICAgU3BlY1xuICAgIChjb25mb3JtKlxuICAgICBbXyB4XVxuICAgICAobGV0XG4gICAgICBbc3BlY3MgQHNwZWNzXVxuICAgICAgKGlmLW5vdFxuICAgICAgIChjL2FuZCAodmVjdG9yPyB4KSAoPSAoY291bnQgeCkgY250KSlcbiAgICAgICA6Y2xqcy5zcGVjLmFscGhhL2ludmFsaWRcbiAgICAgICAobG9vcFxuICAgICAgICBbcmV0IHggaSAwXVxuICAgICAgICAoaWZcbiAgICAgICAgICg9IGkgY250KVxuICAgICAgICAgcmV0XG4gICAgICAgICAobGV0XG4gICAgICAgICAgW3YgKHggaSkgY3YgKGNvbmZvcm0qIChzcGVjcyBpKSB2KV1cbiAgICAgICAgICAoaWZcbiAgICAgICAgICAgKGludmFsaWQ/IGN2KVxuICAgICAgICAgICA6Y2xqcy5zcGVjLmFscGhhL2ludmFsaWRcbiAgICAgICAgICAgKHJlY3VyXG4gICAgICAgICAgICAoaWYgKGlkZW50aWNhbD8gY3YgdikgcmV0IChhc3NvYyByZXQgaSBjdikpXG4gICAgICAgICAgICAoaW5jIGkpKSkpKSkpKSlcbiAgICAodW5mb3JtKlxuICAgICBbXyB4XVxuICAgICAoYXNzZXJ0IChjL2FuZCAodmVjdG9yPyB4KSAoPSAoY291bnQgeCkgKGNvdW50IHByZWRzKSkpKVxuICAgICAobG9vcFxuICAgICAgW3JldCB4IGkgMF1cbiAgICAgIChpZlxuICAgICAgICg9IGkgKGNvdW50IHgpKVxuICAgICAgIHJldFxuICAgICAgIChsZXRcbiAgICAgICAgW2N2ICh4IGkpIHYgKHVuZm9ybSAocHJlZHMgaSkgY3YpXVxuICAgICAgICAocmVjdXIgKGlmIChpZGVudGljYWw/IGN2IHYpIHJldCAoYXNzb2MgcmV0IGkgdikpIChpbmMgaSkpKSkpKVxuICAgIChleHBsYWluKlxuICAgICBbXyBwYXRoIHZpYSBpbiB4XVxuICAgICAoY29uZFxuICAgICAgKG5vdCAodmVjdG9yPyB4KSlcbiAgICAgIFt7OnBhdGggcGF0aCxcbiAgICAgICAgOnByZWQgJ2Nsb2p1cmUuY29yZS92ZWN0b3I/LFxuICAgICAgICA6dmFsIHgsXG4gICAgICAgIDp2aWEgdmlhLFxuICAgICAgICA6aW4gaW59XVxuICAgICAgKG5vdD0gKGNvdW50IHgpIChjb3VudCBwcmVkcykpXG4gICAgICBbezpwYXRoIHBhdGgsXG4gICAgICAgIDpwcmVkXG4gICAgICAgIChjbG9qdXJlLmNvcmUvc2VxdWVuY2VcbiAgICAgICAgIChjbG9qdXJlLmNvcmUvc2VxXG4gICAgICAgICAgKGNsb2p1cmUuY29yZS9jb25jYXRcbiAgICAgICAgICAgKGNsb2p1cmUuY29yZS9saXN0ICdjbG9qdXJlLmNvcmUvPSlcbiAgICAgICAgICAgKGNsb2p1cmUuY29yZS9saXN0XG4gICAgICAgICAgICAoY2xvanVyZS5jb3JlL3NlcXVlbmNlXG4gICAgICAgICAgICAgKGNsb2p1cmUuY29yZS9zZXFcbiAgICAgICAgICAgICAgKGNsb2p1cmUuY29yZS9jb25jYXRcbiAgICAgICAgICAgICAgIChjbG9qdXJlLmNvcmUvbGlzdCAnY2xvanVyZS5jb3JlL2NvdW50KVxuICAgICAgICAgICAgICAgKGNsb2p1cmUuY29yZS9saXN0ICclKSkpKSlcbiAgICAgICAgICAgKGNsb2p1cmUuY29yZS9saXN0IChjb3VudCBwcmVkcykpKSkpLFxuICAgICAgICA6dmFsIHgsXG4gICAgICAgIDp2aWEgdmlhLFxuICAgICAgICA6aW4gaW59XVxuICAgICAgOmVsc2VcbiAgICAgIChhcHBseVxuICAgICAgIGNvbmNhdFxuICAgICAgIChtYXBcbiAgICAgICAgKGZuXG4gICAgICAgICBbaSBmb3JtIHByZWRdXG4gICAgICAgICAobGV0XG4gICAgICAgICAgW3YgKHggaSldXG4gICAgICAgICAgKHdoZW4tbm90XG4gICAgICAgICAgIChwdmFsaWQ/IHByZWQgdilcbiAgICAgICAgICAgKGV4cGxhaW4tMSBmb3JtIHByZWQgKGNvbmogcGF0aCBpKSB2aWEgKGNvbmogaW4gaSkgdikpKSlcbiAgICAgICAgKHJhbmdlIChjb3VudCBwcmVkcykpXG4gICAgICAgIGZvcm1zXG4gICAgICAgIHByZWRzKSkpKVxuICAgIChnZW4qXG4gICAgIFtfIG92ZXJyaWRlcyBwYXRoIHJtYXBdXG4gICAgIChpZlxuICAgICAgZ2ZuXG4gICAgICAoZ2ZuKVxuICAgICAgKGxldFxuICAgICAgIFtnZW5cbiAgICAgICAgKGZuIFtpIHAgZl0gKGdlbnN1YiBwIG92ZXJyaWRlcyAoY29uaiBwYXRoIGkpIHJtYXAgZikpXG4gICAgICAgIGdzXG4gICAgICAgIChtYXAgZ2VuIChyYW5nZSAoY291bnQgcHJlZHMpKSBwcmVkcyBmb3JtcyldXG4gICAgICAgKHdoZW4gKGV2ZXJ5PyBpZGVudGl0eSBncykgKGFwcGx5IGdlbi90dXBsZSBncykpKSkpXG4gICAgKHdpdGgtZ2VuKiBbXyBnZm5dICh0dXBsZS1pbXBsIGZvcm1zIHByZWRzIGdmbikpXG4gICAgKGRlc2NyaWJlKlxuICAgICBbX11cbiAgICAgKGNsb2p1cmUuY29yZS9zZXF1ZW5jZVxuICAgICAgKGNsb2p1cmUuY29yZS9zZXFcbiAgICAgICAoY2xvanVyZS5jb3JlL2NvbmNhdFxuICAgICAgICAoY2xvanVyZS5jb3JlL2xpc3QgJ2NsanMuc3BlYy5hbHBoYS90dXBsZSlcbiAgICAgICAgZm9ybXMpKSkpKSkpKVxuIn0gezpzeW0gbXVsdGktc3BlYy1pbXBsLCA6bWV0YSB7OmRvYyAiRG8gbm90IGNhbGwgdGhpcyBkaXJlY3RseSwgdXNlICdtdWx0aS1zcGVjJyIsIDphcmdsaXN0cyBbW2Zvcm0gbW12YXIgcmV0YWddIFtmb3JtIG1tdmFyIHJldGFnIGdmbl1dfSwgOnNvdXJjZSAiKGRlZm5cbiBtdWx0aS1zcGVjLWltcGxcbiBcIkRvIG5vdCBjYWxsIHRoaXMgZGlyZWN0bHksIHVzZSAnbXVsdGktc3BlYydcIlxuIChbZm9ybSBtbXZhciByZXRhZ10gKG11bHRpLXNwZWMtaW1wbCBmb3JtIG1tdmFyIHJldGFnIG5pbCkpXG4gKFtmb3JtIG1tdmFyIHJldGFnIGdmbl1cbiAgKGxldFxuICAgW2lkXG4gICAgKHJhbmRvbS11dWlkKVxuICAgIHByZWR4XG4gICAgKGZuKlxuICAgICBbcDFfXzQzMDQzI11cbiAgICAgKGxldFxuICAgICAgW21tIEBtbXZhcl1cbiAgICAgIChjL2FuZFxuICAgICAgICgtZ2V0LW1ldGhvZCBtbSAoKC1kaXNwYXRjaC1mbiBtbSkgcDFfXzQzMDQzIykpXG4gICAgICAgKG1tIHAxX180MzA0MyMpKSkpXG4gICAgZHZhbFxuICAgIChmbiogW3AxX180MzA0NCNdICgoLWRpc3BhdGNoLWZuIEBtbXZhcikgcDFfXzQzMDQ0IykpXG4gICAgdGFnXG4gICAgKGlmXG4gICAgIChrZXl3b3JkPyByZXRhZylcbiAgICAgKGZuKiBbcDFfXzQzMDQ1IyBwMl9fNDMwNDYjXSAoYXNzb2MgcDFfXzQzMDQ1IyByZXRhZyBwMl9fNDMwNDYjKSlcbiAgICAgcmV0YWcpXVxuICAgKHJlaWZ5XG4gICAgU3BlY2l6ZVxuICAgIChzcGVjaXplKiBbc10gcylcbiAgICAoc3BlY2l6ZSogW3MgX10gcylcbiAgICBTcGVjXG4gICAgKGNvbmZvcm0qXG4gICAgIFtfIHhdXG4gICAgIChpZi1sZXRcbiAgICAgIFtwcmVkIChwcmVkeCB4KV1cbiAgICAgIChkdCBwcmVkIHggZm9ybSlcbiAgICAgIDpjbGpzLnNwZWMuYWxwaGEvaW52YWxpZCkpXG4gICAgKHVuZm9ybSpcbiAgICAgW18geF1cbiAgICAgKGlmLWxldFxuICAgICAgW3ByZWQgKHByZWR4IHgpXVxuICAgICAgKHVuZm9ybSBwcmVkIHgpXG4gICAgICAodGhyb3dcbiAgICAgICAoanMvRXJyb3IuXG4gICAgICAgIChzdHJcbiAgICAgICAgIFwiTm8gbWV0aG9kIG9mOiBcIlxuICAgICAgICAgZm9ybVxuICAgICAgICAgXCIgZm9yIGRpc3BhdGNoIHZhbHVlOiBcIlxuICAgICAgICAgKGR2YWwgeCkpKSkpKVxuICAgIChleHBsYWluKlxuICAgICBbXyBwYXRoIHZpYSBpbiB4XVxuICAgICAobGV0XG4gICAgICBbZHYgKGR2YWwgeCkgcGF0aCAoY29uaiBwYXRoIGR2KV1cbiAgICAgIChpZi1sZXRcbiAgICAgICBbcHJlZCAocHJlZHggeCldXG4gICAgICAgKGV4cGxhaW4tMSBmb3JtIHByZWQgcGF0aCB2aWEgaW4geClcbiAgICAgICBbezpwYXRoIHBhdGgsXG4gICAgICAgICA6cHJlZCBmb3JtLFxuICAgICAgICAgOnZhbCB4LFxuICAgICAgICAgOnJlYXNvbiBcIm5vIG1ldGhvZFwiLFxuICAgICAgICAgOnZpYSB2aWEsXG4gICAgICAgICA6aW4gaW59XSkpKVxuICAgIChnZW4qXG4gICAgIFtfIG92ZXJyaWRlcyBwYXRoIHJtYXBdXG4gICAgIChpZlxuICAgICAgZ2ZuXG4gICAgICAoZ2ZuKVxuICAgICAgKGxldFxuICAgICAgIFtnZW5cbiAgICAgICAgKGZuXG4gICAgICAgICBbW2sgZl1dXG4gICAgICAgICAobGV0XG4gICAgICAgICAgW3AgKGYgbmlsKV1cbiAgICAgICAgICAobGV0XG4gICAgICAgICAgIFtybWFwIChpbmNrIHJtYXAgaWQpXVxuICAgICAgICAgICAod2hlbi1ub3RcbiAgICAgICAgICAgIChyZWN1ci1saW1pdD8gcm1hcCBpZCBwYXRoIGspXG4gICAgICAgICAgICAoZ2VuL2RlbGF5XG4gICAgICAgICAgICAgKGdlbi9mbWFwXG4gICAgICAgICAgICAgIChmbiogW3AxX180MzA0NyNdICh0YWcgcDFfXzQzMDQ3IyBrKSlcbiAgICAgICAgICAgICAgKGdlbnN1YlxuICAgICAgICAgICAgICAgcFxuICAgICAgICAgICAgICAgb3ZlcnJpZGVzXG4gICAgICAgICAgICAgICAoY29uaiBwYXRoIGspXG4gICAgICAgICAgICAgICBybWFwXG4gICAgICAgICAgICAgICAobGlzdCAnbWV0aG9kIGZvcm0gaykpKSkpKSkpXG4gICAgICAgIGdzXG4gICAgICAgICgtPj5cbiAgICAgICAgIChtZXRob2RzIEBtbXZhcilcbiAgICAgICAgIChyZW1vdmUgKGZuIFtba11dIChpbnZhbGlkPyBrKSkpXG4gICAgICAgICAobWFwIGdlbilcbiAgICAgICAgIChyZW1vdmUgbmlsPykpXVxuICAgICAgICh3aGVuIChldmVyeT8gaWRlbnRpdHkgZ3MpIChnZW4vb25lLW9mIGdzKSkpKSlcbiAgICAod2l0aC1nZW4qIFtfIGdmbl0gKG11bHRpLXNwZWMtaW1wbCBmb3JtIG1tdmFyIHJldGFnIGdmbikpXG4gICAgKGRlc2NyaWJlKlxuICAgICBbX11cbiAgICAgKGNsb2p1cmUuY29yZS9zZXF1ZW5jZVxuICAgICAgKGNsb2p1cmUuY29yZS9zZXFcbiAgICAgICAoY2xvanVyZS5jb3JlL2NvbmNhdFxuICAgICAgICAoY2xvanVyZS5jb3JlL2xpc3QgJ2NsanMuc3BlYy5hbHBoYS9tdWx0aS1zcGVjKVxuICAgICAgICAoY2xvanVyZS5jb3JlL2xpc3QgZm9ybSlcbiAgICAgICAgKGNsb2p1cmUuY29yZS9saXN0IHJldGFnKSkpKSkpKSkpXG4ifSB7OnN5bSBjb25mb3JtLCA6bWV0YSB7OmRvYyAiR2l2ZW4gYSBzcGVjIGFuZCBhIHZhbHVlLCByZXR1cm5zIDpjbGpzLnNwZWMuYWxwaGEvaW52YWxpZCBpZiB2YWx1ZSBkb2VzXG4gIG5vdCBtYXRjaCBzcGVjLCBlbHNlIHRoZSAocG9zc2libHkgZGVzdHJ1Y3R1cmVkKSB2YWx1ZS4iLCA6YXJnbGlzdHMgKFtzcGVjIHhdKX0sIDpzb3VyY2UgIihkZWZuXG4gY29uZm9ybVxuIFwiR2l2ZW4gYSBzcGVjIGFuZCBhIHZhbHVlLCByZXR1cm5zIDpjbGpzLnNwZWMuYWxwaGEvaW52YWxpZCBpZiB2YWx1ZSBkb2VzXFxuICBub3QgbWF0Y2ggc3BlYywgZWxzZSB0aGUgKHBvc3NpYmx5IGRlc3RydWN0dXJlZCkgdmFsdWUuXCJcbiBbc3BlYyB4XVxuIChjb25mb3JtKiAoc3BlY2l6ZSBzcGVjKSB4KSlcbiJ9IHs6c3ltIGdlbiosIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbc3BlYyBvdmVycmlkZXMgcGF0aCBybWFwXSl9LCA6cHJvdG9jb2wgU3BlY30gezpzeW0gZnNwZWMtaW1wbCwgOm1ldGEgezpkb2MgIkRvIG5vdCBjYWxsIHRoaXMgZGlyZWN0bHksIHVzZSAnZnNwZWMnIiwgOmFyZ2xpc3RzIChbYXJnc3BlYyBhZm9ybSByZXRzcGVjIHJmb3JtIGZuc3BlYyBmZm9ybSBnZm5dKX0sIDpzb3VyY2UgIihkZWZuXG4gZnNwZWMtaW1wbFxuIFwiRG8gbm90IGNhbGwgdGhpcyBkaXJlY3RseSwgdXNlICdmc3BlYydcIlxuIFthcmdzcGVjIGFmb3JtIHJldHNwZWMgcmZvcm0gZm5zcGVjIGZmb3JtIGdmbl1cbiAobGV0XG4gIFtzcGVjcyB7OmFyZ3MgYXJnc3BlYywgOnJldCByZXRzcGVjLCA6Zm4gZm5zcGVjfV1cbiAgKHJlaWZ5XG4gICBJTG9va3VwXG4gICAoLWxvb2t1cCBbdGhpcyBrXSAoZ2V0IHNwZWNzIGspKVxuICAgKC1sb29rdXAgW18gayBub3QtZm91bmRdIChnZXQgc3BlY3MgayBub3QtZm91bmQpKVxuICAgU3BlY2l6ZVxuICAgKHNwZWNpemUqIFtzXSBzKVxuICAgKHNwZWNpemUqIFtzIF9dIHMpXG4gICBTcGVjXG4gICAoY29uZm9ybSpcbiAgICBbXyBmXVxuICAgIChpZlxuICAgICAoaWZuPyBmKVxuICAgICAoaWZcbiAgICAgIChpZGVudGljYWw/IGYgKHZhbGlkYXRlLWZuIGYgc3BlY3MgKmZzcGVjLWl0ZXJhdGlvbnMqKSlcbiAgICAgIGZcbiAgICAgIDpjbGpzLnNwZWMuYWxwaGEvaW52YWxpZClcbiAgICAgOmNsanMuc3BlYy5hbHBoYS9pbnZhbGlkKSlcbiAgICh1bmZvcm0qIFtfIGZdIGYpXG4gICAoZXhwbGFpbipcbiAgICBbXyBwYXRoIHZpYSBpbiBmXVxuICAgIChpZlxuICAgICAoaWZuPyBmKVxuICAgICAobGV0XG4gICAgICBbYXJncyAodmFsaWRhdGUtZm4gZiBzcGVjcyAxMDApXVxuICAgICAgKGlmXG4gICAgICAgKGlkZW50aWNhbD8gZiBhcmdzKVxuICAgICAgIG5pbFxuICAgICAgIChsZXRcbiAgICAgICAgW3JldCAodHJ5IChhcHBseSBmIGFyZ3MpIChjYXRjaCBqcy9FcnJvciB0IHQpKV1cbiAgICAgICAgKGlmXG4gICAgICAgICAoaW5zdGFuY2U/IGpzL0Vycm9yIHJldClcbiAgICAgICAgIFt7OnBhdGggcGF0aCxcbiAgICAgICAgICAgOnByZWQgJyhhcHBseSBmbiksXG4gICAgICAgICAgIDp2YWwgYXJncyxcbiAgICAgICAgICAgOnJlYXNvbiAoLi1tZXNzYWdlIHJldCksXG4gICAgICAgICAgIDp2aWEgdmlhLFxuICAgICAgICAgICA6aW4gaW59XVxuICAgICAgICAgKGxldFxuICAgICAgICAgIFtjcmV0IChkdCByZXRzcGVjIHJldCByZm9ybSldXG4gICAgICAgICAgKGlmXG4gICAgICAgICAgIChpbnZhbGlkPyBjcmV0KVxuICAgICAgICAgICAoZXhwbGFpbi0xIHJmb3JtIHJldHNwZWMgKGNvbmogcGF0aCA6cmV0KSB2aWEgaW4gcmV0KVxuICAgICAgICAgICAod2hlblxuICAgICAgICAgICAgZm5zcGVjXG4gICAgICAgICAgICAobGV0XG4gICAgICAgICAgICAgW2NhcmdzIChjb25mb3JtIGFyZ3NwZWMgYXJncyldXG4gICAgICAgICAgICAgKGV4cGxhaW4tMVxuICAgICAgICAgICAgICBmZm9ybVxuICAgICAgICAgICAgICBmbnNwZWNcbiAgICAgICAgICAgICAgKGNvbmogcGF0aCA6Zm4pXG4gICAgICAgICAgICAgIHZpYVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICB7OmFyZ3MgY2FyZ3MsIDpyZXQgY3JldH0pKSkpKSkpKSlcbiAgICAgW3s6cGF0aCBwYXRoLCA6cHJlZCAnaWZuPywgOnZhbCBmLCA6dmlhIHZpYSwgOmluIGlufV0pKVxuICAgKGdlbipcbiAgICBbXyBvdmVycmlkZXMgXyBfXVxuICAgIChpZlxuICAgICBnZm5cbiAgICAgKGdmbilcbiAgICAgKGdlbi9yZXR1cm5cbiAgICAgIChmblxuICAgICAgIFsmIGFyZ3NdXG4gICAgICAgKGFzc2VydFxuICAgICAgICAocHZhbGlkPyBhcmdzcGVjIGFyZ3MpXG4gICAgICAgICh3aXRoLW91dC1zdHIgKGV4cGxhaW4gYXJnc3BlYyBhcmdzKSkpXG4gICAgICAgKGdlbi9nZW5lcmF0ZSAoZ2VuIHJldHNwZWMgb3ZlcnJpZGVzKSkpKSkpXG4gICAod2l0aC1nZW4qXG4gICAgW18gZ2ZuXVxuICAgIChmc3BlYy1pbXBsIGFyZ3NwZWMgYWZvcm0gcmV0c3BlYyByZm9ybSBmbnNwZWMgZmZvcm0gZ2ZuKSlcbiAgIChkZXNjcmliZSpcbiAgICBbX11cbiAgICAoY2xvanVyZS5jb3JlL3NlcXVlbmNlXG4gICAgIChjbG9qdXJlLmNvcmUvc2VxXG4gICAgICAoY2xvanVyZS5jb3JlL2NvbmNhdFxuICAgICAgIChjbG9qdXJlLmNvcmUvbGlzdCAnY2xqcy5zcGVjLmFscGhhL2ZzcGVjKVxuICAgICAgIChjbG9qdXJlLmNvcmUvbGlzdCA6YXJncylcbiAgICAgICAoY2xvanVyZS5jb3JlL2xpc3QgYWZvcm0pXG4gICAgICAgKGNsb2p1cmUuY29yZS9saXN0IDpyZXQpXG4gICAgICAgKGNsb2p1cmUuY29yZS9saXN0IHJmb3JtKVxuICAgICAgIChjbG9qdXJlLmNvcmUvbGlzdCA6Zm4pXG4gICAgICAgKGNsb2p1cmUuY29yZS9saXN0IGZmb3JtKSkpKSkpKSlcbiJ9IHs6c3ltICpjb2xsLWNoZWNrLWxpbWl0KiwgOm1ldGEge30sIDpzb3VyY2UgIihkZWZcbiAqY29sbC1jaGVjay1saW1pdCpcbiBcIlRoZSBudW1iZXIgb2YgaXRlbXMgdmFsaWRhdGVkIGluIGEgY29sbGVjdGlvbiBzcGVjJ2VkIHdpdGggJ2V2ZXJ5J1wiXG4gMTAxKVxuIn0gezpzeW0gZ2V0LXNwZWMsIDptZXRhIHs6ZG9jICJSZXR1cm5zIHNwZWMgcmVnaXN0ZXJlZCBmb3Iga2V5d29yZC9zeW1ib2wvdmFyIGssIG9yIG5pbC4iLCA6YXJnbGlzdHMgKFtrXSl9LCA6c291cmNlICIoZGVmblxuIGdldC1zcGVjXG4gXCJSZXR1cm5zIHNwZWMgcmVnaXN0ZXJlZCBmb3Iga2V5d29yZC9zeW1ib2wvdmFyIGssIG9yIG5pbC5cIlxuIFtrXVxuIChnZXQgKHJlZ2lzdHJ5KSAoaWYgKGtleXdvcmQ/IGspIGsgKC0+c3ltIGspKSkpXG4ifSB7OnN5bSBldmVyeS1pbXBsLCA6bWV0YSB7OmRvYyAiRG8gbm90IGNhbGwgdGhpcyBkaXJlY3RseSwgdXNlICdldmVyeScsICdldmVyeS1rdicsICdjb2xsLW9mJyBvciAnbWFwLW9mJyIsIDphcmdsaXN0cyBbW2Zvcm0gcHJlZCBvcHRzXSBbZm9ybSBwcmVkIHtjb25mb3JtLWludG8gOmludG8sIGRlc2NyaWJlLWZvcm0gOmNsanMuc3BlYy5hbHBoYS9kZXNjcmliZSwgOmtleXMgW2tpbmQgOmNsanMuc3BlYy5hbHBoYS9raW5kLWZvcm0gY291bnQgbWF4LWNvdW50IG1pbi1jb3VudCBkaXN0aW5jdCBnZW4tbWF4IDpjbGpzLnNwZWMuYWxwaGEva2ZuIDpjbGpzLnNwZWMuYWxwaGEvY3ByZWQgY29uZm9ybS1rZXlzIDpjbGpzLnNwZWMuYWxwaGEvY29uZm9ybS1hbGxdLCA6b3Ige2dlbi1tYXggMjB9LCA6YXMgb3B0c30gZ2ZuXV19LCA6c291cmNlICIoZGVmblxuIGV2ZXJ5LWltcGxcbiBcIkRvIG5vdCBjYWxsIHRoaXMgZGlyZWN0bHksIHVzZSAnZXZlcnknLCAnZXZlcnkta3YnLCAnY29sbC1vZicgb3IgJ21hcC1vZidcIlxuIChbZm9ybSBwcmVkIG9wdHNdIChldmVyeS1pbXBsIGZvcm0gcHJlZCBvcHRzIG5pbCkpXG4gKFtmb3JtXG4gICBwcmVkXG4gICB7Y29uZm9ybS1pbnRvIDppbnRvLFxuICAgIGRlc2NyaWJlLWZvcm0gOmNsanMuc3BlYy5hbHBoYS9kZXNjcmliZSxcbiAgICA6a2V5c1xuICAgIFtraW5kXG4gICAgIDpjbGpzLnNwZWMuYWxwaGEva2luZC1mb3JtXG4gICAgIGNvdW50XG4gICAgIG1heC1jb3VudFxuICAgICBtaW4tY291bnRcbiAgICAgZGlzdGluY3RcbiAgICAgZ2VuLW1heFxuICAgICA6Y2xqcy5zcGVjLmFscGhhL2tmblxuICAgICA6Y2xqcy5zcGVjLmFscGhhL2NwcmVkXG4gICAgIGNvbmZvcm0ta2V5c1xuICAgICA6Y2xqcy5zcGVjLmFscGhhL2NvbmZvcm0tYWxsXSxcbiAgICA6b3Ige2dlbi1tYXggMjB9LFxuICAgIDphcyBvcHRzfVxuICAgZ2ZuXVxuICAobGV0XG4gICBbZ2VuLWludG9cbiAgICAoaWYgY29uZm9ybS1pbnRvIChlbXB0eSBjb25mb3JtLWludG8pIChnZXQgZW1wdHktY29sbCBraW5kLWZvcm0pKVxuICAgIHNwZWNcbiAgICAoZGVsYXkgKHNwZWNpemUgcHJlZCkpXG4gICAgY2hlY2s/XG4gICAgKGZuKiBbcDFfXzQzMDU4I10gKHZhbGlkPyBAc3BlYyBwMV9fNDMwNTgjKSlcbiAgICBrZm5cbiAgICAoYy9vciBrZm4gKGZuIFtpIHZdIGkpKVxuICAgIGFkZGN2XG4gICAgKGZuIFtyZXQgaSB2IGN2XSAoY29uaiByZXQgY3YpKVxuICAgIGNmbnNcbiAgICAoZm5cbiAgICAgW3hdXG4gICAgIChjb25kXG4gICAgICAoYy9hbmRcbiAgICAgICAodmVjdG9yPyB4KVxuICAgICAgIChjL29yIChub3QgY29uZm9ybS1pbnRvKSAodmVjdG9yPyBjb25mb3JtLWludG8pKSlcbiAgICAgIFtpZGVudGl0eVxuICAgICAgIChmbiBbcmV0IGkgdiBjdl0gKGlmIChpZGVudGljYWw/IHYgY3YpIHJldCAoYXNzb2MgcmV0IGkgY3YpKSlcbiAgICAgICBpZGVudGl0eV1cbiAgICAgIChjL2FuZFxuICAgICAgIChtYXA/IHgpXG4gICAgICAgKGMvb3IgKGMvYW5kIGtpbmQgKG5vdCBjb25mb3JtLWludG8pKSAobWFwPyBjb25mb3JtLWludG8pKSlcbiAgICAgIFsoaWYgY29uZm9ybS1rZXlzIGVtcHR5IGlkZW50aXR5KVxuICAgICAgIChmblxuICAgICAgICBbcmV0IGkgdiBjdl1cbiAgICAgICAgKGlmXG4gICAgICAgICAoYy9hbmQgKGlkZW50aWNhbD8gdiBjdikgKG5vdCBjb25mb3JtLWtleXMpKVxuICAgICAgICAgcmV0XG4gICAgICAgICAoYXNzb2MgcmV0IChudGggKGlmIGNvbmZvcm0ta2V5cyBjdiB2KSAwKSAobnRoIGN2IDEpKSkpXG4gICAgICAgaWRlbnRpdHldXG4gICAgICAoYy9vclxuICAgICAgIChsaXN0PyBjb25mb3JtLWludG8pXG4gICAgICAgKHNlcT8gY29uZm9ybS1pbnRvKVxuICAgICAgIChjL2FuZCAobm90IGNvbmZvcm0taW50bykgKGMvb3IgKGxpc3Q/IHgpIChzZXE/IHgpKSkpXG4gICAgICBbZW1wdHkgYWRkY3YgcmV2ZXJzZV1cbiAgICAgIDplbHNlXG4gICAgICBbKGZuKiBbcDFfXzQzMDU5I10gKGVtcHR5IChjL29yIGNvbmZvcm0taW50byBwMV9fNDMwNTkjKSkpXG4gICAgICAgYWRkY3ZcbiAgICAgICBpZGVudGl0eV0pKV1cbiAgIChyZWlmeVxuICAgIFNwZWNpemVcbiAgICAoc3BlY2l6ZSogW3NdIHMpXG4gICAgKHNwZWNpemUqIFtzIF9dIHMpXG4gICAgU3BlY1xuICAgIChjb25mb3JtKlxuICAgICBbXyB4XVxuICAgICAobGV0XG4gICAgICBbc3BlYyBAc3BlY11cbiAgICAgIChjb25kXG4gICAgICAgKG5vdCAoY3ByZWQgeCkpXG4gICAgICAgOmNsanMuc3BlYy5hbHBoYS9pbnZhbGlkXG4gICAgICAgY29uZm9ybS1hbGxcbiAgICAgICAobGV0XG4gICAgICAgIFtbaW5pdCBhZGQgY29tcGxldGVdIChjZm5zIHgpXVxuICAgICAgICAobG9vcFxuICAgICAgICAgW3JldCAoaW5pdCB4KSBpIDAgW3YgJiB2cyA6YXMgdnNlcV0gKHNlcSB4KV1cbiAgICAgICAgIChpZlxuICAgICAgICAgIHZzZXFcbiAgICAgICAgICAobGV0XG4gICAgICAgICAgIFtjdiAoY29uZm9ybSogc3BlYyB2KV1cbiAgICAgICAgICAgKGlmXG4gICAgICAgICAgICAoaW52YWxpZD8gY3YpXG4gICAgICAgICAgICA6Y2xqcy5zcGVjLmFscGhhL2ludmFsaWRcbiAgICAgICAgICAgIChyZWN1ciAoYWRkIHJldCBpIHYgY3YpIChpbmMgaSkgdnMpKSlcbiAgICAgICAgICAoY29tcGxldGUgcmV0KSkpKVxuICAgICAgIDplbHNlXG4gICAgICAgKGlmXG4gICAgICAgIChpbmRleGVkPyB4KVxuICAgICAgICAobGV0XG4gICAgICAgICBbc3RlcCAobWF4IDEgKGxvbmcgKC8gKGMvY291bnQgeCkgKmNvbGwtY2hlY2stbGltaXQqKSkpXVxuICAgICAgICAgKGxvb3BcbiAgICAgICAgICBbaSAwXVxuICAgICAgICAgIChpZlxuICAgICAgICAgICAoPj0gaSAoYy9jb3VudCB4KSlcbiAgICAgICAgICAgeFxuICAgICAgICAgICAoaWZcbiAgICAgICAgICAgICh2YWxpZD8gc3BlYyAobnRoIHggaSkpXG4gICAgICAgICAgICAocmVjdXIgKGMvKyBpIHN0ZXApKVxuICAgICAgICAgICAgOmNsanMuc3BlYy5hbHBoYS9pbnZhbGlkKSkpKVxuICAgICAgICAobGV0XG4gICAgICAgICBbbGltaXQgKmNvbGwtY2hlY2stbGltaXQqXVxuICAgICAgICAgKGxvb3BcbiAgICAgICAgICBbaSAwIFt2ICYgdnMgOmFzIHZzZXFdIChzZXEgeCldXG4gICAgICAgICAgKGNvbmRcbiAgICAgICAgICAgKGMvb3IgKG5pbD8gdnNlcSkgKD0gaSBsaW1pdCkpXG4gICAgICAgICAgIHhcbiAgICAgICAgICAgKHZhbGlkPyBzcGVjIHYpXG4gICAgICAgICAgIChyZWN1ciAoaW5jIGkpIHZzKVxuICAgICAgICAgICA6ZWxzZVxuICAgICAgICAgICA6Y2xqcy5zcGVjLmFscGhhL2ludmFsaWQpKSkpKSkpXG4gICAgKHVuZm9ybSpcbiAgICAgW18geF1cbiAgICAgKGlmXG4gICAgICBjb25mb3JtLWFsbFxuICAgICAgKGxldFxuICAgICAgIFtzcGVjIEBzcGVjIFtpbml0IGFkZCBjb21wbGV0ZV0gKGNmbnMgeCldXG4gICAgICAgKGxvb3BcbiAgICAgICAgW3JldCAoaW5pdCB4KSBpIDAgW3YgJiB2cyA6YXMgdnNlcV0gKHNlcSB4KV1cbiAgICAgICAgKGlmXG4gICAgICAgICAoPj0gaSAoYy9jb3VudCB4KSlcbiAgICAgICAgIChjb21wbGV0ZSByZXQpXG4gICAgICAgICAocmVjdXIgKGFkZCByZXQgaSB2ICh1bmZvcm0qIHNwZWMgdikpIChpbmMgaSkgdnMpKSkpXG4gICAgICB4KSlcbiAgICAoZXhwbGFpbipcbiAgICAgW18gcGF0aCB2aWEgaW4geF1cbiAgICAgKGMvb3JcbiAgICAgIChjb2xsLXByb2JcbiAgICAgICB4XG4gICAgICAga2luZFxuICAgICAgIGtpbmQtZm9ybVxuICAgICAgIGRpc3RpbmN0XG4gICAgICAgY291bnRcbiAgICAgICBtaW4tY291bnRcbiAgICAgICBtYXgtY291bnRcbiAgICAgICBwYXRoXG4gICAgICAgdmlhXG4gICAgICAgaW4pXG4gICAgICAoYXBwbHlcbiAgICAgICBjb25jYXRcbiAgICAgICAoKGlmIGNvbmZvcm0tYWxsIGlkZW50aXR5IChwYXJ0aWFsIHRha2UgKmNvbGwtZXJyb3ItbGltaXQqKSlcbiAgICAgICAgKGtlZXBcbiAgICAgICAgIGlkZW50aXR5XG4gICAgICAgICAobWFwXG4gICAgICAgICAgKGZuXG4gICAgICAgICAgIFtpIHZdXG4gICAgICAgICAgIChsZXRcbiAgICAgICAgICAgIFtrIChrZm4gaSB2KV1cbiAgICAgICAgICAgICh3aGVuLW5vdFxuICAgICAgICAgICAgIChjaGVjaz8gdilcbiAgICAgICAgICAgICAobGV0XG4gICAgICAgICAgICAgIFtwcm9iIChleHBsYWluLTEgZm9ybSBwcmVkIHBhdGggdmlhIChjb25qIGluIGspIHYpXVxuICAgICAgICAgICAgICBwcm9iKSkpKVxuICAgICAgICAgIChyYW5nZSlcbiAgICAgICAgICB4KSkpKSkpXG4gICAgKGdlbipcbiAgICAgW18gb3ZlcnJpZGVzIHBhdGggcm1hcF1cbiAgICAgKGlmXG4gICAgICBnZm5cbiAgICAgIChnZm4pXG4gICAgICAobGV0XG4gICAgICAgW3BnZW4gKGdlbnN1YiBwcmVkIG92ZXJyaWRlcyBwYXRoIHJtYXAgZm9ybSldXG4gICAgICAgKGdlbi9iaW5kXG4gICAgICAgIChjb25kXG4gICAgICAgICBnZW4taW50b1xuICAgICAgICAgKGdlbi9yZXR1cm4gZ2VuLWludG8pXG4gICAgICAgICBraW5kXG4gICAgICAgICAoZ2VuL2ZtYXBcbiAgICAgICAgICAoZm4qXG4gICAgICAgICAgIFtwMV9fNDMwNjAjXVxuICAgICAgICAgICAoaWYgKGVtcHR5PyBwMV9fNDMwNjAjKSBwMV9fNDMwNjAjIChlbXB0eSBwMV9fNDMwNjAjKSkpXG4gICAgICAgICAgKGdlbnN1YiBraW5kIG92ZXJyaWRlcyBwYXRoIHJtYXAgZm9ybSkpXG4gICAgICAgICA6ZWxzZVxuICAgICAgICAgKGdlbi9yZXR1cm4gW10pKVxuICAgICAgICAoZm5cbiAgICAgICAgIFtpbml0XVxuICAgICAgICAgKGdlbi9mbWFwXG4gICAgICAgICAgKGZuKlxuICAgICAgICAgICBbcDFfXzQzMDYxI11cbiAgICAgICAgICAgKGlmICh2ZWN0b3I/IGluaXQpIHAxX180MzA2MSMgKGludG8gaW5pdCBwMV9fNDMwNjEjKSkpXG4gICAgICAgICAgKGNvbmRcbiAgICAgICAgICAgZGlzdGluY3RcbiAgICAgICAgICAgKGlmXG4gICAgICAgICAgICBjb3VudFxuICAgICAgICAgICAgKGdlbi92ZWN0b3ItZGlzdGluY3RcbiAgICAgICAgICAgICBwZ2VuXG4gICAgICAgICAgICAgezpudW0tZWxlbWVudHMgY291bnQsIDptYXgtdHJpZXMgMTAwfSlcbiAgICAgICAgICAgIChnZW4vdmVjdG9yLWRpc3RpbmN0XG4gICAgICAgICAgICAgcGdlblxuICAgICAgICAgICAgIHs6bWluLWVsZW1lbnRzIChjL29yIG1pbi1jb3VudCAwKSxcbiAgICAgICAgICAgICAgOm1heC1lbGVtZW50c1xuICAgICAgICAgICAgICAoYy9vclxuICAgICAgICAgICAgICAgbWF4LWNvdW50XG4gICAgICAgICAgICAgICAobWF4IGdlbi1tYXggKGMvKiAyIChjL29yIG1pbi1jb3VudCAwKSkpKSxcbiAgICAgICAgICAgICAgOm1heC10cmllcyAxMDB9KSlcbiAgICAgICAgICAgY291bnRcbiAgICAgICAgICAgKGdlbi92ZWN0b3IgcGdlbiBjb3VudClcbiAgICAgICAgICAgKGMvb3IgbWluLWNvdW50IG1heC1jb3VudClcbiAgICAgICAgICAgKGdlbi92ZWN0b3JcbiAgICAgICAgICAgIHBnZW5cbiAgICAgICAgICAgIChjL29yIG1pbi1jb3VudCAwKVxuICAgICAgICAgICAgKGMvb3IgbWF4LWNvdW50IChtYXggZ2VuLW1heCAoYy8qIDIgKGMvb3IgbWluLWNvdW50IDApKSkpKVxuICAgICAgICAgICA6ZWxzZVxuICAgICAgICAgICAoZ2VuL3ZlY3RvciBwZ2VuIDAgZ2VuLW1heCkpKSkpKSkpXG4gICAgKHdpdGgtZ2VuKiBbXyBnZm5dIChldmVyeS1pbXBsIGZvcm0gcHJlZCBvcHRzIGdmbikpXG4gICAgKGRlc2NyaWJlKlxuICAgICBbX11cbiAgICAgKGMvb3JcbiAgICAgIGRlc2NyaWJlLWZvcm1cbiAgICAgIChjbG9qdXJlLmNvcmUvc2VxdWVuY2VcbiAgICAgICAoY2xvanVyZS5jb3JlL3NlcVxuICAgICAgICAoY2xvanVyZS5jb3JlL2NvbmNhdFxuICAgICAgICAgKGNsb2p1cmUuY29yZS9saXN0ICdjbGpzLnNwZWMuYWxwaGEvZXZlcnkpXG4gICAgICAgICAoY2xvanVyZS5jb3JlL2xpc3QgKHMvbXJlcyBmb3JtKSlcbiAgICAgICAgIChtYXBjYXQgaWRlbnRpdHkgb3B0cykpKSkpKSkpKSlcbiJ9IHs6c3ltIHNwZWMtaW1wbCwgOm1ldGEgezpkb2MgIkRvIG5vdCBjYWxsIHRoaXMgZGlyZWN0bHksIHVzZSAnc3BlYyciLCA6YXJnbGlzdHMgW1tmb3JtIHByZWQgZ2ZuIGNwcmVkP10gW2Zvcm0gcHJlZCBnZm4gY3ByZWQ/IHVuY11dfSwgOnNvdXJjZSAiKGRlZm5cbiBzcGVjLWltcGxcbiBcIkRvIG5vdCBjYWxsIHRoaXMgZGlyZWN0bHksIHVzZSAnc3BlYydcIlxuIChbZm9ybSBwcmVkIGdmbiBjcHJlZD9dIChzcGVjLWltcGwgZm9ybSBwcmVkIGdmbiBjcHJlZD8gbmlsKSlcbiAoW2Zvcm0gcHJlZCBnZm4gY3ByZWQ/IHVuY11cbiAgKGNvbmRcbiAgIChzcGVjPyBwcmVkKVxuICAgKGNvbmQtPiBwcmVkIGdmbiAod2l0aC1nZW4gZ2ZuKSlcbiAgIChyZWdleD8gcHJlZClcbiAgIChyZWdleC1zcGVjLWltcGwgcHJlZCBnZm4pXG4gICAoaWRlbnQ/IHByZWQpXG4gICAoY29uZC0+ICh0aGUtc3BlYyBwcmVkKSBnZm4gKHdpdGgtZ2VuIGdmbikpXG4gICA6ZWxzZVxuICAgKHJlaWZ5XG4gICAgU3BlY2l6ZVxuICAgIChzcGVjaXplKiBbc10gcylcbiAgICAoc3BlY2l6ZSogW3MgX10gcylcbiAgICBTcGVjXG4gICAgKGNvbmZvcm0qXG4gICAgIFtfIHhdXG4gICAgIChsZXRcbiAgICAgIFtyZXQgKHByZWQgeCldXG4gICAgICAoaWYgY3ByZWQ/IHJldCAoaWYgcmV0IHggOmNsanMuc3BlYy5hbHBoYS9pbnZhbGlkKSkpKVxuICAgICh1bmZvcm0qXG4gICAgIFtfIHhdXG4gICAgIChpZlxuICAgICAgY3ByZWQ/XG4gICAgICAoaWYgdW5jICh1bmMgeCkgKHRocm93IChqcy9FcnJvci4gXCJubyB1bmZvcm0gZm4gZm9yIGNvbmZvcm1lclwiKSkpXG4gICAgICB4KSlcbiAgICAoZXhwbGFpbipcbiAgICAgW18gcGF0aCB2aWEgaW4geF1cbiAgICAgKHdoZW5cbiAgICAgIChpbnZhbGlkPyAoZHQgcHJlZCB4IGZvcm0gY3ByZWQ/KSlcbiAgICAgIFt7OnBhdGggcGF0aCwgOnByZWQgZm9ybSwgOnZhbCB4LCA6dmlhIHZpYSwgOmluIGlufV0pKVxuICAgIChnZW4qIFtfIF8gXyBfXSAoaWYgZ2ZuIChnZm4pIChnZW4vZ2VuLWZvci1wcmVkIHByZWQpKSlcbiAgICAod2l0aC1nZW4qIFtfIGdmbl0gKHNwZWMtaW1wbCBmb3JtIHByZWQgZ2ZuIGNwcmVkPyB1bmMpKVxuICAgIChkZXNjcmliZSogW19dIGZvcm0pKSkpKVxuIn0gezpzeW0gaW52YWxpZD8sIDptZXRhIHs6ZG9jICJ0ZXN0cyB0aGUgdmFsaWRpdHkgb2YgYSBjb25mb3JtIHJldHVybiB2YWx1ZSIsIDphcmdsaXN0cyAoW3JldF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBpbnZhbGlkP1xuIFwidGVzdHMgdGhlIHZhbGlkaXR5IG9mIGEgY29uZm9ybSByZXR1cm4gdmFsdWVcIlxuIFtyZXRdXG4gKGtleXdvcmQtaWRlbnRpY2FsPyA6Y2xqcy5zcGVjLmFscGhhL2ludmFsaWQgcmV0KSlcbiJ9IHs6c3ltIGFtcC1pbXBsLCA6bWV0YSB7OmRvYyAiRG8gbm90IGNhbGwgdGhpcyBkaXJlY3RseSwgdXNlICcmJyIsIDphcmdsaXN0cyAoW3JlIHJlLWZvcm0gcHJlZHMgcHJlZC1mb3Jtc10pfSwgOnNvdXJjZSAiKGRlZm5cbiBhbXAtaW1wbFxuIFwiRG8gbm90IGNhbGwgdGhpcyBkaXJlY3RseSwgdXNlICcmJ1wiXG4gW3JlIHJlLWZvcm0gcHJlZHMgcHJlZC1mb3Jtc11cbiB7OmNsanMuc3BlYy5hbHBoYS9vcCA6Y2xqcy5zcGVjLmFscGhhL2FtcCxcbiAgOnAxIHJlLFxuICA6YW1wIHJlLWZvcm0sXG4gIDpwcyBwcmVkcyxcbiAgOmZvcm1zIHByZWQtZm9ybXN9KVxuIn0gezpzeW0gY2F0LWltcGwsIDptZXRhIHs6ZG9jICJEbyBub3QgY2FsbCB0aGlzIGRpcmVjdGx5LCB1c2UgJ2NhdCciLCA6YXJnbGlzdHMgKFtrcyBwcyBmb3Jtc10pfSwgOnNvdXJjZSAiKGRlZm5cbiBjYXQtaW1wbFxuIFwiRG8gbm90IGNhbGwgdGhpcyBkaXJlY3RseSwgdXNlICdjYXQnXCJcbiBba3MgcHMgZm9ybXNdXG4gKHBjYXQqIHs6a3Mga3MsIDpwcyBwcywgOmZvcm1zIGZvcm1zLCA6cmV0IHt9fSkpXG4ifSB7OnN5bSBleHBsYWluLXN0ciwgOm1ldGEgezpkb2MgIkdpdmVuIGEgc3BlYyBhbmQgYSB2YWx1ZSB0aGF0IGZhaWxzIHRvIGNvbmZvcm0sIHJldHVybnMgYW4gZXhwbGFuYXRpb24gYXMgYSBzdHJpbmcuIiwgOmFyZ2xpc3RzIChbc3BlYyB4XSl9LCA6c291cmNlICIoZGVmblxuIGV4cGxhaW4tc3RyXG4gXCJHaXZlbiBhIHNwZWMgYW5kIGEgdmFsdWUgdGhhdCBmYWlscyB0byBjb25mb3JtLCByZXR1cm5zIGFuIGV4cGxhbmF0aW9uIGFzIGEgc3RyaW5nLlwiXG4gW3NwZWMgeF1cbiAod2l0aC1vdXQtc3RyIChleHBsYWluIHNwZWMgeCkpKVxuIn0gezpzeW0gKmNvbXBpbGUtYXNzZXJ0cyosIDptZXRhIHs6ZG9jICJJZiB0cnVlLCBjb21waWxlciB3aWxsIGVuYWJsZSBzcGVjIGFzc2VydHMsIHdoaWNoIGFyZSB0aGVuXG5zdWJqZWN0IHRvIHJ1bnRpbWUgY29udHJvbCB2aWEgY2hlY2stYXNzZXJ0cz8gSWYgZmFsc2UsIGNvbXBpbGVyXG53aWxsIGVsaW1pbmF0ZSBhbGwgc3BlYyBhc3NlcnQgb3ZlcmhlYWQuIFNlZSAnYXNzZXJ0Jy5cbkluaXRpYWxseSBzZXQgdG8gdGhlIG5lZ2F0aW9uIG9mIHRoZSAnOmVsaWRlLWFzc2VydHMnIGNvbXBpbGVyIG9wdGlvbi5cbkRlZmF1bHRzIHRvIHRydWUuIn0sIDpzb3VyY2UgIihkZWZvbmNlICpjb21waWxlLWFzc2VydHMqIChzL2luaXQtY29tcGlsZS1hc3NlcnRzKSlcbiJ9IHs6c3ltIHdpdGgtZ2VuLCA6bWV0YSB7OmRvYyAiVGFrZXMgYSBzcGVjIGFuZCBhIG5vLWFyZywgZ2VuZXJhdG9yLXJldHVybmluZyBmbiBhbmQgcmV0dXJucyBhIHZlcnNpb24gb2YgdGhhdCBzcGVjIHRoYXQgdXNlcyB0aGF0IGdlbmVyYXRvciIsIDphcmdsaXN0cyAoW3NwZWMgZ2VuLWZuXSl9LCA6c291cmNlICIoZGVmblxuIHdpdGgtZ2VuXG4gXCJUYWtlcyBhIHNwZWMgYW5kIGEgbm8tYXJnLCBnZW5lcmF0b3ItcmV0dXJuaW5nIGZuIGFuZCByZXR1cm5zIGEgdmVyc2lvbiBvZiB0aGF0IHNwZWMgdGhhdCB1c2VzIHRoYXQgZ2VuZXJhdG9yXCJcbiBbc3BlYyBnZW4tZm5dXG4gKGxldFxuICBbc3BlYyAocmVnLXJlc29sdmUgc3BlYyldXG4gIChpZlxuICAgKHJlZ2V4PyBzcGVjKVxuICAgKGFzc29jIHNwZWMgOmNsanMuc3BlYy5hbHBoYS9nZm4gZ2VuLWZuKVxuICAgKHdpdGgtZ2VuKiAoc3BlY2l6ZSBzcGVjKSBnZW4tZm4pKSkpXG4ifSB7OnN5bSBjb25mb3JtKiwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtzcGVjIHhdKX0sIDpwcm90b2NvbCBTcGVjfSB7OnN5bSBjaGVjay1hc3NlcnRzPywgOm1ldGEgezpkb2MgIlJldHVybnMgdGhlIHZhbHVlIHNldCBieSBjaGVjay1hc3NlcnRzLiIsIDphcmdsaXN0cyAoW10pfSwgOnNvdXJjZSAiKGRlZm5cbiBjaGVjay1hc3NlcnRzP1xuIFwiUmV0dXJucyB0aGUgdmFsdWUgc2V0IGJ5IGNoZWNrLWFzc2VydHMuXCJcbiBbXVxuICpydW50aW1lLWFzc2VydHMqKVxuIn0gezpzeW0gcmVwLWltcGwsIDptZXRhIHs6ZG9jICJEbyBub3QgY2FsbCB0aGlzIGRpcmVjdGx5LCB1c2UgJyonIiwgOmFyZ2xpc3RzIChbZm9ybSBwXSl9LCA6c291cmNlICIoZGVmblxuIHJlcC1pbXBsXG4gXCJEbyBub3QgY2FsbCB0aGlzIGRpcmVjdGx5LCB1c2UgJyonXCJcbiBbZm9ybSBwXVxuIChyZXAqIHAgcCBbXSBmYWxzZSBmb3JtKSlcbiJ9IHs6c3ltIGRlc2NyaWJlLCA6bWV0YSB7OmRvYyAicmV0dXJucyBhbiBhYmJyZXZpYXRlZCBkZXNjcmlwdGlvbiBvZiB0aGUgc3BlYyBhcyBkYXRhIiwgOmFyZ2xpc3RzIChbc3BlY10pfSwgOnNvdXJjZSAiKGRlZm5cbiBkZXNjcmliZVxuIFwicmV0dXJucyBhbiBhYmJyZXZpYXRlZCBkZXNjcmlwdGlvbiBvZiB0aGUgc3BlYyBhcyBkYXRhXCJcbiBbc3BlY11cbiAoYWJicmV2IChmb3JtIHNwZWMpKSlcbiJ9IHs6c3ltIGV4cGxhaW4tb3V0LCA6bWV0YSB7OmRvYyAiUHJpbnRzIGV4cGxhbmF0aW9uIGRhdGEgKHBlciAnZXhwbGFpbi1kYXRhJykgdG8gKm91dCogdXNpbmcgdGhlIHByaW50ZXIgaW4gKmV4cGxhaW4tb3V0KixcbiAgICBieSBkZWZhdWx0IGV4cGxhaW4tcHJpbnRlci4iLCA6YXJnbGlzdHMgKFtlZF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBleHBsYWluLW91dFxuIFwiUHJpbnRzIGV4cGxhbmF0aW9uIGRhdGEgKHBlciAnZXhwbGFpbi1kYXRhJykgdG8gKm91dCogdXNpbmcgdGhlIHByaW50ZXIgaW4gKmV4cGxhaW4tb3V0KixcXG4gICAgYnkgZGVmYXVsdCBleHBsYWluLXByaW50ZXIuXCJcbiBbZWRdXG4gKCpleHBsYWluLW91dCogZWQpKVxuIn0gezpzeW0gc3BlY2l6ZSosIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbX10gW18gZm9ybV0pfSwgOnByb3RvY29sIFNwZWNpemV9IHs6c3ltIG1heWJlLWltcGwsIDptZXRhIHs6ZG9jICJEbyBub3QgY2FsbCB0aGlzIGRpcmVjdGx5LCB1c2UgJz8nIiwgOmFyZ2xpc3RzIChbcCBmb3JtXSl9LCA6c291cmNlICIoZGVmblxuIG1heWJlLWltcGxcbiBcIkRvIG5vdCBjYWxsIHRoaXMgZGlyZWN0bHksIHVzZSAnPydcIlxuIFtwIGZvcm1dXG4gKGFzc29jXG4gIChhbHQqXG4gICBbcCAoYWNjZXB0IDpjbGpzLnNwZWMuYWxwaGEvbmlsKV1cbiAgIG5pbFxuICAgW2Zvcm0gOmNsanMuc3BlYy5hbHBoYS9uaWxdKVxuICA6bWF5YmVcbiAgZm9ybSkpXG4ifSB7OnN5bSBleHBsYWluKiwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtzcGVjIHBhdGggdmlhIGluIHhdKX0sIDpwcm90b2NvbCBTcGVjfSksIGNsb2p1cmUuY29yZS5ycmItdmVjdG9yLm5vZGVzICh7OnN5bSByYW5nZXMsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbbm9kZV0pfSwgOnNvdXJjZSAiKGRlZm4gcmFuZ2VzIFtub2RlXSAoYWdldCAoLi1hcnIgbm9kZSkgMzIpKVxuIn0gezpzeW0gcmVndWxhcj8sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbbm9kZV0pfSwgOnNvdXJjZSAiKGRlZm4gcmVndWxhcj8gW25vZGVdIChub3QgKD09IChhbGVuZ3RoICguLWFyciBub2RlKSkgMzMpKSlcbiJ9IHs6c3ltIHJlbW92ZS1sZWZ0bW9zdC1jaGlsZCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtzaGlmdCBwYXJlbnRdKX0sIDpzb3VyY2UgIihkZWZuXG4gcmVtb3ZlLWxlZnRtb3N0LWNoaWxkXG4gW3NoaWZ0IHBhcmVudF1cbiAobGV0XG4gIFthcnIgKC4tYXJyIHBhcmVudCldXG4gIChpZlxuICAgKG5pbD8gKGFnZXQgYXJyIDEpKVxuICAgbmlsXG4gICAobGV0XG4gICAgW3I/IChyZWd1bGFyPyBwYXJlbnQpIG5ldy1hcnIgKG1ha2UtYXJyYXkgKGlmIHI/IDMyIDMzKSldXG4gICAgKGFycmF5LWNvcHkgYXJyIDEgbmV3LWFyciAwIDMxKVxuICAgIChpZi1ub3RcbiAgICAgcj9cbiAgICAgKGxldFxuICAgICAgW3JuZ3NcbiAgICAgICAocmFuZ2VzIHBhcmVudClcbiAgICAgICBybmcwXG4gICAgICAgKGFnZXQgcm5ncyAwKVxuICAgICAgIG5ldy1ybmdzXG4gICAgICAgKG1ha2UtYXJyYXkgMzMpXG4gICAgICAgbGltXG4gICAgICAgKGFnZXQgcm5ncyAzMildXG4gICAgICAoYXJyYXktY29weSBybmdzIDEgbmV3LXJuZ3MgMCAoZGVjIGxpbSkpXG4gICAgICAobG9vcFxuICAgICAgIFtpIDBdXG4gICAgICAgKHdoZW5cbiAgICAgICAgKDwgaSBsaW0pXG4gICAgICAgIChhc2V0IG5ldy1ybmdzIGkgKC0gKGFnZXQgbmV3LXJuZ3MgaSkgcm5nMCkpXG4gICAgICAgIChyZWN1ciAoaW5jIGkpKSkpXG4gICAgICAoYXNldCBuZXctcm5ncyAzMiAoZGVjIChhZ2V0IHJuZ3MgMzIpKSlcbiAgICAgIChhc2V0IG5ldy1ybmdzIChkZWMgKGFnZXQgcm5ncyAzMikpIDApXG4gICAgICAoYXNldCBuZXctYXJyIDMyIG5ldy1ybmdzKSkpXG4gICAgKC0+VmVjdG9yTm9kZSAoLi1lZGl0IHBhcmVudCkgbmV3LWFycikpKSkpXG4ifSB7OnN5bSBsYXN0LXJhbmdlLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW25vZGVdKX0sIDpzb3VyY2UgIihkZWZuXG4gbGFzdC1yYW5nZVxuIFtub2RlXVxuIChsZXQgW3JuZ3MgKHJhbmdlcyBub2RlKSBpIChkZWMgKGFnZXQgcm5ncyAzMikpXSAoYWdldCBybmdzIGkpKSlcbiJ9IHs6c3ltIGZpcnN0LWNoaWxkLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW25vZGVdKX0sIDpzb3VyY2UgIihkZWZuIGZpcnN0LWNoaWxkIFtub2RlXSAoYWdldCAoLi1hcnIgbm9kZSkgMCkpXG4ifSB7OnN5bSBuZXctcGF0aCosIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbc2hpZnQgbm9kZV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBuZXctcGF0aCpcbiBbc2hpZnQgbm9kZV1cbiAobGV0XG4gIFtyZWc/XG4gICAoPT0gMzIgKGFsZW5ndGggKC4tYXJyIG5vZGUpKSlcbiAgIGxlblxuICAgKGlmIHJlZz8gMzIgMzMpXG4gICBhcnJcbiAgIChtYWtlLWFycmF5IGxlbilcbiAgIHJuZ3NcbiAgIChpZi1ub3RcbiAgICByZWc/XG4gICAgKGRvdG8gKG1ha2UtYXJyYXkgMzMpIChhc2V0IDAgKGFsZW5ndGggKC4tYXJyIG5vZGUpKSkgKGFzZXQgMzIgMSkpKVxuICAgcmV0XG4gICAoLT5WZWN0b3JOb2RlIG5pbCBhcnIpXVxuICAobG9vcFxuICAgW2FyciBhcnIgc2hpZnQgc2hpZnRdXG4gICAoaWZcbiAgICAoPT0gc2hpZnQgNSlcbiAgICAoZG8gKGlmLW5vdCByZWc/IChhc2V0IGFyciAzMiBybmdzKSkgKGFzZXQgYXJyIDAgbm9kZSkpXG4gICAgKGxldFxuICAgICBbYSAobWFrZS1hcnJheSBsZW4pIGUgKC0+VmVjdG9yTm9kZSBuaWwgYSldXG4gICAgIChhc2V0IGFyciAwIGUpXG4gICAgIChpZi1ub3QgcmVnPyAoYXNldCBhcnIgMzIgcm5ncykpXG4gICAgIChyZWN1ciBhICgtIHNoaWZ0IDUpKSkpKVxuICByZXQpKVxuIn0gezpzeW0gcmVndWxhci1yYW5nZXMsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbc2hpZnQgY250XSl9LCA6c291cmNlICIoZGVmblxuIHJlZ3VsYXItcmFuZ2VzXG4gW3NoaWZ0IGNudF1cbiAobGV0XG4gIFtzdGVwIChiaXQtc2hpZnQtbGVmdCAxIHNoaWZ0KSBybmdzIChtYWtlLWFycmF5IDMzKV1cbiAgKGxvb3BcbiAgIFtpIDAgciBzdGVwXVxuICAgKGlmXG4gICAgKDwgciBjbnQpXG4gICAgKGRvIChhc2V0IHJuZ3MgaSByKSAocmVjdXIgKGluYyBpKSAoKyByIHN0ZXApKSlcbiAgICAoZG8gKGFzZXQgcm5ncyBpIGNudCkgKGFzZXQgcm5ncyAzMiAoaW5jIGkpKSBybmdzKSkpKSlcbiJ9IHs6c3ltIGZvbGQtdGFpbCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtub2RlIHNoaWZ0IGNudCB0YWlsXSl9LCA6c291cmNlICIoZGVmblxuIGZvbGQtdGFpbFxuIFtub2RlIHNoaWZ0IGNudCB0YWlsXVxuIChsZXRcbiAgW3RsZW5cbiAgIChhbGVuZ3RoIHRhaWwpXG4gICByZWc/XG4gICAoYW5kIChyZWd1bGFyPyBub2RlKSAoPT0gdGxlbiAzMikpXG4gICBhcnJcbiAgICguLWFyciBub2RlKVxuICAgbGlcbiAgIChpbmRleC1vZi1uaWwgYXJyKVxuICAgbmV3LWFyclxuICAgKG1ha2UtYXJyYXkgKGlmIHJlZz8gMzIgMzMpKVxuICAgcm5nc1xuICAgKGlmLW5vdCAocmVndWxhcj8gbm9kZSkgKHJhbmdlcyBub2RlKSlcbiAgIGNyZXRcbiAgIChpZlxuICAgICg9PSBzaGlmdCA1KVxuICAgICgtPlZlY3Rvck5vZGUgbmlsIHRhaWwpXG4gICAgKGZvbGQtdGFpbFxuICAgICAoYWdldCBhcnIgKGRlYyBsaSkpXG4gICAgICgtIHNoaWZ0IDUpXG4gICAgIChpZlxuICAgICAgKHJlZ3VsYXI/IG5vZGUpXG4gICAgICAobW9kIGNudCAoYml0LXNoaWZ0LWxlZnQgMSBzaGlmdCkpXG4gICAgICAobGV0XG4gICAgICAgW2xpIChkZWMgKGFnZXQgcm5ncyAzMikpXVxuICAgICAgIChpZlxuICAgICAgICAocG9zPyBsaSlcbiAgICAgICAgKC0gKGFnZXQgcm5ncyBsaSkgKGFnZXQgcm5ncyAoZGVjIGxpKSkpXG4gICAgICAgIChhZ2V0IHJuZ3MgMCkpKSlcbiAgICAgdGFpbCkpXG4gICBuZXctcm5nc1xuICAgKGlmLW5vdCByZWc/IChpZiBybmdzIChhY2xvbmUgcm5ncykgKHJlZ3VsYXItcmFuZ2VzIHNoaWZ0IGNudCkpKV1cbiAgKHdoZW4tbm90XG4gICAoYW5kIChvciAobmlsPyBjcmV0KSAoPT0gc2hpZnQgNSkpICg9PSBsaSAzMikpXG4gICAoYXJyYXktY29weSBhcnIgMCBuZXctYXJyIDAgbGkpXG4gICAod2hlbi1ub3RcbiAgICByZWc/XG4gICAgKGlmXG4gICAgIChvciAobmlsPyBjcmV0KSAoPT0gc2hpZnQgNSkpXG4gICAgIChkb1xuICAgICAgKGFzZXRcbiAgICAgICBuZXctcm5nc1xuICAgICAgIGxpXG4gICAgICAgKCsgKGlmIChwb3M/IGxpKSAoYWdldCBuZXctcm5ncyAoZGVjIGxpKSkgKGludCAwKSkgdGxlbikpXG4gICAgICAoYXNldCBuZXctcm5ncyAzMiAoaW5jIGxpKSkpXG4gICAgIChkb1xuICAgICAgKHdoZW5cbiAgICAgICAocG9zPyBsaSlcbiAgICAgICAoYXNldCBuZXctcm5ncyAoZGVjIGxpKSAoKyAoYWdldCBuZXctcm5ncyAoZGVjIGxpKSkgdGxlbikpKVxuICAgICAgKGFzZXQgbmV3LXJuZ3MgMzIgbGkpKSkpXG4gICAoaWYtbm90IHJlZz8gKGFzZXQgbmV3LWFyciAzMiBuZXctcm5ncykpXG4gICAoaWZcbiAgICAobmlsPyBjcmV0KVxuICAgIChhc2V0IG5ldy1hcnIgbGkgKG5ldy1wYXRoKiAoLSBzaGlmdCA1KSAoLT5WZWN0b3JOb2RlIG5pbCB0YWlsKSkpXG4gICAgKGFzZXQgbmV3LWFyciAoaWYgKD09IHNoaWZ0IDUpIGxpIChkZWMgbGkpKSBjcmV0KSlcbiAgICgtPlZlY3Rvck5vZGUgbmlsIG5ldy1hcnIpKSkpXG4ifSB7OnN5bSBpbmRleC1vZi1uaWwsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbYXJyXSl9LCA6c291cmNlICIoZGVmblxuIGluZGV4LW9mLW5pbFxuIFthcnJdXG4gKGxvb3BcbiAgW2wgMCBoIDMxXVxuICAoaWZcbiAgICg+PSBsIChkZWMgaCkpXG4gICAoaWYgKG5pbD8gKGFnZXQgYXJyIGwpKSBsIChpZiAobmlsPyAoYWdldCBhcnIgaCkpIGggMzIpKVxuICAgKGxldFxuICAgIFttaWQgKCsgbCAoYml0LXNoaWZ0LXJpZ2h0ICgtIGggbCkgMSkpXVxuICAgIChpZiAobmlsPyAoYWdldCBhcnIgbWlkKSkgKHJlY3VyIGwgbWlkKSAocmVjdXIgKGluYyBtaWQpIGgpKSkpKSlcbiJ9IHs6c3ltIG92ZXJmbG93PywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtyb290IHNoaWZ0IGNudF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBvdmVyZmxvdz9cbiBbcm9vdCBzaGlmdCBjbnRdXG4gKGlmXG4gIChyZWd1bGFyPyByb290KVxuICAoPiAoYml0LXNoaWZ0LXJpZ2h0IGNudCA1KSAoYml0LXNoaWZ0LWxlZnQgMSBzaGlmdCkpXG4gIChsZXRcbiAgIFtybmdzIChyYW5nZXMgcm9vdCkgc2xjIChhZ2V0IHJuZ3MgMzIpXVxuICAgKGFuZFxuICAgICg9PSBzbGMgMzIpXG4gICAgKG9yXG4gICAgICg9PSBzaGlmdCA1KVxuICAgICAocmVjdXJcbiAgICAgIChhZ2V0ICguLWFyciByb290KSAoZGVjIHNsYykpXG4gICAgICAoLSBzaGlmdCA1KVxuICAgICAgKCsgKC0gKGFnZXQgcm5ncyAzMSkgKGFnZXQgcm5ncyAzMCkpIDMyKSkpKSkpKVxuIn0gezpzeW0gZW1wdHktbm9kZSwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgZW1wdHktbm9kZSBjbGpzLmNvcmUuUGVyc2lzdGVudFZlY3Rvci5FTVBUWV9OT0RFKVxuIn0gezpzeW0gcmVwbGFjZS1sZWZ0bW9zdC1jaGlsZCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtzaGlmdCBwYXJlbnQgcGNudCBjaGlsZCBkXSl9LCA6c291cmNlICIoZGVmblxuIHJlcGxhY2UtbGVmdG1vc3QtY2hpbGRcbiBbc2hpZnQgcGFyZW50IHBjbnQgY2hpbGQgZF1cbiAoaWZcbiAgKHJlZ3VsYXI/IHBhcmVudClcbiAgKGxldFxuICAgW3N0ZXBcbiAgICAoYml0LXNoaWZ0LWxlZnQgMSBzaGlmdClcbiAgICBybmcwXG4gICAgKC0gc3RlcCBkKVxuICAgIG5jbnRcbiAgICAoLSBwY250IGQpXG4gICAgbGlcbiAgICAoYml0LWFuZCAoYml0LXNoaWZ0LXJpZ2h0IHNoaWZ0IChkZWMgcGNudCkpIDMxKVxuICAgIGFyclxuICAgICguLWFyciBwYXJlbnQpXG4gICAgbmV3LWFyclxuICAgIChtYWtlLWFycmF5IDMzKVxuICAgIG5ldy1ybmdzXG4gICAgKG1ha2UtYXJyYXkgMzMpXVxuICAgKGFzZXQgbmV3LWFyciAwIGNoaWxkKVxuICAgKGFycmF5LWNvcHkgYXJyIDEgbmV3LWFyciAxIGxpKVxuICAgKGFzZXQgbmV3LWFyciAzMiBuZXctcm5ncylcbiAgIChhc2V0IG5ldy1ybmdzIDAgcm5nMClcbiAgIChhc2V0IG5ldy1ybmdzIGxpIG5jbnQpXG4gICAoYXNldCBuZXctcm5ncyAzMiAoaW5jIGxpKSlcbiAgIChsb29wXG4gICAgW2kgMV1cbiAgICAod2hlblxuICAgICAoPD0gaSBsaSlcbiAgICAgKGFzZXQgbmV3LXJuZ3MgaSAoKyAoYWdldCBuZXctcm5ncyAoZGVjIGkpKSBzdGVwKSlcbiAgICAgKHJlY3VyIChpbmMgaSkpKSlcbiAgICgtPlZlY3Rvck5vZGUgbmlsIG5ldy1hcnIpKVxuICAobGV0XG4gICBbbmV3LWFyclxuICAgIChhY2xvbmUgKC4tYXJyIHBhcmVudCkpXG4gICAgcm5nc1xuICAgIChyYW5nZXMgcGFyZW50KVxuICAgIG5ldy1ybmdzXG4gICAgKG1ha2UtYXJyYXkgMzMpXG4gICAgbGlcbiAgICAoZGVjIChhZ2V0IHJuZ3MgMzIpKV1cbiAgIChhc2V0IG5ldy1ybmdzIDMyIChhZ2V0IHJuZ3MgMzIpKVxuICAgKGFzZXQgbmV3LWFyciAzMiBuZXctcm5ncylcbiAgIChhc2V0IG5ldy1hcnIgMCBjaGlsZClcbiAgIChsb29wXG4gICAgW2kgMF1cbiAgICAod2hlblxuICAgICAoPD0gaSBsaSlcbiAgICAgKGFzZXQgbmV3LXJuZ3MgaSAoLSAoYWdldCBybmdzIGkpIGQpKVxuICAgICAocmVjdXIgKGluYyBpKSkpKVxuICAgKC0+VmVjdG9yTm9kZSBuaWwgbmV3LWFycikpKSlcbiJ9IHs6c3ltIGNsb25lLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3NoaWZ0IG5vZGVdKX0sIDpzb3VyY2UgIihkZWZuXG4gY2xvbmVcbiBbc2hpZnQgbm9kZV1cbiAoVmVjdG9yTm9kZS4gKC4tZWRpdCBub2RlKSAoYWNsb25lICguLWFyciBub2RlKSkpKVxuIn0gezpzeW0gbGFzdC1jaGlsZCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtub2RlXSl9LCA6c291cmNlICIoZGVmblxuIGxhc3QtY2hpbGRcbiBbbm9kZV1cbiAobGV0XG4gIFthcnIgKC4tYXJyIG5vZGUpXVxuICAoaWZcbiAgIChyZWd1bGFyPyBub2RlKVxuICAgKGFnZXQgYXJyIChkZWMgKGluZGV4LW9mLW5pbCBhcnIpKSlcbiAgIChhZ2V0IGFyciAoZGVjIChhZ2V0IChyYW5nZXMgbm9kZSkgMzIpKSkpKSlcbiJ9IHs6c3ltIGluZGV4LW9mLTAsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbYXJyXSl9LCA6c291cmNlICIoZGVmblxuIGluZGV4LW9mLTBcbiBbYXJyXVxuIChsb29wXG4gIFtsIDAgaCAzMV1cbiAgKGlmXG4gICAoPj0gbCAoZGVjIGgpKVxuICAgKGlmXG4gICAgKHplcm8/IChpbnQgKGFnZXQgYXJyIGwpKSlcbiAgICBsXG4gICAgKGlmICh6ZXJvPyAoaW50IChhZ2V0IGFyciBoKSkpIGggMzIpKVxuICAgKGxldFxuICAgIFttaWQgKCsgbCAoYml0LXNoaWZ0LXJpZ2h0ICgtIGggbCkgMSkpXVxuICAgIChpZlxuICAgICAoemVybz8gKGludCAoYWdldCBhcnIgbWlkKSkpXG4gICAgIChyZWN1ciBsIG1pZClcbiAgICAgKHJlY3VyIChpbmMgbWlkKSBoKSkpKSkpXG4ifSB7OnN5bSByZXBsYWNlLXJpZ2h0bW9zdC1jaGlsZCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtzaGlmdCBwYXJlbnQgY2hpbGQgZF0pfSwgOnNvdXJjZSAiKGRlZm5cbiByZXBsYWNlLXJpZ2h0bW9zdC1jaGlsZFxuIFtzaGlmdCBwYXJlbnQgY2hpbGQgZF1cbiAoaWZcbiAgKHJlZ3VsYXI/IHBhcmVudClcbiAgKGxldFxuICAgW2FyciAoLi1hcnIgcGFyZW50KSBpIChkZWMgKGluZGV4LW9mLW5pbCBhcnIpKV1cbiAgIChpZlxuICAgIChyZWd1bGFyPyBjaGlsZClcbiAgICAobGV0XG4gICAgIFtuZXctYXJyIChhY2xvbmUgYXJyKV1cbiAgICAgKGFzZXQgbmV3LWFyciBpIGNoaWxkKVxuICAgICAoLT5WZWN0b3JOb2RlIG5pbCBuZXctYXJyKSlcbiAgICAobGV0XG4gICAgIFthcnJcbiAgICAgICguLWFyciBwYXJlbnQpXG4gICAgICBuZXctYXJyXG4gICAgICAobWFrZS1hcnJheSAzMylcbiAgICAgIHN0ZXBcbiAgICAgIChiaXQtc2hpZnQtbGVmdCAxIHNoaWZ0KVxuICAgICAgcm5nc1xuICAgICAgKG1ha2UtYXJyYXkgMzMpXVxuICAgICAoYXNldCBybmdzIDMyIChpbmMgaSkpXG4gICAgIChhc2V0IG5ldy1hcnIgMzIgcm5ncylcbiAgICAgKGFycmF5LWNvcHkgYXJyIDAgbmV3LWFyciAwIGkpXG4gICAgIChhc2V0IG5ldy1hcnIgaSBjaGlsZClcbiAgICAgKGxvb3BcbiAgICAgIFtqIDAgciBzdGVwXVxuICAgICAgKHdoZW4gKDw9IGogaSkgKGFzZXQgcm5ncyBqIHIpIChyZWN1ciAoaW5jIGopICgrIHIgc3RlcCkpKSlcbiAgICAgKGFzZXQgcm5ncyBpIChsYXN0LXJhbmdlIGNoaWxkKSlcbiAgICAgKC0+VmVjdG9yTm9kZSBuaWwgYXJyKSkpKVxuICAobGV0XG4gICBbcm5nc1xuICAgIChyYW5nZXMgcGFyZW50KVxuICAgIG5ldy1ybmdzXG4gICAgKGFjbG9uZSBybmdzKVxuICAgIGlcbiAgICAoZGVjIChhZ2V0IHJuZ3MgMzIpKVxuICAgIG5ldy1hcnJcbiAgICAoYWNsb25lICguLWFyciBwYXJlbnQpKV1cbiAgIChhc2V0IG5ldy1hcnIgaSBjaGlsZClcbiAgIChhc2V0IG5ldy1hcnIgMzIgbmV3LXJuZ3MpXG4gICAoYXNldCBuZXctcm5ncyBpICgrIChhZ2V0IHJuZ3MgaSkgZCkpXG4gICAoLT5WZWN0b3JOb2RlIG5pbCBuZXctYXJyKSkpKVxuIn0pLCBjbG9qdXJlLmRhdGEgKHs6c3ltIGVxdWFsaXR5LXBhcnRpdGlvbiwgOm1ldGEgezpkb2MgIkltcGxlbWVudGF0aW9uIGRldGFpbC4gU3ViamVjdCB0byBjaGFuZ2UuIiwgOmFyZ2xpc3RzIChbeF0pfSwgOnByb3RvY29sIEVxdWFsaXR5UGFydGl0aW9ufSB7OnN5bSBFcXVhbGl0eVBhcnRpdGlvbiwgOm1ldGEgezpkb2MgIkltcGxlbWVudGF0aW9uIGRldGFpbC4gU3ViamVjdCB0byBjaGFuZ2UuIn0sIDptZXRob2RzIChlcXVhbGl0eS1wYXJ0aXRpb24pfSB7OnN5bSBkaWZmLXNpbWlsYXIsIDptZXRhIHs6ZG9jICJJbXBsZW1lbnRhdGlvbiBkZXRhaWwuIFN1YmplY3QgdG8gY2hhbmdlLiIsIDphcmdsaXN0cyAoW2EgYl0pfSwgOnByb3RvY29sIERpZmZ9IHs6c3ltIERpZmYsIDptZXRhIHs6ZG9jICJJbXBsZW1lbnRhdGlvbiBkZXRhaWwuIFN1YmplY3QgdG8gY2hhbmdlLiJ9LCA6bWV0aG9kcyAoZGlmZi1zaW1pbGFyKX0gezpzeW0gZGlmZiwgOm1ldGEgezpkb2MgIlJlY3Vyc2l2ZWx5IGNvbXBhcmVzIGEgYW5kIGIsIHJldHVybmluZyBhIHR1cGxlIG9mXG4gIFt0aGluZ3Mtb25seS1pbi1hIHRoaW5ncy1vbmx5LWluLWIgdGhpbmdzLWluLWJvdGhdLlxuICBDb21wYXJpc29uIHJ1bGVzOlxuXG4gICogRm9yIGVxdWFsIGEgYW5kIGIsIHJldHVybiBbbmlsIG5pbCBhXS5cbiAgKiBNYXBzIGFyZSBzdWJkaWZmZWQgd2hlcmUga2V5cyBtYXRjaCBhbmQgdmFsdWVzIGRpZmZlci5cbiAgKiBTZXRzIGFyZSBuZXZlciBzdWJkaWZmZWQuXG4gICogQWxsIHNlcXVlbnRpYWwgdGhpbmdzIGFyZSB0cmVhdGVkIGFzIGFzc29jaWF0aXZlIGNvbGxlY3Rpb25zXG4gICAgYnkgdGhlaXIgaW5kZXhlcywgd2l0aCByZXN1bHRzIHJldHVybmVkIGFzIHZlY3RvcnMuXG4gICogRXZlcnl0aGluZyBlbHNlIChpbmNsdWRpbmcgc3RyaW5ncyEpIGlzIHRyZWF0ZWQgYXNcbiAgICBhbiBhdG9tIGFuZCBjb21wYXJlZCBmb3IgZXF1YWxpdHkuIiwgOmFyZ2xpc3RzIChbYSBiXSl9LCA6c291cmNlICIoZGVmblxuIGRpZmZcbiBcIlJlY3Vyc2l2ZWx5IGNvbXBhcmVzIGEgYW5kIGIsIHJldHVybmluZyBhIHR1cGxlIG9mXFxuICBbdGhpbmdzLW9ubHktaW4tYSB0aGluZ3Mtb25seS1pbi1iIHRoaW5ncy1pbi1ib3RoXS5cXG4gIENvbXBhcmlzb24gcnVsZXM6XFxuXFxuICAqIEZvciBlcXVhbCBhIGFuZCBiLCByZXR1cm4gW25pbCBuaWwgYV0uXFxuICAqIE1hcHMgYXJlIHN1YmRpZmZlZCB3aGVyZSBrZXlzIG1hdGNoIGFuZCB2YWx1ZXMgZGlmZmVyLlxcbiAgKiBTZXRzIGFyZSBuZXZlciBzdWJkaWZmZWQuXFxuICAqIEFsbCBzZXF1ZW50aWFsIHRoaW5ncyBhcmUgdHJlYXRlZCBhcyBhc3NvY2lhdGl2ZSBjb2xsZWN0aW9uc1xcbiAgICBieSB0aGVpciBpbmRleGVzLCB3aXRoIHJlc3VsdHMgcmV0dXJuZWQgYXMgdmVjdG9ycy5cXG4gICogRXZlcnl0aGluZyBlbHNlIChpbmNsdWRpbmcgc3RyaW5ncyEpIGlzIHRyZWF0ZWQgYXNcXG4gICAgYW4gYXRvbSBhbmQgY29tcGFyZWQgZm9yIGVxdWFsaXR5LlwiXG4gW2EgYl1cbiAoaWZcbiAgKD0gYSBiKVxuICBbbmlsIG5pbCBhXVxuICAoaWZcbiAgICg9IChlcXVhbGl0eS1wYXJ0aXRpb24gYSkgKGVxdWFsaXR5LXBhcnRpdGlvbiBiKSlcbiAgIChkaWZmLXNpbWlsYXIgYSBiKVxuICAgKGF0b20tZGlmZiBhIGIpKSkpXG4ifSksIGNsanMucmVhZGVyICh7OnN5bSAqZGVmYXVsdC1kYXRhLXJlYWRlci1mbiosIDptZXRhIHt9LCA6c291cmNlICIoZGVmICpkZWZhdWx0LWRhdGEtcmVhZGVyLWZuKiAoYXRvbSBuaWwpKVxuIn0gezpzeW0gcmVhZCwgOm1ldGEgezpkb2MgIlJlYWRzIHRoZSBmaXJzdCBvYmplY3QgZnJvbSBhbiBjbGpzLnRvb2xzLnJlYWRlci5yZWFkZXItdHlwZXMvSVB1c2hiYWNrUmVhZGVyLlxuICAgUmV0dXJucyB0aGUgb2JqZWN0IHJlYWQuIElmIEVPRiwgdGhyb3dzIGlmIGVvZi1lcnJvcj8gaXMgdHJ1ZSBvdGhlcndpc2UgcmV0dXJucyBlb2YuXG4gICBJZiBubyByZWFkZXIgaXMgcHJvdmlkZWQsICppbiogd2lsbCBiZSB1c2VkLlxuXG4gICBSZWFkcyBkYXRhIGluIHRoZSBlZG4gZm9ybWF0IChzdWJzZXQgb2YgQ2xvanVyZSBkYXRhKTpcbiAgIGh0dHA6Ly9lZG4tZm9ybWF0Lm9yZ1xuXG4gICBjbGpzLnRvb2xzLnJlYWRlci5lZG4vcmVhZCBkb2Vzbid0IGRlcGVuZCBvbiBkeW5hbWljIFZhcnMsIGFsbCBjb25maWd1cmF0aW9uXG4gICBpcyBkb25lIGJ5IHBhc3NpbmcgYW4gb3B0IG1hcC5cblxuICAgb3B0cyBpcyBhIG1hcCB0aGF0IGNhbiBpbmNsdWRlIHRoZSBmb2xsb3dpbmcga2V5czpcbiAgIDplb2YgLSB2YWx1ZSB0byByZXR1cm4gb24gZW5kLW9mLWZpbGUuIFdoZW4gbm90IHN1cHBsaWVkLCBlb2YgdGhyb3dzIGFuIGV4Y2VwdGlvbi5cbiAgIDpyZWFkZXJzICAtIGEgbWFwIG9mIHRhZyBzeW1ib2xzIHRvIGRhdGEtcmVhZGVyIGZ1bmN0aW9ucyB0byBiZSBjb25zaWRlcmVkIGJlZm9yZSBkZWZhdWx0LWRhdGEtcmVhZGVycy5cbiAgICAgICAgICAgICAgV2hlbiBub3Qgc3VwcGxpZWQsIG9ubHkgdGhlIGRlZmF1bHQtZGF0YS1yZWFkZXJzIHdpbGwgYmUgdXNlZC5cbiAgIDpkZWZhdWx0IC0gQSBmdW5jdGlvbiBvZiB0d28gYXJncywgdGhhdCB3aWxsLCBpZiBwcmVzZW50IGFuZCBubyByZWFkZXIgaXMgZm91bmQgZm9yIGEgdGFnLFxuICAgICAgICAgICAgICBiZSBjYWxsZWQgd2l0aCB0aGUgdGFnIGFuZCB0aGUgdmFsdWUuIiwgOmFyZ2xpc3RzIFtbcmVhZGVyXSBbezprZXlzIFtlb2ZdLCA6YXMgb3B0c30gcmVhZGVyXSBbcmVhZGVyIGVvZi1lcnJvcj8gZW9mIG9wdHNdXX0sIDpzb3VyY2UgIihkZWZuXG4gcmVhZFxuIFwiUmVhZHMgdGhlIGZpcnN0IG9iamVjdCBmcm9tIGFuIGNsanMudG9vbHMucmVhZGVyLnJlYWRlci10eXBlcy9JUHVzaGJhY2tSZWFkZXIuXFxuICAgUmV0dXJucyB0aGUgb2JqZWN0IHJlYWQuIElmIEVPRiwgdGhyb3dzIGlmIGVvZi1lcnJvcj8gaXMgdHJ1ZSBvdGhlcndpc2UgcmV0dXJucyBlb2YuXFxuICAgSWYgbm8gcmVhZGVyIGlzIHByb3ZpZGVkLCAqaW4qIHdpbGwgYmUgdXNlZC5cXG5cXG4gICBSZWFkcyBkYXRhIGluIHRoZSBlZG4gZm9ybWF0IChzdWJzZXQgb2YgQ2xvanVyZSBkYXRhKTpcXG4gICBodHRwOi8vZWRuLWZvcm1hdC5vcmdcXG5cXG4gICBjbGpzLnRvb2xzLnJlYWRlci5lZG4vcmVhZCBkb2Vzbid0IGRlcGVuZCBvbiBkeW5hbWljIFZhcnMsIGFsbCBjb25maWd1cmF0aW9uXFxuICAgaXMgZG9uZSBieSBwYXNzaW5nIGFuIG9wdCBtYXAuXFxuXFxuICAgb3B0cyBpcyBhIG1hcCB0aGF0IGNhbiBpbmNsdWRlIHRoZSBmb2xsb3dpbmcga2V5czpcXG4gICA6ZW9mIC0gdmFsdWUgdG8gcmV0dXJuIG9uIGVuZC1vZi1maWxlLiBXaGVuIG5vdCBzdXBwbGllZCwgZW9mIHRocm93cyBhbiBleGNlcHRpb24uXFxuICAgOnJlYWRlcnMgIC0gYSBtYXAgb2YgdGFnIHN5bWJvbHMgdG8gZGF0YS1yZWFkZXIgZnVuY3Rpb25zIHRvIGJlIGNvbnNpZGVyZWQgYmVmb3JlIGRlZmF1bHQtZGF0YS1yZWFkZXJzLlxcbiAgICAgICAgICAgICAgV2hlbiBub3Qgc3VwcGxpZWQsIG9ubHkgdGhlIGRlZmF1bHQtZGF0YS1yZWFkZXJzIHdpbGwgYmUgdXNlZC5cXG4gICA6ZGVmYXVsdCAtIEEgZnVuY3Rpb24gb2YgdHdvIGFyZ3MsIHRoYXQgd2lsbCwgaWYgcHJlc2VudCBhbmQgbm8gcmVhZGVyIGlzIGZvdW5kIGZvciBhIHRhZyxcXG4gICAgICAgICAgICAgIGJlIGNhbGxlZCB3aXRoIHRoZSB0YWcgYW5kIHRoZSB2YWx1ZS5cIlxuIChbcmVhZGVyXVxuICAoZWRuL3JlYWRcbiAgIHs6cmVhZGVycyBAKnRhZy10YWJsZSosXG4gICAgOmRlZmF1bHQgQCpkZWZhdWx0LWRhdGEtcmVhZGVyLWZuKixcbiAgICA6ZW9mIG5pbH1cbiAgIHJlYWRlcikpXG4gKFt7OmtleXMgW2VvZl0sIDphcyBvcHRzfSByZWFkZXJdXG4gIChlZG4vcmVhZFxuICAgKHVwZGF0ZVxuICAgIChtZXJnZSBvcHRzIHs6ZGVmYXVsdCBAKmRlZmF1bHQtZGF0YS1yZWFkZXItZm4qfSlcbiAgICA6cmVhZGVyc1xuICAgIChmbiBbbV0gKG1lcmdlIEAqdGFnLXRhYmxlKiBtKSkpXG4gICByZWFkZXIpKVxuIChbcmVhZGVyIGVvZi1lcnJvcj8gZW9mIG9wdHNdXG4gIChlZG4vcmVhZFxuICAgcmVhZGVyXG4gICBlb2YtZXJyb3I/XG4gICBlb2ZcbiAgICh1cGRhdGVcbiAgICAobWVyZ2Ugb3B0cyB7OmRlZmF1bHQgQCpkZWZhdWx0LWRhdGEtcmVhZGVyLWZuKn0pXG4gICAgOnJlYWRlcnNcbiAgICAoZm4gW21dIChtZXJnZSBAKnRhZy10YWJsZSogbSkpKSkpKVxuIn0gezpzeW0gKnRhZy10YWJsZSosIDptZXRhIHt9LCA6c291cmNlICIoZGVmXG4gKnRhZy10YWJsZSpcbiAoYXRvbVxuICAoYWRkLWRhdGEtcmVhZGVyc1xuICAgeydpbnN0IHJlYWQtZGF0ZSwgJ3V1aWQgcmVhZC11dWlkLCAncXVldWUgcmVhZC1xdWV1ZSwgJ2pzIHJlYWQtanN9KSkpXG4ifSB7OnN5bSBwYXJzZS1hbmQtdmFsaWRhdGUtdGltZXN0YW1wLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3NdKX0sIDpzb3VyY2UgIihkZWZuXG4gcGFyc2UtYW5kLXZhbGlkYXRlLXRpbWVzdGFtcFxuIFtzXVxuIChsZXRcbiAgW1tfXG4gICAgeWVhcnNcbiAgICBtb250aHNcbiAgICBkYXlzXG4gICAgaG91cnNcbiAgICBtaW51dGVzXG4gICAgc2Vjb25kc1xuICAgIGZyYWN0aW9uXG4gICAgb2Zmc2V0LXNpZ25cbiAgICBvZmZzZXQtaG91cnNcbiAgICBvZmZzZXQtbWludXRlc1xuICAgIDphc1xuICAgIHZdXG4gICAocmUtbWF0Y2hlcyB0aW1lc3RhbXAtcmVnZXggcyldXG4gIChpZi1ub3RcbiAgIHZcbiAgICh0aHJvdyAoanMvRXJyb3IuIChzdHIgXCJVbnJlY29nbml6ZWQgZGF0ZS90aW1lIHN5bnRheDogXCIgcykpKVxuICAgKGxldFxuICAgIFt5ZWFyc1xuICAgICAocGFyc2UtaW50IHllYXJzKVxuICAgICBtb250aHNcbiAgICAgKG9yIChwYXJzZS1pbnQgbW9udGhzKSAxKVxuICAgICBkYXlzXG4gICAgIChvciAocGFyc2UtaW50IGRheXMpIDEpXG4gICAgIGhvdXJzXG4gICAgIChvciAocGFyc2UtaW50IGhvdXJzKSAwKVxuICAgICBtaW51dGVzXG4gICAgIChvciAocGFyc2UtaW50IG1pbnV0ZXMpIDApXG4gICAgIHNlY29uZHNcbiAgICAgKG9yIChwYXJzZS1pbnQgc2Vjb25kcykgMClcbiAgICAgZnJhY3Rpb25cbiAgICAgKG9yIChwYXJzZS1pbnQgKHplcm8tZmlsbC1yaWdodC1hbmQtdHJ1bmNhdGUgZnJhY3Rpb24gMykpIDApXG4gICAgIG9mZnNldC1zaWduXG4gICAgIChpZiAoPSBvZmZzZXQtc2lnbiBcIi1cIikgLTEgMSlcbiAgICAgb2Zmc2V0LWhvdXJzXG4gICAgIChvciAocGFyc2UtaW50IG9mZnNldC1ob3VycykgMClcbiAgICAgb2Zmc2V0LW1pbnV0ZXNcbiAgICAgKG9yIChwYXJzZS1pbnQgb2Zmc2V0LW1pbnV0ZXMpIDApXG4gICAgIG9mZnNldFxuICAgICAoKiBvZmZzZXQtc2lnbiAoKyAoKiBvZmZzZXQtaG91cnMgNjApIG9mZnNldC1taW51dGVzKSldXG4gICAgW3llYXJzXG4gICAgIChjaGVjayAxIG1vbnRocyAxMiBcInRpbWVzdGFtcCBtb250aCBmaWVsZCBtdXN0IGJlIGluIHJhbmdlIDEuLjEyXCIpXG4gICAgIChjaGVja1xuICAgICAgMVxuICAgICAgZGF5c1xuICAgICAgKGRheXMtaW4tbW9udGggbW9udGhzIChsZWFwLXllYXI/IHllYXJzKSlcbiAgICAgIFwidGltZXN0YW1wIGRheSBmaWVsZCBtdXN0IGJlIGluIHJhbmdlIDEuLmxhc3QgZGF5IGluIG1vbnRoXCIpXG4gICAgIChjaGVjayAwIGhvdXJzIDIzIFwidGltZXN0YW1wIGhvdXIgZmllbGQgbXVzdCBiZSBpbiByYW5nZSAwLi4yM1wiKVxuICAgICAoY2hlY2tcbiAgICAgIDBcbiAgICAgIG1pbnV0ZXNcbiAgICAgIDU5XG4gICAgICBcInRpbWVzdGFtcCBtaW51dGUgZmllbGQgbXVzdCBiZSBpbiByYW5nZSAwLi41OVwiKVxuICAgICAoY2hlY2tcbiAgICAgIDBcbiAgICAgIHNlY29uZHNcbiAgICAgIChpZiAoPSBtaW51dGVzIDU5KSA2MCA1OSlcbiAgICAgIFwidGltZXN0YW1wIHNlY29uZCBmaWVsZCBtdXN0IGJlIGluIHJhbmdlIDAuLjYwXCIpXG4gICAgIChjaGVja1xuICAgICAgMFxuICAgICAgZnJhY3Rpb25cbiAgICAgIDk5OVxuICAgICAgXCJ0aW1lc3RhbXAgbWlsbGlzZWNvbmQgZmllbGQgbXVzdCBiZSBpbiByYW5nZSAwLi45OTlcIilcbiAgICAgb2Zmc2V0XSkpKSlcbiJ9IHs6c3ltIHJlZ2lzdGVyLXRhZy1wYXJzZXIhLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3RhZyBmXSl9LCA6c291cmNlICIoZGVmblxuIHJlZ2lzdGVyLXRhZy1wYXJzZXIhXG4gW3RhZyBmXVxuIChsZXRcbiAgW29sZC1wYXJzZXIgKGdldCBAKnRhZy10YWJsZSogdGFnKV1cbiAgKHN3YXAhICp0YWctdGFibGUqIGFzc29jIHRhZyBmKVxuICBvbGQtcGFyc2VyKSlcbiJ9IHs6c3ltIHJlZ2lzdGVyLWRlZmF1bHQtdGFnLXBhcnNlciEsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZl0pfSwgOnNvdXJjZSAiKGRlZm5cbiByZWdpc3Rlci1kZWZhdWx0LXRhZy1wYXJzZXIhXG4gW2ZdXG4gKGxldFxuICBbb2xkLXBhcnNlciBAKmRlZmF1bHQtZGF0YS1yZWFkZXItZm4qXVxuICAoc3dhcCEgKmRlZmF1bHQtZGF0YS1yZWFkZXItZm4qIChmbiBbX10gZikpXG4gIG9sZC1wYXJzZXIpKVxuIn0gezpzeW0gZGVyZWdpc3Rlci1kZWZhdWx0LXRhZy1wYXJzZXIhLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW10pfSwgOnNvdXJjZSAiKGRlZm5cbiBkZXJlZ2lzdGVyLWRlZmF1bHQtdGFnLXBhcnNlciFcbiBbXVxuIChsZXRcbiAgW29sZC1wYXJzZXIgQCpkZWZhdWx0LWRhdGEtcmVhZGVyLWZuKl1cbiAgKHN3YXAhICpkZWZhdWx0LWRhdGEtcmVhZGVyLWZuKiAoZm4gW19dIG5pbCkpXG4gIG9sZC1wYXJzZXIpKVxuIn0gezpzeW0gcmVhZC1zdHJpbmcsIDptZXRhIHs6ZG9jICJSZWFkcyBvbmUgb2JqZWN0IGZyb20gdGhlIHN0cmluZyBzLlxuICAgUmV0dXJucyBuaWwgd2hlbiBzIGlzIG5pbCBvciBlbXB0eS5cblxuICAgUmVhZHMgZGF0YSBpbiB0aGUgZWRuIGZvcm1hdCAoc3Vic2V0IG9mIENsb2p1cmUgZGF0YSk6XG4gICBodHRwOi8vZWRuLWZvcm1hdC5vcmdcblxuICAgb3B0cyBpcyBhIG1hcCBhcyBwZXIgY2xqcy50b29scy5yZWFkZXIuZWRuL3JlYWQiLCA6YXJnbGlzdHMgW1tzXSBbb3B0cyBzXV19LCA6c291cmNlICIoZGVmblxuIHJlYWQtc3RyaW5nXG4gXCJSZWFkcyBvbmUgb2JqZWN0IGZyb20gdGhlIHN0cmluZyBzLlxcbiAgIFJldHVybnMgbmlsIHdoZW4gcyBpcyBuaWwgb3IgZW1wdHkuXFxuXFxuICAgUmVhZHMgZGF0YSBpbiB0aGUgZWRuIGZvcm1hdCAoc3Vic2V0IG9mIENsb2p1cmUgZGF0YSk6XFxuICAgaHR0cDovL2Vkbi1mb3JtYXQub3JnXFxuXFxuICAgb3B0cyBpcyBhIG1hcCBhcyBwZXIgY2xqcy50b29scy5yZWFkZXIuZWRuL3JlYWRcIlxuIChbc11cbiAgKGVkbi9yZWFkLXN0cmluZ1xuICAgezpyZWFkZXJzIEAqdGFnLXRhYmxlKixcbiAgICA6ZGVmYXVsdCBAKmRlZmF1bHQtZGF0YS1yZWFkZXItZm4qLFxuICAgIDplb2YgbmlsfVxuICAgcykpXG4gKFtvcHRzIHNdXG4gIChlZG4vcmVhZC1zdHJpbmdcbiAgICh1cGRhdGVcbiAgICAobWVyZ2UgezpkZWZhdWx0IEAqZGVmYXVsdC1kYXRhLXJlYWRlci1mbip9IG9wdHMpXG4gICAgOnJlYWRlcnNcbiAgICAoZm4gW21dIChtZXJnZSBAKnRhZy10YWJsZSogbSkpKVxuICAgcykpKVxuIn0gezpzeW0gZGVyZWdpc3Rlci10YWctcGFyc2VyISwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt0YWddKX0sIDpzb3VyY2UgIihkZWZuXG4gZGVyZWdpc3Rlci10YWctcGFyc2VyIVxuIFt0YWddXG4gKGxldFxuICBbb2xkLXBhcnNlciAoZ2V0IEAqdGFnLXRhYmxlKiB0YWcpXVxuICAoc3dhcCEgKnRhZy10YWJsZSogZGlzc29jIHRhZylcbiAgb2xkLXBhcnNlcikpXG4ifSB7OnN5bSBwYXJzZS10aW1lc3RhbXAsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbdHNdKX0sIDpzb3VyY2UgIihkZWZuXG4gcGFyc2UtdGltZXN0YW1wXG4gW3RzXVxuIChpZi1sZXRcbiAgW1t5ZWFycyBtb250aHMgZGF5cyBob3VycyBtaW51dGVzIHNlY29uZHMgbXMgb2Zmc2V0XVxuICAgKHBhcnNlLWFuZC12YWxpZGF0ZS10aW1lc3RhbXAgdHMpXVxuICAoanMvRGF0ZS5cbiAgICgtXG4gICAgKC5VVEMganMvRGF0ZSB5ZWFycyAoZGVjIG1vbnRocykgZGF5cyBob3VycyBtaW51dGVzIHNlY29uZHMgbXMpXG4gICAgKCogb2Zmc2V0IDYwIDEwMDApKSlcbiAgKHRocm93IChqcy9FcnJvci4gKHN0ciBcIlVucmVjb2duaXplZCBkYXRlL3RpbWUgc3ludGF4OiBcIiB0cykpKSkpXG4ifSksIGNsb2p1cmUud2FsayAoezpzeW0gd2FsaywgOm1ldGEgezpkb2MgIlRyYXZlcnNlcyBmb3JtLCBhbiBhcmJpdHJhcnkgZGF0YSBzdHJ1Y3R1cmUuICBpbm5lciBhbmQgb3V0ZXIgYXJlXG4gIGZ1bmN0aW9ucy4gIEFwcGxpZXMgaW5uZXIgdG8gZWFjaCBlbGVtZW50IG9mIGZvcm0sIGJ1aWxkaW5nIHVwIGFcbiAgZGF0YSBzdHJ1Y3R1cmUgb2YgdGhlIHNhbWUgdHlwZSwgdGhlbiBhcHBsaWVzIG91dGVyIHRvIHRoZSByZXN1bHQuXG4gIFJlY29nbml6ZXMgYWxsIENsb2p1cmUgZGF0YSBzdHJ1Y3R1cmVzLiBDb25zdW1lcyBzZXFzIGFzIHdpdGggZG9hbGwuIiwgOmFyZ2xpc3RzIChbaW5uZXIgb3V0ZXIgZm9ybV0pfSwgOnNvdXJjZSAiKGRlZm5cbiB3YWxrXG4gXCJUcmF2ZXJzZXMgZm9ybSwgYW4gYXJiaXRyYXJ5IGRhdGEgc3RydWN0dXJlLiAgaW5uZXIgYW5kIG91dGVyIGFyZVxcbiAgZnVuY3Rpb25zLiAgQXBwbGllcyBpbm5lciB0byBlYWNoIGVsZW1lbnQgb2YgZm9ybSwgYnVpbGRpbmcgdXAgYVxcbiAgZGF0YSBzdHJ1Y3R1cmUgb2YgdGhlIHNhbWUgdHlwZSwgdGhlbiBhcHBsaWVzIG91dGVyIHRvIHRoZSByZXN1bHQuXFxuICBSZWNvZ25pemVzIGFsbCBDbG9qdXJlIGRhdGEgc3RydWN0dXJlcy4gQ29uc3VtZXMgc2VxcyBhcyB3aXRoIGRvYWxsLlwiXG4gezphZGRlZCBcIjEuMVwifVxuIFtpbm5lciBvdXRlciBmb3JtXVxuIChjb25kXG4gIChsaXN0PyBmb3JtKVxuICAob3V0ZXIgKGFwcGx5IGxpc3QgKG1hcCBpbm5lciBmb3JtKSkpXG4gIChtYXAtZW50cnk/IGZvcm0pXG4gIChvdXRlciAoTWFwRW50cnkuIChpbm5lciAoa2V5IGZvcm0pKSAoaW5uZXIgKHZhbCBmb3JtKSkgbmlsKSlcbiAgKHNlcT8gZm9ybSlcbiAgKG91dGVyIChkb2FsbCAobWFwIGlubmVyIGZvcm0pKSlcbiAgKHJlY29yZD8gZm9ybSlcbiAgKG91dGVyIChyZWR1Y2UgKGZuIFtyIHhdIChjb25qIHIgKGlubmVyIHgpKSkgZm9ybSBmb3JtKSlcbiAgKGNvbGw/IGZvcm0pXG4gIChvdXRlciAoaW50byAoZW1wdHkgZm9ybSkgKG1hcCBpbm5lciBmb3JtKSkpXG4gIDplbHNlXG4gIChvdXRlciBmb3JtKSkpXG4ifSB7OnN5bSBwb3N0d2FsaywgOm1ldGEgezpkb2MgIlBlcmZvcm1zIGEgZGVwdGgtZmlyc3QsIHBvc3Qtb3JkZXIgdHJhdmVyc2FsIG9mIGZvcm0uICBDYWxscyBmIG9uXG4gIGVhY2ggc3ViLWZvcm0sIHVzZXMgZidzIHJldHVybiB2YWx1ZSBpbiBwbGFjZSBvZiB0aGUgb3JpZ2luYWwuXG4gIFJlY29nbml6ZXMgYWxsIENsb2p1cmUgZGF0YSBzdHJ1Y3R1cmVzLiBDb25zdW1lcyBzZXFzIGFzIHdpdGggZG9hbGwuIiwgOmFyZ2xpc3RzIChbZiBmb3JtXSl9LCA6c291cmNlICIoZGVmblxuIHBvc3R3YWxrXG4gXCJQZXJmb3JtcyBhIGRlcHRoLWZpcnN0LCBwb3N0LW9yZGVyIHRyYXZlcnNhbCBvZiBmb3JtLiAgQ2FsbHMgZiBvblxcbiAgZWFjaCBzdWItZm9ybSwgdXNlcyBmJ3MgcmV0dXJuIHZhbHVlIGluIHBsYWNlIG9mIHRoZSBvcmlnaW5hbC5cXG4gIFJlY29nbml6ZXMgYWxsIENsb2p1cmUgZGF0YSBzdHJ1Y3R1cmVzLiBDb25zdW1lcyBzZXFzIGFzIHdpdGggZG9hbGwuXCJcbiB7OmFkZGVkIFwiMS4xXCJ9XG4gW2YgZm9ybV1cbiAod2FsayAocGFydGlhbCBwb3N0d2FsayBmKSBmIGZvcm0pKVxuIn0gezpzeW0gcHJld2FsaywgOm1ldGEgezpkb2MgIkxpa2UgcG9zdHdhbGssIGJ1dCBkb2VzIHByZS1vcmRlciB0cmF2ZXJzYWwuIiwgOmFyZ2xpc3RzIChbZiBmb3JtXSl9LCA6c291cmNlICIoZGVmblxuIHByZXdhbGtcbiBcIkxpa2UgcG9zdHdhbGssIGJ1dCBkb2VzIHByZS1vcmRlciB0cmF2ZXJzYWwuXCJcbiB7OmFkZGVkIFwiMS4xXCJ9XG4gW2YgZm9ybV1cbiAod2FsayAocGFydGlhbCBwcmV3YWxrIGYpIGlkZW50aXR5IChmIGZvcm0pKSlcbiJ9IHs6c3ltIGtleXdvcmRpemUta2V5cywgOm1ldGEgezpkb2MgIlJlY3Vyc2l2ZWx5IHRyYW5zZm9ybXMgYWxsIG1hcCBrZXlzIGZyb20gc3RyaW5ncyB0byBrZXl3b3Jkcy4iLCA6YXJnbGlzdHMgKFttXSl9LCA6c291cmNlICIoZGVmblxuIGtleXdvcmRpemUta2V5c1xuIFwiUmVjdXJzaXZlbHkgdHJhbnNmb3JtcyBhbGwgbWFwIGtleXMgZnJvbSBzdHJpbmdzIHRvIGtleXdvcmRzLlwiXG4gezphZGRlZCBcIjEuMVwifVxuIFttXVxuIChsZXRcbiAgW2YgKGZuIFtbayB2XV0gKGlmIChzdHJpbmc/IGspIFsoa2V5d29yZCBrKSB2XSBbayB2XSkpXVxuICAocG9zdHdhbGsgKGZuIFt4XSAoaWYgKG1hcD8geCkgKGludG8ge30gKG1hcCBmIHgpKSB4KSkgbSkpKVxuIn0gezpzeW0gc3RyaW5naWZ5LWtleXMsIDptZXRhIHs6ZG9jICJSZWN1cnNpdmVseSB0cmFuc2Zvcm1zIGFsbCBtYXAga2V5cyBmcm9tIGtleXdvcmRzIHRvIHN0cmluZ3MuIiwgOmFyZ2xpc3RzIChbbV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBzdHJpbmdpZnkta2V5c1xuIFwiUmVjdXJzaXZlbHkgdHJhbnNmb3JtcyBhbGwgbWFwIGtleXMgZnJvbSBrZXl3b3JkcyB0byBzdHJpbmdzLlwiXG4gezphZGRlZCBcIjEuMVwifVxuIFttXVxuIChsZXRcbiAgW2YgKGZuIFtbayB2XV0gKGlmIChrZXl3b3JkPyBrKSBbKG5hbWUgaykgdl0gW2sgdl0pKV1cbiAgKHBvc3R3YWxrIChmbiBbeF0gKGlmIChtYXA/IHgpIChpbnRvIHt9IChtYXAgZiB4KSkgeCkpIG0pKSlcbiJ9IHs6c3ltIHByZXdhbGstcmVwbGFjZSwgOm1ldGEgezpkb2MgIlJlY3Vyc2l2ZWx5IHRyYW5zZm9ybXMgZm9ybSBieSByZXBsYWNpbmcga2V5cyBpbiBzbWFwIHdpdGggdGhlaXJcbiAgdmFsdWVzLiAgTGlrZSBjbG9qdXJlL3JlcGxhY2UgYnV0IHdvcmtzIG9uIGFueSBkYXRhIHN0cnVjdHVyZS4gIERvZXNcbiAgcmVwbGFjZW1lbnQgYXQgdGhlIHJvb3Qgb2YgdGhlIHRyZWUgZmlyc3QuIiwgOmFyZ2xpc3RzIChbc21hcCBmb3JtXSl9LCA6c291cmNlICIoZGVmblxuIHByZXdhbGstcmVwbGFjZVxuIFwiUmVjdXJzaXZlbHkgdHJhbnNmb3JtcyBmb3JtIGJ5IHJlcGxhY2luZyBrZXlzIGluIHNtYXAgd2l0aCB0aGVpclxcbiAgdmFsdWVzLiAgTGlrZSBjbG9qdXJlL3JlcGxhY2UgYnV0IHdvcmtzIG9uIGFueSBkYXRhIHN0cnVjdHVyZS4gIERvZXNcXG4gIHJlcGxhY2VtZW50IGF0IHRoZSByb290IG9mIHRoZSB0cmVlIGZpcnN0LlwiXG4gezphZGRlZCBcIjEuMVwifVxuIFtzbWFwIGZvcm1dXG4gKHByZXdhbGsgKGZuIFt4XSAoaWYgKGNvbnRhaW5zPyBzbWFwIHgpIChzbWFwIHgpIHgpKSBmb3JtKSlcbiJ9IHs6c3ltIHBvc3R3YWxrLXJlcGxhY2UsIDptZXRhIHs6ZG9jICJSZWN1cnNpdmVseSB0cmFuc2Zvcm1zIGZvcm0gYnkgcmVwbGFjaW5nIGtleXMgaW4gc21hcCB3aXRoIHRoZWlyXG4gIHZhbHVlcy4gIExpa2UgY2xvanVyZS9yZXBsYWNlIGJ1dCB3b3JrcyBvbiBhbnkgZGF0YSBzdHJ1Y3R1cmUuICBEb2VzXG4gIHJlcGxhY2VtZW50IGF0IHRoZSBsZWF2ZXMgb2YgdGhlIHRyZWUgZmlyc3QuIiwgOmFyZ2xpc3RzIChbc21hcCBmb3JtXSl9LCA6c291cmNlICIoZGVmblxuIHBvc3R3YWxrLXJlcGxhY2VcbiBcIlJlY3Vyc2l2ZWx5IHRyYW5zZm9ybXMgZm9ybSBieSByZXBsYWNpbmcga2V5cyBpbiBzbWFwIHdpdGggdGhlaXJcXG4gIHZhbHVlcy4gIExpa2UgY2xvanVyZS9yZXBsYWNlIGJ1dCB3b3JrcyBvbiBhbnkgZGF0YSBzdHJ1Y3R1cmUuICBEb2VzXFxuICByZXBsYWNlbWVudCBhdCB0aGUgbGVhdmVzIG9mIHRoZSB0cmVlIGZpcnN0LlwiXG4gezphZGRlZCBcIjEuMVwifVxuIFtzbWFwIGZvcm1dXG4gKHBvc3R3YWxrIChmbiBbeF0gKGlmIChjb250YWlucz8gc21hcCB4KSAoc21hcCB4KSB4KSkgZm9ybSkpXG4ifSksIHRhZy1zb3VwLmNvcmUgKHs6c3ltIHNwZWNpYWwtaW5kZW50LCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZlxuIHNwZWNpYWwtaW5kZW50XG4gI3snYW5kXG4gICAnPj1cbiAgICc+XG4gICAnL1xuICAgJy0+PlxuICAgJzw9XG4gICAnPVxuICAgJ2NvbmQtPj5cbiAgICcrXG4gICAnPT1cbiAgICcqXG4gICAnc29tZS0+PlxuICAgJ3NvbWUtPlxuICAgJ25vdD1cbiAgICdjb25kLT5cbiAgICc8XG4gICAnLVxuICAgJy0+XG4gICAnYXMtPlxuICAgJ29yfSlcbiJ9IHs6c3ltIGNvZGUtPnRhZ3MsIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRoZSB0YWdzIGZvciB0aGUgZ2l2ZW4gc3RyaW5nIGNvbnRhaW5pbmcgY29kZS4iLCA6YXJnbGlzdHMgKFt0ZXh0XSl9LCA6c291cmNlICIoZGVmblxuIGNvZGUtPnRhZ3NcbiBcIlJldHVybnMgdGhlIHRhZ3MgZm9yIHRoZSBnaXZlbiBzdHJpbmcgY29udGFpbmluZyBjb2RlLlwiXG4gW3RleHRdXG4gKGxldFxuICBbcmVhZGVyIChpbmRleGluZy1wdXNoLWJhY2stcmVhZGVyIHRleHQpXVxuICAobG9vcFxuICAgW20gKHRyYW5zaWVudCB7fSldXG4gICAoaWYtbGV0XG4gICAgW3Rva2VuIChyZWFkLXNhZmUgcmVhZGVyKV1cbiAgICAocmVjdXIgKHRhZy1tYXAgdG9rZW4gbSAwKSlcbiAgICAocGVyc2lzdGVudCEgbSkpKSkpXG4ifSB7OnN5bSBpbmRlbnQtZm9yLWxpbmUsIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRoZSBudW1iZXIgb2Ygc3BhY2VzIHRoZSBnaXZlbiBsaW5lIHNob3VsZCBiZSBpbmRlbnRlZC4iLCA6YXJnbGlzdHMgKFt0YWdzIGxpbmVdKX0sIDpzb3VyY2UgIihkZWZuXG4gaW5kZW50LWZvci1saW5lXG4gXCJSZXR1cm5zIHRoZSBudW1iZXIgb2Ygc3BhY2VzIHRoZSBnaXZlbiBsaW5lIHNob3VsZCBiZSBpbmRlbnRlZC5cIlxuIFt0YWdzIGxpbmVdXG4gKG9yXG4gICgtPj5cbiAgIChnZXQtdGFncy1iZWZvcmUtbGluZSB0YWdzIGxpbmUpXG4gICByZXZlcnNlXG4gICAoc29tZSA6bmV4dC1saW5lLWluZGVudCkpXG4gIDApKVxuIn0gezpzeW0gYWRqdXN0LWluZGVudCwgOm1ldGEgezpkb2MgIlJldHVybnMgaG93IG11Y2ggdGhlIGluZGVudCBzaG91bGQgYmUgYWRqdXN0ZWQgZm9yIHRoZSBnaXZlbiB0b2tlbi4iLCA6YXJnbGlzdHMgKFt0b2tlbl0pfSwgOnNvdXJjZSAiKGRlZm5cbiBhZGp1c3QtaW5kZW50XG4gXCJSZXR1cm5zIGhvdyBtdWNoIHRoZSBpbmRlbnQgc2hvdWxkIGJlIGFkanVzdGVkIGZvciB0aGUgZ2l2ZW4gdG9rZW4uXCJcbiBbdG9rZW5dXG4gKGlmXG4gIChsaXN0PyB0b2tlbilcbiAgKGxldFxuICAgW2ZpcnN0LXZhbCAoLT4gdG9rZW4gZmlyc3QgdW53cmFwLXZhbHVlKV1cbiAgIChjb25kXG4gICAgKG9yICh2ZWN0b3I/IGZpcnN0LXZhbCkgKGxpc3Q/IGZpcnN0LXZhbCkpXG4gICAgMFxuICAgICgjezp1c2UgOnJlcXVpcmUgOmltcG9ydH0gZmlyc3QtdmFsKVxuICAgIChpbmMgKGNvdW50IChzdHIgZmlyc3QtdmFsKSkpXG4gICAgKCN7OmNsanIgOmNsaiA6Y2xqc30gZmlyc3QtdmFsKVxuICAgIDBcbiAgICAoY29udGFpbnM/IHNwZWNpYWwtaW5kZW50IGZpcnN0LXZhbClcbiAgICAoaW5jIChjb3VudCAoc3RyIGZpcnN0LXZhbCkpKVxuICAgIDplbHNlXG4gICAgMSkpXG4gIDApKVxuIn0gezpzeW0gcmVhZC1zYWZlLCA6bWV0YSB7OmRvYyAiUmV0dXJucyBlaXRoZXIgYSBmb3JtIG9yIGFuIGV4Y2VwdGlvbiBvYmplY3QsIG9yIG5pbCBpZiBFT0YgaXMgcmVhY2hlZC4iLCA6YXJnbGlzdHMgKFtyZWFkZXJdKX0sIDpzb3VyY2UgIihkZWZuXG4gcmVhZC1zYWZlXG4gXCJSZXR1cm5zIGVpdGhlciBhIGZvcm0gb3IgYW4gZXhjZXB0aW9uIG9iamVjdCwgb3IgbmlsIGlmIEVPRiBpcyByZWFjaGVkLlwiXG4gW3JlYWRlcl1cbiAodHJ5XG4gIChiaW5kaW5nXG4gICBbKndyYXAtdmFsdWUtYW5kLWFkZC1tZXRhZGF0YT8qIHRydWUgci8qc3VwcHJlc3MtcmVhZCogdHJ1ZV1cbiAgIChyL3JlYWQgezpyZWFkLWNvbmQgOnByZXNlcnZlLCA6ZW9mIG5pbH0gcmVhZGVyKSlcbiAgKGNhdGNoIEV4Y2VwdGlvbkluZm8gZSBlKSkpXG4ifSB7OnN5bSB1bndyYXAtdmFsdWUsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbdmFsdWVdKX0sIDpzb3VyY2UgIihkZWZuXG4gdW53cmFwLXZhbHVlXG4gW3ZhbHVlXVxuIChpZiAoLT4gdmFsdWUgbWV0YSA6d3JhcHBlZD8pIChmaXJzdCB2YWx1ZSkgdmFsdWUpKVxuIn0gezpzeW0gZ2V0LXRhZ3MtYmVmb3JlLWxpbmUsIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRoZSB0YWdzIGJlZm9yZSB0aGUgZ2l2ZW4gbGluZS4iLCA6YXJnbGlzdHMgKFt0YWdzIGxpbmVdKX0sIDpzb3VyY2UgIihkZWZuXG4gZ2V0LXRhZ3MtYmVmb3JlLWxpbmVcbiBcIlJldHVybnMgdGhlIHRhZ3MgYmVmb3JlIHRoZSBnaXZlbiBsaW5lLlwiXG4gW3RhZ3MgbGluZV1cbiAoLT4+XG4gIHRhZ3NcbiAgKGZpbHRlciAoZm4qIFtwMV9fNDI3MjYjXSAoPCAoZmlyc3QgcDFfXzQyNzI2IykgbGluZSkpKVxuICAoc29ydC1ieSBmaXJzdClcbiAgKG1hcCBzZWNvbmQpXG4gIChtYXAgKGZuKiBbcDFfXzQyNzI3I10gKHNvcnQtYnkgOmNvbHVtbiBwMV9fNDI3MjcjKSkpXG4gIChhcHBseSBjb25jYXQpKSlcbiJ9IHs6c3ltIGZvcndhcmQtaW5kZW50LWZvci1saW5lLCA6bWV0YSB7OmRvYyAiUmV0dXJucyB0aGUgbnVtYmVyIG9mIHNwYWNlcyB0aGUgZ2l2ZW4gbGluZSBzaG91bGQgYmUgaW5kZW50ZWQgZm9yd2FyZC4iLCA6YXJnbGlzdHMgKFt0YWdzIGxpbmUgY3VycmVudC1pbmRlbnRdKX0sIDpzb3VyY2UgIihkZWZuXG4gZm9yd2FyZC1pbmRlbnQtZm9yLWxpbmVcbiBcIlJldHVybnMgdGhlIG51bWJlciBvZiBzcGFjZXMgdGhlIGdpdmVuIGxpbmUgc2hvdWxkIGJlIGluZGVudGVkIGZvcndhcmQuXCJcbiBbdGFncyBsaW5lIGN1cnJlbnQtaW5kZW50XVxuIChsZXRcbiAgW3RhZ3MtYmVmb3JlIChnZXQtdGFncy1iZWZvcmUtbGluZSB0YWdzIGxpbmUpXVxuICAobG9vcFxuICAgW3RhZ3MgKHJldmVyc2UgdGFncy1iZWZvcmUpIG1heC10YWItc3RvcCAtMSB0YWItc3RvcCAtMV1cbiAgIChpZi1sZXRcbiAgICBbdGFnIChmaXJzdCB0YWdzKV1cbiAgICAoaWYtbGV0XG4gICAgIFtpbmRlbnQgKDppbmRlbnQgdGFnKV1cbiAgICAgKGNvbmRcbiAgICAgICg8PSBpbmRlbnQgY3VycmVudC1pbmRlbnQpXG4gICAgICAocmVjdXIgW10gbWF4LXRhYi1zdG9wIHRhYi1zdG9wKVxuICAgICAgKG9yIChuZWc/IG1heC10YWItc3RvcCkgKDwgY3VycmVudC1pbmRlbnQgaW5kZW50IG1heC10YWItc3RvcCkpXG4gICAgICAocmVjdXJcbiAgICAgICAocmVzdCB0YWdzKVxuICAgICAgIChpbmMgaW5kZW50KVxuICAgICAgIChpZiAoOnNraXAtaW5kZW50PyB0YWcpIHRhYi1zdG9wIGluZGVudCkpXG4gICAgICA6ZWxzZVxuICAgICAgKHJlY3VyIChyZXN0IHRhZ3MpIG1heC10YWItc3RvcCB0YWItc3RvcCkpXG4gICAgIChyZWN1ciAocmVzdCB0YWdzKSBtYXgtdGFiLXN0b3AgdGFiLXN0b3ApKVxuICAgIChpZiAoPD0gdGFiLXN0b3AgY3VycmVudC1pbmRlbnQpICgrIGN1cnJlbnQtaW5kZW50IDIpIHRhYi1zdG9wKSkpKSlcbiJ9IHs6c3ltIHRhZy1tYXAsIDptZXRhIHs6ZG9jICJSZXR1cm5zIGEgdHJhbnNpZW50IG1hcCBjb250YWluaW5nIHRoZSB0YWdzLCBvcmdhbml6ZWQgYnkgbGluZSBudW1iZXIuIiwgOmFyZ2xpc3RzIChbdG9rZW4gcmVzdWx0cy1tYXAgcGFyZW50LWluZGVudF0pfSwgOnNvdXJjZSAiKGRlZm5cbiB0YWctbWFwXG4gXCJSZXR1cm5zIGEgdHJhbnNpZW50IG1hcCBjb250YWluaW5nIHRoZSB0YWdzLCBvcmdhbml6ZWQgYnkgbGluZSBudW1iZXIuXCJcbiBbdG9rZW4gcmVzdWx0cy1tYXAgcGFyZW50LWluZGVudF1cbiAoY29uZFxuICAoaW5zdGFuY2U/IEV4Y2VwdGlvbkluZm8gdG9rZW4pXG4gIChsZXRcbiAgIFt7OmtleXMgW2xpbmUgY29sXX0gKGV4LWRhdGEgdG9rZW4pXVxuICAgKGFzc29jIVxuICAgIHJlc3VsdHMtbWFwXG4gICAgbGluZVxuICAgIChjb25qXG4gICAgIChnZXQgcmVzdWx0cy1tYXAgbGluZSBbXSlcbiAgICAgezplcnJvcj8gdHJ1ZSxcbiAgICAgIDptZXNzYWdlICM/KDpjbGogKC5nZXRNZXNzYWdlIHRva2VuKSA6Y2xqcyAoLi1tZXNzYWdlIHRva2VuKSksXG4gICAgICA6Y29sdW1uIGNvbH0pKSlcbiAgKGFuZCAoY29sbD8gdG9rZW4pIChuaWw/IChtZXRhIHRva2VuKSkpXG4gIChyZWR1Y2VcbiAgIChmbiBbcmVzdWx0cy1tYXAgdG9rZW5dICh0YWctbWFwIHRva2VuIHJlc3VsdHMtbWFwIHBhcmVudC1pbmRlbnQpKVxuICAgcmVzdWx0cy1tYXBcbiAgIHRva2VuKVxuICA6ZWxzZVxuICAobGV0XG4gICBbezprZXlzIFtsaW5lIGNvbHVtbiBlbmQtbGluZSBlbmQtY29sdW1uXX0gKG1ldGEgdG9rZW4pXVxuICAgKGlmLW5vdFxuICAgIChhbmQgbGluZSBjb2x1bW4gZW5kLWxpbmUgZW5kLWNvbHVtbilcbiAgICByZXN1bHRzLW1hcFxuICAgIChsZXRcbiAgICAgW3ZhbHVlXG4gICAgICAodW53cmFwLXZhbHVlIHRva2VuKVxuICAgICAgaW5kZW50XG4gICAgICAobWF4IHBhcmVudC1pbmRlbnQgKGRlYyBjb2x1bW4pKVxuICAgICAgdG9wLWxldmVsP1xuICAgICAgKD0gcGFyZW50LWluZGVudCAwKV1cbiAgICAgKGlmXG4gICAgICAoY29sbD8gdmFsdWUpXG4gICAgICAobGV0XG4gICAgICAgW2RlbGltaXRlci1zaXplXG4gICAgICAgIChpZiAoc2V0PyB2YWx1ZSkgMiAxKVxuICAgICAgICBuZXctZW5kLWNvbHVtblxuICAgICAgICAoKyBjb2x1bW4gZGVsaW1pdGVyLXNpemUpXG4gICAgICAgIGFkanVzdG1lbnRcbiAgICAgICAgKGFkanVzdC1pbmRlbnQgdmFsdWUpXG4gICAgICAgIG5leHQtbGluZS1pbmRlbnRcbiAgICAgICAgKCsgKGRlYyBjb2x1bW4pIGRlbGltaXRlci1zaXplIGFkanVzdG1lbnQpXVxuICAgICAgIChhcy0+XG4gICAgICAgIHJlc3VsdHMtbWFwXG4gICAgICAgICRcbiAgICAgICAgKGFzc29jIVxuICAgICAgICAgJFxuICAgICAgICAgbGluZVxuICAgICAgICAgKC0+XG4gICAgICAgICAgKGdldCAkIGxpbmUgW10pXG4gICAgICAgICAgKGNvbmpcbiAgICAgICAgICAgezpiZWdpbj8gdHJ1ZSxcbiAgICAgICAgICAgIDpjb2x1bW4gY29sdW1uLFxuICAgICAgICAgICAgOnZhbHVlIHZhbHVlLFxuICAgICAgICAgICAgOmluZGVudCBpbmRlbnQsXG4gICAgICAgICAgICA6dG9wLWxldmVsPyB0b3AtbGV2ZWw/LFxuICAgICAgICAgICAgOnNraXAtaW5kZW50PyB0cnVlfSlcbiAgICAgICAgICAoY29uaiB7OmRlbGltaXRlcj8gdHJ1ZSwgOmNvbHVtbiBjb2x1bW59KVxuICAgICAgICAgIChjb25qXG4gICAgICAgICAgIHs6ZW5kPyB0cnVlLFxuICAgICAgICAgICAgOmNvbHVtbiBuZXctZW5kLWNvbHVtbixcbiAgICAgICAgICAgIDpuZXh0LWxpbmUtaW5kZW50IG5leHQtbGluZS1pbmRlbnQsXG4gICAgICAgICAgICA6aW5kZW50IG5leHQtbGluZS1pbmRlbnR9KSkpXG4gICAgICAgIChyZWR1Y2VcbiAgICAgICAgIChmblxuICAgICAgICAgIFtyZXN1bHRzLW1hcCB0b2tlbl1cbiAgICAgICAgICAodGFnLW1hcCB0b2tlbiByZXN1bHRzLW1hcCBuZXh0LWxpbmUtaW5kZW50KSlcbiAgICAgICAgICRcbiAgICAgICAgIHZhbHVlKVxuICAgICAgICAoYXNzb2MhXG4gICAgICAgICAkXG4gICAgICAgICBlbmQtbGluZVxuICAgICAgICAgKC0+XG4gICAgICAgICAgKGdldCAkIGVuZC1saW5lIFtdKVxuICAgICAgICAgIChjb25qIHs6ZGVsaW1pdGVyPyB0cnVlLCA6Y29sdW1uIChkZWMgZW5kLWNvbHVtbil9KVxuICAgICAgICAgIChjb25qXG4gICAgICAgICAgIHs6ZW5kPyB0cnVlLFxuICAgICAgICAgICAgOmNvbHVtbiBlbmQtY29sdW1uLFxuICAgICAgICAgICAgOm5leHQtbGluZS1pbmRlbnQgcGFyZW50LWluZGVudH0pXG4gICAgICAgICAgKGNvbmogezplbmQ/IHRydWUsIDpjb2x1bW4gZW5kLWNvbHVtbn0pKSkpKVxuICAgICAgKGFzLT5cbiAgICAgICByZXN1bHRzLW1hcFxuICAgICAgICRcbiAgICAgICAoYXNzb2MhXG4gICAgICAgICRcbiAgICAgICAgbGluZVxuICAgICAgICAoY29ualxuICAgICAgICAgKGdldCAkIGxpbmUgW10pXG4gICAgICAgICB7OmJlZ2luPyB0cnVlLFxuICAgICAgICAgIDpjb2x1bW4gY29sdW1uLFxuICAgICAgICAgIDp2YWx1ZSB2YWx1ZSxcbiAgICAgICAgICA6aW5kZW50IGluZGVudCxcbiAgICAgICAgICA6dG9wLWxldmVsPyB0b3AtbGV2ZWw/fSkpXG4gICAgICAgKGFzc29jIVxuICAgICAgICAkXG4gICAgICAgIGVuZC1saW5lXG4gICAgICAgIChjb25qXG4gICAgICAgICAoZ2V0ICQgZW5kLWxpbmUgW10pXG4gICAgICAgICB7OmVuZD8gdHJ1ZSwgOmNvbHVtbiBlbmQtY29sdW1ufSkpKSkpKSkpKVxuIn0gezpzeW0gYmFjay1pbmRlbnQtZm9yLWxpbmUsIDptZXRhIHs6ZG9jICJSZXR1cm5zIHRoZSBudW1iZXIgb2Ygc3BhY2VzIHRoZSBnaXZlbiBsaW5lIHNob3VsZCBiZSBpbmRlbnRlZCBiYWNrLiIsIDphcmdsaXN0cyAoW3RhZ3MgbGluZSBjdXJyZW50LWluZGVudF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBiYWNrLWluZGVudC1mb3ItbGluZVxuIFwiUmV0dXJucyB0aGUgbnVtYmVyIG9mIHNwYWNlcyB0aGUgZ2l2ZW4gbGluZSBzaG91bGQgYmUgaW5kZW50ZWQgYmFjay5cIlxuIFt0YWdzIGxpbmUgY3VycmVudC1pbmRlbnRdXG4gKGxldFxuICBbdGFncy1iZWZvcmUgKGdldC10YWdzLWJlZm9yZS1saW5lIHRhZ3MgbGluZSldXG4gIChsb29wXG4gICBbdGFncyAocmV2ZXJzZSB0YWdzLWJlZm9yZSkgbWF4LXRhYi1zdG9wIGN1cnJlbnQtaW5kZW50XVxuICAgKGlmLWxldFxuICAgIFt0YWcgKGZpcnN0IHRhZ3MpXVxuICAgIChpZi1sZXRcbiAgICAgW2luZGVudCAoOmluZGVudCB0YWcpXVxuICAgICAoaWZcbiAgICAgICg8IGluZGVudCBtYXgtdGFiLXN0b3ApXG4gICAgICAoaWYgKDpza2lwLWluZGVudD8gdGFnKSAocmVjdXIgKHJlc3QgdGFncykgKGluYyBpbmRlbnQpKSBpbmRlbnQpXG4gICAgICAocmVjdXIgKHJlc3QgdGFncykgbWF4LXRhYi1zdG9wKSlcbiAgICAgKHJlY3VyIChyZXN0IHRhZ3MpIG1heC10YWItc3RvcCkpXG4gICAgKC0gY3VycmVudC1pbmRlbnQgMikpKSkpXG4ifSksIGV4cG91bmQucGF0aHMgKHs6c3ltIHBhdGhzLXRvLXZhbHVlLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2Zvcm0gdmFsIHBhdGggcGF0aHNdKX0sIDpzb3VyY2UgIihkZWZuXG4gcGF0aHMtdG8tdmFsdWVcbiBbZm9ybSB2YWwgcGF0aCBwYXRoc11cbiAoY29uZFxuICAoPSBmb3JtIHZhbClcbiAgKGNvbmogcGF0aHMgcGF0aClcbiAgKG9yIChzZXF1ZW50aWFsPyBmb3JtKSAoc2V0PyBmb3JtKSlcbiAgKHJlZHVjZVxuICAgKGZuIFtwcyBbeCBpXV0gKHBhdGhzLXRvLXZhbHVlIHggdmFsIChjb25qIHBhdGggaSkgcHMpKVxuICAgcGF0aHNcbiAgIChtYXAgdmVjdG9yIGZvcm0gKHJhbmdlKSkpXG4gIChtYXA/IGZvcm0pXG4gIChyZWR1Y2VcbiAgIChmblxuICAgIFtwcyBbayB2XV1cbiAgICAoLT4+XG4gICAgIHBzXG4gICAgIChwYXRocy10by12YWx1ZSBrIHZhbCAoY29uaiBwYXRoICgtPktleVBhdGhTZWdtZW50IGspKSlcbiAgICAgKHBhdGhzLXRvLXZhbHVlIHYgdmFsIChjb25qIHBhdGggaykpKSlcbiAgIHBhdGhzXG4gICBmb3JtKVxuICA6ZWxzZVxuICBwYXRocykpXG4ifSB7OnN5bSBlcXVhbGlzaD8sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbeCB5XSl9LCA6c291cmNlICIoZGVmbiBlcXVhbGlzaD8gW3ggeV0gKG9yICg9IHggeSkgKGZuLWVxdWFsIHggeSkgKGJvdGgtbmFuPyB4IHkpKSlcbiJ9IHs6c3ltIGluLXdpdGgta3BzLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2Zvcm0gdmFsIGluIGluJ10pfSwgOnNvdXJjZSAiKGRlZm5cbiBpbi13aXRoLWtwc1xuIFtmb3JtIHZhbCBpbiBpbiddXG4gKGxldFxuICBbcmVzIChpbi13aXRoLWtwcyogZm9ybSB2YWwgaW4gaW4nKV1cbiAgKGlmICg9IDpleHBvdW5kLnBhdGhzL25vdC1mb3VuZCByZXMpIG5pbCByZXMpKSlcbiJ9IHs6c3ltIHZhbHVlLWluLCA6bWV0YSB7OmRvYyAiU2ltaWxhciB0byBnZXQtaW4sIGJ1dCB3b3JrcyB3aXRoIHBhdGhzIHRoYXQgcmVmZXJlbmNlIG1hcCBrZXlzIiwgOmFyZ2xpc3RzIChbZm9ybSBpbl0pfSwgOnNvdXJjZSAiKGRlZm5cbiB2YWx1ZS1pblxuIFwiU2ltaWxhciB0byBnZXQtaW4sIGJ1dCB3b3JrcyB3aXRoIHBhdGhzIHRoYXQgcmVmZXJlbmNlIG1hcCBrZXlzXCJcbiBbZm9ybSBpbl1cbiAoaWZcbiAgKG5pbD8gaW4pXG4gIGZvcm1cbiAgKGxldFxuICAgW1trICYgcnN0XSBpbl1cbiAgIChjb25kXG4gICAgKGVtcHR5PyBpbilcbiAgICBmb3JtXG4gICAgKGFuZCAobWFwPyBmb3JtKSAoa3BzPyBrKSlcbiAgICAocmVjdXIgKDprZXkgaykgcnN0KVxuICAgIChhbmQgKG1hcD8gZm9ybSkgKGt2cHM/IGspKVxuICAgIChyZWN1ciAobnRoIChzZXEgZm9ybSkgKDppZHggaykpIHJzdClcbiAgICAoYXNzb2NpYXRpdmU/IGZvcm0pXG4gICAgKHJlY3VyIChnZXQgZm9ybSBrKSByc3QpXG4gICAgKGFuZCAoaW50PyBrKSAoc2VxYWJsZT8gZm9ybSkpXG4gICAgKHJlY3VyIChudGggKHNlcSBmb3JtKSBrKSByc3QpXG4gICAgOmVsc2VcbiAgICAodGhyb3cgKGV4LWluZm8gXCJObyB2YWx1ZSBmb3VuZFwiIHs6Zm9ybSBmb3JtLCA6aW4gaW59KSkpKSkpXG4ifSB7OnN5bSBrdnBzPywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt4XSl9LCA6c291cmNlICIoZGVmbiBrdnBzPyBbeF0gKGluc3RhbmNlPyBLZXlWYWx1ZVBhdGhTZWdtZW50IHgpKVxuIn0gezpzeW0gaW4td2l0aC1rcHMtaW50cy1hcmUta2V5cywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtmb3JtIHZhbCBpbiBpbiddKX0sIDpzb3VyY2UgIihkZWZuXG4gaW4td2l0aC1rcHMtaW50cy1hcmUta2V5c1xuIFtmb3JtIHZhbCBpbiBpbiddXG4gKGlmXG4gICg9IGZvcm0gOmV4cG91bmQucGF0aHMvbm90LWZvdW5kKVxuICBmb3JtXG4gIChsZXRcbiAgIFtbayAmIHJzdF0gaW5dXG4gICAoY29uZFxuICAgIChhbmQgKGVtcHR5PyBpbikgKGVxdWFsaXNoPyBmb3JtIHZhbCkpXG4gICAgaW4nXG4gICAgKGFzc29jaWF0aXZlPyBmb3JtKVxuICAgIChpbi13aXRoLWtwcypcbiAgICAgKGdldCBmb3JtIGsgOmV4cG91bmQucGF0aHMvbm90LWZvdW5kKVxuICAgICB2YWxcbiAgICAgcnN0XG4gICAgIChjb25qIGluJyBrKSlcbiAgICAoYW5kIChpbnQ/IGspIChzZXFhYmxlPyBmb3JtKSlcbiAgICAoaW4td2l0aC1rcHMqXG4gICAgIChudGggKHNlcSBmb3JtKSBrIDpleHBvdW5kLnBhdGhzL25vdC1mb3VuZClcbiAgICAgdmFsXG4gICAgIHJzdFxuICAgICAoY29uaiBpbicgaykpXG4gICAgOmVsc2VcbiAgICA6ZXhwb3VuZC5wYXRocy9ub3QtZm91bmQpKSkpXG4ifSB7OnN5bSBjb21wYXJlLXBhdGgtc2VnbWVudCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt4IHldKX0sIDpzb3VyY2UgIihkZWZuXG4gY29tcGFyZS1wYXRoLXNlZ21lbnRcbiBbeCB5XVxuIChjb25kXG4gIChhbmQgKGludD8geCkgKGt2cHM/IHkpKVxuICAoY29tcGFyZSB4ICg6aWR4IHkpKVxuICAoYW5kIChrdnBzPyB4KSAoaW50PyB5KSlcbiAgKGNvbXBhcmUgKDppZHggeCkgeSlcbiAgKGFuZCAoa3BzPyB4KSAobm90IChrcHM/IHkpKSlcbiAgLTFcbiAgKGFuZCAobm90IChrcHM/IHgpKSAoa3BzPyB5KSlcbiAgMVxuICAoYW5kICh2ZWN0b3I/IHgpICh2ZWN0b3I/IHkpKVxuICAoY29tcGFyZS1wYXRocyB4IHkpXG4gIDplbHNlXG4gIChjb21wYXJlIHggeSkpKVxuIn0gezpzeW0gY29tcGFyZS1wYXRocywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtwYXRoMSBwYXRoMl0pfSwgOnNvdXJjZSAiKGRlZm5cbiBjb21wYXJlLXBhdGhzXG4gW3BhdGgxIHBhdGgyXVxuICgtPj4gKG1hcCBjb21wYXJlLXBhdGgtc2VnbWVudCBwYXRoMSBwYXRoMikgKHJlbW92ZSAjezB9KSBmaXJzdCkpXG4ifSB7OnN5bSBpbi13aXRoLWtwcy1mdXp6eS1tYXRjaC1mb3ItcmVnZXgtZmFpbHVyZXMsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZm9ybSB2YWwgaW4gaW4nXSl9LCA6c291cmNlICIoZGVmblxuIGluLXdpdGgta3BzLWZ1enp5LW1hdGNoLWZvci1yZWdleC1mYWlsdXJlc1xuIFtmb3JtIHZhbCBpbiBpbiddXG4gKGlmXG4gICg9IGZvcm0gOmV4cG91bmQucGF0aHMvbm90LWZvdW5kKVxuICBmb3JtXG4gIChsZXRcbiAgIFtbayAmIHJzdF0gaW5dXG4gICAoY29uZFxuICAgIChhbmQgKGVtcHR5PyBpbikgKHNlcWFibGU/IGZvcm0pICg9IHZhbCAnKCkpKVxuICAgIGluJ1xuICAgIChhbmQgKGVtcHR5PyBpbikgKGFuZCAoc2VxPyB2YWwpICg9IGZvcm0gKGZpcnN0IHZhbCkpKSlcbiAgICBpbidcbiAgICAoYW5kIChuYXQtaW50PyBrKSAoc2VxYWJsZT8gZm9ybSkpXG4gICAgKGluLXdpdGgta3BzKlxuICAgICAobnRoIChzZXEgZm9ybSkgayA6ZXhwb3VuZC5wYXRocy9ub3QtZm91bmQpXG4gICAgIHZhbFxuICAgICByc3RcbiAgICAgKGNvbmogaW4nIGspKVxuICAgIDplbHNlXG4gICAgOmV4cG91bmQucGF0aHMvbm90LWZvdW5kKSkpKVxuIn0gezpzeW0gaW4td2l0aC1rcHMqLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2Zvcm0gdmFsIGluIGluJ10pfSwgOnNvdXJjZSAiKGRlZm5cbiBpbi13aXRoLWtwcypcbiBbZm9ybSB2YWwgaW4gaW4nXVxuIChpZlxuICAoZm4/IGZvcm0pXG4gIGluJ1xuICAobGV0XG4gICBbYnIxIChpbi13aXRoLWtwcy1pbnRzLWFyZS1rZXktdmFsdWUtaW5kaWNhdG9ycyBmb3JtIHZhbCBpbiBpbicpXVxuICAgKGlmXG4gICAgKG5vdD0gOmV4cG91bmQucGF0aHMvbm90LWZvdW5kIGJyMSlcbiAgICBicjFcbiAgICAobGV0XG4gICAgIFticjIgKGluLXdpdGgta3BzLW1hcHMtYXMtc2VxcyBmb3JtIHZhbCBpbiBpbicpXVxuICAgICAoaWZcbiAgICAgIChub3Q9IDpleHBvdW5kLnBhdGhzL25vdC1mb3VuZCBicjIpXG4gICAgICBicjJcbiAgICAgIChsZXRcbiAgICAgICBbYnIzIChpbi13aXRoLWtwcy1pbnRzLWFyZS1rZXlzIGZvcm0gdmFsIGluIGluJyldXG4gICAgICAgKGlmXG4gICAgICAgIChub3Q9IDpleHBvdW5kLnBhdGhzL25vdC1mb3VuZCBicjMpXG4gICAgICAgIGJyM1xuICAgICAgICAobGV0XG4gICAgICAgICBbYnI0XG4gICAgICAgICAgKGluLXdpdGgta3BzLWZ1enp5LW1hdGNoLWZvci1yZWdleC1mYWlsdXJlcyBmb3JtIHZhbCBpbiBpbicpXVxuICAgICAgICAgKGlmXG4gICAgICAgICAgKG5vdD0gOmV4cG91bmQucGF0aHMvbm90LWZvdW5kIGJyNClcbiAgICAgICAgICBicjRcbiAgICAgICAgICA6ZXhwb3VuZC5wYXRocy9ub3QtZm91bmQpKSkpKSkpKSkpXG4ifSB7OnN5bSBpbi13aXRoLWtwcy1tYXBzLWFzLXNlcXMsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZm9ybSB2YWwgaW4gaW4nXSl9LCA6c291cmNlICIoZGVmblxuIGluLXdpdGgta3BzLW1hcHMtYXMtc2Vxc1xuIFtmb3JtIHZhbCBpbiBpbiddXG4gKGxldFxuICBbW2sgJiByc3RdIGluIFtpZHggJiByc3QyXSByc3RdXG4gIChjb25kXG4gICAoPSA6ZXhwb3VuZC5wYXRocy9ub3QtZm91bmQgZm9ybSlcbiAgIDpleHBvdW5kLnBhdGhzL25vdC1mb3VuZFxuICAgKGFuZCAoZW1wdHk/IGluKSAoZXF1YWxpc2g/IGZvcm0gdmFsKSlcbiAgIGluJ1xuICAgKGFuZCAobWFwPyBmb3JtKSAobmF0LWludD8gaykgKDwgKGxvbmcgaykgKGNvdW50IChzZXEgZm9ybSkpKSlcbiAgIChpbi13aXRoLWtwcypcbiAgICAobnRoIChzZXEgZm9ybSkgaylcbiAgICB2YWxcbiAgICByc3RcbiAgICAoY29uaiBpbicgKC0+S2V5VmFsdWVQYXRoU2VnbWVudCBrKSkpXG4gICAoYW5kXG4gICAgKG1hcD8gZm9ybSlcbiAgICAobmF0LWludD8gaylcbiAgICAoaW50PyBpZHgpXG4gICAgKDwgKGxvbmcgaykgKGNvdW50IChzZXEgZm9ybSkpKVxuICAgICg8IChsb25nIGlkeCkgKGNvdW50IChudGggKHNlcSBmb3JtKSBrKSkpKVxuICAgKGluLXdpdGgta3BzKlxuICAgIChudGggKG50aCAoc2VxIGZvcm0pIGspIGlkeClcbiAgICB2YWxcbiAgICByc3QyXG4gICAgKGNvbmogaW4nICgtPktleVZhbHVlUGF0aFNlZ21lbnQgaykgaWR4KSlcbiAgIDplbHNlXG4gICA6ZXhwb3VuZC5wYXRocy9ub3QtZm91bmQpKSlcbiJ9IHs6c3ltIGluLXdpdGgta3BzLWludHMtYXJlLWtleS12YWx1ZS1pbmRpY2F0b3JzLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2Zvcm0gdmFsIGluIGluJ10pfSwgOnNvdXJjZSAiKGRlZm5cbiBpbi13aXRoLWtwcy1pbnRzLWFyZS1rZXktdmFsdWUtaW5kaWNhdG9yc1xuIFtmb3JtIHZhbCBpbiBpbiddXG4gKGlmXG4gICg9IGZvcm0gOmV4cG91bmQucGF0aHMvbm90LWZvdW5kKVxuICBmb3JtXG4gIChsZXRcbiAgIFtbayAmIHJzdF0gaW4gW2lkeCAmIHJzdDJdIHJzdF1cbiAgIChjb25kXG4gICAgKGFuZCAoZW1wdHk/IGluKSAoZXF1YWxpc2g/IGZvcm0gdmFsKSlcbiAgICBpbidcbiAgICAoYW5kIChtYXA/IGZvcm0pICg9IDAgaWR4KSlcbiAgICAoaW4td2l0aC1rcHMqIGsgdmFsIHJzdDIgKGNvbmogaW4nICgtPktleVBhdGhTZWdtZW50IGspKSlcbiAgICAoYW5kIChtYXA/IGZvcm0pICg9IDEgaWR4KSlcbiAgICAoaW4td2l0aC1rcHMqXG4gICAgIChnZXQgZm9ybSBrIDpleHBvdW5kLnBhdGhzL25vdC1mb3VuZClcbiAgICAgdmFsXG4gICAgIHJzdDJcbiAgICAgKGNvbmogaW4nIGspKVxuICAgIDplbHNlXG4gICAgOmV4cG91bmQucGF0aHMvbm90LWZvdW5kKSkpKVxuIn0gezpzeW0gZm4tZXF1YWwsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbeCB5XSl9LCA6c291cmNlICIoZGVmbiBmbi1lcXVhbCBbeCB5XSAoYW5kIChmbj8geCkgKGZuPyB5KSAoPSAocHItc3RyIHgpIChwci1zdHIgeSkpKSlcbiJ9IHs6c3ltIGtwcz8sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbeF0pfSwgOnNvdXJjZSAiKGRlZm4ga3BzPyBbeF0gKGluc3RhbmNlPyBLZXlQYXRoU2VnbWVudCB4KSlcbiJ9IHs6c3ltIGJvdGgtbmFuPywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt4IHldKX0sIDpzb3VyY2UgIihkZWZuIGJvdGgtbmFuPyBbeCB5XSAoYW5kICh1dGlsL25hbj8geCkgKHV0aWwvbmFuPyB5KSkpXG4ifSksIGNsanMuY29yZS5hc3luYy5pbXBsLnRpbWVycyAoezpzeW0gdGltZW91dCwgOm1ldGEgezpkb2MgInJldHVybnMgYSBjaGFubmVsIHRoYXQgd2lsbCBjbG9zZSBhZnRlciBtc2VjcyIsIDphcmdsaXN0cyAoW21zZWNzXSl9LCA6c291cmNlICIoZGVmblxuIHRpbWVvdXRcbiBcInJldHVybnMgYSBjaGFubmVsIHRoYXQgd2lsbCBjbG9zZSBhZnRlciBtc2Vjc1wiXG4gW21zZWNzXVxuIChsZXRcbiAgW3RpbWVvdXRcbiAgICgrICgudmFsdWVPZiAoanMvRGF0ZS4pKSBtc2VjcylcbiAgIG1lXG4gICAoLmNlaWxpbmdFbnRyeSB0aW1lb3V0cy1tYXAgdGltZW91dCldXG4gIChvclxuICAgKHdoZW5cbiAgICAoYW5kIG1lICg8ICguLWtleSBtZSkgKCsgdGltZW91dCBUSU1FT1VUX1JFU09MVVRJT05fTVMpKSlcbiAgICAoLi12YWwgbWUpKVxuICAgKGxldFxuICAgIFt0aW1lb3V0LWNoYW5uZWwgKGNoYW5uZWxzL2NoYW4gbmlsKV1cbiAgICAoLnB1dCB0aW1lb3V0cy1tYXAgdGltZW91dCB0aW1lb3V0LWNoYW5uZWwpXG4gICAgKGRpc3BhdGNoL3F1ZXVlLWRlbGF5XG4gICAgIChmblxuICAgICAgW11cbiAgICAgICgucmVtb3ZlIHRpbWVvdXRzLW1hcCB0aW1lb3V0KVxuICAgICAgKGltcGwvY2xvc2UhIHRpbWVvdXQtY2hhbm5lbCkpXG4gICAgIG1zZWNzKVxuICAgIHRpbWVvdXQtY2hhbm5lbCkpKSlcbiJ9IHs6c3ltIHJhbmRvbS1sZXZlbCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgW1tdIFtsZXZlbF1dfSwgOnNvdXJjZSAiKGRlZm5cbiByYW5kb20tbGV2ZWxcbiAoW10gKHJhbmRvbS1sZXZlbCAwKSlcbiAoW2xldmVsXVxuICAoaWZcbiAgIChhbmQgKDwgKC5yYW5kb20ganMvTWF0aCkgUCkgKDwgbGV2ZWwgTUFYX0xFVkVMKSlcbiAgIChyZWN1ciAoaW5jIGxldmVsKSlcbiAgIGxldmVsKSkpXG4ifSB7OnN5bSBza2lwLWxpc3QsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbXSl9LCA6c291cmNlICIoZGVmbiBza2lwLWxpc3QgW10gKFNraXBMaXN0LiAoc2tpcC1saXN0LW5vZGUgMCkgMCkpXG4ifSB7OnN5bSBNQVhfTEVWRUwsIDptZXRhIHt9LCA6c291cmNlICIoZGVmIE1BWF9MRVZFTCAxNSlcbiJ9IHs6c3ltIFAsIDptZXRhIHt9LCA6c291cmNlICIoZGVmIFAgKC8gMSAyKSlcbiJ9IHs6c3ltIHRpbWVvdXRzLW1hcCwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgdGltZW91dHMtbWFwIChza2lwLWxpc3QpKVxuIn0gezpzeW0gc2tpcC1saXN0LW5vZGUsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIFtbbGV2ZWxdIFtrIHYgbGV2ZWxdXX0sIDpzb3VyY2UgIihkZWZuXG4gc2tpcC1saXN0LW5vZGVcbiAoW2xldmVsXSAoc2tpcC1saXN0LW5vZGUgbmlsIG5pbCBsZXZlbCkpXG4gKFtrIHYgbGV2ZWxdXG4gIChsZXRcbiAgIFthcnIgKG1ha2UtYXJyYXkgKGluYyBsZXZlbCkpXVxuICAgKGxvb3BcbiAgICBbaSAwXVxuICAgICh3aGVuICg8IGkgKGFsZW5ndGggYXJyKSkgKGFzZXQgYXJyIGkgbmlsKSAocmVjdXIgKGluYyBpKSkpKVxuICAgKFNraXBMaXN0Tm9kZS4gayB2IGFycikpKSlcbiJ9IHs6c3ltIGxlYXN0LWdyZWF0ZXItbm9kZSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgW1t4IGsgbGV2ZWxdIFt4IGsgbGV2ZWwgdXBkYXRlXV19LCA6c291cmNlICIoZGVmblxuIGxlYXN0LWdyZWF0ZXItbm9kZVxuIChbeCBrIGxldmVsXSAobGVhc3QtZ3JlYXRlci1ub2RlIHggayBsZXZlbCBuaWwpKVxuIChbeCBrIGxldmVsIHVwZGF0ZV1cbiAgKGlmLW5vdFxuICAgKG5lZz8gbGV2ZWwpXG4gICAobGV0XG4gICAgW3hcbiAgICAgKGxvb3BcbiAgICAgIFt4IHhdXG4gICAgICAoaWYtbGV0XG4gICAgICAgW3gnXG4gICAgICAgICh3aGVuXG4gICAgICAgICAoPCBsZXZlbCAoYWxlbmd0aCAoLi1mb3J3YXJkIHgpKSlcbiAgICAgICAgIChhZ2V0ICguLWZvcndhcmQgeCkgbGV2ZWwpKV1cbiAgICAgICAoaWYgKDwgKC4ta2V5IHgnKSBrKSAocmVjdXIgeCcpIHgpXG4gICAgICAgeCkpXVxuICAgICh3aGVuLW5vdCAobmlsPyB1cGRhdGUpIChhc2V0IHVwZGF0ZSBsZXZlbCB4KSlcbiAgICAocmVjdXIgeCBrIChkZWMgbGV2ZWwpIHVwZGF0ZSkpXG4gICB4KSkpXG4ifSB7OnN5bSBUSU1FT1VUX1JFU09MVVRJT05fTVMsIDptZXRhIHt9LCA6c291cmNlICIoZGVmIFRJTUVPVVRfUkVTT0xVVElPTl9NUyAxMClcbiJ9KSwgZGV2dG9vbHMucHJlZnMgKHs6c3ltIG1lcmdlLXByZWZzISwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFttXSl9LCA6c291cmNlICIoZGVmbiBtZXJnZS1wcmVmcyEgW21dIChzZXQtcHJlZnMhIChtZXJnZSAoZ2V0LXByZWZzKSBtKSkpXG4ifSB7OnN5bSBleHRlcm5hbC1jb25maWcsIDptZXRhIHt9LCA6c291cmNlICIoZGVmIGV4dGVybmFsLWNvbmZpZyAoZGVsYXkgKGVtaXQtZXh0ZXJuYWwtY29uZmlnKSkpXG4ifSB7OnN5bSBnZXQtcHJlZnMsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbXSl9LCA6c291cmNlICIoZGVmblxuIGdldC1wcmVmc1xuIFtdXG4gKHdoZW4gKGRlbGF5PyAqY3VycmVudC1jb25maWcqKSAoc2V0LXByZWZzISBAKmN1cnJlbnQtY29uZmlnKikpXG4gKmN1cnJlbnQtY29uZmlnKilcbiJ9IHs6c3ltIGluaXRpYWwtY29uZmlnLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiBpbml0aWFsLWNvbmZpZyAoZGVsYXkgKG1lcmdlIEBkZWZhdWx0LWNvbmZpZyBAZXh0ZXJuYWwtY29uZmlnKSkpXG4ifSB7OnN5bSBzZXQtcHJlZiEsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChba2V5IHZhbF0pfSwgOnNvdXJjZSAiKGRlZm4gc2V0LXByZWYhIFtrZXkgdmFsXSAoc2V0LXByZWZzISAoYXNzb2MgKGdldC1wcmVmcykga2V5IHZhbCkpKVxuIn0gezpzeW0gZGVmYXVsdC1jb25maWcsIDptZXRhIHt9LCA6c291cmNlICIoZGVmIGRlZmF1bHQtY29uZmlnIChkZWxheSBAZGVmYXVsdHMvY29uZmlnKSlcbiJ9IHs6c3ltIHByZWYsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChba2V5XSl9LCA6c291cmNlICIoZGVmbiBwcmVmIFtrZXldIChrZXkgKGdldC1wcmVmcykpKVxuIn0gezpzeW0gKmN1cnJlbnQtY29uZmlnKiwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgKmN1cnJlbnQtY29uZmlnKiAoZGVsYXkgQGluaXRpYWwtY29uZmlnKSlcbiJ9IHs6c3ltIHNldC1wcmVmcyEsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbbmV3LXByZWZzXSl9LCA6c291cmNlICIoZGVmbiBzZXQtcHJlZnMhIFtuZXctcHJlZnNdIChzZXQhICpjdXJyZW50LWNvbmZpZyogbmV3LXByZWZzKSlcbiJ9IHs6c3ltIHVwZGF0ZS1wcmVmISwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtrZXkgZiAmIGFyZ3NdKX0sIDpzb3VyY2UgIihkZWZuXG4gdXBkYXRlLXByZWYhXG4gW2tleSBmICYgYXJnc11cbiAobGV0IFtuZXctdmFsIChhcHBseSBmIChwcmVmIGtleSkgYXJncyldIChzZXQtcHJlZiEga2V5IG5ldy12YWwpKSlcbiJ9KSwgZHVuZ2Vvbi1jcmF3bGVyLmVudGl0aWVzICh7OnN5bSAtPmVudGl0eSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt7OmtleXMgW2F0dHJzIG1hc2stc2l6ZV19IHs6a2V5cyBbeCB5XX1dKX0sIDpzb3VyY2UgIihkZWZuXG4gLT5lbnRpdHlcbiBbezprZXlzIFthdHRycyBtYXNrLXNpemVdfSB7OmtleXMgW3ggeV19XVxuIChtZXJnZVxuICBhdHRyc1xuICB7OmR1bmdlb24tY3Jhd2xlci5lbnRpdGllcy95LWNoYW5nZSAwLFxuICAgOmR1bmdlb24tY3Jhd2xlci5lbnRpdGllcy94LXZlbG9jaXR5IDAsXG4gICA6ZHVuZ2Vvbi1jcmF3bGVyLmVudGl0aWVzL3kgeSxcbiAgIDpkdW5nZW9uLWNyYXdsZXIuZW50aXRpZXMveCB4LFxuICAgOmR1bmdlb24tY3Jhd2xlci5lbnRpdGllcy9kaXJlY3Rpb24gOnMsXG4gICA6ZHVuZ2Vvbi1jcmF3bGVyLmVudGl0aWVzL2hlaWdodCAoLyBtYXNrLXNpemUgdGlsZS1zaXplKSxcbiAgIDpkdW5nZW9uLWNyYXdsZXIuZW50aXRpZXMvd2lkdGggKC8gbWFzay1zaXplIHRpbGUtc2l6ZSksXG4gICA6ZHVuZ2Vvbi1jcmF3bGVyLmVudGl0aWVzL3ktdmVsb2NpdHkgMCxcbiAgIDpkdW5nZW9uLWNyYXdsZXIuZW50aXRpZXMveC1jaGFuZ2UgMH0pKVxuIn0gezpzeW0gZGlyZWN0aW9ucywgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgZGlyZWN0aW9ucyBbOncgOm53IDpuIDpuZSA6ZSA6c2UgOnMgOnN3XSlcbiJ9IHs6c3ltIHZlbG9jaXRpZXMsIDptZXRhIHt9LCA6c291cmNlICIoZGVmIHZlbG9jaXRpZXMgW1stMSAwXSBbLTEgLTFdIFswIC0xXSBbMSAtMV0gWzEgMF0gWzEgMV0gWzAgMV0gWy0xIDFdXSlcbiJ9IHs6c3ltIHBsYXllci1zcGF3bi1wb2ludCwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgcGxheWVyLXNwYXduLXBvaW50IHs6eCAyLjUsIDp5IDIuNX0pXG4ifSB7OnN5bSByb3dzLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiByb3dzIDQpXG4ifSB7OnN5bSBjb2xzLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiBjb2xzIDQpXG4ifSB7OnN5bSBzcGF3bi1kYXRhLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZlxuIHNwYXduLWRhdGFcbiBbezphdHRyc1xuICAgezpkdW5nZW9uLWNyYXdsZXIuZW50aXRpZXMva2luZCA6cGxheWVyLFxuICAgIDpkdW5nZW9uLWNyYXdsZXIuZW50aXRpZXMvaGVhbHRoIDIwLFxuICAgIDpkdW5nZW9uLWNyYXdsZXIuZW50aXRpZXMvZGFtYWdlIDR9LFxuICAgOnBhdGggXCJjaGFyYWN0ZXJzL21hbGVfbGlnaHQucG5nXCIsXG4gICA6bWFzay1zaXplIDEyOCxcbiAgIDppbnN0YW5jZXMgW3BsYXllci1zcGF3bi1wb2ludF19XG4gIHs6YXR0cnNcbiAgIHs6ZHVuZ2Vvbi1jcmF3bGVyLmVudGl0aWVzL2tpbmQgOm9ncmUsXG4gICAgOmR1bmdlb24tY3Jhd2xlci5lbnRpdGllcy9oZWFsdGggOCxcbiAgICA6ZHVuZ2Vvbi1jcmF3bGVyLmVudGl0aWVzL2RhbWFnZSAyfSxcbiAgIDpwYXRoIFwiY2hhcmFjdGVycy9vZ3JlLnBuZ1wiLFxuICAgOm1hc2stc2l6ZSAyNTYsXG4gICA6aW5zdGFuY2VzICgtPj4gc3Bhd24tcG9pbnRzIHNodWZmbGUgKHRha2UgMzApKX1cbiAgezphdHRyc1xuICAgezpkdW5nZW9uLWNyYXdsZXIuZW50aXRpZXMva2luZCA6ZWxlbWVudGFsLFxuICAgIDpkdW5nZW9uLWNyYXdsZXIuZW50aXRpZXMvaGVhbHRoIDYsXG4gICAgOmR1bmdlb24tY3Jhd2xlci5lbnRpdGllcy9kYW1hZ2UgMX0sXG4gICA6cGF0aCBcImNoYXJhY3RlcnMvZWxlbWVudGFsLnBuZ1wiLFxuICAgOm1hc2stc2l6ZSAyNTYsXG4gICA6aW5zdGFuY2VzICgtPj4gc3Bhd24tcG9pbnRzIHNodWZmbGUgKHRha2UgMzApKX1dKVxuIn0gezpzeW0gc3Bhd24tcG9pbnRzLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZlxuIHNwYXduLXBvaW50c1xuIChmb3JcbiAgW3Jvd1xuICAgKHJhbmdlIHJvd3MpXG4gICBjb2xcbiAgIChyYW5nZSBjb2xzKVxuICAgOmxldFxuICAgW3BvaW50IHs6eCAoLT4gcm93ICgqIDEwKSAoKyAyLjUpKSwgOnkgKC0+IGNvbCAoKiAxMCkgKCsgMi41KSl9XVxuICAgOndoZW5cbiAgIChub3Q9IHBvaW50IHBsYXllci1zcGF3bi1wb2ludCldXG4gIHBvaW50KSlcbiJ9IHs6c3ltIHRpbGUtc2l6ZSwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgdGlsZS1zaXplIDI1NilcbiJ9KSwgZGV2dG9vbHMubXVuZ2luZyAoezpzeW0gYXJncy1saXN0cy10by1zdHJpbmdzLCA6bWV0YSB7OmRvYyAiQ29udmVydHMgYSBsaXN0IG9mIGFyZ3VtZW50cyBsaXN0cyBpbnRvIGEgbGlzdCBvZiBzdHJpbmdzIHN1aXRhYmxlIGZvciBVSSBwcmVzZW50YXRpb24uIiwgOmFyZ2xpc3RzIChbYXJncy1saXN0cyBzcGFjZXItc3ltYm9sIG11bHRpLWFyaXR5LXN5bWJvbCByZXN0LXN5bWJvbF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBhcmdzLWxpc3RzLXRvLXN0cmluZ3NcbiBcIkNvbnZlcnRzIGEgbGlzdCBvZiBhcmd1bWVudHMgbGlzdHMgaW50byBhIGxpc3Qgb2Ygc3RyaW5ncyBzdWl0YWJsZSBmb3IgVUkgcHJlc2VudGF0aW9uLlwiXG4gW2FyZ3MtbGlzdHMgc3BhY2VyLXN5bWJvbCBtdWx0aS1hcml0eS1zeW1ib2wgcmVzdC1zeW1ib2xdXG4gKGxldFxuICBbc3RyaW5nLW1hcHBlclxuICAgKGZuXG4gICAgW2FyZ11cbiAgICAoY2FzZSBhcmcgOmRldnRvb2xzLm11bmdpbmcvbXVsdGktYXJpdHkgbXVsdGktYXJpdHktc3ltYm9sIGFyZykpXG4gICBwcmludGVyXG4gICAoZm5cbiAgICBbYXJncy1saXN0XVxuICAgIChsZXRcbiAgICAgW3ZhcmlhZGljP1xuICAgICAgKDpkZXZ0b29scy5tdW5naW5nL3ZhcmlhZGljIChtZXRhIGFyZ3MtbGlzdCkpXG4gICAgICBhcmdzLXN0cmluZ3NcbiAgICAgIChtYXAgc3RyaW5nLW1hcHBlciBhcmdzLWxpc3QpXVxuICAgICAoc3RyXG4gICAgICAoc3RyaW5nL2pvaW4gc3BhY2VyLXN5bWJvbCAoYnV0bGFzdCBhcmdzLXN0cmluZ3MpKVxuICAgICAgKGlmIHZhcmlhZGljPyByZXN0LXN5bWJvbCBzcGFjZXItc3ltYm9sKVxuICAgICAgKGxhc3QgYXJncy1zdHJpbmdzKSkpKV1cbiAgKC0+PiBhcmdzLWxpc3RzIChtYXAgcHJpbnRlcikgKG1hcCBzdHJpbmcvdHJpbSkpKSlcbiJ9IHs6c3ltIGdldC1iYXNpcywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtmXSl9LCA6c291cmNlICIoZGVmbiBnZXQtYmFzaXMgW2ZdIChvY2FsbCBmIFwiZ2V0QmFzaXNcIikpXG4ifSB7OnN5bSBodW1hbml6ZS1uYW1lLCA6bWV0YSB7OmRvYyAiR2l2ZW4gYSBuYW1lIGFuZCBpbnRlcm1lZGlhdGUgc3RhdGUuIENvbnZlcnQgbmFtZSB0byBhIGh1bWFuIHJlYWRhYmxlIHZlcnNpb24gYnkga2VlcGluZyBodW1hbiByZWFkYWJsZSBwcmVmaXggd2l0aFxuICBvcHRpb25hbCBzdWJzY3JpcHQgcG9zdGZpeCBhbmQgc3RvcmUgaXQgaW4gOjpyZXN1bHQuIFN1YnNjcmlwdCBudW1iZXIgaXMgcGlja2VkIGJhc2VkIG9uIHN0YXRlLiBTdGF0ZSBrZWVwcyB0cmFjayBvZlxuICBwcmV2aW91c2x5IGFzc2lnbmVkIHN1YnNjcmlwdHMuIFJldHVybnMgYSBuZXcgc3RhdGUuIiwgOmFyZ2xpc3RzIChbc3RhdGUgbmFtZV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBodW1hbml6ZS1uYW1lXG4gXCJHaXZlbiBhIG5hbWUgYW5kIGludGVybWVkaWF0ZSBzdGF0ZS4gQ29udmVydCBuYW1lIHRvIGEgaHVtYW4gcmVhZGFibGUgdmVyc2lvbiBieSBrZWVwaW5nIGh1bWFuIHJlYWRhYmxlIHByZWZpeCB3aXRoXFxuICBvcHRpb25hbCBzdWJzY3JpcHQgcG9zdGZpeCBhbmQgc3RvcmUgaXQgaW4gOjpyZXN1bHQuIFN1YnNjcmlwdCBudW1iZXIgaXMgcGlja2VkIGJhc2VkIG9uIHN0YXRlLiBTdGF0ZSBrZWVwcyB0cmFjayBvZlxcbiAgcHJldmlvdXNseSBhc3NpZ25lZCBzdWJzY3JpcHRzLiBSZXR1cm5zIGEgbmV3IHN0YXRlLlwiXG4gW3N0YXRlIG5hbWVdXG4gKGxldFxuICBbaW5kZXhcbiAgIChmaW5kLWluZGV4LW9mLWh1bWFuLXByZWZpeCBuYW1lKVxuICAgcHJlZml4XG4gICAoaWYgKD4gaW5kZXggMCkgKC5zdWJzdHJpbmcgbmFtZSAwIGluZGV4KSBuYW1lKV1cbiAgKGlmLWxldFxuICAgW3N1YnNjcmlwdCAoZ2V0IHN0YXRlIHByZWZpeCldXG4gICAoLT5cbiAgICBzdGF0ZVxuICAgICh1cGRhdGVcbiAgICAgOmRldnRvb2xzLm11bmdpbmcvcmVzdWx0XG4gICAgIGNvbmpcbiAgICAgKHN0ciBwcmVmaXggKG1ha2Utc3Vic2NyaXB0IHN1YnNjcmlwdCkpKVxuICAgICh1cGRhdGUgcHJlZml4IGluYykpXG4gICAoLT5cbiAgICBzdGF0ZVxuICAgICh1cGRhdGUgOmRldnRvb2xzLm11bmdpbmcvcmVzdWx0IGNvbmogcHJlZml4KVxuICAgIChhc3NvYyBwcmVmaXggMikpKSkpXG4ifSB7OnN5bSBmaW5kLWluZGV4LW9mLWh1bWFuLXByZWZpeCwgOm1ldGEgezpkb2MgIkdpdmVuIGEgZGVtdW5nZWQgQ2xvanVyZVNjcmlwdCBwYXJhbWV0ZXIgbmFtZS4gVHJpZXMgdG8gZGV0ZWN0IGh1bWFuIHJlYWRhYmxlIHBhcnQgYW5kIHJldHVybnMgdGhlIGluZGV4IHdoZXJlIGl0IGVuZHMuXG4gIFJldHVybnMgbmlsIGlmIG5vIHByZWZpeCBjYW4gYmUgZGV0ZWN0ZWQuXG5cbiAgVGhlIGlkZWEgaXMgdG8gY29udmVydCBtYWNyby1nZW5lcmF0ZWQgcGFyYW1ldGVycyBhbmQgb3RoZXIgZ2VuZXJhdGVkIG5hbWVzIHRvIG1vcmUgZnJpZW5kbHkgbmFtZXMuXG4gIFdlIG9ic2VydmVkIHRoYXQgcGFyYW0gbmFtZXMgZ2VuZXJhdGVkIGJ5IGdlbnN5bSBoYXZlIHByZWZpeCBmb2xsb3dlZCBieSBiaWcgbnVtYmVycy5cbiAgT3RoZXIgZ2VuZXJhdGVkIG5hbWVzIGNvbnRhaW4gdHdvIGRhc2hlcyBhZnRlciBwcmVmaXggKG9yaWdpbmFsbHkgcHJvYmFibHkgdXNpbmcgdW5kZXJzY29yZXMpLiIsIDphcmdsaXN0cyAoW25hbWVdKX0sIDpzb3VyY2UgIihkZWZuXG4gZmluZC1pbmRleC1vZi1odW1hbi1wcmVmaXhcbiBcIkdpdmVuIGEgZGVtdW5nZWQgQ2xvanVyZVNjcmlwdCBwYXJhbWV0ZXIgbmFtZS4gVHJpZXMgdG8gZGV0ZWN0IGh1bWFuIHJlYWRhYmxlIHBhcnQgYW5kIHJldHVybnMgdGhlIGluZGV4IHdoZXJlIGl0IGVuZHMuXFxuICBSZXR1cm5zIG5pbCBpZiBubyBwcmVmaXggY2FuIGJlIGRldGVjdGVkLlxcblxcbiAgVGhlIGlkZWEgaXMgdG8gY29udmVydCBtYWNyby1nZW5lcmF0ZWQgcGFyYW1ldGVycyBhbmQgb3RoZXIgZ2VuZXJhdGVkIG5hbWVzIHRvIG1vcmUgZnJpZW5kbHkgbmFtZXMuXFxuICBXZSBvYnNlcnZlZCB0aGF0IHBhcmFtIG5hbWVzIGdlbmVyYXRlZCBieSBnZW5zeW0gaGF2ZSBwcmVmaXggZm9sbG93ZWQgYnkgYmlnIG51bWJlcnMuXFxuICBPdGhlciBnZW5lcmF0ZWQgbmFtZXMgY29udGFpbiB0d28gZGFzaGVzIGFmdGVyIHByZWZpeCAob3JpZ2luYWxseSBwcm9iYWJseSB1c2luZyB1bmRlcnNjb3JlcykuXCJcbiBbbmFtZV1cbiAobGV0XG4gIFtzZXAtc3RhcnRcbiAgICguaW5kZXhPZiBuYW1lIFwiLS1cIilcbiAgIG51bS1wcmVmaXhcbiAgIChjb3VudCAoc2Vjb25kIChyZS1maW5kICNcIiguKj8pXFxkezIsfVwiIG5hbWUpKSlcbiAgIGZpbmRzXG4gICAoZmlsdGVyIHBvcz8gW3NlcC1zdGFydCBudW0tcHJlZml4XSldXG4gIChpZi1ub3QgKGVtcHR5PyBmaW5kcykgKGFwcGx5IG1pbiBmaW5kcykpKSlcbiJ9IHs6c3ltIHByb3RvY29sLWRlc2NyaXB0b3JzLWNvbXBhcmF0b3IsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbYSBiXSl9LCA6c291cmNlICIoZGVmblxuIHByb3RvY29sLWRlc2NyaXB0b3JzLWNvbXBhcmF0b3JcbiBbYSBiXVxuIChjb21wYXJlICg6bmFtZSBhKSAoOm5hbWUgYikpKVxuIn0gezpzeW0gbWFrZS1zdWJzY3JpcHQsIDptZXRhIHs6ZG9jICJHaXZlbiBhIHN1YnNjcmlwdCBudW1iZXIgY29udmVydHMgaXQgaW50byBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBjb25zaXN0aW5nIG9mIHVuaWNvZGUgc3Vic2NyaXB0IGNoYXJhY3RlcnMgKGRpZ2l0cykuIiwgOmFyZ2xpc3RzIChbc3Vic2NyaXB0XSl9LCA6c291cmNlICIoZGVmblxuIG1ha2Utc3Vic2NyaXB0XG4gXCJHaXZlbiBhIHN1YnNjcmlwdCBudW1iZXIgY29udmVydHMgaXQgaW50byBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBjb25zaXN0aW5nIG9mIHVuaWNvZGUgc3Vic2NyaXB0IGNoYXJhY3RlcnMgKGRpZ2l0cykuXCJcbiBbc3Vic2NyaXB0XVxuIHs6cHJlIFsobnVtYmVyPyBzdWJzY3JpcHQpXX1cbiAoc3RyaW5nL2pvaW4gKG1hcCBjaGFyLXRvLXN1YnNjcmlwdCAoc3RyIHN1YnNjcmlwdCkpKSlcbiJ9IHs6c3ltIHRyaXZpYWwtZm4tc291cmNlPywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtmbi1zb3VyY2VdKX0sIDpzb3VyY2UgIihkZWZuXG4gdHJpdmlhbC1mbi1zb3VyY2U/XG4gW2ZuLXNvdXJjZV1cbiB7OnByZSBbKHN0cmluZz8gZm4tc291cmNlKV19XG4gKG9yXG4gIChzb21lPyAocmUtbWF0Y2hlcyAjXCJmdW5jdGlvblxccypcXChcXHMqXFwpXFxzKlxce1xccypcXH1cXHMqXCIgZm4tc291cmNlKSlcbiAgKHNvbWU/XG4gICAocmUtbWF0Y2hlc1xuICAgICNcImZ1bmN0aW9uLipcXChcXClcXHMqXFx7XFxzKlxcW25hdGl2ZSBjb2RlXFxdXFxzKlxcfVxccypcIlxuICAgIGZuLXNvdXJjZSkpXG4gIChzb21lP1xuICAgKHJlLW1hdGNoZXMgI1wiZnVuY3Rpb24gYW5vbnltb3VzXFwoXFxzKlxcKVxccypcXHtcXHMqXFx9XCIgZm4tc291cmNlKSkpKVxuIn0gezpzeW0gY2hhci10by1zdWJzY3JpcHQsIDptZXRhIHs6ZG9jICJHaXZlbiBhIGNoYXJhY3RlciB3aXRoIGEgc2luZ2xlIGRpZ2l0IGNvbnZlcnRzIGl0IGludG8gYSBzdWJzY3JpcHQgY2hhcmFjdGVyLlxuICBaZXJvIGNoYXJhY3RlciBtYXBzIHRvIHVuaWNvZGUgJ1NVQlNDUklQVCBaRVJPJyAoVSsyMDgwKS4iLCA6YXJnbGlzdHMgKFtjaGFyXSl9LCA6c291cmNlICIoZGVmblxuIGNoYXItdG8tc3Vic2NyaXB0XG4gXCJHaXZlbiBhIGNoYXJhY3RlciB3aXRoIGEgc2luZ2xlIGRpZ2l0IGNvbnZlcnRzIGl0IGludG8gYSBzdWJzY3JpcHQgY2hhcmFjdGVyLlxcbiAgWmVybyBjaGFyYWN0ZXIgbWFwcyB0byB1bmljb2RlICdTVUJTQ1JJUFQgWkVSTycgKFUrMjA4MCkuXCJcbiBbY2hhcl1cbiB7OnByZSBbKHN0cmluZz8gY2hhcikgKD0gKGNvdW50IGNoYXIpIDEpXX1cbiAobGV0XG4gIFtjaGFyLWNvZGVcbiAgIChvY2FsbCAoanMvU3RyaW5nLiBjaGFyKSBcImNoYXJDb2RlQXRcIiAwKVxuICAgbnVtLWNvZGVcbiAgICgtIGNoYXItY29kZSA0OClcbiAgIHN1YnNjcmlwdC1jb2RlXG4gICAoKyA4MzIwIG51bS1jb2RlKV1cbiAgKG9jYWxsIGpzL1N0cmluZyBcImZyb21DaGFyQ29kZVwiIHN1YnNjcmlwdC1jb2RlKSkpXG4ifSB7OnN5bSBwcm9wZXItYXJnLWRlbXVuZ2UsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbbXVuZ2VkLWFyZy1uYW1lXSl9LCA6c291cmNlICIoZGVmblxuIHByb3Blci1hcmctZGVtdW5nZVxuIFttdW5nZWQtYXJnLW5hbWVdXG4gKC0+XG4gIG11bmdlZC1hcmctbmFtZVxuICAocHJvcGVyLWRlbXVuZ2UpXG4gIChzdHJpbmcvcmVwbGFjZSAjXCJeLSguKikkXCIgXCJfJDFcIikpKVxuIn0gezpzeW0ganMtcmVzZXJ2ZWQ/LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3hdKX0sIDpzb3VyY2UgIihkZWZuXG4ganMtcmVzZXJ2ZWQ/XG4gW3hdXG4gKGlmLWxldFxuICBbanMtcmVzZXJ2ZWQtZm5cbiAgIChvZ2V0IChnZXQtZ2xvYmFsLXNjb3BlKSBcImNsanNcIiBcImNvcmVcIiBcImpzX3Jlc2VydmVkX1FNQVJLX1wiKV1cbiAgKGpzLXJlc2VydmVkLWZuIHgpKSlcbiJ9IHs6c3ltIGZhc3QtcGF0aC1wcm90b2NvbHMtbG9va3VwLXRhYmxlLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZlxuIGZhc3QtcGF0aC1wcm90b2NvbHMtbG9va3VwLXRhYmxlXG4gKGRlbGF5IChnZXQtZmFzdC1wYXRoLXByb3RvY29scy1sb29rdXAtdGFibGUpKSlcbiJ9IHs6c3ltIHByZXNlbnQtZm4tcGFydCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtmbi1ucyBmbi1uYW1lIGluY2x1ZGUtbnM/XSl9LCA6c291cmNlICIoZGVmblxuIHByZXNlbnQtZm4tcGFydFxuIFtmbi1ucyBmbi1uYW1lIGluY2x1ZGUtbnM/XVxuIChzdHJcbiAgKGlmIChhbmQgaW5jbHVkZS1ucz8gKG5vdCAoZW1wdHk/IGZuLW5zKSkpIChzdHIgZm4tbnMgXCIvXCIpKVxuICBmbi1uYW1lKSlcbiJ9IHs6c3ltIGNvbGxlY3QtZm4tYXJpdGllcywgOm1ldGEgezpkb2MgIkdpdmVuIGEgSmF2YXNjcmlwdCBmdW5jdGlvbiBvYmplY3QsIHRyaWVzIHRvIGluc3BlY3Qga25vd24gYXJpdHkgcHJvcGVydGllcyBnZW5lcmF0ZWQgYnkgQ2xvanVyZVNjcmlwdCBjb21waWxlciBhbmRcbiAgY29sbGVjdHMgYWxsIGF2YWlsYWJsZSBhcml0eSBmdW5jdGlvbnMgaW50byBhIG1hcC4gQXJpdGllcyBhcmUga2V5ZWQgYnkgYXJpdHkgY291bnQgYW5kIHZhcmlhZGljIGFyaXR5IGdldHMgOjp2YXJpYWRpYyBrZXkuIiwgOmFyZ2xpc3RzIChbZl0pfSwgOnNvdXJjZSAiKGRlZm5cbiBjb2xsZWN0LWZuLWFyaXRpZXNcbiBcIkdpdmVuIGEgSmF2YXNjcmlwdCBmdW5jdGlvbiBvYmplY3QsIHRyaWVzIHRvIGluc3BlY3Qga25vd24gYXJpdHkgcHJvcGVydGllcyBnZW5lcmF0ZWQgYnkgQ2xvanVyZVNjcmlwdCBjb21waWxlciBhbmRcXG4gIGNvbGxlY3RzIGFsbCBhdmFpbGFibGUgYXJpdHkgZnVuY3Rpb25zIGludG8gYSBtYXAuIEFyaXRpZXMgYXJlIGtleWVkIGJ5IGFyaXR5IGNvdW50IGFuZCB2YXJpYWRpYyBhcml0eSBnZXRzIDo6dmFyaWFkaWMga2V5LlwiXG4gW2ZdXG4gKGxldFxuICBbbWF4LWZpeGVkLWFyaXR5XG4gICAoZ2V0LWZuLW1heC1maXhlZC1hcml0eSBmKVxuICAgZml4ZWQtYXJpdGllc1xuICAgKGNvbGxlY3QtZm4tZml4ZWQtYXJpdGllc1xuICAgIGZcbiAgICAob3IgbWF4LWZpeGVkLWFyaXR5IG1heC1maXhlZC1hcml0eS10by1zY2FuKSlcbiAgIHZhcmlhZGljLWFyaXRpZXNcbiAgIChjb2xsZWN0LWZuLXZhcmlhZGljLWFyaXRpZXMgZilcbiAgIGFyaXRpZXNcbiAgIChyZXZpZXctYXJpdGllcyAobWVyZ2UgZml4ZWQtYXJpdGllcyB2YXJpYWRpYy1hcml0aWVzKSldXG4gIChpZi1ub3QgKGVtcHR5PyBhcml0aWVzKSBhcml0aWVzKSkpXG4ifSB7OnN5bSBwcm90b2NvbC1wYXRoLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3Byb3RvY29sLXNlbGVjdG9yXSl9LCA6c291cmNlICIoZGVmblxuIHByb3RvY29sLXBhdGhcbiBbcHJvdG9jb2wtc2VsZWN0b3JdXG4gKHN0cmluZy9zcGxpdCBwcm90b2NvbC1zZWxlY3RvciAjXCJcXC5cIikpXG4ifSB7OnN5bSBrZXktZm9yLXByb3RvY29sLXBhcnRpdGlvbiwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtwYXJ0aXRpb25dKX0sIDpzb3VyY2UgIihkZWZuXG4ga2V5LWZvci1wcm90b2NvbC1wYXJ0aXRpb25cbiBbcGFydGl0aW9uXVxuIChzdHIgXCJjbGpzJGxhbmckcHJvdG9jb2xfbWFzayRwYXJ0aXRpb25cIiBwYXJ0aXRpb24gXCIkXCIpKVxuIn0gezpzeW0gY29sbGVjdC1wcm90b2NvbC1tZXRob2RzLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW29iaiBwcm90b2NvbC1zZWxlY3Rvcl0pfSwgOnNvdXJjZSAiKGRlZm5cbiBjb2xsZWN0LXByb3RvY29sLW1ldGhvZHNcbiBbb2JqIHByb3RvY29sLXNlbGVjdG9yXVxuIChsZXRcbiAgW2tleS1wcmVmaXhcbiAgIChzdHJpbmcvcmVwbGFjZSBwcm90b2NvbC1zZWxlY3RvciAjXCJcXC5cIiBcIlxcXFwkXCIpXG4gICBwYXR0ZXJuXG4gICAocmUtcGF0dGVybiAoc3RyIFwiXlwiIGtleS1wcmVmaXggXCJcXFxcJCguKilcXFxcJGFyaXR5XFxcXCQoXFxcXGQrKSRcIikpXG4gICBhbGwta2V5c1xuICAgKGdvYmovZ2V0S2V5cyBvYmopXG4gICBtYXRjaGVzXG4gICAoa2VlcCAocGFydGlhbCByZS1tYXRjaGVzIHBhdHRlcm4pIGFsbC1rZXlzKVxuICAgbWV0aG9kc1xuICAgKGdyb3VwLWJ5IHNlY29uZCBtYXRjaGVzKVxuICAgbWF0Y2gtdG8tYXJpdHlcbiAgIChmbiBbbWF0Y2hdIChsZXQgW2FyaXR5IChudGggbWF0Y2ggMildIChqcy9wYXJzZUludCBhcml0eSAxMCkpKVxuICAgbWF0Y2gtYXJpdHktY29tcGFyYXRvclxuICAgKGZuIFthIGJdIChjb21wYXJlIChtYXRjaC10by1hcml0eSBhKSAobWF0Y2gtdG8tYXJpdHkgYikpKVxuICAgcG9zdC1wcm9jZXNzXG4gICAoZm5cbiAgICBbW211bmdlZC1uYW1lIG1hdGNoZXNdXVxuICAgIChsZXRcbiAgICAgW25hbWVcbiAgICAgIChwcm9wZXItZGVtdW5nZSBtdW5nZWQtbmFtZSlcbiAgICAgIHNvcnRlZC1tYXRjaGVzXG4gICAgICAoc29ydCBtYXRjaC1hcml0eS1jb21wYXJhdG9yIG1hdGNoZXMpXG4gICAgICBzb3J0ZWQtZm5zXG4gICAgICAobWFwXG4gICAgICAgKGZuKiBbcDFfXzQyMTA3I10gKG9nZXQgb2JqIChmaXJzdCBwMV9fNDIxMDcjKSkpXG4gICAgICAgc29ydGVkLW1hdGNoZXMpXVxuICAgICBbbmFtZSBzb3J0ZWQtZm5zXSkpXG4gICBieS1uYW1lLWNvbXBhcmF0b3JcbiAgIChmbiBbYSBiXSAoY29tcGFyZSAoZmlyc3QgYSkgKGZpcnN0IGIpKSldXG4gIChzb3J0IGJ5LW5hbWUtY29tcGFyYXRvciAobWFwIHBvc3QtcHJvY2VzcyBtZXRob2RzKSkpKVxuIn0gezpzeW0gcmVzZXJ2ZWQtYXdhcmUtZGVtdW5nZSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFttdW5nZWQtbmFtZV0pfSwgOnNvdXJjZSAiKGRlZm5cbiByZXNlcnZlZC1hd2FyZS1kZW11bmdlXG4gW211bmdlZC1uYW1lXVxuICgtPiBtdW5nZWQtbmFtZSAoZG9sbGFyLXByZXNlcnZpbmctZGVtdW5nZSkgKHJldmVydC1yZXNlcnZlZCkpKVxuIn0gezpzeW0gYXJpdHkta2V5d29yZHMtY29tcGFyYXRvciwgOm1ldGEgezpkb2MgIjo6dmFyaWFkaWMgZ29lcyBsYXN0LCBvdGhlciBrZXl3b3JkcyBjb21wYXJlIGJ5IG5hbWUuIiwgOmFyZ2xpc3RzIChbeCB5XSl9LCA6c291cmNlICIoZGVmblxuIGFyaXR5LWtleXdvcmRzLWNvbXBhcmF0b3JcbiBcIjo6dmFyaWFkaWMgZ29lcyBsYXN0LCBvdGhlciBrZXl3b3JkcyBjb21wYXJlIGJ5IG5hbWUuXCJcbiBbeCB5XVxuIChjb25kXG4gICg9IDpkZXZ0b29scy5tdW5naW5nL3ZhcmlhZGljIHgpXG4gIDFcbiAgKD0gOmRldnRvb2xzLm11bmdpbmcvdmFyaWFkaWMgeSlcbiAgLTFcbiAgOmVsc2VcbiAgKGNvbXBhcmUgKG5hbWUgeCkgKG5hbWUgeSkpKSlcbiJ9IHs6c3ltIGV4dHJhY3QtYXJpdGllcywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtmIGh1bWFuaXplPyBzcGFjZXItc3ltYm9sIG11bHRpLWFyaXR5LXN5bWJvbCByZXN0LXN5bWJvbF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBleHRyYWN0LWFyaXRpZXNcbiBbZiBodW1hbml6ZT8gc3BhY2VyLXN5bWJvbCBtdWx0aS1hcml0eS1zeW1ib2wgcmVzdC1zeW1ib2xdXG4gKC0+XG4gIChvciAoY29sbGVjdC1mbi1hcml0aWVzIGYpIHs6bmFrZWQgZn0pXG4gIChhcml0aWVzLXRvLWFyZ3MtbGlzdHMgaHVtYW5pemU/KVxuICAoYXJncy1saXN0cy10by1zdHJpbmdzIHNwYWNlci1zeW1ib2wgbXVsdGktYXJpdHktc3ltYm9sIHJlc3Qtc3ltYm9sKSkpXG4ifSB7OnN5bSBhcml0aWVzLWtleS1jb21wYXJhdG9yLCA6bWV0YSB7OmRvYyAibnVtYmVycyBnbyBmaXJzdCAob3JkZXJlZCksIHRoZW4ga2V5d29yZHMgKG9yZGVyZWQgYnkgbmFtZSksIGFuZCB0aGVuIDo6dmFyaWFkaWMgc3RpY2tzIGxhc3QiLCA6YXJnbGlzdHMgKFt4IHldKX0sIDpzb3VyY2UgIihkZWZuXG4gYXJpdGllcy1rZXktY29tcGFyYXRvclxuIFwibnVtYmVycyBnbyBmaXJzdCAob3JkZXJlZCksIHRoZW4ga2V5d29yZHMgKG9yZGVyZWQgYnkgbmFtZSksIGFuZCB0aGVuIDo6dmFyaWFkaWMgc3RpY2tzIGxhc3RcIlxuIFt4IHldXG4gKGxldFxuICBba3g/IChrZXl3b3JkPyB4KSBreT8gKGtleXdvcmQ/IHkpXVxuICAoY29uZFxuICAgKGFuZCBreD8ga3k/KVxuICAgKGFyaXR5LWtleXdvcmRzLWNvbXBhcmF0b3IgeCB5KVxuICAga3g/XG4gICAxXG4gICBreT9cbiAgIC0xXG4gICA6ZWxzZVxuICAgKGNvbXBhcmUgeCB5KSkpKVxuIn0gezpzeW0gZ2V0LWZuLW1heC1maXhlZC1hcml0eSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtmXSl9LCA6c291cmNlICIoZGVmbiBnZXQtZm4tbWF4LWZpeGVkLWFyaXR5IFtmXSAob2dldCBmIFwiY2xqcyRsYW5nJG1heEZpeGVkQXJpdHlcIikpXG4ifSB7OnN5bSBjb21tb24tcHJvdG9jb2w/LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3Byb3RvY29sLW5zIHByb3RvY29sLW5hbWVdKX0sIDpzb3VyY2UgIihkZWZuXG4gY29tbW9uLXByb3RvY29sP1xuIFtwcm90b2NvbC1ucyBwcm90b2NvbC1uYW1lXVxuIChhbmQgKD0gcHJvdG9jb2wtbnMgXCJjbGpzLmNvcmVcIikgKD0gcHJvdG9jb2wtbmFtZSBcIklGblwiKSkpXG4ifSB7OnN5bSBicmVhay1tdW5nZWQtbmFtZSwgOm1ldGEgezpkb2MgIkdpdmVuIGEgbXVuZ2VkLW5hbWUgZnJvbSBKYXZhc2NyaXB0IGxhbmRzIGF0dGVtcHRzIHRvIGJyZWFrIGl0IGludG86XG4gIFtmbi1ucyBmbi1uYW1lIHByb3RvY29sLW5zIHByb3RvY29sLW5hbWUgcHJvdG9jb2wtbWV0aG9kIGFyaXR5XS5cblxuICBQcm90b2NvbCBhbmQgYXJpdHkgZWxlbWVudHMgYXJlIG9wdGlvbmFsLiBGdW5jdGlvbiBlbGVtZW50cyBhcmUgYWx3YXlzIHByZXNlbnQgb3IgXCJcIi5cblxuICBleGFtcGxlcyBmb3IgaW5wdXQ6XG4gICAgY2xqcyRjb3JlJHJlc3QgPT4gWydjbGpzLmNvcmUnLCAncmVzdCddXG4gICAgY2xqcy5jb3JlLnJlZHVjZSRjbGpzJGNvcmUkSUZuJF9pbnZva2UkYXJpdHkkMyA9PiBbJ2NsanMuY29yZScgJ3JlZHVjZScgJ2NsanMuY29yZScgJ0lGbicgJ19pbnZva2UnIDNdIiwgOmFyZ2xpc3RzIFtbbXVuZ2VkLW5hbWVdIFttdW5nZWQtbmFtZSBucy1kZXRlY3Rvcl1dfSwgOnNvdXJjZSAiKGRlZm5cbiBicmVhay1tdW5nZWQtbmFtZVxuIFwiR2l2ZW4gYSBtdW5nZWQtbmFtZSBmcm9tIEphdmFzY3JpcHQgbGFuZHMgYXR0ZW1wdHMgdG8gYnJlYWsgaXQgaW50bzpcXG4gIFtmbi1ucyBmbi1uYW1lIHByb3RvY29sLW5zIHByb3RvY29sLW5hbWUgcHJvdG9jb2wtbWV0aG9kIGFyaXR5XS5cXG5cXG4gIFByb3RvY29sIGFuZCBhcml0eSBlbGVtZW50cyBhcmUgb3B0aW9uYWwuIEZ1bmN0aW9uIGVsZW1lbnRzIGFyZSBhbHdheXMgcHJlc2VudCBvciBcXFwiXFxcIi5cXG5cXG4gIGV4YW1wbGVzIGZvciBpbnB1dDpcXG4gICAgY2xqcyRjb3JlJHJlc3QgPT4gWydjbGpzLmNvcmUnLCAncmVzdCddXFxuICAgIGNsanMuY29yZS5yZWR1Y2UkY2xqcyRjb3JlJElGbiRfaW52b2tlJGFyaXR5JDMgPT4gWydjbGpzLmNvcmUnICdyZWR1Y2UnICdjbGpzLmNvcmUnICdJRm4nICdfaW52b2tlJyAzXVwiXG4gKFttdW5nZWQtbmFtZV0gKGJyZWFrLW11bmdlZC1uYW1lIG11bmdlZC1uYW1lIG5pbCkpXG4gKFttdW5nZWQtbmFtZSBucy1kZXRlY3Rvcl1cbiAgKGlmXG4gICAoZW1wdHk/IG11bmdlZC1uYW1lKVxuICAgW1wiXCIgXCJcIl1cbiAgIChsZXRcbiAgICBbZWZmZWN0aXZlLWRldGVjdG9yXG4gICAgIChvciBucy1kZXRlY3RvciBucy1leGlzdHM/KVxuICAgICB0b2tlbnNcbiAgICAgKHZlYyAoLnNwbGl0IG11bmdlZC1uYW1lICNcIlskLl1cIikpXG4gICAgIFt0b2tlbnMgYXJpdHldXG4gICAgIChzdHJpcC1hcml0eSB0b2tlbnMpXG4gICAgIFtmbi1ucyB0b2tlbnNdXG4gICAgIChkZXRlY3QtbmFtZXNwYWNlLXByZWZpeCB0b2tlbnMgZWZmZWN0aXZlLWRldGVjdG9yKVxuICAgICBbZm4tbmFtZS10b2tlbnMgcHJvdG9jb2wtbnMgcHJvdG9jb2wtbmFtZSBwcm90b2NvbC1tZXRob2QtdG9rZW5zXVxuICAgICAocGFyc2UtcHJvdG9jb2wgdG9rZW5zIGVmZmVjdGl2ZS1kZXRlY3RvcilcbiAgICAgZm4tbmFtZVxuICAgICAoc3RyaW5nL2pvaW4gXCIkXCIgZm4tbmFtZS10b2tlbnMpXG4gICAgIHByb3RvY29sLW1ldGhvZFxuICAgICAoaWZcbiAgICAgIHByb3RvY29sLW1ldGhvZC10b2tlbnNcbiAgICAgIChzdHJpbmcvam9pbiBcIiRcIiBwcm90b2NvbC1tZXRob2QtdG9rZW5zKSldXG4gICAgW2ZuLW5zIGZuLW5hbWUgcHJvdG9jb2wtbnMgcHJvdG9jb2wtbmFtZSBwcm90b2NvbC1tZXRob2QgYXJpdHldKSkpKVxuIn0gezpzeW0gcHJlc2VudC1mdW5jdGlvbi1uYW1lLCA6bWV0YSB7OmRvYyAiR2l2ZW4gamF2YXNjcmlwdCBmdW5jdGlvbiBuYW1lIHRyaWVzIHRvIHByZXNlbnQgaXQgYXMgcGxhaW4gc3RyaW5nIGZvciBkaXNwbGF5IGluIFVJIG9uIGJlc3QgZWZmb3J0IGJhc2lzLiIsIDphcmdsaXN0cyAoW211bmdlZC1uYW1lIG9wdGlvbnNdKX0sIDpzb3VyY2UgIihkZWZuXG4gcHJlc2VudC1mdW5jdGlvbi1uYW1lXG4gXCJHaXZlbiBqYXZhc2NyaXB0IGZ1bmN0aW9uIG5hbWUgdHJpZXMgdG8gcHJlc2VudCBpdCBhcyBwbGFpbiBzdHJpbmcgZm9yIGRpc3BsYXkgaW4gVUkgb24gYmVzdCBlZmZvcnQgYmFzaXMuXCJcbiBbbXVuZ2VkLW5hbWUgb3B0aW9uc11cbiAobGV0XG4gIFt7OmtleXNcbiAgICBbaW5jbHVkZS1ucz9cbiAgICAgaW5jbHVkZS1wcm90b2NvbC1ucz9cbiAgICAgc2lsZW5jZS1jb21tb24tcHJvdG9jb2xzP1xuICAgICBucy1kZXRlY3Rvcl19XG4gICBvcHRpb25zXG4gICBbZm4tbnMgZm4tbmFtZSBwcm90b2NvbC1ucyBwcm90b2NvbC1uYW1lIHByb3RvY29sLW1ldGhvZCBhcml0eV1cbiAgIChicmVhay1hbmQtZGVtdW5nZS1uYW1lIG11bmdlZC1uYW1lIG5zLWRldGVjdG9yKVxuICAgYXJpdHktc3RyXG4gICAoaWZcbiAgICAoc29tZT8gYXJpdHkpXG4gICAgKGlmICg9IGFyaXR5IFwidmFyaWFkaWNcIikgXCLigb9cIiAobWFrZS1zdXBlcnNjcmlwdCBhcml0eSkpKV1cbiAgKGlmXG4gICAoZW1wdHk/IGZuLW5hbWUpXG4gICBtdW5nZWQtbmFtZVxuICAgKGxldFxuICAgIFtmbi1wYXJ0XG4gICAgIChwcmVzZW50LWZuLXBhcnQgZm4tbnMgZm4tbmFtZSBpbmNsdWRlLW5zPylcbiAgICAgcHJvdG9jb2wtcGFydFxuICAgICAoaWZcbiAgICAgIChhbmRcbiAgICAgICBwcm90b2NvbC1uc1xuICAgICAgIChub3RcbiAgICAgICAgKGFuZFxuICAgICAgICAgc2lsZW5jZS1jb21tb24tcHJvdG9jb2xzP1xuICAgICAgICAgKGNvbW1vbi1wcm90b2NvbD8gcHJvdG9jb2wtbnMgcHJvdG9jb2wtbmFtZSkpKSlcbiAgICAgIChwcmVzZW50LXByb3RvY29sLXBhcnRcbiAgICAgICBwcm90b2NvbC1uc1xuICAgICAgIHByb3RvY29sLW5hbWVcbiAgICAgICBwcm90b2NvbC1tZXRob2RcbiAgICAgICBpbmNsdWRlLXByb3RvY29sLW5zPykpXVxuICAgIChzdHJcbiAgICAgKG9yIHByb3RvY29sLXBhcnQgZm4tcGFydClcbiAgICAgYXJpdHktc3RyXG4gICAgIChpZiBwcm90b2NvbC1wYXJ0IChzdHIgXCIgKFwiIGZuLXBhcnQgXCIpXCIpKSkpKSkpXG4ifSB7OnN5bSBjaGFyLXRvLXN1cGVyc2NyaXB0LCA6bWV0YSB7OmRvYyAiR2l2ZW4gYSBjaGFyYWN0ZXIgd2l0aCBhIHNpbmdsZSBkaWdpdCBjb252ZXJ0cyBpdCBpbnRvIGEgc3VwZXJzY3JpcHQgY2hhcmFjdGVyLlxuICBaZXJvIGNoYXJhY3RlciBtYXBzIHRvIHVuaWNvZGUgJ1NVUEVSU0NSSVBUIFpFUk8nIChVKzIwNzApLiIsIDphcmdsaXN0cyAoW2NoYXJdKX0sIDpzb3VyY2UgIihkZWZuXG4gY2hhci10by1zdXBlcnNjcmlwdFxuIFwiR2l2ZW4gYSBjaGFyYWN0ZXIgd2l0aCBhIHNpbmdsZSBkaWdpdCBjb252ZXJ0cyBpdCBpbnRvIGEgc3VwZXJzY3JpcHQgY2hhcmFjdGVyLlxcbiAgWmVybyBjaGFyYWN0ZXIgbWFwcyB0byB1bmljb2RlICdTVVBFUlNDUklQVCBaRVJPJyAoVSsyMDcwKS5cIlxuIFtjaGFyXVxuIHs6cHJlIFsoc3RyaW5nPyBjaGFyKSAoPSAoY291bnQgY2hhcikgMSldfVxuIChsZXRcbiAgW2NoYXItY29kZVxuICAgKG9jYWxsIChqcy9TdHJpbmcuIGNoYXIpIFwiY2hhckNvZGVBdFwiIDApXG4gICBudW0tY29kZVxuICAgKC0gY2hhci1jb2RlIDQ4KVxuICAgc3VwZXJzY3JpcHQtY29kZVxuICAgKGNhc2UgbnVtLWNvZGUgMSAxODUgMiAxNzggMyAxNzkgKCsgODMwNCBudW0tY29kZSkpXVxuICAob2NhbGwganMvU3RyaW5nIFwiZnJvbUNoYXJDb2RlXCIgc3VwZXJzY3JpcHQtY29kZSkpKVxuIn0gezpzeW0gZ2V0LWZuLXZhcmlhZGljLWFyaXR5LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2ZdKX0sIDpzb3VyY2UgIihkZWZuXG4gZ2V0LWZuLXZhcmlhZGljLWFyaXR5XG4gW2ZdXG4gKG9nZXQgZiAoc3RyIFwiY2xqcyRjb3JlJElGbiRfaW52b2tlJGFyaXR5JHZhcmlhZGljXCIpKSlcbiJ9IHs6c3ltIHNjYW4tcHJvdG9jb2xzLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW29ial0pfSwgOnNvdXJjZSAiKGRlZm5cbiBzY2FuLXByb3RvY29sc1xuIFtvYmpdXG4gKGxldFxuICBbZmFzdC1wYXRoLXByb3RvY29sc1xuICAgKG1hcFxuICAgIChwYXJ0aWFsIGNvbnZlcnQtdG8tcHJvdG9jb2wtZGVzY3JpcHRvciB0cnVlKVxuICAgIChzY2FuLWZhc3QtcGF0aC1wcm90b2NvbHMgb2JqKSlcbiAgIHNsb3ctcGF0aC1wcm90b2NvbHNcbiAgIChtYXBcbiAgICAocGFydGlhbCBjb252ZXJ0LXRvLXByb3RvY29sLWRlc2NyaXB0b3IgZmFsc2UpXG4gICAgKHNjYW4tc2xvdy1wYXRoLXByb3RvY29scyBvYmopKVxuICAgYWxsLXByb3RvY29sc1xuICAgKGNvbmNhdCBmYXN0LXBhdGgtcHJvdG9jb2xzIHNsb3ctcGF0aC1wcm90b2NvbHMpXVxuICAoc29ydCBwcm90b2NvbC1kZXNjcmlwdG9ycy1jb21wYXJhdG9yIGFsbC1wcm90b2NvbHMpKSlcbiJ9IHs6c3ltIGdldC1wcm90b2NvbC1vYmplY3QsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbcHJvdG9jb2wtc2VsZWN0b3JdKX0sIDpzb3VyY2UgIihkZWZuXG4gZ2V0LXByb3RvY29sLW9iamVjdFxuIFtwcm90b2NvbC1zZWxlY3Rvcl1cbiAobG9vcFxuICBbb2JqIChnZXQtZ2xvYmFsLXNjb3BlKSBwYXRoIChwcm90b2NvbC1wYXRoIHByb3RvY29sLXNlbGVjdG9yKV1cbiAgKGlmXG4gICAoZW1wdHk/IHBhdGgpXG4gICBvYmpcbiAgIChpZlxuICAgIChnb29nL2lzT2JqZWN0IG9iailcbiAgICAocmVjdXIgKG9nZXQgb2JqIChmaXJzdCBwYXRoKSkgKHJlc3QgcGF0aCkpKSkpKVxuIn0gezpzeW0gcGFyc2UtZm4tc291cmNlLCA6bWV0YSB7OmRvYyAiR2l2ZW4gYSBmdW5jdGlvbiBzb3VyY2UgY29kZSBwYXJzZXMgb3V0IFtuYW1lIGFyZ3NdLiBOb3RlIHRoYXQgYm90aCBzdHJpbmdzIGFyZSBzdGlsbCBtdW5nZWQuXG4gIFN1aXRhYmxlIGZvciBmdXJ0aGVyIHByb2Nlc3NpbmcuXG5cbiAgRm9yIGV4YW1wbGUgZm9yIGlucHV0IGJlbG93IHRoZSBmdW5jdGlvbiB3aWxsIHJldHVybiBbXCJkZXZ0b29sc19zYW1wbGUkY29yZSRoZWxsb1wiIFwibmFtZSwgdW51c2VkX3BhcmFtXCJdOlxuXG4gIGZ1bmN0aW9uIGRldnRvb2xzX3NhbXBsZSRjb3JlJGhlbGxvKG5hbWUsIHVudXNlZF9wYXJhbSl7XG4gICAgcmV0dXJuIFtjbGpzLmNvcmUuc3RyKFwiaGVsbG8sIFwiKSxjbGpzLmNvcmUuc3RyKG5hbWUpLGNsanMuY29yZS5zdHIoXCIhXCIpXS5qb2luKCcnKTtcbiAgfVxuICAiLCA6YXJnbGlzdHMgKFtmbi1zb3VyY2VdKX0sIDpzb3VyY2UgIihkZWZuXG4gcGFyc2UtZm4tc291cmNlXG4gXCJHaXZlbiBhIGZ1bmN0aW9uIHNvdXJjZSBjb2RlIHBhcnNlcyBvdXQgW25hbWUgYXJnc10uIE5vdGUgdGhhdCBib3RoIHN0cmluZ3MgYXJlIHN0aWxsIG11bmdlZC5cXG4gIFN1aXRhYmxlIGZvciBmdXJ0aGVyIHByb2Nlc3NpbmcuXFxuXFxuICBGb3IgZXhhbXBsZSBmb3IgaW5wdXQgYmVsb3cgdGhlIGZ1bmN0aW9uIHdpbGwgcmV0dXJuIFtcXFwiZGV2dG9vbHNfc2FtcGxlJGNvcmUkaGVsbG9cXFwiIFxcXCJuYW1lLCB1bnVzZWRfcGFyYW1cXFwiXTpcXG5cXG4gIGZ1bmN0aW9uIGRldnRvb2xzX3NhbXBsZSRjb3JlJGhlbGxvKG5hbWUsIHVudXNlZF9wYXJhbSl7XFxuICAgIHJldHVybiBbY2xqcy5jb3JlLnN0cihcXFwiaGVsbG8sIFxcXCIpLGNsanMuY29yZS5zdHIobmFtZSksY2xqcy5jb3JlLnN0cihcXFwiIVxcXCIpXS5qb2luKCcnKTtcXG4gIH1cXG4gIFwiXG4gW2ZuLXNvdXJjZV1cbiAoaWYtbGV0XG4gIFttZWF0IChzZWNvbmQgKHJlLWZpbmQgI1wiZnVuY3Rpb25cXHMoLio/KVxce1wiIGZuLXNvdXJjZSkpXVxuICAoaWYtbGV0IFttYXRjaCAocmUtZmluZCAjXCIoLio/KVxcKCguKilcXClcIiBtZWF0KV0gKHJlc3QgbWF0Y2gpKSkpXG4ifSB7OnN5bSBucy1leGlzdHM/LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW25zLW1vZHVsZS1uYW1lXSl9LCA6c291cmNlICIoZGVmblxuIG5zLWV4aXN0cz9cbiBbbnMtbW9kdWxlLW5hbWVdXG4gezpwcmUgWyhzdHJpbmc/IG5zLW1vZHVsZS1uYW1lKV19XG4gKGlmLXNvbWVcbiAgW25zLW9ialxuICAgKGdvYmovZ2V0VmFsdWVCeUtleXNcbiAgICAoZ2V0LWdsb2JhbC1zY29wZSlcbiAgICAoLnNwbGl0IG5zLW1vZHVsZS1uYW1lIFwiLlwiKSldXG4gIChvYmplY3Q/IG5zLW9iaikpKVxuIn0gezpzeW0gZ2V0LXByb3RvY29sLXNlbGVjdG9yLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2tleV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBnZXQtcHJvdG9jb2wtc2VsZWN0b3JcbiBba2V5XVxuIChpZi1sZXRcbiAgW20gKHJlLW1hdGNoZXMgI1wiKC4qKVxcJCRcIiBrZXkpXVxuICAoaWYtbm90XG4gICAoc3RyaW5nL2luY2x1ZGVzPyBrZXkgXCJjbGpzJGxhbmckcHJvdG9jb2xfbWFzayRwYXJ0aXRpb25cIilcbiAgIChsZXRcbiAgICBbcHJvdG9jb2wtc2VsZWN0b3IgKHN0cmluZy9yZXBsYWNlIChzZWNvbmQgbSkgXCIkXCIgXCIuXCIpXVxuICAgIChpZiAocHJvdG9jb2wtZXhpc3RzPyBwcm90b2NvbC1zZWxlY3RvcikgcHJvdG9jb2wtc2VsZWN0b3IpKSkpKVxuIn0gezpzeW0gY29udmVydC10by1wcm90b2NvbC1kZXNjcmlwdG9yLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2Zhc3Q/IFtucyBuYW1lIHNlbGVjdG9yXV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBjb252ZXJ0LXRvLXByb3RvY29sLWRlc2NyaXB0b3JcbiBbZmFzdD8gW25zIG5hbWUgc2VsZWN0b3JdXVxuIChtYWtlLXByb3RvY29sLWRlc2NyaXB0b3IgbnMgbmFtZSBzZWxlY3RvciBmYXN0PykpXG4ifSB7OnN5bSByZXZpZXctYXJpdGllcywgOm1ldGEgezpkb2MgIlNvbWUgYXJpdGllcyBjYW4gYmUgbWFya2VkIGFzIGZpeGVkIGFyaXR5IGJ1dCBpbiBmYWN0IHBvaW50IHRvIGEgdmFyaWFkaWMtYXJpdHkgZnVuY3Rpb24uIFdlIHdhbnQgdG8gZGV0ZWN0IHRoaXMgY2FzZVxuICBhbmQgdHVybiBzdWNoIGltcHJvcGVybHkgY2F0ZWdvcml6ZWQgYXJpdGllcyB0byA6OnZhcmlhZGljLiIsIDphcmdsaXN0cyAoW2FyaXRpZXNdKX0sIDpzb3VyY2UgIihkZWZuXG4gcmV2aWV3LWFyaXRpZXNcbiBcIlNvbWUgYXJpdGllcyBjYW4gYmUgbWFya2VkIGFzIGZpeGVkIGFyaXR5IGJ1dCBpbiBmYWN0IHBvaW50IHRvIGEgdmFyaWFkaWMtYXJpdHkgZnVuY3Rpb24uIFdlIHdhbnQgdG8gZGV0ZWN0IHRoaXMgY2FzZVxcbiAgYW5kIHR1cm4gc3VjaCBpbXByb3Blcmx5IGNhdGVnb3JpemVkIGFyaXRpZXMgdG8gOjp2YXJpYWRpYy5cIlxuIFthcml0aWVzXVxuIChpZlxuICAoOmRldnRvb2xzLm11bmdpbmcvdmFyaWFkaWMgYXJpdGllcylcbiAgYXJpdGllc1xuICAoaW50byB7fSAobWFwIHJldmlldy1hcml0eSBhcml0aWVzKSkpKVxuIn0gezpzeW0gc2Nhbi1mYXN0LXBhdGgtcHJvdG9jb2xzLXBhcnRpdGlvbiwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtvYmogcGFydGl0aW9uXSl9LCA6c291cmNlICIoZGVmblxuIHNjYW4tZmFzdC1wYXRoLXByb3RvY29scy1wYXJ0aXRpb25cbiBbb2JqIHBhcnRpdGlvbl1cbiB7OnByZSBbKG51bWJlcj8gcGFydGl0aW9uKV19XG4gKGxldFxuICBbcGFydGl0aW9uLWtleVxuICAgKGtleS1mb3ItcHJvdG9jb2wtcGFydGl0aW9uIHBhcnRpdGlvbilcbiAgIHBhcnRpdGlvbi1iaXRzXG4gICAob3IgKG9nZXQgb2JqIHBhcnRpdGlvbi1rZXkpIDApXVxuICAoaWZcbiAgICg+IHBhcnRpdGlvbi1iaXRzIDApXG4gICAobGV0XG4gICAgW2xvb2t1cC10YWJsZVxuICAgICAoZ2V0IEBmYXN0LXBhdGgtcHJvdG9jb2xzLWxvb2t1cC10YWJsZSBwYXJ0aXRpb24pXG4gICAgIF9cbiAgICAgKGFzc2VydFxuICAgICAgKG1hcD8gbG9va3VwLXRhYmxlKVxuICAgICAgKHN0clxuICAgICAgIFwiZmFzdC1wYXRoLXByb3RvY29scy1sb29rdXAtdGFibGUgZG9lcyBub3QgY29udGFpbiBsb29rdXAgdGFibGUgZm9yIHBhcnRpdGlvbiBcIlxuICAgICAgIHBhcnRpdGlvbikpXG4gICAgICpcbiAgICAgKGZuXG4gICAgICBbYWNjdW0gW2JpdCBwcm90b2NvbF1dXG4gICAgICAoaWZcbiAgICAgICAoemVybz8gKGJpdC1hbmQgcGFydGl0aW9uLWJpdHMgYml0KSlcbiAgICAgICBhY2N1bVxuICAgICAgIChjb25qIGFjY3VtIHByb3RvY29sKSkpXVxuICAgIChyZWR1Y2UgKiBbXSBsb29rdXAtdGFibGUpKSkpKVxuIn0gezpzeW0gcHJvcGVyLW5zLWRlbXVuZ2UsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbbXVuZ2VkLW5zLW5hbWVdKX0sIDpzb3VyY2UgIihkZWZuXG4gcHJvcGVyLW5zLWRlbXVuZ2VcbiBbbXVuZ2VkLW5zLW5hbWVdXG4gKC0+IG11bmdlZC1ucy1uYW1lIChwcm9wZXItZGVtdW5nZSkgKHN0cmluZy9yZXBsYWNlIFwiJFwiIFwiLlwiKSkpXG4ifSB7OnN5bSBzdHJpcC1hcml0eSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFt0b2tlbnNdKX0sIDpzb3VyY2UgIihkZWZuXG4gc3RyaXAtYXJpdHlcbiBbdG9rZW5zXVxuIChsZXRcbiAgW1twcmVmaXgtdG9rZW5zIGFyaXR5LXRva2Vuc11cbiAgIChzcGxpdC13aXRoIChmbiogW3AxX180MjEwNCNdIChub3Q9IHAxX180MjEwNCMgXCJhcml0eVwiKSkgdG9rZW5zKV1cbiAgW3ByZWZpeC10b2tlbnMgKG5vcm1hbGl6ZS1hcml0eSAocmVzdCBhcml0eS10b2tlbnMpKV0pKVxuIn0gezpzeW0gc2Nhbi1zbG93LXBhdGgtcHJvdG9jb2xzLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW29ial0pfSwgOnNvdXJjZSAiKGRlZm5cbiBzY2FuLXNsb3ctcGF0aC1wcm90b2NvbHNcbiBbb2JqXVxuIChsZXRcbiAgW2tleXMgKGdvYmovZ2V0S2V5cyBvYmopIHNlbGVjdG9ycyAoa2VlcCBnZXQtcHJvdG9jb2wtc2VsZWN0b3Iga2V5cyldXG4gIChtYXAgZGVtdW5nZS1wcm90b2NvbC1zZWxlY3RvciBzZWxlY3RvcnMpKSlcbiJ9IHs6c3ltIGFyaXRpZXMtdG8tYXJncy1saXN0cywgOm1ldGEgezpkb2MgIkdpdmVuIGEgbWFwIG9mIGFyaXR5IGZ1bmN0aW9ucy4gVHJpZXMgdG8gcGFyc2UgaW5kaXZpZHVhbCBmdW5jdGlvbnMgYW5kIHByZXBhcmUgYW4gYXJndW1lbnRzIGxpc3QgZm9yIGVhY2ggYXJpdHkuXG4gIFJldHVybmVkIGxpc3Qgb2YgYXJndW1lbnRzIGxpc3QgaXMgc29ydGVkIGJ5IGFyaXR5IGNvdW50LCB2YXJpYWRpYyBhcml0eSBnb2VzIGxhc3QgaWYgYXZhaWxhYmxlLlxuXG4gIFRoZSBmdW5jdGlvbiBhbHNvIG9wdGlvbmFsbHkgaHVtYW5pemVzIGFyZ3VtZW50IG5hbWVzIGluIGVhY2ggYXJndW1lbnRzIGxpc3QgaWYgcmVxdWVzdGVkLiIsIDphcmdsaXN0cyAoW2FyaXRpZXMgJiBbaHVtYW5pemU/XV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBhcml0aWVzLXRvLWFyZ3MtbGlzdHNcbiBcIkdpdmVuIGEgbWFwIG9mIGFyaXR5IGZ1bmN0aW9ucy4gVHJpZXMgdG8gcGFyc2UgaW5kaXZpZHVhbCBmdW5jdGlvbnMgYW5kIHByZXBhcmUgYW4gYXJndW1lbnRzIGxpc3QgZm9yIGVhY2ggYXJpdHkuXFxuICBSZXR1cm5lZCBsaXN0IG9mIGFyZ3VtZW50cyBsaXN0IGlzIHNvcnRlZCBieSBhcml0eSBjb3VudCwgdmFyaWFkaWMgYXJpdHkgZ29lcyBsYXN0IGlmIGF2YWlsYWJsZS5cXG5cXG4gIFRoZSBmdW5jdGlvbiBhbHNvIG9wdGlvbmFsbHkgaHVtYW5pemVzIGFyZ3VtZW50IG5hbWVzIGluIGVhY2ggYXJndW1lbnRzIGxpc3QgaWYgcmVxdWVzdGVkLlwiXG4gW2FyaXRpZXMgJiBbaHVtYW5pemU/XV1cbiAobGV0XG4gIFthcmdzLWxpc3RzIChhcml0aWVzLXRvLWFyZ3MtbGlzdHMqIGFyaXRpZXMpXVxuICAoaWYgaHVtYW5pemU/IChtYXAgaHVtYW5pemUtbmFtZXMgYXJncy1saXN0cykgYXJncy1saXN0cykpKVxuIn0gezpzeW0gY29sbGVjdC1mbi12YXJpYWRpYy1hcml0aWVzLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2ZdKX0sIDpzb3VyY2UgIihkZWZuXG4gY29sbGVjdC1mbi12YXJpYWRpYy1hcml0aWVzXG4gW2ZdXG4gKGlmLWxldFxuICBbdmFyaWFkaWMtYXJpdHkgKGdldC1mbi12YXJpYWRpYy1hcml0eSBmKV1cbiAgezpkZXZ0b29scy5tdW5naW5nL3ZhcmlhZGljIHZhcmlhZGljLWFyaXR5fSkpXG4ifSB7OnN5bSBnZXQtZm4tZml4ZWQtYXJpdHksIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZiBuXSl9LCA6c291cmNlICIoZGVmblxuIGdldC1mbi1maXhlZC1hcml0eVxuIFtmIG5dXG4gKG9nZXQgZiAoc3RyIFwiY2xqcyRjb3JlJElGbiRfaW52b2tlJGFyaXR5JFwiIG4pKSlcbiJ9IHs6c3ltIGRvbGxhci1yZXBsYWNlbWVudCwgOm1ldGEge30sIDpzb3VyY2UgIihkZWYgZG9sbGFyLXJlcGxhY2VtZW50IFwifu+5qX5cIilcbiJ9IHs6c3ltIGdldC1nbG9iYWwtc2NvcGUsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbXSl9LCA6c291cmNlICIoZGVmbiBnZXQtZ2xvYmFsLXNjb3BlIFtdIChjb250ZXh0L2dldC1yb290KSlcbiJ9IHs6c3ltIHJldmVydC1yZXNlcnZlZCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtzXSl9LCA6c291cmNlICIoZGVmblxuIHJldmVydC1yZXNlcnZlZFxuIFtzXVxuIChvclxuICAoaWYtbGV0XG4gICBbbSAocmUtbWF0Y2hlcyAjXCIoLiopXFwkXCIgcyldXG4gICAoaWYgKGpzLXJlc2VydmVkPyAoc2Vjb25kIG0pKSAoc2Vjb25kIG0pKSlcbiAgcykpXG4ifSB7OnN5bSBkZXRlY3QtbmFtZXNwYWNlLXByZWZpeCwgOm1ldGEgezpkb2MgIkdpdmVuIGEgbmFtZSBicm9rZW4gaW50byBuYW1lc3BhY2UgcGFydHMgcmV0dXJucyBbZGV0ZWN0ZWQtbnMgcmVtYWluaW5nLXBhcnRzXSxcbiAgd2hlcmUgZGV0ZWN0ZWQtbnMgaXMgYSBzdHJpbmcgcmVwcmVzZW50aW5nIGxvbmdlc3QgZGV0ZWN0ZWQgZXhpc3RpbmcgbmFtZXNwYWNlIGFuZFxuICByZW1haW5pbmctcGFydHMgaXMgYSB2ZWN0b3Igb2YgcmVtYWluaW5nIGlucHV0IHBhcnRzIG5vdCBpbmNsdWRlZCBpbiB0aGUgZGV0ZWN0ZWQtbnMgY29uY2F0ZW5hdGlvbi5cblxuICBGb3IgZ2l2ZW4gaW5wdXQgW1wiY2xqc1wiIFwiY29yZVwiIFwiZmlyc3RcIl0gcmV0dXJucyBbXCJjbGpzLmNvcmVcIiBbXCJmaXJzdFwiXV0gKGFzc3VtaW5nIGNsanMuY29yZSBleGlzdHMpIiwgOmFyZ2xpc3RzIChbdG9rZW5zICYgW25zLWRldGVjdG9yXV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBkZXRlY3QtbmFtZXNwYWNlLXByZWZpeFxuIFwiR2l2ZW4gYSBuYW1lIGJyb2tlbiBpbnRvIG5hbWVzcGFjZSBwYXJ0cyByZXR1cm5zIFtkZXRlY3RlZC1ucyByZW1haW5pbmctcGFydHNdLFxcbiAgd2hlcmUgZGV0ZWN0ZWQtbnMgaXMgYSBzdHJpbmcgcmVwcmVzZW50aW5nIGxvbmdlc3QgZGV0ZWN0ZWQgZXhpc3RpbmcgbmFtZXNwYWNlIGFuZFxcbiAgcmVtYWluaW5nLXBhcnRzIGlzIGEgdmVjdG9yIG9mIHJlbWFpbmluZyBpbnB1dCBwYXJ0cyBub3QgaW5jbHVkZWQgaW4gdGhlIGRldGVjdGVkLW5zIGNvbmNhdGVuYXRpb24uXFxuXFxuICBGb3IgZ2l2ZW4gaW5wdXQgW1xcXCJjbGpzXFxcIiBcXFwiY29yZVxcXCIgXFxcImZpcnN0XFxcIl0gcmV0dXJucyBbXFxcImNsanMuY29yZVxcXCIgW1xcXCJmaXJzdFxcXCJdXSAoYXNzdW1pbmcgY2xqcy5jb3JlIGV4aXN0cylcIlxuIFt0b2tlbnMgJiBbbnMtZGV0ZWN0b3JdXVxuIChsZXRcbiAgW2VmZmVjdGl2ZS1kZXRlY3RvciAob3IgbnMtZGV0ZWN0b3IgbnMtZXhpc3RzPyldXG4gIChsb29wXG4gICBbbmFtZS10b2tlbnMgW10gcmVtYWluaW5nLXRva2VucyB0b2tlbnNdXG4gICAoaWZcbiAgICAoZW1wdHk/IHJlbWFpbmluZy10b2tlbnMpXG4gICAgW1wiXCIgbmFtZS10b2tlbnNdXG4gICAgKGxldFxuICAgICBbbnMtbmFtZSAoc3RyaW5nL2pvaW4gXCIuXCIgcmVtYWluaW5nLXRva2VucyldXG4gICAgIChpZlxuICAgICAgKGVmZmVjdGl2ZS1kZXRlY3RvciBucy1uYW1lKVxuICAgICAgW25zLW5hbWUgbmFtZS10b2tlbnNdXG4gICAgICAocmVjdXJcbiAgICAgICAoY29uY2F0IFsobGFzdCByZW1haW5pbmctdG9rZW5zKV0gbmFtZS10b2tlbnMpXG4gICAgICAgKGJ1dGxhc3QgcmVtYWluaW5nLXRva2VucykpKSkpKSkpXG4ifSB7OnN5bSBwYXJzZS1mbi1pbmZvLWRlZXAsIDptZXRhIHs6ZG9jICJHaXZlbiBhIEphdmFzY3JpcHQgZnVuY3Rpb24gb2JqZWN0IHRyaWVzIHRvIHJldHJpZXZlIFtucyBuYW1lICYgYXJnc10gYXMgaW4gcGFyc2UtZm4taW5mbyAob24gYmVzdCBlZmZvcnQgYmFzaXMpLlxuXG4gIFRoZSBkaWZmZXJlbmNlIGZyb20gcGFyc2UtZm4taW5mbyBpcyB0aGF0IHRoaXMgZnVuY3Rpb24gcHJlZmVycyB0byByZWFkIGFyZ3MgZnJvbSBhcml0aWVzIGlmIGF2YWlsYWJsZS5cbiAgSXQgcmVjdXJzZSBhcmJpdHJhcnkgZGVlcCBmb2xsb3dpbmcgSUZuIHByb3RvY29sIGxlYWRzLlxuXG4gIElmIHdlIGhpdCBtdWx0aS1hcml0eSBzaXR1YXRpb24gaW4gbGVhZiwgd2UgZG9uJ3QgYXR0ZW1wdCB0byBsaXN0IGFyZ3VtZW50cyBhbmQgcmV0dXJuIDo6bXVsdGktYXJpdHkgcGxhY2Vob2xkZXIgaW5zdGVhZC5cblxuICBUaGUgcmVhc29uIGZvciByZWFkaW5nIGFyaXRpZXMgaXMgdGhhdCBpdCBnaXZlcyBtb3JlIGFjY3VyYXRlIHBhcmFtZXRlciBuYW1lcyBpbiBzb21lIGNhc2VzLlxuICBXZSBvYnNlcnZlZCB0aGF0IHZhcmlhZGljIGZ1bmN0aW9ucyBkb24ndCBhbHdheXMgY29udGFpbiBvcmlnaW5hbCBwYXJhbWV0ZXIgbmFtZXMsIGJ1dCBpbmRpdmlkdWFsIElGbiBhcml0eSBmdW5jdGlvbnMgZG8uIiwgOmFyZ2xpc3RzIChbZl0pfSwgOnNvdXJjZSAiKGRlZm5cbiBwYXJzZS1mbi1pbmZvLWRlZXBcbiBcIkdpdmVuIGEgSmF2YXNjcmlwdCBmdW5jdGlvbiBvYmplY3QgdHJpZXMgdG8gcmV0cmlldmUgW25zIG5hbWUgJiBhcmdzXSBhcyBpbiBwYXJzZS1mbi1pbmZvIChvbiBiZXN0IGVmZm9ydCBiYXNpcykuXFxuXFxuICBUaGUgZGlmZmVyZW5jZSBmcm9tIHBhcnNlLWZuLWluZm8gaXMgdGhhdCB0aGlzIGZ1bmN0aW9uIHByZWZlcnMgdG8gcmVhZCBhcmdzIGZyb20gYXJpdGllcyBpZiBhdmFpbGFibGUuXFxuICBJdCByZWN1cnNlIGFyYml0cmFyeSBkZWVwIGZvbGxvd2luZyBJRm4gcHJvdG9jb2wgbGVhZHMuXFxuXFxuICBJZiB3ZSBoaXQgbXVsdGktYXJpdHkgc2l0dWF0aW9uIGluIGxlYWYsIHdlIGRvbid0IGF0dGVtcHQgdG8gbGlzdCBhcmd1bWVudHMgYW5kIHJldHVybiA6Om11bHRpLWFyaXR5IHBsYWNlaG9sZGVyIGluc3RlYWQuXFxuXFxuICBUaGUgcmVhc29uIGZvciByZWFkaW5nIGFyaXRpZXMgaXMgdGhhdCBpdCBnaXZlcyBtb3JlIGFjY3VyYXRlIHBhcmFtZXRlciBuYW1lcyBpbiBzb21lIGNhc2VzLlxcbiAgV2Ugb2JzZXJ2ZWQgdGhhdCB2YXJpYWRpYyBmdW5jdGlvbnMgZG9uJ3QgYWx3YXlzIGNvbnRhaW4gb3JpZ2luYWwgcGFyYW1ldGVyIG5hbWVzLCBidXQgaW5kaXZpZHVhbCBJRm4gYXJpdHkgZnVuY3Rpb25zIGRvLlwiXG4gW2ZdXG4gKGxldFxuICBbZm4taW5mbyAocGFyc2UtZm4taW5mbyBmKSBhcml0aWVzIChjb2xsZWN0LWZuLWFyaXRpZXMgZildXG4gIChpZlxuICAgKHNvbWU/IGFyaXRpZXMpXG4gICAoaWZcbiAgICAoPiAoY291bnQgYXJpdGllcykgMSlcbiAgICAoY29uY2F0ICh0YWtlIDIgZm4taW5mbykgOmRldnRvb2xzLm11bmdpbmcvbXVsdGktYXJpdHkpXG4gICAgKGNvbmNhdFxuICAgICAodGFrZSAyIGZuLWluZm8pXG4gICAgIChkcm9wIDIgKHBhcnNlLWZuLWluZm8tZGVlcCAoc2Vjb25kIChmaXJzdCBhcml0aWVzKSkpKSkpXG4gICBmbi1pbmZvKSkpXG4ifSB7OnN5bSBwYXJzZS1mbi1zb3VyY2UtaW5mbywgOm1ldGEgezpkb2MgIkdpdmVuIGZ1bmN0aW9uIHNvdXJjZSBjb2RlIHRyaWVzIHRvIHJldHJpZXZlIFtucyBuYW1lICYgYXJnc10gb24gYmVzdCBlZmZvcnQgYmFzaXMsIHdoZXJlXG4gIG5zIGlzIGRlbXVuZ2VkIG5hbWVzcGFjZSBwYXJ0IG9mIHRoZSBmdW5jdGlvbiBuYW1lIChvciBcIlwiIGlmIG5hbWVzcGFjZSBjYW5ub3QgYmUgZGV0ZWN0ZWQpXG4gIG5hbWUgaXMgZGVtdW5nZWQgc2hvcnQgbmFtZSAob3IgXCJcIiBpZiBmdW5jdGlvbiBpcyBhbm9ueW1vdXMgb3IgbmFtZSBjYW5ub3QgYmUgcmV0cmlldmVkKVxuICBhcmdzIGlzIG9wdGlvbmFsIG51bWJlciBvZiBkZW11bmdlZCBhcmd1bWVudCBuYW1lcy5cblxuICBQbGVhc2Ugbm90ZSB0aGF0IHRoaXMgZnVuY3Rpb24gYWx3YXlzIHJldHVybnMgYSB2ZWN0b3Igd2l0aCBzb21ldGhpbmcuIEluIHdvcnN0IGNhc2VzIFtcIlwiIFwiXCJdLlxuICAiLCA6YXJnbGlzdHMgKFtmbi1zb3VyY2VdKX0sIDpzb3VyY2UgIihkZWZuXG4gcGFyc2UtZm4tc291cmNlLWluZm9cbiBcIkdpdmVuIGZ1bmN0aW9uIHNvdXJjZSBjb2RlIHRyaWVzIHRvIHJldHJpZXZlIFtucyBuYW1lICYgYXJnc10gb24gYmVzdCBlZmZvcnQgYmFzaXMsIHdoZXJlXFxuICBucyBpcyBkZW11bmdlZCBuYW1lc3BhY2UgcGFydCBvZiB0aGUgZnVuY3Rpb24gbmFtZSAob3IgXFxcIlxcXCIgaWYgbmFtZXNwYWNlIGNhbm5vdCBiZSBkZXRlY3RlZClcXG4gIG5hbWUgaXMgZGVtdW5nZWQgc2hvcnQgbmFtZSAob3IgXFxcIlxcXCIgaWYgZnVuY3Rpb24gaXMgYW5vbnltb3VzIG9yIG5hbWUgY2Fubm90IGJlIHJldHJpZXZlZClcXG4gIGFyZ3MgaXMgb3B0aW9uYWwgbnVtYmVyIG9mIGRlbXVuZ2VkIGFyZ3VtZW50IG5hbWVzLlxcblxcbiAgUGxlYXNlIG5vdGUgdGhhdCB0aGlzIGZ1bmN0aW9uIGFsd2F5cyByZXR1cm5zIGEgdmVjdG9yIHdpdGggc29tZXRoaW5nLiBJbiB3b3JzdCBjYXNlcyBbXFxcIlxcXCIgXFxcIlxcXCJdLlxcbiAgXCJcbiBbZm4tc291cmNlXVxuIChpZi1sZXRcbiAgW1ttdW5nZWQtbmFtZSBhcmdzXSAocGFyc2UtZm4tc291cmNlIGZuLXNvdXJjZSldXG4gIChsZXRcbiAgIFtbbnMgbmFtZV1cbiAgICAoYnJlYWstYW5kLWRlbXVuZ2UtbmFtZSBtdW5nZWQtbmFtZSlcbiAgICBkZW11bmdlZC1hcmdzXG4gICAgKG1hcFxuICAgICAoY29tcCBwcm9wZXItYXJnLWRlbXVuZ2Ugc3RyaW5nL3RyaW0pXG4gICAgIChzdHJpbmcvc3BsaXQgYXJncyAjXCIsXCIpKV1cbiAgIChjb25jYXQgW25zIG5hbWVdIGRlbXVuZ2VkLWFyZ3MpKVxuICBbXCJcIiBcIlwiXSkpXG4ifSB7OnN5bSBhcml0aWVzLXRvLWFyZ3MtbGlzdHMqLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW2FyaXRpZXNdKX0sIDpzb3VyY2UgIihkZWZuXG4gYXJpdGllcy10by1hcmdzLWxpc3RzKlxuIFthcml0aWVzXVxuIChsZXRcbiAgW3NvcnRlZC1rZXlzXG4gICAoc29ydCBhcml0aWVzLWtleS1jb21wYXJhdG9yIChrZXlzIGFyaXRpZXMpKVxuICAgc29ydGVkLWZuc1xuICAgKG1hcCAoZm4qIFtwMV9fNDIxMDUjXSAoZ2V0IGFyaXRpZXMgcDFfXzQyMTA1IykpIHNvcnRlZC1rZXlzKVxuICAgc29ydGVkLWluZm9zXG4gICAobWFwIHBhcnNlLWZuLWluZm8tZGVlcCBzb3J0ZWQtZm5zKVxuICAgc29ydGVkLWFyZ3MtbGlzdHNcbiAgIChtYXAgKGZuKiBbcDFfXzQyMTA2I10gKGRyb3AgMiBwMV9fNDIxMDYjKSkgc29ydGVkLWluZm9zKV1cbiAgKGlmXG4gICAoPSAobGFzdCBzb3J0ZWQta2V5cykgOmRldnRvb2xzLm11bmdpbmcvdmFyaWFkaWMpXG4gICAoY29uY2F0XG4gICAgKGJ1dGxhc3Qgc29ydGVkLWFyZ3MtbGlzdHMpXG4gICAgWyh2YXJ5LW1ldGFcbiAgICAgIChsYXN0IHNvcnRlZC1hcmdzLWxpc3RzKVxuICAgICAgYXNzb2NcbiAgICAgIDpkZXZ0b29scy5tdW5naW5nL3ZhcmlhZGljXG4gICAgICB0cnVlKV0pXG4gICBzb3J0ZWQtYXJncy1saXN0cykpKVxuIn0gezpzeW0gY2xqcy1mbi1uYW1lPywgOm1ldGEgezpkb2MgIkdpdmVuIGEgSmF2YXNjcmlwdCBuYW1lIGFuc3dlcnMgaWYgdGhlIG5hbWUgd2FzIGxpa2VseSBnZW5lcmF0ZWQgYnkgQ2xvanVyZVNjcmlwdC5cbiAgV2UgdXNlIGEgc2ltcGxlIGhldXJpc3RpYyBoZXJlOlxuICAgIFRoZSBuYW1lIG11c3QgY29udGFpbiBhdCBsZWFzdCB0d28gc2VwYXJhdGUgZG9sbGFycyBiZWNhdXNlIHdlIGFzc3VtZSB0d28tc2VnbWVudCBuYW1lc3BhY2VzLiIsIDphcmdsaXN0cyAoW211bmdlZC1uYW1lXSl9LCA6c291cmNlICIoZGVmblxuIGNsanMtZm4tbmFtZT9cbiBcIkdpdmVuIGEgSmF2YXNjcmlwdCBuYW1lIGFuc3dlcnMgaWYgdGhlIG5hbWUgd2FzIGxpa2VseSBnZW5lcmF0ZWQgYnkgQ2xvanVyZVNjcmlwdC5cXG4gIFdlIHVzZSBhIHNpbXBsZSBoZXVyaXN0aWMgaGVyZTpcXG4gICAgVGhlIG5hbWUgbXVzdCBjb250YWluIGF0IGxlYXN0IHR3byBzZXBhcmF0ZSBkb2xsYXJzIGJlY2F1c2Ugd2UgYXNzdW1lIHR3by1zZWdtZW50IG5hbWVzcGFjZXMuXCJcbiBbbXVuZ2VkLW5hbWVdXG4gKGlmXG4gIChzdHJpbmc/IG11bmdlZC1uYW1lKVxuICAoc29tZT8gKHJlLW1hdGNoZXMgI1wiXlteJF0qXFwkW14kXStcXCQuKiRcIiBtdW5nZWQtbmFtZSkpKSlcbiJ9IHs6c3ltIGJyZWFrLWFuZC1kZW11bmdlLW5hbWUsIDptZXRhIHs6ZG9jICJHaXZlbiBhIG11bmdlZC1uYW1lIGZyb20gSmF2YXNjcmlwdCBsYW5kcyBhdHRlbXB0cyB0byBicmVhayBpdCBpbnRvIGEgbmFtZXNwYWNlIHBhcnQgYW5kIHJlbWFpbmluZyBzaG9ydCBuYW1lLlxuICBUaGVuIGFwcGxpZXMgYXBwcm9wcmlhdGUgZGVtdW5naW5nIG9uIHRoZW0gYW5kIHJldHVybnMgQ2xvanVyZVNjcmlwdCB2ZXJzaW9ucyBvZiB0aGUgbmFtZXMuIiwgOmFyZ2xpc3RzIFtbbXVuZ2VkLW5hbWVdIFttdW5nZWQtbmFtZSBucy1kZXRlY3Rvcl1dfSwgOnNvdXJjZSAiKGRlZm5cbiBicmVhay1hbmQtZGVtdW5nZS1uYW1lXG4gXCJHaXZlbiBhIG11bmdlZC1uYW1lIGZyb20gSmF2YXNjcmlwdCBsYW5kcyBhdHRlbXB0cyB0byBicmVhayBpdCBpbnRvIGEgbmFtZXNwYWNlIHBhcnQgYW5kIHJlbWFpbmluZyBzaG9ydCBuYW1lLlxcbiAgVGhlbiBhcHBsaWVzIGFwcHJvcHJpYXRlIGRlbXVuZ2luZyBvbiB0aGVtIGFuZCByZXR1cm5zIENsb2p1cmVTY3JpcHQgdmVyc2lvbnMgb2YgdGhlIG5hbWVzLlwiXG4gKFttdW5nZWQtbmFtZV0gKGJyZWFrLWFuZC1kZW11bmdlLW5hbWUgbXVuZ2VkLW5hbWUgbmlsKSlcbiAoW211bmdlZC1uYW1lIG5zLWRldGVjdG9yXVxuICAobGV0XG4gICBbcmVzdWx0XG4gICAgKGJyZWFrLW11bmdlZC1uYW1lIG11bmdlZC1uYW1lIG5zLWRldGVjdG9yKVxuICAgIFttdW5nZWQtbnNcbiAgICAgbXVuZ2VkLW5hbWVcbiAgICAgbXVuZ2VkLXByb3RvY29sLW5zXG4gICAgIG11bmdlZC1wcm90b2NvbC1uYW1lXG4gICAgIG11bmdlZC1wcm90b2NvbC1tZXRob2RcbiAgICAgYXJpdHldXG4gICAgcmVzdWx0XVxuICAgWyhwcm9wZXItbnMtZGVtdW5nZSBtdW5nZWQtbnMpXG4gICAgKHByb3Blci1kZW11bmdlIG11bmdlZC1uYW1lKVxuICAgIChpZiBtdW5nZWQtcHJvdG9jb2wtbnMgKHByb3Blci1ucy1kZW11bmdlIG11bmdlZC1wcm90b2NvbC1ucykpXG4gICAgKGlmIG11bmdlZC1wcm90b2NvbC1uYW1lIChwcm9wZXItZGVtdW5nZSBtdW5nZWQtcHJvdG9jb2wtbmFtZSkpXG4gICAgKGlmIG11bmdlZC1wcm90b2NvbC1tZXRob2QgKHByb3Blci1kZW11bmdlIG11bmdlZC1wcm90b2NvbC1tZXRob2QpKVxuICAgIGFyaXR5XSkpKVxuIn0gezpzeW0gcGFyc2UtY29uc3RydWN0b3ItaW5mbywgOm1ldGEgezpkb2MgIkdpdmVuIGEgSmF2YXNjcmlwdCBjb25zdHJ1Y3RvciBmdW5jdGlvbiB0cmllcyB0byByZXRyaWV2ZSBbbnMgbmFtZSBiYXNpc10uIFJldHVybnMgbmlsIGlmIG5vdCBhIGNsanMgdHlwZS4iLCA6YXJnbGlzdHMgKFtmXSl9LCA6c291cmNlICIoZGVmblxuIHBhcnNlLWNvbnN0cnVjdG9yLWluZm9cbiBcIkdpdmVuIGEgSmF2YXNjcmlwdCBjb25zdHJ1Y3RvciBmdW5jdGlvbiB0cmllcyB0byByZXRyaWV2ZSBbbnMgbmFtZSBiYXNpc10uIFJldHVybnMgbmlsIGlmIG5vdCBhIGNsanMgdHlwZS5cIlxuIFtmXVxuIChpZlxuICAoYW5kIChnb29nL2lzT2JqZWN0IGYpICguLWNsanMkbGFuZyR0eXBlIGYpKVxuICAobGV0XG4gICBbdHlwZS1uYW1lXG4gICAgKGdldC10eXBlLW5hbWUgZilcbiAgICBwYXJ0c1xuICAgICguc3BsaXQgdHlwZS1uYW1lICNcIi9cIilcbiAgICBiYXNpc1xuICAgIChzYWZlLWNhbGwgZ2V0LWJhc2lzIFtdIGYpXVxuICAgKGFzc2VydCAoPD0gKGNvdW50IHBhcnRzKSAyKSlcbiAgICh3aGlsZSAoPCAoY291bnQgcGFydHMpIDIpICgudW5zaGlmdCBwYXJ0cyBuaWwpKVxuICAgKGNvbmogKHZlYyBwYXJ0cykgYmFzaXMpKSkpXG4ifSB7OnN5bSBjb2xsZWN0LWZuLWZpeGVkLWFyaXRpZXMsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbZiBtYXgtYXJpdHldKX0sIDpzb3VyY2UgIihkZWZuXG4gY29sbGVjdC1mbi1maXhlZC1hcml0aWVzXG4gW2YgbWF4LWFyaXR5XVxuIChsb29wXG4gIFthcml0eSAwIGNvbGxlY3Rpb24ge31dXG4gIChpZlxuICAgKD4gYXJpdHkgbWF4LWFyaXR5KVxuICAgY29sbGVjdGlvblxuICAgKHJlY3VyXG4gICAgKGluYyBhcml0eSlcbiAgICAoaWYtbGV0XG4gICAgIFthcml0eS1mbiAoZ2V0LWZuLWZpeGVkLWFyaXR5IGYgYXJpdHkpXVxuICAgICAoYXNzb2MgY29sbGVjdGlvbiBhcml0eSBhcml0eS1mbilcbiAgICAgY29sbGVjdGlvbikpKSkpXG4ifSB7OnN5bSBnZXQtZm4tc291cmNlLXNhZmVseSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtmXSl9LCA6c291cmNlICIoZGVmblxuIGdldC1mbi1zb3VyY2Utc2FmZWx5XG4gW2ZdXG4gKHRyeVxuICAoaWYgKGpzLWluIFwidG9TdHJpbmdcIiBmKSAob2NhbGwgZiBcInRvU3RyaW5nXCIpIFwiXCIpXG4gIChjYXRjaCA6ZGVmYXVsdCBfIFwiXCIpKSlcbiJ9IHs6c3ltIGNsanMtZm4/LCA6bWV0YSB7OmRvYyAiR2l2ZW4gYSBKYXZhc2NyaXB0IGZ1bmN0aW9uIG9iamVjdCByZXR1cm5zIHRydWUgaWYgdGhlIGZ1bmN0aW9uIGxvb2tzIGxpa2UgYSBDbG9qdXJlU2NyaXB0IGZ1bmN0aW9uLlxuXG4gIFVzZXMgdmFyaW91cyBoZXVyaXN0aWNzOlxuICAgIDEuIG11c3QgYmUgZm4/IChpcyBqYXZhc2NyaXB0IGZ1bmN0aW9uIG9yIHNhdGlzZmllcyBGbiBhbmQgSUZuIHByb3RvY29scylcbiAgICAyLiBhbmQgbmFtZSBtdXN0IGJlIGNsanMtZm4tbmFtZT8gKG5hbWUgY2FuIGNvbWUgZnJvbSBmLm5hbWUgb3IgcGFyc2VkIG91dCBvZiBmdW5jdGlvbiBzb3VyY2UpXG4gICAgMy4gb3IgaWYgYW5vbnltb3VzIGZ1bmN0aW9uLCBtdXN0IGJlIG5vbi10cml2aWFsIiwgOmFyZ2xpc3RzIChbZl0pfSwgOnNvdXJjZSAiKGRlZm5cbiBjbGpzLWZuP1xuIFwiR2l2ZW4gYSBKYXZhc2NyaXB0IGZ1bmN0aW9uIG9iamVjdCByZXR1cm5zIHRydWUgaWYgdGhlIGZ1bmN0aW9uIGxvb2tzIGxpa2UgYSBDbG9qdXJlU2NyaXB0IGZ1bmN0aW9uLlxcblxcbiAgVXNlcyB2YXJpb3VzIGhldXJpc3RpY3M6XFxuICAgIDEuIG11c3QgYmUgZm4/IChpcyBqYXZhc2NyaXB0IGZ1bmN0aW9uIG9yIHNhdGlzZmllcyBGbiBhbmQgSUZuIHByb3RvY29scylcXG4gICAgMi4gYW5kIG5hbWUgbXVzdCBiZSBjbGpzLWZuLW5hbWU/IChuYW1lIGNhbiBjb21lIGZyb20gZi5uYW1lIG9yIHBhcnNlZCBvdXQgb2YgZnVuY3Rpb24gc291cmNlKVxcbiAgICAzLiBvciBpZiBhbm9ueW1vdXMgZnVuY3Rpb24sIG11c3QgYmUgbm9uLXRyaXZpYWxcIlxuIFtmXVxuIChpZlxuICAoc2FmZS1jYWxsIGZuPyBmYWxzZSBmKVxuICAobGV0XG4gICBbbmFtZSAob2dldCBmIG5hbWUpXVxuICAgKGlmLW5vdFxuICAgIChlbXB0eT8gbmFtZSlcbiAgICAoY2xqcy1mbi1uYW1lPyBuYW1lKVxuICAgIChsZXRcbiAgICAgW2ZuLXNvdXJjZSAoZ2V0LWZuLXNvdXJjZS1zYWZlbHkgZildXG4gICAgIChsZXRcbiAgICAgIFtbbmFtZV0gKHBhcnNlLWZuLXNvdXJjZSBmbi1zb3VyY2UpXVxuICAgICAgKGlmLW5vdFxuICAgICAgIChlbXB0eT8gbmFtZSlcbiAgICAgICAoY2xqcy1mbi1uYW1lPyBuYW1lKVxuICAgICAgIChub3QgKHRyaXZpYWwtZm4tc291cmNlPyBmbi1zb3VyY2UpKSkpKSkpKSlcbiJ9IHs6c3ltIHByb3RvY29sLWV4aXN0cz8sIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbcHJvdG9jb2wtc2VsZWN0b3JdKX0sIDpzb3VyY2UgIihkZWZuXG4gcHJvdG9jb2wtZXhpc3RzP1xuIFtwcm90b2NvbC1zZWxlY3Rvcl1cbiAoc29tZT8gKGdldC1wcm90b2NvbC1vYmplY3QgcHJvdG9jb2wtc2VsZWN0b3IpKSlcbiJ9IHs6c3ltIHBhcnNlLWZuLWluZm8sIDptZXRhIHs6ZG9jICJHaXZlbiBKYXZhc2NyaXB0IGZ1bmN0aW9uIG9iamVjdCB0cmllcyB0byByZXRyaWV2ZSBbbnMgbmFtZSAmIGFyZ3NdIGFzIGluIHBhcnNlLWZuLXNvdXJjZS1pbmZvIChvbiBiZXN0IGVmZm9ydCBiYXNpcykuIiwgOmFyZ2xpc3RzIChbZl0pfSwgOnNvdXJjZSAiKGRlZm5cbiBwYXJzZS1mbi1pbmZvXG4gXCJHaXZlbiBKYXZhc2NyaXB0IGZ1bmN0aW9uIG9iamVjdCB0cmllcyB0byByZXRyaWV2ZSBbbnMgbmFtZSAmIGFyZ3NdIGFzIGluIHBhcnNlLWZuLXNvdXJjZS1pbmZvIChvbiBiZXN0IGVmZm9ydCBiYXNpcykuXCJcbiBbZl1cbiAobGV0XG4gIFtmbi1zb3VyY2UgKGdldC1mbi1zb3VyY2Utc2FmZWx5IGYpXVxuICAocGFyc2UtZm4tc291cmNlLWluZm8gZm4tc291cmNlKSkpXG4ifSB7OnN5bSBtYWtlLXN1cGVyc2NyaXB0LCA6bWV0YSB7OmRvYyAiR2l2ZW4gYSBzdXBlcnNjcmlwdCBudW1iZXIgY29udmVydHMgaXQgaW50byBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBjb25zaXN0aW5nIG9mIHVuaWNvZGUgc3VwZXJzY3JpcHQgY2hhcmFjdGVycyAoZGlnaXRzKS4iLCA6YXJnbGlzdHMgKFtzdXBlcnNjcmlwdF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBtYWtlLXN1cGVyc2NyaXB0XG4gXCJHaXZlbiBhIHN1cGVyc2NyaXB0IG51bWJlciBjb252ZXJ0cyBpdCBpbnRvIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIGNvbnNpc3Rpbmcgb2YgdW5pY29kZSBzdXBlcnNjcmlwdCBjaGFyYWN0ZXJzIChkaWdpdHMpLlwiXG4gW3N1cGVyc2NyaXB0XVxuIHs6cHJlIFsobnVtYmVyPyBzdXBlcnNjcmlwdCldfVxuIChzdHJpbmcvam9pbiAobWFwIGNoYXItdG8tc3VwZXJzY3JpcHQgKHN0ciBzdXBlcnNjcmlwdCkpKSlcbiJ9IHs6c3ltIGRlbXVuZ2UtcHJvdG9jb2wtc2VsZWN0b3IsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbcHJvdG9jb2wtc2VsZWN0b3JdKX0sIDpzb3VyY2UgIihkZWZuXG4gZGVtdW5nZS1wcm90b2NvbC1zZWxlY3RvclxuIFtwcm90b2NvbC1zZWxlY3Rvcl1cbiAobGV0XG4gIFtwYXJ0c1xuICAgKG1hcCBwcm9wZXItZGVtdW5nZSAocHJvdG9jb2wtcGF0aCBwcm90b2NvbC1zZWxlY3RvcikpXG4gICBfXG4gICAoYXNzZXJ0XG4gICAgKD49IChjb3VudCBwYXJ0cykgMilcbiAgICAoc3RyXG4gICAgIFwiZXhwZWN0ZWQgcHJvdG9jb2wgc2VsZWN0b3IgdG8gY29udGFpbiBhdCBsZWFzdCBvbmUgZG90OiAnXCJcbiAgICAgcHJvdG9jb2wtc2VsZWN0b3JcbiAgICAgXCInXCIpKVxuICAgbnNcbiAgIChzdHJpbmcvam9pbiBcIi5cIiAoYnV0bGFzdCBwYXJ0cykpXG4gICBuYW1lXG4gICAobGFzdCBwYXJ0cyldXG4gIFtucyBuYW1lIHByb3RvY29sLXNlbGVjdG9yXSkpXG4ifSB7OnN5bSBwcm9wZXItZGVtdW5nZSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFttdW5nZWQtbmFtZV0pfSwgOnNvdXJjZSAiKGRlZm4gcHJvcGVyLWRlbXVuZ2UgW211bmdlZC1uYW1lXSAocmVzZXJ2ZWQtYXdhcmUtZGVtdW5nZSBtdW5nZWQtbmFtZSkpXG4ifSB7OnN5bSBub3JtYWxpemUtYXJpdHksIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbYXJpdHktdG9rZW5zXSl9LCA6c291cmNlICIoZGVmblxuIG5vcm1hbGl6ZS1hcml0eVxuIFthcml0eS10b2tlbnNdXG4gKGlmLW5vdFxuICAoZW1wdHk/IGFyaXR5LXRva2VucylcbiAgKGxldFxuICAgW2FyaXR5IChmaXJzdCBhcml0eS10b2tlbnMpXVxuICAgKGNhc2UgYXJpdHkgXCJ2YXJpYWRpY1wiIGFyaXR5IChqcy9wYXJzZUludCBhcml0eSAxMCkpKSkpXG4ifSB7OnN5bSBwcmVzZW50LXByb3RvY29sLXBhcnQsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbcHJvdG9jb2wtbnMgcHJvdG9jb2wtbmFtZSBwcm90b2NvbC1tZXRob2QgaW5jbHVkZS1wcm90b2NvbC1ucz9dKX0sIDpzb3VyY2UgIihkZWZuXG4gcHJlc2VudC1wcm90b2NvbC1wYXJ0XG4gW3Byb3RvY29sLW5zIHByb3RvY29sLW5hbWUgcHJvdG9jb2wtbWV0aG9kIGluY2x1ZGUtcHJvdG9jb2wtbnM/XVxuIChzdHJcbiAgKGlmIGluY2x1ZGUtcHJvdG9jb2wtbnM/IHByb3RvY29sLW5zKVxuICAoaWYtbm90XG4gICAoZW1wdHk/IHByb3RvY29sLW5hbWUpXG4gICAoc3RyIChpZiBpbmNsdWRlLXByb3RvY29sLW5zPyBcIi5cIikgcHJvdG9jb2wtbmFtZSkpXG4gIChpZi1ub3RcbiAgIChlbXB0eT8gcHJvdG9jb2wtbWV0aG9kKVxuICAgKHN0clxuICAgIChpZiAob3IgaW5jbHVkZS1wcm90b2NvbC1ucz8gKG5vdCAoZW1wdHk/IHByb3RvY29sLW5hbWUpKSkgXCI6XCIpXG4gICAgcHJvdG9jb2wtbWV0aG9kKSkpKVxuIn0gezpzeW0gcGFyc2UtcHJvdG9jb2wsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbdG9rZW5zIGRldGVjdG9yXSl9LCA6c291cmNlICIoZGVmblxuIHBhcnNlLXByb3RvY29sXG4gW3Rva2VucyBkZXRlY3Rvcl1cbiAobG9vcFxuICBbcmVtYWluaW5nLXRva2VucyB0b2tlbnMgbmFtZS10b2tlbnMgW11dXG4gIChpZlxuICAgKGVtcHR5PyByZW1haW5pbmctdG9rZW5zKVxuICAgW25hbWUtdG9rZW5zXVxuICAgKGxldFxuICAgIFtbcHJvdG9jb2wtbnMgbmFtZS1hbmQtbWV0aG9kLXRva2Vuc11cbiAgICAgKGRldGVjdC1uYW1lc3BhY2UtcHJlZml4IHJlbWFpbmluZy10b2tlbnMgZGV0ZWN0b3IpXVxuICAgIChpZlxuICAgICAoZW1wdHk/IHByb3RvY29sLW5zKVxuICAgICAocmVjdXJcbiAgICAgIChyZXN0IHJlbWFpbmluZy10b2tlbnMpXG4gICAgICAoY29uaiBuYW1lLXRva2VucyAoZmlyc3QgcmVtYWluaW5nLXRva2VucykpKVxuICAgICBbbmFtZS10b2tlbnNcbiAgICAgIHByb3RvY29sLW5zXG4gICAgICAoZmlyc3QgbmFtZS1hbmQtbWV0aG9kLXRva2VucylcbiAgICAgIChyZXN0IG5hbWUtYW5kLW1ldGhvZC10b2tlbnMpXSkpKSkpXG4ifSB7OnN5bSBodW1hbml6ZS1uYW1lcywgOm1ldGEgezpkb2MgIkdpdmVuIGEgbGlzdCBvZiBuYW1lcywgcmV0dXJucyBhIGxpc3Qgb2YgaHVtYW4tcmVhZGFibGUgdmVyc2lvbnMgb2YgdGhvc2UgbmFtZXMuXG4gIEl0IGRldGVjdHMgaHVtYW4tcmVhZGFibGUgcHJlZml4IHVzaW5nIGEgc2ltcGxlIGhldXJpc3RpY3MuIFdoZW4gbmFtZXMgcmVwZWF0IGl0IGFzc2lnbnMgc2ltcGxlIHN1YnNjcmlwdHMgc3RhcnRpbmcgd2l0aCAyLlxuICBTdWJzY3JpcHRzIGFyZSBhc3NpZ25lZCBsZWZ0LXRvLXJpZ2h0LlxuXG4gIEdpdmVuIFtcInAtLWFcIiBcInAtLWJcIiBcInhcIiBcInAtLWNcIl0gcmV0dXJucyBbXCJwXCIgXCJw4oKCXCIgXCJ4XCIgXCJw4oKDXCJdIiwgOmFyZ2xpc3RzIChbbmFtZXNdKX0sIDpzb3VyY2UgIihkZWZuXG4gaHVtYW5pemUtbmFtZXNcbiBcIkdpdmVuIGEgbGlzdCBvZiBuYW1lcywgcmV0dXJucyBhIGxpc3Qgb2YgaHVtYW4tcmVhZGFibGUgdmVyc2lvbnMgb2YgdGhvc2UgbmFtZXMuXFxuICBJdCBkZXRlY3RzIGh1bWFuLXJlYWRhYmxlIHByZWZpeCB1c2luZyBhIHNpbXBsZSBoZXVyaXN0aWNzLiBXaGVuIG5hbWVzIHJlcGVhdCBpdCBhc3NpZ25zIHNpbXBsZSBzdWJzY3JpcHRzIHN0YXJ0aW5nIHdpdGggMi5cXG4gIFN1YnNjcmlwdHMgYXJlIGFzc2lnbmVkIGxlZnQtdG8tcmlnaHQuXFxuXFxuICBHaXZlbiBbXFxcInAtLWFcXFwiIFxcXCJwLS1iXFxcIiBcXFwieFxcXCIgXFxcInAtLWNcXFwiXSByZXR1cm5zIFtcXFwicFxcXCIgXFxcInDigoJcXFwiIFxcXCJ4XFxcIiBcXFwicOKCg1xcXCJdXCJcbiBbbmFtZXNdXG4gKHdpdGgtbWV0YVxuICAoOmRldnRvb2xzLm11bmdpbmcvcmVzdWx0XG4gICAocmVkdWNlIGh1bWFuaXplLW5hbWUgezpkZXZ0b29scy5tdW5naW5nL3Jlc3VsdCBbXX0gbmFtZXMpKVxuICAobWV0YSBuYW1lcykpKVxuIn0gezpzeW0gcmV2aWV3LWFyaXR5LCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW1thcml0eSBhcml0eS1mbl1dKX0sIDpzb3VyY2UgIihkZWZuXG4gcmV2aWV3LWFyaXR5XG4gW1thcml0eSBhcml0eS1mbl1dXG4gKGxldFxuICBbc3ViLWFyaXRpZXMgKGNvbGxlY3QtZm4tYXJpdGllcyBhcml0eS1mbildXG4gIChpZlxuICAgKDpkZXZ0b29scy5tdW5naW5nL3ZhcmlhZGljIHN1Yi1hcml0aWVzKVxuICAgWzpkZXZ0b29scy5tdW5naW5nL3ZhcmlhZGljIGFyaXR5LWZuXVxuICAgW2FyaXR5IGFyaXR5LWZuXSkpKVxuIn0gezpzeW0gZG9sbGFyLXByZXNlcnZpbmctZGVtdW5nZSwgOm1ldGEgezpkb2MgIlN0YW5kYXJkIGNsanMuY29yZS9kZW11bmdlIGlzIHRvbyBhZ2dyZXNzaXZlIGluIHJlcGxhY2luZyBkb2xsYXJzLlxuICBUaGlzIHdyYXBwZXIgZnVuY3Rpb24gd29ya3MgYXJvdW5kIGl0IGJ5IGxlYXZpbmcgZG9sbGFycyBpbnRhY3QuIiwgOmFyZ2xpc3RzIChbbXVuZ2VkLW5hbWVdKX0sIDpzb3VyY2UgIihkZWZuXG4gZG9sbGFyLXByZXNlcnZpbmctZGVtdW5nZVxuIFwiU3RhbmRhcmQgY2xqcy5jb3JlL2RlbXVuZ2UgaXMgdG9vIGFnZ3Jlc3NpdmUgaW4gcmVwbGFjaW5nIGRvbGxhcnMuXFxuICBUaGlzIHdyYXBwZXIgZnVuY3Rpb24gd29ya3MgYXJvdW5kIGl0IGJ5IGxlYXZpbmcgZG9sbGFycyBpbnRhY3QuXCJcbiBbbXVuZ2VkLW5hbWVdXG4gKC0+XG4gIG11bmdlZC1uYW1lXG4gIChzdHJpbmcvcmVwbGFjZSBcIiRcIiBkb2xsYXItcmVwbGFjZW1lbnQpXG4gIChkZW11bmdlKVxuICAoc3RyaW5nL3JlcGxhY2UgZG9sbGFyLXJlcGxhY2VtZW50IFwiJFwiKSkpXG4ifSB7OnN5bSBzY2FuLWZhc3QtcGF0aC1wcm90b2NvbHMsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbb2JqXSl9LCA6c291cmNlICIoZGVmblxuIHNjYW4tZmFzdC1wYXRoLXByb3RvY29sc1xuIFtvYmpdXG4gKGFwcGx5XG4gIGNvbmNhdFxuICAobWFwXG4gICAocGFydGlhbCBzY2FuLWZhc3QtcGF0aC1wcm90b2NvbHMtcGFydGl0aW9uIG9iailcbiAgIChyYW5nZSAoZ2V0LWZhc3QtcGF0aC1wcm90b2NvbC1wYXJ0aXRpb25zLWNvdW50KSkpKSlcbiJ9IHs6c3ltIG1heC1maXhlZC1hcml0eS10by1zY2FuLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiBtYXgtZml4ZWQtYXJpdHktdG8tc2NhbiA2NClcbiJ9IHs6c3ltIG1ha2UtcHJvdG9jb2wtZGVzY3JpcHRvciwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtucyBuYW1lIHNlbGVjdG9yIGZhc3Q/XSl9LCA6c291cmNlICIoZGVmblxuIG1ha2UtcHJvdG9jb2wtZGVzY3JpcHRvclxuIFtucyBuYW1lIHNlbGVjdG9yIGZhc3Q/XVxuIHs6bnMgbnMsIDpuYW1lIG5hbWUsIDpzZWxlY3RvciBzZWxlY3RvciwgOmZhc3Q/IGZhc3Q/fSlcbiJ9IHs6c3ltIGdldC10eXBlLW5hbWUsIDptZXRhIHs6ZG9jIG5pbCwgOmFyZ2xpc3RzIChbdF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBnZXQtdHlwZS1uYW1lXG4gW3RdXG4gKGxldFxuICBbc2IgKFN0cmluZ0J1ZmZlci4pIHdyaXRlciAoU3RyaW5nQnVmZmVyV3JpdGVyLiBzYildXG4gICh0cnlcbiAgIChvY2FsbCB0IFwiY2xqcyRsYW5nJGN0b3JQcldyaXRlclwiIHQgd3JpdGVyKVxuICAgKGNhdGNoIDpkZWZhdWx0IF8gXCI/XCIpKVxuICAoLWZsdXNoIHdyaXRlcilcbiAgKHN0ciBzYikpKVxuIn0pLCBleHBvdW5kLnByb2JsZW1zICh7OnN5bSBmaXgtdmlhLCA6bWV0YSB7OmRvYyBuaWwsIDphcmdsaXN0cyAoW3NwZWMgcHJvYmxlbV0pfSwgOnNvdXJjZSAiKGRlZm5cbiBmaXgtdmlhXG4gW3NwZWMgcHJvYmxlbV1cbiAoaWZcbiAgKD0gc3BlYyAoZmlyc3QgKDp2aWEgcHJvYmxlbSkpKVxuICAoYXNzb2MgcHJvYmxlbSA6ZXhwb3VuZC92aWEgKDp2aWEgcHJvYmxlbSkpXG4gIChhc3NvYyBwcm9ibGVtIDpleHBvdW5kL3ZpYSAoaW50byBbc3BlY10gKDp2aWEgcHJvYmxlbSkpKSkpXG4ifSB7OnN5bSBhbm5vdGF0ZSwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtleHBsYWluLWRhdGFdKX0sIDpzb3VyY2UgIihkZWZuXG4gYW5ub3RhdGVcbiBbZXhwbGFpbi1kYXRhXVxuIChsZXRcbiAgW3s6Y2xvanVyZS5zcGVjLmFscGhhL2tleXMgW3Byb2JsZW1zIHZhbHVlIGFyZ3MgcmV0IGZuIGZhaWx1cmUgc3BlY119XG4gICBleHBsYWluLWRhdGFcbiAgIGNhbGxlclxuICAgKG9yXG4gICAgKDpjbG9qdXJlLnNwZWMudGVzdC5hbHBoYS9jYWxsZXIgZXhwbGFpbi1kYXRhKVxuICAgICg6b3JjaGVzdHJhLnNwZWMudGVzdC9jYWxsZXIgZXhwbGFpbi1kYXRhKSlcbiAgIGZvcm1cbiAgIChpZlxuICAgIChub3Q9IDppbnN0cnVtZW50IGZhaWx1cmUpXG4gICAgdmFsdWVcbiAgICAoY29uZFxuICAgICAoY29udGFpbnM/IGV4cGxhaW4tZGF0YSA6Y2xvanVyZS5zcGVjLmFscGhhL3JldClcbiAgICAgcmV0XG4gICAgIChjb250YWlucz8gZXhwbGFpbi1kYXRhIDpjbG9qdXJlLnNwZWMuYWxwaGEvYXJncylcbiAgICAgYXJnc1xuICAgICAoY29udGFpbnM/IGV4cGxhaW4tZGF0YSA6Y2xvanVyZS5zcGVjLmFscGhhL2ZuKVxuICAgICBmblxuICAgICA6ZWxzZVxuICAgICAodGhyb3dcbiAgICAgIChleC1pbmZvIFwiSW52YWxpZCBleHBsYWluLWRhdGFcIiB7OmV4cGxhaW4tZGF0YSBleHBsYWluLWRhdGF9KSkpKVxuICAgcHJvYmxlbXMnXG4gICAobWFwXG4gICAgKGNvbXBcbiAgICAgKHBhcnRpYWwgYWRqdXN0LWluIGZvcm0pXG4gICAgIChwYXJ0aWFsIGFkanVzdC1wYXRoIGZhaWx1cmUpXG4gICAgIChwYXJ0aWFsIGFkZC1zcGVjIHNwZWMpXG4gICAgIChwYXJ0aWFsIGZpeC12aWEgc3BlYylcbiAgICAgKGZuKiBbcDFfXzQyNzQ4I10gKGFzc29jIHAxX180Mjc0OCMgOmV4cG91bmQvZm9ybSBmb3JtKSlcbiAgICAgKGZuKlxuICAgICAgW3AxX180Mjc0OSNdXG4gICAgICAoYXNzb2NcbiAgICAgICBwMV9fNDI3NDkjXG4gICAgICAgOmV4cG91bmQuc3BlYy5wcm9ibGVtL3R5cGVcbiAgICAgICAocHR5cGUgZmFpbHVyZSBwMV9fNDI3NDkjIGZhbHNlKSkpKVxuICAgIHByb2JsZW1zKV1cbiAgKC0+XG4gICBleHBsYWluLWRhdGFcbiAgIChhc3NvY1xuICAgIDpleHBvdW5kL2Zvcm1cbiAgICBmb3JtXG4gICAgOmV4cG91bmQvY2FsbGVyXG4gICAgY2FsbGVyXG4gICAgOmV4cG91bmQvcHJvYmxlbXNcbiAgICBwcm9ibGVtcycpKSkpXG4ifSB7OnN5bSB0eXBlLCA6bWV0YSB7fSwgOnNvdXJjZSAiKGRlZiB0eXBlIHB0eXBlKVxuIn0gezpzeW0gdmFsdWUtaW4sIDptZXRhIHt9LCA6c291cmNlICIoZGVmIHZhbHVlLWluIHBhdGhzL3ZhbHVlLWluKVxuIn0pLCBjbGpzLnNwZWMuZ2VuLmFscGhhICh7OnN5bSBxdWljay1jaGVjaywgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFsmIGFyZ3NdKX0sIDpzb3VyY2UgIihkZWZuIHF1aWNrLWNoZWNrIFsmIGFyZ3NdIChhcHBseSBAcXVpY2stY2hlY2stcmVmIGFyZ3MpKVxuIn0gezpzeW0gZm9yLWFsbCosIDptZXRhIHs6ZG9jICJEeW5hbWljYWxseSBsb2FkZWQgY2xvanVyZS50ZXN0LmNoZWNrLnByb3BlcnRpZXMvZm9yLWFsbCouIiwgOmFyZ2xpc3RzIChbJiBhcmdzXSl9LCA6c291cmNlICIoZGVmblxuIGZvci1hbGwqXG4gXCJEeW5hbWljYWxseSBsb2FkZWQgY2xvanVyZS50ZXN0LmNoZWNrLnByb3BlcnRpZXMvZm9yLWFsbCouXCJcbiBbJiBhcmdzXVxuIChhcHBseSBAZm9yLWFsbCotcmVmIGFyZ3MpKVxuIn0gezpzeW0gZGVsYXktaW1wbCwgOm1ldGEgezpkb2MgbmlsLCA6YXJnbGlzdHMgKFtnZm5kXSl9LCA6c291cmNlICIoZGVmblxuIGRlbGF5LWltcGxcbiBbZ2ZuZF1cbiAoZ2VuZXJhdG9yIChmbiBbcm5kIHNpemVdICgoOmdlbiBAZ2ZuZCkgcm5kIHNpemUpKSkpXG4ifSB7OnN5bSBjYXQsIDptZXRhIHs6ZG9jICJSZXR1cm5zIGEgZ2VuZXJhdG9yIG9mIGEgc2VxdWVuY2UgY2F0ZW5hdGVkIGZyb20gcmVzdWx0cyBvZlxuZ2VucywgZWFjaCBvZiB3aGljaCBzaG91bGQgZ2VuZXJhdGUgc29tZXRoaW5nIHNlcXVlbnRpYWwuIiwgOmFyZ2xpc3RzIChbJiBnZW5zXSl9LCA6c291cmNlICIoZGVmblxuIGNhdFxuIFwiUmV0dXJucyBhIGdlbmVyYXRvciBvZiBhIHNlcXVlbmNlIGNhdGVuYXRlZCBmcm9tIHJlc3VsdHMgb2ZcXG5nZW5zLCBlYWNoIG9mIHdoaWNoIHNob3VsZCBnZW5lcmF0ZSBzb21ldGhpbmcgc2VxdWVudGlhbC5cIlxuIFsmIGdlbnNdXG4gKGZtYXAgKGZuKiBbcDFfXzQzMDMxI10gKGFwcGx5IGNvbmNhdCBwMV9fNDMwMzEjKSkgKGFwcGx5IHR1cGxlIGdlbnMpKSlcbiJ9IHs6c3ltIGdlbi1mb3ItcHJlZCwgOm1ldGEgezpkb2MgIkdpdmVuIGEgcHJlZGljYXRlLCByZXR1cm5zIGEgYnVpbHQtaW4gZ2VuZXJhdG9yIGlmIG9uZSBleGlzdHMuIiwgOmFyZ2xpc3RzIChbcHJlZF0pfSwgOnNvdXJjZSAiKGRlZm5cbiBnZW4tZm9yLXByZWRcbiBcIkdpdmVuIGEgcHJlZGljYXRlLCByZXR1cm5zIGEgYnVpbHQtaW4gZ2VuZXJhdG9yIGlmIG9uZSBleGlzdHMuXCJcbiBbcHJlZF1cbiAoaWYgKHNldD8gcHJlZCkgKGVsZW1lbnRzIHByZWQpIChnZXQgQGdlbi1idWlsdGlucyBwcmVkKSkpXG4ifSl9LCA6ZHluYWRvYy5jb21tb24vdmFyLXN5bSAqbWF0Y2gqfQ==